<?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>31718</bug_id>
          
          <creation_ts>2009-11-20 04:16:24 -0800</creation_ts>
          <short_desc>Framework to show form validation message for invalid controls</short_desc>
          <delta_ts>2010-11-04 00:06:43 -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>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>34924</dependson>
          <blocked>28649</blocked>
    
    <blocked>48980</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kent Tamura">tkent</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>adele</cc>
    
    <cc>aroben</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>michelangelo</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>165272</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-11-20 04:16:24 -0800</bug_when>
    <thetext>- Adds methods to show/hide validation messages to ChromeClient
- A form control calls them if it has focus and it is invalid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187802</commentid>
    <comment_count>1</comment_count>
      <attachid>48145</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-02-04 08:11:22 -0800</bug_when>
    <thetext>Created attachment 48145
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187877</commentid>
    <comment_count>2</comment_count>
      <attachid>48145</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-02-04 11:31:17 -0800</bug_when>
    <thetext>Comment on attachment 48145
Proposed patch

&gt; +    void mayShowValidationMessage();
&gt; +    void mayHideValidationMessage();

A single update function would be better than these two.

&gt; +    // A validation message for this element is shown.
&gt; +    bool m_validationMessageShown : 1;

For boolean data members we normally use a name that fits the sentence &quot;form control element &lt;xxx&gt;&quot;.

But I think what you may need here is a copy of the message that was last sent to the client, rather than just a boolean.

&gt; +        virtual void showFormValidationMessage(const Node*, const IntRect&amp;, FrameView*, const String&amp;) { };
&gt; +        virtual void hideFormValidationMessage(const Node*) { };

Should be HTMLFormControlElement* instead of Node*. Also no good reason to use const Node* since these objects are in a tree and const pointers are not all that useful.

No semicolons after &quot;{ }&quot;.

I don’t understand the value of the IntRect and FrameView arguments. What rectangle? What guarantees that a form element is rectangular, given that it can be transformed arbitrarily? Why can’t the caller get things like the rectangle and view from the form control element using the usual APIs instead of having them explicitly passed? Maybe this is best for the current usage in Chromium but I don’t think it’s quite right. I would leave all that complexity out of the chrome client hookup.

Further, if you pass a rectangle and frame view, then who is responsible for calling with a new rectangle if the page changes? It&apos;s clearly wrong to send a rectangle for one moment in time without providing for tracking over time, and it&apos;s not useful to supply the FrameView since it can easily be derived.

If the validation interface is going to be shown overlaying the web page, I’d like to see more support for it in WebKit itself. It’s unpleasant to have to redo this feature for each platform separately. It’s good to have flexibility but ideally we would share as much common code as necessary.

I’m not sure it makes sense to have separate hide/show calls for this -- this should instead just be a single set function. All the logic would end up simpler and we can use either a null or empty string to mean &quot;hide&quot;.

Is the client guaranteed to receive a call for a form element if it’s removed from the document? What about when a document moves out of the view or back into the view during navigation? I think that sending the call at destructor time is clearly bad, because these are reference-counted times and the timing of the call to the destructor is unpredictable. More thought needs to go into this aspect of the design.

How can we test this? Can you hook this up to DumpRenderTree? I don’t think we should land the ChromeClient level alone without the upper level hookup that allows testing.

What prevents the same validation message from being repeatedly sent to the client?

There&apos;s a lot to think about here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188913</commentid>
    <comment_count>3</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-02-08 23:34:12 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 48145 [details])
&gt; &gt; +    void mayShowValidationMessage();
&gt; &gt; +    void mayHideValidationMessage();
&gt; 
&gt; A single update function would be better than these two.

ok, I&apos;ll merge them into updateValidationMessage(const String&amp;).

&gt; &gt; +    // A validation message for this element is shown.
&gt; &gt; +    bool m_validationMessageShown : 1;
&gt; 
&gt; For boolean data members we normally use a name that fits the sentence &quot;form
&gt; control element &lt;xxx&gt;&quot;.
&gt; 
&gt; But I think what you may need here is a copy of the message that was last sent
&gt; to the client, rather than just a boolean.
&gt; 
&gt; &gt; +        virtual void showFormValidationMessage(const Node*, const IntRect&amp;, FrameView*, const String&amp;) { };
&gt; &gt; +        virtual void hideFormValidationMessage(const Node*) { };
&gt; 
&gt; Should be HTMLFormControlElement* instead of Node*. Also no good reason to use
&gt; const Node* since these objects are in a tree and const pointers are not all
&gt; that useful.
&gt; 
&gt; No semicolons after &quot;{ }&quot;.
&gt; 
&gt; I don’t understand the value of the IntRect and FrameView arguments. What
&gt; rectangle? What guarantees that a form element is rectangular, given that it
&gt; can be transformed arbitrarily? Why can’t the caller get things like the
&gt; rectangle and view from the form control element using the usual APIs instead
&gt; of having them explicitly passed? Maybe this is best for the current usage in
&gt; Chromium but I don’t think it’s quite right. I would leave all that complexity
&gt; out of the chrome client hookup.

Ah, I didn&apos;t take care of transformation. You&apos;re right. We shouldn&apos;t provide a rectangle here.

&gt; 
&gt; Further, if you pass a rectangle and frame view, then who is responsible for
&gt; calling with a new rectangle if the page changes? It&apos;s clearly wrong to send a
&gt; rectangle for one moment in time without providing for tracking over time, and
&gt; it&apos;s not useful to supply the FrameView since it can easily be derived.
&gt; 
&gt; If the validation interface is going to be shown overlaying the web page, I’d
&gt; like to see more support for it in WebKit itself. It’s unpleasant to have to
&gt; redo this feature for each platform separately. It’s good to have flexibility
&gt; but ideally we would share as much common code as necessary.

I see. However I don&apos;t have any idea how to support.
I thought validation messages were similar to tooltips or history completions. They don&apos;t have common support code.

&gt; 
&gt; I’m not sure it makes sense to have separate hide/show calls for this -- this
&gt; should instead just be a single set function. All the logic would end up
&gt; simpler and we can use either a null or empty string to mean &quot;hide&quot;.
&gt; 
&gt; Is the client guaranteed to receive a call for a form element if it’s removed
&gt; from the document? What about when a document moves out of the view or back
&gt; into the view during navigation? I think that sending the call at destructor
&gt; time is clearly bad, because these are reference-counted times and the timing
&gt; of the call to the destructor is unpredictable. More thought needs to go into
&gt; this aspect of the design.

I assumed ChromeClient implementations were responsible for them.  That is to say, the implementations may hide validation messages even if hideFormValidationMessage() is not called.


&gt; How can we test this? Can you hook this up to DumpRenderTree? I don’t think we
&gt; should land the ChromeClient level alone without the upper level hookup that
&gt; allows testing.

Hmm, how about introducing layoutTestController.visibleValidationMessage(element) ?

&gt; What prevents the same validation message from being repeatedly sent to the
&gt; client?

It never happens because of the code in HTMLFormControlElement.cpp.  If HTMLFormControlElement has a visible message string as you advised, we can double-check it.

BTW, I suppose a validation message is shown as &quot;Balloon Tooltip&quot; in Windows, and couldn&apos;t find such UI control for Mac. Do you have any idea on Mac UI?
http://msdn.microsoft.com/en-us/library/bb760252(VS.85).aspx


I&apos;ll update the patch later (a few days or more).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189070</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-02-09 10:40:27 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; &gt; Further, if you pass a rectangle and frame view, then who is responsible for
&gt; &gt; calling with a new rectangle if the page changes? It&apos;s clearly wrong to send a
&gt; &gt; rectangle for one moment in time without providing for tracking over time, and
&gt; &gt; it&apos;s not useful to supply the FrameView since it can easily be derived.
&gt; &gt; 
&gt; &gt; If the validation interface is going to be shown overlaying the web page, I’d
&gt; &gt; like to see more support for it in WebKit itself. It’s unpleasant to have to
&gt; &gt; redo this feature for each platform separately. It’s good to have flexibility
&gt; &gt; but ideally we would share as much common code as necessary.
&gt; 
&gt; I see. However I don&apos;t have any idea how to support.
&gt; I thought validation messages were similar to tooltips or history completions.
&gt; They don&apos;t have common support code.

Tooltips are indeed updated as elements move on the page. I’m not sure about completion, but I believe they also update.

Neither has an API that involves passing a rectangle to the ChromeClient, so I don’t think these are similar enough.

Imagine a page where there is a zip code field that appears only if the country is U.S. You enter some invalid data below and then the user changes the country to non-U.S.. So the invalid field moves up on the page and the rectangle that was passed to the ChromeClient is now invalid. How would you suggest this work?

&gt; &gt; I’m not sure it makes sense to have separate hide/show calls for this -- this
&gt; &gt; should instead just be a single set function. All the logic would end up
&gt; &gt; simpler and we can use either a null or empty string to mean &quot;hide&quot;.
&gt; &gt; 
&gt; &gt; Is the client guaranteed to receive a call for a form element if it’s removed
&gt; &gt; from the document? What about when a document moves out of the view or back
&gt; &gt; into the view during navigation? I think that sending the call at destructor
&gt; &gt; time is clearly bad, because these are reference-counted times and the timing
&gt; &gt; of the call to the destructor is unpredictable. More thought needs to go into
&gt; &gt; this aspect of the design.
&gt; 
&gt; I assumed ChromeClient implementations were responsible for them.  That is to
&gt; say, the implementations may hide validation messages even if
&gt; hideFormValidationMessage() is not called.

I think we want most of the logic to be in the engine. The more code that client applications need, the more we’ll have bugs and an unequal playing field between clients. We want WebKit to be as easy to use as possible. The policy comes from the client, but as much of the sensible behavior as possible should be built into WebKit.

Specifically, simple cases like elements going away should not require extra explicit code in every client.

&gt; &gt; How can we test this? Can you hook this up to DumpRenderTree? I don’t think we
&gt; &gt; should land the ChromeClient level alone without the upper level hookup that
&gt; &gt; allows testing.
&gt; 
&gt; Hmm, how about introducing
&gt; layoutTestController.visibleValidationMessage(element) ?

&gt; BTW, I suppose a validation message is shown as &quot;Balloon Tooltip&quot; in Windows,
&gt; and couldn&apos;t find such UI control for Mac. Do you have any idea on Mac UI?

The very notion of a one size fits all “validation failed” UI seems a bit quaint and naive to me.

But I suggest looking for interface in Mac OS X UI that implement this type of thing. Take a Mac and poke around at the system until you can find something. I believe there is an example like this when you install Mac OS X and set up your initial account name and password. Tap some other Mac OS X experts to find some examples and then we can make an informed decision.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191617</commentid>
    <comment_count>5</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-02-18 08:32:05 -0800</bug_when>
    <thetext>I had some investigation.

* Tooltips for title= attributes
 ChromeClient::setTooltip() doesn&apos;t pass location information. It just shows the specified string as a tooltip, and disappears a few seconds later. A tooltip appears at the mouse pointer position initially, and never moves.

* History completion popup in Chromium
 A history completion popup appears on the focused element, and doesn&apos;t move even if the focused element moves.  It is implemented at outside of WebCore.

* When should we hide a validation message?
 Node::detach().  We should not show validation messages for a node with no renderer node.

* Keep track of the target element position
 To hook layout() or paint() seems costly. I think polling the position periodically is better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193722</commentid>
    <comment_count>6</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-02-25 07:51:55 -0800</bug_when>
    <thetext>The new patch is ready. I&apos;ll upload it after Bug#34924 is landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204325</commentid>
    <comment_count>7</comment_count>
      <attachid>51697</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-03-25 17:23:45 -0700</bug_when>
    <thetext>Created attachment 51697
Screenshot of this implementation on Safari/Windows</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204348</commentid>
    <comment_count>8</comment_count>
      <attachid>51702</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-03-25 17:54:10 -0700</bug_when>
    <thetext>Created attachment 51702
Proposed patch (rev.2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204411</commentid>
    <comment_count>9</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-03-25 22:27:50 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Created an attachment (id=51702) [details]
&gt; Proposed patch (rev.2)

Notable differences from the first patch are:
 - Introduce layoutTestController.visibleValidationMessageForElementById()

 - WebCore::Chrome manages timing of showing / hiding validation messages
  A message is hidden 5 seconds later, etc.

 - Has a Windows implementation
  No Mac implementation.  It would be another patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205278</commentid>
    <comment_count>10</comment_count>
      <attachid>51702</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-03-28 19:15:05 -0700</bug_when>
    <thetext>Comment on attachment 51702
Proposed patch (rev.2)

&gt; +    // Returns the top-left, top-right, bottom-left, bottom-right corner
&gt; +    // locations with transformations. This returns an empty vector if the
&gt; +    // element has no renderer.
&gt; +    // Suppose that &apos;points&apos; is a result of getTransformedCorners(), you can
&gt; +    // access each of corners with symbolic indexes:
&gt; +    //   points[TopLeftCorner]
&gt; +    //   points[TopRightCorner]
&gt; +    //   points[BottomLeftCorner]
&gt; +    //   points[bottomRightCorner]
&gt; +    virtual Vector&lt;FloatPoint&gt; getTransformedCorners() const;
&gt; +    enum { // Indexes for the result of getTransformedCorners().
&gt; +        TopLeftCorner = 0,
&gt; +        TopRightCorner,
&gt; +        BottomLeftCorner,
&gt; +        BottomRightCorner
&gt; +    };

Why doesn&apos;t this just a FloatQuad?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205279</commentid>
    <comment_count>11</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-03-28 19:20:51 -0700</bug_when>
    <thetext> Why doesn&apos;t this just *use* a FloatQuad?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205280</commentid>
    <comment_count>12</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-03-28 19:26:21 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt;  Why doesn&apos;t this just *use* a FloatQuad?

Oh, I haven&apos;t known FloatQuad.  We should use it.  I&apos;ll update the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207085</commentid>
    <comment_count>13</comment_count>
      <attachid>52284</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-04-01 04:50:56 -0700</bug_when>
    <thetext>Created attachment 52284
Proposed patch (rev.3)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207087</commentid>
    <comment_count>14</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-04-01 04:52:54 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Created an attachment (id=52284) [details]
&gt; Proposed patch (rev.3)

- Use FloatQuad
- Replace unnecessary PassRefPtr&lt;HTMLFormControlElement&gt; with HTMLFormControlElement*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207190</commentid>
    <comment_count>15</comment_count>
      <attachid>52302</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-04-01 09:07:54 -0700</bug_when>
    <thetext>Created attachment 52302
Proposed patch (rev.4)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207191</commentid>
    <comment_count>16</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-04-01 09:08:48 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Created an attachment (id=52302) [details]
&gt; Proposed patch (rev.4)

This improved comments and ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220128</commentid>
    <comment_count>17</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-05-03 09:03:25 -0700</bug_when>
    <thetext>The latest patch makes some conflicts with the current WebKit source. I&apos;ll resolve them when I update the patch or I commit it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229782</commentid>
    <comment_count>18</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-05-24 09:41:04 -0700</bug_when>
    <thetext>Could anyone review the patch please?
If the patch is too large, I&apos;ll split it into some pieces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235794</commentid>
    <comment_count>19</comment_count>
      <attachid>58248</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-06-09 08:44:17 -0700</bug_when>
    <thetext>Created attachment 58248
Patch (rev.5; remove Windows impl.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235797</commentid>
    <comment_count>20</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-06-09 08:51:27 -0700</bug_when>
    <thetext>Attachment 58248 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/3193098</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235801</commentid>
    <comment_count>21</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-09 08:52:30 -0700</bug_when>
    <thetext>Attachment 58248 did not build on mac:
Build output: http://webkit-commit-queue.appspot.com/results/3195088</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235807</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-09 08:56:42 -0700</bug_when>
    <thetext>Attachment 58248 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/3246089</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235813</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-09 09:05:38 -0700</bug_when>
    <thetext>Attachment 58248 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/3235106</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235820</commentid>
    <comment_count>24</comment_count>
      <attachid>58252</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-06-09 09:14:36 -0700</bug_when>
    <thetext>Created attachment 58252
Patch (rev.6; build fix)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235825</commentid>
    <comment_count>25</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-06-09 09:26:18 -0700</bug_when>
    <thetext>Attachment 58252 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/3234074</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235841</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-09 10:02:07 -0700</bug_when>
    <thetext>Attachment 58252 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/3212079</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235846</commentid>
    <comment_count>27</comment_count>
      <attachid>58254</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-06-09 10:08:38 -0700</bug_when>
    <thetext>Created attachment 58254
Patch (rev.7; build fix 2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235856</commentid>
    <comment_count>28</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-06-09 10:20:07 -0700</bug_when>
    <thetext>I removed Windows balloon implementation and ContainerNode::getTransformedCorners() from the patch to minimize the size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235908</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-09 11:42:41 -0700</bug_when>
    <thetext>Attachment 58254 did not build on win:
Build output: http://webkit-commit-queue.appspot.com/results/3189092</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236092</commentid>
    <comment_count>30</comment_count>
      <attachid>58312</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-06-09 17:19:47 -0700</bug_when>
    <thetext>Created attachment 58312
Patch (rev.8; build fix 3)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236379</commentid>
    <comment_count>31</comment_count>
      <attachid>58375</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-06-10 08:52:15 -0700</bug_when>
    <thetext>Created attachment 58375
Patch (rev.9)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255192</commentid>
    <comment_count>32</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-07-22 20:57:25 -0700</bug_when>
    <thetext>Reviewers, could you review the patch please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282709</commentid>
    <comment_count>33</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-09-21 18:02:27 -0700</bug_when>
    <thetext>FYI: Mozilla completed the implementation of this feature for Firefox.
https://bugzilla.mozilla.org/show_bug.cgi?id=561636</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292330</commentid>
    <comment_count>34</comment_count>
      <attachid>58375</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-10 11:21:10 -0700</bug_when>
    <thetext>Comment on attachment 58375
Patch (rev.9)

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

r- for crash.

&gt; WebCore/html/HTMLFormControlElement.cpp:360
&gt; +    page-&gt;chrome()-&gt;updateFormValidationMessage(this, message);

Doesn&apos;t this crash if page is null?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293335</commentid>
    <comment_count>35</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-10-13 02:52:26 -0700</bug_when>
    <thetext>Thank you for reviewing an ancient patch.

(In reply to comment #34)
&gt; &gt; WebCore/html/HTMLFormControlElement.cpp:360
&gt; &gt; +    page-&gt;chrome()-&gt;updateFormValidationMessage(this, message);
&gt; 
&gt; Doesn&apos;t this crash if page is null?

It can crash though I don&apos;t know when page() returns NULL.
I&apos;ll update the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293336</commentid>
    <comment_count>36</comment_count>
      <attachid>70593</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-10-13 02:54:48 -0700</bug_when>
    <thetext>Created attachment 70593
Patch rev.10

Fix null-dereference of page()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293337</commentid>
    <comment_count>37</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-10-13 02:57:13 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; Created an attachment (id=70593) [details]
&gt; Patch rev.10
&gt; 
&gt; Fix null-dereference of page()

I removed the ChromeClient change which the prior patches had because I&apos;m going to implement the message bubble with shadow DOM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293344</commentid>
    <comment_count>38</comment_count>
      <attachid>70595</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-10-13 03:32:54 -0700</bug_when>
    <thetext>Created attachment 70595
Patch rev.11 (rebased)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298779</commentid>
    <comment_count>39</comment_count>
      <attachid>71726</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-10-25 03:41:46 -0700</bug_when>
    <thetext>Created attachment 71726
Patch 12 (rebased and simplified)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299787</commentid>
    <comment_count>40</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-10-26 14:04:52 -0700</bug_when>
    <thetext>(In reply to comment #39)
&gt; Created an attachment (id=71726) [details]
&gt; Patch 12 (rebased and simplified)

Story for stepping into the middle of the story here. I thought you mentioned using shadow DOM in one of the previous comments, but this patch still uses the same page-&gt;chrome-&gt;foo machinery as the others.

Also, why does Chrome.cpp code is doing so much work? Shouldn&apos;t it be basically just a shim to shuttle information between browser and renderer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300102</commentid>
    <comment_count>41</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-10-27 03:34:20 -0700</bug_when>
    <thetext>(In reply to comment #40)
&gt; (In reply to comment #39)
&gt; &gt; Created an attachment (id=71726) [details] [details]
&gt; &gt; Patch 12 (rebased and simplified)
&gt; 
&gt; Story for stepping into the middle of the story here. I thought you mentioned using shadow DOM in one of the previous comments, but this patch still uses the same page-&gt;chrome-&gt;foo machinery as the others.
&gt; 
&gt; Also, why does Chrome.cpp code is doing so much work? Shouldn&apos;t it be basically just a shim to shuttle information between browser and renderer?

The original intention was
 1) Showing a validation message by a native way.  It means Chromium needs IPC messagings.
 2) Showing just one validation message in one page even if the page consists of multiple frames

As you know, 1 is invalid for now because I have a shadow DOM implementation.

As for 2, I have changed my mind :-)   Showing multiple validation messages for multiple forms would be acceptable.  It happens only if a page has multiple forms and a user tries to submit them in short time.

We can simplify the patch.  Simpler is better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300939</commentid>
    <comment_count>42</comment_count>
      <attachid>72157</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-10-28 01:22:48 -0700</bug_when>
    <thetext>Created attachment 72157
Patch 13 (more simplification. No Chrome changes)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304464</commentid>
    <comment_count>43</comment_count>
      <attachid>72157</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-11-03 21:00:46 -0700</bug_when>
    <thetext>Comment on attachment 72157
Patch 13 (more simplification. No Chrome changes)

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

ok.

&gt; WebCore/html/ValidationMessage.cpp:55
&gt; +    if (m_message.isEmpty()) { } // FIXME: Construct validation message UI.

Probably should just remove this, leaving just a FIXME.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304470</commentid>
    <comment_count>44</comment_count>
      <attachid>72157</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-11-03 21:23:02 -0700</bug_when>
    <thetext>Comment on attachment 72157
Patch 13 (more simplification. No Chrome changes)

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

&gt; WebCore/html/ValidationMessage.cpp:45
&gt; +    hideMessage();

Cancel timer here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304492</commentid>
    <comment_count>45</comment_count>
      <attachid>72157</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-11-03 23:41:15 -0700</bug_when>
    <thetext>Comment on attachment 72157
Patch 13 (more simplification. No Chrome changes)

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

Thank you for reviewing!!!

&gt;&gt; WebCore/html/ValidationMessage.cpp:45
&gt;&gt; +    hideMessage();
&gt; 
&gt; Cancel timer here?

We don&apos;t need to cancel explicitly.  It is canceled by m_timer destruction.

&gt;&gt; WebCore/html/ValidationMessage.cpp:55
&gt;&gt; +    if (m_message.isEmpty()) { } // FIXME: Construct validation message UI.
&gt; 
&gt; Probably should just remove this, leaving just a FIXME.

ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304505</commentid>
    <comment_count>46</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-11-04 00:02:39 -0700</bug_when>
    <thetext>Landed as http://trac.webkit.org/changeset/71309</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48145</attachid>
            <date>2010-02-04 08:11:22 -0800</date>
            <delta_ts>2010-03-25 17:54:04 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-31718-20100205011120.patch</filename>
            <type>text/plain</type>
            <size>6651</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDFhZTU5MS4uMzcxNTk0ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMC0wMi0wNCAgS2VudCBUYW11cmEg
IDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRnJhbWV3b3JrIHRvIHNob3cgZm9ybSB2YWxpZGF0aW9uIG1lc3NhZ2Ug
Zm9yIGludmFsaWQgY29udHJvbHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zMTcxOAorCisgICAgICAgIEFkZCBzaG93Rm9ybVZhbGlkYXRpb25NZXNz
YWdlKCkgYW5kIGhpZGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoKS4KKyAgICAgICAgc2hvd0Zvcm1W
YWxpZGF0aW9uTWVzc2FnZSgpIGlzIGNhbGxlZCBpZiBhbiBpbnZhbGlkIGZvcm0gY29udHJvbAor
ICAgICAgICBnZXRzIGZvY3VzLCBhbmQgaGlkZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSgpIGlzIGNh
bGxlZCBpZiB2YWxpZGl0eQorICAgICAgICBzdGF0ZSBpcyBjaGFuZ2VkIG9yIHRoZSBpbnZhbGlk
IGZvcm0gY29udHJvbCBsb29zZXMgZm9jdXMuCisKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29u
dHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVu
dDo6fkhUTUxGb3JtQ29udHJvbEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1D
b250cm9sRWxlbWVudDo6c2V0TmVlZHNXaWxsVmFsaWRhdGVDaGVjayk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpzZXROZWVkc1ZhbGlkaXR5Q2hlY2spOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6bWF5U2hvd1ZhbGlkYXRpb25N
ZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6Om1heUhp
ZGVWYWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xF
bGVtZW50OjpkaXNwYXRjaEZvY3VzRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1D
b250cm9sRWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQpOgorICAgICAgICAqIGh0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OnNob3dGb3JtVmFsaWRhdGlvbk1lc3NhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpoaWRlRm9ybVZhbGlkYXRpb25NZXNzYWdl
KToKKwogMjAxMC0wMi0wMiAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
RWxlbWVudC5jcHAKaW5kZXggNmYyNGUwYy4uNTBhM2U5MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xFbGVtZW50LmNwcApAQCAtNjYsNiArNjYsNyBAQCBIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50OjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvYwogCiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp+SFRNTEZvcm1Db250cm9sRWxlbWVudCgp
CiB7CisgICAgbWF5SGlkZVZhbGlkYXRpb25NZXNzYWdlKCk7CiAgICAgaWYgKG1fZm9ybSkKICAg
ICAgICAgbV9mb3JtLT5yZW1vdmVGb3JtRWxlbWVudCh0aGlzKTsKIH0KQEAgLTMxNSw4ICszMTYs
OCBAQCBTdHJpbmcgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6dmFsaWRhdGlvbk1lc3NhZ2UoKQog
CiB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldE5lZWRzV2lsbFZhbGlkYXRlQ2hlY2so
KQogeworICAgIG1heUhpZGVWYWxpZGF0aW9uTWVzc2FnZSgpOwogICAgIHNldE5lZWRzU3R5bGVS
ZWNhbGMoKTsKLSAgICAvLyBGSVhNRTogU2hvdy9oaWRlIGEgdmFsaWRhdGlvbiBtZXNzYWdlLgog
fQogCiBib29sIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmNoZWNrVmFsaWRpdHkoKQpAQCAtMzMx
LDExICszMzIsMzggQEAgYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpjaGVja1ZhbGlkaXR5
KCkKIAogdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpzZXROZWVkc1ZhbGlkaXR5Q2hlY2so
KQogewotICAgIGlmICh3aWxsVmFsaWRhdGUoKSkgewotICAgICAgICAvLyBVcGRhdGUgc3R5bGUg
Zm9yIHBzZXVkbyBjbGFzc2VzIHN1Y2ggYXMgOnZhbGlkIDppbnZhbGlkLgotICAgICAgICBzZXRO
ZWVkc1N0eWxlUmVjYWxjKCk7Ci0gICAgfQotICAgIC8vIEZJWE1FOiBzaG93L2hpZGUgYSB2YWxp
ZGF0aW9uIG1lc3NhZ2UuCisgICAgaWYgKCF3aWxsVmFsaWRhdGUoKSkKKyAgICAgICAgcmV0dXJu
OworICAgIC8vIEhpZGUgdGhlIHByZXZpb3VzIGVycm9yIG1lc3NhZ2UuCisgICAgbWF5SGlkZVZh
bGlkYXRpb25NZXNzYWdlKCk7CisgICAgLy8gVXBkYXRlIHN0eWxlIGZvciBwc2V1ZG8gY2xhc3Nl
cyBzdWNoIGFzIDp2YWxpZCA6aW52YWxpZC4KKyAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7Cit9
CisKK3ZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6bWF5U2hvd1ZhbGlkYXRpb25NZXNzYWdl
KCkKK3sKKyAgICBtYXlIaWRlVmFsaWRhdGlvbk1lc3NhZ2UoKTsKKyAgICBpZiAoIXdpbGxWYWxp
ZGF0ZSgpIHx8IHZhbGlkaXR5KCktPnZhbGlkKCkgfHwgIXJlbmRlckJveCgpKQorICAgICAgICBy
ZXR1cm47CisgICAgU3RyaW5nIG1lc3NhZ2UgPSB2YWxpZGl0eSgpLT52YWxpZGF0aW9uTWVzc2Fn
ZSgpOworICAgIGlmIChtZXNzYWdlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlm
ICghZG9jdW1lbnQoKS0+cGFnZSgpKQorICAgICAgICByZXR1cm47CisgICAgUmVuZGVyQm94KiBy
ZW5kZXJlciA9IHJlbmRlckJveCgpOworICAgIEludFJlY3QgYWJzQm91bmRzID0gcmVuZGVyZXIt
PmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CisgICAgYWJzQm91bmRzLnNldExvY2F0aW9uKHJv
dW5kZWRJbnRQb2ludChyZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlKEZsb2F0UG9pbnQoKSwgZmFs
c2UsIHRydWUpKSk7CisgICAgZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCkt
PnNob3dGb3JtVmFsaWRhdGlvbk1lc3NhZ2UodGhpcywgYWJzQm91bmRzLCBkb2N1bWVudCgpLT52
aWV3KCksIG1lc3NhZ2UpOworICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2VTaG93biA9IHRydWU7Cit9
CisKK3ZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6bWF5SGlkZVZhbGlkYXRpb25NZXNzYWdl
KCkKK3sKKyAgICBpZiAoIW1fdmFsaWRhdGlvbk1lc3NhZ2VTaG93bikKKyAgICAgICAgcmV0dXJu
OworICAgIGlmIChkb2N1bWVudCgpLT5wYWdlKCkpCisgICAgICAgIGRvY3VtZW50KCktPnBhZ2Uo
KS0+Y2hyb21lKCktPmNsaWVudCgpLT5oaWRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKHRoaXMpOwor
ICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2VTaG93biA9IGZhbHNlOwogfQogCiB2b2lkIEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ6OnNldEN1c3RvbVZhbGlkaXR5KGNvbnN0IFN0cmluZyYgZXJyb3IpCkBA
IC0zNDgsNiArMzc2LDcgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkaXNwYXRjaEZv
Y3VzRXZlbnQoKQogICAgIGlmIChkb2N1bWVudCgpLT5mcmFtZSgpICYmIGRvY3VtZW50KCktPmZy
YW1lKCktPnBhZ2UoKSkKICAgICAgICAgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+cGFnZSgpLT5jaHJv
bWUoKS0+Y2xpZW50KCktPmZvcm1EaWRGb2N1cyh0aGlzKTsKIAorICAgIG1heVNob3dWYWxpZGF0
aW9uTWVzc2FnZSgpOwogICAgIEhUTUxFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZlbnQoKTsKIH0K
IApAQCAtMzU2LDYgKzM4NSw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlzcGF0
Y2hCbHVyRXZlbnQoKQogICAgIGlmIChkb2N1bWVudCgpLT5mcmFtZSgpICYmIGRvY3VtZW50KCkt
PmZyYW1lKCktPnBhZ2UoKSkKICAgICAgICAgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+cGFnZSgpLT5j
aHJvbWUoKS0+Y2xpZW50KCktPmZvcm1EaWRCbHVyKHRoaXMpOwogCisgICAgbWF5SGlkZVZhbGlk
YXRpb25NZXNzYWdlKCk7CiAgICAgSFRNTEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmggYi9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCmluZGV4IDExNzA4N2IuLjcxZDNh
NzcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKKysr
IGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaApAQCAtMTMwLDYgKzEzMCw4
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBIVE1MRm9ybUVsZW1lbnQqIHZpcnR1YWxGb3JtKCkg
Y29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzRGVmYXVsdEJ1dHRvbkZvckZvcm0oKSBjb25zdDsK
ICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZEZvcm1Db250cm9sRWxlbWVudCgpOworICAgIHZvaWQg
bWF5U2hvd1ZhbGlkYXRpb25NZXNzYWdlKCk7CisgICAgdm9pZCBtYXlIaWRlVmFsaWRhdGlvbk1l
c3NhZ2UoKTsKIAogICAgIEhUTUxGb3JtRWxlbWVudCogbV9mb3JtOwogICAgIE93blB0cjxWYWxp
ZGl0eVN0YXRlPiBtX3ZhbGlkaXR5U3RhdGU7CkBAIC0xMzcsNiArMTM5LDggQEAgcHJpdmF0ZToK
ICAgICBib29sIG1fZGlzYWJsZWQgOiAxOwogICAgIGJvb2wgbV9yZWFkT25seSA6IDE7CiAgICAg
Ym9vbCBtX3JlcXVpcmVkIDogMTsKKyAgICAvLyBBIHZhbGlkYXRpb24gbWVzc2FnZSBmb3IgdGhp
cyBlbGVtZW50IGlzIHNob3duLgorICAgIGJvb2wgbV92YWxpZGF0aW9uTWVzc2FnZVNob3duIDog
MTsKICAgICBib29sIG1fdmFsdWVNYXRjaGVzUmVuZGVyZXIgOiAxOwogfTsKIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oCmluZGV4IGRiNTJjOWQuLmU0ZDljNTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9DaHJv
bWVDbGllbnQuaAorKysgYi9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTQ2LDYgKzQ2
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEZpbGVDaG9vc2VyOwogICAgIGNs
YXNzIEZsb2F0UmVjdDsKICAgICBjbGFzcyBGcmFtZTsKKyAgICBjbGFzcyBGcmFtZVZpZXc7CiAg
ICAgY2xhc3MgR2VvbG9jYXRpb247CiAgICAgY2xhc3MgSFRNTFBhcnNlclF1aXJrczsKICAgICBj
bGFzcyBIaXRUZXN0UmVzdWx0OwpAQCAtMTk1LDYgKzE5NiwyMiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBmb3JtRGlkRm9jdXMoY29uc3QgTm9kZSopIHsgfTsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGZvcm1EaWRCbHVyKGNvbnN0IE5vZGUqKSB7IH07CiAKKyAg
ICAgICAgLy8gU2hvdyB0aGUgc3BlY2lmaWVkIHZhbGlkYXRpb24gbWVzc2FnZS4gVGhlIG1lc3Nh
Z2Ugc2hvdWxkIG5vdCBoYXZlCisgICAgICAgIC8vIG1vdXNlL2tleWJvYXJkIGZvY3VzLiBBIHBv
cnQgaW1wbGVtZW50YXRpb24gbWF5IGhpZGUgdGhlIG1lc3NhZ2UKKyAgICAgICAgLy8gZXZlbiBp
ZiBoaWRlVmFsaWRhdGlvbk1lc3NhZ2UoKSBpcyBub3QgY2FsbGVkLgorICAgICAgICAvLyBlLmcu
IEhpZGUgdGhlIG1lc3NhZ2Ugd2hlbiB0aGUgcGFnZSBpcyBzY3JvbGxlZC4KKyAgICAgICAgLy8K
KyAgICAgICAgLy8gSXQgaXMgcG9zc2libGUgdGhhdCBzaG93Rm9ybVZhbGlkYXRpb25NZXNzYWdl
KCkgYW5kIGhpZGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoKQorICAgICAgICAvLyBhcmUgY2FsbGVk
IGluIHRoZSBmb2xsb3dpbmcgb3JkZXI6CisgICAgICAgIC8vICAgMS4gc2hvd0Zvcm1WYWxpZGF0
aW9uTWVzc2FnZShlbGVtZW50LUEsIC4uLikKKyAgICAgICAgLy8gICAyLiBzaG93Rm9ybVZhbGlk
YXRpb25NZXNzYWdlKGVsZW1lbnQtQiwgLi4uKQorICAgICAgICAvLyAgIDMuIGhpZGVGb3JtVmFs
aWRhdGlvbk1lc3NhZ2UoZWxlbWVudC1BKQorICAgICAgICAvLyAgIDQuIGhpZGVGb3JtVmFsaWRh
dGlvbk1lc3NhZ2UoZWxlbWVudC1CKQorICAgICAgICAvLworICAgICAgICAvLyBTZWUgV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwLgorICAgICAgICB2aXJ0dWFsIHZvaWQg
c2hvd0Zvcm1WYWxpZGF0aW9uTWVzc2FnZShjb25zdCBOb2RlKiwgY29uc3QgSW50UmVjdCYsIEZy
YW1lVmlldyosIGNvbnN0IFN0cmluZyYpIHsgfTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGhpZGVG
b3JtVmFsaWRhdGlvbk1lc3NhZ2UoY29uc3QgTm9kZSopIHsgfTsKKwogICAgICAgICB2aXJ0dWFs
IFBhc3NPd25QdHI8SFRNTFBhcnNlclF1aXJrcz4gY3JlYXRlSFRNTFBhcnNlclF1aXJrcygpID0g
MDsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>51697</attachid>
            <date>2010-03-25 17:23:45 -0700</date>
            <delta_ts>2010-10-28 01:24:25 -0700</delta_ts>
            <desc>Screenshot of this implementation on Safari/Windows</desc>
            <filename>balloon-windows.png</filename>
            <type>image/png</type>
            <size>16377</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">iVBORw0KGgoAAAANSUhEUgAAASgAAADoCAIAAADT+u5OAAAAAXNSR0IArs4c6QAAAARnQU1BAACx
jwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAP3dJREFU
eF7tnXtwG9d97/dOPM5MJ38kmdu5t+10ptNx507Hg9xOErtp6+vAcZLm4UCJ4zh+wLIs2/ArVlA/
miCNa6G2LMG2JFi2DL9q2IooiwQpEqIoiKbAB0gT4gN6wHRgExJFWIQoSDIkakOBIkTj/s45u4sF
sFgsgF1wF9gdjAQCZ8+ePXs++P3O75zzPf9jxe33dex4k9IPBWrgzTf1ilWgWmuV5S233PKVr3xF
qautuOP+jH4oUwNv6IdmayCJD2XaBcqVKg4e3WQuSrvJFaqwTHSkqcmfqvDksk7D5Te56LJO4idO
hXAG4YozIK0OHp/+0mANKAzeT++0FGlYKa/dbDSZ0WEyEASZv0xGW1OkouZIu4wUZXAq+EuSLRbt
MlGUsSrwUAbOSn9iMhkdPA3yxv1KKgzeiqLg8chKh5HxM7mqtlQpN4ah6nykUM9cqxqLp4OnZXKq
dDSUBk9KH49GTheAV2CpUgG3HWwYOgwmpzecRkSkA06L0WRy+mOEj0TQbTYZLY49u2zQklFSo9Hs
jfLoS0XsJrPL67HivGyeaCYjmDPOjo667RYjY4MNZpsryrGVijXZLeQbq8NBysx+mfS7bFxRHZ4Q
LipcBy5tsjd53WzZzFZ3jBQtFWLBoz02s9Fsj2SLjD+xuBKZTMRjN5psYaHfEr7FOzF1/sSZsptC
BWclTi9Nx9MfTS3AC97Anw0MT9kVzqsrhcH7yW33ljYfuLdT0F9Kea24kRvMdoedIGVyBlGLjXrI
X0Fo9eRcivJEz/ns5K3BZLbkgEejJs4ddzYdLpZzJhO3M9cEsuyMC2z24GafRL4luqzVYbcwuTHg
JZGlxUVFZ+G3RrsfsUd+U/B3FpuVydDqRV9lwcuEnOgkewBAI78lflQKnCzkgLcGdKcFBw+8iy9a
Njw3dLFMBso+CzCbjF0KfHhhV/AzeMEb+FNnr8xqJ7gqDN5Nv1xdGXhpTJfB0sQ2uThunEY/bpyR
JtT0DRanE1sgKzJiqC1jV9Odbx4YOE3+eDqTSp6eKJpzKuxC2dr8bJkTiEMjMsU0+crqIeVJBtGf
pI+XDDrRe7Ob4SYVsWF6PWDaMF3wXSCBTWAqYkVn4V4oD7xM3IfOsBDCmbtzhnCqRCwajQk6tCx4
l09MnXju0Q1Pd584PkWfZmMtxyMnD4yfOHqK+VWejX328RRD5ompzz6OXRQ8S7wNgYkbCF9w7Tv5
1M6Pn9o5BW86R5Pjn8zrpq989hQG78e3rqoMvIgbmQqDrSkYDMARDAZdmDFnkDikSfw9NiVWpr0C
HSTgke+y4ibO4SSaczpF00maTsRj4VDA20RgR3SFXeh67qzPl0SBHPwVsVdunqeY8NtRUYEcQpcj
wFYCTXqhCCQ+eBn8OdhwVPQEMnKUjfGki1cfA1786D2WDTcyL1dfHEi75N26hf1k47bDiLePu3fA
J+9FMsnJUXhj6wwVnFXCcQLLBoztGDgNyNl2AHgfr981uaUr7vaf2hc6r+NXJnsKg/fDW+6uEDxs
0woPBwNeJhV2k28dIc7C8Zo1/6q4iXNDFMRaFskZ+n7EXPEO7E/is4w8ly97rTD6DTDzu2GkbBx4
vNGRYuCBzbPBKVZfIhNHBtkkIdrJdzW3PLrhxRGaPPvZw32A1hb/ydn4aZdtw42P95xAn19ufWHD
jY++9cijG25cN4oN40X+WSXbDZg1AGzj7hP3bOp/xPn+Wz1g8aaeaZ0EAuFDHb+SFZibQK3gETNi
9UboZII94uB0JRnK4g4wOOQw2OMMZmLgcYF7kZzj2FKBC+v2BsKRGJ1OcGMG5KymbMwmey3ylSfG
xFOwI+rkg8cbMygKHtNZtbj92LR6ebkV++UqBt5hLzJu3GvF2j4MXiZ5avox9Pm7Bxj/swzwiLnb
1pe4d1MvUPfUK23jn8wGPoz/of/4xt1HseeJ8PtDf0Lv+EkjUGHwfvDzlZVZPDqE2i6EKNjT0z4c
NXSFkZsWxG3d5PT5iDPoQEEXcDWFhxNynDqIdxTNmSDkJNFT5PQFcO6oS5YMOvCFWKcxSb5CxpAY
K15RaeIGo6LmXporYYGria7mZ8OiOQHedDqVEh4fyQNvy/gl8sgnugC8t8ZJkDM23dp9lIB3dMhH
aNwycB6nROBxZ5Xs3RFzB+A9uaXT8er2ra+9NR0/A/jtC824/Qx+z7RO6x0/dYB3swTwSNQxv28W
x10dFEHxBSBWj4MU2LjRjJNpiyJAolZs9lwoFIH7XQCkxR6I84cTuMA94aloznE/QshgsvmCIb/H
iTND+SEPMx0jAU+T3e33s7NumKhmDJ0GX9lc/oDPYSbp3PkRFPzTkB12z2eSuy+w89n+XRifUDKq
CQit2BocHBrd5j+dnAqvsGy4Z+vg4OGPX3wcSOs8jgj86DbLhkfajh5oe/dGy5aeKQa87FnFZ8Dk
mbu1W1tffu3tDEXBK3H6LB+/LV3H9I6fKsD7VyngpcKo12Vy58fu6AiM2DGNHw8rhFBskMHGjU0f
asuEQ8xkxIt9RRQgJHFOfDCTs3hzRIRzhqRJD2d2MGNk/I25VjLEjjAAC/iHgBvHS4YZ3giB2cE6
NDeA38dDyLLBlYIpY+TWMOfsgYM6plCJ4YTMx0N9JFhi856AB398fBT15SwbVtjaB6cuwyd733Ct
WNeHCEzS29ZtvGdrGEVccs8SbDFkCAGilxBHsWz2/2aLF8zda6+/ScDLw69z9ITe8VMJeHdlG1FF
71K4k5ekJU9HgcBkKpXtbxW/aLGcyed0kTwgggHFESxNCn1V9MTSd08G/cgon4SjNlPGuCGEBzf3
WF/yPbt1J2fu+OwR6zcZO613/FQBnqQ+noRGVudJ6KjX02THPirpxEo5agAeN4QAnbc1L3VDTMXp
emfxiivzkOP+hK8EO35vvj/rPzynj7bXbuaKDp4UhMjAPTqsXsmWvRaTpLkhBC6mkudkChKY1/GD
sCd0/IA9GHyHDKUZhGpmY2niXIWjmpLG8aS0zTpPk45FwqGwhDEEXj2wFo9MP5L/AH4gaLmtb5oM
IfBjKsUsXmHH70AE5fBs2ySM+O0KfvrRVEL+gmo2R+UaNfWjX0iYuaLc9es6Z7wYT6mDdNggWAKB
ymIxlZL4QSZAmmcotqFdB0/gSSnXPHXwlKtbZXM+P58+ePyCu/9kyZiKCH7Q3xsIxyHOCa4mZAUZ
QrbKllvPHdcA9WPd4mmwKSymlyZn5zvGTjt2Z2MqUnp3ea4meKo7BqbByXzDH+/9KJk4fwly1mB9
aK/I1I9vvUd7pW74EoNdGvrk/Cvd2Xkq5VIHBIK5g0ktZEKZ50ACSNapq1nL0l3NmlW1bBci5g5Q
eWbXVAUxFW5InQRmgDoAGDDWnUzZnpCEjHTwJFSSypLIa+6AXhFzp1mVMLUXXAdPZVSVKg5n7iob
QijX3Km9/Wq2fFTxcbxllPfjKfOl8uZSlmqYed+LnF6hel/VqoFl3EH+tYA6iH9AFARiIdUMIXDj
EBCbgQiNSO+uBpNvGnO8XgS8ZZT3E1siUEa7haQFKwyyp4t8JXaNqlUDy7iB/GvVfghBB0+h3wVK
0pSxWsv7Va3MxzVuZm27kChtheDJV7bSBOZca1mGEHTwFANPyrIgpeX9kGkqosyXitpBP9fD6OfG
Qx6LiSxEMpgsjiC3qK+Y5h9Rc7E4nMxyQSOsyGPmOOeDV1xQUEw1kKVHeYXC8/NnXC+/+v2bf1/W
tMy80XP+EMJ/2rd859FtM+kliQqF8ZnF+Nmyp1lWdpZCzV092VLS1uMpLO8nosyH1+ASaYZ0jKgG
GqwgJ2ghIn1WvNa2uOYfKy6ItJQcZHUBLAzEq+ZzwCsqVSiqGsizWQorFC6mz2684+qrblj9zV95
5BlC6Djwj1/73hcf65SsUHj57aZjb0ygpYPlvCo7q6xLaDIxgCdhPZ6QrqaM8n4iynx8POgQWiJg
I/qBoC7hQEiCPqeI5h+r6mnygXAgYjeKlZIM6E8eeCL3IlY2vq+osELh9MDWv/ja9wy/2S+LuYMh
hK2vvfblv7560+hZ9BNUWqHw8/jMxTd2Hnvl4MXYTPoMy15sOhX65OLUaabpnzp5KTrDkBmfuRQ9
eVnwrHK41SRUUm5QWh9PCDwZ5f1ElPlywGPX5phtDo8/FM8udi2q+ceq9xHFF3TEfVjYD6TQeOCJ
3ItY2XLBU06hMJle2r35QTB38g0hTD5x0/e++KW1UhUKT9Frm46tYV7Tw0iLaamn5zj7yVR7FPEW
PTgDn3ROZ5KfJuHN5tFzBWfVLUhSYOOnqQI8+eT9RJT58hzCgMvKrIvD/xmtRKO2qOYfY/GsnCIT
KNbmCPsRJ1ZEUFCsbAXgKaFQ+IUbXps6f+ld17qrTW/LMoRw2+sfd+zvAXNn2jxeMr7DC65c3rbz
2NsRZrXeqegZQGvb4dSpUws72o6taUnEkRn83Nd1bM3O2Lqdx9Z0JrFhzDmr3NZZx+lFhhN4D0XI
4sko7yeizJc3HpCGI0VHQ4EmJyO9ArpDIpp/5HT+VlvJABIjy0rZYvBE7kWsbAXgKaFQ+MXvv/nB
8QvrX3xFrlUIf2/rfvvl//jil75apkJhDkITI8i4ca8nOs5g8DLJ0/MvoM9PhBj/UwdP2MhLm7ki
BJ6M8n4iynx88LCeFyhnMutW0tjzhLYuovnHKLQbHaxPxeyvgNocz9UUuRexshUHTzaFwiuu/PKK
bc1jp9e+vptTdih3PjRZL0tWITz1Xy/91dd//Gdf+csvrHgtq+ctSaEQIbTtE2YLlI/HALzYERLk
PDnvO0gT8KYmThEat4UXsb3KOauOLVi5tyYNPKXl/USU+fh4MH08k8sLIn1usi0QKKCIaf5xUU2T
3ccJ+xXsSSIiKCiqGpjjFHDRV9KXLKZ9WJZCIdilv1jdslm+VQjbO/aCk/mFK64sX6EQIfREz2ej
E8n2wwvJmfNPNB1b23N2NHrh7RYgbTaGCJz7XdOxdUE6FDyxpul4YIYBL3tWeRHReu4QSluPp7S8
HzTUYsp8OXO+UsEc/XaD3UNGxotr/uHTYcyPDD7AYbI1sVuX5G74WlRQsHjZCqKaORvlVq1Q+IUb
fgaQXPWwV76YCqxCmHr2mq9WplAYnThDgiWbR9BmD7FPkqgv13TsibaTozOfwyd9/uknOs8gApPp
9s6ptT1IljfvrHItQ72ml2E9nozyfiLKfNlGnk5hOcF8AT9xzb9MmpaiQShyL5LKVhCsqEah8FTV
i+5AUyx/WuaxkPmKK9WmUFivdInclzRXs2TwS08gdw3IsgohR9nh/Y+2buv4/ap/If65xPLqU8YU
+lHQwZPYAmuaTK5VCHxlh337PCimgs2dqhQKFWrZKs9WB6+mREm8mFyrEHKVHeaOThxRm0KhUhps
qs9X2jiexPaiJ5OjBgRXIYiIQxeTrJVF2UFRhULV06FgAXXw5GBF1jzkVXbQhYxkfTiyZSZtyphs
l9MzKlEDssRUOIVpXchItQ2O+oGU9XiqLX59FUyumIp0ZYf6qj8t3Y209XhauiMNl1WumIouDq3+
RiBtPZ7674NXwuPTn/b4A562Tm29dno6XTv22f+771evDssyLfPJ1wc3vON379wLOWurKuDxwUPU
VKMru7B12Mf79MTpxNnzZdfEcp+gx1S4JwCPL3r85HI/EGWvLxG8NEyYgqPYJqzKlrHM3AG8Ms9Y
/uS6OHTeM6h/8Ertj5e/xtRotgVi0mc+VNGmK1XULAbeRPzCe+Px9sMn4+drUv5ybl1ecycuDl1O
uZYtbf2DJ74/XtBJpvWDvpDT5XJYjMwU/wAzw1/JB1Oh/F6mELwLqfTaro+/9eIH/7R59J+c49/d
cqB5fEbJopeXtz6EUFhf9Q+e6G5BCbyozAwCJdwRdKJ1Nia3kFJlee2tVGoRSUzRU/PAW/r8c/vu
P/7zxrG1uz8ejJ71TZxa+fbBf34h2PNRDX48St1jJqPIEMLIyYPHPtP01j/1D95Nt60u2jrIMjyD
Pc5PkQiYDQZO6BLrndgZQ2gwOb3h7L6GRbUuI3aT2eX1WPFpNk8UVrz5XDYjXtgKa+eYTIgkptXl
diDU4a3Z6oqyTqKIFGQeeJ+cvHDdM4Prd3/M3cRn9KVfvjK20jWqhqapxBDCgbED7+4Yni9NvXpT
1D94ptvuLV79qSbG0wROApFYIpW/W6iIHGVxrcsCCUoP4huRZXcwSio2X5xV5kPfWGw2E8HS4iHo
hZAtNgSFVrfkgdcUmP7204Fw7Bz/Nl/dF/3O072z51KXlz4/OktPJf40dYp5RU/Sp88v1KZJKiQO
PRM9sOO9YI3uQZmaqn/wVtx+n1jVJUNW0uKZA8yO0x9hXE8ROUopWpd+JG6ZPHkYyX5RJifj+SX8
WPnSRfOVKqGIIIkJnxtdhDURKcg88Hb2H7/ht/2Hj/Hc5Uxm6+6Pv2vrmU1eXLy8tKn9jzfY+r/9
7z3ffvL9G37bd+tzg5ETcwV1skSfRStpFxYXaHo+s7QwB/+SY3F+js428vnk2dnZBL3IZsB+C5+f
nbsIweHsV0vzUyfO9EXk3F9y2/7JoQ9nz04Hm1sPoDItLaBSJ84uaG2b1/oH76d3Wkr9ZqXjYVD1
spsZo4MwcQSQ+ykqrVlC69JgYyT3Elj2y8HrRyai0XiSJmJEBnuALR7tRubXHC4VkswDLzoz993H
33/uD4c//5zJ6cz5hV/a+x9xDhNXE/5d6z54w+P7jf+276bf7T9y9LOCClmI+Fubs8eBczPDzc2M
L7eQfb84OdjBpmo9kkAtH3/bOdyHPx/8BP5o7jtO8p8Z79y6zf/OsGz7S9rf6n/evffdHbioHWML
C7Pd2TL7ZjRlAesfvJ+JgJem47EYX2IBPvC7sF9ocIIFEZGjFNe6xJJ7SFcPjrAbZegMFXiNTHCF
SZbJEPBMgu4lH5U88D7//PMXmw5+Z43v968FPzhycu8HU3f+577v/Lr7qdeDS0sMixcX0o9vGbrx
0d2BwwLjtouJQ9CAD81ACecngMCOsQuzB5qbsUkBtNj3JNmBo2cXF5Jjnbjpo2/HMAaDs3Pzi0sZ
+mgfcDiL7GGya0frS/ticm2nbH8v9NQbPV0fnVtM00cAOCjkDBSyGYTAoOoO9fkn8A+BVo4GAM/8
QLGHQTTqLJ48ueE0sTxAiogcZUmtS06CktDr4oEXCwV8gVCSt2sCLiEDXiGheeUvHE5ILaQd745c
t3r7dfe3XHd/808fb7vN1nHdvTs3/iHL3plz84MHhacpYbT8xFVdxJjlgIdsGoLw7ISfZxWbW32H
WPA6s9ZmKQFQ+I/S8yeCW7ftfSOQkEvI6KX28efdg9PzqBc+f3wQuZoLM6RAHd2DkdhZbTmb9Q/e
zcXBYzcJMft5I+Z01Iu4wxavMvXIPI1aIu1stPlYfqLYpNpi+eN4ueAVl4IsNoB+9NPPuoej/WPH
k3MXT565cPuT711755svvN3PuaDFfoAWkOkgZiozF/FDm+aDFxtGNhAYS8JXzb4EaeDzs5FJhBuC
thV9yx0zBzp27PLv8batb/nj6/LtL9naM7Z1275PL6HLJye6oZAXF0Df6WwyORs5NAj4+Sdzerkq
N30NDR64iz68xwcCw2JzOJ02Zo8eyuaFMQA4KlKPzCeKjBaC8J7bH/CS7bTMME5YAB7Ws2VcTSxu
a5QS1SzWwk7MJn/+6ze/dvML61x7UwtcMEQo+dwkNNzO4cnETARcSNbVbD4yc3Y2gto0AQ/8SOhd
dQ4emUnEhlGfDnUCMbQHciL79NHtO1o3v9O5oeuEXOLQ7v6TByOT7+1o7RyemIlNkEKemYQfgtaJ
2eRcYhI+6WZDYipHjhSvwcFDrSk7TEcQhHE2H7NbHXYAI052Pgv60mwPJciYg4jWJRG05Dpv+ZlY
nD7045w/ZYxsDW0hwRW8l4hJ0O2UPlfzxOxnP7h34/fvef7cXIlBr+TRAzhk0erzYcyW5g75UfNu
bvUfOTLc2X2E2DSwcz6SrnNwhsaRm8ShDh/zLWlSi+m0r61j7Vtj63ZPy7IKAbZlhs2ZYYvm5PRh
Uiafr6MDirRER4aZ8IpvOIKLo5lDB488KjRJGotZCsvCVaYemdcKUvgS1c/Dlg4eFODYp4no9Kz0
9riUAAtWxdj04mxX+26IPdpajsmy4Va9Kjvo4Elvk2pJWRZ4NS60Pi1TYoXr4EmsKBUlU/N6vOpX
IQiIQ8/Oq2Hum4wtoCHW44lENWWsylpm9ac/pU4kzqnwNRX/bPCjU2/tn65mCIEvDr2la6r70Mk/
Tp9V4c1WWSR4iLVsM7W/FlV/4NW+EqVcUa5VCHxxaBJTqTNzJ6Uy6yCNDl6NHqJcqxByxaHrzcms
0cNQwWV08GrxEFQlDl2LG9avUaoGdPBK1ZAc31cfUwGddujd6eZOjqehijx08BR/DPoQguJVrMEL
6OAp+9Dkiqno4tDKPqea5y4OHp6XbGLWnnJlo/Fe5Ox6AtpNlBn4h8Fgsth8UXaaSyqC5j2b3FJ3
Q6x5LSh3QbliKro4tHLPaFlyLgEenoosDJ4zRGa703justFizR7silmjD9aYoyRoSWthPstyw7W8
qELKDvoQQi0fokLXkmDxSoGHrKLRnTvemfLZjWhGMxIygunOaFZ0oeVU6JbUk60eU1HPs1BbSeQC
z5W32CsdQe6o0REsCZ6IXpjaKqus8uji0GVVV6Mlpm6+68Hi94z7eJIsXq47Skex+qYkiyeiF6bp
hyGvuasDcWhNP03ZC0/9fOVDMoAHeGYPVpbM6IiRpXmirqaIXpjsd1uzDPUhhJpVtUYvRN1y98Oy
gGfA4HGhTXNTMNvra7A+nj6EoFEYalls6tZ7flUCPHbRN5eMCPJxUc0cdzQVd1uwLqalKdvrazDw
9CGEWrZgjV6Luu3eNcWLnuTLnHDJiLhYHni84ApWnuWLO7DgaUltp9LnqQ8hVFpzjXUedcf9VpE7
DjiQ92hyBrLa7YkgEdb0Mh04gQAMEQ7LpmHBE15iVVwvTIuPQt6YSr0qO2jxycpbZsr8wGMiOabj
Pk5mzOF0OexklwPKYPOxKApHPgN4HI8yYmF2drMEkzl7mExGO5YqE9ELk/dWa5CbPoRQg0quj0tQ
Kx96XPxOkmGvlSfejjbwISpgzCEMXiYdsWJEHbCVHtl1qOBAGn6iemGaq+LqzV0jKDto7rEqUWDq
7oeflJIv0REDnbGCDYOknN0QaWQZQuArOyC1zOMXAOaGqL4Gu0lq1SP/3mC3rMjtyjWEoCs7KPJ4
1JcptepXOngyPBa5hhD0pa4yPAwtZKGDJ8NT0pUdZKjEBstCB0+GB159TCVP2eEN9pChcHoWqqwB
DYOnktYpS0wlcfos9O629U3DwB13X/w3qmw8eqEqr4F6AK+wpVZeH+WfWb25yxtCEARPJb8y5VeP
foZwDWg1qineOvO+Ve7hy2Lu8oYQJN6acjel51yDGmgI8BQyiUoMIfCLOj6eIS8RFGvQRPRLKFED
mgePa51SmmkFLVjklJdfe/vZrTutL/mq3F+SG0J4ckunIHhV3ppEE1rHyZJJ1c3Pr0Pw8lCsrD1x
P3LFTn/t9Tcdr27/zRavZbOf218SemsQn5T+4sdUHnG+v3ZrK3e5wh8UHb/KHiVQpy3wyA6swkfO
fq6FlhgvRzC50FTMCo/87WDzs+E30MC+7pb2I0HWMRNpsiU9N5FHm5ftwHD63b3nn95+Qq79JZ1t
CXFzV65tL1kPDZJApeAVn6uZ8trNRrKggJ0kzfxlMtqaeLsxC4GHtFqcvM2Wy+UvfwN0MfDGhtEe
5b7AItuS5rp2tbZ1To4qjCKgUs2GW3xzBwADxlLMnSAt0n8vGgQ2/m2qFLyVDz1RGop0mOjzSd2z
rBQ2pa+IcyhmMwssw2L3ruZm71Fc3fM+eN/c6R9eqriRVebSSPcwISVQx4lD/+ad6Zd3nfb2zlcM
nhQvtOLa0PqJKgXvTsu/lcaAZoQxC7qoqYCbLLyD1UImpzfMTKTPB69YsojdZLI63Q4rWtIONtLm
8jNq0zgHg9XldhB/12C2uqIs94UNdKQftibvHBhd9Htbm5tbe4Y468cEBqtsPbKjyB9CWL/zZPP7
F8r1MyvuBFZZFZo7XaXg/VJMc4VFUlg0JeW14lWyBrPdYSfomJyMkCbP1SyejPCMkbM7nRZMsMHu
R1clV8SHxWZjXF2LB6OXFLIMc3tawNChY9/AQrZxjC4Eh+mRUXnw47e5alAkTuaOgelnWief2RH/
7z3J/YOXqjd3eidQ8EdBpeCJqoyJgZeOehAnliZ2R4Q4lmIx+mHNOc/ilUwGtPqJ0nsmhoUmDEj4
nQGP/SqNdVywwmcy6BRsowGfD6jr6qO52h/aP8yw2Ny8x5/Eny8Fh5LBkcq90GK/95VxCBPEoKPI
dzIhHyVMSiN3AlUKnqigrRh4EbxZicHWFAwG4AgGgy6sL+YMJvnglU7mCHC+biJg5+dgsHNf4XXu
lDmcyoDUkiB4A3s7mlsOjHABlZGZtuZmz56jI2OL/fv84H/2BgE8urO5uWP/HG7ci737jvQH5Yew
mtipQuA1cidQpeCZ7ri/dB9PyNWMNAnqOVCOPPBEkyF2rdi3xEcqjFSSkH4ZE1zh4qIEPFOQzpnG
wTMOCz7gzDs5xoKHe30dfSPYyRxLwJd7+ufHR2c84IuS+Cd+3wV+6egsfNvVO9vbfahr78SQAn6p
dBSVMHcN7oKqFLyfmkUk3MUsHhH5s3ojjCgEEoaIR6OxJPTDeK6mxGTkSskgq9iZH55hwAvxwMtp
T2NnO5qb23yz3Ick3BIYw+AF0XjD3oGF0cEjQGM/pnFsaIKQOTZ8lOketrS2tB0oHA8cDdLDwXkO
abnYEHT/5MpcYj7iHrLETFSeTKXgrbizQvDokBNHRTh7lfbZUBfNFab54IknI95qjAGcyHgavLiP
lzsSWBK8uX2dg/sHecHM4HHAqW3P5NDQbBcaYOgbHs8E/X3NzQxawz3gfw4CZhjR5j37zwo1oPlu
LxCNjxa/Qn6pjPHMihmo406gSsH76cpHSrua7AZ3ucMJcQcJalqcvoDfZcNxTYM9jmOSPGzEkjGh
S6PNG/A5cRcRbCiKtBSAx0nrSo/+BQcmwIfEzHTvD6BQJ+oHNvcNjmZGBo8iGNsnYJB9YG9ns+eQ
4Gh7sA+FZ7w9idHROTQ82IGGCgP+iZ7emcFhepSY00pfoyMLxIpyd0SaCBwV51n9ifVHoErBu/lu
EQn3bN9LeEtXOsIMAuC4PwwrhBI4Ppk3ZUw0GdrvhN3mxGR1MwHO/CljZP6aBYIrec20vKYWnGnn
Ap0QetkLruliT3tzy54ZwXz69gCoMDDIHcPB8UV/l9/DDl3At7va+/xDi6MDY5BoV4e/vb2vZ2Ae
cgOuxMgcOwsgd/ZBSjRuziGX96a8u6v0J6C+O4EqBW/FXSKblpS2hYgy3MlL0iWmtQgkIxEUN8w+
S0MWSVqSjh0Br4qWujQSnB8dXxrqm+xD4+wLez3NXn92EILfCv1egOM4oihID/ROdvfM8Awj5DMX
GDje7TsSGMkMdoPj2tzmPbCnHYHaBnEbdHR0Ywjxa2l0ZDHbURyje/aOId91dAYo3je4WOyOltcG
1kEnUKXg/UyKxZMEYPmJCHhlTukUoU6w7VZjNIZQP7C5y58IDsfAVLbvE+wHIq56O1ubOybRtUbR
MEb73uPBYHJvG9jSGOJ2aJJxeptbu8iIIozs4+HE0cAhgLufF0rVHIHV1HANzlUpeCvM1Vq88oFj
z6BDEI0xkF1jyz/EG6jIt+U87KW+vYg9dOw6MFS0U7ewt6W5vRthSUAaQCmX9sPIIgJvqd/Xt6vj
0NDIQh8a5Udh1cF9MKAIjmtmeD/kLxBKhaxkuoXKe6GCFaW5TqBKwfvJHQ+U3+blOiNNJ8FFleRh
SrlkZShK4HBpdFR0nJ2MBOKpathIEpDoPRCY6QUndmmwL7LH29fe7sMuaCeMYSALiZ3Y/j3IVBaO
VQSHEoHAWWIVVUiguAta2YNQ9Cwp7aeWaahlBU/xO63sWUpAMdeMoLF4ZrC+F02NweskyGD94CK2
gc3tew7t7z2+D4I1LYAlZyEXfJ6c4Udy6b4uyIU52MluYvgtYyBUKwQq3tTKvAD141/eW+YpGk5e
GYfSmjUxiUv93Qf24iHB0QDEOVuh80bGCbsDdHAo1gksgn3jLOTYWeg6oik1uQHJwP5DPj9kstjD
gJoZQLPeyNGquU6ghluMYkWnbrrtPsUy10DGlaEoySSOLQwP08iHHEv6OthReDB4XTNjwxHgB01n
Q6P8rX40iZT3Cs52dfiyAxZth0ZGZ2HsoW1vbAzml3bhueD9C317fSp0QeFGRGygBhpErYpImW5v
aPAK61kpFMeWAMKR4dnegbnRwYm2tgMwk2akHwbo2XltLHt4lL+7d3BuJJjs8iBQR9AgIePKEkPa
O4jm5bTvmx0bn9/XIWYDJf1GyDcAyF1O3AWtVfNW73Won95pUW/plqlkfLXMyjiU5p1CP5AOBOby
IisYvM59/uPde7pRKKZ3jlnmi2Oqwd5BwLKvD9xXH5mJOob6kB19/Yc054ICnMv0hJf/spSk9XjL
X86alkBcHLoyFMuwPKNzgJynpaOtDY3F74HZLSMx6Bu27z06GDjaAZbOMzaM+o1ooimOowKfwwP7
YRqqj8z/1hyBNX266rgYddu9a9RRErWUogJxaOVQHBuZJyMKw32HmMkwiMUYXlrR7O2eGQ5Moklw
HZE+GJZgVGcQe/0oLtqhdwLV0qoKyiG+BzqNF7sKHOVONyl6//w5mdWLAlZdzbKIQ1fGoUTvdDQ4
NzSMBgwDPdn19Z69n3aBIeStiurv6mjeFUFmdmxhsP+oCgls8E4gdfdDIlsx02SdDlH14w4Tkver
QjOTjwd/FUL12mRVg6fQ/pKVoSjBOyUBm7NDwUu9e4d7eKuicFewubM7NoTXYbT5EjA4oTkXtI47
geJK0ngVnFGyql+V7X65wavl/pKKoZgdlgCTSMYkWtrH8GS3eZhJ04zlRjVHYJUtS4WnU6seFrN4
BDxWzqig/Cmkz2dzNTGL8WBNqztI0xGHmazzMdo9rGGko267hV3+YzDbXFGSaSpqB/vpwfK4ueBF
PHajyQbrgGp2VL/hFn9/yWd2TXkOJCZn54HnkrdQGYcSvVPOcgYDEXaudnNb1/GxsYQKXdAGGQmk
iitJQ2shFs8ZT6dTuQfTkrL6fAaLlaxjJYfRamUUWZqQGmbczugAWh0gBEjSmbFWH15iy2hO54IX
QstsDSCyUpujgphKoYItXxz6le4TQ5+cB5grK39lKErxTkdQwIZZqj/ci5YRwqFCAuu7E0iJKkkT
wQWBA+kRsTYKGAqApB+rmAIytBFspuJ+LBkWSqbCLtRTtHEiEQnEodGFsijex0slYqDgUhvuZImp
8MWhHbunO8ZOSzR3EslUCsWxxWCQDgYRippzQbXbCaTMlseKP3gCntFqyzmsFps/htkies+c7Eoy
AMt8uIAn4Q0jmk7RdJKmE/FYOBTwNhEBTuzBqiO4IldMZSAcd+2bWr9r0t1/8uDxCxWbOykoVsah
RO9UcwRKqTFVpaHuuO/XJcAzuov2s/JE+HJ9RToLHki423iOKDahJrWAJxhTgV24yt0LgROHfsMf
7/0omTh/SUrvTsbWUBmK4t6pCl3Q+ugEUretfrQUeNgnFDzy4pBFwCM+J4giub2BcCRGpxNolEI1
Fk/emAqIQ0uPqchInWBWMqKoQgI13QmkfrlKROyo1HCCNPCItKaT3dEkkwhgV9Mp3sfL4IiO0k2T
i6lAEJJsDQn7vJZl68jWP2DutvVNA3VVxlQUvd/KOOR7p5pzQVXbCaR+sfKhUn28/AF02C/PaHZE
IVwnDby4H218YDDZfMGQ3+OEfiDxNVHEsngfL4zNotJRTXnNXVlDCIoyJjHzylDUYhhGYoXULBn1
87tEpB+KRjXJNgYguY53fmWF1nM3tUtFmtjgStKDtW4Z4OxuNxbhdCPpW14OuVPGwi6UN0hHK3eo
bQhBuTuVnnNlKAqeJWFsQ2Y9GCmLkqRXhaIpqVtWSlCSlqMIRN5PRoWVKguliSGEKu+x+tNl4XC5
CFRzJ5D6xd3LpzJWfbuoIgctDiFUcbuynVoNijqB3GOgfrGqEcGrmyEE2XiqIqMKUFQhgVVUQCWn
Nuh6PHljKqoaQqikFch6jnQOlws/NYwEUnfeb5W12jWQmR5TqfFDKonichG4jJ1A6q4HRaaM1fgB
1ehy1Zu7xSuunIyd7hw9saXrmBLTMmtUEctxGX0kkNS6+LKg5XgyCl9TFnM3HT9Ty2mZClfJ8mSv
OQLlrSbqnl/9Rt4c1ZxbsSGESxQlfbYKmaeyY2D6mdbJ5ZqWqeZKLrdsKpyMVoNOIHXvGlu5NaXd
9IJDCEGK+luKapPMHpi7faGZjbuP6jEVeVuCCglUrhNI3f/r/5C3+tSc28xnC93hz6BX9uDm921b
2je5tkFvDWxdL8xoo6gbKCpcCj+tTMtU81MQL5vmXNDKpoM2IniWzX7L5v1Pbulc/+oOmBJNVgAt
UdSrFPW/KOohijpbHD/d3NUMafUTyJWwgjoRB69e5P3YWaDE1dzu//DBzT2wFuHxlzphOYLj1e0c
fucoag1F/TmspaCodAF+urmroIVVf4oKXdC8aeIV3GMJ8OpE3o9dA4GDK8m1t377/5g7ntk9fe+m
3jz8iOf5R4r6V4r6e4rax2NPH0KooHnJe4qqCKzG3KHhBNE+Xqn1ePLWq3LyfrycF9PzW3/xl//z
5007RxOwdg7YI/g9ucX77Nb3nK53uLXnnRT1dxR1E0VNYvz0IQR5n3bFuanBBeWXobIbkQTessj7
Ze9HooggSma0e7FSIDpSPrvZZPPkKrvQXpvpC1dc+cUv/ct3Vjy+ef+HlofX3eUKA3vQ8bO+5Hvq
lTa+5wne5osUdR271JUdQoi5XP99w1f+EvKBVYZOL7fCN1N7ScLKnnp9nLWMBNYGvOWR98s2Doki
gnylQHQy7YI1gPlaZohGvCzQYLrrwZ2jwZ/89dU3bjq4c/jUG75D0PFb81J3Ycfvc2zuuCEE++9t
X/7rq7/wf++2g1QhWdLrZLZxr7EkYX3wU/1d1N4FrdLPlOZqcitYeW9qIO/Hs3hIy6ykiGD+cnhG
FLRAUimTwmKhWMEJXNArrrxhcwh0+HoPHfzJj6xfv/MPhR2/+KmsssOWloG/+Nr3/uGhnawXECeS
aX4scFhLScLq22v95VAbAqs3dxLBW255P4kigvldRKaDmi8iCJYQSy3xFV9Q0CUR+snf/eN3HcHC
jh84nzAtE0bMQdlh69YtYO6+ZmsKBgNwBINBFxbydQaLKkLVX/tW+R0p7YJWb+6kgbfs8n4SRQQl
g5fVpecHXejxO7/01S8/2Q/yz+B5EvxIx++xl/YAdbYdSMio+S3HF7/01UInwKGDpz4cFSKwZuAt
t7yfNEkl4mqaXNw2RsSlLHQ1i1hCcpXN4zDWB54n4Odubrna9O/Q8QMC79nU/68vHARx6N2bH4SY
itUbwUIW5IiD4nVScT009bVr7ZRIRhdUFj9TosUrvluQNCQqlPfjnqu0q5BtGCiLh9msgBERLAoe
08fj7dyAoi4GWyyTAc/z/PyZ9Xdc/Vdff+B3nTPPeA4Ce99/8SAMvseDW1GXjhPPzqR9WMfJBcJN
cNREklA7DV51Ja2eQFnMnTTwCvbHq428X15whdnYhEREOFogdpnVq44hFUEIwthdHqISjwKOheAl
UbQTvrHYA1NB/pYpzCacRps34HNaDGDZ/uyxPePTF7pDB2+69mff2RSCsxbTJ9BmKkie1+kL+Jlt
kgz2OC5ubSQJVdectVagalzQWoInFNZUXt6PB55EEcFMMuzhNlkxWJ1usEWsq4llCBkvNOLFytZg
HZv2ZOUJ8bQyIJrdS4wyWd3TKTB96ZmTodv//G9MW4+AJSQnOi2YXXwYzPZQgrGyNZAk1FojV3V5
yyVQLj+zpMWTs9ZqJe+Xxp2vUnKcsI1KKpWzgxbpIrph/B3lkKSLbq/FIQeXSdJ6307ORrJceUl0
QeUydzUFb7nqVOp1CXhOVpxX9DS+DyA1fz2dFmpA3Abq4CnwDOkQuI8GBzMHRcoFdPyk1JIW05TE
r/qbaqz1eKL1laaT4DmWsYHr5cuX87q/1T8PPQdV1YAggbKUUAevqmrk2Lt8GWZ0Zo+qMtVPVl8N
yBhWITdH3ffr36nvNrVUIr7dA/z4BGrpNvSy1rYGALwGEjtSqG6BPQ6/9OISeXHmT6GL6tlqugao
+xpJZUzRR0XY48DT8VO0trWeOcj7/Vbr91D78gtOKSAf5oGXh5/Iidr6qvZ1XmdXpO59tEHBE5dM
LPYth8elS+mGfXGVUFkdyngWxDw0CmTjWrwKHj9pcA3LW96Nk9qooBrlOoVEGusSvAJ5PwPsh27z
BGEGv7SDjjQ1+UvPquKS5e3tLO0ilaUij1/6PjU6dYW/OKROpNehvCnrGjw06RhgI4cJz8tHh9kt
ZWoVVj0xOEv9KPGSKSc0VkBnBeClUov6K68GdPAq+90Xj2oKyPvFAi6MnsEbKznJg1mKWsriSUxW
2Q0WPasQvIAv2toa7fkgw/9h7mkPb98Oyu7o0KkrrIEcozdC9/jiPT0J9hXv6U3Ja+X4uWnb4okO
JzDg5ZmsiNsC1Z2dT0xH3XYLu5rGYLa5omhtABLSI4gajWZvFOhLBdx2MIH4M04VLzfZxARI9Nk8
WKJPoqofTiqUM/pCRG8vD7ydz1pZc254ensSP2B64+2cjafmLy7qL8EagHr7r5bzo6OXA9sdbB1y
/zt6UU0q8tI4eGIzV3gqCXzLkfQjfkxuvPYmbicLQ81WB8jdkYZq9qSwrCUDmdnijZ7zWpl0uap4
uckO81amSlT1y6SK5IwKJ6K3lwPeB+HrKer6x4MjI7E1V1HUzd6R8Uyv2wnlX+OKj4/H4Y1OXbEa
QE/5b+3do5dHg38KBGh4ffBBumc78oxufjqsEHWciLrMjlCtsoO5miJTxoqAh3tiRKgrhReAG2x+
tsAJxCHR8OIJ6aWjHpTM0iSkipert8fTYpCi6ieas5jeHh+8kT2oeK4e+GFOO34ICLoD45ntj8PP
i6MH/1rr4In87uCf1+te9c2B0YMXJi26Cj77YRNUow6eIMsVKUkT8IiqQgaWlNJJmk7EY+FQwEs0
F8i6b56QXsRNBE0EVfEE9PYwtugqBk7dJBkADjj/lgAP8p6iOYv9fOW5mh8EcG+kN/AN4A7/Trc+
baaucpGmA9ei/7SgvwRrAIN3zZu+uYEBxB78eG28Hbk92wMKUlcHFk9kf7xiriZyCFnwoH9ly/aE
8ENgv8qeHmlC3cLCA6viicl+mVxs+LSI1IpozmWAh6gLhG9GRbS24vjKTlCO0MGT8HNDwNvw7gQB
b/cLv4W/bTtp5WwdyVnbfTwpm5bkBVfC2HyZsYRJ3I/1SwwWtzcQjsTodILIxRKLxwnsEaGxIqp4
onp73JLwIuCJ5lwOeCPRB6F3B0X3pclz1cGTaOExeFc/i8HrbYOtdanrbSGlqWsI8PjjAbGgmwRJ
fFjhR0y6jwUPTqdDTtSohVXxeIMWfLqkqfqJ5iymt5fraiZsEF2hjBvbGeoQeE9jERbsL8F3cxdS
crw6VlHfWn9IlqxyMzn0wrVScpaYrJybxeB9c8P2iZb3elbD25/94QMlu3Yc0tq2eKJ7oGMkeAPo
RtZZtDYxm/LE/UhTz2Cy+YIhv8fJJjAFkcnjCenFp4qr4hXV2+PL+BVX9YtXprfHBy+wEw9OXmV/
2eXbuNGz8eUwajq4v0ddb3c4UJRcDuoAFcXAKwcVme6FIR8q53//6L8cDs/mh2FTM+oHjzW7XvZu
3AgvtiaV4VDb4N398JPFHTICHu+AKWMWmzdEVCTJkfRgRVdymOxuNx6+c2OB16yQnieaoSPFVPGK
6O1JVfUTyVlEb48P3getTdd/w3j99cZvXAUv6qofoqgm/LL2tvpuvx4MPLLx585flOOFwHvuoCxZ
qSUTqJyHH9uEwFtz/z/8w4/+39e/fdU3jN+AF68mlfA8tQ3eygcfr37oQky6L1dIj6QUUMUr1Nsr
s1hFcy6ST1lTxqSA99y11CoPC4NnNXXt8wfPX2xZxf4mrerA3HLg8QnkvT/4/DXMGatbclDHaTzM
t3Chg+u/RRJes/7D3Jw/hJKQA5cn78/cAqxHviEvk4vn2AJcs/55ib8RcPpjGLyWFia+ogRmhXlq
G7zb7/t1mS28TpLLDt45gI2hC/GWhVCYN0HweB96VrNEEZjhK4rAjC7E8YbeE0TZc3nFQCfm/ZlD
PqCJfw5yMmFKjsGWZJx18CpAgvrFqkcqOK0OTikXvM+S86Ve7XdTq5tRsva7r3l+nKRvYUwKNOJ1
IfxV/hvehyHO3GEzdHc774rcifxMhDLEmVzzXJg5N+/PkgXgSp5NWeLGdfAqwIG6ZeVDFZxWB6cQ
8EoqKJIE0LZKUYda5/hz34IWT/5F6VGjJyiG110jETySvvAlGTx8LpQBkdvC5MP7sxT5FYG3bt26
d955Z3h4OBaLnTlzRmKtypJMo02R+tmdFo0WvcpiS6eOgHf6zJ9Kv0Yc37xm9cprVr9HEu9cTV3j
GIE38Dl17TMj8OGulcyb8DPXUCt3ssmy31LffDYsdCHuRH4m/Pf8BCjbkWev5WfF/sklE8wQPmRK
BenBtcVlLvGCytHBK7c1Ni54ZdWUVPDOIJyolbvYxor/RB0yoDEPPIwlOVauZmkkiLJHNp9isAmB
x2VLYf7z/sySX4RkNv03n3VkSyXKHhR306ZNHo9nYmJibm4ORJ/KqtvGTKyDJ+m5SwavtH0oaUDU
kgD9BLCmWwdPUjMpIxH187seKCN5oyYF8BKJCw31eu8uNB3lgIS71i1eBVhQt656uILTGu2UhgHv
0DNZT/ee9yRQBz9GOngV4EDdoe5xPLkUqarMp2HAq8SqQ+XceuutDzzwwNq1a7ds2fLaa6/l1bZ2
tcAqIEriKdRdDzwmMemyJKsSGLlOh7Y1e+qC/hKsAXHwND2/RLk2T9390BPFc6+VvF/xEpQ1zK3c
TCUdPJEfHfEBdB08wdZNrf7Vb8TAq4W8n9jPinrAg+YVP3lef+XVABn6EJmrqYMnDJ7o3gm1kffT
AHhkSZ5OXWENEOp08Mp1SsX3x6uBvB8qsHQRPuWcyZI5k592nT1+DfDNXbHVCbrFE7Z4UqQfWGkw
Ngc55f1QnlJF+JRZT1kSOS4Bw178fFx/xc9z1HHmTnBZkA6efODJLO8nVYRPOiHKpeSmc83Ezzfs
i6sEzsnkzB0rNJbVF9PBkxs82eT9tNHH48PMtbyGfUOQI7aOUMeZO1Zak2FPB08+8JLyyvtpDzyA
EJoX/LrDi7Q50v7gxbXIun/D3TJHXaG507oWWLkhE+npJQnaKizvp1Xw8tjj48c1yvp+Q5Ajto5Q
l2fudPCKNW5J4Cks7yddhE9ZZeJye4aknZE2x5k+ri02yBvu9gWp08GrAjzF5f0yYSyCixUB8w+V
DKAXY5K0Nj5+XENsnDdcJQjWkt7Hq7SPxw8gKCPvJ1GEr1yLVLP0XMtr2DciVa2DVwF4UvuKMsj7
FbmUyi1ezdjW7oV08BQETyqg5afTwdMucqTkOng6eOqKzWidKInl18HTMHiy6MDpmSxjDZTv69T5
GeLDCct/82WJ8C1jw9IvLV4Dy9+SVFYCtYOnsurSi6PXgDw1oIMnTz3queg1UFYN6OCVVV16Yr0G
5KkBHTx56lHPRa+BsmpA2+DJJSKm57OMNdCY4n86eMvY5PRLM7s1lWUr6iOxKHipiJVM1LQ08Rco
wJ2nY160PTG75XKFdUFHmpr8KOdU7q7LkrMjLRd0iPSXRmugYYfXRcGjQ+wW6KZA7po8PK0ZHc5Q
3mI9ydBkaJcRdhd3ovOxloTRGZJ+Mkmpg6dR3rhi6+AJtflUiMGLomy+GC9F3AHMVAteyo1oc2GL
h8AzucLVg0dTVAQ2GMm1gfBnCATCpH0Ip0Mm4g0aEkBukC15ab31L2P5dfBKgEeZs95mOtrELRVi
LV7S77IxMBpMDk8oTfJLRewmk73J67YR22kwW90xhBrtZT8xGs3eCaQlYbC63A5COiRzRVnvtqT4
H9duwrwVTG6WBy/vQyg3SSz4oZ+XMiqKkytXa6UkqMvYslV+aR284uCZnW7EVNbbDDkBE7PDjiDB
4CWR7cK8OBx28tZo9yP2aM5mGiw2q4n0C63edCblw6fDOSazBcDjTKvFZmOSWTwEvZLif1zbQmaT
otIU5cBZwxu0lSv+E9I48XswUIIfpvC3dpzSgvMRabKQIckTLgEnqrxxq7l4Ongi4DVFQ+gnnvU2
Yzb8R7AJ2icCLxnETdrsTrBWzoYB84BpI0KAlDmQwCaQRGuMuF+XIa6mm7iaGDyTP46TpaPoEkYX
WZKeSsSi0ZjQ8vScPh4wAAdYLWhnHvweDBF4mAQ2+JDwFizyISQm30JKYjkhfbEma4Rboigfezk1
t2yVl00Hrzh4JncqHUWQYW8zFUF+JvAWbWIsHjaAlDuSDXwm/GA5sDEkURNHgM2dkabGFNFY8MHF
BVcM9txklDmcF0stKGNecIUzPgAGMVnQYSMEwnuCFqAo+CH5NsBzRElHDj7hv2I4AbHq5F+oGZU3
bjUXTwevOHg4/uFDVswEXbeQE/3cR0B3HQc2ga6wG97kQJIKQw8rC57JxYUrc8AjwRUEIRNcyU1G
mQRVWPgFFYxqot8ITBdnu/LAIwYt70NIDDeGio3/JQmgKwgfEg8WFRbbUkgJt0dMK+kWithGNTd6
NZRNB0/E4iE2iD9p9/rtAKDNB6nJiAKARyyeJ8bEU+Arkjhr8bLjBGLg8YYTcDLgXNC/5JW0EDxk
ankeIJ8x0osDZ1LwQ2iFkABOt1IUiR1JwYmflRrasebKoINXAjxwMYklQUQFkXvIgRf34R6Z3Z/1
J3GPzRWmCwboBMDjhhOKgpdOp1LCTmceeCTYCGaKa38EDH7PDVxNwQ+BOkCODDkge108asK5rJAS
cpaIqOaQqE2BdfCEwCMD6KQbxnib8Lc1gm0bB14mg8MtYKFsLn/A5zDj0IrJLTQyzvTrsCVLogF0
SGixB6bQcAIfPNT9Y13NkuJ/pIkQHuCAmAewBy/S5cMXYcItUDKSWPBDdEl2pAEYFml5kA/kAH0/
ckpt2mhdXkUHT9DiYStnchOPjw45EYZsCCSCo5puMGsIojDDG2mLzGBd4VwwGkVk2HBlxEscQ5iR
tgc+5ncFceDGQoIrJcX/SIsEzLieGFABbJBeHHiMVnIVnvco+CFYQjLeAfcp3sohxMJFVvRBvGp+
EXTwhMAr87NUMplIJOhUtrNXOoN0ik6VdUJOlvqUsWoavRrO1cErzYgKU+jgqQGeasqgg6dCrEoX
SQevmkavhnN18Eq3chWmIODpCl9arwEVNi2li6T5hbBab3N6+fUV6EpDruev14BeA0wNaNvi6Y9R
rwGN1oAOnkYfnF5sbdeADp62n59eeo3WgCbB09W56qAGGjOmwv1M6ODVQRvW3i007PAdB97/B99m
zAJxRZCXAAAAAElFTkSuQmCC
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51702</attachid>
            <date>2010-03-25 17:54:10 -0700</date>
            <delta_ts>2010-04-01 04:50:50 -0700</delta_ts>
            <desc>Proposed patch (rev.2)</desc>
            <filename>bug-31718-20100326095407.patch</filename>
            <type>text/plain</type>
            <size>53853</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1NGQ0ZWExLi43OWYzY2QyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDMt
MjUgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyYW1ld29yayB0byBzaG93IGZvcm0gdmFs
aWRhdGlvbiBtZXNzYWdlIGZvciBpbnZhbGlkIGNvbnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTcxOAorCisgICAgICAgIEFkZCBhIHRlc3Qg
dG8gY2hlY2sgYSB2aXNpYmxlIHZhbGlkYXRpb24gbWVzc2FnZS4KKyAgICAgICAgVGhlIG1lc3Nh
Z2Ugc2hvdWxkIGJlIGF2YWlsYWJsZSBvbmx5IHdoZW4gdGhlIGNvbnRyb2wgaGFzIGZvY3VzLgor
CisgICAgICAgICogZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvdmlzaWJsZS12YWxpZGF0aW9uLW1l
c3NhZ2UuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvdmlzaWJsZS12YWxpZGF0aW9u
LW1lc3NhZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3Zpc2li
bGUtdmFsaWRhdGlvbi1tZXNzYWdlLmh0bWw6IEFkZGVkLgorCiAyMDEwLTAzLTI1ICBGdW1pdG9z
aGkgVWthaSAgPHVrYWlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMg
U2VpZGVsLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMv
dmlzaWJsZS12YWxpZGF0aW9uLW1lc3NhZ2UuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Nj
cmlwdC10ZXN0cy92aXNpYmxlLXZhbGlkYXRpb24tbWVzc2FnZS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi45NWM5Y2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvdmlzaWJsZS12YWxpZGF0aW9uLW1lc3NhZ2UuanMK
QEAgLTAsMCArMSwxOSBAQAorZGVzY3JpcHRpb24oJ1Rlc3QgZm9yIHZhbGlkYXRpb24gbWVzc2Fn
ZSByZXF1ZXN0cyBmcm9tIGFuIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQuJyk7CisKK3ZhciBwYXJl
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK2RvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQocGFyZW50KTsKK3BhcmVudC5pbm5lckhUTUw9ICc8Zm9ybT4nCisgICAgKyAnPGlucHV0
IGlkPWkxIG5hbWU9aTEgcmVxdWlyZWQ+JworICAgICsgJzwvZm9ybT4nOworCit2YXIgaW5wdXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaTEnKTsKK2RlYnVnKCdJbnZhbGlkIGFuZCBubyBm
b2N1cycpOworc2hvdWxkQmVGYWxzZSgnaW5wdXQudmFsaWRpdHkudmFsaWQnKTsKK3Nob3VsZEJl
VHJ1ZSgnaW5wdXQudmFsaWRhdGlvbk1lc3NhZ2UubGVuZ3RoID4gMCcpOworc2hvdWxkQmUoJ2xh
eW91dFRlc3RDb250cm9sbGVyLnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlk
KCJpMSIpJywgJyIiJyk7CisKK2RlYnVnKCdJbnZhbGlkIGFuZCBmb2N1c2VkJyk7CitpbnB1dC5m
b2N1cygpOworc2hvdWxkQmUoJ2xheW91dFRlc3RDb250cm9sbGVyLnZpc2libGVWYWxpZGF0aW9u
TWVzc2FnZUZvckVsZW1lbnRCeUlkKCJpMSIpJywgJ2lucHV0LnZhbGlkYXRpb25NZXNzYWdlJyk7
CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy92aXNpYmxlLXZhbGlkYXRpb24tbWVzc2FnZS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Zpc2libGUtdmFsaWRhdGlvbi1tZXNzYWdlLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTE4MDE5Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy92aXNpYmxlLXZhbGlkYXRpb24tbWVz
c2FnZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorVGVzdCBmb3IgdmFsaWRhdGlvbiBt
ZXNzYWdlIHJlcXVlc3RzIGZyb20gYW4gSFRNTEZvcm1Db250cm9sRWxlbWVudC4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0ludmFsaWQgYW5kIG5vIGZvY3VzCitQQVNTIGlucHV0
LnZhbGlkaXR5LnZhbGlkIGlzIGZhbHNlCitQQVNTIGlucHV0LnZhbGlkYXRpb25NZXNzYWdlLmxl
bmd0aCA+IDAgaXMgdHJ1ZQorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci52aXNpYmxlVmFsaWRh
dGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZCgiaTEiKSBpcyAiIgorSW52YWxpZCBhbmQgZm9jdXNl
ZAorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci52aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JF
bGVtZW50QnlJZCgiaTEiKSBpcyBpbnB1dC52YWxpZGF0aW9uTWVzc2FnZQorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvdmlzaWJsZS12YWxpZGF0aW9uLW1lc3NhZ2UuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvdmlzaWJsZS12YWxpZGF0aW9uLW1lc3NhZ2UuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjkyODI1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy92aXNpYmxlLXZhbGlkYXRpb24tbWVzc2FnZS5odG1sCkBA
IC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwv
L0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3Zpc2libGUtdmFsaWRhdGlvbi1tZXNzYWdlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkZmFlYzdmLi5lMzM4OGJlIDEw
MDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQ0IEBACisyMDEwLTAzLTI1ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGcmFt
ZXdvcmsgdG8gc2hvdyBmb3JtIHZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW52YWxpZCBjb250cm9s
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE3MTgK
KworICAgICAgICBBbiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50IGNhbGxzIENocm9tZTo6dXBkYXRl
Rm9ybVZhbGlkYXRpb25NZXNzYWdlKCkKKyAgICAgICAgd2hlbiBpdCBnZXRzIGZvY3VzIGFuZCBs
b29zZXMgZm9jdXMuIENocm9tZTo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKCkKKyAgICAg
ICAgbWFuYWdlcyByZXF1ZXN0cyBmcm9tIG11bHRpcGxlIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQg
aW5zdGFuY2VzOgorICAgICAgICAtIFBlcmlvZGljYWxseSBjYWxscyBDaHJvbWVDbGllbnQ6OnVw
ZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSgpCisgICAgICAgICAgdG8gZm9sbG93IGVsZW1lbnQg
cG9zaXRpb24gY2hhbmdlLgorICAgICAgICAtIElmIGEgbWVzc2FnZSBpcyBzaG93biBmb3IgYSBj
b250cm9sIGFuZCB0aGUgZm9jdXMgaXMgY2hhbmdlZCB0bworICAgICAgICAgIGFub3RoZXIgaW52
YWxpZCBjb250cm9sLCBkbyBub3Qgc2hvdyBhIG1lc3NhZ2UgZm9yIGFub3RoZXIgY29udHJvbAor
ICAgICAgICAgIGltbWVkaWF0ZWx5LgorCisgICAgICAgIFRlc3Q6IGZhc3QvZm9ybXMvdmlzaWJs
ZS12YWxpZGF0aW9uLW1lc3NhZ2UuaHRtbAorCisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6Z2V0VHJhbnNmb3JtZWRDb3Ju
ZXJzKToKKyAgICAgICAgICBBZGQgYSBtZXRob2QgdG8gcHJvdmlkZSB0cmFuc2Zvcm1lZCBjb29y
ZGluYXRlcy4KKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGFpbmVyTm9kZTo6KToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGV0YWNo
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldE5lZWRzV2ls
bFZhbGlkYXRlQ2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVu
dDo6dXBkYXRlVmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldE5lZWRzVmFsaWRpdHlDaGVjayk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQp
OgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlKToK
KyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0
eUNocm9tZUNsaWVudDo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgKiBw
YWdlL0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnVwZGF0ZUZvcm1WYWxp
ZGF0aW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnN0YXJ0VmFsaWRhdGlv
bk1lc3NhZ2VCbGFja291dCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnZhbGlkYXRpb25N
ZXNzYWdlVGltZXJGaXJlZCk6CisgICAgICAgICogcGFnZS9DaHJvbWUuaDoKKyAgICAgICAgKiBw
YWdlL0Nocm9tZUNsaWVudC5oOgorCiAyMDEwLTAzLTI1ICBUYXN1a3UgU3V6dWtpICA8dGFzdWt1
LnN1enVraUBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuY3BwCmluZGV4IGZiMjg1MmYuLjA1Yzk0N2UgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUu
Y3BwCkBAIC00MCw2ICs0MCw5IEBACiAjaW5jbHVkZSAiUm9vdElubGluZUJveC5oIgogI2luY2x1
ZGUgImxvYWRlci5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0
Zi9NYXRoRXh0cmFzLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtODA3LDYgKzgxMCwyMCBAQCBJbnRSZWN0IENvbnRhaW5lck5vZGU6OmdldFJl
Y3QoKSBjb25zdAogICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KEZsb2F0UmVjdCh1cHBlckxl
ZnQsIGxvd2VyUmlnaHQgLSB1cHBlckxlZnQpKTsKIH0KIAorVmVjdG9yPEZsb2F0UG9pbnQ+IENv
bnRhaW5lck5vZGU6OmdldFRyYW5zZm9ybWVkQ29ybmVycygpIGNvbnN0Cit7CisgICAgVmVjdG9y
PEZsb2F0UG9pbnQ+IGNvcm5lcnM7CisgICAgUmVuZGVyT2JqZWN0KiByID0gcmVuZGVyZXIoKTsK
KyAgICBpZiAoIXIpCisgICAgICAgIHJldHVybiBjb3JuZXJzOworICAgIEludFJlY3QgcmVjdCA9
IGdldFJlY3QoKTsKKyAgICBjb3JuZXJzLmFwcGVuZChyLT5sb2NhbFRvQWJzb2x1dGUoRmxvYXRQ
b2ludCgwLCAwKSwgZmFsc2UsIHRydWUpKTsKKyAgICBjb3JuZXJzLmFwcGVuZChyLT5sb2NhbFRv
QWJzb2x1dGUoRmxvYXRQb2ludChyZWN0LndpZHRoKCksIDApLCBmYWxzZSwgdHJ1ZSkpOworICAg
IGNvcm5lcnMuYXBwZW5kKHItPmxvY2FsVG9BYnNvbHV0ZShGbG9hdFBvaW50KDAsIHJlY3QuaGVp
Z2h0KCkpLCBmYWxzZSwgdHJ1ZSkpOworICAgIGNvcm5lcnMuYXBwZW5kKHItPmxvY2FsVG9BYnNv
bHV0ZShGbG9hdFBvaW50KHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSksIGZhbHNlLCB0cnVl
KSk7CisgICAgcmV0dXJuIGNvcm5lcnM7Cit9CisKIHZvaWQgQ29udGFpbmVyTm9kZTo6c2V0Rm9j
dXMoYm9vbCByZWNlaXZlZCkKIHsKICAgICBpZiAoZm9jdXNlZCgpID09IHJlY2VpdmVkKQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oIGIvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZS5oCmluZGV4IDk3ODlmMWYuLjE1YTY0YWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9t
L0NvbnRhaW5lck5vZGUuaAorKysgYi9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKQEAgLTUz
LDcgKzUzLDI1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAgICAgdmly
dHVhbCB2b2lkIGRldGFjaCgpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVtb3ZlKCk7CisgICAg
Ly8gUmV0dXJucyB0aGUgcmVjdGFuZ2xlIG9mIHRoZSBib3JkZXIgZWRnZXMgb2YgdGhpcyBlbGVt
ZW50LgorICAgIC8vIFRyYW5zZm9ybXMgYXJlIG5vdCBhcHBsaWVkLgogICAgIHZpcnR1YWwgSW50
UmVjdCBnZXRSZWN0KCkgY29uc3Q7CisgICAgLy8gUmV0dXJucyB0aGUgdG9wLWxlZnQsIHRvcC1y
aWdodCwgYm90dG9tLWxlZnQsIGJvdHRvbS1yaWdodCBjb3JuZXIKKyAgICAvLyBsb2NhdGlvbnMg
d2l0aCB0cmFuc2Zvcm1hdGlvbnMuIFRoaXMgcmV0dXJucyBhbiBlbXB0eSB2ZWN0b3IgaWYgdGhl
CisgICAgLy8gZWxlbWVudCBoYXMgbm8gcmVuZGVyZXIuCisgICAgLy8gU3VwcG9zZSB0aGF0ICdw
b2ludHMnIGlzIGEgcmVzdWx0IG9mIGdldFRyYW5zZm9ybWVkQ29ybmVycygpLCB5b3UgY2FuCisg
ICAgLy8gYWNjZXNzIGVhY2ggb2YgY29ybmVycyB3aXRoIHN5bWJvbGljIGluZGV4ZXM6CisgICAg
Ly8gICBwb2ludHNbVG9wTGVmdENvcm5lcl0KKyAgICAvLyAgIHBvaW50c1tUb3BSaWdodENvcm5l
cl0KKyAgICAvLyAgIHBvaW50c1tCb3R0b21MZWZ0Q29ybmVyXQorICAgIC8vICAgcG9pbnRzW2Jv
dHRvbVJpZ2h0Q29ybmVyXQorICAgIHZpcnR1YWwgVmVjdG9yPEZsb2F0UG9pbnQ+IGdldFRyYW5z
Zm9ybWVkQ29ybmVycygpIGNvbnN0OworICAgIGVudW0geyAvLyBJbmRleGVzIGZvciB0aGUgcmVz
dWx0IG9mIGdldFRyYW5zZm9ybWVkQ29ybmVycygpLgorICAgICAgICBUb3BMZWZ0Q29ybmVyID0g
MCwKKyAgICAgICAgVG9wUmlnaHRDb3JuZXIsCisgICAgICAgIEJvdHRvbUxlZnRDb3JuZXIsCisg
ICAgICAgIEJvdHRvbVJpZ2h0Q29ybmVyCisgICAgfTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9j
dXMoYm9vbCA9IHRydWUpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmUoYm9vbCBhY3RpdmUg
PSB0cnVlLCBib29sIHBhdXNlID0gZmFsc2UpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRIb3ZlcmVk
KGJvb2wgPSB0cnVlKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRl
eCBjODBmYjM2Li5jYTk5YWU4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250
cm9sRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwCkBAIC03Miw2ICs3MiwxMiBAQCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp+SFRNTEZvcm1D
b250cm9sRWxlbWVudCgpCiAgICAgICAgIG1fZm9ybS0+cmVtb3ZlRm9ybUVsZW1lbnQodGhpcyk7
CiB9CiAKK3ZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGV0YWNoKCkKK3sKKyAgICBIVE1M
RWxlbWVudDo6ZGV0YWNoKCk7CisgICAgdXBkYXRlVmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlKCk7
Cit9CisKIGJvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6Zm9ybU5vVmFsaWRhdGUoKSBjb25z
dAogewogICAgIHJldHVybiAhZ2V0QXR0cmlidXRlKGZvcm1ub3ZhbGlkYXRlQXR0cikuaXNOdWxs
KCk7CkBAIC0zMjMsNyArMzI5LDcgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpzZXRO
ZWVkc1dpbGxWYWxpZGF0ZUNoZWNrKCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fd2lsbFZhbGlk
YXRlID0gbmV3V2lsbFZhbGlkYXRlOwogICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKLSAgICAv
LyBGSVhNRTogU2hvdy9oaWRlIGEgdmFsaWRhdGlvbiBtZXNzYWdlLgorICAgIHVwZGF0ZVZpc2li
bGVWYWxpZGF0aW9uTWVzc2FnZSgpOwogfQogCiBTdHJpbmcgSFRNTEZvcm1Db250cm9sRWxlbWVu
dDo6dmFsaWRhdGlvbk1lc3NhZ2UoKQpAQCAtMzMxLDYgKzMzNywxOSBAQCBTdHJpbmcgSFRNTEZv
cm1Db250cm9sRWxlbWVudDo6dmFsaWRhdGlvbk1lc3NhZ2UoKQogICAgIHJldHVybiB2YWxpZGl0
eSgpLT52YWxpZGF0aW9uTWVzc2FnZSgpOwogfQogCit2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQ6OnVwZGF0ZVZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSgpCit7CisgICAgUGFnZSogcGFnZSA9
IGRvY3VtZW50KCktPnBhZ2UoKTsKKyAgICBTdHJpbmcgbWVzc2FnZTsKKyAgICAvLyBXZSBjYW4n
dCB1c2UgZm9jdXNlZCgpLiBUaGUgZm9jdXNlZCgpIHN0YXRlIGlzIHVwZGF0ZWQgYWZ0ZXIgZGlz
cGF0Y2hGb2N1c0V2ZW50KCkuCisgICAgaWYgKHBhZ2UgJiYgZG9jdW1lbnQoKS0+Zm9jdXNlZE5v
ZGUoKSA9PSB0aGlzICYmIHJlbmRlcmVyKCkgJiYgd2lsbFZhbGlkYXRlKCkpCisgICAgICAgIG1l
c3NhZ2UgPSB2YWxpZGF0aW9uTWVzc2FnZSgpOworICAgIGlmIChtX3Zpc2libGVWYWxpZGF0aW9u
TWVzc2FnZSA9PSBtZXNzYWdlKQorICAgICAgICByZXR1cm47CisgICAgcGFnZS0+Y2hyb21lKCkt
PnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSh0aGlzLCBtZXNzYWdlKTsKKyAgICBtX3Zpc2li
bGVWYWxpZGF0aW9uTWVzc2FnZSA9IG1lc3NhZ2U7Cit9CisKIGJvb2wgSFRNTEZvcm1Db250cm9s
RWxlbWVudDo6Y2hlY2tWYWxpZGl0eSgpCiB7CiAgICAgaWYgKHdpbGxWYWxpZGF0ZSgpICYmICFp
c1ZhbGlkRm9ybUNvbnRyb2xFbGVtZW50KCkpIHsKQEAgLTM1Nyw3ICszNzYsOSBAQCB2b2lkIEhU
TUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldE5lZWRzVmFsaWRpdHlDaGVjaygpCiAgICAgICAgIHNl
dE5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICB9CiAgICAgbV9pc1ZhbGlkID0gbmV3SXNWYWxpZDsK
LSAgICAvLyBGSVhNRTogc2hvdy9oaWRlIGEgdmFsaWRhdGlvbiBtZXNzYWdlLgorICAgIC8vIENh
bGxzIGl0IGV2ZW4gaWYgbV9pc1ZhbGlkIGlzIG5vdCBjaGFuZ2VkCisgICAgLy8gYmVjYXVzZSBh
IHZhbGlkYXRpb24gbWVzc2FnZSBjYW4gYmUgY2hhZ25lZC4KKyAgICB1cGRhdGVWaXNpYmxlVmFs
aWRhdGlvbk1lc3NhZ2UoKTsKIH0KIAogdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpzZXRD
dXN0b21WYWxpZGl0eShjb25zdCBTdHJpbmcmIGVycm9yKQpAQCAtMzcxLDYgKzM5Miw3IEBAIHZv
aWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KCkKICAgICAgICAg
ZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPmZvcm1EaWRGb2N1cyh0aGlz
KTsKIAogICAgIEhUTUxFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZlbnQoKTsKKyAgICB1cGRhdGVW
aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKTsKIH0KIAogdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50OjpkaXNwYXRjaEJsdXJFdmVudCgpCkBAIC0zNzksNiArNDAxLDcgQEAgdm9pZCBIVE1MRm9y
bUNvbnRyb2xFbGVtZW50OjpkaXNwYXRjaEJsdXJFdmVudCgpCiAgICAgICAgIGRvY3VtZW50KCkt
PnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5mb3JtRGlkQmx1cih0aGlzKTsKIAogICAgIEhU
TUxFbGVtZW50OjpkaXNwYXRjaEJsdXJFdmVudCgpOworICAgIHVwZGF0ZVZpc2libGVWYWxpZGF0
aW9uTWVzc2FnZSgpOwogfQogCiBIVE1MRm9ybUVsZW1lbnQqIEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQ6OnZpcnR1YWxGb3JtKCkgY29uc3QKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xFbGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5o
CmluZGV4IDliNmM5NDMuLjg1YzgzMDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1l
bnQuaApAQCAtMTA4LDYgKzEwOCw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgd2lsbFZhbGlkYXRl
KCkgY29uc3Q7CiAgICAgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlKCk7CisgICAgLy8gRm9yIHRl
c3RpbmcuCisgICAgU3RyaW5nIHZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSgpIHsgcmV0dXJuIG1f
dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlOyB9CiAgICAgYm9vbCBjaGVja1ZhbGlkaXR5KCk7CiAg
ICAgLy8gVGhpcyBtdXN0IGJlIGNhbGxlZCB3aGVuIGEgdmFsaWRhdGlvbiBjb25zdHJhaW50IG9y
IGNvbnRyb2wgdmFsdWUgaXMgY2hhbmdlZC4KICAgICB2b2lkIHNldE5lZWRzVmFsaWRpdHlDaGVj
aygpOwpAQCAtMTIwLDYgKzEyMiw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaEZvY3VzRXZlbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hCbHVyRXZlbnQoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIHJlbW92
ZUZyb21Gb3JtKCk7CkBAIC0xMzEsOSArMTM0LDExIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBI
VE1MRm9ybUVsZW1lbnQqIHZpcnR1YWxGb3JtKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlz
RGVmYXVsdEJ1dHRvbkZvckZvcm0oKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZEZv
cm1Db250cm9sRWxlbWVudCgpOworICAgIHZvaWQgdXBkYXRlVmlzaWJsZVZhbGlkYXRpb25NZXNz
YWdlKCk7CiAKICAgICBIVE1MRm9ybUVsZW1lbnQqIG1fZm9ybTsKICAgICBPd25QdHI8VmFsaWRp
dHlTdGF0ZT4gbV92YWxpZGl0eVN0YXRlOworICAgIFN0cmluZyBtX3Zpc2libGVWYWxpZGF0aW9u
TWVzc2FnZTsKICAgICBib29sIG1faGFzTmFtZSA6IDE7CiAgICAgYm9vbCBtX2Rpc2FibGVkIDog
MTsKICAgICBib29sIG1fcmVhZE9ubHkgOiAxOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmggYi9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCBjYTFj
OWMyLi5iN2JkODU4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAor
KysgYi9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaApAQCAtMzcsNiArMzcsNyBAQAogI2lu
Y2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZvY3VzRGlyZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJIVE1MRm9ybUNvbnRyb2xFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGx1Z2luSGFsdGVy
Q2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgpAQCAtMTUwLDYgKzE1MSw3IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBmb3JtRGlkRm9jdXMoY29uc3QgTm9kZSopIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBmb3JtRGlkQmx1cihjb25zdCBOb2RlKikgeyB9CisgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShQYXNzUmVmUHRyPEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ+LCBjb25zdCBTdHJpbmcmKSB7fQogCiAgICAgdmlydHVhbCBQYXNzT3du
UHRyPEhUTUxQYXJzZXJRdWlya3M+IGNyZWF0ZUhUTUxQYXJzZXJRdWlya3MoKSB7IHJldHVybiAw
OyB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwIGIvV2ViQ29yZS9wYWdl
L0Nocm9tZS5jcHAKaW5kZXggNDE3NDY5NS4uOWEwODZjOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
YWdlL0Nocm9tZS5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKQEAgLTU1LDYgKzU1
LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiB1
c2luZyBuYW1lc3BhY2Ugc3RkOwogCitjb25zdCBkb3VibGUgdmFsaWRhdGlvbk1lc3NhZ2VWaXNp
YmxlRHVyYXRpb25TZWMgPSA1OworY29uc3QgZG91YmxlIHZhbGlkYXRpb25NZXNzYWdlQmxhY2tv
dXRTZWMgPSAwLjY7Citjb25zdCBkb3VibGUgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRlcnZh
bFNlYyA9IDAuNTsKK2NvbnN0IGludCB2YWxpZGF0aW9uTWVzc2FnZUNvdW50ZXJNYXhpbXVtID0g
c3RhdGljX2Nhc3Q8aW50PigKKyAgICB2YWxpZGF0aW9uTWVzc2FnZVZpc2libGVEdXJhdGlvblNl
YyAvIHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlSW50ZXJ2YWxTZWMpOworCiBDaHJvbWU6OkNocm9t
ZShQYWdlKiBwYWdlLCBDaHJvbWVDbGllbnQqIGNsaWVudCkKICAgICA6IG1fcGFnZShwYWdlKQog
ICAgICwgbV9jbGllbnQoY2xpZW50KQpAQCAtNDEwLDYgKzQxNiw4MCBAQCB2b2lkIENocm9tZTo6
c2V0VG9vbFRpcChjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQpCiAgICAgbV9jbGllbnQtPnNl
dFRvb2xUaXAodG9vbFRpcCwgdG9vbFRpcERpcmVjdGlvbik7CiB9CiAKK3ZvaWQgQ2hyb21lOjp1
cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoUGFzc1JlZlB0cjxIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50PiBjb250cm9sLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgQVNTRVJUKGNvbnRy
b2wpOworICAgIGlmICghbV92YWxpZGF0aW9uTWVzc2FnZVRpbWVyKQorICAgICAgICBtX3ZhbGlk
YXRpb25NZXNzYWdlVGltZXIuc2V0KG5ldyBUaW1lcjxDaHJvbWU+KHRoaXMsICZDaHJvbWU6OnZh
bGlkYXRpb25NZXNzYWdlVGltZXJGaXJlZCkpOworCisgICAgaWYgKG1lc3NhZ2UuaXNFbXB0eSgp
KSB7CisgICAgICAgIGlmIChtX3ZhbGlkYXRpb25NZXNzYWdlVGFyZ2V0ICE9IGNvbnRyb2wpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2VUaW1lci0+c3Rv
cCgpOworICAgICAgICBtX2NsaWVudC0+dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKGNvbnRy
b2wsIG1lc3NhZ2UpOworICAgICAgICBtX3ZhbGlkYXRpb25NZXNzYWdlID0gbWVzc2FnZTsKKyAg
ICAgICAgbV92YWxpZGF0aW9uTWVzc2FnZVRhcmdldC5jbGVhcigpOworICAgICAgICAvLyBTdGFy
dCB0aGUgdGltZXIgdG8gbWFrZSBhIGJsYWNrb3V0IHBlcmlvZC4gRG8gbm90IHVzZSBzdGFydE9u
ZVNob3J0KCkKKyAgICAgICAgLy8gaW4gb3JkZXIgdG8gcmV1c2UgdGhpcyBmb3IgdGhlIG5leHQg
bWVzc2FnZS4KKyAgICAgICAgc3RhcnRWYWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0KCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBib29sIHdhc1Zpc2libGUgPSAhbV92YWxpZGF0aW9u
TWVzc2FnZS5pc0VtcHR5KCk7CisgICAgUmVmUHRyPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+IGxh
c3RUYXJnZXQobV92YWxpZGF0aW9uTWVzc2FnZVRhcmdldCk7CisgICAgYm9vbCByZXNldFRpbWVy
ID0gIXdhc1Zpc2libGUgfHwgbV92YWxpZGF0aW9uTWVzc2FnZVRhcmdldCAhPSBjb250cm9sIHx8
IG1fdmFsaWRhdGlvbk1lc3NhZ2UgIT0gbWVzc2FnZTsKKyAgICBtX3ZhbGlkYXRpb25NZXNzYWdl
ID0gbWVzc2FnZTsKKyAgICBtX3ZhbGlkYXRpb25NZXNzYWdlVGFyZ2V0ID0gY29udHJvbDsKKyAg
ICBpZiAoIXJlc2V0VGltZXIpIHsKKyAgICAgICAgbV9jbGllbnQtPnVwZGF0ZUZvcm1WYWxpZGF0
aW9uTWVzc2FnZShtX3ZhbGlkYXRpb25NZXNzYWdlVGFyZ2V0LCBtX3ZhbGlkYXRpb25NZXNzYWdl
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAod2FzVmlzaWJsZSkgeworICAgICAg
ICAvLyBDbGVhciB0aGUgdmlzaWJsZSBvbGQgbWVzc2FnZS4KKyAgICAgICAgbV92YWxpZGF0aW9u
TWVzc2FnZVRpbWVyLT5zdG9wKCk7CisgICAgICAgIG1fY2xpZW50LT51cGRhdGVGb3JtVmFsaWRh
dGlvbk1lc3NhZ2UobGFzdFRhcmdldCwgU3RyaW5nKCkpOworICAgICAgICAvLyBXaWxsIHNob3cg
dGhlIG5ldyBtZXNzYWdlIGFmdGVyIHZhbGlkYXRpb25NZXNzYWdlQmxhY2tvdXRTZWMuCisgICAg
ICAgIHN0YXJ0VmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dCgpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIGlmIChtX3ZhbGlkYXRpb25NZXNzYWdlVGltZXItPmlzQWN0aXZlKCkpIHsKKyAgICAgICAg
ICAgIC8vIE5vdGhpbmcgdG8gZG8gaWYgaXQgaXMgaW4gYSBibGFja291dCBwZXJpb2QuIFdoZW4g
dGhlIHRpbWVyIGlzCisgICAgICAgICAgICAvLyBmaXJlZCBuZXh0IHRpbWUsIHZhbGlkYXRpb25N
ZXNzYWdlVGltZXJGaXJlZCgpIHNob3dzIHRoZSBtZXNzYWdlCisgICAgICAgICAgICAvLyBiZWNh
dXNlIG1fdmFsaWRhdGlvbk1lc3NhZ2UgaXMgbm90IGVtcHR5LgorICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgLy8gSXQncyBub3QgaW4gYSBibGFja291dCBwZXJpb2QuIFNob3cgdGhlIG1l
c3NhZ2UgaW1tZWRpYXRlbHkuCisgICAgICAgICAgICBtX2NsaWVudC0+dXBkYXRlRm9ybVZhbGlk
YXRpb25NZXNzYWdlKG1fdmFsaWRhdGlvbk1lc3NhZ2VUYXJnZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2UpOwor
ICAgICAgICAgICAgbV92YWxpZGF0aW9uTWVzc2FnZVRpbWVyQ291bnRlciA9IDA7CisgICAgICAg
ICAgICBtX3ZhbGlkYXRpb25NZXNzYWdlVGltZXItPnN0YXJ0UmVwZWF0aW5nKHZhbGlkYXRpb25N
ZXNzYWdlVXBkYXRlSW50ZXJ2YWxTZWMpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIENo
cm9tZTo6c3RhcnRWYWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0KCkKK3sKKyAgICBtX3ZhbGlkYXRp
b25NZXNzYWdlVGltZXJDb3VudGVyID0gLTE7CisgICAgbV92YWxpZGF0aW9uTWVzc2FnZVRpbWVy
LT5zdGFydCh2YWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0U2VjLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRlcnZhbFNlYyk7Cit9
CisKK3ZvaWQgQ2hyb21lOjp2YWxpZGF0aW9uTWVzc2FnZVRpbWVyRmlyZWQoVGltZXI8Q2hyb21l
PiogdGltZXIpCit7CisgICAgaWYgKG1fdmFsaWRhdGlvbk1lc3NhZ2UuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIEFTU0VSVChtX3ZhbGlkYXRpb25NZXNzYWdlVGltZXJDb3VudGVyIDwgMCk7CisgICAg
ICAgIHRpbWVyLT5zdG9wKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9jbGllbnQt
PnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShtX3ZhbGlkYXRpb25NZXNzYWdlVGFyZ2V0LCBt
X3ZhbGlkYXRpb25NZXNzYWdlKTsKKyAgICBpZiAoKyttX3ZhbGlkYXRpb25NZXNzYWdlVGltZXJD
b3VudGVyIDwgdmFsaWRhdGlvbk1lc3NhZ2VDb3VudGVyTWF4aW11bSkKKyAgICAgICAgcmV0dXJu
OworICAgIHRpbWVyLT5zdG9wKCk7CisgICAgbV9jbGllbnQtPnVwZGF0ZUZvcm1WYWxpZGF0aW9u
TWVzc2FnZShtX3ZhbGlkYXRpb25NZXNzYWdlVGFyZ2V0LCBTdHJpbmcoKSk7CisgICAgbV92YWxp
ZGF0aW9uTWVzc2FnZSA9IFN0cmluZygpOworICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2VUYXJnZXQu
Y2xlYXIoKTsKKworICAgIHN0YXJ0VmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dCgpOworfQorCiB2
b2lkIENocm9tZTo6cHJpbnQoRnJhbWUqIGZyYW1lKQogewogICAgIG1fY2xpZW50LT5wcmludChm
cmFtZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmggYi9XZWJDb3JlL3BhZ2Uv
Q2hyb21lLmgKaW5kZXggNzIzMTJiYy4uZmZmOGU4MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdl
L0Nocm9tZS5oCisrKyBiL1dlYkNvcmUvcGFnZS9DaHJvbWUuaApAQCAtMjQsNyArMjQsOSBAQAog
I2luY2x1ZGUgIkZpbGVDaG9vc2VyLmgiCiAjaW5jbHVkZSAiRm9jdXNEaXJlY3Rpb24uaCIKICNp
bmNsdWRlICJIb3N0V2luZG93LmgiCisjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC00MCw2ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBjbGFzcyBGbG9hdFJlY3Q7CiAgICAgY2xhc3MgRnJhbWU7CiAgICAgY2xhc3Mg
R2VvbG9jYXRpb247CisgICAgY2xhc3MgSFRNTEZvcm1Db250cm9sRWxlbWVudDsKICAgICBjbGFz
cyBIaXRUZXN0UmVzdWx0OwogICAgIGNsYXNzIEludFJlY3Q7CiAgICAgY2xhc3MgTm9kZTsKQEAg
LTEyOCw2ICsxMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgbW91c2VE
aWRNb3ZlT3ZlckVsZW1lbnQoY29uc3QgSGl0VGVzdFJlc3VsdCYsIHVuc2lnbmVkIG1vZGlmaWVy
RmxhZ3MpOwogCiAgICAgICAgIHZvaWQgc2V0VG9vbFRpcChjb25zdCBIaXRUZXN0UmVzdWx0Jik7
CisgICAgICAgIHZvaWQgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKFBhc3NSZWZQdHI8SFRN
TEZvcm1Db250cm9sRWxlbWVudD4sIGNvbnN0IFN0cmluZyYpOwogCiAgICAgICAgIHZvaWQgcHJp
bnQoRnJhbWUqKTsKIApAQCAtMTQ4LDggKzE1MiwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAj
ZW5kaWYKIAogICAgIHByaXZhdGU6CisgICAgICAgIHZvaWQgdmFsaWRhdGlvbk1lc3NhZ2VUaW1l
ckZpcmVkKFRpbWVyPENocm9tZT4qKTsKKyAgICAgICAgdm9pZCBzdGFydFZhbGlkYXRpb25NZXNz
YWdlQmxhY2tvdXQoKTsKKwogICAgICAgICBQYWdlKiBtX3BhZ2U7CiAgICAgICAgIENocm9tZUNs
aWVudCogbV9jbGllbnQ7CisgICAgICAgIE93blB0cjxUaW1lcjxDaHJvbWU+Kj4gbV92YWxpZGF0
aW9uTWVzc2FnZVRpbWVyOworICAgICAgICBpbnQgbV92YWxpZGF0aW9uTWVzc2FnZVRpbWVyQ291
bnRlcjsKKyAgICAgICAgU3RyaW5nIG1fdmFsaWRhdGlvbk1lc3NhZ2U7CisgICAgICAgIFJlZlB0
cjxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PiBtX3ZhbGlkYXRpb25NZXNzYWdlVGFyZ2V0OwogICAg
IH07CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1dlYkNv
cmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCA4MzEyOTI4Li5lOWU4Y2E2IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oCkBAIC00Nyw2ICs0Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBG
bG9hdFJlY3Q7CiAgICAgY2xhc3MgRnJhbWU7CiAgICAgY2xhc3MgR2VvbG9jYXRpb247CisgICAg
Y2xhc3MgSFRNTEZvcm1Db250cm9sRWxlbWVudDsKICAgICBjbGFzcyBIVE1MUGFyc2VyUXVpcmtz
OwogICAgIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiAgICAgY2xhc3MgSW50UmVjdDsKQEAgLTE5OSw2
ICsyMDAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFs
IHZvaWQgZm9ybURpZEZvY3VzKGNvbnN0IE5vZGUqKSB7IH07CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBmb3JtRGlkQmx1cihjb25zdCBOb2RlKikgeyB9OworICAgICAgICAvLyBYWFgKKyAgICAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShQYXNzUmVmUHRyPEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQ+LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAKICAgICAgICAgdmlydHVh
bCBQYXNzT3duUHRyPEhUTUxQYXJzZXJRdWlya3M+IGNyZWF0ZUhUTUxQYXJzZXJRdWlya3MoKSA9
IDA7CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9DaGFuZ2VMb2cgYi9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IGJlZTMyOTguLjIzY2M0MDYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEwLTAzLTI1ICBLZW50IFRhbXVy
YSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBGcmFtZXdvcmsgdG8gc2hvdyBmb3JtIHZhbGlkYXRpb24gbWVzc2Fn
ZSBmb3IgaW52YWxpZCBjb250cm9scworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzE3MTgKKworICAgICAgICBBZGQgYSBzdHViIGZvciB1cGRhdGVGb3Jt
VmFsaWRhdGlvbk1lc3NhZ2UoKS4KKworICAgICAgICAqIGVmbC9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjp1cGRh
dGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UpOgorICAgICAgICAqIGVmbC9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRFZmwuaDoKKwogMjAxMC0wMy0yMiAgS2V2aW4gRGVja2VyICA8a2RlY2tlckBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
aW5kZXggMTc2Nzk2Ni4uZjIxN2ZiMiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MTAtMDMtMjUgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyYW1ld29yayB0byBzaG93IGZv
cm0gdmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnZhbGlkIGNvbnRyb2xzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTcxOAorCisgICAgICAgIEFkZCBh
IHN0dWIgZm9yIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSgpLgorCisgICAgICAgICogc3Jj
L0Nocm9tZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBs
Ojp1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UpOgorICAgICAgICAqIHNyYy9DaHJvbWVDbGll
bnRJbXBsLmg6CisKIDIwMTAtMDMtMTAgIEpvaG4gQWJkLUVsLU1hbGVrICA8amFtQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVt
L3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAppbmRleCAyMDkwMDUyLi42MmY4NjQzIDEwMDY0NAot
LS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCisrKyBiL1dlYktp
dC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKQEAgLTY1MSw2ICs2NTEsMTEgQEAg
dm9pZCBDaHJvbWVDbGllbnRJbXBsOjpmb3JtU3RhdGVEaWRDaGFuZ2UoY29uc3QgTm9kZSogbm9k
ZSkKICAgICAgICAgd2ViZnJhbWUtPmNsaWVudCgpLT5kaWRVcGRhdGVDdXJyZW50SGlzdG9yeUl0
ZW0od2ViZnJhbWUpOwogfQogCit2b2lkIENocm9tZUNsaWVudEltcGw6OnVwZGF0ZUZvcm1WYWxp
ZGF0aW9uTWVzc2FnZShQYXNzUmVmUHRyPFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+
LCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
IHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6Z2V0UG9wdXBNZW51SW5mbyhQb3B1cENvbnRhaW5lciog
cG9wdXBDb250YWluZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
V2ViUG9wdXBNZW51SW5mbyogaW5mbykKIHsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9z
cmMvQ2hyb21lQ2xpZW50SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJ
bXBsLmgKaW5kZXggNzI4MTVkMy4uYjBiZTY2ZiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVD
bGllbnRJbXBsLmgKQEAgLTEyNyw2ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGNob29zZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U3RyaW5nPiYsIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6RmlsZUNob29zZXI+KTsKICAgICB2aXJ0dWFsIGJvb2wgc2V0Q3Vyc29y
KFdlYkNvcmU6OlBsYXRmb3JtQ3Vyc29ySGFuZGxlKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgdm9pZCBmb3JtU3RhdGVEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6Tm9kZSopOworICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoUGFzc1JlZlB0cjxXZWJD
b3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50PiwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7CiAg
ICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkNvcmU6OkhUTUxQYXJzZXJRdWlya3M+IGNyZWF0ZUhU
TUxQYXJzZXJRdWlya3MoKSB7IHJldHVybiAwOyB9CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykK
ICAgICAvLyBGSVhNRTogQWxsIHRvdWNoIGV2ZW50cyBhcmUgZm9yd2FyZGVkIHJlZ2FyZGxlc3Mg
b2Ygd2hldGhlciBvciBub3QgdGhleSBhcmUgbmVlZGVkLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwIGIvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCmluZGV4IGQ5YzM4NDkuLjQzYzI2Y2YgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcAorKysg
Yi9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKQEAgLTM4MCw2
ICszODAsMTEgQEAgdm9pZCBDaHJvbWVDbGllbnRFZmw6OmZvcm1TdGF0ZURpZENoYW5nZShjb25z
dCBOb2RlKikKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIENocm9tZUNsaWVudEVm
bDo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKFBhc3NSZWZQdHI8V2ViQ29yZTo6SFRNTEZv
cm1Db250cm9sRWxlbWVudD4sIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwogYm9vbCBDaHJvbWVDbGllbnRFZmw6OnNldEN1cnNvcihQbGF0Zm9y
bUN1cnNvckhhbmRsZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaCBiL1dlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmgKaW5kZXggMGUxNzgwNi4uZGI3MWQ0NiAxMDA2
NDQKLS0tIGEvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaAorKysg
Yi9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCkBAIC0xMTIsNiAr
MTEyLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSos
IFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KTsKICAgICB2aXJ0dWFsIHZvaWQgZm9ybVN0YXRlRGlk
Q2hhbmdlKGNvbnN0IE5vZGUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRm9ybVZhbGlkYXRp
b25NZXNzYWdlKFBhc3NSZWZQdHI8V2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudD4sIGNv
bnN0IFdlYkNvcmU6OlN0cmluZyYpOwogCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPEhUTUxQYXJz
ZXJRdWlya3M+IGNyZWF0ZUhUTUxQYXJzZXJRdWlya3MoKSB7IHJldHVybiAwOyB9CiAKZGlmZiAt
LWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXgg
YzQzZjk4Mi4uMjUxYmUwYSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wMy0yNSAgS2VudCBU
YW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgRnJhbWV3b3JrIHRvIHNob3cgZm9ybSB2YWxpZGF0aW9uIG1l
c3NhZ2UgZm9yIGludmFsaWQgY29udHJvbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTMxNzE4CisKKyAgICAgICAgQWRkIGEgc3R1YiBmb3IgdXBkYXRl
Rm9ybVZhbGlkYXRpb25NZXNzYWdlKCkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnVwZGF0ZUZv
cm1WYWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50R3RrLmg6CisKIDIwMTAtMDMtMjQgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwIGIvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCmluZGV4IGUyZWM2NTIuLjg0ODZjYmUgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAor
KysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKQEAgLTU2
NCw2ICs1NjQsMTEgQEAgdm9pZCBDaHJvbWVDbGllbnQ6OmNob29zZUljb25Gb3JGaWxlcyhjb25z
dCBWZWN0b3I8V2ViQ29yZTo6U3RyaW5nPiYgZmlsZW5hbWVzLAogICAgIGNob29zZXItPmljb25M
b2FkZWQoSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKGZpbGVuYW1lcykpOwogfQogCit2b2lkIENo
cm9tZUNsaWVudDo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKFBhc3NSZWZQdHI8V2ViQ29y
ZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudD4sIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogYm9vbCBDaHJvbWVDbGllbnQ6OnNldEN1cnNvcihQ
bGF0Zm9ybUN1cnNvckhhbmRsZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaCBiL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKaW5kZXggNmQ1YjRkNi4uZjQzOTU1
ZiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsu
aAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCkBAIC0x
MTMsNiArMTEzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBj
aG9vc2VJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlN0cmluZz4mLCBQYXNzUmVm
UHRyPFdlYkNvcmU6OkZpbGVDaG9vc2VyPik7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGZvcm1T
dGF0ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpOb2RlKikgeyB9CisgICAgICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoUGFzc1JlZlB0cjxXZWJDb3JlOjpIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50PiwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7CiAKICAgICAgICAg
dmlydHVhbCBQYXNzT3duUHRyPFdlYkNvcmU6OkhUTUxQYXJzZXJRdWlya3M+IGNyZWF0ZUhUTUxQ
YXJzZXJRdWlya3MoKSB7IHJldHVybiAwOyB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9oYWlrdS9D
aGFuZ2VMb2cgYi9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCmluZGV4IDM3NjA1YmEuLjIzNzU4ZDUg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2hhaWt1L0No
YW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEwLTAzLTI1ICBLZW50IFRhbXVyYSAgPHRrZW50
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBGcmFtZXdvcmsgdG8gc2hvdyBmb3JtIHZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW52
YWxpZCBjb250cm9scworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzE3MTgKKworICAgICAgICBBZGQgYSBzdHViIGZvciB1cGRhdGVGb3JtVmFsaWRhdGlv
bk1lc3NhZ2UoKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1Ojp1cGRhdGVGb3JtVmFs
aWRhdGlvbk1lc3NhZ2UpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhh
aWt1Lmg6CisKIDIwMTAtMDMtMjQgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2hh
aWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmNwcCBiL1dlYktpdC9oYWlrdS9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5jcHAKaW5kZXggYTI5ZjhhMC4uNWZhMjE5
YiAxMDA2NDQKLS0tIGEvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhh
aWt1LmNwcAorKysgYi9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFp
a3UuY3BwCkBAIC0zNzUsNiArMzc1LDExIEBAIHZvaWQgQ2hyb21lQ2xpZW50SGFpa3U6OmZvcm1T
dGF0ZURpZENoYW5nZShjb25zdCBOb2RlKikKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2
b2lkIENocm9tZUNsaWVudEhhaWt1Ojp1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50PiwgY29uc3QgV2ViQ29yZTo6U3Ry
aW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiBQYXNzT3duUHRyPEhUTUxQYXJz
ZXJRdWlya3M+IENocm9tZUNsaWVudEhhaWt1OjpjcmVhdGVIVE1MUGFyc2VyUXVpcmtzKCkKIHsK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2hhaWt1L1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmggYi9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50SGFpa3UuaAppbmRleCAwMzYyYjJiLi4wZDcwOWJmIDEwMDY0NAotLS0gYS9X
ZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuaAorKysgYi9XZWJL
aXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuaApAQCAtMTQ1LDYgKzE0
NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gTm90aWZpY2F0aW9uIHRoYXQg
dGhlIGdpdmVuIGZvcm0gZWxlbWVudCBoYXMgY2hhbmdlZC4gVGhpcyBmdW5jdGlvbgogICAgICAg
ICAvLyB3aWxsIGJlIGNhbGxlZCBmcmVxdWVudGx5LCBzbyBoYW5kbGluZyBzaG91bGQgYmUgdmVy
eSBmYXN0LgogICAgICAgICB2b2lkIGZvcm1TdGF0ZURpZENoYW5nZShjb25zdCBOb2RlKik7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoUGFzc1JlZlB0
cjxXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50PiwgY29uc3QgV2ViQ29yZTo6U3RyaW5n
Jik7CiAKICAgICAgICAgUGFzc093blB0cjxIVE1MUGFyc2VyUXVpcmtzPiBjcmVhdGVIVE1MUGFy
c2VyUXVpcmtzKCk7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggMmIzY2Q1NC4uYzdhNGE2ZCAxMDA2NDQKLS0tIGEv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMCBAQAorMjAxMC0wMy0yNSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRnJhbWV3b3Jr
IHRvIHNob3cgZm9ybSB2YWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGludmFsaWQgY29udHJvbHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNzE4CisKKyAg
ICAgICAgQWRkIGEgc3R1YiBmb3IgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKCkgYW5kIGEg
aGVscGVyIGZvcgorICAgICAgICBMYXlvdXRUZXN0Q29udHJvbGxlcjo6dmlzaWJsZVZhbGlkYXRp
b25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoKS4KKworICAgICAgICAqIE1pc2MvV2ViQ29yZVN0YXRp
c3RpY3MuaDoKKyAgICAgICAgKiBNaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tOgorICAgICAgICAo
LVtXZWJGcmFtZSB2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZDpdKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW06CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6
OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSk6CisKIDIwMTAtMDMtMjQgIE1hcmsgUm93ZSAg
PG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAgICBCdWlsZCBmaXggYWZ0ZXIgcjU2NDc0LgpkaWZm
IC0tZ2l0IGEvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLmggYi9XZWJLaXQvbWFj
L01pc2MvV2ViQ29yZVN0YXRpc3RpY3MuaAppbmRleCBkMjA1MDgzLi42NjQ5NTdhIDEwMDY0NAot
LS0gYS9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MuaAorKysgYi9XZWJLaXQvbWFj
L01pc2MvV2ViQ29yZVN0YXRpc3RpY3MuaApAQCAtODcsNCArODcsNSBAQAogLSAoTlNTdHJpbmcg
Kiljb3VudGVyVmFsdWVGb3JFbGVtZW50OihET01FbGVtZW50KillbGVtZW50OwogLSAoaW50KXBh
Z2VOdW1iZXJGb3JFbGVtZW50OihET01FbGVtZW50KillbGVtZW50OihmbG9hdClwYWdlV2lkdGhJ
blBpeGVsczooZmxvYXQpcGFnZUhlaWdodEluUGl4ZWxzOwogLSAoaW50KW51bWJlck9mUGFnZXM6
KGZsb2F0KXBhZ2VXaWR0aEluUGl4ZWxzOihmbG9hdClwYWdlSGVpZ2h0SW5QaXhlbHM7CistIChO
U1N0cmluZyAqKXZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkOihOU1N0cmlu
ZyAqKWVsZW1lbnRJZDsKIEBlbmQKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvTWlzYy9XZWJDb3Jl
U3RhdGlzdGljcy5tbSBiL1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbQppbmRl
eCAxMzUxZmU1Li4yODc2OWJiIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0
YXRpc3RpY3MubW0KKysrIGIvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpbXBvcnQgIldlYkNvcmVTdGF0aXN0aWNzLmgiCiAKKyNpbXBv
cnQgIkRPTURvY3VtZW50SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTUVsZW1lbnRJbnRlcm5hbC5o
IgogI2ltcG9ydCAiV2ViQ2FjaGUuaCIKICNpbXBvcnQgIldlYkZyYW1lSW50ZXJuYWwuaCIKQEAg
LTM3LDYgKzM4LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNv
cmUvR0NDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dseXBoUGFnZVRyZWVOb2RlLmg+
CisjaW1wb3J0IDxXZWJDb3JlL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaD4KICNpbXBvcnQgPFdl
YkNvcmUvSWNvbkRhdGFiYXNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRE9NV2luZG93Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1BhZ2VDYWNoZS5oPgpAQCAtMjc1LDQgKzI3NywxNSBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKICAgICByZXR1cm4gUHJpbnRDb250ZXh0OjpudW1iZXJPZlBhZ2Vz
KF9wcml2YXRlLT5jb3JlRnJhbWUsIEZsb2F0U2l6ZShwYWdlV2lkdGhJblBpeGVscywgcGFnZUhl
aWdodEluUGl4ZWxzKSk7CiB9CiAKKy0gKE5TU3RyaW5nICopdmlzaWJsZVZhbGlkYXRpb25NZXNz
YWdlRm9yRWxlbWVudEJ5SWQ6KE5TU3RyaW5nICopZWxlbWVudElkCit7CisgICAgRE9NRWxlbWVu
dCogZWxlbWVudCA9IFtbc2VsZiBET01Eb2N1bWVudF0gZ2V0RWxlbWVudEJ5SWQ6ZWxlbWVudElk
XTsKKyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgRWxlbWVudCog
Y29yZUVsZW1lbnQgPSBjb3JlKGVsZW1lbnQpOworICAgIGlmICghY29yZUVsZW1lbnQtPmlzRm9y
bUNvbnRyb2xFbGVtZW50KCkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgSFRNTEZvcm1Db250
cm9sRWxlbWVudCogZm9ybUNvbnRyb2wgPSBzdGF0aWNfY2FzdDxIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50Kj4oY29yZUVsZW1lbnQpOworICAgIHJldHVybiAoTlNTdHJpbmcqKWZvcm1Db250cm9sLT52
aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKTsKK30KIEBlbmQKZGlmZiAtLWdpdCBhL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDI4N2U2YWYuLjQ4N2IzM2QgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMTQ3LDYgKzE0Nyw3
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBmb3JtRGlkRm9jdXMoY29uc3QgV2ViQ29y
ZTo6Tm9kZSopOwogICAgIHZpcnR1YWwgdm9pZCBmb3JtRGlkQmx1cihjb25zdCBXZWJDb3JlOjpO
b2RlKik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShQYXNz
UmVmUHRyPFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+LCBjb25zdCBXZWJDb3JlOjpT
dHJpbmcmKTsKIAogICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJDb3JlOjpIVE1MUGFyc2VyUXVp
cmtzPiBjcmVhdGVIVE1MUGFyc2VyUXVpcmtzKCkgeyByZXR1cm4gMDsgfQogCmRpZmYgLS1naXQg
YS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbSBiL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCmluZGV4IDFkN2ZiYjIuLjcwNzdj
MmMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
Lm1tCisrKyBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCkBA
IC03MTAsNiArNzEwLDExIEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpmb3JtRGlkQmx1cihjb25z
dCBXZWJDb3JlOjpOb2RlKiBub2RlKQogICAgIENhbGxVSURlbGVnYXRlKG1fd2ViVmlldywgQHNl
bGVjdG9yKHdlYlZpZXc6Zm9ybURpZEJsdXJOb2RlOiksIGtpdChjb25zdF9jYXN0PFdlYkNvcmU6
Ok5vZGUqPihub2RlKSkpOwogfQogCit2b2lkIFdlYkNocm9tZUNsaWVudDo6dXBkYXRlRm9ybVZh
bGlkYXRpb25NZXNzYWdlKFBhc3NSZWZQdHI8V2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVu
dD4sIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0
aGlzLgorfQorCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCiB2b2lkIFdlYkNo
cm9tZUNsaWVudDo6YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUqIGZyYW1lLCBHcmFwaGlj
c0xheWVyKiBncmFwaGljc0xheWVyKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0NoYW5nZUxvZyBi
L1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggMTgwYTcyOC4uMzZhOTYyMSAxMDA2NDQKLS0tIGEv
V2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTYgQEAKKzIwMTAtMDMtMjUgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyYW1ld29yayB0
byBzaG93IGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnZhbGlkIGNvbnRyb2xzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTcxOAorCisgICAg
ICAgIEFkZCBhIHN0dWIgZm9yIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSgpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2hyb21lQ2xpZW50UXQ6OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaDoKKwogMjAxMC0wMy0yNCAgSmVzdXMg
U2FuY2hlei1QYWxlbmNpYSAgPGplc3VzLnBhbGVuY2lhQG9wZW5ib3NzYS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCmRpZmYgLS1naXQgYS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwIGIvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAppbmRleCA4MzZmZDI5Li40MWQxM2E0IDEw
MDY0NAotLS0gYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCisr
KyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAKQEAgLTQ3Nyw2
ICs0NzcsMTEgQEAgdm9pZCBDaHJvbWVDbGllbnRRdDo6Y2hvb3NlSWNvbkZvckZpbGVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIFBhc3NSZWYKICAgICBjaG9vc2VyLT5pY29uTG9h
ZGVkKEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhmaWxlbmFtZXMpKTsKIH0KIAordm9pZCBDaHJv
bWVDbGllbnRRdDo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKFBhc3NSZWZQdHI8V2ViQ29y
ZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudD4sIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogYm9vbCBDaHJvbWVDbGllbnRRdDo6c2V0Q3Vyc29y
KFBsYXRmb3JtQ3Vyc29ySGFuZGxlKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1n
aXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaCBiL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oCmluZGV4IDJkYzUyMmIuLmFlMzBkYjEg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oCisr
KyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oCkBAIC0xNDQsNiAr
MTQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgY2hvb3Nl
SWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nl
cj4pOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBmb3JtU3RhdGVEaWRDaGFuZ2UoY29uc3QgTm9k
ZSopIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdl
KFBhc3NSZWZQdHI8V2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudD4sIGNvbnN0IFdlYkNv
cmU6OlN0cmluZyYpOwogCiAgICAgICAgIHZpcnR1YWwgUGFzc093blB0cjxIVE1MUGFyc2VyUXVp
cmtzPiBjcmVhdGVIVE1MUGFyc2VyUXVpcmtzKCkgeyByZXR1cm4gMDsgfQogCmRpZmYgLS1naXQg
YS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDYzODhi
OGMuLjUzNGFjNmUgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1dlYktp
dC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTAtMDMtMjUgIEtlbnQgVGFtdXJh
ICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEZyYW1ld29yayB0byBzaG93IGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdl
IGZvciBpbnZhbGlkIGNvbnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zMTcxOAorCisgICAgICAgIC0gSW1wbGVtZW50IHVwZGF0ZUZvcm1WYWxp
ZGF0aW9uTWVzc2FnZSgpLiBJdCB1c2VzIGEgYmFsbG9vbiB0b29sdGlwLgorICAgICAgICAtIEFk
ZCB2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZCgpIGZvciBMYXlvdXRUZXN0
Q29udHJvbGxlci4KKworICAgICAgICAqIEludGVyZmFjZXMvSVdlYkZyYW1lUHJpdmF0ZS5pZGw6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYkNocm9tZUNsaWVudDo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJGcmFtZS5j
cHA6CisgICAgICAgIChXZWJGcmFtZTo6dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVu
dEJ5SWQpOgorICAgICAgICAqIFdlYkZyYW1lLmg6CisgICAgICAgICogV2ViVmlldy5jcHA6Cisg
ICAgICAgIChXZWJWaWV3OjpXZWJWaWV3KToKKyAgICAgICAgKFdlYlZpZXc6On5XZWJWaWV3KToK
KyAgICAgICAgKFdlYlZpZXc6OldlYlZpZXdXbmRQcm9jKToKKyAgICAgICAgKHNldHVwQmFsbG9v
blRvb2xpbmZvKToKKyAgICAgICAgKFdlYlZpZXc6OmhpZGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2Up
OgorICAgICAgICAoV2ViVmlldzo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAg
ICAgKiBXZWJWaWV3Lmg6CisKIDIwMTAtMDMtMjQgIEpvbiBIb25leWN1dHQgIDxqaG9uZXljdXR0
QGFwcGxlLmNvbT4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzc4MDc5OD4gTWlzc2luZyBw
bHVnLWlucyBzaG91bGQgYmUgcmVwcmVzZW50ZWQgYnkgdGV4dApkaWZmIC0tZ2l0IGEvV2ViS2l0
L3dpbi9JbnRlcmZhY2VzL0lXZWJGcmFtZVByaXZhdGUuaWRsIGIvV2ViS2l0L3dpbi9JbnRlcmZh
Y2VzL0lXZWJGcmFtZVByaXZhdGUuaWRsCmluZGV4IDRlMjZjZmEuLmE4ZjU1OGMgMTAwNjQ0Ci0t
LSBhL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViRnJhbWVQcml2YXRlLmlkbAorKysgYi9XZWJL
aXQvd2luL0ludGVyZmFjZXMvSVdlYkZyYW1lUHJpdmF0ZS5pZGwKQEAgLTEwOCw0ICsxMDgsNiBA
QCBpbnRlcmZhY2UgSVdlYkZyYW1lUHJpdmF0ZSA6IElVbmtub3duCiAgICAgSFJFU1VMVCBwYWdl
TnVtYmVyRm9yRWxlbWVudEJ5SWQoW2luXSBCU1RSIGlkLCBbaW5dIGZsb2F0IHBhZ2VXaWR0aElu
UGl4ZWxzLCBbaW5dIGZsb2F0IHBhZ2VIZWlnaHRJblBpeGVscywgW291dCwgcmV0dmFsXSBpbnQq
IHBhZ2VOdW1iZXIpOwogCiAgICAgSFJFU1VMVCBudW1iZXJPZlBhZ2VzKFtpbl0gZmxvYXQgcGFn
ZVdpZHRoSW5QaXhlbHMsIFtpbl0gZmxvYXQgcGFnZUhlaWdodEluUGl4ZWxzLCBbb3V0LCByZXR2
YWxdIGludCogcGFnZU51bWJlcik7CisKKyAgICBIUkVTVUxUIHZpc2libGVWYWxpZGF0aW9uTWVz
c2FnZUZvckVsZW1lbnRCeUlkKFtpbl0gQlNUUiBpZCwgW291dCwgcmV0dmFsXSBCU1RSKiByZXN1
bHQpOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
CmluZGV4IGYyYTYyNzguLmI4MjAwMzcgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpZiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+CiAjZW5k
aWYKKyNpbmNsdWRlIDxXZWJDb3JlL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSWNvbi5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgpAQCAtNzcyLDYgKzc3MywxMSBAQCBib29s
IFdlYkNocm9tZUNsaWVudDo6c2V0Q3Vyc29yKFBsYXRmb3JtQ3Vyc29ySGFuZGxlIGN1cnNvcikK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBXZWJDaHJvbWVDbGllbnQ6OnVwZGF0ZUZvcm1W
YWxpZGF0aW9uTWVzc2FnZShQYXNzUmVmUHRyPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+IGNvbnRy
b2wsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBtX3dlYlZpZXctPnVwZGF0ZUZvcm1W
YWxpZGF0aW9uTWVzc2FnZShjb250cm9sLCBtZXNzYWdlKTsKK30KKwogdm9pZCBXZWJDaHJvbWVD
bGllbnQ6OnJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZShGcmFtZSogZnJhbWUs
IEdlb2xvY2F0aW9uKiBnZW9sb2NhdGlvbikKIHsKICAgICBDT01QdHI8SVdlYlVJRGVsZWdhdGU+
IHVpRGVsZWdhdGU7CmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aAppbmRleCA1ZGY0ZGIxLi4yMjYxYjk1IDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmgKQEAgLTM0LDYgKzM0LDEwIEBACiBjbGFzcyBXZWJWaWV3OwogY2xh
c3MgV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZTsKIAorbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgSFRNTEZvcm1Db250cm9sRWxlbWVudDsKK30KKwogaW50ZXJmYWNlIElXZWJVSURl
bGVnYXRlOwogCiBjbGFzcyBXZWJDaHJvbWVDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6Q2hyb21l
Q2xpZW50IHsKQEAgLTEzMyw2ICsxMzcsNyBAQCBwdWJsaWM6CiAgICAgV2ViVmlldyogd2ViVmll
dygpIGNvbnN0IHsgcmV0dXJuIG1fd2ViVmlldzsgfQogCiAgICAgdmlydHVhbCB2b2lkIGZvcm1T
dGF0ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpOb2RlKikgeyB9CisgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShQYXNzUmVmUHRyPFdlYkNvcmU6OkhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ+LCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKIAogICAgIHZpcnR1YWwg
UGFzc093blB0cjxXZWJDb3JlOjpIVE1MUGFyc2VyUXVpcmtzPiBjcmVhdGVIVE1MUGFyc2VyUXVp
cmtzKCkgeyByZXR1cm4gMDsgfQogCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYkZyYW1lLmNw
cCBiL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCmluZGV4IDNjZTRiZDYuLjRkMTczOWIgMTAwNjQ0
Ci0tLSBhL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1dlYktpdC93aW4vV2ViRnJhbWUu
Y3BwCkBAIC05OTksNiArOTk5LDIxIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJh
bWU6OmZldGNoQXBwbGljYXRpb25JY29uKAogICAgIHJldHVybiBTX09LOwogfQogCitIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1lOjp2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JF
bGVtZW50QnlJZChCU1RSIGlkLCBCU1RSKiByZXN1bHQpCit7CisgICAgaWYgKCFyZXN1bHQpCisg
ICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUodGhp
cyk7CisgICAgaWYgKCFjb3JlRnJhbWUpCisgICAgICAgIHJldHVybiBFX0ZBSUw7CisgICAgRWxl
bWVudCogZWxlbWVudCA9IGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQoU3Ry
aW5nKGlkLCBTeXNTdHJpbmdMZW4oaWQpKSk7CisgICAgaWYgKCFlbGVtZW50IHx8ICFlbGVtZW50
LT5pc0Zvcm1Db250cm9sRWxlbWVudCgpKQorICAgICAgICByZXR1cm4gRV9GQUlMOworICAgIEhU
TUxGb3JtQ29udHJvbEVsZW1lbnQqIGZvcm1Db250cm9sID0gc3RhdGljX2Nhc3Q8SFRNTEZvcm1D
b250cm9sRWxlbWVudCo+KGVsZW1lbnQpOworICAgICpyZXN1bHQgPSBCU3RyaW5nKGZvcm1Db250
cm9sLT52aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKSkucmVsZWFzZSgpOworICAgIHJldHVybiBT
X09LOworfQorCiAvLyBJV2ViRG9jdW1lbnRUZXh0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViRnJhbWU6OnN1cHBvcnRzVGV4dEVuY29kaW5nKCAKZGlmZiAtLWdpdCBhL1dlYktp
dC93aW4vV2ViRnJhbWUuaCBiL1dlYktpdC93aW4vV2ViRnJhbWUuaAppbmRleCBmNDk3M2VhLi41
NmRhZjBlIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYkZyYW1lLmgKKysrIGIvV2ViS2l0L3dp
bi9XZWJGcmFtZS5oCkBAIC0yNjQsNiArMjY0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSlNH
bG9iYWxDb250ZXh0UmVmIFNURE1FVEhPRENBTExUWVBFIGdsb2JhbENvbnRleHRGb3JTY3JpcHRX
b3JsZChJV2ViU2NyaXB0V29ybGQqKTsKIAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSB2aXNpYmxlQ29udGVudFJlY3QoUkVDVCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSB2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZChC
U1RSIGlkLCBCU1RSKiByZXN1bHQpOwogCiAgICAgLy8gSVdlYkRvY3VtZW50VGV4dAogICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzdXBwb3J0c1RleHRFbmNvZGluZyggCmRp
ZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwIGIvV2ViS2l0L3dpbi9XZWJWaWV3LmNw
cAppbmRleCBlYjg3ZTZhLi44YTkyNDZjIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYlZpZXcu
Y3BwCisrKyBiL1dlYktpdC93aW4vV2ViVmlldy5jcHAKQEAgLTg5LDYgKzg5LDcgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL0ZyYW1lV2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HRElPYmplY3RDb3Vu
dGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxN
ZWRpYUVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvSGlzdG9yeUl0ZW0uaD4KQEAgLTMyOCw2ICszMjksNyBAQCBXZWJWaWV3OjpXZWJW
aWV3KCkKICAgICAsIG1fZGlkQ2xvc2UoZmFsc2UpCiAgICAgLCBtX2luSU1FQ29tcG9zaXRpb24o
MCkKICAgICAsIG1fdG9vbFRpcEh3bmQoMCkKKyAgICAsIG1fYmFsbG9vbkh3bmQoMCkKICAgICAs
IG1fY2xvc2VXaW5kb3dUaW1lcih0aGlzLCAmV2ViVmlldzo6Y2xvc2VXaW5kb3dUaW1lckZpcmVk
KQogICAgICwgbV90b3BMZXZlbFBhcmVudCgwKQogICAgICwgbV9kZWxldGVCYWNraW5nU3RvcmVU
aW1lckFjdGl2ZShmYWxzZSkKQEAgLTM2NSw5ICszNjcsMTEgQEAgV2ViVmlldzo6fldlYlZpZXco
KQogewogICAgIGRlbGV0ZUJhY2tpbmdTdG9yZSgpOwogCi0gICAgLy8gdGhlIHRvb2x0aXAgd2lu
ZG93IG5lZWRzIHRvIGJlIGV4cGxpY2l0bHkgZGVzdHJveWVkIHNpbmNlIGl0IGlzbid0IGEgV1Nf
Q0hJTEQKKyAgICAvLyBUaGUgdG9vbHRpcCB3aW5kb3dzIG5lZWQgdG8gYmUgZXhwbGljaXRseSBk
ZXN0cm95ZWQgc2luY2UgdGhleSBhcmVuJ3QgV1NfQ0hJTEQuCiAgICAgaWYgKDo6SXNXaW5kb3co
bV90b29sVGlwSHduZCkpCiAgICAgICAgIDo6RGVzdHJveVdpbmRvdyhtX3Rvb2xUaXBId25kKTsK
KyAgICBpZiAoOjpJc1dpbmRvdyhtX2JhbGxvb25Id25kKSkKKyAgICAgICAgOjpEZXN0cm95V2lu
ZG93KG1fYmFsbG9vbkh3bmQpOwogCiAgICAgQVNTRVJUKCFtX3BhZ2UpOwogICAgIEFTU0VSVCgh
bV9wcmVmZXJlbmNlcyk7CkBAIC0yMTA4LDYgKzIxMTIsNyBAQCBMUkVTVUxUIENBTExCQUNLIFdl
YlZpZXc6OldlYlZpZXdXbmRQcm9jKEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1Bh
cmFtLAogICAgICAgICAgICAgLy8gSWYgd2UgYXJlIHBhbi1zY3JvbGxpbmcgd2hlbiB3ZSBsb3Nl
IGZvY3VzLCBzdG9wIHRoZSBwYW4gc2Nyb2xsaW5nLgogICAgICAgICAgICAgZnJhbWUtPmV2ZW50
SGFuZGxlcigpLT5zdG9wQXV0b3Njcm9sbFRpbWVyKCk7CiAKKyAgICAgICAgICAgIHdlYlZpZXct
PmhpZGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgV01fV0lORE9XUE9TQ0hBTkdFRDoKQEAgLTI2NDgsNiArMjY1Myw4
NyBAQCB2b2lkIFdlYlZpZXc6OnNldFRvb2xUaXAoY29uc3QgU3RyaW5nJiB0b29sVGlwKQogICAg
IDo6U2VuZE1lc3NhZ2UobV90b29sVGlwSHduZCwgVFRNX0FDVElWQVRFLCAhbV90b29sVGlwLmlz
RW1wdHkoKSwgMCk7CiB9CiAKK3N0YXRpYyB2b2lkIHNldHVwQmFsbG9vblRvb2xpbmZvKFRPT0xJ
TkZPJiBpbmZvLCBIV05EIHdlYlZpZXcsIFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBpbmZvLmNi
U2l6ZSA9IHNpemVvZihUT09MSU5GTyk7CisgICAgLy8gV2UgdXNlIFRURl9UUkFDSyBpbiBvcmRl
ciB0byBjb250cm9sIHRoZSB0aW1pbmcgb2Ygc2hvd2luZy9oaWRpbmcgYSBiYWxsb29uIHRvb2x0
aXAuCisgICAgaW5mby51RmxhZ3MgPSBUVEZfVFJBQ0sgfCBUVEZfQUJTT0xVVEUgfCBUVEZfSURJ
U0hXTkQ7CisgICAgaW5mby5od25kID0gd2ViVmlldzsKKyAgICBpbmZvLmhpbnN0ID0gZ0luc3Rh
bmNlOworICAgIGluZm8udUlkID0gcmVpbnRlcnByZXRfY2FzdDxVSU5UX1BUUj4od2ViVmlldyk7
CisgICAgaW5mby5scHN6VGV4dCA9IGNvbnN0X2Nhc3Q8VUNoYXIqPihtZXNzYWdlLmNoYXJhY3Rl
cnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkpOworICAgIEdldENsaWVudFJlY3Qod2ViVmlldywgJmlu
Zm8ucmVjdCk7Cit9CisKK3ZvaWQgV2ViVmlldzo6aGlkZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSgp
Cit7CisgICAgaWYgKCFtX2JhbGxvb25Id25kKQorICAgICAgICByZXR1cm47CisgICAgbV9iYWxs
b29uTWVzc2FnZSA9IFN0cmluZygpOworICAgIFRPT0xJTkZPIGluZm8gPSB7MH07CisgICAgc2V0
dXBCYWxsb29uVG9vbGluZm8oaW5mbywgbV92aWV3V2luZG93LCBtX2JhbGxvb25NZXNzYWdlKTsK
KyAgICA6OlNlbmRNZXNzYWdlKG1fYmFsbG9vbkh3bmQsIFRUTV9UUkFDS0FDVElWQVRFLCBGQUxT
RSwgcmVpbnRlcnByZXRfY2FzdDxMUEFSQU0+KCZpbmZvKSk7Cit9CisKK3ZvaWQgV2ViVmlldzo6
dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKFBhc3NSZWZQdHI8SFRNTEZvcm1Db250cm9sRWxl
bWVudD4gY29udHJvbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIGlmICghbV9iYWxs
b29uSHduZCkgeworICAgICAgICBtX2JhbGxvb25Id25kID0gOjpDcmVhdGVXaW5kb3dFeCgKKyAg
ICAgICAgICAgIFdTX0VYX1RPUE1PU1QsIFRPT0xUSVBTX0NMQVNTLCAwLAorICAgICAgICAgICAg
V1NfUE9QVVAgfCBUVFNfQUxXQVlTVElQIHwgVFRTX0JBTExPT04gfCBUVFNfTk9QUkVGSVgsCisg
ICAgICAgICAgICBDV19VU0VERUZBVUxULCBDV19VU0VERUZBVUxULCBDV19VU0VERUZBVUxULCBD
V19VU0VERUZBVUxULAorICAgICAgICAgICAgbV92aWV3V2luZG93LCAwLCBnSW5zdGFuY2UsIDAp
OworICAgICAgICBpZiAoIW1fYmFsbG9vbkh3bmQpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIFRPT0xJTkZPIGluZm8gPSB7MH07CisgICAgICAgIHNldHVwQmFsbG9vblRvb2xpbmZvKGlu
Zm8sIG1fdmlld1dpbmRvdywgbV9iYWxsb29uTWVzc2FnZSk7CisgICAgICAgIDo6U2VuZE1lc3Nh
Z2UobV9iYWxsb29uSHduZCwgVFRNX0FERFRPT0wsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8TFBBUkFN
PigmaW5mbykpOworICAgICAgICA6OlNlbmRNZXNzYWdlKG1fYmFsbG9vbkh3bmQsIFRUTV9TRVRN
QVhUSVBXSURUSCwgMCwgbWF4VG9vbFRpcFdpZHRoKTsKKworICAgICAgICA6OlNldFdpbmRvd1Bv
cyhtX2JhbGxvb25Id25kLCBIV05EX1RPUCwgMCwgMCwgMCwgMCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgU1dQX05PTU9WRSB8IFNXUF9OT1NJWkUgfCBTV1BfTk9BQ1RJVkFURSk7CisgICAgfQor
CisgICAgaWYgKG1lc3NhZ2UuaXNFbXB0eSgpKSB7CisgICAgICAgIGhpZGVGb3JtVmFsaWRhdGlv
bk1lc3NhZ2UoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFVwZGF0ZSB0aGUg
bWVzc2FnZS4KKyAgICBib29sIHdhc0FjdGl2ZSA9ICFtX2JhbGxvb25NZXNzYWdlLmlzRW1wdHko
KTsKKyAgICAvLyBJcyBpdCBvayB0byBjYWxsIFRUTV9VUERBVEVUSVBURVhUID8KKyAgICBpZiAo
bV9iYWxsb29uTWVzc2FnZSAhPSBtZXNzYWdlKSB7CisgICAgICAgIG1fYmFsbG9vbk1lc3NhZ2Ug
PSBtZXNzYWdlOworICAgICAgICBUT09MSU5GTyBpbmZvID0gezB9OworICAgICAgICBzZXR1cEJh
bGxvb25Ub29saW5mbyhpbmZvLCBtX3ZpZXdXaW5kb3csIG1fYmFsbG9vbk1lc3NhZ2UpOworICAg
ICAgICA6OlNlbmRNZXNzYWdlKG1fYmFsbG9vbkh3bmQsIFRUTV9VUERBVEVUSVBURVhULCAwLCBy
ZWludGVycHJldF9jYXN0PExQQVJBTT4oJmluZm8pKTsKKyAgICB9CisKKyAgICAvLyBGaXggdGhl
IGxvY2F0aW9uLgorICAgIFZlY3RvcjxGbG9hdFBvaW50PiBjb3JuZXJzID0gY29udHJvbC0+Z2V0
VHJhbnNmb3JtZWRDb3JuZXJzKCk7CisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBjb250cm9s
LT5kb2N1bWVudCgpLT52aWV3KCk7CisgICAgaWYgKGNvcm5lcnMuc2l6ZSgpICE9IDQgfHwgIWZy
YW1lVmlldykKKyAgICAgICAgcmV0dXJuOworICAgIEZsb2F0UG9pbnQgYm90dG9tID0gY29ybmVy
c1tDb250YWluZXJOb2RlOjpCb3R0b21MZWZ0Q29ybmVyXTsKKyAgICBpZiAoYm90dG9tLnkoKSA8
IGNvcm5lcnNbQ29udGFpbmVyTm9kZTo6Qm90dG9tUmlnaHRDb3JuZXJdLnkoKSkKKyAgICAgICAg
Ym90dG9tID0gY29ybmVyc1tDb250YWluZXJOb2RlOjpCb3R0b21SaWdodENvcm5lcl07CisgICAg
aWYgKGJvdHRvbS55KCkgPCBjb3JuZXJzW0NvbnRhaW5lck5vZGU6OlRvcExlZnRDb3JuZXJdLnko
KSkKKyAgICAgICAgYm90dG9tID0gY29ybmVyc1tDb250YWluZXJOb2RlOjpUb3BMZWZ0Q29ybmVy
XTsKKyAgICBpZiAoYm90dG9tLnkoKSA8IGNvcm5lcnNbQ29udGFpbmVyTm9kZTo6VG9wUmlnaHRD
b3JuZXJdLnkoKSkKKyAgICAgICAgYm90dG9tID0gY29ybmVyc1tDb250YWluZXJOb2RlOjpUb3BS
aWdodENvcm5lcl07CisgICAgSW50UG9pbnQgYm90dG9tSW5TY3JlZW4gPSBmcmFtZVZpZXctPmNv
bnRlbnRzVG9TY3JlZW4oCisgICAgICAgIEludFJlY3Qocm91bmRlZEludFBvaW50KGJvdHRvbSks
IEludFNpemUoMSwgMSkpKS5sb2NhdGlvbigpOworICAgIDo6U2VuZE1lc3NhZ2UobV9iYWxsb29u
SHduZCwgVFRNX1RSQUNLUE9TSVRJT04sIDAsCisgICAgICAgICAgICAgICAgICBNQUtFTFBBUkFN
KGJvdHRvbUluU2NyZWVuLngoKSwgYm90dG9tSW5TY3JlZW4ueSgpKSk7CisKKyAgICAvLyBTaG93
IHRoZSBiYWxsb29uIHRvb2x0aXAuCisgICAgaWYgKHdhc0FjdGl2ZSkKKyAgICAgICAgcmV0dXJu
OworICAgIFRPT0xJTkZPIGluZm8gPSB7MH07CisgICAgc2V0dXBCYWxsb29uVG9vbGluZm8oaW5m
bywgbV92aWV3V2luZG93LCBtX2JhbGxvb25NZXNzYWdlKTsKKyAgICA6OlNlbmRNZXNzYWdlKG1f
YmFsbG9vbkh3bmQsIFRUTV9UUkFDS0FDVElWQVRFLCBUUlVFLCByZWludGVycHJldF9jYXN0PExQ
QVJBTT4oJmluZm8pKTsKK30KKwogSFJFU1VMVCBXZWJWaWV3Ojpub3RpZnlEaWRBZGRJY29uKElX
ZWJOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKIHsKICAgICBDT01QdHI8SVByb3BlcnR5QmFn
PiBwcm9wZXJ0eUJhZzsKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViVmlldy5oIGIvV2ViS2l0
L3dpbi9XZWJWaWV3LmgKaW5kZXggYTk5ZGYzYS4uNTIxYTQ1ZiAxMDA2NDQKLS0tIGEvV2ViS2l0
L3dpbi9XZWJWaWV3LmgKKysrIGIvV2ViS2l0L3dpbi9XZWJWaWV3LmgKQEAgLTM4LDYgKzM4LDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL1dLQ0FDRkxheWVyUmVuZGVyZXIuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAKIGNsYXNzIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI7CiBjbGFzcyBXZWJCYWNr
Rm9yd2FyZExpc3Q7CkBAIC01MCw2ICs1MSwxMCBAQCBXZWJDb3JlOjpQYWdlKiBjb3JlKElXZWJW
aWV3Kik7CiAKIGludGVyZmFjZSBJRHJvcFRhcmdldEhlbHBlcjsKIAorbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgSFRNTEZvcm1Db250cm9sRWxlbWVudDsKK30KKwogY2xhc3MgV2ViVmlldyAK
ICAgICA6IHB1YmxpYyBJV2ViVmlldwogICAgICwgcHVibGljIElXZWJWaWV3UHJpdmF0ZQpAQCAt
ODQ5LDYgKzg1NCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzUGFpbnRpbmcoKSBjb25zdCB7IHJl
dHVybiBtX3BhaW50Q291bnQgPiAwOyB9CiAKICAgICB2b2lkIHNldFRvb2xUaXAoY29uc3QgV2Vi
Q29yZTo6U3RyaW5nJik7CisgICAgdm9pZCB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoUGFz
c1JlZlB0cjxXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50PiwgY29uc3QgV2ViQ29yZTo6
U3RyaW5nJik7CiAKICAgICB2b2lkIHJlZ2lzdGVyRm9ySWNvbk5vdGlmaWNhdGlvbihib29sIGxp
c3Rlbik7CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uRnJvbVdlYkZyYW1lKFdlYkZy
YW1lKik7CkBAIC04OTIsNiArODk4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGNhblJlc2V0Wm9v
bShib29sIGlzVGV4dE9ubHkpOwogICAgIEhSRVNVTFQgcmVzZXRab29tKGJvb2wgaXNUZXh0T25s
eSk7CiAgICAgYm9vbCBhY3RpdmUoKTsKKyAgICB2b2lkIGhpZGVGb3JtVmFsaWRhdGlvbk1lc3Nh
Z2UoKTsKIAogICAgIGVudW0gV2luZG93c1RvUGFpbnQgeyBQYWludFdlYlZpZXdPbmx5LCBQYWlu
dFdlYlZpZXdBbmRDaGlsZHJlbiB9OwogICAgIHZvaWQgcGFpbnRJbnRvQmFja2luZ1N0b3JlKFdl
YkNvcmU6OkZyYW1lVmlldyosIEhEQyBiaXRtYXBEQywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
ZGlydHlSZWN0LCBXaW5kb3dzVG9QYWludCk7CkBAIC05ODEsNiArOTg4LDggQEAgcHJvdGVjdGVk
OgogICAgIHVuc2lnbmVkIG1faW5JTUVDb21wb3NpdGlvbjsKICAgICBIV05EIG1fdG9vbFRpcEh3
bmQ7CiAgICAgV2ViQ29yZTo6U3RyaW5nIG1fdG9vbFRpcDsKKyAgICBIV05EIG1fYmFsbG9vbkh3
bmQ7CisgICAgV2ViQ29yZTo6U3RyaW5nIG1fYmFsbG9vbk1lc3NhZ2U7CiAgICAgYm9vbCBtX2Rl
bGV0ZUJhY2tpbmdTdG9yZVRpbWVyQWN0aXZlOwogCiAgICAgYm9vbCBtX3RyYW5zcGFyZW50Owpk
aWZmIC0tZ2l0IGEvV2ViS2l0L3d4L0NoYW5nZUxvZyBiL1dlYktpdC93eC9DaGFuZ2VMb2cKaW5k
ZXggYjVmNGM2NC4uZGE0MWE5MCAxMDA2NDQKLS0tIGEvV2ViS2l0L3d4L0NoYW5nZUxvZworKysg
Yi9XZWJLaXQvd3gvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDMtMjUgIEtlbnQg
VGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEZyYW1ld29yayB0byBzaG93IGZvcm0gdmFsaWRhdGlvbiBt
ZXNzYWdlIGZvciBpbnZhbGlkIGNvbnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zMTcxOAorCisgICAgICAgIEFkZCBhIHN0dWIgZm9yIHVwZGF0
ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSgpLgorCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJv
bWVDbGllbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6dXBkYXRl
Rm9ybVZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNs
aWVudFd4Lmg6CisKIDIwMTAtMDMtMjQgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0
L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwIGIvV2ViS2l0L3d4L1dlYktpdFN1
cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwCmluZGV4IDBkOWFiOWIuLjA4M2ZjMmMgMTAwNjQ0Ci0t
LSBhL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcAorKysgYi9XZWJL
aXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHAKQEAgLTQ0Nyw2ICs0NDcsMTEg
QEAgdm9pZCBDaHJvbWVDbGllbnRXeDo6Y2hvb3NlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBmaWxlbmFtZXMsIFBhc3NSZWYKICAgICBjaG9vc2VyLT5pY29uTG9hZGVkKEljb246
OmNyZWF0ZUljb25Gb3JGaWxlcyhmaWxlbmFtZXMpKTsKIH0KIAordm9pZCBDaHJvbWVDbGllbnRX
eDo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKFBhc3NSZWZQdHI8V2ViQ29yZTo6SFRNTEZv
cm1Db250cm9sRWxlbWVudD4sIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwogYm9vbCBDaHJvbWVDbGllbnRXeDo6c2V0Q3Vyc29yKFBsYXRmb3Jt
Q3Vyc29ySGFuZGxlKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9XZWJL
aXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5oIGIvV2ViS2l0L3d4L1dlYktpdFN1
cHBvcnQvQ2hyb21lQ2xpZW50V3guaAppbmRleCA5MDczNGUyLi41OGI0YzQzIDEwMDY0NAotLS0g
YS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5oCisrKyBiL1dlYktpdC93
eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmgKQEAgLTEzMSw2ICsxMzEsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGNob29zZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYsIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KTsKIAogICAgIHZpcnR1YWwgdm9pZCBmb3Jt
U3RhdGVEaWRDaGFuZ2UoY29uc3QgTm9kZSopIHsgfQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVG
b3JtVmFsaWRhdGlvbk1lc3NhZ2UoUGFzc1JlZlB0cjxXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xF
bGVtZW50PiwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7CiAKICAgICB2aXJ0dWFsIFBhc3NPd25Q
dHI8SFRNTFBhcnNlclF1aXJrcz4gY3JlYXRlSFRNTFBhcnNlclF1aXJrcygpIHsgcmV0dXJuIDA7
IH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDU0MjMxZTUuLmU4OWY5MDIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0No
YW5nZUxvZworKysgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAx
MC0wMy0yNSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRnJhbWV3b3JrIHRvIHNob3cgZm9y
bSB2YWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGludmFsaWQgY29udHJvbHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNzE4CisKKyAgICAgICAgQWRkIExh
eW91dFRlc3RDb250cm9sbGVyOjp2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJ
ZCgpLgorICAgICAgICBXaW5kb3dzIGFuZCBNYWMgaGF2ZSB3b3JrYWJsZSBpbXBsZW1lbnRhdGlv
bnMuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6
CisgICAgICAgICh2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZENhbGxiYWNr
KToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAg
KExheW91dFRlc3RDb250cm9sbGVyOjp2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50
QnlJZCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVy
TWFjLm1tOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnZpc2libGVWYWxpZGF0aW9u
TWVzc2FnZUZvckVsZW1lbnRCeUlkKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlv
dXRUZXN0Q29udHJvbGxlclF0LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjp2
aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZCk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcDoKKyAgICAgICAgKExheW91
dFRlc3RDb250cm9sbGVyOjp2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZCk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHA6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdl
Rm9yRWxlbWVudEJ5SWQpOgorCiAyMDEwLTAzLTI1ICBab2x0YW4gSG9ydmF0aCAgPHpvbHRhbkB3
ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0
IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4
IGE5ZWJlODEuLjc1OWYyZDkgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTkzOCw2ICs5MzgsMjAgQEAgc3RhdGljIEpT
VmFsdWVSZWYgc2V0RnJhbWVTZXRGbGF0dGVuaW5nRW5hYmxlZENhbGxiYWNrKEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU08KICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7
CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1l
bnRCeUlkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9u
LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNW
YWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmIChh
cmd1bWVudENvdW50IDwgMSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNv
bnRleHQpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBlbGVtZW50SWQoQWRvcHQsIEpT
VmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsKKyAg
ICBBU1NFUlQoISpleGNlcHRpb24pOworCisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRy
b2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJp
dmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IG1lc3NhZ2Uo
Y29udHJvbGxlci0+dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoZWxlbWVu
dElkLmdldCgpKSk7CisgICAgaWYgKCFtZXNzYWdlLmdldCgpKQorICAgICAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlU3RyaW5n
KGNvbnRleHQsIG1lc3NhZ2UuZ2V0KCkpOworfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRBbGxv
d1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMc0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFy
Z3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4
Y2VwdGlvbikKIHsKICAgICAvLyBIYXMgbWFjICYgd2luZG93cyBpbXBsZW1lbnRhdGlvbgpAQCAt
MTQ4OSw2ICsxNTAzLDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgICAgIHsgInNob3dXZWJJbnNwZWN0b3IiLCBzaG93V2Vi
SW5zcGVjdG9yQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAidGVzdE9uc2NyZWVuIiwgdGVz
dE9uc2NyZWVuQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAidGVzdFJlcGFpbnQiLCB0ZXN0
UmVwYWludENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgInZpc2libGVWYWxpZGF0aW9uTWVz
c2FnZUZvckVsZW1lbnRCeUlkIiwgdmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5
SWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJ3YWl0Rm9yUG9saWN5RGVsZWdhdGUiLCB3
YWl0Rm9yUG9saWN5RGVsZWdhdGVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJ3YWl0VW50
aWxEb25lIiwgd2FpdFVudGlsRG9uZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgIndpbmRv
d0NvdW50Iiwgd2luZG93Q291bnRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggNzJlMTBkMi4uNDcz
MmU2NSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5oCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFhTU0F1ZGl0
b3JFbmFibGVkKGJvb2wgZmxhZyk7CiAgICAgdm9pZCBzZXRGcmFtZVNldEZsYXR0ZW5pbmdFbmFi
bGVkKGJvb2wgZW5hYmxlKTsKICAgICB2b2lkIHNldFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChi
b29sIGVuYWJsZSk7Ci0KKyAgICBKU1N0cmluZ1JlZiB2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VG
b3JFbGVtZW50QnlJZChKU1N0cmluZ1JlZiBpZCk7CiAgICAgdm9pZCB3YWl0Rm9yUG9saWN5RGVs
ZWdhdGUoKTsKICAgICBzaXplX3Qgd2ViSGlzdG9yeUl0ZW1Db3VudCgpOwogICAgIHVuc2lnbmVk
IHdvcmtlclRocmVhZENvdW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwIGIvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAppbmRleCA0YWE1
YTUzLi4wYWJkMTAwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsv
TGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKQEAgLTYyNiwzICs2MjYsOSBAQCB2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphcGlUZXN0R29Ub0N1cnJlbnRCYWNrRm9yd2FyZEl0
ZW0oKQogewogCiB9CisKK0pTU3RyaW5nUmVmIExheW91dFRlc3RDb250cm9sbGVyOjp2aXNpYmxl
VmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZChKU1N0cmluZ1JlZiBpZCkKK3sKKyAgICAv
LyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0g
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMu
bW0KaW5kZXggYzRkYWNlNi4uZjhmODIxNCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCisrKyBiL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQpAQCAtNjk3LDMg
KzY5Nyw5IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFwaVRlc3RHb1RvQ3VycmVudEJh
Y2tGb3J3YXJkSXRlbSgpCiAgICAgV2ViVmlldyAqdmlldyA9IFttYWluRnJhbWUgd2ViVmlld107
CiAgICAgW3ZpZXcgZ29Ub0JhY2tGb3J3YXJkSXRlbTpbW3ZpZXcgYmFja0ZvcndhcmRMaXN0XSBj
dXJyZW50SXRlbV1dOwogfQorCitKU1N0cmluZ1JlZiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6dmlz
aWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWQpCit7Cisg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBpZENGKEFkb3B0Q0YsIEpTU3RyaW5nQ29weUNGU3Ry
aW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGlkKSk7CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRl
V2l0aENGU3RyaW5nKChDRlN0cmluZ1JlZilbbWFpbkZyYW1lIHZpc2libGVWYWxpZGF0aW9uTWVz
c2FnZUZvckVsZW1lbnRCeUlkOihOU1N0cmluZyopaWRDRi5nZXQoKV0pOworfQpkaWZmIC0tZ2l0
IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5j
cHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0
LmNwcAppbmRleCBjYzQxMjZjLi41NDM3NDJmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAorKysgYi9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcApAQCAtNTI0LDUg
KzUyNCwxMSBAQCBpbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om51bWJlck9mUGFnZXMoZmxvYXQg
d2lkdGgsIGZsb2F0IGhlaWdodCkKICAgICByZXR1cm4gcXRfZHJ0X251bWJlck9mUGFnZXMobV9k
cnQtPndlYlBhZ2UoKS0+bWFpbkZyYW1lKCksIHdpZHRoLCBoZWlnaHQpOwogfQogCitKU1N0cmlu
Z1JlZiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxl
bWVudEJ5SWQoSlNTdHJpbmdSZWYgaWQpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlz
LgorICAgIHJldHVybiAwOworfQorCiBjb25zdCB1bnNpZ25lZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6bWF4Vmlld1dpZHRoID0gODAwOwogY29uc3QgdW5zaWduZWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6Om1heFZpZXdIZWlnaHQgPSA2MDA7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwIGIvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAppbmRleCBkYmI4YmZm
Li42Mjc2YzY3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5
b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKQEAgLTExOTIsMyArMTE5MiwxNiBAQCB2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphcGlUZXN0R29Ub0N1cnJlbnRCYWNrRm9yd2FyZEl0
ZW0oKQogICAgIEJPT0wgc3VjY2VzczsKICAgICB3ZWJWaWV3LT5nb1RvQmFja0ZvcndhcmRJdGVt
KGl0ZW0uZ2V0KCksICZzdWNjZXNzKTsKIH0KKworSlNTdHJpbmdSZWYgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKEpTU3RyaW5nUmVm
IGlkKQoreworICAgIENPTVB0cjxJV2ViRnJhbWVQcml2YXRlPiBmcmFtZVByaXZhdGUoUXVlcnks
IGZyYW1lKTsKKyAgICBpZiAoIWZyYW1lUHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
QlNUUiBtZXNzYWdlQlNUUjsKKyAgICBpZiAoRkFJTEVEKGZyYW1lUHJpdmF0ZS0+dmlzaWJsZVZh
bGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoYnN0clQoaWQpLkdldEJTVFIoKSwgJm1lc3Nh
Z2VCU1RSKSkpCisgICAgICAgIHJldHVybiAwOworICAgIEpTU3RyaW5nUmVmIG1lc3NhZ2VKUyA9
IEpTU3RyaW5nQ3JlYXRlV2l0aEJTVFIobWVzc2FnZUJTVFIpOworICAgIFN5c0ZyZWVTdHJpbmco
bWVzc2FnZUJTVFIpOworICAgIHJldHVybiBtZXNzYWdlSlM7Cit9CmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcCBiL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCmlu
ZGV4IDRhZDkzYmUuLmRhM2I0NjcgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCkBAIC0zOTYsMyArMzk2LDkg
QEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVk
KGJvb2wpCiB7CiAKIH0KKworSlNTdHJpbmdSZWYgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnZpc2li
bGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGlkKQoreworICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KKyAgICByZXR1cm4gMDsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52284</attachid>
            <date>2010-04-01 04:50:56 -0700</date>
            <delta_ts>2010-04-01 09:07:48 -0700</delta_ts>
            <desc>Proposed patch (rev.3)</desc>
            <filename>bug-31718-20100401205054.patch</filename>
            <type>text/plain</type>
            <size>53903</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyYjFkMjA3Li41N2UwZmMyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDQt
MDEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyYW1ld29yayB0byBzaG93IGZvcm0gdmFs
aWRhdGlvbiBtZXNzYWdlIGZvciBpbnZhbGlkIGNvbnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTcxOAorCisgICAgICAgIEFkZCBhIHRlc3Qg
dG8gY2hlY2sgYSB2aXNpYmxlIHZhbGlkYXRpb24gbWVzc2FnZS4KKyAgICAgICAgVGhlIG1lc3Nh
Z2Ugc2hvdWxkIGJlIGF2YWlsYWJsZSBvbmx5IHdoZW4gdGhlIGNvbnRyb2wgaGFzIGZvY3VzLgor
CisgICAgICAgICogZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvdmlzaWJsZS12YWxpZGF0aW9uLW1l
c3NhZ2UuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvdmlzaWJsZS12YWxpZGF0aW9u
LW1lc3NhZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3Zpc2li
bGUtdmFsaWRhdGlvbi1tZXNzYWdlLmh0bWw6IEFkZGVkLgorCiAyMDEwLTA0LTAxICBOaWtvbGFz
IFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERpcmsgU2NodWx6ZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0
LXRlc3RzL3Zpc2libGUtdmFsaWRhdGlvbi1tZXNzYWdlLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9zY3JpcHQtdGVzdHMvdmlzaWJsZS12YWxpZGF0aW9uLW1lc3NhZ2UuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTVjOWNkOQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL3Zpc2libGUtdmFsaWRhdGlvbi1tZXNz
YWdlLmpzCkBAIC0wLDAgKzEsMTkgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0IGZvciB2YWxpZGF0aW9u
IG1lc3NhZ2UgcmVxdWVzdHMgZnJvbSBhbiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50LicpOworCit2
YXIgcGFyZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Citkb2N1bWVudC5ib2R5
LmFwcGVuZENoaWxkKHBhcmVudCk7CitwYXJlbnQuaW5uZXJIVE1MPSAnPGZvcm0+JworICAgICsg
JzxpbnB1dCBpZD1pMSBuYW1lPWkxIHJlcXVpcmVkPicKKyAgICArICc8L2Zvcm0+JzsKKwordmFy
IGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2kxJyk7CitkZWJ1ZygnSW52YWxpZCBh
bmQgbm8gZm9jdXMnKTsKK3Nob3VsZEJlRmFsc2UoJ2lucHV0LnZhbGlkaXR5LnZhbGlkJyk7Citz
aG91bGRCZVRydWUoJ2lucHV0LnZhbGlkYXRpb25NZXNzYWdlLmxlbmd0aCA+IDAnKTsKK3Nob3Vs
ZEJlKCdsYXlvdXRUZXN0Q29udHJvbGxlci52aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVt
ZW50QnlJZCgiaTEiKScsICciIicpOworCitkZWJ1ZygnSW52YWxpZCBhbmQgZm9jdXNlZCcpOwor
aW5wdXQuZm9jdXMoKTsKK3Nob3VsZEJlKCdsYXlvdXRUZXN0Q29udHJvbGxlci52aXNpYmxlVmFs
aWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZCgiaTEiKScsICdpbnB1dC52YWxpZGF0aW9uTWVz
c2FnZScpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvdmlzaWJsZS12YWxpZGF0aW9uLW1lc3NhZ2UtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy92aXNpYmxlLXZhbGlkYXRpb24tbWVzc2FnZS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTUxODAxOQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdmlzaWJsZS12YWxpZGF0
aW9uLW1lc3NhZ2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1Rlc3QgZm9yIHZhbGlk
YXRpb24gbWVzc2FnZSByZXF1ZXN0cyBmcm9tIGFuIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitJbnZhbGlkIGFuZCBubyBmb2N1cworUEFT
UyBpbnB1dC52YWxpZGl0eS52YWxpZCBpcyBmYWxzZQorUEFTUyBpbnB1dC52YWxpZGF0aW9uTWVz
c2FnZS5sZW5ndGggPiAwIGlzIHRydWUKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIudmlzaWJs
ZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoImkxIikgaXMgIiIKK0ludmFsaWQgYW5k
IGZvY3VzZWQKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIudmlzaWJsZVZhbGlkYXRpb25NZXNz
YWdlRm9yRWxlbWVudEJ5SWQoImkxIikgaXMgaW5wdXQudmFsaWRhdGlvbk1lc3NhZ2UKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Zpc2libGUtdmFsaWRhdGlvbi1tZXNzYWdlLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Zpc2libGUtdmFsaWRhdGlvbi1tZXNzYWdlLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGI5MjgyNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdmlzaWJsZS12YWxpZGF0aW9uLW1lc3NhZ2Uu
aHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RU
RCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy92aXNpYmxlLXZhbGlkYXRpb24tbWVz
c2FnZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTFmMWNjYy4uMWFk
ZGEyMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw0NyBAQAorMjAxMC0wNC0wMSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgRnJhbWV3b3JrIHRvIHNob3cgZm9ybSB2YWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGludmFsaWQg
Y29udHJvbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMxNzE4CisKKyAgICAgICAgQW4gSFRNTEZvcm1Db250cm9sRWxlbWVudCBjYWxscyBDaHJvbWU6
OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSgpCisgICAgICAgIHdoZW4gaXQgZ2V0cyBmb2N1
cyBhbmQgbG9vc2VzIGZvY3VzLiBDaHJvbWU6OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSgp
CisgICAgICAgIG1hbmFnZXMgcmVxdWVzdHMgZnJvbSBtdWx0aXBsZSBIVE1MRm9ybUNvbnRyb2xF
bGVtZW50IGluc3RhbmNlczoKKyAgICAgICAgLSBQZXJpb2RpY2FsbHkgY2FsbHMgQ2hyb21lQ2xp
ZW50Ojp1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoKQorICAgICAgICAgIHRvIGZvbGxvdyBl
bGVtZW50IHBvc2l0aW9uIGNoYW5nZS4KKyAgICAgICAgLSBJZiBhIG1lc3NhZ2UgaXMgc2hvd24g
Zm9yIGEgY29udHJvbCBhbmQgdGhlIGZvY3VzIGlzIGNoYW5nZWQgdG8KKyAgICAgICAgICBhbm90
aGVyIGludmFsaWQgY29udHJvbCwgaGlkZSB0aGUgY3VycmVudCBtZXNzYWdlLCB3YWl0IGEgbGl0
dGxlLAorICAgICAgICAgIHRoZW4gc2hvdyBhIG1lc3NhZ2UgZm9yIGFub3RoZXIgY29udHJvbC4K
KyAgICAgICAgLSBJZiBhIG1lc3NhZ2UgZm9yIGEgY29udHJvbCBpcyBzaG93biBhbmQgYW5vdGhl
ciBtZXNzYWdlIGZvciB0aGUKKyAgICAgICAgICBjb250cm9sIGlzIHJlcXVlc3RlZCwgaGlkZSB0
aGUgY3VycmVudCBtZXNzYWdlLCB3YWl0IGEgbGl0dGxlLAorICAgICAgICAgIHRoZW4gc2hvdyB0
aGUgbmV3IG1lc3NhZ2UuCisKKyAgICAgICAgVGVzdDogZmFzdC9mb3Jtcy92aXNpYmxlLXZhbGlk
YXRpb24tbWVzc2FnZS5odG1sCisKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpnZXRUcmFuc2Zvcm1lZENvcm5lcnMpOgor
ICAgICAgICAgIEFkZCBhIG1ldGhvZCB0byBwcm92aWRlIHRyYW5zZm9ybWVkIGNvb3JkaW5hdGVz
LgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpDb250
YWluZXJOb2RlOjopOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkZXRhY2gpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0TmVlZHNXaWxsVmFsaWRh
dGVDaGVjayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp1cGRh
dGVWaXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1D
b250cm9sRWxlbWVudDo6c2V0TmVlZHNWYWxpZGl0eUNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkaXNwYXRjaEJsdXJFdmVudCk6CisgICAg
ICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UpOgorICAgICAg
ICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5Q2hyb21l
Q2xpZW50Ojp1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UpOgorICAgICAgICAqIHBhZ2UvQ2hy
b21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6dXBkYXRlRm9ybVZhbGlkYXRpb25N
ZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6c3RhcnRWYWxpZGF0aW9uTWVzc2Fn
ZUJsYWNrb3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6dmFsaWRhdGlvbk1lc3NhZ2VU
aW1lckZpcmVkKToKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5oOgorICAgICAgICAqIHBhZ2UvQ2hy
b21lQ2xpZW50Lmg6CisKIDIwMTAtMDMtMzEgIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTmF0ZSBDaGFwaW4uCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUu
Y3BwCmluZGV4IGZiMjg1MmYuLjY3ZjQ4OWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0NvbnRh
aW5lck5vZGUuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBAIC04MDcs
NiArODA3LDE5IEBAIEludFJlY3QgQ29udGFpbmVyTm9kZTo6Z2V0UmVjdCgpIGNvbnN0CiAgICAg
cmV0dXJuIGVuY2xvc2luZ0ludFJlY3QoRmxvYXRSZWN0KHVwcGVyTGVmdCwgbG93ZXJSaWdodCAt
IHVwcGVyTGVmdCkpOwogfQogCitGbG9hdFF1YWQgQ29udGFpbmVyTm9kZTo6Z2V0VHJhbnNmb3Jt
ZWRDb3JuZXJzKCkgY29uc3QKK3sKKyAgICBSZW5kZXJPYmplY3QqIHIgPSByZW5kZXJlcigpOwor
ICAgIGlmICghcikKKyAgICAgICAgcmV0dXJuIEZsb2F0UXVhZCgpOworICAgIEludFJlY3QgcmVj
dCA9IGdldFJlY3QoKTsKKyAgICBGbG9hdFBvaW50IHRvcExlZnQgPSByLT5sb2NhbFRvQWJzb2x1
dGUoRmxvYXRQb2ludCgwLCAwKSwgZmFsc2UsIHRydWUpOworICAgIEZsb2F0UG9pbnQgdG9wUmln
aHQgPSByLT5sb2NhbFRvQWJzb2x1dGUoRmxvYXRQb2ludChyZWN0LndpZHRoKCksIDApLCBmYWxz
ZSwgdHJ1ZSk7CisgICAgRmxvYXRQb2ludCBib3R0b21SaWdodCA9IHItPmxvY2FsVG9BYnNvbHV0
ZShGbG9hdFBvaW50KHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSksIGZhbHNlLCB0cnVlKTsK
KyAgICBGbG9hdFBvaW50IGJvdHRvbUxlZnQgPSByLT5sb2NhbFRvQWJzb2x1dGUoRmxvYXRQb2lu
dCgwLCByZWN0LmhlaWdodCgpKSwgZmFsc2UsIHRydWUpOworICAgIHJldHVybiBGbG9hdFF1YWQo
dG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbVJpZ2h0LCBib3R0b21MZWZ0KTsKK30KKwogdm9pZCBD
b250YWluZXJOb2RlOjpzZXRGb2N1cyhib29sIHJlY2VpdmVkKQogewogICAgIGlmIChmb2N1c2Vk
KCkgPT0gcmVjZWl2ZWQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgg
Yi9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKaW5kZXggOTc4OWYxZi4uZjViZmUwMyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCisrKyBiL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuaApAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSAiTm9kZS5oIgogI2lu
Y2x1ZGUgIkZsb2F0UG9pbnQuaCIKKyNpbmNsdWRlICJGbG9hdFF1YWQuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIApAQCAtNTMsNyArNTQsMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBhdHRhY2goKTsKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxSZW1vdmUoKTsKKyAgICAvLyBSZXR1cm5zIHRoZSByZWN0YW5nbGUgb2YgdGhlIGJv
cmRlciBlZGdlcyBvZiB0aGlzIGVsZW1lbnQuCisgICAgLy8gVHJhbnNmb3JtcyBhcmUgbm90IGFw
cGxpZWQuCiAgICAgdmlydHVhbCBJbnRSZWN0IGdldFJlY3QoKSBjb25zdDsKKyAgICAvLyBSZXR1
cm5zIHRoZSB0b3AtbGVmdCwgdG9wLXJpZ2h0LCBib3R0b20tcmlnaHQsIGJvdHRvbS1sZWZ0IGNv
cm5lcgorICAgIC8vIGxvY2F0aW9ucyB3aXRoIHRyYW5zZm9ybWF0aW9ucy4gVGhpcyByZXR1cm5z
IGFuIGVtcHR5IEZsb2F0UXVhZCBpZiB0aGUKKyAgICAvLyBlbGVtZW50IGhhcyBubyByZW5kZXJl
ci4gVW5saWtlIFJlbmRlckJveDo6YWJzb2x1dGVDb250ZW50UXVhZCgpLAorICAgIC8vIHRoaXMg
cmV0dXJucyBsb2NhdGlvbnMgb2YgdGhlIGJvcmRlciBjb3JuZXJzLgorICAgIHZpcnR1YWwgRmxv
YXRRdWFkIGdldFRyYW5zZm9ybWVkQ29ybmVycygpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRGb2N1cyhib29sID0gdHJ1ZSk7CiAgICAgdmlydHVhbCB2b2lkIHNldEFjdGl2ZShib29sIGFj
dGl2ZSA9IHRydWUsIGJvb2wgcGF1c2UgPSBmYWxzZSk7CiAgICAgdmlydHVhbCB2b2lkIHNldEhv
dmVyZWQoYm9vbCA9IHRydWUpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29u
dHJvbEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
CmluZGV4IGM4MGZiMzYuLmNhOTlhZTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxl
bWVudC5jcHAKQEAgLTcyLDYgKzcyLDEyIEBAIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6On5IVE1M
Rm9ybUNvbnRyb2xFbGVtZW50KCkKICAgICAgICAgbV9mb3JtLT5yZW1vdmVGb3JtRWxlbWVudCh0
aGlzKTsKIH0KIAordm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkZXRhY2goKQoreworICAg
IEhUTUxFbGVtZW50OjpkZXRhY2goKTsKKyAgICB1cGRhdGVWaXNpYmxlVmFsaWRhdGlvbk1lc3Nh
Z2UoKTsKK30KKwogYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojpmb3JtTm9WYWxpZGF0ZSgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuICFnZXRBdHRyaWJ1dGUoZm9ybW5vdmFsaWRhdGVBdHRyKS5p
c051bGwoKTsKQEAgLTMyMyw3ICszMjksNyBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6
OnNldE5lZWRzV2lsbFZhbGlkYXRlQ2hlY2soKQogICAgICAgICByZXR1cm47CiAgICAgbV93aWxs
VmFsaWRhdGUgPSBuZXdXaWxsVmFsaWRhdGU7CiAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwot
ICAgIC8vIEZJWE1FOiBTaG93L2hpZGUgYSB2YWxpZGF0aW9uIG1lc3NhZ2UuCisgICAgdXBkYXRl
VmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlKCk7CiB9CiAKIFN0cmluZyBIVE1MRm9ybUNvbnRyb2xF
bGVtZW50Ojp2YWxpZGF0aW9uTWVzc2FnZSgpCkBAIC0zMzEsNiArMzM3LDE5IEBAIFN0cmluZyBI
VE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp2YWxpZGF0aW9uTWVzc2FnZSgpCiAgICAgcmV0dXJuIHZh
bGlkaXR5KCktPnZhbGlkYXRpb25NZXNzYWdlKCk7CiB9CiAKK3ZvaWQgSFRNTEZvcm1Db250cm9s
RWxlbWVudDo6dXBkYXRlVmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlKCkKK3sKKyAgICBQYWdlKiBw
YWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpOworICAgIFN0cmluZyBtZXNzYWdlOworICAgIC8vIFdl
IGNhbid0IHVzZSBmb2N1c2VkKCkuIFRoZSBmb2N1c2VkKCkgc3RhdGUgaXMgdXBkYXRlZCBhZnRl
ciBkaXNwYXRjaEZvY3VzRXZlbnQoKS4KKyAgICBpZiAocGFnZSAmJiBkb2N1bWVudCgpLT5mb2N1
c2VkTm9kZSgpID09IHRoaXMgJiYgcmVuZGVyZXIoKSAmJiB3aWxsVmFsaWRhdGUoKSkKKyAgICAg
ICAgbWVzc2FnZSA9IHZhbGlkYXRpb25NZXNzYWdlKCk7CisgICAgaWYgKG1fdmlzaWJsZVZhbGlk
YXRpb25NZXNzYWdlID09IG1lc3NhZ2UpCisgICAgICAgIHJldHVybjsKKyAgICBwYWdlLT5jaHJv
bWUoKS0+dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKHRoaXMsIG1lc3NhZ2UpOworICAgIG1f
dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlID0gbWVzc2FnZTsKK30KKwogYm9vbCBIVE1MRm9ybUNv
bnRyb2xFbGVtZW50OjpjaGVja1ZhbGlkaXR5KCkKIHsKICAgICBpZiAod2lsbFZhbGlkYXRlKCkg
JiYgIWlzVmFsaWRGb3JtQ29udHJvbEVsZW1lbnQoKSkgewpAQCAtMzU3LDcgKzM3Niw5IEBAIHZv
aWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0TmVlZHNWYWxpZGl0eUNoZWNrKCkKICAgICAg
ICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogICAgIH0KICAgICBtX2lzVmFsaWQgPSBuZXdJc1Zh
bGlkOwotICAgIC8vIEZJWE1FOiBzaG93L2hpZGUgYSB2YWxpZGF0aW9uIG1lc3NhZ2UuCisgICAg
Ly8gQ2FsbHMgaXQgZXZlbiBpZiBtX2lzVmFsaWQgaXMgbm90IGNoYW5nZWQKKyAgICAvLyBiZWNh
dXNlIGEgdmFsaWRhdGlvbiBtZXNzYWdlIGNhbiBiZSBjaGFnbmVkLgorICAgIHVwZGF0ZVZpc2li
bGVWYWxpZGF0aW9uTWVzc2FnZSgpOwogfQogCiB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6
OnNldEN1c3RvbVZhbGlkaXR5KGNvbnN0IFN0cmluZyYgZXJyb3IpCkBAIC0zNzEsNiArMzkyLDcg
QEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZlbnQoKQogICAg
ICAgICBkb2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+Zm9ybURpZEZvY3Vz
KHRoaXMpOwogCiAgICAgSFRNTEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudCgpOworICAgIHVw
ZGF0ZVZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSgpOwogfQogCiB2b2lkIEhUTUxGb3JtQ29udHJv
bEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KCkKQEAgLTM3OSw2ICs0MDEsNyBAQCB2b2lkIEhU
TUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KCkKICAgICAgICAgZG9jdW1l
bnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPmZvcm1EaWRCbHVyKHRoaXMpOwogCiAg
ICAgSFRNTEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KCk7CisgICAgdXBkYXRlVmlzaWJsZVZh
bGlkYXRpb25NZXNzYWdlKCk7CiB9CiAKIEhUTUxGb3JtRWxlbWVudCogSFRNTEZvcm1Db250cm9s
RWxlbWVudDo6dmlydHVhbEZvcm0oKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVt
ZW50LmgKaW5kZXggOWI2Yzk0My4uODVjODMwNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
RWxlbWVudC5oCkBAIC0xMDgsNiArMTA4LDggQEAgcHVibGljOgogCiAgICAgYm9vbCB3aWxsVmFs
aWRhdGUoKSBjb25zdDsKICAgICBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2UoKTsKKyAgICAvLyBG
b3IgdGVzdGluZy4KKyAgICBTdHJpbmcgdmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlKCkgeyByZXR1
cm4gbV92aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2U7IH0KICAgICBib29sIGNoZWNrVmFsaWRpdHko
KTsKICAgICAvLyBUaGlzIG11c3QgYmUgY2FsbGVkIHdoZW4gYSB2YWxpZGF0aW9uIGNvbnN0cmFp
bnQgb3IgY29udHJvbCB2YWx1ZSBpcyBjaGFuZ2VkLgogICAgIHZvaWQgc2V0TmVlZHNWYWxpZGl0
eUNoZWNrKCk7CkBAIC0xMjAsNiArMTIyLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRm9jdXNFdmVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEJsdXJFdmVu
dCgpOworICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsKIAogcHJvdGVjdGVkOgogICAgIHZvaWQg
cmVtb3ZlRnJvbUZvcm0oKTsKQEAgLTEzMSw5ICsxMzQsMTEgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIEhUTUxGb3JtRWxlbWVudCogdmlydHVhbEZvcm0oKSBjb25zdDsKICAgICB2aXJ0dWFsIGJv
b2wgaXNEZWZhdWx0QnV0dG9uRm9yRm9ybSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc1Zh
bGlkRm9ybUNvbnRyb2xFbGVtZW50KCk7CisgICAgdm9pZCB1cGRhdGVWaXNpYmxlVmFsaWRhdGlv
bk1lc3NhZ2UoKTsKIAogICAgIEhUTUxGb3JtRWxlbWVudCogbV9mb3JtOwogICAgIE93blB0cjxW
YWxpZGl0eVN0YXRlPiBtX3ZhbGlkaXR5U3RhdGU7CisgICAgU3RyaW5nIG1fdmlzaWJsZVZhbGlk
YXRpb25NZXNzYWdlOwogICAgIGJvb2wgbV9oYXNOYW1lIDogMTsKICAgICBib29sIG1fZGlzYWJs
ZWQgOiAxOwogICAgIGJvb2wgbV9yZWFkT25seSA6IDE7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuaCBiL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4
IGY3M2U3MDkuLjc2ZTZkYTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5oCisrKyBiL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC0xNTAsNiArMTUwLDcg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGZvcm1EaWRGb2N1cyhjb25zdCBOb2RlKikg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGZvcm1EaWRCbHVyKGNvbnN0IE5vZGUqKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQqLCBjb25zdCBTdHJpbmcmKSB7fQogCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPEhUTUxQ
YXJzZXJRdWlya3M+IGNyZWF0ZUhUTUxQYXJzZXJRdWlya3MoKSB7IHJldHVybiAwOyB9CiAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwIGIvV2ViQ29yZS9wYWdlL0Nocm9tZS5j
cHAKaW5kZXggZjQyODYwOC4uMjgzZmQ4OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0Nocm9t
ZS5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKQEAgLTU1LDYgKzU1LDEyIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiB1c2luZyBuYW1l
c3BhY2Ugc3RkOwogCitjb25zdCBkb3VibGUgdmFsaWRhdGlvbk1lc3NhZ2VWaXNpYmxlRHVyYXRp
b25TZWMgPSA1OworY29uc3QgZG91YmxlIHZhbGlkYXRpb25NZXNzYWdlQmxhY2tvdXRTZWMgPSAw
LjY7Citjb25zdCBkb3VibGUgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRlcnZhbFNlYyA9IDAu
NTsKK2NvbnN0IGludCB2YWxpZGF0aW9uTWVzc2FnZUNvdW50ZXJNYXhpbXVtID0gc3RhdGljX2Nh
c3Q8aW50PigKKyAgICB2YWxpZGF0aW9uTWVzc2FnZVZpc2libGVEdXJhdGlvblNlYyAvIHZhbGlk
YXRpb25NZXNzYWdlVXBkYXRlSW50ZXJ2YWxTZWMpOworCiBDaHJvbWU6OkNocm9tZShQYWdlKiBw
YWdlLCBDaHJvbWVDbGllbnQqIGNsaWVudCkKICAgICA6IG1fcGFnZShwYWdlKQogICAgICwgbV9j
bGllbnQoY2xpZW50KQpAQCAtNDEwLDYgKzQxNiw4MCBAQCB2b2lkIENocm9tZTo6c2V0VG9vbFRp
cChjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQpCiAgICAgbV9jbGllbnQtPnNldFRvb2xUaXAo
dG9vbFRpcCwgdG9vbFRpcERpcmVjdGlvbik7CiB9CiAKK3ZvaWQgQ2hyb21lOjp1cGRhdGVGb3Jt
VmFsaWRhdGlvbk1lc3NhZ2UoSFRNTEZvcm1Db250cm9sRWxlbWVudCogY29udHJvbCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQoreworICAgIEFTU0VSVChjb250cm9sKTsKKyAgICBjb250cm9sLT5n
ZXRUcmFuc2Zvcm1lZENvcm5lcnMoKTsKKyAgICBpZiAoIW1fdmFsaWRhdGlvbk1lc3NhZ2VUaW1l
cikKKyAgICAgICAgbV92YWxpZGF0aW9uTWVzc2FnZVRpbWVyLnNldChuZXcgVGltZXI8Q2hyb21l
Pih0aGlzLCAmQ2hyb21lOjp2YWxpZGF0aW9uTWVzc2FnZVRpbWVyRmlyZWQpKTsKKworICAgIGlm
IChtZXNzYWdlLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAobV92YWxpZGF0aW9uTWVzc2FnZVRh
cmdldCAhPSBjb250cm9sKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3ZhbGlkYXRp
b25NZXNzYWdlVGltZXItPnN0b3AoKTsKKyAgICAgICAgbV9jbGllbnQtPnVwZGF0ZUZvcm1WYWxp
ZGF0aW9uTWVzc2FnZShjb250cm9sLCBtZXNzYWdlKTsKKyAgICAgICAgbV92YWxpZGF0aW9uTWVz
c2FnZSA9IG1lc3NhZ2U7CisgICAgICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2VUYXJnZXQuY2xlYXIo
KTsKKyAgICAgICAgLy8gU3RhcnQgdGhlIHRpbWVyIHRvIG1ha2UgYSBibGFja291dCBwZXJpb2Qu
IERvIG5vdCB1c2Ugc3RhcnRPbmVTaG9ydCgpCisgICAgICAgIC8vIGluIG9yZGVyIHRvIHJldXNl
IHRoaXMgZm9yIHRoZSBuZXh0IG1lc3NhZ2UuCisgICAgICAgIHN0YXJ0VmFsaWRhdGlvbk1lc3Nh
Z2VCbGFja291dCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYm9vbCB3YXNWaXNp
YmxlID0gIW1fdmFsaWRhdGlvbk1lc3NhZ2UuaXNFbXB0eSgpOworICAgIFJlZlB0cjxIVE1MRm9y
bUNvbnRyb2xFbGVtZW50PiBsYXN0VGFyZ2V0KG1fdmFsaWRhdGlvbk1lc3NhZ2VUYXJnZXQpOwor
ICAgIGJvb2wgcmVzZXRUaW1lciA9ICF3YXNWaXNpYmxlIHx8IG1fdmFsaWRhdGlvbk1lc3NhZ2VU
YXJnZXQgIT0gY29udHJvbCB8fCBtX3ZhbGlkYXRpb25NZXNzYWdlICE9IG1lc3NhZ2U7CisgICAg
bV92YWxpZGF0aW9uTWVzc2FnZSA9IG1lc3NhZ2U7CisgICAgbV92YWxpZGF0aW9uTWVzc2FnZVRh
cmdldCA9IGNvbnRyb2w7CisgICAgaWYgKCFyZXNldFRpbWVyKSB7CisgICAgICAgIG1fY2xpZW50
LT51cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UobV92YWxpZGF0aW9uTWVzc2FnZVRhcmdldC5n
ZXQoKSwgbV92YWxpZGF0aW9uTWVzc2FnZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
aWYgKHdhc1Zpc2libGUpIHsKKyAgICAgICAgLy8gQ2xlYXIgdGhlIHZpc2libGUgb2xkIG1lc3Nh
Z2UuCisgICAgICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2VUaW1lci0+c3RvcCgpOworICAgICAgICBt
X2NsaWVudC0+dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKGxhc3RUYXJnZXQuZ2V0KCksIFN0
cmluZygpKTsKKyAgICAgICAgLy8gV2lsbCBzaG93IHRoZSBuZXcgbWVzc2FnZSBhZnRlciB2YWxp
ZGF0aW9uTWVzc2FnZUJsYWNrb3V0U2VjLgorICAgICAgICBzdGFydFZhbGlkYXRpb25NZXNzYWdl
QmxhY2tvdXQoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAobV92YWxpZGF0aW9uTWVzc2Fn
ZVRpbWVyLT5pc0FjdGl2ZSgpKSB7CisgICAgICAgICAgICAvLyBOb3RoaW5nIHRvIGRvIGlmIGl0
IGlzIGluIGEgYmxhY2tvdXQgcGVyaW9kLiBXaGVuIHRoZSB0aW1lciBpcworICAgICAgICAgICAg
Ly8gZmlyZWQgbmV4dCB0aW1lLCB2YWxpZGF0aW9uTWVzc2FnZVRpbWVyRmlyZWQoKSBzaG93cyB0
aGUgbWVzc2FnZQorICAgICAgICAgICAgLy8gYmVjYXVzZSBtX3ZhbGlkYXRpb25NZXNzYWdlIGlz
IG5vdCBlbXB0eS4KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEl0J3Mgbm90IGlu
IGEgYmxhY2tvdXQgcGVyaW9kLiBTaG93IHRoZSBtZXNzYWdlIGltbWVkaWF0ZWx5LgorICAgICAg
ICAgICAgbV9jbGllbnQtPnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShtX3ZhbGlkYXRpb25N
ZXNzYWdlVGFyZ2V0LmdldCgpLCBtX3ZhbGlkYXRpb25NZXNzYWdlKTsKKyAgICAgICAgICAgIG1f
dmFsaWRhdGlvbk1lc3NhZ2VUaW1lckNvdW50ZXIgPSAwOworICAgICAgICAgICAgbV92YWxpZGF0
aW9uTWVzc2FnZVRpbWVyLT5zdGFydFJlcGVhdGluZyh2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUlu
dGVydmFsU2VjKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBDaHJvbWU6OnN0YXJ0VmFs
aWRhdGlvbk1lc3NhZ2VCbGFja291dCgpCit7CisgICAgbV92YWxpZGF0aW9uTWVzc2FnZVRpbWVy
Q291bnRlciA9IC0xOworICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2VUaW1lci0+c3RhcnQodmFsaWRh
dGlvbk1lc3NhZ2VCbGFja291dFNlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlSW50ZXJ2YWxTZWMpOworfQorCit2b2lkIENocm9t
ZTo6dmFsaWRhdGlvbk1lc3NhZ2VUaW1lckZpcmVkKFRpbWVyPENocm9tZT4qIHRpbWVyKQorewor
ICAgIGlmIChtX3ZhbGlkYXRpb25NZXNzYWdlLmlzRW1wdHkoKSkgeworICAgICAgICBBU1NFUlQo
bV92YWxpZGF0aW9uTWVzc2FnZVRpbWVyQ291bnRlciA8IDApOworICAgICAgICB0aW1lci0+c3Rv
cCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fY2xpZW50LT51cGRhdGVGb3JtVmFs
aWRhdGlvbk1lc3NhZ2UobV92YWxpZGF0aW9uTWVzc2FnZVRhcmdldC5nZXQoKSwgbV92YWxpZGF0
aW9uTWVzc2FnZSk7CisgICAgaWYgKCsrbV92YWxpZGF0aW9uTWVzc2FnZVRpbWVyQ291bnRlciA8
IHZhbGlkYXRpb25NZXNzYWdlQ291bnRlck1heGltdW0pCisgICAgICAgIHJldHVybjsKKyAgICB0
aW1lci0+c3RvcCgpOworICAgIG1fY2xpZW50LT51cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2Uo
bV92YWxpZGF0aW9uTWVzc2FnZVRhcmdldC5nZXQoKSwgU3RyaW5nKCkpOworICAgIG1fdmFsaWRh
dGlvbk1lc3NhZ2UgPSBTdHJpbmcoKTsKKyAgICBtX3ZhbGlkYXRpb25NZXNzYWdlVGFyZ2V0LmNs
ZWFyKCk7CisKKyAgICBzdGFydFZhbGlkYXRpb25NZXNzYWdlQmxhY2tvdXQoKTsKK30KKwogdm9p
ZCBDaHJvbWU6OnByaW50KEZyYW1lKiBmcmFtZSkKIHsKICAgICBtX2NsaWVudC0+cHJpbnQoZnJh
bWUpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0Nocm9tZS5oIGIvV2ViQ29yZS9wYWdlL0No
cm9tZS5oCmluZGV4IDc2YjQxNDkuLjRhNjI3YTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9D
aHJvbWUuaAorKysgYi9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKQEAgLTI0LDcgKzI0LDkgQEAKICNp
bmNsdWRlICJGaWxlQ2hvb3Nlci5oIgogI2luY2x1ZGUgIkZvY3VzRGlyZWN0aW9uLmgiCiAjaW5j
bHVkZSAiSG9zdFdpbmRvdy5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNDAsNiArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgY2xhc3MgRmxvYXRSZWN0OwogICAgIGNsYXNzIEZyYW1lOwogICAgIGNsYXNzIEdl
b2xvY2F0aW9uOworICAgIGNsYXNzIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ7CiAgICAgY2xhc3Mg
SGl0VGVzdFJlc3VsdDsKICAgICBjbGFzcyBJbnRSZWN0OwogICAgIGNsYXNzIE5vZGU7CkBAIC0x
MjgsNiArMTMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIG1vdXNlRGlk
TW92ZU92ZXJFbGVtZW50KGNvbnN0IEhpdFRlc3RSZXN1bHQmLCB1bnNpZ25lZCBtb2RpZmllckZs
YWdzKTsKIAogICAgICAgICB2b2lkIHNldFRvb2xUaXAoY29uc3QgSGl0VGVzdFJlc3VsdCYpOwor
ICAgICAgICB2b2lkIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShIVE1MRm9ybUNvbnRyb2xF
bGVtZW50KiwgY29uc3QgU3RyaW5nJik7CiAKICAgICAgICAgdm9pZCBwcmludChGcmFtZSopOwog
CkBAIC0xNDgsOCArMTUyLDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogCiAgICAg
cHJpdmF0ZToKKyAgICAgICAgdm9pZCB2YWxpZGF0aW9uTWVzc2FnZVRpbWVyRmlyZWQoVGltZXI8
Q2hyb21lPiopOworICAgICAgICB2b2lkIHN0YXJ0VmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dCgp
OworCiAgICAgICAgIFBhZ2UqIG1fcGFnZTsKICAgICAgICAgQ2hyb21lQ2xpZW50KiBtX2NsaWVu
dDsKKyAgICAgICAgT3duUHRyPFRpbWVyPENocm9tZT4qPiBtX3ZhbGlkYXRpb25NZXNzYWdlVGlt
ZXI7CisgICAgICAgIGludCBtX3ZhbGlkYXRpb25NZXNzYWdlVGltZXJDb3VudGVyOworICAgICAg
ICBTdHJpbmcgbV92YWxpZGF0aW9uTWVzc2FnZTsKKyAgICAgICAgUmVmUHRyPEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQ+IG1fdmFsaWRhdGlvbk1lc3NhZ2VUYXJnZXQ7CiAgICAgfTsKIH0KIApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvV2ViQ29yZS9wYWdlL0Nocm9t
ZUNsaWVudC5oCmluZGV4IDcwZjc0YzYuLmM1NWNkYmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFn
ZS9DaHJvbWVDbGllbnQuaAorKysgYi9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTQ3
LDYgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEZsb2F0UmVjdDsKICAg
ICBjbGFzcyBGcmFtZTsKICAgICBjbGFzcyBHZW9sb2NhdGlvbjsKKyAgICBjbGFzcyBIVE1MRm9y
bUNvbnRyb2xFbGVtZW50OwogICAgIGNsYXNzIEhUTUxQYXJzZXJRdWlya3M7CiAgICAgY2xhc3Mg
SGl0VGVzdFJlc3VsdDsKICAgICBjbGFzcyBJbnRSZWN0OwpAQCAtMTk5LDYgKzIwMCwyNSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZm9ybURp
ZEZvY3VzKGNvbnN0IE5vZGUqKSB7IH07CiAgICAgICAgIHZpcnR1YWwgdm9pZCBmb3JtRGlkQmx1
cihjb25zdCBOb2RlKikgeyB9OworICAgICAgICAvLyBTaG93IHRoZSBzcGVjaWZpZWQgbWVzc2Fn
ZSBmb3IgdGhlIGZvcm0gY29udHJvbC4gSGlkZSB0aGUgbWVzc2FnZQorICAgICAgICAvLyBpZiB0
aGUgc3RyaW5nIGlzIGVtcHR5LiBJZiB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoKSB3aXRo
CisgICAgICAgIC8vIG5vbi1lbXB0eSBtZXNzYWdlIGlzIGNhbGxlZCwgdGhlIG5leHQgY2FsbCBv
ZgorICAgICAgICAvLyB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoKSBtdXN0IGJlIGZvciB0
aGUgc2FtZSBlbGVtZW50IGFuZCB0aGUKKyAgICAgICAgLy8gZW1wdHkgc3RyaW5nLgorICAgICAg
ICAvLyBUaGUgZm9sbG93aW5nIGNhc2VzIG5ldmVyIGhhcHBlbjoKKyAgICAgICAgLy8gQ2FzZSAx
OgorICAgICAgICAvLyAgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNhZ2UoY29udHJvbDEsICJtZXNz
YWdlMSIpIC0+CisgICAgICAgIC8vICB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc2FnZShjb250cm9s
MSwgIm1lc3NhZ2UxIikgLT4KKyAgICAgICAgLy8gIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzYWdl
KGNvbnRyb2wxLCAiIikKKyAgICAgICAgLy8gQ2FzZSAyOgorICAgICAgICAvLyAgdXBkYXRlRm9y
bVZhbGlkYXRpb25NZXNhZ2UoY29udHJvbDEsICJtZXNzYWdlMSIpIC0+CisgICAgICAgIC8vICB1
cGRhdGVGb3JtVmFsaWRhdGlvbk1lc2FnZShjb250cm9sMSwgIm1lc3NhZ2UyIikgLT4KKyAgICAg
ICAgLy8gIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzYWdlKGNvbnRyb2wxLCAiIikKKyAgICAgICAg
Ly8gQ2FzZSAzOgorICAgICAgICAvLyAgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNhZ2UoY29udHJv
bDEsICJtZXNzYWdlMSIpIC0+CisgICAgICAgIC8vICB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc2Fn
ZShjb250cm9sMiwgIm1lc3NhZ2UyIikgLT4KKyAgICAgICAgLy8gIHVwZGF0ZUZvcm1WYWxpZGF0
aW9uTWVzYWdlKGNvbnRyb2wxLCAiIikKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZvcm1W
YWxpZGF0aW9uTWVzc2FnZShIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiwgY29uc3QgU3RyaW5nJikg
PSAwOwogCiAgICAgICAgIHZpcnR1YWwgUGFzc093blB0cjxIVE1MUGFyc2VyUXVpcmtzPiBjcmVh
dGVIVE1MUGFyc2VyUXVpcmtzKCkgPSAwOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvQ2hhbmdlTG9n
IGIvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiNjUxOTBiLi4yYWViM2UwIDEwMDY0NAotLS0gYS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAor
MjAxMC0wNC0wMSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRnJhbWV3b3JrIHRvIHNob3cg
Zm9ybSB2YWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGludmFsaWQgY29udHJvbHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNzE4CisKKyAgICAgICAgQWRk
IGEgc3R1YiBmb3IgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKCkuCisKKyAgICAgICAgKiBl
ZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNocm9tZUNsaWVudEVmbDo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAg
KiBlZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmg6CisKIDIwMTAtMDMtMzAgIEdh
dmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJ1YmJl
ciBzdGFtcGVkIGJ5IFNhbSBXZWluaWcuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA2ZjkzZWViLi5kYTMyMjI2
IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wNC0wMSAgS2VudCBUYW11cmEg
IDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRnJhbWV3b3JrIHRvIHNob3cgZm9ybSB2YWxpZGF0aW9uIG1lc3NhZ2Ug
Zm9yIGludmFsaWQgY29udHJvbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTMxNzE4CisKKyAgICAgICAgQWRkIGEgc3R1YiBmb3IgdXBkYXRlRm9ybVZh
bGlkYXRpb25NZXNzYWdlKCkuCisKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OnVwZGF0ZUZvcm1WYWxpZGF0aW9u
TWVzc2FnZSk6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuaDoKKwogMjAxMC0wMy0z
MSAgSmVyZW15IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBOYXRlIENoYXBpbi4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21l
Q2xpZW50SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3Bw
CmluZGV4IDgyYjlmMzguLjFmMWEzZWUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMv
Q2hyb21lQ2xpZW50SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGll
bnRJbXBsLmNwcApAQCAtNjUxLDYgKzY1MSwxMSBAQCB2b2lkIENocm9tZUNsaWVudEltcGw6OmZv
cm1TdGF0ZURpZENoYW5nZShjb25zdCBOb2RlKiBub2RlKQogICAgICAgICB3ZWJmcmFtZS0+Y2xp
ZW50KCktPmRpZFVwZGF0ZUN1cnJlbnRIaXN0b3J5SXRlbSh3ZWJmcmFtZSk7CiB9CiAKK3ZvaWQg
Q2hyb21lQ2xpZW50SW1wbDo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKFdlYkNvcmU6OkhU
TUxGb3JtQ29udHJvbEVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKIHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6Z2V0UG9wdXBNZW51
SW5mbyhQb3B1cENvbnRhaW5lciogcG9wdXBDb250YWluZXIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV2ViUG9wdXBNZW51SW5mbyogaW5mbykKIHsKZGlmZiAtLWdp
dCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKaW5kZXggYzU4MmE3Ni4uMTUzYmM0OCAxMDA2NDQK
LS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKQEAgLTEyNyw2ICsxMjcsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGNob29zZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6U3RyaW5nPiYsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RmlsZUNob29zZXI+KTsKICAgICB2
aXJ0dWFsIGJvb2wgc2V0Q3Vyc29yKFdlYkNvcmU6OlBsYXRmb3JtQ3Vyc29ySGFuZGxlKSB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBmb3JtU3RhdGVEaWRDaGFuZ2UoY29uc3Qg
V2ViQ29yZTo6Tm9kZSopOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGb3JtVmFsaWRhdGlvbk1l
c3NhZ2UoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlN0
cmluZyYpOwogICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJDb3JlOjpIVE1MUGFyc2VyUXVpcmtz
PiBjcmVhdGVIVE1MUGFyc2VyUXVpcmtzKCkgeyByZXR1cm4gMDsgfQogI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCiAgICAgLy8gRklYTUU6IEFsbCB0b3VjaCBldmVudHMgYXJlIGZvcndhcmRlZCBy
ZWdhcmRsZXNzIG9mIHdoZXRoZXIgb3Igbm90IHRoZXkgYXJlIG5lZWRlZC4KZGlmZiAtLWdpdCBh
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcCBiL1dlYktpdC9l
ZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcAppbmRleCAxMTc0ZjgzLi4xYjE2
ZTk4IDEwMDY0NAotLS0gYS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVm
bC5jcHAKKysrIGIvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3Bw
CkBAIC0zODAsNiArMzgwLDExIEBAIHZvaWQgQ2hyb21lQ2xpZW50RWZsOjpmb3JtU3RhdGVEaWRD
aGFuZ2UoY29uc3QgTm9kZSopCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBDaHJv
bWVDbGllbnRFZmw6OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShXZWJDb3JlOjpIVE1MRm9y
bUNvbnRyb2xFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJikKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCiBib29sIENocm9tZUNsaWVudEVmbDo6c2V0Q3Vyc29yKFBsYXRmb3Jt
Q3Vyc29ySGFuZGxlKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oIGIvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaAppbmRleCAwZTE3ODA2Li5jZWNjODYwIDEwMDY0
NAotLS0gYS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCisrKyBi
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmgKQEAgLTExMiw2ICsx
MTIsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcnVuT3BlblBhbmVsKEZyYW1lKiwg
UGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pOwogICAgIHZpcnR1YWwgdm9pZCBmb3JtU3RhdGVEaWRD
aGFuZ2UoY29uc3QgTm9kZSopOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGb3JtVmFsaWRhdGlv
bk1lc3NhZ2UoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudCwgY29uc3QgV2ViQ29yZTo6
U3RyaW5nJik7CiAKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8SFRNTFBhcnNlclF1aXJrcz4gY3Jl
YXRlSFRNTFBhcnNlclF1aXJrcygpIHsgcmV0dXJuIDA7IH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0
L2d0ay9DaGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA0MDM5ZDk1Li5lODQz
NzA3IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9XZWJLaXQvZ3RrL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEwLTA0LTAxICBLZW50IFRhbXVyYSAgPHRrZW50
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBGcmFtZXdvcmsgdG8gc2hvdyBmb3JtIHZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW52
YWxpZCBjb250cm9scworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzE3MTgKKworICAgICAgICBBZGQgYSBzdHViIGZvciB1cGRhdGVGb3JtVmFsaWRhdGlv
bk1lc3NhZ2UoKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6dXBkYXRlRm9ybVZhbGlkYXRpb25N
ZXNzYWdlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaDoKKwog
MjAxMC0wMy0zMSAgTWFyY3VzIEJ1bGFjaCAgPGJ1bGFjaEBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9ybG93LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRHdGsuY3BwCmluZGV4IDI5NjFmMGIuLmI3MTMyYzQgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAorKysgYi9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKQEAgLTU2NCw2ICs1NjQs
MTEgQEAgdm9pZCBDaHJvbWVDbGllbnQ6OmNob29zZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8
V2ViQ29yZTo6U3RyaW5nPiYgZmlsZW5hbWVzLAogICAgIGNob29zZXItPmljb25Mb2FkZWQoSWNv
bjo6Y3JlYXRlSWNvbkZvckZpbGVzKGZpbGVuYW1lcykpOwogfQogCit2b2lkIENocm9tZUNsaWVu
dDo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKIGJvb2wgQ2hyb21lQ2xpZW50OjpzZXRDdXJzb3IoUGxhdGZvcm1DdXJzb3JIYW5kbGUp
CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmggYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEd0ay5oCmluZGV4IGM2YWVmZjcuLjhlZjBiZDYgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKKysrIGIvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaApAQCAtMTEzLDYgKzExMyw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFsIHZvaWQgY2hvb3NlSWNvbkZvckZpbGVzKGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpTdHJpbmc+JiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGaWxlQ2hv
b3Nlcj4pOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBmb3JtU3RhdGVEaWRDaGFuZ2UoY29uc3Qg
V2ViQ29yZTo6Tm9kZSopIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRm9ybVZhbGlk
YXRpb25NZXNzYWdlKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQqLCBjb25zdCBXZWJD
b3JlOjpTdHJpbmcmKTsKIAogICAgICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6SFRN
TFBhcnNlclF1aXJrcz4gY3JlYXRlSFRNTFBhcnNlclF1aXJrcygpIHsgcmV0dXJuIDA7IH0KIApk
aWZmIC0tZ2l0IGEvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZyBiL1dlYktpdC9oYWlrdS9DaGFuZ2VM
b2cKaW5kZXggYTNlZmFlOC4uNWJmYzE2NyAxMDA2NDQKLS0tIGEvV2ViS2l0L2hhaWt1L0NoYW5n
ZUxvZworKysgYi9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAt
MDQtMDEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyYW1ld29yayB0byBzaG93IGZvcm0g
dmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnZhbGlkIGNvbnRyb2xzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTcxOAorCisgICAgICAgIEFkZCBhIHN0
dWIgZm9yIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSgpLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21l
Q2xpZW50SGFpa3U6OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuaDoKKwogMjAxMC0wMy0zMSAgTWFyY3VzIEJ1
bGFjaCAgPGJ1bGFjaEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15
IE9ybG93LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEhhaWt1LmNwcCBiL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRI
YWlrdS5jcHAKaW5kZXggYTI5ZjhhMC4uNzFlNDk0MCAxMDA2NDQKLS0tIGEvV2ViS2l0L2hhaWt1
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmNwcAorKysgYi9XZWJLaXQvaGFpa3Uv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuY3BwCkBAIC0zNzUsNiArMzc1LDExIEBA
IHZvaWQgQ2hyb21lQ2xpZW50SGFpa3U6OmZvcm1TdGF0ZURpZENoYW5nZShjb25zdCBOb2RlKikK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIENocm9tZUNsaWVudEhhaWt1Ojp1cGRh
dGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudCos
IGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwog
UGFzc093blB0cjxIVE1MUGFyc2VyUXVpcmtzPiBDaHJvbWVDbGllbnRIYWlrdTo6Y3JlYXRlSFRN
TFBhcnNlclF1aXJrcygpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1dl
YktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5oIGIvV2ViS2l0L2hh
aWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmgKaW5kZXggOTIwNTU1YS4uNmY3
MTVhZSAxMDA2NDQKLS0tIGEvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEhhaWt1LmgKKysrIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhh
aWt1LmgKQEAgLTE0NSw2ICsxNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8v
IE5vdGlmaWNhdGlvbiB0aGF0IHRoZSBnaXZlbiBmb3JtIGVsZW1lbnQgaGFzIGNoYW5nZWQuIFRo
aXMgZnVuY3Rpb24KICAgICAgICAgLy8gd2lsbCBiZSBjYWxsZWQgZnJlcXVlbnRseSwgc28gaGFu
ZGxpbmcgc2hvdWxkIGJlIHZlcnkgZmFzdC4KICAgICAgICAgdm9pZCBmb3JtU3RhdGVEaWRDaGFu
Z2UoY29uc3QgTm9kZSopOworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRm9ybVZhbGlkYXRp
b25NZXNzYWdlKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQqLCBjb25zdCBXZWJDb3Jl
OjpTdHJpbmcmKTsKIAogICAgICAgICBQYXNzT3duUHRyPEhUTUxQYXJzZXJRdWlya3M+IGNyZWF0
ZUhUTUxQYXJzZXJRdWlya3MoKTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9DaGFu
Z2VMb2cgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBhODQ1YWQ1Li5iOTMwNjkxIDEwMDY0
NAotLS0gYS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIwIEBACisyMDEwLTA0LTAxICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
cmFtZXdvcmsgdG8gc2hvdyBmb3JtIHZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW52YWxpZCBjb250
cm9scworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE3
MTgKKworICAgICAgICBBZGQgYSBzdHViIGZvciB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2Uo
KSBhbmQgYSBoZWxwZXIgZm9yCisgICAgICAgIExheW91dFRlc3RDb250cm9sbGVyOjp2aXNpYmxl
VmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZCgpLgorCisgICAgICAgICogTWlzYy9XZWJD
b3JlU3RhdGlzdGljcy5oOgorICAgICAgICAqIE1pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW06Cisg
ICAgICAgICgtW1dlYkZyYW1lIHZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlk
Ol0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNocm9t
ZUNsaWVudDo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKToKKwogMjAxMC0wMy0zMSAgQ2hy
aXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0
aWNzLmggYi9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MuaAppbmRleCBkMjA1MDgz
Li42NjQ5NTdhIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3Mu
aAorKysgYi9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MuaApAQCAtODcsNCArODcs
NSBAQAogLSAoTlNTdHJpbmcgKiljb3VudGVyVmFsdWVGb3JFbGVtZW50OihET01FbGVtZW50Kill
bGVtZW50OwogLSAoaW50KXBhZ2VOdW1iZXJGb3JFbGVtZW50OihET01FbGVtZW50KillbGVtZW50
OihmbG9hdClwYWdlV2lkdGhJblBpeGVsczooZmxvYXQpcGFnZUhlaWdodEluUGl4ZWxzOwogLSAo
aW50KW51bWJlck9mUGFnZXM6KGZsb2F0KXBhZ2VXaWR0aEluUGl4ZWxzOihmbG9hdClwYWdlSGVp
Z2h0SW5QaXhlbHM7CistIChOU1N0cmluZyAqKXZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVs
ZW1lbnRCeUlkOihOU1N0cmluZyAqKWVsZW1lbnRJZDsKIEBlbmQKZGlmZiAtLWdpdCBhL1dlYktp
dC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbSBiL1dlYktpdC9tYWMvTWlzYy9XZWJDb3Jl
U3RhdGlzdGljcy5tbQppbmRleCAxMzUxZmU1Li4yODc2OWJiIDEwMDY0NAotLS0gYS9XZWJLaXQv
bWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW0KKysrIGIvV2ViS2l0L21hYy9NaXNjL1dlYkNv
cmVTdGF0aXN0aWNzLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbXBvcnQgIldlYkNvcmVTdGF0
aXN0aWNzLmgiCiAKKyNpbXBvcnQgIkRPTURvY3VtZW50SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRP
TUVsZW1lbnRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViQ2FjaGUuaCIKICNpbXBvcnQgIldlYkZy
YW1lSW50ZXJuYWwuaCIKQEAgLTM3LDYgKzM4LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvR0NDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ds
eXBoUGFnZVRyZWVOb2RlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0hUTUxGb3JtQ29udHJvbEVsZW1l
bnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSWNvbkRhdGFiYXNlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0pTRE9NV2luZG93Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2VDYWNoZS5oPgpAQCAtMjc1LDQg
KzI3NywxNSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICByZXR1cm4gUHJpbnRDb250
ZXh0OjpudW1iZXJPZlBhZ2VzKF9wcml2YXRlLT5jb3JlRnJhbWUsIEZsb2F0U2l6ZShwYWdlV2lk
dGhJblBpeGVscywgcGFnZUhlaWdodEluUGl4ZWxzKSk7CiB9CiAKKy0gKE5TU3RyaW5nICopdmlz
aWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQ6KE5TU3RyaW5nICopZWxlbWVudElk
Cit7CisgICAgRE9NRWxlbWVudCogZWxlbWVudCA9IFtbc2VsZiBET01Eb2N1bWVudF0gZ2V0RWxl
bWVudEJ5SWQ6ZWxlbWVudElkXTsKKyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIHJldHVybiBu
aWw7CisgICAgRWxlbWVudCogY29yZUVsZW1lbnQgPSBjb3JlKGVsZW1lbnQpOworICAgIGlmICgh
Y29yZUVsZW1lbnQtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpCisgICAgICAgIHJldHVybiBuaWw7
CisgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudCogZm9ybUNvbnRyb2wgPSBzdGF0aWNfY2FzdDxI
VE1MRm9ybUNvbnRyb2xFbGVtZW50Kj4oY29yZUVsZW1lbnQpOworICAgIHJldHVybiAoTlNTdHJp
bmcqKWZvcm1Db250cm9sLT52aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKTsKK30KIEBlbmQKZGlm
ZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDFhNTQ5OTIu
LmE4ZjY0NTggMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmgKKysrIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aApAQCAtMTQ3LDYgKzE0Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBmb3JtRGlk
Rm9jdXMoY29uc3QgV2ViQ29yZTo6Tm9kZSopOwogICAgIHZpcnR1YWwgdm9pZCBmb3JtRGlkQmx1
cihjb25zdCBXZWJDb3JlOjpOb2RlKik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZvcm1WYWxp
ZGF0aW9uTWVzc2FnZShXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiwgY29uc3QgV2Vi
Q29yZTo6U3RyaW5nJik7CiAKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6SFRNTFBh
cnNlclF1aXJrcz4gY3JlYXRlSFRNTFBhcnNlclF1aXJrcygpIHsgcmV0dXJuIDA7IH0KIApkaWZm
IC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0gYi9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQppbmRleCAxZDdmYmIy
Li4yNDNiNTBmIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5tbQorKysgYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5tbQpAQCAtNzEwLDYgKzcxMCwxMSBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6Zm9ybURpZEJs
dXIoY29uc3QgV2ViQ29yZTo6Tm9kZSogbm9kZSkKICAgICBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZp
ZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmZvcm1EaWRCbHVyTm9kZTopLCBraXQoY29uc3RfY2FzdDxX
ZWJDb3JlOjpOb2RlKj4obm9kZSkpKTsKIH0KIAordm9pZCBXZWJDaHJvbWVDbGllbnQ6OnVwZGF0
ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50Kiwg
Y29uc3QgV2ViQ29yZTo6U3RyaW5nJikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMu
Cit9CisKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKIHZvaWQgV2ViQ2hyb21l
Q2xpZW50OjphdHRhY2hSb290R3JhcGhpY3NMYXllcihGcmFtZSogZnJhbWUsIEdyYXBoaWNzTGF5
ZXIqIGdyYXBoaWNzTGF5ZXIpCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvV2Vi
S2l0L3F0L0NoYW5nZUxvZwppbmRleCBhMzY4MDc1Li5iMjRiNTg1IDEwMDY0NAotLS0gYS9XZWJL
aXQvcXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBA
QAorMjAxMC0wNC0wMSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRnJhbWV3b3JrIHRvIHNo
b3cgZm9ybSB2YWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGludmFsaWQgY29udHJvbHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNzE4CisKKyAgICAgICAg
QWRkIGEgc3R1YiBmb3IgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKCkuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
aHJvbWVDbGllbnRRdDo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorCiAyMDEwLTAzLTMxICBNYXJjdXMgQnVs
YWNoICA8YnVsYWNoQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBKZXJlbXkg
T3Jsb3cuCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
UXQuY3BwIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAppbmRl
eCA3Zjk3MDUwLi44NDRmZTdhIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50UXQuY3BwCisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRRdC5jcHAKQEAgLTUwNiw2ICs1MDYsMTEgQEAgdm9pZCBDaHJvbWVDbGllbnRRdDo6Y2hv
b3NlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIFBhc3NSZWYK
ICAgICBjaG9vc2VyLT5pY29uTG9hZGVkKEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhmaWxlbmFt
ZXMpKTsKIH0KIAordm9pZCBDaHJvbWVDbGllbnRRdDo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNz
YWdlKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpTdHJp
bmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIGJvb2wgQ2hyb21lQ2xpZW50UXQ6
OnNldEN1cnNvcihQbGF0Zm9ybUN1cnNvckhhbmRsZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmgg
Yi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAppbmRleCBlMjRjY2Rk
Li5jNTYzM2FiIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50UXQuaAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaApA
QCAtMTQ0LDYgKzE0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2
b2lkIGNob29zZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIFBhc3NSZWZQdHI8
RmlsZUNob29zZXI+KTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZm9ybVN0YXRlRGlkQ2hhbmdl
KGNvbnN0IE5vZGUqKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZvcm1WYWxpZGF0
aW9uTWVzc2FnZShXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiwgY29uc3QgV2ViQ29y
ZTo6U3RyaW5nJik7CiAKICAgICAgICAgdmlydHVhbCBQYXNzT3duUHRyPEhUTUxQYXJzZXJRdWly
a3M+IGNyZWF0ZUhUTUxQYXJzZXJRdWlya3MoKSB7IHJldHVybiAwOyB9CiAKZGlmZiAtLWdpdCBh
L1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggYWEwNzQy
Yy4uMWI1YTFlOCAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMC0wNC0wMSAgS2VudCBUYW11cmEg
IDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRnJhbWV3b3JrIHRvIHNob3cgZm9ybSB2YWxpZGF0aW9uIG1lc3NhZ2Ug
Zm9yIGludmFsaWQgY29udHJvbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTMxNzE4CisKKyAgICAgICAgLSBJbXBsZW1lbnQgdXBkYXRlRm9ybVZhbGlk
YXRpb25NZXNzYWdlKCkuIEl0IHVzZXMgYSBiYWxsb29uIHRvb2x0aXAuCisgICAgICAgIC0gQWRk
IHZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKCkgZm9yIExheW91dFRlc3RD
b250cm9sbGVyLgorCisgICAgICAgICogSW50ZXJmYWNlcy9JV2ViRnJhbWVQcml2YXRlLmlkbDoK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAo
V2ViQ2hyb21lQ2xpZW50Ojp1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYkZyYW1lLmNw
cDoKKyAgICAgICAgKFdlYkZyYW1lOjp2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50
QnlJZCk6CisgICAgICAgICogV2ViRnJhbWUuaDoKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAg
ICAgICAgKFdlYlZpZXc6OldlYlZpZXcpOgorICAgICAgICAoV2ViVmlldzo6fldlYlZpZXcpOgor
ICAgICAgICAoV2ViVmlldzo6V2ViVmlld1duZFByb2MpOgorICAgICAgICAoc2V0dXBCYWxsb29u
VG9vbGluZm8pOgorICAgICAgICAoV2ViVmlldzo6aGlkZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSk6
CisgICAgICAgIChXZWJWaWV3Ojp1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UpOgorICAgICAg
ICAqIFdlYlZpZXcuaDoKKwogMjAxMC0wMy0zMSAgTWFyY3VzIEJ1bGFjaCAgPGJ1bGFjaEBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9ybG93LgpkaWZmIC0tZ2l0
IGEvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJGcmFtZVByaXZhdGUuaWRsIGIvV2ViS2l0L3dp
bi9JbnRlcmZhY2VzL0lXZWJGcmFtZVByaXZhdGUuaWRsCmluZGV4IDRlMjZjZmEuLmE4ZjU1OGMg
MTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViRnJhbWVQcml2YXRlLmlkbAor
KysgYi9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkZyYW1lUHJpdmF0ZS5pZGwKQEAgLTEwOCw0
ICsxMDgsNiBAQCBpbnRlcmZhY2UgSVdlYkZyYW1lUHJpdmF0ZSA6IElVbmtub3duCiAgICAgSFJF
U1VMVCBwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoW2luXSBCU1RSIGlkLCBbaW5dIGZsb2F0IHBh
Z2VXaWR0aEluUGl4ZWxzLCBbaW5dIGZsb2F0IHBhZ2VIZWlnaHRJblBpeGVscywgW291dCwgcmV0
dmFsXSBpbnQqIHBhZ2VOdW1iZXIpOwogCiAgICAgSFJFU1VMVCBudW1iZXJPZlBhZ2VzKFtpbl0g
ZmxvYXQgcGFnZVdpZHRoSW5QaXhlbHMsIFtpbl0gZmxvYXQgcGFnZUhlaWdodEluUGl4ZWxzLCBb
b3V0LCByZXR2YWxdIGludCogcGFnZU51bWJlcik7CisKKyAgICBIUkVTVUxUIHZpc2libGVWYWxp
ZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKFtpbl0gQlNUUiBpZCwgW291dCwgcmV0dmFsXSBC
U1RSKiByZXN1bHQpOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwCmluZGV4IGYyYTYyNzguLjhjYWQ5N2IgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVy
Lmg+CiAjZW5kaWYKKyNpbmNsdWRlIDxXZWJDb3JlL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSWNvbi5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgpAQCAtNzcyLDYgKzc3Mywx
MSBAQCBib29sIFdlYkNocm9tZUNsaWVudDo6c2V0Q3Vyc29yKFBsYXRmb3JtQ3Vyc29ySGFuZGxl
IGN1cnNvcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBXZWJDaHJvbWVDbGllbnQ6OnVw
ZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBjb250cm9s
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgbV93ZWJWaWV3LT51cGRhdGVGb3JtVmFs
aWRhdGlvbk1lc3NhZ2UoY29udHJvbCwgbWVzc2FnZSk7Cit9CisKIHZvaWQgV2ViQ2hyb21lQ2xp
ZW50OjpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBH
ZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24pCiB7CiAgICAgQ09NUHRyPElXZWJVSURlbGVnYXRlPiB1
aURlbGVnYXRlOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaCBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgK
aW5kZXggZWIwNGRhZS4uNDBjMzdhMSAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oCkBAIC0zNCw2ICszNCwxMCBAQAogY2xhc3MgV2ViVmlldzsKIGNsYXNz
IFdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGU7CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ7Cit9CisKIGludGVyZmFjZSBJV2ViVUlEZWxl
Z2F0ZTsKIAogY2xhc3MgV2ViQ2hyb21lQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkNocm9tZUNs
aWVudCB7CkBAIC0xMzMsNiArMTM3LDcgQEAgcHVibGljOgogICAgIFdlYlZpZXcqIHdlYlZpZXco
KSBjb25zdCB7IHJldHVybiBtX3dlYlZpZXc7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBmb3JtU3Rh
dGVEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6Tm9kZSopIHsgfQorICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVu
dCosIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpOwogCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPFdl
YkNvcmU6OkhUTUxQYXJzZXJRdWlya3M+IGNyZWF0ZUhUTUxQYXJzZXJRdWlya3MoKSB7IHJldHVy
biAwOyB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwIGIvV2ViS2l0L3dp
bi9XZWJGcmFtZS5jcHAKaW5kZXggM2NlNGJkNi4uNGQxNzM5YiAxMDA2NDQKLS0tIGEvV2ViS2l0
L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTk5OSw2
ICs5OTksMjEgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6ZmV0Y2hBcHBs
aWNhdGlvbkljb24oCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKK0hSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViRnJhbWU6OnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKEJT
VFIgaWQsIEJTVFIqIHJlc3VsdCkKK3sKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJu
IEVfUE9JTlRFUjsKKyAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZSh0aGlzKTsKKyAgICBpZiAo
IWNvcmVGcmFtZSkKKyAgICAgICAgcmV0dXJuIEVfRkFJTDsKKyAgICBFbGVtZW50KiBlbGVtZW50
ID0gY29yZUZyYW1lLT5kb2N1bWVudCgpLT5nZXRFbGVtZW50QnlJZChTdHJpbmcoaWQsIFN5c1N0
cmluZ0xlbihpZCkpKTsKKyAgICBpZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQtPmlzRm9ybUNvbnRy
b2xFbGVtZW50KCkpCisgICAgICAgIHJldHVybiBFX0ZBSUw7CisgICAgSFRNTEZvcm1Db250cm9s
RWxlbWVudCogZm9ybUNvbnRyb2wgPSBzdGF0aWNfY2FzdDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50
Kj4oZWxlbWVudCk7CisgICAgKnJlc3VsdCA9IEJTdHJpbmcoZm9ybUNvbnRyb2wtPnZpc2libGVW
YWxpZGF0aW9uTWVzc2FnZSgpKS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFNfT0s7Cit9CisKIC8v
IElXZWJEb2N1bWVudFRleHQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFt
ZTo6c3VwcG9ydHNUZXh0RW5jb2RpbmcoIApkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJGcmFt
ZS5oIGIvV2ViS2l0L3dpbi9XZWJGcmFtZS5oCmluZGV4IGY0OTczZWEuLjU2ZGFmMGUgMTAwNjQ0
Ci0tLSBhL1dlYktpdC93aW4vV2ViRnJhbWUuaAorKysgYi9XZWJLaXQvd2luL1dlYkZyYW1lLmgK
QEAgLTI2NCw2ICsyNjQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBKU0dsb2JhbENvbnRleHRS
ZWYgU1RETUVUSE9EQ0FMTFRZUEUgZ2xvYmFsQ29udGV4dEZvclNjcmlwdFdvcmxkKElXZWJTY3Jp
cHRXb3JsZCopOwogCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHZpc2li
bGVDb250ZW50UmVjdChSRUNUKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKEJTVFIgaWQsIEJTVFIq
IHJlc3VsdCk7CiAKICAgICAvLyBJV2ViRG9jdW1lbnRUZXh0CiAgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHN1cHBvcnRzVGV4dEVuY29kaW5nKCAKZGlmZiAtLWdpdCBhL1dl
YktpdC93aW4vV2ViVmlldy5jcHAgYi9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCmluZGV4IDQ1NmNl
ODMuLjMwYmE5ZTAgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViVmlldy5jcHAKKysrIGIvV2Vi
S2l0L3dpbi9XZWJWaWV3LmNwcApAQCAtODgsNiArODgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
RnJhbWVXaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dESU9iamVjdENvdW50ZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTE1lZGlhRWxlbWVudC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXN0
b3J5SXRlbS5oPgpAQCAtMzI4LDYgKzMyOSw3IEBAIFdlYlZpZXc6OldlYlZpZXcoKQogICAgICwg
bV9kaWRDbG9zZShmYWxzZSkKICAgICAsIG1faW5JTUVDb21wb3NpdGlvbigwKQogICAgICwgbV90
b29sVGlwSHduZCgwKQorICAgICwgbV9iYWxsb29uSHduZCgwKQogICAgICwgbV9jbG9zZVdpbmRv
d1RpbWVyKHRoaXMsICZXZWJWaWV3OjpjbG9zZVdpbmRvd1RpbWVyRmlyZWQpCiAgICAgLCBtX3Rv
cExldmVsUGFyZW50KDApCiAgICAgLCBtX2RlbGV0ZUJhY2tpbmdTdG9yZVRpbWVyQWN0aXZlKGZh
bHNlKQpAQCAtMzY1LDkgKzM2NywxMSBAQCBXZWJWaWV3Ojp+V2ViVmlldygpCiB7CiAgICAgZGVs
ZXRlQmFja2luZ1N0b3JlKCk7CiAKLSAgICAvLyB0aGUgdG9vbHRpcCB3aW5kb3cgbmVlZHMgdG8g
YmUgZXhwbGljaXRseSBkZXN0cm95ZWQgc2luY2UgaXQgaXNuJ3QgYSBXU19DSElMRAorICAgIC8v
IFRoZSB0b29sdGlwIHdpbmRvd3MgbmVlZCB0byBiZSBleHBsaWNpdGx5IGRlc3Ryb3llZCBzaW5j
ZSB0aGV5IGFyZW4ndCBXU19DSElMRC4KICAgICBpZiAoOjpJc1dpbmRvdyhtX3Rvb2xUaXBId25k
KSkKICAgICAgICAgOjpEZXN0cm95V2luZG93KG1fdG9vbFRpcEh3bmQpOworICAgIGlmICg6Oklz
V2luZG93KG1fYmFsbG9vbkh3bmQpKQorICAgICAgICA6OkRlc3Ryb3lXaW5kb3cobV9iYWxsb29u
SHduZCk7CiAKICAgICBBU1NFUlQoIW1fcGFnZSk7CiAgICAgQVNTRVJUKCFtX3ByZWZlcmVuY2Vz
KTsKQEAgLTIxMDgsNiArMjExMiw3IEBAIExSRVNVTFQgQ0FMTEJBQ0sgV2ViVmlldzo6V2ViVmll
d1duZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sCiAgICAgICAg
ICAgICAvLyBJZiB3ZSBhcmUgcGFuLXNjcm9sbGluZyB3aGVuIHdlIGxvc2UgZm9jdXMsIHN0b3Ag
dGhlIHBhbiBzY3JvbGxpbmcuCiAgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnN0
b3BBdXRvc2Nyb2xsVGltZXIoKTsKIAorICAgICAgICAgICAgd2ViVmlldy0+aGlkZUZvcm1WYWxp
ZGF0aW9uTWVzc2FnZSgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBXTV9XSU5ET1dQT1NDSEFOR0VEOgpAQCAtMjY0OCw2ICsyNjUzLDg1IEBAIHZvaWQgV2Vi
Vmlldzo6c2V0VG9vbFRpcChjb25zdCBTdHJpbmcmIHRvb2xUaXApCiAgICAgOjpTZW5kTWVzc2Fn
ZShtX3Rvb2xUaXBId25kLCBUVE1fQUNUSVZBVEUsICFtX3Rvb2xUaXAuaXNFbXB0eSgpLCAwKTsK
IH0KIAorc3RhdGljIHZvaWQgc2V0dXBCYWxsb29uVG9vbGluZm8oVE9PTElORk8mIGluZm8sIEhX
TkQgd2ViVmlldywgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIGluZm8uY2JTaXplID0gc2l6ZW9m
KFRPT0xJTkZPKTsKKyAgICAvLyBXZSB1c2UgVFRGX1RSQUNLIGluIG9yZGVyIHRvIGNvbnRyb2wg
dGhlIHRpbWluZyBvZiBzaG93aW5nL2hpZGluZyBhIGJhbGxvb24gdG9vbHRpcC4KKyAgICBpbmZv
LnVGbGFncyA9IFRURl9UUkFDSyB8IFRURl9BQlNPTFVURSB8IFRURl9JRElTSFdORDsKKyAgICBp
bmZvLmh3bmQgPSB3ZWJWaWV3OworICAgIGluZm8uaGluc3QgPSBnSW5zdGFuY2U7CisgICAgaW5m
by51SWQgPSByZWludGVycHJldF9jYXN0PFVJTlRfUFRSPih3ZWJWaWV3KTsKKyAgICBpbmZvLmxw
c3pUZXh0ID0gY29uc3RfY2FzdDxVQ2hhcio+KG1lc3NhZ2UuY2hhcmFjdGVyc1dpdGhOdWxsVGVy
bWluYXRpb24oKSk7CisgICAgR2V0Q2xpZW50UmVjdCh3ZWJWaWV3LCAmaW5mby5yZWN0KTsKK30K
Kwordm9pZCBXZWJWaWV3OjpoaWRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKCkKK3sKKyAgICBpZiAo
IW1fYmFsbG9vbkh3bmQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2JhbGxvb25NZXNzYWdlID0g
U3RyaW5nKCk7CisgICAgVE9PTElORk8gaW5mbyA9IHswfTsKKyAgICBzZXR1cEJhbGxvb25Ub29s
aW5mbyhpbmZvLCBtX3ZpZXdXaW5kb3csIG1fYmFsbG9vbk1lc3NhZ2UpOworICAgIDo6U2VuZE1l
c3NhZ2UobV9iYWxsb29uSHduZCwgVFRNX1RSQUNLQUNUSVZBVEUsIEZBTFNFLCByZWludGVycHJl
dF9jYXN0PExQQVJBTT4oJmluZm8pKTsKK30KKwordm9pZCBXZWJWaWV3Ojp1cGRhdGVGb3JtVmFs
aWRhdGlvbk1lc3NhZ2UoSFRNTEZvcm1Db250cm9sRWxlbWVudCogY29udHJvbCwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQoreworICAgIGlmICghbV9iYWxsb29uSHduZCkgeworICAgICAgICBtX2Jh
bGxvb25Id25kID0gOjpDcmVhdGVXaW5kb3dFeCgKKyAgICAgICAgICAgIFdTX0VYX1RPUE1PU1Qs
IFRPT0xUSVBTX0NMQVNTLCAwLAorICAgICAgICAgICAgV1NfUE9QVVAgfCBUVFNfQUxXQVlTVElQ
IHwgVFRTX0JBTExPT04gfCBUVFNfTk9QUkVGSVgsCisgICAgICAgICAgICBDV19VU0VERUZBVUxU
LCBDV19VU0VERUZBVUxULCBDV19VU0VERUZBVUxULCBDV19VU0VERUZBVUxULAorICAgICAgICAg
ICAgbV92aWV3V2luZG93LCAwLCBnSW5zdGFuY2UsIDApOworICAgICAgICBpZiAoIW1fYmFsbG9v
bkh3bmQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIFRPT0xJTkZPIGluZm8gPSB7MH07
CisgICAgICAgIHNldHVwQmFsbG9vblRvb2xpbmZvKGluZm8sIG1fdmlld1dpbmRvdywgbV9iYWxs
b29uTWVzc2FnZSk7CisgICAgICAgIDo6U2VuZE1lc3NhZ2UobV9iYWxsb29uSHduZCwgVFRNX0FE
RFRPT0wsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8TFBBUkFNPigmaW5mbykpOworICAgICAgICA6OlNl
bmRNZXNzYWdlKG1fYmFsbG9vbkh3bmQsIFRUTV9TRVRNQVhUSVBXSURUSCwgMCwgbWF4VG9vbFRp
cFdpZHRoKTsKKworICAgICAgICA6OlNldFdpbmRvd1BvcyhtX2JhbGxvb25Id25kLCBIV05EX1RP
UCwgMCwgMCwgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgU1dQX05PTU9WRSB8IFNXUF9O
T1NJWkUgfCBTV1BfTk9BQ1RJVkFURSk7CisgICAgfQorCisgICAgaWYgKG1lc3NhZ2UuaXNFbXB0
eSgpKSB7CisgICAgICAgIGhpZGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIC8vIFVwZGF0ZSB0aGUgbWVzc2FnZS4KKyAgICBib29sIHdhc0Fj
dGl2ZSA9ICFtX2JhbGxvb25NZXNzYWdlLmlzRW1wdHkoKTsKKyAgICAvLyBJcyBpdCBvayB0byBj
YWxsIFRUTV9VUERBVEVUSVBURVhUID8KKyAgICBpZiAobV9iYWxsb29uTWVzc2FnZSAhPSBtZXNz
YWdlKSB7CisgICAgICAgIG1fYmFsbG9vbk1lc3NhZ2UgPSBtZXNzYWdlOworICAgICAgICBUT09M
SU5GTyBpbmZvID0gezB9OworICAgICAgICBzZXR1cEJhbGxvb25Ub29saW5mbyhpbmZvLCBtX3Zp
ZXdXaW5kb3csIG1fYmFsbG9vbk1lc3NhZ2UpOworICAgICAgICA6OlNlbmRNZXNzYWdlKG1fYmFs
bG9vbkh3bmQsIFRUTV9VUERBVEVUSVBURVhULCAwLCByZWludGVycHJldF9jYXN0PExQQVJBTT4o
JmluZm8pKTsKKyAgICB9CisKKyAgICAvLyBGaXggdGhlIGxvY2F0aW9uLgorICAgIEZsb2F0UXVh
ZCBjb3JuZXJzID0gY29udHJvbC0+Z2V0VHJhbnNmb3JtZWRDb3JuZXJzKCk7CisgICAgRnJhbWVW
aWV3KiBmcmFtZVZpZXcgPSBjb250cm9sLT5kb2N1bWVudCgpLT52aWV3KCk7CisgICAgaWYgKGNv
cm5lcnMuaXNFbXB0eSgpIHx8ICFmcmFtZVZpZXcpCisgICAgICAgIHJldHVybjsKKyAgICBGbG9h
dFBvaW50IGJvdHRvbSA9IGNvcm5lcnMucDQoKTsgLy8gYm90dG9tLWxlZnQKKyAgICBpZiAoYm90
dG9tLnkoKSA8IGNvcm5lcnMucDMoKS55KCkpIC8vIGJvdHRvbS1yaWdodAorICAgICAgICBib3R0
b20gPSBjb3JuZXJzLnAzKCk7CisgICAgaWYgKGJvdHRvbS55KCkgPCBjb3JuZXJzLnAxKCkueSgp
KSAvLyB0b3AtbGVmdAorICAgICAgICBib3R0b20gPSBjb3JuZXJzLnAxKCk7CisgICAgaWYgKGJv
dHRvbS55KCkgPCBjb3JuZXJzLnAyKCkueSgpKSAvLyB0b3AtcmlnaHQKKyAgICAgICAgYm90dG9t
ID0gY29ybmVycy5wMigpOworICAgIEludFBvaW50IGJvdHRvbUluU2NyZWVuID0gZnJhbWVWaWV3
LT5jb250ZW50c1RvU2NyZWVuKEludFJlY3Qocm91bmRlZEludFBvaW50KGJvdHRvbSksIEludFNp
emUoMSwgMSkpKS5sb2NhdGlvbigpOworICAgIDo6U2VuZE1lc3NhZ2UobV9iYWxsb29uSHduZCwg
VFRNX1RSQUNLUE9TSVRJT04sIDAsIE1BS0VMUEFSQU0oYm90dG9tSW5TY3JlZW4ueCgpLCBib3R0
b21JblNjcmVlbi55KCkpKTsKKworICAgIC8vIFNob3cgdGhlIGJhbGxvb24gdG9vbHRpcC4KKyAg
ICBpZiAod2FzQWN0aXZlKQorICAgICAgICByZXR1cm47CisgICAgVE9PTElORk8gaW5mbyA9IHsw
fTsKKyAgICBzZXR1cEJhbGxvb25Ub29saW5mbyhpbmZvLCBtX3ZpZXdXaW5kb3csIG1fYmFsbG9v
bk1lc3NhZ2UpOworICAgIDo6U2VuZE1lc3NhZ2UobV9iYWxsb29uSHduZCwgVFRNX1RSQUNLQUNU
SVZBVEUsIFRSVUUsIHJlaW50ZXJwcmV0X2Nhc3Q8TFBBUkFNPigmaW5mbykpOworfQorCiBIUkVT
VUxUIFdlYlZpZXc6Om5vdGlmeURpZEFkZEljb24oSVdlYk5vdGlmaWNhdGlvbiogbm90aWZpY2F0
aW9uKQogewogICAgIENPTVB0cjxJUHJvcGVydHlCYWc+IHByb3BlcnR5QmFnOwpkaWZmIC0tZ2l0
IGEvV2ViS2l0L3dpbi9XZWJWaWV3LmggYi9XZWJLaXQvd2luL1dlYlZpZXcuaAppbmRleCBhOTlk
ZjNhLi44YTU5MTM3IDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYlZpZXcuaAorKysgYi9XZWJL
aXQvd2luL1dlYlZpZXcuaApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvV0tD
QUNGTGF5ZXJSZW5kZXJlci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogY2xhc3MgRnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlcjsKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdDsKQEAgLTUwLDYgKzUx
LDEwIEBAIFdlYkNvcmU6OlBhZ2UqIGNvcmUoSVdlYlZpZXcqKTsKIAogaW50ZXJmYWNlIElEcm9w
VGFyZ2V0SGVscGVyOwogCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBIVE1MRm9ybUNvbnRy
b2xFbGVtZW50OworfQorCiBjbGFzcyBXZWJWaWV3IAogICAgIDogcHVibGljIElXZWJWaWV3CiAg
ICAgLCBwdWJsaWMgSVdlYlZpZXdQcml2YXRlCkBAIC04NDksNiArODU0LDcgQEAgcHVibGljOgog
ICAgIGJvb2wgaXNQYWludGluZygpIGNvbnN0IHsgcmV0dXJuIG1fcGFpbnRDb3VudCA+IDA7IH0K
IAogICAgIHZvaWQgc2V0VG9vbFRpcChjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKKyAgICB2b2lk
IHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50KiwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7CiAKICAgICB2b2lkIHJlZ2lzdGVyRm9ySWNv
bk5vdGlmaWNhdGlvbihib29sIGxpc3Rlbik7CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJ
Y29uRnJvbVdlYkZyYW1lKFdlYkZyYW1lKik7CkBAIC04OTIsNiArODk4LDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIGNhblJlc2V0Wm9vbShib29sIGlzVGV4dE9ubHkpOwogICAgIEhSRVNVTFQgcmVz
ZXRab29tKGJvb2wgaXNUZXh0T25seSk7CiAgICAgYm9vbCBhY3RpdmUoKTsKKyAgICB2b2lkIGhp
ZGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoKTsKIAogICAgIGVudW0gV2luZG93c1RvUGFpbnQgeyBQ
YWludFdlYlZpZXdPbmx5LCBQYWludFdlYlZpZXdBbmRDaGlsZHJlbiB9OwogICAgIHZvaWQgcGFp
bnRJbnRvQmFja2luZ1N0b3JlKFdlYkNvcmU6OkZyYW1lVmlldyosIEhEQyBiaXRtYXBEQywgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgZGlydHlSZWN0LCBXaW5kb3dzVG9QYWludCk7CkBAIC05ODEs
NiArOTg4LDggQEAgcHJvdGVjdGVkOgogICAgIHVuc2lnbmVkIG1faW5JTUVDb21wb3NpdGlvbjsK
ICAgICBIV05EIG1fdG9vbFRpcEh3bmQ7CiAgICAgV2ViQ29yZTo6U3RyaW5nIG1fdG9vbFRpcDsK
KyAgICBIV05EIG1fYmFsbG9vbkh3bmQ7CisgICAgV2ViQ29yZTo6U3RyaW5nIG1fYmFsbG9vbk1l
c3NhZ2U7CiAgICAgYm9vbCBtX2RlbGV0ZUJhY2tpbmdTdG9yZVRpbWVyQWN0aXZlOwogCiAgICAg
Ym9vbCBtX3RyYW5zcGFyZW50OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3d4L0NoYW5nZUxvZyBiL1dl
YktpdC93eC9DaGFuZ2VMb2cKaW5kZXggMjc3N2Q0Mi4uMDZkYTNlMyAxMDA2NDQKLS0tIGEvV2Vi
S2l0L3d4L0NoYW5nZUxvZworKysgYi9XZWJLaXQvd3gvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTAtMDQtMDEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyYW1ld29yayB0byBz
aG93IGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnZhbGlkIGNvbnRyb2xzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTcxOAorCisgICAgICAg
IEFkZCBhIHN0dWIgZm9yIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSgpLgorCisgICAgICAg
ICogV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
aHJvbWVDbGllbnRXeDo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgKiBX
ZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4Lmg6CisKIDIwMTAtMDMtMzEgIE1hcmN1cyBCdWxh
Y2ggIDxidWxhY2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBP
cmxvdy4KZGlmZiAtLWdpdCBhL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4
LmNwcCBiL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcAppbmRleCAw
ZDlhYjliLi43MWViZmYwIDEwMDY0NAotLS0gYS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJv
bWVDbGllbnRXeC5jcHAKKysrIGIvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50
V3guY3BwCkBAIC00NDcsNiArNDQ3LDExIEBAIHZvaWQgQ2hyb21lQ2xpZW50V3g6OmNob29zZUlj
b25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBQYXNzUmVmCiAgICAg
Y2hvb3Nlci0+aWNvbkxvYWRlZChJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoZmlsZW5hbWVzKSk7
CiB9CiAKK3ZvaWQgQ2hyb21lQ2xpZW50V3g6OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShX
ZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJikK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiBib29sIENocm9tZUNsaWVudFd4OjpzZXRD
dXJzb3IoUGxhdGZvcm1DdXJzb3JIYW5kbGUpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlm
ZiAtLWdpdCBhL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmggYi9XZWJL
aXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5oCmluZGV4IDA3MzMxMDUuLjZlY2Nl
ZWUgMTAwNjQ0Ci0tLSBhL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmgK
KysrIGIvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaApAQCAtMTMxLDYg
KzEzMSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2hvb3NlSWNvbkZvckZpbGVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pOwogCiAgICAgdmly
dHVhbCB2b2lkIGZvcm1TdGF0ZURpZENoYW5nZShjb25zdCBOb2RlKikgeyB9CisgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShXZWJDb3JlOjpIVE1MRm9ybUNvbnRy
b2xFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7CiAKICAgICB2aXJ0dWFsIFBhc3NP
d25QdHI8SFRNTFBhcnNlclF1aXJrcz4gY3JlYXRlSFRNTFBhcnNlclF1aXJrcygpIHsgcmV0dXJu
IDA7IH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMv
Q2hhbmdlTG9nCmluZGV4IGI0MThmNTkuLmQ4NTRjNWIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L0NoYW5nZUxvZworKysgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAor
MjAxMC0wNC0wMSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRnJhbWV3b3JrIHRvIHNob3cg
Zm9ybSB2YWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGludmFsaWQgY29udHJvbHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNzE4CisKKyAgICAgICAgQWRk
IExheW91dFRlc3RDb250cm9sbGVyOjp2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50
QnlJZCgpLgorICAgICAgICBXaW5kb3dzIGFuZCBNYWMgaGF2ZSB3b3JrYWJsZSBpbXBsZW1lbnRh
dGlvbnMuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5j
cHA6CisgICAgICAgICh2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZENhbGxi
YWNrKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcDoKKyAgICAg
ICAgKExheW91dFRlc3RDb250cm9sbGVyOjp2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVt
ZW50QnlJZCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9s
bGVyTWFjLm1tOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnZpc2libGVWYWxpZGF0
aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9M
YXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVy
Ojp2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZCk6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcDoKKyAgICAgICAgKExh
eW91dFRlc3RDb250cm9sbGVyOjp2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJ
ZCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5j
cHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6dmlzaWJsZVZhbGlkYXRpb25NZXNz
YWdlRm9yRWxlbWVudEJ5SWQpOgorCiAyMDEwLTA0LTAxICBFcmljIFNlaWRlbCAgPGVyaWNAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
IGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmlu
ZGV4IDY5YWNmNWMuLjhjNmRlM2MgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTk0Niw2ICs5NDYsMjAgQEAgc3RhdGlj
IEpTVmFsdWVSZWYgc2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZENhbGxiYWNrKEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU09iamUKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4
dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVs
ZW1lbnRCeUlkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0
aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3Qg
SlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlm
IChhcmd1bWVudENvdW50IDwgMSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGNvbnRleHQpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBlbGVtZW50SWQoQWRvcHQs
IEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsK
KyAgICBBU1NFUlQoISpleGNlcHRpb24pOworCisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNv
bnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0
UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IG1lc3Nh
Z2UoY29udHJvbGxlci0+dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoZWxl
bWVudElkLmdldCgpKSk7CisgICAgaWYgKCFtZXNzYWdlLmdldCgpKQorICAgICAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlU3Ry
aW5nKGNvbnRleHQsIG1lc3NhZ2UuZ2V0KCkpOworfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRB
bGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMc0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90
IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikKIHsKICAgICAvLyBIYXMgbWFjICYgd2luZG93cyBpbXBsZW1lbnRhdGlvbgpA
QCAtMTQ5OCw2ICsxNTEyLDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgICAgIHsgInNob3dXZWJJbnNwZWN0b3IiLCBzaG93
V2ViSW5zcGVjdG9yQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAidGVzdE9uc2NyZWVuIiwg
dGVzdE9uc2NyZWVuQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAidGVzdFJlcGFpbnQiLCB0
ZXN0UmVwYWludENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgInZpc2libGVWYWxpZGF0aW9u
TWVzc2FnZUZvckVsZW1lbnRCeUlkIiwgdmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVu
dEJ5SWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJ3YWl0Rm9yUG9saWN5RGVsZWdhdGUi
LCB3YWl0Rm9yUG9saWN5RGVsZWdhdGVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJ3YWl0
VW50aWxEb25lIiwgd2FpdFVudGlsRG9uZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgIndp
bmRvd0NvdW50Iiwgd2luZG93Q291bnRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggMjkxZmVmMi4u
MWY0NWQ5MCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5oCkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFhTU0F1
ZGl0b3JFbmFibGVkKGJvb2wgZmxhZyk7CiAgICAgdm9pZCBzZXRGcmFtZUZsYXR0ZW5pbmdFbmFi
bGVkKGJvb2wgZW5hYmxlKTsKICAgICB2b2lkIHNldFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChi
b29sIGVuYWJsZSk7Ci0KKyAgICBKU1N0cmluZ1JlZiB2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VG
b3JFbGVtZW50QnlJZChKU1N0cmluZ1JlZiBpZCk7CiAgICAgdm9pZCB3YWl0Rm9yUG9saWN5RGVs
ZWdhdGUoKTsKICAgICBzaXplX3Qgd2ViSGlzdG9yeUl0ZW1Db3VudCgpOwogICAgIHVuc2lnbmVk
IHdvcmtlclRocmVhZENvdW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwIGIvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAppbmRleCA2ODZm
OGU0Li5lNjljMTUyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsv
TGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKQEAgLTYzNiwzICs2MzYsOSBAQCB2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphcGlUZXN0R29Ub0N1cnJlbnRCYWNrRm9yd2FyZEl0
ZW0oKQogewogCiB9CisKK0pTU3RyaW5nUmVmIExheW91dFRlc3RDb250cm9sbGVyOjp2aXNpYmxl
VmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZChKU1N0cmluZ1JlZiBpZCkKK3sKKyAgICAv
LyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0g
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMu
bW0KaW5kZXggNTM0NDk1ZS4uYTljMjlhMSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCisrKyBiL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQpAQCAtNzA1LDMg
KzcwNSw5IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFwaVRlc3RHb1RvQ3VycmVudEJh
Y2tGb3J3YXJkSXRlbSgpCiAgICAgV2ViVmlldyAqdmlldyA9IFttYWluRnJhbWUgd2ViVmlld107
CiAgICAgW3ZpZXcgZ29Ub0JhY2tGb3J3YXJkSXRlbTpbW3ZpZXcgYmFja0ZvcndhcmRMaXN0XSBj
dXJyZW50SXRlbV1dOwogfQorCitKU1N0cmluZ1JlZiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6dmlz
aWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWQpCit7Cisg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBpZENGKEFkb3B0Q0YsIEpTU3RyaW5nQ29weUNGU3Ry
aW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGlkKSk7CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRl
V2l0aENGU3RyaW5nKChDRlN0cmluZ1JlZilbbWFpbkZyYW1lIHZpc2libGVWYWxpZGF0aW9uTWVz
c2FnZUZvckVsZW1lbnRCeUlkOihOU1N0cmluZyopaWRDRi5nZXQoKV0pOworfQpkaWZmIC0tZ2l0
IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5j
cHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0
LmNwcAppbmRleCBiNjQ4MGMyLi5iOWNkNGU2IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAorKysgYi9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcApAQCAtNTQxLDUg
KzU0MSwxMSBAQCBib29sIExheW91dFRlc3RDb250cm9sbGVyOjpjYWxsU2hvdWxkQ2xvc2VPbldl
YlZpZXcoKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorSlNTdHJpbmdSZWYgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKEpTU3RyaW5n
UmVmIGlkKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KKyAgICByZXR1cm4gMDsK
K30KKwogY29uc3QgdW5zaWduZWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1heFZpZXdXaWR0aCA9
IDgwMDsKIGNvbnN0IHVuc2lnbmVkIExheW91dFRlc3RDb250cm9sbGVyOjptYXhWaWV3SGVpZ2h0
ID0gNjAwOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91
dFRlc3RDb250cm9sbGVyV2luLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9M
YXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKaW5kZXggMWMxMjFjMy4uZTAwODJjMCAxMDA2NDQK
LS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVy
V2luLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENv
bnRyb2xsZXJXaW4uY3BwCkBAIC0xMTk2LDMgKzExOTYsMTYgQEAgdm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6YXBpVGVzdEdvVG9DdXJyZW50QmFja0ZvcndhcmRJdGVtKCkKICAgICBCT09MIHN1
Y2Nlc3M7CiAgICAgd2ViVmlldy0+Z29Ub0JhY2tGb3J3YXJkSXRlbShpdGVtLmdldCgpLCAmc3Vj
Y2Vzcyk7CiB9CisKK0pTU3RyaW5nUmVmIExheW91dFRlc3RDb250cm9sbGVyOjp2aXNpYmxlVmFs
aWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZChKU1N0cmluZ1JlZiBpZCkKK3sKKyAgICBDT01Q
dHI8SVdlYkZyYW1lUHJpdmF0ZT4gZnJhbWVQcml2YXRlKFF1ZXJ5LCBmcmFtZSk7CisgICAgaWYg
KCFmcmFtZVByaXZhdGUpCisgICAgICAgIHJldHVybiAwOworICAgIEJTVFIgbWVzc2FnZUJTVFI7
CisgICAgaWYgKEZBSUxFRChmcmFtZVByaXZhdGUtPnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZv
ckVsZW1lbnRCeUlkKGJzdHJUKGlkKS5HZXRCU1RSKCksICZtZXNzYWdlQlNUUikpKQorICAgICAg
ICByZXR1cm4gMDsKKyAgICBKU1N0cmluZ1JlZiBtZXNzYWdlSlMgPSBKU1N0cmluZ0NyZWF0ZVdp
dGhCU1RSKG1lc3NhZ2VCU1RSKTsKKyAgICBTeXNGcmVlU3RyaW5nKG1lc3NhZ2VCU1RSKTsKKyAg
ICByZXR1cm4gbWVzc2FnZUpTOworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAppbmRleCBmZjhjMTZjLi45Yzc5
Y2RkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0
Q29udHJvbGxlcld4LmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlv
dXRUZXN0Q29udHJvbGxlcld4LmNwcApAQCAtNDAxLDMgKzQwMSw5IEBAIGJvb2wgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OmNhbGxTaG91bGRDbG9zZU9uV2ViVmlldygpCiB7CiAgICAgcmV0dXJuIGZh
bHNlOwogfQorCitKU1N0cmluZ1JlZiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6dmlzaWJsZVZhbGlk
YXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWQpCit7CisgICAgLy8gRklY
TUU6IEltcGxlbWVudCB0aGlzLgorICAgIHJldHVybiAwOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52302</attachid>
            <date>2010-04-01 09:07:54 -0700</date>
            <delta_ts>2010-06-09 08:44:07 -0700</delta_ts>
            <desc>Proposed patch (rev.4)</desc>
            <filename>bug-31718-20100402010752.patch</filename>
            <type>text/plain</type>
            <size>54207</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjMDBmMzQ0Li4wNWJhZmVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDQt
MDEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyYW1ld29yayB0byBzaG93IGZvcm0gdmFs
aWRhdGlvbiBtZXNzYWdlIGZvciBpbnZhbGlkIGNvbnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTcxOAorCisgICAgICAgIEFkZCBhIHRlc3Qg
dG8gY2hlY2sgYSB2aXNpYmxlIHZhbGlkYXRpb24gbWVzc2FnZS4KKyAgICAgICAgVGhlIG1lc3Nh
Z2Ugc2hvdWxkIGJlIGF2YWlsYWJsZSBvbmx5IHdoZW4gdGhlIGNvbnRyb2wgaGFzIGZvY3VzLgor
CisgICAgICAgICogZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvdmlzaWJsZS12YWxpZGF0aW9uLW1l
c3NhZ2UuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvdmlzaWJsZS12YWxpZGF0aW9u
LW1lc3NhZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3Zpc2li
bGUtdmFsaWRhdGlvbi1tZXNzYWdlLmh0bWw6IEFkZGVkLgorCiAyMDEwLTA0LTAxICB5YWVsIGFo
YXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBMYXN6
bG8gR29tYm9zLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVz
dHMvdmlzaWJsZS12YWxpZGF0aW9uLW1lc3NhZ2UuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L3NjcmlwdC10ZXN0cy92aXNpYmxlLXZhbGlkYXRpb24tbWVzc2FnZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi45NWM5Y2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvdmlzaWJsZS12YWxpZGF0aW9uLW1lc3NhZ2Uu
anMKQEAgLTAsMCArMSwxOSBAQAorZGVzY3JpcHRpb24oJ1Rlc3QgZm9yIHZhbGlkYXRpb24gbWVz
c2FnZSByZXF1ZXN0cyBmcm9tIGFuIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQuJyk7CisKK3ZhciBw
YXJlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK2RvY3VtZW50LmJvZHkuYXBw
ZW5kQ2hpbGQocGFyZW50KTsKK3BhcmVudC5pbm5lckhUTUw9ICc8Zm9ybT4nCisgICAgKyAnPGlu
cHV0IGlkPWkxIG5hbWU9aTEgcmVxdWlyZWQ+JworICAgICsgJzwvZm9ybT4nOworCit2YXIgaW5w
dXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaTEnKTsKK2RlYnVnKCdJbnZhbGlkIGFuZCBu
byBmb2N1cycpOworc2hvdWxkQmVGYWxzZSgnaW5wdXQudmFsaWRpdHkudmFsaWQnKTsKK3Nob3Vs
ZEJlVHJ1ZSgnaW5wdXQudmFsaWRhdGlvbk1lc3NhZ2UubGVuZ3RoID4gMCcpOworc2hvdWxkQmUo
J2xheW91dFRlc3RDb250cm9sbGVyLnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRC
eUlkKCJpMSIpJywgJyIiJyk7CisKK2RlYnVnKCdJbnZhbGlkIGFuZCBmb2N1c2VkJyk7CitpbnB1
dC5mb2N1cygpOworc2hvdWxkQmUoJ2xheW91dFRlc3RDb250cm9sbGVyLnZpc2libGVWYWxpZGF0
aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKCJpMSIpJywgJ2lucHV0LnZhbGlkYXRpb25NZXNzYWdl
Jyk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy92aXNpYmxlLXZhbGlkYXRpb24tbWVzc2FnZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Zpc2libGUtdmFsaWRhdGlvbi1tZXNzYWdlLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTE4MDE5Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy92aXNpYmxlLXZhbGlkYXRpb24t
bWVzc2FnZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorVGVzdCBmb3IgdmFsaWRhdGlv
biBtZXNzYWdlIHJlcXVlc3RzIGZyb20gYW4gSFRNTEZvcm1Db250cm9sRWxlbWVudC4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0ludmFsaWQgYW5kIG5vIGZvY3VzCitQQVNTIGlu
cHV0LnZhbGlkaXR5LnZhbGlkIGlzIGZhbHNlCitQQVNTIGlucHV0LnZhbGlkYXRpb25NZXNzYWdl
Lmxlbmd0aCA+IDAgaXMgdHJ1ZQorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci52aXNpYmxlVmFs
aWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZCgiaTEiKSBpcyAiIgorSW52YWxpZCBhbmQgZm9j
dXNlZAorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci52aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VG
b3JFbGVtZW50QnlJZCgiaTEiKSBpcyBpbnB1dC52YWxpZGF0aW9uTWVzc2FnZQorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvdmlzaWJsZS12YWxpZGF0aW9uLW1lc3NhZ2UuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvdmlzaWJsZS12YWxpZGF0aW9uLW1lc3NhZ2UuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjkyODI1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy92aXNpYmxlLXZhbGlkYXRpb24tbWVzc2FnZS5odG1s
CkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhU
TUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3Zpc2libGUtdmFsaWRhdGlvbi1tZXNzYWdl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3MDQ5NDIzLi45ZTc5Y2Ni
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDU2IEBACisyMDEwLTA0LTAxICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
cmFtZXdvcmsgdG8gc2hvdyBmb3JtIHZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW52YWxpZCBjb250
cm9scworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE3
MTgKKworICAgICAgICBBbiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50IGNhbGxzIENocm9tZTo6dXBk
YXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKCkKKyAgICAgICAgd2hlbiBpdCBnZXRzIGZvY3VzIGFu
ZCBsb29zZXMgZm9jdXMuIENocm9tZTo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKCkKKyAg
ICAgICAgbWFuYWdlcyByZXF1ZXN0cyBmcm9tIG11bHRpcGxlIEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQgaW5zdGFuY2VzOgorICAgICAgICAtIFBlcmlvZGljYWxseSBjYWxscyBDaHJvbWVDbGllbnQ6
OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSgpCisgICAgICAgICAgdG8gZm9sbG93IGVsZW1l
bnQgcG9zaXRpb24gY2hhbmdlLgorICAgICAgICAtIElmIGEgbWVzc2FnZSBpcyBzaG93biBmb3Ig
YSBjb250cm9sIGFuZCB0aGUgZm9jdXMgaXMgY2hhbmdlZCB0bworICAgICAgICAgIGFub3RoZXIg
aW52YWxpZCBjb250cm9sLCBoaWRlIHRoZSBjdXJyZW50IG1lc3NhZ2UsIHdhaXQgYSBsaXR0bGUs
CisgICAgICAgICAgdGhlbiBzaG93IGEgbWVzc2FnZSBmb3IgYW5vdGhlciBjb250cm9sLgorICAg
ICAgICAtIElmIGEgbWVzc2FnZSBmb3IgYSBjb250cm9sIGlzIHNob3duIGFuZCBhbm90aGVyIG1l
c3NhZ2UgZm9yIHRoZQorICAgICAgICAgIGNvbnRyb2wgaXMgcmVxdWVzdGVkLCBoaWRlIHRoZSBj
dXJyZW50IG1lc3NhZ2UsIHdhaXQgYSBsaXR0bGUsCisgICAgICAgICAgdGhlbiBzaG93IHRoZSBu
ZXcgbWVzc2FnZS4KKworICAgICAgICBUZXN0OiBmYXN0L2Zvcm1zL3Zpc2libGUtdmFsaWRhdGlv
bi1tZXNzYWdlLmh0bWwKKworICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OmdldFRyYW5zZm9ybWVkQ29ybmVycyk6CisgICAg
ICAgICAgQWRkIGEgbWV0aG9kIHRvIHByb3ZpZGUgdHJhbnNmb3JtZWQgY29vcmRpbmF0ZXMuCisg
ICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5l
ck5vZGU6Oik6IERlY2xhcmUgZ2V0VHJhbnNmb3JtZWRDb3JuZXJzKCksCisgICAgICAgICAgYWRk
IGEgY29tbWVudCB0byBnZXRSZWN0KCkuCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRl
dGFjaCk6CisgICAgICAgICAgQWRkIGEgY2FsbCB0byB1cGRhdGVWaXNpYmxlVmFsaWRhdGlvbk1l
c3NhZ2UoKS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldE5l
ZWRzV2lsbFZhbGlkYXRlQ2hlY2spOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ6OnVwZGF0ZVZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAg
ICAgQWRkZWQuIENhbGxzIENocm9tZTo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKCkgaWYg
dGhlIHN0YXR1cworICAgICAgICAgIGlzIGNoYW5nZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXROZWVkc1ZhbGlkaXR5Q2hlY2spOgorICAgICAgICAgIEFk
ZCBhIGNhbGwgdG8gdXBkYXRlVmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlKCkuCisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZlbnQpOiBkaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRpc3BhdGNoQmx1
ckV2ZW50KTogZGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp2aXNpYmxlVmFsaWRh
dGlvbk1lc3NhZ2UpOgorICAgICAgICAgIEFkZGVkIHRoZSBkZWNsYXJhdGlvbi4KKyAgICAgICAg
KiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUNocm9tZUNs
aWVudDo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgICBBZGRlZCBhcyBh
biBlbXB0eSBmdW5jdGlvbi4KKyAgICAgICAgKiBwYWdlL0Nocm9tZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDaHJvbWU6OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSk6IFNlZSBhYm92ZS4K
KyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6c3RhcnRWYWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0
KToKKyAgICAgICAgICBBIGhlbHBlciBmb3IgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKCku
CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnZhbGlkYXRpb25NZXNzYWdlVGltZXJGaXJlZCk6
CisgICAgICAgICAgQSBoZWxwZXIgZm9yIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSgpLgor
ICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoK
KwogMjAxMC0wNC0wMSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBTaGluaWNoaXJvIEhhbWFqaS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5k
ZXggZmIyODUyZi4uNjdmNDg5ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9k
ZS5jcHAKKysrIGIvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTgwNyw2ICs4MDcs
MTkgQEAgSW50UmVjdCBDb250YWluZXJOb2RlOjpnZXRSZWN0KCkgY29uc3QKICAgICByZXR1cm4g
ZW5jbG9zaW5nSW50UmVjdChGbG9hdFJlY3QodXBwZXJMZWZ0LCBsb3dlclJpZ2h0IC0gdXBwZXJM
ZWZ0KSk7CiB9CiAKK0Zsb2F0UXVhZCBDb250YWluZXJOb2RlOjpnZXRUcmFuc2Zvcm1lZENvcm5l
cnMoKSBjb25zdAoreworICAgIFJlbmRlck9iamVjdCogciA9IHJlbmRlcmVyKCk7CisgICAgaWYg
KCFyKQorICAgICAgICByZXR1cm4gRmxvYXRRdWFkKCk7CisgICAgSW50UmVjdCByZWN0ID0gZ2V0
UmVjdCgpOworICAgIEZsb2F0UG9pbnQgdG9wTGVmdCA9IHItPmxvY2FsVG9BYnNvbHV0ZShGbG9h
dFBvaW50KDAsIDApLCBmYWxzZSwgdHJ1ZSk7CisgICAgRmxvYXRQb2ludCB0b3BSaWdodCA9IHIt
PmxvY2FsVG9BYnNvbHV0ZShGbG9hdFBvaW50KHJlY3Qud2lkdGgoKSwgMCksIGZhbHNlLCB0cnVl
KTsKKyAgICBGbG9hdFBvaW50IGJvdHRvbVJpZ2h0ID0gci0+bG9jYWxUb0Fic29sdXRlKEZsb2F0
UG9pbnQocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKSwgZmFsc2UsIHRydWUpOworICAgIEZs
b2F0UG9pbnQgYm90dG9tTGVmdCA9IHItPmxvY2FsVG9BYnNvbHV0ZShGbG9hdFBvaW50KDAsIHJl
Y3QuaGVpZ2h0KCkpLCBmYWxzZSwgdHJ1ZSk7CisgICAgcmV0dXJuIEZsb2F0UXVhZCh0b3BMZWZ0
LCB0b3BSaWdodCwgYm90dG9tUmlnaHQsIGJvdHRvbUxlZnQpOworfQorCiB2b2lkIENvbnRhaW5l
ck5vZGU6OnNldEZvY3VzKGJvb2wgcmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZvY3VzZWQoKSA9PSBy
ZWNlaXZlZCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaCBiL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGUuaAppbmRleCA5Nzg5ZjFmLi5mNWJmZTAzIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKKysrIGIvV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZS5oCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAi
RmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgCkBAIC01Myw3ICs1NCwxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGF0
dGFjaCgpOwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsKICAgICB2aXJ0dWFsIHZvaWQgd2ls
bFJlbW92ZSgpOworICAgIC8vIFJldHVybnMgdGhlIHJlY3RhbmdsZSBvZiB0aGUgYm9yZGVyIGVk
Z2VzIG9mIHRoaXMgZWxlbWVudC4KKyAgICAvLyBUcmFuc2Zvcm1zIGFyZSBub3QgYXBwbGllZC4K
ICAgICB2aXJ0dWFsIEludFJlY3QgZ2V0UmVjdCgpIGNvbnN0OworICAgIC8vIFJldHVybnMgdGhl
IHRvcC1sZWZ0LCB0b3AtcmlnaHQsIGJvdHRvbS1yaWdodCwgYm90dG9tLWxlZnQgY29ybmVyCisg
ICAgLy8gbG9jYXRpb25zIHdpdGggdHJhbnNmb3JtYXRpb25zLiBUaGlzIHJldHVybnMgYW4gZW1w
dHkgRmxvYXRRdWFkIGlmIHRoZQorICAgIC8vIGVsZW1lbnQgaGFzIG5vIHJlbmRlcmVyLiBVbmxp
a2UgUmVuZGVyQm94OjphYnNvbHV0ZUNvbnRlbnRRdWFkKCksCisgICAgLy8gdGhpcyByZXR1cm5z
IGxvY2F0aW9ucyBvZiB0aGUgYm9yZGVyIGNvcm5lcnMuCisgICAgdmlydHVhbCBGbG9hdFF1YWQg
Z2V0VHJhbnNmb3JtZWRDb3JuZXJzKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldEZvY3Vz
KGJvb2wgPSB0cnVlKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wgYWN0aXZlID0g
dHJ1ZSwgYm9vbCBwYXVzZSA9IGZhbHNlKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SG92ZXJlZChi
b29sID0gdHJ1ZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxl
bWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXgg
YzgwZmIzNi4uY2E5OWFlOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJv
bEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNw
cApAQCAtNzIsNiArNzIsMTIgQEAgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6fkhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQoKQogICAgICAgICBtX2Zvcm0tPnJlbW92ZUZvcm1FbGVtZW50KHRoaXMpOwog
fQogCit2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRldGFjaCgpCit7CisgICAgSFRNTEVs
ZW1lbnQ6OmRldGFjaCgpOworICAgIHVwZGF0ZVZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSgpOwor
fQorCiBib29sIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmZvcm1Ob1ZhbGlkYXRlKCkgY29uc3QK
IHsKICAgICByZXR1cm4gIWdldEF0dHJpYnV0ZShmb3Jtbm92YWxpZGF0ZUF0dHIpLmlzTnVsbCgp
OwpAQCAtMzIzLDcgKzMyOSw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0TmVl
ZHNXaWxsVmFsaWRhdGVDaGVjaygpCiAgICAgICAgIHJldHVybjsKICAgICBtX3dpbGxWYWxpZGF0
ZSA9IG5ld1dpbGxWYWxpZGF0ZTsKICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7Ci0gICAgLy8g
RklYTUU6IFNob3cvaGlkZSBhIHZhbGlkYXRpb24gbWVzc2FnZS4KKyAgICB1cGRhdGVWaXNpYmxl
VmFsaWRhdGlvbk1lc3NhZ2UoKTsKIH0KIAogU3RyaW5nIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6
OnZhbGlkYXRpb25NZXNzYWdlKCkKQEAgLTMzMSw2ICszMzcsMTkgQEAgU3RyaW5nIEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ6OnZhbGlkYXRpb25NZXNzYWdlKCkKICAgICByZXR1cm4gdmFsaWRpdHko
KS0+dmFsaWRhdGlvbk1lc3NhZ2UoKTsKIH0KIAordm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50
Ojp1cGRhdGVWaXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKQoreworICAgIFBhZ2UqIHBhZ2UgPSBk
b2N1bWVudCgpLT5wYWdlKCk7CisgICAgU3RyaW5nIG1lc3NhZ2U7CisgICAgLy8gV2UgY2FuJ3Qg
dXNlIGZvY3VzZWQoKS4gVGhlIGZvY3VzZWQoKSBzdGF0ZSBpcyB1cGRhdGVkIGFmdGVyIGRpc3Bh
dGNoRm9jdXNFdmVudCgpLgorICAgIGlmIChwYWdlICYmIGRvY3VtZW50KCktPmZvY3VzZWROb2Rl
KCkgPT0gdGhpcyAmJiByZW5kZXJlcigpICYmIHdpbGxWYWxpZGF0ZSgpKQorICAgICAgICBtZXNz
YWdlID0gdmFsaWRhdGlvbk1lc3NhZ2UoKTsKKyAgICBpZiAobV92aXNpYmxlVmFsaWRhdGlvbk1l
c3NhZ2UgPT0gbWVzc2FnZSkKKyAgICAgICAgcmV0dXJuOworICAgIHBhZ2UtPmNocm9tZSgpLT51
cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UodGhpcywgbWVzc2FnZSk7CisgICAgbV92aXNpYmxl
VmFsaWRhdGlvbk1lc3NhZ2UgPSBtZXNzYWdlOworfQorCiBib29sIEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQ6OmNoZWNrVmFsaWRpdHkoKQogewogICAgIGlmICh3aWxsVmFsaWRhdGUoKSAmJiAhaXNW
YWxpZEZvcm1Db250cm9sRWxlbWVudCgpKSB7CkBAIC0zNTcsNyArMzc2LDkgQEAgdm9pZCBIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXROZWVkc1ZhbGlkaXR5Q2hlY2soKQogICAgICAgICBzZXRO
ZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgfQogICAgIG1faXNWYWxpZCA9IG5ld0lzVmFsaWQ7Ci0g
ICAgLy8gRklYTUU6IHNob3cvaGlkZSBhIHZhbGlkYXRpb24gbWVzc2FnZS4KKyAgICAvLyBDYWxs
cyBpdCBldmVuIGlmIG1faXNWYWxpZCBpcyBub3QgY2hhbmdlZAorICAgIC8vIGJlY2F1c2UgYSB2
YWxpZGF0aW9uIG1lc3NhZ2UgY2FuIGJlIGNoYWduZWQuCisgICAgdXBkYXRlVmlzaWJsZVZhbGlk
YXRpb25NZXNzYWdlKCk7CiB9CiAKIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0Q3Vz
dG9tVmFsaWRpdHkoY29uc3QgU3RyaW5nJiBlcnJvcikKQEAgLTM3MSw2ICszOTIsNyBAQCB2b2lk
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudCgpCiAgICAgICAgIGRv
Y3VtZW50KCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5mb3JtRGlkRm9jdXModGhpcyk7
CiAKICAgICBIVE1MRWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KCk7CisgICAgdXBkYXRlVmlz
aWJsZVZhbGlkYXRpb25NZXNzYWdlKCk7CiB9CiAKIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVu
dDo6ZGlzcGF0Y2hCbHVyRXZlbnQoKQpAQCAtMzc5LDYgKzQwMSw3IEBAIHZvaWQgSFRNTEZvcm1D
b250cm9sRWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQoKQogICAgICAgICBkb2N1bWVudCgpLT5w
YWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+Zm9ybURpZEJsdXIodGhpcyk7CiAKICAgICBIVE1M
RWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQoKTsKKyAgICB1cGRhdGVWaXNpYmxlVmFsaWRhdGlv
bk1lc3NhZ2UoKTsKIH0KIAogSFRNTEZvcm1FbGVtZW50KiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50
Ojp2aXJ0dWFsRm9ybSgpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1D
b250cm9sRWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaApp
bmRleCA5YjZjOTQzLi44NWM4MzA0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1D
b250cm9sRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50
LmgKQEAgLTEwOCw2ICsxMDgsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIHdpbGxWYWxpZGF0ZSgp
IGNvbnN0OwogICAgIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZSgpOworICAgIC8vIEZvciB0ZXN0
aW5nLgorICAgIFN0cmluZyB2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKSB7IHJldHVybiBtX3Zp
c2libGVWYWxpZGF0aW9uTWVzc2FnZTsgfQogICAgIGJvb2wgY2hlY2tWYWxpZGl0eSgpOwogICAg
IC8vIFRoaXMgbXVzdCBiZSBjYWxsZWQgd2hlbiBhIHZhbGlkYXRpb24gY29uc3RyYWludCBvciBj
b250cm9sIHZhbHVlIGlzIGNoYW5nZWQuCiAgICAgdm9pZCBzZXROZWVkc1ZhbGlkaXR5Q2hlY2so
KTsKQEAgLTEyMCw2ICsxMjIsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hGb2N1c0V2ZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoQmx1ckV2ZW50KCk7Cisg
ICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCByZW1vdmVG
cm9tRm9ybSgpOwpAQCAtMTMxLDkgKzEzNCwxMSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgSFRN
TEZvcm1FbGVtZW50KiB2aXJ0dWFsRm9ybSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0Rl
ZmF1bHRCdXR0b25Gb3JGb3JtKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzVmFsaWRGb3Jt
Q29udHJvbEVsZW1lbnQoKTsKKyAgICB2b2lkIHVwZGF0ZVZpc2libGVWYWxpZGF0aW9uTWVzc2Fn
ZSgpOwogCiAgICAgSFRNTEZvcm1FbGVtZW50KiBtX2Zvcm07CiAgICAgT3duUHRyPFZhbGlkaXR5
U3RhdGU+IG1fdmFsaWRpdHlTdGF0ZTsKKyAgICBTdHJpbmcgbV92aXNpYmxlVmFsaWRhdGlvbk1l
c3NhZ2U7CiAgICAgYm9vbCBtX2hhc05hbWUgOiAxOwogICAgIGJvb2wgbV9kaXNhYmxlZCA6IDE7
CiAgICAgYm9vbCBtX3JlYWRPbmx5IDogMTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5oIGIvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKaW5kZXggZjczZTcw
OS4uNzZlNmRhMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysr
IGIvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTE1MCw2ICsxNTAsNyBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZm9ybURpZEZvY3VzKGNvbnN0IE5vZGUqKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZm9ybURpZEJsdXIoY29uc3QgTm9kZSopIHsgfQorICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoSFRNTEZvcm1Db250cm9sRWxlbWVudCos
IGNvbnN0IFN0cmluZyYpIHt9CiAKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8SFRNTFBhcnNlclF1
aXJrcz4gY3JlYXRlSFRNTFBhcnNlclF1aXJrcygpIHsgcmV0dXJuIDA7IH0KIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAgYi9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRl
eCBmNDI4NjA4Li4xYTQ1NDQ2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAor
KysgYi9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcApAQCAtNTUsNiArNTUsMTIgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIHVzaW5nIG5hbWVzcGFjZSBz
dGQ7CiAKK2NvbnN0IGRvdWJsZSB2YWxpZGF0aW9uTWVzc2FnZVZpc2libGVEdXJhdGlvblNlYyA9
IDU7Citjb25zdCBkb3VibGUgdmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlYyA9IDAuNjsKK2Nv
bnN0IGRvdWJsZSB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUludGVydmFsU2VjID0gMC41OworY29u
c3QgaW50IHZhbGlkYXRpb25NZXNzYWdlQ291bnRlck1heGltdW0gPSBzdGF0aWNfY2FzdDxpbnQ+
KAorICAgIHZhbGlkYXRpb25NZXNzYWdlVmlzaWJsZUR1cmF0aW9uU2VjIC8gdmFsaWRhdGlvbk1l
c3NhZ2VVcGRhdGVJbnRlcnZhbFNlYyk7CisKIENocm9tZTo6Q2hyb21lKFBhZ2UqIHBhZ2UsIENo
cm9tZUNsaWVudCogY2xpZW50KQogICAgIDogbV9wYWdlKHBhZ2UpCiAgICAgLCBtX2NsaWVudChj
bGllbnQpCkBAIC00MTAsNiArNDE2LDc5IEBAIHZvaWQgQ2hyb21lOjpzZXRUb29sVGlwKGNvbnN0
IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKICAgICBtX2NsaWVudC0+c2V0VG9vbFRpcCh0b29sVGlw
LCB0b29sVGlwRGlyZWN0aW9uKTsKIH0KIAordm9pZCBDaHJvbWU6OnVwZGF0ZUZvcm1WYWxpZGF0
aW9uTWVzc2FnZShIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBjb250cm9sLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCit7CisgICAgQVNTRVJUKGNvbnRyb2wpOworICAgIGNvbnRyb2wtPmdldFRyYW5z
Zm9ybWVkQ29ybmVycygpOworICAgIGlmICghbV92YWxpZGF0aW9uTWVzc2FnZVRpbWVyKQorICAg
ICAgICBtX3ZhbGlkYXRpb25NZXNzYWdlVGltZXIuc2V0KG5ldyBUaW1lcjxDaHJvbWU+KHRoaXMs
ICZDaHJvbWU6OnZhbGlkYXRpb25NZXNzYWdlVGltZXJGaXJlZCkpOworCisgICAgaWYgKG1lc3Nh
Z2UuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChtX3ZhbGlkYXRpb25NZXNzYWdlVGFyZ2V0ICE9
IGNvbnRyb2wpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fdmFsaWRhdGlvbk1lc3Nh
Z2VUaW1lci0+c3RvcCgpOworICAgICAgICBtX2NsaWVudC0+dXBkYXRlRm9ybVZhbGlkYXRpb25N
ZXNzYWdlKGNvbnRyb2wsIG1lc3NhZ2UpOworICAgICAgICBtX3ZhbGlkYXRpb25NZXNzYWdlID0g
bWVzc2FnZTsKKyAgICAgICAgbV92YWxpZGF0aW9uTWVzc2FnZVRhcmdldC5jbGVhcigpOworICAg
ICAgICAvLyBTdGFydCB0aGUgdGltZXIgdG8gbWFrZSBhIGJsYWNrb3V0IHBlcmlvZC4gRG8gbm90
IHVzZSBzdGFydE9uZVNob3J0KCkKKyAgICAgICAgLy8gaW4gb3JkZXIgdG8gcmV1c2UgdGhpcyBm
b3IgdGhlIG5leHQgbWVzc2FnZS4KKyAgICAgICAgc3RhcnRWYWxpZGF0aW9uTWVzc2FnZUJsYWNr
b3V0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBib29sIHdhc1Zpc2libGUgPSAh
bV92YWxpZGF0aW9uTWVzc2FnZS5pc0VtcHR5KCk7CisgICAgUmVmUHRyPEhUTUxGb3JtQ29udHJv
bEVsZW1lbnQ+IGxhc3RUYXJnZXQobV92YWxpZGF0aW9uTWVzc2FnZVRhcmdldCk7CisgICAgYm9v
bCByZXNldFRpbWVyID0gIXdhc1Zpc2libGUgfHwgbV92YWxpZGF0aW9uTWVzc2FnZVRhcmdldCAh
PSBjb250cm9sIHx8IG1fdmFsaWRhdGlvbk1lc3NhZ2UgIT0gbWVzc2FnZTsKKyAgICBtX3ZhbGlk
YXRpb25NZXNzYWdlID0gbWVzc2FnZTsKKyAgICBtX3ZhbGlkYXRpb25NZXNzYWdlVGFyZ2V0ID0g
Y29udHJvbDsKKyAgICBpZiAoIXJlc2V0VGltZXIpIHsKKyAgICAgICAgbV9jbGllbnQtPnVwZGF0
ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShtX3ZhbGlkYXRpb25NZXNzYWdlVGFyZ2V0LmdldCgpLCBt
X3ZhbGlkYXRpb25NZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAod2Fz
VmlzaWJsZSkgeworICAgICAgICAvLyBDbGVhciB0aGUgdmlzaWJsZSBvbGQgbWVzc2FnZS4KKyAg
ICAgICAgbV92YWxpZGF0aW9uTWVzc2FnZVRpbWVyLT5zdG9wKCk7CisgICAgICAgIG1fY2xpZW50
LT51cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UobGFzdFRhcmdldC5nZXQoKSwgU3RyaW5nKCkp
OworICAgICAgICAvLyBXaWxsIHNob3cgdGhlIG5ldyBtZXNzYWdlIGFmdGVyIHZhbGlkYXRpb25N
ZXNzYWdlQmxhY2tvdXRTZWMuCisgICAgICAgIHN0YXJ0VmFsaWRhdGlvbk1lc3NhZ2VCbGFja291
dCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtX3ZhbGlkYXRpb25NZXNzYWdlVGltZXIt
PmlzQWN0aXZlKCkpIHsKKyAgICAgICAgICAgIC8vIE5vdGhpbmcgdG8gZG8gaWYgaXQgaXMgaW4g
YSBibGFja291dCBwZXJpb2QuIFdoZW4gdGhlIHRpbWVyIGlzCisgICAgICAgICAgICAvLyBmaXJl
ZCBuZXh0IHRpbWUsIHZhbGlkYXRpb25NZXNzYWdlVGltZXJGaXJlZCgpIHNob3dzIHRoZSBtZXNz
YWdlCisgICAgICAgICAgICAvLyBiZWNhdXNlIG1fdmFsaWRhdGlvbk1lc3NhZ2UgaXMgbm90IGVt
cHR5LgorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gSXQncyBub3QgaW4gYSBibGFj
a291dCBwZXJpb2QuIFNob3cgdGhlIG1lc3NhZ2UgaW1tZWRpYXRlbHkuCisgICAgICAgICAgICBt
X2NsaWVudC0+dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKG1fdmFsaWRhdGlvbk1lc3NhZ2VU
YXJnZXQuZ2V0KCksIG1fdmFsaWRhdGlvbk1lc3NhZ2UpOworICAgICAgICAgICAgbV92YWxpZGF0
aW9uTWVzc2FnZVRpbWVyQ291bnRlciA9IDA7CisgICAgICAgICAgICBtX3ZhbGlkYXRpb25NZXNz
YWdlVGltZXItPnN0YXJ0UmVwZWF0aW5nKHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlSW50ZXJ2YWxT
ZWMpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIENocm9tZTo6c3RhcnRWYWxpZGF0aW9u
TWVzc2FnZUJsYWNrb3V0KCkKK3sKKyAgICBtX3ZhbGlkYXRpb25NZXNzYWdlVGltZXJDb3VudGVy
ID0gLTE7CisgICAgbV92YWxpZGF0aW9uTWVzc2FnZVRpbWVyLT5zdGFydCh2YWxpZGF0aW9uTWVz
c2FnZUJsYWNrb3V0U2VjLCB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUludGVydmFsU2VjKTsKK30K
Kwordm9pZCBDaHJvbWU6OnZhbGlkYXRpb25NZXNzYWdlVGltZXJGaXJlZChUaW1lcjxDaHJvbWU+
KiB0aW1lcikKK3sKKyAgICBpZiAobV92YWxpZGF0aW9uTWVzc2FnZS5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgQVNTRVJUKG1fdmFsaWRhdGlvbk1lc3NhZ2VUaW1lckNvdW50ZXIgPCAwKTsKKyAgICAg
ICAgdGltZXItPnN0b3AoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX2NsaWVudC0+
dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKG1fdmFsaWRhdGlvbk1lc3NhZ2VUYXJnZXQuZ2V0
KCksIG1fdmFsaWRhdGlvbk1lc3NhZ2UpOworICAgIGlmICgrK21fdmFsaWRhdGlvbk1lc3NhZ2VU
aW1lckNvdW50ZXIgPCB2YWxpZGF0aW9uTWVzc2FnZUNvdW50ZXJNYXhpbXVtKQorICAgICAgICBy
ZXR1cm47CisgICAgdGltZXItPnN0b3AoKTsKKyAgICBtX2NsaWVudC0+dXBkYXRlRm9ybVZhbGlk
YXRpb25NZXNzYWdlKG1fdmFsaWRhdGlvbk1lc3NhZ2VUYXJnZXQuZ2V0KCksIFN0cmluZygpKTsK
KyAgICBtX3ZhbGlkYXRpb25NZXNzYWdlID0gU3RyaW5nKCk7CisgICAgbV92YWxpZGF0aW9uTWVz
c2FnZVRhcmdldC5jbGVhcigpOworCisgICAgc3RhcnRWYWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0
KCk7Cit9CisKIHZvaWQgQ2hyb21lOjpwcmludChGcmFtZSogZnJhbWUpCiB7CiAgICAgbV9jbGll
bnQtPnByaW50KGZyYW1lKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9DaHJvbWUuaCBiL1dl
YkNvcmUvcGFnZS9DaHJvbWUuaAppbmRleCA3NmI0MTQ5Li40YTYyN2ExIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lLmgKKysrIGIvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCkBAIC0yNCw3
ICsyNCw5IEBACiAjaW5jbHVkZSAiRmlsZUNob29zZXIuaCIKICNpbmNsdWRlICJGb2N1c0RpcmVj
dGlvbi5oIgogI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKKyNpbmNsdWRlICJUaW1lci5oIgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTQwLDYgKzQyLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEZsb2F0UmVjdDsKICAgICBjbGFzcyBGcmFtZTsK
ICAgICBjbGFzcyBHZW9sb2NhdGlvbjsKKyAgICBjbGFzcyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50
OwogICAgIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiAgICAgY2xhc3MgSW50UmVjdDsKICAgICBjbGFz
cyBOb2RlOwpAQCAtMTI4LDYgKzEzMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0UmVzdWx0JiwgdW5zaWdu
ZWQgbW9kaWZpZXJGbGFncyk7CiAKICAgICAgICAgdm9pZCBzZXRUb29sVGlwKGNvbnN0IEhpdFRl
c3RSZXN1bHQmKTsKKyAgICAgICAgdm9pZCB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoSFRN
TEZvcm1Db250cm9sRWxlbWVudCosIGNvbnN0IFN0cmluZyYpOwogCiAgICAgICAgIHZvaWQgcHJp
bnQoRnJhbWUqKTsKIApAQCAtMTQ4LDggKzE1MiwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAj
ZW5kaWYKIAogICAgIHByaXZhdGU6CisgICAgICAgIHZvaWQgdmFsaWRhdGlvbk1lc3NhZ2VUaW1l
ckZpcmVkKFRpbWVyPENocm9tZT4qKTsKKyAgICAgICAgdm9pZCBzdGFydFZhbGlkYXRpb25NZXNz
YWdlQmxhY2tvdXQoKTsKKwogICAgICAgICBQYWdlKiBtX3BhZ2U7CiAgICAgICAgIENocm9tZUNs
aWVudCogbV9jbGllbnQ7CisgICAgICAgIE93blB0cjxUaW1lcjxDaHJvbWU+Kj4gbV92YWxpZGF0
aW9uTWVzc2FnZVRpbWVyOworICAgICAgICBpbnQgbV92YWxpZGF0aW9uTWVzc2FnZVRpbWVyQ291
bnRlcjsKKyAgICAgICAgU3RyaW5nIG1fdmFsaWRhdGlvbk1lc3NhZ2U7CisgICAgICAgIFJlZlB0
cjxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PiBtX3ZhbGlkYXRpb25NZXNzYWdlVGFyZ2V0OwogICAg
IH07CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1dlYkNv
cmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCA3MGY3NGM2Li5iYzI3NDFhIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oCkBAIC00Nyw2ICs0Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBG
bG9hdFJlY3Q7CiAgICAgY2xhc3MgRnJhbWU7CiAgICAgY2xhc3MgR2VvbG9jYXRpb247CisgICAg
Y2xhc3MgSFRNTEZvcm1Db250cm9sRWxlbWVudDsKICAgICBjbGFzcyBIVE1MUGFyc2VyUXVpcmtz
OwogICAgIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiAgICAgY2xhc3MgSW50UmVjdDsKQEAgLTE5OSw2
ICsyMDAsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAKICAgICAgICAgdmlydHVh
bCB2b2lkIGZvcm1EaWRGb2N1cyhjb25zdCBOb2RlKikgeyB9OwogICAgICAgICB2aXJ0dWFsIHZv
aWQgZm9ybURpZEJsdXIoY29uc3QgTm9kZSopIHsgfTsKKyAgICAgICAgLy8gU2hvdyB0aGUgc3Bl
Y2lmaWVkIG1lc3NhZ2UgZm9yIHRoZSBmb3JtIGNvbnRyb2wuIEhpZGUgdGhlIG1lc3NhZ2UKKyAg
ICAgICAgLy8gaWYgdGhlIHN0cmluZyBpcyBlbXB0eS4gSWYgdXBkYXRlRm9ybVZhbGlkYXRpb25N
ZXNzYWdlKCkgd2l0aAorICAgICAgICAvLyBub24tZW1wdHkgbWVzc2FnZSBpcyBjYWxsZWQsIHRo
ZSBzdWJzZXF1ZW50IGNhbGxzIG9mCisgICAgICAgIC8vIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVz
c2FnZSgpIG11c3QgYmUgZm9yIHRoZSBzYW1lIGVsZW1lbnQgYW5kIHRoZQorICAgICAgICAvLyBz
YW1lIG1lc3NhZ2UuICBUaGVuLCB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoKSBpcyBjYWxs
ZWQgd2l0aAorICAgICAgICAvLyB0aGUgc2FtZSBlbGVtZW50IGFuZCB0aGUgZW1wdHkgbWVzc2Fn
ZS4KKyAgICAgICAgLy8gIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzYWdlKGNvbnRyb2wxLCAibWVz
c2FnZTEiKSAtPgorICAgICAgICAvLyAgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNhZ2UoY29udHJv
bDEsICJtZXNzYWdlMSIpIC0+CisgICAgICAgIC8vICB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc2Fn
ZShjb250cm9sMSwgIm1lc3NhZ2UxIikgLi4uIChtdWx0aXBsZSB0aW1lcykKKyAgICAgICAgLy8g
IHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzYWdlKGNvbnRyb2wxLCAiIikKKyAgICAgICAgLy8gSW4g
dGhpcyBzZXF1ZW5jZSwgY2FsbHMgd2l0aCBvdGhlciBjb250cm9scyBvciBvdGhlciBtZXNzYWdl
cworICAgICAgICAvLyBuZXZlciBoYXBwZW4uCisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVG
b3JtVmFsaWRhdGlvbk1lc3NhZ2UoSFRNTEZvcm1Db250cm9sRWxlbWVudCosIGNvbnN0IFN0cmlu
ZyYpID0gMDsKIAogICAgICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8SFRNTFBhcnNlclF1aXJrcz4g
Y3JlYXRlSFRNTFBhcnNlclF1aXJrcygpID0gMDsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L0NoYW5n
ZUxvZyBiL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNDQ5Njg3Mi4uNDEzMWFmMCAxMDA2NDQKLS0t
IGEvV2ViS2l0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTAtMDQtMDEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyYW1ld29yayB0byBz
aG93IGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnZhbGlkIGNvbnRyb2xzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTcxOAorCisgICAgICAg
IEFkZCBhIHN0dWIgZm9yIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSgpLgorCisgICAgICAg
ICogZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDaHJvbWVDbGllbnRFZmw6OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSk6CisgICAg
ICAgICogZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOgorCiAyMDEwLTA0LTAx
ICBMZWFuZHJvIFBlcmVpcmEgIDxsZWFuZHJvQHByb2Z1c2lvbi5tb2JpPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25oYSBTaWx2YS4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDkwOTI4ZjIu
LjcwMWQxMmMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEwLTA0LTAxICBLZW50
IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBGcmFtZXdvcmsgdG8gc2hvdyBmb3JtIHZhbGlkYXRpb24g
bWVzc2FnZSBmb3IgaW52YWxpZCBjb250cm9scworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE3MTgKKworICAgICAgICBBZGQgYSBzdHViIGZvciB1cGRh
dGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoKS4KKworICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6dXBkYXRlRm9ybVZh
bGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5oOgorCiAy
MDEwLTA0LTAxICBNYXJjdXMgQnVsYWNoICA8YnVsYWNoQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBKZXJlbXkgT3Jsb3cuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0v
c3JjL0Nocm9tZUNsaWVudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGll
bnRJbXBsLmNwcAppbmRleCA4MmI5ZjM4Li4xZjFhM2VlIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hy
b21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
Q2hyb21lQ2xpZW50SW1wbC5jcHAKQEAgLTY1MSw2ICs2NTEsMTEgQEAgdm9pZCBDaHJvbWVDbGll
bnRJbXBsOjpmb3JtU3RhdGVEaWRDaGFuZ2UoY29uc3QgTm9kZSogbm9kZSkKICAgICAgICAgd2Vi
ZnJhbWUtPmNsaWVudCgpLT5kaWRVcGRhdGVDdXJyZW50SGlzdG9yeUl0ZW0od2ViZnJhbWUpOwog
fQogCit2b2lkIENocm9tZUNsaWVudEltcGw6OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShX
ZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJikK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lkIENocm9tZUNsaWVudEltcGw6Omdl
dFBvcHVwTWVudUluZm8oUG9wdXBDb250YWluZXIqIHBvcHVwQ29udGFpbmVyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlBvcHVwTWVudUluZm8qIGluZm8pCiB7
CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaCBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCmluZGV4IGM1ODJhNzYuLjE1M2Jj
NDggMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCkBAIC0xMjcsNiArMTI3
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjaG9vc2VJY29uRm9yRmlsZXMoY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OlN0cmluZz4mLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZpbGVDaG9vc2Vy
Pik7CiAgICAgdmlydHVhbCBib29sIHNldEN1cnNvcihXZWJDb3JlOjpQbGF0Zm9ybUN1cnNvckhh
bmRsZSkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgZm9ybVN0YXRlRGlkQ2hh
bmdlKGNvbnN0IFdlYkNvcmU6Ok5vZGUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRm9ybVZh
bGlkYXRpb25NZXNzYWdlKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQqLCBjb25zdCBX
ZWJDb3JlOjpTdHJpbmcmKTsKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6SFRNTFBh
cnNlclF1aXJrcz4gY3JlYXRlSFRNTFBhcnNlclF1aXJrcygpIHsgcmV0dXJuIDA7IH0KICNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIC8vIEZJWE1FOiBBbGwgdG91Y2ggZXZlbnRzIGFyZSBm
b3J3YXJkZWQgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yIG5vdCB0aGV5IGFyZSBuZWVkZWQuCmRp
ZmYgLS1naXQgYS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAg
Yi9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKaW5kZXggMTE3
NGY4My4uMWIxNmU5OCAxMDA2NDQKLS0tIGEvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRFZmwuY3BwCisrKyBiL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50RWZsLmNwcApAQCAtMzgwLDYgKzM4MCwxMSBAQCB2b2lkIENocm9tZUNsaWVudEVmbDo6Zm9y
bVN0YXRlRGlkQ2hhbmdlKGNvbnN0IE5vZGUqKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAK
K3ZvaWQgQ2hyb21lQ2xpZW50RWZsOjp1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoV2ViQ29y
ZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogYm9vbCBDaHJvbWVDbGllbnRFZmw6OnNldEN1cnNv
cihQbGF0Zm9ybUN1cnNvckhhbmRsZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0t
Z2l0IGEvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaCBiL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmgKaW5kZXggMGUxNzgwNi4uY2Vj
Yzg2MCAxMDA2NDQKLS0tIGEvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRF
ZmwuaAorKysgYi9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCkBA
IC0xMTIsNiArMTEyLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5l
bChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KTsKICAgICB2aXJ0dWFsIHZvaWQgZm9y
bVN0YXRlRGlkQ2hhbmdlKGNvbnN0IE5vZGUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRm9y
bVZhbGlkYXRpb25NZXNzYWdlKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQsIGNvbnN0
IFdlYkNvcmU6OlN0cmluZyYpOwogCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPEhUTUxQYXJzZXJR
dWlya3M+IGNyZWF0ZUhUTUxQYXJzZXJRdWlya3MoKSB7IHJldHVybiAwOyB9CiAKZGlmZiAtLWdp
dCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggNDAz
OWQ5NS4uZTg0MzcwNyAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wNC0wMSAgS2VudCBUYW11
cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRnJhbWV3b3JrIHRvIHNob3cgZm9ybSB2YWxpZGF0aW9uIG1lc3Nh
Z2UgZm9yIGludmFsaWQgY29udHJvbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTMxNzE4CisKKyAgICAgICAgQWRkIGEgc3R1YiBmb3IgdXBkYXRlRm9y
bVZhbGlkYXRpb25NZXNzYWdlKCkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnVwZGF0ZUZvcm1W
YWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
R3RrLmg6CisKIDIwMTAtMDMtMzEgIE1hcmN1cyBCdWxhY2ggIDxidWxhY2hAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBPcmxvdy4KZGlmZiAtLWdpdCBhL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcCBiL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAppbmRleCAyOTYxZjBiLi5iNzEzMmM0IDEw
MDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAK
KysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCkBAIC01
NjQsNiArNTY0LDExIEBAIHZvaWQgQ2hyb21lQ2xpZW50OjpjaG9vc2VJY29uRm9yRmlsZXMoY29u
c3QgVmVjdG9yPFdlYkNvcmU6OlN0cmluZz4mIGZpbGVuYW1lcywKICAgICBjaG9vc2VyLT5pY29u
TG9hZGVkKEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhmaWxlbmFtZXMpKTsKIH0KIAordm9pZCBD
aHJvbWVDbGllbnQ6OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShXZWJDb3JlOjpIVE1MRm9y
bUNvbnRyb2xFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJikKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCiBib29sIENocm9tZUNsaWVudDo6c2V0Q3Vyc29yKFBsYXRmb3JtQ3Vy
c29ySGFuZGxlKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oIGIvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAppbmRleCBjNmFlZmY3Li44ZWYwYmQ2IDEwMDY0NAot
LS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCisrKyBiL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKQEAgLTExMyw2ICsxMTMs
NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgdmlydHVhbCB2b2lkIGNob29zZUljb25G
b3JGaWxlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U3RyaW5nPiYsIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6RmlsZUNob29zZXI+KTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZm9ybVN0YXRlRGlkQ2hh
bmdlKGNvbnN0IFdlYkNvcmU6Ok5vZGUqKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50Kiwg
Y29uc3QgV2ViQ29yZTo6U3RyaW5nJik7CiAKICAgICAgICAgdmlydHVhbCBQYXNzT3duUHRyPFdl
YkNvcmU6OkhUTUxQYXJzZXJRdWlya3M+IGNyZWF0ZUhUTUxQYXJzZXJRdWlya3MoKSB7IHJldHVy
biAwOyB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cgYi9XZWJLaXQvaGFp
a3UvQ2hhbmdlTG9nCmluZGV4IGEzZWZhZTguLjViZmMxNjcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9o
YWlrdS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2
IEBACisyMDEwLTA0LTAxICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGcmFtZXdvcmsgdG8g
c2hvdyBmb3JtIHZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW52YWxpZCBjb250cm9scworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE3MTgKKworICAgICAg
ICBBZGQgYSBzdHViIGZvciB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoKS4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNocm9tZUNsaWVudEhhaWt1Ojp1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1Lmg6CisKIDIwMTAtMDMtMzEg
IE1hcmN1cyBCdWxhY2ggIDxidWxhY2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEplcmVteSBPcmxvdy4KZGlmZiAtLWdpdCBhL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRIYWlrdS5jcHAgYi9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50SGFpa3UuY3BwCmluZGV4IGEyOWY4YTAuLjcxZTQ5NDAgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5jcHAKKysrIGIvV2Vi
S2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmNwcApAQCAtMzc1LDYg
KzM3NSwxMSBAQCB2b2lkIENocm9tZUNsaWVudEhhaWt1Ojpmb3JtU3RhdGVEaWRDaGFuZ2UoY29u
c3QgTm9kZSopCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBDaHJvbWVDbGllbnRI
YWlrdTo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJv
bEVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKIFBhc3NPd25QdHI8SFRNTFBhcnNlclF1aXJrcz4gQ2hyb21lQ2xpZW50SGFpa3U6
OmNyZWF0ZUhUTUxQYXJzZXJRdWlya3MoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYg
LS1naXQgYS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuaCBi
L1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5oCmluZGV4IDky
MDU1NWEuLjZmNzE1YWUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRIYWlrdS5oCisrKyBiL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRIYWlrdS5oCkBAIC0xNDUsNiArMTQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICAvLyBOb3RpZmljYXRpb24gdGhhdCB0aGUgZ2l2ZW4gZm9ybSBlbGVtZW50IGhhcyBj
aGFuZ2VkLiBUaGlzIGZ1bmN0aW9uCiAgICAgICAgIC8vIHdpbGwgYmUgY2FsbGVkIGZyZXF1ZW50
bHksIHNvIGhhbmRsaW5nIHNob3VsZCBiZSB2ZXJ5IGZhc3QuCiAgICAgICAgIHZvaWQgZm9ybVN0
YXRlRGlkQ2hhbmdlKGNvbnN0IE5vZGUqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZv
cm1WYWxpZGF0aW9uTWVzc2FnZShXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiwgY29u
c3QgV2ViQ29yZTo6U3RyaW5nJik7CiAKICAgICAgICAgUGFzc093blB0cjxIVE1MUGFyc2VyUXVp
cmtzPiBjcmVhdGVIVE1MUGFyc2VyUXVpcmtzKCk7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1dlYktp
dC9tYWMvQ2hhbmdlTG9nIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggYTg0NWFkNS4uYjkz
MDY5MSAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMC0wNC0wMSAgS2VudCBUYW11cmEgIDx0a2Vu
dEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRnJhbWV3b3JrIHRvIHNob3cgZm9ybSB2YWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlu
dmFsaWQgY29udHJvbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTMxNzE4CisKKyAgICAgICAgQWRkIGEgc3R1YiBmb3IgdXBkYXRlRm9ybVZhbGlkYXRp
b25NZXNzYWdlKCkgYW5kIGEgaGVscGVyIGZvcgorICAgICAgICBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoKS4KKworICAgICAgICAq
IE1pc2MvV2ViQ29yZVN0YXRpc3RpY3MuaDoKKyAgICAgICAgKiBNaXNjL1dlYkNvcmVTdGF0aXN0
aWNzLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSB2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JF
bGVtZW50QnlJZDpdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW06CisgICAgICAg
IChXZWJDaHJvbWVDbGllbnQ6OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSk6CisKIDIwMTAt
MDMtMzEgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvTWlzYy9XZWJD
b3JlU3RhdGlzdGljcy5oIGIvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLmgKaW5k
ZXggZDIwNTA4My4uNjY0OTU3YSAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVT
dGF0aXN0aWNzLmgKKysrIGIvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLmgKQEAg
LTg3LDQgKzg3LDUgQEAKIC0gKE5TU3RyaW5nICopY291bnRlclZhbHVlRm9yRWxlbWVudDooRE9N
RWxlbWVudCopZWxlbWVudDsKIC0gKGludClwYWdlTnVtYmVyRm9yRWxlbWVudDooRE9NRWxlbWVu
dCopZWxlbWVudDooZmxvYXQpcGFnZVdpZHRoSW5QaXhlbHM6KGZsb2F0KXBhZ2VIZWlnaHRJblBp
eGVsczsKIC0gKGludCludW1iZXJPZlBhZ2VzOihmbG9hdClwYWdlV2lkdGhJblBpeGVsczooZmxv
YXQpcGFnZUhlaWdodEluUGl4ZWxzOworLSAoTlNTdHJpbmcgKil2aXNpYmxlVmFsaWRhdGlvbk1l
c3NhZ2VGb3JFbGVtZW50QnlJZDooTlNTdHJpbmcgKillbGVtZW50SWQ7CiBAZW5kCmRpZmYgLS1n
aXQgYS9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW0gYi9XZWJLaXQvbWFjL01p
c2MvV2ViQ29yZVN0YXRpc3RpY3MubW0KaW5kZXggMTM1MWZlNS4uMjg3NjliYiAxMDA2NDQKLS0t
IGEvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tCisrKyBiL1dlYktpdC9tYWMv
TWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW1wb3J0ICJX
ZWJDb3JlU3RhdGlzdGljcy5oIgogCisjaW1wb3J0ICJET01Eb2N1bWVudEludGVybmFsLmgiCiAj
aW1wb3J0ICJET01FbGVtZW50SW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYkNhY2hlLmgiCiAjaW1w
b3J0ICJXZWJGcmFtZUludGVybmFsLmgiCkBAIC0zNyw2ICszOCw3IEBACiAjaW1wb3J0IDxXZWJD
b3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dDQ29udHJvbGxlci5oPgogI2ltcG9ydCA8
V2ViQ29yZS9HbHlwaFBhZ2VUcmVlTm9kZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9IVE1MRm9ybUNv
bnRyb2xFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ljb25EYXRhYmFzZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9KU0RPTVdpbmRvdy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlQ2FjaGUuaD4K
QEAgLTI3NSw0ICsyNzcsMTUgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgcmV0dXJu
IFByaW50Q29udGV4dDo6bnVtYmVyT2ZQYWdlcyhfcHJpdmF0ZS0+Y29yZUZyYW1lLCBGbG9hdFNp
emUocGFnZVdpZHRoSW5QaXhlbHMsIHBhZ2VIZWlnaHRJblBpeGVscykpOwogfQogCistIChOU1N0
cmluZyAqKXZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkOihOU1N0cmluZyAq
KWVsZW1lbnRJZAoreworICAgIERPTUVsZW1lbnQqIGVsZW1lbnQgPSBbW3NlbGYgRE9NRG9jdW1l
bnRdIGdldEVsZW1lbnRCeUlkOmVsZW1lbnRJZF07CisgICAgaWYgKCFlbGVtZW50KQorICAgICAg
ICByZXR1cm4gbmlsOworICAgIEVsZW1lbnQqIGNvcmVFbGVtZW50ID0gY29yZShlbGVtZW50KTsK
KyAgICBpZiAoIWNvcmVFbGVtZW50LT5pc0Zvcm1Db250cm9sRWxlbWVudCgpKQorICAgICAgICBy
ZXR1cm4gbmlsOworICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGZvcm1Db250cm9sID0gc3Rh
dGljX2Nhc3Q8SFRNTEZvcm1Db250cm9sRWxlbWVudCo+KGNvcmVFbGVtZW50KTsKKyAgICByZXR1
cm4gKE5TU3RyaW5nKilmb3JtQ29udHJvbC0+dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlKCk7Cit9
CiBAZW5kCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRl
eCAxYTU0OTkyLi5hOGY2NDU4IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmgKQEAgLTE0Nyw2ICsxNDcsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZv
aWQgZm9ybURpZEZvY3VzKGNvbnN0IFdlYkNvcmU6Ok5vZGUqKTsKICAgICB2aXJ0dWFsIHZvaWQg
Zm9ybURpZEJsdXIoY29uc3QgV2ViQ29yZTo6Tm9kZSopOworICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudCos
IGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpOwogCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkNv
cmU6OkhUTUxQYXJzZXJRdWlya3M+IGNyZWF0ZUhUTUxQYXJzZXJRdWlya3MoKSB7IHJldHVybiAw
OyB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50Lm1tIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KaW5k
ZXggMWQ3ZmJiMi4uMjQzYjUwZiAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQubW0KKysrIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQubW0KQEAgLTcxMCw2ICs3MTAsMTEgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6
OmZvcm1EaWRCbHVyKGNvbnN0IFdlYkNvcmU6Ok5vZGUqIG5vZGUpCiAgICAgQ2FsbFVJRGVsZWdh
dGUobV93ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpmb3JtRGlkQmx1ck5vZGU6KSwga2l0KGNv
bnN0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KG5vZGUpKSk7CiB9CiAKK3ZvaWQgV2ViQ2hyb21lQ2xp
ZW50Ojp1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9s
RWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpCit7CisgICAgLy8gRklYTUU6IEltcGxl
bWVudCB0aGlzLgorfQorCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCiB2b2lk
IFdlYkNocm9tZUNsaWVudDo6YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUqIGZyYW1lLCBH
cmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0NoYW5n
ZUxvZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggYTM2ODA3NS4uYjI0YjU4NSAxMDA2NDQK
LS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMTAtMDQtMDEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyYW1l
d29yayB0byBzaG93IGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnZhbGlkIGNvbnRyb2xz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTcxOAor
CisgICAgICAgIEFkZCBhIHN0dWIgZm9yIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSgpLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaDoKKwogMjAxMC0wMy0zMSAg
TWFyY3VzIEJ1bGFjaCAgPGJ1bGFjaEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgSmVyZW15IE9ybG93LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudFF0LmNwcCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRR
dC5jcHAKaW5kZXggN2Y5NzA1MC4uODQ0ZmU3YSAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50UXQuY3BwCkBAIC01MDYsNiArNTA2LDExIEBAIHZvaWQgQ2hyb21lQ2xp
ZW50UXQ6OmNob29zZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVz
LCBQYXNzUmVmCiAgICAgY2hvb3Nlci0+aWNvbkxvYWRlZChJY29uOjpjcmVhdGVJY29uRm9yRmls
ZXMoZmlsZW5hbWVzKSk7CiB9CiAKK3ZvaWQgQ2hyb21lQ2xpZW50UXQ6OnVwZGF0ZUZvcm1WYWxp
ZGF0aW9uTWVzc2FnZShXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiwgY29uc3QgV2Vi
Q29yZTo6U3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiBib29sIENocm9t
ZUNsaWVudFF0OjpzZXRDdXJzb3IoUGxhdGZvcm1DdXJzb3JIYW5kbGUpCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRRdC5oIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmgKaW5k
ZXggZTI0Y2NkZC4uYzU2MzNhYiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudFF0LmgKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudFF0LmgKQEAgLTE0NCw2ICsxNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBjaG9vc2VJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBQ
YXNzUmVmUHRyPEZpbGVDaG9vc2VyPik7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGZvcm1TdGF0
ZURpZENoYW5nZShjb25zdCBOb2RlKikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVG
b3JtVmFsaWRhdGlvbk1lc3NhZ2UoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudCosIGNv
bnN0IFdlYkNvcmU6OlN0cmluZyYpOwogCiAgICAgICAgIHZpcnR1YWwgUGFzc093blB0cjxIVE1M
UGFyc2VyUXVpcmtzPiBjcmVhdGVIVE1MUGFyc2VyUXVpcmtzKCkgeyByZXR1cm4gMDsgfQogCmRp
ZmYgLS1naXQgYS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCmlu
ZGV4IGFhMDc0MmMuLjFiNWExZTggMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vQ2hhbmdlTG9nCisr
KyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTAtMDQtMDEgIEtl
bnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyYW1ld29yayB0byBzaG93IGZvcm0gdmFsaWRhdGlv
biBtZXNzYWdlIGZvciBpbnZhbGlkIGNvbnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTcxOAorCisgICAgICAgIC0gSW1wbGVtZW50IHVwZGF0
ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSgpLiBJdCB1c2VzIGEgYmFsbG9vbiB0b29sdGlwLgorICAg
ICAgICAtIEFkZCB2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZCgpIGZvciBM
YXlvdXRUZXN0Q29udHJvbGxlci4KKworICAgICAgICAqIEludGVyZmFjZXMvSVdlYkZyYW1lUHJp
dmF0ZS5pZGw6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBX
ZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFtZTo6dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdl
Rm9yRWxlbWVudEJ5SWQpOgorICAgICAgICAqIFdlYkZyYW1lLmg6CisgICAgICAgICogV2ViVmll
dy5jcHA6CisgICAgICAgIChXZWJWaWV3OjpXZWJWaWV3KToKKyAgICAgICAgKFdlYlZpZXc6On5X
ZWJWaWV3KToKKyAgICAgICAgKFdlYlZpZXc6OldlYlZpZXdXbmRQcm9jKToKKyAgICAgICAgKHNl
dHVwQmFsbG9vblRvb2xpbmZvKToKKyAgICAgICAgKFdlYlZpZXc6OmhpZGVGb3JtVmFsaWRhdGlv
bk1lc3NhZ2UpOgorICAgICAgICAoV2ViVmlldzo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdl
KToKKyAgICAgICAgKiBXZWJWaWV3Lmg6CisKIDIwMTAtMDMtMzEgIE1hcmN1cyBCdWxhY2ggIDxi
dWxhY2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBPcmxvdy4K
ZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViRnJhbWVQcml2YXRlLmlkbCBi
L1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViRnJhbWVQcml2YXRlLmlkbAppbmRleCA0ZTI2Y2Zh
Li5hOGY1NThjIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkZyYW1lUHJp
dmF0ZS5pZGwKKysrIGIvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJGcmFtZVByaXZhdGUuaWRs
CkBAIC0xMDgsNCArMTA4LDYgQEAgaW50ZXJmYWNlIElXZWJGcmFtZVByaXZhdGUgOiBJVW5rbm93
bgogICAgIEhSRVNVTFQgcGFnZU51bWJlckZvckVsZW1lbnRCeUlkKFtpbl0gQlNUUiBpZCwgW2lu
XSBmbG9hdCBwYWdlV2lkdGhJblBpeGVscywgW2luXSBmbG9hdCBwYWdlSGVpZ2h0SW5QaXhlbHMs
IFtvdXQsIHJldHZhbF0gaW50KiBwYWdlTnVtYmVyKTsKIAogICAgIEhSRVNVTFQgbnVtYmVyT2ZQ
YWdlcyhbaW5dIGZsb2F0IHBhZ2VXaWR0aEluUGl4ZWxzLCBbaW5dIGZsb2F0IHBhZ2VIZWlnaHRJ
blBpeGVscywgW291dCwgcmV0dmFsXSBpbnQqIHBhZ2VOdW1iZXIpOworCisgICAgSFJFU1VMVCB2
aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZChbaW5dIEJTVFIgaWQsIFtvdXQs
IHJldHZhbF0gQlNUUiogcmVzdWx0KTsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCBmMmE2Mjc4Li44Y2FkOTdiIDEwMDY0NAotLS0gYS9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC00OSw2ICs0OSw3IEBA
CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogI2luY2x1ZGUgPFdlYkNvcmUvR3Jh
cGhpY3NMYXllci5oPgogI2VuZGlmCisjaW5jbHVkZSA8V2ViQ29yZS9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0ljb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KQEAgLTc3
Miw2ICs3NzMsMTEgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnNldEN1cnNvcihQbGF0Zm9ybUN1
cnNvckhhbmRsZSBjdXJzb3IpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgV2ViQ2hyb21l
Q2xpZW50Ojp1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoSFRNTEZvcm1Db250cm9sRWxlbWVu
dCogY29udHJvbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIG1fd2ViVmlldy0+dXBk
YXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKGNvbnRyb2wsIG1lc3NhZ2UpOworfQorCiB2b2lkIFdl
YkNocm9tZUNsaWVudDo6cmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKEZyYW1l
KiBmcmFtZSwgR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uKQogewogICAgIENPTVB0cjxJV2ViVUlE
ZWxlZ2F0ZT4gdWlEZWxlZ2F0ZTsKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmggYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oCmluZGV4IGViMDRkYWUuLjQwYzM3YTEgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMzQsNiArMzQsMTAgQEAKIGNsYXNzIFdlYlZp
ZXc7CiBjbGFzcyBXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlOwogCituYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OworfQorCiBpbnRlcmZhY2Ug
SVdlYlVJRGVsZWdhdGU7CiAKIGNsYXNzIFdlYkNocm9tZUNsaWVudCA6IHB1YmxpYyBXZWJDb3Jl
OjpDaHJvbWVDbGllbnQgewpAQCAtMTMzLDYgKzEzNyw3IEBAIHB1YmxpYzoKICAgICBXZWJWaWV3
KiB3ZWJWaWV3KCkgY29uc3QgeyByZXR1cm4gbV93ZWJWaWV3OyB9CiAKICAgICB2aXJ0dWFsIHZv
aWQgZm9ybVN0YXRlRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6Ok5vZGUqKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKFdlYkNvcmU6OkhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKIAogICAgIHZpcnR1YWwgUGFz
c093blB0cjxXZWJDb3JlOjpIVE1MUGFyc2VyUXVpcmtzPiBjcmVhdGVIVE1MUGFyc2VyUXVpcmtz
KCkgeyByZXR1cm4gMDsgfQogCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcCBi
L1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCmluZGV4IDNjZTRiZDYuLjRkMTczOWIgMTAwNjQ0Ci0t
LSBhL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1dlYktpdC93aW4vV2ViRnJhbWUuY3Bw
CkBAIC05OTksNiArOTk5LDIxIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6
OmZldGNoQXBwbGljYXRpb25JY29uKAogICAgIHJldHVybiBTX09LOwogfQogCitIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYkZyYW1lOjp2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVt
ZW50QnlJZChCU1RSIGlkLCBCU1RSKiByZXN1bHQpCit7CisgICAgaWYgKCFyZXN1bHQpCisgICAg
ICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUodGhpcyk7
CisgICAgaWYgKCFjb3JlRnJhbWUpCisgICAgICAgIHJldHVybiBFX0ZBSUw7CisgICAgRWxlbWVu
dCogZWxlbWVudCA9IGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQoU3RyaW5n
KGlkLCBTeXNTdHJpbmdMZW4oaWQpKSk7CisgICAgaWYgKCFlbGVtZW50IHx8ICFlbGVtZW50LT5p
c0Zvcm1Db250cm9sRWxlbWVudCgpKQorICAgICAgICByZXR1cm4gRV9GQUlMOworICAgIEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQqIGZvcm1Db250cm9sID0gc3RhdGljX2Nhc3Q8SFRNTEZvcm1Db250
cm9sRWxlbWVudCo+KGVsZW1lbnQpOworICAgICpyZXN1bHQgPSBCU3RyaW5nKGZvcm1Db250cm9s
LT52aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKSkucmVsZWFzZSgpOworICAgIHJldHVybiBTX09L
OworfQorCiAvLyBJV2ViRG9jdW1lbnRUZXh0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViRnJhbWU6OnN1cHBvcnRzVGV4dEVuY29kaW5nKCAKZGlmZiAtLWdpdCBhL1dlYktpdC93
aW4vV2ViRnJhbWUuaCBiL1dlYktpdC93aW4vV2ViRnJhbWUuaAppbmRleCBmNDk3M2VhLi41NmRh
ZjBlIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYkZyYW1lLmgKKysrIGIvV2ViS2l0L3dpbi9X
ZWJGcmFtZS5oCkBAIC0yNjQsNiArMjY0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSlNHbG9i
YWxDb250ZXh0UmVmIFNURE1FVEhPRENBTExUWVBFIGdsb2JhbENvbnRleHRGb3JTY3JpcHRXb3Js
ZChJV2ViU2NyaXB0V29ybGQqKTsKIAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSB2aXNpYmxlQ29udGVudFJlY3QoUkVDVCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSB2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZChCU1RS
IGlkLCBCU1RSKiByZXN1bHQpOwogCiAgICAgLy8gSVdlYkRvY3VtZW50VGV4dAogICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzdXBwb3J0c1RleHRFbmNvZGluZyggCmRpZmYg
LS1naXQgYS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwIGIvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcApp
bmRleCA0NTZjZTgzLi4zMGJhOWUwIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYlZpZXcuY3Bw
CisrKyBiL1dlYktpdC93aW4vV2ViVmlldy5jcHAKQEAgLTg4LDYgKzg4LDcgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL0ZyYW1lV2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HRElPYmplY3RDb3VudGVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxNZWRp
YUVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvSGlzdG9yeUl0ZW0uaD4KQEAgLTMyOCw2ICszMjksNyBAQCBXZWJWaWV3OjpXZWJWaWV3
KCkKICAgICAsIG1fZGlkQ2xvc2UoZmFsc2UpCiAgICAgLCBtX2luSU1FQ29tcG9zaXRpb24oMCkK
ICAgICAsIG1fdG9vbFRpcEh3bmQoMCkKKyAgICAsIG1fYmFsbG9vbkh3bmQoMCkKICAgICAsIG1f
Y2xvc2VXaW5kb3dUaW1lcih0aGlzLCAmV2ViVmlldzo6Y2xvc2VXaW5kb3dUaW1lckZpcmVkKQog
ICAgICwgbV90b3BMZXZlbFBhcmVudCgwKQogICAgICwgbV9kZWxldGVCYWNraW5nU3RvcmVUaW1l
ckFjdGl2ZShmYWxzZSkKQEAgLTM2NSw5ICszNjcsMTEgQEAgV2ViVmlldzo6fldlYlZpZXcoKQog
ewogICAgIGRlbGV0ZUJhY2tpbmdTdG9yZSgpOwogCi0gICAgLy8gdGhlIHRvb2x0aXAgd2luZG93
IG5lZWRzIHRvIGJlIGV4cGxpY2l0bHkgZGVzdHJveWVkIHNpbmNlIGl0IGlzbid0IGEgV1NfQ0hJ
TEQKKyAgICAvLyBUaGUgdG9vbHRpcCB3aW5kb3dzIG5lZWQgdG8gYmUgZXhwbGljaXRseSBkZXN0
cm95ZWQgc2luY2UgdGhleSBhcmVuJ3QgV1NfQ0hJTEQuCiAgICAgaWYgKDo6SXNXaW5kb3cobV90
b29sVGlwSHduZCkpCiAgICAgICAgIDo6RGVzdHJveVdpbmRvdyhtX3Rvb2xUaXBId25kKTsKKyAg
ICBpZiAoOjpJc1dpbmRvdyhtX2JhbGxvb25Id25kKSkKKyAgICAgICAgOjpEZXN0cm95V2luZG93
KG1fYmFsbG9vbkh3bmQpOwogCiAgICAgQVNTRVJUKCFtX3BhZ2UpOwogICAgIEFTU0VSVCghbV9w
cmVmZXJlbmNlcyk7CkBAIC0yMTA4LDYgKzIxMTIsNyBAQCBMUkVTVUxUIENBTExCQUNLIFdlYlZp
ZXc6OldlYlZpZXdXbmRQcm9jKEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFt
LAogICAgICAgICAgICAgLy8gSWYgd2UgYXJlIHBhbi1zY3JvbGxpbmcgd2hlbiB3ZSBsb3NlIGZv
Y3VzLCBzdG9wIHRoZSBwYW4gc2Nyb2xsaW5nLgogICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFu
ZGxlcigpLT5zdG9wQXV0b3Njcm9sbFRpbWVyKCk7CiAKKyAgICAgICAgICAgIHdlYlZpZXctPmhp
ZGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgV01fV0lORE9XUE9TQ0hBTkdFRDoKQEAgLTI2NDgsNiArMjY1Myw4NSBA
QCB2b2lkIFdlYlZpZXc6OnNldFRvb2xUaXAoY29uc3QgU3RyaW5nJiB0b29sVGlwKQogICAgIDo6
U2VuZE1lc3NhZ2UobV90b29sVGlwSHduZCwgVFRNX0FDVElWQVRFLCAhbV90b29sVGlwLmlzRW1w
dHkoKSwgMCk7CiB9CiAKK3N0YXRpYyB2b2lkIHNldHVwQmFsbG9vblRvb2xpbmZvKFRPT0xJTkZP
JiBpbmZvLCBIV05EIHdlYlZpZXcsIFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBpbmZvLmNiU2l6
ZSA9IHNpemVvZihUT09MSU5GTyk7CisgICAgLy8gV2UgdXNlIFRURl9UUkFDSyBpbiBvcmRlciB0
byBjb250cm9sIHRoZSB0aW1pbmcgb2Ygc2hvd2luZy9oaWRpbmcgYSBiYWxsb29uIHRvb2x0aXAu
CisgICAgaW5mby51RmxhZ3MgPSBUVEZfVFJBQ0sgfCBUVEZfQUJTT0xVVEUgfCBUVEZfSURJU0hX
TkQ7CisgICAgaW5mby5od25kID0gd2ViVmlldzsKKyAgICBpbmZvLmhpbnN0ID0gZ0luc3RhbmNl
OworICAgIGluZm8udUlkID0gcmVpbnRlcnByZXRfY2FzdDxVSU5UX1BUUj4od2ViVmlldyk7Cisg
ICAgaW5mby5scHN6VGV4dCA9IGNvbnN0X2Nhc3Q8VUNoYXIqPihtZXNzYWdlLmNoYXJhY3RlcnNX
aXRoTnVsbFRlcm1pbmF0aW9uKCkpOworICAgIEdldENsaWVudFJlY3Qod2ViVmlldywgJmluZm8u
cmVjdCk7Cit9CisKK3ZvaWQgV2ViVmlldzo6aGlkZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSgpCit7
CisgICAgaWYgKCFtX2JhbGxvb25Id25kKQorICAgICAgICByZXR1cm47CisgICAgbV9iYWxsb29u
TWVzc2FnZSA9IFN0cmluZygpOworICAgIFRPT0xJTkZPIGluZm8gPSB7MH07CisgICAgc2V0dXBC
YWxsb29uVG9vbGluZm8oaW5mbywgbV92aWV3V2luZG93LCBtX2JhbGxvb25NZXNzYWdlKTsKKyAg
ICA6OlNlbmRNZXNzYWdlKG1fYmFsbG9vbkh3bmQsIFRUTV9UUkFDS0FDVElWQVRFLCBGQUxTRSwg
cmVpbnRlcnByZXRfY2FzdDxMUEFSQU0+KCZpbmZvKSk7Cit9CisKK3ZvaWQgV2ViVmlldzo6dXBk
YXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGNvbnRyb2ws
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBpZiAoIW1fYmFsbG9vbkh3bmQpIHsKKyAg
ICAgICAgbV9iYWxsb29uSHduZCA9IDo6Q3JlYXRlV2luZG93RXgoCisgICAgICAgICAgICBXU19F
WF9UT1BNT1NULCBUT09MVElQU19DTEFTUywgMCwKKyAgICAgICAgICAgIFdTX1BPUFVQIHwgVFRT
X0FMV0FZU1RJUCB8IFRUU19CQUxMT09OIHwgVFRTX05PUFJFRklYLAorICAgICAgICAgICAgQ1df
VVNFREVGQVVMVCwgQ1dfVVNFREVGQVVMVCwgQ1dfVVNFREVGQVVMVCwgQ1dfVVNFREVGQVVMVCwK
KyAgICAgICAgICAgIG1fdmlld1dpbmRvdywgMCwgZ0luc3RhbmNlLCAwKTsKKyAgICAgICAgaWYg
KCFtX2JhbGxvb25Id25kKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBUT09MSU5GTyBp
bmZvID0gezB9OworICAgICAgICBzZXR1cEJhbGxvb25Ub29saW5mbyhpbmZvLCBtX3ZpZXdXaW5k
b3csIG1fYmFsbG9vbk1lc3NhZ2UpOworICAgICAgICA6OlNlbmRNZXNzYWdlKG1fYmFsbG9vbkh3
bmQsIFRUTV9BRERUT09MLCAwLCByZWludGVycHJldF9jYXN0PExQQVJBTT4oJmluZm8pKTsKKyAg
ICAgICAgOjpTZW5kTWVzc2FnZShtX2JhbGxvb25Id25kLCBUVE1fU0VUTUFYVElQV0lEVEgsIDAs
IG1heFRvb2xUaXBXaWR0aCk7CisKKyAgICAgICAgOjpTZXRXaW5kb3dQb3MobV9iYWxsb29uSHdu
ZCwgSFdORF9UT1AsIDAsIDAsIDAsIDAsCisgICAgICAgICAgICAgICAgICAgICAgIFNXUF9OT01P
VkUgfCBTV1BfTk9TSVpFIHwgU1dQX05PQUNUSVZBVEUpOworICAgIH0KKworICAgIGlmIChtZXNz
YWdlLmlzRW1wdHkoKSkgeworICAgICAgICBoaWRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBVcGRhdGUgdGhlIG1lc3NhZ2UuCisgICAg
Ym9vbCB3YXNBY3RpdmUgPSAhbV9iYWxsb29uTWVzc2FnZS5pc0VtcHR5KCk7CisgICAgLy8gSXMg
aXQgb2sgdG8gY2FsbCBUVE1fVVBEQVRFVElQVEVYVCA/CisgICAgaWYgKG1fYmFsbG9vbk1lc3Nh
Z2UgIT0gbWVzc2FnZSkgeworICAgICAgICBtX2JhbGxvb25NZXNzYWdlID0gbWVzc2FnZTsKKyAg
ICAgICAgVE9PTElORk8gaW5mbyA9IHswfTsKKyAgICAgICAgc2V0dXBCYWxsb29uVG9vbGluZm8o
aW5mbywgbV92aWV3V2luZG93LCBtX2JhbGxvb25NZXNzYWdlKTsKKyAgICAgICAgOjpTZW5kTWVz
c2FnZShtX2JhbGxvb25Id25kLCBUVE1fVVBEQVRFVElQVEVYVCwgMCwgcmVpbnRlcnByZXRfY2Fz
dDxMUEFSQU0+KCZpbmZvKSk7CisgICAgfQorCisgICAgLy8gRml4IHRoZSBsb2NhdGlvbi4KKyAg
ICBGbG9hdFF1YWQgY29ybmVycyA9IGNvbnRyb2wtPmdldFRyYW5zZm9ybWVkQ29ybmVycygpOwor
ICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gY29udHJvbC0+ZG9jdW1lbnQoKS0+dmlldygpOwor
ICAgIGlmIChjb3JuZXJzLmlzRW1wdHkoKSB8fCAhZnJhbWVWaWV3KQorICAgICAgICByZXR1cm47
CisgICAgRmxvYXRQb2ludCBib3R0b20gPSBjb3JuZXJzLnA0KCk7IC8vIGJvdHRvbS1sZWZ0Cisg
ICAgaWYgKGJvdHRvbS55KCkgPCBjb3JuZXJzLnAzKCkueSgpKSAvLyBib3R0b20tcmlnaHQKKyAg
ICAgICAgYm90dG9tID0gY29ybmVycy5wMygpOworICAgIGlmIChib3R0b20ueSgpIDwgY29ybmVy
cy5wMSgpLnkoKSkgLy8gdG9wLWxlZnQKKyAgICAgICAgYm90dG9tID0gY29ybmVycy5wMSgpOwor
ICAgIGlmIChib3R0b20ueSgpIDwgY29ybmVycy5wMigpLnkoKSkgLy8gdG9wLXJpZ2h0CisgICAg
ICAgIGJvdHRvbSA9IGNvcm5lcnMucDIoKTsKKyAgICBJbnRQb2ludCBib3R0b21JblNjcmVlbiA9
IGZyYW1lVmlldy0+Y29udGVudHNUb1NjcmVlbihJbnRSZWN0KHJvdW5kZWRJbnRQb2ludChib3R0
b20pLCBJbnRTaXplKDEsIDEpKSkubG9jYXRpb24oKTsKKyAgICA6OlNlbmRNZXNzYWdlKG1fYmFs
bG9vbkh3bmQsIFRUTV9UUkFDS1BPU0lUSU9OLCAwLCBNQUtFTFBBUkFNKGJvdHRvbUluU2NyZWVu
LngoKSwgYm90dG9tSW5TY3JlZW4ueSgpKSk7CisKKyAgICAvLyBTaG93IHRoZSBiYWxsb29uIHRv
b2x0aXAuCisgICAgaWYgKHdhc0FjdGl2ZSkKKyAgICAgICAgcmV0dXJuOworICAgIFRPT0xJTkZP
IGluZm8gPSB7MH07CisgICAgc2V0dXBCYWxsb29uVG9vbGluZm8oaW5mbywgbV92aWV3V2luZG93
LCBtX2JhbGxvb25NZXNzYWdlKTsKKyAgICA6OlNlbmRNZXNzYWdlKG1fYmFsbG9vbkh3bmQsIFRU
TV9UUkFDS0FDVElWQVRFLCBUUlVFLCByZWludGVycHJldF9jYXN0PExQQVJBTT4oJmluZm8pKTsK
K30KKwogSFJFU1VMVCBXZWJWaWV3Ojpub3RpZnlEaWRBZGRJY29uKElXZWJOb3RpZmljYXRpb24q
IG5vdGlmaWNhdGlvbikKIHsKICAgICBDT01QdHI8SVByb3BlcnR5QmFnPiBwcm9wZXJ0eUJhZzsK
ZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViVmlldy5oIGIvV2ViS2l0L3dpbi9XZWJWaWV3LmgK
aW5kZXggYTk5ZGYzYS4uOGE1OTEzNyAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJWaWV3LmgK
KysrIGIvV2ViS2l0L3dpbi9XZWJWaWV3LmgKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL1dLQ0FDRkxheWVyUmVuZGVyZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgog
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIGNsYXNz
IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3Q7CkBA
IC01MCw2ICs1MSwxMCBAQCBXZWJDb3JlOjpQYWdlKiBjb3JlKElXZWJWaWV3Kik7CiAKIGludGVy
ZmFjZSBJRHJvcFRhcmdldEhlbHBlcjsKIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSFRN
TEZvcm1Db250cm9sRWxlbWVudDsKK30KKwogY2xhc3MgV2ViVmlldyAKICAgICA6IHB1YmxpYyBJ
V2ViVmlldwogICAgICwgcHVibGljIElXZWJWaWV3UHJpdmF0ZQpAQCAtODQ5LDYgKzg1NCw3IEBA
IHB1YmxpYzoKICAgICBib29sIGlzUGFpbnRpbmcoKSBjb25zdCB7IHJldHVybiBtX3BhaW50Q291
bnQgPiAwOyB9CiAKICAgICB2b2lkIHNldFRvb2xUaXAoY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7
CisgICAgdm9pZCB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoV2ViQ29yZTo6SFRNTEZvcm1D
b250cm9sRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpOwogCiAgICAgdm9pZCByZWdp
c3RlckZvckljb25Ob3RpZmljYXRpb24oYm9vbCBsaXN0ZW4pOwogICAgIHZvaWQgZGlzcGF0Y2hE
aWRSZWNlaXZlSWNvbkZyb21XZWJGcmFtZShXZWJGcmFtZSopOwpAQCAtODkyLDYgKzg5OCw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBjYW5SZXNldFpvb20oYm9vbCBpc1RleHRPbmx5KTsKICAgICBI
UkVTVUxUIHJlc2V0Wm9vbShib29sIGlzVGV4dE9ubHkpOwogICAgIGJvb2wgYWN0aXZlKCk7Cisg
ICAgdm9pZCBoaWRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKCk7CiAKICAgICBlbnVtIFdpbmRvd3NU
b1BhaW50IHsgUGFpbnRXZWJWaWV3T25seSwgUGFpbnRXZWJWaWV3QW5kQ2hpbGRyZW4gfTsKICAg
ICB2b2lkIHBhaW50SW50b0JhY2tpbmdTdG9yZShXZWJDb3JlOjpGcmFtZVZpZXcqLCBIREMgYml0
bWFwREMsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVjdCwgV2luZG93c1RvUGFpbnQp
OwpAQCAtOTgxLDYgKzk4OCw4IEBAIHByb3RlY3RlZDoKICAgICB1bnNpZ25lZCBtX2luSU1FQ29t
cG9zaXRpb247CiAgICAgSFdORCBtX3Rvb2xUaXBId25kOwogICAgIFdlYkNvcmU6OlN0cmluZyBt
X3Rvb2xUaXA7CisgICAgSFdORCBtX2JhbGxvb25Id25kOworICAgIFdlYkNvcmU6OlN0cmluZyBt
X2JhbGxvb25NZXNzYWdlOwogICAgIGJvb2wgbV9kZWxldGVCYWNraW5nU3RvcmVUaW1lckFjdGl2
ZTsKIAogICAgIGJvb2wgbV90cmFuc3BhcmVudDsKZGlmZiAtLWdpdCBhL1dlYktpdC93eC9DaGFu
Z2VMb2cgYi9XZWJLaXQvd3gvQ2hhbmdlTG9nCmluZGV4IDI3NzdkNDIuLjA2ZGEzZTMgMTAwNjQ0
Ci0tLSBhL1dlYktpdC93eC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3d4L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE2IEBACisyMDEwLTA0LTAxICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGcmFt
ZXdvcmsgdG8gc2hvdyBmb3JtIHZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW52YWxpZCBjb250cm9s
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE3MTgK
KworICAgICAgICBBZGQgYSBzdHViIGZvciB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoKS4K
KworICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2hyb21lQ2xpZW50V3g6OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSk6Cisg
ICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5oOgorCiAyMDEwLTAzLTMxICBN
YXJjdXMgQnVsYWNoICA8YnVsYWNoQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBKZXJlbXkgT3Jsb3cuCmRpZmYgLS1naXQgYS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJv
bWVDbGllbnRXeC5jcHAgYi9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5j
cHAKaW5kZXggMGQ5YWI5Yi4uNzFlYmZmMCAxMDA2NDQKLS0tIGEvV2ViS2l0L3d4L1dlYktpdFN1
cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwCisrKyBiL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0No
cm9tZUNsaWVudFd4LmNwcApAQCAtNDQ3LDYgKzQ0NywxMSBAQCB2b2lkIENocm9tZUNsaWVudFd4
OjpjaG9vc2VJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgUGFz
c1JlZgogICAgIGNob29zZXItPmljb25Mb2FkZWQoSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKGZp
bGVuYW1lcykpOwogfQogCit2b2lkIENocm9tZUNsaWVudFd4Ojp1cGRhdGVGb3JtVmFsaWRhdGlv
bk1lc3NhZ2UoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6
OlN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogYm9vbCBDaHJvbWVDbGll
bnRXeDo6c2V0Q3Vyc29yKFBsYXRmb3JtQ3Vyc29ySGFuZGxlKQogewogICAgIG5vdEltcGxlbWVu
dGVkKCk7CmRpZmYgLS1naXQgYS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRX
eC5oIGIvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaAppbmRleCAwNzMz
MTA1Li42ZWNjZWVlIDEwMDY0NAotLS0gYS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVD
bGllbnRXeC5oCisrKyBiL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmgK
QEAgLTEzMSw2ICsxMzEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNob29zZUljb25G
b3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KTsK
IAogICAgIHZpcnR1YWwgdm9pZCBmb3JtU3RhdGVEaWRDaGFuZ2UoY29uc3QgTm9kZSopIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoV2ViQ29yZTo6SFRN
TEZvcm1Db250cm9sRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpOwogCiAgICAgdmly
dHVhbCBQYXNzT3duUHRyPEhUTUxQYXJzZXJRdWlya3M+IGNyZWF0ZUhUTUxQYXJzZXJRdWlya3Mo
KSB7IHJldHVybiAwOyB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dl
YktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCBiMTFkMDdkLi5kMTQ5NWRiIDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjggQEAKKzIwMTAtMDQtMDEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyYW1ld29y
ayB0byBzaG93IGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnZhbGlkIGNvbnRyb2xzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTcxOAorCisg
ICAgICAgIEFkZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdl
Rm9yRWxlbWVudEJ5SWQoKS4KKyAgICAgICAgV2luZG93cyBhbmQgTWFjIGhhdmUgd29ya2FibGUg
aW1wbGVtZW50YXRpb25zLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAodmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVu
dEJ5SWRDYWxsYmFjayk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVu
Y3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5j
cHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6dmlzaWJsZVZhbGlkYXRpb25NZXNz
YWdlRm9yRWxlbWVudEJ5SWQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRU
ZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjp2aXNp
YmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZCk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0
Q29udHJvbGxlcjo6dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHA6Cisg
ICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9y
RWxlbWVudEJ5SWQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250
cm9sbGVyV3guY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnZpc2libGVWYWxp
ZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKToKKwogMjAxMC0wNC0wMSAgSWx5YSBUaWtob25v
dnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBT
ZW1pa2hhdHNreS4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRl
c3RDb250cm9sbGVyLmNwcAppbmRleCA2OWFjZjVjLi44YzZkZTNjIDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC05NDYs
NiArOTQ2LDIwIEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWRD
YWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplCiAgICAgcmV0dXJuIEpTVmFsdWVN
YWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiB2aXNpYmxlVmFs
aWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFy
Z3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4
Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCisgICAgICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gZWxlbWVudElkKEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50
c1swXSwgZXhjZXB0aW9uKSk7CisgICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKKworICAgIExheW91
dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRy
b2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBtZXNzYWdlKGNvbnRyb2xsZXItPnZpc2libGVWYWxpZGF0aW9uTWVzc2Fn
ZUZvckVsZW1lbnRCeUlkKGVsZW1lbnRJZC5nZXQoKSkpOworICAgIGlmICghbWVzc2FnZS5nZXQo
KSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworICAgIHJl
dHVybiBKU1ZhbHVlTWFrZVN0cmluZyhjb250ZXh0LCBtZXNzYWdlLmdldCgpKTsKK30KKwogc3Rh
dGljIEpTVmFsdWVSZWYgc2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHNDYWxsYmFj
ayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVm
IHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3Vt
ZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgLy8gSGFzIG1hYyAmIHdpbmRv
d3MgaW1wbGVtZW50YXRpb24KQEAgLTE0OTgsNiArMTUxMiw3IEBAIEpTU3RhdGljRnVuY3Rpb24q
IExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJzaG93
V2ViSW5zcGVjdG9yIiwgc2hvd1dlYkluc3BlY3RvckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgInRlc3RPbnNjcmVlbiIsIHRlc3RPbnNjcmVlbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgInRlc3RSZXBhaW50IiwgdGVzdFJlcGFpbnRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7
ICJ2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZCIsIHZpc2libGVWYWxpZGF0
aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAid2Fp
dEZvclBvbGljeURlbGVnYXRlIiwgd2FpdEZvclBvbGljeURlbGVnYXRlQ2FsbGJhY2ssIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKICAgICAgICAgeyAid2FpdFVudGlsRG9uZSIsIHdhaXRVbnRpbERvbmVDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAogICAgICAgICB7ICJ3aW5kb3dDb3VudCIsIHdpbmRvd0NvdW50Q2FsbGJhY2ssIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5oCmluZGV4IDI5MWZlZjIuLjFmNDVkOTAgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtOTUsNyArOTUsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRYU1NBdWRpdG9yRW5hYmxlZChib29sIGZsYWcpOwogICAgIHZvaWQgc2V0
RnJhbWVGbGF0dGVuaW5nRW5hYmxlZChib29sIGVuYWJsZSk7CiAgICAgdm9pZCBzZXRTcGF0aWFs
TmF2aWdhdGlvbkVuYWJsZWQoYm9vbCBlbmFibGUpOwotCisgICAgSlNTdHJpbmdSZWYgdmlzaWJs
ZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWQpOwogICAgIHZv
aWQgd2FpdEZvclBvbGljeURlbGVnYXRlKCk7CiAgICAgc2l6ZV90IHdlYkhpc3RvcnlJdGVtQ291
bnQoKTsKICAgICB1bnNpZ25lZCB3b3JrZXJUaHJlYWRDb3VudCgpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3Rr
LmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxl
ckd0ay5jcHAKaW5kZXggNjg2ZjhlNC4uZTY5YzE1MiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAorKysgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCkBA
IC02MzYsMyArNjM2LDkgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YXBpVGVzdEdvVG9D
dXJyZW50QmFja0ZvcndhcmRJdGVtKCkKIHsKIAogfQorCitKU1N0cmluZ1JlZiBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoSlNTdHJp
bmdSZWYgaWQpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAgIHJldHVybiAw
OworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRl
c3RDb250cm9sbGVyTWFjLm1tIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91
dFRlc3RDb250cm9sbGVyTWFjLm1tCmluZGV4IDUzNDQ5NWUuLmE5YzI5YTEgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5t
bQorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xs
ZXJNYWMubW0KQEAgLTcwNSwzICs3MDUsOSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjph
cGlUZXN0R29Ub0N1cnJlbnRCYWNrRm9yd2FyZEl0ZW0oKQogICAgIFdlYlZpZXcgKnZpZXcgPSBb
bWFpbkZyYW1lIHdlYlZpZXddOwogICAgIFt2aWV3IGdvVG9CYWNrRm9yd2FyZEl0ZW06W1t2aWV3
IGJhY2tGb3J3YXJkTGlzdF0gY3VycmVudEl0ZW1dXTsKIH0KKworSlNTdHJpbmdSZWYgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKEpT
U3RyaW5nUmVmIGlkKQoreworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaWRDRihBZG9wdENG
LCBKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBpZCkpOworICAgIHJl
dHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpW21haW5GcmFtZSB2
aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZDooTlNTdHJpbmcqKWlkQ0YuZ2V0
KCldKTsKK30KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91
dFRlc3RDb250cm9sbGVyUXQuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5
b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKaW5kZXggYjY0ODBjMi4uYjljZDRlNiAxMDA2NDQKLS0t
IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5j
cHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xs
ZXJRdC5jcHAKQEAgLTU0MSw1ICs1NDEsMTEgQEAgYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
Y2FsbFNob3VsZENsb3NlT25XZWJWaWV3KCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK0pTU3Ry
aW5nUmVmIExheW91dFRlc3RDb250cm9sbGVyOjp2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JF
bGVtZW50QnlJZChKU1N0cmluZ1JlZiBpZCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRo
aXMuCisgICAgcmV0dXJuIDA7Cit9CisKIGNvbnN0IHVuc2lnbmVkIExheW91dFRlc3RDb250cm9s
bGVyOjptYXhWaWV3V2lkdGggPSA4MDA7CiBjb25zdCB1bnNpZ25lZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6bWF4Vmlld0hlaWdodCA9IDYwMDsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAgYi9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCmluZGV4IDFjMTIx
YzMuLmUwMDgyYzAgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9M
YXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcApAQCAtMTE5NiwzICsxMTk2LDE2IEBA
IHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFwaVRlc3RHb1RvQ3VycmVudEJhY2tGb3J3YXJk
SXRlbSgpCiAgICAgQk9PTCBzdWNjZXNzOwogICAgIHdlYlZpZXctPmdvVG9CYWNrRm9yd2FyZEl0
ZW0oaXRlbS5nZXQoKSwgJnN1Y2Nlc3MpOwogfQorCitKU1N0cmluZ1JlZiBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoSlNTdHJpbmdS
ZWYgaWQpCit7CisgICAgQ09NUHRyPElXZWJGcmFtZVByaXZhdGU+IGZyYW1lUHJpdmF0ZShRdWVy
eSwgZnJhbWUpOworICAgIGlmICghZnJhbWVQcml2YXRlKQorICAgICAgICByZXR1cm4gMDsKKyAg
ICBCU1RSIG1lc3NhZ2VCU1RSOworICAgIGlmIChGQUlMRUQoZnJhbWVQcml2YXRlLT52aXNpYmxl
VmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZChic3RyVChpZCkuR2V0QlNUUigpLCAmbWVz
c2FnZUJTVFIpKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgSlNTdHJpbmdSZWYgbWVzc2FnZUpT
ID0gSlNTdHJpbmdDcmVhdGVXaXRoQlNUUihtZXNzYWdlQlNUUik7CisgICAgU3lzRnJlZVN0cmlu
ZyhtZXNzYWdlQlNUUik7CisgICAgcmV0dXJuIG1lc3NhZ2VKUzsKK30KZGlmZiAtLWdpdCBhL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwIGIv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAK
aW5kZXggZmY4YzE2Yy4uOWM3OWNkZCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKQEAgLTQwMSwzICs0MDEs
OSBAQCBib29sIExheW91dFRlc3RDb250cm9sbGVyOjpjYWxsU2hvdWxkQ2xvc2VPbldlYlZpZXco
KQogewogICAgIHJldHVybiBmYWxzZTsKIH0KKworSlNTdHJpbmdSZWYgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKEpTU3RyaW5nUmVm
IGlkKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KKyAgICByZXR1cm4gMDsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58248</attachid>
            <date>2010-06-09 08:44:17 -0700</date>
            <delta_ts>2010-06-09 09:14:25 -0700</delta_ts>
            <desc>Patch (rev.5; remove Windows impl.)</desc>
            <filename>bug-31718-20100610004415.patch</filename>
            <type>text/plain</type>
            <size>59128</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmNGViN2UwNzA4ZTY2NTdmNGZjM2Y0MTBiOGE5OTNkNWQ1NDJmN2I1Li5mMThhYmI1
Mjk5OTVmNjFmZTUxZTkzMjY3NmJiNjZhNDY3NzViOTRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTAtMDQtMDEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyYW1ld29yayB0byBzaG93
IGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnZhbGlkIGNvbnRyb2xzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTcxOAorCisgICAgICAgIEFk
ZCBhIHRlc3QgdG8gY2hlY2sgYSB2aXNpYmxlIHZhbGlkYXRpb24gbWVzc2FnZS4KKyAgICAgICAg
VGhlIG1lc3NhZ2Ugc2hvdWxkIGJlIGF2YWlsYWJsZSBvbmx5IHdoZW4gdGhlIGNvbnRyb2wgaGFz
IGZvY3VzLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvdmlzaWJsZS12YWxp
ZGF0aW9uLW1lc3NhZ2UuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvdmlzaWJsZS12
YWxpZGF0aW9uLW1lc3NhZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zv
cm1zL3Zpc2libGUtdmFsaWRhdGlvbi1tZXNzYWdlLmh0bWw6IEFkZGVkLgorCiAyMDEwLTA2LTA4
ICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
Tmlrb2xhcyBaaW1tZXJtYW5uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9z
Y3JpcHQtdGVzdHMvdmlzaWJsZS12YWxpZGF0aW9uLW1lc3NhZ2UuanMgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy92aXNpYmxlLXZhbGlkYXRpb24tbWVzc2FnZS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44OTQzZGE4MmM1NDkzNjNjMTBjNzQwYmUwNjE2MGNiNTk3NTUyZmE2Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvdmlzaWJsZS12
YWxpZGF0aW9uLW1lc3NhZ2UuanMKQEAgLTAsMCArMSwzOCBAQAorZGVzY3JpcHRpb24oJ1Rlc3Qg
Zm9yIHZhbGlkYXRpb24gbWVzc2FnZSByZXF1ZXN0cyBmcm9tIGFuIEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQuJyk7CisKK3ZhciBwYXJlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
K2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocGFyZW50KTsKK3BhcmVudC5pbm5lckhUTUw9ICc8
Zm9ybT4nCisgICAgKyAnPGlucHV0IGlkPWkxIG5hbWU9aTEgcmVxdWlyZWQ+JworICAgICsgJzwv
Zm9ybT4nOworCit2YXIgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaTEnKTsKK2Rl
YnVnKCdJbnZhbGlkIGFuZCBubyBmb2N1cycpOworc2hvdWxkQmVGYWxzZSgnaW5wdXQudmFsaWRp
dHkudmFsaWQnKTsKK3Nob3VsZEJlVHJ1ZSgnaW5wdXQudmFsaWRhdGlvbk1lc3NhZ2UubGVuZ3Ro
ID4gMCcpOworc2hvdWxkQmUoJ2xheW91dFRlc3RDb250cm9sbGVyLnZpc2libGVWYWxpZGF0aW9u
TWVzc2FnZUZvckVsZW1lbnRCeUlkKCJpMSIpJywgJyIiJyk7CisKK2RlYnVnKCdJbnZhbGlkIGFu
ZCBmb2N1c2VkJyk7CitpbnB1dC5mb2N1cygpOworc2hvdWxkQmUoJ2xheW91dFRlc3RDb250cm9s
bGVyLnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKCJpMSIpJywgJ2lucHV0
LnZhbGlkYXRpb25NZXNzYWdlJyk7CisKK2RlYnVnKCdJbnZhbGlkLCBmb2N1c2VkLCBhbmQgd2hp
dGVzcGFjZS1vbmx5IGN1c3RvbSBtZXNzYWdlJyk7CitpbnB1dC5zZXRDdXN0b21WYWxpZGl0eSgi
ICAgIik7CitpbnB1dC5ibHVyKCk7CitpbnB1dC5mb2N1cygpOworc2hvdWxkQmUoJ2xheW91dFRl
c3RDb250cm9sbGVyLnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKCJpMSIp
JywgJyIiJyk7CisKK2RlYnVnKCdJbnZhbGlkLCBmb2N1c2VkLCBhbmQgdGl0bGUgYXR0cmlidXRl
Jyk7CitpbnB1dC5zZXRDdXN0b21WYWxpZGl0eSgiIik7CitpbnB1dC50aXRsZSA9ICdZb3UgbmVl
ZCB0byBzcGVjaWZ5IGEgdmFsdWUuJzsKK2lucHV0LmJsdXIoKTsKK2lucHV0LmZvY3VzKCk7Citz
aG91bGRCZSgnbGF5b3V0VGVzdENvbnRyb2xsZXIudmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9y
RWxlbWVudEJ5SWQoImkxIiknLCAnaW5wdXQudmFsaWRhdGlvbk1lc3NhZ2UgKyAiXFxuIiArIGlu
cHV0LnRpdGxlJyk7CisKK2RlYnVnKCdJbnZhbGlkLCBmb2N1c2VkLCB0aXRsZSBhdHRyaWJ1dGUs
IGFuZCB3aGl0ZXNwYWNlLW9ubHkgY3VzdG9tIG1lc3NhZ2UnKTsKK2lucHV0LnNldEN1c3RvbVZh
bGlkaXR5KCIgICAiKTsKK2lucHV0LmJsdXIoKTsKK2lucHV0LmZvY3VzKCk7CitzaG91bGRCZSgn
bGF5b3V0VGVzdENvbnRyb2xsZXIudmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5
SWQoImkxIiknLCAnIiInKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Zpc2libGUtdmFsaWRhdGlvbi1tZXNzYWdl
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdmlzaWJsZS12YWxpZGF0aW9u
LW1lc3NhZ2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzZGViMDczMWFkZjBlMWY3OWM4NjRm
NjMxMDE1M2Q3YzJkYTdiZmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL3Zpc2libGUtdmFsaWRhdGlvbi1tZXNzYWdlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIx
IEBACitUZXN0IGZvciB2YWxpZGF0aW9uIG1lc3NhZ2UgcmVxdWVzdHMgZnJvbSBhbiBIVE1MRm9y
bUNvbnRyb2xFbGVtZW50LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworSW52YWxp
ZCBhbmQgbm8gZm9jdXMKK1BBU1MgaW5wdXQudmFsaWRpdHkudmFsaWQgaXMgZmFsc2UKK1BBU1Mg
aW5wdXQudmFsaWRhdGlvbk1lc3NhZ2UubGVuZ3RoID4gMCBpcyB0cnVlCitQQVNTIGxheW91dFRl
c3RDb250cm9sbGVyLnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKCJpMSIp
IGlzICIiCitJbnZhbGlkIGFuZCBmb2N1c2VkCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnZp
c2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKCJpMSIpIGlzIGlucHV0LnZhbGlk
YXRpb25NZXNzYWdlCitJbnZhbGlkLCBmb2N1c2VkLCBhbmQgd2hpdGVzcGFjZS1vbmx5IGN1c3Rv
bSBtZXNzYWdlCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnZpc2libGVWYWxpZGF0aW9uTWVz
c2FnZUZvckVsZW1lbnRCeUlkKCJpMSIpIGlzICIiCitJbnZhbGlkLCBmb2N1c2VkLCBhbmQgdGl0
bGUgYXR0cmlidXRlCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnZpc2libGVWYWxpZGF0aW9u
TWVzc2FnZUZvckVsZW1lbnRCeUlkKCJpMSIpIGlzIGlucHV0LnZhbGlkYXRpb25NZXNzYWdlICsg
IlxuIiArIGlucHV0LnRpdGxlCitJbnZhbGlkLCBmb2N1c2VkLCB0aXRsZSBhdHRyaWJ1dGUsIGFu
ZCB3aGl0ZXNwYWNlLW9ubHkgY3VzdG9tIG1lc3NhZ2UKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xs
ZXIudmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoImkxIikgaXMgIiIKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Zpc2libGUtdmFsaWRhdGlvbi1tZXNzYWdlLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Zpc2libGUtdmFsaWRhdGlvbi1tZXNzYWdlLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGI5MjgyNTJjOTYzYzNlNmUyZDFjMzdjZGEzNjUzMjEwOTliYWQ2Mwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdmlzaWJsZS12YWxpZGF0
aW9uLW1lc3NhZ2UuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy92aXNpYmxlLXZh
bGlkYXRpb24tbWVzc2FnZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YWMwYTU2MTNiMjg1MmJlNjc2NzRjNGQ4N2Y2NzM3MGIwNGQxNDE3NS4uZjdjNzMyNTQwYjk5Y2Yy
YzM3ZjY4NjQ5YmE0OGZlOWM2ZDM2OGQ1MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAxMC0wNC0wMSAgS2Vu
dCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgRnJhbWV3b3JrIHRvIHNob3cgZm9ybSB2YWxpZGF0aW9u
IG1lc3NhZ2UgZm9yIGludmFsaWQgY29udHJvbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNzE4CisKKyAgICAgICAgQW4gSFRNTEZvcm1Db250cm9s
RWxlbWVudCBjYWxscyBDaHJvbWU6OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSgpCisgICAg
ICAgIHdoZW4gaXQgZ2V0cyBmb2N1cyBhbmQgbG9vc2VzIGZvY3VzLiBDaHJvbWU6OnVwZGF0ZUZv
cm1WYWxpZGF0aW9uTWVzc2FnZSgpCisgICAgICAgIG1hbmFnZXMgcmVxdWVzdHMgZnJvbSBtdWx0
aXBsZSBIVE1MRm9ybUNvbnRyb2xFbGVtZW50IGluc3RhbmNlczoKKyAgICAgICAgLSBQZXJpb2Rp
Y2FsbHkgY2FsbHMgQ2hyb21lQ2xpZW50Ojp1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoKQor
ICAgICAgICAgIHRvIGZvbGxvdyBlbGVtZW50IHBvc2l0aW9uIGNoYW5nZS4KKyAgICAgICAgLSBJ
ZiBhIG1lc3NhZ2UgaXMgc2hvd24gZm9yIGEgY29udHJvbCBhbmQgdGhlIGZvY3VzIGlzIGNoYW5n
ZWQgdG8KKyAgICAgICAgICBhbm90aGVyIGludmFsaWQgY29udHJvbCwgaGlkZSB0aGUgY3VycmVu
dCBtZXNzYWdlLCB3YWl0IGEgbGl0dGxlLAorICAgICAgICAgIHRoZW4gc2hvdyBhIG1lc3NhZ2Ug
Zm9yIGFub3RoZXIgY29udHJvbC4KKyAgICAgICAgLSBJZiBhIG1lc3NhZ2UgZm9yIGEgY29udHJv
bCBpcyBzaG93biBhbmQgYW5vdGhlciBtZXNzYWdlIGZvciB0aGUKKyAgICAgICAgICBjb250cm9s
IGlzIHJlcXVlc3RlZCwgaGlkZSB0aGUgY3VycmVudCBtZXNzYWdlLCB3YWl0IGEgbGl0dGxlLAor
ICAgICAgICAgIHRoZW4gc2hvdyB0aGUgbmV3IG1lc3NhZ2UuCisKKyAgICAgICAgVGVzdDogZmFz
dC9mb3Jtcy92aXNpYmxlLXZhbGlkYXRpb24tbWVzc2FnZS5odG1sCisKKyAgICAgICAgKiBodG1s
L0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1D
b250cm9sRWxlbWVudDo6ZGV0YWNoKToKKyAgICAgICAgICBBZGQgYSBjYWxsIHRvIHVwZGF0ZVZp
c2libGVWYWxpZGF0aW9uTWVzc2FnZSgpLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250
cm9sRWxlbWVudDo6c2V0TmVlZHNXaWxsVmFsaWRhdGVDaGVjayk6IGRpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6dXBkYXRlVmlzaWJsZVZhbGlkYXRpb25N
ZXNzYWdlKToKKyAgICAgICAgICBBZGRlZC4gQ2FsbHMgQ2hyb21lOjp1cGRhdGVGb3JtVmFsaWRh
dGlvbk1lc3NhZ2UoKSBpZiB0aGUgc3RhdHVzCisgICAgICAgICAgaXMgY2hhbmdlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldE5lZWRzVmFsaWRpdHlDaGVj
ayk6CisgICAgICAgICAgQWRkIGEgY2FsbCB0byB1cGRhdGVWaXNpYmxlVmFsaWRhdGlvbk1lc3Nh
Z2UoKS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRpc3BhdGNo
Rm9jdXNFdmVudCk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxl
bWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQpOiBkaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1l
bnQ6OnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgICAgQWRkZWQgdGhlIGRlY2xh
cmF0aW9uLgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkVtcHR5Q2hyb21lQ2xpZW50Ojp1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6RW1wdHlDaHJvbWVDbGllbnQ6OnZhbGlkYXRpb25NZXNzYWdlVXBkYXRl
SW50ZXJ2YWxTZWNvbmQpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlDaHJvbWVDbGllbnQ6OnZh
bGlkYXRpb25NZXNzYWdlVXBkYXRlQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlDaHJv
bWVDbGllbnQ6OnZhbGlkYXRpb25NZXNzYWdlQmxhY2tvdXRTZWNvbmQpOgorICAgICAgICAgIEFk
ZGVkIGFzIG1vY2tzLgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNocm9tZTo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKTogU2VlIGFib3ZlLgorICAg
ICAgICAoV2ViQ29yZTo6Q2hyb21lOjpzdGFydFZhbGlkYXRpb25NZXNzYWdlQmxhY2tvdXQpOgor
ICAgICAgICAgIEEgaGVscGVyIGZvciB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoKS4KKyAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZTo6dmFsaWRhdGlvbk1lc3NhZ2VUaW1lckZpcmVkKToKKyAg
ICAgICAgICBBIGhlbHBlciBmb3IgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKCkuCisgICAg
ICAgICogcGFnZS9DaHJvbWUuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorCiAy
MDEwLTA2LTA5ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGlyayBTY2h1bHplLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVs
ZW1lbnQuY3BwCmluZGV4IGZhNWQ5NTdhMDVkOWE5NDc2MjBmNDg4OWE0MTYyNmYzMzJlMjVmM2Qu
LmM4N2JiYjQ5OGNjMjQ4NTYyNjdkN2ZiYmNmOTk3MTkxM2E2YTQ0NjYgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTc2LDYgKzc2LDEyIEBAIEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQ6On5IVE1MRm9ybUNvbnRyb2xFbGVtZW50KCkKICAgICAgICAgbV9mb3JtLT5y
ZW1vdmVGb3JtRWxlbWVudCh0aGlzKTsKIH0KIAordm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50
OjpkZXRhY2goKQoreworICAgIEhUTUxFbGVtZW50OjpkZXRhY2goKTsKKyAgICB1cGRhdGVWaXNp
YmxlVmFsaWRhdGlvbk1lc3NhZ2UoKTsKK30KKwogYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50
Ojpmb3JtTm9WYWxpZGF0ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuICFnZXRBdHRyaWJ1dGUoZm9y
bW5vdmFsaWRhdGVBdHRyKS5pc051bGwoKTsKQEAgLTMyNSw3ICszMzEsNyBAQCB2b2lkIEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQ6OnNldE5lZWRzV2lsbFZhbGlkYXRlQ2hlY2soKQogICAgIG1fd2ls
bFZhbGlkYXRlSW5pdGlhbGl6ZWQgPSB0cnVlOwogICAgIG1fd2lsbFZhbGlkYXRlID0gbmV3V2ls
bFZhbGlkYXRlOwogICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKLSAgICAvLyBGSVhNRTogU2hv
dy9oaWRlIGEgdmFsaWRhdGlvbiBtZXNzYWdlLgorICAgIHVwZGF0ZVZpc2libGVWYWxpZGF0aW9u
TWVzc2FnZSgpOwogfQogCiBTdHJpbmcgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6dmFsaWRhdGlv
bk1lc3NhZ2UoKQpAQCAtMzMzLDYgKzMzOSwyOCBAQCBTdHJpbmcgSFRNTEZvcm1Db250cm9sRWxl
bWVudDo6dmFsaWRhdGlvbk1lc3NhZ2UoKQogICAgIHJldHVybiB2YWxpZGl0eSgpLT52YWxpZGF0
aW9uTWVzc2FnZSgpOwogfQogCit2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnVwZGF0ZVZp
c2libGVWYWxpZGF0aW9uTWVzc2FnZSgpCit7CisgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCkt
PnBhZ2UoKTsKKyAgICBTdHJpbmcgbWVzc2FnZTsKKyAgICAvLyBXZSBjYW4ndCB1c2UgZm9jdXNl
ZCgpLiBUaGUgZm9jdXNlZCgpIHN0YXRlIGlzIHVwZGF0ZWQgYWZ0ZXIgZGlzcGF0Y2hGb2N1c0V2
ZW50KCkuCisgICAgaWYgKHBhZ2UgJiYgZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKSA9PSB0aGlz
ICYmIHJlbmRlcmVyKCkgJiYgd2lsbFZhbGlkYXRlKCkpIHsKKyAgICAgICAgbWVzc2FnZSA9IHZh
bGlkYXRpb25NZXNzYWdlKCkuc3RyaXBXaGl0ZVNwYWNlKCk7CisgICAgICAgIC8vIEhUTUw1IHNw
ZWNpZmljYXRpb24gZG9lc24ndCBhc2sgVUEgdG8gc2hvdyB0aGUgdGl0bGUgYXR0cmlidXRlIHZh
bHVlCisgICAgICAgIC8vIHdpdGggdGhlIHZhbGlkYXRpb25NZXNzYWdlLiAgSG93ZXZlciwgdGhp
cyBiZWhhdmlvciBpcyBzYW1lIGFzIE9wZXJhCisgICAgICAgIC8vIGFuZCB0aGUgc3BlY2lmaWNh
dGlvbiBkZXNjcmliZXMgc3VjaCBiZWhhdmlvciBhcyBhbiBleGFtcGxlLgorICAgICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIHRpdGxlID0gZ2V0QXR0cmlidXRlKHRpdGxlQXR0cik7CisgICAgICAg
IGlmICghbWVzc2FnZS5pc0VtcHR5KCkgJiYgIXRpdGxlLmlzRW1wdHkoKSkgeworICAgICAgICAg
ICAgbWVzc2FnZS5hcHBlbmQoJ1xuJyk7CisgICAgICAgICAgICBtZXNzYWdlLmFwcGVuZCh0aXRs
ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKG1fdmlzaWJsZVZhbGlkYXRpb25NZXNzYWdl
ID09IG1lc3NhZ2UpCisgICAgICAgIHJldHVybjsKKyAgICBwYWdlLT5jaHJvbWUoKS0+dXBkYXRl
Rm9ybVZhbGlkYXRpb25NZXNzYWdlKHRoaXMsIG1lc3NhZ2UpOworICAgIG1fdmlzaWJsZVZhbGlk
YXRpb25NZXNzYWdlID0gbWVzc2FnZTsKK30KKwogYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50
OjpjaGVja1ZhbGlkaXR5KFZlY3RvcjxSZWZQdHI8SFRNTEZvcm1Db250cm9sRWxlbWVudD4gPiog
dW5oYW5kbGVkSW52YWxpZENvbnRyb2xzKQogewogICAgIGlmICghd2lsbFZhbGlkYXRlKCkgfHwg
aXNWYWxpZEZvcm1Db250cm9sRWxlbWVudCgpKQpAQCAtMzYyLDcgKzM5MCw5IEBAIHZvaWQgSFRN
TEZvcm1Db250cm9sRWxlbWVudDo6c2V0TmVlZHNWYWxpZGl0eUNoZWNrKCkKICAgICAgICAgc2V0
TmVlZHNTdHlsZVJlY2FsYygpOwogICAgIH0KICAgICBtX2lzVmFsaWQgPSBuZXdJc1ZhbGlkOwot
ICAgIC8vIEZJWE1FOiBzaG93L2hpZGUgYSB2YWxpZGF0aW9uIG1lc3NhZ2UuCisgICAgLy8gQ2Fs
bHMgaXQgZXZlbiBpZiBtX2lzVmFsaWQgaXMgbm90IGNoYW5nZWQKKyAgICAvLyBiZWNhdXNlIGEg
dmFsaWRhdGlvbiBtZXNzYWdlIGNhbiBiZSBjaGFnbmVkLgorICAgIHVwZGF0ZVZpc2libGVWYWxp
ZGF0aW9uTWVzc2FnZSgpOwogfQogCiB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldEN1
c3RvbVZhbGlkaXR5KGNvbnN0IFN0cmluZyYgZXJyb3IpCkBAIC0zNzYsNiArNDA2LDcgQEAgdm9p
ZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZlbnQoKQogICAgICAgICBk
b2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+Zm9ybURpZEZvY3VzKHRoaXMp
OwogCiAgICAgSFRNTEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudCgpOworICAgIHVwZGF0ZVZp
c2libGVWYWxpZGF0aW9uTWVzc2FnZSgpOwogfQogCiB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQ6OmRpc3BhdGNoQmx1ckV2ZW50KCkKQEAgLTM4NCw2ICs0MTUsNyBAQCB2b2lkIEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KCkKICAgICAgICAgZG9jdW1lbnQoKS0+
cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPmZvcm1EaWRCbHVyKHRoaXMpOwogCiAgICAgSFRN
TEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KCk7CisgICAgdXBkYXRlVmlzaWJsZVZhbGlkYXRp
b25NZXNzYWdlKCk7CiB9CiAKIEhUTUxGb3JtRWxlbWVudCogSFRNTEZvcm1Db250cm9sRWxlbWVu
dDo6dmlydHVhbEZvcm0oKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgK
aW5kZXggYjk2MDM4MTJkZjU5M2Q3Njc2MmRiZGVhMTg2ZWVlOTQxMDhhZDI2Ny4uMWE3MDJmNTk2
YWRhNTAyNTJjN2FjOWM5NGYwMWMzYTZiNjA5ZTkxMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250
cm9sRWxlbWVudC5oCkBAIC04OCw2ICs4OCw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9v
bCB3aWxsVmFsaWRhdGUoKSBjb25zdDsKICAgICBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2UoKTsK
KyAgICAvLyBGb3IgdGVzdGluZy4KKyAgICBTdHJpbmcgdmlzaWJsZVZhbGlkYXRpb25NZXNzYWdl
KCkgeyByZXR1cm4gbV92aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2U7IH0KICAgICBib29sIGNoZWNr
VmFsaWRpdHkoVmVjdG9yPFJlZlB0cjxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PiA+KiB1bmhhbmRs
ZWRJbnZhbGlkQ29udHJvbHMgPSAwKTsKICAgICAvLyBUaGlzIG11c3QgYmUgY2FsbGVkIHdoZW4g
YSB2YWxpZGF0aW9uIGNvbnN0cmFpbnQgb3IgY29udHJvbCB2YWx1ZSBpcyBjaGFuZ2VkLgogICAg
IHZvaWQgc2V0TmVlZHNWYWxpZGl0eUNoZWNrKCk7CkBAIC0xMTgsNiArMTIwLDcgQEAgcHJvdGVj
dGVkOgogCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRm9jdXNFdmVudCgpOwogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaEJsdXJFdmVudCgpOworICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsK
IAogICAgIHZvaWQgcmVtb3ZlRnJvbUZvcm0oKTsKICAgICAvLyBUaGlzIG11c3QgYmUgY2FsbGVk
IGFueSB0aW1lIHRoZSByZXN1bHQgb2Ygd2lsbFZhbGlkYXRlKCkgaGFzIGNoYW5nZWQuCkBAIC0x
NDAsOSArMTQzLDExIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBIVE1MRm9ybUVsZW1lbnQqIHZp
cnR1YWxGb3JtKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzRGVmYXVsdEJ1dHRvbkZvckZv
cm0oKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZEZvcm1Db250cm9sRWxlbWVudCgp
OworICAgIHZvaWQgdXBkYXRlVmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlKCk7CiAKICAgICBIVE1M
Rm9ybUVsZW1lbnQqIG1fZm9ybTsKICAgICBPd25QdHI8VmFsaWRpdHlTdGF0ZT4gbV92YWxpZGl0
eVN0YXRlOworICAgIFN0cmluZyBtX3Zpc2libGVWYWxpZGF0aW9uTWVzc2FnZTsKICAgICBib29s
IG1fZGlzYWJsZWQgOiAxOwogICAgIGJvb2wgbV9yZWFkT25seSA6IDE7CiAgICAgYm9vbCBtX3Jl
cXVpcmVkIDogMTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKaW5kZXggYzYzMDkzMTY4M2UzZjMzNjE4ZTc3
MmEzMDViYjNiZDYyMDY4ZDJhOS4uMWM2ZTQ2ZjdiYjYzZGFlZDFlYjVjYTIwN2ViZDdlNzQyNjhj
MjExZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTE1MCw2ICsxNTAsMTAgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB2b2lkIGZvcm1EaWRGb2N1cyhjb25zdCBOb2RlKikgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGZvcm1EaWRCbHVyKGNvbnN0IE5vZGUqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqLCBjb25z
dCBTdHJpbmcmKSB7fQorICAgIHZpcnR1YWwgZG91YmxlIHZhbGlkYXRpb25NZXNzYWdlVXBkYXRl
SW50ZXJ2YWxTZWNvbmQoKSB7IHJldHVybiAxOyB9CisgICAgdmlydHVhbCBpbnQgdmFsaWRhdGlv
bk1lc3NhZ2VVcGRhdGVDb3VudChjb25zdCBTdHJpbmcmKSB7IHJldHVybiAxOyB9CisgICAgdmly
dHVhbCBkb3VibGUgdmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29uZCgpIHsgcmV0dXJuIDE7
IH0KIAogICAgIHZpcnR1YWwgUGFzc093blB0cjxIVE1MUGFyc2VyUXVpcmtzPiBjcmVhdGVIVE1M
UGFyc2VyUXVpcmtzKCkgeyByZXR1cm4gMDsgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lLmNwcCBiL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCmluZGV4IDAxMjQyMTFjYWQyYjll
ZTAyOTQzNGQ1NTBkMmU0NjczMDVmNzQ0N2UuLjQzNzg3NWI1NWU0NTQwNWZiY2IxOGMwMzhjNjM5
NGI1ZmRkY2FkM2MgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCisrKyBiL1dl
YkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC00MTEsNiArNDExLDc5IEBAIHZvaWQgQ2hyb21lOjpz
ZXRUb29sVGlwKGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKICAgICBtX2NsaWVudC0+c2V0
VG9vbFRpcCh0b29sVGlwLCB0b29sVGlwRGlyZWN0aW9uKTsKIH0KIAordm9pZCBDaHJvbWU6OnVw
ZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBjb250cm9s
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgQVNTRVJUKGNvbnRyb2wpOworICAgIGNv
bnRyb2wtPmdldFRyYW5zZm9ybWVkQ29ybmVycygpOworICAgIGlmICghbV92YWxpZGF0aW9uTWVz
c2FnZVRpbWVyKQorICAgICAgICBtX3ZhbGlkYXRpb25NZXNzYWdlVGltZXIuc2V0KG5ldyBUaW1l
cjxDaHJvbWU+KHRoaXMsICZDaHJvbWU6OnZhbGlkYXRpb25NZXNzYWdlVGltZXJGaXJlZCkpOwor
CisgICAgaWYgKG1lc3NhZ2UuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChtX3ZhbGlkYXRpb25N
ZXNzYWdlVGFyZ2V0ICE9IGNvbnRyb2wpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1f
dmFsaWRhdGlvbk1lc3NhZ2VUaW1lci0+c3RvcCgpOworICAgICAgICBtX2NsaWVudC0+dXBkYXRl
Rm9ybVZhbGlkYXRpb25NZXNzYWdlKGNvbnRyb2wsIG1lc3NhZ2UpOworICAgICAgICBtX3ZhbGlk
YXRpb25NZXNzYWdlID0gbWVzc2FnZTsKKyAgICAgICAgbV92YWxpZGF0aW9uTWVzc2FnZVRhcmdl
dC5jbGVhcigpOworICAgICAgICAvLyBTdGFydCB0aGUgdGltZXIgdG8gbWFrZSBhIGJsYWNrb3V0
IHBlcmlvZC4gRG8gbm90IHVzZSBzdGFydE9uZVNob3J0KCkKKyAgICAgICAgLy8gaW4gb3JkZXIg
dG8gcmV1c2UgdGhpcyBmb3IgdGhlIG5leHQgbWVzc2FnZS4KKyAgICAgICAgc3RhcnRWYWxpZGF0
aW9uTWVzc2FnZUJsYWNrb3V0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBib29s
IHdhc1Zpc2libGUgPSAhbV92YWxpZGF0aW9uTWVzc2FnZS5pc0VtcHR5KCk7CisgICAgUmVmUHRy
PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+IGxhc3RUYXJnZXQobV92YWxpZGF0aW9uTWVzc2FnZVRh
cmdldCk7CisgICAgYm9vbCByZXNldFRpbWVyID0gIXdhc1Zpc2libGUgfHwgbV92YWxpZGF0aW9u
TWVzc2FnZVRhcmdldCAhPSBjb250cm9sIHx8IG1fdmFsaWRhdGlvbk1lc3NhZ2UgIT0gbWVzc2Fn
ZTsKKyAgICBtX3ZhbGlkYXRpb25NZXNzYWdlID0gbWVzc2FnZTsKKyAgICBtX3ZhbGlkYXRpb25N
ZXNzYWdlVGFyZ2V0ID0gY29udHJvbDsKKyAgICBpZiAoIXJlc2V0VGltZXIpIHsKKyAgICAgICAg
bV9jbGllbnQtPnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShtX3ZhbGlkYXRpb25NZXNzYWdl
VGFyZ2V0LmdldCgpLCBtX3ZhbGlkYXRpb25NZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBpZiAod2FzVmlzaWJsZSkgeworICAgICAgICAvLyBDbGVhciB0aGUgdmlzaWJsZSBv
bGQgbWVzc2FnZS4KKyAgICAgICAgbV92YWxpZGF0aW9uTWVzc2FnZVRpbWVyLT5zdG9wKCk7Cisg
ICAgICAgIG1fY2xpZW50LT51cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UobGFzdFRhcmdldC5n
ZXQoKSwgU3RyaW5nKCkpOworICAgICAgICAvLyBXaWxsIHNob3cgdGhlIG5ldyBtZXNzYWdlIGFm
dGVyIHZhbGlkYXRpb25NZXNzYWdlQmxhY2tvdXRTZWMuCisgICAgICAgIHN0YXJ0VmFsaWRhdGlv
bk1lc3NhZ2VCbGFja291dCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtX3ZhbGlkYXRp
b25NZXNzYWdlVGltZXItPmlzQWN0aXZlKCkpIHsKKyAgICAgICAgICAgIC8vIE5vdGhpbmcgdG8g
ZG8gaWYgaXQgaXMgaW4gYSBibGFja291dCBwZXJpb2QuIFdoZW4gdGhlIHRpbWVyIGlzCisgICAg
ICAgICAgICAvLyBmaXJlZCBuZXh0IHRpbWUsIHZhbGlkYXRpb25NZXNzYWdlVGltZXJGaXJlZCgp
IHNob3dzIHRoZSBtZXNzYWdlCisgICAgICAgICAgICAvLyBiZWNhdXNlIG1fdmFsaWRhdGlvbk1l
c3NhZ2UgaXMgbm90IGVtcHR5LgorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gSXQn
cyBub3QgaW4gYSBibGFja291dCBwZXJpb2QuIFNob3cgdGhlIG1lc3NhZ2UgaW1tZWRpYXRlbHku
CisgICAgICAgICAgICBtX2NsaWVudC0+dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKG1fdmFs
aWRhdGlvbk1lc3NhZ2VUYXJnZXQuZ2V0KCksIG1fdmFsaWRhdGlvbk1lc3NhZ2UpOworICAgICAg
ICAgICAgbV92YWxpZGF0aW9uTWVzc2FnZVRpbWVyQ291bnRlciA9IDA7CisgICAgICAgICAgICBt
X3ZhbGlkYXRpb25NZXNzYWdlVGltZXItPnN0YXJ0UmVwZWF0aW5nKG1fY2xpZW50LT52YWxpZGF0
aW9uTWVzc2FnZVVwZGF0ZUludGVydmFsU2Vjb25kKCkpOworICAgICAgICB9CisgICAgfQorfQor
Cit2b2lkIENocm9tZTo6c3RhcnRWYWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0KCkKK3sKKyAgICBt
X3ZhbGlkYXRpb25NZXNzYWdlVGltZXJDb3VudGVyID0gLTE7CisgICAgbV92YWxpZGF0aW9uTWVz
c2FnZVRpbWVyLT5zdGFydChtX2NsaWVudC0+dmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29u
ZCgpLCBtX2NsaWVudC0+dmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRlcnZhbFNlY29uZCgpKTsK
K30KKwordm9pZCBDaHJvbWU6OnZhbGlkYXRpb25NZXNzYWdlVGltZXJGaXJlZChUaW1lcjxDaHJv
bWU+KiB0aW1lcikKK3sKKyAgICBpZiAobV92YWxpZGF0aW9uTWVzc2FnZS5pc0VtcHR5KCkpIHsK
KyAgICAgICAgQVNTRVJUKG1fdmFsaWRhdGlvbk1lc3NhZ2VUaW1lckNvdW50ZXIgPCAwKTsKKyAg
ICAgICAgdGltZXItPnN0b3AoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX2NsaWVu
dC0+dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKG1fdmFsaWRhdGlvbk1lc3NhZ2VUYXJnZXQu
Z2V0KCksIG1fdmFsaWRhdGlvbk1lc3NhZ2UpOworICAgIGlmICgrK21fdmFsaWRhdGlvbk1lc3Nh
Z2VUaW1lckNvdW50ZXIgPCBtX2NsaWVudC0+dmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3VudCht
X3ZhbGlkYXRpb25NZXNzYWdlKSkKKyAgICAgICAgcmV0dXJuOworICAgIHRpbWVyLT5zdG9wKCk7
CisgICAgbV9jbGllbnQtPnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShtX3ZhbGlkYXRpb25N
ZXNzYWdlVGFyZ2V0LmdldCgpLCBTdHJpbmcoKSk7CisgICAgbV92YWxpZGF0aW9uTWVzc2FnZSA9
IFN0cmluZygpOworICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2VUYXJnZXQuY2xlYXIoKTsKKworICAg
IHN0YXJ0VmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dCgpOworfQorCiB2b2lkIENocm9tZTo6cHJp
bnQoRnJhbWUqIGZyYW1lKQogewogICAgIG1fY2xpZW50LT5wcmludChmcmFtZSk7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmggYi9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXgg
ODgwMzVhNTI4MTdmOTgzMmQ3NWEyZDlhZWI3MzQ3ZTcxMjZiYjM0Yy4uZDIwYzI5Yjc2ZGFmYTY3
MThkZWVhN2RkNDg1NTM4ZjUyNzgyNjdmMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0Nocm9t
ZS5oCisrKyBiL1dlYkNvcmUvcGFnZS9DaHJvbWUuaApAQCAtMjQsNyArMjQsOSBAQAogI2luY2x1
ZGUgIkZpbGVDaG9vc2VyLmgiCiAjaW5jbHVkZSAiRm9jdXNEaXJlY3Rpb24uaCIKICNpbmNsdWRl
ICJIb3N0V2luZG93LmgiCisjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAK
ICNpZiBQTEFURk9STShNQUMpCkBAIC00MCw2ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBjbGFzcyBGbG9hdFJlY3Q7CiAgICAgY2xhc3MgRnJhbWU7CiAgICAgY2xhc3MgR2VvbG9j
YXRpb247CisgICAgY2xhc3MgSFRNTEZvcm1Db250cm9sRWxlbWVudDsKICAgICBjbGFzcyBIaXRU
ZXN0UmVzdWx0OwogICAgIGNsYXNzIEludFJlY3Q7CiAgICAgY2xhc3MgTm9kZTsKQEAgLTEyOSw2
ICsxMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgbW91c2VEaWRNb3Zl
T3ZlckVsZW1lbnQoY29uc3QgSGl0VGVzdFJlc3VsdCYsIHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3Mp
OwogCiAgICAgICAgIHZvaWQgc2V0VG9vbFRpcChjb25zdCBIaXRUZXN0UmVzdWx0Jik7CisgICAg
ICAgIHZvaWQgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQqLCBjb25zdCBTdHJpbmcmKTsKIAogICAgICAgICB2b2lkIHByaW50KEZyYW1lKik7CiAKQEAg
LTE0OSw4ICsxNTMsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICAgICBwcml2
YXRlOgorICAgICAgICB2b2lkIHZhbGlkYXRpb25NZXNzYWdlVGltZXJGaXJlZChUaW1lcjxDaHJv
bWU+Kik7CisgICAgICAgIHZvaWQgc3RhcnRWYWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0KCk7CisK
ICAgICAgICAgUGFnZSogbV9wYWdlOwogICAgICAgICBDaHJvbWVDbGllbnQqIG1fY2xpZW50Owor
ICAgICAgICBPd25QdHI8VGltZXI8Q2hyb21lPio+IG1fdmFsaWRhdGlvbk1lc3NhZ2VUaW1lcjsK
KyAgICAgICAgaW50IG1fdmFsaWRhdGlvbk1lc3NhZ2VUaW1lckNvdW50ZXI7CisgICAgICAgIFN0
cmluZyBtX3ZhbGlkYXRpb25NZXNzYWdlOworICAgICAgICBSZWZQdHI8SFRNTEZvcm1Db250cm9s
RWxlbWVudD4gbV92YWxpZGF0aW9uTWVzc2FnZVRhcmdldDsKICAgICB9OwogfQogCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xp
ZW50LmgKaW5kZXggYzkzYjNjOWI0OTExZTJhNTY3MTRhM2Y0MmYwODI0MjM5ZThhNDI2Ni4uNTAy
ODgzZTFlMjkzZDZiZjg2YTRjMjhjYzMwZDFlMDE5Y2EwYjE0YiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApA
QCAtNDcsNiArNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRmxvYXRSZWN0
OwogICAgIGNsYXNzIEZyYW1lOwogICAgIGNsYXNzIEdlb2xvY2F0aW9uOworICAgIGNsYXNzIEhU
TUxGb3JtQ29udHJvbEVsZW1lbnQ7CiAgICAgY2xhc3MgSFRNTFBhcnNlclF1aXJrczsKICAgICBj
bGFzcyBIaXRUZXN0UmVzdWx0OwogICAgIGNsYXNzIEludFJlY3Q7CkBAIC0yMDIsNiArMjAzLDI5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgdm9pZCBm
b3JtRGlkRm9jdXMoY29uc3QgTm9kZSopIHsgfTsKICAgICAgICAgdmlydHVhbCB2b2lkIGZvcm1E
aWRCbHVyKGNvbnN0IE5vZGUqKSB7IH07CisgICAgICAgIC8vIFNob3cgdGhlIHNwZWNpZmllZCBt
ZXNzYWdlIGZvciB0aGUgZm9ybSBjb250cm9sLiBIaWRlIHRoZSBtZXNzYWdlCisgICAgICAgIC8v
IGlmIHRoZSBzdHJpbmcgaXMgZW1wdHkuIElmIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSgp
IHdpdGgKKyAgICAgICAgLy8gbm9uLWVtcHR5IG1lc3NhZ2UgaXMgY2FsbGVkLCB0aGUgc3Vic2Vx
dWVudCBjYWxscyBvZgorICAgICAgICAvLyB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoKSBt
dXN0IGJlIGZvciB0aGUgc2FtZSBlbGVtZW50IGFuZCB0aGUKKyAgICAgICAgLy8gc2FtZSBtZXNz
YWdlLiAgVGhlbiwgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKCkgaXMgY2FsbGVkIHdpdGgK
KyAgICAgICAgLy8gdGhlIHNhbWUgZWxlbWVudCBhbmQgdGhlIGVtcHR5IG1lc3NhZ2UuCisgICAg
ICAgIC8vICB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc2FnZShjb250cm9sMSwgIm1lc3NhZ2UxIikg
LT4KKyAgICAgICAgLy8gIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzYWdlKGNvbnRyb2wxLCAibWVz
c2FnZTEiKSAtPgorICAgICAgICAvLyAgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNhZ2UoY29udHJv
bDEsICJtZXNzYWdlMSIpIC4uLiAobXVsdGlwbGUgdGltZXMpCisgICAgICAgIC8vICB1cGRhdGVG
b3JtVmFsaWRhdGlvbk1lc2FnZShjb250cm9sMSwgIiIpCisgICAgICAgIC8vIEluIHRoaXMgc2Vx
dWVuY2UsIGNhbGxzIHdpdGggb3RoZXIgY29udHJvbHMgb3Igb3RoZXIgbWVzc2FnZXMKKyAgICAg
ICAgLy8gbmV2ZXIgaGFwcGVuLgorICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRm9ybVZhbGlk
YXRpb25NZXNzYWdlKEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqLCBjb25zdCBTdHJpbmcmKSA9IDA7
CisgICAgICAgIC8vIEFmdGVyIHRoZSBmaXJzdCBjYWxsIG9mIHVwZGF0ZUZvcm1WYWxpZGF0aW9u
TWVzc2FnZShlLCAibWVzc2FnZTEiKSwKKyAgICAgICAgLy8gaXQgaXMgY2FsbGVkIHJlcGVhdGVk
bHkgZXZlcnkgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRlcnZhbFNlY29uZCgpCisgICAgICAg
IC8vIHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlQ291bnQoKS0xIHRpbWVzLAorICAgICAgICAvLyB0
aGVuIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShlLCAiIikgaXMgY2FsbGVkIGFmdGVyCisg
ICAgICAgIC8vIHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlSW50ZXJ2YWxTZWNvbmQoKS4KKyAgICAg
ICAgLy8gQWZ0ZXIgdGhhdCwgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKCkgaXMgbmV2ZXIg
Y2FsbGVkIGZvcgorICAgICAgICAvLyB2YWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0U2Vjb25kKCku
CisgICAgICAgIHZpcnR1YWwgZG91YmxlIHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlSW50ZXJ2YWxT
ZWNvbmQoKSA9IDA7CisgICAgICAgIHZpcnR1YWwgaW50IHZhbGlkYXRpb25NZXNzYWdlVXBkYXRl
Q291bnQoY29uc3QgU3RyaW5nJikgPSAwOworICAgICAgICB2aXJ0dWFsIGRvdWJsZSB2YWxpZGF0
aW9uTWVzc2FnZUJsYWNrb3V0U2Vjb25kKCkgPSAwOwogCiAgICAgICAgIHZpcnR1YWwgUGFzc093
blB0cjxIVE1MUGFyc2VyUXVpcmtzPiBjcmVhdGVIVE1MUGFyc2VyUXVpcmtzKCkgPSAwOwogCmRp
ZmYgLS1naXQgYS9XZWJLaXQvQ2hhbmdlTG9nIGIvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAyMzdi
MTQ0ZWQyYjM5YzNmYWU4MmEzOTJjYjFiZGMyMTJkNzZkY2ZkLi5iMGJlNjlhNmNlN2UwMTBmODFl
MTExMDcyNjQzZTZkOTg1NzU3OTEwIDEwMDY0NAotLS0gYS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMC0wNC0wMSAgS2VudCBUYW11
cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRnJhbWV3b3JrIHRvIHNob3cgZm9ybSB2YWxpZGF0aW9uIG1lc3Nh
Z2UgZm9yIGludmFsaWQgY29udHJvbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTMxNzE4CisKKyAgICAgICAgQWRkIHN0dWIgZnVuY3Rpb25zIGZvciB1
cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoKSwKKyAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VV
cGRhdGVJbnRlcnZhbFNlY29uZCgpLAorICAgICAgICB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUNv
dW50KCksIGFuZAorICAgICAgICB2YWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0U2Vjb25kKCkuCisK
KyAgICAgICAgKiBlZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdl
KToKKyAgICAgICAgKiBlZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmg6CisgICAg
ICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OnZhbGlkYXRpb25NZXNzYWdlVXBkYXRlSW50
ZXJ2YWxTZWNvbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjp2YWxpZGF0
aW9uTWVzc2FnZVVwZGF0ZUNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVm
bDo6dmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29uZCk6CisKIDIwMTAtMDYtMDEgIEFsZXhl
eSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2Ft
IFdlaW5pZy4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDVkMzlmY2EyZDM2NmE1NDRjMjhmZmNiN2QxMDhhMThk
NzQwNWEyNDguLjYzMTRkODM5ZTZlYzliMGEwNWU5NzIzZTJlN2U0ZDI3M2JlOTM1MjYgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEwLTA0LTAxICBLZW50IFRhbXVyYSAgPHRrZW50
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBGcmFtZXdvcmsgdG8gc2hvdyBmb3JtIHZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW52
YWxpZCBjb250cm9scworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzE3MTgKKworICAgICAgICBBZGQgc3R1YiBmdW5jdGlvbnMgZm9yIHVwZGF0ZUZvcm1W
YWxpZGF0aW9uTWVzc2FnZSgpLAorICAgICAgICB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUludGVy
dmFsU2Vjb25kKCksCisgICAgICAgIHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlQ291bnQoKSwgYW5k
CisgICAgICAgIHZhbGlkYXRpb25NZXNzYWdlQmxhY2tvdXRTZWNvbmQoKS4KKworICAgICAgICAq
IHNyYy9DaHJvbWVDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50
SW1wbDo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgKiBzcmMvQ2hyb21l
Q2xpZW50SW1wbC5oOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjp2YWxpZGF0
aW9uTWVzc2FnZVVwZGF0ZUludGVydmFsU2Vjb25kKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21l
Q2xpZW50SW1wbDo6dmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3VudCk6CisgICAgICAgIChXZWJL
aXQ6OkNocm9tZUNsaWVudEltcGw6OnZhbGlkYXRpb25NZXNzYWdlQmxhY2tvdXRTZWNvbmQpOgor
CiAyMDEwLTA2LTA5ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJv
bWVDbGllbnRJbXBsLmNwcAppbmRleCA2NTkxMGY4MzFiYzc0MDA0MjM3ZTIxZjZkNDRjMjkzNzFm
NjY3OWJjLi5kNmEyMzFmMDMwZTE0MGY1MjYwOTdiOTQ2MTExMDkyZGZmMTNkNGI1IDEwMDY0NAot
LS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCisrKyBiL1dlYktp
dC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKQEAgLTY1NCw2ICs2NTQsMTEgQEAg
dm9pZCBDaHJvbWVDbGllbnRJbXBsOjpmb3JtU3RhdGVEaWRDaGFuZ2UoY29uc3QgTm9kZSogbm9k
ZSkKICAgICAgICAgd2ViZnJhbWUtPmNsaWVudCgpLT5kaWRVcGRhdGVDdXJyZW50SGlzdG9yeUl0
ZW0od2ViZnJhbWUpOwogfQogCit2b2lkIENocm9tZUNsaWVudEltcGw6OnVwZGF0ZUZvcm1WYWxp
ZGF0aW9uTWVzc2FnZShXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiwgY29uc3QgV2Vi
Q29yZTo6U3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lkIENocm9t
ZUNsaWVudEltcGw6OmdldFBvcHVwTWVudUluZm8oUG9wdXBDb250YWluZXIqIHBvcHVwQ29udGFp
bmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlBvcHVwTWVu
dUluZm8qIGluZm8pCiB7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNs
aWVudEltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCmluZGV4
IDNiNWViZDUyYjAyYmJmOWMyYmFiMzRhYTY5MDI5NjhlMGE5MTJiNTYuLjFmNDI4MTFmMWM5ZDU0
OWVlYWIyZmYyZGEyZjM2Mjg1YzAwYzc4NmEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9z
cmMvQ2hyb21lQ2xpZW50SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xp
ZW50SW1wbC5oCkBAIC0xMjgsNiArMTI4LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
Y2hvb3NlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTdHJpbmc+JiwgV2ViQ29y
ZTo6RmlsZUNob29zZXIqKTsKICAgICB2aXJ0dWFsIGJvb2wgc2V0Q3Vyc29yKFdlYkNvcmU6OlBs
YXRmb3JtQ3Vyc29ySGFuZGxlKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBm
b3JtU3RhdGVEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6Tm9kZSopOworICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxl
bWVudCosIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpOworICAgIHZpcnR1YWwgZG91YmxlIHZhbGlk
YXRpb25NZXNzYWdlVXBkYXRlSW50ZXJ2YWxTZWNvbmQoKSB7IHJldHVybiAwLjM7IC8qIEZJWE1F
ICovIH0KKyAgICB2aXJ0dWFsIGludCB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUNvdW50KGNvbnN0
IFN0cmluZyYpIHsgcmV0dXJuIDIwOyAvKiBGSVhNRSAqLyB9CisgICAgdmlydHVhbCBkb3VibGUg
dmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29uZCgpIHsgcmV0dXJuIDAuNjsgLyogRklYTUUg
Ki8gfQogICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJDb3JlOjpIVE1MUGFyc2VyUXVpcmtzPiBj
cmVhdGVIVE1MUGFyc2VyUXVpcmtzKCkgeyByZXR1cm4gMDsgfQogI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpCiAgICAgLy8gRklYTUU6IEFsbCB0b3VjaCBldmVudHMgYXJlIGZvcndhcmRlZCByZWdh
cmRsZXNzIG9mIHdoZXRoZXIgb3Igbm90IHRoZXkgYXJlIG5lZWRlZC4KZGlmZiAtLWdpdCBhL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcCBiL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcAppbmRleCBjNTFiZWZiMjRiYTQ1NGQz
ZWExYmUyMGI3ZmY1MzE5MjZjNWE2OTAwLi4wMTNiZWNlY2Y0MzBhMmJiZWRiYWMyMTk4YTdjZDQ4
YWMyMDlhYzVhIDEwMDY0NAotLS0gYS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEVmbC5jcHAKKysrIGIvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRF
ZmwuY3BwCkBAIC0zODQsNiArMzg0LDExIEBAIHZvaWQgQ2hyb21lQ2xpZW50RWZsOjpmb3JtU3Rh
dGVEaWRDaGFuZ2UoY29uc3QgTm9kZSopCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9p
ZCBDaHJvbWVDbGllbnRFZmw6OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShXZWJDb3JlOjpI
VE1MRm9ybUNvbnRyb2xFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJikKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCiBib29sIENocm9tZUNsaWVudEVmbDo6c2V0Q3Vyc29yKFBs
YXRmb3JtQ3Vyc29ySGFuZGxlKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQg
YS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oIGIvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaAppbmRleCAzOTllZjdmMGIxMmFhYTY1
Mjc3ZGNkMzgzNTlhMzI4MzJkNzUxMWIxLi4wNmY5YzYyNDhkMGY5ZjI5NmRjYzkyODNmNGIxOGFi
M2YwZDE4MmJjIDEwMDY0NAotLS0gYS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEVmbC5oCisrKyBiL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZs
LmgKQEAgLTExNSw2ICsxMTUsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBydW5PcGVu
UGFuZWwoRnJhbWUqLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPik7CiAgICAgdmlydHVhbCB2b2lk
IGNob29zZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEZpbGVDaG9vc2VyKik7
CiAgICAgdmlydHVhbCB2b2lkIGZvcm1TdGF0ZURpZENoYW5nZShjb25zdCBOb2RlKik7CisgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShXZWJDb3JlOjpIVE1MRm9y
bUNvbnRyb2xFbGVtZW50LCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGRv
dWJsZSB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUludGVydmFsU2Vjb25kKCkgeyByZXR1cm4gMC4z
OyAvKiBGSVhNRSAqLyB9CisgICAgdmlydHVhbCBpbnQgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVD
b3VudChjb25zdCBTdHJpbmcmKSB7IHJldHVybiAyMDsgLyogRklYTUUgKi8gfQorICAgIHZpcnR1
YWwgZG91YmxlIHZhbGlkYXRpb25NZXNzYWdlQmxhY2tvdXRTZWNvbmQoKSB7IHJldHVybiAwLjY7
IC8qIEZJWE1FICovIH0KIAogICAgIHZpcnR1YWwgUGFzc093blB0cjxIVE1MUGFyc2VyUXVpcmtz
PiBjcmVhdGVIVE1MUGFyc2VyUXVpcmtzKCkgeyByZXR1cm4gMDsgfQogCmRpZmYgLS1naXQgYS9X
ZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IGY3ZjRjOGY3
MGIxYTVlNmFmNTQ4NDRiYjE2ZTUwYmVlMmU4ODQ3MjYuLmFmZWEzYWJjNTIyYmY1Y2ZkNjNhYzVj
NzMxNDUxYzU1YmJhZjZkYzEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBi
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMDQtMDEgIEtlbnQg
VGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEZyYW1ld29yayB0byBzaG93IGZvcm0gdmFsaWRhdGlvbiBt
ZXNzYWdlIGZvciBpbnZhbGlkIGNvbnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zMTcxOAorCisgICAgICAgIEFkZCBzdHViIGZ1bmN0aW9ucyBm
b3IgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKCksCisgICAgICAgIHZhbGlkYXRpb25NZXNz
YWdlVXBkYXRlSW50ZXJ2YWxTZWNvbmQoKSwKKyAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VVcGRh
dGVDb3VudCgpLCBhbmQKKyAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29uZCgp
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50Ojp1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oOgorICAgICAgICAoV2Vi
S2l0OjpDaHJvbWVDbGllbnQ6OnZhbGlkYXRpb25NZXNzYWdlVXBkYXRlSW50ZXJ2YWxTZWNvbmQp
OgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnZhbGlkYXRpb25NZXNzYWdlVXBkYXRl
Q291bnQpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnZhbGlkYXRpb25NZXNzYWdl
QmxhY2tvdXRTZWNvbmQpOgorCiAyMDEwLTA2LTA4ICBYYW4gTG9wZXogIDx4bG9wZXpAaWdhbGlh
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEuCmRpZmYgLS1naXQg
YS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAgYi9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKaW5kZXggNTc1OTYwMTM1ZWY1
NjdmZDk3MDMzMWE4YjAzZTNjZjhiNzE4MDYzNS4uMTU1NzBmNzAzNWM3MTY3MGJkMDE2NDA2MGM0
YjdmZWRlOGY4MTkxYSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRHdGsuY3BwCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50R3RrLmNwcApAQCAtNTY0LDYgKzU2NCwxMSBAQCB2b2lkIENocm9tZUNsaWVudDo6Y2hvb3Nl
SWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTdHJpbmc+JiBmaWxlbmFtZXMsCiAg
ICAgY2hvb3Nlci0+aWNvbkxvYWRlZChJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoZmlsZW5hbWVz
KSk7CiB9CiAKK3ZvaWQgQ2hyb21lQ2xpZW50Ojp1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2Uo
V2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogYm9vbCBDaHJvbWVDbGllbnQ6OnNldEN1
cnNvcihQbGF0Zm9ybUN1cnNvckhhbmRsZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaCBiL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKaW5kZXggNDZkMDE1ZWRh
YjdlMDU1YTliMGRhZTYyNmI1MDExZDNkMWE2Yzg3My4uODZjNmM4ZjNlOWM0NWJkM2E3M2E3MTNm
OTY3NGM0NDU5MGZlMjMzNSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRHdGsuaAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEd0ay5oCkBAIC0xMTMsNiArMTEzLDEwIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAg
ICB2aXJ0dWFsIHZvaWQgY2hvb3NlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpT
dHJpbmc+JiwgV2ViQ29yZTo6RmlsZUNob29zZXIqKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQg
Zm9ybVN0YXRlRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6Ok5vZGUqKSB7IH0KKyAgICAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShXZWJDb3JlOjpIVE1MRm9ybUNv
bnRyb2xFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7CisgICAgICAgIHZpcnR1YWwg
ZG91YmxlIHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlSW50ZXJ2YWxTZWNvbmQoKSB7IHJldHVybiAw
LjM7IC8qIEZJWE1FICovIH0KKyAgICAgICAgdmlydHVhbCBpbnQgdmFsaWRhdGlvbk1lc3NhZ2VV
cGRhdGVDb3VudChjb25zdCBTdHJpbmcmKSB7IHJldHVybiAyMDsgLyogRklYTUUgKi8gfQorICAg
ICAgICB2aXJ0dWFsIGRvdWJsZSB2YWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0U2Vjb25kKCkgeyBy
ZXR1cm4gMC42OyAvKiBGSVhNRSAqLyB9CiAKICAgICAgICAgdmlydHVhbCBQYXNzT3duUHRyPFdl
YkNvcmU6OkhUTUxQYXJzZXJRdWlya3M+IGNyZWF0ZUhUTUxQYXJzZXJRdWlya3MoKSB7IHJldHVy
biAwOyB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cgYi9XZWJLaXQvaGFp
a3UvQ2hhbmdlTG9nCmluZGV4IDM1YWQ5OGExN2FkNmZiMmU5MzFmMjg5MzNkNTk5ODlkNWUyMzY1
NTMuLjU4OTBkMTRmYjY0YjE1MDQ3OWYyMzRjM2VlOTI1YTM4ODEwYTBjNWQgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIyIEBACisyMDEwLTA0LTAxICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGcmFt
ZXdvcmsgdG8gc2hvdyBmb3JtIHZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW52YWxpZCBjb250cm9s
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE3MTgK
KworICAgICAgICBBZGQgc3R1YiBmdW5jdGlvbnMgZm9yIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVz
c2FnZSgpLAorICAgICAgICB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUludGVydmFsU2Vjb25kKCks
CisgICAgICAgIHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlQ291bnQoKSwgYW5kCisgICAgICAgIHZh
bGlkYXRpb25NZXNzYWdlQmxhY2tvdXRTZWNvbmQoKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEhhaWt1LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVu
dEhhaWt1Ojp1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UpOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1Lmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGll
bnRIYWlrdTo6dmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRlcnZhbFNlY29uZCk6CisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6dmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3Vu
dCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6dmFsaWRhdGlvbk1lc3Nh
Z2VCbGFja291dFNlY29uZCk6CisKIDIwMTAtMDUtMzEgIEx5b24gQ2hlbiAgPGxpYWNoZW5Acmlt
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KZGlmZiAtLWdpdCBhL1dl
YktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5jcHAgYi9XZWJLaXQv
aGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuY3BwCmluZGV4IDJjZjVjMzE2
Y2E3MWI2ZGQyZjVjZTM3ZGI5NzQ0ZmRkOGMwZmYyMzEuLjEzMjFlZGFlOThiODY3NDBiOTk4MjIz
ZjcwYzA3MDJiZmMwYTg5YmYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRIYWlrdS5jcHAKKysrIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudEhhaWt1LmNwcApAQCAtMzc1LDYgKzM3NSwxMSBAQCB2b2lkIENocm9tZUNs
aWVudEhhaWt1Ojpmb3JtU3RhdGVEaWRDaGFuZ2UoY29uc3QgTm9kZSopCiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KIAordm9pZCBDaHJvbWVDbGllbnRIYWlrdTo6dXBkYXRlRm9ybVZhbGlkYXRp
b25NZXNzYWdlKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQqLCBjb25zdCBXZWJDb3Jl
OjpTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIFBhc3NPd25QdHI8SFRN
TFBhcnNlclF1aXJrcz4gQ2hyb21lQ2xpZW50SGFpa3U6OmNyZWF0ZUhUTUxQYXJzZXJRdWlya3Mo
KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9XZWJLaXQvaGFpa3UvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuaCBiL1dlYktpdC9oYWlrdS9XZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRIYWlrdS5oCmluZGV4IGQ1YTM3MmIwZmJjMmVlYjVmNmIzMTJjYWFm
YzcyODI1NWEzZGYzN2IuLjk0ZWM3NWJlNGNlMWY1OWRlNDI3MmY0ZGVkODJmMGNkOGNhYTM2M2Ug
MTAwNjQ0Ci0tLSBhL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlr
dS5oCisrKyBiL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5o
CkBAIC0xNDUsNiArMTQ1LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gTm90
aWZpY2F0aW9uIHRoYXQgdGhlIGdpdmVuIGZvcm0gZWxlbWVudCBoYXMgY2hhbmdlZC4gVGhpcyBm
dW5jdGlvbgogICAgICAgICAvLyB3aWxsIGJlIGNhbGxlZCBmcmVxdWVudGx5LCBzbyBoYW5kbGlu
ZyBzaG91bGQgYmUgdmVyeSBmYXN0LgogICAgICAgICB2b2lkIGZvcm1TdGF0ZURpZENoYW5nZShj
b25zdCBOb2RlKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGb3JtVmFsaWRhdGlvbk1l
c3NhZ2UoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlN0
cmluZyYpOworICAgICAgICB2aXJ0dWFsIGRvdWJsZSB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUlu
dGVydmFsU2Vjb25kKCkgeyByZXR1cm4gMC4zOyAvKiBGSVhNRSAqLyB9CisgICAgICAgIHZpcnR1
YWwgaW50IHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlQ291bnQoY29uc3QgU3RyaW5nJikgeyByZXR1
cm4gMjA7IC8qIEZJWE1FICovIH0KKyAgICAgICAgdmlydHVhbCBkb3VibGUgdmFsaWRhdGlvbk1l
c3NhZ2VCbGFja291dFNlY29uZCgpIHsgcmV0dXJuIDAuNjsgLyogRklYTUUgKi8gfQogCiAgICAg
ICAgIFBhc3NPd25QdHI8SFRNTFBhcnNlclF1aXJrcz4gY3JlYXRlSFRNTFBhcnNlclF1aXJrcygp
OwogICAgIH07CmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCmluZGV4IGM5ZWZkYzZmMmRmNzk0MTk5ZDE0ZGE2YzkxMDJjNmNlZDVkM2EzMmQu
Ljc1ZTUwMzBlY2NlMDg3NzkxZjUxZDczMDQ0ZWY3OTliZTM2NDljMTEgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjYgQEAKKzIwMTAtMDQtMDEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyYW1ld29yayB0
byBzaG93IGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnZhbGlkIGNvbnRyb2xzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTcxOAorCisgICAg
ICAgIEFkZCBzdHViIGZ1bmN0aW9ucyBmb3IgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKCks
CisgICAgICAgIHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlSW50ZXJ2YWxTZWNvbmQoKSwKKyAgICAg
ICAgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3VudCgpLCB2YWxpZGF0aW9uTWVzc2FnZUJsYWNr
b3V0U2Vjb25kKCksIGFuZAorICAgICAgICBhIGhlbHBlciBmb3IgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKCkuCisKKyAgICAgICAg
KiBNaXNjL1dlYkNvcmVTdGF0aXN0aWNzLmg6CisgICAgICAgICogTWlzYy9XZWJDb3JlU3RhdGlz
dGljcy5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgdmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9y
RWxlbWVudEJ5SWQ6XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
Lmg6CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OnZhbGlkYXRpb25NZXNzYWdlVXBkYXRlSW50
ZXJ2YWxTZWNvbmQpOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50Ojp2YWxpZGF0aW9uTWVzc2Fn
ZVVwZGF0ZUNvdW50KToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6dmFsaWRhdGlvbk1lc3Nh
Z2VCbGFja291dFNlY29uZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50Lm1tOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50Ojp1cGRhdGVGb3JtVmFsaWRhdGlvbk1l
c3NhZ2UpOgorCisKIDIwMTAtMDYtMDggIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBBZGVsZSBQZXRlcnNvbi4KZGlmZiAtLWdpdCBhL1dlYktpdC9t
YWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5oIGIvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0
aXN0aWNzLmgKaW5kZXggYTExYzA2NDQ4YzhjN2Y1ZGE4MmIwZjJlYzY2NWU1NWJlMjUzODliYy4u
NmE5ZGRhMjdhY2MzMDUxZTI2YTBkYmZmNDFlMzI1NWMwOTc5YTYxOCAxMDA2NDQKLS0tIGEvV2Vi
S2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLmgKKysrIGIvV2ViS2l0L21hYy9NaXNjL1dl
YkNvcmVTdGF0aXN0aWNzLmgKQEAgLTg3LDQgKzg3LDUgQEAKIC0gKE5TU3RyaW5nICopY291bnRl
clZhbHVlRm9yRWxlbWVudDooRE9NRWxlbWVudCopZWxlbWVudDsKIC0gKGludClwYWdlTnVtYmVy
Rm9yRWxlbWVudDooRE9NRWxlbWVudCopZWxlbWVudDooZmxvYXQpcGFnZVdpZHRoSW5QaXhlbHM6
KGZsb2F0KXBhZ2VIZWlnaHRJblBpeGVsczsKIC0gKGludCludW1iZXJPZlBhZ2VzOihmbG9hdClw
YWdlV2lkdGhJblBpeGVsczooZmxvYXQpcGFnZUhlaWdodEluUGl4ZWxzOworLSAoTlNTdHJpbmcg
Kil2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZDooTlNTdHJpbmcgKillbGVt
ZW50SWQ7CiBAZW5kCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3Rp
Y3MubW0gYi9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW0KaW5kZXggYzNmYzIz
ZWNmNDg3MTcxNTQwNTc2MWIxYzRhMDRjNTRjMzk0YzA1OC4uMDcwNDM2N2EyMDdkNjJmYTQxMWRj
NjFkOWMwZGQ4NjI2M2VmMGE5NyAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVT
dGF0aXN0aWNzLm1tCisrKyBiL1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbQpA
QCAtMjgsNiArMjgsNyBAQAogCiAjaW1wb3J0ICJXZWJDb3JlU3RhdGlzdGljcy5oIgogCisjaW1w
b3J0ICJET01Eb2N1bWVudEludGVybmFsLmgiCiAjaW1wb3J0ICJET01FbGVtZW50SW50ZXJuYWwu
aCIKICNpbXBvcnQgIldlYkNhY2hlLmgiCiAjaW1wb3J0ICJXZWJGcmFtZUludGVybmFsLmgiCkBA
IC0zNyw2ICszOCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0dDQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9HbHlwaFBhZ2VUcmVlTm9kZS5o
PgorI2ltcG9ydCA8V2ViQ29yZS9IVE1MRm9ybUNvbnRyb2xFbGVtZW50Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0ljb25EYXRhYmFzZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0RPTVdpbmRvdy5oPgog
I2ltcG9ydCA8V2ViQ29yZS9QYWdlQ2FjaGUuaD4KQEAgLTI3NSw0ICsyNzcsMTUgQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgcmV0dXJuIFByaW50Q29udGV4dDo6bnVtYmVyT2ZQYWdl
cyhfcHJpdmF0ZS0+Y29yZUZyYW1lLCBGbG9hdFNpemUocGFnZVdpZHRoSW5QaXhlbHMsIHBhZ2VI
ZWlnaHRJblBpeGVscykpOwogfQogCistIChOU1N0cmluZyAqKXZpc2libGVWYWxpZGF0aW9uTWVz
c2FnZUZvckVsZW1lbnRCeUlkOihOU1N0cmluZyAqKWVsZW1lbnRJZAoreworICAgIERPTUVsZW1l
bnQqIGVsZW1lbnQgPSBbW3NlbGYgRE9NRG9jdW1lbnRdIGdldEVsZW1lbnRCeUlkOmVsZW1lbnRJ
ZF07CisgICAgaWYgKCFlbGVtZW50KQorICAgICAgICByZXR1cm4gbmlsOworICAgIEVsZW1lbnQq
IGNvcmVFbGVtZW50ID0gY29yZShlbGVtZW50KTsKKyAgICBpZiAoIWNvcmVFbGVtZW50LT5pc0Zv
cm1Db250cm9sRWxlbWVudCgpKQorICAgICAgICByZXR1cm4gbmlsOworICAgIEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQqIGZvcm1Db250cm9sID0gc3RhdGljX2Nhc3Q8SFRNTEZvcm1Db250cm9sRWxl
bWVudCo+KGNvcmVFbGVtZW50KTsKKyAgICByZXR1cm4gKE5TU3RyaW5nKilmb3JtQ29udHJvbC0+
dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlKCk7Cit9CiBAZW5kCmRpZmYgLS1naXQgYS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCA3ZGVlYTc5YTJiZTk1Mzk5ZThlOGZlYjY5
NDkxMTI5ZDNmZGFiM2E3Li4yZjA1Y2U4NTQ0YjExODdhOWY3YmZlMGU1NjcyNThhZTU1YTZhNzQw
IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
CisrKyBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTE0
Nyw2ICsxNDcsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGZvcm1EaWRGb2N1cyhj
b25zdCBXZWJDb3JlOjpOb2RlKik7CiAgICAgdmlydHVhbCB2b2lkIGZvcm1EaWRCbHVyKGNvbnN0
IFdlYkNvcmU6Ok5vZGUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRm9ybVZhbGlkYXRpb25N
ZXNzYWdlKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpT
dHJpbmcmKTsKKyAgICB2aXJ0dWFsIGRvdWJsZSB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUludGVy
dmFsU2Vjb25kKCkgeyByZXR1cm4gMC4zOyAvKiBGSVhNRSAqLyB9CisgICAgdmlydHVhbCBpbnQg
dmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3VudChjb25zdCBXZWJDb3JlOjpTdHJpbmcmKSB7IHJl
dHVybiAyMDsgLyogRklYTUUgKi8gfQorICAgIHZpcnR1YWwgZG91YmxlIHZhbGlkYXRpb25NZXNz
YWdlQmxhY2tvdXRTZWNvbmQoKSB7IHJldHVybiAwLjY7IC8qIEZJWE1FICovIH0KIAogICAgIHZp
cnR1YWwgUGFzc093blB0cjxXZWJDb3JlOjpIVE1MUGFyc2VyUXVpcmtzPiBjcmVhdGVIVE1MUGFy
c2VyUXVpcmtzKCkgeyByZXR1cm4gMDsgfQogCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbSBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50Lm1tCmluZGV4IDBhNTJhOWY3MDdkYWEwYjE3ZGI0NjQ5MDk4MDYwMDg4
MGY5MDMyMzIuLjlhODg3NWI2ODNlNWQzMzZmNTdlNjFiYTgzNDZkODk5OGMwNjI1OTAgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCisrKyBi
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCkBAIC03MDUsNiAr
NzA1LDExIEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpmb3JtRGlkQmx1cihjb25zdCBXZWJDb3Jl
OjpOb2RlKiBub2RlKQogICAgIENhbGxVSURlbGVnYXRlKG1fd2ViVmlldywgQHNlbGVjdG9yKHdl
YlZpZXc6Zm9ybURpZEJsdXJOb2RlOiksIGtpdChjb25zdF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihu
b2RlKSkpOwogfQogCit2b2lkIFdlYkNocm9tZUNsaWVudDo6dXBkYXRlRm9ybVZhbGlkYXRpb25N
ZXNzYWdlKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpT
dHJpbmcmKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KK30KKwogI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKIAogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmF0dGFjaFJv
b3RHcmFwaGljc0xheWVyKEZyYW1lKiBmcmFtZSwgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXll
cikKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9XZWJLaXQvcXQvQ2hhbmdlTG9n
CmluZGV4IDFiMzI2MGVhNDBjYWJkNDI3ZDRjN2E0Y2RjZWZhM2VlYTk1NTE4N2IuLmNkNjQ3ZmJk
MTM5MmFlY2JhNzljY2IzYzJlZWJmMDAzMWQ5MTgwMWIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9D
aGFuZ2VMb2cKKysrIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEw
LTA0LTAxICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGcmFtZXdvcmsgdG8gc2hvdyBmb3Jt
IHZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW52YWxpZCBjb250cm9scworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE3MTgKKworICAgICAgICBBZGQgc3R1
YiBmdW5jdGlvbnMgZm9yIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSgpLAorICAgICAgICB2
YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUludGVydmFsU2Vjb25kKCksCisgICAgICAgIHZhbGlkYXRp
b25NZXNzYWdlVXBkYXRlQ291bnQoKSwgYW5kCisgICAgICAgIHZhbGlkYXRpb25NZXNzYWdlQmxh
Y2tvdXRTZWNvbmQoKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0Ojp1cGRhdGVGb3JtVmFsaWRh
dGlvbk1lc3NhZ2UpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6dmFsaWRhdGlvbk1lc3NhZ2VVcGRh
dGVJbnRlcnZhbFNlY29uZCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6dmFs
aWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGll
bnRRdDo6dmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29uZCk6CisKIDIwMTAtMDYtMDggIEFu
dG9uaW8gR29tZXMgIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBPamFuIFZhZmFpIGFuZCBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50UXQuY3BwCmluZGV4IDQzNGRhOWEwMTA2MDMxZDk4MzkzYjI2YTRiNzFmN2Ux
ZTBkMzk1NGYuLjM3Nzc4N2NkMjJkMTdkMGM4YTZjY2M2ZWQ1ZDQ3N2NmNmE1Nzk4N2IgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAKKysrIGIv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcApAQCAtNTI4LDYgKzUy
OCwxMSBAQCB2b2lkIENocm9tZUNsaWVudFF0OjpjaG9vc2VJY29uRm9yRmlsZXMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGZpbGVuYW1lcywgRmlsZUNobwogICAgIGNob29zZXItPmljb25Mb2FkZWQo
SWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKGZpbGVuYW1lcykpOwogfQogCit2b2lkIENocm9tZUNs
aWVudFF0Ojp1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoV2ViQ29yZTo6SFRNTEZvcm1Db250
cm9sRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwogYm9vbCBDaHJvbWVDbGllbnRRdDo6c2V0Q3Vyc29yKFBsYXRmb3JtQ3Vyc29y
SGFuZGxlKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRRdC5oCmluZGV4IDAzOTZhZWZkODcwNmU2MWQzNDY5YjBmNDAxNzRjOGRj
OWYwYjQ4MWQuLmVmNTMwMDNiNTkxNjA4Y2UwNzBhYTYwZmVhNWVkNDIwMTUzNDBmZDIgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oCisrKyBiL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oCkBAIC0xNTcsNiArMTU3LDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGNob29zZUljb25G
b3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEZpbGVDaG9vc2VyKik7CiAKICAgICAgICAg
dmlydHVhbCB2b2lkIGZvcm1TdGF0ZURpZENoYW5nZShjb25zdCBOb2RlKikgeyB9CisgICAgICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoV2ViQ29yZTo6SFRNTEZv
cm1Db250cm9sRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpOworICAgICAgICB2aXJ0
dWFsIGRvdWJsZSB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUludGVydmFsU2Vjb25kKCkgeyByZXR1
cm4gMC4zOyAvKiBGSVhNRSAqLyB9CisgICAgICAgIHZpcnR1YWwgaW50IHZhbGlkYXRpb25NZXNz
YWdlVXBkYXRlQ291bnQoY29uc3QgV2ViQ29yZTo6U3RyaW5nJikgeyByZXR1cm4gMjA7IC8qIEZJ
WE1FICovIH0KKyAgICAgICAgdmlydHVhbCBkb3VibGUgdmFsaWRhdGlvbk1lc3NhZ2VCbGFja291
dFNlY29uZCgpIHsgcmV0dXJuIDAuNjsgLyogRklYTUUgKi8gfQogCiAgICAgICAgIHZpcnR1YWwg
UGFzc093blB0cjxIVE1MUGFyc2VyUXVpcmtzPiBjcmVhdGVIVE1MUGFyc2VyUXVpcmtzKCkgeyBy
ZXR1cm4gMDsgfQogCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1dlYktpdC93
aW4vQ2hhbmdlTG9nCmluZGV4IDU5NzdiZGJhZTViOGExYTJmYWFkOTU1NWQ5YjI2MzYwYzY5NjJl
YmQuLjEyMjg5Y2RjMDY0YTk3YWFiZTBlOTJjZWIwNzJjZjgxNzc4Nzc4NzkgMTAwNjQ0Ci0tLSBh
L1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjcgQEAKKzIwMTAtMDQtMDEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyYW1ld29y
ayB0byBzaG93IGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnZhbGlkIGNvbnRyb2xzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTcxOAorCisg
ICAgICAgIC0gQWRkIHN0dWIgZnVuY3Rpb25zIGZvciB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3Nh
Z2UoKSwKKyAgICAgICAgICB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUludGVydmFsU2Vjb25kKCks
CisgICAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3VudCgpLCBhbmQgdmFsaWRhdGlv
bk1lc3NhZ2VCbGFja291dFNlY29uZCgpLgorICAgICAgICAtIEFkZCB2aXNpYmxlVmFsaWRhdGlv
bk1lc3NhZ2VGb3JFbGVtZW50QnlJZCgpIGZvciBMYXlvdXRUZXN0Q29udHJvbGxlci4KKworICAg
ICAgICAqIEludGVyZmFjZXMvSVdlYkZyYW1lUHJpdmF0ZS5pZGw6CisgICAgICAgICogSW50ZXJm
YWNlcy9XZWJLaXQuaWRsOiBKdXN0IHRvdWNoLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OnVwZGF0ZUZvcm1W
YWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50Lmg6CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OnZhbGlkYXRpb25NZXNzYWdlVXBkYXRl
Q291bnQpOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50Ojp2YWxpZGF0aW9uTWVzc2FnZVVwZGF0
ZUludGVydmFsU2Vjb25kKToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6dmFsaWRhdGlvbk1l
c3NhZ2VCbGFja291dFNlY29uZCk6CisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAo
V2ViRnJhbWU6OnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKToKKyAgICAg
ICAgKiBXZWJGcmFtZS5oOgorCiAyMDEwLTA2LTA4ICBBbnRvbmlvIEdvbWVzICA8dG9uaWtpdG9v
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2phbiBWYWZhaSBhbmQgRGFyaW4g
QWRsZXIuCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkZyYW1lUHJpdmF0
ZS5pZGwgYi9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkZyYW1lUHJpdmF0ZS5pZGwKaW5kZXgg
MWI3MjA5ZDAyN2IxYjUwZThjZWFhOTRkOWI5OTVlOTkxM2U3NGJmMS4uZjFhNzg2YjFkY2Y4N2M4
YTdiZjhmOTQxNWRlODhjNDI0MzVjMWZlYyAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9JbnRlcmZh
Y2VzL0lXZWJGcmFtZVByaXZhdGUuaWRsCisrKyBiL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2Vi
RnJhbWVQcml2YXRlLmlkbApAQCAtMTEwLDYgKzExMCw2IEBAIGludGVyZmFjZSBJV2ViRnJhbWVQ
cml2YXRlIDogSVVua25vd24KICAgICBIUkVTVUxUIG51bWJlck9mUGFnZXMoW2luXSBmbG9hdCBw
YWdlV2lkdGhJblBpeGVscywgW2luXSBmbG9hdCBwYWdlSGVpZ2h0SW5QaXhlbHMsIFtvdXQsIHJl
dHZhbF0gaW50KiBwYWdlTnVtYmVyKTsKIAogICAgIEhSRVNVTFQgbGF5ZXJUcmVlQXNUZXh0KFtv
dXQsIHJldHZhbF0gQlNUUiogcmVzdWx0KTsKLQorICAgIEhSRVNVTFQgdmlzaWJsZVZhbGlkYXRp
b25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoW2luXSBCU1RSIGlkLCBbb3V0LCByZXR2YWxdIEJTVFIq
IHJlc3VsdCk7CiAgICAgSFJFU1VMVCBwYWludFNjcm9sbFZpZXdSZWN0VG9Db250ZXh0QXRQb2lu
dChbaW5dIFJFQ1QgcmVjdCwgW2luXSBQT0lOVCBwdCwgW2luXSBPTEVfSEFORExFIGRldmljZUNv
bnRleHQpOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL1dlYktpdC5pZGwg
Yi9XZWJLaXQvd2luL0ludGVyZmFjZXMvV2ViS2l0LmlkbAppbmRleCBkMjVjZGZlYmZiNjhhOGNh
NGI4NDE4MTk5NGRiYzIzMmVlYmM4ZGVhLi44NTNjYzJmZDI5MzRkMDNiYjdiOWU3OWNlNDM0NzI3
YTA4N2E1MDIxIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL0ludGVyZmFjZXMvV2ViS2l0LmlkbAor
KysgYi9XZWJLaXQvd2luL0ludGVyZmFjZXMvV2ViS2l0LmlkbApAQCAtMzAwLDMgKzMwMCw0IEBA
IGxpYnJhcnkgV2ViS2l0CiAgICAgICAgIFtkZWZhdWx0XSBpbnRlcmZhY2UgSVdlYlVzZXJDb250
ZW50VVJMUGF0dGVybjsKICAgICB9CiB9CisgCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggNTg3NjM3ZjE3ZWJlMWIyOGNlMDI5N2FjNTlhYmIw
OGM4NGI4MmFmMy4uMDE4YzM5ZTc1Y2QzZjcwNGQ0MTc4ZTUxNTlmNWVjNTkzZjdkYzZmMCAxMDA2
NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisr
KyBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtNDks
NiArNDksNyBAQAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICNpbmNsdWRlIDxX
ZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KICNlbmRpZgorI2luY2x1ZGUgPFdlYkNvcmUvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9JY29uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdz
Lmg+CkBAIC03NzIsNiArNzczLDExIEBAIGJvb2wgV2ViQ2hyb21lQ2xpZW50OjpzZXRDdXJzb3Io
UGxhdGZvcm1DdXJzb3JIYW5kbGUgY3Vyc29yKQogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lk
IFdlYkNocm9tZUNsaWVudDo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQqIGNvbnRyb2wsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6cmVxdWVzdEdlb2xvY2F0
aW9uUGVybWlzc2lvbkZvckZyYW1lKEZyYW1lKiBmcmFtZSwgR2VvbG9jYXRpb24qIGdlb2xvY2F0
aW9uKQogewogICAgIENPTVB0cjxJV2ViVUlEZWxlZ2F0ZT4gdWlEZWxlZ2F0ZTsKZGlmZiAtLWdp
dCBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDY5NTRmZGU2NzI5NjJh
MmFhZDc4YzRmNmJhZTBkZGM5YmZlNTU3YmYuLjhjMGY3ZDhkNTkyZWYzN2Q5OTJlN2NkYThiNzkx
NzJjYzFhYTM2YzggMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmgKKysrIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaApAQCAtMzQsNiArMzQsMTAgQEAKIGNsYXNzIFdlYlZpZXc7CiBjbGFzcyBXZWJEZXNrdG9w
Tm90aWZpY2F0aW9uc0RlbGVnYXRlOwogCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50OworfQorCiBpbnRlcmZhY2UgSVdlYlVJRGVsZWdhdGU7CiAKIGNs
YXNzIFdlYkNocm9tZUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpDaHJvbWVDbGllbnQgewpAQCAt
MTMzLDYgKzEzNywxMCBAQCBwdWJsaWM6CiAgICAgV2ViVmlldyogd2ViVmlldygpIGNvbnN0IHsg
cmV0dXJuIG1fd2ViVmlldzsgfQogCiAgICAgdmlydHVhbCB2b2lkIGZvcm1TdGF0ZURpZENoYW5n
ZShjb25zdCBXZWJDb3JlOjpOb2RlKikgeyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZvcm1W
YWxpZGF0aW9uTWVzc2FnZShXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiwgY29uc3Qg
V2ViQ29yZTo6U3RyaW5nJik7CisgICAgdmlydHVhbCB1bnNpZ25lZCB2YWxpZGF0aW9uTWVzc2Fn
ZVVwZGF0ZUNvdW50KGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpIHsgcmV0dXJuIDEwOyB9CisgICAg
dmlydHVhbCBkb3VibGUgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRlcnZhbFNlY29uZCgpIHsg
cmV0dXJuIDAuNTsgfQorICAgIHZpcnR1YWwgZG91YmxlIHZhbGlkYXRpb25NZXNzYWdlQmxhY2tv
dXRTZWNvbmQoKSB7IHJldHVybiAwLjY7IH0KIAogICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJD
b3JlOjpIVE1MUGFyc2VyUXVpcmtzPiBjcmVhdGVIVE1MUGFyc2VyUXVpcmtzKCkgeyByZXR1cm4g
MDsgfQogCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcCBiL1dlYktpdC93aW4v
V2ViRnJhbWUuY3BwCmluZGV4IDc1YTljOGQyMDM5N2FhNjRkNmJkNmI3MzlhOTdjYzA0NjVmNTlm
OTEuLjA4MjQ3YWIxMTZhMjgzNWI4ZDY4ZDNhOThkMGRlYjFiMGI5MmZjMDIgMTAwNjQ0Ci0tLSBh
L1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCkBA
IC0xMDI3LDYgKzEwMjcsMjEgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6
ZmV0Y2hBcHBsaWNhdGlvbkljb24oCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKK0hSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1l
bnRCeUlkKEJTVFIgaWQsIEJTVFIqIHJlc3VsdCkKK3sKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAg
ICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZSh0aGlzKTsK
KyAgICBpZiAoIWNvcmVGcmFtZSkKKyAgICAgICAgcmV0dXJuIEVfRkFJTDsKKyAgICBFbGVtZW50
KiBlbGVtZW50ID0gY29yZUZyYW1lLT5kb2N1bWVudCgpLT5nZXRFbGVtZW50QnlJZChTdHJpbmco
aWQsIFN5c1N0cmluZ0xlbihpZCkpKTsKKyAgICBpZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQtPmlz
Rm9ybUNvbnRyb2xFbGVtZW50KCkpCisgICAgICAgIHJldHVybiBFX0ZBSUw7CisgICAgSFRNTEZv
cm1Db250cm9sRWxlbWVudCogZm9ybUNvbnRyb2wgPSBzdGF0aWNfY2FzdDxIVE1MRm9ybUNvbnRy
b2xFbGVtZW50Kj4oZWxlbWVudCk7CisgICAgKnJlc3VsdCA9IEJTdHJpbmcoZm9ybUNvbnRyb2wt
PnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSgpKS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIFNfT0s7
Cit9CisKIC8vIElXZWJEb2N1bWVudFRleHQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJGcmFtZTo6c3VwcG9ydHNUZXh0RW5jb2RpbmcoIApkaWZmIC0tZ2l0IGEvV2ViS2l0L3dp
bi9XZWJGcmFtZS5oIGIvV2ViS2l0L3dpbi9XZWJGcmFtZS5oCmluZGV4IGQ4MzlmMTdiZWY5ODg1
YjRkYmJiNjgxMmU3MmM2OWM0NjFhMGMyMDIuLjZhYmIxZWNkNDZmM2NkNDkwZDUwYTkzMGExOTE4
OTdjMDIxZWQ1YTggMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViRnJhbWUuaAorKysgYi9XZWJL
aXQvd2luL1dlYkZyYW1lLmgKQEAgLTI2OSw2ICsyNjksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBKU0dsb2JhbENvbnRleHRSZWYgU1RETUVUSE9EQ0FMTFRZUEUgZ2xvYmFsQ29udGV4dEZvclNj
cmlwdFdvcmxkKElXZWJTY3JpcHRXb3JsZCopOwogCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHZpc2libGVDb250ZW50UmVjdChSRUNUKik7CisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRC
eUlkKEJTVFIgaWQsIEJTVFIqIHJlc3VsdCk7CiAKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgbGF5ZXJUcmVlQXNUZXh0KEJTVFIqKTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0
L3d4L0NoYW5nZUxvZyBiL1dlYktpdC93eC9DaGFuZ2VMb2cKaW5kZXggYWIyNTEwMjY3NmIzMTg2
NjM2MTY1ZDUxYTAyMWI2ZWNhY2ViOWQ5ZS4uYTMwNGZkMjk4OTU1NGQzZmRjM2EyNGVlYmVkNWQz
YzU1ZmFiYzlkNyAxMDA2NDQKLS0tIGEvV2ViS2l0L3d4L0NoYW5nZUxvZworKysgYi9XZWJLaXQv
d3gvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMDQtMDEgIEtlbnQgVGFtdXJhICA8
dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEZyYW1ld29yayB0byBzaG93IGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdlIGZv
ciBpbnZhbGlkIGNvbnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zMTcxOAorCisgICAgICAgIEFkZCBzdHViIGZ1bmN0aW9ucyBmb3IgdXBkYXRl
Rm9ybVZhbGlkYXRpb25NZXNzYWdlKCksCisgICAgICAgIHZhbGlkYXRpb25NZXNzYWdlVXBkYXRl
SW50ZXJ2YWxTZWNvbmQoKSwKKyAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3VudCgp
LCBhbmQKKyAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29uZCgpLgorCisgICAg
ICAgICogV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDaHJvbWVDbGllbnRXeDo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAg
KiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4Lmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJv
bWVDbGllbnRXeDo6dmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRlcnZhbFNlY29uZCk6CisgICAg
ICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6dmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3Vu
dCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6dmFsaWRhdGlvbk1lc3NhZ2VC
bGFja291dFNlY29uZCk6CisKIDIwMTAtMDUtMjcgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRo
ZW9sbGl2aWVycy5jb20+CiAKICAgICAgICAgW3d4XSBCdWlsZCBmaXhlcyBmb3IgV2luZG93cyBh
ZnRlciByZWNlbnQgY2hhbmdlcy4KZGlmZiAtLWdpdCBhL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0
L0Nocm9tZUNsaWVudFd4LmNwcCBiL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVu
dFd4LmNwcAppbmRleCBhMTk2NDRkYmQ4N2Q4M2YxNGQwMmY3MGYwZjI4MDk5MmFkYmMzZGYxLi44
NzdmNjZlZDlkOTk1ZTRiMjBjYjBiMjMxZTFiOTBkN2YyNzdhNzcyIDEwMDY0NAotLS0gYS9XZWJL
aXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHAKKysrIGIvV2ViS2l0L3d4L1dl
YktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwCkBAIC00NDcsNiArNDQ3LDExIEBAIHZvaWQg
Q2hyb21lQ2xpZW50V3g6OmNob29zZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZmlsZW5hbWVzLCBGaWxlQ2hvCiAgICAgY2hvb3Nlci0+aWNvbkxvYWRlZChJY29uOjpjcmVhdGVJ
Y29uRm9yRmlsZXMoZmlsZW5hbWVzKSk7CiB9CiAKK3ZvaWQgQ2hyb21lQ2xpZW50V3g6OnVwZGF0
ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50Kiwg
Y29uc3QgV2ViQ29yZTo6U3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiBi
b29sIENocm9tZUNsaWVudFd4OjpzZXRDdXJzb3IoUGxhdGZvcm1DdXJzb3JIYW5kbGUpCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0
L0Nocm9tZUNsaWVudFd4LmggYi9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRX
eC5oCmluZGV4IGI5MDBmM2VlZWY2ZTdkMmUwYWNkNmI5YmUwNmZkZDNjZTExMWYxNWEuLjQ3Nzgw
OWFkZjhmNTU2ZDU4ODQ3ZTJlMjRiZGY5MmY5ODU3Y2Q0NDcgMTAwNjQ0Ci0tLSBhL1dlYktpdC93
eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmgKKysrIGIvV2ViS2l0L3d4L1dlYktpdFN1
cHBvcnQvQ2hyb21lQ2xpZW50V3guaApAQCAtMTMxLDYgKzEzMSwxMCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGNob29zZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEZp
bGVDaG9vc2VyKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZm9ybVN0YXRlRGlkQ2hhbmdlKGNvbnN0
IE5vZGUqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdl
KFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcm
KTsKKyAgICB2aXJ0dWFsIGRvdWJsZSB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUludGVydmFsU2Vj
b25kKCkgeyByZXR1cm4gMC4zOyAvKiBGSVhNRSAqLyB9CisgICAgdmlydHVhbCBpbnQgdmFsaWRh
dGlvbk1lc3NhZ2VVcGRhdGVDb3VudChjb25zdCBXZWJDb3JlOjpTdHJpbmcmKSB7IHJldHVybiAy
MDsgLyogRklYTUUgKi8gfQorICAgIHZpcnR1YWwgZG91YmxlIHZhbGlkYXRpb25NZXNzYWdlQmxh
Y2tvdXRTZWNvbmQoKSB7IHJldHVybiAwLjY7IC8qIEZJWE1FICovIH0KIAogICAgIHZpcnR1YWwg
UGFzc093blB0cjxIVE1MUGFyc2VyUXVpcmtzPiBjcmVhdGVIVE1MUGFyc2VyUXVpcmtzKCkgeyBy
ZXR1cm4gMDsgfQogCmRpZmYgLS1naXQgYS9XZWJLaXQyL0NoYW5nZUxvZyBiL1dlYktpdDIvQ2hh
bmdlTG9nCmluZGV4IGRhZjkyODgxY2YyZjBiZDhmYjkxMWE5NGM1NzFjNjEzYTM1NjY5YTAuLmQy
MDhjZjA3ZDU0YTgwYWMzNWQ1ZjQ3Y2EyYzI5ZmJkZDIzY2RiMmEgMTAwNjQ0Ci0tLSBhL1dlYktp
dDIvQ2hhbmdlTG9nCisrKyBiL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIw
MTAtMDQtMDEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyYW1ld29yayB0byBzaG93IGZv
cm0gdmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnZhbGlkIGNvbnRyb2xzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTcxOAorCisgICAgICAgIEFkZCBz
dHViIGZ1bmN0aW9ucyBmb3IgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKCksCisgICAgICAg
IHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlSW50ZXJ2YWxTZWNvbmQoKSwKKyAgICAgICAgdmFsaWRh
dGlvbk1lc3NhZ2VVcGRhdGVDb3VudCgpLCBhbmQKKyAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VC
bGFja291dFNlY29uZCgpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnVw
ZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xp
ZW50Ojp2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUludGVydmFsU2Vjb25kKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ2hyb21lQ2xpZW50Ojp2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUNvdW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojp2YWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0
U2Vjb25kKToKKwogMjAxMC0wNi0wOCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEpvaG4gU3VsbGl2YW4uCmRpZmYgLS1naXQgYS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4
IGU0NDM1MzBkYWFjYzU4ZjVjMTgyODFjMGExZmY3ZjQwZTU2Y2QzNDYuLmFmMmFhODE5YTAwZGY4
MGQ5YmY3NDFjZTY2NDU5ZjM2ZDg0YzQzNmEgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC00MzIsNiArNDMyLDEx
IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpmb3JtRGlkQmx1cihjb25zdCBOb2RlKikKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIFdlYkNocm9tZUNsaWVudDo6dXBkYXRlRm9ybVZh
bGlkYXRpb25NZXNzYWdlKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQqLCBjb25zdCBX
ZWJDb3JlOjpTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIFBhc3NPd25Q
dHI8SFRNTFBhcnNlclF1aXJrcz4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVIVE1MUGFyc2VyUXVp
cmtzKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IGZlNWYxNGE3NWJkN2Q2
MDZiNTdhM2VmZGEyYTMxZDBhYjBmZDFlZDQuLjkyZmYyNTk2MWRjMjVhZGM2YTdmMTU3YWJmOWVj
NDIzNjA4MTUxZjMgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTE1OSw2ICsxNTksMTAgQEAgcHJpdmF0ZToKICAgICAK
ICAgICB2aXJ0dWFsIHZvaWQgZm9ybURpZEZvY3VzKGNvbnN0IFdlYkNvcmU6Ok5vZGUqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZm9ybURpZEJsdXIoY29uc3QgV2ViQ29yZTo6Tm9kZSopOworICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoV2ViQ29yZTo6SFRNTEZvcm1D
b250cm9sRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpOworICAgIHZpcnR1YWwgZG91
YmxlIHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlSW50ZXJ2YWxTZWNvbmQoKSB7IHJldHVybiAwLjM7
IC8qIEZJWE1FICovIH0KKyAgICB2aXJ0dWFsIGludCB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUNv
dW50KGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpIHsgcmV0dXJuIDIwOyAvKiBGSVhNRSAqLyB9Cisg
ICAgdmlydHVhbCBkb3VibGUgdmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29uZCgpIHsgcmV0
dXJuIDAuNjsgLyogRklYTUUgKi8gfQogICAgIAogICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJD
b3JlOjpIVE1MUGFyc2VyUXVpcmtzPiBjcmVhdGVIVE1MUGFyc2VyUXVpcmtzKCk7CiAKZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRl
eCBkOGExZTdjOGE2YjUyMDM5MGQyOTA5Mzk5YzU5NTk0NDVhMzE2YTViLi4wODk2MWE3NmI5Zjlh
ZTQzNzcxZDI4NmIxYTc3NDJlOTc5OWMxMjBiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFu
Z2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTAt
MDQtMDEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyYW1ld29yayB0byBzaG93IGZvcm0g
dmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnZhbGlkIGNvbnRyb2xzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTcxOAorCisgICAgICAgIEFkZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQo
KS4KKyAgICAgICAgV2luZG93cyBhbmQgTWFjIGhhdmUgd29ya2FibGUgaW1wbGVtZW50YXRpb25z
LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAodmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWRDYWxsYmFjayk6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHA6CisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5
SWQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1h
Yy5tbToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjp2aXNpYmxlVmFsaWRhdGlvbk1l
c3NhZ2VGb3JFbGVtZW50QnlJZCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0
VGVzdENvbnRyb2xsZXJRdC5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6dmlz
aWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHA6CisgICAgICAgIChMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwOgor
ICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZv
ckVsZW1lbnRCeUlkKToKKwogMjAxMC0wNi0wOCAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIExldmluLgpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGI5NmE5
YzljNTZhNDM3MTUxN2VmZjdlNWViMDllMmRiOTJhODFmYjguLmE5YzY0ZmU3MGZiN2U5MDJkYmU1
OTQ1YjQ5MmViZmVmOGY2NDVkZjEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTk5Myw2ICs5OTMsMjAgQEAgc3RhdGlj
IEpTVmFsdWVSZWYgc2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZENhbGxiYWNrKEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU09iamUKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4
dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVs
ZW1lbnRCeUlkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0
aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3Qg
SlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlm
IChhcmd1bWVudENvdW50IDwgMSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGNvbnRleHQpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBlbGVtZW50SWQoQWRvcHQs
IEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsK
KyAgICBBU1NFUlQoISpleGNlcHRpb24pOworCisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNv
bnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0
UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IG1lc3Nh
Z2UoY29udHJvbGxlci0+dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoZWxl
bWVudElkLmdldCgpKSk7CisgICAgaWYgKCFtZXNzYWdlLmdldCgpKQorICAgICAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlU3Ry
aW5nKGNvbnRleHQsIG1lc3NhZ2UuZ2V0KCkpOworfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRB
bGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMc0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90
IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikKIHsKICAgICAvLyBIYXMgbWFjICYgd2luZG93cyBpbXBsZW1lbnRhdGlvbgpA
QCAtMTY2NSw2ICsxNjc5LDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgICAgIHsgInNob3dXZWJJbnNwZWN0b3IiLCBzaG93
V2ViSW5zcGVjdG9yQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAidGVzdE9uc2NyZWVuIiwg
dGVzdE9uc2NyZWVuQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAidGVzdFJlcGFpbnQiLCB0
ZXN0UmVwYWludENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgInZpc2libGVWYWxpZGF0aW9u
TWVzc2FnZUZvckVsZW1lbnRCeUlkIiwgdmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVu
dEJ5SWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJ3YWl0Rm9yUG9saWN5RGVsZWdhdGUi
LCB3YWl0Rm9yUG9saWN5RGVsZWdhdGVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJ3YWl0
VW50aWxEb25lIiwgd2FpdFVudGlsRG9uZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgIndp
bmRvd0NvdW50Iiwgd2luZG93Q291bnRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggOGZmMzhkMTA5
MDEwZjRlOTY4MmRhMmI4N2U4ZWYxODZjNDExYzJhOC4uMTBmN2E0ZDU2OGNjZjVkYTM4YWEyNTdj
NmQzYmNmNzVkYTVlMDliMiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC0xMDAsNyArMTAwLDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKGJvb2wgZW5hYmxlKTsKICAgICB2b2lkIHNl
dFNjcm9sbGJhclBvbGljeShKU1N0cmluZ1JlZiBvcmllbnRhdGlvbiwgSlNTdHJpbmdSZWYgcG9s
aWN5KTsKICAgICB2b2lkIHNldEVkaXRpbmdCZWhhdmlvcihjb25zdCBjaGFyKiBlZGl0aW5nQmVo
YXZpb3IpOwotCisgICAgSlNTdHJpbmdSZWYgdmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxl
bWVudEJ5SWQoSlNTdHJpbmdSZWYgaWQpOwogICAgIHZvaWQgd2FpdEZvclBvbGljeURlbGVnYXRl
KCk7CiAgICAgc2l6ZV90IHdlYkhpc3RvcnlJdGVtQ291bnQoKTsKICAgICB1bnNpZ25lZCB3b3Jr
ZXJUaHJlYWRDb3VudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKaW5kZXggZThiODYyNzU4
NTJkY2I1Y2UxZDE5ZDZkYTVmYmE1MWEwMTU0OWQ2My4uODdiNWE2ZmJmYjI4OGZlMjQyYmJmYTVh
M2ZhOGI2MjFlZDY3MjkwYSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
Z3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCkBAIC02NzYsNiArNjc2LDEy
IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFwaVRlc3RHb1RvQ3VycmVudEJhY2tGb3J3
YXJkSXRlbSgpCiAKIH0KIAorSlNTdHJpbmdSZWYgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnZpc2li
bGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGlkKQoreworICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KKyAgICByZXR1cm4gMDsKK30KKwogdm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0V2ViVmlld0VkaXRhYmxlKGJvb2wpCiB7CiB9CmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJN
YWMubW0gYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xs
ZXJNYWMubW0KaW5kZXggZWIwMTA5MDAyNmI3ZjlmNmFjM2NmNDNiYjU2ZjAzY2QyNjI3MzljOC4u
MzU0MmI2MjQ2YzYzMmYzNmRkODU0OTNiMDljOGQ5ZWEwY2Y3ZDc2NSAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCisr
KyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1h
Yy5tbQpAQCAtNzU0LDYgKzc1NCwxMiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphcGlU
ZXN0R29Ub0N1cnJlbnRCYWNrRm9yd2FyZEl0ZW0oKQogICAgIFt2aWV3IGdvVG9CYWNrRm9yd2Fy
ZEl0ZW06W1t2aWV3IGJhY2tGb3J3YXJkTGlzdF0gY3VycmVudEl0ZW1dXTsKIH0KIAorSlNTdHJp
bmdSZWYgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVs
ZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGlkKQoreworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
aWRDRihBZG9wdENGLCBKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBp
ZCkpOworICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYp
W21haW5GcmFtZSB2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZDooTlNTdHJp
bmcqKWlkQ0YuZ2V0KCldKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0V2Vi
Vmlld0VkaXRhYmxlKGJvb2wgZWRpdGFibGUpCiB7CiAgICAgV2ViVmlldyAqdmlldyA9IFttYWlu
RnJhbWUgd2ViVmlld107CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9x
dC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCmluZGV4IDNmMjU4NWQzZmQwZTJiNzEwZDUw
YTcxNGM2ZWM4ODhkZjkxNjlkNGUuLmNkMTA0ZmZiNWVmYjJmZWJjOGUzYjYzN2Q1ODE3YTVlMjNh
ZGFkMjAgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRl
c3RDb250cm9sbGVyUXQuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xh
eW91dFRlc3RDb250cm9sbGVyUXQuY3BwCkBAIC01NjgsNiArNTY4LDEyIEBAIGJvb2wgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OmNhbGxTaG91bGRDbG9zZU9uV2ViVmlldygpCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCitKU1N0cmluZ1JlZiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6dmlzaWJsZVZhbGlk
YXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWQpCit7CisgICAgLy8gRklY
TUU6IEltcGxlbWVudCB0aGlzLgorICAgIHJldHVybiAwOworfQorCiB2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRTY3JvbGxiYXJQb2xpY3koY29uc3QgUVN0cmluZyYgb3JpZW50YXRpb24s
IGNvbnN0IFFTdHJpbmcmIHBvbGljeSkKIHsKICAgICBRdDo6T3JpZW50YXRpb24gbzsKZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxl
cldpbi5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRy
b2xsZXJXaW4uY3BwCmluZGV4IGM3MGI1MTdmZWJmNzQwNmIxNTJmY2ZjYzQwNDQwNWI2NmY3MDdk
YmEuLjZlZTMwMWVlMzE2MDk1ZWY2ZDZlOWMxMzljMDhiODZkMTZmNmU2YzUgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5j
cHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9s
bGVyV2luLmNwcApAQCAtMTI2MCw2ICsxMjYwLDE5IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OmFwaVRlc3RHb1RvQ3VycmVudEJhY2tGb3J3YXJkSXRlbSgpCiAgICAgd2ViVmlldy0+Z29U
b0JhY2tGb3J3YXJkSXRlbShpdGVtLmdldCgpLCAmc3VjY2Vzcyk7CiB9CiAKK0pTU3RyaW5nUmVm
IExheW91dFRlc3RDb250cm9sbGVyOjp2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50
QnlJZChKU1N0cmluZ1JlZiBpZCkKK3sKKyAgICBDT01QdHI8SVdlYkZyYW1lUHJpdmF0ZT4gZnJh
bWVQcml2YXRlKFF1ZXJ5LCBmcmFtZSk7CisgICAgaWYgKCFmcmFtZVByaXZhdGUpCisgICAgICAg
IHJldHVybiAwOworICAgIEJTVFIgbWVzc2FnZUJTVFI7CisgICAgaWYgKEZBSUxFRChmcmFtZVBy
aXZhdGUtPnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKGJzdHJUKGlkKS5H
ZXRCU1RSKCksICZtZXNzYWdlQlNUUikpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBKU1N0cmlu
Z1JlZiBtZXNzYWdlSlMgPSBKU1N0cmluZ0NyZWF0ZVdpdGhCU1RSKG1lc3NhZ2VCU1RSKTsKKyAg
ICBTeXNGcmVlU3RyaW5nKG1lc3NhZ2VCU1RSKTsKKyAgICByZXR1cm4gbWVzc2FnZUpTOworfQor
CiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRXZWJWaWV3RWRpdGFibGUoYm9vbCkKIHsK
IH0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RD
b250cm9sbGVyV3guY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVz
dENvbnRyb2xsZXJXeC5jcHAKaW5kZXggMjY1ODAyZDIxMDI2ZTE3Y2YzYWQ0YWU1NDc0Y2E1ZTNh
NmE3ZTU4Yi4uNzg4NjBjNjE4ZDE3YmM4OGYzNjEwYTg4NDE2M2QyMTFiNmM3ZTYxMSAxMDA2NDQK
LS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJX
eC5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRy
b2xsZXJXeC5jcHAKQEAgLTQxOSw2ICs0MTksMTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKGJvb2wpCiAKIH0KIAorSlNTdHJpbmdSZWYg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRC
eUlkKEpTU3RyaW5nUmVmIGlkKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KKyAg
ICByZXR1cm4gMDsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0V2ViVmlld0Vk
aXRhYmxlKGJvb2wpCiB7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58252</attachid>
            <date>2010-06-09 09:14:36 -0700</date>
            <delta_ts>2010-06-09 10:08:29 -0700</delta_ts>
            <desc>Patch (rev.6; build fix)</desc>
            <filename>bug-31718-20100610011434.patch</filename>
            <type>text/plain</type>
            <size>59098</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmNGViN2UwNzA4ZTY2NTdmNGZjM2Y0MTBiOGE5OTNkNWQ1NDJmN2I1Li5mMThhYmI1
Mjk5OTVmNjFmZTUxZTkzMjY3NmJiNjZhNDY3NzViOTRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTAtMDQtMDEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyYW1ld29yayB0byBzaG93
IGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnZhbGlkIGNvbnRyb2xzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTcxOAorCisgICAgICAgIEFk
ZCBhIHRlc3QgdG8gY2hlY2sgYSB2aXNpYmxlIHZhbGlkYXRpb24gbWVzc2FnZS4KKyAgICAgICAg
VGhlIG1lc3NhZ2Ugc2hvdWxkIGJlIGF2YWlsYWJsZSBvbmx5IHdoZW4gdGhlIGNvbnRyb2wgaGFz
IGZvY3VzLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvdmlzaWJsZS12YWxp
ZGF0aW9uLW1lc3NhZ2UuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvdmlzaWJsZS12
YWxpZGF0aW9uLW1lc3NhZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zv
cm1zL3Zpc2libGUtdmFsaWRhdGlvbi1tZXNzYWdlLmh0bWw6IEFkZGVkLgorCiAyMDEwLTA2LTA4
ICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
Tmlrb2xhcyBaaW1tZXJtYW5uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9z
Y3JpcHQtdGVzdHMvdmlzaWJsZS12YWxpZGF0aW9uLW1lc3NhZ2UuanMgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy92aXNpYmxlLXZhbGlkYXRpb24tbWVzc2FnZS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44OTQzZGE4MmM1NDkzNjNjMTBjNzQwYmUwNjE2MGNiNTk3NTUyZmE2Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvdmlzaWJsZS12
YWxpZGF0aW9uLW1lc3NhZ2UuanMKQEAgLTAsMCArMSwzOCBAQAorZGVzY3JpcHRpb24oJ1Rlc3Qg
Zm9yIHZhbGlkYXRpb24gbWVzc2FnZSByZXF1ZXN0cyBmcm9tIGFuIEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQuJyk7CisKK3ZhciBwYXJlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
K2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocGFyZW50KTsKK3BhcmVudC5pbm5lckhUTUw9ICc8
Zm9ybT4nCisgICAgKyAnPGlucHV0IGlkPWkxIG5hbWU9aTEgcmVxdWlyZWQ+JworICAgICsgJzwv
Zm9ybT4nOworCit2YXIgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaTEnKTsKK2Rl
YnVnKCdJbnZhbGlkIGFuZCBubyBmb2N1cycpOworc2hvdWxkQmVGYWxzZSgnaW5wdXQudmFsaWRp
dHkudmFsaWQnKTsKK3Nob3VsZEJlVHJ1ZSgnaW5wdXQudmFsaWRhdGlvbk1lc3NhZ2UubGVuZ3Ro
ID4gMCcpOworc2hvdWxkQmUoJ2xheW91dFRlc3RDb250cm9sbGVyLnZpc2libGVWYWxpZGF0aW9u
TWVzc2FnZUZvckVsZW1lbnRCeUlkKCJpMSIpJywgJyIiJyk7CisKK2RlYnVnKCdJbnZhbGlkIGFu
ZCBmb2N1c2VkJyk7CitpbnB1dC5mb2N1cygpOworc2hvdWxkQmUoJ2xheW91dFRlc3RDb250cm9s
bGVyLnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKCJpMSIpJywgJ2lucHV0
LnZhbGlkYXRpb25NZXNzYWdlJyk7CisKK2RlYnVnKCdJbnZhbGlkLCBmb2N1c2VkLCBhbmQgd2hp
dGVzcGFjZS1vbmx5IGN1c3RvbSBtZXNzYWdlJyk7CitpbnB1dC5zZXRDdXN0b21WYWxpZGl0eSgi
ICAgIik7CitpbnB1dC5ibHVyKCk7CitpbnB1dC5mb2N1cygpOworc2hvdWxkQmUoJ2xheW91dFRl
c3RDb250cm9sbGVyLnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKCJpMSIp
JywgJyIiJyk7CisKK2RlYnVnKCdJbnZhbGlkLCBmb2N1c2VkLCBhbmQgdGl0bGUgYXR0cmlidXRl
Jyk7CitpbnB1dC5zZXRDdXN0b21WYWxpZGl0eSgiIik7CitpbnB1dC50aXRsZSA9ICdZb3UgbmVl
ZCB0byBzcGVjaWZ5IGEgdmFsdWUuJzsKK2lucHV0LmJsdXIoKTsKK2lucHV0LmZvY3VzKCk7Citz
aG91bGRCZSgnbGF5b3V0VGVzdENvbnRyb2xsZXIudmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9y
RWxlbWVudEJ5SWQoImkxIiknLCAnaW5wdXQudmFsaWRhdGlvbk1lc3NhZ2UgKyAiXFxuIiArIGlu
cHV0LnRpdGxlJyk7CisKK2RlYnVnKCdJbnZhbGlkLCBmb2N1c2VkLCB0aXRsZSBhdHRyaWJ1dGUs
IGFuZCB3aGl0ZXNwYWNlLW9ubHkgY3VzdG9tIG1lc3NhZ2UnKTsKK2lucHV0LnNldEN1c3RvbVZh
bGlkaXR5KCIgICAiKTsKK2lucHV0LmJsdXIoKTsKK2lucHV0LmZvY3VzKCk7CitzaG91bGRCZSgn
bGF5b3V0VGVzdENvbnRyb2xsZXIudmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5
SWQoImkxIiknLCAnIiInKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Zpc2libGUtdmFsaWRhdGlvbi1tZXNzYWdl
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdmlzaWJsZS12YWxpZGF0aW9u
LW1lc3NhZ2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzZGViMDczMWFkZjBlMWY3OWM4NjRm
NjMxMDE1M2Q3YzJkYTdiZmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL3Zpc2libGUtdmFsaWRhdGlvbi1tZXNzYWdlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIx
IEBACitUZXN0IGZvciB2YWxpZGF0aW9uIG1lc3NhZ2UgcmVxdWVzdHMgZnJvbSBhbiBIVE1MRm9y
bUNvbnRyb2xFbGVtZW50LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworSW52YWxp
ZCBhbmQgbm8gZm9jdXMKK1BBU1MgaW5wdXQudmFsaWRpdHkudmFsaWQgaXMgZmFsc2UKK1BBU1Mg
aW5wdXQudmFsaWRhdGlvbk1lc3NhZ2UubGVuZ3RoID4gMCBpcyB0cnVlCitQQVNTIGxheW91dFRl
c3RDb250cm9sbGVyLnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKCJpMSIp
IGlzICIiCitJbnZhbGlkIGFuZCBmb2N1c2VkCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnZp
c2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKCJpMSIpIGlzIGlucHV0LnZhbGlk
YXRpb25NZXNzYWdlCitJbnZhbGlkLCBmb2N1c2VkLCBhbmQgd2hpdGVzcGFjZS1vbmx5IGN1c3Rv
bSBtZXNzYWdlCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnZpc2libGVWYWxpZGF0aW9uTWVz
c2FnZUZvckVsZW1lbnRCeUlkKCJpMSIpIGlzICIiCitJbnZhbGlkLCBmb2N1c2VkLCBhbmQgdGl0
bGUgYXR0cmlidXRlCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnZpc2libGVWYWxpZGF0aW9u
TWVzc2FnZUZvckVsZW1lbnRCeUlkKCJpMSIpIGlzIGlucHV0LnZhbGlkYXRpb25NZXNzYWdlICsg
IlxuIiArIGlucHV0LnRpdGxlCitJbnZhbGlkLCBmb2N1c2VkLCB0aXRsZSBhdHRyaWJ1dGUsIGFu
ZCB3aGl0ZXNwYWNlLW9ubHkgY3VzdG9tIG1lc3NhZ2UKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xs
ZXIudmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoImkxIikgaXMgIiIKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Zpc2libGUtdmFsaWRhdGlvbi1tZXNzYWdlLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Zpc2libGUtdmFsaWRhdGlvbi1tZXNzYWdlLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGI5MjgyNTJjOTYzYzNlNmUyZDFjMzdjZGEzNjUzMjEwOTliYWQ2Mwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdmlzaWJsZS12YWxpZGF0
aW9uLW1lc3NhZ2UuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy92aXNpYmxlLXZh
bGlkYXRpb24tbWVzc2FnZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YWMwYTU2MTNiMjg1MmJlNjc2NzRjNGQ4N2Y2NzM3MGIwNGQxNDE3NS4uZjdjNzMyNTQwYjk5Y2Yy
YzM3ZjY4NjQ5YmE0OGZlOWM2ZDM2OGQ1MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAxMC0wNC0wMSAgS2Vu
dCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgRnJhbWV3b3JrIHRvIHNob3cgZm9ybSB2YWxpZGF0aW9u
IG1lc3NhZ2UgZm9yIGludmFsaWQgY29udHJvbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNzE4CisKKyAgICAgICAgQW4gSFRNTEZvcm1Db250cm9s
RWxlbWVudCBjYWxscyBDaHJvbWU6OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSgpCisgICAg
ICAgIHdoZW4gaXQgZ2V0cyBmb2N1cyBhbmQgbG9vc2VzIGZvY3VzLiBDaHJvbWU6OnVwZGF0ZUZv
cm1WYWxpZGF0aW9uTWVzc2FnZSgpCisgICAgICAgIG1hbmFnZXMgcmVxdWVzdHMgZnJvbSBtdWx0
aXBsZSBIVE1MRm9ybUNvbnRyb2xFbGVtZW50IGluc3RhbmNlczoKKyAgICAgICAgLSBQZXJpb2Rp
Y2FsbHkgY2FsbHMgQ2hyb21lQ2xpZW50Ojp1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoKQor
ICAgICAgICAgIHRvIGZvbGxvdyBlbGVtZW50IHBvc2l0aW9uIGNoYW5nZS4KKyAgICAgICAgLSBJ
ZiBhIG1lc3NhZ2UgaXMgc2hvd24gZm9yIGEgY29udHJvbCBhbmQgdGhlIGZvY3VzIGlzIGNoYW5n
ZWQgdG8KKyAgICAgICAgICBhbm90aGVyIGludmFsaWQgY29udHJvbCwgaGlkZSB0aGUgY3VycmVu
dCBtZXNzYWdlLCB3YWl0IGEgbGl0dGxlLAorICAgICAgICAgIHRoZW4gc2hvdyBhIG1lc3NhZ2Ug
Zm9yIGFub3RoZXIgY29udHJvbC4KKyAgICAgICAgLSBJZiBhIG1lc3NhZ2UgZm9yIGEgY29udHJv
bCBpcyBzaG93biBhbmQgYW5vdGhlciBtZXNzYWdlIGZvciB0aGUKKyAgICAgICAgICBjb250cm9s
IGlzIHJlcXVlc3RlZCwgaGlkZSB0aGUgY3VycmVudCBtZXNzYWdlLCB3YWl0IGEgbGl0dGxlLAor
ICAgICAgICAgIHRoZW4gc2hvdyB0aGUgbmV3IG1lc3NhZ2UuCisKKyAgICAgICAgVGVzdDogZmFz
dC9mb3Jtcy92aXNpYmxlLXZhbGlkYXRpb24tbWVzc2FnZS5odG1sCisKKyAgICAgICAgKiBodG1s
L0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1D
b250cm9sRWxlbWVudDo6ZGV0YWNoKToKKyAgICAgICAgICBBZGQgYSBjYWxsIHRvIHVwZGF0ZVZp
c2libGVWYWxpZGF0aW9uTWVzc2FnZSgpLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250
cm9sRWxlbWVudDo6c2V0TmVlZHNXaWxsVmFsaWRhdGVDaGVjayk6IGRpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6dXBkYXRlVmlzaWJsZVZhbGlkYXRpb25N
ZXNzYWdlKToKKyAgICAgICAgICBBZGRlZC4gQ2FsbHMgQ2hyb21lOjp1cGRhdGVGb3JtVmFsaWRh
dGlvbk1lc3NhZ2UoKSBpZiB0aGUgc3RhdHVzCisgICAgICAgICAgaXMgY2hhbmdlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldE5lZWRzVmFsaWRpdHlDaGVj
ayk6CisgICAgICAgICAgQWRkIGEgY2FsbCB0byB1cGRhdGVWaXNpYmxlVmFsaWRhdGlvbk1lc3Nh
Z2UoKS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRpc3BhdGNo
Rm9jdXNFdmVudCk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxl
bWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQpOiBkaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1l
bnQ6OnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgICAgQWRkZWQgdGhlIGRlY2xh
cmF0aW9uLgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkVtcHR5Q2hyb21lQ2xpZW50Ojp1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6RW1wdHlDaHJvbWVDbGllbnQ6OnZhbGlkYXRpb25NZXNzYWdlVXBkYXRl
SW50ZXJ2YWxTZWNvbmQpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlDaHJvbWVDbGllbnQ6OnZh
bGlkYXRpb25NZXNzYWdlVXBkYXRlQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlDaHJv
bWVDbGllbnQ6OnZhbGlkYXRpb25NZXNzYWdlQmxhY2tvdXRTZWNvbmQpOgorICAgICAgICAgIEFk
ZGVkIGFzIG1vY2tzLgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNocm9tZTo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKTogU2VlIGFib3ZlLgorICAg
ICAgICAoV2ViQ29yZTo6Q2hyb21lOjpzdGFydFZhbGlkYXRpb25NZXNzYWdlQmxhY2tvdXQpOgor
ICAgICAgICAgIEEgaGVscGVyIGZvciB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoKS4KKyAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZTo6dmFsaWRhdGlvbk1lc3NhZ2VUaW1lckZpcmVkKToKKyAg
ICAgICAgICBBIGhlbHBlciBmb3IgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKCkuCisgICAg
ICAgICogcGFnZS9DaHJvbWUuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorCiAy
MDEwLTA2LTA5ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGlyayBTY2h1bHplLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVs
ZW1lbnQuY3BwCmluZGV4IGZhNWQ5NTdhMDVkOWE5NDc2MjBmNDg4OWE0MTYyNmYzMzJlMjVmM2Qu
LmM4N2JiYjQ5OGNjMjQ4NTYyNjdkN2ZiYmNmOTk3MTkxM2E2YTQ0NjYgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTc2LDYgKzc2LDEyIEBAIEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQ6On5IVE1MRm9ybUNvbnRyb2xFbGVtZW50KCkKICAgICAgICAgbV9mb3JtLT5y
ZW1vdmVGb3JtRWxlbWVudCh0aGlzKTsKIH0KIAordm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50
OjpkZXRhY2goKQoreworICAgIEhUTUxFbGVtZW50OjpkZXRhY2goKTsKKyAgICB1cGRhdGVWaXNp
YmxlVmFsaWRhdGlvbk1lc3NhZ2UoKTsKK30KKwogYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50
Ojpmb3JtTm9WYWxpZGF0ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuICFnZXRBdHRyaWJ1dGUoZm9y
bW5vdmFsaWRhdGVBdHRyKS5pc051bGwoKTsKQEAgLTMyNSw3ICszMzEsNyBAQCB2b2lkIEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQ6OnNldE5lZWRzV2lsbFZhbGlkYXRlQ2hlY2soKQogICAgIG1fd2ls
bFZhbGlkYXRlSW5pdGlhbGl6ZWQgPSB0cnVlOwogICAgIG1fd2lsbFZhbGlkYXRlID0gbmV3V2ls
bFZhbGlkYXRlOwogICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKLSAgICAvLyBGSVhNRTogU2hv
dy9oaWRlIGEgdmFsaWRhdGlvbiBtZXNzYWdlLgorICAgIHVwZGF0ZVZpc2libGVWYWxpZGF0aW9u
TWVzc2FnZSgpOwogfQogCiBTdHJpbmcgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6dmFsaWRhdGlv
bk1lc3NhZ2UoKQpAQCAtMzMzLDYgKzMzOSwyOCBAQCBTdHJpbmcgSFRNTEZvcm1Db250cm9sRWxl
bWVudDo6dmFsaWRhdGlvbk1lc3NhZ2UoKQogICAgIHJldHVybiB2YWxpZGl0eSgpLT52YWxpZGF0
aW9uTWVzc2FnZSgpOwogfQogCit2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnVwZGF0ZVZp
c2libGVWYWxpZGF0aW9uTWVzc2FnZSgpCit7CisgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCkt
PnBhZ2UoKTsKKyAgICBTdHJpbmcgbWVzc2FnZTsKKyAgICAvLyBXZSBjYW4ndCB1c2UgZm9jdXNl
ZCgpLiBUaGUgZm9jdXNlZCgpIHN0YXRlIGlzIHVwZGF0ZWQgYWZ0ZXIgZGlzcGF0Y2hGb2N1c0V2
ZW50KCkuCisgICAgaWYgKHBhZ2UgJiYgZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKSA9PSB0aGlz
ICYmIHJlbmRlcmVyKCkgJiYgd2lsbFZhbGlkYXRlKCkpIHsKKyAgICAgICAgbWVzc2FnZSA9IHZh
bGlkYXRpb25NZXNzYWdlKCkuc3RyaXBXaGl0ZVNwYWNlKCk7CisgICAgICAgIC8vIEhUTUw1IHNw
ZWNpZmljYXRpb24gZG9lc24ndCBhc2sgVUEgdG8gc2hvdyB0aGUgdGl0bGUgYXR0cmlidXRlIHZh
bHVlCisgICAgICAgIC8vIHdpdGggdGhlIHZhbGlkYXRpb25NZXNzYWdlLiAgSG93ZXZlciwgdGhp
cyBiZWhhdmlvciBpcyBzYW1lIGFzIE9wZXJhCisgICAgICAgIC8vIGFuZCB0aGUgc3BlY2lmaWNh
dGlvbiBkZXNjcmliZXMgc3VjaCBiZWhhdmlvciBhcyBhbiBleGFtcGxlLgorICAgICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIHRpdGxlID0gZ2V0QXR0cmlidXRlKHRpdGxlQXR0cik7CisgICAgICAg
IGlmICghbWVzc2FnZS5pc0VtcHR5KCkgJiYgIXRpdGxlLmlzRW1wdHkoKSkgeworICAgICAgICAg
ICAgbWVzc2FnZS5hcHBlbmQoJ1xuJyk7CisgICAgICAgICAgICBtZXNzYWdlLmFwcGVuZCh0aXRs
ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKG1fdmlzaWJsZVZhbGlkYXRpb25NZXNzYWdl
ID09IG1lc3NhZ2UpCisgICAgICAgIHJldHVybjsKKyAgICBwYWdlLT5jaHJvbWUoKS0+dXBkYXRl
Rm9ybVZhbGlkYXRpb25NZXNzYWdlKHRoaXMsIG1lc3NhZ2UpOworICAgIG1fdmlzaWJsZVZhbGlk
YXRpb25NZXNzYWdlID0gbWVzc2FnZTsKK30KKwogYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50
OjpjaGVja1ZhbGlkaXR5KFZlY3RvcjxSZWZQdHI8SFRNTEZvcm1Db250cm9sRWxlbWVudD4gPiog
dW5oYW5kbGVkSW52YWxpZENvbnRyb2xzKQogewogICAgIGlmICghd2lsbFZhbGlkYXRlKCkgfHwg
aXNWYWxpZEZvcm1Db250cm9sRWxlbWVudCgpKQpAQCAtMzYyLDcgKzM5MCw5IEBAIHZvaWQgSFRN
TEZvcm1Db250cm9sRWxlbWVudDo6c2V0TmVlZHNWYWxpZGl0eUNoZWNrKCkKICAgICAgICAgc2V0
TmVlZHNTdHlsZVJlY2FsYygpOwogICAgIH0KICAgICBtX2lzVmFsaWQgPSBuZXdJc1ZhbGlkOwot
ICAgIC8vIEZJWE1FOiBzaG93L2hpZGUgYSB2YWxpZGF0aW9uIG1lc3NhZ2UuCisgICAgLy8gQ2Fs
bHMgaXQgZXZlbiBpZiBtX2lzVmFsaWQgaXMgbm90IGNoYW5nZWQKKyAgICAvLyBiZWNhdXNlIGEg
dmFsaWRhdGlvbiBtZXNzYWdlIGNhbiBiZSBjaGFnbmVkLgorICAgIHVwZGF0ZVZpc2libGVWYWxp
ZGF0aW9uTWVzc2FnZSgpOwogfQogCiB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldEN1
c3RvbVZhbGlkaXR5KGNvbnN0IFN0cmluZyYgZXJyb3IpCkBAIC0zNzYsNiArNDA2LDcgQEAgdm9p
ZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZlbnQoKQogICAgICAgICBk
b2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+Zm9ybURpZEZvY3VzKHRoaXMp
OwogCiAgICAgSFRNTEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudCgpOworICAgIHVwZGF0ZVZp
c2libGVWYWxpZGF0aW9uTWVzc2FnZSgpOwogfQogCiB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQ6OmRpc3BhdGNoQmx1ckV2ZW50KCkKQEAgLTM4NCw2ICs0MTUsNyBAQCB2b2lkIEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KCkKICAgICAgICAgZG9jdW1lbnQoKS0+
cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPmZvcm1EaWRCbHVyKHRoaXMpOwogCiAgICAgSFRN
TEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KCk7CisgICAgdXBkYXRlVmlzaWJsZVZhbGlkYXRp
b25NZXNzYWdlKCk7CiB9CiAKIEhUTUxGb3JtRWxlbWVudCogSFRNTEZvcm1Db250cm9sRWxlbWVu
dDo6dmlydHVhbEZvcm0oKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgK
aW5kZXggYjk2MDM4MTJkZjU5M2Q3Njc2MmRiZGVhMTg2ZWVlOTQxMDhhZDI2Ny4uMWE3MDJmNTk2
YWRhNTAyNTJjN2FjOWM5NGYwMWMzYTZiNjA5ZTkxMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250
cm9sRWxlbWVudC5oCkBAIC04OCw2ICs4OCw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9v
bCB3aWxsVmFsaWRhdGUoKSBjb25zdDsKICAgICBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2UoKTsK
KyAgICAvLyBGb3IgdGVzdGluZy4KKyAgICBTdHJpbmcgdmlzaWJsZVZhbGlkYXRpb25NZXNzYWdl
KCkgeyByZXR1cm4gbV92aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2U7IH0KICAgICBib29sIGNoZWNr
VmFsaWRpdHkoVmVjdG9yPFJlZlB0cjxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PiA+KiB1bmhhbmRs
ZWRJbnZhbGlkQ29udHJvbHMgPSAwKTsKICAgICAvLyBUaGlzIG11c3QgYmUgY2FsbGVkIHdoZW4g
YSB2YWxpZGF0aW9uIGNvbnN0cmFpbnQgb3IgY29udHJvbCB2YWx1ZSBpcyBjaGFuZ2VkLgogICAg
IHZvaWQgc2V0TmVlZHNWYWxpZGl0eUNoZWNrKCk7CkBAIC0xMTgsNiArMTIwLDcgQEAgcHJvdGVj
dGVkOgogCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRm9jdXNFdmVudCgpOwogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaEJsdXJFdmVudCgpOworICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsK
IAogICAgIHZvaWQgcmVtb3ZlRnJvbUZvcm0oKTsKICAgICAvLyBUaGlzIG11c3QgYmUgY2FsbGVk
IGFueSB0aW1lIHRoZSByZXN1bHQgb2Ygd2lsbFZhbGlkYXRlKCkgaGFzIGNoYW5nZWQuCkBAIC0x
NDAsOSArMTQzLDExIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBIVE1MRm9ybUVsZW1lbnQqIHZp
cnR1YWxGb3JtKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzRGVmYXVsdEJ1dHRvbkZvckZv
cm0oKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZEZvcm1Db250cm9sRWxlbWVudCgp
OworICAgIHZvaWQgdXBkYXRlVmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlKCk7CiAKICAgICBIVE1M
Rm9ybUVsZW1lbnQqIG1fZm9ybTsKICAgICBPd25QdHI8VmFsaWRpdHlTdGF0ZT4gbV92YWxpZGl0
eVN0YXRlOworICAgIFN0cmluZyBtX3Zpc2libGVWYWxpZGF0aW9uTWVzc2FnZTsKICAgICBib29s
IG1fZGlzYWJsZWQgOiAxOwogICAgIGJvb2wgbV9yZWFkT25seSA6IDE7CiAgICAgYm9vbCBtX3Jl
cXVpcmVkIDogMTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKaW5kZXggYzYzMDkzMTY4M2UzZjMzNjE4ZTc3
MmEzMDViYjNiZDYyMDY4ZDJhOS4uMWM2ZTQ2ZjdiYjYzZGFlZDFlYjVjYTIwN2ViZDdlNzQyNjhj
MjExZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTE1MCw2ICsxNTAsMTAgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB2b2lkIGZvcm1EaWRGb2N1cyhjb25zdCBOb2RlKikgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGZvcm1EaWRCbHVyKGNvbnN0IE5vZGUqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqLCBjb25z
dCBTdHJpbmcmKSB7fQorICAgIHZpcnR1YWwgZG91YmxlIHZhbGlkYXRpb25NZXNzYWdlVXBkYXRl
SW50ZXJ2YWxTZWNvbmQoKSB7IHJldHVybiAxOyB9CisgICAgdmlydHVhbCBpbnQgdmFsaWRhdGlv
bk1lc3NhZ2VVcGRhdGVDb3VudChjb25zdCBTdHJpbmcmKSB7IHJldHVybiAxOyB9CisgICAgdmly
dHVhbCBkb3VibGUgdmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29uZCgpIHsgcmV0dXJuIDE7
IH0KIAogICAgIHZpcnR1YWwgUGFzc093blB0cjxIVE1MUGFyc2VyUXVpcmtzPiBjcmVhdGVIVE1M
UGFyc2VyUXVpcmtzKCkgeyByZXR1cm4gMDsgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lLmNwcCBiL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCmluZGV4IDAxMjQyMTFjYWQyYjll
ZTAyOTQzNGQ1NTBkMmU0NjczMDVmNzQ0N2UuLjRhZDBlMWE5M2UyNWZmYjJjMmI5MGUxZWMzMzg4
NjYwYjc0MWQzYjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCisrKyBiL1dl
YkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC00MTEsNiArNDExLDc4IEBAIHZvaWQgQ2hyb21lOjpz
ZXRUb29sVGlwKGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKICAgICBtX2NsaWVudC0+c2V0
VG9vbFRpcCh0b29sVGlwLCB0b29sVGlwRGlyZWN0aW9uKTsKIH0KIAordm9pZCBDaHJvbWU6OnVw
ZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBjb250cm9s
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgQVNTRVJUKGNvbnRyb2wpOworICAgIGlm
ICghbV92YWxpZGF0aW9uTWVzc2FnZVRpbWVyKQorICAgICAgICBtX3ZhbGlkYXRpb25NZXNzYWdl
VGltZXIuc2V0KG5ldyBUaW1lcjxDaHJvbWU+KHRoaXMsICZDaHJvbWU6OnZhbGlkYXRpb25NZXNz
YWdlVGltZXJGaXJlZCkpOworCisgICAgaWYgKG1lc3NhZ2UuaXNFbXB0eSgpKSB7CisgICAgICAg
IGlmIChtX3ZhbGlkYXRpb25NZXNzYWdlVGFyZ2V0ICE9IGNvbnRyb2wpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2VUaW1lci0+c3RvcCgpOworICAgICAg
ICBtX2NsaWVudC0+dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKGNvbnRyb2wsIG1lc3NhZ2Up
OworICAgICAgICBtX3ZhbGlkYXRpb25NZXNzYWdlID0gbWVzc2FnZTsKKyAgICAgICAgbV92YWxp
ZGF0aW9uTWVzc2FnZVRhcmdldC5jbGVhcigpOworICAgICAgICAvLyBTdGFydCB0aGUgdGltZXIg
dG8gbWFrZSBhIGJsYWNrb3V0IHBlcmlvZC4gRG8gbm90IHVzZSBzdGFydE9uZVNob3J0KCkKKyAg
ICAgICAgLy8gaW4gb3JkZXIgdG8gcmV1c2UgdGhpcyBmb3IgdGhlIG5leHQgbWVzc2FnZS4KKyAg
ICAgICAgc3RhcnRWYWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0KCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBib29sIHdhc1Zpc2libGUgPSAhbV92YWxpZGF0aW9uTWVzc2FnZS5pc0Vt
cHR5KCk7CisgICAgUmVmUHRyPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+IGxhc3RUYXJnZXQobV92
YWxpZGF0aW9uTWVzc2FnZVRhcmdldCk7CisgICAgYm9vbCByZXNldFRpbWVyID0gIXdhc1Zpc2li
bGUgfHwgbV92YWxpZGF0aW9uTWVzc2FnZVRhcmdldCAhPSBjb250cm9sIHx8IG1fdmFsaWRhdGlv
bk1lc3NhZ2UgIT0gbWVzc2FnZTsKKyAgICBtX3ZhbGlkYXRpb25NZXNzYWdlID0gbWVzc2FnZTsK
KyAgICBtX3ZhbGlkYXRpb25NZXNzYWdlVGFyZ2V0ID0gY29udHJvbDsKKyAgICBpZiAoIXJlc2V0
VGltZXIpIHsKKyAgICAgICAgbV9jbGllbnQtPnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSht
X3ZhbGlkYXRpb25NZXNzYWdlVGFyZ2V0LmdldCgpLCBtX3ZhbGlkYXRpb25NZXNzYWdlKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAod2FzVmlzaWJsZSkgeworICAgICAgICAvLyBD
bGVhciB0aGUgdmlzaWJsZSBvbGQgbWVzc2FnZS4KKyAgICAgICAgbV92YWxpZGF0aW9uTWVzc2Fn
ZVRpbWVyLT5zdG9wKCk7CisgICAgICAgIG1fY2xpZW50LT51cGRhdGVGb3JtVmFsaWRhdGlvbk1l
c3NhZ2UobGFzdFRhcmdldC5nZXQoKSwgU3RyaW5nKCkpOworICAgICAgICAvLyBXaWxsIHNob3cg
dGhlIG5ldyBtZXNzYWdlIGFmdGVyIHZhbGlkYXRpb25NZXNzYWdlQmxhY2tvdXRTZWMuCisgICAg
ICAgIHN0YXJ0VmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dCgpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIGlmIChtX3ZhbGlkYXRpb25NZXNzYWdlVGltZXItPmlzQWN0aXZlKCkpIHsKKyAgICAgICAg
ICAgIC8vIE5vdGhpbmcgdG8gZG8gaWYgaXQgaXMgaW4gYSBibGFja291dCBwZXJpb2QuIFdoZW4g
dGhlIHRpbWVyIGlzCisgICAgICAgICAgICAvLyBmaXJlZCBuZXh0IHRpbWUsIHZhbGlkYXRpb25N
ZXNzYWdlVGltZXJGaXJlZCgpIHNob3dzIHRoZSBtZXNzYWdlCisgICAgICAgICAgICAvLyBiZWNh
dXNlIG1fdmFsaWRhdGlvbk1lc3NhZ2UgaXMgbm90IGVtcHR5LgorICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgLy8gSXQncyBub3QgaW4gYSBibGFja291dCBwZXJpb2QuIFNob3cgdGhlIG1l
c3NhZ2UgaW1tZWRpYXRlbHkuCisgICAgICAgICAgICBtX2NsaWVudC0+dXBkYXRlRm9ybVZhbGlk
YXRpb25NZXNzYWdlKG1fdmFsaWRhdGlvbk1lc3NhZ2VUYXJnZXQuZ2V0KCksIG1fdmFsaWRhdGlv
bk1lc3NhZ2UpOworICAgICAgICAgICAgbV92YWxpZGF0aW9uTWVzc2FnZVRpbWVyQ291bnRlciA9
IDA7CisgICAgICAgICAgICBtX3ZhbGlkYXRpb25NZXNzYWdlVGltZXItPnN0YXJ0UmVwZWF0aW5n
KG1fY2xpZW50LT52YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUludGVydmFsU2Vjb25kKCkpOworICAg
ICAgICB9CisgICAgfQorfQorCit2b2lkIENocm9tZTo6c3RhcnRWYWxpZGF0aW9uTWVzc2FnZUJs
YWNrb3V0KCkKK3sKKyAgICBtX3ZhbGlkYXRpb25NZXNzYWdlVGltZXJDb3VudGVyID0gLTE7Cisg
ICAgbV92YWxpZGF0aW9uTWVzc2FnZVRpbWVyLT5zdGFydChtX2NsaWVudC0+dmFsaWRhdGlvbk1l
c3NhZ2VCbGFja291dFNlY29uZCgpLCBtX2NsaWVudC0+dmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJ
bnRlcnZhbFNlY29uZCgpKTsKK30KKwordm9pZCBDaHJvbWU6OnZhbGlkYXRpb25NZXNzYWdlVGlt
ZXJGaXJlZChUaW1lcjxDaHJvbWU+KiB0aW1lcikKK3sKKyAgICBpZiAobV92YWxpZGF0aW9uTWVz
c2FnZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgQVNTRVJUKG1fdmFsaWRhdGlvbk1lc3NhZ2VUaW1l
ckNvdW50ZXIgPCAwKTsKKyAgICAgICAgdGltZXItPnN0b3AoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBtX2NsaWVudC0+dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKG1fdmFsaWRh
dGlvbk1lc3NhZ2VUYXJnZXQuZ2V0KCksIG1fdmFsaWRhdGlvbk1lc3NhZ2UpOworICAgIGlmICgr
K21fdmFsaWRhdGlvbk1lc3NhZ2VUaW1lckNvdW50ZXIgPCBtX2NsaWVudC0+dmFsaWRhdGlvbk1l
c3NhZ2VVcGRhdGVDb3VudChtX3ZhbGlkYXRpb25NZXNzYWdlKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIHRpbWVyLT5zdG9wKCk7CisgICAgbV9jbGllbnQtPnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVz
c2FnZShtX3ZhbGlkYXRpb25NZXNzYWdlVGFyZ2V0LmdldCgpLCBTdHJpbmcoKSk7CisgICAgbV92
YWxpZGF0aW9uTWVzc2FnZSA9IFN0cmluZygpOworICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2VUYXJn
ZXQuY2xlYXIoKTsKKworICAgIHN0YXJ0VmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dCgpOworfQor
CiB2b2lkIENocm9tZTo6cHJpbnQoRnJhbWUqIGZyYW1lKQogewogICAgIG1fY2xpZW50LT5wcmlu
dChmcmFtZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmggYi9XZWJDb3JlL3Bh
Z2UvQ2hyb21lLmgKaW5kZXggODgwMzVhNTI4MTdmOTgzMmQ3NWEyZDlhZWI3MzQ3ZTcxMjZiYjM0
Yy4uZDIwYzI5Yjc2ZGFmYTY3MThkZWVhN2RkNDg1NTM4ZjUyNzgyNjdmMyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wYWdlL0Nocm9tZS5oCisrKyBiL1dlYkNvcmUvcGFnZS9DaHJvbWUuaApAQCAtMjQs
NyArMjQsOSBAQAogI2luY2x1ZGUgIkZpbGVDaG9vc2VyLmgiCiAjaW5jbHVkZSAiRm9jdXNEaXJl
Y3Rpb24uaCIKICNpbmNsdWRlICJIb3N0V2luZG93LmgiCisjaW5jbHVkZSAiVGltZXIuaCIKICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC00MCw2ICs0Miw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBGbG9hdFJlY3Q7CiAgICAgY2xhc3MgRnJhbWU7
CiAgICAgY2xhc3MgR2VvbG9jYXRpb247CisgICAgY2xhc3MgSFRNTEZvcm1Db250cm9sRWxlbWVu
dDsKICAgICBjbGFzcyBIaXRUZXN0UmVzdWx0OwogICAgIGNsYXNzIEludFJlY3Q7CiAgICAgY2xh
c3MgTm9kZTsKQEAgLTEyOSw2ICsxMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoY29uc3QgSGl0VGVzdFJlc3VsdCYsIHVuc2ln
bmVkIG1vZGlmaWVyRmxhZ3MpOwogCiAgICAgICAgIHZvaWQgc2V0VG9vbFRpcChjb25zdCBIaXRU
ZXN0UmVzdWx0Jik7CisgICAgICAgIHZvaWQgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKEhU
TUxGb3JtQ29udHJvbEVsZW1lbnQqLCBjb25zdCBTdHJpbmcmKTsKIAogICAgICAgICB2b2lkIHBy
aW50KEZyYW1lKik7CiAKQEAgLTE0OSw4ICsxNTMsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
I2VuZGlmCiAKICAgICBwcml2YXRlOgorICAgICAgICB2b2lkIHZhbGlkYXRpb25NZXNzYWdlVGlt
ZXJGaXJlZChUaW1lcjxDaHJvbWU+Kik7CisgICAgICAgIHZvaWQgc3RhcnRWYWxpZGF0aW9uTWVz
c2FnZUJsYWNrb3V0KCk7CisKICAgICAgICAgUGFnZSogbV9wYWdlOwogICAgICAgICBDaHJvbWVD
bGllbnQqIG1fY2xpZW50OworICAgICAgICBPd25QdHI8VGltZXI8Q2hyb21lPio+IG1fdmFsaWRh
dGlvbk1lc3NhZ2VUaW1lcjsKKyAgICAgICAgaW50IG1fdmFsaWRhdGlvbk1lc3NhZ2VUaW1lckNv
dW50ZXI7CisgICAgICAgIFN0cmluZyBtX3ZhbGlkYXRpb25NZXNzYWdlOworICAgICAgICBSZWZQ
dHI8SFRNTEZvcm1Db250cm9sRWxlbWVudD4gbV92YWxpZGF0aW9uTWVzc2FnZVRhcmdldDsKICAg
ICB9OwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9XZWJD
b3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggYzkzYjNjOWI0OTExZTJhNTY3MTRhM2Y0MmYw
ODI0MjM5ZThhNDI2Ni4uNTAyODgzZTFlMjkzZDZiZjg2YTRjMjhjYzMwZDFlMDE5Y2EwYjE0YiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1dlYkNvcmUvcGFn
ZS9DaHJvbWVDbGllbnQuaApAQCAtNDcsNiArNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgY2xhc3MgRmxvYXRSZWN0OwogICAgIGNsYXNzIEZyYW1lOwogICAgIGNsYXNzIEdlb2xvY2F0
aW9uOworICAgIGNsYXNzIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ7CiAgICAgY2xhc3MgSFRNTFBh
cnNlclF1aXJrczsKICAgICBjbGFzcyBIaXRUZXN0UmVzdWx0OwogICAgIGNsYXNzIEludFJlY3Q7
CkBAIC0yMDIsNiArMjAzLDI5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgCiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBmb3JtRGlkRm9jdXMoY29uc3QgTm9kZSopIHsgfTsKICAgICAgICAg
dmlydHVhbCB2b2lkIGZvcm1EaWRCbHVyKGNvbnN0IE5vZGUqKSB7IH07CisgICAgICAgIC8vIFNo
b3cgdGhlIHNwZWNpZmllZCBtZXNzYWdlIGZvciB0aGUgZm9ybSBjb250cm9sLiBIaWRlIHRoZSBt
ZXNzYWdlCisgICAgICAgIC8vIGlmIHRoZSBzdHJpbmcgaXMgZW1wdHkuIElmIHVwZGF0ZUZvcm1W
YWxpZGF0aW9uTWVzc2FnZSgpIHdpdGgKKyAgICAgICAgLy8gbm9uLWVtcHR5IG1lc3NhZ2UgaXMg
Y2FsbGVkLCB0aGUgc3Vic2VxdWVudCBjYWxscyBvZgorICAgICAgICAvLyB1cGRhdGVGb3JtVmFs
aWRhdGlvbk1lc3NhZ2UoKSBtdXN0IGJlIGZvciB0aGUgc2FtZSBlbGVtZW50IGFuZCB0aGUKKyAg
ICAgICAgLy8gc2FtZSBtZXNzYWdlLiAgVGhlbiwgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdl
KCkgaXMgY2FsbGVkIHdpdGgKKyAgICAgICAgLy8gdGhlIHNhbWUgZWxlbWVudCBhbmQgdGhlIGVt
cHR5IG1lc3NhZ2UuCisgICAgICAgIC8vICB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc2FnZShjb250
cm9sMSwgIm1lc3NhZ2UxIikgLT4KKyAgICAgICAgLy8gIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVz
YWdlKGNvbnRyb2wxLCAibWVzc2FnZTEiKSAtPgorICAgICAgICAvLyAgdXBkYXRlRm9ybVZhbGlk
YXRpb25NZXNhZ2UoY29udHJvbDEsICJtZXNzYWdlMSIpIC4uLiAobXVsdGlwbGUgdGltZXMpCisg
ICAgICAgIC8vICB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc2FnZShjb250cm9sMSwgIiIpCisgICAg
ICAgIC8vIEluIHRoaXMgc2VxdWVuY2UsIGNhbGxzIHdpdGggb3RoZXIgY29udHJvbHMgb3Igb3Ro
ZXIgbWVzc2FnZXMKKyAgICAgICAgLy8gbmV2ZXIgaGFwcGVuLgorICAgICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqLCBj
b25zdCBTdHJpbmcmKSA9IDA7CisgICAgICAgIC8vIEFmdGVyIHRoZSBmaXJzdCBjYWxsIG9mIHVw
ZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShlLCAibWVzc2FnZTEiKSwKKyAgICAgICAgLy8gaXQg
aXMgY2FsbGVkIHJlcGVhdGVkbHkgZXZlcnkgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRlcnZh
bFNlY29uZCgpCisgICAgICAgIC8vIHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlQ291bnQoKS0xIHRp
bWVzLAorICAgICAgICAvLyB0aGVuIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShlLCAiIikg
aXMgY2FsbGVkIGFmdGVyCisgICAgICAgIC8vIHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlSW50ZXJ2
YWxTZWNvbmQoKS4KKyAgICAgICAgLy8gQWZ0ZXIgdGhhdCwgdXBkYXRlRm9ybVZhbGlkYXRpb25N
ZXNzYWdlKCkgaXMgbmV2ZXIgY2FsbGVkIGZvcgorICAgICAgICAvLyB2YWxpZGF0aW9uTWVzc2Fn
ZUJsYWNrb3V0U2Vjb25kKCkuCisgICAgICAgIHZpcnR1YWwgZG91YmxlIHZhbGlkYXRpb25NZXNz
YWdlVXBkYXRlSW50ZXJ2YWxTZWNvbmQoKSA9IDA7CisgICAgICAgIHZpcnR1YWwgaW50IHZhbGlk
YXRpb25NZXNzYWdlVXBkYXRlQ291bnQoY29uc3QgU3RyaW5nJikgPSAwOworICAgICAgICB2aXJ0
dWFsIGRvdWJsZSB2YWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0U2Vjb25kKCkgPSAwOwogCiAgICAg
ICAgIHZpcnR1YWwgUGFzc093blB0cjxIVE1MUGFyc2VyUXVpcmtzPiBjcmVhdGVIVE1MUGFyc2Vy
UXVpcmtzKCkgPSAwOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvQ2hhbmdlTG9nIGIvV2ViS2l0L0No
YW5nZUxvZwppbmRleCAyMzdiMTQ0ZWQyYjM5YzNmYWU4MmEzOTJjYjFiZGMyMTJkNzZkY2ZkLi5i
MGJlNjlhNmNlN2UwMTBmODFlMTExMDcyNjQzZTZkOTg1NzU3OTEwIDEwMDY0NAotLS0gYS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAx
MC0wNC0wMSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRnJhbWV3b3JrIHRvIHNob3cgZm9y
bSB2YWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGludmFsaWQgY29udHJvbHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNzE4CisKKyAgICAgICAgQWRkIHN0
dWIgZnVuY3Rpb25zIGZvciB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoKSwKKyAgICAgICAg
dmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRlcnZhbFNlY29uZCgpLAorICAgICAgICB2YWxpZGF0
aW9uTWVzc2FnZVVwZGF0ZUNvdW50KCksIGFuZAorICAgICAgICB2YWxpZGF0aW9uTWVzc2FnZUJs
YWNrb3V0U2Vjb25kKCkuCisKKyAgICAgICAgKiBlZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6dXBkYXRlRm9y
bVZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgKiBlZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50RWZsLmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OnZhbGlkYXRp
b25NZXNzYWdlVXBkYXRlSW50ZXJ2YWxTZWNvbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21l
Q2xpZW50RWZsOjp2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUNvdW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkNocm9tZUNsaWVudEVmbDo6dmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29uZCk6CisK
IDIwMTAtMDYtMDEgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDVkMzlmY2EyZDM2NmE1
NDRjMjhmZmNiN2QxMDhhMThkNzQwNWEyNDguLjYzMTRkODM5ZTZlYzliMGEwNWU5NzIzZTJlN2U0
ZDI3M2JlOTM1MjYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEwLTA0LTAxICBL
ZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGcmFtZXdvcmsgdG8gc2hvdyBmb3JtIHZhbGlkYXRp
b24gbWVzc2FnZSBmb3IgaW52YWxpZCBjb250cm9scworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE3MTgKKworICAgICAgICBBZGQgc3R1YiBmdW5jdGlv
bnMgZm9yIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSgpLAorICAgICAgICB2YWxpZGF0aW9u
TWVzc2FnZVVwZGF0ZUludGVydmFsU2Vjb25kKCksCisgICAgICAgIHZhbGlkYXRpb25NZXNzYWdl
VXBkYXRlQ291bnQoKSwgYW5kCisgICAgICAgIHZhbGlkYXRpb25NZXNzYWdlQmxhY2tvdXRTZWNv
bmQoKS4KKworICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKToKKyAg
ICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5oOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVD
bGllbnRJbXBsOjp2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUludGVydmFsU2Vjb25kKToKKyAgICAg
ICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6dmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3Vu
dCk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OnZhbGlkYXRpb25NZXNzYWdl
QmxhY2tvdXRTZWNvbmQpOgorCiAyMDEwLTA2LTA5ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAppbmRleCA2NTkxMGY4MzFiYzc0MDA0
MjM3ZTIxZjZkNDRjMjkzNzFmNjY3OWJjLi5kNmEyMzFmMDMwZTE0MGY1MjYwOTdiOTQ2MTExMDky
ZGZmMTNkNGI1IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudElt
cGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKQEAg
LTY1NCw2ICs2NTQsMTEgQEAgdm9pZCBDaHJvbWVDbGllbnRJbXBsOjpmb3JtU3RhdGVEaWRDaGFu
Z2UoY29uc3QgTm9kZSogbm9kZSkKICAgICAgICAgd2ViZnJhbWUtPmNsaWVudCgpLT5kaWRVcGRh
dGVDdXJyZW50SGlzdG9yeUl0ZW0od2ViZnJhbWUpOwogfQogCit2b2lkIENocm9tZUNsaWVudElt
cGw6OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xF
bGVtZW50KiwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCiB2b2lkIENocm9tZUNsaWVudEltcGw6OmdldFBvcHVwTWVudUluZm8oUG9wdXBDb250
YWluZXIqIHBvcHVwQ29udGFpbmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYlBvcHVwTWVudUluZm8qIGluZm8pCiB7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21l
Q2xpZW50SW1wbC5oCmluZGV4IDNiNWViZDUyYjAyYmJmOWMyYmFiMzRhYTY5MDI5NjhlMGE5MTJi
NTYuLjFmNDI4MTFmMWM5ZDU0OWVlYWIyZmYyZGEyZjM2Mjg1YzAwYzc4NmEgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCisrKyBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCkBAIC0xMjgsNiArMTI4LDEwIEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgY2hvb3NlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpTdHJpbmc+JiwgV2ViQ29yZTo6RmlsZUNob29zZXIqKTsKICAgICB2aXJ0dWFsIGJvb2wgc2V0
Q3Vyc29yKFdlYkNvcmU6OlBsYXRmb3JtQ3Vyc29ySGFuZGxlKSB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZpcnR1YWwgdm9pZCBmb3JtU3RhdGVEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6Tm9kZSop
OworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoV2ViQ29yZTo6
SFRNTEZvcm1Db250cm9sRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpOworICAgIHZp
cnR1YWwgZG91YmxlIHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlSW50ZXJ2YWxTZWNvbmQoKSB7IHJl
dHVybiAwLjM7IC8qIEZJWE1FICovIH0KKyAgICB2aXJ0dWFsIGludCB2YWxpZGF0aW9uTWVzc2Fn
ZVVwZGF0ZUNvdW50KGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIDIwOyAvKiBGSVhNRSAqLyB9Cisg
ICAgdmlydHVhbCBkb3VibGUgdmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29uZCgpIHsgcmV0
dXJuIDAuNjsgLyogRklYTUUgKi8gfQogICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJDb3JlOjpI
VE1MUGFyc2VyUXVpcmtzPiBjcmVhdGVIVE1MUGFyc2VyUXVpcmtzKCkgeyByZXR1cm4gMDsgfQog
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgLy8gRklYTUU6IEFsbCB0b3VjaCBldmVudHMg
YXJlIGZvcndhcmRlZCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgb3Igbm90IHRoZXkgYXJlIG5lZWRl
ZC4KZGlmZiAtLWdpdCBhL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZs
LmNwcCBiL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcAppbmRl
eCBjNTFiZWZiMjRiYTQ1NGQzZWExYmUyMGI3ZmY1MzE5MjZjNWE2OTAwLi4wMTNiZWNlY2Y0MzBh
MmJiZWRiYWMyMTk4YTdjZDQ4YWMyMDlhYzVhIDEwMDY0NAotLS0gYS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKKysrIGIvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCkBAIC0zODQsNiArMzg0LDExIEBAIHZvaWQgQ2hyb21l
Q2xpZW50RWZsOjpmb3JtU3RhdGVEaWRDaGFuZ2UoY29uc3QgTm9kZSopCiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KIAordm9pZCBDaHJvbWVDbGllbnRFZmw6OnVwZGF0ZUZvcm1WYWxpZGF0aW9u
TWVzc2FnZShXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6
U3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiBib29sIENocm9tZUNsaWVu
dEVmbDo6c2V0Q3Vyc29yKFBsYXRmb3JtQ3Vyc29ySGFuZGxlKQogewogICAgIG5vdEltcGxlbWVu
dGVkKCk7CmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEVmbC5oIGIvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaAppbmRl
eCAzOTllZjdmMGIxMmFhYTY1Mjc3ZGNkMzgzNTlhMzI4MzJkNzUxMWIxLi4wNmY5YzYyNDhkMGY5
ZjI5NmRjYzkyODNmNGIxOGFiM2YwZDE4MmJjIDEwMDY0NAotLS0gYS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCisrKyBiL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50RWZsLmgKQEAgLTExNSw2ICsxMTUsMTAgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBydW5PcGVuUGFuZWwoRnJhbWUqLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPik7
CiAgICAgdmlydHVhbCB2b2lkIGNob29zZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYsIEZpbGVDaG9vc2VyKik7CiAgICAgdmlydHVhbCB2b2lkIGZvcm1TdGF0ZURpZENoYW5nZShj
b25zdCBOb2RlKik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2Fn
ZShXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50LCBjb25zdCBXZWJDb3JlOjpTdHJpbmcm
KTsKKyAgICB2aXJ0dWFsIGRvdWJsZSB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUludGVydmFsU2Vj
b25kKCkgeyByZXR1cm4gMC4zOyAvKiBGSVhNRSAqLyB9CisgICAgdmlydHVhbCBpbnQgdmFsaWRh
dGlvbk1lc3NhZ2VVcGRhdGVDb3VudChjb25zdCBTdHJpbmcmKSB7IHJldHVybiAyMDsgLyogRklY
TUUgKi8gfQorICAgIHZpcnR1YWwgZG91YmxlIHZhbGlkYXRpb25NZXNzYWdlQmxhY2tvdXRTZWNv
bmQoKSB7IHJldHVybiAwLjY7IC8qIEZJWE1FICovIH0KIAogICAgIHZpcnR1YWwgUGFzc093blB0
cjxIVE1MUGFyc2VyUXVpcmtzPiBjcmVhdGVIVE1MUGFyc2VyUXVpcmtzKCkgeyByZXR1cm4gMDsg
fQogCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1dlYktpdC9ndGsvQ2hhbmdl
TG9nCmluZGV4IGY3ZjRjOGY3MGIxYTVlNmFmNTQ4NDRiYjE2ZTUwYmVlMmU4ODQ3MjYuLmFmZWEz
YWJjNTIyYmY1Y2ZkNjNhYzVjNzMxNDUxYzU1YmJhZjZkYzEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9n
dGsvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAK
KzIwMTAtMDQtMDEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyYW1ld29yayB0byBzaG93
IGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnZhbGlkIGNvbnRyb2xzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTcxOAorCisgICAgICAgIEFk
ZCBzdHViIGZ1bmN0aW9ucyBmb3IgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKCksCisgICAg
ICAgIHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlSW50ZXJ2YWxTZWNvbmQoKSwKKyAgICAgICAgdmFs
aWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3VudCgpLCBhbmQKKyAgICAgICAgdmFsaWRhdGlvbk1lc3Nh
Z2VCbGFja291dFNlY29uZCgpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50Ojp1cGRhdGVGb3JtVmFs
aWRhdGlvbk1lc3NhZ2UpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0
ay5oOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnZhbGlkYXRpb25NZXNzYWdlVXBk
YXRlSW50ZXJ2YWxTZWNvbmQpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnZhbGlk
YXRpb25NZXNzYWdlVXBkYXRlQ291bnQpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6
OnZhbGlkYXRpb25NZXNzYWdlQmxhY2tvdXRTZWNvbmQpOgorCiAyMDEwLTA2LTA4ICBYYW4gTG9w
ZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5v
cm9uaGEuCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEd0ay5jcHAgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAK
aW5kZXggNTc1OTYwMTM1ZWY1NjdmZDk3MDMzMWE4YjAzZTNjZjhiNzE4MDYzNS4uMTU1NzBmNzAz
NWM3MTY3MGJkMDE2NDA2MGM0YjdmZWRlOGY4MTkxYSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCisrKyBiL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcApAQCAtNTY0LDYgKzU2NCwxMSBAQCB2b2lkIENo
cm9tZUNsaWVudDo6Y2hvb3NlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTdHJp
bmc+JiBmaWxlbmFtZXMsCiAgICAgY2hvb3Nlci0+aWNvbkxvYWRlZChJY29uOjpjcmVhdGVJY29u
Rm9yRmlsZXMoZmlsZW5hbWVzKSk7CiB9CiAKK3ZvaWQgQ2hyb21lQ2xpZW50Ojp1cGRhdGVGb3Jt
VmFsaWRhdGlvbk1lc3NhZ2UoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudCosIGNvbnN0
IFdlYkNvcmU6OlN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogYm9vbCBD
aHJvbWVDbGllbnQ6OnNldEN1cnNvcihQbGF0Zm9ybUN1cnNvckhhbmRsZSkKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRHdGsuaCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3Rr
LmgKaW5kZXggNDZkMDE1ZWRhYjdlMDU1YTliMGRhZTYyNmI1MDExZDNkMWE2Yzg3My4uNTBhNDEz
YzgxY2Q2ZjYwNTJjZDExOTA0NWRiZGVmYjg1NDRkMDJjYSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAorKysgYi9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCkBAIC0xMTMsNiArMTEzLDEwIEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFsIHZvaWQgY2hvb3NlSWNvbkZvckZpbGVzKGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpTdHJpbmc+JiwgV2ViQ29yZTo6RmlsZUNob29zZXIqKTsKIAogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZm9ybVN0YXRlRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6Ok5vZGUq
KSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShX
ZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7
CisgICAgICAgIHZpcnR1YWwgZG91YmxlIHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlSW50ZXJ2YWxT
ZWNvbmQoKSB7IHJldHVybiAwLjM7IC8qIEZJWE1FICovIH0KKyAgICAgICAgdmlydHVhbCBpbnQg
dmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3VudChjb25zdCBXZWJDb3JlOjpTdHJpbmcmKSB7IHJl
dHVybiAyMDsgLyogRklYTUUgKi8gfQorICAgICAgICB2aXJ0dWFsIGRvdWJsZSB2YWxpZGF0aW9u
TWVzc2FnZUJsYWNrb3V0U2Vjb25kKCkgeyByZXR1cm4gMC42OyAvKiBGSVhNRSAqLyB9CiAKICAg
ICAgICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkNvcmU6OkhUTUxQYXJzZXJRdWlya3M+IGNyZWF0
ZUhUTUxQYXJzZXJRdWlya3MoKSB7IHJldHVybiAwOyB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9o
YWlrdS9DaGFuZ2VMb2cgYi9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCmluZGV4IDM1YWQ5OGExN2Fk
NmZiMmU5MzFmMjg5MzNkNTk5ODlkNWUyMzY1NTMuLjU4OTBkMTRmYjY0YjE1MDQ3OWYyMzRjM2Vl
OTI1YTM4ODEwYTBjNWQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKKysrIGIv
V2ViS2l0L2hhaWt1L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEwLTA0LTAxICBLZW50
IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBGcmFtZXdvcmsgdG8gc2hvdyBmb3JtIHZhbGlkYXRpb24g
bWVzc2FnZSBmb3IgaW52YWxpZCBjb250cm9scworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE3MTgKKworICAgICAgICBBZGQgc3R1YiBmdW5jdGlvbnMg
Zm9yIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSgpLAorICAgICAgICB2YWxpZGF0aW9uTWVz
c2FnZVVwZGF0ZUludGVydmFsU2Vjb25kKCksCisgICAgICAgIHZhbGlkYXRpb25NZXNzYWdlVXBk
YXRlQ291bnQoKSwgYW5kCisgICAgICAgIHZhbGlkYXRpb25NZXNzYWdlQmxhY2tvdXRTZWNvbmQo
KS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1Ojp1cGRhdGVGb3JtVmFsaWRhdGlvbk1l
c3NhZ2UpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6dmFsaWRhdGlvbk1lc3NhZ2VVcGRh
dGVJbnRlcnZhbFNlY29uZCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRIYWlrdTo6
dmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVD
bGllbnRIYWlrdTo6dmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29uZCk6CisKIDIwMTAtMDUt
MzEgIEx5b24gQ2hlbiAgPGxpYWNoZW5AcmltLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBL
ZW50IFRhbXVyYS4KZGlmZiAtLWdpdCBhL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRIYWlrdS5jcHAgYi9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50SGFpa3UuY3BwCmluZGV4IDJjZjVjMzE2Y2E3MWI2ZGQyZjVjZTM3ZGI5NzQ0ZmRkOGMwZmYy
MzEuLjEzMjFlZGFlOThiODY3NDBiOTk4MjIzZjcwYzA3MDJiZmMwYTg5YmYgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5jcHAKKysrIGIv
V2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmNwcApAQCAtMzc1
LDYgKzM3NSwxMSBAQCB2b2lkIENocm9tZUNsaWVudEhhaWt1Ojpmb3JtU3RhdGVEaWRDaGFuZ2Uo
Y29uc3QgTm9kZSopCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBDaHJvbWVDbGll
bnRIYWlrdTo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKFdlYkNvcmU6OkhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKIFBhc3NPd25QdHI8SFRNTFBhcnNlclF1aXJrcz4gQ2hyb21lQ2xpZW50SGFp
a3U6OmNyZWF0ZUhUTUxQYXJzZXJRdWlya3MoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRp
ZmYgLS1naXQgYS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3Uu
aCBiL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5oCmluZGV4
IGQ1YTM3MmIwZmJjMmVlYjVmNmIzMTJjYWFmYzcyODI1NWEzZGYzN2IuLjk0ZWM3NWJlNGNlMWY1
OWRlNDI3MmY0ZGVkODJmMGNkOGNhYTM2M2UgMTAwNjQ0Ci0tLSBhL1dlYktpdC9oYWlrdS9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5oCisrKyBiL1dlYktpdC9oYWlrdS9XZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5oCkBAIC0xNDUsNiArMTQ1LDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgLy8gTm90aWZpY2F0aW9uIHRoYXQgdGhlIGdpdmVuIGZvcm0g
ZWxlbWVudCBoYXMgY2hhbmdlZC4gVGhpcyBmdW5jdGlvbgogICAgICAgICAvLyB3aWxsIGJlIGNh
bGxlZCBmcmVxdWVudGx5LCBzbyBoYW5kbGluZyBzaG91bGQgYmUgdmVyeSBmYXN0LgogICAgICAg
ICB2b2lkIGZvcm1TdGF0ZURpZENoYW5nZShjb25zdCBOb2RlKik7CisgICAgICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9s
RWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpOworICAgICAgICB2aXJ0dWFsIGRvdWJs
ZSB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUludGVydmFsU2Vjb25kKCkgeyByZXR1cm4gMC4zOyAv
KiBGSVhNRSAqLyB9CisgICAgICAgIHZpcnR1YWwgaW50IHZhbGlkYXRpb25NZXNzYWdlVXBkYXRl
Q291bnQoY29uc3QgU3RyaW5nJikgeyByZXR1cm4gMjA7IC8qIEZJWE1FICovIH0KKyAgICAgICAg
dmlydHVhbCBkb3VibGUgdmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29uZCgpIHsgcmV0dXJu
IDAuNjsgLyogRklYTUUgKi8gfQogCiAgICAgICAgIFBhc3NPd25QdHI8SFRNTFBhcnNlclF1aXJr
cz4gY3JlYXRlSFRNTFBhcnNlclF1aXJrcygpOwogICAgIH07CmRpZmYgLS1naXQgYS9XZWJLaXQv
bWFjL0NoYW5nZUxvZyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGM5ZWZkYzZmMmRmNzk0
MTk5ZDE0ZGE2YzkxMDJjNmNlZDVkM2EzMmQuLjc1ZTUwMzBlY2NlMDg3NzkxZjUxZDczMDQ0ZWY3
OTliZTM2NDljMTEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTAtMDQtMDEgIEtlbnQgVGFtdXJh
ICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEZyYW1ld29yayB0byBzaG93IGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdl
IGZvciBpbnZhbGlkIGNvbnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zMTcxOAorCisgICAgICAgIEFkZCBzdHViIGZ1bmN0aW9ucyBmb3IgdXBk
YXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKCksCisgICAgICAgIHZhbGlkYXRpb25NZXNzYWdlVXBk
YXRlSW50ZXJ2YWxTZWNvbmQoKSwKKyAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3Vu
dCgpLCB2YWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0U2Vjb25kKCksIGFuZAorICAgICAgICBhIGhl
bHBlciBmb3IgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZv
ckVsZW1lbnRCeUlkKCkuCisKKyAgICAgICAgKiBNaXNjL1dlYkNvcmVTdGF0aXN0aWNzLmg6Cisg
ICAgICAgICogTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUg
dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQ6XSk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6
OnZhbGlkYXRpb25NZXNzYWdlVXBkYXRlSW50ZXJ2YWxTZWNvbmQpOgorICAgICAgICAoV2ViQ2hy
b21lQ2xpZW50Ojp2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUNvdW50KToKKyAgICAgICAgKFdlYkNo
cm9tZUNsaWVudDo6dmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29uZCk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tOgorICAgICAgICAoV2ViQ2hyb21lQ2xp
ZW50Ojp1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UpOgorCisKIDIwMTAtMDYtMDggIE1hcmsg
Um93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGVsZSBQZXRl
cnNvbi4KZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5oIGIv
V2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLmgKaW5kZXggYTExYzA2NDQ4YzhjN2Y1
ZGE4MmIwZjJlYzY2NWU1NWJlMjUzODliYy4uNmE5ZGRhMjdhY2MzMDUxZTI2YTBkYmZmNDFlMzI1
NWMwOTc5YTYxOCAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNz
LmgKKysrIGIvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLmgKQEAgLTg3LDQgKzg3
LDUgQEAKIC0gKE5TU3RyaW5nICopY291bnRlclZhbHVlRm9yRWxlbWVudDooRE9NRWxlbWVudCop
ZWxlbWVudDsKIC0gKGludClwYWdlTnVtYmVyRm9yRWxlbWVudDooRE9NRWxlbWVudCopZWxlbWVu
dDooZmxvYXQpcGFnZVdpZHRoSW5QaXhlbHM6KGZsb2F0KXBhZ2VIZWlnaHRJblBpeGVsczsKIC0g
KGludCludW1iZXJPZlBhZ2VzOihmbG9hdClwYWdlV2lkdGhJblBpeGVsczooZmxvYXQpcGFnZUhl
aWdodEluUGl4ZWxzOworLSAoTlNTdHJpbmcgKil2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JF
bGVtZW50QnlJZDooTlNTdHJpbmcgKillbGVtZW50SWQ7CiBAZW5kCmRpZmYgLS1naXQgYS9XZWJL
aXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW0gYi9XZWJLaXQvbWFjL01pc2MvV2ViQ29y
ZVN0YXRpc3RpY3MubW0KaW5kZXggYzNmYzIzZWNmNDg3MTcxNTQwNTc2MWIxYzRhMDRjNTRjMzk0
YzA1OC4uMDcwNDM2N2EyMDdkNjJmYTQxMWRjNjFkOWMwZGQ4NjI2M2VmMGE5NyAxMDA2NDQKLS0t
IGEvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tCisrKyBiL1dlYktpdC9tYWMv
TWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW1wb3J0ICJX
ZWJDb3JlU3RhdGlzdGljcy5oIgogCisjaW1wb3J0ICJET01Eb2N1bWVudEludGVybmFsLmgiCiAj
aW1wb3J0ICJET01FbGVtZW50SW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYkNhY2hlLmgiCiAjaW1w
b3J0ICJXZWJGcmFtZUludGVybmFsLmgiCkBAIC0zNyw2ICszOCw3IEBACiAjaW1wb3J0IDxXZWJD
b3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dDQ29udHJvbGxlci5oPgogI2ltcG9ydCA8
V2ViQ29yZS9HbHlwaFBhZ2VUcmVlTm9kZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9IVE1MRm9ybUNv
bnRyb2xFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ljb25EYXRhYmFzZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9KU0RPTVdpbmRvdy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlQ2FjaGUuaD4K
QEAgLTI3NSw0ICsyNzcsMTUgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgcmV0dXJu
IFByaW50Q29udGV4dDo6bnVtYmVyT2ZQYWdlcyhfcHJpdmF0ZS0+Y29yZUZyYW1lLCBGbG9hdFNp
emUocGFnZVdpZHRoSW5QaXhlbHMsIHBhZ2VIZWlnaHRJblBpeGVscykpOwogfQogCistIChOU1N0
cmluZyAqKXZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkOihOU1N0cmluZyAq
KWVsZW1lbnRJZAoreworICAgIERPTUVsZW1lbnQqIGVsZW1lbnQgPSBbW3NlbGYgRE9NRG9jdW1l
bnRdIGdldEVsZW1lbnRCeUlkOmVsZW1lbnRJZF07CisgICAgaWYgKCFlbGVtZW50KQorICAgICAg
ICByZXR1cm4gbmlsOworICAgIEVsZW1lbnQqIGNvcmVFbGVtZW50ID0gY29yZShlbGVtZW50KTsK
KyAgICBpZiAoIWNvcmVFbGVtZW50LT5pc0Zvcm1Db250cm9sRWxlbWVudCgpKQorICAgICAgICBy
ZXR1cm4gbmlsOworICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGZvcm1Db250cm9sID0gc3Rh
dGljX2Nhc3Q8SFRNTEZvcm1Db250cm9sRWxlbWVudCo+KGNvcmVFbGVtZW50KTsKKyAgICByZXR1
cm4gKE5TU3RyaW5nKilmb3JtQ29udHJvbC0+dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlKCk7Cit9
CiBAZW5kCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRl
eCA3ZGVlYTc5YTJiZTk1Mzk5ZThlOGZlYjY5NDkxMTI5ZDNmZGFiM2E3Li4yZjA1Y2U4NTQ0YjEx
ODdhOWY3YmZlMGU1NjcyNThhZTU1YTZhNzQwIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTE0Nyw2ICsxNDcsMTAgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB2b2lkIGZvcm1EaWRGb2N1cyhjb25zdCBXZWJDb3JlOjpOb2RlKik7CiAgICAgdmly
dHVhbCB2b2lkIGZvcm1EaWRCbHVyKGNvbnN0IFdlYkNvcmU6Ok5vZGUqKTsKKyAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJv
bEVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGRvdWJsZSB2
YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUludGVydmFsU2Vjb25kKCkgeyByZXR1cm4gMC4zOyAvKiBG
SVhNRSAqLyB9CisgICAgdmlydHVhbCBpbnQgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3VudChj
b25zdCBXZWJDb3JlOjpTdHJpbmcmKSB7IHJldHVybiAyMDsgLyogRklYTUUgKi8gfQorICAgIHZp
cnR1YWwgZG91YmxlIHZhbGlkYXRpb25NZXNzYWdlQmxhY2tvdXRTZWNvbmQoKSB7IHJldHVybiAw
LjY7IC8qIEZJWE1FICovIH0KIAogICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJDb3JlOjpIVE1M
UGFyc2VyUXVpcmtzPiBjcmVhdGVIVE1MUGFyc2VyUXVpcmtzKCkgeyByZXR1cm4gMDsgfQogCmRp
ZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbSBi
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCmluZGV4IDBhNTJh
OWY3MDdkYWEwYjE3ZGI0NjQ5MDk4MDYwMDg4MGY5MDMyMzIuLjlhODg3NWI2ODNlNWQzMzZmNTdl
NjFiYTgzNDZkODk5OGMwNjI1OTAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50Lm1tCisrKyBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50Lm1tCkBAIC03MDUsNiArNzA1LDExIEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50
Ojpmb3JtRGlkQmx1cihjb25zdCBXZWJDb3JlOjpOb2RlKiBub2RlKQogICAgIENhbGxVSURlbGVn
YXRlKG1fd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6Zm9ybURpZEJsdXJOb2RlOiksIGtpdChj
b25zdF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihub2RlKSkpOwogfQogCit2b2lkIFdlYkNocm9tZUNs
aWVudDo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJv
bEVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmKQoreworICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgdGhpcy4KK30KKwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAogdm9p
ZCBXZWJDaHJvbWVDbGllbnQ6OmF0dGFjaFJvb3RHcmFwaGljc0xheWVyKEZyYW1lKiBmcmFtZSwg
R3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9DaGFu
Z2VMb2cgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDFiMzI2MGVhNDBjYWJkNDI3ZDRjN2E0
Y2RjZWZhM2VlYTk1NTE4N2IuLmNkNjQ3ZmJkMTM5MmFlY2JhNzljY2IzYzJlZWJmMDAzMWQ5MTgw
MWIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3F0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEwLTA0LTAxICBLZW50IFRhbXVyYSAgPHRrZW50QGNo
cm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBGcmFtZXdvcmsgdG8gc2hvdyBmb3JtIHZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW52YWxp
ZCBjb250cm9scworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzE3MTgKKworICAgICAgICBBZGQgc3R1YiBmdW5jdGlvbnMgZm9yIHVwZGF0ZUZvcm1WYWxp
ZGF0aW9uTWVzc2FnZSgpLAorICAgICAgICB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUludGVydmFs
U2Vjb25kKCksCisgICAgICAgIHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlQ291bnQoKSwgYW5kCisg
ICAgICAgIHZhbGlkYXRpb25NZXNzYWdlQmxhY2tvdXRTZWNvbmQoKS4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9t
ZUNsaWVudFF0Ojp1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGll
bnRRdDo6dmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRlcnZhbFNlY29uZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6dmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6dmFsaWRhdGlvbk1lc3NhZ2VCbGFja291
dFNlY29uZCk6CisKIDIwMTAtMDYtMDggIEFudG9uaW8gR29tZXMgIDx0b25pa2l0b29Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBPamFuIFZhZmFpIGFuZCBEYXJpbiBBZGxlci4K
ZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAg
Yi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCmluZGV4IDQzNGRh
OWEwMTA2MDMxZDk4MzkzYjI2YTRiNzFmN2UxZTBkMzk1NGYuLjM3Nzc4N2NkMjJkMTdkMGM4YTZj
Y2M2ZWQ1ZDQ3N2NmNmE1Nzk4N2IgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRRdC5jcHAKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudFF0LmNwcApAQCAtNTI4LDYgKzUyOCwxMSBAQCB2b2lkIENocm9tZUNsaWVudFF0Ojpj
aG9vc2VJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgRmlsZUNo
bwogICAgIGNob29zZXItPmljb25Mb2FkZWQoSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKGZpbGVu
YW1lcykpOwogfQogCit2b2lkIENocm9tZUNsaWVudFF0Ojp1cGRhdGVGb3JtVmFsaWRhdGlvbk1l
c3NhZ2UoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlN0
cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogYm9vbCBDaHJvbWVDbGllbnRR
dDo6c2V0Q3Vyc29yKFBsYXRmb3JtQ3Vyc29ySGFuZGxlKQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQu
aCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oCmluZGV4IDAzOTZh
ZWZkODcwNmU2MWQzNDY5YjBmNDAxNzRjOGRjOWYwYjQ4MWQuLmVmNTMwMDNiNTkxNjA4Y2UwNzBh
YTYwZmVhNWVkNDIwMTUzNDBmZDIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRRdC5oCisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRRdC5oCkBAIC0xNTcsNiArMTU3LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGNob29zZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYs
IEZpbGVDaG9vc2VyKik7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGZvcm1TdGF0ZURpZENoYW5n
ZShjb25zdCBOb2RlKikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGb3JtVmFsaWRh
dGlvbk1lc3NhZ2UoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudCosIGNvbnN0IFdlYkNv
cmU6OlN0cmluZyYpOworICAgICAgICB2aXJ0dWFsIGRvdWJsZSB2YWxpZGF0aW9uTWVzc2FnZVVw
ZGF0ZUludGVydmFsU2Vjb25kKCkgeyByZXR1cm4gMC4zOyAvKiBGSVhNRSAqLyB9CisgICAgICAg
IHZpcnR1YWwgaW50IHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlQ291bnQoY29uc3QgV2ViQ29yZTo6
U3RyaW5nJikgeyByZXR1cm4gMjA7IC8qIEZJWE1FICovIH0KKyAgICAgICAgdmlydHVhbCBkb3Vi
bGUgdmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29uZCgpIHsgcmV0dXJuIDAuNjsgLyogRklY
TUUgKi8gfQogCiAgICAgICAgIHZpcnR1YWwgUGFzc093blB0cjxIVE1MUGFyc2VyUXVpcmtzPiBj
cmVhdGVIVE1MUGFyc2VyUXVpcmtzKCkgeyByZXR1cm4gMDsgfQogCmRpZmYgLS1naXQgYS9XZWJL
aXQvd2luL0NoYW5nZUxvZyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDU5NzdiZGJhZTVi
OGExYTJmYWFkOTU1NWQ5YjI2MzYwYzY5NjJlYmQuLjEyMjg5Y2RjMDY0YTk3YWFiZTBlOTJjZWIw
NzJjZjgxNzc4Nzc4NzkgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1dl
YktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTAtMDQtMDEgIEtlbnQgVGFt
dXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEZyYW1ld29yayB0byBzaG93IGZvcm0gdmFsaWRhdGlvbiBtZXNz
YWdlIGZvciBpbnZhbGlkIGNvbnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zMTcxOAorCisgICAgICAgIC0gQWRkIHN0dWIgZnVuY3Rpb25zIGZv
ciB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoKSwKKyAgICAgICAgICB2YWxpZGF0aW9uTWVz
c2FnZVVwZGF0ZUludGVydmFsU2Vjb25kKCksCisgICAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VV
cGRhdGVDb3VudCgpLCBhbmQgdmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29uZCgpLgorICAg
ICAgICAtIEFkZCB2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZCgpIGZvciBM
YXlvdXRUZXN0Q29udHJvbGxlci4KKworICAgICAgICAqIEludGVyZmFjZXMvSVdlYkZyYW1lUHJp
dmF0ZS5pZGw6CisgICAgICAgICogSW50ZXJmYWNlcy9XZWJLaXQuaWRsOiBKdXN0IHRvdWNoLgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJDaHJvbWVDbGllbnQ6OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDaHJvbWVDbGll
bnQ6OnZhbGlkYXRpb25NZXNzYWdlVXBkYXRlQ291bnQpOgorICAgICAgICAoV2ViQ2hyb21lQ2xp
ZW50Ojp2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUludGVydmFsU2Vjb25kKToKKyAgICAgICAgKFdl
YkNocm9tZUNsaWVudDo6dmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29uZCk6CisgICAgICAg
ICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6OnZpc2libGVWYWxpZGF0aW9uTWVz
c2FnZUZvckVsZW1lbnRCeUlkKToKKyAgICAgICAgKiBXZWJGcmFtZS5oOgorCiAyMDEwLTA2LTA4
ICBBbnRvbmlvIEdvbWVzICA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgT2phbiBWYWZhaSBhbmQgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJLaXQvd2lu
L0ludGVyZmFjZXMvSVdlYkZyYW1lUHJpdmF0ZS5pZGwgYi9XZWJLaXQvd2luL0ludGVyZmFjZXMv
SVdlYkZyYW1lUHJpdmF0ZS5pZGwKaW5kZXggMWI3MjA5ZDAyN2IxYjUwZThjZWFhOTRkOWI5OTVl
OTkxM2U3NGJmMS4uZjFhNzg2YjFkY2Y4N2M4YTdiZjhmOTQxNWRlODhjNDI0MzVjMWZlYyAxMDA2
NDQKLS0tIGEvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJGcmFtZVByaXZhdGUuaWRsCisrKyBi
L1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViRnJhbWVQcml2YXRlLmlkbApAQCAtMTEwLDYgKzEx
MCw2IEBAIGludGVyZmFjZSBJV2ViRnJhbWVQcml2YXRlIDogSVVua25vd24KICAgICBIUkVTVUxU
IG51bWJlck9mUGFnZXMoW2luXSBmbG9hdCBwYWdlV2lkdGhJblBpeGVscywgW2luXSBmbG9hdCBw
YWdlSGVpZ2h0SW5QaXhlbHMsIFtvdXQsIHJldHZhbF0gaW50KiBwYWdlTnVtYmVyKTsKIAogICAg
IEhSRVNVTFQgbGF5ZXJUcmVlQXNUZXh0KFtvdXQsIHJldHZhbF0gQlNUUiogcmVzdWx0KTsKLQor
ICAgIEhSRVNVTFQgdmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoW2luXSBC
U1RSIGlkLCBbb3V0LCByZXR2YWxdIEJTVFIqIHJlc3VsdCk7CiAgICAgSFJFU1VMVCBwYWludFNj
cm9sbFZpZXdSZWN0VG9Db250ZXh0QXRQb2ludChbaW5dIFJFQ1QgcmVjdCwgW2luXSBQT0lOVCBw
dCwgW2luXSBPTEVfSEFORExFIGRldmljZUNvbnRleHQpOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0
L3dpbi9JbnRlcmZhY2VzL1dlYktpdC5pZGwgYi9XZWJLaXQvd2luL0ludGVyZmFjZXMvV2ViS2l0
LmlkbAppbmRleCBkMjVjZGZlYmZiNjhhOGNhNGI4NDE4MTk5NGRiYzIzMmVlYmM4ZGVhLi44NTNj
YzJmZDI5MzRkMDNiYjdiOWU3OWNlNDM0NzI3YTA4N2E1MDIxIDEwMDY0NAotLS0gYS9XZWJLaXQv
d2luL0ludGVyZmFjZXMvV2ViS2l0LmlkbAorKysgYi9XZWJLaXQvd2luL0ludGVyZmFjZXMvV2Vi
S2l0LmlkbApAQCAtMzAwLDMgKzMwMCw0IEBAIGxpYnJhcnkgV2ViS2l0CiAgICAgICAgIFtkZWZh
dWx0XSBpbnRlcmZhY2UgSVdlYlVzZXJDb250ZW50VVJMUGF0dGVybjsKICAgICB9CiB9CisgCmRp
ZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAg
Yi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggNTg3
NjM3ZjE3ZWJlMWIyOGNlMDI5N2FjNTlhYmIwOGM4NGI4MmFmMy4uMDE4YzM5ZTc1Y2QzZjcwNGQ0
MTc4ZTUxNTlmNWVjNTkzZjdkYzZmMCAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtNDksNiArNDksNyBAQAogI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KICNlbmRp
ZgorI2luY2x1ZGUgPFdlYkNvcmUvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JY29uLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CkBAIC03NzIsNiArNzczLDExIEBAIGJvb2wg
V2ViQ2hyb21lQ2xpZW50OjpzZXRDdXJzb3IoUGxhdGZvcm1DdXJzb3JIYW5kbGUgY3Vyc29yKQog
ICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIFdlYkNocm9tZUNsaWVudDo6dXBkYXRlRm9ybVZh
bGlkYXRpb25NZXNzYWdlKEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGNvbnRyb2wsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lkIFdlYkNo
cm9tZUNsaWVudDo6cmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKEZyYW1lKiBm
cmFtZSwgR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uKQogewogICAgIENPTVB0cjxJV2ViVUlEZWxl
Z2F0ZT4gdWlEZWxlZ2F0ZTsKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmggYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oCmluZGV4IDY5NTRmZGU2NzI5NjJhMmFhZDc4YzRmNmJhZTBkZGM5YmZlNTU3YmYuLjhj
MGY3ZDhkNTkyZWYzN2Q5OTJlN2NkYThiNzkxNzJjYzFhYTM2YzggMTAwNjQ0Ci0tLSBhL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMzQsNiArMzQsMTAgQEAKIGNsYXNz
IFdlYlZpZXc7CiBjbGFzcyBXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlOwogCituYW1l
c3BhY2UgV2ViQ29yZSB7CitjbGFzcyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OworfQorCiBpbnRl
cmZhY2UgSVdlYlVJRGVsZWdhdGU7CiAKIGNsYXNzIFdlYkNocm9tZUNsaWVudCA6IHB1YmxpYyBX
ZWJDb3JlOjpDaHJvbWVDbGllbnQgewpAQCAtMTMzLDYgKzEzNywxMCBAQCBwdWJsaWM6CiAgICAg
V2ViVmlldyogd2ViVmlldygpIGNvbnN0IHsgcmV0dXJuIG1fd2ViVmlldzsgfQogCiAgICAgdmly
dHVhbCB2b2lkIGZvcm1TdGF0ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpOb2RlKikgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShXZWJDb3JlOjpIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7CisgICAgdmlydHVh
bCB1bnNpZ25lZCB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUNvdW50KGNvbnN0IFdlYkNvcmU6OlN0
cmluZyYpIHsgcmV0dXJuIDEwOyB9CisgICAgdmlydHVhbCBkb3VibGUgdmFsaWRhdGlvbk1lc3Nh
Z2VVcGRhdGVJbnRlcnZhbFNlY29uZCgpIHsgcmV0dXJuIDAuNTsgfQorICAgIHZpcnR1YWwgZG91
YmxlIHZhbGlkYXRpb25NZXNzYWdlQmxhY2tvdXRTZWNvbmQoKSB7IHJldHVybiAwLjY7IH0KIAog
ICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJDb3JlOjpIVE1MUGFyc2VyUXVpcmtzPiBjcmVhdGVI
VE1MUGFyc2VyUXVpcmtzKCkgeyByZXR1cm4gMDsgfQogCmRpZmYgLS1naXQgYS9XZWJLaXQvd2lu
L1dlYkZyYW1lLmNwcCBiL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCmluZGV4IDc1YTljOGQyMDM5
N2FhNjRkNmJkNmI3MzlhOTdjYzA0NjVmNTlmOTEuLjA4MjQ3YWIxMTZhMjgzNWI4ZDY4ZDNhOThk
MGRlYjFiMGI5MmZjMDIgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCisrKyBi
L1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCkBAIC0xMDI3LDYgKzEwMjcsMjEgQEAgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6ZmV0Y2hBcHBsaWNhdGlvbkljb24oCiAgICAgcmV0
dXJuIFNfT0s7CiB9CiAKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OnZpc2li
bGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKEJTVFIgaWQsIEJTVFIqIHJlc3VsdCkK
K3sKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICBGcmFt
ZSogY29yZUZyYW1lID0gY29yZSh0aGlzKTsKKyAgICBpZiAoIWNvcmVGcmFtZSkKKyAgICAgICAg
cmV0dXJuIEVfRkFJTDsKKyAgICBFbGVtZW50KiBlbGVtZW50ID0gY29yZUZyYW1lLT5kb2N1bWVu
dCgpLT5nZXRFbGVtZW50QnlJZChTdHJpbmcoaWQsIFN5c1N0cmluZ0xlbihpZCkpKTsKKyAgICBp
ZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpCisgICAgICAg
IHJldHVybiBFX0ZBSUw7CisgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudCogZm9ybUNvbnRyb2wg
PSBzdGF0aWNfY2FzdDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Kj4oZWxlbWVudCk7CisgICAgKnJl
c3VsdCA9IEJTdHJpbmcoZm9ybUNvbnRyb2wtPnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSgpKS5y
ZWxlYXNlKCk7CisgICAgcmV0dXJuIFNfT0s7Cit9CisKIC8vIElXZWJEb2N1bWVudFRleHQgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6c3VwcG9ydHNUZXh0RW5jb2Rp
bmcoIApkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJGcmFtZS5oIGIvV2ViS2l0L3dpbi9XZWJG
cmFtZS5oCmluZGV4IGQ4MzlmMTdiZWY5ODg1YjRkYmJiNjgxMmU3MmM2OWM0NjFhMGMyMDIuLjZh
YmIxZWNkNDZmM2NkNDkwZDUwYTkzMGExOTE4OTdjMDIxZWQ1YTggMTAwNjQ0Ci0tLSBhL1dlYktp
dC93aW4vV2ViRnJhbWUuaAorKysgYi9XZWJLaXQvd2luL1dlYkZyYW1lLmgKQEAgLTI2OSw2ICsy
NjksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBKU0dsb2JhbENvbnRleHRSZWYgU1RETUVUSE9E
Q0FMTFRZUEUgZ2xvYmFsQ29udGV4dEZvclNjcmlwdFdvcmxkKElXZWJTY3JpcHRXb3JsZCopOwog
CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHZpc2libGVDb250ZW50UmVj
dChSRUNUKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHZpc2libGVW
YWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKEJTVFIgaWQsIEJTVFIqIHJlc3VsdCk7CiAK
ICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbGF5ZXJUcmVlQXNUZXh0KEJT
VFIqKTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L3d4L0NoYW5nZUxvZyBiL1dlYktpdC93eC9DaGFu
Z2VMb2cKaW5kZXggYWIyNTEwMjY3NmIzMTg2NjM2MTY1ZDUxYTAyMWI2ZWNhY2ViOWQ5ZS4uYTMw
NGZkMjk4OTU1NGQzZmRjM2EyNGVlYmVkNWQzYzU1ZmFiYzlkNyAxMDA2NDQKLS0tIGEvV2ViS2l0
L3d4L0NoYW5nZUxvZworKysgYi9XZWJLaXQvd3gvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAK
KzIwMTAtMDQtMDEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyYW1ld29yayB0byBzaG93
IGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnZhbGlkIGNvbnRyb2xzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTcxOAorCisgICAgICAgIEFk
ZCBzdHViIGZ1bmN0aW9ucyBmb3IgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKCksCisgICAg
ICAgIHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlSW50ZXJ2YWxTZWNvbmQoKSwKKyAgICAgICAgdmFs
aWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3VudCgpLCBhbmQKKyAgICAgICAgdmFsaWRhdGlvbk1lc3Nh
Z2VCbGFja291dFNlY29uZCgpLgorCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGll
bnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6dXBkYXRlRm9ybVZh
bGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4
Lmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6dmFsaWRhdGlvbk1lc3NhZ2VV
cGRhdGVJbnRlcnZhbFNlY29uZCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6
dmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVD
bGllbnRXeDo6dmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29uZCk6CisKIDIwMTAtMDUtMjcg
IEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CiAKICAgICAgICAgW3d4
XSBCdWlsZCBmaXhlcyBmb3IgV2luZG93cyBhZnRlciByZWNlbnQgY2hhbmdlcy4KZGlmZiAtLWdp
dCBhL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcCBiL1dlYktpdC93
eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcAppbmRleCBhMTk2NDRkYmQ4N2Q4M2Yx
NGQwMmY3MGYwZjI4MDk5MmFkYmMzZGYxLi44NzdmNjZlZDlkOTk1ZTRiMjBjYjBiMjMxZTFiOTBk
N2YyNzdhNzcyIDEwMDY0NAotLS0gYS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGll
bnRXeC5jcHAKKysrIGIvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3Bw
CkBAIC00NDcsNiArNDQ3LDExIEBAIHZvaWQgQ2hyb21lQ2xpZW50V3g6OmNob29zZUljb25Gb3JG
aWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBGaWxlQ2hvCiAgICAgY2hvb3Nl
ci0+aWNvbkxvYWRlZChJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoZmlsZW5hbWVzKSk7CiB9CiAK
K3ZvaWQgQ2hyb21lQ2xpZW50V3g6OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShXZWJDb3Jl
OjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJikKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCiBib29sIENocm9tZUNsaWVudFd4OjpzZXRDdXJzb3Io
UGxhdGZvcm1DdXJzb3JIYW5kbGUpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdp
dCBhL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmggYi9XZWJLaXQvd3gv
V2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5oCmluZGV4IGI5MDBmM2VlZWY2ZTdkMmUwYWNk
NmI5YmUwNmZkZDNjZTExMWYxNWEuLjQ3NzgwOWFkZjhmNTU2ZDU4ODQ3ZTJlMjRiZGY5MmY5ODU3
Y2Q0NDcgMTAwNjQ0Ci0tLSBhL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4
LmgKKysrIGIvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaApAQCAtMTMx
LDYgKzEzMSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNob29zZUljb25Gb3JGaWxl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEZpbGVDaG9vc2VyKik7CiAKICAgICB2aXJ0dWFsIHZv
aWQgZm9ybVN0YXRlRGlkQ2hhbmdlKGNvbnN0IE5vZGUqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1l
bnQqLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGRvdWJsZSB2YWxpZGF0
aW9uTWVzc2FnZVVwZGF0ZUludGVydmFsU2Vjb25kKCkgeyByZXR1cm4gMC4zOyAvKiBGSVhNRSAq
LyB9CisgICAgdmlydHVhbCBpbnQgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3VudChjb25zdCBX
ZWJDb3JlOjpTdHJpbmcmKSB7IHJldHVybiAyMDsgLyogRklYTUUgKi8gfQorICAgIHZpcnR1YWwg
ZG91YmxlIHZhbGlkYXRpb25NZXNzYWdlQmxhY2tvdXRTZWNvbmQoKSB7IHJldHVybiAwLjY7IC8q
IEZJWE1FICovIH0KIAogICAgIHZpcnR1YWwgUGFzc093blB0cjxIVE1MUGFyc2VyUXVpcmtzPiBj
cmVhdGVIVE1MUGFyc2VyUXVpcmtzKCkgeyByZXR1cm4gMDsgfQogCmRpZmYgLS1naXQgYS9XZWJL
aXQyL0NoYW5nZUxvZyBiL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGRhZjkyODgxY2YyZjBiZDhm
YjkxMWE5NGM1NzFjNjEzYTM1NjY5YTAuLmQyMDhjZjA3ZDU0YTgwYWMzNWQ1ZjQ3Y2EyYzI5ZmJk
ZDIzY2RiMmEgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMDQtMDEgIEtlbnQgVGFtdXJhICA8dGtlbnRA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEZyYW1ld29yayB0byBzaG93IGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnZh
bGlkIGNvbnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zMTcxOAorCisgICAgICAgIEFkZCBzdHViIGZ1bmN0aW9ucyBmb3IgdXBkYXRlRm9ybVZh
bGlkYXRpb25NZXNzYWdlKCksCisgICAgICAgIHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlSW50ZXJ2
YWxTZWNvbmQoKSwKKyAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3VudCgpLCBhbmQK
KyAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29uZCgpLgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojp2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUlu
dGVydmFsU2Vjb25kKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojp2YWxpZGF0
aW9uTWVzc2FnZVVwZGF0ZUNvdW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50
Ojp2YWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0U2Vjb25kKToKKwogMjAxMC0wNi0wOCAgQW5kZXJz
IENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEpv
aG4gU3VsbGl2YW4uCmRpZmYgLS1naXQgYS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IGU0NDM1MzBkYWFjYzU4ZjVjMTgyODFjMGExZmY3
ZjQwZTU2Y2QzNDYuLmFmMmFhODE5YTAwZGY4MGQ5YmY3NDFjZTY2NDU5ZjM2ZDg0YzQzNmEgMTAw
NjQ0Ci0tLSBhL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwCisrKyBiL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwCkBAIC00MzIsNiArNDMyLDExIEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpmb3Jt
RGlkQmx1cihjb25zdCBOb2RlKikKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIFdl
YkNocm9tZUNsaWVudDo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKFdlYkNvcmU6OkhUTUxG
b3JtQ29udHJvbEVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKIFBhc3NPd25QdHI8SFRNTFBhcnNlclF1aXJrcz4gV2ViQ2hyb21l
Q2xpZW50OjpjcmVhdGVIVE1MUGFyc2VyUXVpcmtzKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oCmluZGV4IGZlNWYxNGE3NWJkN2Q2MDZiNTdhM2VmZGEyYTMxZDBhYjBmZDFlZDQuLjky
ZmYyNTk2MWRjMjVhZGM2YTdmMTU3YWJmOWVjNDIzNjA4MTUxZjMgMTAwNjQ0Ci0tLSBhL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTE1OSw2
ICsxNTksMTAgQEAgcHJpdmF0ZToKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgZm9ybURpZEZvY3Vz
KGNvbnN0IFdlYkNvcmU6Ok5vZGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgZm9ybURpZEJsdXIoY29u
c3QgV2ViQ29yZTo6Tm9kZSopOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGb3JtVmFsaWRhdGlv
bk1lc3NhZ2UoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6
OlN0cmluZyYpOworICAgIHZpcnR1YWwgZG91YmxlIHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlSW50
ZXJ2YWxTZWNvbmQoKSB7IHJldHVybiAwLjM7IC8qIEZJWE1FICovIH0KKyAgICB2aXJ0dWFsIGlu
dCB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUNvdW50KGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpIHsg
cmV0dXJuIDIwOyAvKiBGSVhNRSAqLyB9CisgICAgdmlydHVhbCBkb3VibGUgdmFsaWRhdGlvbk1l
c3NhZ2VCbGFja291dFNlY29uZCgpIHsgcmV0dXJuIDAuNjsgLyogRklYTUUgKi8gfQogICAgIAog
ICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJDb3JlOjpIVE1MUGFyc2VyUXVpcmtzPiBjcmVhdGVI
VE1MUGFyc2VyUXVpcmtzKCk7CiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBi
L1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCBkOGExZTdjOGE2YjUyMDM5MGQyOTA5Mzk5YzU5
NTk0NDVhMzE2YTViLi4wODk2MWE3NmI5ZjlhZTQzNzcxZDI4NmIxYTc3NDJlOTc5OWMxMjBiIDEw
MDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTAtMDQtMDEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEZyYW1ld29yayB0byBzaG93IGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnZhbGlk
IGNvbnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zMTcxOAorCisgICAgICAgIEFkZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6dmlzaWJsZVZhbGlk
YXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoKS4KKyAgICAgICAgV2luZG93cyBhbmQgTWFjIGhh
dmUgd29ya2FibGUgaW1wbGVtZW50YXRpb25zLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAodmlzaWJsZVZhbGlkYXRpb25NZXNz
YWdlRm9yRWxlbWVudEJ5SWRDYWxsYmFjayk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29u
dHJvbGxlckd0ay5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6dmlzaWJsZVZh
bGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKExheW91dFRlc3RDb250
cm9sbGVyOjp2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZCk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHA6CisgICAgICAg
IChMYXlvdXRUZXN0Q29udHJvbGxlcjo6dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVu
dEJ5SWQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxl
cldpbi5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6dmlzaWJsZVZhbGlkYXRp
b25NZXNzYWdlRm9yRWxlbWVudEJ5SWQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L0xh
eW91dFRlc3RDb250cm9sbGVyV3guY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKToKKwogMjAxMC0wNi0wOCAg
VG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERh
dmlkIExldmluLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuY3BwCmluZGV4IGI5NmE5YzljNTZhNDM3MTUxN2VmZjdlNWViMDllMmRiOTJh
ODFmYjguLmE5YzY0ZmU3MGZiN2U5MDJkYmU1OTQ1YjQ5MmViZmVmOGY2NDVkZjEgMTAwNjQ0Ci0t
LSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAor
KysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAK
QEAgLTk5Myw2ICs5OTMsMjAgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0RnJhbWVGbGF0dGVuaW5n
RW5hYmxlZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamUKICAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHZp
c2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkQ2FsbGJhY2soSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBz
aXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1
ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworICAgIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBlbGVtZW50SWQoQWRvcHQsIEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwg
YXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsKKyAgICBBU1NFUlQoISpleGNlcHRpb24pOworCisg
ICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRU
ZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IG1lc3NhZ2UoY29udHJvbGxlci0+dmlzaWJsZVZhbGlkYXRp
b25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoZWxlbWVudElkLmdldCgpKSk7CisgICAgaWYgKCFtZXNz
YWdlLmdldCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7
CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlU3RyaW5nKGNvbnRleHQsIG1lc3NhZ2UuZ2V0KCkpOwor
fQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJM
c0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNP
YmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVS
ZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICAvLyBIYXMgbWFj
ICYgd2luZG93cyBpbXBsZW1lbnRhdGlvbgpAQCAtMTY2NSw2ICsxNjc5LDcgQEAgSlNTdGF0aWNG
dW5jdGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgICAg
IHsgInNob3dXZWJJbnNwZWN0b3IiLCBzaG93V2ViSW5zcGVjdG9yQ2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
ICAgICAgICAgeyAidGVzdE9uc2NyZWVuIiwgdGVzdE9uc2NyZWVuQ2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
ICAgICAgICAgeyAidGVzdFJlcGFpbnQiLCB0ZXN0UmVwYWludENhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisg
ICAgICAgIHsgInZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkIiwgdmlzaWJs
ZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAg
ICB7ICJ3YWl0Rm9yUG9saWN5RGVsZWdhdGUiLCB3YWl0Rm9yUG9saWN5RGVsZWdhdGVDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAogICAgICAgICB7ICJ3YWl0VW50aWxEb25lIiwgd2FpdFVudGlsRG9uZUNhbGxi
YWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCiAgICAgICAgIHsgIndpbmRvd0NvdW50Iiwgd2luZG93Q291bnRDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RD
b250cm9sbGVyLmgKaW5kZXggOGZmMzhkMTA5MDEwZjRlOTY4MmRhMmI4N2U4ZWYxODZjNDExYzJh
OC4uMTBmN2E0ZDU2OGNjZjVkYTM4YWEyNTdjNmQzYmNmNzVkYTVlMDliMiAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC0xMDAs
NyArMTAwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVk
KGJvb2wgZW5hYmxlKTsKICAgICB2b2lkIHNldFNjcm9sbGJhclBvbGljeShKU1N0cmluZ1JlZiBv
cmllbnRhdGlvbiwgSlNTdHJpbmdSZWYgcG9saWN5KTsKICAgICB2b2lkIHNldEVkaXRpbmdCZWhh
dmlvcihjb25zdCBjaGFyKiBlZGl0aW5nQmVoYXZpb3IpOwotCisgICAgSlNTdHJpbmdSZWYgdmlz
aWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWQpOwogICAg
IHZvaWQgd2FpdEZvclBvbGljeURlbGVnYXRlKCk7CiAgICAgc2l6ZV90IHdlYkhpc3RvcnlJdGVt
Q291bnQoKTsKICAgICB1bnNpZ25lZCB3b3JrZXJUaHJlYWRDb3VudCgpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVy
R3RrLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJv
bGxlckd0ay5jcHAKaW5kZXggZThiODYyNzU4NTJkY2I1Y2UxZDE5ZDZkYTVmYmE1MWEwMTU0OWQ2
My4uODdiNWE2ZmJmYjI4OGZlMjQyYmJmYTVhM2ZhOGI2MjFlZDY3MjkwYSAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNw
cAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xs
ZXJHdGsuY3BwCkBAIC02NzYsNiArNjc2LDEyIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OmFwaVRlc3RHb1RvQ3VycmVudEJhY2tGb3J3YXJkSXRlbSgpCiAKIH0KIAorSlNTdHJpbmdSZWYg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRC
eUlkKEpTU3RyaW5nUmVmIGlkKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KKyAg
ICByZXR1cm4gMDsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0V2ViVmlld0Vk
aXRhYmxlKGJvb2wpCiB7CiB9CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0gYi9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KaW5kZXggZWIwMTA5MDAyNmI3Zjlm
NmFjM2NmNDNiYjU2ZjAzY2QyNjI3MzljOC4uMzU0MmI2MjQ2YzYzMmYzNmRkODU0OTNiMDljOGQ5
ZWEwY2Y3ZDc2NSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xh
eW91dFRlc3RDb250cm9sbGVyTWFjLm1tCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQpAQCAtNzU0LDYgKzc1NCwxMiBAQCB2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjphcGlUZXN0R29Ub0N1cnJlbnRCYWNrRm9yd2FyZEl0ZW0o
KQogICAgIFt2aWV3IGdvVG9CYWNrRm9yd2FyZEl0ZW06W1t2aWV3IGJhY2tGb3J3YXJkTGlzdF0g
Y3VycmVudEl0ZW1dXTsKIH0KIAorSlNTdHJpbmdSZWYgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnZp
c2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGlkKQorewor
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaWRDRihBZG9wdENGLCBKU1N0cmluZ0NvcHlDRlN0
cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBpZCkpOworICAgIHJldHVybiBKU1N0cmluZ0NyZWF0
ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpW21haW5GcmFtZSB2aXNpYmxlVmFsaWRhdGlvbk1l
c3NhZ2VGb3JFbGVtZW50QnlJZDooTlNTdHJpbmcqKWlkQ0YuZ2V0KCldKTsKK30KKwogdm9pZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0V2ViVmlld0VkaXRhYmxlKGJvb2wgZWRpdGFibGUpCiB7
CiAgICAgV2ViVmlldyAqdmlldyA9IFttYWluRnJhbWUgd2ViVmlld107CmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcCBi
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3Bw
CmluZGV4IDNmMjU4NWQzZmQwZTJiNzEwZDUwYTcxNGM2ZWM4ODhkZjkxNjlkNGUuLmNkMTA0ZmZi
NWVmYjJmZWJjOGUzYjYzN2Q1ODE3YTVlMjNhZGFkMjAgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCisrKyBiL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCkBAIC01
NjgsNiArNTY4LDEyIEBAIGJvb2wgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNhbGxTaG91bGRDbG9z
ZU9uV2ViVmlldygpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitKU1N0cmluZ1JlZiBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoSlNT
dHJpbmdSZWYgaWQpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAgIHJldHVy
biAwOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRTY3JvbGxiYXJQb2xpY3ko
Y29uc3QgUVN0cmluZyYgb3JpZW50YXRpb24sIGNvbnN0IFFTdHJpbmcmIHBvbGljeSkKIHsKICAg
ICBRdDo6T3JpZW50YXRpb24gbzsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCmluZGV4IGM3MGI1MTdmZWJm
NzQwNmIxNTJmY2ZjYzQwNDQwNWI2NmY3MDdkYmEuLjZlZTMwMWVlMzE2MDk1ZWY2ZDZlOWMxMzlj
MDhiODZkMTZmNmU2YzUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcApAQCAtMTI2MCw2ICsxMjYwLDE5
IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFwaVRlc3RHb1RvQ3VycmVudEJhY2tGb3J3
YXJkSXRlbSgpCiAgICAgd2ViVmlldy0+Z29Ub0JhY2tGb3J3YXJkSXRlbShpdGVtLmdldCgpLCAm
c3VjY2Vzcyk7CiB9CiAKK0pTU3RyaW5nUmVmIExheW91dFRlc3RDb250cm9sbGVyOjp2aXNpYmxl
VmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZChKU1N0cmluZ1JlZiBpZCkKK3sKKyAgICBD
T01QdHI8SVdlYkZyYW1lUHJpdmF0ZT4gZnJhbWVQcml2YXRlKFF1ZXJ5LCBmcmFtZSk7CisgICAg
aWYgKCFmcmFtZVByaXZhdGUpCisgICAgICAgIHJldHVybiAwOworICAgIEJTVFIgbWVzc2FnZUJT
VFI7CisgICAgaWYgKEZBSUxFRChmcmFtZVByaXZhdGUtPnZpc2libGVWYWxpZGF0aW9uTWVzc2Fn
ZUZvckVsZW1lbnRCeUlkKGJzdHJUKGlkKS5HZXRCU1RSKCksICZtZXNzYWdlQlNUUikpKQorICAg
ICAgICByZXR1cm4gMDsKKyAgICBKU1N0cmluZ1JlZiBtZXNzYWdlSlMgPSBKU1N0cmluZ0NyZWF0
ZVdpdGhCU1RSKG1lc3NhZ2VCU1RSKTsKKyAgICBTeXNGcmVlU3RyaW5nKG1lc3NhZ2VCU1RSKTsK
KyAgICByZXR1cm4gbWVzc2FnZUpTOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpz
ZXRXZWJWaWV3RWRpdGFibGUoYm9vbCkKIHsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwIGIvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKaW5kZXggMjY1ODAy
ZDIxMDI2ZTE3Y2YzYWQ0YWU1NDc0Y2E1ZTNhNmE3ZTU4Yi4uNzg4NjBjNjE4ZDE3YmM4OGYzNjEw
YTg4NDE2M2QyMTFiNmM3ZTYxMSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKQEAgLTQxOSw2ICs0MTksMTIg
QEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVk
KGJvb2wpCiAKIH0KIAorSlNTdHJpbmdSZWYgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnZpc2libGVW
YWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGlkKQoreworICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KKyAgICByZXR1cm4gMDsKK30KKwogdm9pZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0V2ViVmlld0VkaXRhYmxlKGJvb2wpCiB7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58254</attachid>
            <date>2010-06-09 10:08:38 -0700</date>
            <delta_ts>2010-06-09 17:19:38 -0700</delta_ts>
            <desc>Patch (rev.7; build fix 2)</desc>
            <filename>bug-31718-20100610020836.patch</filename>
            <type>text/plain</type>
            <size>59562</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmNGViN2UwNzA4ZTY2NTdmNGZjM2Y0MTBiOGE5OTNkNWQ1NDJmN2I1Li4wNjJmM2Yz
ZDUyNGQxNGJjZTIzYWY3YzJhOTFkODViYjExNjRkMmM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTAtMDQtMDEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyYW1ld29yayB0byBzaG93
IGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnZhbGlkIGNvbnRyb2xzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTcxOAorCisgICAgICAgIEFk
ZCBhIHRlc3QgdG8gY2hlY2sgYSB2aXNpYmxlIHZhbGlkYXRpb24gbWVzc2FnZS4KKyAgICAgICAg
VGhlIG1lc3NhZ2Ugc2hvdWxkIGJlIGF2YWlsYWJsZSBvbmx5IHdoZW4gdGhlIGNvbnRyb2wgaGFz
IGZvY3VzLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvdmlzaWJsZS12YWxp
ZGF0aW9uLW1lc3NhZ2UuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvdmlzaWJsZS12
YWxpZGF0aW9uLW1lc3NhZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zv
cm1zL3Zpc2libGUtdmFsaWRhdGlvbi1tZXNzYWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6CisKIDIw
MTAtMDYtMDggIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBOaWtvbGFzIFppbW1lcm1hbm4uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL3NjcmlwdC10ZXN0cy92aXNpYmxlLXZhbGlkYXRpb24tbWVzc2FnZS5qcyBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL3Zpc2libGUtdmFsaWRhdGlvbi1tZXNzYWdl
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjg5NDNkYTgyYzU0OTM2M2MxMGM3NDBiZTA2MTYwY2I1OTc1NTJmYTYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy92
aXNpYmxlLXZhbGlkYXRpb24tbWVzc2FnZS5qcwpAQCAtMCwwICsxLDM4IEBACitkZXNjcmlwdGlv
bignVGVzdCBmb3IgdmFsaWRhdGlvbiBtZXNzYWdlIHJlcXVlc3RzIGZyb20gYW4gSFRNTEZvcm1D
b250cm9sRWxlbWVudC4nKTsKKwordmFyIHBhcmVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpOworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChwYXJlbnQpOworcGFyZW50LmlubmVy
SFRNTD0gJzxmb3JtPicKKyAgICArICc8aW5wdXQgaWQ9aTEgbmFtZT1pMSByZXF1aXJlZD4nCisg
ICAgKyAnPC9mb3JtPic7CisKK3ZhciBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdp
MScpOworZGVidWcoJ0ludmFsaWQgYW5kIG5vIGZvY3VzJyk7CitzaG91bGRCZUZhbHNlKCdpbnB1
dC52YWxpZGl0eS52YWxpZCcpOworc2hvdWxkQmVUcnVlKCdpbnB1dC52YWxpZGF0aW9uTWVzc2Fn
ZS5sZW5ndGggPiAwJyk7CitzaG91bGRCZSgnbGF5b3V0VGVzdENvbnRyb2xsZXIudmlzaWJsZVZh
bGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoImkxIiknLCAnIiInKTsKKworZGVidWcoJ0lu
dmFsaWQgYW5kIGZvY3VzZWQnKTsKK2lucHV0LmZvY3VzKCk7CitzaG91bGRCZSgnbGF5b3V0VGVz
dENvbnRyb2xsZXIudmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoImkxIikn
LCAnaW5wdXQudmFsaWRhdGlvbk1lc3NhZ2UnKTsKKworZGVidWcoJ0ludmFsaWQsIGZvY3VzZWQs
IGFuZCB3aGl0ZXNwYWNlLW9ubHkgY3VzdG9tIG1lc3NhZ2UnKTsKK2lucHV0LnNldEN1c3RvbVZh
bGlkaXR5KCIgICAiKTsKK2lucHV0LmJsdXIoKTsKK2lucHV0LmZvY3VzKCk7CitzaG91bGRCZSgn
bGF5b3V0VGVzdENvbnRyb2xsZXIudmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5
SWQoImkxIiknLCAnIiInKTsKKworZGVidWcoJ0ludmFsaWQsIGZvY3VzZWQsIGFuZCB0aXRsZSBh
dHRyaWJ1dGUnKTsKK2lucHV0LnNldEN1c3RvbVZhbGlkaXR5KCIiKTsKK2lucHV0LnRpdGxlID0g
J1lvdSBuZWVkIHRvIHNwZWNpZnkgYSB2YWx1ZS4nOworaW5wdXQuYmx1cigpOworaW5wdXQuZm9j
dXMoKTsKK3Nob3VsZEJlKCdsYXlvdXRUZXN0Q29udHJvbGxlci52aXNpYmxlVmFsaWRhdGlvbk1l
c3NhZ2VGb3JFbGVtZW50QnlJZCgiaTEiKScsICdpbnB1dC52YWxpZGF0aW9uTWVzc2FnZSArICJc
XG4iICsgaW5wdXQudGl0bGUnKTsKKworZGVidWcoJ0ludmFsaWQsIGZvY3VzZWQsIHRpdGxlIGF0
dHJpYnV0ZSwgYW5kIHdoaXRlc3BhY2Utb25seSBjdXN0b20gbWVzc2FnZScpOworaW5wdXQuc2V0
Q3VzdG9tVmFsaWRpdHkoIiAgICIpOworaW5wdXQuYmx1cigpOworaW5wdXQuZm9jdXMoKTsKK3No
b3VsZEJlKCdsYXlvdXRUZXN0Q29udHJvbGxlci52aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JF
bGVtZW50QnlJZCgiaTEiKScsICciIicpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdmlzaWJsZS12YWxpZGF0aW9u
LW1lc3NhZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy92aXNpYmxlLXZh
bGlkYXRpb24tbWVzc2FnZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDNkZWIwNzMxYWRmMGUx
Zjc5Yzg2NGY2MzEwMTUzZDdjMmRhN2JmYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvdmlzaWJsZS12YWxpZGF0aW9uLW1lc3NhZ2UtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMjEgQEAKK1Rlc3QgZm9yIHZhbGlkYXRpb24gbWVzc2FnZSByZXF1ZXN0cyBmcm9tIGFu
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitJbnZhbGlkIGFuZCBubyBmb2N1cworUEFTUyBpbnB1dC52YWxpZGl0eS52YWxpZCBpcyBmYWxz
ZQorUEFTUyBpbnB1dC52YWxpZGF0aW9uTWVzc2FnZS5sZW5ndGggPiAwIGlzIHRydWUKK1BBU1Mg
bGF5b3V0VGVzdENvbnRyb2xsZXIudmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5
SWQoImkxIikgaXMgIiIKK0ludmFsaWQgYW5kIGZvY3VzZWQKK1BBU1MgbGF5b3V0VGVzdENvbnRy
b2xsZXIudmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoImkxIikgaXMgaW5w
dXQudmFsaWRhdGlvbk1lc3NhZ2UKK0ludmFsaWQsIGZvY3VzZWQsIGFuZCB3aGl0ZXNwYWNlLW9u
bHkgY3VzdG9tIG1lc3NhZ2UKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIudmlzaWJsZVZhbGlk
YXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoImkxIikgaXMgIiIKK0ludmFsaWQsIGZvY3VzZWQs
IGFuZCB0aXRsZSBhdHRyaWJ1dGUKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIudmlzaWJsZVZh
bGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoImkxIikgaXMgaW5wdXQudmFsaWRhdGlvbk1l
c3NhZ2UgKyAiXG4iICsgaW5wdXQudGl0bGUKK0ludmFsaWQsIGZvY3VzZWQsIHRpdGxlIGF0dHJp
YnV0ZSwgYW5kIHdoaXRlc3BhY2Utb25seSBjdXN0b20gbWVzc2FnZQorUEFTUyBsYXlvdXRUZXN0
Q29udHJvbGxlci52aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZCgiaTEiKSBp
cyAiIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdmlzaWJsZS12YWxpZGF0aW9uLW1l
c3NhZ2UuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdmlzaWJsZS12YWxpZGF0aW9uLW1l
c3NhZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YjkyODI1MmM5NjNjM2U2ZTJkMWMzN2NkYTM2NTMyMTA5
OWJhZDYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy92aXNpYmxl
LXZhbGlkYXRpb24tbWVzc2FnZS5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3Zp
c2libGUtdmFsaWRhdGlvbi1tZXNzYWdlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAppbmRleCBhOWNlNWU1ZWJjOWI4NzkzN2Yw
NzczNmM3ZWE5OWVmNjI1MzYzZDYzLi44ZjZkMTE5NDVhM2M4ZTkzZjY4NTU1ZjM5MDlmMGUwMDgz
NGYzYzBhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZApAQCAtNTkzMCwzICs1OTMwLDYgQEAg
ZmFzdC9mb3Jtcy9zbGlkZXItdHJhbnNmb3JtZWQuaHRtbAogIyBvZiB0aGUgc2xpZGVyIHRodW1i
IGluIEdUSysgdGhlbWVzLgogZmFzdC9mb3Jtcy9zbGlkZXItbW91c2UtZXZlbnRzLmh0bWwKIGZh
c3QvZm9ybXMvc2xpZGVyLXpvb21lZC5odG1sCisKKyMgTWlzc2luZyBsYXlvdXRUZXN0Q29udHJv
bGxlci52aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZAorZmFzdC9mb3Jtcy92
aXNpYmxlLXZhbGlkYXRpb24tbWVzc2FnZS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9xdC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAppbmRl
eCBlMDFkYWNiNjEyZTI1YzNjMjE0Mjc4YmQ3MTNjMzNiOWM3MzliMzc3Li41YTRkNDg4MjZmZGVi
NWJhOGQzMzIxZWZjNGQyNmRiMzBjOTg2ZDNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKQEAg
LTg4MSw2ICs4ODEsOSBAQCBmYXN0L3J1YnkvcnVieURPTS1yZW1vdmUtcnQyLmh0bWwKIGZhc3Qv
cnVieS9ydWJ5RE9NLXJlbW92ZS10ZXh0MS5odG1sCiBmYXN0L3J1YnkvcnVieURPTS1yZW1vdmUt
dGV4dDIuaHRtbAogCisjIE1pc3NpbmcgbGF5b3V0VGVzdENvbnRyb2xsZXIudmlzaWJsZVZhbGlk
YXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQKK2Zhc3QvZm9ybXMvdmlzaWJsZS12YWxpZGF0aW9u
LW1lc3NhZ2UuaHRtbAorCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICMKICMgLS0tLS0tLSBmYWls
aW5nIGVkaXRpbmcvaW5wdXQgdGVzdHMKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhYzBhNTYx
M2IyODUyYmU2NzY3NGM0ZDg3ZjY3MzcwYjA0ZDE0MTc1Li5mN2M3MzI1NDBiOTljZjJjMzdmNjg2
NDliYTQ4ZmU5YzZkMzY4ZDUwIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEwLTA0LTAxICBLZW50IFRhbXVy
YSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBGcmFtZXdvcmsgdG8gc2hvdyBmb3JtIHZhbGlkYXRpb24gbWVzc2Fn
ZSBmb3IgaW52YWxpZCBjb250cm9scworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzE3MTgKKworICAgICAgICBBbiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50
IGNhbGxzIENocm9tZTo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKCkKKyAgICAgICAgd2hl
biBpdCBnZXRzIGZvY3VzIGFuZCBsb29zZXMgZm9jdXMuIENocm9tZTo6dXBkYXRlRm9ybVZhbGlk
YXRpb25NZXNzYWdlKCkKKyAgICAgICAgbWFuYWdlcyByZXF1ZXN0cyBmcm9tIG11bHRpcGxlIEhU
TUxGb3JtQ29udHJvbEVsZW1lbnQgaW5zdGFuY2VzOgorICAgICAgICAtIFBlcmlvZGljYWxseSBj
YWxscyBDaHJvbWVDbGllbnQ6OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSgpCisgICAgICAg
ICAgdG8gZm9sbG93IGVsZW1lbnQgcG9zaXRpb24gY2hhbmdlLgorICAgICAgICAtIElmIGEgbWVz
c2FnZSBpcyBzaG93biBmb3IgYSBjb250cm9sIGFuZCB0aGUgZm9jdXMgaXMgY2hhbmdlZCB0bwor
ICAgICAgICAgIGFub3RoZXIgaW52YWxpZCBjb250cm9sLCBoaWRlIHRoZSBjdXJyZW50IG1lc3Nh
Z2UsIHdhaXQgYSBsaXR0bGUsCisgICAgICAgICAgdGhlbiBzaG93IGEgbWVzc2FnZSBmb3IgYW5v
dGhlciBjb250cm9sLgorICAgICAgICAtIElmIGEgbWVzc2FnZSBmb3IgYSBjb250cm9sIGlzIHNo
b3duIGFuZCBhbm90aGVyIG1lc3NhZ2UgZm9yIHRoZQorICAgICAgICAgIGNvbnRyb2wgaXMgcmVx
dWVzdGVkLCBoaWRlIHRoZSBjdXJyZW50IG1lc3NhZ2UsIHdhaXQgYSBsaXR0bGUsCisgICAgICAg
ICAgdGhlbiBzaG93IHRoZSBuZXcgbWVzc2FnZS4KKworICAgICAgICBUZXN0OiBmYXN0L2Zvcm1z
L3Zpc2libGUtdmFsaWRhdGlvbi1tZXNzYWdlLmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xF
bGVtZW50OjpkZXRhY2gpOgorICAgICAgICAgIEFkZCBhIGNhbGwgdG8gdXBkYXRlVmlzaWJsZVZh
bGlkYXRpb25NZXNzYWdlKCkuCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50OjpzZXROZWVkc1dpbGxWYWxpZGF0ZUNoZWNrKTogZGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp1cGRhdGVWaXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2Up
OgorICAgICAgICAgIEFkZGVkLiBDYWxscyBDaHJvbWU6OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVz
c2FnZSgpIGlmIHRoZSBzdGF0dXMKKyAgICAgICAgICBpcyBjaGFuZ2VkLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0TmVlZHNWYWxpZGl0eUNoZWNrKToKKyAg
ICAgICAgICBBZGQgYSBjYWxsIHRvIHVwZGF0ZVZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSgpLgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2
ZW50KTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojpk
aXNwYXRjaEJsdXJFdmVudCk6IGRpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9s
RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6dmlz
aWJsZVZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgICBBZGRlZCB0aGUgZGVjbGFyYXRpb24u
CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6RW1w
dHlDaHJvbWVDbGllbnQ6OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpFbXB0eUNocm9tZUNsaWVudDo6dmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRlcnZh
bFNlY29uZCk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUNocm9tZUNsaWVudDo6dmFsaWRhdGlv
bk1lc3NhZ2VVcGRhdGVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUNocm9tZUNsaWVu
dDo6dmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29uZCk6CisgICAgICAgICAgQWRkZWQgYXMg
bW9ja3MuCisgICAgICAgICogcGFnZS9DaHJvbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hy
b21lOjp1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UpOiBTZWUgYWJvdmUuCisgICAgICAgIChX
ZWJDb3JlOjpDaHJvbWU6OnN0YXJ0VmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dCk6CisgICAgICAg
ICAgQSBoZWxwZXIgZm9yIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSgpLgorICAgICAgICAo
V2ViQ29yZTo6Q2hyb21lOjp2YWxpZGF0aW9uTWVzc2FnZVRpbWVyRmlyZWQpOgorICAgICAgICAg
IEEgaGVscGVyIGZvciB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoKS4KKyAgICAgICAgKiBw
YWdlL0Nocm9tZS5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisKIDIwMTAtMDYt
MDkgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBEaXJrIFNjaHVsemUuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1D
b250cm9sRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5j
cHAKaW5kZXggZmE1ZDk1N2EwNWQ5YTk0NzYyMGY0ODg5YTQxNjI2ZjMzMmUyNWYzZC4uYzg3YmJi
NDk4Y2MyNDg1NjI2N2Q3ZmJiY2Y5OTcxOTEzYTZhNDQ2NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xFbGVtZW50LmNwcApAQCAtNzYsNiArNzYsMTIgQEAgSFRNTEZvcm1Db250cm9sRWxl
bWVudDo6fkhUTUxGb3JtQ29udHJvbEVsZW1lbnQoKQogICAgICAgICBtX2Zvcm0tPnJlbW92ZUZv
cm1FbGVtZW50KHRoaXMpOwogfQogCit2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRldGFj
aCgpCit7CisgICAgSFRNTEVsZW1lbnQ6OmRldGFjaCgpOworICAgIHVwZGF0ZVZpc2libGVWYWxp
ZGF0aW9uTWVzc2FnZSgpOworfQorCiBib29sIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmZvcm1O
b1ZhbGlkYXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4gIWdldEF0dHJpYnV0ZShmb3Jtbm92YWxp
ZGF0ZUF0dHIpLmlzTnVsbCgpOwpAQCAtMzI1LDcgKzMzMSw3IEBAIHZvaWQgSFRNTEZvcm1Db250
cm9sRWxlbWVudDo6c2V0TmVlZHNXaWxsVmFsaWRhdGVDaGVjaygpCiAgICAgbV93aWxsVmFsaWRh
dGVJbml0aWFsaXplZCA9IHRydWU7CiAgICAgbV93aWxsVmFsaWRhdGUgPSBuZXdXaWxsVmFsaWRh
dGU7CiAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwotICAgIC8vIEZJWE1FOiBTaG93L2hpZGUg
YSB2YWxpZGF0aW9uIG1lc3NhZ2UuCisgICAgdXBkYXRlVmlzaWJsZVZhbGlkYXRpb25NZXNzYWdl
KCk7CiB9CiAKIFN0cmluZyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp2YWxpZGF0aW9uTWVzc2Fn
ZSgpCkBAIC0zMzMsNiArMzM5LDI4IEBAIFN0cmluZyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp2
YWxpZGF0aW9uTWVzc2FnZSgpCiAgICAgcmV0dXJuIHZhbGlkaXR5KCktPnZhbGlkYXRpb25NZXNz
YWdlKCk7CiB9CiAKK3ZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6dXBkYXRlVmlzaWJsZVZh
bGlkYXRpb25NZXNzYWdlKCkKK3sKKyAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgp
OworICAgIFN0cmluZyBtZXNzYWdlOworICAgIC8vIFdlIGNhbid0IHVzZSBmb2N1c2VkKCkuIFRo
ZSBmb2N1c2VkKCkgc3RhdGUgaXMgdXBkYXRlZCBhZnRlciBkaXNwYXRjaEZvY3VzRXZlbnQoKS4K
KyAgICBpZiAocGFnZSAmJiBkb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpID09IHRoaXMgJiYgcmVu
ZGVyZXIoKSAmJiB3aWxsVmFsaWRhdGUoKSkgeworICAgICAgICBtZXNzYWdlID0gdmFsaWRhdGlv
bk1lc3NhZ2UoKS5zdHJpcFdoaXRlU3BhY2UoKTsKKyAgICAgICAgLy8gSFRNTDUgc3BlY2lmaWNh
dGlvbiBkb2Vzbid0IGFzayBVQSB0byBzaG93IHRoZSB0aXRsZSBhdHRyaWJ1dGUgdmFsdWUKKyAg
ICAgICAgLy8gd2l0aCB0aGUgdmFsaWRhdGlvbk1lc3NhZ2UuICBIb3dldmVyLCB0aGlzIGJlaGF2
aW9yIGlzIHNhbWUgYXMgT3BlcmEKKyAgICAgICAgLy8gYW5kIHRoZSBzcGVjaWZpY2F0aW9uIGRl
c2NyaWJlcyBzdWNoIGJlaGF2aW9yIGFzIGFuIGV4YW1wbGUuCisgICAgICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgdGl0bGUgPSBnZXRBdHRyaWJ1dGUodGl0bGVBdHRyKTsKKyAgICAgICAgaWYgKCFt
ZXNzYWdlLmlzRW1wdHkoKSAmJiAhdGl0bGUuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBtZXNz
YWdlLmFwcGVuZCgnXG4nKTsKKyAgICAgICAgICAgIG1lc3NhZ2UuYXBwZW5kKHRpdGxlKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICBpZiAobV92aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UgPT0gbWVz
c2FnZSkKKyAgICAgICAgcmV0dXJuOworICAgIHBhZ2UtPmNocm9tZSgpLT51cGRhdGVGb3JtVmFs
aWRhdGlvbk1lc3NhZ2UodGhpcywgbWVzc2FnZSk7CisgICAgbV92aXNpYmxlVmFsaWRhdGlvbk1l
c3NhZ2UgPSBtZXNzYWdlOworfQorCiBib29sIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmNoZWNr
VmFsaWRpdHkoVmVjdG9yPFJlZlB0cjxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PiA+KiB1bmhhbmRs
ZWRJbnZhbGlkQ29udHJvbHMpCiB7CiAgICAgaWYgKCF3aWxsVmFsaWRhdGUoKSB8fCBpc1ZhbGlk
Rm9ybUNvbnRyb2xFbGVtZW50KCkpCkBAIC0zNjIsNyArMzkwLDkgQEAgdm9pZCBIVE1MRm9ybUNv
bnRyb2xFbGVtZW50OjpzZXROZWVkc1ZhbGlkaXR5Q2hlY2soKQogICAgICAgICBzZXROZWVkc1N0
eWxlUmVjYWxjKCk7CiAgICAgfQogICAgIG1faXNWYWxpZCA9IG5ld0lzVmFsaWQ7Ci0gICAgLy8g
RklYTUU6IHNob3cvaGlkZSBhIHZhbGlkYXRpb24gbWVzc2FnZS4KKyAgICAvLyBDYWxscyBpdCBl
dmVuIGlmIG1faXNWYWxpZCBpcyBub3QgY2hhbmdlZAorICAgIC8vIGJlY2F1c2UgYSB2YWxpZGF0
aW9uIG1lc3NhZ2UgY2FuIGJlIGNoYWduZWQuCisgICAgdXBkYXRlVmlzaWJsZVZhbGlkYXRpb25N
ZXNzYWdlKCk7CiB9CiAKIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0Q3VzdG9tVmFs
aWRpdHkoY29uc3QgU3RyaW5nJiBlcnJvcikKQEAgLTM3Niw2ICs0MDYsNyBAQCB2b2lkIEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudCgpCiAgICAgICAgIGRvY3VtZW50
KCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5mb3JtRGlkRm9jdXModGhpcyk7CiAKICAg
ICBIVE1MRWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KCk7CisgICAgdXBkYXRlVmlzaWJsZVZh
bGlkYXRpb25NZXNzYWdlKCk7CiB9CiAKIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlz
cGF0Y2hCbHVyRXZlbnQoKQpAQCAtMzg0LDYgKzQxNSw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9s
RWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQoKQogICAgICAgICBkb2N1bWVudCgpLT5wYWdlKCkt
PmNocm9tZSgpLT5jbGllbnQoKS0+Zm9ybURpZEJsdXIodGhpcyk7CiAKICAgICBIVE1MRWxlbWVu
dDo6ZGlzcGF0Y2hCbHVyRXZlbnQoKTsKKyAgICB1cGRhdGVWaXNpYmxlVmFsaWRhdGlvbk1lc3Nh
Z2UoKTsKIH0KIAogSFRNTEZvcm1FbGVtZW50KiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp2aXJ0
dWFsRm9ybSgpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
RWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAppbmRleCBi
OTYwMzgxMmRmNTkzZDc2NzYyZGJkZWExODZlZWU5NDEwOGFkMjY3Li4xYTcwMmY1OTZhZGE1MDI1
MmM3YWM5Yzk0ZjAxYzNhNmI2MDllOTEwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVt
ZW50LmgKQEAgLTg4LDYgKzg4LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHdpbGxW
YWxpZGF0ZSgpIGNvbnN0OwogICAgIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZSgpOworICAgIC8v
IEZvciB0ZXN0aW5nLgorICAgIFN0cmluZyB2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKSB7IHJl
dHVybiBtX3Zpc2libGVWYWxpZGF0aW9uTWVzc2FnZTsgfQogICAgIGJvb2wgY2hlY2tWYWxpZGl0
eShWZWN0b3I8UmVmUHRyPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+ID4qIHVuaGFuZGxlZEludmFs
aWRDb250cm9scyA9IDApOwogICAgIC8vIFRoaXMgbXVzdCBiZSBjYWxsZWQgd2hlbiBhIHZhbGlk
YXRpb24gY29uc3RyYWludCBvciBjb250cm9sIHZhbHVlIGlzIGNoYW5nZWQuCiAgICAgdm9pZCBz
ZXROZWVkc1ZhbGlkaXR5Q2hlY2soKTsKQEAgLTExOCw2ICsxMjAsNyBAQCBwcm90ZWN0ZWQ6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hGb2N1c0V2ZW50KCk7CiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoQmx1ckV2ZW50KCk7CisgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwogCiAgICAg
dm9pZCByZW1vdmVGcm9tRm9ybSgpOwogICAgIC8vIFRoaXMgbXVzdCBiZSBjYWxsZWQgYW55IHRp
bWUgdGhlIHJlc3VsdCBvZiB3aWxsVmFsaWRhdGUoKSBoYXMgY2hhbmdlZC4KQEAgLTE0MCw5ICsx
NDMsMTEgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIEhUTUxGb3JtRWxlbWVudCogdmlydHVhbEZv
cm0oKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNEZWZhdWx0QnV0dG9uRm9yRm9ybSgpIGNv
bnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkRm9ybUNvbnRyb2xFbGVtZW50KCk7CisgICAg
dm9pZCB1cGRhdGVWaXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKTsKIAogICAgIEhUTUxGb3JtRWxl
bWVudCogbV9mb3JtOwogICAgIE93blB0cjxWYWxpZGl0eVN0YXRlPiBtX3ZhbGlkaXR5U3RhdGU7
CisgICAgU3RyaW5nIG1fdmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlOwogICAgIGJvb2wgbV9kaXNh
YmxlZCA6IDE7CiAgICAgYm9vbCBtX3JlYWRPbmx5IDogMTsKICAgICBib29sIG1fcmVxdWlyZWQg
OiAxOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmggYi9XZWJDb3Jl
L2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCBjNjMwOTMxNjgzZTNmMzM2MThlNzcyYTMwNWJi
M2JkNjIwNjhkMmE5Li4xYzZlNDZmN2JiNjNkYWVkMWViNWNhMjA3ZWJkN2U3NDI2OGMyMTFkIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuaApAQCAtMTUwLDYgKzE1MCwxMCBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIHZvaWQgZm9ybURpZEZvY3VzKGNvbnN0IE5vZGUqKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgZm9ybURpZEJsdXIoY29uc3QgTm9kZSopIHsgfQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVG
b3JtVmFsaWRhdGlvbk1lc3NhZ2UoSFRNTEZvcm1Db250cm9sRWxlbWVudCosIGNvbnN0IFN0cmlu
ZyYpIHt9CisgICAgdmlydHVhbCBkb3VibGUgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRlcnZh
bFNlY29uZCgpIHsgcmV0dXJuIDE7IH0KKyAgICB2aXJ0dWFsIGludCB2YWxpZGF0aW9uTWVzc2Fn
ZVVwZGF0ZUNvdW50KGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIDE7IH0KKyAgICB2aXJ0dWFsIGRv
dWJsZSB2YWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0U2Vjb25kKCkgeyByZXR1cm4gMTsgfQogCiAg
ICAgdmlydHVhbCBQYXNzT3duUHRyPEhUTUxQYXJzZXJRdWlya3M+IGNyZWF0ZUhUTUxQYXJzZXJR
dWlya3MoKSB7IHJldHVybiAwOyB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9DaHJvbWUu
Y3BwIGIvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKaW5kZXggMDEyNDIxMWNhZDJiOWVlMDI5NDM0
ZDU1MGQyZTQ2NzMwNWY3NDQ3ZS4uNGFkMGUxYTkzZTI1ZmZiMmMyYjkwZTFlYzMzODg2NjBiNzQx
ZDNiMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIvV2ViQ29yZS9w
YWdlL0Nocm9tZS5jcHAKQEAgLTQxMSw2ICs0MTEsNzggQEAgdm9pZCBDaHJvbWU6OnNldFRvb2xU
aXAoY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0KQogICAgIG1fY2xpZW50LT5zZXRUb29sVGlw
KHRvb2xUaXAsIHRvb2xUaXBEaXJlY3Rpb24pOwogfQogCit2b2lkIENocm9tZTo6dXBkYXRlRm9y
bVZhbGlkYXRpb25NZXNzYWdlKEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGNvbnRyb2wsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBBU1NFUlQoY29udHJvbCk7CisgICAgaWYgKCFtX3Zh
bGlkYXRpb25NZXNzYWdlVGltZXIpCisgICAgICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2VUaW1lci5z
ZXQobmV3IFRpbWVyPENocm9tZT4odGhpcywgJkNocm9tZTo6dmFsaWRhdGlvbk1lc3NhZ2VUaW1l
ckZpcmVkKSk7CisKKyAgICBpZiAobWVzc2FnZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKG1f
dmFsaWRhdGlvbk1lc3NhZ2VUYXJnZXQgIT0gY29udHJvbCkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgbV92YWxpZGF0aW9uTWVzc2FnZVRpbWVyLT5zdG9wKCk7CisgICAgICAgIG1fY2xp
ZW50LT51cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoY29udHJvbCwgbWVzc2FnZSk7CisgICAg
ICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2UgPSBtZXNzYWdlOworICAgICAgICBtX3ZhbGlkYXRpb25N
ZXNzYWdlVGFyZ2V0LmNsZWFyKCk7CisgICAgICAgIC8vIFN0YXJ0IHRoZSB0aW1lciB0byBtYWtl
IGEgYmxhY2tvdXQgcGVyaW9kLiBEbyBub3QgdXNlIHN0YXJ0T25lU2hvcnQoKQorICAgICAgICAv
LyBpbiBvcmRlciB0byByZXVzZSB0aGlzIGZvciB0aGUgbmV4dCBtZXNzYWdlLgorICAgICAgICBz
dGFydFZhbGlkYXRpb25NZXNzYWdlQmxhY2tvdXQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGJvb2wgd2FzVmlzaWJsZSA9ICFtX3ZhbGlkYXRpb25NZXNzYWdlLmlzRW1wdHkoKTsK
KyAgICBSZWZQdHI8SFRNTEZvcm1Db250cm9sRWxlbWVudD4gbGFzdFRhcmdldChtX3ZhbGlkYXRp
b25NZXNzYWdlVGFyZ2V0KTsKKyAgICBib29sIHJlc2V0VGltZXIgPSAhd2FzVmlzaWJsZSB8fCBt
X3ZhbGlkYXRpb25NZXNzYWdlVGFyZ2V0ICE9IGNvbnRyb2wgfHwgbV92YWxpZGF0aW9uTWVzc2Fn
ZSAhPSBtZXNzYWdlOworICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2UgPSBtZXNzYWdlOworICAgIG1f
dmFsaWRhdGlvbk1lc3NhZ2VUYXJnZXQgPSBjb250cm9sOworICAgIGlmICghcmVzZXRUaW1lcikg
eworICAgICAgICBtX2NsaWVudC0+dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKG1fdmFsaWRh
dGlvbk1lc3NhZ2VUYXJnZXQuZ2V0KCksIG1fdmFsaWRhdGlvbk1lc3NhZ2UpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGlmICh3YXNWaXNpYmxlKSB7CisgICAgICAgIC8vIENsZWFyIHRo
ZSB2aXNpYmxlIG9sZCBtZXNzYWdlLgorICAgICAgICBtX3ZhbGlkYXRpb25NZXNzYWdlVGltZXIt
PnN0b3AoKTsKKyAgICAgICAgbV9jbGllbnQtPnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShs
YXN0VGFyZ2V0LmdldCgpLCBTdHJpbmcoKSk7CisgICAgICAgIC8vIFdpbGwgc2hvdyB0aGUgbmV3
IG1lc3NhZ2UgYWZ0ZXIgdmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlYy4KKyAgICAgICAgc3Rh
cnRWYWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYg
KG1fdmFsaWRhdGlvbk1lc3NhZ2VUaW1lci0+aXNBY3RpdmUoKSkgeworICAgICAgICAgICAgLy8g
Tm90aGluZyB0byBkbyBpZiBpdCBpcyBpbiBhIGJsYWNrb3V0IHBlcmlvZC4gV2hlbiB0aGUgdGlt
ZXIgaXMKKyAgICAgICAgICAgIC8vIGZpcmVkIG5leHQgdGltZSwgdmFsaWRhdGlvbk1lc3NhZ2VU
aW1lckZpcmVkKCkgc2hvd3MgdGhlIG1lc3NhZ2UKKyAgICAgICAgICAgIC8vIGJlY2F1c2UgbV92
YWxpZGF0aW9uTWVzc2FnZSBpcyBub3QgZW1wdHkuCisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAvLyBJdCdzIG5vdCBpbiBhIGJsYWNrb3V0IHBlcmlvZC4gU2hvdyB0aGUgbWVzc2FnZSBp
bW1lZGlhdGVseS4KKyAgICAgICAgICAgIG1fY2xpZW50LT51cGRhdGVGb3JtVmFsaWRhdGlvbk1l
c3NhZ2UobV92YWxpZGF0aW9uTWVzc2FnZVRhcmdldC5nZXQoKSwgbV92YWxpZGF0aW9uTWVzc2Fn
ZSk7CisgICAgICAgICAgICBtX3ZhbGlkYXRpb25NZXNzYWdlVGltZXJDb3VudGVyID0gMDsKKyAg
ICAgICAgICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2VUaW1lci0+c3RhcnRSZXBlYXRpbmcobV9jbGll
bnQtPnZhbGlkYXRpb25NZXNzYWdlVXBkYXRlSW50ZXJ2YWxTZWNvbmQoKSk7CisgICAgICAgIH0K
KyAgICB9Cit9CisKK3ZvaWQgQ2hyb21lOjpzdGFydFZhbGlkYXRpb25NZXNzYWdlQmxhY2tvdXQo
KQoreworICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2VUaW1lckNvdW50ZXIgPSAtMTsKKyAgICBtX3Zh
bGlkYXRpb25NZXNzYWdlVGltZXItPnN0YXJ0KG1fY2xpZW50LT52YWxpZGF0aW9uTWVzc2FnZUJs
YWNrb3V0U2Vjb25kKCksIG1fY2xpZW50LT52YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUludGVydmFs
U2Vjb25kKCkpOworfQorCit2b2lkIENocm9tZTo6dmFsaWRhdGlvbk1lc3NhZ2VUaW1lckZpcmVk
KFRpbWVyPENocm9tZT4qIHRpbWVyKQoreworICAgIGlmIChtX3ZhbGlkYXRpb25NZXNzYWdlLmlz
RW1wdHkoKSkgeworICAgICAgICBBU1NFUlQobV92YWxpZGF0aW9uTWVzc2FnZVRpbWVyQ291bnRl
ciA8IDApOworICAgICAgICB0aW1lci0+c3RvcCgpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIG1fY2xpZW50LT51cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UobV92YWxpZGF0aW9uTWVz
c2FnZVRhcmdldC5nZXQoKSwgbV92YWxpZGF0aW9uTWVzc2FnZSk7CisgICAgaWYgKCsrbV92YWxp
ZGF0aW9uTWVzc2FnZVRpbWVyQ291bnRlciA8IG1fY2xpZW50LT52YWxpZGF0aW9uTWVzc2FnZVVw
ZGF0ZUNvdW50KG1fdmFsaWRhdGlvbk1lc3NhZ2UpKQorICAgICAgICByZXR1cm47CisgICAgdGlt
ZXItPnN0b3AoKTsKKyAgICBtX2NsaWVudC0+dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKG1f
dmFsaWRhdGlvbk1lc3NhZ2VUYXJnZXQuZ2V0KCksIFN0cmluZygpKTsKKyAgICBtX3ZhbGlkYXRp
b25NZXNzYWdlID0gU3RyaW5nKCk7CisgICAgbV92YWxpZGF0aW9uTWVzc2FnZVRhcmdldC5jbGVh
cigpOworCisgICAgc3RhcnRWYWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0KCk7Cit9CisKIHZvaWQg
Q2hyb21lOjpwcmludChGcmFtZSogZnJhbWUpCiB7CiAgICAgbV9jbGllbnQtPnByaW50KGZyYW1l
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9DaHJvbWUuaCBiL1dlYkNvcmUvcGFnZS9DaHJv
bWUuaAppbmRleCA4ODAzNWE1MjgxN2Y5ODMyZDc1YTJkOWFlYjczNDdlNzEyNmJiMzRjLi5kMjBj
MjliNzZkYWZhNjcxOGRlZWE3ZGQ0ODU1MzhmNTI3ODI2N2YzIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lLmgKKysrIGIvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCkBAIC0yNCw3ICsyNCw5
IEBACiAjaW5jbHVkZSAiRmlsZUNob29zZXIuaCIKICNpbmNsdWRlICJGb2N1c0RpcmVjdGlvbi5o
IgogI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKKyNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTQwLDYgKzQyLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIGNsYXNzIEZsb2F0UmVjdDsKICAgICBjbGFzcyBGcmFtZTsKICAgICBj
bGFzcyBHZW9sb2NhdGlvbjsKKyAgICBjbGFzcyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OwogICAg
IGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiAgICAgY2xhc3MgSW50UmVjdDsKICAgICBjbGFzcyBOb2Rl
OwpAQCAtMTI5LDYgKzEzMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBt
b3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0UmVzdWx0JiwgdW5zaWduZWQgbW9k
aWZpZXJGbGFncyk7CiAKICAgICAgICAgdm9pZCBzZXRUb29sVGlwKGNvbnN0IEhpdFRlc3RSZXN1
bHQmKTsKKyAgICAgICAgdm9pZCB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoSFRNTEZvcm1D
b250cm9sRWxlbWVudCosIGNvbnN0IFN0cmluZyYpOwogCiAgICAgICAgIHZvaWQgcHJpbnQoRnJh
bWUqKTsKIApAQCAtMTQ5LDggKzE1MywxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYK
IAogICAgIHByaXZhdGU6CisgICAgICAgIHZvaWQgdmFsaWRhdGlvbk1lc3NhZ2VUaW1lckZpcmVk
KFRpbWVyPENocm9tZT4qKTsKKyAgICAgICAgdm9pZCBzdGFydFZhbGlkYXRpb25NZXNzYWdlQmxh
Y2tvdXQoKTsKKwogICAgICAgICBQYWdlKiBtX3BhZ2U7CiAgICAgICAgIENocm9tZUNsaWVudCog
bV9jbGllbnQ7CisgICAgICAgIE93blB0cjxUaW1lcjxDaHJvbWU+Kj4gbV92YWxpZGF0aW9uTWVz
c2FnZVRpbWVyOworICAgICAgICBpbnQgbV92YWxpZGF0aW9uTWVzc2FnZVRpbWVyQ291bnRlcjsK
KyAgICAgICAgU3RyaW5nIG1fdmFsaWRhdGlvbk1lc3NhZ2U7CisgICAgICAgIFJlZlB0cjxIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50PiBtX3ZhbGlkYXRpb25NZXNzYWdlVGFyZ2V0OwogICAgIH07CiB9
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1dlYkNvcmUvcGFn
ZS9DaHJvbWVDbGllbnQuaAppbmRleCBjOTNiM2M5YjQ5MTFlMmE1NjcxNGEzZjQyZjA4MjQyMzll
OGE0MjY2Li41MDI4ODNlMWUyOTNkNmJmODZhNGMyOGNjMzBkMWUwMTljYTBiMTRiIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvV2ViQ29yZS9wYWdlL0Nocm9t
ZUNsaWVudC5oCkBAIC00Nyw2ICs0Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFz
cyBGbG9hdFJlY3Q7CiAgICAgY2xhc3MgRnJhbWU7CiAgICAgY2xhc3MgR2VvbG9jYXRpb247Cisg
ICAgY2xhc3MgSFRNTEZvcm1Db250cm9sRWxlbWVudDsKICAgICBjbGFzcyBIVE1MUGFyc2VyUXVp
cmtzOwogICAgIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiAgICAgY2xhc3MgSW50UmVjdDsKQEAgLTIw
Miw2ICsyMDMsMjkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAKICAgICAgICAgdmly
dHVhbCB2b2lkIGZvcm1EaWRGb2N1cyhjb25zdCBOb2RlKikgeyB9OwogICAgICAgICB2aXJ0dWFs
IHZvaWQgZm9ybURpZEJsdXIoY29uc3QgTm9kZSopIHsgfTsKKyAgICAgICAgLy8gU2hvdyB0aGUg
c3BlY2lmaWVkIG1lc3NhZ2UgZm9yIHRoZSBmb3JtIGNvbnRyb2wuIEhpZGUgdGhlIG1lc3NhZ2UK
KyAgICAgICAgLy8gaWYgdGhlIHN0cmluZyBpcyBlbXB0eS4gSWYgdXBkYXRlRm9ybVZhbGlkYXRp
b25NZXNzYWdlKCkgd2l0aAorICAgICAgICAvLyBub24tZW1wdHkgbWVzc2FnZSBpcyBjYWxsZWQs
IHRoZSBzdWJzZXF1ZW50IGNhbGxzIG9mCisgICAgICAgIC8vIHVwZGF0ZUZvcm1WYWxpZGF0aW9u
TWVzc2FnZSgpIG11c3QgYmUgZm9yIHRoZSBzYW1lIGVsZW1lbnQgYW5kIHRoZQorICAgICAgICAv
LyBzYW1lIG1lc3NhZ2UuICBUaGVuLCB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoKSBpcyBj
YWxsZWQgd2l0aAorICAgICAgICAvLyB0aGUgc2FtZSBlbGVtZW50IGFuZCB0aGUgZW1wdHkgbWVz
c2FnZS4KKyAgICAgICAgLy8gIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzYWdlKGNvbnRyb2wxLCAi
bWVzc2FnZTEiKSAtPgorICAgICAgICAvLyAgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNhZ2UoY29u
dHJvbDEsICJtZXNzYWdlMSIpIC0+CisgICAgICAgIC8vICB1cGRhdGVGb3JtVmFsaWRhdGlvbk1l
c2FnZShjb250cm9sMSwgIm1lc3NhZ2UxIikgLi4uIChtdWx0aXBsZSB0aW1lcykKKyAgICAgICAg
Ly8gIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzYWdlKGNvbnRyb2wxLCAiIikKKyAgICAgICAgLy8g
SW4gdGhpcyBzZXF1ZW5jZSwgY2FsbHMgd2l0aCBvdGhlciBjb250cm9scyBvciBvdGhlciBtZXNz
YWdlcworICAgICAgICAvLyBuZXZlciBoYXBwZW4uCisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoSFRNTEZvcm1Db250cm9sRWxlbWVudCosIGNvbnN0IFN0
cmluZyYpID0gMDsKKyAgICAgICAgLy8gQWZ0ZXIgdGhlIGZpcnN0IGNhbGwgb2YgdXBkYXRlRm9y
bVZhbGlkYXRpb25NZXNzYWdlKGUsICJtZXNzYWdlMSIpLAorICAgICAgICAvLyBpdCBpcyBjYWxs
ZWQgcmVwZWF0ZWRseSBldmVyeSB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUludGVydmFsU2Vjb25k
KCkKKyAgICAgICAgLy8gdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3VudCgpLTEgdGltZXMsCisg
ICAgICAgIC8vIHRoZW4gdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKGUsICIiKSBpcyBjYWxs
ZWQgYWZ0ZXIKKyAgICAgICAgLy8gdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRlcnZhbFNlY29u
ZCgpLgorICAgICAgICAvLyBBZnRlciB0aGF0LCB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2Uo
KSBpcyBuZXZlciBjYWxsZWQgZm9yCisgICAgICAgIC8vIHZhbGlkYXRpb25NZXNzYWdlQmxhY2tv
dXRTZWNvbmQoKS4KKyAgICAgICAgdmlydHVhbCBkb3VibGUgdmFsaWRhdGlvbk1lc3NhZ2VVcGRh
dGVJbnRlcnZhbFNlY29uZCgpID0gMDsKKyAgICAgICAgdmlydHVhbCBpbnQgdmFsaWRhdGlvbk1l
c3NhZ2VVcGRhdGVDb3VudChjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgZG91
YmxlIHZhbGlkYXRpb25NZXNzYWdlQmxhY2tvdXRTZWNvbmQoKSA9IDA7CiAKICAgICAgICAgdmly
dHVhbCBQYXNzT3duUHRyPEhUTUxQYXJzZXJRdWlya3M+IGNyZWF0ZUhUTUxQYXJzZXJRdWlya3Mo
KSA9IDA7CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9DaGFuZ2VMb2cgYi9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDIzN2IxNDRlZDJiMzljM2ZhZTgyYTM5MmNiMWJkYzIxMmQ3NmRjZmQuLmIwYmU2OWE2
Y2U3ZTAxMGY4MWUxMTEwNzI2NDNlNmQ5ODU3NTc5MTAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEwLTA0LTAx
ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGcmFtZXdvcmsgdG8gc2hvdyBmb3JtIHZhbGlk
YXRpb24gbWVzc2FnZSBmb3IgaW52YWxpZCBjb250cm9scworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE3MTgKKworICAgICAgICBBZGQgc3R1YiBmdW5j
dGlvbnMgZm9yIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSgpLAorICAgICAgICB2YWxpZGF0
aW9uTWVzc2FnZVVwZGF0ZUludGVydmFsU2Vjb25kKCksCisgICAgICAgIHZhbGlkYXRpb25NZXNz
YWdlVXBkYXRlQ291bnQoKSwgYW5kCisgICAgICAgIHZhbGlkYXRpb25NZXNzYWdlQmxhY2tvdXRT
ZWNvbmQoKS4KKworICAgICAgICAqIGVmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjp1cGRhdGVGb3JtVmFsaWRh
dGlvbk1lc3NhZ2UpOgorICAgICAgICAqIGVmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRF
ZmwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6dmFsaWRhdGlvbk1lc3Nh
Z2VVcGRhdGVJbnRlcnZhbFNlY29uZCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRF
Zmw6OnZhbGlkYXRpb25NZXNzYWdlVXBkYXRlQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hy
b21lQ2xpZW50RWZsOjp2YWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0U2Vjb25kKToKKwogMjAxMC0w
Ni0wMSAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBTYW0gV2VpbmlnLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNWQzOWZjYTJkMzY2YTU0NGMyOGZm
Y2I3ZDEwOGExOGQ3NDA1YTI0OC4uNjMxNGQ4MzllNmVjOWIwYTA1ZTk3MjNlMmU3ZTRkMjczYmU5
MzUyNiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMDQtMDEgIEtlbnQgVGFt
dXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEZyYW1ld29yayB0byBzaG93IGZvcm0gdmFsaWRhdGlvbiBtZXNz
YWdlIGZvciBpbnZhbGlkIGNvbnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zMTcxOAorCisgICAgICAgIEFkZCBzdHViIGZ1bmN0aW9ucyBmb3Ig
dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKCksCisgICAgICAgIHZhbGlkYXRpb25NZXNzYWdl
VXBkYXRlSW50ZXJ2YWxTZWNvbmQoKSwKKyAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVD
b3VudCgpLCBhbmQKKyAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29uZCgpLgor
CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpD
aHJvbWVDbGllbnRJbXBsOjp1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UpOgorICAgICAgICAq
IHNyYy9DaHJvbWVDbGllbnRJbXBsLmg6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudElt
cGw6OnZhbGlkYXRpb25NZXNzYWdlVXBkYXRlSW50ZXJ2YWxTZWNvbmQpOgorICAgICAgICAoV2Vi
S2l0OjpDaHJvbWVDbGllbnRJbXBsOjp2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUNvdW50KToKKyAg
ICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6dmFsaWRhdGlvbk1lc3NhZ2VCbGFja291
dFNlY29uZCk6CisKIDIwMTAtMDYtMDkgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdpdCBh
L1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21p
dW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCmluZGV4IDY1OTEwZjgzMWJjNzQwMDQyMzdlMjFm
NmQ0NGMyOTM3MWY2Njc5YmMuLmQ2YTIzMWYwMzBlMTQwZjUyNjA5N2I5NDYxMTEwOTJkZmYxM2Q0
YjUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAK
KysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcApAQCAtNjU0LDYg
KzY1NCwxMSBAQCB2b2lkIENocm9tZUNsaWVudEltcGw6OmZvcm1TdGF0ZURpZENoYW5nZShjb25z
dCBOb2RlKiBub2RlKQogICAgICAgICB3ZWJmcmFtZS0+Y2xpZW50KCktPmRpZFVwZGF0ZUN1cnJl
bnRIaXN0b3J5SXRlbSh3ZWJmcmFtZSk7CiB9CiAKK3ZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6dXBk
YXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQq
LCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
IHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6Z2V0UG9wdXBNZW51SW5mbyhQb3B1cENvbnRhaW5lciog
cG9wdXBDb250YWluZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
V2ViUG9wdXBNZW51SW5mbyogaW5mbykKIHsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9z
cmMvQ2hyb21lQ2xpZW50SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJ
bXBsLmgKaW5kZXggM2I1ZWJkNTJiMDJiYmY5YzJiYWIzNGFhNjkwMjk2OGUwYTkxMmI1Ni4uYzY2
ODA0MGYxOGYzYmIyNDgzMDNkZDcyZDY2YmZiNDUwNjk0NTBlZiAxMDA2NDQKLS0tIGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9DaHJvbWVDbGllbnRJbXBsLmgKQEAgLTEyOCw2ICsxMjgsMTAgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBjaG9vc2VJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlN0cmlu
Zz4mLCBXZWJDb3JlOjpGaWxlQ2hvb3NlciopOwogICAgIHZpcnR1YWwgYm9vbCBzZXRDdXJzb3Io
V2ViQ29yZTo6UGxhdGZvcm1DdXJzb3JIYW5kbGUpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmly
dHVhbCB2b2lkIGZvcm1TdGF0ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpOb2RlKik7CisgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShXZWJDb3JlOjpIVE1MRm9y
bUNvbnRyb2xFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7CisgICAgdmlydHVhbCBk
b3VibGUgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRlcnZhbFNlY29uZCgpIHsgcmV0dXJuIDAu
MzsgLyogRklYTUUgKi8gfQorICAgIHZpcnR1YWwgaW50IHZhbGlkYXRpb25NZXNzYWdlVXBkYXRl
Q291bnQoY29uc3QgV2ViQ29yZTo6U3RyaW5nJikgeyByZXR1cm4gMjA7IC8qIEZJWE1FICovIH0K
KyAgICB2aXJ0dWFsIGRvdWJsZSB2YWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0U2Vjb25kKCkgeyBy
ZXR1cm4gMC42OyAvKiBGSVhNRSAqLyB9CiAgICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkNvcmU6
OkhUTUxQYXJzZXJRdWlya3M+IGNyZWF0ZUhUTUxQYXJzZXJRdWlya3MoKSB7IHJldHVybiAwOyB9
CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICAvLyBGSVhNRTogQWxsIHRvdWNoIGV2ZW50
cyBhcmUgZm9yd2FyZGVkIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvciBub3QgdGhleSBhcmUgbmVl
ZGVkLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRF
ZmwuY3BwIGIvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCmlu
ZGV4IGM1MWJlZmIyNGJhNDU0ZDNlYTFiZTIwYjdmZjUzMTkyNmM1YTY5MDAuLjAxM2JlY2VjZjQz
MGEyYmJlZGJhYzIxOThhN2NkNDhhYzIwOWFjNWEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcAorKysgYi9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKQEAgLTM4NCw2ICszODQsMTEgQEAgdm9pZCBDaHJv
bWVDbGllbnRFZmw6OmZvcm1TdGF0ZURpZENoYW5nZShjb25zdCBOb2RlKikKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQogCit2b2lkIENocm9tZUNsaWVudEVmbDo6dXBkYXRlRm9ybVZhbGlkYXRp
b25NZXNzYWdlKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQqLCBjb25zdCBXZWJDb3Jl
OjpTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIGJvb2wgQ2hyb21lQ2xp
ZW50RWZsOjpzZXRDdXJzb3IoUGxhdGZvcm1DdXJzb3JIYW5kbGUpCiB7CiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50RWZsLmggYi9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCmlu
ZGV4IDM5OWVmN2YwYjEyYWFhNjUyNzdkY2QzODM1OWEzMjgzMmQ3NTExYjEuLjA2ZjljNjI0OGQw
ZjlmMjk2ZGNjOTI4M2Y0YjE4YWIzZjBkMTgyYmMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmgKKysrIGIvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRFZmwuaApAQCAtMTE1LDYgKzExNSwxMCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+
KTsKICAgICB2aXJ0dWFsIHZvaWQgY2hvb3NlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiwgRmlsZUNob29zZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgZm9ybVN0YXRlRGlkQ2hhbmdl
KGNvbnN0IE5vZGUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNz
YWdlKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQsIGNvbnN0IFdlYkNvcmU6OlN0cmlu
ZyYpOworICAgIHZpcnR1YWwgZG91YmxlIHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlSW50ZXJ2YWxT
ZWNvbmQoKSB7IHJldHVybiAwLjM7IC8qIEZJWE1FICovIH0KKyAgICB2aXJ0dWFsIGludCB2YWxp
ZGF0aW9uTWVzc2FnZVVwZGF0ZUNvdW50KGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIDIwOyAvKiBG
SVhNRSAqLyB9CisgICAgdmlydHVhbCBkb3VibGUgdmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNl
Y29uZCgpIHsgcmV0dXJuIDAuNjsgLyogRklYTUUgKi8gfQogCiAgICAgdmlydHVhbCBQYXNzT3du
UHRyPEhUTUxQYXJzZXJRdWlya3M+IGNyZWF0ZUhUTUxQYXJzZXJRdWlya3MoKSB7IHJldHVybiAw
OyB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKaW5kZXggZjdmNGM4ZjcwYjFhNWU2YWY1NDg0NGJiMTZlNTBiZWUyZTg4NDcyNi4uYWZl
YTNhYmM1MjJiZjVjZmQ2M2FjNWM3MzE0NTFjNTViYmFmNmRjMSAxMDA2NDQKLS0tIGEvV2ViS2l0
L2d0ay9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBA
QAorMjAxMC0wNC0wMSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRnJhbWV3b3JrIHRvIHNo
b3cgZm9ybSB2YWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGludmFsaWQgY29udHJvbHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNzE4CisKKyAgICAgICAg
QWRkIHN0dWIgZnVuY3Rpb25zIGZvciB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoKSwKKyAg
ICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRlcnZhbFNlY29uZCgpLAorICAgICAgICB2
YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUNvdW50KCksIGFuZAorICAgICAgICB2YWxpZGF0aW9uTWVz
c2FnZUJsYWNrb3V0U2Vjb25kKCkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnVwZGF0ZUZvcm1W
YWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
R3RrLmg6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6dmFsaWRhdGlvbk1lc3NhZ2VV
cGRhdGVJbnRlcnZhbFNlY29uZCk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6dmFs
aWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3VudCk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVu
dDo6dmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29uZCk6CisKIDIwMTAtMDYtMDggIFhhbiBM
b3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8g
Tm9yb25oYS4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50R3RrLmNwcCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNw
cAppbmRleCA1NzU5NjAxMzVlZjU2N2ZkOTcwMzMxYThiMDNlM2NmOGI3MTgwNjM1Li4xNTU3MGY3
MDM1YzcxNjcwYmQwMTY0MDYwYzRiN2ZlZGU4ZjgxOTFhIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKKysrIGIvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCkBAIC01NjQsNiArNTY0LDExIEBAIHZvaWQg
Q2hyb21lQ2xpZW50OjpjaG9vc2VJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlN0
cmluZz4mIGZpbGVuYW1lcywKICAgICBjaG9vc2VyLT5pY29uTG9hZGVkKEljb246OmNyZWF0ZUlj
b25Gb3JGaWxlcyhmaWxlbmFtZXMpKTsKIH0KIAordm9pZCBDaHJvbWVDbGllbnQ6OnVwZGF0ZUZv
cm1WYWxpZGF0aW9uTWVzc2FnZShXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiwgY29u
c3QgV2ViQ29yZTo6U3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiBib29s
IENocm9tZUNsaWVudDo6c2V0Q3Vyc29yKFBsYXRmb3JtQ3Vyc29ySGFuZGxlKQogewogICAgIG5v
dEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEd0ay5oIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRH
dGsuaAppbmRleCA0NmQwMTVlZGFiN2UwNTVhOWIwZGFlNjI2YjUwMTFkM2QxYTZjODczLi41MGE0
MTNjODFjZDZmNjA1MmNkMTE5MDQ1ZGJkZWZiODU0NGQwMmNhIDEwMDY0NAotLS0gYS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCisrKyBiL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKQEAgLTExMyw2ICsxMTMsMTAgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjaG9vc2VJY29uRm9yRmlsZXMoY29u
c3QgVmVjdG9yPFdlYkNvcmU6OlN0cmluZz4mLCBXZWJDb3JlOjpGaWxlQ2hvb3NlciopOwogCiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBmb3JtU3RhdGVEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6Tm9k
ZSopIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdl
KFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcm
KTsKKyAgICAgICAgdmlydHVhbCBkb3VibGUgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRlcnZh
bFNlY29uZCgpIHsgcmV0dXJuIDAuMzsgLyogRklYTUUgKi8gfQorICAgICAgICB2aXJ0dWFsIGlu
dCB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUNvdW50KGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpIHsg
cmV0dXJuIDIwOyAvKiBGSVhNRSAqLyB9CisgICAgICAgIHZpcnR1YWwgZG91YmxlIHZhbGlkYXRp
b25NZXNzYWdlQmxhY2tvdXRTZWNvbmQoKSB7IHJldHVybiAwLjY7IC8qIEZJWE1FICovIH0KIAog
ICAgICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6SFRNTFBhcnNlclF1aXJrcz4gY3Jl
YXRlSFRNTFBhcnNlclF1aXJrcygpIHsgcmV0dXJuIDA7IH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0
L2hhaWt1L0NoYW5nZUxvZyBiL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKaW5kZXggMzVhZDk4YTE3
YWQ2ZmIyZTkzMWYyODkzM2Q1OTk4OWQ1ZTIzNjU1My4uNTg5MGQxNGZiNjRiMTUwNDc5ZjIzNGMz
ZWU5MjVhMzg4MTBhMGM1ZCAxMDA2NDQKLS0tIGEvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZworKysg
Yi9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMDQtMDEgIEtl
bnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyYW1ld29yayB0byBzaG93IGZvcm0gdmFsaWRhdGlv
biBtZXNzYWdlIGZvciBpbnZhbGlkIGNvbnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTcxOAorCisgICAgICAgIEFkZCBzdHViIGZ1bmN0aW9u
cyBmb3IgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKCksCisgICAgICAgIHZhbGlkYXRpb25N
ZXNzYWdlVXBkYXRlSW50ZXJ2YWxTZWNvbmQoKSwKKyAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VV
cGRhdGVDb3VudCgpLCBhbmQKKyAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29u
ZCgpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OnVwZGF0ZUZvcm1WYWxpZGF0aW9u
TWVzc2FnZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1Ojp2YWxpZGF0aW9uTWVzc2FnZVVw
ZGF0ZUludGVydmFsU2Vjb25kKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1
Ojp2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9t
ZUNsaWVudEhhaWt1Ojp2YWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0U2Vjb25kKToKKwogMjAxMC0w
NS0zMSAgTHlvbiBDaGVuICA8bGlhY2hlbkByaW0uY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEtlbnQgVGFtdXJhLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEhhaWt1LmNwcCBiL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRIYWlrdS5jcHAKaW5kZXggMmNmNWMzMTZjYTcxYjZkZDJmNWNlMzdkYjk3NDRmZGQ4YzBm
ZjIzMS4uMTMyMWVkYWU5OGI4Njc0MGI5OTgyMjNmNzBjMDcwMmJmYzBhODliZiAxMDA2NDQKLS0t
IGEvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmNwcAorKysg
Yi9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuY3BwCkBAIC0z
NzUsNiArMzc1LDExIEBAIHZvaWQgQ2hyb21lQ2xpZW50SGFpa3U6OmZvcm1TdGF0ZURpZENoYW5n
ZShjb25zdCBOb2RlKikKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIENocm9tZUNs
aWVudEhhaWt1Ojp1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoV2ViQ29yZTo6SFRNTEZvcm1D
b250cm9sRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwogUGFzc093blB0cjxIVE1MUGFyc2VyUXVpcmtzPiBDaHJvbWVDbGllbnRI
YWlrdTo6Y3JlYXRlSFRNTFBhcnNlclF1aXJrcygpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
ZGlmZiAtLWdpdCBhL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlr
dS5oIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmgKaW5k
ZXggZDVhMzcyYjBmYmMyZWViNWY2YjMxMmNhYWZjNzI4MjU1YTNkZjM3Yi4uOTRlYzc1YmU0Y2Ux
ZjU5ZGU0MjcyZjRkZWQ4MmYwY2Q4Y2FhMzYzZSAxMDA2NDQKLS0tIGEvV2ViS2l0L2hhaWt1L1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmgKKysrIGIvV2ViS2l0L2hhaWt1L1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmgKQEAgLTE0NSw2ICsxNDUsMTAgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICAvLyBOb3RpZmljYXRpb24gdGhhdCB0aGUgZ2l2ZW4gZm9y
bSBlbGVtZW50IGhhcyBjaGFuZ2VkLiBUaGlzIGZ1bmN0aW9uCiAgICAgICAgIC8vIHdpbGwgYmUg
Y2FsbGVkIGZyZXF1ZW50bHksIHNvIGhhbmRsaW5nIHNob3VsZCBiZSB2ZXJ5IGZhc3QuCiAgICAg
ICAgIHZvaWQgZm9ybVN0YXRlRGlkQ2hhbmdlKGNvbnN0IE5vZGUqKTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShXZWJDb3JlOjpIVE1MRm9ybUNvbnRy
b2xFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7CisgICAgICAgIHZpcnR1YWwgZG91
YmxlIHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlSW50ZXJ2YWxTZWNvbmQoKSB7IHJldHVybiAwLjM7
IC8qIEZJWE1FICovIH0KKyAgICAgICAgdmlydHVhbCBpbnQgdmFsaWRhdGlvbk1lc3NhZ2VVcGRh
dGVDb3VudChjb25zdCBTdHJpbmcmKSB7IHJldHVybiAyMDsgLyogRklYTUUgKi8gfQorICAgICAg
ICB2aXJ0dWFsIGRvdWJsZSB2YWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0U2Vjb25kKCkgeyByZXR1
cm4gMC42OyAvKiBGSVhNRSAqLyB9CiAKICAgICAgICAgUGFzc093blB0cjxIVE1MUGFyc2VyUXVp
cmtzPiBjcmVhdGVIVE1MUGFyc2VyUXVpcmtzKCk7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1dlYktp
dC9tYWMvQ2hhbmdlTG9nIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggYzllZmRjNmYyZGY3
OTQxOTlkMTRkYTZjOTEwMmM2Y2VkNWQzYTMyZC4uNzVlNTAzMGVjY2UwODc3OTFmNTFkNzMwNDRl
Zjc5OWJlMzY0OWMxMSAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMC0wNC0wMSAgS2VudCBUYW11
cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRnJhbWV3b3JrIHRvIHNob3cgZm9ybSB2YWxpZGF0aW9uIG1lc3Nh
Z2UgZm9yIGludmFsaWQgY29udHJvbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTMxNzE4CisKKyAgICAgICAgQWRkIHN0dWIgZnVuY3Rpb25zIGZvciB1
cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoKSwKKyAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VV
cGRhdGVJbnRlcnZhbFNlY29uZCgpLAorICAgICAgICB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUNv
dW50KCksIHZhbGlkYXRpb25NZXNzYWdlQmxhY2tvdXRTZWNvbmQoKSwgYW5kCisgICAgICAgIGEg
aGVscGVyIGZvciBMYXlvdXRUZXN0Q29udHJvbGxlcjo6dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdl
Rm9yRWxlbWVudEJ5SWQoKS4KKworICAgICAgICAqIE1pc2MvV2ViQ29yZVN0YXRpc3RpY3MuaDoK
KyAgICAgICAgKiBNaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tOgorICAgICAgICAoLVtXZWJGcmFt
ZSB2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZDpdKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNocm9tZUNsaWVu
dDo6dmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRlcnZhbFNlY29uZCk6CisgICAgICAgIChXZWJD
aHJvbWVDbGllbnQ6OnZhbGlkYXRpb25NZXNzYWdlVXBkYXRlQ291bnQpOgorICAgICAgICAoV2Vi
Q2hyb21lQ2xpZW50Ojp2YWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0U2Vjb25kKToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW06CisgICAgICAgIChXZWJDaHJvbWVD
bGllbnQ6OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSk6CisKKwogMjAxMC0wNi0wOCAgTWFy
ayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkZWxlIFBl
dGVyc29uLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLmgg
Yi9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MuaAppbmRleCBhMTFjMDY0NDhjOGM3
ZjVkYTgyYjBmMmVjNjY1ZTU1YmUyNTM4OWJjLi42YTlkZGEyN2FjYzMwNTFlMjZhMGRiZmY0MWUz
MjU1YzA5NzlhNjE4IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3Rp
Y3MuaAorKysgYi9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MuaApAQCAtODcsNCAr
ODcsNSBAQAogLSAoTlNTdHJpbmcgKiljb3VudGVyVmFsdWVGb3JFbGVtZW50OihET01FbGVtZW50
KillbGVtZW50OwogLSAoaW50KXBhZ2VOdW1iZXJGb3JFbGVtZW50OihET01FbGVtZW50KillbGVt
ZW50OihmbG9hdClwYWdlV2lkdGhJblBpeGVsczooZmxvYXQpcGFnZUhlaWdodEluUGl4ZWxzOwog
LSAoaW50KW51bWJlck9mUGFnZXM6KGZsb2F0KXBhZ2VXaWR0aEluUGl4ZWxzOihmbG9hdClwYWdl
SGVpZ2h0SW5QaXhlbHM7CistIChOU1N0cmluZyAqKXZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZv
ckVsZW1lbnRCeUlkOihOU1N0cmluZyAqKWVsZW1lbnRJZDsKIEBlbmQKZGlmZiAtLWdpdCBhL1dl
YktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbSBiL1dlYktpdC9tYWMvTWlzYy9XZWJD
b3JlU3RhdGlzdGljcy5tbQppbmRleCBjM2ZjMjNlY2Y0ODcxNzE1NDA1NzYxYjFjNGEwNGM1NGMz
OTRjMDU4Li4wNzA0MzY3YTIwN2Q2MmZhNDExZGM2MWQ5YzBkZDg2MjYzZWYwYTk3IDEwMDY0NAot
LS0gYS9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW0KKysrIGIvV2ViS2l0L21h
Yy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbXBvcnQg
IldlYkNvcmVTdGF0aXN0aWNzLmgiCiAKKyNpbXBvcnQgIkRPTURvY3VtZW50SW50ZXJuYWwuaCIK
ICNpbXBvcnQgIkRPTUVsZW1lbnRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViQ2FjaGUuaCIKICNp
bXBvcnQgIldlYkZyYW1lSW50ZXJuYWwuaCIKQEAgLTM3LDYgKzM4LDcgQEAKICNpbXBvcnQgPFdl
YkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvR0NDb250cm9sbGVyLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0dseXBoUGFnZVRyZWVOb2RlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSWNvbkRhdGFiYXNlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0pTRE9NV2luZG93Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2VDYWNoZS5o
PgpAQCAtMjc1LDQgKzI3NywxNSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICByZXR1
cm4gUHJpbnRDb250ZXh0OjpudW1iZXJPZlBhZ2VzKF9wcml2YXRlLT5jb3JlRnJhbWUsIEZsb2F0
U2l6ZShwYWdlV2lkdGhJblBpeGVscywgcGFnZUhlaWdodEluUGl4ZWxzKSk7CiB9CiAKKy0gKE5T
U3RyaW5nICopdmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQ6KE5TU3RyaW5n
ICopZWxlbWVudElkCit7CisgICAgRE9NRWxlbWVudCogZWxlbWVudCA9IFtbc2VsZiBET01Eb2N1
bWVudF0gZ2V0RWxlbWVudEJ5SWQ6ZWxlbWVudElkXTsKKyAgICBpZiAoIWVsZW1lbnQpCisgICAg
ICAgIHJldHVybiBuaWw7CisgICAgRWxlbWVudCogY29yZUVsZW1lbnQgPSBjb3JlKGVsZW1lbnQp
OworICAgIGlmICghY29yZUVsZW1lbnQtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpCisgICAgICAg
IHJldHVybiBuaWw7CisgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudCogZm9ybUNvbnRyb2wgPSBz
dGF0aWNfY2FzdDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Kj4oY29yZUVsZW1lbnQpOworICAgIHJl
dHVybiAoTlNTdHJpbmcqKWZvcm1Db250cm9sLT52aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKTsK
K30KIEBlbmQKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmggYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmlu
ZGV4IDdkZWVhNzlhMmJlOTUzOTllOGU4ZmViNjk0OTExMjlkM2ZkYWIzYTcuLjJmMDVjZTg1NDRi
MTE4N2E5ZjdiZmUwZTU2NzI1OGFlNTVhNmE3NDAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMTQ3LDYgKzE0NywxMCBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZm9ybURpZEZvY3VzKGNvbnN0IFdlYkNvcmU6Ok5vZGUqKTsKICAgICB2
aXJ0dWFsIHZvaWQgZm9ybURpZEJsdXIoY29uc3QgV2ViQ29yZTo6Tm9kZSopOworICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoV2ViQ29yZTo6SFRNTEZvcm1Db250
cm9sRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpOworICAgIHZpcnR1YWwgZG91Ymxl
IHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlSW50ZXJ2YWxTZWNvbmQoKSB7IHJldHVybiAwLjM7IC8q
IEZJWE1FICovIH0KKyAgICB2aXJ0dWFsIGludCB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUNvdW50
KGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpIHsgcmV0dXJuIDIwOyAvKiBGSVhNRSAqLyB9CisgICAg
dmlydHVhbCBkb3VibGUgdmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29uZCgpIHsgcmV0dXJu
IDAuNjsgLyogRklYTUUgKi8gfQogCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkNvcmU6OkhU
TUxQYXJzZXJRdWlya3M+IGNyZWF0ZUhUTUxQYXJzZXJRdWlya3MoKSB7IHJldHVybiAwOyB9CiAK
ZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1t
IGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KaW5kZXggMGE1
MmE5ZjcwN2RhYTBiMTdkYjQ2NDkwOTgwNjAwODgwZjkwMzIzMi4uOWE4ODc1YjY4M2U1ZDMzNmY1
N2U2MWJhODM0NmQ4OTk4YzA2MjU5MCAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQubW0KKysrIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQubW0KQEAgLTcwNSw2ICs3MDUsMTEgQEAgdm9pZCBXZWJDaHJvbWVDbGll
bnQ6OmZvcm1EaWRCbHVyKGNvbnN0IFdlYkNvcmU6Ok5vZGUqIG5vZGUpCiAgICAgQ2FsbFVJRGVs
ZWdhdGUobV93ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpmb3JtRGlkQmx1ck5vZGU6KSwga2l0
KGNvbnN0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KG5vZGUpKSk7CiB9CiAKK3ZvaWQgV2ViQ2hyb21l
Q2xpZW50Ojp1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoV2ViQ29yZTo6SFRNTEZvcm1Db250
cm9sRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpCit7CisgICAgLy8gRklYTUU6IElt
cGxlbWVudCB0aGlzLgorfQorCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCiB2
b2lkIFdlYkNocm9tZUNsaWVudDo6YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUqIGZyYW1l
LCBHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0No
YW5nZUxvZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggMWIzMjYwZWE0MGNhYmQ0MjdkNGM3
YTRjZGNlZmEzZWVhOTU1MTg3Yi4uY2Q2NDdmYmQxMzkyYWVjYmE3OWNjYjNjMmVlYmYwMDMxZDkx
ODAxYiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvcXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMDQtMDEgIEtlbnQgVGFtdXJhICA8dGtlbnRA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEZyYW1ld29yayB0byBzaG93IGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnZh
bGlkIGNvbnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zMTcxOAorCisgICAgICAgIEFkZCBzdHViIGZ1bmN0aW9ucyBmb3IgdXBkYXRlRm9ybVZh
bGlkYXRpb25NZXNzYWdlKCksCisgICAgICAgIHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlSW50ZXJ2
YWxTZWNvbmQoKSwKKyAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3VudCgpLCBhbmQK
KyAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29uZCgpLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hy
b21lQ2xpZW50UXQ6OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNs
aWVudFF0Ojp2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUludGVydmFsU2Vjb25kKToKKyAgICAgICAg
KFdlYkNvcmU6OkNocm9tZUNsaWVudFF0Ojp2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUNvdW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0Ojp2YWxpZGF0aW9uTWVzc2FnZUJsYWNr
b3V0U2Vjb25kKToKKwogMjAxMC0wNi0wOCAgQW50b25pbyBHb21lcyAgPHRvbmlraXRvb0B3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9qYW4gVmFmYWkgYW5kIERhcmluIEFkbGVy
LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNw
cCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAKaW5kZXggNDM0
ZGE5YTAxMDYwMzFkOTgzOTNiMjZhNGI3MWY3ZTFlMGQzOTU0Zi4uMzc3Nzg3Y2QyMmQxN2QwYzhh
NmNjYzZlZDVkNDc3Y2Y2YTU3OTg3YiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudFF0LmNwcAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50UXQuY3BwCkBAIC01MjgsNiArNTI4LDExIEBAIHZvaWQgQ2hyb21lQ2xpZW50UXQ6
OmNob29zZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBGaWxl
Q2hvCiAgICAgY2hvb3Nlci0+aWNvbkxvYWRlZChJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoZmls
ZW5hbWVzKSk7CiB9CiAKK3ZvaWQgQ2hyb21lQ2xpZW50UXQ6OnVwZGF0ZUZvcm1WYWxpZGF0aW9u
TWVzc2FnZShXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6
U3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiBib29sIENocm9tZUNsaWVu
dFF0OjpzZXRDdXJzb3IoUGxhdGZvcm1DdXJzb3JIYW5kbGUpCiB7CiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRR
dC5oIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmgKaW5kZXggMDM5
NmFlZmQ4NzA2ZTYxZDM0NjliMGY0MDE3NGM4ZGM5ZjBiNDgxZC4uZWY1MzAwM2I1OTE2MDhjZTA3
MGFhNjBmZWE1ZWQ0MjAxNTM0MGZkMiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudFF0LmgKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudFF0LmgKQEAgLTE1Nyw2ICsxNTcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2aXJ0dWFsIHZvaWQgY2hvb3NlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiwgRmlsZUNob29zZXIqKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZm9ybVN0YXRlRGlkQ2hh
bmdlKGNvbnN0IE5vZGUqKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZvcm1WYWxp
ZGF0aW9uTWVzc2FnZShXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiwgY29uc3QgV2Vi
Q29yZTo6U3RyaW5nJik7CisgICAgICAgIHZpcnR1YWwgZG91YmxlIHZhbGlkYXRpb25NZXNzYWdl
VXBkYXRlSW50ZXJ2YWxTZWNvbmQoKSB7IHJldHVybiAwLjM7IC8qIEZJWE1FICovIH0KKyAgICAg
ICAgdmlydHVhbCBpbnQgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3VudChjb25zdCBXZWJDb3Jl
OjpTdHJpbmcmKSB7IHJldHVybiAyMDsgLyogRklYTUUgKi8gfQorICAgICAgICB2aXJ0dWFsIGRv
dWJsZSB2YWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0U2Vjb25kKCkgeyByZXR1cm4gMC42OyAvKiBG
SVhNRSAqLyB9CiAKICAgICAgICAgdmlydHVhbCBQYXNzT3duUHRyPEhUTUxQYXJzZXJRdWlya3M+
IGNyZWF0ZUhUTUxQYXJzZXJRdWlya3MoKSB7IHJldHVybiAwOyB9CiAKZGlmZiAtLWdpdCBhL1dl
YktpdC93aW4vQ2hhbmdlTG9nIGIvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggNTk3N2JkYmFl
NWI4YTFhMmZhYWQ5NTU1ZDliMjYzNjBjNjk2MmViZC4uMTIyODljZGMwNjRhOTdhYWJlMGU5MmNl
YjA3MmNmODE3Nzg3Nzg3OSAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMC0wNC0wMSAgS2VudCBU
YW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgRnJhbWV3b3JrIHRvIHNob3cgZm9ybSB2YWxpZGF0aW9uIG1l
c3NhZ2UgZm9yIGludmFsaWQgY29udHJvbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTMxNzE4CisKKyAgICAgICAgLSBBZGQgc3R1YiBmdW5jdGlvbnMg
Zm9yIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSgpLAorICAgICAgICAgIHZhbGlkYXRpb25N
ZXNzYWdlVXBkYXRlSW50ZXJ2YWxTZWNvbmQoKSwKKyAgICAgICAgICB2YWxpZGF0aW9uTWVzc2Fn
ZVVwZGF0ZUNvdW50KCksIGFuZCB2YWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0U2Vjb25kKCkuCisg
ICAgICAgIC0gQWRkIHZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKCkgZm9y
IExheW91dFRlc3RDb250cm9sbGVyLgorCisgICAgICAgICogSW50ZXJmYWNlcy9JV2ViRnJhbWVQ
cml2YXRlLmlkbDoKKyAgICAgICAgKiBJbnRlcmZhY2VzL1dlYktpdC5pZGw6IEp1c3QgdG91Y2gu
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYkNocm9tZUNsaWVudDo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNocm9tZUNs
aWVudDo6dmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3VudCk6CisgICAgICAgIChXZWJDaHJvbWVD
bGllbnQ6OnZhbGlkYXRpb25NZXNzYWdlVXBkYXRlSW50ZXJ2YWxTZWNvbmQpOgorICAgICAgICAo
V2ViQ2hyb21lQ2xpZW50Ojp2YWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0U2Vjb25kKToKKyAgICAg
ICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFtZTo6dmlzaWJsZVZhbGlkYXRpb25N
ZXNzYWdlRm9yRWxlbWVudEJ5SWQpOgorICAgICAgICAqIFdlYkZyYW1lLmg6CisKIDIwMTAtMDYt
MDggIEFudG9uaW8gR29tZXMgIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBPamFuIFZhZmFpIGFuZCBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYktpdC93
aW4vSW50ZXJmYWNlcy9JV2ViRnJhbWVQcml2YXRlLmlkbCBiL1dlYktpdC93aW4vSW50ZXJmYWNl
cy9JV2ViRnJhbWVQcml2YXRlLmlkbAppbmRleCAxYjcyMDlkMDI3YjFiNTBlOGNlYWE5NGQ5Yjk5
NWU5OTEzZTc0YmYxLi5mMWE3ODZiMWRjZjg3YzhhN2JmOGY5NDE1ZGU4OGM0MjQzNWMxZmVjIDEw
MDY0NAotLS0gYS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkZyYW1lUHJpdmF0ZS5pZGwKKysr
IGIvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJGcmFtZVByaXZhdGUuaWRsCkBAIC0xMTAsNiAr
MTEwLDYgQEAgaW50ZXJmYWNlIElXZWJGcmFtZVByaXZhdGUgOiBJVW5rbm93bgogICAgIEhSRVNV
TFQgbnVtYmVyT2ZQYWdlcyhbaW5dIGZsb2F0IHBhZ2VXaWR0aEluUGl4ZWxzLCBbaW5dIGZsb2F0
IHBhZ2VIZWlnaHRJblBpeGVscywgW291dCwgcmV0dmFsXSBpbnQqIHBhZ2VOdW1iZXIpOwogCiAg
ICAgSFJFU1VMVCBsYXllclRyZWVBc1RleHQoW291dCwgcmV0dmFsXSBCU1RSKiByZXN1bHQpOwot
CisgICAgSFJFU1VMVCB2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZChbaW5d
IEJTVFIgaWQsIFtvdXQsIHJldHZhbF0gQlNUUiogcmVzdWx0KTsKICAgICBIUkVTVUxUIHBhaW50
U2Nyb2xsVmlld1JlY3RUb0NvbnRleHRBdFBvaW50KFtpbl0gUkVDVCByZWN0LCBbaW5dIFBPSU5U
IHB0LCBbaW5dIE9MRV9IQU5ETEUgZGV2aWNlQ29udGV4dCk7CiB9CmRpZmYgLS1naXQgYS9XZWJL
aXQvd2luL0ludGVyZmFjZXMvV2ViS2l0LmlkbCBiL1dlYktpdC93aW4vSW50ZXJmYWNlcy9XZWJL
aXQuaWRsCmluZGV4IGQyNWNkZmViZmI2OGE4Y2E0Yjg0MTgxOTk0ZGJjMjMyZWViYzhkZWEuLjg1
M2NjMmZkMjkzNGQwM2JiN2I5ZTc5Y2U0MzQ3MjdhMDg3YTUwMjEgMTAwNjQ0Ci0tLSBhL1dlYktp
dC93aW4vSW50ZXJmYWNlcy9XZWJLaXQuaWRsCisrKyBiL1dlYktpdC93aW4vSW50ZXJmYWNlcy9X
ZWJLaXQuaWRsCkBAIC0zMDAsMyArMzAwLDQgQEAgbGlicmFyeSBXZWJLaXQKICAgICAgICAgW2Rl
ZmF1bHRdIGludGVyZmFjZSBJV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuOwogICAgIH0KIH0KKyAK
ZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cCBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCA1
ODc2MzdmMTdlYmUxYjI4Y2UwMjk3YWM1OWFiYjA4Yzg0YjgyYWYzLi4wMThjMzllNzVjZDNmNzA0
ZDQxNzhlNTE1OWY1ZWM1OTNmN2RjNmYwIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC00OSw2ICs0OSw3IEBACiAjaWYgVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgogI2Vu
ZGlmCisjaW5jbHVkZSA8V2ViQ29yZS9IVE1MRm9ybUNvbnRyb2xFbGVtZW50Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ljb24uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KQEAgLTc3Miw2ICs3NzMsMTEgQEAgYm9v
bCBXZWJDaHJvbWVDbGllbnQ6OnNldEN1cnNvcihQbGF0Zm9ybUN1cnNvckhhbmRsZSBjdXJzb3Ip
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50Ojp1cGRhdGVGb3Jt
VmFsaWRhdGlvbk1lc3NhZ2UoSFRNTEZvcm1Db250cm9sRWxlbWVudCogY29udHJvbCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIHZvaWQgV2Vi
Q2hyb21lQ2xpZW50OjpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUoRnJhbWUq
IGZyYW1lLCBHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24pCiB7CiAgICAgQ09NUHRyPElXZWJVSURl
bGVnYXRlPiB1aURlbGVnYXRlOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaCBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmgKaW5kZXggNjk1NGZkZTY3Mjk2MmEyYWFkNzhjNGY2YmFlMGRkYzliZmU1NTdiZi4u
OGMwZjdkOGQ1OTJlZjM3ZDk5MmU3Y2RhOGI3OTE3MmNjMWFhMzZjOCAxMDA2NDQKLS0tIGEvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0zNCw2ICszNCwxMCBAQAogY2xh
c3MgV2ViVmlldzsKIGNsYXNzIFdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGU7CiAKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ7Cit9CisKIGlu
dGVyZmFjZSBJV2ViVUlEZWxlZ2F0ZTsKIAogY2xhc3MgV2ViQ2hyb21lQ2xpZW50IDogcHVibGlj
IFdlYkNvcmU6OkNocm9tZUNsaWVudCB7CkBAIC0xMzMsNiArMTM3LDEwIEBAIHB1YmxpYzoKICAg
ICBXZWJWaWV3KiB3ZWJWaWV3KCkgY29uc3QgeyByZXR1cm4gbV93ZWJWaWV3OyB9CiAKICAgICB2
aXJ0dWFsIHZvaWQgZm9ybVN0YXRlRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6Ok5vZGUqKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKFdlYkNvcmU6OkhU
TUxGb3JtQ29udHJvbEVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKKyAgICB2aXJ0
dWFsIHVuc2lnbmVkIHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlQ291bnQoY29uc3QgV2ViQ29yZTo6
U3RyaW5nJikgeyByZXR1cm4gMTA7IH0KKyAgICB2aXJ0dWFsIGRvdWJsZSB2YWxpZGF0aW9uTWVz
c2FnZVVwZGF0ZUludGVydmFsU2Vjb25kKCkgeyByZXR1cm4gMC41OyB9CisgICAgdmlydHVhbCBk
b3VibGUgdmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29uZCgpIHsgcmV0dXJuIDAuNjsgfQog
CiAgICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkNvcmU6OkhUTUxQYXJzZXJRdWlya3M+IGNyZWF0
ZUhUTUxQYXJzZXJRdWlya3MoKSB7IHJldHVybiAwOyB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC93
aW4vV2ViRnJhbWUuY3BwIGIvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggNzVhOWM4ZDIw
Mzk3YWE2NGQ2YmQ2YjczOWE5N2NjMDQ2NWY1OWY5MS4uMDgyNDdhYjExNmEyODM1YjhkNjhkM2E5
OGQwZGViMWIwYjkyZmMwMiAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKKysr
IGIvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTEwMjcsNiArMTAyNywyMSBAQCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1lOjpmZXRjaEFwcGxpY2F0aW9uSWNvbigKICAgICBy
ZXR1cm4gU19PSzsKIH0KIAorSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6dmlz
aWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoQlNUUiBpZCwgQlNUUiogcmVzdWx0
KQoreworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgIEZy
YW1lKiBjb3JlRnJhbWUgPSBjb3JlKHRoaXMpOworICAgIGlmICghY29yZUZyYW1lKQorICAgICAg
ICByZXR1cm4gRV9GQUlMOworICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBjb3JlRnJhbWUtPmRvY3Vt
ZW50KCktPmdldEVsZW1lbnRCeUlkKFN0cmluZyhpZCwgU3lzU3RyaW5nTGVuKGlkKSkpOworICAg
IGlmICghZWxlbWVudCB8fCAhZWxlbWVudC0+aXNGb3JtQ29udHJvbEVsZW1lbnQoKSkKKyAgICAg
ICAgcmV0dXJuIEVfRkFJTDsKKyAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBmb3JtQ29udHJv
bCA9IHN0YXRpY19jYXN0PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqPihlbGVtZW50KTsKKyAgICAq
cmVzdWx0ID0gQlN0cmluZyhmb3JtQ29udHJvbC0+dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlKCkp
LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gU19PSzsKK30KKwogLy8gSVdlYkRvY3VtZW50VGV4dCAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1lOjpzdXBwb3J0c1RleHRFbmNv
ZGluZyggCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYkZyYW1lLmggYi9XZWJLaXQvd2luL1dl
YkZyYW1lLmgKaW5kZXggZDgzOWYxN2JlZjk4ODViNGRiYmI2ODEyZTcyYzY5YzQ2MWEwYzIwMi4u
NmFiYjFlY2Q0NmYzY2Q0OTBkNTBhOTMwYTE5MTg5N2MwMjFlZDVhOCAxMDA2NDQKLS0tIGEvV2Vi
S2l0L3dpbi9XZWJGcmFtZS5oCisrKyBiL1dlYktpdC93aW4vV2ViRnJhbWUuaApAQCAtMjY5LDYg
KzI2OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEpTR2xvYmFsQ29udGV4dFJlZiBTVERNRVRI
T0RDQUxMVFlQRSBnbG9iYWxDb250ZXh0Rm9yU2NyaXB0V29ybGQoSVdlYlNjcmlwdFdvcmxkKik7
CiAKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdmlzaWJsZUNvbnRlbnRS
ZWN0KFJFQ1QqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdmlzaWJs
ZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoQlNUUiBpZCwgQlNUUiogcmVzdWx0KTsK
IAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBsYXllclRyZWVBc1RleHQo
QlNUUiopOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvd3gvQ2hhbmdlTG9nIGIvV2ViS2l0L3d4L0No
YW5nZUxvZwppbmRleCBhYjI1MTAyNjc2YjMxODY2MzYxNjVkNTFhMDIxYjZlY2FjZWI5ZDllLi5h
MzA0ZmQyOTg5NTU0ZDNmZGMzYTI0ZWViZWQ1ZDNjNTVmYWJjOWQ3IDEwMDY0NAotLS0gYS9XZWJL
aXQvd3gvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC93eC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBA
QAorMjAxMC0wNC0wMSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRnJhbWV3b3JrIHRvIHNo
b3cgZm9ybSB2YWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGludmFsaWQgY29udHJvbHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNzE4CisKKyAgICAgICAg
QWRkIHN0dWIgZnVuY3Rpb25zIGZvciB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoKSwKKyAg
ICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRlcnZhbFNlY29uZCgpLAorICAgICAgICB2
YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUNvdW50KCksIGFuZAorICAgICAgICB2YWxpZGF0aW9uTWVz
c2FnZUJsYWNrb3V0U2Vjb25kKCkuCisKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNs
aWVudFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFd4Ojp1cGRhdGVGb3Jt
VmFsaWRhdGlvbk1lc3NhZ2UpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50
V3guaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFd4Ojp2YWxpZGF0aW9uTWVzc2Fn
ZVVwZGF0ZUludGVydmFsU2Vjb25kKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFd4
Ojp2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9t
ZUNsaWVudFd4Ojp2YWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0U2Vjb25kKToKKwogMjAxMC0wNS0y
NyAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KIAogICAgICAgICBb
d3hdIEJ1aWxkIGZpeGVzIGZvciBXaW5kb3dzIGFmdGVyIHJlY2VudCBjaGFuZ2VzLgpkaWZmIC0t
Z2l0IGEvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwIGIvV2ViS2l0
L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwCmluZGV4IGExOTY0NGRiZDg3ZDgz
ZjE0ZDAyZjcwZjBmMjgwOTkyYWRiYzNkZjEuLjg3N2Y2NmVkOWQ5OTVlNGIyMGNiMGIyMzFlMWI5
MGQ3ZjI3N2E3NzIgMTAwNjQ0Ci0tLSBhL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNs
aWVudFd4LmNwcAorKysgYi9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5j
cHAKQEAgLTQ0Nyw2ICs0NDcsMTEgQEAgdm9pZCBDaHJvbWVDbGllbnRXeDo6Y2hvb3NlSWNvbkZv
ckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIEZpbGVDaG8KICAgICBjaG9v
c2VyLT5pY29uTG9hZGVkKEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhmaWxlbmFtZXMpKTsKIH0K
IAordm9pZCBDaHJvbWVDbGllbnRXeDo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKFdlYkNv
cmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIGJvb2wgQ2hyb21lQ2xpZW50V3g6OnNldEN1cnNv
cihQbGF0Zm9ybUN1cnNvckhhbmRsZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0t
Z2l0IGEvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaCBiL1dlYktpdC93
eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmgKaW5kZXggYjkwMGYzZWVlZjZlN2QyZTBh
Y2Q2YjliZTA2ZmRkM2NlMTExZjE1YS4uNDc3ODA5YWRmOGY1NTZkNTg4NDdlMmUyNGJkZjkyZjk4
NTdjZDQ0NyAxMDA2NDQKLS0tIGEvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50
V3guaAorKysgYi9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5oCkBAIC0x
MzEsNiArMTMxLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2hvb3NlSWNvbkZvckZp
bGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgRmlsZUNob29zZXIqKTsKIAogICAgIHZpcnR1YWwg
dm9pZCBmb3JtU3RhdGVEaWRDaGFuZ2UoY29uc3QgTm9kZSopIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxl
bWVudCosIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpOworICAgIHZpcnR1YWwgZG91YmxlIHZhbGlk
YXRpb25NZXNzYWdlVXBkYXRlSW50ZXJ2YWxTZWNvbmQoKSB7IHJldHVybiAwLjM7IC8qIEZJWE1F
ICovIH0KKyAgICB2aXJ0dWFsIGludCB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUNvdW50KGNvbnN0
IFdlYkNvcmU6OlN0cmluZyYpIHsgcmV0dXJuIDIwOyAvKiBGSVhNRSAqLyB9CisgICAgdmlydHVh
bCBkb3VibGUgdmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29uZCgpIHsgcmV0dXJuIDAuNjsg
LyogRklYTUUgKi8gfQogCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPEhUTUxQYXJzZXJRdWlya3M+
IGNyZWF0ZUhUTUxQYXJzZXJRdWlya3MoKSB7IHJldHVybiAwOyB9CiAKZGlmZiAtLWdpdCBhL1dl
YktpdDIvQ2hhbmdlTG9nIGIvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZGFmOTI4ODFjZjJmMGJk
OGZiOTExYTk0YzU3MWM2MTNhMzU2NjlhMC4uZDIwOGNmMDdkNTRhODBhYzM1ZDVmNDdjYTJjMjlm
YmRkMjNjZGIyYSAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMC0wNC0wMSAgS2VudCBUYW11cmEgIDx0a2Vu
dEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRnJhbWV3b3JrIHRvIHNob3cgZm9ybSB2YWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlu
dmFsaWQgY29udHJvbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTMxNzE4CisKKyAgICAgICAgQWRkIHN0dWIgZnVuY3Rpb25zIGZvciB1cGRhdGVGb3Jt
VmFsaWRhdGlvbk1lc3NhZ2UoKSwKKyAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRl
cnZhbFNlY29uZCgpLAorICAgICAgICB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUNvdW50KCksIGFu
ZAorICAgICAgICB2YWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0U2Vjb25kKCkuCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnZhbGlkYXRpb25NZXNzYWdlVXBkYXRl
SW50ZXJ2YWxTZWNvbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnZhbGlk
YXRpb25NZXNzYWdlVXBkYXRlQ291bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGll
bnQ6OnZhbGlkYXRpb25NZXNzYWdlQmxhY2tvdXRTZWNvbmQpOgorCiAyMDEwLTA2LTA4ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
Sm9obiBTdWxsaXZhbi4KZGlmZiAtLWdpdCBhL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggZTQ0MzUzMGRhYWNjNThmNWMxODI4MWMwYTFm
ZjdmNDBlNTZjZDM0Ni4uYWYyYWE4MTlhMDBkZjgwZDliZjc0MWNlNjY0NTlmMzZkODRjNDM2YSAx
MDA2NDQKLS0tIGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHAKKysrIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAKQEAgLTQzMiw2ICs0MzIsMTEgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmZv
cm1EaWRCbHVyKGNvbnN0IE5vZGUqKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQg
V2ViQ2hyb21lQ2xpZW50Ojp1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoV2ViQ29yZTo6SFRN
TEZvcm1Db250cm9sRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwogUGFzc093blB0cjxIVE1MUGFyc2VyUXVpcmtzPiBXZWJDaHJv
bWVDbGllbnQ6OmNyZWF0ZUhUTUxQYXJzZXJRdWlya3MoKQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CmRpZmYgLS1naXQgYS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmggYi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmgKaW5kZXggZmU1ZjE0YTc1YmQ3ZDYwNmI1N2EzZWZkYTJhMzFkMGFiMGZkMWVkNC4u
OTJmZjI1OTYxZGMyNWFkYzZhN2YxNTdhYmY5ZWM0MjM2MDgxNTFmMyAxMDA2NDQKLS0tIGEvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMTU5
LDYgKzE1OSwxMCBAQCBwcml2YXRlOgogICAgIAogICAgIHZpcnR1YWwgdm9pZCBmb3JtRGlkRm9j
dXMoY29uc3QgV2ViQ29yZTo6Tm9kZSopOwogICAgIHZpcnR1YWwgdm9pZCBmb3JtRGlkQmx1cihj
b25zdCBXZWJDb3JlOjpOb2RlKik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZvcm1WYWxpZGF0
aW9uTWVzc2FnZShXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiwgY29uc3QgV2ViQ29y
ZTo6U3RyaW5nJik7CisgICAgdmlydHVhbCBkb3VibGUgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJ
bnRlcnZhbFNlY29uZCgpIHsgcmV0dXJuIDAuMzsgLyogRklYTUUgKi8gfQorICAgIHZpcnR1YWwg
aW50IHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlQ291bnQoY29uc3QgV2ViQ29yZTo6U3RyaW5nJikg
eyByZXR1cm4gMjA7IC8qIEZJWE1FICovIH0KKyAgICB2aXJ0dWFsIGRvdWJsZSB2YWxpZGF0aW9u
TWVzc2FnZUJsYWNrb3V0U2Vjb25kKCkgeyByZXR1cm4gMC42OyAvKiBGSVhNRSAqLyB9CiAgICAg
CiAgICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkNvcmU6OkhUTUxQYXJzZXJRdWlya3M+IGNyZWF0
ZUhUTUxQYXJzZXJRdWlya3MoKTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9n
IGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGQ4YTFlN2M4YTZiNTIwMzkwZDI5MDkzOTlj
NTk1OTQ0NWEzMTZhNWIuLmY0ZTdkYmVhYTQ2NzYzYmFhMTM0YzNlMjg0Nzk1OWM5OTgxNjAyMTUg
MTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRUb29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMC0wNC0wMSAgS2VudCBUYW11cmEgIDx0a2VudEBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRnJhbWV3b3JrIHRvIHNob3cgZm9ybSB2YWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGludmFs
aWQgY29udHJvbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTMxNzE4CisKKyAgICAgICAgQWRkIExheW91dFRlc3RDb250cm9sbGVyOjp2aXNpYmxlVmFs
aWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZCgpLgorICAgICAgICBXaW5kb3dzIGFuZCBNYWMg
aGF2ZSB3b3JrYWJsZSBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgICh2aXNpYmxlVmFsaWRhdGlvbk1l
c3NhZ2VGb3JFbGVtZW50QnlJZENhbGxiYWNrKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRl
c3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RD
b250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjp2aXNpYmxl
VmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZCk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAg
ICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVs
ZW1lbnRCeUlkKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJv
bGxlcld4LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjp2aXNpYmxlVmFsaWRh
dGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZCk6CisKIDIwMTAtMDYtMDggIFRvbnkgQ2hhbmcgIDx0
b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cAppbmRleCBiOTZhOWM5YzU2YTQzNzE1MTdlZmY3ZTVlYjA5ZTJkYjkyYTgxZmI4Li5hOWM2NGZl
NzBmYjdlOTAyZGJlNTk0NWI0OTJlYmZlZjhmNjQ1ZGYxIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC05OTMsNiArOTkz
LDIwIEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWRDYWxsYmFj
ayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiB2aXNpYmxlVmFsaWRhdGlv
bk1lc3NhZ2VGb3JFbGVtZW50QnlJZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09i
amVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50
Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCisgICAgICAgIHJldHVybiBKU1ZhbHVl
TWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gZWxl
bWVudElkKEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1swXSwg
ZXhjZXB0aW9uKSk7CisgICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKKworICAgIExheW91dFRlc3RD
b250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIq
PihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBtZXNzYWdlKGNvbnRyb2xsZXItPnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVs
ZW1lbnRCeUlkKGVsZW1lbnRJZC5nZXQoKSkpOworICAgIGlmICghbWVzc2FnZS5nZXQoKSkKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworICAgIHJldHVybiBK
U1ZhbHVlTWFrZVN0cmluZyhjb250ZXh0LCBtZXNzYWdlLmdldCgpKTsKK30KKwogc3RhdGljIEpT
VmFsdWVSZWYgc2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHNDYWxsYmFjayhKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNP
YmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1td
LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgLy8gSGFzIG1hYyAmIHdpbmRvd3MgaW1w
bGVtZW50YXRpb24KQEAgLTE2NjUsNiArMTY3OSw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91
dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJzaG93V2ViSW5z
cGVjdG9yIiwgc2hvd1dlYkluc3BlY3RvckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInRl
c3RPbnNjcmVlbiIsIHRlc3RPbnNjcmVlbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInRl
c3RSZXBhaW50IiwgdGVzdFJlcGFpbnRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJ2aXNp
YmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZCIsIHZpc2libGVWYWxpZGF0aW9uTWVz
c2FnZUZvckVsZW1lbnRCeUlkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAid2FpdEZvclBv
bGljeURlbGVnYXRlIiwgd2FpdEZvclBvbGljeURlbGVnYXRlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAg
ICAgICAgeyAid2FpdFVudGlsRG9uZSIsIHdhaXRVbnRpbERvbmVDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAog
ICAgICAgICB7ICJ3aW5kb3dDb3VudCIsIHdpbmRvd0NvdW50Q2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
LmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmlu
ZGV4IDhmZjM4ZDEwOTAxMGY0ZTk2ODJkYTJiODdlOGVmMTg2YzQxMWMyYTguLjEwZjdhNGQ1Njhj
Y2Y1ZGEzOGFhMjU3YzZkM2JjZjc1ZGE1ZTA5YjIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChib29sIGVuYWJsZSk7
CiAgICAgdm9pZCBzZXRTY3JvbGxiYXJQb2xpY3koSlNTdHJpbmdSZWYgb3JpZW50YXRpb24sIEpT
U3RyaW5nUmVmIHBvbGljeSk7CiAgICAgdm9pZCBzZXRFZGl0aW5nQmVoYXZpb3IoY29uc3QgY2hh
ciogZWRpdGluZ0JlaGF2aW9yKTsKLQorICAgIEpTU3RyaW5nUmVmIHZpc2libGVWYWxpZGF0aW9u
TWVzc2FnZUZvckVsZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGlkKTsKICAgICB2b2lkIHdhaXRGb3JQ
b2xpY3lEZWxlZ2F0ZSgpOwogICAgIHNpemVfdCB3ZWJIaXN0b3J5SXRlbUNvdW50KCk7CiAgICAg
dW5zaWduZWQgd29ya2VyVGhyZWFkQ291bnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCmlu
ZGV4IGU4Yjg2Mjc1ODUyZGNiNWNlMWQxOWQ2ZGE1ZmJhNTFhMDE1NDlkNjMuLjg3YjVhNmZiZmIy
ODhmZTI0MmJiZmE1YTNmYThiNjIxZWQ2NzI5MGEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKKysrIGIvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcApAQCAt
Njc2LDYgKzY3NiwxMiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphcGlUZXN0R29Ub0N1
cnJlbnRCYWNrRm9yd2FyZEl0ZW0oKQogCiB9CiAKK0pTU3RyaW5nUmVmIExheW91dFRlc3RDb250
cm9sbGVyOjp2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZChKU1N0cmluZ1Jl
ZiBpZCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCisgICAgcmV0dXJuIDA7Cit9
CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFdlYlZpZXdFZGl0YWJsZShib29sKQog
ewogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRl
c3RDb250cm9sbGVyTWFjLm1tIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91
dFRlc3RDb250cm9sbGVyTWFjLm1tCmluZGV4IGViMDEwOTAwMjZiN2Y5ZjZhYzNjZjQzYmI1NmYw
M2NkMjYyNzM5YzguLjM1NDJiNjI0NmM2MzJmMzZkZDg1NDkzYjA5YzhkOWVhMGNmN2Q3NjUgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJv
bGxlck1hYy5tbQorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVz
dENvbnRyb2xsZXJNYWMubW0KQEAgLTc1NCw2ICs3NTQsMTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6YXBpVGVzdEdvVG9DdXJyZW50QmFja0ZvcndhcmRJdGVtKCkKICAgICBbdmlldyBn
b1RvQmFja0ZvcndhcmRJdGVtOltbdmlldyBiYWNrRm9yd2FyZExpc3RdIGN1cnJlbnRJdGVtXV07
CiB9CiAKK0pTU3RyaW5nUmVmIExheW91dFRlc3RDb250cm9sbGVyOjp2aXNpYmxlVmFsaWRhdGlv
bk1lc3NhZ2VGb3JFbGVtZW50QnlJZChKU1N0cmluZ1JlZiBpZCkKK3sKKyAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IGlkQ0YoQWRvcHRDRiwgSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgaWQpKTsKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmco
KENGU3RyaW5nUmVmKVttYWluRnJhbWUgdmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVu
dEJ5SWQ6KE5TU3RyaW5nKilpZENGLmdldCgpXSk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldFdlYlZpZXdFZGl0YWJsZShib29sIGVkaXRhYmxlKQogewogICAgIFdlYlZpZXcg
KnZpZXcgPSBbbWFpbkZyYW1lIHdlYlZpZXddOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcCBiL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKaW5kZXggYzcw
YjUxN2ZlYmY3NDA2YjE1MmZjZmNjNDA0NDA1YjY2ZjcwN2RiYS4uNmVlMzAxZWUzMTYwOTVlZjZk
NmU5YzEzOWMwOGI4NmQxNmY2ZTZjNSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAorKysgYi9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCkBAIC0xMjYwLDYg
KzEyNjAsMTkgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YXBpVGVzdEdvVG9DdXJyZW50
QmFja0ZvcndhcmRJdGVtKCkKICAgICB3ZWJWaWV3LT5nb1RvQmFja0ZvcndhcmRJdGVtKGl0ZW0u
Z2V0KCksICZzdWNjZXNzKTsKIH0KIAorSlNTdHJpbmdSZWYgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGlkKQor
eworICAgIENPTVB0cjxJV2ViRnJhbWVQcml2YXRlPiBmcmFtZVByaXZhdGUoUXVlcnksIGZyYW1l
KTsKKyAgICBpZiAoIWZyYW1lUHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgQlNUUiBt
ZXNzYWdlQlNUUjsKKyAgICBpZiAoRkFJTEVEKGZyYW1lUHJpdmF0ZS0+dmlzaWJsZVZhbGlkYXRp
b25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoYnN0clQoaWQpLkdldEJTVFIoKSwgJm1lc3NhZ2VCU1RS
KSkpCisgICAgICAgIHJldHVybiAwOworICAgIEpTU3RyaW5nUmVmIG1lc3NhZ2VKUyA9IEpTU3Ry
aW5nQ3JlYXRlV2l0aEJTVFIobWVzc2FnZUJTVFIpOworICAgIFN5c0ZyZWVTdHJpbmcobWVzc2Fn
ZUJTVFIpOworICAgIHJldHVybiBtZXNzYWdlSlM7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldFdlYlZpZXdFZGl0YWJsZShib29sKQogewogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAppbmRl
eCAyNjU4MDJkMjEwMjZlMTdjZjNhZDRhZTU0NzRjYTVlM2E2YTdlNThiLi43ODg2MGM2MThkMTdi
Yzg4ZjM2MTBhODg0MTYzZDIxMWI2YzdlNjExIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAorKysgYi9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcApAQCAtNDE5LDYg
KzQxOSwxMiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRTcGF0aWFsTmF2aWdhdGlv
bkVuYWJsZWQoYm9vbCkKIAogfQogCitKU1N0cmluZ1JlZiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWQpCit7
CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAgIHJldHVybiAwOworfQorCiB2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpzZXRXZWJWaWV3RWRpdGFibGUoYm9vbCkKIHsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58312</attachid>
            <date>2010-06-09 17:19:47 -0700</date>
            <delta_ts>2010-06-10 08:52:06 -0700</delta_ts>
            <desc>Patch (rev.8; build fix 3)</desc>
            <filename>bug-31718-20100610091945.patch</filename>
            <type>text/plain</type>
            <size>59587</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzMjdhZGJjNzE1MTE1M2Q3OTM3YzIwNDFlZjIzZjFhMzk0MmZhNWU5Li5iMmI0OTFj
Y2FmNWNjNmEzNzA3NjcxYTVkNWFmMWJhY2FlZTAzNDRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTAtMDQtMDEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyYW1ld29yayB0byBzaG93
IGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnZhbGlkIGNvbnRyb2xzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTcxOAorCisgICAgICAgIEFk
ZCBhIHRlc3QgdG8gY2hlY2sgYSB2aXNpYmxlIHZhbGlkYXRpb24gbWVzc2FnZS4KKyAgICAgICAg
VGhlIG1lc3NhZ2Ugc2hvdWxkIGJlIGF2YWlsYWJsZSBvbmx5IHdoZW4gdGhlIGNvbnRyb2wgaGFz
IGZvY3VzLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvdmlzaWJsZS12YWxp
ZGF0aW9uLW1lc3NhZ2UuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvdmlzaWJsZS12
YWxpZGF0aW9uLW1lc3NhZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zv
cm1zL3Zpc2libGUtdmFsaWRhdGlvbi1tZXNzYWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6CisKIDIw
MTAtMDYtMDkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
c2NyaXB0LXRlc3RzL3Zpc2libGUtdmFsaWRhdGlvbi1tZXNzYWdlLmpzIGIvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvdmlzaWJsZS12YWxpZGF0aW9uLW1lc3NhZ2UuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODk0M2RhODJjNTQ5MzYzYzEwYzc0MGJlMDYxNjBjYjU5NzU1MmZhNgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL3Zpc2libGUt
dmFsaWRhdGlvbi1tZXNzYWdlLmpzCkBAIC0wLDAgKzEsMzggQEAKK2Rlc2NyaXB0aW9uKCdUZXN0
IGZvciB2YWxpZGF0aW9uIG1lc3NhZ2UgcmVxdWVzdHMgZnJvbSBhbiBIVE1MRm9ybUNvbnRyb2xF
bGVtZW50LicpOworCit2YXIgcGFyZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
Citkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHBhcmVudCk7CitwYXJlbnQuaW5uZXJIVE1MPSAn
PGZvcm0+JworICAgICsgJzxpbnB1dCBpZD1pMSBuYW1lPWkxIHJlcXVpcmVkPicKKyAgICArICc8
L2Zvcm0+JzsKKwordmFyIGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2kxJyk7Citk
ZWJ1ZygnSW52YWxpZCBhbmQgbm8gZm9jdXMnKTsKK3Nob3VsZEJlRmFsc2UoJ2lucHV0LnZhbGlk
aXR5LnZhbGlkJyk7CitzaG91bGRCZVRydWUoJ2lucHV0LnZhbGlkYXRpb25NZXNzYWdlLmxlbmd0
aCA+IDAnKTsKK3Nob3VsZEJlKCdsYXlvdXRUZXN0Q29udHJvbGxlci52aXNpYmxlVmFsaWRhdGlv
bk1lc3NhZ2VGb3JFbGVtZW50QnlJZCgiaTEiKScsICciIicpOworCitkZWJ1ZygnSW52YWxpZCBh
bmQgZm9jdXNlZCcpOworaW5wdXQuZm9jdXMoKTsKK3Nob3VsZEJlKCdsYXlvdXRUZXN0Q29udHJv
bGxlci52aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZCgiaTEiKScsICdpbnB1
dC52YWxpZGF0aW9uTWVzc2FnZScpOworCitkZWJ1ZygnSW52YWxpZCwgZm9jdXNlZCwgYW5kIHdo
aXRlc3BhY2Utb25seSBjdXN0b20gbWVzc2FnZScpOworaW5wdXQuc2V0Q3VzdG9tVmFsaWRpdHko
IiAgICIpOworaW5wdXQuYmx1cigpOworaW5wdXQuZm9jdXMoKTsKK3Nob3VsZEJlKCdsYXlvdXRU
ZXN0Q29udHJvbGxlci52aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZCgiaTEi
KScsICciIicpOworCitkZWJ1ZygnSW52YWxpZCwgZm9jdXNlZCwgYW5kIHRpdGxlIGF0dHJpYnV0
ZScpOworaW5wdXQuc2V0Q3VzdG9tVmFsaWRpdHkoIiIpOworaW5wdXQudGl0bGUgPSAnWW91IG5l
ZWQgdG8gc3BlY2lmeSBhIHZhbHVlLic7CitpbnB1dC5ibHVyKCk7CitpbnB1dC5mb2N1cygpOwor
c2hvdWxkQmUoJ2xheW91dFRlc3RDb250cm9sbGVyLnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZv
ckVsZW1lbnRCeUlkKCJpMSIpJywgJ2lucHV0LnZhbGlkYXRpb25NZXNzYWdlICsgIlxcbiIgKyBp
bnB1dC50aXRsZScpOworCitkZWJ1ZygnSW52YWxpZCwgZm9jdXNlZCwgdGl0bGUgYXR0cmlidXRl
LCBhbmQgd2hpdGVzcGFjZS1vbmx5IGN1c3RvbSBtZXNzYWdlJyk7CitpbnB1dC5zZXRDdXN0b21W
YWxpZGl0eSgiICAgIik7CitpbnB1dC5ibHVyKCk7CitpbnB1dC5mb2N1cygpOworc2hvdWxkQmUo
J2xheW91dFRlc3RDb250cm9sbGVyLnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRC
eUlkKCJpMSIpJywgJyIiJyk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy92aXNpYmxlLXZhbGlkYXRpb24tbWVzc2Fn
ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Zpc2libGUtdmFsaWRhdGlv
bi1tZXNzYWdlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kM2RlYjA3MzFhZGYwZTFmNzljODY0
ZjYzMTAxNTNkN2MyZGE3YmZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy92aXNpYmxlLXZhbGlkYXRpb24tbWVzc2FnZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwy
MSBAQAorVGVzdCBmb3IgdmFsaWRhdGlvbiBtZXNzYWdlIHJlcXVlc3RzIGZyb20gYW4gSFRNTEZv
cm1Db250cm9sRWxlbWVudC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0ludmFs
aWQgYW5kIG5vIGZvY3VzCitQQVNTIGlucHV0LnZhbGlkaXR5LnZhbGlkIGlzIGZhbHNlCitQQVNT
IGlucHV0LnZhbGlkYXRpb25NZXNzYWdlLmxlbmd0aCA+IDAgaXMgdHJ1ZQorUEFTUyBsYXlvdXRU
ZXN0Q29udHJvbGxlci52aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZCgiaTEi
KSBpcyAiIgorSW52YWxpZCBhbmQgZm9jdXNlZAorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci52
aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZCgiaTEiKSBpcyBpbnB1dC52YWxp
ZGF0aW9uTWVzc2FnZQorSW52YWxpZCwgZm9jdXNlZCwgYW5kIHdoaXRlc3BhY2Utb25seSBjdXN0
b20gbWVzc2FnZQorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci52aXNpYmxlVmFsaWRhdGlvbk1l
c3NhZ2VGb3JFbGVtZW50QnlJZCgiaTEiKSBpcyAiIgorSW52YWxpZCwgZm9jdXNlZCwgYW5kIHRp
dGxlIGF0dHJpYnV0ZQorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci52aXNpYmxlVmFsaWRhdGlv
bk1lc3NhZ2VGb3JFbGVtZW50QnlJZCgiaTEiKSBpcyBpbnB1dC52YWxpZGF0aW9uTWVzc2FnZSAr
ICJcbiIgKyBpbnB1dC50aXRsZQorSW52YWxpZCwgZm9jdXNlZCwgdGl0bGUgYXR0cmlidXRlLCBh
bmQgd2hpdGVzcGFjZS1vbmx5IGN1c3RvbSBtZXNzYWdlCitQQVNTIGxheW91dFRlc3RDb250cm9s
bGVyLnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKCJpMSIpIGlzICIiCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy92aXNpYmxlLXZhbGlkYXRpb24tbWVzc2FnZS5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy92aXNpYmxlLXZhbGlkYXRpb24tbWVzc2FnZS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRiOTI4MjUyYzk2M2MzZTZlMmQxYzM3Y2RhMzY1MzIxMDk5YmFkNjMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Zpc2libGUtdmFsaWRh
dGlvbi1tZXNzYWdlLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElD
ICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvdmlzaWJsZS12
YWxpZGF0aW9uLW1lc3NhZ2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCmluZGV4IGE5Y2U1ZTVlYmM5Yjg3OTM3ZjA3NzM2Yzdl
YTk5ZWY2MjUzNjNkNjMuLjhmNmQxMTk0NWEzYzhlOTNmNjg1NTVmMzkwOWYwZTAwODM0ZjNjMGEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCkBAIC01OTMwLDMgKzU5MzAsNiBAQCBmYXN0L2Zv
cm1zL3NsaWRlci10cmFuc2Zvcm1lZC5odG1sCiAjIG9mIHRoZSBzbGlkZXIgdGh1bWIgaW4gR1RL
KyB0aGVtZXMuCiBmYXN0L2Zvcm1zL3NsaWRlci1tb3VzZS1ldmVudHMuaHRtbAogZmFzdC9mb3Jt
cy9zbGlkZXItem9vbWVkLmh0bWwKKworIyBNaXNzaW5nIGxheW91dFRlc3RDb250cm9sbGVyLnZp
c2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkCitmYXN0L2Zvcm1zL3Zpc2libGUt
dmFsaWRhdGlvbi1tZXNzYWdlLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3F0L1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCmluZGV4IDk5MzY5
NzRjNWYwZWQ1NmVhMmZhZjA0YWE2MTdlMDdkZjQwNDU1YjYuLjcxODE0YTVmMzc4Yzk4ZDMwYzk1
NDU0NDk4NWVhYTE0OTQxOTEwM2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0
L1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZApAQCAtODgxLDYg
Kzg4MSw5IEBAIGZhc3QvcnVieS9ydWJ5RE9NLXJlbW92ZS1ydDIuaHRtbAogZmFzdC9ydWJ5L3J1
YnlET00tcmVtb3ZlLXRleHQxLmh0bWwKIGZhc3QvcnVieS9ydWJ5RE9NLXJlbW92ZS10ZXh0Mi5o
dG1sCiAKKyMgTWlzc2luZyBsYXlvdXRUZXN0Q29udHJvbGxlci52aXNpYmxlVmFsaWRhdGlvbk1l
c3NhZ2VGb3JFbGVtZW50QnlJZAorZmFzdC9mb3Jtcy92aXNpYmxlLXZhbGlkYXRpb24tbWVzc2Fn
ZS5odG1sCisKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIwogIyAtLS0tLS0tIGZhaWxpbmcgZWRp
dGluZy9pbnB1dCB0ZXN0cwogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAjCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGNhZmMxOTE3ZWYyYTJj
MzZjNzExM2JiOTM2OTQzMmEzYzM2OTQ4YzAuLmYyZjI5NzU2ZmFiNTA3ZGIzNWRiY2VlMjdiYjc2
ODhhOTk0YzkyMzggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMTAtMDQtMDEgIEtlbnQgVGFtdXJhICA8dGtl
bnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEZyYW1ld29yayB0byBzaG93IGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdlIGZvciBp
bnZhbGlkIGNvbnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zMTcxOAorCisgICAgICAgIEFuIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQgY2FsbHMg
Q2hyb21lOjp1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoKQorICAgICAgICB3aGVuIGl0IGdl
dHMgZm9jdXMgYW5kIGxvb3NlcyBmb2N1cy4gQ2hyb21lOjp1cGRhdGVGb3JtVmFsaWRhdGlvbk1l
c3NhZ2UoKQorICAgICAgICBtYW5hZ2VzIHJlcXVlc3RzIGZyb20gbXVsdGlwbGUgSFRNTEZvcm1D
b250cm9sRWxlbWVudCBpbnN0YW5jZXM6CisgICAgICAgIC0gUGVyaW9kaWNhbGx5IGNhbGxzIENo
cm9tZUNsaWVudDo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKCkKKyAgICAgICAgICB0byBm
b2xsb3cgZWxlbWVudCBwb3NpdGlvbiBjaGFuZ2UuCisgICAgICAgIC0gSWYgYSBtZXNzYWdlIGlz
IHNob3duIGZvciBhIGNvbnRyb2wgYW5kIHRoZSBmb2N1cyBpcyBjaGFuZ2VkIHRvCisgICAgICAg
ICAgYW5vdGhlciBpbnZhbGlkIGNvbnRyb2wsIGhpZGUgdGhlIGN1cnJlbnQgbWVzc2FnZSwgd2Fp
dCBhIGxpdHRsZSwKKyAgICAgICAgICB0aGVuIHNob3cgYSBtZXNzYWdlIGZvciBhbm90aGVyIGNv
bnRyb2wuCisgICAgICAgIC0gSWYgYSBtZXNzYWdlIGZvciBhIGNvbnRyb2wgaXMgc2hvd24gYW5k
IGFub3RoZXIgbWVzc2FnZSBmb3IgdGhlCisgICAgICAgICAgY29udHJvbCBpcyByZXF1ZXN0ZWQs
IGhpZGUgdGhlIGN1cnJlbnQgbWVzc2FnZSwgd2FpdCBhIGxpdHRsZSwKKyAgICAgICAgICB0aGVu
IHNob3cgdGhlIG5ldyBtZXNzYWdlLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZm9ybXMvdmlzaWJs
ZS12YWxpZGF0aW9uLW1lc3NhZ2UuaHRtbAorCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRy
b2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6
OmRldGFjaCk6CisgICAgICAgICAgQWRkIGEgY2FsbCB0byB1cGRhdGVWaXNpYmxlVmFsaWRhdGlv
bk1lc3NhZ2UoKS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNl
dE5lZWRzV2lsbFZhbGlkYXRlQ2hlY2spOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxG
b3JtQ29udHJvbEVsZW1lbnQ6OnVwZGF0ZVZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSk6CisgICAg
ICAgICAgQWRkZWQuIENhbGxzIENocm9tZTo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKCkg
aWYgdGhlIHN0YXR1cworICAgICAgICAgIGlzIGNoYW5nZWQuCisgICAgICAgIChXZWJDb3JlOjpI
VE1MRm9ybUNvbnRyb2xFbGVtZW50OjpzZXROZWVkc1ZhbGlkaXR5Q2hlY2spOgorICAgICAgICAg
IEFkZCBhIGNhbGwgdG8gdXBkYXRlVmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlKCkuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZlbnQpOiBk
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRpc3BhdGNo
Qmx1ckV2ZW50KTogZGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50
Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp2aXNpYmxlVmFs
aWRhdGlvbk1lc3NhZ2UpOgorICAgICAgICAgIEFkZGVkIHRoZSBkZWNsYXJhdGlvbi4KKyAgICAg
ICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUNocm9t
ZUNsaWVudDo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkVtcHR5Q2hyb21lQ2xpZW50Ojp2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUludGVydmFsU2Vjb25k
KToKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5Q2hyb21lQ2xpZW50Ojp2YWxpZGF0aW9uTWVzc2Fn
ZVVwZGF0ZUNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5Q2hyb21lQ2xpZW50Ojp2YWxp
ZGF0aW9uTWVzc2FnZUJsYWNrb3V0U2Vjb25kKToKKyAgICAgICAgICBBZGRlZCBhcyBtb2Nrcy4K
KyAgICAgICAgKiBwYWdlL0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnVw
ZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSk6IFNlZSBhYm92ZS4KKyAgICAgICAgKFdlYkNvcmU6
OkNocm9tZTo6c3RhcnRWYWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0KToKKyAgICAgICAgICBBIGhl
bHBlciBmb3IgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKCkuCisgICAgICAgIChXZWJDb3Jl
OjpDaHJvbWU6OnZhbGlkYXRpb25NZXNzYWdlVGltZXJGaXJlZCk6CisgICAgICAgICAgQSBoZWxw
ZXIgZm9yIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSgpLgorICAgICAgICAqIHBhZ2UvQ2hy
b21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKwogMjAxMC0wNi0wOSAgVG9u
eSBHZW50aWxjb3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxl
bWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXgg
ZmE1ZDk1N2EwNWQ5YTk0NzYyMGY0ODg5YTQxNjI2ZjMzMmUyNWYzZC4uYzg3YmJiNDk4Y2MyNDg1
NjI2N2Q3ZmJiY2Y5OTcxOTEzYTZhNDQ2NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxG
b3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmNwcApAQCAtNzYsNiArNzYsMTIgQEAgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6fkhU
TUxGb3JtQ29udHJvbEVsZW1lbnQoKQogICAgICAgICBtX2Zvcm0tPnJlbW92ZUZvcm1FbGVtZW50
KHRoaXMpOwogfQogCit2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRldGFjaCgpCit7Cisg
ICAgSFRNTEVsZW1lbnQ6OmRldGFjaCgpOworICAgIHVwZGF0ZVZpc2libGVWYWxpZGF0aW9uTWVz
c2FnZSgpOworfQorCiBib29sIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmZvcm1Ob1ZhbGlkYXRl
KCkgY29uc3QKIHsKICAgICByZXR1cm4gIWdldEF0dHJpYnV0ZShmb3Jtbm92YWxpZGF0ZUF0dHIp
LmlzTnVsbCgpOwpAQCAtMzI1LDcgKzMzMSw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVu
dDo6c2V0TmVlZHNXaWxsVmFsaWRhdGVDaGVjaygpCiAgICAgbV93aWxsVmFsaWRhdGVJbml0aWFs
aXplZCA9IHRydWU7CiAgICAgbV93aWxsVmFsaWRhdGUgPSBuZXdXaWxsVmFsaWRhdGU7CiAgICAg
c2V0TmVlZHNTdHlsZVJlY2FsYygpOwotICAgIC8vIEZJWE1FOiBTaG93L2hpZGUgYSB2YWxpZGF0
aW9uIG1lc3NhZ2UuCisgICAgdXBkYXRlVmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlKCk7CiB9CiAK
IFN0cmluZyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp2YWxpZGF0aW9uTWVzc2FnZSgpCkBAIC0z
MzMsNiArMzM5LDI4IEBAIFN0cmluZyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp2YWxpZGF0aW9u
TWVzc2FnZSgpCiAgICAgcmV0dXJuIHZhbGlkaXR5KCktPnZhbGlkYXRpb25NZXNzYWdlKCk7CiB9
CiAKK3ZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6dXBkYXRlVmlzaWJsZVZhbGlkYXRpb25N
ZXNzYWdlKCkKK3sKKyAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpOworICAgIFN0
cmluZyBtZXNzYWdlOworICAgIC8vIFdlIGNhbid0IHVzZSBmb2N1c2VkKCkuIFRoZSBmb2N1c2Vk
KCkgc3RhdGUgaXMgdXBkYXRlZCBhZnRlciBkaXNwYXRjaEZvY3VzRXZlbnQoKS4KKyAgICBpZiAo
cGFnZSAmJiBkb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpID09IHRoaXMgJiYgcmVuZGVyZXIoKSAm
JiB3aWxsVmFsaWRhdGUoKSkgeworICAgICAgICBtZXNzYWdlID0gdmFsaWRhdGlvbk1lc3NhZ2Uo
KS5zdHJpcFdoaXRlU3BhY2UoKTsKKyAgICAgICAgLy8gSFRNTDUgc3BlY2lmaWNhdGlvbiBkb2Vz
bid0IGFzayBVQSB0byBzaG93IHRoZSB0aXRsZSBhdHRyaWJ1dGUgdmFsdWUKKyAgICAgICAgLy8g
d2l0aCB0aGUgdmFsaWRhdGlvbk1lc3NhZ2UuICBIb3dldmVyLCB0aGlzIGJlaGF2aW9yIGlzIHNh
bWUgYXMgT3BlcmEKKyAgICAgICAgLy8gYW5kIHRoZSBzcGVjaWZpY2F0aW9uIGRlc2NyaWJlcyBz
dWNoIGJlaGF2aW9yIGFzIGFuIGV4YW1wbGUuCisgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
dGl0bGUgPSBnZXRBdHRyaWJ1dGUodGl0bGVBdHRyKTsKKyAgICAgICAgaWYgKCFtZXNzYWdlLmlz
RW1wdHkoKSAmJiAhdGl0bGUuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBtZXNzYWdlLmFwcGVu
ZCgnXG4nKTsKKyAgICAgICAgICAgIG1lc3NhZ2UuYXBwZW5kKHRpdGxlKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBpZiAobV92aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UgPT0gbWVzc2FnZSkKKyAg
ICAgICAgcmV0dXJuOworICAgIHBhZ2UtPmNocm9tZSgpLT51cGRhdGVGb3JtVmFsaWRhdGlvbk1l
c3NhZ2UodGhpcywgbWVzc2FnZSk7CisgICAgbV92aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UgPSBt
ZXNzYWdlOworfQorCiBib29sIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmNoZWNrVmFsaWRpdHko
VmVjdG9yPFJlZlB0cjxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PiA+KiB1bmhhbmRsZWRJbnZhbGlk
Q29udHJvbHMpCiB7CiAgICAgaWYgKCF3aWxsVmFsaWRhdGUoKSB8fCBpc1ZhbGlkRm9ybUNvbnRy
b2xFbGVtZW50KCkpCkBAIC0zNjIsNyArMzkwLDkgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50OjpzZXROZWVkc1ZhbGlkaXR5Q2hlY2soKQogICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxj
KCk7CiAgICAgfQogICAgIG1faXNWYWxpZCA9IG5ld0lzVmFsaWQ7Ci0gICAgLy8gRklYTUU6IHNo
b3cvaGlkZSBhIHZhbGlkYXRpb24gbWVzc2FnZS4KKyAgICAvLyBDYWxscyBpdCBldmVuIGlmIG1f
aXNWYWxpZCBpcyBub3QgY2hhbmdlZAorICAgIC8vIGJlY2F1c2UgYSB2YWxpZGF0aW9uIG1lc3Nh
Z2UgY2FuIGJlIGNoYWduZWQuCisgICAgdXBkYXRlVmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlKCk7
CiB9CiAKIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0Q3VzdG9tVmFsaWRpdHkoY29u
c3QgU3RyaW5nJiBlcnJvcikKQEAgLTM3Niw2ICs0MDYsNyBAQCB2b2lkIEhUTUxGb3JtQ29udHJv
bEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudCgpCiAgICAgICAgIGRvY3VtZW50KCktPnBhZ2Uo
KS0+Y2hyb21lKCktPmNsaWVudCgpLT5mb3JtRGlkRm9jdXModGhpcyk7CiAKICAgICBIVE1MRWxl
bWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KCk7CisgICAgdXBkYXRlVmlzaWJsZVZhbGlkYXRpb25N
ZXNzYWdlKCk7CiB9CiAKIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlzcGF0Y2hCbHVy
RXZlbnQoKQpAQCAtMzg0LDYgKzQxNSw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6
ZGlzcGF0Y2hCbHVyRXZlbnQoKQogICAgICAgICBkb2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgp
LT5jbGllbnQoKS0+Zm9ybURpZEJsdXIodGhpcyk7CiAKICAgICBIVE1MRWxlbWVudDo6ZGlzcGF0
Y2hCbHVyRXZlbnQoKTsKKyAgICB1cGRhdGVWaXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKTsKIH0K
IAogSFRNTEZvcm1FbGVtZW50KiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp2aXJ0dWFsRm9ybSgp
IGNvbnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5o
IGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAppbmRleCBiOTYwMzgxMmRm
NTkzZDc2NzYyZGJkZWExODZlZWU5NDEwOGFkMjY3Li4xYTcwMmY1OTZhZGE1MDI1MmM3YWM5Yzk0
ZjAxYzNhNmI2MDllOTEwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
RWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKQEAg
LTg4LDYgKzg4LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHdpbGxWYWxpZGF0ZSgp
IGNvbnN0OwogICAgIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZSgpOworICAgIC8vIEZvciB0ZXN0
aW5nLgorICAgIFN0cmluZyB2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKSB7IHJldHVybiBtX3Zp
c2libGVWYWxpZGF0aW9uTWVzc2FnZTsgfQogICAgIGJvb2wgY2hlY2tWYWxpZGl0eShWZWN0b3I8
UmVmUHRyPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+ID4qIHVuaGFuZGxlZEludmFsaWRDb250cm9s
cyA9IDApOwogICAgIC8vIFRoaXMgbXVzdCBiZSBjYWxsZWQgd2hlbiBhIHZhbGlkYXRpb24gY29u
c3RyYWludCBvciBjb250cm9sIHZhbHVlIGlzIGNoYW5nZWQuCiAgICAgdm9pZCBzZXROZWVkc1Zh
bGlkaXR5Q2hlY2soKTsKQEAgLTExOCw2ICsxMjAsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hGb2N1c0V2ZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
Qmx1ckV2ZW50KCk7CisgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwogCiAgICAgdm9pZCByZW1v
dmVGcm9tRm9ybSgpOwogICAgIC8vIFRoaXMgbXVzdCBiZSBjYWxsZWQgYW55IHRpbWUgdGhlIHJl
c3VsdCBvZiB3aWxsVmFsaWRhdGUoKSBoYXMgY2hhbmdlZC4KQEAgLTE0MCw5ICsxNDMsMTEgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIEhUTUxGb3JtRWxlbWVudCogdmlydHVhbEZvcm0oKSBjb25z
dDsKICAgICB2aXJ0dWFsIGJvb2wgaXNEZWZhdWx0QnV0dG9uRm9yRm9ybSgpIGNvbnN0OwogICAg
IHZpcnR1YWwgYm9vbCBpc1ZhbGlkRm9ybUNvbnRyb2xFbGVtZW50KCk7CisgICAgdm9pZCB1cGRh
dGVWaXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKTsKIAogICAgIEhUTUxGb3JtRWxlbWVudCogbV9m
b3JtOwogICAgIE93blB0cjxWYWxpZGl0eVN0YXRlPiBtX3ZhbGlkaXR5U3RhdGU7CisgICAgU3Ry
aW5nIG1fdmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlOwogICAgIGJvb2wgbV9kaXNhYmxlZCA6IDE7
CiAgICAgYm9vbCBtX3JlYWRPbmx5IDogMTsKICAgICBib29sIG1fcmVxdWlyZWQgOiAxOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmggYi9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuaAppbmRleCBjNjMwOTMxNjgzZTNmMzM2MThlNzcyYTMwNWJiM2JkNjIwNjhk
MmE5Li4xYzZlNDZmN2JiNjNkYWVkMWViNWNhMjA3ZWJkN2U3NDI2OGMyMTFkIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuaApAQCAtMTUwLDYgKzE1MCwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZv
aWQgZm9ybURpZEZvY3VzKGNvbnN0IE5vZGUqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZm9ybURp
ZEJsdXIoY29uc3QgTm9kZSopIHsgfQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGb3JtVmFsaWRh
dGlvbk1lc3NhZ2UoSFRNTEZvcm1Db250cm9sRWxlbWVudCosIGNvbnN0IFN0cmluZyYpIHt9Cisg
ICAgdmlydHVhbCBkb3VibGUgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRlcnZhbFNlY29uZCgp
IHsgcmV0dXJuIDE7IH0KKyAgICB2aXJ0dWFsIGludCB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUNv
dW50KGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIDE7IH0KKyAgICB2aXJ0dWFsIGRvdWJsZSB2YWxp
ZGF0aW9uTWVzc2FnZUJsYWNrb3V0U2Vjb25kKCkgeyByZXR1cm4gMTsgfQogCiAgICAgdmlydHVh
bCBQYXNzT3duUHRyPEhUTUxQYXJzZXJRdWlya3M+IGNyZWF0ZUhUTUxQYXJzZXJRdWlya3MoKSB7
IHJldHVybiAwOyB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwIGIvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5jcHAKaW5kZXggMDEyNDIxMWNhZDJiOWVlMDI5NDM0ZDU1MGQyZTQ2
NzMwNWY3NDQ3ZS4uNGFkMGUxYTkzZTI1ZmZiMmMyYjkwZTFlYzMzODg2NjBiNzQxZDNiMiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0Nocm9t
ZS5jcHAKQEAgLTQxMSw2ICs0MTEsNzggQEAgdm9pZCBDaHJvbWU6OnNldFRvb2xUaXAoY29uc3Qg
SGl0VGVzdFJlc3VsdCYgcmVzdWx0KQogICAgIG1fY2xpZW50LT5zZXRUb29sVGlwKHRvb2xUaXAs
IHRvb2xUaXBEaXJlY3Rpb24pOwogfQogCit2b2lkIENocm9tZTo6dXBkYXRlRm9ybVZhbGlkYXRp
b25NZXNzYWdlKEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGNvbnRyb2wsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKK3sKKyAgICBBU1NFUlQoY29udHJvbCk7CisgICAgaWYgKCFtX3ZhbGlkYXRpb25N
ZXNzYWdlVGltZXIpCisgICAgICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2VUaW1lci5zZXQobmV3IFRp
bWVyPENocm9tZT4odGhpcywgJkNocm9tZTo6dmFsaWRhdGlvbk1lc3NhZ2VUaW1lckZpcmVkKSk7
CisKKyAgICBpZiAobWVzc2FnZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKG1fdmFsaWRhdGlv
bk1lc3NhZ2VUYXJnZXQgIT0gY29udHJvbCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
bV92YWxpZGF0aW9uTWVzc2FnZVRpbWVyLT5zdG9wKCk7CisgICAgICAgIG1fY2xpZW50LT51cGRh
dGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoY29udHJvbCwgbWVzc2FnZSk7CisgICAgICAgIG1fdmFs
aWRhdGlvbk1lc3NhZ2UgPSBtZXNzYWdlOworICAgICAgICBtX3ZhbGlkYXRpb25NZXNzYWdlVGFy
Z2V0LmNsZWFyKCk7CisgICAgICAgIC8vIFN0YXJ0IHRoZSB0aW1lciB0byBtYWtlIGEgYmxhY2tv
dXQgcGVyaW9kLiBEbyBub3QgdXNlIHN0YXJ0T25lU2hvcnQoKQorICAgICAgICAvLyBpbiBvcmRl
ciB0byByZXVzZSB0aGlzIGZvciB0aGUgbmV4dCBtZXNzYWdlLgorICAgICAgICBzdGFydFZhbGlk
YXRpb25NZXNzYWdlQmxhY2tvdXQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGJv
b2wgd2FzVmlzaWJsZSA9ICFtX3ZhbGlkYXRpb25NZXNzYWdlLmlzRW1wdHkoKTsKKyAgICBSZWZQ
dHI8SFRNTEZvcm1Db250cm9sRWxlbWVudD4gbGFzdFRhcmdldChtX3ZhbGlkYXRpb25NZXNzYWdl
VGFyZ2V0KTsKKyAgICBib29sIHJlc2V0VGltZXIgPSAhd2FzVmlzaWJsZSB8fCBtX3ZhbGlkYXRp
b25NZXNzYWdlVGFyZ2V0ICE9IGNvbnRyb2wgfHwgbV92YWxpZGF0aW9uTWVzc2FnZSAhPSBtZXNz
YWdlOworICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2UgPSBtZXNzYWdlOworICAgIG1fdmFsaWRhdGlv
bk1lc3NhZ2VUYXJnZXQgPSBjb250cm9sOworICAgIGlmICghcmVzZXRUaW1lcikgeworICAgICAg
ICBtX2NsaWVudC0+dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKG1fdmFsaWRhdGlvbk1lc3Nh
Z2VUYXJnZXQuZ2V0KCksIG1fdmFsaWRhdGlvbk1lc3NhZ2UpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGlmICh3YXNWaXNpYmxlKSB7CisgICAgICAgIC8vIENsZWFyIHRoZSB2aXNpYmxl
IG9sZCBtZXNzYWdlLgorICAgICAgICBtX3ZhbGlkYXRpb25NZXNzYWdlVGltZXItPnN0b3AoKTsK
KyAgICAgICAgbV9jbGllbnQtPnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShsYXN0VGFyZ2V0
LmdldCgpLCBTdHJpbmcoKSk7CisgICAgICAgIC8vIFdpbGwgc2hvdyB0aGUgbmV3IG1lc3NhZ2Ug
YWZ0ZXIgdmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlYy4KKyAgICAgICAgc3RhcnRWYWxpZGF0
aW9uTWVzc2FnZUJsYWNrb3V0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKG1fdmFsaWRh
dGlvbk1lc3NhZ2VUaW1lci0+aXNBY3RpdmUoKSkgeworICAgICAgICAgICAgLy8gTm90aGluZyB0
byBkbyBpZiBpdCBpcyBpbiBhIGJsYWNrb3V0IHBlcmlvZC4gV2hlbiB0aGUgdGltZXIgaXMKKyAg
ICAgICAgICAgIC8vIGZpcmVkIG5leHQgdGltZSwgdmFsaWRhdGlvbk1lc3NhZ2VUaW1lckZpcmVk
KCkgc2hvd3MgdGhlIG1lc3NhZ2UKKyAgICAgICAgICAgIC8vIGJlY2F1c2UgbV92YWxpZGF0aW9u
TWVzc2FnZSBpcyBub3QgZW1wdHkuCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBJ
dCdzIG5vdCBpbiBhIGJsYWNrb3V0IHBlcmlvZC4gU2hvdyB0aGUgbWVzc2FnZSBpbW1lZGlhdGVs
eS4KKyAgICAgICAgICAgIG1fY2xpZW50LT51cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UobV92
YWxpZGF0aW9uTWVzc2FnZVRhcmdldC5nZXQoKSwgbV92YWxpZGF0aW9uTWVzc2FnZSk7CisgICAg
ICAgICAgICBtX3ZhbGlkYXRpb25NZXNzYWdlVGltZXJDb3VudGVyID0gMDsKKyAgICAgICAgICAg
IG1fdmFsaWRhdGlvbk1lc3NhZ2VUaW1lci0+c3RhcnRSZXBlYXRpbmcobV9jbGllbnQtPnZhbGlk
YXRpb25NZXNzYWdlVXBkYXRlSW50ZXJ2YWxTZWNvbmQoKSk7CisgICAgICAgIH0KKyAgICB9Cit9
CisKK3ZvaWQgQ2hyb21lOjpzdGFydFZhbGlkYXRpb25NZXNzYWdlQmxhY2tvdXQoKQoreworICAg
IG1fdmFsaWRhdGlvbk1lc3NhZ2VUaW1lckNvdW50ZXIgPSAtMTsKKyAgICBtX3ZhbGlkYXRpb25N
ZXNzYWdlVGltZXItPnN0YXJ0KG1fY2xpZW50LT52YWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0U2Vj
b25kKCksIG1fY2xpZW50LT52YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUludGVydmFsU2Vjb25kKCkp
OworfQorCit2b2lkIENocm9tZTo6dmFsaWRhdGlvbk1lc3NhZ2VUaW1lckZpcmVkKFRpbWVyPENo
cm9tZT4qIHRpbWVyKQoreworICAgIGlmIChtX3ZhbGlkYXRpb25NZXNzYWdlLmlzRW1wdHkoKSkg
eworICAgICAgICBBU1NFUlQobV92YWxpZGF0aW9uTWVzc2FnZVRpbWVyQ291bnRlciA8IDApOwor
ICAgICAgICB0aW1lci0+c3RvcCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fY2xp
ZW50LT51cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UobV92YWxpZGF0aW9uTWVzc2FnZVRhcmdl
dC5nZXQoKSwgbV92YWxpZGF0aW9uTWVzc2FnZSk7CisgICAgaWYgKCsrbV92YWxpZGF0aW9uTWVz
c2FnZVRpbWVyQ291bnRlciA8IG1fY2xpZW50LT52YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUNvdW50
KG1fdmFsaWRhdGlvbk1lc3NhZ2UpKQorICAgICAgICByZXR1cm47CisgICAgdGltZXItPnN0b3Ao
KTsKKyAgICBtX2NsaWVudC0+dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKG1fdmFsaWRhdGlv
bk1lc3NhZ2VUYXJnZXQuZ2V0KCksIFN0cmluZygpKTsKKyAgICBtX3ZhbGlkYXRpb25NZXNzYWdl
ID0gU3RyaW5nKCk7CisgICAgbV92YWxpZGF0aW9uTWVzc2FnZVRhcmdldC5jbGVhcigpOworCisg
ICAgc3RhcnRWYWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0KCk7Cit9CisKIHZvaWQgQ2hyb21lOjpw
cmludChGcmFtZSogZnJhbWUpCiB7CiAgICAgbV9jbGllbnQtPnByaW50KGZyYW1lKTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGFnZS9DaHJvbWUuaCBiL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAppbmRl
eCA4ODAzNWE1MjgxN2Y5ODMyZDc1YTJkOWFlYjczNDdlNzEyNmJiMzRjLi5kMjBjMjliNzZkYWZh
NjcxOGRlZWE3ZGQ0ODU1MzhmNTI3ODI2N2YzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvQ2hy
b21lLmgKKysrIGIvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCkBAIC0yNCw3ICsyNCw5IEBACiAjaW5j
bHVkZSAiRmlsZUNob29zZXIuaCIKICNpbmNsdWRlICJGb2N1c0RpcmVjdGlvbi5oIgogI2luY2x1
ZGUgIkhvc3RXaW5kb3cuaCIKKyNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
IAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTQwLDYgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIGNsYXNzIEZsb2F0UmVjdDsKICAgICBjbGFzcyBGcmFtZTsKICAgICBjbGFzcyBHZW9s
b2NhdGlvbjsKKyAgICBjbGFzcyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OwogICAgIGNsYXNzIEhp
dFRlc3RSZXN1bHQ7CiAgICAgY2xhc3MgSW50UmVjdDsKICAgICBjbGFzcyBOb2RlOwpAQCAtMTI5
LDYgKzEzMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBtb3VzZURpZE1v
dmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0UmVzdWx0JiwgdW5zaWduZWQgbW9kaWZpZXJGbGFn
cyk7CiAKICAgICAgICAgdm9pZCBzZXRUb29sVGlwKGNvbnN0IEhpdFRlc3RSZXN1bHQmKTsKKyAg
ICAgICAgdm9pZCB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoSFRNTEZvcm1Db250cm9sRWxl
bWVudCosIGNvbnN0IFN0cmluZyYpOwogCiAgICAgICAgIHZvaWQgcHJpbnQoRnJhbWUqKTsKIApA
QCAtMTQ5LDggKzE1MywxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAogICAgIHBy
aXZhdGU6CisgICAgICAgIHZvaWQgdmFsaWRhdGlvbk1lc3NhZ2VUaW1lckZpcmVkKFRpbWVyPENo
cm9tZT4qKTsKKyAgICAgICAgdm9pZCBzdGFydFZhbGlkYXRpb25NZXNzYWdlQmxhY2tvdXQoKTsK
KwogICAgICAgICBQYWdlKiBtX3BhZ2U7CiAgICAgICAgIENocm9tZUNsaWVudCogbV9jbGllbnQ7
CisgICAgICAgIE93blB0cjxUaW1lcjxDaHJvbWU+Kj4gbV92YWxpZGF0aW9uTWVzc2FnZVRpbWVy
OworICAgICAgICBpbnQgbV92YWxpZGF0aW9uTWVzc2FnZVRpbWVyQ291bnRlcjsKKyAgICAgICAg
U3RyaW5nIG1fdmFsaWRhdGlvbk1lc3NhZ2U7CisgICAgICAgIFJlZlB0cjxIVE1MRm9ybUNvbnRy
b2xFbGVtZW50PiBtX3ZhbGlkYXRpb25NZXNzYWdlVGFyZ2V0OwogICAgIH07CiB9CiAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaAppbmRleCBjOTNiM2M5YjQ5MTFlMmE1NjcxNGEzZjQyZjA4MjQyMzllOGE0MjY2Li41
MDI4ODNlMWUyOTNkNmJmODZhNGMyOGNjMzBkMWUwMTljYTBiMTRiIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5o
CkBAIC00Nyw2ICs0Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBGbG9hdFJl
Y3Q7CiAgICAgY2xhc3MgRnJhbWU7CiAgICAgY2xhc3MgR2VvbG9jYXRpb247CisgICAgY2xhc3Mg
SFRNTEZvcm1Db250cm9sRWxlbWVudDsKICAgICBjbGFzcyBIVE1MUGFyc2VyUXVpcmtzOwogICAg
IGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiAgICAgY2xhc3MgSW50UmVjdDsKQEAgLTIwMiw2ICsyMDMs
MjkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAKICAgICAgICAgdmlydHVhbCB2b2lk
IGZvcm1EaWRGb2N1cyhjb25zdCBOb2RlKikgeyB9OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZm9y
bURpZEJsdXIoY29uc3QgTm9kZSopIHsgfTsKKyAgICAgICAgLy8gU2hvdyB0aGUgc3BlY2lmaWVk
IG1lc3NhZ2UgZm9yIHRoZSBmb3JtIGNvbnRyb2wuIEhpZGUgdGhlIG1lc3NhZ2UKKyAgICAgICAg
Ly8gaWYgdGhlIHN0cmluZyBpcyBlbXB0eS4gSWYgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdl
KCkgd2l0aAorICAgICAgICAvLyBub24tZW1wdHkgbWVzc2FnZSBpcyBjYWxsZWQsIHRoZSBzdWJz
ZXF1ZW50IGNhbGxzIG9mCisgICAgICAgIC8vIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSgp
IG11c3QgYmUgZm9yIHRoZSBzYW1lIGVsZW1lbnQgYW5kIHRoZQorICAgICAgICAvLyBzYW1lIG1l
c3NhZ2UuICBUaGVuLCB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoKSBpcyBjYWxsZWQgd2l0
aAorICAgICAgICAvLyB0aGUgc2FtZSBlbGVtZW50IGFuZCB0aGUgZW1wdHkgbWVzc2FnZS4KKyAg
ICAgICAgLy8gIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzYWdlKGNvbnRyb2wxLCAibWVzc2FnZTEi
KSAtPgorICAgICAgICAvLyAgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNhZ2UoY29udHJvbDEsICJt
ZXNzYWdlMSIpIC0+CisgICAgICAgIC8vICB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc2FnZShjb250
cm9sMSwgIm1lc3NhZ2UxIikgLi4uIChtdWx0aXBsZSB0aW1lcykKKyAgICAgICAgLy8gIHVwZGF0
ZUZvcm1WYWxpZGF0aW9uTWVzYWdlKGNvbnRyb2wxLCAiIikKKyAgICAgICAgLy8gSW4gdGhpcyBz
ZXF1ZW5jZSwgY2FsbHMgd2l0aCBvdGhlciBjb250cm9scyBvciBvdGhlciBtZXNzYWdlcworICAg
ICAgICAvLyBuZXZlciBoYXBwZW4uCisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGb3JtVmFs
aWRhdGlvbk1lc3NhZ2UoSFRNTEZvcm1Db250cm9sRWxlbWVudCosIGNvbnN0IFN0cmluZyYpID0g
MDsKKyAgICAgICAgLy8gQWZ0ZXIgdGhlIGZpcnN0IGNhbGwgb2YgdXBkYXRlRm9ybVZhbGlkYXRp
b25NZXNzYWdlKGUsICJtZXNzYWdlMSIpLAorICAgICAgICAvLyBpdCBpcyBjYWxsZWQgcmVwZWF0
ZWRseSBldmVyeSB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUludGVydmFsU2Vjb25kKCkKKyAgICAg
ICAgLy8gdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3VudCgpLTEgdGltZXMsCisgICAgICAgIC8v
IHRoZW4gdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKGUsICIiKSBpcyBjYWxsZWQgYWZ0ZXIK
KyAgICAgICAgLy8gdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRlcnZhbFNlY29uZCgpLgorICAg
ICAgICAvLyBBZnRlciB0aGF0LCB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoKSBpcyBuZXZl
ciBjYWxsZWQgZm9yCisgICAgICAgIC8vIHZhbGlkYXRpb25NZXNzYWdlQmxhY2tvdXRTZWNvbmQo
KS4KKyAgICAgICAgdmlydHVhbCBkb3VibGUgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRlcnZh
bFNlY29uZCgpID0gMDsKKyAgICAgICAgdmlydHVhbCBpbnQgdmFsaWRhdGlvbk1lc3NhZ2VVcGRh
dGVDb3VudChjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgZG91YmxlIHZhbGlk
YXRpb25NZXNzYWdlQmxhY2tvdXRTZWNvbmQoKSA9IDA7CiAKICAgICAgICAgdmlydHVhbCBQYXNz
T3duUHRyPEhUTUxQYXJzZXJRdWlya3M+IGNyZWF0ZUhUTUxQYXJzZXJRdWlya3MoKSA9IDA7CiAK
ZGlmZiAtLWdpdCBhL1dlYktpdC9DaGFuZ2VMb2cgYi9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGEy
ODJmMDg5NTBiYzk5OTYyNDJkM2FlNDJmOThlZDFhNzc1NTk2MmMuLjM5Y2QzN2IzYzBkMDNmOGIx
NGE1MTZhMDcxNTBkODM2YzRhNmNmYTcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEwLTA0LTAxICBLZW50IFRh
bXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBGcmFtZXdvcmsgdG8gc2hvdyBmb3JtIHZhbGlkYXRpb24gbWVz
c2FnZSBmb3IgaW52YWxpZCBjb250cm9scworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzE3MTgKKworICAgICAgICBBZGQgc3R1YiBmdW5jdGlvbnMgZm9y
IHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSgpLAorICAgICAgICB2YWxpZGF0aW9uTWVzc2Fn
ZVVwZGF0ZUludGVydmFsU2Vjb25kKCksCisgICAgICAgIHZhbGlkYXRpb25NZXNzYWdlVXBkYXRl
Q291bnQoKSwgYW5kCisgICAgICAgIHZhbGlkYXRpb25NZXNzYWdlQmxhY2tvdXRTZWNvbmQoKS4K
KworICAgICAgICAqIGVmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjp1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3Nh
Z2UpOgorICAgICAgICAqIGVmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6dmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJ
bnRlcnZhbFNlY29uZCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OnZhbGlk
YXRpb25NZXNzYWdlVXBkYXRlQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50
RWZsOjp2YWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0U2Vjb25kKToKKwogMjAxMC0wNi0wOSAgU2hl
cmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjYwODg5LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggM2Y0ZjUxNTVmMDU1NDk1
YWQ5OGE3YjdlNWQ1Y2Y2NWRhMzliMTFkMS4uMDhjMDI1Njc1NjVkZjYyYmIyZTM1ZGE0ZTFmOTgy
YWFiMmY3YzE5OCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMDQtMDEgIEtl
bnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyYW1ld29yayB0byBzaG93IGZvcm0gdmFsaWRhdGlv
biBtZXNzYWdlIGZvciBpbnZhbGlkIGNvbnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTcxOAorCisgICAgICAgIEFkZCBzdHViIGZ1bmN0aW9u
cyBmb3IgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKCksCisgICAgICAgIHZhbGlkYXRpb25N
ZXNzYWdlVXBkYXRlSW50ZXJ2YWxTZWNvbmQoKSwKKyAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VV
cGRhdGVDb3VudCgpLCBhbmQKKyAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29u
ZCgpLgorCisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpDaHJvbWVDbGllbnRJbXBsOjp1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UpOgorICAg
ICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmg6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNs
aWVudEltcGw6OnZhbGlkYXRpb25NZXNzYWdlVXBkYXRlSW50ZXJ2YWxTZWNvbmQpOgorICAgICAg
ICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjp2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUNvdW50
KToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6dmFsaWRhdGlvbk1lc3NhZ2VC
bGFja291dFNlY29uZCk6CisKIDIwMTAtMDYtMDkgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29n
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KZGlmZiAtLWdp
dCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAgYi9XZWJLaXQvY2hy
b21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCmluZGV4IDY1OTEwZjgzMWJjNzQwMDQyMzdl
MjFmNmQ0NGMyOTM3MWY2Njc5YmMuLmQ2YTIzMWYwMzBlMTQwZjUyNjA5N2I5NDYxMTEwOTJkZmYx
M2Q0YjUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5j
cHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcApAQCAtNjU0
LDYgKzY1NCwxMSBAQCB2b2lkIENocm9tZUNsaWVudEltcGw6OmZvcm1TdGF0ZURpZENoYW5nZShj
b25zdCBOb2RlKiBub2RlKQogICAgICAgICB3ZWJmcmFtZS0+Y2xpZW50KCktPmRpZFVwZGF0ZUN1
cnJlbnRIaXN0b3J5SXRlbSh3ZWJmcmFtZSk7CiB9CiAKK3ZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6
dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1l
bnQqLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKIHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6Z2V0UG9wdXBNZW51SW5mbyhQb3B1cENvbnRhaW5l
ciogcG9wdXBDb250YWluZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV2ViUG9wdXBNZW51SW5mbyogaW5mbykKIHsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1
bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGll
bnRJbXBsLmgKaW5kZXggM2I1ZWJkNTJiMDJiYmY5YzJiYWIzNGFhNjkwMjk2OGUwYTkxMmI1Ni4u
YzY2ODA0MGYxOGYzYmIyNDgzMDNkZDcyZDY2YmZiNDUwNjk0NTBlZiAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVt
L3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKQEAgLTEyOCw2ICsxMjgsMTAgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBjaG9vc2VJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlN0
cmluZz4mLCBXZWJDb3JlOjpGaWxlQ2hvb3NlciopOwogICAgIHZpcnR1YWwgYm9vbCBzZXRDdXJz
b3IoV2ViQ29yZTo6UGxhdGZvcm1DdXJzb3JIYW5kbGUpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dmlydHVhbCB2b2lkIGZvcm1TdGF0ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpOb2RlKik7Cisg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShXZWJDb3JlOjpIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7CisgICAgdmlydHVh
bCBkb3VibGUgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRlcnZhbFNlY29uZCgpIHsgcmV0dXJu
IDAuMzsgLyogRklYTUUgKi8gfQorICAgIHZpcnR1YWwgaW50IHZhbGlkYXRpb25NZXNzYWdlVXBk
YXRlQ291bnQoY29uc3QgV2ViQ29yZTo6U3RyaW5nJikgeyByZXR1cm4gMjA7IC8qIEZJWE1FICov
IH0KKyAgICB2aXJ0dWFsIGRvdWJsZSB2YWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0U2Vjb25kKCkg
eyByZXR1cm4gMC42OyAvKiBGSVhNRSAqLyB9CiAgICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkNv
cmU6OkhUTUxQYXJzZXJRdWlya3M+IGNyZWF0ZUhUTUxQYXJzZXJRdWlya3MoKSB7IHJldHVybiAw
OyB9CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICAvLyBGSVhNRTogQWxsIHRvdWNoIGV2
ZW50cyBhcmUgZm9yd2FyZGVkIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvciBub3QgdGhleSBhcmUg
bmVlZGVkLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRFZmwuY3BwIGIvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3Bw
CmluZGV4IGM1MWJlZmIyNGJhNDU0ZDNlYTFiZTIwYjdmZjUzMTkyNmM1YTY5MDAuLjAxM2JlY2Vj
ZjQzMGEyYmJlZGJhYzIxOThhN2NkNDhhYzIwOWFjNWEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcAorKysgYi9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKQEAgLTM4NCw2ICszODQsMTEgQEAgdm9pZCBD
aHJvbWVDbGllbnRFZmw6OmZvcm1TdGF0ZURpZENoYW5nZShjb25zdCBOb2RlKikKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQogCit2b2lkIENocm9tZUNsaWVudEVmbDo6dXBkYXRlRm9ybVZhbGlk
YXRpb25NZXNzYWdlKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQqLCBjb25zdCBXZWJD
b3JlOjpTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIGJvb2wgQ2hyb21l
Q2xpZW50RWZsOjpzZXRDdXJzb3IoUGxhdGZvcm1DdXJzb3JIYW5kbGUpCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50RWZsLmggYi9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5o
CmluZGV4IDM5OWVmN2YwYjEyYWFhNjUyNzdkY2QzODM1OWEzMjgzMmQ3NTExYjEuLjA2ZjljNjI0
OGQwZjlmMjk2ZGNjOTI4M2Y0YjE4YWIzZjBkMTgyYmMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmgKKysrIGIvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaApAQCAtMTE1LDYgKzExNSwxMCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29z
ZXI+KTsKICAgICB2aXJ0dWFsIHZvaWQgY2hvb3NlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiwgRmlsZUNob29zZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgZm9ybVN0YXRlRGlkQ2hh
bmdlKGNvbnN0IE5vZGUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRm9ybVZhbGlkYXRpb25N
ZXNzYWdlKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQsIGNvbnN0IFdlYkNvcmU6OlN0
cmluZyYpOworICAgIHZpcnR1YWwgZG91YmxlIHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlSW50ZXJ2
YWxTZWNvbmQoKSB7IHJldHVybiAwLjM7IC8qIEZJWE1FICovIH0KKyAgICB2aXJ0dWFsIGludCB2
YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUNvdW50KGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIDIwOyAv
KiBGSVhNRSAqLyB9CisgICAgdmlydHVhbCBkb3VibGUgdmFsaWRhdGlvbk1lc3NhZ2VCbGFja291
dFNlY29uZCgpIHsgcmV0dXJuIDAuNjsgLyogRklYTUUgKi8gfQogCiAgICAgdmlydHVhbCBQYXNz
T3duUHRyPEhUTUxQYXJzZXJRdWlya3M+IGNyZWF0ZUhUTUxQYXJzZXJRdWlya3MoKSB7IHJldHVy
biAwOyB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cKaW5kZXggYTAwYTNmZGI0OGQ1NDM5OGM4YTI3NjQ5ZjA0YWQ0Nzk1ZTFhMzlmNy4u
YjM3ZDgwZmIzYTNmOWRjZjkyOTc4ZDM0MmNmZTJhYTM3ZTNlNDdlYyAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MiBAQAorMjAxMC0wNC0wMSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRnJhbWV3b3JrIHRv
IHNob3cgZm9ybSB2YWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGludmFsaWQgY29udHJvbHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNzE4CisKKyAgICAg
ICAgQWRkIHN0dWIgZnVuY3Rpb25zIGZvciB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoKSwK
KyAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRlcnZhbFNlY29uZCgpLAorICAgICAg
ICB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUNvdW50KCksIGFuZAorICAgICAgICB2YWxpZGF0aW9u
TWVzc2FnZUJsYWNrb3V0U2Vjb25kKCkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnVwZGF0ZUZv
cm1WYWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50R3RrLmg6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6dmFsaWRhdGlvbk1lc3Nh
Z2VVcGRhdGVJbnRlcnZhbFNlY29uZCk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6
dmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3VudCk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNs
aWVudDo6dmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29uZCk6CisKIDIwMTAtMDYtMDkgIFNo
ZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHI2MDg4OS4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50R3RrLmNwcAppbmRleCA1NzU5NjAxMzVlZjU2N2ZkOTcwMzMxYThiMDNlM2Nm
OGI3MTgwNjM1Li4xNTU3MGY3MDM1YzcxNjcwYmQwMTY0MDYwYzRiN2ZlZGU4ZjgxOTFhIDEwMDY0
NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKKysr
IGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCkBAIC01NjQs
NiArNTY0LDExIEBAIHZvaWQgQ2hyb21lQ2xpZW50OjpjaG9vc2VJY29uRm9yRmlsZXMoY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OlN0cmluZz4mIGZpbGVuYW1lcywKICAgICBjaG9vc2VyLT5pY29uTG9h
ZGVkKEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhmaWxlbmFtZXMpKTsKIH0KIAordm9pZCBDaHJv
bWVDbGllbnQ6OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShXZWJDb3JlOjpIVE1MRm9ybUNv
bnRyb2xFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCiBib29sIENocm9tZUNsaWVudDo6c2V0Q3Vyc29yKFBsYXRmb3JtQ3Vyc29y
SGFuZGxlKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRHdGsuaAppbmRleCA0NmQwMTVlZGFiN2UwNTVhOWIwZGFlNjI2YjUw
MTFkM2QxYTZjODczLi41MGE0MTNjODFjZDZmNjA1MmNkMTE5MDQ1ZGJkZWZiODU0NGQwMmNhIDEw
MDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCisr
KyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKQEAgLTExMyw2
ICsxMTMsMTAgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjaG9v
c2VJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlN0cmluZz4mLCBXZWJDb3JlOjpG
aWxlQ2hvb3NlciopOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBmb3JtU3RhdGVEaWRDaGFuZ2Uo
Y29uc3QgV2ViQ29yZTo6Tm9kZSopIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRm9y
bVZhbGlkYXRpb25NZXNzYWdlKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQqLCBjb25z
dCBXZWJDb3JlOjpTdHJpbmcmKTsKKyAgICAgICAgdmlydHVhbCBkb3VibGUgdmFsaWRhdGlvbk1l
c3NhZ2VVcGRhdGVJbnRlcnZhbFNlY29uZCgpIHsgcmV0dXJuIDAuMzsgLyogRklYTUUgKi8gfQor
ICAgICAgICB2aXJ0dWFsIGludCB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUNvdW50KGNvbnN0IFdl
YkNvcmU6OlN0cmluZyYpIHsgcmV0dXJuIDIwOyAvKiBGSVhNRSAqLyB9CisgICAgICAgIHZpcnR1
YWwgZG91YmxlIHZhbGlkYXRpb25NZXNzYWdlQmxhY2tvdXRTZWNvbmQoKSB7IHJldHVybiAwLjY7
IC8qIEZJWE1FICovIH0KIAogICAgICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6SFRN
TFBhcnNlclF1aXJrcz4gY3JlYXRlSFRNTFBhcnNlclF1aXJrcygpIHsgcmV0dXJuIDA7IH0KIApk
aWZmIC0tZ2l0IGEvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZyBiL1dlYktpdC9oYWlrdS9DaGFuZ2VM
b2cKaW5kZXggY2ViZmNkNGI2MWQ0ZjkyZGEzYzg5NDgwNWY4MjYzZDA5ZjQ1ZDA5YS4uOWNhNmRi
YTQ3NzlkYjc3YWNhN2EwZGExZjQyZWVkOTkwNGRmMGM2YSAxMDA2NDQKLS0tIGEvV2ViS2l0L2hh
aWt1L0NoYW5nZUxvZworKysgYi9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIg
QEAKKzIwMTAtMDQtMDEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyYW1ld29yayB0byBz
aG93IGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnZhbGlkIGNvbnRyb2xzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTcxOAorCisgICAgICAg
IEFkZCBzdHViIGZ1bmN0aW9ucyBmb3IgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKCksCisg
ICAgICAgIHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlSW50ZXJ2YWxTZWNvbmQoKSwKKyAgICAgICAg
dmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3VudCgpLCBhbmQKKyAgICAgICAgdmFsaWRhdGlvbk1l
c3NhZ2VCbGFja291dFNlY29uZCgpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50SGFpa3UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OnVw
ZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50SGFpa3UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1Ojp2
YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUludGVydmFsU2Vjb25kKToKKyAgICAgICAgKFdlYkNvcmU6
OkNocm9tZUNsaWVudEhhaWt1Ojp2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUNvdW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1Ojp2YWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0
U2Vjb25kKToKKwogMjAxMC0wNi0wOSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBn
bWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjYwODg5LgpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmNw
cCBiL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5jcHAKaW5k
ZXggMmNmNWMzMTZjYTcxYjZkZDJmNWNlMzdkYjk3NDRmZGQ4YzBmZjIzMS4uMTMyMWVkYWU5OGI4
Njc0MGI5OTgyMjNmNzBjMDcwMmJmYzBhODliZiAxMDA2NDQKLS0tIGEvV2ViS2l0L2hhaWt1L1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmNwcAorKysgYi9XZWJLaXQvaGFpa3UvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuY3BwCkBAIC0zNzUsNiArMzc1LDExIEBAIHZv
aWQgQ2hyb21lQ2xpZW50SGFpa3U6OmZvcm1TdGF0ZURpZENoYW5nZShjb25zdCBOb2RlKikKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIENocm9tZUNsaWVudEhhaWt1Ojp1cGRhdGVG
b3JtVmFsaWRhdGlvbk1lc3NhZ2UoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudCosIGNv
bnN0IFdlYkNvcmU6OlN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogUGFz
c093blB0cjxIVE1MUGFyc2VyUXVpcmtzPiBDaHJvbWVDbGllbnRIYWlrdTo6Y3JlYXRlSFRNTFBh
cnNlclF1aXJrcygpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1dlYktp
dC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5oIGIvV2ViS2l0L2hhaWt1
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmgKaW5kZXggZDVhMzcyYjBmYmMyZWVi
NWY2YjMxMmNhYWZjNzI4MjU1YTNkZjM3Yi4uOTRlYzc1YmU0Y2UxZjU5ZGU0MjcyZjRkZWQ4MmYw
Y2Q4Y2FhMzYzZSAxMDA2NDQKLS0tIGEvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEhhaWt1LmgKKysrIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEhhaWt1LmgKQEAgLTE0NSw2ICsxNDUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICAvLyBOb3RpZmljYXRpb24gdGhhdCB0aGUgZ2l2ZW4gZm9ybSBlbGVtZW50IGhhcyBjaGFu
Z2VkLiBUaGlzIGZ1bmN0aW9uCiAgICAgICAgIC8vIHdpbGwgYmUgY2FsbGVkIGZyZXF1ZW50bHks
IHNvIGhhbmRsaW5nIHNob3VsZCBiZSB2ZXJ5IGZhc3QuCiAgICAgICAgIHZvaWQgZm9ybVN0YXRl
RGlkQ2hhbmdlKGNvbnN0IE5vZGUqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZvcm1W
YWxpZGF0aW9uTWVzc2FnZShXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiwgY29uc3Qg
V2ViQ29yZTo6U3RyaW5nJik7CisgICAgICAgIHZpcnR1YWwgZG91YmxlIHZhbGlkYXRpb25NZXNz
YWdlVXBkYXRlSW50ZXJ2YWxTZWNvbmQoKSB7IHJldHVybiAwLjM7IC8qIEZJWE1FICovIH0KKyAg
ICAgICAgdmlydHVhbCBpbnQgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3VudChjb25zdCBTdHJp
bmcmKSB7IHJldHVybiAyMDsgLyogRklYTUUgKi8gfQorICAgICAgICB2aXJ0dWFsIGRvdWJsZSB2
YWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0U2Vjb25kKCkgeyByZXR1cm4gMC42OyAvKiBGSVhNRSAq
LyB9CiAKICAgICAgICAgUGFzc093blB0cjxIVE1MUGFyc2VyUXVpcmtzPiBjcmVhdGVIVE1MUGFy
c2VyUXVpcmtzKCk7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNzA2Njk4MmM4YWJiNmEzNzNlODVkZThlYzYyYmRl
YTdlY2Y5MTQyOS4uYzgwNTdmMDFiZDRiNTNhMzhmYzFiNThjZGMyN2U4Mzc0ZDU4MzJhYyAxMDA2
NDQKLS0tIGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNiBAQAorMjAxMC0wNC0wMSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RnJhbWV3b3JrIHRvIHNob3cgZm9ybSB2YWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGludmFsaWQgY29u
dHJvbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMx
NzE4CisKKyAgICAgICAgQWRkIHN0dWIgZnVuY3Rpb25zIGZvciB1cGRhdGVGb3JtVmFsaWRhdGlv
bk1lc3NhZ2UoKSwKKyAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRlcnZhbFNlY29u
ZCgpLAorICAgICAgICB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUNvdW50KCksIHZhbGlkYXRpb25N
ZXNzYWdlQmxhY2tvdXRTZWNvbmQoKSwgYW5kCisgICAgICAgIGEgaGVscGVyIGZvciBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoKS4K
KworICAgICAgICAqIE1pc2MvV2ViQ29yZVN0YXRpc3RpY3MuaDoKKyAgICAgICAgKiBNaXNjL1dl
YkNvcmVTdGF0aXN0aWNzLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSB2aXNpYmxlVmFsaWRhdGlv
bk1lc3NhZ2VGb3JFbGVtZW50QnlJZDpdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6dmFsaWRhdGlvbk1lc3Nh
Z2VVcGRhdGVJbnRlcnZhbFNlY29uZCk6CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OnZhbGlk
YXRpb25NZXNzYWdlVXBkYXRlQ291bnQpOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50Ojp2YWxp
ZGF0aW9uTWVzc2FnZUJsYWNrb3V0U2Vjb25kKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQubW06CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OnVwZGF0ZUZvcm1W
YWxpZGF0aW9uTWVzc2FnZSk6CisKKwogMjAxMC0wNi0wOSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQu
cmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjYwODg5LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLmgg
Yi9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MuaAppbmRleCBhMTFjMDY0NDhjOGM3
ZjVkYTgyYjBmMmVjNjY1ZTU1YmUyNTM4OWJjLi42YTlkZGEyN2FjYzMwNTFlMjZhMGRiZmY0MWUz
MjU1YzA5NzlhNjE4IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3Rp
Y3MuaAorKysgYi9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MuaApAQCAtODcsNCAr
ODcsNSBAQAogLSAoTlNTdHJpbmcgKiljb3VudGVyVmFsdWVGb3JFbGVtZW50OihET01FbGVtZW50
KillbGVtZW50OwogLSAoaW50KXBhZ2VOdW1iZXJGb3JFbGVtZW50OihET01FbGVtZW50KillbGVt
ZW50OihmbG9hdClwYWdlV2lkdGhJblBpeGVsczooZmxvYXQpcGFnZUhlaWdodEluUGl4ZWxzOwog
LSAoaW50KW51bWJlck9mUGFnZXM6KGZsb2F0KXBhZ2VXaWR0aEluUGl4ZWxzOihmbG9hdClwYWdl
SGVpZ2h0SW5QaXhlbHM7CistIChOU1N0cmluZyAqKXZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZv
ckVsZW1lbnRCeUlkOihOU1N0cmluZyAqKWVsZW1lbnRJZDsKIEBlbmQKZGlmZiAtLWdpdCBhL1dl
YktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbSBiL1dlYktpdC9tYWMvTWlzYy9XZWJD
b3JlU3RhdGlzdGljcy5tbQppbmRleCBjM2ZjMjNlY2Y0ODcxNzE1NDA1NzYxYjFjNGEwNGM1NGMz
OTRjMDU4Li4wNzA0MzY3YTIwN2Q2MmZhNDExZGM2MWQ5YzBkZDg2MjYzZWYwYTk3IDEwMDY0NAot
LS0gYS9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW0KKysrIGIvV2ViS2l0L21h
Yy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbXBvcnQg
IldlYkNvcmVTdGF0aXN0aWNzLmgiCiAKKyNpbXBvcnQgIkRPTURvY3VtZW50SW50ZXJuYWwuaCIK
ICNpbXBvcnQgIkRPTUVsZW1lbnRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViQ2FjaGUuaCIKICNp
bXBvcnQgIldlYkZyYW1lSW50ZXJuYWwuaCIKQEAgLTM3LDYgKzM4LDcgQEAKICNpbXBvcnQgPFdl
YkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvR0NDb250cm9sbGVyLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0dseXBoUGFnZVRyZWVOb2RlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSWNvbkRhdGFiYXNlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0pTRE9NV2luZG93Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2VDYWNoZS5o
PgpAQCAtMjc1LDQgKzI3NywxNSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICByZXR1
cm4gUHJpbnRDb250ZXh0OjpudW1iZXJPZlBhZ2VzKF9wcml2YXRlLT5jb3JlRnJhbWUsIEZsb2F0
U2l6ZShwYWdlV2lkdGhJblBpeGVscywgcGFnZUhlaWdodEluUGl4ZWxzKSk7CiB9CiAKKy0gKE5T
U3RyaW5nICopdmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQ6KE5TU3RyaW5n
ICopZWxlbWVudElkCit7CisgICAgRE9NRWxlbWVudCogZWxlbWVudCA9IFtbc2VsZiBET01Eb2N1
bWVudF0gZ2V0RWxlbWVudEJ5SWQ6ZWxlbWVudElkXTsKKyAgICBpZiAoIWVsZW1lbnQpCisgICAg
ICAgIHJldHVybiBuaWw7CisgICAgRWxlbWVudCogY29yZUVsZW1lbnQgPSBjb3JlKGVsZW1lbnQp
OworICAgIGlmICghY29yZUVsZW1lbnQtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpCisgICAgICAg
IHJldHVybiBuaWw7CisgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudCogZm9ybUNvbnRyb2wgPSBz
dGF0aWNfY2FzdDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Kj4oY29yZUVsZW1lbnQpOworICAgIHJl
dHVybiAoTlNTdHJpbmcqKWZvcm1Db250cm9sLT52aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKTsK
K30KIEBlbmQKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmggYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmlu
ZGV4IDdkZWVhNzlhMmJlOTUzOTllOGU4ZmViNjk0OTExMjlkM2ZkYWIzYTcuLjJmMDVjZTg1NDRi
MTE4N2E5ZjdiZmUwZTU2NzI1OGFlNTVhNmE3NDAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMTQ3LDYgKzE0NywxMCBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZm9ybURpZEZvY3VzKGNvbnN0IFdlYkNvcmU6Ok5vZGUqKTsKICAgICB2
aXJ0dWFsIHZvaWQgZm9ybURpZEJsdXIoY29uc3QgV2ViQ29yZTo6Tm9kZSopOworICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoV2ViQ29yZTo6SFRNTEZvcm1Db250
cm9sRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpOworICAgIHZpcnR1YWwgZG91Ymxl
IHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlSW50ZXJ2YWxTZWNvbmQoKSB7IHJldHVybiAwLjM7IC8q
IEZJWE1FICovIH0KKyAgICB2aXJ0dWFsIGludCB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUNvdW50
KGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpIHsgcmV0dXJuIDIwOyAvKiBGSVhNRSAqLyB9CisgICAg
dmlydHVhbCBkb3VibGUgdmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29uZCgpIHsgcmV0dXJu
IDAuNjsgLyogRklYTUUgKi8gfQogCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkNvcmU6OkhU
TUxQYXJzZXJRdWlya3M+IGNyZWF0ZUhUTUxQYXJzZXJRdWlya3MoKSB7IHJldHVybiAwOyB9CiAK
ZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1t
IGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KaW5kZXggMGE1
MmE5ZjcwN2RhYTBiMTdkYjQ2NDkwOTgwNjAwODgwZjkwMzIzMi4uOWE4ODc1YjY4M2U1ZDMzNmY1
N2U2MWJhODM0NmQ4OTk4YzA2MjU5MCAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQubW0KKysrIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQubW0KQEAgLTcwNSw2ICs3MDUsMTEgQEAgdm9pZCBXZWJDaHJvbWVDbGll
bnQ6OmZvcm1EaWRCbHVyKGNvbnN0IFdlYkNvcmU6Ok5vZGUqIG5vZGUpCiAgICAgQ2FsbFVJRGVs
ZWdhdGUobV93ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpmb3JtRGlkQmx1ck5vZGU6KSwga2l0
KGNvbnN0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KG5vZGUpKSk7CiB9CiAKK3ZvaWQgV2ViQ2hyb21l
Q2xpZW50Ojp1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoV2ViQ29yZTo6SFRNTEZvcm1Db250
cm9sRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpCit7CisgICAgLy8gRklYTUU6IElt
cGxlbWVudCB0aGlzLgorfQorCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCiB2
b2lkIFdlYkNocm9tZUNsaWVudDo6YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUqIGZyYW1l
LCBHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0No
YW5nZUxvZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggNWZhYzgxMzY1N2RmNmNkMzRhMzI5
YjIzODMyMDc0ZmQzMjhhNWVjOS4uMWI1ZTU4NTVmNDQzYzMzZWZiOTI5ZDdlNjNmODdmNjA4NGQx
ZTZhOSAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvcXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMDQtMDEgIEtlbnQgVGFtdXJhICA8dGtlbnRA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEZyYW1ld29yayB0byBzaG93IGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnZh
bGlkIGNvbnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zMTcxOAorCisgICAgICAgIEFkZCBzdHViIGZ1bmN0aW9ucyBmb3IgdXBkYXRlRm9ybVZh
bGlkYXRpb25NZXNzYWdlKCksCisgICAgICAgIHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlSW50ZXJ2
YWxTZWNvbmQoKSwKKyAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3VudCgpLCBhbmQK
KyAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29uZCgpLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hy
b21lQ2xpZW50UXQ6OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNs
aWVudFF0Ojp2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUludGVydmFsU2Vjb25kKToKKyAgICAgICAg
KFdlYkNvcmU6OkNocm9tZUNsaWVudFF0Ojp2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUNvdW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0Ojp2YWxpZGF0aW9uTWVzc2FnZUJsYWNr
b3V0U2Vjb25kKToKKwogMjAxMC0wNi0wOSAgQW5kZXJzIEJha2tlbiAgPGFnYmFra2VuQGdtYWls
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4K
ZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAg
Yi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCmluZGV4IGQ4Mzg5
YjU3NjQ5NTFjNGI3MDg1YTViM2I5M2NmZTBhM2FmZWIxOWIuLjY5ZDM1M2Y3NWU3OGQxZjZmNTNl
YmI5MTRhNzM5YzA5ZDY4ODViNzEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRRdC5jcHAKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudFF0LmNwcApAQCAtNTI4LDYgKzUyOCwxMSBAQCB2b2lkIENocm9tZUNsaWVudFF0Ojpj
aG9vc2VJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgRmlsZUNo
bwogICAgIGNob29zZXItPmljb25Mb2FkZWQoSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKGZpbGVu
YW1lcykpOwogfQogCit2b2lkIENocm9tZUNsaWVudFF0Ojp1cGRhdGVGb3JtVmFsaWRhdGlvbk1l
c3NhZ2UoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlN0
cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogYm9vbCBDaHJvbWVDbGllbnRR
dDo6c2V0Q3Vyc29yKFBsYXRmb3JtQ3Vyc29ySGFuZGxlKQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQu
aCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oCmluZGV4IDAzOTZh
ZWZkODcwNmU2MWQzNDY5YjBmNDAxNzRjOGRjOWYwYjQ4MWQuLmVmNTMwMDNiNTkxNjA4Y2UwNzBh
YTYwZmVhNWVkNDIwMTUzNDBmZDIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRRdC5oCisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRRdC5oCkBAIC0xNTcsNiArMTU3LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGNob29zZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYs
IEZpbGVDaG9vc2VyKik7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGZvcm1TdGF0ZURpZENoYW5n
ZShjb25zdCBOb2RlKikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGb3JtVmFsaWRh
dGlvbk1lc3NhZ2UoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudCosIGNvbnN0IFdlYkNv
cmU6OlN0cmluZyYpOworICAgICAgICB2aXJ0dWFsIGRvdWJsZSB2YWxpZGF0aW9uTWVzc2FnZVVw
ZGF0ZUludGVydmFsU2Vjb25kKCkgeyByZXR1cm4gMC4zOyAvKiBGSVhNRSAqLyB9CisgICAgICAg
IHZpcnR1YWwgaW50IHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlQ291bnQoY29uc3QgV2ViQ29yZTo6
U3RyaW5nJikgeyByZXR1cm4gMjA7IC8qIEZJWE1FICovIH0KKyAgICAgICAgdmlydHVhbCBkb3Vi
bGUgdmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29uZCgpIHsgcmV0dXJuIDAuNjsgLyogRklY
TUUgKi8gfQogCiAgICAgICAgIHZpcnR1YWwgUGFzc093blB0cjxIVE1MUGFyc2VyUXVpcmtzPiBj
cmVhdGVIVE1MUGFyc2VyUXVpcmtzKCkgeyByZXR1cm4gMDsgfQogCmRpZmYgLS1naXQgYS9XZWJL
aXQvd2luL0NoYW5nZUxvZyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDcwNGJjYjAyZGM5
NmRmNmE2ODYyMDk4MTM0MDg1OWYyMzMxZTRiY2UuLjZhZGZhZGM2Y2VkN2IxODUzM2I0MjY0OWUy
YTI3OGEyOTgwNDI2NTEgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1dl
YktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTAtMDQtMDEgIEtlbnQgVGFt
dXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEZyYW1ld29yayB0byBzaG93IGZvcm0gdmFsaWRhdGlvbiBtZXNz
YWdlIGZvciBpbnZhbGlkIGNvbnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zMTcxOAorCisgICAgICAgIC0gQWRkIHN0dWIgZnVuY3Rpb25zIGZv
ciB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoKSwKKyAgICAgICAgICB2YWxpZGF0aW9uTWVz
c2FnZVVwZGF0ZUludGVydmFsU2Vjb25kKCksCisgICAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VV
cGRhdGVDb3VudCgpLCBhbmQgdmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29uZCgpLgorICAg
ICAgICAtIEFkZCB2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZCgpIGZvciBM
YXlvdXRUZXN0Q29udHJvbGxlci4KKworICAgICAgICAqIEludGVyZmFjZXMvSVdlYkZyYW1lUHJp
dmF0ZS5pZGw6CisgICAgICAgICogSW50ZXJmYWNlcy9XZWJLaXQuaWRsOiBKdXN0IHRvdWNoLgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJDaHJvbWVDbGllbnQ6OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDaHJvbWVDbGll
bnQ6OnZhbGlkYXRpb25NZXNzYWdlVXBkYXRlQ291bnQpOgorICAgICAgICAoV2ViQ2hyb21lQ2xp
ZW50Ojp2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUludGVydmFsU2Vjb25kKToKKyAgICAgICAgKFdl
YkNocm9tZUNsaWVudDo6dmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29uZCk6CisgICAgICAg
ICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6OnZpc2libGVWYWxpZGF0aW9uTWVz
c2FnZUZvckVsZW1lbnRCeUlkKToKKyAgICAgICAgKiBXZWJGcmFtZS5oOgorCiAyMDEwLTA2LTA5
ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByNjA4ODkuCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL0lu
dGVyZmFjZXMvSVdlYkZyYW1lUHJpdmF0ZS5pZGwgYi9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdl
YkZyYW1lUHJpdmF0ZS5pZGwKaW5kZXggMWI3MjA5ZDAyN2IxYjUwZThjZWFhOTRkOWI5OTVlOTkx
M2U3NGJmMS4uZjFhNzg2YjFkY2Y4N2M4YTdiZjhmOTQxNWRlODhjNDI0MzVjMWZlYyAxMDA2NDQK
LS0tIGEvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJGcmFtZVByaXZhdGUuaWRsCisrKyBiL1dl
YktpdC93aW4vSW50ZXJmYWNlcy9JV2ViRnJhbWVQcml2YXRlLmlkbApAQCAtMTEwLDYgKzExMCw2
IEBAIGludGVyZmFjZSBJV2ViRnJhbWVQcml2YXRlIDogSVVua25vd24KICAgICBIUkVTVUxUIG51
bWJlck9mUGFnZXMoW2luXSBmbG9hdCBwYWdlV2lkdGhJblBpeGVscywgW2luXSBmbG9hdCBwYWdl
SGVpZ2h0SW5QaXhlbHMsIFtvdXQsIHJldHZhbF0gaW50KiBwYWdlTnVtYmVyKTsKIAogICAgIEhS
RVNVTFQgbGF5ZXJUcmVlQXNUZXh0KFtvdXQsIHJldHZhbF0gQlNUUiogcmVzdWx0KTsKLQorICAg
IEhSRVNVTFQgdmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoW2luXSBCU1RS
IGlkLCBbb3V0LCByZXR2YWxdIEJTVFIqIHJlc3VsdCk7CiAgICAgSFJFU1VMVCBwYWludFNjcm9s
bFZpZXdSZWN0VG9Db250ZXh0QXRQb2ludChbaW5dIFJFQ1QgcmVjdCwgW2luXSBQT0lOVCBwdCwg
W2luXSBPTEVfSEFORExFIGRldmljZUNvbnRleHQpOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dp
bi9JbnRlcmZhY2VzL1dlYktpdC5pZGwgYi9XZWJLaXQvd2luL0ludGVyZmFjZXMvV2ViS2l0Lmlk
bAppbmRleCBkMjVjZGZlYmZiNjhhOGNhNGI4NDE4MTk5NGRiYzIzMmVlYmM4ZGVhLi44NTNjYzJm
ZDI5MzRkMDNiYjdiOWU3OWNlNDM0NzI3YTA4N2E1MDIxIDEwMDY0NAotLS0gYS9XZWJLaXQvd2lu
L0ludGVyZmFjZXMvV2ViS2l0LmlkbAorKysgYi9XZWJLaXQvd2luL0ludGVyZmFjZXMvV2ViS2l0
LmlkbApAQCAtMzAwLDMgKzMwMCw0IEBAIGxpYnJhcnkgV2ViS2l0CiAgICAgICAgIFtkZWZhdWx0
XSBpbnRlcmZhY2UgSVdlYlVzZXJDb250ZW50VVJMUGF0dGVybjsKICAgICB9CiB9CisgCmRpZmYg
LS1naXQgYS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggNTg3NjM3
ZjE3ZWJlMWIyOGNlMDI5N2FjNTlhYmIwOGM4NGI4MmFmMy4uMDE4YzM5ZTc1Y2QzZjcwNGQ0MTc4
ZTUxNTlmNWVjNTkzZjdkYzZmMCAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcApAQCAtNDksNiArNDksNyBAQAogI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KICNlbmRpZgor
I2luY2x1ZGUgPFdlYkNvcmUvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvSFRNTE5hbWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JY29uLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CkBAIC03NzIsNiArNzczLDExIEBAIGJvb2wgV2Vi
Q2hyb21lQ2xpZW50OjpzZXRDdXJzb3IoUGxhdGZvcm1DdXJzb3JIYW5kbGUgY3Vyc29yKQogICAg
IHJldHVybiB0cnVlOwogfQogCit2b2lkIFdlYkNocm9tZUNsaWVudDo6dXBkYXRlRm9ybVZhbGlk
YXRpb25NZXNzYWdlKEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGNvbnRyb2wsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lkIFdlYkNocm9t
ZUNsaWVudDo6cmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKEZyYW1lKiBmcmFt
ZSwgR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uKQogewogICAgIENPTVB0cjxJV2ViVUlEZWxlZ2F0
ZT4gdWlEZWxlZ2F0ZTsKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmggYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCmluZGV4IDY5NTRmZGU2NzI5NjJhMmFhZDc4YzRmNmJhZTBkZGM5YmZlNTU3YmYuLjRmNDk3
ZDY0ZjdjNGY4OGZlOGNlNTI0NjgwMTUzYWMyMTJlYjNhMTAgMTAwNjQ0Ci0tLSBhL1dlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMzQsNiArMzQsMTAgQEAKIGNsYXNzIFdl
YlZpZXc7CiBjbGFzcyBXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlOwogCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CitjbGFzcyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OworfQorCiBpbnRlcmZh
Y2UgSVdlYlVJRGVsZWdhdGU7CiAKIGNsYXNzIFdlYkNocm9tZUNsaWVudCA6IHB1YmxpYyBXZWJD
b3JlOjpDaHJvbWVDbGllbnQgewpAQCAtMTMzLDYgKzEzNywxMCBAQCBwdWJsaWM6CiAgICAgV2Vi
Vmlldyogd2ViVmlldygpIGNvbnN0IHsgcmV0dXJuIG1fd2ViVmlldzsgfQogCiAgICAgdmlydHVh
bCB2b2lkIGZvcm1TdGF0ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpOb2RlKikgeyB9CisgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShXZWJDb3JlOjpIVE1MRm9y
bUNvbnRyb2xFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7CisgICAgdmlydHVhbCBp
bnQgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3VudChjb25zdCBXZWJDb3JlOjpTdHJpbmcmKSB7
IHJldHVybiAxMDsgfQorICAgIHZpcnR1YWwgZG91YmxlIHZhbGlkYXRpb25NZXNzYWdlVXBkYXRl
SW50ZXJ2YWxTZWNvbmQoKSB7IHJldHVybiAwLjU7IH0KKyAgICB2aXJ0dWFsIGRvdWJsZSB2YWxp
ZGF0aW9uTWVzc2FnZUJsYWNrb3V0U2Vjb25kKCkgeyByZXR1cm4gMC42OyB9CiAKICAgICB2aXJ0
dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6SFRNTFBhcnNlclF1aXJrcz4gY3JlYXRlSFRNTFBhcnNl
clF1aXJrcygpIHsgcmV0dXJuIDA7IH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJGcmFt
ZS5jcHAgYi9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAppbmRleCA3NWE5YzhkMjAzOTdhYTY0ZDZi
ZDZiNzM5YTk3Y2MwNDY1ZjU5ZjkxLi4wODI0N2FiMTE2YTI4MzViOGQ2OGQzYTk4ZDBkZWIxYjBi
OTJmYzAyIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAorKysgYi9XZWJLaXQv
d2luL1dlYkZyYW1lLmNwcApAQCAtMTAyNyw2ICsxMDI3LDIxIEBAIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgV2ViRnJhbWU6OmZldGNoQXBwbGljYXRpb25JY29uKAogICAgIHJldHVybiBTX09L
OwogfQogCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1lOjp2aXNpYmxlVmFsaWRh
dGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZChCU1RSIGlkLCBCU1RSKiByZXN1bHQpCit7CisgICAg
aWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgRnJhbWUqIGNvcmVG
cmFtZSA9IGNvcmUodGhpcyk7CisgICAgaWYgKCFjb3JlRnJhbWUpCisgICAgICAgIHJldHVybiBF
X0ZBSUw7CisgICAgRWxlbWVudCogZWxlbWVudCA9IGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+Z2V0
RWxlbWVudEJ5SWQoU3RyaW5nKGlkLCBTeXNTdHJpbmdMZW4oaWQpKSk7CisgICAgaWYgKCFlbGVt
ZW50IHx8ICFlbGVtZW50LT5pc0Zvcm1Db250cm9sRWxlbWVudCgpKQorICAgICAgICByZXR1cm4g
RV9GQUlMOworICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGZvcm1Db250cm9sID0gc3RhdGlj
X2Nhc3Q8SFRNTEZvcm1Db250cm9sRWxlbWVudCo+KGVsZW1lbnQpOworICAgICpyZXN1bHQgPSBC
U3RyaW5nKGZvcm1Db250cm9sLT52aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKSkucmVsZWFzZSgp
OworICAgIHJldHVybiBTX09LOworfQorCiAvLyBJV2ViRG9jdW1lbnRUZXh0IC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OnN1cHBvcnRzVGV4dEVuY29kaW5nKCAKZGlm
ZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViRnJhbWUuaCBiL1dlYktpdC93aW4vV2ViRnJhbWUuaApp
bmRleCBkODM5ZjE3YmVmOTg4NWI0ZGJiYjY4MTJlNzJjNjljNDYxYTBjMjAyLi42YWJiMWVjZDQ2
ZjNjZDQ5MGQ1MGE5MzBhMTkxODk3YzAyMWVkNWE4IDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dl
YkZyYW1lLmgKKysrIGIvV2ViS2l0L3dpbi9XZWJGcmFtZS5oCkBAIC0yNjksNiArMjY5LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgSlNHbG9iYWxDb250ZXh0UmVmIFNURE1FVEhPRENBTExUWVBF
IGdsb2JhbENvbnRleHRGb3JTY3JpcHRXb3JsZChJV2ViU2NyaXB0V29ybGQqKTsKIAogICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB2aXNpYmxlQ29udGVudFJlY3QoUkVDVCop
OworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB2aXNpYmxlVmFsaWRhdGlv
bk1lc3NhZ2VGb3JFbGVtZW50QnlJZChCU1RSIGlkLCBCU1RSKiByZXN1bHQpOwogCiAgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxheWVyVHJlZUFzVGV4dChCU1RSKik7CiAK
ZGlmZiAtLWdpdCBhL1dlYktpdC93eC9DaGFuZ2VMb2cgYi9XZWJLaXQvd3gvQ2hhbmdlTG9nCmlu
ZGV4IDYzYTNlZDA4MDEyOGRmY2VhOGU0MDQyODg3YjY0MmM1ZGQ0MmRlMDguLmU0ZmYxMzg2NmM1
MDJiYzc2ZTBmZGNmNjJiYTNiZDFiMTY2ZjUyMGMgMTAwNjQ0Ci0tLSBhL1dlYktpdC93eC9DaGFu
Z2VMb2cKKysrIGIvV2ViS2l0L3d4L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEwLTA0
LTAxICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGcmFtZXdvcmsgdG8gc2hvdyBmb3JtIHZh
bGlkYXRpb24gbWVzc2FnZSBmb3IgaW52YWxpZCBjb250cm9scworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE3MTgKKworICAgICAgICBBZGQgc3R1YiBm
dW5jdGlvbnMgZm9yIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSgpLAorICAgICAgICB2YWxp
ZGF0aW9uTWVzc2FnZVVwZGF0ZUludGVydmFsU2Vjb25kKCksCisgICAgICAgIHZhbGlkYXRpb25N
ZXNzYWdlVXBkYXRlQ291bnQoKSwgYW5kCisgICAgICAgIHZhbGlkYXRpb25NZXNzYWdlQmxhY2tv
dXRTZWNvbmQoKS4KKworICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50V3g6OnVwZGF0ZUZvcm1WYWxpZGF0aW9u
TWVzc2FnZSk6CisgICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50V3g6OnZhbGlkYXRpb25NZXNzYWdlVXBkYXRlSW50
ZXJ2YWxTZWNvbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50V3g6OnZhbGlkYXRp
b25NZXNzYWdlVXBkYXRlQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50V3g6
OnZhbGlkYXRpb25NZXNzYWdlQmxhY2tvdXRTZWNvbmQpOgorCiAyMDEwLTA2LTA5ICBTaGVyaWZm
IEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByNjA4ODkuCmRpZmYgLS1naXQgYS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9y
dC9DaHJvbWVDbGllbnRXeC5jcHAgYi9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGll
bnRXeC5jcHAKaW5kZXggYTE5NjQ0ZGJkODdkODNmMTRkMDJmNzBmMGYyODA5OTJhZGJjM2RmMS4u
ODc3ZjY2ZWQ5ZDk5NWU0YjIwY2IwYjIzMWUxYjkwZDdmMjc3YTc3MiAxMDA2NDQKLS0tIGEvV2Vi
S2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwCisrKyBiL1dlYktpdC93eC9X
ZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcApAQCAtNDQ3LDYgKzQ0NywxMSBAQCB2b2lk
IENocm9tZUNsaWVudFd4OjpjaG9vc2VJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGZpbGVuYW1lcywgRmlsZUNobwogICAgIGNob29zZXItPmljb25Mb2FkZWQoSWNvbjo6Y3JlYXRl
SWNvbkZvckZpbGVzKGZpbGVuYW1lcykpOwogfQogCit2b2lkIENocm9tZUNsaWVudFd4Ojp1cGRh
dGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudCos
IGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwog
Ym9vbCBDaHJvbWVDbGllbnRXeDo6c2V0Q3Vyc29yKFBsYXRmb3JtQ3Vyc29ySGFuZGxlKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9y
dC9DaHJvbWVDbGllbnRXeC5oIGIvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50
V3guaAppbmRleCBiOTAwZjNlZWVmNmU3ZDJlMGFjZDZiOWJlMDZmZGQzY2UxMTFmMTVhLi40Nzc4
MDlhZGY4ZjU1NmQ1ODg0N2UyZTI0YmRmOTJmOTg1N2NkNDQ3IDEwMDY0NAotLS0gYS9XZWJLaXQv
d3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5oCisrKyBiL1dlYktpdC93eC9XZWJLaXRT
dXBwb3J0L0Nocm9tZUNsaWVudFd4LmgKQEAgLTEzMSw2ICsxMzEsMTAgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBjaG9vc2VJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBG
aWxlQ2hvb3NlciopOwogCiAgICAgdmlydHVhbCB2b2lkIGZvcm1TdGF0ZURpZENoYW5nZShjb25z
dCBOb2RlKikgeyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2Fn
ZShXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6U3RyaW5n
Jik7CisgICAgdmlydHVhbCBkb3VibGUgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRlcnZhbFNl
Y29uZCgpIHsgcmV0dXJuIDAuMzsgLyogRklYTUUgKi8gfQorICAgIHZpcnR1YWwgaW50IHZhbGlk
YXRpb25NZXNzYWdlVXBkYXRlQ291bnQoY29uc3QgV2ViQ29yZTo6U3RyaW5nJikgeyByZXR1cm4g
MjA7IC8qIEZJWE1FICovIH0KKyAgICB2aXJ0dWFsIGRvdWJsZSB2YWxpZGF0aW9uTWVzc2FnZUJs
YWNrb3V0U2Vjb25kKCkgeyByZXR1cm4gMC42OyAvKiBGSVhNRSAqLyB9CiAKICAgICB2aXJ0dWFs
IFBhc3NPd25QdHI8SFRNTFBhcnNlclF1aXJrcz4gY3JlYXRlSFRNTFBhcnNlclF1aXJrcygpIHsg
cmV0dXJuIDA7IH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBiZDQ4ZjllNzg2MjgzMDM1MTk2MDRjNDUzNDU3ZjA4NzA4NjFkYzI1Li4x
NmE1N2ExZGQ3M2ZlMWExNzY3OGU1ZDg2YzI5NzI1OTVlOTEyMTQ3IDEwMDY0NAotLS0gYS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisy
MDEwLTA0LTAxICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGcmFtZXdvcmsgdG8gc2hvdyBm
b3JtIHZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW52YWxpZCBjb250cm9scworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE3MTgKKworICAgICAgICBBZGQg
c3R1YiBmdW5jdGlvbnMgZm9yIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSgpLAorICAgICAg
ICB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUludGVydmFsU2Vjb25kKCksCisgICAgICAgIHZhbGlk
YXRpb25NZXNzYWdlVXBkYXRlQ291bnQoKSwgYW5kCisgICAgICAgIHZhbGlkYXRpb25NZXNzYWdl
QmxhY2tvdXRTZWNvbmQoKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojp1
cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNs
aWVudDo6dmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRlcnZhbFNlY29uZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6dmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3VudCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6dmFsaWRhdGlvbk1lc3NhZ2VCbGFja291
dFNlY29uZCk6CisKIDIwMTAtMDYtMDkgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCBl
NDQzNTMwZGFhY2M1OGY1YzE4MjgxYzBhMWZmN2Y0MGU1NmNkMzQ2Li5hZjJhYTgxOWEwMGRmODBk
OWJmNzQxY2U2NjQ1OWYzNmQ4NGM0MzZhIDEwMDY0NAotLS0gYS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtNDMyLDYgKzQzMiwxMSBA
QCB2b2lkIFdlYkNocm9tZUNsaWVudDo6Zm9ybURpZEJsdXIoY29uc3QgTm9kZSopCiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBXZWJDaHJvbWVDbGllbnQ6OnVwZGF0ZUZvcm1WYWxp
ZGF0aW9uTWVzc2FnZShXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiwgY29uc3QgV2Vi
Q29yZTo6U3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiBQYXNzT3duUHRy
PEhUTUxQYXJzZXJRdWlya3M+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlSFRNTFBhcnNlclF1aXJr
cygpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBmZTVmMTRhNzViZDdkNjA2
YjU3YTNlZmRhMmEzMWQwYWIwZmQxZWQ0Li45MmZmMjU5NjFkYzI1YWRjNmE3ZjE1N2FiZjllYzQy
MzYwODE1MWYzIDEwMDY0NAotLS0gYS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oCkBAIC0xNTksNiArMTU5LDEwIEBAIHByaXZhdGU6CiAgICAgCiAg
ICAgdmlydHVhbCB2b2lkIGZvcm1EaWRGb2N1cyhjb25zdCBXZWJDb3JlOjpOb2RlKik7CiAgICAg
dmlydHVhbCB2b2lkIGZvcm1EaWRCbHVyKGNvbnN0IFdlYkNvcmU6Ok5vZGUqKTsKKyAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKFdlYkNvcmU6OkhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGRvdWJs
ZSB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUludGVydmFsU2Vjb25kKCkgeyByZXR1cm4gMC4zOyAv
KiBGSVhNRSAqLyB9CisgICAgdmlydHVhbCBpbnQgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3Vu
dChjb25zdCBXZWJDb3JlOjpTdHJpbmcmKSB7IHJldHVybiAyMDsgLyogRklYTUUgKi8gfQorICAg
IHZpcnR1YWwgZG91YmxlIHZhbGlkYXRpb25NZXNzYWdlQmxhY2tvdXRTZWNvbmQoKSB7IHJldHVy
biAwLjY7IC8qIEZJWE1FICovIH0KICAgICAKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29y
ZTo6SFRNTFBhcnNlclF1aXJrcz4gY3JlYXRlSFRNTFBhcnNlclF1aXJrcygpOwogCmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXgg
YjUyMDRmMmJmNzU5YTBjODIzOGRkZjc4NzA1NGJmZDM1NGZlNDcxNi4uMzEzZTliOTQwMmFkMDY5
YzA5Yjk1ZDkxMjdiNjY4MmE2MWQ0YWFmNCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEwLTA0
LTAxICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGcmFtZXdvcmsgdG8gc2hvdyBmb3JtIHZh
bGlkYXRpb24gbWVzc2FnZSBmb3IgaW52YWxpZCBjb250cm9scworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE3MTgKKworICAgICAgICBBZGQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKCku
CisgICAgICAgIFdpbmRvd3MgYW5kIE1hYyBoYXZlIHdvcmthYmxlIGltcGxlbWVudGF0aW9ucy4K
KworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKHZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkQ2FsbGJhY2spOgor
ICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAoTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlk
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMu
bW06CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6dmlzaWJsZVZhbGlkYXRpb25NZXNz
YWdlRm9yRWxlbWVudEJ5SWQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRU
ZXN0Q29udHJvbGxlcldpbi5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6dmlz
aWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwOgorICAgICAgICAoTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKToKKwog
MjAxMC0wNi0wOSAgT2phbiBWYWZhaSAgPG9qYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggYjk2YTljOWM1NmE0MzcxNTE3ZWZmN2U1
ZWIwOWUyZGI5MmE4MWZiOC4uYTljNjRmZTcwZmI3ZTkwMmRiZTU5NDViNDkyZWJmZWY4ZjY0NWRm
MSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcApAQCAtOTkzLDYgKzk5MywyMCBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRGcmFt
ZUZsYXR0ZW5pbmdFbmFibGVkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZQog
ICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3RhdGljIEpT
VmFsdWVSZWYgdmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWRDYWxsYmFjayhK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRo
aXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50
c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPCAx
KQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisgICAgSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGVsZW1lbnRJZChBZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29w
eShjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbikpOworICAgIEFTU0VSVCghKmV4Y2Vw
dGlvbik7CisKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19j
YXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3Qp
KTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gbWVzc2FnZShjb250cm9sbGVyLT52aXNp
YmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZChlbGVtZW50SWQuZ2V0KCkpKTsKKyAg
ICBpZiAoIW1lc3NhZ2UuZ2V0KCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5l
ZChjb250ZXh0KTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dCwgbWVzc2Fn
ZS5nZXQoKSk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIHNldEFsbG93VW5pdmVyc2FsQWNjZXNz
RnJvbUZpbGVVUkxzQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1
bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29u
c3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAg
IC8vIEhhcyBtYWMgJiB3aW5kb3dzIGltcGxlbWVudGF0aW9uCkBAIC0xNjY1LDYgKzE2NzksNyBA
QCBKU1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25z
KCkKICAgICAgICAgeyAic2hvd1dlYkluc3BlY3RvciIsIHNob3dXZWJJbnNwZWN0b3JDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAogICAgICAgICB7ICJ0ZXN0T25zY3JlZW4iLCB0ZXN0T25zY3JlZW5DYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAogICAgICAgICB7ICJ0ZXN0UmVwYWludCIsIHRlc3RSZXBhaW50Q2FsbGJhY2ss
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKKyAgICAgICAgeyAidmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5
SWQiLCB2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZENhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCiAgICAgICAgIHsgIndhaXRGb3JQb2xpY3lEZWxlZ2F0ZSIsIHdhaXRGb3JQb2xpY3lEZWxl
Z2F0ZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgIndhaXRVbnRpbERvbmUiLCB3YWl0VW50
aWxEb25lQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAid2luZG93Q291bnQiLCB3aW5kb3dD
b3VudENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCA4ZmYzOGQxMDkwMTBmNGU5NjgyZGEyYjg3ZThl
ZjE4NmM0MTFjMmE4Li4xMGY3YTRkNTY4Y2NmNWRhMzhhYTI1N2M2ZDNiY2Y3NWRhNWUwOWIyIDEw
MDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5oCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
LmgKQEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTcGF0aWFsTmF2aWdh
dGlvbkVuYWJsZWQoYm9vbCBlbmFibGUpOwogICAgIHZvaWQgc2V0U2Nyb2xsYmFyUG9saWN5KEpT
U3RyaW5nUmVmIG9yaWVudGF0aW9uLCBKU1N0cmluZ1JlZiBwb2xpY3kpOwogICAgIHZvaWQgc2V0
RWRpdGluZ0JlaGF2aW9yKGNvbnN0IGNoYXIqIGVkaXRpbmdCZWhhdmlvcik7Ci0KKyAgICBKU1N0
cmluZ1JlZiB2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZChKU1N0cmluZ1Jl
ZiBpZCk7CiAgICAgdm9pZCB3YWl0Rm9yUG9saWN5RGVsZWdhdGUoKTsKICAgICBzaXplX3Qgd2Vi
SGlzdG9yeUl0ZW1Db3VudCgpOwogICAgIHVuc2lnbmVkIHdvcmtlclRocmVhZENvdW50KCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVz
dENvbnRyb2xsZXJHdGsuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91
dFRlc3RDb250cm9sbGVyR3RrLmNwcAppbmRleCBlOGI4NjI3NTg1MmRjYjVjZTFkMTlkNmRhNWZi
YTUxYTAxNTQ5ZDYzLi44N2I1YTZmYmZiMjg4ZmUyNDJiYmZhNWEzZmE4YjYyMWVkNjcyOTBhIDEw
MDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRy
b2xsZXJHdGsuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRU
ZXN0Q29udHJvbGxlckd0ay5jcHAKQEAgLTY3Niw2ICs2NzYsMTIgQEAgdm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6YXBpVGVzdEdvVG9DdXJyZW50QmFja0ZvcndhcmRJdGVtKCkKIAogfQogCitK
U1N0cmluZ1JlZiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdl
Rm9yRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWQpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVu
dCB0aGlzLgorICAgIHJldHVybiAwOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpz
ZXRXZWJWaWV3RWRpdGFibGUoYm9vbCkKIHsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbSBiL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQppbmRleCBlYjAx
MDkwMDI2YjdmOWY2YWMzY2Y0M2JiNTZmMDNjZDI2MjczOWM4Li4zNTQyYjYyNDZjNjMyZjM2ZGQ4
NTQ5M2IwOWM4ZDllYTBjZjdkNzY1IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KKysrIGIvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCkBAIC03NTQsNiArNzU0
LDEyIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFwaVRlc3RHb1RvQ3VycmVudEJhY2tG
b3J3YXJkSXRlbSgpCiAgICAgW3ZpZXcgZ29Ub0JhY2tGb3J3YXJkSXRlbTpbW3ZpZXcgYmFja0Zv
cndhcmRMaXN0XSBjdXJyZW50SXRlbV1dOwogfQogCitKU1N0cmluZ1JlZiBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoSlNTdHJpbmdS
ZWYgaWQpCit7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBpZENGKEFkb3B0Q0YsIEpTU3Ry
aW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGlkKSk7CisgICAgcmV0dXJuIEpT
U3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmluZ1JlZilbbWFpbkZyYW1lIHZpc2libGVW
YWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkOihOU1N0cmluZyopaWRDRi5nZXQoKV0pOwor
fQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRXZWJWaWV3RWRpdGFibGUoYm9vbCBl
ZGl0YWJsZSkKIHsKICAgICBXZWJWaWV3ICp2aWV3ID0gW21haW5GcmFtZSB3ZWJWaWV3XTsKZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJv
bGxlcldpbi5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENv
bnRyb2xsZXJXaW4uY3BwCmluZGV4IGM3MGI1MTdmZWJmNzQwNmIxNTJmY2ZjYzQwNDQwNWI2NmY3
MDdkYmEuLjZlZTMwMWVlMzE2MDk1ZWY2ZDZlOWMxMzljMDhiODZkMTZmNmU2YzUgMTAwNjQ0Ci0t
LSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldp
bi5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250
cm9sbGVyV2luLmNwcApAQCAtMTI2MCw2ICsxMjYwLDE5IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OmFwaVRlc3RHb1RvQ3VycmVudEJhY2tGb3J3YXJkSXRlbSgpCiAgICAgd2ViVmlldy0+
Z29Ub0JhY2tGb3J3YXJkSXRlbShpdGVtLmdldCgpLCAmc3VjY2Vzcyk7CiB9CiAKK0pTU3RyaW5n
UmVmIExheW91dFRlc3RDb250cm9sbGVyOjp2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVt
ZW50QnlJZChKU1N0cmluZ1JlZiBpZCkKK3sKKyAgICBDT01QdHI8SVdlYkZyYW1lUHJpdmF0ZT4g
ZnJhbWVQcml2YXRlKFF1ZXJ5LCBmcmFtZSk7CisgICAgaWYgKCFmcmFtZVByaXZhdGUpCisgICAg
ICAgIHJldHVybiAwOworICAgIEJTVFIgbWVzc2FnZUJTVFI7CisgICAgaWYgKEZBSUxFRChmcmFt
ZVByaXZhdGUtPnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKGJzdHJUKGlk
KS5HZXRCU1RSKCksICZtZXNzYWdlQlNUUikpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBKU1N0
cmluZ1JlZiBtZXNzYWdlSlMgPSBKU1N0cmluZ0NyZWF0ZVdpdGhCU1RSKG1lc3NhZ2VCU1RSKTsK
KyAgICBTeXNGcmVlU3RyaW5nKG1lc3NhZ2VCU1RSKTsKKyAgICByZXR1cm4gbWVzc2FnZUpTOwor
fQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRXZWJWaWV3RWRpdGFibGUoYm9vbCkK
IHsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRl
c3RDb250cm9sbGVyV3guY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0
VGVzdENvbnRyb2xsZXJXeC5jcHAKaW5kZXggMjY1ODAyZDIxMDI2ZTE3Y2YzYWQ0YWU1NDc0Y2E1
ZTNhNmE3ZTU4Yi4uNzg4NjBjNjE4ZDE3YmM4OGYzNjEwYTg4NDE2M2QyMTFiNmM3ZTYxMSAxMDA2
NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xs
ZXJXeC5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENv
bnRyb2xsZXJXeC5jcHAKQEAgLTQxOSw2ICs0MTksMTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKGJvb2wpCiAKIH0KIAorSlNTdHJpbmdS
ZWYgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1l
bnRCeUlkKEpTU3RyaW5nUmVmIGlkKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4K
KyAgICByZXR1cm4gMDsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0V2ViVmll
d0VkaXRhYmxlKGJvb2wpCiB7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58375</attachid>
            <date>2010-06-10 08:52:15 -0700</date>
            <delta_ts>2010-10-13 02:54:41 -0700</delta_ts>
            <desc>Patch (rev.9)</desc>
            <filename>bug-31718-20100611005213.patch</filename>
            <type>text/plain</type>
            <size>60303</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmMzkyNGNlODQ0NWI1OWUxN2EzNGQwYTI3M2RjZTUzM2UwNzA1MmRhLi40NDFhMjYy
NzViZThjNDZmYjA3N2ZlMjVmZjIxM2E2ZTcyZTJlZWJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTAtMDQtMDEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyYW1ld29yayB0byBzaG93
IGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnZhbGlkIGNvbnRyb2xzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTcxOAorCisgICAgICAgIEFk
ZCBhIHRlc3QgdG8gY2hlY2sgYSB2aXNpYmxlIHZhbGlkYXRpb24gbWVzc2FnZS4KKyAgICAgICAg
VGhlIG1lc3NhZ2Ugc2hvdWxkIGJlIGF2YWlsYWJsZSBvbmx5IHdoZW4gdGhlIGNvbnRyb2wgaGFz
IGZvY3VzLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvdmlzaWJsZS12YWxp
ZGF0aW9uLW1lc3NhZ2UuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvdmlzaWJsZS12
YWxpZGF0aW9uLW1lc3NhZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zv
cm1zL3Zpc2libGUtdmFsaWRhdGlvbi1tZXNzYWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAorICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6CisKIDIwMTAtMDYt
MDkgIEFuZHJlaSBQb3Blc2N1ICA8YW5kcmVpcEBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Nj
cmlwdC10ZXN0cy92aXNpYmxlLXZhbGlkYXRpb24tbWVzc2FnZS5qcyBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvc2NyaXB0LXRlc3RzL3Zpc2libGUtdmFsaWRhdGlvbi1tZXNzYWdlLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjg5NDNkYTgyYzU0OTM2M2MxMGM3NDBiZTA2MTYwY2I1OTc1NTJmYTYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy92aXNpYmxlLXZh
bGlkYXRpb24tbWVzc2FnZS5qcwpAQCAtMCwwICsxLDM4IEBACitkZXNjcmlwdGlvbignVGVzdCBm
b3IgdmFsaWRhdGlvbiBtZXNzYWdlIHJlcXVlc3RzIGZyb20gYW4gSFRNTEZvcm1Db250cm9sRWxl
bWVudC4nKTsKKwordmFyIHBhcmVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwor
ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChwYXJlbnQpOworcGFyZW50LmlubmVySFRNTD0gJzxm
b3JtPicKKyAgICArICc8aW5wdXQgaWQ9aTEgbmFtZT1pMSByZXF1aXJlZD4nCisgICAgKyAnPC9m
b3JtPic7CisKK3ZhciBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpMScpOworZGVi
dWcoJ0ludmFsaWQgYW5kIG5vIGZvY3VzJyk7CitzaG91bGRCZUZhbHNlKCdpbnB1dC52YWxpZGl0
eS52YWxpZCcpOworc2hvdWxkQmVUcnVlKCdpbnB1dC52YWxpZGF0aW9uTWVzc2FnZS5sZW5ndGgg
PiAwJyk7CitzaG91bGRCZSgnbGF5b3V0VGVzdENvbnRyb2xsZXIudmlzaWJsZVZhbGlkYXRpb25N
ZXNzYWdlRm9yRWxlbWVudEJ5SWQoImkxIiknLCAnIiInKTsKKworZGVidWcoJ0ludmFsaWQgYW5k
IGZvY3VzZWQnKTsKK2lucHV0LmZvY3VzKCk7CitzaG91bGRCZSgnbGF5b3V0VGVzdENvbnRyb2xs
ZXIudmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoImkxIiknLCAnaW5wdXQu
dmFsaWRhdGlvbk1lc3NhZ2UnKTsKKworZGVidWcoJ0ludmFsaWQsIGZvY3VzZWQsIGFuZCB3aGl0
ZXNwYWNlLW9ubHkgY3VzdG9tIG1lc3NhZ2UnKTsKK2lucHV0LnNldEN1c3RvbVZhbGlkaXR5KCIg
ICAiKTsKK2lucHV0LmJsdXIoKTsKK2lucHV0LmZvY3VzKCk7CitzaG91bGRCZSgnbGF5b3V0VGVz
dENvbnRyb2xsZXIudmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoImkxIikn
LCAnIiInKTsKKworZGVidWcoJ0ludmFsaWQsIGZvY3VzZWQsIGFuZCB0aXRsZSBhdHRyaWJ1dGUn
KTsKK2lucHV0LnNldEN1c3RvbVZhbGlkaXR5KCIiKTsKK2lucHV0LnRpdGxlID0gJ1lvdSBuZWVk
IHRvIHNwZWNpZnkgYSB2YWx1ZS4nOworaW5wdXQuYmx1cigpOworaW5wdXQuZm9jdXMoKTsKK3No
b3VsZEJlKCdsYXlvdXRUZXN0Q29udHJvbGxlci52aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JF
bGVtZW50QnlJZCgiaTEiKScsICdpbnB1dC52YWxpZGF0aW9uTWVzc2FnZSArICJcXG4iICsgaW5w
dXQudGl0bGUnKTsKKworZGVidWcoJ0ludmFsaWQsIGZvY3VzZWQsIHRpdGxlIGF0dHJpYnV0ZSwg
YW5kIHdoaXRlc3BhY2Utb25seSBjdXN0b20gbWVzc2FnZScpOworaW5wdXQuc2V0Q3VzdG9tVmFs
aWRpdHkoIiAgICIpOworaW5wdXQuYmx1cigpOworaW5wdXQuZm9jdXMoKTsKK3Nob3VsZEJlKCds
YXlvdXRUZXN0Q29udHJvbGxlci52aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJ
ZCgiaTEiKScsICciIicpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdmlzaWJsZS12YWxpZGF0aW9uLW1lc3NhZ2Ut
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy92aXNpYmxlLXZhbGlkYXRpb24t
bWVzc2FnZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDNkZWIwNzMxYWRmMGUxZjc5Yzg2NGY2
MzEwMTUzZDdjMmRhN2JmYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvdmlzaWJsZS12YWxpZGF0aW9uLW1lc3NhZ2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjEg
QEAKK1Rlc3QgZm9yIHZhbGlkYXRpb24gbWVzc2FnZSByZXF1ZXN0cyBmcm9tIGFuIEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitJbnZhbGlk
IGFuZCBubyBmb2N1cworUEFTUyBpbnB1dC52YWxpZGl0eS52YWxpZCBpcyBmYWxzZQorUEFTUyBp
bnB1dC52YWxpZGF0aW9uTWVzc2FnZS5sZW5ndGggPiAwIGlzIHRydWUKK1BBU1MgbGF5b3V0VGVz
dENvbnRyb2xsZXIudmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoImkxIikg
aXMgIiIKK0ludmFsaWQgYW5kIGZvY3VzZWQKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIudmlz
aWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoImkxIikgaXMgaW5wdXQudmFsaWRh
dGlvbk1lc3NhZ2UKK0ludmFsaWQsIGZvY3VzZWQsIGFuZCB3aGl0ZXNwYWNlLW9ubHkgY3VzdG9t
IG1lc3NhZ2UKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIudmlzaWJsZVZhbGlkYXRpb25NZXNz
YWdlRm9yRWxlbWVudEJ5SWQoImkxIikgaXMgIiIKK0ludmFsaWQsIGZvY3VzZWQsIGFuZCB0aXRs
ZSBhdHRyaWJ1dGUKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIudmlzaWJsZVZhbGlkYXRpb25N
ZXNzYWdlRm9yRWxlbWVudEJ5SWQoImkxIikgaXMgaW5wdXQudmFsaWRhdGlvbk1lc3NhZ2UgKyAi
XG4iICsgaW5wdXQudGl0bGUKK0ludmFsaWQsIGZvY3VzZWQsIHRpdGxlIGF0dHJpYnV0ZSwgYW5k
IHdoaXRlc3BhY2Utb25seSBjdXN0b20gbWVzc2FnZQorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxl
ci52aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZCgiaTEiKSBpcyAiIgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdmlzaWJsZS12YWxpZGF0aW9uLW1lc3NhZ2UuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdmlzaWJsZS12YWxpZGF0aW9uLW1lc3NhZ2UuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40YjkyODI1MmM5NjNjM2U2ZTJkMWMzN2NkYTM2NTMyMTA5OWJhZDYzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy92aXNpYmxlLXZhbGlkYXRp
b24tbWVzc2FnZS5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3Zpc2libGUtdmFs
aWRhdGlvbi1tZXNzYWdlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlv
bnMudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMu
dHh0CmluZGV4IDI1YTZjZjllMGZlY2I5ZDhlNTZiMTI2YjAwZDI3NDNiZTI1YzQ2N2MuLjk4Mzg0
YzA1MDA2OWRjM2Y2MzFiN2MyZjllNzc1ODRmMDE5NGZjOWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAgLTY2Myw2ICs2
NjMsOSBAQCBCVUcyNDE5NyBTS0lQIDogZmFzdC9jc3MvZGlzYWJsZWQtYXV0aG9yLXN0eWxlcy5o
dG1sID0gRkFJTAogLy8gbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0RG9tYWluUmVsYXhhdGlvbkZv
cmJpZGRlbkZvclVSTFNjaGVtZSgpCiBCVUczMjY3NCBXSU4gTElOVVggTUFDIDogaHR0cC90ZXN0
cy9zZWN1cml0eS9zZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lLmh0bWwg
PSBURVhUCiAKKy8vIE5lZWQgbGF5b3V0VGVzdENvbnRyb2xsZXIudmlzaWJsZVZhbGlkYXRpb25N
ZXNzYWdlRm9yRWxlbWVudEJ5SWQoKQorQlVHV0szMTcxOCA6IGZhc3QvZm9ybXMvdmlzaWJsZS12
YWxpZGF0aW9uLW1lc3NhZ2UuaHRtbCA9IFRFWFQKKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIE90aGVyCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAppbmRleCBiMGExYWZkYTRmMzRlM2E5
MDlkNWY4ZDAxMmFlZjQzM2Q3MGQ0M2VhLi45MDU0MjQ4YTQ5YjA2Mzk4NTI2MGFhMzY2M2QyY2Rl
YzA2MzVkYTQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZApAQCAtNTkzMSwzICs1OTMxLDYg
QEAgZmFzdC9mb3Jtcy9zbGlkZXItdHJhbnNmb3JtZWQuaHRtbAogIyBvZiB0aGUgc2xpZGVyIHRo
dW1iIGluIEdUSysgdGhlbWVzLgogZmFzdC9mb3Jtcy9zbGlkZXItbW91c2UtZXZlbnRzLmh0bWwK
IGZhc3QvZm9ybXMvc2xpZGVyLXpvb21lZC5odG1sCisKKyMgTWlzc2luZyBsYXlvdXRUZXN0Q29u
dHJvbGxlci52aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZAorZmFzdC9mb3Jt
cy92aXNpYmxlLXZhbGlkYXRpb24tbWVzc2FnZS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZApp
bmRleCAzMDBiOWQyNWNlODEwYjdiM2JiOWVhYWIwNGU3ZGYzY2JiMDAyNTg0Li4xYjI1OTFjMWJj
MjUxYjViMzk2Nzk5NWM5MWRhMmY2YWRlZTYyNWViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9xdC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQK
QEAgLTg4MSw2ICs4ODEsOSBAQCBmYXN0L3J1YnkvcnVieURPTS1yZW1vdmUtcnQyLmh0bWwKIGZh
c3QvcnVieS9ydWJ5RE9NLXJlbW92ZS10ZXh0MS5odG1sCiBmYXN0L3J1YnkvcnVieURPTS1yZW1v
dmUtdGV4dDIuaHRtbAogCisjIE1pc3NpbmcgbGF5b3V0VGVzdENvbnRyb2xsZXIudmlzaWJsZVZh
bGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQKK2Zhc3QvZm9ybXMvdmlzaWJsZS12YWxpZGF0
aW9uLW1lc3NhZ2UuaHRtbAorCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICMKICMgLS0tLS0tLSBm
YWlsaW5nIGVkaXRpbmcvaW5wdXQgdGVzdHMKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4YWM3
YTQxOWI0NzZlNTM4ZWY1M2JmMWIzYzI4NDk2MmQxNjg5YmI3Li44MmU4ODYxNzhiYzJiMTJhNTEy
YjkzMjY3NTRlYWQzNmJlMDRhODVlIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEwLTA0LTAxICBLZW50IFRh
bXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBGcmFtZXdvcmsgdG8gc2hvdyBmb3JtIHZhbGlkYXRpb24gbWVz
c2FnZSBmb3IgaW52YWxpZCBjb250cm9scworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzE3MTgKKworICAgICAgICBBbiBIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50IGNhbGxzIENocm9tZTo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKCkKKyAgICAgICAg
d2hlbiBpdCBnZXRzIGZvY3VzIGFuZCBsb29zZXMgZm9jdXMuIENocm9tZTo6dXBkYXRlRm9ybVZh
bGlkYXRpb25NZXNzYWdlKCkKKyAgICAgICAgbWFuYWdlcyByZXF1ZXN0cyBmcm9tIG11bHRpcGxl
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQgaW5zdGFuY2VzOgorICAgICAgICAtIFBlcmlvZGljYWxs
eSBjYWxscyBDaHJvbWVDbGllbnQ6OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSgpCisgICAg
ICAgICAgdG8gZm9sbG93IGVsZW1lbnQgcG9zaXRpb24gY2hhbmdlLgorICAgICAgICAtIElmIGEg
bWVzc2FnZSBpcyBzaG93biBmb3IgYSBjb250cm9sIGFuZCB0aGUgZm9jdXMgaXMgY2hhbmdlZCB0
bworICAgICAgICAgIGFub3RoZXIgaW52YWxpZCBjb250cm9sLCBoaWRlIHRoZSBjdXJyZW50IG1l
c3NhZ2UsIHdhaXQgYSBsaXR0bGUsCisgICAgICAgICAgdGhlbiBzaG93IGEgbWVzc2FnZSBmb3Ig
YW5vdGhlciBjb250cm9sLgorICAgICAgICAtIElmIGEgbWVzc2FnZSBmb3IgYSBjb250cm9sIGlz
IHNob3duIGFuZCBhbm90aGVyIG1lc3NhZ2UgZm9yIHRoZQorICAgICAgICAgIGNvbnRyb2wgaXMg
cmVxdWVzdGVkLCBoaWRlIHRoZSBjdXJyZW50IG1lc3NhZ2UsIHdhaXQgYSBsaXR0bGUsCisgICAg
ICAgICAgdGhlbiBzaG93IHRoZSBuZXcgbWVzc2FnZS4KKworICAgICAgICBUZXN0OiBmYXN0L2Zv
cm1zL3Zpc2libGUtdmFsaWRhdGlvbi1tZXNzYWdlLmh0bWwKKworICAgICAgICAqIGh0bWwvSFRN
TEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRy
b2xFbGVtZW50OjpkZXRhY2gpOgorICAgICAgICAgIEFkZCBhIGNhbGwgdG8gdXBkYXRlVmlzaWJs
ZVZhbGlkYXRpb25NZXNzYWdlKCkuCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xF
bGVtZW50OjpzZXROZWVkc1dpbGxWYWxpZGF0ZUNoZWNrKTogZGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp1cGRhdGVWaXNpYmxlVmFsaWRhdGlvbk1lc3Nh
Z2UpOgorICAgICAgICAgIEFkZGVkLiBDYWxscyBDaHJvbWU6OnVwZGF0ZUZvcm1WYWxpZGF0aW9u
TWVzc2FnZSgpIGlmIHRoZSBzdGF0dXMKKyAgICAgICAgICBpcyBjaGFuZ2VkLgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0TmVlZHNWYWxpZGl0eUNoZWNrKToK
KyAgICAgICAgICBBZGQgYSBjYWxsIHRvIHVwZGF0ZVZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSgp
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlzcGF0Y2hGb2N1
c0V2ZW50KTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50
OjpkaXNwYXRjaEJsdXJFdmVudCk6IGRpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250
cm9sRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6
dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgICBBZGRlZCB0aGUgZGVjbGFyYXRp
b24uCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6
RW1wdHlDaHJvbWVDbGllbnQ6OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAg
IChXZWJDb3JlOjpFbXB0eUNocm9tZUNsaWVudDo6dmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRl
cnZhbFNlY29uZCk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUNocm9tZUNsaWVudDo6dmFsaWRh
dGlvbk1lc3NhZ2VVcGRhdGVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUNocm9tZUNs
aWVudDo6dmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29uZCk6CisgICAgICAgICAgQWRkZWQg
YXMgbW9ja3MuCisgICAgICAgICogcGFnZS9DaHJvbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2hyb21lOjp1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UpOiBTZWUgYWJvdmUuCisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWU6OnN0YXJ0VmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dCk6CisgICAg
ICAgICAgQSBoZWxwZXIgZm9yIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSgpLgorICAgICAg
ICAoV2ViQ29yZTo6Q2hyb21lOjp2YWxpZGF0aW9uTWVzc2FnZVRpbWVyRmlyZWQpOgorICAgICAg
ICAgIEEgaGVscGVyIGZvciB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoKS4KKyAgICAgICAg
KiBwYWdlL0Nocm9tZS5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisKIDIwMTAt
MDYtMTAgIEp1bmdzaGlrIFNoaW4gIDxqc2hpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgS2VudCBUYW11cmEKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNv
bnRyb2xFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNw
cAppbmRleCBmYTVkOTU3YTA1ZDlhOTQ3NjIwZjQ4ODlhNDE2MjZmMzMyZTI1ZjNkLi5jODdiYmI0
OThjYzI0ODU2MjY3ZDdmYmJjZjk5NzE5MTNhNmE0NDY2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuY3BwCkBAIC03Niw2ICs3NiwxMiBAQCBIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50Ojp+SFRNTEZvcm1Db250cm9sRWxlbWVudCgpCiAgICAgICAgIG1fZm9ybS0+cmVtb3ZlRm9y
bUVsZW1lbnQodGhpcyk7CiB9CiAKK3ZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGV0YWNo
KCkKK3sKKyAgICBIVE1MRWxlbWVudDo6ZGV0YWNoKCk7CisgICAgdXBkYXRlVmlzaWJsZVZhbGlk
YXRpb25NZXNzYWdlKCk7Cit9CisKIGJvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6Zm9ybU5v
VmFsaWRhdGUoKSBjb25zdAogewogICAgIHJldHVybiAhZ2V0QXR0cmlidXRlKGZvcm1ub3ZhbGlk
YXRlQXR0cikuaXNOdWxsKCk7CkBAIC0zMjUsNyArMzMxLDcgQEAgdm9pZCBIVE1MRm9ybUNvbnRy
b2xFbGVtZW50OjpzZXROZWVkc1dpbGxWYWxpZGF0ZUNoZWNrKCkKICAgICBtX3dpbGxWYWxpZGF0
ZUluaXRpYWxpemVkID0gdHJ1ZTsKICAgICBtX3dpbGxWYWxpZGF0ZSA9IG5ld1dpbGxWYWxpZGF0
ZTsKICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7Ci0gICAgLy8gRklYTUU6IFNob3cvaGlkZSBh
IHZhbGlkYXRpb24gbWVzc2FnZS4KKyAgICB1cGRhdGVWaXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2Uo
KTsKIH0KIAogU3RyaW5nIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnZhbGlkYXRpb25NZXNzYWdl
KCkKQEAgLTMzMyw2ICszMzksMjggQEAgU3RyaW5nIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnZh
bGlkYXRpb25NZXNzYWdlKCkKICAgICByZXR1cm4gdmFsaWRpdHkoKS0+dmFsaWRhdGlvbk1lc3Nh
Z2UoKTsKIH0KIAordm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp1cGRhdGVWaXNpYmxlVmFs
aWRhdGlvbk1lc3NhZ2UoKQoreworICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5wYWdlKCk7
CisgICAgU3RyaW5nIG1lc3NhZ2U7CisgICAgLy8gV2UgY2FuJ3QgdXNlIGZvY3VzZWQoKS4gVGhl
IGZvY3VzZWQoKSBzdGF0ZSBpcyB1cGRhdGVkIGFmdGVyIGRpc3BhdGNoRm9jdXNFdmVudCgpLgor
ICAgIGlmIChwYWdlICYmIGRvY3VtZW50KCktPmZvY3VzZWROb2RlKCkgPT0gdGhpcyAmJiByZW5k
ZXJlcigpICYmIHdpbGxWYWxpZGF0ZSgpKSB7CisgICAgICAgIG1lc3NhZ2UgPSB2YWxpZGF0aW9u
TWVzc2FnZSgpLnN0cmlwV2hpdGVTcGFjZSgpOworICAgICAgICAvLyBIVE1MNSBzcGVjaWZpY2F0
aW9uIGRvZXNuJ3QgYXNrIFVBIHRvIHNob3cgdGhlIHRpdGxlIGF0dHJpYnV0ZSB2YWx1ZQorICAg
ICAgICAvLyB3aXRoIHRoZSB2YWxpZGF0aW9uTWVzc2FnZS4gIEhvd2V2ZXIsIHRoaXMgYmVoYXZp
b3IgaXMgc2FtZSBhcyBPcGVyYQorICAgICAgICAvLyBhbmQgdGhlIHNwZWNpZmljYXRpb24gZGVz
Y3JpYmVzIHN1Y2ggYmVoYXZpb3IgYXMgYW4gZXhhbXBsZS4KKyAgICAgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiB0aXRsZSA9IGdldEF0dHJpYnV0ZSh0aXRsZUF0dHIpOworICAgICAgICBpZiAoIW1l
c3NhZ2UuaXNFbXB0eSgpICYmICF0aXRsZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIG1lc3Nh
Z2UuYXBwZW5kKCdcbicpOworICAgICAgICAgICAgbWVzc2FnZS5hcHBlbmQodGl0bGUpOworICAg
ICAgICB9CisgICAgfQorICAgIGlmIChtX3Zpc2libGVWYWxpZGF0aW9uTWVzc2FnZSA9PSBtZXNz
YWdlKQorICAgICAgICByZXR1cm47CisgICAgcGFnZS0+Y2hyb21lKCktPnVwZGF0ZUZvcm1WYWxp
ZGF0aW9uTWVzc2FnZSh0aGlzLCBtZXNzYWdlKTsKKyAgICBtX3Zpc2libGVWYWxpZGF0aW9uTWVz
c2FnZSA9IG1lc3NhZ2U7Cit9CisKIGJvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6Y2hlY2tW
YWxpZGl0eShWZWN0b3I8UmVmUHRyPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+ID4qIHVuaGFuZGxl
ZEludmFsaWRDb250cm9scykKIHsKICAgICBpZiAoIXdpbGxWYWxpZGF0ZSgpIHx8IGlzVmFsaWRG
b3JtQ29udHJvbEVsZW1lbnQoKSkKQEAgLTM2Miw3ICszOTAsOSBAQCB2b2lkIEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQ6OnNldE5lZWRzVmFsaWRpdHlDaGVjaygpCiAgICAgICAgIHNldE5lZWRzU3R5
bGVSZWNhbGMoKTsKICAgICB9CiAgICAgbV9pc1ZhbGlkID0gbmV3SXNWYWxpZDsKLSAgICAvLyBG
SVhNRTogc2hvdy9oaWRlIGEgdmFsaWRhdGlvbiBtZXNzYWdlLgorICAgIC8vIENhbGxzIGl0IGV2
ZW4gaWYgbV9pc1ZhbGlkIGlzIG5vdCBjaGFuZ2VkCisgICAgLy8gYmVjYXVzZSBhIHZhbGlkYXRp
b24gbWVzc2FnZSBjYW4gYmUgY2hhZ25lZC4KKyAgICB1cGRhdGVWaXNpYmxlVmFsaWRhdGlvbk1l
c3NhZ2UoKTsKIH0KIAogdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpzZXRDdXN0b21WYWxp
ZGl0eShjb25zdCBTdHJpbmcmIGVycm9yKQpAQCAtMzc2LDYgKzQwNiw3IEBAIHZvaWQgSFRNTEZv
cm1Db250cm9sRWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KCkKICAgICAgICAgZG9jdW1lbnQo
KS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPmZvcm1EaWRGb2N1cyh0aGlzKTsKIAogICAg
IEhUTUxFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZlbnQoKTsKKyAgICB1cGRhdGVWaXNpYmxlVmFs
aWRhdGlvbk1lc3NhZ2UoKTsKIH0KIAogdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkaXNw
YXRjaEJsdXJFdmVudCgpCkBAIC0zODQsNiArNDE1LDcgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xF
bGVtZW50OjpkaXNwYXRjaEJsdXJFdmVudCgpCiAgICAgICAgIGRvY3VtZW50KCktPnBhZ2UoKS0+
Y2hyb21lKCktPmNsaWVudCgpLT5mb3JtRGlkQmx1cih0aGlzKTsKIAogICAgIEhUTUxFbGVtZW50
OjpkaXNwYXRjaEJsdXJFdmVudCgpOworICAgIHVwZGF0ZVZpc2libGVWYWxpZGF0aW9uTWVzc2Fn
ZSgpOwogfQogCiBIVE1MRm9ybUVsZW1lbnQqIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnZpcnR1
YWxGb3JtKCkgY29uc3QKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCmluZGV4IGI5
NjAzODEyZGY1OTNkNzY3NjJkYmRlYTE4NmVlZTk0MTA4YWQyNjcuLjFhNzAyZjU5NmFkYTUwMjUy
YzdhYzljOTRmMDFjM2E2YjYwOWU5MTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1l
bnQuaApAQCAtODgsNiArODgsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFZh
bGlkYXRlKCkgY29uc3Q7CiAgICAgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlKCk7CisgICAgLy8g
Rm9yIHRlc3RpbmcuCisgICAgU3RyaW5nIHZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSgpIHsgcmV0
dXJuIG1fdmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlOyB9CiAgICAgYm9vbCBjaGVja1ZhbGlkaXR5
KFZlY3RvcjxSZWZQdHI8SFRNTEZvcm1Db250cm9sRWxlbWVudD4gPiogdW5oYW5kbGVkSW52YWxp
ZENvbnRyb2xzID0gMCk7CiAgICAgLy8gVGhpcyBtdXN0IGJlIGNhbGxlZCB3aGVuIGEgdmFsaWRh
dGlvbiBjb25zdHJhaW50IG9yIGNvbnRyb2wgdmFsdWUgaXMgY2hhbmdlZC4KICAgICB2b2lkIHNl
dE5lZWRzVmFsaWRpdHlDaGVjaygpOwpAQCAtMTE4LDYgKzEyMCw3IEBAIHByb3RlY3RlZDoKIAog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEZvY3VzRXZlbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hCbHVyRXZlbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CiAKICAgICB2
b2lkIHJlbW92ZUZyb21Gb3JtKCk7CiAgICAgLy8gVGhpcyBtdXN0IGJlIGNhbGxlZCBhbnkgdGlt
ZSB0aGUgcmVzdWx0IG9mIHdpbGxWYWxpZGF0ZSgpIGhhcyBjaGFuZ2VkLgpAQCAtMTQwLDkgKzE0
MywxMSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgSFRNTEZvcm1FbGVtZW50KiB2aXJ0dWFsRm9y
bSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0RlZmF1bHRCdXR0b25Gb3JGb3JtKCkgY29u
c3Q7CiAgICAgdmlydHVhbCBib29sIGlzVmFsaWRGb3JtQ29udHJvbEVsZW1lbnQoKTsKKyAgICB2
b2lkIHVwZGF0ZVZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSgpOwogCiAgICAgSFRNTEZvcm1FbGVt
ZW50KiBtX2Zvcm07CiAgICAgT3duUHRyPFZhbGlkaXR5U3RhdGU+IG1fdmFsaWRpdHlTdGF0ZTsK
KyAgICBTdHJpbmcgbV92aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2U7CiAgICAgYm9vbCBtX2Rpc2Fi
bGVkIDogMTsKICAgICBib29sIG1fcmVhZE9ubHkgOiAxOwogICAgIGJvb2wgbV9yZXF1aXJlZCA6
IDE7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1dlYkNvcmUv
bG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IGM2MzA5MzE2ODNlM2YzMzYxOGU3NzJhMzA1YmIz
YmQ2MjA2OGQyYTkuLjFjNmU0NmY3YmI2M2RhZWQxZWI1Y2EyMDdlYmQ3ZTc0MjY4YzIxMWQgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCisrKyBiL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC0xNTAsNiArMTUwLDEwIEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgdm9pZCBmb3JtRGlkRm9jdXMoY29uc3QgTm9kZSopIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBmb3JtRGlkQmx1cihjb25zdCBOb2RlKikgeyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZv
cm1WYWxpZGF0aW9uTWVzc2FnZShIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiwgY29uc3QgU3RyaW5n
Jikge30KKyAgICB2aXJ0dWFsIGRvdWJsZSB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUludGVydmFs
U2Vjb25kKCkgeyByZXR1cm4gMTsgfQorICAgIHZpcnR1YWwgaW50IHZhbGlkYXRpb25NZXNzYWdl
VXBkYXRlQ291bnQoY29uc3QgU3RyaW5nJikgeyByZXR1cm4gMTsgfQorICAgIHZpcnR1YWwgZG91
YmxlIHZhbGlkYXRpb25NZXNzYWdlQmxhY2tvdXRTZWNvbmQoKSB7IHJldHVybiAxOyB9CiAKICAg
ICB2aXJ0dWFsIFBhc3NPd25QdHI8SFRNTFBhcnNlclF1aXJrcz4gY3JlYXRlSFRNTFBhcnNlclF1
aXJrcygpIHsgcmV0dXJuIDA7IH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0Nocm9tZS5j
cHAgYi9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCAwMTI0MjExY2FkMmI5ZWUwMjk0MzRk
NTUwZDJlNDY3MzA1Zjc0NDdlLi40YWQwZTFhOTNlMjVmZmIyYzJiOTBlMWVjMzM4ODY2MGI3NDFk
M2IyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAorKysgYi9XZWJDb3JlL3Bh
Z2UvQ2hyb21lLmNwcApAQCAtNDExLDYgKzQxMSw3OCBAQCB2b2lkIENocm9tZTo6c2V0VG9vbFRp
cChjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQpCiAgICAgbV9jbGllbnQtPnNldFRvb2xUaXAo
dG9vbFRpcCwgdG9vbFRpcERpcmVjdGlvbik7CiB9CiAKK3ZvaWQgQ2hyb21lOjp1cGRhdGVGb3Jt
VmFsaWRhdGlvbk1lc3NhZ2UoSFRNTEZvcm1Db250cm9sRWxlbWVudCogY29udHJvbCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQoreworICAgIEFTU0VSVChjb250cm9sKTsKKyAgICBpZiAoIW1fdmFs
aWRhdGlvbk1lc3NhZ2VUaW1lcikKKyAgICAgICAgbV92YWxpZGF0aW9uTWVzc2FnZVRpbWVyLnNl
dChuZXcgVGltZXI8Q2hyb21lPih0aGlzLCAmQ2hyb21lOjp2YWxpZGF0aW9uTWVzc2FnZVRpbWVy
RmlyZWQpKTsKKworICAgIGlmIChtZXNzYWdlLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAobV92
YWxpZGF0aW9uTWVzc2FnZVRhcmdldCAhPSBjb250cm9sKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBtX3ZhbGlkYXRpb25NZXNzYWdlVGltZXItPnN0b3AoKTsKKyAgICAgICAgbV9jbGll
bnQtPnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShjb250cm9sLCBtZXNzYWdlKTsKKyAgICAg
ICAgbV92YWxpZGF0aW9uTWVzc2FnZSA9IG1lc3NhZ2U7CisgICAgICAgIG1fdmFsaWRhdGlvbk1l
c3NhZ2VUYXJnZXQuY2xlYXIoKTsKKyAgICAgICAgLy8gU3RhcnQgdGhlIHRpbWVyIHRvIG1ha2Ug
YSBibGFja291dCBwZXJpb2QuIERvIG5vdCB1c2Ugc3RhcnRPbmVTaG9ydCgpCisgICAgICAgIC8v
IGluIG9yZGVyIHRvIHJldXNlIHRoaXMgZm9yIHRoZSBuZXh0IG1lc3NhZ2UuCisgICAgICAgIHN0
YXJ0VmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dCgpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgYm9vbCB3YXNWaXNpYmxlID0gIW1fdmFsaWRhdGlvbk1lc3NhZ2UuaXNFbXB0eSgpOwor
ICAgIFJlZlB0cjxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PiBsYXN0VGFyZ2V0KG1fdmFsaWRhdGlv
bk1lc3NhZ2VUYXJnZXQpOworICAgIGJvb2wgcmVzZXRUaW1lciA9ICF3YXNWaXNpYmxlIHx8IG1f
dmFsaWRhdGlvbk1lc3NhZ2VUYXJnZXQgIT0gY29udHJvbCB8fCBtX3ZhbGlkYXRpb25NZXNzYWdl
ICE9IG1lc3NhZ2U7CisgICAgbV92YWxpZGF0aW9uTWVzc2FnZSA9IG1lc3NhZ2U7CisgICAgbV92
YWxpZGF0aW9uTWVzc2FnZVRhcmdldCA9IGNvbnRyb2w7CisgICAgaWYgKCFyZXNldFRpbWVyKSB7
CisgICAgICAgIG1fY2xpZW50LT51cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UobV92YWxpZGF0
aW9uTWVzc2FnZVRhcmdldC5nZXQoKSwgbV92YWxpZGF0aW9uTWVzc2FnZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgaWYgKHdhc1Zpc2libGUpIHsKKyAgICAgICAgLy8gQ2xlYXIgdGhl
IHZpc2libGUgb2xkIG1lc3NhZ2UuCisgICAgICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2VUaW1lci0+
c3RvcCgpOworICAgICAgICBtX2NsaWVudC0+dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKGxh
c3RUYXJnZXQuZ2V0KCksIFN0cmluZygpKTsKKyAgICAgICAgLy8gV2lsbCBzaG93IHRoZSBuZXcg
bWVzc2FnZSBhZnRlciB2YWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0U2VjLgorICAgICAgICBzdGFy
dFZhbGlkYXRpb25NZXNzYWdlQmxhY2tvdXQoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAo
bV92YWxpZGF0aW9uTWVzc2FnZVRpbWVyLT5pc0FjdGl2ZSgpKSB7CisgICAgICAgICAgICAvLyBO
b3RoaW5nIHRvIGRvIGlmIGl0IGlzIGluIGEgYmxhY2tvdXQgcGVyaW9kLiBXaGVuIHRoZSB0aW1l
ciBpcworICAgICAgICAgICAgLy8gZmlyZWQgbmV4dCB0aW1lLCB2YWxpZGF0aW9uTWVzc2FnZVRp
bWVyRmlyZWQoKSBzaG93cyB0aGUgbWVzc2FnZQorICAgICAgICAgICAgLy8gYmVjYXVzZSBtX3Zh
bGlkYXRpb25NZXNzYWdlIGlzIG5vdCBlbXB0eS4KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIC8vIEl0J3Mgbm90IGluIGEgYmxhY2tvdXQgcGVyaW9kLiBTaG93IHRoZSBtZXNzYWdlIGlt
bWVkaWF0ZWx5LgorICAgICAgICAgICAgbV9jbGllbnQtPnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVz
c2FnZShtX3ZhbGlkYXRpb25NZXNzYWdlVGFyZ2V0LmdldCgpLCBtX3ZhbGlkYXRpb25NZXNzYWdl
KTsKKyAgICAgICAgICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2VUaW1lckNvdW50ZXIgPSAwOworICAg
ICAgICAgICAgbV92YWxpZGF0aW9uTWVzc2FnZVRpbWVyLT5zdGFydFJlcGVhdGluZyhtX2NsaWVu
dC0+dmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRlcnZhbFNlY29uZCgpKTsKKyAgICAgICAgfQor
ICAgIH0KK30KKwordm9pZCBDaHJvbWU6OnN0YXJ0VmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dCgp
Cit7CisgICAgbV92YWxpZGF0aW9uTWVzc2FnZVRpbWVyQ291bnRlciA9IC0xOworICAgIG1fdmFs
aWRhdGlvbk1lc3NhZ2VUaW1lci0+c3RhcnQobV9jbGllbnQtPnZhbGlkYXRpb25NZXNzYWdlQmxh
Y2tvdXRTZWNvbmQoKSwgbV9jbGllbnQtPnZhbGlkYXRpb25NZXNzYWdlVXBkYXRlSW50ZXJ2YWxT
ZWNvbmQoKSk7Cit9CisKK3ZvaWQgQ2hyb21lOjp2YWxpZGF0aW9uTWVzc2FnZVRpbWVyRmlyZWQo
VGltZXI8Q2hyb21lPiogdGltZXIpCit7CisgICAgaWYgKG1fdmFsaWRhdGlvbk1lc3NhZ2UuaXNF
bXB0eSgpKSB7CisgICAgICAgIEFTU0VSVChtX3ZhbGlkYXRpb25NZXNzYWdlVGltZXJDb3VudGVy
IDwgMCk7CisgICAgICAgIHRpbWVyLT5zdG9wKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgbV9jbGllbnQtPnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShtX3ZhbGlkYXRpb25NZXNz
YWdlVGFyZ2V0LmdldCgpLCBtX3ZhbGlkYXRpb25NZXNzYWdlKTsKKyAgICBpZiAoKyttX3ZhbGlk
YXRpb25NZXNzYWdlVGltZXJDb3VudGVyIDwgbV9jbGllbnQtPnZhbGlkYXRpb25NZXNzYWdlVXBk
YXRlQ291bnQobV92YWxpZGF0aW9uTWVzc2FnZSkpCisgICAgICAgIHJldHVybjsKKyAgICB0aW1l
ci0+c3RvcCgpOworICAgIG1fY2xpZW50LT51cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UobV92
YWxpZGF0aW9uTWVzc2FnZVRhcmdldC5nZXQoKSwgU3RyaW5nKCkpOworICAgIG1fdmFsaWRhdGlv
bk1lc3NhZ2UgPSBTdHJpbmcoKTsKKyAgICBtX3ZhbGlkYXRpb25NZXNzYWdlVGFyZ2V0LmNsZWFy
KCk7CisKKyAgICBzdGFydFZhbGlkYXRpb25NZXNzYWdlQmxhY2tvdXQoKTsKK30KKwogdm9pZCBD
aHJvbWU6OnByaW50KEZyYW1lKiBmcmFtZSkKIHsKICAgICBtX2NsaWVudC0+cHJpbnQoZnJhbWUp
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0Nocm9tZS5oIGIvV2ViQ29yZS9wYWdlL0Nocm9t
ZS5oCmluZGV4IDg4MDM1YTUyODE3Zjk4MzJkNzVhMmQ5YWViNzM0N2U3MTI2YmIzNGMuLmQyMGMy
OWI3NmRhZmE2NzE4ZGVlYTdkZDQ4NTUzOGY1Mjc4MjY3ZjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGFnZS9DaHJvbWUuaAorKysgYi9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKQEAgLTI0LDcgKzI0LDkg
QEAKICNpbmNsdWRlICJGaWxlQ2hvb3Nlci5oIgogI2luY2x1ZGUgIkZvY3VzRGlyZWN0aW9uLmgi
CiAjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNDAsNiArNDIsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgY2xhc3MgRmxvYXRSZWN0OwogICAgIGNsYXNzIEZyYW1lOwogICAgIGNs
YXNzIEdlb2xvY2F0aW9uOworICAgIGNsYXNzIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ7CiAgICAg
Y2xhc3MgSGl0VGVzdFJlc3VsdDsKICAgICBjbGFzcyBJbnRSZWN0OwogICAgIGNsYXNzIE5vZGU7
CkBAIC0xMjksNiArMTMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIG1v
dXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IEhpdFRlc3RSZXN1bHQmLCB1bnNpZ25lZCBtb2Rp
ZmllckZsYWdzKTsKIAogICAgICAgICB2b2lkIHNldFRvb2xUaXAoY29uc3QgSGl0VGVzdFJlc3Vs
dCYpOworICAgICAgICB2b2lkIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShIVE1MRm9ybUNv
bnRyb2xFbGVtZW50KiwgY29uc3QgU3RyaW5nJik7CiAKICAgICAgICAgdm9pZCBwcmludChGcmFt
ZSopOwogCkBAIC0xNDksOCArMTUzLDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgog
CiAgICAgcHJpdmF0ZToKKyAgICAgICAgdm9pZCB2YWxpZGF0aW9uTWVzc2FnZVRpbWVyRmlyZWQo
VGltZXI8Q2hyb21lPiopOworICAgICAgICB2b2lkIHN0YXJ0VmFsaWRhdGlvbk1lc3NhZ2VCbGFj
a291dCgpOworCiAgICAgICAgIFBhZ2UqIG1fcGFnZTsKICAgICAgICAgQ2hyb21lQ2xpZW50KiBt
X2NsaWVudDsKKyAgICAgICAgT3duUHRyPFRpbWVyPENocm9tZT4qPiBtX3ZhbGlkYXRpb25NZXNz
YWdlVGltZXI7CisgICAgICAgIGludCBtX3ZhbGlkYXRpb25NZXNzYWdlVGltZXJDb3VudGVyOwor
ICAgICAgICBTdHJpbmcgbV92YWxpZGF0aW9uTWVzc2FnZTsKKyAgICAgICAgUmVmUHRyPEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQ+IG1fdmFsaWRhdGlvbk1lc3NhZ2VUYXJnZXQ7CiAgICAgfTsKIH0K
IApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oCmluZGV4IGM5M2IzYzliNDkxMWUyYTU2NzE0YTNmNDJmMDgyNDIzOWU4
YTQyNjYuLjUwMjg4M2UxZTI5M2Q2YmY4NmE0YzI4Y2MzMGQxZTAxOWNhMGIxNGIgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9XZWJDb3JlL3BhZ2UvQ2hyb21l
Q2xpZW50LmgKQEAgLTQ3LDYgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNz
IEZsb2F0UmVjdDsKICAgICBjbGFzcyBGcmFtZTsKICAgICBjbGFzcyBHZW9sb2NhdGlvbjsKKyAg
ICBjbGFzcyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OwogICAgIGNsYXNzIEhUTUxQYXJzZXJRdWly
a3M7CiAgICAgY2xhc3MgSGl0VGVzdFJlc3VsdDsKICAgICBjbGFzcyBJbnRSZWN0OwpAQCAtMjAy
LDYgKzIwMywyOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIAogICAgICAgICB2aXJ0
dWFsIHZvaWQgZm9ybURpZEZvY3VzKGNvbnN0IE5vZGUqKSB7IH07CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBmb3JtRGlkQmx1cihjb25zdCBOb2RlKikgeyB9OworICAgICAgICAvLyBTaG93IHRoZSBz
cGVjaWZpZWQgbWVzc2FnZSBmb3IgdGhlIGZvcm0gY29udHJvbC4gSGlkZSB0aGUgbWVzc2FnZQor
ICAgICAgICAvLyBpZiB0aGUgc3RyaW5nIGlzIGVtcHR5LiBJZiB1cGRhdGVGb3JtVmFsaWRhdGlv
bk1lc3NhZ2UoKSB3aXRoCisgICAgICAgIC8vIG5vbi1lbXB0eSBtZXNzYWdlIGlzIGNhbGxlZCwg
dGhlIHN1YnNlcXVlbnQgY2FsbHMgb2YKKyAgICAgICAgLy8gdXBkYXRlRm9ybVZhbGlkYXRpb25N
ZXNzYWdlKCkgbXVzdCBiZSBmb3IgdGhlIHNhbWUgZWxlbWVudCBhbmQgdGhlCisgICAgICAgIC8v
IHNhbWUgbWVzc2FnZS4gIFRoZW4sIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSgpIGlzIGNh
bGxlZCB3aXRoCisgICAgICAgIC8vIHRoZSBzYW1lIGVsZW1lbnQgYW5kIHRoZSBlbXB0eSBtZXNz
YWdlLgorICAgICAgICAvLyAgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNhZ2UoY29udHJvbDEsICJt
ZXNzYWdlMSIpIC0+CisgICAgICAgIC8vICB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc2FnZShjb250
cm9sMSwgIm1lc3NhZ2UxIikgLT4KKyAgICAgICAgLy8gIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVz
YWdlKGNvbnRyb2wxLCAibWVzc2FnZTEiKSAuLi4gKG11bHRpcGxlIHRpbWVzKQorICAgICAgICAv
LyAgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNhZ2UoY29udHJvbDEsICIiKQorICAgICAgICAvLyBJ
biB0aGlzIHNlcXVlbmNlLCBjYWxscyB3aXRoIG90aGVyIGNvbnRyb2xzIG9yIG90aGVyIG1lc3Nh
Z2VzCisgICAgICAgIC8vIG5ldmVyIGhhcHBlbi4KKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiwgY29uc3QgU3Ry
aW5nJikgPSAwOworICAgICAgICAvLyBBZnRlciB0aGUgZmlyc3QgY2FsbCBvZiB1cGRhdGVGb3Jt
VmFsaWRhdGlvbk1lc3NhZ2UoZSwgIm1lc3NhZ2UxIiksCisgICAgICAgIC8vIGl0IGlzIGNhbGxl
ZCByZXBlYXRlZGx5IGV2ZXJ5IHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlSW50ZXJ2YWxTZWNvbmQo
KQorICAgICAgICAvLyB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUNvdW50KCktMSB0aW1lcywKKyAg
ICAgICAgLy8gdGhlbiB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoZSwgIiIpIGlzIGNhbGxl
ZCBhZnRlcgorICAgICAgICAvLyB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUludGVydmFsU2Vjb25k
KCkuCisgICAgICAgIC8vIEFmdGVyIHRoYXQsIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSgp
IGlzIG5ldmVyIGNhbGxlZCBmb3IKKyAgICAgICAgLy8gdmFsaWRhdGlvbk1lc3NhZ2VCbGFja291
dFNlY29uZCgpLgorICAgICAgICB2aXJ0dWFsIGRvdWJsZSB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0
ZUludGVydmFsU2Vjb25kKCkgPSAwOworICAgICAgICB2aXJ0dWFsIGludCB2YWxpZGF0aW9uTWVz
c2FnZVVwZGF0ZUNvdW50KGNvbnN0IFN0cmluZyYpID0gMDsKKyAgICAgICAgdmlydHVhbCBkb3Vi
bGUgdmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29uZCgpID0gMDsKIAogICAgICAgICB2aXJ0
dWFsIFBhc3NPd25QdHI8SFRNTFBhcnNlclF1aXJrcz4gY3JlYXRlSFRNTFBhcnNlclF1aXJrcygp
ID0gMDsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L0NoYW5nZUxvZyBiL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggYTI4MmYwODk1MGJjOTk5NjI0MmQzYWU0MmY5OGVkMWE3NzU1OTYyYy4uMzljZDM3YjNj
MGQwM2Y4YjE0YTUxNmEwNzE1MGQ4MzZjNGE2Y2ZhNyAxMDA2NDQKLS0tIGEvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMDQtMDEg
IEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyYW1ld29yayB0byBzaG93IGZvcm0gdmFsaWRh
dGlvbiBtZXNzYWdlIGZvciBpbnZhbGlkIGNvbnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTcxOAorCisgICAgICAgIEFkZCBzdHViIGZ1bmN0
aW9ucyBmb3IgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKCksCisgICAgICAgIHZhbGlkYXRp
b25NZXNzYWdlVXBkYXRlSW50ZXJ2YWxTZWNvbmQoKSwKKyAgICAgICAgdmFsaWRhdGlvbk1lc3Nh
Z2VVcGRhdGVDb3VudCgpLCBhbmQKKyAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNl
Y29uZCgpLgorCisgICAgICAgICogZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OnVwZGF0ZUZvcm1WYWxpZGF0
aW9uTWVzc2FnZSk6CisgICAgICAgICogZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVm
bC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjp2YWxpZGF0aW9uTWVzc2Fn
ZVVwZGF0ZUludGVydmFsU2Vjb25kKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVm
bDo6dmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJv
bWVDbGllbnRFZmw6OnZhbGlkYXRpb25NZXNzYWdlQmxhY2tvdXRTZWNvbmQpOgorCiAyMDEwLTA2
LTA5ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNjA4ODkuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAyMmMzZjgx
MWRjOThjZjU0YTE2YzVhYmQxNTAxZTMzNjVlZDNjMGZjLi5iZGNjZWZlNWViNzkyZmY3OTk4MzQy
NWZkZjNhZmFkZjNhNTQ3NTYzIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMC0w
NC0wMSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRnJhbWV3b3JrIHRvIHNob3cgZm9ybSB2
YWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGludmFsaWQgY29udHJvbHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNzE4CisKKyAgICAgICAgQWRkIHN0dWIg
ZnVuY3Rpb25zIGZvciB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoKSwKKyAgICAgICAgdmFs
aWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRlcnZhbFNlY29uZCgpLAorICAgICAgICB2YWxpZGF0aW9u
TWVzc2FnZVVwZGF0ZUNvdW50KCksIGFuZAorICAgICAgICB2YWxpZGF0aW9uTWVzc2FnZUJsYWNr
b3V0U2Vjb25kKCkuCisKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2Fn
ZSk6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuaDoKKyAgICAgICAgKFdlYktpdDo6
Q2hyb21lQ2xpZW50SW1wbDo6dmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRlcnZhbFNlY29uZCk6
CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OnZhbGlkYXRpb25NZXNzYWdlVXBk
YXRlQ291bnQpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjp2YWxpZGF0aW9u
TWVzc2FnZUJsYWNrb3V0U2Vjb25kKToKKwogMjAxMC0wNi0wOSAgQm8gTGl1ICA8Ym9saXVAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIExldmluLgpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcCBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKaW5kZXggYTk0NGQ0OGU1OTc0MDJmMGZjNmE1
YTZhYTFiZjgyNDZjN2YzMjI3Mi4uNjEzMjgyZWJkNmIyZmU3ZWZhNTlhMDQzMDAxNjg0NmZkMjkx
ZDEyOSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNw
cAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCkBAIC02NTQs
NiArNjU0LDExIEBAIHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6Zm9ybVN0YXRlRGlkQ2hhbmdlKGNv
bnN0IE5vZGUqIG5vZGUpCiAgICAgICAgIHdlYmZyYW1lLT5jbGllbnQoKS0+ZGlkVXBkYXRlQ3Vy
cmVudEhpc3RvcnlJdGVtKHdlYmZyYW1lKTsKIH0KIAordm9pZCBDaHJvbWVDbGllbnRJbXBsOjp1
cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVu
dCosIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwogdm9pZCBDaHJvbWVDbGllbnRJbXBsOjpnZXRQb3B1cE1lbnVJbmZvKFBvcHVwQ29udGFpbmVy
KiBwb3B1cENvbnRhaW5lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXZWJQb3B1cE1lbnVJbmZvKiBpbmZvKQogewpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9DaHJvbWVDbGllbnRJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVu
dEltcGwuaAppbmRleCA4NDM1NWMzOTllNGVlZmUyZjBjOTRlNmNkNDkzNmUwMzJjNGRkNDA1Li41
YzlkNzRlZWQ0ODJjZjdkNjRiOTI0OWFlMDk0MDBlNjhmNDQ4ZWFiIDEwMDY0NAotLS0gYS9XZWJL
aXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0v
c3JjL0Nocm9tZUNsaWVudEltcGwuaApAQCAtMTI4LDYgKzEyOCwxMCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGNob29zZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U3Ry
aW5nPiYsIFdlYkNvcmU6OkZpbGVDaG9vc2VyKik7CiAgICAgdmlydHVhbCBib29sIHNldEN1cnNv
cihXZWJDb3JlOjpQbGF0Zm9ybUN1cnNvckhhbmRsZSkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZm9ybVN0YXRlRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6Ok5vZGUqKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKFdlYkNvcmU6OkhUTUxG
b3JtQ29udHJvbEVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKKyAgICB2aXJ0dWFs
IGRvdWJsZSB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUludGVydmFsU2Vjb25kKCkgeyByZXR1cm4g
MC4zOyAvKiBGSVhNRSAqLyB9CisgICAgdmlydHVhbCBpbnQgdmFsaWRhdGlvbk1lc3NhZ2VVcGRh
dGVDb3VudChjb25zdCBXZWJDb3JlOjpTdHJpbmcmKSB7IHJldHVybiAyMDsgLyogRklYTUUgKi8g
fQorICAgIHZpcnR1YWwgZG91YmxlIHZhbGlkYXRpb25NZXNzYWdlQmxhY2tvdXRTZWNvbmQoKSB7
IHJldHVybiAwLjY7IC8qIEZJWE1FICovIH0KICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29y
ZTo6SFRNTFBhcnNlclF1aXJrcz4gY3JlYXRlSFRNTFBhcnNlclF1aXJrcygpIHsgcmV0dXJuIDA7
IH0KICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIC8vIEZJWE1FOiBBbGwgdG91Y2ggZXZl
bnRzIGFyZSBmb3J3YXJkZWQgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yIG5vdCB0aGV5IGFyZSBu
ZWVkZWQuCmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEVmbC5jcHAgYi9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAK
aW5kZXggYzUxYmVmYjI0YmE0NTRkM2VhMWJlMjBiN2ZmNTMxOTI2YzVhNjkwMC4uMDEzYmVjZWNm
NDMwYTJiYmVkYmFjMjE5OGE3Y2Q0OGFjMjA5YWM1YSAxMDA2NDQKLS0tIGEvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCisrKyBiL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcApAQCAtMzg0LDYgKzM4NCwxMSBAQCB2b2lkIENo
cm9tZUNsaWVudEVmbDo6Zm9ybVN0YXRlRGlkQ2hhbmdlKGNvbnN0IE5vZGUqKQogICAgIG5vdElt
cGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgQ2hyb21lQ2xpZW50RWZsOjp1cGRhdGVGb3JtVmFsaWRh
dGlvbk1lc3NhZ2UoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudCosIGNvbnN0IFdlYkNv
cmU6OlN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogYm9vbCBDaHJvbWVD
bGllbnRFZmw6OnNldEN1cnNvcihQbGF0Zm9ybUN1cnNvckhhbmRsZSkKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRFZmwuaCBiL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmgK
aW5kZXggMzk5ZWY3ZjBiMTJhYWE2NTI3N2RjZDM4MzU5YTMyODMyZDc1MTFiMS4uMDZmOWM2MjQ4
ZDBmOWYyOTZkY2M5MjgzZjRiMThhYjNmMGQxODJiYyAxMDA2NDQKLS0tIGEvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaAorKysgYi9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCkBAIC0xMTUsNiArMTE1LDEwIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgcnVuT3BlblBhbmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nl
cj4pOwogICAgIHZpcnR1YWwgdm9pZCBjaG9vc2VJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0
cmluZz4mLCBGaWxlQ2hvb3NlciopOwogICAgIHZpcnR1YWwgdm9pZCBmb3JtU3RhdGVEaWRDaGFu
Z2UoY29uc3QgTm9kZSopOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGb3JtVmFsaWRhdGlvbk1l
c3NhZ2UoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudCwgY29uc3QgV2ViQ29yZTo6U3Ry
aW5nJik7CisgICAgdmlydHVhbCBkb3VibGUgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRlcnZh
bFNlY29uZCgpIHsgcmV0dXJuIDAuMzsgLyogRklYTUUgKi8gfQorICAgIHZpcnR1YWwgaW50IHZh
bGlkYXRpb25NZXNzYWdlVXBkYXRlQ291bnQoY29uc3QgU3RyaW5nJikgeyByZXR1cm4gMjA7IC8q
IEZJWE1FICovIH0KKyAgICB2aXJ0dWFsIGRvdWJsZSB2YWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0
U2Vjb25kKCkgeyByZXR1cm4gMC42OyAvKiBGSVhNRSAqLyB9CiAKICAgICB2aXJ0dWFsIFBhc3NP
d25QdHI8SFRNTFBhcnNlclF1aXJrcz4gY3JlYXRlSFRNTFBhcnNlclF1aXJrcygpIHsgcmV0dXJu
IDA7IH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0No
YW5nZUxvZwppbmRleCAyNDM2NTFmYTc3NzFlNTQxMzNkNDJlOWIyMzA5NjkzODdiMGI2NTZlLi45
YWE4YWU0MGZjNmM4M2E3YWUxZGUwOWFkM2IxODljNmY0ZmY4MDI4IDEwMDY0NAotLS0gYS9XZWJL
aXQvZ3RrL0NoYW5nZUxvZworKysgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIy
IEBACisyMDEwLTA0LTAxICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGcmFtZXdvcmsgdG8g
c2hvdyBmb3JtIHZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW52YWxpZCBjb250cm9scworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE3MTgKKworICAgICAg
ICBBZGQgc3R1YiBmdW5jdGlvbnMgZm9yIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSgpLAor
ICAgICAgICB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUludGVydmFsU2Vjb25kKCksCisgICAgICAg
IHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlQ291bnQoKSwgYW5kCisgICAgICAgIHZhbGlkYXRpb25N
ZXNzYWdlQmxhY2tvdXRTZWNvbmQoKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6dXBkYXRlRm9y
bVZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRHdGsuaDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50Ojp2YWxpZGF0aW9uTWVzc2Fn
ZVVwZGF0ZUludGVydmFsU2Vjb25kKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50Ojp2
YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUNvdW50KToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xp
ZW50Ojp2YWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0U2Vjb25kKToKKwogMjAxMC0wNi0xMCAgRXJp
YyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBC
YXJ0aC4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
R3RrLmNwcCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcApp
bmRleCA1NzU5NjAxMzVlZjU2N2ZkOTcwMzMxYThiMDNlM2NmOGI3MTgwNjM1Li4xNTU3MGY3MDM1
YzcxNjcwYmQwMTY0MDYwYzRiN2ZlZGU4ZjgxOTFhIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCkBAIC01NjQsNiArNTY0LDExIEBAIHZvaWQgQ2hy
b21lQ2xpZW50OjpjaG9vc2VJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlN0cmlu
Zz4mIGZpbGVuYW1lcywKICAgICBjaG9vc2VyLT5pY29uTG9hZGVkKEljb246OmNyZWF0ZUljb25G
b3JGaWxlcyhmaWxlbmFtZXMpKTsKIH0KIAordm9pZCBDaHJvbWVDbGllbnQ6OnVwZGF0ZUZvcm1W
YWxpZGF0aW9uTWVzc2FnZShXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiwgY29uc3Qg
V2ViQ29yZTo6U3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiBib29sIENo
cm9tZUNsaWVudDo6c2V0Q3Vyc29yKFBsYXRmb3JtQ3Vyc29ySGFuZGxlKQogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEd0ay5oIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsu
aAppbmRleCA0NmQwMTVlZGFiN2UwNTVhOWIwZGFlNjI2YjUwMTFkM2QxYTZjODczLi41MGE0MTNj
ODFjZDZmNjA1MmNkMTE5MDQ1ZGJkZWZiODU0NGQwMmNhIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCisrKyBiL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKQEAgLTExMyw2ICsxMTMsMTAgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjaG9vc2VJY29uRm9yRmlsZXMoY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OlN0cmluZz4mLCBXZWJDb3JlOjpGaWxlQ2hvb3NlciopOwogCiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBmb3JtU3RhdGVEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6Tm9kZSop
IHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKFdl
YkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsK
KyAgICAgICAgdmlydHVhbCBkb3VibGUgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRlcnZhbFNl
Y29uZCgpIHsgcmV0dXJuIDAuMzsgLyogRklYTUUgKi8gfQorICAgICAgICB2aXJ0dWFsIGludCB2
YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUNvdW50KGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpIHsgcmV0
dXJuIDIwOyAvKiBGSVhNRSAqLyB9CisgICAgICAgIHZpcnR1YWwgZG91YmxlIHZhbGlkYXRpb25N
ZXNzYWdlQmxhY2tvdXRTZWNvbmQoKSB7IHJldHVybiAwLjY7IC8qIEZJWE1FICovIH0KIAogICAg
ICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6SFRNTFBhcnNlclF1aXJrcz4gY3JlYXRl
SFRNTFBhcnNlclF1aXJrcygpIHsgcmV0dXJuIDA7IH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2hh
aWt1L0NoYW5nZUxvZyBiL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKaW5kZXggY2ViZmNkNGI2MWQ0
ZjkyZGEzYzg5NDgwNWY4MjYzZDA5ZjQ1ZDA5YS4uOWNhNmRiYTQ3NzlkYjc3YWNhN2EwZGExZjQy
ZWVkOTkwNGRmMGM2YSAxMDA2NDQKLS0tIGEvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZworKysgYi9X
ZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMDQtMDEgIEtlbnQg
VGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEZyYW1ld29yayB0byBzaG93IGZvcm0gdmFsaWRhdGlvbiBt
ZXNzYWdlIGZvciBpbnZhbGlkIGNvbnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zMTcxOAorCisgICAgICAgIEFkZCBzdHViIGZ1bmN0aW9ucyBm
b3IgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKCksCisgICAgICAgIHZhbGlkYXRpb25NZXNz
YWdlVXBkYXRlSW50ZXJ2YWxTZWNvbmQoKSwKKyAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VVcGRh
dGVDb3VudCgpLCBhbmQKKyAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29uZCgp
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVz
c2FnZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1Ojp2YWxpZGF0aW9uTWVzc2FnZVVwZGF0
ZUludGVydmFsU2Vjb25kKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEhhaWt1Ojp2
YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNs
aWVudEhhaWt1Ojp2YWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0U2Vjb25kKToKKwogMjAxMC0wNi0w
OSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjYwODg5LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2hhaWt1
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmNwcCBiL1dlYktpdC9oYWlrdS9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5jcHAKaW5kZXggMmNmNWMzMTZjYTcxYjZkZDJm
NWNlMzdkYjk3NDRmZGQ4YzBmZjIzMS4uMTMyMWVkYWU5OGI4Njc0MGI5OTgyMjNmNzBjMDcwMmJm
YzBhODliZiAxMDA2NDQKLS0tIGEvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEhhaWt1LmNwcAorKysgYi9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50SGFpa3UuY3BwCkBAIC0zNzUsNiArMzc1LDExIEBAIHZvaWQgQ2hyb21lQ2xpZW50SGFpa3U6
OmZvcm1TdGF0ZURpZENoYW5nZShjb25zdCBOb2RlKikKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQogCit2b2lkIENocm9tZUNsaWVudEhhaWt1Ojp1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2Uo
V2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogUGFzc093blB0cjxIVE1MUGFyc2VyUXVp
cmtzPiBDaHJvbWVDbGllbnRIYWlrdTo6Y3JlYXRlSFRNTFBhcnNlclF1aXJrcygpCiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRIYWlrdS5oIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEhhaWt1LmgKaW5kZXggZDVhMzcyYjBmYmMyZWViNWY2YjMxMmNhYWZjNzI4MjU1YTNk
ZjM3Yi4uOTRlYzc1YmU0Y2UxZjU5ZGU0MjcyZjRkZWQ4MmYwY2Q4Y2FhMzYzZSAxMDA2NDQKLS0t
IGEvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmgKKysrIGIv
V2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmgKQEAgLTE0NSw2
ICsxNDUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBOb3RpZmljYXRpb24g
dGhhdCB0aGUgZ2l2ZW4gZm9ybSBlbGVtZW50IGhhcyBjaGFuZ2VkLiBUaGlzIGZ1bmN0aW9uCiAg
ICAgICAgIC8vIHdpbGwgYmUgY2FsbGVkIGZyZXF1ZW50bHksIHNvIGhhbmRsaW5nIHNob3VsZCBi
ZSB2ZXJ5IGZhc3QuCiAgICAgICAgIHZvaWQgZm9ybVN0YXRlRGlkQ2hhbmdlKGNvbnN0IE5vZGUq
KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShXZWJD
b3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7Cisg
ICAgICAgIHZpcnR1YWwgZG91YmxlIHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlSW50ZXJ2YWxTZWNv
bmQoKSB7IHJldHVybiAwLjM7IC8qIEZJWE1FICovIH0KKyAgICAgICAgdmlydHVhbCBpbnQgdmFs
aWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3VudChjb25zdCBTdHJpbmcmKSB7IHJldHVybiAyMDsgLyog
RklYTUUgKi8gfQorICAgICAgICB2aXJ0dWFsIGRvdWJsZSB2YWxpZGF0aW9uTWVzc2FnZUJsYWNr
b3V0U2Vjb25kKCkgeyByZXR1cm4gMC42OyAvKiBGSVhNRSAqLyB9CiAKICAgICAgICAgUGFzc093
blB0cjxIVE1MUGFyc2VyUXVpcmtzPiBjcmVhdGVIVE1MUGFyc2VyUXVpcmtzKCk7CiAgICAgfTsK
ZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
aW5kZXggNzA2Njk4MmM4YWJiNmEzNzNlODVkZThlYzYyYmRlYTdlY2Y5MTQyOS4uYzgwNTdmMDFi
ZDRiNTNhMzhmYzFiNThjZGMyN2U4Mzc0ZDU4MzJhYyAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKKysrIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAx
MC0wNC0wMSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRnJhbWV3b3JrIHRvIHNob3cgZm9y
bSB2YWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGludmFsaWQgY29udHJvbHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNzE4CisKKyAgICAgICAgQWRkIHN0
dWIgZnVuY3Rpb25zIGZvciB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoKSwKKyAgICAgICAg
dmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRlcnZhbFNlY29uZCgpLAorICAgICAgICB2YWxpZGF0
aW9uTWVzc2FnZVVwZGF0ZUNvdW50KCksIHZhbGlkYXRpb25NZXNzYWdlQmxhY2tvdXRTZWNvbmQo
KSwgYW5kCisgICAgICAgIGEgaGVscGVyIGZvciBMYXlvdXRUZXN0Q29udHJvbGxlcjo6dmlzaWJs
ZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoKS4KKworICAgICAgICAqIE1pc2MvV2Vi
Q29yZVN0YXRpc3RpY3MuaDoKKyAgICAgICAgKiBNaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tOgor
ICAgICAgICAoLVtXZWJGcmFtZSB2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJ
ZDpdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNocm9tZUNsaWVudDo6dmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRlcnZhbFNlY29u
ZCk6CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OnZhbGlkYXRpb25NZXNzYWdlVXBkYXRlQ291
bnQpOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50Ojp2YWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0
U2Vjb25kKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW06Cisg
ICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSk6CisK
KwogMjAxMC0wNi0wOSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjYwODg5LgpkaWZmIC0tZ2l0IGEv
V2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLmggYi9XZWJLaXQvbWFjL01pc2MvV2Vi
Q29yZVN0YXRpc3RpY3MuaAppbmRleCBhMTFjMDY0NDhjOGM3ZjVkYTgyYjBmMmVjNjY1ZTU1YmUy
NTM4OWJjLi42YTlkZGEyN2FjYzMwNTFlMjZhMGRiZmY0MWUzMjU1YzA5NzlhNjE4IDEwMDY0NAot
LS0gYS9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MuaAorKysgYi9XZWJLaXQvbWFj
L01pc2MvV2ViQ29yZVN0YXRpc3RpY3MuaApAQCAtODcsNCArODcsNSBAQAogLSAoTlNTdHJpbmcg
Kiljb3VudGVyVmFsdWVGb3JFbGVtZW50OihET01FbGVtZW50KillbGVtZW50OwogLSAoaW50KXBh
Z2VOdW1iZXJGb3JFbGVtZW50OihET01FbGVtZW50KillbGVtZW50OihmbG9hdClwYWdlV2lkdGhJ
blBpeGVsczooZmxvYXQpcGFnZUhlaWdodEluUGl4ZWxzOwogLSAoaW50KW51bWJlck9mUGFnZXM6
KGZsb2F0KXBhZ2VXaWR0aEluUGl4ZWxzOihmbG9hdClwYWdlSGVpZ2h0SW5QaXhlbHM7CistIChO
U1N0cmluZyAqKXZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkOihOU1N0cmlu
ZyAqKWVsZW1lbnRJZDsKIEBlbmQKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvTWlzYy9XZWJDb3Jl
U3RhdGlzdGljcy5tbSBiL1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbQppbmRl
eCBjM2ZjMjNlY2Y0ODcxNzE1NDA1NzYxYjFjNGEwNGM1NGMzOTRjMDU4Li4wNzA0MzY3YTIwN2Q2
MmZhNDExZGM2MWQ5YzBkZDg2MjYzZWYwYTk3IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL01pc2Mv
V2ViQ29yZVN0YXRpc3RpY3MubW0KKysrIGIvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0
aWNzLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbXBvcnQgIldlYkNvcmVTdGF0aXN0aWNzLmgi
CiAKKyNpbXBvcnQgIkRPTURvY3VtZW50SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTUVsZW1lbnRJ
bnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViQ2FjaGUuaCIKICNpbXBvcnQgIldlYkZyYW1lSW50ZXJu
YWwuaCIKQEAgLTM3LDYgKzM4LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBv
cnQgPFdlYkNvcmUvR0NDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dseXBoUGFnZVRy
ZWVOb2RlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaD4KICNp
bXBvcnQgPFdlYkNvcmUvSWNvbkRhdGFiYXNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRE9NV2lu
ZG93Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2VDYWNoZS5oPgpAQCAtMjc1LDQgKzI3NywxNSBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICByZXR1cm4gUHJpbnRDb250ZXh0OjpudW1i
ZXJPZlBhZ2VzKF9wcml2YXRlLT5jb3JlRnJhbWUsIEZsb2F0U2l6ZShwYWdlV2lkdGhJblBpeGVs
cywgcGFnZUhlaWdodEluUGl4ZWxzKSk7CiB9CiAKKy0gKE5TU3RyaW5nICopdmlzaWJsZVZhbGlk
YXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQ6KE5TU3RyaW5nICopZWxlbWVudElkCit7CisgICAg
RE9NRWxlbWVudCogZWxlbWVudCA9IFtbc2VsZiBET01Eb2N1bWVudF0gZ2V0RWxlbWVudEJ5SWQ6
ZWxlbWVudElkXTsKKyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIHJldHVybiBuaWw7CisgICAg
RWxlbWVudCogY29yZUVsZW1lbnQgPSBjb3JlKGVsZW1lbnQpOworICAgIGlmICghY29yZUVsZW1l
bnQtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgSFRN
TEZvcm1Db250cm9sRWxlbWVudCogZm9ybUNvbnRyb2wgPSBzdGF0aWNfY2FzdDxIVE1MRm9ybUNv
bnRyb2xFbGVtZW50Kj4oY29yZUVsZW1lbnQpOworICAgIHJldHVybiAoTlNTdHJpbmcqKWZvcm1D
b250cm9sLT52aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKTsKK30KIEBlbmQKZGlmZiAtLWdpdCBh
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDdkZWVhNzlhMmJlOTUzOTll
OGU4ZmViNjk0OTExMjlkM2ZkYWIzYTcuLjJmMDVjZTg1NDRiMTE4N2E5ZjdiZmUwZTU2NzI1OGFl
NTVhNmE3NDAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmgKKysrIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aApAQCAtMTQ3LDYgKzE0NywxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZm9ybURp
ZEZvY3VzKGNvbnN0IFdlYkNvcmU6Ok5vZGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgZm9ybURpZEJs
dXIoY29uc3QgV2ViQ29yZTo6Tm9kZSopOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGb3JtVmFs
aWRhdGlvbk1lc3NhZ2UoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudCosIGNvbnN0IFdl
YkNvcmU6OlN0cmluZyYpOworICAgIHZpcnR1YWwgZG91YmxlIHZhbGlkYXRpb25NZXNzYWdlVXBk
YXRlSW50ZXJ2YWxTZWNvbmQoKSB7IHJldHVybiAwLjM7IC8qIEZJWE1FICovIH0KKyAgICB2aXJ0
dWFsIGludCB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUNvdW50KGNvbnN0IFdlYkNvcmU6OlN0cmlu
ZyYpIHsgcmV0dXJuIDIwOyAvKiBGSVhNRSAqLyB9CisgICAgdmlydHVhbCBkb3VibGUgdmFsaWRh
dGlvbk1lc3NhZ2VCbGFja291dFNlY29uZCgpIHsgcmV0dXJuIDAuNjsgLyogRklYTUUgKi8gfQog
CiAgICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkNvcmU6OkhUTUxQYXJzZXJRdWlya3M+IGNyZWF0
ZUhUTUxQYXJzZXJRdWlya3MoKSB7IHJldHVybiAwOyB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tIGIvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KaW5kZXggMGE1MmE5ZjcwN2RhYTBiMTdkYjQ2NDkw
OTgwNjAwODgwZjkwMzIzMi4uOWE4ODc1YjY4M2U1ZDMzNmY1N2U2MWJhODM0NmQ4OTk4YzA2MjU5
MCAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
bW0KKysrIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KQEAg
LTcwNSw2ICs3MDUsMTEgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmZvcm1EaWRCbHVyKGNvbnN0
IFdlYkNvcmU6Ok5vZGUqIG5vZGUpCiAgICAgQ2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBAc2Vs
ZWN0b3Iod2ViVmlldzpmb3JtRGlkQmx1ck5vZGU6KSwga2l0KGNvbnN0X2Nhc3Q8V2ViQ29yZTo6
Tm9kZSo+KG5vZGUpKSk7CiB9CiAKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50Ojp1cGRhdGVGb3JtVmFs
aWRhdGlvbk1lc3NhZ2UoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudCosIGNvbnN0IFdl
YkNvcmU6OlN0cmluZyYpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorfQorCiAj
aWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6
YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUqIGZyYW1lLCBHcmFwaGljc0xheWVyKiBncmFw
aGljc0xheWVyKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1dlYktpdC9xdC9D
aGFuZ2VMb2cKaW5kZXggYmEyZjZiMTY3ODBjNjM5OTdiOWIxZGViNWI3OTcyYjYzMzFjYjMzYS4u
ODk5MzhhOGNlZTQxODhjODRlZDJkN2Q4MjAzNWRkNDNlMzExY2Y5MiAxMDA2NDQKLS0tIGEvV2Vi
S2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIg
QEAKKzIwMTAtMDQtMDEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyYW1ld29yayB0byBz
aG93IGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnZhbGlkIGNvbnRyb2xzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTcxOAorCisgICAgICAg
IEFkZCBzdHViIGZ1bmN0aW9ucyBmb3IgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKCksCisg
ICAgICAgIHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlSW50ZXJ2YWxTZWNvbmQoKSwKKyAgICAgICAg
dmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3VudCgpLCBhbmQKKyAgICAgICAgdmFsaWRhdGlvbk1l
c3NhZ2VCbGFja291dFNlY29uZCgpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnVwZGF0ZUZv
cm1WYWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50UXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0Ojp2YWxpZGF0aW9uTWVz
c2FnZVVwZGF0ZUludGVydmFsU2Vjb25kKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVu
dFF0Ojp2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNo
cm9tZUNsaWVudFF0Ojp2YWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0U2Vjb25kKToKKwogMjAxMC0w
Ni0xMCAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRRdC5jcHAgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQu
Y3BwCmluZGV4IGQ4Mzg5YjU3NjQ5NTFjNGI3MDg1YTViM2I5M2NmZTBhM2FmZWIxOWIuLjY5ZDM1
M2Y3NWU3OGQxZjZmNTNlYmI5MTRhNzM5YzA5ZDY4ODViNzEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAKKysrIGIvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcApAQCAtNTI4LDYgKzUyOCwxMSBAQCB2b2lkIENo
cm9tZUNsaWVudFF0OjpjaG9vc2VJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZp
bGVuYW1lcywgRmlsZUNobwogICAgIGNob29zZXItPmljb25Mb2FkZWQoSWNvbjo6Y3JlYXRlSWNv
bkZvckZpbGVzKGZpbGVuYW1lcykpOwogfQogCit2b2lkIENocm9tZUNsaWVudFF0Ojp1cGRhdGVG
b3JtVmFsaWRhdGlvbk1lc3NhZ2UoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudCosIGNv
bnN0IFdlYkNvcmU6OlN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogYm9v
bCBDaHJvbWVDbGllbnRRdDo6c2V0Q3Vyc29yKFBsYXRmb3JtQ3Vyc29ySGFuZGxlKQogewogICAg
IG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50UXQuaCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRR
dC5oCmluZGV4IDAzOTZhZWZkODcwNmU2MWQzNDY5YjBmNDAxNzRjOGRjOWYwYjQ4MWQuLmVmNTMw
MDNiNTkxNjA4Y2UwNzBhYTYwZmVhNWVkNDIwMTUzNDBmZDIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oCisrKyBiL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oCkBAIC0xNTcsNiArMTU3LDEwIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGNob29zZUljb25Gb3JGaWxlcyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYsIEZpbGVDaG9vc2VyKik7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGZv
cm1TdGF0ZURpZENoYW5nZShjb25zdCBOb2RlKikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVu
dCosIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpOworICAgICAgICB2aXJ0dWFsIGRvdWJsZSB2YWxp
ZGF0aW9uTWVzc2FnZVVwZGF0ZUludGVydmFsU2Vjb25kKCkgeyByZXR1cm4gMC4zOyAvKiBGSVhN
RSAqLyB9CisgICAgICAgIHZpcnR1YWwgaW50IHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlQ291bnQo
Y29uc3QgV2ViQ29yZTo6U3RyaW5nJikgeyByZXR1cm4gMjA7IC8qIEZJWE1FICovIH0KKyAgICAg
ICAgdmlydHVhbCBkb3VibGUgdmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29uZCgpIHsgcmV0
dXJuIDAuNjsgLyogRklYTUUgKi8gfQogCiAgICAgICAgIHZpcnR1YWwgUGFzc093blB0cjxIVE1M
UGFyc2VyUXVpcmtzPiBjcmVhdGVIVE1MUGFyc2VyUXVpcmtzKCkgeyByZXR1cm4gMDsgfQogCmRp
ZmYgLS1naXQgYS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCmlu
ZGV4IDg2OWM1MGRiNmY1MjY4NDI1NDRlZWJmZDQzMWU4NThlMWZhYzZlNjkuLmVhZmY0OGNkZmJj
NzUyNGFmYzI2M2NlYTdmM2FkNjYwZTBmN2E2NDggMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vQ2hh
bmdlTG9nCisrKyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTAt
MDQtMDEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyYW1ld29yayB0byBzaG93IGZvcm0g
dmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnZhbGlkIGNvbnRyb2xzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTcxOAorCisgICAgICAgIC0gQWRkIHN0
dWIgZnVuY3Rpb25zIGZvciB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoKSwKKyAgICAgICAg
ICB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUludGVydmFsU2Vjb25kKCksCisgICAgICAgICAgdmFs
aWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3VudCgpLCBhbmQgdmFsaWRhdGlvbk1lc3NhZ2VCbGFja291
dFNlY29uZCgpLgorICAgICAgICAtIEFkZCB2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVt
ZW50QnlJZCgpIGZvciBMYXlvdXRUZXN0Q29udHJvbGxlci4KKworICAgICAgICAqIEludGVyZmFj
ZXMvSVdlYkZyYW1lUHJpdmF0ZS5pZGw6CisgICAgICAgICogSW50ZXJmYWNlcy9XZWJLaXQuaWRs
OiBKdXN0IHRvdWNoLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHA6CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2Fn
ZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAg
IChXZWJDaHJvbWVDbGllbnQ6OnZhbGlkYXRpb25NZXNzYWdlVXBkYXRlQ291bnQpOgorICAgICAg
ICAoV2ViQ2hyb21lQ2xpZW50Ojp2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUludGVydmFsU2Vjb25k
KToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6dmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNl
Y29uZCk6CisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6OnZpc2li
bGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKToKKyAgICAgICAgKiBXZWJGcmFtZS5o
OgorCiAyMDEwLTA2LTEwICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9JbnRlcmZh
Y2VzL0lXZWJGcmFtZVByaXZhdGUuaWRsIGIvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJGcmFt
ZVByaXZhdGUuaWRsCmluZGV4IDFiNzIwOWQwMjdiMWI1MGU4Y2VhYTk0ZDliOTk1ZTk5MTNlNzRi
ZjEuLjI5YTkwNmRhZDJmNGJhNjkzNzllMWVhMGFkYjVmMzE2YjNlYWM0Y2IgMTAwNjQ0Ci0tLSBh
L1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViRnJhbWVQcml2YXRlLmlkbAorKysgYi9XZWJLaXQv
d2luL0ludGVyZmFjZXMvSVdlYkZyYW1lUHJpdmF0ZS5pZGwKQEAgLTExMiw0ICsxMTIsNSBAQCBp
bnRlcmZhY2UgSVdlYkZyYW1lUHJpdmF0ZSA6IElVbmtub3duCiAgICAgSFJFU1VMVCBsYXllclRy
ZWVBc1RleHQoW291dCwgcmV0dmFsXSBCU1RSKiByZXN1bHQpOwogCiAgICAgSFJFU1VMVCBwYWlu
dFNjcm9sbFZpZXdSZWN0VG9Db250ZXh0QXRQb2ludChbaW5dIFJFQ1QgcmVjdCwgW2luXSBQT0lO
VCBwdCwgW2luXSBPTEVfSEFORExFIGRldmljZUNvbnRleHQpOworICAgIEhSRVNVTFQgdmlzaWJs
ZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoW2luXSBCU1RSIGlkLCBbb3V0LCByZXR2
YWxdIEJTVFIqIHJlc3VsdCk7CiB9CmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL0ludGVyZmFjZXMv
V2ViS2l0LmlkbCBiL1dlYktpdC93aW4vSW50ZXJmYWNlcy9XZWJLaXQuaWRsCmluZGV4IGQyNWNk
ZmViZmI2OGE4Y2E0Yjg0MTgxOTk0ZGJjMjMyZWViYzhkZWEuLjg1M2NjMmZkMjkzNGQwM2JiN2I5
ZTc5Y2U0MzQ3MjdhMDg3YTUwMjEgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vSW50ZXJmYWNlcy9X
ZWJLaXQuaWRsCisrKyBiL1dlYktpdC93aW4vSW50ZXJmYWNlcy9XZWJLaXQuaWRsCkBAIC0zMDAs
MyArMzAwLDQgQEAgbGlicmFyeSBXZWJLaXQKICAgICAgICAgW2RlZmF1bHRdIGludGVyZmFjZSBJ
V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuOwogICAgIH0KIH0KKyAKZGlmZiAtLWdpdCBhL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCA1ODc2MzdmMTdlYmUxYjI4Y2Uw
Mjk3YWM1OWFiYjA4Yzg0YjgyYWYzLi4wMThjMzllNzVjZDNmNzA0ZDQxNzhlNTE1OWY1ZWM1OTNm
N2RjNmYwIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHAKKysrIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwCkBAIC00OSw2ICs0OSw3IEBACiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQog
I2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgogI2VuZGlmCisjaW5jbHVkZSA8V2Vi
Q29yZS9IVE1MRm9ybUNvbnRyb2xFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MTmFt
ZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ljb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xvY2Fs
aXplZFN0cmluZ3MuaD4KQEAgLTc3Miw2ICs3NzMsMTEgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6
OnNldEN1cnNvcihQbGF0Zm9ybUN1cnNvckhhbmRsZSBjdXJzb3IpCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50Ojp1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2Uo
SFRNTEZvcm1Db250cm9sRWxlbWVudCogY29udHJvbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZXF1
ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBHZW9sb2NhdGlv
biogZ2VvbG9jYXRpb24pCiB7CiAgICAgQ09NUHRyPElXZWJVSURlbGVnYXRlPiB1aURlbGVnYXRl
OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aCBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggNjk1
NGZkZTY3Mjk2MmEyYWFkNzhjNGY2YmFlMGRkYzliZmU1NTdiZi4uNGY0OTdkNjRmN2M0Zjg4ZmU4
Y2U1MjQ2ODAxNTNhYzIxMmViM2ExMCAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oCkBAIC0zNCw2ICszNCwxMCBAQAogY2xhc3MgV2ViVmlldzsKIGNsYXNz
IFdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGU7CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ7Cit9CisKIGludGVyZmFjZSBJV2ViVUlEZWxl
Z2F0ZTsKIAogY2xhc3MgV2ViQ2hyb21lQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkNocm9tZUNs
aWVudCB7CkBAIC0xMzMsNiArMTM3LDEwIEBAIHB1YmxpYzoKICAgICBXZWJWaWV3KiB3ZWJWaWV3
KCkgY29uc3QgeyByZXR1cm4gbV93ZWJWaWV3OyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZm9ybVN0
YXRlRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6Ok5vZGUqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1l
bnQqLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGludCB2YWxpZGF0aW9u
TWVzc2FnZVVwZGF0ZUNvdW50KGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpIHsgcmV0dXJuIDEwOyB9
CisgICAgdmlydHVhbCBkb3VibGUgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRlcnZhbFNlY29u
ZCgpIHsgcmV0dXJuIDAuNTsgfQorICAgIHZpcnR1YWwgZG91YmxlIHZhbGlkYXRpb25NZXNzYWdl
QmxhY2tvdXRTZWNvbmQoKSB7IHJldHVybiAwLjY7IH0KIAogICAgIHZpcnR1YWwgUGFzc093blB0
cjxXZWJDb3JlOjpIVE1MUGFyc2VyUXVpcmtzPiBjcmVhdGVIVE1MUGFyc2VyUXVpcmtzKCkgeyBy
ZXR1cm4gMDsgfQogCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcCBiL1dlYktp
dC93aW4vV2ViRnJhbWUuY3BwCmluZGV4IDc1YTljOGQyMDM5N2FhNjRkNmJkNmI3MzlhOTdjYzA0
NjVmNTlmOTEuLjA4MjQ3YWIxMTZhMjgzNWI4ZDY4ZDNhOThkMGRlYjFiMGI5MmZjMDIgMTAwNjQ0
Ci0tLSBhL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1dlYktpdC93aW4vV2ViRnJhbWUu
Y3BwCkBAIC0xMDI3LDYgKzEwMjcsMjEgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJG
cmFtZTo6ZmV0Y2hBcHBsaWNhdGlvbkljb24oCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKK0hSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZv
ckVsZW1lbnRCeUlkKEJTVFIgaWQsIEJTVFIqIHJlc3VsdCkKK3sKKyAgICBpZiAoIXJlc3VsdCkK
KyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZSh0
aGlzKTsKKyAgICBpZiAoIWNvcmVGcmFtZSkKKyAgICAgICAgcmV0dXJuIEVfRkFJTDsKKyAgICBF
bGVtZW50KiBlbGVtZW50ID0gY29yZUZyYW1lLT5kb2N1bWVudCgpLT5nZXRFbGVtZW50QnlJZChT
dHJpbmcoaWQsIFN5c1N0cmluZ0xlbihpZCkpKTsKKyAgICBpZiAoIWVsZW1lbnQgfHwgIWVsZW1l
bnQtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpCisgICAgICAgIHJldHVybiBFX0ZBSUw7CisgICAg
SFRNTEZvcm1Db250cm9sRWxlbWVudCogZm9ybUNvbnRyb2wgPSBzdGF0aWNfY2FzdDxIVE1MRm9y
bUNvbnRyb2xFbGVtZW50Kj4oZWxlbWVudCk7CisgICAgKnJlc3VsdCA9IEJTdHJpbmcoZm9ybUNv
bnRyb2wtPnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSgpKS5yZWxlYXNlKCk7CisgICAgcmV0dXJu
IFNfT0s7Cit9CisKIC8vIElXZWJEb2N1bWVudFRleHQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJGcmFtZTo6c3VwcG9ydHNUZXh0RW5jb2RpbmcoIApkaWZmIC0tZ2l0IGEvV2Vi
S2l0L3dpbi9XZWJGcmFtZS5oIGIvV2ViS2l0L3dpbi9XZWJGcmFtZS5oCmluZGV4IGQ4MzlmMTdi
ZWY5ODg1YjRkYmJiNjgxMmU3MmM2OWM0NjFhMGMyMDIuLjE5MWIzYTU5MWZiMzljMTIxZTdmZDQ2
MjJkMWQyNWFjZmUxYzkwYmUgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViRnJhbWUuaAorKysg
Yi9XZWJLaXQvd2luL1dlYkZyYW1lLmgKQEAgLTI3MSw2ICsyNzEsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHZpc2libGVDb250ZW50UmVjdChSRUNU
Kik7CiAKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbGF5ZXJUcmVlQXNU
ZXh0KEJTVFIqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdmlzaWJs
ZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoQlNUUiBpZCwgQlNUUiogcmVzdWx0KTsK
IAogICAgIC8vIElXZWJEb2N1bWVudFRleHQKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgc3VwcG9ydHNUZXh0RW5jb2RpbmcoIApkaWZmIC0tZ2l0IGEvV2ViS2l0L3d4L0No
YW5nZUxvZyBiL1dlYktpdC93eC9DaGFuZ2VMb2cKaW5kZXggNjNhM2VkMDgwMTI4ZGZjZWE4ZTQw
NDI4ODdiNjQyYzVkZDQyZGUwOC4uZTRmZjEzODY2YzUwMmJjNzZlMGZkY2Y2MmJhM2JkMWIxNjZm
NTIwYyAxMDA2NDQKLS0tIGEvV2ViS2l0L3d4L0NoYW5nZUxvZworKysgYi9XZWJLaXQvd3gvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMDQtMDEgIEtlbnQgVGFtdXJhICA8dGtlbnRA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEZyYW1ld29yayB0byBzaG93IGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnZh
bGlkIGNvbnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zMTcxOAorCisgICAgICAgIEFkZCBzdHViIGZ1bmN0aW9ucyBmb3IgdXBkYXRlRm9ybVZh
bGlkYXRpb25NZXNzYWdlKCksCisgICAgICAgIHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlSW50ZXJ2
YWxTZWNvbmQoKSwKKyAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3VudCgpLCBhbmQK
KyAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29uZCgpLgorCisgICAgICAgICog
V2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJv
bWVDbGllbnRXeDo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgKiBXZWJL
aXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4Lmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGll
bnRXeDo6dmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRlcnZhbFNlY29uZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6dmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6dmFsaWRhdGlvbk1lc3NhZ2VCbGFja291
dFNlY29uZCk6CisKIDIwMTAtMDYtMDkgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RA
Z21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI2MDg4OS4KZGlm
ZiAtLWdpdCBhL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcCBiL1dl
YktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcAppbmRleCBhMTk2NDRkYmQ4
N2Q4M2YxNGQwMmY3MGYwZjI4MDk5MmFkYmMzZGYxLi44NzdmNjZlZDlkOTk1ZTRiMjBjYjBiMjMx
ZTFiOTBkN2YyNzdhNzcyIDEwMDY0NAotLS0gYS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJv
bWVDbGllbnRXeC5jcHAKKysrIGIvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50
V3guY3BwCkBAIC00NDcsNiArNDQ3LDExIEBAIHZvaWQgQ2hyb21lQ2xpZW50V3g6OmNob29zZUlj
b25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBGaWxlQ2hvCiAgICAg
Y2hvb3Nlci0+aWNvbkxvYWRlZChJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoZmlsZW5hbWVzKSk7
CiB9CiAKK3ZvaWQgQ2hyb21lQ2xpZW50V3g6OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShX
ZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJikK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiBib29sIENocm9tZUNsaWVudFd4OjpzZXRD
dXJzb3IoUGxhdGZvcm1DdXJzb3JIYW5kbGUpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlm
ZiAtLWdpdCBhL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmggYi9XZWJL
aXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5oCmluZGV4IGI5MDBmM2VlZWY2ZTdk
MmUwYWNkNmI5YmUwNmZkZDNjZTExMWYxNWEuLjQ3NzgwOWFkZjhmNTU2ZDU4ODQ3ZTJlMjRiZGY5
MmY5ODU3Y2Q0NDcgMTAwNjQ0Ci0tLSBhL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNs
aWVudFd4LmgKKysrIGIvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaApA
QCAtMTMxLDYgKzEzMSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNob29zZUljb25G
b3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEZpbGVDaG9vc2VyKik7CiAKICAgICB2aXJ0
dWFsIHZvaWQgZm9ybVN0YXRlRGlkQ2hhbmdlKGNvbnN0IE5vZGUqKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJv
bEVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGRvdWJsZSB2
YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUludGVydmFsU2Vjb25kKCkgeyByZXR1cm4gMC4zOyAvKiBG
SVhNRSAqLyB9CisgICAgdmlydHVhbCBpbnQgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3VudChj
b25zdCBXZWJDb3JlOjpTdHJpbmcmKSB7IHJldHVybiAyMDsgLyogRklYTUUgKi8gfQorICAgIHZp
cnR1YWwgZG91YmxlIHZhbGlkYXRpb25NZXNzYWdlQmxhY2tvdXRTZWNvbmQoKSB7IHJldHVybiAw
LjY7IC8qIEZJWE1FICovIH0KIAogICAgIHZpcnR1YWwgUGFzc093blB0cjxIVE1MUGFyc2VyUXVp
cmtzPiBjcmVhdGVIVE1MUGFyc2VyUXVpcmtzKCkgeyByZXR1cm4gMDsgfQogCmRpZmYgLS1naXQg
YS9XZWJLaXQyL0NoYW5nZUxvZyBiL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGJkNDhmOWU3ODYy
ODMwMzUxOTYwNGM0NTM0NTdmMDg3MDg2MWRjMjUuLjE2YTU3YTFkZDczZmUxYTE3Njc4ZTVkODZj
Mjk3MjU5NWU5MTIxNDcgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1dlYktp
dDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMDQtMDEgIEtlbnQgVGFtdXJhICA8
dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEZyYW1ld29yayB0byBzaG93IGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdlIGZv
ciBpbnZhbGlkIGNvbnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zMTcxOAorCisgICAgICAgIEFkZCBzdHViIGZ1bmN0aW9ucyBmb3IgdXBkYXRl
Rm9ybVZhbGlkYXRpb25NZXNzYWdlKCksCisgICAgICAgIHZhbGlkYXRpb25NZXNzYWdlVXBkYXRl
SW50ZXJ2YWxTZWNvbmQoKSwKKyAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3VudCgp
LCBhbmQKKyAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29uZCgpLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2Fn
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojp2YWxpZGF0aW9uTWVzc2FnZVVw
ZGF0ZUludGVydmFsU2Vjb25kKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojp2
YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUNvdW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21l
Q2xpZW50Ojp2YWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0U2Vjb25kKToKKwogMjAxMC0wNi0wOSAg
SWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IGU0NDM1MzBkYWFjYzU4ZjVjMTgyODFjMGEx
ZmY3ZjQwZTU2Y2QzNDYuLmFmMmFhODE5YTAwZGY4MGQ5YmY3NDFjZTY2NDU5ZjM2ZDg0YzQzNmEg
MTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwCisrKyBiL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuY3BwCkBAIC00MzIsNiArNDMyLDExIEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpm
b3JtRGlkQmx1cihjb25zdCBOb2RlKikKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lk
IFdlYkNocm9tZUNsaWVudDo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKFdlYkNvcmU6OkhU
TUxGb3JtQ29udHJvbEVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKIFBhc3NPd25QdHI8SFRNTFBhcnNlclF1aXJrcz4gV2ViQ2hy
b21lQ2xpZW50OjpjcmVhdGVIVE1MUGFyc2VyUXVpcmtzKCkKIHsKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oCmluZGV4IGZlNWYxNGE3NWJkN2Q2MDZiNTdhM2VmZGEyYTMxZDBhYjBmZDFlZDQu
LjkyZmYyNTk2MWRjMjVhZGM2YTdmMTU3YWJmOWVjNDIzNjA4MTUxZjMgMTAwNjQ0Ci0tLSBhL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTE1
OSw2ICsxNTksMTAgQEAgcHJpdmF0ZToKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgZm9ybURpZEZv
Y3VzKGNvbnN0IFdlYkNvcmU6Ok5vZGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgZm9ybURpZEJsdXIo
Y29uc3QgV2ViQ29yZTo6Tm9kZSopOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGb3JtVmFsaWRh
dGlvbk1lc3NhZ2UoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudCosIGNvbnN0IFdlYkNv
cmU6OlN0cmluZyYpOworICAgIHZpcnR1YWwgZG91YmxlIHZhbGlkYXRpb25NZXNzYWdlVXBkYXRl
SW50ZXJ2YWxTZWNvbmQoKSB7IHJldHVybiAwLjM7IC8qIEZJWE1FICovIH0KKyAgICB2aXJ0dWFs
IGludCB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUNvdW50KGNvbnN0IFdlYkNvcmU6OlN0cmluZyYp
IHsgcmV0dXJuIDIwOyAvKiBGSVhNRSAqLyB9CisgICAgdmlydHVhbCBkb3VibGUgdmFsaWRhdGlv
bk1lc3NhZ2VCbGFja291dFNlY29uZCgpIHsgcmV0dXJuIDAuNjsgLyogRklYTUUgKi8gfQogICAg
IAogICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJDb3JlOjpIVE1MUGFyc2VyUXVpcmtzPiBjcmVh
dGVIVE1MUGFyc2VyUXVpcmtzKCk7CiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCA1Y2Y5Y2MxMzkwZmE2MjM3MzNlODQ5M2Iw
MDZkODdmZWNmOTkyODMxLi4wMGE4YTRiMDk4ZWQ4MDNmZWY3OTU5MWVkZDMzNzk4YzY0NWQ0MTcw
IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTAtMDQtMDEgIEtlbnQgVGFtdXJhICA8dGtlbnRA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEZyYW1ld29yayB0byBzaG93IGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnZh
bGlkIGNvbnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zMTcxOAorCisgICAgICAgIEFkZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6dmlzaWJsZVZh
bGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoKS4KKyAgICAgICAgV2luZG93cyBhbmQgTWFj
IGhhdmUgd29ya2FibGUgaW1wbGVtZW50YXRpb25zLgorCisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAodmlzaWJsZVZhbGlkYXRpb25N
ZXNzYWdlRm9yRWxlbWVudEJ5SWRDYWxsYmFjayk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0
Q29udHJvbGxlckd0ay5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6dmlzaWJs
ZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjp2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZCk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcDoKKyAg
ICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjp2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JF
bGVtZW50QnlJZCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRy
b2xsZXJXeC5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6dmlzaWJsZVZhbGlk
YXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQpOgorCiAyMDEwLTA2LTA5ICBBZGFtIEJhcnRoICA8
YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2phbiBWYWZhaS4KZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cAppbmRleCBiOTZhOWM5YzU2YTQzNzE1MTdlZmY3ZTVlYjA5ZTJkYjkyYTgxZmI4Li5hOWM2NGZl
NzBmYjdlOTAyZGJlNTk0NWI0OTJlYmZlZjhmNjQ1ZGYxIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC05OTMsNiArOTkz
LDIwIEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWRDYWxsYmFj
ayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiB2aXNpYmxlVmFsaWRhdGlv
bk1lc3NhZ2VGb3JFbGVtZW50QnlJZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09i
amVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50
Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCisgICAgICAgIHJldHVybiBKU1ZhbHVl
TWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gZWxl
bWVudElkKEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1swXSwg
ZXhjZXB0aW9uKSk7CisgICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKKworICAgIExheW91dFRlc3RD
b250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIq
PihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBtZXNzYWdlKGNvbnRyb2xsZXItPnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVs
ZW1lbnRCeUlkKGVsZW1lbnRJZC5nZXQoKSkpOworICAgIGlmICghbWVzc2FnZS5nZXQoKSkKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworICAgIHJldHVybiBK
U1ZhbHVlTWFrZVN0cmluZyhjb250ZXh0LCBtZXNzYWdlLmdldCgpKTsKK30KKwogc3RhdGljIEpT
VmFsdWVSZWYgc2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHNDYWxsYmFjayhKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNP
YmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1td
LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgLy8gSGFzIG1hYyAmIHdpbmRvd3MgaW1w
bGVtZW50YXRpb24KQEAgLTE2NjUsNiArMTY3OSw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91
dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJzaG93V2ViSW5z
cGVjdG9yIiwgc2hvd1dlYkluc3BlY3RvckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInRl
c3RPbnNjcmVlbiIsIHRlc3RPbnNjcmVlbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInRl
c3RSZXBhaW50IiwgdGVzdFJlcGFpbnRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJ2aXNp
YmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZCIsIHZpc2libGVWYWxpZGF0aW9uTWVz
c2FnZUZvckVsZW1lbnRCeUlkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAid2FpdEZvclBv
bGljeURlbGVnYXRlIiwgd2FpdEZvclBvbGljeURlbGVnYXRlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAg
ICAgICAgeyAid2FpdFVudGlsRG9uZSIsIHdhaXRVbnRpbERvbmVDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAog
ICAgICAgICB7ICJ3aW5kb3dDb3VudCIsIHdpbmRvd0NvdW50Q2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
LmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmlu
ZGV4IDhmZjM4ZDEwOTAxMGY0ZTk2ODJkYTJiODdlOGVmMTg2YzQxMWMyYTguLjEwZjdhNGQ1Njhj
Y2Y1ZGEzOGFhMjU3YzZkM2JjZjc1ZGE1ZTA5YjIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChib29sIGVuYWJsZSk7
CiAgICAgdm9pZCBzZXRTY3JvbGxiYXJQb2xpY3koSlNTdHJpbmdSZWYgb3JpZW50YXRpb24sIEpT
U3RyaW5nUmVmIHBvbGljeSk7CiAgICAgdm9pZCBzZXRFZGl0aW5nQmVoYXZpb3IoY29uc3QgY2hh
ciogZWRpdGluZ0JlaGF2aW9yKTsKLQorICAgIEpTU3RyaW5nUmVmIHZpc2libGVWYWxpZGF0aW9u
TWVzc2FnZUZvckVsZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGlkKTsKICAgICB2b2lkIHdhaXRGb3JQ
b2xpY3lEZWxlZ2F0ZSgpOwogICAgIHNpemVfdCB3ZWJIaXN0b3J5SXRlbUNvdW50KCk7CiAgICAg
dW5zaWduZWQgd29ya2VyVGhyZWFkQ291bnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCmlu
ZGV4IGU4Yjg2Mjc1ODUyZGNiNWNlMWQxOWQ2ZGE1ZmJhNTFhMDE1NDlkNjMuLjg3YjVhNmZiZmIy
ODhmZTI0MmJiZmE1YTNmYThiNjIxZWQ2NzI5MGEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKKysrIGIvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcApAQCAt
Njc2LDYgKzY3NiwxMiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphcGlUZXN0R29Ub0N1
cnJlbnRCYWNrRm9yd2FyZEl0ZW0oKQogCiB9CiAKK0pTU3RyaW5nUmVmIExheW91dFRlc3RDb250
cm9sbGVyOjp2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZChKU1N0cmluZ1Jl
ZiBpZCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCisgICAgcmV0dXJuIDA7Cit9
CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFdlYlZpZXdFZGl0YWJsZShib29sKQog
ewogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRl
c3RDb250cm9sbGVyTWFjLm1tIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91
dFRlc3RDb250cm9sbGVyTWFjLm1tCmluZGV4IGViMDEwOTAwMjZiN2Y5ZjZhYzNjZjQzYmI1NmYw
M2NkMjYyNzM5YzguLjM1NDJiNjI0NmM2MzJmMzZkZDg1NDkzYjA5YzhkOWVhMGNmN2Q3NjUgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJv
bGxlck1hYy5tbQorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVz
dENvbnRyb2xsZXJNYWMubW0KQEAgLTc1NCw2ICs3NTQsMTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6YXBpVGVzdEdvVG9DdXJyZW50QmFja0ZvcndhcmRJdGVtKCkKICAgICBbdmlldyBn
b1RvQmFja0ZvcndhcmRJdGVtOltbdmlldyBiYWNrRm9yd2FyZExpc3RdIGN1cnJlbnRJdGVtXV07
CiB9CiAKK0pTU3RyaW5nUmVmIExheW91dFRlc3RDb250cm9sbGVyOjp2aXNpYmxlVmFsaWRhdGlv
bk1lc3NhZ2VGb3JFbGVtZW50QnlJZChKU1N0cmluZ1JlZiBpZCkKK3sKKyAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IGlkQ0YoQWRvcHRDRiwgSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgaWQpKTsKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmco
KENGU3RyaW5nUmVmKVttYWluRnJhbWUgdmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVu
dEJ5SWQ6KE5TU3RyaW5nKilpZENGLmdldCgpXSk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldFdlYlZpZXdFZGl0YWJsZShib29sIGVkaXRhYmxlKQogewogICAgIFdlYlZpZXcg
KnZpZXcgPSBbbWFpbkZyYW1lIHdlYlZpZXddOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcCBiL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKaW5kZXggYzcw
YjUxN2ZlYmY3NDA2YjE1MmZjZmNjNDA0NDA1YjY2ZjcwN2RiYS4uNmVlMzAxZWUzMTYwOTVlZjZk
NmU5YzEzOWMwOGI4NmQxNmY2ZTZjNSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAorKysgYi9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCkBAIC0xMjYwLDYg
KzEyNjAsMTkgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YXBpVGVzdEdvVG9DdXJyZW50
QmFja0ZvcndhcmRJdGVtKCkKICAgICB3ZWJWaWV3LT5nb1RvQmFja0ZvcndhcmRJdGVtKGl0ZW0u
Z2V0KCksICZzdWNjZXNzKTsKIH0KIAorSlNTdHJpbmdSZWYgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGlkKQor
eworICAgIENPTVB0cjxJV2ViRnJhbWVQcml2YXRlPiBmcmFtZVByaXZhdGUoUXVlcnksIGZyYW1l
KTsKKyAgICBpZiAoIWZyYW1lUHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgQlNUUiBt
ZXNzYWdlQlNUUjsKKyAgICBpZiAoRkFJTEVEKGZyYW1lUHJpdmF0ZS0+dmlzaWJsZVZhbGlkYXRp
b25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoYnN0clQoaWQpLkdldEJTVFIoKSwgJm1lc3NhZ2VCU1RS
KSkpCisgICAgICAgIHJldHVybiAwOworICAgIEpTU3RyaW5nUmVmIG1lc3NhZ2VKUyA9IEpTU3Ry
aW5nQ3JlYXRlV2l0aEJTVFIobWVzc2FnZUJTVFIpOworICAgIFN5c0ZyZWVTdHJpbmcobWVzc2Fn
ZUJTVFIpOworICAgIHJldHVybiBtZXNzYWdlSlM7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldFdlYlZpZXdFZGl0YWJsZShib29sKQogewogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAppbmRl
eCAyNjU4MDJkMjEwMjZlMTdjZjNhZDRhZTU0NzRjYTVlM2E2YTdlNThiLi43ODg2MGM2MThkMTdi
Yzg4ZjM2MTBhODg0MTYzZDIxMWI2YzdlNjExIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAorKysgYi9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcApAQCAtNDE5LDYg
KzQxOSwxMiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRTcGF0aWFsTmF2aWdhdGlv
bkVuYWJsZWQoYm9vbCkKIAogfQogCitKU1N0cmluZ1JlZiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWQpCit7
CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAgIHJldHVybiAwOworfQorCiB2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpzZXRXZWJWaWV3RWRpdGFibGUoYm9vbCkKIHsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70593</attachid>
            <date>2010-10-13 02:54:48 -0700</date>
            <delta_ts>2010-10-13 03:32:46 -0700</delta_ts>
            <desc>Patch rev.10</desc>
            <filename>bug-31718-20101013185445.patch</filename>
            <type>text/plain</type>
            <size>34941</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyYTIxM2ZiYzczYjQyNjA4NTE0NTAwMzc5ZTY0ZWUzMjBkOTU3MWM2Li44Yjc0Yzlj
OTEyODM3OGY0NjdmYmIxZmEyMjQ4YTI0NWZkZTcwNmU1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTAtMDQtMDEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyYW1ld29yayB0byBzaG93
IGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnZhbGlkIGNvbnRyb2xzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTcxOAorCisgICAgICAgIEFk
ZCBhIHRlc3QgdG8gY2hlY2sgYSB2aXNpYmxlIHZhbGlkYXRpb24gbWVzc2FnZS4KKyAgICAgICAg
VGhlIG1lc3NhZ2Ugc2hvdWxkIGJlIGF2YWlsYWJsZSBvbmx5IHdoZW4gdGhlIGNvbnRyb2wgaGFz
IGZvY3VzLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvdmlzaWJsZS12YWxp
ZGF0aW9uLW1lc3NhZ2UuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvdmlzaWJsZS12
YWxpZGF0aW9uLW1lc3NhZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zv
cm1zL3Zpc2libGUtdmFsaWRhdGlvbi1tZXNzYWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAorICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6CisKIDIwMTAtMTAt
MTEgIFByYXNhZCBUYW1tYW5hICA8cHJhc2FkdEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRG1pdHJ5IFRpdG92LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9zY3JpcHQtdGVzdHMvdmlzaWJsZS12YWxpZGF0aW9uLW1lc3NhZ2UuanMgYi9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy92aXNpYmxlLXZhbGlkYXRpb24tbWVzc2FnZS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44OTQzZGE4MmM1NDkzNjNjMTBjNzQwYmUwNjE2MGNiNTk3NTUyZmE2Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvdmlzaWJs
ZS12YWxpZGF0aW9uLW1lc3NhZ2UuanMKQEAgLTAsMCArMSwzOCBAQAorZGVzY3JpcHRpb24oJ1Rl
c3QgZm9yIHZhbGlkYXRpb24gbWVzc2FnZSByZXF1ZXN0cyBmcm9tIGFuIEhUTUxGb3JtQ29udHJv
bEVsZW1lbnQuJyk7CisKK3ZhciBwYXJlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYn
KTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocGFyZW50KTsKK3BhcmVudC5pbm5lckhUTUw9
ICc8Zm9ybT4nCisgICAgKyAnPGlucHV0IGlkPWkxIG5hbWU9aTEgcmVxdWlyZWQ+JworICAgICsg
JzwvZm9ybT4nOworCit2YXIgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaTEnKTsK
K2RlYnVnKCdJbnZhbGlkIGFuZCBubyBmb2N1cycpOworc2hvdWxkQmVGYWxzZSgnaW5wdXQudmFs
aWRpdHkudmFsaWQnKTsKK3Nob3VsZEJlVHJ1ZSgnaW5wdXQudmFsaWRhdGlvbk1lc3NhZ2UubGVu
Z3RoID4gMCcpOworc2hvdWxkQmUoJ2xheW91dFRlc3RDb250cm9sbGVyLnZpc2libGVWYWxpZGF0
aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKCJpMSIpJywgJyIiJyk7CisKK2RlYnVnKCdJbnZhbGlk
IGFuZCBmb2N1c2VkJyk7CitpbnB1dC5mb2N1cygpOworc2hvdWxkQmUoJ2xheW91dFRlc3RDb250
cm9sbGVyLnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKCJpMSIpJywgJ2lu
cHV0LnZhbGlkYXRpb25NZXNzYWdlJyk7CisKK2RlYnVnKCdJbnZhbGlkLCBmb2N1c2VkLCBhbmQg
d2hpdGVzcGFjZS1vbmx5IGN1c3RvbSBtZXNzYWdlJyk7CitpbnB1dC5zZXRDdXN0b21WYWxpZGl0
eSgiICAgIik7CitpbnB1dC5ibHVyKCk7CitpbnB1dC5mb2N1cygpOworc2hvdWxkQmUoJ2xheW91
dFRlc3RDb250cm9sbGVyLnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKCJp
MSIpJywgJyIiJyk7CisKK2RlYnVnKCdJbnZhbGlkLCBmb2N1c2VkLCBhbmQgdGl0bGUgYXR0cmli
dXRlJyk7CitpbnB1dC5zZXRDdXN0b21WYWxpZGl0eSgiIik7CitpbnB1dC50aXRsZSA9ICdZb3Ug
bmVlZCB0byBzcGVjaWZ5IGEgdmFsdWUuJzsKK2lucHV0LmJsdXIoKTsKK2lucHV0LmZvY3VzKCk7
CitzaG91bGRCZSgnbGF5b3V0VGVzdENvbnRyb2xsZXIudmlzaWJsZVZhbGlkYXRpb25NZXNzYWdl
Rm9yRWxlbWVudEJ5SWQoImkxIiknLCAnaW5wdXQudmFsaWRhdGlvbk1lc3NhZ2UgKyAiXFxuIiAr
IGlucHV0LnRpdGxlJyk7CisKK2RlYnVnKCdJbnZhbGlkLCBmb2N1c2VkLCB0aXRsZSBhdHRyaWJ1
dGUsIGFuZCB3aGl0ZXNwYWNlLW9ubHkgY3VzdG9tIG1lc3NhZ2UnKTsKK2lucHV0LnNldEN1c3Rv
bVZhbGlkaXR5KCIgICAiKTsKK2lucHV0LmJsdXIoKTsKK2lucHV0LmZvY3VzKCk7CitzaG91bGRC
ZSgnbGF5b3V0VGVzdENvbnRyb2xsZXIudmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVu
dEJ5SWQoImkxIiknLCAnIiInKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Zpc2libGUtdmFsaWRhdGlvbi1tZXNz
YWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdmlzaWJsZS12YWxpZGF0
aW9uLW1lc3NhZ2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzZGViMDczMWFkZjBlMWY3OWM4
NjRmNjMxMDE1M2Q3YzJkYTdiZmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL3Zpc2libGUtdmFsaWRhdGlvbi1tZXNzYWdlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDIxIEBACitUZXN0IGZvciB2YWxpZGF0aW9uIG1lc3NhZ2UgcmVxdWVzdHMgZnJvbSBhbiBIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworSW52
YWxpZCBhbmQgbm8gZm9jdXMKK1BBU1MgaW5wdXQudmFsaWRpdHkudmFsaWQgaXMgZmFsc2UKK1BB
U1MgaW5wdXQudmFsaWRhdGlvbk1lc3NhZ2UubGVuZ3RoID4gMCBpcyB0cnVlCitQQVNTIGxheW91
dFRlc3RDb250cm9sbGVyLnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKCJp
MSIpIGlzICIiCitJbnZhbGlkIGFuZCBmb2N1c2VkCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVy
LnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKCJpMSIpIGlzIGlucHV0LnZh
bGlkYXRpb25NZXNzYWdlCitJbnZhbGlkLCBmb2N1c2VkLCBhbmQgd2hpdGVzcGFjZS1vbmx5IGN1
c3RvbSBtZXNzYWdlCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnZpc2libGVWYWxpZGF0aW9u
TWVzc2FnZUZvckVsZW1lbnRCeUlkKCJpMSIpIGlzICIiCitJbnZhbGlkLCBmb2N1c2VkLCBhbmQg
dGl0bGUgYXR0cmlidXRlCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnZpc2libGVWYWxpZGF0
aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKCJpMSIpIGlzIGlucHV0LnZhbGlkYXRpb25NZXNzYWdl
ICsgIlxuIiArIGlucHV0LnRpdGxlCitJbnZhbGlkLCBmb2N1c2VkLCB0aXRsZSBhdHRyaWJ1dGUs
IGFuZCB3aGl0ZXNwYWNlLW9ubHkgY3VzdG9tIG1lc3NhZ2UKK1BBU1MgbGF5b3V0VGVzdENvbnRy
b2xsZXIudmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoImkxIikgaXMgIiIK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Zpc2libGUtdmFsaWRhdGlvbi1tZXNzYWdl
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Zpc2libGUtdmFsaWRhdGlvbi1tZXNzYWdl
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGI5MjgyNTJjOTYzYzNlNmUyZDFjMzdjZGEzNjUzMjEwOTliYWQ2
MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdmlzaWJsZS12YWxp
ZGF0aW9uLW1lc3NhZ2UuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJM
SUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy92aXNpYmxl
LXZhbGlkYXRpb24tbWVzc2FnZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0
YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRp
b25zLnR4dAppbmRleCA0ZmMzMWNhMTQyZjczNWI2MzcyMGZmMjQwZDBhZjRkZjQ1ZThkYzlhLi45
MTFlYjAyODcwMWE1YjMzN2ExMDVlODQ5YjhmNDQ4MTVkY2VmNmJjIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC02MjUs
NiArNjI1LDkgQEAgQlVHODYzMCBXSU4gTElOVVggOiBmYXN0L3RleHQvZm9udC1pbml0aWFsLmh0
bWwgPSBGQUlMCiAvLyBlcnJvciBpbiB0aGUgaGVhZGVyIG9mIHRoZSBmb2xsb3dpbmcgdGVzdC4K
IEJVRzI0MTk3IFNLSVAgOiBmYXN0L2Nzcy9kaXNhYmxlZC1hdXRob3Itc3R5bGVzLmh0bWwgPSBG
QUlMCiAKKy8vIE5lZWQgbGF5b3V0VGVzdENvbnRyb2xsZXIudmlzaWJsZVZhbGlkYXRpb25NZXNz
YWdlRm9yRWxlbWVudEJ5SWQoKQorQlVHV0szMTcxOCA6IGZhc3QvZm9ybXMvdmlzaWJsZS12YWxp
ZGF0aW9uLW1lc3NhZ2UuaHRtbCA9IFRFWFQKKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIE90aGVyCiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAppbmRleCA1N2M1NDhiZWRlOWUzOTM2ZWE1
OWU0ZDk2YjQwZWY0ZTRkZjhiOWZkLi5iN2U5ODhkNjk1MWIzOWZiZWVlMjNkYzNlNjQ5YTgxMzY2
MWNlNDIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZApAQCAtNTkwOCwzICs1OTA4LDUgQEAg
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvYmFkLXN1Yi1wcm90b2NvbC1jb250cm9sLWNoYXJz
Lmh0bWwKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MjQ0CiBl
ZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YVRyYW5zZmVyLXNldERhdGEtZ2V0RGF0YS5odG1sCiAKKyMg
TWlzc2luZyBsYXlvdXRUZXN0Q29udHJvbGxlci52aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JF
bGVtZW50QnlJZAorZmFzdC9mb3Jtcy92aXNpYmxlLXZhbGlkYXRpb24tbWVzc2FnZS5odG1sCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vcXQvU2tpcHBlZAppbmRleCBhOWI1OGU0ZjA3MjE1MGMyZjQyZTY2ZWE1NWUzNGUy
Mjk0MzhmZGY2Li5kMzRjMjQxZDYwMmRmODdmMDk0OTdiOGEyYmJlMzY1NDkxM2UyMTczIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3F0L1NraXBwZWQKQEAgLTc5Nyw2ICs3OTcsOSBAQCBmYXN0L3J1YnkvcnVieURP
TS1yZW1vdmUtcnQyLmh0bWwKIGZhc3QvcnVieS9ydWJ5RE9NLXJlbW92ZS10ZXh0MS5odG1sCiBm
YXN0L3J1YnkvcnVieURPTS1yZW1vdmUtdGV4dDIuaHRtbAogCisjIE1pc3NpbmcgbGF5b3V0VGVz
dENvbnRyb2xsZXIudmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQKK2Zhc3Qv
Zm9ybXMvdmlzaWJsZS12YWxpZGF0aW9uLW1lc3NhZ2UuaHRtbAorCiAjID09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09ICMKICMgLS0tLS0tLSBmYWlsaW5nIGVkaXRpbmcvaW5wdXQgdGVzdHMKICMgPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0gIwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCA2MGM1NzlhYjJkNzgwZmJkYWJmYjdiODkwMWMzMGNmZDAzMGI5YWQ3
Li40NmU5ZmQ4MzBhODFjMzhhZjRiNTc1OWQzODMwZTc4NDViZTBmMzM1IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBA
CisyMDEwLTA0LTAxICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGcmFtZXdvcmsgdG8gc2hv
dyBmb3JtIHZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW52YWxpZCBjb250cm9scworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE3MTgKKworICAgICAgICBB
biBIVE1MRm9ybUNvbnRyb2xFbGVtZW50IGNhbGxzIENocm9tZTo6dXBkYXRlRm9ybVZhbGlkYXRp
b25NZXNzYWdlKCkKKyAgICAgICAgd2hlbiBpdCBnZXRzIGZvY3VzIGFuZCBsb29zZXMgZm9jdXMu
IENocm9tZTo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKCkKKyAgICAgICAgbWFuYWdlcyBy
ZXF1ZXN0cyBmcm9tIG11bHRpcGxlIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQgaW5zdGFuY2VzOgor
ICAgICAgICAtIFBlcmlvZGljYWxseSBjYWxscyBDaHJvbWU6OnVwZGF0ZUZvcm1WYWxpZGF0aW9u
TWVzc2FnZUltbWVkaWF0ZWx5KCkKKyAgICAgICAgICB0byBmb2xsb3cgZWxlbWVudCBwb3NpdGlv
biBjaGFuZ2UuCisgICAgICAgIC0gSWYgYSBtZXNzYWdlIGlzIHNob3duIGZvciBhIGNvbnRyb2wg
YW5kIHRoZSBmb2N1cyBpcyBjaGFuZ2VkIHRvCisgICAgICAgICAgYW5vdGhlciBpbnZhbGlkIGNv
bnRyb2wsIGhpZGUgdGhlIGN1cnJlbnQgbWVzc2FnZSwgd2FpdCBhIGxpdHRsZSwKKyAgICAgICAg
ICB0aGVuIHNob3cgYSBtZXNzYWdlIGZvciBhbm90aGVyIGNvbnRyb2wuCisgICAgICAgIC0gSWYg
YSBtZXNzYWdlIGZvciBhIGNvbnRyb2wgaXMgc2hvd24gYW5kIGFub3RoZXIgbWVzc2FnZSBmb3Ig
dGhlCisgICAgICAgICAgY29udHJvbCBpcyByZXF1ZXN0ZWQsIGhpZGUgdGhlIGN1cnJlbnQgbWVz
c2FnZSwgd2FpdCBhIGxpdHRsZSwKKyAgICAgICAgICB0aGVuIHNob3cgdGhlIG5ldyBtZXNzYWdl
LgorCisgICAgICAgIFRlc3Q6IGZhc3QvZm9ybXMvdmlzaWJsZS12YWxpZGF0aW9uLW1lc3NhZ2Uu
aHRtbAorCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRldGFjaCk6CisgICAgICAgICAg
QWRkIGEgY2FsbCB0byB1cGRhdGVWaXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKS4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldE5lZWRzV2lsbFZhbGlkYXRlQ2hl
Y2spOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnVw
ZGF0ZVZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgICAgQWRkZWQuIENhbGxzIENo
cm9tZTo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKCkgaWYgdGhlIHN0YXR1cworICAgICAg
ICAgIGlzIGNoYW5nZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50
OjpzZXROZWVkc1ZhbGlkaXR5Q2hlY2spOgorICAgICAgICAgIEFkZCBhIGNhbGwgdG8gdXBkYXRl
VmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlKCkuCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNv
bnRyb2xFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZlbnQpOiBkaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KTogZGl0dG8uCisg
ICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UpOgorICAg
ICAgICAgIEFkZGVkIHRoZSBkZWNsYXJhdGlvbi4KKyAgICAgICAgKiBwYWdlL0Nocm9tZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUNvdW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZTo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKTogU2VlIGFi
b3ZlLgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpzdGFydFZhbGlkYXRpb25NZXNzYWdlQmxh
Y2tvdXQpOgorICAgICAgICAgIEEgaGVscGVyIGZvciB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3Nh
Z2UoKS4KKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6dmFsaWRhdGlvbk1lc3NhZ2VUaW1lckZp
cmVkKTpkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6dXBkYXRlRm9ybVZhbGlkYXRp
b25NZXNzYWdlSW1tZWRpYXRlbHkpOiBkaXR0by4KKyAgICAgICAgKiBwYWdlL0Nocm9tZS5oOgor
CiAyMDEwLTEwLTExICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
RWxlbWVudC5jcHAKaW5kZXggMjA4MGQ5MWMzY2E3ZmY1OTFkNDQwNWNlNjEwZDhlYjlhOGQ0Nzdl
Yy4uZDQ5ZmU3MDBlMGU1YTY5MmRiNDA1N2NiM2E1N2E3YWZiMGU0MjU1NiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtNzUsNiArNzUsMTIgQEAgSFRNTEZvcm1D
b250cm9sRWxlbWVudDo6fkhUTUxGb3JtQ29udHJvbEVsZW1lbnQoKQogICAgICAgICBtX2Zvcm0t
PnJlbW92ZUZvcm1FbGVtZW50KHRoaXMpOwogfQogCit2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQ6OmRldGFjaCgpCit7CisgICAgSFRNTEVsZW1lbnQ6OmRldGFjaCgpOworICAgIHVwZGF0ZVZp
c2libGVWYWxpZGF0aW9uTWVzc2FnZSgpOworfQorCiBib29sIEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQ6OmZvcm1Ob1ZhbGlkYXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4gIWdldEF0dHJpYnV0ZShm
b3Jtbm92YWxpZGF0ZUF0dHIpLmlzTnVsbCgpOwpAQCAtMjk5LDcgKzMwNSw3IEBAIHZvaWQgSFRN
TEZvcm1Db250cm9sRWxlbWVudDo6c2V0TmVlZHNXaWxsVmFsaWRhdGVDaGVjaygpCiAgICAgbV93
aWxsVmFsaWRhdGVJbml0aWFsaXplZCA9IHRydWU7CiAgICAgbV93aWxsVmFsaWRhdGUgPSBuZXdX
aWxsVmFsaWRhdGU7CiAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwotICAgIC8vIEZJWE1FOiBT
aG93L2hpZGUgYSB2YWxpZGF0aW9uIG1lc3NhZ2UuCisgICAgdXBkYXRlVmlzaWJsZVZhbGlkYXRp
b25NZXNzYWdlKCk7CiB9CiAKIFN0cmluZyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp2YWxpZGF0
aW9uTWVzc2FnZSgpCkBAIC0zMDcsNiArMzEzLDMwIEBAIFN0cmluZyBIVE1MRm9ybUNvbnRyb2xF
bGVtZW50Ojp2YWxpZGF0aW9uTWVzc2FnZSgpCiAgICAgcmV0dXJuIHZhbGlkaXR5KCktPnZhbGlk
YXRpb25NZXNzYWdlKCk7CiB9CiAKK3ZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6dXBkYXRl
VmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlKCkKK3sKKyAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQo
KS0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworICAgIFN0cmluZyBt
ZXNzYWdlOworICAgIC8vIFdlIGNhbid0IHVzZSBmb2N1c2VkKCkuIFRoZSBmb2N1c2VkKCkgc3Rh
dGUgaXMgdXBkYXRlZCBhZnRlciBkaXNwYXRjaEZvY3VzRXZlbnQoKS4KKyAgICBpZiAoZG9jdW1l
bnQoKS0+Zm9jdXNlZE5vZGUoKSA9PSB0aGlzICYmIHJlbmRlcmVyKCkgJiYgd2lsbFZhbGlkYXRl
KCkpIHsKKyAgICAgICAgbWVzc2FnZSA9IHZhbGlkYXRpb25NZXNzYWdlKCkuc3RyaXBXaGl0ZVNw
YWNlKCk7CisgICAgICAgIC8vIEhUTUw1IHNwZWNpZmljYXRpb24gZG9lc24ndCBhc2sgVUEgdG8g
c2hvdyB0aGUgdGl0bGUgYXR0cmlidXRlIHZhbHVlCisgICAgICAgIC8vIHdpdGggdGhlIHZhbGlk
YXRpb25NZXNzYWdlLiAgSG93ZXZlciwgdGhpcyBiZWhhdmlvciBpcyBzYW1lIGFzIE9wZXJhCisg
ICAgICAgIC8vIGFuZCB0aGUgc3BlY2lmaWNhdGlvbiBkZXNjcmliZXMgc3VjaCBiZWhhdmlvciBh
cyBhbiBleGFtcGxlLgorICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHRpdGxlID0gZ2V0QXR0
cmlidXRlKHRpdGxlQXR0cik7CisgICAgICAgIGlmICghbWVzc2FnZS5pc0VtcHR5KCkgJiYgIXRp
dGxlLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgbWVzc2FnZS5hcHBlbmQoJ1xuJyk7CisgICAg
ICAgICAgICBtZXNzYWdlLmFwcGVuZCh0aXRsZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYg
KG1fdmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlID09IG1lc3NhZ2UpCisgICAgICAgIHJldHVybjsK
KyAgICBwYWdlLT5jaHJvbWUoKS0+dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKHRoaXMsIG1l
c3NhZ2UpOworICAgIG1fdmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlID0gbWVzc2FnZTsKK30KKwog
Ym9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpjaGVja1ZhbGlkaXR5KFZlY3RvcjxSZWZQdHI8
SFRNTEZvcm1Db250cm9sRWxlbWVudD4gPiogdW5oYW5kbGVkSW52YWxpZENvbnRyb2xzKQogewog
ICAgIGlmICghd2lsbFZhbGlkYXRlKCkgfHwgaXNWYWxpZEZvcm1Db250cm9sRWxlbWVudCgpKQpA
QCAtMzM2LDcgKzM2Niw5IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0TmVlZHNW
YWxpZGl0eUNoZWNrKCkKICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogICAgIH0KICAg
ICBtX2lzVmFsaWQgPSBuZXdJc1ZhbGlkOwotICAgIC8vIEZJWE1FOiBzaG93L2hpZGUgYSB2YWxp
ZGF0aW9uIG1lc3NhZ2UuCisgICAgLy8gQ2FsbHMgaXQgZXZlbiBpZiBtX2lzVmFsaWQgaXMgbm90
IGNoYW5nZWQgYmVjYXVzZSBhIHZhbGlkYXRpb24gbWVzc2FnZQorICAgIC8vIGNhbiBiZSBjaGFn
bmVkLgorICAgIHVwZGF0ZVZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSgpOwogfQogCiB2b2lkIEhU
TUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldEN1c3RvbVZhbGlkaXR5KGNvbnN0IFN0cmluZyYgZXJy
b3IpCkBAIC0zNTAsNiArMzgyLDcgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkaXNw
YXRjaEZvY3VzRXZlbnQoKQogICAgICAgICBkb2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgpLT5j
bGllbnQoKS0+Zm9ybURpZEZvY3VzKHRoaXMpOwogCiAgICAgSFRNTEVsZW1lbnQ6OmRpc3BhdGNo
Rm9jdXNFdmVudCgpOworICAgIHVwZGF0ZVZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSgpOwogfQog
CiB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KCkKQEAgLTM1
OCw2ICszOTEsNyBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2
ZW50KCkKICAgICAgICAgZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPmZv
cm1EaWRCbHVyKHRoaXMpOwogCiAgICAgSFRNTEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KCk7
CisgICAgdXBkYXRlVmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlKCk7CiB9CiAKIEhUTUxGb3JtRWxl
bWVudCogSFRNTEZvcm1Db250cm9sRWxlbWVudDo6dmlydHVhbEZvcm0oKSBjb25zdApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXggYjY4NTg5NjUxMTY1ODI2ZDBkZDZmYTg2
MjdjNmM2ZDAyNGU2NTRkMy4uYjNkZGNmMDA2MTdlZTI3Nzc2MmZlOWJjYWFkMmNkYmExYjAyYmE2
MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAorKysg
Yi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCkBAIC04NCw2ICs4NCw4IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCB3aWxsVmFsaWRhdGUoKSBjb25zdDsKICAgICBT
dHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2UoKTsKKyAgICAvLyBGb3IgdGVzdGluZy4KKyAgICBTdHJp
bmcgdmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlKCkgeyByZXR1cm4gbV92aXNpYmxlVmFsaWRhdGlv
bk1lc3NhZ2U7IH0KICAgICBib29sIGNoZWNrVmFsaWRpdHkoVmVjdG9yPFJlZlB0cjxIVE1MRm9y
bUNvbnRyb2xFbGVtZW50PiA+KiB1bmhhbmRsZWRJbnZhbGlkQ29udHJvbHMgPSAwKTsKICAgICAv
LyBUaGlzIG11c3QgYmUgY2FsbGVkIHdoZW4gYSB2YWxpZGF0aW9uIGNvbnN0cmFpbnQgb3IgY29u
dHJvbCB2YWx1ZSBpcyBjaGFuZ2VkLgogICAgIHZvaWQgc2V0TmVlZHNWYWxpZGl0eUNoZWNrKCk7
CkBAIC0xMTEsNiArMTEzLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRm9jdXNFdmVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEJsdXJFdmVudCgpOwor
ICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsKIAogICAgIHZvaWQgcmVtb3ZlRnJvbUZvcm0oKTsK
IApAQCAtMTMxLDkgKzEzNCwxMSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgSFRNTEZvcm1FbGVt
ZW50KiB2aXJ0dWFsRm9ybSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0RlZmF1bHRCdXR0
b25Gb3JGb3JtKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzVmFsaWRGb3JtQ29udHJvbEVs
ZW1lbnQoKTsKKyAgICB2b2lkIHVwZGF0ZVZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSgpOwogCiAg
ICAgSFRNTEZvcm1FbGVtZW50KiBtX2Zvcm07CiAgICAgT3duUHRyPFZhbGlkaXR5U3RhdGU+IG1f
dmFsaWRpdHlTdGF0ZTsKKyAgICBTdHJpbmcgbV92aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2U7CiAg
ICAgYm9vbCBtX2Rpc2FibGVkIDogMTsKICAgICBib29sIG1fcmVhZE9ubHkgOiAxOwogICAgIGJv
b2wgbV9yZXF1aXJlZCA6IDE7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCBi
L1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCmluZGV4IDk0NGYzMmYzMTFiZmYzYmJmNzM4NzJjZThj
NjQwZDNiN2YzYTgyMTAuLmFlMTQ5YzEyZmQ0MmQyMTBiMzJmZWY3M2MyYmRhOWQ1YTBkOGNmNzcg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9D
aHJvbWUuY3BwCkBAIC01NSw2ICs1NSwyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBu
YW1lc3BhY2UgSFRNTE5hbWVzOwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAorLy8gQWZ0ZXIgdGhl
IGZpcnN0IGNhbGwgb2YgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlSW1tZWRpYXRlbHkoZSwg
Im1lc3NhZ2UxIiksCisvLyBpdCBpcyBjYWxsZWQgcmVwZWF0ZWRseSBldmVyeSB2YWxpZGF0aW9u
TWVzc2FnZVVwZGF0ZUludGVydmFsU2Vjb25kCisvLyB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUNv
dW50KCktMSB0aW1lcywgdGhlbgorLy8gdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlSW1tZWRp
YXRlbHkoZSwgIiIpIGlzIGNhbGxlZCBhZnRlcgorLy8gdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJ
bnRlcnZhbFNlY29uZC4KKy8vIEFmdGVyIHRoYXQsIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2Fn
ZUltbWVkaWF0ZWx5KCkgaXMgbmV2ZXIgY2FsbGVkIGZvcgorLy8gdmFsaWRhdGlvbk1lc3NhZ2VC
bGFja291dFNlY29uZC4KK3N0YXRpYyBkb3VibGUgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRl
cnZhbFNlY29uZCA9IDAuMzsKK3N0YXRpYyBkb3VibGUgdmFsaWRhdGlvbk1lc3NhZ2VCbGFja291
dFNlY29uZCA9IDAuNjsKK3N0YXRpYyBpbnQgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3VudChj
b25zdCBTdHJpbmcmKQoreworICAgIHJldHVybiAyMDsgLy8gRklYTUU6IGFwcGx5IG1lc3NhZ2Ug
bGVuZ3RoCit9CisKIENocm9tZTo6Q2hyb21lKFBhZ2UqIHBhZ2UsIENocm9tZUNsaWVudCogY2xp
ZW50KQogICAgIDogbV9wYWdlKHBhZ2UpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCkBAIC00MDEs
NiArNDE1LDgzIEBAIHZvaWQgQ2hyb21lOjpzZXRUb29sVGlwKGNvbnN0IEhpdFRlc3RSZXN1bHQm
IHJlc3VsdCkKICAgICBtX2NsaWVudC0+c2V0VG9vbFRpcCh0b29sVGlwLCB0b29sVGlwRGlyZWN0
aW9uKTsKIH0KIAordm9pZCBDaHJvbWU6OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50KiBjb250cm9sLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7Cisg
ICAgQVNTRVJUKGNvbnRyb2wpOworICAgIGlmICghbV92YWxpZGF0aW9uTWVzc2FnZVRpbWVyKQor
ICAgICAgICBtX3ZhbGlkYXRpb25NZXNzYWdlVGltZXIuc2V0KG5ldyBUaW1lcjxDaHJvbWU+KHRo
aXMsICZDaHJvbWU6OnZhbGlkYXRpb25NZXNzYWdlVGltZXJGaXJlZCkpOworCisgICAgaWYgKG1l
c3NhZ2UuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChtX3ZhbGlkYXRpb25NZXNzYWdlVGFyZ2V0
ICE9IGNvbnRyb2wpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fdmFsaWRhdGlvbk1l
c3NhZ2VUaW1lci0+c3RvcCgpOworICAgICAgICB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2VJ
bW1lZGlhdGVseShjb250cm9sLCBtZXNzYWdlKTsKKyAgICAgICAgbV92YWxpZGF0aW9uTWVzc2Fn
ZSA9IG1lc3NhZ2U7CisgICAgICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2VUYXJnZXQuY2xlYXIoKTsK
KyAgICAgICAgLy8gU3RhcnQgdGhlIHRpbWVyIHRvIG1ha2UgYSBibGFja291dCBwZXJpb2QuIERv
IG5vdCB1c2Ugc3RhcnRPbmVTaG9ydCgpCisgICAgICAgIC8vIGluIG9yZGVyIHRvIHJldXNlIHRo
aXMgZm9yIHRoZSBuZXh0IG1lc3NhZ2UuCisgICAgICAgIHN0YXJ0VmFsaWRhdGlvbk1lc3NhZ2VC
bGFja291dCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYm9vbCB3YXNWaXNpYmxl
ID0gIW1fdmFsaWRhdGlvbk1lc3NhZ2UuaXNFbXB0eSgpOworICAgIFJlZlB0cjxIVE1MRm9ybUNv
bnRyb2xFbGVtZW50PiBsYXN0VGFyZ2V0KG1fdmFsaWRhdGlvbk1lc3NhZ2VUYXJnZXQpOworICAg
IGJvb2wgcmVzZXRUaW1lciA9ICF3YXNWaXNpYmxlIHx8IG1fdmFsaWRhdGlvbk1lc3NhZ2VUYXJn
ZXQgIT0gY29udHJvbCB8fCBtX3ZhbGlkYXRpb25NZXNzYWdlICE9IG1lc3NhZ2U7CisgICAgbV92
YWxpZGF0aW9uTWVzc2FnZSA9IG1lc3NhZ2U7CisgICAgbV92YWxpZGF0aW9uTWVzc2FnZVRhcmdl
dCA9IGNvbnRyb2w7CisgICAgaWYgKCFyZXNldFRpbWVyKSB7CisgICAgICAgIHVwZGF0ZUZvcm1W
YWxpZGF0aW9uTWVzc2FnZUltbWVkaWF0ZWx5KG1fdmFsaWRhdGlvbk1lc3NhZ2VUYXJnZXQuZ2V0
KCksIG1fdmFsaWRhdGlvbk1lc3NhZ2UpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlm
ICh3YXNWaXNpYmxlKSB7CisgICAgICAgIC8vIENsZWFyIHRoZSB2aXNpYmxlIG9sZCBtZXNzYWdl
LgorICAgICAgICBtX3ZhbGlkYXRpb25NZXNzYWdlVGltZXItPnN0b3AoKTsKKyAgICAgICAgdXBk
YXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlSW1tZWRpYXRlbHkobGFzdFRhcmdldC5nZXQoKSwgU3Ry
aW5nKCkpOworICAgICAgICAvLyBXaWxsIHNob3cgdGhlIG5ldyBtZXNzYWdlIGFmdGVyIHZhbGlk
YXRpb25NZXNzYWdlQmxhY2tvdXRTZWMuCisgICAgICAgIHN0YXJ0VmFsaWRhdGlvbk1lc3NhZ2VC
bGFja291dCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtX3ZhbGlkYXRpb25NZXNzYWdl
VGltZXItPmlzQWN0aXZlKCkpIHsKKyAgICAgICAgICAgIC8vIE5vdGhpbmcgdG8gZG8gaWYgaXQg
aXMgaW4gYSBibGFja291dCBwZXJpb2QuIFdoZW4gdGhlIHRpbWVyIGlzCisgICAgICAgICAgICAv
LyBmaXJlZCBuZXh0IHRpbWUsIHZhbGlkYXRpb25NZXNzYWdlVGltZXJGaXJlZCgpIHNob3dzIHRo
ZSBtZXNzYWdlCisgICAgICAgICAgICAvLyBiZWNhdXNlIG1fdmFsaWRhdGlvbk1lc3NhZ2UgaXMg
bm90IGVtcHR5LgorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gSXQncyBub3QgaW4g
YSBibGFja291dCBwZXJpb2QuIFNob3cgdGhlIG1lc3NhZ2UgaW1tZWRpYXRlbHkuCisgICAgICAg
ICAgICB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2VJbW1lZGlhdGVseShtX3ZhbGlkYXRpb25N
ZXNzYWdlVGFyZ2V0LmdldCgpLCBtX3ZhbGlkYXRpb25NZXNzYWdlKTsKKyAgICAgICAgICAgIG1f
dmFsaWRhdGlvbk1lc3NhZ2VUaW1lckNvdW50ZXIgPSAwOworICAgICAgICAgICAgbV92YWxpZGF0
aW9uTWVzc2FnZVRpbWVyLT5zdGFydFJlcGVhdGluZyh2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUlu
dGVydmFsU2Vjb25kKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBDaHJvbWU6OnN0YXJ0
VmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dCgpCit7CisgICAgbV92YWxpZGF0aW9uTWVzc2FnZVRp
bWVyQ291bnRlciA9IC0xOworICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2VUaW1lci0+c3RhcnQodmFs
aWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29uZCwgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRl
cnZhbFNlY29uZCk7Cit9CisKK3ZvaWQgQ2hyb21lOjp2YWxpZGF0aW9uTWVzc2FnZVRpbWVyRmly
ZWQoVGltZXI8Q2hyb21lPiogdGltZXIpCit7CisgICAgaWYgKG1fdmFsaWRhdGlvbk1lc3NhZ2Uu
aXNFbXB0eSgpKSB7CisgICAgICAgIEFTU0VSVChtX3ZhbGlkYXRpb25NZXNzYWdlVGltZXJDb3Vu
dGVyIDwgMCk7CisgICAgICAgIHRpbWVyLT5zdG9wKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlSW1tZWRpYXRlbHkobV92YWxpZGF0aW9u
TWVzc2FnZVRhcmdldC5nZXQoKSwgbV92YWxpZGF0aW9uTWVzc2FnZSk7CisgICAgaWYgKCsrbV92
YWxpZGF0aW9uTWVzc2FnZVRpbWVyQ291bnRlciA8IHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlQ291
bnQobV92YWxpZGF0aW9uTWVzc2FnZSkpCisgICAgICAgIHJldHVybjsKKyAgICB0aW1lci0+c3Rv
cCgpOworICAgIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZUltbWVkaWF0ZWx5KG1fdmFsaWRh
dGlvbk1lc3NhZ2VUYXJnZXQuZ2V0KCksIFN0cmluZygpKTsKKyAgICBtX3ZhbGlkYXRpb25NZXNz
YWdlID0gU3RyaW5nKCk7CisgICAgbV92YWxpZGF0aW9uTWVzc2FnZVRhcmdldC5jbGVhcigpOwor
CisgICAgc3RhcnRWYWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0KCk7Cit9CisKK3ZvaWQgQ2hyb21l
Ojp1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2VJbW1lZGlhdGVseShIVE1MRm9ybUNvbnRyb2xF
bGVtZW50KiwgY29uc3QgU3RyaW5nJikKK3sKKyAgICAvLyBGSVhNRTogSW1wZWxlbWVudCB0aGlz
LgorfQorCiB2b2lkIENocm9tZTo6cHJpbnQoRnJhbWUqIGZyYW1lKQogewogICAgIG1fY2xpZW50
LT5wcmludChmcmFtZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmggYi9XZWJD
b3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXggMTg5N2I3OTk0MzAzMDJmYThiYTM0OTE4YWZiODMwNjVl
Njc2NTc3MS4uZjRhZDU2MjY5Nzk1YjU3MzY4NjgwNTMwNTAzNzU3ZmRhY2I2NjgzYiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCisrKyBiL1dlYkNvcmUvcGFnZS9DaHJvbWUuaApA
QCAtMjcsNyArMjcsOSBAQAogI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKICNpbmNsdWRlICJQb3B1
cE1lbnUuaCIKICNpbmNsdWRlICJTZWFyY2hQb3B1cE1lbnUuaCIKKyNpbmNsdWRlICJUaW1lci5o
IgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTQzLDYgKzQ1LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEZsb2F0UmVjdDsKICAgICBjbGFzcyBG
cmFtZTsKICAgICBjbGFzcyBHZW9sb2NhdGlvbjsKKyAgICBjbGFzcyBIVE1MRm9ybUNvbnRyb2xF
bGVtZW50OwogICAgIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiAgICAgY2xhc3MgSW50UmVjdDsKICAg
ICBjbGFzcyBOb2RlOwpAQCAtMTMxLDYgKzEzNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0UmVzdWx0Jiwg
dW5zaWduZWQgbW9kaWZpZXJGbGFncyk7CiAKICAgICAgICAgdm9pZCBzZXRUb29sVGlwKGNvbnN0
IEhpdFRlc3RSZXN1bHQmKTsKKyAgICAgICAgdm9pZCB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3Nh
Z2UoSFRNTEZvcm1Db250cm9sRWxlbWVudCosIGNvbnN0IFN0cmluZyYpOwogCiAgICAgICAgIHZv
aWQgcHJpbnQoRnJhbWUqKTsKIApAQCAtMTU1LDggKzE1OSwyOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIFBhc3NSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1
cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Q7CiAKICAgICBwcml2YXRlOgorICAgICAgICB2
b2lkIHZhbGlkYXRpb25NZXNzYWdlVGltZXJGaXJlZChUaW1lcjxDaHJvbWU+Kik7CisgICAgICAg
IHZvaWQgc3RhcnRWYWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0KCk7CisgICAgICAgIC8vIFNob3cg
dGhlIHNwZWNpZmllZCBtZXNzYWdlIGZvciB0aGUgZm9ybSBjb250cm9sLiBIaWRlIHRoZSBtZXNz
YWdlCisgICAgICAgIC8vIGlmIHRoZSBzdHJpbmcgaXMgZW1wdHkuIElmIHVwZGF0ZUZvcm1WYWxp
ZGF0aW9uTWVzc2FnZUltbWVkaWF0ZWx5KCkKKyAgICAgICAgLy8gd2l0aCBub24tZW1wdHkgbWVz
c2FnZSBpcyBjYWxsZWQsIHRoZSBzdWJzZXF1ZW50IGNhbGxzIG9mCisgICAgICAgIC8vIHVwZGF0
ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZUltbWVkaWF0ZWx5KCkgbXVzdCBiZSBmb3IgdGhlIHNhbWUg
ZWxlbWVudAorICAgICAgICAvLyBhbmQgdGhlIHNhbWUgbWVzc2FnZS4gVGhlbiwgdXBkYXRlRm9y
bVZhbGlkYXRpb25NZXNzYWdlKCkgaXMgY2FsbGVkCisgICAgICAgIC8vIHdpdGggdGhlIHNhbWUg
ZWxlbWVudCBhbmQgdGhlIGVtcHR5IG1lc3NhZ2UuCisgICAgICAgIC8vICB1cGRhdGVGb3JtVmFs
aWRhdGlvbk1lc2FnZShjb250cm9sMSwgIm1lc3NhZ2UxIikgLT4KKyAgICAgICAgLy8gIHVwZGF0
ZUZvcm1WYWxpZGF0aW9uTWVzYWdlKGNvbnRyb2wxLCAibWVzc2FnZTEiKSAtPgorICAgICAgICAv
LyAgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNhZ2UoY29udHJvbDEsICJtZXNzYWdlMSIpIC4uLiAo
bXVsdGlwbGUgdGltZXMpCisgICAgICAgIC8vICB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc2FnZShj
b250cm9sMSwgIiIpCisgICAgICAgIC8vIEluIHRoaXMgc2VxdWVuY2UsIGNhbGxzIHdpdGggb3Ro
ZXIgY29udHJvbHMgb3Igb3RoZXIgbWVzc2FnZXMKKyAgICAgICAgLy8gbmV2ZXIgaGFwcGVuLgor
ICAgICAgICB2b2lkIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZUltbWVkaWF0ZWx5KEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQqLCBjb25zdCBTdHJpbmcmKTsKKwogICAgICAgICBQYWdlKiBtX3Bh
Z2U7CiAgICAgICAgIENocm9tZUNsaWVudCogbV9jbGllbnQ7CisgICAgICAgIE93blB0cjxUaW1l
cjxDaHJvbWU+Kj4gbV92YWxpZGF0aW9uTWVzc2FnZVRpbWVyOworICAgICAgICBpbnQgbV92YWxp
ZGF0aW9uTWVzc2FnZVRpbWVyQ291bnRlcjsKKyAgICAgICAgU3RyaW5nIG1fdmFsaWRhdGlvbk1l
c3NhZ2U7CisgICAgICAgIFJlZlB0cjxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PiBtX3ZhbGlkYXRp
b25NZXNzYWdlVGFyZ2V0OwogICAgIH07CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvQ2hh
bmdlTG9nIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZDE4ZDMxNTQwM2E2NWFhNjJkNzFj
MmJkODk4ZDNhODcxOTc0YWYyOS4uNGNhNWYyZDUyMjYwMmI5OGE0ZjRmOWI0MDA3MjdjMzVkYTVm
MTZkYiAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wNC0wMSAgS2VudCBUYW11cmEgIDx0a2Vu
dEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRnJhbWV3b3JrIHRvIHNob3cgZm9ybSB2YWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlu
dmFsaWQgY29udHJvbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTMxNzE4CisKKyAgICAgICAgQWRkIGEgaGVscGVyIGZvciBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoKS4KKworICAgICAg
ICAqIE1pc2MvV2ViQ29yZVN0YXRpc3RpY3MuaDoKKyAgICAgICAgKiBNaXNjL1dlYkNvcmVTdGF0
aXN0aWNzLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSB2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VG
b3JFbGVtZW50QnlJZDpdKToKKwogMjAxMC0xMC0xMSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJz
Y2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0t
Z2l0IGEvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLmggYi9XZWJLaXQvbWFjL01p
c2MvV2ViQ29yZVN0YXRpc3RpY3MuaAppbmRleCAxNTY1YzI2MTU3NjMyM2VmYjAyOGFiNDkxMTEx
ZGZhZmY0NThiNDQ4Li45Y2JkZGQ1NzIwM2Q1MjRjMzJiMmY1YWVmYWJkNWFjMTI1NzJmZTIxIDEw
MDY0NAotLS0gYS9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MuaAorKysgYi9XZWJL
aXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MuaApAQCAtODcsNiArODcsNyBAQAogLSAoTlNT
dHJpbmcgKiljb3VudGVyVmFsdWVGb3JFbGVtZW50OihET01FbGVtZW50KillbGVtZW50OwogLSAo
aW50KXBhZ2VOdW1iZXJGb3JFbGVtZW50OihET01FbGVtZW50KillbGVtZW50OihmbG9hdClwYWdl
V2lkdGhJblBpeGVsczooZmxvYXQpcGFnZUhlaWdodEluUGl4ZWxzOwogLSAoaW50KW51bWJlck9m
UGFnZXM6KGZsb2F0KXBhZ2VXaWR0aEluUGl4ZWxzOihmbG9hdClwYWdlSGVpZ2h0SW5QaXhlbHM7
CistIChOU1N0cmluZyAqKXZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkOihO
U1N0cmluZyAqKWVsZW1lbnRJZDsKIC0gKE5TU3RyaW5nICopcGFnZVByb3BlcnR5Oihjb25zdCBj
aGFyKilwcm9wZXJ0eU5hbWU6KGludClwYWdlTnVtYmVyOwogLSAoYm9vbClpc1BhZ2VCb3hWaXNp
YmxlOihpbnQpcGFnZU51bWJlcjsKIC0gKE5TU3RyaW5nICopcGFnZVNpemVBbmRNYXJnaW5zSW5Q
aXhlbHM6KGludClwYWdlTnVtYmVyOihpbnQpd2lkdGg6KGludCloZWlnaHQ6KGludCltYXJnaW5U
b3A6KGludCltYXJnaW5SaWdodDooaW50KW1hcmdpbkJvdHRvbTooaW50KW1hcmdpbkxlZnQ7CmRp
ZmYgLS1naXQgYS9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW0gYi9XZWJLaXQv
bWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW0KaW5kZXggNWI1YTFiYzNiZjgwMjIwYWQ3YmE1
ZTJhYjQ5YjEwY2JjMWFiNGRmMy4uNjUzOGZlNDI1ZDg2ODgwZTM4NzE1YTVhZmY5ZjFmODA1MTU1
OGFkZiAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tCisr
KyBiL1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbQpAQCAtMjgsNiArMjgsNyBA
QAogCiAjaW1wb3J0ICJXZWJDb3JlU3RhdGlzdGljcy5oIgogCisjaW1wb3J0ICJET01Eb2N1bWVu
dEludGVybmFsLmgiCiAjaW1wb3J0ICJET01FbGVtZW50SW50ZXJuYWwuaCIKICNpbXBvcnQgIldl
YkNhY2hlLmgiCiAjaW1wb3J0ICJXZWJGcmFtZUludGVybmFsLmgiCkBAIC0zOSw2ICs0MCw3IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL0dDQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9HbHlw
aFBhZ2VUcmVlTm9kZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9JY29uRGF0YWJhc2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNET01XaW5kb3cuaD4KICNpbXBv
cnQgPFdlYkNvcmUvUGFnZUNhY2hlLmg+CkBAIC0zMDcsNCArMzA5LDE1IEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogICAgIFByaW50Q29udGV4dDo6c3Bvb2xBbGxQYWdlc1dpdGhCb3VuZGFy
aWVzKGNvcmVGcmFtZSwgZ3JhcGhpY3NDb250ZXh0LCBGbG9hdFNpemUocGFnZVdpZHRoSW5QaXhl
bHMsIHBhZ2VIZWlnaHRJblBpeGVscykpOwogfQogCistIChOU1N0cmluZyAqKXZpc2libGVWYWxp
ZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkOihOU1N0cmluZyAqKWVsZW1lbnRJZAoreworICAg
IERPTUVsZW1lbnQqIGVsZW1lbnQgPSBbW3NlbGYgRE9NRG9jdW1lbnRdIGdldEVsZW1lbnRCeUlk
OmVsZW1lbnRJZF07CisgICAgaWYgKCFlbGVtZW50KQorICAgICAgICByZXR1cm4gbmlsOworICAg
IEVsZW1lbnQqIGNvcmVFbGVtZW50ID0gY29yZShlbGVtZW50KTsKKyAgICBpZiAoIWNvcmVFbGVt
ZW50LT5pc0Zvcm1Db250cm9sRWxlbWVudCgpKQorICAgICAgICByZXR1cm4gbmlsOworICAgIEhU
TUxGb3JtQ29udHJvbEVsZW1lbnQqIGZvcm1Db250cm9sID0gc3RhdGljX2Nhc3Q8SFRNTEZvcm1D
b250cm9sRWxlbWVudCo+KGNvcmVFbGVtZW50KTsKKyAgICByZXR1cm4gKE5TU3RyaW5nKilmb3Jt
Q29udHJvbC0+dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlKCk7Cit9CiBAZW5kCmRpZmYgLS1naXQg
YS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IGZmYjJi
NGVmMWNmZmMxN2UwNTJmY2ExZWJmNTgzNzgxNjMwM2FmZDIuLmI5MTQ0ZDAyMzhjOWE1NDZmYWQ2
MDU5YjBmYWNlZjg0NDhmZDVjMDYgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vQ2hhbmdlTG9nCisr
KyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDQtMDEgIEtl
bnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyYW1ld29yayB0byBzaG93IGZvcm0gdmFsaWRhdGlv
biBtZXNzYWdlIGZvciBpbnZhbGlkIGNvbnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTcxOAorCisgICAgICAgIEFkZCB2aXNpYmxlVmFsaWRh
dGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZCgpIGZvciBMYXlvdXRUZXN0Q29udHJvbGxlci4KKwor
ICAgICAgICAqIEludGVyZmFjZXMvSVdlYkZyYW1lUHJpdmF0ZS5pZGw6CisgICAgICAgICogSW50
ZXJmYWNlcy9XZWJLaXQuaWRsOiBKdXN0IHRvdWNoLgorICAgICAgICAqIFdlYkZyYW1lLmNwcDoK
KyAgICAgICAgKFdlYkZyYW1lOjp2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJ
ZCk6CisgICAgICAgICogV2ViRnJhbWUuaDoKKwogMjAxMC0xMC0xMSAgQW5kZXJzIENhcmxzc29u
ICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJGcmFtZVByaXZhdGUuaWRs
IGIvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJGcmFtZVByaXZhdGUuaWRsCmluZGV4IDUwODVk
Yzc3YTQ2Y2U1YTJlOGM0NTJhN2FiMjI1YjJjOWZjZGQ1ZWMuLmUxYjhkMzUyNTljZDVmYmE5ZGYw
MzJkYmMyNWI4YzA4MWFhNWE2ZWEgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vSW50ZXJmYWNlcy9J
V2ViRnJhbWVQcml2YXRlLmlkbAorKysgYi9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkZyYW1l
UHJpdmF0ZS5pZGwKQEAgLTExNyw0ICsxMTcsNiBAQCBpbnRlcmZhY2UgSVdlYkZyYW1lUHJpdmF0
ZSA6IElVbmtub3duCiAgICAgSFJFU1VMVCByZXN1bWVBbmltYXRpb25zKCk7CiAKICAgICBIUkVT
VUxUIGxvYWRQbGFpblRleHRTdHJpbmcoW2luXSBCU1RSIHN0cmluZywgW2luXSBCU1RSIHVybCk7
CisKKyAgICBIUkVTVUxUIHZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKFtp
bl0gQlNUUiBpZCwgW291dCwgcmV0dmFsXSBCU1RSKiByZXN1bHQpOwogfQpkaWZmIC0tZ2l0IGEv
V2ViS2l0L3dpbi9JbnRlcmZhY2VzL1dlYktpdC5pZGwgYi9XZWJLaXQvd2luL0ludGVyZmFjZXMv
V2ViS2l0LmlkbAppbmRleCBiNGNlNDEwNzQ2MjI5NTIxNDJiY2NhZWFjOTZkYjNhZWQzYjUzOWQ5
Li4wNDZhZDYyODY1NzdkMTk2MmYwNTc3MWE0ZjgwMTNhODQyMTg3NWFiIDEwMDY0NAotLS0gYS9X
ZWJLaXQvd2luL0ludGVyZmFjZXMvV2ViS2l0LmlkbAorKysgYi9XZWJLaXQvd2luL0ludGVyZmFj
ZXMvV2ViS2l0LmlkbApAQCAtMzAwLDMgKzMwMCw0IEBAIGxpYnJhcnkgV2ViS2l0CiAgICAgICAg
IFtkZWZhdWx0XSBpbnRlcmZhY2UgSVdlYlVzZXJDb250ZW50VVJMUGF0dGVybjsKICAgICB9CiB9
CisgCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcCBiL1dlYktpdC93aW4vV2Vi
RnJhbWUuY3BwCmluZGV4IDEzZTY4NjVjMzAyZTZmNGY3MjdkMWJlNDM1NGQ4ZGNiZmIzZWZkZWEu
LjUwZGIyMDU0NjFlMDQ4ZDFiODEzNDljNWIyNTNmNmU2ZjVmMWY4NGIgMTAwNjQ0Ci0tLSBhL1dl
YktpdC93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCkBAIC0x
MDE5LDYgKzEwMTksMjEgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6dW51
c2VkMSgpCiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAorSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJGcmFtZTo6dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoQlNU
UiBpZCwgQlNUUiogcmVzdWx0KQoreworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4g
RV9QT0lOVEVSOworICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHRoaXMpOworICAgIGlmICgh
Y29yZUZyYW1lKQorICAgICAgICByZXR1cm4gRV9GQUlMOworICAgIEVsZW1lbnQqIGVsZW1lbnQg
PSBjb3JlRnJhbWUtPmRvY3VtZW50KCktPmdldEVsZW1lbnRCeUlkKFN0cmluZyhpZCwgU3lzU3Ry
aW5nTGVuKGlkKSkpOworICAgIGlmICghZWxlbWVudCB8fCAhZWxlbWVudC0+aXNGb3JtQ29udHJv
bEVsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIEVfRkFJTDsKKyAgICBIVE1MRm9ybUNvbnRyb2xF
bGVtZW50KiBmb3JtQ29udHJvbCA9IHN0YXRpY19jYXN0PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQq
PihlbGVtZW50KTsKKyAgICAqcmVzdWx0ID0gQlN0cmluZyhmb3JtQ29udHJvbC0+dmlzaWJsZVZh
bGlkYXRpb25NZXNzYWdlKCkpLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gU19PSzsKK30KKwogLy8g
SVdlYkRvY3VtZW50VGV4dCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1l
OjpzdXBwb3J0c1RleHRFbmNvZGluZyggCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYkZyYW1l
LmggYi9XZWJLaXQvd2luL1dlYkZyYW1lLmgKaW5kZXggNWMwYWM1ZTA5YzExMTA1Y2U3N2RhZTYz
MDQyNzQ0ODhjY2IwZTlkMS4uZjQ3YTQ0ZGI3MzU2ZjBmY2I3ZDBiOWJhOWY4NjJmMjBhODY0OTk0
MiAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJGcmFtZS5oCisrKyBiL1dlYktpdC93aW4vV2Vi
RnJhbWUuaApAQCAtMjcyLDYgKzI3Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgdmlzaWJsZUNvbnRlbnRSZWN0KFJFQ1QqKTsKIAogICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBsYXllclRyZWVBc1RleHQoQlNUUiopOworICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB2aXNpYmxlVmFsaWRhdGlvbk1lc3Nh
Z2VGb3JFbGVtZW50QnlJZChCU1RSIGlkLCBCU1RSKiByZXN1bHQpOwogCiAgICAgLy8gSVdlYkRv
Y3VtZW50VGV4dAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzdXBwb3J0
c1RleHRFbmNvZGluZyggCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJL
aXRUb29scy9DaGFuZ2VMb2cKaW5kZXggMmYxYTZlMTdkNDQzY2IzMTdmMzRkY2QyYmRjOWUwZDNi
MTZmZmVjMS4uYzBkZDFhZmIzOGQwMWEzMGJkYmE5ZGI5MmRiZDY3Njk5YjlmZGFhZCAxMDA2NDQK
LS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI2IEBACisyMDEwLTA0LTAxICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
cmFtZXdvcmsgdG8gc2hvdyBmb3JtIHZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW52YWxpZCBjb250
cm9scworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE3
MTgKKworICAgICAgICBBZGQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnZpc2libGVWYWxpZGF0aW9u
TWVzc2FnZUZvckVsZW1lbnRCeUlkKCkuCisgICAgICAgIFdpbmRvd3MgYW5kIE1hYyBoYXZlIHdv
cmthYmxlIGltcGxlbWVudGF0aW9ucy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZv
ckVsZW1lbnRCeUlkQ2FsbGJhY2spOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0
YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xs
ZXJHdGsuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnZpc2libGVWYWxpZGF0
aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMv
TGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxl
cjo6dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQpOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHA6CisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5
SWQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3gu
Y3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnZpc2libGVWYWxpZGF0aW9uTWVz
c2FnZUZvckVsZW1lbnRCeUlkKToKKwogMjAxMC0xMC0xMSAgUHJhc2FkIFRhbW1hbmEgIDxwcmFz
YWR0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEbWl0cnkgVGl0b3YuCmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5j
cHAKaW5kZXggMGE3YzExZmU1OGU3ZmUzNjZhNzBiNmNkMjI3NGIzN2RhNWQyNzg3Mi4uNjM2MWJj
ZDVjZGQ1MjcyMjk0ZWY0N2Y5NDU3ZWM3ODJiYTJhYjUyOCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtMTI0OSw2ICsx
MjQ5LDIwIEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWRDYWxs
YmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiB2aXNpYmxlVmFsaWRh
dGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3Vt
ZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCisgICAgICAgIHJldHVybiBKU1Zh
bHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
ZWxlbWVudElkKEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1sw
XSwgZXhjZXB0aW9uKSk7CisgICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKKworICAgIExheW91dFRl
c3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xs
ZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBtZXNzYWdlKGNvbnRyb2xsZXItPnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZv
ckVsZW1lbnRCeUlkKGVsZW1lbnRJZC5nZXQoKSkpOworICAgIGlmICghbWVzc2FnZS5nZXQoKSkK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworICAgIHJldHVy
biBKU1ZhbHVlTWFrZVN0cmluZyhjb250ZXh0LCBtZXNzYWdlLmdldCgpKTsKK30KKwogc3RhdGlj
IEpTVmFsdWVSZWYgc2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHNDYWxsYmFjayhK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRo
aXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50
c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgLy8gSGFzIG1hYyAmIHdpbmRvd3Mg
aW1wbGVtZW50YXRpb24KQEAgLTE5NzUsNiArMTk4OSw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExh
eW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJzaG93V2Vi
SW5zcGVjdG9yIiwgc2hvd1dlYkluc3BlY3RvckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsg
InRlc3RPbnNjcmVlbiIsIHRlc3RPbnNjcmVlbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsg
InRlc3RSZXBhaW50IiwgdGVzdFJlcGFpbnRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJ2
aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZCIsIHZpc2libGVWYWxpZGF0aW9u
TWVzc2FnZUZvckVsZW1lbnRCeUlkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAid2FpdEZv
clBvbGljeURlbGVnYXRlIiwgd2FpdEZvclBvbGljeURlbGVnYXRlQ2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
ICAgICAgICAgeyAid2FpdFVudGlsRG9uZSIsIHdhaXRVbnRpbERvbmVDYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LAogICAgICAgICB7ICJ3aW5kb3dDb3VudCIsIHdpbmRvd0NvdW50Q2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
CmluZGV4IDc1NWEyYjJiOWM2ODg1Yjc5NmEwM2U1MmQ1MDIwZDg4YjQzZGQ5OGIuLjMyMjA4M2U5
MTcwMWVmYTIxZDZmZjFkMWE4ZGY2NTdhOTJhYTA5MmMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtMTExLDcgKzExMSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChib29sIGVuYWJs
ZSk7CiAgICAgdm9pZCBzZXRTY3JvbGxiYXJQb2xpY3koSlNTdHJpbmdSZWYgb3JpZW50YXRpb24s
IEpTU3RyaW5nUmVmIHBvbGljeSk7CiAgICAgdm9pZCBzZXRFZGl0aW5nQmVoYXZpb3IoY29uc3Qg
Y2hhciogZWRpdGluZ0JlaGF2aW9yKTsKLQorICAgIEpTU3RyaW5nUmVmIHZpc2libGVWYWxpZGF0
aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGlkKTsKICAgICB2b2lkIHdhaXRG
b3JQb2xpY3lEZWxlZ2F0ZSgpOwogICAgIHNpemVfdCB3ZWJIaXN0b3J5SXRlbUNvdW50KCk7CiAg
ICAgdW5zaWduZWQgd29ya2VyVGhyZWFkQ291bnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAgYi9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3Bw
CmluZGV4IGQ4MzEwNzYzZGU2NjRmMzk1MjQwNDRlN2Y4NWY3NzU1YmQ0OGYxYzAuLjM1ZjA1OGU5
NDQzMTdiN2Q0ZjNiNjBmODJjYWU5YmVjNWJlY2FiMWUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKKysrIGIvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcApA
QCAtNzcxLDYgKzc3MSwxMiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphcGlUZXN0R29U
b0N1cnJlbnRCYWNrRm9yd2FyZEl0ZW0oKQogCiB9CiAKK0pTU3RyaW5nUmVmIExheW91dFRlc3RD
b250cm9sbGVyOjp2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZChKU1N0cmlu
Z1JlZiBpZCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCisgICAgcmV0dXJuIDA7
Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFdlYlZpZXdFZGl0YWJsZShib29s
KQogewogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91
dFRlc3RDb250cm9sbGVyTWFjLm1tIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xh
eW91dFRlc3RDb250cm9sbGVyTWFjLm1tCmluZGV4IGM2NmM5ZGFiMDMxYmQ2MzhkMDU0ZGRmYTFl
YTk0YjAzMzdmYTA2YTAuLjM5ZWZjYWZiOTQ5ZTJiNWMwZWU3NzA4ZmEwZGM5MzI4NzQ2MWI1OTYg
MTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29u
dHJvbGxlck1hYy5tbQorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0
VGVzdENvbnRyb2xsZXJNYWMubW0KQEAgLTgzMyw2ICs4MzMsMTIgQEAgdm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6YXBpVGVzdEdvVG9DdXJyZW50QmFja0ZvcndhcmRJdGVtKCkKICAgICBbdmll
dyBnb1RvQmFja0ZvcndhcmRJdGVtOltbdmlldyBiYWNrRm9yd2FyZExpc3RdIGN1cnJlbnRJdGVt
XV07CiB9CiAKK0pTU3RyaW5nUmVmIExheW91dFRlc3RDb250cm9sbGVyOjp2aXNpYmxlVmFsaWRh
dGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZChKU1N0cmluZ1JlZiBpZCkKK3sKKyAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IGlkQ0YoQWRvcHRDRiwgSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgaWQpKTsKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJp
bmcoKENGU3RyaW5nUmVmKVttYWluRnJhbWUgdmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxl
bWVudEJ5SWQ6KE5TU3RyaW5nKilpZENGLmdldCgpXSk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldFdlYlZpZXdFZGl0YWJsZShib29sIGVkaXRhYmxlKQogewogICAgIFdlYlZp
ZXcgKnZpZXcgPSBbbWFpbkZyYW1lIHdlYlZpZXddOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcCBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKaW5kZXgg
NmRkNjA5YzI4NTA1ZjYzZTEyMWViOWRlODJlM2QxOTMxYjMwYmVkOC4uZWZjMzcyMmU4ODFlZTFk
ZTM4ODc1YmIzMjBhZDNkMTg4ZGZjYjFjMSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAorKysgYi9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCkBAIC0xMzYy
LDYgKzEzNjIsMTkgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YXBpVGVzdEdvVG9DdXJy
ZW50QmFja0ZvcndhcmRJdGVtKCkKICAgICB3ZWJWaWV3LT5nb1RvQmFja0ZvcndhcmRJdGVtKGl0
ZW0uZ2V0KCksICZzdWNjZXNzKTsKIH0KIAorSlNTdHJpbmdSZWYgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGlk
KQoreworICAgIENPTVB0cjxJV2ViRnJhbWVQcml2YXRlPiBmcmFtZVByaXZhdGUoUXVlcnksIGZy
YW1lKTsKKyAgICBpZiAoIWZyYW1lUHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgQlNU
UiBtZXNzYWdlQlNUUjsKKyAgICBpZiAoRkFJTEVEKGZyYW1lUHJpdmF0ZS0+dmlzaWJsZVZhbGlk
YXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoYnN0clQoaWQpLkdldEJTVFIoKSwgJm1lc3NhZ2VC
U1RSKSkpCisgICAgICAgIHJldHVybiAwOworICAgIEpTU3RyaW5nUmVmIG1lc3NhZ2VKUyA9IEpT
U3RyaW5nQ3JlYXRlV2l0aEJTVFIobWVzc2FnZUJTVFIpOworICAgIFN5c0ZyZWVTdHJpbmcobWVz
c2FnZUJTVFIpOworICAgIHJldHVybiBtZXNzYWdlSlM7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldFdlYlZpZXdFZGl0YWJsZShib29sKQogewogfQpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAgYi9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcApp
bmRleCA1ZmJhMWNmZDA2Mzg0MTEzMWJjMTIwOGVmN2EwOWM3NDk0NjkxOTIwLi44Njk3Nzg4NWU1
MzJiOWZhM2RhNWIzMDgyY2YyZDUwODg2Nzc0MTVjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAorKysgYi9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcApAQCAtNDYy
LDYgKzQ2MiwxMiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRTcGF0aWFsTmF2aWdh
dGlvbkVuYWJsZWQoYm9vbCkKIAogfQogCitKU1N0cmluZ1JlZiBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWQp
Cit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAgIHJldHVybiAwOworfQorCiB2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRXZWJWaWV3RWRpdGFibGUoYm9vbCkKIHsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70595</attachid>
            <date>2010-10-13 03:32:54 -0700</date>
            <delta_ts>2010-10-25 03:41:40 -0700</delta_ts>
            <desc>Patch rev.11 (rebased)</desc>
            <filename>bug-31718-20101013193252.patch</filename>
            <type>text/plain</type>
            <size>34948</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyOTU1YmYyMDA3ZDJjMmJiMWUwZTdmMjJlYmQzYjYwOTRhYzZhYzAxLi5mYTZkNTM2
ZWI1MTQwMjkxMDQ2M2VmYTJhMTczYzdmNDA5NzEyOGMyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTAtMDQtMDEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyYW1ld29yayB0byBzaG93
IGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnZhbGlkIGNvbnRyb2xzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTcxOAorCisgICAgICAgIEFk
ZCBhIHRlc3QgdG8gY2hlY2sgYSB2aXNpYmxlIHZhbGlkYXRpb24gbWVzc2FnZS4KKyAgICAgICAg
VGhlIG1lc3NhZ2Ugc2hvdWxkIGJlIGF2YWlsYWJsZSBvbmx5IHdoZW4gdGhlIGNvbnRyb2wgaGFz
IGZvY3VzLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvdmlzaWJsZS12YWxp
ZGF0aW9uLW1lc3NhZ2UuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvdmlzaWJsZS12
YWxpZGF0aW9uLW1lc3NhZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zv
cm1zL3Zpc2libGUtdmFsaWRhdGlvbi1tZXNzYWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAorICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6CisKIDIwMTAtMTAt
MTMgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL3NjcmlwdC10ZXN0cy92aXNpYmxlLXZhbGlkYXRpb24tbWVzc2FnZS5qcyBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL3Zpc2libGUtdmFsaWRhdGlvbi1tZXNzYWdl
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjg5NDNkYTgyYzU0OTM2M2MxMGM3NDBiZTA2MTYwY2I1OTc1NTJmYTYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy92
aXNpYmxlLXZhbGlkYXRpb24tbWVzc2FnZS5qcwpAQCAtMCwwICsxLDM4IEBACitkZXNjcmlwdGlv
bignVGVzdCBmb3IgdmFsaWRhdGlvbiBtZXNzYWdlIHJlcXVlc3RzIGZyb20gYW4gSFRNTEZvcm1D
b250cm9sRWxlbWVudC4nKTsKKwordmFyIHBhcmVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpOworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChwYXJlbnQpOworcGFyZW50LmlubmVy
SFRNTD0gJzxmb3JtPicKKyAgICArICc8aW5wdXQgaWQ9aTEgbmFtZT1pMSByZXF1aXJlZD4nCisg
ICAgKyAnPC9mb3JtPic7CisKK3ZhciBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdp
MScpOworZGVidWcoJ0ludmFsaWQgYW5kIG5vIGZvY3VzJyk7CitzaG91bGRCZUZhbHNlKCdpbnB1
dC52YWxpZGl0eS52YWxpZCcpOworc2hvdWxkQmVUcnVlKCdpbnB1dC52YWxpZGF0aW9uTWVzc2Fn
ZS5sZW5ndGggPiAwJyk7CitzaG91bGRCZSgnbGF5b3V0VGVzdENvbnRyb2xsZXIudmlzaWJsZVZh
bGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoImkxIiknLCAnIiInKTsKKworZGVidWcoJ0lu
dmFsaWQgYW5kIGZvY3VzZWQnKTsKK2lucHV0LmZvY3VzKCk7CitzaG91bGRCZSgnbGF5b3V0VGVz
dENvbnRyb2xsZXIudmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoImkxIikn
LCAnaW5wdXQudmFsaWRhdGlvbk1lc3NhZ2UnKTsKKworZGVidWcoJ0ludmFsaWQsIGZvY3VzZWQs
IGFuZCB3aGl0ZXNwYWNlLW9ubHkgY3VzdG9tIG1lc3NhZ2UnKTsKK2lucHV0LnNldEN1c3RvbVZh
bGlkaXR5KCIgICAiKTsKK2lucHV0LmJsdXIoKTsKK2lucHV0LmZvY3VzKCk7CitzaG91bGRCZSgn
bGF5b3V0VGVzdENvbnRyb2xsZXIudmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5
SWQoImkxIiknLCAnIiInKTsKKworZGVidWcoJ0ludmFsaWQsIGZvY3VzZWQsIGFuZCB0aXRsZSBh
dHRyaWJ1dGUnKTsKK2lucHV0LnNldEN1c3RvbVZhbGlkaXR5KCIiKTsKK2lucHV0LnRpdGxlID0g
J1lvdSBuZWVkIHRvIHNwZWNpZnkgYSB2YWx1ZS4nOworaW5wdXQuYmx1cigpOworaW5wdXQuZm9j
dXMoKTsKK3Nob3VsZEJlKCdsYXlvdXRUZXN0Q29udHJvbGxlci52aXNpYmxlVmFsaWRhdGlvbk1l
c3NhZ2VGb3JFbGVtZW50QnlJZCgiaTEiKScsICdpbnB1dC52YWxpZGF0aW9uTWVzc2FnZSArICJc
XG4iICsgaW5wdXQudGl0bGUnKTsKKworZGVidWcoJ0ludmFsaWQsIGZvY3VzZWQsIHRpdGxlIGF0
dHJpYnV0ZSwgYW5kIHdoaXRlc3BhY2Utb25seSBjdXN0b20gbWVzc2FnZScpOworaW5wdXQuc2V0
Q3VzdG9tVmFsaWRpdHkoIiAgICIpOworaW5wdXQuYmx1cigpOworaW5wdXQuZm9jdXMoKTsKK3No
b3VsZEJlKCdsYXlvdXRUZXN0Q29udHJvbGxlci52aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JF
bGVtZW50QnlJZCgiaTEiKScsICciIicpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdmlzaWJsZS12YWxpZGF0aW9u
LW1lc3NhZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy92aXNpYmxlLXZh
bGlkYXRpb24tbWVzc2FnZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDNkZWIwNzMxYWRmMGUx
Zjc5Yzg2NGY2MzEwMTUzZDdjMmRhN2JmYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvdmlzaWJsZS12YWxpZGF0aW9uLW1lc3NhZ2UtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMjEgQEAKK1Rlc3QgZm9yIHZhbGlkYXRpb24gbWVzc2FnZSByZXF1ZXN0cyBmcm9tIGFu
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitJbnZhbGlkIGFuZCBubyBmb2N1cworUEFTUyBpbnB1dC52YWxpZGl0eS52YWxpZCBpcyBmYWxz
ZQorUEFTUyBpbnB1dC52YWxpZGF0aW9uTWVzc2FnZS5sZW5ndGggPiAwIGlzIHRydWUKK1BBU1Mg
bGF5b3V0VGVzdENvbnRyb2xsZXIudmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5
SWQoImkxIikgaXMgIiIKK0ludmFsaWQgYW5kIGZvY3VzZWQKK1BBU1MgbGF5b3V0VGVzdENvbnRy
b2xsZXIudmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoImkxIikgaXMgaW5w
dXQudmFsaWRhdGlvbk1lc3NhZ2UKK0ludmFsaWQsIGZvY3VzZWQsIGFuZCB3aGl0ZXNwYWNlLW9u
bHkgY3VzdG9tIG1lc3NhZ2UKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIudmlzaWJsZVZhbGlk
YXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoImkxIikgaXMgIiIKK0ludmFsaWQsIGZvY3VzZWQs
IGFuZCB0aXRsZSBhdHRyaWJ1dGUKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIudmlzaWJsZVZh
bGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoImkxIikgaXMgaW5wdXQudmFsaWRhdGlvbk1l
c3NhZ2UgKyAiXG4iICsgaW5wdXQudGl0bGUKK0ludmFsaWQsIGZvY3VzZWQsIHRpdGxlIGF0dHJp
YnV0ZSwgYW5kIHdoaXRlc3BhY2Utb25seSBjdXN0b20gbWVzc2FnZQorUEFTUyBsYXlvdXRUZXN0
Q29udHJvbGxlci52aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZCgiaTEiKSBp
cyAiIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdmlzaWJsZS12YWxpZGF0aW9uLW1l
c3NhZ2UuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdmlzaWJsZS12YWxpZGF0aW9uLW1l
c3NhZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YjkyODI1MmM5NjNjM2U2ZTJkMWMzN2NkYTM2NTMyMTA5
OWJhZDYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy92aXNpYmxl
LXZhbGlkYXRpb24tbWVzc2FnZS5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3Zp
c2libGUtdmFsaWRhdGlvbi1tZXNzYWdlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9l
eHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBl
Y3RhdGlvbnMudHh0CmluZGV4IDQ5NWVmODBhYzM4YTI5YjM5ZGMwODFkOWYyYjNlM2Q3NDJiYzUx
MTYuLmYyMjFiOGY2ZTZiNGQ5ZWVjNzcxNGUyMDY5ODdkZDUwMDEzYWIxYTIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAg
LTYyNSw2ICs2MjUsOSBAQCBCVUc4NjMwIFdJTiBMSU5VWCA6IGZhc3QvdGV4dC9mb250LWluaXRp
YWwuaHRtbCA9IEZBSUwKIC8vIGVycm9yIGluIHRoZSBoZWFkZXIgb2YgdGhlIGZvbGxvd2luZyB0
ZXN0LgogQlVHMjQxOTcgU0tJUCA6IGZhc3QvY3NzL2Rpc2FibGVkLWF1dGhvci1zdHlsZXMuaHRt
bCA9IEZBSUwKIAorLy8gTmVlZCBsYXlvdXRUZXN0Q29udHJvbGxlci52aXNpYmxlVmFsaWRhdGlv
bk1lc3NhZ2VGb3JFbGVtZW50QnlJZCgpCitCVUdXSzMxNzE4IDogZmFzdC9mb3Jtcy92aXNpYmxl
LXZhbGlkYXRpb24tbWVzc2FnZS5odG1sID0gVEVYVAorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gT3RoZXIK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBl
ZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCmluZGV4IGVlNWEyNzU4MDc2YzA1
NTVmM2QwZGJjNjE4OWE3NjhmNWYyMWE3OTIuLmMyOWQxNjdlNmQyY2FjZTkxMDkzYjI0MGMwMmU4
MDk1ZjNhNWRjOWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVk
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCkBAIC01OTAyLDMgKzU5MDIs
NSBAQCBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9iYWQtc3ViLXByb3RvY29sLWNvbnRyb2wt
Y2hhcnMuaHRtbAogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcy
NDQKIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhVHJhbnNmZXItc2V0RGF0YS1nZXREYXRhLmh0bWwK
IAorIyBNaXNzaW5nIGxheW91dFRlc3RDb250cm9sbGVyLnZpc2libGVWYWxpZGF0aW9uTWVzc2Fn
ZUZvckVsZW1lbnRCeUlkCitmYXN0L2Zvcm1zL3Zpc2libGUtdmFsaWRhdGlvbi1tZXNzYWdlLmh0
bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCmluZGV4IDdiNWE0MmZmZmE1Zjg3MzdhY2E1Yjg2ZWQw
YjYyOTA4YzRkMGU2ZDUuLmEyMTVmNzgyMjM1YzU0YjY5MjUxYzFlNmM3OTJlZmQxNTdkYTE5ODUg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZApAQCAtNzk4LDYgKzc5OCw5IEBAIGZhc3QvcnVieS9y
dWJ5RE9NLXJlbW92ZS1ydDIuaHRtbAogZmFzdC9ydWJ5L3J1YnlET00tcmVtb3ZlLXRleHQxLmh0
bWwKIGZhc3QvcnVieS9ydWJ5RE9NLXJlbW92ZS10ZXh0Mi5odG1sCiAKKyMgTWlzc2luZyBsYXlv
dXRUZXN0Q29udHJvbGxlci52aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZAor
ZmFzdC9mb3Jtcy92aXNpYmxlLXZhbGlkYXRpb24tbWVzc2FnZS5odG1sCisKICMgPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0gIwogIyBGYWlsaW5nIFNWRyB0ZXN0cwogIyA9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PSAjCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDdjZmE0NWJiN2ExMjUzZGU5YjdlZjhjNDgwMTQ1ZGM3MmU4NGFkMzIuLjhkYWY4MWM3MWYw
NDA5NjEzY2Y4ZThiZGE0MDlmNGVlMmVkNTZjNDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTAtMDQtMDEg
IEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyYW1ld29yayB0byBzaG93IGZvcm0gdmFsaWRh
dGlvbiBtZXNzYWdlIGZvciBpbnZhbGlkIGNvbnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTcxOAorCisgICAgICAgIEFuIEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQgY2FsbHMgQ2hyb21lOjp1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoKQor
ICAgICAgICB3aGVuIGl0IGdldHMgZm9jdXMgYW5kIGxvb3NlcyBmb2N1cy4gQ2hyb21lOjp1cGRh
dGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoKQorICAgICAgICBtYW5hZ2VzIHJlcXVlc3RzIGZyb20g
bXVsdGlwbGUgSFRNTEZvcm1Db250cm9sRWxlbWVudCBpbnN0YW5jZXM6CisgICAgICAgIC0gUGVy
aW9kaWNhbGx5IGNhbGxzIENocm9tZTo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlSW1tZWRp
YXRlbHkoKQorICAgICAgICAgIHRvIGZvbGxvdyBlbGVtZW50IHBvc2l0aW9uIGNoYW5nZS4KKyAg
ICAgICAgLSBJZiBhIG1lc3NhZ2UgaXMgc2hvd24gZm9yIGEgY29udHJvbCBhbmQgdGhlIGZvY3Vz
IGlzIGNoYW5nZWQgdG8KKyAgICAgICAgICBhbm90aGVyIGludmFsaWQgY29udHJvbCwgaGlkZSB0
aGUgY3VycmVudCBtZXNzYWdlLCB3YWl0IGEgbGl0dGxlLAorICAgICAgICAgIHRoZW4gc2hvdyBh
IG1lc3NhZ2UgZm9yIGFub3RoZXIgY29udHJvbC4KKyAgICAgICAgLSBJZiBhIG1lc3NhZ2UgZm9y
IGEgY29udHJvbCBpcyBzaG93biBhbmQgYW5vdGhlciBtZXNzYWdlIGZvciB0aGUKKyAgICAgICAg
ICBjb250cm9sIGlzIHJlcXVlc3RlZCwgaGlkZSB0aGUgY3VycmVudCBtZXNzYWdlLCB3YWl0IGEg
bGl0dGxlLAorICAgICAgICAgIHRoZW4gc2hvdyB0aGUgbmV3IG1lc3NhZ2UuCisKKyAgICAgICAg
VGVzdDogZmFzdC9mb3Jtcy92aXNpYmxlLXZhbGlkYXRpb24tbWVzc2FnZS5odG1sCisKKyAgICAg
ICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGV0YWNoKToKKyAgICAgICAgICBBZGQgYSBjYWxsIHRv
IHVwZGF0ZVZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSgpLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEZvcm1Db250cm9sRWxlbWVudDo6c2V0TmVlZHNXaWxsVmFsaWRhdGVDaGVjayk6IGRpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6dXBkYXRlVmlzaWJsZVZh
bGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgICBBZGRlZC4gQ2FsbHMgQ2hyb21lOjp1cGRhdGVG
b3JtVmFsaWRhdGlvbk1lc3NhZ2UoKSBpZiB0aGUgc3RhdHVzCisgICAgICAgICAgaXMgY2hhbmdl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldE5lZWRzVmFs
aWRpdHlDaGVjayk6CisgICAgICAgICAgQWRkIGEgY2FsbCB0byB1cGRhdGVWaXNpYmxlVmFsaWRh
dGlvbk1lc3NhZ2UoKS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6
OmRpc3BhdGNoRm9jdXNFdmVudCk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1D
b250cm9sRWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQpOiBkaXR0by4KKyAgICAgICAgKiBodG1s
L0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQ6OnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgICAgQWRkZWQg
dGhlIGRlY2xhcmF0aW9uLgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnZhbGlkYXRpb25NZXNzYWdlVXBkYXRlQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6
Q2hyb21lOjp1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UpOiBTZWUgYWJvdmUuCisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWU6OnN0YXJ0VmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dCk6CisgICAg
ICAgICAgQSBoZWxwZXIgZm9yIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSgpLgorICAgICAg
ICAoV2ViQ29yZTo6Q2hyb21lOjp2YWxpZGF0aW9uTWVzc2FnZVRpbWVyRmlyZWQpOmRpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjp1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2VJbW1l
ZGlhdGVseSk6IGRpdHRvLgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisKIDIwMTAtMTAtMTMg
IFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVu
dC5jcHAKaW5kZXggMjA4MGQ5MWMzY2E3ZmY1OTFkNDQwNWNlNjEwZDhlYjlhOGQ0NzdlYy4uZDQ5
ZmU3MDBlMGU1YTY5MmRiNDA1N2NiM2E1N2E3YWZiMGU0MjU1NiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtNzUsNiArNzUsMTIgQEAgSFRNTEZvcm1Db250cm9s
RWxlbWVudDo6fkhUTUxGb3JtQ29udHJvbEVsZW1lbnQoKQogICAgICAgICBtX2Zvcm0tPnJlbW92
ZUZvcm1FbGVtZW50KHRoaXMpOwogfQogCit2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRl
dGFjaCgpCit7CisgICAgSFRNTEVsZW1lbnQ6OmRldGFjaCgpOworICAgIHVwZGF0ZVZpc2libGVW
YWxpZGF0aW9uTWVzc2FnZSgpOworfQorCiBib29sIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmZv
cm1Ob1ZhbGlkYXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4gIWdldEF0dHJpYnV0ZShmb3Jtbm92
YWxpZGF0ZUF0dHIpLmlzTnVsbCgpOwpAQCAtMjk5LDcgKzMwNSw3IEBAIHZvaWQgSFRNTEZvcm1D
b250cm9sRWxlbWVudDo6c2V0TmVlZHNXaWxsVmFsaWRhdGVDaGVjaygpCiAgICAgbV93aWxsVmFs
aWRhdGVJbml0aWFsaXplZCA9IHRydWU7CiAgICAgbV93aWxsVmFsaWRhdGUgPSBuZXdXaWxsVmFs
aWRhdGU7CiAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwotICAgIC8vIEZJWE1FOiBTaG93L2hp
ZGUgYSB2YWxpZGF0aW9uIG1lc3NhZ2UuCisgICAgdXBkYXRlVmlzaWJsZVZhbGlkYXRpb25NZXNz
YWdlKCk7CiB9CiAKIFN0cmluZyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp2YWxpZGF0aW9uTWVz
c2FnZSgpCkBAIC0zMDcsNiArMzEzLDMwIEBAIFN0cmluZyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50
Ojp2YWxpZGF0aW9uTWVzc2FnZSgpCiAgICAgcmV0dXJuIHZhbGlkaXR5KCktPnZhbGlkYXRpb25N
ZXNzYWdlKCk7CiB9CiAKK3ZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6dXBkYXRlVmlzaWJs
ZVZhbGlkYXRpb25NZXNzYWdlKCkKK3sKKyAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFn
ZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworICAgIFN0cmluZyBtZXNzYWdl
OworICAgIC8vIFdlIGNhbid0IHVzZSBmb2N1c2VkKCkuIFRoZSBmb2N1c2VkKCkgc3RhdGUgaXMg
dXBkYXRlZCBhZnRlciBkaXNwYXRjaEZvY3VzRXZlbnQoKS4KKyAgICBpZiAoZG9jdW1lbnQoKS0+
Zm9jdXNlZE5vZGUoKSA9PSB0aGlzICYmIHJlbmRlcmVyKCkgJiYgd2lsbFZhbGlkYXRlKCkpIHsK
KyAgICAgICAgbWVzc2FnZSA9IHZhbGlkYXRpb25NZXNzYWdlKCkuc3RyaXBXaGl0ZVNwYWNlKCk7
CisgICAgICAgIC8vIEhUTUw1IHNwZWNpZmljYXRpb24gZG9lc24ndCBhc2sgVUEgdG8gc2hvdyB0
aGUgdGl0bGUgYXR0cmlidXRlIHZhbHVlCisgICAgICAgIC8vIHdpdGggdGhlIHZhbGlkYXRpb25N
ZXNzYWdlLiAgSG93ZXZlciwgdGhpcyBiZWhhdmlvciBpcyBzYW1lIGFzIE9wZXJhCisgICAgICAg
IC8vIGFuZCB0aGUgc3BlY2lmaWNhdGlvbiBkZXNjcmliZXMgc3VjaCBiZWhhdmlvciBhcyBhbiBl
eGFtcGxlLgorICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHRpdGxlID0gZ2V0QXR0cmlidXRl
KHRpdGxlQXR0cik7CisgICAgICAgIGlmICghbWVzc2FnZS5pc0VtcHR5KCkgJiYgIXRpdGxlLmlz
RW1wdHkoKSkgeworICAgICAgICAgICAgbWVzc2FnZS5hcHBlbmQoJ1xuJyk7CisgICAgICAgICAg
ICBtZXNzYWdlLmFwcGVuZCh0aXRsZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKG1fdmlz
aWJsZVZhbGlkYXRpb25NZXNzYWdlID09IG1lc3NhZ2UpCisgICAgICAgIHJldHVybjsKKyAgICBw
YWdlLT5jaHJvbWUoKS0+dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKHRoaXMsIG1lc3NhZ2Up
OworICAgIG1fdmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlID0gbWVzc2FnZTsKK30KKwogYm9vbCBI
VE1MRm9ybUNvbnRyb2xFbGVtZW50OjpjaGVja1ZhbGlkaXR5KFZlY3RvcjxSZWZQdHI8SFRNTEZv
cm1Db250cm9sRWxlbWVudD4gPiogdW5oYW5kbGVkSW52YWxpZENvbnRyb2xzKQogewogICAgIGlm
ICghd2lsbFZhbGlkYXRlKCkgfHwgaXNWYWxpZEZvcm1Db250cm9sRWxlbWVudCgpKQpAQCAtMzM2
LDcgKzM2Niw5IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0TmVlZHNWYWxpZGl0
eUNoZWNrKCkKICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogICAgIH0KICAgICBtX2lz
VmFsaWQgPSBuZXdJc1ZhbGlkOwotICAgIC8vIEZJWE1FOiBzaG93L2hpZGUgYSB2YWxpZGF0aW9u
IG1lc3NhZ2UuCisgICAgLy8gQ2FsbHMgaXQgZXZlbiBpZiBtX2lzVmFsaWQgaXMgbm90IGNoYW5n
ZWQgYmVjYXVzZSBhIHZhbGlkYXRpb24gbWVzc2FnZQorICAgIC8vIGNhbiBiZSBjaGFnbmVkLgor
ICAgIHVwZGF0ZVZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSgpOwogfQogCiB2b2lkIEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ6OnNldEN1c3RvbVZhbGlkaXR5KGNvbnN0IFN0cmluZyYgZXJyb3IpCkBA
IC0zNTAsNiArMzgyLDcgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkaXNwYXRjaEZv
Y3VzRXZlbnQoKQogICAgICAgICBkb2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQo
KS0+Zm9ybURpZEZvY3VzKHRoaXMpOwogCiAgICAgSFRNTEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNF
dmVudCgpOworICAgIHVwZGF0ZVZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSgpOwogfQogCiB2b2lk
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KCkKQEAgLTM1OCw2ICsz
OTEsNyBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KCkK
ICAgICAgICAgZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPmZvcm1EaWRC
bHVyKHRoaXMpOwogCiAgICAgSFRNTEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KCk7CisgICAg
dXBkYXRlVmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlKCk7CiB9CiAKIEhUTUxGb3JtRWxlbWVudCog
SFRNTEZvcm1Db250cm9sRWxlbWVudDo6dmlydHVhbEZvcm0oKSBjb25zdApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXggYjY4NTg5NjUxMTY1ODI2ZDBkZDZmYTg2MjdjNmM2
ZDAyNGU2NTRkMy4uYjNkZGNmMDA2MTdlZTI3Nzc2MmZlOWJjYWFkMmNkYmExYjAyYmE2MiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCkBAIC04NCw2ICs4NCw4IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgYm9vbCB3aWxsVmFsaWRhdGUoKSBjb25zdDsKICAgICBTdHJpbmcg
dmFsaWRhdGlvbk1lc3NhZ2UoKTsKKyAgICAvLyBGb3IgdGVzdGluZy4KKyAgICBTdHJpbmcgdmlz
aWJsZVZhbGlkYXRpb25NZXNzYWdlKCkgeyByZXR1cm4gbV92aXNpYmxlVmFsaWRhdGlvbk1lc3Nh
Z2U7IH0KICAgICBib29sIGNoZWNrVmFsaWRpdHkoVmVjdG9yPFJlZlB0cjxIVE1MRm9ybUNvbnRy
b2xFbGVtZW50PiA+KiB1bmhhbmRsZWRJbnZhbGlkQ29udHJvbHMgPSAwKTsKICAgICAvLyBUaGlz
IG11c3QgYmUgY2FsbGVkIHdoZW4gYSB2YWxpZGF0aW9uIGNvbnN0cmFpbnQgb3IgY29udHJvbCB2
YWx1ZSBpcyBjaGFuZ2VkLgogICAgIHZvaWQgc2V0TmVlZHNWYWxpZGl0eUNoZWNrKCk7CkBAIC0x
MTEsNiArMTEzLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRm9j
dXNFdmVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEJsdXJFdmVudCgpOworICAgIHZp
cnR1YWwgdm9pZCBkZXRhY2goKTsKIAogICAgIHZvaWQgcmVtb3ZlRnJvbUZvcm0oKTsKIApAQCAt
MTMxLDkgKzEzNCwxMSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgSFRNTEZvcm1FbGVtZW50KiB2
aXJ0dWFsRm9ybSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0RlZmF1bHRCdXR0b25Gb3JG
b3JtKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzVmFsaWRGb3JtQ29udHJvbEVsZW1lbnQo
KTsKKyAgICB2b2lkIHVwZGF0ZVZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSgpOwogCiAgICAgSFRN
TEZvcm1FbGVtZW50KiBtX2Zvcm07CiAgICAgT3duUHRyPFZhbGlkaXR5U3RhdGU+IG1fdmFsaWRp
dHlTdGF0ZTsKKyAgICBTdHJpbmcgbV92aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2U7CiAgICAgYm9v
bCBtX2Rpc2FibGVkIDogMTsKICAgICBib29sIG1fcmVhZE9ubHkgOiAxOwogICAgIGJvb2wgbV9y
ZXF1aXJlZCA6IDE7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCBiL1dlYkNv
cmUvcGFnZS9DaHJvbWUuY3BwCmluZGV4IDk0NGYzMmYzMTFiZmYzYmJmNzM4NzJjZThjNjQwZDNi
N2YzYTgyMTAuLmFlMTQ5YzEyZmQ0MmQyMTBiMzJmZWY3M2MyYmRhOWQ1YTBkOGNmNzcgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9DaHJvbWUu
Y3BwCkBAIC01NSw2ICs1NSwyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAorLy8gQWZ0ZXIgdGhlIGZpcnN0
IGNhbGwgb2YgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlSW1tZWRpYXRlbHkoZSwgIm1lc3Nh
Z2UxIiksCisvLyBpdCBpcyBjYWxsZWQgcmVwZWF0ZWRseSBldmVyeSB2YWxpZGF0aW9uTWVzc2Fn
ZVVwZGF0ZUludGVydmFsU2Vjb25kCisvLyB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUNvdW50KCkt
MSB0aW1lcywgdGhlbgorLy8gdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlSW1tZWRpYXRlbHko
ZSwgIiIpIGlzIGNhbGxlZCBhZnRlcgorLy8gdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRlcnZh
bFNlY29uZC4KKy8vIEFmdGVyIHRoYXQsIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZUltbWVk
aWF0ZWx5KCkgaXMgbmV2ZXIgY2FsbGVkIGZvcgorLy8gdmFsaWRhdGlvbk1lc3NhZ2VCbGFja291
dFNlY29uZC4KK3N0YXRpYyBkb3VibGUgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRlcnZhbFNl
Y29uZCA9IDAuMzsKK3N0YXRpYyBkb3VibGUgdmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNlY29u
ZCA9IDAuNjsKK3N0YXRpYyBpbnQgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3VudChjb25zdCBT
dHJpbmcmKQoreworICAgIHJldHVybiAyMDsgLy8gRklYTUU6IGFwcGx5IG1lc3NhZ2UgbGVuZ3Ro
Cit9CisKIENocm9tZTo6Q2hyb21lKFBhZ2UqIHBhZ2UsIENocm9tZUNsaWVudCogY2xpZW50KQog
ICAgIDogbV9wYWdlKHBhZ2UpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCkBAIC00MDEsNiArNDE1
LDgzIEBAIHZvaWQgQ2hyb21lOjpzZXRUb29sVGlwKGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3Vs
dCkKICAgICBtX2NsaWVudC0+c2V0VG9vbFRpcCh0b29sVGlwLCB0b29sVGlwRGlyZWN0aW9uKTsK
IH0KIAordm9pZCBDaHJvbWU6OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShIVE1MRm9ybUNv
bnRyb2xFbGVtZW50KiBjb250cm9sLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgQVNT
RVJUKGNvbnRyb2wpOworICAgIGlmICghbV92YWxpZGF0aW9uTWVzc2FnZVRpbWVyKQorICAgICAg
ICBtX3ZhbGlkYXRpb25NZXNzYWdlVGltZXIuc2V0KG5ldyBUaW1lcjxDaHJvbWU+KHRoaXMsICZD
aHJvbWU6OnZhbGlkYXRpb25NZXNzYWdlVGltZXJGaXJlZCkpOworCisgICAgaWYgKG1lc3NhZ2Uu
aXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChtX3ZhbGlkYXRpb25NZXNzYWdlVGFyZ2V0ICE9IGNv
bnRyb2wpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2VU
aW1lci0+c3RvcCgpOworICAgICAgICB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2VJbW1lZGlh
dGVseShjb250cm9sLCBtZXNzYWdlKTsKKyAgICAgICAgbV92YWxpZGF0aW9uTWVzc2FnZSA9IG1l
c3NhZ2U7CisgICAgICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2VUYXJnZXQuY2xlYXIoKTsKKyAgICAg
ICAgLy8gU3RhcnQgdGhlIHRpbWVyIHRvIG1ha2UgYSBibGFja291dCBwZXJpb2QuIERvIG5vdCB1
c2Ugc3RhcnRPbmVTaG9ydCgpCisgICAgICAgIC8vIGluIG9yZGVyIHRvIHJldXNlIHRoaXMgZm9y
IHRoZSBuZXh0IG1lc3NhZ2UuCisgICAgICAgIHN0YXJ0VmFsaWRhdGlvbk1lc3NhZ2VCbGFja291
dCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYm9vbCB3YXNWaXNpYmxlID0gIW1f
dmFsaWRhdGlvbk1lc3NhZ2UuaXNFbXB0eSgpOworICAgIFJlZlB0cjxIVE1MRm9ybUNvbnRyb2xF
bGVtZW50PiBsYXN0VGFyZ2V0KG1fdmFsaWRhdGlvbk1lc3NhZ2VUYXJnZXQpOworICAgIGJvb2wg
cmVzZXRUaW1lciA9ICF3YXNWaXNpYmxlIHx8IG1fdmFsaWRhdGlvbk1lc3NhZ2VUYXJnZXQgIT0g
Y29udHJvbCB8fCBtX3ZhbGlkYXRpb25NZXNzYWdlICE9IG1lc3NhZ2U7CisgICAgbV92YWxpZGF0
aW9uTWVzc2FnZSA9IG1lc3NhZ2U7CisgICAgbV92YWxpZGF0aW9uTWVzc2FnZVRhcmdldCA9IGNv
bnRyb2w7CisgICAgaWYgKCFyZXNldFRpbWVyKSB7CisgICAgICAgIHVwZGF0ZUZvcm1WYWxpZGF0
aW9uTWVzc2FnZUltbWVkaWF0ZWx5KG1fdmFsaWRhdGlvbk1lc3NhZ2VUYXJnZXQuZ2V0KCksIG1f
dmFsaWRhdGlvbk1lc3NhZ2UpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICh3YXNW
aXNpYmxlKSB7CisgICAgICAgIC8vIENsZWFyIHRoZSB2aXNpYmxlIG9sZCBtZXNzYWdlLgorICAg
ICAgICBtX3ZhbGlkYXRpb25NZXNzYWdlVGltZXItPnN0b3AoKTsKKyAgICAgICAgdXBkYXRlRm9y
bVZhbGlkYXRpb25NZXNzYWdlSW1tZWRpYXRlbHkobGFzdFRhcmdldC5nZXQoKSwgU3RyaW5nKCkp
OworICAgICAgICAvLyBXaWxsIHNob3cgdGhlIG5ldyBtZXNzYWdlIGFmdGVyIHZhbGlkYXRpb25N
ZXNzYWdlQmxhY2tvdXRTZWMuCisgICAgICAgIHN0YXJ0VmFsaWRhdGlvbk1lc3NhZ2VCbGFja291
dCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtX3ZhbGlkYXRpb25NZXNzYWdlVGltZXIt
PmlzQWN0aXZlKCkpIHsKKyAgICAgICAgICAgIC8vIE5vdGhpbmcgdG8gZG8gaWYgaXQgaXMgaW4g
YSBibGFja291dCBwZXJpb2QuIFdoZW4gdGhlIHRpbWVyIGlzCisgICAgICAgICAgICAvLyBmaXJl
ZCBuZXh0IHRpbWUsIHZhbGlkYXRpb25NZXNzYWdlVGltZXJGaXJlZCgpIHNob3dzIHRoZSBtZXNz
YWdlCisgICAgICAgICAgICAvLyBiZWNhdXNlIG1fdmFsaWRhdGlvbk1lc3NhZ2UgaXMgbm90IGVt
cHR5LgorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gSXQncyBub3QgaW4gYSBibGFj
a291dCBwZXJpb2QuIFNob3cgdGhlIG1lc3NhZ2UgaW1tZWRpYXRlbHkuCisgICAgICAgICAgICB1
cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2VJbW1lZGlhdGVseShtX3ZhbGlkYXRpb25NZXNzYWdl
VGFyZ2V0LmdldCgpLCBtX3ZhbGlkYXRpb25NZXNzYWdlKTsKKyAgICAgICAgICAgIG1fdmFsaWRh
dGlvbk1lc3NhZ2VUaW1lckNvdW50ZXIgPSAwOworICAgICAgICAgICAgbV92YWxpZGF0aW9uTWVz
c2FnZVRpbWVyLT5zdGFydFJlcGVhdGluZyh2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUludGVydmFs
U2Vjb25kKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBDaHJvbWU6OnN0YXJ0VmFsaWRh
dGlvbk1lc3NhZ2VCbGFja291dCgpCit7CisgICAgbV92YWxpZGF0aW9uTWVzc2FnZVRpbWVyQ291
bnRlciA9IC0xOworICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2VUaW1lci0+c3RhcnQodmFsaWRhdGlv
bk1lc3NhZ2VCbGFja291dFNlY29uZCwgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRlcnZhbFNl
Y29uZCk7Cit9CisKK3ZvaWQgQ2hyb21lOjp2YWxpZGF0aW9uTWVzc2FnZVRpbWVyRmlyZWQoVGlt
ZXI8Q2hyb21lPiogdGltZXIpCit7CisgICAgaWYgKG1fdmFsaWRhdGlvbk1lc3NhZ2UuaXNFbXB0
eSgpKSB7CisgICAgICAgIEFTU0VSVChtX3ZhbGlkYXRpb25NZXNzYWdlVGltZXJDb3VudGVyIDwg
MCk7CisgICAgICAgIHRpbWVyLT5zdG9wKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlSW1tZWRpYXRlbHkobV92YWxpZGF0aW9uTWVzc2Fn
ZVRhcmdldC5nZXQoKSwgbV92YWxpZGF0aW9uTWVzc2FnZSk7CisgICAgaWYgKCsrbV92YWxpZGF0
aW9uTWVzc2FnZVRpbWVyQ291bnRlciA8IHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlQ291bnQobV92
YWxpZGF0aW9uTWVzc2FnZSkpCisgICAgICAgIHJldHVybjsKKyAgICB0aW1lci0+c3RvcCgpOwor
ICAgIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZUltbWVkaWF0ZWx5KG1fdmFsaWRhdGlvbk1l
c3NhZ2VUYXJnZXQuZ2V0KCksIFN0cmluZygpKTsKKyAgICBtX3ZhbGlkYXRpb25NZXNzYWdlID0g
U3RyaW5nKCk7CisgICAgbV92YWxpZGF0aW9uTWVzc2FnZVRhcmdldC5jbGVhcigpOworCisgICAg
c3RhcnRWYWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0KCk7Cit9CisKK3ZvaWQgQ2hyb21lOjp1cGRh
dGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2VJbW1lZGlhdGVseShIVE1MRm9ybUNvbnRyb2xFbGVtZW50
KiwgY29uc3QgU3RyaW5nJikKK3sKKyAgICAvLyBGSVhNRTogSW1wZWxlbWVudCB0aGlzLgorfQor
CiB2b2lkIENocm9tZTo6cHJpbnQoRnJhbWUqIGZyYW1lKQogewogICAgIG1fY2xpZW50LT5wcmlu
dChmcmFtZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmggYi9XZWJDb3JlL3Bh
Z2UvQ2hyb21lLmgKaW5kZXggMTg5N2I3OTk0MzAzMDJmYThiYTM0OTE4YWZiODMwNjVlNjc2NTc3
MS4uZjRhZDU2MjY5Nzk1YjU3MzY4NjgwNTMwNTAzNzU3ZmRhY2I2NjgzYiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wYWdlL0Nocm9tZS5oCisrKyBiL1dlYkNvcmUvcGFnZS9DaHJvbWUuaApAQCAtMjcs
NyArMjcsOSBAQAogI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKICNpbmNsdWRlICJQb3B1cE1lbnUu
aCIKICNpbmNsdWRlICJTZWFyY2hQb3B1cE1lbnUuaCIKKyNpbmNsdWRlICJUaW1lci5oIgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTQzLDYgKzQ1LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEZsb2F0UmVjdDsKICAgICBjbGFzcyBGcmFtZTsK
ICAgICBjbGFzcyBHZW9sb2NhdGlvbjsKKyAgICBjbGFzcyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50
OwogICAgIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiAgICAgY2xhc3MgSW50UmVjdDsKICAgICBjbGFz
cyBOb2RlOwpAQCAtMTMxLDYgKzEzNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0UmVzdWx0JiwgdW5zaWdu
ZWQgbW9kaWZpZXJGbGFncyk7CiAKICAgICAgICAgdm9pZCBzZXRUb29sVGlwKGNvbnN0IEhpdFRl
c3RSZXN1bHQmKTsKKyAgICAgICAgdm9pZCB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoSFRN
TEZvcm1Db250cm9sRWxlbWVudCosIGNvbnN0IFN0cmluZyYpOwogCiAgICAgICAgIHZvaWQgcHJp
bnQoRnJhbWUqKTsKIApAQCAtMTU1LDggKzE1OSwyOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIFBhc3NSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUo
UG9wdXBNZW51Q2xpZW50KikgY29uc3Q7CiAKICAgICBwcml2YXRlOgorICAgICAgICB2b2lkIHZh
bGlkYXRpb25NZXNzYWdlVGltZXJGaXJlZChUaW1lcjxDaHJvbWU+Kik7CisgICAgICAgIHZvaWQg
c3RhcnRWYWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0KCk7CisgICAgICAgIC8vIFNob3cgdGhlIHNw
ZWNpZmllZCBtZXNzYWdlIGZvciB0aGUgZm9ybSBjb250cm9sLiBIaWRlIHRoZSBtZXNzYWdlCisg
ICAgICAgIC8vIGlmIHRoZSBzdHJpbmcgaXMgZW1wdHkuIElmIHVwZGF0ZUZvcm1WYWxpZGF0aW9u
TWVzc2FnZUltbWVkaWF0ZWx5KCkKKyAgICAgICAgLy8gd2l0aCBub24tZW1wdHkgbWVzc2FnZSBp
cyBjYWxsZWQsIHRoZSBzdWJzZXF1ZW50IGNhbGxzIG9mCisgICAgICAgIC8vIHVwZGF0ZUZvcm1W
YWxpZGF0aW9uTWVzc2FnZUltbWVkaWF0ZWx5KCkgbXVzdCBiZSBmb3IgdGhlIHNhbWUgZWxlbWVu
dAorICAgICAgICAvLyBhbmQgdGhlIHNhbWUgbWVzc2FnZS4gVGhlbiwgdXBkYXRlRm9ybVZhbGlk
YXRpb25NZXNzYWdlKCkgaXMgY2FsbGVkCisgICAgICAgIC8vIHdpdGggdGhlIHNhbWUgZWxlbWVu
dCBhbmQgdGhlIGVtcHR5IG1lc3NhZ2UuCisgICAgICAgIC8vICB1cGRhdGVGb3JtVmFsaWRhdGlv
bk1lc2FnZShjb250cm9sMSwgIm1lc3NhZ2UxIikgLT4KKyAgICAgICAgLy8gIHVwZGF0ZUZvcm1W
YWxpZGF0aW9uTWVzYWdlKGNvbnRyb2wxLCAibWVzc2FnZTEiKSAtPgorICAgICAgICAvLyAgdXBk
YXRlRm9ybVZhbGlkYXRpb25NZXNhZ2UoY29udHJvbDEsICJtZXNzYWdlMSIpIC4uLiAobXVsdGlw
bGUgdGltZXMpCisgICAgICAgIC8vICB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc2FnZShjb250cm9s
MSwgIiIpCisgICAgICAgIC8vIEluIHRoaXMgc2VxdWVuY2UsIGNhbGxzIHdpdGggb3RoZXIgY29u
dHJvbHMgb3Igb3RoZXIgbWVzc2FnZXMKKyAgICAgICAgLy8gbmV2ZXIgaGFwcGVuLgorICAgICAg
ICB2b2lkIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZUltbWVkaWF0ZWx5KEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQqLCBjb25zdCBTdHJpbmcmKTsKKwogICAgICAgICBQYWdlKiBtX3BhZ2U7CiAg
ICAgICAgIENocm9tZUNsaWVudCogbV9jbGllbnQ7CisgICAgICAgIE93blB0cjxUaW1lcjxDaHJv
bWU+Kj4gbV92YWxpZGF0aW9uTWVzc2FnZVRpbWVyOworICAgICAgICBpbnQgbV92YWxpZGF0aW9u
TWVzc2FnZVRpbWVyQ291bnRlcjsKKyAgICAgICAgU3RyaW5nIG1fdmFsaWRhdGlvbk1lc3NhZ2U7
CisgICAgICAgIFJlZlB0cjxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PiBtX3ZhbGlkYXRpb25NZXNz
YWdlVGFyZ2V0OwogICAgIH07CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvQ2hhbmdlTG9n
IGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNTBkNmFjMWQyN2U0ZDY2ZjEwOGQwYzc5NmNi
YThlMzJhOTVhMDY3Yi4uYjE5ZGQ1MmE2M2I4ZjUxMDUxNTFkNzczZDUyOWY2YWVmNTYwM2ZlNSAx
MDA2NDQKLS0tIGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wNC0wMSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgRnJhbWV3b3JrIHRvIHNob3cgZm9ybSB2YWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGludmFsaWQg
Y29udHJvbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMxNzE4CisKKyAgICAgICAgQWRkIGEgaGVscGVyIGZvciBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoKS4KKworICAgICAgICAqIE1p
c2MvV2ViQ29yZVN0YXRpc3RpY3MuaDoKKyAgICAgICAgKiBNaXNjL1dlYkNvcmVTdGF0aXN0aWNz
Lm1tOgorICAgICAgICAoLVtXZWJGcmFtZSB2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVt
ZW50QnlJZDpdKToKKwogMjAxMC0xMC0xMiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+
CiAKICAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9X
ZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MuaCBiL1dlYktpdC9tYWMvTWlzYy9XZWJD
b3JlU3RhdGlzdGljcy5oCmluZGV4IDE1NjVjMjYxNTc2MzIzZWZiMDI4YWI0OTExMTFkZmFmZjQ1
OGI0NDguLjljYmRkZDU3MjAzZDUyNGMzMmIyZjVhZWZhYmQ1YWMxMjU3MmZlMjEgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5oCisrKyBiL1dlYktpdC9tYWMv
TWlzYy9XZWJDb3JlU3RhdGlzdGljcy5oCkBAIC04Nyw2ICs4Nyw3IEBACiAtIChOU1N0cmluZyAq
KWNvdW50ZXJWYWx1ZUZvckVsZW1lbnQ6KERPTUVsZW1lbnQqKWVsZW1lbnQ7CiAtIChpbnQpcGFn
ZU51bWJlckZvckVsZW1lbnQ6KERPTUVsZW1lbnQqKWVsZW1lbnQ6KGZsb2F0KXBhZ2VXaWR0aElu
UGl4ZWxzOihmbG9hdClwYWdlSGVpZ2h0SW5QaXhlbHM7CiAtIChpbnQpbnVtYmVyT2ZQYWdlczoo
ZmxvYXQpcGFnZVdpZHRoSW5QaXhlbHM6KGZsb2F0KXBhZ2VIZWlnaHRJblBpeGVsczsKKy0gKE5T
U3RyaW5nICopdmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQ6KE5TU3RyaW5n
ICopZWxlbWVudElkOwogLSAoTlNTdHJpbmcgKilwYWdlUHJvcGVydHk6KGNvbnN0IGNoYXIqKXBy
b3BlcnR5TmFtZTooaW50KXBhZ2VOdW1iZXI7CiAtIChib29sKWlzUGFnZUJveFZpc2libGU6KGlu
dClwYWdlTnVtYmVyOwogLSAoTlNTdHJpbmcgKilwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVsczoo
aW50KXBhZ2VOdW1iZXI6KGludCl3aWR0aDooaW50KWhlaWdodDooaW50KW1hcmdpblRvcDooaW50
KW1hcmdpblJpZ2h0OihpbnQpbWFyZ2luQm90dG9tOihpbnQpbWFyZ2luTGVmdDsKZGlmZiAtLWdp
dCBhL1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbSBiL1dlYktpdC9tYWMvTWlz
Yy9XZWJDb3JlU3RhdGlzdGljcy5tbQppbmRleCA1YjVhMWJjM2JmODAyMjBhZDdiYTVlMmFiNDli
MTBjYmMxYWI0ZGYzLi42NTM4ZmU0MjVkODY4ODBlMzg3MTVhNWFmZjlmMWY4MDUxNTU4YWRmIDEw
MDY0NAotLS0gYS9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW0KKysrIGIvV2Vi
S2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
bXBvcnQgIldlYkNvcmVTdGF0aXN0aWNzLmgiCiAKKyNpbXBvcnQgIkRPTURvY3VtZW50SW50ZXJu
YWwuaCIKICNpbXBvcnQgIkRPTUVsZW1lbnRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViQ2FjaGUu
aCIKICNpbXBvcnQgIldlYkZyYW1lSW50ZXJuYWwuaCIKQEAgLTM5LDYgKzQwLDcgQEAKICNpbXBv
cnQgPFdlYkNvcmUvR0NDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dseXBoUGFnZVRy
ZWVOb2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgorI2ltcG9ydCA8
V2ViQ29yZS9IVE1MRm9ybUNvbnRyb2xFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ljb25E
YXRhYmFzZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0RPTVdpbmRvdy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9QYWdlQ2FjaGUuaD4KQEAgLTMwNyw0ICszMDksMTUgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAgICAgUHJpbnRDb250ZXh0OjpzcG9vbEFsbFBhZ2VzV2l0aEJvdW5kYXJpZXMoY29y
ZUZyYW1lLCBncmFwaGljc0NvbnRleHQsIEZsb2F0U2l6ZShwYWdlV2lkdGhJblBpeGVscywgcGFn
ZUhlaWdodEluUGl4ZWxzKSk7CiB9CiAKKy0gKE5TU3RyaW5nICopdmlzaWJsZVZhbGlkYXRpb25N
ZXNzYWdlRm9yRWxlbWVudEJ5SWQ6KE5TU3RyaW5nICopZWxlbWVudElkCit7CisgICAgRE9NRWxl
bWVudCogZWxlbWVudCA9IFtbc2VsZiBET01Eb2N1bWVudF0gZ2V0RWxlbWVudEJ5SWQ6ZWxlbWVu
dElkXTsKKyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgRWxlbWVu
dCogY29yZUVsZW1lbnQgPSBjb3JlKGVsZW1lbnQpOworICAgIGlmICghY29yZUVsZW1lbnQtPmlz
Rm9ybUNvbnRyb2xFbGVtZW50KCkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgSFRNTEZvcm1D
b250cm9sRWxlbWVudCogZm9ybUNvbnRyb2wgPSBzdGF0aWNfY2FzdDxIVE1MRm9ybUNvbnRyb2xF
bGVtZW50Kj4oY29yZUVsZW1lbnQpOworICAgIHJldHVybiAoTlNTdHJpbmcqKWZvcm1Db250cm9s
LT52aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKTsKK30KIEBlbmQKZGlmZiAtLWdpdCBhL1dlYktp
dC93aW4vQ2hhbmdlTG9nIGIvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggZjFhMzNkNmJlNzZl
N2Q0YWI5NTBiM2RlM2ViMTg5NzBlOWE3ZjJhZS4uYzg3MTU5ZTZhYzY3MzM5ODc4ODU3NmE0Mzg3
MzcyOGIyMmMyMTc1OCAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMC0wNC0wMSAgS2VudCBUYW11
cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRnJhbWV3b3JrIHRvIHNob3cgZm9ybSB2YWxpZGF0aW9uIG1lc3Nh
Z2UgZm9yIGludmFsaWQgY29udHJvbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTMxNzE4CisKKyAgICAgICAgQWRkIHZpc2libGVWYWxpZGF0aW9uTWVz
c2FnZUZvckVsZW1lbnRCeUlkKCkgZm9yIExheW91dFRlc3RDb250cm9sbGVyLgorCisgICAgICAg
ICogSW50ZXJmYWNlcy9JV2ViRnJhbWVQcml2YXRlLmlkbDoKKyAgICAgICAgKiBJbnRlcmZhY2Vz
L1dlYktpdC5pZGw6IEp1c3QgdG91Y2guCisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAg
ICAoV2ViRnJhbWU6OnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKToKKyAg
ICAgICAgKiBXZWJGcmFtZS5oOgorCiAyMDEwLTEwLTExICBTaGluaWNoaXJvIEhhbWFqaSAgPGhh
bWFqaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQXR0ZW1wdCB0byBmaXggd2luZG93cyBidWls
ZCBmYWlsdXJlLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJGcmFtZVBy
aXZhdGUuaWRsIGIvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJGcmFtZVByaXZhdGUuaWRsCmlu
ZGV4IDE5MDY4MWMxNzRhYWRiYzBmOWRiMTZmNjJlM2Y1NmM1Nzc1OWIwMGMuLjg1YzQ1ZmY4NmM4
OThhZTI0Mjk1ZGM3ZDc2YTc4Y2EyOWRiYTU1Y2QgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vSW50
ZXJmYWNlcy9JV2ViRnJhbWVQcml2YXRlLmlkbAorKysgYi9XZWJLaXQvd2luL0ludGVyZmFjZXMv
SVdlYkZyYW1lUHJpdmF0ZS5pZGwKQEAgLTExNyw0ICsxMTcsNiBAQCBpbnRlcmZhY2UgSVdlYkZy
YW1lUHJpdmF0ZSA6IElVbmtub3duCiAgICAgSFJFU1VMVCByZXN1bWVBbmltYXRpb25zKCk7CiAK
ICAgICBIUkVTVUxUIGxvYWRQbGFpblRleHRTdHJpbmcoW2luXSBCU1RSIHN0cmluZywgW2luXSBC
U1RSIHVybCk7CisKKyAgICBIUkVTVUxUIHZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1l
bnRCeUlkKFtpbl0gQlNUUiBpZCwgW291dCwgcmV0dmFsXSBCU1RSKiByZXN1bHQpOwogfQpkaWZm
IC0tZ2l0IGEvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL1dlYktpdC5pZGwgYi9XZWJLaXQvd2luL0lu
dGVyZmFjZXMvV2ViS2l0LmlkbAppbmRleCA0NzBiMDUyNDYyODI4NWJkYWY0YzhlYjA4OWY4Y2My
MTJiYTc5NzU2Li4wNDZhZDYyODY1NzdkMTk2MmYwNTc3MWE0ZjgwMTNhODQyMTg3NWFiIDEwMDY0
NAotLS0gYS9XZWJLaXQvd2luL0ludGVyZmFjZXMvV2ViS2l0LmlkbAorKysgYi9XZWJLaXQvd2lu
L0ludGVyZmFjZXMvV2ViS2l0LmlkbApAQCAtMzAwLDQgKzMwMCw0IEBAIGxpYnJhcnkgV2ViS2l0
CiAgICAgICAgIFtkZWZhdWx0XSBpbnRlcmZhY2UgSVdlYlVzZXJDb250ZW50VVJMUGF0dGVybjsK
ICAgICB9CiB9Ci0KKyAKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwIGIvV2Vi
S2l0L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggOGRmZThiYjg0MTZlYzY4ZTFiN2FiNDE0MjllMzQw
M2ZiODJlY2JlZi4uMTY2ZjQyMTU4MmQwN2YzNTAxNTJiMGE4ZDJmOTFiNjU0OWMzNGJjMyAxMDA2
NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvV2ViS2l0L3dpbi9XZWJGcmFt
ZS5jcHAKQEAgLTEwMTksNiArMTAxOSwyMSBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YkZyYW1lOjp1bnVzZWQyKCkKICAgICByZXR1cm4gRV9OT1RJTVBMOwogfQogCitIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYkZyYW1lOjp2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVt
ZW50QnlJZChCU1RSIGlkLCBCU1RSKiByZXN1bHQpCit7CisgICAgaWYgKCFyZXN1bHQpCisgICAg
ICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUodGhpcyk7
CisgICAgaWYgKCFjb3JlRnJhbWUpCisgICAgICAgIHJldHVybiBFX0ZBSUw7CisgICAgRWxlbWVu
dCogZWxlbWVudCA9IGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQoU3RyaW5n
KGlkLCBTeXNTdHJpbmdMZW4oaWQpKSk7CisgICAgaWYgKCFlbGVtZW50IHx8ICFlbGVtZW50LT5p
c0Zvcm1Db250cm9sRWxlbWVudCgpKQorICAgICAgICByZXR1cm4gRV9GQUlMOworICAgIEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQqIGZvcm1Db250cm9sID0gc3RhdGljX2Nhc3Q8SFRNTEZvcm1Db250
cm9sRWxlbWVudCo+KGVsZW1lbnQpOworICAgICpyZXN1bHQgPSBCU3RyaW5nKGZvcm1Db250cm9s
LT52aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKSkucmVsZWFzZSgpOworICAgIHJldHVybiBTX09L
OworfQorCiAvLyBJV2ViRG9jdW1lbnRUZXh0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViRnJhbWU6OnN1cHBvcnRzVGV4dEVuY29kaW5nKCAKZGlmZiAtLWdpdCBhL1dlYktpdC93
aW4vV2ViRnJhbWUuaCBiL1dlYktpdC93aW4vV2ViRnJhbWUuaAppbmRleCAxNDdkYWE4M2UzN2Q1
OWQ3M2JiNGM0YjE1M2RhYmU4ODAwMDFiMzM2Li45OTNjODU3YjRmNjg2Njk2MDU4NGJjZTA0NGE3
ZjYyNTRjZDMxNjJiIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYkZyYW1lLmgKKysrIGIvV2Vi
S2l0L3dpbi9XZWJGcmFtZS5oCkBAIC0yNzIsNiArMjcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB2aXNpYmxlQ29udGVudFJlY3QoUkVDVCopOwog
CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxheWVyVHJlZUFzVGV4dChC
U1RSKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHZpc2libGVWYWxp
ZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKEJTVFIgaWQsIEJTVFIqIHJlc3VsdCk7CiAKICAg
ICAvLyBJV2ViRG9jdW1lbnRUZXh0CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHN1cHBvcnRzVGV4dEVuY29kaW5nKCAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5n
ZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCBlOWJkMzEwN2U1MTgzYTIxYThhMmFm
NWE3NjE1YmU2ODI2M2RjMmQ3Li40NTRlZTRhNGQwNzIxNGVjYWY1NzY1MzI4OTcwNTFiYjliMjYz
ZDRkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTAtMDQtMDEgIEtlbnQgVGFtdXJhICA8dGtl
bnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEZyYW1ld29yayB0byBzaG93IGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdlIGZvciBp
bnZhbGlkIGNvbnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zMTcxOAorCisgICAgICAgIEFkZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6dmlzaWJs
ZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoKS4KKyAgICAgICAgV2luZG93cyBhbmQg
TWFjIGhhdmUgd29ya2FibGUgaW1wbGVtZW50YXRpb25zLgorCisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAodmlzaWJsZVZhbGlkYXRp
b25NZXNzYWdlRm9yRWxlbWVudEJ5SWRDYWxsYmFjayk6CisgICAgICAgIChMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRU
ZXN0Q29udHJvbGxlckd0ay5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6dmlz
aWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKExheW91dFRl
c3RDb250cm9sbGVyOjp2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZCk6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcDoK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjp2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VG
b3JFbGVtZW50QnlJZCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENv
bnRyb2xsZXJXeC5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6dmlzaWJsZVZh
bGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQpOgorCiAyMDEwLTEwLTEyICBEaXJrIFByYW5r
ZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2Vp
ZGVsLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwCmluZGV4IDBhN2MxMWZlNThlN2ZlMzY2YTcwYjZjZDIyNzRiMzdkYTVkMjc4NzIu
LjYzNjFiY2Q1Y2RkNTI3MjI5NGVmNDdmOTQ1N2VjNzgyYmEyYWI1MjggMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTEy
NDksNiArMTI0OSwyMCBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRGcmFtZUZsYXR0ZW5pbmdFbmFi
bGVkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZQogICAgIHJldHVybiBKU1Zh
bHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgdmlzaWJs
ZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29u
dGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVf
dCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQorICAgICAgICByZXR1
cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IGVsZW1lbnRJZChBZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBhcmd1
bWVudHNbMF0sIGV4Y2VwdGlvbikpOworICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7CisKKyAgICBM
YXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RD
b250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gbWVzc2FnZShjb250cm9sbGVyLT52aXNpYmxlVmFsaWRhdGlvbk1l
c3NhZ2VGb3JFbGVtZW50QnlJZChlbGVtZW50SWQuZ2V0KCkpKTsKKyAgICBpZiAoIW1lc3NhZ2Uu
Z2V0KCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKyAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dCwgbWVzc2FnZS5nZXQoKSk7Cit9CisK
IHN0YXRpYyBKU1ZhbHVlUmVmIHNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzQ2Fs
bGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVj
dFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBh
cmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIC8vIEhhcyBtYWMgJiB3
aW5kb3dzIGltcGxlbWVudGF0aW9uCkBAIC0xOTc1LDYgKzE5ODksNyBAQCBKU1N0YXRpY0Z1bmN0
aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKCkKICAgICAgICAgeyAi
c2hvd1dlYkluc3BlY3RvciIsIHNob3dXZWJJbnNwZWN0b3JDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAg
ICAgICB7ICJ0ZXN0T25zY3JlZW4iLCB0ZXN0T25zY3JlZW5DYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAg
ICAgICB7ICJ0ZXN0UmVwYWludCIsIHRlc3RSZXBhaW50Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAg
ICAgeyAidmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQiLCB2aXNpYmxlVmFs
aWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsg
IndhaXRGb3JQb2xpY3lEZWxlZ2F0ZSIsIHdhaXRGb3JQb2xpY3lEZWxlZ2F0ZUNhbGxiYWNrLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCiAgICAgICAgIHsgIndhaXRVbnRpbERvbmUiLCB3YWl0VW50aWxEb25lQ2FsbGJhY2ss
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKICAgICAgICAgeyAid2luZG93Q291bnQiLCB3aW5kb3dDb3VudENhbGxiYWNrLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuaAppbmRleCA3NTVhMmIyYjljNjg4NWI3OTZhMDNlNTJkNTAyMGQ4OGI0M2RkOThiLi4z
MjIwODNlOTE3MDFlZmEyMWQ2ZmYxZDFhOGRmNjU3YTkyYWEwOTJjIDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTExMSw3ICsx
MTEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoYm9v
bCBlbmFibGUpOwogICAgIHZvaWQgc2V0U2Nyb2xsYmFyUG9saWN5KEpTU3RyaW5nUmVmIG9yaWVu
dGF0aW9uLCBKU1N0cmluZ1JlZiBwb2xpY3kpOwogICAgIHZvaWQgc2V0RWRpdGluZ0JlaGF2aW9y
KGNvbnN0IGNoYXIqIGVkaXRpbmdCZWhhdmlvcik7Ci0KKyAgICBKU1N0cmluZ1JlZiB2aXNpYmxl
VmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZChKU1N0cmluZ1JlZiBpZCk7CiAgICAgdm9p
ZCB3YWl0Rm9yUG9saWN5RGVsZWdhdGUoKTsKICAgICBzaXplX3Qgd2ViSGlzdG9yeUl0ZW1Db3Vu
dCgpOwogICAgIHVuc2lnbmVkIHdvcmtlclRocmVhZENvdW50KCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsu
Y3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVy
R3RrLmNwcAppbmRleCBkODMxMDc2M2RlNjY0ZjM5NTI0MDQ0ZTdmODVmNzc1NWJkNDhmMWMwLi4z
NWYwNThlOTQ0MzE3YjdkNGYzYjYwZjgyY2FlOWJlYzViZWNhYjFlIDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCisr
KyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0
ay5jcHAKQEAgLTc3MSw2ICs3NzEsMTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YXBp
VGVzdEdvVG9DdXJyZW50QmFja0ZvcndhcmRJdGVtKCkKIAogfQogCitKU1N0cmluZ1JlZiBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQo
SlNTdHJpbmdSZWYgaWQpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAgIHJl
dHVybiAwOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRXZWJWaWV3RWRpdGFi
bGUoYm9vbCkKIHsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbSBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQppbmRleCBjNjZjOWRhYjAzMWJkNjM4ZDA1
NGRkZmExZWE5NGIwMzM3ZmEwNmEwLi4zOWVmY2FmYjk0OWUyYjVjMGVlNzcwOGZhMGRjOTMyODc0
NjFiNTk2IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0
VGVzdENvbnRyb2xsZXJNYWMubW0KKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCkBAIC04MzMsNiArODMzLDEyIEBAIHZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OmFwaVRlc3RHb1RvQ3VycmVudEJhY2tGb3J3YXJkSXRlbSgpCiAg
ICAgW3ZpZXcgZ29Ub0JhY2tGb3J3YXJkSXRlbTpbW3ZpZXcgYmFja0ZvcndhcmRMaXN0XSBjdXJy
ZW50SXRlbV1dOwogfQogCitKU1N0cmluZ1JlZiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6dmlzaWJs
ZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWQpCit7CisgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBpZENGKEFkb3B0Q0YsIEpTU3RyaW5nQ29weUNGU3RyaW5n
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGlkKSk7CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0
aENGU3RyaW5nKChDRlN0cmluZ1JlZilbbWFpbkZyYW1lIHZpc2libGVWYWxpZGF0aW9uTWVzc2Fn
ZUZvckVsZW1lbnRCeUlkOihOU1N0cmluZyopaWRDRi5nZXQoKV0pOworfQorCiB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRXZWJWaWV3RWRpdGFibGUoYm9vbCBlZGl0YWJsZSkKIHsKICAg
ICBXZWJWaWV3ICp2aWV3ID0gW21haW5GcmFtZSB3ZWJWaWV3XTsKZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAgYi9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3Bw
CmluZGV4IDZkZDYwOWMyODUwNWY2M2UxMjFlYjlkZTgyZTNkMTkzMWIzMGJlZDguLmVmYzM3MjJl
ODgxZWUxZGUzODg3NWJiMzIwYWQzZDE4OGRmY2IxYzEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKKysrIGIvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcApA
QCAtMTM2Miw2ICsxMzYyLDE5IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFwaVRlc3RH
b1RvQ3VycmVudEJhY2tGb3J3YXJkSXRlbSgpCiAgICAgd2ViVmlldy0+Z29Ub0JhY2tGb3J3YXJk
SXRlbShpdGVtLmdldCgpLCAmc3VjY2Vzcyk7CiB9CiAKK0pTU3RyaW5nUmVmIExheW91dFRlc3RD
b250cm9sbGVyOjp2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZChKU1N0cmlu
Z1JlZiBpZCkKK3sKKyAgICBDT01QdHI8SVdlYkZyYW1lUHJpdmF0ZT4gZnJhbWVQcml2YXRlKFF1
ZXJ5LCBmcmFtZSk7CisgICAgaWYgKCFmcmFtZVByaXZhdGUpCisgICAgICAgIHJldHVybiAwOwor
ICAgIEJTVFIgbWVzc2FnZUJTVFI7CisgICAgaWYgKEZBSUxFRChmcmFtZVByaXZhdGUtPnZpc2li
bGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKGJzdHJUKGlkKS5HZXRCU1RSKCksICZt
ZXNzYWdlQlNUUikpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBKU1N0cmluZ1JlZiBtZXNzYWdl
SlMgPSBKU1N0cmluZ0NyZWF0ZVdpdGhCU1RSKG1lc3NhZ2VCU1RSKTsKKyAgICBTeXNGcmVlU3Ry
aW5nKG1lc3NhZ2VCU1RSKTsKKyAgICByZXR1cm4gbWVzc2FnZUpTOworfQorCiB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRXZWJWaWV3RWRpdGFibGUoYm9vbCkKIHsKIH0KZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3gu
Y3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJX
eC5jcHAKaW5kZXggNWZiYTFjZmQwNjM4NDExMzFiYzEyMDhlZjdhMDljNzQ5NDY5MTkyMC4uODY5
Nzc4ODVlNTMyYjlmYTNkYTViMzA4MmNmMmQ1MDg4Njc3NDE1YyAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKKysrIGIv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAK
QEAgLTQ2Miw2ICs0NjIsMTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0U3BhdGlh
bE5hdmlnYXRpb25FbmFibGVkKGJvb2wpCiAKIH0KIAorSlNTdHJpbmdSZWYgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKEpTU3RyaW5n
UmVmIGlkKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KKyAgICByZXR1cm4gMDsK
K30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0V2ViVmlld0VkaXRhYmxlKGJvb2wp
CiB7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71726</attachid>
            <date>2010-10-25 03:41:46 -0700</date>
            <delta_ts>2010-10-28 01:22:41 -0700</delta_ts>
            <desc>Patch 12 (rebased and simplified)</desc>
            <filename>bug-31718-20101025194144.patch</filename>
            <type>text/plain</type>
            <size>35332</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4YzEzMmEyZmYzZDllOGYyMjE0N2JhNmM1Y2YyMmVhNmFjZTJhYjY5Li4wNWZhN2E2
YWE4ZjkzNWQxZWM0NWI5YzgwOTk4MTJjNTVmODNmM2RjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTAtMDQtMDEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyYW1ld29yayB0byBzaG93
IGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnZhbGlkIGNvbnRyb2xzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTcxOAorCisgICAgICAgIEFk
ZCBhIHRlc3QgdG8gY2hlY2sgYSB2aXNpYmxlIHZhbGlkYXRpb24gbWVzc2FnZS4KKyAgICAgICAg
VGhlIG1lc3NhZ2Ugc2hvdWxkIGJlIGF2YWlsYWJsZSBvbmx5IHdoZW4gdGhlIGNvbnRyb2wgaGFz
IGZvY3VzLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvdmlzaWJsZS12YWxp
ZGF0aW9uLW1lc3NhZ2UuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvdmlzaWJsZS12
YWxpZGF0aW9uLW1lc3NhZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zv
cm1zL3Zpc2libGUtdmFsaWRhdGlvbi1tZXNzYWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAorICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6CisKIDIwMTAtMTAt
MjIgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgVG9ueSBDaGFuZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2Ny
aXB0LXRlc3RzL3Zpc2libGUtdmFsaWRhdGlvbi1tZXNzYWdlLmpzIGIvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9zY3JpcHQtdGVzdHMvdmlzaWJsZS12YWxpZGF0aW9uLW1lc3NhZ2UuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYTEzYTI4YjE3MmQxNWMxMWVjZTBlMWM5ODA0YjhhZDhmMmIzOWEwNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL3Zpc2libGUtdmFs
aWRhdGlvbi1tZXNzYWdlLmpzCkBAIC0wLDAgKzEsMTcgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0IGZv
ciB2YWxpZGF0aW9uIG1lc3NhZ2UgcmVxdWVzdHMgZnJvbSBhbiBIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50LicpOworCit2YXIgcGFyZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Citk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHBhcmVudCk7CitwYXJlbnQuaW5uZXJIVE1MPSAnPGZv
cm0+JworICAgICsgJzxpbnB1dCBpZD1pMSBuYW1lPWkxIHJlcXVpcmVkPicKKyAgICArICc8L2Zv
cm0+JzsKKwordmFyIGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2kxJyk7CitkZWJ1
ZygnSW52YWxpZCBhbmQgbm90IHRyaWVkIHRvIGJlIHN1Ym1pdHRlZCcpOworc2hvdWxkQmVGYWxz
ZSgnaW5wdXQudmFsaWRpdHkudmFsaWQnKTsKK3Nob3VsZEJlVHJ1ZSgnaW5wdXQudmFsaWRhdGlv
bk1lc3NhZ2UubGVuZ3RoID4gMCcpOworc2hvdWxkQmUoJ2xheW91dFRlc3RDb250cm9sbGVyLnZp
c2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKCJpMSIpJywgJyIiJyk7CisKKy8v
IEZJWE1FOiBBZGQgbW9yZSB0ZXN0IGNhc2VzIHdoZW4gd2UgZW5hYmxlIHRoZSBpbnRlcmFjdGl2
ZSB2YWxpZGF0aW9uIGFnYWluLgorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdmlzaWJsZS12YWxpZGF0aW9uLW1lc3Nh
Z2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy92aXNpYmxlLXZhbGlkYXRp
b24tbWVzc2FnZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWVjMjNjOGM4YzRkYzVmMTUxODQ5
ZjVlZTQ0M2Y3MjQyZDhmNWRhZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvdmlzaWJsZS12YWxpZGF0aW9uLW1lc3NhZ2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTMgQEAKK1Rlc3QgZm9yIHZhbGlkYXRpb24gbWVzc2FnZSByZXF1ZXN0cyBmcm9tIGFuIEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitJbnZh
bGlkIGFuZCBub3QgdHJpZWQgdG8gYmUgc3VibWl0dGVkCitQQVNTIGlucHV0LnZhbGlkaXR5LnZh
bGlkIGlzIGZhbHNlCitQQVNTIGlucHV0LnZhbGlkYXRpb25NZXNzYWdlLmxlbmd0aCA+IDAgaXMg
dHJ1ZQorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci52aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VG
b3JFbGVtZW50QnlJZCgiaTEiKSBpcyAiIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
dmlzaWJsZS12YWxpZGF0aW9uLW1lc3NhZ2UuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
dmlzaWJsZS12YWxpZGF0aW9uLW1lc3NhZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YjkyODI1MmM5NjNj
M2U2ZTJkMWMzN2NkYTM2NTMyMTA5OWJhZDYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy92aXNpYmxlLXZhbGlkYXRpb24tbWVzc2FnZS5odG1sCkBAIC0wLDAgKzEs
MTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxo
dG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxw
IGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
IHNyYz0ic2NyaXB0LXRlc3RzL3Zpc2libGUtdmFsaWRhdGlvbi1tZXNzYWdlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CmluZGV4IGEwMDBkM2Q4YTUyOGUzNTQ0
OTkxMTc0ODBmYmM3MDMwNDdmZDFmZTUuLmVjY2JiYThkOWU1OTFjNzFiNjczMDhkNjU4ZWQwZmJj
NzliM2U1NWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3Rf
ZXhwZWN0YXRpb25zLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0
X2V4cGVjdGF0aW9ucy50eHQKQEAgLTYyNiw2ICs2MjYsOSBAQCBCVUc4NjMwIFdJTiBMSU5VWCA6
IGZhc3QvdGV4dC9mb250LWluaXRpYWwuaHRtbCA9IEZBSUwKIC8vIGVycm9yIGluIHRoZSBoZWFk
ZXIgb2YgdGhlIGZvbGxvd2luZyB0ZXN0LgogQlVHMjQxOTcgU0tJUCA6IGZhc3QvY3NzL2Rpc2Fi
bGVkLWF1dGhvci1zdHlsZXMuaHRtbCA9IEZBSUwKIAorLy8gTmVlZCBsYXlvdXRUZXN0Q29udHJv
bGxlci52aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZCgpCitCVUdXSzMxNzE4
IDogZmFzdC9mb3Jtcy92aXNpYmxlLXZhbGlkYXRpb24tbWVzc2FnZS5odG1sID0gVEVYVAorCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogLy8gT3RoZXIKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVk
CmluZGV4IGExZWYwYTA4MmY3ZGU4ZTE4MTYyNzE2YTAxYzM3ZjA4NWM2NzdlM2EuLjM5NGE3NDMz
ZjZlMjU1OGZkZjVjYWZhYTMzNTJhNDY3YmMzZjRhOGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lw
cGVkCkBAIC01ODc4LDYgKzU4NzgsOSBAQCBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9iYWQt
c3ViLXByb3RvY29sLWNvbnRyb2wtY2hhcnMuaHRtbAogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDcyNDQKIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhVHJhbnNmZXIt
c2V0RGF0YS1nZXREYXRhLmh0bWwKIAorIyBNaXNzaW5nIGxheW91dFRlc3RDb250cm9sbGVyLnZp
c2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkCitmYXN0L2Zvcm1zL3Zpc2libGUt
dmFsaWRhdGlvbi1tZXNzYWdlLmh0bWwKKwogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDc1NjQKIHBsYXRmb3JtL2d0ay9hY2Nlc3NpYmlsaXR5L2FyaWEtdGFibGUt
aGllcmFyY2h5Lmh0bWwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tp
cHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXggZmUxODBiZDBiMTA1
NmMzYTIyNmE0MmE3OTM0MTgwOTc4MmUyOTJmOS4uZGI0NzBkMTFhNTliNGJjNTU1Y2VlMzNjMmU3
NzgwOGJmZWViZDA3MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBl
ZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC03ODgsNiArNzg4LDkg
QEAgZmFzdC9ydWJ5L3J1YnlET00tcmVtb3ZlLXJ0Mi5odG1sCiBmYXN0L3J1YnkvcnVieURPTS1y
ZW1vdmUtdGV4dDEuaHRtbAogZmFzdC9ydWJ5L3J1YnlET00tcmVtb3ZlLXRleHQyLmh0bWwKIAor
IyBNaXNzaW5nIGxheW91dFRlc3RDb250cm9sbGVyLnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZv
ckVsZW1lbnRCeUlkCitmYXN0L2Zvcm1zL3Zpc2libGUtdmFsaWRhdGlvbi1tZXNzYWdlLmh0bWwK
KwogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PSAjCiAjIEZhaWxpbmcgU1ZHIHRlc3RzCiAjID09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09ICMKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggM2Q4MGQ4MDZlOTU2YjIxZWU2OTBhZGJjN2ZjOTBlZWJjNjNmNDlk
NS4uZWUyMDI3MDAwZjczYTBiYWFmYjQwMDdlZDRjZjE4NWJhOGJjOTAzMiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NSBA
QAorMjAxMC0wNC0wMSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRnJhbWV3b3JrIHRvIHNo
b3cgZm9ybSB2YWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGludmFsaWQgY29udHJvbHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNzE4CisKKyAgICAgICAg
SFRNTEZvcm1FbGVtZW50Ojp2YWxpZGF0ZUludGVyYWN0aXZlbHkoKSBzaG93cyBhIHZhbGlkYXRp
b24gbWVzc2FnZSBmb3IKKyAgICAgICAgYW4gaW52YWxpZCBjb250cm9sIGJ5IEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQ6OnVwZGF0ZVZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSgpLAorICAgICAgICBh
bmQgdGhlIG1lc3NhZ2UgaXMgaGlkZGVuIHdoZW4gdGhlIGludmFsaWQgY29udHJvbCBsb29zZXMg
Zm9jdXMsIGJlY29tZXMKKyAgICAgICAgdmFsaWQsIG9yIGRldGFjaGVkLgorCisgICAgICAgIFRo
ZSB1cGRhdGVWaXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKSBjYWxscyBDaHJvbWU6OnVwZGF0ZUZv
cm1WYWxpZGF0aW9uTWVzc2FnZSgpLAorICAgICAgICBhbmQgQ2hyb21lOjp1cGRhdGVGb3JtVmFs
aWRhdGlvbk1lc3NhZ2UoKSBtYW5hZ2VzIHJlcXVlc3RzIGZyb20gbXVsdGlwbGUKKyAgICAgICAg
SFRNTEZvcm1Db250cm9sRWxlbWVudCBpbnN0YW5jZXM6CisgICAgICAgIC0gUGVyaW9kaWNhbGx5
IGNhbGxzIENocm9tZTo6dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlSW1tZWRpYXRlbHkoKQor
ICAgICAgICAgIHRvIGZvbGxvdyBlbGVtZW50IHBvc2l0aW9uIGNoYW5nZS4KKyAgICAgICAgLSBJ
ZiBhIG1lc3NhZ2UgaXMgc2hvd24gZm9yIGEgY29udHJvbCBhbmQgYW5vdGhlciBpbnZhbGlkIGNv
bnRyb2wKKyAgICAgICAgICByZXF1ZXN0cyB0byBzaG93IGEgbWVzc2FnZSwgaGlkZSB0aGUgY3Vy
cmVudCBtZXNzYWdlLCB3YWl0IGEgbGl0dGxlLAorICAgICAgICAgIHRoZW4gc2hvdyB0aGUgbmV3
IG1lc3NhZ2UgZm9yIGFub3RoZXIgY29udHJvbC4KKyAgICAgICAgLSBJZiBhIG1lc3NhZ2UgZm9y
IGEgY29udHJvbCBpcyBzaG93biBhbmQgYW5vdGhlciBtZXNzYWdlIGZvciB0aGUKKyAgICAgICAg
ICBjb250cm9sIGlzIHJlcXVlc3RlZCwgaGlkZSB0aGUgY3VycmVudCBtZXNzYWdlLCB3YWl0IGEg
bGl0dGxlLAorICAgICAgICAgIHRoZW4gc2hvdyB0aGUgbmV3IG1lc3NhZ2UuCisKKyAgICAgICAg
VGVzdDogZmFzdC9mb3Jtcy92aXNpYmxlLXZhbGlkYXRpb24tbWVzc2FnZS5odG1sCisKKyAgICAg
ICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGV0YWNoKToKKyAgICAgICAgICBBZGQgYSBjYWxsIHRv
IHVwZGF0ZVZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSgpIHRvIGhpZGUgYSBtZXNzYWdlLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0TmVlZHNXaWxsVmFsaWRh
dGVDaGVjayk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVu
dDo6dXBkYXRlVmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgICBBZGRlZC4gQ2Fs
bHMgQ2hyb21lOjp1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoKSBpZiB0aGUgc3RhdHVzCisg
ICAgICAgICAgaXMgY2hhbmdlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQ6OnNldE5lZWRzVmFsaWRpdHlDaGVjayk6CisgICAgICAgICAgQWRkIGEgY2FsbCB0byB1
cGRhdGVWaXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKSB0byBjaGFuZ2Ugb3IgaGlkZSBhIG1lc3Nh
Z2UuCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkaXNwYXRjaEJs
dXJFdmVudCk6CisgICAgICAgICAgQWRkIGEgY2FsbCB0byB1cGRhdGVWaXNpYmxlVmFsaWRhdGlv
bk1lc3NhZ2UoKSB0byBoaWRlIGEgbWVzc2FnZS4KKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29u
dHJvbEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6
OnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSk6IEFkZGVkIHRoZSBkZWNsYXJhdGlvbi4KKyAgICAg
ICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9y
bUVsZW1lbnQ6OnZhbGlkYXRlSW50ZXJhY3RpdmVseSk6CisgICAgICAgICAgQWRkIGEgY2FsbCB0
byB1cGRhdGVWaXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKSB0byBzaG93IGEgbWVzc2FnZS4KKyAg
ICAgICAgKiBwYWdlL0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0aW9uTWVz
c2FnZVVwZGF0ZUNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6dXBkYXRlRm9ybVZh
bGlkYXRpb25NZXNzYWdlKTogU2VlIGFib3ZlLgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpz
dGFydFZhbGlkYXRpb25NZXNzYWdlQmxhY2tvdXQpOgorICAgICAgICAgIEEgaGVscGVyIGZvciB1
cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2UoKS4KKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6
dmFsaWRhdGlvbk1lc3NhZ2VUaW1lckZpcmVkKTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpD
aHJvbWU6OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZUltbWVkaWF0ZWx5KToKKyAgICAgICAg
ICBkaXR0by4gVGhpcyBpcyBnb2luZyB0byBiZSBpbXBsZW1lbnRlZCBsYXRlci4KKyAgICAgICAg
KiBwYWdlL0Nocm9tZS5oOiBBZGQgZGVjbGFyYXRpb25zLgorCiAyMDEwLTEwLTI0ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVp
bi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCBi
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCA1MWI5ZTIwMjQ5
NjFlN2UzNjQ0Y2JhZmUzMTYwYzMzNzEwMGQ2YjBmLi44MDhlZDA4ODMwNmFkY2I4NDIwOWY4Y2Rl
ZDE5N2JiYTE5OWEwYWE5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
CkBAIC03NSw2ICs3NSwxMiBAQCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp+SFRNTEZvcm1Db250
cm9sRWxlbWVudCgpCiAgICAgICAgIG1fZm9ybS0+cmVtb3ZlRm9ybUVsZW1lbnQodGhpcyk7CiB9
CiAKK3ZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGV0YWNoKCkKK3sKKyAgICB1cGRhdGVW
aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoRm9yY2VUb0hpZGVGbGFnKTsKKyAgICBIVE1MRWxlbWVu
dDo6ZGV0YWNoKCk7Cit9CisKIGJvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6Zm9ybU5vVmFs
aWRhdGUoKSBjb25zdAogewogICAgIHJldHVybiAhZ2V0QXR0cmlidXRlKGZvcm1ub3ZhbGlkYXRl
QXR0cikuaXNOdWxsKCk7CkBAIC0yOTksNyArMzA1LDggQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xF
bGVtZW50OjpzZXROZWVkc1dpbGxWYWxpZGF0ZUNoZWNrKCkKICAgICBtX3dpbGxWYWxpZGF0ZUlu
aXRpYWxpemVkID0gdHJ1ZTsKICAgICBtX3dpbGxWYWxpZGF0ZSA9IG5ld1dpbGxWYWxpZGF0ZTsK
ICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7Ci0gICAgLy8gRklYTUU6IFNob3cvaGlkZSBhIHZh
bGlkYXRpb24gbWVzc2FnZS4KKyAgICBpZiAoIW1fd2lsbFZhbGlkYXRlKQorICAgICAgICB1cGRh
dGVWaXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoRm9yY2VUb0hpZGVGbGFnKTsKIH0KIAogU3RyaW5n
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnZhbGlkYXRpb25NZXNzYWdlKCkKQEAgLTMwNyw2ICsz
MTQsMjkgQEAgU3RyaW5nIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnZhbGlkYXRpb25NZXNzYWdl
KCkKICAgICByZXR1cm4gdmFsaWRpdHkoKS0+dmFsaWRhdGlvbk1lc3NhZ2UoKTsKIH0KIAordm9p
ZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp1cGRhdGVWaXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2Uo
TmVlZHNUb0NoZWNrVmFsaWRpdHlGbGFnIG5lZWRzQ2hlY2spCit7CisgICAgUGFnZSogcGFnZSA9
IGRvY3VtZW50KCktPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKyAg
ICBTdHJpbmcgbWVzc2FnZTsKKyAgICBpZiAobmVlZHNDaGVjayA9PSBDaGVja1ZhbGlkaXR5Rmxh
ZyAmJiByZW5kZXJlcigpICYmIHdpbGxWYWxpZGF0ZSgpKSB7CisgICAgICAgIG1lc3NhZ2UgPSB2
YWxpZGF0aW9uTWVzc2FnZSgpLnN0cmlwV2hpdGVTcGFjZSgpOworICAgICAgICAvLyBIVE1MNSBz
cGVjaWZpY2F0aW9uIGRvZXNuJ3QgYXNrIFVBIHRvIHNob3cgdGhlIHRpdGxlIGF0dHJpYnV0ZSB2
YWx1ZQorICAgICAgICAvLyB3aXRoIHRoZSB2YWxpZGF0aW9uTWVzc2FnZS4gIEhvd2V2ZXIsIHRo
aXMgYmVoYXZpb3IgaXMgc2FtZSBhcyBPcGVyYQorICAgICAgICAvLyBhbmQgdGhlIHNwZWNpZmlj
YXRpb24gZGVzY3JpYmVzIHN1Y2ggYmVoYXZpb3IgYXMgYW4gZXhhbXBsZS4KKyAgICAgICAgY29u
c3QgQXRvbWljU3RyaW5nJiB0aXRsZSA9IGdldEF0dHJpYnV0ZSh0aXRsZUF0dHIpOworICAgICAg
ICBpZiAoIW1lc3NhZ2UuaXNFbXB0eSgpICYmICF0aXRsZS5pc0VtcHR5KCkpIHsKKyAgICAgICAg
ICAgIG1lc3NhZ2UuYXBwZW5kKCdcbicpOworICAgICAgICAgICAgbWVzc2FnZS5hcHBlbmQodGl0
bGUpOworICAgICAgICB9CisgICAgfQorICAgIGlmIChtX3Zpc2libGVWYWxpZGF0aW9uTWVzc2Fn
ZSA9PSBtZXNzYWdlKQorICAgICAgICByZXR1cm47CisgICAgcGFnZS0+Y2hyb21lKCktPnVwZGF0
ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZSh0aGlzLCBtZXNzYWdlKTsKKyAgICBtX3Zpc2libGVWYWxp
ZGF0aW9uTWVzc2FnZSA9IG1lc3NhZ2U7Cit9CisKIGJvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVu
dDo6Y2hlY2tWYWxpZGl0eShWZWN0b3I8UmVmUHRyPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+ID4q
IHVuaGFuZGxlZEludmFsaWRDb250cm9scykKIHsKICAgICBpZiAoIXdpbGxWYWxpZGF0ZSgpIHx8
IGlzVmFsaWRGb3JtQ29udHJvbEVsZW1lbnQoKSkKQEAgLTMzNiw3ICszNjYsMTMgQEAgdm9pZCBI
VE1MRm9ybUNvbnRyb2xFbGVtZW50OjpzZXROZWVkc1ZhbGlkaXR5Q2hlY2soKQogICAgICAgICBz
ZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgfQogICAgIG1faXNWYWxpZCA9IG5ld0lzVmFsaWQ7
Ci0gICAgLy8gRklYTUU6IHNob3cvaGlkZSBhIHZhbGlkYXRpb24gbWVzc2FnZS4KKworICAgIC8v
IFVwZGF0ZXMgb25seSBpZiB0aGlzIGNvbnRyb2wgYWxyZWFkeSBoYXMgYSB2YWxpZHRpb24gbWVz
c2FnZS4KKyAgICBpZiAoIW1fdmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlLmlzRW1wdHkoKSkgewor
ICAgICAgICAvLyBDYWxscyBpdCBldmVuIHVwZGF0ZVZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSgp
IG1faXNWYWxpZCBpcyBub3QKKyAgICAgICAgLy8gY2hhbmdlZCBiZWNhdXNlIGEgdmFsaWRhdGlv
biBtZXNzYWdlIGNhbiBiZSBjaGFnbmVkLgorICAgICAgICB1cGRhdGVWaXNpYmxlVmFsaWRhdGlv
bk1lc3NhZ2UoKTsKKyAgICB9CiB9CiAKIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0
Q3VzdG9tVmFsaWRpdHkoY29uc3QgU3RyaW5nJiBlcnJvcikKQEAgLTM1OCw2ICszOTQsNyBAQCB2
b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KCkKICAgICAgICAg
ZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPmZvcm1EaWRCbHVyKHRoaXMp
OwogCiAgICAgSFRNTEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KCk7CisgICAgdXBkYXRlVmlz
aWJsZVZhbGlkYXRpb25NZXNzYWdlKEZvcmNlVG9IaWRlRmxhZyk7CiB9CiAKIEhUTUxGb3JtRWxl
bWVudCogSFRNTEZvcm1Db250cm9sRWxlbWVudDo6dmlydHVhbEZvcm0oKSBjb25zdApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXggNDc5MmRiYTZmMzBhNGIzMTdlNGUxNDU1
NTBmN2JmYWNhZDRkNjBmOC4uYzRhYzhkYmIwODg5MTdkYTM5OTZlOGEyZGFlNDhjNmEzNDBmZWEy
ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAorKysg
Yi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCkBAIC04NCw2ICs4NCwxMCBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFZhbGlkYXRlKCkgY29uc3Q7CiAgICAg
U3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlKCk7CisgICAgZW51bSBOZWVkc1RvQ2hlY2tWYWxpZGl0
eUZsYWcge0NoZWNrVmFsaWRpdHlGbGFnLCBGb3JjZVRvSGlkZUZsYWd9OworICAgIHZvaWQgdXBk
YXRlVmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlKE5lZWRzVG9DaGVja1ZhbGlkaXR5RmxhZyA9IENo
ZWNrVmFsaWRpdHlGbGFnKTsKKyAgICAvLyBGb3IgdGVzdGluZy4KKyAgICBTdHJpbmcgdmlzaWJs
ZVZhbGlkYXRpb25NZXNzYWdlKCkgeyByZXR1cm4gbV92aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2U7
IH0KICAgICBib29sIGNoZWNrVmFsaWRpdHkoVmVjdG9yPFJlZlB0cjxIVE1MRm9ybUNvbnRyb2xF
bGVtZW50PiA+KiB1bmhhbmRsZWRJbnZhbGlkQ29udHJvbHMgPSAwKTsKICAgICAvLyBUaGlzIG11
c3QgYmUgY2FsbGVkIHdoZW4gYSB2YWxpZGF0aW9uIGNvbnN0cmFpbnQgb3IgY29udHJvbCB2YWx1
ZSBpcyBjaGFuZ2VkLgogICAgIHZvaWQgc2V0TmVlZHNWYWxpZGl0eUNoZWNrKCk7CkBAIC0xMTEs
NiArMTE1LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRm9jdXNF
dmVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEJsdXJFdmVudCgpOworICAgIHZpcnR1
YWwgdm9pZCBkZXRhY2goKTsKIAogICAgIHZvaWQgcmVtb3ZlRnJvbUZvcm0oKTsKIApAQCAtMTM0
LDYgKzEzOSw3IEBAIHByaXZhdGU6CiAKICAgICBIVE1MRm9ybUVsZW1lbnQqIG1fZm9ybTsKICAg
ICBPd25QdHI8VmFsaWRpdHlTdGF0ZT4gbV92YWxpZGl0eVN0YXRlOworICAgIFN0cmluZyBtX3Zp
c2libGVWYWxpZGF0aW9uTWVzc2FnZTsKICAgICBib29sIG1fZGlzYWJsZWQgOiAxOwogICAgIGJv
b2wgbV9yZWFkT25seSA6IDE7CiAgICAgYm9vbCBtX3JlcXVpcmVkIDogMTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
RWxlbWVudC5jcHAKaW5kZXggMzFhNzJiZDhiYWNmMTY3YThkYmM1YzM3YTMwMzY4MTI2Nzg0NWUx
Ny4uODM4ZDUyM2RhMDg4YWM5N2JkMzdiNTVhZjU0MDJkNDk4NmIzNGFiYyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxG
b3JtRWxlbWVudC5jcHAKQEAgLTIxMiw3ICsyMTIsNyBAQCBib29sIEhUTUxGb3JtRWxlbWVudDo6
dmFsaWRhdGVJbnRlcmFjdGl2ZWx5KEV2ZW50KiBldmVudCkKICAgICAvLyBJZiB0aGUgZm9ybSBo
YXMgaW52YWxpZCBjb250cm9scywgYWJvcnQgc3VibWlzc2lvbi4KIAogICAgIFJlZlB0cjxIVE1M
Rm9ybUVsZW1lbnQ+IHByb3RlY3Rvcih0aGlzKTsKLSAgICAvLyBGb2N1cyBvbiB0aGUgZmlyc3Qg
Zm9jdXNhYmxlIGNvbnRyb2wuCisgICAgLy8gRm9jdXMgb24gdGhlIGZpcnN0IGZvY3VzYWJsZSBj
b250cm9sIGFuZCBzaG93IGEgdmFsaWRhdGlvbiBtZXNzYWdlLgogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCB1bmhhbmRsZWRJbnZhbGlkQ29udHJvbHMuc2l6ZSgpOyArK2kpIHsKICAgICAg
ICAgSFRNTEZvcm1Db250cm9sRWxlbWVudCogdW5oYW5kbGVkID0gdW5oYW5kbGVkSW52YWxpZENv
bnRyb2xzW2ldLmdldCgpOwogICAgICAgICBpZiAodW5oYW5kbGVkLT5pc0ZvY3VzYWJsZSgpICYm
IHVuaGFuZGxlZC0+aW5Eb2N1bWVudCgpKSB7CkBAIC0yMjMsNiArMjIzLDcgQEAgYm9vbCBIVE1M
Rm9ybUVsZW1lbnQ6OnZhbGlkYXRlSW50ZXJhY3RpdmVseShFdmVudCogZXZlbnQpCiAgICAgICAg
ICAgICAvLyBtb3ZlZCB0byBhbm90aGVyIGRvY3VtZW50LgogICAgICAgICAgICAgaWYgKHVuaGFu
ZGxlZC0+aXNGb2N1c2FibGUoKSAmJiB1bmhhbmRsZWQtPmluRG9jdW1lbnQoKSAmJiBvcmlnaW5h
bERvY3VtZW50ID09IHVuaGFuZGxlZC0+ZG9jdW1lbnQoKSkgewogICAgICAgICAgICAgICAgIHVu
aGFuZGxlZC0+Zm9jdXMoKTsKKyAgICAgICAgICAgICAgICB1bmhhbmRsZWQtPnVwZGF0ZVZpc2li
bGVWYWxpZGF0aW9uTWVzc2FnZSgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCBiL1dl
YkNvcmUvcGFnZS9DaHJvbWUuY3BwCmluZGV4IDc2MmIwODcwMDgxNmYzMGE4NDNmNzdiYjg2OWZk
ZWJjMTA1YmZiNDAuLmQ0ZGUyM2YwM2FmMjRlM2I0ZGFkMTc3ZmUyZWM0MDQyOTI5ODFmMDUgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9DaHJv
bWUuY3BwCkBAIC01NSw2ICs1NSwyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1l
c3BhY2UgSFRNTE5hbWVzOwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAorLy8gQWZ0ZXIgdGhlIGZp
cnN0IGNhbGwgb2YgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlSW1tZWRpYXRlbHkoZSwgIm1l
c3NhZ2UxIiksCisvLyBpdCBpcyBjYWxsZWQgcmVwZWF0ZWRseSBldmVyeSB2YWxpZGF0aW9uTWVz
c2FnZVVwZGF0ZUludGVydmFsU2Vjb25kCisvLyB2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUNvdW50
KCktMSB0aW1lcywgdGhlbgorLy8gdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlSW1tZWRpYXRl
bHkoZSwgIiIpIGlzIGNhbGxlZCBhZnRlcgorLy8gdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRl
cnZhbFNlY29uZC4KKy8vIEFmdGVyIHRoYXQsIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZUlt
bWVkaWF0ZWx5KCkgaXMgbmV2ZXIgY2FsbGVkIGZvcgorLy8gdmFsaWRhdGlvbk1lc3NhZ2VCbGFj
a291dFNlY29uZC4KK3N0YXRpYyBkb3VibGUgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRlcnZh
bFNlY29uZCA9IDAuMzsKK3N0YXRpYyBkb3VibGUgdmFsaWRhdGlvbk1lc3NhZ2VCbGFja291dFNl
Y29uZCA9IDAuNjsKK3N0YXRpYyBpbnQgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVDb3VudChjb25z
dCBTdHJpbmcmKQoreworICAgIHJldHVybiAyMDsgLy8gRklYTUU6IGFwcGx5IG1lc3NhZ2UgbGVu
Z3RoCit9CisKIENocm9tZTo6Q2hyb21lKFBhZ2UqIHBhZ2UsIENocm9tZUNsaWVudCogY2xpZW50
KQogICAgIDogbV9wYWdlKHBhZ2UpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCkBAIC00MDEsNiAr
NDE1LDgzIEBAIHZvaWQgQ2hyb21lOjpzZXRUb29sVGlwKGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJl
c3VsdCkKICAgICBtX2NsaWVudC0+c2V0VG9vbFRpcCh0b29sVGlwLCB0b29sVGlwRGlyZWN0aW9u
KTsKIH0KIAordm9pZCBDaHJvbWU6OnVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZShIVE1MRm9y
bUNvbnRyb2xFbGVtZW50KiBjb250cm9sLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAg
QVNTRVJUKGNvbnRyb2wpOworICAgIGlmICghbV92YWxpZGF0aW9uTWVzc2FnZVRpbWVyKQorICAg
ICAgICBtX3ZhbGlkYXRpb25NZXNzYWdlVGltZXIuc2V0KG5ldyBUaW1lcjxDaHJvbWU+KHRoaXMs
ICZDaHJvbWU6OnZhbGlkYXRpb25NZXNzYWdlVGltZXJGaXJlZCkpOworCisgICAgaWYgKG1lc3Nh
Z2UuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChtX3ZhbGlkYXRpb25NZXNzYWdlVGFyZ2V0ICE9
IGNvbnRyb2wpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fdmFsaWRhdGlvbk1lc3Nh
Z2VUaW1lci0+c3RvcCgpOworICAgICAgICB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2VJbW1l
ZGlhdGVseShjb250cm9sLCBtZXNzYWdlKTsKKyAgICAgICAgbV92YWxpZGF0aW9uTWVzc2FnZSA9
IG1lc3NhZ2U7CisgICAgICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2VUYXJnZXQuY2xlYXIoKTsKKyAg
ICAgICAgLy8gU3RhcnQgdGhlIHRpbWVyIHRvIG1ha2UgYSBibGFja291dCBwZXJpb2QuIERvIG5v
dCB1c2Ugc3RhcnRPbmVTaG9ydCgpCisgICAgICAgIC8vIGluIG9yZGVyIHRvIHJldXNlIHRoaXMg
Zm9yIHRoZSBuZXh0IG1lc3NhZ2UuCisgICAgICAgIHN0YXJ0VmFsaWRhdGlvbk1lc3NhZ2VCbGFj
a291dCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYm9vbCB3YXNWaXNpYmxlID0g
IW1fdmFsaWRhdGlvbk1lc3NhZ2UuaXNFbXB0eSgpOworICAgIFJlZlB0cjxIVE1MRm9ybUNvbnRy
b2xFbGVtZW50PiBsYXN0VGFyZ2V0KG1fdmFsaWRhdGlvbk1lc3NhZ2VUYXJnZXQpOworICAgIGJv
b2wgcmVzZXRUaW1lciA9ICF3YXNWaXNpYmxlIHx8IG1fdmFsaWRhdGlvbk1lc3NhZ2VUYXJnZXQg
IT0gY29udHJvbCB8fCBtX3ZhbGlkYXRpb25NZXNzYWdlICE9IG1lc3NhZ2U7CisgICAgbV92YWxp
ZGF0aW9uTWVzc2FnZSA9IG1lc3NhZ2U7CisgICAgbV92YWxpZGF0aW9uTWVzc2FnZVRhcmdldCA9
IGNvbnRyb2w7CisgICAgaWYgKCFyZXNldFRpbWVyKSB7CisgICAgICAgIHVwZGF0ZUZvcm1WYWxp
ZGF0aW9uTWVzc2FnZUltbWVkaWF0ZWx5KG1fdmFsaWRhdGlvbk1lc3NhZ2VUYXJnZXQuZ2V0KCks
IG1fdmFsaWRhdGlvbk1lc3NhZ2UpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICh3
YXNWaXNpYmxlKSB7CisgICAgICAgIC8vIENsZWFyIHRoZSB2aXNpYmxlIG9sZCBtZXNzYWdlLgor
ICAgICAgICBtX3ZhbGlkYXRpb25NZXNzYWdlVGltZXItPnN0b3AoKTsKKyAgICAgICAgdXBkYXRl
Rm9ybVZhbGlkYXRpb25NZXNzYWdlSW1tZWRpYXRlbHkobGFzdFRhcmdldC5nZXQoKSwgU3RyaW5n
KCkpOworICAgICAgICAvLyBXaWxsIHNob3cgdGhlIG5ldyBtZXNzYWdlIGFmdGVyIHZhbGlkYXRp
b25NZXNzYWdlQmxhY2tvdXRTZWMuCisgICAgICAgIHN0YXJ0VmFsaWRhdGlvbk1lc3NhZ2VCbGFj
a291dCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtX3ZhbGlkYXRpb25NZXNzYWdlVGlt
ZXItPmlzQWN0aXZlKCkpIHsKKyAgICAgICAgICAgIC8vIE5vdGhpbmcgdG8gZG8gaWYgaXQgaXMg
aW4gYSBibGFja291dCBwZXJpb2QuIFdoZW4gdGhlIHRpbWVyIGlzCisgICAgICAgICAgICAvLyBm
aXJlZCBuZXh0IHRpbWUsIHZhbGlkYXRpb25NZXNzYWdlVGltZXJGaXJlZCgpIHNob3dzIHRoZSBt
ZXNzYWdlCisgICAgICAgICAgICAvLyBiZWNhdXNlIG1fdmFsaWRhdGlvbk1lc3NhZ2UgaXMgbm90
IGVtcHR5LgorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gSXQncyBub3QgaW4gYSBi
bGFja291dCBwZXJpb2QuIFNob3cgdGhlIG1lc3NhZ2UgaW1tZWRpYXRlbHkuCisgICAgICAgICAg
ICB1cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2VJbW1lZGlhdGVseShtX3ZhbGlkYXRpb25NZXNz
YWdlVGFyZ2V0LmdldCgpLCBtX3ZhbGlkYXRpb25NZXNzYWdlKTsKKyAgICAgICAgICAgIG1fdmFs
aWRhdGlvbk1lc3NhZ2VUaW1lckNvdW50ZXIgPSAwOworICAgICAgICAgICAgbV92YWxpZGF0aW9u
TWVzc2FnZVRpbWVyLT5zdGFydFJlcGVhdGluZyh2YWxpZGF0aW9uTWVzc2FnZVVwZGF0ZUludGVy
dmFsU2Vjb25kKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBDaHJvbWU6OnN0YXJ0VmFs
aWRhdGlvbk1lc3NhZ2VCbGFja291dCgpCit7CisgICAgbV92YWxpZGF0aW9uTWVzc2FnZVRpbWVy
Q291bnRlciA9IC0xOworICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2VUaW1lci0+c3RhcnQodmFsaWRh
dGlvbk1lc3NhZ2VCbGFja291dFNlY29uZCwgdmFsaWRhdGlvbk1lc3NhZ2VVcGRhdGVJbnRlcnZh
bFNlY29uZCk7Cit9CisKK3ZvaWQgQ2hyb21lOjp2YWxpZGF0aW9uTWVzc2FnZVRpbWVyRmlyZWQo
VGltZXI8Q2hyb21lPiogdGltZXIpCit7CisgICAgaWYgKG1fdmFsaWRhdGlvbk1lc3NhZ2UuaXNF
bXB0eSgpKSB7CisgICAgICAgIEFTU0VSVChtX3ZhbGlkYXRpb25NZXNzYWdlVGltZXJDb3VudGVy
IDwgMCk7CisgICAgICAgIHRpbWVyLT5zdG9wKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlSW1tZWRpYXRlbHkobV92YWxpZGF0aW9uTWVz
c2FnZVRhcmdldC5nZXQoKSwgbV92YWxpZGF0aW9uTWVzc2FnZSk7CisgICAgaWYgKCsrbV92YWxp
ZGF0aW9uTWVzc2FnZVRpbWVyQ291bnRlciA8IHZhbGlkYXRpb25NZXNzYWdlVXBkYXRlQ291bnQo
bV92YWxpZGF0aW9uTWVzc2FnZSkpCisgICAgICAgIHJldHVybjsKKyAgICB0aW1lci0+c3RvcCgp
OworICAgIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZUltbWVkaWF0ZWx5KG1fdmFsaWRhdGlv
bk1lc3NhZ2VUYXJnZXQuZ2V0KCksIFN0cmluZygpKTsKKyAgICBtX3ZhbGlkYXRpb25NZXNzYWdl
ID0gU3RyaW5nKCk7CisgICAgbV92YWxpZGF0aW9uTWVzc2FnZVRhcmdldC5jbGVhcigpOworCisg
ICAgc3RhcnRWYWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0KCk7Cit9CisKK3ZvaWQgQ2hyb21lOjp1
cGRhdGVGb3JtVmFsaWRhdGlvbk1lc3NhZ2VJbW1lZGlhdGVseShIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50KiwgY29uc3QgU3RyaW5nJikKK3sKKyAgICAvLyBGSVhNRTogSW1wZWxlbWVudCB0aGlzLgor
fQorCiB2b2lkIENocm9tZTo6cHJpbnQoRnJhbWUqIGZyYW1lKQogewogICAgIG1fY2xpZW50LT5w
cmludChmcmFtZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmggYi9XZWJDb3Jl
L3BhZ2UvQ2hyb21lLmgKaW5kZXggOWY0M2IxMWNjNmI2ZWIyNDJmN2Q3ZmM0NzJkYjQ1Njk3YjY5
NzZkMi4uOTZmZDBlNjA5ZjFjMTYyNzM2YmQ2M2ZkNzViMWYwYmExZjk4NmZhNCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCisrKyBiL1dlYkNvcmUvcGFnZS9DaHJvbWUuaApAQCAt
MjcsNyArMjcsOSBAQAogI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKICNpbmNsdWRlICJQb3B1cE1l
bnUuaCIKICNpbmNsdWRlICJTZWFyY2hQb3B1cE1lbnUuaCIKKyNpbmNsdWRlICJUaW1lci5oIgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTQzLDYgKzQ1LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEZsb2F0UmVjdDsKICAgICBjbGFzcyBGcmFt
ZTsKICAgICBjbGFzcyBHZW9sb2NhdGlvbjsKKyAgICBjbGFzcyBIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50OwogICAgIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiAgICAgY2xhc3MgSW50UmVjdDsKICAgICBj
bGFzcyBOYXZpZ2F0aW9uQWN0aW9uOwpAQCAtMTMyLDYgKzEzNSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0
UmVzdWx0JiwgdW5zaWduZWQgbW9kaWZpZXJGbGFncyk7CiAKICAgICAgICAgdm9pZCBzZXRUb29s
VGlwKGNvbnN0IEhpdFRlc3RSZXN1bHQmKTsKKyAgICAgICAgdm9pZCB1cGRhdGVGb3JtVmFsaWRh
dGlvbk1lc3NhZ2UoSFRNTEZvcm1Db250cm9sRWxlbWVudCosIGNvbnN0IFN0cmluZyYpOwogCiAg
ICAgICAgIHZvaWQgcHJpbnQoRnJhbWUqKTsKIApAQCAtMTU2LDggKzE2MCwyOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIFBhc3NSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVT
ZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Q7CiAKICAgICBwcml2YXRlOgor
ICAgICAgICB2b2lkIHZhbGlkYXRpb25NZXNzYWdlVGltZXJGaXJlZChUaW1lcjxDaHJvbWU+Kik7
CisgICAgICAgIHZvaWQgc3RhcnRWYWxpZGF0aW9uTWVzc2FnZUJsYWNrb3V0KCk7CisgICAgICAg
IC8vIFNob3cgdGhlIHNwZWNpZmllZCBtZXNzYWdlIGZvciB0aGUgZm9ybSBjb250cm9sLiBIaWRl
IHRoZSBtZXNzYWdlCisgICAgICAgIC8vIGlmIHRoZSBzdHJpbmcgaXMgZW1wdHkuIElmIHVwZGF0
ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZUltbWVkaWF0ZWx5KCkKKyAgICAgICAgLy8gd2l0aCBub24t
ZW1wdHkgbWVzc2FnZSBpcyBjYWxsZWQsIHRoZSBzdWJzZXF1ZW50IGNhbGxzIG9mCisgICAgICAg
IC8vIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZUltbWVkaWF0ZWx5KCkgbXVzdCBiZSBmb3Ig
dGhlIHNhbWUgZWxlbWVudAorICAgICAgICAvLyBhbmQgdGhlIHNhbWUgbWVzc2FnZS4gVGhlbiwg
dXBkYXRlRm9ybVZhbGlkYXRpb25NZXNzYWdlKCkgaXMgY2FsbGVkCisgICAgICAgIC8vIHdpdGgg
dGhlIHNhbWUgZWxlbWVudCBhbmQgdGhlIGVtcHR5IG1lc3NhZ2UuCisgICAgICAgIC8vICB1cGRh
dGVGb3JtVmFsaWRhdGlvbk1lc2FnZShjb250cm9sMSwgIm1lc3NhZ2UxIikgLT4KKyAgICAgICAg
Ly8gIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzYWdlKGNvbnRyb2wxLCAibWVzc2FnZTEiKSAtPgor
ICAgICAgICAvLyAgdXBkYXRlRm9ybVZhbGlkYXRpb25NZXNhZ2UoY29udHJvbDEsICJtZXNzYWdl
MSIpIC4uLiAobXVsdGlwbGUgdGltZXMpCisgICAgICAgIC8vICB1cGRhdGVGb3JtVmFsaWRhdGlv
bk1lc2FnZShjb250cm9sMSwgIiIpCisgICAgICAgIC8vIEluIHRoaXMgc2VxdWVuY2UsIGNhbGxz
IHdpdGggb3RoZXIgY29udHJvbHMgb3Igb3RoZXIgbWVzc2FnZXMKKyAgICAgICAgLy8gbmV2ZXIg
aGFwcGVuLgorICAgICAgICB2b2lkIHVwZGF0ZUZvcm1WYWxpZGF0aW9uTWVzc2FnZUltbWVkaWF0
ZWx5KEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqLCBjb25zdCBTdHJpbmcmKTsKKwogICAgICAgICBQ
YWdlKiBtX3BhZ2U7CiAgICAgICAgIENocm9tZUNsaWVudCogbV9jbGllbnQ7CisgICAgICAgIE93
blB0cjxUaW1lcjxDaHJvbWU+Kj4gbV92YWxpZGF0aW9uTWVzc2FnZVRpbWVyOworICAgICAgICBp
bnQgbV92YWxpZGF0aW9uTWVzc2FnZVRpbWVyQ291bnRlcjsKKyAgICAgICAgU3RyaW5nIG1fdmFs
aWRhdGlvbk1lc3NhZ2U7CisgICAgICAgIFJlZlB0cjxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PiBt
X3ZhbGlkYXRpb25NZXNzYWdlVGFyZ2V0OwogICAgIH07CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktp
dC9tYWMvQ2hhbmdlTG9nIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggYmE1NGI0NTU5Y2Fh
N2MzYmJlNGEwZDc2NTQyZjcwNDVjNTUyYWZhMi4uMDA4MmEyYjFmOGE0ZDc0NmIwNGUzZGZkNGFh
ZTQ5Njk3OGMzZTI0MiAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wNC0wMSAgS2VudCBUYW11
cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRnJhbWV3b3JrIHRvIHNob3cgZm9ybSB2YWxpZGF0aW9uIG1lc3Nh
Z2UgZm9yIGludmFsaWQgY29udHJvbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTMxNzE4CisKKyAgICAgICAgQWRkIGEgaGVscGVyIGZvciBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoKS4K
KworICAgICAgICAqIE1pc2MvV2ViQ29yZVN0YXRpc3RpY3MuaDoKKyAgICAgICAgKiBNaXNjL1dl
YkNvcmVTdGF0aXN0aWNzLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSB2aXNpYmxlVmFsaWRhdGlv
bk1lc3NhZ2VGb3JFbGVtZW50QnlJZDpdKToKKwogMjAxMC0xMC0yNCAgRGFuIEJlcm5zdGVpbiAg
PG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KZGlm
ZiAtLWdpdCBhL1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5oIGIvV2ViS2l0L21h
Yy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLmgKaW5kZXggMTU2NWMyNjE1NzYzMjNlZmIwMjhhYjQ5
MTExMWRmYWZmNDU4YjQ0OC4uOWNiZGRkNTcyMDNkNTI0YzMyYjJmNWFlZmFiZDVhYzEyNTcyZmUy
MSAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLmgKKysrIGIv
V2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLmgKQEAgLTg3LDYgKzg3LDcgQEAKIC0g
KE5TU3RyaW5nICopY291bnRlclZhbHVlRm9yRWxlbWVudDooRE9NRWxlbWVudCopZWxlbWVudDsK
IC0gKGludClwYWdlTnVtYmVyRm9yRWxlbWVudDooRE9NRWxlbWVudCopZWxlbWVudDooZmxvYXQp
cGFnZVdpZHRoSW5QaXhlbHM6KGZsb2F0KXBhZ2VIZWlnaHRJblBpeGVsczsKIC0gKGludCludW1i
ZXJPZlBhZ2VzOihmbG9hdClwYWdlV2lkdGhJblBpeGVsczooZmxvYXQpcGFnZUhlaWdodEluUGl4
ZWxzOworLSAoTlNTdHJpbmcgKil2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJ
ZDooTlNTdHJpbmcgKillbGVtZW50SWQ7CiAtIChOU1N0cmluZyAqKXBhZ2VQcm9wZXJ0eTooY29u
c3QgY2hhciopcHJvcGVydHlOYW1lOihpbnQpcGFnZU51bWJlcjsKIC0gKGJvb2wpaXNQYWdlQm94
VmlzaWJsZTooaW50KXBhZ2VOdW1iZXI7CiAtIChOU1N0cmluZyAqKXBhZ2VTaXplQW5kTWFyZ2lu
c0luUGl4ZWxzOihpbnQpcGFnZU51bWJlcjooaW50KXdpZHRoOihpbnQpaGVpZ2h0OihpbnQpbWFy
Z2luVG9wOihpbnQpbWFyZ2luUmlnaHQ6KGludCltYXJnaW5Cb3R0b206KGludCltYXJnaW5MZWZ0
OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tIGIvV2Vi
S2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tCmluZGV4IDViNWExYmMzYmY4MDIyMGFk
N2JhNWUyYWI0OWIxMGNiYzFhYjRkZjMuLjY1MzhmZTQyNWQ4Njg4MGUzODcxNWE1YWZmOWYxZjgw
NTE1NThhZGYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5t
bQorKysgYi9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW0KQEAgLTI4LDYgKzI4
LDcgQEAKIAogI2ltcG9ydCAiV2ViQ29yZVN0YXRpc3RpY3MuaCIKIAorI2ltcG9ydCAiRE9NRG9j
dW1lbnRJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NRWxlbWVudEludGVybmFsLmgiCiAjaW1wb3J0
ICJXZWJDYWNoZS5oIgogI2ltcG9ydCAiV2ViRnJhbWVJbnRlcm5hbC5oIgpAQCAtMzksNiArNDAs
NyBAQAogI2ltcG9ydCA8V2ViQ29yZS9HQ0NvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUv
R2x5cGhQYWdlVHJlZU5vZGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+
CisjaW1wb3J0IDxXZWJDb3JlL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaD4KICNpbXBvcnQgPFdl
YkNvcmUvSWNvbkRhdGFiYXNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRE9NV2luZG93Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1BhZ2VDYWNoZS5oPgpAQCAtMzA3LDQgKzMwOSwxNSBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKICAgICBQcmludENvbnRleHQ6OnNwb29sQWxsUGFnZXNXaXRoQm91
bmRhcmllcyhjb3JlRnJhbWUsIGdyYXBoaWNzQ29udGV4dCwgRmxvYXRTaXplKHBhZ2VXaWR0aElu
UGl4ZWxzLCBwYWdlSGVpZ2h0SW5QaXhlbHMpKTsKIH0KIAorLSAoTlNTdHJpbmcgKil2aXNpYmxl
VmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZDooTlNTdHJpbmcgKillbGVtZW50SWQKK3sK
KyAgICBET01FbGVtZW50KiBlbGVtZW50ID0gW1tzZWxmIERPTURvY3VtZW50XSBnZXRFbGVtZW50
QnlJZDplbGVtZW50SWRdOworICAgIGlmICghZWxlbWVudCkKKyAgICAgICAgcmV0dXJuIG5pbDsK
KyAgICBFbGVtZW50KiBjb3JlRWxlbWVudCA9IGNvcmUoZWxlbWVudCk7CisgICAgaWYgKCFjb3Jl
RWxlbWVudC0+aXNGb3JtQ29udHJvbEVsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAg
ICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBmb3JtQ29udHJvbCA9IHN0YXRpY19jYXN0PEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQqPihjb3JlRWxlbWVudCk7CisgICAgcmV0dXJuIChOU1N0cmluZyop
Zm9ybUNvbnRyb2wtPnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSgpOworfQogQGVuZApkaWZmIC0t
Z2l0IGEvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCBl
OTI3ZDE1ZGM1ODkwYmJiMTNkMDM2MTllMDA4MTNjOTI2YWQ2MzE0Li5lZDBhMWQ0NDMzM2Q1YTNh
NDE3M2UxMTQ4OWVjOWRjMDJkZjczOTIyIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL0NoYW5nZUxv
ZworKysgYi9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEwLTA0LTAx
ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGcmFtZXdvcmsgdG8gc2hvdyBmb3JtIHZhbGlk
YXRpb24gbWVzc2FnZSBmb3IgaW52YWxpZCBjb250cm9scworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE3MTgKKworICAgICAgICBBZGQgdmlzaWJsZVZh
bGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoKSBmb3IgTGF5b3V0VGVzdENvbnRyb2xsZXIu
CisKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJGcmFtZVByaXZhdGUuaWRsOgorICAgICAgICAq
IEludGVyZmFjZXMvV2ViS2l0LmlkbDogSnVzdCB0b3VjaC4KKyAgICAgICAgKiBXZWJGcmFtZS5j
cHA6CisgICAgICAgIChXZWJGcmFtZTo6dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVu
dEJ5SWQpOgorICAgICAgICAqIFdlYkZyYW1lLmg6CisKIDIwMTAtMTAtMjIgIEFuZHkgRXN0ZXMg
IDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0aGUgV2luZG93cyBidWlsZC4KZGlm
ZiAtLWdpdCBhL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViRnJhbWVQcml2YXRlLmlkbCBiL1dl
YktpdC93aW4vSW50ZXJmYWNlcy9JV2ViRnJhbWVQcml2YXRlLmlkbAppbmRleCAyNzljYmJmN2Rm
N2M4ZWZiMGNiN2I2ZDNmM2VhODJjMjQ5ODMyYzRmLi45MDNlOTUxNGMwN2M1M2E5ZDYyZGQxMGZi
M2NiNWRiMmU3ZGEwNDFmIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkZy
YW1lUHJpdmF0ZS5pZGwKKysrIGIvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJGcmFtZVByaXZh
dGUuaWRsCkBAIC0xMTgsNSArMTE4LDggQEAgaW50ZXJmYWNlIElXZWJGcmFtZVByaXZhdGUgOiBJ
VW5rbm93bgogCiAgICAgSFJFU1VMVCBsb2FkUGxhaW5UZXh0U3RyaW5nKFtpbl0gQlNUUiBzdHJp
bmcsIFtpbl0gQlNUUiB1cmwpOwogCisKICAgICBIUkVTVUxUIGhhc1NwZWxsaW5nTWFya2VyKFtp
bl0gVUlOVCBmcm9tLCBbaW5dIFVJTlQgbGVuZ3RoLCBbb3V0LCByZXR2YWxdIEJPT0wqIHJlc3Vs
dCk7CisKKyAgICBIUkVTVUxUIHZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlk
KFtpbl0gQlNUUiBpZCwgW291dCwgcmV0dmFsXSBCU1RSKiByZXN1bHQpOwogfQpkaWZmIC0tZ2l0
IGEvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL1dlYktpdC5pZGwgYi9XZWJLaXQvd2luL0ludGVyZmFj
ZXMvV2ViS2l0LmlkbAppbmRleCBiNGNlNDEwNzQ2MjI5NTIxNDJiY2NhZWFjOTZkYjNhZWQzYjUz
OWQ5Li4wNDZhZDYyODY1NzdkMTk2MmYwNTc3MWE0ZjgwMTNhODQyMTg3NWFiIDEwMDY0NAotLS0g
YS9XZWJLaXQvd2luL0ludGVyZmFjZXMvV2ViS2l0LmlkbAorKysgYi9XZWJLaXQvd2luL0ludGVy
ZmFjZXMvV2ViS2l0LmlkbApAQCAtMzAwLDMgKzMwMCw0IEBAIGxpYnJhcnkgV2ViS2l0CiAgICAg
ICAgIFtkZWZhdWx0XSBpbnRlcmZhY2UgSVdlYlVzZXJDb250ZW50VVJMUGF0dGVybjsKICAgICB9
CiB9CisgCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcCBiL1dlYktpdC93aW4v
V2ViRnJhbWUuY3BwCmluZGV4IDlkYjZhMmExMjVjYmM4ZjYzMzc3M2JjYmE4ZjQ1ZTc5Y2QzZGRh
YjQuLmNkMTBkOTBiZWVhMWU5YWIwNmQ2MWI0YTQyMzU5MzlhMmQ4MTZhNjIgMTAwNjQ0Ci0tLSBh
L1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCkBA
IC0xMDE5LDYgKzEwMTksMjEgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6
dW51c2VkMigpCiAgICAgcmV0dXJuIEVfTk9USU1QTDsKIH0KIAorSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJGcmFtZTo6dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQo
QlNUUiBpZCwgQlNUUiogcmVzdWx0KQoreworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1
cm4gRV9QT0lOVEVSOworICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHRoaXMpOworICAgIGlm
ICghY29yZUZyYW1lKQorICAgICAgICByZXR1cm4gRV9GQUlMOworICAgIEVsZW1lbnQqIGVsZW1l
bnQgPSBjb3JlRnJhbWUtPmRvY3VtZW50KCktPmdldEVsZW1lbnRCeUlkKFN0cmluZyhpZCwgU3lz
U3RyaW5nTGVuKGlkKSkpOworICAgIGlmICghZWxlbWVudCB8fCAhZWxlbWVudC0+aXNGb3JtQ29u
dHJvbEVsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIEVfRkFJTDsKKyAgICBIVE1MRm9ybUNvbnRy
b2xFbGVtZW50KiBmb3JtQ29udHJvbCA9IHN0YXRpY19jYXN0PEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQqPihlbGVtZW50KTsKKyAgICAqcmVzdWx0ID0gQlN0cmluZyhmb3JtQ29udHJvbC0+dmlzaWJs
ZVZhbGlkYXRpb25NZXNzYWdlKCkpLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gU19PSzsKK30KKwog
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6aGFzU3BlbGxpbmdNYXJrZXIoCiAg
ICAgICAgIC8qIFtpbl0gKi8gVUlOVCBmcm9tLAogICAgICAgICAvKiBbaW5dICovIFVJTlQgbGVu
Z3RoLApkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJGcmFtZS5oIGIvV2ViS2l0L3dpbi9XZWJG
cmFtZS5oCmluZGV4IGJkYzI4YWJmNWY1ZDBkMDQzODg1MTQ2OGQ4ODZlOWYwZDk4ODkyZTYuLjVk
MzcwNDAzNDQxOThjMTk4ZTZkM2VlN2FlZjQzZmY3ZWVmOTg5ZGUgMTAwNjQ0Ci0tLSBhL1dlYktp
dC93aW4vV2ViRnJhbWUuaAorKysgYi9XZWJLaXQvd2luL1dlYkZyYW1lLmgKQEAgLTI3Miw2ICsy
NzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHZp
c2libGVDb250ZW50UmVjdChSRUNUKik7CiAKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgbGF5ZXJUcmVlQXNUZXh0KEJTVFIqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgdmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoQlNU
UiBpZCwgQlNUUiogcmVzdWx0KTsKIAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBoYXNTcGVsbGluZ01hcmtlcigKICAgICAgICAgLyogW2luXSAqLyBVSU5UIGZyb20sCmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cK
aW5kZXggYWQ0ODRiYzA3MjBhZDljODEzOGViYWEzZDVkMTFhNzA3MTZhOWVlYi4uYjliZjAzNTFi
OTE5MzRhNmI5ZTU0OTljNmNlMDE4M2VkNWI2ZmI3MiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisy
MDEwLTA0LTAxICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGcmFtZXdvcmsgdG8gc2hvdyBm
b3JtIHZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW52YWxpZCBjb250cm9scworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE3MTgKKworICAgICAgICBBZGQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRC
eUlkKCkuCisgICAgICAgIFdpbmRvd3MgYW5kIE1hYyBoYXZlIHdvcmthYmxlIGltcGxlbWVudGF0
aW9ucy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKHZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkQ2FsbGJh
Y2spOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwOgorICAgICAg
ICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1l
bnRCeUlkKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xs
ZXJNYWMubW06CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6dmlzaWJsZVZhbGlkYXRp
b25NZXNzYWdlRm9yRWxlbWVudEJ5SWQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9M
YXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxl
cjo6dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQpOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwOgorICAgICAgICAoTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlk
KToKKwogMjAxMC0xMC0yNCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjcwNDEzLgpkaWZmIC0tZ2l0
IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4
IGI1Y2M4NzQyMTViNDBmNTkwNzU1YTQwNDdlYmRkNWQ5ZjhlZDYyNzkuLjBlZjI1YjJlMGM0ZDk5
YTJjN2UyNmY2NGUxMjQ0ZDM4OWUyZTNiNGQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTEyNDksNiArMTI0OSwyMCBA
QCBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkQ2FsbGJhY2soSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZQogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5l
ZChjb250ZXh0KTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgdmlzaWJsZVZhbGlkYXRpb25NZXNz
YWdlRm9yRWxlbWVudEJ5SWRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RS
ZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50
LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7
CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VV
bmRlZmluZWQoY29udGV4dCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGVsZW1lbnRJ
ZChBZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2Vw
dGlvbikpOworICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7CisKKyAgICBMYXlvdXRUZXN0Q29udHJv
bGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNP
YmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gbWVzc2FnZShjb250cm9sbGVyLT52aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50
QnlJZChlbGVtZW50SWQuZ2V0KCkpKTsKKyAgICBpZiAoIW1lc3NhZ2UuZ2V0KCkpCisgICAgICAg
IHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKyAgICByZXR1cm4gSlNWYWx1
ZU1ha2VTdHJpbmcoY29udGV4dCwgbWVzc2FnZS5nZXQoKSk7Cit9CisKIHN0YXRpYyBKU1ZhbHVl
UmVmIHNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzQ2FsbGJhY2soSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0
LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIC8vIEhhcyBtYWMgJiB3aW5kb3dzIGltcGxlbWVu
dGF0aW9uCkBAIC0xOTg5LDYgKzIwMDMsNyBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKCkKICAgICAgICAgeyAic2hvd1dlYkluc3BlY3Rv
ciIsIHNob3dXZWJJbnNwZWN0b3JDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJ0ZXN0T25z
Y3JlZW4iLCB0ZXN0T25zY3JlZW5DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJ0ZXN0UmVw
YWludCIsIHRlc3RSZXBhaW50Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAidmlzaWJsZVZh
bGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQiLCB2aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2VG
b3JFbGVtZW50QnlJZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgIndhaXRGb3JQb2xpY3lE
ZWxlZ2F0ZSIsIHdhaXRGb3JQb2xpY3lEZWxlZ2F0ZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgIndhaXRVbnRpbERvbmUiLCB3YWl0VW50aWxEb25lQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAg
ICAgeyAid2luZG93Q291bnQiLCB3aW5kb3dDb3VudENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCA2
ODllMTE0NTc1MDhkZmZlN2Q4ODdiZGUxNjQ4MjE0MGJhNzViYzFhLi5hYjBlMGJhMjRlYWRhYTlm
ODczMTU4OGE4OWY2NGE4N2I4MjcwZjkyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTExMSw3ICsxMTEsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoYm9vbCBlbmFibGUpOwogICAg
IHZvaWQgc2V0U2Nyb2xsYmFyUG9saWN5KEpTU3RyaW5nUmVmIG9yaWVudGF0aW9uLCBKU1N0cmlu
Z1JlZiBwb2xpY3kpOwogICAgIHZvaWQgc2V0RWRpdGluZ0JlaGF2aW9yKGNvbnN0IGNoYXIqIGVk
aXRpbmdCZWhhdmlvcik7Ci0KKyAgICBKU1N0cmluZ1JlZiB2aXNpYmxlVmFsaWRhdGlvbk1lc3Nh
Z2VGb3JFbGVtZW50QnlJZChKU1N0cmluZ1JlZiBpZCk7CiAgICAgdm9pZCB3YWl0Rm9yUG9saWN5
RGVsZWdhdGUoKTsKICAgICBzaXplX3Qgd2ViSGlzdG9yeUl0ZW1Db3VudCgpOwogICAgIHVuc2ln
bmVkIHdvcmtlclRocmVhZENvdW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwIGIvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAppbmRleCAx
ODFlZjlmMGIyOWNlNjA5OGIxOGJkNjQwM2UxZWNhYjE4ZTAzYjQ0Li5jODgyMDU1MjlmZjFlNDdk
MjgyMTI2Y2JiZjg0ZDEyNzIwOWE4ZGQ0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKQEAgLTc4Myw2
ICs3ODMsMTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YXBpVGVzdEdvVG9DdXJyZW50
QmFja0ZvcndhcmRJdGVtKCkKIAogfQogCitKU1N0cmluZ1JlZiBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlRm9yRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWQp
Cit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAgIHJldHVybiAwOworfQorCiB2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRXZWJWaWV3RWRpdGFibGUoYm9vbCkKIHsKIH0K
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29u
dHJvbGxlck1hYy5tbSBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0
Q29udHJvbGxlck1hYy5tbQppbmRleCBjNWQ1YTkwNjk1OTliYTRiY2ZjMmFjYTMxMWM3YTNhNzY1
YWI1ZTFkLi5kMmFiZmZhMTM5OTExMDQ0MTgxMWE2YzlkNTBkMzJmNjY3ZjFiZjRlIDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJN
YWMubW0KKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250
cm9sbGVyTWFjLm1tCkBAIC04MzMsNiArODMzLDEyIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OmFwaVRlc3RHb1RvQ3VycmVudEJhY2tGb3J3YXJkSXRlbSgpCiAgICAgW3ZpZXcgZ29Ub0Jh
Y2tGb3J3YXJkSXRlbTpbW3ZpZXcgYmFja0ZvcndhcmRMaXN0XSBjdXJyZW50SXRlbV1dOwogfQog
CitKU1N0cmluZ1JlZiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6dmlzaWJsZVZhbGlkYXRpb25NZXNz
YWdlRm9yRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWQpCit7CisgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBpZENGKEFkb3B0Q0YsIEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGlkKSk7CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0
cmluZ1JlZilbbWFpbkZyYW1lIHZpc2libGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlk
OihOU1N0cmluZyopaWRDRi5nZXQoKV0pOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRXZWJWaWV3RWRpdGFibGUoYm9vbCBlZGl0YWJsZSkKIHsKICAgICBXZWJWaWV3ICp2aWV3
ID0gW21haW5GcmFtZSB3ZWJWaWV3XTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAgYi9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCmluZGV4IDllOGVkMWU2
OTU3ZDdmN2NhNGZlYWQ5MWQ4N2I5YjU2ZmI0MjE0NTkuLjMyNGEwODcwYmZkMmZiZDZkNWFiMzEy
ZGQ5MTBhYzVmZDIyYjZjMjAgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcApAQCAtMTM2Miw2ICsxMzYy
LDE5IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFwaVRlc3RHb1RvQ3VycmVudEJhY2tG
b3J3YXJkSXRlbSgpCiAgICAgd2ViVmlldy0+Z29Ub0JhY2tGb3J3YXJkSXRlbShpdGVtLmdldCgp
LCAmc3VjY2Vzcyk7CiB9CiAKK0pTU3RyaW5nUmVmIExheW91dFRlc3RDb250cm9sbGVyOjp2aXNp
YmxlVmFsaWRhdGlvbk1lc3NhZ2VGb3JFbGVtZW50QnlJZChKU1N0cmluZ1JlZiBpZCkKK3sKKyAg
ICBDT01QdHI8SVdlYkZyYW1lUHJpdmF0ZT4gZnJhbWVQcml2YXRlKFF1ZXJ5LCBmcmFtZSk7Cisg
ICAgaWYgKCFmcmFtZVByaXZhdGUpCisgICAgICAgIHJldHVybiAwOworICAgIEJTVFIgbWVzc2Fn
ZUJTVFI7CisgICAgaWYgKEZBSUxFRChmcmFtZVByaXZhdGUtPnZpc2libGVWYWxpZGF0aW9uTWVz
c2FnZUZvckVsZW1lbnRCeUlkKGJzdHJUKGlkKS5HZXRCU1RSKCksICZtZXNzYWdlQlNUUikpKQor
ICAgICAgICByZXR1cm4gMDsKKyAgICBKU1N0cmluZ1JlZiBtZXNzYWdlSlMgPSBKU1N0cmluZ0Ny
ZWF0ZVdpdGhCU1RSKG1lc3NhZ2VCU1RSKTsKKyAgICBTeXNGcmVlU3RyaW5nKG1lc3NhZ2VCU1RS
KTsKKyAgICByZXR1cm4gbWVzc2FnZUpTOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRXZWJWaWV3RWRpdGFibGUoYm9vbCkKIHsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwIGIvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKaW5kZXggZWVm
YzU4NzgxZTBhMWVhYmNkMGZkODEzODkzMmNjNDNjNGQ3ODQ3Zi4uYWUzZmYxYjQ1ZjY5ODI5ODk5
YjM4ZjhiOTFlNzE3NDY1MjdhMGExMiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKQEAgLTQ2Miw2ICs0NjIs
MTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0U3BhdGlhbE5hdmlnYXRpb25FbmFi
bGVkKGJvb2wpCiAKIH0KIAorSlNTdHJpbmdSZWYgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnZpc2li
bGVWYWxpZGF0aW9uTWVzc2FnZUZvckVsZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGlkKQoreworICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KKyAgICByZXR1cm4gMDsKK30KKwogdm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0V2ViVmlld0VkaXRhYmxlKGJvb2wpCiB7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72157</attachid>
            <date>2010-10-28 01:22:48 -0700</date>
            <delta_ts>2010-11-04 00:02:58 -0700</delta_ts>
            <desc>Patch 13 (more simplification. No Chrome changes)</desc>
            <filename>bug-31718-20101028172246.patch</filename>
            <type>text/plain</type>
            <size>22527</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCBlMjBiMmU1YzdiZWVjYmExNTNkZTU1Zjc2MjZlMzM3Zjg3NjI0ZTg2Li5hMGVlNTEzNDM1MWFi
NDYwMGExMzZkOTRjZDMwNTVjY2Q2MDRmYWJiIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQu
bWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0zMTIsNiArMzEyLDcgQEAgTE9DQUxfU1JD
X0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJaHRtbC9UaW1lSW5wdXRUeXBlLmNwcCBc
CiAJaHRtbC9UaW1lUmFuZ2VzLmNwcCBcCiAJaHRtbC9VUkxJbnB1dFR5cGUuY3BwIFwKKwlodG1s
L1ZhbGlkYXRpb25NZXNzYWdlLmNwcCBcCiAJaHRtbC9WYWxpZGl0eVN0YXRlLmNwcCBcCiAJaHRt
bC9XZWVrSW5wdXRUeXBlLmNwcCBcCiAJXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dCBiL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNThiMDcyMDg0ZmRkNzg0ZTY3NTE4
MjFmZjExOThkNzU5ZDY4MTM4MC4uMjEzYzljMjRiMGY5N2UwYWIxZWViMzFlOGQ4ZmNlMWVhYTky
M2NmMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC0xMDc2LDYgKzEwNzYsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAg
ICAgaHRtbC9UZXh0SW5wdXRUeXBlLmNwcAogICAgIGh0bWwvVGltZUlucHV0VHlwZS5jcHAKICAg
ICBodG1sL1VSTElucHV0VHlwZS5jcHAKKyAgICBodG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcAog
ICAgIGh0bWwvVmFsaWRpdHlTdGF0ZS5jcHAKICAgICBodG1sL1dlZWtJbnB1dFR5cGUuY3BwCiAg
ICAgaHRtbC9jYW52YXMvQ2FudmFzR3JhZGllbnQuY3BwCmRpZmYgLS1naXQgYS9XZWJDb3JlL0No
YW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGI0NWI2NWJjODIyZmViMjk3MmM1NTM5
ODhkMzMxZjgwMTBkMjIyYjQuLmZhNDhhOTI5NGJlYjZiOWEwNzFjOWFhMzlhNGQ1ZmU3NjhiMjg5
MWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNTIgQEAKKzIwMTAtMTAtMjggIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEZyYW1ld29yayB0byBzaG93IGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnZhbGlkIGNv
bnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
MTcxOAorCisgICAgICAgIEhUTUxGb3JtRWxlbWVudDo6dmFsaWRhdGVJbnRlcmFjdGl2ZWx5KCkg
c2hvd3MgYSB2YWxpZGF0aW9uIG1lc3NhZ2UgZm9yCisgICAgICAgIGFuIGludmFsaWQgY29udHJv
bCBieSBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp1cGRhdGVWaXNpYmxlVmFsaWRhdGlvbk1lc3Nh
Z2UoKSwKKyAgICAgICAgYW5kIHRoZSBtZXNzYWdlIGlzIGhpZGRlbiB3aGVuIHRoZSBpbnZhbGlk
IGNvbnRyb2wgbG9vc2VzIGZvY3VzLCBiZWNvbWVzCisgICAgICAgIHZhbGlkLCBkZXRhY2hlZCwg
b3IgdGhlIGZvcm0gaXMgc3VibWl0dGVkIGFnYWluLgorCisgICAgICAgIEludHJvZHVjZSBWYWxp
ZGF0aW9uTWVzc2FnZSBjbGFzcyB0byBtYW5hZ2UgdmlzaWJsZSBmb3JtIHZhbGlkYXRpb24KKyAg
ICAgICAgbWVzc2FnZS4gSXQgaGFzIG5vIGltcGxlbWVudGF0aW9uIHRvIHNob3cvaGlkZSBhIG1l
c3NhZ2UgeWV0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gTmV3IGJlaGF2aW9yIGlzIGRpc2Fi
bGVkIGJ5IGRlZmF1bHQsIGFuZCBpcyB0aW1pbmctZGVwZW5kZW50LgorCisgICAgICAgICogQW5k
cm9pZC5tazogQWRkIFZhbGlkYXRpb25NZXNzYWdlLgorICAgICAgICAqIENNYWtlTGlzdHMudHh0
OiBkaXR0by4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogZGl0dG8uCisgICAgICAgICogV2Vi
Q29yZS5neXBpOiBkaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnBybzogZGl0dG8uCisgICAgICAg
ICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6IGRpdHRvLgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogZGl0dG8uCisgICAgICAgICogaHRtbC9IVE1M
Rm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJv
bEVsZW1lbnQ6OmRldGFjaCk6IEhpZGVzIGEgdmFsaWRhdGlvbiBtZXNzYWdlLgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0TmVlZHNXaWxsVmFsaWRhdGVDaGVj
ayk6CisgICAgICAgICAgIEhpZGVzIGEgdmFsaWRhdGlvbiBtZXNzYWdlIGlmIHZhbGlkYXRpb24g
aXMgbm90IG5lZWRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6
OnVwZGF0ZVZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50OjpoaWRlVmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldE5lZWRzVmFsaWRpdHlDaGVj
ayk6CisgICAgICAgICAgSGlkZXMgYSB2YWxpZGF0aW9uIG1lc3NhZ2Ugb3IgdXBkYXRlcyB0aGUg
dmFsaWRhdGlvbiBtZXNzYWdlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxl
bWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQpOgorICAgICAgICAgIEhpZGVzIGEgdmFsaWRhdGlvbiBt
ZXNzYWdlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6dmlzaWJs
ZVZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1l
bnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnZhbGlkYXRlSW50ZXJhY3RpdmVseSk6CisgICAgICAgICAt
IEhpZGUgZXhpc3RpbmcgdmFsaWRhdGlvbiBtZXNzYWdlcyBiZWZvcmUgc2hvd2luZyBuZXcgbWVz
c2FnZS4KKyAgICAgICAgIC0gU2hvdyBuZXcgdmFsaWRhdGlvbiBtZXNzYWdlLgorICAgICAgICAq
IGh0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlZh
bGlkYXRpb25NZXNzYWdlOjpWYWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpW
YWxpZGF0aW9uTWVzc2FnZTo6flZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlZhbGlkYXRpb25NZXNzYWdlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRhdGlv
bk1lc3NhZ2U6OnNldE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRhdGlvbk1lc3Nh
Z2U6OmhpZGVNZXNzYWdlKToKKyAgICAgICAgKiBodG1sL1ZhbGlkYXRpb25NZXNzYWdlLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRhdGlvbk1lc3NhZ2U6Om1lc3NhZ2UpOgorCiAy
MDEwLTEwLTI3ICBFcmljIFVocmhhbmUgIDxlcmljdUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCA5ZGVhY2Y0ODNlODE1Y2EwODJjNTVm
MTA4MTU2ZjI1NWQxNDUzODlmLi43MDVkNDFiZmU5ODE2NzUwOTVhYzMwZDMyNTU1NDgzODNmODAy
NzYzIDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0KQEAgLTE3NzQsNiArMTc3NCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJ
V2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuaCBcCiAJV2ViQ29yZS9odG1sL1VSTElucHV0VHlwZS5j
cHAgXAogCVdlYkNvcmUvaHRtbC9VUkxJbnB1dFR5cGUuaCBcCisJV2ViQ29yZS9odG1sL1ZhbGlk
YXRpb25NZXNzYWdlLmNwcCBcCisJV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmggXAog
CVdlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmNwcCBcCiAJV2ViQ29yZS9odG1sL1ZhbGlkaXR5
U3RhdGUuaCBcCiAJV2ViQ29yZS9odG1sL1ZvaWRDYWxsYmFjay5oIFwKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYzdkY2YxODJl
NjQ3ZTYzODk4NGI3ZTE3OGJmNTY4NWFhNWYzNTlhMy4uYTBlMmZkOTRhZjIyZDE2ZmM2NmRkN2My
NmQ5MjVjOTJkOWY5MGNkNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTE4MTAsNiArMTgxMCw4IEBACiAgICAgICAgICAgICAn
aHRtbC9UaW1lUmFuZ2VzLmgnLAogICAgICAgICAgICAgJ2h0bWwvVVJMSW5wdXRUeXBlLmNwcCcs
CiAgICAgICAgICAgICAnaHRtbC9VUkxJbnB1dFR5cGUuaCcsCisgICAgICAgICAgICAnaHRtbC9W
YWxpZGF0aW9uTWVzc2FnZS5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvVmFsaWRhdGlvbk1lc3Nh
Z2UuaCcsCiAgICAgICAgICAgICAnaHRtbC9WYWxpZGl0eVN0YXRlLmNwcCcsCiAgICAgICAgICAg
ICAnaHRtbC9WYWxpZGl0eVN0YXRlLmgnLAogICAgICAgICAgICAgJ2h0bWwvVm9pZENhbGxiYWNr
LmgnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5w
cm8KaW5kZXggZDYxODExYmIxMWQ0MmI3NWE2YmFlM2UzNzkzN2M5OGUwOTQwNzdkMC4uY2JlYWIw
MWQ0MDZhMmQxMjM0MGQ5NTBlODFmNjY1YzQ4MmJhODhjOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9X
ZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC05NjYsNiArOTY2LDcgQEAg
U09VUkNFUyArPSBcCiAgICAgaHRtbC9UZXh0SW5wdXRUeXBlLmNwcCBcCiAgICAgaHRtbC9UaW1l
SW5wdXRUeXBlLmNwcCBcCiAgICAgaHRtbC9VUkxJbnB1dFR5cGUuY3BwIFwKKyAgICBodG1sL1Zh
bGlkYXRpb25NZXNzYWdlLmNwcCBcCiAgICAgaHRtbC9WYWxpZGl0eVN0YXRlLmNwcCBcCiAgICAg
aHRtbC9XZWVrSW5wdXRUeXBlLmNwcCBcCiAgICAgaHRtbC9jYW52YXMvQ2FudmFzR3JhZGllbnQu
Y3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2og
Yi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDRlMjk1YWU3OGFm
YTIwYjhkZDU3ZTBkYWYyMjlmMDg1ZjJhMTZkM2QuLjVmZjE3NWZhNzU1YzI3NDY4Yzk0OThjY2Yx
YTZlODdlN2YzZGZjMjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAt
NTMzNjQsNiArNTMzNjQsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5caHRtbFxWYWxpZGF0aW9uTWVzc2FnZS5jcHAiDQorCQkJCT4NCisJ
CQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXFZhbGlkYXRp
b25NZXNzYWdlLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRp
dmVQYXRoPSIuLlxodG1sXFZhbGlkaXR5U3RhdGUuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmNmMDI2M2Ex
ZWY2YTkwY2YwMTk3ZjQxYWU4NTk3NmZhYTQxZjJlYy4uNjVlMzA2NThkMzI4OWJhZDRjY2ZkOGM3
OGU2ZWM1NWQ0ZDcwM2U4MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTU1MjksNiArNTUyOSw4IEBACiAJCUY1NUIzREUwMTI1MUYxMkQwMDNFRjI2OSAv
KiBXZWVrSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNTVCM0RBQzEyNTFGMTJEMDAzRUYyNjkgLyogV2Vla0lucHV0VHlwZS5oICovOyB9
OwogCQlGNTlDOTVGRjEyNTVCMjNGMDAwNjIzQzAgLyogQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1OUM5
NUZEMTI1NUIyM0YwMDA2MjNDMCAvKiBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwICovOyB9
OwogCQlGNTlDOTYwMDEyNTVCMjNGMDAwNjIzQzAgLyogQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTlDOTVG
RTEyNTVCMjNGMDAwNjIzQzAgLyogQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmggKi87IH07CisJ
CUY1QTE1NDI3MTI3OTUzNEQwMEQwQjBDMCAvKiBWYWxpZGF0aW9uTWVzc2FnZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNUExNTQyNTEyNzk1MzRE
MDBEMEIwQzAgLyogVmFsaWRhdGlvbk1lc3NhZ2UuY3BwICovOyB9OworCQlGNUExNTQyODEyNzk1
MzREMDBEMEIwQzAgLyogVmFsaWRhdGlvbk1lc3NhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1QTE1NDI2MTI3OTUzNEQwMEQwQjBDMCAvKiBWYWxp
ZGF0aW9uTWVzc2FnZS5oICovOyB9OwogCQlGNUMwNDFEQTBGRkNBN0NFMDA4MzlENEEgLyogSFRN
TERhdGFMaXN0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNUMwNDFENzBGRkNBN0NFMDA4MzlENEEgLyogSFRNTERhdGFMaXN0RWxlbWVu
dC5jcHAgKi87IH07CiAJCUY1QzA0MURCMEZGQ0E3Q0UwMDgzOUQ0QSAvKiBIVE1MRGF0YUxpc3RF
bGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NUMwNDFEODBGRkNBN0NFMDA4MzlENEEgLyogSFRNTERhdGFMaXN0RWxlbWVudC5oICovOyB9Owog
CQlGNUMwNDFFMzBGRkNBOTZEMDA4MzlENEEgLyogRE9NSFRNTERhdGFMaXN0RWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjVDMDQxREUwRkZD
QTk2RDAwODM5RDRBIC8qIERPTUhUTUxEYXRhTGlzdEVsZW1lbnQuaCAqLzsgfTsKQEAgLTExNTg5
LDYgKzExNTkxLDggQEAKIAkJRjU4Nzg2OTkwMkRFM0I4NjAxRUE0MTIyIC8qIERlcHJlY2F0ZWRQ
dHJMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERlcHJlY2F0ZWRQdHJMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRo
ID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlGNTlDOTVGRDEyNTVCMjNGMDAwNjIzQzAgLyogQmFz
ZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUY1OUM5NUZFMTI1NUIyM0YwMDA2MjNDMCAvKiBCYXNlRGF0ZUFuZFRpbWVJbnB1
dFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFzZURhdGVBbmRUaW1l
SW5wdXRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY1QTE1NDI1MTI3OTUz
NEQwMEQwQjBDMCAvKiBWYWxpZGF0aW9uTWVzc2FnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBWYWxpZGF0aW9uTWVzc2FnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUY1QTE1NDI2MTI3OTUzNEQwMEQwQjBDMCAvKiBWYWxpZGF0aW9uTWVzc2Fn
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWxpZGF0aW9uTWVzc2FnZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNUMwNDFENzBGRkNBN0NFMDA4MzlENEEg
LyogSFRNTERhdGFMaXN0RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBIVE1MRGF0YUxpc3RFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRjVDMDQxRDgwRkZDQTdDRTAwODM5RDRBIC8qIEhUTUxEYXRhTGlzdEVsZW1lbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTERhdGFMaXN0RWxlbWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNUMwNDFEOTBGRkNBN0NFMDA4MzlENEEgLyog
SFRNTERhdGFMaXN0RWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRNTERhdGFM
aXN0RWxlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDkzMiw2ICsx
NDkzNiw4IEBACiAJCQkJRTQ0NjEzOUYwQ0Q2MzMxMDAwRkFEQTc1IC8qIFRpbWVSYW5nZXMuaWRs
ICovLAogCQkJCUY1NUIzREE5MTI1MUYxMkQwMDNFRjI2OSAvKiBVUkxJbnB1dFR5cGUuY3BwICov
LAogCQkJCUY1NUIzREFBMTI1MUYxMkQwMDNFRjI2OSAvKiBVUkxJbnB1dFR5cGUuaCAqLywKKwkJ
CQlGNUExNTQyNTEyNzk1MzREMDBEMEIwQzAgLyogVmFsaWRhdGlvbk1lc3NhZ2UuY3BwICovLAor
CQkJCUY1QTE1NDI2MTI3OTUzNEQwMEQwQjBDMCAvKiBWYWxpZGF0aW9uTWVzc2FnZS5oICovLAog
CQkJCTE1Qzc3MDhCMTAwRDNDNkEwMDVCQTI2NyAvKiBWYWxpZGl0eVN0YXRlLmNwcCAqLywKIAkJ
CQkxNUM3NzA4QTEwMEQzQzZBMDA1QkEyNjcgLyogVmFsaWRpdHlTdGF0ZS5oICovLAogCQkJCTE1
Qzc3MDg5MTAwRDNDNkEwMDVCQTI2NyAvKiBWYWxpZGl0eVN0YXRlLmlkbCAqLywKQEAgLTIxMDE1
LDYgKzIxMDIxLDcgQEAKIAkJCQlCQzhCRjE1QTEwNTgxNDE4MDBBNDBBMDcgLyogVXNlclN0eWxl
U2hlZXRUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNERjMxN0MxMUY4RDY4MzAwM0M1QkY4
IC8qIFVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTNC
QkYwODExNjJEQTExMDBCOTQwOUEgLyogVVVJRC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjVBMTU0
MjgxMjc5NTM0RDAwRDBCMEMwIC8qIFZhbGlkYXRpb25NZXNzYWdlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxNUM3NzA4RDEwMEQzQzZCMDA1QkEyNjcgLyogVmFsaWRpdHlTdGF0ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQ0VGNDE4Q0YxMTc5Njc4QzAwOUQxMTJDIC8qIFZpZXdwb3J0QXJndW1lbnRz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUxRTA5OUU2NDkyMDA1NkU1ODEgLyogdmlzaWJs
ZV91bml0cy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzYwNCw2ICsyMzYxMSw3IEBACiAJCQkJMjU0
MkY0REExMTY2QzI1QTAwRTg5QTg2IC8qIFVzZXJHZXN0dXJlSW5kaWNhdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDREYzMTdCMTFGOEQ2ODMwMDNDNUJGOCAvKiBVc2VyVHlwaW5nR2VzdHVy
ZUluZGljYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRTNCQkYwNzExNjJEQTExMDBCOTQw
OUEgLyogVVVJRC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGNUExNTQyNzEyNzk1MzREMDBEMEIw
QzAgLyogVmFsaWRhdGlvbk1lc3NhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTVDNzcwOEUx
MDBEM0M2QjAwNUJBMjY3IC8qIFZhbGlkaXR5U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0VGNDE4Q0UxMTc5Njc4QzAwOUQxMTJDIC8qIFZpZXdwb3J0QXJndW1lbnRzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTkzMzA5RTFEMDk5RTY0OTIwMDU2RTU4MSAvKiB2aXNpYmxlX3VuaXRzLmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJv
bEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmlu
ZGV4IDUxYjllMjAyNDk2MWU3ZTM2NDRjYmFmZTMxNjBjMzM3MTAwZDZiMGYuLjVlNDBiNjYzNTI0
NzZlNWVlNDE0ZTg1ZDg3ZmM4Zjc3MzAxMWFjNjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250
cm9sRWxlbWVudC5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJSZW5kZXJUZXh0Q29u
dHJvbC5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXZlbnRM
aXN0ZW5lci5oIgorI2luY2x1ZGUgIlZhbGlkYXRpb25NZXNzYWdlLmgiCiAjaW5jbHVkZSAiVmFs
aWRpdHlTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNzUsNiArNzYsMTIg
QEAgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6fkhUTUxGb3JtQ29udHJvbEVsZW1lbnQoKQogICAg
ICAgICBtX2Zvcm0tPnJlbW92ZUZvcm1FbGVtZW50KHRoaXMpOwogfQogCit2b2lkIEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ6OmRldGFjaCgpCit7CisgICAgaGlkZVZpc2libGVWYWxpZGF0aW9uTWVz
c2FnZSgpOworICAgIEhUTUxFbGVtZW50OjpkZXRhY2goKTsKK30KKwogYm9vbCBIVE1MRm9ybUNv
bnRyb2xFbGVtZW50Ojpmb3JtTm9WYWxpZGF0ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuICFnZXRB
dHRyaWJ1dGUoZm9ybW5vdmFsaWRhdGVBdHRyKS5pc051bGwoKTsKQEAgLTI5OSw3ICszMDYsOCBA
QCB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldE5lZWRzV2lsbFZhbGlkYXRlQ2hlY2so
KQogICAgIG1fd2lsbFZhbGlkYXRlSW5pdGlhbGl6ZWQgPSB0cnVlOwogICAgIG1fd2lsbFZhbGlk
YXRlID0gbmV3V2lsbFZhbGlkYXRlOwogICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKLSAgICAv
LyBGSVhNRTogU2hvdy9oaWRlIGEgdmFsaWRhdGlvbiBtZXNzYWdlLgorICAgIGlmICghbV93aWxs
VmFsaWRhdGUpCisgICAgICAgIGhpZGVWaXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKTsKIH0KIAog
U3RyaW5nIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnZhbGlkYXRpb25NZXNzYWdlKCkKQEAgLTMw
Nyw2ICszMTUsNDIgQEAgU3RyaW5nIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnZhbGlkYXRpb25N
ZXNzYWdlKCkKICAgICByZXR1cm4gdmFsaWRpdHkoKS0+dmFsaWRhdGlvbk1lc3NhZ2UoKTsKIH0K
IAordm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp1cGRhdGVWaXNpYmxlVmFsaWRhdGlvbk1l
c3NhZ2UoKQoreworICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5wYWdlKCk7CisgICAgaWYg
KCFwYWdlKQorICAgICAgICByZXR1cm47CisgICAgU3RyaW5nIG1lc3NhZ2U7CisgICAgaWYgKHJl
bmRlcmVyKCkgJiYgd2lsbFZhbGlkYXRlKCkpIHsKKyAgICAgICAgbWVzc2FnZSA9IHZhbGlkYXRp
b25NZXNzYWdlKCkuc3RyaXBXaGl0ZVNwYWNlKCk7CisgICAgICAgIC8vIEhUTUw1IHNwZWNpZmlj
YXRpb24gZG9lc24ndCBhc2sgVUEgdG8gc2hvdyB0aGUgdGl0bGUgYXR0cmlidXRlIHZhbHVlCisg
ICAgICAgIC8vIHdpdGggdGhlIHZhbGlkYXRpb25NZXNzYWdlLiAgSG93ZXZlciwgdGhpcyBiZWhh
dmlvciBpcyBzYW1lIGFzIE9wZXJhCisgICAgICAgIC8vIGFuZCB0aGUgc3BlY2lmaWNhdGlvbiBk
ZXNjcmliZXMgc3VjaCBiZWhhdmlvciBhcyBhbiBleGFtcGxlLgorICAgICAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIHRpdGxlID0gZ2V0QXR0cmlidXRlKHRpdGxlQXR0cik7CisgICAgICAgIGlmICgh
bWVzc2FnZS5pc0VtcHR5KCkgJiYgIXRpdGxlLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgbWVz
c2FnZS5hcHBlbmQoJ1xuJyk7CisgICAgICAgICAgICBtZXNzYWdlLmFwcGVuZCh0aXRsZSk7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgaWYgKCFtX3ZhbGlkYXRpb25NZXNzYWdlKSB7CisgICAgICAg
IG1fdmFsaWRhdGlvbk1lc3NhZ2UgPSBWYWxpZGF0aW9uTWVzc2FnZTo6Y3JlYXRlKHRoaXMpOwor
ICAgICAgICBtX3ZhbGlkYXRpb25NZXNzYWdlLT5zZXRNZXNzYWdlKG1lc3NhZ2UpOworICAgIH0g
ZWxzZSBpZiAobWVzc2FnZS5pc0VtcHR5KCkpCisgICAgICAgIGhpZGVWaXNpYmxlVmFsaWRhdGlv
bk1lc3NhZ2UoKTsKKyAgICBlbHNlIGlmIChtX3ZhbGlkYXRpb25NZXNzYWdlLT5tZXNzYWdlKCkg
IT0gbWVzc2FnZSkKKyAgICAgICAgbV92YWxpZGF0aW9uTWVzc2FnZS0+c2V0TWVzc2FnZShtZXNz
YWdlKTsKK30KKwordm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpoaWRlVmlzaWJsZVZhbGlk
YXRpb25NZXNzYWdlKCkKK3sKKyAgICBtX3ZhbGlkYXRpb25NZXNzYWdlID0gMDsKK30KKworU3Ry
aW5nIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fdmFsaWRhdGlvbk1lc3NhZ2UgPyBtX3ZhbGlkYXRpb25NZXNz
YWdlLT5tZXNzYWdlKCkgOiBTdHJpbmcoKTsKK30KKwogYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50OjpjaGVja1ZhbGlkaXR5KFZlY3RvcjxSZWZQdHI8SFRNTEZvcm1Db250cm9sRWxlbWVudD4g
PiogdW5oYW5kbGVkSW52YWxpZENvbnRyb2xzKQogewogICAgIGlmICghd2lsbFZhbGlkYXRlKCkg
fHwgaXNWYWxpZEZvcm1Db250cm9sRWxlbWVudCgpKQpAQCAtMzM2LDcgKzM4MCwxMyBAQCB2b2lk
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldE5lZWRzVmFsaWRpdHlDaGVjaygpCiAgICAgICAg
IHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICB9CiAgICAgbV9pc1ZhbGlkID0gbmV3SXNWYWxp
ZDsKLSAgICAvLyBGSVhNRTogc2hvdy9oaWRlIGEgdmFsaWRhdGlvbiBtZXNzYWdlLgorCisgICAg
Ly8gVXBkYXRlcyBvbmx5IGlmIHRoaXMgY29udHJvbCBhbHJlYWR5IGhhcyBhIHZhbGlkdGlvbiBt
ZXNzYWdlLgorICAgIGlmICghdmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlKCkuaXNFbXB0eSgpKSB7
CisgICAgICAgIC8vIENhbGxzIHVwZGF0ZVZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSgpIGV2ZW4g
aWYgbV9pc1ZhbGlkIGlzIG5vdAorICAgICAgICAvLyBjaGFuZ2VkIGJlY2F1c2UgYSB2YWxpZGF0
aW9uIG1lc3NhZ2UgY2FuIGJlIGNoYWduZWQuCisgICAgICAgIHVwZGF0ZVZpc2libGVWYWxpZGF0
aW9uTWVzc2FnZSgpOworICAgIH0KIH0KIAogdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojpz
ZXRDdXN0b21WYWxpZGl0eShjb25zdCBTdHJpbmcmIGVycm9yKQpAQCAtMzU4LDYgKzQwOCw3IEBA
IHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQoKQogICAgICAg
ICBkb2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+Zm9ybURpZEJsdXIodGhp
cyk7CiAKICAgICBIVE1MRWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQoKTsKKyAgICBoaWRlVmlz
aWJsZVZhbGlkYXRpb25NZXNzYWdlKCk7CiB9CiAKIEhUTUxGb3JtRWxlbWVudCogSFRNTEZvcm1D
b250cm9sRWxlbWVudDo6dmlydHVhbEZvcm0oKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRy
b2xFbGVtZW50LmgKaW5kZXggOGI3MjFkOGFiMWVhMjkzOGE4MGJkM2QxMTdhZmM0YmE1N2NmNTg1
Zi4uZDAwMjI4NDMyNjgzMGIzOTk3MjVlMmM2NTRlZmE4MzBkYjI4MzNmNiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1Db250cm9sRWxlbWVudC5oCkBAIC0zMSw2ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIEZvcm1EYXRhTGlzdDsKIGNsYXNzIEhUTUxGb3JtRWxlbWVudDsKIGNsYXNz
IFJlbmRlclRleHRDb250cm9sOworY2xhc3MgVmFsaWRhdGlvbk1lc3NhZ2U7CiBjbGFzcyBWYWxp
ZGl0eVN0YXRlOwogY2xhc3MgVmlzaWJsZVNlbGVjdGlvbjsKIApAQCAtODQsNiArODUsOCBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFZhbGlkYXRlKCkgY29uc3Q7CiAgICAgU3Ry
aW5nIHZhbGlkYXRpb25NZXNzYWdlKCk7CisgICAgdm9pZCB1cGRhdGVWaXNpYmxlVmFsaWRhdGlv
bk1lc3NhZ2UoKTsKKyAgICB2b2lkIGhpZGVWaXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKTsKICAg
ICBib29sIGNoZWNrVmFsaWRpdHkoVmVjdG9yPFJlZlB0cjxIVE1MRm9ybUNvbnRyb2xFbGVtZW50
PiA+KiB1bmhhbmRsZWRJbnZhbGlkQ29udHJvbHMgPSAwKTsKICAgICAvLyBUaGlzIG11c3QgYmUg
Y2FsbGVkIHdoZW4gYSB2YWxpZGF0aW9uIGNvbnN0cmFpbnQgb3IgY29udHJvbCB2YWx1ZSBpcyBj
aGFuZ2VkLgogICAgIHZvaWQgc2V0TmVlZHNWYWxpZGl0eUNoZWNrKCk7CkBAIC0xMTEsNiArMTE0
LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRm9jdXNFdmVudCgp
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEJsdXJFdmVudCgpOworICAgIHZpcnR1YWwgdm9p
ZCBkZXRhY2goKTsKIAogICAgIHZvaWQgcmVtb3ZlRnJvbUZvcm0oKTsKIApAQCAtMTMxLDkgKzEz
NSwxMSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgSFRNTEZvcm1FbGVtZW50KiB2aXJ0dWFsRm9y
bSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0RlZmF1bHRCdXR0b25Gb3JGb3JtKCkgY29u
c3Q7CiAgICAgdmlydHVhbCBib29sIGlzVmFsaWRGb3JtQ29udHJvbEVsZW1lbnQoKTsKKyAgICBT
dHJpbmcgdmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3Q7CiAKICAgICBIVE1MRm9ybUVs
ZW1lbnQqIG1fZm9ybTsKICAgICBPd25QdHI8VmFsaWRpdHlTdGF0ZT4gbV92YWxpZGl0eVN0YXRl
OworICAgIE93blB0cjxWYWxpZGF0aW9uTWVzc2FnZT4gbV92YWxpZGF0aW9uTWVzc2FnZTsKICAg
ICBib29sIG1fZGlzYWJsZWQgOiAxOwogICAgIGJvb2wgbV9yZWFkT25seSA6IDE7CiAgICAgYm9v
bCBtX3JlcXVpcmVkIDogMTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1l
bnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXggMzFhNzJiZDhi
YWNmMTY3YThkYmM1YzM3YTMwMzY4MTI2Nzg0NWUxNy4uZGEzODhkNWM2NTFiOWMzMDkzZmQ5ODQx
ZDI1Mjg3MWQzOTYzNTdmMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVu
dC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKQEAgLTIwNSw2ICsy
MDUsOSBAQCBib29sIEhUTUxGb3JtRWxlbWVudDo6dmFsaWRhdGVJbnRlcmFjdGl2ZWx5KEV2ZW50
KiBldmVudCkKICAgICBpZiAoc3VibWl0RWxlbWVudCAmJiBzdWJtaXRFbGVtZW50LT5mb3JtTm9W
YWxpZGF0ZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAorICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX2Fzc29jaWF0ZWRFbGVtZW50cy5zaXplKCk7ICsraSkKKyAgICAgICAgbV9hc3Nv
Y2lhdGVkRWxlbWVudHNbaV0tPmhpZGVWaXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKTsKKwogICAg
IFZlY3RvcjxSZWZQdHI8SFRNTEZvcm1Db250cm9sRWxlbWVudD4gPiB1bmhhbmRsZWRJbnZhbGlk
Q29udHJvbHM7CiAgICAgY29sbGVjdFVuaGFuZGxlZEludmFsaWRDb250cm9scyh1bmhhbmRsZWRJ
bnZhbGlkQ29udHJvbHMpOwogICAgIGlmICh1bmhhbmRsZWRJbnZhbGlkQ29udHJvbHMuaXNFbXB0
eSgpKQpAQCAtMjEyLDcgKzIxNSw3IEBAIGJvb2wgSFRNTEZvcm1FbGVtZW50Ojp2YWxpZGF0ZUlu
dGVyYWN0aXZlbHkoRXZlbnQqIGV2ZW50KQogICAgIC8vIElmIHRoZSBmb3JtIGhhcyBpbnZhbGlk
IGNvbnRyb2xzLCBhYm9ydCBzdWJtaXNzaW9uLgogCiAgICAgUmVmUHRyPEhUTUxGb3JtRWxlbWVu
dD4gcHJvdGVjdG9yKHRoaXMpOwotICAgIC8vIEZvY3VzIG9uIHRoZSBmaXJzdCBmb2N1c2FibGUg
Y29udHJvbC4KKyAgICAvLyBGb2N1cyBvbiB0aGUgZmlyc3QgZm9jdXNhYmxlIGNvbnRyb2wgYW5k
IHNob3cgYSB2YWxpZGF0aW9uIG1lc3NhZ2UuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHVuaGFuZGxlZEludmFsaWRDb250cm9scy5zaXplKCk7ICsraSkgewogICAgICAgICBIVE1MRm9y
bUNvbnRyb2xFbGVtZW50KiB1bmhhbmRsZWQgPSB1bmhhbmRsZWRJbnZhbGlkQ29udHJvbHNbaV0u
Z2V0KCk7CiAgICAgICAgIGlmICh1bmhhbmRsZWQtPmlzRm9jdXNhYmxlKCkgJiYgdW5oYW5kbGVk
LT5pbkRvY3VtZW50KCkpIHsKQEAgLTIyMyw2ICsyMjYsNyBAQCBib29sIEhUTUxGb3JtRWxlbWVu
dDo6dmFsaWRhdGVJbnRlcmFjdGl2ZWx5KEV2ZW50KiBldmVudCkKICAgICAgICAgICAgIC8vIG1v
dmVkIHRvIGFub3RoZXIgZG9jdW1lbnQuCiAgICAgICAgICAgICBpZiAodW5oYW5kbGVkLT5pc0Zv
Y3VzYWJsZSgpICYmIHVuaGFuZGxlZC0+aW5Eb2N1bWVudCgpICYmIG9yaWdpbmFsRG9jdW1lbnQg
PT0gdW5oYW5kbGVkLT5kb2N1bWVudCgpKSB7CiAgICAgICAgICAgICAgICAgdW5oYW5kbGVkLT5m
b2N1cygpOworICAgICAgICAgICAgICAgIHVuaGFuZGxlZC0+dXBkYXRlVmlzaWJsZVZhbGlkYXRp
b25NZXNzYWdlKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAgYi9X
ZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4NmViZDQ4MWM2
ZGE4NWM0YzIzODNiZDYzMjJhN2Y5YzViNjlhZmEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3Jl
L2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiVmFsaWRhdGlvbk1lc3NhZ2UuaCIKKworI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQUxXQVlTX0lOTElORSBWYWxp
ZGF0aW9uTWVzc2FnZTo6VmFsaWRhdGlvbk1lc3NhZ2UoSFRNTEZvcm1Db250cm9sRWxlbWVudCog
ZWxlbWVudCkKKyAgICA6IG1fZWxlbWVudChlbGVtZW50KQoreworfQorCitWYWxpZGF0aW9uTWVz
c2FnZTo6flZhbGlkYXRpb25NZXNzYWdlKCkKK3sKKyAgICBoaWRlTWVzc2FnZSgpOworfQorCitQ
YXNzT3duUHRyPFZhbGlkYXRpb25NZXNzYWdlPiBWYWxpZGF0aW9uTWVzc2FnZTo6Y3JlYXRlKEhU
TUxGb3JtQ29udHJvbEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBWYWxpZGF0aW9uTWVzc2FnZShlbGVtZW50KSk7Cit9CisKK3ZvaWQgVmFsaWRhdGlvbk1lc3Nh
Z2U6OnNldE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIGlmIChtX21lc3Nh
Z2UuaXNFbXB0eSgpKSB7IH0gLy8gRklYTUU6IENvbnN0cnVjdCB2YWxpZGF0aW9uIG1lc3NhZ2Ug
VUkuCisgICAgbV9tZXNzYWdlID0gbWVzc2FnZTsKKworICAgIG1fdGltZXIuc2V0KG5ldyBUaW1l
cjxWYWxpZGF0aW9uTWVzc2FnZT4odGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpoaWRlTWVzc2Fn
ZSkpOworICAgIG1fdGltZXItPnN0YXJ0T25lU2hvdCg2LjApOyAvLyBGSVhNRTogc2hvdWxkIGJl
IDxtZXNzYWdlIGxlbmd0aD4gKiBzb21ldGhpbmcuCit9CisKK3ZvaWQgVmFsaWRhdGlvbk1lc3Nh
Z2U6OmhpZGVNZXNzYWdlKFRpbWVyPFZhbGlkYXRpb25NZXNzYWdlPiopCit7CisgICAgLy8gRklY
TUU6IEltcGxlbWVudC4KKworICAgIG1fbWVzc2FnZSA9IFN0cmluZygpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3Nh
Z2UuaCBiL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlMThi
NmI4M2E4ZjllZWY1Njc2ODI0ZDNiMGQ5MmQ3MDE3NDg3ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9X
ZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuaApAQCAtMCwwICsxLDYxIEBACisvKgorICog
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
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBW
YWxpZGF0aW9uTWVzc2FnZV9oCisjZGVmaW5lIFZhbGlkYXRpb25NZXNzYWdlX2gKKworI2luY2x1
ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3Rm
L093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ7CisKK2NsYXNzIFZhbGlk
YXRpb25NZXNzYWdlIDogcHVibGljIE5vbmNvcHlhYmxlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc093blB0cjxWYWxpZGF0aW9uTWVzc2FnZT4gY3JlYXRlKEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQqKTsKKyAgICB+VmFsaWRhdGlvbk1lc3NhZ2UoKTsKKyAgICBTdHJpbmcgbWVzc2FnZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbWVzc2FnZTsgfQorICAgIHZvaWQgc2V0TWVzc2FnZShjb25zdCBTdHJp
bmcmKTsKKworcHJpdmF0ZToKKyAgICBWYWxpZGF0aW9uTWVzc2FnZShIVE1MRm9ybUNvbnRyb2xF
bGVtZW50Kik7CisgICAgdm9pZCBoaWRlTWVzc2FnZShUaW1lcjxWYWxpZGF0aW9uTWVzc2FnZT4q
ID0gMCk7CisKKyAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBtX2VsZW1lbnQ7CisgICAgU3Ry
aW5nIG1fbWVzc2FnZTsKKyAgICBPd25QdHI8VGltZXI8VmFsaWRhdGlvbk1lc3NhZ2U+ID4gbV90
aW1lcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFZhbGlkYXRp
b25NZXNzYWdlX2gK
</data>

          </attachment>
      

    </bug>

</bugzilla>