<?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>26278</bug_id>
          
          <creation_ts>2009-06-09 13:15:15 -0700</creation_ts>
          <short_desc>Patch that make WebCore have a RenderTheme per page</short_desc>
          <delta_ts>2009-06-17 07:53:01 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Kenneth Rohde Christiansen">kenneth</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aroben</cc>
    
    <cc>hausmann</cc>
    
    <cc>hyatt</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>124998</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-06-09 13:15:15 -0700</bug_when>
    <thetext>In order to fix a bug with Qt and its style support, which can be changed per widget, we need to have access to the page from the RenderTheme.

I discussed this issue with Dave Hyatt on IRC and he gave me some suggestions, and this patch implements these.

The patch has been tested with Gtk+ and Qt on Linux, but I have made changes to all backends.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125000</commentid>
    <comment_count>1</comment_count>
      <attachid>31104</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-06-09 13:16:07 -0700</bug_when>
    <thetext>Created attachment 31104
Patch which creates one RenderTheme per page</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125001</commentid>
    <comment_count>2</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-06-09 13:19:24 -0700</bug_when>
    <thetext>Please ignore that .../template/en/default/global/message.html.tmpl part from the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125002</commentid>
    <comment_count>3</comment_count>
      <attachid>31105</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-06-09 13:28:43 -0700</bug_when>
    <thetext>Created attachment 31105
Fixed the patch to not include a wrong file

Gustavo Noronha has confirmed that the GTK+ port builds and works withuot problems.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125083</commentid>
    <comment_count>4</comment_count>
      <attachid>31105</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-06-09 21:14:19 -0700</bug_when>
    <thetext>Comment on attachment 31105
Fixed the patch to not include a wrong file

One improveement would be to avoid making new RenderThemes on platforms that don&apos;t need per-page themes...

(1) Make RenderTheme refcounted.
(2) Make Page&apos;s theme() call a function like 

PassRefPtr&lt;RenderTheme&gt; RenderTheme::themeForPage(Page*).

(3) On platforms that want to have per-page theme support, this function could construct a new theme and hand it back.

On platforms that don&apos;t need per-page theme support, they could just hand back the static singleton as before (which should have an initial ref() also or maybe be held in static RefPtr).

I&apos;m not sure every RenderTheme subclass has made its data members and such static, so I&apos;m concerned about moving away from singletons on platforms that don&apos;t need per-page support... hence the suggestion of a way to keep the singleton model.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125478</commentid>
    <comment_count>5</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-06-12 10:22:25 -0700</bug_when>
    <thetext>Thanks for the comments, I have made the adaptation and will add a patch in a few minutes. </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125479</commentid>
    <comment_count>6</comment_count>
      <attachid>31200</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-06-12 10:23:43 -0700</bug_when>
    <thetext>Created attachment 31200
Now using RefPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125480</commentid>
    <comment_count>7</comment_count>
      <attachid>31201</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-06-12 10:26:55 -0700</bug_when>
    <thetext>Created attachment 31201
Using RefPtr (fixed ChangeLog)

Fixed the ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125968</commentid>
    <comment_count>8</comment_count>
      <attachid>31201</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-06-15 09:29:40 -0700</bug_when>
    <thetext>Comment on attachment 31201
Using RefPtr (fixed ChangeLog)

I don&apos;t think you ever have to null-check page() in the RenderObject::theme() method... you can just make that method return document()-&gt;page()-&gt;theme() and not worry about the else case.

You should inline defaultTheme() in the header.

I think it would read better if defaultTheme() was a static member function of RenderTheme also at this point.  You can just put it next to themeForPage().

I&apos;m going to go ahead and give this r=me though.  If you fix those things, great.  If not, can be fixed in followup patch also.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125969</commentid>
    <comment_count>9</comment_count>
      <attachid>31201</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-06-15 09:34:24 -0700</bug_when>
    <thetext>Comment on attachment 31201
Using RefPtr (fixed ChangeLog)

&gt; +class RenderTheme : public RefCounted&lt;RenderTheme&gt; {
&gt;  public:
&gt;      RenderTheme();
&gt;      virtual ~RenderTheme() { }

Normally classes that derive from RefCounted have private constructors and a public create() function that returns a PassRefPtr. This helps avoid leaks/crashes due to incorrect reference count management. I think you should follow this pattern with RenderTheme.

&gt; +PassRefPtr&lt;RenderTheme&gt; RenderTheme::themeForPage(Page* page)
&gt;  {
&gt; -    static RenderThemeChromiumWin winTheme;
&gt; -    return &amp;winTheme;
&gt; +    static RefPtr&lt;RenderTheme&gt; rt = new RenderThemeChromiumWin();
&gt; +    return rt; // keep the reference of one.
&gt;  }

This code causes a destructor to be run when the process exits, which will slow down quit time. A better idiom is to write this like so:

static RenderTheme* rt = RenderThemeChromiumWin::create().releaseRef();
return rt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126074</commentid>
    <comment_count>10</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-06-15 16:00:53 -0700</bug_when>
    <thetext>As classes are inheriting from RenderTheme, I cannot make the ctor and dtor private in RenderTheme.h, but I can do it in the implementations such as RenderThemeQt.h.

Another question:

Is this right? or do I need to do a releaseRef or so here.

+    static inline PassRefPtr&lt;RenderTheme&gt; defaultTheme()
+    {
+        return RenderTheme::themeForPage(0);
+    };

Also is this change right?

 PassRefPtr&lt;RenderTheme&gt; RenderTheme::themeForPage(Page* page)
 {
     if (page)
-        return adoptRef(new RenderThemeQt(page));
+        return RenderThemeQt::create(page);
 
-    static RefPtr&lt;RenderTheme&gt; fallback = new RenderThemeQt(0);
-    return fallback; // keep the reference of one.
+    static RefPtr&lt;RenderTheme&gt; fallback = RenderThemeQt::create(0).releaseRef();
+    return fallback;
 }

Could you explain me why the code causes a destructor to be run when the process exits? I would really like to understand how to use the RefPtr&apos;s correctly.

Thanks for your comments!
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126118</commentid>
    <comment_count>11</comment_count>
      <attachid>31201</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-15 19:25:23 -0700</bug_when>
    <thetext>Comment on attachment 31201
Using RefPtr (fixed ChangeLog)

Marking this r- since Kenneth is not a committer and can&apos;t fix Hyatt&apos;s comments when landing.  Kenneth: this is a great patch, but you&apos;ll have to post another copy so that someone else can land the fixed version for you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126205</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-06-16 08:42:51 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; As classes are inheriting from RenderTheme, I cannot make the ctor and dtor
&gt; private in RenderTheme.h, but I can do it in the implementations such as
&gt; RenderThemeQt.h.

In that case, you should make them protected in RenderTheme and private in the derived classes (like RenderThemeQt).

The point is to avoid errors like this one (in your new code);

 114     static RefPtr&lt;RenderTheme&gt; fallback = new RenderThemeQt();
 115     return fallback; // keep the reference of one.

&quot;fallback&quot; will actually have a reference count of 2 here: it is created with a reference count of 1, then assigned into a RefPtr which increments the refcount to 2. Obviously this is OK in this case, since we want to keep this RenderTheme around forever, but this illustrates the reason why we use the create() functions and keep the constructors private/protected.

&gt; Another question:
&gt; 
&gt; Is this right? or do I need to do a releaseRef or so here.
&gt; 
&gt; +    static inline PassRefPtr&lt;RenderTheme&gt; defaultTheme()
&gt; +    {
&gt; +        return RenderTheme::themeForPage(0);
&gt; +    };

This is correct as written.

&gt; Also is this change right?
&gt; 
&gt;  PassRefPtr&lt;RenderTheme&gt; RenderTheme::themeForPage(Page* page)
&gt;  {
&gt;      if (page)
&gt; -        return adoptRef(new RenderThemeQt(page));
&gt; +        return RenderThemeQt::create(page);

This is a good change.

&gt; -    static RefPtr&lt;RenderTheme&gt; fallback = new RenderThemeQt(0);
&gt; -    return fallback; // keep the reference of one.
&gt; +    static RefPtr&lt;RenderTheme&gt; fallback =
&gt; RenderThemeQt::create(0).releaseRef();
&gt; +    return fallback;
&gt;  }

This is not correct.

&gt; Could you explain me why the code causes a destructor to be run when the
&gt; process exits? I would really like to understand how to use the RefPtr&apos;s
&gt; correctly.

Static variables and global variables on the stack have their destructors run when the process exits. This is part of the way the C++ language works. We avoid having the destructor run by not keeping a RefPtr on the stack. That&apos;s why the code I wrote in comment 9 stores the RenderTheme as a bare pointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126211</commentid>
    <comment_count>13</comment_count>
      <attachid>31352</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-06-16 09:37:00 -0700</bug_when>
    <thetext>Created attachment 31352
Follow up patch for Qt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126213</commentid>
    <comment_count>14</comment_count>
      <attachid>31352</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-06-16 09:44:53 -0700</bug_when>
    <thetext>Comment on attachment 31352
Follow up patch for Qt

This patch has the same reference count problems as the previous one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126230</commentid>
    <comment_count>15</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-06-16 10:57:40 -0700</bug_when>
    <thetext>Yes, that is known. I&apos;m fixing all of this. Simon just wanted to let you guys know that the rest is OK, so that I can get someone else to check this in today, when I&apos;m finished fixing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126241</commentid>
    <comment_count>16</comment_count>
      <attachid>31357</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-06-16 11:30:29 -0700</bug_when>
    <thetext>Created attachment 31357
RenderTheme patch incorporating all comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126242</commentid>
    <comment_count>17</comment_count>
      <attachid>31358</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-06-16 11:31:14 -0700</bug_when>
    <thetext>Created attachment 31358
Qt specific RenderTheme patch, accepted by Simon and with the RefPtr fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126286</commentid>
    <comment_count>18</comment_count>
      <attachid>31371</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-06-16 14:18:08 -0700</bug_when>
    <thetext>Created attachment 31371
RenderTheme patch incorporating all comments (fix problem due to git rebase)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126290</commentid>
    <comment_count>19</comment_count>
      <attachid>31357</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-06-16 14:27:15 -0700</bug_when>
    <thetext>Comment on attachment 31357
RenderTheme patch incorporating all comments

&gt; From 204628441494884d406f8d75ab90ef9589bfc1ae Mon Sep 17 00:00:00 2001
&gt; From: Kenneth Rohde Christiansen &lt;kenneth@spisnigel.osmtc.indt.org.br&gt;
&gt; Date: Tue, 16 Jun 2009 15:20:27 -0300
&gt; Subject: [PATCH] 2009-06-16  Kenneth Rohde Christiansen  &lt;kenneth.christiansen@openbossa.org&gt;
&gt; 
&gt;         Reviewed by Dave Hyatt and Adam Roben.

We normally leave this line as &quot;Reviewed by NOBODY (OOPS!).&quot; since a different reviewer might review a subsequent iteration of the patch.

&gt;  class RenderThemeGtk : public RenderTheme {
&gt; -public:
&gt; +private:
&gt;      RenderThemeGtk();
&gt;      virtual ~RenderThemeGtk();
&gt;  
&gt; +public:
&gt; +    static PassRefPtr&lt;RenderTheme&gt; create();
&gt; +

Our style is to list public members before private members. This can be fixed by a committer before landing.

&gt; +    // When the theme is needed in non-page dependent code, the defaultTheme() is used as fallback.
&gt; +    static inline PassRefPtr&lt;RenderTheme&gt; defaultTheme()
&gt; +    {
&gt; +        return RenderTheme::themeForPage(0);
&gt; +    };

No need for &quot;RenderTheme::&quot; here.

I&apos;ll fix these issues before committing.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126326</commentid>
    <comment_count>20</comment_count>
      <attachid>31358</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-06-16 15:30:16 -0700</bug_when>
    <thetext>Comment on attachment 31358
Qt specific RenderTheme patch, accepted by Simon and with the RefPtr fix.

It turns out that this breaks the Windows build, due to calls to theme() that were not corrected in this patch. It probably breaks other builds, too. Can you grep over the WebCore/WebKit directories to find all calls to theme() and update them?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126343</commentid>
    <comment_count>21</comment_count>
      <attachid>31391</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-06-16 16:09:15 -0700</bug_when>
    <thetext>Created attachment 31391
Fixed as many theme() as I could find

Also moved the private sections and removed the RenderTheme:: from the RenderTheme.h as Adam suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126345</commentid>
    <comment_count>22</comment_count>
      <attachid>31391</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-06-16 16:13:57 -0700</bug_when>
    <thetext>Comment on attachment 31391
Fixed as many theme() as I could find

&gt; +++ b/WebKit/win/WebView.cpp
&gt; @@ -1854,7 +1854,7 @@ static LRESULT CALLBACK WebViewWndProc(HWND hWnd, UINT message, WPARAM wParam, L
&gt;          case WM_XP_THEMECHANGED:
&gt;              if (Frame* coreFrame = core(mainFrameImpl)) {
&gt;                  webView-&gt;deleteBackingStore();
&gt; -                theme()-&gt;themeChanged();
&gt; +                RenderTheme::defaultTheme()-&gt;themeChanged();

Should this use coreFrame-&gt;page()-&gt;theme() instead?

Thanks for fixing this up!

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126349</commentid>
    <comment_count>23</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-06-16 16:20:07 -0700</bug_when>
    <thetext>Right, I can indeed get it from the page here! Patch coming up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126350</commentid>
    <comment_count>24</comment_count>
      <attachid>31392</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-06-16 16:21:03 -0700</bug_when>
    <thetext>Created attachment 31392
Fix remaining comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126354</commentid>
    <comment_count>25</comment_count>
      <attachid>31392</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-06-16 16:35:52 -0700</bug_when>
    <thetext>Comment on attachment 31392
Fix remaining comment.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126452</commentid>
    <comment_count>26</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-06-17 07:53:01 -0700</bug_when>
    <thetext>Landed as r44758 and r44759</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31104</attachid>
            <date>2009-06-09 13:16:07 -0700</date>
            <delta_ts>2009-06-09 13:28:43 -0700</delta_ts>
            <desc>Patch which creates one RenderTheme per page</desc>
            <filename>one-rendertheme-per-page.patch</filename>
            <type>text/plain</type>
            <size>32571</size>
            <attacher name="Kenneth Rohde Christiansen">kenneth</attacher>
            
              <data encoding="base64">RnJvbSAxZDkxMDBmMDFkZTA2N2M0ZDE4ZWIzMjViODVkNzdmZmJhYjdiNDFkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiA8a2VubmV0aEBz
cGlzbmlnZWwub3NtdGMuaW5kdC5vcmcuYnI+CkRhdGU6IFR1ZSwgOSBKdW4gMjAwOSAxMzoyODo1
NiAtMDMwMApTdWJqZWN0OiBbUEFUQ0hdIDIwMDktMDYtMDkgIEtlbm5ldGggUm9oZGUgQ2hyaXN0
aWFuc2VuICA8a2VubmV0aC5jaHJpc3RpYW5zZW5AZ21haWwuY29tPgoKICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgQ3JlYXRlIGEgZGlmZmVyZW50IFJlbmRlclRo
ZW1lIHBlciBwYWdlLCBzbyB0aGF0IFJlbmRlclRoZW1lIGhhcwogICAgICAgIGFjY2VzcyB0byBw
YWdlIHNwZWNpZmljIHRoZW1pbmcuIFRoaXMgaXMgbmVlZGVkIGZvciB0aGUgUXQgcG9ydCwgYXMg
UXQKICAgICAgICBzdXBwb3J0cyBzZXR0aW5nIHRoZSB0aGVtZSAoc3R5bGUpIHBlciB3aWRnZXQu
CgogICAgICAgIFRoaXMgY2hhbmdlIHdhcyBzdWdnZXN0ZWQgYW5kIGRpc2N1c3NlZCB3aXRoIERh
dmUgSHlhdHQuCgogICAgICAgIE1vcmUgZGV0YWlsZWQ6CgogICAgICAgIDEpIENyZWF0ZSBhIHRo
ZW1lIHBlciBwYWdlLCBwbHVzIGEgZGVmYXVsdCBvbmUgdG8gYWNjZXNzIGZyb20gbm9uLXBhZ2UK
ICAgICAgICAgICBkZXBlbmRlbnQgY29kZS4KICAgICAgICAyKSBBZGQgYW4gYWNjZXNzZXIgdG8g
dGhlIHRoZW1lIGZyb20gUmVuZGVyT2JqZWN0LgogICAgICAgIDMpIENoYW5nZSBhbGwgdXNlcyBv
ZiB0aGUgdGhlbWluZyB0byBhY2Nlc3MgdGhlIHRoZW1lIHRocm91Z2gKICAgICAgICAgICBSZW5k
ZXJPYmplY3QsIHVzaW5nIHRoZSBnbG9iYWwgZGVmYXVsdCB0aGVtZSBhcyBmYWxsYmFjaywgd2hl
biB0aGUKICAgICAgICAgICBkb2N1bWVudCBvZiBSZW5kZXJPYmplY3QgaGFzIG5vIHBhZ2UuCiAg
ICAgICAgICAgV2hlbiB3ZSBkb24ndCBoYXZlIGFjY2VzcyB0byBhIFJlbmRlck9iamVjdCwgdXNl
IHRoZSBkZWZhdWx0IHRoZW1lLgogICAgICAgIDQpIE1vZGlmeSBhbGwgUmVuZGVyVGhlbWUgcGxh
dGZvcm0gaW1wbGVtZW50YXRpb25zIHRvIHdvcmsgd2l0aCB0aGUKICAgICAgICAgICBhYm92ZSBj
aGFuZ2VzLgotLS0KIC4uLi90ZW1wbGF0ZS9lbi9kZWZhdWx0L2dsb2JhbC9tZXNzYWdlLmh0bWwu
dG1wbCAgIHwgIEJpbiAxNDMzIC0+IDEyMjg4IGJ5dGVzCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgODQgKysrKysrKysrKysrKysrKysrKysK
IC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwICAgIHwgICAg
MiArLQogV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAgICAgICAgICAgICAgICAgICAg
fCAgIDEyICsrLS0KIFdlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwICAgICAgICAgICAgICAg
ICAgICAgIHwgICAgNCArLQogV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3Bw
ICAgICAgICAgICAgfCAgICAzICstCiBXZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVu
dC5jcHAgICAgICAgICAgICB8ICAgIDQgKy0KIFdlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcCAgICAgICAgICAgICAgICAgIHwgICAgNiArLQogV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBXZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDYgKy0KIFdlYkNvcmUvcGFnZS9Q
YWdlLmNwcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMiArKysKIFdlYkNvcmUv
cGFnZS9QYWdlLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNyArKy0KIFdl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwICAgIHwgICAgNCAr
LQogV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwICAgICAgICAgICAgfCAg
IDIzICsrKy0tLQogV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNwcCAgICAgICAg
ICAgICAgfCAgICA1ICstCiBXZWJDb3JlL3BsYXRmb3JtL3d4L1JlbmRlclRoZW1lV3guY3BwICAg
ICAgICAgICAgICB8ICAgIDUgKy0KIFdlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3Bw
ICAgICAgICAgICAgICAgIHwgICAgNSArLQogV2ViQ29yZS9yZW5kZXJpbmcvTWVkaWFDb250cm9s
RWxlbWVudHMuY3BwICAgICAgICAgfCAgICAyICstCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwICAgICAgICAgICAgICAgICB8ICAgIDkgKystCiBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuaCAgICAgICAgICAgICAgICAgICB8ICAgIDMgKwogV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWUuY3BwICAgICAgICAgICAgICAgICAgfCAgICA5ICsrLQogV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWUuaCAgICAgICAgICAgICAgICAgICAgfCAgIDEzICsrKy0KIFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5jcHAgICAgIHwgICAgNSAr
LQogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bU1hYy5tbSAgICAgICAgfCAg
ICA1ICstCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtV2luLmNwcCAgICAg
ICB8ICAgIDcgKy0KIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tICAgICAgICAg
ICAgICAgIHwgICAgNSArLQogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3Bw
ICAgICAgICAgICAgfCAgICA4ICstCiAyNyBmaWxlcyBjaGFuZ2VkLCAxODIgaW5zZXJ0aW9ucygr
KSwgNjggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvQnVnc1NpdGUvdGVtcGxhdGUvZW4vZGVm
YXVsdC9nbG9iYWwvbWVzc2FnZS5odG1sLnRtcGwgYi9CdWdzU2l0ZS90ZW1wbGF0ZS9lbi9kZWZh
dWx0L2dsb2JhbC9tZXNzYWdlLmh0bWwudG1wbAppbmRleCBlYWM4ZTViY2I5OWIzYWRjZTQwMDkx
MzRhZjYyNmNiMzJhYTQxZmMyLi5kZDM3NDQ0Mzc0ZmE2NzFlNGEyOGI2YzNiY2ExOGU0NDY1MGYx
YTc2IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTIyODgKemNtZUkySkM3cXA1UCpz
QTJhdjUpbiZwbU49YD8wRFp0PFApYEp1RCRkUk1taFI7dj84Sj4mOUJ2cHdDVD93PDlVCnpoPWBu
c29TNShlZWc7MVFrJitOMUJDMzE1UGF4dT9PVWpZZVFfcnVlI3d4WW5KbD0oYV5wbnJDcnVhckdC
fm9KeAp6Yz5Mdn5IKn4lejVwdHRGWVZXfFR6P2FnJk4tNnxsNW5QamZqa3lQSj1tRWwhaVRaSFRX
Sj4wYjBDciZfYkpQeXUKekhDaVcpQ08tJFQ3aTUjfGxWdHhoKnE4PD91Pm95N0ckZWZFQiR+amg5
QlU2IVF5XjhYcXxpQ1NUS1kyais/cStACnpkfjN2SFVYWkxIPjNUeVVNO3BROGJ0dTlePjN4MEo+
OCNpNXZ9JDd4SWRfZ3VDWT5OMlJwd15wKkNFTkpibCVGVwp6QHdrTFdGVld1aDN4d21ZMEhyODJC
KXhnR0ZgZyVvMmBBbENJMiRpczlpSn1YdFQmdFdyaSpocDl6a3o8NHF1Rj8KemdRdEwkNGpJTykr
TSotU0htYnt6RS1xNztWfU5wLSFwZ0treEVnYzBrfnRgJGkkKVgoZ31GcWxyN29mWUR+cG9xCnpD
aURgTnRmVXY3WVQqOHZNSC19fCMpNztZbGJYfipMRWtKZkJwNikzKyVgd30wdCtraDN2dlNVanFf
T0RTMDhLWAp6QzIwQHY1fHliYnQ9S3BKVnQweig8KVRKJVI4QF9aY15oOTBxO0c2KFkmPU5lI01u
MFMrQGM2fCRUbzFKT2Z9a1MKeilTSCt2P0RoQkk7TXVjSlopTlR+QWIpcF5fbXFuSXZsaUEyOW9r
RXg5dUJ2TGI9dl5PP3ojUUxhN05QKyQ3NEtRCnozfT5UV2U7N31wdkZaPil4OUIyO28oNUJndSEr
VSNZIVpmfnBnQSRvRng1an0re3k7KjtSSE5oZDElV15lTSlMawp6eF4pTDl2Klo0N0s4SGU/T3NM
TUt1dV4wU1U4O0A3KUtqO0Z2OEJMWkZkWCR4Q2t5Yj4pMktkJjxSZyFeYV9MUEsKemtFcVM0VXle
SHUyY31DRClhWXNIRHxPZHlgI3duOHJ3SWoxRX55P004Z0RBOVJXNmo7Z242TGo0ZlAjVnRzOVVs
CnprZCY5eU9LTlY0bF42bXs0WE9IKUAoY351Q1V2ZGgyIzJHZ2NWWF9nUkBga289e0R8TjdfYHBG
Uzcxempmfl5vbwp6WGl0fTBOdntyP21nXyg9VyUzSXNNWDtOelc9WHZpOyVRJVpGZGxeeCFqbVUk
RiRnOT13fClfJD9GdUxAdUFWMV4Kekh3Y1ohNlJKSkVOfiVDVGN8cGdxZzc/cTY5VEMqSzlrTjBh
IXxDOFpoXzRMTWN0SEZFe3hBVjF6eXoyODZKUD5OCnpmQyheeGNUZUVeS2dRcWZ7UEhWKWIjfVY+
Xyo/ZmdAQmcmbjBxXzYzfE1VTE9gIzxtaEBCU0J1RWl3VG56eXoyOAp6NkpQPk5mQzs9JDB3Mzxr
LUAzcDVeencmNHw5WlJnX1Z0Z3Z8TVVMT195MnRWfEtLK0k9S254XnxJaGRUQEFMUEgKV2VLUD9q
enl6Mjg2SlA+TmZDPkNSMClHUXpXXkF8cwoKZGVsdGEgNwpPY21ab2puOTAzaUNNeTY4SHYtY0QK
CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGYzYjJkYjcuLmZkZDIxY2IgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODcgQEAKKzIwMDktMDYtMDkgIEtlbm5ldGggUm9o
ZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aC5jaHJpc3RpYW5zZW5AZ21haWwuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0ZSBhIGRpZmZl
cmVudCBSZW5kZXJUaGVtZSBwZXIgcGFnZSwgc28gdGhhdCBSZW5kZXJUaGVtZSBoYXMKKyAgICAg
ICAgYWNjZXNzIHRvIHBhZ2Ugc3BlY2lmaWMgdGhlbWluZy4gVGhpcyBpcyBuZWVkZWQgZm9yIHRo
ZSBRdCBwb3J0LCBhcyBRdAorICAgICAgICBzdXBwb3J0cyBzZXR0aW5nIHRoZSB0aGVtZSAoc3R5
bGUpIHBlciB3aWRnZXQuCisKKyAgICAgICAgVGhpcyBjaGFuZ2Ugd2FzIHN1Z2dlc3RlZCBhbmQg
ZGlzY3Vzc2VkIHdpdGggRGF2ZSBIeWF0dC4KKworICAgICAgICBNb3JlIGRldGFpbGVkOgorCisg
ICAgICAgIDEpIENyZWF0ZSBhIHRoZW1lIHBlciBwYWdlLCBwbHVzIGEgZGVmYXVsdCBvbmUgdG8g
YWNjZXNzIGZyb20gbm9uLXBhZ2UKKyAgICAgICAgICAgZGVwZW5kZW50IGNvZGUuCisgICAgICAg
IDIpIEFkZCBhbiBhY2Nlc3NlciB0byB0aGUgdGhlbWUgZnJvbSBSZW5kZXJPYmplY3QuCisgICAg
ICAgIDMpIENoYW5nZSBhbGwgdXNlcyBvZiB0aGUgdGhlbWluZyB0byBhY2Nlc3MgdGhlIHRoZW1l
IHRocm91Z2gKKyAgICAgICAgICAgUmVuZGVyT2JqZWN0LCB1c2luZyB0aGUgZ2xvYmFsIGRlZmF1
bHQgdGhlbWUgYXMgZmFsbGJhY2ssIHdoZW4gdGhlCisgICAgICAgICAgIGRvY3VtZW50IG9mIFJl
bmRlck9iamVjdCBoYXMgbm8gcGFnZS4KKyAgICAgICAgICAgV2hlbiB3ZSBkb24ndCBoYXZlIGFj
Y2VzcyB0byBhIFJlbmRlck9iamVjdCwgdXNlIHRoZSBkZWZhdWx0IHRoZW1lLgorICAgICAgICA0
KSBNb2RpZnkgYWxsIFJlbmRlclRoZW1lIHBsYXRmb3JtIGltcGxlbWVudGF0aW9ucyB0byB3b3Jr
IHdpdGggdGhlCisgICAgICAgICAgIGFib3ZlIGNoYW5nZXMuCisKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Ym91bmRpbmdCb3hSZWN0KToKKyAgICAgICAgKiBj
c3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2FkRnVsbERlZmF1
bHRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZvckVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YWRqdXN0UmVuZGVy
U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0
eSk6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGFpbmVyTm9kZTo6c2V0QWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5v
ZGU6OnNldEhvdmVyZWQpOgorICAgICAgICAqIGVkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25Db250cm9sbGVyOjpmb2N1c2VkT3JBY3Rp
dmVTdGF0ZUNoYW5nZWQpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpwYXJzZU1hcHBl
ZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNldENoZWNrZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTElucHV0RWxlbWVudDo6c2V0SW5kZXRlcm1pbmF0ZSk6CisgICAgICAgICogcGFn
ZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c2VsZWN0aW9uTGF5b3V0Q2hh
bmdlZCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3Ojp1cGRhdGVDb250cm9sVGludHMpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6
On5QYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnRoZW1lKToKKyAgICAgICAgKiBwYWdl
L1BhZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cExpc3RCb3g6OnBhaW50Um93KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGVm
YXVsdFRoZW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OlJlbmRlclRoZW1lR3RrKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjp+UmVuZGVyVGhlbWVHdGspOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVHdGs6Omd0a0VudHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lR3RrOjpndGtUcmVlVmlldyk6CisgICAgICAgICogcGxhdGZvcm0vcXQvUmVuZGVyVGhl
bWVRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkZWZhdWx0VGhlbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWU6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vd3gvUmVuZGVy
VGhlbWVXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6Y3JlYXRlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVUZXh0Qm94OjpwYWludFRleHRNYXRjaE1hcmtlcik6CisgICAgICAgICogcmVuZGVyaW5n
L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bElucHV0RWxlbWVudDo6aGl0VGVzdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnRoZW1lKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRo
ZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjphZGp1c3RTdHlsZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpkZWZh
dWx0VGhlbWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXgu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmNyZWF0ZSk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1NYWMubW06CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZTo6Y3JlYXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJv
bWl1bVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6Y3JlYXRlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZTo6Y3JlYXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZh
cmkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmNyZWF0ZSk6CisKIDIwMDkt
MDYtMDMgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aC5jaHJpc3RpYW5zZW5A
b3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmNwcCBiL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cAppbmRleCA4YzUyMmExLi4xNzQwYjRiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0xMDA4LDcgKzEwMDgsNyBAQCBJ
bnRSZWN0IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmJvdW5kaW5nQm94UmVjdCgpIGNvbnN0
CiAgICAgICAgIEludFJlY3QgciA9IHF1YWRzW2ldLmVuY2xvc2luZ0JvdW5kaW5nQm94KCk7CiAg
ICAgICAgIGlmICghci5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGlmIChvYmotPnN0eWxlKCkt
Pmhhc0FwcGVhcmFuY2UoKSkKLSAgICAgICAgICAgICAgICB0aGVtZSgpLT5hZGp1c3RSZXBhaW50
UmVjdChvYmosIHIpOworICAgICAgICAgICAgICAgIG9iai0+dGhlbWUoKS0+YWRqdXN0UmVwYWlu
dFJlY3Qob2JqLCByKTsKICAgICAgICAgICAgIHJlc3VsdC51bml0ZShyKTsKICAgICAgICAgfQog
ICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwIGIvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKaW5kZXggYzhmZTIzNC4uMjVhMGZmMiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKKysrIGIvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTUxNiwxMyArNTE2LDEzIEBAIHN0YXRpYyB2b2lk
IGxvYWRGdWxsRGVmYXVsdFN0eWxlKCkKICAgICB9CiAKICAgICAvLyBTdHJpY3QtbW9kZSBydWxl
cy4KLSAgICBTdHJpbmcgZGVmYXVsdFJ1bGVzID0gU3RyaW5nKGh0bWw0VXNlckFnZW50U3R5bGVT
aGVldCwgc2l6ZW9mKGh0bWw0VXNlckFnZW50U3R5bGVTaGVldCkpICsgdGhlbWUoKS0+ZXh0cmFE
ZWZhdWx0U3R5bGVTaGVldCgpOworICAgIFN0cmluZyBkZWZhdWx0UnVsZXMgPSBTdHJpbmcoaHRt
bDRVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YoaHRtbDRVc2VyQWdlbnRTdHlsZVNoZWV0KSkg
KyBkZWZhdWx0VGhlbWUoKS0+ZXh0cmFEZWZhdWx0U3R5bGVTaGVldCgpOwogICAgIENTU1N0eWxl
U2hlZXQqIGRlZmF1bHRTaGVldCA9IHBhcnNlVUFTaGVldChkZWZhdWx0UnVsZXMpOwogICAgIGRl
ZmF1bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoZGVmYXVsdFNoZWV0LCBzY3JlZW5FdmFsKCkp
OwogICAgIGRlZmF1bHRQcmludFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChkZWZhdWx0U2hlZXQs
IHByaW50RXZhbCgpKTsKIAogICAgIC8vIFF1aXJrcy1tb2RlIHJ1bGVzLgotICAgIFN0cmluZyBx
dWlya3NSdWxlcyA9IFN0cmluZyhxdWlya3NVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YocXVp
cmtzVXNlckFnZW50U3R5bGVTaGVldCkpICsgdGhlbWUoKS0+ZXh0cmFRdWlya3NTdHlsZVNoZWV0
KCk7CisgICAgU3RyaW5nIHF1aXJrc1J1bGVzID0gU3RyaW5nKHF1aXJrc1VzZXJBZ2VudFN0eWxl
U2hlZXQsIHNpemVvZihxdWlya3NVc2VyQWdlbnRTdHlsZVNoZWV0KSkgKyBkZWZhdWx0VGhlbWUo
KS0+ZXh0cmFRdWlya3NTdHlsZVNoZWV0KCk7CiAgICAgQ1NTU3R5bGVTaGVldCogcXVpcmtzU2hl
ZXQgPSBwYXJzZVVBU2hlZXQocXVpcmtzUnVsZXMpOwogICAgIGRlZmF1bHRRdWlya3NTdHlsZS0+
YWRkUnVsZXNGcm9tU2hlZXQocXVpcmtzU2hlZXQsIHNjcmVlbkV2YWwoKSk7CiB9CkBAIC0xMTI4
LDcgKzExMjgsNyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yOjpz
dHlsZUZvckVsZW1lbnQoRWxlbWVudCogZSwgUmVuZGVyU3R5bAogICAgIHN0YXRpYyBib29sIGxv
YWRlZE1lZGlhU3R5bGVTaGVldDsKICAgICBpZiAoIWxvYWRlZE1lZGlhU3R5bGVTaGVldCAmJiAo
ZS0+aGFzVGFnTmFtZSh2aWRlb1RhZykgfHwgZS0+aGFzVGFnTmFtZShhdWRpb1RhZykpKSB7CiAg
ICAgICAgIGxvYWRlZE1lZGlhU3R5bGVTaGVldCA9IHRydWU7Ci0gICAgICAgIFN0cmluZyBtZWRp
YVJ1bGVzID0gU3RyaW5nKG1lZGlhQ29udHJvbHNVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2Yo
bWVkaWFDb250cm9sc1VzZXJBZ2VudFN0eWxlU2hlZXQpKSArIHRoZW1lKCktPmV4dHJhTWVkaWFD
b250cm9sc1N0eWxlU2hlZXQoKTsKKyAgICAgICAgU3RyaW5nIG1lZGlhUnVsZXMgPSBTdHJpbmco
bWVkaWFDb250cm9sc1VzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihtZWRpYUNvbnRyb2xzVXNl
ckFnZW50U3R5bGVTaGVldCkpICsgZGVmYXVsdFRoZW1lKCktPmV4dHJhTWVkaWFDb250cm9sc1N0
eWxlU2hlZXQoKTsKICAgICAgICAgQ1NTU3R5bGVTaGVldCogbWVkaWFDb250cm9sc1NoZWV0ID0g
cGFyc2VVQVNoZWV0KG1lZGlhUnVsZXMpOwogICAgICAgICBkZWZhdWx0U3R5bGUtPmFkZFJ1bGVz
RnJvbVNoZWV0KG1lZGlhQ29udHJvbHNTaGVldCwgc2NyZWVuRXZhbCgpKTsKICAgICAgICAgZGVm
YXVsdFByaW50U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KG1lZGlhQ29udHJvbHNTaGVldCwgcHJp
bnRFdmFsKCkpOwpAQCAtMTU3OSw3ICsxNTc5LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjph
ZGp1c3RSZW5kZXJTdHlsZShSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQgKmUpCiAKICAgICAv
LyBMZXQgdGhlIHRoZW1lIGFsc28gaGF2ZSBhIGNyYWNrIGF0IGFkanVzdGluZyB0aGUgc3R5bGUu
CiAgICAgaWYgKHN0eWxlLT5oYXNBcHBlYXJhbmNlKCkpCi0gICAgICAgIHRoZW1lKCktPmFkanVz
dFN0eWxlKHRoaXMsIHN0eWxlLCBlLCBtX2hhc1VBQXBwZWFyYW5jZSwgbV9ib3JkZXJEYXRhLCBt
X2JhY2tncm91bmREYXRhLCBtX2JhY2tncm91bmRDb2xvcik7CisgICAgICAgIGRlZmF1bHRUaGVt
ZSgpLT5hZGp1c3RTdHlsZSh0aGlzLCBzdHlsZSwgZSwgbV9oYXNVQUFwcGVhcmFuY2UsIG1fYm9y
ZGVyRGF0YSwgbV9iYWNrZ3JvdW5kRGF0YSwgbV9iYWNrZ3JvdW5kQ29sb3IpOwogCiAjaWYgRU5B
QkxFKFNWRykKICAgICBpZiAoZSAmJiBlLT5pc1NWR0VsZW1lbnQoKSkgewpAQCAtNDM3Niw3ICs0
Mzc2LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludCBpZCwgQ1NT
VmFsdWUgKnZhbHVlKQogICAgICAgICAgICAgbV9saW5lSGVpZ2h0VmFsdWUgPSAwOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uOwotICAg
ICAgICAgICAgdGhlbWUoKS0+c3lzdGVtRm9udChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSwg
Zm9udERlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgIGRlZmF1bHRUaGVtZSgpLT5zeXN0ZW1Gb250
KHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpLCBmb250RGVzY3JpcHRpb24pOwogIAogICAgICAg
ICAgICAgLy8gRG91YmxlLWNoZWNrIGFuZCBzZWUgaWYgdGhlIHRoZW1lIGRpZCBhbnl0aGluZy4g
IElmIG5vdCwgZG9uJ3QgYm90aGVyIHVwZGF0aW5nIHRoZSBmb250LgogICAgICAgICAgICAgaWYg
KGZvbnREZXNjcmlwdGlvbi5pc0Fic29sdXRlU2l6ZSgpKSB7CkBAIC01ODExLDcgKzU4MTEsNyBA
QCBzdGF0aWMgQ29sb3IgY29sb3JGb3JDU1NWYWx1ZShpbnQgY3NzVmFsdWVJZCkKICAgICAgICAg
aWYgKGNvbC0+Y3NzVmFsdWVJZCA9PSBjc3NWYWx1ZUlkKQogICAgICAgICAgICAgcmV0dXJuIGNv
bC0+Y29sb3I7CiAgICAgfQotICAgIHJldHVybiB0aGVtZSgpLT5zeXN0ZW1Db2xvcihjc3NWYWx1
ZUlkKTsKKyAgICByZXR1cm4gZGVmYXVsdFRoZW1lKCktPnN5c3RlbUNvbG9yKGNzc1ZhbHVlSWQp
OwogfQogCiBDb2xvciBDU1NTdHlsZVNlbGVjdG9yOjpnZXRDb2xvckZyb21QcmltaXRpdmVWYWx1
ZShDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUpCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCmlu
ZGV4IDI1NzM5MDguLjIwY2M3YTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5v
ZGUuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBAIC03OTgsNyArNzk4
LDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpzZXRBY3RpdmUoYm9vbCBkb3duLCBib29sIHBhdXNl
KQogICAgICAgICBpZiAocmVhY3RzVG9QcmVzcykKICAgICAgICAgICAgIHNldE5lZWRzU3R5bGVS
ZWNhbGMoKTsKICAgICAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKS0+
aGFzQXBwZWFyYW5jZSgpKSB7Ci0gICAgICAgICAgICBpZiAodGhlbWUoKS0+c3RhdGVDaGFuZ2Vk
KHJlbmRlcmVyKCksIFByZXNzZWRTdGF0ZSkpCisgICAgICAgICAgICBpZiAocmVuZGVyZXIoKS0+
dGhlbWUoKS0+c3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIFByZXNzZWRTdGF0ZSkpCiAgICAgICAg
ICAgICAgICAgcmVhY3RzVG9QcmVzcyA9IHRydWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHJl
YWN0c1RvUHJlc3MgJiYgcGF1c2UpIHsKQEAgLTg0MCw3ICs4NDAsNyBAQCB2b2lkIENvbnRhaW5l
ck5vZGU6OnNldEhvdmVyZWQoYm9vbCBvdmVyKQogICAgICAgICBpZiAocmVuZGVyZXIoKS0+c3R5
bGUoKS0+YWZmZWN0ZWRCeUhvdmVyUnVsZXMoKSkKICAgICAgICAgICAgIHNldE5lZWRzU3R5bGVS
ZWNhbGMoKTsKICAgICAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKS0+
aGFzQXBwZWFyYW5jZSgpKQotICAgICAgICAgICAgdGhlbWUoKS0+c3RhdGVDaGFuZ2VkKHJlbmRl
cmVyKCksIEhvdmVyU3RhdGUpOworICAgICAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS0+c3Rh
dGVDaGFuZ2VkKHJlbmRlcmVyKCksIEhvdmVyU3RhdGUpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9lZGl0
aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDFkMzZmNTEuLjc2Yzc4MjUgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcAorKysgYi9XZWJD
b3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAKQEAgLTQ2LDcgKzQ2LDYgQEAKICNp
bmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJh
bmdlLmgiCi0jaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3Lmgi
CiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVHlwaW5nQ29tbWFuZC5oIgpA
QCAtMTI2OCw3ICsxMjY3LDcgQEAgdm9pZCBTZWxlY3Rpb25Db250cm9sbGVyOjpmb2N1c2VkT3JB
Y3RpdmVTdGF0ZUNoYW5nZWQoKQogICAgICAgICBub2RlLT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7
CiAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKSkK
ICAgICAgICAgICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+c3R5bGUoKS0+aGFzQXBwZWFy
YW5jZSgpKQotICAgICAgICAgICAgICAgIHRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJlciwg
Rm9jdXNTdGF0ZSk7CisgICAgICAgICAgICAgICAgcmVuZGVyZXItPnRoZW1lKCktPnN0YXRlQ2hh
bmdlZChyZW5kZXJlciwgRm9jdXNTdGF0ZSk7CiAgICAgfQogCiAgICAgLy8gU2VjdXJlIGtleWJv
YXJkIGVudHJ5IGlzIHNldCBieSB0aGUgYWN0aXZlIGZyYW1lLgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDM2ZDIwYWMuLmI5ODVlNzUgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBIVE1MRm9y
bUNvbnRyb2xFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUgKmF0
dHIpCiAgICAgICAgIGlmIChvbGREaXNhYmxlZCAhPSBtX2Rpc2FibGVkKSB7CiAgICAgICAgICAg
ICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgICAgICAgICBpZiAocmVuZGVyZXIoKSAmJiBy
ZW5kZXJlcigpLT5zdHlsZSgpLT5oYXNBcHBlYXJhbmNlKCkpCi0gICAgICAgICAgICAgICAgdGhl
bWUoKS0+c3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIEVuYWJsZWRTdGF0ZSk7CisgICAgICAgICAg
ICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS0+c3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIEVuYWJs
ZWRTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSByZWFk
b25seUF0dHIpIHsKICAgICAgICAgYm9vbCBvbGRSZWFkT25seSA9IG1fcmVhZE9ubHk7CkBAIC03
OSw3ICs3OSw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRy
aWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKQogICAgICAgICBpZiAob2xkUmVhZE9ubHkgIT0g
bV9yZWFkT25seSkgewogICAgICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogICAgICAg
ICAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKS0+aGFzQXBwZWFyYW5j
ZSgpKQotICAgICAgICAgICAgICAgIHRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBS
ZWFkT25seVN0YXRlKTsKKyAgICAgICAgICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLT5zdGF0
ZUNoYW5nZWQocmVuZGVyZXIoKSwgUmVhZE9ubHlTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9IGVs
c2UKICAgICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IGRiYzgxOGIuLmIzYzc1NjYgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAKQEAgLTg4MSw5ICs4ODEsOSBAQCB2b2lkIEhUTUxJbnB1dEVsZW1l
bnQ6OnNldENoZWNrZWQoYm9vbCBub3dDaGVja2VkLCBib29sIHNlbmRDaGFuZ2VFdmVudCkKICAg
ICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAKICAgICBjaGVja2VkUmFkaW9CdXR0b25zKHRoaXMp
LmFkZEJ1dHRvbih0aGlzKTsKLSAgICAKKwogICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVy
KCktPnN0eWxlKCktPmhhc0FwcGVhcmFuY2UoKSkKLSAgICAgICAgdGhlbWUoKS0+c3RhdGVDaGFu
Z2VkKHJlbmRlcmVyKCksIENoZWNrZWRTdGF0ZSk7CisgICAgICAgIHJlbmRlcmVyKCktPnRoZW1l
KCktPnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBDaGVja2VkU3RhdGUpOwogCiAgICAgLy8gT25s
eSBzZW5kIGEgY2hhbmdlIGV2ZW50IGZvciBpdGVtcyBpbiB0aGUgZG9jdW1lbnQgKGF2b2lkIGZp
cmluZyBkdXJpbmcKICAgICAvLyBwYXJzaW5nKSBhbmQgZG9uJ3Qgc2VuZCBhIGNoYW5nZSBldmVu
dCBmb3IgYSByYWRpbyBidXR0b24gdGhhdCdzIGdldHRpbmcKQEAgLTkwNSw3ICs5MDUsNyBAQCB2
b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldEluZGV0ZXJtaW5hdGUoYm9vbCBfaW5kZXRlcm1pbmF0
ZSkKICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAKICAgICBpZiAocmVuZGVyZXIoKSAmJiBy
ZW5kZXJlcigpLT5zdHlsZSgpLT5oYXNBcHBlYXJhbmNlKCkpCi0gICAgICAgIHRoZW1lKCktPnN0
YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBDaGVja2VkU3RhdGUpOworICAgICAgICByZW5kZXJlcigp
LT50aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgQ2hlY2tlZFN0YXRlKTsKIH0KIAog
aW50IEhUTUxJbnB1dEVsZW1lbnQ6OnNpemUoKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
YWdlL0ZyYW1lLmNwcCBiL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggYTM2YzFhYS4uYTIy
OGJmOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9XZWJDb3JlL3Bh
Z2UvRnJhbWUuY3BwCkBAIC02MjIsNyArNjIyLDcgQEAgdm9pZCBGcmFtZTo6c2VsZWN0aW9uTGF5
b3V0Q2hhbmdlZCgpCiAgICAgLy8gU3RhcnQgYmxpbmtpbmcgd2l0aCBhIGJsYWNrIGNhcmV0LiBC
ZSBzdXJlIG5vdCB0byByZXN0YXJ0IGlmIHdlJ3JlCiAgICAgLy8gYWxyZWFkeSBibGlua2luZyBp
biB0aGUgcmlnaHQgbG9jYXRpb24uCiAgICAgaWYgKHNob3VsZEJsaW5rICYmICFtX2NhcmV0Qmxp
bmtUaW1lci5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgIGlmIChkb3VibGUgYmxpbmtJbnRlcnZhbCA9
IHRoZW1lKCktPmNhcmV0QmxpbmtJbnRlcnZhbCgpKQorICAgICAgICBpZiAoZG91YmxlIGJsaW5r
SW50ZXJ2YWwgPSBwYWdlKCktPnRoZW1lKCktPmNhcmV0QmxpbmtJbnRlcnZhbCgpKQogICAgICAg
ICAgICAgbV9jYXJldEJsaW5rVGltZXIuc3RhcnRSZXBlYXRpbmcoYmxpbmtJbnRlcnZhbCk7CiAK
ICAgICAgICAgaWYgKCFtX2NhcmV0UGFpbnQpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggZjY1MDFiZS4u
MzhiMDVlOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTEyOTYsMTAgKzEyOTYsMTAgQEAgdm9pZCBGcmFt
ZVZpZXc6OnVwZGF0ZUNvbnRyb2xUaW50cygpCiAgICAgLy8gdG8gZGVmaW5lIHdoZW4gY29udHJv
bHMgZ2V0IHRoZSB0aW50IGFuZCB0byBjYWxsIHRoaXMgZnVuY3Rpb24gd2hlbiB0aGF0IGNoYW5n
ZXMuCiAgICAgCiAgICAgLy8gT3B0aW1pemUgdGhlIGNvbW1vbiBjYXNlIHdoZXJlIHdlIGJyaW5n
IGEgd2luZG93IHRvIHRoZSBmcm9udCB3aGlsZSBpdCdzIHN0aWxsIGVtcHR5LgotICAgIGlmICgh
bV9mcmFtZSB8fCBtX2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCkuaXNFbXB0eSgpKSAKKyAgICBpZiAo
IW1fZnJhbWUgfHwgbV9mcmFtZS0+bG9hZGVyKCktPnVybCgpLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuOwotICAgIAotICAgIGlmICh0aGVtZSgpLT5zdXBwb3J0c0NvbnRyb2xUaW50cygpICYm
IG1fZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpKSB7CisKKyAgICBpZiAobV9mcmFtZS0+Y29udGVu
dFJlbmRlcmVyKCkgJiYgbV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCktPnRoZW1lKCktPnN1cHBv
cnRzQ29udHJvbFRpbnRzKCkpIHsKICAgICAgICAgaWYgKG5lZWRzTGF5b3V0KCkpCiAgICAgICAg
ICAgICBsYXlvdXQoKTsKICAgICAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIGNvbnN0IG5v
Q29udGV4dCA9IDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKaW5kZXggYTE0MzQzZC4uYzhhZjFlZCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNDYsNiArNDYs
NyBAQAogI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIu
aCIKICNpbmNsdWRlICJSZW5kZXJXaWRnZXQuaCIKKyNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgog
I2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTZWxlY3Rpb25Db250cm9s
bGVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTEyMCw2ICsxMjEsNyBAQCBQYWdlOjpQ
YWdlKENocm9tZUNsaWVudCogY2hyb21lQ2xpZW50LCBDb250ZXh0TWVudUNsaWVudCogY29udGV4
dE1lbnVDbGllbnQsIEVkaQogICAgICwgbV9kZWJ1Z2dlcigwKQogICAgICwgbV9jdXN0b21IVE1M
VG9rZW5pemVyVGltZURlbGF5KC0xKQogICAgICwgbV9jdXN0b21IVE1MVG9rZW5pemVyQ2h1bmtT
aXplKC0xKQorICAgICwgbV90aGVtZSgwKQogewogICAgIGlmICghYWxsUGFnZXMpIHsKICAgICAg
ICAgYWxsUGFnZXMgPSBuZXcgSGFzaFNldDxQYWdlKj47CkBAIC0xNTMsNiArMTU1LDggQEAgUGFn
ZTo6flBhZ2UoKQogICAgICAgICBtX3BhcmVudEluc3BlY3RvckNvbnRyb2xsZXItPnBhZ2VEZXN0
cm95ZWQoKTsKICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPmluc3BlY3RlZFBhZ2VEZXN0cm95
ZWQoKTsKIAorICAgIGRlbGV0ZSBtX3RoZW1lOworCiAgICAgbV9iYWNrRm9yd2FyZExpc3QtPmNs
b3NlKCk7CiAKICNpZm5kZWYgTkRFQlVHCkBAIC0xNjUsNiArMTY5LDE0IEBAIFBhZ2U6On5QYWdl
KCkKICNlbmRpZgogfQogCitSZW5kZXJUaGVtZSogUGFnZTo6dGhlbWUoKQoreworICAgIGlmICgh
bV90aGVtZSkKKyAgICAgICAgbV90aGVtZSA9IFJlbmRlclRoZW1lOjpjcmVhdGUodGhpcyk7CisK
KyAgICByZXR1cm4gbV90aGVtZTsKK30KKwogdm9pZCBQYWdlOjpzZXRNYWluRnJhbWUoUGFzc1Jl
ZlB0cjxGcmFtZT4gbWFpbkZyYW1lKQogewogICAgIEFTU0VSVCghbV9tYWluRnJhbWUpOyAvLyBT
aG91bGQgb25seSBiZSBjYWxsZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BhZ2UvUGFnZS5oIGIvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCBlZWRkMjRjLi4x
YTkwNDY3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1dlYkNvcmUvcGFn
ZS9QYWdlLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgi
CiAjaW5jbHVkZSAiTGlua0hhc2guaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2lu
Y2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRl
IDx3dGYvT3duUHRyLmg+CiAKQEAgLTc4LDcgKzc5LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgICAgIFBhZ2UoQ2hyb21lQ2xpZW50KiwgQ29udGV4dE1lbnVDbGllbnQqLCBFZGl0b3JD
bGllbnQqLCBEcmFnQ2xpZW50KiwgSW5zcGVjdG9yQ2xpZW50Kik7CiAgICAgICAgIH5QYWdlKCk7
Ci0gICAgICAgIAorCisgICAgICAgIFJlbmRlclRoZW1lKiB0aGVtZSgpOworCiAgICAgICAgIHN0
YXRpYyB2b2lkIHJlZnJlc2hQbHVnaW5zKGJvb2wgcmVsb2FkKTsKICAgICAgICAgUGx1Z2luRGF0
YSogcGx1Z2luRGF0YSgpIGNvbnN0OwogCkBAIC0yMTcsNiArMjIwLDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAgICAgICAgIG11dGFibGUgUmVmUHRyPFBsdWdpbkRhdGE+IG1fcGx1Z2luRGF0
YTsKIAorICAgICAgICBSZW5kZXJUaGVtZSogbV90aGVtZTsKKwogICAgICAgICBFZGl0b3JDbGll
bnQqIG1fZWRpdG9yQ2xpZW50OwogCiAgICAgICAgIGludCBtX2ZyYW1lQ291bnQ7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcCBiL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwCmluZGV4IGIwMGI2
MjUuLjkyYzNjYmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBN
ZW51Q2hyb21pdW0uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51
Q2hyb21pdW0uY3BwCkBAIC03NzEsOCArNzcxLDggQEAgdm9pZCBQb3B1cExpc3RCb3g6OnBhaW50
Um93KEdyYXBoaWNzQ29udGV4dCogZ2MsIGNvbnN0IEludFJlY3QmIHJlY3QsIGludCByb3dJbmQK
ICAgICAvLyBQYWludCBiYWNrZ3JvdW5kCiAgICAgQ29sb3IgYmFja0NvbG9yLCB0ZXh0Q29sb3I7
CiAgICAgaWYgKHJvd0luZGV4ID09IG1fc2VsZWN0ZWRJbmRleCkgewotICAgICAgICBiYWNrQ29s
b3IgPSB0aGVtZSgpLT5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCk7Ci0g
ICAgICAgIHRleHRDb2xvciA9IHRoZW1lKCktPmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3Jv
dW5kQ29sb3IoKTsKKyAgICAgICAgYmFja0NvbG9yID0gZGVmYXVsdFRoZW1lKCktPmFjdGl2ZUxp
c3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICAgICAgdGV4dENvbG9yID0gZGVm
YXVsdFRoZW1lKCktPmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKTsKICAg
ICB9IGVsc2UgewogICAgICAgICBiYWNrQ29sb3IgPSBzdHlsZS5iYWNrZ3JvdW5kQ29sb3IoKTsK
ICAgICAgICAgdGV4dENvbG9yID0gc3R5bGUuZm9yZWdyb3VuZENvbG9yKCk7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAgYi9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAKaW5kZXggYTk1ZjU1Ny4uN2QyNDc3NiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcApAQCAtMzQsMTMgKzM0LDEyIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyVGhlbWUqIHRoZW1lKCkKK1JlbmRlclRoZW1l
KiBSZW5kZXJUaGVtZTo6Y3JlYXRlKFBhZ2UqIHBhZ2UpCiB7Ci0gICAgc3RhdGljIFJlbmRlclRo
ZW1lR3RrIGd0a1RoZW1lOwotICAgIHJldHVybiAmZ3RrVGhlbWU7CisgICAgcmV0dXJuIG5ldyBS
ZW5kZXJUaGVtZUd0aygpOwogfQogCi1zdGF0aWMgYm9vbCBtb3pHdGtJbml0aWFsaXplZCA9IGZh
bHNlOworc3RhdGljIGludCBtb3pHdGtSZWZDb3VudCA9IDA7CiAKIFJlbmRlclRoZW1lR3RrOjpS
ZW5kZXJUaGVtZUd0aygpCiAgICAgOiBtX2d0a1dpbmRvdygwKQpAQCAtNDgsMTggKzQ3LDE4IEBA
IFJlbmRlclRoZW1lR3RrOjpSZW5kZXJUaGVtZUd0aygpCiAgICAgLCBtX2d0a0VudHJ5KDApCiAg
ICAgLCBtX2d0a1RyZWVWaWV3KDApCiB7Ci0gICAgaWYgKCFtb3pHdGtJbml0aWFsaXplZCkgewot
ICAgICAgICBtb3pHdGtJbml0aWFsaXplZCA9IHRydWU7CisgICAgaWYgKCFtb3pHdGtSZWZDb3Vu
dCkKICAgICAgICAgbW96X2d0a19pbml0KCk7Ci0gICAgfQorCisgICAgKyttb3pHdGtSZWZDb3Vu
dDsKIH0KIAogUmVuZGVyVGhlbWVHdGs6On5SZW5kZXJUaGVtZUd0aygpCiB7Ci0gICAgaWYgKG1v
ekd0a0luaXRpYWxpemVkKSB7CisgICAgLS1tb3pHdGtSZWZDb3VudDsKKworICAgIGlmICghbW96
R3RrUmVmQ291bnQpCiAgICAgICAgIG1vel9ndGtfc2h1dGRvd24oKTsKLSAgICAgICAgbW96R3Rr
SW5pdGlhbGl6ZWQgPSBmYWxzZTsKLSAgICB9CiB9CiAKIHN0YXRpYyBib29sIHN1cHBvcnRzRm9j
dXMoQ29udHJvbFBhcnQgYXBwZWFyYW5jZSkKQEAgLTQ3MCw3ICs0NjksNyBAQCBHdGtXaWRnZXQq
IFJlbmRlclRoZW1lR3RrOjpndGtFbnRyeSgpIGNvbnN0CiAgICAgICAgIHJldHVybiBtX2d0a0Vu
dHJ5OwogCiAgICAgbV9ndGtFbnRyeSA9IGd0a19lbnRyeV9uZXcoKTsKLSAgICBnX3NpZ25hbF9j
b25uZWN0KG1fZ3RrRW50cnksICJzdHlsZS1zZXQiLCBHX0NBTExCQUNLKGd0a1N0eWxlU2V0Q2Fs
bGJhY2spLCB0aGVtZSgpKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fZ3RrRW50cnksICJzdHls
ZS1zZXQiLCBHX0NBTExCQUNLKGd0a1N0eWxlU2V0Q2FsbGJhY2spLCBjb25zdF9jYXN0PFJlbmRl
clRoZW1lR3RrKj4odGhpcykpOwogICAgIGd0a19jb250YWluZXJfYWRkKGd0a0NvbnRhaW5lcigp
LCBtX2d0a0VudHJ5KTsKICAgICBndGtfd2lkZ2V0X3JlYWxpemUobV9ndGtFbnRyeSk7CiAKQEAg
LTQ4Myw3ICs0ODIsNyBAQCBHdGtXaWRnZXQqIFJlbmRlclRoZW1lR3RrOjpndGtUcmVlVmlldygp
IGNvbnN0CiAgICAgICAgIHJldHVybiBtX2d0a1RyZWVWaWV3OwogCiAgICAgbV9ndGtUcmVlVmll
dyA9IGd0a190cmVlX3ZpZXdfbmV3KCk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChtX2d0a1RyZWVW
aWV3LCAic3R5bGUtc2V0IiwgR19DQUxMQkFDSyhndGtTdHlsZVNldENhbGxiYWNrKSwgdGhlbWUo
KSk7CisgICAgZ19zaWduYWxfY29ubmVjdChtX2d0a1RyZWVWaWV3LCAic3R5bGUtc2V0IiwgR19D
QUxMQkFDSyhndGtTdHlsZVNldENhbGxiYWNrKSwgY29uc3RfY2FzdDxSZW5kZXJUaGVtZUd0ayo+
KHRoaXMpKTsKICAgICBndGtfY29udGFpbmVyX2FkZChndGtDb250YWluZXIoKSwgbV9ndGtUcmVl
Vmlldyk7CiAgICAgZ3RrX3dpZGdldF9yZWFsaXplKG1fZ3RrVHJlZVZpZXcpOwogCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuY3BwIGIvV2ViQ29yZS9wbGF0
Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNwcAppbmRleCBiMTZjYmM0Li45ZjhlNjBiIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuY3BwCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5jcHAKQEAgLTEwNiwxMCArMTA2LDkgQEAgU3R5bGVQ
YWludGVyOjp+U3R5bGVQYWludGVyKCkKICAgICB9CiB9CiAKLVJlbmRlclRoZW1lKiB0aGVtZSgp
CitSZW5kZXJUaGVtZSogUmVuZGVyVGhlbWU6OmNyZWF0ZShQYWdlKiBwYWdlKQogewotICAgIHN0
YXRpYyBSZW5kZXJUaGVtZVF0IHJ0OwotICAgIHJldHVybiAmcnQ7CisgICAgcmV0dXJuIG5ldyBS
ZW5kZXJUaGVtZVF0KCk7CiB9CiAKIFJlbmRlclRoZW1lUXQ6OlJlbmRlclRoZW1lUXQoKQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93eC9SZW5kZXJUaGVtZVd4LmNwcCBiL1dlYkNvcmUv
cGxhdGZvcm0vd3gvUmVuZGVyVGhlbWVXeC5jcHAKaW5kZXggYTI2NDE2Zi4uOTUxNDg4MCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93eC9SZW5kZXJUaGVtZVd4LmNwcAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL3d4L1JlbmRlclRoZW1lV3guY3BwCkBAIC0xMTksMTAgKzExOSw5IEBAIHBy
aXZhdGU6CiAjZGVmaW5lIFBPUFVQX0lOVEVSTkFMX1BBRERJTkdfUklHSFQgMjAKICNlbmRpZgog
Ci1SZW5kZXJUaGVtZSogdGhlbWUoKQorUmVuZGVyVGhlbWUqIFJlbmRlclRoZW1lOjpjcmVhdGUo
UGFnZSopCiB7Ci0gICAgc3RhdGljIFJlbmRlclRoZW1lV3ggcnQ7Ci0gICAgcmV0dXJuICZydDsK
KyAgICByZXR1cm4gbmV3IFJlbmRlclRoZW1lV3goKTsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZVd4
Ojppc0NvbnRyb2xTdHlsZWQoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBCb3JkZXJE
YXRhJiBib3JkZXIsCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94
LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCmluZGV4IDQxOGJlMTUu
LjMwZDE5MmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3Bw
CisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC0zMiw3ICszMiw2
IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckFyZW5hLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyQmxvY2suaCIKLSNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlRl
eHQuaCIKICNpbmNsdWRlICJicmVha19saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9BbHdheXNJbmxp
bmUuaD4KQEAgLTc3MCw4ICs3NjksOCBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50VGV4dE1h
dGNoTWFya2VyKEdyYXBoaWNzQ29udGV4dCogcHQsIGludCB0eCwgaW50IHR5LCBEbwogICAgIC8v
IE9wdGlvbmFsbHkgaGlnaGxpZ2h0IHRoZSB0ZXh0CiAgICAgaWYgKHJlbmRlcmVyKCktPmRvY3Vt
ZW50KCktPmZyYW1lKCktPm1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoKSkgewogICAg
ICAgICBDb2xvciBjb2xvciA9IG1hcmtlci5hY3RpdmVNYXRjaCA/Ci0gICAgICAgICAgICB0aGVt
ZSgpLT5wbGF0Zm9ybUFjdGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpIDoKLSAgICAgICAg
ICAgIHRoZW1lKCktPnBsYXRmb3JtSW5hY3RpdmVUZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IoKTsK
KyAgICAgICAgICAgIHJlbmRlcmVyKCktPnRoZW1lKCktPnBsYXRmb3JtQWN0aXZlVGV4dFNlYXJj
aEhpZ2hsaWdodENvbG9yKCkgOgorICAgICAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS0+cGxh
dGZvcm1JbmFjdGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpOwogICAgICAgICBwdC0+c2F2
ZSgpOwogICAgICAgICB1cGRhdGVHcmFwaGljc0NvbnRleHQocHQsIGNvbG9yLCBjb2xvciwgMCk7
ICAvLyBEb24ndCBkcmF3IHRleHQgYXQgYWxsIQogICAgICAgICBwdC0+Y2xpcChJbnRSZWN0KHR4
ICsgbV94LCB0eSArIHksIG1fd2lkdGgsIGgpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVy
aW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29u
dHJvbEVsZW1lbnRzLmNwcAppbmRleCA1Y2Q5MzYzLi43YWE4YzFhIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3JlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKKysrIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCkBAIC0xNTksNyArMTU5LDcgQEAgdm9pZCBN
ZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6OnVwZGF0ZVN0eWxlKCkKIGJvb2wgTWVkaWFDb250cm9s
SW5wdXRFbGVtZW50OjpoaXRUZXN0KGNvbnN0IEludFBvaW50JiBhYnNQb2ludCkKIHsKICAgICBp
ZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpLT5oYXNBcHBlYXJhbmNlKCkpCi0g
ICAgICAgIHJldHVybiB0aGVtZSgpLT5oaXRUZXN0TWVkaWFDb250cm9sUGFydChyZW5kZXJlcigp
LCBhYnNQb2ludCk7CisgICAgICAgIHJldHVybiByZW5kZXJlcigpLT50aGVtZSgpLT5oaXRUZXN0
TWVkaWFDb250cm9sUGFydChyZW5kZXJlcigpLCBhYnNQb2ludCk7CiAKICAgICByZXR1cm4gZmFs
c2U7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCBmODEwMThkLi45ZmNiMjg0
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTQzLDcgKzQzLDYgQEAKICNpbmNs
dWRlICJSZW5kZXJUYWJsZUNlbGwuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZUNvbC5oIgogI2lu
Y2x1ZGUgIlJlbmRlclRhYmxlUm93LmgiCi0jaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNs
dWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtU3RhdGUuaCIKICNpbmNsdWRl
IDxhbGdvcml0aG0+CkBAIC0yMTQsNiArMjEzLDE0IEBAIFJlbmRlck9iamVjdDo6flJlbmRlck9i
amVjdCgpCiAjZW5kaWYKIH0KIAorUmVuZGVyVGhlbWUqIFJlbmRlck9iamVjdDo6dGhlbWUoKSBj
b25zdAoreworICAgIGlmIChkb2N1bWVudCgpLT5wYWdlKCkpCisgICAgICAgIHJldHVybiBkb2N1
bWVudCgpLT5wYWdlKCktPnRoZW1lKCk7CisKKyAgICByZXR1cm4gZGVmYXVsdFRoZW1lKCk7Cit9
CisKIGJvb2wgUmVuZGVyT2JqZWN0Ojppc0Rlc2NlbmRhbnRPZihjb25zdCBSZW5kZXJPYmplY3Qq
IG9iaikgY29uc3QKIHsKICAgICBmb3IgKGNvbnN0IFJlbmRlck9iamVjdCogciA9IHRoaXM7IHI7
IHIgPSByLT5tX3BhcmVudCkgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCAwOTAxYmZm
Li40MjBmNGFkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAor
KysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApAQCAtNDgsNiArNDgsNyBAQCBj
bGFzcyBSZW5kZXJJbmxpbmU7CiBjbGFzcyBSZW5kZXJCbG9jazsKIGNsYXNzIFJlbmRlckZsb3c7
CiBjbGFzcyBSZW5kZXJMYXllcjsKK2NsYXNzIFJlbmRlclRoZW1lOwogY2xhc3MgVHJhbnNmb3Jt
U3RhdGU7CiBjbGFzcyBWaXNpYmxlUG9zaXRpb247CiAKQEAgLTEzNyw2ICsxMzgsOCBAQCBwdWJs
aWM6CiAgICAgUmVuZGVyT2JqZWN0KE5vZGUqKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJPYmplY3Qo
KTsKIAorICAgIFJlbmRlclRoZW1lKiB0aGVtZSgpIGNvbnN0OworCiAgICAgdmlydHVhbCBjb25z
dCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgPSAwOwogCiAgICAgUmVuZGVyT2JqZWN0KiBwYXJl
bnQoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudDsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWUuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3Bw
CmluZGV4IGU2N2U2MTIuLjUyMzgyNjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKQEAg
LTQ5LDYgKzQ5LDEzIEBAIFJlbmRlclRoZW1lOjpSZW5kZXJUaGVtZSgpCiB7CiB9CiAKKy8vIFdo
ZW4gdGhlIHRoZW1lIGlzIG5lZWRlZCBpbiBub24tcGFnZSBkZXBlbmRlbnQgY29kZSwgdGhlIGRl
ZmF1bHRUaGVtZSgpIGlzIHVzZWQgYXMgZmFsbGJhY2suCitSZW5kZXJUaGVtZSogZGVmYXVsdFRo
ZW1lKCkKK3sKKyAgICBzdGF0aWMgUmVuZGVyVGhlbWUqIHJ0ID0gUmVuZGVyVGhlbWU6OmNyZWF0
ZSgpOworICAgIHJldHVybiBydDsKK30KKwogdm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0U3R5bGUo
Q1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCog
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgVUFIYXNBcHBlYXJhbmNlLCBj
b25zdCBCb3JkZXJEYXRhJiBib3JkZXIsIGNvbnN0IEZpbGxMYXllciYgYmFja2dyb3VuZCwgY29u
c3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcikKIHsKQEAgLTYyLDcgKzY5LDcgQEAgdm9pZCBSZW5k
ZXJUaGVtZTo6YWRqdXN0U3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0
eWxlKiBzdHlsZSwgRWwKICAgICBlbHNlIGlmIChzdHlsZS0+ZGlzcGxheSgpID09IENPTVBBQ1Qg
fHwgc3R5bGUtPmRpc3BsYXkoKSA9PSBSVU5fSU4gfHwgc3R5bGUtPmRpc3BsYXkoKSA9PSBMSVNU
X0lURU0gfHwgc3R5bGUtPmRpc3BsYXkoKSA9PSBUQUJMRSkKICAgICAgICAgc3R5bGUtPnNldERp
c3BsYXkoQkxPQ0spOwogCi0gICAgaWYgKFVBSGFzQXBwZWFyYW5jZSAmJiB0aGVtZSgpLT5pc0Nv
bnRyb2xTdHlsZWQoc3R5bGUsIGJvcmRlciwgYmFja2dyb3VuZCwgYmFja2dyb3VuZENvbG9yKSkg
eworICAgIGlmIChVQUhhc0FwcGVhcmFuY2UgJiYgaXNDb250cm9sU3R5bGVkKHN0eWxlLCBib3Jk
ZXIsIGJhY2tncm91bmQsIGJhY2tncm91bmRDb2xvcikpIHsKICAgICAgICAgaWYgKHBhcnQgPT0g
TWVudWxpc3RQYXJ0KSB7CiAgICAgICAgICAgICBzdHlsZS0+c2V0QXBwZWFyYW5jZShNZW51bGlz
dEJ1dHRvblBhcnQpOwogICAgICAgICAgICAgcGFydCA9IE1lbnVsaXN0QnV0dG9uUGFydDsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmggYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZS5oCmluZGV4IGJjODFkNGQuLmRhNTRkODcgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWUuaApAQCAtMjksOCArMjksMTAgQEAKICNlbHNlCiAjaW5jbHVkZSAiVGhlbWVUeXBl
cy5oIgogI2VuZGlmCisjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJTY3JvbGxU
eXBlcy5oIgogCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRWxlbWVudDsKQEAgLTQz
LDYgKzQ1LDEyIEBAIHB1YmxpYzoKICAgICBSZW5kZXJUaGVtZSgpOwogICAgIHZpcnR1YWwgflJl
bmRlclRoZW1lKCkgeyB9CiAKKyAgICAvLyBGdW5jdGlvbiB0byBjcmVhdGUgYSB0aGVtZS4gQSB0
aGVtZSBpcyBjcmVhdGVkIGZvciBlYWNoIHBhZ2UgYnkgdXNpbmcgdGhlIFJlbmRlclRoZW1lOjpj
cmVhdGUoKSBtZXRob2QuCisgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyB0byBiZSBpbXBsZW1lbnRl
ZCBpbiB5b3VyIHBsYXRmb3JtLXNwZWNpZmljIHRoZW1lIGltcGxlbWVudGF0aW9uIHRvIGhhbmQg
YmFjayB0aGUKKyAgICAvLyBhcHByb3ByaWF0ZSBwbGF0Zm9ybSB0aGVtZS4gV2hlbiB0aGUgdGhl
bWUgaXMgbmVlZGVkIGluIG5vbi1wYWdlIGRlcGVuZGVudCBjb2RlLCBhIGRlZmF1bHQgdGhlbWUg
aXMKKyAgICAvLyB1c2VkIGFzIGZhbGxiYWNrLCB3aGljaCBpcyBjcmVhdGVkIHdpdGggYSBudWxs
ZWQgcGFnZSwgc28gdGhlIHBsYXRmb3JtIGNvZGUgbmVlZHMgdG8gYWNjb3VudCBmb3IgdGhpcy4K
KyAgICBzdGF0aWMgUmVuZGVyVGhlbWUqIGNyZWF0ZShQYWdlKiBwYWdlID0gMCk7CisKICAgICAv
LyBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbmV2ZXIgc3R5bGUgaGFzIGJlZW4gY29tcHV0ZWQg
Zm9yIGFuIGVsZW1lbnQgYW5kIHRoZSBhcHBlYXJhbmNlCiAgICAgLy8gcHJvcGVydHkgaGFzIGJl
ZW4gc2V0IHRvIGEgdmFsdWUgb3RoZXIgdGhhbiAibm9uZSIuICBUaGUgdGhlbWUgc2hvdWxkIG1h
cCBpbiBhbGwgb2YgdGhlIGFwcHJvcHJpYXRlCiAgICAgLy8gbWV0cmljcyBhbmQgZGVmYXVsdHMg
Z2l2ZW4gdGhlIGNvbnRlbnRzIG9mIHRoZSBzdHlsZS4gIFRoaXMgaW5jbHVkZXMgc29waGlzdGlj
YXRlZCBvcGVyYXRpb25zIGxpa2UKQEAgLTI1Nyw5ICsyNjUsOCBAQCBwcml2YXRlOgogI2VuZGlm
CiB9OwogCi0vLyBGdW5jdGlvbiB0byBvYnRhaW4gdGhlIHRoZW1lLiAgVGhpcyBpcyBpbXBsZW1l
bnRlZCBpbiB5b3VyIHBsYXRmb3JtLXNwZWNpZmljIHRoZW1lIGltcGxlbWVudGF0aW9uIHRvIGhh
bmQKLS8vIGJhY2sgdGhlIGFwcHJvcHJpYXRlIHBsYXRmb3JtIHRoZW1lLgotUmVuZGVyVGhlbWUq
IHRoZW1lKCk7CisvLyBXaGVuIHRoZSB0aGVtZSBpcyBuZWVkZWQgaW4gbm9uLXBhZ2UgZGVwZW5k
ZW50IGNvZGUsIHRoZSBkZWZhdWx0VGhlbWUoKSBpcyB1c2VkIGFzIGZhbGxiYWNrLgorUmVuZGVy
VGhlbWUqIGRlZmF1bHRUaGVtZSgpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5jcHAgYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguY3BwCmluZGV4IDk0ZWU2
NGYuLjBlMWQwOTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hy
b21pdW1MaW51eC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1
bUxpbnV4LmNwcApAQCAtMTEzLDEwICsxMTMsOSBAQCBzdGF0aWMgSFRNTE1lZGlhRWxlbWVudCog
bWVkaWFFbGVtZW50UGFyZW50KE5vZGUqIG5vZGUpCiB9CiAjZW5kaWYKIAotUmVuZGVyVGhlbWUq
IHRoZW1lKCkKK1JlbmRlclRoZW1lKiBSZW5kZXJUaGVtZTo6Y3JlYXRlKFBhZ2UqKQogewotICAg
IHN0YXRpYyBSZW5kZXJUaGVtZUNocm9taXVtTGludXggdGhlbWU7Ci0gICAgcmV0dXJuICZ0aGVt
ZTsKKyAgICByZXR1cm4gbmV3IFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eCgpOwogfQogCiBSZW5k
ZXJUaGVtZUNocm9taXVtTGludXg6OlJlbmRlclRoZW1lQ2hyb21pdW1MaW51eCgpCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTWFjLm1tIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bU1hYy5tbQppbmRleCBmNjA4MWE1Li41NTgy
NTE3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTWFj
Lm1tCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1NYWMubW0KQEAg
LTEyNCwxMCArMTI0LDkgQEAgSW50UmVjdCBOU1JlY3RUb0ludFJlY3QoY29uc3QgTlNSZWN0ICYg
cmVjdCkKICAgICByZXR1cm4gSW50UmVjdChyZWN0Lm9yaWdpbi54LCByZWN0Lm9yaWdpbi55LCBy
ZWN0LnNpemUud2lkdGgsIHJlY3Quc2l6ZS5oZWlnaHQpOwogfQogCi1SZW5kZXJUaGVtZSogdGhl
bWUoKQorUmVuZGVyVGhlbWUqIFJlbmRlclRoZW1lOjpjcmVhdGUoUGFnZSopCiB7Ci0gICAgc3Rh
dGljIFJlbmRlclRoZW1lQ2hyb21pdW1NYWMqIG1hY1RoZW1lID0gbmV3IFJlbmRlclRoZW1lQ2hy
b21pdW1NYWM7Ci0gICAgcmV0dXJuIG1hY1RoZW1lOworICAgIHJldHVybiBuZXcgUmVuZGVyVGhl
bWVDaHJvbWl1bU1hYzsKIH0KIAogUmVuZGVyVGhlbWVDaHJvbWl1bU1hYzo6UmVuZGVyVGhlbWVD
aHJvbWl1bU1hYygpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNo
cm9taXVtV2luLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1XaW4u
Y3BwCmluZGV4IDUyODgxOTEuLjQyMjM0YTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lQ2hyb21pdW1XaW4uY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lQ2hyb21pdW1XaW4uY3BwCkBAIC0yNjUsMTEgKzI2NSwxMCBAQCBzdGF0aWMgSFRNTE1l
ZGlhRWxlbWVudCogbWVkaWFFbGVtZW50UGFyZW50KE5vZGUqIG5vZGUpCiB9CiAjZW5kaWYKIAot
Ly8gSW1wbGVtZW50IFdlYkNvcmU6OnRoZW1lKCkgZm9yIGdldHRpbmcgdGhlIGdsb2JhbCBSZW5k
ZXJUaGVtZS4KLVJlbmRlclRoZW1lKiB0aGVtZSgpCisvLyBJbXBsZW1lbnQgV2ViQ29yZTo6dGhl
bWUoKSBmb3IgZ2V0dGluZyB0aGUgUmVuZGVyVGhlbWUuCitSZW5kZXJUaGVtZSogUmVuZGVyVGhl
bWU6OmNyZWF0ZShQYWdlKikKIHsKLSAgICBzdGF0aWMgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbiB3
aW5UaGVtZTsKLSAgICByZXR1cm4gJndpblRoZW1lOworICAgIHJldHVybiBuZXcgUmVuZGVyVGhl
bWVDaHJvbWl1bVdpbigpOwogfQogCiBTdHJpbmcgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6ZXh0
cmFEZWZhdWx0U3R5bGVTaGVldCgpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZU1hYy5tbSBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCmluZGV4
IGMzZWM5MWEuLjdkODcxNzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjLm1tCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC0x
MDEsMTAgKzEwMSw5IEBAIGVudW0gewogICAgIGxlZnRQYWRkaW5nCiB9OwogCi1SZW5kZXJUaGVt
ZSogdGhlbWUoKQorUmVuZGVyVGhlbWUqIFJlbmRlclRoZW1lOjpjcmVhdGUoUGFnZSopCiB7Ci0g
ICAgc3RhdGljIFJlbmRlclRoZW1lTWFjKiBtYWNUaGVtZSA9IG5ldyBSZW5kZXJUaGVtZU1hYzsK
LSAgICByZXR1cm4gbWFjVGhlbWU7CisgICAgcmV0dXJuIG5ldyBSZW5kZXJUaGVtZU1hYzsKIH0K
IAogUmVuZGVyVGhlbWVNYWM6OlJlbmRlclRoZW1lTWFjKCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lU2FmYXJpLmNwcAppbmRleCAzYWZmZDFmLi45MDc2Zjk2IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwCkBAIC02NSwxMyArNjUsMTEgQEAgZW51bSB7CiAgICAg
bGVmdFBhZGRpbmcKIH07CiAKLVJlbmRlclRoZW1lKiB0aGVtZSgpCitSZW5kZXJUaGVtZSogUmVu
ZGVyVGhlbWU6OmNyZWF0ZShQYWdlKikKIHsKLSAgICBzdGF0aWMgUmVuZGVyVGhlbWVTYWZhcmkg
c2FmYXJpVGhlbWU7Ci0gICAgc3RhdGljIFJlbmRlclRoZW1lV2luIHdpbmRvd3NUaGVtZTsKICAg
ICBpZiAoU2V0dGluZ3M6OnNob3VsZFBhaW50TmF0aXZlQ29udHJvbHMoKSkKLSAgICAgICAgcmV0
dXJuICZ3aW5kb3dzVGhlbWU7Ci0gICAgcmV0dXJuICZzYWZhcmlUaGVtZTsKKyAgICAgICAgcmV0
dXJuIG5ldyBSZW5kZXJUaGVtZVdpbigpOworICAgIHJldHVybiBuZXcgUmVuZGVyVGhlbWVTYWZh
cmkoKTsKIH0KIAogI2lmICFkZWZpbmVkKE5ERUJVRykgJiYgZGVmaW5lZChVU0VfREVCVUdfU0FG
QVJJX1RIRU1FKQotLSAKMS42LjAuNAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31105</attachid>
            <date>2009-06-09 13:28:43 -0700</date>
            <delta_ts>2009-06-12 10:23:43 -0700</delta_ts>
            <desc>Fixed the patch to not include a wrong file</desc>
            <filename>one-rendertheme-per-page-2.patch</filename>
            <type>text/plain</type>
            <size>30972</size>
            <attacher name="Kenneth Rohde Christiansen">kenneth</attacher>
            
              <data encoding="base64">RnJvbSBmMmM0YTRjMzAxMzYwY2VmN2UxMTQzNGI0NGRiYmM5MDUyODZmNWQ1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiA8a2VubmV0aEBz
cGlzbmlnZWwub3NtdGMuaW5kdC5vcmcuYnI+CkRhdGU6IFR1ZSwgOSBKdW4gMjAwOSAxNzoyNDow
NSAtMDMwMApTdWJqZWN0OiBbUEFUQ0hdIDIwMDktMDYtMDkgIEtlbm5ldGggUm9oZGUgQ2hyaXN0
aWFuc2VuICA8a2VubmV0aC5jaHJpc3RpYW5zZW5AZ21haWwuY29tPgoKICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgQ3JlYXRlIGEgZGlmZmVyZW50IFJlbmRlclRo
ZW1lIHBlciBwYWdlLCBzbyB0aGF0IFJlbmRlclRoZW1lIGhhcwogICAgICAgIGFjY2VzcyB0byBw
YWdlIHNwZWNpZmljIHRoZW1pbmcuIFRoaXMgaXMgbmVlZGVkIGZvciB0aGUgUXQgcG9ydCwgYXMg
UXQKICAgICAgICBzdXBwb3J0cyBzZXR0aW5nIHRoZSB0aGVtZSAoc3R5bGUpIHBlciB3aWRnZXQu
CgogICAgICAgIFRoaXMgY2hhbmdlIHdhcyBzdWdnZXN0ZWQgYW5kIGRpc2N1c3NlZCB3aXRoIERh
dmUgSHlhdHQuCgogICAgICAgIE1vcmUgZGV0YWlsZWQ6CgogICAgICAgIDEpIENyZWF0ZSBhIHRo
ZW1lIHBlciBwYWdlLCBwbHVzIGEgZGVmYXVsdCBvbmUgdG8gYWNjZXNzIGZyb20gbm9uLXBhZ2UK
ICAgICAgICAgICBkZXBlbmRlbnQgY29kZS4KICAgICAgICAyKSBBZGQgYW4gYWNjZXNzZXIgdG8g
dGhlIHRoZW1lIGZyb20gUmVuZGVyT2JqZWN0LgogICAgICAgIDMpIENoYW5nZSBhbGwgdXNlcyBv
ZiB0aGUgdGhlbWluZyB0byBhY2Nlc3MgdGhlIHRoZW1lIHRocm91Z2gKICAgICAgICAgICBSZW5k
ZXJPYmplY3QsIHVzaW5nIHRoZSBnbG9iYWwgZGVmYXVsdCB0aGVtZSBhcyBmYWxsYmFjaywgd2hl
biB0aGUKICAgICAgICAgICBkb2N1bWVudCBvZiBSZW5kZXJPYmplY3QgaGFzIG5vIHBhZ2UuCiAg
ICAgICAgICAgV2hlbiB3ZSBkb24ndCBoYXZlIGFjY2VzcyB0byBhIFJlbmRlck9iamVjdCwgdXNl
IHRoZSBkZWZhdWx0IHRoZW1lLgogICAgICAgIDQpIE1vZGlmeSBhbGwgUmVuZGVyVGhlbWUgcGxh
dGZvcm0gaW1wbGVtZW50YXRpb25zIHRvIHdvcmsgd2l0aCB0aGUKICAgICAgICAgICBhYm92ZSBj
aGFuZ2VzLgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICA4NCArKysrKysrKysrKysrKysrKysrKwogLi4uL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgICAgfCAgICAyICstCiBXZWJDb3JlL2Nzcy9DU1NT
dHlsZVNlbGVjdG9yLmNwcCAgICAgICAgICAgICAgICAgICB8ICAgMTIgKystLQogV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZS5jcHAgICAgICAgICAgICAgICAgICAgICAgfCAgICA0ICstCiBXZWJD
b3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAgICAgICAgICAgICB8ICAgIDMgKy0K
IFdlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCAgICAgICAgICAgIHwgICAg
NCArLQogV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwICAgICAgICAgICAgICAgICAg
fCAgICA2ICstCiBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgIDIgKy0KIFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAgNiArLQogV2ViQ29yZS9wYWdlL1BhZ2UuY3BwICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgIDEyICsrKwogV2ViQ29yZS9wYWdlL1BhZ2UuaCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgICA3ICsrLQogV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHAgICAgfCAgICA0ICstCiBXZWJDb3JlL3BsYXRmb3JtL2d0
ay9SZW5kZXJUaGVtZUd0ay5jcHAgICAgICAgICAgICB8ICAgMjMgKysrLS0tCiBXZWJDb3JlL3Bs
YXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuY3BwICAgICAgICAgICAgICB8ICAgIDUgKy0KIFdlYkNv
cmUvcGxhdGZvcm0vd3gvUmVuZGVyVGhlbWVXeC5jcHAgICAgICAgICAgICAgIHwgICAgNSArLQog
V2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAgICAgICAgICAgICAgICAgfCAgICA1
ICstCiBXZWJDb3JlL3JlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgICAgICAgICB8
ICAgIDIgKy0KIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgICAgICAgICAgICAg
ICAgIHwgICAgOSArKy0KIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oICAgICAgICAg
ICAgICAgICAgIHwgICAgMyArCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgICAg
ICAgICAgICAgICAgICB8ICAgIDkgKystCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5o
ICAgICAgICAgICAgICAgICAgICB8ICAgMTMgKysrLQogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVDaHJvbWl1bUxpbnV4LmNwcCAgICAgfCAgICA1ICstCiBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZUNocm9taXVtTWFjLm1tICAgICAgICB8ICAgIDUgKy0KIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lQ2hyb21pdW1XaW4uY3BwICAgICAgIHwgICAgNyArLQogV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0gICAgICAgICAgICAgICAgfCAgICA1ICstCiBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAgICAgICAgICAgICB8ICAgIDggKy0K
IDI2IGZpbGVzIGNoYW5nZWQsIDE4MiBpbnNlcnRpb25zKCspLCA2OCBkZWxldGlvbnMoLSkKCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGYz
YjJkYjcuLmZkZDIxY2IgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODcgQEAKKzIwMDktMDYtMDkgIEtlbm5ldGggUm9oZGUg
Q2hyaXN0aWFuc2VuICA8a2VubmV0aC5jaHJpc3RpYW5zZW5AZ21haWwuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0ZSBhIGRpZmZlcmVu
dCBSZW5kZXJUaGVtZSBwZXIgcGFnZSwgc28gdGhhdCBSZW5kZXJUaGVtZSBoYXMKKyAgICAgICAg
YWNjZXNzIHRvIHBhZ2Ugc3BlY2lmaWMgdGhlbWluZy4gVGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBR
dCBwb3J0LCBhcyBRdAorICAgICAgICBzdXBwb3J0cyBzZXR0aW5nIHRoZSB0aGVtZSAoc3R5bGUp
IHBlciB3aWRnZXQuCisKKyAgICAgICAgVGhpcyBjaGFuZ2Ugd2FzIHN1Z2dlc3RlZCBhbmQgZGlz
Y3Vzc2VkIHdpdGggRGF2ZSBIeWF0dC4KKworICAgICAgICBNb3JlIGRldGFpbGVkOgorCisgICAg
ICAgIDEpIENyZWF0ZSBhIHRoZW1lIHBlciBwYWdlLCBwbHVzIGEgZGVmYXVsdCBvbmUgdG8gYWNj
ZXNzIGZyb20gbm9uLXBhZ2UKKyAgICAgICAgICAgZGVwZW5kZW50IGNvZGUuCisgICAgICAgIDIp
IEFkZCBhbiBhY2Nlc3NlciB0byB0aGUgdGhlbWUgZnJvbSBSZW5kZXJPYmplY3QuCisgICAgICAg
IDMpIENoYW5nZSBhbGwgdXNlcyBvZiB0aGUgdGhlbWluZyB0byBhY2Nlc3MgdGhlIHRoZW1lIHRo
cm91Z2gKKyAgICAgICAgICAgUmVuZGVyT2JqZWN0LCB1c2luZyB0aGUgZ2xvYmFsIGRlZmF1bHQg
dGhlbWUgYXMgZmFsbGJhY2ssIHdoZW4gdGhlCisgICAgICAgICAgIGRvY3VtZW50IG9mIFJlbmRl
ck9iamVjdCBoYXMgbm8gcGFnZS4KKyAgICAgICAgICAgV2hlbiB3ZSBkb24ndCBoYXZlIGFjY2Vz
cyB0byBhIFJlbmRlck9iamVjdCwgdXNlIHRoZSBkZWZhdWx0IHRoZW1lLgorICAgICAgICA0KSBN
b2RpZnkgYWxsIFJlbmRlclRoZW1lIHBsYXRmb3JtIGltcGxlbWVudGF0aW9ucyB0byB3b3JrIHdp
dGggdGhlCisgICAgICAgICAgIGFib3ZlIGNoYW5nZXMuCisKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Ym91bmRpbmdCb3hSZWN0KToKKyAgICAgICAgKiBjc3Mv
Q1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2FkRnVsbERlZmF1bHRT
dHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZvckVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YWRqdXN0UmVuZGVyU3R5
bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eSk6
CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGFpbmVyTm9kZTo6c2V0QWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6
OnNldEhvdmVyZWQpOgorICAgICAgICAqIGVkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25Db250cm9sbGVyOjpmb2N1c2VkT3JBY3RpdmVT
dGF0ZUNoYW5nZWQpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpwYXJzZU1hcHBlZEF0
dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNldENoZWNrZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTElucHV0RWxlbWVudDo6c2V0SW5kZXRlcm1pbmF0ZSk6CisgICAgICAgICogcGFnZS9G
cmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c2VsZWN0aW9uTGF5b3V0Q2hhbmdl
ZCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVWaWV3Ojp1cGRhdGVDb250cm9sVGludHMpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6On5Q
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnRoZW1lKToKKyAgICAgICAgKiBwYWdlL1Bh
Z2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQb3B1cExpc3RCb3g6OnBhaW50Um93KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGVmYXVs
dFRoZW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OlJlbmRlclRoZW1lR3RrKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lR3RrOjp+UmVuZGVyVGhlbWVHdGspOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVHdGs6Omd0a0VudHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lR3RrOjpndGtUcmVlVmlldyk6CisgICAgICAgICogcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVR
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkZWZhdWx0VGhlbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWU6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vd3gvUmVuZGVyVGhl
bWVXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6Y3JlYXRlKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVUZXh0Qm94OjpwYWludFRleHRNYXRjaE1hcmtlcik6CisgICAgICAgICogcmVuZGVyaW5nL01l
ZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbElu
cHV0RWxlbWVudDo6aGl0VGVzdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnRoZW1lKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1l
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjphZGp1c3RTdHlsZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpkZWZhdWx0
VGhlbWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmNyZWF0ZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1NYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZTo6Y3JlYXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1
bVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6Y3JlYXRlKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZTo6Y3JlYXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmNyZWF0ZSk6CisKIDIwMDktMDYt
MDMgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aC5jaHJpc3RpYW5zZW5Ab3Bl
bmJvc3NhLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cCBiL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApp
bmRleCA4YzUyMmExLi4xNzQwYjRiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0xMDA4LDcgKzEwMDgsNyBAQCBJbnRS
ZWN0IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmJvdW5kaW5nQm94UmVjdCgpIGNvbnN0CiAg
ICAgICAgIEludFJlY3QgciA9IHF1YWRzW2ldLmVuY2xvc2luZ0JvdW5kaW5nQm94KCk7CiAgICAg
ICAgIGlmICghci5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGlmIChvYmotPnN0eWxlKCktPmhh
c0FwcGVhcmFuY2UoKSkKLSAgICAgICAgICAgICAgICB0aGVtZSgpLT5hZGp1c3RSZXBhaW50UmVj
dChvYmosIHIpOworICAgICAgICAgICAgICAgIG9iai0+dGhlbWUoKS0+YWRqdXN0UmVwYWludFJl
Y3Qob2JqLCByKTsKICAgICAgICAgICAgIHJlc3VsdC51bml0ZShyKTsKICAgICAgICAgfQogICAg
IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwIGIvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKaW5kZXggYzhmZTIzNC4uMjVhMGZmMiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKKysrIGIvV2ViQ29yZS9jc3Mv
Q1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTUxNiwxMyArNTE2LDEzIEBAIHN0YXRpYyB2b2lkIGxv
YWRGdWxsRGVmYXVsdFN0eWxlKCkKICAgICB9CiAKICAgICAvLyBTdHJpY3QtbW9kZSBydWxlcy4K
LSAgICBTdHJpbmcgZGVmYXVsdFJ1bGVzID0gU3RyaW5nKGh0bWw0VXNlckFnZW50U3R5bGVTaGVl
dCwgc2l6ZW9mKGh0bWw0VXNlckFnZW50U3R5bGVTaGVldCkpICsgdGhlbWUoKS0+ZXh0cmFEZWZh
dWx0U3R5bGVTaGVldCgpOworICAgIFN0cmluZyBkZWZhdWx0UnVsZXMgPSBTdHJpbmcoaHRtbDRV
c2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YoaHRtbDRVc2VyQWdlbnRTdHlsZVNoZWV0KSkgKyBk
ZWZhdWx0VGhlbWUoKS0+ZXh0cmFEZWZhdWx0U3R5bGVTaGVldCgpOwogICAgIENTU1N0eWxlU2hl
ZXQqIGRlZmF1bHRTaGVldCA9IHBhcnNlVUFTaGVldChkZWZhdWx0UnVsZXMpOwogICAgIGRlZmF1
bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoZGVmYXVsdFNoZWV0LCBzY3JlZW5FdmFsKCkpOwog
ICAgIGRlZmF1bHRQcmludFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChkZWZhdWx0U2hlZXQsIHBy
aW50RXZhbCgpKTsKIAogICAgIC8vIFF1aXJrcy1tb2RlIHJ1bGVzLgotICAgIFN0cmluZyBxdWly
a3NSdWxlcyA9IFN0cmluZyhxdWlya3NVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YocXVpcmtz
VXNlckFnZW50U3R5bGVTaGVldCkpICsgdGhlbWUoKS0+ZXh0cmFRdWlya3NTdHlsZVNoZWV0KCk7
CisgICAgU3RyaW5nIHF1aXJrc1J1bGVzID0gU3RyaW5nKHF1aXJrc1VzZXJBZ2VudFN0eWxlU2hl
ZXQsIHNpemVvZihxdWlya3NVc2VyQWdlbnRTdHlsZVNoZWV0KSkgKyBkZWZhdWx0VGhlbWUoKS0+
ZXh0cmFRdWlya3NTdHlsZVNoZWV0KCk7CiAgICAgQ1NTU3R5bGVTaGVldCogcXVpcmtzU2hlZXQg
PSBwYXJzZVVBU2hlZXQocXVpcmtzUnVsZXMpOwogICAgIGRlZmF1bHRRdWlya3NTdHlsZS0+YWRk
UnVsZXNGcm9tU2hlZXQocXVpcmtzU2hlZXQsIHNjcmVlbkV2YWwoKSk7CiB9CkBAIC0xMTI4LDcg
KzExMjgsNyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yOjpzdHls
ZUZvckVsZW1lbnQoRWxlbWVudCogZSwgUmVuZGVyU3R5bAogICAgIHN0YXRpYyBib29sIGxvYWRl
ZE1lZGlhU3R5bGVTaGVldDsKICAgICBpZiAoIWxvYWRlZE1lZGlhU3R5bGVTaGVldCAmJiAoZS0+
aGFzVGFnTmFtZSh2aWRlb1RhZykgfHwgZS0+aGFzVGFnTmFtZShhdWRpb1RhZykpKSB7CiAgICAg
ICAgIGxvYWRlZE1lZGlhU3R5bGVTaGVldCA9IHRydWU7Ci0gICAgICAgIFN0cmluZyBtZWRpYVJ1
bGVzID0gU3RyaW5nKG1lZGlhQ29udHJvbHNVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YobWVk
aWFDb250cm9sc1VzZXJBZ2VudFN0eWxlU2hlZXQpKSArIHRoZW1lKCktPmV4dHJhTWVkaWFDb250
cm9sc1N0eWxlU2hlZXQoKTsKKyAgICAgICAgU3RyaW5nIG1lZGlhUnVsZXMgPSBTdHJpbmcobWVk
aWFDb250cm9sc1VzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihtZWRpYUNvbnRyb2xzVXNlckFn
ZW50U3R5bGVTaGVldCkpICsgZGVmYXVsdFRoZW1lKCktPmV4dHJhTWVkaWFDb250cm9sc1N0eWxl
U2hlZXQoKTsKICAgICAgICAgQ1NTU3R5bGVTaGVldCogbWVkaWFDb250cm9sc1NoZWV0ID0gcGFy
c2VVQVNoZWV0KG1lZGlhUnVsZXMpOwogICAgICAgICBkZWZhdWx0U3R5bGUtPmFkZFJ1bGVzRnJv
bVNoZWV0KG1lZGlhQ29udHJvbHNTaGVldCwgc2NyZWVuRXZhbCgpKTsKICAgICAgICAgZGVmYXVs
dFByaW50U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KG1lZGlhQ29udHJvbHNTaGVldCwgcHJpbnRF
dmFsKCkpOwpAQCAtMTU3OSw3ICsxNTc5LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphZGp1
c3RSZW5kZXJTdHlsZShSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQgKmUpCiAKICAgICAvLyBM
ZXQgdGhlIHRoZW1lIGFsc28gaGF2ZSBhIGNyYWNrIGF0IGFkanVzdGluZyB0aGUgc3R5bGUuCiAg
ICAgaWYgKHN0eWxlLT5oYXNBcHBlYXJhbmNlKCkpCi0gICAgICAgIHRoZW1lKCktPmFkanVzdFN0
eWxlKHRoaXMsIHN0eWxlLCBlLCBtX2hhc1VBQXBwZWFyYW5jZSwgbV9ib3JkZXJEYXRhLCBtX2Jh
Y2tncm91bmREYXRhLCBtX2JhY2tncm91bmRDb2xvcik7CisgICAgICAgIGRlZmF1bHRUaGVtZSgp
LT5hZGp1c3RTdHlsZSh0aGlzLCBzdHlsZSwgZSwgbV9oYXNVQUFwcGVhcmFuY2UsIG1fYm9yZGVy
RGF0YSwgbV9iYWNrZ3JvdW5kRGF0YSwgbV9iYWNrZ3JvdW5kQ29sb3IpOwogCiAjaWYgRU5BQkxF
KFNWRykKICAgICBpZiAoZSAmJiBlLT5pc1NWR0VsZW1lbnQoKSkgewpAQCAtNDM3Niw3ICs0Mzc2
LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludCBpZCwgQ1NTVmFs
dWUgKnZhbHVlKQogICAgICAgICAgICAgbV9saW5lSGVpZ2h0VmFsdWUgPSAwOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uOwotICAgICAg
ICAgICAgdGhlbWUoKS0+c3lzdGVtRm9udChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSwgZm9u
dERlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgIGRlZmF1bHRUaGVtZSgpLT5zeXN0ZW1Gb250KHBy
aW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpLCBmb250RGVzY3JpcHRpb24pOwogIAogICAgICAgICAg
ICAgLy8gRG91YmxlLWNoZWNrIGFuZCBzZWUgaWYgdGhlIHRoZW1lIGRpZCBhbnl0aGluZy4gIElm
IG5vdCwgZG9uJ3QgYm90aGVyIHVwZGF0aW5nIHRoZSBmb250LgogICAgICAgICAgICAgaWYgKGZv
bnREZXNjcmlwdGlvbi5pc0Fic29sdXRlU2l6ZSgpKSB7CkBAIC01ODExLDcgKzU4MTEsNyBAQCBz
dGF0aWMgQ29sb3IgY29sb3JGb3JDU1NWYWx1ZShpbnQgY3NzVmFsdWVJZCkKICAgICAgICAgaWYg
KGNvbC0+Y3NzVmFsdWVJZCA9PSBjc3NWYWx1ZUlkKQogICAgICAgICAgICAgcmV0dXJuIGNvbC0+
Y29sb3I7CiAgICAgfQotICAgIHJldHVybiB0aGVtZSgpLT5zeXN0ZW1Db2xvcihjc3NWYWx1ZUlk
KTsKKyAgICByZXR1cm4gZGVmYXVsdFRoZW1lKCktPnN5c3RlbUNvbG9yKGNzc1ZhbHVlSWQpOwog
fQogCiBDb2xvciBDU1NTdHlsZVNlbGVjdG9yOjpnZXRDb2xvckZyb21QcmltaXRpdmVWYWx1ZShD
U1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Rv
bS9Db250YWluZXJOb2RlLmNwcCBiL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCmluZGV4
IDI1NzM5MDguLjIwY2M3YTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUu
Y3BwCisrKyBiL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBAIC03OTgsNyArNzk4LDcg
QEAgdm9pZCBDb250YWluZXJOb2RlOjpzZXRBY3RpdmUoYm9vbCBkb3duLCBib29sIHBhdXNlKQog
ICAgICAgICBpZiAocmVhY3RzVG9QcmVzcykKICAgICAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNh
bGMoKTsKICAgICAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKS0+aGFz
QXBwZWFyYW5jZSgpKSB7Ci0gICAgICAgICAgICBpZiAodGhlbWUoKS0+c3RhdGVDaGFuZ2VkKHJl
bmRlcmVyKCksIFByZXNzZWRTdGF0ZSkpCisgICAgICAgICAgICBpZiAocmVuZGVyZXIoKS0+dGhl
bWUoKS0+c3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIFByZXNzZWRTdGF0ZSkpCiAgICAgICAgICAg
ICAgICAgcmVhY3RzVG9QcmVzcyA9IHRydWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHJlYWN0
c1RvUHJlc3MgJiYgcGF1c2UpIHsKQEAgLTg0MCw3ICs4NDAsNyBAQCB2b2lkIENvbnRhaW5lck5v
ZGU6OnNldEhvdmVyZWQoYm9vbCBvdmVyKQogICAgICAgICBpZiAocmVuZGVyZXIoKS0+c3R5bGUo
KS0+YWZmZWN0ZWRCeUhvdmVyUnVsZXMoKSkKICAgICAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNh
bGMoKTsKICAgICAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKS0+aGFz
QXBwZWFyYW5jZSgpKQotICAgICAgICAgICAgdGhlbWUoKS0+c3RhdGVDaGFuZ2VkKHJlbmRlcmVy
KCksIEhvdmVyU3RhdGUpOworICAgICAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS0+c3RhdGVD
aGFuZ2VkKHJlbmRlcmVyKCksIEhvdmVyU3RhdGUpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9lZGl0aW5n
L1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDFkMzZmNTEuLjc2Yzc4MjUgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcAorKysgYi9XZWJDb3Jl
L2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAKQEAgLTQ2LDcgKzQ2LDYgQEAKICNpbmNs
dWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJhbmdl
LmgiCi0jaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAj
aW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVHlwaW5nQ29tbWFuZC5oIgpAQCAt
MTI2OCw3ICsxMjY3LDcgQEAgdm9pZCBTZWxlY3Rpb25Db250cm9sbGVyOjpmb2N1c2VkT3JBY3Rp
dmVTdGF0ZUNoYW5nZWQoKQogICAgICAgICBub2RlLT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAg
ICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKSkKICAg
ICAgICAgICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+c3R5bGUoKS0+aGFzQXBwZWFyYW5j
ZSgpKQotICAgICAgICAgICAgICAgIHRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJlciwgRm9j
dXNTdGF0ZSk7CisgICAgICAgICAgICAgICAgcmVuZGVyZXItPnRoZW1lKCktPnN0YXRlQ2hhbmdl
ZChyZW5kZXJlciwgRm9jdXNTdGF0ZSk7CiAgICAgfQogCiAgICAgLy8gU2VjdXJlIGtleWJvYXJk
IGVudHJ5IGlzIHNldCBieSB0aGUgYWN0aXZlIGZyYW1lLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29u
dHJvbEVsZW1lbnQuY3BwCmluZGV4IDM2ZDIwYWMuLmI5ODVlNzUgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBIVE1MRm9ybUNv
bnRyb2xFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUgKmF0dHIp
CiAgICAgICAgIGlmIChvbGREaXNhYmxlZCAhPSBtX2Rpc2FibGVkKSB7CiAgICAgICAgICAgICBz
ZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgICAgICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5k
ZXJlcigpLT5zdHlsZSgpLT5oYXNBcHBlYXJhbmNlKCkpCi0gICAgICAgICAgICAgICAgdGhlbWUo
KS0+c3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIEVuYWJsZWRTdGF0ZSk7CisgICAgICAgICAgICAg
ICAgcmVuZGVyZXIoKS0+dGhlbWUoKS0+c3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIEVuYWJsZWRT
dGF0ZSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSByZWFkb25s
eUF0dHIpIHsKICAgICAgICAgYm9vbCBvbGRSZWFkT25seSA9IG1fcmVhZE9ubHk7CkBAIC03OSw3
ICs3OSw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKQogICAgICAgICBpZiAob2xkUmVhZE9ubHkgIT0gbV9y
ZWFkT25seSkgewogICAgICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogICAgICAgICAg
ICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKS0+aGFzQXBwZWFyYW5jZSgp
KQotICAgICAgICAgICAgICAgIHRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBSZWFk
T25seVN0YXRlKTsKKyAgICAgICAgICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLT5zdGF0ZUNo
YW5nZWQocmVuZGVyZXIoKSwgUmVhZE9ubHlTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UK
ICAgICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IGRiYzgxOGIuLmIzYzc1NjYgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAKQEAgLTg4MSw5ICs4ODEsOSBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6
OnNldENoZWNrZWQoYm9vbCBub3dDaGVja2VkLCBib29sIHNlbmRDaGFuZ2VFdmVudCkKICAgICBz
ZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAKICAgICBjaGVja2VkUmFkaW9CdXR0b25zKHRoaXMpLmFk
ZEJ1dHRvbih0aGlzKTsKLSAgICAKKwogICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCkt
PnN0eWxlKCktPmhhc0FwcGVhcmFuY2UoKSkKLSAgICAgICAgdGhlbWUoKS0+c3RhdGVDaGFuZ2Vk
KHJlbmRlcmVyKCksIENoZWNrZWRTdGF0ZSk7CisgICAgICAgIHJlbmRlcmVyKCktPnRoZW1lKCkt
PnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBDaGVja2VkU3RhdGUpOwogCiAgICAgLy8gT25seSBz
ZW5kIGEgY2hhbmdlIGV2ZW50IGZvciBpdGVtcyBpbiB0aGUgZG9jdW1lbnQgKGF2b2lkIGZpcmlu
ZyBkdXJpbmcKICAgICAvLyBwYXJzaW5nKSBhbmQgZG9uJ3Qgc2VuZCBhIGNoYW5nZSBldmVudCBm
b3IgYSByYWRpbyBidXR0b24gdGhhdCdzIGdldHRpbmcKQEAgLTkwNSw3ICs5MDUsNyBAQCB2b2lk
IEhUTUxJbnB1dEVsZW1lbnQ6OnNldEluZGV0ZXJtaW5hdGUoYm9vbCBfaW5kZXRlcm1pbmF0ZSkK
ICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAKICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5k
ZXJlcigpLT5zdHlsZSgpLT5oYXNBcHBlYXJhbmNlKCkpCi0gICAgICAgIHRoZW1lKCktPnN0YXRl
Q2hhbmdlZChyZW5kZXJlcigpLCBDaGVja2VkU3RhdGUpOworICAgICAgICByZW5kZXJlcigpLT50
aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgQ2hlY2tlZFN0YXRlKTsKIH0KIAogaW50
IEhUTUxJbnB1dEVsZW1lbnQ6OnNpemUoKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdl
L0ZyYW1lLmNwcCBiL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggYTM2YzFhYS4uYTIyOGJm
OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9XZWJDb3JlL3BhZ2Uv
RnJhbWUuY3BwCkBAIC02MjIsNyArNjIyLDcgQEAgdm9pZCBGcmFtZTo6c2VsZWN0aW9uTGF5b3V0
Q2hhbmdlZCgpCiAgICAgLy8gU3RhcnQgYmxpbmtpbmcgd2l0aCBhIGJsYWNrIGNhcmV0LiBCZSBz
dXJlIG5vdCB0byByZXN0YXJ0IGlmIHdlJ3JlCiAgICAgLy8gYWxyZWFkeSBibGlua2luZyBpbiB0
aGUgcmlnaHQgbG9jYXRpb24uCiAgICAgaWYgKHNob3VsZEJsaW5rICYmICFtX2NhcmV0QmxpbmtU
aW1lci5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgIGlmIChkb3VibGUgYmxpbmtJbnRlcnZhbCA9IHRo
ZW1lKCktPmNhcmV0QmxpbmtJbnRlcnZhbCgpKQorICAgICAgICBpZiAoZG91YmxlIGJsaW5rSW50
ZXJ2YWwgPSBwYWdlKCktPnRoZW1lKCktPmNhcmV0QmxpbmtJbnRlcnZhbCgpKQogICAgICAgICAg
ICAgbV9jYXJldEJsaW5rVGltZXIuc3RhcnRSZXBlYXRpbmcoYmxpbmtJbnRlcnZhbCk7CiAKICAg
ICAgICAgaWYgKCFtX2NhcmV0UGFpbnQpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuY3BwIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggZjY1MDFiZS4uMzhi
MDVlOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTEyOTYsMTAgKzEyOTYsMTAgQEAgdm9pZCBGcmFtZVZp
ZXc6OnVwZGF0ZUNvbnRyb2xUaW50cygpCiAgICAgLy8gdG8gZGVmaW5lIHdoZW4gY29udHJvbHMg
Z2V0IHRoZSB0aW50IGFuZCB0byBjYWxsIHRoaXMgZnVuY3Rpb24gd2hlbiB0aGF0IGNoYW5nZXMu
CiAgICAgCiAgICAgLy8gT3B0aW1pemUgdGhlIGNvbW1vbiBjYXNlIHdoZXJlIHdlIGJyaW5nIGEg
d2luZG93IHRvIHRoZSBmcm9udCB3aGlsZSBpdCdzIHN0aWxsIGVtcHR5LgotICAgIGlmICghbV9m
cmFtZSB8fCBtX2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCkuaXNFbXB0eSgpKSAKKyAgICBpZiAoIW1f
ZnJhbWUgfHwgbV9mcmFtZS0+bG9hZGVyKCktPnVybCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuOwotICAgIAotICAgIGlmICh0aGVtZSgpLT5zdXBwb3J0c0NvbnRyb2xUaW50cygpICYmIG1f
ZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpKSB7CisKKyAgICBpZiAobV9mcmFtZS0+Y29udGVudFJl
bmRlcmVyKCkgJiYgbV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCktPnRoZW1lKCktPnN1cHBvcnRz
Q29udHJvbFRpbnRzKCkpIHsKICAgICAgICAgaWYgKG5lZWRzTGF5b3V0KCkpCiAgICAgICAgICAg
ICBsYXlvdXQoKTsKICAgICAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIGNvbnN0IG5vQ29u
dGV4dCA9IDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKaW5kZXggYTE0MzQzZC4uYzhhZjFlZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNDYsNiArNDYsNyBA
QAogI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIK
ICNpbmNsdWRlICJSZW5kZXJXaWRnZXQuaCIKKyNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTZWxlY3Rpb25Db250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTEyMCw2ICsxMjEsNyBAQCBQYWdlOjpQYWdl
KENocm9tZUNsaWVudCogY2hyb21lQ2xpZW50LCBDb250ZXh0TWVudUNsaWVudCogY29udGV4dE1l
bnVDbGllbnQsIEVkaQogICAgICwgbV9kZWJ1Z2dlcigwKQogICAgICwgbV9jdXN0b21IVE1MVG9r
ZW5pemVyVGltZURlbGF5KC0xKQogICAgICwgbV9jdXN0b21IVE1MVG9rZW5pemVyQ2h1bmtTaXpl
KC0xKQorICAgICwgbV90aGVtZSgwKQogewogICAgIGlmICghYWxsUGFnZXMpIHsKICAgICAgICAg
YWxsUGFnZXMgPSBuZXcgSGFzaFNldDxQYWdlKj47CkBAIC0xNTMsNiArMTU1LDggQEAgUGFnZTo6
flBhZ2UoKQogICAgICAgICBtX3BhcmVudEluc3BlY3RvckNvbnRyb2xsZXItPnBhZ2VEZXN0cm95
ZWQoKTsKICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPmluc3BlY3RlZFBhZ2VEZXN0cm95ZWQo
KTsKIAorICAgIGRlbGV0ZSBtX3RoZW1lOworCiAgICAgbV9iYWNrRm9yd2FyZExpc3QtPmNsb3Nl
KCk7CiAKICNpZm5kZWYgTkRFQlVHCkBAIC0xNjUsNiArMTY5LDE0IEBAIFBhZ2U6On5QYWdlKCkK
ICNlbmRpZgogfQogCitSZW5kZXJUaGVtZSogUGFnZTo6dGhlbWUoKQoreworICAgIGlmICghbV90
aGVtZSkKKyAgICAgICAgbV90aGVtZSA9IFJlbmRlclRoZW1lOjpjcmVhdGUodGhpcyk7CisKKyAg
ICByZXR1cm4gbV90aGVtZTsKK30KKwogdm9pZCBQYWdlOjpzZXRNYWluRnJhbWUoUGFzc1JlZlB0
cjxGcmFtZT4gbWFpbkZyYW1lKQogewogICAgIEFTU0VSVCghbV9tYWluRnJhbWUpOyAvLyBTaG91
bGQgb25seSBiZSBjYWxsZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BhZ2UvUGFnZS5oIGIvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCBlZWRkMjRjLi4xYTkw
NDY3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1dlYkNvcmUvcGFnZS9Q
YWdlLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAj
aW5jbHVkZSAiTGlua0hhc2guaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1
ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CiAKQEAgLTc4LDcgKzc5LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgICAgIFBhZ2UoQ2hyb21lQ2xpZW50KiwgQ29udGV4dE1lbnVDbGllbnQqLCBFZGl0b3JDbGll
bnQqLCBEcmFnQ2xpZW50KiwgSW5zcGVjdG9yQ2xpZW50Kik7CiAgICAgICAgIH5QYWdlKCk7Ci0g
ICAgICAgIAorCisgICAgICAgIFJlbmRlclRoZW1lKiB0aGVtZSgpOworCiAgICAgICAgIHN0YXRp
YyB2b2lkIHJlZnJlc2hQbHVnaW5zKGJvb2wgcmVsb2FkKTsKICAgICAgICAgUGx1Z2luRGF0YSog
cGx1Z2luRGF0YSgpIGNvbnN0OwogCkBAIC0yMTcsNiArMjIwLDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgICAgIG11dGFibGUgUmVmUHRyPFBsdWdpbkRhdGE+IG1fcGx1Z2luRGF0YTsK
IAorICAgICAgICBSZW5kZXJUaGVtZSogbV90aGVtZTsKKwogICAgICAgICBFZGl0b3JDbGllbnQq
IG1fZWRpdG9yQ2xpZW50OwogCiAgICAgICAgIGludCBtX2ZyYW1lQ291bnQ7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcCBiL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwCmluZGV4IGIwMGI2MjUu
LjkyYzNjYmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51
Q2hyb21pdW0uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hy
b21pdW0uY3BwCkBAIC03NzEsOCArNzcxLDggQEAgdm9pZCBQb3B1cExpc3RCb3g6OnBhaW50Um93
KEdyYXBoaWNzQ29udGV4dCogZ2MsIGNvbnN0IEludFJlY3QmIHJlY3QsIGludCByb3dJbmQKICAg
ICAvLyBQYWludCBiYWNrZ3JvdW5kCiAgICAgQ29sb3IgYmFja0NvbG9yLCB0ZXh0Q29sb3I7CiAg
ICAgaWYgKHJvd0luZGV4ID09IG1fc2VsZWN0ZWRJbmRleCkgewotICAgICAgICBiYWNrQ29sb3Ig
PSB0aGVtZSgpLT5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCk7Ci0gICAg
ICAgIHRleHRDb2xvciA9IHRoZW1lKCktPmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5k
Q29sb3IoKTsKKyAgICAgICAgYmFja0NvbG9yID0gZGVmYXVsdFRoZW1lKCktPmFjdGl2ZUxpc3RC
b3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICAgICAgdGV4dENvbG9yID0gZGVmYXVs
dFRoZW1lKCktPmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKTsKICAgICB9
IGVsc2UgewogICAgICAgICBiYWNrQ29sb3IgPSBzdHlsZS5iYWNrZ3JvdW5kQ29sb3IoKTsKICAg
ICAgICAgdGV4dENvbG9yID0gc3R5bGUuZm9yZWdyb3VuZENvbG9yKCk7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAgYi9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAKaW5kZXggYTk1ZjU1Ny4uN2QyNDc3NiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcApAQCAtMzQsMTMgKzM0LDEyIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyVGhlbWUqIHRoZW1lKCkKK1JlbmRlclRoZW1lKiBS
ZW5kZXJUaGVtZTo6Y3JlYXRlKFBhZ2UqIHBhZ2UpCiB7Ci0gICAgc3RhdGljIFJlbmRlclRoZW1l
R3RrIGd0a1RoZW1lOwotICAgIHJldHVybiAmZ3RrVGhlbWU7CisgICAgcmV0dXJuIG5ldyBSZW5k
ZXJUaGVtZUd0aygpOwogfQogCi1zdGF0aWMgYm9vbCBtb3pHdGtJbml0aWFsaXplZCA9IGZhbHNl
Oworc3RhdGljIGludCBtb3pHdGtSZWZDb3VudCA9IDA7CiAKIFJlbmRlclRoZW1lR3RrOjpSZW5k
ZXJUaGVtZUd0aygpCiAgICAgOiBtX2d0a1dpbmRvdygwKQpAQCAtNDgsMTggKzQ3LDE4IEBAIFJl
bmRlclRoZW1lR3RrOjpSZW5kZXJUaGVtZUd0aygpCiAgICAgLCBtX2d0a0VudHJ5KDApCiAgICAg
LCBtX2d0a1RyZWVWaWV3KDApCiB7Ci0gICAgaWYgKCFtb3pHdGtJbml0aWFsaXplZCkgewotICAg
ICAgICBtb3pHdGtJbml0aWFsaXplZCA9IHRydWU7CisgICAgaWYgKCFtb3pHdGtSZWZDb3VudCkK
ICAgICAgICAgbW96X2d0a19pbml0KCk7Ci0gICAgfQorCisgICAgKyttb3pHdGtSZWZDb3VudDsK
IH0KIAogUmVuZGVyVGhlbWVHdGs6On5SZW5kZXJUaGVtZUd0aygpCiB7Ci0gICAgaWYgKG1vekd0
a0luaXRpYWxpemVkKSB7CisgICAgLS1tb3pHdGtSZWZDb3VudDsKKworICAgIGlmICghbW96R3Rr
UmVmQ291bnQpCiAgICAgICAgIG1vel9ndGtfc2h1dGRvd24oKTsKLSAgICAgICAgbW96R3RrSW5p
dGlhbGl6ZWQgPSBmYWxzZTsKLSAgICB9CiB9CiAKIHN0YXRpYyBib29sIHN1cHBvcnRzRm9jdXMo
Q29udHJvbFBhcnQgYXBwZWFyYW5jZSkKQEAgLTQ3MCw3ICs0NjksNyBAQCBHdGtXaWRnZXQqIFJl
bmRlclRoZW1lR3RrOjpndGtFbnRyeSgpIGNvbnN0CiAgICAgICAgIHJldHVybiBtX2d0a0VudHJ5
OwogCiAgICAgbV9ndGtFbnRyeSA9IGd0a19lbnRyeV9uZXcoKTsKLSAgICBnX3NpZ25hbF9jb25u
ZWN0KG1fZ3RrRW50cnksICJzdHlsZS1zZXQiLCBHX0NBTExCQUNLKGd0a1N0eWxlU2V0Q2FsbGJh
Y2spLCB0aGVtZSgpKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fZ3RrRW50cnksICJzdHlsZS1z
ZXQiLCBHX0NBTExCQUNLKGd0a1N0eWxlU2V0Q2FsbGJhY2spLCBjb25zdF9jYXN0PFJlbmRlclRo
ZW1lR3RrKj4odGhpcykpOwogICAgIGd0a19jb250YWluZXJfYWRkKGd0a0NvbnRhaW5lcigpLCBt
X2d0a0VudHJ5KTsKICAgICBndGtfd2lkZ2V0X3JlYWxpemUobV9ndGtFbnRyeSk7CiAKQEAgLTQ4
Myw3ICs0ODIsNyBAQCBHdGtXaWRnZXQqIFJlbmRlclRoZW1lR3RrOjpndGtUcmVlVmlldygpIGNv
bnN0CiAgICAgICAgIHJldHVybiBtX2d0a1RyZWVWaWV3OwogCiAgICAgbV9ndGtUcmVlVmlldyA9
IGd0a190cmVlX3ZpZXdfbmV3KCk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChtX2d0a1RyZWVWaWV3
LCAic3R5bGUtc2V0IiwgR19DQUxMQkFDSyhndGtTdHlsZVNldENhbGxiYWNrKSwgdGhlbWUoKSk7
CisgICAgZ19zaWduYWxfY29ubmVjdChtX2d0a1RyZWVWaWV3LCAic3R5bGUtc2V0IiwgR19DQUxM
QkFDSyhndGtTdHlsZVNldENhbGxiYWNrKSwgY29uc3RfY2FzdDxSZW5kZXJUaGVtZUd0ayo+KHRo
aXMpKTsKICAgICBndGtfY29udGFpbmVyX2FkZChndGtDb250YWluZXIoKSwgbV9ndGtUcmVlVmll
dyk7CiAgICAgZ3RrX3dpZGdldF9yZWFsaXplKG1fZ3RrVHJlZVZpZXcpOwogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9y
bS9xdC9SZW5kZXJUaGVtZVF0LmNwcAppbmRleCBiMTZjYmM0Li45ZjhlNjBiIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5jcHAKQEAgLTEwNiwxMCArMTA2LDkgQEAgU3R5bGVQYWlu
dGVyOjp+U3R5bGVQYWludGVyKCkKICAgICB9CiB9CiAKLVJlbmRlclRoZW1lKiB0aGVtZSgpCitS
ZW5kZXJUaGVtZSogUmVuZGVyVGhlbWU6OmNyZWF0ZShQYWdlKiBwYWdlKQogewotICAgIHN0YXRp
YyBSZW5kZXJUaGVtZVF0IHJ0OwotICAgIHJldHVybiAmcnQ7CisgICAgcmV0dXJuIG5ldyBSZW5k
ZXJUaGVtZVF0KCk7CiB9CiAKIFJlbmRlclRoZW1lUXQ6OlJlbmRlclRoZW1lUXQoKQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93eC9SZW5kZXJUaGVtZVd4LmNwcCBiL1dlYkNvcmUvcGxh
dGZvcm0vd3gvUmVuZGVyVGhlbWVXeC5jcHAKaW5kZXggYTI2NDE2Zi4uOTUxNDg4MCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93eC9SZW5kZXJUaGVtZVd4LmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL3d4L1JlbmRlclRoZW1lV3guY3BwCkBAIC0xMTksMTAgKzExOSw5IEBAIHByaXZh
dGU6CiAjZGVmaW5lIFBPUFVQX0lOVEVSTkFMX1BBRERJTkdfUklHSFQgMjAKICNlbmRpZgogCi1S
ZW5kZXJUaGVtZSogdGhlbWUoKQorUmVuZGVyVGhlbWUqIFJlbmRlclRoZW1lOjpjcmVhdGUoUGFn
ZSopCiB7Ci0gICAgc3RhdGljIFJlbmRlclRoZW1lV3ggcnQ7Ci0gICAgcmV0dXJuICZydDsKKyAg
ICByZXR1cm4gbmV3IFJlbmRlclRoZW1lV3goKTsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZVd4Ojpp
c0NvbnRyb2xTdHlsZWQoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBCb3JkZXJEYXRh
JiBib3JkZXIsCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNw
cCBiL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCmluZGV4IDQxOGJlMTUuLjMw
ZDE5MmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCisr
KyBiL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC0zMiw3ICszMiw2IEBA
CiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckFyZW5hLmgiCiAjaW5jbHVkZSAi
UmVuZGVyQmxvY2suaCIKLSNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlRleHQu
aCIKICNpbmNsdWRlICJicmVha19saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9BbHdheXNJbmxpbmUu
aD4KQEAgLTc3MCw4ICs3NjksOCBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50VGV4dE1hdGNo
TWFya2VyKEdyYXBoaWNzQ29udGV4dCogcHQsIGludCB0eCwgaW50IHR5LCBEbwogICAgIC8vIE9w
dGlvbmFsbHkgaGlnaGxpZ2h0IHRoZSB0ZXh0CiAgICAgaWYgKHJlbmRlcmVyKCktPmRvY3VtZW50
KCktPmZyYW1lKCktPm1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoKSkgewogICAgICAg
ICBDb2xvciBjb2xvciA9IG1hcmtlci5hY3RpdmVNYXRjaCA/Ci0gICAgICAgICAgICB0aGVtZSgp
LT5wbGF0Zm9ybUFjdGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpIDoKLSAgICAgICAgICAg
IHRoZW1lKCktPnBsYXRmb3JtSW5hY3RpdmVUZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IoKTsKKyAg
ICAgICAgICAgIHJlbmRlcmVyKCktPnRoZW1lKCktPnBsYXRmb3JtQWN0aXZlVGV4dFNlYXJjaEhp
Z2hsaWdodENvbG9yKCkgOgorICAgICAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS0+cGxhdGZv
cm1JbmFjdGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpOwogICAgICAgICBwdC0+c2F2ZSgp
OwogICAgICAgICB1cGRhdGVHcmFwaGljc0NvbnRleHQocHQsIGNvbG9yLCBjb2xvciwgMCk7ICAv
LyBEb24ndCBkcmF3IHRleHQgYXQgYWxsIQogICAgICAgICBwdC0+Y2xpcChJbnRSZWN0KHR4ICsg
bV94LCB0eSArIHksIG1fd2lkdGgsIGgpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5n
L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29udHJv
bEVsZW1lbnRzLmNwcAppbmRleCA1Y2Q5MzYzLi43YWE4YzFhIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3JlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJp
bmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCkBAIC0xNTksNyArMTU5LDcgQEAgdm9pZCBNZWRp
YUNvbnRyb2xJbnB1dEVsZW1lbnQ6OnVwZGF0ZVN0eWxlKCkKIGJvb2wgTWVkaWFDb250cm9sSW5w
dXRFbGVtZW50OjpoaXRUZXN0KGNvbnN0IEludFBvaW50JiBhYnNQb2ludCkKIHsKICAgICBpZiAo
cmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpLT5oYXNBcHBlYXJhbmNlKCkpCi0gICAg
ICAgIHJldHVybiB0aGVtZSgpLT5oaXRUZXN0TWVkaWFDb250cm9sUGFydChyZW5kZXJlcigpLCBh
YnNQb2ludCk7CisgICAgICAgIHJldHVybiByZW5kZXJlcigpLT50aGVtZSgpLT5oaXRUZXN0TWVk
aWFDb250cm9sUGFydChyZW5kZXJlcigpLCBhYnNQb2ludCk7CiAKICAgICByZXR1cm4gZmFsc2U7
CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCBmODEwMThkLi45ZmNiMjg0IDEw
MDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTQzLDcgKzQzLDYgQEAKICNpbmNsdWRl
ICJSZW5kZXJUYWJsZUNlbGwuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZUNvbC5oIgogI2luY2x1
ZGUgIlJlbmRlclRhYmxlUm93LmgiCi0jaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRl
ICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtU3RhdGUuaCIKICNpbmNsdWRlIDxh
bGdvcml0aG0+CkBAIC0yMTQsNiArMjEzLDE0IEBAIFJlbmRlck9iamVjdDo6flJlbmRlck9iamVj
dCgpCiAjZW5kaWYKIH0KIAorUmVuZGVyVGhlbWUqIFJlbmRlck9iamVjdDo6dGhlbWUoKSBjb25z
dAoreworICAgIGlmIChkb2N1bWVudCgpLT5wYWdlKCkpCisgICAgICAgIHJldHVybiBkb2N1bWVu
dCgpLT5wYWdlKCktPnRoZW1lKCk7CisKKyAgICByZXR1cm4gZGVmYXVsdFRoZW1lKCk7Cit9CisK
IGJvb2wgUmVuZGVyT2JqZWN0Ojppc0Rlc2NlbmRhbnRPZihjb25zdCBSZW5kZXJPYmplY3QqIG9i
aikgY29uc3QKIHsKICAgICBmb3IgKGNvbnN0IFJlbmRlck9iamVjdCogciA9IHRoaXM7IHI7IHIg
PSByLT5tX3BhcmVudCkgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCAwOTAxYmZmLi40
MjBmNGFkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysg
Yi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApAQCAtNDgsNiArNDgsNyBAQCBjbGFz
cyBSZW5kZXJJbmxpbmU7CiBjbGFzcyBSZW5kZXJCbG9jazsKIGNsYXNzIFJlbmRlckZsb3c7CiBj
bGFzcyBSZW5kZXJMYXllcjsKK2NsYXNzIFJlbmRlclRoZW1lOwogY2xhc3MgVHJhbnNmb3JtU3Rh
dGU7CiBjbGFzcyBWaXNpYmxlUG9zaXRpb247CiAKQEAgLTEzNyw2ICsxMzgsOCBAQCBwdWJsaWM6
CiAgICAgUmVuZGVyT2JqZWN0KE5vZGUqKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJPYmplY3QoKTsK
IAorICAgIFJlbmRlclRoZW1lKiB0aGVtZSgpIGNvbnN0OworCiAgICAgdmlydHVhbCBjb25zdCBj
aGFyKiByZW5kZXJOYW1lKCkgY29uc3QgPSAwOwogCiAgICAgUmVuZGVyT2JqZWN0KiBwYXJlbnQo
KSBjb25zdCB7IHJldHVybiBtX3BhcmVudDsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWUuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCmlu
ZGV4IGU2N2U2MTIuLjUyMzgyNjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKQEAgLTQ5
LDYgKzQ5LDEzIEBAIFJlbmRlclRoZW1lOjpSZW5kZXJUaGVtZSgpCiB7CiB9CiAKKy8vIFdoZW4g
dGhlIHRoZW1lIGlzIG5lZWRlZCBpbiBub24tcGFnZSBkZXBlbmRlbnQgY29kZSwgdGhlIGRlZmF1
bHRUaGVtZSgpIGlzIHVzZWQgYXMgZmFsbGJhY2suCitSZW5kZXJUaGVtZSogZGVmYXVsdFRoZW1l
KCkKK3sKKyAgICBzdGF0aWMgUmVuZGVyVGhlbWUqIHJ0ID0gUmVuZGVyVGhlbWU6OmNyZWF0ZSgp
OworICAgIHJldHVybiBydDsKK30KKwogdm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0U3R5bGUoQ1NT
U3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgVUFIYXNBcHBlYXJhbmNlLCBjb25z
dCBCb3JkZXJEYXRhJiBib3JkZXIsIGNvbnN0IEZpbGxMYXllciYgYmFja2dyb3VuZCwgY29uc3Qg
Q29sb3ImIGJhY2tncm91bmRDb2xvcikKIHsKQEAgLTYyLDcgKzY5LDcgQEAgdm9pZCBSZW5kZXJU
aGVtZTo6YWRqdXN0U3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxl
KiBzdHlsZSwgRWwKICAgICBlbHNlIGlmIChzdHlsZS0+ZGlzcGxheSgpID09IENPTVBBQ1QgfHwg
c3R5bGUtPmRpc3BsYXkoKSA9PSBSVU5fSU4gfHwgc3R5bGUtPmRpc3BsYXkoKSA9PSBMSVNUX0lU
RU0gfHwgc3R5bGUtPmRpc3BsYXkoKSA9PSBUQUJMRSkKICAgICAgICAgc3R5bGUtPnNldERpc3Bs
YXkoQkxPQ0spOwogCi0gICAgaWYgKFVBSGFzQXBwZWFyYW5jZSAmJiB0aGVtZSgpLT5pc0NvbnRy
b2xTdHlsZWQoc3R5bGUsIGJvcmRlciwgYmFja2dyb3VuZCwgYmFja2dyb3VuZENvbG9yKSkgewor
ICAgIGlmIChVQUhhc0FwcGVhcmFuY2UgJiYgaXNDb250cm9sU3R5bGVkKHN0eWxlLCBib3JkZXIs
IGJhY2tncm91bmQsIGJhY2tncm91bmRDb2xvcikpIHsKICAgICAgICAgaWYgKHBhcnQgPT0gTWVu
dWxpc3RQYXJ0KSB7CiAgICAgICAgICAgICBzdHlsZS0+c2V0QXBwZWFyYW5jZShNZW51bGlzdEJ1
dHRvblBhcnQpOwogICAgICAgICAgICAgcGFydCA9IE1lbnVsaXN0QnV0dG9uUGFydDsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmggYi9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZS5oCmluZGV4IGJjODFkNGQuLmRhNTRkODcgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWUuaApAQCAtMjksOCArMjksMTAgQEAKICNlbHNlCiAjaW5jbHVkZSAiVGhlbWVUeXBlcy5o
IgogI2VuZGlmCisjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBl
cy5oIgogCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRWxlbWVudDsKQEAgLTQzLDYg
KzQ1LDEyIEBAIHB1YmxpYzoKICAgICBSZW5kZXJUaGVtZSgpOwogICAgIHZpcnR1YWwgflJlbmRl
clRoZW1lKCkgeyB9CiAKKyAgICAvLyBGdW5jdGlvbiB0byBjcmVhdGUgYSB0aGVtZS4gQSB0aGVt
ZSBpcyBjcmVhdGVkIGZvciBlYWNoIHBhZ2UgYnkgdXNpbmcgdGhlIFJlbmRlclRoZW1lOjpjcmVh
dGUoKSBtZXRob2QuCisgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyB0byBiZSBpbXBsZW1lbnRlZCBp
biB5b3VyIHBsYXRmb3JtLXNwZWNpZmljIHRoZW1lIGltcGxlbWVudGF0aW9uIHRvIGhhbmQgYmFj
ayB0aGUKKyAgICAvLyBhcHByb3ByaWF0ZSBwbGF0Zm9ybSB0aGVtZS4gV2hlbiB0aGUgdGhlbWUg
aXMgbmVlZGVkIGluIG5vbi1wYWdlIGRlcGVuZGVudCBjb2RlLCBhIGRlZmF1bHQgdGhlbWUgaXMK
KyAgICAvLyB1c2VkIGFzIGZhbGxiYWNrLCB3aGljaCBpcyBjcmVhdGVkIHdpdGggYSBudWxsZWQg
cGFnZSwgc28gdGhlIHBsYXRmb3JtIGNvZGUgbmVlZHMgdG8gYWNjb3VudCBmb3IgdGhpcy4KKyAg
ICBzdGF0aWMgUmVuZGVyVGhlbWUqIGNyZWF0ZShQYWdlKiBwYWdlID0gMCk7CisKICAgICAvLyBU
aGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbmV2ZXIgc3R5bGUgaGFzIGJlZW4gY29tcHV0ZWQgZm9y
IGFuIGVsZW1lbnQgYW5kIHRoZSBhcHBlYXJhbmNlCiAgICAgLy8gcHJvcGVydHkgaGFzIGJlZW4g
c2V0IHRvIGEgdmFsdWUgb3RoZXIgdGhhbiAibm9uZSIuICBUaGUgdGhlbWUgc2hvdWxkIG1hcCBp
biBhbGwgb2YgdGhlIGFwcHJvcHJpYXRlCiAgICAgLy8gbWV0cmljcyBhbmQgZGVmYXVsdHMgZ2l2
ZW4gdGhlIGNvbnRlbnRzIG9mIHRoZSBzdHlsZS4gIFRoaXMgaW5jbHVkZXMgc29waGlzdGljYXRl
ZCBvcGVyYXRpb25zIGxpa2UKQEAgLTI1Nyw5ICsyNjUsOCBAQCBwcml2YXRlOgogI2VuZGlmCiB9
OwogCi0vLyBGdW5jdGlvbiB0byBvYnRhaW4gdGhlIHRoZW1lLiAgVGhpcyBpcyBpbXBsZW1lbnRl
ZCBpbiB5b3VyIHBsYXRmb3JtLXNwZWNpZmljIHRoZW1lIGltcGxlbWVudGF0aW9uIHRvIGhhbmQK
LS8vIGJhY2sgdGhlIGFwcHJvcHJpYXRlIHBsYXRmb3JtIHRoZW1lLgotUmVuZGVyVGhlbWUqIHRo
ZW1lKCk7CisvLyBXaGVuIHRoZSB0aGVtZSBpcyBuZWVkZWQgaW4gbm9uLXBhZ2UgZGVwZW5kZW50
IGNvZGUsIHRoZSBkZWZhdWx0VGhlbWUoKSBpcyB1c2VkIGFzIGZhbGxiYWNrLgorUmVuZGVyVGhl
bWUqIGRlZmF1bHRUaGVtZSgpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5jcHAgYi9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguY3BwCmluZGV4IDk0ZWU2NGYu
LjBlMWQwOTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21p
dW1MaW51eC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxp
bnV4LmNwcApAQCAtMTEzLDEwICsxMTMsOSBAQCBzdGF0aWMgSFRNTE1lZGlhRWxlbWVudCogbWVk
aWFFbGVtZW50UGFyZW50KE5vZGUqIG5vZGUpCiB9CiAjZW5kaWYKIAotUmVuZGVyVGhlbWUqIHRo
ZW1lKCkKK1JlbmRlclRoZW1lKiBSZW5kZXJUaGVtZTo6Y3JlYXRlKFBhZ2UqKQogewotICAgIHN0
YXRpYyBSZW5kZXJUaGVtZUNocm9taXVtTGludXggdGhlbWU7Ci0gICAgcmV0dXJuICZ0aGVtZTsK
KyAgICByZXR1cm4gbmV3IFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eCgpOwogfQogCiBSZW5kZXJU
aGVtZUNocm9taXVtTGludXg6OlJlbmRlclRoZW1lQ2hyb21pdW1MaW51eCgpCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTWFjLm1tIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bU1hYy5tbQppbmRleCBmNjA4MWE1Li41NTgyNTE3
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTWFjLm1t
CisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1NYWMubW0KQEAgLTEy
NCwxMCArMTI0LDkgQEAgSW50UmVjdCBOU1JlY3RUb0ludFJlY3QoY29uc3QgTlNSZWN0ICYgcmVj
dCkKICAgICByZXR1cm4gSW50UmVjdChyZWN0Lm9yaWdpbi54LCByZWN0Lm9yaWdpbi55LCByZWN0
LnNpemUud2lkdGgsIHJlY3Quc2l6ZS5oZWlnaHQpOwogfQogCi1SZW5kZXJUaGVtZSogdGhlbWUo
KQorUmVuZGVyVGhlbWUqIFJlbmRlclRoZW1lOjpjcmVhdGUoUGFnZSopCiB7Ci0gICAgc3RhdGlj
IFJlbmRlclRoZW1lQ2hyb21pdW1NYWMqIG1hY1RoZW1lID0gbmV3IFJlbmRlclRoZW1lQ2hyb21p
dW1NYWM7Ci0gICAgcmV0dXJuIG1hY1RoZW1lOworICAgIHJldHVybiBuZXcgUmVuZGVyVGhlbWVD
aHJvbWl1bU1hYzsKIH0KIAogUmVuZGVyVGhlbWVDaHJvbWl1bU1hYzo6UmVuZGVyVGhlbWVDaHJv
bWl1bU1hYygpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9t
aXVtV2luLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1XaW4uY3Bw
CmluZGV4IDUyODgxOTEuLjQyMjM0YTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lQ2hyb21pdW1XaW4uY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lQ2hyb21pdW1XaW4uY3BwCkBAIC0yNjUsMTEgKzI2NSwxMCBAQCBzdGF0aWMgSFRNTE1lZGlh
RWxlbWVudCogbWVkaWFFbGVtZW50UGFyZW50KE5vZGUqIG5vZGUpCiB9CiAjZW5kaWYKIAotLy8g
SW1wbGVtZW50IFdlYkNvcmU6OnRoZW1lKCkgZm9yIGdldHRpbmcgdGhlIGdsb2JhbCBSZW5kZXJU
aGVtZS4KLVJlbmRlclRoZW1lKiB0aGVtZSgpCisvLyBJbXBsZW1lbnQgV2ViQ29yZTo6dGhlbWUo
KSBmb3IgZ2V0dGluZyB0aGUgUmVuZGVyVGhlbWUuCitSZW5kZXJUaGVtZSogUmVuZGVyVGhlbWU6
OmNyZWF0ZShQYWdlKikKIHsKLSAgICBzdGF0aWMgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbiB3aW5U
aGVtZTsKLSAgICByZXR1cm4gJndpblRoZW1lOworICAgIHJldHVybiBuZXcgUmVuZGVyVGhlbWVD
aHJvbWl1bVdpbigpOwogfQogCiBTdHJpbmcgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6ZXh0cmFE
ZWZhdWx0U3R5bGVTaGVldCgpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZU1hYy5tbSBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCmluZGV4IGMz
ZWM5MWEuLjdkODcxNzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
TWFjLm1tCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC0xMDEs
MTAgKzEwMSw5IEBAIGVudW0gewogICAgIGxlZnRQYWRkaW5nCiB9OwogCi1SZW5kZXJUaGVtZSog
dGhlbWUoKQorUmVuZGVyVGhlbWUqIFJlbmRlclRoZW1lOjpjcmVhdGUoUGFnZSopCiB7Ci0gICAg
c3RhdGljIFJlbmRlclRoZW1lTWFjKiBtYWNUaGVtZSA9IG5ldyBSZW5kZXJUaGVtZU1hYzsKLSAg
ICByZXR1cm4gbWFjVGhlbWU7CisgICAgcmV0dXJuIG5ldyBSZW5kZXJUaGVtZU1hYzsKIH0KIAog
UmVuZGVyVGhlbWVNYWM6OlJlbmRlclRoZW1lTWFjKCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lU2FmYXJpLmNwcAppbmRleCAzYWZmZDFmLi45MDc2Zjk2IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVTYWZhcmkuY3BwCkBAIC02NSwxMyArNjUsMTEgQEAgZW51bSB7CiAgICAgbGVm
dFBhZGRpbmcKIH07CiAKLVJlbmRlclRoZW1lKiB0aGVtZSgpCitSZW5kZXJUaGVtZSogUmVuZGVy
VGhlbWU6OmNyZWF0ZShQYWdlKikKIHsKLSAgICBzdGF0aWMgUmVuZGVyVGhlbWVTYWZhcmkgc2Fm
YXJpVGhlbWU7Ci0gICAgc3RhdGljIFJlbmRlclRoZW1lV2luIHdpbmRvd3NUaGVtZTsKICAgICBp
ZiAoU2V0dGluZ3M6OnNob3VsZFBhaW50TmF0aXZlQ29udHJvbHMoKSkKLSAgICAgICAgcmV0dXJu
ICZ3aW5kb3dzVGhlbWU7Ci0gICAgcmV0dXJuICZzYWZhcmlUaGVtZTsKKyAgICAgICAgcmV0dXJu
IG5ldyBSZW5kZXJUaGVtZVdpbigpOworICAgIHJldHVybiBuZXcgUmVuZGVyVGhlbWVTYWZhcmko
KTsKIH0KIAogI2lmICFkZWZpbmVkKE5ERUJVRykgJiYgZGVmaW5lZChVU0VfREVCVUdfU0FGQVJJ
X1RIRU1FKQotLSAKMS42LjAuNAoK
</data>
<flag name="review"
          id="15848"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31200</attachid>
            <date>2009-06-12 10:23:43 -0700</date>
            <delta_ts>2009-06-12 10:26:55 -0700</delta_ts>
            <desc>Now using RefPtr.</desc>
            <filename>using-refptr.patch</filename>
            <type>text/plain</type>
            <size>35520</size>
            <attacher name="Kenneth Rohde Christiansen">kenneth</attacher>
            
              <data encoding="base64">RnJvbSBhODY0YTNiNjdiNzNhNWQyNmRlZjE1NjU4NjNjYTU3YWI1YWEyMDFiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiA8a2VubmV0aEBz
cGlzbmlnZWwub3NtdGMuaW5kdC5vcmcuYnI+CkRhdGU6IEZyaSwgMTIgSnVuIDIwMDkgMTM6MDE6
MDkgLTAzMDAKU3ViamVjdDogW1BBVENIXSAyMDA5LTA2LTEyICBLZW5uZXRoIFJvaGRlIENocmlz
dGlhbnNlbiAgPGtlbm5ldGguY2hyaXN0aWFuc2VuQG9wZW5ib3NzYS5vcmc+CgogICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBDcmVhdGUgYSBkaWZmZXJlbnQgUmVu
ZGVyVGhlbWUgcGVyIHBhZ2UsIHNvIHRoYXQgUmVuZGVyVGhlbWUgaGFzCiAgICAgICAgYWNjZXNz
IHRvIHBhZ2Ugc3BlY2lmaWMgdGhlbWluZy4gVGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBRdCBwb3J0
LCBhcyBRdAogICAgICAgIHN1cHBvcnRzIHNldHRpbmcgdGhlIHRoZW1lIChzdHlsZSkgcGVyIHdp
ZGdldC4KCiAgICAgICAgVGhpcyBjaGFuZ2Ugd2FzIHN1Z2dlc3RlZCBhbmQgZGlzY3Vzc2VkIHdp
dGggRGF2ZSBIeWF0dC4KCiAgICAgICAgTW9yZSBkZXRhaWxlZDoKCiAgICAgICAgMSkgQ3JlYXRl
IGEgdGhlbWUgcGVyIHBhZ2Ugb3Igb25lIGdsb2JhbCBvbmUsIGRlcGVuZGluZyBvbiB0aGUgbmVl
ZHMKICAgICAgICAgICBvZiB0aGUgcGxhdGZvcm0uCiAgICAgICAgMikgQWRkIGFuIGFjY2Vzc2Vy
IHRvIHRoZSB0aGVtZSBmcm9tIFJlbmRlck9iamVjdC4KICAgICAgICAzKSBDaGFuZ2UgYWxsIHVz
ZXMgb2YgdGhlIHRoZW1pbmcgdG8gYWNjZXNzIHRoZSB0aGVtZSB0aHJvdWdoCiAgICAgICAgICAg
UmVuZGVyT2JqZWN0LCB1c2luZyB0aGUgZ2xvYmFsIGRlZmF1bHQgdGhlbWUgYXMgZmFsbGJhY2ss
IHdoZW4gdGhlCiAgICAgICAgICAgZG9jdW1lbnQgb2YgUmVuZGVyT2JqZWN0IGhhcyBubyBwYWdl
LgogICAgICAgICAgIFdoZW4gd2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gYSBSZW5kZXJPYmplY3Qs
IHVzZSB0aGUgZGVmYXVsdCB0aGVtZS4KICAgICAgICA0KSBNb2RpZnkgYWxsIFJlbmRlclRoZW1l
IHBsYXRmb3JtIGltcGxlbWVudGF0aW9ucyB0byB3b3JrIHdpdGggdGhlCiAgICAgICAgICAgYWJv
dmUgY2hhbmdlcywgc3RpbGwgY3JlYXRpbmcgb25seSBvbmUgZ2xvYmFsIHRoZW1lLgotLS0KIFdl
YkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE2NiAr
KysrKysrKysrKysrKysrKysrKwogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHAgICAgfCAgICAyICstCiBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNw
cCAgICAgICAgICAgICAgICAgICB8ICAgMTIgKy0KIFdlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUu
Y3BwICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCArLQogV2ViQ29yZS9lZGl0aW5nL1NlbGVj
dGlvbkNvbnRyb2xsZXIuY3BwICAgICAgICAgICAgfCAgICAzICstCiBXZWJDb3JlL2h0bWwvSFRN
TEZvcm1Db250cm9sRWxlbWVudC5jcHAgICAgICAgICAgICB8ICAgIDQgKy0KIFdlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcCAgICAgICAgICAgICAgICAgIHwgICAgNiArLQogV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBX
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDYg
Ky0KIFdlYkNvcmUvcGFnZS9QYWdlLmNwcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
ICAgMiArCiBXZWJDb3JlL3BhZ2UvUGFnZS5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgIDcgKy0KIFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0u
Y3BwICAgIHwgICAgNCArLQogV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3Bw
ICAgICAgICAgICAgfCAgIDI0ICsrLS0KIFdlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVR
dC5jcHAgICAgICAgICAgICAgIHwgICAgOSArLQogV2ViQ29yZS9wbGF0Zm9ybS93eC9SZW5kZXJU
aGVtZVd4LmNwcCAgICAgICAgICAgICAgfCAgICA2ICstCiBXZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVUZXh0Qm94LmNwcCAgICAgICAgICAgICAgICB8ICAgIDUgKy0KIFdlYkNvcmUvcmVuZGVyaW5n
L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCAgICAgICAgIHwgICAgMiArLQogV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCAgICAgICAgICAgICAgICAgfCAgICA5ICstCiBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCAgICAgICAgICAgICAgICAgICB8ICAgIDMgKwogV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwICAgICAgICAgICAgICAgICAgfCAgICA4ICst
CiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oICAgICAgICAgICAgICAgICAgICB8ICAg
MTcgKystCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguY3BwICAg
ICB8ICAgIDYgKy0KIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1NYWMubW0g
ICAgICAgIHwgICAgNiArLQogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdp
bi5jcHAgICAgICAgfCAgICA3ICstCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5t
bSAgICAgICAgICAgICAgICB8ICAgIDYgKy0KIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
U2FmYXJpLmNwcCAgICAgICAgICAgIHwgICAxOCArKy0KIDI2IGZpbGVzIGNoYW5nZWQsIDI3NCBp
bnNlcnRpb25zKCspLCA3MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGYzYjJkYjcuLjkwZmMzNTMgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTY5IEBACisyMDA5LTA2LTEyICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGgu
Y2hyaXN0aWFuc2VuQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQ3JlYXRlIGEgZGlmZmVyZW50IFJlbmRlclRoZW1lIHBlciBw
YWdlLCBzbyB0aGF0IFJlbmRlclRoZW1lIGhhcworICAgICAgICBhY2Nlc3MgdG8gcGFnZSBzcGVj
aWZpYyB0aGVtaW5nLiBUaGlzIGlzIG5lZWRlZCBmb3IgdGhlIFF0IHBvcnQsIGFzIFF0CisgICAg
ICAgIHN1cHBvcnRzIHNldHRpbmcgdGhlIHRoZW1lIChzdHlsZSkgcGVyIHdpZGdldC4KKworICAg
ICAgICBUaGlzIGNoYW5nZSB3YXMgc3VnZ2VzdGVkIGFuZCBkaXNjdXNzZWQgd2l0aCBEYXZlIEh5
YXR0LgorCisgICAgICAgIE1vcmUgZGV0YWlsZWQ6CisKKyAgICAgICAgMSkgQ3JlYXRlIGEgdGhl
bWUgcGVyIHBhZ2Ugb3Igb25lIGdsb2JhbCBvbmUsIGRlcGVuZGluZyBvbiB0aGUgbmVlZHMKKyAg
ICAgICAgICAgb2YgdGhlIHBsYXRmb3JtLgorICAgICAgICAyKSBBZGQgYW4gYWNjZXNzZXIgdG8g
dGhlIHRoZW1lIGZyb20gUmVuZGVyT2JqZWN0LgorICAgICAgICAzKSBDaGFuZ2UgYWxsIHVzZXMg
b2YgdGhlIHRoZW1pbmcgdG8gYWNjZXNzIHRoZSB0aGVtZSB0aHJvdWdoCisgICAgICAgICAgIFJl
bmRlck9iamVjdCwgdXNpbmcgdGhlIGdsb2JhbCBkZWZhdWx0IHRoZW1lIGFzIGZhbGxiYWNrLCB3
aGVuIHRoZQorICAgICAgICAgICBkb2N1bWVudCBvZiBSZW5kZXJPYmplY3QgaGFzIG5vIHBhZ2Uu
CisgICAgICAgICAgIFdoZW4gd2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gYSBSZW5kZXJPYmplY3Qs
IHVzZSB0aGUgZGVmYXVsdCB0aGVtZS4KKyAgICAgICAgNCkgTW9kaWZ5IGFsbCBSZW5kZXJUaGVt
ZSBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbnMgdG8gd29yayB3aXRoIHRoZQorICAgICAgICAgICBh
Ym92ZSBjaGFuZ2VzLCBzdGlsbCBjcmVhdGluZyBvbmx5IG9uZSBnbG9iYWwgdGhlbWUuCisKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Ym91bmRpbmdCb3hSZWN0
KToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpsb2FkRnVsbERlZmF1bHRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVj
dG9yOjpzdHlsZUZvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rv
cjo6YWRqdXN0UmVuZGVyU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rv
cjo6YXBwbHlQcm9wZXJ0eSk6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6c2V0QWN0aXZlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRhaW5lck5vZGU6OnNldEhvdmVyZWQpOgorICAgICAgICAqIGVkaXRpbmcvU2VsZWN0
aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25Db250cm9sbGVy
Ojpmb2N1c2VkT3JBY3RpdmVTdGF0ZUNoYW5nZWQpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1D
b250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNldENoZWNrZWQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6c2V0SW5kZXRlcm1pbmF0ZSk6
CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c2Vs
ZWN0aW9uTGF5b3V0Q2hhbmdlZCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp1cGRhdGVDb250cm9sVGludHMpOgorICAgICAgICAq
IHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAg
KiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnRoZW1lKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQb3B1cExpc3RCb3g6OnBhaW50Um93KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVu
ZGVyVGhlbWVHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnRoZW1lRm9y
UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6UmVuZGVyVGhlbWVHdGsp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6On5SZW5kZXJUaGVtZUd0ayk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6Z3RrRW50cnkpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVHdGs6Omd0a1RyZWVWaWV3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9x
dC9SZW5kZXJUaGVtZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjp0aGVt
ZUZvclBhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL3d4L1JlbmRlclRoZW1lV3guY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJv
eDo6cGFpbnRUZXh0TWF0Y2hNYXJrZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9NZWRpYUNvbnRy
b2xFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xJbnB1dEVsZW1l
bnQ6OmhpdFRlc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojp0aGVtZSk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpkZWZhdWx0VGhlbWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWU6OmFkanVzdFN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2UpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUaGVtZUNocm9taXVtTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWU6OnRoZW1lRm9yUGFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hy
b21pdW1XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFn
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRoZW1lU2FmYXJpLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjp0aGVt
ZUZvclBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmNyZWF0ZSk6CisKKzIw
MDktMDYtMDkgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aC5jaHJpc3RpYW5z
ZW5AZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIENyZWF0ZSBhIGRpZmZlcmVudCBSZW5kZXJUaGVtZSBwZXIgcGFnZSwgc28gdGhhdCBS
ZW5kZXJUaGVtZSBoYXMKKyAgICAgICAgYWNjZXNzIHRvIHBhZ2Ugc3BlY2lmaWMgdGhlbWluZy4g
VGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBRdCBwb3J0LCBhcyBRdAorICAgICAgICBzdXBwb3J0cyBz
ZXR0aW5nIHRoZSB0aGVtZSAoc3R5bGUpIHBlciB3aWRnZXQuCisKKyAgICAgICAgVGhpcyBjaGFu
Z2Ugd2FzIHN1Z2dlc3RlZCBhbmQgZGlzY3Vzc2VkIHdpdGggRGF2ZSBIeWF0dC4KKworICAgICAg
ICBNb3JlIGRldGFpbGVkOgorCisgICAgICAgIDEpIENyZWF0ZSBhIHRoZW1lIHBlciBwYWdlLCBw
bHVzIGEgZGVmYXVsdCBvbmUgdG8gYWNjZXNzIGZyb20gbm9uLXBhZ2UKKyAgICAgICAgICAgZGVw
ZW5kZW50IGNvZGUuCisgICAgICAgIDIpIEFkZCBhbiBhY2Nlc3NlciB0byB0aGUgdGhlbWUgZnJv
bSBSZW5kZXJPYmplY3QuCisgICAgICAgIDMpIENoYW5nZSBhbGwgdXNlcyBvZiB0aGUgdGhlbWlu
ZyB0byBhY2Nlc3MgdGhlIHRoZW1lIHRocm91Z2gKKyAgICAgICAgICAgUmVuZGVyT2JqZWN0LCB1
c2luZyB0aGUgZ2xvYmFsIGRlZmF1bHQgdGhlbWUgYXMgZmFsbGJhY2ssIHdoZW4gdGhlCisgICAg
ICAgICAgIGRvY3VtZW50IG9mIFJlbmRlck9iamVjdCBoYXMgbm8gcGFnZS4KKyAgICAgICAgICAg
V2hlbiB3ZSBkb24ndCBoYXZlIGFjY2VzcyB0byBhIFJlbmRlck9iamVjdCwgdXNlIHRoZSBkZWZh
dWx0IHRoZW1lLgorICAgICAgICA0KSBNb2RpZnkgYWxsIFJlbmRlclRoZW1lIHBsYXRmb3JtIGlt
cGxlbWVudGF0aW9ucyB0byB3b3JrIHdpdGggdGhlCisgICAgICAgICAgIGFib3ZlIGNoYW5nZXMu
CisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Ym91bmRpbmdC
b3hSZWN0KToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpsb2FkRnVsbERlZmF1bHRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHls
ZVNlbGVjdG9yOjpzdHlsZUZvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVT
ZWxlY3Rvcjo6YWRqdXN0UmVuZGVyU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVT
ZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eSk6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6c2V0QWN0aXZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnNldEhvdmVyZWQpOgorICAgICAgICAqIGVkaXRpbmcv
U2VsZWN0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25Db250
cm9sbGVyOjpmb2N1c2VkT3JBY3RpdmVTdGF0ZUNoYW5nZWQpOgorICAgICAgICAqIGh0bWwvSFRN
TEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRy
b2xFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNldENo
ZWNrZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6c2V0SW5kZXRlcm1p
bmF0ZSk6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZTo6c2VsZWN0aW9uTGF5b3V0Q2hhbmdlZCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp1cGRhdGVDb250cm9sVGludHMpOgorICAg
ICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2U6On5QYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnRo
ZW1lKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1
bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cExpc3RCb3g6
OnBhaW50Um93KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZGVmYXVsdFRoZW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OlJlbmRl
clRoZW1lR3RrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjp+UmVuZGVyVGhl
bWVHdGspOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6Omd0a0VudHJ5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpndGtUcmVlVmlldyk6CisgICAgICAgICog
cGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkZWZhdWx0
VGhlbWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmNyZWF0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vd3gvUmVuZGVyVGhlbWVXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZTo6Y3JlYXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludFRleHRNYXRjaE1hcmtlcik6
CisgICAgICAgICogcmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhQ29udHJvbElucHV0RWxlbWVudDo6aGl0VGVzdCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmpl
Y3Q6OnRoZW1lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lOjphZGp1c3RTdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpkZWZhdWx0VGhlbWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUaGVtZUNocm9taXVtTGludXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6
OmNyZWF0ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1NYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6Y3JlYXRlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZTo6Y3JlYXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6Y3JlYXRlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWU6OmNyZWF0ZSk6CisKIDIwMDktMDYtMDMgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8
a2VubmV0aC5jaHJpc3RpYW5zZW5Ab3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBTaW1vbiBIYXVzbWFubi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCA4YzUyMmExLi4xNzQwYjRiIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysr
IGIvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBA
IC0xMDA4LDcgKzEwMDgsNyBAQCBJbnRSZWN0IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmJv
dW5kaW5nQm94UmVjdCgpIGNvbnN0CiAgICAgICAgIEludFJlY3QgciA9IHF1YWRzW2ldLmVuY2xv
c2luZ0JvdW5kaW5nQm94KCk7CiAgICAgICAgIGlmICghci5pc0VtcHR5KCkpIHsKICAgICAgICAg
ICAgIGlmIChvYmotPnN0eWxlKCktPmhhc0FwcGVhcmFuY2UoKSkKLSAgICAgICAgICAgICAgICB0
aGVtZSgpLT5hZGp1c3RSZXBhaW50UmVjdChvYmosIHIpOworICAgICAgICAgICAgICAgIG9iai0+
dGhlbWUoKS0+YWRqdXN0UmVwYWludFJlY3Qob2JqLCByKTsKICAgICAgICAgICAgIHJlc3VsdC51
bml0ZShyKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1N0
eWxlU2VsZWN0b3IuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKaW5kZXgg
YzhmZTIzNC4uMjVhMGZmMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rv
ci5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTUxNiwxMyAr
NTE2LDEzIEBAIHN0YXRpYyB2b2lkIGxvYWRGdWxsRGVmYXVsdFN0eWxlKCkKICAgICB9CiAKICAg
ICAvLyBTdHJpY3QtbW9kZSBydWxlcy4KLSAgICBTdHJpbmcgZGVmYXVsdFJ1bGVzID0gU3RyaW5n
KGh0bWw0VXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKGh0bWw0VXNlckFnZW50U3R5bGVTaGVl
dCkpICsgdGhlbWUoKS0+ZXh0cmFEZWZhdWx0U3R5bGVTaGVldCgpOworICAgIFN0cmluZyBkZWZh
dWx0UnVsZXMgPSBTdHJpbmcoaHRtbDRVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YoaHRtbDRV
c2VyQWdlbnRTdHlsZVNoZWV0KSkgKyBkZWZhdWx0VGhlbWUoKS0+ZXh0cmFEZWZhdWx0U3R5bGVT
aGVldCgpOwogICAgIENTU1N0eWxlU2hlZXQqIGRlZmF1bHRTaGVldCA9IHBhcnNlVUFTaGVldChk
ZWZhdWx0UnVsZXMpOwogICAgIGRlZmF1bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoZGVmYXVs
dFNoZWV0LCBzY3JlZW5FdmFsKCkpOwogICAgIGRlZmF1bHRQcmludFN0eWxlLT5hZGRSdWxlc0Zy
b21TaGVldChkZWZhdWx0U2hlZXQsIHByaW50RXZhbCgpKTsKIAogICAgIC8vIFF1aXJrcy1tb2Rl
IHJ1bGVzLgotICAgIFN0cmluZyBxdWlya3NSdWxlcyA9IFN0cmluZyhxdWlya3NVc2VyQWdlbnRT
dHlsZVNoZWV0LCBzaXplb2YocXVpcmtzVXNlckFnZW50U3R5bGVTaGVldCkpICsgdGhlbWUoKS0+
ZXh0cmFRdWlya3NTdHlsZVNoZWV0KCk7CisgICAgU3RyaW5nIHF1aXJrc1J1bGVzID0gU3RyaW5n
KHF1aXJrc1VzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihxdWlya3NVc2VyQWdlbnRTdHlsZVNo
ZWV0KSkgKyBkZWZhdWx0VGhlbWUoKS0+ZXh0cmFRdWlya3NTdHlsZVNoZWV0KCk7CiAgICAgQ1NT
U3R5bGVTaGVldCogcXVpcmtzU2hlZXQgPSBwYXJzZVVBU2hlZXQocXVpcmtzUnVsZXMpOwogICAg
IGRlZmF1bHRRdWlya3NTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQocXVpcmtzU2hlZXQsIHNjcmVl
bkV2YWwoKSk7CiB9CkBAIC0xMTI4LDcgKzExMjgsNyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxl
PiBDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZvckVsZW1lbnQoRWxlbWVudCogZSwgUmVuZGVyU3R5
bAogICAgIHN0YXRpYyBib29sIGxvYWRlZE1lZGlhU3R5bGVTaGVldDsKICAgICBpZiAoIWxvYWRl
ZE1lZGlhU3R5bGVTaGVldCAmJiAoZS0+aGFzVGFnTmFtZSh2aWRlb1RhZykgfHwgZS0+aGFzVGFn
TmFtZShhdWRpb1RhZykpKSB7CiAgICAgICAgIGxvYWRlZE1lZGlhU3R5bGVTaGVldCA9IHRydWU7
Ci0gICAgICAgIFN0cmluZyBtZWRpYVJ1bGVzID0gU3RyaW5nKG1lZGlhQ29udHJvbHNVc2VyQWdl
bnRTdHlsZVNoZWV0LCBzaXplb2YobWVkaWFDb250cm9sc1VzZXJBZ2VudFN0eWxlU2hlZXQpKSAr
IHRoZW1lKCktPmV4dHJhTWVkaWFDb250cm9sc1N0eWxlU2hlZXQoKTsKKyAgICAgICAgU3RyaW5n
IG1lZGlhUnVsZXMgPSBTdHJpbmcobWVkaWFDb250cm9sc1VzZXJBZ2VudFN0eWxlU2hlZXQsIHNp
emVvZihtZWRpYUNvbnRyb2xzVXNlckFnZW50U3R5bGVTaGVldCkpICsgZGVmYXVsdFRoZW1lKCkt
PmV4dHJhTWVkaWFDb250cm9sc1N0eWxlU2hlZXQoKTsKICAgICAgICAgQ1NTU3R5bGVTaGVldCog
bWVkaWFDb250cm9sc1NoZWV0ID0gcGFyc2VVQVNoZWV0KG1lZGlhUnVsZXMpOwogICAgICAgICBk
ZWZhdWx0U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KG1lZGlhQ29udHJvbHNTaGVldCwgc2NyZWVu
RXZhbCgpKTsKICAgICAgICAgZGVmYXVsdFByaW50U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KG1l
ZGlhQ29udHJvbHNTaGVldCwgcHJpbnRFdmFsKCkpOwpAQCAtMTU3OSw3ICsxNTc5LDcgQEAgdm9p
ZCBDU1NTdHlsZVNlbGVjdG9yOjphZGp1c3RSZW5kZXJTdHlsZShSZW5kZXJTdHlsZSogc3R5bGUs
IEVsZW1lbnQgKmUpCiAKICAgICAvLyBMZXQgdGhlIHRoZW1lIGFsc28gaGF2ZSBhIGNyYWNrIGF0
IGFkanVzdGluZyB0aGUgc3R5bGUuCiAgICAgaWYgKHN0eWxlLT5oYXNBcHBlYXJhbmNlKCkpCi0g
ICAgICAgIHRoZW1lKCktPmFkanVzdFN0eWxlKHRoaXMsIHN0eWxlLCBlLCBtX2hhc1VBQXBwZWFy
YW5jZSwgbV9ib3JkZXJEYXRhLCBtX2JhY2tncm91bmREYXRhLCBtX2JhY2tncm91bmRDb2xvcik7
CisgICAgICAgIGRlZmF1bHRUaGVtZSgpLT5hZGp1c3RTdHlsZSh0aGlzLCBzdHlsZSwgZSwgbV9o
YXNVQUFwcGVhcmFuY2UsIG1fYm9yZGVyRGF0YSwgbV9iYWNrZ3JvdW5kRGF0YSwgbV9iYWNrZ3Jv
dW5kQ29sb3IpOwogCiAjaWYgRU5BQkxFKFNWRykKICAgICBpZiAoZSAmJiBlLT5pc1NWR0VsZW1l
bnQoKSkgewpAQCAtNDM3Niw3ICs0Mzc2LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBs
eVByb3BlcnR5KGludCBpZCwgQ1NTVmFsdWUgKnZhbHVlKQogICAgICAgICAgICAgbV9saW5lSGVp
Z2h0VmFsdWUgPSAwOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBGb250RGVzY3JpcHRpb24g
Zm9udERlc2NyaXB0aW9uOwotICAgICAgICAgICAgdGhlbWUoKS0+c3lzdGVtRm9udChwcmltaXRp
dmVWYWx1ZS0+Z2V0SWRlbnQoKSwgZm9udERlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgIGRlZmF1
bHRUaGVtZSgpLT5zeXN0ZW1Gb250KHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpLCBmb250RGVz
Y3JpcHRpb24pOwogIAogICAgICAgICAgICAgLy8gRG91YmxlLWNoZWNrIGFuZCBzZWUgaWYgdGhl
IHRoZW1lIGRpZCBhbnl0aGluZy4gIElmIG5vdCwgZG9uJ3QgYm90aGVyIHVwZGF0aW5nIHRoZSBm
b250LgogICAgICAgICAgICAgaWYgKGZvbnREZXNjcmlwdGlvbi5pc0Fic29sdXRlU2l6ZSgpKSB7
CkBAIC01ODExLDcgKzU4MTEsNyBAQCBzdGF0aWMgQ29sb3IgY29sb3JGb3JDU1NWYWx1ZShpbnQg
Y3NzVmFsdWVJZCkKICAgICAgICAgaWYgKGNvbC0+Y3NzVmFsdWVJZCA9PSBjc3NWYWx1ZUlkKQog
ICAgICAgICAgICAgcmV0dXJuIGNvbC0+Y29sb3I7CiAgICAgfQotICAgIHJldHVybiB0aGVtZSgp
LT5zeXN0ZW1Db2xvcihjc3NWYWx1ZUlkKTsKKyAgICByZXR1cm4gZGVmYXVsdFRoZW1lKCktPnN5
c3RlbUNvbG9yKGNzc1ZhbHVlSWQpOwogfQogCiBDb2xvciBDU1NTdHlsZVNlbGVjdG9yOjpnZXRD
b2xvckZyb21QcmltaXRpdmVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUp
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1dlYkNvcmUvZG9t
L0NvbnRhaW5lck5vZGUuY3BwCmluZGV4IDI1NzM5MDguLjIwY2M3YTMgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5v
ZGUuY3BwCkBAIC03OTgsNyArNzk4LDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpzZXRBY3RpdmUo
Ym9vbCBkb3duLCBib29sIHBhdXNlKQogICAgICAgICBpZiAocmVhY3RzVG9QcmVzcykKICAgICAg
ICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICAgICAgaWYgKHJlbmRlcmVyKCkgJiYg
cmVuZGVyZXIoKS0+c3R5bGUoKS0+aGFzQXBwZWFyYW5jZSgpKSB7Ci0gICAgICAgICAgICBpZiAo
dGhlbWUoKS0+c3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIFByZXNzZWRTdGF0ZSkpCisgICAgICAg
ICAgICBpZiAocmVuZGVyZXIoKS0+dGhlbWUoKS0+c3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIFBy
ZXNzZWRTdGF0ZSkpCiAgICAgICAgICAgICAgICAgcmVhY3RzVG9QcmVzcyA9IHRydWU7CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKHJlYWN0c1RvUHJlc3MgJiYgcGF1c2UpIHsKQEAgLTg0MCw3ICs4
NDAsNyBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnNldEhvdmVyZWQoYm9vbCBvdmVyKQogICAgICAg
ICBpZiAocmVuZGVyZXIoKS0+c3R5bGUoKS0+YWZmZWN0ZWRCeUhvdmVyUnVsZXMoKSkKICAgICAg
ICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICAgICAgaWYgKHJlbmRlcmVyKCkgJiYg
cmVuZGVyZXIoKS0+c3R5bGUoKS0+aGFzQXBwZWFyYW5jZSgpKQotICAgICAgICAgICAgdGhlbWUo
KS0+c3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIEhvdmVyU3RhdGUpOworICAgICAgICAgICAgcmVu
ZGVyZXIoKS0+dGhlbWUoKS0+c3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIEhvdmVyU3RhdGUpOwog
ICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xs
ZXIuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDFk
MzZmNTEuLjc2Yzc4MjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250
cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAK
QEAgLTQ2LDcgKzQ2LDYgQEAKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCi0jaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNp
bmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiVHlwaW5nQ29tbWFuZC5oIgpAQCAtMTI2OCw3ICsxMjY3LDcgQEAgdm9pZCBTZWxlY3Rpb25D
b250cm9sbGVyOjpmb2N1c2VkT3JBY3RpdmVTdGF0ZUNoYW5nZWQoKQogICAgICAgICBub2RlLT5z
ZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVy
ID0gbm9kZS0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJl
ci0+c3R5bGUoKS0+aGFzQXBwZWFyYW5jZSgpKQotICAgICAgICAgICAgICAgIHRoZW1lKCktPnN0
YXRlQ2hhbmdlZChyZW5kZXJlciwgRm9jdXNTdGF0ZSk7CisgICAgICAgICAgICAgICAgcmVuZGVy
ZXItPnRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJlciwgRm9jdXNTdGF0ZSk7CiAgICAgfQog
CiAgICAgLy8gU2VjdXJlIGtleWJvYXJkIGVudHJ5IGlzIHNldCBieSB0aGUgYWN0aXZlIGZyYW1l
LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDM2ZDIwYWMuLmI5
ODVlNzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNw
cAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTcxLDcg
KzcxLDcgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0
ZShNYXBwZWRBdHRyaWJ1dGUgKmF0dHIpCiAgICAgICAgIGlmIChvbGREaXNhYmxlZCAhPSBtX2Rp
c2FibGVkKSB7CiAgICAgICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgICAgICAg
ICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpLT5oYXNBcHBlYXJhbmNlKCkp
Ci0gICAgICAgICAgICAgICAgdGhlbWUoKS0+c3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIEVuYWJs
ZWRTdGF0ZSk7CisgICAgICAgICAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS0+c3RhdGVDaGFu
Z2VkKHJlbmRlcmVyKCksIEVuYWJsZWRTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYg
KGF0dHItPm5hbWUoKSA9PSByZWFkb25seUF0dHIpIHsKICAgICAgICAgYm9vbCBvbGRSZWFkT25s
eSA9IG1fcmVhZE9ubHk7CkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKQogICAgICAg
ICBpZiAob2xkUmVhZE9ubHkgIT0gbV9yZWFkT25seSkgewogICAgICAgICAgICAgc2V0TmVlZHNT
dHlsZVJlY2FsYygpOwogICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+
c3R5bGUoKS0+aGFzQXBwZWFyYW5jZSgpKQotICAgICAgICAgICAgICAgIHRoZW1lKCktPnN0YXRl
Q2hhbmdlZChyZW5kZXJlcigpLCBSZWFkT25seVN0YXRlKTsKKyAgICAgICAgICAgICAgICByZW5k
ZXJlcigpLT50aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgUmVhZE9ubHlTdGF0ZSk7
CiAgICAgICAgIH0KICAgICB9IGVsc2UKICAgICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVk
QXR0cmlidXRlKGF0dHIpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IGRiYzgxOGIu
LmIzYzc1NjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAor
KysgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTg4MSw5ICs4ODEsOSBA
QCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldENoZWNrZWQoYm9vbCBub3dDaGVja2VkLCBib29s
IHNlbmRDaGFuZ2VFdmVudCkKICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAKICAgICBjaGVj
a2VkUmFkaW9CdXR0b25zKHRoaXMpLmFkZEJ1dHRvbih0aGlzKTsKLSAgICAKKwogICAgIGlmIChy
ZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCktPmhhc0FwcGVhcmFuY2UoKSkKLSAgICAg
ICAgdGhlbWUoKS0+c3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIENoZWNrZWRTdGF0ZSk7CisgICAg
ICAgIHJlbmRlcmVyKCktPnRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBDaGVja2Vk
U3RhdGUpOwogCiAgICAgLy8gT25seSBzZW5kIGEgY2hhbmdlIGV2ZW50IGZvciBpdGVtcyBpbiB0
aGUgZG9jdW1lbnQgKGF2b2lkIGZpcmluZyBkdXJpbmcKICAgICAvLyBwYXJzaW5nKSBhbmQgZG9u
J3Qgc2VuZCBhIGNoYW5nZSBldmVudCBmb3IgYSByYWRpbyBidXR0b24gdGhhdCdzIGdldHRpbmcK
QEAgLTkwNSw3ICs5MDUsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldEluZGV0ZXJtaW5h
dGUoYm9vbCBfaW5kZXRlcm1pbmF0ZSkKICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAKICAg
ICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpLT5oYXNBcHBlYXJhbmNlKCkp
Ci0gICAgICAgIHRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBDaGVja2VkU3RhdGUp
OworICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwg
Q2hlY2tlZFN0YXRlKTsKIH0KIAogaW50IEhUTUxJbnB1dEVsZW1lbnQ6OnNpemUoKSBjb25zdApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1dlYkNvcmUvcGFnZS9GcmFtZS5j
cHAKaW5kZXggYTM2YzFhYS4uYTIyOGJmOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC02MjIsNyArNjIyLDcgQEAgdm9p
ZCBGcmFtZTo6c2VsZWN0aW9uTGF5b3V0Q2hhbmdlZCgpCiAgICAgLy8gU3RhcnQgYmxpbmtpbmcg
d2l0aCBhIGJsYWNrIGNhcmV0LiBCZSBzdXJlIG5vdCB0byByZXN0YXJ0IGlmIHdlJ3JlCiAgICAg
Ly8gYWxyZWFkeSBibGlua2luZyBpbiB0aGUgcmlnaHQgbG9jYXRpb24uCiAgICAgaWYgKHNob3Vs
ZEJsaW5rICYmICFtX2NhcmV0QmxpbmtUaW1lci5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgIGlmIChk
b3VibGUgYmxpbmtJbnRlcnZhbCA9IHRoZW1lKCktPmNhcmV0QmxpbmtJbnRlcnZhbCgpKQorICAg
ICAgICBpZiAoZG91YmxlIGJsaW5rSW50ZXJ2YWwgPSBwYWdlKCktPnRoZW1lKCktPmNhcmV0Qmxp
bmtJbnRlcnZhbCgpKQogICAgICAgICAgICAgbV9jYXJldEJsaW5rVGltZXIuc3RhcnRSZXBlYXRp
bmcoYmxpbmtJbnRlcnZhbCk7CiAKICAgICAgICAgaWYgKCFtX2NhcmV0UGFpbnQpIHsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAKaW5kZXggZjY1MDFiZS4uMzhiMDVlOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTEyOTYsMTAg
KzEyOTYsMTAgQEAgdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZUNvbnRyb2xUaW50cygpCiAgICAgLy8g
dG8gZGVmaW5lIHdoZW4gY29udHJvbHMgZ2V0IHRoZSB0aW50IGFuZCB0byBjYWxsIHRoaXMgZnVu
Y3Rpb24gd2hlbiB0aGF0IGNoYW5nZXMuCiAgICAgCiAgICAgLy8gT3B0aW1pemUgdGhlIGNvbW1v
biBjYXNlIHdoZXJlIHdlIGJyaW5nIGEgd2luZG93IHRvIHRoZSBmcm9udCB3aGlsZSBpdCdzIHN0
aWxsIGVtcHR5LgotICAgIGlmICghbV9mcmFtZSB8fCBtX2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCku
aXNFbXB0eSgpKSAKKyAgICBpZiAoIW1fZnJhbWUgfHwgbV9mcmFtZS0+bG9hZGVyKCktPnVybCgp
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGlmICh0aGVtZSgpLT5zdXBw
b3J0c0NvbnRyb2xUaW50cygpICYmIG1fZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpKSB7CisKKyAg
ICBpZiAobV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCkgJiYgbV9mcmFtZS0+Y29udGVudFJlbmRl
cmVyKCktPnRoZW1lKCktPnN1cHBvcnRzQ29udHJvbFRpbnRzKCkpIHsKICAgICAgICAgaWYgKG5l
ZWRzTGF5b3V0KCkpCiAgICAgICAgICAgICBsYXlvdXQoKTsKICAgICAgICAgUGxhdGZvcm1HcmFw
aGljc0NvbnRleHQqIGNvbnN0IG5vQ29udGV4dCA9IDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAgYi9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggYTE0MzQzZC4uOWVhY2Q2
YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKICNpbmNs
dWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKICNpbmNsdWRlICJSZW5kZXJXaWRnZXQuaCIKKyNpbmNs
dWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNs
dWRlICJTZWxlY3Rpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTEy
MCw2ICsxMjEsNyBAQCBQYWdlOjpQYWdlKENocm9tZUNsaWVudCogY2hyb21lQ2xpZW50LCBDb250
ZXh0TWVudUNsaWVudCogY29udGV4dE1lbnVDbGllbnQsIEVkaQogICAgICwgbV9kZWJ1Z2dlcigw
KQogICAgICwgbV9jdXN0b21IVE1MVG9rZW5pemVyVGltZURlbGF5KC0xKQogICAgICwgbV9jdXN0
b21IVE1MVG9rZW5pemVyQ2h1bmtTaXplKC0xKQorICAgICwgbV90aGVtZShSZW5kZXJUaGVtZTo6
dGhlbWVGb3JQYWdlKHRoaXMpKQogewogICAgIGlmICghYWxsUGFnZXMpIHsKICAgICAgICAgYWxs
UGFnZXMgPSBuZXcgSGFzaFNldDxQYWdlKj47CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvUGFn
ZS5oIGIvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCBlZWRkMjRjLi5iYWI2Yjg2IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTI3
LDYgKzI3LDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiTGlu
a0hhc2guaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlJlbmRlclRo
ZW1lLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CiAKQEAgLTc4LDcgKzc5LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIFBhZ2Uo
Q2hyb21lQ2xpZW50KiwgQ29udGV4dE1lbnVDbGllbnQqLCBFZGl0b3JDbGllbnQqLCBEcmFnQ2xp
ZW50KiwgSW5zcGVjdG9yQ2xpZW50Kik7CiAgICAgICAgIH5QYWdlKCk7Ci0gICAgICAgIAorCisg
ICAgICAgIFJlbmRlclRoZW1lKiB0aGVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGhlbWUuZ2V0KCk7
IH07CisKICAgICAgICAgc3RhdGljIHZvaWQgcmVmcmVzaFBsdWdpbnMoYm9vbCByZWxvYWQpOwog
ICAgICAgICBQbHVnaW5EYXRhKiBwbHVnaW5EYXRhKCkgY29uc3Q7CiAKQEAgLTIxNyw2ICsyMjAs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8UGx1Z2lu
RGF0YT4gbV9wbHVnaW5EYXRhOwogCisgICAgICAgIFJlZlB0cjxSZW5kZXJUaGVtZT4gbV90aGVt
ZTsKKwogICAgICAgICBFZGl0b3JDbGllbnQqIG1fZWRpdG9yQ2xpZW50OwogCiAgICAgICAgIGlu
dCBtX2ZyYW1lQ291bnQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bv
cHVwTWVudUNocm9taXVtLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51
Q2hyb21pdW0uY3BwCmluZGV4IGIwMGI2MjUuLjkyYzNjYmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwCkBAIC03NzEsOCArNzcxLDggQEAg
dm9pZCBQb3B1cExpc3RCb3g6OnBhaW50Um93KEdyYXBoaWNzQ29udGV4dCogZ2MsIGNvbnN0IElu
dFJlY3QmIHJlY3QsIGludCByb3dJbmQKICAgICAvLyBQYWludCBiYWNrZ3JvdW5kCiAgICAgQ29s
b3IgYmFja0NvbG9yLCB0ZXh0Q29sb3I7CiAgICAgaWYgKHJvd0luZGV4ID09IG1fc2VsZWN0ZWRJ
bmRleCkgewotICAgICAgICBiYWNrQ29sb3IgPSB0aGVtZSgpLT5hY3RpdmVMaXN0Qm94U2VsZWN0
aW9uQmFja2dyb3VuZENvbG9yKCk7Ci0gICAgICAgIHRleHRDb2xvciA9IHRoZW1lKCktPmFjdGl2
ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKTsKKyAgICAgICAgYmFja0NvbG9yID0g
ZGVmYXVsdFRoZW1lKCktPmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKTsK
KyAgICAgICAgdGV4dENvbG9yID0gZGVmYXVsdFRoZW1lKCktPmFjdGl2ZUxpc3RCb3hTZWxlY3Rp
b25Gb3JlZ3JvdW5kQ29sb3IoKTsKICAgICB9IGVsc2UgewogICAgICAgICBiYWNrQ29sb3IgPSBz
dHlsZS5iYWNrZ3JvdW5kQ29sb3IoKTsKICAgICAgICAgdGV4dENvbG9yID0gc3R5bGUuZm9yZWdy
b3VuZENvbG9yKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVt
ZUd0ay5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAKaW5kZXgg
YTk1ZjU1Ny4uYTEwN2RkNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVy
VGhlbWVHdGsuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNw
cApAQCAtMzQsMTMgKzM0LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyVGhl
bWUqIHRoZW1lKCkKK1Bhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IFJlbmRlclRoZW1lOjp0aGVtZUZv
clBhZ2UoUGFnZSogcGFnZSkKIHsKLSAgICBzdGF0aWMgUmVuZGVyVGhlbWVHdGsgZ3RrVGhlbWU7
Ci0gICAgcmV0dXJuICZndGtUaGVtZTsKKyAgICBzdGF0aWMgUmVmUHRyPFJlbmRlclRoZW1lPiBy
dCA9IG5ldyBSZW5kZXJUaGVtZUd0aygpOworICAgIHJldHVybiBydDsgLy8ga2VlcCB0aGUgcmVm
ZXJlbmNlIG9mIG9uZS4KIH0KIAotc3RhdGljIGJvb2wgbW96R3RrSW5pdGlhbGl6ZWQgPSBmYWxz
ZTsKK3N0YXRpYyBpbnQgbW96R3RrUmVmQ291bnQgPSAwOwogCiBSZW5kZXJUaGVtZUd0azo6UmVu
ZGVyVGhlbWVHdGsoKQogICAgIDogbV9ndGtXaW5kb3coMCkKQEAgLTQ4LDE4ICs0OCwxOCBAQCBS
ZW5kZXJUaGVtZUd0azo6UmVuZGVyVGhlbWVHdGsoKQogICAgICwgbV9ndGtFbnRyeSgwKQogICAg
ICwgbV9ndGtUcmVlVmlldygwKQogewotICAgIGlmICghbW96R3RrSW5pdGlhbGl6ZWQpIHsKLSAg
ICAgICAgbW96R3RrSW5pdGlhbGl6ZWQgPSB0cnVlOworICAgIGlmICghbW96R3RrUmVmQ291bnQp
CiAgICAgICAgIG1vel9ndGtfaW5pdCgpOwotICAgIH0KKworICAgICsrbW96R3RrUmVmQ291bnQ7
CiB9CiAKIFJlbmRlclRoZW1lR3RrOjp+UmVuZGVyVGhlbWVHdGsoKQogewotICAgIGlmIChtb3pH
dGtJbml0aWFsaXplZCkgeworICAgIC0tbW96R3RrUmVmQ291bnQ7CisKKyAgICBpZiAoIW1vekd0
a1JlZkNvdW50KQogICAgICAgICBtb3pfZ3RrX3NodXRkb3duKCk7Ci0gICAgICAgIG1vekd0a0lu
aXRpYWxpemVkID0gZmFsc2U7Ci0gICAgfQogfQogCiBzdGF0aWMgYm9vbCBzdXBwb3J0c0ZvY3Vz
KENvbnRyb2xQYXJ0IGFwcGVhcmFuY2UpCkBAIC00NzAsNyArNDcwLDcgQEAgR3RrV2lkZ2V0KiBS
ZW5kZXJUaGVtZUd0azo6Z3RrRW50cnkoKSBjb25zdAogICAgICAgICByZXR1cm4gbV9ndGtFbnRy
eTsKIAogICAgIG1fZ3RrRW50cnkgPSBndGtfZW50cnlfbmV3KCk7Ci0gICAgZ19zaWduYWxfY29u
bmVjdChtX2d0a0VudHJ5LCAic3R5bGUtc2V0IiwgR19DQUxMQkFDSyhndGtTdHlsZVNldENhbGxi
YWNrKSwgdGhlbWUoKSk7CisgICAgZ19zaWduYWxfY29ubmVjdChtX2d0a0VudHJ5LCAic3R5bGUt
c2V0IiwgR19DQUxMQkFDSyhndGtTdHlsZVNldENhbGxiYWNrKSwgY29uc3RfY2FzdDxSZW5kZXJU
aGVtZUd0ayo+KHRoaXMpKTsKICAgICBndGtfY29udGFpbmVyX2FkZChndGtDb250YWluZXIoKSwg
bV9ndGtFbnRyeSk7CiAgICAgZ3RrX3dpZGdldF9yZWFsaXplKG1fZ3RrRW50cnkpOwogCkBAIC00
ODMsNyArNDgzLDcgQEAgR3RrV2lkZ2V0KiBSZW5kZXJUaGVtZUd0azo6Z3RrVHJlZVZpZXcoKSBj
b25zdAogICAgICAgICByZXR1cm4gbV9ndGtUcmVlVmlldzsKIAogICAgIG1fZ3RrVHJlZVZpZXcg
PSBndGtfdHJlZV92aWV3X25ldygpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9ndGtUcmVlVmll
dywgInN0eWxlLXNldCIsIEdfQ0FMTEJBQ0soZ3RrU3R5bGVTZXRDYWxsYmFjayksIHRoZW1lKCkp
OworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9ndGtUcmVlVmlldywgInN0eWxlLXNldCIsIEdfQ0FM
TEJBQ0soZ3RrU3R5bGVTZXRDYWxsYmFjayksIGNvbnN0X2Nhc3Q8UmVuZGVyVGhlbWVHdGsqPih0
aGlzKSk7CiAgICAgZ3RrX2NvbnRhaW5lcl9hZGQoZ3RrQ29udGFpbmVyKCksIG1fZ3RrVHJlZVZp
ZXcpOwogICAgIGd0a193aWRnZXRfcmVhbGl6ZShtX2d0a1RyZWVWaWV3KTsKIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNwcCBiL1dlYkNvcmUvcGxhdGZv
cm0vcXQvUmVuZGVyVGhlbWVRdC5jcHAKaW5kZXggYjE2Y2JjNC4uYzgwMDFmOSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNwcAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuY3BwCkBAIC0xMDYsMTAgKzEwNiwxMyBAQCBTdHlsZVBh
aW50ZXI6On5TdHlsZVBhaW50ZXIoKQogICAgIH0KIH0KIAotUmVuZGVyVGhlbWUqIHRoZW1lKCkK
K1Bhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IFJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2UoUGFnZSog
cGFnZSkKIHsKLSAgICBzdGF0aWMgUmVuZGVyVGhlbWVRdCBydDsKLSAgICByZXR1cm4gJnJ0Owor
ICAgIGlmIChwYWdlKQorICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlbmRlclRoZW1lUXQo
KSk7CisKKyAgICBzdGF0aWMgUmVmUHRyPFJlbmRlclRoZW1lPiBmYWxsYmFjayA9IG5ldyBSZW5k
ZXJUaGVtZVF0KCk7CisgICAgcmV0dXJuIGZhbGxiYWNrOyAvLyBrZWVwIHRoZSByZWZlcmVuY2Ug
b2Ygb25lLgogfQogCiBSZW5kZXJUaGVtZVF0OjpSZW5kZXJUaGVtZVF0KCkKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vd3gvUmVuZGVyVGhlbWVXeC5jcHAgYi9XZWJDb3JlL3BsYXRmb3Jt
L3d4L1JlbmRlclRoZW1lV3guY3BwCmluZGV4IGEyNjQxNmYuLjc0MGRjMTIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vd3gvUmVuZGVyVGhlbWVXeC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS93eC9SZW5kZXJUaGVtZVd4LmNwcApAQCAtMTE5LDEwICsxMTksMTAgQEAgcHJpdmF0ZToK
ICNkZWZpbmUgUE9QVVBfSU5URVJOQUxfUEFERElOR19SSUdIVCAyMAogI2VuZGlmCiAKLVJlbmRl
clRoZW1lKiB0aGVtZSgpCitQYXNzUmVmUHRyPFJlbmRlclRoZW1lPiBSZW5kZXJUaGVtZTo6dGhl
bWVGb3JQYWdlKFBhZ2UqIHBhZ2UpCiB7Ci0gICAgc3RhdGljIFJlbmRlclRoZW1lV3ggcnQ7Ci0g
ICAgcmV0dXJuICZydDsKKyAgICBzdGF0aWMgUmVmUHRyPFJlbmRlclRoZW1lPiBydCA9IG5ldyBS
ZW5kZXJUaGVtZVd4KCk7CisgICAgcmV0dXJuIHJ0OyAvLyBrZWVwIHRoZSByZWZlcmVuY2Ugb2Yg
b25lLgogfQogCiBib29sIFJlbmRlclRoZW1lV3g6OmlzQ29udHJvbFN0eWxlZChjb25zdCBSZW5k
ZXJTdHlsZSogc3R5bGUsIGNvbnN0IEJvcmRlckRhdGEmIGJvcmRlciwKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvSW5s
aW5lVGV4dEJveC5jcHAKaW5kZXggNDE4YmUxNS4uMzBkMTkyZiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvSW5s
aW5lVGV4dEJveC5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5j
bHVkZSAiUmVuZGVyQXJlbmEuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgotI2luY2x1ZGUg
IlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgImJyZWFrX2xpbmVz
LmgiCiAjaW5jbHVkZSA8d3RmL0Fsd2F5c0lubGluZS5oPgpAQCAtNzcwLDggKzc2OSw4IEBAIHZv
aWQgSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0TWF0Y2hNYXJrZXIoR3JhcGhpY3NDb250ZXh0KiBw
dCwgaW50IHR4LCBpbnQgdHksIERvCiAgICAgLy8gT3B0aW9uYWxseSBoaWdobGlnaHQgdGhlIHRl
eHQKICAgICBpZiAocmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+bWFya2VkVGV4dE1h
dGNoZXNBcmVIaWdobGlnaHRlZCgpKSB7CiAgICAgICAgIENvbG9yIGNvbG9yID0gbWFya2VyLmFj
dGl2ZU1hdGNoID8KLSAgICAgICAgICAgIHRoZW1lKCktPnBsYXRmb3JtQWN0aXZlVGV4dFNlYXJj
aEhpZ2hsaWdodENvbG9yKCkgOgotICAgICAgICAgICAgdGhlbWUoKS0+cGxhdGZvcm1JbmFjdGl2
ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpOworICAgICAgICAgICAgcmVuZGVyZXIoKS0+dGhl
bWUoKS0+cGxhdGZvcm1BY3RpdmVUZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IoKSA6CisgICAgICAg
ICAgICByZW5kZXJlcigpLT50aGVtZSgpLT5wbGF0Zm9ybUluYWN0aXZlVGV4dFNlYXJjaEhpZ2hs
aWdodENvbG9yKCk7CiAgICAgICAgIHB0LT5zYXZlKCk7CiAgICAgICAgIHVwZGF0ZUdyYXBoaWNz
Q29udGV4dChwdCwgY29sb3IsIGNvbG9yLCAwKTsgIC8vIERvbid0IGRyYXcgdGV4dCBhdCBhbGwh
CiAgICAgICAgIHB0LT5jbGlwKEludFJlY3QodHggKyBtX3gsIHR5ICsgeSwgbV93aWR0aCwgaCkp
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3Bw
IGIvV2ViQ29yZS9yZW5kZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCmluZGV4IDVjZDkz
NjMuLjdhYThjMWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29udHJvbEVs
ZW1lbnRzLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5j
cHAKQEAgLTE1OSw3ICsxNTksNyBAQCB2b2lkIE1lZGlhQ29udHJvbElucHV0RWxlbWVudDo6dXBk
YXRlU3R5bGUoKQogYm9vbCBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6OmhpdFRlc3QoY29uc3Qg
SW50UG9pbnQmIGFic1BvaW50KQogewogICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCkt
PnN0eWxlKCktPmhhc0FwcGVhcmFuY2UoKSkKLSAgICAgICAgcmV0dXJuIHRoZW1lKCktPmhpdFRl
c3RNZWRpYUNvbnRyb2xQYXJ0KHJlbmRlcmVyKCksIGFic1BvaW50KTsKKyAgICAgICAgcmV0dXJu
IHJlbmRlcmVyKCktPnRoZW1lKCktPmhpdFRlc3RNZWRpYUNvbnRyb2xQYXJ0KHJlbmRlcmVyKCks
IGFic1BvaW50KTsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuY3BwCmluZGV4IGY4MTAxOGQuLjg3ZjBjNzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmNwcApAQCAtNDMsNyArNDMsNiBAQAogI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2VsbC5oIgogI2lu
Y2x1ZGUgIlJlbmRlclRhYmxlQ29sLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVSb3cuaCIKLSNp
bmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRl
ICJUcmFuc2Zvcm1TdGF0ZS5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KQEAgLTIxNCw2ICsyMTMs
MTQgQEAgUmVuZGVyT2JqZWN0Ojp+UmVuZGVyT2JqZWN0KCkKICNlbmRpZgogfQogCitSZW5kZXJU
aGVtZSogUmVuZGVyT2JqZWN0Ojp0aGVtZSgpIGNvbnN0Cit7CisgICAgaWYgKGRvY3VtZW50KCkt
PnBhZ2UoKSkKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50KCktPnBhZ2UoKS0+dGhlbWUoKTsKKwor
ICAgIHJldHVybiBkZWZhdWx0VGhlbWUoKS5nZXQoKTsKK30KKwogYm9vbCBSZW5kZXJPYmplY3Q6
OmlzRGVzY2VuZGFudE9mKGNvbnN0IFJlbmRlck9iamVjdCogb2JqKSBjb25zdAogewogICAgIGZv
ciAoY29uc3QgUmVuZGVyT2JqZWN0KiByID0gdGhpczsgcjsgciA9IHItPm1fcGFyZW50KSB7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IDA5MDFiZmYuLjQyMGY0YWQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5oCkBAIC00OCw2ICs0OCw3IEBAIGNsYXNzIFJlbmRlcklubGluZTsKIGNs
YXNzIFJlbmRlckJsb2NrOwogY2xhc3MgUmVuZGVyRmxvdzsKIGNsYXNzIFJlbmRlckxheWVyOwor
Y2xhc3MgUmVuZGVyVGhlbWU7CiBjbGFzcyBUcmFuc2Zvcm1TdGF0ZTsKIGNsYXNzIFZpc2libGVQ
b3NpdGlvbjsKIApAQCAtMTM3LDYgKzEzOCw4IEBAIHB1YmxpYzoKICAgICBSZW5kZXJPYmplY3Qo
Tm9kZSopOwogICAgIHZpcnR1YWwgflJlbmRlck9iamVjdCgpOwogCisgICAgUmVuZGVyVGhlbWUq
IHRoZW1lKCkgY29uc3Q7CisKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBj
b25zdCA9IDA7CiAKICAgICBSZW5kZXJPYmplY3QqIHBhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGFyZW50OyB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAg
Yi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKaW5kZXggZTY3ZTYxMi4uZmNlODhk
OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCisrKyBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcApAQCAtNDksNiArNDksMTIgQEAgUmVuZGVy
VGhlbWU6OlJlbmRlclRoZW1lKCkKIHsKIH0KIAorLy8gV2hlbiB0aGUgdGhlbWUgaXMgbmVlZGVk
IGluIG5vbi1wYWdlIGRlcGVuZGVudCBjb2RlLCB0aGUgZGVmYXVsdFRoZW1lKCkgaXMgdXNlZCBh
cyBmYWxsYmFjay4KK1Bhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IGRlZmF1bHRUaGVtZSgpCit7Cisg
ICAgcmV0dXJuIFJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2UoMCk7Cit9CisKIHZvaWQgUmVuZGVy
VGhlbWU6OmFkanVzdFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHls
ZSogc3R5bGUsIEVsZW1lbnQqIGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IFVBSGFzQXBwZWFyYW5jZSwgY29uc3QgQm9yZGVyRGF0YSYgYm9yZGVyLCBjb25zdCBGaWxsTGF5
ZXImIGJhY2tncm91bmQsIGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IpCiB7CkBAIC02Miw3
ICs2OCw3IEBAIHZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdFN0eWxlKENTU1N0eWxlU2VsZWN0b3Iq
IHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsCiAgICAgZWxzZSBpZiAoc3R5bGUtPmRp
c3BsYXkoKSA9PSBDT01QQUNUIHx8IHN0eWxlLT5kaXNwbGF5KCkgPT0gUlVOX0lOIHx8IHN0eWxl
LT5kaXNwbGF5KCkgPT0gTElTVF9JVEVNIHx8IHN0eWxlLT5kaXNwbGF5KCkgPT0gVEFCTEUpCiAg
ICAgICAgIHN0eWxlLT5zZXREaXNwbGF5KEJMT0NLKTsKIAotICAgIGlmIChVQUhhc0FwcGVhcmFu
Y2UgJiYgdGhlbWUoKS0+aXNDb250cm9sU3R5bGVkKHN0eWxlLCBib3JkZXIsIGJhY2tncm91bmQs
IGJhY2tncm91bmRDb2xvcikpIHsKKyAgICBpZiAoVUFIYXNBcHBlYXJhbmNlICYmIGlzQ29udHJv
bFN0eWxlZChzdHlsZSwgYm9yZGVyLCBiYWNrZ3JvdW5kLCBiYWNrZ3JvdW5kQ29sb3IpKSB7CiAg
ICAgICAgIGlmIChwYXJ0ID09IE1lbnVsaXN0UGFydCkgewogICAgICAgICAgICAgc3R5bGUtPnNl
dEFwcGVhcmFuY2UoTWVudWxpc3RCdXR0b25QYXJ0KTsKICAgICAgICAgICAgIHBhcnQgPSBNZW51
bGlzdEJ1dHRvblBhcnQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAppbmRleCBiYzgxZDRkLi5jNzlm
NzNiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCisrKyBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgKQEAgLTIzLDEzICsyMywxNiBAQAogI2lmbmRl
ZiBSZW5kZXJUaGVtZV9oCiAjZGVmaW5lIFJlbmRlclRoZW1lX2gKIAotI2luY2x1ZGUgIlJlbmRl
ck9iamVjdC5oIgogI2lmIFVTRShORVdfVEhFTUUpCiAjaW5jbHVkZSAiVGhlbWUuaCIKICNlbHNl
CiAjaW5jbHVkZSAiVGhlbWVUeXBlcy5oIgogI2VuZGlmCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0
LmgiCisjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgor
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOCwxMSArNDEsMTYgQEAgY2xhc3MgUG9wdXBN
ZW51OwogY2xhc3MgUmVuZGVyTWVudUxpc3Q7CiBjbGFzcyBDU1NTdHlsZVNoZWV0OwogCi1jbGFz
cyBSZW5kZXJUaGVtZSB7CitjbGFzcyBSZW5kZXJUaGVtZSA6IHB1YmxpYyBSZWZDb3VudGVkPFJl
bmRlclRoZW1lPiB7CiBwdWJsaWM6CiAgICAgUmVuZGVyVGhlbWUoKTsKICAgICB2aXJ0dWFsIH5S
ZW5kZXJUaGVtZSgpIHsgfQogCisgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyB0byBiZSBpbXBsZW1l
bnRlZCBpbiB5b3VyIHBsYXRmb3JtLXNwZWNpZmljIHRoZW1lIGltcGxlbWVudGF0aW9uIHRvIGhh
bmQgYmFjayB0aGUKKyAgICAvLyBhcHByb3ByaWF0ZSBwbGF0Zm9ybSB0aGVtZS4gV2hlbiB0aGUg
dGhlbWUgaXMgbmVlZGVkIGluIG5vbi1wYWdlIGRlcGVuZGVudCBjb2RlLCBhIGRlZmF1bHQgdGhl
bWUgaXMKKyAgICAvLyB1c2VkIGFzIGZhbGxiYWNrLCB3aGljaCBpcyByZXR1cm5lZCBmb3IgYSBu
dWxsZWQgcGFnZSwgc28gdGhlIHBsYXRmb3JtIGNvZGUgbmVlZHMgdG8gYWNjb3VudCBmb3IgdGhp
cy4KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gdGhlbWVGb3JQYWdlKFBhZ2Uq
IHBhZ2UgPSAwKTsKKwogICAgIC8vIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuZXZlciBzdHls
ZSBoYXMgYmVlbiBjb21wdXRlZCBmb3IgYW4gZWxlbWVudCBhbmQgdGhlIGFwcGVhcmFuY2UKICAg
ICAvLyBwcm9wZXJ0eSBoYXMgYmVlbiBzZXQgdG8gYSB2YWx1ZSBvdGhlciB0aGFuICJub25lIi4g
IFRoZSB0aGVtZSBzaG91bGQgbWFwIGluIGFsbCBvZiB0aGUgYXBwcm9wcmlhdGUKICAgICAvLyBt
ZXRyaWNzIGFuZCBkZWZhdWx0cyBnaXZlbiB0aGUgY29udGVudHMgb2YgdGhlIHN0eWxlLiAgVGhp
cyBpbmNsdWRlcyBzb3BoaXN0aWNhdGVkIG9wZXJhdGlvbnMgbGlrZQpAQCAtMjU3LDkgKzI2NSw4
IEBAIHByaXZhdGU6CiAjZW5kaWYKIH07CiAKLS8vIEZ1bmN0aW9uIHRvIG9idGFpbiB0aGUgdGhl
bWUuICBUaGlzIGlzIGltcGxlbWVudGVkIGluIHlvdXIgcGxhdGZvcm0tc3BlY2lmaWMgdGhlbWUg
aW1wbGVtZW50YXRpb24gdG8gaGFuZAotLy8gYmFjayB0aGUgYXBwcm9wcmlhdGUgcGxhdGZvcm0g
dGhlbWUuCi1SZW5kZXJUaGVtZSogdGhlbWUoKTsKKy8vIFdoZW4gdGhlIHRoZW1lIGlzIG5lZWRl
ZCBpbiBub24tcGFnZSBkZXBlbmRlbnQgY29kZSwgdGhlIGRlZmF1bHRUaGVtZSgpIGlzIHVzZWQg
YXMgZmFsbGJhY2suCitQYXNzUmVmUHRyPFJlbmRlclRoZW1lPiBkZWZhdWx0VGhlbWUoKTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZUNocm9taXVtTGludXguY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVDaHJvbWl1bUxpbnV4LmNwcAppbmRleCA5NGVlNjRmLi5mMzdmMGU4IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguY3BwCisrKyBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5jcHAKQEAgLTExMywxMCArMTEz
LDEwIEBAIHN0YXRpYyBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnRQYXJlbnQoTm9kZSog
bm9kZSkKIH0KICNlbmRpZgogCi1SZW5kZXJUaGVtZSogdGhlbWUoKQorUGFzc1JlZlB0cjxSZW5k
ZXJUaGVtZT4gUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZShQYWdlKiBwYWdlKQogewotICAgIHN0
YXRpYyBSZW5kZXJUaGVtZUNocm9taXVtTGludXggdGhlbWU7Ci0gICAgcmV0dXJuICZ0aGVtZTsK
KyAgICBzdGF0aWMgUmVmUHRyPFJlbmRlclRoZW1lPiBydCA9IG5ldyBSZW5kZXJUaGVtZUNocm9t
aXVtTGludXgoKTsKKyAgICByZXR1cm4gcnQ7IC8vIGtlZXAgdGhlIHJlZmVyZW5jZSBvZiBvbmUu
CiB9CiAKIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4
KCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1NYWMu
bW0gYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTWFjLm1tCmluZGV4IGY2
MDgxYTUuLjQyYTZlMDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
Q2hyb21pdW1NYWMubW0KKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1
bU1hYy5tbQpAQCAtMTI0LDEwICsxMjQsMTAgQEAgSW50UmVjdCBOU1JlY3RUb0ludFJlY3QoY29u
c3QgTlNSZWN0ICYgcmVjdCkKICAgICByZXR1cm4gSW50UmVjdChyZWN0Lm9yaWdpbi54LCByZWN0
Lm9yaWdpbi55LCByZWN0LnNpemUud2lkdGgsIHJlY3Quc2l6ZS5oZWlnaHQpOwogfQogCi1SZW5k
ZXJUaGVtZSogdGhlbWUoKQorUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWU6OnRo
ZW1lRm9yUGFnZShQYWdlKiBwYWdlKQogewotICAgIHN0YXRpYyBSZW5kZXJUaGVtZUNocm9taXVt
TWFjKiBtYWNUaGVtZSA9IG5ldyBSZW5kZXJUaGVtZUNocm9taXVtTWFjOwotICAgIHJldHVybiBt
YWNUaGVtZTsKKyAgICBzdGF0aWMgUmVmUHRyPFJlbmRlclRoZW1lPiBydCA9IG5ldyBSZW5kZXJU
aGVtZUNocm9taXVtTWFjKCk7CisgICAgcmV0dXJuIHJ0OyAvLyBrZWVwIHRoZSByZWZlcmVuY2Ug
b2Ygb25lLgogfQogCiBSZW5kZXJUaGVtZUNocm9taXVtTWFjOjpSZW5kZXJUaGVtZUNocm9taXVt
TWFjKCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1X
aW4uY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHAKaW5k
ZXggNTI4ODE5MS4uNTEyNDIzYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVDaHJvbWl1bVdpbi5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVD
aHJvbWl1bVdpbi5jcHAKQEAgLTI2NSwxMSArMjY1LDEwIEBAIHN0YXRpYyBIVE1MTWVkaWFFbGVt
ZW50KiBtZWRpYUVsZW1lbnRQYXJlbnQoTm9kZSogbm9kZSkKIH0KICNlbmRpZgogCi0vLyBJbXBs
ZW1lbnQgV2ViQ29yZTo6dGhlbWUoKSBmb3IgZ2V0dGluZyB0aGUgZ2xvYmFsIFJlbmRlclRoZW1l
LgotUmVuZGVyVGhlbWUqIHRoZW1lKCkKK1Bhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IFJlbmRlclRo
ZW1lOjp0aGVtZUZvclBhZ2UoUGFnZSogcGFnZSkKIHsKLSAgICBzdGF0aWMgUmVuZGVyVGhlbWVD
aHJvbWl1bVdpbiB3aW5UaGVtZTsKLSAgICByZXR1cm4gJndpblRoZW1lOworICAgIHN0YXRpYyBS
ZWZQdHI8UmVuZGVyVGhlbWU+IHJ0ID0gbmV3IFJlbmRlclRoZW1lQ2hyb21pdW1XaW4oKTsKKyAg
ICByZXR1cm4gcnQ7IC8vIGtlZXAgdGhlIHJlZmVyZW5jZSBvZiBvbmUuCiB9CiAKIFN0cmluZyBS
ZW5kZXJUaGVtZUNocm9taXVtV2luOjpleHRyYURlZmF1bHRTdHlsZVNoZWV0KCkKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVNYWMubW0KaW5kZXggYzNlYzkxYS4uNGMyM2I5OSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTEwMSwxMCArMTAxLDEwIEBAIGVudW0gewogICAgIGxl
ZnRQYWRkaW5nCiB9OwogCi1SZW5kZXJUaGVtZSogdGhlbWUoKQorUGFzc1JlZlB0cjxSZW5kZXJU
aGVtZT4gUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZShQYWdlKiBwYWdlKQogewotICAgIHN0YXRp
YyBSZW5kZXJUaGVtZU1hYyogbWFjVGhlbWUgPSBuZXcgUmVuZGVyVGhlbWVNYWM7Ci0gICAgcmV0
dXJuIG1hY1RoZW1lOworICAgIHN0YXRpYyBSZWZQdHI8UmVuZGVyVGhlbWU+IHJ0ID0gbmV3IFJl
bmRlclRoZW1lTWFjKCk7CisgICAgcmV0dXJuIHJ0OyAvLyBrZWVwIHRoZSByZWZlcmVuY2Ugb2Yg
b25lLgogfQogCiBSZW5kZXJUaGVtZU1hYzo6UmVuZGVyVGhlbWVNYWMoKQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwCmluZGV4IDNhZmZkMWYuLmRmYWE1NTcgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcAorKysgYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAKQEAgLTY1LDEzICs2NSwyMSBAQCBlbnVt
IHsKICAgICBsZWZ0UGFkZGluZwogfTsKIAotUmVuZGVyVGhlbWUqIHRoZW1lKCkKK1Bhc3NSZWZQ
dHI8UmVuZGVyVGhlbWU+IFJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2UoUGFnZSogcGFnZSkKIHsK
LSAgICBzdGF0aWMgUmVuZGVyVGhlbWVTYWZhcmkgc2FmYXJpVGhlbWU7Ci0gICAgc3RhdGljIFJl
bmRlclRoZW1lV2luIHdpbmRvd3NUaGVtZTsKKyAgICBzdGF0aWMgUmVmUHRyPFJlbmRlclRoZW1l
PiBzYWZhcmlUaGVtZSA9IG5ldyBSZW5kZXJUaGVtZVNhZmFyaSgpOworICAgIHN0YXRpYyBSZWZQ
dHI8UmVuZGVyVGhlbWU+IHdpbmRvd3NUaGVtZSA9IG5ldyBSZW5kZXJUaGVtZVdpbigpOwogICAg
IGlmIChTZXR0aW5nczo6c2hvdWxkUGFpbnROYXRpdmVDb250cm9scygpKQotICAgICAgICByZXR1
cm4gJndpbmRvd3NUaGVtZTsKLSAgICByZXR1cm4gJnNhZmFyaVRoZW1lOworICAgICAgICByZXR1
cm4gd2luZG93c1RoZW1lOyAvLyBrZWVwIHRoZSByZWZlcmVuY2Ugb2Ygb25lLgorICAgIHJldHVy
biBzYWZhcmlUaGVtZTsgLy8ga2VlcCB0aGUgcmVmZXJlbmNlIG9mIG9uZS4KK30KKworCitSZW5k
ZXJUaGVtZSogUmVuZGVyVGhlbWU6OmNyZWF0ZShQYWdlKikKK3sKKyAgICBpZiAoU2V0dGluZ3M6
OnNob3VsZFBhaW50TmF0aXZlQ29udHJvbHMoKSkKKyAgICAgICAgcmV0dXJuIG5ldyBSZW5kZXJU
aGVtZVdpbigpOworICAgIHJldHVybiBuZXcgUmVuZGVyVGhlbWVTYWZhcmkoKTsKIH0KIAogI2lm
ICFkZWZpbmVkKE5ERUJVRykgJiYgZGVmaW5lZChVU0VfREVCVUdfU0FGQVJJX1RIRU1FKQotLSAK
MS42LjAuNAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31201</attachid>
            <date>2009-06-12 10:26:55 -0700</date>
            <delta_ts>2009-06-16 11:30:29 -0700</delta_ts>
            <desc>Using RefPtr (fixed ChangeLog)</desc>
            <filename>theme-refptr.patch</filename>
            <type>text/plain</type>
            <size>31863</size>
            <attacher name="Kenneth Rohde Christiansen">kenneth</attacher>
            
              <data encoding="base64">RnJvbSAyMGQzODU0MTI0ZjRkYjhjNDhkYTAyYWY3Y2U4ZjZiZjY4OGEzNmJhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiA8a2VubmV0aEBz
cGlzbmlnZWwub3NtdGMuaW5kdC5vcmcuYnI+CkRhdGU6IEZyaSwgMTIgSnVuIDIwMDkgMTM6MDE6
MDkgLTAzMDAKU3ViamVjdDogW1BBVENIXSAyMDA5LTA2LTEyICBLZW5uZXRoIFJvaGRlIENocmlz
dGlhbnNlbiAgPGtlbm5ldGguY2hyaXN0aWFuc2VuQG9wZW5ib3NzYS5vcmc+CgogICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBDcmVhdGUgYSBkaWZmZXJlbnQgUmVu
ZGVyVGhlbWUgcGVyIHBhZ2UsIHNvIHRoYXQgUmVuZGVyVGhlbWUgaGFzCiAgICAgICAgYWNjZXNz
IHRvIHBhZ2Ugc3BlY2lmaWMgdGhlbWluZy4gVGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBRdCBwb3J0
LCBhcyBRdAogICAgICAgIHN1cHBvcnRzIHNldHRpbmcgdGhlIHRoZW1lIChzdHlsZSkgcGVyIHdp
ZGdldC4KCiAgICAgICAgVGhpcyBjaGFuZ2Ugd2FzIHN1Z2dlc3RlZCBhbmQgZGlzY3Vzc2VkIHdp
dGggRGF2ZSBIeWF0dC4KCiAgICAgICAgTW9yZSBkZXRhaWxlZDoKCiAgICAgICAgMSkgQ3JlYXRl
IGEgdGhlbWUgcGVyIHBhZ2Ugb3Igb25lIGdsb2JhbCBvbmUsIGRlcGVuZGluZyBvbiB0aGUgbmVl
ZHMKICAgICAgICAgICBvZiB0aGUgcGxhdGZvcm0uCiAgICAgICAgMikgQWRkIGFuIGFjY2Vzc2Vy
IHRvIHRoZSB0aGVtZSBmcm9tIFJlbmRlck9iamVjdC4KICAgICAgICAzKSBDaGFuZ2UgYWxsIHVz
ZXMgb2YgdGhlIHRoZW1pbmcgdG8gYWNjZXNzIHRoZSB0aGVtZSB0aHJvdWdoCiAgICAgICAgICAg
UmVuZGVyT2JqZWN0LCB1c2luZyB0aGUgZ2xvYmFsIGRlZmF1bHQgdGhlbWUgYXMgZmFsbGJhY2ss
IHdoZW4gdGhlCiAgICAgICAgICAgZG9jdW1lbnQgb2YgUmVuZGVyT2JqZWN0IGhhcyBubyBwYWdl
LgogICAgICAgICAgIFdoZW4gd2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gYSBSZW5kZXJPYmplY3Qs
IHVzZSB0aGUgZGVmYXVsdCB0aGVtZS4KICAgICAgICA0KSBNb2RpZnkgYWxsIFJlbmRlclRoZW1l
IHBsYXRmb3JtIGltcGxlbWVudGF0aW9ucyB0byB3b3JrIHdpdGggdGhlCiAgICAgICAgICAgYWJv
dmUgY2hhbmdlcywgc3RpbGwgY3JlYXRpbmcgb25seSBvbmUgZ2xvYmFsIHRoZW1lLgotLS0KIFdl
YkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA4MiAr
KysrKysrKysrKysrKysrKysrKwogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHAgICAgfCAgICAyICstCiBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNw
cCAgICAgICAgICAgICAgICAgICB8ICAgMTIgKystLQogV2ViQ29yZS9kb20vQ29udGFpbmVyTm9k
ZS5jcHAgICAgICAgICAgICAgICAgICAgICAgfCAgICA0ICstCiBXZWJDb3JlL2VkaXRpbmcvU2Vs
ZWN0aW9uQ29udHJvbGxlci5jcHAgICAgICAgICAgICB8ICAgIDMgKy0KIFdlYkNvcmUvaHRtbC9I
VE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCAgICAgICAgICAgIHwgICAgNCArLQogV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwICAgICAgICAgICAgICAgICAgfCAgICA2ICstCiBXZWJD
b3JlL3BhZ2UvRnJhbWUuY3BwICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0K
IFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg
NiArLQogV2ViQ29yZS9wYWdlL1BhZ2UuY3BwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgICAyICsKIFdlYkNvcmUvcGFnZS9QYWdlLmggICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICAgNyArKy0KIFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21p
dW0uY3BwICAgIHwgICAgNCArLQogV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsu
Y3BwICAgICAgICAgICAgfCAgIDI0ICsrKy0tLQogV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJU
aGVtZVF0LmNwcCAgICAgICAgICAgICAgfCAgICA5ICsrLQogV2ViQ29yZS9wbGF0Zm9ybS93eC9S
ZW5kZXJUaGVtZVd4LmNwcCAgICAgICAgICAgICAgfCAgICA2ICstCiBXZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVUZXh0Qm94LmNwcCAgICAgICAgICAgICAgICB8ICAgIDUgKy0KIFdlYkNvcmUvcmVu
ZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCAgICAgICAgIHwgICAgMiArLQogV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCAgICAgICAgICAgICAgICAgfCAgICA5ICsrLQog
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggICAgICAgICAgICAgICAgICAgfCAgICAz
ICsKIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcCAgICAgICAgICAgICAgICAgIHwg
ICAgOCArKy0KIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmggICAgICAgICAgICAgICAg
ICAgIHwgICAxNyArKystCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGlu
dXguY3BwICAgICB8ICAgIDYgKy0KIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21p
dW1NYWMubW0gICAgICAgIHwgICAgNiArLQogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVD
aHJvbWl1bVdpbi5jcHAgICAgICAgfCAgICA3ICstCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZU1hYy5tbSAgICAgICAgICAgICAgICB8ICAgIDYgKy0KIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lU2FmYXJpLmNwcCAgICAgICAgICAgIHwgICAxOCArKystCiAyNiBmaWxlcyBjaGFu
Z2VkLCAxOTAgaW5zZXJ0aW9ucygrKSwgNzAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmM2IyZGI3Li4yMjMzZjNi
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDg1IEBACisyMDA5LTA2LTEyICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAg
PGtlbm5ldGguY2hyaXN0aWFuc2VuQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3JlYXRlIGEgZGlmZmVyZW50IFJlbmRlclRo
ZW1lIHBlciBwYWdlLCBzbyB0aGF0IFJlbmRlclRoZW1lIGhhcworICAgICAgICBhY2Nlc3MgdG8g
cGFnZSBzcGVjaWZpYyB0aGVtaW5nLiBUaGlzIGlzIG5lZWRlZCBmb3IgdGhlIFF0IHBvcnQsIGFz
IFF0CisgICAgICAgIHN1cHBvcnRzIHNldHRpbmcgdGhlIHRoZW1lIChzdHlsZSkgcGVyIHdpZGdl
dC4KKworICAgICAgICBUaGlzIGNoYW5nZSB3YXMgc3VnZ2VzdGVkIGFuZCBkaXNjdXNzZWQgd2l0
aCBEYXZlIEh5YXR0LgorCisgICAgICAgIE1vcmUgZGV0YWlsZWQ6CisKKyAgICAgICAgMSkgQ3Jl
YXRlIGEgdGhlbWUgcGVyIHBhZ2Ugb3Igb25lIGdsb2JhbCBvbmUsIGRlcGVuZGluZyBvbiB0aGUg
bmVlZHMKKyAgICAgICAgICAgb2YgdGhlIHBsYXRmb3JtLgorICAgICAgICAyKSBBZGQgYW4gYWNj
ZXNzZXIgdG8gdGhlIHRoZW1lIGZyb20gUmVuZGVyT2JqZWN0LgorICAgICAgICAzKSBDaGFuZ2Ug
YWxsIHVzZXMgb2YgdGhlIHRoZW1pbmcgdG8gYWNjZXNzIHRoZSB0aGVtZSB0aHJvdWdoCisgICAg
ICAgICAgIFJlbmRlck9iamVjdCwgdXNpbmcgdGhlIGdsb2JhbCBkZWZhdWx0IHRoZW1lIGFzIGZh
bGxiYWNrLCB3aGVuIHRoZQorICAgICAgICAgICBkb2N1bWVudCBvZiBSZW5kZXJPYmplY3QgaGFz
IG5vIHBhZ2UuCisgICAgICAgICAgIFdoZW4gd2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gYSBSZW5k
ZXJPYmplY3QsIHVzZSB0aGUgZGVmYXVsdCB0aGVtZS4KKyAgICAgICAgNCkgTW9kaWZ5IGFsbCBS
ZW5kZXJUaGVtZSBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbnMgdG8gd29yayB3aXRoIHRoZQorICAg
ICAgICAgICBhYm92ZSBjaGFuZ2VzLCBzdGlsbCBjcmVhdGluZyBvbmx5IG9uZSBnbG9iYWwgdGhl
bWUuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Ym91bmRp
bmdCb3hSZWN0KToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpsb2FkRnVsbERlZmF1bHRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NT
dHlsZVNlbGVjdG9yOjpzdHlsZUZvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5
bGVTZWxlY3Rvcjo6YWRqdXN0UmVuZGVyU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5
bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eSk6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6c2V0QWN0aXZlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnNldEhvdmVyZWQpOgorICAgICAgICAqIGVkaXRp
bmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25D
b250cm9sbGVyOjpmb2N1c2VkT3JBY3RpdmVTdGF0ZUNoYW5nZWQpOgorICAgICAgICAqIGh0bWwv
SFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNv
bnRyb2xFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNl
dENoZWNrZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6c2V0SW5kZXRl
cm1pbmF0ZSk6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZTo6c2VsZWN0aW9uTGF5b3V0Q2hhbmdlZCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp1cGRhdGVDb250cm9sVGludHMpOgor
ICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToK
KyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnRoZW1lKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQb3B1cExpc3RCb3g6OnBhaW50Um93KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6
OnRoZW1lRm9yUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6UmVuZGVy
VGhlbWVHdGspOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6On5SZW5kZXJUaGVt
ZUd0ayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6Z3RrRW50cnkpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6Omd0a1RyZWVWaWV3KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lOjp0aGVtZUZvclBhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL3d4L1JlbmRlclRoZW1lV3gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lVGV4dEJveDo6cGFpbnRUZXh0TWF0Y2hNYXJrZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9N
ZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xJ
bnB1dEVsZW1lbnQ6OmhpdFRlc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojp0aGVtZSk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVt
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkZWZhdWx0VGhlbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWU6OmFkanVzdFN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
VGhlbWUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2UpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRoZW1lQ2hyb21pdW1XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnRo
ZW1lRm9yUGFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lOjp0aGVtZUZvclBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmNyZWF0
ZSk6CisKIDIwMDktMDYtMDMgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aC5j
aHJpc3RpYW5zZW5Ab3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBI
YXVzbWFubi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmNwcCBiL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcAppbmRleCA4YzUyMmExLi4xNzQwYjRiIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0xMDA4LDcg
KzEwMDgsNyBAQCBJbnRSZWN0IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmJvdW5kaW5nQm94
UmVjdCgpIGNvbnN0CiAgICAgICAgIEludFJlY3QgciA9IHF1YWRzW2ldLmVuY2xvc2luZ0JvdW5k
aW5nQm94KCk7CiAgICAgICAgIGlmICghci5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGlmIChv
YmotPnN0eWxlKCktPmhhc0FwcGVhcmFuY2UoKSkKLSAgICAgICAgICAgICAgICB0aGVtZSgpLT5h
ZGp1c3RSZXBhaW50UmVjdChvYmosIHIpOworICAgICAgICAgICAgICAgIG9iai0+dGhlbWUoKS0+
YWRqdXN0UmVwYWludFJlY3Qob2JqLCByKTsKICAgICAgICAgICAgIHJlc3VsdC51bml0ZShyKTsK
ICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0
b3IuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKaW5kZXggYzhmZTIzNC4u
MjVhMGZmMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKKysr
IGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTUxNiwxMyArNTE2LDEzIEBA
IHN0YXRpYyB2b2lkIGxvYWRGdWxsRGVmYXVsdFN0eWxlKCkKICAgICB9CiAKICAgICAvLyBTdHJp
Y3QtbW9kZSBydWxlcy4KLSAgICBTdHJpbmcgZGVmYXVsdFJ1bGVzID0gU3RyaW5nKGh0bWw0VXNl
ckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKGh0bWw0VXNlckFnZW50U3R5bGVTaGVldCkpICsgdGhl
bWUoKS0+ZXh0cmFEZWZhdWx0U3R5bGVTaGVldCgpOworICAgIFN0cmluZyBkZWZhdWx0UnVsZXMg
PSBTdHJpbmcoaHRtbDRVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YoaHRtbDRVc2VyQWdlbnRT
dHlsZVNoZWV0KSkgKyBkZWZhdWx0VGhlbWUoKS0+ZXh0cmFEZWZhdWx0U3R5bGVTaGVldCgpOwog
ICAgIENTU1N0eWxlU2hlZXQqIGRlZmF1bHRTaGVldCA9IHBhcnNlVUFTaGVldChkZWZhdWx0UnVs
ZXMpOwogICAgIGRlZmF1bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoZGVmYXVsdFNoZWV0LCBz
Y3JlZW5FdmFsKCkpOwogICAgIGRlZmF1bHRQcmludFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChk
ZWZhdWx0U2hlZXQsIHByaW50RXZhbCgpKTsKIAogICAgIC8vIFF1aXJrcy1tb2RlIHJ1bGVzLgot
ICAgIFN0cmluZyBxdWlya3NSdWxlcyA9IFN0cmluZyhxdWlya3NVc2VyQWdlbnRTdHlsZVNoZWV0
LCBzaXplb2YocXVpcmtzVXNlckFnZW50U3R5bGVTaGVldCkpICsgdGhlbWUoKS0+ZXh0cmFRdWly
a3NTdHlsZVNoZWV0KCk7CisgICAgU3RyaW5nIHF1aXJrc1J1bGVzID0gU3RyaW5nKHF1aXJrc1Vz
ZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihxdWlya3NVc2VyQWdlbnRTdHlsZVNoZWV0KSkgKyBk
ZWZhdWx0VGhlbWUoKS0+ZXh0cmFRdWlya3NTdHlsZVNoZWV0KCk7CiAgICAgQ1NTU3R5bGVTaGVl
dCogcXVpcmtzU2hlZXQgPSBwYXJzZVVBU2hlZXQocXVpcmtzUnVsZXMpOwogICAgIGRlZmF1bHRR
dWlya3NTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQocXVpcmtzU2hlZXQsIHNjcmVlbkV2YWwoKSk7
CiB9CkBAIC0xMTI4LDcgKzExMjgsNyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHls
ZVNlbGVjdG9yOjpzdHlsZUZvckVsZW1lbnQoRWxlbWVudCogZSwgUmVuZGVyU3R5bAogICAgIHN0
YXRpYyBib29sIGxvYWRlZE1lZGlhU3R5bGVTaGVldDsKICAgICBpZiAoIWxvYWRlZE1lZGlhU3R5
bGVTaGVldCAmJiAoZS0+aGFzVGFnTmFtZSh2aWRlb1RhZykgfHwgZS0+aGFzVGFnTmFtZShhdWRp
b1RhZykpKSB7CiAgICAgICAgIGxvYWRlZE1lZGlhU3R5bGVTaGVldCA9IHRydWU7Ci0gICAgICAg
IFN0cmluZyBtZWRpYVJ1bGVzID0gU3RyaW5nKG1lZGlhQ29udHJvbHNVc2VyQWdlbnRTdHlsZVNo
ZWV0LCBzaXplb2YobWVkaWFDb250cm9sc1VzZXJBZ2VudFN0eWxlU2hlZXQpKSArIHRoZW1lKCkt
PmV4dHJhTWVkaWFDb250cm9sc1N0eWxlU2hlZXQoKTsKKyAgICAgICAgU3RyaW5nIG1lZGlhUnVs
ZXMgPSBTdHJpbmcobWVkaWFDb250cm9sc1VzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihtZWRp
YUNvbnRyb2xzVXNlckFnZW50U3R5bGVTaGVldCkpICsgZGVmYXVsdFRoZW1lKCktPmV4dHJhTWVk
aWFDb250cm9sc1N0eWxlU2hlZXQoKTsKICAgICAgICAgQ1NTU3R5bGVTaGVldCogbWVkaWFDb250
cm9sc1NoZWV0ID0gcGFyc2VVQVNoZWV0KG1lZGlhUnVsZXMpOwogICAgICAgICBkZWZhdWx0U3R5
bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KG1lZGlhQ29udHJvbHNTaGVldCwgc2NyZWVuRXZhbCgpKTsK
ICAgICAgICAgZGVmYXVsdFByaW50U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KG1lZGlhQ29udHJv
bHNTaGVldCwgcHJpbnRFdmFsKCkpOwpAQCAtMTU3OSw3ICsxNTc5LDcgQEAgdm9pZCBDU1NTdHls
ZVNlbGVjdG9yOjphZGp1c3RSZW5kZXJTdHlsZShSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQg
KmUpCiAKICAgICAvLyBMZXQgdGhlIHRoZW1lIGFsc28gaGF2ZSBhIGNyYWNrIGF0IGFkanVzdGlu
ZyB0aGUgc3R5bGUuCiAgICAgaWYgKHN0eWxlLT5oYXNBcHBlYXJhbmNlKCkpCi0gICAgICAgIHRo
ZW1lKCktPmFkanVzdFN0eWxlKHRoaXMsIHN0eWxlLCBlLCBtX2hhc1VBQXBwZWFyYW5jZSwgbV9i
b3JkZXJEYXRhLCBtX2JhY2tncm91bmREYXRhLCBtX2JhY2tncm91bmRDb2xvcik7CisgICAgICAg
IGRlZmF1bHRUaGVtZSgpLT5hZGp1c3RTdHlsZSh0aGlzLCBzdHlsZSwgZSwgbV9oYXNVQUFwcGVh
cmFuY2UsIG1fYm9yZGVyRGF0YSwgbV9iYWNrZ3JvdW5kRGF0YSwgbV9iYWNrZ3JvdW5kQ29sb3Ip
OwogCiAjaWYgRU5BQkxFKFNWRykKICAgICBpZiAoZSAmJiBlLT5pc1NWR0VsZW1lbnQoKSkgewpA
QCAtNDM3Niw3ICs0Mzc2LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5
KGludCBpZCwgQ1NTVmFsdWUgKnZhbHVlKQogICAgICAgICAgICAgbV9saW5lSGVpZ2h0VmFsdWUg
PSAwOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2Ny
aXB0aW9uOwotICAgICAgICAgICAgdGhlbWUoKS0+c3lzdGVtRm9udChwcmltaXRpdmVWYWx1ZS0+
Z2V0SWRlbnQoKSwgZm9udERlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgIGRlZmF1bHRUaGVtZSgp
LT5zeXN0ZW1Gb250KHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpLCBmb250RGVzY3JpcHRpb24p
OwogIAogICAgICAgICAgICAgLy8gRG91YmxlLWNoZWNrIGFuZCBzZWUgaWYgdGhlIHRoZW1lIGRp
ZCBhbnl0aGluZy4gIElmIG5vdCwgZG9uJ3QgYm90aGVyIHVwZGF0aW5nIHRoZSBmb250LgogICAg
ICAgICAgICAgaWYgKGZvbnREZXNjcmlwdGlvbi5pc0Fic29sdXRlU2l6ZSgpKSB7CkBAIC01ODEx
LDcgKzU4MTEsNyBAQCBzdGF0aWMgQ29sb3IgY29sb3JGb3JDU1NWYWx1ZShpbnQgY3NzVmFsdWVJ
ZCkKICAgICAgICAgaWYgKGNvbC0+Y3NzVmFsdWVJZCA9PSBjc3NWYWx1ZUlkKQogICAgICAgICAg
ICAgcmV0dXJuIGNvbC0+Y29sb3I7CiAgICAgfQotICAgIHJldHVybiB0aGVtZSgpLT5zeXN0ZW1D
b2xvcihjc3NWYWx1ZUlkKTsKKyAgICByZXR1cm4gZGVmYXVsdFRoZW1lKCktPnN5c3RlbUNvbG9y
KGNzc1ZhbHVlSWQpOwogfQogCiBDb2xvciBDU1NTdHlsZVNlbGVjdG9yOjpnZXRDb2xvckZyb21Q
cmltaXRpdmVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUpCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1dlYkNvcmUvZG9tL0NvbnRhaW5l
ck5vZGUuY3BwCmluZGV4IDI1NzM5MDguLjIwY2M3YTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9t
L0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBA
IC03OTgsNyArNzk4LDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpzZXRBY3RpdmUoYm9vbCBkb3du
LCBib29sIHBhdXNlKQogICAgICAgICBpZiAocmVhY3RzVG9QcmVzcykKICAgICAgICAgICAgIHNl
dE5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIo
KS0+c3R5bGUoKS0+aGFzQXBwZWFyYW5jZSgpKSB7Ci0gICAgICAgICAgICBpZiAodGhlbWUoKS0+
c3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIFByZXNzZWRTdGF0ZSkpCisgICAgICAgICAgICBpZiAo
cmVuZGVyZXIoKS0+dGhlbWUoKS0+c3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIFByZXNzZWRTdGF0
ZSkpCiAgICAgICAgICAgICAgICAgcmVhY3RzVG9QcmVzcyA9IHRydWU7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKHJlYWN0c1RvUHJlc3MgJiYgcGF1c2UpIHsKQEAgLTg0MCw3ICs4NDAsNyBAQCB2
b2lkIENvbnRhaW5lck5vZGU6OnNldEhvdmVyZWQoYm9vbCBvdmVyKQogICAgICAgICBpZiAocmVu
ZGVyZXIoKS0+c3R5bGUoKS0+YWZmZWN0ZWRCeUhvdmVyUnVsZXMoKSkKICAgICAgICAgICAgIHNl
dE5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIo
KS0+c3R5bGUoKS0+aGFzQXBwZWFyYW5jZSgpKQotICAgICAgICAgICAgdGhlbWUoKS0+c3RhdGVD
aGFuZ2VkKHJlbmRlcmVyKCksIEhvdmVyU3RhdGUpOworICAgICAgICAgICAgcmVuZGVyZXIoKS0+
dGhlbWUoKS0+c3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIEhvdmVyU3RhdGUpOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwIGIv
V2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDFkMzZmNTEuLjc2
Yzc4MjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNw
cAorKysgYi9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAKQEAgLTQ2LDcg
KzQ2LDYgQEAKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgog
I2luY2x1ZGUgIlJhbmdlLmgiCi0jaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJS
ZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVHlwaW5n
Q29tbWFuZC5oIgpAQCAtMTI2OCw3ICsxMjY3LDcgQEAgdm9pZCBTZWxlY3Rpb25Db250cm9sbGVy
Ojpmb2N1c2VkT3JBY3RpdmVTdGF0ZUNoYW5nZWQoKQogICAgICAgICBub2RlLT5zZXROZWVkc1N0
eWxlUmVjYWxjKCk7CiAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+
cmVuZGVyZXIoKSkKICAgICAgICAgICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+c3R5bGUo
KS0+aGFzQXBwZWFyYW5jZSgpKQotICAgICAgICAgICAgICAgIHRoZW1lKCktPnN0YXRlQ2hhbmdl
ZChyZW5kZXJlciwgRm9jdXNTdGF0ZSk7CisgICAgICAgICAgICAgICAgcmVuZGVyZXItPnRoZW1l
KCktPnN0YXRlQ2hhbmdlZChyZW5kZXJlciwgRm9jdXNTdGF0ZSk7CiAgICAgfQogCiAgICAgLy8g
U2VjdXJlIGtleWJvYXJkIGVudHJ5IGlzIHNldCBieSB0aGUgYWN0aXZlIGZyYW1lLgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDM2ZDIwYWMuLmI5ODVlNzUgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTcxLDcgKzcxLDcgQEAg
dm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRB
dHRyaWJ1dGUgKmF0dHIpCiAgICAgICAgIGlmIChvbGREaXNhYmxlZCAhPSBtX2Rpc2FibGVkKSB7
CiAgICAgICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgICAgICAgICBpZiAocmVu
ZGVyZXIoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpLT5oYXNBcHBlYXJhbmNlKCkpCi0gICAgICAg
ICAgICAgICAgdGhlbWUoKS0+c3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIEVuYWJsZWRTdGF0ZSk7
CisgICAgICAgICAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS0+c3RhdGVDaGFuZ2VkKHJlbmRl
cmVyKCksIEVuYWJsZWRTdGF0ZSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGF0dHItPm5h
bWUoKSA9PSByZWFkb25seUF0dHIpIHsKICAgICAgICAgYm9vbCBvbGRSZWFkT25seSA9IG1fcmVh
ZE9ubHk7CkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6cGFy
c2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKQogICAgICAgICBpZiAob2xk
UmVhZE9ubHkgIT0gbV9yZWFkT25seSkgewogICAgICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2Fs
YygpOwogICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKS0+
aGFzQXBwZWFyYW5jZSgpKQotICAgICAgICAgICAgICAgIHRoZW1lKCktPnN0YXRlQ2hhbmdlZChy
ZW5kZXJlcigpLCBSZWFkT25seVN0YXRlKTsKKyAgICAgICAgICAgICAgICByZW5kZXJlcigpLT50
aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgUmVhZE9ubHlTdGF0ZSk7CiAgICAgICAg
IH0KICAgICB9IGVsc2UKICAgICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KGF0dHIpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IGRiYzgxOGIuLmIzYzc1NjYg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTg4MSw5ICs4ODEsOSBAQCB2b2lkIEhU
TUxJbnB1dEVsZW1lbnQ6OnNldENoZWNrZWQoYm9vbCBub3dDaGVja2VkLCBib29sIHNlbmRDaGFu
Z2VFdmVudCkKICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAKICAgICBjaGVja2VkUmFkaW9C
dXR0b25zKHRoaXMpLmFkZEJ1dHRvbih0aGlzKTsKLSAgICAKKwogICAgIGlmIChyZW5kZXJlcigp
ICYmIHJlbmRlcmVyKCktPnN0eWxlKCktPmhhc0FwcGVhcmFuY2UoKSkKLSAgICAgICAgdGhlbWUo
KS0+c3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIENoZWNrZWRTdGF0ZSk7CisgICAgICAgIHJlbmRl
cmVyKCktPnRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBDaGVja2VkU3RhdGUpOwog
CiAgICAgLy8gT25seSBzZW5kIGEgY2hhbmdlIGV2ZW50IGZvciBpdGVtcyBpbiB0aGUgZG9jdW1l
bnQgKGF2b2lkIGZpcmluZyBkdXJpbmcKICAgICAvLyBwYXJzaW5nKSBhbmQgZG9uJ3Qgc2VuZCBh
IGNoYW5nZSBldmVudCBmb3IgYSByYWRpbyBidXR0b24gdGhhdCdzIGdldHRpbmcKQEAgLTkwNSw3
ICs5MDUsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldEluZGV0ZXJtaW5hdGUoYm9vbCBf
aW5kZXRlcm1pbmF0ZSkKICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAKICAgICBpZiAocmVu
ZGVyZXIoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpLT5oYXNBcHBlYXJhbmNlKCkpCi0gICAgICAg
IHRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBDaGVja2VkU3RhdGUpOworICAgICAg
ICByZW5kZXJlcigpLT50aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgQ2hlY2tlZFN0
YXRlKTsKIH0KIAogaW50IEhUTUxJbnB1dEVsZW1lbnQ6OnNpemUoKSBjb25zdApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXgg
YTM2YzFhYS4uYTIyOGJmOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysg
Yi9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC02MjIsNyArNjIyLDcgQEAgdm9pZCBGcmFtZTo6
c2VsZWN0aW9uTGF5b3V0Q2hhbmdlZCgpCiAgICAgLy8gU3RhcnQgYmxpbmtpbmcgd2l0aCBhIGJs
YWNrIGNhcmV0LiBCZSBzdXJlIG5vdCB0byByZXN0YXJ0IGlmIHdlJ3JlCiAgICAgLy8gYWxyZWFk
eSBibGlua2luZyBpbiB0aGUgcmlnaHQgbG9jYXRpb24uCiAgICAgaWYgKHNob3VsZEJsaW5rICYm
ICFtX2NhcmV0QmxpbmtUaW1lci5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgIGlmIChkb3VibGUgYmxp
bmtJbnRlcnZhbCA9IHRoZW1lKCktPmNhcmV0QmxpbmtJbnRlcnZhbCgpKQorICAgICAgICBpZiAo
ZG91YmxlIGJsaW5rSW50ZXJ2YWwgPSBwYWdlKCktPnRoZW1lKCktPmNhcmV0QmxpbmtJbnRlcnZh
bCgpKQogICAgICAgICAgICAgbV9jYXJldEJsaW5rVGltZXIuc3RhcnRSZXBlYXRpbmcoYmxpbmtJ
bnRlcnZhbCk7CiAKICAgICAgICAgaWYgKCFtX2NhcmV0UGFpbnQpIHsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5k
ZXggZjY1MDFiZS4uMzhiMDVlOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAKKysrIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTEyOTYsMTAgKzEyOTYsMTAg
QEAgdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZUNvbnRyb2xUaW50cygpCiAgICAgLy8gdG8gZGVmaW5l
IHdoZW4gY29udHJvbHMgZ2V0IHRoZSB0aW50IGFuZCB0byBjYWxsIHRoaXMgZnVuY3Rpb24gd2hl
biB0aGF0IGNoYW5nZXMuCiAgICAgCiAgICAgLy8gT3B0aW1pemUgdGhlIGNvbW1vbiBjYXNlIHdo
ZXJlIHdlIGJyaW5nIGEgd2luZG93IHRvIHRoZSBmcm9udCB3aGlsZSBpdCdzIHN0aWxsIGVtcHR5
LgotICAgIGlmICghbV9mcmFtZSB8fCBtX2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCkuaXNFbXB0eSgp
KSAKKyAgICBpZiAoIW1fZnJhbWUgfHwgbV9mcmFtZS0+bG9hZGVyKCktPnVybCgpLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGlmICh0aGVtZSgpLT5zdXBwb3J0c0NvbnRy
b2xUaW50cygpICYmIG1fZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpKSB7CisKKyAgICBpZiAobV9m
cmFtZS0+Y29udGVudFJlbmRlcmVyKCkgJiYgbV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCktPnRo
ZW1lKCktPnN1cHBvcnRzQ29udHJvbFRpbnRzKCkpIHsKICAgICAgICAgaWYgKG5lZWRzTGF5b3V0
KCkpCiAgICAgICAgICAgICBsYXlvdXQoKTsKICAgICAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRl
eHQqIGNvbnN0IG5vQ29udGV4dCA9IDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAgYi9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggYTE0MzQzZC4uOWVhY2Q2YSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApA
QCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKICNpbmNsdWRlICJQcm9n
cmVzc1RyYWNrZXIuaCIKICNpbmNsdWRlICJSZW5kZXJXaWRnZXQuaCIKKyNpbmNsdWRlICJSZW5k
ZXJUaGVtZS5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTZWxl
Y3Rpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTEyMCw2ICsxMjEs
NyBAQCBQYWdlOjpQYWdlKENocm9tZUNsaWVudCogY2hyb21lQ2xpZW50LCBDb250ZXh0TWVudUNs
aWVudCogY29udGV4dE1lbnVDbGllbnQsIEVkaQogICAgICwgbV9kZWJ1Z2dlcigwKQogICAgICwg
bV9jdXN0b21IVE1MVG9rZW5pemVyVGltZURlbGF5KC0xKQogICAgICwgbV9jdXN0b21IVE1MVG9r
ZW5pemVyQ2h1bmtTaXplKC0xKQorICAgICwgbV90aGVtZShSZW5kZXJUaGVtZTo6dGhlbWVGb3JQ
YWdlKHRoaXMpKQogewogICAgIGlmICghYWxsUGFnZXMpIHsKICAgICAgICAgYWxsUGFnZXMgPSBu
ZXcgSGFzaFNldDxQYWdlKj47CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvV2Vi
Q29yZS9wYWdlL1BhZ2UuaAppbmRleCBlZWRkMjRjLi5iYWI2Yjg2IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BhZ2UvUGFnZS5oCisrKyBiL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTI3LDYgKzI3LDcg
QEAKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiTGlua0hhc2guaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKQEAgLTc4
LDcgKzc5LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIFBhZ2UoQ2hyb21lQ2xp
ZW50KiwgQ29udGV4dE1lbnVDbGllbnQqLCBFZGl0b3JDbGllbnQqLCBEcmFnQ2xpZW50KiwgSW5z
cGVjdG9yQ2xpZW50Kik7CiAgICAgICAgIH5QYWdlKCk7Ci0gICAgICAgIAorCisgICAgICAgIFJl
bmRlclRoZW1lKiB0aGVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGhlbWUuZ2V0KCk7IH07CisKICAg
ICAgICAgc3RhdGljIHZvaWQgcmVmcmVzaFBsdWdpbnMoYm9vbCByZWxvYWQpOwogICAgICAgICBQ
bHVnaW5EYXRhKiBwbHVnaW5EYXRhKCkgY29uc3Q7CiAKQEAgLTIxNyw2ICsyMjAsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8UGx1Z2luRGF0YT4gbV9w
bHVnaW5EYXRhOwogCisgICAgICAgIFJlZlB0cjxSZW5kZXJUaGVtZT4gbV90aGVtZTsKKwogICAg
ICAgICBFZGl0b3JDbGllbnQqIG1fZWRpdG9yQ2xpZW50OwogCiAgICAgICAgIGludCBtX2ZyYW1l
Q291bnQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNo
cm9taXVtLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0u
Y3BwCmluZGV4IGIwMGI2MjUuLjkyYzNjYmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwCkBAIC03NzEsOCArNzcxLDggQEAgdm9pZCBQb3B1
cExpc3RCb3g6OnBhaW50Um93KEdyYXBoaWNzQ29udGV4dCogZ2MsIGNvbnN0IEludFJlY3QmIHJl
Y3QsIGludCByb3dJbmQKICAgICAvLyBQYWludCBiYWNrZ3JvdW5kCiAgICAgQ29sb3IgYmFja0Nv
bG9yLCB0ZXh0Q29sb3I7CiAgICAgaWYgKHJvd0luZGV4ID09IG1fc2VsZWN0ZWRJbmRleCkgewot
ICAgICAgICBiYWNrQ29sb3IgPSB0aGVtZSgpLT5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dy
b3VuZENvbG9yKCk7Ci0gICAgICAgIHRleHRDb2xvciA9IHRoZW1lKCktPmFjdGl2ZUxpc3RCb3hT
ZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKTsKKyAgICAgICAgYmFja0NvbG9yID0gZGVmYXVsdFRo
ZW1lKCktPmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICAgICAg
dGV4dENvbG9yID0gZGVmYXVsdFRoZW1lKCktPmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3Jv
dW5kQ29sb3IoKTsKICAgICB9IGVsc2UgewogICAgICAgICBiYWNrQ29sb3IgPSBzdHlsZS5iYWNr
Z3JvdW5kQ29sb3IoKTsKICAgICAgICAgdGV4dENvbG9yID0gc3R5bGUuZm9yZWdyb3VuZENvbG9y
KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAKaW5kZXggYTk1ZjU1Ny4u
YTEwN2RkNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsu
Y3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcApAQCAtMzQs
MTMgKzM0LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyVGhlbWUqIHRoZW1l
KCkKK1Bhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IFJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2UoUGFn
ZSogcGFnZSkKIHsKLSAgICBzdGF0aWMgUmVuZGVyVGhlbWVHdGsgZ3RrVGhlbWU7Ci0gICAgcmV0
dXJuICZndGtUaGVtZTsKKyAgICBzdGF0aWMgUmVmUHRyPFJlbmRlclRoZW1lPiBydCA9IG5ldyBS
ZW5kZXJUaGVtZUd0aygpOworICAgIHJldHVybiBydDsgLy8ga2VlcCB0aGUgcmVmZXJlbmNlIG9m
IG9uZS4KIH0KIAotc3RhdGljIGJvb2wgbW96R3RrSW5pdGlhbGl6ZWQgPSBmYWxzZTsKK3N0YXRp
YyBpbnQgbW96R3RrUmVmQ291bnQgPSAwOwogCiBSZW5kZXJUaGVtZUd0azo6UmVuZGVyVGhlbWVH
dGsoKQogICAgIDogbV9ndGtXaW5kb3coMCkKQEAgLTQ4LDE4ICs0OCwxOCBAQCBSZW5kZXJUaGVt
ZUd0azo6UmVuZGVyVGhlbWVHdGsoKQogICAgICwgbV9ndGtFbnRyeSgwKQogICAgICwgbV9ndGtU
cmVlVmlldygwKQogewotICAgIGlmICghbW96R3RrSW5pdGlhbGl6ZWQpIHsKLSAgICAgICAgbW96
R3RrSW5pdGlhbGl6ZWQgPSB0cnVlOworICAgIGlmICghbW96R3RrUmVmQ291bnQpCiAgICAgICAg
IG1vel9ndGtfaW5pdCgpOwotICAgIH0KKworICAgICsrbW96R3RrUmVmQ291bnQ7CiB9CiAKIFJl
bmRlclRoZW1lR3RrOjp+UmVuZGVyVGhlbWVHdGsoKQogewotICAgIGlmIChtb3pHdGtJbml0aWFs
aXplZCkgeworICAgIC0tbW96R3RrUmVmQ291bnQ7CisKKyAgICBpZiAoIW1vekd0a1JlZkNvdW50
KQogICAgICAgICBtb3pfZ3RrX3NodXRkb3duKCk7Ci0gICAgICAgIG1vekd0a0luaXRpYWxpemVk
ID0gZmFsc2U7Ci0gICAgfQogfQogCiBzdGF0aWMgYm9vbCBzdXBwb3J0c0ZvY3VzKENvbnRyb2xQ
YXJ0IGFwcGVhcmFuY2UpCkBAIC00NzAsNyArNDcwLDcgQEAgR3RrV2lkZ2V0KiBSZW5kZXJUaGVt
ZUd0azo6Z3RrRW50cnkoKSBjb25zdAogICAgICAgICByZXR1cm4gbV9ndGtFbnRyeTsKIAogICAg
IG1fZ3RrRW50cnkgPSBndGtfZW50cnlfbmV3KCk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChtX2d0
a0VudHJ5LCAic3R5bGUtc2V0IiwgR19DQUxMQkFDSyhndGtTdHlsZVNldENhbGxiYWNrKSwgdGhl
bWUoKSk7CisgICAgZ19zaWduYWxfY29ubmVjdChtX2d0a0VudHJ5LCAic3R5bGUtc2V0IiwgR19D
QUxMQkFDSyhndGtTdHlsZVNldENhbGxiYWNrKSwgY29uc3RfY2FzdDxSZW5kZXJUaGVtZUd0ayo+
KHRoaXMpKTsKICAgICBndGtfY29udGFpbmVyX2FkZChndGtDb250YWluZXIoKSwgbV9ndGtFbnRy
eSk7CiAgICAgZ3RrX3dpZGdldF9yZWFsaXplKG1fZ3RrRW50cnkpOwogCkBAIC00ODMsNyArNDgz
LDcgQEAgR3RrV2lkZ2V0KiBSZW5kZXJUaGVtZUd0azo6Z3RrVHJlZVZpZXcoKSBjb25zdAogICAg
ICAgICByZXR1cm4gbV9ndGtUcmVlVmlldzsKIAogICAgIG1fZ3RrVHJlZVZpZXcgPSBndGtfdHJl
ZV92aWV3X25ldygpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9ndGtUcmVlVmlldywgInN0eWxl
LXNldCIsIEdfQ0FMTEJBQ0soZ3RrU3R5bGVTZXRDYWxsYmFjayksIHRoZW1lKCkpOworICAgIGdf
c2lnbmFsX2Nvbm5lY3QobV9ndGtUcmVlVmlldywgInN0eWxlLXNldCIsIEdfQ0FMTEJBQ0soZ3Rr
U3R5bGVTZXRDYWxsYmFjayksIGNvbnN0X2Nhc3Q8UmVuZGVyVGhlbWVHdGsqPih0aGlzKSk7CiAg
ICAgZ3RrX2NvbnRhaW5lcl9hZGQoZ3RrQ29udGFpbmVyKCksIG1fZ3RrVHJlZVZpZXcpOwogICAg
IGd0a193aWRnZXRfcmVhbGl6ZShtX2d0a1RyZWVWaWV3KTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvUmVu
ZGVyVGhlbWVRdC5jcHAKaW5kZXggYjE2Y2JjNC4uYzgwMDFmOSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3F0
L1JlbmRlclRoZW1lUXQuY3BwCkBAIC0xMDYsMTAgKzEwNiwxMyBAQCBTdHlsZVBhaW50ZXI6On5T
dHlsZVBhaW50ZXIoKQogICAgIH0KIH0KIAotUmVuZGVyVGhlbWUqIHRoZW1lKCkKK1Bhc3NSZWZQ
dHI8UmVuZGVyVGhlbWU+IFJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2UoUGFnZSogcGFnZSkKIHsK
LSAgICBzdGF0aWMgUmVuZGVyVGhlbWVRdCBydDsKLSAgICByZXR1cm4gJnJ0OworICAgIGlmIChw
YWdlKQorICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlbmRlclRoZW1lUXQoKSk7CisKKyAg
ICBzdGF0aWMgUmVmUHRyPFJlbmRlclRoZW1lPiBmYWxsYmFjayA9IG5ldyBSZW5kZXJUaGVtZVF0
KCk7CisgICAgcmV0dXJuIGZhbGxiYWNrOyAvLyBrZWVwIHRoZSByZWZlcmVuY2Ugb2Ygb25lLgog
fQogCiBSZW5kZXJUaGVtZVF0OjpSZW5kZXJUaGVtZVF0KCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vd3gvUmVuZGVyVGhlbWVXeC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3d4L1JlbmRl
clRoZW1lV3guY3BwCmluZGV4IGEyNjQxNmYuLjc0MGRjMTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vd3gvUmVuZGVyVGhlbWVXeC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93eC9S
ZW5kZXJUaGVtZVd4LmNwcApAQCAtMTE5LDEwICsxMTksMTAgQEAgcHJpdmF0ZToKICNkZWZpbmUg
UE9QVVBfSU5URVJOQUxfUEFERElOR19SSUdIVCAyMAogI2VuZGlmCiAKLVJlbmRlclRoZW1lKiB0
aGVtZSgpCitQYXNzUmVmUHRyPFJlbmRlclRoZW1lPiBSZW5kZXJUaGVtZTo6dGhlbWVGb3JQYWdl
KFBhZ2UqIHBhZ2UpCiB7Ci0gICAgc3RhdGljIFJlbmRlclRoZW1lV3ggcnQ7Ci0gICAgcmV0dXJu
ICZydDsKKyAgICBzdGF0aWMgUmVmUHRyPFJlbmRlclRoZW1lPiBydCA9IG5ldyBSZW5kZXJUaGVt
ZVd4KCk7CisgICAgcmV0dXJuIHJ0OyAvLyBrZWVwIHRoZSByZWZlcmVuY2Ugb2Ygb25lLgogfQog
CiBib29sIFJlbmRlclRoZW1lV3g6OmlzQ29udHJvbFN0eWxlZChjb25zdCBSZW5kZXJTdHlsZSog
c3R5bGUsIGNvbnN0IEJvcmRlckRhdGEmIGJvcmRlciwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZVRleHRCb3guY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJv
eC5jcHAKaW5kZXggNDE4YmUxNS4uMzBkMTkyZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJv
eC5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyQXJlbmEuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgotI2luY2x1ZGUgIlJlbmRlclRo
ZW1lLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgImJyZWFrX2xpbmVzLmgiCiAjaW5j
bHVkZSA8d3RmL0Fsd2F5c0lubGluZS5oPgpAQCAtNzcwLDggKzc2OSw4IEBAIHZvaWQgSW5saW5l
VGV4dEJveDo6cGFpbnRUZXh0TWF0Y2hNYXJrZXIoR3JhcGhpY3NDb250ZXh0KiBwdCwgaW50IHR4
LCBpbnQgdHksIERvCiAgICAgLy8gT3B0aW9uYWxseSBoaWdobGlnaHQgdGhlIHRleHQKICAgICBp
ZiAocmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+bWFya2VkVGV4dE1hdGNoZXNBcmVI
aWdobGlnaHRlZCgpKSB7CiAgICAgICAgIENvbG9yIGNvbG9yID0gbWFya2VyLmFjdGl2ZU1hdGNo
ID8KLSAgICAgICAgICAgIHRoZW1lKCktPnBsYXRmb3JtQWN0aXZlVGV4dFNlYXJjaEhpZ2hsaWdo
dENvbG9yKCkgOgotICAgICAgICAgICAgdGhlbWUoKS0+cGxhdGZvcm1JbmFjdGl2ZVRleHRTZWFy
Y2hIaWdobGlnaHRDb2xvcigpOworICAgICAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS0+cGxh
dGZvcm1BY3RpdmVUZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IoKSA6CisgICAgICAgICAgICByZW5k
ZXJlcigpLT50aGVtZSgpLT5wbGF0Zm9ybUluYWN0aXZlVGV4dFNlYXJjaEhpZ2hsaWdodENvbG9y
KCk7CiAgICAgICAgIHB0LT5zYXZlKCk7CiAgICAgICAgIHVwZGF0ZUdyYXBoaWNzQ29udGV4dChw
dCwgY29sb3IsIGNvbG9yLCAwKTsgIC8vIERvbid0IGRyYXcgdGV4dCBhdCBhbGwhCiAgICAgICAg
IHB0LT5jbGlwKEludFJlY3QodHggKyBtX3gsIHR5ICsgeSwgbV93aWR0aCwgaCkpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCmluZGV4IDVjZDkzNjMuLjdhYThj
MWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNw
cAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKQEAgLTE1
OSw3ICsxNTksNyBAQCB2b2lkIE1lZGlhQ29udHJvbElucHV0RWxlbWVudDo6dXBkYXRlU3R5bGUo
KQogYm9vbCBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6OmhpdFRlc3QoY29uc3QgSW50UG9pbnQm
IGFic1BvaW50KQogewogICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCkt
Pmhhc0FwcGVhcmFuY2UoKSkKLSAgICAgICAgcmV0dXJuIHRoZW1lKCktPmhpdFRlc3RNZWRpYUNv
bnRyb2xQYXJ0KHJlbmRlcmVyKCksIGFic1BvaW50KTsKKyAgICAgICAgcmV0dXJuIHJlbmRlcmVy
KCktPnRoZW1lKCktPmhpdFRlc3RNZWRpYUNvbnRyb2xQYXJ0KHJlbmRlcmVyKCksIGFic1BvaW50
KTsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmlu
ZGV4IGY4MTAxOGQuLjg3ZjBjNzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAt
NDMsNyArNDMsNiBAQAogI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2VsbC5oIgogI2luY2x1ZGUgIlJl
bmRlclRhYmxlQ29sLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVSb3cuaCIKLSNpbmNsdWRlICJS
ZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJUcmFuc2Zv
cm1TdGF0ZS5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KQEAgLTIxNCw2ICsyMTMsMTQgQEAgUmVu
ZGVyT2JqZWN0Ojp+UmVuZGVyT2JqZWN0KCkKICNlbmRpZgogfQogCitSZW5kZXJUaGVtZSogUmVu
ZGVyT2JqZWN0Ojp0aGVtZSgpIGNvbnN0Cit7CisgICAgaWYgKGRvY3VtZW50KCktPnBhZ2UoKSkK
KyAgICAgICAgcmV0dXJuIGRvY3VtZW50KCktPnBhZ2UoKS0+dGhlbWUoKTsKKworICAgIHJldHVy
biBkZWZhdWx0VGhlbWUoKS5nZXQoKTsKK30KKwogYm9vbCBSZW5kZXJPYmplY3Q6OmlzRGVzY2Vu
ZGFudE9mKGNvbnN0IFJlbmRlck9iamVjdCogb2JqKSBjb25zdAogewogICAgIGZvciAoY29uc3Qg
UmVuZGVyT2JqZWN0KiByID0gdGhpczsgcjsgciA9IHItPm1fcGFyZW50KSB7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5oCmluZGV4IDA5MDFiZmYuLjQyMGY0YWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5oCkBAIC00OCw2ICs0OCw3IEBAIGNsYXNzIFJlbmRlcklubGluZTsKIGNsYXNzIFJlbmRl
ckJsb2NrOwogY2xhc3MgUmVuZGVyRmxvdzsKIGNsYXNzIFJlbmRlckxheWVyOworY2xhc3MgUmVu
ZGVyVGhlbWU7CiBjbGFzcyBUcmFuc2Zvcm1TdGF0ZTsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsK
IApAQCAtMTM3LDYgKzEzOCw4IEBAIHB1YmxpYzoKICAgICBSZW5kZXJPYmplY3QoTm9kZSopOwog
ICAgIHZpcnR1YWwgflJlbmRlck9iamVjdCgpOwogCisgICAgUmVuZGVyVGhlbWUqIHRoZW1lKCkg
Y29uc3Q7CisKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCA9IDA7
CiAKICAgICBSZW5kZXJPYmplY3QqIHBhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50OyB9
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKaW5kZXggZTY3ZTYxMi4uZmNlODhkOSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCisrKyBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lLmNwcApAQCAtNDksNiArNDksMTIgQEAgUmVuZGVyVGhlbWU6OlJl
bmRlclRoZW1lKCkKIHsKIH0KIAorLy8gV2hlbiB0aGUgdGhlbWUgaXMgbmVlZGVkIGluIG5vbi1w
YWdlIGRlcGVuZGVudCBjb2RlLCB0aGUgZGVmYXVsdFRoZW1lKCkgaXMgdXNlZCBhcyBmYWxsYmFj
ay4KK1Bhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IGRlZmF1bHRUaGVtZSgpCit7CisgICAgcmV0dXJu
IFJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2UoMCk7Cit9CisKIHZvaWQgUmVuZGVyVGhlbWU6OmFk
anVzdFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUs
IEVsZW1lbnQqIGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIFVBSGFzQXBw
ZWFyYW5jZSwgY29uc3QgQm9yZGVyRGF0YSYgYm9yZGVyLCBjb25zdCBGaWxsTGF5ZXImIGJhY2tn
cm91bmQsIGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IpCiB7CkBAIC02Miw3ICs2OCw3IEBA
IHZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9y
LCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsCiAgICAgZWxzZSBpZiAoc3R5bGUtPmRpc3BsYXkoKSA9
PSBDT01QQUNUIHx8IHN0eWxlLT5kaXNwbGF5KCkgPT0gUlVOX0lOIHx8IHN0eWxlLT5kaXNwbGF5
KCkgPT0gTElTVF9JVEVNIHx8IHN0eWxlLT5kaXNwbGF5KCkgPT0gVEFCTEUpCiAgICAgICAgIHN0
eWxlLT5zZXREaXNwbGF5KEJMT0NLKTsKIAotICAgIGlmIChVQUhhc0FwcGVhcmFuY2UgJiYgdGhl
bWUoKS0+aXNDb250cm9sU3R5bGVkKHN0eWxlLCBib3JkZXIsIGJhY2tncm91bmQsIGJhY2tncm91
bmRDb2xvcikpIHsKKyAgICBpZiAoVUFIYXNBcHBlYXJhbmNlICYmIGlzQ29udHJvbFN0eWxlZChz
dHlsZSwgYm9yZGVyLCBiYWNrZ3JvdW5kLCBiYWNrZ3JvdW5kQ29sb3IpKSB7CiAgICAgICAgIGlm
IChwYXJ0ID09IE1lbnVsaXN0UGFydCkgewogICAgICAgICAgICAgc3R5bGUtPnNldEFwcGVhcmFu
Y2UoTWVudWxpc3RCdXR0b25QYXJ0KTsKICAgICAgICAgICAgIHBhcnQgPSBNZW51bGlzdEJ1dHRv
blBhcnQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAppbmRleCBiYzgxZDRkLi5jNzlmNzNiIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCisrKyBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lLmgKQEAgLTIzLDEzICsyMywxNiBAQAogI2lmbmRlZiBSZW5kZXJU
aGVtZV9oCiAjZGVmaW5lIFJlbmRlclRoZW1lX2gKIAotI2luY2x1ZGUgIlJlbmRlck9iamVjdC5o
IgogI2lmIFVTRShORVdfVEhFTUUpCiAjaW5jbHVkZSAiVGhlbWUuaCIKICNlbHNlCiAjaW5jbHVk
ZSAiVGhlbWVUeXBlcy5oIgogI2VuZGlmCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCisjaW5j
bHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgorI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC0zOCwxMSArNDEsMTYgQEAgY2xhc3MgUG9wdXBNZW51OwogY2xh
c3MgUmVuZGVyTWVudUxpc3Q7CiBjbGFzcyBDU1NTdHlsZVNoZWV0OwogCi1jbGFzcyBSZW5kZXJU
aGVtZSB7CitjbGFzcyBSZW5kZXJUaGVtZSA6IHB1YmxpYyBSZWZDb3VudGVkPFJlbmRlclRoZW1l
PiB7CiBwdWJsaWM6CiAgICAgUmVuZGVyVGhlbWUoKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJUaGVt
ZSgpIHsgfQogCisgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyB0byBiZSBpbXBsZW1lbnRlZCBpbiB5
b3VyIHBsYXRmb3JtLXNwZWNpZmljIHRoZW1lIGltcGxlbWVudGF0aW9uIHRvIGhhbmQgYmFjayB0
aGUKKyAgICAvLyBhcHByb3ByaWF0ZSBwbGF0Zm9ybSB0aGVtZS4gV2hlbiB0aGUgdGhlbWUgaXMg
bmVlZGVkIGluIG5vbi1wYWdlIGRlcGVuZGVudCBjb2RlLCBhIGRlZmF1bHQgdGhlbWUgaXMKKyAg
ICAvLyB1c2VkIGFzIGZhbGxiYWNrLCB3aGljaCBpcyByZXR1cm5lZCBmb3IgYSBudWxsZWQgcGFn
ZSwgc28gdGhlIHBsYXRmb3JtIGNvZGUgbmVlZHMgdG8gYWNjb3VudCBmb3IgdGhpcy4KKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gdGhlbWVGb3JQYWdlKFBhZ2UqIHBhZ2UgPSAw
KTsKKwogICAgIC8vIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuZXZlciBzdHlsZSBoYXMgYmVl
biBjb21wdXRlZCBmb3IgYW4gZWxlbWVudCBhbmQgdGhlIGFwcGVhcmFuY2UKICAgICAvLyBwcm9w
ZXJ0eSBoYXMgYmVlbiBzZXQgdG8gYSB2YWx1ZSBvdGhlciB0aGFuICJub25lIi4gIFRoZSB0aGVt
ZSBzaG91bGQgbWFwIGluIGFsbCBvZiB0aGUgYXBwcm9wcmlhdGUKICAgICAvLyBtZXRyaWNzIGFu
ZCBkZWZhdWx0cyBnaXZlbiB0aGUgY29udGVudHMgb2YgdGhlIHN0eWxlLiAgVGhpcyBpbmNsdWRl
cyBzb3BoaXN0aWNhdGVkIG9wZXJhdGlvbnMgbGlrZQpAQCAtMjU3LDkgKzI2NSw4IEBAIHByaXZh
dGU6CiAjZW5kaWYKIH07CiAKLS8vIEZ1bmN0aW9uIHRvIG9idGFpbiB0aGUgdGhlbWUuICBUaGlz
IGlzIGltcGxlbWVudGVkIGluIHlvdXIgcGxhdGZvcm0tc3BlY2lmaWMgdGhlbWUgaW1wbGVtZW50
YXRpb24gdG8gaGFuZAotLy8gYmFjayB0aGUgYXBwcm9wcmlhdGUgcGxhdGZvcm0gdGhlbWUuCi1S
ZW5kZXJUaGVtZSogdGhlbWUoKTsKKy8vIFdoZW4gdGhlIHRoZW1lIGlzIG5lZWRlZCBpbiBub24t
cGFnZSBkZXBlbmRlbnQgY29kZSwgdGhlIGRlZmF1bHRUaGVtZSgpIGlzIHVzZWQgYXMgZmFsbGJh
Y2suCitQYXNzUmVmUHRyPFJlbmRlclRoZW1lPiBkZWZhdWx0VGhlbWUoKTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZUNocm9taXVtTGludXguY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1
bUxpbnV4LmNwcAppbmRleCA5NGVlNjRmLi5mMzdmMGU4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5jcHAKQEAgLTExMywxMCArMTEzLDEwIEBAIHN0
YXRpYyBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnRQYXJlbnQoTm9kZSogbm9kZSkKIH0K
ICNlbmRpZgogCi1SZW5kZXJUaGVtZSogdGhlbWUoKQorUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4g
UmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZShQYWdlKiBwYWdlKQogewotICAgIHN0YXRpYyBSZW5k
ZXJUaGVtZUNocm9taXVtTGludXggdGhlbWU7Ci0gICAgcmV0dXJuICZ0aGVtZTsKKyAgICBzdGF0
aWMgUmVmUHRyPFJlbmRlclRoZW1lPiBydCA9IG5ldyBSZW5kZXJUaGVtZUNocm9taXVtTGludXgo
KTsKKyAgICByZXR1cm4gcnQ7IC8vIGtlZXAgdGhlIHJlZmVyZW5jZSBvZiBvbmUuCiB9CiAKIFJl
bmRlclRoZW1lQ2hyb21pdW1MaW51eDo6UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4KCkKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1NYWMubW0gYi9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTWFjLm1tCmluZGV4IGY2MDgxYTUuLjQy
YTZlMDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1N
YWMubW0KKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bU1hYy5tbQpA
QCAtMTI0LDEwICsxMjQsMTAgQEAgSW50UmVjdCBOU1JlY3RUb0ludFJlY3QoY29uc3QgTlNSZWN0
ICYgcmVjdCkKICAgICByZXR1cm4gSW50UmVjdChyZWN0Lm9yaWdpbi54LCByZWN0Lm9yaWdpbi55
LCByZWN0LnNpemUud2lkdGgsIHJlY3Quc2l6ZS5oZWlnaHQpOwogfQogCi1SZW5kZXJUaGVtZSog
dGhlbWUoKQorUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFn
ZShQYWdlKiBwYWdlKQogewotICAgIHN0YXRpYyBSZW5kZXJUaGVtZUNocm9taXVtTWFjKiBtYWNU
aGVtZSA9IG5ldyBSZW5kZXJUaGVtZUNocm9taXVtTWFjOwotICAgIHJldHVybiBtYWNUaGVtZTsK
KyAgICBzdGF0aWMgUmVmUHRyPFJlbmRlclRoZW1lPiBydCA9IG5ldyBSZW5kZXJUaGVtZUNocm9t
aXVtTWFjKCk7CisgICAgcmV0dXJuIHJ0OyAvLyBrZWVwIHRoZSByZWZlcmVuY2Ugb2Ygb25lLgog
fQogCiBSZW5kZXJUaGVtZUNocm9taXVtTWFjOjpSZW5kZXJUaGVtZUNocm9taXVtTWFjKCkKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1XaW4uY3BwIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHAKaW5kZXggNTI4ODE5
MS4uNTEyNDIzYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJv
bWl1bVdpbi5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdp
bi5jcHAKQEAgLTI2NSwxMSArMjY1LDEwIEBAIHN0YXRpYyBIVE1MTWVkaWFFbGVtZW50KiBtZWRp
YUVsZW1lbnRQYXJlbnQoTm9kZSogbm9kZSkKIH0KICNlbmRpZgogCi0vLyBJbXBsZW1lbnQgV2Vi
Q29yZTo6dGhlbWUoKSBmb3IgZ2V0dGluZyB0aGUgZ2xvYmFsIFJlbmRlclRoZW1lLgotUmVuZGVy
VGhlbWUqIHRoZW1lKCkKK1Bhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IFJlbmRlclRoZW1lOjp0aGVt
ZUZvclBhZ2UoUGFnZSogcGFnZSkKIHsKLSAgICBzdGF0aWMgUmVuZGVyVGhlbWVDaHJvbWl1bVdp
biB3aW5UaGVtZTsKLSAgICByZXR1cm4gJndpblRoZW1lOworICAgIHN0YXRpYyBSZWZQdHI8UmVu
ZGVyVGhlbWU+IHJ0ID0gbmV3IFJlbmRlclRoZW1lQ2hyb21pdW1XaW4oKTsKKyAgICByZXR1cm4g
cnQ7IC8vIGtlZXAgdGhlIHJlZmVyZW5jZSBvZiBvbmUuCiB9CiAKIFN0cmluZyBSZW5kZXJUaGVt
ZUNocm9taXVtV2luOjpleHRyYURlZmF1bHRTdHlsZVNoZWV0KCkKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVNYWMubW0KaW5kZXggYzNlYzkxYS4uNGMyM2I5OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVNYWMubW0KQEAgLTEwMSwxMCArMTAxLDEwIEBAIGVudW0gewogICAgIGxlZnRQYWRkaW5n
CiB9OwogCi1SZW5kZXJUaGVtZSogdGhlbWUoKQorUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gUmVu
ZGVyVGhlbWU6OnRoZW1lRm9yUGFnZShQYWdlKiBwYWdlKQogewotICAgIHN0YXRpYyBSZW5kZXJU
aGVtZU1hYyogbWFjVGhlbWUgPSBuZXcgUmVuZGVyVGhlbWVNYWM7Ci0gICAgcmV0dXJuIG1hY1Ro
ZW1lOworICAgIHN0YXRpYyBSZWZQdHI8UmVuZGVyVGhlbWU+IHJ0ID0gbmV3IFJlbmRlclRoZW1l
TWFjKCk7CisgICAgcmV0dXJuIHJ0OyAvLyBrZWVwIHRoZSByZWZlcmVuY2Ugb2Ygb25lLgogfQog
CiBSZW5kZXJUaGVtZU1hYzo6UmVuZGVyVGhlbWVNYWMoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVTYWZhcmkuY3BwCmluZGV4IDNhZmZkMWYuLmRmYWE1NTcgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAKQEAgLTY1LDEzICs2NSwyMSBAQCBlbnVtIHsKICAgICBs
ZWZ0UGFkZGluZwogfTsKIAotUmVuZGVyVGhlbWUqIHRoZW1lKCkKK1Bhc3NSZWZQdHI8UmVuZGVy
VGhlbWU+IFJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2UoUGFnZSogcGFnZSkKIHsKLSAgICBzdGF0
aWMgUmVuZGVyVGhlbWVTYWZhcmkgc2FmYXJpVGhlbWU7Ci0gICAgc3RhdGljIFJlbmRlclRoZW1l
V2luIHdpbmRvd3NUaGVtZTsKKyAgICBzdGF0aWMgUmVmUHRyPFJlbmRlclRoZW1lPiBzYWZhcmlU
aGVtZSA9IG5ldyBSZW5kZXJUaGVtZVNhZmFyaSgpOworICAgIHN0YXRpYyBSZWZQdHI8UmVuZGVy
VGhlbWU+IHdpbmRvd3NUaGVtZSA9IG5ldyBSZW5kZXJUaGVtZVdpbigpOwogICAgIGlmIChTZXR0
aW5nczo6c2hvdWxkUGFpbnROYXRpdmVDb250cm9scygpKQotICAgICAgICByZXR1cm4gJndpbmRv
d3NUaGVtZTsKLSAgICByZXR1cm4gJnNhZmFyaVRoZW1lOworICAgICAgICByZXR1cm4gd2luZG93
c1RoZW1lOyAvLyBrZWVwIHRoZSByZWZlcmVuY2Ugb2Ygb25lLgorICAgIHJldHVybiBzYWZhcmlU
aGVtZTsgLy8ga2VlcCB0aGUgcmVmZXJlbmNlIG9mIG9uZS4KK30KKworCitSZW5kZXJUaGVtZSog
UmVuZGVyVGhlbWU6OmNyZWF0ZShQYWdlKikKK3sKKyAgICBpZiAoU2V0dGluZ3M6OnNob3VsZFBh
aW50TmF0aXZlQ29udHJvbHMoKSkKKyAgICAgICAgcmV0dXJuIG5ldyBSZW5kZXJUaGVtZVdpbigp
OworICAgIHJldHVybiBuZXcgUmVuZGVyVGhlbWVTYWZhcmkoKTsKIH0KIAogI2lmICFkZWZpbmVk
KE5ERUJVRykgJiYgZGVmaW5lZChVU0VfREVCVUdfU0FGQVJJX1RIRU1FKQotLSAKMS42LjAuNAoK
</data>
<flag name="review"
          id="15908"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31352</attachid>
            <date>2009-06-16 09:37:00 -0700</date>
            <delta_ts>2009-06-16 11:31:14 -0700</delta_ts>
            <desc>Follow up patch for Qt</desc>
            <filename>qt-theme.patch</filename>
            <type>text/plain</type>
            <size>14898</size>
            <attacher name="Kenneth Rohde Christiansen">kenneth</attacher>
            
              <data encoding="base64">RnJvbSA0MmQ3NTI5NTQ2YjFiMGRlN2I1ZjAxN2ZiZDUzMDNhZDY5MGJiMzI1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiA8a2VubmV0aEBz
cGlzbmlnZWwub3NtdGMuaW5kdC5vcmcuYnI+CkRhdGU6IE1vbiwgMTUgSnVuIDIwMDkgMTQ6NTM6
MzQgLTAzMDAKU3ViamVjdDogW1BBVENIXSAyMDA5LTA2LTE1ICBLZW5uZXRoIFJvaGRlIENocmlz
dGlhbnNlbiAgPGtlbm5ldGguY2hyaXN0aWFuc2VuQG9wZW5ib3NzYS5vcmc+CgogICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBNYWtlIHRoZSBRdCBpbXBsZW1lbnRh
dGlvbiBvZiBSZW5kZXJUaGVtZSBjcmVhdGUgYSB0aGVtZSBwZXIgcGFnZSwKICAgICAgICBhbmQg
dXNlIHRoZSBRU3R5bGUgYXNzb2NpYXRlZCB3aXRoIHRoZSB2aWV3IG9mIGVhY2ggcGFnZSwgaW4g
b3JkZXIKICAgICAgICB0byBtYWtlIHRoZSBRV2lkZ2V0IHNldFN0eWxlKCkgbWV0aG9kIHdvcmsg
YXMgYWR2ZXJ0aXNlZC4KLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
IHwgICAyNSArKysrKysrLQogV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNwcCB8
ICAxMTkgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCiBXZWJDb3JlL3BsYXRmb3Jt
L3F0L1JlbmRlclRoZW1lUXQuaCAgIHwgICAxMCArKy0KIDMgZmlsZXMgY2hhbmdlZCwgOTIgaW5z
ZXJ0aW9ucygrKSwgNjIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyMjMzZjNiLi43YTM4ZmI2IDEwMDY0NAotLS0g
YS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw3ICsxLDMw
IEBACi0yMDA5LTA2LTEyICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGguY2hy
aXN0aWFuc2VuQG9wZW5ib3NzYS5vcmc+CisyMDA5LTA2LTE1ICBLZW5uZXRoIFJvaGRlIENocmlz
dGlhbnNlbiAgPGtlbm5ldGguY2hyaXN0aWFuc2VuQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAKKyAgICAgICAgTWFrZSB0aGUgUXQgaW1wbGVt
ZW50YXRpb24gb2YgUmVuZGVyVGhlbWUgY3JlYXRlIGEgdGhlbWUgcGVyIHBhZ2UsCisgICAgICAg
IGFuZCB1c2UgdGhlIFFTdHlsZSBhc3NvY2lhdGVkIHdpdGggdGhlIHZpZXcgb2YgZWFjaCBwYWdl
LCBpbiBvcmRlcgorICAgICAgICB0byBtYWtlIHRoZSBRV2lkZ2V0IHNldFN0eWxlKCkgbWV0aG9k
IHdvcmsgYXMgYWR2ZXJ0aXNlZC4KKworICAgICAgICAqIHBsYXRmb3JtL3F0L1JlbmRlclRoZW1l
UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVF0OjpSZW5kZXJUaGVtZVF0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lUXQ6OnFTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpmaW5k
RnJhbWVMaW5lV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6aW5mbGF0ZUJ1dHRvblJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVRdDo6YWRqdXN0UmVwYWludFJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVRdDo6aXNDb250cm9sU3R5bGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lUXQ6OmNvbXB1dGVTaXplQmFzZWRPblN0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUXQ6OnNldEJ1dHRvblBhZGRpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVRdDo6cGFpbnRCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVRdDo6cGFpbnRUZXh0RmllbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVRdDo6c2V0UG9wdXBQYWRkaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9SZW5kZXJU
aGVtZVF0Lmg6CisKKzIwMDktMDYtMTIgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2Vu
bmV0aC5jaHJpc3RpYW5zZW5Ab3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBE
YXZlIEh5YXR0LgorCiAgICAgICAgIENyZWF0ZSBhIGRpZmZlcmVudCBSZW5kZXJUaGVtZSBwZXIg
cGFnZSwgc28gdGhhdCBSZW5kZXJUaGVtZSBoYXMKICAgICAgICAgYWNjZXNzIHRvIHBhZ2Ugc3Bl
Y2lmaWMgdGhlbWluZy4gVGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBRdCBwb3J0LCBhcyBRdAogICAg
ICAgICBzdXBwb3J0cyBzZXR0aW5nIHRoZSB0aGVtZSAoc3R5bGUpIHBlciB3aWRnZXQuCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuY3BwIGIvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNwcAppbmRleCBjODAwMWY5Li4xNWIzODRkIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuY3BwCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5jcHAKQEAgLTEwOSwxNCArMTA5LDE2IEBAIFN0
eWxlUGFpbnRlcjo6flN0eWxlUGFpbnRlcigpCiBQYXNzUmVmUHRyPFJlbmRlclRoZW1lPiBSZW5k
ZXJUaGVtZTo6dGhlbWVGb3JQYWdlKFBhZ2UqIHBhZ2UpCiB7CiAgICAgaWYgKHBhZ2UpCi0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVuZGVyVGhlbWVRdCgpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBSZW5kZXJUaGVtZVF0KHBhZ2UpKTsKIAotICAgIHN0YXRpYyBSZWZQdHI8
UmVuZGVyVGhlbWU+IGZhbGxiYWNrID0gbmV3IFJlbmRlclRoZW1lUXQoKTsKKyAgICBzdGF0aWMg
UmVmUHRyPFJlbmRlclRoZW1lPiBmYWxsYmFjayA9IG5ldyBSZW5kZXJUaGVtZVF0KDApOwogICAg
IHJldHVybiBmYWxsYmFjazsgLy8ga2VlcCB0aGUgcmVmZXJlbmNlIG9mIG9uZS4KIH0KIAotUmVu
ZGVyVGhlbWVRdDo6UmVuZGVyVGhlbWVRdCgpCitSZW5kZXJUaGVtZVF0OjpSZW5kZXJUaGVtZVF0
KFBhZ2UqIHBhZ2UpCiAgICAgOiBSZW5kZXJUaGVtZSgpCisgICAgLCBtX3BhZ2UocGFnZSkKKyAg
ICAsIG1fZmFsbGJhY2tTdHlsZSgwKQogewogICAgIFFQdXNoQnV0dG9uIGJ1dHRvbjsKICAgICBi
dXR0b24uc2V0QXR0cmlidXRlKFF0OjpXQV9NYWNTbWFsbFNpemUpOwpAQCAtMTI2LDE0ICsxMjgs
NiBAQCBSZW5kZXJUaGVtZVF0OjpSZW5kZXJUaGVtZVF0KCkKICNpZmRlZiBRX1dTX01BQwogICAg
IG1fYnV0dG9uRm9udFBpeGVsU2l6ZSA9IGZvbnRJbmZvLnBpeGVsU2l6ZSgpOwogI2VuZGlmCi0K
LSAgICBtX2ZhbGxiYWNrU3R5bGUgPSAwOwotCi0gICAgLy8gdGhpcyB3aWxsIG5lZWQgdG8gYmUg
cmVnZW5lcmF0ZWQgd2hlbiB0aGUgc3R5bGUgY2hhbmdlcwotICAgIFFMaW5lRWRpdCBsaW5lRWRp
dDsKLSAgICBRU3R5bGVPcHRpb25GcmFtZVYyIG9wdDsKLSAgICBtX2ZyYW1lTGluZVdpZHRoID0g
UUFwcGxpY2F0aW9uOjpzdHlsZSgpLT5waXhlbE1ldHJpYyhRU3R5bGU6OlBNX0RlZmF1bHRGcmFt
ZVdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZvcHQsICZsaW5lRWRpdCk7CiB9CiAKIFJlbmRlclRoZW1lUXQ6On5SZW5kZXJU
aGVtZVF0KCkKQEAgLTE1Myw2ICsxNDcsMjEgQEAgUVN0eWxlKiBSZW5kZXJUaGVtZVF0OjpmYWxs
YmFja1N0eWxlKCkKICAgICByZXR1cm4gbV9mYWxsYmFja1N0eWxlOwogfQogCitRU3R5bGUqIFJl
bmRlclRoZW1lUXQ6OnFTdHlsZSgpIGNvbnN0Cit7CisgICAgaWYgKG1fcGFnZSkgeworICAgICAg
ICBDaHJvbWVDbGllbnRRdCogY2xpZW50ID0gc3RhdGljX2Nhc3Q8Q2hyb21lQ2xpZW50UXQqPiht
X3BhZ2UtPmNocm9tZSgpLT5jbGllbnQoKSk7CisKKyAgICAgICAgaWYgKCFjbGllbnQtPm1fd2Vi
UGFnZSkKKyAgICAgICAgICAgIHJldHVybiBRQXBwbGljYXRpb246OnN0eWxlKCk7CisKKyAgICAg
ICAgaWYgKFFXaWRnZXQqIHZpZXcgPSBjbGllbnQtPm1fd2ViUGFnZS0+dmlldygpKQorICAgICAg
ICAgICAgcmV0dXJuIHZpZXctPnN0eWxlKCk7CisgICAgfQorCisgICAgcmV0dXJuIFFBcHBsaWNh
dGlvbjo6c3R5bGUoKTsKK30KKwogYm9vbCBSZW5kZXJUaGVtZVF0OjpzdXBwb3J0c0hvdmVyKGNv
bnN0IFJlbmRlclN0eWxlKikgY29uc3QKIHsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE5MiwxNCAr
MjAxLDIwIEBAIGJvb2wgUmVuZGVyVGhlbWVRdDo6c3VwcG9ydHNDb250cm9sVGludHMoKSBjb25z
dAogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgUVJlY3QgaW5mbGF0ZUJ1dHRvblJlY3Qo
Y29uc3QgUVJlY3QmIG9yaWdpbmFsUmVjdCkKK3N0YXRpYyBpbnQgZmluZEZyYW1lTGluZVdpZHRo
KFFTdHlsZSogc3R5bGUpCit7CisgICAgUUxpbmVFZGl0IGxpbmVFZGl0OworICAgIFFTdHlsZU9w
dGlvbkZyYW1lVjIgb3B0OworICAgIHJldHVybiBzdHlsZS0+cGl4ZWxNZXRyaWMoUVN0eWxlOjpQ
TV9EZWZhdWx0RnJhbWVXaWR0aCwgJm9wdCwgJmxpbmVFZGl0KTsKK30KKworc3RhdGljIFFSZWN0
IGluZmxhdGVCdXR0b25SZWN0KGNvbnN0IFFSZWN0JiBvcmlnaW5hbFJlY3QsIFFTdHlsZSogc3R5
bGUpCiB7CiAgICAgUVN0eWxlT3B0aW9uQnV0dG9uIG9wdGlvbjsKICAgICBvcHRpb24uc3RhdGUg
fD0gUVN0eWxlOjpTdGF0ZV9TbWFsbDsKICAgICBvcHRpb24ucmVjdCA9IG9yaWdpbmFsUmVjdDsK
IAotICAgIFFSZWN0IGxheW91dFJlY3QgPSBRQXBwbGljYXRpb246OnN0eWxlKCktPnN1YkVsZW1l
bnRSZWN0KFFTdHlsZTo6U0VfUHVzaEJ1dHRvbkxheW91dEl0ZW0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3B0aW9u
LCAwKTsKKyAgICBRUmVjdCBsYXlvdXRSZWN0ID0gc3R5bGUtPnN1YkVsZW1lbnRSZWN0KFFTdHls
ZTo6U0VfUHVzaEJ1dHRvbkxheW91dEl0ZW0sICZvcHRpb24sIDApOwogICAgIGlmICghbGF5b3V0
UmVjdC5pc051bGwoKSkgewogICAgICAgICBpbnQgcGFkZGluZ0xlZnQgPSBsYXlvdXRSZWN0Lmxl
ZnQoKSAtIG9yaWdpbmFsUmVjdC5sZWZ0KCk7CiAgICAgICAgIGludCBwYWRkaW5nUmlnaHQgPSBv
cmlnaW5hbFJlY3QucmlnaHQoKSAtIGxheW91dFJlY3QucmlnaHQoKTsKQEAgLTIxMiwyNCArMjI3
LDIxIEBAIHN0YXRpYyBRUmVjdCBpbmZsYXRlQnV0dG9uUmVjdChjb25zdCBRUmVjdCYgb3JpZ2lu
YWxSZWN0KQogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJUaGVtZVF0OjphZGp1c3RSZXBhaW50UmVj
dChjb25zdCBSZW5kZXJPYmplY3QqIG8sIEludFJlY3QmIHIpCit2b2lkIFJlbmRlclRoZW1lUXQ6
OmFkanVzdFJlcGFpbnRSZWN0KGNvbnN0IFJlbmRlck9iamVjdCogbywgSW50UmVjdCYgcmVjdCkK
IHsKICAgICBzd2l0Y2ggKG8tPnN0eWxlKCktPmFwcGVhcmFuY2UoKSkgewotICAgIGNhc2UgQ2hl
Y2tib3hQYXJ0OiB7CisgICAgY2FzZSBDaGVja2JveFBhcnQ6CiAgICAgICAgIGJyZWFrOwotICAg
IH0KLSAgICBjYXNlIFJhZGlvUGFydDogeworICAgIGNhc2UgUmFkaW9QYXJ0OgogICAgICAgICBi
cmVhazsKLSAgICB9CiAgICAgY2FzZSBQdXNoQnV0dG9uUGFydDoKICAgICBjYXNlIEJ1dHRvblBh
cnQ6IHsKLSAgICAgICAgUVJlY3QgaW5mbGF0ZWRSZWN0ID0gaW5mbGF0ZUJ1dHRvblJlY3Qocik7
Ci0gICAgICAgIHIgPSBJbnRSZWN0KGluZmxhdGVkUmVjdC54KCksIGluZmxhdGVkUmVjdC55KCks
IGluZmxhdGVkUmVjdC53aWR0aCgpLCBpbmZsYXRlZFJlY3QuaGVpZ2h0KCkpOworICAgICAgICBR
UmVjdCBpbmZsYXRlZFJlY3QgPSBpbmZsYXRlQnV0dG9uUmVjdChyZWN0LCBxU3R5bGUoKSk7Cisg
ICAgICAgIHJlY3QgPSBJbnRSZWN0KGluZmxhdGVkUmVjdC54KCksIGluZmxhdGVkUmVjdC55KCks
IGluZmxhdGVkUmVjdC53aWR0aCgpLCBpbmZsYXRlZFJlY3QuaGVpZ2h0KCkpOwogICAgICAgICBi
cmVhazsKICAgICB9Ci0gICAgY2FzZSBNZW51bGlzdFBhcnQ6IHsKKyAgICBjYXNlIE1lbnVsaXN0
UGFydDoKICAgICAgICAgYnJlYWs7Ci0gICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFr
OwogICAgIH0KQEAgLTIzOSw4ICsyNTEsOCBAQCBib29sIFJlbmRlclRoZW1lUXQ6OmlzQ29udHJv
bFN0eWxlZChjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IEJvcmRlckRhdGEmCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmlsbExheWVyJiBiYWNrZ3Jv
dW5kLCBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yKSBjb25zdAogewogICAgIGlmIChzdHls
ZS0+YXBwZWFyYW5jZSgpID09IFRleHRGaWVsZFBhcnQKLSAgICAgICAgICAgIHx8IHN0eWxlLT5h
cHBlYXJhbmNlKCkgPT0gVGV4dEFyZWFQYXJ0Ci0gICAgICAgICAgICB8fCBzdHlsZS0+YXBwZWFy
YW5jZSgpID09IExpc3Rib3hQYXJ0KSB7CisgICAgICAgIHx8IHN0eWxlLT5hcHBlYXJhbmNlKCkg
PT0gVGV4dEFyZWFQYXJ0CisgICAgICAgIHx8IHN0eWxlLT5hcHBlYXJhbmNlKCkgPT0gTGlzdGJv
eFBhcnQpIHsKICAgICAgICAgcmV0dXJuIHN0eWxlLT5ib3JkZXIoKSAhPSBib3JkZXI7CiAgICAg
fQogCkBAIC0yOTAsMjIgKzMwMiwyMCBAQCB2b2lkIFJlbmRlclRoZW1lUXQ6OmNvbXB1dGVTaXpl
QmFzZWRPblN0eWxlKFJlbmRlclN0eWxlKiByZW5kZXJTdHlsZSkgY29uc3QKIAogICAgIFFTaXpl
IHNpemUoMCwgMCk7CiAgICAgY29uc3QgUUZvbnRNZXRyaWNzIGZtKHJlbmRlclN0eWxlLT5mb250
KCkuZm9udCgpKTsKLSAgICBRU3R5bGUqIGFwcGxpY2F0aW9uU3R5bGUgPSBRQXBwbGljYXRpb246
OnN0eWxlKCk7CisgICAgUVN0eWxlKiBzdHlsZSA9IHFTdHlsZSgpOwogCiAgICAgc3dpdGNoIChy
ZW5kZXJTdHlsZS0+YXBwZWFyYW5jZSgpKSB7CiAgICAgY2FzZSBDaGVja2JveFBhcnQ6IHsKICAg
ICAgICAgUVN0eWxlT3B0aW9uIHN0eWxlT3B0aW9uOwogICAgICAgICBzdHlsZU9wdGlvbi5zdGF0
ZSB8PSBRU3R5bGU6OlN0YXRlX1NtYWxsOwotICAgICAgICBpbnQgY2hlY2tCb3hXaWR0aCA9IGFw
cGxpY2F0aW9uU3R5bGUtPnBpeGVsTWV0cmljKFFTdHlsZTo6UE1fSW5kaWNhdG9yV2lkdGgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JnN0eWxlT3B0aW9uKTsKKyAgICAgICAgaW50IGNoZWNrQm94V2lkdGggPSBzdHlsZS0+cGl4ZWxN
ZXRyaWMoUVN0eWxlOjpQTV9JbmRpY2F0b3JXaWR0aCwgJnN0eWxlT3B0aW9uKTsKICAgICAgICAg
c2l6ZSA9IFFTaXplKGNoZWNrQm94V2lkdGgsIGNoZWNrQm94V2lkdGgpOwogICAgICAgICBicmVh
azsKICAgICB9CiAgICAgY2FzZSBSYWRpb1BhcnQ6IHsKICAgICAgICAgUVN0eWxlT3B0aW9uIHN0
eWxlT3B0aW9uOwogICAgICAgICBzdHlsZU9wdGlvbi5zdGF0ZSB8PSBRU3R5bGU6OlN0YXRlX1Nt
YWxsOwotICAgICAgICBpbnQgcmFkaW9XaWR0aCA9IGFwcGxpY2F0aW9uU3R5bGUtPnBpeGVsTWV0
cmljKFFTdHlsZTo6UE1fRXhjbHVzaXZlSW5kaWNhdG9yV2lkdGgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0eWxlT3B0aW9uKTsKKyAg
ICAgICAgaW50IHJhZGlvV2lkdGggPSBzdHlsZS0+cGl4ZWxNZXRyaWMoUVN0eWxlOjpQTV9FeGNs
dXNpdmVJbmRpY2F0b3JXaWR0aCwgJnN0eWxlT3B0aW9uKTsKICAgICAgICAgc2l6ZSA9IFFTaXpl
KHJhZGlvV2lkdGgsIHJhZGlvV2lkdGgpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0zMTQs
MTYgKzMyNCwxNCBAQCB2b2lkIFJlbmRlclRoZW1lUXQ6OmNvbXB1dGVTaXplQmFzZWRPblN0eWxl
KFJlbmRlclN0eWxlKiByZW5kZXJTdHlsZSkgY29uc3QKICAgICAgICAgUVN0eWxlT3B0aW9uQnV0
dG9uIHN0eWxlT3B0aW9uOwogICAgICAgICBzdHlsZU9wdGlvbi5zdGF0ZSB8PSBRU3R5bGU6OlN0
YXRlX1NtYWxsOwogICAgICAgICBRU2l6ZSBjb250ZW50U2l6ZSA9IGZtLnNpemUoUXQ6OlRleHRT
aG93TW5lbW9uaWMsIFFTdHJpbmc6OmZyb21MYXRpbjEoIlgiKSk7Ci0gICAgICAgIFFTaXplIHB1
c2hCdXR0b25TaXplID0gYXBwbGljYXRpb25TdHlsZS0+c2l6ZUZyb21Db250ZW50cyhRU3R5bGU6
OkNUX1B1c2hCdXR0b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmc3R5bGVPcHRpb24sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50
U2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDApOworICAgICAgICBRU2l6ZSBwdXNoQnV0dG9uU2l6ZSA9IHN0eWxl
LT5zaXplRnJvbUNvbnRlbnRzKFFTdHlsZTo6Q1RfUHVzaEJ1dHRvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3R5bGVPcHRpb24sIGNv
bnRlbnRTaXplLCAwKTsKICAgICAgICAgc3R5bGVPcHRpb24ucmVjdCA9IFFSZWN0KDAsIDAsIHB1
c2hCdXR0b25TaXplLndpZHRoKCksIHB1c2hCdXR0b25TaXplLmhlaWdodCgpKTsKLSAgICAgICAg
UVJlY3QgbGF5b3V0UmVjdCA9IGFwcGxpY2F0aW9uU3R5bGUtPnN1YkVsZW1lbnRSZWN0KFFTdHls
ZTo6U0VfUHVzaEJ1dHRvbkxheW91dEl0ZW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3R5bGVPcHRpb24sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAwKTsKLSAgICAgICAgLy8gSWYgdGhlIHN0eWxlIHN1cHBvcnRzIGxheW91dCByZWN0cyB3
ZSB1c2UgdGhhdCwgYW5kCi0gICAgICAgIC8vIGNvbXBlbnNhdGUgYWNjb3JkaW5nbHkgaW4gcGFp
bnRCdXR0b24oKSBiZWxvdy4KKyAgICAgICAgUVJlY3QgbGF5b3V0UmVjdCA9IHN0eWxlLT5zdWJF
bGVtZW50UmVjdChRU3R5bGU6OlNFX1B1c2hCdXR0b25MYXlvdXRJdGVtLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdHlsZU9wdGlvbiwgMCk7CisK
KyAgICAgICAgLy8gSWYgdGhlIHN0eWxlIHN1cHBvcnRzIGxheW91dCByZWN0cyB3ZSB1c2UgdGhh
dCwgYW5kICBjb21wZW5zYXRlIGFjY29yZGluZ2x5CisgICAgICAgIC8vIGluIHBhaW50QnV0dG9u
KCkgYmVsb3cuCiAgICAgICAgIGlmICghbGF5b3V0UmVjdC5pc051bGwoKSkgewogICAgICAgICAg
ICAgc2l6ZS5zZXRIZWlnaHQobGF5b3V0UmVjdC5oZWlnaHQoKSk7CiAgICAgICAgIH0gZWxzZSB7
CkBAIC0zMzYsMTAgKzM0NCw4IEBAIHZvaWQgUmVuZGVyVGhlbWVRdDo6Y29tcHV0ZVNpemVCYXNl
ZE9uU3R5bGUoUmVuZGVyU3R5bGUqIHJlbmRlclN0eWxlKSBjb25zdAogICAgICAgICBRU3R5bGVP
cHRpb25Db21ib0JveCBzdHlsZU9wdGlvbjsKICAgICAgICAgc3R5bGVPcHRpb24uc3RhdGUgfD0g
UVN0eWxlOjpTdGF0ZV9TbWFsbDsKICAgICAgICAgaW50IGNvbnRlbnRIZWlnaHQgPSBxTWF4KGZt
LmxpbmVTcGFjaW5nKCksIDE0KSArIDI7Ci0gICAgICAgIFFTaXplIG1lbnVMaXN0U2l6ZSA9IGFw
cGxpY2F0aW9uU3R5bGUtPnNpemVGcm9tQ29udGVudHMoUVN0eWxlOjpDVF9Db21ib0JveCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0
eWxlT3B0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBRU2l6ZSgwLCBjb250ZW50SGVpZ2h0KSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CisgICAgICAgIFFTaXplIG1l
bnVMaXN0U2l6ZSA9IHN0eWxlLT5zaXplRnJvbUNvbnRlbnRzKFFTdHlsZTo6Q1RfQ29tYm9Cb3gs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZz
dHlsZU9wdGlvbiwgUVNpemUoMCwgY29udGVudEhlaWdodCksIDApOwogICAgICAgICBzaXplLnNl
dEhlaWdodChtZW51TGlzdFNpemUuaGVpZ2h0KCkpOwogICAgICAgICBicmVhazsKICAgICB9CkBA
IC0zNDksMTEgKzM1NSwxMSBAQCB2b2lkIFJlbmRlclRoZW1lUXQ6OmNvbXB1dGVTaXplQmFzZWRP
blN0eWxlKFJlbmRlclN0eWxlKiByZW5kZXJTdHlsZSkgY29uc3QKICAgICAgICAgaW50IGggPSBx
TWF4KGZtLmxpbmVTcGFjaW5nKCksIDE0KSArIDIqdmVydGljYWxNYXJnaW47CiAgICAgICAgIGlu
dCB3ID0gZm0ud2lkdGgoUUxhdGluMUNoYXIoJ3gnKSkgKiAxNyArIDIqaG9yaXpvbnRhbE1hcmdp
bjsKICAgICAgICAgUVN0eWxlT3B0aW9uRnJhbWVWMiBvcHQ7Ci0gICAgICAgIG9wdC5saW5lV2lk
dGggPSBtX2ZyYW1lTGluZVdpZHRoOwotICAgICAgICBRU2l6ZSBzeiA9IGFwcGxpY2F0aW9uU3R5
bGUtPnNpemVGcm9tQ29udGVudHMoUVN0eWxlOjpDVF9MaW5lRWRpdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvcHQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRU2l6ZSh3LCBoKS5l
eHBhbmRlZFRvKFFBcHBsaWNhdGlvbjo6Z2xvYmFsU3RydXQoKSksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKKyAgICAgICAgb3B0Lmxp
bmVXaWR0aCA9IGZpbmRGcmFtZUxpbmVXaWR0aChzdHlsZSk7CisgICAgICAgIFFTaXplIHN6ID0g
c3R5bGUtPnNpemVGcm9tQ29udGVudHMoUVN0eWxlOjpDVF9MaW5lRWRpdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3B0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFFTaXplKHcsIGgpLmV4cGFuZGVkVG8oUUFwcGxpY2F0
aW9uOjpnbG9iYWxTdHJ1dCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwKTsKICAgICAgICAgc2l6ZS5zZXRIZWlnaHQoc3ouaGVpZ2h0KCkpOwogCiAgICAg
ICAgIHJlbmRlclN0eWxlLT5zZXRQYWRkaW5nTGVmdChMZW5ndGgob3B0LmxpbmVXaWR0aCwgRml4
ZWQpKTsKQEAgLTQ0MSwxOSArNDQ3LDE4IEBAIHZvaWQgUmVuZGVyVGhlbWVRdDo6c2V0QnV0dG9u
UGFkZGluZyhSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0CiAgICAgc3R5bGVPcHRpb24ucmVjdCA9
IG9yaWdpbmFsUmVjdDsKIAogICAgIC8vIERlZmF1bHQgcGFkZGluZyBpcyBiYXNlZCBvbiB0aGUg
YnV0dG9uIG1hcmdpbiBwaXhlbCBtZXRyaWMKLSAgICBpbnQgYnV0dG9uTWFyZ2luID0gUUFwcGxp
Y2F0aW9uOjpzdHlsZSgpLT5waXhlbE1ldHJpYyhRU3R5bGU6OlBNX0J1dHRvbk1hcmdpbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
c3R5bGVPcHRpb24sIDApOworICAgIGludCBidXR0b25NYXJnaW4gPSBxU3R5bGUoKS0+cGl4ZWxN
ZXRyaWMoUVN0eWxlOjpQTV9CdXR0b25NYXJnaW4sICZzdHlsZU9wdGlvbiwgMCk7CiAgICAgaW50
IHBhZGRpbmdMZWZ0ID0gYnV0dG9uTWFyZ2luOwogICAgIGludCBwYWRkaW5nUmlnaHQgPSBidXR0
b25NYXJnaW47CiAgICAgaW50IHBhZGRpbmdUb3AgPSAxOwogICAgIGludCBwYWRkaW5nQm90dG9t
ID0gMDsKIAogICAgIC8vIFRoZW4gY2hlY2sgaWYgdGhlIHN0eWxlIHVzZXMgbGF5b3V0IG1hcmdp
bnMKLSAgICBRUmVjdCBsYXlvdXRSZWN0ID0gUUFwcGxpY2F0aW9uOjpzdHlsZSgpLT5zdWJFbGVt
ZW50UmVjdChRU3R5bGU6OlNFX1B1c2hCdXR0b25MYXlvdXRJdGVtLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0eWxl
T3B0aW9uLCAwKTsKKyAgICBRUmVjdCBsYXlvdXRSZWN0ID0gcVN0eWxlKCktPnN1YkVsZW1lbnRS
ZWN0KFFTdHlsZTo6U0VfUHVzaEJ1dHRvbkxheW91dEl0ZW0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3R5bGVPcHRpb24sIDApOwogICAgIGlmICgh
bGF5b3V0UmVjdC5pc051bGwoKSkgewotICAgICAgICBRUmVjdCBjb250ZW50c1JlY3QgPSBRQXBw
bGljYXRpb246OnN0eWxlKCktPnN1YkVsZW1lbnRSZWN0KFFTdHlsZTo6U0VfUHVzaEJ1dHRvbkNv
bnRlbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJnN0eWxlT3B0aW9uLCAwKTsKKyAgICAgICAgUVJlY3QgY29udGVu
dHNSZWN0ID0gcVN0eWxlKCktPnN1YkVsZW1lbnRSZWN0KFFTdHlsZTo6U0VfUHVzaEJ1dHRvbkNv
bnRlbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJnN0eWxlT3B0aW9uLCAwKTsKICAgICAgICAgcGFkZGluZ0xlZnQgPSBjb250ZW50c1Jl
Y3QubGVmdCgpIC0gbGF5b3V0UmVjdC5sZWZ0KCk7CiAgICAgICAgIHBhZGRpbmdSaWdodCA9IGxh
eW91dFJlY3QucmlnaHQoKSAtIGNvbnRlbnRzUmVjdC5yaWdodCgpOwogICAgICAgICBwYWRkaW5n
VG9wID0gY29udGVudHNSZWN0LnRvcCgpIC0gbGF5b3V0UmVjdC50b3AoKTsKQEAgLTQ4Myw3ICs0
ODgsNyBAQCBib29sIFJlbmRlclRoZW1lUXQ6OnBhaW50QnV0dG9uKFJlbmRlck9iamVjdCogbywg
Y29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mCiAKICAgICBDb250cm9sUGFydCBhcHBlYXJh
bmNlID0gYXBwbHlUaGVtZShvcHRpb24sIG8pOwogICAgIGlmKGFwcGVhcmFuY2UgPT0gUHVzaEJ1
dHRvblBhcnQgfHwgYXBwZWFyYW5jZSA9PSBCdXR0b25QYXJ0KSB7Ci0gICAgICAgIG9wdGlvbi5y
ZWN0ID0gaW5mbGF0ZUJ1dHRvblJlY3Qob3B0aW9uLnJlY3QpOworICAgICAgICBvcHRpb24ucmVj
dCA9IGluZmxhdGVCdXR0b25SZWN0KG9wdGlvbi5yZWN0LCBxU3R5bGUoKSk7CiAgICAgICAgIHAu
ZHJhd0NvbnRyb2woUVN0eWxlOjpDRV9QdXNoQnV0dG9uLCBvcHRpb24pOwogICAgIH0gZWxzZSBp
ZihhcHBlYXJhbmNlID09IFJhZGlvUGFydCkgewogICAgICAgIHAuZHJhd0NvbnRyb2woUVN0eWxl
OjpDRV9SYWRpb0J1dHRvbiwgb3B0aW9uKTsKQEAgLTUxNCw3ICs1MTksNyBAQCBib29sIFJlbmRl
clRoZW1lUXQ6OnBhaW50VGV4dEZpZWxkKFJlbmRlck9iamVjdCogbywgY29uc3QgUmVuZGVyT2Jq
ZWN0OjpQYWludEluZgogICAgICAgICBwYW5lbC5pbml0RnJvbShwLndpZGdldCk7CiAKICAgICBw
YW5lbC5yZWN0ID0gcjsKLSAgICBwYW5lbC5saW5lV2lkdGggPSBtX2ZyYW1lTGluZVdpZHRoOwor
ICAgIHBhbmVsLmxpbmVXaWR0aCA9IGZpbmRGcmFtZUxpbmVXaWR0aChxU3R5bGUoKSk7CiAgICAg
cGFuZWwuc3RhdGUgfD0gUVN0eWxlOjpTdGF0ZV9TdW5rZW47CiAgICAgcGFuZWwuZmVhdHVyZXMg
PSBRU3R5bGVPcHRpb25GcmFtZVYyOjpOb25lOwogCkBAIC01NjYsNyArNTcxLDcgQEAgdm9pZCBS
ZW5kZXJUaGVtZVF0OjpzZXRQb3B1cFBhZGRpbmcoUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdAog
ICAgIHN0eWxlLT5zZXRQYWRkaW5nTGVmdChMZW5ndGgocGFkZGluZywgRml4ZWQpKTsKIAogICAg
IFFTdHlsZU9wdGlvbkNvbWJvQm94IG9wdDsKLSAgICBpbnQgdyA9IFFBcHBsaWNhdGlvbjo6c3R5
bGUoKS0+cGl4ZWxNZXRyaWMoUVN0eWxlOjpQTV9CdXR0b25JY29uU2l6ZSwgJm9wdCwgMCk7Cisg
ICAgaW50IHcgPSBxU3R5bGUoKS0+cGl4ZWxNZXRyaWMoUVN0eWxlOjpQTV9CdXR0b25JY29uU2l6
ZSwgJm9wdCwgMCk7CiAgICAgc3R5bGUtPnNldFBhZGRpbmdSaWdodChMZW5ndGgocGFkZGluZyAr
IHcsIEZpeGVkKSk7CiAKICAgICBzdHlsZS0+c2V0UGFkZGluZ1RvcChMZW5ndGgoMiwgRml4ZWQp
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5oIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmgKaW5kZXggNWM3OGE3Mi4uNGFiOTAyZCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmgKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3Mg
SFRNTE1lZGlhRWxlbWVudDsKIGNsYXNzIFJlbmRlclRoZW1lUXQgOiBwdWJsaWMgUmVuZGVyVGhl
bWUKIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJUaGVtZVF0KCk7CisgICAgUmVuZGVyVGhlbWVRdChQ
YWdlKiBwYWdlKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJUaGVtZVF0KCk7CiAKICAgICB2aXJ0dWFs
IGJvb2wgc3VwcG9ydHNIb3Zlcihjb25zdCBSZW5kZXJTdHlsZSopIGNvbnN0OwpAQCAtMTM4LDE1
ICsxMzgsMTcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEJ1dHRvblBhZGRpbmcoUmVuZGVyU3R5
bGUqKSBjb25zdDsKICAgICB2b2lkIHNldFBvcHVwUGFkZGluZyhSZW5kZXJTdHlsZSopIGNvbnN0
OwogCisgICAgUVN0eWxlKiBxU3R5bGUoKSBjb25zdDsKKyAgICBRU3R5bGUqIGZhbGxiYWNrU3R5
bGUoKTsKKworICAgIFBhZ2UqIG1fcGFnZTsKKwogI2lmZGVmIFFfV1NfTUFDCiAgICAgaW50IG1f
YnV0dG9uRm9udFBpeGVsU2l6ZTsKICNlbmRpZgogICAgIFFTdHJpbmcgbV9idXR0b25Gb250RmFt
aWx5OwogCiAgICAgUVN0eWxlKiBtX2ZhbGxiYWNrU3R5bGU7Ci0gICAgUVN0eWxlKiBmYWxsYmFj
a1N0eWxlKCk7Ci0KLSAgICBpbnQgbV9mcmFtZUxpbmVXaWR0aDsKIH07CiAKIGNsYXNzIFN0eWxl
UGFpbnRlcgotLSAKMS42LjAuNAoK
</data>
<flag name="review"
          id="16024"
          type_id="1"
          status="-"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31357</attachid>
            <date>2009-06-16 11:30:29 -0700</date>
            <delta_ts>2009-06-16 14:46:42 -0700</delta_ts>
            <desc>RenderTheme patch incorporating all comments</desc>
            <filename>0001-2009-06-16-Kenneth-Rohde-Christiansen-kenneth.chr.patch</filename>
            <type>text/plain</type>
            <size>43323</size>
            <attacher name="Kenneth Rohde Christiansen">kenneth</attacher>
            
              <data encoding="base64">RnJvbSAyMDQ2Mjg0NDE0OTQ4ODRkNDA2ZjhkNzVhYjkwZWY5NTg5YmZjMWFlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiA8a2VubmV0aEBz
cGlzbmlnZWwub3NtdGMuaW5kdC5vcmcuYnI+CkRhdGU6IFR1ZSwgMTYgSnVuIDIwMDkgMTU6MjA6
MjcgLTAzMDAKU3ViamVjdDogW1BBVENIXSAyMDA5LTA2LTE2ICBLZW5uZXRoIFJvaGRlIENocmlz
dGlhbnNlbiAgPGtlbm5ldGguY2hyaXN0aWFuc2VuQG9wZW5ib3NzYS5vcmc+CgogICAgICAgIFJl
dmlld2VkIGJ5IERhdmUgSHlhdHQgYW5kIEFkYW0gUm9iZW4uCgogICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjI3OAogICAgICAgIFBhdGNoIHRoYXQgbWFr
ZSBXZWJDb3JlIGhhdmUgYSBSZW5kZXJUaGVtZSBwZXIgcGFnZQoKICAgICAgICBDcmVhdGUgYSBk
aWZmZXJlbnQgUmVuZGVyVGhlbWUgcGVyIHBhZ2UsIHNvIHRoYXQgUmVuZGVyVGhlbWUgaGFzCiAg
ICAgICAgYWNjZXNzIHRvIHBhZ2Ugc3BlY2lmaWMgdGhlbWluZy4gVGhpcyBpcyBuZWVkZWQgZm9y
IHRoZSBRdCBwb3J0LCBhcyBRdAogICAgICAgIHN1cHBvcnRzIHNldHRpbmcgdGhlIHRoZW1lIChz
dHlsZSkgcGVyIHdpZGdldC4KCiAgICAgICAgVGhpcyBjaGFuZ2Ugd2FzIHN1Z2dlc3RlZCBhbmQg
ZGlzY3Vzc2VkIHdpdGggRGF2ZSBIeWF0dC4KCiAgICAgICAgTW9yZSBkZXRhaWxlZDoKCiAgICAg
ICAgMSkgQ3JlYXRlIGEgdGhlbWUgcGVyIHBhZ2Ugb3Igb25lIGdsb2JhbCBvbmUsIGRlcGVuZGlu
ZyBvbiB0aGUgbmVlZHMKICAgICAgICAgICBvZiB0aGUgcGxhdGZvcm0uCiAgICAgICAgMikgQWRk
IGFuIGFjY2Vzc2VyIHRvIHRoZSB0aGVtZSBmcm9tIFJlbmRlck9iamVjdC4KICAgICAgICAzKSBD
aGFuZ2UgYWxsIHVzZXMgb2YgdGhlIHRoZW1pbmcgdG8gYWNjZXNzIHRoZSB0aGVtZSB0aHJvdWdo
CiAgICAgICAgICAgUmVuZGVyT2JqZWN0LCB1c2luZyB0aGUgZ2xvYmFsIGRlZmF1bHQgdGhlbWUg
YXMgZmFsbGJhY2ssIHdoZW4gdGhlCiAgICAgICAgICAgZG9jdW1lbnQgb2YgUmVuZGVyT2JqZWN0
IGhhcyBubyBwYWdlLgogICAgICAgICAgIFdoZW4gd2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gYSBS
ZW5kZXJPYmplY3QsIHVzZSB0aGUgZGVmYXVsdCB0aGVtZS4KICAgICAgICA0KSBNb2RpZnkgYWxs
IFJlbmRlclRoZW1lIHBsYXRmb3JtIGltcGxlbWVudGF0aW9ucyB0byB3b3JrIHdpdGggdGhlCiAg
ICAgICAgICAgYWJvdmUgY2hhbmdlcywgc3RpbGwgY3JlYXRpbmcgb25seSBvbmUgZ2xvYmFsIHRo
ZW1lLgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgIDEwNCArKysrKysrKysrKysrKysrKysrKwogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAgICAgfCAgICAyICstCiBXZWJDb3JlL2Nzcy9DU1NTdHls
ZVNlbGVjdG9yLmNwcCAgICAgICAgICAgICAgICAgICB8ICAgMTIgKy0KIFdlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuY3BwICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCArLQogV2ViQ29yZS9l
ZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwICAgICAgICAgICAgfCAgICAzICstCiBXZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgICAgICAgICAgICB8ICAgIDQgKy0K
IFdlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCAgICAgICAgICAgICAgICAgIHwgICAg
NiArLQogV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgICAyICstCiBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgIDYgKy0KIFdlYkNvcmUvcGFnZS9QYWdlLmNwcCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAgMiArCiBXZWJDb3JlL3BhZ2UvUGFnZS5oICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgIDcgKy0KIFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBN
ZW51Q2hyb21pdW0uY3BwICAgIHwgICAgNCArLQogV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVy
VGhlbWVHdGsuY3BwICAgICAgICAgICAgfCAgIDMwICsrKystLS0KIFdlYkNvcmUvcGxhdGZvcm0v
Z3RrL1JlbmRlclRoZW1lR3RrLmggICAgICAgICAgICAgIHwgICAgNiArLQogV2ViQ29yZS9wbGF0
Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNwcCAgICAgICAgICAgICAgfCAgIDE0ICsrLQogV2ViQ29y
ZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmggICAgICAgICAgICAgICAgfCAgICA4ICsrLQog
V2ViQ29yZS9wbGF0Zm9ybS93eC9SZW5kZXJUaGVtZVd4LmNwcCAgICAgICAgICAgICAgfCAgIDE3
ICsrKy0KIFdlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwICAgICAgICAgICAgICAg
IHwgICAgNSArLQogV2ViQ29yZS9yZW5kZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwICAg
ICAgICAgfCAgICAyICstCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwICAgICAg
ICAgICAgICAgICB8ICAgIDggKystCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCAg
ICAgICAgICAgICAgICAgICB8ICAgIDMgKwogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUu
Y3BwICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZS5oICAgICAgICAgICAgICAgICAgICB8ICAgMjYgKysrKy0tCiBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguY3BwICAgICB8ICAgMTIgKystCiBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguaCAgICAgICB8ICAgIDYgKy0KIFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1NYWMuaCAgICAgICAgIHwgICAgNiArLQog
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bU1hYy5tbSAgICAgICAgfCAgIDEy
ICsrLQogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHAgICAgICAg
fCAgIDEzICsrLQogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5oICAg
ICAgICAgfCAgICA1ICstCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oICAgICAg
ICAgICAgICAgICB8ICAgIDUgKy0KIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1t
ICAgICAgICAgICAgICAgIHwgICAgNiArLQogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVT
YWZhcmkuY3BwICAgICAgICAgICAgfCAgIDE2ICsrLQogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVTYWZhcmkuaCAgICAgICAgICAgICAgfCAgICA2ICstCiBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZVdpbi5jcHAgICAgICAgICAgICAgICB8ICAgMTIgKystCiBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZVdpbi5oICAgICAgICAgICAgICAgICB8ICAgIDYgKy0KIDM1IGZpbGVz
IGNoYW5nZWQsIDI5OCBpbnNlcnRpb25zKCspLCA4NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg
YS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGYzYjJkYjcuLmY3
NzAxOTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTA3IEBACisyMDA5LTA2LTE2ICBLZW5uZXRoIFJvaGRlIENocmlzdGlh
bnNlbiAgPGtlbm5ldGguY2hyaXN0aWFuc2VuQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGF2ZSBIeWF0dCBhbmQgQWRhbSBSb2Jlbi4KKworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYyNzgKKyAgICAgICAgUGF0Y2ggdGhhdCBt
YWtlIFdlYkNvcmUgaGF2ZSBhIFJlbmRlclRoZW1lIHBlciBwYWdlCisKKworICAgICAgICBDcmVh
dGUgYSBkaWZmZXJlbnQgUmVuZGVyVGhlbWUgcGVyIHBhZ2UsIHNvIHRoYXQgUmVuZGVyVGhlbWUg
aGFzCisgICAgICAgIGFjY2VzcyB0byBwYWdlIHNwZWNpZmljIHRoZW1pbmcuIFRoaXMgaXMgbmVl
ZGVkIGZvciB0aGUgUXQgcG9ydCwgYXMgUXQKKyAgICAgICAgc3VwcG9ydHMgc2V0dGluZyB0aGUg
dGhlbWUgKHN0eWxlKSBwZXIgd2lkZ2V0LgorCisgICAgICAgIFRoaXMgY2hhbmdlIHdhcyBzdWdn
ZXN0ZWQgYW5kIGRpc2N1c3NlZCB3aXRoIERhdmUgSHlhdHQuCisKKyAgICAgICAgTW9yZSBkZXRh
aWxlZDoKKworICAgICAgICAxKSBDcmVhdGUgYSB0aGVtZSBwZXIgcGFnZSBvciBvbmUgZ2xvYmFs
IG9uZSwgZGVwZW5kaW5nIG9uIHRoZSBuZWVkcworICAgICAgICAgICBvZiB0aGUgcGxhdGZvcm0u
CisgICAgICAgIDIpIEFkZCBhbiBhY2Nlc3NlciB0byB0aGUgdGhlbWUgZnJvbSBSZW5kZXJPYmpl
Y3QuCisgICAgICAgIDMpIENoYW5nZSBhbGwgdXNlcyBvZiB0aGUgdGhlbWluZyB0byBhY2Nlc3Mg
dGhlIHRoZW1lIHRocm91Z2gKKyAgICAgICAgICAgUmVuZGVyT2JqZWN0LCB1c2luZyB0aGUgZ2xv
YmFsIGRlZmF1bHQgdGhlbWUgYXMgZmFsbGJhY2ssIHdoZW4gdGhlCisgICAgICAgICAgIGRvY3Vt
ZW50IG9mIFJlbmRlck9iamVjdCBoYXMgbm8gcGFnZS4KKyAgICAgICAgICAgV2hlbiB3ZSBkb24n
dCBoYXZlIGFjY2VzcyB0byBhIFJlbmRlck9iamVjdCwgdXNlIHRoZSBkZWZhdWx0IHRoZW1lLgor
ICAgICAgICA0KSBNb2RpZnkgYWxsIFJlbmRlclRoZW1lIHBsYXRmb3JtIGltcGxlbWVudGF0aW9u
cyB0byB3b3JrIHdpdGggdGhlCisgICAgICAgICAgIGFib3ZlIGNoYW5nZXMsIHN0aWxsIGNyZWF0
aW5nIG9ubHkgb25lIGdsb2JhbCB0aGVtZS4KKworCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmJvdW5kaW5nQm94UmVjdCk6CisgICAgICAgICogY3NzL0NTU1N0
eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9hZEZ1bGxEZWZhdWx0U3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVGb3JFbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFkanVzdFJlbmRlclN0eWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkpOgorICAg
ICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5l
ck5vZGU6OnNldEFjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpzZXRI
b3ZlcmVkKToKKyAgICAgICAgKiBlZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6Zm9jdXNlZE9yQWN0aXZlU3RhdGVD
aGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzZXRDaGVja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJbnB1dEVsZW1lbnQ6OnNldEluZGV0ZXJtaW5hdGUpOgorICAgICAgICAqIHBhZ2UvRnJhbWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNlbGVjdGlvbkxheW91dENoYW5nZWQpOgor
ICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6dXBkYXRlQ29udHJvbFRpbnRzKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZTo6UGFnZSk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlOjp0aGVtZSk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUG9w
dXBNZW51Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBMaXN0Qm94OjpwYWlu
dFJvdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZUd0azo6UmVuZGVyVGhlbWVHdGspOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6
On5SZW5kZXJUaGVtZUd0ayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6Z3Rr
RW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6Omd0a1RyZWVWaWV3KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
UXQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6dGhlbWVGb3JQYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0Lmg6CisgICAgICAgICogcGxh
dGZvcm0vd3gvUmVuZGVyVGhlbWVXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZVd4OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFn
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnRUZXh0TWF0Y2hNYXJrZXIpOgorICAgICAgICAqIHJl
bmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xJbnB1dEVsZW1lbnQ6OmhpdFRlc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojp0aGVtZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6YWRqdXN0U3R5
bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRoZW1lQ2hyb21pdW1MaW51eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNo
cm9taXVtTGludXg6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6dGhl
bWVGb3JQYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1NYWMuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bU1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lQ2hyb21pdW1NYWM6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZTo6dGhlbWVGb3JQYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhl
bWVDaHJvbWl1bVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVt
V2luOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFn
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1XaW4uaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6dGhlbWVGb3JQ
YWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZTo6dGhlbWVGb3JQYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
VGhlbWVTYWZhcmkuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaW46OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZTo6dGhlbWVGb3JQYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGhlbWVXaW4uaDoKKwogMjAwOS0wNi0wMyAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4g
IDxrZW5uZXRoLmNocmlzdGlhbnNlbkBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFNpbW9uIEhhdXNtYW5uLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IDhjNTIyYTEuLjE3NDBiNGIgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAor
KysgYi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAK
QEAgLTEwMDgsNyArMTAwOCw3IEBAIEludFJlY3QgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
Ym91bmRpbmdCb3hSZWN0KCkgY29uc3QKICAgICAgICAgSW50UmVjdCByID0gcXVhZHNbaV0uZW5j
bG9zaW5nQm91bmRpbmdCb3goKTsKICAgICAgICAgaWYgKCFyLmlzRW1wdHkoKSkgewogICAgICAg
ICAgICAgaWYgKG9iai0+c3R5bGUoKS0+aGFzQXBwZWFyYW5jZSgpKQotICAgICAgICAgICAgICAg
IHRoZW1lKCktPmFkanVzdFJlcGFpbnRSZWN0KG9iaiwgcik7CisgICAgICAgICAgICAgICAgb2Jq
LT50aGVtZSgpLT5hZGp1c3RSZXBhaW50UmVjdChvYmosIHIpOwogICAgICAgICAgICAgcmVzdWx0
LnVuaXRlKHIpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTZWxlY3Rvci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAppbmRl
eCBjOGZlMjM0Li43NmQwYmQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVj
dG9yLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcApAQCAtNTE2LDEz
ICs1MTYsMTMgQEAgc3RhdGljIHZvaWQgbG9hZEZ1bGxEZWZhdWx0U3R5bGUoKQogICAgIH0KIAog
ICAgIC8vIFN0cmljdC1tb2RlIHJ1bGVzLgotICAgIFN0cmluZyBkZWZhdWx0UnVsZXMgPSBTdHJp
bmcoaHRtbDRVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YoaHRtbDRVc2VyQWdlbnRTdHlsZVNo
ZWV0KSkgKyB0aGVtZSgpLT5leHRyYURlZmF1bHRTdHlsZVNoZWV0KCk7CisgICAgU3RyaW5nIGRl
ZmF1bHRSdWxlcyA9IFN0cmluZyhodG1sNFVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihodG1s
NFVzZXJBZ2VudFN0eWxlU2hlZXQpKSArIFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+ZXh0
cmFEZWZhdWx0U3R5bGVTaGVldCgpOwogICAgIENTU1N0eWxlU2hlZXQqIGRlZmF1bHRTaGVldCA9
IHBhcnNlVUFTaGVldChkZWZhdWx0UnVsZXMpOwogICAgIGRlZmF1bHRTdHlsZS0+YWRkUnVsZXNG
cm9tU2hlZXQoZGVmYXVsdFNoZWV0LCBzY3JlZW5FdmFsKCkpOwogICAgIGRlZmF1bHRQcmludFN0
eWxlLT5hZGRSdWxlc0Zyb21TaGVldChkZWZhdWx0U2hlZXQsIHByaW50RXZhbCgpKTsKIAogICAg
IC8vIFF1aXJrcy1tb2RlIHJ1bGVzLgotICAgIFN0cmluZyBxdWlya3NSdWxlcyA9IFN0cmluZyhx
dWlya3NVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YocXVpcmtzVXNlckFnZW50U3R5bGVTaGVl
dCkpICsgdGhlbWUoKS0+ZXh0cmFRdWlya3NTdHlsZVNoZWV0KCk7CisgICAgU3RyaW5nIHF1aXJr
c1J1bGVzID0gU3RyaW5nKHF1aXJrc1VzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihxdWlya3NV
c2VyQWdlbnRTdHlsZVNoZWV0KSkgKyBSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCktPmV4dHJh
UXVpcmtzU3R5bGVTaGVldCgpOwogICAgIENTU1N0eWxlU2hlZXQqIHF1aXJrc1NoZWV0ID0gcGFy
c2VVQVNoZWV0KHF1aXJrc1J1bGVzKTsKICAgICBkZWZhdWx0UXVpcmtzU3R5bGUtPmFkZFJ1bGVz
RnJvbVNoZWV0KHF1aXJrc1NoZWV0LCBzY3JlZW5FdmFsKCkpOwogfQpAQCAtMTEyOCw3ICsxMTI4
LDcgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVGb3JF
bGVtZW50KEVsZW1lbnQqIGUsIFJlbmRlclN0eWwKICAgICBzdGF0aWMgYm9vbCBsb2FkZWRNZWRp
YVN0eWxlU2hlZXQ7CiAgICAgaWYgKCFsb2FkZWRNZWRpYVN0eWxlU2hlZXQgJiYgKGUtPmhhc1Rh
Z05hbWUodmlkZW9UYWcpIHx8IGUtPmhhc1RhZ05hbWUoYXVkaW9UYWcpKSkgewogICAgICAgICBs
b2FkZWRNZWRpYVN0eWxlU2hlZXQgPSB0cnVlOwotICAgICAgICBTdHJpbmcgbWVkaWFSdWxlcyA9
IFN0cmluZyhtZWRpYUNvbnRyb2xzVXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKG1lZGlhQ29u
dHJvbHNVc2VyQWdlbnRTdHlsZVNoZWV0KSkgKyB0aGVtZSgpLT5leHRyYU1lZGlhQ29udHJvbHNT
dHlsZVNoZWV0KCk7CisgICAgICAgIFN0cmluZyBtZWRpYVJ1bGVzID0gU3RyaW5nKG1lZGlhQ29u
dHJvbHNVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YobWVkaWFDb250cm9sc1VzZXJBZ2VudFN0
eWxlU2hlZXQpKSArIFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+ZXh0cmFNZWRpYUNvbnRy
b2xzU3R5bGVTaGVldCgpOwogICAgICAgICBDU1NTdHlsZVNoZWV0KiBtZWRpYUNvbnRyb2xzU2hl
ZXQgPSBwYXJzZVVBU2hlZXQobWVkaWFSdWxlcyk7CiAgICAgICAgIGRlZmF1bHRTdHlsZS0+YWRk
UnVsZXNGcm9tU2hlZXQobWVkaWFDb250cm9sc1NoZWV0LCBzY3JlZW5FdmFsKCkpOwogICAgICAg
ICBkZWZhdWx0UHJpbnRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQobWVkaWFDb250cm9sc1NoZWV0
LCBwcmludEV2YWwoKSk7CkBAIC0xNTc5LDcgKzE1NzksNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0
b3I6OmFkanVzdFJlbmRlclN0eWxlKFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCAqZSkKIAog
ICAgIC8vIExldCB0aGUgdGhlbWUgYWxzbyBoYXZlIGEgY3JhY2sgYXQgYWRqdXN0aW5nIHRoZSBz
dHlsZS4KICAgICBpZiAoc3R5bGUtPmhhc0FwcGVhcmFuY2UoKSkKLSAgICAgICAgdGhlbWUoKS0+
YWRqdXN0U3R5bGUodGhpcywgc3R5bGUsIGUsIG1faGFzVUFBcHBlYXJhbmNlLCBtX2JvcmRlckRh
dGEsIG1fYmFja2dyb3VuZERhdGEsIG1fYmFja2dyb3VuZENvbG9yKTsKKyAgICAgICAgUmVuZGVy
VGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5hZGp1c3RTdHlsZSh0aGlzLCBzdHlsZSwgZSwgbV9oYXNV
QUFwcGVhcmFuY2UsIG1fYm9yZGVyRGF0YSwgbV9iYWNrZ3JvdW5kRGF0YSwgbV9iYWNrZ3JvdW5k
Q29sb3IpOwogCiAjaWYgRU5BQkxFKFNWRykKICAgICBpZiAoZSAmJiBlLT5pc1NWR0VsZW1lbnQo
KSkgewpAQCAtNDM3Niw3ICs0Mzc2LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVBy
b3BlcnR5KGludCBpZCwgQ1NTVmFsdWUgKnZhbHVlKQogICAgICAgICAgICAgbV9saW5lSGVpZ2h0
VmFsdWUgPSAwOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBGb250RGVzY3JpcHRpb24gZm9u
dERlc2NyaXB0aW9uOwotICAgICAgICAgICAgdGhlbWUoKS0+c3lzdGVtRm9udChwcmltaXRpdmVW
YWx1ZS0+Z2V0SWRlbnQoKSwgZm9udERlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgIFJlbmRlclRo
ZW1lOjpkZWZhdWx0VGhlbWUoKS0+c3lzdGVtRm9udChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQo
KSwgZm9udERlc2NyaXB0aW9uKTsKICAKICAgICAgICAgICAgIC8vIERvdWJsZS1jaGVjayBhbmQg
c2VlIGlmIHRoZSB0aGVtZSBkaWQgYW55dGhpbmcuICBJZiBub3QsIGRvbid0IGJvdGhlciB1cGRh
dGluZyB0aGUgZm9udC4KICAgICAgICAgICAgIGlmIChmb250RGVzY3JpcHRpb24uaXNBYnNvbHV0
ZVNpemUoKSkgewpAQCAtNTgxMSw3ICs1ODExLDcgQEAgc3RhdGljIENvbG9yIGNvbG9yRm9yQ1NT
VmFsdWUoaW50IGNzc1ZhbHVlSWQpCiAgICAgICAgIGlmIChjb2wtPmNzc1ZhbHVlSWQgPT0gY3Nz
VmFsdWVJZCkKICAgICAgICAgICAgIHJldHVybiBjb2wtPmNvbG9yOwogICAgIH0KLSAgICByZXR1
cm4gdGhlbWUoKS0+c3lzdGVtQ29sb3IoY3NzVmFsdWVJZCk7CisgICAgcmV0dXJuIFJlbmRlclRo
ZW1lOjpkZWZhdWx0VGhlbWUoKS0+c3lzdGVtQ29sb3IoY3NzVmFsdWVJZCk7CiB9CiAKIENvbG9y
IENTU1N0eWxlU2VsZWN0b3I6OmdldENvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKENTU1ByaW1pdGl2
ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0NvbnRhaW5l
ck5vZGUuY3BwIGIvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggMjU3MzkwOC4u
MjBjYzdhMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIv
V2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTc5OCw3ICs3OTgsNyBAQCB2b2lkIENv
bnRhaW5lck5vZGU6OnNldEFjdGl2ZShib29sIGRvd24sIGJvb2wgcGF1c2UpCiAgICAgICAgIGlm
IChyZWFjdHNUb1ByZXNzKQogICAgICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogICAg
ICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpLT5oYXNBcHBlYXJhbmNl
KCkpIHsKLSAgICAgICAgICAgIGlmICh0aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwg
UHJlc3NlZFN0YXRlKSkKKyAgICAgICAgICAgIGlmIChyZW5kZXJlcigpLT50aGVtZSgpLT5zdGF0
ZUNoYW5nZWQocmVuZGVyZXIoKSwgUHJlc3NlZFN0YXRlKSkKICAgICAgICAgICAgICAgICByZWFj
dHNUb1ByZXNzID0gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBpZiAocmVhY3RzVG9QcmVzcyAm
JiBwYXVzZSkgewpAQCAtODQwLDcgKzg0MCw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6c2V0SG92
ZXJlZChib29sIG92ZXIpCiAgICAgICAgIGlmIChyZW5kZXJlcigpLT5zdHlsZSgpLT5hZmZlY3Rl
ZEJ5SG92ZXJSdWxlcygpKQogICAgICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogICAg
ICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpLT5oYXNBcHBlYXJhbmNl
KCkpCi0gICAgICAgICAgICB0aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgSG92ZXJT
dGF0ZSk7CisgICAgICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVu
ZGVyZXIoKSwgSG92ZXJTdGF0ZSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Vk
aXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9u
Q29udHJvbGxlci5jcHAKaW5kZXggMWQzNmY1MS4uNzZjNzgyNSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9T
ZWxlY3Rpb25Db250cm9sbGVyLmNwcApAQCAtNDYsNyArNDYsNiBAQAogI2luY2x1ZGUgIkhpdFRl
c3RSZXN1bHQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKLSNpbmNs
dWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJU
ZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJUeXBpbmdDb21tYW5kLmgiCkBAIC0xMjY4LDcgKzEy
NjcsNyBAQCB2b2lkIFNlbGVjdGlvbkNvbnRyb2xsZXI6OmZvY3VzZWRPckFjdGl2ZVN0YXRlQ2hh
bmdlZCgpCiAgICAgICAgIG5vZGUtPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICAgICAgaWYg
KFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpKQogICAgICAgICAgICAg
aWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5zdHlsZSgpLT5oYXNBcHBlYXJhbmNlKCkpCi0gICAg
ICAgICAgICAgICAgdGhlbWUoKS0+c3RhdGVDaGFuZ2VkKHJlbmRlcmVyLCBGb2N1c1N0YXRlKTsK
KyAgICAgICAgICAgICAgICByZW5kZXJlci0+dGhlbWUoKS0+c3RhdGVDaGFuZ2VkKHJlbmRlcmVy
LCBGb2N1c1N0YXRlKTsKICAgICB9CiAKICAgICAvLyBTZWN1cmUga2V5Ym9hcmQgZW50cnkgaXMg
c2V0IGJ5IHRoZSBhY3RpdmUgZnJhbWUuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVu
dC5jcHAKaW5kZXggMzZkMjBhYy4uYjk4NWU3NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRy
b2xFbGVtZW50LmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAqYXR0cikKICAgICAgICAg
aWYgKG9sZERpc2FibGVkICE9IG1fZGlzYWJsZWQpIHsKICAgICAgICAgICAgIHNldE5lZWRzU3R5
bGVSZWNhbGMoKTsKICAgICAgICAgICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0
eWxlKCktPmhhc0FwcGVhcmFuY2UoKSkKLSAgICAgICAgICAgICAgICB0aGVtZSgpLT5zdGF0ZUNo
YW5nZWQocmVuZGVyZXIoKSwgRW5hYmxlZFN0YXRlKTsKKyAgICAgICAgICAgICAgICByZW5kZXJl
cigpLT50aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgRW5hYmxlZFN0YXRlKTsKICAg
ICAgICAgfQogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHJlYWRvbmx5QXR0cikgewog
ICAgICAgICBib29sIG9sZFJlYWRPbmx5ID0gbV9yZWFkT25seTsKQEAgLTc5LDcgKzc5LDcgQEAg
dm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRB
dHRyaWJ1dGUgKmF0dHIpCiAgICAgICAgIGlmIChvbGRSZWFkT25seSAhPSBtX3JlYWRPbmx5KSB7
CiAgICAgICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgICAgICAgICBpZiAocmVu
ZGVyZXIoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpLT5oYXNBcHBlYXJhbmNlKCkpCi0gICAgICAg
ICAgICAgICAgdGhlbWUoKS0+c3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIFJlYWRPbmx5U3RhdGUp
OworICAgICAgICAgICAgICAgIHJlbmRlcmVyKCktPnRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5k
ZXJlcigpLCBSZWFkT25seVN0YXRlKTsKICAgICAgICAgfQogICAgIH0gZWxzZQogICAgICAgICBI
VE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAKaW5kZXggZGJjODE4Yi4uYjNjNzU2NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcApAQCAtODgxLDkgKzg4MSw5IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0Q2hlY2tl
ZChib29sIG5vd0NoZWNrZWQsIGJvb2wgc2VuZENoYW5nZUV2ZW50KQogICAgIHNldE5lZWRzU3R5
bGVSZWNhbGMoKTsKIAogICAgIGNoZWNrZWRSYWRpb0J1dHRvbnModGhpcykuYWRkQnV0dG9uKHRo
aXMpOwotICAgIAorCiAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKS0+
aGFzQXBwZWFyYW5jZSgpKQotICAgICAgICB0aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVyZXIo
KSwgQ2hlY2tlZFN0YXRlKTsKKyAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS0+c3RhdGVDaGFu
Z2VkKHJlbmRlcmVyKCksIENoZWNrZWRTdGF0ZSk7CiAKICAgICAvLyBPbmx5IHNlbmQgYSBjaGFu
Z2UgZXZlbnQgZm9yIGl0ZW1zIGluIHRoZSBkb2N1bWVudCAoYXZvaWQgZmlyaW5nIGR1cmluZwog
ICAgIC8vIHBhcnNpbmcpIGFuZCBkb24ndCBzZW5kIGEgY2hhbmdlIGV2ZW50IGZvciBhIHJhZGlv
IGJ1dHRvbiB0aGF0J3MgZ2V0dGluZwpAQCAtOTA1LDcgKzkwNSw3IEBAIHZvaWQgSFRNTElucHV0
RWxlbWVudDo6c2V0SW5kZXRlcm1pbmF0ZShib29sIF9pbmRldGVybWluYXRlKQogICAgIHNldE5l
ZWRzU3R5bGVSZWNhbGMoKTsKIAogICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0
eWxlKCktPmhhc0FwcGVhcmFuY2UoKSkKLSAgICAgICAgdGhlbWUoKS0+c3RhdGVDaGFuZ2VkKHJl
bmRlcmVyKCksIENoZWNrZWRTdGF0ZSk7CisgICAgICAgIHJlbmRlcmVyKCktPnRoZW1lKCktPnN0
YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBDaGVja2VkU3RhdGUpOwogfQogCiBpbnQgSFRNTElucHV0
RWxlbWVudDo6c2l6ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3Bw
IGIvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCBhMzZjMWFhLi5hMjI4YmY4IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAK
QEAgLTYyMiw3ICs2MjIsNyBAQCB2b2lkIEZyYW1lOjpzZWxlY3Rpb25MYXlvdXRDaGFuZ2VkKCkK
ICAgICAvLyBTdGFydCBibGlua2luZyB3aXRoIGEgYmxhY2sgY2FyZXQuIEJlIHN1cmUgbm90IHRv
IHJlc3RhcnQgaWYgd2UncmUKICAgICAvLyBhbHJlYWR5IGJsaW5raW5nIGluIHRoZSByaWdodCBs
b2NhdGlvbi4KICAgICBpZiAoc2hvdWxkQmxpbmsgJiYgIW1fY2FyZXRCbGlua1RpbWVyLmlzQWN0
aXZlKCkpIHsKLSAgICAgICAgaWYgKGRvdWJsZSBibGlua0ludGVydmFsID0gdGhlbWUoKS0+Y2Fy
ZXRCbGlua0ludGVydmFsKCkpCisgICAgICAgIGlmIChkb3VibGUgYmxpbmtJbnRlcnZhbCA9IHBh
Z2UoKS0+dGhlbWUoKS0+Y2FyZXRCbGlua0ludGVydmFsKCkpCiAgICAgICAgICAgICBtX2NhcmV0
QmxpbmtUaW1lci5zdGFydFJlcGVhdGluZyhibGlua0ludGVydmFsKTsKIAogICAgICAgICBpZiAo
IW1fY2FyZXRQYWludCkgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAg
Yi9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBmNjUwMWJlLi4zOGIwNWU4IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcApAQCAtMTI5NiwxMCArMTI5NiwxMCBAQCB2b2lkIEZyYW1lVmlldzo6dXBkYXRl
Q29udHJvbFRpbnRzKCkKICAgICAvLyB0byBkZWZpbmUgd2hlbiBjb250cm9scyBnZXQgdGhlIHRp
bnQgYW5kIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiB3aGVuIHRoYXQgY2hhbmdlcy4KICAgICAKICAg
ICAvLyBPcHRpbWl6ZSB0aGUgY29tbW9uIGNhc2Ugd2hlcmUgd2UgYnJpbmcgYSB3aW5kb3cgdG8g
dGhlIGZyb250IHdoaWxlIGl0J3Mgc3RpbGwgZW1wdHkuCi0gICAgaWYgKCFtX2ZyYW1lIHx8IG1f
ZnJhbWUtPmxvYWRlcigpLT51cmwoKS5pc0VtcHR5KCkpIAorICAgIGlmICghbV9mcmFtZSB8fCBt
X2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAg
Ci0gICAgaWYgKHRoZW1lKCktPnN1cHBvcnRzQ29udHJvbFRpbnRzKCkgJiYgbV9mcmFtZS0+Y29u
dGVudFJlbmRlcmVyKCkpIHsKKworICAgIGlmIChtX2ZyYW1lLT5jb250ZW50UmVuZGVyZXIoKSAm
JiBtX2ZyYW1lLT5jb250ZW50UmVuZGVyZXIoKS0+dGhlbWUoKS0+c3VwcG9ydHNDb250cm9sVGlu
dHMoKSkgewogICAgICAgICBpZiAobmVlZHNMYXlvdXQoKSkKICAgICAgICAgICAgIGxheW91dCgp
OwogICAgICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogY29uc3Qgbm9Db250ZXh0ID0gMDsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cAppbmRleCBhMTQzNDNkLi45ZWFjZDZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKKysrIGIvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVk
ZSAiUGx1Z2luRGF0YS5oIgogI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgogI2luY2x1ZGUg
IlJlbmRlcldpZGdldC5oIgorI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNlbGVjdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNs
dWRlICJTZXR0aW5ncy5oIgpAQCAtMTIwLDYgKzEyMSw3IEBAIFBhZ2U6OlBhZ2UoQ2hyb21lQ2xp
ZW50KiBjaHJvbWVDbGllbnQsIENvbnRleHRNZW51Q2xpZW50KiBjb250ZXh0TWVudUNsaWVudCwg
RWRpCiAgICAgLCBtX2RlYnVnZ2VyKDApCiAgICAgLCBtX2N1c3RvbUhUTUxUb2tlbml6ZXJUaW1l
RGVsYXkoLTEpCiAgICAgLCBtX2N1c3RvbUhUTUxUb2tlbml6ZXJDaHVua1NpemUoLTEpCisgICAg
LCBtX3RoZW1lKFJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2UodGhpcykpCiB7CiAgICAgaWYgKCFh
bGxQYWdlcykgewogICAgICAgICBhbGxQYWdlcyA9IG5ldyBIYXNoU2V0PFBhZ2UqPjsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IGVl
ZGQyNGMuLmJhYjZiODYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvV2Vi
Q29yZS9wYWdlL1BhZ2UuaApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVy
VHlwZXMuaCIKICNpbmNsdWRlICJMaW5rSGFzaC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5n
LmgiCisjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgog
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIApAQCAtNzgsNyArNzksOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICAgICAgUGFnZShDaHJvbWVDbGllbnQqLCBDb250ZXh0TWVudUNsaWVudCos
IEVkaXRvckNsaWVudCosIERyYWdDbGllbnQqLCBJbnNwZWN0b3JDbGllbnQqKTsKICAgICAgICAg
flBhZ2UoKTsKLSAgICAgICAgCisKKyAgICAgICAgUmVuZGVyVGhlbWUqIHRoZW1lKCkgY29uc3Qg
eyByZXR1cm4gbV90aGVtZS5nZXQoKTsgfTsKKwogICAgICAgICBzdGF0aWMgdm9pZCByZWZyZXNo
UGx1Z2lucyhib29sIHJlbG9hZCk7CiAgICAgICAgIFBsdWdpbkRhdGEqIHBsdWdpbkRhdGEoKSBj
b25zdDsKIApAQCAtMjE3LDYgKzIyMCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAg
ICBtdXRhYmxlIFJlZlB0cjxQbHVnaW5EYXRhPiBtX3BsdWdpbkRhdGE7CiAKKyAgICAgICAgUmVm
UHRyPFJlbmRlclRoZW1lPiBtX3RoZW1lOworCiAgICAgICAgIEVkaXRvckNsaWVudCogbV9lZGl0
b3JDbGllbnQ7CiAKICAgICAgICAgaW50IG1fZnJhbWVDb3VudDsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwIGIvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHAKaW5kZXggYjAwYjYyNS4uNTZlZjFl
OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1
bS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5j
cHAKQEAgLTc3MSw4ICs3NzEsOCBAQCB2b2lkIFBvcHVwTGlzdEJveDo6cGFpbnRSb3coR3JhcGhp
Y3NDb250ZXh0KiBnYywgY29uc3QgSW50UmVjdCYgcmVjdCwgaW50IHJvd0luZAogICAgIC8vIFBh
aW50IGJhY2tncm91bmQKICAgICBDb2xvciBiYWNrQ29sb3IsIHRleHRDb2xvcjsKICAgICBpZiAo
cm93SW5kZXggPT0gbV9zZWxlY3RlZEluZGV4KSB7Ci0gICAgICAgIGJhY2tDb2xvciA9IHRoZW1l
KCktPmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKTsKLSAgICAgICAgdGV4
dENvbG9yID0gdGhlbWUoKS0+YWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigp
OworICAgICAgICBiYWNrQ29sb3IgPSBSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCktPmFjdGl2
ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICAgICAgdGV4dENvbG9yID0g
UmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdy
b3VuZENvbG9yKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgYmFja0NvbG9yID0gc3R5bGUuYmFj
a2dyb3VuZENvbG9yKCk7CiAgICAgICAgIHRleHRDb2xvciA9IHN0eWxlLmZvcmVncm91bmRDb2xv
cigpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3Bw
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwCmluZGV4IGE5NWY1NTcu
LjA5ODQ5N2MgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3Rr
LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAKQEAgLTIs
NiArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLgogICogQ29weXJpZ2h0
IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDggQ29sbGFib3JhIEx0ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBLZW5uZXRoIFJvaGRlIENo
cmlzdGlhbnNlbgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zNCwxMyArMzUsMTggQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJUaGVtZSogdGhlbWUoKQorUGFzc1JlZlB0cjxSZW5k
ZXJUaGVtZT4gUmVuZGVyVGhlbWVHdGs6OmNyZWF0ZSgpCiB7Ci0gICAgc3RhdGljIFJlbmRlclRo
ZW1lR3RrIGd0a1RoZW1lOwotICAgIHJldHVybiAmZ3RrVGhlbWU7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBSZW5kZXJUaGVtZUd0aygpKTsKIH0KIAotc3RhdGljIGJvb2wgbW96R3RrSW5pdGlh
bGl6ZWQgPSBmYWxzZTsKK1Bhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IFJlbmRlclRoZW1lOjp0aGVt
ZUZvclBhZ2UoUGFnZSogcGFnZSkKK3sKKyAgICBzdGF0aWMgUmVuZGVyVGhlbWUqIHJ0ID0gUmVu
ZGVyVGhlbWVHdGs6OmNyZWF0ZSgpLnJlbGVhc2VSZWYoKTsKKyAgICByZXR1cm4gcnQ7Cit9CisK
K3N0YXRpYyBpbnQgbW96R3RrUmVmQ291bnQgPSAwOwogCiBSZW5kZXJUaGVtZUd0azo6UmVuZGVy
VGhlbWVHdGsoKQogICAgIDogbV9ndGtXaW5kb3coMCkKQEAgLTQ4LDE4ICs1NCwxOCBAQCBSZW5k
ZXJUaGVtZUd0azo6UmVuZGVyVGhlbWVHdGsoKQogICAgICwgbV9ndGtFbnRyeSgwKQogICAgICwg
bV9ndGtUcmVlVmlldygwKQogewotICAgIGlmICghbW96R3RrSW5pdGlhbGl6ZWQpIHsKLSAgICAg
ICAgbW96R3RrSW5pdGlhbGl6ZWQgPSB0cnVlOworICAgIGlmICghbW96R3RrUmVmQ291bnQpCiAg
ICAgICAgIG1vel9ndGtfaW5pdCgpOwotICAgIH0KKworICAgICsrbW96R3RrUmVmQ291bnQ7CiB9
CiAKIFJlbmRlclRoZW1lR3RrOjp+UmVuZGVyVGhlbWVHdGsoKQogewotICAgIGlmIChtb3pHdGtJ
bml0aWFsaXplZCkgeworICAgIC0tbW96R3RrUmVmQ291bnQ7CisKKyAgICBpZiAoIW1vekd0a1Jl
ZkNvdW50KQogICAgICAgICBtb3pfZ3RrX3NodXRkb3duKCk7Ci0gICAgICAgIG1vekd0a0luaXRp
YWxpemVkID0gZmFsc2U7Ci0gICAgfQogfQogCiBzdGF0aWMgYm9vbCBzdXBwb3J0c0ZvY3VzKENv
bnRyb2xQYXJ0IGFwcGVhcmFuY2UpCkBAIC00NzAsNyArNDc2LDcgQEAgR3RrV2lkZ2V0KiBSZW5k
ZXJUaGVtZUd0azo6Z3RrRW50cnkoKSBjb25zdAogICAgICAgICByZXR1cm4gbV9ndGtFbnRyeTsK
IAogICAgIG1fZ3RrRW50cnkgPSBndGtfZW50cnlfbmV3KCk7Ci0gICAgZ19zaWduYWxfY29ubmVj
dChtX2d0a0VudHJ5LCAic3R5bGUtc2V0IiwgR19DQUxMQkFDSyhndGtTdHlsZVNldENhbGxiYWNr
KSwgdGhlbWUoKSk7CisgICAgZ19zaWduYWxfY29ubmVjdChtX2d0a0VudHJ5LCAic3R5bGUtc2V0
IiwgR19DQUxMQkFDSyhndGtTdHlsZVNldENhbGxiYWNrKSwgY29uc3RfY2FzdDxSZW5kZXJUaGVt
ZUd0ayo+KHRoaXMpKTsKICAgICBndGtfY29udGFpbmVyX2FkZChndGtDb250YWluZXIoKSwgbV9n
dGtFbnRyeSk7CiAgICAgZ3RrX3dpZGdldF9yZWFsaXplKG1fZ3RrRW50cnkpOwogCkBAIC00ODMs
NyArNDg5LDcgQEAgR3RrV2lkZ2V0KiBSZW5kZXJUaGVtZUd0azo6Z3RrVHJlZVZpZXcoKSBjb25z
dAogICAgICAgICByZXR1cm4gbV9ndGtUcmVlVmlldzsKIAogICAgIG1fZ3RrVHJlZVZpZXcgPSBn
dGtfdHJlZV92aWV3X25ldygpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9ndGtUcmVlVmlldywg
InN0eWxlLXNldCIsIEdfQ0FMTEJBQ0soZ3RrU3R5bGVTZXRDYWxsYmFjayksIHRoZW1lKCkpOwor
ICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9ndGtUcmVlVmlldywgInN0eWxlLXNldCIsIEdfQ0FMTEJB
Q0soZ3RrU3R5bGVTZXRDYWxsYmFjayksIGNvbnN0X2Nhc3Q8UmVuZGVyVGhlbWVHdGsqPih0aGlz
KSk7CiAgICAgZ3RrX2NvbnRhaW5lcl9hZGQoZ3RrQ29udGFpbmVyKCksIG1fZ3RrVHJlZVZpZXcp
OwogICAgIGd0a193aWRnZXRfcmVhbGl6ZShtX2d0a1RyZWVWaWV3KTsKIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuaCBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1JlbmRlclRoZW1lR3RrLmgKaW5kZXggODJhODdjYi4uNjZmN2FlMiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuaAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5oCkBAIC01LDYgKzUsNyBAQAogICogQ29weXJpZ2h0IChD
KSAyMDA2IE1pY2hhZWwgRW1tZWwgbWlrZS5lbW1lbEBnbWFpbC5jb20KICAqIENvcHlyaWdodCAo
QykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgogICogQ29weXJpZ2h0IChDKSAyMDA3
IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgS2VubmV0
aCBSb2hkZSBDaHJpc3RpYW5zZW4KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgpAQCAtMzQsMTAgKzM1LDEzIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRl
clRoZW1lR3RrIDogcHVibGljIFJlbmRlclRoZW1lIHsKLXB1YmxpYzoKK3ByaXZhdGU6CiAgICAg
UmVuZGVyVGhlbWVHdGsoKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJUaGVtZUd0aygpOwogCitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IGNyZWF0ZSgpOworCiAgICAg
Ly8gQSBtZXRob2QgYXNraW5nIGlmIHRoZSB0aGVtZSdzIGNvbnRyb2xzIGFjdHVhbGx5IGNhcmUg
YWJvdXQgcmVkcmF3aW5nIHdoZW4gaG92ZXJlZC4KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNI
b3Zlcihjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNwcCBiL1dlYkNv
cmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5jcHAKaW5kZXggYjE2Y2JjNC4uZmY0MzA1MCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNwcAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuY3BwCkBAIC0xMDYsMTAgKzEwNiwxOCBA
QCBTdHlsZVBhaW50ZXI6On5TdHlsZVBhaW50ZXIoKQogICAgIH0KIH0KIAotUmVuZGVyVGhlbWUq
IHRoZW1lKCkKK1Bhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IFJlbmRlclRoZW1lUXQ6OmNyZWF0ZShQ
YWdlKiBwYWdlKQogewotICAgIHN0YXRpYyBSZW5kZXJUaGVtZVF0IHJ0OwotICAgIHJldHVybiAm
cnQ7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZW5kZXJUaGVtZVF0KHBhZ2UpKTsKK30KKwor
UGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZShQYWdlKiBw
YWdlKQoreworICAgIGlmIChwYWdlKQorICAgICAgICByZXR1cm4gUmVuZGVyVGhlbWVRdDo6Y3Jl
YXRlKHBhZ2UpOworCisgICAgc3RhdGljIFJlbmRlclRoZW1lKiBmYWxsYmFjayA9IFJlbmRlclRo
ZW1lUXQ6OmNyZWF0ZSgwKS5yZWxlYXNlUmVmKCk7CisgICAgcmV0dXJuIGZhbGxiYWNrOwogfQog
CiBSZW5kZXJUaGVtZVF0OjpSZW5kZXJUaGVtZVF0KCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVt
ZVF0LmgKaW5kZXggNWM3OGE3Mi4uYzFlZTcyOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9xdC9SZW5kZXJUaGVtZVF0LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVt
ZVF0LmgKQEAgLTM4LDEwICszOCwxMyBAQCBjbGFzcyBIVE1MTWVkaWFFbGVtZW50OwogCiBjbGFz
cyBSZW5kZXJUaGVtZVF0IDogcHVibGljIFJlbmRlclRoZW1lCiB7Ci1wdWJsaWM6Citwcml2YXRl
OgogICAgIFJlbmRlclRoZW1lUXQoKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJUaGVtZVF0KCk7CiAK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gY3JlYXRlKFBhZ2Uq
KTsKKwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0hvdmVyKGNvbnN0IFJlbmRlclN0eWxlKikg
Y29uc3Q7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRm9jdXNSaW5nKGNvbnN0IFJlbmRlclN0
eWxlKiBzdHlsZSkgY29uc3Q7CiAKQEAgLTEzMSw2ICsxMzQsOSBAQCBwcml2YXRlOgogICAgIHZv
aWQgY29tcHV0ZVNpemVCYXNlZE9uU3R5bGUoUmVuZGVyU3R5bGUqIHJlbmRlclN0eWxlKSBjb25z
dDsKIAogcHJpdmF0ZToKKyAgICBSZW5kZXJUaGVtZVF0KFBhZ2UqIHBhZ2UpOworICAgIHZpcnR1
YWwgflJlbmRlclRoZW1lUXQoKTsKKwogICAgIGJvb2wgc3VwcG9ydHNGb2N1cyhDb250cm9sUGFy
dCkgY29uc3Q7CiAKICAgICBDb250cm9sUGFydCBhcHBseVRoZW1lKFFTdHlsZU9wdGlvbiYsIFJl
bmRlck9iamVjdCopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93eC9SZW5k
ZXJUaGVtZVd4LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vd3gvUmVuZGVyVGhlbWVXeC5jcHAKaW5k
ZXggYTI2NDE2Zi4uODI0YzQwMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93eC9SZW5k
ZXJUaGVtZVd4LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3d4L1JlbmRlclRoZW1lV3guY3Bw
CkBAIC00NCw4ICs0NCwxMiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJU
aGVtZVd4IDogcHVibGljIFJlbmRlclRoZW1lIHsKLXB1YmxpYzoKK3ByaXZhdGU6CiAgICAgUmVu
ZGVyVGhlbWVXeCgpIDogUmVuZGVyVGhlbWUoKSB7IH0KKyAgICB2aXJ0dWFsIH5SZW5kZXJUaGVt
ZVd4KCk7CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gY3Jl
YXRlKCk7CiAKICAgICAvLyBBIG1ldGhvZCBhc2tpbmcgaWYgdGhlIHRoZW1lJ3MgY29udHJvbHMg
YWN0dWFsbHkgY2FyZSBhYm91dCByZWRyYXdpbmcgd2hlbiBob3ZlcmVkLgogICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c0hvdmVyKGNvbnN0IFJlbmRlclN0eWxlKikgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQpAQCAtMTE5LDEwICsxMjMsMTUgQEAgcHJpdmF0ZToKICNkZWZpbmUgUE9QVVBfSU5URVJO
QUxfUEFERElOR19SSUdIVCAyMAogI2VuZGlmCiAKLVJlbmRlclRoZW1lKiB0aGVtZSgpCitQYXNz
UmVmUHRyPFJlbmRlclRoZW1lPiBSZW5kZXJUaGVtZVd4OjpjcmVhdGUoKQoreworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgUmVuZGVyVGhlbWVXeCgpKTsKK30KKworUGFzc1JlZlB0cjxSZW5kZXJU
aGVtZT4gUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZShQYWdlKiBwYWdlKQogewotICAgIHN0YXRp
YyBSZW5kZXJUaGVtZVd4IHJ0OwotICAgIHJldHVybiAmcnQ7CisgICAgc3RhdGljIFJlbmRlclRo
ZW1lKiBydCA9IFJlbmRlclRoZW1lV3goKS5jcmVhdGUoKS5yZWxlYXNlUmVmKCk7CisgICAgcmV0
dXJuIHJ0OwogfQogCiBib29sIFJlbmRlclRoZW1lV3g6OmlzQ29udHJvbFN0eWxlZChjb25zdCBS
ZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IEJvcmRlckRhdGEmIGJvcmRlciwKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lVGV4dEJveC5jcHAKaW5kZXggNDE4YmUxNS4uMzBkMTkyZiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lVGV4dEJveC5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUmVuZGVyQXJlbmEuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgotI2luY2x1
ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgImJyZWFrX2xp
bmVzLmgiCiAjaW5jbHVkZSA8d3RmL0Fsd2F5c0lubGluZS5oPgpAQCAtNzcwLDggKzc2OSw4IEBA
IHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0TWF0Y2hNYXJrZXIoR3JhcGhpY3NDb250ZXh0
KiBwdCwgaW50IHR4LCBpbnQgdHksIERvCiAgICAgLy8gT3B0aW9uYWxseSBoaWdobGlnaHQgdGhl
IHRleHQKICAgICBpZiAocmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+bWFya2VkVGV4
dE1hdGNoZXNBcmVIaWdobGlnaHRlZCgpKSB7CiAgICAgICAgIENvbG9yIGNvbG9yID0gbWFya2Vy
LmFjdGl2ZU1hdGNoID8KLSAgICAgICAgICAgIHRoZW1lKCktPnBsYXRmb3JtQWN0aXZlVGV4dFNl
YXJjaEhpZ2hsaWdodENvbG9yKCkgOgotICAgICAgICAgICAgdGhlbWUoKS0+cGxhdGZvcm1JbmFj
dGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpOworICAgICAgICAgICAgcmVuZGVyZXIoKS0+
dGhlbWUoKS0+cGxhdGZvcm1BY3RpdmVUZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IoKSA6CisgICAg
ICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLT5wbGF0Zm9ybUluYWN0aXZlVGV4dFNlYXJjaEhp
Z2hsaWdodENvbG9yKCk7CiAgICAgICAgIHB0LT5zYXZlKCk7CiAgICAgICAgIHVwZGF0ZUdyYXBo
aWNzQ29udGV4dChwdCwgY29sb3IsIGNvbG9yLCAwKTsgIC8vIERvbid0IGRyYXcgdGV4dCBhdCBh
bGwhCiAgICAgICAgIHB0LT5jbGlwKEludFJlY3QodHggKyBtX3gsIHR5ICsgeSwgbV93aWR0aCwg
aCkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMu
Y3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCmluZGV4IDVj
ZDkzNjMuLjdhYThjMWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29udHJv
bEVsZW1lbnRzLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50
cy5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCB2b2lkIE1lZGlhQ29udHJvbElucHV0RWxlbWVudDo6
dXBkYXRlU3R5bGUoKQogYm9vbCBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6OmhpdFRlc3QoY29u
c3QgSW50UG9pbnQmIGFic1BvaW50KQogewogICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVy
KCktPnN0eWxlKCktPmhhc0FwcGVhcmFuY2UoKSkKLSAgICAgICAgcmV0dXJuIHRoZW1lKCktPmhp
dFRlc3RNZWRpYUNvbnRyb2xQYXJ0KHJlbmRlcmVyKCksIGFic1BvaW50KTsKKyAgICAgICAgcmV0
dXJuIHJlbmRlcmVyKCktPnRoZW1lKCktPmhpdFRlc3RNZWRpYUNvbnRyb2xQYXJ0KHJlbmRlcmVy
KCksIGFic1BvaW50KTsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwCmluZGV4IGY4MTAxOGQuLmQ1NjE4MzEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcApAQCAtNDMsNyArNDMsNiBAQAogI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2VsbC5oIgog
I2luY2x1ZGUgIlJlbmRlclRhYmxlQ29sLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVSb3cuaCIK
LSNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNs
dWRlICJUcmFuc2Zvcm1TdGF0ZS5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KQEAgLTIxNCw2ICsy
MTMsMTMgQEAgUmVuZGVyT2JqZWN0Ojp+UmVuZGVyT2JqZWN0KCkKICNlbmRpZgogfQogCitSZW5k
ZXJUaGVtZSogUmVuZGVyT2JqZWN0Ojp0aGVtZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGRvY3Vt
ZW50KCktPnBhZ2UoKSk7CisKKyAgICByZXR1cm4gZG9jdW1lbnQoKS0+cGFnZSgpLT50aGVtZSgp
OworfQorCiBib29sIFJlbmRlck9iamVjdDo6aXNEZXNjZW5kYW50T2YoY29uc3QgUmVuZGVyT2Jq
ZWN0KiBvYmopIGNvbnN0CiB7CiAgICAgZm9yIChjb25zdCBSZW5kZXJPYmplY3QqIHIgPSB0aGlz
OyByOyByID0gci0+bV9wYXJlbnQpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggMDkw
MWJmZi4uNDIwZjRhZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTQ4LDYgKzQ4LDcg
QEAgY2xhc3MgUmVuZGVySW5saW5lOwogY2xhc3MgUmVuZGVyQmxvY2s7CiBjbGFzcyBSZW5kZXJG
bG93OwogY2xhc3MgUmVuZGVyTGF5ZXI7CitjbGFzcyBSZW5kZXJUaGVtZTsKIGNsYXNzIFRyYW5z
Zm9ybVN0YXRlOwogY2xhc3MgVmlzaWJsZVBvc2l0aW9uOwogCkBAIC0xMzcsNiArMTM4LDggQEAg
cHVibGljOgogICAgIFJlbmRlck9iamVjdChOb2RlKik7CiAgICAgdmlydHVhbCB+UmVuZGVyT2Jq
ZWN0KCk7CiAKKyAgICBSZW5kZXJUaGVtZSogdGhlbWUoKSBjb25zdDsKKwogICAgIHZpcnR1YWwg
Y29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0ID0gMDsKIAogICAgIFJlbmRlck9iamVjdCog
cGFyZW50KCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnQ7IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
LmNwcAppbmRleCBlNjdlNjEyLi40YmRjMDQ2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZS5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3Bw
CkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdFN0eWxlKENTU1N0eWxl
U2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsCiAgICAgZWxzZSBpZiAo
c3R5bGUtPmRpc3BsYXkoKSA9PSBDT01QQUNUIHx8IHN0eWxlLT5kaXNwbGF5KCkgPT0gUlVOX0lO
IHx8IHN0eWxlLT5kaXNwbGF5KCkgPT0gTElTVF9JVEVNIHx8IHN0eWxlLT5kaXNwbGF5KCkgPT0g
VEFCTEUpCiAgICAgICAgIHN0eWxlLT5zZXREaXNwbGF5KEJMT0NLKTsKIAotICAgIGlmIChVQUhh
c0FwcGVhcmFuY2UgJiYgdGhlbWUoKS0+aXNDb250cm9sU3R5bGVkKHN0eWxlLCBib3JkZXIsIGJh
Y2tncm91bmQsIGJhY2tncm91bmRDb2xvcikpIHsKKyAgICBpZiAoVUFIYXNBcHBlYXJhbmNlICYm
IGlzQ29udHJvbFN0eWxlZChzdHlsZSwgYm9yZGVyLCBiYWNrZ3JvdW5kLCBiYWNrZ3JvdW5kQ29s
b3IpKSB7CiAgICAgICAgIGlmIChwYXJ0ID09IE1lbnVsaXN0UGFydCkgewogICAgICAgICAgICAg
c3R5bGUtPnNldEFwcGVhcmFuY2UoTWVudWxpc3RCdXR0b25QYXJ0KTsKICAgICAgICAgICAgIHBh
cnQgPSBNZW51bGlzdEJ1dHRvblBhcnQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAppbmRleCBiYzgx
ZDRkLi45NGZmODYxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5o
CisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgKQEAgLTIzLDEzICsyMywxNiBA
QAogI2lmbmRlZiBSZW5kZXJUaGVtZV9oCiAjZGVmaW5lIFJlbmRlclRoZW1lX2gKIAotI2luY2x1
ZGUgIlJlbmRlck9iamVjdC5oIgogI2lmIFVTRShORVdfVEhFTUUpCiAjaW5jbHVkZSAiVGhlbWUu
aCIKICNlbHNlCiAjaW5jbHVkZSAiVGhlbWVUeXBlcy5oIgogI2VuZGlmCisjaW5jbHVkZSAiUmVu
ZGVyT2JqZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJTY3JvbGxU
eXBlcy5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOCwxMSArNDEsMjQgQEAgY2xh
c3MgUG9wdXBNZW51OwogY2xhc3MgUmVuZGVyTWVudUxpc3Q7CiBjbGFzcyBDU1NTdHlsZVNoZWV0
OwogCi1jbGFzcyBSZW5kZXJUaGVtZSB7Ci1wdWJsaWM6CitjbGFzcyBSZW5kZXJUaGVtZSA6IHB1
YmxpYyBSZWZDb3VudGVkPFJlbmRlclRoZW1lPiB7Citwcm90ZWN0ZWQ6CiAgICAgUmVuZGVyVGhl
bWUoKTsKKworcHVibGljOgogICAgIHZpcnR1YWwgflJlbmRlclRoZW1lKCkgeyB9CiAKKyAgICAv
LyBUaGlzIGZ1bmN0aW9uIGlzIHRvIGJlIGltcGxlbWVudGVkIGluIHlvdXIgcGxhdGZvcm0tc3Bl
Y2lmaWMgdGhlbWUgaW1wbGVtZW50YXRpb24gdG8gaGFuZCBiYWNrIHRoZQorICAgIC8vIGFwcHJv
cHJpYXRlIHBsYXRmb3JtIHRoZW1lLiBXaGVuIHRoZSB0aGVtZSBpcyBuZWVkZWQgaW4gbm9uLXBh
Z2UgZGVwZW5kZW50IGNvZGUsIGEgZGVmYXVsdCB0aGVtZSBpcworICAgIC8vIHVzZWQgYXMgZmFs
bGJhY2ssIHdoaWNoIGlzIHJldHVybmVkIGZvciBhIG51bGxlZCBwYWdlLCBzbyB0aGUgcGxhdGZv
cm0gY29kZSBuZWVkcyB0byBhY2NvdW50IGZvciB0aGlzLgorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFJlbmRlclRoZW1lPiB0aGVtZUZvclBhZ2UoUGFnZSogcGFnZSk7CisKKyAgICAvLyBXaGVuIHRo
ZSB0aGVtZSBpcyBuZWVkZWQgaW4gbm9uLXBhZ2UgZGVwZW5kZW50IGNvZGUsIHRoZSBkZWZhdWx0
VGhlbWUoKSBpcyB1c2VkIGFzIGZhbGxiYWNrLgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0
cjxSZW5kZXJUaGVtZT4gZGVmYXVsdFRoZW1lKCkKKyAgICB7CisgICAgICAgIHJldHVybiBSZW5k
ZXJUaGVtZTo6dGhlbWVGb3JQYWdlKDApOworICAgIH07CisKICAgICAvLyBUaGlzIG1ldGhvZCBp
cyBjYWxsZWQgd2hlbmV2ZXIgc3R5bGUgaGFzIGJlZW4gY29tcHV0ZWQgZm9yIGFuIGVsZW1lbnQg
YW5kIHRoZSBhcHBlYXJhbmNlCiAgICAgLy8gcHJvcGVydHkgaGFzIGJlZW4gc2V0IHRvIGEgdmFs
dWUgb3RoZXIgdGhhbiAibm9uZSIuICBUaGUgdGhlbWUgc2hvdWxkIG1hcCBpbiBhbGwgb2YgdGhl
IGFwcHJvcHJpYXRlCiAgICAgLy8gbWV0cmljcyBhbmQgZGVmYXVsdHMgZ2l2ZW4gdGhlIGNvbnRl
bnRzIG9mIHRoZSBzdHlsZS4gIFRoaXMgaW5jbHVkZXMgc29waGlzdGljYXRlZCBvcGVyYXRpb25z
IGxpa2UKQEAgLTI1NywxMCArMjczLDYgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAotLy8gRnVu
Y3Rpb24gdG8gb2J0YWluIHRoZSB0aGVtZS4gIFRoaXMgaXMgaW1wbGVtZW50ZWQgaW4geW91ciBw
bGF0Zm9ybS1zcGVjaWZpYyB0aGVtZSBpbXBsZW1lbnRhdGlvbiB0byBoYW5kCi0vLyBiYWNrIHRo
ZSBhcHByb3ByaWF0ZSBwbGF0Zm9ybSB0aGVtZS4KLVJlbmRlclRoZW1lKiB0aGVtZSgpOwotCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBSZW5kZXJUaGVtZV9oCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguY3BwIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmNwcAppbmRleCA5NGVlNjRm
Li43YzQxZGI1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9t
aXVtTGludXguY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1M
aW51eC5jcHAKQEAgLTMsNiArMyw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2Vy
IDxhbHBAYXRva2VyLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLgog
ICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEdvb2dsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAt
MTEzLDEwICsxMTQsMTUgQEAgc3RhdGljIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudFBh
cmVudChOb2RlKiBub2RlKQogfQogI2VuZGlmCiAKLVJlbmRlclRoZW1lKiB0aGVtZSgpCitQYXNz
UmVmUHRyPFJlbmRlclRoZW1lPiBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OmNyZWF0ZSgpCiB7
Ci0gICAgc3RhdGljIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eCB0aGVtZTsKLSAgICByZXR1cm4g
JnRoZW1lOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4
KCkpOworfQorCitQYXNzUmVmUHRyPFJlbmRlclRoZW1lPiBSZW5kZXJUaGVtZTo6dGhlbWVGb3JQ
YWdlKFBhZ2UqIHBhZ2UpCit7CisgICAgc3RhdGljIFJlbmRlclRoZW1lKiBydCA9IFJlbmRlclRo
ZW1lQ2hyb21pdW1MaW51eDo6Y3JlYXRlKCkucmVsZWFzZVJlZigpOworICAgIHJldHVybiBydDsK
IH0KIAogUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpSZW5kZXJUaGVtZUNocm9taXVtTGludXgo
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4
LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguaAppbmRleCA3
ODM4NTA5Li4xNTA3MGU2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZUNocm9taXVtTGludXguaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9t
aXVtTGludXguaApAQCAtNyw2ICs3LDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9r
ZXIgPGFscEBhdG9rZXIuY29tPgogICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEdvb2dsZSwg
SW5jLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBLZW5u
ZXRoIFJvaGRlIENocmlzdGlhbnNlbgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zMywxMCArMzQs
MTMgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIFJlbmRlclRoZW1lQ2hyb21p
dW1MaW51eCA6IHB1YmxpYyBSZW5kZXJUaGVtZSB7Ci0gICAgcHVibGljOgorICAgIHByaXZhdGU6
CiAgICAgICAgIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eCgpOwogICAgICAgICB+UmVuZGVyVGhl
bWVDaHJvbWl1bUxpbnV4KCkgeyB9CiAKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFJlbmRlclRoZW1lPiBjcmVhdGUoKTsKKwogICAgICAgICB2aXJ0dWFsIFN0cmluZyBl
eHRyYURlZmF1bHRTdHlsZVNoZWV0KCk7CiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIGV4dHJhUXVp
cmtzU3R5bGVTaGVldCgpOwogI2lmIEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1NYWMuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lQ2hyb21pdW1NYWMuaAppbmRleCBmMDcyMDAwLi40MGNhZjRmIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTWFjLmgKKysrIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bU1hYy5oCkBAIC0zLDYgKzMsNyBAQAogICoK
ICAqIENvcHlyaWdodCAoQykgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLgogICogQ29weXJpZ2h0
IChDKSAyMDA4LCAyMDA5IEdvb2dsZSwgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEtlbm5l
dGggUm9oZGUgQ2hyaXN0aWFuc2VuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQwLDEwICs0MSwx
MyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgUmVuZGVyU3R5bGU7CiAKICAgICBj
bGFzcyBSZW5kZXJUaGVtZUNocm9taXVtTWFjIDogcHVibGljIFJlbmRlclRoZW1lIHsKLSAgICBw
dWJsaWM6CisgICAgcHJpdmF0ZToKICAgICAgICAgUmVuZGVyVGhlbWVDaHJvbWl1bU1hYygpOwog
ICAgICAgICB2aXJ0dWFsIH5SZW5kZXJUaGVtZUNocm9taXVtTWFjKCk7CiAKKyAgICBwdWJsaWM6
CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlbmRlclRoZW1lPiBjcmVhdGUoKTsKKwogICAg
ICAgICAvLyBBIG1ldGhvZCB0byBvYnRhaW4gdGhlIGJhc2VsaW5lIHBvc2l0aW9uIGZvciBhICJs
ZWFmIiBjb250cm9sLiAgVGhpcyB3aWxsIG9ubHkgYmUgdXNlZCBpZiBhIGJhc2VsaW5lCiAgICAg
ICAgIC8vIHBvc2l0aW9uIGNhbm5vdCBiZSBkZXRlcm1pbmVkIGJ5IGV4YW1pbmluZyBjaGlsZCBj
b250ZW50LiBDaGVja2JveGVzIGFuZCByYWRpbyBidXR0b25zIGFyZSBleGFtcGxlcyBvZgogICAg
ICAgICAvLyBjb250cm9scyB0aGF0IG5lZWQgdG8gZG8gdGhpcy4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1NYWMubW0gYi9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUNocm9taXVtTWFjLm1tCmluZGV4IGY2MDgxYTUuLjY0MTdmNGEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1NYWMubW0KKysrIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bU1hYy5tbQpAQCAtMSw2ICsxLDcg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEdvb2ds
ZSwgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2Vu
CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTEyNCwxMCArMTI1LDE1IEBAIEludFJlY3QgTlNSZWN0
VG9JbnRSZWN0KGNvbnN0IE5TUmVjdCAmIHJlY3QpCiAgICAgcmV0dXJuIEludFJlY3QocmVjdC5v
cmlnaW4ueCwgcmVjdC5vcmlnaW4ueSwgcmVjdC5zaXplLndpZHRoLCByZWN0LnNpemUuaGVpZ2h0
KTsKIH0KIAotUmVuZGVyVGhlbWUqIHRoZW1lKCkKK1Bhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IFJl
bmRlclRoZW1lQ2hyb21pdW1NYWM6OmNyZWF0ZSgpCiB7Ci0gICAgc3RhdGljIFJlbmRlclRoZW1l
Q2hyb21pdW1NYWMqIG1hY1RoZW1lID0gbmV3IFJlbmRlclRoZW1lQ2hyb21pdW1NYWM7Ci0gICAg
cmV0dXJuIG1hY1RoZW1lOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVuZGVyVGhlbWVDaHJv
bWl1bU1hYyk7Cit9CisKK1Bhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IFJlbmRlclRoZW1lOjp0aGVt
ZUZvclBhZ2UoUGFnZSogcGFnZSkKK3sKKyAgICBzdGF0aWMgUmVuZGVyVGhlbWUqIHJ0ID0gUmVu
ZGVyVGhlbWVDaHJvbWl1bU1hYzo6Y3JlYXRlKCkucmVsZWFzZVJlZigpOworICAgIHJldHVybiBy
dDsKIH0KIAogUmVuZGVyVGhlbWVDaHJvbWl1bU1hYzo6UmVuZGVyVGhlbWVDaHJvbWl1bU1hYygp
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtV2luLmNw
cCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1XaW4uY3BwCmluZGV4IDUy
ODgxOTEuLjdkZjZlNjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
Q2hyb21pdW1XaW4uY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21p
dW1XaW4uY3BwCkBAIC0zLDYgKzMsNyBAQAogICoKICAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBs
ZSBDb21wdXRlciwgSW5jLgogICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEdvb2dsZSwgSW5j
LgorICogQ29weXJpZ2h0IChDKSAyMDA5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTI2NSwxMSArMjY2LDE1IEBAIHN0YXRpYyBIVE1MTWVkaWFFbGVt
ZW50KiBtZWRpYUVsZW1lbnRQYXJlbnQoTm9kZSogbm9kZSkKIH0KICNlbmRpZgogCi0vLyBJbXBs
ZW1lbnQgV2ViQ29yZTo6dGhlbWUoKSBmb3IgZ2V0dGluZyB0aGUgZ2xvYmFsIFJlbmRlclRoZW1l
LgotUmVuZGVyVGhlbWUqIHRoZW1lKCkKK1Bhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IFJlbmRlclRo
ZW1lQ2hyb21pdW1XaW46OmNyZWF0ZSgpCiB7Ci0gICAgc3RhdGljIFJlbmRlclRoZW1lQ2hyb21p
dW1XaW4gd2luVGhlbWU7Ci0gICAgcmV0dXJuICZ3aW5UaGVtZTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFJlbmRlclRoZW1lQ2hyb21pdW1XaW4pOworfQorCitQYXNzUmVmUHRyPFJlbmRlclRo
ZW1lPiBSZW5kZXJUaGVtZTo6dGhlbWVGb3JQYWdlKFBhZ2UqIHBhZ2UpCit7CisgICAgc3RhdGlj
IFJlbmRlclRoZW1lKiBydCA9IFJlbmRlclRoZW1lQ2hyb21pdW1XaW46OmNyZWF0ZSgpLnJlbGVh
c2VSZWYoKTsKKyAgICByZXR1cm4gcnQ7CiB9CiAKIFN0cmluZyBSZW5kZXJUaGVtZUNocm9taXVt
V2luOjpleHRyYURlZmF1bHRTdHlsZVNoZWV0KCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lQ2hyb21pdW1XaW4uaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lQ2hyb21pdW1XaW4uaAppbmRleCA2YmE2NTk1Li45YmJhMzdkIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtV2luLmgKKysrIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5oCkBAIC00MywxMCArNDMsMTMgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIH07CiAKICAgICBjbGFzcyBSZW5kZXJUaGVtZUNocm9taXVtV2lu
IDogcHVibGljIFJlbmRlclRoZW1lIHsKLSAgICBwdWJsaWM6CisgICAgcHJpdmF0ZToKICAgICAg
ICAgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbigpIHsgfQogICAgICAgICB+UmVuZGVyVGhlbWVDaHJv
bWl1bVdpbigpIHsgfQogCisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxS
ZW5kZXJUaGVtZT4gY3JlYXRlKCk7CisKICAgICAgICAgdmlydHVhbCBTdHJpbmcgZXh0cmFEZWZh
dWx0U3R5bGVTaGVldCgpOwogICAgICAgICB2aXJ0dWFsIFN0cmluZyBleHRyYVF1aXJrc1N0eWxl
U2hlZXQoKTsKICNpZiBFTkFCTEUoVklERU8pCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZU1hYy5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaApp
bmRleCA2M2YxZDk3Li42OTFlZjkwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZU1hYy5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmgKQEAg
LTM4LDEwICszOCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZW5kZXJTdHlsZTsK
IAogY2xhc3MgUmVuZGVyVGhlbWVNYWMgOiBwdWJsaWMgUmVuZGVyVGhlbWUgewotcHVibGljOgor
cHJpdmF0ZToKICAgICBSZW5kZXJUaGVtZU1hYygpOwogICAgIHZpcnR1YWwgflJlbmRlclRoZW1l
TWFjKCk7CiAKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gY3Jl
YXRlKCk7CisKICAgICAvLyBBIG1ldGhvZCBhc2tpbmcgaWYgdGhlIGNvbnRyb2wgY2hhbmdlcyBp
dHMgdGludCB3aGVuIHRoZSB3aW5kb3cgaGFzIGZvY3VzIG9yIG5vdC4KICAgICB2aXJ0dWFsIGJv
b2wgY29udHJvbFN1cHBvcnRzVGludHMoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3Q7CiAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KaW5kZXggYzNlYzkxYS4uMmY0NDAzNSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTEwMSwxMCArMTAxLDEwIEBAIGVudW0gewog
ICAgIGxlZnRQYWRkaW5nCiB9OwogCi1SZW5kZXJUaGVtZSogdGhlbWUoKQorUGFzc1JlZlB0cjxS
ZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZShQYWdlKiBwYWdlKQogewotICAg
IHN0YXRpYyBSZW5kZXJUaGVtZU1hYyogbWFjVGhlbWUgPSBuZXcgUmVuZGVyVGhlbWVNYWM7Ci0g
ICAgcmV0dXJuIG1hY1RoZW1lOworICAgIHN0YXRpYyBSZW5kZXJUaGVtZSogcnQgPSBSZW5kZXJU
aGVtZU1hYzo6Y3JlYXRlKCkucmVsZWFzZVJlZigpOworICAgIHJldHVybiBydDsKIH0KIAogUmVu
ZGVyVGhlbWVNYWM6OlJlbmRlclRoZW1lTWFjKCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
U2FmYXJpLmNwcAppbmRleCAzYWZmZDFmLi4zOGQ4M2JiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVTYWZhcmkuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAwNywgMjAwOCBBcHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgS2VubmV0aCBSb2hk
ZSBDaHJpc3RpYW5zZW4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNjUsMTMgKzY2LDE4IEBAIGVu
dW0gewogICAgIGxlZnRQYWRkaW5nCiB9OwogCi1SZW5kZXJUaGVtZSogdGhlbWUoKQorUGFzc1Jl
ZlB0cjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWVTYWZhcmk6OmNyZWF0ZSgpCiB7Ci0gICAgc3Rh
dGljIFJlbmRlclRoZW1lU2FmYXJpIHNhZmFyaVRoZW1lOwotICAgIHN0YXRpYyBSZW5kZXJUaGVt
ZVdpbiB3aW5kb3dzVGhlbWU7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZW5kZXJUaGVtZVNh
ZmFyaSk7Cit9CisKK1Bhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IFJlbmRlclRoZW1lOjp0aGVtZUZv
clBhZ2UoUGFnZSogcGFnZSkKK3sKKyAgICBzdGF0aWMgUmVuZGVyVGhlbWUqIHNhZmFyaVRoZW1l
ID0gUmVuZGVyVGhlbWVTYWZhcmk6OmNyZWF0ZSgpLnJlbGVhc2VSZWYoKTsKKyAgICBzdGF0aWMg
UmVuZGVyVGhlbWUqIHdpbmRvd3NUaGVtZSA9IFJlbmRlclRoZW1lV2luOjpjcmVhdGUoKS5yZWxl
YXNlUmVmKCk7CiAgICAgaWYgKFNldHRpbmdzOjpzaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzKCkp
Ci0gICAgICAgIHJldHVybiAmd2luZG93c1RoZW1lOwotICAgIHJldHVybiAmc2FmYXJpVGhlbWU7
CisgICAgICAgIHJldHVybiB3aW5kb3dzVGhlbWU7IC8vIGtlZXAgdGhlIHJlZmVyZW5jZSBvZiBv
bmUuCisgICAgcmV0dXJuIHNhZmFyaVRoZW1lOyAvLyBrZWVwIHRoZSByZWZlcmVuY2Ugb2Ygb25l
LgogfQogCiAjaWYgIWRlZmluZWQoTkRFQlVHKSAmJiBkZWZpbmVkKFVTRV9ERUJVR19TQUZBUklf
VEhFTUUpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5o
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuaAppbmRleCA4YWM1YWNmLi4x
YmMxYTc4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5o
CisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmgKQEAgLTEsNSArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4KKyAqIENvcHly
aWdodCAoQykgMjAwOSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbgogICoKICAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCkBAIC00NSwxMCArNDYsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFNhZmFyaVRoZW1lOwogY2xh
c3MgUmVuZGVyU3R5bGU7CiAKIGNsYXNzIFJlbmRlclRoZW1lU2FmYXJpIDogcHVibGljIFJlbmRl
clRoZW1lIHsKLXB1YmxpYzoKK3ByaXZhdGU6CiAgICAgUmVuZGVyVGhlbWVTYWZhcmkoKTsKICAg
ICB2aXJ0dWFsIH5SZW5kZXJUaGVtZVNhZmFyaSgpOwogCitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8UmVuZGVyVGhlbWU+IGNyZWF0ZSgpOworCiAgICAgLy8gQSBtZXRob2QgdG8gb2J0
YWluIHRoZSBiYXNlbGluZSBwb3NpdGlvbiBmb3IgYSAibGVhZiIgY29udHJvbC4gIFRoaXMgd2ls
bCBvbmx5IGJlIHVzZWQgaWYgYSBiYXNlbGluZQogICAgIC8vIHBvc2l0aW9uIGNhbm5vdCBiZSBk
ZXRlcm1pbmVkIGJ5IGV4YW1pbmluZyBjaGlsZCBjb250ZW50LiBDaGVja2JveGVzIGFuZCByYWRp
byBidXR0b25zIGFyZSBleGFtcGxlcyBvZgogICAgIC8vIGNvbnRyb2xzIHRoYXQgbmVlZCB0byBk
byB0aGlzLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3Bw
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCmluZGV4IDFmYTUxNjIuLjVi
YTczMjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcAor
KysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKQEAgLTEsNSArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFwcGxlIEluYy4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbgogICoKICAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CkBAIC0xMzQsMTEgKzEzNSwxNiBAQCB2b2lkIFJlbmRlclRoZW1lV2luOjpzZXRXZWJLaXRJc0Jl
aW5nVW5sb2FkZWQoKQogICAgIGdXZWJLaXRJc0JlaW5nVW5sb2FkZWQgPSB0cnVlOwogfQogCitQ
YXNzUmVmUHRyPFJlbmRlclRoZW1lPiBSZW5kZXJUaGVtZVdpbjo6Y3JlYXRlKCkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFJlbmRlclRoZW1lV2luKTsKK30KKwogI2lmICFVU0UoU0FGQVJJ
X1RIRU1FKQotUmVuZGVyVGhlbWUqIHRoZW1lKCkKK1Bhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IFJl
bmRlclRoZW1lOjp0aGVtZUZvclBhZ2UoUGFnZSogcGFnZSkKIHsKLSAgICBzdGF0aWMgUmVuZGVy
VGhlbWVXaW4gd2luVGhlbWU7Ci0gICAgcmV0dXJuICZ3aW5UaGVtZTsKKyAgICBzdGF0aWMgUmVu
ZGVyVGhlbWVXaW4qIHdpblRoZW1lID0gUmVuZGVyVGhlbWVXaW46OmNyZWF0ZSgpLnJlbGVhc2VS
ZWYoKTsKKyAgICByZXR1cm4gd2luVGhlbWU7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lV2luLmgKaW5kZXggMjU0NzNhMS4uNzc3NjYwNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZVdpbi5oCkBAIC0yLDYgKzIsNyBAQAogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdl
YktpdCBwcm9qZWN0LgogICoKICAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCBBcHBsZSBDb21w
dXRlciwgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFu
c2VuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQ3LDEwICs0OCwxMyBAQCBzdHJ1Y3QgVGhlbWVE
YXRhIHsKIH07CiAKIGNsYXNzIFJlbmRlclRoZW1lV2luIDogcHVibGljIFJlbmRlclRoZW1lIHsK
LXB1YmxpYzoKK3ByaXZhdGU6CiAgICAgUmVuZGVyVGhlbWVXaW4oKTsKICAgICB+UmVuZGVyVGhl
bWVXaW4oKTsKIAorcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlbmRlclRoZW1lPiBj
cmVhdGUoKTsKKwogICAgIHZpcnR1YWwgU3RyaW5nIGV4dHJhRGVmYXVsdFN0eWxlU2hlZXQoKTsK
ICAgICB2aXJ0dWFsIFN0cmluZyBleHRyYVF1aXJrc1N0eWxlU2hlZXQoKTsKIAotLSAKMS42LjAu
NAoK
</data>
<flag name="review"
          id="16028"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31358</attachid>
            <date>2009-06-16 11:31:14 -0700</date>
            <delta_ts>2009-06-16 16:10:30 -0700</delta_ts>
            <desc>Qt specific RenderTheme patch, accepted by Simon and with the RefPtr fix.</desc>
            <filename>0002-2009-06-16-Kenneth-Rohde-Christiansen-kenneth.chr.patch</filename>
            <type>text/plain</type>
            <size>14541</size>
            <attacher name="Kenneth Rohde Christiansen">kenneth</attacher>
            
              <data encoding="base64">RnJvbSAzZDVlMDA2N2UzNWM3MTYzODhhMTBhZmIzNDJhMGVmYmU4YTRmYjY3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiA8a2VubmV0aEBz
cGlzbmlnZWwub3NtdGMuaW5kdC5vcmcuYnI+CkRhdGU6IFR1ZSwgMTYgSnVuIDIwMDkgMTU6MjQ6
MTIgLTAzMDAKU3ViamVjdDogW1BBVENIXSAyMDA5LTA2LTE2ICBLZW5uZXRoIFJvaGRlIENocmlz
dGlhbnNlbiAgPGtlbm5ldGguY2hyaXN0aWFuc2VuQG9wZW5ib3NzYS5vcmc+CgogICAgICAgIFJl
dmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgoKICAgICAgICBGb2xsb3cgdXAgdG8gYnVnIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjI3OAogICAgICAgIFBhdGNoIHRo
YXQgbWFrZSBXZWJDb3JlIGhhdmUgYSBSZW5kZXJUaGVtZSBwZXIgcGFnZQoKICAgICAgICBNYWtl
IHRoZSBRdCBpbXBsZW1lbnRhdGlvbiBvZiBSZW5kZXJUaGVtZSBjcmVhdGUgYSB0aGVtZSBwZXIg
cGFnZSwKICAgICAgICBhbmQgdXNlIHRoZSBRU3R5bGUgYXNzb2NpYXRlZCB3aXRoIHRoZSB2aWV3
IG9mIGVhY2ggcGFnZSwgaW4gb3JkZXIKICAgICAgICB0byBtYWtlIHRoZSBRV2lkZ2V0IHNldFN0
eWxlKCkgbWV0aG9kIHdvcmsgYXMgYWR2ZXJ0aXNlZC4KLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAg
ICAgICAgICAgICAgICAgICAgIHwgICAyNSArKysrKysrCiBXZWJDb3JlL3BsYXRmb3JtL3F0L1Jl
bmRlclRoZW1lUXQuY3BwIHwgIDExNSArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0K
IFdlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5oICAgfCAgIDEwICsrLQogMyBmaWxl
cyBjaGFuZ2VkLCA5MSBpbnNlcnRpb25zKCspLCA1OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg
YS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGY3NzAxOTguLjJl
YjQ4MWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDUgKzEsMzAgQEAKIDIwMDktMDYtMTYgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFu
c2VuICA8a2VubmV0aC5jaHJpc3RpYW5zZW5Ab3BlbmJvc3NhLm9yZz4KIAorICAgICAgICBSZXZp
ZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBGb2xsb3cgdXAgdG8gYnVnIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjI3OAorICAgICAgICBQYXRjaCB0
aGF0IG1ha2UgV2ViQ29yZSBoYXZlIGEgUmVuZGVyVGhlbWUgcGVyIHBhZ2UKKworICAgICAgICBN
YWtlIHRoZSBRdCBpbXBsZW1lbnRhdGlvbiBvZiBSZW5kZXJUaGVtZSBjcmVhdGUgYSB0aGVtZSBw
ZXIgcGFnZSwKKyAgICAgICAgYW5kIHVzZSB0aGUgUVN0eWxlIGFzc29jaWF0ZWQgd2l0aCB0aGUg
dmlldyBvZiBlYWNoIHBhZ2UsIGluIG9yZGVyCisgICAgICAgIHRvIG1ha2UgdGhlIFFXaWRnZXQg
c2V0U3R5bGUoKSBtZXRob2Qgd29yayBhcyBhZHZlcnRpc2VkLgorCisgICAgICAgICogcGxhdGZv
cm0vcXQvUmVuZGVyVGhlbWVRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVF0
OjpSZW5kZXJUaGVtZVF0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUXQ6OnFTdHls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpmaW5kRnJhbWVMaW5lV2lkdGgpOgorICAgICAgICAoV2Vi
Q29yZTo6aW5mbGF0ZUJ1dHRvblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVR
dDo6YWRqdXN0UmVwYWludFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVRdDo6
aXNDb250cm9sU3R5bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUXQ6OmNvbXB1
dGVTaXplQmFzZWRPblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUXQ6OnNl
dEJ1dHRvblBhZGRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVRdDo6cGFpbnRC
dXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVRdDo6cGFpbnRUZXh0RmllbGQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVRdDo6c2V0UG9wdXBQYWRkaW5nKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0Lmg6CisKKzIwMDktMDYtMTYgIEtlbm5l
dGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aC5jaHJpc3RpYW5zZW5Ab3BlbmJvc3NhLm9y
Zz4KKwogICAgICAgICBSZXZpZXdlZCBieSBEYXZlIEh5YXR0IGFuZCBBZGFtIFJvYmVuLgogCiAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjI3OApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNwcCBiL1dlYkNvcmUv
cGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5jcHAKaW5kZXggZmY0MzA1MC4uNGE2ZGYwYSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNwcAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuY3BwCkBAIC0xMjAsOCArMTIwLDEwIEBAIFBh
c3NSZWZQdHI8UmVuZGVyVGhlbWU+IFJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2UoUGFnZSogcGFn
ZSkKICAgICByZXR1cm4gZmFsbGJhY2s7CiB9CiAKLVJlbmRlclRoZW1lUXQ6OlJlbmRlclRoZW1l
UXQoKQorUmVuZGVyVGhlbWVRdDo6UmVuZGVyVGhlbWVRdChQYWdlKiBwYWdlKQogICAgIDogUmVu
ZGVyVGhlbWUoKQorICAgICwgbV9wYWdlKHBhZ2UpCisgICAgLCBtX2ZhbGxiYWNrU3R5bGUoMCkK
IHsKICAgICBRUHVzaEJ1dHRvbiBidXR0b247CiAgICAgYnV0dG9uLnNldEF0dHJpYnV0ZShRdDo6
V0FfTWFjU21hbGxTaXplKTsKQEAgLTEzMSwxNCArMTMzLDYgQEAgUmVuZGVyVGhlbWVRdDo6UmVu
ZGVyVGhlbWVRdCgpCiAjaWZkZWYgUV9XU19NQUMKICAgICBtX2J1dHRvbkZvbnRQaXhlbFNpemUg
PSBmb250SW5mby5waXhlbFNpemUoKTsKICNlbmRpZgotCi0gICAgbV9mYWxsYmFja1N0eWxlID0g
MDsKLQotICAgIC8vIHRoaXMgd2lsbCBuZWVkIHRvIGJlIHJlZ2VuZXJhdGVkIHdoZW4gdGhlIHN0
eWxlIGNoYW5nZXMKLSAgICBRTGluZUVkaXQgbGluZUVkaXQ7Ci0gICAgUVN0eWxlT3B0aW9uRnJh
bWVWMiBvcHQ7Ci0gICAgbV9mcmFtZUxpbmVXaWR0aCA9IFFBcHBsaWNhdGlvbjo6c3R5bGUoKS0+
cGl4ZWxNZXRyaWMoUVN0eWxlOjpQTV9EZWZhdWx0RnJhbWVXaWR0aCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3B0LCAmbGluZUVk
aXQpOwogfQogCiBSZW5kZXJUaGVtZVF0Ojp+UmVuZGVyVGhlbWVRdCgpCkBAIC0xNTgsNiArMTUy
LDIxIEBAIFFTdHlsZSogUmVuZGVyVGhlbWVRdDo6ZmFsbGJhY2tTdHlsZSgpCiAgICAgcmV0dXJu
IG1fZmFsbGJhY2tTdHlsZTsKIH0KIAorUVN0eWxlKiBSZW5kZXJUaGVtZVF0OjpxU3R5bGUoKSBj
b25zdAoreworICAgIGlmIChtX3BhZ2UpIHsKKyAgICAgICAgQ2hyb21lQ2xpZW50UXQqIGNsaWVu
dCA9IHN0YXRpY19jYXN0PENocm9tZUNsaWVudFF0Kj4obV9wYWdlLT5jaHJvbWUoKS0+Y2xpZW50
KCkpOworCisgICAgICAgIGlmICghY2xpZW50LT5tX3dlYlBhZ2UpCisgICAgICAgICAgICByZXR1
cm4gUUFwcGxpY2F0aW9uOjpzdHlsZSgpOworCisgICAgICAgIGlmIChRV2lkZ2V0KiB2aWV3ID0g
Y2xpZW50LT5tX3dlYlBhZ2UtPnZpZXcoKSkKKyAgICAgICAgICAgIHJldHVybiB2aWV3LT5zdHls
ZSgpOworICAgIH0KKworICAgIHJldHVybiBRQXBwbGljYXRpb246OnN0eWxlKCk7Cit9CisKIGJv
b2wgUmVuZGVyVGhlbWVRdDo6c3VwcG9ydHNIb3Zlcihjb25zdCBSZW5kZXJTdHlsZSopIGNvbnN0
CiB7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xOTcsMTQgKzIwNiwyMCBAQCBib29sIFJlbmRlclRo
ZW1lUXQ6OnN1cHBvcnRzQ29udHJvbFRpbnRzKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotc3RhdGljIFFSZWN0IGluZmxhdGVCdXR0b25SZWN0KGNvbnN0IFFSZWN0JiBvcmlnaW5hbFJl
Y3QpCitzdGF0aWMgaW50IGZpbmRGcmFtZUxpbmVXaWR0aChRU3R5bGUqIHN0eWxlKQoreworICAg
IFFMaW5lRWRpdCBsaW5lRWRpdDsKKyAgICBRU3R5bGVPcHRpb25GcmFtZVYyIG9wdDsKKyAgICBy
ZXR1cm4gc3R5bGUtPnBpeGVsTWV0cmljKFFTdHlsZTo6UE1fRGVmYXVsdEZyYW1lV2lkdGgsICZv
cHQsICZsaW5lRWRpdCk7Cit9CisKK3N0YXRpYyBRUmVjdCBpbmZsYXRlQnV0dG9uUmVjdChjb25z
dCBRUmVjdCYgb3JpZ2luYWxSZWN0LCBRU3R5bGUqIHN0eWxlKQogewogICAgIFFTdHlsZU9wdGlv
bkJ1dHRvbiBvcHRpb247CiAgICAgb3B0aW9uLnN0YXRlIHw9IFFTdHlsZTo6U3RhdGVfU21hbGw7
CiAgICAgb3B0aW9uLnJlY3QgPSBvcmlnaW5hbFJlY3Q7CiAKLSAgICBRUmVjdCBsYXlvdXRSZWN0
ID0gUUFwcGxpY2F0aW9uOjpzdHlsZSgpLT5zdWJFbGVtZW50UmVjdChRU3R5bGU6OlNFX1B1c2hC
dXR0b25MYXlvdXRJdGVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wdGlvbiwgMCk7CisgICAgUVJlY3QgbGF5b3V0
UmVjdCA9IHN0eWxlLT5zdWJFbGVtZW50UmVjdChRU3R5bGU6OlNFX1B1c2hCdXR0b25MYXlvdXRJ
dGVtLCAmb3B0aW9uLCAwKTsKICAgICBpZiAoIWxheW91dFJlY3QuaXNOdWxsKCkpIHsKICAgICAg
ICAgaW50IHBhZGRpbmdMZWZ0ID0gbGF5b3V0UmVjdC5sZWZ0KCkgLSBvcmlnaW5hbFJlY3QubGVm
dCgpOwogICAgICAgICBpbnQgcGFkZGluZ1JpZ2h0ID0gb3JpZ2luYWxSZWN0LnJpZ2h0KCkgLSBs
YXlvdXRSZWN0LnJpZ2h0KCk7CkBAIC0yMTcsMjQgKzIzMiwyMSBAQCBzdGF0aWMgUVJlY3QgaW5m
bGF0ZUJ1dHRvblJlY3QoY29uc3QgUVJlY3QmIG9yaWdpbmFsUmVjdCkKICAgICB9CiB9CiAKLXZv
aWQgUmVuZGVyVGhlbWVRdDo6YWRqdXN0UmVwYWludFJlY3QoY29uc3QgUmVuZGVyT2JqZWN0KiBv
LCBJbnRSZWN0JiByKQordm9pZCBSZW5kZXJUaGVtZVF0OjphZGp1c3RSZXBhaW50UmVjdChjb25z
dCBSZW5kZXJPYmplY3QqIG8sIEludFJlY3QmIHJlY3QpCiB7CiAgICAgc3dpdGNoIChvLT5zdHls
ZSgpLT5hcHBlYXJhbmNlKCkpIHsKLSAgICBjYXNlIENoZWNrYm94UGFydDogeworICAgIGNhc2Ug
Q2hlY2tib3hQYXJ0OgogICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBSYWRpb1BhcnQ6
IHsKKyAgICBjYXNlIFJhZGlvUGFydDoKICAgICAgICAgYnJlYWs7Ci0gICAgfQogICAgIGNhc2Ug
UHVzaEJ1dHRvblBhcnQ6CiAgICAgY2FzZSBCdXR0b25QYXJ0OiB7Ci0gICAgICAgIFFSZWN0IGlu
ZmxhdGVkUmVjdCA9IGluZmxhdGVCdXR0b25SZWN0KHIpOwotICAgICAgICByID0gSW50UmVjdChp
bmZsYXRlZFJlY3QueCgpLCBpbmZsYXRlZFJlY3QueSgpLCBpbmZsYXRlZFJlY3Qud2lkdGgoKSwg
aW5mbGF0ZWRSZWN0LmhlaWdodCgpKTsKKyAgICAgICAgUVJlY3QgaW5mbGF0ZWRSZWN0ID0gaW5m
bGF0ZUJ1dHRvblJlY3QocmVjdCwgcVN0eWxlKCkpOworICAgICAgICByZWN0ID0gSW50UmVjdChp
bmZsYXRlZFJlY3QueCgpLCBpbmZsYXRlZFJlY3QueSgpLCBpbmZsYXRlZFJlY3Qud2lkdGgoKSwg
aW5mbGF0ZWRSZWN0LmhlaWdodCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2Ug
TWVudWxpc3RQYXJ0OiB7CisgICAgY2FzZSBNZW51bGlzdFBhcnQ6CiAgICAgICAgIGJyZWFrOwot
ICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yNDQsOCArMjU2
LDggQEAgYm9vbCBSZW5kZXJUaGVtZVF0Ojppc0NvbnRyb2xTdHlsZWQoY29uc3QgUmVuZGVyU3R5
bGUqIHN0eWxlLCBjb25zdCBCb3JkZXJEYXRhJgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEZpbGxMYXllciYgYmFja2dyb3VuZCwgY29uc3QgQ29sb3ImIGJhY2tn
cm91bmRDb2xvcikgY29uc3QKIHsKICAgICBpZiAoc3R5bGUtPmFwcGVhcmFuY2UoKSA9PSBUZXh0
RmllbGRQYXJ0Ci0gICAgICAgICAgICB8fCBzdHlsZS0+YXBwZWFyYW5jZSgpID09IFRleHRBcmVh
UGFydAotICAgICAgICAgICAgfHwgc3R5bGUtPmFwcGVhcmFuY2UoKSA9PSBMaXN0Ym94UGFydCkg
eworICAgICAgICB8fCBzdHlsZS0+YXBwZWFyYW5jZSgpID09IFRleHRBcmVhUGFydAorICAgICAg
ICB8fCBzdHlsZS0+YXBwZWFyYW5jZSgpID09IExpc3Rib3hQYXJ0KSB7CiAgICAgICAgIHJldHVy
biBzdHlsZS0+Ym9yZGVyKCkgIT0gYm9yZGVyOwogICAgIH0KIApAQCAtMjk1LDIyICszMDcsMjAg
QEAgdm9pZCBSZW5kZXJUaGVtZVF0Ojpjb21wdXRlU2l6ZUJhc2VkT25TdHlsZShSZW5kZXJTdHls
ZSogcmVuZGVyU3R5bGUpIGNvbnN0CiAKICAgICBRU2l6ZSBzaXplKDAsIDApOwogICAgIGNvbnN0
IFFGb250TWV0cmljcyBmbShyZW5kZXJTdHlsZS0+Zm9udCgpLmZvbnQoKSk7Ci0gICAgUVN0eWxl
KiBhcHBsaWNhdGlvblN0eWxlID0gUUFwcGxpY2F0aW9uOjpzdHlsZSgpOworICAgIFFTdHlsZSog
c3R5bGUgPSBxU3R5bGUoKTsKIAogICAgIHN3aXRjaCAocmVuZGVyU3R5bGUtPmFwcGVhcmFuY2Uo
KSkgewogICAgIGNhc2UgQ2hlY2tib3hQYXJ0OiB7CiAgICAgICAgIFFTdHlsZU9wdGlvbiBzdHls
ZU9wdGlvbjsKICAgICAgICAgc3R5bGVPcHRpb24uc3RhdGUgfD0gUVN0eWxlOjpTdGF0ZV9TbWFs
bDsKLSAgICAgICAgaW50IGNoZWNrQm94V2lkdGggPSBhcHBsaWNhdGlvblN0eWxlLT5waXhlbE1l
dHJpYyhRU3R5bGU6OlBNX0luZGljYXRvcldpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdHlsZU9wdGlvbik7CisgICAgICAg
IGludCBjaGVja0JveFdpZHRoID0gc3R5bGUtPnBpeGVsTWV0cmljKFFTdHlsZTo6UE1fSW5kaWNh
dG9yV2lkdGgsICZzdHlsZU9wdGlvbik7CiAgICAgICAgIHNpemUgPSBRU2l6ZShjaGVja0JveFdp
ZHRoLCBjaGVja0JveFdpZHRoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgUmFk
aW9QYXJ0OiB7CiAgICAgICAgIFFTdHlsZU9wdGlvbiBzdHlsZU9wdGlvbjsKICAgICAgICAgc3R5
bGVPcHRpb24uc3RhdGUgfD0gUVN0eWxlOjpTdGF0ZV9TbWFsbDsKLSAgICAgICAgaW50IHJhZGlv
V2lkdGggPSBhcHBsaWNhdGlvblN0eWxlLT5waXhlbE1ldHJpYyhRU3R5bGU6OlBNX0V4Y2x1c2l2
ZUluZGljYXRvcldpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZzdHlsZU9wdGlvbik7CisgICAgICAgIGludCByYWRpb1dpZHRoID0g
c3R5bGUtPnBpeGVsTWV0cmljKFFTdHlsZTo6UE1fRXhjbHVzaXZlSW5kaWNhdG9yV2lkdGgsICZz
dHlsZU9wdGlvbik7CiAgICAgICAgIHNpemUgPSBRU2l6ZShyYWRpb1dpZHRoLCByYWRpb1dpZHRo
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMzE5LDE2ICszMjksMTQgQEAgdm9pZCBSZW5k
ZXJUaGVtZVF0Ojpjb21wdXRlU2l6ZUJhc2VkT25TdHlsZShSZW5kZXJTdHlsZSogcmVuZGVyU3R5
bGUpIGNvbnN0CiAgICAgICAgIFFTdHlsZU9wdGlvbkJ1dHRvbiBzdHlsZU9wdGlvbjsKICAgICAg
ICAgc3R5bGVPcHRpb24uc3RhdGUgfD0gUVN0eWxlOjpTdGF0ZV9TbWFsbDsKICAgICAgICAgUVNp
emUgY29udGVudFNpemUgPSBmbS5zaXplKFF0OjpUZXh0U2hvd01uZW1vbmljLCBRU3RyaW5nOjpm
cm9tTGF0aW4xKCJYIikpOwotICAgICAgICBRU2l6ZSBwdXNoQnV0dG9uU2l6ZSA9IGFwcGxpY2F0
aW9uU3R5bGUtPnNpemVGcm9tQ29udGVudHMoUVN0eWxlOjpDVF9QdXNoQnV0dG9uLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJnN0eWxlT3B0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudFNpemUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKKyAg
ICAgICAgUVNpemUgcHVzaEJ1dHRvblNpemUgPSBzdHlsZS0+c2l6ZUZyb21Db250ZW50cyhRU3R5
bGU6OkNUX1B1c2hCdXR0b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJnN0eWxlT3B0aW9uLCBjb250ZW50U2l6ZSwgMCk7CiAgICAgICAg
IHN0eWxlT3B0aW9uLnJlY3QgPSBRUmVjdCgwLCAwLCBwdXNoQnV0dG9uU2l6ZS53aWR0aCgpLCBw
dXNoQnV0dG9uU2l6ZS5oZWlnaHQoKSk7Ci0gICAgICAgIFFSZWN0IGxheW91dFJlY3QgPSBhcHBs
aWNhdGlvblN0eWxlLT5zdWJFbGVtZW50UmVjdChRU3R5bGU6OlNFX1B1c2hCdXR0b25MYXlvdXRJ
dGVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJnN0eWxlT3B0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7Ci0gICAgICAgIC8vIElm
IHRoZSBzdHlsZSBzdXBwb3J0cyBsYXlvdXQgcmVjdHMgd2UgdXNlIHRoYXQsIGFuZAotICAgICAg
ICAvLyBjb21wZW5zYXRlIGFjY29yZGluZ2x5IGluIHBhaW50QnV0dG9uKCkgYmVsb3cuCisgICAg
ICAgIFFSZWN0IGxheW91dFJlY3QgPSBzdHlsZS0+c3ViRWxlbWVudFJlY3QoUVN0eWxlOjpTRV9Q
dXNoQnV0dG9uTGF5b3V0SXRlbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmc3R5bGVPcHRpb24sIDApOworCisgICAgICAgIC8vIElmIHRoZSBzdHls
ZSBzdXBwb3J0cyBsYXlvdXQgcmVjdHMgd2UgdXNlIHRoYXQsIGFuZCAgY29tcGVuc2F0ZSBhY2Nv
cmRpbmdseQorICAgICAgICAvLyBpbiBwYWludEJ1dHRvbigpIGJlbG93LgogICAgICAgICBpZiAo
IWxheW91dFJlY3QuaXNOdWxsKCkpIHsKICAgICAgICAgICAgIHNpemUuc2V0SGVpZ2h0KGxheW91
dFJlY3QuaGVpZ2h0KCkpOwogICAgICAgICB9IGVsc2UgewpAQCAtMzQxLDEwICszNDksOCBAQCB2
b2lkIFJlbmRlclRoZW1lUXQ6OmNvbXB1dGVTaXplQmFzZWRPblN0eWxlKFJlbmRlclN0eWxlKiBy
ZW5kZXJTdHlsZSkgY29uc3QKICAgICAgICAgUVN0eWxlT3B0aW9uQ29tYm9Cb3ggc3R5bGVPcHRp
b247CiAgICAgICAgIHN0eWxlT3B0aW9uLnN0YXRlIHw9IFFTdHlsZTo6U3RhdGVfU21hbGw7CiAg
ICAgICAgIGludCBjb250ZW50SGVpZ2h0ID0gcU1heChmbS5saW5lU3BhY2luZygpLCAxNCkgKyAy
OwotICAgICAgICBRU2l6ZSBtZW51TGlzdFNpemUgPSBhcHBsaWNhdGlvblN0eWxlLT5zaXplRnJv
bUNvbnRlbnRzKFFTdHlsZTo6Q1RfQ29tYm9Cb3gsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdHlsZU9wdGlvbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVNpemUoMCwgY29u
dGVudEhlaWdodCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDApOworICAgICAgICBRU2l6ZSBtZW51TGlzdFNpemUgPSBzdHlsZS0+c2l6
ZUZyb21Db250ZW50cyhRU3R5bGU6OkNUX0NvbWJvQm94LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3R5bGVPcHRpb24sIFFTaXplKDAsIGNv
bnRlbnRIZWlnaHQpLCAwKTsKICAgICAgICAgc2l6ZS5zZXRIZWlnaHQobWVudUxpc3RTaXplLmhl
aWdodCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMzU0LDExICszNjAsMTEgQEAgdm9p
ZCBSZW5kZXJUaGVtZVF0Ojpjb21wdXRlU2l6ZUJhc2VkT25TdHlsZShSZW5kZXJTdHlsZSogcmVu
ZGVyU3R5bGUpIGNvbnN0CiAgICAgICAgIGludCBoID0gcU1heChmbS5saW5lU3BhY2luZygpLCAx
NCkgKyAyKnZlcnRpY2FsTWFyZ2luOwogICAgICAgICBpbnQgdyA9IGZtLndpZHRoKFFMYXRpbjFD
aGFyKCd4JykpICogMTcgKyAyKmhvcml6b250YWxNYXJnaW47CiAgICAgICAgIFFTdHlsZU9wdGlv
bkZyYW1lVjIgb3B0OwotICAgICAgICBvcHQubGluZVdpZHRoID0gbV9mcmFtZUxpbmVXaWR0aDsK
LSAgICAgICAgUVNpemUgc3ogPSBhcHBsaWNhdGlvblN0eWxlLT5zaXplRnJvbUNvbnRlbnRzKFFT
dHlsZTo6Q1RfTGluZUVkaXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmb3B0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUVNpemUodywgaCkuZXhwYW5kZWRUbyhRQXBwbGljYXRpb246
Omdsb2JhbFN0cnV0KCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMCk7CisgICAgICAgIG9wdC5saW5lV2lkdGggPSBmaW5kRnJhbWVMaW5l
V2lkdGgoc3R5bGUpOworICAgICAgICBRU2l6ZSBzeiA9IHN0eWxlLT5zaXplRnJvbUNvbnRlbnRz
KFFTdHlsZTo6Q1RfTGluZUVkaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJm9wdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBRU2l6ZSh3LCBoKS5leHBhbmRlZFRvKFFBcHBsaWNhdGlvbjo6Z2xvYmFsU3RydXQoKSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CiAgICAgICAgIHNp
emUuc2V0SGVpZ2h0KHN6LmhlaWdodCgpKTsKIAogICAgICAgICByZW5kZXJTdHlsZS0+c2V0UGFk
ZGluZ0xlZnQoTGVuZ3RoKG9wdC5saW5lV2lkdGgsIEZpeGVkKSk7CkBAIC00NDYsMTkgKzQ1Miwx
OCBAQCB2b2lkIFJlbmRlclRoZW1lUXQ6OnNldEJ1dHRvblBhZGRpbmcoUmVuZGVyU3R5bGUqIHN0
eWxlKSBjb25zdAogICAgIHN0eWxlT3B0aW9uLnJlY3QgPSBvcmlnaW5hbFJlY3Q7CiAKICAgICAv
LyBEZWZhdWx0IHBhZGRpbmcgaXMgYmFzZWQgb24gdGhlIGJ1dHRvbiBtYXJnaW4gcGl4ZWwgbWV0
cmljCi0gICAgaW50IGJ1dHRvbk1hcmdpbiA9IFFBcHBsaWNhdGlvbjo6c3R5bGUoKS0+cGl4ZWxN
ZXRyaWMoUVN0eWxlOjpQTV9CdXR0b25NYXJnaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0eWxlT3B0aW9uLCAwKTsKKyAgICBp
bnQgYnV0dG9uTWFyZ2luID0gcVN0eWxlKCktPnBpeGVsTWV0cmljKFFTdHlsZTo6UE1fQnV0dG9u
TWFyZ2luLCAmc3R5bGVPcHRpb24sIDApOwogICAgIGludCBwYWRkaW5nTGVmdCA9IGJ1dHRvbk1h
cmdpbjsKICAgICBpbnQgcGFkZGluZ1JpZ2h0ID0gYnV0dG9uTWFyZ2luOwogICAgIGludCBwYWRk
aW5nVG9wID0gMTsKICAgICBpbnQgcGFkZGluZ0JvdHRvbSA9IDA7CiAKICAgICAvLyBUaGVuIGNo
ZWNrIGlmIHRoZSBzdHlsZSB1c2VzIGxheW91dCBtYXJnaW5zCi0gICAgUVJlY3QgbGF5b3V0UmVj
dCA9IFFBcHBsaWNhdGlvbjo6c3R5bGUoKS0+c3ViRWxlbWVudFJlY3QoUVN0eWxlOjpTRV9QdXNo
QnV0dG9uTGF5b3V0SXRlbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdHlsZU9wdGlvbiwgMCk7CisgICAgUVJlY3Qg
bGF5b3V0UmVjdCA9IHFTdHlsZSgpLT5zdWJFbGVtZW50UmVjdChRU3R5bGU6OlNFX1B1c2hCdXR0
b25MYXlvdXRJdGVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJnN0eWxlT3B0aW9uLCAwKTsKICAgICBpZiAoIWxheW91dFJlY3QuaXNOdWxsKCkpIHsK
LSAgICAgICAgUVJlY3QgY29udGVudHNSZWN0ID0gUUFwcGxpY2F0aW9uOjpzdHlsZSgpLT5zdWJF
bGVtZW50UmVjdChRU3R5bGU6OlNFX1B1c2hCdXR0b25Db250ZW50cywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdHls
ZU9wdGlvbiwgMCk7CisgICAgICAgIFFSZWN0IGNvbnRlbnRzUmVjdCA9IHFTdHlsZSgpLT5zdWJF
bGVtZW50UmVjdChRU3R5bGU6OlNFX1B1c2hCdXR0b25Db250ZW50cywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdHlsZU9wdGlvbiwgMCk7
CiAgICAgICAgIHBhZGRpbmdMZWZ0ID0gY29udGVudHNSZWN0LmxlZnQoKSAtIGxheW91dFJlY3Qu
bGVmdCgpOwogICAgICAgICBwYWRkaW5nUmlnaHQgPSBsYXlvdXRSZWN0LnJpZ2h0KCkgLSBjb250
ZW50c1JlY3QucmlnaHQoKTsKICAgICAgICAgcGFkZGluZ1RvcCA9IGNvbnRlbnRzUmVjdC50b3Ao
KSAtIGxheW91dFJlY3QudG9wKCk7CkBAIC00ODgsNyArNDkzLDcgQEAgYm9vbCBSZW5kZXJUaGVt
ZVF0OjpwYWludEJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFp
bnRJbmZvJgogCiAgICAgQ29udHJvbFBhcnQgYXBwZWFyYW5jZSA9IGFwcGx5VGhlbWUob3B0aW9u
LCBvKTsKICAgICBpZihhcHBlYXJhbmNlID09IFB1c2hCdXR0b25QYXJ0IHx8IGFwcGVhcmFuY2Ug
PT0gQnV0dG9uUGFydCkgewotICAgICAgICBvcHRpb24ucmVjdCA9IGluZmxhdGVCdXR0b25SZWN0
KG9wdGlvbi5yZWN0KTsKKyAgICAgICAgb3B0aW9uLnJlY3QgPSBpbmZsYXRlQnV0dG9uUmVjdChv
cHRpb24ucmVjdCwgcVN0eWxlKCkpOwogICAgICAgICBwLmRyYXdDb250cm9sKFFTdHlsZTo6Q0Vf
UHVzaEJ1dHRvbiwgb3B0aW9uKTsKICAgICB9IGVsc2UgaWYoYXBwZWFyYW5jZSA9PSBSYWRpb1Bh
cnQpIHsKICAgICAgICBwLmRyYXdDb250cm9sKFFTdHlsZTo6Q0VfUmFkaW9CdXR0b24sIG9wdGlv
bik7CkBAIC01MTksNyArNTI0LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVF0OjpwYWludFRleHRGaWVs
ZChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmYKICAgICAgICAg
cGFuZWwuaW5pdEZyb20ocC53aWRnZXQpOwogCiAgICAgcGFuZWwucmVjdCA9IHI7Ci0gICAgcGFu
ZWwubGluZVdpZHRoID0gbV9mcmFtZUxpbmVXaWR0aDsKKyAgICBwYW5lbC5saW5lV2lkdGggPSBm
aW5kRnJhbWVMaW5lV2lkdGgocVN0eWxlKCkpOwogICAgIHBhbmVsLnN0YXRlIHw9IFFTdHlsZTo6
U3RhdGVfU3Vua2VuOwogICAgIHBhbmVsLmZlYXR1cmVzID0gUVN0eWxlT3B0aW9uRnJhbWVWMjo6
Tm9uZTsKIApAQCAtNTcxLDcgKzU3Niw3IEBAIHZvaWQgUmVuZGVyVGhlbWVRdDo6c2V0UG9wdXBQ
YWRkaW5nKFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3QKICAgICBzdHlsZS0+c2V0UGFkZGluZ0xl
ZnQoTGVuZ3RoKHBhZGRpbmcsIEZpeGVkKSk7CiAKICAgICBRU3R5bGVPcHRpb25Db21ib0JveCBv
cHQ7Ci0gICAgaW50IHcgPSBRQXBwbGljYXRpb246OnN0eWxlKCktPnBpeGVsTWV0cmljKFFTdHls
ZTo6UE1fQnV0dG9uSWNvblNpemUsICZvcHQsIDApOworICAgIGludCB3ID0gcVN0eWxlKCktPnBp
eGVsTWV0cmljKFFTdHlsZTo6UE1fQnV0dG9uSWNvblNpemUsICZvcHQsIDApOwogICAgIHN0eWxl
LT5zZXRQYWRkaW5nUmlnaHQoTGVuZ3RoKHBhZGRpbmcgKyB3LCBGaXhlZCkpOwogCiAgICAgc3R5
bGUtPnNldFBhZGRpbmdUb3AoTGVuZ3RoKDIsIEZpeGVkKSk7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuaCBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVy
VGhlbWVRdC5oCmluZGV4IGMxZWU3MjkuLjJkYmQ5MjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVy
VGhlbWVRdC5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiBjbGFz
cyBSZW5kZXJUaGVtZVF0IDogcHVibGljIFJlbmRlclRoZW1lCiB7CiBwcml2YXRlOgotICAgIFJl
bmRlclRoZW1lUXQoKTsKKyAgICBSZW5kZXJUaGVtZVF0KFBhZ2UqIHBhZ2UpOwogICAgIHZpcnR1
YWwgflJlbmRlclRoZW1lUXQoKTsKIAogcHVibGljOgpAQCAtMTQ0LDE1ICsxNDQsMTcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHNldEJ1dHRvblBhZGRpbmcoUmVuZGVyU3R5bGUqKSBjb25zdDsKICAg
ICB2b2lkIHNldFBvcHVwUGFkZGluZyhSZW5kZXJTdHlsZSopIGNvbnN0OwogCisgICAgUVN0eWxl
KiBxU3R5bGUoKSBjb25zdDsKKyAgICBRU3R5bGUqIGZhbGxiYWNrU3R5bGUoKTsKKworICAgIFBh
Z2UqIG1fcGFnZTsKKwogI2lmZGVmIFFfV1NfTUFDCiAgICAgaW50IG1fYnV0dG9uRm9udFBpeGVs
U2l6ZTsKICNlbmRpZgogICAgIFFTdHJpbmcgbV9idXR0b25Gb250RmFtaWx5OwogCiAgICAgUVN0
eWxlKiBtX2ZhbGxiYWNrU3R5bGU7Ci0gICAgUVN0eWxlKiBmYWxsYmFja1N0eWxlKCk7Ci0KLSAg
ICBpbnQgbV9mcmFtZUxpbmVXaWR0aDsKIH07CiAKIGNsYXNzIFN0eWxlUGFpbnRlcgotLSAKMS42
LjAuNAoK
</data>
<flag name="review"
          id="16029"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31371</attachid>
            <date>2009-06-16 14:18:08 -0700</date>
            <delta_ts>2009-06-16 16:10:44 -0700</delta_ts>
            <desc>RenderTheme patch incorporating all comments (fix problem due to git rebase)</desc>
            <filename>0001-2009-06-16-Kenneth-Rohde-Christiansen-kenneth.chr.patch</filename>
            <type>text/plain</type>
            <size>43038</size>
            <attacher name="Kenneth Rohde Christiansen">kenneth</attacher>
            
              <data encoding="base64">RnJvbSBiNDNlODAxYjVmZGI0N2E5N2YzYTgwNDlkNmVjMTY3MDc0OTRlN2I3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiA8a2VubmV0aEBz
cGlzbmlnZWwub3NtdGMuaW5kdC5vcmcuYnI+CkRhdGU6IFR1ZSwgMTYgSnVuIDIwMDkgMTU6MjA6
MjcgLTAzMDAKU3ViamVjdDogW1BBVENIXSAyMDA5LTA2LTE2ICBLZW5uZXRoIFJvaGRlIENocmlz
dGlhbnNlbiAgPGtlbm5ldGguY2hyaXN0aWFuc2VuQG9wZW5ib3NzYS5vcmc+CgogICAgICAgIFJl
dmlld2VkIGJ5IERhdmUgSHlhdHQgYW5kIEFkYW0gUm9iZW4uCgogICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjI3OAogICAgICAgIFBhdGNoIHRoYXQgbWFr
ZSBXZWJDb3JlIGhhdmUgYSBSZW5kZXJUaGVtZSBwZXIgcGFnZQoKICAgICAgICBDcmVhdGUgYSBk
aWZmZXJlbnQgUmVuZGVyVGhlbWUgcGVyIHBhZ2UsIHNvIHRoYXQgUmVuZGVyVGhlbWUgaGFzCiAg
ICAgICAgYWNjZXNzIHRvIHBhZ2Ugc3BlY2lmaWMgdGhlbWluZy4gVGhpcyBpcyBuZWVkZWQgZm9y
IHRoZSBRdCBwb3J0LCBhcyBRdAogICAgICAgIHN1cHBvcnRzIHNldHRpbmcgdGhlIHRoZW1lIChz
dHlsZSkgcGVyIHdpZGdldC4KCiAgICAgICAgVGhpcyBjaGFuZ2Ugd2FzIHN1Z2dlc3RlZCBhbmQg
ZGlzY3Vzc2VkIHdpdGggRGF2ZSBIeWF0dC4KCiAgICAgICAgTW9yZSBkZXRhaWxlZDoKCiAgICAg
ICAgMSkgQ3JlYXRlIGEgdGhlbWUgcGVyIHBhZ2Ugb3Igb25lIGdsb2JhbCBvbmUsIGRlcGVuZGlu
ZyBvbiB0aGUgbmVlZHMKICAgICAgICAgICBvZiB0aGUgcGxhdGZvcm0uCiAgICAgICAgMikgQWRk
IGFuIGFjY2Vzc2VyIHRvIHRoZSB0aGVtZSBmcm9tIFJlbmRlck9iamVjdC4KICAgICAgICAzKSBD
aGFuZ2UgYWxsIHVzZXMgb2YgdGhlIHRoZW1pbmcgdG8gYWNjZXNzIHRoZSB0aGVtZSB0aHJvdWdo
CiAgICAgICAgICAgUmVuZGVyT2JqZWN0LCB1c2luZyB0aGUgZ2xvYmFsIGRlZmF1bHQgdGhlbWUg
YXMgZmFsbGJhY2ssIHdoZW4gdGhlCiAgICAgICAgICAgZG9jdW1lbnQgb2YgUmVuZGVyT2JqZWN0
IGhhcyBubyBwYWdlLgogICAgICAgICAgIFdoZW4gd2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gYSBS
ZW5kZXJPYmplY3QsIHVzZSB0aGUgZGVmYXVsdCB0aGVtZS4KICAgICAgICA0KSBNb2RpZnkgYWxs
IFJlbmRlclRoZW1lIHBsYXRmb3JtIGltcGxlbWVudGF0aW9ucyB0byB3b3JrIHdpdGggdGhlCiAg
ICAgICAgICAgYWJvdmUgY2hhbmdlcywgc3RpbGwgY3JlYXRpbmcgb25seSBvbmUgZ2xvYmFsIHRo
ZW1lLgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgIDEwNCArKysrKysrKysrKysrKysrKysrKwogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAgICAgfCAgICAyICstCiBXZWJDb3JlL2Nzcy9DU1NTdHls
ZVNlbGVjdG9yLmNwcCAgICAgICAgICAgICAgICAgICB8ICAgMTIgKy0KIFdlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuY3BwICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCArLQogV2ViQ29yZS9l
ZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwICAgICAgICAgICAgfCAgICAzICstCiBXZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgICAgICAgICAgICB8ICAgIDQgKy0K
IFdlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCAgICAgICAgICAgICAgICAgIHwgICAg
NiArLQogV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgICAyICstCiBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgIDYgKy0KIFdlYkNvcmUvcGFnZS9QYWdlLmNwcCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAgMiArCiBXZWJDb3JlL3BhZ2UvUGFnZS5oICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgIDcgKy0KIFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBN
ZW51Q2hyb21pdW0uY3BwICAgIHwgICAgNCArLQogV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVy
VGhlbWVHdGsuY3BwICAgICAgICAgICAgfCAgIDMwICsrKystLS0KIFdlYkNvcmUvcGxhdGZvcm0v
Z3RrL1JlbmRlclRoZW1lR3RrLmggICAgICAgICAgICAgIHwgICAgNiArLQogV2ViQ29yZS9wbGF0
Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNwcCAgICAgICAgICAgICAgfCAgIDE0ICsrLQogV2ViQ29y
ZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmggICAgICAgICAgICAgICAgfCAgICA1ICstCiBX
ZWJDb3JlL3BsYXRmb3JtL3d4L1JlbmRlclRoZW1lV3guY3BwICAgICAgICAgICAgICB8ICAgMTcg
KysrLQogV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAgICAgICAgICAgICAgICAg
fCAgICA1ICstCiBXZWJDb3JlL3JlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgICAg
ICAgICB8ICAgIDIgKy0KIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgICAgICAg
ICAgICAgICAgIHwgICAgOCArKy0KIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oICAg
ICAgICAgICAgICAgICAgIHwgICAgMyArCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5j
cHAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lLmggICAgICAgICAgICAgICAgICAgIHwgICAyNiArKysrLS0KIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5jcHAgICAgIHwgICAxMiArKy0KIFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5oICAgICAgIHwgICAgNiArLQogV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bU1hYy5oICAgICAgICAgfCAgICA2ICstCiBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTWFjLm1tICAgICAgICB8ICAgMTIg
KystCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtV2luLmNwcCAgICAgICB8
ICAgMTMgKystCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtV2luLmggICAg
ICAgICB8ICAgIDUgKy0KIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmggICAgICAg
ICAgICAgICAgIHwgICAgNSArLQogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0g
ICAgICAgICAgICAgICAgfCAgICA2ICstCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNh
ZmFyaS5jcHAgICAgICAgICAgICB8ICAgMTYgKystCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZVNhZmFyaS5oICAgICAgICAgICAgICB8ICAgIDYgKy0KIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lV2luLmNwcCAgICAgICAgICAgICAgIHwgICAxMiArKy0KIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lV2luLmggICAgICAgICAgICAgICAgIHwgICAgNiArLQogMzUgZmlsZXMg
Y2hhbmdlZCwgMjk1IGluc2VydGlvbnMoKyksIDg0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNiMmRiNy4uZjc3
MDE5OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMDcgQEAKKzIwMDktMDYtMTYgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFu
c2VuICA8a2VubmV0aC5jaHJpc3RpYW5zZW5Ab3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBEYXZlIEh5YXR0IGFuZCBBZGFtIFJvYmVuLgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjI3OAorICAgICAgICBQYXRjaCB0aGF0IG1h
a2UgV2ViQ29yZSBoYXZlIGEgUmVuZGVyVGhlbWUgcGVyIHBhZ2UKKworCisgICAgICAgIENyZWF0
ZSBhIGRpZmZlcmVudCBSZW5kZXJUaGVtZSBwZXIgcGFnZSwgc28gdGhhdCBSZW5kZXJUaGVtZSBo
YXMKKyAgICAgICAgYWNjZXNzIHRvIHBhZ2Ugc3BlY2lmaWMgdGhlbWluZy4gVGhpcyBpcyBuZWVk
ZWQgZm9yIHRoZSBRdCBwb3J0LCBhcyBRdAorICAgICAgICBzdXBwb3J0cyBzZXR0aW5nIHRoZSB0
aGVtZSAoc3R5bGUpIHBlciB3aWRnZXQuCisKKyAgICAgICAgVGhpcyBjaGFuZ2Ugd2FzIHN1Z2dl
c3RlZCBhbmQgZGlzY3Vzc2VkIHdpdGggRGF2ZSBIeWF0dC4KKworICAgICAgICBNb3JlIGRldGFp
bGVkOgorCisgICAgICAgIDEpIENyZWF0ZSBhIHRoZW1lIHBlciBwYWdlIG9yIG9uZSBnbG9iYWwg
b25lLCBkZXBlbmRpbmcgb24gdGhlIG5lZWRzCisgICAgICAgICAgIG9mIHRoZSBwbGF0Zm9ybS4K
KyAgICAgICAgMikgQWRkIGFuIGFjY2Vzc2VyIHRvIHRoZSB0aGVtZSBmcm9tIFJlbmRlck9iamVj
dC4KKyAgICAgICAgMykgQ2hhbmdlIGFsbCB1c2VzIG9mIHRoZSB0aGVtaW5nIHRvIGFjY2VzcyB0
aGUgdGhlbWUgdGhyb3VnaAorICAgICAgICAgICBSZW5kZXJPYmplY3QsIHVzaW5nIHRoZSBnbG9i
YWwgZGVmYXVsdCB0aGVtZSBhcyBmYWxsYmFjaywgd2hlbiB0aGUKKyAgICAgICAgICAgZG9jdW1l
bnQgb2YgUmVuZGVyT2JqZWN0IGhhcyBubyBwYWdlLgorICAgICAgICAgICBXaGVuIHdlIGRvbid0
IGhhdmUgYWNjZXNzIHRvIGEgUmVuZGVyT2JqZWN0LCB1c2UgdGhlIGRlZmF1bHQgdGhlbWUuCisg
ICAgICAgIDQpIE1vZGlmeSBhbGwgUmVuZGVyVGhlbWUgcGxhdGZvcm0gaW1wbGVtZW50YXRpb25z
IHRvIHdvcmsgd2l0aCB0aGUKKyAgICAgICAgICAgYWJvdmUgY2hhbmdlcywgc3RpbGwgY3JlYXRp
bmcgb25seSBvbmUgZ2xvYmFsIHRoZW1lLgorCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6Ym91bmRpbmdCb3hSZWN0KToKKyAgICAgICAgKiBjc3MvQ1NTU3R5
bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2FkRnVsbERlZmF1bHRTdHlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZvckVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YWRqdXN0UmVuZGVyU3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eSk6CisgICAg
ICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVy
Tm9kZTo6c2V0QWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnNldEhv
dmVyZWQpOgorICAgICAgICAqIGVkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTZWxlY3Rpb25Db250cm9sbGVyOjpmb2N1c2VkT3JBY3RpdmVTdGF0ZUNo
YW5nZWQpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0
ZSk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNldENoZWNrZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TElucHV0RWxlbWVudDo6c2V0SW5kZXRlcm1pbmF0ZSk6CisgICAgICAgICogcGFnZS9GcmFtZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c2VsZWN0aW9uTGF5b3V0Q2hhbmdlZCk6Cisg
ICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
Ojp1cGRhdGVDb250cm9sVGludHMpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2U6OnRoZW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1
cE1lbnVDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cExpc3RCb3g6OnBhaW50
Um93KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZTo6dGhlbWVGb3JQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
R3RrOjpSZW5kZXJUaGVtZUd0ayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6
flJlbmRlclRoZW1lR3RrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpndGtF
bnRyeSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6Z3RrVHJlZVZpZXcpOgor
ICAgICAgICAqIHBsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5oOgorICAgICAgICAqIHBsYXRm
b3JtL3F0L1JlbmRlclRoZW1lUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVR
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2Up
OgorICAgICAgICAqIHBsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS93eC9SZW5kZXJUaGVtZVd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
V3g6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6dGhlbWVGb3JQYWdl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludFRleHRNYXRjaE1hcmtlcik6CisgICAgICAgICogcmVu
ZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbElucHV0RWxlbWVudDo6aGl0VGVzdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnRoZW1lKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRoZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjphZGp1c3RTdHls
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
VGhlbWVDaHJvbWl1bUxpbnV4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hy
b21pdW1MaW51eDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjp0aGVt
ZUZvclBhZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXgu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bU1hYy5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVDaHJvbWl1bU1hYzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lOjp0aGVtZUZvclBhZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVt
ZUNocm9taXVtV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1X
aW46OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6dGhlbWVGb3JQYWdl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjp0aGVtZUZvclBh
Z2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
aGVtZVNhZmFyaS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUaGVtZVdpbi5oOgorCiAyMDA5LTA2LTAzICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAg
PGtlbm5ldGguY2hyaXN0aWFuc2VuQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgU2ltb24gSGF1c21hbm4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggOGM1MjJhMS4uMTc0MGI0YiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisr
KyBiL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApA
QCAtMTAwOCw3ICsxMDA4LDcgQEAgSW50UmVjdCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpi
b3VuZGluZ0JveFJlY3QoKSBjb25zdAogICAgICAgICBJbnRSZWN0IHIgPSBxdWFkc1tpXS5lbmNs
b3NpbmdCb3VuZGluZ0JveCgpOwogICAgICAgICBpZiAoIXIuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICBpZiAob2JqLT5zdHlsZSgpLT5oYXNBcHBlYXJhbmNlKCkpCi0gICAgICAgICAgICAgICAg
dGhlbWUoKS0+YWRqdXN0UmVwYWludFJlY3Qob2JqLCByKTsKKyAgICAgICAgICAgICAgICBvYmot
PnRoZW1lKCktPmFkanVzdFJlcGFpbnRSZWN0KG9iaiwgcik7CiAgICAgICAgICAgICByZXN1bHQu
dW5pdGUocik7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NT
dHlsZVNlbGVjdG9yLmNwcCBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4
IGM4ZmUyMzQuLjc2ZDBiZDUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0
b3IuY3BwCisrKyBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC01MTYsMTMg
KzUxNiwxMyBAQCBzdGF0aWMgdm9pZCBsb2FkRnVsbERlZmF1bHRTdHlsZSgpCiAgICAgfQogCiAg
ICAgLy8gU3RyaWN0LW1vZGUgcnVsZXMuCi0gICAgU3RyaW5nIGRlZmF1bHRSdWxlcyA9IFN0cmlu
ZyhodG1sNFVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihodG1sNFVzZXJBZ2VudFN0eWxlU2hl
ZXQpKSArIHRoZW1lKCktPmV4dHJhRGVmYXVsdFN0eWxlU2hlZXQoKTsKKyAgICBTdHJpbmcgZGVm
YXVsdFJ1bGVzID0gU3RyaW5nKGh0bWw0VXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKGh0bWw0
VXNlckFnZW50U3R5bGVTaGVldCkpICsgUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5leHRy
YURlZmF1bHRTdHlsZVNoZWV0KCk7CiAgICAgQ1NTU3R5bGVTaGVldCogZGVmYXVsdFNoZWV0ID0g
cGFyc2VVQVNoZWV0KGRlZmF1bHRSdWxlcyk7CiAgICAgZGVmYXVsdFN0eWxlLT5hZGRSdWxlc0Zy
b21TaGVldChkZWZhdWx0U2hlZXQsIHNjcmVlbkV2YWwoKSk7CiAgICAgZGVmYXVsdFByaW50U3R5
bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KGRlZmF1bHRTaGVldCwgcHJpbnRFdmFsKCkpOwogCiAgICAg
Ly8gUXVpcmtzLW1vZGUgcnVsZXMuCi0gICAgU3RyaW5nIHF1aXJrc1J1bGVzID0gU3RyaW5nKHF1
aXJrc1VzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihxdWlya3NVc2VyQWdlbnRTdHlsZVNoZWV0
KSkgKyB0aGVtZSgpLT5leHRyYVF1aXJrc1N0eWxlU2hlZXQoKTsKKyAgICBTdHJpbmcgcXVpcmtz
UnVsZXMgPSBTdHJpbmcocXVpcmtzVXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKHF1aXJrc1Vz
ZXJBZ2VudFN0eWxlU2hlZXQpKSArIFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+ZXh0cmFR
dWlya3NTdHlsZVNoZWV0KCk7CiAgICAgQ1NTU3R5bGVTaGVldCogcXVpcmtzU2hlZXQgPSBwYXJz
ZVVBU2hlZXQocXVpcmtzUnVsZXMpOwogICAgIGRlZmF1bHRRdWlya3NTdHlsZS0+YWRkUnVsZXNG
cm9tU2hlZXQocXVpcmtzU2hlZXQsIHNjcmVlbkV2YWwoKSk7CiB9CkBAIC0xMTI4LDcgKzExMjgs
NyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZvckVs
ZW1lbnQoRWxlbWVudCogZSwgUmVuZGVyU3R5bAogICAgIHN0YXRpYyBib29sIGxvYWRlZE1lZGlh
U3R5bGVTaGVldDsKICAgICBpZiAoIWxvYWRlZE1lZGlhU3R5bGVTaGVldCAmJiAoZS0+aGFzVGFn
TmFtZSh2aWRlb1RhZykgfHwgZS0+aGFzVGFnTmFtZShhdWRpb1RhZykpKSB7CiAgICAgICAgIGxv
YWRlZE1lZGlhU3R5bGVTaGVldCA9IHRydWU7Ci0gICAgICAgIFN0cmluZyBtZWRpYVJ1bGVzID0g
U3RyaW5nKG1lZGlhQ29udHJvbHNVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YobWVkaWFDb250
cm9sc1VzZXJBZ2VudFN0eWxlU2hlZXQpKSArIHRoZW1lKCktPmV4dHJhTWVkaWFDb250cm9sc1N0
eWxlU2hlZXQoKTsKKyAgICAgICAgU3RyaW5nIG1lZGlhUnVsZXMgPSBTdHJpbmcobWVkaWFDb250
cm9sc1VzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihtZWRpYUNvbnRyb2xzVXNlckFnZW50U3R5
bGVTaGVldCkpICsgUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5leHRyYU1lZGlhQ29udHJv
bHNTdHlsZVNoZWV0KCk7CiAgICAgICAgIENTU1N0eWxlU2hlZXQqIG1lZGlhQ29udHJvbHNTaGVl
dCA9IHBhcnNlVUFTaGVldChtZWRpYVJ1bGVzKTsKICAgICAgICAgZGVmYXVsdFN0eWxlLT5hZGRS
dWxlc0Zyb21TaGVldChtZWRpYUNvbnRyb2xzU2hlZXQsIHNjcmVlbkV2YWwoKSk7CiAgICAgICAg
IGRlZmF1bHRQcmludFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChtZWRpYUNvbnRyb2xzU2hlZXQs
IHByaW50RXZhbCgpKTsKQEAgLTE1NzksNyArMTU3OSw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rv
cjo6YWRqdXN0UmVuZGVyU3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50ICplKQogCiAg
ICAgLy8gTGV0IHRoZSB0aGVtZSBhbHNvIGhhdmUgYSBjcmFjayBhdCBhZGp1c3RpbmcgdGhlIHN0
eWxlLgogICAgIGlmIChzdHlsZS0+aGFzQXBwZWFyYW5jZSgpKQotICAgICAgICB0aGVtZSgpLT5h
ZGp1c3RTdHlsZSh0aGlzLCBzdHlsZSwgZSwgbV9oYXNVQUFwcGVhcmFuY2UsIG1fYm9yZGVyRGF0
YSwgbV9iYWNrZ3JvdW5kRGF0YSwgbV9iYWNrZ3JvdW5kQ29sb3IpOworICAgICAgICBSZW5kZXJU
aGVtZTo6ZGVmYXVsdFRoZW1lKCktPmFkanVzdFN0eWxlKHRoaXMsIHN0eWxlLCBlLCBtX2hhc1VB
QXBwZWFyYW5jZSwgbV9ib3JkZXJEYXRhLCBtX2JhY2tncm91bmREYXRhLCBtX2JhY2tncm91bmRD
b2xvcik7CiAKICNpZiBFTkFCTEUoU1ZHKQogICAgIGlmIChlICYmIGUtPmlzU1ZHRWxlbWVudCgp
KSB7CkBAIC00Mzc2LDcgKzQzNzYsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJv
cGVydHkoaW50IGlkLCBDU1NWYWx1ZSAqdmFsdWUpCiAgICAgICAgICAgICBtX2xpbmVIZWlnaHRW
YWx1ZSA9IDA7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250
RGVzY3JpcHRpb247Ci0gICAgICAgICAgICB0aGVtZSgpLT5zeXN0ZW1Gb250KHByaW1pdGl2ZVZh
bHVlLT5nZXRJZGVudCgpLCBmb250RGVzY3JpcHRpb24pOworICAgICAgICAgICAgUmVuZGVyVGhl
bWU6OmRlZmF1bHRUaGVtZSgpLT5zeXN0ZW1Gb250KHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgp
LCBmb250RGVzY3JpcHRpb24pOwogIAogICAgICAgICAgICAgLy8gRG91YmxlLWNoZWNrIGFuZCBz
ZWUgaWYgdGhlIHRoZW1lIGRpZCBhbnl0aGluZy4gIElmIG5vdCwgZG9uJ3QgYm90aGVyIHVwZGF0
aW5nIHRoZSBmb250LgogICAgICAgICAgICAgaWYgKGZvbnREZXNjcmlwdGlvbi5pc0Fic29sdXRl
U2l6ZSgpKSB7CkBAIC01ODExLDcgKzU4MTEsNyBAQCBzdGF0aWMgQ29sb3IgY29sb3JGb3JDU1NW
YWx1ZShpbnQgY3NzVmFsdWVJZCkKICAgICAgICAgaWYgKGNvbC0+Y3NzVmFsdWVJZCA9PSBjc3NW
YWx1ZUlkKQogICAgICAgICAgICAgcmV0dXJuIGNvbC0+Y29sb3I7CiAgICAgfQotICAgIHJldHVy
biB0aGVtZSgpLT5zeXN0ZW1Db2xvcihjc3NWYWx1ZUlkKTsKKyAgICByZXR1cm4gUmVuZGVyVGhl
bWU6OmRlZmF1bHRUaGVtZSgpLT5zeXN0ZW1Db2xvcihjc3NWYWx1ZUlkKTsKIH0KIAogQ29sb3Ig
Q1NTU3R5bGVTZWxlY3Rvcjo6Z2V0Q29sb3JGcm9tUHJpbWl0aXZlVmFsdWUoQ1NTUHJpbWl0aXZl
VmFsdWUqIHByaW1pdGl2ZVZhbHVlKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZS5jcHAgYi9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAppbmRleCAyNTczOTA4Li4y
MGNjN2EzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtNzk4LDcgKzc5OCw3IEBAIHZvaWQgQ29u
dGFpbmVyTm9kZTo6c2V0QWN0aXZlKGJvb2wgZG93biwgYm9vbCBwYXVzZSkKICAgICAgICAgaWYg
KHJlYWN0c1RvUHJlc3MpCiAgICAgICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAg
ICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCktPmhhc0FwcGVhcmFuY2Uo
KSkgewotICAgICAgICAgICAgaWYgKHRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBQ
cmVzc2VkU3RhdGUpKQorICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCktPnRoZW1lKCktPnN0YXRl
Q2hhbmdlZChyZW5kZXJlcigpLCBQcmVzc2VkU3RhdGUpKQogICAgICAgICAgICAgICAgIHJlYWN0
c1RvUHJlc3MgPSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIGlmIChyZWFjdHNUb1ByZXNzICYm
IHBhdXNlKSB7CkBAIC04NDAsNyArODQwLDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpzZXRIb3Zl
cmVkKGJvb2wgb3ZlcikKICAgICAgICAgaWYgKHJlbmRlcmVyKCktPnN0eWxlKCktPmFmZmVjdGVk
QnlIb3ZlclJ1bGVzKCkpCiAgICAgICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAg
ICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCktPmhhc0FwcGVhcmFuY2Uo
KSkKLSAgICAgICAgICAgIHRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBIb3ZlclN0
YXRlKTsKKyAgICAgICAgICAgIHJlbmRlcmVyKCktPnRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5k
ZXJlcigpLCBIb3ZlclN0YXRlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRp
dGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25D
b250cm9sbGVyLmNwcAppbmRleCAxZDM2ZjUxLi43NmM3ODI1IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL1Nl
bGVjdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC00Niw3ICs0Niw2IEBACiAjaW5jbHVkZSAiSGl0VGVz
dFJlc3VsdC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSYW5nZS5oIgotI2luY2x1
ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlRl
eHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlR5cGluZ0NvbW1hbmQuaCIKQEAgLTEyNjgsNyArMTI2
Nyw3IEBAIHZvaWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6Zm9jdXNlZE9yQWN0aXZlU3RhdGVDaGFu
Z2VkKCkKICAgICAgICAgbm9kZS0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOwogICAgICAgICBpZiAo
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICBp
ZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPnN0eWxlKCktPmhhc0FwcGVhcmFuY2UoKSkKLSAgICAg
ICAgICAgICAgICB0aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVyZXIsIEZvY3VzU3RhdGUpOwor
ICAgICAgICAgICAgICAgIHJlbmRlcmVyLT50aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVyZXIs
IEZvY3VzU3RhdGUpOwogICAgIH0KIAogICAgIC8vIFNlY3VyZSBrZXlib2FyZCBlbnRyeSBpcyBz
ZXQgYnkgdGhlIGFjdGl2ZSBmcmFtZS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50
LmNwcAppbmRleCAzNmQyMGFjLi5iOTg1ZTc1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJv
bEVsZW1lbnQuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVu
dDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKQogICAgICAgICBp
ZiAob2xkRGlzYWJsZWQgIT0gbV9kaXNhYmxlZCkgewogICAgICAgICAgICAgc2V0TmVlZHNTdHls
ZVJlY2FsYygpOwogICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+c3R5
bGUoKS0+aGFzQXBwZWFyYW5jZSgpKQotICAgICAgICAgICAgICAgIHRoZW1lKCktPnN0YXRlQ2hh
bmdlZChyZW5kZXJlcigpLCBFbmFibGVkU3RhdGUpOworICAgICAgICAgICAgICAgIHJlbmRlcmVy
KCktPnRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBFbmFibGVkU3RhdGUpOwogICAg
ICAgICB9CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gcmVhZG9ubHlBdHRyKSB7CiAg
ICAgICAgIGJvb2wgb2xkUmVhZE9ubHkgPSBtX3JlYWRPbmx5OwpAQCAtNzksNyArNzksNyBAQCB2
b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0
dHJpYnV0ZSAqYXR0cikKICAgICAgICAgaWYgKG9sZFJlYWRPbmx5ICE9IG1fcmVhZE9ubHkpIHsK
ICAgICAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICAgICAgICAgIGlmIChyZW5k
ZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCktPmhhc0FwcGVhcmFuY2UoKSkKLSAgICAgICAg
ICAgICAgICB0aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgUmVhZE9ubHlTdGF0ZSk7
CisgICAgICAgICAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS0+c3RhdGVDaGFuZ2VkKHJlbmRl
cmVyKCksIFJlYWRPbmx5U3RhdGUpOwogICAgICAgICB9CiAgICAgfSBlbHNlCiAgICAgICAgIEhU
TUxFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcAppbmRleCBkYmM4MThiLi5iM2M3NTY2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
Y3BwCkBAIC04ODEsOSArODgxLDkgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRDaGVja2Vk
KGJvb2wgbm93Q2hlY2tlZCwgYm9vbCBzZW5kQ2hhbmdlRXZlbnQpCiAgICAgc2V0TmVlZHNTdHls
ZVJlY2FsYygpOwogCiAgICAgY2hlY2tlZFJhZGlvQnV0dG9ucyh0aGlzKS5hZGRCdXR0b24odGhp
cyk7Ci0gICAgCisKICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpLT5o
YXNBcHBlYXJhbmNlKCkpCi0gICAgICAgIHRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJlcigp
LCBDaGVja2VkU3RhdGUpOworICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLT5zdGF0ZUNoYW5n
ZWQocmVuZGVyZXIoKSwgQ2hlY2tlZFN0YXRlKTsKIAogICAgIC8vIE9ubHkgc2VuZCBhIGNoYW5n
ZSBldmVudCBmb3IgaXRlbXMgaW4gdGhlIGRvY3VtZW50IChhdm9pZCBmaXJpbmcgZHVyaW5nCiAg
ICAgLy8gcGFyc2luZykgYW5kIGRvbid0IHNlbmQgYSBjaGFuZ2UgZXZlbnQgZm9yIGEgcmFkaW8g
YnV0dG9uIHRoYXQncyBnZXR0aW5nCkBAIC05MDUsNyArOTA1LDcgQEAgdm9pZCBIVE1MSW5wdXRF
bGVtZW50OjpzZXRJbmRldGVybWluYXRlKGJvb2wgX2luZGV0ZXJtaW5hdGUpCiAgICAgc2V0TmVl
ZHNTdHlsZVJlY2FsYygpOwogCiAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+c3R5
bGUoKS0+aGFzQXBwZWFyYW5jZSgpKQotICAgICAgICB0aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVu
ZGVyZXIoKSwgQ2hlY2tlZFN0YXRlKTsKKyAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS0+c3Rh
dGVDaGFuZ2VkKHJlbmRlcmVyKCksIENoZWNrZWRTdGF0ZSk7CiB9CiAKIGludCBIVE1MSW5wdXRF
bGVtZW50OjpzaXplKCkgY29uc3QKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAg
Yi9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IGEzNmMxYWEuLmEyMjhiZjggMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApA
QCAtNjIyLDcgKzYyMiw3IEBAIHZvaWQgRnJhbWU6OnNlbGVjdGlvbkxheW91dENoYW5nZWQoKQog
ICAgIC8vIFN0YXJ0IGJsaW5raW5nIHdpdGggYSBibGFjayBjYXJldC4gQmUgc3VyZSBub3QgdG8g
cmVzdGFydCBpZiB3ZSdyZQogICAgIC8vIGFscmVhZHkgYmxpbmtpbmcgaW4gdGhlIHJpZ2h0IGxv
Y2F0aW9uLgogICAgIGlmIChzaG91bGRCbGluayAmJiAhbV9jYXJldEJsaW5rVGltZXIuaXNBY3Rp
dmUoKSkgewotICAgICAgICBpZiAoZG91YmxlIGJsaW5rSW50ZXJ2YWwgPSB0aGVtZSgpLT5jYXJl
dEJsaW5rSW50ZXJ2YWwoKSkKKyAgICAgICAgaWYgKGRvdWJsZSBibGlua0ludGVydmFsID0gcGFn
ZSgpLT50aGVtZSgpLT5jYXJldEJsaW5rSW50ZXJ2YWwoKSkKICAgICAgICAgICAgIG1fY2FyZXRC
bGlua1RpbWVyLnN0YXJ0UmVwZWF0aW5nKGJsaW5rSW50ZXJ2YWwpOwogCiAgICAgICAgIGlmICgh
bV9jYXJldFBhaW50KSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBi
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGY2NTAxYmUuLjM4YjA1ZTggMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuY3BwCkBAIC0xMjk2LDEwICsxMjk2LDEwIEBAIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVD
b250cm9sVGludHMoKQogICAgIC8vIHRvIGRlZmluZSB3aGVuIGNvbnRyb2xzIGdldCB0aGUgdGlu
dCBhbmQgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIHdoZW4gdGhhdCBjaGFuZ2VzLgogICAgIAogICAg
IC8vIE9wdGltaXplIHRoZSBjb21tb24gY2FzZSB3aGVyZSB3ZSBicmluZyBhIHdpbmRvdyB0byB0
aGUgZnJvbnQgd2hpbGUgaXQncyBzdGlsbCBlbXB0eS4KLSAgICBpZiAoIW1fZnJhbWUgfHwgbV9m
cmFtZS0+bG9hZGVyKCktPnVybCgpLmlzRW1wdHkoKSkgCisgICAgaWYgKCFtX2ZyYW1lIHx8IG1f
ZnJhbWUtPmxvYWRlcigpLT51cmwoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKLSAgICAK
LSAgICBpZiAodGhlbWUoKS0+c3VwcG9ydHNDb250cm9sVGludHMoKSAmJiBtX2ZyYW1lLT5jb250
ZW50UmVuZGVyZXIoKSkgeworCisgICAgaWYgKG1fZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpICYm
IG1fZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpLT50aGVtZSgpLT5zdXBwb3J0c0NvbnRyb2xUaW50
cygpKSB7CiAgICAgICAgIGlmIChuZWVkc0xheW91dCgpKQogICAgICAgICAgICAgbGF5b3V0KCk7
CiAgICAgICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBjb25zdCBub0NvbnRleHQgPSAwOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CmluZGV4IGExNDM0M2QuLjllYWNkNmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cAorKysgYi9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRl
ICJQbHVnaW5EYXRhLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAi
UmVuZGVyV2lkZ2V0LmgiCisjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJTY3Jp
cHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2VsZWN0aW9uQ29udHJvbGxlci5oIgogI2luY2x1
ZGUgIlNldHRpbmdzLmgiCkBAIC0xMjAsNiArMTIxLDcgQEAgUGFnZTo6UGFnZShDaHJvbWVDbGll
bnQqIGNocm9tZUNsaWVudCwgQ29udGV4dE1lbnVDbGllbnQqIGNvbnRleHRNZW51Q2xpZW50LCBF
ZGkKICAgICAsIG1fZGVidWdnZXIoMCkKICAgICAsIG1fY3VzdG9tSFRNTFRva2VuaXplclRpbWVE
ZWxheSgtMSkKICAgICAsIG1fY3VzdG9tSFRNTFRva2VuaXplckNodW5rU2l6ZSgtMSkKKyAgICAs
IG1fdGhlbWUoUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZSh0aGlzKSkKIHsKICAgICBpZiAoIWFs
bFBhZ2VzKSB7CiAgICAgICAgIGFsbFBhZ2VzID0gbmV3IEhhc2hTZXQ8UGFnZSo+OwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggZWVk
ZDI0Yy4uYmFiNmI4NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9XZWJD
b3JlL3BhZ2UvUGFnZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJU
eXBlcy5oIgogI2luY2x1ZGUgIkxpbmtIYXNoLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKKyNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL093blB0ci5oPgogCkBAIC03OCw3ICs3OSw5IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgICAgICBQYWdlKENocm9tZUNsaWVudCosIENvbnRleHRNZW51Q2xpZW50Kiwg
RWRpdG9yQ2xpZW50KiwgRHJhZ0NsaWVudCosIEluc3BlY3RvckNsaWVudCopOwogICAgICAgICB+
UGFnZSgpOwotICAgICAgICAKKworICAgICAgICBSZW5kZXJUaGVtZSogdGhlbWUoKSBjb25zdCB7
IHJldHVybiBtX3RoZW1lLmdldCgpOyB9OworCiAgICAgICAgIHN0YXRpYyB2b2lkIHJlZnJlc2hQ
bHVnaW5zKGJvb2wgcmVsb2FkKTsKICAgICAgICAgUGx1Z2luRGF0YSogcGx1Z2luRGF0YSgpIGNv
bnN0OwogCkBAIC0yMTcsNiArMjIwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAg
IG11dGFibGUgUmVmUHRyPFBsdWdpbkRhdGE+IG1fcGx1Z2luRGF0YTsKIAorICAgICAgICBSZWZQ
dHI8UmVuZGVyVGhlbWU+IG1fdGhlbWU7CisKICAgICAgICAgRWRpdG9yQ2xpZW50KiBtX2VkaXRv
ckNsaWVudDsKIAogICAgICAgICBpbnQgbV9mcmFtZUNvdW50OwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHAgYi9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcAppbmRleCBiMDBiNjI1Li41NmVmMWU5
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVt
LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNw
cApAQCAtNzcxLDggKzc3MSw4IEBAIHZvaWQgUG9wdXBMaXN0Qm94OjpwYWludFJvdyhHcmFwaGlj
c0NvbnRleHQqIGdjLCBjb25zdCBJbnRSZWN0JiByZWN0LCBpbnQgcm93SW5kCiAgICAgLy8gUGFp
bnQgYmFja2dyb3VuZAogICAgIENvbG9yIGJhY2tDb2xvciwgdGV4dENvbG9yOwogICAgIGlmIChy
b3dJbmRleCA9PSBtX3NlbGVjdGVkSW5kZXgpIHsKLSAgICAgICAgYmFja0NvbG9yID0gdGhlbWUo
KS0+YWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpOwotICAgICAgICB0ZXh0
Q29sb3IgPSB0aGVtZSgpLT5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCk7
CisgICAgICAgIGJhY2tDb2xvciA9IFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+YWN0aXZl
TGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpOworICAgICAgICB0ZXh0Q29sb3IgPSBS
ZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCktPmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3Jv
dW5kQ29sb3IoKTsKICAgICB9IGVsc2UgewogICAgICAgICBiYWNrQ29sb3IgPSBzdHlsZS5iYWNr
Z3JvdW5kQ29sb3IoKTsKICAgICAgICAgdGV4dENvbG9yID0gc3R5bGUuZm9yZWdyb3VuZENvbG9y
KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAKaW5kZXggYTk1ZjU1Ny4u
MDk4NDk3YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsu
Y3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcApAQCAtMiw2
ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAw
OCBDb2xsYWJvcmEgTHRkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEtlbm5ldGggUm9oZGUgQ2hy
aXN0aWFuc2VuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM0LDEzICszNSwxOCBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclRoZW1lKiB0aGVtZSgpCitQYXNzUmVmUHRyPFJlbmRl
clRoZW1lPiBSZW5kZXJUaGVtZUd0azo6Y3JlYXRlKCkKIHsKLSAgICBzdGF0aWMgUmVuZGVyVGhl
bWVHdGsgZ3RrVGhlbWU7Ci0gICAgcmV0dXJuICZndGtUaGVtZTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFJlbmRlclRoZW1lR3RrKCkpOwogfQogCi1zdGF0aWMgYm9vbCBtb3pHdGtJbml0aWFs
aXplZCA9IGZhbHNlOworUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWU6OnRoZW1l
Rm9yUGFnZShQYWdlKiBwYWdlKQoreworICAgIHN0YXRpYyBSZW5kZXJUaGVtZSogcnQgPSBSZW5k
ZXJUaGVtZUd0azo6Y3JlYXRlKCkucmVsZWFzZVJlZigpOworICAgIHJldHVybiBydDsKK30KKwor
c3RhdGljIGludCBtb3pHdGtSZWZDb3VudCA9IDA7CiAKIFJlbmRlclRoZW1lR3RrOjpSZW5kZXJU
aGVtZUd0aygpCiAgICAgOiBtX2d0a1dpbmRvdygwKQpAQCAtNDgsMTggKzU0LDE4IEBAIFJlbmRl
clRoZW1lR3RrOjpSZW5kZXJUaGVtZUd0aygpCiAgICAgLCBtX2d0a0VudHJ5KDApCiAgICAgLCBt
X2d0a1RyZWVWaWV3KDApCiB7Ci0gICAgaWYgKCFtb3pHdGtJbml0aWFsaXplZCkgewotICAgICAg
ICBtb3pHdGtJbml0aWFsaXplZCA9IHRydWU7CisgICAgaWYgKCFtb3pHdGtSZWZDb3VudCkKICAg
ICAgICAgbW96X2d0a19pbml0KCk7Ci0gICAgfQorCisgICAgKyttb3pHdGtSZWZDb3VudDsKIH0K
IAogUmVuZGVyVGhlbWVHdGs6On5SZW5kZXJUaGVtZUd0aygpCiB7Ci0gICAgaWYgKG1vekd0a0lu
aXRpYWxpemVkKSB7CisgICAgLS1tb3pHdGtSZWZDb3VudDsKKworICAgIGlmICghbW96R3RrUmVm
Q291bnQpCiAgICAgICAgIG1vel9ndGtfc2h1dGRvd24oKTsKLSAgICAgICAgbW96R3RrSW5pdGlh
bGl6ZWQgPSBmYWxzZTsKLSAgICB9CiB9CiAKIHN0YXRpYyBib29sIHN1cHBvcnRzRm9jdXMoQ29u
dHJvbFBhcnQgYXBwZWFyYW5jZSkKQEAgLTQ3MCw3ICs0NzYsNyBAQCBHdGtXaWRnZXQqIFJlbmRl
clRoZW1lR3RrOjpndGtFbnRyeSgpIGNvbnN0CiAgICAgICAgIHJldHVybiBtX2d0a0VudHJ5Owog
CiAgICAgbV9ndGtFbnRyeSA9IGd0a19lbnRyeV9uZXcoKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0
KG1fZ3RrRW50cnksICJzdHlsZS1zZXQiLCBHX0NBTExCQUNLKGd0a1N0eWxlU2V0Q2FsbGJhY2sp
LCB0aGVtZSgpKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fZ3RrRW50cnksICJzdHlsZS1zZXQi
LCBHX0NBTExCQUNLKGd0a1N0eWxlU2V0Q2FsbGJhY2spLCBjb25zdF9jYXN0PFJlbmRlclRoZW1l
R3RrKj4odGhpcykpOwogICAgIGd0a19jb250YWluZXJfYWRkKGd0a0NvbnRhaW5lcigpLCBtX2d0
a0VudHJ5KTsKICAgICBndGtfd2lkZ2V0X3JlYWxpemUobV9ndGtFbnRyeSk7CiAKQEAgLTQ4Myw3
ICs0ODksNyBAQCBHdGtXaWRnZXQqIFJlbmRlclRoZW1lR3RrOjpndGtUcmVlVmlldygpIGNvbnN0
CiAgICAgICAgIHJldHVybiBtX2d0a1RyZWVWaWV3OwogCiAgICAgbV9ndGtUcmVlVmlldyA9IGd0
a190cmVlX3ZpZXdfbmV3KCk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChtX2d0a1RyZWVWaWV3LCAi
c3R5bGUtc2V0IiwgR19DQUxMQkFDSyhndGtTdHlsZVNldENhbGxiYWNrKSwgdGhlbWUoKSk7Cisg
ICAgZ19zaWduYWxfY29ubmVjdChtX2d0a1RyZWVWaWV3LCAic3R5bGUtc2V0IiwgR19DQUxMQkFD
SyhndGtTdHlsZVNldENhbGxiYWNrKSwgY29uc3RfY2FzdDxSZW5kZXJUaGVtZUd0ayo+KHRoaXMp
KTsKICAgICBndGtfY29udGFpbmVyX2FkZChndGtDb250YWluZXIoKSwgbV9ndGtUcmVlVmlldyk7
CiAgICAgZ3RrX3dpZGdldF9yZWFsaXplKG1fZ3RrVHJlZVZpZXcpOwogCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUmVuZGVyVGhlbWVHdGsuaAppbmRleCA4MmE4N2NiLi42NmY3YWUyIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5oCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1JlbmRlclRoZW1lR3RrLmgKQEAgLTUsNiArNSw3IEBACiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDYgTWljaGFlbCBFbW1lbCBtaWtlLmVtbWVsQGdtYWlsLmNvbQogICogQ29weXJpZ2h0IChD
KSAyMDA3IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcg
QWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBLZW5uZXRo
IFJvaGRlIENocmlzdGlhbnNlbgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CkBAIC0zNCwxMCArMzUsMTMgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVy
VGhlbWVHdGsgOiBwdWJsaWMgUmVuZGVyVGhlbWUgewotcHVibGljOgorcHJpdmF0ZToKICAgICBS
ZW5kZXJUaGVtZUd0aygpOwogICAgIHZpcnR1YWwgflJlbmRlclRoZW1lR3RrKCk7CiAKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gY3JlYXRlKCk7CisKICAgICAv
LyBBIG1ldGhvZCBhc2tpbmcgaWYgdGhlIHRoZW1lJ3MgY29udHJvbHMgYWN0dWFsbHkgY2FyZSBh
Ym91dCByZWRyYXdpbmcgd2hlbiBob3ZlcmVkLgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0hv
dmVyKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuY3BwIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNwcAppbmRleCBiMTZjYmM0Li5mZjQzMDUwIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuY3BwCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5jcHAKQEAgLTEwNiwxMCArMTA2LDE4IEBA
IFN0eWxlUGFpbnRlcjo6flN0eWxlUGFpbnRlcigpCiAgICAgfQogfQogCi1SZW5kZXJUaGVtZSog
dGhlbWUoKQorUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWVRdDo6Y3JlYXRlKFBh
Z2UqIHBhZ2UpCiB7Ci0gICAgc3RhdGljIFJlbmRlclRoZW1lUXQgcnQ7Ci0gICAgcmV0dXJuICZy
dDsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlbmRlclRoZW1lUXQocGFnZSkpOworfQorCitQ
YXNzUmVmUHRyPFJlbmRlclRoZW1lPiBSZW5kZXJUaGVtZTo6dGhlbWVGb3JQYWdlKFBhZ2UqIHBh
Z2UpCit7CisgICAgaWYgKHBhZ2UpCisgICAgICAgIHJldHVybiBSZW5kZXJUaGVtZVF0OjpjcmVh
dGUocGFnZSk7CisKKyAgICBzdGF0aWMgUmVuZGVyVGhlbWUqIGZhbGxiYWNrID0gUmVuZGVyVGhl
bWVRdDo6Y3JlYXRlKDApLnJlbGVhc2VSZWYoKTsKKyAgICByZXR1cm4gZmFsbGJhY2s7CiB9CiAK
IFJlbmRlclRoZW1lUXQ6OlJlbmRlclRoZW1lUXQoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmggYi9XZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1l
UXQuaAppbmRleCA1Yzc4YTcyLi4wNzllMmFiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L3F0L1JlbmRlclRoZW1lUXQuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1l
UXQuaApAQCAtMzgsMTAgKzM4LDEzIEBAIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiAKIGNsYXNz
IFJlbmRlclRoZW1lUXQgOiBwdWJsaWMgUmVuZGVyVGhlbWUKIHsKLXB1YmxpYzoKK3ByaXZhdGU6
CiAgICAgUmVuZGVyVGhlbWVRdCgpOwogICAgIHZpcnR1YWwgflJlbmRlclRoZW1lUXQoKTsKIAor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlbmRlclRoZW1lPiBjcmVhdGUoUGFnZSop
OworCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzSG92ZXIoY29uc3QgUmVuZGVyU3R5bGUqKSBj
b25zdDsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGb2N1c1JpbmcoY29uc3QgUmVuZGVyU3R5
bGUqIHN0eWxlKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93eC9SZW5k
ZXJUaGVtZVd4LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vd3gvUmVuZGVyVGhlbWVXeC5jcHAKaW5k
ZXggYTI2NDE2Zi4uODI0YzQwMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93eC9SZW5k
ZXJUaGVtZVd4LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3d4L1JlbmRlclRoZW1lV3guY3Bw
CkBAIC00NCw4ICs0NCwxMiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJU
aGVtZVd4IDogcHVibGljIFJlbmRlclRoZW1lIHsKLXB1YmxpYzoKK3ByaXZhdGU6CiAgICAgUmVu
ZGVyVGhlbWVXeCgpIDogUmVuZGVyVGhlbWUoKSB7IH0KKyAgICB2aXJ0dWFsIH5SZW5kZXJUaGVt
ZVd4KCk7CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gY3Jl
YXRlKCk7CiAKICAgICAvLyBBIG1ldGhvZCBhc2tpbmcgaWYgdGhlIHRoZW1lJ3MgY29udHJvbHMg
YWN0dWFsbHkgY2FyZSBhYm91dCByZWRyYXdpbmcgd2hlbiBob3ZlcmVkLgogICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c0hvdmVyKGNvbnN0IFJlbmRlclN0eWxlKikgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQpAQCAtMTE5LDEwICsxMjMsMTUgQEAgcHJpdmF0ZToKICNkZWZpbmUgUE9QVVBfSU5URVJO
QUxfUEFERElOR19SSUdIVCAyMAogI2VuZGlmCiAKLVJlbmRlclRoZW1lKiB0aGVtZSgpCitQYXNz
UmVmUHRyPFJlbmRlclRoZW1lPiBSZW5kZXJUaGVtZVd4OjpjcmVhdGUoKQoreworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgUmVuZGVyVGhlbWVXeCgpKTsKK30KKworUGFzc1JlZlB0cjxSZW5kZXJU
aGVtZT4gUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZShQYWdlKiBwYWdlKQogewotICAgIHN0YXRp
YyBSZW5kZXJUaGVtZVd4IHJ0OwotICAgIHJldHVybiAmcnQ7CisgICAgc3RhdGljIFJlbmRlclRo
ZW1lKiBydCA9IFJlbmRlclRoZW1lV3goKS5jcmVhdGUoKS5yZWxlYXNlUmVmKCk7CisgICAgcmV0
dXJuIHJ0OwogfQogCiBib29sIFJlbmRlclRoZW1lV3g6OmlzQ29udHJvbFN0eWxlZChjb25zdCBS
ZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IEJvcmRlckRhdGEmIGJvcmRlciwKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lVGV4dEJveC5jcHAKaW5kZXggNDE4YmUxNS4uMzBkMTkyZiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lVGV4dEJveC5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUmVuZGVyQXJlbmEuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgotI2luY2x1
ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgImJyZWFrX2xp
bmVzLmgiCiAjaW5jbHVkZSA8d3RmL0Fsd2F5c0lubGluZS5oPgpAQCAtNzcwLDggKzc2OSw4IEBA
IHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0TWF0Y2hNYXJrZXIoR3JhcGhpY3NDb250ZXh0
KiBwdCwgaW50IHR4LCBpbnQgdHksIERvCiAgICAgLy8gT3B0aW9uYWxseSBoaWdobGlnaHQgdGhl
IHRleHQKICAgICBpZiAocmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+bWFya2VkVGV4
dE1hdGNoZXNBcmVIaWdobGlnaHRlZCgpKSB7CiAgICAgICAgIENvbG9yIGNvbG9yID0gbWFya2Vy
LmFjdGl2ZU1hdGNoID8KLSAgICAgICAgICAgIHRoZW1lKCktPnBsYXRmb3JtQWN0aXZlVGV4dFNl
YXJjaEhpZ2hsaWdodENvbG9yKCkgOgotICAgICAgICAgICAgdGhlbWUoKS0+cGxhdGZvcm1JbmFj
dGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpOworICAgICAgICAgICAgcmVuZGVyZXIoKS0+
dGhlbWUoKS0+cGxhdGZvcm1BY3RpdmVUZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IoKSA6CisgICAg
ICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLT5wbGF0Zm9ybUluYWN0aXZlVGV4dFNlYXJjaEhp
Z2hsaWdodENvbG9yKCk7CiAgICAgICAgIHB0LT5zYXZlKCk7CiAgICAgICAgIHVwZGF0ZUdyYXBo
aWNzQ29udGV4dChwdCwgY29sb3IsIGNvbG9yLCAwKTsgIC8vIERvbid0IGRyYXcgdGV4dCBhdCBh
bGwhCiAgICAgICAgIHB0LT5jbGlwKEludFJlY3QodHggKyBtX3gsIHR5ICsgeSwgbV93aWR0aCwg
aCkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMu
Y3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCmluZGV4IDVj
ZDkzNjMuLjdhYThjMWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29udHJv
bEVsZW1lbnRzLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50
cy5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCB2b2lkIE1lZGlhQ29udHJvbElucHV0RWxlbWVudDo6
dXBkYXRlU3R5bGUoKQogYm9vbCBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6OmhpdFRlc3QoY29u
c3QgSW50UG9pbnQmIGFic1BvaW50KQogewogICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVy
KCktPnN0eWxlKCktPmhhc0FwcGVhcmFuY2UoKSkKLSAgICAgICAgcmV0dXJuIHRoZW1lKCktPmhp
dFRlc3RNZWRpYUNvbnRyb2xQYXJ0KHJlbmRlcmVyKCksIGFic1BvaW50KTsKKyAgICAgICAgcmV0
dXJuIHJlbmRlcmVyKCktPnRoZW1lKCktPmhpdFRlc3RNZWRpYUNvbnRyb2xQYXJ0KHJlbmRlcmVy
KCksIGFic1BvaW50KTsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwCmluZGV4IGY4MTAxOGQuLmQ1NjE4MzEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcApAQCAtNDMsNyArNDMsNiBAQAogI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2VsbC5oIgog
I2luY2x1ZGUgIlJlbmRlclRhYmxlQ29sLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVSb3cuaCIK
LSNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNs
dWRlICJUcmFuc2Zvcm1TdGF0ZS5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KQEAgLTIxNCw2ICsy
MTMsMTMgQEAgUmVuZGVyT2JqZWN0Ojp+UmVuZGVyT2JqZWN0KCkKICNlbmRpZgogfQogCitSZW5k
ZXJUaGVtZSogUmVuZGVyT2JqZWN0Ojp0aGVtZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGRvY3Vt
ZW50KCktPnBhZ2UoKSk7CisKKyAgICByZXR1cm4gZG9jdW1lbnQoKS0+cGFnZSgpLT50aGVtZSgp
OworfQorCiBib29sIFJlbmRlck9iamVjdDo6aXNEZXNjZW5kYW50T2YoY29uc3QgUmVuZGVyT2Jq
ZWN0KiBvYmopIGNvbnN0CiB7CiAgICAgZm9yIChjb25zdCBSZW5kZXJPYmplY3QqIHIgPSB0aGlz
OyByOyByID0gci0+bV9wYXJlbnQpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggMDkw
MWJmZi4uNDIwZjRhZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTQ4LDYgKzQ4LDcg
QEAgY2xhc3MgUmVuZGVySW5saW5lOwogY2xhc3MgUmVuZGVyQmxvY2s7CiBjbGFzcyBSZW5kZXJG
bG93OwogY2xhc3MgUmVuZGVyTGF5ZXI7CitjbGFzcyBSZW5kZXJUaGVtZTsKIGNsYXNzIFRyYW5z
Zm9ybVN0YXRlOwogY2xhc3MgVmlzaWJsZVBvc2l0aW9uOwogCkBAIC0xMzcsNiArMTM4LDggQEAg
cHVibGljOgogICAgIFJlbmRlck9iamVjdChOb2RlKik7CiAgICAgdmlydHVhbCB+UmVuZGVyT2Jq
ZWN0KCk7CiAKKyAgICBSZW5kZXJUaGVtZSogdGhlbWUoKSBjb25zdDsKKwogICAgIHZpcnR1YWwg
Y29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0ID0gMDsKIAogICAgIFJlbmRlck9iamVjdCog
cGFyZW50KCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnQ7IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
LmNwcAppbmRleCBlNjdlNjEyLi40YmRjMDQ2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZS5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3Bw
CkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdFN0eWxlKENTU1N0eWxl
U2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsCiAgICAgZWxzZSBpZiAo
c3R5bGUtPmRpc3BsYXkoKSA9PSBDT01QQUNUIHx8IHN0eWxlLT5kaXNwbGF5KCkgPT0gUlVOX0lO
IHx8IHN0eWxlLT5kaXNwbGF5KCkgPT0gTElTVF9JVEVNIHx8IHN0eWxlLT5kaXNwbGF5KCkgPT0g
VEFCTEUpCiAgICAgICAgIHN0eWxlLT5zZXREaXNwbGF5KEJMT0NLKTsKIAotICAgIGlmIChVQUhh
c0FwcGVhcmFuY2UgJiYgdGhlbWUoKS0+aXNDb250cm9sU3R5bGVkKHN0eWxlLCBib3JkZXIsIGJh
Y2tncm91bmQsIGJhY2tncm91bmRDb2xvcikpIHsKKyAgICBpZiAoVUFIYXNBcHBlYXJhbmNlICYm
IGlzQ29udHJvbFN0eWxlZChzdHlsZSwgYm9yZGVyLCBiYWNrZ3JvdW5kLCBiYWNrZ3JvdW5kQ29s
b3IpKSB7CiAgICAgICAgIGlmIChwYXJ0ID09IE1lbnVsaXN0UGFydCkgewogICAgICAgICAgICAg
c3R5bGUtPnNldEFwcGVhcmFuY2UoTWVudWxpc3RCdXR0b25QYXJ0KTsKICAgICAgICAgICAgIHBh
cnQgPSBNZW51bGlzdEJ1dHRvblBhcnQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAppbmRleCBiYzgx
ZDRkLi45NGZmODYxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5o
CisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgKQEAgLTIzLDEzICsyMywxNiBA
QAogI2lmbmRlZiBSZW5kZXJUaGVtZV9oCiAjZGVmaW5lIFJlbmRlclRoZW1lX2gKIAotI2luY2x1
ZGUgIlJlbmRlck9iamVjdC5oIgogI2lmIFVTRShORVdfVEhFTUUpCiAjaW5jbHVkZSAiVGhlbWUu
aCIKICNlbHNlCiAjaW5jbHVkZSAiVGhlbWVUeXBlcy5oIgogI2VuZGlmCisjaW5jbHVkZSAiUmVu
ZGVyT2JqZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJTY3JvbGxU
eXBlcy5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOCwxMSArNDEsMjQgQEAgY2xh
c3MgUG9wdXBNZW51OwogY2xhc3MgUmVuZGVyTWVudUxpc3Q7CiBjbGFzcyBDU1NTdHlsZVNoZWV0
OwogCi1jbGFzcyBSZW5kZXJUaGVtZSB7Ci1wdWJsaWM6CitjbGFzcyBSZW5kZXJUaGVtZSA6IHB1
YmxpYyBSZWZDb3VudGVkPFJlbmRlclRoZW1lPiB7Citwcm90ZWN0ZWQ6CiAgICAgUmVuZGVyVGhl
bWUoKTsKKworcHVibGljOgogICAgIHZpcnR1YWwgflJlbmRlclRoZW1lKCkgeyB9CiAKKyAgICAv
LyBUaGlzIGZ1bmN0aW9uIGlzIHRvIGJlIGltcGxlbWVudGVkIGluIHlvdXIgcGxhdGZvcm0tc3Bl
Y2lmaWMgdGhlbWUgaW1wbGVtZW50YXRpb24gdG8gaGFuZCBiYWNrIHRoZQorICAgIC8vIGFwcHJv
cHJpYXRlIHBsYXRmb3JtIHRoZW1lLiBXaGVuIHRoZSB0aGVtZSBpcyBuZWVkZWQgaW4gbm9uLXBh
Z2UgZGVwZW5kZW50IGNvZGUsIGEgZGVmYXVsdCB0aGVtZSBpcworICAgIC8vIHVzZWQgYXMgZmFs
bGJhY2ssIHdoaWNoIGlzIHJldHVybmVkIGZvciBhIG51bGxlZCBwYWdlLCBzbyB0aGUgcGxhdGZv
cm0gY29kZSBuZWVkcyB0byBhY2NvdW50IGZvciB0aGlzLgorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFJlbmRlclRoZW1lPiB0aGVtZUZvclBhZ2UoUGFnZSogcGFnZSk7CisKKyAgICAvLyBXaGVuIHRo
ZSB0aGVtZSBpcyBuZWVkZWQgaW4gbm9uLXBhZ2UgZGVwZW5kZW50IGNvZGUsIHRoZSBkZWZhdWx0
VGhlbWUoKSBpcyB1c2VkIGFzIGZhbGxiYWNrLgorICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0
cjxSZW5kZXJUaGVtZT4gZGVmYXVsdFRoZW1lKCkKKyAgICB7CisgICAgICAgIHJldHVybiBSZW5k
ZXJUaGVtZTo6dGhlbWVGb3JQYWdlKDApOworICAgIH07CisKICAgICAvLyBUaGlzIG1ldGhvZCBp
cyBjYWxsZWQgd2hlbmV2ZXIgc3R5bGUgaGFzIGJlZW4gY29tcHV0ZWQgZm9yIGFuIGVsZW1lbnQg
YW5kIHRoZSBhcHBlYXJhbmNlCiAgICAgLy8gcHJvcGVydHkgaGFzIGJlZW4gc2V0IHRvIGEgdmFs
dWUgb3RoZXIgdGhhbiAibm9uZSIuICBUaGUgdGhlbWUgc2hvdWxkIG1hcCBpbiBhbGwgb2YgdGhl
IGFwcHJvcHJpYXRlCiAgICAgLy8gbWV0cmljcyBhbmQgZGVmYXVsdHMgZ2l2ZW4gdGhlIGNvbnRl
bnRzIG9mIHRoZSBzdHlsZS4gIFRoaXMgaW5jbHVkZXMgc29waGlzdGljYXRlZCBvcGVyYXRpb25z
IGxpa2UKQEAgLTI1NywxMCArMjczLDYgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAotLy8gRnVu
Y3Rpb24gdG8gb2J0YWluIHRoZSB0aGVtZS4gIFRoaXMgaXMgaW1wbGVtZW50ZWQgaW4geW91ciBw
bGF0Zm9ybS1zcGVjaWZpYyB0aGVtZSBpbXBsZW1lbnRhdGlvbiB0byBoYW5kCi0vLyBiYWNrIHRo
ZSBhcHByb3ByaWF0ZSBwbGF0Zm9ybSB0aGVtZS4KLVJlbmRlclRoZW1lKiB0aGVtZSgpOwotCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBSZW5kZXJUaGVtZV9oCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguY3BwIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmNwcAppbmRleCA5NGVlNjRm
Li43YzQxZGI1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9t
aXVtTGludXguY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1M
aW51eC5jcHAKQEAgLTMsNiArMyw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2Vy
IDxhbHBAYXRva2VyLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLgog
ICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEdvb2dsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAt
MTEzLDEwICsxMTQsMTUgQEAgc3RhdGljIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudFBh
cmVudChOb2RlKiBub2RlKQogfQogI2VuZGlmCiAKLVJlbmRlclRoZW1lKiB0aGVtZSgpCitQYXNz
UmVmUHRyPFJlbmRlclRoZW1lPiBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OmNyZWF0ZSgpCiB7
Ci0gICAgc3RhdGljIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eCB0aGVtZTsKLSAgICByZXR1cm4g
JnRoZW1lOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4
KCkpOworfQorCitQYXNzUmVmUHRyPFJlbmRlclRoZW1lPiBSZW5kZXJUaGVtZTo6dGhlbWVGb3JQ
YWdlKFBhZ2UqIHBhZ2UpCit7CisgICAgc3RhdGljIFJlbmRlclRoZW1lKiBydCA9IFJlbmRlclRo
ZW1lQ2hyb21pdW1MaW51eDo6Y3JlYXRlKCkucmVsZWFzZVJlZigpOworICAgIHJldHVybiBydDsK
IH0KIAogUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4OjpSZW5kZXJUaGVtZUNocm9taXVtTGludXgo
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4
LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguaAppbmRleCA3
ODM4NTA5Li4xNTA3MGU2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZUNocm9taXVtTGludXguaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9t
aXVtTGludXguaApAQCAtNyw2ICs3LDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9r
ZXIgPGFscEBhdG9rZXIuY29tPgogICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEdvb2dsZSwg
SW5jLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBLZW5u
ZXRoIFJvaGRlIENocmlzdGlhbnNlbgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zMywxMCArMzQs
MTMgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIFJlbmRlclRoZW1lQ2hyb21p
dW1MaW51eCA6IHB1YmxpYyBSZW5kZXJUaGVtZSB7Ci0gICAgcHVibGljOgorICAgIHByaXZhdGU6
CiAgICAgICAgIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eCgpOwogICAgICAgICB+UmVuZGVyVGhl
bWVDaHJvbWl1bUxpbnV4KCkgeyB9CiAKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFJlbmRlclRoZW1lPiBjcmVhdGUoKTsKKwogICAgICAgICB2aXJ0dWFsIFN0cmluZyBl
eHRyYURlZmF1bHRTdHlsZVNoZWV0KCk7CiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIGV4dHJhUXVp
cmtzU3R5bGVTaGVldCgpOwogI2lmIEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1NYWMuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lQ2hyb21pdW1NYWMuaAppbmRleCBmMDcyMDAwLi40MGNhZjRmIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTWFjLmgKKysrIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bU1hYy5oCkBAIC0zLDYgKzMsNyBAQAogICoK
ICAqIENvcHlyaWdodCAoQykgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLgogICogQ29weXJpZ2h0
IChDKSAyMDA4LCAyMDA5IEdvb2dsZSwgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEtlbm5l
dGggUm9oZGUgQ2hyaXN0aWFuc2VuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQwLDEwICs0MSwx
MyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgUmVuZGVyU3R5bGU7CiAKICAgICBj
bGFzcyBSZW5kZXJUaGVtZUNocm9taXVtTWFjIDogcHVibGljIFJlbmRlclRoZW1lIHsKLSAgICBw
dWJsaWM6CisgICAgcHJpdmF0ZToKICAgICAgICAgUmVuZGVyVGhlbWVDaHJvbWl1bU1hYygpOwog
ICAgICAgICB2aXJ0dWFsIH5SZW5kZXJUaGVtZUNocm9taXVtTWFjKCk7CiAKKyAgICBwdWJsaWM6
CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlbmRlclRoZW1lPiBjcmVhdGUoKTsKKwogICAg
ICAgICAvLyBBIG1ldGhvZCB0byBvYnRhaW4gdGhlIGJhc2VsaW5lIHBvc2l0aW9uIGZvciBhICJs
ZWFmIiBjb250cm9sLiAgVGhpcyB3aWxsIG9ubHkgYmUgdXNlZCBpZiBhIGJhc2VsaW5lCiAgICAg
ICAgIC8vIHBvc2l0aW9uIGNhbm5vdCBiZSBkZXRlcm1pbmVkIGJ5IGV4YW1pbmluZyBjaGlsZCBj
b250ZW50LiBDaGVja2JveGVzIGFuZCByYWRpbyBidXR0b25zIGFyZSBleGFtcGxlcyBvZgogICAg
ICAgICAvLyBjb250cm9scyB0aGF0IG5lZWQgdG8gZG8gdGhpcy4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1NYWMubW0gYi9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUNocm9taXVtTWFjLm1tCmluZGV4IGY2MDgxYTUuLjY0MTdmNGEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1NYWMubW0KKysrIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bU1hYy5tbQpAQCAtMSw2ICsxLDcg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEdvb2ds
ZSwgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2Vu
CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTEyNCwxMCArMTI1LDE1IEBAIEludFJlY3QgTlNSZWN0
VG9JbnRSZWN0KGNvbnN0IE5TUmVjdCAmIHJlY3QpCiAgICAgcmV0dXJuIEludFJlY3QocmVjdC5v
cmlnaW4ueCwgcmVjdC5vcmlnaW4ueSwgcmVjdC5zaXplLndpZHRoLCByZWN0LnNpemUuaGVpZ2h0
KTsKIH0KIAotUmVuZGVyVGhlbWUqIHRoZW1lKCkKK1Bhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IFJl
bmRlclRoZW1lQ2hyb21pdW1NYWM6OmNyZWF0ZSgpCiB7Ci0gICAgc3RhdGljIFJlbmRlclRoZW1l
Q2hyb21pdW1NYWMqIG1hY1RoZW1lID0gbmV3IFJlbmRlclRoZW1lQ2hyb21pdW1NYWM7Ci0gICAg
cmV0dXJuIG1hY1RoZW1lOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVuZGVyVGhlbWVDaHJv
bWl1bU1hYyk7Cit9CisKK1Bhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IFJlbmRlclRoZW1lOjp0aGVt
ZUZvclBhZ2UoUGFnZSogcGFnZSkKK3sKKyAgICBzdGF0aWMgUmVuZGVyVGhlbWUqIHJ0ID0gUmVu
ZGVyVGhlbWVDaHJvbWl1bU1hYzo6Y3JlYXRlKCkucmVsZWFzZVJlZigpOworICAgIHJldHVybiBy
dDsKIH0KIAogUmVuZGVyVGhlbWVDaHJvbWl1bU1hYzo6UmVuZGVyVGhlbWVDaHJvbWl1bU1hYygp
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtV2luLmNw
cCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1XaW4uY3BwCmluZGV4IDUy
ODgxOTEuLjdkZjZlNjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
Q2hyb21pdW1XaW4uY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21p
dW1XaW4uY3BwCkBAIC0zLDYgKzMsNyBAQAogICoKICAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBs
ZSBDb21wdXRlciwgSW5jLgogICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEdvb2dsZSwgSW5j
LgorICogQ29weXJpZ2h0IChDKSAyMDA5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTI2NSwxMSArMjY2LDE1IEBAIHN0YXRpYyBIVE1MTWVkaWFFbGVt
ZW50KiBtZWRpYUVsZW1lbnRQYXJlbnQoTm9kZSogbm9kZSkKIH0KICNlbmRpZgogCi0vLyBJbXBs
ZW1lbnQgV2ViQ29yZTo6dGhlbWUoKSBmb3IgZ2V0dGluZyB0aGUgZ2xvYmFsIFJlbmRlclRoZW1l
LgotUmVuZGVyVGhlbWUqIHRoZW1lKCkKK1Bhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IFJlbmRlclRo
ZW1lQ2hyb21pdW1XaW46OmNyZWF0ZSgpCiB7Ci0gICAgc3RhdGljIFJlbmRlclRoZW1lQ2hyb21p
dW1XaW4gd2luVGhlbWU7Ci0gICAgcmV0dXJuICZ3aW5UaGVtZTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFJlbmRlclRoZW1lQ2hyb21pdW1XaW4pOworfQorCitQYXNzUmVmUHRyPFJlbmRlclRo
ZW1lPiBSZW5kZXJUaGVtZTo6dGhlbWVGb3JQYWdlKFBhZ2UqIHBhZ2UpCit7CisgICAgc3RhdGlj
IFJlbmRlclRoZW1lKiBydCA9IFJlbmRlclRoZW1lQ2hyb21pdW1XaW46OmNyZWF0ZSgpLnJlbGVh
c2VSZWYoKTsKKyAgICByZXR1cm4gcnQ7CiB9CiAKIFN0cmluZyBSZW5kZXJUaGVtZUNocm9taXVt
V2luOjpleHRyYURlZmF1bHRTdHlsZVNoZWV0KCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lQ2hyb21pdW1XaW4uaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lQ2hyb21pdW1XaW4uaAppbmRleCA2YmE2NTk1Li45YmJhMzdkIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtV2luLmgKKysrIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5oCkBAIC00MywxMCArNDMsMTMgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIH07CiAKICAgICBjbGFzcyBSZW5kZXJUaGVtZUNocm9taXVtV2lu
IDogcHVibGljIFJlbmRlclRoZW1lIHsKLSAgICBwdWJsaWM6CisgICAgcHJpdmF0ZToKICAgICAg
ICAgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbigpIHsgfQogICAgICAgICB+UmVuZGVyVGhlbWVDaHJv
bWl1bVdpbigpIHsgfQogCisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxS
ZW5kZXJUaGVtZT4gY3JlYXRlKCk7CisKICAgICAgICAgdmlydHVhbCBTdHJpbmcgZXh0cmFEZWZh
dWx0U3R5bGVTaGVldCgpOwogICAgICAgICB2aXJ0dWFsIFN0cmluZyBleHRyYVF1aXJrc1N0eWxl
U2hlZXQoKTsKICNpZiBFTkFCTEUoVklERU8pCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZU1hYy5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaApp
bmRleCA2M2YxZDk3Li42OTFlZjkwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZU1hYy5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmgKQEAg
LTM4LDEwICszOCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZW5kZXJTdHlsZTsK
IAogY2xhc3MgUmVuZGVyVGhlbWVNYWMgOiBwdWJsaWMgUmVuZGVyVGhlbWUgewotcHVibGljOgor
cHJpdmF0ZToKICAgICBSZW5kZXJUaGVtZU1hYygpOwogICAgIHZpcnR1YWwgflJlbmRlclRoZW1l
TWFjKCk7CiAKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gY3Jl
YXRlKCk7CisKICAgICAvLyBBIG1ldGhvZCBhc2tpbmcgaWYgdGhlIGNvbnRyb2wgY2hhbmdlcyBp
dHMgdGludCB3aGVuIHRoZSB3aW5kb3cgaGFzIGZvY3VzIG9yIG5vdC4KICAgICB2aXJ0dWFsIGJv
b2wgY29udHJvbFN1cHBvcnRzVGludHMoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3Q7CiAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KaW5kZXggYzNlYzkxYS4uMmY0NDAzNSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTEwMSwxMCArMTAxLDEwIEBAIGVudW0gewog
ICAgIGxlZnRQYWRkaW5nCiB9OwogCi1SZW5kZXJUaGVtZSogdGhlbWUoKQorUGFzc1JlZlB0cjxS
ZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZShQYWdlKiBwYWdlKQogewotICAg
IHN0YXRpYyBSZW5kZXJUaGVtZU1hYyogbWFjVGhlbWUgPSBuZXcgUmVuZGVyVGhlbWVNYWM7Ci0g
ICAgcmV0dXJuIG1hY1RoZW1lOworICAgIHN0YXRpYyBSZW5kZXJUaGVtZSogcnQgPSBSZW5kZXJU
aGVtZU1hYzo6Y3JlYXRlKCkucmVsZWFzZVJlZigpOworICAgIHJldHVybiBydDsKIH0KIAogUmVu
ZGVyVGhlbWVNYWM6OlJlbmRlclRoZW1lTWFjKCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
U2FmYXJpLmNwcAppbmRleCAzYWZmZDFmLi4zOGQ4M2JiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVTYWZhcmkuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAwNywgMjAwOCBBcHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgS2VubmV0aCBSb2hk
ZSBDaHJpc3RpYW5zZW4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNjUsMTMgKzY2LDE4IEBAIGVu
dW0gewogICAgIGxlZnRQYWRkaW5nCiB9OwogCi1SZW5kZXJUaGVtZSogdGhlbWUoKQorUGFzc1Jl
ZlB0cjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWVTYWZhcmk6OmNyZWF0ZSgpCiB7Ci0gICAgc3Rh
dGljIFJlbmRlclRoZW1lU2FmYXJpIHNhZmFyaVRoZW1lOwotICAgIHN0YXRpYyBSZW5kZXJUaGVt
ZVdpbiB3aW5kb3dzVGhlbWU7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZW5kZXJUaGVtZVNh
ZmFyaSk7Cit9CisKK1Bhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IFJlbmRlclRoZW1lOjp0aGVtZUZv
clBhZ2UoUGFnZSogcGFnZSkKK3sKKyAgICBzdGF0aWMgUmVuZGVyVGhlbWUqIHNhZmFyaVRoZW1l
ID0gUmVuZGVyVGhlbWVTYWZhcmk6OmNyZWF0ZSgpLnJlbGVhc2VSZWYoKTsKKyAgICBzdGF0aWMg
UmVuZGVyVGhlbWUqIHdpbmRvd3NUaGVtZSA9IFJlbmRlclRoZW1lV2luOjpjcmVhdGUoKS5yZWxl
YXNlUmVmKCk7CiAgICAgaWYgKFNldHRpbmdzOjpzaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzKCkp
Ci0gICAgICAgIHJldHVybiAmd2luZG93c1RoZW1lOwotICAgIHJldHVybiAmc2FmYXJpVGhlbWU7
CisgICAgICAgIHJldHVybiB3aW5kb3dzVGhlbWU7IC8vIGtlZXAgdGhlIHJlZmVyZW5jZSBvZiBv
bmUuCisgICAgcmV0dXJuIHNhZmFyaVRoZW1lOyAvLyBrZWVwIHRoZSByZWZlcmVuY2Ugb2Ygb25l
LgogfQogCiAjaWYgIWRlZmluZWQoTkRFQlVHKSAmJiBkZWZpbmVkKFVTRV9ERUJVR19TQUZBUklf
VEhFTUUpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5o
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuaAppbmRleCA4YWM1YWNmLi4x
YmMxYTc4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5o
CisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmgKQEAgLTEsNSArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4KKyAqIENvcHly
aWdodCAoQykgMjAwOSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbgogICoKICAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCkBAIC00NSwxMCArNDYsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFNhZmFyaVRoZW1lOwogY2xh
c3MgUmVuZGVyU3R5bGU7CiAKIGNsYXNzIFJlbmRlclRoZW1lU2FmYXJpIDogcHVibGljIFJlbmRl
clRoZW1lIHsKLXB1YmxpYzoKK3ByaXZhdGU6CiAgICAgUmVuZGVyVGhlbWVTYWZhcmkoKTsKICAg
ICB2aXJ0dWFsIH5SZW5kZXJUaGVtZVNhZmFyaSgpOwogCitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8UmVuZGVyVGhlbWU+IGNyZWF0ZSgpOworCiAgICAgLy8gQSBtZXRob2QgdG8gb2J0
YWluIHRoZSBiYXNlbGluZSBwb3NpdGlvbiBmb3IgYSAibGVhZiIgY29udHJvbC4gIFRoaXMgd2ls
bCBvbmx5IGJlIHVzZWQgaWYgYSBiYXNlbGluZQogICAgIC8vIHBvc2l0aW9uIGNhbm5vdCBiZSBk
ZXRlcm1pbmVkIGJ5IGV4YW1pbmluZyBjaGlsZCBjb250ZW50LiBDaGVja2JveGVzIGFuZCByYWRp
byBidXR0b25zIGFyZSBleGFtcGxlcyBvZgogICAgIC8vIGNvbnRyb2xzIHRoYXQgbmVlZCB0byBk
byB0aGlzLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3Bw
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCmluZGV4IDFmYTUxNjIuLjVi
YTczMjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcAor
KysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKQEAgLTEsNSArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFwcGxlIEluYy4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbgogICoKICAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CkBAIC0xMzQsMTEgKzEzNSwxNiBAQCB2b2lkIFJlbmRlclRoZW1lV2luOjpzZXRXZWJLaXRJc0Jl
aW5nVW5sb2FkZWQoKQogICAgIGdXZWJLaXRJc0JlaW5nVW5sb2FkZWQgPSB0cnVlOwogfQogCitQ
YXNzUmVmUHRyPFJlbmRlclRoZW1lPiBSZW5kZXJUaGVtZVdpbjo6Y3JlYXRlKCkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFJlbmRlclRoZW1lV2luKTsKK30KKwogI2lmICFVU0UoU0FGQVJJ
X1RIRU1FKQotUmVuZGVyVGhlbWUqIHRoZW1lKCkKK1Bhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IFJl
bmRlclRoZW1lOjp0aGVtZUZvclBhZ2UoUGFnZSogcGFnZSkKIHsKLSAgICBzdGF0aWMgUmVuZGVy
VGhlbWVXaW4gd2luVGhlbWU7Ci0gICAgcmV0dXJuICZ3aW5UaGVtZTsKKyAgICBzdGF0aWMgUmVu
ZGVyVGhlbWVXaW4qIHdpblRoZW1lID0gUmVuZGVyVGhlbWVXaW46OmNyZWF0ZSgpLnJlbGVhc2VS
ZWYoKTsKKyAgICByZXR1cm4gd2luVGhlbWU7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lV2luLmgKaW5kZXggMjU0NzNhMS4uNzc3NjYwNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZVdpbi5oCkBAIC0yLDYgKzIsNyBAQAogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdl
YktpdCBwcm9qZWN0LgogICoKICAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCBBcHBsZSBDb21w
dXRlciwgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFu
c2VuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQ3LDEwICs0OCwxMyBAQCBzdHJ1Y3QgVGhlbWVE
YXRhIHsKIH07CiAKIGNsYXNzIFJlbmRlclRoZW1lV2luIDogcHVibGljIFJlbmRlclRoZW1lIHsK
LXB1YmxpYzoKK3ByaXZhdGU6CiAgICAgUmVuZGVyVGhlbWVXaW4oKTsKICAgICB+UmVuZGVyVGhl
bWVXaW4oKTsKIAorcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlbmRlclRoZW1lPiBj
cmVhdGUoKTsKKwogICAgIHZpcnR1YWwgU3RyaW5nIGV4dHJhRGVmYXVsdFN0eWxlU2hlZXQoKTsK
ICAgICB2aXJ0dWFsIFN0cmluZyBleHRyYVF1aXJrc1N0eWxlU2hlZXQoKTsKIAotLSAKMS42LjAu
NAoK
</data>
<flag name="review"
          id="16041"
          type_id="1"
          status="-"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31391</attachid>
            <date>2009-06-16 16:09:15 -0700</date>
            <delta_ts>2009-06-16 16:21:03 -0700</delta_ts>
            <desc>Fixed as many theme() as I could find</desc>
            <filename>rev2-2009-06-16-Kenneth-Rohde-Christiansen-kenneth.chr.patch</filename>
            <type>text/plain</type>
            <size>50310</size>
            <attacher name="Kenneth Rohde Christiansen">kenneth</attacher>
            
              <data encoding="base64">RnJvbSAyNjIyNjIyOTJjNjhmODNlZDViNTNmYzQ4YmJlOTFjOGEwZjIwYTgxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiA8a2VubmV0aEBz
cGlzbmlnZWwub3NtdGMuaW5kdC5vcmcuYnI+CkRhdGU6IFR1ZSwgMTYgSnVuIDIwMDkgMTU6MjA6
MjcgLTAzMDAKU3ViamVjdDogW1BBVENIXSAyMDA5LTA2LTE2ICBLZW5uZXRoIFJvaGRlIENocmlz
dGlhbnNlbiAgPGtlbm5ldGguY2hyaXN0aWFuc2VuQG9wZW5ib3NzYS5vcmc+CgogICAgICAgIFJl
dmlld2VkIGJ5IERhdmUgSHlhdHQgYW5kIEFkYW0gUm9iZW4uCgogICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjI3OAogICAgICAgIFBhdGNoIHRoYXQgbWFr
ZSBXZWJDb3JlIGhhdmUgYSBSZW5kZXJUaGVtZSBwZXIgcGFnZQoKICAgICAgICBDcmVhdGUgYSBk
aWZmZXJlbnQgUmVuZGVyVGhlbWUgcGVyIHBhZ2UsIHNvIHRoYXQgUmVuZGVyVGhlbWUgaGFzCiAg
ICAgICAgYWNjZXNzIHRvIHBhZ2Ugc3BlY2lmaWMgdGhlbWluZy4gVGhpcyBpcyBuZWVkZWQgZm9y
IHRoZSBRdCBwb3J0LCBhcyBRdAogICAgICAgIHN1cHBvcnRzIHNldHRpbmcgdGhlIHRoZW1lIChz
dHlsZSkgcGVyIHdpZGdldC4KCiAgICAgICAgVGhpcyBjaGFuZ2Ugd2FzIHN1Z2dlc3RlZCBhbmQg
ZGlzY3Vzc2VkIHdpdGggRGF2ZSBIeWF0dC4KCiAgICAgICAgTW9yZSBkZXRhaWxlZDoKCiAgICAg
ICAgMSkgQ3JlYXRlIGEgdGhlbWUgcGVyIHBhZ2Ugb3Igb25lIGdsb2JhbCBvbmUsIGRlcGVuZGlu
ZyBvbiB0aGUgbmVlZHMKICAgICAgICAgICBvZiB0aGUgcGxhdGZvcm0uCiAgICAgICAgMikgQWRk
IGFuIGFjY2Vzc2VyIHRvIHRoZSB0aGVtZSBmcm9tIFJlbmRlck9iamVjdC4KICAgICAgICAzKSBD
aGFuZ2UgYWxsIHVzZXMgb2YgdGhlIHRoZW1pbmcgdG8gYWNjZXNzIHRoZSB0aGVtZSB0aHJvdWdo
CiAgICAgICAgICAgUmVuZGVyT2JqZWN0LCB1c2luZyB0aGUgZ2xvYmFsIGRlZmF1bHQgdGhlbWUg
YXMgZmFsbGJhY2ssIHdoZW4gdGhlCiAgICAgICAgICAgZG9jdW1lbnQgb2YgUmVuZGVyT2JqZWN0
IGhhcyBubyBwYWdlLgogICAgICAgICAgIFdoZW4gd2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gYSBS
ZW5kZXJPYmplY3QsIHVzZSB0aGUgZGVmYXVsdCB0aGVtZS4KICAgICAgICA0KSBNb2RpZnkgYWxs
IFJlbmRlclRoZW1lIHBsYXRmb3JtIGltcGxlbWVudGF0aW9ucyB0byB3b3JrIHdpdGggdGhlCiAg
ICAgICAgICAgYWJvdmUgY2hhbmdlcywgc3RpbGwgY3JlYXRpbmcgb25seSBvbmUgZ2xvYmFsIHRo
ZW1lLgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgIDExMSArKysrKysrKysrKysrKysrKysrKwogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAgICAgfCAgICAyICstCiBXZWJDb3JlL2Nzcy9DU1NTdHls
ZVNlbGVjdG9yLmNwcCAgICAgICAgICAgICAgICAgICB8ICAgMTIgKy0KIFdlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuY3BwICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCArLQogV2ViQ29yZS9l
ZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwICAgICAgICAgICAgfCAgICAzICstCiBXZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgICAgICAgICAgICB8ICAgIDQgKy0K
IFdlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCAgICAgICAgICAgICAgICAgIHwgICAg
NiArLQogV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgICAyICstCiBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgIDYgKy0KIFdlYkNvcmUvcGFnZS9QYWdlLmNwcCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAgMiArCiBXZWJDb3JlL3BhZ2UvUGFnZS5oICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgIDcgKy0KIFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBN
ZW51Q2hyb21pdW0uY3BwICAgIHwgICAgNCArLQogV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVy
VGhlbWVHdGsuY3BwICAgICAgICAgICAgfCAgIDMwICsrKy0tCiBXZWJDb3JlL3BsYXRmb3JtL2d0
ay9SZW5kZXJUaGVtZUd0ay5oICAgICAgICAgICAgICB8ICAgIDYgKy0KIFdlYkNvcmUvcGxhdGZv
cm0vcXQvUmVuZGVyVGhlbWVRdC5jcHAgICAgICAgICAgICAgIHwgICAxNCArKy0KIFdlYkNvcmUv
cGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5oICAgICAgICAgICAgICAgIHwgICAgNSArLQogV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcCAgICAgICAgICAgICAgfCAgICA2ICst
CiBXZWJDb3JlL3BsYXRmb3JtL3d4L1JlbmRlclRoZW1lV3guY3BwICAgICAgICAgICAgICB8ICAg
MTcgKysrLQogV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAgICAgICAgICAgICAg
ICAgfCAgICA1ICstCiBXZWJDb3JlL3JlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAg
ICAgICAgICB8ICAgIDIgKy0KIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbHMu
Y3BwICAgICAgICAgIHwgICAxNSArKy0tCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwICAgICAgICAgICAgICAgICB8ICAgIDggKystCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuaCAgICAgICAgICAgICAgICAgICB8ICAgIDMgKwogV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWUuY3BwICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZS5oICAgICAgICAgICAgICAgICAgICB8ICAgMjYgKysrKy0tCiBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguY3BwICAgICB8ICAgMTIgKystCiBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguaCAgICAgICB8ICAgIDcg
Ky0KIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1NYWMuaCAgICAgICAgIHwg
ICAgNyArLQogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bU1hYy5tbSAgICAg
ICAgfCAgIDEyICsrLQogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5j
cHAgICAgICAgfCAgIDEzICsrLQogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1
bVdpbi5oICAgICAgICAgfCAgICA2ICstCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1h
Yy5oICAgICAgICAgICAgICAgICB8ICAgIDYgKy0KIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjLm1tICAgICAgICAgICAgICAgIHwgICAgNiArLQogV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVTYWZhcmkuY3BwICAgICAgICAgICAgfCAgIDE2ICsrLQogV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVTYWZhcmkuaCAgICAgICAgICAgICAgfCAgICA3ICstCiBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAgICAgICAgICAgICAgICB8ICAgMTIgKystCiBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5oICAgICAgICAgICAgICAgICB8ICAgIDcgKy0K
IFdlYktpdC93aW4vQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAy
NSArKysrKwogV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgICAyICstCiAzOSBmaWxlcyBjaGFuZ2VkLCAzMzkgaW5zZXJ0aW9ucygrKSwgMTAxIGRl
bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggZjNiMmRiNy4uNGNhNDlmNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMTQgQEAKKzIwMDktMDYtMTYg
IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aC5jaHJpc3RpYW5zZW5Ab3BlbmJv
c3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXZlIEh5YXR0IGFuZCBBZGFtIFJvYmVu
LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjI3
OAorICAgICAgICBQYXRjaCB0aGF0IG1ha2UgV2ViQ29yZSBoYXZlIGEgUmVuZGVyVGhlbWUgcGVy
IHBhZ2UKKworCisgICAgICAgIENyZWF0ZSBhIGRpZmZlcmVudCBSZW5kZXJUaGVtZSBwZXIgcGFn
ZSwgc28gdGhhdCBSZW5kZXJUaGVtZSBoYXMKKyAgICAgICAgYWNjZXNzIHRvIHBhZ2Ugc3BlY2lm
aWMgdGhlbWluZy4gVGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBRdCBwb3J0LCBhcyBRdAorICAgICAg
ICBzdXBwb3J0cyBzZXR0aW5nIHRoZSB0aGVtZSAoc3R5bGUpIHBlciB3aWRnZXQuCisKKyAgICAg
ICAgVGhpcyBjaGFuZ2Ugd2FzIHN1Z2dlc3RlZCBhbmQgZGlzY3Vzc2VkIHdpdGggRGF2ZSBIeWF0
dC4KKworICAgICAgICBNb3JlIGRldGFpbGVkOgorCisgICAgICAgIDEpIENyZWF0ZSBhIHRoZW1l
IHBlciBwYWdlIG9yIG9uZSBnbG9iYWwgb25lLCBkZXBlbmRpbmcgb24gdGhlIG5lZWRzCisgICAg
ICAgICAgIG9mIHRoZSBwbGF0Zm9ybS4KKyAgICAgICAgMikgQWRkIGFuIGFjY2Vzc2VyIHRvIHRo
ZSB0aGVtZSBmcm9tIFJlbmRlck9iamVjdC4KKyAgICAgICAgMykgQ2hhbmdlIGFsbCB1c2VzIG9m
IHRoZSB0aGVtaW5nIHRvIGFjY2VzcyB0aGUgdGhlbWUgdGhyb3VnaAorICAgICAgICAgICBSZW5k
ZXJPYmplY3QsIHVzaW5nIHRoZSBnbG9iYWwgZGVmYXVsdCB0aGVtZSBhcyBmYWxsYmFjaywgd2hl
biB0aGUKKyAgICAgICAgICAgZG9jdW1lbnQgb2YgUmVuZGVyT2JqZWN0IGhhcyBubyBwYWdlLgor
ICAgICAgICAgICBXaGVuIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIGEgUmVuZGVyT2JqZWN0LCB1
c2UgdGhlIGRlZmF1bHQgdGhlbWUuCisgICAgICAgIDQpIE1vZGlmeSBhbGwgUmVuZGVyVGhlbWUg
cGxhdGZvcm0gaW1wbGVtZW50YXRpb25zIHRvIHdvcmsgd2l0aCB0aGUKKyAgICAgICAgICAgYWJv
dmUgY2hhbmdlcywgc3RpbGwgY3JlYXRpbmcgb25seSBvbmUgZ2xvYmFsIHRoZW1lLgorCisKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Ym91bmRpbmdCb3hSZWN0
KToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpsb2FkRnVsbERlZmF1bHRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVj
dG9yOjpzdHlsZUZvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rv
cjo6YWRqdXN0UmVuZGVyU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rv
cjo6YXBwbHlQcm9wZXJ0eSk6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6c2V0QWN0aXZlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRhaW5lck5vZGU6OnNldEhvdmVyZWQpOgorICAgICAgICAqIGVkaXRpbmcvU2VsZWN0
aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25Db250cm9sbGVy
Ojpmb2N1c2VkT3JBY3RpdmVTdGF0ZUNoYW5nZWQpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1D
b250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNldENoZWNrZWQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6c2V0SW5kZXRlcm1pbmF0ZSk6
CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c2Vs
ZWN0aW9uTGF5b3V0Q2hhbmdlZCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp1cGRhdGVDb250cm9sVGludHMpOgorICAgICAgICAq
IHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAg
KiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnRoZW1lKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQb3B1cExpc3RCb3g6OnBhaW50Um93KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVu
ZGVyVGhlbWVHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6dGhlbWVGb3JQYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpSZW5kZXJUaGVtZUd0ayk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6flJlbmRlclRoZW1lR3RrKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lR3RrOjpndGtFbnRyeSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZUd0azo6Z3RrVHJlZVZpZXcpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9SZW5kZXJUaGVt
ZUd0ay5oOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVRdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lOjp0aGVtZUZvclBhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1JlbmRlclRo
ZW1lUXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJNZWRpYUNvbnRyb2xzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRldGVybWluZVN0YXRlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS93eC9SZW5kZXJUaGVtZVd4LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lV3g6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZTo6dGhlbWVGb3JQYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludFRleHRNYXRjaE1hcmtlcik6
CisgICAgICAgICogcmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhQ29udHJvbElucHV0RWxlbWVudDo6aGl0VGVzdCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmpl
Y3Q6OnRoZW1lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lOjphZGp1c3RTdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lOjp0aGVtZUZvclBhZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVt
ZUNocm9taXVtTGludXguaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1M
aW51eDo6flJlbmRlclRoZW1lQ2hyb21pdW1MaW51eCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRoZW1lQ2hyb21pdW1NYWMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVD
aHJvbWl1bU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1NYWM6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6dGhlbWVGb3JQYWdlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVtV2luOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRoZW1lQ2hyb21pdW1XaW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hy
b21pdW1XaW46OlJlbmRlclRoZW1lQ2hyb21pdW1XaW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVDaHJvbWl1bVdpbjo6flJlbmRlclRoZW1lQ2hyb21pdW1XaW4pOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
aGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2Up
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lOjp0aGVtZUZvclBhZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVt
ZVNhZmFyaS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
aGVtZVdpbi5oOgorCiAyMDA5LTA2LTAzICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtl
bm5ldGguY2hyaXN0aWFuc2VuQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
U2ltb24gSGF1c21hbm4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggOGM1MjJhMS4uMTc0MGI0YiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBi
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAt
MTAwOCw3ICsxMDA4LDcgQEAgSW50UmVjdCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpib3Vu
ZGluZ0JveFJlY3QoKSBjb25zdAogICAgICAgICBJbnRSZWN0IHIgPSBxdWFkc1tpXS5lbmNsb3Np
bmdCb3VuZGluZ0JveCgpOwogICAgICAgICBpZiAoIXIuaXNFbXB0eSgpKSB7CiAgICAgICAgICAg
ICBpZiAob2JqLT5zdHlsZSgpLT5oYXNBcHBlYXJhbmNlKCkpCi0gICAgICAgICAgICAgICAgdGhl
bWUoKS0+YWRqdXN0UmVwYWludFJlY3Qob2JqLCByKTsKKyAgICAgICAgICAgICAgICBvYmotPnRo
ZW1lKCktPmFkanVzdFJlcGFpbnRSZWN0KG9iaiwgcik7CiAgICAgICAgICAgICByZXN1bHQudW5p
dGUocik7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNlbGVjdG9yLmNwcCBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4IGM4
ZmUyMzQuLjc2ZDBiZDUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3Iu
Y3BwCisrKyBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC01MTYsMTMgKzUx
NiwxMyBAQCBzdGF0aWMgdm9pZCBsb2FkRnVsbERlZmF1bHRTdHlsZSgpCiAgICAgfQogCiAgICAg
Ly8gU3RyaWN0LW1vZGUgcnVsZXMuCi0gICAgU3RyaW5nIGRlZmF1bHRSdWxlcyA9IFN0cmluZyho
dG1sNFVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihodG1sNFVzZXJBZ2VudFN0eWxlU2hlZXQp
KSArIHRoZW1lKCktPmV4dHJhRGVmYXVsdFN0eWxlU2hlZXQoKTsKKyAgICBTdHJpbmcgZGVmYXVs
dFJ1bGVzID0gU3RyaW5nKGh0bWw0VXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKGh0bWw0VXNl
ckFnZW50U3R5bGVTaGVldCkpICsgUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5leHRyYURl
ZmF1bHRTdHlsZVNoZWV0KCk7CiAgICAgQ1NTU3R5bGVTaGVldCogZGVmYXVsdFNoZWV0ID0gcGFy
c2VVQVNoZWV0KGRlZmF1bHRSdWxlcyk7CiAgICAgZGVmYXVsdFN0eWxlLT5hZGRSdWxlc0Zyb21T
aGVldChkZWZhdWx0U2hlZXQsIHNjcmVlbkV2YWwoKSk7CiAgICAgZGVmYXVsdFByaW50U3R5bGUt
PmFkZFJ1bGVzRnJvbVNoZWV0KGRlZmF1bHRTaGVldCwgcHJpbnRFdmFsKCkpOwogCiAgICAgLy8g
UXVpcmtzLW1vZGUgcnVsZXMuCi0gICAgU3RyaW5nIHF1aXJrc1J1bGVzID0gU3RyaW5nKHF1aXJr
c1VzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihxdWlya3NVc2VyQWdlbnRTdHlsZVNoZWV0KSkg
KyB0aGVtZSgpLT5leHRyYVF1aXJrc1N0eWxlU2hlZXQoKTsKKyAgICBTdHJpbmcgcXVpcmtzUnVs
ZXMgPSBTdHJpbmcocXVpcmtzVXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKHF1aXJrc1VzZXJB
Z2VudFN0eWxlU2hlZXQpKSArIFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+ZXh0cmFRdWly
a3NTdHlsZVNoZWV0KCk7CiAgICAgQ1NTU3R5bGVTaGVldCogcXVpcmtzU2hlZXQgPSBwYXJzZVVB
U2hlZXQocXVpcmtzUnVsZXMpOwogICAgIGRlZmF1bHRRdWlya3NTdHlsZS0+YWRkUnVsZXNGcm9t
U2hlZXQocXVpcmtzU2hlZXQsIHNjcmVlbkV2YWwoKSk7CiB9CkBAIC0xMTI4LDcgKzExMjgsNyBA
QCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZvckVsZW1l
bnQoRWxlbWVudCogZSwgUmVuZGVyU3R5bAogICAgIHN0YXRpYyBib29sIGxvYWRlZE1lZGlhU3R5
bGVTaGVldDsKICAgICBpZiAoIWxvYWRlZE1lZGlhU3R5bGVTaGVldCAmJiAoZS0+aGFzVGFnTmFt
ZSh2aWRlb1RhZykgfHwgZS0+aGFzVGFnTmFtZShhdWRpb1RhZykpKSB7CiAgICAgICAgIGxvYWRl
ZE1lZGlhU3R5bGVTaGVldCA9IHRydWU7Ci0gICAgICAgIFN0cmluZyBtZWRpYVJ1bGVzID0gU3Ry
aW5nKG1lZGlhQ29udHJvbHNVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YobWVkaWFDb250cm9s
c1VzZXJBZ2VudFN0eWxlU2hlZXQpKSArIHRoZW1lKCktPmV4dHJhTWVkaWFDb250cm9sc1N0eWxl
U2hlZXQoKTsKKyAgICAgICAgU3RyaW5nIG1lZGlhUnVsZXMgPSBTdHJpbmcobWVkaWFDb250cm9s
c1VzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihtZWRpYUNvbnRyb2xzVXNlckFnZW50U3R5bGVT
aGVldCkpICsgUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5leHRyYU1lZGlhQ29udHJvbHNT
dHlsZVNoZWV0KCk7CiAgICAgICAgIENTU1N0eWxlU2hlZXQqIG1lZGlhQ29udHJvbHNTaGVldCA9
IHBhcnNlVUFTaGVldChtZWRpYVJ1bGVzKTsKICAgICAgICAgZGVmYXVsdFN0eWxlLT5hZGRSdWxl
c0Zyb21TaGVldChtZWRpYUNvbnRyb2xzU2hlZXQsIHNjcmVlbkV2YWwoKSk7CiAgICAgICAgIGRl
ZmF1bHRQcmludFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChtZWRpYUNvbnRyb2xzU2hlZXQsIHBy
aW50RXZhbCgpKTsKQEAgLTE1NzksNyArMTU3OSw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6
YWRqdXN0UmVuZGVyU3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50ICplKQogCiAgICAg
Ly8gTGV0IHRoZSB0aGVtZSBhbHNvIGhhdmUgYSBjcmFjayBhdCBhZGp1c3RpbmcgdGhlIHN0eWxl
LgogICAgIGlmIChzdHlsZS0+aGFzQXBwZWFyYW5jZSgpKQotICAgICAgICB0aGVtZSgpLT5hZGp1
c3RTdHlsZSh0aGlzLCBzdHlsZSwgZSwgbV9oYXNVQUFwcGVhcmFuY2UsIG1fYm9yZGVyRGF0YSwg
bV9iYWNrZ3JvdW5kRGF0YSwgbV9iYWNrZ3JvdW5kQ29sb3IpOworICAgICAgICBSZW5kZXJUaGVt
ZTo6ZGVmYXVsdFRoZW1lKCktPmFkanVzdFN0eWxlKHRoaXMsIHN0eWxlLCBlLCBtX2hhc1VBQXBw
ZWFyYW5jZSwgbV9ib3JkZXJEYXRhLCBtX2JhY2tncm91bmREYXRhLCBtX2JhY2tncm91bmRDb2xv
cik7CiAKICNpZiBFTkFCTEUoU1ZHKQogICAgIGlmIChlICYmIGUtPmlzU1ZHRWxlbWVudCgpKSB7
CkBAIC00Mzc2LDcgKzQzNzYsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVy
dHkoaW50IGlkLCBDU1NWYWx1ZSAqdmFsdWUpCiAgICAgICAgICAgICBtX2xpbmVIZWlnaHRWYWx1
ZSA9IDA7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVz
Y3JpcHRpb247Ci0gICAgICAgICAgICB0aGVtZSgpLT5zeXN0ZW1Gb250KHByaW1pdGl2ZVZhbHVl
LT5nZXRJZGVudCgpLCBmb250RGVzY3JpcHRpb24pOworICAgICAgICAgICAgUmVuZGVyVGhlbWU6
OmRlZmF1bHRUaGVtZSgpLT5zeXN0ZW1Gb250KHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpLCBm
b250RGVzY3JpcHRpb24pOwogIAogICAgICAgICAgICAgLy8gRG91YmxlLWNoZWNrIGFuZCBzZWUg
aWYgdGhlIHRoZW1lIGRpZCBhbnl0aGluZy4gIElmIG5vdCwgZG9uJ3QgYm90aGVyIHVwZGF0aW5n
IHRoZSBmb250LgogICAgICAgICAgICAgaWYgKGZvbnREZXNjcmlwdGlvbi5pc0Fic29sdXRlU2l6
ZSgpKSB7CkBAIC01ODExLDcgKzU4MTEsNyBAQCBzdGF0aWMgQ29sb3IgY29sb3JGb3JDU1NWYWx1
ZShpbnQgY3NzVmFsdWVJZCkKICAgICAgICAgaWYgKGNvbC0+Y3NzVmFsdWVJZCA9PSBjc3NWYWx1
ZUlkKQogICAgICAgICAgICAgcmV0dXJuIGNvbC0+Y29sb3I7CiAgICAgfQotICAgIHJldHVybiB0
aGVtZSgpLT5zeXN0ZW1Db2xvcihjc3NWYWx1ZUlkKTsKKyAgICByZXR1cm4gUmVuZGVyVGhlbWU6
OmRlZmF1bHRUaGVtZSgpLT5zeXN0ZW1Db2xvcihjc3NWYWx1ZUlkKTsKIH0KIAogQ29sb3IgQ1NT
U3R5bGVTZWxlY3Rvcjo6Z2V0Q29sb3JGcm9tUHJpbWl0aXZlVmFsdWUoQ1NTUHJpbWl0aXZlVmFs
dWUqIHByaW1pdGl2ZVZhbHVlKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9k
ZS5jcHAgYi9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAppbmRleCAyNTczOTA4Li4yMGNj
N2EzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9XZWJD
b3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtNzk4LDcgKzc5OCw3IEBAIHZvaWQgQ29udGFp
bmVyTm9kZTo6c2V0QWN0aXZlKGJvb2wgZG93biwgYm9vbCBwYXVzZSkKICAgICAgICAgaWYgKHJl
YWN0c1RvUHJlc3MpCiAgICAgICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgICAg
IGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCktPmhhc0FwcGVhcmFuY2UoKSkg
ewotICAgICAgICAgICAgaWYgKHRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBQcmVz
c2VkU3RhdGUpKQorICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCktPnRoZW1lKCktPnN0YXRlQ2hh
bmdlZChyZW5kZXJlcigpLCBQcmVzc2VkU3RhdGUpKQogICAgICAgICAgICAgICAgIHJlYWN0c1Rv
UHJlc3MgPSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIGlmIChyZWFjdHNUb1ByZXNzICYmIHBh
dXNlKSB7CkBAIC04NDAsNyArODQwLDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpzZXRIb3ZlcmVk
KGJvb2wgb3ZlcikKICAgICAgICAgaWYgKHJlbmRlcmVyKCktPnN0eWxlKCktPmFmZmVjdGVkQnlI
b3ZlclJ1bGVzKCkpCiAgICAgICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgICAg
IGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCktPmhhc0FwcGVhcmFuY2UoKSkK
LSAgICAgICAgICAgIHRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBIb3ZlclN0YXRl
KTsKKyAgICAgICAgICAgIHJlbmRlcmVyKCktPnRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJl
cigpLCBIb3ZlclN0YXRlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGlu
Zy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250
cm9sbGVyLmNwcAppbmRleCAxZDM2ZjUxLi43NmM3ODI1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Vk
aXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL1NlbGVj
dGlvbkNvbnRyb2xsZXIuY3BwCkBAIC00Niw3ICs0Niw2IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJl
c3VsdC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSYW5nZS5oIgotI2luY2x1ZGUg
IlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlRleHRJ
dGVyYXRvci5oIgogI2luY2x1ZGUgIlR5cGluZ0NvbW1hbmQuaCIKQEAgLTEyNjgsNyArMTI2Nyw3
IEBAIHZvaWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6Zm9jdXNlZE9yQWN0aXZlU3RhdGVDaGFuZ2Vk
KCkKICAgICAgICAgbm9kZS0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOwogICAgICAgICBpZiAoUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICBpZiAo
cmVuZGVyZXIgJiYgcmVuZGVyZXItPnN0eWxlKCktPmhhc0FwcGVhcmFuY2UoKSkKLSAgICAgICAg
ICAgICAgICB0aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVyZXIsIEZvY3VzU3RhdGUpOworICAg
ICAgICAgICAgICAgIHJlbmRlcmVyLT50aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVyZXIsIEZv
Y3VzU3RhdGUpOwogICAgIH0KIAogICAgIC8vIFNlY3VyZSBrZXlib2FyZCBlbnRyeSBpcyBzZXQg
YnkgdGhlIGFjdGl2ZSBmcmFtZS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNv
bnRyb2xFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNw
cAppbmRleCAzNmQyMGFjLi5iOTg1ZTc1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVs
ZW1lbnQuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKQogICAgICAgICBpZiAo
b2xkRGlzYWJsZWQgIT0gbV9kaXNhYmxlZCkgewogICAgICAgICAgICAgc2V0TmVlZHNTdHlsZVJl
Y2FsYygpOwogICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUo
KS0+aGFzQXBwZWFyYW5jZSgpKQotICAgICAgICAgICAgICAgIHRoZW1lKCktPnN0YXRlQ2hhbmdl
ZChyZW5kZXJlcigpLCBFbmFibGVkU3RhdGUpOworICAgICAgICAgICAgICAgIHJlbmRlcmVyKCkt
PnRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBFbmFibGVkU3RhdGUpOwogICAgICAg
ICB9CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gcmVhZG9ubHlBdHRyKSB7CiAgICAg
ICAgIGJvb2wgb2xkUmVhZE9ubHkgPSBtX3JlYWRPbmx5OwpAQCAtNzksNyArNzksNyBAQCB2b2lk
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJp
YnV0ZSAqYXR0cikKICAgICAgICAgaWYgKG9sZFJlYWRPbmx5ICE9IG1fcmVhZE9ubHkpIHsKICAg
ICAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICAgICAgICAgIGlmIChyZW5kZXJl
cigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCktPmhhc0FwcGVhcmFuY2UoKSkKLSAgICAgICAgICAg
ICAgICB0aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgUmVhZE9ubHlTdGF0ZSk7Cisg
ICAgICAgICAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS0+c3RhdGVDaGFuZ2VkKHJlbmRlcmVy
KCksIFJlYWRPbmx5U3RhdGUpOwogICAgICAgICB9CiAgICAgfSBlbHNlCiAgICAgICAgIEhUTUxF
bGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcAppbmRleCBkYmM4MThiLi5iM2M3NTY2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
CkBAIC04ODEsOSArODgxLDkgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRDaGVja2VkKGJv
b2wgbm93Q2hlY2tlZCwgYm9vbCBzZW5kQ2hhbmdlRXZlbnQpCiAgICAgc2V0TmVlZHNTdHlsZVJl
Y2FsYygpOwogCiAgICAgY2hlY2tlZFJhZGlvQnV0dG9ucyh0aGlzKS5hZGRCdXR0b24odGhpcyk7
Ci0gICAgCisKICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpLT5oYXNB
cHBlYXJhbmNlKCkpCi0gICAgICAgIHRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBD
aGVja2VkU3RhdGUpOworICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLT5zdGF0ZUNoYW5nZWQo
cmVuZGVyZXIoKSwgQ2hlY2tlZFN0YXRlKTsKIAogICAgIC8vIE9ubHkgc2VuZCBhIGNoYW5nZSBl
dmVudCBmb3IgaXRlbXMgaW4gdGhlIGRvY3VtZW50IChhdm9pZCBmaXJpbmcgZHVyaW5nCiAgICAg
Ly8gcGFyc2luZykgYW5kIGRvbid0IHNlbmQgYSBjaGFuZ2UgZXZlbnQgZm9yIGEgcmFkaW8gYnV0
dG9uIHRoYXQncyBnZXR0aW5nCkBAIC05MDUsNyArOTA1LDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVt
ZW50OjpzZXRJbmRldGVybWluYXRlKGJvb2wgX2luZGV0ZXJtaW5hdGUpCiAgICAgc2V0TmVlZHNT
dHlsZVJlY2FsYygpOwogCiAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUo
KS0+aGFzQXBwZWFyYW5jZSgpKQotICAgICAgICB0aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVy
ZXIoKSwgQ2hlY2tlZFN0YXRlKTsKKyAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS0+c3RhdGVD
aGFuZ2VkKHJlbmRlcmVyKCksIENoZWNrZWRTdGF0ZSk7CiB9CiAKIGludCBIVE1MSW5wdXRFbGVt
ZW50OjpzaXplKCkgY29uc3QKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9X
ZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IGEzNmMxYWEuLmEyMjhiZjggMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAt
NjIyLDcgKzYyMiw3IEBAIHZvaWQgRnJhbWU6OnNlbGVjdGlvbkxheW91dENoYW5nZWQoKQogICAg
IC8vIFN0YXJ0IGJsaW5raW5nIHdpdGggYSBibGFjayBjYXJldC4gQmUgc3VyZSBub3QgdG8gcmVz
dGFydCBpZiB3ZSdyZQogICAgIC8vIGFscmVhZHkgYmxpbmtpbmcgaW4gdGhlIHJpZ2h0IGxvY2F0
aW9uLgogICAgIGlmIChzaG91bGRCbGluayAmJiAhbV9jYXJldEJsaW5rVGltZXIuaXNBY3RpdmUo
KSkgewotICAgICAgICBpZiAoZG91YmxlIGJsaW5rSW50ZXJ2YWwgPSB0aGVtZSgpLT5jYXJldEJs
aW5rSW50ZXJ2YWwoKSkKKyAgICAgICAgaWYgKGRvdWJsZSBibGlua0ludGVydmFsID0gcGFnZSgp
LT50aGVtZSgpLT5jYXJldEJsaW5rSW50ZXJ2YWwoKSkKICAgICAgICAgICAgIG1fY2FyZXRCbGlu
a1RpbWVyLnN0YXJ0UmVwZWF0aW5nKGJsaW5rSW50ZXJ2YWwpOwogCiAgICAgICAgIGlmICghbV9j
YXJldFBhaW50KSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGY2NTAxYmUuLjM4YjA1ZTggMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwCkBAIC0xMjk2LDEwICsxMjk2LDEwIEBAIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVDb250
cm9sVGludHMoKQogICAgIC8vIHRvIGRlZmluZSB3aGVuIGNvbnRyb2xzIGdldCB0aGUgdGludCBh
bmQgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIHdoZW4gdGhhdCBjaGFuZ2VzLgogICAgIAogICAgIC8v
IE9wdGltaXplIHRoZSBjb21tb24gY2FzZSB3aGVyZSB3ZSBicmluZyBhIHdpbmRvdyB0byB0aGUg
ZnJvbnQgd2hpbGUgaXQncyBzdGlsbCBlbXB0eS4KLSAgICBpZiAoIW1fZnJhbWUgfHwgbV9mcmFt
ZS0+bG9hZGVyKCktPnVybCgpLmlzRW1wdHkoKSkgCisgICAgaWYgKCFtX2ZyYW1lIHx8IG1fZnJh
bWUtPmxvYWRlcigpLT51cmwoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAg
ICBpZiAodGhlbWUoKS0+c3VwcG9ydHNDb250cm9sVGludHMoKSAmJiBtX2ZyYW1lLT5jb250ZW50
UmVuZGVyZXIoKSkgeworCisgICAgaWYgKG1fZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpICYmIG1f
ZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpLT50aGVtZSgpLT5zdXBwb3J0c0NvbnRyb2xUaW50cygp
KSB7CiAgICAgICAgIGlmIChuZWVkc0xheW91dCgpKQogICAgICAgICAgICAgbGF5b3V0KCk7CiAg
ICAgICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBjb25zdCBub0NvbnRleHQgPSAwOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmlu
ZGV4IGExNDM0M2QuLjllYWNkNmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAor
KysgYi9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJQ
bHVnaW5EYXRhLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyV2lkZ2V0LmgiCisjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJTY3JpcHRD
b250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2VsZWN0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUg
IlNldHRpbmdzLmgiCkBAIC0xMjAsNiArMTIxLDcgQEAgUGFnZTo6UGFnZShDaHJvbWVDbGllbnQq
IGNocm9tZUNsaWVudCwgQ29udGV4dE1lbnVDbGllbnQqIGNvbnRleHRNZW51Q2xpZW50LCBFZGkK
ICAgICAsIG1fZGVidWdnZXIoMCkKICAgICAsIG1fY3VzdG9tSFRNTFRva2VuaXplclRpbWVEZWxh
eSgtMSkKICAgICAsIG1fY3VzdG9tSFRNTFRva2VuaXplckNodW5rU2l6ZSgtMSkKKyAgICAsIG1f
dGhlbWUoUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZSh0aGlzKSkKIHsKICAgICBpZiAoIWFsbFBh
Z2VzKSB7CiAgICAgICAgIGFsbFBhZ2VzID0gbmV3IEhhc2hTZXQ8UGFnZSo+OwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggZWVkZDI0
Yy4uYmFiNmI4NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9XZWJDb3Jl
L3BhZ2UvUGFnZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBl
cy5oIgogI2luY2x1ZGUgIkxpbmtIYXNoLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIK
KyNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5j
bHVkZSA8d3RmL093blB0ci5oPgogCkBAIC03OCw3ICs3OSw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgICAgICBQYWdlKENocm9tZUNsaWVudCosIENvbnRleHRNZW51Q2xpZW50KiwgRWRp
dG9yQ2xpZW50KiwgRHJhZ0NsaWVudCosIEluc3BlY3RvckNsaWVudCopOwogICAgICAgICB+UGFn
ZSgpOwotICAgICAgICAKKworICAgICAgICBSZW5kZXJUaGVtZSogdGhlbWUoKSBjb25zdCB7IHJl
dHVybiBtX3RoZW1lLmdldCgpOyB9OworCiAgICAgICAgIHN0YXRpYyB2b2lkIHJlZnJlc2hQbHVn
aW5zKGJvb2wgcmVsb2FkKTsKICAgICAgICAgUGx1Z2luRGF0YSogcGx1Z2luRGF0YSgpIGNvbnN0
OwogCkBAIC0yMTcsNiArMjIwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIG11
dGFibGUgUmVmUHRyPFBsdWdpbkRhdGE+IG1fcGx1Z2luRGF0YTsKIAorICAgICAgICBSZWZQdHI8
UmVuZGVyVGhlbWU+IG1fdGhlbWU7CisKICAgICAgICAgRWRpdG9yQ2xpZW50KiBtX2VkaXRvckNs
aWVudDsKIAogICAgICAgICBpbnQgbV9mcmFtZUNvdW50OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHAgYi9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcAppbmRleCBiMDBiNjI1Li41NmVmMWU5IDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcApA
QCAtNzcxLDggKzc3MSw4IEBAIHZvaWQgUG9wdXBMaXN0Qm94OjpwYWludFJvdyhHcmFwaGljc0Nv
bnRleHQqIGdjLCBjb25zdCBJbnRSZWN0JiByZWN0LCBpbnQgcm93SW5kCiAgICAgLy8gUGFpbnQg
YmFja2dyb3VuZAogICAgIENvbG9yIGJhY2tDb2xvciwgdGV4dENvbG9yOwogICAgIGlmIChyb3dJ
bmRleCA9PSBtX3NlbGVjdGVkSW5kZXgpIHsKLSAgICAgICAgYmFja0NvbG9yID0gdGhlbWUoKS0+
YWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpOwotICAgICAgICB0ZXh0Q29s
b3IgPSB0aGVtZSgpLT5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCk7Cisg
ICAgICAgIGJhY2tDb2xvciA9IFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+YWN0aXZlTGlz
dEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpOworICAgICAgICB0ZXh0Q29sb3IgPSBSZW5k
ZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCktPmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5k
Q29sb3IoKTsKICAgICB9IGVsc2UgewogICAgICAgICBiYWNrQ29sb3IgPSBzdHlsZS5iYWNrZ3Jv
dW5kQ29sb3IoKTsKICAgICAgICAgdGV4dENvbG9yID0gc3R5bGUuZm9yZWdyb3VuZENvbG9yKCk7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAgYi9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAKaW5kZXggYTk1ZjU1Ny4uMDk4
NDk3YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3Bw
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcApAQCAtMiw2ICsy
LDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAwOCBD
b2xsYWJvcmEgTHRkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEtlbm5ldGggUm9oZGUgQ2hyaXN0
aWFuc2VuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM0LDEzICszNSwxOCBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVJlbmRlclRoZW1lKiB0aGVtZSgpCitQYXNzUmVmUHRyPFJlbmRlclRo
ZW1lPiBSZW5kZXJUaGVtZUd0azo6Y3JlYXRlKCkKIHsKLSAgICBzdGF0aWMgUmVuZGVyVGhlbWVH
dGsgZ3RrVGhlbWU7Ci0gICAgcmV0dXJuICZndGtUaGVtZTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFJlbmRlclRoZW1lR3RrKCkpOwogfQogCi1zdGF0aWMgYm9vbCBtb3pHdGtJbml0aWFsaXpl
ZCA9IGZhbHNlOworUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWU6OnRoZW1lRm9y
UGFnZShQYWdlKiBwYWdlKQoreworICAgIHN0YXRpYyBSZW5kZXJUaGVtZSogcnQgPSBSZW5kZXJU
aGVtZUd0azo6Y3JlYXRlKCkucmVsZWFzZVJlZigpOworICAgIHJldHVybiBydDsKK30KKworc3Rh
dGljIGludCBtb3pHdGtSZWZDb3VudCA9IDA7CiAKIFJlbmRlclRoZW1lR3RrOjpSZW5kZXJUaGVt
ZUd0aygpCiAgICAgOiBtX2d0a1dpbmRvdygwKQpAQCAtNDgsMTggKzU0LDE4IEBAIFJlbmRlclRo
ZW1lR3RrOjpSZW5kZXJUaGVtZUd0aygpCiAgICAgLCBtX2d0a0VudHJ5KDApCiAgICAgLCBtX2d0
a1RyZWVWaWV3KDApCiB7Ci0gICAgaWYgKCFtb3pHdGtJbml0aWFsaXplZCkgewotICAgICAgICBt
b3pHdGtJbml0aWFsaXplZCA9IHRydWU7CisgICAgaWYgKCFtb3pHdGtSZWZDb3VudCkKICAgICAg
ICAgbW96X2d0a19pbml0KCk7Ci0gICAgfQorCisgICAgKyttb3pHdGtSZWZDb3VudDsKIH0KIAog
UmVuZGVyVGhlbWVHdGs6On5SZW5kZXJUaGVtZUd0aygpCiB7Ci0gICAgaWYgKG1vekd0a0luaXRp
YWxpemVkKSB7CisgICAgLS1tb3pHdGtSZWZDb3VudDsKKworICAgIGlmICghbW96R3RrUmVmQ291
bnQpCiAgICAgICAgIG1vel9ndGtfc2h1dGRvd24oKTsKLSAgICAgICAgbW96R3RrSW5pdGlhbGl6
ZWQgPSBmYWxzZTsKLSAgICB9CiB9CiAKIHN0YXRpYyBib29sIHN1cHBvcnRzRm9jdXMoQ29udHJv
bFBhcnQgYXBwZWFyYW5jZSkKQEAgLTQ3MCw3ICs0NzYsNyBAQCBHdGtXaWRnZXQqIFJlbmRlclRo
ZW1lR3RrOjpndGtFbnRyeSgpIGNvbnN0CiAgICAgICAgIHJldHVybiBtX2d0a0VudHJ5OwogCiAg
ICAgbV9ndGtFbnRyeSA9IGd0a19lbnRyeV9uZXcoKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KG1f
Z3RrRW50cnksICJzdHlsZS1zZXQiLCBHX0NBTExCQUNLKGd0a1N0eWxlU2V0Q2FsbGJhY2spLCB0
aGVtZSgpKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fZ3RrRW50cnksICJzdHlsZS1zZXQiLCBH
X0NBTExCQUNLKGd0a1N0eWxlU2V0Q2FsbGJhY2spLCBjb25zdF9jYXN0PFJlbmRlclRoZW1lR3Rr
Kj4odGhpcykpOwogICAgIGd0a19jb250YWluZXJfYWRkKGd0a0NvbnRhaW5lcigpLCBtX2d0a0Vu
dHJ5KTsKICAgICBndGtfd2lkZ2V0X3JlYWxpemUobV9ndGtFbnRyeSk7CiAKQEAgLTQ4Myw3ICs0
ODksNyBAQCBHdGtXaWRnZXQqIFJlbmRlclRoZW1lR3RrOjpndGtUcmVlVmlldygpIGNvbnN0CiAg
ICAgICAgIHJldHVybiBtX2d0a1RyZWVWaWV3OwogCiAgICAgbV9ndGtUcmVlVmlldyA9IGd0a190
cmVlX3ZpZXdfbmV3KCk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChtX2d0a1RyZWVWaWV3LCAic3R5
bGUtc2V0IiwgR19DQUxMQkFDSyhndGtTdHlsZVNldENhbGxiYWNrKSwgdGhlbWUoKSk7CisgICAg
Z19zaWduYWxfY29ubmVjdChtX2d0a1RyZWVWaWV3LCAic3R5bGUtc2V0IiwgR19DQUxMQkFDSyhn
dGtTdHlsZVNldENhbGxiYWNrKSwgY29uc3RfY2FzdDxSZW5kZXJUaGVtZUd0ayo+KHRoaXMpKTsK
ICAgICBndGtfY29udGFpbmVyX2FkZChndGtDb250YWluZXIoKSwgbV9ndGtUcmVlVmlldyk7CiAg
ICAgZ3RrX3dpZGdldF9yZWFsaXplKG1fZ3RrVHJlZVZpZXcpOwogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
UmVuZGVyVGhlbWVHdGsuaAppbmRleCA4MmE4N2NiLi42NmY3YWUyIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1JlbmRlclRoZW1lR3RrLmgKQEAgLTUsNiArNSw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDYgTWljaGFlbCBFbW1lbCBtaWtlLmVtbWVsQGdtYWlsLmNvbQogICogQ29weXJpZ2h0IChDKSAy
MDA3IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxw
IFRva2VyIDxhbHBAYXRva2VyLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBLZW5uZXRoIFJv
aGRlIENocmlzdGlhbnNlbgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBA
IC0zNCwxMCArMzUsMTMgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyVGhl
bWVHdGsgOiBwdWJsaWMgUmVuZGVyVGhlbWUgewotcHVibGljOgorcHJpdmF0ZToKICAgICBSZW5k
ZXJUaGVtZUd0aygpOwogICAgIHZpcnR1YWwgflJlbmRlclRoZW1lR3RrKCk7CiAKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gY3JlYXRlKCk7CisKICAgICAvLyBB
IG1ldGhvZCBhc2tpbmcgaWYgdGhlIHRoZW1lJ3MgY29udHJvbHMgYWN0dWFsbHkgY2FyZSBhYm91
dCByZWRyYXdpbmcgd2hlbiBob3ZlcmVkLgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0hvdmVy
KGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuY3BwIGIvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNwcAppbmRleCBiMTZjYmM0Li5mZjQzMDUwIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuY3BwCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5jcHAKQEAgLTEwNiwxMCArMTA2LDE4IEBAIFN0
eWxlUGFpbnRlcjo6flN0eWxlUGFpbnRlcigpCiAgICAgfQogfQogCi1SZW5kZXJUaGVtZSogdGhl
bWUoKQorUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWVRdDo6Y3JlYXRlKFBhZ2Uq
IHBhZ2UpCiB7Ci0gICAgc3RhdGljIFJlbmRlclRoZW1lUXQgcnQ7Ci0gICAgcmV0dXJuICZydDsK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlbmRlclRoZW1lUXQocGFnZSkpOworfQorCitQYXNz
UmVmUHRyPFJlbmRlclRoZW1lPiBSZW5kZXJUaGVtZTo6dGhlbWVGb3JQYWdlKFBhZ2UqIHBhZ2Up
Cit7CisgICAgaWYgKHBhZ2UpCisgICAgICAgIHJldHVybiBSZW5kZXJUaGVtZVF0OjpjcmVhdGUo
cGFnZSk7CisKKyAgICBzdGF0aWMgUmVuZGVyVGhlbWUqIGZhbGxiYWNrID0gUmVuZGVyVGhlbWVR
dDo6Y3JlYXRlKDApLnJlbGVhc2VSZWYoKTsKKyAgICByZXR1cm4gZmFsbGJhY2s7CiB9CiAKIFJl
bmRlclRoZW1lUXQ6OlJlbmRlclRoZW1lUXQoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9xdC9SZW5kZXJUaGVtZVF0LmggYi9XZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQu
aAppbmRleCA1Yzc4YTcyLi4wNzllMmFiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3F0
L1JlbmRlclRoZW1lUXQuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQu
aApAQCAtMzgsMTAgKzM4LDEzIEBAIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiAKIGNsYXNzIFJl
bmRlclRoZW1lUXQgOiBwdWJsaWMgUmVuZGVyVGhlbWUKIHsKLXB1YmxpYzoKK3ByaXZhdGU6CiAg
ICAgUmVuZGVyVGhlbWVRdCgpOwogICAgIHZpcnR1YWwgflJlbmRlclRoZW1lUXQoKTsKIAorcHVi
bGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlbmRlclRoZW1lPiBjcmVhdGUoUGFnZSopOwor
CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzSG92ZXIoY29uc3QgUmVuZGVyU3R5bGUqKSBjb25z
dDsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGb2N1c1JpbmcoY29uc3QgUmVuZGVyU3R5bGUq
IHN0eWxlKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBN
ZW51V2luLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5jcHAKaW5kZXgg
MmI0NzQ5YS4uMjExNjljMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBN
ZW51V2luLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCkBA
IC00ODYsOCArNDg2LDggQEAgdm9pZCBQb3B1cE1lbnU6OnBhaW50KGNvbnN0IEludFJlY3QmIGRh
bWFnZVJlY3QsIEhEQyBoZGMpCiAgICAgICAgIENvbG9yIG9wdGlvbkJhY2tncm91bmRDb2xvciwg
b3B0aW9uVGV4dENvbG9yOwogICAgICAgICBQb3B1cE1lbnVTdHlsZSBpdGVtU3R5bGUgPSBjbGll
bnQoKS0+aXRlbVN0eWxlKGluZGV4KTsKICAgICAgICAgaWYgKGluZGV4ID09IGZvY3VzZWRJbmRl
eCgpKSB7Ci0gICAgICAgICAgICBvcHRpb25CYWNrZ3JvdW5kQ29sb3IgPSB0aGVtZSgpLT5hY3Rp
dmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCk7Ci0gICAgICAgICAgICBvcHRpb25U
ZXh0Q29sb3IgPSB0aGVtZSgpLT5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9y
KCk7CisgICAgICAgICAgICBvcHRpb25CYWNrZ3JvdW5kQ29sb3IgPSBSZW5kZXJUaGVtZTo6ZGVm
YXVsdFRoZW1lKCktPmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKTsKKyAg
ICAgICAgICAgIG9wdGlvblRleHRDb2xvciA9IFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+
YWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgb3B0aW9uQmFja2dyb3VuZENvbG9yID0gaXRlbVN0eWxlLmJhY2tncm91
bmRDb2xvcigpOwogICAgICAgICAgICAgb3B0aW9uVGV4dENvbG9yID0gaXRlbVN0eWxlLmZvcmVn
cm91bmRDb2xvcigpOwpAQCAtNTI1LDcgKzUyNSw3IEBAIHZvaWQgUG9wdXBNZW51OjpwYWludChj
b25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBIREMgaGRjKQogICAgICAgICAvLyBEcmF3IHRoZSBp
dGVtIHRleHQKICAgICAgICAgaWYgKGl0ZW1TdHlsZS5pc1Zpc2libGUoKSkgewogICAgICAgICAg
ICAgaW50IHRleHRYID0gbWF4KDAsIGNsaWVudCgpLT5jbGllbnRQYWRkaW5nTGVmdCgpIC0gY2xp
ZW50KCktPmNsaWVudEluc2V0TGVmdCgpKTsKLSAgICAgICAgICAgIGlmICh0aGVtZSgpLT5wb3B1
cE9wdGlvblN1cHBvcnRzVGV4dEluZGVudCgpICYmIGl0ZW1TdHlsZS50ZXh0RGlyZWN0aW9uKCkg
PT0gTFRSKQorICAgICAgICAgICAgaWYgKFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+cG9w
dXBPcHRpb25TdXBwb3J0c1RleHRJbmRlbnQoKSAmJiBpdGVtU3R5bGUudGV4dERpcmVjdGlvbigp
ID09IExUUikKICAgICAgICAgICAgICAgICB0ZXh0WCArPSBpdGVtU3R5bGUudGV4dEluZGVudCgp
LmNhbGNNaW5WYWx1ZShpdGVtUmVjdC53aWR0aCgpKTsKICAgICAgICAgICAgIGludCB0ZXh0WSA9
IGl0ZW1SZWN0LnkoKSArIGl0ZW1Gb250LmFzY2VudCgpICsgKGl0ZW1SZWN0LmhlaWdodCgpIC0g
aXRlbUZvbnQuaGVpZ2h0KCkpIC8gMjsKICAgICAgICAgICAgIGNvbnRleHQuZHJhd0JpZGlUZXh0
KGl0ZW1Gb250LCB0ZXh0UnVuLCBJbnRQb2ludCh0ZXh0WCwgdGV4dFkpKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vd3gvUmVuZGVyVGhlbWVXeC5jcHAgYi9XZWJDb3JlL3BsYXRmb3Jt
L3d4L1JlbmRlclRoZW1lV3guY3BwCmluZGV4IGEyNjQxNmYuLjgyNGM0MDEgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vd3gvUmVuZGVyVGhlbWVXeC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS93eC9SZW5kZXJUaGVtZVd4LmNwcApAQCAtNDQsOCArNDQsMTIgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyVGhlbWVXeCA6IHB1YmxpYyBSZW5kZXJUaGVtZSB7Ci1w
dWJsaWM6Citwcml2YXRlOgogICAgIFJlbmRlclRoZW1lV3goKSA6IFJlbmRlclRoZW1lKCkgeyB9
CisgICAgdmlydHVhbCB+UmVuZGVyVGhlbWVXeCgpOworCitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8UmVuZGVyVGhlbWU+IGNyZWF0ZSgpOwogCiAgICAgLy8gQSBtZXRob2QgYXNraW5n
IGlmIHRoZSB0aGVtZSdzIGNvbnRyb2xzIGFjdHVhbGx5IGNhcmUgYWJvdXQgcmVkcmF3aW5nIHdo
ZW4gaG92ZXJlZC4KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNIb3Zlcihjb25zdCBSZW5kZXJT
dHlsZSopIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KQEAgLTExOSwxMCArMTIzLDE1IEBAIHByaXZh
dGU6CiAjZGVmaW5lIFBPUFVQX0lOVEVSTkFMX1BBRERJTkdfUklHSFQgMjAKICNlbmRpZgogCi1S
ZW5kZXJUaGVtZSogdGhlbWUoKQorUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWVX
eDo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlbmRlclRoZW1lV3goKSk7
Cit9CisKK1Bhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IFJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2Uo
UGFnZSogcGFnZSkKIHsKLSAgICBzdGF0aWMgUmVuZGVyVGhlbWVXeCBydDsKLSAgICByZXR1cm4g
JnJ0OworICAgIHN0YXRpYyBSZW5kZXJUaGVtZSogcnQgPSBSZW5kZXJUaGVtZVd4KCkuY3JlYXRl
KCkucmVsZWFzZVJlZigpOworICAgIHJldHVybiBydDsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZVd4
Ojppc0NvbnRyb2xTdHlsZWQoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBCb3JkZXJE
YXRhJiBib3JkZXIsCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94
LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCmluZGV4IDQxOGJlMTUu
LjMwZDE5MmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3Bw
CisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC0zMiw3ICszMiw2
IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckFyZW5hLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyQmxvY2suaCIKLSNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlRl
eHQuaCIKICNpbmNsdWRlICJicmVha19saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9BbHdheXNJbmxp
bmUuaD4KQEAgLTc3MCw4ICs3NjksOCBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50VGV4dE1h
dGNoTWFya2VyKEdyYXBoaWNzQ29udGV4dCogcHQsIGludCB0eCwgaW50IHR5LCBEbwogICAgIC8v
IE9wdGlvbmFsbHkgaGlnaGxpZ2h0IHRoZSB0ZXh0CiAgICAgaWYgKHJlbmRlcmVyKCktPmRvY3Vt
ZW50KCktPmZyYW1lKCktPm1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoKSkgewogICAg
ICAgICBDb2xvciBjb2xvciA9IG1hcmtlci5hY3RpdmVNYXRjaCA/Ci0gICAgICAgICAgICB0aGVt
ZSgpLT5wbGF0Zm9ybUFjdGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpIDoKLSAgICAgICAg
ICAgIHRoZW1lKCktPnBsYXRmb3JtSW5hY3RpdmVUZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IoKTsK
KyAgICAgICAgICAgIHJlbmRlcmVyKCktPnRoZW1lKCktPnBsYXRmb3JtQWN0aXZlVGV4dFNlYXJj
aEhpZ2hsaWdodENvbG9yKCkgOgorICAgICAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS0+cGxh
dGZvcm1JbmFjdGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpOwogICAgICAgICBwdC0+c2F2
ZSgpOwogICAgICAgICB1cGRhdGVHcmFwaGljc0NvbnRleHQocHQsIGNvbG9yLCBjb2xvciwgMCk7
ICAvLyBEb24ndCBkcmF3IHRleHQgYXQgYWxsIQogICAgICAgICBwdC0+Y2xpcChJbnRSZWN0KHR4
ICsgbV94LCB0eSArIHksIG1fd2lkdGgsIGgpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVy
aW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29u
dHJvbEVsZW1lbnRzLmNwcAppbmRleCA1Y2Q5MzYzLi43YWE4YzFhIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3JlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKKysrIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCkBAIC0xNTksNyArMTU5LDcgQEAgdm9pZCBN
ZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6OnVwZGF0ZVN0eWxlKCkKIGJvb2wgTWVkaWFDb250cm9s
SW5wdXRFbGVtZW50OjpoaXRUZXN0KGNvbnN0IEludFBvaW50JiBhYnNQb2ludCkKIHsKICAgICBp
ZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpLT5oYXNBcHBlYXJhbmNlKCkpCi0g
ICAgICAgIHJldHVybiB0aGVtZSgpLT5oaXRUZXN0TWVkaWFDb250cm9sUGFydChyZW5kZXJlcigp
LCBhYnNQb2ludCk7CisgICAgICAgIHJldHVybiByZW5kZXJlcigpLT50aGVtZSgpLT5oaXRUZXN0
TWVkaWFDb250cm9sUGFydChyZW5kZXJlcigpLCBhYnNQb2ludCk7CiAKICAgICByZXR1cm4gZmFs
c2U7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xz
LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbHMuY3BwCmluZGV4IDJi
MGI4MTYuLmNmZmMyMzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlh
Q29udHJvbHMuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbHMu
Y3BwCkBAIC01MSwxOSArNTEsMjAgQEAgU09GVF9MSU5LKFNhZmFyaVRoZW1lLCBTVFBhaW50UHJv
Z3Jlc3NJbmRpY2F0b3IsIHZvaWQsIEFQSUVOVFJZLCAoUHJvZ3Jlc3NJbmRpY2EKIHN0YXRpYyBU
aGVtZUNvbnRyb2xTdGF0ZSBkZXRlcm1pbmVTdGF0ZShSZW5kZXJPYmplY3QqIG8pCiB7CiAgICAg
VGhlbWVDb250cm9sU3RhdGUgcmVzdWx0ID0gMDsKLSAgICBpZiAodGhlbWUoKS0+aXNBY3RpdmUo
bykpCisgICAgUmVuZGVyVGhlbWUqIHRoZW1lID0gby0+dGhlbWUoKTsKKyAgICBpZiAodGhlbWUt
PmlzQWN0aXZlKG8pKQogICAgICAgICByZXN1bHQgfD0gU2FmYXJpVGhlbWU6OkFjdGl2ZVN0YXRl
OwotICAgIGlmICh0aGVtZSgpLT5pc0VuYWJsZWQobykgJiYgIXRoZW1lKCktPmlzUmVhZE9ubHlD
b250cm9sKG8pKQorICAgIGlmICh0aGVtZS0+aXNFbmFibGVkKG8pICYmICF0aGVtZS0+aXNSZWFk
T25seUNvbnRyb2wobykpCiAgICAgICAgIHJlc3VsdCB8PSBTYWZhcmlUaGVtZTo6RW5hYmxlZFN0
YXRlOwotICAgIGlmICh0aGVtZSgpLT5pc1ByZXNzZWQobykpCisgICAgaWYgKHRoZW1lLT5pc1By
ZXNzZWQobykpCiAgICAgICAgIHJlc3VsdCB8PSBTYWZhcmlUaGVtZTo6UHJlc3NlZFN0YXRlOwot
ICAgIGlmICh0aGVtZSgpLT5pc0NoZWNrZWQobykpCisgICAgaWYgKHRoZW1lLT5pc0NoZWNrZWQo
bykpCiAgICAgICAgIHJlc3VsdCB8PSBTYWZhcmlUaGVtZTo6Q2hlY2tlZFN0YXRlOwotICAgIGlm
ICh0aGVtZSgpLT5pc0luZGV0ZXJtaW5hdGUobykpCisgICAgaWYgKHRoZW1lLT5pc0luZGV0ZXJt
aW5hdGUobykpCiAgICAgICAgIHJlc3VsdCB8PSBTYWZhcmlUaGVtZTo6SW5kZXRlcm1pbmF0ZUNo
ZWNrZWRTdGF0ZTsKLSAgICBpZiAodGhlbWUoKS0+aXNGb2N1c2VkKG8pKQorICAgIGlmICh0aGVt
ZS0+aXNGb2N1c2VkKG8pKQogICAgICAgICByZXN1bHQgfD0gU2FmYXJpVGhlbWU6OkZvY3VzZWRT
dGF0ZTsKLSAgICBpZiAodGhlbWUoKS0+aXNEZWZhdWx0KG8pKQorICAgIGlmICh0aGVtZS0+aXNE
ZWZhdWx0KG8pKQogICAgICAgICByZXN1bHQgfD0gU2FmYXJpVGhlbWU6OkRlZmF1bHRTdGF0ZTsK
ICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXgg
ZjgxMDE4ZC4uZDU2MTgzMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC00Myw3
ICs0Myw2IEBACiAjaW5jbHVkZSAiUmVuZGVyVGFibGVDZWxsLmgiCiAjaW5jbHVkZSAiUmVuZGVy
VGFibGVDb2wuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZVJvdy5oIgotI2luY2x1ZGUgIlJlbmRl
clRoZW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybVN0
YXRlLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgpAQCAtMjE0LDYgKzIxMywxMyBAQCBSZW5kZXJP
YmplY3Q6On5SZW5kZXJPYmplY3QoKQogI2VuZGlmCiB9CiAKK1JlbmRlclRoZW1lKiBSZW5kZXJP
YmplY3Q6OnRoZW1lKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZG9jdW1lbnQoKS0+cGFnZSgpKTsK
KworICAgIHJldHVybiBkb2N1bWVudCgpLT5wYWdlKCktPnRoZW1lKCk7Cit9CisKIGJvb2wgUmVu
ZGVyT2JqZWN0Ojppc0Rlc2NlbmRhbnRPZihjb25zdCBSZW5kZXJPYmplY3QqIG9iaikgY29uc3QK
IHsKICAgICBmb3IgKGNvbnN0IFJlbmRlck9iamVjdCogciA9IHRoaXM7IHI7IHIgPSByLT5tX3Bh
cmVudCkgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCAwOTAxYmZmLi40MjBmNGFkIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApAQCAtNDgsNiArNDgsNyBAQCBjbGFzcyBSZW5kZXJJ
bmxpbmU7CiBjbGFzcyBSZW5kZXJCbG9jazsKIGNsYXNzIFJlbmRlckZsb3c7CiBjbGFzcyBSZW5k
ZXJMYXllcjsKK2NsYXNzIFJlbmRlclRoZW1lOwogY2xhc3MgVHJhbnNmb3JtU3RhdGU7CiBjbGFz
cyBWaXNpYmxlUG9zaXRpb247CiAKQEAgLTEzNyw2ICsxMzgsOCBAQCBwdWJsaWM6CiAgICAgUmVu
ZGVyT2JqZWN0KE5vZGUqKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJPYmplY3QoKTsKIAorICAgIFJl
bmRlclRoZW1lKiB0aGVtZSgpIGNvbnN0OworCiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5k
ZXJOYW1lKCkgY29uc3QgPSAwOwogCiAgICAgUmVuZGVyT2JqZWN0KiBwYXJlbnQoKSBjb25zdCB7
IHJldHVybiBtX3BhcmVudDsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWUuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCmluZGV4IGU2N2U2
MTIuLjRiZGMwNDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNw
cAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKQEAgLTYyLDcgKzYyLDcg
QEAgdm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0U3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0
b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWwKICAgICBlbHNlIGlmIChzdHlsZS0+ZGlzcGxheSgp
ID09IENPTVBBQ1QgfHwgc3R5bGUtPmRpc3BsYXkoKSA9PSBSVU5fSU4gfHwgc3R5bGUtPmRpc3Bs
YXkoKSA9PSBMSVNUX0lURU0gfHwgc3R5bGUtPmRpc3BsYXkoKSA9PSBUQUJMRSkKICAgICAgICAg
c3R5bGUtPnNldERpc3BsYXkoQkxPQ0spOwogCi0gICAgaWYgKFVBSGFzQXBwZWFyYW5jZSAmJiB0
aGVtZSgpLT5pc0NvbnRyb2xTdHlsZWQoc3R5bGUsIGJvcmRlciwgYmFja2dyb3VuZCwgYmFja2dy
b3VuZENvbG9yKSkgeworICAgIGlmIChVQUhhc0FwcGVhcmFuY2UgJiYgaXNDb250cm9sU3R5bGVk
KHN0eWxlLCBib3JkZXIsIGJhY2tncm91bmQsIGJhY2tncm91bmRDb2xvcikpIHsKICAgICAgICAg
aWYgKHBhcnQgPT0gTWVudWxpc3RQYXJ0KSB7CiAgICAgICAgICAgICBzdHlsZS0+c2V0QXBwZWFy
YW5jZShNZW51bGlzdEJ1dHRvblBhcnQpOwogICAgICAgICAgICAgcGFydCA9IE1lbnVsaXN0QnV0
dG9uUGFydDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmggYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCmluZGV4IGJjODFkNGQuLjVjODdlYmQgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgKKysrIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWUuaApAQCAtMjMsMTMgKzIzLDE2IEBACiAjaWZuZGVmIFJlbmRl
clRoZW1lX2gKICNkZWZpbmUgUmVuZGVyVGhlbWVfaAogCi0jaW5jbHVkZSAiUmVuZGVyT2JqZWN0
LmgiCiAjaWYgVVNFKE5FV19USEVNRSkKICNpbmNsdWRlICJUaGVtZS5oIgogI2Vsc2UKICNpbmNs
dWRlICJUaGVtZVR5cGVzLmgiCiAjZW5kaWYKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKyNp
bmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCisjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM4LDExICs0MSwyNCBAQCBjbGFzcyBQb3B1cE1lbnU7CiBj
bGFzcyBSZW5kZXJNZW51TGlzdDsKIGNsYXNzIENTU1N0eWxlU2hlZXQ7CiAKLWNsYXNzIFJlbmRl
clRoZW1lIHsKLXB1YmxpYzoKK2NsYXNzIFJlbmRlclRoZW1lIDogcHVibGljIFJlZkNvdW50ZWQ8
UmVuZGVyVGhlbWU+IHsKK3Byb3RlY3RlZDoKICAgICBSZW5kZXJUaGVtZSgpOworCitwdWJsaWM6
CiAgICAgdmlydHVhbCB+UmVuZGVyVGhlbWUoKSB7IH0KIAorICAgIC8vIFRoaXMgZnVuY3Rpb24g
aXMgdG8gYmUgaW1wbGVtZW50ZWQgaW4geW91ciBwbGF0Zm9ybS1zcGVjaWZpYyB0aGVtZSBpbXBs
ZW1lbnRhdGlvbiB0byBoYW5kIGJhY2sgdGhlCisgICAgLy8gYXBwcm9wcmlhdGUgcGxhdGZvcm0g
dGhlbWUuIFdoZW4gdGhlIHRoZW1lIGlzIG5lZWRlZCBpbiBub24tcGFnZSBkZXBlbmRlbnQgY29k
ZSwgYSBkZWZhdWx0IHRoZW1lIGlzCisgICAgLy8gdXNlZCBhcyBmYWxsYmFjaywgd2hpY2ggaXMg
cmV0dXJuZWQgZm9yIGEgbnVsbGVkIHBhZ2UsIHNvIHRoZSBwbGF0Zm9ybSBjb2RlIG5lZWRzIHRv
IGFjY291bnQgZm9yIHRoaXMuCisgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IHRo
ZW1lRm9yUGFnZShQYWdlKiBwYWdlKTsKKworICAgIC8vIFdoZW4gdGhlIHRoZW1lIGlzIG5lZWRl
ZCBpbiBub24tcGFnZSBkZXBlbmRlbnQgY29kZSwgdGhlIGRlZmF1bHRUaGVtZSgpIGlzIHVzZWQg
YXMgZmFsbGJhY2suCisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFJlbmRlclRoZW1lPiBk
ZWZhdWx0VGhlbWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoZW1lRm9yUGFnZSgwKTsKKyAg
ICB9OworCiAgICAgLy8gVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW5ldmVyIHN0eWxlIGhhcyBi
ZWVuIGNvbXB1dGVkIGZvciBhbiBlbGVtZW50IGFuZCB0aGUgYXBwZWFyYW5jZQogICAgIC8vIHBy
b3BlcnR5IGhhcyBiZWVuIHNldCB0byBhIHZhbHVlIG90aGVyIHRoYW4gIm5vbmUiLiAgVGhlIHRo
ZW1lIHNob3VsZCBtYXAgaW4gYWxsIG9mIHRoZSBhcHByb3ByaWF0ZQogICAgIC8vIG1ldHJpY3Mg
YW5kIGRlZmF1bHRzIGdpdmVuIHRoZSBjb250ZW50cyBvZiB0aGUgc3R5bGUuICBUaGlzIGluY2x1
ZGVzIHNvcGhpc3RpY2F0ZWQgb3BlcmF0aW9ucyBsaWtlCkBAIC0yNTcsMTAgKzI3Myw2IEBAIHBy
aXZhdGU6CiAjZW5kaWYKIH07CiAKLS8vIEZ1bmN0aW9uIHRvIG9idGFpbiB0aGUgdGhlbWUuICBU
aGlzIGlzIGltcGxlbWVudGVkIGluIHlvdXIgcGxhdGZvcm0tc3BlY2lmaWMgdGhlbWUgaW1wbGVt
ZW50YXRpb24gdG8gaGFuZAotLy8gYmFjayB0aGUgYXBwcm9wcmlhdGUgcGxhdGZvcm0gdGhlbWUu
Ci1SZW5kZXJUaGVtZSogdGhlbWUoKTsKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gUmVuZGVyVGhlbWVfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVDaHJvbWl1bUxpbnV4LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hy
b21pdW1MaW51eC5jcHAKaW5kZXggOTRlZTY0Zi4uN2M0MWRiNSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmNwcAorKysgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguY3BwCkBAIC0zLDYgKzMsNyBAQAogICog
Q29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CiAgKiBDb3B5cmln
aHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBH
b29nbGUgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFu
c2VuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTExMywxMCArMTE0LDE1IEBAIHN0YXRpYyBIVE1M
TWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnRQYXJlbnQoTm9kZSogbm9kZSkKIH0KICNlbmRpZgog
Ci1SZW5kZXJUaGVtZSogdGhlbWUoKQorUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhl
bWVDaHJvbWl1bUxpbnV4OjpjcmVhdGUoKQogewotICAgIHN0YXRpYyBSZW5kZXJUaGVtZUNocm9t
aXVtTGludXggdGhlbWU7Ci0gICAgcmV0dXJuICZ0aGVtZTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eCgpKTsKK30KKworUGFzc1JlZlB0cjxSZW5kZXJU
aGVtZT4gUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZShQYWdlKiBwYWdlKQoreworICAgIHN0YXRp
YyBSZW5kZXJUaGVtZSogcnQgPSBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OmNyZWF0ZSgpLnJl
bGVhc2VSZWYoKTsKKyAgICByZXR1cm4gcnQ7CiB9CiAKIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51
eDo6UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4KCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVDaHJvbWl1bUxpbnV4LmgKaW5kZXggNzgzODUwOS4uZWJlNjcwYyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmgKKysrIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmgKQEAgLTcsNiArNyw3IEBACiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KICAqIENvcHly
aWdodCAoQykgMjAwOCwgMjAwOSBHb29nbGUsIEluYy4KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4KICAqCiAg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwpAQCAtMzQsOCArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAg
ICBjbGFzcyBSZW5kZXJUaGVtZUNocm9taXVtTGludXggOiBwdWJsaWMgUmVuZGVyVGhlbWUgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4KCk7Ci0gICAgICAg
IH5SZW5kZXJUaGVtZUNocm9taXVtTGludXgoKSB7IH0KKyAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8UmVuZGVyVGhlbWU+IGNyZWF0ZSgpOwogCiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIGV4dHJh
RGVmYXVsdFN0eWxlU2hlZXQoKTsKICAgICAgICAgdmlydHVhbCBTdHJpbmcgZXh0cmFRdWlya3NT
dHlsZVNoZWV0KCk7CkBAIC0xMjksNiArMTI5LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2aXJ0dWFsIENvbG9yIGluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xv
cigpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgUmVuZGVyVGhlbWVDaHJvbWl1bUxp
bnV4KCk7CisgICAgICAgIH5SZW5kZXJUaGVtZUNocm9taXVtTGludXgoKSB7IH0KKwogICAgICAg
ICBpbnQgbWVudUxpc3RJbnRlcm5hbFBhZGRpbmcoUmVuZGVyU3R5bGUqLCBpbnQgcGFkZGluZ1R5
cGUpIGNvbnN0OwogICAgICAgICBib29sIHBhaW50TWVkaWFCdXR0b25JbnRlcm5hbChHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiwgSW1hZ2UqKTsKICAgICB9OwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bU1hYy5oIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bU1hYy5oCmluZGV4IGYwNzIwMDAuLmM3ZDBhOWYgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1NYWMuaAorKysg
Yi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTWFjLmgKQEAgLTMsNiArMyw3
IEBACiAgKgogICogQ29weXJpZ2h0IChDKSAyMDA1IEFwcGxlIENvbXB1dGVyLCBJbmMuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgR29vZ2xlLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNDEs
OCArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBSZW5kZXJUaGVtZUNo
cm9taXVtTWFjIDogcHVibGljIFJlbmRlclRoZW1lIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFJl
bmRlclRoZW1lQ2hyb21pdW1NYWMoKTsKLSAgICAgICAgdmlydHVhbCB+UmVuZGVyVGhlbWVDaHJv
bWl1bU1hYygpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gY3JlYXRl
KCk7CiAKICAgICAgICAgLy8gQSBtZXRob2QgdG8gb2J0YWluIHRoZSBiYXNlbGluZSBwb3NpdGlv
biBmb3IgYSAibGVhZiIgY29udHJvbC4gIFRoaXMgd2lsbCBvbmx5IGJlIHVzZWQgaWYgYSBiYXNl
bGluZQogICAgICAgICAvLyBwb3NpdGlvbiBjYW5ub3QgYmUgZGV0ZXJtaW5lZCBieSBleGFtaW5p
bmcgY2hpbGQgY29udGVudC4gQ2hlY2tib3hlcyBhbmQgcmFkaW8gYnV0dG9ucyBhcmUgZXhhbXBs
ZXMgb2YKQEAgLTE0MCw2ICsxNDAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBwYWludE1lZGlhU2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVu
ZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICBwcml2YXRlOgor
ICAgICAgICBSZW5kZXJUaGVtZUNocm9taXVtTWFjKCk7CisgICAgICAgIHZpcnR1YWwgflJlbmRl
clRoZW1lQ2hyb21pdW1NYWMoKTsKKwogICAgICAgICBJbnRSZWN0IGluZmxhdGVSZWN0KGNvbnN0
IEludFJlY3QmLCBjb25zdCBJbnRTaXplJiwgY29uc3QgaW50KiBtYXJnaW5zLCBmbG9hdCB6b29t
TGV2ZWwgPSAxLjBmKSBjb25zdDsKIAogICAgICAgICAvLyBHZXQgdGhlIGNvbnRyb2wgc2l6ZSBi
YXNlZCBvZmYgdGhlIGZvbnQuICBVc2VkIGJ5IHNvbWUgb2YgdGhlIGNvbnRyb2xzIChsaWtlIGJ1
dHRvbnMpLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1
bU1hYy5tbSBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1NYWMubW0KaW5k
ZXggZjYwODFhNS4uNjQxN2Y0YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVDaHJvbWl1bU1hYy5tbQorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNo
cm9taXVtTWFjLm1tCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNSwg
MjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDgsIDIwMDkgR29vZ2xlLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
S2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTI0LDEw
ICsxMjUsMTUgQEAgSW50UmVjdCBOU1JlY3RUb0ludFJlY3QoY29uc3QgTlNSZWN0ICYgcmVjdCkK
ICAgICByZXR1cm4gSW50UmVjdChyZWN0Lm9yaWdpbi54LCByZWN0Lm9yaWdpbi55LCByZWN0LnNp
emUud2lkdGgsIHJlY3Quc2l6ZS5oZWlnaHQpOwogfQogCi1SZW5kZXJUaGVtZSogdGhlbWUoKQor
UGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWVDaHJvbWl1bU1hYzo6Y3JlYXRlKCkK
IHsKLSAgICBzdGF0aWMgUmVuZGVyVGhlbWVDaHJvbWl1bU1hYyogbWFjVGhlbWUgPSBuZXcgUmVu
ZGVyVGhlbWVDaHJvbWl1bU1hYzsKLSAgICByZXR1cm4gbWFjVGhlbWU7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBSZW5kZXJUaGVtZUNocm9taXVtTWFjKTsKK30KKworUGFzc1JlZlB0cjxSZW5k
ZXJUaGVtZT4gUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZShQYWdlKiBwYWdlKQoreworICAgIHN0
YXRpYyBSZW5kZXJUaGVtZSogcnQgPSBSZW5kZXJUaGVtZUNocm9taXVtTWFjOjpjcmVhdGUoKS5y
ZWxlYXNlUmVmKCk7CisgICAgcmV0dXJuIHJ0OwogfQogCiBSZW5kZXJUaGVtZUNocm9taXVtTWFj
OjpSZW5kZXJUaGVtZUNocm9taXVtTWFjKCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lQ2hyb21pdW1XaW4uY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVDaHJvbWl1bVdpbi5jcHAKaW5kZXggNTI4ODE5MS4uN2RmNmU2MCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHAKKysrIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHAKQEAgLTMsNiArMyw3IEBACiAgKgog
ICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDgsIDIwMDkgR29vZ2xlLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgS2VubmV0
aCBSb2hkZSBDaHJpc3RpYW5zZW4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjY1LDExICsyNjYs
MTUgQEAgc3RhdGljIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudFBhcmVudChOb2RlKiBu
b2RlKQogfQogI2VuZGlmCiAKLS8vIEltcGxlbWVudCBXZWJDb3JlOjp0aGVtZSgpIGZvciBnZXR0
aW5nIHRoZSBnbG9iYWwgUmVuZGVyVGhlbWUuCi1SZW5kZXJUaGVtZSogdGhlbWUoKQorUGFzc1Jl
ZlB0cjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6Y3JlYXRlKCkKIHsKLSAg
ICBzdGF0aWMgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbiB3aW5UaGVtZTsKLSAgICByZXR1cm4gJndp
blRoZW1lOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbik7
Cit9CisKK1Bhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IFJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2Uo
UGFnZSogcGFnZSkKK3sKKyAgICBzdGF0aWMgUmVuZGVyVGhlbWUqIHJ0ID0gUmVuZGVyVGhlbWVD
aHJvbWl1bVdpbjo6Y3JlYXRlKCkucmVsZWFzZVJlZigpOworICAgIHJldHVybiBydDsKIH0KIAog
U3RyaW5nIFJlbmRlclRoZW1lQ2hyb21pdW1XaW46OmV4dHJhRGVmYXVsdFN0eWxlU2hlZXQoKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5oIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5oCmluZGV4IDZiYTY1OTUu
Ljg4ODRlMGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21p
dW1XaW4uaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtV2luLmgK
QEAgLTQ0LDggKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgUmVuZGVy
VGhlbWVDaHJvbWl1bVdpbiA6IHB1YmxpYyBSZW5kZXJUaGVtZSB7CiAgICAgcHVibGljOgotICAg
ICAgICBSZW5kZXJUaGVtZUNocm9taXVtV2luKCkgeyB9Ci0gICAgICAgIH5SZW5kZXJUaGVtZUNo
cm9taXVtV2luKCkgeyB9CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlbmRlclRoZW1lPiBj
cmVhdGUoKTsKIAogICAgICAgICB2aXJ0dWFsIFN0cmluZyBleHRyYURlZmF1bHRTdHlsZVNoZWV0
KCk7CiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIGV4dHJhUXVpcmtzU3R5bGVTaGVldCgpOwpAQCAt
MTQxLDYgKzE0MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIHZvaWQg
c2V0RGVmYXVsdEZvbnRTaXplKGludCk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBSZW5kZXJU
aGVtZUNocm9taXVtV2luKCkgeyB9CisgICAgICAgIH5SZW5kZXJUaGVtZUNocm9taXVtV2luKCkg
eyB9CisKICAgICAgICAgdW5zaWduZWQgZGV0ZXJtaW5lU3RhdGUoUmVuZGVyT2JqZWN0Kik7CiAg
ICAgICAgIHVuc2lnbmVkIGRldGVybWluZVNsaWRlclRodW1iU3RhdGUoUmVuZGVyT2JqZWN0Kik7
CiAgICAgICAgIHVuc2lnbmVkIGRldGVybWluZUNsYXNzaWNTdGF0ZShSZW5kZXJPYmplY3QqKTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmggYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCmluZGV4IDYzZjFkOTcuLmI1MzIzNTIgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmgKKysrIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaApAQCAtMzksOCArMzksNyBAQCBjbGFzcyBSZW5kZXJT
dHlsZTsKIAogY2xhc3MgUmVuZGVyVGhlbWVNYWMgOiBwdWJsaWMgUmVuZGVyVGhlbWUgewogcHVi
bGljOgotICAgIFJlbmRlclRoZW1lTWFjKCk7Ci0gICAgdmlydHVhbCB+UmVuZGVyVGhlbWVNYWMo
KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gY3JlYXRlKCk7CiAKICAgICAv
LyBBIG1ldGhvZCBhc2tpbmcgaWYgdGhlIGNvbnRyb2wgY2hhbmdlcyBpdHMgdGludCB3aGVuIHRo
ZSB3aW5kb3cgaGFzIGZvY3VzIG9yIG5vdC4KICAgICB2aXJ0dWFsIGJvb2wgY29udHJvbFN1cHBv
cnRzVGludHMoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3Q7CkBAIC0xMzQsNiArMTMzLDkgQEAg
cHJvdGVjdGVkOgogI2VuZGlmCiAKIHByaXZhdGU6CisgICAgUmVuZGVyVGhlbWVNYWMoKTsKKyAg
ICB2aXJ0dWFsIH5SZW5kZXJUaGVtZU1hYygpOworCiAgICAgSW50UmVjdCBpbmZsYXRlUmVjdChj
b25zdCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYsIGNvbnN0IGludCogbWFyZ2lucywgZmxvYXQg
em9vbUxldmVsID0gMS4wZikgY29uc3Q7CiAKICAgICBGbG9hdFJlY3QgY29udmVydFRvUGFpbnRp
bmdSZWN0KGNvbnN0IFJlbmRlck9iamVjdCogaW5wdXRSZW5kZXJlciwgY29uc3QgUmVuZGVyT2Jq
ZWN0KiBwYXJ0UmVuZGVyZXIsIGNvbnN0IEZsb2F0UmVjdCYgaW5wdXRSZWN0LCBjb25zdCBJbnRS
ZWN0JiByKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
TWFjLm1tIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KaW5kZXggYzNlYzkx
YS4uMmY0NDAzNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMu
bW0KKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTEwMSwxMCAr
MTAxLDEwIEBAIGVudW0gewogICAgIGxlZnRQYWRkaW5nCiB9OwogCi1SZW5kZXJUaGVtZSogdGhl
bWUoKQorUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZShQ
YWdlKiBwYWdlKQogewotICAgIHN0YXRpYyBSZW5kZXJUaGVtZU1hYyogbWFjVGhlbWUgPSBuZXcg
UmVuZGVyVGhlbWVNYWM7Ci0gICAgcmV0dXJuIG1hY1RoZW1lOworICAgIHN0YXRpYyBSZW5kZXJU
aGVtZSogcnQgPSBSZW5kZXJUaGVtZU1hYzo6Y3JlYXRlKCkucmVsZWFzZVJlZigpOworICAgIHJl
dHVybiBydDsKIH0KIAogUmVuZGVyVGhlbWVNYWM6OlJlbmRlclRoZW1lTWFjKCkKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcCBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcAppbmRleCAzYWZmZDFmLi4zOGQ4M2JiIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAKKysrIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBBcHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAt
NjUsMTMgKzY2LDE4IEBAIGVudW0gewogICAgIGxlZnRQYWRkaW5nCiB9OwogCi1SZW5kZXJUaGVt
ZSogdGhlbWUoKQorUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWVTYWZhcmk6OmNy
ZWF0ZSgpCiB7Ci0gICAgc3RhdGljIFJlbmRlclRoZW1lU2FmYXJpIHNhZmFyaVRoZW1lOwotICAg
IHN0YXRpYyBSZW5kZXJUaGVtZVdpbiB3aW5kb3dzVGhlbWU7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBSZW5kZXJUaGVtZVNhZmFyaSk7Cit9CisKK1Bhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IFJl
bmRlclRoZW1lOjp0aGVtZUZvclBhZ2UoUGFnZSogcGFnZSkKK3sKKyAgICBzdGF0aWMgUmVuZGVy
VGhlbWUqIHNhZmFyaVRoZW1lID0gUmVuZGVyVGhlbWVTYWZhcmk6OmNyZWF0ZSgpLnJlbGVhc2VS
ZWYoKTsKKyAgICBzdGF0aWMgUmVuZGVyVGhlbWUqIHdpbmRvd3NUaGVtZSA9IFJlbmRlclRoZW1l
V2luOjpjcmVhdGUoKS5yZWxlYXNlUmVmKCk7CiAgICAgaWYgKFNldHRpbmdzOjpzaG91bGRQYWlu
dE5hdGl2ZUNvbnRyb2xzKCkpCi0gICAgICAgIHJldHVybiAmd2luZG93c1RoZW1lOwotICAgIHJl
dHVybiAmc2FmYXJpVGhlbWU7CisgICAgICAgIHJldHVybiB3aW5kb3dzVGhlbWU7IC8vIGtlZXAg
dGhlIHJlZmVyZW5jZSBvZiBvbmUuCisgICAgcmV0dXJuIHNhZmFyaVRoZW1lOyAvLyBrZWVwIHRo
ZSByZWZlcmVuY2Ugb2Ygb25lLgogfQogCiAjaWYgIWRlZmluZWQoTkRFQlVHKSAmJiBkZWZpbmVk
KFVTRV9ERUJVR19TQUZBUklfVEhFTUUpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZVNhZmFyaS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmku
aAppbmRleCA4YWM1YWNmLi5kMGE3MGVmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZVNhZmFyaS5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2Fm
YXJpLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFw
cGxlIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNl
bgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC00Niw4ICs0Nyw3IEBAIGNsYXNzIFJlbmRlclN0eWxl
OwogCiBjbGFzcyBSZW5kZXJUaGVtZVNhZmFyaSA6IHB1YmxpYyBSZW5kZXJUaGVtZSB7CiBwdWJs
aWM6Ci0gICAgUmVuZGVyVGhlbWVTYWZhcmkoKTsKLSAgICB2aXJ0dWFsIH5SZW5kZXJUaGVtZVNh
ZmFyaSgpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlbmRlclRoZW1lPiBjcmVhdGUoKTsKIAog
ICAgIC8vIEEgbWV0aG9kIHRvIG9idGFpbiB0aGUgYmFzZWxpbmUgcG9zaXRpb24gZm9yIGEgImxl
YWYiIGNvbnRyb2wuICBUaGlzIHdpbGwgb25seSBiZSB1c2VkIGlmIGEgYmFzZWxpbmUKICAgICAv
LyBwb3NpdGlvbiBjYW5ub3QgYmUgZGV0ZXJtaW5lZCBieSBleGFtaW5pbmcgY2hpbGQgY29udGVu
dC4gQ2hlY2tib3hlcyBhbmQgcmFkaW8gYnV0dG9ucyBhcmUgZXhhbXBsZXMgb2YKQEAgLTEzNyw2
ICsxMzcsOSBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYKIAogcHJpdmF0ZToKKyAgICBSZW5kZXJUaGVt
ZVNhZmFyaSgpOworICAgIHZpcnR1YWwgflJlbmRlclRoZW1lU2FmYXJpKCk7CisKICAgICBJbnRS
ZWN0IGluZmxhdGVSZWN0KGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXplJiwgY29uc3QgaW50
KiBtYXJnaW5zKSBjb25zdDsKIAogICAgIC8vIEdldCB0aGUgY29udHJvbCBzaXplIGJhc2VkIG9m
ZiB0aGUgZm9udC4gIFVzZWQgYnkgc29tZSBvZiB0aGUgY29udHJvbHMgKGxpa2UgYnV0dG9ucyku
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAgYi9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKaW5kZXggMWZhNTE2Mi4uNWJhNzMyMCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCisrKyBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5jLgorICogQ29weXJpZ2h0IChDKSAy
MDA5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTEz
NCwxMSArMTM1LDE2IEBAIHZvaWQgUmVuZGVyVGhlbWVXaW46OnNldFdlYktpdElzQmVpbmdVbmxv
YWRlZCgpCiAgICAgZ1dlYktpdElzQmVpbmdVbmxvYWRlZCA9IHRydWU7CiB9CiAKK1Bhc3NSZWZQ
dHI8UmVuZGVyVGhlbWU+IFJlbmRlclRoZW1lV2luOjpjcmVhdGUoKQoreworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgUmVuZGVyVGhlbWVXaW4pOworfQorCiAjaWYgIVVTRShTQUZBUklfVEhFTUUp
Ci1SZW5kZXJUaGVtZSogdGhlbWUoKQorUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhl
bWU6OnRoZW1lRm9yUGFnZShQYWdlKiBwYWdlKQogewotICAgIHN0YXRpYyBSZW5kZXJUaGVtZVdp
biB3aW5UaGVtZTsKLSAgICByZXR1cm4gJndpblRoZW1lOworICAgIHN0YXRpYyBSZW5kZXJUaGVt
ZVdpbiogd2luVGhlbWUgPSBSZW5kZXJUaGVtZVdpbjo6Y3JlYXRlKCkucmVsZWFzZVJlZigpOwor
ICAgIHJldHVybiB3aW5UaGVtZTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZVdpbi5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVX
aW4uaAppbmRleCAyNTQ3M2ExLi45OWMyMDA0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZVdpbi5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2lu
LmgKQEAgLTIsNiArMiw3IEBACiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IHBy
b2plY3QuCiAgKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4IEFwcGxlIENvbXB1dGVyLCBJ
bmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4KICAq
CiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwpAQCAtNDgsOCArNDksNyBAQCBzdHJ1Y3QgVGhlbWVEYXRhIHsKIAog
Y2xhc3MgUmVuZGVyVGhlbWVXaW4gOiBwdWJsaWMgUmVuZGVyVGhlbWUgewogcHVibGljOgotICAg
IFJlbmRlclRoZW1lV2luKCk7Ci0gICAgflJlbmRlclRoZW1lV2luKCk7CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8UmVuZGVyVGhlbWU+IGNyZWF0ZSgpOwogCiAgICAgdmlydHVhbCBTdHJpbmcgZXh0
cmFEZWZhdWx0U3R5bGVTaGVldCgpOwogICAgIHZpcnR1YWwgU3RyaW5nIGV4dHJhUXVpcmtzU3R5
bGVTaGVldCgpOwpAQCAtMTM1LDYgKzEzNSw5IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRl
OgorICAgIFJlbmRlclRoZW1lV2luKCk7CisgICAgflJlbmRlclRoZW1lV2luKCk7CisKICAgICB2
b2lkIGFkZEludHJpbnNpY01hcmdpbnMoUmVuZGVyU3R5bGUqKSBjb25zdDsKICAgICB2b2lkIGNs
b3NlKCk7CiAKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cKaW5kZXggNTNjMjQxZC4uOGFiOTdhNiAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cKKysrIGIvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAw
OS0wNi0xNiAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoLmNocmlzdGlhbnNl
bkBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIENyZWF0ZSBhIGRpZmZlcmVudCBSZW5kZXJUaGVtZSBwZXIgcGFnZSwgc28gdGhh
dCBSZW5kZXJUaGVtZSBoYXMKKyAgICAgICAgYWNjZXNzIHRvIHBhZ2Ugc3BlY2lmaWMgdGhlbWlu
Zy4gVGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBRdCBwb3J0LCBhcyBRdAorICAgICAgICBzdXBwb3J0
cyBzZXR0aW5nIHRoZSB0aGVtZSAoc3R5bGUpIHBlciB3aWRnZXQuCisKKyAgICAgICAgVGhpcyBj
aGFuZ2Ugd2FzIHN1Z2dlc3RlZCBhbmQgZGlzY3Vzc2VkIHdpdGggRGF2ZSBIeWF0dC4KKworICAg
ICAgICBNb3JlIGRldGFpbGVkOgorCisgICAgICAgIDEpIENyZWF0ZSBhIHRoZW1lIHBlciBwYWdl
IG9yIG9uZSBnbG9iYWwgb25lLCBkZXBlbmRpbmcgb24gdGhlIG5lZWRzCisgICAgICAgICAgIG9m
IHRoZSBwbGF0Zm9ybS4KKyAgICAgICAgMikgQWRkIGFuIGFjY2Vzc2VyIHRvIHRoZSB0aGVtZSBm
cm9tIFJlbmRlck9iamVjdC4KKyAgICAgICAgMykgQ2hhbmdlIGFsbCB1c2VzIG9mIHRoZSB0aGVt
aW5nIHRvIGFjY2VzcyB0aGUgdGhlbWUgdGhyb3VnaAorICAgICAgICAgICBSZW5kZXJPYmplY3Qs
IHVzaW5nIHRoZSBnbG9iYWwgZGVmYXVsdCB0aGVtZSBhcyBmYWxsYmFjaywgd2hlbiB0aGUKKyAg
ICAgICAgICAgZG9jdW1lbnQgb2YgUmVuZGVyT2JqZWN0IGhhcyBubyBwYWdlLgorICAgICAgICAg
ICBXaGVuIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIGEgUmVuZGVyT2JqZWN0LCB1c2UgdGhlIGRl
ZmF1bHQgdGhlbWUuCisgICAgICAgIDQpIE1vZGlmeSBhbGwgUmVuZGVyVGhlbWUgcGxhdGZvcm0g
aW1wbGVtZW50YXRpb25zIHRvIHdvcmsgd2l0aCB0aGUKKyAgICAgICAgICAgYWJvdmUgY2hhbmdl
cywgc3RpbGwgY3JlYXRpbmcgb25seSBvbmUgZ2xvYmFsIHRoZW1lLgorCisgICAgICAgICogV2Vi
Vmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3V25kUHJvYyk6IENoYW5nZSB0aGVtZSB0byBSZW5k
ZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCkKKwogMjAwOS0wNi0wMyAgQnJlbnQgRnVsZ2hhbSAgPGJm
dWxnaGFtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQnVpbGQgZml4IGZvciBXaW5kb3dzIENhaXJv
LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBiL1dlYktpdC93aW4vV2ViVmll
dy5jcHAKaW5kZXggMDI5NmQ0NS4uMmQ4NGY2NyAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJW
aWV3LmNwcAorKysgYi9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCkBAIC0xODU0LDcgKzE4NTQsNyBA
QCBzdGF0aWMgTFJFU1VMVCBDQUxMQkFDSyBXZWJWaWV3V25kUHJvYyhIV05EIGhXbmQsIFVJTlQg
bWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTAogICAgICAgICBjYXNlIFdNX1hQX1RIRU1FQ0hBTkdF
RDoKICAgICAgICAgICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0gY29yZShtYWluRnJhbWVJbXBs
KSkgewogICAgICAgICAgICAgICAgIHdlYlZpZXctPmRlbGV0ZUJhY2tpbmdTdG9yZSgpOwotICAg
ICAgICAgICAgICAgIHRoZW1lKCktPnRoZW1lQ2hhbmdlZCgpOworICAgICAgICAgICAgICAgIFJl
bmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+dGhlbWVDaGFuZ2VkKCk7CiAgICAgICAgICAgICAg
ICAgU2Nyb2xsYmFyVGhlbWU6Om5hdGl2ZVRoZW1lKCktPnRoZW1lQ2hhbmdlZCgpOwogICAgICAg
ICAgICAgICAgIFJFQ1Qgd2luZG93UmVjdDsKICAgICAgICAgICAgICAgICA6OkdldENsaWVudFJl
Y3QoaFduZCwgJndpbmRvd1JlY3QpOwotLSAKMS42LjAuNAoK
</data>
<flag name="review"
          id="16060"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31392</attachid>
            <date>2009-06-16 16:21:03 -0700</date>
            <delta_ts>2009-06-16 16:35:52 -0700</delta_ts>
            <desc>Fix remaining comment.</desc>
            <filename>rev3-2009-06-16-Kenneth-Rohde-Christiansen-kenneth.chr.patch</filename>
            <type>text/plain</type>
            <size>50305</size>
            <attacher name="Kenneth Rohde Christiansen">kenneth</attacher>
            
              <data encoding="base64">RnJvbSA2Yjc1MTg1ODc5YmFhMWFlNDRkOTkwYmM4YTM2YmQyYWY3ZWM1OTJmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiA8a2VubmV0aEBz
cGlzbmlnZWwub3NtdGMuaW5kdC5vcmcuYnI+CkRhdGU6IFR1ZSwgMTYgSnVuIDIwMDkgMTU6MjA6
MjcgLTAzMDAKU3ViamVjdDogW1BBVENIXSAyMDA5LTA2LTE2ICBLZW5uZXRoIFJvaGRlIENocmlz
dGlhbnNlbiAgPGtlbm5ldGguY2hyaXN0aWFuc2VuQG9wZW5ib3NzYS5vcmc+CgogICAgICAgIFJl
dmlld2VkIGJ5IERhdmUgSHlhdHQgYW5kIEFkYW0gUm9iZW4uCgogICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjI3OAogICAgICAgIFBhdGNoIHRoYXQgbWFr
ZSBXZWJDb3JlIGhhdmUgYSBSZW5kZXJUaGVtZSBwZXIgcGFnZQoKICAgICAgICBDcmVhdGUgYSBk
aWZmZXJlbnQgUmVuZGVyVGhlbWUgcGVyIHBhZ2UsIHNvIHRoYXQgUmVuZGVyVGhlbWUgaGFzCiAg
ICAgICAgYWNjZXNzIHRvIHBhZ2Ugc3BlY2lmaWMgdGhlbWluZy4gVGhpcyBpcyBuZWVkZWQgZm9y
IHRoZSBRdCBwb3J0LCBhcyBRdAogICAgICAgIHN1cHBvcnRzIHNldHRpbmcgdGhlIHRoZW1lIChz
dHlsZSkgcGVyIHdpZGdldC4KCiAgICAgICAgVGhpcyBjaGFuZ2Ugd2FzIHN1Z2dlc3RlZCBhbmQg
ZGlzY3Vzc2VkIHdpdGggRGF2ZSBIeWF0dC4KCiAgICAgICAgTW9yZSBkZXRhaWxlZDoKCiAgICAg
ICAgMSkgQ3JlYXRlIGEgdGhlbWUgcGVyIHBhZ2Ugb3Igb25lIGdsb2JhbCBvbmUsIGRlcGVuZGlu
ZyBvbiB0aGUgbmVlZHMKICAgICAgICAgICBvZiB0aGUgcGxhdGZvcm0uCiAgICAgICAgMikgQWRk
IGFuIGFjY2Vzc2VyIHRvIHRoZSB0aGVtZSBmcm9tIFJlbmRlck9iamVjdC4KICAgICAgICAzKSBD
aGFuZ2UgYWxsIHVzZXMgb2YgdGhlIHRoZW1pbmcgdG8gYWNjZXNzIHRoZSB0aGVtZSB0aHJvdWdo
CiAgICAgICAgICAgUmVuZGVyT2JqZWN0LCB1c2luZyB0aGUgZ2xvYmFsIGRlZmF1bHQgdGhlbWUg
YXMgZmFsbGJhY2ssIHdoZW4gdGhlCiAgICAgICAgICAgZG9jdW1lbnQgb2YgUmVuZGVyT2JqZWN0
IGhhcyBubyBwYWdlLgogICAgICAgICAgIFdoZW4gd2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gYSBS
ZW5kZXJPYmplY3QsIHVzZSB0aGUgZGVmYXVsdCB0aGVtZS4KICAgICAgICA0KSBNb2RpZnkgYWxs
IFJlbmRlclRoZW1lIHBsYXRmb3JtIGltcGxlbWVudGF0aW9ucyB0byB3b3JrIHdpdGggdGhlCiAg
ICAgICAgICAgYWJvdmUgY2hhbmdlcywgc3RpbGwgY3JlYXRpbmcgb25seSBvbmUgZ2xvYmFsIHRo
ZW1lLgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgIDExMSArKysrKysrKysrKysrKysrKysrKwogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAgICAgfCAgICAyICstCiBXZWJDb3JlL2Nzcy9DU1NTdHls
ZVNlbGVjdG9yLmNwcCAgICAgICAgICAgICAgICAgICB8ICAgMTIgKy0KIFdlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuY3BwICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCArLQogV2ViQ29yZS9l
ZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwICAgICAgICAgICAgfCAgICAzICstCiBXZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgICAgICAgICAgICB8ICAgIDQgKy0K
IFdlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCAgICAgICAgICAgICAgICAgIHwgICAg
NiArLQogV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgICAyICstCiBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgIDYgKy0KIFdlYkNvcmUvcGFnZS9QYWdlLmNwcCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAgMiArCiBXZWJDb3JlL3BhZ2UvUGFnZS5oICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgIDcgKy0KIFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBN
ZW51Q2hyb21pdW0uY3BwICAgIHwgICAgNCArLQogV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVy
VGhlbWVHdGsuY3BwICAgICAgICAgICAgfCAgIDMwICsrKy0tCiBXZWJDb3JlL3BsYXRmb3JtL2d0
ay9SZW5kZXJUaGVtZUd0ay5oICAgICAgICAgICAgICB8ICAgIDYgKy0KIFdlYkNvcmUvcGxhdGZv
cm0vcXQvUmVuZGVyVGhlbWVRdC5jcHAgICAgICAgICAgICAgIHwgICAxNCArKy0KIFdlYkNvcmUv
cGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5oICAgICAgICAgICAgICAgIHwgICAgNSArLQogV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcCAgICAgICAgICAgICAgfCAgICA2ICst
CiBXZWJDb3JlL3BsYXRmb3JtL3d4L1JlbmRlclRoZW1lV3guY3BwICAgICAgICAgICAgICB8ICAg
MTcgKysrLQogV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAgICAgICAgICAgICAg
ICAgfCAgICA1ICstCiBXZWJDb3JlL3JlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAg
ICAgICAgICB8ICAgIDIgKy0KIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbHMu
Y3BwICAgICAgICAgIHwgICAxNSArKy0tCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwICAgICAgICAgICAgICAgICB8ICAgIDggKystCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuaCAgICAgICAgICAgICAgICAgICB8ICAgIDMgKwogV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWUuY3BwICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZS5oICAgICAgICAgICAgICAgICAgICB8ICAgMjYgKysrKy0tCiBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguY3BwICAgICB8ICAgMTIgKystCiBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguaCAgICAgICB8ICAgIDcg
Ky0KIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1NYWMuaCAgICAgICAgIHwg
ICAgNyArLQogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bU1hYy5tbSAgICAg
ICAgfCAgIDEyICsrLQogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5j
cHAgICAgICAgfCAgIDEzICsrLQogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1
bVdpbi5oICAgICAgICAgfCAgICA2ICstCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1h
Yy5oICAgICAgICAgICAgICAgICB8ICAgIDYgKy0KIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjLm1tICAgICAgICAgICAgICAgIHwgICAgNiArLQogV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVTYWZhcmkuY3BwICAgICAgICAgICAgfCAgIDE2ICsrLQogV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVTYWZhcmkuaCAgICAgICAgICAgICAgfCAgICA3ICstCiBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAgICAgICAgICAgICAgICB8ICAgMTIgKystCiBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5oICAgICAgICAgICAgICAgICB8ICAgIDcgKy0K
IFdlYktpdC93aW4vQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAy
NSArKysrKwogV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgICAyICstCiAzOSBmaWxlcyBjaGFuZ2VkLCAzMzkgaW5zZXJ0aW9ucygrKSwgMTAxIGRl
bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggZjNiMmRiNy4uNGNhNDlmNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMTQgQEAKKzIwMDktMDYtMTYg
IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aC5jaHJpc3RpYW5zZW5Ab3BlbmJv
c3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXZlIEh5YXR0IGFuZCBBZGFtIFJvYmVu
LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjI3
OAorICAgICAgICBQYXRjaCB0aGF0IG1ha2UgV2ViQ29yZSBoYXZlIGEgUmVuZGVyVGhlbWUgcGVy
IHBhZ2UKKworCisgICAgICAgIENyZWF0ZSBhIGRpZmZlcmVudCBSZW5kZXJUaGVtZSBwZXIgcGFn
ZSwgc28gdGhhdCBSZW5kZXJUaGVtZSBoYXMKKyAgICAgICAgYWNjZXNzIHRvIHBhZ2Ugc3BlY2lm
aWMgdGhlbWluZy4gVGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBRdCBwb3J0LCBhcyBRdAorICAgICAg
ICBzdXBwb3J0cyBzZXR0aW5nIHRoZSB0aGVtZSAoc3R5bGUpIHBlciB3aWRnZXQuCisKKyAgICAg
ICAgVGhpcyBjaGFuZ2Ugd2FzIHN1Z2dlc3RlZCBhbmQgZGlzY3Vzc2VkIHdpdGggRGF2ZSBIeWF0
dC4KKworICAgICAgICBNb3JlIGRldGFpbGVkOgorCisgICAgICAgIDEpIENyZWF0ZSBhIHRoZW1l
IHBlciBwYWdlIG9yIG9uZSBnbG9iYWwgb25lLCBkZXBlbmRpbmcgb24gdGhlIG5lZWRzCisgICAg
ICAgICAgIG9mIHRoZSBwbGF0Zm9ybS4KKyAgICAgICAgMikgQWRkIGFuIGFjY2Vzc2VyIHRvIHRo
ZSB0aGVtZSBmcm9tIFJlbmRlck9iamVjdC4KKyAgICAgICAgMykgQ2hhbmdlIGFsbCB1c2VzIG9m
IHRoZSB0aGVtaW5nIHRvIGFjY2VzcyB0aGUgdGhlbWUgdGhyb3VnaAorICAgICAgICAgICBSZW5k
ZXJPYmplY3QsIHVzaW5nIHRoZSBnbG9iYWwgZGVmYXVsdCB0aGVtZSBhcyBmYWxsYmFjaywgd2hl
biB0aGUKKyAgICAgICAgICAgZG9jdW1lbnQgb2YgUmVuZGVyT2JqZWN0IGhhcyBubyBwYWdlLgor
ICAgICAgICAgICBXaGVuIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIGEgUmVuZGVyT2JqZWN0LCB1
c2UgdGhlIGRlZmF1bHQgdGhlbWUuCisgICAgICAgIDQpIE1vZGlmeSBhbGwgUmVuZGVyVGhlbWUg
cGxhdGZvcm0gaW1wbGVtZW50YXRpb25zIHRvIHdvcmsgd2l0aCB0aGUKKyAgICAgICAgICAgYWJv
dmUgY2hhbmdlcywgc3RpbGwgY3JlYXRpbmcgb25seSBvbmUgZ2xvYmFsIHRoZW1lLgorCisKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Ym91bmRpbmdCb3hSZWN0
KToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpsb2FkRnVsbERlZmF1bHRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVj
dG9yOjpzdHlsZUZvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rv
cjo6YWRqdXN0UmVuZGVyU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rv
cjo6YXBwbHlQcm9wZXJ0eSk6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6c2V0QWN0aXZlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRhaW5lck5vZGU6OnNldEhvdmVyZWQpOgorICAgICAgICAqIGVkaXRpbmcvU2VsZWN0
aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25Db250cm9sbGVy
Ojpmb2N1c2VkT3JBY3RpdmVTdGF0ZUNoYW5nZWQpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1D
b250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNldENoZWNrZWQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6c2V0SW5kZXRlcm1pbmF0ZSk6
CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c2Vs
ZWN0aW9uTGF5b3V0Q2hhbmdlZCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp1cGRhdGVDb250cm9sVGludHMpOgorICAgICAgICAq
IHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAg
KiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnRoZW1lKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQb3B1cExpc3RCb3g6OnBhaW50Um93KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVu
ZGVyVGhlbWVHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6dGhlbWVGb3JQYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpSZW5kZXJUaGVtZUd0ayk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6flJlbmRlclRoZW1lR3RrKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lR3RrOjpndGtFbnRyeSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZUd0azo6Z3RrVHJlZVZpZXcpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9SZW5kZXJUaGVt
ZUd0ay5oOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVRdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lOjp0aGVtZUZvclBhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1JlbmRlclRo
ZW1lUXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJNZWRpYUNvbnRyb2xzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRldGVybWluZVN0YXRlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS93eC9SZW5kZXJUaGVtZVd4LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lV3g6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZTo6dGhlbWVGb3JQYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludFRleHRNYXRjaE1hcmtlcik6
CisgICAgICAgICogcmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhQ29udHJvbElucHV0RWxlbWVudDo6aGl0VGVzdCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmpl
Y3Q6OnRoZW1lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lOjphZGp1c3RTdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lQ2hyb21pdW1MaW51eDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lOjp0aGVtZUZvclBhZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVt
ZUNocm9taXVtTGludXguaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1M
aW51eDo6flJlbmRlclRoZW1lQ2hyb21pdW1MaW51eCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRoZW1lQ2hyb21pdW1NYWMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVD
aHJvbWl1bU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1NYWM6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6dGhlbWVGb3JQYWdlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVtV2luOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRoZW1lQ2hyb21pdW1XaW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hy
b21pdW1XaW46OlJlbmRlclRoZW1lQ2hyb21pdW1XaW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVDaHJvbWl1bVdpbjo6flJlbmRlclRoZW1lQ2hyb21pdW1XaW4pOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
aGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2Up
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lOjp0aGVtZUZvclBhZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVt
ZVNhZmFyaS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
aGVtZVdpbi5oOgorCiAyMDA5LTA2LTAzICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtl
bm5ldGguY2hyaXN0aWFuc2VuQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
U2ltb24gSGF1c21hbm4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggOGM1MjJhMS4uMTc0MGI0YiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBi
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAt
MTAwOCw3ICsxMDA4LDcgQEAgSW50UmVjdCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpib3Vu
ZGluZ0JveFJlY3QoKSBjb25zdAogICAgICAgICBJbnRSZWN0IHIgPSBxdWFkc1tpXS5lbmNsb3Np
bmdCb3VuZGluZ0JveCgpOwogICAgICAgICBpZiAoIXIuaXNFbXB0eSgpKSB7CiAgICAgICAgICAg
ICBpZiAob2JqLT5zdHlsZSgpLT5oYXNBcHBlYXJhbmNlKCkpCi0gICAgICAgICAgICAgICAgdGhl
bWUoKS0+YWRqdXN0UmVwYWludFJlY3Qob2JqLCByKTsKKyAgICAgICAgICAgICAgICBvYmotPnRo
ZW1lKCktPmFkanVzdFJlcGFpbnRSZWN0KG9iaiwgcik7CiAgICAgICAgICAgICByZXN1bHQudW5p
dGUocik7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNlbGVjdG9yLmNwcCBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4IGM4
ZmUyMzQuLjc2ZDBiZDUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3Iu
Y3BwCisrKyBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC01MTYsMTMgKzUx
NiwxMyBAQCBzdGF0aWMgdm9pZCBsb2FkRnVsbERlZmF1bHRTdHlsZSgpCiAgICAgfQogCiAgICAg
Ly8gU3RyaWN0LW1vZGUgcnVsZXMuCi0gICAgU3RyaW5nIGRlZmF1bHRSdWxlcyA9IFN0cmluZyho
dG1sNFVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihodG1sNFVzZXJBZ2VudFN0eWxlU2hlZXQp
KSArIHRoZW1lKCktPmV4dHJhRGVmYXVsdFN0eWxlU2hlZXQoKTsKKyAgICBTdHJpbmcgZGVmYXVs
dFJ1bGVzID0gU3RyaW5nKGh0bWw0VXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKGh0bWw0VXNl
ckFnZW50U3R5bGVTaGVldCkpICsgUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5leHRyYURl
ZmF1bHRTdHlsZVNoZWV0KCk7CiAgICAgQ1NTU3R5bGVTaGVldCogZGVmYXVsdFNoZWV0ID0gcGFy
c2VVQVNoZWV0KGRlZmF1bHRSdWxlcyk7CiAgICAgZGVmYXVsdFN0eWxlLT5hZGRSdWxlc0Zyb21T
aGVldChkZWZhdWx0U2hlZXQsIHNjcmVlbkV2YWwoKSk7CiAgICAgZGVmYXVsdFByaW50U3R5bGUt
PmFkZFJ1bGVzRnJvbVNoZWV0KGRlZmF1bHRTaGVldCwgcHJpbnRFdmFsKCkpOwogCiAgICAgLy8g
UXVpcmtzLW1vZGUgcnVsZXMuCi0gICAgU3RyaW5nIHF1aXJrc1J1bGVzID0gU3RyaW5nKHF1aXJr
c1VzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihxdWlya3NVc2VyQWdlbnRTdHlsZVNoZWV0KSkg
KyB0aGVtZSgpLT5leHRyYVF1aXJrc1N0eWxlU2hlZXQoKTsKKyAgICBTdHJpbmcgcXVpcmtzUnVs
ZXMgPSBTdHJpbmcocXVpcmtzVXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKHF1aXJrc1VzZXJB
Z2VudFN0eWxlU2hlZXQpKSArIFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+ZXh0cmFRdWly
a3NTdHlsZVNoZWV0KCk7CiAgICAgQ1NTU3R5bGVTaGVldCogcXVpcmtzU2hlZXQgPSBwYXJzZVVB
U2hlZXQocXVpcmtzUnVsZXMpOwogICAgIGRlZmF1bHRRdWlya3NTdHlsZS0+YWRkUnVsZXNGcm9t
U2hlZXQocXVpcmtzU2hlZXQsIHNjcmVlbkV2YWwoKSk7CiB9CkBAIC0xMTI4LDcgKzExMjgsNyBA
QCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZvckVsZW1l
bnQoRWxlbWVudCogZSwgUmVuZGVyU3R5bAogICAgIHN0YXRpYyBib29sIGxvYWRlZE1lZGlhU3R5
bGVTaGVldDsKICAgICBpZiAoIWxvYWRlZE1lZGlhU3R5bGVTaGVldCAmJiAoZS0+aGFzVGFnTmFt
ZSh2aWRlb1RhZykgfHwgZS0+aGFzVGFnTmFtZShhdWRpb1RhZykpKSB7CiAgICAgICAgIGxvYWRl
ZE1lZGlhU3R5bGVTaGVldCA9IHRydWU7Ci0gICAgICAgIFN0cmluZyBtZWRpYVJ1bGVzID0gU3Ry
aW5nKG1lZGlhQ29udHJvbHNVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YobWVkaWFDb250cm9s
c1VzZXJBZ2VudFN0eWxlU2hlZXQpKSArIHRoZW1lKCktPmV4dHJhTWVkaWFDb250cm9sc1N0eWxl
U2hlZXQoKTsKKyAgICAgICAgU3RyaW5nIG1lZGlhUnVsZXMgPSBTdHJpbmcobWVkaWFDb250cm9s
c1VzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihtZWRpYUNvbnRyb2xzVXNlckFnZW50U3R5bGVT
aGVldCkpICsgUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5leHRyYU1lZGlhQ29udHJvbHNT
dHlsZVNoZWV0KCk7CiAgICAgICAgIENTU1N0eWxlU2hlZXQqIG1lZGlhQ29udHJvbHNTaGVldCA9
IHBhcnNlVUFTaGVldChtZWRpYVJ1bGVzKTsKICAgICAgICAgZGVmYXVsdFN0eWxlLT5hZGRSdWxl
c0Zyb21TaGVldChtZWRpYUNvbnRyb2xzU2hlZXQsIHNjcmVlbkV2YWwoKSk7CiAgICAgICAgIGRl
ZmF1bHRQcmludFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChtZWRpYUNvbnRyb2xzU2hlZXQsIHBy
aW50RXZhbCgpKTsKQEAgLTE1NzksNyArMTU3OSw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6
YWRqdXN0UmVuZGVyU3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50ICplKQogCiAgICAg
Ly8gTGV0IHRoZSB0aGVtZSBhbHNvIGhhdmUgYSBjcmFjayBhdCBhZGp1c3RpbmcgdGhlIHN0eWxl
LgogICAgIGlmIChzdHlsZS0+aGFzQXBwZWFyYW5jZSgpKQotICAgICAgICB0aGVtZSgpLT5hZGp1
c3RTdHlsZSh0aGlzLCBzdHlsZSwgZSwgbV9oYXNVQUFwcGVhcmFuY2UsIG1fYm9yZGVyRGF0YSwg
bV9iYWNrZ3JvdW5kRGF0YSwgbV9iYWNrZ3JvdW5kQ29sb3IpOworICAgICAgICBSZW5kZXJUaGVt
ZTo6ZGVmYXVsdFRoZW1lKCktPmFkanVzdFN0eWxlKHRoaXMsIHN0eWxlLCBlLCBtX2hhc1VBQXBw
ZWFyYW5jZSwgbV9ib3JkZXJEYXRhLCBtX2JhY2tncm91bmREYXRhLCBtX2JhY2tncm91bmRDb2xv
cik7CiAKICNpZiBFTkFCTEUoU1ZHKQogICAgIGlmIChlICYmIGUtPmlzU1ZHRWxlbWVudCgpKSB7
CkBAIC00Mzc2LDcgKzQzNzYsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVy
dHkoaW50IGlkLCBDU1NWYWx1ZSAqdmFsdWUpCiAgICAgICAgICAgICBtX2xpbmVIZWlnaHRWYWx1
ZSA9IDA7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVz
Y3JpcHRpb247Ci0gICAgICAgICAgICB0aGVtZSgpLT5zeXN0ZW1Gb250KHByaW1pdGl2ZVZhbHVl
LT5nZXRJZGVudCgpLCBmb250RGVzY3JpcHRpb24pOworICAgICAgICAgICAgUmVuZGVyVGhlbWU6
OmRlZmF1bHRUaGVtZSgpLT5zeXN0ZW1Gb250KHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpLCBm
b250RGVzY3JpcHRpb24pOwogIAogICAgICAgICAgICAgLy8gRG91YmxlLWNoZWNrIGFuZCBzZWUg
aWYgdGhlIHRoZW1lIGRpZCBhbnl0aGluZy4gIElmIG5vdCwgZG9uJ3QgYm90aGVyIHVwZGF0aW5n
IHRoZSBmb250LgogICAgICAgICAgICAgaWYgKGZvbnREZXNjcmlwdGlvbi5pc0Fic29sdXRlU2l6
ZSgpKSB7CkBAIC01ODExLDcgKzU4MTEsNyBAQCBzdGF0aWMgQ29sb3IgY29sb3JGb3JDU1NWYWx1
ZShpbnQgY3NzVmFsdWVJZCkKICAgICAgICAgaWYgKGNvbC0+Y3NzVmFsdWVJZCA9PSBjc3NWYWx1
ZUlkKQogICAgICAgICAgICAgcmV0dXJuIGNvbC0+Y29sb3I7CiAgICAgfQotICAgIHJldHVybiB0
aGVtZSgpLT5zeXN0ZW1Db2xvcihjc3NWYWx1ZUlkKTsKKyAgICByZXR1cm4gUmVuZGVyVGhlbWU6
OmRlZmF1bHRUaGVtZSgpLT5zeXN0ZW1Db2xvcihjc3NWYWx1ZUlkKTsKIH0KIAogQ29sb3IgQ1NT
U3R5bGVTZWxlY3Rvcjo6Z2V0Q29sb3JGcm9tUHJpbWl0aXZlVmFsdWUoQ1NTUHJpbWl0aXZlVmFs
dWUqIHByaW1pdGl2ZVZhbHVlKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9k
ZS5jcHAgYi9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAppbmRleCAyNTczOTA4Li4yMGNj
N2EzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9XZWJD
b3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtNzk4LDcgKzc5OCw3IEBAIHZvaWQgQ29udGFp
bmVyTm9kZTo6c2V0QWN0aXZlKGJvb2wgZG93biwgYm9vbCBwYXVzZSkKICAgICAgICAgaWYgKHJl
YWN0c1RvUHJlc3MpCiAgICAgICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgICAg
IGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCktPmhhc0FwcGVhcmFuY2UoKSkg
ewotICAgICAgICAgICAgaWYgKHRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBQcmVz
c2VkU3RhdGUpKQorICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCktPnRoZW1lKCktPnN0YXRlQ2hh
bmdlZChyZW5kZXJlcigpLCBQcmVzc2VkU3RhdGUpKQogICAgICAgICAgICAgICAgIHJlYWN0c1Rv
UHJlc3MgPSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIGlmIChyZWFjdHNUb1ByZXNzICYmIHBh
dXNlKSB7CkBAIC04NDAsNyArODQwLDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpzZXRIb3ZlcmVk
KGJvb2wgb3ZlcikKICAgICAgICAgaWYgKHJlbmRlcmVyKCktPnN0eWxlKCktPmFmZmVjdGVkQnlI
b3ZlclJ1bGVzKCkpCiAgICAgICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgICAg
IGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCktPmhhc0FwcGVhcmFuY2UoKSkK
LSAgICAgICAgICAgIHRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBIb3ZlclN0YXRl
KTsKKyAgICAgICAgICAgIHJlbmRlcmVyKCktPnRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJl
cigpLCBIb3ZlclN0YXRlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGlu
Zy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250
cm9sbGVyLmNwcAppbmRleCAxZDM2ZjUxLi43NmM3ODI1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Vk
aXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL1NlbGVj
dGlvbkNvbnRyb2xsZXIuY3BwCkBAIC00Niw3ICs0Niw2IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJl
c3VsdC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSYW5nZS5oIgotI2luY2x1ZGUg
IlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlRleHRJ
dGVyYXRvci5oIgogI2luY2x1ZGUgIlR5cGluZ0NvbW1hbmQuaCIKQEAgLTEyNjgsNyArMTI2Nyw3
IEBAIHZvaWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6Zm9jdXNlZE9yQWN0aXZlU3RhdGVDaGFuZ2Vk
KCkKICAgICAgICAgbm9kZS0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOwogICAgICAgICBpZiAoUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICBpZiAo
cmVuZGVyZXIgJiYgcmVuZGVyZXItPnN0eWxlKCktPmhhc0FwcGVhcmFuY2UoKSkKLSAgICAgICAg
ICAgICAgICB0aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVyZXIsIEZvY3VzU3RhdGUpOworICAg
ICAgICAgICAgICAgIHJlbmRlcmVyLT50aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVyZXIsIEZv
Y3VzU3RhdGUpOwogICAgIH0KIAogICAgIC8vIFNlY3VyZSBrZXlib2FyZCBlbnRyeSBpcyBzZXQg
YnkgdGhlIGFjdGl2ZSBmcmFtZS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNv
bnRyb2xFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNw
cAppbmRleCAzNmQyMGFjLi5iOTg1ZTc1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVs
ZW1lbnQuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKQogICAgICAgICBpZiAo
b2xkRGlzYWJsZWQgIT0gbV9kaXNhYmxlZCkgewogICAgICAgICAgICAgc2V0TmVlZHNTdHlsZVJl
Y2FsYygpOwogICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUo
KS0+aGFzQXBwZWFyYW5jZSgpKQotICAgICAgICAgICAgICAgIHRoZW1lKCktPnN0YXRlQ2hhbmdl
ZChyZW5kZXJlcigpLCBFbmFibGVkU3RhdGUpOworICAgICAgICAgICAgICAgIHJlbmRlcmVyKCkt
PnRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBFbmFibGVkU3RhdGUpOwogICAgICAg
ICB9CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gcmVhZG9ubHlBdHRyKSB7CiAgICAg
ICAgIGJvb2wgb2xkUmVhZE9ubHkgPSBtX3JlYWRPbmx5OwpAQCAtNzksNyArNzksNyBAQCB2b2lk
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJp
YnV0ZSAqYXR0cikKICAgICAgICAgaWYgKG9sZFJlYWRPbmx5ICE9IG1fcmVhZE9ubHkpIHsKICAg
ICAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICAgICAgICAgIGlmIChyZW5kZXJl
cigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCktPmhhc0FwcGVhcmFuY2UoKSkKLSAgICAgICAgICAg
ICAgICB0aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVyZXIoKSwgUmVhZE9ubHlTdGF0ZSk7Cisg
ICAgICAgICAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS0+c3RhdGVDaGFuZ2VkKHJlbmRlcmVy
KCksIFJlYWRPbmx5U3RhdGUpOwogICAgICAgICB9CiAgICAgfSBlbHNlCiAgICAgICAgIEhUTUxF
bGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcAppbmRleCBkYmM4MThiLi5iM2M3NTY2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
CkBAIC04ODEsOSArODgxLDkgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRDaGVja2VkKGJv
b2wgbm93Q2hlY2tlZCwgYm9vbCBzZW5kQ2hhbmdlRXZlbnQpCiAgICAgc2V0TmVlZHNTdHlsZVJl
Y2FsYygpOwogCiAgICAgY2hlY2tlZFJhZGlvQnV0dG9ucyh0aGlzKS5hZGRCdXR0b24odGhpcyk7
Ci0gICAgCisKICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpLT5oYXNB
cHBlYXJhbmNlKCkpCi0gICAgICAgIHRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBD
aGVja2VkU3RhdGUpOworICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLT5zdGF0ZUNoYW5nZWQo
cmVuZGVyZXIoKSwgQ2hlY2tlZFN0YXRlKTsKIAogICAgIC8vIE9ubHkgc2VuZCBhIGNoYW5nZSBl
dmVudCBmb3IgaXRlbXMgaW4gdGhlIGRvY3VtZW50IChhdm9pZCBmaXJpbmcgZHVyaW5nCiAgICAg
Ly8gcGFyc2luZykgYW5kIGRvbid0IHNlbmQgYSBjaGFuZ2UgZXZlbnQgZm9yIGEgcmFkaW8gYnV0
dG9uIHRoYXQncyBnZXR0aW5nCkBAIC05MDUsNyArOTA1LDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVt
ZW50OjpzZXRJbmRldGVybWluYXRlKGJvb2wgX2luZGV0ZXJtaW5hdGUpCiAgICAgc2V0TmVlZHNT
dHlsZVJlY2FsYygpOwogCiAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUo
KS0+aGFzQXBwZWFyYW5jZSgpKQotICAgICAgICB0aGVtZSgpLT5zdGF0ZUNoYW5nZWQocmVuZGVy
ZXIoKSwgQ2hlY2tlZFN0YXRlKTsKKyAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS0+c3RhdGVD
aGFuZ2VkKHJlbmRlcmVyKCksIENoZWNrZWRTdGF0ZSk7CiB9CiAKIGludCBIVE1MSW5wdXRFbGVt
ZW50OjpzaXplKCkgY29uc3QKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9X
ZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IGEzNmMxYWEuLmEyMjhiZjggMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAt
NjIyLDcgKzYyMiw3IEBAIHZvaWQgRnJhbWU6OnNlbGVjdGlvbkxheW91dENoYW5nZWQoKQogICAg
IC8vIFN0YXJ0IGJsaW5raW5nIHdpdGggYSBibGFjayBjYXJldC4gQmUgc3VyZSBub3QgdG8gcmVz
dGFydCBpZiB3ZSdyZQogICAgIC8vIGFscmVhZHkgYmxpbmtpbmcgaW4gdGhlIHJpZ2h0IGxvY2F0
aW9uLgogICAgIGlmIChzaG91bGRCbGluayAmJiAhbV9jYXJldEJsaW5rVGltZXIuaXNBY3RpdmUo
KSkgewotICAgICAgICBpZiAoZG91YmxlIGJsaW5rSW50ZXJ2YWwgPSB0aGVtZSgpLT5jYXJldEJs
aW5rSW50ZXJ2YWwoKSkKKyAgICAgICAgaWYgKGRvdWJsZSBibGlua0ludGVydmFsID0gcGFnZSgp
LT50aGVtZSgpLT5jYXJldEJsaW5rSW50ZXJ2YWwoKSkKICAgICAgICAgICAgIG1fY2FyZXRCbGlu
a1RpbWVyLnN0YXJ0UmVwZWF0aW5nKGJsaW5rSW50ZXJ2YWwpOwogCiAgICAgICAgIGlmICghbV9j
YXJldFBhaW50KSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGY2NTAxYmUuLjM4YjA1ZTggMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwCkBAIC0xMjk2LDEwICsxMjk2LDEwIEBAIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVDb250
cm9sVGludHMoKQogICAgIC8vIHRvIGRlZmluZSB3aGVuIGNvbnRyb2xzIGdldCB0aGUgdGludCBh
bmQgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIHdoZW4gdGhhdCBjaGFuZ2VzLgogICAgIAogICAgIC8v
IE9wdGltaXplIHRoZSBjb21tb24gY2FzZSB3aGVyZSB3ZSBicmluZyBhIHdpbmRvdyB0byB0aGUg
ZnJvbnQgd2hpbGUgaXQncyBzdGlsbCBlbXB0eS4KLSAgICBpZiAoIW1fZnJhbWUgfHwgbV9mcmFt
ZS0+bG9hZGVyKCktPnVybCgpLmlzRW1wdHkoKSkgCisgICAgaWYgKCFtX2ZyYW1lIHx8IG1fZnJh
bWUtPmxvYWRlcigpLT51cmwoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAg
ICBpZiAodGhlbWUoKS0+c3VwcG9ydHNDb250cm9sVGludHMoKSAmJiBtX2ZyYW1lLT5jb250ZW50
UmVuZGVyZXIoKSkgeworCisgICAgaWYgKG1fZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpICYmIG1f
ZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpLT50aGVtZSgpLT5zdXBwb3J0c0NvbnRyb2xUaW50cygp
KSB7CiAgICAgICAgIGlmIChuZWVkc0xheW91dCgpKQogICAgICAgICAgICAgbGF5b3V0KCk7CiAg
ICAgICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBjb25zdCBub0NvbnRleHQgPSAwOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmlu
ZGV4IGExNDM0M2QuLjllYWNkNmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAor
KysgYi9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJQ
bHVnaW5EYXRhLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyV2lkZ2V0LmgiCisjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJTY3JpcHRD
b250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2VsZWN0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUg
IlNldHRpbmdzLmgiCkBAIC0xMjAsNiArMTIxLDcgQEAgUGFnZTo6UGFnZShDaHJvbWVDbGllbnQq
IGNocm9tZUNsaWVudCwgQ29udGV4dE1lbnVDbGllbnQqIGNvbnRleHRNZW51Q2xpZW50LCBFZGkK
ICAgICAsIG1fZGVidWdnZXIoMCkKICAgICAsIG1fY3VzdG9tSFRNTFRva2VuaXplclRpbWVEZWxh
eSgtMSkKICAgICAsIG1fY3VzdG9tSFRNTFRva2VuaXplckNodW5rU2l6ZSgtMSkKKyAgICAsIG1f
dGhlbWUoUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZSh0aGlzKSkKIHsKICAgICBpZiAoIWFsbFBh
Z2VzKSB7CiAgICAgICAgIGFsbFBhZ2VzID0gbmV3IEhhc2hTZXQ8UGFnZSo+OwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggZWVkZDI0
Yy4uYmFiNmI4NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9XZWJDb3Jl
L3BhZ2UvUGFnZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBl
cy5oIgogI2luY2x1ZGUgIkxpbmtIYXNoLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIK
KyNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5j
bHVkZSA8d3RmL093blB0ci5oPgogCkBAIC03OCw3ICs3OSw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgICAgICBQYWdlKENocm9tZUNsaWVudCosIENvbnRleHRNZW51Q2xpZW50KiwgRWRp
dG9yQ2xpZW50KiwgRHJhZ0NsaWVudCosIEluc3BlY3RvckNsaWVudCopOwogICAgICAgICB+UGFn
ZSgpOwotICAgICAgICAKKworICAgICAgICBSZW5kZXJUaGVtZSogdGhlbWUoKSBjb25zdCB7IHJl
dHVybiBtX3RoZW1lLmdldCgpOyB9OworCiAgICAgICAgIHN0YXRpYyB2b2lkIHJlZnJlc2hQbHVn
aW5zKGJvb2wgcmVsb2FkKTsKICAgICAgICAgUGx1Z2luRGF0YSogcGx1Z2luRGF0YSgpIGNvbnN0
OwogCkBAIC0yMTcsNiArMjIwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIG11
dGFibGUgUmVmUHRyPFBsdWdpbkRhdGE+IG1fcGx1Z2luRGF0YTsKIAorICAgICAgICBSZWZQdHI8
UmVuZGVyVGhlbWU+IG1fdGhlbWU7CisKICAgICAgICAgRWRpdG9yQ2xpZW50KiBtX2VkaXRvckNs
aWVudDsKIAogICAgICAgICBpbnQgbV9mcmFtZUNvdW50OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHAgYi9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcAppbmRleCBiMDBiNjI1Li41NmVmMWU5IDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcApA
QCAtNzcxLDggKzc3MSw4IEBAIHZvaWQgUG9wdXBMaXN0Qm94OjpwYWludFJvdyhHcmFwaGljc0Nv
bnRleHQqIGdjLCBjb25zdCBJbnRSZWN0JiByZWN0LCBpbnQgcm93SW5kCiAgICAgLy8gUGFpbnQg
YmFja2dyb3VuZAogICAgIENvbG9yIGJhY2tDb2xvciwgdGV4dENvbG9yOwogICAgIGlmIChyb3dJ
bmRleCA9PSBtX3NlbGVjdGVkSW5kZXgpIHsKLSAgICAgICAgYmFja0NvbG9yID0gdGhlbWUoKS0+
YWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpOwotICAgICAgICB0ZXh0Q29s
b3IgPSB0aGVtZSgpLT5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCk7Cisg
ICAgICAgIGJhY2tDb2xvciA9IFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+YWN0aXZlTGlz
dEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpOworICAgICAgICB0ZXh0Q29sb3IgPSBSZW5k
ZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCktPmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5k
Q29sb3IoKTsKICAgICB9IGVsc2UgewogICAgICAgICBiYWNrQ29sb3IgPSBzdHlsZS5iYWNrZ3Jv
dW5kQ29sb3IoKTsKICAgICAgICAgdGV4dENvbG9yID0gc3R5bGUuZm9yZWdyb3VuZENvbG9yKCk7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAgYi9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAKaW5kZXggYTk1ZjU1Ny4uMDk4
NDk3YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3Bw
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcApAQCAtMiw2ICsy
LDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAwOCBD
b2xsYWJvcmEgTHRkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEtlbm5ldGggUm9oZGUgQ2hyaXN0
aWFuc2VuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM0LDEzICszNSwxOCBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVJlbmRlclRoZW1lKiB0aGVtZSgpCitQYXNzUmVmUHRyPFJlbmRlclRo
ZW1lPiBSZW5kZXJUaGVtZUd0azo6Y3JlYXRlKCkKIHsKLSAgICBzdGF0aWMgUmVuZGVyVGhlbWVH
dGsgZ3RrVGhlbWU7Ci0gICAgcmV0dXJuICZndGtUaGVtZTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFJlbmRlclRoZW1lR3RrKCkpOwogfQogCi1zdGF0aWMgYm9vbCBtb3pHdGtJbml0aWFsaXpl
ZCA9IGZhbHNlOworUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWU6OnRoZW1lRm9y
UGFnZShQYWdlKiBwYWdlKQoreworICAgIHN0YXRpYyBSZW5kZXJUaGVtZSogcnQgPSBSZW5kZXJU
aGVtZUd0azo6Y3JlYXRlKCkucmVsZWFzZVJlZigpOworICAgIHJldHVybiBydDsKK30KKworc3Rh
dGljIGludCBtb3pHdGtSZWZDb3VudCA9IDA7CiAKIFJlbmRlclRoZW1lR3RrOjpSZW5kZXJUaGVt
ZUd0aygpCiAgICAgOiBtX2d0a1dpbmRvdygwKQpAQCAtNDgsMTggKzU0LDE4IEBAIFJlbmRlclRo
ZW1lR3RrOjpSZW5kZXJUaGVtZUd0aygpCiAgICAgLCBtX2d0a0VudHJ5KDApCiAgICAgLCBtX2d0
a1RyZWVWaWV3KDApCiB7Ci0gICAgaWYgKCFtb3pHdGtJbml0aWFsaXplZCkgewotICAgICAgICBt
b3pHdGtJbml0aWFsaXplZCA9IHRydWU7CisgICAgaWYgKCFtb3pHdGtSZWZDb3VudCkKICAgICAg
ICAgbW96X2d0a19pbml0KCk7Ci0gICAgfQorCisgICAgKyttb3pHdGtSZWZDb3VudDsKIH0KIAog
UmVuZGVyVGhlbWVHdGs6On5SZW5kZXJUaGVtZUd0aygpCiB7Ci0gICAgaWYgKG1vekd0a0luaXRp
YWxpemVkKSB7CisgICAgLS1tb3pHdGtSZWZDb3VudDsKKworICAgIGlmICghbW96R3RrUmVmQ291
bnQpCiAgICAgICAgIG1vel9ndGtfc2h1dGRvd24oKTsKLSAgICAgICAgbW96R3RrSW5pdGlhbGl6
ZWQgPSBmYWxzZTsKLSAgICB9CiB9CiAKIHN0YXRpYyBib29sIHN1cHBvcnRzRm9jdXMoQ29udHJv
bFBhcnQgYXBwZWFyYW5jZSkKQEAgLTQ3MCw3ICs0NzYsNyBAQCBHdGtXaWRnZXQqIFJlbmRlclRo
ZW1lR3RrOjpndGtFbnRyeSgpIGNvbnN0CiAgICAgICAgIHJldHVybiBtX2d0a0VudHJ5OwogCiAg
ICAgbV9ndGtFbnRyeSA9IGd0a19lbnRyeV9uZXcoKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KG1f
Z3RrRW50cnksICJzdHlsZS1zZXQiLCBHX0NBTExCQUNLKGd0a1N0eWxlU2V0Q2FsbGJhY2spLCB0
aGVtZSgpKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fZ3RrRW50cnksICJzdHlsZS1zZXQiLCBH
X0NBTExCQUNLKGd0a1N0eWxlU2V0Q2FsbGJhY2spLCBjb25zdF9jYXN0PFJlbmRlclRoZW1lR3Rr
Kj4odGhpcykpOwogICAgIGd0a19jb250YWluZXJfYWRkKGd0a0NvbnRhaW5lcigpLCBtX2d0a0Vu
dHJ5KTsKICAgICBndGtfd2lkZ2V0X3JlYWxpemUobV9ndGtFbnRyeSk7CiAKQEAgLTQ4Myw3ICs0
ODksNyBAQCBHdGtXaWRnZXQqIFJlbmRlclRoZW1lR3RrOjpndGtUcmVlVmlldygpIGNvbnN0CiAg
ICAgICAgIHJldHVybiBtX2d0a1RyZWVWaWV3OwogCiAgICAgbV9ndGtUcmVlVmlldyA9IGd0a190
cmVlX3ZpZXdfbmV3KCk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChtX2d0a1RyZWVWaWV3LCAic3R5
bGUtc2V0IiwgR19DQUxMQkFDSyhndGtTdHlsZVNldENhbGxiYWNrKSwgdGhlbWUoKSk7CisgICAg
Z19zaWduYWxfY29ubmVjdChtX2d0a1RyZWVWaWV3LCAic3R5bGUtc2V0IiwgR19DQUxMQkFDSyhn
dGtTdHlsZVNldENhbGxiYWNrKSwgY29uc3RfY2FzdDxSZW5kZXJUaGVtZUd0ayo+KHRoaXMpKTsK
ICAgICBndGtfY29udGFpbmVyX2FkZChndGtDb250YWluZXIoKSwgbV9ndGtUcmVlVmlldyk7CiAg
ICAgZ3RrX3dpZGdldF9yZWFsaXplKG1fZ3RrVHJlZVZpZXcpOwogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
UmVuZGVyVGhlbWVHdGsuaAppbmRleCA4MmE4N2NiLi42NmY3YWUyIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1JlbmRlclRoZW1lR3RrLmgKQEAgLTUsNiArNSw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDYgTWljaGFlbCBFbW1lbCBtaWtlLmVtbWVsQGdtYWlsLmNvbQogICogQ29weXJpZ2h0IChDKSAy
MDA3IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxw
IFRva2VyIDxhbHBAYXRva2VyLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBLZW5uZXRoIFJv
aGRlIENocmlzdGlhbnNlbgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBA
IC0zNCwxMCArMzUsMTMgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyVGhl
bWVHdGsgOiBwdWJsaWMgUmVuZGVyVGhlbWUgewotcHVibGljOgorcHJpdmF0ZToKICAgICBSZW5k
ZXJUaGVtZUd0aygpOwogICAgIHZpcnR1YWwgflJlbmRlclRoZW1lR3RrKCk7CiAKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gY3JlYXRlKCk7CisKICAgICAvLyBB
IG1ldGhvZCBhc2tpbmcgaWYgdGhlIHRoZW1lJ3MgY29udHJvbHMgYWN0dWFsbHkgY2FyZSBhYm91
dCByZWRyYXdpbmcgd2hlbiBob3ZlcmVkLgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0hvdmVy
KGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuY3BwIGIvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNwcAppbmRleCBiMTZjYmM0Li5mZjQzMDUwIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuY3BwCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5jcHAKQEAgLTEwNiwxMCArMTA2LDE4IEBAIFN0
eWxlUGFpbnRlcjo6flN0eWxlUGFpbnRlcigpCiAgICAgfQogfQogCi1SZW5kZXJUaGVtZSogdGhl
bWUoKQorUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWVRdDo6Y3JlYXRlKFBhZ2Uq
IHBhZ2UpCiB7Ci0gICAgc3RhdGljIFJlbmRlclRoZW1lUXQgcnQ7Ci0gICAgcmV0dXJuICZydDsK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlbmRlclRoZW1lUXQocGFnZSkpOworfQorCitQYXNz
UmVmUHRyPFJlbmRlclRoZW1lPiBSZW5kZXJUaGVtZTo6dGhlbWVGb3JQYWdlKFBhZ2UqIHBhZ2Up
Cit7CisgICAgaWYgKHBhZ2UpCisgICAgICAgIHJldHVybiBSZW5kZXJUaGVtZVF0OjpjcmVhdGUo
cGFnZSk7CisKKyAgICBzdGF0aWMgUmVuZGVyVGhlbWUqIGZhbGxiYWNrID0gUmVuZGVyVGhlbWVR
dDo6Y3JlYXRlKDApLnJlbGVhc2VSZWYoKTsKKyAgICByZXR1cm4gZmFsbGJhY2s7CiB9CiAKIFJl
bmRlclRoZW1lUXQ6OlJlbmRlclRoZW1lUXQoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9xdC9SZW5kZXJUaGVtZVF0LmggYi9XZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQu
aAppbmRleCA1Yzc4YTcyLi4wNzllMmFiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3F0
L1JlbmRlclRoZW1lUXQuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQu
aApAQCAtMzgsMTAgKzM4LDEzIEBAIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiAKIGNsYXNzIFJl
bmRlclRoZW1lUXQgOiBwdWJsaWMgUmVuZGVyVGhlbWUKIHsKLXB1YmxpYzoKK3ByaXZhdGU6CiAg
ICAgUmVuZGVyVGhlbWVRdCgpOwogICAgIHZpcnR1YWwgflJlbmRlclRoZW1lUXQoKTsKIAorcHVi
bGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlbmRlclRoZW1lPiBjcmVhdGUoUGFnZSopOwor
CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzSG92ZXIoY29uc3QgUmVuZGVyU3R5bGUqKSBjb25z
dDsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGb2N1c1JpbmcoY29uc3QgUmVuZGVyU3R5bGUq
IHN0eWxlKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBN
ZW51V2luLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5jcHAKaW5kZXgg
MmI0NzQ5YS4uMjExNjljMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBN
ZW51V2luLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCkBA
IC00ODYsOCArNDg2LDggQEAgdm9pZCBQb3B1cE1lbnU6OnBhaW50KGNvbnN0IEludFJlY3QmIGRh
bWFnZVJlY3QsIEhEQyBoZGMpCiAgICAgICAgIENvbG9yIG9wdGlvbkJhY2tncm91bmRDb2xvciwg
b3B0aW9uVGV4dENvbG9yOwogICAgICAgICBQb3B1cE1lbnVTdHlsZSBpdGVtU3R5bGUgPSBjbGll
bnQoKS0+aXRlbVN0eWxlKGluZGV4KTsKICAgICAgICAgaWYgKGluZGV4ID09IGZvY3VzZWRJbmRl
eCgpKSB7Ci0gICAgICAgICAgICBvcHRpb25CYWNrZ3JvdW5kQ29sb3IgPSB0aGVtZSgpLT5hY3Rp
dmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCk7Ci0gICAgICAgICAgICBvcHRpb25U
ZXh0Q29sb3IgPSB0aGVtZSgpLT5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9y
KCk7CisgICAgICAgICAgICBvcHRpb25CYWNrZ3JvdW5kQ29sb3IgPSBSZW5kZXJUaGVtZTo6ZGVm
YXVsdFRoZW1lKCktPmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKTsKKyAg
ICAgICAgICAgIG9wdGlvblRleHRDb2xvciA9IFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+
YWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgb3B0aW9uQmFja2dyb3VuZENvbG9yID0gaXRlbVN0eWxlLmJhY2tncm91
bmRDb2xvcigpOwogICAgICAgICAgICAgb3B0aW9uVGV4dENvbG9yID0gaXRlbVN0eWxlLmZvcmVn
cm91bmRDb2xvcigpOwpAQCAtNTI1LDcgKzUyNSw3IEBAIHZvaWQgUG9wdXBNZW51OjpwYWludChj
b25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBIREMgaGRjKQogICAgICAgICAvLyBEcmF3IHRoZSBp
dGVtIHRleHQKICAgICAgICAgaWYgKGl0ZW1TdHlsZS5pc1Zpc2libGUoKSkgewogICAgICAgICAg
ICAgaW50IHRleHRYID0gbWF4KDAsIGNsaWVudCgpLT5jbGllbnRQYWRkaW5nTGVmdCgpIC0gY2xp
ZW50KCktPmNsaWVudEluc2V0TGVmdCgpKTsKLSAgICAgICAgICAgIGlmICh0aGVtZSgpLT5wb3B1
cE9wdGlvblN1cHBvcnRzVGV4dEluZGVudCgpICYmIGl0ZW1TdHlsZS50ZXh0RGlyZWN0aW9uKCkg
PT0gTFRSKQorICAgICAgICAgICAgaWYgKFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+cG9w
dXBPcHRpb25TdXBwb3J0c1RleHRJbmRlbnQoKSAmJiBpdGVtU3R5bGUudGV4dERpcmVjdGlvbigp
ID09IExUUikKICAgICAgICAgICAgICAgICB0ZXh0WCArPSBpdGVtU3R5bGUudGV4dEluZGVudCgp
LmNhbGNNaW5WYWx1ZShpdGVtUmVjdC53aWR0aCgpKTsKICAgICAgICAgICAgIGludCB0ZXh0WSA9
IGl0ZW1SZWN0LnkoKSArIGl0ZW1Gb250LmFzY2VudCgpICsgKGl0ZW1SZWN0LmhlaWdodCgpIC0g
aXRlbUZvbnQuaGVpZ2h0KCkpIC8gMjsKICAgICAgICAgICAgIGNvbnRleHQuZHJhd0JpZGlUZXh0
KGl0ZW1Gb250LCB0ZXh0UnVuLCBJbnRQb2ludCh0ZXh0WCwgdGV4dFkpKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vd3gvUmVuZGVyVGhlbWVXeC5jcHAgYi9XZWJDb3JlL3BsYXRmb3Jt
L3d4L1JlbmRlclRoZW1lV3guY3BwCmluZGV4IGEyNjQxNmYuLjgyNGM0MDEgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vd3gvUmVuZGVyVGhlbWVXeC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS93eC9SZW5kZXJUaGVtZVd4LmNwcApAQCAtNDQsOCArNDQsMTIgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyVGhlbWVXeCA6IHB1YmxpYyBSZW5kZXJUaGVtZSB7Ci1w
dWJsaWM6Citwcml2YXRlOgogICAgIFJlbmRlclRoZW1lV3goKSA6IFJlbmRlclRoZW1lKCkgeyB9
CisgICAgdmlydHVhbCB+UmVuZGVyVGhlbWVXeCgpOworCitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8UmVuZGVyVGhlbWU+IGNyZWF0ZSgpOwogCiAgICAgLy8gQSBtZXRob2QgYXNraW5n
IGlmIHRoZSB0aGVtZSdzIGNvbnRyb2xzIGFjdHVhbGx5IGNhcmUgYWJvdXQgcmVkcmF3aW5nIHdo
ZW4gaG92ZXJlZC4KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNIb3Zlcihjb25zdCBSZW5kZXJT
dHlsZSopIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KQEAgLTExOSwxMCArMTIzLDE1IEBAIHByaXZh
dGU6CiAjZGVmaW5lIFBPUFVQX0lOVEVSTkFMX1BBRERJTkdfUklHSFQgMjAKICNlbmRpZgogCi1S
ZW5kZXJUaGVtZSogdGhlbWUoKQorUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWVX
eDo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlbmRlclRoZW1lV3goKSk7
Cit9CisKK1Bhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IFJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2Uo
UGFnZSogcGFnZSkKIHsKLSAgICBzdGF0aWMgUmVuZGVyVGhlbWVXeCBydDsKLSAgICByZXR1cm4g
JnJ0OworICAgIHN0YXRpYyBSZW5kZXJUaGVtZSogcnQgPSBSZW5kZXJUaGVtZVd4KCkuY3JlYXRl
KCkucmVsZWFzZVJlZigpOworICAgIHJldHVybiBydDsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZVd4
Ojppc0NvbnRyb2xTdHlsZWQoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBCb3JkZXJE
YXRhJiBib3JkZXIsCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94
LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCmluZGV4IDQxOGJlMTUu
LjMwZDE5MmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3Bw
CisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC0zMiw3ICszMiw2
IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckFyZW5hLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyQmxvY2suaCIKLSNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlRl
eHQuaCIKICNpbmNsdWRlICJicmVha19saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9BbHdheXNJbmxp
bmUuaD4KQEAgLTc3MCw4ICs3NjksOCBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50VGV4dE1h
dGNoTWFya2VyKEdyYXBoaWNzQ29udGV4dCogcHQsIGludCB0eCwgaW50IHR5LCBEbwogICAgIC8v
IE9wdGlvbmFsbHkgaGlnaGxpZ2h0IHRoZSB0ZXh0CiAgICAgaWYgKHJlbmRlcmVyKCktPmRvY3Vt
ZW50KCktPmZyYW1lKCktPm1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoKSkgewogICAg
ICAgICBDb2xvciBjb2xvciA9IG1hcmtlci5hY3RpdmVNYXRjaCA/Ci0gICAgICAgICAgICB0aGVt
ZSgpLT5wbGF0Zm9ybUFjdGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpIDoKLSAgICAgICAg
ICAgIHRoZW1lKCktPnBsYXRmb3JtSW5hY3RpdmVUZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IoKTsK
KyAgICAgICAgICAgIHJlbmRlcmVyKCktPnRoZW1lKCktPnBsYXRmb3JtQWN0aXZlVGV4dFNlYXJj
aEhpZ2hsaWdodENvbG9yKCkgOgorICAgICAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS0+cGxh
dGZvcm1JbmFjdGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpOwogICAgICAgICBwdC0+c2F2
ZSgpOwogICAgICAgICB1cGRhdGVHcmFwaGljc0NvbnRleHQocHQsIGNvbG9yLCBjb2xvciwgMCk7
ICAvLyBEb24ndCBkcmF3IHRleHQgYXQgYWxsIQogICAgICAgICBwdC0+Y2xpcChJbnRSZWN0KHR4
ICsgbV94LCB0eSArIHksIG1fd2lkdGgsIGgpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVy
aW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29u
dHJvbEVsZW1lbnRzLmNwcAppbmRleCA1Y2Q5MzYzLi43YWE4YzFhIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3JlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKKysrIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCkBAIC0xNTksNyArMTU5LDcgQEAgdm9pZCBN
ZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6OnVwZGF0ZVN0eWxlKCkKIGJvb2wgTWVkaWFDb250cm9s
SW5wdXRFbGVtZW50OjpoaXRUZXN0KGNvbnN0IEludFBvaW50JiBhYnNQb2ludCkKIHsKICAgICBp
ZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpLT5oYXNBcHBlYXJhbmNlKCkpCi0g
ICAgICAgIHJldHVybiB0aGVtZSgpLT5oaXRUZXN0TWVkaWFDb250cm9sUGFydChyZW5kZXJlcigp
LCBhYnNQb2ludCk7CisgICAgICAgIHJldHVybiByZW5kZXJlcigpLT50aGVtZSgpLT5oaXRUZXN0
TWVkaWFDb250cm9sUGFydChyZW5kZXJlcigpLCBhYnNQb2ludCk7CiAKICAgICByZXR1cm4gZmFs
c2U7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xz
LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbHMuY3BwCmluZGV4IDJi
MGI4MTYuLmNmZmMyMzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlh
Q29udHJvbHMuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbHMu
Y3BwCkBAIC01MSwxOSArNTEsMjAgQEAgU09GVF9MSU5LKFNhZmFyaVRoZW1lLCBTVFBhaW50UHJv
Z3Jlc3NJbmRpY2F0b3IsIHZvaWQsIEFQSUVOVFJZLCAoUHJvZ3Jlc3NJbmRpY2EKIHN0YXRpYyBU
aGVtZUNvbnRyb2xTdGF0ZSBkZXRlcm1pbmVTdGF0ZShSZW5kZXJPYmplY3QqIG8pCiB7CiAgICAg
VGhlbWVDb250cm9sU3RhdGUgcmVzdWx0ID0gMDsKLSAgICBpZiAodGhlbWUoKS0+aXNBY3RpdmUo
bykpCisgICAgUmVuZGVyVGhlbWUqIHRoZW1lID0gby0+dGhlbWUoKTsKKyAgICBpZiAodGhlbWUt
PmlzQWN0aXZlKG8pKQogICAgICAgICByZXN1bHQgfD0gU2FmYXJpVGhlbWU6OkFjdGl2ZVN0YXRl
OwotICAgIGlmICh0aGVtZSgpLT5pc0VuYWJsZWQobykgJiYgIXRoZW1lKCktPmlzUmVhZE9ubHlD
b250cm9sKG8pKQorICAgIGlmICh0aGVtZS0+aXNFbmFibGVkKG8pICYmICF0aGVtZS0+aXNSZWFk
T25seUNvbnRyb2wobykpCiAgICAgICAgIHJlc3VsdCB8PSBTYWZhcmlUaGVtZTo6RW5hYmxlZFN0
YXRlOwotICAgIGlmICh0aGVtZSgpLT5pc1ByZXNzZWQobykpCisgICAgaWYgKHRoZW1lLT5pc1By
ZXNzZWQobykpCiAgICAgICAgIHJlc3VsdCB8PSBTYWZhcmlUaGVtZTo6UHJlc3NlZFN0YXRlOwot
ICAgIGlmICh0aGVtZSgpLT5pc0NoZWNrZWQobykpCisgICAgaWYgKHRoZW1lLT5pc0NoZWNrZWQo
bykpCiAgICAgICAgIHJlc3VsdCB8PSBTYWZhcmlUaGVtZTo6Q2hlY2tlZFN0YXRlOwotICAgIGlm
ICh0aGVtZSgpLT5pc0luZGV0ZXJtaW5hdGUobykpCisgICAgaWYgKHRoZW1lLT5pc0luZGV0ZXJt
aW5hdGUobykpCiAgICAgICAgIHJlc3VsdCB8PSBTYWZhcmlUaGVtZTo6SW5kZXRlcm1pbmF0ZUNo
ZWNrZWRTdGF0ZTsKLSAgICBpZiAodGhlbWUoKS0+aXNGb2N1c2VkKG8pKQorICAgIGlmICh0aGVt
ZS0+aXNGb2N1c2VkKG8pKQogICAgICAgICByZXN1bHQgfD0gU2FmYXJpVGhlbWU6OkZvY3VzZWRT
dGF0ZTsKLSAgICBpZiAodGhlbWUoKS0+aXNEZWZhdWx0KG8pKQorICAgIGlmICh0aGVtZS0+aXNE
ZWZhdWx0KG8pKQogICAgICAgICByZXN1bHQgfD0gU2FmYXJpVGhlbWU6OkRlZmF1bHRTdGF0ZTsK
ICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXgg
ZjgxMDE4ZC4uZDU2MTgzMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC00Myw3
ICs0Myw2IEBACiAjaW5jbHVkZSAiUmVuZGVyVGFibGVDZWxsLmgiCiAjaW5jbHVkZSAiUmVuZGVy
VGFibGVDb2wuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZVJvdy5oIgotI2luY2x1ZGUgIlJlbmRl
clRoZW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybVN0
YXRlLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgpAQCAtMjE0LDYgKzIxMywxMyBAQCBSZW5kZXJP
YmplY3Q6On5SZW5kZXJPYmplY3QoKQogI2VuZGlmCiB9CiAKK1JlbmRlclRoZW1lKiBSZW5kZXJP
YmplY3Q6OnRoZW1lKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZG9jdW1lbnQoKS0+cGFnZSgpKTsK
KworICAgIHJldHVybiBkb2N1bWVudCgpLT5wYWdlKCktPnRoZW1lKCk7Cit9CisKIGJvb2wgUmVu
ZGVyT2JqZWN0Ojppc0Rlc2NlbmRhbnRPZihjb25zdCBSZW5kZXJPYmplY3QqIG9iaikgY29uc3QK
IHsKICAgICBmb3IgKGNvbnN0IFJlbmRlck9iamVjdCogciA9IHRoaXM7IHI7IHIgPSByLT5tX3Bh
cmVudCkgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCAwOTAxYmZmLi40MjBmNGFkIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApAQCAtNDgsNiArNDgsNyBAQCBjbGFzcyBSZW5kZXJJ
bmxpbmU7CiBjbGFzcyBSZW5kZXJCbG9jazsKIGNsYXNzIFJlbmRlckZsb3c7CiBjbGFzcyBSZW5k
ZXJMYXllcjsKK2NsYXNzIFJlbmRlclRoZW1lOwogY2xhc3MgVHJhbnNmb3JtU3RhdGU7CiBjbGFz
cyBWaXNpYmxlUG9zaXRpb247CiAKQEAgLTEzNyw2ICsxMzgsOCBAQCBwdWJsaWM6CiAgICAgUmVu
ZGVyT2JqZWN0KE5vZGUqKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJPYmplY3QoKTsKIAorICAgIFJl
bmRlclRoZW1lKiB0aGVtZSgpIGNvbnN0OworCiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5k
ZXJOYW1lKCkgY29uc3QgPSAwOwogCiAgICAgUmVuZGVyT2JqZWN0KiBwYXJlbnQoKSBjb25zdCB7
IHJldHVybiBtX3BhcmVudDsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWUuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCmluZGV4IGU2N2U2
MTIuLjRiZGMwNDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNw
cAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKQEAgLTYyLDcgKzYyLDcg
QEAgdm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0U3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0
b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWwKICAgICBlbHNlIGlmIChzdHlsZS0+ZGlzcGxheSgp
ID09IENPTVBBQ1QgfHwgc3R5bGUtPmRpc3BsYXkoKSA9PSBSVU5fSU4gfHwgc3R5bGUtPmRpc3Bs
YXkoKSA9PSBMSVNUX0lURU0gfHwgc3R5bGUtPmRpc3BsYXkoKSA9PSBUQUJMRSkKICAgICAgICAg
c3R5bGUtPnNldERpc3BsYXkoQkxPQ0spOwogCi0gICAgaWYgKFVBSGFzQXBwZWFyYW5jZSAmJiB0
aGVtZSgpLT5pc0NvbnRyb2xTdHlsZWQoc3R5bGUsIGJvcmRlciwgYmFja2dyb3VuZCwgYmFja2dy
b3VuZENvbG9yKSkgeworICAgIGlmIChVQUhhc0FwcGVhcmFuY2UgJiYgaXNDb250cm9sU3R5bGVk
KHN0eWxlLCBib3JkZXIsIGJhY2tncm91bmQsIGJhY2tncm91bmRDb2xvcikpIHsKICAgICAgICAg
aWYgKHBhcnQgPT0gTWVudWxpc3RQYXJ0KSB7CiAgICAgICAgICAgICBzdHlsZS0+c2V0QXBwZWFy
YW5jZShNZW51bGlzdEJ1dHRvblBhcnQpOwogICAgICAgICAgICAgcGFydCA9IE1lbnVsaXN0QnV0
dG9uUGFydDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmggYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCmluZGV4IGJjODFkNGQuLjVjODdlYmQgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgKKysrIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWUuaApAQCAtMjMsMTMgKzIzLDE2IEBACiAjaWZuZGVmIFJlbmRl
clRoZW1lX2gKICNkZWZpbmUgUmVuZGVyVGhlbWVfaAogCi0jaW5jbHVkZSAiUmVuZGVyT2JqZWN0
LmgiCiAjaWYgVVNFKE5FV19USEVNRSkKICNpbmNsdWRlICJUaGVtZS5oIgogI2Vsc2UKICNpbmNs
dWRlICJUaGVtZVR5cGVzLmgiCiAjZW5kaWYKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKyNp
bmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCisjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM4LDExICs0MSwyNCBAQCBjbGFzcyBQb3B1cE1lbnU7CiBj
bGFzcyBSZW5kZXJNZW51TGlzdDsKIGNsYXNzIENTU1N0eWxlU2hlZXQ7CiAKLWNsYXNzIFJlbmRl
clRoZW1lIHsKLXB1YmxpYzoKK2NsYXNzIFJlbmRlclRoZW1lIDogcHVibGljIFJlZkNvdW50ZWQ8
UmVuZGVyVGhlbWU+IHsKK3Byb3RlY3RlZDoKICAgICBSZW5kZXJUaGVtZSgpOworCitwdWJsaWM6
CiAgICAgdmlydHVhbCB+UmVuZGVyVGhlbWUoKSB7IH0KIAorICAgIC8vIFRoaXMgZnVuY3Rpb24g
aXMgdG8gYmUgaW1wbGVtZW50ZWQgaW4geW91ciBwbGF0Zm9ybS1zcGVjaWZpYyB0aGVtZSBpbXBs
ZW1lbnRhdGlvbiB0byBoYW5kIGJhY2sgdGhlCisgICAgLy8gYXBwcm9wcmlhdGUgcGxhdGZvcm0g
dGhlbWUuIFdoZW4gdGhlIHRoZW1lIGlzIG5lZWRlZCBpbiBub24tcGFnZSBkZXBlbmRlbnQgY29k
ZSwgYSBkZWZhdWx0IHRoZW1lIGlzCisgICAgLy8gdXNlZCBhcyBmYWxsYmFjaywgd2hpY2ggaXMg
cmV0dXJuZWQgZm9yIGEgbnVsbGVkIHBhZ2UsIHNvIHRoZSBwbGF0Zm9ybSBjb2RlIG5lZWRzIHRv
IGFjY291bnQgZm9yIHRoaXMuCisgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IHRo
ZW1lRm9yUGFnZShQYWdlKiBwYWdlKTsKKworICAgIC8vIFdoZW4gdGhlIHRoZW1lIGlzIG5lZWRl
ZCBpbiBub24tcGFnZSBkZXBlbmRlbnQgY29kZSwgdGhlIGRlZmF1bHRUaGVtZSgpIGlzIHVzZWQg
YXMgZmFsbGJhY2suCisgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFJlbmRlclRoZW1lPiBk
ZWZhdWx0VGhlbWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoZW1lRm9yUGFnZSgwKTsKKyAg
ICB9OworCiAgICAgLy8gVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW5ldmVyIHN0eWxlIGhhcyBi
ZWVuIGNvbXB1dGVkIGZvciBhbiBlbGVtZW50IGFuZCB0aGUgYXBwZWFyYW5jZQogICAgIC8vIHBy
b3BlcnR5IGhhcyBiZWVuIHNldCB0byBhIHZhbHVlIG90aGVyIHRoYW4gIm5vbmUiLiAgVGhlIHRo
ZW1lIHNob3VsZCBtYXAgaW4gYWxsIG9mIHRoZSBhcHByb3ByaWF0ZQogICAgIC8vIG1ldHJpY3Mg
YW5kIGRlZmF1bHRzIGdpdmVuIHRoZSBjb250ZW50cyBvZiB0aGUgc3R5bGUuICBUaGlzIGluY2x1
ZGVzIHNvcGhpc3RpY2F0ZWQgb3BlcmF0aW9ucyBsaWtlCkBAIC0yNTcsMTAgKzI3Myw2IEBAIHBy
aXZhdGU6CiAjZW5kaWYKIH07CiAKLS8vIEZ1bmN0aW9uIHRvIG9idGFpbiB0aGUgdGhlbWUuICBU
aGlzIGlzIGltcGxlbWVudGVkIGluIHlvdXIgcGxhdGZvcm0tc3BlY2lmaWMgdGhlbWUgaW1wbGVt
ZW50YXRpb24gdG8gaGFuZAotLy8gYmFjayB0aGUgYXBwcm9wcmlhdGUgcGxhdGZvcm0gdGhlbWUu
Ci1SZW5kZXJUaGVtZSogdGhlbWUoKTsKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gUmVuZGVyVGhlbWVfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVDaHJvbWl1bUxpbnV4LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hy
b21pdW1MaW51eC5jcHAKaW5kZXggOTRlZTY0Zi4uN2M0MWRiNSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmNwcAorKysgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTGludXguY3BwCkBAIC0zLDYgKzMsNyBAQAogICog
Q29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CiAgKiBDb3B5cmln
aHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBH
b29nbGUgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFu
c2VuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTExMywxMCArMTE0LDE1IEBAIHN0YXRpYyBIVE1M
TWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnRQYXJlbnQoTm9kZSogbm9kZSkKIH0KICNlbmRpZgog
Ci1SZW5kZXJUaGVtZSogdGhlbWUoKQorUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhl
bWVDaHJvbWl1bUxpbnV4OjpjcmVhdGUoKQogewotICAgIHN0YXRpYyBSZW5kZXJUaGVtZUNocm9t
aXVtTGludXggdGhlbWU7Ci0gICAgcmV0dXJuICZ0aGVtZTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFJlbmRlclRoZW1lQ2hyb21pdW1MaW51eCgpKTsKK30KKworUGFzc1JlZlB0cjxSZW5kZXJU
aGVtZT4gUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZShQYWdlKiBwYWdlKQoreworICAgIHN0YXRp
YyBSZW5kZXJUaGVtZSogcnQgPSBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OmNyZWF0ZSgpLnJl
bGVhc2VSZWYoKTsKKyAgICByZXR1cm4gcnQ7CiB9CiAKIFJlbmRlclRoZW1lQ2hyb21pdW1MaW51
eDo6UmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4KCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVDaHJvbWl1bUxpbnV4LmgKaW5kZXggNzgzODUwOS4uZWJlNjcwYyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmgKKysrIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4LmgKQEAgLTcsNiArNyw3IEBACiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KICAqIENvcHly
aWdodCAoQykgMjAwOCwgMjAwOSBHb29nbGUsIEluYy4KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4KICAqCiAg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwpAQCAtMzQsOCArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAg
ICBjbGFzcyBSZW5kZXJUaGVtZUNocm9taXVtTGludXggOiBwdWJsaWMgUmVuZGVyVGhlbWUgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgUmVuZGVyVGhlbWVDaHJvbWl1bUxpbnV4KCk7Ci0gICAgICAg
IH5SZW5kZXJUaGVtZUNocm9taXVtTGludXgoKSB7IH0KKyAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8UmVuZGVyVGhlbWU+IGNyZWF0ZSgpOwogCiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIGV4dHJh
RGVmYXVsdFN0eWxlU2hlZXQoKTsKICAgICAgICAgdmlydHVhbCBTdHJpbmcgZXh0cmFRdWlya3NT
dHlsZVNoZWV0KCk7CkBAIC0xMjksNiArMTI5LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2aXJ0dWFsIENvbG9yIGluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xv
cigpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgUmVuZGVyVGhlbWVDaHJvbWl1bUxp
bnV4KCk7CisgICAgICAgIH5SZW5kZXJUaGVtZUNocm9taXVtTGludXgoKSB7IH0KKwogICAgICAg
ICBpbnQgbWVudUxpc3RJbnRlcm5hbFBhZGRpbmcoUmVuZGVyU3R5bGUqLCBpbnQgcGFkZGluZ1R5
cGUpIGNvbnN0OwogICAgICAgICBib29sIHBhaW50TWVkaWFCdXR0b25JbnRlcm5hbChHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiwgSW1hZ2UqKTsKICAgICB9OwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bU1hYy5oIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bU1hYy5oCmluZGV4IGYwNzIwMDAuLmM3ZDBhOWYgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1NYWMuaAorKysg
Yi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTWFjLmgKQEAgLTMsNiArMyw3
IEBACiAgKgogICogQ29weXJpZ2h0IChDKSAyMDA1IEFwcGxlIENvbXB1dGVyLCBJbmMuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgR29vZ2xlLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNDEs
OCArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBSZW5kZXJUaGVtZUNo
cm9taXVtTWFjIDogcHVibGljIFJlbmRlclRoZW1lIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFJl
bmRlclRoZW1lQ2hyb21pdW1NYWMoKTsKLSAgICAgICAgdmlydHVhbCB+UmVuZGVyVGhlbWVDaHJv
bWl1bU1hYygpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gY3JlYXRl
KCk7CiAKICAgICAgICAgLy8gQSBtZXRob2QgdG8gb2J0YWluIHRoZSBiYXNlbGluZSBwb3NpdGlv
biBmb3IgYSAibGVhZiIgY29udHJvbC4gIFRoaXMgd2lsbCBvbmx5IGJlIHVzZWQgaWYgYSBiYXNl
bGluZQogICAgICAgICAvLyBwb3NpdGlvbiBjYW5ub3QgYmUgZGV0ZXJtaW5lZCBieSBleGFtaW5p
bmcgY2hpbGQgY29udGVudC4gQ2hlY2tib3hlcyBhbmQgcmFkaW8gYnV0dG9ucyBhcmUgZXhhbXBs
ZXMgb2YKQEAgLTE0MCw2ICsxNDAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBwYWludE1lZGlhU2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVu
ZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICBwcml2YXRlOgor
ICAgICAgICBSZW5kZXJUaGVtZUNocm9taXVtTWFjKCk7CisgICAgICAgIHZpcnR1YWwgflJlbmRl
clRoZW1lQ2hyb21pdW1NYWMoKTsKKwogICAgICAgICBJbnRSZWN0IGluZmxhdGVSZWN0KGNvbnN0
IEludFJlY3QmLCBjb25zdCBJbnRTaXplJiwgY29uc3QgaW50KiBtYXJnaW5zLCBmbG9hdCB6b29t
TGV2ZWwgPSAxLjBmKSBjb25zdDsKIAogICAgICAgICAvLyBHZXQgdGhlIGNvbnRyb2wgc2l6ZSBi
YXNlZCBvZmYgdGhlIGZvbnQuICBVc2VkIGJ5IHNvbWUgb2YgdGhlIGNvbnRyb2xzIChsaWtlIGJ1
dHRvbnMpLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1
bU1hYy5tbSBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1NYWMubW0KaW5k
ZXggZjYwODFhNS4uNjQxN2Y0YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVDaHJvbWl1bU1hYy5tbQorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNo
cm9taXVtTWFjLm1tCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNSwg
MjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDgsIDIwMDkgR29vZ2xlLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
S2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTI0LDEw
ICsxMjUsMTUgQEAgSW50UmVjdCBOU1JlY3RUb0ludFJlY3QoY29uc3QgTlNSZWN0ICYgcmVjdCkK
ICAgICByZXR1cm4gSW50UmVjdChyZWN0Lm9yaWdpbi54LCByZWN0Lm9yaWdpbi55LCByZWN0LnNp
emUud2lkdGgsIHJlY3Quc2l6ZS5oZWlnaHQpOwogfQogCi1SZW5kZXJUaGVtZSogdGhlbWUoKQor
UGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWVDaHJvbWl1bU1hYzo6Y3JlYXRlKCkK
IHsKLSAgICBzdGF0aWMgUmVuZGVyVGhlbWVDaHJvbWl1bU1hYyogbWFjVGhlbWUgPSBuZXcgUmVu
ZGVyVGhlbWVDaHJvbWl1bU1hYzsKLSAgICByZXR1cm4gbWFjVGhlbWU7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBSZW5kZXJUaGVtZUNocm9taXVtTWFjKTsKK30KKworUGFzc1JlZlB0cjxSZW5k
ZXJUaGVtZT4gUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZShQYWdlKiBwYWdlKQoreworICAgIHN0
YXRpYyBSZW5kZXJUaGVtZSogcnQgPSBSZW5kZXJUaGVtZUNocm9taXVtTWFjOjpjcmVhdGUoKS5y
ZWxlYXNlUmVmKCk7CisgICAgcmV0dXJuIHJ0OwogfQogCiBSZW5kZXJUaGVtZUNocm9taXVtTWFj
OjpSZW5kZXJUaGVtZUNocm9taXVtTWFjKCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lQ2hyb21pdW1XaW4uY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVDaHJvbWl1bVdpbi5jcHAKaW5kZXggNTI4ODE5MS4uN2RmNmU2MCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHAKKysrIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHAKQEAgLTMsNiArMyw3IEBACiAgKgog
ICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDgsIDIwMDkgR29vZ2xlLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgS2VubmV0
aCBSb2hkZSBDaHJpc3RpYW5zZW4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjY1LDExICsyNjYs
MTUgQEAgc3RhdGljIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudFBhcmVudChOb2RlKiBu
b2RlKQogfQogI2VuZGlmCiAKLS8vIEltcGxlbWVudCBXZWJDb3JlOjp0aGVtZSgpIGZvciBnZXR0
aW5nIHRoZSBnbG9iYWwgUmVuZGVyVGhlbWUuCi1SZW5kZXJUaGVtZSogdGhlbWUoKQorUGFzc1Jl
ZlB0cjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6Y3JlYXRlKCkKIHsKLSAg
ICBzdGF0aWMgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbiB3aW5UaGVtZTsKLSAgICByZXR1cm4gJndp
blRoZW1lOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbik7
Cit9CisKK1Bhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IFJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2Uo
UGFnZSogcGFnZSkKK3sKKyAgICBzdGF0aWMgUmVuZGVyVGhlbWUqIHJ0ID0gUmVuZGVyVGhlbWVD
aHJvbWl1bVdpbjo6Y3JlYXRlKCkucmVsZWFzZVJlZigpOworICAgIHJldHVybiBydDsKIH0KIAog
U3RyaW5nIFJlbmRlclRoZW1lQ2hyb21pdW1XaW46OmV4dHJhRGVmYXVsdFN0eWxlU2hlZXQoKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5oIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5oCmluZGV4IDZiYTY1OTUu
Ljg4ODRlMGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21p
dW1XaW4uaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtV2luLmgK
QEAgLTQ0LDggKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgUmVuZGVy
VGhlbWVDaHJvbWl1bVdpbiA6IHB1YmxpYyBSZW5kZXJUaGVtZSB7CiAgICAgcHVibGljOgotICAg
ICAgICBSZW5kZXJUaGVtZUNocm9taXVtV2luKCkgeyB9Ci0gICAgICAgIH5SZW5kZXJUaGVtZUNo
cm9taXVtV2luKCkgeyB9CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlbmRlclRoZW1lPiBj
cmVhdGUoKTsKIAogICAgICAgICB2aXJ0dWFsIFN0cmluZyBleHRyYURlZmF1bHRTdHlsZVNoZWV0
KCk7CiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIGV4dHJhUXVpcmtzU3R5bGVTaGVldCgpOwpAQCAt
MTQxLDYgKzE0MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIHZvaWQg
c2V0RGVmYXVsdEZvbnRTaXplKGludCk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBSZW5kZXJU
aGVtZUNocm9taXVtV2luKCkgeyB9CisgICAgICAgIH5SZW5kZXJUaGVtZUNocm9taXVtV2luKCkg
eyB9CisKICAgICAgICAgdW5zaWduZWQgZGV0ZXJtaW5lU3RhdGUoUmVuZGVyT2JqZWN0Kik7CiAg
ICAgICAgIHVuc2lnbmVkIGRldGVybWluZVNsaWRlclRodW1iU3RhdGUoUmVuZGVyT2JqZWN0Kik7
CiAgICAgICAgIHVuc2lnbmVkIGRldGVybWluZUNsYXNzaWNTdGF0ZShSZW5kZXJPYmplY3QqKTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmggYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCmluZGV4IDYzZjFkOTcuLmI1MzIzNTIgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmgKKysrIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaApAQCAtMzksOCArMzksNyBAQCBjbGFzcyBSZW5kZXJT
dHlsZTsKIAogY2xhc3MgUmVuZGVyVGhlbWVNYWMgOiBwdWJsaWMgUmVuZGVyVGhlbWUgewogcHVi
bGljOgotICAgIFJlbmRlclRoZW1lTWFjKCk7Ci0gICAgdmlydHVhbCB+UmVuZGVyVGhlbWVNYWMo
KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gY3JlYXRlKCk7CiAKICAgICAv
LyBBIG1ldGhvZCBhc2tpbmcgaWYgdGhlIGNvbnRyb2wgY2hhbmdlcyBpdHMgdGludCB3aGVuIHRo
ZSB3aW5kb3cgaGFzIGZvY3VzIG9yIG5vdC4KICAgICB2aXJ0dWFsIGJvb2wgY29udHJvbFN1cHBv
cnRzVGludHMoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3Q7CkBAIC0xMzQsNiArMTMzLDkgQEAg
cHJvdGVjdGVkOgogI2VuZGlmCiAKIHByaXZhdGU6CisgICAgUmVuZGVyVGhlbWVNYWMoKTsKKyAg
ICB2aXJ0dWFsIH5SZW5kZXJUaGVtZU1hYygpOworCiAgICAgSW50UmVjdCBpbmZsYXRlUmVjdChj
b25zdCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYsIGNvbnN0IGludCogbWFyZ2lucywgZmxvYXQg
em9vbUxldmVsID0gMS4wZikgY29uc3Q7CiAKICAgICBGbG9hdFJlY3QgY29udmVydFRvUGFpbnRp
bmdSZWN0KGNvbnN0IFJlbmRlck9iamVjdCogaW5wdXRSZW5kZXJlciwgY29uc3QgUmVuZGVyT2Jq
ZWN0KiBwYXJ0UmVuZGVyZXIsIGNvbnN0IEZsb2F0UmVjdCYgaW5wdXRSZWN0LCBjb25zdCBJbnRS
ZWN0JiByKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
TWFjLm1tIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KaW5kZXggYzNlYzkx
YS4uMmY0NDAzNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMu
bW0KKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTEwMSwxMCAr
MTAxLDEwIEBAIGVudW0gewogICAgIGxlZnRQYWRkaW5nCiB9OwogCi1SZW5kZXJUaGVtZSogdGhl
bWUoKQorUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZShQ
YWdlKiBwYWdlKQogewotICAgIHN0YXRpYyBSZW5kZXJUaGVtZU1hYyogbWFjVGhlbWUgPSBuZXcg
UmVuZGVyVGhlbWVNYWM7Ci0gICAgcmV0dXJuIG1hY1RoZW1lOworICAgIHN0YXRpYyBSZW5kZXJU
aGVtZSogcnQgPSBSZW5kZXJUaGVtZU1hYzo6Y3JlYXRlKCkucmVsZWFzZVJlZigpOworICAgIHJl
dHVybiBydDsKIH0KIAogUmVuZGVyVGhlbWVNYWM6OlJlbmRlclRoZW1lTWFjKCkKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcCBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcAppbmRleCAzYWZmZDFmLi4zOGQ4M2JiIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAKKysrIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBBcHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAt
NjUsMTMgKzY2LDE4IEBAIGVudW0gewogICAgIGxlZnRQYWRkaW5nCiB9OwogCi1SZW5kZXJUaGVt
ZSogdGhlbWUoKQorUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWVTYWZhcmk6OmNy
ZWF0ZSgpCiB7Ci0gICAgc3RhdGljIFJlbmRlclRoZW1lU2FmYXJpIHNhZmFyaVRoZW1lOwotICAg
IHN0YXRpYyBSZW5kZXJUaGVtZVdpbiB3aW5kb3dzVGhlbWU7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBSZW5kZXJUaGVtZVNhZmFyaSk7Cit9CisKK1Bhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IFJl
bmRlclRoZW1lOjp0aGVtZUZvclBhZ2UoUGFnZSogcGFnZSkKK3sKKyAgICBzdGF0aWMgUmVuZGVy
VGhlbWUqIHNhZmFyaVRoZW1lID0gUmVuZGVyVGhlbWVTYWZhcmk6OmNyZWF0ZSgpLnJlbGVhc2VS
ZWYoKTsKKyAgICBzdGF0aWMgUmVuZGVyVGhlbWUqIHdpbmRvd3NUaGVtZSA9IFJlbmRlclRoZW1l
V2luOjpjcmVhdGUoKS5yZWxlYXNlUmVmKCk7CiAgICAgaWYgKFNldHRpbmdzOjpzaG91bGRQYWlu
dE5hdGl2ZUNvbnRyb2xzKCkpCi0gICAgICAgIHJldHVybiAmd2luZG93c1RoZW1lOwotICAgIHJl
dHVybiAmc2FmYXJpVGhlbWU7CisgICAgICAgIHJldHVybiB3aW5kb3dzVGhlbWU7IC8vIGtlZXAg
dGhlIHJlZmVyZW5jZSBvZiBvbmUuCisgICAgcmV0dXJuIHNhZmFyaVRoZW1lOyAvLyBrZWVwIHRo
ZSByZWZlcmVuY2Ugb2Ygb25lLgogfQogCiAjaWYgIWRlZmluZWQoTkRFQlVHKSAmJiBkZWZpbmVk
KFVTRV9ERUJVR19TQUZBUklfVEhFTUUpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZVNhZmFyaS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmku
aAppbmRleCA4YWM1YWNmLi5kMGE3MGVmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZVNhZmFyaS5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2Fm
YXJpLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFw
cGxlIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNl
bgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC00Niw4ICs0Nyw3IEBAIGNsYXNzIFJlbmRlclN0eWxl
OwogCiBjbGFzcyBSZW5kZXJUaGVtZVNhZmFyaSA6IHB1YmxpYyBSZW5kZXJUaGVtZSB7CiBwdWJs
aWM6Ci0gICAgUmVuZGVyVGhlbWVTYWZhcmkoKTsKLSAgICB2aXJ0dWFsIH5SZW5kZXJUaGVtZVNh
ZmFyaSgpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlbmRlclRoZW1lPiBjcmVhdGUoKTsKIAog
ICAgIC8vIEEgbWV0aG9kIHRvIG9idGFpbiB0aGUgYmFzZWxpbmUgcG9zaXRpb24gZm9yIGEgImxl
YWYiIGNvbnRyb2wuICBUaGlzIHdpbGwgb25seSBiZSB1c2VkIGlmIGEgYmFzZWxpbmUKICAgICAv
LyBwb3NpdGlvbiBjYW5ub3QgYmUgZGV0ZXJtaW5lZCBieSBleGFtaW5pbmcgY2hpbGQgY29udGVu
dC4gQ2hlY2tib3hlcyBhbmQgcmFkaW8gYnV0dG9ucyBhcmUgZXhhbXBsZXMgb2YKQEAgLTEzNyw2
ICsxMzcsOSBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYKIAogcHJpdmF0ZToKKyAgICBSZW5kZXJUaGVt
ZVNhZmFyaSgpOworICAgIHZpcnR1YWwgflJlbmRlclRoZW1lU2FmYXJpKCk7CisKICAgICBJbnRS
ZWN0IGluZmxhdGVSZWN0KGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXplJiwgY29uc3QgaW50
KiBtYXJnaW5zKSBjb25zdDsKIAogICAgIC8vIEdldCB0aGUgY29udHJvbCBzaXplIGJhc2VkIG9m
ZiB0aGUgZm9udC4gIFVzZWQgYnkgc29tZSBvZiB0aGUgY29udHJvbHMgKGxpa2UgYnV0dG9ucyku
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAgYi9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKaW5kZXggMWZhNTE2Mi4uNWJhNzMyMCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCisrKyBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5jLgorICogQ29weXJpZ2h0IChDKSAy
MDA5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTEz
NCwxMSArMTM1LDE2IEBAIHZvaWQgUmVuZGVyVGhlbWVXaW46OnNldFdlYktpdElzQmVpbmdVbmxv
YWRlZCgpCiAgICAgZ1dlYktpdElzQmVpbmdVbmxvYWRlZCA9IHRydWU7CiB9CiAKK1Bhc3NSZWZQ
dHI8UmVuZGVyVGhlbWU+IFJlbmRlclRoZW1lV2luOjpjcmVhdGUoKQoreworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgUmVuZGVyVGhlbWVXaW4pOworfQorCiAjaWYgIVVTRShTQUZBUklfVEhFTUUp
Ci1SZW5kZXJUaGVtZSogdGhlbWUoKQorUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhl
bWU6OnRoZW1lRm9yUGFnZShQYWdlKiBwYWdlKQogewotICAgIHN0YXRpYyBSZW5kZXJUaGVtZVdp
biB3aW5UaGVtZTsKLSAgICByZXR1cm4gJndpblRoZW1lOworICAgIHN0YXRpYyBSZW5kZXJUaGVt
ZVdpbiogd2luVGhlbWUgPSBSZW5kZXJUaGVtZVdpbjo6Y3JlYXRlKCkucmVsZWFzZVJlZigpOwor
ICAgIHJldHVybiB3aW5UaGVtZTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZVdpbi5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVX
aW4uaAppbmRleCAyNTQ3M2ExLi45OWMyMDA0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZVdpbi5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2lu
LmgKQEAgLTIsNiArMiw3IEBACiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IHBy
b2plY3QuCiAgKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4IEFwcGxlIENvbXB1dGVyLCBJ
bmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4KICAq
CiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwpAQCAtNDgsOCArNDksNyBAQCBzdHJ1Y3QgVGhlbWVEYXRhIHsKIAog
Y2xhc3MgUmVuZGVyVGhlbWVXaW4gOiBwdWJsaWMgUmVuZGVyVGhlbWUgewogcHVibGljOgotICAg
IFJlbmRlclRoZW1lV2luKCk7Ci0gICAgflJlbmRlclRoZW1lV2luKCk7CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8UmVuZGVyVGhlbWU+IGNyZWF0ZSgpOwogCiAgICAgdmlydHVhbCBTdHJpbmcgZXh0
cmFEZWZhdWx0U3R5bGVTaGVldCgpOwogICAgIHZpcnR1YWwgU3RyaW5nIGV4dHJhUXVpcmtzU3R5
bGVTaGVldCgpOwpAQCAtMTM1LDYgKzEzNSw5IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRl
OgorICAgIFJlbmRlclRoZW1lV2luKCk7CisgICAgflJlbmRlclRoZW1lV2luKCk7CisKICAgICB2
b2lkIGFkZEludHJpbnNpY01hcmdpbnMoUmVuZGVyU3R5bGUqKSBjb25zdDsKICAgICB2b2lkIGNs
b3NlKCk7CiAKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cKaW5kZXggNTNjMjQxZC4uMjIzNjI5NiAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cKKysrIGIvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAw
OS0wNi0xNiAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoLmNocmlzdGlhbnNl
bkBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIENyZWF0ZSBhIGRpZmZlcmVudCBSZW5kZXJUaGVtZSBwZXIgcGFnZSwgc28gdGhh
dCBSZW5kZXJUaGVtZSBoYXMKKyAgICAgICAgYWNjZXNzIHRvIHBhZ2Ugc3BlY2lmaWMgdGhlbWlu
Zy4gVGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBRdCBwb3J0LCBhcyBRdAorICAgICAgICBzdXBwb3J0
cyBzZXR0aW5nIHRoZSB0aGVtZSAoc3R5bGUpIHBlciB3aWRnZXQuCisKKyAgICAgICAgVGhpcyBj
aGFuZ2Ugd2FzIHN1Z2dlc3RlZCBhbmQgZGlzY3Vzc2VkIHdpdGggRGF2ZSBIeWF0dC4KKworICAg
ICAgICBNb3JlIGRldGFpbGVkOgorCisgICAgICAgIDEpIENyZWF0ZSBhIHRoZW1lIHBlciBwYWdl
IG9yIG9uZSBnbG9iYWwgb25lLCBkZXBlbmRpbmcgb24gdGhlIG5lZWRzCisgICAgICAgICAgIG9m
IHRoZSBwbGF0Zm9ybS4KKyAgICAgICAgMikgQWRkIGFuIGFjY2Vzc2VyIHRvIHRoZSB0aGVtZSBm
cm9tIFJlbmRlck9iamVjdC4KKyAgICAgICAgMykgQ2hhbmdlIGFsbCB1c2VzIG9mIHRoZSB0aGVt
aW5nIHRvIGFjY2VzcyB0aGUgdGhlbWUgdGhyb3VnaAorICAgICAgICAgICBSZW5kZXJPYmplY3Qs
IHVzaW5nIHRoZSBnbG9iYWwgZGVmYXVsdCB0aGVtZSBhcyBmYWxsYmFjaywgd2hlbiB0aGUKKyAg
ICAgICAgICAgZG9jdW1lbnQgb2YgUmVuZGVyT2JqZWN0IGhhcyBubyBwYWdlLgorICAgICAgICAg
ICBXaGVuIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIGEgUmVuZGVyT2JqZWN0LCB1c2UgdGhlIGRl
ZmF1bHQgdGhlbWUuCisgICAgICAgIDQpIE1vZGlmeSBhbGwgUmVuZGVyVGhlbWUgcGxhdGZvcm0g
aW1wbGVtZW50YXRpb25zIHRvIHdvcmsgd2l0aCB0aGUKKyAgICAgICAgICAgYWJvdmUgY2hhbmdl
cywgc3RpbGwgY3JlYXRpbmcgb25seSBvbmUgZ2xvYmFsIHRoZW1lLgorCisgICAgICAgICogV2Vi
Vmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3V25kUHJvYyk6IEdldCB0aGUgdGhlbWUgZnJvbSB0
aGUgYXNzb2NpYXRlZCBwYWdlLgorCiAyMDA5LTA2LTAzICBCcmVudCBGdWxnaGFtICA8YmZ1bGdo
YW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBCdWlsZCBmaXggZm9yIFdpbmRvd3MgQ2Fpcm8uCmRp
ZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwIGIvV2ViS2l0L3dpbi9XZWJWaWV3LmNw
cAppbmRleCAwMjk2ZDQ1Li43NDBlNWE4IDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYlZpZXcu
Y3BwCisrKyBiL1dlYktpdC93aW4vV2ViVmlldy5jcHAKQEAgLTE4NTQsNyArMTg1NCw3IEBAIHN0
YXRpYyBMUkVTVUxUIENBTExCQUNLIFdlYlZpZXdXbmRQcm9jKEhXTkQgaFduZCwgVUlOVCBtZXNz
YWdlLCBXUEFSQU0gd1BhcmFtLCBMCiAgICAgICAgIGNhc2UgV01fWFBfVEhFTUVDSEFOR0VEOgog
ICAgICAgICAgICAgaWYgKEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKG1haW5GcmFtZUltcGwpKSB7
CiAgICAgICAgICAgICAgICAgd2ViVmlldy0+ZGVsZXRlQmFja2luZ1N0b3JlKCk7Ci0gICAgICAg
ICAgICAgICAgdGhlbWUoKS0+dGhlbWVDaGFuZ2VkKCk7CisgICAgICAgICAgICAgICAgY29yZUZy
YW1lLT5wYWdlKCktPnRoZW1lKCktPnRoZW1lQ2hhbmdlZCgpOwogICAgICAgICAgICAgICAgIFNj
cm9sbGJhclRoZW1lOjpuYXRpdmVUaGVtZSgpLT50aGVtZUNoYW5nZWQoKTsKICAgICAgICAgICAg
ICAgICBSRUNUIHdpbmRvd1JlY3Q7CiAgICAgICAgICAgICAgICAgOjpHZXRDbGllbnRSZWN0KGhX
bmQsICZ3aW5kb3dSZWN0KTsKLS0gCjEuNi4wLjQKCg==
</data>
<flag name="review"
          id="16061"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
      

    </bug>

</bugzilla>