<?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>41569</bug_id>
          
          <creation_ts>2010-07-03 09:21:34 -0700</creation_ts>
          <short_desc>[Chromium] Expose basic DOM information in WebAccessibilityObject</short_desc>
          <delta_ts>2010-09-02 23:53:09 -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>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows 7</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>
          <dependson>42129</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Dominic Mazzoni">dmazzoni</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ctguil</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>246319</commentid>
    <comment_count>0</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2010-07-03 09:21:34 -0700</bug_when>
    <thetext>Windows screenreaders want HTML DOM information from accessibility objects, including the tag name, attributes, and computed style, plus some basic properties of the document. These should be exposed in WebAccessibilityObject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246320</commentid>
    <comment_count>1</comment_count>
      <attachid>60453</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2010-07-03 09:27:00 -0700</bug_when>
    <thetext>Created attachment 60453
Adds methods to WebAccessibilityObject to access basic HTML DOM properties.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246321</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-03 09:27:58 -0700</bug_when>
    <thetext>Attachment 60453 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKit/chromium/src/WebAccessibilityObject.cpp:418:  render_object is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKit/chromium/src/WebAccessibilityObject.cpp:437:  render_object is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKit/chromium/src/WebAccessibilityObject.cpp:463:  render_object is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKit/chromium/src/WebAccessibilityObject.cpp:494:  render_object is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKit/chromium/src/WebAccessibilityObject.cpp:500:  render_style is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKit/chromium/src/WebAccessibilityObject.cpp:543:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
WebKit/chromium/ChangeLog:6:  Line contains tab character.  [whitespace/tab] [5]
WebKit/chromium/ChangeLog:7:  Line contains tab character.  [whitespace/tab] [5]
WebKit/chromium/ChangeLog:8:  Line contains tab character.  [whitespace/tab] [5]
WebKit/chromium/ChangeLog:9:  Line contains tab character.  [whitespace/tab] [5]
WebKit/chromium/ChangeLog:11:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 11 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246323</commentid>
    <comment_count>3</comment_count>
      <attachid>60454</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2010-07-03 09:33:17 -0700</bug_when>
    <thetext>Created attachment 60454
Fix style errors in previous patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247466</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-07-07 03:55:15 -0700</bug_when>
    <thetext>WEBKIT_API =&gt; we need the great and powerful fishd to review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247581</commentid>
    <comment_count>5</comment_count>
      <attachid>60454</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-07-07 08:57:03 -0700</bug_when>
    <thetext>Comment on attachment 60454
Fix style errors in previous patch.

WebKit/chromium/public/WebAccessibilityObject.h:108
 +      WEBKIT_API void attributeAt(unsigned index, WebString* name, WebString* value) const;
nit: webkit style is to use reference types for out params:  WebString&amp; name, WebString&amp; value

WebKit/chromium/public/WebAccessibilityObject.h:111
 +      WEBKIT_API WebString documentUrl() const;
nit: documentUrl -&gt; documentURL

but, why do you need to expose these document properties?  Why not just
expose WebDocument (and add properties to it as needed)?
WebKit/chromium/src/WebAccessibilityObject.cpp:420
 +      Node* node = renderObject-&gt;node();
instead of exposing a tagName property, how about just exposing
a WebNode getter?  then, the consumer can call WebNode::nodeName.

WebKit/chromium/src/WebAccessibilityObject.cpp:440
 +      if (!node || !node-&gt;hasAttributes())
this also feels like something that should be provided by exposing
an attributes getter on WebElement.  Use the WebNodeList type.

WebKit/chromium/src/WebAccessibilityObject.cpp:507
 +  WebString WebAccessibilityObject::documentUrl() const
this method should definitely be eliminated in favor of accessing
the related WebNode, and then query its document.  from the
WebDocument you can get the WebFrame, and that has a &quot;url&quot; property.

WebKit/chromium/src/WebAccessibilityObject.cpp:532
 +      return document-&gt;title();
eliminate this method in favor of querying WebDocument::title.

WebKit/chromium/src/WebAccessibilityObject.cpp:543
 +      if (document &amp;&amp; document-&gt;isXHTMLDocument())
WebDocument already has an isXHTMLDocument accessor

WebKit/chromium/src/WebAccessibilityObject.cpp:560
 +      DocumentType* doctype = document-&gt;doctype();
please expose a &quot;WebDocumentType WebDocument::docType()&quot; accessor.
that means creating the WebDocumentType class and adding the methods
to it that you need (just name for now).  it is fairly easy to 
create a new subclass of WebNode.  just look at WebDocument and
WebElement to see good examples of it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247672</commentid>
    <comment_count>6</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2010-07-07 12:03:41 -0700</bug_when>
    <thetext>Thanks. I&apos;m working on these changes now.

The only thing I&apos;m not clear on is how to do the attributes getter on WebElement.  WebKit::Element::attributes returns a NamedNodeMap, which can&apos;t be wrapped by a WebNodeList.

Would it be better to create a new wrapper WebNamedNodeMap, or construct some subclass of NodeList with the attributes that can be wrapped by WebNodeList?

- Dominic

(In reply to comment #5)
&gt; (From update of attachment 60454 [details])
&gt; WebKit/chromium/public/WebAccessibilityObject.h:108
&gt;  +      WEBKIT_API void attributeAt(unsigned index, WebString* name, WebString* value) const;
&gt; nit: webkit style is to use reference types for out params:  WebString&amp; name, WebString&amp; value
&gt; 
&gt; WebKit/chromium/public/WebAccessibilityObject.h:111
&gt;  +      WEBKIT_API WebString documentUrl() const;
&gt; nit: documentUrl -&gt; documentURL
&gt; 
&gt; but, why do you need to expose these document properties?  Why not just
&gt; expose WebDocument (and add properties to it as needed)?
&gt; WebKit/chromium/src/WebAccessibilityObject.cpp:420
&gt;  +      Node* node = renderObject-&gt;node();
&gt; instead of exposing a tagName property, how about just exposing
&gt; a WebNode getter?  then, the consumer can call WebNode::nodeName.
&gt; 
&gt; WebKit/chromium/src/WebAccessibilityObject.cpp:440
&gt;  +      if (!node || !node-&gt;hasAttributes())
&gt; this also feels like something that should be provided by exposing
&gt; an attributes getter on WebElement.  Use the WebNodeList type.
&gt; 
&gt; WebKit/chromium/src/WebAccessibilityObject.cpp:507
&gt;  +  WebString WebAccessibilityObject::documentUrl() const
&gt; this method should definitely be eliminated in favor of accessing
&gt; the related WebNode, and then query its document.  from the
&gt; WebDocument you can get the WebFrame, and that has a &quot;url&quot; property.
&gt; 
&gt; WebKit/chromium/src/WebAccessibilityObject.cpp:532
&gt;  +      return document-&gt;title();
&gt; eliminate this method in favor of querying WebDocument::title.
&gt; 
&gt; WebKit/chromium/src/WebAccessibilityObject.cpp:543
&gt;  +      if (document &amp;&amp; document-&gt;isXHTMLDocument())
&gt; WebDocument already has an isXHTMLDocument accessor
&gt; 
&gt; WebKit/chromium/src/WebAccessibilityObject.cpp:560
&gt;  +      DocumentType* doctype = document-&gt;doctype();
&gt; please expose a &quot;WebDocumentType WebDocument::docType()&quot; accessor.
&gt; that means creating the WebDocumentType class and adding the methods
&gt; to it that you need (just name for now).  it is fairly easy to 
&gt; create a new subclass of WebNode.  just look at WebDocument and
&gt; WebElement to see good examples of it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248299</commentid>
    <comment_count>7</comment_count>
      <attachid>60906</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2010-07-08 10:15:46 -0700</bug_when>
    <thetext>Created attachment 60906
Rewrote patch to expose WebNode and WebDocument from WebAccessibilityObject and added new methods to those.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248302</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-08 10:21:41 -0700</bug_when>
    <thetext>Attachment 60906 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKit/chromium/src/WebNamedNodeMap.cpp:38:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit/chromium/src/WebAttribute.cpp:37:  &quot;WebAttribute.h&quot; already included at WebKit/chromium/src/WebAttribute.cpp:32  [build/include] [4]
WebKit/chromium/src/WebRenderStyle.cpp:38:  &quot;WebRenderStyle.h&quot; already included at WebKit/chromium/src/WebRenderStyle.cpp:32  [build/include] [4]
WebKit/chromium/src/WebRenderStyle.cpp:73:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 4 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248446</commentid>
    <comment_count>9</comment_count>
      <attachid>60933</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2010-07-08 12:48:34 -0700</bug_when>
    <thetext>Created attachment 60933
Fix style errors in previous patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248449</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-08 12:51:30 -0700</bug_when>
    <thetext>Attachment 60933 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKit/chromium/src/WebAttribute.cpp:37:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit/chromium/src/WebRenderStyle.cpp:38:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248479</commentid>
    <comment_count>11</comment_count>
      <attachid>60933</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-07-08 13:15:27 -0700</bug_when>
    <thetext>Comment on attachment 60933
Fix style errors in previous patch

overall, this looks great!

WebKit/chromium/public/WebAttribute.h:69
&gt; +      WebCore::Attribute* m_private;
please use the WebPrivatePtr class here.  we are not yet using it
consistently throughout the webkit api, but it is designed to make
this kind of code easier to write and helps avoid some errors.

WebKit/chromium/public/WebNamedNodeMap.h:69
&gt; +      WebCore::NamedNodeMap* m_private;
use WebPrivatePtr here

WebKit/chromium/public/WebRenderStyle.h:68
&gt; +      WebCore::RenderStyle* m_private;
use WebPrivatePtr here

WebKit/chromium/src/WebRenderStyle.cpp:72
&gt; +      return WebString(CSSPrimitiveValue::create(m_private-&gt;display())-&gt;getStringValue());
one day, we might actually want a WebCSSValue, WebCSSPrimitiveValue, etc.
for now, though... what are doing here is fine.

as mentioned over IM, it looks like WebRenderStyle is unused.  either it
should be used or it should be excluded from this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248480</commentid>
    <comment_count>12</comment_count>
      <attachid>60941</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2010-07-08 13:16:18 -0700</bug_when>
    <thetext>Created attachment 60941
Added new accessors to WebNode and WebElement also</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248482</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-08 13:19:06 -0700</bug_when>
    <thetext>Attachment 60941 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKit/chromium/src/WebAttribute.cpp:37:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit/chromium/src/WebNode.cpp:182:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
WebKit/chromium/src/WebNode.cpp:190:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebKit/chromium/src/WebNode.cpp:190:  Use 0 instead of NULL.  [readability/null] [5]
WebKit/chromium/src/WebRenderStyle.cpp:38:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit/chromium/src/WebElement.cpp:39:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 6 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249215</commentid>
    <comment_count>14</comment_count>
      <attachid>61080</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2010-07-09 13:17:59 -0700</bug_when>
    <thetext>Created attachment 61080
New classes now use WebPrivatePtr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249217</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-09 13:20:38 -0700</bug_when>
    <thetext>Attachment 61080 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKit/chromium/src/WebAttribute.cpp:37:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit/chromium/src/WebRenderStyle.cpp:38:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit/chromium/src/WebElement.cpp:39:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 3 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249283</commentid>
    <comment_count>16</comment_count>
      <attachid>61080</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-07-09 14:38:21 -0700</bug_when>
    <thetext>Comment on attachment 61080
New classes now use WebPrivatePtr

WebKit/chromium/public/WebNode.h:106
 +      WEBKIT_API WebElement element() const;
I don&apos;t think we need to add this element accessor.  we already
have isElementNode(), which makes it easy to test if a WebNode
is a WebElement.

otherwise, this change LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249331</commentid>
    <comment_count>17</comment_count>
      <attachid>61110</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2010-07-09 15:55:45 -0700</bug_when>
    <thetext>Created attachment 61110
Got rid of WebNode::element()

OK, WebNode::element() is gone.

This may be a stupid question, but is there a cleaner way to cast a WebNode to a WebElement? I added it because I thought this would be ugly:

WebKit::WebElement element(*reinterpret_cast&lt;WebKit::WebElement*&gt;(&amp;node));

If you have a suggestion for a cleaner way to cast WebNode to WebElement, that&apos;s great - but it doesn&apos;t matter because either way it will get reviewed shortly in a Chromium patch. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249332</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-09 15:58:08 -0700</bug_when>
    <thetext>Attachment 61110 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit/chromium/src/WebAttribute.cpp:37:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit/chromium/src/WebRenderStyle.cpp:38:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit/chromium/src/WebElement.cpp:39:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 3 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249975</commentid>
    <comment_count>19</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-07-12 12:46:54 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Created an attachment (id=61110) [details]
&gt; Got rid of WebNode::element()
&gt; 
&gt; OK, WebNode::element() is gone.
&gt; 
&gt; This may be a stupid question, but is there a cleaner way to cast a WebNode to a WebElement? I added it because I thought this would be ugly:
&gt; 
&gt; WebKit::WebElement element(*reinterpret_cast&lt;WebKit::WebElement*&gt;(&amp;node));
&gt; 
&gt; If you have a suggestion for a cleaner way to cast WebNode to WebElement, that&apos;s great - but it doesn&apos;t matter because either way it will get reviewed shortly in a Chromium patch. :)

WebNode has templatized &quot;to&quot; and &quot;toConst&quot; methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250001</commentid>
    <comment_count>20</comment_count>
      <attachid>61110</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-12 13:31:52 -0700</bug_when>
    <thetext>Comment on attachment 61110
Got rid of WebNode::element()

Rejecting patch 61110 from commit-queue.

Unexpected failure when processing patch!  Please file a bug against webkit-patch.
Failed to run &quot;[&apos;./WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-commit-queue.appspot.com&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--build&apos;, &apos;--non-interactive&apos;, &apos;--ignore-builders&apos;, &apos;--build-style=both&apos;, &apos;--quiet&apos;, 61110, &apos;--test&apos;, &apos;--parent-command=commit-queue&apos;, &apos;--no-update&apos;]&quot; exit_code: 1
Last 500 characters of output:
ipts/webkitpy/tool/commands/download.py&quot;, line 155, in _process_patch
    self._main_sequence.run_and_handle_errors(tool, options, state)
  File &quot;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/webkitpy/tool/commands/stepsequence.py&quot;, line 80, in run_and_handle_errors
    raise e
webkitpy.common.system.executive.ScriptError: Failed to run &quot;[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--exit-after-n-failures=1&apos;, &apos;--ignore-tests&apos;, &apos;compositing&apos;, &apos;--quiet&apos;]&quot; exit_code: 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250206</commentid>
    <comment_count>21</comment_count>
      <attachid>61110</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-07-12 18:07:05 -0700</bug_when>
    <thetext>Comment on attachment 61110
Got rid of WebNode::element()

Sorry, we had a bug in the cq, which should now be fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250225</commentid>
    <comment_count>22</comment_count>
      <attachid>61110</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-12 18:46:01 -0700</bug_when>
    <thetext>Comment on attachment 61110
Got rid of WebNode::element()

Clearing flags on attachment: 61110

Committed r63156: &lt;http://trac.webkit.org/changeset/63156&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250226</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-12 18:46:08 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250231</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-12 18:55:32 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/63156 might have broken Chromium Linux Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250238</commentid>
    <comment_count>25</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-07-12 19:06:11 -0700</bug_when>
    <thetext>Broke cr linux.  Also, why do you need .display?  Exposing style/layout dependent information via the WK API seems really sketchy since there&apos;s no way to know what sort of state layout and style are in (i.e. they both could be arbitrarily out of date when you call them, no?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250292</commentid>
    <comment_count>26</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-07-12 22:00:12 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; Broke cr linux.  Also, why do you need .display?  Exposing style/layout 
&gt; dependent information via the WK API seems really sketchy since there&apos;s no way 
&gt; to know what sort of state layout and style are in (i.e. they both could be 
&gt; arbitrarily out of date when you call them, no?)

Good point.  I wonder if the computedStyle() getter forces layout to be updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250335</commentid>
    <comment_count>27</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2010-07-12 23:07:41 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (In reply to comment #25)
&gt; &gt; Broke cr linux.  Also, why do you need .display?  Exposing style/layout 
&gt; &gt; dependent information via the WK API seems really sketchy since there&apos;s no way 
&gt; &gt; to know what sort of state layout and style are in (i.e. they both could be 
&gt; &gt; arbitrarily out of date when you call them, no?)
&gt; 
&gt; Good point.  I wonder if the computedStyle() getter forces layout to be updated.

Windows screenreaders want computedStyle.display in order to determine whether a particular element is block or inline. It affects how information is presented to a blind user, and how they navigate the page.

Any suggestions for a good way to access this information in an up-to-date manner? Should I make it part of AccessibilityObject, which seems to have a mechanism for keeping its data in sync?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60453</attachid>
            <date>2010-07-03 09:27:00 -0700</date>
            <delta_ts>2010-07-03 09:33:17 -0700</delta_ts>
            <desc>Adds methods to WebAccessibilityObject to access basic HTML DOM properties.</desc>
            <filename>accessdom1.patch</filename>
            <type>text/plain</type>
            <size>7006</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjI0NDcpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTAtMDctMDMgIERvbWlu
aWMgTWF6em9uaSAgPGRtYXp6b25pQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG1ldGhvZHMgdG8gV2ViQWNjZXNzaWJpbGl0
eU9iamVjdCB0byBhY2Nlc3MgYmFzaWMgSFRNTCBET00KKwlpbmZvcm1hdGlvbiAtIHRhZywgYXR0
cmlidXRlcywgYW5kIGNvbXB1dGVkIGRpc3BsYXkgLSBwbHVzCisJYmFzaWMgaW5mb3JtYXRpb24g
YWJvdXQgdGhlIG9iamVjdCdzIGRvY3VtZW50LiBUaGlzIGlzIG5lZWRlZAorCWluIG9yZGVyIHRv
IGltcGxlbWVudCBhY2Nlc3NpYmlsaXR5IEFQSXMgcmVxdWlyZWQgYnkgV2luZG93cworCXNjcmVl
bnJlYWRlcnMuCisKKwlodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE1
NjkKKworICAgICAgICAqIHB1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CisgICAgICAg
ICogc3JjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojp0YWdOYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNz
aWJpbGl0eU9iamVjdDo6YXR0cmlidXRlQ291bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0OjphdHRyaWJ1dGVBdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vz
c2liaWxpdHlPYmplY3Q6OmNvbXB1dGVkRGlzcGxheSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmRvY3VtZW50VXJsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNj
ZXNzaWJpbGl0eU9iamVjdDo6ZG9jdW1lbnRUaXRsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmRvY3VtZW50TUlNRVR5cGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpkb2N1bWVudERvY1R5cGUpOgorCiAyMDEwLTA3LTAzICBF
cmlrIEFydmlkc3NvbiAgPGFydkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
T2phbiBWYWZhaS4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdC5oCShyZXZpc2lvbiA2MjQ0NykKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNiArMTAz
LDE2IEBAIHB1YmxpYzoKICAgICBXRUJLSVRfQVBJIFdlYlN0cmluZyBzdHJpbmdWYWx1ZSgpIGNv
bnN0OwogICAgIFdFQktJVF9BUEkgV2ViU3RyaW5nIHRpdGxlKCkgY29uc3Q7CiAKKyAgICBXRUJL
SVRfQVBJIFdlYlN0cmluZyB0YWdOYW1lKCkgY29uc3Q7CisgICAgV0VCS0lUX0FQSSB1bnNpZ25l
ZCBhdHRyaWJ1dGVDb3VudCgpIGNvbnN0OworICAgIFdFQktJVF9BUEkgdm9pZCBhdHRyaWJ1dGVB
dCh1bnNpZ25lZCBpbmRleCwgV2ViU3RyaW5nKiBuYW1lLCBXZWJTdHJpbmcqIHZhbHVlKSBjb25z
dDsKKyAgICBXRUJLSVRfQVBJIFdlYlN0cmluZyBjb21wdXRlZERpc3BsYXkoKSBjb25zdDsKKwor
ICAgIFdFQktJVF9BUEkgV2ViU3RyaW5nIGRvY3VtZW50VXJsKCkgY29uc3Q7CisgICAgV0VCS0lU
X0FQSSBXZWJTdHJpbmcgZG9jdW1lbnRUaXRsZSgpIGNvbnN0OworICAgIFdFQktJVF9BUEkgV2Vi
U3RyaW5nIGRvY3VtZW50TUlNRVR5cGUoKSBjb25zdDsKKyAgICBXRUJLSVRfQVBJIFdlYlN0cmlu
ZyBkb2N1bWVudERvY1R5cGUoKSBjb25zdDsKKwogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgog
ICAgIFdlYkFjY2Vzc2liaWxpdHlPYmplY3QoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q+Jik7CiAgICAgV2ViQWNjZXNzaWJpbGl0eU9iamVjdCYgb3Bl
cmF0b3I9KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
PiYpOwpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3QuY3BwCShyZXZpc2lvbiA2MjQ0NykKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDEyIEBACiAjaW5j
bHVkZSAiV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5oIgogCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0
eU9iamVjdC5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCIKKyNpbmNs
dWRlICJDU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgiCisjaW5jbHVkZSAiRG9jdW1lbnRUeXBl
LmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisj
aW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgogI2lu
Y2x1ZGUgIldlYlBvaW50LmgiCiAjaW5jbHVkZSAiV2ViUmVjdC5oIgpAQCAtNDAxLDYgKzQwNSwx
NjUgQEAgV2ViU3RyaW5nIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OnRpdGxlKAogICAgIHJldHVy
biBtX3ByaXZhdGUtPnRpdGxlKCk7CiB9CiAKK1dlYlN0cmluZyBXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojp0YWdOYW1lKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcHJpdmF0ZSkKKyAgICAgICAgcmV0
dXJuIFdlYlN0cmluZygpOworCisgICAgbV9wcml2YXRlLT51cGRhdGVCYWNraW5nU3RvcmUoKTsK
KworICAgIGlmICghbV9wcml2YXRlLT5pc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSkKKyAg
ICAgICAgcmV0dXJuIFdlYlN0cmluZygpOworCisgICAgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dCogcmVuZGVyX29iamVjdCA9CisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8QWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdCo+KG1fcHJpdmF0ZSk7CisgICAgTm9kZSogbm9kZSA9IHJlbmRlcl9vYmpl
Y3QtPm5vZGUoKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiBXZWJTdHJpbmcoKTsK
KworICAgIHJldHVybiBub2RlLT5ub2RlTmFtZSgpOworfQorCit1bnNpZ25lZCBXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0OjphdHRyaWJ1dGVDb3VudCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3ByaXZh
dGUpCisgICAgICAgIHJldHVybiAwOworCisgICAgbV9wcml2YXRlLT51cGRhdGVCYWNraW5nU3Rv
cmUoKTsKKworICAgIGlmICghbV9wcml2YXRlLT5pc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qo
KSkKKyAgICAgIHJldHVybiAwOworCisgICAgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCogcmVu
ZGVyX29iamVjdCA9CisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8QWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdCo+KG1fcHJpdmF0ZSk7CisgICAgTm9kZSogbm9kZSA9IHJlbmRlcl9vYmplY3QtPm5v
ZGUoKTsKKyAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPmhhc0F0dHJpYnV0ZXMoKSkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICBOYW1lZE5vZGVNYXAqIGF0dHJpYnV0ZXMgPSBub2RlLT5hdHRyaWJ1
dGVzKCk7CisgICAgaWYgKCFhdHRyaWJ1dGVzKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJl
dHVybiBhdHRyaWJ1dGVzLT5sZW5ndGgoKTsKK30KKwordm9pZCBXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjphdHRyaWJ1dGVBdCh1bnNpZ25lZCBpbmRleCwgV2ViU3RyaW5nKiBuYW1lLCBXZWJTdHJp
bmcqIHZhbHVlKSBjb25zdAoreworICAgICpuYW1lID0gIiI7CisgICAgKnZhbHVlID0gIiI7CisK
KyAgICBpZiAoIW1fcHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wcml2YXRlLT51
cGRhdGVCYWNraW5nU3RvcmUoKTsKKworICAgIGlmICghbV9wcml2YXRlLT5pc0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QoKSkKKyAgICAgIHJldHVybjsKKworICAgIEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QqIHJlbmRlcl9vYmplY3QgPQorICAgICAgICByZWludGVycHJldF9jYXN0PEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QqPihtX3ByaXZhdGUpOworICAgIE5vZGUqIG5vZGUgPSByZW5k
ZXJfb2JqZWN0LT5ub2RlKCk7CisgICAgaWYgKCFub2RlIHx8ICFub2RlLT5oYXNBdHRyaWJ1dGVz
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIE5hbWVkTm9kZU1hcCogYXR0cmlidXRlcyA9IG5v
ZGUtPmF0dHJpYnV0ZXMoKTsKKyAgICBpZiAoIWF0dHJpYnV0ZXMpCisgICAgICAgIHJldHVybjsK
KworICAgIGlmIChpbmRleCA+PSBhdHRyaWJ1dGVzLT5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzLT5hdHRyaWJ1dGVJdGVt
KGluZGV4KTsKKyAgICBpZiAoIWF0dHJpYnV0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgKm5h
bWUgPSBhdHRyaWJ1dGUtPmxvY2FsTmFtZSgpOworICAgICp2YWx1ZSA9IGF0dHJpYnV0ZS0+dmFs
dWUoKTsKK30KKworV2ViU3RyaW5nIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNvbXB1dGVkRGlz
cGxheSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3ByaXZhdGUpCisgICAgICAgIHJldHVybiBXZWJT
dHJpbmcoKTsKKworICAgIG1fcHJpdmF0ZS0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CisKKyAgICBp
ZiAoIW1fcHJpdmF0ZS0+aXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkpCisgICAgICAgIHJl
dHVybiBXZWJTdHJpbmcoKTsKKworICAgIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QqIHJlbmRl
cl9vYmplY3QgPQorICAgICAgICByZWludGVycHJldF9jYXN0PEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QqPihtX3ByaXZhdGUpOworICAgIE5vZGUqIG5vZGUgPSByZW5kZXJfb2JqZWN0LT5ub2Rl
KCk7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4gV2ViU3RyaW5nKCk7CisKKyAgICBS
ZW5kZXJTdHlsZSogcmVuZGVyX3N0eWxlID0gbm9kZS0+Y29tcHV0ZWRTdHlsZSgpOworICAgIGlm
ICghcmVuZGVyX3N0eWxlKQorICAgICAgICByZXR1cm4gV2ViU3RyaW5nKCk7CisKKyAgICByZXR1
cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShyZW5kZXJfc3R5bGUtPmRpc3BsYXkoKSktPmdl
dFN0cmluZ1ZhbHVlKCk7Cit9CisKK1dlYlN0cmluZyBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpk
b2N1bWVudFVybCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3ByaXZhdGUpCisgICAgICAgIHJldHVy
biBXZWJTdHJpbmcoKTsKKworICAgIG1fcHJpdmF0ZS0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CisK
KyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX3ByaXZhdGUtPmRvY3VtZW50KCk7CisgICAgaWYg
KCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIFdlYlN0cmluZygpOworCisgICAgcmV0dXJuIGRv
Y3VtZW50LT5kb2N1bWVudFVSSSgpOworfQorCitXZWJTdHJpbmcgV2ViQWNjZXNzaWJpbGl0eU9i
amVjdDo6ZG9jdW1lbnRUaXRsZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3ByaXZhdGUpCisgICAg
ICAgIHJldHVybiBXZWJTdHJpbmcoKTsKKworICAgIG1fcHJpdmF0ZS0+dXBkYXRlQmFja2luZ1N0
b3JlKCk7CisKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX3ByaXZhdGUtPmRvY3VtZW50KCk7
CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIFdlYlN0cmluZygpOworCisgICAg
cmV0dXJuIGRvY3VtZW50LT50aXRsZSgpOworfQorCitXZWJTdHJpbmcgV2ViQWNjZXNzaWJpbGl0
eU9iamVjdDo6ZG9jdW1lbnRNSU1FVHlwZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3ByaXZhdGUp
CisgICAgICAgIHJldHVybiBXZWJTdHJpbmcoKTsKKworICAgIG1fcHJpdmF0ZS0+dXBkYXRlQmFj
a2luZ1N0b3JlKCk7CisKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX3ByaXZhdGUtPmRvY3Vt
ZW50KCk7CisgICAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LT5pc1hIVE1MRG9jdW1lbnQoKSkK
KyAgICAgICAgcmV0dXJuIFdlYlN0cmluZygidGV4dC94aHRtbCIpOworICAgIGVsc2UKKyAgICAg
ICAgcmV0dXJuIFdlYlN0cmluZygidGV4dC9odG1sIik7Cit9CisKK1dlYlN0cmluZyBXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojpkb2N1bWVudERvY1R5cGUoKSBjb25zdAoreworICAgIGlmICghbV9w
cml2YXRlKQorICAgICAgICByZXR1cm4gV2ViU3RyaW5nKCk7CisKKyAgICBtX3ByaXZhdGUtPnVw
ZGF0ZUJhY2tpbmdTdG9yZSgpOworCisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9wcml2YXRl
LT5kb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybiBXZWJTdHJp
bmcoKTsKKworICAgIERvY3VtZW50VHlwZSogZG9jdHlwZSA9IGRvY3VtZW50LT5kb2N0eXBlKCk7
CisgICAgaWYgKCFkb2N0eXBlKQorICAgICAgICByZXR1cm4gV2ViU3RyaW5nKCk7CisKKyAgICBy
ZXR1cm4gZG9jdHlwZS0+bmFtZSgpOworfQorCiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OjpXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0PiYgb2JqZWN0KQogICAgIDogbV9wcml2YXRlKHN0YXRpY19jYXN0PFdlYkFj
Y2Vzc2liaWxpdHlPYmplY3RQcml2YXRlKj4ob2JqZWN0LnJlbGVhc2VSZWYoKSkpCiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60454</attachid>
            <date>2010-07-03 09:33:17 -0700</date>
            <delta_ts>2010-07-08 10:15:46 -0700</delta_ts>
            <desc>Fix style errors in previous patch.</desc>
            <filename>accessdom2.patch</filename>
            <type>text/plain</type>
            <size>7018</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjI0NDcpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTAtMDctMDMgIERvbWlu
aWMgTWF6em9uaSAgPGRtYXp6b25pQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG1ldGhvZHMgdG8gV2ViQWNjZXNzaWJpbGl0
eU9iamVjdCB0byBhY2Nlc3MgYmFzaWMgSFRNTCBET00KKyAgICAgICAgaW5mb3JtYXRpb24gLSB0
YWcsIGF0dHJpYnV0ZXMsIGFuZCBjb21wdXRlZCBkaXNwbGF5IC0gcGx1cworICAgICAgICBiYXNp
YyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgb2JqZWN0J3MgZG9jdW1lbnQuIFRoaXMgaXMgbmVlZGVk
CisgICAgICAgIGluIG9yZGVyIHRvIGltcGxlbWVudCBhY2Nlc3NpYmlsaXR5IEFQSXMgcmVxdWly
ZWQgYnkgV2luZG93cworICAgICAgICBzY3JlZW5yZWFkZXJzLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTU2OQorCisgICAgICAgICogcHVibGlj
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAgKiBzcmMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OnRh
Z05hbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OjphdHRyaWJ1
dGVDb3VudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OmF0dHJp
YnV0ZUF0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6Y29tcHV0
ZWREaXNwbGF5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6ZG9j
dW1lbnRVcmwpOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpkb2N1
bWVudFRpdGxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6ZG9j
dW1lbnRNSU1FVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmRvY3VtZW50RG9jVHlwZSk6CisKIDIwMTAtMDctMDMgIEVyaWsgQXJ2aWRzc29uICA8YXJ2QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBPamFuIFZhZmFpLgpJbmRleDogV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHJldmlz
aW9uIDYyNDQ3KQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw2ICsxMDMsMTYgQEAgcHVibGljOgogICAgIFdF
QktJVF9BUEkgV2ViU3RyaW5nIHN0cmluZ1ZhbHVlKCkgY29uc3Q7CiAgICAgV0VCS0lUX0FQSSBX
ZWJTdHJpbmcgdGl0bGUoKSBjb25zdDsKIAorICAgIFdFQktJVF9BUEkgV2ViU3RyaW5nIHRhZ05h
bWUoKSBjb25zdDsKKyAgICBXRUJLSVRfQVBJIHVuc2lnbmVkIGF0dHJpYnV0ZUNvdW50KCkgY29u
c3Q7CisgICAgV0VCS0lUX0FQSSB2b2lkIGF0dHJpYnV0ZUF0KHVuc2lnbmVkIGluZGV4LCBXZWJT
dHJpbmcqIG5hbWUsIFdlYlN0cmluZyogdmFsdWUpIGNvbnN0OworICAgIFdFQktJVF9BUEkgV2Vi
U3RyaW5nIGNvbXB1dGVkRGlzcGxheSgpIGNvbnN0OworCisgICAgV0VCS0lUX0FQSSBXZWJTdHJp
bmcgZG9jdW1lbnRVcmwoKSBjb25zdDsKKyAgICBXRUJLSVRfQVBJIFdlYlN0cmluZyBkb2N1bWVu
dFRpdGxlKCkgY29uc3Q7CisgICAgV0VCS0lUX0FQSSBXZWJTdHJpbmcgZG9jdW1lbnRNSU1FVHlw
ZSgpIGNvbnN0OworICAgIFdFQktJVF9BUEkgV2ViU3RyaW5nIGRvY3VtZW50RG9jVHlwZSgpIGNv
bnN0OworCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCiAgICAgV2ViQWNjZXNzaWJpbGl0eU9i
amVjdChjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdD4m
KTsKICAgICBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvcGVyYXRvcj0oY29uc3QgV1RGOjpQYXNz
UmVmUHRyPFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q+Jik7CkluZGV4OiBXZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9jaHJvbWl1bS9zcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAJKHJldmlzaW9uIDYyNDQ3
KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzIsOCArMzIsMTIgQEAKICNpbmNsdWRlICJXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0LmgiCiAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCisjaW5jbHVkZSAi
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVl
TWFwcGluZ3MuaCIKKyNpbmNsdWRlICJEb2N1bWVudFR5cGUuaCIKICNpbmNsdWRlICJFdmVudEhh
bmRsZXIuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJOb2RlLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViUG9pbnQuaCIKICNp
bmNsdWRlICJXZWJSZWN0LmgiCkBAIC00MDEsNiArNDA1LDE2NSBAQCBXZWJTdHJpbmcgV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdDo6dGl0bGUoCiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+dGl0bGUoKTsK
IH0KIAorV2ViU3RyaW5nIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OnRhZ05hbWUoKSBjb25zdAor
eworICAgIGlmICghbV9wcml2YXRlKQorICAgICAgICByZXR1cm4gV2ViU3RyaW5nKCk7CisKKyAg
ICBtX3ByaXZhdGUtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOworCisgICAgaWYgKCFtX3ByaXZhdGUt
PmlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpKQorICAgICAgICByZXR1cm4gV2ViU3RyaW5n
KCk7CisKKyAgICBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QgPQorICAg
ICAgICByZWludGVycHJldF9jYXN0PEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QqPihtX3ByaXZh
dGUpOworICAgIE5vZGUqIG5vZGUgPSByZW5kZXJPYmplY3QtPm5vZGUoKTsKKyAgICBpZiAoIW5v
ZGUpCisgICAgICAgIHJldHVybiBXZWJTdHJpbmcoKTsKKworICAgIHJldHVybiBub2RlLT5ub2Rl
TmFtZSgpOworfQorCit1bnNpZ25lZCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OjphdHRyaWJ1dGVD
b3VudCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3ByaXZhdGUpCisgICAgICAgIHJldHVybiAwOwor
CisgICAgbV9wcml2YXRlLT51cGRhdGVCYWNraW5nU3RvcmUoKTsKKworICAgIGlmICghbV9wcml2
YXRlLT5pc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSkKKyAgICAgIHJldHVybiAwOworCisg
ICAgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0ID0KKyAgICAgICAgcmVp
bnRlcnByZXRfY2FzdDxBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Kj4obV9wcml2YXRlKTsKKyAg
ICBOb2RlKiBub2RlID0gcmVuZGVyT2JqZWN0LT5ub2RlKCk7CisgICAgaWYgKCFub2RlIHx8ICFu
b2RlLT5oYXNBdHRyaWJ1dGVzKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgTmFtZWROb2Rl
TWFwKiBhdHRyaWJ1dGVzID0gbm9kZS0+YXR0cmlidXRlcygpOworICAgIGlmICghYXR0cmlidXRl
cykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gYXR0cmlidXRlcy0+bGVuZ3RoKCk7
Cit9CisKK3ZvaWQgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6YXR0cmlidXRlQXQodW5zaWduZWQg
aW5kZXgsIFdlYlN0cmluZyogbmFtZSwgV2ViU3RyaW5nKiB2YWx1ZSkgY29uc3QKK3sKKyAgICAq
bmFtZSA9ICIiOworICAgICp2YWx1ZSA9ICIiOworCisgICAgaWYgKCFtX3ByaXZhdGUpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fcHJpdmF0ZS0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CisKKyAg
ICBpZiAoIW1fcHJpdmF0ZS0+aXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkpCisgICAgICBy
ZXR1cm47CisKKyAgICBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QgPQor
ICAgICAgICByZWludGVycHJldF9jYXN0PEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QqPihtX3By
aXZhdGUpOworICAgIE5vZGUqIG5vZGUgPSByZW5kZXJPYmplY3QtPm5vZGUoKTsKKyAgICBpZiAo
IW5vZGUgfHwgIW5vZGUtPmhhc0F0dHJpYnV0ZXMoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
TmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVzID0gbm9kZS0+YXR0cmlidXRlcygpOworICAgIGlmICgh
YXR0cmlidXRlcykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGluZGV4ID49IGF0dHJpYnV0
ZXMtPmxlbmd0aCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0
ZSA9IGF0dHJpYnV0ZXMtPmF0dHJpYnV0ZUl0ZW0oaW5kZXgpOworICAgIGlmICghYXR0cmlidXRl
KQorICAgICAgICByZXR1cm47CisKKyAgICAqbmFtZSA9IGF0dHJpYnV0ZS0+bG9jYWxOYW1lKCk7
CisgICAgKnZhbHVlID0gYXR0cmlidXRlLT52YWx1ZSgpOworfQorCitXZWJTdHJpbmcgV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdDo6Y29tcHV0ZWREaXNwbGF5KCkgY29uc3QKK3sKKyAgICBpZiAoIW1f
cHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuIFdlYlN0cmluZygpOworCisgICAgbV9wcml2YXRlLT51
cGRhdGVCYWNraW5nU3RvcmUoKTsKKworICAgIGlmICghbV9wcml2YXRlLT5pc0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIFdlYlN0cmluZygpOworCisgICAgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0ID0KKyAgICAgICAgcmVpbnRlcnBy
ZXRfY2FzdDxBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Kj4obV9wcml2YXRlKTsKKyAgICBOb2Rl
KiBub2RlID0gcmVuZGVyT2JqZWN0LT5ub2RlKCk7CisgICAgaWYgKCFub2RlKQorICAgICAgICBy
ZXR1cm4gV2ViU3RyaW5nKCk7CisKKyAgICBSZW5kZXJTdHlsZSogcmVuZGVyU3R5bGUgPSBub2Rl
LT5jb21wdXRlZFN0eWxlKCk7CisgICAgaWYgKCFyZW5kZXJTdHlsZSkKKyAgICAgICAgcmV0dXJu
IFdlYlN0cmluZygpOworCisgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocmVu
ZGVyU3R5bGUtPmRpc3BsYXkoKSktPmdldFN0cmluZ1ZhbHVlKCk7Cit9CisKK1dlYlN0cmluZyBX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpkb2N1bWVudFVybCgpIGNvbnN0Cit7CisgICAgaWYgKCFt
X3ByaXZhdGUpCisgICAgICAgIHJldHVybiBXZWJTdHJpbmcoKTsKKworICAgIG1fcHJpdmF0ZS0+
dXBkYXRlQmFja2luZ1N0b3JlKCk7CisKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX3ByaXZh
dGUtPmRvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIFdlYlN0
cmluZygpOworCisgICAgcmV0dXJuIGRvY3VtZW50LT5kb2N1bWVudFVSSSgpOworfQorCitXZWJT
dHJpbmcgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6ZG9jdW1lbnRUaXRsZSgpIGNvbnN0Cit7Cisg
ICAgaWYgKCFtX3ByaXZhdGUpCisgICAgICAgIHJldHVybiBXZWJTdHJpbmcoKTsKKworICAgIG1f
cHJpdmF0ZS0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CisKKyAgICBEb2N1bWVudCogZG9jdW1lbnQg
PSBtX3ByaXZhdGUtPmRvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0
dXJuIFdlYlN0cmluZygpOworCisgICAgcmV0dXJuIGRvY3VtZW50LT50aXRsZSgpOworfQorCitX
ZWJTdHJpbmcgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6ZG9jdW1lbnRNSU1FVHlwZSgpIGNvbnN0
Cit7CisgICAgaWYgKCFtX3ByaXZhdGUpCisgICAgICAgIHJldHVybiBXZWJTdHJpbmcoKTsKKwor
ICAgIG1fcHJpdmF0ZS0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CisKKyAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSBtX3ByaXZhdGUtPmRvY3VtZW50KCk7CisgICAgaWYgKGRvY3VtZW50ICYmIGRvY3Vt
ZW50LT5pc1hIVE1MRG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIFdlYlN0cmluZygidGV4dC94
aHRtbCIpOworCisgICAgcmV0dXJuIFdlYlN0cmluZygidGV4dC9odG1sIik7Cit9CisKK1dlYlN0
cmluZyBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpkb2N1bWVudERvY1R5cGUoKSBjb25zdAorewor
ICAgIGlmICghbV9wcml2YXRlKQorICAgICAgICByZXR1cm4gV2ViU3RyaW5nKCk7CisKKyAgICBt
X3ByaXZhdGUtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOworCisgICAgRG9jdW1lbnQqIGRvY3VtZW50
ID0gbV9wcml2YXRlLT5kb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJl
dHVybiBXZWJTdHJpbmcoKTsKKworICAgIERvY3VtZW50VHlwZSogZG9jdHlwZSA9IGRvY3VtZW50
LT5kb2N0eXBlKCk7CisgICAgaWYgKCFkb2N0eXBlKQorICAgICAgICByZXR1cm4gV2ViU3RyaW5n
KCk7CisKKyAgICByZXR1cm4gZG9jdHlwZS0+bmFtZSgpOworfQorCiBXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0PiYgb2JqZWN0KQogICAgIDogbV9wcml2YXRlKHN0YXRp
Y19jYXN0PFdlYkFjY2Vzc2liaWxpdHlPYmplY3RQcml2YXRlKj4ob2JqZWN0LnJlbGVhc2VSZWYo
KSkpCiB7Cg==
</data>
<flag name="review"
          id="47963"
          type_id="1"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60906</attachid>
            <date>2010-07-08 10:15:46 -0700</date>
            <delta_ts>2010-07-08 12:48:34 -0700</delta_ts>
            <desc>Rewrote patch to expose WebNode and WebDocument from WebAccessibilityObject and added new methods to those.</desc>
            <filename>patch42</filename>
            <type>text/plain</type>
            <size>31668</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjI3OTYpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTcgQEAKKzIwMTAtMDctMDggIERvbWlu
aWMgTWF6em9uaSAgPGRtYXp6b25pQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG1ldGhvZHMgdG8gV2ViQWNjZXNzaWJpbGl0
eU9iamVjdCB0byBhY2Nlc3MgdGhlIE5vZGUgYW5kCisgICAgICAgIERvY3VtZW50LCBhbmQgdGhl
biBhZGQgbWV0aG9kcyB0byBhY2Nlc3Mgc29tZSBkb2N1bWVudCwgbm9kZSwKKyAgICAgICAgYW5k
IGVsZW1lbnQgcHJvcGVydGllcyBuZWVkZWQgZm9yIFdpbmRvd3MgYWNjZXNzaWJpbGl0eS4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE1NjkKKwor
ICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3QuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViQXR0cmlidXRlLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJBdHRyaWJ1dGU6On5XZWJBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJBdHRyaWJ1dGU6OldlYkF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF0dHJp
YnV0ZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKiBwdWJsaWMvV2ViRG9jdW1lbnRUeXBlLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJEb2N1bWVudFR5cGU6OldlYkRvY3VtZW50VHlwZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkRvY3VtZW50VHlwZTo6b3BlcmF0b3I9KToKKyAgICAgICAg
KFdlYktpdDo6V2ViRG9jdW1lbnRUeXBlOjphc3NpZ24pOgorICAgICAgICAqIHB1YmxpYy9XZWJO
YW1lZE5vZGVNYXAuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYk5hbWVkTm9kZU1hcDo6
fldlYk5hbWVkTm9kZU1hcCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5hbWVkTm9kZU1hcDo6V2Vi
TmFtZWROb2RlTWFwKToKKyAgICAgICAgKFdlYktpdDo6V2ViTmFtZWROb2RlTWFwOjpvcGVyYXRv
cj0pOgorICAgICAgICAqIHB1YmxpYy9XZWJSZW5kZXJTdHlsZS5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViUmVuZGVyU3R5bGU6On5XZWJSZW5kZXJTdHlsZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlJlbmRlclN0eWxlOjpXZWJSZW5kZXJTdHlsZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlbmRlclN0eWxlOjpvcGVyYXRvcj0pOgorICAgICAgICAqIHNyYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6bm9k
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OmRvY3VtZW50KToK
KyAgICAgICAgKiBzcmMvV2ViQXR0cmlidXRlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYkF0dHJpYnV0ZTo6cmVzZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdHRyaWJ1dGU6OmFz
c2lnbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF0dHJpYnV0ZTo6V2ViQXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQXR0cmlidXRlOjpsb2NhbE5hbWUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJBdHRyaWJ1dGU6OnZhbHVlKToKKyAgICAgICAgKiBzcmMvV2ViRG9jdW1lbnRUeXBlLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkRvY3VtZW50VHlwZTo6bmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkRvY3VtZW50VHlwZTo6V2ViRG9jdW1lbnRUeXBlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViRG9jdW1lbnRUeXBlOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJEb2N1bWVudFR5cGU6Om9wZXJhdG9yIFBhc3NSZWZQdHI8RG9jdW1lbnRUeXBlPik6CisgICAg
ICAgICogc3JjL1dlYk5hbWVkTm9kZU1hcC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJOYW1lZE5vZGVNYXA6OnJlc2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTmFtZWROb2RlTWFw
Ojphc3NpZ24pOgorICAgICAgICAoV2ViS2l0OjpXZWJOYW1lZE5vZGVNYXA6OldlYk5hbWVkTm9k
ZU1hcCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5hbWVkTm9kZU1hcDo6bGVuZ3RoKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTmFtZWROb2RlTWFwOjphdHRyaWJ1dGVJdGVtKToKKyAgICAgICAgKiBz
cmMvV2ViUmVuZGVyU3R5bGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVuZGVy
U3R5bGU6OnJlc2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVuZGVyU3R5bGU6OmFzc2lnbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlJlbmRlclN0eWxlOjpXZWJSZW5kZXJTdHlsZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlbmRlclN0eWxlOjpkaXNwbGF5KToKKwogMjAxMC0wNy0wOCAgVml0
YWx5IFJlcGVzaGtvICA8dml0YWx5ckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgUGF2ZWwgRmVsZG1hbi4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCShyZXZpc2lvbiA2Mjc5NCkKKysr
IFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw2ICs4NCw3
IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJBbmltYXRpb25Db250cm9sbGVyLmgnLAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQXBwbGljYXRpb25DYWNoZUhvc3QuaCcsCiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENsaWVudC5oJywKKyAg
ICAgICAgICAgICAgICAncHVibGljL1dlYkF0dHJpYnV0ZS5oJywKICAgICAgICAgICAgICAgICAn
cHVibGljL1dlYkJpbmRpbmdzLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQ2FjaGUu
aCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJDYW52YXMuaCcsCkBAIC0xMTIsNiArMTEz
LDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkRldlRvb2xzTWVzc2FnZURhdGEuaCcs
CiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEZXZUb29sc01lc3NhZ2VUcmFuc3BvcnQuaCcs
CiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEb2N1bWVudC5oJywKKyAgICAgICAgICAgICAg
ICAncHVibGljL1dlYkRvY3VtZW50VHlwZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dl
YkRyYWdEYXRhLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRWRpdGluZ0FjdGlvbi5o
JywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkVsZW1lbnQuaCcsCkBAIC0xNTcsNiArMTU5
LDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbENsaWVu
dC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYk1pbWVSZWdpc3RyeS5oJywKICAgICAg
ICAgICAgICAgICAncHVibGljL1dlYk11dGF0aW9uRXZlbnQuaCcsCisgICAgICAgICAgICAgICAg
J3B1YmxpYy9XZWJOYW1lZE5vZGVNYXAuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJO
YXZpZ2F0aW9uVHlwZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYk5vZGUuaCcsCiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJOb2RlQ29sbGVjdGlvbi5oJywKQEAgLTE4MCw2ICsx
ODMsNyBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViUHJpdmF0ZVB0ci5oJywKICAgICAg
ICAgICAgICAgICAncHVibGljL1dlYlJhbmdlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViUmVjdC5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYlJlbmRlclN0eWxlLmgnLAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViUmVndWxhckV4cHJlc3Npb24uaCcsCiAgICAgICAg
ICAgICAgICAgJ3B1YmxpYy9XZWJSdW50aW1lRmVhdHVyZXMuaCcsCiAgICAgICAgICAgICAgICAg
J3B1YmxpYy9XZWJTY3JvbGxiYXIuaCcsCkBAIC0zMTYsNiArMzIwLDcgQEAKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYkFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJBbmltYXRpb25Db250cm9sbGVySW1wbC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL1dl
YkF0dHJpYnV0ZS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViQmluZGluZ3MuY3BwJywK
ICAgICAgICAgICAgICAgICAnc3JjL1dlYkNhY2hlLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJDb2xvci5jcHAnLApAQCAtMzMzLDYgKzMzOCw3IEBACiAgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJEZXZUb29sc0Zyb250ZW5kSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
RGV2VG9vbHNGcm9udGVuZEltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJEb2N1bWVu
dC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViRG9jdW1lbnRUeXBlLmNwcCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9XZWJEcmFnRGF0YS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMv
V2ViRWxlbWVudC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRW50aXRpZXMuY3BwJywK
QEAgLTM4MCw2ICszODYsNyBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViTWVkaWFQbGF5ZXJD
bGllbnRJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJNZWRpYVBsYXllckNsaWVu
dEltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJNdXRhdGlvbkV2ZW50LmNwcCcsCisg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJOYW1lZE5vZGVNYXAuY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYk5vZGUuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYk5vZGVDb2xsZWN0
aW9uLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJOb2RlTGlzdC5jcHAnLApAQCAtNDAx
LDYgKzQwOCw3IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJQb3B1cE1lbnVJbXBsLmgnLAog
ICAgICAgICAgICAgICAgICdzcmMvV2ViUmFuZ2UuY3BwJywKICAgICAgICAgICAgICAgICAnc3Jj
L1dlYlJlZ3VsYXJFeHByZXNzaW9uLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJSZW5k
ZXJTdHlsZS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViUnVudGltZUZlYXR1cmVzLmNw
cCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTY3JpcHRDb250cm9sbGVyLmNwcCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9XZWJTY3JvbGxiYXJJbXBsLmNwcCcsCkluZGV4OiBXZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaAkocmV2aXNpb24gNjI3
OTQpCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaAko
d29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsOCBAQCBuYW1lc3BhY2UgV1RGIHsgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IGNsCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFByaXZhdGU7CitjbGFzcyBXZWJOb2RlOworY2xhc3MgV2ViRG9jdW1lbnQ7CiBj
bGFzcyBXZWJTdHJpbmc7CiBzdHJ1Y3QgV2ViUG9pbnQ7CiBzdHJ1Y3QgV2ViUmVjdDsKQEAgLTEw
Myw2ICsxMDUsOSBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0FQSSBXZWJTdHJpbmcgc3RyaW5nVmFs
dWUoKSBjb25zdDsKICAgICBXRUJLSVRfQVBJIFdlYlN0cmluZyB0aXRsZSgpIGNvbnN0OwogCisg
ICAgV0VCS0lUX0FQSSBXZWJOb2RlIG5vZGUoKSBjb25zdDsKKyAgICBXRUJLSVRfQVBJIFdlYkRv
Y3VtZW50IGRvY3VtZW50KCkgY29uc3Q7CisKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KICAg
ICBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0PiYpOwogICAgIFdlYkFjY2Vzc2liaWxpdHlPYmplY3QmIG9wZXJh
dG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdD4m
KTsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQXR0cmlidXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBdHRyaWJ1dGUuaAkocmV2aXNpb24gMCkK
KysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQXR0cmlidXRlLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkF0dHJpYnV0ZV9oCisjZGVmaW5lIFdlYkF0dHJpYnV0
ZV9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFz
cyBBdHRyaWJ1dGU7IH0KKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KK25hbWVzcGFjZSBXVEYg
eyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1JlZlB0cjsgfQorI2VuZGlmCisKK25h
bWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViU3RyaW5nOworCisvLyBQcm92aWRlcyByZWFkb25s
eSBhY2Nlc3MgdG8gc29tZSBwcm9wZXJ0aWVzIG9mIGEgRE9NIGF0dHJpYnV0ZS4KK2NsYXNzIFdl
YkF0dHJpYnV0ZSB7CitwdWJsaWM6CisgICAgfldlYkF0dHJpYnV0ZSgpIHsgcmVzZXQoKTsgfQor
CisgICAgV2ViQXR0cmlidXRlKCkgOiBtX3ByaXZhdGUoMCkgeyB9CisgICAgV2ViQXR0cmlidXRl
KGNvbnN0IFdlYkF0dHJpYnV0ZSYgbikgOiBtX3ByaXZhdGUoMCkgeyBhc3NpZ24obik7IH0KKyAg
ICBXZWJBdHRyaWJ1dGUmIG9wZXJhdG9yPShjb25zdCBXZWJBdHRyaWJ1dGUmIG4pCisgICAgewor
ICAgICAgICBhc3NpZ24obik7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBX
RUJLSVRfQVBJIHZvaWQgcmVzZXQoKTsKKyAgICBXRUJLSVRfQVBJIHZvaWQgYXNzaWduKGNvbnN0
IFdlYkF0dHJpYnV0ZSYpOworCisgICAgV0VCS0lUX0FQSSBXZWJTdHJpbmcgbG9jYWxOYW1lKCkg
Y29uc3Q7CisgICAgV0VCS0lUX0FQSSBXZWJTdHJpbmcgdmFsdWUoKSBjb25zdDsKKworI2lmIFdF
QktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYkF0dHJpYnV0ZShjb25zdCBXVEY6OlBhc3NSZWZQ
dHI8V2ViQ29yZTo6QXR0cmlidXRlPiYpOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgdm9pZCBh
c3NpZ24oV2ViQ29yZTo6QXR0cmlidXRlKik7CisgICAgV2ViQ29yZTo6QXR0cmlidXRlKiBtX3By
aXZhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCgpQcm9wZXJ0eSBj
aGFuZ2VzIG9uOiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkF0dHJpYnV0ZS5oCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViRG9jdW1lbnRUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJEb2N1bWVudFR5cGUuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViRG9jdW1lbnRUeXBlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdlYkRvY3VtZW50VHlwZV9oCisjZGVmaW5lIFdlYkRvY3VtZW50VHlwZV9oCisKKyNpbmNs
dWRlICJXZWJOb2RlLmgiCisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KK25hbWVzcGFjZSBX
ZWJDb3JlIHsgY2xhc3MgRG9jdW1lbnRUeXBlOyB9CituYW1lc3BhY2UgV1RGIHsgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IGNsYXNzIFBhc3NSZWZQdHI7IH0KKyNlbmRpZgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKK2NsYXNzIFdlYlN0cmluZzsKKworLy8gUHJvdmlkZXMgcmVhZG9ubHkgYWNjZXNzIHRv
IHNvbWUgcHJvcGVydGllcyBvZiBhIERPTSBkb2N1bWVudCB0eXBlLgorY2xhc3MgV2ViRG9jdW1l
bnRUeXBlIDogcHVibGljIFdlYk5vZGUgeworcHVibGljOgorICAgIFdlYkRvY3VtZW50VHlwZSgp
IHsgfQorICAgIFdlYkRvY3VtZW50VHlwZShjb25zdCBXZWJEb2N1bWVudFR5cGUmIGUpIDogV2Vi
Tm9kZShlKSB7IH0KKworICAgIFdlYkRvY3VtZW50VHlwZSYgb3BlcmF0b3I9KGNvbnN0IFdlYkRv
Y3VtZW50VHlwZSYgZSkKKyAgICB7CisgICAgICAgIFdlYk5vZGU6OmFzc2lnbihlKTsKKyAgICAg
ICAgcmV0dXJuICp0aGlzOworICAgIH0KKyAgICB2b2lkIGFzc2lnbihjb25zdCBXZWJEb2N1bWVu
dFR5cGUmIGUpIHsgV2ViTm9kZTo6YXNzaWduKGUpOyB9CisKKyAgICBXRUJLSVRfQVBJIFdlYlN0
cmluZyBuYW1lKCkgY29uc3Q7CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJE
b2N1bWVudFR5cGUoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50VHlwZT4m
KTsKKyAgICBXZWJEb2N1bWVudFR5cGUmIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8
V2ViQ29yZTo6RG9jdW1lbnRUeXBlPiYpOworICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxX
ZWJDb3JlOjpEb2N1bWVudFR5cGU+KCkgY29uc3Q7CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViRG9jdW1lbnRUeXBlLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHls
ZQogICArIExGCgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJOYW1lZE5vZGVNYXAu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk5hbWVkTm9kZU1hcC5o
CShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJOYW1lZE5vZGVNYXAu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViTmFtZWROb2RlTWFwX2gK
KyNkZWZpbmUgV2ViTmFtZWROb2RlTWFwX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIE5hbWVkTm9kZU1hcDsgfQorI2lmIFdFQktJVF9JTVBM
RU1FTlRBVElPTgorbmFtZXNwYWNlIFdURiB7IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBQ
YXNzUmVmUHRyOyB9CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJBdHRy
aWJ1dGU7CisKKy8vIFByb3ZpZGVzIHJlYWRvbmx5IGFjY2VzcyB0byBzb21lIHByb3BlcnRpZXMg
b2YgYSBET00gYXR0cmlidXRlIG1hcC4KK2NsYXNzIFdlYk5hbWVkTm9kZU1hcCB7CitwdWJsaWM6
CisgICAgfldlYk5hbWVkTm9kZU1hcCgpIHsgcmVzZXQoKTsgfQorCisgICAgV2ViTmFtZWROb2Rl
TWFwKCkgOiBtX3ByaXZhdGUoMCkgeyB9CisgICAgV2ViTmFtZWROb2RlTWFwKGNvbnN0IFdlYk5h
bWVkTm9kZU1hcCYgbikgOiBtX3ByaXZhdGUoMCkgeyBhc3NpZ24obik7IH0KKyAgICBXZWJOYW1l
ZE5vZGVNYXAmIG9wZXJhdG9yPShjb25zdCBXZWJOYW1lZE5vZGVNYXAmIG4pCisgICAgeworICAg
ICAgICBhc3NpZ24obik7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBXRUJL
SVRfQVBJIHZvaWQgcmVzZXQoKTsKKyAgICBXRUJLSVRfQVBJIHZvaWQgYXNzaWduKGNvbnN0IFdl
Yk5hbWVkTm9kZU1hcCYpOworCisgICAgV0VCS0lUX0FQSSB1bnNpZ25lZCBsZW5ndGgoKSBjb25z
dDsKKyAgICBXRUJLSVRfQVBJIFdlYkF0dHJpYnV0ZSBhdHRyaWJ1dGVJdGVtKHVuc2lnbmVkKSBj
b25zdDsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYk5hbWVkTm9kZU1hcChj
b25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6TmFtZWROb2RlTWFwPiYpOworI2VuZGlmCisK
K3ByaXZhdGU6CisgICAgdm9pZCBhc3NpZ24oV2ViQ29yZTo6TmFtZWROb2RlTWFwKik7CisgICAg
V2ViQ29yZTo6TmFtZWROb2RlTWFwKiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYk5hbWVkTm9kZU1hcC5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAg
KyBMRgoKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUmVuZGVyU3R5bGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlJlbmRlclN0eWxlLmgJKHJldmlz
aW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlJlbmRlclN0eWxlLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlJlbmRlclN0eWxlX2gKKyNkZWZpbmUg
V2ViUmVuZGVyU3R5bGVfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsgY2xhc3MgUmVuZGVyU3R5bGU7IH0KKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04K
K25hbWVzcGFjZSBXVEYgeyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1JlZlB0cjsg
fQorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViU3RyaW5nOworCisvLyBQ
cm92aWRlcyByZWFkb25seSBhY2Nlc3MgdG8gc29tZSBwcm9wZXJ0aWVzIG9mIGEgRE9NIG5vZGUn
cyBzdHlsZS4KK2NsYXNzIFdlYlJlbmRlclN0eWxlIHsKK3B1YmxpYzoKKyAgICB+V2ViUmVuZGVy
U3R5bGUoKSB7IHJlc2V0KCk7IH0KKworICAgIFdlYlJlbmRlclN0eWxlKCkgOiBtX3ByaXZhdGUo
MCkgeyB9CisgICAgV2ViUmVuZGVyU3R5bGUoY29uc3QgV2ViUmVuZGVyU3R5bGUmIG4pIDogbV9w
cml2YXRlKDApIHsgYXNzaWduKG4pOyB9CisgICAgV2ViUmVuZGVyU3R5bGUmIG9wZXJhdG9yPShj
b25zdCBXZWJSZW5kZXJTdHlsZSYgbikKKyAgICB7CisgICAgICAgIGFzc2lnbihuKTsKKyAgICAg
ICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIFdFQktJVF9BUEkgdm9pZCByZXNldCgpOwor
ICAgIFdFQktJVF9BUEkgdm9pZCBhc3NpZ24oY29uc3QgV2ViUmVuZGVyU3R5bGUmKTsKKworICAg
IFdFQktJVF9BUEkgV2ViU3RyaW5nIGRpc3BsYXkoKSBjb25zdDsKKworI2lmIFdFQktJVF9JTVBM
RU1FTlRBVElPTgorICAgIFdlYlJlbmRlclN0eWxlKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJD
b3JlOjpSZW5kZXJTdHlsZT4mKTsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIHZvaWQgYXNzaWdu
KFdlYkNvcmU6OlJlbmRlclN0eWxlKik7CisgICAgV2ViQ29yZTo6UmVuZGVyU3R5bGUqIG1fcHJp
dmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKClByb3BlcnR5IGNo
YW5nZXMgb246IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUmVuZGVyU3R5bGUuaApfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBXZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJv
bWl1bS9zcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAJKHJldmlzaW9uIDYyNzk0KQorKysg
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzIsOSArMzIsMTMgQEAKICNpbmNsdWRlICJXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
LmgiCiAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCisjaW5jbHVkZSAiQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgogI2luY2x1
ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQuaCIKKyNpbmNsdWRlICJXZWJEb2N1bWVudC5oIgorI2luY2x1ZGUgIldlYk5v
ZGUuaCIKICNpbmNsdWRlICJXZWJQb2ludC5oIgogI2luY2x1ZGUgIldlYlJlY3QuaCIKICNpbmNs
dWRlICJXZWJTdHJpbmcuaCIKQEAgLTQwMSw2ICs0MDUsMzkgQEAgV2ViU3RyaW5nIFdlYkFjY2Vz
c2liaWxpdHlPYmplY3Q6OnRpdGxlKAogICAgIHJldHVybiBtX3ByaXZhdGUtPnRpdGxlKCk7CiB9
CiAKKworV2ViTm9kZSBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpub2RlKCkgY29uc3QKK3sKKyAg
ICBpZiAoIW1fcHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuIFdlYk5vZGUoKTsKKworICAgIG1fcHJp
dmF0ZS0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CisKKyAgICBpZiAoIW1fcHJpdmF0ZS0+aXNBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkpCisgICAgICAgIHJldHVybiBXZWJOb2RlKCk7CisKKyAg
ICBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QgPQorICAgICAgICByZWlu
dGVycHJldF9jYXN0PEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QqPihtX3ByaXZhdGUpOworICAg
IE5vZGUqIG5vZGUgPSByZW5kZXJPYmplY3QtPm5vZGUoKTsKKyAgICBpZiAoIW5vZGUpCisgICAg
ICAgIHJldHVybiBXZWJOb2RlKCk7CisKKyAgICByZXR1cm4gV2ViTm9kZShub2RlKTsKK30KKwor
V2ViRG9jdW1lbnQgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6ZG9jdW1lbnQoKSBjb25zdAorewor
ICAgIGlmICghbV9wcml2YXRlKQorICAgICAgICByZXR1cm4gV2ViRG9jdW1lbnQoKTsKKworICAg
IG1fcHJpdmF0ZS0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CisKKyAgICBpZiAoIW1fcHJpdmF0ZS0+
aXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkpCisgICAgICAgIHJldHVybiBXZWJEb2N1bWVu
dCgpOworCisgICAgcmV0dXJuIFdlYkRvY3VtZW50KG1fcHJpdmF0ZS0+ZG9jdW1lbnQoKSk7Cit9
CisKIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OldlYkFjY2Vzc2liaWxpdHlPYmplY3QoY29uc3Qg
V1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q+JiBvYmplY3QpCiAg
ICAgOiBtX3ByaXZhdGUoc3RhdGljX2Nhc3Q8V2ViQWNjZXNzaWJpbGl0eU9iamVjdFByaXZhdGUq
PihvYmplY3QucmVsZWFzZVJlZigpKSkKIHsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
QXR0cmlidXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkF0dHJp
YnV0ZS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkF0dHJpYnV0
ZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV2ViQXR0cmlidXRlLmgiCisKKyNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKKyNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCisjaW5jbHVkZSAiV2ViQXR0cmlidXRlLmgiCisjaW5j
bHVkZSAiV2ViU3RyaW5nLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKwordm9pZCBXZWJBdHRyaWJ1dGU6OnJlc2V0KCkKK3sKKyAgICBhc3NpZ24o
MCk7Cit9CisKK3ZvaWQgV2ViQXR0cmlidXRlOjphc3NpZ24oY29uc3QgV2ViQXR0cmlidXRlJiBv
dGhlcikKK3sKKyAgICBBdHRyaWJ1dGUqIHAgPSBjb25zdF9jYXN0PEF0dHJpYnV0ZSo+KG90aGVy
Lm1fcHJpdmF0ZSk7CisgICAgaWYgKHApCisgICAgICAgIHAtPnJlZigpOworICAgIGFzc2lnbihw
KTsKK30KKworV2ViQXR0cmlidXRlOjpXZWJBdHRyaWJ1dGUoY29uc3QgUGFzc1JlZlB0cjxBdHRy
aWJ1dGU+JiBjb2wpCisgICAgOiBtX3ByaXZhdGUoc3RhdGljX2Nhc3Q8QXR0cmlidXRlKj4oY29s
LnJlbGVhc2VSZWYoKSkpCit7Cit9CisKK3ZvaWQgV2ViQXR0cmlidXRlOjphc3NpZ24oQXR0cmli
dXRlKiBwKQoreworICAgIC8vIHAgaXMgYWxyZWFkeSByZWYnZCBmb3IgdXMgYnkgdGhlIGNhbGxl
cgorICAgIGlmIChtX3ByaXZhdGUpCisgICAgICAgIG1fcHJpdmF0ZS0+ZGVyZWYoKTsKKyAgICBt
X3ByaXZhdGUgPSBwOworfQorCitXZWJTdHJpbmcgV2ViQXR0cmlidXRlOjpsb2NhbE5hbWUoKSBj
b25zdAoreworICAgIHJldHVybiBXZWJTdHJpbmcobV9wcml2YXRlLT5sb2NhbE5hbWUoKSk7Cit9
CisKK1dlYlN0cmluZyBXZWJBdHRyaWJ1dGU6OnZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
V2ViU3RyaW5nKG1fcHJpdmF0ZS0+dmFsdWUoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBdHRyaWJ1dGUu
Y3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFdlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRG9jdW1lbnRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkRvY3VtZW50VHlwZS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkRvY3VtZW50VHlwZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViRG9jdW1lbnRUeXBlLmgiCisK
KyNpbmNsdWRlICJEb2N1bWVudFR5cGUuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKworI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworV2ViU3RyaW5nIFdlYkRvY3VtZW50VHlwZTo6bmFtZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIFdlYlN0cmluZyhjb25zdFVud3JhcDxEb2N1bWVudFR5cGU+KCkt
Pm5hbWUoKSk7Cit9CisKK1dlYkRvY3VtZW50VHlwZTo6V2ViRG9jdW1lbnRUeXBlKGNvbnN0IFBh
c3NSZWZQdHI8RG9jdW1lbnRUeXBlPiYgZWxlbSkKKyAgICA6IFdlYk5vZGUoZWxlbSkKK3sKK30K
KworV2ViRG9jdW1lbnRUeXBlJiBXZWJEb2N1bWVudFR5cGU6Om9wZXJhdG9yPShjb25zdCBQYXNz
UmVmUHRyPERvY3VtZW50VHlwZT4mIGVsZW0pCit7CisgICAgbV9wcml2YXRlID0gZWxlbTsKKyAg
ICByZXR1cm4gKnRoaXM7Cit9CisKK1dlYkRvY3VtZW50VHlwZTo6b3BlcmF0b3IgUGFzc1JlZlB0
cjxEb2N1bWVudFR5cGU+KCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1l
bnRUeXBlKj4obV9wcml2YXRlLmdldCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CgpQ
cm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRvY3VtZW50VHlwZS5j
cHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJOYW1lZE5vZGVNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9j
aHJvbWl1bS9zcmMvV2ViTmFtZWROb2RlTWFwLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9j
aHJvbWl1bS9zcmMvV2ViTmFtZWROb2RlTWFwLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJOYW1lZE5vZGVNYXAuaCIKKwor
I2luY2x1ZGUgIk5hbWVkTm9kZU1hcC5oIgorI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgorCisjaW5jbHVkZSAiV2ViQXR0cmlidXRlLmgiCisjaW5jbHVkZSAi
V2ViTm9kZS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK3ZvaWQgV2ViTmFtZWROb2RlTWFwOjpyZXNldCgpCit7CisgICAgYXNzaWduKDApOwor
fQorCit2b2lkIFdlYk5hbWVkTm9kZU1hcDo6YXNzaWduKGNvbnN0IFdlYk5hbWVkTm9kZU1hcCYg
b3RoZXIpCit7CisgICAgTmFtZWROb2RlTWFwKiBwID0gY29uc3RfY2FzdDxOYW1lZE5vZGVNYXAq
PihvdGhlci5tX3ByaXZhdGUpOworICAgIGlmIChwKQorICAgICAgICBwLT5yZWYoKTsKKyAgICBh
c3NpZ24ocCk7Cit9CisKK1dlYk5hbWVkTm9kZU1hcDo6V2ViTmFtZWROb2RlTWFwKGNvbnN0IFBh
c3NSZWZQdHI8TmFtZWROb2RlTWFwPiYgY29sKQorICAgIDogbV9wcml2YXRlKHN0YXRpY19jYXN0
PE5hbWVkTm9kZU1hcCo+KGNvbC5yZWxlYXNlUmVmKCkpKQoreworfQorCit2b2lkIFdlYk5hbWVk
Tm9kZU1hcDo6YXNzaWduKE5hbWVkTm9kZU1hcCogcCkKK3sKKyAgICAvLyBwIGlzIGFscmVhZHkg
cmVmJ2QgZm9yIHVzIGJ5IHRoZSBjYWxsZXIKKyAgICBpZiAobV9wcml2YXRlKQorICAgICAgICBt
X3ByaXZhdGUtPmRlcmVmKCk7CisgICAgbV9wcml2YXRlID0gcDsKK30KKwordW5zaWduZWQgV2Vi
TmFtZWROb2RlTWFwOjpsZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmxl
bmd0aCgpOworfQorCitXZWJBdHRyaWJ1dGUgV2ViTmFtZWROb2RlTWFwOjphdHRyaWJ1dGVJdGVt
KHVuc2lnbmVkIGluZGV4KSBjb25zdAoreworICAgIHJldHVybiBXZWJBdHRyaWJ1dGUobV9wcml2
YXRlLT5hdHRyaWJ1dGVJdGVtKGluZGV4KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAoK
UHJvcGVydHkgY2hhbmdlcyBvbjogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJOYW1lZE5vZGVNYXAu
Y3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFdlYktp
dC9jaHJvbWl1bS9zcmMvV2ViUmVuZGVyU3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9j
aHJvbWl1bS9zcmMvV2ViUmVuZGVyU3R5bGUuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJSZW5kZXJTdHlsZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUmVuZGVyU3R5bGUuaCIKKworI2lu
Y2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKKyNpbmNsdWRlICJSZW5kZXJTdHls
ZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKKyNpbmNsdWRlICJXZWJSZW5kZXJT
dHlsZS5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgV2ViUmVuZGVyU3R5bGU6OnJlc2V0KCkK
K3sKKyAgICBhc3NpZ24oMCk7Cit9CisKK3ZvaWQgV2ViUmVuZGVyU3R5bGU6OmFzc2lnbihjb25z
dCBXZWJSZW5kZXJTdHlsZSYgb3RoZXIpCit7CisgICAgUmVuZGVyU3R5bGUqIHAgPSBjb25zdF9j
YXN0PFJlbmRlclN0eWxlKj4ob3RoZXIubV9wcml2YXRlKTsKKyAgICBpZiAocCkKKyAgICAgICAg
cC0+cmVmKCk7CisgICAgYXNzaWduKHApOworfQorCitXZWJSZW5kZXJTdHlsZTo6V2ViUmVuZGVy
U3R5bGUoY29uc3QgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4mIGNvbCkKKyAgICA6IG1fcHJpdmF0
ZShzdGF0aWNfY2FzdDxSZW5kZXJTdHlsZSo+KGNvbC5yZWxlYXNlUmVmKCkpKQoreworfQorCit2
b2lkIFdlYlJlbmRlclN0eWxlOjphc3NpZ24oUmVuZGVyU3R5bGUqIHApCit7CisgICAgLy8gcCBp
cyBhbHJlYWR5IHJlZidkIGZvciB1cyBieSB0aGUgY2FsbGVyCisgICAgaWYgKG1fcHJpdmF0ZSkK
KyAgICAgICAgbV9wcml2YXRlLT5kZXJlZigpOworICAgIG1fcHJpdmF0ZSA9IHA7Cit9CisKK1dl
YlN0cmluZyBXZWJSZW5kZXJTdHlsZTo6ZGlzcGxheSgpIGNvbnN0Cit7CisgIHJldHVybiBXZWJT
dHJpbmcoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShtX3ByaXZhdGUtPmRpc3BsYXkoKSktPmdl
dFN0cmluZ1ZhbHVlKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKClByb3BlcnR5IGNo
YW5nZXMgb246IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViUmVuZGVyU3R5bGUuY3BwCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60933</attachid>
            <date>2010-07-08 12:48:34 -0700</date>
            <delta_ts>2010-07-08 13:16:18 -0700</delta_ts>
            <desc>Fix style errors in previous patch</desc>
            <filename>patch43</filename>
            <type>text/plain</type>
            <size>31612</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjI3OTYpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTcgQEAKKzIwMTAtMDctMDggIERvbWlu
aWMgTWF6em9uaSAgPGRtYXp6b25pQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG1ldGhvZHMgdG8gV2ViQWNjZXNzaWJpbGl0
eU9iamVjdCB0byBhY2Nlc3MgdGhlIE5vZGUgYW5kCisgICAgICAgIERvY3VtZW50LCBhbmQgdGhl
biBhZGQgbWV0aG9kcyB0byBhY2Nlc3Mgc29tZSBkb2N1bWVudCwgbm9kZSwKKyAgICAgICAgYW5k
IGVsZW1lbnQgcHJvcGVydGllcyBuZWVkZWQgZm9yIFdpbmRvd3MgYWNjZXNzaWJpbGl0eS4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE1NjkKKwor
ICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3QuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViQXR0cmlidXRlLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJBdHRyaWJ1dGU6On5XZWJBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJBdHRyaWJ1dGU6OldlYkF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF0dHJp
YnV0ZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKiBwdWJsaWMvV2ViRG9jdW1lbnRUeXBlLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJEb2N1bWVudFR5cGU6OldlYkRvY3VtZW50VHlwZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkRvY3VtZW50VHlwZTo6b3BlcmF0b3I9KToKKyAgICAgICAg
KFdlYktpdDo6V2ViRG9jdW1lbnRUeXBlOjphc3NpZ24pOgorICAgICAgICAqIHB1YmxpYy9XZWJO
YW1lZE5vZGVNYXAuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYk5hbWVkTm9kZU1hcDo6
fldlYk5hbWVkTm9kZU1hcCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5hbWVkTm9kZU1hcDo6V2Vi
TmFtZWROb2RlTWFwKToKKyAgICAgICAgKFdlYktpdDo6V2ViTmFtZWROb2RlTWFwOjpvcGVyYXRv
cj0pOgorICAgICAgICAqIHB1YmxpYy9XZWJSZW5kZXJTdHlsZS5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViUmVuZGVyU3R5bGU6On5XZWJSZW5kZXJTdHlsZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlJlbmRlclN0eWxlOjpXZWJSZW5kZXJTdHlsZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlbmRlclN0eWxlOjpvcGVyYXRvcj0pOgorICAgICAgICAqIHNyYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6bm9k
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OmRvY3VtZW50KToK
KyAgICAgICAgKiBzcmMvV2ViQXR0cmlidXRlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYkF0dHJpYnV0ZTo6cmVzZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdHRyaWJ1dGU6OmFz
c2lnbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF0dHJpYnV0ZTo6V2ViQXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQXR0cmlidXRlOjpsb2NhbE5hbWUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJBdHRyaWJ1dGU6OnZhbHVlKToKKyAgICAgICAgKiBzcmMvV2ViRG9jdW1lbnRUeXBlLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkRvY3VtZW50VHlwZTo6bmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkRvY3VtZW50VHlwZTo6V2ViRG9jdW1lbnRUeXBlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViRG9jdW1lbnRUeXBlOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJEb2N1bWVudFR5cGU6Om9wZXJhdG9yIFBhc3NSZWZQdHI8RG9jdW1lbnRUeXBlPik6CisgICAg
ICAgICogc3JjL1dlYk5hbWVkTm9kZU1hcC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJOYW1lZE5vZGVNYXA6OnJlc2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTmFtZWROb2RlTWFw
Ojphc3NpZ24pOgorICAgICAgICAoV2ViS2l0OjpXZWJOYW1lZE5vZGVNYXA6OldlYk5hbWVkTm9k
ZU1hcCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5hbWVkTm9kZU1hcDo6bGVuZ3RoKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTmFtZWROb2RlTWFwOjphdHRyaWJ1dGVJdGVtKToKKyAgICAgICAgKiBz
cmMvV2ViUmVuZGVyU3R5bGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVuZGVy
U3R5bGU6OnJlc2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVuZGVyU3R5bGU6OmFzc2lnbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlJlbmRlclN0eWxlOjpXZWJSZW5kZXJTdHlsZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlbmRlclN0eWxlOjpkaXNwbGF5KToKKwogMjAxMC0wNy0wOCAgVml0
YWx5IFJlcGVzaGtvICA8dml0YWx5ckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgUGF2ZWwgRmVsZG1hbi4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCShyZXZpc2lvbiA2Mjc5NCkKKysr
IFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw2ICs4NCw3
IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJBbmltYXRpb25Db250cm9sbGVyLmgnLAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQXBwbGljYXRpb25DYWNoZUhvc3QuaCcsCiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENsaWVudC5oJywKKyAg
ICAgICAgICAgICAgICAncHVibGljL1dlYkF0dHJpYnV0ZS5oJywKICAgICAgICAgICAgICAgICAn
cHVibGljL1dlYkJpbmRpbmdzLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQ2FjaGUu
aCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJDYW52YXMuaCcsCkBAIC0xMTIsNiArMTEz
LDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkRldlRvb2xzTWVzc2FnZURhdGEuaCcs
CiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEZXZUb29sc01lc3NhZ2VUcmFuc3BvcnQuaCcs
CiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEb2N1bWVudC5oJywKKyAgICAgICAgICAgICAg
ICAncHVibGljL1dlYkRvY3VtZW50VHlwZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dl
YkRyYWdEYXRhLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRWRpdGluZ0FjdGlvbi5o
JywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkVsZW1lbnQuaCcsCkBAIC0xNTcsNiArMTU5
LDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbENsaWVu
dC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYk1pbWVSZWdpc3RyeS5oJywKICAgICAg
ICAgICAgICAgICAncHVibGljL1dlYk11dGF0aW9uRXZlbnQuaCcsCisgICAgICAgICAgICAgICAg
J3B1YmxpYy9XZWJOYW1lZE5vZGVNYXAuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJO
YXZpZ2F0aW9uVHlwZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYk5vZGUuaCcsCiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJOb2RlQ29sbGVjdGlvbi5oJywKQEAgLTE4MCw2ICsx
ODMsNyBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViUHJpdmF0ZVB0ci5oJywKICAgICAg
ICAgICAgICAgICAncHVibGljL1dlYlJhbmdlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViUmVjdC5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYlJlbmRlclN0eWxlLmgnLAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViUmVndWxhckV4cHJlc3Npb24uaCcsCiAgICAgICAg
ICAgICAgICAgJ3B1YmxpYy9XZWJSdW50aW1lRmVhdHVyZXMuaCcsCiAgICAgICAgICAgICAgICAg
J3B1YmxpYy9XZWJTY3JvbGxiYXIuaCcsCkBAIC0zMTYsNiArMzIwLDcgQEAKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYkFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJBbmltYXRpb25Db250cm9sbGVySW1wbC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL1dl
YkF0dHJpYnV0ZS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViQmluZGluZ3MuY3BwJywK
ICAgICAgICAgICAgICAgICAnc3JjL1dlYkNhY2hlLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJDb2xvci5jcHAnLApAQCAtMzMzLDYgKzMzOCw3IEBACiAgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJEZXZUb29sc0Zyb250ZW5kSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
RGV2VG9vbHNGcm9udGVuZEltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJEb2N1bWVu
dC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViRG9jdW1lbnRUeXBlLmNwcCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9XZWJEcmFnRGF0YS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMv
V2ViRWxlbWVudC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRW50aXRpZXMuY3BwJywK
QEAgLTM4MCw2ICszODYsNyBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViTWVkaWFQbGF5ZXJD
bGllbnRJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJNZWRpYVBsYXllckNsaWVu
dEltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJNdXRhdGlvbkV2ZW50LmNwcCcsCisg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJOYW1lZE5vZGVNYXAuY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYk5vZGUuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYk5vZGVDb2xsZWN0
aW9uLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJOb2RlTGlzdC5jcHAnLApAQCAtNDAx
LDYgKzQwOCw3IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJQb3B1cE1lbnVJbXBsLmgnLAog
ICAgICAgICAgICAgICAgICdzcmMvV2ViUmFuZ2UuY3BwJywKICAgICAgICAgICAgICAgICAnc3Jj
L1dlYlJlZ3VsYXJFeHByZXNzaW9uLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJSZW5k
ZXJTdHlsZS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViUnVudGltZUZlYXR1cmVzLmNw
cCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTY3JpcHRDb250cm9sbGVyLmNwcCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9XZWJTY3JvbGxiYXJJbXBsLmNwcCcsCkluZGV4OiBXZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaAkocmV2aXNpb24gNjI3
OTQpCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaAko
d29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsOCBAQCBuYW1lc3BhY2UgV1RGIHsgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IGNsCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFByaXZhdGU7CitjbGFzcyBXZWJOb2RlOworY2xhc3MgV2ViRG9jdW1lbnQ7CiBj
bGFzcyBXZWJTdHJpbmc7CiBzdHJ1Y3QgV2ViUG9pbnQ7CiBzdHJ1Y3QgV2ViUmVjdDsKQEAgLTEw
Myw2ICsxMDUsOSBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0FQSSBXZWJTdHJpbmcgc3RyaW5nVmFs
dWUoKSBjb25zdDsKICAgICBXRUJLSVRfQVBJIFdlYlN0cmluZyB0aXRsZSgpIGNvbnN0OwogCisg
ICAgV0VCS0lUX0FQSSBXZWJOb2RlIG5vZGUoKSBjb25zdDsKKyAgICBXRUJLSVRfQVBJIFdlYkRv
Y3VtZW50IGRvY3VtZW50KCkgY29uc3Q7CisKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KICAg
ICBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0PiYpOwogICAgIFdlYkFjY2Vzc2liaWxpdHlPYmplY3QmIG9wZXJh
dG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdD4m
KTsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQXR0cmlidXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBdHRyaWJ1dGUuaAkocmV2aXNpb24gMCkK
KysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQXR0cmlidXRlLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkF0dHJpYnV0ZV9oCisjZGVmaW5lIFdlYkF0dHJpYnV0
ZV9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFz
cyBBdHRyaWJ1dGU7IH0KKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KK25hbWVzcGFjZSBXVEYg
eyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1JlZlB0cjsgfQorI2VuZGlmCisKK25h
bWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViU3RyaW5nOworCisvLyBQcm92aWRlcyByZWFkb25s
eSBhY2Nlc3MgdG8gc29tZSBwcm9wZXJ0aWVzIG9mIGEgRE9NIGF0dHJpYnV0ZS4KK2NsYXNzIFdl
YkF0dHJpYnV0ZSB7CitwdWJsaWM6CisgICAgfldlYkF0dHJpYnV0ZSgpIHsgcmVzZXQoKTsgfQor
CisgICAgV2ViQXR0cmlidXRlKCkgOiBtX3ByaXZhdGUoMCkgeyB9CisgICAgV2ViQXR0cmlidXRl
KGNvbnN0IFdlYkF0dHJpYnV0ZSYgbikgOiBtX3ByaXZhdGUoMCkgeyBhc3NpZ24obik7IH0KKyAg
ICBXZWJBdHRyaWJ1dGUmIG9wZXJhdG9yPShjb25zdCBXZWJBdHRyaWJ1dGUmIG4pCisgICAgewor
ICAgICAgICBhc3NpZ24obik7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBX
RUJLSVRfQVBJIHZvaWQgcmVzZXQoKTsKKyAgICBXRUJLSVRfQVBJIHZvaWQgYXNzaWduKGNvbnN0
IFdlYkF0dHJpYnV0ZSYpOworCisgICAgV0VCS0lUX0FQSSBXZWJTdHJpbmcgbG9jYWxOYW1lKCkg
Y29uc3Q7CisgICAgV0VCS0lUX0FQSSBXZWJTdHJpbmcgdmFsdWUoKSBjb25zdDsKKworI2lmIFdF
QktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYkF0dHJpYnV0ZShjb25zdCBXVEY6OlBhc3NSZWZQ
dHI8V2ViQ29yZTo6QXR0cmlidXRlPiYpOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgdm9pZCBh
c3NpZ24oV2ViQ29yZTo6QXR0cmlidXRlKik7CisgICAgV2ViQ29yZTo6QXR0cmlidXRlKiBtX3By
aXZhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCgpQcm9wZXJ0eSBj
aGFuZ2VzIG9uOiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkF0dHJpYnV0ZS5oCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViRG9jdW1lbnRUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJEb2N1bWVudFR5cGUuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViRG9jdW1lbnRUeXBlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdlYkRvY3VtZW50VHlwZV9oCisjZGVmaW5lIFdlYkRvY3VtZW50VHlwZV9oCisKKyNpbmNs
dWRlICJXZWJOb2RlLmgiCisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KK25hbWVzcGFjZSBX
ZWJDb3JlIHsgY2xhc3MgRG9jdW1lbnRUeXBlOyB9CituYW1lc3BhY2UgV1RGIHsgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IGNsYXNzIFBhc3NSZWZQdHI7IH0KKyNlbmRpZgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKK2NsYXNzIFdlYlN0cmluZzsKKworLy8gUHJvdmlkZXMgcmVhZG9ubHkgYWNjZXNzIHRv
IHNvbWUgcHJvcGVydGllcyBvZiBhIERPTSBkb2N1bWVudCB0eXBlLgorY2xhc3MgV2ViRG9jdW1l
bnRUeXBlIDogcHVibGljIFdlYk5vZGUgeworcHVibGljOgorICAgIFdlYkRvY3VtZW50VHlwZSgp
IHsgfQorICAgIFdlYkRvY3VtZW50VHlwZShjb25zdCBXZWJEb2N1bWVudFR5cGUmIGUpIDogV2Vi
Tm9kZShlKSB7IH0KKworICAgIFdlYkRvY3VtZW50VHlwZSYgb3BlcmF0b3I9KGNvbnN0IFdlYkRv
Y3VtZW50VHlwZSYgZSkKKyAgICB7CisgICAgICAgIFdlYk5vZGU6OmFzc2lnbihlKTsKKyAgICAg
ICAgcmV0dXJuICp0aGlzOworICAgIH0KKyAgICB2b2lkIGFzc2lnbihjb25zdCBXZWJEb2N1bWVu
dFR5cGUmIGUpIHsgV2ViTm9kZTo6YXNzaWduKGUpOyB9CisKKyAgICBXRUJLSVRfQVBJIFdlYlN0
cmluZyBuYW1lKCkgY29uc3Q7CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJE
b2N1bWVudFR5cGUoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50VHlwZT4m
KTsKKyAgICBXZWJEb2N1bWVudFR5cGUmIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8
V2ViQ29yZTo6RG9jdW1lbnRUeXBlPiYpOworICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxX
ZWJDb3JlOjpEb2N1bWVudFR5cGU+KCkgY29uc3Q7CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViRG9jdW1lbnRUeXBlLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHls
ZQogICArIExGCgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJOYW1lZE5vZGVNYXAu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk5hbWVkTm9kZU1hcC5o
CShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJOYW1lZE5vZGVNYXAu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViTmFtZWROb2RlTWFwX2gK
KyNkZWZpbmUgV2ViTmFtZWROb2RlTWFwX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIE5hbWVkTm9kZU1hcDsgfQorI2lmIFdFQktJVF9JTVBM
RU1FTlRBVElPTgorbmFtZXNwYWNlIFdURiB7IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBQ
YXNzUmVmUHRyOyB9CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJBdHRy
aWJ1dGU7CisKKy8vIFByb3ZpZGVzIHJlYWRvbmx5IGFjY2VzcyB0byBzb21lIHByb3BlcnRpZXMg
b2YgYSBET00gYXR0cmlidXRlIG1hcC4KK2NsYXNzIFdlYk5hbWVkTm9kZU1hcCB7CitwdWJsaWM6
CisgICAgfldlYk5hbWVkTm9kZU1hcCgpIHsgcmVzZXQoKTsgfQorCisgICAgV2ViTmFtZWROb2Rl
TWFwKCkgOiBtX3ByaXZhdGUoMCkgeyB9CisgICAgV2ViTmFtZWROb2RlTWFwKGNvbnN0IFdlYk5h
bWVkTm9kZU1hcCYgbikgOiBtX3ByaXZhdGUoMCkgeyBhc3NpZ24obik7IH0KKyAgICBXZWJOYW1l
ZE5vZGVNYXAmIG9wZXJhdG9yPShjb25zdCBXZWJOYW1lZE5vZGVNYXAmIG4pCisgICAgeworICAg
ICAgICBhc3NpZ24obik7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBXRUJL
SVRfQVBJIHZvaWQgcmVzZXQoKTsKKyAgICBXRUJLSVRfQVBJIHZvaWQgYXNzaWduKGNvbnN0IFdl
Yk5hbWVkTm9kZU1hcCYpOworCisgICAgV0VCS0lUX0FQSSB1bnNpZ25lZCBsZW5ndGgoKSBjb25z
dDsKKyAgICBXRUJLSVRfQVBJIFdlYkF0dHJpYnV0ZSBhdHRyaWJ1dGVJdGVtKHVuc2lnbmVkKSBj
b25zdDsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYk5hbWVkTm9kZU1hcChj
b25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6TmFtZWROb2RlTWFwPiYpOworI2VuZGlmCisK
K3ByaXZhdGU6CisgICAgdm9pZCBhc3NpZ24oV2ViQ29yZTo6TmFtZWROb2RlTWFwKik7CisgICAg
V2ViQ29yZTo6TmFtZWROb2RlTWFwKiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYk5hbWVkTm9kZU1hcC5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAg
KyBMRgoKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUmVuZGVyU3R5bGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlJlbmRlclN0eWxlLmgJKHJldmlz
aW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlJlbmRlclN0eWxlLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlJlbmRlclN0eWxlX2gKKyNkZWZpbmUg
V2ViUmVuZGVyU3R5bGVfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsgY2xhc3MgUmVuZGVyU3R5bGU7IH0KKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04K
K25hbWVzcGFjZSBXVEYgeyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1JlZlB0cjsg
fQorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViU3RyaW5nOworCisvLyBQ
cm92aWRlcyByZWFkb25seSBhY2Nlc3MgdG8gc29tZSBwcm9wZXJ0aWVzIG9mIGEgRE9NIG5vZGUn
cyBzdHlsZS4KK2NsYXNzIFdlYlJlbmRlclN0eWxlIHsKK3B1YmxpYzoKKyAgICB+V2ViUmVuZGVy
U3R5bGUoKSB7IHJlc2V0KCk7IH0KKworICAgIFdlYlJlbmRlclN0eWxlKCkgOiBtX3ByaXZhdGUo
MCkgeyB9CisgICAgV2ViUmVuZGVyU3R5bGUoY29uc3QgV2ViUmVuZGVyU3R5bGUmIG4pIDogbV9w
cml2YXRlKDApIHsgYXNzaWduKG4pOyB9CisgICAgV2ViUmVuZGVyU3R5bGUmIG9wZXJhdG9yPShj
b25zdCBXZWJSZW5kZXJTdHlsZSYgbikKKyAgICB7CisgICAgICAgIGFzc2lnbihuKTsKKyAgICAg
ICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIFdFQktJVF9BUEkgdm9pZCByZXNldCgpOwor
ICAgIFdFQktJVF9BUEkgdm9pZCBhc3NpZ24oY29uc3QgV2ViUmVuZGVyU3R5bGUmKTsKKworICAg
IFdFQktJVF9BUEkgV2ViU3RyaW5nIGRpc3BsYXkoKSBjb25zdDsKKworI2lmIFdFQktJVF9JTVBM
RU1FTlRBVElPTgorICAgIFdlYlJlbmRlclN0eWxlKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJD
b3JlOjpSZW5kZXJTdHlsZT4mKTsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIHZvaWQgYXNzaWdu
KFdlYkNvcmU6OlJlbmRlclN0eWxlKik7CisgICAgV2ViQ29yZTo6UmVuZGVyU3R5bGUqIG1fcHJp
dmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKClByb3BlcnR5IGNo
YW5nZXMgb246IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUmVuZGVyU3R5bGUuaApfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBXZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJv
bWl1bS9zcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAJKHJldmlzaW9uIDYyNzk0KQorKysg
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzIsOSArMzIsMTMgQEAKICNpbmNsdWRlICJXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
LmgiCiAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCisjaW5jbHVkZSAiQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgogI2luY2x1
ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQuaCIKKyNpbmNsdWRlICJXZWJEb2N1bWVudC5oIgorI2luY2x1ZGUgIldlYk5v
ZGUuaCIKICNpbmNsdWRlICJXZWJQb2ludC5oIgogI2luY2x1ZGUgIldlYlJlY3QuaCIKICNpbmNs
dWRlICJXZWJTdHJpbmcuaCIKQEAgLTQwMSw2ICs0MDUsMzkgQEAgV2ViU3RyaW5nIFdlYkFjY2Vz
c2liaWxpdHlPYmplY3Q6OnRpdGxlKAogICAgIHJldHVybiBtX3ByaXZhdGUtPnRpdGxlKCk7CiB9
CiAKKworV2ViTm9kZSBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpub2RlKCkgY29uc3QKK3sKKyAg
ICBpZiAoIW1fcHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuIFdlYk5vZGUoKTsKKworICAgIG1fcHJp
dmF0ZS0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CisKKyAgICBpZiAoIW1fcHJpdmF0ZS0+aXNBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkpCisgICAgICAgIHJldHVybiBXZWJOb2RlKCk7CisKKyAg
ICBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QgPQorICAgICAgICByZWlu
dGVycHJldF9jYXN0PEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QqPihtX3ByaXZhdGUpOworICAg
IE5vZGUqIG5vZGUgPSByZW5kZXJPYmplY3QtPm5vZGUoKTsKKyAgICBpZiAoIW5vZGUpCisgICAg
ICAgIHJldHVybiBXZWJOb2RlKCk7CisKKyAgICByZXR1cm4gV2ViTm9kZShub2RlKTsKK30KKwor
V2ViRG9jdW1lbnQgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6ZG9jdW1lbnQoKSBjb25zdAorewor
ICAgIGlmICghbV9wcml2YXRlKQorICAgICAgICByZXR1cm4gV2ViRG9jdW1lbnQoKTsKKworICAg
IG1fcHJpdmF0ZS0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CisKKyAgICBpZiAoIW1fcHJpdmF0ZS0+
aXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkpCisgICAgICAgIHJldHVybiBXZWJEb2N1bWVu
dCgpOworCisgICAgcmV0dXJuIFdlYkRvY3VtZW50KG1fcHJpdmF0ZS0+ZG9jdW1lbnQoKSk7Cit9
CisKIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OldlYkFjY2Vzc2liaWxpdHlPYmplY3QoY29uc3Qg
V1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q+JiBvYmplY3QpCiAg
ICAgOiBtX3ByaXZhdGUoc3RhdGljX2Nhc3Q8V2ViQWNjZXNzaWJpbGl0eU9iamVjdFByaXZhdGUq
PihvYmplY3QucmVsZWFzZVJlZigpKSkKIHsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
QXR0cmlidXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkF0dHJp
YnV0ZS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkF0dHJpYnV0
ZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV2ViQXR0cmlidXRlLmgiCisKKyNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKKyNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBXZWJBdHRy
aWJ1dGU6OnJlc2V0KCkKK3sKKyAgICBhc3NpZ24oMCk7Cit9CisKK3ZvaWQgV2ViQXR0cmlidXRl
Ojphc3NpZ24oY29uc3QgV2ViQXR0cmlidXRlJiBvdGhlcikKK3sKKyAgICBBdHRyaWJ1dGUqIHAg
PSBjb25zdF9jYXN0PEF0dHJpYnV0ZSo+KG90aGVyLm1fcHJpdmF0ZSk7CisgICAgaWYgKHApCisg
ICAgICAgIHAtPnJlZigpOworICAgIGFzc2lnbihwKTsKK30KKworV2ViQXR0cmlidXRlOjpXZWJB
dHRyaWJ1dGUoY29uc3QgUGFzc1JlZlB0cjxBdHRyaWJ1dGU+JiBjb2wpCisgICAgOiBtX3ByaXZh
dGUoc3RhdGljX2Nhc3Q8QXR0cmlidXRlKj4oY29sLnJlbGVhc2VSZWYoKSkpCit7Cit9CisKK3Zv
aWQgV2ViQXR0cmlidXRlOjphc3NpZ24oQXR0cmlidXRlKiBwKQoreworICAgIC8vIHAgaXMgYWxy
ZWFkeSByZWYnZCBmb3IgdXMgYnkgdGhlIGNhbGxlcgorICAgIGlmIChtX3ByaXZhdGUpCisgICAg
ICAgIG1fcHJpdmF0ZS0+ZGVyZWYoKTsKKyAgICBtX3ByaXZhdGUgPSBwOworfQorCitXZWJTdHJp
bmcgV2ViQXR0cmlidXRlOjpsb2NhbE5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBXZWJTdHJp
bmcobV9wcml2YXRlLT5sb2NhbE5hbWUoKSk7Cit9CisKK1dlYlN0cmluZyBXZWJBdHRyaWJ1dGU6
OnZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViU3RyaW5nKG1fcHJpdmF0ZS0+dmFsdWUo
KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJBdHRyaWJ1dGUuY3BwCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpl
b2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRG9jdW1lbnRU
eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRvY3VtZW50VHlw
ZS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRvY3VtZW50VHlw
ZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV2ViRG9jdW1lbnRUeXBlLmgiCisKKyNpbmNsdWRlICJEb2N1bWVudFR5cGUuaCIK
KyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViU3Ry
aW5nIFdlYkRvY3VtZW50VHlwZTo6bmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYlN0cmlu
Zyhjb25zdFVud3JhcDxEb2N1bWVudFR5cGU+KCktPm5hbWUoKSk7Cit9CisKK1dlYkRvY3VtZW50
VHlwZTo6V2ViRG9jdW1lbnRUeXBlKGNvbnN0IFBhc3NSZWZQdHI8RG9jdW1lbnRUeXBlPiYgZWxl
bSkKKyAgICA6IFdlYk5vZGUoZWxlbSkKK3sKK30KKworV2ViRG9jdW1lbnRUeXBlJiBXZWJEb2N1
bWVudFR5cGU6Om9wZXJhdG9yPShjb25zdCBQYXNzUmVmUHRyPERvY3VtZW50VHlwZT4mIGVsZW0p
Cit7CisgICAgbV9wcml2YXRlID0gZWxlbTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK1dlYkRv
Y3VtZW50VHlwZTo6b3BlcmF0b3IgUGFzc1JlZlB0cjxEb2N1bWVudFR5cGU+KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnRUeXBlKj4obV9wcml2YXRlLmdldCgpKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkRvY3VtZW50VHlwZS5jcHAKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVv
bC1zdHlsZQogICArIExGCgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJOYW1lZE5vZGVN
YXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViTmFtZWROb2RlTWFw
LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViTmFtZWROb2RlTWFw
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXZWJOYW1lZE5vZGVNYXAuaCIKKworI2luY2x1ZGUgIk5hbWVkTm9kZU1hcC5oIgor
I2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJXZWJBdHRyaWJ1dGUuaCIKKyNpbmNsdWRlICJX
ZWJOb2RlLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKwordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFdlYk5hbWVkTm9kZU1hcDo6
cmVzZXQoKQoreworICAgIGFzc2lnbigwKTsKK30KKwordm9pZCBXZWJOYW1lZE5vZGVNYXA6OmFz
c2lnbihjb25zdCBXZWJOYW1lZE5vZGVNYXAmIG90aGVyKQoreworICAgIE5hbWVkTm9kZU1hcCog
cCA9IGNvbnN0X2Nhc3Q8TmFtZWROb2RlTWFwKj4ob3RoZXIubV9wcml2YXRlKTsKKyAgICBpZiAo
cCkKKyAgICAgICAgcC0+cmVmKCk7CisgICAgYXNzaWduKHApOworfQorCitXZWJOYW1lZE5vZGVN
YXA6OldlYk5hbWVkTm9kZU1hcChjb25zdCBQYXNzUmVmUHRyPE5hbWVkTm9kZU1hcD4mIGNvbCkK
KyAgICA6IG1fcHJpdmF0ZShzdGF0aWNfY2FzdDxOYW1lZE5vZGVNYXAqPihjb2wucmVsZWFzZVJl
ZigpKSkKK3sKK30KKwordm9pZCBXZWJOYW1lZE5vZGVNYXA6OmFzc2lnbihOYW1lZE5vZGVNYXAq
IHApCit7CisgICAgLy8gcCBpcyBhbHJlYWR5IHJlZidkIGZvciB1cyBieSB0aGUgY2FsbGVyCisg
ICAgaWYgKG1fcHJpdmF0ZSkKKyAgICAgICAgbV9wcml2YXRlLT5kZXJlZigpOworICAgIG1fcHJp
dmF0ZSA9IHA7Cit9CisKK3Vuc2lnbmVkIFdlYk5hbWVkTm9kZU1hcDo6bGVuZ3RoKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5sZW5ndGgoKTsKK30KKworV2ViQXR0cmlidXRlIFdl
Yk5hbWVkTm9kZU1hcDo6YXR0cmlidXRlSXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gV2ViQXR0cmlidXRlKG1fcHJpdmF0ZS0+YXR0cmlidXRlSXRlbShpbmRleCkpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYktpdC9j
aHJvbWl1bS9zcmMvV2ViTmFtZWROb2RlTWFwLmNwcApfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9s
LXN0eWxlCiAgICsgTEYKCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlJlbmRlclN0eWxl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlJlbmRlclN0eWxlLmNw
cAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViUmVuZGVyU3R5bGUuY3Bw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIldlYlJlbmRlclN0eWxlLmgiCisKKyNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZU1hcHBp
bmdzLmgiCisjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgorCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OworCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBXZWJSZW5kZXJTdHlsZTo6cmVzZXQoKQor
eworICAgIGFzc2lnbigwKTsKK30KKwordm9pZCBXZWJSZW5kZXJTdHlsZTo6YXNzaWduKGNvbnN0
IFdlYlJlbmRlclN0eWxlJiBvdGhlcikKK3sKKyAgICBSZW5kZXJTdHlsZSogcCA9IGNvbnN0X2Nh
c3Q8UmVuZGVyU3R5bGUqPihvdGhlci5tX3ByaXZhdGUpOworICAgIGlmIChwKQorICAgICAgICBw
LT5yZWYoKTsKKyAgICBhc3NpZ24ocCk7Cit9CisKK1dlYlJlbmRlclN0eWxlOjpXZWJSZW5kZXJT
dHlsZShjb25zdCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiYgY29sKQorICAgIDogbV9wcml2YXRl
KHN0YXRpY19jYXN0PFJlbmRlclN0eWxlKj4oY29sLnJlbGVhc2VSZWYoKSkpCit7Cit9CisKK3Zv
aWQgV2ViUmVuZGVyU3R5bGU6OmFzc2lnbihSZW5kZXJTdHlsZSogcCkKK3sKKyAgICAvLyBwIGlz
IGFscmVhZHkgcmVmJ2QgZm9yIHVzIGJ5IHRoZSBjYWxsZXIKKyAgICBpZiAobV9wcml2YXRlKQor
ICAgICAgICBtX3ByaXZhdGUtPmRlcmVmKCk7CisgICAgbV9wcml2YXRlID0gcDsKK30KKworV2Vi
U3RyaW5nIFdlYlJlbmRlclN0eWxlOjpkaXNwbGF5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2Vi
U3RyaW5nKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobV9wcml2YXRlLT5kaXNwbGF5KCkpLT5n
ZXRTdHJpbmdWYWx1ZSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CgpQcm9wZXJ0eSBj
aGFuZ2VzIG9uOiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlJlbmRlclN0eWxlLmNwcApfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCg==
</data>
<flag name="review"
          id="48781"
          type_id="1"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60941</attachid>
            <date>2010-07-08 13:16:18 -0700</date>
            <delta_ts>2010-07-09 13:17:59 -0700</delta_ts>
            <desc>Added new accessors to WebNode and WebElement also</desc>
            <filename>patch44</filename>
            <type>text/plain</type>
            <size>36146</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjI4MjMpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjUgQEAKKzIwMTAtMDctMDggIERvbWlu
aWMgTWF6em9uaSAgPGRtYXp6b25pQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG1ldGhvZHMgdG8gV2ViQWNjZXNzaWJpbGl0
eU9iamVjdCB0byBhY2Nlc3MgdGhlIE5vZGUgYW5kCisgICAgICAgIERvY3VtZW50LCBhbmQgdGhl
biBhZGQgbWV0aG9kcyB0byBhY2Nlc3Mgc29tZSBkb2N1bWVudCwgbm9kZSwKKyAgICAgICAgYW5k
IGVsZW1lbnQgcHJvcGVydGllcyBuZWVkZWQgZm9yIFdpbmRvd3MgYWNjZXNzaWJpbGl0eS4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE1NjkKKwor
ICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3QuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViQXR0cmlidXRlLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJBdHRyaWJ1dGU6On5XZWJBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJBdHRyaWJ1dGU6OldlYkF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF0dHJp
YnV0ZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKiBwdWJsaWMvV2ViRG9jdW1lbnRUeXBlLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJEb2N1bWVudFR5cGU6OldlYkRvY3VtZW50VHlwZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkRvY3VtZW50VHlwZTo6b3BlcmF0b3I9KToKKyAgICAgICAg
KFdlYktpdDo6V2ViRG9jdW1lbnRUeXBlOjphc3NpZ24pOgorICAgICAgICAqIHB1YmxpYy9XZWJF
bGVtZW50Lmg6CisgICAgICAgICogcHVibGljL1dlYk5hbWVkTm9kZU1hcC5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViTmFtZWROb2RlTWFwOjp+V2ViTmFtZWROb2RlTWFwKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTmFtZWROb2RlTWFwOjpXZWJOYW1lZE5vZGVNYXApOgorICAgICAgICAo
V2ViS2l0OjpXZWJOYW1lZE5vZGVNYXA6Om9wZXJhdG9yPSk6CisgICAgICAgICogcHVibGljL1dl
Yk5vZGUuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViUmVuZGVyU3R5bGUuaDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlJlbmRlclN0eWxlOjp+V2ViUmVuZGVyU3R5bGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZW5kZXJTdHlsZTo6V2ViUmVuZGVyU3R5bGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZW5kZXJTdHlsZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKiBzcmMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6
Om5vZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpkb2N1bWVu
dCk6CisgICAgICAgICogc3JjL1dlYkF0dHJpYnV0ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJBdHRyaWJ1dGU6OnJlc2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXR0cmlidXRl
Ojphc3NpZ24pOgorICAgICAgICAoV2ViS2l0OjpXZWJBdHRyaWJ1dGU6OldlYkF0dHJpYnV0ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkF0dHJpYnV0ZTo6bG9jYWxOYW1lKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQXR0cmlidXRlOjp2YWx1ZSk6CisgICAgICAgICogc3JjL1dlYkRvY3VtZW50VHlw
ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJEb2N1bWVudFR5cGU6Om5hbWUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJEb2N1bWVudFR5cGU6OldlYkRvY3VtZW50VHlwZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkRvY3VtZW50VHlwZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYktp
dDo6V2ViRG9jdW1lbnRUeXBlOjpvcGVyYXRvciBQYXNzUmVmUHRyPERvY3VtZW50VHlwZT4pOgor
ICAgICAgICAqIHNyYy9XZWJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWxlbWVu
dDo6YXR0cmlidXRlcyk6CisgICAgICAgICogc3JjL1dlYk5hbWVkTm9kZU1hcC5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJOYW1lZE5vZGVNYXA6OnJlc2V0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViTmFtZWROb2RlTWFwOjphc3NpZ24pOgorICAgICAgICAoV2ViS2l0OjpXZWJOYW1l
ZE5vZGVNYXA6OldlYk5hbWVkTm9kZU1hcCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5hbWVkTm9k
ZU1hcDo6bGVuZ3RoKToKKyAgICAgICAgKFdlYktpdDo6V2ViTmFtZWROb2RlTWFwOjphdHRyaWJ1
dGVJdGVtKToKKyAgICAgICAgKiBzcmMvV2ViTm9kZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
Yk5vZGU6OmVsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb2RlOjpoYXNDb21wdXRlZFN0
eWxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm9kZTo6Y29tcHV0ZWRTdHlsZSk6CisgICAgICAg
ICogc3JjL1dlYlJlbmRlclN0eWxlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlJl
bmRlclN0eWxlOjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlbmRlclN0eWxlOjphc3Np
Z24pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZW5kZXJTdHlsZTo6V2ViUmVuZGVyU3R5bGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZW5kZXJTdHlsZTo6ZGlzcGxheSk6CisKIDIwMTAtMDctMDgg
IFZpdGFseSBSZXBlc2hrbyAgPHZpdGFseXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFBhdmVsIEZlbGRtYW4uCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNpb24gNjI3OTQp
CisrKyBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkod29ya2luZyBjb3B5KQpAQCAtODQsNiAr
ODQsNyBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQW5pbWF0aW9uQ29udHJvbGxlci5o
JywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0LmgnLAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQXBwbGljYXRpb25DYWNoZUhvc3RDbGllbnQuaCcs
CisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJBdHRyaWJ1dGUuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJCaW5kaW5ncy5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkNh
Y2hlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQ2FudmFzLmgnLApAQCAtMTEyLDYg
KzExMyw3IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEZXZUb29sc01lc3NhZ2VEYXRh
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRGV2VG9vbHNNZXNzYWdlVHJhbnNwb3J0
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRG9jdW1lbnQuaCcsCisgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJEb2N1bWVudFR5cGUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJEcmFnRGF0YS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkVkaXRpbmdBY3Rp
b24uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJFbGVtZW50LmgnLApAQCAtMTU3LDYg
KzE1OSw3IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJNZXNzYWdlUG9ydENoYW5uZWxD
bGllbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJNaW1lUmVnaXN0cnkuaCcsCiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJNdXRhdGlvbkV2ZW50LmgnLAorICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViTmFtZWROb2RlTWFwLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViTmF2aWdhdGlvblR5cGUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJOb2RlLmgn
LAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViTm9kZUNvbGxlY3Rpb24uaCcsCkBAIC0xODAs
NiArMTgzLDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlByaXZhdGVQdHIuaCcsCiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJSYW5nZS5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYlJlY3QuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJSZW5kZXJTdHlsZS5o
JywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlJlZ3VsYXJFeHByZXNzaW9uLmgnLAogICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViUnVudGltZUZlYXR1cmVzLmgnLAogICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViU2Nyb2xsYmFyLmgnLApAQCAtMzE2LDYgKzMyMCw3IEBACiAgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCcsCiAgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJBbmltYXRpb25Db250cm9sbGVySW1wbC5jcHAnLAogICAgICAgICAgICAgICAg
ICdzcmMvV2ViQW5pbWF0aW9uQ29udHJvbGxlckltcGwuaCcsCisgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJBdHRyaWJ1dGUuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkJpbmRpbmdzLmNw
cCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJDYWNoZS5jcHAnLAogICAgICAgICAgICAgICAg
ICdzcmMvV2ViQ29sb3IuY3BwJywKQEAgLTMzMyw2ICszMzgsNyBAQAogICAgICAgICAgICAgICAg
ICdzcmMvV2ViRGV2VG9vbHNGcm9udGVuZEltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3Jj
L1dlYkRldlRvb2xzRnJvbnRlbmRJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRG9j
dW1lbnQuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYkRvY3VtZW50VHlwZS5jcHAnLAog
ICAgICAgICAgICAgICAgICdzcmMvV2ViRHJhZ0RhdGEuY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYkVsZW1lbnQuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkVudGl0aWVzLmNw
cCcsCkBAIC0zODAsNiArMzg2LDcgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYk1lZGlhUGxh
eWVyQ2xpZW50SW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViTWVkaWFQbGF5ZXJD
bGllbnRJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViTXV0YXRpb25FdmVudC5jcHAn
LAorICAgICAgICAgICAgICAgICdzcmMvV2ViTmFtZWROb2RlTWFwLmNwcCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9XZWJOb2RlLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJOb2RlQ29s
bGVjdGlvbi5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViTm9kZUxpc3QuY3BwJywKQEAg
LTQwMSw2ICs0MDgsNyBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViUG9wdXBNZW51SW1wbC5o
JywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlJhbmdlLmNwcCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJSZWd1bGFyRXhwcmVzc2lvbi5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2Vi
UmVuZGVyU3R5bGUuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlJ1bnRpbWVGZWF0dXJl
cy5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU2NyaXB0Q29udHJvbGxlci5jcHAnLAog
ICAgICAgICAgICAgICAgICdzcmMvV2ViU2Nyb2xsYmFySW1wbC5jcHAnLApAQCAtNjA0LDcgKzYx
Miw2IEBACiAgICAgICAgICAgICAndHlwZSc6ICdleGVjdXRhYmxlJywKICAgICAgICAgICAgICdt
YWNfYnVuZGxlJzogMSwKICAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiBbCi0gICAgICAgICAg
ICAgICAgJ0ltYWdlRGlmZicsCiAgICAgICAgICAgICAgICAgJ3dlYmtpdCcsCiAgICAgICAgICAg
ICAgICAgJy4uLy4uL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cC9KYXZhU2NyaXB0
Q29yZS5neXA6d3RmX2NvbmZpZycsCiAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rp
cikvdGhpcmRfcGFydHkvaWN1L2ljdS5neXA6aWN1dWMnLApJbmRleDogV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHJldmlzaW9uIDYyNzk0KQor
KysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTQyLDYgKzQyLDggQEAgbmFtZXNwYWNlIFdURiB7IHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBjbAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkFjY2Vzc2liaWxpdHlP
YmplY3RQcml2YXRlOworY2xhc3MgV2ViTm9kZTsKK2NsYXNzIFdlYkRvY3VtZW50OwogY2xhc3Mg
V2ViU3RyaW5nOwogc3RydWN0IFdlYlBvaW50Owogc3RydWN0IFdlYlJlY3Q7CkBAIC0xMDMsNiAr
MTA1LDkgQEAgcHVibGljOgogICAgIFdFQktJVF9BUEkgV2ViU3RyaW5nIHN0cmluZ1ZhbHVlKCkg
Y29uc3Q7CiAgICAgV0VCS0lUX0FQSSBXZWJTdHJpbmcgdGl0bGUoKSBjb25zdDsKIAorICAgIFdF
QktJVF9BUEkgV2ViTm9kZSBub2RlKCkgY29uc3Q7CisgICAgV0VCS0lUX0FQSSBXZWJEb2N1bWVu
dCBkb2N1bWVudCgpIGNvbnN0OworCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCiAgICAgV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdChjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdD4mKTsKICAgICBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvcGVyYXRvcj0o
Y29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q+Jik7Cklu
ZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkF0dHJpYnV0ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQXR0cmlidXRlLmgJKHJldmlzaW9uIDApCisrKyBX
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkF0dHJpYnV0ZS5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXZWJBdHRyaWJ1dGVfaAorI2RlZmluZSBXZWJBdHRyaWJ1dGVfaAor
CisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgQXR0
cmlidXRlOyB9CisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCituYW1lc3BhY2UgV1RGIHsgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFBhc3NSZWZQdHI7IH0KKyNlbmRpZgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKK2NsYXNzIFdlYlN0cmluZzsKKworLy8gUHJvdmlkZXMgcmVhZG9ubHkgYWNj
ZXNzIHRvIHNvbWUgcHJvcGVydGllcyBvZiBhIERPTSBhdHRyaWJ1dGUuCitjbGFzcyBXZWJBdHRy
aWJ1dGUgeworcHVibGljOgorICAgIH5XZWJBdHRyaWJ1dGUoKSB7IHJlc2V0KCk7IH0KKworICAg
IFdlYkF0dHJpYnV0ZSgpIDogbV9wcml2YXRlKDApIHsgfQorICAgIFdlYkF0dHJpYnV0ZShjb25z
dCBXZWJBdHRyaWJ1dGUmIG4pIDogbV9wcml2YXRlKDApIHsgYXNzaWduKG4pOyB9CisgICAgV2Vi
QXR0cmlidXRlJiBvcGVyYXRvcj0oY29uc3QgV2ViQXR0cmlidXRlJiBuKQorICAgIHsKKyAgICAg
ICAgYXNzaWduKG4pOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgV0VCS0lU
X0FQSSB2b2lkIHJlc2V0KCk7CisgICAgV0VCS0lUX0FQSSB2b2lkIGFzc2lnbihjb25zdCBXZWJB
dHRyaWJ1dGUmKTsKKworICAgIFdFQktJVF9BUEkgV2ViU3RyaW5nIGxvY2FsTmFtZSgpIGNvbnN0
OworICAgIFdFQktJVF9BUEkgV2ViU3RyaW5nIHZhbHVlKCkgY29uc3Q7CisKKyNpZiBXRUJLSVRf
SU1QTEVNRU5UQVRJT04KKyAgICBXZWJBdHRyaWJ1dGUoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdl
YkNvcmU6OkF0dHJpYnV0ZT4mKTsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIHZvaWQgYXNzaWdu
KFdlYkNvcmU6OkF0dHJpYnV0ZSopOworICAgIFdlYkNvcmU6OkF0dHJpYnV0ZSogbV9wcml2YXRl
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgoKUHJvcGVydHkgY2hhbmdl
cyBvbjogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBdHRyaWJ1dGUuaApfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFk
ZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkRvY3VtZW50VHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViRG9jdW1lbnRUeXBlLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkRvY3VtZW50VHlwZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWJEb2N1bWVudFR5cGVfaAorI2RlZmluZSBXZWJEb2N1bWVudFR5cGVfaAorCisjaW5jbHVkZSAi
V2ViTm9kZS5oIgorCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCituYW1lc3BhY2UgV2ViQ29y
ZSB7IGNsYXNzIERvY3VtZW50VHlwZTsgfQorbmFtZXNwYWNlIFdURiB7IHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBjbGFzcyBQYXNzUmVmUHRyOyB9CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7
CitjbGFzcyBXZWJTdHJpbmc7CisKKy8vIFByb3ZpZGVzIHJlYWRvbmx5IGFjY2VzcyB0byBzb21l
IHByb3BlcnRpZXMgb2YgYSBET00gZG9jdW1lbnQgdHlwZS4KK2NsYXNzIFdlYkRvY3VtZW50VHlw
ZSA6IHB1YmxpYyBXZWJOb2RlIHsKK3B1YmxpYzoKKyAgICBXZWJEb2N1bWVudFR5cGUoKSB7IH0K
KyAgICBXZWJEb2N1bWVudFR5cGUoY29uc3QgV2ViRG9jdW1lbnRUeXBlJiBlKSA6IFdlYk5vZGUo
ZSkgeyB9CisKKyAgICBXZWJEb2N1bWVudFR5cGUmIG9wZXJhdG9yPShjb25zdCBXZWJEb2N1bWVu
dFR5cGUmIGUpCisgICAgeworICAgICAgICBXZWJOb2RlOjphc3NpZ24oZSk7CisgICAgICAgIHJl
dHVybiAqdGhpczsKKyAgICB9CisgICAgdm9pZCBhc3NpZ24oY29uc3QgV2ViRG9jdW1lbnRUeXBl
JiBlKSB7IFdlYk5vZGU6OmFzc2lnbihlKTsgfQorCisgICAgV0VCS0lUX0FQSSBXZWJTdHJpbmcg
bmFtZSgpIGNvbnN0OworCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViRG9jdW1l
bnRUeXBlKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudFR5cGU+Jik7Cisg
ICAgV2ViRG9jdW1lbnRUeXBlJiBvcGVyYXRvcj0oY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNv
cmU6OkRvY3VtZW50VHlwZT4mKTsKKyAgICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29y
ZTo6RG9jdW1lbnRUeXBlPigpIGNvbnN0OworI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkRvY3VtZW50VHlwZS5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAg
KyBMRgoKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRWxlbWVudC5oCShyZXZpc2lvbiA2Mjc5
NCkKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOCw2ICszOCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgRWxlbWVudDsgfQog
I2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViTmFtZWROb2RlTWFwOworCiAg
ICAgLy8gUHJvdmlkZXMgYWNjZXNzIHRvIHNvbWUgcHJvcGVydGllcyBvZiBhIERPTSBlbGVtZW50
IG5vZGUuCiAgICAgY2xhc3MgV2ViRWxlbWVudCA6IHB1YmxpYyBXZWJOb2RlIHsKICAgICBwdWJs
aWM6CkBAIC01Myw2ICs1NSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAgICBXRUJLSVRf
QVBJIGJvb2wgaGFzQXR0cmlidXRlKGNvbnN0IFdlYlN0cmluZyYpIGNvbnN0OwogICAgICAgICBX
RUJLSVRfQVBJIFdlYlN0cmluZyBnZXRBdHRyaWJ1dGUoY29uc3QgV2ViU3RyaW5nJikgY29uc3Q7
CiAgICAgICAgIFdFQktJVF9BUEkgYm9vbCBzZXRBdHRyaWJ1dGUoY29uc3QgV2ViU3RyaW5nJiBu
YW1lLCBjb25zdCBXZWJTdHJpbmcmIHZhbHVlKTsKKyAgICAgICAgV0VCS0lUX0FQSSBXZWJOYW1l
ZE5vZGVNYXAgYXR0cmlidXRlcygpIGNvbnN0OwogICAgICAgICBXRUJLSVRfQVBJIFdlYlN0cmlu
ZyBpbm5lclRleHQoKSBjb25zdDsKIAogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgpJbmRleDog
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJOYW1lZE5vZGVNYXAuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk5hbWVkTm9kZU1hcC5oCShyZXZpc2lvbiAwKQorKysg
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJOYW1lZE5vZGVNYXAuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViTmFtZWROb2RlTWFwX2gKKyNkZWZpbmUgV2ViTmFtZWRO
b2RlTWFwX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
IGNsYXNzIE5hbWVkTm9kZU1hcDsgfQorI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorbmFtZXNw
YWNlIFdURiB7IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBQYXNzUmVmUHRyOyB9CisjZW5k
aWYKKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJBdHRyaWJ1dGU7CisKKy8vIFByb3Zp
ZGVzIHJlYWRvbmx5IGFjY2VzcyB0byBzb21lIHByb3BlcnRpZXMgb2YgYSBET00gYXR0cmlidXRl
IG1hcC4KK2NsYXNzIFdlYk5hbWVkTm9kZU1hcCB7CitwdWJsaWM6CisgICAgfldlYk5hbWVkTm9k
ZU1hcCgpIHsgcmVzZXQoKTsgfQorCisgICAgV2ViTmFtZWROb2RlTWFwKCkgOiBtX3ByaXZhdGUo
MCkgeyB9CisgICAgV2ViTmFtZWROb2RlTWFwKGNvbnN0IFdlYk5hbWVkTm9kZU1hcCYgbikgOiBt
X3ByaXZhdGUoMCkgeyBhc3NpZ24obik7IH0KKyAgICBXZWJOYW1lZE5vZGVNYXAmIG9wZXJhdG9y
PShjb25zdCBXZWJOYW1lZE5vZGVNYXAmIG4pCisgICAgeworICAgICAgICBhc3NpZ24obik7Cisg
ICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBXRUJLSVRfQVBJIHZvaWQgcmVzZXQo
KTsKKyAgICBXRUJLSVRfQVBJIHZvaWQgYXNzaWduKGNvbnN0IFdlYk5hbWVkTm9kZU1hcCYpOwor
CisgICAgV0VCS0lUX0FQSSB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKKyAgICBXRUJLSVRfQVBJ
IFdlYkF0dHJpYnV0ZSBhdHRyaWJ1dGVJdGVtKHVuc2lnbmVkKSBjb25zdDsKKworI2lmIFdFQktJ
VF9JTVBMRU1FTlRBVElPTgorICAgIFdlYk5hbWVkTm9kZU1hcChjb25zdCBXVEY6OlBhc3NSZWZQ
dHI8V2ViQ29yZTo6TmFtZWROb2RlTWFwPiYpOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgdm9p
ZCBhc3NpZ24oV2ViQ29yZTo6TmFtZWROb2RlTWFwKik7CisgICAgV2ViQ29yZTo6TmFtZWROb2Rl
TWFwKiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCgpQ
cm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk5hbWVkTm9kZU1h
cC5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFdlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViTm9kZS5oCShyZXZpc2lvbiA2Mjc5NCkKKysrIFdlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCArMzksMTIgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgeyBjbGFzcyBOb2RlOyB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3Mg
V2ViRG9jdW1lbnQ7CitjbGFzcyBXZWJFbGVtZW50OwogY2xhc3MgV2ViRXZlbnRMaXN0ZW5lcjsK
IGNsYXNzIFdlYkV2ZW50TGlzdGVuZXJQcml2YXRlOwogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBX
ZWJOb2RlTGlzdDsKK2NsYXNzIFdlYlJlbmRlclN0eWxlOwogCiAvLyBQcm92aWRlcyBhY2Nlc3Mg
dG8gc29tZSBwcm9wZXJ0aWVzIG9mIGEgRE9NIG5vZGUuCiBjbGFzcyBXZWJOb2RlIHsKQEAgLTk4
LDYgKzEwMCw5IEBAIHB1YmxpYzoKICAgICBXRUJLSVRfQVBJIHZvaWQgcmVtb3ZlRXZlbnRMaXN0
ZW5lcihjb25zdCBXZWJTdHJpbmcmIGV2ZW50VHlwZSwgV2ViRXZlbnRMaXN0ZW5lciogbGlzdGVu
ZXIsIGJvb2wgdXNlQ2FwdHVyZSk7CiAgICAgV0VCS0lUX0FQSSB2b2lkIHNpbXVsYXRlQ2xpY2so
KTsKICAgICBXRUJLSVRfQVBJIFdlYk5vZGVMaXN0IGdldEVsZW1lbnRzQnlUYWdOYW1lKGNvbnN0
IFdlYlN0cmluZyYpIGNvbnN0OworICAgIFdFQktJVF9BUEkgV2ViRWxlbWVudCBlbGVtZW50KCkg
Y29uc3Q7CisgICAgV0VCS0lUX0FQSSBib29sIGhhc0NvbXB1dGVkU3R5bGUoKSBjb25zdDsKKyAg
ICBXRUJLSVRfQVBJIFdlYlJlbmRlclN0eWxlIGNvbXB1dGVkU3R5bGUoKSBjb25zdDsKIAogICAg
IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgbm9kZSBoYXMgYSBub24tZW1wdHkgYm91bmRpbmcgYm94
IGluIGxheW91dC4KICAgICAvLyBUaGlzIGRvZXMgbm90IDEwMCUgZ3VhcmFudGVlIHRoZSB1c2Vy
IGNhbiBzZWUgaXQsIGJ1dCBpcyBwcmV0dHkgY2xvc2UuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlJlbmRlclN0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJSZW5kZXJTdHlsZS5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJSZW5kZXJTdHlsZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDczIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXZWJSZW5kZXJTdHlsZV9oCisjZGVmaW5lIFdlYlJlbmRlclN0eWxlX2gKKworI2luY2x1ZGUg
IldlYkNvbW1vbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIFJlbmRlclN0eWxlOyB9
CisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCituYW1lc3BhY2UgV1RGIHsgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IGNsYXNzIFBhc3NSZWZQdHI7IH0KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0
IHsKK2NsYXNzIFdlYlN0cmluZzsKKworLy8gUHJvdmlkZXMgcmVhZG9ubHkgYWNjZXNzIHRvIHNv
bWUgcHJvcGVydGllcyBvZiBhIERPTSBub2RlJ3Mgc3R5bGUuCitjbGFzcyBXZWJSZW5kZXJTdHls
ZSB7CitwdWJsaWM6CisgICAgfldlYlJlbmRlclN0eWxlKCkgeyByZXNldCgpOyB9CisKKyAgICBX
ZWJSZW5kZXJTdHlsZSgpIDogbV9wcml2YXRlKDApIHsgfQorICAgIFdlYlJlbmRlclN0eWxlKGNv
bnN0IFdlYlJlbmRlclN0eWxlJiBuKSA6IG1fcHJpdmF0ZSgwKSB7IGFzc2lnbihuKTsgfQorICAg
IFdlYlJlbmRlclN0eWxlJiBvcGVyYXRvcj0oY29uc3QgV2ViUmVuZGVyU3R5bGUmIG4pCisgICAg
eworICAgICAgICBhc3NpZ24obik7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAg
ICBXRUJLSVRfQVBJIHZvaWQgcmVzZXQoKTsKKyAgICBXRUJLSVRfQVBJIHZvaWQgYXNzaWduKGNv
bnN0IFdlYlJlbmRlclN0eWxlJik7CisKKyAgICBXRUJLSVRfQVBJIFdlYlN0cmluZyBkaXNwbGF5
KCkgY29uc3Q7CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJSZW5kZXJTdHls
ZShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6UmVuZGVyU3R5bGU+Jik7CisjZW5kaWYK
KworcHJpdmF0ZToKKyAgICB2b2lkIGFzc2lnbihXZWJDb3JlOjpSZW5kZXJTdHlsZSopOworICAg
IFdlYkNvcmU6OlJlbmRlclN0eWxlKiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlJlbmRlclN0eWxlLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICAr
IExGCgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3QuY3BwCShyZXZpc2lvbiA2Mjc5NCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDkgKzMyLDEzIEBACiAjaW5j
bHVkZSAiV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5oIgogCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0
eU9iamVjdC5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCIKICNpbmNs
dWRlICJFdmVudEhhbmRsZXIuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJO
b2RlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCisjaW5jbHVkZSAiV2Vi
RG9jdW1lbnQuaCIKKyNpbmNsdWRlICJXZWJOb2RlLmgiCiAjaW5jbHVkZSAiV2ViUG9pbnQuaCIK
ICNpbmNsdWRlICJXZWJSZWN0LmgiCiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCkBAIC00MDEsNiAr
NDA1LDM5IEBAIFdlYlN0cmluZyBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp0aXRsZSgKICAgICBy
ZXR1cm4gbV9wcml2YXRlLT50aXRsZSgpOwogfQogCisKK1dlYk5vZGUgV2ViQWNjZXNzaWJpbGl0
eU9iamVjdDo6bm9kZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3ByaXZhdGUpCisgICAgICAgIHJl
dHVybiBXZWJOb2RlKCk7CisKKyAgICBtX3ByaXZhdGUtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwor
CisgICAgaWYgKCFtX3ByaXZhdGUtPmlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpKQorICAg
ICAgICByZXR1cm4gV2ViTm9kZSgpOworCisgICAgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCog
cmVuZGVyT2JqZWN0ID0KKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0Kj4obV9wcml2YXRlKTsKKyAgICBOb2RlKiBub2RlID0gcmVuZGVyT2JqZWN0LT5u
b2RlKCk7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4gV2ViTm9kZSgpOworCisgICAg
cmV0dXJuIFdlYk5vZGUobm9kZSk7Cit9CisKK1dlYkRvY3VtZW50IFdlYkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmRvY3VtZW50KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcHJpdmF0ZSkKKyAgICAgICAg
cmV0dXJuIFdlYkRvY3VtZW50KCk7CisKKyAgICBtX3ByaXZhdGUtPnVwZGF0ZUJhY2tpbmdTdG9y
ZSgpOworCisgICAgaWYgKCFtX3ByaXZhdGUtPmlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgp
KQorICAgICAgICByZXR1cm4gV2ViRG9jdW1lbnQoKTsKKworICAgIHJldHVybiBXZWJEb2N1bWVu
dChtX3ByaXZhdGUtPmRvY3VtZW50KCkpOworfQorCiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OjpX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0PiYgb2JqZWN0KQogICAgIDogbV9wcml2YXRlKHN0YXRpY19jYXN0PFdl
YkFjY2Vzc2liaWxpdHlPYmplY3RQcml2YXRlKj4ob2JqZWN0LnJlbGVhc2VSZWYoKSkpCiB7Cklu
ZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkF0dHJpYnV0ZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBdHRyaWJ1dGUuY3BwCShyZXZpc2lvbiAwKQorKysgV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJBdHRyaWJ1dGUuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkF0dHJpYnV0ZS5oIgorCisj
aW5jbHVkZSAiQXR0cmlidXRlLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworI2lu
Y2x1ZGUgIldlYlN0cmluZy5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK3ZvaWQgV2ViQXR0cmlidXRlOjpyZXNldCgpCit7CisgICAgYXNzaWdu
KDApOworfQorCit2b2lkIFdlYkF0dHJpYnV0ZTo6YXNzaWduKGNvbnN0IFdlYkF0dHJpYnV0ZSYg
b3RoZXIpCit7CisgICAgQXR0cmlidXRlKiBwID0gY29uc3RfY2FzdDxBdHRyaWJ1dGUqPihvdGhl
ci5tX3ByaXZhdGUpOworICAgIGlmIChwKQorICAgICAgICBwLT5yZWYoKTsKKyAgICBhc3NpZ24o
cCk7Cit9CisKK1dlYkF0dHJpYnV0ZTo6V2ViQXR0cmlidXRlKGNvbnN0IFBhc3NSZWZQdHI8QXR0
cmlidXRlPiYgY29sKQorICAgIDogbV9wcml2YXRlKHN0YXRpY19jYXN0PEF0dHJpYnV0ZSo+KGNv
bC5yZWxlYXNlUmVmKCkpKQoreworfQorCit2b2lkIFdlYkF0dHJpYnV0ZTo6YXNzaWduKEF0dHJp
YnV0ZSogcCkKK3sKKyAgICAvLyBwIGlzIGFscmVhZHkgcmVmJ2QgZm9yIHVzIGJ5IHRoZSBjYWxs
ZXIKKyAgICBpZiAobV9wcml2YXRlKQorICAgICAgICBtX3ByaXZhdGUtPmRlcmVmKCk7CisgICAg
bV9wcml2YXRlID0gcDsKK30KKworV2ViU3RyaW5nIFdlYkF0dHJpYnV0ZTo6bG9jYWxOYW1lKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gV2ViU3RyaW5nKG1fcHJpdmF0ZS0+bG9jYWxOYW1lKCkpOwor
fQorCitXZWJTdHJpbmcgV2ViQXR0cmlidXRlOjp2YWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IFdlYlN0cmluZyhtX3ByaXZhdGUtPnZhbHVlKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViQXR0cmlidXRl
LmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBXZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkRvY3VtZW50VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJEb2N1bWVudFR5cGUuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJEb2N1bWVudFR5cGUuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkRvY3VtZW50VHlwZS5oIgor
CisjaW5jbHVkZSAiRG9jdW1lbnRUeXBlLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisKKyNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlN0cmluZyBXZWJEb2N1bWVudFR5cGU6Om5hbWUoKSBj
b25zdAoreworICAgIHJldHVybiBXZWJTdHJpbmcoY29uc3RVbndyYXA8RG9jdW1lbnRUeXBlPigp
LT5uYW1lKCkpOworfQorCitXZWJEb2N1bWVudFR5cGU6OldlYkRvY3VtZW50VHlwZShjb25zdCBQ
YXNzUmVmUHRyPERvY3VtZW50VHlwZT4mIGVsZW0pCisgICAgOiBXZWJOb2RlKGVsZW0pCit7Cit9
CisKK1dlYkRvY3VtZW50VHlwZSYgV2ViRG9jdW1lbnRUeXBlOjpvcGVyYXRvcj0oY29uc3QgUGFz
c1JlZlB0cjxEb2N1bWVudFR5cGU+JiBlbGVtKQoreworICAgIG1fcHJpdmF0ZSA9IGVsZW07Cisg
ICAgcmV0dXJuICp0aGlzOworfQorCitXZWJEb2N1bWVudFR5cGU6Om9wZXJhdG9yIFBhc3NSZWZQ
dHI8RG9jdW1lbnRUeXBlPigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERvY3Vt
ZW50VHlwZSo+KG1fcHJpdmF0ZS5nZXQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAoK
UHJvcGVydHkgY2hhbmdlcyBvbjogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEb2N1bWVudFR5cGUu
Y3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFdlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJFbGVtZW50LmNwcAkocmV2aXNpb24gNjI3OTQpCisrKyBXZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw4IEBACiAj
aW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAor
I2luY2x1ZGUgIldlYk5hbWVkTm9kZU1hcC5oIgorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC03Myw2ICs3NSwxMSBAQCBib29sIFdlYkVsZW1lbnQ6
OnNldEF0dHJpYnV0ZShjb25zdCBXZWJTCiAgICAgcmV0dXJuICFleGNlcHRpb25Db2RlOwogfQog
CitXZWJOYW1lZE5vZGVNYXAgV2ViRWxlbWVudDo6YXR0cmlidXRlcygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIFdlYk5hbWVkTm9kZU1hcChtX3ByaXZhdGUtPmF0dHJpYnV0ZXMoKSk7Cit9CisKIFdl
YlN0cmluZyBXZWJFbGVtZW50Ojppbm5lclRleHQoKSBjb25zdAogewogICAgIHJldHVybiBjb25z
dFVud3JhcDxFbGVtZW50PigpLT5pbm5lclRleHQoKTsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9z
cmMvV2ViTmFtZWROb2RlTWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYk5hbWVkTm9kZU1hcC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYk5hbWVkTm9kZU1hcC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViTmFtZWROb2RlTWFwLmgiCisKKyNpbmNsdWRlICJO
YW1lZE5vZGVNYXAuaCIKKyNpbmNsdWRlICJOb2RlLmgiCisjaW5jbHVkZSAiV2ViQXR0cmlidXRl
LmgiCisjaW5jbHVkZSAiV2ViTm9kZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBX
ZWJOYW1lZE5vZGVNYXA6OnJlc2V0KCkKK3sKKyAgICBhc3NpZ24oMCk7Cit9CisKK3ZvaWQgV2Vi
TmFtZWROb2RlTWFwOjphc3NpZ24oY29uc3QgV2ViTmFtZWROb2RlTWFwJiBvdGhlcikKK3sKKyAg
ICBOYW1lZE5vZGVNYXAqIHAgPSBjb25zdF9jYXN0PE5hbWVkTm9kZU1hcCo+KG90aGVyLm1fcHJp
dmF0ZSk7CisgICAgaWYgKHApCisgICAgICAgIHAtPnJlZigpOworICAgIGFzc2lnbihwKTsKK30K
KworV2ViTmFtZWROb2RlTWFwOjpXZWJOYW1lZE5vZGVNYXAoY29uc3QgUGFzc1JlZlB0cjxOYW1l
ZE5vZGVNYXA+JiBjb2wpCisgICAgOiBtX3ByaXZhdGUoc3RhdGljX2Nhc3Q8TmFtZWROb2RlTWFw
Kj4oY29sLnJlbGVhc2VSZWYoKSkpCit7Cit9CisKK3ZvaWQgV2ViTmFtZWROb2RlTWFwOjphc3Np
Z24oTmFtZWROb2RlTWFwKiBwKQoreworICAgIC8vIHAgaXMgYWxyZWFkeSByZWYnZCBmb3IgdXMg
YnkgdGhlIGNhbGxlcgorICAgIGlmIChtX3ByaXZhdGUpCisgICAgICAgIG1fcHJpdmF0ZS0+ZGVy
ZWYoKTsKKyAgICBtX3ByaXZhdGUgPSBwOworfQorCit1bnNpZ25lZCBXZWJOYW1lZE5vZGVNYXA6
Omxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bGVuZ3RoKCk7Cit9CisK
K1dlYkF0dHJpYnV0ZSBXZWJOYW1lZE5vZGVNYXA6OmF0dHJpYnV0ZUl0ZW0odW5zaWduZWQgaW5k
ZXgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYkF0dHJpYnV0ZShtX3ByaXZhdGUtPmF0dHJpYnV0
ZUl0ZW0oaW5kZXgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CgpQcm9wZXJ0eSBjaGFu
Z2VzIG9uOiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYk5hbWVkTm9kZU1hcC5jcHAKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJOb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYk5vZGUu
Y3BwCShyZXZpc2lvbiA2Mjc5NCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViTm9kZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMyLDE3ICszMiwyMSBAQAogI2luY2x1ZGUgIldlYk5vZGUuaCIK
IAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAi
Tm9kZS5oIgogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCisjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIK
IAogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXJXcmFwcGVyLmgiCiAjaW5jbHVkZSAiV2ViRG9jdW1l
bnQuaCIKKyNpbmNsdWRlICJXZWJFbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViRXZlbnQuaCIKICNp
bmNsdWRlICJXZWJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgiCiAj
aW5jbHVkZSAiV2ViTm9kZUxpc3QuaCIKKyNpbmNsdWRlICJXZWJSZW5kZXJTdHlsZS5oIgogI2lu
Y2x1ZGUgIldlYlN0cmluZy5oIgogI2luY2x1ZGUgIldlYlZlY3Rvci5oIgogCkBAIC0xNzMsNiAr
MTc3LDI0IEBAIFdlYk5vZGVMaXN0IFdlYk5vZGU6OmdldEVsZW1lbnRzQnlUYWdOYW0KICAgICBy
ZXR1cm4gV2ViTm9kZUxpc3QobV9wcml2YXRlLT5nZXRFbGVtZW50c0J5VGFnTmFtZSh0YWcpKTsK
IH0KIAorV2ViRWxlbWVudCBXZWJOb2RlOjplbGVtZW50KCkgY29uc3QKK3sKKyAgICBpZiAoaXNF
bGVtZW50Tm9kZSgpKQorICAgICAgICByZXR1cm4gV2ViRWxlbWVudChyZWludGVycHJldF9jYXN0
PFdlYkNvcmU6OkVsZW1lbnQqPihtX3ByaXZhdGUuZ2V0KCkpKTsKKyAgICBlbHNlCisgICAgICAg
IHJldHVybiBXZWJFbGVtZW50KCk7Cit9CisKK2Jvb2wgV2ViTm9kZTo6aGFzQ29tcHV0ZWRTdHls
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y29tcHV0ZWRTdHlsZSgpICE9IE5V
TEw7Cit9CisKK1dlYlJlbmRlclN0eWxlIFdlYk5vZGU6OmNvbXB1dGVkU3R5bGUoKSBjb25zdAor
eworICAgIHJldHVybiBXZWJSZW5kZXJTdHlsZShtX3ByaXZhdGUtPmNvbXB1dGVkU3R5bGUoKSk7
Cit9CisKIGJvb2wgV2ViTm9kZTo6aGFzTm9uRW1wdHlCb3VuZGluZ0JveCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fcHJpdmF0ZS0+aGFzTm9uRW1wdHlCb3VuZGluZ0JveCgpOwpJbmRleDogV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJSZW5kZXJTdHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJSZW5kZXJTdHlsZS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlJlbmRlclN0eWxlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJSZW5kZXJTdHlsZS5oIgorCisj
aW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIgorI2luY2x1ZGUgIlJlbmRlclN0
eWxlLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworI2luY2x1ZGUgIldlYlN0cmlu
Zy5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K3ZvaWQgV2ViUmVuZGVyU3R5bGU6OnJlc2V0KCkKK3sKKyAgICBhc3NpZ24oMCk7Cit9CisKK3Zv
aWQgV2ViUmVuZGVyU3R5bGU6OmFzc2lnbihjb25zdCBXZWJSZW5kZXJTdHlsZSYgb3RoZXIpCit7
CisgICAgUmVuZGVyU3R5bGUqIHAgPSBjb25zdF9jYXN0PFJlbmRlclN0eWxlKj4ob3RoZXIubV9w
cml2YXRlKTsKKyAgICBpZiAocCkKKyAgICAgICAgcC0+cmVmKCk7CisgICAgYXNzaWduKHApOwor
fQorCitXZWJSZW5kZXJTdHlsZTo6V2ViUmVuZGVyU3R5bGUoY29uc3QgUGFzc1JlZlB0cjxSZW5k
ZXJTdHlsZT4mIGNvbCkKKyAgICA6IG1fcHJpdmF0ZShzdGF0aWNfY2FzdDxSZW5kZXJTdHlsZSo+
KGNvbC5yZWxlYXNlUmVmKCkpKQoreworfQorCit2b2lkIFdlYlJlbmRlclN0eWxlOjphc3NpZ24o
UmVuZGVyU3R5bGUqIHApCit7CisgICAgLy8gcCBpcyBhbHJlYWR5IHJlZidkIGZvciB1cyBieSB0
aGUgY2FsbGVyCisgICAgaWYgKG1fcHJpdmF0ZSkKKyAgICAgICAgbV9wcml2YXRlLT5kZXJlZigp
OworICAgIG1fcHJpdmF0ZSA9IHA7Cit9CisKK1dlYlN0cmluZyBXZWJSZW5kZXJTdHlsZTo6ZGlz
cGxheSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYlN0cmluZyhDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlKG1fcHJpdmF0ZS0+ZGlzcGxheSgpKS0+Z2V0U3RyaW5nVmFsdWUoKSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJSZW5kZXJTdHlsZS5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQog
ICArIExGCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61080</attachid>
            <date>2010-07-09 13:17:59 -0700</date>
            <delta_ts>2010-07-09 15:55:45 -0700</delta_ts>
            <desc>New classes now use WebPrivatePtr</desc>
            <filename>patch45</filename>
            <type>text/plain</type>
            <size>34887</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjI5ODApCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjUgQEAKKzIwMTAtMDctMDggIERvbWlu
aWMgTWF6em9uaSAgPGRtYXp6b25pQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG1ldGhvZHMgdG8gV2ViQWNjZXNzaWJpbGl0
eU9iamVjdCB0byBhY2Nlc3MgdGhlIE5vZGUgYW5kCisgICAgICAgIERvY3VtZW50LCBhbmQgdGhl
biBhZGQgbWV0aG9kcyB0byBhY2Nlc3Mgc29tZSBkb2N1bWVudCwgbm9kZSwKKyAgICAgICAgYW5k
IGVsZW1lbnQgcHJvcGVydGllcyBuZWVkZWQgZm9yIFdpbmRvd3MgYWNjZXNzaWJpbGl0eS4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE1NjkKKwor
ICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3QuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViQXR0cmlidXRlLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJBdHRyaWJ1dGU6On5XZWJBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJBdHRyaWJ1dGU6OldlYkF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF0dHJp
YnV0ZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKiBwdWJsaWMvV2ViRG9jdW1lbnRUeXBlLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJEb2N1bWVudFR5cGU6OldlYkRvY3VtZW50VHlwZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkRvY3VtZW50VHlwZTo6b3BlcmF0b3I9KToKKyAgICAgICAg
KFdlYktpdDo6V2ViRG9jdW1lbnRUeXBlOjphc3NpZ24pOgorICAgICAgICAqIHB1YmxpYy9XZWJF
bGVtZW50Lmg6CisgICAgICAgICogcHVibGljL1dlYk5hbWVkTm9kZU1hcC5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViTmFtZWROb2RlTWFwOjp+V2ViTmFtZWROb2RlTWFwKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTmFtZWROb2RlTWFwOjpXZWJOYW1lZE5vZGVNYXApOgorICAgICAgICAo
V2ViS2l0OjpXZWJOYW1lZE5vZGVNYXA6Om9wZXJhdG9yPSk6CisgICAgICAgICogcHVibGljL1dl
Yk5vZGUuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViUmVuZGVyU3R5bGUuaDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlJlbmRlclN0eWxlOjp+V2ViUmVuZGVyU3R5bGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZW5kZXJTdHlsZTo6V2ViUmVuZGVyU3R5bGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZW5kZXJTdHlsZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKiBzcmMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6
Om5vZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpkb2N1bWVu
dCk6CisgICAgICAgICogc3JjL1dlYkF0dHJpYnV0ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJBdHRyaWJ1dGU6OnJlc2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXR0cmlidXRl
Ojphc3NpZ24pOgorICAgICAgICAoV2ViS2l0OjpXZWJBdHRyaWJ1dGU6OldlYkF0dHJpYnV0ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkF0dHJpYnV0ZTo6bG9jYWxOYW1lKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQXR0cmlidXRlOjp2YWx1ZSk6CisgICAgICAgICogc3JjL1dlYkRvY3VtZW50VHlw
ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJEb2N1bWVudFR5cGU6Om5hbWUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJEb2N1bWVudFR5cGU6OldlYkRvY3VtZW50VHlwZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkRvY3VtZW50VHlwZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYktp
dDo6V2ViRG9jdW1lbnRUeXBlOjpvcGVyYXRvciBQYXNzUmVmUHRyPERvY3VtZW50VHlwZT4pOgor
ICAgICAgICAqIHNyYy9XZWJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWxlbWVu
dDo6YXR0cmlidXRlcyk6CisgICAgICAgICogc3JjL1dlYk5hbWVkTm9kZU1hcC5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJOYW1lZE5vZGVNYXA6OnJlc2V0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViTmFtZWROb2RlTWFwOjphc3NpZ24pOgorICAgICAgICAoV2ViS2l0OjpXZWJOYW1l
ZE5vZGVNYXA6OldlYk5hbWVkTm9kZU1hcCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5hbWVkTm9k
ZU1hcDo6bGVuZ3RoKToKKyAgICAgICAgKFdlYktpdDo6V2ViTmFtZWROb2RlTWFwOjphdHRyaWJ1
dGVJdGVtKToKKyAgICAgICAgKiBzcmMvV2ViTm9kZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
Yk5vZGU6OmVsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb2RlOjpoYXNDb21wdXRlZFN0
eWxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm9kZTo6Y29tcHV0ZWRTdHlsZSk6CisgICAgICAg
ICogc3JjL1dlYlJlbmRlclN0eWxlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlJl
bmRlclN0eWxlOjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlbmRlclN0eWxlOjphc3Np
Z24pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZW5kZXJTdHlsZTo6V2ViUmVuZGVyU3R5bGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZW5kZXJTdHlsZTo6ZGlzcGxheSk6CisKIDIwMTAtMDctMDkg
IE1pY2hhZWwgTm9yZG1hbiAgPG1pY2hhZWxuQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRHVtaXRydSBEYW5pbGl1Yy4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCShyZXZpc2lvbiA2Mjk4
MCkKKysrIFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw2
ICs4NCw3IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJBbmltYXRpb25Db250cm9sbGVy
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQXBwbGljYXRpb25DYWNoZUhvc3QuaCcs
CiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENsaWVudC5o
JywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYkF0dHJpYnV0ZS5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYkJpbmRpbmdzLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2Vi
Q2FjaGUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJDYW52YXMuaCcsCkBAIC0xMTIs
NiArMTEzLDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkRldlRvb2xzTWVzc2FnZURh
dGEuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEZXZUb29sc01lc3NhZ2VUcmFuc3Bv
cnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEb2N1bWVudC5oJywKKyAgICAgICAg
ICAgICAgICAncHVibGljL1dlYkRvY3VtZW50VHlwZS5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYkRyYWdEYXRhLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRWRpdGluZ0Fj
dGlvbi5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkVsZW1lbnQuaCcsCkBAIC0xNTcs
NiArMTU5LDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYk1lc3NhZ2VQb3J0Q2hhbm5l
bENsaWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYk1pbWVSZWdpc3RyeS5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYk11dGF0aW9uRXZlbnQuaCcsCisgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJOYW1lZE5vZGVNYXAuaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJOYXZpZ2F0aW9uVHlwZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYk5vZGUu
aCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJOb2RlQ29sbGVjdGlvbi5oJywKQEAgLTE4
MCw2ICsxODMsNyBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViUHJpdmF0ZVB0ci5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYlJhbmdlLmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViUmVjdC5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYlJlbmRlclN0eWxl
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViUmVndWxhckV4cHJlc3Npb24uaCcsCiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJSdW50aW1lRmVhdHVyZXMuaCcsCiAgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJTY3JvbGxiYXIuaCcsCkBAIC0zMTcsNiArMzIxLDcgQEAKICAgICAg
ICAgICAgICAgICAnc3JjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuY3BwJywKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYkFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJBbmltYXRpb25Db250cm9sbGVySW1wbC5oJywKKyAgICAgICAgICAgICAgICAn
c3JjL1dlYkF0dHJpYnV0ZS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViQmluZGluZ3Mu
Y3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkNhY2hlLmNwcCcsCiAgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJDb2xvci5jcHAnLApAQCAtMzM0LDYgKzMzOSw3IEBACiAgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJEZXZUb29sc0Zyb250ZW5kSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdz
cmMvV2ViRGV2VG9vbHNGcm9udGVuZEltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJE
b2N1bWVudC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViRG9jdW1lbnRUeXBlLmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJEcmFnRGF0YS5jcHAnLAogICAgICAgICAgICAgICAg
ICdzcmMvV2ViRWxlbWVudC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRW50aXRpZXMu
Y3BwJywKQEAgLTM4MSw2ICszODcsNyBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViTWVkaWFQ
bGF5ZXJDbGllbnRJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJNZWRpYVBsYXll
ckNsaWVudEltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJNdXRhdGlvbkV2ZW50LmNw
cCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJOYW1lZE5vZGVNYXAuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYk5vZGUuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYk5vZGVD
b2xsZWN0aW9uLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJOb2RlTGlzdC5jcHAnLApA
QCAtNDAyLDYgKzQwOSw3IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJQb3B1cE1lbnVJbXBs
LmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViUmFuZ2UuY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYlJlZ3VsYXJFeHByZXNzaW9uLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJSZW5kZXJTdHlsZS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViUnVudGltZUZlYXR1
cmVzLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTY3JpcHRDb250cm9sbGVyLmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTY3JvbGxiYXJJbXBsLmNwcCcsCkluZGV4OiBXZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaAkocmV2aXNp
b24gNjI5ODApCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsOCBAQCBuYW1lc3BhY2UgV1RGIHsgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IGNsCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFByaXZhdGU7CitjbGFzcyBXZWJOb2RlOworY2xhc3MgV2ViRG9jdW1l
bnQ7CiBjbGFzcyBXZWJTdHJpbmc7CiBzdHJ1Y3QgV2ViUG9pbnQ7CiBzdHJ1Y3QgV2ViUmVjdDsK
QEAgLTEwMyw2ICsxMDUsOSBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0FQSSBXZWJTdHJpbmcgc3Ry
aW5nVmFsdWUoKSBjb25zdDsKICAgICBXRUJLSVRfQVBJIFdlYlN0cmluZyB0aXRsZSgpIGNvbnN0
OwogCisgICAgV0VCS0lUX0FQSSBXZWJOb2RlIG5vZGUoKSBjb25zdDsKKyAgICBXRUJLSVRfQVBJ
IFdlYkRvY3VtZW50IGRvY3VtZW50KCkgY29uc3Q7CisKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJ
T04KICAgICBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0PiYpOwogICAgIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Qm
IG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdD4mKTsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQXR0cmlidXRlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBdHRyaWJ1dGUuaAkocmV2aXNp
b24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQXR0cmlidXRlLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkF0dHJpYnV0ZV9oCisjZGVmaW5lIFdlYkF0
dHJpYnV0ZV9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJQcml2YXRl
UHRyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgQXR0cmlidXRlOyB9CisjaWYgV0VC
S0lUX0lNUExFTUVOVEFUSU9OCituYW1lc3BhY2UgV1RGIHsgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IGNsYXNzIFBhc3NSZWZQdHI7IH0KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNz
IFdlYlN0cmluZzsKKworLy8gUHJvdmlkZXMgcmVhZG9ubHkgYWNjZXNzIHRvIHNvbWUgcHJvcGVy
dGllcyBvZiBhIERPTSBhdHRyaWJ1dGUuCitjbGFzcyBXZWJBdHRyaWJ1dGUgeworcHVibGljOgor
ICAgIH5XZWJBdHRyaWJ1dGUoKSB7IHJlc2V0KCk7IH0KKworICAgIFdlYkF0dHJpYnV0ZSgpIHsg
fQorICAgIFdlYkF0dHJpYnV0ZShjb25zdCBXZWJBdHRyaWJ1dGUmIG4pIHsgYXNzaWduKG4pOyB9
CisgICAgV2ViQXR0cmlidXRlJiBvcGVyYXRvcj0oY29uc3QgV2ViQXR0cmlidXRlJiBuKQorICAg
IHsKKyAgICAgICAgYXNzaWduKG4pOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisg
ICAgV0VCS0lUX0FQSSB2b2lkIHJlc2V0KCk7CisgICAgV0VCS0lUX0FQSSB2b2lkIGFzc2lnbihj
b25zdCBXZWJBdHRyaWJ1dGUmKTsKKworICAgIFdFQktJVF9BUEkgV2ViU3RyaW5nIGxvY2FsTmFt
ZSgpIGNvbnN0OworICAgIFdFQktJVF9BUEkgV2ViU3RyaW5nIHZhbHVlKCkgY29uc3Q7CisKKyNp
ZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJBdHRyaWJ1dGUoY29uc3QgV1RGOjpQYXNz
UmVmUHRyPFdlYkNvcmU6OkF0dHJpYnV0ZT4mKTsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdl
YlByaXZhdGVQdHI8V2ViQ29yZTo6QXR0cmlidXRlPiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkF0dHJpYnV0ZS5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5
bGUKICAgKyBMRgoKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRG9jdW1lbnRUeXBl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEb2N1bWVudFR5cGUu
aAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRG9jdW1lbnRUeXBl
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkRvY3VtZW50VHlwZV9o
CisjZGVmaW5lIFdlYkRvY3VtZW50VHlwZV9oCisKKyNpbmNsdWRlICJXZWJOb2RlLmgiCisKKyNp
ZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KK25hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgRG9jdW1l
bnRUeXBlOyB9CituYW1lc3BhY2UgV1RGIHsgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFBh
c3NSZWZQdHI7IH0KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYlN0cmlu
ZzsKKworLy8gUHJvdmlkZXMgcmVhZG9ubHkgYWNjZXNzIHRvIHNvbWUgcHJvcGVydGllcyBvZiBh
IERPTSBkb2N1bWVudCB0eXBlLgorY2xhc3MgV2ViRG9jdW1lbnRUeXBlIDogcHVibGljIFdlYk5v
ZGUgeworcHVibGljOgorICAgIFdlYkRvY3VtZW50VHlwZSgpIHsgfQorICAgIFdlYkRvY3VtZW50
VHlwZShjb25zdCBXZWJEb2N1bWVudFR5cGUmIGUpIDogV2ViTm9kZShlKSB7IH0KKworICAgIFdl
YkRvY3VtZW50VHlwZSYgb3BlcmF0b3I9KGNvbnN0IFdlYkRvY3VtZW50VHlwZSYgZSkKKyAgICB7
CisgICAgICAgIFdlYk5vZGU6OmFzc2lnbihlKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAg
IH0KKyAgICB2b2lkIGFzc2lnbihjb25zdCBXZWJEb2N1bWVudFR5cGUmIGUpIHsgV2ViTm9kZTo6
YXNzaWduKGUpOyB9CisKKyAgICBXRUJLSVRfQVBJIFdlYlN0cmluZyBuYW1lKCkgY29uc3Q7CisK
KyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJEb2N1bWVudFR5cGUoY29uc3QgV1RG
OjpQYXNzUmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50VHlwZT4mKTsKKyAgICBXZWJEb2N1bWVudFR5
cGUmIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnRUeXBl
PiYpOworICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudFR5cGU+
KCkgY29uc3Q7CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYK
ClByb3BlcnR5IGNoYW5nZXMgb246IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRG9jdW1lbnRU
eXBlLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJFbGVtZW50LmgJKHJldmlzaW9uIDYyOTgwKQorKysgV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBFbGVtZW50OyB9CiAjZW5kaWYKIAogbmFtZXNw
YWNlIFdlYktpdCB7CitjbGFzcyBXZWJOYW1lZE5vZGVNYXA7CisKICAgICAvLyBQcm92aWRlcyBh
Y2Nlc3MgdG8gc29tZSBwcm9wZXJ0aWVzIG9mIGEgRE9NIGVsZW1lbnQgbm9kZS4KICAgICBjbGFz
cyBXZWJFbGVtZW50IDogcHVibGljIFdlYk5vZGUgewogICAgIHB1YmxpYzoKQEAgLTUzLDYgKzU1
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIFdFQktJVF9BUEkgYm9vbCBoYXNBdHRy
aWJ1dGUoY29uc3QgV2ViU3RyaW5nJikgY29uc3Q7CiAgICAgICAgIFdFQktJVF9BUEkgV2ViU3Ry
aW5nIGdldEF0dHJpYnV0ZShjb25zdCBXZWJTdHJpbmcmKSBjb25zdDsKICAgICAgICAgV0VCS0lU
X0FQSSBib29sIHNldEF0dHJpYnV0ZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0
cmluZyYgdmFsdWUpOworICAgICAgICBXRUJLSVRfQVBJIFdlYk5hbWVkTm9kZU1hcCBhdHRyaWJ1
dGVzKCkgY29uc3Q7CiAgICAgICAgIFdFQktJVF9BUEkgV2ViU3RyaW5nIGlubmVyVGV4dCgpIGNv
bnN0OwogCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCkluZGV4OiBXZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYk5hbWVkTm9kZU1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViTmFtZWROb2RlTWFwLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYk5hbWVkTm9kZU1hcC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXZWJOYW1lZE5vZGVNYXBfaAorI2RlZmluZSBXZWJOYW1lZE5vZGVNYXBfaAorCisjaW5j
bHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViUHJpdmF0ZVB0ci5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7IGNsYXNzIE5hbWVkTm9kZU1hcDsgfQorI2lmIFdFQktJVF9JTVBMRU1FTlRB
VElPTgorbmFtZXNwYWNlIFdURiB7IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBQYXNzUmVm
UHRyOyB9CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJBdHRyaWJ1dGU7
CisKKy8vIFByb3ZpZGVzIHJlYWRvbmx5IGFjY2VzcyB0byBzb21lIHByb3BlcnRpZXMgb2YgYSBE
T00gYXR0cmlidXRlIG1hcC4KK2NsYXNzIFdlYk5hbWVkTm9kZU1hcCB7CitwdWJsaWM6CisgICAg
fldlYk5hbWVkTm9kZU1hcCgpIHsgcmVzZXQoKTsgfQorCisgICAgV2ViTmFtZWROb2RlTWFwKCkg
eyB9CisgICAgV2ViTmFtZWROb2RlTWFwKGNvbnN0IFdlYk5hbWVkTm9kZU1hcCYgbikgeyBhc3Np
Z24obik7IH0KKyAgICBXZWJOYW1lZE5vZGVNYXAmIG9wZXJhdG9yPShjb25zdCBXZWJOYW1lZE5v
ZGVNYXAmIG4pCisgICAgeworICAgICAgICBhc3NpZ24obik7CisgICAgICAgIHJldHVybiAqdGhp
czsKKyAgICB9CisKKyAgICBXRUJLSVRfQVBJIHZvaWQgcmVzZXQoKTsKKyAgICBXRUJLSVRfQVBJ
IHZvaWQgYXNzaWduKGNvbnN0IFdlYk5hbWVkTm9kZU1hcCYpOworCisgICAgV0VCS0lUX0FQSSB1
bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKKyAgICBXRUJLSVRfQVBJIFdlYkF0dHJpYnV0ZSBhdHRy
aWJ1dGVJdGVtKHVuc2lnbmVkKSBjb25zdDsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgor
ICAgIFdlYk5hbWVkTm9kZU1hcChjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6TmFtZWRO
b2RlTWFwPiYpOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV2ViUHJpdmF0ZVB0cjxXZWJDb3Jl
OjpOYW1lZE5vZGVNYXA+IG1fcHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
TmFtZWROb2RlTWFwLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJ
bmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJOb2RlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJOb2RlLmgJKHJldmlzaW9uIDYyOTgwKQorKysgV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDEwICszOSwx
MiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIE5vZGU7IH0KIAogbmFtZXNwYWNlIFdlYktp
dCB7CiBjbGFzcyBXZWJEb2N1bWVudDsKK2NsYXNzIFdlYkVsZW1lbnQ7CiBjbGFzcyBXZWJFdmVu
dExpc3RlbmVyOwogY2xhc3MgV2ViRXZlbnRMaXN0ZW5lclByaXZhdGU7CiBjbGFzcyBXZWJGcmFt
ZTsKIGNsYXNzIFdlYk5vZGVMaXN0OworY2xhc3MgV2ViUmVuZGVyU3R5bGU7CiAKIC8vIFByb3Zp
ZGVzIGFjY2VzcyB0byBzb21lIHByb3BlcnRpZXMgb2YgYSBET00gbm9kZS4KIGNsYXNzIFdlYk5v
ZGUgewpAQCAtMTAxLDYgKzEwMyw5IEBAIHB1YmxpYzoKICAgICBXRUJLSVRfQVBJIHZvaWQgcmVt
b3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBXZWJTdHJpbmcmIGV2ZW50VHlwZSwgV2ViRXZlbnRMaXN0
ZW5lciogbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSk7CiAgICAgV0VCS0lUX0FQSSB2b2lkIHNp
bXVsYXRlQ2xpY2soKTsKICAgICBXRUJLSVRfQVBJIFdlYk5vZGVMaXN0IGdldEVsZW1lbnRzQnlU
YWdOYW1lKGNvbnN0IFdlYlN0cmluZyYpIGNvbnN0OworICAgIFdFQktJVF9BUEkgV2ViRWxlbWVu
dCBlbGVtZW50KCkgY29uc3Q7CisgICAgV0VCS0lUX0FQSSBib29sIGhhc0NvbXB1dGVkU3R5bGUo
KSBjb25zdDsKKyAgICBXRUJLSVRfQVBJIFdlYlJlbmRlclN0eWxlIGNvbXB1dGVkU3R5bGUoKSBj
b25zdDsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgbm9kZSBoYXMgYSBub24tZW1wdHkg
Ym91bmRpbmcgYm94IGluIGxheW91dC4KICAgICAvLyBUaGlzIGRvZXMgbm90IDEwMCUgZ3VhcmFu
dGVlIHRoZSB1c2VyIGNhbiBzZWUgaXQsIGJ1dCBpcyBwcmV0dHkgY2xvc2UuCkluZGV4OiBXZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlJlbmRlclN0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJSZW5kZXJTdHlsZS5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJSZW5kZXJTdHlsZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBXZWJSZW5kZXJTdHlsZV9oCisjZGVmaW5lIFdlYlJlbmRlclN0eWxlX2gK
KworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYlByaXZhdGVQdHIuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBSZW5kZXJTdHlsZTsgfQorI2lmIFdFQktJVF9JTVBM
RU1FTlRBVElPTgorbmFtZXNwYWNlIFdURiB7IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBQ
YXNzUmVmUHRyOyB9CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJTdHJp
bmc7CisKKy8vIFByb3ZpZGVzIHJlYWRvbmx5IGFjY2VzcyB0byBzb21lIHByb3BlcnRpZXMgb2Yg
YSBET00gbm9kZSdzIHN0eWxlLgorY2xhc3MgV2ViUmVuZGVyU3R5bGUgeworcHVibGljOgorICAg
IH5XZWJSZW5kZXJTdHlsZSgpIHsgcmVzZXQoKTsgfQorCisgICAgV2ViUmVuZGVyU3R5bGUoKSB7
IH0KKyAgICBXZWJSZW5kZXJTdHlsZShjb25zdCBXZWJSZW5kZXJTdHlsZSYgbikgeyBhc3NpZ24o
bik7IH0KKyAgICBXZWJSZW5kZXJTdHlsZSYgb3BlcmF0b3I9KGNvbnN0IFdlYlJlbmRlclN0eWxl
JiBuKQorICAgIHsKKyAgICAgICAgYXNzaWduKG4pOworICAgICAgICByZXR1cm4gKnRoaXM7Cisg
ICAgfQorCisgICAgV0VCS0lUX0FQSSB2b2lkIHJlc2V0KCk7CisgICAgV0VCS0lUX0FQSSB2b2lk
IGFzc2lnbihjb25zdCBXZWJSZW5kZXJTdHlsZSYpOworCisgICAgV0VCS0lUX0FQSSBXZWJTdHJp
bmcgZGlzcGxheSgpIGNvbnN0OworCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2Vi
UmVuZGVyU3R5bGUoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlJlbmRlclN0eWxlPiYp
OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV2ViUHJpdmF0ZVB0cjxXZWJDb3JlOjpSZW5kZXJT
dHlsZT4gbV9wcml2YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgoK
UHJvcGVydHkgY2hhbmdlcyBvbjogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJSZW5kZXJTdHls
ZS5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFdlYktp
dC9jaHJvbWl1bS9zcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkocmV2aXNpb24g
NjI5ODApCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw5ICszMiwxMyBAQAogI2luY2x1ZGUgIldlYkFjY2Vzc2li
aWxpdHlPYmplY3QuaCIKIAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKKyNpbmNs
dWRlICJBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVy
LmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgorI2luY2x1ZGUgIldlYkRvY3VtZW50LmgiCisjaW5j
bHVkZSAiV2ViTm9kZS5oIgogI2luY2x1ZGUgIldlYlBvaW50LmgiCiAjaW5jbHVkZSAiV2ViUmVj
dC5oIgogI2luY2x1ZGUgIldlYlN0cmluZy5oIgpAQCAtNDAxLDYgKzQwNSwzOSBAQCBXZWJTdHJp
bmcgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6dGl0bGUoCiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+
dGl0bGUoKTsKIH0KIAorCitXZWJOb2RlIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q6Om5vZGUoKSBj
b25zdAoreworICAgIGlmICghbV9wcml2YXRlKQorICAgICAgICByZXR1cm4gV2ViTm9kZSgpOwor
CisgICAgbV9wcml2YXRlLT51cGRhdGVCYWNraW5nU3RvcmUoKTsKKworICAgIGlmICghbV9wcml2
YXRlLT5pc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIFdlYk5v
ZGUoKTsKKworICAgIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCA9Cisg
ICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCo+KG1fcHJp
dmF0ZSk7CisgICAgTm9kZSogbm9kZSA9IHJlbmRlck9iamVjdC0+bm9kZSgpOworICAgIGlmICgh
bm9kZSkKKyAgICAgICAgcmV0dXJuIFdlYk5vZGUoKTsKKworICAgIHJldHVybiBXZWJOb2RlKG5v
ZGUpOworfQorCitXZWJEb2N1bWVudCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpkb2N1bWVudCgp
IGNvbnN0Cit7CisgICAgaWYgKCFtX3ByaXZhdGUpCisgICAgICAgIHJldHVybiBXZWJEb2N1bWVu
dCgpOworCisgICAgbV9wcml2YXRlLT51cGRhdGVCYWNraW5nU3RvcmUoKTsKKworICAgIGlmICgh
bV9wcml2YXRlLT5pc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSkKKyAgICAgICAgcmV0dXJu
IFdlYkRvY3VtZW50KCk7CisKKyAgICByZXR1cm4gV2ViRG9jdW1lbnQobV9wcml2YXRlLT5kb2N1
bWVudCgpKTsKK30KKwogV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6V2ViQWNjZXNzaWJpbGl0eU9i
amVjdChjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdD4m
IG9iamVjdCkKICAgICA6IG1fcHJpdmF0ZShzdGF0aWNfY2FzdDxXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0UHJpdmF0ZSo+KG9iamVjdC5yZWxlYXNlUmVmKCkpKQogewpJbmRleDogV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJBdHRyaWJ1dGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9z
cmMvV2ViQXR0cmlidXRlLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMv
V2ViQXR0cmlidXRlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXZWJBdHRyaWJ1dGUuaCIKKworI2luY2x1ZGUgIkF0dHJpYnV0
ZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKKyNpbmNsdWRlICJXZWJTdHJpbmcu
aCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2
b2lkIFdlYkF0dHJpYnV0ZTo6cmVzZXQoKQoreworICAgIG1fcHJpdmF0ZS5yZXNldCgpOworfQor
Cit2b2lkIFdlYkF0dHJpYnV0ZTo6YXNzaWduKGNvbnN0IFdlYkF0dHJpYnV0ZSYgb3RoZXIpCit7
CisgICAgbV9wcml2YXRlID0gb3RoZXIubV9wcml2YXRlOworfQorCitXZWJBdHRyaWJ1dGU6Oldl
YkF0dHJpYnV0ZShjb25zdCBQYXNzUmVmUHRyPEF0dHJpYnV0ZT4mIG90aGVyKQorICAgIDogbV9w
cml2YXRlKG90aGVyKQoreworfQorCitXZWJTdHJpbmcgV2ViQXR0cmlidXRlOjpsb2NhbE5hbWUo
KSBjb25zdAoreworICAgIHJldHVybiBXZWJTdHJpbmcobV9wcml2YXRlLT5sb2NhbE5hbWUoKSk7
Cit9CisKK1dlYlN0cmluZyBXZWJBdHRyaWJ1dGU6OnZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gV2ViU3RyaW5nKG1fcHJpdmF0ZS0+dmFsdWUoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBdHRyaWJ1
dGUuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFdl
YktpdC9jaHJvbWl1bS9zcmMvV2ViRG9jdW1lbnRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkRvY3VtZW50VHlwZS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkRvY3VtZW50VHlwZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViRG9jdW1lbnRUeXBlLmgi
CisKKyNpbmNsdWRlICJEb2N1bWVudFR5cGUuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKwor
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViU3RyaW5nIFdlYkRvY3VtZW50VHlwZTo6bmFtZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYlN0cmluZyhjb25zdFVud3JhcDxEb2N1bWVudFR5cGU+
KCktPm5hbWUoKSk7Cit9CisKK1dlYkRvY3VtZW50VHlwZTo6V2ViRG9jdW1lbnRUeXBlKGNvbnN0
IFBhc3NSZWZQdHI8RG9jdW1lbnRUeXBlPiYgZWxlbSkKKyAgICA6IFdlYk5vZGUoZWxlbSkKK3sK
K30KKworV2ViRG9jdW1lbnRUeXBlJiBXZWJEb2N1bWVudFR5cGU6Om9wZXJhdG9yPShjb25zdCBQ
YXNzUmVmUHRyPERvY3VtZW50VHlwZT4mIGVsZW0pCit7CisgICAgbV9wcml2YXRlID0gZWxlbTsK
KyAgICByZXR1cm4gKnRoaXM7Cit9CisKK1dlYkRvY3VtZW50VHlwZTo6b3BlcmF0b3IgUGFzc1Jl
ZlB0cjxEb2N1bWVudFR5cGU+KCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RG9j
dW1lbnRUeXBlKj4obV9wcml2YXRlLmdldCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRvY3VtZW50VHlw
ZS5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkVsZW1lbnQuY3BwCShyZXZpc2lvbiA2Mjk4MCkKKysrIFdlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDggQEAK
ICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
CisjaW5jbHVkZSAiV2ViTmFtZWROb2RlTWFwLmgiCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTczLDYgKzc1LDExIEBAIGJvb2wgV2ViRWxlbWVu
dDo6c2V0QXR0cmlidXRlKGNvbnN0IFdlYlMKICAgICByZXR1cm4gIWV4Y2VwdGlvbkNvZGU7CiB9
CiAKK1dlYk5hbWVkTm9kZU1hcCBXZWJFbGVtZW50OjphdHRyaWJ1dGVzKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gV2ViTmFtZWROb2RlTWFwKG1fcHJpdmF0ZS0+YXR0cmlidXRlcygpKTsKK30KKwog
V2ViU3RyaW5nIFdlYkVsZW1lbnQ6OmlubmVyVGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNv
bnN0VW53cmFwPEVsZW1lbnQ+KCktPmlubmVyVGV4dCgpOwpJbmRleDogV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJOYW1lZE5vZGVNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9z
cmMvV2ViTmFtZWROb2RlTWFwLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS9z
cmMvV2ViTmFtZWROb2RlTWFwLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJOYW1lZE5vZGVNYXAuaCIKKworI2luY2x1ZGUg
Ik5hbWVkTm9kZU1hcC5oIgorI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJXZWJBdHRyaWJ1
dGUuaCIKKyNpbmNsdWRlICJXZWJOb2RlLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
KwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lk
IFdlYk5hbWVkTm9kZU1hcDo6cmVzZXQoKQoreworICAgIG1fcHJpdmF0ZS5yZXNldCgpOworfQor
Cit2b2lkIFdlYk5hbWVkTm9kZU1hcDo6YXNzaWduKGNvbnN0IFdlYk5hbWVkTm9kZU1hcCYgb3Ro
ZXIpCit7CisgICAgbV9wcml2YXRlID0gb3RoZXIubV9wcml2YXRlOworfQorCitXZWJOYW1lZE5v
ZGVNYXA6OldlYk5hbWVkTm9kZU1hcChjb25zdCBQYXNzUmVmUHRyPE5hbWVkTm9kZU1hcD4mIG90
aGVyKQorICAgIDogbV9wcml2YXRlKG90aGVyKQoreworfQorCit1bnNpZ25lZCBXZWJOYW1lZE5v
ZGVNYXA6Omxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bGVuZ3RoKCk7
Cit9CisKK1dlYkF0dHJpYnV0ZSBXZWJOYW1lZE5vZGVNYXA6OmF0dHJpYnV0ZUl0ZW0odW5zaWdu
ZWQgaW5kZXgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYkF0dHJpYnV0ZShtX3ByaXZhdGUtPmF0
dHJpYnV0ZUl0ZW0oaW5kZXgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CgpQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYk5hbWVkTm9kZU1hcC5jcHAKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJOb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dl
Yk5vZGUuY3BwCShyZXZpc2lvbiA2Mjk4MCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViTm9k
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDE3ICszMiwyMSBAQAogI2luY2x1ZGUgIldlYk5v
ZGUuaCIKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgiCiAjaW5j
bHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCisjaW5jbHVkZSAiUmVuZGVyU3R5
bGUuaCIKIAogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXJXcmFwcGVyLmgiCiAjaW5jbHVkZSAiV2Vi
RG9jdW1lbnQuaCIKKyNpbmNsdWRlICJXZWJFbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViRXZlbnQu
aCIKICNpbmNsdWRlICJXZWJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVJbXBs
LmgiCiAjaW5jbHVkZSAiV2ViTm9kZUxpc3QuaCIKKyNpbmNsdWRlICJXZWJSZW5kZXJTdHlsZS5o
IgogI2luY2x1ZGUgIldlYlN0cmluZy5oIgogI2luY2x1ZGUgIldlYlZlY3Rvci5oIgogCkBAIC0x
NzgsNiArMTgyLDI0IEBAIFdlYk5vZGVMaXN0IFdlYk5vZGU6OmdldEVsZW1lbnRzQnlUYWdOYW0K
ICAgICByZXR1cm4gV2ViTm9kZUxpc3QobV9wcml2YXRlLT5nZXRFbGVtZW50c0J5VGFnTmFtZSh0
YWcpKTsKIH0KIAorV2ViRWxlbWVudCBXZWJOb2RlOjplbGVtZW50KCkgY29uc3QKK3sKKyAgICBp
ZiAoaXNFbGVtZW50Tm9kZSgpKQorICAgICAgICByZXR1cm4gV2ViRWxlbWVudChyZWludGVycHJl
dF9jYXN0PFdlYkNvcmU6OkVsZW1lbnQqPihtX3ByaXZhdGUuZ2V0KCkpKTsKKworICAgIHJldHVy
biBXZWJFbGVtZW50KCk7Cit9CisKK2Jvb2wgV2ViTm9kZTo6aGFzQ29tcHV0ZWRTdHlsZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y29tcHV0ZWRTdHlsZSgpOworfQorCitXZWJS
ZW5kZXJTdHlsZSBXZWJOb2RlOjpjb21wdXRlZFN0eWxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
V2ViUmVuZGVyU3R5bGUobV9wcml2YXRlLT5jb21wdXRlZFN0eWxlKCkpOworfQorCiBib29sIFdl
Yk5vZGU6Omhhc05vbkVtcHR5Qm91bmRpbmdCb3goKSBjb25zdAogewogICAgIHJldHVybiBtX3By
aXZhdGUtPmhhc05vbkVtcHR5Qm91bmRpbmdCb3goKTsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9z
cmMvV2ViUmVuZGVyU3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMv
V2ViUmVuZGVyU3R5bGUuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJSZW5kZXJTdHlsZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUmVuZGVyU3R5bGUuaCIKKworI2luY2x1ZGUgIkNTU1By
aW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKKyNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgorI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFdlYlJlbmRl
clN0eWxlOjpyZXNldCgpCit7CisgICAgbV9wcml2YXRlLnJlc2V0KCk7Cit9CisKK3ZvaWQgV2Vi
UmVuZGVyU3R5bGU6OmFzc2lnbihjb25zdCBXZWJSZW5kZXJTdHlsZSYgb3RoZXIpCit7CisgICAg
bV9wcml2YXRlID0gb3RoZXIubV9wcml2YXRlOworfQorCitXZWJSZW5kZXJTdHlsZTo6V2ViUmVu
ZGVyU3R5bGUoY29uc3QgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4mIG90aGVyKQorICAgIDogbV9w
cml2YXRlKG90aGVyKQoreworfQorCitXZWJTdHJpbmcgV2ViUmVuZGVyU3R5bGU6OmRpc3BsYXko
KSBjb25zdAoreworICAgIHJldHVybiBXZWJTdHJpbmcoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZShtX3ByaXZhdGUtPmRpc3BsYXkoKSktPmdldFN0cmluZ1ZhbHVlKCkpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYktpdC9jaHJvbWl1bS9zcmMv
V2ViUmVuZGVyU3R5bGUuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBM
RgoK
</data>
<flag name="review"
          id="49048"
          type_id="1"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61110</attachid>
            <date>2010-07-09 15:55:45 -0700</date>
            <delta_ts>2010-07-12 18:46:01 -0700</delta_ts>
            <desc>Got rid of WebNode::element()</desc>
            <filename>patch46</filename>
            <type>text/plain</type>
            <size>34662</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjMwMDMpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjUgQEAKKzIwMTAtMDctMDggIERvbWlu
aWMgTWF6em9uaSAgPGRtYXp6b25pQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG1ldGhvZHMgdG8gV2ViQWNjZXNzaWJpbGl0
eU9iamVjdCB0byBhY2Nlc3MgdGhlIE5vZGUgYW5kCisgICAgICAgIERvY3VtZW50LCBhbmQgdGhl
biBhZGQgbWV0aG9kcyB0byBhY2Nlc3Mgc29tZSBkb2N1bWVudCwgbm9kZSwKKyAgICAgICAgYW5k
IGVsZW1lbnQgcHJvcGVydGllcyBuZWVkZWQgZm9yIFdpbmRvd3MgYWNjZXNzaWJpbGl0eS4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE1NjkKKwor
ICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3QuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViQXR0cmlidXRlLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJBdHRyaWJ1dGU6On5XZWJBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJBdHRyaWJ1dGU6OldlYkF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF0dHJp
YnV0ZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKiBwdWJsaWMvV2ViRG9jdW1lbnRUeXBlLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJEb2N1bWVudFR5cGU6OldlYkRvY3VtZW50VHlwZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkRvY3VtZW50VHlwZTo6b3BlcmF0b3I9KToKKyAgICAgICAg
KFdlYktpdDo6V2ViRG9jdW1lbnRUeXBlOjphc3NpZ24pOgorICAgICAgICAqIHB1YmxpYy9XZWJF
bGVtZW50Lmg6CisgICAgICAgICogcHVibGljL1dlYk5hbWVkTm9kZU1hcC5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViTmFtZWROb2RlTWFwOjp+V2ViTmFtZWROb2RlTWFwKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTmFtZWROb2RlTWFwOjpXZWJOYW1lZE5vZGVNYXApOgorICAgICAgICAo
V2ViS2l0OjpXZWJOYW1lZE5vZGVNYXA6Om9wZXJhdG9yPSk6CisgICAgICAgICogcHVibGljL1dl
Yk5vZGUuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViUmVuZGVyU3R5bGUuaDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlJlbmRlclN0eWxlOjp+V2ViUmVuZGVyU3R5bGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZW5kZXJTdHlsZTo6V2ViUmVuZGVyU3R5bGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZW5kZXJTdHlsZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKiBzcmMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6
Om5vZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpkb2N1bWVu
dCk6CisgICAgICAgICogc3JjL1dlYkF0dHJpYnV0ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJBdHRyaWJ1dGU6OnJlc2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXR0cmlidXRl
Ojphc3NpZ24pOgorICAgICAgICAoV2ViS2l0OjpXZWJBdHRyaWJ1dGU6OldlYkF0dHJpYnV0ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkF0dHJpYnV0ZTo6bG9jYWxOYW1lKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQXR0cmlidXRlOjp2YWx1ZSk6CisgICAgICAgICogc3JjL1dlYkRvY3VtZW50VHlw
ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJEb2N1bWVudFR5cGU6Om5hbWUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJEb2N1bWVudFR5cGU6OldlYkRvY3VtZW50VHlwZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkRvY3VtZW50VHlwZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYktp
dDo6V2ViRG9jdW1lbnRUeXBlOjpvcGVyYXRvciBQYXNzUmVmUHRyPERvY3VtZW50VHlwZT4pOgor
ICAgICAgICAqIHNyYy9XZWJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWxlbWVu
dDo6YXR0cmlidXRlcyk6CisgICAgICAgICogc3JjL1dlYk5hbWVkTm9kZU1hcC5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJOYW1lZE5vZGVNYXA6OnJlc2V0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViTmFtZWROb2RlTWFwOjphc3NpZ24pOgorICAgICAgICAoV2ViS2l0OjpXZWJOYW1l
ZE5vZGVNYXA6OldlYk5hbWVkTm9kZU1hcCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5hbWVkTm9k
ZU1hcDo6bGVuZ3RoKToKKyAgICAgICAgKFdlYktpdDo6V2ViTmFtZWROb2RlTWFwOjphdHRyaWJ1
dGVJdGVtKToKKyAgICAgICAgKiBzcmMvV2ViTm9kZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
Yk5vZGU6OmVsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb2RlOjpoYXNDb21wdXRlZFN0
eWxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm9kZTo6Y29tcHV0ZWRTdHlsZSk6CisgICAgICAg
ICogc3JjL1dlYlJlbmRlclN0eWxlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlJl
bmRlclN0eWxlOjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlbmRlclN0eWxlOjphc3Np
Z24pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZW5kZXJTdHlsZTo6V2ViUmVuZGVyU3R5bGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZW5kZXJTdHlsZTo6ZGlzcGxheSk6CisKIDIwMTAtMDctMDkg
IE1pY2hhZWwgTm9yZG1hbiAgPG1pY2hhZWxuQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRHVtaXRydSBEYW5pbGl1Yy4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCShyZXZpc2lvbiA2MzAw
MykKKysrIFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw2
ICs4NCw3IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJBbmltYXRpb25Db250cm9sbGVy
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQXBwbGljYXRpb25DYWNoZUhvc3QuaCcs
CiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENsaWVudC5o
JywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYkF0dHJpYnV0ZS5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYkJpbmRpbmdzLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2Vi
Q2FjaGUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJDYW52YXMuaCcsCkBAIC0xMTIs
NiArMTEzLDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkRldlRvb2xzTWVzc2FnZURh
dGEuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEZXZUb29sc01lc3NhZ2VUcmFuc3Bv
cnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEb2N1bWVudC5oJywKKyAgICAgICAg
ICAgICAgICAncHVibGljL1dlYkRvY3VtZW50VHlwZS5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYkRyYWdEYXRhLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRWRpdGluZ0Fj
dGlvbi5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkVsZW1lbnQuaCcsCkBAIC0xNTcs
NiArMTU5LDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYk1lc3NhZ2VQb3J0Q2hhbm5l
bENsaWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYk1pbWVSZWdpc3RyeS5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYk11dGF0aW9uRXZlbnQuaCcsCisgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJOYW1lZE5vZGVNYXAuaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJOYXZpZ2F0aW9uVHlwZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYk5vZGUu
aCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJOb2RlQ29sbGVjdGlvbi5oJywKQEAgLTE4
MCw2ICsxODMsNyBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViUHJpdmF0ZVB0ci5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYlJhbmdlLmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViUmVjdC5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYlJlbmRlclN0eWxl
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViUmVndWxhckV4cHJlc3Npb24uaCcsCiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJSdW50aW1lRmVhdHVyZXMuaCcsCiAgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJTY3JvbGxiYXIuaCcsCkBAIC0zMTcsNiArMzIxLDcgQEAKICAgICAg
ICAgICAgICAgICAnc3JjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuY3BwJywKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYkFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJBbmltYXRpb25Db250cm9sbGVySW1wbC5oJywKKyAgICAgICAgICAgICAgICAn
c3JjL1dlYkF0dHJpYnV0ZS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViQmluZGluZ3Mu
Y3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkNhY2hlLmNwcCcsCiAgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJDb2xvci5jcHAnLApAQCAtMzM0LDYgKzMzOSw3IEBACiAgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJEZXZUb29sc0Zyb250ZW5kSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdz
cmMvV2ViRGV2VG9vbHNGcm9udGVuZEltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJE
b2N1bWVudC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViRG9jdW1lbnRUeXBlLmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJEcmFnRGF0YS5jcHAnLAogICAgICAgICAgICAgICAg
ICdzcmMvV2ViRWxlbWVudC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRW50aXRpZXMu
Y3BwJywKQEAgLTM4MSw2ICszODcsNyBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViTWVkaWFQ
bGF5ZXJDbGllbnRJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJNZWRpYVBsYXll
ckNsaWVudEltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJNdXRhdGlvbkV2ZW50LmNw
cCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJOYW1lZE5vZGVNYXAuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYk5vZGUuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYk5vZGVD
b2xsZWN0aW9uLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJOb2RlTGlzdC5jcHAnLApA
QCAtNDAyLDYgKzQwOSw3IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJQb3B1cE1lbnVJbXBs
LmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViUmFuZ2UuY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYlJlZ3VsYXJFeHByZXNzaW9uLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJSZW5kZXJTdHlsZS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViUnVudGltZUZlYXR1
cmVzLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTY3JpcHRDb250cm9sbGVyLmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTY3JvbGxiYXJJbXBsLmNwcCcsCkluZGV4OiBXZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaAkocmV2aXNp
b24gNjMwMDMpCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsOCBAQCBuYW1lc3BhY2UgV1RGIHsgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IGNsCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFByaXZhdGU7CitjbGFzcyBXZWJOb2RlOworY2xhc3MgV2ViRG9jdW1l
bnQ7CiBjbGFzcyBXZWJTdHJpbmc7CiBzdHJ1Y3QgV2ViUG9pbnQ7CiBzdHJ1Y3QgV2ViUmVjdDsK
QEAgLTEwMyw2ICsxMDUsOSBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0FQSSBXZWJTdHJpbmcgc3Ry
aW5nVmFsdWUoKSBjb25zdDsKICAgICBXRUJLSVRfQVBJIFdlYlN0cmluZyB0aXRsZSgpIGNvbnN0
OwogCisgICAgV0VCS0lUX0FQSSBXZWJOb2RlIG5vZGUoKSBjb25zdDsKKyAgICBXRUJLSVRfQVBJ
IFdlYkRvY3VtZW50IGRvY3VtZW50KCkgY29uc3Q7CisKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJ
T04KICAgICBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0PiYpOwogICAgIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Qm
IG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdD4mKTsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQXR0cmlidXRlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBdHRyaWJ1dGUuaAkocmV2aXNp
b24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQXR0cmlidXRlLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkF0dHJpYnV0ZV9oCisjZGVmaW5lIFdlYkF0
dHJpYnV0ZV9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJQcml2YXRl
UHRyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgQXR0cmlidXRlOyB9CisjaWYgV0VC
S0lUX0lNUExFTUVOVEFUSU9OCituYW1lc3BhY2UgV1RGIHsgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IGNsYXNzIFBhc3NSZWZQdHI7IH0KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNz
IFdlYlN0cmluZzsKKworLy8gUHJvdmlkZXMgcmVhZG9ubHkgYWNjZXNzIHRvIHNvbWUgcHJvcGVy
dGllcyBvZiBhIERPTSBhdHRyaWJ1dGUuCitjbGFzcyBXZWJBdHRyaWJ1dGUgeworcHVibGljOgor
ICAgIH5XZWJBdHRyaWJ1dGUoKSB7IHJlc2V0KCk7IH0KKworICAgIFdlYkF0dHJpYnV0ZSgpIHsg
fQorICAgIFdlYkF0dHJpYnV0ZShjb25zdCBXZWJBdHRyaWJ1dGUmIG4pIHsgYXNzaWduKG4pOyB9
CisgICAgV2ViQXR0cmlidXRlJiBvcGVyYXRvcj0oY29uc3QgV2ViQXR0cmlidXRlJiBuKQorICAg
IHsKKyAgICAgICAgYXNzaWduKG4pOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisg
ICAgV0VCS0lUX0FQSSB2b2lkIHJlc2V0KCk7CisgICAgV0VCS0lUX0FQSSB2b2lkIGFzc2lnbihj
b25zdCBXZWJBdHRyaWJ1dGUmKTsKKworICAgIFdFQktJVF9BUEkgV2ViU3RyaW5nIGxvY2FsTmFt
ZSgpIGNvbnN0OworICAgIFdFQktJVF9BUEkgV2ViU3RyaW5nIHZhbHVlKCkgY29uc3Q7CisKKyNp
ZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJBdHRyaWJ1dGUoY29uc3QgV1RGOjpQYXNz
UmVmUHRyPFdlYkNvcmU6OkF0dHJpYnV0ZT4mKTsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdl
YlByaXZhdGVQdHI8V2ViQ29yZTo6QXR0cmlidXRlPiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkF0dHJpYnV0ZS5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5
bGUKICAgKyBMRgoKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRG9jdW1lbnRUeXBl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEb2N1bWVudFR5cGUu
aAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRG9jdW1lbnRUeXBl
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkRvY3VtZW50VHlwZV9o
CisjZGVmaW5lIFdlYkRvY3VtZW50VHlwZV9oCisKKyNpbmNsdWRlICJXZWJOb2RlLmgiCisKKyNp
ZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KK25hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgRG9jdW1l
bnRUeXBlOyB9CituYW1lc3BhY2UgV1RGIHsgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFBh
c3NSZWZQdHI7IH0KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYlN0cmlu
ZzsKKworLy8gUHJvdmlkZXMgcmVhZG9ubHkgYWNjZXNzIHRvIHNvbWUgcHJvcGVydGllcyBvZiBh
IERPTSBkb2N1bWVudCB0eXBlLgorY2xhc3MgV2ViRG9jdW1lbnRUeXBlIDogcHVibGljIFdlYk5v
ZGUgeworcHVibGljOgorICAgIFdlYkRvY3VtZW50VHlwZSgpIHsgfQorICAgIFdlYkRvY3VtZW50
VHlwZShjb25zdCBXZWJEb2N1bWVudFR5cGUmIGUpIDogV2ViTm9kZShlKSB7IH0KKworICAgIFdl
YkRvY3VtZW50VHlwZSYgb3BlcmF0b3I9KGNvbnN0IFdlYkRvY3VtZW50VHlwZSYgZSkKKyAgICB7
CisgICAgICAgIFdlYk5vZGU6OmFzc2lnbihlKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAg
IH0KKyAgICB2b2lkIGFzc2lnbihjb25zdCBXZWJEb2N1bWVudFR5cGUmIGUpIHsgV2ViTm9kZTo6
YXNzaWduKGUpOyB9CisKKyAgICBXRUJLSVRfQVBJIFdlYlN0cmluZyBuYW1lKCkgY29uc3Q7CisK
KyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJEb2N1bWVudFR5cGUoY29uc3QgV1RG
OjpQYXNzUmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50VHlwZT4mKTsKKyAgICBXZWJEb2N1bWVudFR5
cGUmIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnRUeXBl
PiYpOworICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudFR5cGU+
KCkgY29uc3Q7CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYK
ClByb3BlcnR5IGNoYW5nZXMgb246IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRG9jdW1lbnRU
eXBlLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJFbGVtZW50LmgJKHJldmlzaW9uIDYzMDAzKQorKysgV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBFbGVtZW50OyB9CiAjZW5kaWYKIAogbmFtZXNw
YWNlIFdlYktpdCB7CitjbGFzcyBXZWJOYW1lZE5vZGVNYXA7CisKICAgICAvLyBQcm92aWRlcyBh
Y2Nlc3MgdG8gc29tZSBwcm9wZXJ0aWVzIG9mIGEgRE9NIGVsZW1lbnQgbm9kZS4KICAgICBjbGFz
cyBXZWJFbGVtZW50IDogcHVibGljIFdlYk5vZGUgewogICAgIHB1YmxpYzoKQEAgLTUzLDYgKzU1
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIFdFQktJVF9BUEkgYm9vbCBoYXNBdHRy
aWJ1dGUoY29uc3QgV2ViU3RyaW5nJikgY29uc3Q7CiAgICAgICAgIFdFQktJVF9BUEkgV2ViU3Ry
aW5nIGdldEF0dHJpYnV0ZShjb25zdCBXZWJTdHJpbmcmKSBjb25zdDsKICAgICAgICAgV0VCS0lU
X0FQSSBib29sIHNldEF0dHJpYnV0ZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0
cmluZyYgdmFsdWUpOworICAgICAgICBXRUJLSVRfQVBJIFdlYk5hbWVkTm9kZU1hcCBhdHRyaWJ1
dGVzKCkgY29uc3Q7CiAgICAgICAgIFdFQktJVF9BUEkgV2ViU3RyaW5nIGlubmVyVGV4dCgpIGNv
bnN0OwogCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCkluZGV4OiBXZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYk5hbWVkTm9kZU1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViTmFtZWROb2RlTWFwLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYk5hbWVkTm9kZU1hcC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXZWJOYW1lZE5vZGVNYXBfaAorI2RlZmluZSBXZWJOYW1lZE5vZGVNYXBfaAorCisjaW5j
bHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViUHJpdmF0ZVB0ci5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7IGNsYXNzIE5hbWVkTm9kZU1hcDsgfQorI2lmIFdFQktJVF9JTVBMRU1FTlRB
VElPTgorbmFtZXNwYWNlIFdURiB7IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBQYXNzUmVm
UHRyOyB9CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJBdHRyaWJ1dGU7
CisKKy8vIFByb3ZpZGVzIHJlYWRvbmx5IGFjY2VzcyB0byBzb21lIHByb3BlcnRpZXMgb2YgYSBE
T00gYXR0cmlidXRlIG1hcC4KK2NsYXNzIFdlYk5hbWVkTm9kZU1hcCB7CitwdWJsaWM6CisgICAg
fldlYk5hbWVkTm9kZU1hcCgpIHsgcmVzZXQoKTsgfQorCisgICAgV2ViTmFtZWROb2RlTWFwKCkg
eyB9CisgICAgV2ViTmFtZWROb2RlTWFwKGNvbnN0IFdlYk5hbWVkTm9kZU1hcCYgbikgeyBhc3Np
Z24obik7IH0KKyAgICBXZWJOYW1lZE5vZGVNYXAmIG9wZXJhdG9yPShjb25zdCBXZWJOYW1lZE5v
ZGVNYXAmIG4pCisgICAgeworICAgICAgICBhc3NpZ24obik7CisgICAgICAgIHJldHVybiAqdGhp
czsKKyAgICB9CisKKyAgICBXRUJLSVRfQVBJIHZvaWQgcmVzZXQoKTsKKyAgICBXRUJLSVRfQVBJ
IHZvaWQgYXNzaWduKGNvbnN0IFdlYk5hbWVkTm9kZU1hcCYpOworCisgICAgV0VCS0lUX0FQSSB1
bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKKyAgICBXRUJLSVRfQVBJIFdlYkF0dHJpYnV0ZSBhdHRy
aWJ1dGVJdGVtKHVuc2lnbmVkKSBjb25zdDsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgor
ICAgIFdlYk5hbWVkTm9kZU1hcChjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6TmFtZWRO
b2RlTWFwPiYpOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV2ViUHJpdmF0ZVB0cjxXZWJDb3Jl
OjpOYW1lZE5vZGVNYXA+IG1fcHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
TmFtZWROb2RlTWFwLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJ
bmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJOb2RlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJOb2RlLmgJKHJldmlzaW9uIDYzMDAzKQorKysgV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDEwICszOSwx
MiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIE5vZGU7IH0KIAogbmFtZXNwYWNlIFdlYktp
dCB7CiBjbGFzcyBXZWJEb2N1bWVudDsKK2NsYXNzIFdlYkVsZW1lbnQ7CiBjbGFzcyBXZWJFdmVu
dExpc3RlbmVyOwogY2xhc3MgV2ViRXZlbnRMaXN0ZW5lclByaXZhdGU7CiBjbGFzcyBXZWJGcmFt
ZTsKIGNsYXNzIFdlYk5vZGVMaXN0OworY2xhc3MgV2ViUmVuZGVyU3R5bGU7CiAKIC8vIFByb3Zp
ZGVzIGFjY2VzcyB0byBzb21lIHByb3BlcnRpZXMgb2YgYSBET00gbm9kZS4KIGNsYXNzIFdlYk5v
ZGUgewpAQCAtMTAxLDYgKzEwMyw4IEBAIHB1YmxpYzoKICAgICBXRUJLSVRfQVBJIHZvaWQgcmVt
b3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBXZWJTdHJpbmcmIGV2ZW50VHlwZSwgV2ViRXZlbnRMaXN0
ZW5lciogbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSk7CiAgICAgV0VCS0lUX0FQSSB2b2lkIHNp
bXVsYXRlQ2xpY2soKTsKICAgICBXRUJLSVRfQVBJIFdlYk5vZGVMaXN0IGdldEVsZW1lbnRzQnlU
YWdOYW1lKGNvbnN0IFdlYlN0cmluZyYpIGNvbnN0OworICAgIFdFQktJVF9BUEkgYm9vbCBoYXND
b21wdXRlZFN0eWxlKCkgY29uc3Q7CisgICAgV0VCS0lUX0FQSSBXZWJSZW5kZXJTdHlsZSBjb21w
dXRlZFN0eWxlKCkgY29uc3Q7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIG5vZGUgaGFz
IGEgbm9uLWVtcHR5IGJvdW5kaW5nIGJveCBpbiBsYXlvdXQuCiAgICAgLy8gVGhpcyBkb2VzIG5v
dCAxMDAlIGd1YXJhbnRlZSB0aGUgdXNlciBjYW4gc2VlIGl0LCBidXQgaXMgcHJldHR5IGNsb3Nl
LgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJSZW5kZXJTdHlsZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUmVuZGVyU3R5bGUuaAkocmV2aXNpb24g
MCkKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUmVuZGVyU3R5bGUuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUmVuZGVyU3R5bGVfaAorI2RlZmluZSBXZWJS
ZW5kZXJTdHlsZV9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJQcml2
YXRlUHRyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgUmVuZGVyU3R5bGU7IH0KKyNp
ZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KK25hbWVzcGFjZSBXVEYgeyB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gY2xhc3MgUGFzc1JlZlB0cjsgfQorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgewor
Y2xhc3MgV2ViU3RyaW5nOworCisvLyBQcm92aWRlcyByZWFkb25seSBhY2Nlc3MgdG8gc29tZSBw
cm9wZXJ0aWVzIG9mIGEgRE9NIG5vZGUncyBzdHlsZS4KK2NsYXNzIFdlYlJlbmRlclN0eWxlIHsK
K3B1YmxpYzoKKyAgICB+V2ViUmVuZGVyU3R5bGUoKSB7IHJlc2V0KCk7IH0KKworICAgIFdlYlJl
bmRlclN0eWxlKCkgeyB9CisgICAgV2ViUmVuZGVyU3R5bGUoY29uc3QgV2ViUmVuZGVyU3R5bGUm
IG4pIHsgYXNzaWduKG4pOyB9CisgICAgV2ViUmVuZGVyU3R5bGUmIG9wZXJhdG9yPShjb25zdCBX
ZWJSZW5kZXJTdHlsZSYgbikKKyAgICB7CisgICAgICAgIGFzc2lnbihuKTsKKyAgICAgICAgcmV0
dXJuICp0aGlzOworICAgIH0KKworICAgIFdFQktJVF9BUEkgdm9pZCByZXNldCgpOworICAgIFdF
QktJVF9BUEkgdm9pZCBhc3NpZ24oY29uc3QgV2ViUmVuZGVyU3R5bGUmKTsKKworICAgIFdFQktJ
VF9BUEkgV2ViU3RyaW5nIGRpc3BsYXkoKSBjb25zdDsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRB
VElPTgorICAgIFdlYlJlbmRlclN0eWxlKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpS
ZW5kZXJTdHlsZT4mKTsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdlYlByaXZhdGVQdHI8V2Vi
Q29yZTo6UmVuZGVyU3R5bGU+IG1fcHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViUmVuZGVyU3R5bGUuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYK
CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5j
cHAJKHJldmlzaW9uIDYzMDAzKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIsMTMgQEAKICNpbmNsdWRl
ICJXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCiAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUg
IkV2ZW50SGFuZGxlci5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIk5vZGUu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKKyNpbmNsdWRlICJXZWJEb2N1
bWVudC5oIgorI2luY2x1ZGUgIldlYk5vZGUuaCIKICNpbmNsdWRlICJXZWJQb2ludC5oIgogI2lu
Y2x1ZGUgIldlYlJlY3QuaCIKICNpbmNsdWRlICJXZWJTdHJpbmcuaCIKQEAgLTQwMSw2ICs0MDUs
MzkgQEAgV2ViU3RyaW5nIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OnRpdGxlKAogICAgIHJldHVy
biBtX3ByaXZhdGUtPnRpdGxlKCk7CiB9CiAKKworV2ViTm9kZSBXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojpub2RlKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcHJpdmF0ZSkKKyAgICAgICAgcmV0dXJu
IFdlYk5vZGUoKTsKKworICAgIG1fcHJpdmF0ZS0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CisKKyAg
ICBpZiAoIW1fcHJpdmF0ZS0+aXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkpCisgICAgICAg
IHJldHVybiBXZWJOb2RlKCk7CisKKyAgICBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KiByZW5k
ZXJPYmplY3QgPQorICAgICAgICByZWludGVycHJldF9jYXN0PEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QqPihtX3ByaXZhdGUpOworICAgIE5vZGUqIG5vZGUgPSByZW5kZXJPYmplY3QtPm5vZGUo
KTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiBXZWJOb2RlKCk7CisKKyAgICByZXR1
cm4gV2ViTm9kZShub2RlKTsKK30KKworV2ViRG9jdW1lbnQgV2ViQWNjZXNzaWJpbGl0eU9iamVj
dDo6ZG9jdW1lbnQoKSBjb25zdAoreworICAgIGlmICghbV9wcml2YXRlKQorICAgICAgICByZXR1
cm4gV2ViRG9jdW1lbnQoKTsKKworICAgIG1fcHJpdmF0ZS0+dXBkYXRlQmFja2luZ1N0b3JlKCk7
CisKKyAgICBpZiAoIW1fcHJpdmF0ZS0+aXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkpCisg
ICAgICAgIHJldHVybiBXZWJEb2N1bWVudCgpOworCisgICAgcmV0dXJuIFdlYkRvY3VtZW50KG1f
cHJpdmF0ZS0+ZG9jdW1lbnQoKSk7Cit9CisKIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OldlYkFj
Y2Vzc2liaWxpdHlPYmplY3QoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q+JiBvYmplY3QpCiAgICAgOiBtX3ByaXZhdGUoc3RhdGljX2Nhc3Q8V2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFByaXZhdGUqPihvYmplY3QucmVsZWFzZVJlZigpKSkKIHsKSW5kZXg6
IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViQXR0cmlidXRlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkF0dHJpYnV0ZS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkF0dHJpYnV0ZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQXR0cmlidXRlLmgiCisKKyNpbmNs
dWRlICJBdHRyaWJ1dGUuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCisjaW5jbHVk
ZSAiV2ViU3RyaW5nLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKwordm9pZCBXZWJBdHRyaWJ1dGU6OnJlc2V0KCkKK3sKKyAgICBtX3ByaXZhdGUu
cmVzZXQoKTsKK30KKwordm9pZCBXZWJBdHRyaWJ1dGU6OmFzc2lnbihjb25zdCBXZWJBdHRyaWJ1
dGUmIG90aGVyKQoreworICAgIG1fcHJpdmF0ZSA9IG90aGVyLm1fcHJpdmF0ZTsKK30KKworV2Vi
QXR0cmlidXRlOjpXZWJBdHRyaWJ1dGUoY29uc3QgUGFzc1JlZlB0cjxBdHRyaWJ1dGU+JiBvdGhl
cikKKyAgICA6IG1fcHJpdmF0ZShvdGhlcikKK3sKK30KKworV2ViU3RyaW5nIFdlYkF0dHJpYnV0
ZTo6bG9jYWxOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViU3RyaW5nKG1fcHJpdmF0ZS0+
bG9jYWxOYW1lKCkpOworfQorCitXZWJTdHJpbmcgV2ViQXR0cmlidXRlOjp2YWx1ZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIFdlYlN0cmluZyhtX3ByaXZhdGUtPnZhbHVlKCkpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYktpdC9jaHJvbWl1bS9z
cmMvV2ViQXR0cmlidXRlLmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsg
TEYKCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRvY3VtZW50VHlwZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEb2N1bWVudFR5cGUuY3BwCShyZXZpc2lv
biAwKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEb2N1bWVudFR5cGUuY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkRv
Y3VtZW50VHlwZS5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnRUeXBlLmgiCisjaW5jbHVkZSAiV2Vi
U3RyaW5nLmgiCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlN0cmluZyBXZWJEb2N1bWVu
dFR5cGU6Om5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBXZWJTdHJpbmcoY29uc3RVbndyYXA8
RG9jdW1lbnRUeXBlPigpLT5uYW1lKCkpOworfQorCitXZWJEb2N1bWVudFR5cGU6OldlYkRvY3Vt
ZW50VHlwZShjb25zdCBQYXNzUmVmUHRyPERvY3VtZW50VHlwZT4mIGVsZW0pCisgICAgOiBXZWJO
b2RlKGVsZW0pCit7Cit9CisKK1dlYkRvY3VtZW50VHlwZSYgV2ViRG9jdW1lbnRUeXBlOjpvcGVy
YXRvcj0oY29uc3QgUGFzc1JlZlB0cjxEb2N1bWVudFR5cGU+JiBlbGVtKQoreworICAgIG1fcHJp
dmF0ZSA9IGVsZW07CisgICAgcmV0dXJuICp0aGlzOworfQorCitXZWJEb2N1bWVudFR5cGU6Om9w
ZXJhdG9yIFBhc3NSZWZQdHI8RG9jdW1lbnRUeXBlPigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PERvY3VtZW50VHlwZSo+KG1fcHJpdmF0ZS5nZXQoKSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJEb2N1bWVudFR5cGUuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBM
RgoKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFbGVtZW50LmNwcAkocmV2aXNpb24gNjMwMDMpCisr
KyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Niw2ICszNiw4IEBACiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KIAorI2luY2x1ZGUgIldlYk5hbWVkTm9kZU1hcC5oIgorCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC03Myw2ICs3NSwxMSBAQCBi
b29sIFdlYkVsZW1lbnQ6OnNldEF0dHJpYnV0ZShjb25zdCBXZWJTCiAgICAgcmV0dXJuICFleGNl
cHRpb25Db2RlOwogfQogCitXZWJOYW1lZE5vZGVNYXAgV2ViRWxlbWVudDo6YXR0cmlidXRlcygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYk5hbWVkTm9kZU1hcChtX3ByaXZhdGUtPmF0dHJpYnV0
ZXMoKSk7Cit9CisKIFdlYlN0cmluZyBXZWJFbGVtZW50Ojppbm5lclRleHQoKSBjb25zdAogewog
ICAgIHJldHVybiBjb25zdFVud3JhcDxFbGVtZW50PigpLT5pbm5lclRleHQoKTsKSW5kZXg6IFdl
YktpdC9jaHJvbWl1bS9zcmMvV2ViTmFtZWROb2RlTWFwLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvY2hyb21pdW0vc3JjL1dlYk5hbWVkTm9kZU1hcC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJL
aXQvY2hyb21pdW0vc3JjL1dlYk5hbWVkTm9kZU1hcC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViTmFtZWROb2RlTWFwLmgi
CisKKyNpbmNsdWRlICJOYW1lZE5vZGVNYXAuaCIKKyNpbmNsdWRlICJOb2RlLmgiCisjaW5jbHVk
ZSAiV2ViQXR0cmlidXRlLmgiCisjaW5jbHVkZSAiV2ViTm9kZS5oIgorI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2Vi
S2l0IHsKKwordm9pZCBXZWJOYW1lZE5vZGVNYXA6OnJlc2V0KCkKK3sKKyAgICBtX3ByaXZhdGUu
cmVzZXQoKTsKK30KKwordm9pZCBXZWJOYW1lZE5vZGVNYXA6OmFzc2lnbihjb25zdCBXZWJOYW1l
ZE5vZGVNYXAmIG90aGVyKQoreworICAgIG1fcHJpdmF0ZSA9IG90aGVyLm1fcHJpdmF0ZTsKK30K
KworV2ViTmFtZWROb2RlTWFwOjpXZWJOYW1lZE5vZGVNYXAoY29uc3QgUGFzc1JlZlB0cjxOYW1l
ZE5vZGVNYXA+JiBvdGhlcikKKyAgICA6IG1fcHJpdmF0ZShvdGhlcikKK3sKK30KKwordW5zaWdu
ZWQgV2ViTmFtZWROb2RlTWFwOjpsZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZh
dGUtPmxlbmd0aCgpOworfQorCitXZWJBdHRyaWJ1dGUgV2ViTmFtZWROb2RlTWFwOjphdHRyaWJ1
dGVJdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAoreworICAgIHJldHVybiBXZWJBdHRyaWJ1dGUo
bV9wcml2YXRlLT5hdHRyaWJ1dGVJdGVtKGluZGV4KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJOYW1lZE5v
ZGVNYXAuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6
IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJOb2RlLmNwcAkocmV2aXNpb24gNjMwMDMpCisrKyBXZWJLaXQvY2hyb21p
dW0vc3JjL1dlYk5vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxNyArMzIsMjEgQEAKICNp
bmNsdWRlICJXZWJOb2RlLmgiCiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkVs
ZW1lbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50
SW1wbC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJOb2RlTGlzdC5oIgorI2luY2x1
ZGUgIlJlbmRlclN0eWxlLmgiCiAKICNpbmNsdWRlICJFdmVudExpc3RlbmVyV3JhcHBlci5oIgog
I2luY2x1ZGUgIldlYkRvY3VtZW50LmgiCisjaW5jbHVkZSAiV2ViRWxlbWVudC5oIgogI2luY2x1
ZGUgIldlYkV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUg
IldlYkZyYW1lSW1wbC5oIgogI2luY2x1ZGUgIldlYk5vZGVMaXN0LmgiCisjaW5jbHVkZSAiV2Vi
UmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJXZWJTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJWZWN0
b3IuaCIKIApAQCAtMTc4LDYgKzE4MiwxNiBAQCBXZWJOb2RlTGlzdCBXZWJOb2RlOjpnZXRFbGVt
ZW50c0J5VGFnTmFtCiAgICAgcmV0dXJuIFdlYk5vZGVMaXN0KG1fcHJpdmF0ZS0+Z2V0RWxlbWVu
dHNCeVRhZ05hbWUodGFnKSk7CiB9CiAKK2Jvb2wgV2ViTm9kZTo6aGFzQ29tcHV0ZWRTdHlsZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y29tcHV0ZWRTdHlsZSgpOworfQorCitX
ZWJSZW5kZXJTdHlsZSBXZWJOb2RlOjpjb21wdXRlZFN0eWxlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gV2ViUmVuZGVyU3R5bGUobV9wcml2YXRlLT5jb21wdXRlZFN0eWxlKCkpOworfQorCiBib29s
IFdlYk5vZGU6Omhhc05vbkVtcHR5Qm91bmRpbmdCb3goKSBjb25zdAogewogICAgIHJldHVybiBt
X3ByaXZhdGUtPmhhc05vbkVtcHR5Qm91bmRpbmdCb3goKTsKSW5kZXg6IFdlYktpdC9jaHJvbWl1
bS9zcmMvV2ViUmVuZGVyU3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9z
cmMvV2ViUmVuZGVyU3R5bGUuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJSZW5kZXJTdHlsZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUmVuZGVyU3R5bGUuaCIKKworI2luY2x1ZGUgIkNT
U1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKKyNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgorI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFdlYlJl
bmRlclN0eWxlOjpyZXNldCgpCit7CisgICAgbV9wcml2YXRlLnJlc2V0KCk7Cit9CisKK3ZvaWQg
V2ViUmVuZGVyU3R5bGU6OmFzc2lnbihjb25zdCBXZWJSZW5kZXJTdHlsZSYgb3RoZXIpCit7Cisg
ICAgbV9wcml2YXRlID0gb3RoZXIubV9wcml2YXRlOworfQorCitXZWJSZW5kZXJTdHlsZTo6V2Vi
UmVuZGVyU3R5bGUoY29uc3QgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4mIG90aGVyKQorICAgIDog
bV9wcml2YXRlKG90aGVyKQoreworfQorCitXZWJTdHJpbmcgV2ViUmVuZGVyU3R5bGU6OmRpc3Bs
YXkoKSBjb25zdAoreworICAgIHJldHVybiBXZWJTdHJpbmcoQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZShtX3ByaXZhdGUtPmRpc3BsYXkoKSktPmdldFN0cmluZ1ZhbHVlKCkpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYktpdC9jaHJvbWl1bS9z
cmMvV2ViUmVuZGVyU3R5bGUuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAg
KyBMRgoK
</data>

          </attachment>
      

    </bug>

</bugzilla>