<?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>39474</bug_id>
          
          <creation_ts>2010-05-20 23:54:38 -0700</creation_ts>
          <short_desc>[GStreamer] GTK XOverlay support in GStreamerGWorld</short_desc>
          <delta_ts>2010-08-19 01:07:19 -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>Media</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>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>39472</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Philippe Normand">pnormand</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>gustavo</cc>
    
    <cc>slomo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>228772</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-05-20 23:54:38 -0700</bug_when>
    <thetext>GStreamerGWorld should be able to capture messages coming from the platform video sink and use the gst_x_overlay API to configure a native window that can then later on be used for fullscreen video rendering.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231749</commentid>
    <comment_count>1</comment_count>
      <attachid>57336</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-05-28 09:54:41 -0700</bug_when>
    <thetext>Created attachment 57336
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232821</commentid>
    <comment_count>2</comment_count>
      <attachid>57564</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-06-01 10:35:55 -0700</bug_when>
    <thetext>Created attachment 57564
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232823</commentid>
    <comment_count>3</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-06-01 10:38:00 -0700</bug_when>
    <thetext>Sebastian, can you have a look at the patch when you get some time please? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232847</commentid>
    <comment_count>4</comment_count>
    <who name="Sebastian Dröge (slomo)">slomo</who>
    <bug_when>2010-06-01 11:01:52 -0700</bug_when>
    <thetext>&lt;slomo&gt; philn-tp: also, the video-sink of playbin2 is not always a GstBin, what you do there is not a good idea
&lt;slomo&gt; philn-tp: create your own bin and use it as video-sink
&lt;slomo&gt; philn-tp: i mean, *always* use your own GstBin as videosink, which has a tee in the beginning and then splits this to the webkit cairo sink and if requested to the fullscreen videosink

The video-sink of playbin2 is not always a GstBin and you really shouldn&apos;t do things like that with a bin where you don&apos;t know what it is ;)

What you should do is the following:
- create a GstBin, put a tee in there and plug after that the webkit cairo video sink (and queue, ffmpegcolorspace, videoscale)
- If fullscreen is requested, request a new pad from the tee and link your fullscreen stuff to it

*Always* do that, create this video sink bin together with playbin2 and set it as video-sink.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232852</commentid>
    <comment_count>5</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-06-01 11:18:20 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &lt;slomo&gt; philn-tp: also, the video-sink of playbin2 is not always a GstBin, what you do there is not a good idea
&gt; &lt;slomo&gt; philn-tp: create your own bin and use it as video-sink
&gt; &lt;slomo&gt; philn-tp: i mean, *always* use your own GstBin as videosink, which has a tee in the beginning and then splits this to the webkit cairo sink and if requested to the fullscreen videosink
&gt; 
&gt; The video-sink of playbin2 is not always a GstBin and you really shouldn&apos;t do things like that with a bin where you don&apos;t know what it is ;)
&gt; 
&gt; What you should do is the following:
&gt; - create a GstBin, put a tee in there and plug after that the webkit cairo video sink (and queue, ffmpegcolorspace, videoscale)
&gt; - If fullscreen is requested, request a new pad from the tee and link your fullscreen stuff to it
&gt; 
&gt; *Always* do that, create this video sink bin together with playbin2 and set it as video-sink.

This is what i do in the patch of bug 39472. Sorry about the confusion ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233657</commentid>
    <comment_count>6</comment_count>
    <who name="Sebastian Dröge (slomo)">slomo</who>
    <bug_when>2010-06-03 01:11:50 -0700</bug_when>
    <thetext>Oh, sorry. I saw the two patches in the wrong order. The patch looks good :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233666</commentid>
    <comment_count>7</comment_count>
      <attachid>57745</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-06-03 01:39:09 -0700</bug_when>
    <thetext>Created attachment 57745
proposed patch

No feature change compared to previous patch. I only removed cruft and
renamed variables.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233780</commentid>
    <comment_count>8</comment_count>
      <attachid>57776</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-06-03 09:02:00 -0700</bug_when>
    <thetext>Created attachment 57776
proposed patch

This new version improves the new-segment event sending code when
entering fullscreen. Previous patch had hard-coded values, which is
bad ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234086</commentid>
    <comment_count>9</comment_count>
      <attachid>57849</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-06-04 00:47:30 -0700</bug_when>
    <thetext>Created attachment 57849
proposed patch

This version fixes some memory leaks spotted by Sebastian. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242492</commentid>
    <comment_count>10</comment_count>
      <attachid>57849</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-06-24 07:05:56 -0700</bug_when>
    <thetext>Comment on attachment 57849
proposed patch

WebCore/platform/graphics/gstreamer/GStreamerGWorld.cpp:113
 +      tee = gst_bin_get_by_name(GST_BIN(videoSink.get()), &quot;t&quot;);
Variables should be declared at first usage in cases like this.

WebCore/platform/graphics/gstreamer/GStreamerGWorld.cpp:142
 +      // See https://bugzilla.gnome.org/show_bug.cgi?id=620490.
Perhaps you can just do a check, conditional on having a new enough gstreamer, so we have the feature in builds with newer versions, without the need to require them?

 165     GOwnPtr&lt;GstElement&gt; videoSink;
 166     GstElement* tee;
 167     GstElement* colorspace;
 168     GstElement* platformVideoSink;
 169     GstElement* queue;
 170     GstElement* videoScale;
 171     GstPad* srcPad;
 172     GstPad* sinkPad;

Same thing here, many of these declarations should be done at first usage - I know some of them need to be pre-declared, like videoSink, but they can be pre-declared in the line immediately above the function that gets them - g_object_get in this case.

I can&apos;t find what makes the m_fullscreenWindow go fullscreen (like a call to gtk_window_fullscreen), is this planned to be handled elsewhere? I also did not find who calls enterFullscreen, I think you&apos;re planning to land this first, and then wiring it up? I&apos;d prefer to have the wiring up in this patch, otherwise we&apos;re landing dead code. I&apos;ll mark this r- so we can work on the issues I mentioned, thanks for working on this! =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242859</commentid>
    <comment_count>11</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-06-24 23:21:57 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; 
&gt; I can&apos;t find what makes the m_fullscreenWindow go fullscreen (like a call to gtk_window_fullscreen), is this planned to be handled elsewhere? I also did not find who calls enterFullscreen, I think you&apos;re planning to land this first, and then wiring it up? I&apos;d prefer to have the wiring up in this patch, otherwise we&apos;re landing dead code. I&apos;ll mark this r- so we can work on the issues I mentioned, thanks for working on this! =)

Thanks for the review.
I didn&apos;t include the &quot;wiring&quot; in this patch because it would have been to big. Like you guessed I plan to submit another patch including a FullscreenVideoController and the missing bits for enabling fullscreen video in the gtk+ port.

I&apos;ll send a new patch fixing the issues you spotted</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242875</commentid>
    <comment_count>12</comment_count>
      <attachid>59740</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-06-25 00:41:33 -0700</bug_when>
    <thetext>Created attachment 59740
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249505</commentid>
    <comment_count>13</comment_count>
      <attachid>61149</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-07-10 04:29:35 -0700</bug_when>
    <thetext>Created attachment 61149
gtk xoverlay support in GStreamerGWorld</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249506</commentid>
    <comment_count>14</comment_count>
      <attachid>61150</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-07-10 04:29:55 -0700</bug_when>
    <thetext>Created attachment 61150
fullscreen video support in WebKit/gtk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249507</commentid>
    <comment_count>15</comment_count>
      <attachid>61151</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-07-10 04:30:19 -0700</bug_when>
    <thetext>Created attachment 61151
tests rebaselined</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249509</commentid>
    <comment_count>16</comment_count>
      <attachid>61153</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-07-10 04:38:39 -0700</bug_when>
    <thetext>Created attachment 61153
fullscreen video support in WebKit/gtk

style fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249695</commentid>
    <comment_count>17</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-07-11 23:39:37 -0700</bug_when>
    <thetext>*** Bug 32798 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252374</commentid>
    <comment_count>18</comment_count>
      <attachid>61771</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-07-16 00:32:26 -0700</bug_when>
    <thetext>Created attachment 61771
fullscreen support in WebKit/gtk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252375</commentid>
    <comment_count>19</comment_count>
      <attachid>61771</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-07-16 00:36:16 -0700</bug_when>
    <thetext>Comment on attachment 61771
fullscreen support in WebKit/gtk

Err, incomplete patch uploaded</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252377</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-16 00:46:29 -0700</bug_when>
    <thetext>Attachment 61771 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/3576049</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252385</commentid>
    <comment_count>21</comment_count>
      <attachid>61773</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-07-16 01:04:55 -0700</bug_when>
    <thetext>Created attachment 61773
fullscreen video support in WebKit/gtk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252398</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-16 01:27:18 -0700</bug_when>
    <thetext>Attachment 61773 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/3558056</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252402</commentid>
    <comment_count>23</comment_count>
      <attachid>61777</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-07-16 01:33:22 -0700</bug_when>
    <thetext>Created attachment 61777
fullscreen video support in WebKit/gtk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252516</commentid>
    <comment_count>24</comment_count>
      <attachid>61777</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-07-16 07:54:03 -0700</bug_when>
    <thetext>Comment on attachment 61777
fullscreen video support in WebKit/gtk

 79 #if PLATFORM(GTK)
 80         m_fullscreenWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
 81         gtk_widget_set_events(m_fullscreenWindow, GDK_POINTER_MOTION_MASK | GDK_KEY_PRESS_MASK | GDK_FOCUS_CHANGE_MASK);
 82 
 83         m_videoWindow = gtk_drawing_area_new();
 84         gtk_widget_set_double_buffered(m_videoWindow, FALSE);
 85         gtk_container_add(GTK_CONTAINER(m_fullscreenWindow), m_videoWindow);
 86 
 87         gtk_widget_show_all(m_fullscreenWindow);
 88         gtk_widget_realize(m_fullscreenWindow);
 89         gtk_widget_hide_all(m_fullscreenWindow);

This sequence looks very weird to me. What exactly do you intend to do here? Do you need both m_fullscreenWindow, and m_videoWindow realized? Why not just call realize on both? But, what comes later is a bit more weird:

 90 
 91 #ifdef GDK_WINDOWING_X11
 92         gdk_threads_enter();
 93         gdk_display_sync(gdk_display_get_default());
 94         m_videoWindowId = GDK_WINDOW_XID(gtk_widget_get_window(m_fullscreenWindow));
 95         gdk_threads_leave();
 96 #endif
 97 #endif
 98     }

If you think gdk_threads_enter() is required here, it should also be used above in the gtk calls, why are you not using it there? For the future, to avoid having a lot of #ifdefing, we may want to replace these with calls to, say, platformEnterFullScreen, that would be implemented in a platform/graphics/GStreamerGWorldGtk.cpp, or maybe platform/graphics/gstreamer/gtk/GStreamerGWorldGtk.cpp, similar to how, say, platform-specific parts of ResourceRequest are_factory_make(&quot;queue&quot;, &quot;queue&quot;); Sorry for not spotting these in earlier patches =(. I&apos;m still looking at the patch, let me checkpoint here, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252592</commentid>
    <comment_count>25</comment_count>
      <attachid>61777</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-07-16 10:47:53 -0700</bug_when>
    <thetext>Comment on attachment 61777
fullscreen video support in WebKit/gtk

 286     gtk_widget_show_all(m_window);
 287     gtk_widget_realize(m_window);

No point in showing, then realizing. Showing triggers realizing. You seem to only need realize at this point, but it seems you want it shown anyway, so just show it.

 290     GdkCursor* cursor = gdk_cursor_new(GDK_BLANK_CURSOR);
 291     m_cursor = gdk_window_get_cursor(window);
 292     gdk_window_set_cursor(window, cursor);

I think you need to ref this cursor. Since the cursor is owned by the window, the pointer you got will not necessarily (and more likely not) exist after you set the blank cursor on it.

 298     gtk_window_fullscreen(GTK_WINDOW(m_window));
 299     gtk_widget_show_all(m_hudWindow);
 300     showHud(true);

You are already showing the m_hudWindow inside showHud, why do you need this call to gtk_widget_show_all() here?

 319     // Scale the hud to the full width of the screen.
 320     gtk_window_resize(GTK_WINDOW(m_hudWindow), fullscreenRectangle.width, hudHeight);

Scale -&gt; resize. Scale gives the wrong idea.

Some general comments: we have a number of callbacks taking the video controller object as the data. This has been, I think, one of the top three causes of crashes in webkitgtk code as far as I remember. mrobinson figured out a way to make this kind of code more robust, using GClosures. Check this change out, I&apos;d recommend doing something similar for these: http://trac.webkit.org/changeset/57901. Also, you don&apos;t seem to have many checks in place for the case where enterFullScreen fails, and returns 0.

There are two things I really don&apos;t like: the code uses the media element directly for many things, and seems to duplicate some code, I think that might be something we&apos;ll have to accept, though, I haven&apos;t been able to assess if you could use the player instead of messing with the element. I really dislike how enterFullscreen returns a gulong, though. That feels really dirty heh. I would prefer having another method, platformWindow(), say, that would return a typedef&apos;ed type, having each implementation return its window type, with no need for ugly reinterpret_cast&apos;ing, and stuff. enterFullScreen could return a boolean to let the caller know things went through or not. So you&apos;d have, instead of:

 266     m_window = reinterpret_cast&lt;GtkWidget*&gt;(m_mediaElement-&gt;platformMedia().media.gstreamerGWorld-&gt;enterFullscreen());

this:

    if (!m_mediaElement-&gt;platformMedia().media.gstreamerGWorld-&gt;enterFullscreen())
        return;

    m_window = m_mediaElement-&gt;platformMedia().media.gstreamerGWorld-&gt;platformWindow();

I don&apos;t really like these huge chains, too, btw, can we just hold a pointer to gstreamerGWorld? Finally, I think this design is a good enough one for a first iteration, but I think we should consider factoring out the &quot;interfacing with the media element/player&quot; into a MediaPlayerClient so that we could provide API for browsers to know about/control the media elements in a way that is higher level than using the DOM bindings. I&apos;ll say r- for now so we can get these comments worked on, thanks for working on this, again =).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>253587</commentid>
    <comment_count>26</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-07-20 00:32:31 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (From update of attachment 61777 [details])
&gt;  286     gtk_widget_show_all(m_window);
&gt;  287     gtk_widget_realize(m_window);
&gt; 
&gt; No point in showing, then realizing. Showing triggers realizing. You seem to only need realize at this point, but it seems you want it shown anyway, so just show it.

I just need it realized to access the window, just below. Removed the show_all call.

&gt; 
&gt;  290     GdkCursor* cursor = gdk_cursor_new(GDK_BLANK_CURSOR);
&gt;  291     m_cursor = gdk_window_get_cursor(window);
&gt;  292     gdk_window_set_cursor(window, cursor);
&gt; 
&gt; I think you need to ref this cursor. Since the cursor is owned by the window, the pointer you got will not necessarily (and more likely not) exist after you set the blank cursor on it.
&gt; 

I guess you&apos;re right although I didn&apos;t observe what you states ;) I now use GRefPtr for the cursor, just to be safe.

&gt;  298     gtk_window_fullscreen(GTK_WINDOW(m_window));
&gt;  299     gtk_widget_show_all(m_hudWindow);
&gt;  300     showHud(true);
&gt; 
&gt; You are already showing the m_hudWindow inside showHud, why do you need this call to gtk_widget_show_all() here?
&gt; 

Remove show_all call ;)

&gt;  319     // Scale the hud to the full width of the screen.
&gt;  320     gtk_window_resize(GTK_WINDOW(m_hudWindow), fullscreenRectangle.width, hudHeight);
&gt; 
&gt; Scale -&gt; resize. Scale gives the wrong idea.
&gt; 

ok

&gt; Some general comments: we have a number of callbacks taking the video controller object as the data. This has been, I think, one of the top three causes of crashes in webkitgtk code as far as I remember. mrobinson figured out a way to make this kind of code more robust, using GClosures. Check this change out, I&apos;d recommend doing something similar for these: http://trac.webkit.org/changeset/57901. 

Sorry but I don&apos;t understand this. Where exactly should I use GClosures? g_signal_connect already internally uses GClosures. Would you please explain a bit more?

&gt; Also, you don&apos;t seem to have many checks in place for the case where enterFullScreen fails, and returns 0.
&gt; 

Made it return a bool and adapted the controller&apos;s enterFullscreen accordingly.

&gt; There are two things I really don&apos;t like: the code uses the media element directly for many things, and seems to duplicate some code, I think that might be something we&apos;ll have to accept, though, I haven&apos;t been able to assess if you could use the player instead of messing with the element. 

Using the private player you mean? or the MediaPlayer instance?
It&apos;d be nice if I could use the MediaPlayer instance but using the media element here is better (I think) because it&apos;s the highest-level API. So by using it we are sure our controller is using the high level APIs as defined in the spec.

&gt; I really dislike how enterFullscreen returns a gulong, though. That feels really dirty heh. I would prefer having another method, platformWindow(), say, that would return a typedef&apos;ed type, having each implementation return its window type, with no need for ugly reinterpret_cast&apos;ing, and stuff. enterFullScreen could return a boolean to let the caller know things went through or not. So you&apos;d have, instead of:
&gt; 
&gt;  266     m_window = reinterpret_cast&lt;GtkWidget*&gt;(m_mediaElement-&gt;platformMedia().media.gstreamerGWorld-&gt;enterFullscreen());
&gt; 
&gt; this:
&gt; 
&gt;     if (!m_mediaElement-&gt;platformMedia().media.gstreamerGWorld-&gt;enterFullscreen())
&gt;         return;
&gt; 
&gt;     m_window = m_mediaElement-&gt;platformMedia().media.gstreamerGWorld-&gt;platformWindow();
&gt; 

Done that, I think :)
A PlatformVideoWindow class with a Gtk implementation.

&gt; I don&apos;t really like these huge chains, too, btw, can we just hold a pointer to gstreamerGWorld?

Sure!

&gt; Finally, I think this design is a good enough one for a first iteration, but I think we should consider factoring out the &quot;interfacing with the media element/player&quot; into a MediaPlayerClient so that we could provide API for browsers to know about/control the media elements in a way that is higher level than using the DOM bindings. I&apos;ll say r- for now so we can get these comments worked on, thanks for working on this, again =).

Yes that&apos;d be really great. The MediaPlayer would need some changes to accept multiple clients instead of only one though.

Will attach the updated patch once I tested it in my debug build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>253629</commentid>
    <comment_count>27</comment_count>
      <attachid>62047</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-07-20 02:47:24 -0700</bug_when>
    <thetext>Created attachment 62047
fullscreen video support in WebKit/gtk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259156</commentid>
    <comment_count>28</comment_count>
      <attachid>62047</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-08-02 15:44:04 -0700</bug_when>
    <thetext>Comment on attachment 62047
fullscreen video support in WebKit/gtk

WebKit/gtk/WebCoreSupport/FullscreenVideoController.cpp:571
 +      g_object_set(m_exitFullscreenAction, &quot;icon-name&quot;, &quot;view-restore-symbolic&quot;, NULL);
symbolic icons are quite new, are we going to have to shift our dependencies for this?

 294     if (!node-&gt;hasTagName(HTMLNames::videoTag))
 295         return;
 296 
 297 #if ENABLE(VIDEO)

Might as well only do the check if video is enabled? Otherwise it&apos;s just useless work.

311 void webkit_web_view_exit_fullscreen(WebKitWebView* webView)
 312 {
 313 #if ENABLE(VIDEO)
 314     WebKitWebViewPrivate* priv = webView-&gt;priv;
 315     if (priv-&gt;fullscreenVideoController)
 316         priv-&gt;fullscreenVideoController-&gt;exitFullscreen();
 317 #endif

Certainly a good idea to NULLify the fullscreenVideoController here. Also, I believe you need to exit fullscreen in case a fullscreenVideoController exists during WebKitWebView&apos;s destruction? The callbacks receiving C++ objects as user data still concern me, I&apos;m pretty sure we&apos;ll get crashes from the object going away and the callback being called right after that.

These are my last concerns, I think, the rest of the patch looks good, so let&apos;s try to clear them up and land =D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263549</commentid>
    <comment_count>29</comment_count>
      <attachid>61151</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-08-11 18:15:37 -0700</bug_when>
    <thetext>Comment on attachment 61151
tests rebaselined

You shouldn&apos;t need a review for rebaselined tests. I&apos;m not sure if these are valid any longer, but if they aren&apos;t, you can commit them without review when they are ready.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263693</commentid>
    <comment_count>30</comment_count>
      <attachid>64202</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-08-12 03:12:29 -0700</bug_when>
    <thetext>Created attachment 64202
fullscreen video support in WebKit/gtk

Adressed the changes asked by Gustavo. Enabled symbolici icons only if
we build with GTK+3 so the GTK+2 requirement doesn&apos;t need to be
bumped, feel free to comment on that :)

About the signal callbacks I still fail to understand how to use
GClosures. Will poke Martin about it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263694</commentid>
    <comment_count>31</comment_count>
      <attachid>64203</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-08-12 03:13:02 -0700</bug_when>
    <thetext>Created attachment 64203
tests rebaselined</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263759</commentid>
    <comment_count>32</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-08-12 05:56:45 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; (From update of attachment 61151 [details])
&gt; You shouldn&apos;t need a review for rebaselined tests. I&apos;m not sure if these are valid any longer, but if they aren&apos;t, you can commit them without review when they are ready.

Indeed, and they should very likely go in the same patch as the one that requires the rebaselines, to avoid an unnecessary failure-&gt;fixed cycle =) I&apos;ll look at the new patch in a few hours.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264614</commentid>
    <comment_count>33</comment_count>
      <attachid>61151</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-13 21:33:03 -0700</bug_when>
    <thetext>Comment on attachment 61151
tests rebaselined

Cleared Martin Robinson&apos;s review+ from obsolete attachment 61151 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265170</commentid>
    <comment_count>34</comment_count>
      <attachid>64203</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-08-16 11:02:59 -0700</bug_when>
    <thetext>Comment on attachment 64203
tests rebaselined

No need to rebaseline these tests in a separate patch. Keep
them with your fullscreen change, so that they bots don&apos;t
become red between the patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265389</commentid>
    <comment_count>35</comment_count>
      <attachid>64557</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-08-17 00:40:00 -0700</bug_when>
    <thetext>Created attachment 64557
fullscreen video support in WebKit/gtk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266147</commentid>
    <comment_count>36</comment_count>
      <attachid>64717</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-08-18 09:09:36 -0700</bug_when>
    <thetext>Created attachment 64717
fullscreen video support in WebKit/gtk

Removed some spurious pointer casts in the signal disconnection calls
of exitFullscreen().

About the GClosure usage in this context, Martin said it shouldn&apos;t be
needed as long as the signal handlers are disconnected during the
instance destruction, which is the case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266424</commentid>
    <comment_count>37</comment_count>
      <attachid>64717</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-08-18 15:40:17 -0700</bug_when>
    <thetext>Comment on attachment 64717
fullscreen video support in WebKit/gtk

WebCore/platform/graphics/gstreamer/PlatformVideoWindow.h:46
 +          gulong m_videoWindowId;
Is gulong portable enough? Should we use a typedef similar to the PlatformWindowType here?

 418     void webkit_web_view_enter_fullscreen(WebKitWebView* webView, WebCore::Node* node);
 419     void webkit_web_view_exit_fullscreen(WebKitWebView* webView);

Make these follow the standard WebKit naming, since they are not really API, I think. webkitWebViewEnterFullscreen, for instance.

WebKit/gtk/WebCoreSupport/FullscreenVideoController.cpp:298
 +  
Needless empty line.

WebKit/gtk/WebCoreSupport/FullscreenVideoController.cpp:590
 +  
One more needless empty line =).

Looks good to me, thanks for clarifying the GClosure point, btw, let&apos;s get this thing on the wild!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266581</commentid>
    <comment_count>38</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-08-19 00:47:39 -0700</bug_when>
    <thetext>(In reply to comment #37)
&gt; (From update of attachment 64717 [details])
&gt; WebCore/platform/graphics/gstreamer/PlatformVideoWindow.h:46
&gt;  +          gulong m_videoWindowId;
&gt; Is gulong portable enough? Should we use a typedef similar to the PlatformWindowType here?

I believe gulong is fine. This is what gst_x_overlay_set_xwindow_id() requires anyway.

On Mac OS X it will be a cast of a NSView pointer and on Windows a cast of a HWND variable. I think it&apos;d be fine to have those casts in the platform-specific implementations.

I adressed the last requested changes. I also cleaned up the signal and g_source callbacks in the controller to avoid the casts, thanks to the wise help of Martin.

Will land the patch, thanks for the long-standing review ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266588</commentid>
    <comment_count>39</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-08-19 01:06:46 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/65658</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266589</commentid>
    <comment_count>40</comment_count>
      <attachid>64717</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-08-19 01:07:19 -0700</bug_when>
    <thetext>Comment on attachment 64717
fullscreen video support in WebKit/gtk

Clearing r+ flag of committed patch</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57336</attachid>
            <date>2010-05-28 09:54:41 -0700</date>
            <delta_ts>2010-06-01 10:35:55 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>proposed-patch.patch</filename>
            <type>text/plain</type>
            <size>10661</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBhM2UyNzFlZTYwOThiOTZkY2M5OWNiODU4ZWZhOTU5YjU2MjhiNDNkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDE4IE1heSAyMDEwIDE5OjIzOjAxICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
cHJvcG9zZWQgcGF0Y2gKCi0tLQogQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgIDEwICsrCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgMjEgKysrCiAuLi4vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dT
dHJlYW1lckdXb3JsZC5jcHAgICAgICAgICB8ICAxNDcgKysrKysrKysrKysrKysrKysrKysKIC4u
Li9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmggIHwgICAyMiAr
KysKIC4uLi9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCAgICAgIHwg
ICAgMSAtCiBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgIDEgKwogNiBmaWxlcyBjaGFuZ2VkLCAyMDEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlv
bnMoLSkKCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggNWVjZWUzNi4u
ZjE0ZjIyNSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEzIEBACisyMDEwLTA1LTI4ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR1N0
cmVhbWVyXSBHVEsgWE92ZXJsYXkgc3VwcG9ydCBpbiBHU3RyZWFtZXJHV29ybGQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDc0CisKKyAgICAgICAg
KiBjb25maWd1cmUuYWM6IGdzdC1pbnRlcmZhY2VzIGxpbmsgc3VwcG9ydCBuZWVkZWQgZm9yIHVz
ZSBvZgorICAgICAgICBHc3RYT3ZlcmxheSBpbnRlcmZhY2UuCisKIDIwMTAtMDUtMjcgIEd1c3Rh
dm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CiAKICAgICAgICAgRmluYWwgbWFrZSBk
aXN0Y2hlY2sgZml4IC0gY2xlYW4gdXAgZ2VuZXJhdGVkIEdET00gZmlsZXMgb24gZGlzdGNsZWFu
LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCAwMTBkODE4Li4wZGIxM2NjIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEwLTA1LTI4ICBQaGlsaXBwZSBO
b3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBbR1N0cmVhbWVyXSBHVEsgWE92ZXJsYXkgc3VwcG9ydCBp
biBHU3RyZWFtZXJHV29ybGQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM5NDc0CisKKyAgICAgICAgR1N0cmVhbWVyR1dvcmxkIG5vdyBjYXRjaGVzIHN5
bmNocm9ub3VzIG1lc3NhZ2VzIGNvbWluZyBmcm9tIHRoZQorICAgICAgICBzaW5rcyBhbmQgY3Jl
YXRlcyBhIEdUSyB3aW5kb3cgd2hlcmUgdGhlIHZpZGVvIGNhbiBiZSBvdmVybGF5ZWQgaWYKKyAg
ICAgICAgZnVsbHNjcmVlbiBkaXNwbGF5IGlzIHJlcXVlc3RlZCB1c2luZyBlbnRlckZ1bGxzY3Jl
ZW4uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dv
cmxkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdzdEdXb3JsZFN5bmNNZXNzYWdlQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyR1dvcmxkOjpHU3RyZWFtZXJHV29ybGQpOgor
ICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyR1dvcmxkOjp+R1N0cmVhbWVyR1dvcmxkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckdXb3JsZDo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdTdHJlYW1lckdXb3JsZDo6ZXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAo
V2ViQ29yZTo6R1N0cmVhbWVyR1dvcmxkOjpzZXRXaW5kb3dPdmVybGF5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5j
cHA6CisKIDIwMTAtMDUtMjcgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4K
IAogICAgICAgICBObyByZXZpZXcsIGJ1aWxkIGZpeGFnZS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5jcHAgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuY3BwCmluZGV4IGM1
MDIyZjkuLjcxMDU5NjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmNwcApAQCAtMjMsMTAgKzIzLDMyIEBACiAKICNp
bmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCIKIAorI2luY2x1ZGUgPGdzdC9n
c3QuaD4KKyNpbmNsdWRlIDxnc3QvaW50ZXJmYWNlcy94b3ZlcmxheS5oPgorCisjaWYgUExBVEZP
Uk0oR1RLKQorI2luY2x1ZGUgPGd0ay9ndGsuaD4KKyNpZmRlZiBHREtfV0lORE9XSU5HX1gxMQor
I2luY2x1ZGUgPGdkay9nZGt4Lmg+IC8vIGZvciBHREtfV0lORE9XX1hJRAorI2VuZGlmCisjdW5k
ZWYgTm9uZQorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorZ2Jvb2xlYW4gZ3N0R1dvcmxkU3luY01lc3NhZ2VDYWxsYmFjayhHc3RCdXMqIGJ1
cywgR3N0TWVzc2FnZSogbWVzc2FnZSwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBBU1NFUlQoR1NU
X01FU1NBR0VfVFlQRShtZXNzYWdlKSA9PSBHU1RfTUVTU0FHRV9FTEVNRU5UKTsKKworICAgIEdT
dHJlYW1lckdXb3JsZCogZ3N0R1dvcmxkID0gcmVpbnRlcnByZXRfY2FzdDxHU3RyZWFtZXJHV29y
bGQqPihkYXRhKTsKKworICAgIGlmIChnc3Rfc3RydWN0dXJlX2hhc19uYW1lKG1lc3NhZ2UtPnN0
cnVjdHVyZSwgInByZXBhcmUteHdpbmRvdy1pZCIpKQorICAgICAgICBnc3RHV29ybGQtPnNldFdp
bmRvd092ZXJsYXkobWVzc2FnZSk7CisgICAgcmV0dXJuIFRSVUU7Cit9CisKIFBhc3NSZWZQdHI8
R1N0cmVhbWVyR1dvcmxkPiBHU3RyZWFtZXJHV29ybGQ6OmNyZWF0ZUdXb3JsZChNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIqIHBsYXllcikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdT
dHJlYW1lckdXb3JsZChwbGF5ZXIpKTsKQEAgLTM0LDExICs1NiwxMzYgQEAgUGFzc1JlZlB0cjxH
U3RyZWFtZXJHV29ybGQ+IEdTdHJlYW1lckdXb3JsZDo6Y3JlYXRlR1dvcmxkKE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHIKIAogR1N0cmVhbWVyR1dvcmxkOjpHU3RyZWFtZXJHV29ybGQoTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyKiBwbGF5ZXIpCiAgICAgOiBtX3BsYXllcihwbGF5ZXIpCisgICAg
LCBtX3ZpZGVvV2luZG93SWQoMCkKKyAgICAsIG1fZHluYW1pY1BhZE5hbWUoMCkKIHsKKyAgICAv
LyBYT3ZlcmxheSBtZXNzYWdlcyBuZWVkIHRvIGJlIGhhbmRsZWQgc3luY2hyb25vdXNseS4KKyAg
ICBHc3RCdXMqIGJ1cyA9IGdzdF9waXBlbGluZV9nZXRfYnVzKEdTVF9QSVBFTElORShtX3BsYXll
ci0+cGlwZWxpbmUoKSkpOworICAgIGdzdF9idXNfc2V0X3N5bmNfaGFuZGxlcihidXMsIGdzdF9i
dXNfc3luY19zaWduYWxfaGFuZGxlciwgdGhpcyk7CisgICAgZ19zaWduYWxfY29ubmVjdChidXMs
ICJzeW5jLW1lc3NhZ2U6OmVsZW1lbnQiLCBHX0NBTExCQUNLKGdzdEdXb3JsZFN5bmNNZXNzYWdl
Q2FsbGJhY2spLCB0aGlzKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmKGJ1cyk7CiB9CiAKIEdTdHJl
YW1lckdXb3JsZDo6fkdTdHJlYW1lckdXb3JsZCgpCiB7CisgICAgZXhpdEZ1bGxzY3JlZW4oKTsK
K30KKworZ3Vsb25nIEdTdHJlYW1lckdXb3JsZDo6ZW50ZXJGdWxsc2NyZWVuKCkKK3sKKyAgICBp
ZiAobV9keW5hbWljUGFkTmFtZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyNpZiBQTEFURk9STShH
VEspCisgICAgaWYgKCFtX2Z1bGxzY3JlZW5XaW5kb3cpIHsKKyAgICAgICAgbV9mdWxsc2NyZWVu
V2luZG93ID0gZ3RrX3dpbmRvd19uZXcoR1RLX1dJTkRPV19UT1BMRVZFTCk7CisgICAgICAgIGd0
a193aWRnZXRfc2V0X2V2ZW50cyhtX2Z1bGxzY3JlZW5XaW5kb3csIEdES19QT0lOVEVSX01PVElP
Tl9NQVNLIHwgR0RLX0tFWV9QUkVTU19NQVNLKTsKKworICAgICAgICBtX3ZpZGVvV2luZG93ID0g
Z3RrX2RyYXdpbmdfYXJlYV9uZXcoKTsKKyAgICAgICAgZ3RrX3dpZGdldF9zZXRfZG91YmxlX2J1
ZmZlcmVkKG1fdmlkZW9XaW5kb3csIEZBTFNFKTsKKyAgICAgICAgZ3RrX2NvbnRhaW5lcl9hZGQo
R1RLX0NPTlRBSU5FUihtX2Z1bGxzY3JlZW5XaW5kb3cpLCBtX3ZpZGVvV2luZG93KTsKKworICAg
ICAgICBndGtfd2lkZ2V0X3Nob3dfYWxsKG1fZnVsbHNjcmVlbldpbmRvdyk7CisgICAgICAgIGd0
a193aWRnZXRfcmVhbGl6ZShtX2Z1bGxzY3JlZW5XaW5kb3cpOworICAgICAgICBndGtfd2lkZ2V0
X2hpZGVfYWxsKG1fZnVsbHNjcmVlbldpbmRvdyk7CisgICAgfQorCisjaWZkZWYgR0RLX1dJTkRP
V0lOR19YMTEKKyAgICBnZGtfZGlzcGxheV9zeW5jKGdka19kaXNwbGF5X2dldF9kZWZhdWx0KCkp
OworICAgIG1fdmlkZW9XaW5kb3dJZCA9IEdES19XSU5ET1dfWElEKG1fdmlkZW9XaW5kb3ctPndp
bmRvdyk7CisjZW5kaWYKKyNlbmRpZgorCisgICAgR3N0RWxlbWVudCogcGlwZWxpbmUgPSBtX3Bs
YXllci0+cGlwZWxpbmUoKTsKKyAgICBHc3RFbGVtZW50KiBzaW5rMiA9IGdzdF9lbGVtZW50X2Zh
Y3RvcnlfbWFrZSgiYXV0b3ZpZGVvc2luayIsICJwc2luayIpOworICAgIEdzdEVsZW1lbnQqIGNz
cCA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiZmZtcGVnY29sb3JzcGFjZSIsICJjc3AiKTsK
KyAgICBHc3RFbGVtZW50KiBxdWV1ZTIgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoInF1ZXVl
IiwgInEyIik7CisgICAgR3N0RWxlbWVudCogdnNpbms7CisgICAgR3N0UGFkKiBzcmNQYWQ7Cisg
ICAgR3N0UGFkKiBzaW5rUGFkOworICAgIEdzdEVsZW1lbnQqIHRlZTsKKworICAgIC8vIEdldCB2
aWRlbyBzaW5rIGJpbiBhbmQgdGhlIHRlZSBpbnNpZGUuCisgICAgZ19vYmplY3RfZ2V0KHBpcGVs
aW5lLCAidmlkZW8tc2luayIsICZ2c2luaywgTlVMTCk7CisgICAgdGVlID0gZ3N0X2Jpbl9nZXRf
YnlfbmFtZShHU1RfQklOKHZzaW5rKSwgInQiKTsKKworICAgIC8vIEFkZCBhbmQgbGluayBhIHF1
ZXVlLCBmZm1wZWdjb2xvcnNwYWNlIGFuZCBzaW5rIGluIHRoZSBiaW4uCisgICAgZ3N0X2Jpbl9h
ZGRfbWFueShHU1RfQklOKHZzaW5rKSwgc2luazIsIHF1ZXVlMiwgY3NwLCBOVUxMKTsKKyAgICBn
c3RfZWxlbWVudF9saW5rX21hbnkocXVldWUyLCBjc3AsIHNpbmsyLCBOVUxMKTsKKworICAgIC8v
IExpbmsgYSBuZXcgc3JjIHBhZCBmcm9tIHRlZSB0byBxdWV1ZS4KKyAgICBzcmNQYWQgPSBnc3Rf
ZWxlbWVudF9nZXRfcmVxdWVzdF9wYWQodGVlLCAic3JjJWQiKTsKKyAgICBzaW5rUGFkID0gZ3N0
X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQocXVldWUyLCAic2luayIpOworICAgIGdzdF9wYWRfbGlu
ayhzcmNQYWQsIHNpbmtQYWQpOworCisgICAgbV9keW5hbWljUGFkTmFtZSA9IGdzdF9wYWRfZ2V0
X25hbWUoc3JjUGFkKTsKKworICAgIGdzdF9vYmplY3RfdW5yZWYoR1NUX09CSkVDVChzcmNQYWQp
KTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmKEdTVF9PQkpFQ1Qoc2lua1BhZCkpOworCisgICAgLy8g
Um9sbCBuZXcgZWxlbWVudHMgdG8gcGlwZWxpbmUgc3RhdGUuCisgICAgR3N0U3RhdGUgc3RhdGU7
CisgICAgZ3N0X2VsZW1lbnRfZ2V0X3N0YXRlKHBpcGVsaW5lLCAmc3RhdGUsIDAsIDApOworICAg
IGdzdF9lbGVtZW50X3NldF9zdGF0ZShxdWV1ZTIsIHN0YXRlKTsKKyAgICBnc3RfZWxlbWVudF9z
ZXRfc3RhdGUoY3NwLCBzdGF0ZSk7CisgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKHNpbmsyLCBz
dGF0ZSk7CisKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxndWxvbmc+KG1fZnVsbHNjcmVl
bldpbmRvdyk7Cit9CisKK3ZvaWQgR1N0cmVhbWVyR1dvcmxkOjpleGl0RnVsbHNjcmVlbigpCit7
CisgICAgaWYgKCFtX2R5bmFtaWNQYWROYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBHc3RF
bGVtZW50KiBwaXBlbGluZSA9IG1fcGxheWVyLT5waXBlbGluZSgpOworICAgIEdzdEVsZW1lbnQq
IHZzaW5rOworICAgIEdzdEVsZW1lbnQqIHRlZTsKKyAgICBHc3RFbGVtZW50KiBjc3A7CisgICAg
R3N0RWxlbWVudCogc2luazI7CisgICAgR3N0RWxlbWVudCogcXVldWUyOworICAgIEdzdFBhZCog
c3JjUGFkOworICAgIEdzdFBhZCogc2lua1BhZDsKKworICAgIC8vIEdldCB2aWRlbyBzaW5rIGJp
biBhbmQgdGhlIGVsZW1lbnRzIHRvIHJlbW92ZS4KKyAgICBnX29iamVjdF9nZXQocGlwZWxpbmUs
ICJ2aWRlby1zaW5rIiwgJnZzaW5rLCBOVUxMKTsKKyAgICB0ZWUgPSBnc3RfYmluX2dldF9ieV9u
YW1lKEdTVF9CSU4odnNpbmspLCAidCIpOworICAgIHNpbmsyID0gZ3N0X2Jpbl9nZXRfYnlfbmFt
ZShHU1RfQklOKHZzaW5rKSwgInBzaW5rIik7CisgICAgcXVldWUyID0gZ3N0X2Jpbl9nZXRfYnlf
bmFtZShHU1RfQklOKHZzaW5rKSwgInEyIik7CisgICAgY3NwID0gZ3N0X2Jpbl9nZXRfYnlfbmFt
ZShHU1RfQklOKHZzaW5rKSwgImNzcCIpOworCisgICAgLy8gR2V0IHBhZHMgdG8gdW5saW5rIGFu
ZCByZW1vdmUuCisgICAgc3JjUGFkID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQodGVlLCBt
X2R5bmFtaWNQYWROYW1lKTsKKyAgICBzaW5rUGFkID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19w
YWQocXVldWUyLCAic2luayIpOworCisgICAgLy8gVW5saW5rIGFuZCByZWxlYXNlIHJlcXVlc3Qg
cGFkLgorICAgIGdzdF9wYWRfdW5saW5rKHNyY1BhZCwgc2lua1BhZCk7CisgICAgZ3N0X2VsZW1l
bnRfcmVsZWFzZV9yZXF1ZXN0X3BhZCh0ZWUsIHNyY1BhZCk7CisKKyAgICBnc3Rfb2JqZWN0X3Vu
cmVmKEdTVF9PQkpFQ1Qoc3JjUGFkKSk7CisgICAgZ3N0X29iamVjdF91bnJlZihHU1RfT0JKRUNU
KHNpbmtQYWQpKTsKKworICAgIC8vIFVubGluayBhbmQgcmVtb3ZlIHF1ZXVlLCBmZm1wZWdjb2xv
cnNwYWNlIGFuZCBzaW5rLgorICAgIGdzdF9lbGVtZW50X3VubGlua19tYW55KHF1ZXVlMiwgY3Nw
LCBzaW5rMiwgTlVMTCk7CisgICAgZ3N0X2Jpbl9yZW1vdmVfbWFueShHU1RfQklOKHZzaW5rKSwg
cXVldWUyLCBjc3AsIHNpbmsyLCBOVUxMKTsKKworICAgIG1fZHluYW1pY1BhZE5hbWUgPSAwOwor
fQorCit2b2lkIEdTdHJlYW1lckdXb3JsZDo6c2V0V2luZG93T3ZlcmxheShHc3RNZXNzYWdlKiBt
ZXNzYWdlKQoreworICAgIEdzdE9iamVjdCogc2luayA9IEdTVF9NRVNTQUdFX1NSQyhtZXNzYWdl
KTsKKworICAgIGlmICghR1NUX0lTX1hfT1ZFUkxBWShzaW5rKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgR3N0WE92ZXJsYXkqIHhvdmVybGF5ID0gR1NUX1hfT1ZFUkxBWShzaW5rKTsKKworICAg
IGlmIChnX29iamVjdF9jbGFzc19maW5kX3Byb3BlcnR5KEdfT0JKRUNUX0dFVF9DTEFTUyhzaW5r
KSwgImZvcmNlLWFzcGVjdC1yYXRpbyIpKQorICAgICAgICBnX29iamVjdF9zZXQoc2luaywgImZv
cmNlLWFzcGVjdC1yYXRpbyIsIFRSVUUsIE5VTEwpOworCisgICAgaWYgKG1fdmlkZW9XaW5kb3dJ
ZCkKKyAgICAgICAgZ3N0X3hfb3ZlcmxheV9zZXRfeHdpbmRvd19pZCh4b3ZlcmxheSwgbV92aWRl
b1dpbmRvd0lkKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuaAppbmRleCBiNjI2Mjk4Li5jOTYyNTgwIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29y
bGQuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJH
V29ybGQuaApAQCAtMjcsMjEgKzI3LDQzIEBACiAjaW5jbHVkZSAiUmVmUHRyLmgiCiAjaW5jbHVk
ZSA8Z2xpYi5oPgogCit0eXBlZGVmIHN0cnVjdCBfR3N0TWVzc2FnZSBHc3RNZXNzYWdlOwordHlw
ZWRlZiBzdHJ1Y3QgX0dzdFBhZCBHc3RQYWQ7Cit0eXBlZGVmIHN0cnVjdCBfR3N0TWluaU9iamVj
dCBHc3RNaW5pT2JqZWN0OwordHlwZWRlZiBzdHJ1Y3QgX0dzdEVsZW1lbnQgR3N0RWxlbWVudDsK
K3R5cGVkZWYgc3RydWN0IF9Hc3RCdXMgR3N0QnVzOwordHlwZWRlZiBzdHJ1Y3QgX0dzdEJpbiBH
c3RCaW47Cit0eXBlZGVmIHN0cnVjdCBfR3RrV2lkZ2V0IEd0a1dpZGdldDsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI7CiAKK2dib29s
ZWFuIGdzdEdXb3JsZFN5bmNNZXNzYWdlQ2FsbGJhY2soR3N0QnVzKiBidXMsIEdzdE1lc3NhZ2Uq
IG1lc3NhZ2UsIGdwb2ludGVyIGRhdGEpOwogCiBjbGFzcyBHU3RyZWFtZXJHV29ybGQgOiBwdWJs
aWMgUmVmQ291bnRlZDxHU3RyZWFtZXJHV29ybGQ+IHsKKyAgICBmcmllbmQgZ2Jvb2xlYW4gZ3N0
R1dvcmxkU3luY01lc3NhZ2VDYWxsYmFjayhHc3RCdXMqIGJ1cywgR3N0TWVzc2FnZSogbWVzc2Fn
ZSwgZ3BvaW50ZXIgZGF0YSk7CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxHU3Ry
ZWFtZXJHV29ybGQ+IGNyZWF0ZUdXb3JsZChNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqKTsK
ICAgICB+R1N0cmVhbWVyR1dvcmxkKCk7CiAKKyAgICAvLyBSZXR1cm5zIHRoZSBmdWxsLXNjcmVl
biB3aW5kb3cgY3JlYXRlZAorICAgIGd1bG9uZyBlbnRlckZ1bGxzY3JlZW4oKTsKKyAgICB2b2lk
IGV4aXRGdWxsc2NyZWVuKCk7CisKKyAgICB2b2lkIHZpZGVvV2luZG93UmVhbGl6ZWQoR3RrV2lk
Z2V0KiB3aWRnZXQpOworICAgIHZvaWQgc2V0V2luZG93T3ZlcmxheShHc3RNZXNzYWdlKiBtZXNz
YWdlKTsKKwogcHJpdmF0ZToKICAgICBHU3RyZWFtZXJHV29ybGQoTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyKik7CiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKiBtX3BsYXllcjsK
KyNpZiBQTEFURk9STShHVEspCisgICAgR3RrV2lkZ2V0KiBtX3ZpZGVvV2luZG93OworICAgIEd0
a1dpZGdldCogbV9mdWxsc2NyZWVuV2luZG93OworI2VuZGlmCisgICAgZ3Vsb25nIG1fdmlkZW9X
aW5kb3dJZDsKKyAgICBnY2hhciogbV9keW5hbWljUGFkTmFtZTsKIH07CiAKIH0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGQ2MTllMTQuLjQzZTI0YmYgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtNTQsNyArNTQsNiBAQAogI2lu
Y2x1ZGUgPEdPd25QdHIuaD4KICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAjaW5jbHVkZSA8Z3N0L2lu
dGVyZmFjZXMvbWl4ZXIuaD4KLSNpbmNsdWRlIDxnc3QvaW50ZXJmYWNlcy94b3ZlcmxheS5oPgog
I2luY2x1ZGUgPGdzdC92aWRlby92aWRlby5oPgogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRl
IDxtYXRoLmg+CmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXgg
YmUyOTQ5NS4uMWU1MGUwZSAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3Vy
ZS5hYwpAQCAtNzU3LDYgKzc1Nyw3IEBAIGlmIHRlc3QgIiRlbmFibGVfdmlkZW8iID0gInllcyI7
IHRoZW4KICAgICAgICAgICAgICAgICAgICAgIFtnc3RyZWFtZXItMC4xMCA+PSAkR1NUUkVBTUVS
X1JFUVVJUkVEX1ZFUlNJT04KICAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1hcHAtMC4x
MAogICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLWJhc2UtMC4xMAorICAgICAgICAgICAg
ICAgICAgICAgZ3N0cmVhbWVyLWludGVyZmFjZXMtMC4xMAogICAgICAgICAgICAgICAgICAgICAg
Z3N0cmVhbWVyLXBidXRpbHMtMC4xMAogICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLXBs
dWdpbnMtYmFzZS0wLjEwID49ICRHU1RSRUFNRVJfUExVR0lOU19CQVNFX1JFUVVJUkVEX1ZFUlNJ
T04KICAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci12aWRlby0wLjEwXSkKLS0gCjEuNi4z
LjM=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57564</attachid>
            <date>2010-06-01 10:35:55 -0700</date>
            <delta_ts>2010-06-03 01:39:09 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>proposed-patch.patch</filename>
            <type>text/plain</type>
            <size>11162</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSAxMzVjYTMxODM5NDZmMzQwOWVkMzgxYzZkZTU3NWRkNjQxNzgwMTdmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDE4IE1heSAyMDEwIDE5OjIzOjAxICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
cHJvcG9zZWQgcGF0Y2gKCi0tLQogQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgIDEwICsrCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgMjEgKysrCiAuLi4vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dT
dHJlYW1lckdXb3JsZC5jcHAgICAgICAgICB8ICAxNTcgKysrKysrKysrKysrKysrKysrKysKIC4u
Li9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmggIHwgICAyMiAr
KysKIC4uLi9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCAgICAgIHwg
ICAgMSAtCiBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgIDEgKwogNiBmaWxlcyBjaGFuZ2VkLCAyMTEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlv
bnMoLSkKCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggZmQ0Zjk5Mi4u
ODFiMzJlOCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEzIEBACisyMDEwLTA1LTI4ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR1N0
cmVhbWVyXSBHVEsgWE92ZXJsYXkgc3VwcG9ydCBpbiBHU3RyZWFtZXJHV29ybGQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDc0CisKKyAgICAgICAg
KiBjb25maWd1cmUuYWM6IGdzdC1pbnRlcmZhY2VzIGxpbmsgc3VwcG9ydCBuZWVkZWQgZm9yIHVz
ZSBvZgorICAgICAgICBHc3RYT3ZlcmxheSBpbnRlcmZhY2UuCisKIDIwMTAtMDUtMzEgIFhhbiBM
b3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8g
Tm9yb25oYS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggZDAwOWFiYS4uNjAwMzU5OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMC0wNS0yOCAgUGhp
bGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dTdHJlYW1lcl0gR1RLIFhPdmVybGF5IHN1
cHBvcnQgaW4gR1N0cmVhbWVyR1dvcmxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zOTQ3NAorCisgICAgICAgIEdTdHJlYW1lckdXb3JsZCBub3cgY2F0
Y2hlcyBzeW5jaHJvbm91cyBtZXNzYWdlcyBjb21pbmcgZnJvbSB0aGUKKyAgICAgICAgc2lua3Mg
YW5kIGNyZWF0ZXMgYSBHVEsgd2luZG93IHdoZXJlIHRoZSB2aWRlbyBjYW4gYmUgb3ZlcmxheWVk
IGlmCisgICAgICAgIGZ1bGxzY3JlZW4gZGlzcGxheSBpcyByZXF1ZXN0ZWQgdXNpbmcgZW50ZXJG
dWxsc2NyZWVuLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lckdXb3JsZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnc3RHV29ybGRTeW5jTWVzc2FnZUNh
bGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckdXb3JsZDo6R1N0cmVhbWVyR1dv
cmxkKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckdXb3JsZDo6fkdTdHJlYW1lckdXb3Js
ZCk6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJHV29ybGQ6OmVudGVyRnVsbHNjcmVlbik6
CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJHV29ybGQ6OmV4aXRGdWxsc2NyZWVuKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckdXb3JsZDo6c2V0V2luZG93T3ZlcmxheSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwOgorCiAyMDEwLTA2LTAxICBBbnRvbiBNdWhpbiAgPGFudG9ubUBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTmF0ZSBDaGFwaW4uCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuY3BwIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmNwcAppbmRl
eCBjNTAyMmY5Li5mZDE4ODFlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5jcHAKQEAgLTIzLDEwICsyMywzMiBAQAog
CiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgiCiAKKyNpbmNsdWRlIDxn
c3QvZ3N0Lmg+CisjaW5jbHVkZSA8Z3N0L2ludGVyZmFjZXMveG92ZXJsYXkuaD4KKworI2lmIFBM
QVRGT1JNKEdUSykKKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaWZkZWYgR0RLX1dJTkRPV0lOR19Y
MTEKKyNpbmNsdWRlIDxnZGsvZ2RreC5oPiAvLyBmb3IgR0RLX1dJTkRPV19YSUQKKyNlbmRpZgor
I3VuZGVmIE5vbmUKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK2dib29sZWFuIGdzdEdXb3JsZFN5bmNNZXNzYWdlQ2FsbGJhY2soR3N0QnVz
KiBidXMsIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIGdwb2ludGVyIGRhdGEpCit7CisgICAgQVNTRVJU
KEdTVF9NRVNTQUdFX1RZUEUobWVzc2FnZSkgPT0gR1NUX01FU1NBR0VfRUxFTUVOVCk7CisKKyAg
ICBHU3RyZWFtZXJHV29ybGQqIGdzdEdXb3JsZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8R1N0cmVhbWVy
R1dvcmxkKj4oZGF0YSk7CisKKyAgICBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShtZXNzYWdl
LT5zdHJ1Y3R1cmUsICJwcmVwYXJlLXh3aW5kb3ctaWQiKSkKKyAgICAgICAgZ3N0R1dvcmxkLT5z
ZXRXaW5kb3dPdmVybGF5KG1lc3NhZ2UpOworICAgIHJldHVybiBUUlVFOworfQorCiBQYXNzUmVm
UHRyPEdTdHJlYW1lckdXb3JsZD4gR1N0cmVhbWVyR1dvcmxkOjpjcmVhdGVHV29ybGQoTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyKiBwbGF5ZXIpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBHU3RyZWFtZXJHV29ybGQocGxheWVyKSk7CkBAIC0zNCwxMSArNTYsMTQ2IEBAIFBhc3NSZWZQ
dHI8R1N0cmVhbWVyR1dvcmxkPiBHU3RyZWFtZXJHV29ybGQ6OmNyZWF0ZUdXb3JsZChNZWRpYVBs
YXllclByaXZhdGVHU3RyCiAKIEdTdHJlYW1lckdXb3JsZDo6R1N0cmVhbWVyR1dvcmxkKE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lciogcGxheWVyKQogICAgIDogbV9wbGF5ZXIocGxheWVyKQor
ICAgICwgbV92aWRlb1dpbmRvd0lkKDApCisgICAgLCBtX2R5bmFtaWNQYWROYW1lKDApCiB7Cisg
ICAgLy8gWE92ZXJsYXkgbWVzc2FnZXMgbmVlZCB0byBiZSBoYW5kbGVkIHN5bmNocm9ub3VzbHku
CisgICAgR3N0QnVzKiBidXMgPSBnc3RfcGlwZWxpbmVfZ2V0X2J1cyhHU1RfUElQRUxJTkUobV9w
bGF5ZXItPnBpcGVsaW5lKCkpKTsKKyAgICBnc3RfYnVzX3NldF9zeW5jX2hhbmRsZXIoYnVzLCBn
c3RfYnVzX3N5bmNfc2lnbmFsX2hhbmRsZXIsIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
YnVzLCAic3luYy1tZXNzYWdlOjplbGVtZW50IiwgR19DQUxMQkFDSyhnc3RHV29ybGRTeW5jTWVz
c2FnZUNhbGxiYWNrKSwgdGhpcyk7CisgICAgZ3N0X29iamVjdF91bnJlZihidXMpOwogfQogCiBH
U3RyZWFtZXJHV29ybGQ6On5HU3RyZWFtZXJHV29ybGQoKQogeworICAgIGV4aXRGdWxsc2NyZWVu
KCk7Cit9CisKK2d1bG9uZyBHU3RyZWFtZXJHV29ybGQ6OmVudGVyRnVsbHNjcmVlbigpCit7Cisg
ICAgaWYgKG1fZHluYW1pY1BhZE5hbWUpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKCFt
X3ZpZGVvV2luZG93SWQpIHsKKyNpZiBQTEFURk9STShHVEspCisgICAgICAgIG1fZnVsbHNjcmVl
bldpbmRvdyA9IGd0a193aW5kb3dfbmV3KEdUS19XSU5ET1dfVE9QTEVWRUwpOworICAgICAgICBn
dGtfd2lkZ2V0X3NldF9ldmVudHMobV9mdWxsc2NyZWVuV2luZG93LCBHREtfUE9JTlRFUl9NT1RJ
T05fTUFTSyB8IEdES19LRVlfUFJFU1NfTUFTSyk7CisKKyAgICAgICAgbV92aWRlb1dpbmRvdyA9
IGd0a19kcmF3aW5nX2FyZWFfbmV3KCk7CisgICAgICAgIGd0a193aWRnZXRfc2V0X2RvdWJsZV9i
dWZmZXJlZChtX3ZpZGVvV2luZG93LCBGQUxTRSk7CisgICAgICAgIGd0a19jb250YWluZXJfYWRk
KEdUS19DT05UQUlORVIobV9mdWxsc2NyZWVuV2luZG93KSwgbV92aWRlb1dpbmRvdyk7CisKKyAg
ICAgICAgZ3RrX3dpZGdldF9zaG93X2FsbChtX2Z1bGxzY3JlZW5XaW5kb3cpOworICAgICAgICBn
dGtfd2lkZ2V0X3JlYWxpemUobV9mdWxsc2NyZWVuV2luZG93KTsKKyAgICAgICAgZ3RrX3dpZGdl
dF9oaWRlX2FsbChtX2Z1bGxzY3JlZW5XaW5kb3cpOworCisjaWZkZWYgR0RLX1dJTkRPV0lOR19Y
MTEKKyAgICAgICAgZ2RrX3RocmVhZHNfZW50ZXIoKTsKKyAgICAgICAgZ2RrX2Rpc3BsYXlfc3lu
YyhnZGtfZGlzcGxheV9nZXRfZGVmYXVsdCgpKTsKKyAgICAgICAgbV92aWRlb1dpbmRvd0lkID0g
R0RLX1dJTkRPV19YSUQobV9mdWxsc2NyZWVuV2luZG93LT53aW5kb3cpOworICAgICAgICBnZGtf
dGhyZWFkc19sZWF2ZSgpOworI2VuZGlmCisjZW5kaWYKKyAgICB9CisKKyAgICBHc3RFbGVtZW50
KiBwaXBlbGluZSA9IG1fcGxheWVyLT5waXBlbGluZSgpOworICAgIEdzdEVsZW1lbnQqIHNpbmsy
ID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJhdXRvdmlkZW9zaW5rIiwgInBzaW5rIik7Cisg
ICAgR3N0RWxlbWVudCogY3NwID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJmZm1wZWdjb2xv
cnNwYWNlIiwgImNvbG9yc3BhY2UiKTsKKyAgICBHc3RFbGVtZW50KiBxdWV1ZTIgPSBnc3RfZWxl
bWVudF9mYWN0b3J5X21ha2UoInF1ZXVlIiwgInEyIik7CisgICAgR3N0RWxlbWVudCogdnNjYWxl
ID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJ2aWRlb3NjYWxlIiwgInZzY2FsZSIpOworICAg
IEdzdEVsZW1lbnQqIHZzaW5rOworICAgIEdzdFBhZCogc3JjUGFkOworICAgIEdzdFBhZCogc2lu
a1BhZDsKKyAgICBHc3RFbGVtZW50KiB0ZWU7CisKKyAgICAvLyBHZXQgdmlkZW8gc2luayBiaW4g
YW5kIHRoZSB0ZWUgaW5zaWRlLgorICAgIGdfb2JqZWN0X2dldChwaXBlbGluZSwgInZpZGVvLXNp
bmsiLCAmdnNpbmssIE5VTEwpOworICAgIHRlZSA9IGdzdF9iaW5fZ2V0X2J5X25hbWUoR1NUX0JJ
Tih2c2luayksICJ0Iik7CisKKyAgICAvLyBBZGQgYW5kIGxpbmsgYSBxdWV1ZSwgZmZtcGVnY29s
b3JzcGFjZSBhbmQgc2luayBpbiB0aGUgYmluLgorICAgIGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJ
Tih2c2luayksIHNpbmsyLCB2c2NhbGUsIGNzcCwgcXVldWUyLCBOVUxMKTsKKyAgICBnc3RfZWxl
bWVudF9saW5rX21hbnkocXVldWUyLCBjc3AsIHZzY2FsZSwgc2luazIsIE5VTEwpOworCisgICAg
Ly8gTGluayBhIG5ldyBzcmMgcGFkIGZyb20gdGVlIHRvIHF1ZXVlLgorICAgIHNyY1BhZCA9IGdz
dF9lbGVtZW50X2dldF9yZXF1ZXN0X3BhZCh0ZWUsICJzcmMlZCIpOworICAgIHNpbmtQYWQgPSBn
c3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChxdWV1ZTIsICJzaW5rIik7CisgICAgZ3N0X3BhZF9s
aW5rKHNyY1BhZCwgc2lua1BhZCk7CisgICAgZ3N0X29iamVjdF91bnJlZihHU1RfT0JKRUNUKHNp
bmtQYWQpKTsKKworICAgIG1fZHluYW1pY1BhZE5hbWUgPSBnc3RfcGFkX2dldF9uYW1lKHNyY1Bh
ZCk7CisKKyAgICAvLyBSb2xsIG5ldyBlbGVtZW50cyB0byBwaXBlbGluZSBzdGF0ZS4KKyAgICBH
c3RTdGF0ZSBzdGF0ZTsKKyAgICBnc3RfZWxlbWVudF9nZXRfc3RhdGUocGlwZWxpbmUsICZzdGF0
ZSwgMCwgMCk7CisgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKHF1ZXVlMiwgc3RhdGUpOworICAg
IGdzdF9lbGVtZW50X3NldF9zdGF0ZShjc3AsIHN0YXRlKTsKKyAgICBnc3RfZWxlbWVudF9zZXRf
c3RhdGUodnNjYWxlLCBzdGF0ZSk7CisgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKHNpbmsyLCBz
dGF0ZSk7CisKKyAgICAvLyBTaWduYWwgdGhlIHNpbmsgaXQgc2hvdWxkIHByb2Nlc3MgYSBuZXcg
c2VnbWVudC4KKyAgICBHc3RFdmVudCogZXZlbnQgPSBnc3RfZXZlbnRfbmV3X25ld19zZWdtZW50
KEZBTFNFLCAxLjAsIEdTVF9GT1JNQVRfVElNRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAsIC0xLCAwKTsKKyAgICBnc3RfcGFkX3B1c2hfZXZlbnQo
c3JjUGFkLCBldmVudCk7CisgICAgZ3N0X29iamVjdF91bnJlZihHU1RfT0JKRUNUKHNyY1BhZCkp
OworCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Z3Vsb25nPihtX2Z1bGxzY3JlZW5XaW5k
b3cpOworfQorCit2b2lkIEdTdHJlYW1lckdXb3JsZDo6ZXhpdEZ1bGxzY3JlZW4oKQoreworICAg
IGlmICghbV9keW5hbWljUGFkTmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR3N0RWxlbWVu
dCogcGlwZWxpbmUgPSBtX3BsYXllci0+cGlwZWxpbmUoKTsKKyAgICBHc3RFbGVtZW50KiB2c2lu
azsKKyAgICBHc3RFbGVtZW50KiB0ZWU7CisgICAgR3N0RWxlbWVudCogY3NwOworICAgIEdzdEVs
ZW1lbnQqIHNpbmsyOworICAgIEdzdEVsZW1lbnQqIHF1ZXVlMjsKKyAgICBHc3RFbGVtZW50KiB2
c2NhbGU7CisgICAgR3N0UGFkKiBzcmNQYWQ7CisgICAgR3N0UGFkKiBzaW5rUGFkOworCisgICAg
Ly8gR2V0IHZpZGVvIHNpbmsgYmluIGFuZCB0aGUgZWxlbWVudHMgdG8gcmVtb3ZlLgorICAgIGdf
b2JqZWN0X2dldChwaXBlbGluZSwgInZpZGVvLXNpbmsiLCAmdnNpbmssIE5VTEwpOworICAgIHRl
ZSA9IGdzdF9iaW5fZ2V0X2J5X25hbWUoR1NUX0JJTih2c2luayksICJ0Iik7CisgICAgc2luazIg
PSBnc3RfYmluX2dldF9ieV9uYW1lKEdTVF9CSU4odnNpbmspLCAicHNpbmsiKTsKKyAgICBxdWV1
ZTIgPSBnc3RfYmluX2dldF9ieV9uYW1lKEdTVF9CSU4odnNpbmspLCAicTIiKTsKKyAgICBjc3Ag
PSBnc3RfYmluX2dldF9ieV9uYW1lKEdTVF9CSU4odnNpbmspLCAiY29sb3JzcGFjZSIpOworICAg
IHZzY2FsZSA9IGdzdF9iaW5fZ2V0X2J5X25hbWUoR1NUX0JJTih2c2luayksICJ2c2NhbGUiKTsK
KworICAgIC8vIEdldCBwYWRzIHRvIHVubGluayBhbmQgcmVtb3ZlLgorICAgIHNyY1BhZCA9IGdz
dF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKHRlZSwgbV9keW5hbWljUGFkTmFtZSk7CisgICAgc2lu
a1BhZCA9IGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKHF1ZXVlMiwgInNpbmsiKTsKKworICAg
IC8vIFVubGluayBhbmQgcmVsZWFzZSByZXF1ZXN0IHBhZC4KKyAgICBnc3RfcGFkX3VubGluayhz
cmNQYWQsIHNpbmtQYWQpOworICAgIGdzdF9lbGVtZW50X3JlbGVhc2VfcmVxdWVzdF9wYWQodGVl
LCBzcmNQYWQpOworCisgICAgZ3N0X29iamVjdF91bnJlZihHU1RfT0JKRUNUKHNyY1BhZCkpOwor
ICAgIGdzdF9vYmplY3RfdW5yZWYoR1NUX09CSkVDVChzaW5rUGFkKSk7CisKKyAgICAvLyBVbmxp
bmsgYW5kIHJlbW92ZSBxdWV1ZSwgZmZtcGVnY29sb3JzcGFjZSBhbmQgc2luay4KKyAgICBnc3Rf
ZWxlbWVudF91bmxpbmtfbWFueShxdWV1ZTIsIGNzcCwgdnNjYWxlLCBzaW5rMiwgTlVMTCk7Cisg
ICAgZ3N0X2Jpbl9yZW1vdmVfbWFueShHU1RfQklOKHZzaW5rKSwgcXVldWUyLCBjc3AsIHZzY2Fs
ZSwgc2luazIsIE5VTEwpOworCisgICAgbV9keW5hbWljUGFkTmFtZSA9IDA7Cit9CisKK3ZvaWQg
R1N0cmVhbWVyR1dvcmxkOjpzZXRXaW5kb3dPdmVybGF5KEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCit7
CisgICAgR3N0T2JqZWN0KiBzaW5rID0gR1NUX01FU1NBR0VfU1JDKG1lc3NhZ2UpOworCisgICAg
aWYgKCFHU1RfSVNfWF9PVkVSTEFZKHNpbmspKQorICAgICAgICByZXR1cm47CisKKyAgICBHc3RY
T3ZlcmxheSogeG92ZXJsYXkgPSBHU1RfWF9PVkVSTEFZKHNpbmspOworCisgICAgaWYgKGdfb2Jq
ZWN0X2NsYXNzX2ZpbmRfcHJvcGVydHkoR19PQkpFQ1RfR0VUX0NMQVNTKHNpbmspLCAiZm9yY2Ut
YXNwZWN0LXJhdGlvIikpCisgICAgICAgIGdfb2JqZWN0X3NldChzaW5rLCAiZm9yY2UtYXNwZWN0
LXJhdGlvIiwgVFJVRSwgTlVMTCk7CisKKyAgICBpZiAobV92aWRlb1dpbmRvd0lkKQorICAgICAg
ICBnc3RfeF9vdmVybGF5X3NldF94d2luZG93X2lkKHhvdmVybGF5LCBtX3ZpZGVvV2luZG93SWQp
OwogfQogCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJHV29ybGQuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lckdXb3JsZC5oCmluZGV4IGI2MjYyOTguLmM5NjI1ODAgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5oCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5oCkBA
IC0yNywyMSArMjcsNDMgQEAKICNpbmNsdWRlICJSZWZQdHIuaCIKICNpbmNsdWRlIDxnbGliLmg+
CiAKK3R5cGVkZWYgc3RydWN0IF9Hc3RNZXNzYWdlIEdzdE1lc3NhZ2U7Cit0eXBlZGVmIHN0cnVj
dCBfR3N0UGFkIEdzdFBhZDsKK3R5cGVkZWYgc3RydWN0IF9Hc3RNaW5pT2JqZWN0IEdzdE1pbmlP
YmplY3Q7Cit0eXBlZGVmIHN0cnVjdCBfR3N0RWxlbWVudCBHc3RFbGVtZW50OwordHlwZWRlZiBz
dHJ1Y3QgX0dzdEJ1cyBHc3RCdXM7Cit0eXBlZGVmIHN0cnVjdCBfR3N0QmluIEdzdEJpbjsKK3R5
cGVkZWYgc3RydWN0IF9HdGtXaWRnZXQgR3RrV2lkZ2V0OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjsKIAorZ2Jvb2xlYW4gZ3N0R1dv
cmxkU3luY01lc3NhZ2VDYWxsYmFjayhHc3RCdXMqIGJ1cywgR3N0TWVzc2FnZSogbWVzc2FnZSwg
Z3BvaW50ZXIgZGF0YSk7CiAKIGNsYXNzIEdTdHJlYW1lckdXb3JsZCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEdTdHJlYW1lckdXb3JsZD4geworICAgIGZyaWVuZCBnYm9vbGVhbiBnc3RHV29ybGRTeW5j
TWVzc2FnZUNhbGxiYWNrKEdzdEJ1cyogYnVzLCBHc3RNZXNzYWdlKiBtZXNzYWdlLCBncG9pbnRl
ciBkYXRhKTsKIAogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdTdHJlYW1lckdXb3Js
ZD4gY3JlYXRlR1dvcmxkKE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciopOwogICAgIH5HU3Ry
ZWFtZXJHV29ybGQoKTsKIAorICAgIC8vIFJldHVybnMgdGhlIGZ1bGwtc2NyZWVuIHdpbmRvdyBj
cmVhdGVkCisgICAgZ3Vsb25nIGVudGVyRnVsbHNjcmVlbigpOworICAgIHZvaWQgZXhpdEZ1bGxz
Y3JlZW4oKTsKKworICAgIHZvaWQgdmlkZW9XaW5kb3dSZWFsaXplZChHdGtXaWRnZXQqIHdpZGdl
dCk7CisgICAgdm9pZCBzZXRXaW5kb3dPdmVybGF5KEdzdE1lc3NhZ2UqIG1lc3NhZ2UpOworCiBw
cml2YXRlOgogICAgIEdTdHJlYW1lckdXb3JsZChNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIq
KTsKICAgICBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqIG1fcGxheWVyOworI2lmIFBMQVRG
T1JNKEdUSykKKyAgICBHdGtXaWRnZXQqIG1fdmlkZW9XaW5kb3c7CisgICAgR3RrV2lkZ2V0KiBt
X2Z1bGxzY3JlZW5XaW5kb3c7CisjZW5kaWYKKyAgICBndWxvbmcgbV92aWRlb1dpbmRvd0lkOwor
ICAgIGdjaGFyKiBtX2R5bmFtaWNQYWROYW1lOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggN2U2YjcxYS4uNWJiZWExYiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC01NCw3ICs1NCw2IEBACiAjaW5jbHVkZSA8R093
blB0ci5oPgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDxnc3QvaW50ZXJmYWNlcy9t
aXhlci5oPgotI2luY2x1ZGUgPGdzdC9pbnRlcmZhY2VzL3hvdmVybGF5Lmg+CiAjaW5jbHVkZSA8
Z3N0L3ZpZGVvL3ZpZGVvLmg+CiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPG1hdGguaD4K
ZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCBiZTI5NDk1Li4x
ZTUwZTBlIDEwMDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC03
NTcsNiArNzU3LDcgQEAgaWYgdGVzdCAiJGVuYWJsZV92aWRlbyIgPSAieWVzIjsgdGhlbgogICAg
ICAgICAgICAgICAgICAgICAgW2dzdHJlYW1lci0wLjEwID49ICRHU1RSRUFNRVJfUkVRVUlSRURf
VkVSU0lPTgogICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLWFwcC0wLjEwCiAgICAgICAg
ICAgICAgICAgICAgICBnc3RyZWFtZXItYmFzZS0wLjEwCisgICAgICAgICAgICAgICAgICAgICBn
c3RyZWFtZXItaW50ZXJmYWNlcy0wLjEwCiAgICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXIt
cGJ1dGlscy0wLjEwCiAgICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXItcGx1Z2lucy1iYXNl
LTAuMTAgPj0gJEdTVFJFQU1FUl9QTFVHSU5TX0JBU0VfUkVRVUlSRURfVkVSU0lPTgogICAgICAg
ICAgICAgICAgICAgICAgZ3N0cmVhbWVyLXZpZGVvLTAuMTBdKQotLSAKMS43LjE=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57745</attachid>
            <date>2010-06-03 01:39:09 -0700</date>
            <delta_ts>2010-06-03 09:02:00 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>proposed-patch.patch</filename>
            <type>text/plain</type>
            <size>11200</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA0YjdhMWQxOWFmZjdlMmQ0YjQ1YTcwOTg3MzMxYjYwNTRmZWU0ZjQ2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDE4IE1heSAyMDEwIDE5OjIzOjAxICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
cHJvcG9zZWQgcGF0Y2gKCi0tLQogQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgIDEwICsrCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgMjEgKysrCiAuLi4vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dT
dHJlYW1lckdXb3JsZC5jcHAgICAgICAgICB8ICAxNTQgKysrKysrKysrKysrKysrKysrKysKIC4u
Li9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmggIHwgICAxOCAr
KysKIC4uLi9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCAgICAgIHwg
ICAgMSAtCiBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgIDEgKwogNiBmaWxlcyBjaGFuZ2VkLCAyMDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlv
bnMoLSkKCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggZmQ0Zjk5Mi4u
ODFiMzJlOCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEzIEBACisyMDEwLTA1LTI4ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR1N0
cmVhbWVyXSBHVEsgWE92ZXJsYXkgc3VwcG9ydCBpbiBHU3RyZWFtZXJHV29ybGQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDc0CisKKyAgICAgICAg
KiBjb25maWd1cmUuYWM6IGdzdC1pbnRlcmZhY2VzIGxpbmsgc3VwcG9ydCBuZWVkZWQgZm9yIHVz
ZSBvZgorICAgICAgICBHc3RYT3ZlcmxheSBpbnRlcmZhY2UuCisKIDIwMTAtMDUtMzEgIFhhbiBM
b3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8g
Tm9yb25oYS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggZDAwOWFiYS4uNjAwMzU5OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMC0wNS0yOCAgUGhp
bGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dTdHJlYW1lcl0gR1RLIFhPdmVybGF5IHN1
cHBvcnQgaW4gR1N0cmVhbWVyR1dvcmxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zOTQ3NAorCisgICAgICAgIEdTdHJlYW1lckdXb3JsZCBub3cgY2F0
Y2hlcyBzeW5jaHJvbm91cyBtZXNzYWdlcyBjb21pbmcgZnJvbSB0aGUKKyAgICAgICAgc2lua3Mg
YW5kIGNyZWF0ZXMgYSBHVEsgd2luZG93IHdoZXJlIHRoZSB2aWRlbyBjYW4gYmUgb3ZlcmxheWVk
IGlmCisgICAgICAgIGZ1bGxzY3JlZW4gZGlzcGxheSBpcyByZXF1ZXN0ZWQgdXNpbmcgZW50ZXJG
dWxsc2NyZWVuLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lckdXb3JsZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnc3RHV29ybGRTeW5jTWVzc2FnZUNh
bGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckdXb3JsZDo6R1N0cmVhbWVyR1dv
cmxkKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckdXb3JsZDo6fkdTdHJlYW1lckdXb3Js
ZCk6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJHV29ybGQ6OmVudGVyRnVsbHNjcmVlbik6
CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJHV29ybGQ6OmV4aXRGdWxsc2NyZWVuKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckdXb3JsZDo6c2V0V2luZG93T3ZlcmxheSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwOgorCiAyMDEwLTA2LTAxICBBbnRvbiBNdWhpbiAgPGFudG9ubUBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTmF0ZSBDaGFwaW4uCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuY3BwIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmNwcAppbmRl
eCBjNTAyMmY5Li41MTA2ZTE0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5jcHAKQEAgLTIzLDEwICsyMywzMSBAQAog
CiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgiCiAKKyNpbmNsdWRlIDxn
c3QvZ3N0Lmg+CisjaW5jbHVkZSA8Z3N0L2ludGVyZmFjZXMveG92ZXJsYXkuaD4KKworI2lmIFBM
QVRGT1JNKEdUSykKKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaWZkZWYgR0RLX1dJTkRPV0lOR19Y
MTEKKyNpbmNsdWRlIDxnZGsvZ2RreC5oPiAvLyBmb3IgR0RLX1dJTkRPV19YSUQKKyNlbmRpZgor
I2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Z2Jvb2xlYW4gZ3N0R1dvcmxkU3luY01lc3NhZ2VDYWxsYmFjayhHc3RCdXMqIGJ1cywgR3N0TWVz
c2FnZSogbWVzc2FnZSwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBBU1NFUlQoR1NUX01FU1NBR0Vf
VFlQRShtZXNzYWdlKSA9PSBHU1RfTUVTU0FHRV9FTEVNRU5UKTsKKworICAgIEdTdHJlYW1lckdX
b3JsZCogZ3N0R1dvcmxkID0gcmVpbnRlcnByZXRfY2FzdDxHU3RyZWFtZXJHV29ybGQqPihkYXRh
KTsKKworICAgIGlmIChnc3Rfc3RydWN0dXJlX2hhc19uYW1lKG1lc3NhZ2UtPnN0cnVjdHVyZSwg
InByZXBhcmUteHdpbmRvdy1pZCIpKQorICAgICAgICBnc3RHV29ybGQtPnNldFdpbmRvd092ZXJs
YXkobWVzc2FnZSk7CisgICAgcmV0dXJuIFRSVUU7Cit9CisKIFBhc3NSZWZQdHI8R1N0cmVhbWVy
R1dvcmxkPiBHU3RyZWFtZXJHV29ybGQ6OmNyZWF0ZUdXb3JsZChNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIqIHBsYXllcikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdTdHJlYW1lckdX
b3JsZChwbGF5ZXIpKTsKQEAgLTM0LDExICs1NSwxNDQgQEAgUGFzc1JlZlB0cjxHU3RyZWFtZXJH
V29ybGQ+IEdTdHJlYW1lckdXb3JsZDo6Y3JlYXRlR1dvcmxkKE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHIKIAogR1N0cmVhbWVyR1dvcmxkOjpHU3RyZWFtZXJHV29ybGQoTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyKiBwbGF5ZXIpCiAgICAgOiBtX3BsYXllcihwbGF5ZXIpCisgICAgLCBtX3ZpZGVv
V2luZG93SWQoMCkKKyAgICAsIG1fZHluYW1pY1BhZE5hbWUoMCkKIHsKKyAgICAvLyBYT3Zlcmxh
eSBtZXNzYWdlcyBuZWVkIHRvIGJlIGhhbmRsZWQgc3luY2hyb25vdXNseS4KKyAgICBHc3RCdXMq
IGJ1cyA9IGdzdF9waXBlbGluZV9nZXRfYnVzKEdTVF9QSVBFTElORShtX3BsYXllci0+cGlwZWxp
bmUoKSkpOworICAgIGdzdF9idXNfc2V0X3N5bmNfaGFuZGxlcihidXMsIGdzdF9idXNfc3luY19z
aWduYWxfaGFuZGxlciwgdGhpcyk7CisgICAgZ19zaWduYWxfY29ubmVjdChidXMsICJzeW5jLW1l
c3NhZ2U6OmVsZW1lbnQiLCBHX0NBTExCQUNLKGdzdEdXb3JsZFN5bmNNZXNzYWdlQ2FsbGJhY2sp
LCB0aGlzKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmKGJ1cyk7CiB9CiAKIEdTdHJlYW1lckdXb3Js
ZDo6fkdTdHJlYW1lckdXb3JsZCgpCiB7CisgICAgZXhpdEZ1bGxzY3JlZW4oKTsKK30KKworZ3Vs
b25nIEdTdHJlYW1lckdXb3JsZDo6ZW50ZXJGdWxsc2NyZWVuKCkKK3sKKyAgICBpZiAobV9keW5h
bWljUGFkTmFtZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoIW1fdmlkZW9XaW5kb3dJ
ZCkgeworI2lmIFBMQVRGT1JNKEdUSykKKyAgICAgICAgbV9mdWxsc2NyZWVuV2luZG93ID0gZ3Rr
X3dpbmRvd19uZXcoR1RLX1dJTkRPV19UT1BMRVZFTCk7CisgICAgICAgIGd0a193aWRnZXRfc2V0
X2V2ZW50cyhtX2Z1bGxzY3JlZW5XaW5kb3csIEdES19QT0lOVEVSX01PVElPTl9NQVNLIHwgR0RL
X0tFWV9QUkVTU19NQVNLKTsKKworICAgICAgICBtX3ZpZGVvV2luZG93ID0gZ3RrX2RyYXdpbmdf
YXJlYV9uZXcoKTsKKyAgICAgICAgZ3RrX3dpZGdldF9zZXRfZG91YmxlX2J1ZmZlcmVkKG1fdmlk
ZW9XaW5kb3csIEZBTFNFKTsKKyAgICAgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5F
UihtX2Z1bGxzY3JlZW5XaW5kb3cpLCBtX3ZpZGVvV2luZG93KTsKKworICAgICAgICBndGtfd2lk
Z2V0X3Nob3dfYWxsKG1fZnVsbHNjcmVlbldpbmRvdyk7CisgICAgICAgIGd0a193aWRnZXRfcmVh
bGl6ZShtX2Z1bGxzY3JlZW5XaW5kb3cpOworICAgICAgICBndGtfd2lkZ2V0X2hpZGVfYWxsKG1f
ZnVsbHNjcmVlbldpbmRvdyk7CisKKyNpZmRlZiBHREtfV0lORE9XSU5HX1gxMQorICAgICAgICBn
ZGtfdGhyZWFkc19lbnRlcigpOworICAgICAgICBnZGtfZGlzcGxheV9zeW5jKGdka19kaXNwbGF5
X2dldF9kZWZhdWx0KCkpOworICAgICAgICBtX3ZpZGVvV2luZG93SWQgPSBHREtfV0lORE9XX1hJ
RChtX2Z1bGxzY3JlZW5XaW5kb3ctPndpbmRvdyk7CisgICAgICAgIGdka190aHJlYWRzX2xlYXZl
KCk7CisjZW5kaWYKKyNlbmRpZgorICAgIH0KKworICAgIEdzdEVsZW1lbnQqIHBpcGVsaW5lID0g
bV9wbGF5ZXItPnBpcGVsaW5lKCk7CisgICAgR3N0RWxlbWVudCogcGxhdGZvcm1WaWRlb1Npbmsg
PSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImF1dG92aWRlb3NpbmsiLCAicGxhdGZvcm1WaWRl
b1NpbmsiKTsKKyAgICBHc3RFbGVtZW50KiBjb2xvcnNwYWNlID0gZ3N0X2VsZW1lbnRfZmFjdG9y
eV9tYWtlKCJmZm1wZWdjb2xvcnNwYWNlIiwgImNvbG9yc3BhY2UiKTsKKyAgICBHc3RFbGVtZW50
KiBxdWV1ZSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgicXVldWUiLCAicXVldWUiKTsKKyAg
ICBHc3RFbGVtZW50KiB2aWRlb1NjYWxlID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJ2aWRl
b3NjYWxlIiwgInZpZGVvU2NhbGUiKTsKKyAgICBHc3RFbGVtZW50KiB2aWRlb1Npbms7CisgICAg
R3N0UGFkKiBzcmNQYWQ7CisgICAgR3N0UGFkKiBzaW5rUGFkOworICAgIEdzdEVsZW1lbnQqIHRl
ZTsKKworICAgIC8vIEdldCB2aWRlbyBzaW5rIGJpbiBhbmQgdGhlIHRlZSBpbnNpZGUuCisgICAg
Z19vYmplY3RfZ2V0KHBpcGVsaW5lLCAidmlkZW8tc2luayIsICZ2aWRlb1NpbmssIE5VTEwpOwor
ICAgIHRlZSA9IGdzdF9iaW5fZ2V0X2J5X25hbWUoR1NUX0JJTih2aWRlb1NpbmspLCAidCIpOwor
CisgICAgLy8gQWRkIGFuZCBsaW5rIGEgcXVldWUsIGZmbXBlZ2NvbG9yc3BhY2UgYW5kIHNpbmsg
aW4gdGhlIGJpbi4KKyAgICBnc3RfYmluX2FkZF9tYW55KEdTVF9CSU4odmlkZW9TaW5rKSwgcGxh
dGZvcm1WaWRlb1NpbmssIHZpZGVvU2NhbGUsIGNvbG9yc3BhY2UsIHF1ZXVlLCBOVUxMKTsKKyAg
ICBnc3RfZWxlbWVudF9saW5rX21hbnkocXVldWUsIGNvbG9yc3BhY2UsIHZpZGVvU2NhbGUsIHBs
YXRmb3JtVmlkZW9TaW5rLCBOVUxMKTsKKworICAgIC8vIExpbmsgYSBuZXcgc3JjIHBhZCBmcm9t
IHRlZSB0byBxdWV1ZS4KKyAgICBzcmNQYWQgPSBnc3RfZWxlbWVudF9nZXRfcmVxdWVzdF9wYWQo
dGVlLCAic3JjJWQiKTsKKyAgICBzaW5rUGFkID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQo
cXVldWUsICJzaW5rIik7CisgICAgZ3N0X3BhZF9saW5rKHNyY1BhZCwgc2lua1BhZCk7CisgICAg
Z3N0X29iamVjdF91bnJlZihHU1RfT0JKRUNUKHNpbmtQYWQpKTsKKworICAgIG1fZHluYW1pY1Bh
ZE5hbWUgPSBnc3RfcGFkX2dldF9uYW1lKHNyY1BhZCk7CisKKyAgICAvLyBSb2xsIG5ldyBlbGVt
ZW50cyB0byBwaXBlbGluZSBzdGF0ZS4KKyAgICBHc3RTdGF0ZSBzdGF0ZTsKKyAgICBnc3RfZWxl
bWVudF9nZXRfc3RhdGUocGlwZWxpbmUsICZzdGF0ZSwgMCwgMCk7CisgICAgZ3N0X2VsZW1lbnRf
c2V0X3N0YXRlKHF1ZXVlLCBzdGF0ZSk7CisgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKGNvbG9y
c3BhY2UsIHN0YXRlKTsKKyAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUodmlkZW9TY2FsZSwgc3Rh
dGUpOworICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShwbGF0Zm9ybVZpZGVvU2luaywgc3RhdGUp
OworCisgICAgLy8gU2lnbmFsIHRoZSBzaW5rIGl0IHNob3VsZCBwcm9jZXNzIGEgbmV3IHNlZ21l
bnQuCisgICAgR3N0RXZlbnQqIGV2ZW50ID0gZ3N0X2V2ZW50X25ld19uZXdfc2VnbWVudChGQUxT
RSwgMS4wLCBHU1RfRk9STUFUX1RJTUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLCAtMSwgMCk7CisgICAgZ3N0X3BhZF9wdXNoX2V2ZW50KHNyY1Bh
ZCwgZXZlbnQpOworICAgIGdzdF9vYmplY3RfdW5yZWYoR1NUX09CSkVDVChzcmNQYWQpKTsKKwor
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGd1bG9uZz4obV9mdWxsc2NyZWVuV2luZG93KTsK
K30KKwordm9pZCBHU3RyZWFtZXJHV29ybGQ6OmV4aXRGdWxsc2NyZWVuKCkKK3sKKyAgICBpZiAo
IW1fZHluYW1pY1BhZE5hbWUpCisgICAgICAgIHJldHVybjsKKworICAgIEdzdEVsZW1lbnQqIHBp
cGVsaW5lID0gbV9wbGF5ZXItPnBpcGVsaW5lKCk7CisgICAgR3N0RWxlbWVudCogdmlkZW9TaW5r
OworICAgIEdzdEVsZW1lbnQqIHRlZTsKKyAgICBHc3RFbGVtZW50KiBjb2xvcnNwYWNlOworICAg
IEdzdEVsZW1lbnQqIHBsYXRmb3JtVmlkZW9TaW5rOworICAgIEdzdEVsZW1lbnQqIHF1ZXVlOwor
ICAgIEdzdEVsZW1lbnQqIHZpZGVvU2NhbGU7CisgICAgR3N0UGFkKiBzcmNQYWQ7CisgICAgR3N0
UGFkKiBzaW5rUGFkOworCisgICAgLy8gR2V0IHZpZGVvIHNpbmsgYmluIGFuZCB0aGUgZWxlbWVu
dHMgdG8gcmVtb3ZlLgorICAgIGdfb2JqZWN0X2dldChwaXBlbGluZSwgInZpZGVvLXNpbmsiLCAm
dmlkZW9TaW5rLCBOVUxMKTsKKyAgICB0ZWUgPSBnc3RfYmluX2dldF9ieV9uYW1lKEdTVF9CSU4o
dmlkZW9TaW5rKSwgInQiKTsKKyAgICBwbGF0Zm9ybVZpZGVvU2luayA9IGdzdF9iaW5fZ2V0X2J5
X25hbWUoR1NUX0JJTih2aWRlb1NpbmspLCAicGxhdGZvcm1WaWRlb1NpbmsiKTsKKyAgICBxdWV1
ZSA9IGdzdF9iaW5fZ2V0X2J5X25hbWUoR1NUX0JJTih2aWRlb1NpbmspLCAicXVldWUiKTsKKyAg
ICBjb2xvcnNwYWNlID0gZ3N0X2Jpbl9nZXRfYnlfbmFtZShHU1RfQklOKHZpZGVvU2luayksICJj
b2xvcnNwYWNlIik7CisgICAgdmlkZW9TY2FsZSA9IGdzdF9iaW5fZ2V0X2J5X25hbWUoR1NUX0JJ
Tih2aWRlb1NpbmspLCAidmlkZW9TY2FsZSIpOworCisgICAgLy8gR2V0IHBhZHMgdG8gdW5saW5r
IGFuZCByZW1vdmUuCisgICAgc3JjUGFkID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQodGVl
LCBtX2R5bmFtaWNQYWROYW1lKTsKKyAgICBzaW5rUGFkID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRp
Y19wYWQocXVldWUsICJzaW5rIik7CisKKyAgICAvLyBVbmxpbmsgYW5kIHJlbGVhc2UgcmVxdWVz
dCBwYWQuCisgICAgZ3N0X3BhZF91bmxpbmsoc3JjUGFkLCBzaW5rUGFkKTsKKyAgICBnc3RfZWxl
bWVudF9yZWxlYXNlX3JlcXVlc3RfcGFkKHRlZSwgc3JjUGFkKTsKKworICAgIGdzdF9vYmplY3Rf
dW5yZWYoR1NUX09CSkVDVChzcmNQYWQpKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmKEdTVF9PQkpF
Q1Qoc2lua1BhZCkpOworCisgICAgLy8gVW5saW5rIGFuZCByZW1vdmUgcXVldWUsIGZmbXBlZ2Nv
bG9yc3BhY2UgYW5kIHNpbmsuCisgICAgZ3N0X2VsZW1lbnRfdW5saW5rX21hbnkocXVldWUsIGNv
bG9yc3BhY2UsIHZpZGVvU2NhbGUsIHBsYXRmb3JtVmlkZW9TaW5rLCBOVUxMKTsKKyAgICBnc3Rf
YmluX3JlbW92ZV9tYW55KEdTVF9CSU4odmlkZW9TaW5rKSwgcXVldWUsIGNvbG9yc3BhY2UsIHZp
ZGVvU2NhbGUsIHBsYXRmb3JtVmlkZW9TaW5rLCBOVUxMKTsKKworICAgIG1fZHluYW1pY1BhZE5h
bWUgPSAwOworfQorCit2b2lkIEdTdHJlYW1lckdXb3JsZDo6c2V0V2luZG93T3ZlcmxheShHc3RN
ZXNzYWdlKiBtZXNzYWdlKQoreworICAgIEdzdE9iamVjdCogc2luayA9IEdTVF9NRVNTQUdFX1NS
QyhtZXNzYWdlKTsKKworICAgIGlmICghR1NUX0lTX1hfT1ZFUkxBWShzaW5rKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKGdfb2JqZWN0X2NsYXNzX2ZpbmRfcHJvcGVydHkoR19PQkpFQ1Rf
R0VUX0NMQVNTKHNpbmspLCAiZm9yY2UtYXNwZWN0LXJhdGlvIikpCisgICAgICAgIGdfb2JqZWN0
X3NldChzaW5rLCAiZm9yY2UtYXNwZWN0LXJhdGlvIiwgVFJVRSwgTlVMTCk7CisKKyAgICBpZiAo
bV92aWRlb1dpbmRvd0lkKQorICAgICAgICBnc3RfeF9vdmVybGF5X3NldF94d2luZG93X2lkKEdT
VF9YX09WRVJMQVkoc2luayksIG1fdmlkZW9XaW5kb3dJZCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5oIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmgKaW5k
ZXggYjYyNjI5OC4uZDFmNGE1YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmgKQEAgLTI3LDIxICsyNywzOSBAQAogI2lu
Y2x1ZGUgIlJlZlB0ci5oIgogI2luY2x1ZGUgPGdsaWIuaD4KIAordHlwZWRlZiBzdHJ1Y3QgX0dz
dE1lc3NhZ2UgR3N0TWVzc2FnZTsKK3R5cGVkZWYgc3RydWN0IF9Hc3RCdXMgR3N0QnVzOwordHlw
ZWRlZiBzdHJ1Y3QgX0dzdEJpbiBHc3RCaW47Cit0eXBlZGVmIHN0cnVjdCBfR3RrV2lkZ2V0IEd0
a1dpZGdldDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI7CiAKK2dib29sZWFuIGdzdEdXb3JsZFN5bmNNZXNzYWdlQ2FsbGJhY2soR3N0
QnVzKiBidXMsIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIGdwb2ludGVyIGRhdGEpOwogCiBjbGFzcyBH
U3RyZWFtZXJHV29ybGQgOiBwdWJsaWMgUmVmQ291bnRlZDxHU3RyZWFtZXJHV29ybGQ+IHsKKyAg
ICBmcmllbmQgZ2Jvb2xlYW4gZ3N0R1dvcmxkU3luY01lc3NhZ2VDYWxsYmFjayhHc3RCdXMqIGJ1
cywgR3N0TWVzc2FnZSogbWVzc2FnZSwgZ3BvaW50ZXIgZGF0YSk7CiAKIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxHU3RyZWFtZXJHV29ybGQ+IGNyZWF0ZUdXb3JsZChNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIqKTsKICAgICB+R1N0cmVhbWVyR1dvcmxkKCk7CiAKKyAgICAvLyBS
ZXR1cm5zIHRoZSBmdWxsLXNjcmVlbiB3aW5kb3cgY3JlYXRlZAorICAgIGd1bG9uZyBlbnRlckZ1
bGxzY3JlZW4oKTsKKyAgICB2b2lkIGV4aXRGdWxsc2NyZWVuKCk7CisKKyAgICB2b2lkIHNldFdp
bmRvd092ZXJsYXkoR3N0TWVzc2FnZSogbWVzc2FnZSk7CisKIHByaXZhdGU6CiAgICAgR1N0cmVh
bWVyR1dvcmxkKE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciopOwogICAgIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lciogbV9wbGF5ZXI7CisjaWYgUExBVEZPUk0oR1RLKQorICAgIEd0a1dp
ZGdldCogbV92aWRlb1dpbmRvdzsKKyAgICBHdGtXaWRnZXQqIG1fZnVsbHNjcmVlbldpbmRvdzsK
KyNlbmRpZgorICAgIGd1bG9uZyBtX3ZpZGVvV2luZG93SWQ7CisgICAgZ2NoYXIqIG1fZHluYW1p
Y1BhZE5hbWU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApp
bmRleCA3ZTZiNzFhLi41YmJlYTFiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKQEAgLTU0LDcgKzU0LDYgQEAKICNpbmNsdWRlIDxHT3duUHRyLmg+CiAjaW5jbHVkZSA8
Z3N0L2dzdC5oPgogI2luY2x1ZGUgPGdzdC9pbnRlcmZhY2VzL21peGVyLmg+Ci0jaW5jbHVkZSA8
Z3N0L2ludGVyZmFjZXMveG92ZXJsYXkuaD4KICNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8uaD4K
ICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8bWF0aC5oPgpkaWZmIC0tZ2l0IGEvY29uZmln
dXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IGJlMjk0OTUuLjFlNTBlMGUgMTAwNjQ0Ci0tLSBh
L2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTc1Nyw2ICs3NTcsNyBAQCBpZiB0
ZXN0ICIkZW5hYmxlX3ZpZGVvIiA9ICJ5ZXMiOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICBb
Z3N0cmVhbWVyLTAuMTAgPj0gJEdTVFJFQU1FUl9SRVFVSVJFRF9WRVJTSU9OCiAgICAgICAgICAg
ICAgICAgICAgICBnc3RyZWFtZXItYXBwLTAuMTAKICAgICAgICAgICAgICAgICAgICAgIGdzdHJl
YW1lci1iYXNlLTAuMTAKKyAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1pbnRlcmZhY2Vz
LTAuMTAKICAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1wYnV0aWxzLTAuMTAKICAgICAg
ICAgICAgICAgICAgICAgIGdzdHJlYW1lci1wbHVnaW5zLWJhc2UtMC4xMCA+PSAkR1NUUkVBTUVS
X1BMVUdJTlNfQkFTRV9SRVFVSVJFRF9WRVJTSU9OCiAgICAgICAgICAgICAgICAgICAgICBnc3Ry
ZWFtZXItdmlkZW8tMC4xMF0pCi0tIAoxLjcuMQ==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57776</attachid>
            <date>2010-06-03 09:02:00 -0700</date>
            <delta_ts>2010-06-04 00:47:30 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>proposed-patch.patch</filename>
            <type>text/plain</type>
            <size>11752</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSAzMTRlM2RjOTU3YzcxZTllMjk3NDdkZTZkZjNmNTg4ZmU5ODNkYWM2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDE4IE1heSAyMDEwIDE5OjIzOjAxICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
cHJvcG9zZWQgcGF0Y2gKCi0tLQogQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgIDEwICsrCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgMjEgKysrCiAuLi4vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dT
dHJlYW1lckdXb3JsZC5jcHAgICAgICAgICB8ICAxNjkgKysrKysrKysrKysrKysrKysrKysKIC4u
Li9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmggIHwgICAxOCAr
KwogLi4uL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwICAgICAgfCAg
ICAxIC0KIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAgMSArCiA2IGZpbGVzIGNoYW5nZWQsIDIxOSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9u
cygtKQoKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBmZDRmOTkyLi44
MWIzMmU4IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMTAtMDUtMjggIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHU3Ry
ZWFtZXJdIEdUSyBYT3ZlcmxheSBzdXBwb3J0IGluIEdTdHJlYW1lckdXb3JsZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0NzQKKworICAgICAgICAq
IGNvbmZpZ3VyZS5hYzogZ3N0LWludGVyZmFjZXMgbGluayBzdXBwb3J0IG5lZWRlZCBmb3IgdXNl
IG9mCisgICAgICAgIEdzdFhPdmVybGF5IGludGVyZmFjZS4KKwogMjAxMC0wNS0zMSAgWGFuIExv
cGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR3VzdGF2byBO
b3JvbmhhLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCBkMDA5YWJhLi42MDAzNTk5IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEwLTA1LTI4ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR1N0cmVhbWVyXSBHVEsgWE92ZXJsYXkgc3Vw
cG9ydCBpbiBHU3RyZWFtZXJHV29ybGQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTM5NDc0CisKKyAgICAgICAgR1N0cmVhbWVyR1dvcmxkIG5vdyBjYXRj
aGVzIHN5bmNocm9ub3VzIG1lc3NhZ2VzIGNvbWluZyBmcm9tIHRoZQorICAgICAgICBzaW5rcyBh
bmQgY3JlYXRlcyBhIEdUSyB3aW5kb3cgd2hlcmUgdGhlIHZpZGVvIGNhbiBiZSBvdmVybGF5ZWQg
aWYKKyAgICAgICAgZnVsbHNjcmVlbiBkaXNwbGF5IGlzIHJlcXVlc3RlZCB1c2luZyBlbnRlckZ1
bGxzY3JlZW4uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyR1dvcmxkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdzdEdXb3JsZFN5bmNNZXNzYWdlQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyR1dvcmxkOjpHU3RyZWFtZXJHV29y
bGQpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyR1dvcmxkOjp+R1N0cmVhbWVyR1dvcmxk
KToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckdXb3JsZDo6ZW50ZXJGdWxsc2NyZWVuKToK
KyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckdXb3JsZDo6ZXhpdEZ1bGxzY3JlZW4pOgorICAg
ICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyR1dvcmxkOjpzZXRXaW5kb3dPdmVybGF5KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHA6CisKIDIwMTAtMDYtMDEgIEFudG9uIE11aGluICA8YW50b25tQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBOYXRlIENoYXBpbi4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5jcHAgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuY3BwCmluZGV4
IGM1MDIyZjkuLjc4YTYzZTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmNwcApAQCAtMjMsMTAgKzIzLDMxIEBACiAK
ICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCIKIAorI2luY2x1ZGUgPGdz
dC9nc3QuaD4KKyNpbmNsdWRlIDxnc3QvaW50ZXJmYWNlcy94b3ZlcmxheS5oPgorCisjaWYgUExB
VEZPUk0oR1RLKQorI2luY2x1ZGUgPGd0ay9ndGsuaD4KKyNpZmRlZiBHREtfV0lORE9XSU5HX1gx
MQorI2luY2x1ZGUgPGdkay9nZGt4Lmg+IC8vIGZvciBHREtfV0lORE9XX1hJRAorI2VuZGlmCisj
ZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitn
Ym9vbGVhbiBnc3RHV29ybGRTeW5jTWVzc2FnZUNhbGxiYWNrKEdzdEJ1cyogYnVzLCBHc3RNZXNz
YWdlKiBtZXNzYWdlLCBncG9pbnRlciBkYXRhKQoreworICAgIEFTU0VSVChHU1RfTUVTU0FHRV9U
WVBFKG1lc3NhZ2UpID09IEdTVF9NRVNTQUdFX0VMRU1FTlQpOworCisgICAgR1N0cmVhbWVyR1dv
cmxkKiBnc3RHV29ybGQgPSByZWludGVycHJldF9jYXN0PEdTdHJlYW1lckdXb3JsZCo+KGRhdGEp
OworCisgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX25hbWUobWVzc2FnZS0+c3RydWN0dXJlLCAi
cHJlcGFyZS14d2luZG93LWlkIikpCisgICAgICAgIGdzdEdXb3JsZC0+c2V0V2luZG93T3Zlcmxh
eShtZXNzYWdlKTsKKyAgICByZXR1cm4gVFJVRTsKK30KKwogUGFzc1JlZlB0cjxHU3RyZWFtZXJH
V29ybGQ+IEdTdHJlYW1lckdXb3JsZDo6Y3JlYXRlR1dvcmxkKE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lciogcGxheWVyKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1N0cmVhbWVyR1dv
cmxkKHBsYXllcikpOwpAQCAtMzQsMTEgKzU1LDE1OSBAQCBQYXNzUmVmUHRyPEdTdHJlYW1lckdX
b3JsZD4gR1N0cmVhbWVyR1dvcmxkOjpjcmVhdGVHV29ybGQoTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cgogCiBHU3RyZWFtZXJHV29ybGQ6OkdTdHJlYW1lckdXb3JsZChNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIqIHBsYXllcikKICAgICA6IG1fcGxheWVyKHBsYXllcikKKyAgICAsIG1fdmlkZW9X
aW5kb3dJZCgwKQorICAgICwgbV9keW5hbWljUGFkTmFtZSgwKQogeworICAgIC8vIFhPdmVybGF5
IG1lc3NhZ2VzIG5lZWQgdG8gYmUgaGFuZGxlZCBzeW5jaHJvbm91c2x5LgorICAgIEdzdEJ1cyog
YnVzID0gZ3N0X3BpcGVsaW5lX2dldF9idXMoR1NUX1BJUEVMSU5FKG1fcGxheWVyLT5waXBlbGlu
ZSgpKSk7CisgICAgZ3N0X2J1c19zZXRfc3luY19oYW5kbGVyKGJ1cywgZ3N0X2J1c19zeW5jX3Np
Z25hbF9oYW5kbGVyLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KGJ1cywgInN5bmMtbWVz
c2FnZTo6ZWxlbWVudCIsIEdfQ0FMTEJBQ0soZ3N0R1dvcmxkU3luY01lc3NhZ2VDYWxsYmFjayks
IHRoaXMpOworICAgIGdzdF9vYmplY3RfdW5yZWYoYnVzKTsKIH0KIAogR1N0cmVhbWVyR1dvcmxk
Ojp+R1N0cmVhbWVyR1dvcmxkKCkKIHsKKyAgICBleGl0RnVsbHNjcmVlbigpOworfQorCitndWxv
bmcgR1N0cmVhbWVyR1dvcmxkOjplbnRlckZ1bGxzY3JlZW4oKQoreworICAgIGlmIChtX2R5bmFt
aWNQYWROYW1lKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICghbV92aWRlb1dpbmRvd0lk
KSB7CisjaWYgUExBVEZPUk0oR1RLKQorICAgICAgICBtX2Z1bGxzY3JlZW5XaW5kb3cgPSBndGtf
d2luZG93X25ldyhHVEtfV0lORE9XX1RPUExFVkVMKTsKKyAgICAgICAgZ3RrX3dpZGdldF9zZXRf
ZXZlbnRzKG1fZnVsbHNjcmVlbldpbmRvdywgR0RLX1BPSU5URVJfTU9USU9OX01BU0sgfCBHREtf
S0VZX1BSRVNTX01BU0spOworCisgICAgICAgIG1fdmlkZW9XaW5kb3cgPSBndGtfZHJhd2luZ19h
cmVhX25ldygpOworICAgICAgICBndGtfd2lkZ2V0X3NldF9kb3VibGVfYnVmZmVyZWQobV92aWRl
b1dpbmRvdywgRkFMU0UpOworICAgICAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVS
KG1fZnVsbHNjcmVlbldpbmRvdyksIG1fdmlkZW9XaW5kb3cpOworCisgICAgICAgIGd0a193aWRn
ZXRfc2hvd19hbGwobV9mdWxsc2NyZWVuV2luZG93KTsKKyAgICAgICAgZ3RrX3dpZGdldF9yZWFs
aXplKG1fZnVsbHNjcmVlbldpbmRvdyk7CisgICAgICAgIGd0a193aWRnZXRfaGlkZV9hbGwobV9m
dWxsc2NyZWVuV2luZG93KTsKKworI2lmZGVmIEdES19XSU5ET1dJTkdfWDExCisgICAgICAgIGdk
a190aHJlYWRzX2VudGVyKCk7CisgICAgICAgIGdka19kaXNwbGF5X3N5bmMoZ2RrX2Rpc3BsYXlf
Z2V0X2RlZmF1bHQoKSk7CisgICAgICAgIG1fdmlkZW9XaW5kb3dJZCA9IEdES19XSU5ET1dfWElE
KG1fZnVsbHNjcmVlbldpbmRvdy0+d2luZG93KTsKKyAgICAgICAgZ2RrX3RocmVhZHNfbGVhdmUo
KTsKKyNlbmRpZgorI2VuZGlmCisgICAgfQorCisgICAgR3N0RWxlbWVudCogcGlwZWxpbmUgPSBt
X3BsYXllci0+cGlwZWxpbmUoKTsKKyAgICBHc3RFbGVtZW50KiBwbGF0Zm9ybVZpZGVvU2luayA9
IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiYXV0b3ZpZGVvc2luayIsICJwbGF0Zm9ybVZpZGVv
U2luayIpOworICAgIEdzdEVsZW1lbnQqIGNvbG9yc3BhY2UgPSBnc3RfZWxlbWVudF9mYWN0b3J5
X21ha2UoImZmbXBlZ2NvbG9yc3BhY2UiLCAiY29sb3JzcGFjZSIpOworICAgIEdzdEVsZW1lbnQq
IHF1ZXVlID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJxdWV1ZSIsICJxdWV1ZSIpOworICAg
IEdzdEVsZW1lbnQqIHZpZGVvU2NhbGUgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoInZpZGVv
c2NhbGUiLCAidmlkZW9TY2FsZSIpOworICAgIEdzdEVsZW1lbnQqIHZpZGVvU2luazsKKyAgICBH
c3RQYWQqIHNyY1BhZDsKKyAgICBHc3RQYWQqIHNpbmtQYWQ7CisgICAgR3N0RWxlbWVudCogdGVl
OworCisgICAgLy8gR2V0IHZpZGVvIHNpbmsgYmluIGFuZCB0aGUgdGVlIGluc2lkZS4KKyAgICBn
X29iamVjdF9nZXQocGlwZWxpbmUsICJ2aWRlby1zaW5rIiwgJnZpZGVvU2luaywgTlVMTCk7Cisg
ICAgdGVlID0gZ3N0X2Jpbl9nZXRfYnlfbmFtZShHU1RfQklOKHZpZGVvU2luayksICJ0Iik7CisK
KyAgICAvLyBBZGQgYW5kIGxpbmsgYSBxdWV1ZSwgZmZtcGVnY29sb3JzcGFjZSBhbmQgc2luayBp
biB0aGUgYmluLgorICAgIGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJTih2aWRlb1NpbmspLCBwbGF0
Zm9ybVZpZGVvU2luaywgdmlkZW9TY2FsZSwgY29sb3JzcGFjZSwgcXVldWUsIE5VTEwpOworICAg
IGdzdF9lbGVtZW50X2xpbmtfbWFueShxdWV1ZSwgY29sb3JzcGFjZSwgdmlkZW9TY2FsZSwgcGxh
dGZvcm1WaWRlb1NpbmssIE5VTEwpOworCisgICAgLy8gTGluayBhIG5ldyBzcmMgcGFkIGZyb20g
dGVlIHRvIHF1ZXVlLgorICAgIHNyY1BhZCA9IGdzdF9lbGVtZW50X2dldF9yZXF1ZXN0X3BhZCh0
ZWUsICJzcmMlZCIpOworICAgIHNpbmtQYWQgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChx
dWV1ZSwgInNpbmsiKTsKKyAgICBnc3RfcGFkX2xpbmsoc3JjUGFkLCBzaW5rUGFkKTsKKyAgICBn
c3Rfb2JqZWN0X3VucmVmKEdTVF9PQkpFQ1Qoc2lua1BhZCkpOworCisgICAgbV9keW5hbWljUGFk
TmFtZSA9IGdzdF9wYWRfZ2V0X25hbWUoc3JjUGFkKTsKKworICAgIC8vIFJvbGwgbmV3IGVsZW1l
bnRzIHRvIHBpcGVsaW5lIHN0YXRlLgorICAgIEdzdFN0YXRlIHN0YXRlOworICAgIGdzdF9lbGVt
ZW50X2dldF9zdGF0ZShwaXBlbGluZSwgJnN0YXRlLCAwLCAwKTsKKyAgICBnc3RfZWxlbWVudF9z
ZXRfc3RhdGUocXVldWUsIHN0YXRlKTsKKyAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUoY29sb3Jz
cGFjZSwgc3RhdGUpOworICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZSh2aWRlb1NjYWxlLCBzdGF0
ZSk7CisgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKHBsYXRmb3JtVmlkZW9TaW5rLCBzdGF0ZSk7
CisKKyAgICAvLyBRdWVyeSB0aGUgY3VycmVudCBtZWRpYSBzZWdtZW50IGluZm9ybWF0aW9ucyBh
bmQgc2VuZCB0aGVtIHRvd2FyZHMKKyAgICAvLyB0aGUgbmV3IHRlZSBicmFuY2ggZG93bnN0cmVh
bS4KKworICAgIGdkb3VibGUgcmF0ZTsKKyAgICBHc3RGb3JtYXQgZm9ybWF0OworICAgIGdpbnQ2
NCBzdGFydFZhbHVlLCBzdG9wVmFsdWUsIHBvc2l0aW9uOworICAgIEdzdFF1ZXJ5KiBxdWVyeSA9
IGdzdF9xdWVyeV9uZXdfc2VnbWVudChHU1RfRk9STUFUX1RJTUUpOworCisgICAgLy8gVE9ETzog
YWRkIGEgcXVlcnkgcmVzdWx0IGNoZWNrIHdoZW4gd2UgcmVxdWlyZSBnc3RyZWFtZXIgPj0gMC4x
MC4zMAorICAgIC8vIFNlZSBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjIwNDkwLgorICAgIGdzdF9lbGVtZW50X3F1ZXJ5KHBpcGVsaW5lLCBxdWVyeSk7CisgICAg
Z3N0X3F1ZXJ5X3BhcnNlX3NlZ21lbnQocXVlcnksICZyYXRlLCAmZm9ybWF0LCAmc3RhcnRWYWx1
ZSwgJnN0b3BWYWx1ZSk7CisgICAgZ3N0X3F1ZXJ5X3VucmVmKHF1ZXJ5KTsKKworICAgIGlmICgh
Z3N0X2VsZW1lbnRfcXVlcnlfcG9zaXRpb24ocGlwZWxpbmUsIDAsICZwb3NpdGlvbikpCisgICAg
ICAgIHBvc2l0aW9uID0gMDsKKworICAgIEdzdEV2ZW50KiBldmVudCA9IGdzdF9ldmVudF9uZXdf
bmV3X3NlZ21lbnQoRkFMU0UsIHJhdGUsIGZvcm1hdCwgc3RhcnRWYWx1ZSwgc3RvcFZhbHVlLCBw
b3NpdGlvbik7CisgICAgZ3N0X3BhZF9wdXNoX2V2ZW50KHNyY1BhZCwgZXZlbnQpOworICAgIGdz
dF9vYmplY3RfdW5yZWYoR1NUX09CSkVDVChzcmNQYWQpKTsKKworICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PGd1bG9uZz4obV9mdWxsc2NyZWVuV2luZG93KTsKK30KKwordm9pZCBHU3RyZWFt
ZXJHV29ybGQ6OmV4aXRGdWxsc2NyZWVuKCkKK3sKKyAgICBpZiAoIW1fZHluYW1pY1BhZE5hbWUp
CisgICAgICAgIHJldHVybjsKKworICAgIEdzdEVsZW1lbnQqIHBpcGVsaW5lID0gbV9wbGF5ZXIt
PnBpcGVsaW5lKCk7CisgICAgR3N0RWxlbWVudCogdmlkZW9TaW5rOworICAgIEdzdEVsZW1lbnQq
IHRlZTsKKyAgICBHc3RFbGVtZW50KiBjb2xvcnNwYWNlOworICAgIEdzdEVsZW1lbnQqIHBsYXRm
b3JtVmlkZW9TaW5rOworICAgIEdzdEVsZW1lbnQqIHF1ZXVlOworICAgIEdzdEVsZW1lbnQqIHZp
ZGVvU2NhbGU7CisgICAgR3N0UGFkKiBzcmNQYWQ7CisgICAgR3N0UGFkKiBzaW5rUGFkOworCisg
ICAgLy8gR2V0IHZpZGVvIHNpbmsgYmluIGFuZCB0aGUgZWxlbWVudHMgdG8gcmVtb3ZlLgorICAg
IGdfb2JqZWN0X2dldChwaXBlbGluZSwgInZpZGVvLXNpbmsiLCAmdmlkZW9TaW5rLCBOVUxMKTsK
KyAgICB0ZWUgPSBnc3RfYmluX2dldF9ieV9uYW1lKEdTVF9CSU4odmlkZW9TaW5rKSwgInQiKTsK
KyAgICBwbGF0Zm9ybVZpZGVvU2luayA9IGdzdF9iaW5fZ2V0X2J5X25hbWUoR1NUX0JJTih2aWRl
b1NpbmspLCAicGxhdGZvcm1WaWRlb1NpbmsiKTsKKyAgICBxdWV1ZSA9IGdzdF9iaW5fZ2V0X2J5
X25hbWUoR1NUX0JJTih2aWRlb1NpbmspLCAicXVldWUiKTsKKyAgICBjb2xvcnNwYWNlID0gZ3N0
X2Jpbl9nZXRfYnlfbmFtZShHU1RfQklOKHZpZGVvU2luayksICJjb2xvcnNwYWNlIik7CisgICAg
dmlkZW9TY2FsZSA9IGdzdF9iaW5fZ2V0X2J5X25hbWUoR1NUX0JJTih2aWRlb1NpbmspLCAidmlk
ZW9TY2FsZSIpOworCisgICAgLy8gR2V0IHBhZHMgdG8gdW5saW5rIGFuZCByZW1vdmUuCisgICAg
c3JjUGFkID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQodGVlLCBtX2R5bmFtaWNQYWROYW1l
KTsKKyAgICBzaW5rUGFkID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQocXVldWUsICJzaW5r
Iik7CisKKyAgICAvLyBVbmxpbmsgYW5kIHJlbGVhc2UgcmVxdWVzdCBwYWQuCisgICAgZ3N0X3Bh
ZF91bmxpbmsoc3JjUGFkLCBzaW5rUGFkKTsKKyAgICBnc3RfZWxlbWVudF9yZWxlYXNlX3JlcXVl
c3RfcGFkKHRlZSwgc3JjUGFkKTsKKworICAgIGdzdF9vYmplY3RfdW5yZWYoR1NUX09CSkVDVChz
cmNQYWQpKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmKEdTVF9PQkpFQ1Qoc2lua1BhZCkpOworCisg
ICAgLy8gVW5saW5rIGFuZCByZW1vdmUgcXVldWUsIGZmbXBlZ2NvbG9yc3BhY2UgYW5kIHNpbmsu
CisgICAgZ3N0X2VsZW1lbnRfdW5saW5rX21hbnkocXVldWUsIGNvbG9yc3BhY2UsIHZpZGVvU2Nh
bGUsIHBsYXRmb3JtVmlkZW9TaW5rLCBOVUxMKTsKKyAgICBnc3RfYmluX3JlbW92ZV9tYW55KEdT
VF9CSU4odmlkZW9TaW5rKSwgcXVldWUsIGNvbG9yc3BhY2UsIHZpZGVvU2NhbGUsIHBsYXRmb3Jt
VmlkZW9TaW5rLCBOVUxMKTsKKworICAgIG1fZHluYW1pY1BhZE5hbWUgPSAwOworfQorCit2b2lk
IEdTdHJlYW1lckdXb3JsZDo6c2V0V2luZG93T3ZlcmxheShHc3RNZXNzYWdlKiBtZXNzYWdlKQor
eworICAgIEdzdE9iamVjdCogc2luayA9IEdTVF9NRVNTQUdFX1NSQyhtZXNzYWdlKTsKKworICAg
IGlmICghR1NUX0lTX1hfT1ZFUkxBWShzaW5rKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KGdfb2JqZWN0X2NsYXNzX2ZpbmRfcHJvcGVydHkoR19PQkpFQ1RfR0VUX0NMQVNTKHNpbmspLCAi
Zm9yY2UtYXNwZWN0LXJhdGlvIikpCisgICAgICAgIGdfb2JqZWN0X3NldChzaW5rLCAiZm9yY2Ut
YXNwZWN0LXJhdGlvIiwgVFJVRSwgTlVMTCk7CisKKyAgICBpZiAobV92aWRlb1dpbmRvd0lkKQor
ICAgICAgICBnc3RfeF9vdmVybGF5X3NldF94d2luZG93X2lkKEdTVF9YX09WRVJMQVkoc2luayks
IG1fdmlkZW9XaW5kb3dJZCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmgKaW5kZXggYjYyNjI5OC4uZDFmNGE1
YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyR1dvcmxkLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyR1dvcmxkLmgKQEAgLTI3LDIxICsyNywzOSBAQAogI2luY2x1ZGUgIlJlZlB0ci5oIgog
I2luY2x1ZGUgPGdsaWIuaD4KIAordHlwZWRlZiBzdHJ1Y3QgX0dzdE1lc3NhZ2UgR3N0TWVzc2Fn
ZTsKK3R5cGVkZWYgc3RydWN0IF9Hc3RCdXMgR3N0QnVzOwordHlwZWRlZiBzdHJ1Y3QgX0dzdEJp
biBHc3RCaW47Cit0eXBlZGVmIHN0cnVjdCBfR3RrV2lkZ2V0IEd0a1dpZGdldDsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI7CiAKK2di
b29sZWFuIGdzdEdXb3JsZFN5bmNNZXNzYWdlQ2FsbGJhY2soR3N0QnVzKiBidXMsIEdzdE1lc3Nh
Z2UqIG1lc3NhZ2UsIGdwb2ludGVyIGRhdGEpOwogCiBjbGFzcyBHU3RyZWFtZXJHV29ybGQgOiBw
dWJsaWMgUmVmQ291bnRlZDxHU3RyZWFtZXJHV29ybGQ+IHsKKyAgICBmcmllbmQgZ2Jvb2xlYW4g
Z3N0R1dvcmxkU3luY01lc3NhZ2VDYWxsYmFjayhHc3RCdXMqIGJ1cywgR3N0TWVzc2FnZSogbWVz
c2FnZSwgZ3BvaW50ZXIgZGF0YSk7CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxH
U3RyZWFtZXJHV29ybGQ+IGNyZWF0ZUdXb3JsZChNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIq
KTsKICAgICB+R1N0cmVhbWVyR1dvcmxkKCk7CiAKKyAgICAvLyBSZXR1cm5zIHRoZSBmdWxsLXNj
cmVlbiB3aW5kb3cgY3JlYXRlZAorICAgIGd1bG9uZyBlbnRlckZ1bGxzY3JlZW4oKTsKKyAgICB2
b2lkIGV4aXRGdWxsc2NyZWVuKCk7CisKKyAgICB2b2lkIHNldFdpbmRvd092ZXJsYXkoR3N0TWVz
c2FnZSogbWVzc2FnZSk7CisKIHByaXZhdGU6CiAgICAgR1N0cmVhbWVyR1dvcmxkKE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lciopOwogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciog
bV9wbGF5ZXI7CisjaWYgUExBVEZPUk0oR1RLKQorICAgIEd0a1dpZGdldCogbV92aWRlb1dpbmRv
dzsKKyAgICBHdGtXaWRnZXQqIG1fZnVsbHNjcmVlbldpbmRvdzsKKyNlbmRpZgorICAgIGd1bG9u
ZyBtX3ZpZGVvV2luZG93SWQ7CisgICAgZ2NoYXIqIG1fZHluYW1pY1BhZE5hbWU7CiB9OwogCiB9
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA3ZTZiNzFhLi41YmJl
YTFiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTU0LDcgKzU0
LDYgQEAKICNpbmNsdWRlIDxHT3duUHRyLmg+CiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1
ZGUgPGdzdC9pbnRlcmZhY2VzL21peGVyLmg+Ci0jaW5jbHVkZSA8Z3N0L2ludGVyZmFjZXMveG92
ZXJsYXkuaD4KICNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8uaD4KICNpbmNsdWRlIDxsaW1pdHM+
CiAjaW5jbHVkZSA8bWF0aC5oPgpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJl
LmFjCmluZGV4IGJlMjk0OTUuLjFlNTBlMGUgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysg
Yi9jb25maWd1cmUuYWMKQEAgLTc1Nyw2ICs3NTcsNyBAQCBpZiB0ZXN0ICIkZW5hYmxlX3ZpZGVv
IiA9ICJ5ZXMiOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICBbZ3N0cmVhbWVyLTAuMTAgPj0g
JEdTVFJFQU1FUl9SRVFVSVJFRF9WRVJTSU9OCiAgICAgICAgICAgICAgICAgICAgICBnc3RyZWFt
ZXItYXBwLTAuMTAKICAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1iYXNlLTAuMTAKKyAg
ICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1pbnRlcmZhY2VzLTAuMTAKICAgICAgICAgICAg
ICAgICAgICAgIGdzdHJlYW1lci1wYnV0aWxzLTAuMTAKICAgICAgICAgICAgICAgICAgICAgIGdz
dHJlYW1lci1wbHVnaW5zLWJhc2UtMC4xMCA+PSAkR1NUUkVBTUVSX1BMVUdJTlNfQkFTRV9SRVFV
SVJFRF9WRVJTSU9OCiAgICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXItdmlkZW8tMC4xMF0p
Ci0tIAoxLjcuMQ==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57849</attachid>
            <date>2010-06-04 00:47:30 -0700</date>
            <delta_ts>2010-06-25 00:41:33 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>proposed-patch.patch</filename>
            <type>text/plain</type>
            <size>12298</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA0MzAwNDQ2MDhiMDIyNjYyY2RhZGNjMjExNTg4M2FhMzU5MjJiNjY3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDE4IE1heSAyMDEwIDE5OjIzOjAxICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
cHJvcG9zZWQgcGF0Y2gKCi0tLQogQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgIDEwICsKIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAyMSArKysKIC4uLi9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyR1dvcmxkLmNwcCAgICAgICAgIHwgIDE3OCArKysrKysrKysrKysrKysrKysrKwogLi4u
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuaCAgfCAgIDE4ICsr
CiAuLi4vZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgICAgICB8ICAg
IDEgLQogY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgICAxICsKIDYgZmlsZXMgY2hhbmdlZCwgMjI4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb25z
KC0pCgpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGZkNGY5OTIuLjgx
YjMyZTggMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAxMC0wNS0yOCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dTdHJl
YW1lcl0gR1RLIFhPdmVybGF5IHN1cHBvcnQgaW4gR1N0cmVhbWVyR1dvcmxkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ3NAorCisgICAgICAgICog
Y29uZmlndXJlLmFjOiBnc3QtaW50ZXJmYWNlcyBsaW5rIHN1cHBvcnQgbmVlZGVkIGZvciB1c2Ug
b2YKKyAgICAgICAgR3N0WE92ZXJsYXkgaW50ZXJmYWNlLgorCiAyMDEwLTA1LTMxICBYYW4gTG9w
ZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5v
cm9uaGEuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IGQwMDlhYmEuLjYwMDM1OTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTAtMDUtMjggIFBoaWxp
cHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHU3RyZWFtZXJdIEdUSyBYT3ZlcmxheSBzdXBw
b3J0IGluIEdTdHJlYW1lckdXb3JsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Mzk0NzQKKworICAgICAgICBHU3RyZWFtZXJHV29ybGQgbm93IGNhdGNo
ZXMgc3luY2hyb25vdXMgbWVzc2FnZXMgY29taW5nIGZyb20gdGhlCisgICAgICAgIHNpbmtzIGFu
ZCBjcmVhdGVzIGEgR1RLIHdpbmRvdyB3aGVyZSB0aGUgdmlkZW8gY2FuIGJlIG92ZXJsYXllZCBp
ZgorICAgICAgICBmdWxsc2NyZWVuIGRpc3BsYXkgaXMgcmVxdWVzdGVkIHVzaW5nIGVudGVyRnVs
bHNjcmVlbi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFt
ZXJHV29ybGQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z3N0R1dvcmxkU3luY01lc3NhZ2VDYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJHV29ybGQ6OkdTdHJlYW1lckdXb3Js
ZCk6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJHV29ybGQ6On5HU3RyZWFtZXJHV29ybGQp
OgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyR1dvcmxkOjplbnRlckZ1bGxzY3JlZW4pOgor
ICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyR1dvcmxkOjpleGl0RnVsbHNjcmVlbik6CisgICAg
ICAgIChXZWJDb3JlOjpHU3RyZWFtZXJHV29ybGQ6OnNldFdpbmRvd092ZXJsYXkpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcDoKKwogMjAxMC0wNi0wMSAgQW50b24gTXVoaW4gIDxhbnRvbm1AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5hdGUgQ2hhcGluLgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmNwcCBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5jcHAKaW5kZXgg
YzUwMjJmOS4uNzllNGU3NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuY3BwCkBAIC0yMSwxMiArMjEsMzQgQEAKIAog
I2luY2x1ZGUgIkdTdHJlYW1lckdXb3JsZC5oIgogCisjaW5jbHVkZSAiR093blB0ckdTdHJlYW1l
ci5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIgogCisjaW5jbHVk
ZSA8Z3N0L2dzdC5oPgorI2luY2x1ZGUgPGdzdC9pbnRlcmZhY2VzL3hvdmVybGF5Lmg+CisKKyNp
ZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2lmZGVmIEdES19XSU5ET1dJ
TkdfWDExCisjaW5jbHVkZSA8Z2RrL2dka3guaD4gLy8gZm9yIEdES19XSU5ET1dfWElECisjZW5k
aWYKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2dib29sZWFuIGdzdEdXb3JsZFN5bmNNZXNzYWdlQ2FsbGJhY2soR3N0QnVzKiBidXMsIEdz
dE1lc3NhZ2UqIG1lc3NhZ2UsIGdwb2ludGVyIGRhdGEpCit7CisgICAgQVNTRVJUKEdTVF9NRVNT
QUdFX1RZUEUobWVzc2FnZSkgPT0gR1NUX01FU1NBR0VfRUxFTUVOVCk7CisKKyAgICBHU3RyZWFt
ZXJHV29ybGQqIGdzdEdXb3JsZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8R1N0cmVhbWVyR1dvcmxkKj4o
ZGF0YSk7CisKKyAgICBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShtZXNzYWdlLT5zdHJ1Y3R1
cmUsICJwcmVwYXJlLXh3aW5kb3ctaWQiKSkKKyAgICAgICAgZ3N0R1dvcmxkLT5zZXRXaW5kb3dP
dmVybGF5KG1lc3NhZ2UpOworICAgIHJldHVybiBUUlVFOworfQorCiBQYXNzUmVmUHRyPEdTdHJl
YW1lckdXb3JsZD4gR1N0cmVhbWVyR1dvcmxkOjpjcmVhdGVHV29ybGQoTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyKiBwbGF5ZXIpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHU3RyZWFt
ZXJHV29ybGQocGxheWVyKSk7CkBAIC0zNCwxMSArNTYsMTY3IEBAIFBhc3NSZWZQdHI8R1N0cmVh
bWVyR1dvcmxkPiBHU3RyZWFtZXJHV29ybGQ6OmNyZWF0ZUdXb3JsZChNZWRpYVBsYXllclByaXZh
dGVHU3RyCiAKIEdTdHJlYW1lckdXb3JsZDo6R1N0cmVhbWVyR1dvcmxkKE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lciogcGxheWVyKQogICAgIDogbV9wbGF5ZXIocGxheWVyKQorICAgICwgbV92
aWRlb1dpbmRvd0lkKDApCisgICAgLCBtX2R5bmFtaWNQYWROYW1lKDApCiB7CisgICAgLy8gWE92
ZXJsYXkgbWVzc2FnZXMgbmVlZCB0byBiZSBoYW5kbGVkIHN5bmNocm9ub3VzbHkuCisgICAgR3N0
QnVzKiBidXMgPSBnc3RfcGlwZWxpbmVfZ2V0X2J1cyhHU1RfUElQRUxJTkUobV9wbGF5ZXItPnBp
cGVsaW5lKCkpKTsKKyAgICBnc3RfYnVzX3NldF9zeW5jX2hhbmRsZXIoYnVzLCBnc3RfYnVzX3N5
bmNfc2lnbmFsX2hhbmRsZXIsIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QoYnVzLCAic3lu
Yy1tZXNzYWdlOjplbGVtZW50IiwgR19DQUxMQkFDSyhnc3RHV29ybGRTeW5jTWVzc2FnZUNhbGxi
YWNrKSwgdGhpcyk7CisgICAgZ3N0X29iamVjdF91bnJlZihidXMpOwogfQogCiBHU3RyZWFtZXJH
V29ybGQ6On5HU3RyZWFtZXJHV29ybGQoKQogeworICAgIGV4aXRGdWxsc2NyZWVuKCk7Cit9CisK
K2d1bG9uZyBHU3RyZWFtZXJHV29ybGQ6OmVudGVyRnVsbHNjcmVlbigpCit7CisgICAgaWYgKG1f
ZHluYW1pY1BhZE5hbWUpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKCFtX3ZpZGVvV2lu
ZG93SWQpIHsKKyNpZiBQTEFURk9STShHVEspCisgICAgICAgIG1fZnVsbHNjcmVlbldpbmRvdyA9
IGd0a193aW5kb3dfbmV3KEdUS19XSU5ET1dfVE9QTEVWRUwpOworICAgICAgICBndGtfd2lkZ2V0
X3NldF9ldmVudHMobV9mdWxsc2NyZWVuV2luZG93LCBHREtfUE9JTlRFUl9NT1RJT05fTUFTSyB8
IEdES19LRVlfUFJFU1NfTUFTSyk7CisKKyAgICAgICAgbV92aWRlb1dpbmRvdyA9IGd0a19kcmF3
aW5nX2FyZWFfbmV3KCk7CisgICAgICAgIGd0a193aWRnZXRfc2V0X2RvdWJsZV9idWZmZXJlZCht
X3ZpZGVvV2luZG93LCBGQUxTRSk7CisgICAgICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05U
QUlORVIobV9mdWxsc2NyZWVuV2luZG93KSwgbV92aWRlb1dpbmRvdyk7CisKKyAgICAgICAgZ3Rr
X3dpZGdldF9zaG93X2FsbChtX2Z1bGxzY3JlZW5XaW5kb3cpOworICAgICAgICBndGtfd2lkZ2V0
X3JlYWxpemUobV9mdWxsc2NyZWVuV2luZG93KTsKKyAgICAgICAgZ3RrX3dpZGdldF9oaWRlX2Fs
bChtX2Z1bGxzY3JlZW5XaW5kb3cpOworCisjaWZkZWYgR0RLX1dJTkRPV0lOR19YMTEKKyAgICAg
ICAgZ2RrX3RocmVhZHNfZW50ZXIoKTsKKyAgICAgICAgZ2RrX2Rpc3BsYXlfc3luYyhnZGtfZGlz
cGxheV9nZXRfZGVmYXVsdCgpKTsKKyAgICAgICAgbV92aWRlb1dpbmRvd0lkID0gR0RLX1dJTkRP
V19YSUQobV9mdWxsc2NyZWVuV2luZG93LT53aW5kb3cpOworICAgICAgICBnZGtfdGhyZWFkc19s
ZWF2ZSgpOworI2VuZGlmCisjZW5kaWYKKyAgICB9CisKKyAgICBHc3RFbGVtZW50KiBwaXBlbGlu
ZSA9IG1fcGxheWVyLT5waXBlbGluZSgpOworICAgIEdzdEVsZW1lbnQqIHBsYXRmb3JtVmlkZW9T
aW5rID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJhdXRvdmlkZW9zaW5rIiwgInBsYXRmb3Jt
VmlkZW9TaW5rIik7CisgICAgR3N0RWxlbWVudCogY29sb3JzcGFjZSA9IGdzdF9lbGVtZW50X2Zh
Y3RvcnlfbWFrZSgiZmZtcGVnY29sb3JzcGFjZSIsICJjb2xvcnNwYWNlIik7CisgICAgR3N0RWxl
bWVudCogcXVldWUgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoInF1ZXVlIiwgInF1ZXVlIik7
CisgICAgR3N0RWxlbWVudCogdmlkZW9TY2FsZSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgi
dmlkZW9zY2FsZSIsICJ2aWRlb1NjYWxlIik7CisgICAgR093blB0cjxHc3RFbGVtZW50PiB2aWRl
b1Npbms7CisgICAgR3N0UGFkKiBzcmNQYWQ7CisgICAgR3N0UGFkKiBzaW5rUGFkOworICAgIEdz
dEVsZW1lbnQqIHRlZTsKKworICAgIC8vIEdldCB2aWRlbyBzaW5rIGJpbiBhbmQgdGhlIHRlZSBp
bnNpZGUuCisgICAgZ19vYmplY3RfZ2V0KHBpcGVsaW5lLCAidmlkZW8tc2luayIsICZ2aWRlb1Np
bmsub3V0UHRyKCksIE5VTEwpOworICAgIHRlZSA9IGdzdF9iaW5fZ2V0X2J5X25hbWUoR1NUX0JJ
Tih2aWRlb1NpbmsuZ2V0KCkpLCAidCIpOworCisgICAgLy8gQWRkIGFuZCBsaW5rIGEgcXVldWUs
IGZmbXBlZ2NvbG9yc3BhY2UgYW5kIHNpbmsgaW4gdGhlIGJpbi4KKyAgICBnc3RfYmluX2FkZF9t
YW55KEdTVF9CSU4odmlkZW9TaW5rLmdldCgpKSwgcGxhdGZvcm1WaWRlb1NpbmssIHZpZGVvU2Nh
bGUsIGNvbG9yc3BhY2UsIHF1ZXVlLCBOVUxMKTsKKyAgICBnc3RfZWxlbWVudF9saW5rX21hbnko
cXVldWUsIGNvbG9yc3BhY2UsIHZpZGVvU2NhbGUsIHBsYXRmb3JtVmlkZW9TaW5rLCBOVUxMKTsK
KworICAgIC8vIExpbmsgYSBuZXcgc3JjIHBhZCBmcm9tIHRlZSB0byBxdWV1ZS4KKyAgICBzcmNQ
YWQgPSBnc3RfZWxlbWVudF9nZXRfcmVxdWVzdF9wYWQodGVlLCAic3JjJWQiKTsKKyAgICBzaW5r
UGFkID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQocXVldWUsICJzaW5rIik7CisgICAgZ3N0
X3BhZF9saW5rKHNyY1BhZCwgc2lua1BhZCk7CisgICAgZ3N0X29iamVjdF91bnJlZihHU1RfT0JK
RUNUKHNpbmtQYWQpKTsKKworICAgIG1fZHluYW1pY1BhZE5hbWUgPSBnc3RfcGFkX2dldF9uYW1l
KHNyY1BhZCk7CisKKyAgICAvLyBSb2xsIG5ldyBlbGVtZW50cyB0byBwaXBlbGluZSBzdGF0ZS4K
KyAgICBnc3RfZWxlbWVudF9zeW5jX3N0YXRlX3dpdGhfcGFyZW50KHF1ZXVlKTsKKyAgICBnc3Rf
ZWxlbWVudF9zeW5jX3N0YXRlX3dpdGhfcGFyZW50KGNvbG9yc3BhY2UpOworICAgIGdzdF9lbGVt
ZW50X3N5bmNfc3RhdGVfd2l0aF9wYXJlbnQodmlkZW9TY2FsZSk7CisgICAgZ3N0X2VsZW1lbnRf
c3luY19zdGF0ZV93aXRoX3BhcmVudChwbGF0Zm9ybVZpZGVvU2luayk7CisKKyAgICAvLyBRdWVy
eSB0aGUgY3VycmVudCBtZWRpYSBzZWdtZW50IGluZm9ybWF0aW9ucyBhbmQgc2VuZCB0aGVtIHRv
d2FyZHMKKyAgICAvLyB0aGUgbmV3IHRlZSBicmFuY2ggZG93bnN0cmVhbS4KKworICAgIGdkb3Vi
bGUgcmF0ZTsKKyAgICBHc3RGb3JtYXQgZm9ybWF0OworICAgIGdpbnQ2NCBzdGFydFZhbHVlLCBz
dG9wVmFsdWUsIHBvc2l0aW9uOworICAgIEdzdFF1ZXJ5KiBxdWVyeSA9IGdzdF9xdWVyeV9uZXdf
c2VnbWVudChHU1RfRk9STUFUX1RJTUUpOworCisgICAgLy8gVE9ETzogYWRkIGEgcXVlcnkgcmVz
dWx0IGNoZWNrIHdoZW4gd2UgcmVxdWlyZSBnc3RyZWFtZXIgPj0gMC4xMC4zMAorICAgIC8vIFNl
ZSBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjIwNDkwLgorICAg
IGdzdF9lbGVtZW50X3F1ZXJ5KHBpcGVsaW5lLCBxdWVyeSk7CisKKyAgICBpZiAoIWdzdF9lbGVt
ZW50X3F1ZXJ5X3Bvc2l0aW9uKHBpcGVsaW5lLCAmZm9ybWF0LCAmcG9zaXRpb24pKQorICAgICAg
ICBwb3NpdGlvbiA9IDA7CisKKyAgICBnc3RfcXVlcnlfcGFyc2Vfc2VnbWVudChxdWVyeSwgJnJh
dGUsICZmb3JtYXQsICZzdGFydFZhbHVlLCAmc3RvcFZhbHVlKTsKKyAgICBnc3RfcXVlcnlfdW5y
ZWYocXVlcnkpOworCisgICAgR3N0RXZlbnQqIGV2ZW50ID0gZ3N0X2V2ZW50X25ld19uZXdfc2Vn
bWVudChGQUxTRSwgcmF0ZSwgZm9ybWF0LCBzdGFydFZhbHVlLCBzdG9wVmFsdWUsIHBvc2l0aW9u
KTsKKyAgICBnc3RfcGFkX3B1c2hfZXZlbnQoc3JjUGFkLCBldmVudCk7CisgICAgZ3N0X29iamVj
dF91bnJlZihHU1RfT0JKRUNUKHNyY1BhZCkpOworCisgICAgZ3N0X29iamVjdF91bnJlZih0ZWUp
OworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGd1bG9uZz4obV9mdWxsc2NyZWVuV2luZG93
KTsKK30KKwordm9pZCBHU3RyZWFtZXJHV29ybGQ6OmV4aXRGdWxsc2NyZWVuKCkKK3sKKyAgICBp
ZiAoIW1fZHluYW1pY1BhZE5hbWUpCisgICAgICAgIHJldHVybjsKKworICAgIEdzdEVsZW1lbnQq
IHBpcGVsaW5lID0gbV9wbGF5ZXItPnBpcGVsaW5lKCk7CisgICAgR093blB0cjxHc3RFbGVtZW50
PiB2aWRlb1Npbms7CisgICAgR3N0RWxlbWVudCogdGVlOworICAgIEdzdEVsZW1lbnQqIGNvbG9y
c3BhY2U7CisgICAgR3N0RWxlbWVudCogcGxhdGZvcm1WaWRlb1Npbms7CisgICAgR3N0RWxlbWVu
dCogcXVldWU7CisgICAgR3N0RWxlbWVudCogdmlkZW9TY2FsZTsKKyAgICBHc3RQYWQqIHNyY1Bh
ZDsKKyAgICBHc3RQYWQqIHNpbmtQYWQ7CisKKyAgICAvLyBHZXQgdmlkZW8gc2luayBiaW4gYW5k
IHRoZSBlbGVtZW50cyB0byByZW1vdmUuCisgICAgZ19vYmplY3RfZ2V0KHBpcGVsaW5lLCAidmlk
ZW8tc2luayIsICZ2aWRlb1Npbmsub3V0UHRyKCksIE5VTEwpOworICAgIHRlZSA9IGdzdF9iaW5f
Z2V0X2J5X25hbWUoR1NUX0JJTih2aWRlb1NpbmsuZ2V0KCkpLCAidCIpOworICAgIHBsYXRmb3Jt
VmlkZW9TaW5rID0gZ3N0X2Jpbl9nZXRfYnlfbmFtZShHU1RfQklOKHZpZGVvU2luay5nZXQoKSks
ICJwbGF0Zm9ybVZpZGVvU2luayIpOworICAgIHF1ZXVlID0gZ3N0X2Jpbl9nZXRfYnlfbmFtZShH
U1RfQklOKHZpZGVvU2luay5nZXQoKSksICJxdWV1ZSIpOworICAgIGNvbG9yc3BhY2UgPSBnc3Rf
YmluX2dldF9ieV9uYW1lKEdTVF9CSU4odmlkZW9TaW5rLmdldCgpKSwgImNvbG9yc3BhY2UiKTsK
KyAgICB2aWRlb1NjYWxlID0gZ3N0X2Jpbl9nZXRfYnlfbmFtZShHU1RfQklOKHZpZGVvU2luay5n
ZXQoKSksICJ2aWRlb1NjYWxlIik7CisKKyAgICAvLyBHZXQgcGFkcyB0byB1bmxpbmsgYW5kIHJl
bW92ZS4KKyAgICBzcmNQYWQgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZCh0ZWUsIG1fZHlu
YW1pY1BhZE5hbWUpOworICAgIHNpbmtQYWQgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChx
dWV1ZSwgInNpbmsiKTsKKworICAgIC8vIFVubGluayBhbmQgcmVsZWFzZSByZXF1ZXN0IHBhZC4K
KyAgICBnc3RfcGFkX3VubGluayhzcmNQYWQsIHNpbmtQYWQpOworICAgIGdzdF9lbGVtZW50X3Jl
bGVhc2VfcmVxdWVzdF9wYWQodGVlLCBzcmNQYWQpOworICAgIGdzdF9vYmplY3RfdW5yZWYoR1NU
X09CSkVDVChzcmNQYWQpKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmKEdTVF9PQkpFQ1Qoc2lua1Bh
ZCkpOworCisgICAgLy8gVW5saW5rLCByZW1vdmUgYW5kIGNsZWFudXAgcXVldWUsIGZmbXBlZ2Nv
bG9yc3BhY2UsIHZpZGVvU2NhbGUgYW5kIHNpbmsuCisgICAgZ3N0X2VsZW1lbnRfdW5saW5rX21h
bnkocXVldWUsIGNvbG9yc3BhY2UsIHZpZGVvU2NhbGUsIHBsYXRmb3JtVmlkZW9TaW5rLCBOVUxM
KTsKKyAgICBnc3RfYmluX3JlbW92ZV9tYW55KEdTVF9CSU4odmlkZW9TaW5rLmdldCgpKSwgcXVl
dWUsIGNvbG9yc3BhY2UsIHZpZGVvU2NhbGUsIHBsYXRmb3JtVmlkZW9TaW5rLCBOVUxMKTsKKyAg
ICBnc3RfZWxlbWVudF9zZXRfc3RhdGUocXVldWUsIEdTVF9TVEFURV9OVUxMKTsKKyAgICBnc3Rf
ZWxlbWVudF9zZXRfc3RhdGUoY29sb3JzcGFjZSwgR1NUX1NUQVRFX05VTEwpOworICAgIGdzdF9l
bGVtZW50X3NldF9zdGF0ZSh2aWRlb1NjYWxlLCBHU1RfU1RBVEVfTlVMTCk7CisgICAgZ3N0X2Vs
ZW1lbnRfc2V0X3N0YXRlKHBsYXRmb3JtVmlkZW9TaW5rLCBHU1RfU1RBVEVfTlVMTCk7CisgICAg
Z3N0X29iamVjdF91bnJlZihxdWV1ZSk7CisgICAgZ3N0X29iamVjdF91bnJlZihjb2xvcnNwYWNl
KTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmKHZpZGVvU2NhbGUpOworICAgIGdzdF9vYmplY3RfdW5y
ZWYocGxhdGZvcm1WaWRlb1NpbmspOworCisgICAgZ3N0X29iamVjdF91bnJlZih0ZWUpOworICAg
IG1fZHluYW1pY1BhZE5hbWUgPSAwOworfQorCit2b2lkIEdTdHJlYW1lckdXb3JsZDo6c2V0V2lu
ZG93T3ZlcmxheShHc3RNZXNzYWdlKiBtZXNzYWdlKQoreworICAgIEdzdE9iamVjdCogc2luayA9
IEdTVF9NRVNTQUdFX1NSQyhtZXNzYWdlKTsKKworICAgIGlmICghR1NUX0lTX1hfT1ZFUkxBWShz
aW5rKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGdfb2JqZWN0X2NsYXNzX2ZpbmRfcHJv
cGVydHkoR19PQkpFQ1RfR0VUX0NMQVNTKHNpbmspLCAiZm9yY2UtYXNwZWN0LXJhdGlvIikpCisg
ICAgICAgIGdfb2JqZWN0X3NldChzaW5rLCAiZm9yY2UtYXNwZWN0LXJhdGlvIiwgVFJVRSwgTlVM
TCk7CisKKyAgICBpZiAobV92aWRlb1dpbmRvd0lkKQorICAgICAgICBnc3RfeF9vdmVybGF5X3Nl
dF94d2luZG93X2lkKEdTVF9YX09WRVJMQVkoc2luayksIG1fdmlkZW9XaW5kb3dJZCk7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lckdXb3JsZC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyR1dvcmxkLmgKaW5kZXggYjYyNjI5OC4uZDFmNGE1YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmgKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmgKQEAgLTI3LDIx
ICsyNywzOSBAQAogI2luY2x1ZGUgIlJlZlB0ci5oIgogI2luY2x1ZGUgPGdsaWIuaD4KIAordHlw
ZWRlZiBzdHJ1Y3QgX0dzdE1lc3NhZ2UgR3N0TWVzc2FnZTsKK3R5cGVkZWYgc3RydWN0IF9Hc3RC
dXMgR3N0QnVzOwordHlwZWRlZiBzdHJ1Y3QgX0dzdEJpbiBHc3RCaW47Cit0eXBlZGVmIHN0cnVj
dCBfR3RrV2lkZ2V0IEd0a1dpZGdldDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI7CiAKK2dib29sZWFuIGdzdEdXb3JsZFN5bmNNZXNz
YWdlQ2FsbGJhY2soR3N0QnVzKiBidXMsIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIGdwb2ludGVyIGRh
dGEpOwogCiBjbGFzcyBHU3RyZWFtZXJHV29ybGQgOiBwdWJsaWMgUmVmQ291bnRlZDxHU3RyZWFt
ZXJHV29ybGQ+IHsKKyAgICBmcmllbmQgZ2Jvb2xlYW4gZ3N0R1dvcmxkU3luY01lc3NhZ2VDYWxs
YmFjayhHc3RCdXMqIGJ1cywgR3N0TWVzc2FnZSogbWVzc2FnZSwgZ3BvaW50ZXIgZGF0YSk7CiAK
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxHU3RyZWFtZXJHV29ybGQ+IGNyZWF0ZUdX
b3JsZChNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqKTsKICAgICB+R1N0cmVhbWVyR1dvcmxk
KCk7CiAKKyAgICAvLyBSZXR1cm5zIHRoZSBmdWxsLXNjcmVlbiB3aW5kb3cgY3JlYXRlZAorICAg
IGd1bG9uZyBlbnRlckZ1bGxzY3JlZW4oKTsKKyAgICB2b2lkIGV4aXRGdWxsc2NyZWVuKCk7CisK
KyAgICB2b2lkIHNldFdpbmRvd092ZXJsYXkoR3N0TWVzc2FnZSogbWVzc2FnZSk7CisKIHByaXZh
dGU6CiAgICAgR1N0cmVhbWVyR1dvcmxkKE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciopOwog
ICAgIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciogbV9wbGF5ZXI7CisjaWYgUExBVEZPUk0o
R1RLKQorICAgIEd0a1dpZGdldCogbV92aWRlb1dpbmRvdzsKKyAgICBHdGtXaWRnZXQqIG1fZnVs
bHNjcmVlbldpbmRvdzsKKyNlbmRpZgorICAgIGd1bG9uZyBtX3ZpZGVvV2luZG93SWQ7CisgICAg
Z2NoYXIqIG1fZHluYW1pY1BhZE5hbWU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcAppbmRleCA3ZTZiNzFhLi41YmJlYTFiIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
Y3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTU0LDcgKzU0LDYgQEAKICNpbmNsdWRlIDxHT3duUHRy
Lmg+CiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUgPGdzdC9pbnRlcmZhY2VzL21peGVy
Lmg+Ci0jaW5jbHVkZSA8Z3N0L2ludGVyZmFjZXMveG92ZXJsYXkuaD4KICNpbmNsdWRlIDxnc3Qv
dmlkZW8vdmlkZW8uaD4KICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8bWF0aC5oPgpkaWZm
IC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IGJlMjk0OTUuLjFlNTBl
MGUgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTc1Nyw2
ICs3NTcsNyBAQCBpZiB0ZXN0ICIkZW5hYmxlX3ZpZGVvIiA9ICJ5ZXMiOyB0aGVuCiAgICAgICAg
ICAgICAgICAgICAgICBbZ3N0cmVhbWVyLTAuMTAgPj0gJEdTVFJFQU1FUl9SRVFVSVJFRF9WRVJT
SU9OCiAgICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXItYXBwLTAuMTAKICAgICAgICAgICAg
ICAgICAgICAgIGdzdHJlYW1lci1iYXNlLTAuMTAKKyAgICAgICAgICAgICAgICAgICAgIGdzdHJl
YW1lci1pbnRlcmZhY2VzLTAuMTAKICAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1wYnV0
aWxzLTAuMTAKICAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1wbHVnaW5zLWJhc2UtMC4x
MCA+PSAkR1NUUkVBTUVSX1BMVUdJTlNfQkFTRV9SRVFVSVJFRF9WRVJTSU9OCiAgICAgICAgICAg
ICAgICAgICAgICBnc3RyZWFtZXItdmlkZW8tMC4xMF0pCi0tIAoxLjcuMQ==
</data>
<flag name="review"
          id="42523"
          type_id="1"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59740</attachid>
            <date>2010-06-25 00:41:33 -0700</date>
            <delta_ts>2010-07-10 04:29:35 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>proposed-patch.patch</filename>
            <type>text/plain</type>
            <size>12427</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA0Mzg0OTlkZTMzZmZiYWNhOWE0MGI3MGQ0MTQ2NWQwZDgxYWE5ZWU1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDE4IE1heSAyMDEwIDE5OjIzOjAxICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
cHJvcG9zZWQgcGF0Y2gKCi0tLQogQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgIDEwICsKIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAyMSArKysKIC4uLi9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyR1dvcmxkLmNwcCAgICAgICAgIHwgIDE3NiArKysrKysrKysrKysrKysrKysrKwogLi4u
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuaCAgfCAgIDE4ICsr
CiAuLi4vZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgICAgICB8ICAg
IDEgLQogY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgICAxICsKIDYgZmlsZXMgY2hhbmdlZCwgMjI2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb25z
KC0pCgpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDZkYTg2MDQuLmZk
YmZiNDYgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAxMC0wNS0yOCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dTdHJl
YW1lcl0gR1RLIFhPdmVybGF5IHN1cHBvcnQgaW4gR1N0cmVhbWVyR1dvcmxkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ3NAorCisgICAgICAgICog
Y29uZmlndXJlLmFjOiBnc3QtaW50ZXJmYWNlcyBsaW5rIHN1cHBvcnQgbmVlZGVkIGZvciB1c2Ug
b2YKKyAgICAgICAgR3N0WE92ZXJsYXkgaW50ZXJmYWNlLgorCiAyMDEwLTA2LTIzICBMZWFuZHJv
IFBlcmVpcmEgIDxsZWFuZHJvQHByb2Z1c2lvbi5tb2JpPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMDlhZGUwLi44ODU2MDU1IDEwMDY0NAotLS0g
YS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI2
IEBACiAyMDEwLTA1LTI4ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4K
IAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR1N0cmVh
bWVyXSBHVEsgWE92ZXJsYXkgc3VwcG9ydCBpbiBHU3RyZWFtZXJHV29ybGQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDc0CisKKyAgICAgICAgR1N0
cmVhbWVyR1dvcmxkIG5vdyBjYXRjaGVzIHN5bmNocm9ub3VzIG1lc3NhZ2VzIGNvbWluZyBmcm9t
IHRoZQorICAgICAgICBzaW5rcyBhbmQgY3JlYXRlcyBhIEdUSyB3aW5kb3cgd2hlcmUgdGhlIHZp
ZGVvIGNhbiBiZSBvdmVybGF5ZWQgaWYKKyAgICAgICAgZnVsbHNjcmVlbiBkaXNwbGF5IGlzIHJl
cXVlc3RlZCB1c2luZyBlbnRlckZ1bGxzY3JlZW4uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omdz
dEdXb3JsZFN5bmNNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVy
R1dvcmxkOjpHU3RyZWFtZXJHV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyR1dv
cmxkOjp+R1N0cmVhbWVyR1dvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckdXb3Js
ZDo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckdXb3JsZDo6
ZXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyR1dvcmxkOjpzZXRX
aW5kb3dPdmVybGF5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyR1dvcmxkLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisKKzIwMTAtMDUtMjggIFBoaWxpcHBlIE5v
cm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCiAgICAgICAgIFJldmlld2VkIGJ5IEd1c3Rh
dm8gTm9yb25oYS4KIAogICAgICAgICBbR1N0cmVhbWVyXSBtdWx0aXBsZSB2aWRlbyBzaW5rIHN1
cHBvcnQKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dT
dHJlYW1lckdXb3JsZC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9H
U3RyZWFtZXJHV29ybGQuY3BwCmluZGV4IGM1MDIyZjkuLjVhZjM3N2YgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5jcHAKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmNw
cApAQCAtMjEsMTIgKzIxLDM0IEBACiAKICNpbmNsdWRlICJHU3RyZWFtZXJHV29ybGQuaCIKIAor
I2luY2x1ZGUgIkdPd25QdHJHU3RyZWFtZXIuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuaCIKIAorI2luY2x1ZGUgPGdzdC9nc3QuaD4KKyNpbmNsdWRlIDxnc3QvaW50
ZXJmYWNlcy94b3ZlcmxheS5oPgorCisjaWYgUExBVEZPUk0oR1RLKQorI2luY2x1ZGUgPGd0ay9n
dGsuaD4KKyNpZmRlZiBHREtfV0lORE9XSU5HX1gxMQorI2luY2x1ZGUgPGdkay9nZGt4Lmg+IC8v
IGZvciBHREtfV0lORE9XX1hJRAorI2VuZGlmCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIHN0
ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitnYm9vbGVhbiBnc3RHV29ybGRTeW5jTWVzc2Fn
ZUNhbGxiYWNrKEdzdEJ1cyogYnVzLCBHc3RNZXNzYWdlKiBtZXNzYWdlLCBncG9pbnRlciBkYXRh
KQoreworICAgIEFTU0VSVChHU1RfTUVTU0FHRV9UWVBFKG1lc3NhZ2UpID09IEdTVF9NRVNTQUdF
X0VMRU1FTlQpOworCisgICAgR1N0cmVhbWVyR1dvcmxkKiBnc3RHV29ybGQgPSByZWludGVycHJl
dF9jYXN0PEdTdHJlYW1lckdXb3JsZCo+KGRhdGEpOworCisgICAgaWYgKGdzdF9zdHJ1Y3R1cmVf
aGFzX25hbWUobWVzc2FnZS0+c3RydWN0dXJlLCAicHJlcGFyZS14d2luZG93LWlkIikpCisgICAg
ICAgIGdzdEdXb3JsZC0+c2V0V2luZG93T3ZlcmxheShtZXNzYWdlKTsKKyAgICByZXR1cm4gVFJV
RTsKK30KKwogUGFzc1JlZlB0cjxHU3RyZWFtZXJHV29ybGQ+IEdTdHJlYW1lckdXb3JsZDo6Y3Jl
YXRlR1dvcmxkKE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciogcGxheWVyKQogewogICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgR1N0cmVhbWVyR1dvcmxkKHBsYXllcikpOwpAQCAtMzQsMTEgKzU2
LDE2NSBAQCBQYXNzUmVmUHRyPEdTdHJlYW1lckdXb3JsZD4gR1N0cmVhbWVyR1dvcmxkOjpjcmVh
dGVHV29ybGQoTWVkaWFQbGF5ZXJQcml2YXRlR1N0cgogCiBHU3RyZWFtZXJHV29ybGQ6OkdTdHJl
YW1lckdXb3JsZChNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqIHBsYXllcikKICAgICA6IG1f
cGxheWVyKHBsYXllcikKKyAgICAsIG1fdmlkZW9XaW5kb3dJZCgwKQorICAgICwgbV9keW5hbWlj
UGFkTmFtZSgwKQogeworICAgIC8vIFhPdmVybGF5IG1lc3NhZ2VzIG5lZWQgdG8gYmUgaGFuZGxl
ZCBzeW5jaHJvbm91c2x5LgorICAgIEdzdEJ1cyogYnVzID0gZ3N0X3BpcGVsaW5lX2dldF9idXMo
R1NUX1BJUEVMSU5FKG1fcGxheWVyLT5waXBlbGluZSgpKSk7CisgICAgZ3N0X2J1c19zZXRfc3lu
Y19oYW5kbGVyKGJ1cywgZ3N0X2J1c19zeW5jX3NpZ25hbF9oYW5kbGVyLCB0aGlzKTsKKyAgICBn
X3NpZ25hbF9jb25uZWN0KGJ1cywgInN5bmMtbWVzc2FnZTo6ZWxlbWVudCIsIEdfQ0FMTEJBQ0so
Z3N0R1dvcmxkU3luY01lc3NhZ2VDYWxsYmFjayksIHRoaXMpOworICAgIGdzdF9vYmplY3RfdW5y
ZWYoYnVzKTsKIH0KIAogR1N0cmVhbWVyR1dvcmxkOjp+R1N0cmVhbWVyR1dvcmxkKCkKIHsKKyAg
ICBleGl0RnVsbHNjcmVlbigpOworfQorCitndWxvbmcgR1N0cmVhbWVyR1dvcmxkOjplbnRlckZ1
bGxzY3JlZW4oKQoreworICAgIGlmIChtX2R5bmFtaWNQYWROYW1lKQorICAgICAgICByZXR1cm4g
MDsKKworICAgIGlmICghbV92aWRlb1dpbmRvd0lkKSB7CisjaWYgUExBVEZPUk0oR1RLKQorICAg
ICAgICBtX2Z1bGxzY3JlZW5XaW5kb3cgPSBndGtfd2luZG93X25ldyhHVEtfV0lORE9XX1RPUExF
VkVMKTsKKyAgICAgICAgZ3RrX3dpZGdldF9zZXRfZXZlbnRzKG1fZnVsbHNjcmVlbldpbmRvdywg
R0RLX1BPSU5URVJfTU9USU9OX01BU0sgfCBHREtfS0VZX1BSRVNTX01BU0spOworCisgICAgICAg
IG1fdmlkZW9XaW5kb3cgPSBndGtfZHJhd2luZ19hcmVhX25ldygpOworICAgICAgICBndGtfd2lk
Z2V0X3NldF9kb3VibGVfYnVmZmVyZWQobV92aWRlb1dpbmRvdywgRkFMU0UpOworICAgICAgICBn
dGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKG1fZnVsbHNjcmVlbldpbmRvdyksIG1fdmlk
ZW9XaW5kb3cpOworCisgICAgICAgIGd0a193aWRnZXRfc2hvd19hbGwobV9mdWxsc2NyZWVuV2lu
ZG93KTsKKyAgICAgICAgZ3RrX3dpZGdldF9yZWFsaXplKG1fZnVsbHNjcmVlbldpbmRvdyk7Cisg
ICAgICAgIGd0a193aWRnZXRfaGlkZV9hbGwobV9mdWxsc2NyZWVuV2luZG93KTsKKworI2lmZGVm
IEdES19XSU5ET1dJTkdfWDExCisgICAgICAgIGdka190aHJlYWRzX2VudGVyKCk7CisgICAgICAg
IGdka19kaXNwbGF5X3N5bmMoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQoKSk7CisgICAgICAgIG1f
dmlkZW9XaW5kb3dJZCA9IEdES19XSU5ET1dfWElEKG1fZnVsbHNjcmVlbldpbmRvdy0+d2luZG93
KTsKKyAgICAgICAgZ2RrX3RocmVhZHNfbGVhdmUoKTsKKyNlbmRpZgorI2VuZGlmCisgICAgfQor
CisgICAgR3N0RWxlbWVudCogcGlwZWxpbmUgPSBtX3BsYXllci0+cGlwZWxpbmUoKTsKKyAgICBH
c3RFbGVtZW50KiBwbGF0Zm9ybVZpZGVvU2luayA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgi
YXV0b3ZpZGVvc2luayIsICJwbGF0Zm9ybVZpZGVvU2luayIpOworICAgIEdzdEVsZW1lbnQqIGNv
bG9yc3BhY2UgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImZmbXBlZ2NvbG9yc3BhY2UiLCAi
Y29sb3JzcGFjZSIpOworICAgIEdzdEVsZW1lbnQqIHF1ZXVlID0gZ3N0X2VsZW1lbnRfZmFjdG9y
eV9tYWtlKCJxdWV1ZSIsICJxdWV1ZSIpOworICAgIEdzdEVsZW1lbnQqIHZpZGVvU2NhbGUgPSBn
c3RfZWxlbWVudF9mYWN0b3J5X21ha2UoInZpZGVvc2NhbGUiLCAidmlkZW9TY2FsZSIpOworCisg
ICAgLy8gR2V0IHZpZGVvIHNpbmsgYmluIGFuZCB0aGUgdGVlIGluc2lkZS4KKyAgICBHT3duUHRy
PEdzdEVsZW1lbnQ+IHZpZGVvU2luazsKKyAgICBnX29iamVjdF9nZXQocGlwZWxpbmUsICJ2aWRl
by1zaW5rIiwgJnZpZGVvU2luay5vdXRQdHIoKSwgTlVMTCk7CisgICAgR3N0RWxlbWVudCogdGVl
ID0gZ3N0X2Jpbl9nZXRfYnlfbmFtZShHU1RfQklOKHZpZGVvU2luay5nZXQoKSksICJ2aWRlb1Rl
ZSIpOworCisgICAgLy8gQWRkIGFuZCBsaW5rIGEgcXVldWUsIGZmbXBlZ2NvbG9yc3BhY2UgYW5k
IHNpbmsgaW4gdGhlIGJpbi4KKyAgICBnc3RfYmluX2FkZF9tYW55KEdTVF9CSU4odmlkZW9TaW5r
LmdldCgpKSwgcGxhdGZvcm1WaWRlb1NpbmssIHZpZGVvU2NhbGUsIGNvbG9yc3BhY2UsIHF1ZXVl
LCBOVUxMKTsKKyAgICBnc3RfZWxlbWVudF9saW5rX21hbnkocXVldWUsIGNvbG9yc3BhY2UsIHZp
ZGVvU2NhbGUsIHBsYXRmb3JtVmlkZW9TaW5rLCBOVUxMKTsKKworICAgIC8vIExpbmsgYSBuZXcg
c3JjIHBhZCBmcm9tIHRlZSB0byBxdWV1ZS4KKyAgICBHc3RQYWQqIHNyY1BhZCA9IGdzdF9lbGVt
ZW50X2dldF9yZXF1ZXN0X3BhZCh0ZWUsICJzcmMlZCIpOworICAgIEdzdFBhZCogc2lua1BhZCA9
IGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKHF1ZXVlLCAic2luayIpOworICAgIGdzdF9wYWRf
bGluayhzcmNQYWQsIHNpbmtQYWQpOworICAgIGdzdF9vYmplY3RfdW5yZWYoR1NUX09CSkVDVChz
aW5rUGFkKSk7CisKKyAgICBtX2R5bmFtaWNQYWROYW1lID0gZ3N0X3BhZF9nZXRfbmFtZShzcmNQ
YWQpOworCisgICAgLy8gUm9sbCBuZXcgZWxlbWVudHMgdG8gcGlwZWxpbmUgc3RhdGUuCisgICAg
Z3N0X2VsZW1lbnRfc3luY19zdGF0ZV93aXRoX3BhcmVudChxdWV1ZSk7CisgICAgZ3N0X2VsZW1l
bnRfc3luY19zdGF0ZV93aXRoX3BhcmVudChjb2xvcnNwYWNlKTsKKyAgICBnc3RfZWxlbWVudF9z
eW5jX3N0YXRlX3dpdGhfcGFyZW50KHZpZGVvU2NhbGUpOworICAgIGdzdF9lbGVtZW50X3N5bmNf
c3RhdGVfd2l0aF9wYXJlbnQocGxhdGZvcm1WaWRlb1NpbmspOworCisgICAgZ3N0X29iamVjdF91
bnJlZih0ZWUpOworCisgICAgLy8gUXVlcnkgdGhlIGN1cnJlbnQgbWVkaWEgc2VnbWVudCBpbmZv
cm1hdGlvbnMgYW5kIHNlbmQgdGhlbSB0b3dhcmRzCisgICAgLy8gdGhlIG5ldyB0ZWUgYnJhbmNo
IGRvd25zdHJlYW0uCisKKyAgICBHc3RRdWVyeSogcXVlcnkgPSBnc3RfcXVlcnlfbmV3X3NlZ21l
bnQoR1NUX0ZPUk1BVF9USU1FKTsKKyAgICBnYm9vbGVhbiBxdWVyeVJlc3VsdCA9IGdzdF9lbGVt
ZW50X3F1ZXJ5KHBpcGVsaW5lLCBxdWVyeSk7CisKKyAgICAvLyBTZWUgaHR0cHM6Ly9idWd6aWxs
YS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTYyMDQ5MC4KKyNpZiBHU1RfQ0hFQ0tfVkVSU0lP
TigwLCAxMCwgMzApCisgICAgaWYgKCFxdWVyeVJlc3VsdCkgeworICAgICAgICBnc3RfcXVlcnlf
dW5yZWYocXVlcnkpOworICAgICAgICBnc3Rfb2JqZWN0X3VucmVmKEdTVF9PQkpFQ1Qoc3JjUGFk
KSk7CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGd1bG9uZz4obV9mdWxsc2NyZWVu
V2luZG93KTsKKyAgICB9CisjZW5kaWYKKworICAgIEdzdEZvcm1hdCBmb3JtYXQ7CisgICAgZ2lu
dDY0IHBvc2l0aW9uOworICAgIGlmICghZ3N0X2VsZW1lbnRfcXVlcnlfcG9zaXRpb24ocGlwZWxp
bmUsICZmb3JtYXQsICZwb3NpdGlvbikpCisgICAgICAgIHBvc2l0aW9uID0gMDsKKworICAgIGdk
b3VibGUgcmF0ZTsKKyAgICBnaW50NjQgc3RhcnRWYWx1ZSwgc3RvcFZhbHVlOworICAgIGdzdF9x
dWVyeV9wYXJzZV9zZWdtZW50KHF1ZXJ5LCAmcmF0ZSwgJmZvcm1hdCwgJnN0YXJ0VmFsdWUsICZz
dG9wVmFsdWUpOworCisgICAgR3N0RXZlbnQqIGV2ZW50ID0gZ3N0X2V2ZW50X25ld19uZXdfc2Vn
bWVudChGQUxTRSwgcmF0ZSwgZm9ybWF0LCBzdGFydFZhbHVlLCBzdG9wVmFsdWUsIHBvc2l0aW9u
KTsKKyAgICBnc3RfcGFkX3B1c2hfZXZlbnQoc3JjUGFkLCBldmVudCk7CisKKyAgICBnc3RfcXVl
cnlfdW5yZWYocXVlcnkpOworICAgIGdzdF9vYmplY3RfdW5yZWYoR1NUX09CSkVDVChzcmNQYWQp
KTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxndWxvbmc+KG1fZnVsbHNjcmVlbldpbmRv
dyk7Cit9CisKK3ZvaWQgR1N0cmVhbWVyR1dvcmxkOjpleGl0RnVsbHNjcmVlbigpCit7CisgICAg
aWYgKCFtX2R5bmFtaWNQYWROYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBHc3RFbGVtZW50
KiBwaXBlbGluZSA9IG1fcGxheWVyLT5waXBlbGluZSgpOworCisgICAgLy8gR2V0IHZpZGVvIHNp
bmsgYmluIGFuZCB0aGUgZWxlbWVudHMgdG8gcmVtb3ZlLgorICAgIEdPd25QdHI8R3N0RWxlbWVu
dD4gdmlkZW9TaW5rOworICAgIGdfb2JqZWN0X2dldChwaXBlbGluZSwgInZpZGVvLXNpbmsiLCAm
dmlkZW9TaW5rLm91dFB0cigpLCBOVUxMKTsKKyAgICBHc3RFbGVtZW50KiB0ZWUgPSBnc3RfYmlu
X2dldF9ieV9uYW1lKEdTVF9CSU4odmlkZW9TaW5rLmdldCgpKSwgInZpZGVvVGVlIik7CisgICAg
R3N0RWxlbWVudCogcGxhdGZvcm1WaWRlb1NpbmsgPSBnc3RfYmluX2dldF9ieV9uYW1lKEdTVF9C
SU4odmlkZW9TaW5rLmdldCgpKSwgInBsYXRmb3JtVmlkZW9TaW5rIik7CisgICAgR3N0RWxlbWVu
dCogcXVldWUgPSBnc3RfYmluX2dldF9ieV9uYW1lKEdTVF9CSU4odmlkZW9TaW5rLmdldCgpKSwg
InF1ZXVlIik7CisgICAgR3N0RWxlbWVudCogY29sb3JzcGFjZSA9IGdzdF9iaW5fZ2V0X2J5X25h
bWUoR1NUX0JJTih2aWRlb1NpbmsuZ2V0KCkpLCAiY29sb3JzcGFjZSIpOworICAgIEdzdEVsZW1l
bnQqIHZpZGVvU2NhbGUgPSBnc3RfYmluX2dldF9ieV9uYW1lKEdTVF9CSU4odmlkZW9TaW5rLmdl
dCgpKSwgInZpZGVvU2NhbGUiKTsKKworICAgIC8vIEdldCBwYWRzIHRvIHVubGluayBhbmQgcmVt
b3ZlLgorICAgIEdzdFBhZCogc3JjUGFkID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQodGVl
LCBtX2R5bmFtaWNQYWROYW1lKTsKKyAgICBHc3RQYWQqIHNpbmtQYWQgPSBnc3RfZWxlbWVudF9n
ZXRfc3RhdGljX3BhZChxdWV1ZSwgInNpbmsiKTsKKworICAgIC8vIFVubGluayBhbmQgcmVsZWFz
ZSByZXF1ZXN0IHBhZC4KKyAgICBnc3RfcGFkX3VubGluayhzcmNQYWQsIHNpbmtQYWQpOworICAg
IGdzdF9lbGVtZW50X3JlbGVhc2VfcmVxdWVzdF9wYWQodGVlLCBzcmNQYWQpOworICAgIGdzdF9v
YmplY3RfdW5yZWYoR1NUX09CSkVDVChzcmNQYWQpKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmKEdT
VF9PQkpFQ1Qoc2lua1BhZCkpOworCisgICAgLy8gVW5saW5rLCByZW1vdmUgYW5kIGNsZWFudXAg
cXVldWUsIGZmbXBlZ2NvbG9yc3BhY2UsIHZpZGVvU2NhbGUgYW5kIHNpbmsuCisgICAgZ3N0X2Vs
ZW1lbnRfdW5saW5rX21hbnkocXVldWUsIGNvbG9yc3BhY2UsIHZpZGVvU2NhbGUsIHBsYXRmb3Jt
VmlkZW9TaW5rLCBOVUxMKTsKKyAgICBnc3RfYmluX3JlbW92ZV9tYW55KEdTVF9CSU4odmlkZW9T
aW5rLmdldCgpKSwgcXVldWUsIGNvbG9yc3BhY2UsIHZpZGVvU2NhbGUsIHBsYXRmb3JtVmlkZW9T
aW5rLCBOVUxMKTsKKyAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUocXVldWUsIEdTVF9TVEFURV9O
VUxMKTsKKyAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUoY29sb3JzcGFjZSwgR1NUX1NUQVRFX05V
TEwpOworICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZSh2aWRlb1NjYWxlLCBHU1RfU1RBVEVfTlVM
TCk7CisgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKHBsYXRmb3JtVmlkZW9TaW5rLCBHU1RfU1RB
VEVfTlVMTCk7CisgICAgZ3N0X29iamVjdF91bnJlZihxdWV1ZSk7CisgICAgZ3N0X29iamVjdF91
bnJlZihjb2xvcnNwYWNlKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmKHZpZGVvU2NhbGUpOworICAg
IGdzdF9vYmplY3RfdW5yZWYocGxhdGZvcm1WaWRlb1NpbmspOworCisgICAgZ3N0X29iamVjdF91
bnJlZih0ZWUpOworICAgIG1fZHluYW1pY1BhZE5hbWUgPSAwOworfQorCit2b2lkIEdTdHJlYW1l
ckdXb3JsZDo6c2V0V2luZG93T3ZlcmxheShHc3RNZXNzYWdlKiBtZXNzYWdlKQoreworICAgIEdz
dE9iamVjdCogc2luayA9IEdTVF9NRVNTQUdFX1NSQyhtZXNzYWdlKTsKKworICAgIGlmICghR1NU
X0lTX1hfT1ZFUkxBWShzaW5rKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGdfb2JqZWN0
X2NsYXNzX2ZpbmRfcHJvcGVydHkoR19PQkpFQ1RfR0VUX0NMQVNTKHNpbmspLCAiZm9yY2UtYXNw
ZWN0LXJhdGlvIikpCisgICAgICAgIGdfb2JqZWN0X3NldChzaW5rLCAiZm9yY2UtYXNwZWN0LXJh
dGlvIiwgVFJVRSwgTlVMTCk7CisKKyAgICBpZiAobV92aWRlb1dpbmRvd0lkKQorICAgICAgICBn
c3RfeF9vdmVybGF5X3NldF94d2luZG93X2lkKEdTVF9YX09WRVJMQVkoc2luayksIG1fdmlkZW9X
aW5kb3dJZCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmgKaW5kZXggYjYyNjI5OC4uZDFmNGE1YiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxk
LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dv
cmxkLmgKQEAgLTI3LDIxICsyNywzOSBAQAogI2luY2x1ZGUgIlJlZlB0ci5oIgogI2luY2x1ZGUg
PGdsaWIuaD4KIAordHlwZWRlZiBzdHJ1Y3QgX0dzdE1lc3NhZ2UgR3N0TWVzc2FnZTsKK3R5cGVk
ZWYgc3RydWN0IF9Hc3RCdXMgR3N0QnVzOwordHlwZWRlZiBzdHJ1Y3QgX0dzdEJpbiBHc3RCaW47
Cit0eXBlZGVmIHN0cnVjdCBfR3RrV2lkZ2V0IEd0a1dpZGdldDsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI7CiAKK2dib29sZWFuIGdz
dEdXb3JsZFN5bmNNZXNzYWdlQ2FsbGJhY2soR3N0QnVzKiBidXMsIEdzdE1lc3NhZ2UqIG1lc3Nh
Z2UsIGdwb2ludGVyIGRhdGEpOwogCiBjbGFzcyBHU3RyZWFtZXJHV29ybGQgOiBwdWJsaWMgUmVm
Q291bnRlZDxHU3RyZWFtZXJHV29ybGQ+IHsKKyAgICBmcmllbmQgZ2Jvb2xlYW4gZ3N0R1dvcmxk
U3luY01lc3NhZ2VDYWxsYmFjayhHc3RCdXMqIGJ1cywgR3N0TWVzc2FnZSogbWVzc2FnZSwgZ3Bv
aW50ZXIgZGF0YSk7CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxHU3RyZWFtZXJH
V29ybGQ+IGNyZWF0ZUdXb3JsZChNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqKTsKICAgICB+
R1N0cmVhbWVyR1dvcmxkKCk7CiAKKyAgICAvLyBSZXR1cm5zIHRoZSBmdWxsLXNjcmVlbiB3aW5k
b3cgY3JlYXRlZAorICAgIGd1bG9uZyBlbnRlckZ1bGxzY3JlZW4oKTsKKyAgICB2b2lkIGV4aXRG
dWxsc2NyZWVuKCk7CisKKyAgICB2b2lkIHNldFdpbmRvd092ZXJsYXkoR3N0TWVzc2FnZSogbWVz
c2FnZSk7CisKIHByaXZhdGU6CiAgICAgR1N0cmVhbWVyR1dvcmxkKE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lciopOwogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciogbV9wbGF5ZXI7
CisjaWYgUExBVEZPUk0oR1RLKQorICAgIEd0a1dpZGdldCogbV92aWRlb1dpbmRvdzsKKyAgICBH
dGtXaWRnZXQqIG1fZnVsbHNjcmVlbldpbmRvdzsKKyNlbmRpZgorICAgIGd1bG9uZyBtX3ZpZGVv
V2luZG93SWQ7CisgICAgZ2NoYXIqIG1fZHluYW1pY1BhZE5hbWU7CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCAyOWFjMzU2Li5hZmIzYjE4IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTU0LDcgKzU0LDYgQEAKICNp
bmNsdWRlIDxHT3duUHRyLmg+CiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUgPGdzdC9p
bnRlcmZhY2VzL21peGVyLmg+Ci0jaW5jbHVkZSA8Z3N0L2ludGVyZmFjZXMveG92ZXJsYXkuaD4K
ICNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8uaD4KICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVk
ZSA8bWF0aC5oPgpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4
IGY5NDg0ZDAuLjNjOWQwMzIgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1
cmUuYWMKQEAgLTc3Myw2ICs3NzMsNyBAQCBpZiB0ZXN0ICIkZW5hYmxlX3ZpZGVvIiA9ICJ5ZXMi
OyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICBbZ3N0cmVhbWVyLTAuMTAgPj0gJEdTVFJFQU1F
Ul9SRVFVSVJFRF9WRVJTSU9OCiAgICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXItYXBwLTAu
MTAKICAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1iYXNlLTAuMTAKKyAgICAgICAgICAg
ICAgICAgICAgIGdzdHJlYW1lci1pbnRlcmZhY2VzLTAuMTAKICAgICAgICAgICAgICAgICAgICAg
IGdzdHJlYW1lci1wYnV0aWxzLTAuMTAKICAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1w
bHVnaW5zLWJhc2UtMC4xMCA+PSAkR1NUUkVBTUVSX1BMVUdJTlNfQkFTRV9SRVFVSVJFRF9WRVJT
SU9OCiAgICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXItdmlkZW8tMC4xMF0pCi0tIAoxLjcu
MQ==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61149</attachid>
            <date>2010-07-10 04:29:35 -0700</date>
            <delta_ts>2010-07-16 01:33:22 -0700</delta_ts>
            <desc>gtk xoverlay support in GStreamerGWorld</desc>
            <filename>gtk-xoverlay-support-in-GStreamerGWorld.patch</filename>
            <type>text/plain</type>
            <size>12626</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSAzZGZkZTI3ZDlhNDk4YmM3MjliMWE0NGRjNWRmNGVhNmJlMWQ1ZTFmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBTYXQsIDEwIEp1bCAyMDEwIDEyOjU3OjM5ICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
Z3RrIHhvdmVybGF5IHN1cHBvcnQgaW4gR1N0cmVhbWVyR1dvcmxkCgotLS0KIENoYW5nZUxvZyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMCArCiBXZWJDb3Jl
L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjEgKysrCiAu
Li4vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5jcHAgICAgICAgICB8ICAxNzcg
KysrKysrKysrKysrKysrKysrKy0KIC4uLi9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyR1dvcmxkLmggIHwgICAyMiArKysKIC4uLi9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmNwcCAgICAgIHwgICAgMSAtCiBjb25maWd1cmUuYWMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogNiBmaWxlcyBjaGFuZ2VkLCAyMzAg
aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9D
aGFuZ2VMb2cKaW5kZXggYmQyOWMxOC4uZjQ0ZTU4ZiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisr
KyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEwLTA1LTI4ICBQaGlsaXBwZSBOb3Jt
YW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBbR1N0cmVhbWVyXSBHVEsgWE92ZXJsYXkgc3VwcG9ydCBpbiBH
U3RyZWFtZXJHV29ybGQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM5NDc0CisKKyAgICAgICAgKiBjb25maWd1cmUuYWM6IGdzdC1pbnRlcmZhY2VzIGxp
bmsgc3VwcG9ydCBuZWVkZWQgZm9yIHVzZSBvZgorICAgICAgICBHc3RYT3ZlcmxheSBpbnRlcmZh
Y2UuCisKIDIwMTAtMDctMDcgIFJhZmFlbCBBbnRvZ25vbGxpICA8YW50b2dub2xsaUBwcm9mdXNp
b24ubW9iaT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlNDdlZDQ1Li43YjBl
YzI5IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI0IEBACisyMDEwLTA1LTI4ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1h
bmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBbR1N0cmVhbWVyXSBHVEsgWE92ZXJsYXkgc3VwcG9ydCBpbiBHU3RyZWFtZXJHV29y
bGQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDc0
CisKKyAgICAgICAgR1N0cmVhbWVyR1dvcmxkIG5vdyBjYXRjaGVzIHN5bmNocm9ub3VzIG1lc3Nh
Z2VzIGNvbWluZyBmcm9tIHRoZQorICAgICAgICBzaW5rcyBhbmQgY3JlYXRlcyBhIEdUSyB3aW5k
b3cgd2hlcmUgdGhlIHZpZGVvIGNhbiBiZSBvdmVybGF5ZWQgaWYKKyAgICAgICAgZnVsbHNjcmVl
biBkaXNwbGF5IGlzIHJlcXVlc3RlZCB1c2luZyBlbnRlckZ1bGxzY3JlZW4uCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmdzdEdXb3JsZFN5bmNNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6R1N0cmVhbWVyR1dvcmxkOjpHU3RyZWFtZXJHV29ybGQpOgorICAgICAgICAoV2ViQ29y
ZTo6R1N0cmVhbWVyR1dvcmxkOjp+R1N0cmVhbWVyR1dvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6
OkdTdHJlYW1lckdXb3JsZDo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OkdT
dHJlYW1lckdXb3JsZDo6ZXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVh
bWVyR1dvcmxkOjpzZXRXaW5kb3dPdmVybGF5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisKIDIwMTAtMDct
MDkgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IExhc3psbyBHb21ib3MuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmNwcAppbmRleCBjNTAyMmY5Li5mZWYwZjVm
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFt
ZXJHV29ybGQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dT
dHJlYW1lckdXb3JsZC5jcHAKQEAgLTIxLDEyICsyMSwzMyBAQAogCiAjaW5jbHVkZSAiR1N0cmVh
bWVyR1dvcmxkLmgiCiAKLSNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCIK
KyNpbmNsdWRlICJHT3duUHRyR1N0cmVhbWVyLmgiCisKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+Cisj
aW5jbHVkZSA8Z3N0L2ludGVyZmFjZXMveG92ZXJsYXkuaD4KKworI2lmIFBMQVRGT1JNKEdUSykK
KyNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaWZkZWYgR0RLX1dJTkRPV0lOR19YMTEKKyNpbmNsdWRl
IDxnZGsvZ2RreC5oPiAvLyBmb3IgR0RLX1dJTkRPV19YSUQKKyNlbmRpZgorI2VuZGlmCiAKIHVz
aW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorZ2Jvb2xlYW4gZ3N0
R1dvcmxkU3luY01lc3NhZ2VDYWxsYmFjayhHc3RCdXMqIGJ1cywgR3N0TWVzc2FnZSogbWVzc2Fn
ZSwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBBU1NFUlQoR1NUX01FU1NBR0VfVFlQRShtZXNzYWdl
KSA9PSBHU1RfTUVTU0FHRV9FTEVNRU5UKTsKKworICAgIEdTdHJlYW1lckdXb3JsZCogZ3N0R1dv
cmxkID0gcmVpbnRlcnByZXRfY2FzdDxHU3RyZWFtZXJHV29ybGQqPihkYXRhKTsKKworICAgIGlm
IChnc3Rfc3RydWN0dXJlX2hhc19uYW1lKG1lc3NhZ2UtPnN0cnVjdHVyZSwgInByZXBhcmUteHdp
bmRvdy1pZCIpKQorICAgICAgICBnc3RHV29ybGQtPnNldFdpbmRvd092ZXJsYXkobWVzc2FnZSk7
CisgICAgcmV0dXJuIFRSVUU7Cit9CisKIFBhc3NSZWZQdHI8R1N0cmVhbWVyR1dvcmxkPiBHU3Ry
ZWFtZXJHV29ybGQ6OmNyZWF0ZUdXb3JsZChNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqIHBs
YXllcikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdTdHJlYW1lckdXb3JsZChwbGF5ZXIp
KTsKQEAgLTM0LDExICs1NSwxNjUgQEAgUGFzc1JlZlB0cjxHU3RyZWFtZXJHV29ybGQ+IEdTdHJl
YW1lckdXb3JsZDo6Y3JlYXRlR1dvcmxkKE1lZGlhUGxheWVyUHJpdmF0ZUdTdHIKIAogR1N0cmVh
bWVyR1dvcmxkOjpHU3RyZWFtZXJHV29ybGQoTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKiBw
bGF5ZXIpCiAgICAgOiBtX3BsYXllcihwbGF5ZXIpCisgICAgLCBtX3ZpZGVvV2luZG93SWQoMCkK
KyAgICAsIG1fZHluYW1pY1BhZE5hbWUoMCkKIHsKKyAgICAvLyBYT3ZlcmxheSBtZXNzYWdlcyBu
ZWVkIHRvIGJlIGhhbmRsZWQgc3luY2hyb25vdXNseS4KKyAgICBHc3RCdXMqIGJ1cyA9IGdzdF9w
aXBlbGluZV9nZXRfYnVzKEdTVF9QSVBFTElORShtX3BsYXllci0+cGlwZWxpbmUoKSkpOworICAg
IGdzdF9idXNfc2V0X3N5bmNfaGFuZGxlcihidXMsIGdzdF9idXNfc3luY19zaWduYWxfaGFuZGxl
ciwgdGhpcyk7CisgICAgZ19zaWduYWxfY29ubmVjdChidXMsICJzeW5jLW1lc3NhZ2U6OmVsZW1l
bnQiLCBHX0NBTExCQUNLKGdzdEdXb3JsZFN5bmNNZXNzYWdlQ2FsbGJhY2spLCB0aGlzKTsKKyAg
ICBnc3Rfb2JqZWN0X3VucmVmKGJ1cyk7CiB9CiAKIEdTdHJlYW1lckdXb3JsZDo6fkdTdHJlYW1l
ckdXb3JsZCgpCiB7CisgICAgZXhpdEZ1bGxzY3JlZW4oKTsKK30KKworZ3Vsb25nIEdTdHJlYW1l
ckdXb3JsZDo6ZW50ZXJGdWxsc2NyZWVuKCkKK3sKKyAgICBpZiAobV9keW5hbWljUGFkTmFtZSkK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoIW1fdmlkZW9XaW5kb3dJZCkgeworI2lmIFBM
QVRGT1JNKEdUSykKKyAgICAgICAgbV9mdWxsc2NyZWVuV2luZG93ID0gZ3RrX3dpbmRvd19uZXco
R1RLX1dJTkRPV19UT1BMRVZFTCk7CisgICAgICAgIGd0a193aWRnZXRfc2V0X2V2ZW50cyhtX2Z1
bGxzY3JlZW5XaW5kb3csIEdES19QT0lOVEVSX01PVElPTl9NQVNLIHwgR0RLX0tFWV9QUkVTU19N
QVNLIHwgR0RLX0ZPQ1VTX0NIQU5HRV9NQVNLKTsKKworICAgICAgICBtX3ZpZGVvV2luZG93ID0g
Z3RrX2RyYXdpbmdfYXJlYV9uZXcoKTsKKyAgICAgICAgZ3RrX3dpZGdldF9zZXRfZG91YmxlX2J1
ZmZlcmVkKG1fdmlkZW9XaW5kb3csIEZBTFNFKTsKKyAgICAgICAgZ3RrX2NvbnRhaW5lcl9hZGQo
R1RLX0NPTlRBSU5FUihtX2Z1bGxzY3JlZW5XaW5kb3cpLCBtX3ZpZGVvV2luZG93KTsKKworICAg
ICAgICBndGtfd2lkZ2V0X3Nob3dfYWxsKG1fZnVsbHNjcmVlbldpbmRvdyk7CisgICAgICAgIGd0
a193aWRnZXRfcmVhbGl6ZShtX2Z1bGxzY3JlZW5XaW5kb3cpOworICAgICAgICBndGtfd2lkZ2V0
X2hpZGVfYWxsKG1fZnVsbHNjcmVlbldpbmRvdyk7CisKKyNpZmRlZiBHREtfV0lORE9XSU5HX1gx
MQorICAgICAgICBnZGtfdGhyZWFkc19lbnRlcigpOworICAgICAgICBnZGtfZGlzcGxheV9zeW5j
KGdka19kaXNwbGF5X2dldF9kZWZhdWx0KCkpOworICAgICAgICBtX3ZpZGVvV2luZG93SWQgPSBH
REtfV0lORE9XX1hJRChndGtfd2lkZ2V0X2dldF93aW5kb3cobV9mdWxsc2NyZWVuV2luZG93KSk7
CisgICAgICAgIGdka190aHJlYWRzX2xlYXZlKCk7CisjZW5kaWYKKyNlbmRpZgorICAgIH0KKwor
ICAgIEdzdEVsZW1lbnQqIHBpcGVsaW5lID0gbV9wbGF5ZXItPnBpcGVsaW5lKCk7CisgICAgR3N0
RWxlbWVudCogcGxhdGZvcm1WaWRlb1NpbmsgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImF1
dG92aWRlb3NpbmsiLCAicGxhdGZvcm1WaWRlb1NpbmsiKTsKKyAgICBHc3RFbGVtZW50KiBjb2xv
cnNwYWNlID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJmZm1wZWdjb2xvcnNwYWNlIiwgImNv
bG9yc3BhY2UiKTsKKyAgICBHc3RFbGVtZW50KiBxdWV1ZSA9IGdzdF9lbGVtZW50X2ZhY3Rvcnlf
bWFrZSgicXVldWUiLCAicXVldWUiKTsKKyAgICBHc3RFbGVtZW50KiB2aWRlb1NjYWxlID0gZ3N0
X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJ2aWRlb3NjYWxlIiwgInZpZGVvU2NhbGUiKTsKKworICAg
IC8vIEdldCB2aWRlbyBzaW5rIGJpbiBhbmQgdGhlIHRlZSBpbnNpZGUuCisgICAgR093blB0cjxH
c3RFbGVtZW50PiB2aWRlb1Npbms7CisgICAgZ19vYmplY3RfZ2V0KHBpcGVsaW5lLCAidmlkZW8t
c2luayIsICZ2aWRlb1Npbmsub3V0UHRyKCksIE5VTEwpOworICAgIEdzdEVsZW1lbnQqIHRlZSA9
IGdzdF9iaW5fZ2V0X2J5X25hbWUoR1NUX0JJTih2aWRlb1NpbmsuZ2V0KCkpLCAidmlkZW9UZWUi
KTsKKworICAgIC8vIEFkZCBhbmQgbGluayBhIHF1ZXVlLCBmZm1wZWdjb2xvcnNwYWNlIGFuZCBz
aW5rIGluIHRoZSBiaW4uCisgICAgZ3N0X2Jpbl9hZGRfbWFueShHU1RfQklOKHZpZGVvU2luay5n
ZXQoKSksIHBsYXRmb3JtVmlkZW9TaW5rLCB2aWRlb1NjYWxlLCBjb2xvcnNwYWNlLCBxdWV1ZSwg
TlVMTCk7CisgICAgZ3N0X2VsZW1lbnRfbGlua19tYW55KHF1ZXVlLCBjb2xvcnNwYWNlLCB2aWRl
b1NjYWxlLCBwbGF0Zm9ybVZpZGVvU2luaywgTlVMTCk7CisKKyAgICAvLyBMaW5rIGEgbmV3IHNy
YyBwYWQgZnJvbSB0ZWUgdG8gcXVldWUuCisgICAgR3N0UGFkKiBzcmNQYWQgPSBnc3RfZWxlbWVu
dF9nZXRfcmVxdWVzdF9wYWQodGVlLCAic3JjJWQiKTsKKyAgICBHc3RQYWQqIHNpbmtQYWQgPSBn
c3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChxdWV1ZSwgInNpbmsiKTsKKyAgICBnc3RfcGFkX2xp
bmsoc3JjUGFkLCBzaW5rUGFkKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmKEdTVF9PQkpFQ1Qoc2lu
a1BhZCkpOworCisgICAgbV9keW5hbWljUGFkTmFtZSA9IGdzdF9wYWRfZ2V0X25hbWUoc3JjUGFk
KTsKKworICAgIC8vIFJvbGwgbmV3IGVsZW1lbnRzIHRvIHBpcGVsaW5lIHN0YXRlLgorICAgIGdz
dF9lbGVtZW50X3N5bmNfc3RhdGVfd2l0aF9wYXJlbnQocXVldWUpOworICAgIGdzdF9lbGVtZW50
X3N5bmNfc3RhdGVfd2l0aF9wYXJlbnQoY29sb3JzcGFjZSk7CisgICAgZ3N0X2VsZW1lbnRfc3lu
Y19zdGF0ZV93aXRoX3BhcmVudCh2aWRlb1NjYWxlKTsKKyAgICBnc3RfZWxlbWVudF9zeW5jX3N0
YXRlX3dpdGhfcGFyZW50KHBsYXRmb3JtVmlkZW9TaW5rKTsKKworICAgIGdzdF9vYmplY3RfdW5y
ZWYodGVlKTsKKworICAgIC8vIFF1ZXJ5IHRoZSBjdXJyZW50IG1lZGlhIHNlZ21lbnQgaW5mb3Jt
YXRpb25zIGFuZCBzZW5kIHRoZW0gdG93YXJkcworICAgIC8vIHRoZSBuZXcgdGVlIGJyYW5jaCBk
b3duc3RyZWFtLgorCisgICAgR3N0UXVlcnkqIHF1ZXJ5ID0gZ3N0X3F1ZXJ5X25ld19zZWdtZW50
KEdTVF9GT1JNQVRfVElNRSk7CisgICAgZ2Jvb2xlYW4gcXVlcnlSZXN1bHQgPSBnc3RfZWxlbWVu
dF9xdWVyeShwaXBlbGluZSwgcXVlcnkpOworCisgICAgLy8gU2VlIGh0dHBzOi8vYnVnemlsbGEu
Z25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD02MjA0OTAuCisjaWYgR1NUX0NIRUNLX1ZFUlNJT04o
MCwgMTAsIDMwKQorICAgIGlmICghcXVlcnlSZXN1bHQpIHsKKyAgICAgICAgZ3N0X3F1ZXJ5X3Vu
cmVmKHF1ZXJ5KTsKKyAgICAgICAgZ3N0X29iamVjdF91bnJlZihHU1RfT0JKRUNUKHNyY1BhZCkp
OworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxndWxvbmc+KG1fZnVsbHNjcmVlbldp
bmRvdyk7CisgICAgfQorI2VuZGlmCisKKyAgICBHc3RGb3JtYXQgZm9ybWF0OworICAgIGdpbnQ2
NCBwb3NpdGlvbjsKKyAgICBpZiAoIWdzdF9lbGVtZW50X3F1ZXJ5X3Bvc2l0aW9uKHBpcGVsaW5l
LCAmZm9ybWF0LCAmcG9zaXRpb24pKQorICAgICAgICBwb3NpdGlvbiA9IDA7CisKKyAgICBnZG91
YmxlIHJhdGU7CisgICAgZ2ludDY0IHN0YXJ0VmFsdWUsIHN0b3BWYWx1ZTsKKyAgICBnc3RfcXVl
cnlfcGFyc2Vfc2VnbWVudChxdWVyeSwgJnJhdGUsICZmb3JtYXQsICZzdGFydFZhbHVlLCAmc3Rv
cFZhbHVlKTsKKworICAgIEdzdEV2ZW50KiBldmVudCA9IGdzdF9ldmVudF9uZXdfbmV3X3NlZ21l
bnQoRkFMU0UsIHJhdGUsIGZvcm1hdCwgc3RhcnRWYWx1ZSwgc3RvcFZhbHVlLCBwb3NpdGlvbik7
CisgICAgZ3N0X3BhZF9wdXNoX2V2ZW50KHNyY1BhZCwgZXZlbnQpOworCisgICAgZ3N0X3F1ZXJ5
X3VucmVmKHF1ZXJ5KTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmKEdTVF9PQkpFQ1Qoc3JjUGFkKSk7
CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Z3Vsb25nPihtX2Z1bGxzY3JlZW5XaW5kb3cp
OworfQorCit2b2lkIEdTdHJlYW1lckdXb3JsZDo6ZXhpdEZ1bGxzY3JlZW4oKQoreworICAgIGlm
ICghbV9keW5hbWljUGFkTmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR3N0RWxlbWVudCog
cGlwZWxpbmUgPSBtX3BsYXllci0+cGlwZWxpbmUoKTsKKworICAgIC8vIEdldCB2aWRlbyBzaW5r
IGJpbiBhbmQgdGhlIGVsZW1lbnRzIHRvIHJlbW92ZS4KKyAgICBHT3duUHRyPEdzdEVsZW1lbnQ+
IHZpZGVvU2luazsKKyAgICBnX29iamVjdF9nZXQocGlwZWxpbmUsICJ2aWRlby1zaW5rIiwgJnZp
ZGVvU2luay5vdXRQdHIoKSwgTlVMTCk7CisgICAgR3N0RWxlbWVudCogdGVlID0gZ3N0X2Jpbl9n
ZXRfYnlfbmFtZShHU1RfQklOKHZpZGVvU2luay5nZXQoKSksICJ2aWRlb1RlZSIpOworICAgIEdz
dEVsZW1lbnQqIHBsYXRmb3JtVmlkZW9TaW5rID0gZ3N0X2Jpbl9nZXRfYnlfbmFtZShHU1RfQklO
KHZpZGVvU2luay5nZXQoKSksICJwbGF0Zm9ybVZpZGVvU2luayIpOworICAgIEdzdEVsZW1lbnQq
IHF1ZXVlID0gZ3N0X2Jpbl9nZXRfYnlfbmFtZShHU1RfQklOKHZpZGVvU2luay5nZXQoKSksICJx
dWV1ZSIpOworICAgIEdzdEVsZW1lbnQqIGNvbG9yc3BhY2UgPSBnc3RfYmluX2dldF9ieV9uYW1l
KEdTVF9CSU4odmlkZW9TaW5rLmdldCgpKSwgImNvbG9yc3BhY2UiKTsKKyAgICBHc3RFbGVtZW50
KiB2aWRlb1NjYWxlID0gZ3N0X2Jpbl9nZXRfYnlfbmFtZShHU1RfQklOKHZpZGVvU2luay5nZXQo
KSksICJ2aWRlb1NjYWxlIik7CisKKyAgICAvLyBHZXQgcGFkcyB0byB1bmxpbmsgYW5kIHJlbW92
ZS4KKyAgICBHc3RQYWQqIHNyY1BhZCA9IGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKHRlZSwg
bV9keW5hbWljUGFkTmFtZSk7CisgICAgR3N0UGFkKiBzaW5rUGFkID0gZ3N0X2VsZW1lbnRfZ2V0
X3N0YXRpY19wYWQocXVldWUsICJzaW5rIik7CisKKyAgICAvLyBVbmxpbmsgYW5kIHJlbGVhc2Ug
cmVxdWVzdCBwYWQuCisgICAgZ3N0X3BhZF91bmxpbmsoc3JjUGFkLCBzaW5rUGFkKTsKKyAgICBn
c3RfZWxlbWVudF9yZWxlYXNlX3JlcXVlc3RfcGFkKHRlZSwgc3JjUGFkKTsKKyAgICBnc3Rfb2Jq
ZWN0X3VucmVmKEdTVF9PQkpFQ1Qoc3JjUGFkKSk7CisgICAgZ3N0X29iamVjdF91bnJlZihHU1Rf
T0JKRUNUKHNpbmtQYWQpKTsKKworICAgIC8vIFVubGluaywgcmVtb3ZlIGFuZCBjbGVhbnVwIHF1
ZXVlLCBmZm1wZWdjb2xvcnNwYWNlLCB2aWRlb1NjYWxlIGFuZCBzaW5rLgorICAgIGdzdF9lbGVt
ZW50X3VubGlua19tYW55KHF1ZXVlLCBjb2xvcnNwYWNlLCB2aWRlb1NjYWxlLCBwbGF0Zm9ybVZp
ZGVvU2luaywgTlVMTCk7CisgICAgZ3N0X2Jpbl9yZW1vdmVfbWFueShHU1RfQklOKHZpZGVvU2lu
ay5nZXQoKSksIHF1ZXVlLCBjb2xvcnNwYWNlLCB2aWRlb1NjYWxlLCBwbGF0Zm9ybVZpZGVvU2lu
aywgTlVMTCk7CisgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKHF1ZXVlLCBHU1RfU1RBVEVfTlVM
TCk7CisgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKGNvbG9yc3BhY2UsIEdTVF9TVEFURV9OVUxM
KTsKKyAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUodmlkZW9TY2FsZSwgR1NUX1NUQVRFX05VTEwp
OworICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShwbGF0Zm9ybVZpZGVvU2luaywgR1NUX1NUQVRF
X05VTEwpOworICAgIGdzdF9vYmplY3RfdW5yZWYocXVldWUpOworICAgIGdzdF9vYmplY3RfdW5y
ZWYoY29sb3JzcGFjZSk7CisgICAgZ3N0X29iamVjdF91bnJlZih2aWRlb1NjYWxlKTsKKyAgICBn
c3Rfb2JqZWN0X3VucmVmKHBsYXRmb3JtVmlkZW9TaW5rKTsKKworICAgIGdzdF9vYmplY3RfdW5y
ZWYodGVlKTsKKyAgICBtX2R5bmFtaWNQYWROYW1lID0gMDsKK30KKwordm9pZCBHU3RyZWFtZXJH
V29ybGQ6OnNldFdpbmRvd092ZXJsYXkoR3N0TWVzc2FnZSogbWVzc2FnZSkKK3sKKyAgICBHc3RP
YmplY3QqIHNpbmsgPSBHU1RfTUVTU0FHRV9TUkMobWVzc2FnZSk7CisKKyAgICBpZiAoIUdTVF9J
U19YX09WRVJMQVkoc2luaykpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChnX29iamVjdF9j
bGFzc19maW5kX3Byb3BlcnR5KEdfT0JKRUNUX0dFVF9DTEFTUyhzaW5rKSwgImZvcmNlLWFzcGVj
dC1yYXRpbyIpKQorICAgICAgICBnX29iamVjdF9zZXQoc2luaywgImZvcmNlLWFzcGVjdC1yYXRp
byIsIFRSVUUsIE5VTEwpOworCisgICAgaWYgKG1fdmlkZW9XaW5kb3dJZCkKKyAgICAgICAgZ3N0
X3hfb3ZlcmxheV9zZXRfeHdpbmRvd19pZChHU1RfWF9PVkVSTEFZKHNpbmspLCBtX3ZpZGVvV2lu
ZG93SWQpOwogfQogCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJHV29ybGQuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5oCmluZGV4IGI2MjYyOTguLmE2NjhmZTcgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5o
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3Js
ZC5oCkBAIC0yMywyNSArMjMsNDcgQEAKIAogI2lmIEVOQUJMRShWSURFTykKIAorI2luY2x1ZGUg
Ik1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIgogI2luY2x1ZGUgIlJlZkNvdW50ZWQuaCIK
ICNpbmNsdWRlICJSZWZQdHIuaCIKICNpbmNsdWRlIDxnbGliLmg+CiAKK3R5cGVkZWYgc3RydWN0
IF9Hc3RFbGVtZW50IEdzdEVsZW1lbnQ7Cit0eXBlZGVmIHN0cnVjdCBfR3N0TWVzc2FnZSBHc3RN
ZXNzYWdlOwordHlwZWRlZiBzdHJ1Y3QgX0dzdEJ1cyBHc3RCdXM7Cit0eXBlZGVmIHN0cnVjdCBf
R3N0QmluIEdzdEJpbjsKK3R5cGVkZWYgc3RydWN0IF9HdGtXaWRnZXQgR3RrV2lkZ2V0OwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjsK
IAorZ2Jvb2xlYW4gZ3N0R1dvcmxkU3luY01lc3NhZ2VDYWxsYmFjayhHc3RCdXMqIGJ1cywgR3N0
TWVzc2FnZSogbWVzc2FnZSwgZ3BvaW50ZXIgZGF0YSk7CiAKIGNsYXNzIEdTdHJlYW1lckdXb3Js
ZCA6IHB1YmxpYyBSZWZDb3VudGVkPEdTdHJlYW1lckdXb3JsZD4geworICAgIGZyaWVuZCBnYm9v
bGVhbiBnc3RHV29ybGRTeW5jTWVzc2FnZUNhbGxiYWNrKEdzdEJ1cyogYnVzLCBHc3RNZXNzYWdl
KiBtZXNzYWdlLCBncG9pbnRlciBkYXRhKTsKIAogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEdTdHJlYW1lckdXb3JsZD4gY3JlYXRlR1dvcmxkKE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lciopOwogICAgIH5HU3RyZWFtZXJHV29ybGQoKTsKIAorICAgIEdzdEVsZW1lbnQqIHBpcGVs
aW5lKCkgY29uc3QgeyByZXR1cm4gbV9wbGF5ZXItPnBpcGVsaW5lKCk7IH0KKworICAgIC8vIFJl
dHVybnMgdGhlIGZ1bGwtc2NyZWVuIHdpbmRvdyBjcmVhdGVkCisgICAgZ3Vsb25nIGVudGVyRnVs
bHNjcmVlbigpOworICAgIHZvaWQgZXhpdEZ1bGxzY3JlZW4oKTsKKworICAgIHZvaWQgc2V0V2lu
ZG93T3ZlcmxheShHc3RNZXNzYWdlKiBtZXNzYWdlKTsKKwogcHJpdmF0ZToKICAgICBHU3RyZWFt
ZXJHV29ybGQoTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKik7CiAgICAgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyKiBtX3BsYXllcjsKKyNpZiBQTEFURk9STShHVEspCisgICAgR3RrV2lk
Z2V0KiBtX3ZpZGVvV2luZG93OworICAgIEd0a1dpZGdldCogbV9mdWxsc2NyZWVuV2luZG93Owor
I2VuZGlmCisgICAgZ3Vsb25nIG1fdmlkZW9XaW5kb3dJZDsKKyAgICBnY2hhciogbV9keW5hbWlj
UGFkTmFtZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmlu
ZGV4IDc4NjljNDUuLjAwMDc0OWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcApAQCAtNTQsNyArNTQsNiBAQAogI2luY2x1ZGUgPEdPd25QdHIuaD4KICNpbmNsdWRlIDxn
c3QvZ3N0Lmg+CiAjaW5jbHVkZSA8Z3N0L2ludGVyZmFjZXMvbWl4ZXIuaD4KLSNpbmNsdWRlIDxn
c3QvaW50ZXJmYWNlcy94b3ZlcmxheS5oPgogI2luY2x1ZGUgPGdzdC92aWRlby92aWRlby5oPgog
I2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDxtYXRoLmg+CmRpZmYgLS1naXQgYS9jb25maWd1
cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggMjQzZmMwMi4uMGFlNWRmMyAxMDA2NDQKLS0tIGEv
Y29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtODI2LDYgKzgyNiw3IEBAIGlmIHRl
c3QgIiRlbmFibGVfdmlkZW8iID0gInllcyI7IHRoZW4KICAgICAgICAgICAgICAgICAgICAgIFtn
c3RyZWFtZXItMC4xMCA+PSAkR1NUUkVBTUVSX1JFUVVJUkVEX1ZFUlNJT04KICAgICAgICAgICAg
ICAgICAgICAgIGdzdHJlYW1lci1hcHAtMC4xMAogICAgICAgICAgICAgICAgICAgICAgZ3N0cmVh
bWVyLWJhc2UtMC4xMAorICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLWludGVyZmFjZXMt
MC4xMAogICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLXBidXRpbHMtMC4xMAogICAgICAg
ICAgICAgICAgICAgICAgZ3N0cmVhbWVyLXBsdWdpbnMtYmFzZS0wLjEwID49ICRHU1RSRUFNRVJf
UExVR0lOU19CQVNFX1JFUVVJUkVEX1ZFUlNJT04KICAgICAgICAgICAgICAgICAgICAgIGdzdHJl
YW1lci12aWRlby0wLjEwXSkKLS0gCjEuNi4zLjM=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61150</attachid>
            <date>2010-07-10 04:29:55 -0700</date>
            <delta_ts>2010-07-10 04:38:39 -0700</delta_ts>
            <desc>fullscreen video support in WebKit/gtk</desc>
            <filename>fullscreen-video-support-in-WebKitgtk.patch</filename>
            <type>text/plain</type>
            <size>33192</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBmY2Q4MGVkMjRmMWExNTc1MDlhMzc5N2FkMWMwNmVlN2U4MzliY2EwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUaHUsIDEzIE1heSAyMDEwIDE1OjQ1OjA1ICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
ZnVsbHNjcmVlbiB2aWRlbyBzdXBwb3J0IGluIFdlYktpdC9ndGsKCi0tLQogQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEwICsKIEdOVW1ha2Vm
aWxlLmFtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiBXZWJL
aXQvZ3RrL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNzMgKysr
CiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAgICAgICB8ICAg
MjUgKwogV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaCAgICAgICAg
fCAgICA2ICsKIC4uLi9XZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNw
cCAgIHwgIDU4MiArKysrKysrKysrKysrKysrKysrKwogLi4uL2d0ay9XZWJDb3JlU3VwcG9ydC9G
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmggfCAgMTAwICsrKysKIFdlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHByaXZhdGUuY3BwICAgICAgICAgICAgICAgIHwgICAzNiArKwogV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0cHJpdmF0ZS5oICAgICAgICAgICAgICAgICAgfCAgICA3ICsKIDkgZmlsZXMg
Y2hhbmdlZCwgODQxIGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAx
MDA2NDQgV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
LmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlci5oCgpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9n
CmluZGV4IGY0NGU1OGYuLjYxN2ZhODcgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wNy0xMCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBu
b3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW0dTdHJlYW1lcl0gR1RLIFhPdmVybGF5IHN1cHBvcnQgaW4gR1N0cmVhbWVy
R1dvcmxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
OTQ3NAorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IEFkZGVkIG5ldyBGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyIGZpbGVzIGluIHRoZQorICAgICAgICBidWlsZC4KKwogMjAxMC0wNS0yOCAg
UGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCmRpZmYgLS1naXQgYS9HTlVtYWtlZmlsZS5hbSBiL0dOVW1h
a2VmaWxlLmFtCmluZGV4IGNjYmUyOGYuLjQzNzg5NzkgMTAwNjQ0Ci0tLSBhL0dOVW1ha2VmaWxl
LmFtCisrKyBiL0dOVW1ha2VmaWxlLmFtCkBAIC0zNzcsNiArMzc3LDggQEAgd2Via2l0Z3RrX3Nv
dXJjZXMgKz0gXAogCVdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmgg
XAogCVdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwIFwK
IAlXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmggXAorCVdl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAgXAor
CVdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oIFwK
IAlXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5jcHAgXAogCVdl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmggXAogCVdlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvUGFzdGVib2FyZEhlbHBlckd0ay5jcHAgXApkaWZmIC0tZ2l0IGEv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCBmNDZlZGIx
Li44MDFiZTFhIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDEwLTA3LTEwICBQaGlsaXBwZSBOb3Jt
YW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBbR1N0cmVhbWVyXSBHVEsgWE92ZXJsYXkgc3VwcG9ydCBpbiBH
U3RyZWFtZXJHV29ybGQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM5NDc0CisKKyAgICAgICAgTmV3IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIgb2Jq
ZWN0LCBwcml2YXRlIGluIHRoZSB3ZWJ2aWV3LiBJdAorICAgICAgICBpcyBjcmVhdGVkIHdoZW4g
dGhlIHVzZXIgcHJlc3NlcyB0aGUgZnVsbHNjcmVlbiBidXR0b24gb2YgdGhlCisgICAgICAgIHZp
ZGVvIGNvbnRyb2xzLiBWaWRlbyBpcyBkaXNwbGF5ZWQgaW4gZnVsbHNjcmVlbiwgY29udHJvbHMg
YXJlCisgICAgICAgIGRpc3BsYXllZCB3aGVuIHRoZSB1c2VyIG1vdmVzIHRoZSBtb3VzZSBhbmQg
d2hlbiB0aGUgdmlkZW8gaXMKKyAgICAgICAgcGF1c2VkLiBUaGVyZSdzIGFsc28gYmFzaWMga2V5
Ym9hcmQgc2hvcnRjdXRzIHN1cHBvcnQ6IEYvZiB0bworICAgICAgICBsZWF2ZSBmdWxsc2NyZWVu
LCBzcGFjZSB0byB0b2dnbGUgcGxheS9wYXVzZSBhbmQgdXAvZG93biB0bworICAgICAgICBjb250
cm9sIHZvbHVtZS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6c3VwcG9ydHNGdWxsc2NyZWVuRm9y
Tm9kZSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6ZW50ZXJGdWxsc2NyZWVuRm9y
Tm9kZSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6ZXhpdEZ1bGxzY3JlZW5Gb3JO
b2RlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaDoKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcDogQWRkZWQu
CisgICAgICAgIChoaWRlSHVkQ2FsbGJhY2spOgorICAgICAgICAob25GdWxsc2NyZWVuR3RrTW90
aW9uTm90aWZ5RXZlbnQpOgorICAgICAgICAob25GdWxsc2NyZWVuR3RrQWN0aXZlTm90aWZpY2F0
aW9uKToKKyAgICAgICAgKG9uRnVsbHNjcmVlbkd0a0NvbmZpZ3VyZUV2ZW50KToKKyAgICAgICAg
KG9uRnVsbHNjcmVlbkd0a0Rlc3Ryb3kpOgorICAgICAgICAodG9nZ2xlUGxheVBhdXNlQWN0aXZh
dGVkKToKKyAgICAgICAgKGV4aXRGdWxsc2NyZWVuQWN0aXZhdGVkKToKKyAgICAgICAgKHByb2dy
ZXNzQmFyVXBkYXRlQ2FsbGJhY2spOgorICAgICAgICAodGltZVNjYWxlQnV0dG9uUHJlc3NlZCk6
CisgICAgICAgICh0aW1lU2NhbGVCdXR0b25SZWxlYXNlZCk6CisgICAgICAgICh0aW1lU2NhbGVW
YWx1ZUNoYW5nZWQpOgorICAgICAgICAodm9sdW1lVmFsdWVDaGFuZ2VkKToKKyAgICAgICAgKHBs
YXllclZvbHVtZUNoYW5nZWRDYWxsYmFjayk6CisgICAgICAgIChwbGF5ZXJNdXRlQ2hhbmdlZENh
bGxiYWNrKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXIpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6fkZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlcjo6c2V0TWVkaWFFbGVtZW50KToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXI6Omd0a0NvbmZpZ3VyZSk6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpz
aG93SHVkKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmhpZGVIdWQpOgor
ICAgICAgICAob25GdWxsc2NyZWVuR3RrS2V5UHJlc3NFdmVudCk6CisgICAgICAgIChGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyOjplbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAoRnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlcjo6dXBkYXRlSHVkUG9zaXRpb24pOgorICAgICAgICAoRnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlcjo6ZXhpdE9uVXNlclJlcXVlc3QpOgorICAgICAgICAoRnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlcjo6ZXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlcjo6Y2FuUGxheSk6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyOjpwbGF5KToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnBhdXNlKToK
KyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnBsYXlTdGF0ZUNoYW5nZWQpOgor
ICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dG9nZ2xlUGxheSk6CisgICAgICAg
IChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp2b2x1bWUpOgorICAgICAgICAoRnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlcjo6bXV0ZWQpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlcjo6c2V0Vm9sdW1lKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnZv
bHVtZUNoYW5nZWQpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6bXV0ZUNo
YW5nZWQpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6Y3VycmVudFRpbWUp
OgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6c2V0Q3VycmVudFRpbWUpOgor
ICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZHVyYXRpb24pOgorICAgICAgICAo
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6cGVyY2VudExvYWRlZCk6CisgICAgICAgIChGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyOjpiZWdpblNlZWspOgorICAgICAgICAoRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlcjo6ZG9TZWVrKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXI6OmVuZFNlZWspOgorICAgICAgICAodGltZVRvU3RyaW5nKToKKyAgICAgICAgKEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI6OnVwZGF0ZUh1ZFByb2dyZXNzQmFyKToKKyAgICAgICAgKEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXI6OmNyZWF0ZUh1ZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oOiBBZGRlZC4KKyAgICAgICAgKEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI6Om1lZGlhRWxlbWVudCk6CisgICAgICAgICogd2Via2l0L3dlYmtp
dHByaXZhdGUuY3BwOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2VudGVyX2Z1bGxzY3JlZW4p
OgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2V4aXRfZnVsbHNjcmVlbik6CisgICAgICAgICog
d2Via2l0L3dlYmtpdHByaXZhdGUuaDoKKwogMjAxMC0wNy0wNyAgU2FtIFdlaW5pZyAgPHNhbUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KZGlmZiAt
LWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcCBiL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAppbmRleCBiYjQ2OWM1
Li44MWM4NWJiIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEd0ay5jcHAKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRH
dGsuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVk
ZSAiRnJhbWVMb2FkUmVxdWVzdC5oIgogI2luY2x1ZGUgIkd0a1ZlcnNpb25pbmcuaCIKKyNpbmNs
dWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCkBAIC02MTcsNCArNjE4LDI4
IEBAIHZvaWQgQ2hyb21lQ2xpZW50OjpjYW5jZWxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWUqIGZyCiAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHdl
YlZpZXcsICJnZW9sb2NhdGlvbi1wb2xpY3ktZGVjaXNpb24tY2FuY2VsbGVkIiwgd2ViRnJhbWUp
OwogfQogCisjaWYgRU5BQkxFKFZJREVPKQorCitib29sIENocm9tZUNsaWVudDo6c3VwcG9ydHNG
dWxsc2NyZWVuRm9yTm9kZShjb25zdCBOb2RlKiBub2RlKQoreworICAgIHJldHVybiBub2RlLT5o
YXNUYWdOYW1lKEhUTUxOYW1lczo6dmlkZW9UYWcpOworfQorCit2b2lkIENocm9tZUNsaWVudDo6
ZW50ZXJGdWxsc2NyZWVuRm9yTm9kZShOb2RlKiBub2RlKQoreworICAgIFdlYkNvcmU6OkZyYW1l
KiBmcmFtZSA9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCk7CisgICAgV2ViS2l0V2ViRnJhbWUq
IHdlYkZyYW1lID0ga2l0KGZyYW1lKTsKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gZ2V0
Vmlld0Zyb21GcmFtZSh3ZWJGcmFtZSk7CisgICAgd2Via2l0X3dlYl92aWV3X2VudGVyX2Z1bGxz
Y3JlZW4od2ViVmlldywgbm9kZSk7Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50OjpleGl0RnVsbHNj
cmVlbkZvck5vZGUoTm9kZSogbm9kZSkKK3sKKyAgICBXZWJDb3JlOjpGcmFtZSogZnJhbWUgPSBu
b2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpOworICAgIFdlYktpdFdlYkZyYW1lKiB3ZWJGcmFtZSA9
IGtpdChmcmFtZSk7CisgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IGdldFZpZXdGcm9tRnJh
bWUod2ViRnJhbWUpOworICAgIHdlYmtpdF93ZWJfdmlld19leGl0X2Z1bGxzY3JlZW4od2ViVmll
dyk7Cit9CisjZW5kaWYKKwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRHdGsuaCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50R3RrLmgKaW5kZXggNDZkMDE1ZS4uYjBmZDQwOSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCkBAIC0xMjIsNiArMTIyLDEyIEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lv
bkZvckZyYW1lKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6R2VvbG9jYXRpb24qKTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGNhbmNlbEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RGb3JGcmFt
ZShXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6Okdlb2xvY2F0aW9uKik7CiAKKyNpZiBFTkFCTEUo
VklERU8pCisgICAgICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0Z1bGxzY3JlZW5Gb3JOb2RlKGNv
bnN0IFdlYkNvcmU6Ok5vZGUqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVl
bkZvck5vZGUoV2ViQ29yZTo6Tm9kZSopOworICAgICAgICB2aXJ0dWFsIHZvaWQgZXhpdEZ1bGxz
Y3JlZW5Gb3JOb2RlKFdlYkNvcmU6Ok5vZGUqKTsKKyNlbmRpZgorCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgV2ViS2l0V2ViVmlldyogbV93ZWJWaWV3OwogICAgICAgICBXZWJDb3JlOjpLVVJMIG1f
aG92ZXJlZExpbmtVUkw7CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Z1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9G
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5iNGZjODliCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcApAQCAtMCwwICsxLDU4MiBAQAorLyoK
KyAqICBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTAorICoKKyAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU8pCisKKyNpbmNsdWRlICJGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyLmgiCisKKyNpbmNsdWRlICJHU3RyZWFtZXJHV29ybGQuaCIKKyNpbmNsdWRl
ICJNZWRpYVBsYXllci5oIgorCisjaW5jbHVkZSA8Z2RrL2dkay5oPgorI2luY2x1ZGUgPGdkay9n
ZGtrZXlzeW1zLmg+CisjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNsdWRlIDxnc3Qv
Z3N0Lmg+CisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKKyNkZWZpbmUgSFVEX0FVVE9fSElERV9JTlRFUlZBTCAz
MDAwIC8vIDMgc2Vjb25kcworI2RlZmluZSBQUk9HUkVTU19CQVJfVVBEQVRFX0lOVEVSVkFMIDE1
MCAvLyAxNTBtcworI2RlZmluZSBWT0xVTUVfVVBfT0ZGU0VUIDAuMDUgLy8gNSUKKyNkZWZpbmUg
Vk9MVU1FX0RPV05fT0ZGU0VUIDAuMDUgLy8gNSUKKworc3RhdGljIGdib29sZWFuIGhpZGVIdWRD
YWxsYmFjayhncG9pbnRlciBkYXRhKQoreworICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIq
IGNvbnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0PEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIq
PihkYXRhKTsKKyAgICBjb250cm9sbGVyLT5oaWRlSHVkKCk7CisgICAgcmV0dXJuIEZBTFNFOwor
fQorCitzdGF0aWMgZ2Jvb2xlYW4gb25GdWxsc2NyZWVuR3RrTW90aW9uTm90aWZ5RXZlbnQoR3Rr
V2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50TW90aW9uKiBldmVudCwgZ3BvaW50ZXIgZGF0YSkKK3sK
KyAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBjb250cm9sbGVyID0gcmVpbnRlcnByZXRf
Y2FzdDxGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKj4oZGF0YSk7CisgICAgY29udHJvbGxlci0+
c2hvd0h1ZCh0cnVlKTsKKyAgICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIHZvaWQgb25GdWxs
c2NyZWVuR3RrQWN0aXZlTm90aWZpY2F0aW9uKEd0a1dpZGdldCogd2lkZ2V0LCBHUGFyYW1TcGVj
KiBwcm9wZXJ0eSwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyKiBjb250cm9sbGVyID0gcmVpbnRlcnByZXRfY2FzdDxGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyKj4oZGF0YSk7CisgICAgaWYgKCFndGtfd2luZG93X2lzX2FjdGl2ZShHVEtfV0lORE9XKHdp
ZGdldCkpKQorICAgICAgICBjb250cm9sbGVyLT5oaWRlSHVkKCk7Cit9CisKK3N0YXRpYyBnYm9v
bGVhbiBvbkZ1bGxzY3JlZW5HdGtDb25maWd1cmVFdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2Rr
RXZlbnRDb25maWd1cmUqIGV2ZW50LCBncG9pbnRlciBkYXRhKQoreworICAgIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0PEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXIqPihkYXRhKTsKKyAgICBjb250cm9sbGVyLT5ndGtDb25maWd1cmUoZXZl
bnQpOworICAgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgdm9pZCBvbkZ1bGxzY3JlZW5HdGtE
ZXN0cm95KEd0a1dpZGdldCogd2lkZ2V0LCBncG9pbnRlciBkYXRhKQoreworICAgIEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0PEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXIqPihkYXRhKTsKKyAgICBjb250cm9sbGVyLT5leGl0RnVsbHNjcmVl
bigpOworfQorCitzdGF0aWMgdm9pZCB0b2dnbGVQbGF5UGF1c2VBY3RpdmF0ZWQoR3RrQWN0aW9u
KiBhY3Rpb24sIGdwb2ludGVyIGRhdGEpCit7CisgICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ciogY29udHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
cio+KGRhdGEpOworICAgIGNvbnRyb2xsZXItPnRvZ2dsZVBsYXkoKTsKK30KKworc3RhdGljIHZv
aWQgZXhpdEZ1bGxzY3JlZW5BY3RpdmF0ZWQoR3RrQWN0aW9uKiBhY3Rpb24sIGdwb2ludGVyIGRh
dGEpCit7CisgICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogY29udHJvbGxlciA9IHJlaW50
ZXJwcmV0X2Nhc3Q8RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcio+KGRhdGEpOworICAgIGNvbnRy
b2xsZXItPmV4aXRPblVzZXJSZXF1ZXN0KCk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiBwcm9ncmVz
c0JhclVwZGF0ZUNhbGxiYWNrKGdwb2ludGVyIGRhdGEpCit7CisgICAgRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlciogY29udHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcio+KGRhdGEpOworICAgIHJldHVybiBjb250cm9sbGVyLT51cGRhdGVIdWRQcm9n
cmVzc0JhcigpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gdGltZVNjYWxlQnV0dG9uUHJlc3NlZChH
dGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRCdXR0b24qIGV2ZW50LCBncG9pbnRlciBkYXRhKQor
eworICAgIGlmIChldmVudC0+dHlwZSAhPSBHREtfQlVUVE9OX1BSRVNTKQorICAgICAgICByZXR1
cm4gRkFMU0U7CisKKyAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBjb250cm9sbGVyID0g
cmVpbnRlcnByZXRfY2FzdDxGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKj4oZGF0YSk7CisgICAg
Y29udHJvbGxlci0+YmVnaW5TZWVrKCk7CisgICAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMg
Z2Jvb2xlYW4gdGltZVNjYWxlQnV0dG9uUmVsZWFzZWQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2
ZW50QnV0dG9uKiBldmVudCwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyKiBjb250cm9sbGVyID0gcmVpbnRlcnByZXRfY2FzdDxGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyKj4oZGF0YSk7CisgICAgY29udHJvbGxlci0+ZW5kU2VlaygpOworICAgIHJldHVy
biBGQUxTRTsKK30KKworc3RhdGljIHZvaWQgdGltZVNjYWxlVmFsdWVDaGFuZ2VkKEd0a1dpZGdl
dCogd2lkZ2V0LCBncG9pbnRlciBkYXRhKQoreworICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXIqIGNvbnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0PEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXIqPihkYXRhKTsKKyAgICBjb250cm9sbGVyLT5kb1NlZWsoKTsKK30KKworc3RhdGljIHZvaWQg
dm9sdW1lVmFsdWVDaGFuZ2VkKEd0a1NjYWxlQnV0dG9uICpidXR0b24sIGdkb3VibGUgdmFsdWUs
IGdwb2ludGVyIGRhdGEpCit7CisgICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogY29udHJv
bGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcio+KGRhdGEp
OworICAgIGNvbnRyb2xsZXItPnNldFZvbHVtZShzdGF0aWNfY2FzdDxmbG9hdD4odmFsdWUpKTsK
K30KKwordm9pZCBwbGF5ZXJWb2x1bWVDaGFuZ2VkQ2FsbGJhY2soR09iamVjdCAqZWxlbWVudCwg
R1BhcmFtU3BlYyAqcHNwZWMsIGdwb2ludGVyIGRhdGEpCit7CisgICAgRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlciogY29udHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcio+KGRhdGEpOworICAgIGNvbnRyb2xsZXItPnZvbHVtZUNoYW5nZWQoKTsKK30K
Kwordm9pZCBwbGF5ZXJNdXRlQ2hhbmdlZENhbGxiYWNrKEdPYmplY3QgKmVsZW1lbnQsIEdQYXJh
bVNwZWMgKnBzcGVjLCBncG9pbnRlciBkYXRhKQoreworICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXIqIGNvbnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0PEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXIqPihkYXRhKTsKKyAgICBjb250cm9sbGVyLT5tdXRlQ2hhbmdlZCgpOworfQorCitGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKCkKKyAgICA6
IG1faHVkVGltZW91dElkKDApCisgICAgLCBtX3Byb2dyZXNzQmFyVXBkYXRlSWQoMCkKKyAgICAs
IG1fc2Vla0xvY2soZmFsc2UpCisgICAgLCBtX3dpbmRvdygwKQorICAgICwgbV9odWRXaW5kb3co
MCkKK3sKK30KKworRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6fkZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXIoKQoreworICAgIGV4aXRGdWxsc2NyZWVuKCk7Cit9CisKK3ZvaWQgRnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlcjo6c2V0TWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlh
RWxlbWVudCkKK3sKKyAgICBpZiAobWVkaWFFbGVtZW50ID09IG1fbWVkaWFFbGVtZW50KQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX21lZGlhRWxlbWVudCA9IG1lZGlhRWxlbWVudDsKKyAgICBp
ZiAoIW1fbWVkaWFFbGVtZW50KSB7CisgICAgICAgIC8vIENhbid0IGRvIGZ1bGwtc2NyZWVuLCBq
dXN0IGdldCBvdXQKKyAgICAgICAgZXhpdEZ1bGxzY3JlZW4oKTsKKyAgICB9Cit9CisKK3ZvaWQg
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6Z3RrQ29uZmlndXJlKEdka0V2ZW50Q29uZmlndXJl
KiBldmVudCkKK3sKKyAgICB1cGRhdGVIdWRQb3NpdGlvbigpOworfQorCit2b2lkIEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI6OnNob3dIdWQoYm9vbCBhdXRvSGlkZSkKK3sKKyAgICBpZiAoIW1f
aHVkV2luZG93KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWd0a193aW5kb3dfaXNfYWN0
aXZlKEdUS19XSU5ET1cobV93aW5kb3cpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1f
aHVkVGltZW91dElkKSB7CisgICAgICAgIGdfc291cmNlX3JlbW92ZShtX2h1ZFRpbWVvdXRJZCk7
CisgICAgICAgIG1faHVkVGltZW91dElkID0gMDsKKyAgICB9CisKKyAgICAvLyBTaG93IHRoZSBj
dXJzb3IuCisgICAgR2RrV2luZG93KiB3aW5kb3cgPSBndGtfd2lkZ2V0X2dldF93aW5kb3cobV93
aW5kb3cpOworICAgIGdka193aW5kb3dfc2V0X2N1cnNvcih3aW5kb3csIG1fY3Vyc29yKTsKKwor
ICAgIC8vIFVwZGF0ZSB0aGUgcHJvZ3Jlc3MgYmFyIGltbWVkaWF0ZWx5IGJlZm9yZSBzaG93aW5n
IHRoZSB3aW5kb3cuCisgICAgdXBkYXRlSHVkUHJvZ3Jlc3NCYXIoKTsKKyAgICBndGtfd2lkZ2V0
X3Nob3dfYWxsKG1faHVkV2luZG93KTsKKyAgICB1cGRhdGVIdWRQb3NpdGlvbigpOworCisgICAg
Ly8gU3RhcnQgcGVyaW9kaWMgdXBkYXRlcyBvZiB0aGUgcHJvZ3Jlc3MgYmFyLgorICAgIGlmICgh
bV9wcm9ncmVzc0JhclVwZGF0ZUlkKQorICAgICAgICBtX3Byb2dyZXNzQmFyVXBkYXRlSWQgPSBn
X3RpbWVvdXRfYWRkKFBST0dSRVNTX0JBUl9VUERBVEVfSU5URVJWQUwsIHByb2dyZXNzQmFyVXBk
YXRlQ2FsbGJhY2ssIHRoaXMpOworCisgICAgLy8gSGlkZSB0aGUgaHVkIGluIGZldyBzZWNvbmRz
LCBpZiByZXF1ZXN0ZWQuCisgICAgaWYgKGF1dG9IaWRlKQorICAgICAgICBtX2h1ZFRpbWVvdXRJ
ZCA9IGdfdGltZW91dF9hZGQoSFVEX0FVVE9fSElERV9JTlRFUlZBTCwgaGlkZUh1ZENhbGxiYWNr
LCB0aGlzKTsKK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpoaWRlSHVkKCkK
K3sKKyAgICBpZiAobV9odWRUaW1lb3V0SWQpIHsKKyAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKG1f
aHVkVGltZW91dElkKTsKKyAgICAgICAgbV9odWRUaW1lb3V0SWQgPSAwOworICAgIH0KKworICAg
IGlmICghbV9odWRXaW5kb3cpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEtlZXAgdGhlIGh1
ZCB2aXNpYmxlIGlmIGEgc2VlayBpcyBpbiBwcm9ncmVzcyBvciBpZiB0aGUgdm9sdW1lCisgICAg
Ly8gcG9wdXAgaXMgdmlzaWJsZS4KKyAgICBHdGtXaWRnZXQqIHZvbHVtZVBvcHVwID0gZ3RrX3Nj
YWxlX2J1dHRvbl9nZXRfcG9wdXAoR1RLX1NDQUxFX0JVVFRPTihtX3ZvbHVtZUJ1dHRvbikpOwor
ICAgIGlmIChtX3NlZWtMb2NrIHx8IGd0a193aWRnZXRfZ2V0X3Zpc2libGUodm9sdW1lUG9wdXAp
KSB7CisgICAgICAgIHNob3dIdWQodHJ1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBHZGtXaW5kb3cqIHdpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyhtX3dpbmRvdyk7Cisg
ICAgR2RrQ3Vyc29yKiBjdXJzb3IgPSBnZGtfY3Vyc29yX25ldyhHREtfQkxBTktfQ1VSU09SKTsK
KyAgICBnZGtfd2luZG93X3NldF9jdXJzb3Iod2luZG93LCBjdXJzb3IpOworCisgICAgZ3RrX3dp
ZGdldF9oaWRlX2FsbChtX2h1ZFdpbmRvdyk7CisKKyAgICBpZiAobV9wcm9ncmVzc0JhclVwZGF0
ZUlkKSB7CisgICAgICAgIGdfc291cmNlX3JlbW92ZShtX3Byb2dyZXNzQmFyVXBkYXRlSWQpOwor
ICAgICAgICBtX3Byb2dyZXNzQmFyVXBkYXRlSWQgPSAwOworICAgIH0KK30KKworc3RhdGljIGdi
b29sZWFuIG9uRnVsbHNjcmVlbkd0a0tleVByZXNzRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdk
a0V2ZW50S2V5KiBldmVudCwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyKiBjb250cm9sbGVyID0gcmVpbnRlcnByZXRfY2FzdDxGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyKj4oZGF0YSk7CisKKyAgICBzd2l0Y2ggKGV2ZW50LT5rZXl2YWwpIHsKKyAgICBj
YXNlIEdES19Fc2NhcGU6CisgICAgY2FzZSAnZic6CisgICAgY2FzZSAnRic6CisgICAgICAgIGNv
bnRyb2xsZXItPmV4aXRPblVzZXJSZXF1ZXN0KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
R0RLX3NwYWNlOgorICAgIGNhc2UgR0RLX1JldHVybjoKKyAgICAgICAgY29udHJvbGxlci0+dG9n
Z2xlUGxheSgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdES19VcDoKKyAgICAgICAgLy8g
dm9sdW1lIHVwCisgICAgICAgIGNvbnRyb2xsZXItPnNldFZvbHVtZShjb250cm9sbGVyLT52b2x1
bWUoKSArIFZPTFVNRV9VUF9PRkZTRVQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdES19E
b3duOgorICAgICAgICAvLyB2b2x1bWUgZG93bgorICAgICAgICBjb250cm9sbGVyLT5zZXRWb2x1
bWUoY29udHJvbGxlci0+dm9sdW1lKCkgLSBWT0xVTUVfRE9XTl9PRkZTRVQpOworICAgICAgICBi
cmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4g
VFJVRTsKK30KKworCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmVudGVyRnVsbHNj
cmVlbigpCit7CisgICAgaWYgKCFtX21lZGlhRWxlbWVudCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKG1fbWVkaWFFbGVtZW50LT5wbGF0Zm9ybU1lZGlhKCkudHlwZSAhPSBXZWJDb3JlOjpQ
bGF0Zm9ybU1lZGlhOjpHU3RyZWFtZXJHV29ybGRUeXBlKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX3dpbmRvdyA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3RrV2lkZ2V0Kj4obV9tZWRpYUVsZW1lbnQt
PnBsYXRmb3JtTWVkaWEoKS5tZWRpYS5nc3RyZWFtZXJHV29ybGQtPmVudGVyRnVsbHNjcmVlbigp
KTsKKworICAgIEdzdEVsZW1lbnQqIHBpcGVsaW5lID0gbV9tZWRpYUVsZW1lbnQtPnBsYXRmb3Jt
TWVkaWEoKS5tZWRpYS5nc3RyZWFtZXJHV29ybGQtPnBpcGVsaW5lKCk7CisgICAgZ19zaWduYWxf
Y29ubmVjdChwaXBlbGluZSwgIm5vdGlmeTo6dm9sdW1lIiwgR19DQUxMQkFDSyhwbGF5ZXJWb2x1
bWVDaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KHBpcGVsaW5l
LCAibm90aWZ5OjptdXRlIiwgR19DQUxMQkFDSyhwbGF5ZXJNdXRlQ2hhbmdlZENhbGxiYWNrKSwg
dGhpcyk7CisKKyAgICBpZiAoIW1faHVkV2luZG93KQorICAgICAgICBjcmVhdGVIdWQoKTsKKwor
ICAgIC8vIEVuc3VyZSBibGFjayBiYWNrZ3JvdW5kLgorICAgIEdka0NvbG9yIGNvbG9yOworICAg
IGdka19jb2xvcl9wYXJzZSgiYmxhY2siLCAmY29sb3IpOworICAgIGd0a193aWRnZXRfbW9kaWZ5
X2JnKG1fd2luZG93LCBHVEtfU1RBVEVfTk9STUFMLCAmY29sb3IpOworICAgIGd0a193aWRnZXRf
c2V0X2RvdWJsZV9idWZmZXJlZChtX3dpbmRvdywgRkFMU0UpOworCisgICAgZ19zaWduYWxfY29u
bmVjdChtX3dpbmRvdywgImtleS1wcmVzcy1ldmVudCIsIEdfQ0FMTEJBQ0sob25GdWxsc2NyZWVu
R3RrS2V5UHJlc3NFdmVudCksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93aW5kb3cs
ICJkZXN0cm95IiwgR19DQUxMQkFDSyhvbkZ1bGxzY3JlZW5HdGtEZXN0cm95KSwgdGhpcyk7Cisg
ICAgZ19zaWduYWxfY29ubmVjdChtX3dpbmRvdywgIm5vdGlmeTo6aXMtYWN0aXZlIiwgR19DQUxM
QkFDSyhvbkZ1bGxzY3JlZW5HdGtBY3RpdmVOb3RpZmljYXRpb24pLCB0aGlzKTsKKworCisgICAg
Z3RrX3dpZGdldF9zaG93X2FsbChtX3dpbmRvdyk7CisgICAgZ3RrX3dpZGdldF9yZWFsaXplKG1f
d2luZG93KTsKKworICAgIEdka1dpbmRvdyogd2luZG93ID0gZ3RrX3dpZGdldF9nZXRfd2luZG93
KG1fd2luZG93KTsKKyAgICBHZGtDdXJzb3IqIGN1cnNvciA9IGdka19jdXJzb3JfbmV3KEdES19C
TEFOS19DVVJTT1IpOworICAgIG1fY3Vyc29yID0gZ2RrX3dpbmRvd19nZXRfY3Vyc29yKHdpbmRv
dyk7CisgICAgZ2RrX3dpbmRvd19zZXRfY3Vyc29yKHdpbmRvdywgY3Vyc29yKTsKKyAgICBnZGtf
Y3Vyc29yX3VucmVmKGN1cnNvcik7CisKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2luZG93LCAi
bW90aW9uLW5vdGlmeS1ldmVudCIsIEdfQ0FMTEJBQ0sob25GdWxsc2NyZWVuR3RrTW90aW9uTm90
aWZ5RXZlbnQpLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2luZG93LCAiY29uZmln
dXJlLWV2ZW50IiwgR19DQUxMQkFDSyhvbkZ1bGxzY3JlZW5HdGtDb25maWd1cmVFdmVudCksIHRo
aXMpOworCisgICAgZ3RrX3dpbmRvd19mdWxsc2NyZWVuKEdUS19XSU5ET1cobV93aW5kb3cpKTsK
KyAgICBndGtfd2lkZ2V0X3Nob3dfYWxsKG1faHVkV2luZG93KTsKKyAgICBzaG93SHVkKHRydWUp
OworfQorCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnVwZGF0ZUh1ZFBvc2l0aW9u
KCkKK3sKKyAgICBpZiAoIW1faHVkV2luZG93KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBH
ZXQgdGhlIHNjcmVlbiByZWN0YW5nbGUuCisgICAgR2RrU2NyZWVuKiBzY3JlZW4gPSBndGtfd2lu
ZG93X2dldF9zY3JlZW4oR1RLX1dJTkRPVyhtX3dpbmRvdykpOworICAgIEdka1dpbmRvdyogd2lu
ZG93ID0gZ3RrX3dpZGdldF9nZXRfd2luZG93KG1fd2luZG93KTsKKyAgICBHZGtSZWN0YW5nbGUg
ZnVsbHNjcmVlblJlY3RhbmdsZTsKKyAgICBnZGtfc2NyZWVuX2dldF9tb25pdG9yX2dlb21ldHJ5
KHNjcmVlbiwgZ2RrX3NjcmVlbl9nZXRfbW9uaXRvcl9hdF93aW5kb3coc2NyZWVuLCB3aW5kb3cp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZ1bGxzY3JlZW5SZWN0YW5n
bGUpOworCisgICAgLy8gR2V0IHRoZSBwb3B1cCB3aW5kb3cgc2l6ZS4KKyAgICBpbnQgaHVkV2lk
dGgsIGh1ZEhlaWdodDsKKyAgICBndGtfd2luZG93X2dldF9zaXplKEdUS19XSU5ET1cobV9odWRX
aW5kb3cpLCAmaHVkV2lkdGgsICZodWRIZWlnaHQpOworCisgICAgLy8gU2NhbGUgdGhlIGh1ZCB0
byB0aGUgZnVsbCB3aWR0aCBvZiB0aGUgc2NyZWVuLgorICAgIGd0a193aW5kb3dfcmVzaXplKEdU
S19XSU5ET1cobV9odWRXaW5kb3cpLCBmdWxsc2NyZWVuUmVjdGFuZ2xlLndpZHRoLCBodWRIZWln
aHQpOworCisgICAgLy8gTW92ZSB0aGUgaHVkIHRvIHRoZSBib3R0b20gb2YgdGhlIHNjcmVlbi4K
KyAgICBndGtfd2luZG93X21vdmUoR1RLX1dJTkRPVyhtX2h1ZFdpbmRvdyksIGZ1bGxzY3JlZW5S
ZWN0YW5nbGUueCwKKyAgICAgICAgICAgICAgICAgICAgZnVsbHNjcmVlblJlY3RhbmdsZS5oZWln
aHQgKyBmdWxsc2NyZWVuUmVjdGFuZ2xlLnkgLSBodWRIZWlnaHQpOworfQorCit2b2lkIEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXI6OmV4aXRPblVzZXJSZXF1ZXN0KCkKK3sKKyAgICBtX21lZGlh
RWxlbWVudC0+ZXhpdEZ1bGxzY3JlZW4oKTsKK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyOjpleGl0RnVsbHNjcmVlbigpCit7CisgICAgaWYgKCFtX2h1ZFdpbmRvdykKKyAgICAg
ICAgcmV0dXJuOworCisgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKG1f
d2luZG93LCAodm9pZCopIG9uRnVsbHNjcmVlbkd0a0tleVByZXNzRXZlbnQsICh2b2lkKikgdGhp
cyk7CisgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKG1fd2luZG93LCAo
dm9pZCopIG9uRnVsbHNjcmVlbkd0a0Rlc3Ryb3ksICh2b2lkKikgdGhpcyk7CisgICAgZ19zaWdu
YWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKG1fd2luZG93LCAodm9pZCopIG9uRnVsbHNj
cmVlbkd0a01vdGlvbk5vdGlmeUV2ZW50LCAodm9pZCopIHRoaXMpOworICAgIGdfc2lnbmFsX2hh
bmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhtX3dpbmRvdywgKHZvaWQqKSBvbkZ1bGxzY3JlZW5H
dGtDb25maWd1cmVFdmVudCwgKHZvaWQqKSB0aGlzKTsKKworICAgIEdzdEVsZW1lbnQqIHBpcGVs
aW5lID0gbV9tZWRpYUVsZW1lbnQtPnBsYXRmb3JtTWVkaWEoKS5tZWRpYS5nc3RyZWFtZXJHV29y
bGQtPnBpcGVsaW5lKCk7CisgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5j
KHBpcGVsaW5lLCAodm9pZCopIHBsYXllclZvbHVtZUNoYW5nZWRDYWxsYmFjaywgKHZvaWQqKSB0
aGlzKTsKKyAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMocGlwZWxpbmUs
ICh2b2lkKikgcGxheWVyTXV0ZUNoYW5nZWRDYWxsYmFjaywgKHZvaWQqKSB0aGlzKTsKKworICAg
IGlmIChtX2h1ZFRpbWVvdXRJZCkgeworICAgICAgICBnX3NvdXJjZV9yZW1vdmUobV9odWRUaW1l
b3V0SWQpOworICAgICAgICBtX2h1ZFRpbWVvdXRJZCA9IDA7CisgICAgfQorCisgICAgaWYgKG1f
cHJvZ3Jlc3NCYXJVcGRhdGVJZCkgeworICAgICAgICBnX3NvdXJjZV9yZW1vdmUobV9wcm9ncmVz
c0JhclVwZGF0ZUlkKTsKKyAgICAgICAgbV9wcm9ncmVzc0JhclVwZGF0ZUlkID0gMDsKKyAgICB9
CisKKyAgICBpZiAobV9tZWRpYUVsZW1lbnQtPnBsYXRmb3JtTWVkaWEoKS50eXBlID09IFdlYkNv
cmU6OlBsYXRmb3JtTWVkaWE6OkdTdHJlYW1lckdXb3JsZFR5cGUpCisgICAgICAgIG1fbWVkaWFF
bGVtZW50LT5wbGF0Zm9ybU1lZGlhKCkubWVkaWEuZ3N0cmVhbWVyR1dvcmxkLT5leGl0RnVsbHNj
cmVlbigpOworCisgICAgZ3RrX3dpZGdldF9oaWRlX2FsbChtX3dpbmRvdyk7CisKKyAgICBndGtf
d2lkZ2V0X2Rlc3Ryb3kobV9odWRXaW5kb3cpOworICAgIG1faHVkV2luZG93ID0gMDsKK30KKwor
Ym9vbCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpjYW5QbGF5KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9tZWRpYUVsZW1lbnQgJiYgbV9tZWRpYUVsZW1lbnQtPmNhblBsYXkoKTsKK30KKwor
dm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpwbGF5KCkKK3sKKyAgICBpZiAobV9tZWRp
YUVsZW1lbnQpCisgICAgICAgIG1fbWVkaWFFbGVtZW50LT5wbGF5KG1fbWVkaWFFbGVtZW50LT5w
cm9jZXNzaW5nVXNlckdlc3R1cmUoKSk7CisKKyAgICBwbGF5U3RhdGVDaGFuZ2VkKCk7CisgICAg
c2hvd0h1ZCh0cnVlKTsKK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpwYXVz
ZSgpCit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50KQorICAgICAgICBtX21lZGlhRWxlbWVudC0+
cGF1c2UobV9tZWRpYUVsZW1lbnQtPnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKTsKKworICAgIHBs
YXlTdGF0ZUNoYW5nZWQoKTsKKyAgICBzaG93SHVkKGZhbHNlKTsKK30KKwordm9pZCBGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyOjpwbGF5U3RhdGVDaGFuZ2VkKCkKK3sKKyAgICBpZiAoY2FuUGxh
eSgpKQorICAgICAgICBnX29iamVjdF9zZXQobV9wbGF5UGF1c2VBY3Rpb24sICJ0b29sdGlwIiwg
XygiUGxheSIpLCAiaWNvbi1uYW1lIiwgIm1lZGlhLXBsYXliYWNrLXN0YXJ0LXN5bWJvbGljIiwg
TlVMTCk7CisgICAgZWxzZQorICAgICAgICBnX29iamVjdF9zZXQobV9wbGF5UGF1c2VBY3Rpb24s
ICJ0b29sdGlwIiwgXygiUGF1c2UiKSwgImljb24tbmFtZSIsICJtZWRpYS1wbGF5YmFjay1wYXVz
ZS1zeW1ib2xpYyIsIE5VTEwpOworfQorCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6
OnRvZ2dsZVBsYXkoKQoreworICAgIGlmIChjYW5QbGF5KCkpCisgICAgICAgIHBsYXkoKTsKKyAg
ICBlbHNlCisgICAgICAgIHBhdXNlKCk7Cit9CisKK2Zsb2F0IEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXI6OnZvbHVtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50ID8gbV9t
ZWRpYUVsZW1lbnQtPnZvbHVtZSgpIDogMDsKK30KKworYm9vbCBGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyOjptdXRlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50ID8gbV9t
ZWRpYUVsZW1lbnQtPm11dGVkKCkgOiBmYWxzZTsKK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyOjpzZXRWb2x1bWUoZmxvYXQgdm9sdW1lKQoreworICAgIGlmICh2b2x1bWUgPCAw
LjAgfHwgdm9sdW1lID4gMS4wKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9tZWRpYUVs
ZW1lbnQpIHsKKyAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICAgICAgbV9tZWRpYUVsZW1l
bnQtPnNldFZvbHVtZSh2b2x1bWUsIGVjKTsKKyAgICB9Cit9CisKK3ZvaWQgRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlcjo6dm9sdW1lQ2hhbmdlZCgpCit7CisgICAgZ19zaWduYWxfaGFuZGxlcl9i
bG9jayhtX3ZvbHVtZUJ1dHRvbiwgbV92b2x1bWVVcGRhdGVJZCk7CisgICAgZ3RrX3NjYWxlX2J1
dHRvbl9zZXRfdmFsdWUoR1RLX1NDQUxFX0JVVFRPTihtX3ZvbHVtZUJ1dHRvbiksIHZvbHVtZSgp
KTsKKyAgICBnX3NpZ25hbF9oYW5kbGVyX3VuYmxvY2sobV92b2x1bWVCdXR0b24sIG1fdm9sdW1l
VXBkYXRlSWQpOworfQorCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6Om11dGVDaGFu
Z2VkKCkKK3sKKyAgICBnX3NpZ25hbF9oYW5kbGVyX2Jsb2NrKG1fdm9sdW1lQnV0dG9uLCBtX3Zv
bHVtZVVwZGF0ZUlkKTsKKyAgICBndGtfc2NhbGVfYnV0dG9uX3NldF92YWx1ZShHVEtfU0NBTEVf
QlVUVE9OKG1fdm9sdW1lQnV0dG9uKSwgbXV0ZWQoKSA/IDAgOiB2b2x1bWUoKSk7CisgICAgZ19z
aWduYWxfaGFuZGxlcl91bmJsb2NrKG1fdm9sdW1lQnV0dG9uLCBtX3ZvbHVtZVVwZGF0ZUlkKTsK
K30KKworZmxvYXQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6Y3VycmVudFRpbWUoKSBjb25z
dAoreworICAgIHJldHVybiBtX21lZGlhRWxlbWVudCA/IG1fbWVkaWFFbGVtZW50LT5jdXJyZW50
VGltZSgpIDogMDsKK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpzZXRDdXJy
ZW50VGltZShmbG9hdCB2YWx1ZSkKK3sKKyAgICBpZiAobV9tZWRpYUVsZW1lbnQpIHsKKyAgICAg
ICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICAgICAgbV9tZWRpYUVsZW1lbnQtPnNldEN1cnJlbnRU
aW1lKHZhbHVlLCBlYyk7CisgICAgfQorfQorCitmbG9hdCBGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyOjpkdXJhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50ID8gbV9t
ZWRpYUVsZW1lbnQtPmR1cmF0aW9uKCkgOiAwOworfQorCitmbG9hdCBGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyOjpwZXJjZW50TG9hZGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZWRpYUVs
ZW1lbnQgPyBtX21lZGlhRWxlbWVudC0+cGVyY2VudExvYWRlZCgpIDogMDsKK30KKwordm9pZCBG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpiZWdpblNlZWsoKQoreworICAgIG1fc2Vla0xvY2sg
PSB0cnVlOworCisgICAgaWYgKG1fbWVkaWFFbGVtZW50KQorICAgICAgICBtX21lZGlhRWxlbWVu
dC0+YmVnaW5TY3J1YmJpbmcoKTsKK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
Ojpkb1NlZWsoKQoreworICAgIGlmICghbV9zZWVrTG9jaykKKyAgICAgICAgIHJldHVybjsKKwor
ICAgIHNldEN1cnJlbnRUaW1lKGd0a19yYW5nZV9nZXRfdmFsdWUoR1RLX1JBTkdFKG1fdGltZUhT
Y2FsZSkpKmR1cmF0aW9uKCkgLyAxMDApOworfQorCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXI6OmVuZFNlZWsoKQoreworICAgIGlmIChtX21lZGlhRWxlbWVudCkKKyAgICAgICAgbV9t
ZWRpYUVsZW1lbnQtPmVuZFNjcnViYmluZygpOworCisgICAgbV9zZWVrTG9jayA9IGZhbHNlOwor
fQorCitzdGF0aWMgU3RyaW5nIHRpbWVUb1N0cmluZyhmbG9hdCB0aW1lKQoreworICAgIGlmICgh
aXNmaW5pdGUodGltZSkpCisgICAgICAgIHRpbWUgPSAwOworICAgIGludCBzZWNvbmRzID0gZmFi
c2YodGltZSk7CisgICAgaW50IGhvdXJzID0gc2Vjb25kcyAvICg2MCAqIDYwKTsKKyAgICBpbnQg
bWludXRlcyA9IChzZWNvbmRzIC8gNjApICUgNjA7CisgICAgc2Vjb25kcyAlPSA2MDsKKworICAg
IGlmIChob3VycykgeworICAgICAgICBpZiAoaG91cnMgPiA5KQorICAgICAgICAgICAgcmV0dXJu
IFN0cmluZzo6Zm9ybWF0KCIlcyUwMmQ6JTAyZDolMDJkIiwgKHRpbWUgPCAwID8gIi0iIDogIiIp
LCBob3VycywgbWludXRlcywgc2Vjb25kcyk7CisgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1h
dCgiJXMlMDFkOiUwMmQ6JTAyZCIsICh0aW1lIDwgMCA/ICItIiA6ICIiKSwgaG91cnMsIG1pbnV0
ZXMsIHNlY29uZHMpOworICAgIH0KKworICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJXMlMDJk
OiUwMmQiLCAodGltZSA8IDAgPyAiLSIgOiAiIiksIG1pbnV0ZXMsIHNlY29uZHMpOworfQorCitn
Ym9vbGVhbiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp1cGRhdGVIdWRQcm9ncmVzc0Jhcigp
Cit7CisgICAgZmxvYXQgbWVkaWFEdXJhdGlvbihkdXJhdGlvbigpKTsKKyAgICBmbG9hdCBtZWRp
YVBvc2l0aW9uKGN1cnJlbnRUaW1lKCkpOworCisgICAgaWYgKCFtX3NlZWtMb2NrKSB7CisgICAg
ICAgIGdkb3VibGUgdmFsdWUgPSAwLjA7CisKKyAgICAgICAgaWYgKG1lZGlhUG9zaXRpb24gJiYg
bWVkaWFEdXJhdGlvbikKKyAgICAgICAgICAgIHZhbHVlID0gKG1lZGlhUG9zaXRpb24gKiAxMDAu
MCkgLyBtZWRpYUR1cmF0aW9uOworCisgICAgICAgIEd0a0FkanVzdG1lbnQqIGFkanVzdG1lbnQg
PSBndGtfcmFuZ2VfZ2V0X2FkanVzdG1lbnQoR1RLX1JBTkdFKG1fdGltZUhTY2FsZSkpOworICAg
ICAgICBndGtfYWRqdXN0bWVudF9zZXRfdmFsdWUoYWRqdXN0bWVudCwgdmFsdWUpOworICAgIH0K
KworICAgIGd0a19yYW5nZV9zZXRfZmlsbF9sZXZlbChHVEtfUkFOR0UobV90aW1lSFNjYWxlKSwg
cGVyY2VudExvYWRlZCgpKiAxMDApOworCisgICAgZ2NoYXIqIGxhYmVsID0gZ19zdHJkdXBfcHJp
bnRmKCIlcyAvICVzIiwgdGltZVRvU3RyaW5nKG1lZGlhUG9zaXRpb24pLnV0ZjgoKS5kYXRhKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVUb1N0cmluZyhtZWRpYUR1
cmF0aW9uKS51dGY4KCkuZGF0YSgpKTsKKyAgICBndGtfbGFiZWxfc2V0X3RleHQoR1RLX0xBQkVM
KG1fdGltZUxhYmVsKSwgbGFiZWwpOworICAgIGdfZnJlZShsYWJlbCk7CisgICAgcmV0dXJuIFRS
VUU7Cit9CisKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6Y3JlYXRlSHVkKCkKK3sK
KyAgICBtX2h1ZFdpbmRvdyA9IGd0a193aW5kb3dfbmV3KEdUS19XSU5ET1dfUE9QVVApOworICAg
IGd0a193aW5kb3dfc2V0X2dyYXZpdHkoR1RLX1dJTkRPVyhtX2h1ZFdpbmRvdyksIEdES19HUkFW
SVRZX1NPVVRIX1dFU1QpOworICAgIGd0a193aW5kb3dfc2V0X3R5cGVfaGludChHVEtfV0lORE9X
KG1faHVkV2luZG93KSwgR0RLX1dJTkRPV19UWVBFX0hJTlRfTk9STUFMKTsKKworICAgIGdfc2ln
bmFsX2Nvbm5lY3QobV9odWRXaW5kb3csICJtb3Rpb24tbm90aWZ5LWV2ZW50IiwgR19DQUxMQkFD
SyhvbkZ1bGxzY3JlZW5HdGtNb3Rpb25Ob3RpZnlFdmVudCksIHRoaXMpOworCisgICAgR3RrV2lk
Z2V0KiBoYm94ID0gZ3RrX2hib3hfbmV3KEZBTFNFLCA0KTsKKyAgICBndGtfY29udGFpbmVyX2Fk
ZChHVEtfQ09OVEFJTkVSKG1faHVkV2luZG93KSwgaGJveCk7CisKKyAgICBtX3BsYXlQYXVzZUFj
dGlvbiA9IGd0a19hY3Rpb25fbmV3KCJwbGF5IiwgXygiUGxheSAvIFBhdXNlIiksIF8oIlBsYXkg
b3IgcGF1c2UgdGhlIG1lZGlhIiksICJtZWRpYS1wbGF5YmFjay1wYXVzZS1zeW1ib2xpYyIpOwor
ICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9wbGF5UGF1c2VBY3Rpb24sICJhY3RpdmF0ZSIsIEdfQ0FM
TEJBQ0sodG9nZ2xlUGxheVBhdXNlQWN0aXZhdGVkKSwgdGhpcyk7CisKKyAgICBwbGF5U3RhdGVD
aGFuZ2VkKCk7CisKKyAgICBHdGtXaWRnZXQqIGl0ZW0gPSBndGtfYWN0aW9uX2NyZWF0ZV90b29s
X2l0ZW0obV9wbGF5UGF1c2VBY3Rpb24pOworICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9Y
KGhib3gpLCBpdGVtLCBGQUxTRSwgVFJVRSwgMCk7CisKKyAgICBHdGtXaWRnZXQqIGxhYmVsID0g
Z3RrX2xhYmVsX25ldyhfKCJUaW1lOiIpKTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JP
WChoYm94KSwgbGFiZWwsIEZBTFNFLCBUUlVFLCAwKTsKKworICAgIEd0a09iamVjdCogYWRqdXN0
bWVudCA9IGd0a19hZGp1c3RtZW50X25ldygwLjAsIDAuMCwgMTAwLjAsIDAuMSwgMS4wLCAxLjAp
OworICAgIG1fdGltZUhTY2FsZSA9IGd0a19oc2NhbGVfbmV3KEdUS19BREpVU1RNRU5UKGFkanVz
dG1lbnQpKTsKKyAgICBndGtfc2NhbGVfc2V0X2RyYXdfdmFsdWUoR1RLX1NDQUxFKG1fdGltZUhT
Y2FsZSksIEZBTFNFKTsKKyAgICBndGtfcmFuZ2Vfc2V0X3Nob3dfZmlsbF9sZXZlbChHVEtfUkFO
R0UobV90aW1lSFNjYWxlKSwgVFJVRSk7CisgICAgZ3RrX3JhbmdlX3NldF91cGRhdGVfcG9saWN5
KEdUS19SQU5HRShtX3RpbWVIU2NhbGUpLCBHVEtfVVBEQVRFX0NPTlRJTlVPVVMpOworICAgIGdf
c2lnbmFsX2Nvbm5lY3QobV90aW1lSFNjYWxlLCAiYnV0dG9uLXByZXNzLWV2ZW50IiwgR19DQUxM
QkFDSyh0aW1lU2NhbGVCdXR0b25QcmVzc2VkKSwgdGhpcyk7CisgICAgZ19zaWduYWxfY29ubmVj
dChtX3RpbWVIU2NhbGUsICJidXR0b24tcmVsZWFzZS1ldmVudCIsIEdfQ0FMTEJBQ0sodGltZVNj
YWxlQnV0dG9uUmVsZWFzZWQpLCB0aGlzKTsKKyAgICBtX2hzY2FsZVVwZGF0ZUlkID0gZ19zaWdu
YWxfY29ubmVjdChtX3RpbWVIU2NhbGUsICJ2YWx1ZS1jaGFuZ2VkIiwgR19DQUxMQkFDSyh0aW1l
U2NhbGVWYWx1ZUNoYW5nZWQpLCB0aGlzKTsKKworICAgIGd0a19ib3hfcGFja19zdGFydChHVEtf
Qk9YKGhib3gpLCBtX3RpbWVIU2NhbGUsIFRSVUUsIFRSVUUsIDApOworCisgICAgbV90aW1lTGFi
ZWwgPSBndGtfbGFiZWxfbmV3KCIiKTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCho
Ym94KSwgbV90aW1lTGFiZWwsIEZBTFNFLCBUUlVFLCAwKTsKKworICAgIC8vIFZvbHVtZSBidXR0
b24uCisgICAgbV92b2x1bWVCdXR0b24gPSBndGtfdm9sdW1lX2J1dHRvbl9uZXcoKTsKKyAgICBn
dGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChoYm94KSwgbV92b2x1bWVCdXR0b24sIEZBTFNFLCBU
UlVFLCAwKTsKKyAgICBndGtfc2NhbGVfYnV0dG9uX3NldF92YWx1ZShHVEtfU0NBTEVfQlVUVE9O
KG1fdm9sdW1lQnV0dG9uKSwgdm9sdW1lKCkpOworICAgIG1fdm9sdW1lVXBkYXRlSWQgPSBnX3Np
Z25hbF9jb25uZWN0KG1fdm9sdW1lQnV0dG9uLCAidmFsdWUtY2hhbmdlZCIsIEdfQ0FMTEJBQ0so
dm9sdW1lVmFsdWVDaGFuZ2VkKSwgdGhpcyk7CisKKworICAgIG1fZXhpdEZ1bGxzY3JlZW5BY3Rp
b24gPSBndGtfYWN0aW9uX25ldygiZXhpdCIsIF8oIkV4aXQgRnVsbHNjcmVlbiIpLCBfKCJFeGl0
IGZyb20gZnVsbHNjcmVlbiBtb2RlIiksICJ2aWV3LXJlc3RvcmUtc3ltYm9saWMiKTsKKyAgICBn
X3NpZ25hbF9jb25uZWN0KG1fZXhpdEZ1bGxzY3JlZW5BY3Rpb24sICJhY3RpdmF0ZSIsIEdfQ0FM
TEJBQ0soZXhpdEZ1bGxzY3JlZW5BY3RpdmF0ZWQpLCB0aGlzKTsKKyAgICBnX29iamVjdF9zZXQo
bV9leGl0RnVsbHNjcmVlbkFjdGlvbiwgImljb24tbmFtZSIsICJ2aWV3LXJlc3RvcmUtc3ltYm9s
aWMiLCBOVUxMKTsKKyAgICBpdGVtID0gZ3RrX2FjdGlvbl9jcmVhdGVfdG9vbF9pdGVtKG1fZXhp
dEZ1bGxzY3JlZW5BY3Rpb24pOworICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKGhib3gp
LCBpdGVtLCBGQUxTRSwgVFJVRSwgMCk7CisKKworICAgIG1fcHJvZ3Jlc3NCYXJVcGRhdGVJZCA9
IGdfdGltZW91dF9hZGQoUFJPR1JFU1NfQkFSX1VQREFURV9JTlRFUlZBTCwgcHJvZ3Jlc3NCYXJV
cGRhdGVDYWxsYmFjaywgdGhpcyk7CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaCBiL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljNDdjODkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaApAQCAtMCww
ICsxLDEwMCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTAorICoKKyAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaWZuZGVmIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJfaAorI2RlZmluZSBGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyX2gKKworI2lmIEVOQUJMRShWSURFTykKKworI2luY2x1ZGUgIkhU
TUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK3R5cGVkZWYgc3Ry
dWN0IF9HdGtPYmplY3QgR3RrT2JqZWN0OwordHlwZWRlZiBzdHJ1Y3QgX0d0a1dpZGdldCBHdGtX
aWRnZXQ7Cit0eXBlZGVmIHN0cnVjdCBfR3RrQWN0aW9uIEd0a0FjdGlvbjsKK3R5cGVkZWYgc3Ry
dWN0IF9HZGtDdXJzb3IgR2RrQ3Vyc29yOwordHlwZWRlZiBzdHJ1Y3QgX0dka0V2ZW50Q29uZmln
dXJlIEdka0V2ZW50Q29uZmlndXJlOworCisKK2NsYXNzIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXIgOiBwdWJsaWMgTm9uY29weWFibGUgeworcHVibGljOgorICAgIEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXIoKTsKKyAgICB2aXJ0dWFsIH5GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKCk7CisK
KyAgICB2b2lkIHNldE1lZGlhRWxlbWVudChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Kik7Cisg
ICAgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KCkgY29uc3QgeyByZXR1
cm4gbV9tZWRpYUVsZW1lbnQuZ2V0KCk7IH0KKworICAgIHZvaWQgZ3RrQ29uZmlndXJlKEdka0V2
ZW50Q29uZmlndXJlKiBldmVudCk7CisKKyAgICB2b2lkIGVudGVyRnVsbHNjcmVlbigpOworICAg
IHZvaWQgZXhpdEZ1bGxzY3JlZW4oKTsKKworICAgIHZvaWQgZXhpdE9uVXNlclJlcXVlc3QoKTsK
KyAgICB2b2lkIHRvZ2dsZVBsYXkoKTsKKyAgICB2b2lkIGJlZ2luU2VlaygpOworICAgIHZvaWQg
ZG9TZWVrKCk7CisgICAgdm9pZCBlbmRTZWVrKCk7CisKKyAgICB2b2lkIGhpZGVIdWQoKTsKKyAg
ICB2b2lkIHNob3dIdWQoYm9vbCk7CisgICAgZ2Jvb2xlYW4gdXBkYXRlSHVkUHJvZ3Jlc3NCYXIo
KTsKKworICAgIGZsb2F0IHZvbHVtZSgpIGNvbnN0OworICAgIHZvaWQgc2V0Vm9sdW1lKGZsb2F0
KTsKKyAgICB2b2lkIHZvbHVtZUNoYW5nZWQoKTsKKyAgICB2b2lkIG11dGVDaGFuZ2VkKCk7CisK
K3ByaXZhdGU6CisgICAgYm9vbCBjYW5QbGF5KCkgY29uc3Q7CisgICAgdm9pZCBwbGF5KCk7Cisg
ICAgdm9pZCBwYXVzZSgpOworICAgIHZvaWQgcGxheVN0YXRlQ2hhbmdlZCgpOworCisgICAgYm9v
bCBtdXRlZCgpIGNvbnN0OworCisgICAgZmxvYXQgY3VycmVudFRpbWUoKSBjb25zdDsKKyAgICB2
b2lkIHNldEN1cnJlbnRUaW1lKGZsb2F0KTsKKworICAgIGZsb2F0IGR1cmF0aW9uKCkgY29uc3Q7
CisgICAgZmxvYXQgcGVyY2VudExvYWRlZCgpIGNvbnN0OworCisgICAgdm9pZCBjcmVhdGVIdWQo
KTsKKyAgICB2b2lkIHVwZGF0ZUh1ZFBvc2l0aW9uKCk7CisKKyAgICBSZWZQdHI8V2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudD4gbV9tZWRpYUVsZW1lbnQ7CisKKyAgICBndWludCBtX2h1ZFRpbWVv
dXRJZDsKKyAgICBndWludCBtX3Byb2dyZXNzQmFyVXBkYXRlSWQ7CisgICAgZ3VpbnQgbV9wcm9n
cmVzc0JhckZpbGxVcGRhdGVJZDsKKyAgICBndWludCBtX2hzY2FsZVVwZGF0ZUlkOworICAgIGd1
aW50IG1fdm9sdW1lVXBkYXRlSWQ7CisgICAgYm9vbCBtX3NlZWtMb2NrOworICAgIEd0a1dpZGdl
dCogbV93aW5kb3c7CisgICAgR2RrQ3Vyc29yKiBtX2N1cnNvcjsKKyAgICBHdGtXaWRnZXQqIG1f
aHVkV2luZG93OworICAgIEd0a0FjdGlvbiogbV9wbGF5UGF1c2VBY3Rpb247CisgICAgR3RrQWN0
aW9uKiBtX2V4aXRGdWxsc2NyZWVuQWN0aW9uOworICAgIEd0a1dpZGdldCogbV90aW1lSFNjYWxl
OworICAgIEd0a1dpZGdldCogbV90aW1lTGFiZWw7CisgICAgR3RrV2lkZ2V0KiBtX3ZvbHVtZUJ1
dHRvbjsKK307CisKKyNlbmRpZgorCisjZW5kaWYgLy8gRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
cl9oCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmNwcCBiL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuY3BwCmluZGV4IDQxZGU3NmUuLjU3N2JhZTAg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuY3BwCisrKyBiL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuY3BwCkBAIC0yOSw2ICsyOSw4IEBACiAjaW5j
bHVkZSAiRnJhbWVMb2FkZXJDbGllbnRHdGsuaCIKICNpbmNsdWRlICJHdGtWZXJzaW9uaW5nLmgi
CiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgorI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQu
aCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJY29uRGF0YWJhc2UuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGFnZUNhY2hlLmgiCkBAIC00OSw2ICs1MSwx
MCBAQAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAor
I2lmIEVOQUJMRShWSURFTykKKyNpbmNsdWRlICJGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmgi
CisjZW5kaWYKKwogI2lmIEVOQUJMRShEQVRBQkFTRSkKICNpbmNsdWRlICJEYXRhYmFzZVRyYWNr
ZXIuaCIKICNlbmRpZgpAQCAtMjgxLDMgKzI4NywzMyBAQCB2b2lkIHdlYmtpdF9yZXNldF9vcmln
aW5fYWNjZXNzX3doaXRlX2xpc3RzKCkKIHsKICAgICBTZWN1cml0eU9yaWdpbjo6cmVzZXRPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RzKCk7CiB9CisKKwordm9pZCB3ZWJraXRfd2ViX3ZpZXdfZW50ZXJf
ZnVsbHNjcmVlbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBOb2RlKiBub2RlKQoreworICAgIGlm
ICghbm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnZpZGVvVGFnKSkKKyAgICAgICAgcmV0dXJu
OworCisjaWYgRU5BQkxFKFZJREVPKQorICAgIEhUTUxNZWRpYUVsZW1lbnQqIHZpZGVvRWxlbWVu
dCA9IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihub2RlKTsKKyAgICBXZWJLaXRXZWJW
aWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CisKKyAgICAvLyBGaXJzdCBleGl0IEZ1
bGxzY3JlZW4gZm9yIHRoZSBvbGQgbWVkaWFFbGVtZW50LgorICAgIGlmIChwcml2LT5mdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyKQorICAgICAgICBwcml2LT5mdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyLT5leGl0RnVsbHNjcmVlbigpOworCisgICAgcHJpdi0+ZnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlciA9IG5ldyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOworICAgIHByaXYtPmZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXItPnNldE1lZGlhRWxlbWVudCh2aWRlb0VsZW1lbnQpOworICAgIHBy
aXYtPmZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXItPmVudGVyRnVsbHNjcmVlbigpOworI2VuZGlm
Cit9CisKK3ZvaWQgd2Via2l0X3dlYl92aWV3X2V4aXRfZnVsbHNjcmVlbihXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3KQoreworI2lmIEVOQUJMRShWSURFTykKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0
ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CisgICAgaWYgKHByaXYtPmZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXIpCisgICAgICAgIHByaXYtPmZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXItPmV4aXRG
dWxsc2NyZWVuKCk7CisjZW5kaWYKK30KKwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0cHJpdmF0ZS5oIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCmluZGV4
IGZhNzRhYmMuLjcwMjQyZTggMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHBy
aXZhdGUuaAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgKQEAgLTU4LDEx
ICs1OCwxMyBAQAogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudEd0ay5oIgogI2luY2x1ZGUgIklu
dFBvaW50LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNp
bmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgi
CiAjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5o
IgorI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNp
bmNsdWRlIDxhdGsvYXRrLmg+CkBAIC0xNDYsNiArMTQ4LDggQEAgZXh0ZXJuICJDIiB7CiAgICAg
ICAgIGdib29sZWFuIGRpc3Bvc2luZzsKICAgICAgICAgZ2Jvb2xlYW4gdXNlUHJpbWFyeUZvclBh
c3RlOwogCisgICAgICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIGZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXI7CisKICAgICAgICAgLy8gVGhlc2UgYXJlIGhvc3RlZCBoZXJlIGJlY2F1c2Ug
dGhlIERhdGFTb3VyY2Ugb2JqZWN0IGlzCiAgICAgICAgIC8vIGNyZWF0ZWQgdG9vIGxhdGUgaW4g
dGhlIGZyYW1lIGxvYWRpbmcgcHJvY2Vzcy4KICAgICAgICAgV2ViS2l0V2ViUmVzb3VyY2UqIG1h
aW5SZXNvdXJjZTsKQEAgLTM4NSw2ICszODksOSBAQCBleHRlcm4gIkMiIHsKIAogICAgIFdFQktJ
VF9BUEkgdm9pZAogICAgIHdlYmtpdF93ZWJfZnJhbWVfbGF5b3V0KFdlYktpdFdlYkZyYW1lKiBm
cmFtZSk7CisKKyAgICB2b2lkIHdlYmtpdF93ZWJfdmlld19lbnRlcl9mdWxsc2NyZWVuKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcsIFdlYkNvcmU6Ok5vZGUqIG5vZGUpOworICAgIHZvaWQgd2Via2l0
X3dlYl92aWV3X2V4aXRfZnVsbHNjcmVlbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KTsKIH0KIAog
I2VuZGlmCi0tIAoxLjYuMy4z
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61151</attachid>
            <date>2010-07-10 04:30:19 -0700</date>
            <delta_ts>2010-08-13 21:33:03 -0700</delta_ts>
            <desc>tests rebaselined</desc>
            <filename>tests-rebaselined.patch</filename>
            <type>text/plain</type>
            <size>8566</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA0ODYwNzNmN2U4NzZjZWM2M2Q3Mzg1NjM3YjQwY2FlY2JiOTgwYWI1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBGcmksIDI4IE1heSAyMDEwIDE3OjAwOjQ0ICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
dGVzdHMgcmViYXNlbGluZWQKCi0tLQogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgIDE2ICsrKysrKysrKysrKysrKysKIC4uLi9ndGsvbWVkaWEv
Y29udHJvbHMtYWZ0ZXItcmVsb2FkLWV4cGVjdGVkLnR4dCAgIHwgICAgNSArKystLQogLi4uL2d0
ay9tZWRpYS9jb250cm9scy1kcmFnLXRpbWViYXItZXhwZWN0ZWQudHh0ICAgfCAgICA2ICsrKy0t
LQogLi4uL2d0ay9tZWRpYS9jb250cm9scy1zdHJpY3QtZXhwZWN0ZWQudHh0ICAgICAgICAgfCAg
ICA1ICsrKy0tCiAuLi4vZ3RrL21lZGlhL2NvbnRyb2xzLXN0eWxpbmctZXhwZWN0ZWQudHh0ICAg
ICAgICB8ICAgMTAgKysrKysrLS0tLQogLi4uL21lZGlhL3ZpZGVvLWNvbnRyb2xzLXJlbmRlcmlu
Zy1leHBlY3RlZC50eHQgICAgfCAgIDE1ICsrKysrKysrKy0tLS0tLQogNiBmaWxlcyBjaGFuZ2Vk
LCA0MCBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTYzMDEwZS4uN2U5
OWY5MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEwLTA3LTEwICBQaGlsaXBwZSBOb3JtYW5k
ICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBbR1N0cmVhbWVyXSBHVEsgWE92ZXJsYXkgc3VwcG9ydCBpbiBHU3Ry
ZWFtZXJHV29ybGQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM5NDc0CisKKyAgICAgICAgUmViYXNlbGluZWQgdGVzdHMgc2hvd2luZyB0aGUgdmlkZW8g
Y29udHJvbHMgY29udGFpbmluZyB0aGUgbmV3CisgICAgICAgIGZ1bGxzY3JlZW4gYnV0dG9uLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3RrL21lZGlhL2NvbnRyb2xzLWFmdGVyLXJlbG9hZC1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL21lZGlhL2NvbnRyb2xzLWRyYWctdGlt
ZWJhci1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL21lZGlhL2NvbnRyb2xz
LXN0cmljdC1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL21lZGlhL2NvbnRy
b2xzLXN0eWxpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9tZWRpYS92
aWRlby1jb250cm9scy1yZW5kZXJpbmctZXhwZWN0ZWQudHh0OgorCiAyMDEwLTA3LTA5ICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAgICAgIE5vdCByZXZp
ZXdlZC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9tZWRpYS9jb250cm9s
cy1hZnRlci1yZWxvYWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21l
ZGlhL2NvbnRyb2xzLWFmdGVyLXJlbG9hZC1leHBlY3RlZC50eHQKaW5kZXggOThiODgwNC4uMTkx
ZGU4NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlhL2NvbnRyb2xz
LWFmdGVyLXJlbG9hZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L21lZGlhL2NvbnRyb2xzLWFmdGVyLXJlbG9hZC1leHBlY3RlZC50eHQKQEAgLTE3LDkgKzE3LDEw
IEBAIGxheWVyIGF0ICg4LDQ0KSBzaXplIDMyMHgyNDAKIGxheWVyIGF0ICg4LDI2NCkgc2l6ZSAz
MjB4MjAKICAgUmVuZGVyRmxleGlibGVCb3ggKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgwLDIyMCkg
c2l6ZSAzMjB4MjAKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMCwwKSBzaXplIDIweDIw
Ci0gICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDIwLDApIHNpemUgMjQweDIwIFtib3Jk
ZXI6ICgxcHggc29saWQgI0ZGRkZGRjMzKSBub25lICgxcHggc29saWQgI0ZGRkZGRjMzKV0KLSAg
ICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgxLDApIHNpemUgMjM4eDIwCisgICAgUmVuZGVy
RmxleGlibGVCb3gge0RJVn0gYXQgKDIwLDApIHNpemUgMjIweDIwIFtib3JkZXI6ICgxcHggc29s
aWQgI0ZGRkZGRjMzKSBub25lICgxcHggc29saWQgI0ZGRkZGRjMzKV0KKyAgICAgIFJlbmRlclNs
aWRlciB7SU5QVVR9IGF0ICgxLDApIHNpemUgMjE4eDIwCiAgICAgICAgIFJlbmRlckJsb2NrIHtE
SVZ9IGF0ICgyLDQpIHNpemUgMTJ4MTIKKyAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjQw
LDApIHNpemUgMjB4MjAKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjYwLDApIHNpemUg
MjB4MjAKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjgwLDApIHNpemUgMjB4MjAKICAg
ICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMzAwLDApIHNpemUgMjB4MjAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9tZWRpYS9jb250cm9scy1kcmFnLXRpbWViYXItZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlhL2NvbnRyb2xzLWRyYWct
dGltZWJhci1leHBlY3RlZC50eHQKaW5kZXggNjkzNmJlNC4uYTQxMjExYSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlhL2NvbnRyb2xzLWRyYWctdGltZWJhci1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlhL2NvbnRyb2xzLWRy
YWctdGltZWJhci1leHBlY3RlZC50eHQKQEAgLTQsMTAgKzQsMTAgQEAgUlVOKHZpZGVvLmF1dG9w
bGF5ID0gdHJ1ZSkKIFJVTih2aWRlby5zcmMgPSAnY29udGVudC90ZXN0Lm1wNCcpCiBFVkVOVChw
bGF5aW5nKQogRVZFTlQoc2Vla2VkKQotVGltZTogMi4xCitUaW1lOiAyLjQKIEVWRU5UKHNlZWtl
ZCkKLVRpbWU6IDIuNworVGltZTogMy4wCiBFVkVOVChzZWVrZWQpCi1UaW1lOiAzLjIKK1RpbWU6
IDMuNgogRU5EIE9GIFRFU1QKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L21lZGlhL2NvbnRyb2xzLXN0cmljdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvbWVkaWEvY29udHJvbHMtc3RyaWN0LWV4cGVjdGVkLnR4dAppbmRleCBmMDQwMjNlLi45
MTZiZGFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvbWVkaWEvY29udHJv
bHMtc3RyaWN0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvbWVk
aWEvY29udHJvbHMtc3RyaWN0LWV4cGVjdGVkLnR4dApAQCAtMTcsOSArMTcsMTAgQEAgbGF5ZXIg
YXQgKDgsNTIpIHNpemUgMzIweDI0MAogbGF5ZXIgYXQgKDgsMjcyKSBzaXplIDMyMHgyMAogICBS
ZW5kZXJGbGV4aWJsZUJveCAocG9zaXRpb25lZCkge0RJVn0gYXQgKDAsMjIwKSBzaXplIDMyMHgy
MAogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjB4MjAKLSAgICBSZW5k
ZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMjAsMCkgc2l6ZSAyNDB4MjAgW2JvcmRlcjogKDFweCBz
b2xpZCAjRkZGRkZGMzMpIG5vbmUgKDFweCBzb2xpZCAjRkZGRkZGMzMpXQotICAgICAgUmVuZGVy
U2xpZGVyIHtJTlBVVH0gYXQgKDEsMCkgc2l6ZSAyMzh4MjAKKyAgICBSZW5kZXJGbGV4aWJsZUJv
eCB7RElWfSBhdCAoMjAsMCkgc2l6ZSAyMjB4MjAgW2JvcmRlcjogKDFweCBzb2xpZCAjRkZGRkZG
MzMpIG5vbmUgKDFweCBzb2xpZCAjRkZGRkZGMzMpXQorICAgICAgUmVuZGVyU2xpZGVyIHtJTlBV
VH0gYXQgKDEsMCkgc2l6ZSAyMTh4MjAKICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIs
NCkgc2l6ZSAxMngxMgorICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyNDAsMCkgc2l6ZSAy
MHgyMAogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyNjAsMCkgc2l6ZSAyMHgyMAogICAg
IFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyODAsMCkgc2l6ZSAyMHgyMAogICAgIFJlbmRlckJ1
dHRvbiB7SU5QVVR9IGF0ICgzMDAsMCkgc2l6ZSAyMHgyMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL21lZGlhL2NvbnRyb2xzLXN0eWxpbmctZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlhL2NvbnRyb2xzLXN0eWxpbmctZXhwZWN0ZWQudHh0
CmluZGV4IGY5ZDE3MGMuLjcxNGE1OTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9tZWRpYS9jb250cm9scy1zdHlsaW5nLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGsvbWVkaWEvY29udHJvbHMtc3R5bGluZy1leHBlY3RlZC50eHQKQEAgLTIx
LDkgKzIxLDEwIEBAIGxheWVyIGF0ICgxOCw0NCkgc2l6ZSAzMjB4MjQwCiBsYXllciBhdCAoMTgs
MjY0KSBzaXplIDMyMHgyMAogICBSZW5kZXJGbGV4aWJsZUJveCAocG9zaXRpb25lZCkge0RJVn0g
YXQgKDAsMjIwKSBzaXplIDMyMHgyMAogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgwLDAp
IHNpemUgMjB4MjAKLSAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMjAsMCkgc2l6ZSAy
NDB4MjAgW2JvcmRlcjogKDFweCBzb2xpZCAjRkZGRkZGMzMpIG5vbmUgKDFweCBzb2xpZCAjRkZG
RkZGMzMpXQotICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDEsMCkgc2l6ZSAyMzh4MjAK
KyAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMjAsMCkgc2l6ZSAyMjB4MjAgW2JvcmRl
cjogKDFweCBzb2xpZCAjRkZGRkZGMzMpIG5vbmUgKDFweCBzb2xpZCAjRkZGRkZGMzMpXQorICAg
ICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDEsMCkgc2l6ZSAyMTh4MjAKICAgICAgICAgUmVu
ZGVyQmxvY2sge0RJVn0gYXQgKDIsNCkgc2l6ZSAxMngxMgorICAgIFJlbmRlckJ1dHRvbiB7SU5Q
VVR9IGF0ICgyNDAsMCkgc2l6ZSAyMHgyMAogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgy
NjAsMCkgc2l6ZSAyMHgyMAogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyODAsMCkgc2l6
ZSAyMHgyMAogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgzMDAsMCkgc2l6ZSAyMHgyMApA
QCAtMzIsOSArMzMsMTAgQEAgbGF5ZXIgYXQgKDgsMjg0KSBzaXplIDMyMHgyNDAKIGxheWVyIGF0
ICg4LDUwNCkgc2l6ZSAzMjB4MjAKICAgUmVuZGVyRmxleGlibGVCb3ggKHBvc2l0aW9uZWQpIHtE
SVZ9IGF0ICgwLDIyMCkgc2l6ZSAzMjB4MjAKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAo
MCwwKSBzaXplIDIweDIwCi0gICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDIwLDApIHNp
emUgMjQweDIwIFtib3JkZXI6ICgxcHggc29saWQgI0ZGRkZGRjMzKSBub25lICgxcHggc29saWQg
I0ZGRkZGRjMzKV0KLSAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgxLDApIHNpemUgMjM4
eDIwCisgICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDIwLDApIHNpemUgMjIweDIwIFti
b3JkZXI6ICgxcHggc29saWQgI0ZGRkZGRjMzKSBub25lICgxcHggc29saWQgI0ZGRkZGRjMzKV0K
KyAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgxLDApIHNpemUgMjE4eDIwCiAgICAgICAg
IFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDQpIHNpemUgMTJ4MTIKKyAgICBSZW5kZXJCdXR0b24g
e0lOUFVUfSBhdCAoMjQwLDApIHNpemUgMjB4MjAKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBh
dCAoMjYwLDApIHNpemUgMjB4MjAKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjgwLDAp
IHNpemUgMjB4MjAKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMzAwLDApIHNpemUgMjB4
MjAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9tZWRpYS92aWRlby1jb250
cm9scy1yZW5kZXJpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21l
ZGlhL3ZpZGVvLWNvbnRyb2xzLXJlbmRlcmluZy1leHBlY3RlZC50eHQKaW5kZXggZWM4YzE0Zi4u
ZTRiN2ViMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlhL3ZpZGVv
LWNvbnRyb2xzLXJlbmRlcmluZy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL21lZGlhL3ZpZGVvLWNvbnRyb2xzLXJlbmRlcmluZy1leHBlY3RlZC50eHQKQEAgLTIw
LDkgKzIwLDEwIEBAIGxheWVyIGF0ICg4LDQ0KSBzaXplIDMyMHgyNDAKIGxheWVyIGF0ICg4LDI2
NCkgc2l6ZSAzMjB4MjAKICAgUmVuZGVyRmxleGlibGVCb3ggKHBvc2l0aW9uZWQpIHtESVZ9IGF0
ICgwLDIyMCkgc2l6ZSAzMjB4MjAKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMCwwKSBz
aXplIDIweDIwCi0gICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDIwLDApIHNpemUgMjQw
eDIwIFtib3JkZXI6ICgxcHggc29saWQgI0ZGRkZGRjMzKSBub25lICgxcHggc29saWQgI0ZGRkZG
RjMzKV0KLSAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgxLDApIHNpemUgMjM4eDIwCisg
ICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDIwLDApIHNpemUgMjIweDIwIFtib3JkZXI6
ICgxcHggc29saWQgI0ZGRkZGRjMzKSBub25lICgxcHggc29saWQgI0ZGRkZGRjMzKV0KKyAgICAg
IFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgxLDApIHNpemUgMjE4eDIwCiAgICAgICAgIFJlbmRl
ckJsb2NrIHtESVZ9IGF0ICgyLDQpIHNpemUgMTJ4MTIKKyAgICBSZW5kZXJCdXR0b24ge0lOUFVU
fSBhdCAoMjQwLDApIHNpemUgMjB4MjAKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjYw
LDApIHNpemUgMjB4MjAKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjgwLDApIHNpemUg
MjB4MjAKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMzAwLDApIHNpemUgMjB4MjAKQEAg
LTMxLDkgKzMyLDEwIEBAIGxheWVyIGF0ICg4LDI4NCkgc2l6ZSAzMjB4MjQwCiBsYXllciBhdCAo
OCw1MDQpIHNpemUgMzIweDIwCiAgIFJlbmRlckZsZXhpYmxlQm94IChwb3NpdGlvbmVkKSB7RElW
fSBhdCAoMCwyMjApIHNpemUgMzIweDIwCiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDAs
MCkgc2l6ZSAyMHgyMAotICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0ICgyMCwwKSBzaXpl
IDI0MHgyMCBbYm9yZGVyOiAoMXB4IHNvbGlkICNGRkZGRkYzMykgbm9uZSAoMXB4IHNvbGlkICNG
RkZGRkYzMyldCi0gICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMSwwKSBzaXplIDIzOHgy
MAorICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0ICgyMCwwKSBzaXplIDIyMHgyMCBbYm9y
ZGVyOiAoMXB4IHNvbGlkICNGRkZGRkYzMykgbm9uZSAoMXB4IHNvbGlkICNGRkZGRkYzMyldCisg
ICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMSwwKSBzaXplIDIxOHgyMAogICAgICAgICBS
ZW5kZXJCbG9jayB7RElWfSBhdCAoMiw0KSBzaXplIDEyeDEyCisgICAgUmVuZGVyQnV0dG9uIHtJ
TlBVVH0gYXQgKDI0MCwwKSBzaXplIDIweDIwCiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQg
KDI2MCwwKSBzaXplIDIweDIwCiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI4MCwwKSBz
aXplIDIweDIwCiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDMwMCwwKSBzaXplIDIweDIw
CkBAIC00NCw5ICs0NiwxMCBAQCBsYXllciBhdCAoOCw1MjQpIHNpemUgMzIweDI0MAogbGF5ZXIg
YXQgKDgsNzQ0KSBzaXplIDMyMHgyMAogICBSZW5kZXJGbGV4aWJsZUJveCAocG9zaXRpb25lZCkg
e0RJVn0gYXQgKDAsMjIwKSBzaXplIDMyMHgyMAogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0
ICgwLDApIHNpemUgMjB4MjAKLSAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMjAsMCkg
c2l6ZSAyNDB4MjAgW2JvcmRlcjogKDFweCBzb2xpZCAjRkZGRkZGMzMpIG5vbmUgKDFweCBzb2xp
ZCAjRkZGRkZGMzMpXQotICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDEsMCkgc2l6ZSAy
Mzh4MjAKKyAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMjAsMCkgc2l6ZSAyMjB4MjAg
W2JvcmRlcjogKDFweCBzb2xpZCAjRkZGRkZGMzMpIG5vbmUgKDFweCBzb2xpZCAjRkZGRkZGMzMp
XQorICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDEsMCkgc2l6ZSAyMTh4MjAKICAgICAg
ICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsNCkgc2l6ZSAxMngxMgorICAgIFJlbmRlckJ1dHRv
biB7SU5QVVR9IGF0ICgyNDAsMCkgc2l6ZSAyMHgyMAogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9
IGF0ICgyNjAsMCkgc2l6ZSAyMHgyMAogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyODAs
MCkgc2l6ZSAyMHgyMAogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgzMDAsMCkgc2l6ZSAy
MHgyMAotLSAKMS42LjMuMw==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61153</attachid>
            <date>2010-07-10 04:38:39 -0700</date>
            <delta_ts>2010-07-16 00:32:26 -0700</delta_ts>
            <desc>fullscreen video support in WebKit/gtk</desc>
            <filename>fullscreen-video-support-in-WebKitgtk.patch</filename>
            <type>text/plain</type>
            <size>33398</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSAxZTdlYjQ5MTlmZDY5Y2QxYjUyNmJiODY0NTNlOTVkM2EzODljNDAyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUaHUsIDEzIE1heSAyMDEwIDE1OjQ1OjA1ICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
ZnVsbHNjcmVlbiB2aWRlbyBzdXBwb3J0IGluIFdlYktpdC9ndGsKCi0tLQogQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEwICsKIEdOVW1ha2Vm
aWxlLmFtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiBXZWJL
aXQvZ3RrL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNzMgKysr
CiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAgICAgICB8ICAg
MjUgKwogV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaCAgICAgICAg
fCAgICA2ICsKIC4uLi9XZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNw
cCAgIHwgIDU4MiArKysrKysrKysrKysrKysrKysrKwogLi4uL2d0ay9XZWJDb3JlU3VwcG9ydC9G
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmggfCAgMTAwICsrKysKIFdlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHByaXZhdGUuY3BwICAgICAgICAgICAgICAgIHwgICAzNiArKwogV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0cHJpdmF0ZS5oICAgICAgICAgICAgICAgICAgfCAgICA3ICsKIDkgZmlsZXMg
Y2hhbmdlZCwgODQxIGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAx
MDA2NDQgV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
LmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlci5oCgpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9n
CmluZGV4IGY0NGU1OGYuLjYxN2ZhODcgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wNy0xMCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBu
b3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW0dTdHJlYW1lcl0gR1RLIFhPdmVybGF5IHN1cHBvcnQgaW4gR1N0cmVhbWVy
R1dvcmxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
OTQ3NAorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IEFkZGVkIG5ldyBGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyIGZpbGVzIGluIHRoZQorICAgICAgICBidWlsZC4KKwogMjAxMC0wNS0yOCAg
UGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCmRpZmYgLS1naXQgYS9HTlVtYWtlZmlsZS5hbSBiL0dOVW1h
a2VmaWxlLmFtCmluZGV4IGNjYmUyOGYuLjQzNzg5NzkgMTAwNjQ0Ci0tLSBhL0dOVW1ha2VmaWxl
LmFtCisrKyBiL0dOVW1ha2VmaWxlLmFtCkBAIC0zNzcsNiArMzc3LDggQEAgd2Via2l0Z3RrX3Nv
dXJjZXMgKz0gXAogCVdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmgg
XAogCVdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwIFwK
IAlXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmggXAorCVdl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAgXAor
CVdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oIFwK
IAlXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5jcHAgXAogCVdl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmggXAogCVdlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvUGFzdGVib2FyZEhlbHBlckd0ay5jcHAgXApkaWZmIC0tZ2l0IGEv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCBmNDZlZGIx
Li44MDFiZTFhIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDEwLTA3LTEwICBQaGlsaXBwZSBOb3Jt
YW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBbR1N0cmVhbWVyXSBHVEsgWE92ZXJsYXkgc3VwcG9ydCBpbiBH
U3RyZWFtZXJHV29ybGQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM5NDc0CisKKyAgICAgICAgTmV3IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIgb2Jq
ZWN0LCBwcml2YXRlIGluIHRoZSB3ZWJ2aWV3LiBJdAorICAgICAgICBpcyBjcmVhdGVkIHdoZW4g
dGhlIHVzZXIgcHJlc3NlcyB0aGUgZnVsbHNjcmVlbiBidXR0b24gb2YgdGhlCisgICAgICAgIHZp
ZGVvIGNvbnRyb2xzLiBWaWRlbyBpcyBkaXNwbGF5ZWQgaW4gZnVsbHNjcmVlbiwgY29udHJvbHMg
YXJlCisgICAgICAgIGRpc3BsYXllZCB3aGVuIHRoZSB1c2VyIG1vdmVzIHRoZSBtb3VzZSBhbmQg
d2hlbiB0aGUgdmlkZW8gaXMKKyAgICAgICAgcGF1c2VkLiBUaGVyZSdzIGFsc28gYmFzaWMga2V5
Ym9hcmQgc2hvcnRjdXRzIHN1cHBvcnQ6IEYvZiB0bworICAgICAgICBsZWF2ZSBmdWxsc2NyZWVu
LCBzcGFjZSB0byB0b2dnbGUgcGxheS9wYXVzZSBhbmQgdXAvZG93biB0bworICAgICAgICBjb250
cm9sIHZvbHVtZS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6c3VwcG9ydHNGdWxsc2NyZWVuRm9y
Tm9kZSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6ZW50ZXJGdWxsc2NyZWVuRm9y
Tm9kZSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6ZXhpdEZ1bGxzY3JlZW5Gb3JO
b2RlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaDoKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcDogQWRkZWQu
CisgICAgICAgIChoaWRlSHVkQ2FsbGJhY2spOgorICAgICAgICAob25GdWxsc2NyZWVuR3RrTW90
aW9uTm90aWZ5RXZlbnQpOgorICAgICAgICAob25GdWxsc2NyZWVuR3RrQWN0aXZlTm90aWZpY2F0
aW9uKToKKyAgICAgICAgKG9uRnVsbHNjcmVlbkd0a0NvbmZpZ3VyZUV2ZW50KToKKyAgICAgICAg
KG9uRnVsbHNjcmVlbkd0a0Rlc3Ryb3kpOgorICAgICAgICAodG9nZ2xlUGxheVBhdXNlQWN0aXZh
dGVkKToKKyAgICAgICAgKGV4aXRGdWxsc2NyZWVuQWN0aXZhdGVkKToKKyAgICAgICAgKHByb2dy
ZXNzQmFyVXBkYXRlQ2FsbGJhY2spOgorICAgICAgICAodGltZVNjYWxlQnV0dG9uUHJlc3NlZCk6
CisgICAgICAgICh0aW1lU2NhbGVCdXR0b25SZWxlYXNlZCk6CisgICAgICAgICh0aW1lU2NhbGVW
YWx1ZUNoYW5nZWQpOgorICAgICAgICAodm9sdW1lVmFsdWVDaGFuZ2VkKToKKyAgICAgICAgKHBs
YXllclZvbHVtZUNoYW5nZWRDYWxsYmFjayk6CisgICAgICAgIChwbGF5ZXJNdXRlQ2hhbmdlZENh
bGxiYWNrKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXIpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6fkZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlcjo6c2V0TWVkaWFFbGVtZW50KToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXI6Omd0a0NvbmZpZ3VyZSk6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpz
aG93SHVkKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmhpZGVIdWQpOgor
ICAgICAgICAob25GdWxsc2NyZWVuR3RrS2V5UHJlc3NFdmVudCk6CisgICAgICAgIChGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyOjplbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAoRnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlcjo6dXBkYXRlSHVkUG9zaXRpb24pOgorICAgICAgICAoRnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlcjo6ZXhpdE9uVXNlclJlcXVlc3QpOgorICAgICAgICAoRnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlcjo6ZXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlcjo6Y2FuUGxheSk6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyOjpwbGF5KToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnBhdXNlKToK
KyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnBsYXlTdGF0ZUNoYW5nZWQpOgor
ICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dG9nZ2xlUGxheSk6CisgICAgICAg
IChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp2b2x1bWUpOgorICAgICAgICAoRnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlcjo6bXV0ZWQpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlcjo6c2V0Vm9sdW1lKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnZv
bHVtZUNoYW5nZWQpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6bXV0ZUNo
YW5nZWQpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6Y3VycmVudFRpbWUp
OgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6c2V0Q3VycmVudFRpbWUpOgor
ICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZHVyYXRpb24pOgorICAgICAgICAo
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6cGVyY2VudExvYWRlZCk6CisgICAgICAgIChGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyOjpiZWdpblNlZWspOgorICAgICAgICAoRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlcjo6ZG9TZWVrKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXI6OmVuZFNlZWspOgorICAgICAgICAodGltZVRvU3RyaW5nKToKKyAgICAgICAgKEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI6OnVwZGF0ZUh1ZFByb2dyZXNzQmFyKToKKyAgICAgICAgKEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXI6OmNyZWF0ZUh1ZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oOiBBZGRlZC4KKyAgICAgICAgKEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI6Om1lZGlhRWxlbWVudCk6CisgICAgICAgICogd2Via2l0L3dlYmtp
dHByaXZhdGUuY3BwOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2VudGVyX2Z1bGxzY3JlZW4p
OgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2V4aXRfZnVsbHNjcmVlbik6CisgICAgICAgICog
d2Via2l0L3dlYmtpdHByaXZhdGUuaDoKKwogMjAxMC0wNy0wNyAgU2FtIFdlaW5pZyAgPHNhbUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KZGlmZiAt
LWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcCBiL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAppbmRleCBiYjQ2OWM1
Li44MWM4NWJiIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEd0ay5jcHAKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRH
dGsuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVk
ZSAiRnJhbWVMb2FkUmVxdWVzdC5oIgogI2luY2x1ZGUgIkd0a1ZlcnNpb25pbmcuaCIKKyNpbmNs
dWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCkBAIC02MTcsNCArNjE4LDI4
IEBAIHZvaWQgQ2hyb21lQ2xpZW50OjpjYW5jZWxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWUqIGZyCiAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHdl
YlZpZXcsICJnZW9sb2NhdGlvbi1wb2xpY3ktZGVjaXNpb24tY2FuY2VsbGVkIiwgd2ViRnJhbWUp
OwogfQogCisjaWYgRU5BQkxFKFZJREVPKQorCitib29sIENocm9tZUNsaWVudDo6c3VwcG9ydHNG
dWxsc2NyZWVuRm9yTm9kZShjb25zdCBOb2RlKiBub2RlKQoreworICAgIHJldHVybiBub2RlLT5o
YXNUYWdOYW1lKEhUTUxOYW1lczo6dmlkZW9UYWcpOworfQorCit2b2lkIENocm9tZUNsaWVudDo6
ZW50ZXJGdWxsc2NyZWVuRm9yTm9kZShOb2RlKiBub2RlKQoreworICAgIFdlYkNvcmU6OkZyYW1l
KiBmcmFtZSA9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCk7CisgICAgV2ViS2l0V2ViRnJhbWUq
IHdlYkZyYW1lID0ga2l0KGZyYW1lKTsKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gZ2V0
Vmlld0Zyb21GcmFtZSh3ZWJGcmFtZSk7CisgICAgd2Via2l0X3dlYl92aWV3X2VudGVyX2Z1bGxz
Y3JlZW4od2ViVmlldywgbm9kZSk7Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50OjpleGl0RnVsbHNj
cmVlbkZvck5vZGUoTm9kZSogbm9kZSkKK3sKKyAgICBXZWJDb3JlOjpGcmFtZSogZnJhbWUgPSBu
b2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpOworICAgIFdlYktpdFdlYkZyYW1lKiB3ZWJGcmFtZSA9
IGtpdChmcmFtZSk7CisgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IGdldFZpZXdGcm9tRnJh
bWUod2ViRnJhbWUpOworICAgIHdlYmtpdF93ZWJfdmlld19leGl0X2Z1bGxzY3JlZW4od2ViVmll
dyk7Cit9CisjZW5kaWYKKwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRHdGsuaCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50R3RrLmgKaW5kZXggNDZkMDE1ZS4uYjBmZDQwOSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCkBAIC0xMjIsNiArMTIyLDEyIEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lv
bkZvckZyYW1lKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6R2VvbG9jYXRpb24qKTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGNhbmNlbEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RGb3JGcmFt
ZShXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6Okdlb2xvY2F0aW9uKik7CiAKKyNpZiBFTkFCTEUo
VklERU8pCisgICAgICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0Z1bGxzY3JlZW5Gb3JOb2RlKGNv
bnN0IFdlYkNvcmU6Ok5vZGUqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVl
bkZvck5vZGUoV2ViQ29yZTo6Tm9kZSopOworICAgICAgICB2aXJ0dWFsIHZvaWQgZXhpdEZ1bGxz
Y3JlZW5Gb3JOb2RlKFdlYkNvcmU6Ok5vZGUqKTsKKyNlbmRpZgorCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgV2ViS2l0V2ViVmlldyogbV93ZWJWaWV3OwogICAgICAgICBXZWJDb3JlOjpLVVJMIG1f
aG92ZXJlZExpbmtVUkw7CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Z1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9G
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4wNGU3Y2Q4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcApAQCAtMCwwICsxLDU4MiBAQAorLyoK
KyAqICBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTAorICoKKyAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU8pCisKKyNpbmNsdWRlICJGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyLmgiCisKKyNpbmNsdWRlICJHU3RyZWFtZXJHV29ybGQuaCIKKyNpbmNsdWRl
ICJNZWRpYVBsYXllci5oIgorCisjaW5jbHVkZSA8Z2RrL2dkay5oPgorI2luY2x1ZGUgPGdkay9n
ZGtrZXlzeW1zLmg+CisjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNsdWRlIDxnc3Qv
Z3N0Lmg+CisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKKyNkZWZpbmUgSFVEX0FVVE9fSElERV9JTlRFUlZBTCAz
MDAwIC8vIDMgc2Vjb25kcworI2RlZmluZSBQUk9HUkVTU19CQVJfVVBEQVRFX0lOVEVSVkFMIDE1
MCAvLyAxNTBtcworI2RlZmluZSBWT0xVTUVfVVBfT0ZGU0VUIDAuMDUgLy8gNSUKKyNkZWZpbmUg
Vk9MVU1FX0RPV05fT0ZGU0VUIDAuMDUgLy8gNSUKKworc3RhdGljIGdib29sZWFuIGhpZGVIdWRD
YWxsYmFjayhncG9pbnRlciBkYXRhKQoreworICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIq
IGNvbnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0PEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIq
PihkYXRhKTsKKyAgICBjb250cm9sbGVyLT5oaWRlSHVkKCk7CisgICAgcmV0dXJuIEZBTFNFOwor
fQorCitzdGF0aWMgZ2Jvb2xlYW4gb25GdWxsc2NyZWVuR3RrTW90aW9uTm90aWZ5RXZlbnQoR3Rr
V2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50TW90aW9uKiBldmVudCwgZ3BvaW50ZXIgZGF0YSkKK3sK
KyAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBjb250cm9sbGVyID0gcmVpbnRlcnByZXRf
Y2FzdDxGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKj4oZGF0YSk7CisgICAgY29udHJvbGxlci0+
c2hvd0h1ZCh0cnVlKTsKKyAgICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIHZvaWQgb25GdWxs
c2NyZWVuR3RrQWN0aXZlTm90aWZpY2F0aW9uKEd0a1dpZGdldCogd2lkZ2V0LCBHUGFyYW1TcGVj
KiBwcm9wZXJ0eSwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyKiBjb250cm9sbGVyID0gcmVpbnRlcnByZXRfY2FzdDxGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyKj4oZGF0YSk7CisgICAgaWYgKCFndGtfd2luZG93X2lzX2FjdGl2ZShHVEtfV0lORE9XKHdp
ZGdldCkpKQorICAgICAgICBjb250cm9sbGVyLT5oaWRlSHVkKCk7Cit9CisKK3N0YXRpYyBnYm9v
bGVhbiBvbkZ1bGxzY3JlZW5HdGtDb25maWd1cmVFdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2Rr
RXZlbnRDb25maWd1cmUqIGV2ZW50LCBncG9pbnRlciBkYXRhKQoreworICAgIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0PEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXIqPihkYXRhKTsKKyAgICBjb250cm9sbGVyLT5ndGtDb25maWd1cmUoZXZl
bnQpOworICAgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgdm9pZCBvbkZ1bGxzY3JlZW5HdGtE
ZXN0cm95KEd0a1dpZGdldCogd2lkZ2V0LCBncG9pbnRlciBkYXRhKQoreworICAgIEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0PEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXIqPihkYXRhKTsKKyAgICBjb250cm9sbGVyLT5leGl0RnVsbHNjcmVl
bigpOworfQorCitzdGF0aWMgdm9pZCB0b2dnbGVQbGF5UGF1c2VBY3RpdmF0ZWQoR3RrQWN0aW9u
KiBhY3Rpb24sIGdwb2ludGVyIGRhdGEpCit7CisgICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ciogY29udHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
cio+KGRhdGEpOworICAgIGNvbnRyb2xsZXItPnRvZ2dsZVBsYXkoKTsKK30KKworc3RhdGljIHZv
aWQgZXhpdEZ1bGxzY3JlZW5BY3RpdmF0ZWQoR3RrQWN0aW9uKiBhY3Rpb24sIGdwb2ludGVyIGRh
dGEpCit7CisgICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogY29udHJvbGxlciA9IHJlaW50
ZXJwcmV0X2Nhc3Q8RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcio+KGRhdGEpOworICAgIGNvbnRy
b2xsZXItPmV4aXRPblVzZXJSZXF1ZXN0KCk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiBwcm9ncmVz
c0JhclVwZGF0ZUNhbGxiYWNrKGdwb2ludGVyIGRhdGEpCit7CisgICAgRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlciogY29udHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcio+KGRhdGEpOworICAgIHJldHVybiBjb250cm9sbGVyLT51cGRhdGVIdWRQcm9n
cmVzc0JhcigpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gdGltZVNjYWxlQnV0dG9uUHJlc3NlZChH
dGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRCdXR0b24qIGV2ZW50LCBncG9pbnRlciBkYXRhKQor
eworICAgIGlmIChldmVudC0+dHlwZSAhPSBHREtfQlVUVE9OX1BSRVNTKQorICAgICAgICByZXR1
cm4gRkFMU0U7CisKKyAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBjb250cm9sbGVyID0g
cmVpbnRlcnByZXRfY2FzdDxGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKj4oZGF0YSk7CisgICAg
Y29udHJvbGxlci0+YmVnaW5TZWVrKCk7CisgICAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMg
Z2Jvb2xlYW4gdGltZVNjYWxlQnV0dG9uUmVsZWFzZWQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2
ZW50QnV0dG9uKiBldmVudCwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyKiBjb250cm9sbGVyID0gcmVpbnRlcnByZXRfY2FzdDxGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyKj4oZGF0YSk7CisgICAgY29udHJvbGxlci0+ZW5kU2VlaygpOworICAgIHJldHVy
biBGQUxTRTsKK30KKworc3RhdGljIHZvaWQgdGltZVNjYWxlVmFsdWVDaGFuZ2VkKEd0a1dpZGdl
dCogd2lkZ2V0LCBncG9pbnRlciBkYXRhKQoreworICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXIqIGNvbnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0PEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXIqPihkYXRhKTsKKyAgICBjb250cm9sbGVyLT5kb1NlZWsoKTsKK30KKworc3RhdGljIHZvaWQg
dm9sdW1lVmFsdWVDaGFuZ2VkKEd0a1NjYWxlQnV0dG9uICpidXR0b24sIGdkb3VibGUgdmFsdWUs
IGdwb2ludGVyIGRhdGEpCit7CisgICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogY29udHJv
bGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcio+KGRhdGEp
OworICAgIGNvbnRyb2xsZXItPnNldFZvbHVtZShzdGF0aWNfY2FzdDxmbG9hdD4odmFsdWUpKTsK
K30KKwordm9pZCBwbGF5ZXJWb2x1bWVDaGFuZ2VkQ2FsbGJhY2soR09iamVjdCAqZWxlbWVudCwg
R1BhcmFtU3BlYyAqcHNwZWMsIGdwb2ludGVyIGRhdGEpCit7CisgICAgRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlciogY29udHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcio+KGRhdGEpOworICAgIGNvbnRyb2xsZXItPnZvbHVtZUNoYW5nZWQoKTsKK30K
Kwordm9pZCBwbGF5ZXJNdXRlQ2hhbmdlZENhbGxiYWNrKEdPYmplY3QgKmVsZW1lbnQsIEdQYXJh
bVNwZWMgKnBzcGVjLCBncG9pbnRlciBkYXRhKQoreworICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXIqIGNvbnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0PEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXIqPihkYXRhKTsKKyAgICBjb250cm9sbGVyLT5tdXRlQ2hhbmdlZCgpOworfQorCitGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKCkKKyAgICA6
IG1faHVkVGltZW91dElkKDApCisgICAgLCBtX3Byb2dyZXNzQmFyVXBkYXRlSWQoMCkKKyAgICAs
IG1fc2Vla0xvY2soZmFsc2UpCisgICAgLCBtX3dpbmRvdygwKQorICAgICwgbV9odWRXaW5kb3co
MCkKK3sKK30KKworRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6fkZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXIoKQoreworICAgIGV4aXRGdWxsc2NyZWVuKCk7Cit9CisKK3ZvaWQgRnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlcjo6c2V0TWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlh
RWxlbWVudCkKK3sKKyAgICBpZiAobWVkaWFFbGVtZW50ID09IG1fbWVkaWFFbGVtZW50KQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX21lZGlhRWxlbWVudCA9IG1lZGlhRWxlbWVudDsKKyAgICBp
ZiAoIW1fbWVkaWFFbGVtZW50KSB7CisgICAgICAgIC8vIENhbid0IGRvIGZ1bGwtc2NyZWVuLCBq
dXN0IGdldCBvdXQKKyAgICAgICAgZXhpdEZ1bGxzY3JlZW4oKTsKKyAgICB9Cit9CisKK3ZvaWQg
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6Z3RrQ29uZmlndXJlKEdka0V2ZW50Q29uZmlndXJl
KiBldmVudCkKK3sKKyAgICB1cGRhdGVIdWRQb3NpdGlvbigpOworfQorCit2b2lkIEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI6OnNob3dIdWQoYm9vbCBhdXRvSGlkZSkKK3sKKyAgICBpZiAoIW1f
aHVkV2luZG93KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWd0a193aW5kb3dfaXNfYWN0
aXZlKEdUS19XSU5ET1cobV93aW5kb3cpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1f
aHVkVGltZW91dElkKSB7CisgICAgICAgIGdfc291cmNlX3JlbW92ZShtX2h1ZFRpbWVvdXRJZCk7
CisgICAgICAgIG1faHVkVGltZW91dElkID0gMDsKKyAgICB9CisKKyAgICAvLyBTaG93IHRoZSBj
dXJzb3IuCisgICAgR2RrV2luZG93KiB3aW5kb3cgPSBndGtfd2lkZ2V0X2dldF93aW5kb3cobV93
aW5kb3cpOworICAgIGdka193aW5kb3dfc2V0X2N1cnNvcih3aW5kb3csIG1fY3Vyc29yKTsKKwor
ICAgIC8vIFVwZGF0ZSB0aGUgcHJvZ3Jlc3MgYmFyIGltbWVkaWF0ZWx5IGJlZm9yZSBzaG93aW5n
IHRoZSB3aW5kb3cuCisgICAgdXBkYXRlSHVkUHJvZ3Jlc3NCYXIoKTsKKyAgICBndGtfd2lkZ2V0
X3Nob3dfYWxsKG1faHVkV2luZG93KTsKKyAgICB1cGRhdGVIdWRQb3NpdGlvbigpOworCisgICAg
Ly8gU3RhcnQgcGVyaW9kaWMgdXBkYXRlcyBvZiB0aGUgcHJvZ3Jlc3MgYmFyLgorICAgIGlmICgh
bV9wcm9ncmVzc0JhclVwZGF0ZUlkKQorICAgICAgICBtX3Byb2dyZXNzQmFyVXBkYXRlSWQgPSBn
X3RpbWVvdXRfYWRkKFBST0dSRVNTX0JBUl9VUERBVEVfSU5URVJWQUwsIHByb2dyZXNzQmFyVXBk
YXRlQ2FsbGJhY2ssIHRoaXMpOworCisgICAgLy8gSGlkZSB0aGUgaHVkIGluIGZldyBzZWNvbmRz
LCBpZiByZXF1ZXN0ZWQuCisgICAgaWYgKGF1dG9IaWRlKQorICAgICAgICBtX2h1ZFRpbWVvdXRJ
ZCA9IGdfdGltZW91dF9hZGQoSFVEX0FVVE9fSElERV9JTlRFUlZBTCwgaGlkZUh1ZENhbGxiYWNr
LCB0aGlzKTsKK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpoaWRlSHVkKCkK
K3sKKyAgICBpZiAobV9odWRUaW1lb3V0SWQpIHsKKyAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKG1f
aHVkVGltZW91dElkKTsKKyAgICAgICAgbV9odWRUaW1lb3V0SWQgPSAwOworICAgIH0KKworICAg
IGlmICghbV9odWRXaW5kb3cpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEtlZXAgdGhlIGh1
ZCB2aXNpYmxlIGlmIGEgc2VlayBpcyBpbiBwcm9ncmVzcyBvciBpZiB0aGUgdm9sdW1lCisgICAg
Ly8gcG9wdXAgaXMgdmlzaWJsZS4KKyAgICBHdGtXaWRnZXQqIHZvbHVtZVBvcHVwID0gZ3RrX3Nj
YWxlX2J1dHRvbl9nZXRfcG9wdXAoR1RLX1NDQUxFX0JVVFRPTihtX3ZvbHVtZUJ1dHRvbikpOwor
ICAgIGlmIChtX3NlZWtMb2NrIHx8IGd0a193aWRnZXRfZ2V0X3Zpc2libGUodm9sdW1lUG9wdXAp
KSB7CisgICAgICAgIHNob3dIdWQodHJ1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBHZGtXaW5kb3cqIHdpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyhtX3dpbmRvdyk7Cisg
ICAgR2RrQ3Vyc29yKiBjdXJzb3IgPSBnZGtfY3Vyc29yX25ldyhHREtfQkxBTktfQ1VSU09SKTsK
KyAgICBnZGtfd2luZG93X3NldF9jdXJzb3Iod2luZG93LCBjdXJzb3IpOworCisgICAgZ3RrX3dp
ZGdldF9oaWRlX2FsbChtX2h1ZFdpbmRvdyk7CisKKyAgICBpZiAobV9wcm9ncmVzc0JhclVwZGF0
ZUlkKSB7CisgICAgICAgIGdfc291cmNlX3JlbW92ZShtX3Byb2dyZXNzQmFyVXBkYXRlSWQpOwor
ICAgICAgICBtX3Byb2dyZXNzQmFyVXBkYXRlSWQgPSAwOworICAgIH0KK30KKworc3RhdGljIGdi
b29sZWFuIG9uRnVsbHNjcmVlbkd0a0tleVByZXNzRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdk
a0V2ZW50S2V5KiBldmVudCwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyKiBjb250cm9sbGVyID0gcmVpbnRlcnByZXRfY2FzdDxGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyKj4oZGF0YSk7CisKKyAgICBzd2l0Y2ggKGV2ZW50LT5rZXl2YWwpIHsKKyAgICBj
YXNlIEdES19Fc2NhcGU6CisgICAgY2FzZSAnZic6CisgICAgY2FzZSAnRic6CisgICAgICAgIGNv
bnRyb2xsZXItPmV4aXRPblVzZXJSZXF1ZXN0KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
R0RLX3NwYWNlOgorICAgIGNhc2UgR0RLX1JldHVybjoKKyAgICAgICAgY29udHJvbGxlci0+dG9n
Z2xlUGxheSgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdES19VcDoKKyAgICAgICAgLy8g
dm9sdW1lIHVwCisgICAgICAgIGNvbnRyb2xsZXItPnNldFZvbHVtZShjb250cm9sbGVyLT52b2x1
bWUoKSArIFZPTFVNRV9VUF9PRkZTRVQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdES19E
b3duOgorICAgICAgICAvLyB2b2x1bWUgZG93bgorICAgICAgICBjb250cm9sbGVyLT5zZXRWb2x1
bWUoY29udHJvbGxlci0+dm9sdW1lKCkgLSBWT0xVTUVfRE9XTl9PRkZTRVQpOworICAgICAgICBi
cmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4g
VFJVRTsKK30KKworCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmVudGVyRnVsbHNj
cmVlbigpCit7CisgICAgaWYgKCFtX21lZGlhRWxlbWVudCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKG1fbWVkaWFFbGVtZW50LT5wbGF0Zm9ybU1lZGlhKCkudHlwZSAhPSBXZWJDb3JlOjpQ
bGF0Zm9ybU1lZGlhOjpHU3RyZWFtZXJHV29ybGRUeXBlKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX3dpbmRvdyA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3RrV2lkZ2V0Kj4obV9tZWRpYUVsZW1lbnQt
PnBsYXRmb3JtTWVkaWEoKS5tZWRpYS5nc3RyZWFtZXJHV29ybGQtPmVudGVyRnVsbHNjcmVlbigp
KTsKKworICAgIEdzdEVsZW1lbnQqIHBpcGVsaW5lID0gbV9tZWRpYUVsZW1lbnQtPnBsYXRmb3Jt
TWVkaWEoKS5tZWRpYS5nc3RyZWFtZXJHV29ybGQtPnBpcGVsaW5lKCk7CisgICAgZ19zaWduYWxf
Y29ubmVjdChwaXBlbGluZSwgIm5vdGlmeTo6dm9sdW1lIiwgR19DQUxMQkFDSyhwbGF5ZXJWb2x1
bWVDaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KHBpcGVsaW5l
LCAibm90aWZ5OjptdXRlIiwgR19DQUxMQkFDSyhwbGF5ZXJNdXRlQ2hhbmdlZENhbGxiYWNrKSwg
dGhpcyk7CisKKyAgICBpZiAoIW1faHVkV2luZG93KQorICAgICAgICBjcmVhdGVIdWQoKTsKKwor
ICAgIC8vIEVuc3VyZSBibGFjayBiYWNrZ3JvdW5kLgorICAgIEdka0NvbG9yIGNvbG9yOworICAg
IGdka19jb2xvcl9wYXJzZSgiYmxhY2siLCAmY29sb3IpOworICAgIGd0a193aWRnZXRfbW9kaWZ5
X2JnKG1fd2luZG93LCBHVEtfU1RBVEVfTk9STUFMLCAmY29sb3IpOworICAgIGd0a193aWRnZXRf
c2V0X2RvdWJsZV9idWZmZXJlZChtX3dpbmRvdywgRkFMU0UpOworCisgICAgZ19zaWduYWxfY29u
bmVjdChtX3dpbmRvdywgImtleS1wcmVzcy1ldmVudCIsIEdfQ0FMTEJBQ0sob25GdWxsc2NyZWVu
R3RrS2V5UHJlc3NFdmVudCksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93aW5kb3cs
ICJkZXN0cm95IiwgR19DQUxMQkFDSyhvbkZ1bGxzY3JlZW5HdGtEZXN0cm95KSwgdGhpcyk7Cisg
ICAgZ19zaWduYWxfY29ubmVjdChtX3dpbmRvdywgIm5vdGlmeTo6aXMtYWN0aXZlIiwgR19DQUxM
QkFDSyhvbkZ1bGxzY3JlZW5HdGtBY3RpdmVOb3RpZmljYXRpb24pLCB0aGlzKTsKKworCisgICAg
Z3RrX3dpZGdldF9zaG93X2FsbChtX3dpbmRvdyk7CisgICAgZ3RrX3dpZGdldF9yZWFsaXplKG1f
d2luZG93KTsKKworICAgIEdka1dpbmRvdyogd2luZG93ID0gZ3RrX3dpZGdldF9nZXRfd2luZG93
KG1fd2luZG93KTsKKyAgICBHZGtDdXJzb3IqIGN1cnNvciA9IGdka19jdXJzb3JfbmV3KEdES19C
TEFOS19DVVJTT1IpOworICAgIG1fY3Vyc29yID0gZ2RrX3dpbmRvd19nZXRfY3Vyc29yKHdpbmRv
dyk7CisgICAgZ2RrX3dpbmRvd19zZXRfY3Vyc29yKHdpbmRvdywgY3Vyc29yKTsKKyAgICBnZGtf
Y3Vyc29yX3VucmVmKGN1cnNvcik7CisKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2luZG93LCAi
bW90aW9uLW5vdGlmeS1ldmVudCIsIEdfQ0FMTEJBQ0sob25GdWxsc2NyZWVuR3RrTW90aW9uTm90
aWZ5RXZlbnQpLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2luZG93LCAiY29uZmln
dXJlLWV2ZW50IiwgR19DQUxMQkFDSyhvbkZ1bGxzY3JlZW5HdGtDb25maWd1cmVFdmVudCksIHRo
aXMpOworCisgICAgZ3RrX3dpbmRvd19mdWxsc2NyZWVuKEdUS19XSU5ET1cobV93aW5kb3cpKTsK
KyAgICBndGtfd2lkZ2V0X3Nob3dfYWxsKG1faHVkV2luZG93KTsKKyAgICBzaG93SHVkKHRydWUp
OworfQorCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnVwZGF0ZUh1ZFBvc2l0aW9u
KCkKK3sKKyAgICBpZiAoIW1faHVkV2luZG93KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBH
ZXQgdGhlIHNjcmVlbiByZWN0YW5nbGUuCisgICAgR2RrU2NyZWVuKiBzY3JlZW4gPSBndGtfd2lu
ZG93X2dldF9zY3JlZW4oR1RLX1dJTkRPVyhtX3dpbmRvdykpOworICAgIEdka1dpbmRvdyogd2lu
ZG93ID0gZ3RrX3dpZGdldF9nZXRfd2luZG93KG1fd2luZG93KTsKKyAgICBHZGtSZWN0YW5nbGUg
ZnVsbHNjcmVlblJlY3RhbmdsZTsKKyAgICBnZGtfc2NyZWVuX2dldF9tb25pdG9yX2dlb21ldHJ5
KHNjcmVlbiwgZ2RrX3NjcmVlbl9nZXRfbW9uaXRvcl9hdF93aW5kb3coc2NyZWVuLCB3aW5kb3cp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZ1bGxzY3JlZW5SZWN0YW5n
bGUpOworCisgICAgLy8gR2V0IHRoZSBwb3B1cCB3aW5kb3cgc2l6ZS4KKyAgICBpbnQgaHVkV2lk
dGgsIGh1ZEhlaWdodDsKKyAgICBndGtfd2luZG93X2dldF9zaXplKEdUS19XSU5ET1cobV9odWRX
aW5kb3cpLCAmaHVkV2lkdGgsICZodWRIZWlnaHQpOworCisgICAgLy8gU2NhbGUgdGhlIGh1ZCB0
byB0aGUgZnVsbCB3aWR0aCBvZiB0aGUgc2NyZWVuLgorICAgIGd0a193aW5kb3dfcmVzaXplKEdU
S19XSU5ET1cobV9odWRXaW5kb3cpLCBmdWxsc2NyZWVuUmVjdGFuZ2xlLndpZHRoLCBodWRIZWln
aHQpOworCisgICAgLy8gTW92ZSB0aGUgaHVkIHRvIHRoZSBib3R0b20gb2YgdGhlIHNjcmVlbi4K
KyAgICBndGtfd2luZG93X21vdmUoR1RLX1dJTkRPVyhtX2h1ZFdpbmRvdyksIGZ1bGxzY3JlZW5S
ZWN0YW5nbGUueCwKKyAgICAgICAgICAgICAgICAgICAgZnVsbHNjcmVlblJlY3RhbmdsZS5oZWln
aHQgKyBmdWxsc2NyZWVuUmVjdGFuZ2xlLnkgLSBodWRIZWlnaHQpOworfQorCit2b2lkIEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXI6OmV4aXRPblVzZXJSZXF1ZXN0KCkKK3sKKyAgICBtX21lZGlh
RWxlbWVudC0+ZXhpdEZ1bGxzY3JlZW4oKTsKK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyOjpleGl0RnVsbHNjcmVlbigpCit7CisgICAgaWYgKCFtX2h1ZFdpbmRvdykKKyAgICAg
ICAgcmV0dXJuOworCisgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKG1f
d2luZG93LCByZWludGVycHJldF9jYXN0PHZvaWQqPihvbkZ1bGxzY3JlZW5HdGtLZXlQcmVzc0V2
ZW50KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odGhpcykpOworICAgIGdfc2lnbmFsX2hhbmRs
ZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhtX3dpbmRvdywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
b25GdWxsc2NyZWVuR3RrRGVzdHJveSksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHRoaXMpKTsK
KyAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMobV93aW5kb3csIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9uRnVsbHNjcmVlbkd0a01vdGlvbk5vdGlmeUV2ZW50KSwgcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4odGhpcykpOworICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nv
bm5lY3RfYnlfZnVuYyhtX3dpbmRvdywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob25GdWxsc2Ny
ZWVuR3RrQ29uZmlndXJlRXZlbnQpLCByZWludGVycHJldF9jYXN0PHZvaWQqPih0aGlzKSk7CisK
KyAgICBHc3RFbGVtZW50KiBwaXBlbGluZSA9IG1fbWVkaWFFbGVtZW50LT5wbGF0Zm9ybU1lZGlh
KCkubWVkaWEuZ3N0cmVhbWVyR1dvcmxkLT5waXBlbGluZSgpOworICAgIGdfc2lnbmFsX2hhbmRs
ZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhwaXBlbGluZSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
cGxheWVyVm9sdW1lQ2hhbmdlZENhbGxiYWNrKSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odGhp
cykpOworICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhwaXBlbGluZSwg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocGxheWVyTXV0ZUNoYW5nZWRDYWxsYmFjayksIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KHRoaXMpKTsKKworICAgIGlmIChtX2h1ZFRpbWVvdXRJZCkgewor
ICAgICAgICBnX3NvdXJjZV9yZW1vdmUobV9odWRUaW1lb3V0SWQpOworICAgICAgICBtX2h1ZFRp
bWVvdXRJZCA9IDA7CisgICAgfQorCisgICAgaWYgKG1fcHJvZ3Jlc3NCYXJVcGRhdGVJZCkgewor
ICAgICAgICBnX3NvdXJjZV9yZW1vdmUobV9wcm9ncmVzc0JhclVwZGF0ZUlkKTsKKyAgICAgICAg
bV9wcm9ncmVzc0JhclVwZGF0ZUlkID0gMDsKKyAgICB9CisKKyAgICBpZiAobV9tZWRpYUVsZW1l
bnQtPnBsYXRmb3JtTWVkaWEoKS50eXBlID09IFdlYkNvcmU6OlBsYXRmb3JtTWVkaWE6OkdTdHJl
YW1lckdXb3JsZFR5cGUpCisgICAgICAgIG1fbWVkaWFFbGVtZW50LT5wbGF0Zm9ybU1lZGlhKCku
bWVkaWEuZ3N0cmVhbWVyR1dvcmxkLT5leGl0RnVsbHNjcmVlbigpOworCisgICAgZ3RrX3dpZGdl
dF9oaWRlX2FsbChtX3dpbmRvdyk7CisKKyAgICBndGtfd2lkZ2V0X2Rlc3Ryb3kobV9odWRXaW5k
b3cpOworICAgIG1faHVkV2luZG93ID0gMDsKK30KKworYm9vbCBGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyOjpjYW5QbGF5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnQgJiYg
bV9tZWRpYUVsZW1lbnQtPmNhblBsYXkoKTsKK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyOjpwbGF5KCkKK3sKKyAgICBpZiAobV9tZWRpYUVsZW1lbnQpCisgICAgICAgIG1fbWVk
aWFFbGVtZW50LT5wbGF5KG1fbWVkaWFFbGVtZW50LT5wcm9jZXNzaW5nVXNlckdlc3R1cmUoKSk7
CisKKyAgICBwbGF5U3RhdGVDaGFuZ2VkKCk7CisgICAgc2hvd0h1ZCh0cnVlKTsKK30KKwordm9p
ZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpwYXVzZSgpCit7CisgICAgaWYgKG1fbWVkaWFF
bGVtZW50KQorICAgICAgICBtX21lZGlhRWxlbWVudC0+cGF1c2UobV9tZWRpYUVsZW1lbnQtPnBy
b2Nlc3NpbmdVc2VyR2VzdHVyZSgpKTsKKworICAgIHBsYXlTdGF0ZUNoYW5nZWQoKTsKKyAgICBz
aG93SHVkKGZhbHNlKTsKK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpwbGF5
U3RhdGVDaGFuZ2VkKCkKK3sKKyAgICBpZiAoY2FuUGxheSgpKQorICAgICAgICBnX29iamVjdF9z
ZXQobV9wbGF5UGF1c2VBY3Rpb24sICJ0b29sdGlwIiwgXygiUGxheSIpLCAiaWNvbi1uYW1lIiwg
Im1lZGlhLXBsYXliYWNrLXN0YXJ0LXN5bWJvbGljIiwgTlVMTCk7CisgICAgZWxzZQorICAgICAg
ICBnX29iamVjdF9zZXQobV9wbGF5UGF1c2VBY3Rpb24sICJ0b29sdGlwIiwgXygiUGF1c2UiKSwg
Imljb24tbmFtZSIsICJtZWRpYS1wbGF5YmFjay1wYXVzZS1zeW1ib2xpYyIsIE5VTEwpOworfQor
Cit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnRvZ2dsZVBsYXkoKQoreworICAgIGlm
IChjYW5QbGF5KCkpCisgICAgICAgIHBsYXkoKTsKKyAgICBlbHNlCisgICAgICAgIHBhdXNlKCk7
Cit9CisKK2Zsb2F0IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnZvbHVtZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50ID8gbV9tZWRpYUVsZW1lbnQtPnZvbHVtZSgpIDog
MDsKK30KKworYm9vbCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjptdXRlZCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50ID8gbV9tZWRpYUVsZW1lbnQtPm11dGVkKCkgOiBm
YWxzZTsKK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpzZXRWb2x1bWUoZmxv
YXQgdm9sdW1lKQoreworICAgIGlmICh2b2x1bWUgPCAwLjAgfHwgdm9sdW1lID4gMS4wKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAobV9tZWRpYUVsZW1lbnQpIHsKKyAgICAgICAgRXhjZXB0
aW9uQ29kZSBlYzsKKyAgICAgICAgbV9tZWRpYUVsZW1lbnQtPnNldFZvbHVtZSh2b2x1bWUsIGVj
KTsKKyAgICB9Cit9CisKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dm9sdW1lQ2hh
bmdlZCgpCit7CisgICAgZ19zaWduYWxfaGFuZGxlcl9ibG9jayhtX3ZvbHVtZUJ1dHRvbiwgbV92
b2x1bWVVcGRhdGVJZCk7CisgICAgZ3RrX3NjYWxlX2J1dHRvbl9zZXRfdmFsdWUoR1RLX1NDQUxF
X0JVVFRPTihtX3ZvbHVtZUJ1dHRvbiksIHZvbHVtZSgpKTsKKyAgICBnX3NpZ25hbF9oYW5kbGVy
X3VuYmxvY2sobV92b2x1bWVCdXR0b24sIG1fdm9sdW1lVXBkYXRlSWQpOworfQorCit2b2lkIEZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6Om11dGVDaGFuZ2VkKCkKK3sKKyAgICBnX3NpZ25hbF9o
YW5kbGVyX2Jsb2NrKG1fdm9sdW1lQnV0dG9uLCBtX3ZvbHVtZVVwZGF0ZUlkKTsKKyAgICBndGtf
c2NhbGVfYnV0dG9uX3NldF92YWx1ZShHVEtfU0NBTEVfQlVUVE9OKG1fdm9sdW1lQnV0dG9uKSwg
bXV0ZWQoKSA/IDAgOiB2b2x1bWUoKSk7CisgICAgZ19zaWduYWxfaGFuZGxlcl91bmJsb2NrKG1f
dm9sdW1lQnV0dG9uLCBtX3ZvbHVtZVVwZGF0ZUlkKTsKK30KKworZmxvYXQgRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlcjo6Y3VycmVudFRpbWUoKSBjb25zdAoreworICAgIHJldHVybiBtX21lZGlh
RWxlbWVudCA/IG1fbWVkaWFFbGVtZW50LT5jdXJyZW50VGltZSgpIDogMDsKK30KKwordm9pZCBG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpzZXRDdXJyZW50VGltZShmbG9hdCB2YWx1ZSkKK3sK
KyAgICBpZiAobV9tZWRpYUVsZW1lbnQpIHsKKyAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAg
ICAgICAgbV9tZWRpYUVsZW1lbnQtPnNldEN1cnJlbnRUaW1lKHZhbHVlLCBlYyk7CisgICAgfQor
fQorCitmbG9hdCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpkdXJhdGlvbigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50ID8gbV9tZWRpYUVsZW1lbnQtPmR1cmF0aW9uKCkg
OiAwOworfQorCitmbG9hdCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpwZXJjZW50TG9hZGVk
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnQgPyBtX21lZGlhRWxlbWVudC0+
cGVyY2VudExvYWRlZCgpIDogMDsKK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
OjpiZWdpblNlZWsoKQoreworICAgIG1fc2Vla0xvY2sgPSB0cnVlOworCisgICAgaWYgKG1fbWVk
aWFFbGVtZW50KQorICAgICAgICBtX21lZGlhRWxlbWVudC0+YmVnaW5TY3J1YmJpbmcoKTsKK30K
Kwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpkb1NlZWsoKQoreworICAgIGlmICgh
bV9zZWVrTG9jaykKKyAgICAgICAgIHJldHVybjsKKworICAgIHNldEN1cnJlbnRUaW1lKGd0a19y
YW5nZV9nZXRfdmFsdWUoR1RLX1JBTkdFKG1fdGltZUhTY2FsZSkpKmR1cmF0aW9uKCkgLyAxMDAp
OworfQorCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmVuZFNlZWsoKQoreworICAg
IGlmIChtX21lZGlhRWxlbWVudCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnQtPmVuZFNjcnViYmlu
ZygpOworCisgICAgbV9zZWVrTG9jayA9IGZhbHNlOworfQorCitzdGF0aWMgU3RyaW5nIHRpbWVU
b1N0cmluZyhmbG9hdCB0aW1lKQoreworICAgIGlmICghaXNmaW5pdGUodGltZSkpCisgICAgICAg
IHRpbWUgPSAwOworICAgIGludCBzZWNvbmRzID0gZmFic2YodGltZSk7CisgICAgaW50IGhvdXJz
ID0gc2Vjb25kcyAvICg2MCAqIDYwKTsKKyAgICBpbnQgbWludXRlcyA9IChzZWNvbmRzIC8gNjAp
ICUgNjA7CisgICAgc2Vjb25kcyAlPSA2MDsKKworICAgIGlmIChob3VycykgeworICAgICAgICBp
ZiAoaG91cnMgPiA5KQorICAgICAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlcyUwMmQ6
JTAyZDolMDJkIiwgKHRpbWUgPCAwID8gIi0iIDogIiIpLCBob3VycywgbWludXRlcywgc2Vjb25k
cyk7CisgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJXMlMDFkOiUwMmQ6JTAyZCIsICh0
aW1lIDwgMCA/ICItIiA6ICIiKSwgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpOworICAgIH0KKwor
ICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJXMlMDJkOiUwMmQiLCAodGltZSA8IDAgPyAiLSIg
OiAiIiksIG1pbnV0ZXMsIHNlY29uZHMpOworfQorCitnYm9vbGVhbiBGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyOjp1cGRhdGVIdWRQcm9ncmVzc0JhcigpCit7CisgICAgZmxvYXQgbWVkaWFEdXJh
dGlvbihkdXJhdGlvbigpKTsKKyAgICBmbG9hdCBtZWRpYVBvc2l0aW9uKGN1cnJlbnRUaW1lKCkp
OworCisgICAgaWYgKCFtX3NlZWtMb2NrKSB7CisgICAgICAgIGdkb3VibGUgdmFsdWUgPSAwLjA7
CisKKyAgICAgICAgaWYgKG1lZGlhUG9zaXRpb24gJiYgbWVkaWFEdXJhdGlvbikKKyAgICAgICAg
ICAgIHZhbHVlID0gKG1lZGlhUG9zaXRpb24gKiAxMDAuMCkgLyBtZWRpYUR1cmF0aW9uOworCisg
ICAgICAgIEd0a0FkanVzdG1lbnQqIGFkanVzdG1lbnQgPSBndGtfcmFuZ2VfZ2V0X2FkanVzdG1l
bnQoR1RLX1JBTkdFKG1fdGltZUhTY2FsZSkpOworICAgICAgICBndGtfYWRqdXN0bWVudF9zZXRf
dmFsdWUoYWRqdXN0bWVudCwgdmFsdWUpOworICAgIH0KKworICAgIGd0a19yYW5nZV9zZXRfZmls
bF9sZXZlbChHVEtfUkFOR0UobV90aW1lSFNjYWxlKSwgcGVyY2VudExvYWRlZCgpKiAxMDApOwor
CisgICAgZ2NoYXIqIGxhYmVsID0gZ19zdHJkdXBfcHJpbnRmKCIlcyAvICVzIiwgdGltZVRvU3Ry
aW5nKG1lZGlhUG9zaXRpb24pLnV0ZjgoKS5kYXRhKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRpbWVUb1N0cmluZyhtZWRpYUR1cmF0aW9uKS51dGY4KCkuZGF0YSgpKTsK
KyAgICBndGtfbGFiZWxfc2V0X3RleHQoR1RLX0xBQkVMKG1fdGltZUxhYmVsKSwgbGFiZWwpOwor
ICAgIGdfZnJlZShsYWJlbCk7CisgICAgcmV0dXJuIFRSVUU7Cit9CisKK3ZvaWQgRnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlcjo6Y3JlYXRlSHVkKCkKK3sKKyAgICBtX2h1ZFdpbmRvdyA9IGd0a193
aW5kb3dfbmV3KEdUS19XSU5ET1dfUE9QVVApOworICAgIGd0a193aW5kb3dfc2V0X2dyYXZpdHko
R1RLX1dJTkRPVyhtX2h1ZFdpbmRvdyksIEdES19HUkFWSVRZX1NPVVRIX1dFU1QpOworICAgIGd0
a193aW5kb3dfc2V0X3R5cGVfaGludChHVEtfV0lORE9XKG1faHVkV2luZG93KSwgR0RLX1dJTkRP
V19UWVBFX0hJTlRfTk9STUFMKTsKKworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9odWRXaW5kb3cs
ICJtb3Rpb24tbm90aWZ5LWV2ZW50IiwgR19DQUxMQkFDSyhvbkZ1bGxzY3JlZW5HdGtNb3Rpb25O
b3RpZnlFdmVudCksIHRoaXMpOworCisgICAgR3RrV2lkZ2V0KiBoYm94ID0gZ3RrX2hib3hfbmV3
KEZBTFNFLCA0KTsKKyAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKG1faHVkV2lu
ZG93KSwgaGJveCk7CisKKyAgICBtX3BsYXlQYXVzZUFjdGlvbiA9IGd0a19hY3Rpb25fbmV3KCJw
bGF5IiwgXygiUGxheSAvIFBhdXNlIiksIF8oIlBsYXkgb3IgcGF1c2UgdGhlIG1lZGlhIiksICJt
ZWRpYS1wbGF5YmFjay1wYXVzZS1zeW1ib2xpYyIpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9w
bGF5UGF1c2VBY3Rpb24sICJhY3RpdmF0ZSIsIEdfQ0FMTEJBQ0sodG9nZ2xlUGxheVBhdXNlQWN0
aXZhdGVkKSwgdGhpcyk7CisKKyAgICBwbGF5U3RhdGVDaGFuZ2VkKCk7CisKKyAgICBHdGtXaWRn
ZXQqIGl0ZW0gPSBndGtfYWN0aW9uX2NyZWF0ZV90b29sX2l0ZW0obV9wbGF5UGF1c2VBY3Rpb24p
OworICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKGhib3gpLCBpdGVtLCBGQUxTRSwgVFJV
RSwgMCk7CisKKyAgICBHdGtXaWRnZXQqIGxhYmVsID0gZ3RrX2xhYmVsX25ldyhfKCJUaW1lOiIp
KTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChoYm94KSwgbGFiZWwsIEZBTFNFLCBU
UlVFLCAwKTsKKworICAgIEd0a09iamVjdCogYWRqdXN0bWVudCA9IGd0a19hZGp1c3RtZW50X25l
dygwLjAsIDAuMCwgMTAwLjAsIDAuMSwgMS4wLCAxLjApOworICAgIG1fdGltZUhTY2FsZSA9IGd0
a19oc2NhbGVfbmV3KEdUS19BREpVU1RNRU5UKGFkanVzdG1lbnQpKTsKKyAgICBndGtfc2NhbGVf
c2V0X2RyYXdfdmFsdWUoR1RLX1NDQUxFKG1fdGltZUhTY2FsZSksIEZBTFNFKTsKKyAgICBndGtf
cmFuZ2Vfc2V0X3Nob3dfZmlsbF9sZXZlbChHVEtfUkFOR0UobV90aW1lSFNjYWxlKSwgVFJVRSk7
CisgICAgZ3RrX3JhbmdlX3NldF91cGRhdGVfcG9saWN5KEdUS19SQU5HRShtX3RpbWVIU2NhbGUp
LCBHVEtfVVBEQVRFX0NPTlRJTlVPVVMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV90aW1lSFNj
YWxlLCAiYnV0dG9uLXByZXNzLWV2ZW50IiwgR19DQUxMQkFDSyh0aW1lU2NhbGVCdXR0b25QcmVz
c2VkKSwgdGhpcyk7CisgICAgZ19zaWduYWxfY29ubmVjdChtX3RpbWVIU2NhbGUsICJidXR0b24t
cmVsZWFzZS1ldmVudCIsIEdfQ0FMTEJBQ0sodGltZVNjYWxlQnV0dG9uUmVsZWFzZWQpLCB0aGlz
KTsKKyAgICBtX2hzY2FsZVVwZGF0ZUlkID0gZ19zaWduYWxfY29ubmVjdChtX3RpbWVIU2NhbGUs
ICJ2YWx1ZS1jaGFuZ2VkIiwgR19DQUxMQkFDSyh0aW1lU2NhbGVWYWx1ZUNoYW5nZWQpLCB0aGlz
KTsKKworICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKGhib3gpLCBtX3RpbWVIU2NhbGUs
IFRSVUUsIFRSVUUsIDApOworCisgICAgbV90aW1lTGFiZWwgPSBndGtfbGFiZWxfbmV3KCIiKTsK
KyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChoYm94KSwgbV90aW1lTGFiZWwsIEZBTFNF
LCBUUlVFLCAwKTsKKworICAgIC8vIFZvbHVtZSBidXR0b24uCisgICAgbV92b2x1bWVCdXR0b24g
PSBndGtfdm9sdW1lX2J1dHRvbl9uZXcoKTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JP
WChoYm94KSwgbV92b2x1bWVCdXR0b24sIEZBTFNFLCBUUlVFLCAwKTsKKyAgICBndGtfc2NhbGVf
YnV0dG9uX3NldF92YWx1ZShHVEtfU0NBTEVfQlVUVE9OKG1fdm9sdW1lQnV0dG9uKSwgdm9sdW1l
KCkpOworICAgIG1fdm9sdW1lVXBkYXRlSWQgPSBnX3NpZ25hbF9jb25uZWN0KG1fdm9sdW1lQnV0
dG9uLCAidmFsdWUtY2hhbmdlZCIsIEdfQ0FMTEJBQ0sodm9sdW1lVmFsdWVDaGFuZ2VkKSwgdGhp
cyk7CisKKworICAgIG1fZXhpdEZ1bGxzY3JlZW5BY3Rpb24gPSBndGtfYWN0aW9uX25ldygiZXhp
dCIsIF8oIkV4aXQgRnVsbHNjcmVlbiIpLCBfKCJFeGl0IGZyb20gZnVsbHNjcmVlbiBtb2RlIiks
ICJ2aWV3LXJlc3RvcmUtc3ltYm9saWMiKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fZXhpdEZ1
bGxzY3JlZW5BY3Rpb24sICJhY3RpdmF0ZSIsIEdfQ0FMTEJBQ0soZXhpdEZ1bGxzY3JlZW5BY3Rp
dmF0ZWQpLCB0aGlzKTsKKyAgICBnX29iamVjdF9zZXQobV9leGl0RnVsbHNjcmVlbkFjdGlvbiwg
Imljb24tbmFtZSIsICJ2aWV3LXJlc3RvcmUtc3ltYm9saWMiLCBOVUxMKTsKKyAgICBpdGVtID0g
Z3RrX2FjdGlvbl9jcmVhdGVfdG9vbF9pdGVtKG1fZXhpdEZ1bGxzY3JlZW5BY3Rpb24pOworICAg
IGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKGhib3gpLCBpdGVtLCBGQUxTRSwgVFJVRSwgMCk7
CisKKworICAgIG1fcHJvZ3Jlc3NCYXJVcGRhdGVJZCA9IGdfdGltZW91dF9hZGQoUFJPR1JFU1Nf
QkFSX1VQREFURV9JTlRFUlZBTCwgcHJvZ3Jlc3NCYXJVcGRhdGVDYWxsYmFjaywgdGhpcyk7CisK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Z1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXIuaCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjljNDdjODkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Z1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaApAQCAtMCwwICsxLDEwMCBAQAorLyoKKyAqICBDb3B5
cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTAorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
ICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
ICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXJfaAorI2RlZmluZSBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyX2gKKwor
I2lmIEVOQUJMRShWSURFTykKKworI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CisKK3R5cGVkZWYgc3RydWN0IF9HdGtPYmplY3QgR3RrT2JqZWN0
OwordHlwZWRlZiBzdHJ1Y3QgX0d0a1dpZGdldCBHdGtXaWRnZXQ7Cit0eXBlZGVmIHN0cnVjdCBf
R3RrQWN0aW9uIEd0a0FjdGlvbjsKK3R5cGVkZWYgc3RydWN0IF9HZGtDdXJzb3IgR2RrQ3Vyc29y
OwordHlwZWRlZiBzdHJ1Y3QgX0dka0V2ZW50Q29uZmlndXJlIEdka0V2ZW50Q29uZmlndXJlOwor
CisKK2NsYXNzIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIgOiBwdWJsaWMgTm9uY29weWFibGUg
eworcHVibGljOgorICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIoKTsKKyAgICB2aXJ0dWFs
IH5GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKCk7CisKKyAgICB2b2lkIHNldE1lZGlhRWxlbWVu
dChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudCogbWVkaWFFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUVsZW1lbnQuZ2V0KCk7
IH0KKworICAgIHZvaWQgZ3RrQ29uZmlndXJlKEdka0V2ZW50Q29uZmlndXJlKiBldmVudCk7CisK
KyAgICB2b2lkIGVudGVyRnVsbHNjcmVlbigpOworICAgIHZvaWQgZXhpdEZ1bGxzY3JlZW4oKTsK
KworICAgIHZvaWQgZXhpdE9uVXNlclJlcXVlc3QoKTsKKyAgICB2b2lkIHRvZ2dsZVBsYXkoKTsK
KyAgICB2b2lkIGJlZ2luU2VlaygpOworICAgIHZvaWQgZG9TZWVrKCk7CisgICAgdm9pZCBlbmRT
ZWVrKCk7CisKKyAgICB2b2lkIGhpZGVIdWQoKTsKKyAgICB2b2lkIHNob3dIdWQoYm9vbCk7Cisg
ICAgZ2Jvb2xlYW4gdXBkYXRlSHVkUHJvZ3Jlc3NCYXIoKTsKKworICAgIGZsb2F0IHZvbHVtZSgp
IGNvbnN0OworICAgIHZvaWQgc2V0Vm9sdW1lKGZsb2F0KTsKKyAgICB2b2lkIHZvbHVtZUNoYW5n
ZWQoKTsKKyAgICB2b2lkIG11dGVDaGFuZ2VkKCk7CisKK3ByaXZhdGU6CisgICAgYm9vbCBjYW5Q
bGF5KCkgY29uc3Q7CisgICAgdm9pZCBwbGF5KCk7CisgICAgdm9pZCBwYXVzZSgpOworICAgIHZv
aWQgcGxheVN0YXRlQ2hhbmdlZCgpOworCisgICAgYm9vbCBtdXRlZCgpIGNvbnN0OworCisgICAg
ZmxvYXQgY3VycmVudFRpbWUoKSBjb25zdDsKKyAgICB2b2lkIHNldEN1cnJlbnRUaW1lKGZsb2F0
KTsKKworICAgIGZsb2F0IGR1cmF0aW9uKCkgY29uc3Q7CisgICAgZmxvYXQgcGVyY2VudExvYWRl
ZCgpIGNvbnN0OworCisgICAgdm9pZCBjcmVhdGVIdWQoKTsKKyAgICB2b2lkIHVwZGF0ZUh1ZFBv
c2l0aW9uKCk7CisKKyAgICBSZWZQdHI8V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudD4gbV9tZWRp
YUVsZW1lbnQ7CisKKyAgICBndWludCBtX2h1ZFRpbWVvdXRJZDsKKyAgICBndWludCBtX3Byb2dy
ZXNzQmFyVXBkYXRlSWQ7CisgICAgZ3VpbnQgbV9wcm9ncmVzc0JhckZpbGxVcGRhdGVJZDsKKyAg
ICBndWludCBtX2hzY2FsZVVwZGF0ZUlkOworICAgIGd1aW50IG1fdm9sdW1lVXBkYXRlSWQ7Cisg
ICAgYm9vbCBtX3NlZWtMb2NrOworICAgIEd0a1dpZGdldCogbV93aW5kb3c7CisgICAgR2RrQ3Vy
c29yKiBtX2N1cnNvcjsKKyAgICBHdGtXaWRnZXQqIG1faHVkV2luZG93OworICAgIEd0a0FjdGlv
biogbV9wbGF5UGF1c2VBY3Rpb247CisgICAgR3RrQWN0aW9uKiBtX2V4aXRGdWxsc2NyZWVuQWN0
aW9uOworICAgIEd0a1dpZGdldCogbV90aW1lSFNjYWxlOworICAgIEd0a1dpZGdldCogbV90aW1l
TGFiZWw7CisgICAgR3RrV2lkZ2V0KiBtX3ZvbHVtZUJ1dHRvbjsKK307CisKKyNlbmRpZgorCisj
ZW5kaWYgLy8gRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcl9oCmRpZmYgLS1naXQgYS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmNwcCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHBy
aXZhdGUuY3BwCmluZGV4IDQxZGU3NmUuLjkyODc0MjIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHByaXZhdGUuY3BwCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHBy
aXZhdGUuY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNp
bmNsdWRlICJGcmFtZUxvYWRlckNsaWVudEd0ay5oIgogI2luY2x1ZGUgIkd0a1ZlcnNpb25pbmcu
aCIKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgi
CiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkljb25EYXRhYmFzZS5oIgog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTQ5LDYgKzUxLDEwIEBACiAjaW5jbHVkZSA8c3RkbGli
Lmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCisjaWYgRU5BQkxFKFZJREVPKQorI2lu
Y2x1ZGUgIkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxF
KERBVEFCQVNFKQogI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgogI2VuZGlmCkBAIC0yODEs
MyArMjg3LDMzIEBAIHZvaWQgd2Via2l0X3Jlc2V0X29yaWdpbl9hY2Nlc3Nfd2hpdGVfbGlzdHMo
KQogewogICAgIFNlY3VyaXR5T3JpZ2luOjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKTsK
IH0KKworCit2b2lkIHdlYmtpdF93ZWJfdmlld19lbnRlcl9mdWxsc2NyZWVuKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcsIE5vZGUqIG5vZGUpCit7CisgICAgaWYgKCFub2RlLT5oYXNUYWdOYW1lKEhU
TUxOYW1lczo6dmlkZW9UYWcpKQorICAgICAgICByZXR1cm47CisKKyNpZiBFTkFCTEUoVklERU8p
CisgICAgSFRNTE1lZGlhRWxlbWVudCogdmlkZW9FbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTE1l
ZGlhRWxlbWVudCo+KG5vZGUpOworICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2Vi
Vmlldy0+cHJpdjsKKworICAgIC8vIEZpcnN0IGV4aXQgRnVsbHNjcmVlbiBmb3IgdGhlIG9sZCBt
ZWRpYUVsZW1lbnQuCisgICAgaWYgKHByaXYtPmZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIpCisg
ICAgICAgIHByaXYtPmZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXItPmV4aXRGdWxsc2NyZWVuKCk7
CisKKyAgICBwcml2LT5mdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyID0gbmV3IEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXI7CisgICAgcHJpdi0+ZnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci0+c2V0
TWVkaWFFbGVtZW50KHZpZGVvRWxlbWVudCk7CisgICAgcHJpdi0+ZnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlci0+ZW50ZXJGdWxsc2NyZWVuKCk7CisjZW5kaWYKK30KKwordm9pZCB3ZWJraXRfd2Vi
X3ZpZXdfZXhpdF9mdWxsc2NyZWVuKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisjaWYgRU5B
QkxFKFZJREVPKQorICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJp
djsKKyAgICBpZiAocHJpdi0+ZnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcikKKyAgICAgICAgcHJp
di0+ZnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci0+ZXhpdEZ1bGxzY3JlZW4oKTsKKyNlbmRpZgor
fQorCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmggYi9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgKaW5kZXggZmE3NGFiYy4uNzAyNDJlOCAxMDA2
NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCisrKyBiL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaApAQCAtNTgsMTEgKzU4LDEzIEBACiAjaW5jbHVkZSAi
SW5zcGVjdG9yQ2xpZW50R3RrLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNsdWRlICJG
cmFtZUxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVz
dC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJXaW5kb3dGZWF0
dXJlcy5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiTm9kZS5oIgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2luY2x1ZGUgPGF0ay9hdGsuaD4KQEAg
LTE0Niw2ICsxNDgsOCBAQCBleHRlcm4gIkMiIHsKICAgICAgICAgZ2Jvb2xlYW4gZGlzcG9zaW5n
OwogICAgICAgICBnYm9vbGVhbiB1c2VQcmltYXJ5Rm9yUGFzdGU7CiAKKyAgICAgICAgRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlciogZnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjsKKwogICAgICAg
ICAvLyBUaGVzZSBhcmUgaG9zdGVkIGhlcmUgYmVjYXVzZSB0aGUgRGF0YVNvdXJjZSBvYmplY3Qg
aXMKICAgICAgICAgLy8gY3JlYXRlZCB0b28gbGF0ZSBpbiB0aGUgZnJhbWUgbG9hZGluZyBwcm9j
ZXNzLgogICAgICAgICBXZWJLaXRXZWJSZXNvdXJjZSogbWFpblJlc291cmNlOwpAQCAtMzg1LDYg
KzM4OSw5IEBAIGV4dGVybiAiQyIgewogCiAgICAgV0VCS0lUX0FQSSB2b2lkCiAgICAgd2Via2l0
X3dlYl9mcmFtZV9sYXlvdXQoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKTsKKworICAgIHZvaWQgd2Vi
a2l0X3dlYl92aWV3X2VudGVyX2Z1bGxzY3JlZW4oV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2Vi
Q29yZTo6Tm9kZSogbm9kZSk7CisgICAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZXhpdF9mdWxsc2Ny
ZWVuKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpOwogfQogCiAjZW5kaWYKLS0gCjEuNi4zLjM=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61771</attachid>
            <date>2010-07-16 00:32:26 -0700</date>
            <delta_ts>2010-07-16 00:36:40 -0700</delta_ts>
            <desc>fullscreen support in WebKit/gtk</desc>
            <filename>fullscreen-support-in-WebKitgtk.patch</filename>
            <type>text/plain</type>
            <size>5400</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA3YjI3YzZlYjczZDRlNDJhMzk3NzZkZTMyMTkwM2FkMDhlMDEzZTEyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUaHUsIDEzIE1heSAyMDEwIDE1OjQ1OjA1ICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
ZnVsbHNjcmVlbiBzdXBwb3J0IGluIFdlYktpdC9ndGsKCi0tLQogV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwIHwgICAyNSArKysrKysrKysrKysrKysrKwogV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaCAgIHwgICAgNiArKysrCiBX
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmNwcCAgICAgICAgICAgfCAgIDM2ICsrKysr
KysrKysrKysrKysrKysrKysrKysKIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaCAg
ICAgICAgICAgICB8ICAgIDcgKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgNzQgaW5zZXJ0aW9ucygr
KSwgMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudEd0ay5jcHAgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEd0ay5jcHAKaW5kZXggYmI0NjljNS4uODFjODViYiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCisrKyBiL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1
ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZFJlcXVlc3QuaCIKICNpbmNsdWRl
ICJHdGtWZXJzaW9uaW5nLmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSW50
UmVjdC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJl
c3VsdC5oIgpAQCAtNjE3LDQgKzYxOCwyOCBAQCB2b2lkIENocm9tZUNsaWVudDo6Y2FuY2VsR2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lKiBmcgogICAg
IGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh3ZWJWaWV3LCAiZ2VvbG9jYXRpb24tcG9saWN5LWRlY2lz
aW9uLWNhbmNlbGxlZCIsIHdlYkZyYW1lKTsKIH0KIAorI2lmIEVOQUJMRShWSURFTykKKworYm9v
bCBDaHJvbWVDbGllbnQ6OnN1cHBvcnRzRnVsbHNjcmVlbkZvck5vZGUoY29uc3QgTm9kZSogbm9k
ZSkKK3sKKyAgICByZXR1cm4gbm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnZpZGVvVGFnKTsK
K30KKwordm9pZCBDaHJvbWVDbGllbnQ6OmVudGVyRnVsbHNjcmVlbkZvck5vZGUoTm9kZSogbm9k
ZSkKK3sKKyAgICBXZWJDb3JlOjpGcmFtZSogZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFt
ZSgpOworICAgIFdlYktpdFdlYkZyYW1lKiB3ZWJGcmFtZSA9IGtpdChmcmFtZSk7CisgICAgV2Vi
S2l0V2ViVmlldyogd2ViVmlldyA9IGdldFZpZXdGcm9tRnJhbWUod2ViRnJhbWUpOworICAgIHdl
YmtpdF93ZWJfdmlld19lbnRlcl9mdWxsc2NyZWVuKHdlYlZpZXcsIG5vZGUpOworfQorCit2b2lk
IENocm9tZUNsaWVudDo6ZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKE5vZGUqIG5vZGUpCit7CisgICAg
V2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKKyAgICBX
ZWJLaXRXZWJGcmFtZSogd2ViRnJhbWUgPSBraXQoZnJhbWUpOworICAgIFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcgPSBnZXRWaWV3RnJvbUZyYW1lKHdlYkZyYW1lKTsKKyAgICB3ZWJraXRfd2ViX3Zp
ZXdfZXhpdF9mdWxsc2NyZWVuKHdlYlZpZXcpOworfQorI2VuZGlmCisKIH0KZGlmZiAtLWdpdCBh
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmggYi9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCmluZGV4IDQ2ZDAxNWUuLmIwZmQ0MDkg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgK
KysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaApAQCAtMTIy
LDYgKzEyMiwxMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgdmlydHVhbCB2b2lkIHJl
cXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZShXZWJDb3JlOjpGcmFtZSosIFdlYkNv
cmU6Okdlb2xvY2F0aW9uKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpHZW9s
b2NhdGlvbiopOwogCisjaWYgRU5BQkxFKFZJREVPKQorICAgICAgICB2aXJ0dWFsIGJvb2wgc3Vw
cG9ydHNGdWxsc2NyZWVuRm9yTm9kZShjb25zdCBXZWJDb3JlOjpOb2RlKik7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBlbnRlckZ1bGxzY3JlZW5Gb3JOb2RlKFdlYkNvcmU6Ok5vZGUqKTsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIGV4aXRGdWxsc2NyZWVuRm9yTm9kZShXZWJDb3JlOjpOb2RlKik7Cisj
ZW5kaWYKKwogICAgIHByaXZhdGU6CiAgICAgICAgIFdlYktpdFdlYlZpZXcqIG1fd2ViVmlldzsK
ICAgICAgICAgV2ViQ29yZTo6S1VSTCBtX2hvdmVyZWRMaW5rVVJMOwpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXRwcml2YXRlLmNwcAppbmRleCA0MWRlNzZlLi45Mjg3NDIyIDEwMDY0NAotLS0gYS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmNwcAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXRwcml2YXRlLmNwcApAQCAtMjgsNiArMjgsOCBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgi
CiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnRHdGsuaCIKICNpbmNsdWRlICJHdGtWZXJzaW9u
aW5nLmgiCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJY29uRGF0YWJhc2Uu
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC00OSw2ICs1MSwxMCBAQAogI2luY2x1ZGUgPHN0
ZGxpYi5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAorI2lmIEVOQUJMRShWSURFTykK
KyNpbmNsdWRlICJGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmgiCisjZW5kaWYKKwogI2lmIEVO
QUJMRShEQVRBQkFTRSkKICNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKICNlbmRpZgpAQCAt
MjgxLDMgKzI4NywzMyBAQCB2b2lkIHdlYmtpdF9yZXNldF9vcmlnaW5fYWNjZXNzX3doaXRlX2xp
c3RzKCkKIHsKICAgICBTZWN1cml0eU9yaWdpbjo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3Rz
KCk7CiB9CisKKwordm9pZCB3ZWJraXRfd2ViX3ZpZXdfZW50ZXJfZnVsbHNjcmVlbihXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3LCBOb2RlKiBub2RlKQoreworICAgIGlmICghbm9kZS0+aGFzVGFnTmFt
ZShIVE1MTmFtZXM6OnZpZGVvVGFnKSkKKyAgICAgICAgcmV0dXJuOworCisjaWYgRU5BQkxFKFZJ
REVPKQorICAgIEhUTUxNZWRpYUVsZW1lbnQqIHZpZGVvRWxlbWVudCA9IHN0YXRpY19jYXN0PEhU
TUxNZWRpYUVsZW1lbnQqPihub2RlKTsKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9
IHdlYlZpZXctPnByaXY7CisKKyAgICAvLyBGaXJzdCBleGl0IEZ1bGxzY3JlZW4gZm9yIHRoZSBv
bGQgbWVkaWFFbGVtZW50LgorICAgIGlmIChwcml2LT5mdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
KQorICAgICAgICBwcml2LT5mdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLT5leGl0RnVsbHNjcmVl
bigpOworCisgICAgcHJpdi0+ZnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciA9IG5ldyBGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyOworICAgIHByaXYtPmZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIt
PnNldE1lZGlhRWxlbWVudCh2aWRlb0VsZW1lbnQpOworICAgIHByaXYtPmZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXItPmVudGVyRnVsbHNjcmVlbigpOworI2VuZGlmCit9CisKK3ZvaWQgd2Via2l0
X3dlYl92aWV3X2V4aXRfZnVsbHNjcmVlbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworI2lm
IEVOQUJMRShWSURFTykKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXct
PnByaXY7CisgICAgaWYgKHByaXYtPmZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIpCisgICAgICAg
IHByaXYtPmZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXItPmV4aXRGdWxsc2NyZWVuKCk7CisjZW5k
aWYKK30KKwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oIGIv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCmluZGV4IDczZjlmY2MuLjllNjlmZDEg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaAorKysgYi9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgKQEAgLTU2LDYgKzU2LDggQEAKICNpbmNsdWRl
ICJJbnNwZWN0b3JDbGllbnRHdGsuaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUg
IkZyYW1lTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ci5oIgorI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKQEAgLTE1Nyw2ICsx
NTksOCBAQCBleHRlcm4gIkMiIHsKICAgICAgICAgZ2Jvb2xlYW4gZGlzcG9zaW5nOwogICAgICAg
ICBnYm9vbGVhbiB1c2VQcmltYXJ5Rm9yUGFzdGU7CiAKKyAgICAgICAgRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlciogZnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjsKKwogICAgICAgICAvLyBUaGVz
ZSBhcmUgaG9zdGVkIGhlcmUgYmVjYXVzZSB0aGUgRGF0YVNvdXJjZSBvYmplY3QgaXMKICAgICAg
ICAgLy8gY3JlYXRlZCB0b28gbGF0ZSBpbiB0aGUgZnJhbWUgbG9hZGluZyBwcm9jZXNzLgogICAg
ICAgICBXZWJLaXRXZWJSZXNvdXJjZSogbWFpblJlc291cmNlOwpAQCAtMzk3LDYgKzQwMSw5IEBA
IGV4dGVybiAiQyIgewogCiAgICAgV0VCS0lUX0FQSSB2b2lkCiAgICAgd2Via2l0X3dlYl9mcmFt
ZV9sYXlvdXQoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKTsKKworICAgIHZvaWQgd2Via2l0X3dlYl92
aWV3X2VudGVyX2Z1bGxzY3JlZW4oV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViQ29yZTo6Tm9k
ZSogbm9kZSk7CisgICAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZXhpdF9mdWxsc2NyZWVuKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcpOwogfQogCiAjZW5kaWYKLS0gCjEuNy4x
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61773</attachid>
            <date>2010-07-16 01:04:55 -0700</date>
            <delta_ts>2010-07-16 01:33:22 -0700</delta_ts>
            <desc>fullscreen video support in WebKit/gtk</desc>
            <filename>fullscreen-video-support-in-WebKitgtk.patch</filename>
            <type>text/plain</type>
            <size>33828</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA2ODlmMTY2NzZhMzk2OThkNmE3ZmM3YmJlYTA2N2FhYWJiYTg0Y2NmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUaHUsIDEzIE1heSAyMDEwIDE1OjQ1OjA1ICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
ZnVsbHNjcmVlbiB2aWRlbyBzdXBwb3J0IGluIFdlYktpdC9ndGsKCi0tLQogQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEwICsKIEdOVW1ha2Vm
aWxlLmFtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiBXZWJL
aXQvZ3RrL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNzMgKysr
CiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAgICAgICB8ICAg
MjUgKwogV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaCAgICAgICAg
fCAgICA2ICsKIC4uLi9XZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNw
cCAgIHwgIDU4MiArKysrKysrKysrKysrKysrKysrKwogLi4uL2d0ay9XZWJDb3JlU3VwcG9ydC9G
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmggfCAgMTAwICsrKysKIFdlYktpdC9ndGsvcG8vUE9U
RklMRVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBXZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXRwcml2YXRlLmNwcCAgICAgICAgICAgICAgICB8ICAgMzYgKysKIFdlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaCAgICAgICAgICAgICAgICAgIHwgICAgNyArCiAxMCBm
aWxlcyBjaGFuZ2VkLCA4NDIgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXIuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9G
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmgKCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFu
Z2VMb2cKaW5kZXggOTkxYTZmZC4uMDMwMTdhZCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBi
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEwLTA3LTEwICBQaGlsaXBwZSBOb3JtYW5k
ICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBbR1N0cmVhbWVyXSBHVEsgWE92ZXJsYXkgc3VwcG9ydCBpbiBHU3Ry
ZWFtZXJHV29ybGQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM5NDc0CisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogQWRkZWQgbmV3IEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXIgZmlsZXMgaW4gdGhlCisgICAgICAgIGJ1aWxkLgorCiAyMDEwLTA1
LTI4ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL0dOVW1ha2VmaWxlLmFtIGIv
R05VbWFrZWZpbGUuYW0KaW5kZXggNzU1YjUxYi4uNTAyNzFmMCAxMDA2NDQKLS0tIGEvR05VbWFr
ZWZpbGUuYW0KKysrIGIvR05VbWFrZWZpbGUuYW0KQEAgLTM2OCw2ICszNjgsOCBAQCB3ZWJraXRn
dGtfc291cmNlcyArPSBcCiAJV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRH
dGsuaCBcCiAJV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5j
cHAgXAogCVdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaCBc
CisJV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNw
cCBcCisJV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
LmggXAogCVdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcCBc
CiAJV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuaCBcCiAJV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QYXN0ZWJvYXJkSGVscGVyR3RrLmNwcCBcCmRpZmYgLS1n
aXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IGEx
YzFlNWEuLjllYWU0MTEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1dl
YktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzYgQEAKKzIwMTAtMDctMTAgIFBoaWxpcHBl
IE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHU3RyZWFtZXJdIEdUSyBYT3ZlcmxheSBzdXBwb3J0
IGluIEdTdHJlYW1lckdXb3JsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Mzk0NzQKKworICAgICAgICBOZXcgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ciBvYmplY3QsIHByaXZhdGUgaW4gdGhlIHdlYnZpZXcuIEl0CisgICAgICAgIGlzIGNyZWF0ZWQg
d2hlbiB0aGUgdXNlciBwcmVzc2VzIHRoZSBmdWxsc2NyZWVuIGJ1dHRvbiBvZiB0aGUKKyAgICAg
ICAgdmlkZW8gY29udHJvbHMuIFZpZGVvIGlzIGRpc3BsYXllZCBpbiBmdWxsc2NyZWVuLCBjb250
cm9scyBhcmUKKyAgICAgICAgZGlzcGxheWVkIHdoZW4gdGhlIHVzZXIgbW92ZXMgdGhlIG1vdXNl
IGFuZCB3aGVuIHRoZSB2aWRlbyBpcworICAgICAgICBwYXVzZWQuIFRoZXJlJ3MgYWxzbyBiYXNp
YyBrZXlib2FyZCBzaG9ydGN1dHMgc3VwcG9ydDogRi9mIHRvCisgICAgICAgIGxlYXZlIGZ1bGxz
Y3JlZW4sIHNwYWNlIHRvIHRvZ2dsZSBwbGF5L3BhdXNlIGFuZCB1cC9kb3duIHRvCisgICAgICAg
IGNvbnRyb2wgdm9sdW1lLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzdXBwb3J0c0Z1bGxzY3Jl
ZW5Gb3JOb2RlKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjplbnRlckZ1bGxzY3Jl
ZW5Gb3JOb2RlKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpleGl0RnVsbHNjcmVl
bkZvck5vZGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKGhpZGVIdWRDYWxsYmFjayk6CisgICAgICAgIChvbkZ1bGxzY3JlZW5H
dGtNb3Rpb25Ob3RpZnlFdmVudCk6CisgICAgICAgIChvbkZ1bGxzY3JlZW5HdGtBY3RpdmVOb3Rp
ZmljYXRpb24pOgorICAgICAgICAob25GdWxsc2NyZWVuR3RrQ29uZmlndXJlRXZlbnQpOgorICAg
ICAgICAob25GdWxsc2NyZWVuR3RrRGVzdHJveSk6CisgICAgICAgICh0b2dnbGVQbGF5UGF1c2VB
Y3RpdmF0ZWQpOgorICAgICAgICAoZXhpdEZ1bGxzY3JlZW5BY3RpdmF0ZWQpOgorICAgICAgICAo
cHJvZ3Jlc3NCYXJVcGRhdGVDYWxsYmFjayk6CisgICAgICAgICh0aW1lU2NhbGVCdXR0b25QcmVz
c2VkKToKKyAgICAgICAgKHRpbWVTY2FsZUJ1dHRvblJlbGVhc2VkKToKKyAgICAgICAgKHRpbWVT
Y2FsZVZhbHVlQ2hhbmdlZCk6CisgICAgICAgICh2b2x1bWVWYWx1ZUNoYW5nZWQpOgorICAgICAg
ICAocGxheWVyVm9sdW1lQ2hhbmdlZENhbGxiYWNrKToKKyAgICAgICAgKHBsYXllck11dGVDaGFu
Z2VkQ2FsbGJhY2spOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6RnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlcik6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
Ojp+RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcik6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyOjpzZXRNZWRpYUVsZW1lbnQpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlcjo6Z3RrQ29uZmlndXJlKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXI6OnNob3dIdWQpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6aGlkZUh1
ZCk6CisgICAgICAgIChvbkZ1bGxzY3JlZW5HdGtLZXlQcmVzc0V2ZW50KToKKyAgICAgICAgKEZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmVudGVyRnVsbHNjcmVlbik6CisgICAgICAgIChGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyOjp1cGRhdGVIdWRQb3NpdGlvbik6CisgICAgICAgIChGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyOjpleGl0T25Vc2VyUmVxdWVzdCk6CisgICAgICAgIChGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyOjpleGl0RnVsbHNjcmVlbik6CisgICAgICAgIChGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyOjpjYW5QbGF5KToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXI6OnBsYXkpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6cGF1
c2UpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6cGxheVN0YXRlQ2hhbmdl
ZCk6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp0b2dnbGVQbGF5KToKKyAg
ICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnZvbHVtZSk6CisgICAgICAgIChGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyOjptdXRlZCk6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyOjpzZXRWb2x1bWUpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
cjo6dm9sdW1lQ2hhbmdlZCk6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpt
dXRlQ2hhbmdlZCk6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpjdXJyZW50
VGltZSk6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpzZXRDdXJyZW50VGlt
ZSk6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpkdXJhdGlvbik6CisgICAg
ICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpwZXJjZW50TG9hZGVkKToKKyAgICAgICAg
KEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmJlZ2luU2Vlayk6CisgICAgICAgIChGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyOjpkb1NlZWspOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlcjo6ZW5kU2Vlayk6CisgICAgICAgICh0aW1lVG9TdHJpbmcpOgorICAgICAgICAoRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dXBkYXRlSHVkUHJvZ3Jlc3NCYXIpOgorICAgICAgICAo
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6Y3JlYXRlSHVkKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAoRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlcjo6bWVkaWFFbGVtZW50KToKKyAgICAgICAgKiB3ZWJraXQv
d2Via2l0cHJpdmF0ZS5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZW50ZXJfZnVsbHNj
cmVlbik6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZXhpdF9mdWxsc2NyZWVuKToKKyAgICAg
ICAgKiB3ZWJraXQvd2Via2l0cHJpdmF0ZS5oOgorCiAyMDEwLTA3LTE0ICBTYW0gV2VpbmlnICA8
c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYg
LS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAgYi9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKaW5kZXggODg0NDBi
YS4uNzRjNmIzZiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRHdGsuY3BwCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
R3RrLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1
ZGUgIkZyYW1lTG9hZFJlcXVlc3QuaCIKICNpbmNsdWRlICJHdGtWZXJzaW9uaW5nLmgiCisjaW5j
bHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgpAQCAtNjE2LDQgKzYxNywy
OCBAQCB2b2lkIENocm9tZUNsaWVudDo6Y2FuY2VsR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lKiBmcgogICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh3
ZWJWaWV3LCAiZ2VvbG9jYXRpb24tcG9saWN5LWRlY2lzaW9uLWNhbmNlbGxlZCIsIHdlYkZyYW1l
KTsKIH0KIAorI2lmIEVOQUJMRShWSURFTykKKworYm9vbCBDaHJvbWVDbGllbnQ6OnN1cHBvcnRz
RnVsbHNjcmVlbkZvck5vZGUoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICByZXR1cm4gbm9kZS0+
aGFzVGFnTmFtZShIVE1MTmFtZXM6OnZpZGVvVGFnKTsKK30KKwordm9pZCBDaHJvbWVDbGllbnQ6
OmVudGVyRnVsbHNjcmVlbkZvck5vZGUoTm9kZSogbm9kZSkKK3sKKyAgICBXZWJDb3JlOjpGcmFt
ZSogZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpOworICAgIFdlYktpdFdlYkZyYW1l
KiB3ZWJGcmFtZSA9IGtpdChmcmFtZSk7CisgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IGdl
dFZpZXdGcm9tRnJhbWUod2ViRnJhbWUpOworICAgIHdlYmtpdF93ZWJfdmlld19lbnRlcl9mdWxs
c2NyZWVuKHdlYlZpZXcsIG5vZGUpOworfQorCit2b2lkIENocm9tZUNsaWVudDo6ZXhpdEZ1bGxz
Y3JlZW5Gb3JOb2RlKE5vZGUqIG5vZGUpCit7CisgICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0g
bm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKKyAgICBXZWJLaXRXZWJGcmFtZSogd2ViRnJhbWUg
PSBraXQoZnJhbWUpOworICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBnZXRWaWV3RnJvbUZy
YW1lKHdlYkZyYW1lKTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfZXhpdF9mdWxsc2NyZWVuKHdlYlZp
ZXcpOworfQorI2VuZGlmCisKIH0KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50R3RrLmggYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEd0ay5oCmluZGV4IGNlNWM1YTcuLmExZTIyZTcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaApAQCAtMTIyLDYgKzEyMiwxMiBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Np
b25Gb3JGcmFtZShXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6Okdlb2xvY2F0aW9uKik7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Rm9yRnJh
bWUoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpHZW9sb2NhdGlvbiopOwogCisjaWYgRU5BQkxF
KFZJREVPKQorICAgICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuRm9yTm9kZShj
b25zdCBXZWJDb3JlOjpOb2RlKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbnRlckZ1bGxzY3Jl
ZW5Gb3JOb2RlKFdlYkNvcmU6Ok5vZGUqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGV4aXRGdWxs
c2NyZWVuRm9yTm9kZShXZWJDb3JlOjpOb2RlKik7CisjZW5kaWYKKwogICAgIHByaXZhdGU6CiAg
ICAgICAgIFdlYktpdFdlYlZpZXcqIG1fd2ViVmlldzsKICAgICAgICAgV2ViQ29yZTo6S1VSTCBt
X2hvdmVyZWRMaW5rVVJMOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9G
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMDRlN2NkOAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAKQEAgLTAsMCArMSw1ODIgQEAKKy8q
CisgKiAgQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwKKyAqCisgKiAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPKQorCisjaW5jbHVkZSAiRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlci5oIgorCisjaW5jbHVkZSAiR1N0cmVhbWVyR1dvcmxkLmgiCisjaW5jbHVk
ZSAiTWVkaWFQbGF5ZXIuaCIKKworI2luY2x1ZGUgPGdkay9nZGsuaD4KKyNpbmNsdWRlIDxnZGsv
Z2Rra2V5c3ltcy5oPgorI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8Z3N0
L2dzdC5oPgorI2luY2x1ZGUgPGd0ay9ndGsuaD4KKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCisjZGVmaW5lIEhVRF9BVVRPX0hJREVfSU5URVJWQUwg
MzAwMCAvLyAzIHNlY29uZHMKKyNkZWZpbmUgUFJPR1JFU1NfQkFSX1VQREFURV9JTlRFUlZBTCAx
NTAgLy8gMTUwbXMKKyNkZWZpbmUgVk9MVU1FX1VQX09GRlNFVCAwLjA1IC8vIDUlCisjZGVmaW5l
IFZPTFVNRV9ET1dOX09GRlNFVCAwLjA1IC8vIDUlCisKK3N0YXRpYyBnYm9vbGVhbiBoaWRlSHVk
Q2FsbGJhY2soZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
KiBjb250cm9sbGVyID0gcmVpbnRlcnByZXRfY2FzdDxGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
Kj4oZGF0YSk7CisgICAgY29udHJvbGxlci0+aGlkZUh1ZCgpOworICAgIHJldHVybiBGQUxTRTsK
K30KKworc3RhdGljIGdib29sZWFuIG9uRnVsbHNjcmVlbkd0a01vdGlvbk5vdGlmeUV2ZW50KEd0
a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudE1vdGlvbiogZXZlbnQsIGdwb2ludGVyIGRhdGEpCit7
CisgICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogY29udHJvbGxlciA9IHJlaW50ZXJwcmV0
X2Nhc3Q8RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcio+KGRhdGEpOworICAgIGNvbnRyb2xsZXIt
PnNob3dIdWQodHJ1ZSk7CisgICAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyB2b2lkIG9uRnVs
bHNjcmVlbkd0a0FjdGl2ZU5vdGlmaWNhdGlvbihHdGtXaWRnZXQqIHdpZGdldCwgR1BhcmFtU3Bl
YyogcHJvcGVydHksIGdwb2ludGVyIGRhdGEpCit7CisgICAgRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlciogY29udHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlcio+KGRhdGEpOworICAgIGlmICghZ3RrX3dpbmRvd19pc19hY3RpdmUoR1RLX1dJTkRPVyh3
aWRnZXQpKSkKKyAgICAgICAgY29udHJvbGxlci0+aGlkZUh1ZCgpOworfQorCitzdGF0aWMgZ2Jv
b2xlYW4gb25GdWxsc2NyZWVuR3RrQ29uZmlndXJlRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdk
a0V2ZW50Q29uZmlndXJlKiBldmVudCwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBGdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyKiBjb250cm9sbGVyID0gcmVpbnRlcnByZXRfY2FzdDxGdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyKj4oZGF0YSk7CisgICAgY29udHJvbGxlci0+Z3RrQ29uZmlndXJlKGV2
ZW50KTsKKyAgICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIHZvaWQgb25GdWxsc2NyZWVuR3Rr
RGVzdHJveShHdGtXaWRnZXQqIHdpZGdldCwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyKiBjb250cm9sbGVyID0gcmVpbnRlcnByZXRfY2FzdDxGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyKj4oZGF0YSk7CisgICAgY29udHJvbGxlci0+ZXhpdEZ1bGxzY3Jl
ZW4oKTsKK30KKworc3RhdGljIHZvaWQgdG9nZ2xlUGxheVBhdXNlQWN0aXZhdGVkKEd0a0FjdGlv
biogYWN0aW9uLCBncG9pbnRlciBkYXRhKQoreworICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXIqIGNvbnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0PEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXIqPihkYXRhKTsKKyAgICBjb250cm9sbGVyLT50b2dnbGVQbGF5KCk7Cit9CisKK3N0YXRpYyB2
b2lkIGV4aXRGdWxsc2NyZWVuQWN0aXZhdGVkKEd0a0FjdGlvbiogYWN0aW9uLCBncG9pbnRlciBk
YXRhKQoreworICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSByZWlu
dGVycHJldF9jYXN0PEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqPihkYXRhKTsKKyAgICBjb250
cm9sbGVyLT5leGl0T25Vc2VyUmVxdWVzdCgpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gcHJvZ3Jl
c3NCYXJVcGRhdGVDYWxsYmFjayhncG9pbnRlciBkYXRhKQoreworICAgIEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0PEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXIqPihkYXRhKTsKKyAgICByZXR1cm4gY29udHJvbGxlci0+dXBkYXRlSHVkUHJv
Z3Jlc3NCYXIoKTsKK30KKworc3RhdGljIGdib29sZWFuIHRpbWVTY2FsZUJ1dHRvblByZXNzZWQo
R3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50QnV0dG9uKiBldmVudCwgZ3BvaW50ZXIgZGF0YSkK
K3sKKyAgICBpZiAoZXZlbnQtPnR5cGUgIT0gR0RLX0JVVFRPTl9QUkVTUykKKyAgICAgICAgcmV0
dXJuIEZBTFNFOworCisgICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogY29udHJvbGxlciA9
IHJlaW50ZXJwcmV0X2Nhc3Q8RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcio+KGRhdGEpOworICAg
IGNvbnRyb2xsZXItPmJlZ2luU2VlaygpOworICAgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGlj
IGdib29sZWFuIHRpbWVTY2FsZUJ1dHRvblJlbGVhc2VkKEd0a1dpZGdldCogd2lkZ2V0LCBHZGtF
dmVudEJ1dHRvbiogZXZlbnQsIGdwb2ludGVyIGRhdGEpCit7CisgICAgRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlciogY29udHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcio+KGRhdGEpOworICAgIGNvbnRyb2xsZXItPmVuZFNlZWsoKTsKKyAgICByZXR1
cm4gRkFMU0U7Cit9CisKK3N0YXRpYyB2b2lkIHRpbWVTY2FsZVZhbHVlQ2hhbmdlZChHdGtXaWRn
ZXQqIHdpZGdldCwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyKiBjb250cm9sbGVyID0gcmVpbnRlcnByZXRfY2FzdDxGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyKj4oZGF0YSk7CisgICAgY29udHJvbGxlci0+ZG9TZWVrKCk7Cit9CisKK3N0YXRpYyB2b2lk
IHZvbHVtZVZhbHVlQ2hhbmdlZChHdGtTY2FsZUJ1dHRvbiAqYnV0dG9uLCBnZG91YmxlIHZhbHVl
LCBncG9pbnRlciBkYXRhKQoreworICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIGNvbnRy
b2xsZXIgPSByZWludGVycHJldF9jYXN0PEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqPihkYXRh
KTsKKyAgICBjb250cm9sbGVyLT5zZXRWb2x1bWUoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSk7
Cit9CisKK3ZvaWQgcGxheWVyVm9sdW1lQ2hhbmdlZENhbGxiYWNrKEdPYmplY3QgKmVsZW1lbnQs
IEdQYXJhbVNwZWMgKnBzcGVjLCBncG9pbnRlciBkYXRhKQoreworICAgIEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0PEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXIqPihkYXRhKTsKKyAgICBjb250cm9sbGVyLT52b2x1bWVDaGFuZ2VkKCk7Cit9
CisKK3ZvaWQgcGxheWVyTXV0ZUNoYW5nZWRDYWxsYmFjayhHT2JqZWN0ICplbGVtZW50LCBHUGFy
YW1TcGVjICpwc3BlYywgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyKiBjb250cm9sbGVyID0gcmVpbnRlcnByZXRfY2FzdDxGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyKj4oZGF0YSk7CisgICAgY29udHJvbGxlci0+bXV0ZUNoYW5nZWQoKTsKK30KKworRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlcjo6RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcigpCisgICAg
OiBtX2h1ZFRpbWVvdXRJZCgwKQorICAgICwgbV9wcm9ncmVzc0JhclVwZGF0ZUlkKDApCisgICAg
LCBtX3NlZWtMb2NrKGZhbHNlKQorICAgICwgbV93aW5kb3coMCkKKyAgICAsIG1faHVkV2luZG93
KDApCit7Cit9CisKK0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6On5GdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyKCkKK3sKKyAgICBleGl0RnVsbHNjcmVlbigpOworfQorCit2b2lkIEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI6OnNldE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRp
YUVsZW1lbnQpCit7CisgICAgaWYgKG1lZGlhRWxlbWVudCA9PSBtX21lZGlhRWxlbWVudCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9tZWRpYUVsZW1lbnQgPSBtZWRpYUVsZW1lbnQ7CisgICAg
aWYgKCFtX21lZGlhRWxlbWVudCkgeworICAgICAgICAvLyBDYW4ndCBkbyBmdWxsLXNjcmVlbiwg
anVzdCBnZXQgb3V0CisgICAgICAgIGV4aXRGdWxsc2NyZWVuKCk7CisgICAgfQorfQorCit2b2lk
IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6Omd0a0NvbmZpZ3VyZShHZGtFdmVudENvbmZpZ3Vy
ZSogZXZlbnQpCit7CisgICAgdXBkYXRlSHVkUG9zaXRpb24oKTsKK30KKwordm9pZCBGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyOjpzaG93SHVkKGJvb2wgYXV0b0hpZGUpCit7CisgICAgaWYgKCFt
X2h1ZFdpbmRvdykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFndGtfd2luZG93X2lzX2Fj
dGl2ZShHVEtfV0lORE9XKG1fd2luZG93KSkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICht
X2h1ZFRpbWVvdXRJZCkgeworICAgICAgICBnX3NvdXJjZV9yZW1vdmUobV9odWRUaW1lb3V0SWQp
OworICAgICAgICBtX2h1ZFRpbWVvdXRJZCA9IDA7CisgICAgfQorCisgICAgLy8gU2hvdyB0aGUg
Y3Vyc29yLgorICAgIEdka1dpbmRvdyogd2luZG93ID0gZ3RrX3dpZGdldF9nZXRfd2luZG93KG1f
d2luZG93KTsKKyAgICBnZGtfd2luZG93X3NldF9jdXJzb3Iod2luZG93LCBtX2N1cnNvcik7CisK
KyAgICAvLyBVcGRhdGUgdGhlIHByb2dyZXNzIGJhciBpbW1lZGlhdGVseSBiZWZvcmUgc2hvd2lu
ZyB0aGUgd2luZG93LgorICAgIHVwZGF0ZUh1ZFByb2dyZXNzQmFyKCk7CisgICAgZ3RrX3dpZGdl
dF9zaG93X2FsbChtX2h1ZFdpbmRvdyk7CisgICAgdXBkYXRlSHVkUG9zaXRpb24oKTsKKworICAg
IC8vIFN0YXJ0IHBlcmlvZGljIHVwZGF0ZXMgb2YgdGhlIHByb2dyZXNzIGJhci4KKyAgICBpZiAo
IW1fcHJvZ3Jlc3NCYXJVcGRhdGVJZCkKKyAgICAgICAgbV9wcm9ncmVzc0JhclVwZGF0ZUlkID0g
Z190aW1lb3V0X2FkZChQUk9HUkVTU19CQVJfVVBEQVRFX0lOVEVSVkFMLCBwcm9ncmVzc0JhclVw
ZGF0ZUNhbGxiYWNrLCB0aGlzKTsKKworICAgIC8vIEhpZGUgdGhlIGh1ZCBpbiBmZXcgc2Vjb25k
cywgaWYgcmVxdWVzdGVkLgorICAgIGlmIChhdXRvSGlkZSkKKyAgICAgICAgbV9odWRUaW1lb3V0
SWQgPSBnX3RpbWVvdXRfYWRkKEhVRF9BVVRPX0hJREVfSU5URVJWQUwsIGhpZGVIdWRDYWxsYmFj
aywgdGhpcyk7Cit9CisKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6aGlkZUh1ZCgp
Cit7CisgICAgaWYgKG1faHVkVGltZW91dElkKSB7CisgICAgICAgIGdfc291cmNlX3JlbW92ZSht
X2h1ZFRpbWVvdXRJZCk7CisgICAgICAgIG1faHVkVGltZW91dElkID0gMDsKKyAgICB9CisKKyAg
ICBpZiAoIW1faHVkV2luZG93KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBLZWVwIHRoZSBo
dWQgdmlzaWJsZSBpZiBhIHNlZWsgaXMgaW4gcHJvZ3Jlc3Mgb3IgaWYgdGhlIHZvbHVtZQorICAg
IC8vIHBvcHVwIGlzIHZpc2libGUuCisgICAgR3RrV2lkZ2V0KiB2b2x1bWVQb3B1cCA9IGd0a19z
Y2FsZV9idXR0b25fZ2V0X3BvcHVwKEdUS19TQ0FMRV9CVVRUT04obV92b2x1bWVCdXR0b24pKTsK
KyAgICBpZiAobV9zZWVrTG9jayB8fCBndGtfd2lkZ2V0X2dldF92aXNpYmxlKHZvbHVtZVBvcHVw
KSkgeworICAgICAgICBzaG93SHVkKHRydWUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgR2RrV2luZG93KiB3aW5kb3cgPSBndGtfd2lkZ2V0X2dldF93aW5kb3cobV93aW5kb3cpOwor
ICAgIEdka0N1cnNvciogY3Vyc29yID0gZ2RrX2N1cnNvcl9uZXcoR0RLX0JMQU5LX0NVUlNPUik7
CisgICAgZ2RrX3dpbmRvd19zZXRfY3Vyc29yKHdpbmRvdywgY3Vyc29yKTsKKworICAgIGd0a193
aWRnZXRfaGlkZV9hbGwobV9odWRXaW5kb3cpOworCisgICAgaWYgKG1fcHJvZ3Jlc3NCYXJVcGRh
dGVJZCkgeworICAgICAgICBnX3NvdXJjZV9yZW1vdmUobV9wcm9ncmVzc0JhclVwZGF0ZUlkKTsK
KyAgICAgICAgbV9wcm9ncmVzc0JhclVwZGF0ZUlkID0gMDsKKyAgICB9Cit9CisKK3N0YXRpYyBn
Ym9vbGVhbiBvbkZ1bGxzY3JlZW5HdGtLZXlQcmVzc0V2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBH
ZGtFdmVudEtleSogZXZlbnQsIGdwb2ludGVyIGRhdGEpCit7CisgICAgRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlciogY29udHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcio+KGRhdGEpOworCisgICAgc3dpdGNoIChldmVudC0+a2V5dmFsKSB7CisgICAg
Y2FzZSBHREtfRXNjYXBlOgorICAgIGNhc2UgJ2YnOgorICAgIGNhc2UgJ0YnOgorICAgICAgICBj
b250cm9sbGVyLT5leGl0T25Vc2VyUmVxdWVzdCgpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEdES19zcGFjZToKKyAgICBjYXNlIEdES19SZXR1cm46CisgICAgICAgIGNvbnRyb2xsZXItPnRv
Z2dsZVBsYXkoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHREtfVXA6CisgICAgICAgIC8v
IHZvbHVtZSB1cAorICAgICAgICBjb250cm9sbGVyLT5zZXRWb2x1bWUoY29udHJvbGxlci0+dm9s
dW1lKCkgKyBWT0xVTUVfVVBfT0ZGU0VUKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHREtf
RG93bjoKKyAgICAgICAgLy8gdm9sdW1lIGRvd24KKyAgICAgICAgY29udHJvbGxlci0+c2V0Vm9s
dW1lKGNvbnRyb2xsZXItPnZvbHVtZSgpIC0gVk9MVU1FX0RPV05fT0ZGU0VUKTsKKyAgICAgICAg
YnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJu
IFRSVUU7Cit9CisKKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjplbnRlckZ1bGxz
Y3JlZW4oKQoreworICAgIGlmICghbV9tZWRpYUVsZW1lbnQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChtX21lZGlhRWxlbWVudC0+cGxhdGZvcm1NZWRpYSgpLnR5cGUgIT0gV2ViQ29yZTo6
UGxhdGZvcm1NZWRpYTo6R1N0cmVhbWVyR1dvcmxkVHlwZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV93aW5kb3cgPSByZWludGVycHJldF9jYXN0PEd0a1dpZGdldCo+KG1fbWVkaWFFbGVtZW50
LT5wbGF0Zm9ybU1lZGlhKCkubWVkaWEuZ3N0cmVhbWVyR1dvcmxkLT5lbnRlckZ1bGxzY3JlZW4o
KSk7CisKKyAgICBHc3RFbGVtZW50KiBwaXBlbGluZSA9IG1fbWVkaWFFbGVtZW50LT5wbGF0Zm9y
bU1lZGlhKCkubWVkaWEuZ3N0cmVhbWVyR1dvcmxkLT5waXBlbGluZSgpOworICAgIGdfc2lnbmFs
X2Nvbm5lY3QocGlwZWxpbmUsICJub3RpZnk6OnZvbHVtZSIsIEdfQ0FMTEJBQ0socGxheWVyVm9s
dW1lQ2hhbmdlZENhbGxiYWNrKSwgdGhpcyk7CisgICAgZ19zaWduYWxfY29ubmVjdChwaXBlbGlu
ZSwgIm5vdGlmeTo6bXV0ZSIsIEdfQ0FMTEJBQ0socGxheWVyTXV0ZUNoYW5nZWRDYWxsYmFjayks
IHRoaXMpOworCisgICAgaWYgKCFtX2h1ZFdpbmRvdykKKyAgICAgICAgY3JlYXRlSHVkKCk7CisK
KyAgICAvLyBFbnN1cmUgYmxhY2sgYmFja2dyb3VuZC4KKyAgICBHZGtDb2xvciBjb2xvcjsKKyAg
ICBnZGtfY29sb3JfcGFyc2UoImJsYWNrIiwgJmNvbG9yKTsKKyAgICBndGtfd2lkZ2V0X21vZGlm
eV9iZyhtX3dpbmRvdywgR1RLX1NUQVRFX05PUk1BTCwgJmNvbG9yKTsKKyAgICBndGtfd2lkZ2V0
X3NldF9kb3VibGVfYnVmZmVyZWQobV93aW5kb3csIEZBTFNFKTsKKworICAgIGdfc2lnbmFsX2Nv
bm5lY3QobV93aW5kb3csICJrZXktcHJlc3MtZXZlbnQiLCBHX0NBTExCQUNLKG9uRnVsbHNjcmVl
bkd0a0tleVByZXNzRXZlbnQpLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2luZG93
LCAiZGVzdHJveSIsIEdfQ0FMTEJBQ0sob25GdWxsc2NyZWVuR3RrRGVzdHJveSksIHRoaXMpOwor
ICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93aW5kb3csICJub3RpZnk6OmlzLWFjdGl2ZSIsIEdfQ0FM
TEJBQ0sob25GdWxsc2NyZWVuR3RrQWN0aXZlTm90aWZpY2F0aW9uKSwgdGhpcyk7CisKKworICAg
IGd0a193aWRnZXRfc2hvd19hbGwobV93aW5kb3cpOworICAgIGd0a193aWRnZXRfcmVhbGl6ZSht
X3dpbmRvdyk7CisKKyAgICBHZGtXaW5kb3cqIHdpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRv
dyhtX3dpbmRvdyk7CisgICAgR2RrQ3Vyc29yKiBjdXJzb3IgPSBnZGtfY3Vyc29yX25ldyhHREtf
QkxBTktfQ1VSU09SKTsKKyAgICBtX2N1cnNvciA9IGdka193aW5kb3dfZ2V0X2N1cnNvcih3aW5k
b3cpOworICAgIGdka193aW5kb3dfc2V0X2N1cnNvcih3aW5kb3csIGN1cnNvcik7CisgICAgZ2Rr
X2N1cnNvcl91bnJlZihjdXJzb3IpOworCisgICAgZ19zaWduYWxfY29ubmVjdChtX3dpbmRvdywg
Im1vdGlvbi1ub3RpZnktZXZlbnQiLCBHX0NBTExCQUNLKG9uRnVsbHNjcmVlbkd0a01vdGlvbk5v
dGlmeUV2ZW50KSwgdGhpcyk7CisgICAgZ19zaWduYWxfY29ubmVjdChtX3dpbmRvdywgImNvbmZp
Z3VyZS1ldmVudCIsIEdfQ0FMTEJBQ0sob25GdWxsc2NyZWVuR3RrQ29uZmlndXJlRXZlbnQpLCB0
aGlzKTsKKworICAgIGd0a193aW5kb3dfZnVsbHNjcmVlbihHVEtfV0lORE9XKG1fd2luZG93KSk7
CisgICAgZ3RrX3dpZGdldF9zaG93X2FsbChtX2h1ZFdpbmRvdyk7CisgICAgc2hvd0h1ZCh0cnVl
KTsKK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp1cGRhdGVIdWRQb3NpdGlv
bigpCit7CisgICAgaWYgKCFtX2h1ZFdpbmRvdykKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8g
R2V0IHRoZSBzY3JlZW4gcmVjdGFuZ2xlLgorICAgIEdka1NjcmVlbiogc2NyZWVuID0gZ3RrX3dp
bmRvd19nZXRfc2NyZWVuKEdUS19XSU5ET1cobV93aW5kb3cpKTsKKyAgICBHZGtXaW5kb3cqIHdp
bmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyhtX3dpbmRvdyk7CisgICAgR2RrUmVjdGFuZ2xl
IGZ1bGxzY3JlZW5SZWN0YW5nbGU7CisgICAgZ2RrX3NjcmVlbl9nZXRfbW9uaXRvcl9nZW9tZXRy
eShzY3JlZW4sIGdka19zY3JlZW5fZ2V0X21vbml0b3JfYXRfd2luZG93KHNjcmVlbiwgd2luZG93
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmdWxsc2NyZWVuUmVjdGFu
Z2xlKTsKKworICAgIC8vIEdldCB0aGUgcG9wdXAgd2luZG93IHNpemUuCisgICAgaW50IGh1ZFdp
ZHRoLCBodWRIZWlnaHQ7CisgICAgZ3RrX3dpbmRvd19nZXRfc2l6ZShHVEtfV0lORE9XKG1faHVk
V2luZG93KSwgJmh1ZFdpZHRoLCAmaHVkSGVpZ2h0KTsKKworICAgIC8vIFNjYWxlIHRoZSBodWQg
dG8gdGhlIGZ1bGwgd2lkdGggb2YgdGhlIHNjcmVlbi4KKyAgICBndGtfd2luZG93X3Jlc2l6ZShH
VEtfV0lORE9XKG1faHVkV2luZG93KSwgZnVsbHNjcmVlblJlY3RhbmdsZS53aWR0aCwgaHVkSGVp
Z2h0KTsKKworICAgIC8vIE1vdmUgdGhlIGh1ZCB0byB0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW4u
CisgICAgZ3RrX3dpbmRvd19tb3ZlKEdUS19XSU5ET1cobV9odWRXaW5kb3cpLCBmdWxsc2NyZWVu
UmVjdGFuZ2xlLngsCisgICAgICAgICAgICAgICAgICAgIGZ1bGxzY3JlZW5SZWN0YW5nbGUuaGVp
Z2h0ICsgZnVsbHNjcmVlblJlY3RhbmdsZS55IC0gaHVkSGVpZ2h0KTsKK30KKwordm9pZCBGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyOjpleGl0T25Vc2VyUmVxdWVzdCgpCit7CisgICAgbV9tZWRp
YUVsZW1lbnQtPmV4aXRGdWxsc2NyZWVuKCk7Cit9CisKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlcjo6ZXhpdEZ1bGxzY3JlZW4oKQoreworICAgIGlmICghbV9odWRXaW5kb3cpCisgICAg
ICAgIHJldHVybjsKKworICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyht
X3dpbmRvdywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob25GdWxsc2NyZWVuR3RrS2V5UHJlc3NF
dmVudCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHRoaXMpKTsKKyAgICBnX3NpZ25hbF9oYW5k
bGVyc19kaXNjb25uZWN0X2J5X2Z1bmMobV93aW5kb3csIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KG9uRnVsbHNjcmVlbkd0a0Rlc3Ryb3kpLCByZWludGVycHJldF9jYXN0PHZvaWQqPih0aGlzKSk7
CisgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKG1fd2luZG93LCByZWlu
dGVycHJldF9jYXN0PHZvaWQqPihvbkZ1bGxzY3JlZW5HdGtNb3Rpb25Ob3RpZnlFdmVudCksIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHRoaXMpKTsKKyAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNj
b25uZWN0X2J5X2Z1bmMobV93aW5kb3csIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9uRnVsbHNj
cmVlbkd0a0NvbmZpZ3VyZUV2ZW50KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odGhpcykpOwor
CisgICAgR3N0RWxlbWVudCogcGlwZWxpbmUgPSBtX21lZGlhRWxlbWVudC0+cGxhdGZvcm1NZWRp
YSgpLm1lZGlhLmdzdHJlYW1lckdXb3JsZC0+cGlwZWxpbmUoKTsKKyAgICBnX3NpZ25hbF9oYW5k
bGVyc19kaXNjb25uZWN0X2J5X2Z1bmMocGlwZWxpbmUsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KHBsYXllclZvbHVtZUNoYW5nZWRDYWxsYmFjayksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHRo
aXMpKTsKKyAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMocGlwZWxpbmUs
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHBsYXllck11dGVDaGFuZ2VkQ2FsbGJhY2spLCByZWlu
dGVycHJldF9jYXN0PHZvaWQqPih0aGlzKSk7CisKKyAgICBpZiAobV9odWRUaW1lb3V0SWQpIHsK
KyAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKG1faHVkVGltZW91dElkKTsKKyAgICAgICAgbV9odWRU
aW1lb3V0SWQgPSAwOworICAgIH0KKworICAgIGlmIChtX3Byb2dyZXNzQmFyVXBkYXRlSWQpIHsK
KyAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKG1fcHJvZ3Jlc3NCYXJVcGRhdGVJZCk7CisgICAgICAg
IG1fcHJvZ3Jlc3NCYXJVcGRhdGVJZCA9IDA7CisgICAgfQorCisgICAgaWYgKG1fbWVkaWFFbGVt
ZW50LT5wbGF0Zm9ybU1lZGlhKCkudHlwZSA9PSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhOjpHU3Ry
ZWFtZXJHV29ybGRUeXBlKQorICAgICAgICBtX21lZGlhRWxlbWVudC0+cGxhdGZvcm1NZWRpYSgp
Lm1lZGlhLmdzdHJlYW1lckdXb3JsZC0+ZXhpdEZ1bGxzY3JlZW4oKTsKKworICAgIGd0a193aWRn
ZXRfaGlkZV9hbGwobV93aW5kb3cpOworCisgICAgZ3RrX3dpZGdldF9kZXN0cm95KG1faHVkV2lu
ZG93KTsKKyAgICBtX2h1ZFdpbmRvdyA9IDA7Cit9CisKK2Jvb2wgRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlcjo6Y2FuUGxheSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50ICYm
IG1fbWVkaWFFbGVtZW50LT5jYW5QbGF5KCk7Cit9CisKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlcjo6cGxheSgpCit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50KQorICAgICAgICBtX21l
ZGlhRWxlbWVudC0+cGxheShtX21lZGlhRWxlbWVudC0+cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkp
OworCisgICAgcGxheVN0YXRlQ2hhbmdlZCgpOworICAgIHNob3dIdWQodHJ1ZSk7Cit9CisKK3Zv
aWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6cGF1c2UoKQoreworICAgIGlmIChtX21lZGlh
RWxlbWVudCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnQtPnBhdXNlKG1fbWVkaWFFbGVtZW50LT5w
cm9jZXNzaW5nVXNlckdlc3R1cmUoKSk7CisKKyAgICBwbGF5U3RhdGVDaGFuZ2VkKCk7CisgICAg
c2hvd0h1ZChmYWxzZSk7Cit9CisKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6cGxh
eVN0YXRlQ2hhbmdlZCgpCit7CisgICAgaWYgKGNhblBsYXkoKSkKKyAgICAgICAgZ19vYmplY3Rf
c2V0KG1fcGxheVBhdXNlQWN0aW9uLCAidG9vbHRpcCIsIF8oIlBsYXkiKSwgImljb24tbmFtZSIs
ICJtZWRpYS1wbGF5YmFjay1zdGFydC1zeW1ib2xpYyIsIE5VTEwpOworICAgIGVsc2UKKyAgICAg
ICAgZ19vYmplY3Rfc2V0KG1fcGxheVBhdXNlQWN0aW9uLCAidG9vbHRpcCIsIF8oIlBhdXNlIiks
ICJpY29uLW5hbWUiLCAibWVkaWEtcGxheWJhY2stcGF1c2Utc3ltYm9saWMiLCBOVUxMKTsKK30K
Kwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp0b2dnbGVQbGF5KCkKK3sKKyAgICBp
ZiAoY2FuUGxheSgpKQorICAgICAgICBwbGF5KCk7CisgICAgZWxzZQorICAgICAgICBwYXVzZSgp
OworfQorCitmbG9hdCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp2b2x1bWUoKSBjb25zdAor
eworICAgIHJldHVybiBtX21lZGlhRWxlbWVudCA/IG1fbWVkaWFFbGVtZW50LT52b2x1bWUoKSA6
IDA7Cit9CisKK2Jvb2wgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6bXV0ZWQoKSBjb25zdAor
eworICAgIHJldHVybiBtX21lZGlhRWxlbWVudCA/IG1fbWVkaWFFbGVtZW50LT5tdXRlZCgpIDog
ZmFsc2U7Cit9CisKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6c2V0Vm9sdW1lKGZs
b2F0IHZvbHVtZSkKK3sKKyAgICBpZiAodm9sdW1lIDwgMC4wIHx8IHZvbHVtZSA+IDEuMCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fbWVkaWFFbGVtZW50KSB7CisgICAgICAgIEV4Y2Vw
dGlvbkNvZGUgZWM7CisgICAgICAgIG1fbWVkaWFFbGVtZW50LT5zZXRWb2x1bWUodm9sdW1lLCBl
Yyk7CisgICAgfQorfQorCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnZvbHVtZUNo
YW5nZWQoKQoreworICAgIGdfc2lnbmFsX2hhbmRsZXJfYmxvY2sobV92b2x1bWVCdXR0b24sIG1f
dm9sdW1lVXBkYXRlSWQpOworICAgIGd0a19zY2FsZV9idXR0b25fc2V0X3ZhbHVlKEdUS19TQ0FM
RV9CVVRUT04obV92b2x1bWVCdXR0b24pLCB2b2x1bWUoKSk7CisgICAgZ19zaWduYWxfaGFuZGxl
cl91bmJsb2NrKG1fdm9sdW1lQnV0dG9uLCBtX3ZvbHVtZVVwZGF0ZUlkKTsKK30KKwordm9pZCBG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjptdXRlQ2hhbmdlZCgpCit7CisgICAgZ19zaWduYWxf
aGFuZGxlcl9ibG9jayhtX3ZvbHVtZUJ1dHRvbiwgbV92b2x1bWVVcGRhdGVJZCk7CisgICAgZ3Rr
X3NjYWxlX2J1dHRvbl9zZXRfdmFsdWUoR1RLX1NDQUxFX0JVVFRPTihtX3ZvbHVtZUJ1dHRvbiks
IG11dGVkKCkgPyAwIDogdm9sdW1lKCkpOworICAgIGdfc2lnbmFsX2hhbmRsZXJfdW5ibG9jayht
X3ZvbHVtZUJ1dHRvbiwgbV92b2x1bWVVcGRhdGVJZCk7Cit9CisKK2Zsb2F0IEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXI6OmN1cnJlbnRUaW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZWRp
YUVsZW1lbnQgPyBtX21lZGlhRWxlbWVudC0+Y3VycmVudFRpbWUoKSA6IDA7Cit9CisKK3ZvaWQg
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6c2V0Q3VycmVudFRpbWUoZmxvYXQgdmFsdWUpCit7
CisgICAgaWYgKG1fbWVkaWFFbGVtZW50KSB7CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7Cisg
ICAgICAgIG1fbWVkaWFFbGVtZW50LT5zZXRDdXJyZW50VGltZSh2YWx1ZSwgZWMpOworICAgIH0K
K30KKworZmxvYXQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZHVyYXRpb24oKSBjb25zdAor
eworICAgIHJldHVybiBtX21lZGlhRWxlbWVudCA/IG1fbWVkaWFFbGVtZW50LT5kdXJhdGlvbigp
IDogMDsKK30KKworZmxvYXQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6cGVyY2VudExvYWRl
ZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50ID8gbV9tZWRpYUVsZW1lbnQt
PnBlcmNlbnRMb2FkZWQoKSA6IDA7Cit9CisKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
cjo6YmVnaW5TZWVrKCkKK3sKKyAgICBtX3NlZWtMb2NrID0gdHJ1ZTsKKworICAgIGlmIChtX21l
ZGlhRWxlbWVudCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnQtPmJlZ2luU2NydWJiaW5nKCk7Cit9
CisKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZG9TZWVrKCkKK3sKKyAgICBpZiAo
IW1fc2Vla0xvY2spCisgICAgICAgICByZXR1cm47CisKKyAgICBzZXRDdXJyZW50VGltZShndGtf
cmFuZ2VfZ2V0X3ZhbHVlKEdUS19SQU5HRShtX3RpbWVIU2NhbGUpKSpkdXJhdGlvbigpIC8gMTAw
KTsKK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjplbmRTZWVrKCkKK3sKKyAg
ICBpZiAobV9tZWRpYUVsZW1lbnQpCisgICAgICAgIG1fbWVkaWFFbGVtZW50LT5lbmRTY3J1YmJp
bmcoKTsKKworICAgIG1fc2Vla0xvY2sgPSBmYWxzZTsKK30KKworc3RhdGljIFN0cmluZyB0aW1l
VG9TdHJpbmcoZmxvYXQgdGltZSkKK3sKKyAgICBpZiAoIWlzZmluaXRlKHRpbWUpKQorICAgICAg
ICB0aW1lID0gMDsKKyAgICBpbnQgc2Vjb25kcyA9IGZhYnNmKHRpbWUpOworICAgIGludCBob3Vy
cyA9IHNlY29uZHMgLyAoNjAgKiA2MCk7CisgICAgaW50IG1pbnV0ZXMgPSAoc2Vjb25kcyAvIDYw
KSAlIDYwOworICAgIHNlY29uZHMgJT0gNjA7CisKKyAgICBpZiAoaG91cnMpIHsKKyAgICAgICAg
aWYgKGhvdXJzID4gOSkKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJXMlMDJk
OiUwMmQ6JTAyZCIsICh0aW1lIDwgMCA/ICItIiA6ICIiKSwgaG91cnMsIG1pbnV0ZXMsIHNlY29u
ZHMpOworICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiVzJTAxZDolMDJkOiUwMmQiLCAo
dGltZSA8IDAgPyAiLSIgOiAiIiksIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzKTsKKyAgICB9CisK
KyAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiVzJTAyZDolMDJkIiwgKHRpbWUgPCAwID8gIi0i
IDogIiIpLCBtaW51dGVzLCBzZWNvbmRzKTsKK30KKworZ2Jvb2xlYW4gRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcjo6dXBkYXRlSHVkUHJvZ3Jlc3NCYXIoKQoreworICAgIGZsb2F0IG1lZGlhRHVy
YXRpb24oZHVyYXRpb24oKSk7CisgICAgZmxvYXQgbWVkaWFQb3NpdGlvbihjdXJyZW50VGltZSgp
KTsKKworICAgIGlmICghbV9zZWVrTG9jaykgeworICAgICAgICBnZG91YmxlIHZhbHVlID0gMC4w
OworCisgICAgICAgIGlmIChtZWRpYVBvc2l0aW9uICYmIG1lZGlhRHVyYXRpb24pCisgICAgICAg
ICAgICB2YWx1ZSA9IChtZWRpYVBvc2l0aW9uICogMTAwLjApIC8gbWVkaWFEdXJhdGlvbjsKKwor
ICAgICAgICBHdGtBZGp1c3RtZW50KiBhZGp1c3RtZW50ID0gZ3RrX3JhbmdlX2dldF9hZGp1c3Rt
ZW50KEdUS19SQU5HRShtX3RpbWVIU2NhbGUpKTsKKyAgICAgICAgZ3RrX2FkanVzdG1lbnRfc2V0
X3ZhbHVlKGFkanVzdG1lbnQsIHZhbHVlKTsKKyAgICB9CisKKyAgICBndGtfcmFuZ2Vfc2V0X2Zp
bGxfbGV2ZWwoR1RLX1JBTkdFKG1fdGltZUhTY2FsZSksIHBlcmNlbnRMb2FkZWQoKSogMTAwKTsK
KworICAgIGdjaGFyKiBsYWJlbCA9IGdfc3RyZHVwX3ByaW50ZigiJXMgLyAlcyIsIHRpbWVUb1N0
cmluZyhtZWRpYVBvc2l0aW9uKS51dGY4KCkuZGF0YSgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0aW1lVG9TdHJpbmcobWVkaWFEdXJhdGlvbikudXRmOCgpLmRhdGEoKSk7
CisgICAgZ3RrX2xhYmVsX3NldF90ZXh0KEdUS19MQUJFTChtX3RpbWVMYWJlbCksIGxhYmVsKTsK
KyAgICBnX2ZyZWUobGFiZWwpOworICAgIHJldHVybiBUUlVFOworfQorCit2b2lkIEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI6OmNyZWF0ZUh1ZCgpCit7CisgICAgbV9odWRXaW5kb3cgPSBndGtf
d2luZG93X25ldyhHVEtfV0lORE9XX1BPUFVQKTsKKyAgICBndGtfd2luZG93X3NldF9ncmF2aXR5
KEdUS19XSU5ET1cobV9odWRXaW5kb3cpLCBHREtfR1JBVklUWV9TT1VUSF9XRVNUKTsKKyAgICBn
dGtfd2luZG93X3NldF90eXBlX2hpbnQoR1RLX1dJTkRPVyhtX2h1ZFdpbmRvdyksIEdES19XSU5E
T1dfVFlQRV9ISU5UX05PUk1BTCk7CisKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1faHVkV2luZG93
LCAibW90aW9uLW5vdGlmeS1ldmVudCIsIEdfQ0FMTEJBQ0sob25GdWxsc2NyZWVuR3RrTW90aW9u
Tm90aWZ5RXZlbnQpLCB0aGlzKTsKKworICAgIEd0a1dpZGdldCogaGJveCA9IGd0a19oYm94X25l
dyhGQUxTRSwgNCk7CisgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUihtX2h1ZFdp
bmRvdyksIGhib3gpOworCisgICAgbV9wbGF5UGF1c2VBY3Rpb24gPSBndGtfYWN0aW9uX25ldygi
cGxheSIsIF8oIlBsYXkgLyBQYXVzZSIpLCBfKCJQbGF5IG9yIHBhdXNlIHRoZSBtZWRpYSIpLCAi
bWVkaWEtcGxheWJhY2stcGF1c2Utc3ltYm9saWMiKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1f
cGxheVBhdXNlQWN0aW9uLCAiYWN0aXZhdGUiLCBHX0NBTExCQUNLKHRvZ2dsZVBsYXlQYXVzZUFj
dGl2YXRlZCksIHRoaXMpOworCisgICAgcGxheVN0YXRlQ2hhbmdlZCgpOworCisgICAgR3RrV2lk
Z2V0KiBpdGVtID0gZ3RrX2FjdGlvbl9jcmVhdGVfdG9vbF9pdGVtKG1fcGxheVBhdXNlQWN0aW9u
KTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChoYm94KSwgaXRlbSwgRkFMU0UsIFRS
VUUsIDApOworCisgICAgR3RrV2lkZ2V0KiBsYWJlbCA9IGd0a19sYWJlbF9uZXcoXygiVGltZToi
KSk7CisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1goaGJveCksIGxhYmVsLCBGQUxTRSwg
VFJVRSwgMCk7CisKKyAgICBHdGtPYmplY3QqIGFkanVzdG1lbnQgPSBndGtfYWRqdXN0bWVudF9u
ZXcoMC4wLCAwLjAsIDEwMC4wLCAwLjEsIDEuMCwgMS4wKTsKKyAgICBtX3RpbWVIU2NhbGUgPSBn
dGtfaHNjYWxlX25ldyhHVEtfQURKVVNUTUVOVChhZGp1c3RtZW50KSk7CisgICAgZ3RrX3NjYWxl
X3NldF9kcmF3X3ZhbHVlKEdUS19TQ0FMRShtX3RpbWVIU2NhbGUpLCBGQUxTRSk7CisgICAgZ3Rr
X3JhbmdlX3NldF9zaG93X2ZpbGxfbGV2ZWwoR1RLX1JBTkdFKG1fdGltZUhTY2FsZSksIFRSVUUp
OworICAgIGd0a19yYW5nZV9zZXRfdXBkYXRlX3BvbGljeShHVEtfUkFOR0UobV90aW1lSFNjYWxl
KSwgR1RLX1VQREFURV9DT05USU5VT1VTKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fdGltZUhT
Y2FsZSwgImJ1dHRvbi1wcmVzcy1ldmVudCIsIEdfQ0FMTEJBQ0sodGltZVNjYWxlQnV0dG9uUHJl
c3NlZCksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV90aW1lSFNjYWxlLCAiYnV0dG9u
LXJlbGVhc2UtZXZlbnQiLCBHX0NBTExCQUNLKHRpbWVTY2FsZUJ1dHRvblJlbGVhc2VkKSwgdGhp
cyk7CisgICAgbV9oc2NhbGVVcGRhdGVJZCA9IGdfc2lnbmFsX2Nvbm5lY3QobV90aW1lSFNjYWxl
LCAidmFsdWUtY2hhbmdlZCIsIEdfQ0FMTEJBQ0sodGltZVNjYWxlVmFsdWVDaGFuZ2VkKSwgdGhp
cyk7CisKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChoYm94KSwgbV90aW1lSFNjYWxl
LCBUUlVFLCBUUlVFLCAwKTsKKworICAgIG1fdGltZUxhYmVsID0gZ3RrX2xhYmVsX25ldygiIik7
CisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1goaGJveCksIG1fdGltZUxhYmVsLCBGQUxT
RSwgVFJVRSwgMCk7CisKKyAgICAvLyBWb2x1bWUgYnV0dG9uLgorICAgIG1fdm9sdW1lQnV0dG9u
ID0gZ3RrX3ZvbHVtZV9idXR0b25fbmV3KCk7CisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19C
T1goaGJveCksIG1fdm9sdW1lQnV0dG9uLCBGQUxTRSwgVFJVRSwgMCk7CisgICAgZ3RrX3NjYWxl
X2J1dHRvbl9zZXRfdmFsdWUoR1RLX1NDQUxFX0JVVFRPTihtX3ZvbHVtZUJ1dHRvbiksIHZvbHVt
ZSgpKTsKKyAgICBtX3ZvbHVtZVVwZGF0ZUlkID0gZ19zaWduYWxfY29ubmVjdChtX3ZvbHVtZUJ1
dHRvbiwgInZhbHVlLWNoYW5nZWQiLCBHX0NBTExCQUNLKHZvbHVtZVZhbHVlQ2hhbmdlZCksIHRo
aXMpOworCisKKyAgICBtX2V4aXRGdWxsc2NyZWVuQWN0aW9uID0gZ3RrX2FjdGlvbl9uZXcoImV4
aXQiLCBfKCJFeGl0IEZ1bGxzY3JlZW4iKSwgXygiRXhpdCBmcm9tIGZ1bGxzY3JlZW4gbW9kZSIp
LCAidmlldy1yZXN0b3JlLXN5bWJvbGljIik7CisgICAgZ19zaWduYWxfY29ubmVjdChtX2V4aXRG
dWxsc2NyZWVuQWN0aW9uLCAiYWN0aXZhdGUiLCBHX0NBTExCQUNLKGV4aXRGdWxsc2NyZWVuQWN0
aXZhdGVkKSwgdGhpcyk7CisgICAgZ19vYmplY3Rfc2V0KG1fZXhpdEZ1bGxzY3JlZW5BY3Rpb24s
ICJpY29uLW5hbWUiLCAidmlldy1yZXN0b3JlLXN5bWJvbGljIiwgTlVMTCk7CisgICAgaXRlbSA9
IGd0a19hY3Rpb25fY3JlYXRlX3Rvb2xfaXRlbShtX2V4aXRGdWxsc2NyZWVuQWN0aW9uKTsKKyAg
ICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChoYm94KSwgaXRlbSwgRkFMU0UsIFRSVUUsIDAp
OworCisKKyAgICBtX3Byb2dyZXNzQmFyVXBkYXRlSWQgPSBnX3RpbWVvdXRfYWRkKFBST0dSRVNT
X0JBUl9VUERBVEVfSU5URVJWQUwsIHByb2dyZXNzQmFyVXBkYXRlQ2FsbGJhY2ssIHRoaXMpOwor
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyLmggYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Z1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li45YzQ3Yzg5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9G
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmgKQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiAgQ29w
eXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBGdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyX2gKKyNkZWZpbmUgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcl9oCisK
KyNpZiBFTkFCTEUoVklERU8pCisKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgorCit0eXBlZGVmIHN0cnVjdCBfR3RrT2JqZWN0IEd0a09iamVj
dDsKK3R5cGVkZWYgc3RydWN0IF9HdGtXaWRnZXQgR3RrV2lkZ2V0OwordHlwZWRlZiBzdHJ1Y3Qg
X0d0a0FjdGlvbiBHdGtBY3Rpb247Cit0eXBlZGVmIHN0cnVjdCBfR2RrQ3Vyc29yIEdka0N1cnNv
cjsKK3R5cGVkZWYgc3RydWN0IF9HZGtFdmVudENvbmZpZ3VyZSBHZGtFdmVudENvbmZpZ3VyZTsK
KworCitjbGFzcyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyIDogcHVibGljIE5vbmNvcHlhYmxl
IHsKK3B1YmxpYzoKKyAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKCk7CisgICAgdmlydHVh
bCB+RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcigpOworCisgICAgdm9pZCBzZXRNZWRpYUVsZW1l
bnQoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCopOworICAgIFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQqIG1lZGlhRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFFbGVtZW50LmdldCgp
OyB9CisKKyAgICB2b2lkIGd0a0NvbmZpZ3VyZShHZGtFdmVudENvbmZpZ3VyZSogZXZlbnQpOwor
CisgICAgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKTsKKyAgICB2b2lkIGV4aXRGdWxsc2NyZWVuKCk7
CisKKyAgICB2b2lkIGV4aXRPblVzZXJSZXF1ZXN0KCk7CisgICAgdm9pZCB0b2dnbGVQbGF5KCk7
CisgICAgdm9pZCBiZWdpblNlZWsoKTsKKyAgICB2b2lkIGRvU2VlaygpOworICAgIHZvaWQgZW5k
U2VlaygpOworCisgICAgdm9pZCBoaWRlSHVkKCk7CisgICAgdm9pZCBzaG93SHVkKGJvb2wpOwor
ICAgIGdib29sZWFuIHVwZGF0ZUh1ZFByb2dyZXNzQmFyKCk7CisKKyAgICBmbG9hdCB2b2x1bWUo
KSBjb25zdDsKKyAgICB2b2lkIHNldFZvbHVtZShmbG9hdCk7CisgICAgdm9pZCB2b2x1bWVDaGFu
Z2VkKCk7CisgICAgdm9pZCBtdXRlQ2hhbmdlZCgpOworCitwcml2YXRlOgorICAgIGJvb2wgY2Fu
UGxheSgpIGNvbnN0OworICAgIHZvaWQgcGxheSgpOworICAgIHZvaWQgcGF1c2UoKTsKKyAgICB2
b2lkIHBsYXlTdGF0ZUNoYW5nZWQoKTsKKworICAgIGJvb2wgbXV0ZWQoKSBjb25zdDsKKworICAg
IGZsb2F0IGN1cnJlbnRUaW1lKCkgY29uc3Q7CisgICAgdm9pZCBzZXRDdXJyZW50VGltZShmbG9h
dCk7CisKKyAgICBmbG9hdCBkdXJhdGlvbigpIGNvbnN0OworICAgIGZsb2F0IHBlcmNlbnRMb2Fk
ZWQoKSBjb25zdDsKKworICAgIHZvaWQgY3JlYXRlSHVkKCk7CisgICAgdm9pZCB1cGRhdGVIdWRQ
b3NpdGlvbigpOworCisgICAgUmVmUHRyPFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ+IG1fbWVk
aWFFbGVtZW50OworCisgICAgZ3VpbnQgbV9odWRUaW1lb3V0SWQ7CisgICAgZ3VpbnQgbV9wcm9n
cmVzc0JhclVwZGF0ZUlkOworICAgIGd1aW50IG1fcHJvZ3Jlc3NCYXJGaWxsVXBkYXRlSWQ7Cisg
ICAgZ3VpbnQgbV9oc2NhbGVVcGRhdGVJZDsKKyAgICBndWludCBtX3ZvbHVtZVVwZGF0ZUlkOwor
ICAgIGJvb2wgbV9zZWVrTG9jazsKKyAgICBHdGtXaWRnZXQqIG1fd2luZG93OworICAgIEdka0N1
cnNvciogbV9jdXJzb3I7CisgICAgR3RrV2lkZ2V0KiBtX2h1ZFdpbmRvdzsKKyAgICBHdGtBY3Rp
b24qIG1fcGxheVBhdXNlQWN0aW9uOworICAgIEd0a0FjdGlvbiogbV9leGl0RnVsbHNjcmVlbkFj
dGlvbjsKKyAgICBHdGtXaWRnZXQqIG1fdGltZUhTY2FsZTsKKyAgICBHdGtXaWRnZXQqIG1fdGlt
ZUxhYmVsOworICAgIEd0a1dpZGdldCogbV92b2x1bWVCdXR0b247Cit9OworCisjZW5kaWYKKwor
I2VuZGlmIC8vIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvV2ViS2l0
L2d0ay9wby9QT1RGSUxFUyBiL1dlYktpdC9ndGsvcG8vUE9URklMRVMKaW5kZXggMDViYTEzOC4u
ZmZkMDAxNSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9wby9QT1RGSUxFUworKysgYi9XZWJLaXQv
Z3RrL3BvL1BPVEZJTEVTCkBAIC0xLDYgKzEsNyBAQAogIyBMaXN0IG9mIHNvdXJjZSBmaWxlcyB3
aGljaCBjb250YWluIHRyYW5zbGF0YWJsZSBzdHJpbmdzLgogV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0NvbnRl
eHRNZW51Q2xpZW50R3RrLmNwcAorV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyLmNwcAogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZG93bmxvYWQuY3Bw
CiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRzb3VwYXV0aGRpYWxvZy5jCiBXZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJmcmFtZS5jcHAKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHByaXZhdGUuY3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5jcHAKaW5k
ZXggNDFkZTc2ZS4uOTI4NzQyMiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
cHJpdmF0ZS5jcHAKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5jcHAKQEAg
LTI4LDYgKzI4LDggQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1l
TG9hZGVyQ2xpZW50R3RrLmgiCiAjaW5jbHVkZSAiR3RrVmVyc2lvbmluZy5oIgorI2luY2x1ZGUg
IkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJI
aXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSWNvbkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgpAQCAtNDksNiArNTEsMTAgQEAKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRl
IDx3dGYvVGhyZWFkaW5nLmg+CiAKKyNpZiBFTkFCTEUoVklERU8pCisjaW5jbHVkZSAiRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlci5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUoREFUQUJBU0UpCiAj
aW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCiAjZW5kaWYKQEAgLTI4MSwzICsyODcsMzMgQEAg
dm9pZCB3ZWJraXRfcmVzZXRfb3JpZ2luX2FjY2Vzc193aGl0ZV9saXN0cygpCiB7CiAgICAgU2Vj
dXJpdHlPcmlnaW46OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpOwogfQorCisKK3ZvaWQg
d2Via2l0X3dlYl92aWV3X2VudGVyX2Z1bGxzY3JlZW4oV2ViS2l0V2ViVmlldyogd2ViVmlldywg
Tm9kZSogbm9kZSkKK3sKKyAgICBpZiAoIW5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp2aWRl
b1RhZykpCisgICAgICAgIHJldHVybjsKKworI2lmIEVOQUJMRShWSURFTykKKyAgICBIVE1MTWVk
aWFFbGVtZW50KiB2aWRlb0VsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50Kj4o
bm9kZSk7CisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2Owor
CisgICAgLy8gRmlyc3QgZXhpdCBGdWxsc2NyZWVuIGZvciB0aGUgb2xkIG1lZGlhRWxlbWVudC4K
KyAgICBpZiAocHJpdi0+ZnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcikKKyAgICAgICAgcHJpdi0+
ZnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci0+ZXhpdEZ1bGxzY3JlZW4oKTsKKworICAgIHByaXYt
PmZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIgPSBuZXcgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
cjsKKyAgICBwcml2LT5mdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLT5zZXRNZWRpYUVsZW1lbnQo
dmlkZW9FbGVtZW50KTsKKyAgICBwcml2LT5mdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLT5lbnRl
ckZ1bGxzY3JlZW4oKTsKKyNlbmRpZgorfQorCit2b2lkIHdlYmtpdF93ZWJfdmlld19leGl0X2Z1
bGxzY3JlZW4oV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyNpZiBFTkFCTEUoVklERU8pCisg
ICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OworICAgIGlmIChw
cml2LT5mdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKQorICAgICAgICBwcml2LT5mdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyLT5leGl0RnVsbHNjcmVlbigpOworI2VuZGlmCit9CisKZGlmZiAtLWdp
dCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaCBiL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHByaXZhdGUuaAppbmRleCA3M2Y5ZmNjLi45ZTY5ZmQxIDEwMDY0NAotLS0gYS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0cHJpdmF0ZS5oCkBAIC01Niw2ICs1Niw4IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50
R3RrLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVu
dC5oIgorI2luY2x1ZGUgIkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJO
b2RlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCkBAIC0xNTcsNiArMTU5LDggQEAgZXh0ZXJuICJD
IiB7CiAgICAgICAgIGdib29sZWFuIGRpc3Bvc2luZzsKICAgICAgICAgZ2Jvb2xlYW4gdXNlUHJp
bWFyeUZvclBhc3RlOwogCisgICAgICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIGZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXI7CisKICAgICAgICAgLy8gVGhlc2UgYXJlIGhvc3RlZCBoZXJl
IGJlY2F1c2UgdGhlIERhdGFTb3VyY2Ugb2JqZWN0IGlzCiAgICAgICAgIC8vIGNyZWF0ZWQgdG9v
IGxhdGUgaW4gdGhlIGZyYW1lIGxvYWRpbmcgcHJvY2Vzcy4KICAgICAgICAgV2ViS2l0V2ViUmVz
b3VyY2UqIG1haW5SZXNvdXJjZTsKQEAgLTM5Nyw2ICs0MDEsOSBAQCBleHRlcm4gIkMiIHsKIAog
ICAgIFdFQktJVF9BUEkgdm9pZAogICAgIHdlYmtpdF93ZWJfZnJhbWVfbGF5b3V0KFdlYktpdFdl
YkZyYW1lKiBmcmFtZSk7CisKKyAgICB2b2lkIHdlYmtpdF93ZWJfdmlld19lbnRlcl9mdWxsc2Ny
ZWVuKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYkNvcmU6Ok5vZGUqIG5vZGUpOworICAgIHZv
aWQgd2Via2l0X3dlYl92aWV3X2V4aXRfZnVsbHNjcmVlbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
KTsKIH0KIAogI2VuZGlmCi0tIAoxLjYuMy4z
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61777</attachid>
            <date>2010-07-16 01:33:22 -0700</date>
            <delta_ts>2010-07-20 02:47:24 -0700</delta_ts>
            <desc>fullscreen video support in WebKit/gtk</desc>
            <filename>fullscreen-video-support-in-WebKitgtk.patch</filename>
            <type>text/plain</type>
            <size>45673</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSAwYjA5MGYyMTBiMTQ4YWFlMjRkYWM1ZDlhYjVhNmYzNDM5NDNkOTk1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBTYXQsIDEwIEp1bCAyMDEwIDEyOjU3OjM5ICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
ZnVsbHNjcmVlbiB2aWRlbyBzdXBwb3J0IGluIFdlYktpdC9ndGsKCi0tLQogQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEyICsKIEdOVW1ha2Vm
aWxlLmFtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiBXZWJD
b3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjEgKwog
Li4uL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuY3BwICAgICAgICAgfCAgMTc3
ICsrKysrKy0KIC4uLi9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxk
LmggIHwgICAyMiArCiAuLi4vZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5j
cHAgICAgICB8ICAgIDEgLQogV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgIDczICsrKwogV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRHdGsuY3BwICAgICAgfCAgIDI1ICsKIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50R3RrLmggICAgICAgIHwgICAgNiArCiAuLi4vV2ViQ29yZVN1cHBvcnQvRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlci5jcHAgICB8ICA1ODIgKysrKysrKysrKysrKysrKysrKysKIC4u
Li9ndGsvV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oIHwgIDEwMCAr
KysrCiBXZWJLaXQvZ3RrL3BvL1BPVEZJTEVTICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgIDEgKwogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5jcHAgICAgICAgICAgICAg
ICAgfCAgIDM2ICsrCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmggICAgICAgICAg
ICAgICAgICB8ICAgIDcgKwogY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgICAxICsKIDE1IGZpbGVzIGNoYW5nZWQsIDEwNjQgaW5zZXJ0aW9ucygr
KSwgMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQg
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmgKCmRp
ZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggM2JiNDI1OC4uNWUxZjEyZCAx
MDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDEwLTA3LTEwICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR1N0cmVhbWVyXSBH
VEsgWE92ZXJsYXkgc3VwcG9ydCBpbiBHU3RyZWFtZXJHV29ybGQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDc0CisKKyAgICAgICAgKiBjb25maWd1
cmUuYWM6IGdzdC1pbnRlcmZhY2VzIGxpbmsgc3VwcG9ydCBuZWVkZWQgZm9yIHVzZSBvZgorICAg
ICAgICBHc3RYT3ZlcmxheSBpbnRlcmZhY2UuCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IEFk
ZGVkIG5ldyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyIGZpbGVzIGluIHRoZQorICAgICAgICBi
dWlsZC4KKwogMjAxMC0wNy0xNSAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCmRpZmYgLS1naXQgYS9HTlVt
YWtlZmlsZS5hbSBiL0dOVW1ha2VmaWxlLmFtCmluZGV4IDc1NWI1MWIuLjUwMjcxZjAgMTAwNjQ0
Ci0tLSBhL0dOVW1ha2VmaWxlLmFtCisrKyBiL0dOVW1ha2VmaWxlLmFtCkBAIC0zNjgsNiArMzY4
LDggQEAgd2Via2l0Z3RrX3NvdXJjZXMgKz0gXAogCVdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50R3RrLmggXAogCVdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRHdGsuY3BwIFwKIAlXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50R3RrLmggXAorCVdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlci5jcHAgXAorCVdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlci5oIFwKIAlXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNs
aWVudEd0ay5jcHAgXAogCVdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50
R3RrLmggXAogCVdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGFzdGVib2FyZEhlbHBlckd0ay5j
cHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCAwMWViMDc2Li40ZGEwZDFhIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEwLTA1LTI4ICBQaGlsaXBw
ZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR1N0cmVhbWVyXSBHVEsgWE92ZXJsYXkgc3VwcG9y
dCBpbiBHU3RyZWFtZXJHV29ybGQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM5NDc0CisKKyAgICAgICAgR1N0cmVhbWVyR1dvcmxkIG5vdyBjYXRjaGVz
IHN5bmNocm9ub3VzIG1lc3NhZ2VzIGNvbWluZyBmcm9tIHRoZQorICAgICAgICBzaW5rcyBhbmQg
Y3JlYXRlcyBhIEdUSyB3aW5kb3cgd2hlcmUgdGhlIHZpZGVvIGNhbiBiZSBvdmVybGF5ZWQgaWYK
KyAgICAgICAgZnVsbHNjcmVlbiBkaXNwbGF5IGlzIHJlcXVlc3RlZCB1c2luZyBlbnRlckZ1bGxz
Y3JlZW4uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVy
R1dvcmxkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdzdEdXb3JsZFN5bmNNZXNzYWdlQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyR1dvcmxkOjpHU3RyZWFtZXJHV29ybGQp
OgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyR1dvcmxkOjp+R1N0cmVhbWVyR1dvcmxkKToK
KyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckdXb3JsZDo6ZW50ZXJGdWxsc2NyZWVuKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckdXb3JsZDo6ZXhpdEZ1bGxzY3JlZW4pOgorICAgICAg
ICAoV2ViQ29yZTo6R1N0cmVhbWVyR1dvcmxkOjpzZXRXaW5kb3dPdmVybGF5KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHA6CisKIDIwMTAtMDctMTUgIFNoaW5pY2hpcm8gSGFtYWppICA8aGFtYWppQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5jcHAgYi9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuY3BwCmlu
ZGV4IGM1MDIyZjkuLmZlZjBmNWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmNwcApAQCAtMjEsMTIgKzIxLDMzIEBA
CiAKICNpbmNsdWRlICJHU3RyZWFtZXJHV29ybGQuaCIKIAotI2luY2x1ZGUgIk1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oIgorI2luY2x1ZGUgIkdPd25QdHJHU3RyZWFtZXIuaCIKKworI2lu
Y2x1ZGUgPGdzdC9nc3QuaD4KKyNpbmNsdWRlIDxnc3QvaW50ZXJmYWNlcy94b3ZlcmxheS5oPgor
CisjaWYgUExBVEZPUk0oR1RLKQorI2luY2x1ZGUgPGd0ay9ndGsuaD4KKyNpZmRlZiBHREtfV0lO
RE9XSU5HX1gxMQorI2luY2x1ZGUgPGdkay9nZGt4Lmg+IC8vIGZvciBHREtfV0lORE9XX1hJRAor
I2VuZGlmCisjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitnYm9vbGVhbiBnc3RHV29ybGRTeW5jTWVzc2FnZUNhbGxiYWNrKEdzdEJ1cyogYnVz
LCBHc3RNZXNzYWdlKiBtZXNzYWdlLCBncG9pbnRlciBkYXRhKQoreworICAgIEFTU0VSVChHU1Rf
TUVTU0FHRV9UWVBFKG1lc3NhZ2UpID09IEdTVF9NRVNTQUdFX0VMRU1FTlQpOworCisgICAgR1N0
cmVhbWVyR1dvcmxkKiBnc3RHV29ybGQgPSByZWludGVycHJldF9jYXN0PEdTdHJlYW1lckdXb3Js
ZCo+KGRhdGEpOworCisgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX25hbWUobWVzc2FnZS0+c3Ry
dWN0dXJlLCAicHJlcGFyZS14d2luZG93LWlkIikpCisgICAgICAgIGdzdEdXb3JsZC0+c2V0V2lu
ZG93T3ZlcmxheShtZXNzYWdlKTsKKyAgICByZXR1cm4gVFJVRTsKK30KKwogUGFzc1JlZlB0cjxH
U3RyZWFtZXJHV29ybGQ+IEdTdHJlYW1lckdXb3JsZDo6Y3JlYXRlR1dvcmxkKE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lciogcGxheWVyKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1N0
cmVhbWVyR1dvcmxkKHBsYXllcikpOwpAQCAtMzQsMTEgKzU1LDE2NSBAQCBQYXNzUmVmUHRyPEdT
dHJlYW1lckdXb3JsZD4gR1N0cmVhbWVyR1dvcmxkOjpjcmVhdGVHV29ybGQoTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cgogCiBHU3RyZWFtZXJHV29ybGQ6OkdTdHJlYW1lckdXb3JsZChNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIqIHBsYXllcikKICAgICA6IG1fcGxheWVyKHBsYXllcikKKyAgICAs
IG1fdmlkZW9XaW5kb3dJZCgwKQorICAgICwgbV9keW5hbWljUGFkTmFtZSgwKQogeworICAgIC8v
IFhPdmVybGF5IG1lc3NhZ2VzIG5lZWQgdG8gYmUgaGFuZGxlZCBzeW5jaHJvbm91c2x5LgorICAg
IEdzdEJ1cyogYnVzID0gZ3N0X3BpcGVsaW5lX2dldF9idXMoR1NUX1BJUEVMSU5FKG1fcGxheWVy
LT5waXBlbGluZSgpKSk7CisgICAgZ3N0X2J1c19zZXRfc3luY19oYW5kbGVyKGJ1cywgZ3N0X2J1
c19zeW5jX3NpZ25hbF9oYW5kbGVyLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KGJ1cywg
InN5bmMtbWVzc2FnZTo6ZWxlbWVudCIsIEdfQ0FMTEJBQ0soZ3N0R1dvcmxkU3luY01lc3NhZ2VD
YWxsYmFjayksIHRoaXMpOworICAgIGdzdF9vYmplY3RfdW5yZWYoYnVzKTsKIH0KIAogR1N0cmVh
bWVyR1dvcmxkOjp+R1N0cmVhbWVyR1dvcmxkKCkKIHsKKyAgICBleGl0RnVsbHNjcmVlbigpOwor
fQorCitndWxvbmcgR1N0cmVhbWVyR1dvcmxkOjplbnRlckZ1bGxzY3JlZW4oKQoreworICAgIGlm
IChtX2R5bmFtaWNQYWROYW1lKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICghbV92aWRl
b1dpbmRvd0lkKSB7CisjaWYgUExBVEZPUk0oR1RLKQorICAgICAgICBtX2Z1bGxzY3JlZW5XaW5k
b3cgPSBndGtfd2luZG93X25ldyhHVEtfV0lORE9XX1RPUExFVkVMKTsKKyAgICAgICAgZ3RrX3dp
ZGdldF9zZXRfZXZlbnRzKG1fZnVsbHNjcmVlbldpbmRvdywgR0RLX1BPSU5URVJfTU9USU9OX01B
U0sgfCBHREtfS0VZX1BSRVNTX01BU0sgfCBHREtfRk9DVVNfQ0hBTkdFX01BU0spOworCisgICAg
ICAgIG1fdmlkZW9XaW5kb3cgPSBndGtfZHJhd2luZ19hcmVhX25ldygpOworICAgICAgICBndGtf
d2lkZ2V0X3NldF9kb3VibGVfYnVmZmVyZWQobV92aWRlb1dpbmRvdywgRkFMU0UpOworICAgICAg
ICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKG1fZnVsbHNjcmVlbldpbmRvdyksIG1f
dmlkZW9XaW5kb3cpOworCisgICAgICAgIGd0a193aWRnZXRfc2hvd19hbGwobV9mdWxsc2NyZWVu
V2luZG93KTsKKyAgICAgICAgZ3RrX3dpZGdldF9yZWFsaXplKG1fZnVsbHNjcmVlbldpbmRvdyk7
CisgICAgICAgIGd0a193aWRnZXRfaGlkZV9hbGwobV9mdWxsc2NyZWVuV2luZG93KTsKKworI2lm
ZGVmIEdES19XSU5ET1dJTkdfWDExCisgICAgICAgIGdka190aHJlYWRzX2VudGVyKCk7CisgICAg
ICAgIGdka19kaXNwbGF5X3N5bmMoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQoKSk7CisgICAgICAg
IG1fdmlkZW9XaW5kb3dJZCA9IEdES19XSU5ET1dfWElEKGd0a193aWRnZXRfZ2V0X3dpbmRvdyht
X2Z1bGxzY3JlZW5XaW5kb3cpKTsKKyAgICAgICAgZ2RrX3RocmVhZHNfbGVhdmUoKTsKKyNlbmRp
ZgorI2VuZGlmCisgICAgfQorCisgICAgR3N0RWxlbWVudCogcGlwZWxpbmUgPSBtX3BsYXllci0+
cGlwZWxpbmUoKTsKKyAgICBHc3RFbGVtZW50KiBwbGF0Zm9ybVZpZGVvU2luayA9IGdzdF9lbGVt
ZW50X2ZhY3RvcnlfbWFrZSgiYXV0b3ZpZGVvc2luayIsICJwbGF0Zm9ybVZpZGVvU2luayIpOwor
ICAgIEdzdEVsZW1lbnQqIGNvbG9yc3BhY2UgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImZm
bXBlZ2NvbG9yc3BhY2UiLCAiY29sb3JzcGFjZSIpOworICAgIEdzdEVsZW1lbnQqIHF1ZXVlID0g
Z3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJxdWV1ZSIsICJxdWV1ZSIpOworICAgIEdzdEVsZW1l
bnQqIHZpZGVvU2NhbGUgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoInZpZGVvc2NhbGUiLCAi
dmlkZW9TY2FsZSIpOworCisgICAgLy8gR2V0IHZpZGVvIHNpbmsgYmluIGFuZCB0aGUgdGVlIGlu
c2lkZS4KKyAgICBHT3duUHRyPEdzdEVsZW1lbnQ+IHZpZGVvU2luazsKKyAgICBnX29iamVjdF9n
ZXQocGlwZWxpbmUsICJ2aWRlby1zaW5rIiwgJnZpZGVvU2luay5vdXRQdHIoKSwgTlVMTCk7Cisg
ICAgR3N0RWxlbWVudCogdGVlID0gZ3N0X2Jpbl9nZXRfYnlfbmFtZShHU1RfQklOKHZpZGVvU2lu
ay5nZXQoKSksICJ2aWRlb1RlZSIpOworCisgICAgLy8gQWRkIGFuZCBsaW5rIGEgcXVldWUsIGZm
bXBlZ2NvbG9yc3BhY2UgYW5kIHNpbmsgaW4gdGhlIGJpbi4KKyAgICBnc3RfYmluX2FkZF9tYW55
KEdTVF9CSU4odmlkZW9TaW5rLmdldCgpKSwgcGxhdGZvcm1WaWRlb1NpbmssIHZpZGVvU2NhbGUs
IGNvbG9yc3BhY2UsIHF1ZXVlLCBOVUxMKTsKKyAgICBnc3RfZWxlbWVudF9saW5rX21hbnkocXVl
dWUsIGNvbG9yc3BhY2UsIHZpZGVvU2NhbGUsIHBsYXRmb3JtVmlkZW9TaW5rLCBOVUxMKTsKKwor
ICAgIC8vIExpbmsgYSBuZXcgc3JjIHBhZCBmcm9tIHRlZSB0byBxdWV1ZS4KKyAgICBHc3RQYWQq
IHNyY1BhZCA9IGdzdF9lbGVtZW50X2dldF9yZXF1ZXN0X3BhZCh0ZWUsICJzcmMlZCIpOworICAg
IEdzdFBhZCogc2lua1BhZCA9IGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKHF1ZXVlLCAic2lu
ayIpOworICAgIGdzdF9wYWRfbGluayhzcmNQYWQsIHNpbmtQYWQpOworICAgIGdzdF9vYmplY3Rf
dW5yZWYoR1NUX09CSkVDVChzaW5rUGFkKSk7CisKKyAgICBtX2R5bmFtaWNQYWROYW1lID0gZ3N0
X3BhZF9nZXRfbmFtZShzcmNQYWQpOworCisgICAgLy8gUm9sbCBuZXcgZWxlbWVudHMgdG8gcGlw
ZWxpbmUgc3RhdGUuCisgICAgZ3N0X2VsZW1lbnRfc3luY19zdGF0ZV93aXRoX3BhcmVudChxdWV1
ZSk7CisgICAgZ3N0X2VsZW1lbnRfc3luY19zdGF0ZV93aXRoX3BhcmVudChjb2xvcnNwYWNlKTsK
KyAgICBnc3RfZWxlbWVudF9zeW5jX3N0YXRlX3dpdGhfcGFyZW50KHZpZGVvU2NhbGUpOworICAg
IGdzdF9lbGVtZW50X3N5bmNfc3RhdGVfd2l0aF9wYXJlbnQocGxhdGZvcm1WaWRlb1NpbmspOwor
CisgICAgZ3N0X29iamVjdF91bnJlZih0ZWUpOworCisgICAgLy8gUXVlcnkgdGhlIGN1cnJlbnQg
bWVkaWEgc2VnbWVudCBpbmZvcm1hdGlvbnMgYW5kIHNlbmQgdGhlbSB0b3dhcmRzCisgICAgLy8g
dGhlIG5ldyB0ZWUgYnJhbmNoIGRvd25zdHJlYW0uCisKKyAgICBHc3RRdWVyeSogcXVlcnkgPSBn
c3RfcXVlcnlfbmV3X3NlZ21lbnQoR1NUX0ZPUk1BVF9USU1FKTsKKyAgICBnYm9vbGVhbiBxdWVy
eVJlc3VsdCA9IGdzdF9lbGVtZW50X3F1ZXJ5KHBpcGVsaW5lLCBxdWVyeSk7CisKKyAgICAvLyBT
ZWUgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTYyMDQ5MC4KKyNp
ZiBHU1RfQ0hFQ0tfVkVSU0lPTigwLCAxMCwgMzApCisgICAgaWYgKCFxdWVyeVJlc3VsdCkgewor
ICAgICAgICBnc3RfcXVlcnlfdW5yZWYocXVlcnkpOworICAgICAgICBnc3Rfb2JqZWN0X3VucmVm
KEdTVF9PQkpFQ1Qoc3JjUGFkKSk7CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGd1
bG9uZz4obV9mdWxsc2NyZWVuV2luZG93KTsKKyAgICB9CisjZW5kaWYKKworICAgIEdzdEZvcm1h
dCBmb3JtYXQ7CisgICAgZ2ludDY0IHBvc2l0aW9uOworICAgIGlmICghZ3N0X2VsZW1lbnRfcXVl
cnlfcG9zaXRpb24ocGlwZWxpbmUsICZmb3JtYXQsICZwb3NpdGlvbikpCisgICAgICAgIHBvc2l0
aW9uID0gMDsKKworICAgIGdkb3VibGUgcmF0ZTsKKyAgICBnaW50NjQgc3RhcnRWYWx1ZSwgc3Rv
cFZhbHVlOworICAgIGdzdF9xdWVyeV9wYXJzZV9zZWdtZW50KHF1ZXJ5LCAmcmF0ZSwgJmZvcm1h
dCwgJnN0YXJ0VmFsdWUsICZzdG9wVmFsdWUpOworCisgICAgR3N0RXZlbnQqIGV2ZW50ID0gZ3N0
X2V2ZW50X25ld19uZXdfc2VnbWVudChGQUxTRSwgcmF0ZSwgZm9ybWF0LCBzdGFydFZhbHVlLCBz
dG9wVmFsdWUsIHBvc2l0aW9uKTsKKyAgICBnc3RfcGFkX3B1c2hfZXZlbnQoc3JjUGFkLCBldmVu
dCk7CisKKyAgICBnc3RfcXVlcnlfdW5yZWYocXVlcnkpOworICAgIGdzdF9vYmplY3RfdW5yZWYo
R1NUX09CSkVDVChzcmNQYWQpKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxndWxvbmc+
KG1fZnVsbHNjcmVlbldpbmRvdyk7Cit9CisKK3ZvaWQgR1N0cmVhbWVyR1dvcmxkOjpleGl0RnVs
bHNjcmVlbigpCit7CisgICAgaWYgKCFtX2R5bmFtaWNQYWROYW1lKQorICAgICAgICByZXR1cm47
CisKKyAgICBHc3RFbGVtZW50KiBwaXBlbGluZSA9IG1fcGxheWVyLT5waXBlbGluZSgpOworCisg
ICAgLy8gR2V0IHZpZGVvIHNpbmsgYmluIGFuZCB0aGUgZWxlbWVudHMgdG8gcmVtb3ZlLgorICAg
IEdPd25QdHI8R3N0RWxlbWVudD4gdmlkZW9TaW5rOworICAgIGdfb2JqZWN0X2dldChwaXBlbGlu
ZSwgInZpZGVvLXNpbmsiLCAmdmlkZW9TaW5rLm91dFB0cigpLCBOVUxMKTsKKyAgICBHc3RFbGVt
ZW50KiB0ZWUgPSBnc3RfYmluX2dldF9ieV9uYW1lKEdTVF9CSU4odmlkZW9TaW5rLmdldCgpKSwg
InZpZGVvVGVlIik7CisgICAgR3N0RWxlbWVudCogcGxhdGZvcm1WaWRlb1NpbmsgPSBnc3RfYmlu
X2dldF9ieV9uYW1lKEdTVF9CSU4odmlkZW9TaW5rLmdldCgpKSwgInBsYXRmb3JtVmlkZW9TaW5r
Iik7CisgICAgR3N0RWxlbWVudCogcXVldWUgPSBnc3RfYmluX2dldF9ieV9uYW1lKEdTVF9CSU4o
dmlkZW9TaW5rLmdldCgpKSwgInF1ZXVlIik7CisgICAgR3N0RWxlbWVudCogY29sb3JzcGFjZSA9
IGdzdF9iaW5fZ2V0X2J5X25hbWUoR1NUX0JJTih2aWRlb1NpbmsuZ2V0KCkpLCAiY29sb3JzcGFj
ZSIpOworICAgIEdzdEVsZW1lbnQqIHZpZGVvU2NhbGUgPSBnc3RfYmluX2dldF9ieV9uYW1lKEdT
VF9CSU4odmlkZW9TaW5rLmdldCgpKSwgInZpZGVvU2NhbGUiKTsKKworICAgIC8vIEdldCBwYWRz
IHRvIHVubGluayBhbmQgcmVtb3ZlLgorICAgIEdzdFBhZCogc3JjUGFkID0gZ3N0X2VsZW1lbnRf
Z2V0X3N0YXRpY19wYWQodGVlLCBtX2R5bmFtaWNQYWROYW1lKTsKKyAgICBHc3RQYWQqIHNpbmtQ
YWQgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChxdWV1ZSwgInNpbmsiKTsKKworICAgIC8v
IFVubGluayBhbmQgcmVsZWFzZSByZXF1ZXN0IHBhZC4KKyAgICBnc3RfcGFkX3VubGluayhzcmNQ
YWQsIHNpbmtQYWQpOworICAgIGdzdF9lbGVtZW50X3JlbGVhc2VfcmVxdWVzdF9wYWQodGVlLCBz
cmNQYWQpOworICAgIGdzdF9vYmplY3RfdW5yZWYoR1NUX09CSkVDVChzcmNQYWQpKTsKKyAgICBn
c3Rfb2JqZWN0X3VucmVmKEdTVF9PQkpFQ1Qoc2lua1BhZCkpOworCisgICAgLy8gVW5saW5rLCBy
ZW1vdmUgYW5kIGNsZWFudXAgcXVldWUsIGZmbXBlZ2NvbG9yc3BhY2UsIHZpZGVvU2NhbGUgYW5k
IHNpbmsuCisgICAgZ3N0X2VsZW1lbnRfdW5saW5rX21hbnkocXVldWUsIGNvbG9yc3BhY2UsIHZp
ZGVvU2NhbGUsIHBsYXRmb3JtVmlkZW9TaW5rLCBOVUxMKTsKKyAgICBnc3RfYmluX3JlbW92ZV9t
YW55KEdTVF9CSU4odmlkZW9TaW5rLmdldCgpKSwgcXVldWUsIGNvbG9yc3BhY2UsIHZpZGVvU2Nh
bGUsIHBsYXRmb3JtVmlkZW9TaW5rLCBOVUxMKTsKKyAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUo
cXVldWUsIEdTVF9TVEFURV9OVUxMKTsKKyAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUoY29sb3Jz
cGFjZSwgR1NUX1NUQVRFX05VTEwpOworICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZSh2aWRlb1Nj
YWxlLCBHU1RfU1RBVEVfTlVMTCk7CisgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKHBsYXRmb3Jt
VmlkZW9TaW5rLCBHU1RfU1RBVEVfTlVMTCk7CisgICAgZ3N0X29iamVjdF91bnJlZihxdWV1ZSk7
CisgICAgZ3N0X29iamVjdF91bnJlZihjb2xvcnNwYWNlKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVm
KHZpZGVvU2NhbGUpOworICAgIGdzdF9vYmplY3RfdW5yZWYocGxhdGZvcm1WaWRlb1NpbmspOwor
CisgICAgZ3N0X29iamVjdF91bnJlZih0ZWUpOworICAgIG1fZHluYW1pY1BhZE5hbWUgPSAwOwor
fQorCit2b2lkIEdTdHJlYW1lckdXb3JsZDo6c2V0V2luZG93T3ZlcmxheShHc3RNZXNzYWdlKiBt
ZXNzYWdlKQoreworICAgIEdzdE9iamVjdCogc2luayA9IEdTVF9NRVNTQUdFX1NSQyhtZXNzYWdl
KTsKKworICAgIGlmICghR1NUX0lTX1hfT1ZFUkxBWShzaW5rKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKGdfb2JqZWN0X2NsYXNzX2ZpbmRfcHJvcGVydHkoR19PQkpFQ1RfR0VUX0NMQVNT
KHNpbmspLCAiZm9yY2UtYXNwZWN0LXJhdGlvIikpCisgICAgICAgIGdfb2JqZWN0X3NldChzaW5r
LCAiZm9yY2UtYXNwZWN0LXJhdGlvIiwgVFJVRSwgTlVMTCk7CisKKyAgICBpZiAobV92aWRlb1dp
bmRvd0lkKQorICAgICAgICBnc3RfeF9vdmVybGF5X3NldF94d2luZG93X2lkKEdTVF9YX09WRVJM
QVkoc2luayksIG1fdmlkZW9XaW5kb3dJZCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5oIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmgKaW5kZXggYjYyNjI5
OC4uYTY2OGZlNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvR1N0cmVhbWVyR1dvcmxkLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmgKQEAgLTIzLDI1ICsyMyw0NyBAQAogCiAjaWYgRU5BQkxF
KFZJREVPKQogCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgiCiAjaW5j
bHVkZSAiUmVmQ291bnRlZC5oIgogI2luY2x1ZGUgIlJlZlB0ci5oIgogI2luY2x1ZGUgPGdsaWIu
aD4KIAordHlwZWRlZiBzdHJ1Y3QgX0dzdEVsZW1lbnQgR3N0RWxlbWVudDsKK3R5cGVkZWYgc3Ry
dWN0IF9Hc3RNZXNzYWdlIEdzdE1lc3NhZ2U7Cit0eXBlZGVmIHN0cnVjdCBfR3N0QnVzIEdzdEJ1
czsKK3R5cGVkZWYgc3RydWN0IF9Hc3RCaW4gR3N0QmluOwordHlwZWRlZiBzdHJ1Y3QgX0d0a1dp
ZGdldCBHdGtXaWRnZXQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOwogCitnYm9vbGVhbiBnc3RHV29ybGRTeW5jTWVzc2FnZUNhbGxi
YWNrKEdzdEJ1cyogYnVzLCBHc3RNZXNzYWdlKiBtZXNzYWdlLCBncG9pbnRlciBkYXRhKTsKIAog
Y2xhc3MgR1N0cmVhbWVyR1dvcmxkIDogcHVibGljIFJlZkNvdW50ZWQ8R1N0cmVhbWVyR1dvcmxk
PiB7CisgICAgZnJpZW5kIGdib29sZWFuIGdzdEdXb3JsZFN5bmNNZXNzYWdlQ2FsbGJhY2soR3N0
QnVzKiBidXMsIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIGdwb2ludGVyIGRhdGEpOwogCiBwdWJsaWM6
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8R1N0cmVhbWVyR1dvcmxkPiBjcmVhdGVHV29ybGQoTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKik7CiAgICAgfkdTdHJlYW1lckdXb3JsZCgpOwogCisg
ICAgR3N0RWxlbWVudCogcGlwZWxpbmUoKSBjb25zdCB7IHJldHVybiBtX3BsYXllci0+cGlwZWxp
bmUoKTsgfQorCisgICAgLy8gUmV0dXJucyB0aGUgZnVsbC1zY3JlZW4gd2luZG93IGNyZWF0ZWQK
KyAgICBndWxvbmcgZW50ZXJGdWxsc2NyZWVuKCk7CisgICAgdm9pZCBleGl0RnVsbHNjcmVlbigp
OworCisgICAgdm9pZCBzZXRXaW5kb3dPdmVybGF5KEdzdE1lc3NhZ2UqIG1lc3NhZ2UpOworCiBw
cml2YXRlOgogICAgIEdTdHJlYW1lckdXb3JsZChNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIq
KTsKICAgICBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqIG1fcGxheWVyOworI2lmIFBMQVRG
T1JNKEdUSykKKyAgICBHdGtXaWRnZXQqIG1fdmlkZW9XaW5kb3c7CisgICAgR3RrV2lkZ2V0KiBt
X2Z1bGxzY3JlZW5XaW5kb3c7CisjZW5kaWYKKyAgICBndWxvbmcgbV92aWRlb1dpbmRvd0lkOwor
ICAgIGdjaGFyKiBtX2R5bmFtaWNQYWROYW1lOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNzg2OWM0NS4uMDAwNzQ5YSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC01NCw3ICs1NCw2IEBACiAjaW5jbHVkZSA8R093
blB0ci5oPgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDxnc3QvaW50ZXJmYWNlcy9t
aXhlci5oPgotI2luY2x1ZGUgPGdzdC9pbnRlcmZhY2VzL3hvdmVybGF5Lmg+CiAjaW5jbHVkZSA8
Z3N0L3ZpZGVvL3ZpZGVvLmg+CiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPG1hdGguaD4K
ZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
aW5kZXggYTFjMWU1YS4uOWVhZTQxMSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NiBAQAorMjAxMC0wNy0xMCAg
UGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dTdHJlYW1lcl0gR1RLIFhPdmVybGF5
IHN1cHBvcnQgaW4gR1N0cmVhbWVyR1dvcmxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ3NAorCisgICAgICAgIE5ldyBGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyIG9iamVjdCwgcHJpdmF0ZSBpbiB0aGUgd2Vidmlldy4gSXQKKyAgICAgICAgaXMg
Y3JlYXRlZCB3aGVuIHRoZSB1c2VyIHByZXNzZXMgdGhlIGZ1bGxzY3JlZW4gYnV0dG9uIG9mIHRo
ZQorICAgICAgICB2aWRlbyBjb250cm9scy4gVmlkZW8gaXMgZGlzcGxheWVkIGluIGZ1bGxzY3Jl
ZW4sIGNvbnRyb2xzIGFyZQorICAgICAgICBkaXNwbGF5ZWQgd2hlbiB0aGUgdXNlciBtb3ZlcyB0
aGUgbW91c2UgYW5kIHdoZW4gdGhlIHZpZGVvIGlzCisgICAgICAgIHBhdXNlZC4gVGhlcmUncyBh
bHNvIGJhc2ljIGtleWJvYXJkIHNob3J0Y3V0cyBzdXBwb3J0OiBGL2YgdG8KKyAgICAgICAgbGVh
dmUgZnVsbHNjcmVlbiwgc3BhY2UgdG8gdG9nZ2xlIHBsYXkvcGF1c2UgYW5kIHVwL2Rvd24gdG8K
KyAgICAgICAgY29udHJvbCB2b2x1bWUuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnN1cHBvcnRz
RnVsbHNjcmVlbkZvck5vZGUpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OmVudGVy
RnVsbHNjcmVlbkZvck5vZGUpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OmV4aXRG
dWxsc2NyZWVuRm9yTm9kZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
R3RrLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ci5jcHA6IEFkZGVkLgorICAgICAgICAoaGlkZUh1ZENhbGxiYWNrKToKKyAgICAgICAgKG9uRnVs
bHNjcmVlbkd0a01vdGlvbk5vdGlmeUV2ZW50KToKKyAgICAgICAgKG9uRnVsbHNjcmVlbkd0a0Fj
dGl2ZU5vdGlmaWNhdGlvbik6CisgICAgICAgIChvbkZ1bGxzY3JlZW5HdGtDb25maWd1cmVFdmVu
dCk6CisgICAgICAgIChvbkZ1bGxzY3JlZW5HdGtEZXN0cm95KToKKyAgICAgICAgKHRvZ2dsZVBs
YXlQYXVzZUFjdGl2YXRlZCk6CisgICAgICAgIChleGl0RnVsbHNjcmVlbkFjdGl2YXRlZCk6Cisg
ICAgICAgIChwcm9ncmVzc0JhclVwZGF0ZUNhbGxiYWNrKToKKyAgICAgICAgKHRpbWVTY2FsZUJ1
dHRvblByZXNzZWQpOgorICAgICAgICAodGltZVNjYWxlQnV0dG9uUmVsZWFzZWQpOgorICAgICAg
ICAodGltZVNjYWxlVmFsdWVDaGFuZ2VkKToKKyAgICAgICAgKHZvbHVtZVZhbHVlQ2hhbmdlZCk6
CisgICAgICAgIChwbGF5ZXJWb2x1bWVDaGFuZ2VkQ2FsbGJhY2spOgorICAgICAgICAocGxheWVy
TXV0ZUNoYW5nZWRDYWxsYmFjayk6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
OjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXI6On5GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKToKKyAgICAgICAgKEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI6OnNldE1lZGlhRWxlbWVudCk6CisgICAgICAgIChGdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyOjpndGtDb25maWd1cmUpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcjo6c2hvd0h1ZCk6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
OjpoaWRlSHVkKToKKyAgICAgICAgKG9uRnVsbHNjcmVlbkd0a0tleVByZXNzRXZlbnQpOgorICAg
ICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAg
ICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnVwZGF0ZUh1ZFBvc2l0aW9uKToKKyAgICAg
ICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmV4aXRPblVzZXJSZXF1ZXN0KToKKyAgICAg
ICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAg
KEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmNhblBsYXkpOgorICAgICAgICAoRnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlcjo6cGxheSk6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyOjpwYXVzZSk6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpwbGF5U3Rh
dGVDaGFuZ2VkKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnRvZ2dsZVBs
YXkpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dm9sdW1lKToKKyAgICAg
ICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6Om11dGVkKToKKyAgICAgICAgKEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI6OnNldFZvbHVtZSk6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyOjp2b2x1bWVDaGFuZ2VkKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXI6Om11dGVDaGFuZ2VkKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6
OmN1cnJlbnRUaW1lKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnNldEN1
cnJlbnRUaW1lKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmR1cmF0aW9u
KToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnBlcmNlbnRMb2FkZWQpOgor
ICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6YmVnaW5TZWVrKToKKyAgICAgICAg
KEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmRvU2Vlayk6CisgICAgICAgIChGdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyOjplbmRTZWVrKToKKyAgICAgICAgKHRpbWVUb1N0cmluZyk6CisgICAg
ICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp1cGRhdGVIdWRQcm9ncmVzc0Jhcik6Cisg
ICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpjcmVhdGVIdWQpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaDogQWRkZWQuCisgICAg
ICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjptZWRpYUVsZW1lbnQpOgorICAgICAgICAq
IHdlYmtpdC93ZWJraXRwcml2YXRlLmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19lbnRl
cl9mdWxsc2NyZWVuKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19leGl0X2Z1bGxzY3JlZW4p
OgorICAgICAgICAqIHdlYmtpdC93ZWJraXRwcml2YXRlLmg6CisKIDIwMTAtMDctMTQgIFNhbSBX
ZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3Rr
LmNwcCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAppbmRl
eCA4ODQ0MGJhLi43NGM2YjNmIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudEd0ay5jcHAKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRHdGsuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRmxvYXRSZWN0Lmgi
CiAjaW5jbHVkZSAiRnJhbWVMb2FkUmVxdWVzdC5oIgogI2luY2x1ZGUgIkd0a1ZlcnNpb25pbmcu
aCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCkBAIC02MTYs
NCArNjE3LDI4IEBAIHZvaWQgQ2hyb21lQ2xpZW50OjpjYW5jZWxHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWUqIGZyCiAgICAgZ19zaWduYWxfZW1pdF9i
eV9uYW1lKHdlYlZpZXcsICJnZW9sb2NhdGlvbi1wb2xpY3ktZGVjaXNpb24tY2FuY2VsbGVkIiwg
d2ViRnJhbWUpOwogfQogCisjaWYgRU5BQkxFKFZJREVPKQorCitib29sIENocm9tZUNsaWVudDo6
c3VwcG9ydHNGdWxsc2NyZWVuRm9yTm9kZShjb25zdCBOb2RlKiBub2RlKQoreworICAgIHJldHVy
biBub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dmlkZW9UYWcpOworfQorCit2b2lkIENocm9t
ZUNsaWVudDo6ZW50ZXJGdWxsc2NyZWVuRm9yTm9kZShOb2RlKiBub2RlKQoreworICAgIFdlYkNv
cmU6OkZyYW1lKiBmcmFtZSA9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCk7CisgICAgV2ViS2l0
V2ViRnJhbWUqIHdlYkZyYW1lID0ga2l0KGZyYW1lKTsKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3ID0gZ2V0Vmlld0Zyb21GcmFtZSh3ZWJGcmFtZSk7CisgICAgd2Via2l0X3dlYl92aWV3X2Vu
dGVyX2Z1bGxzY3JlZW4od2ViVmlldywgbm9kZSk7Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50Ojpl
eGl0RnVsbHNjcmVlbkZvck5vZGUoTm9kZSogbm9kZSkKK3sKKyAgICBXZWJDb3JlOjpGcmFtZSog
ZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpOworICAgIFdlYktpdFdlYkZyYW1lKiB3
ZWJGcmFtZSA9IGtpdChmcmFtZSk7CisgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IGdldFZp
ZXdGcm9tRnJhbWUod2ViRnJhbWUpOworICAgIHdlYmtpdF93ZWJfdmlld19leGl0X2Z1bGxzY3Jl
ZW4od2ViVmlldyk7Cit9CisjZW5kaWYKKwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50R3RrLmgKaW5kZXggY2U1YzVhNy4uYTFlMjJlNyAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAorKysgYi9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCkBAIC0xMjIsNiArMTIyLDEyIEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEdlb2xvY2F0aW9u
UGVybWlzc2lvbkZvckZyYW1lKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6R2VvbG9jYXRpb24q
KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGNhbmNlbEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RGb3JGcmFtZShXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6Okdlb2xvY2F0aW9uKik7CiAKKyNp
ZiBFTkFCTEUoVklERU8pCisgICAgICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0Z1bGxzY3JlZW5G
b3JOb2RlKGNvbnN0IFdlYkNvcmU6Ok5vZGUqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVudGVy
RnVsbHNjcmVlbkZvck5vZGUoV2ViQ29yZTo6Tm9kZSopOworICAgICAgICB2aXJ0dWFsIHZvaWQg
ZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKFdlYkNvcmU6Ok5vZGUqKTsKKyNlbmRpZgorCiAgICAgcHJp
dmF0ZToKICAgICAgICAgV2ViS2l0V2ViVmlldyogbV93ZWJWaWV3OwogICAgICAgICBXZWJDb3Jl
OjpLVVJMIG1faG92ZXJlZExpbmtVUkw7CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwIGIvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4wNGU3Y2Q4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcApAQCAtMCwwICsxLDU4
MiBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTAorICoKKyAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
KiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU8pCisKKyNpbmNsdWRlICJGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyLmgiCisKKyNpbmNsdWRlICJHU3RyZWFtZXJHV29ybGQuaCIK
KyNpbmNsdWRlICJNZWRpYVBsYXllci5oIgorCisjaW5jbHVkZSA8Z2RrL2dkay5oPgorI2luY2x1
ZGUgPGdkay9nZGtrZXlzeW1zLmg+CisjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNs
dWRlIDxnc3QvZ3N0Lmg+CisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorCit1c2luZyBuYW1lc3BhY2Ug
c3RkOwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKKyNkZWZpbmUgSFVEX0FVVE9fSElERV9J
TlRFUlZBTCAzMDAwIC8vIDMgc2Vjb25kcworI2RlZmluZSBQUk9HUkVTU19CQVJfVVBEQVRFX0lO
VEVSVkFMIDE1MCAvLyAxNTBtcworI2RlZmluZSBWT0xVTUVfVVBfT0ZGU0VUIDAuMDUgLy8gNSUK
KyNkZWZpbmUgVk9MVU1FX0RPV05fT0ZGU0VUIDAuMDUgLy8gNSUKKworc3RhdGljIGdib29sZWFu
IGhpZGVIdWRDYWxsYmFjayhncG9pbnRlciBkYXRhKQoreworICAgIEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXIqIGNvbnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0PEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXIqPihkYXRhKTsKKyAgICBjb250cm9sbGVyLT5oaWRlSHVkKCk7CisgICAgcmV0dXJu
IEZBTFNFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gb25GdWxsc2NyZWVuR3RrTW90aW9uTm90aWZ5
RXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50TW90aW9uKiBldmVudCwgZ3BvaW50ZXIg
ZGF0YSkKK3sKKyAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBjb250cm9sbGVyID0gcmVp
bnRlcnByZXRfY2FzdDxGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKj4oZGF0YSk7CisgICAgY29u
dHJvbGxlci0+c2hvd0h1ZCh0cnVlKTsKKyAgICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIHZv
aWQgb25GdWxsc2NyZWVuR3RrQWN0aXZlTm90aWZpY2F0aW9uKEd0a1dpZGdldCogd2lkZ2V0LCBH
UGFyYW1TcGVjKiBwcm9wZXJ0eSwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyKiBjb250cm9sbGVyID0gcmVpbnRlcnByZXRfY2FzdDxGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyKj4oZGF0YSk7CisgICAgaWYgKCFndGtfd2luZG93X2lzX2FjdGl2ZShHVEtf
V0lORE9XKHdpZGdldCkpKQorICAgICAgICBjb250cm9sbGVyLT5oaWRlSHVkKCk7Cit9CisKK3N0
YXRpYyBnYm9vbGVhbiBvbkZ1bGxzY3JlZW5HdGtDb25maWd1cmVFdmVudChHdGtXaWRnZXQqIHdp
ZGdldCwgR2RrRXZlbnRDb25maWd1cmUqIGV2ZW50LCBncG9pbnRlciBkYXRhKQoreworICAgIEZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0PEZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqPihkYXRhKTsKKyAgICBjb250cm9sbGVyLT5ndGtDb25m
aWd1cmUoZXZlbnQpOworICAgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgdm9pZCBvbkZ1bGxz
Y3JlZW5HdGtEZXN0cm95KEd0a1dpZGdldCogd2lkZ2V0LCBncG9pbnRlciBkYXRhKQoreworICAg
IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0
PEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqPihkYXRhKTsKKyAgICBjb250cm9sbGVyLT5leGl0
RnVsbHNjcmVlbigpOworfQorCitzdGF0aWMgdm9pZCB0b2dnbGVQbGF5UGF1c2VBY3RpdmF0ZWQo
R3RrQWN0aW9uKiBhY3Rpb24sIGdwb2ludGVyIGRhdGEpCit7CisgICAgRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlciogY29udHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcio+KGRhdGEpOworICAgIGNvbnRyb2xsZXItPnRvZ2dsZVBsYXkoKTsKK30KKwor
c3RhdGljIHZvaWQgZXhpdEZ1bGxzY3JlZW5BY3RpdmF0ZWQoR3RrQWN0aW9uKiBhY3Rpb24sIGdw
b2ludGVyIGRhdGEpCit7CisgICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogY29udHJvbGxl
ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcio+KGRhdGEpOwor
ICAgIGNvbnRyb2xsZXItPmV4aXRPblVzZXJSZXF1ZXN0KCk7Cit9CisKK3N0YXRpYyBnYm9vbGVh
biBwcm9ncmVzc0JhclVwZGF0ZUNhbGxiYWNrKGdwb2ludGVyIGRhdGEpCit7CisgICAgRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlciogY29udHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlcio+KGRhdGEpOworICAgIHJldHVybiBjb250cm9sbGVyLT51cGRh
dGVIdWRQcm9ncmVzc0JhcigpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gdGltZVNjYWxlQnV0dG9u
UHJlc3NlZChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRCdXR0b24qIGV2ZW50LCBncG9pbnRl
ciBkYXRhKQoreworICAgIGlmIChldmVudC0+dHlwZSAhPSBHREtfQlVUVE9OX1BSRVNTKQorICAg
ICAgICByZXR1cm4gRkFMU0U7CisKKyAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBjb250
cm9sbGVyID0gcmVpbnRlcnByZXRfY2FzdDxGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKj4oZGF0
YSk7CisgICAgY29udHJvbGxlci0+YmVnaW5TZWVrKCk7CisgICAgcmV0dXJuIEZBTFNFOworfQor
CitzdGF0aWMgZ2Jvb2xlYW4gdGltZVNjYWxlQnV0dG9uUmVsZWFzZWQoR3RrV2lkZ2V0KiB3aWRn
ZXQsIEdka0V2ZW50QnV0dG9uKiBldmVudCwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyKiBjb250cm9sbGVyID0gcmVpbnRlcnByZXRfY2FzdDxGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyKj4oZGF0YSk7CisgICAgY29udHJvbGxlci0+ZW5kU2VlaygpOwor
ICAgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIHZvaWQgdGltZVNjYWxlVmFsdWVDaGFuZ2Vk
KEd0a1dpZGdldCogd2lkZ2V0LCBncG9pbnRlciBkYXRhKQoreworICAgIEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0PEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXIqPihkYXRhKTsKKyAgICBjb250cm9sbGVyLT5kb1NlZWsoKTsKK30KKworc3Rh
dGljIHZvaWQgdm9sdW1lVmFsdWVDaGFuZ2VkKEd0a1NjYWxlQnV0dG9uICpidXR0b24sIGdkb3Vi
bGUgdmFsdWUsIGdwb2ludGVyIGRhdGEpCit7CisgICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ciogY29udHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
cio+KGRhdGEpOworICAgIGNvbnRyb2xsZXItPnNldFZvbHVtZShzdGF0aWNfY2FzdDxmbG9hdD4o
dmFsdWUpKTsKK30KKwordm9pZCBwbGF5ZXJWb2x1bWVDaGFuZ2VkQ2FsbGJhY2soR09iamVjdCAq
ZWxlbWVudCwgR1BhcmFtU3BlYyAqcHNwZWMsIGdwb2ludGVyIGRhdGEpCit7CisgICAgRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlciogY29udHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlcio+KGRhdGEpOworICAgIGNvbnRyb2xsZXItPnZvbHVtZUNoYW5n
ZWQoKTsKK30KKwordm9pZCBwbGF5ZXJNdXRlQ2hhbmdlZENhbGxiYWNrKEdPYmplY3QgKmVsZW1l
bnQsIEdQYXJhbVNwZWMgKnBzcGVjLCBncG9pbnRlciBkYXRhKQoreworICAgIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0PEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXIqPihkYXRhKTsKKyAgICBjb250cm9sbGVyLT5tdXRlQ2hhbmdlZCgpOwor
fQorCitGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
KCkKKyAgICA6IG1faHVkVGltZW91dElkKDApCisgICAgLCBtX3Byb2dyZXNzQmFyVXBkYXRlSWQo
MCkKKyAgICAsIG1fc2Vla0xvY2soZmFsc2UpCisgICAgLCBtX3dpbmRvdygwKQorICAgICwgbV9o
dWRXaW5kb3coMCkKK3sKK30KKworRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6fkZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXIoKQoreworICAgIGV4aXRGdWxsc2NyZWVuKCk7Cit9CisKK3ZvaWQg
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6c2V0TWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1l
bnQqIG1lZGlhRWxlbWVudCkKK3sKKyAgICBpZiAobWVkaWFFbGVtZW50ID09IG1fbWVkaWFFbGVt
ZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX21lZGlhRWxlbWVudCA9IG1lZGlhRWxlbWVu
dDsKKyAgICBpZiAoIW1fbWVkaWFFbGVtZW50KSB7CisgICAgICAgIC8vIENhbid0IGRvIGZ1bGwt
c2NyZWVuLCBqdXN0IGdldCBvdXQKKyAgICAgICAgZXhpdEZ1bGxzY3JlZW4oKTsKKyAgICB9Cit9
CisKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6Z3RrQ29uZmlndXJlKEdka0V2ZW50
Q29uZmlndXJlKiBldmVudCkKK3sKKyAgICB1cGRhdGVIdWRQb3NpdGlvbigpOworfQorCit2b2lk
IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnNob3dIdWQoYm9vbCBhdXRvSGlkZSkKK3sKKyAg
ICBpZiAoIW1faHVkV2luZG93KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWd0a193aW5k
b3dfaXNfYWN0aXZlKEdUS19XSU5ET1cobV93aW5kb3cpKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKG1faHVkVGltZW91dElkKSB7CisgICAgICAgIGdfc291cmNlX3JlbW92ZShtX2h1ZFRp
bWVvdXRJZCk7CisgICAgICAgIG1faHVkVGltZW91dElkID0gMDsKKyAgICB9CisKKyAgICAvLyBT
aG93IHRoZSBjdXJzb3IuCisgICAgR2RrV2luZG93KiB3aW5kb3cgPSBndGtfd2lkZ2V0X2dldF93
aW5kb3cobV93aW5kb3cpOworICAgIGdka193aW5kb3dfc2V0X2N1cnNvcih3aW5kb3csIG1fY3Vy
c29yKTsKKworICAgIC8vIFVwZGF0ZSB0aGUgcHJvZ3Jlc3MgYmFyIGltbWVkaWF0ZWx5IGJlZm9y
ZSBzaG93aW5nIHRoZSB3aW5kb3cuCisgICAgdXBkYXRlSHVkUHJvZ3Jlc3NCYXIoKTsKKyAgICBn
dGtfd2lkZ2V0X3Nob3dfYWxsKG1faHVkV2luZG93KTsKKyAgICB1cGRhdGVIdWRQb3NpdGlvbigp
OworCisgICAgLy8gU3RhcnQgcGVyaW9kaWMgdXBkYXRlcyBvZiB0aGUgcHJvZ3Jlc3MgYmFyLgor
ICAgIGlmICghbV9wcm9ncmVzc0JhclVwZGF0ZUlkKQorICAgICAgICBtX3Byb2dyZXNzQmFyVXBk
YXRlSWQgPSBnX3RpbWVvdXRfYWRkKFBST0dSRVNTX0JBUl9VUERBVEVfSU5URVJWQUwsIHByb2dy
ZXNzQmFyVXBkYXRlQ2FsbGJhY2ssIHRoaXMpOworCisgICAgLy8gSGlkZSB0aGUgaHVkIGluIGZl
dyBzZWNvbmRzLCBpZiByZXF1ZXN0ZWQuCisgICAgaWYgKGF1dG9IaWRlKQorICAgICAgICBtX2h1
ZFRpbWVvdXRJZCA9IGdfdGltZW91dF9hZGQoSFVEX0FVVE9fSElERV9JTlRFUlZBTCwgaGlkZUh1
ZENhbGxiYWNrLCB0aGlzKTsKK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpo
aWRlSHVkKCkKK3sKKyAgICBpZiAobV9odWRUaW1lb3V0SWQpIHsKKyAgICAgICAgZ19zb3VyY2Vf
cmVtb3ZlKG1faHVkVGltZW91dElkKTsKKyAgICAgICAgbV9odWRUaW1lb3V0SWQgPSAwOworICAg
IH0KKworICAgIGlmICghbV9odWRXaW5kb3cpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEtl
ZXAgdGhlIGh1ZCB2aXNpYmxlIGlmIGEgc2VlayBpcyBpbiBwcm9ncmVzcyBvciBpZiB0aGUgdm9s
dW1lCisgICAgLy8gcG9wdXAgaXMgdmlzaWJsZS4KKyAgICBHdGtXaWRnZXQqIHZvbHVtZVBvcHVw
ID0gZ3RrX3NjYWxlX2J1dHRvbl9nZXRfcG9wdXAoR1RLX1NDQUxFX0JVVFRPTihtX3ZvbHVtZUJ1
dHRvbikpOworICAgIGlmIChtX3NlZWtMb2NrIHx8IGd0a193aWRnZXRfZ2V0X3Zpc2libGUodm9s
dW1lUG9wdXApKSB7CisgICAgICAgIHNob3dIdWQodHJ1ZSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBHZGtXaW5kb3cqIHdpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyhtX3dp
bmRvdyk7CisgICAgR2RrQ3Vyc29yKiBjdXJzb3IgPSBnZGtfY3Vyc29yX25ldyhHREtfQkxBTktf
Q1VSU09SKTsKKyAgICBnZGtfd2luZG93X3NldF9jdXJzb3Iod2luZG93LCBjdXJzb3IpOworCisg
ICAgZ3RrX3dpZGdldF9oaWRlX2FsbChtX2h1ZFdpbmRvdyk7CisKKyAgICBpZiAobV9wcm9ncmVz
c0JhclVwZGF0ZUlkKSB7CisgICAgICAgIGdfc291cmNlX3JlbW92ZShtX3Byb2dyZXNzQmFyVXBk
YXRlSWQpOworICAgICAgICBtX3Byb2dyZXNzQmFyVXBkYXRlSWQgPSAwOworICAgIH0KK30KKwor
c3RhdGljIGdib29sZWFuIG9uRnVsbHNjcmVlbkd0a0tleVByZXNzRXZlbnQoR3RrV2lkZ2V0KiB3
aWRnZXQsIEdka0V2ZW50S2V5KiBldmVudCwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyKiBjb250cm9sbGVyID0gcmVpbnRlcnByZXRfY2FzdDxGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyKj4oZGF0YSk7CisKKyAgICBzd2l0Y2ggKGV2ZW50LT5rZXl2YWwp
IHsKKyAgICBjYXNlIEdES19Fc2NhcGU6CisgICAgY2FzZSAnZic6CisgICAgY2FzZSAnRic6Cisg
ICAgICAgIGNvbnRyb2xsZXItPmV4aXRPblVzZXJSZXF1ZXN0KCk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgR0RLX3NwYWNlOgorICAgIGNhc2UgR0RLX1JldHVybjoKKyAgICAgICAgY29udHJv
bGxlci0+dG9nZ2xlUGxheSgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdES19VcDoKKyAg
ICAgICAgLy8gdm9sdW1lIHVwCisgICAgICAgIGNvbnRyb2xsZXItPnNldFZvbHVtZShjb250cm9s
bGVyLT52b2x1bWUoKSArIFZPTFVNRV9VUF9PRkZTRVQpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEdES19Eb3duOgorICAgICAgICAvLyB2b2x1bWUgZG93bgorICAgICAgICBjb250cm9sbGVy
LT5zZXRWb2x1bWUoY29udHJvbGxlci0+dm9sdW1lKCkgLSBWT0xVTUVfRE9XTl9PRkZTRVQpOwor
ICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICByZXR1cm4gVFJVRTsKK30KKworCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmVu
dGVyRnVsbHNjcmVlbigpCit7CisgICAgaWYgKCFtX21lZGlhRWxlbWVudCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKG1fbWVkaWFFbGVtZW50LT5wbGF0Zm9ybU1lZGlhKCkudHlwZSAhPSBX
ZWJDb3JlOjpQbGF0Zm9ybU1lZGlhOjpHU3RyZWFtZXJHV29ybGRUeXBlKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX3dpbmRvdyA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3RrV2lkZ2V0Kj4obV9tZWRp
YUVsZW1lbnQtPnBsYXRmb3JtTWVkaWEoKS5tZWRpYS5nc3RyZWFtZXJHV29ybGQtPmVudGVyRnVs
bHNjcmVlbigpKTsKKworICAgIEdzdEVsZW1lbnQqIHBpcGVsaW5lID0gbV9tZWRpYUVsZW1lbnQt
PnBsYXRmb3JtTWVkaWEoKS5tZWRpYS5nc3RyZWFtZXJHV29ybGQtPnBpcGVsaW5lKCk7CisgICAg
Z19zaWduYWxfY29ubmVjdChwaXBlbGluZSwgIm5vdGlmeTo6dm9sdW1lIiwgR19DQUxMQkFDSyhw
bGF5ZXJWb2x1bWVDaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0
KHBpcGVsaW5lLCAibm90aWZ5OjptdXRlIiwgR19DQUxMQkFDSyhwbGF5ZXJNdXRlQ2hhbmdlZENh
bGxiYWNrKSwgdGhpcyk7CisKKyAgICBpZiAoIW1faHVkV2luZG93KQorICAgICAgICBjcmVhdGVI
dWQoKTsKKworICAgIC8vIEVuc3VyZSBibGFjayBiYWNrZ3JvdW5kLgorICAgIEdka0NvbG9yIGNv
bG9yOworICAgIGdka19jb2xvcl9wYXJzZSgiYmxhY2siLCAmY29sb3IpOworICAgIGd0a193aWRn
ZXRfbW9kaWZ5X2JnKG1fd2luZG93LCBHVEtfU1RBVEVfTk9STUFMLCAmY29sb3IpOworICAgIGd0
a193aWRnZXRfc2V0X2RvdWJsZV9idWZmZXJlZChtX3dpbmRvdywgRkFMU0UpOworCisgICAgZ19z
aWduYWxfY29ubmVjdChtX3dpbmRvdywgImtleS1wcmVzcy1ldmVudCIsIEdfQ0FMTEJBQ0sob25G
dWxsc2NyZWVuR3RrS2V5UHJlc3NFdmVudCksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
bV93aW5kb3csICJkZXN0cm95IiwgR19DQUxMQkFDSyhvbkZ1bGxzY3JlZW5HdGtEZXN0cm95KSwg
dGhpcyk7CisgICAgZ19zaWduYWxfY29ubmVjdChtX3dpbmRvdywgIm5vdGlmeTo6aXMtYWN0aXZl
IiwgR19DQUxMQkFDSyhvbkZ1bGxzY3JlZW5HdGtBY3RpdmVOb3RpZmljYXRpb24pLCB0aGlzKTsK
KworCisgICAgZ3RrX3dpZGdldF9zaG93X2FsbChtX3dpbmRvdyk7CisgICAgZ3RrX3dpZGdldF9y
ZWFsaXplKG1fd2luZG93KTsKKworICAgIEdka1dpbmRvdyogd2luZG93ID0gZ3RrX3dpZGdldF9n
ZXRfd2luZG93KG1fd2luZG93KTsKKyAgICBHZGtDdXJzb3IqIGN1cnNvciA9IGdka19jdXJzb3Jf
bmV3KEdES19CTEFOS19DVVJTT1IpOworICAgIG1fY3Vyc29yID0gZ2RrX3dpbmRvd19nZXRfY3Vy
c29yKHdpbmRvdyk7CisgICAgZ2RrX3dpbmRvd19zZXRfY3Vyc29yKHdpbmRvdywgY3Vyc29yKTsK
KyAgICBnZGtfY3Vyc29yX3VucmVmKGN1cnNvcik7CisKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1f
d2luZG93LCAibW90aW9uLW5vdGlmeS1ldmVudCIsIEdfQ0FMTEJBQ0sob25GdWxsc2NyZWVuR3Rr
TW90aW9uTm90aWZ5RXZlbnQpLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2luZG93
LCAiY29uZmlndXJlLWV2ZW50IiwgR19DQUxMQkFDSyhvbkZ1bGxzY3JlZW5HdGtDb25maWd1cmVF
dmVudCksIHRoaXMpOworCisgICAgZ3RrX3dpbmRvd19mdWxsc2NyZWVuKEdUS19XSU5ET1cobV93
aW5kb3cpKTsKKyAgICBndGtfd2lkZ2V0X3Nob3dfYWxsKG1faHVkV2luZG93KTsKKyAgICBzaG93
SHVkKHRydWUpOworfQorCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnVwZGF0ZUh1
ZFBvc2l0aW9uKCkKK3sKKyAgICBpZiAoIW1faHVkV2luZG93KQorICAgICAgICByZXR1cm47CisK
KyAgICAvLyBHZXQgdGhlIHNjcmVlbiByZWN0YW5nbGUuCisgICAgR2RrU2NyZWVuKiBzY3JlZW4g
PSBndGtfd2luZG93X2dldF9zY3JlZW4oR1RLX1dJTkRPVyhtX3dpbmRvdykpOworICAgIEdka1dp
bmRvdyogd2luZG93ID0gZ3RrX3dpZGdldF9nZXRfd2luZG93KG1fd2luZG93KTsKKyAgICBHZGtS
ZWN0YW5nbGUgZnVsbHNjcmVlblJlY3RhbmdsZTsKKyAgICBnZGtfc2NyZWVuX2dldF9tb25pdG9y
X2dlb21ldHJ5KHNjcmVlbiwgZ2RrX3NjcmVlbl9nZXRfbW9uaXRvcl9hdF93aW5kb3coc2NyZWVu
LCB3aW5kb3cpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZ1bGxzY3Jl
ZW5SZWN0YW5nbGUpOworCisgICAgLy8gR2V0IHRoZSBwb3B1cCB3aW5kb3cgc2l6ZS4KKyAgICBp
bnQgaHVkV2lkdGgsIGh1ZEhlaWdodDsKKyAgICBndGtfd2luZG93X2dldF9zaXplKEdUS19XSU5E
T1cobV9odWRXaW5kb3cpLCAmaHVkV2lkdGgsICZodWRIZWlnaHQpOworCisgICAgLy8gU2NhbGUg
dGhlIGh1ZCB0byB0aGUgZnVsbCB3aWR0aCBvZiB0aGUgc2NyZWVuLgorICAgIGd0a193aW5kb3df
cmVzaXplKEdUS19XSU5ET1cobV9odWRXaW5kb3cpLCBmdWxsc2NyZWVuUmVjdGFuZ2xlLndpZHRo
LCBodWRIZWlnaHQpOworCisgICAgLy8gTW92ZSB0aGUgaHVkIHRvIHRoZSBib3R0b20gb2YgdGhl
IHNjcmVlbi4KKyAgICBndGtfd2luZG93X21vdmUoR1RLX1dJTkRPVyhtX2h1ZFdpbmRvdyksIGZ1
bGxzY3JlZW5SZWN0YW5nbGUueCwKKyAgICAgICAgICAgICAgICAgICAgZnVsbHNjcmVlblJlY3Rh
bmdsZS5oZWlnaHQgKyBmdWxsc2NyZWVuUmVjdGFuZ2xlLnkgLSBodWRIZWlnaHQpOworfQorCit2
b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmV4aXRPblVzZXJSZXF1ZXN0KCkKK3sKKyAg
ICBtX21lZGlhRWxlbWVudC0+ZXhpdEZ1bGxzY3JlZW4oKTsKK30KKwordm9pZCBGdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyOjpleGl0RnVsbHNjcmVlbigpCit7CisgICAgaWYgKCFtX2h1ZFdpbmRv
dykKKyAgICAgICAgcmV0dXJuOworCisgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9i
eV9mdW5jKG1fd2luZG93LCByZWludGVycHJldF9jYXN0PHZvaWQqPihvbkZ1bGxzY3JlZW5HdGtL
ZXlQcmVzc0V2ZW50KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odGhpcykpOworICAgIGdfc2ln
bmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhtX3dpbmRvdywgcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4ob25GdWxsc2NyZWVuR3RrRGVzdHJveSksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KHRoaXMpKTsKKyAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMobV93aW5k
b3csIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9uRnVsbHNjcmVlbkd0a01vdGlvbk5vdGlmeUV2
ZW50KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odGhpcykpOworICAgIGdfc2lnbmFsX2hhbmRs
ZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhtX3dpbmRvdywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
b25GdWxsc2NyZWVuR3RrQ29uZmlndXJlRXZlbnQpLCByZWludGVycHJldF9jYXN0PHZvaWQqPih0
aGlzKSk7CisKKyAgICBHc3RFbGVtZW50KiBwaXBlbGluZSA9IG1fbWVkaWFFbGVtZW50LT5wbGF0
Zm9ybU1lZGlhKCkubWVkaWEuZ3N0cmVhbWVyR1dvcmxkLT5waXBlbGluZSgpOworICAgIGdfc2ln
bmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhwaXBlbGluZSwgcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4ocGxheWVyVm9sdW1lQ2hhbmdlZENhbGxiYWNrKSwgcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4odGhpcykpOworICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhw
aXBlbGluZSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocGxheWVyTXV0ZUNoYW5nZWRDYWxsYmFj
ayksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHRoaXMpKTsKKworICAgIGlmIChtX2h1ZFRpbWVv
dXRJZCkgeworICAgICAgICBnX3NvdXJjZV9yZW1vdmUobV9odWRUaW1lb3V0SWQpOworICAgICAg
ICBtX2h1ZFRpbWVvdXRJZCA9IDA7CisgICAgfQorCisgICAgaWYgKG1fcHJvZ3Jlc3NCYXJVcGRh
dGVJZCkgeworICAgICAgICBnX3NvdXJjZV9yZW1vdmUobV9wcm9ncmVzc0JhclVwZGF0ZUlkKTsK
KyAgICAgICAgbV9wcm9ncmVzc0JhclVwZGF0ZUlkID0gMDsKKyAgICB9CisKKyAgICBpZiAobV9t
ZWRpYUVsZW1lbnQtPnBsYXRmb3JtTWVkaWEoKS50eXBlID09IFdlYkNvcmU6OlBsYXRmb3JtTWVk
aWE6OkdTdHJlYW1lckdXb3JsZFR5cGUpCisgICAgICAgIG1fbWVkaWFFbGVtZW50LT5wbGF0Zm9y
bU1lZGlhKCkubWVkaWEuZ3N0cmVhbWVyR1dvcmxkLT5leGl0RnVsbHNjcmVlbigpOworCisgICAg
Z3RrX3dpZGdldF9oaWRlX2FsbChtX3dpbmRvdyk7CisKKyAgICBndGtfd2lkZ2V0X2Rlc3Ryb3ko
bV9odWRXaW5kb3cpOworICAgIG1faHVkV2luZG93ID0gMDsKK30KKworYm9vbCBGdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyOjpjYW5QbGF5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZWRpYUVs
ZW1lbnQgJiYgbV9tZWRpYUVsZW1lbnQtPmNhblBsYXkoKTsKK30KKwordm9pZCBGdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyOjpwbGF5KCkKK3sKKyAgICBpZiAobV9tZWRpYUVsZW1lbnQpCisgICAg
ICAgIG1fbWVkaWFFbGVtZW50LT5wbGF5KG1fbWVkaWFFbGVtZW50LT5wcm9jZXNzaW5nVXNlckdl
c3R1cmUoKSk7CisKKyAgICBwbGF5U3RhdGVDaGFuZ2VkKCk7CisgICAgc2hvd0h1ZCh0cnVlKTsK
K30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpwYXVzZSgpCit7CisgICAgaWYg
KG1fbWVkaWFFbGVtZW50KQorICAgICAgICBtX21lZGlhRWxlbWVudC0+cGF1c2UobV9tZWRpYUVs
ZW1lbnQtPnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKTsKKworICAgIHBsYXlTdGF0ZUNoYW5nZWQo
KTsKKyAgICBzaG93SHVkKGZhbHNlKTsKK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyOjpwbGF5U3RhdGVDaGFuZ2VkKCkKK3sKKyAgICBpZiAoY2FuUGxheSgpKQorICAgICAgICBn
X29iamVjdF9zZXQobV9wbGF5UGF1c2VBY3Rpb24sICJ0b29sdGlwIiwgXygiUGxheSIpLCAiaWNv
bi1uYW1lIiwgIm1lZGlhLXBsYXliYWNrLXN0YXJ0LXN5bWJvbGljIiwgTlVMTCk7CisgICAgZWxz
ZQorICAgICAgICBnX29iamVjdF9zZXQobV9wbGF5UGF1c2VBY3Rpb24sICJ0b29sdGlwIiwgXygi
UGF1c2UiKSwgImljb24tbmFtZSIsICJtZWRpYS1wbGF5YmFjay1wYXVzZS1zeW1ib2xpYyIsIE5V
TEwpOworfQorCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnRvZ2dsZVBsYXkoKQor
eworICAgIGlmIChjYW5QbGF5KCkpCisgICAgICAgIHBsYXkoKTsKKyAgICBlbHNlCisgICAgICAg
IHBhdXNlKCk7Cit9CisKK2Zsb2F0IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnZvbHVtZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50ID8gbV9tZWRpYUVsZW1lbnQtPnZv
bHVtZSgpIDogMDsKK30KKworYm9vbCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjptdXRlZCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50ID8gbV9tZWRpYUVsZW1lbnQtPm11
dGVkKCkgOiBmYWxzZTsKK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpzZXRW
b2x1bWUoZmxvYXQgdm9sdW1lKQoreworICAgIGlmICh2b2x1bWUgPCAwLjAgfHwgdm9sdW1lID4g
MS4wKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9tZWRpYUVsZW1lbnQpIHsKKyAgICAg
ICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICAgICAgbV9tZWRpYUVsZW1lbnQtPnNldFZvbHVtZSh2
b2x1bWUsIGVjKTsKKyAgICB9Cit9CisKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6
dm9sdW1lQ2hhbmdlZCgpCit7CisgICAgZ19zaWduYWxfaGFuZGxlcl9ibG9jayhtX3ZvbHVtZUJ1
dHRvbiwgbV92b2x1bWVVcGRhdGVJZCk7CisgICAgZ3RrX3NjYWxlX2J1dHRvbl9zZXRfdmFsdWUo
R1RLX1NDQUxFX0JVVFRPTihtX3ZvbHVtZUJ1dHRvbiksIHZvbHVtZSgpKTsKKyAgICBnX3NpZ25h
bF9oYW5kbGVyX3VuYmxvY2sobV92b2x1bWVCdXR0b24sIG1fdm9sdW1lVXBkYXRlSWQpOworfQor
Cit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6Om11dGVDaGFuZ2VkKCkKK3sKKyAgICBn
X3NpZ25hbF9oYW5kbGVyX2Jsb2NrKG1fdm9sdW1lQnV0dG9uLCBtX3ZvbHVtZVVwZGF0ZUlkKTsK
KyAgICBndGtfc2NhbGVfYnV0dG9uX3NldF92YWx1ZShHVEtfU0NBTEVfQlVUVE9OKG1fdm9sdW1l
QnV0dG9uKSwgbXV0ZWQoKSA/IDAgOiB2b2x1bWUoKSk7CisgICAgZ19zaWduYWxfaGFuZGxlcl91
bmJsb2NrKG1fdm9sdW1lQnV0dG9uLCBtX3ZvbHVtZVVwZGF0ZUlkKTsKK30KKworZmxvYXQgRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlcjo6Y3VycmVudFRpbWUoKSBjb25zdAoreworICAgIHJldHVy
biBtX21lZGlhRWxlbWVudCA/IG1fbWVkaWFFbGVtZW50LT5jdXJyZW50VGltZSgpIDogMDsKK30K
Kwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpzZXRDdXJyZW50VGltZShmbG9hdCB2
YWx1ZSkKK3sKKyAgICBpZiAobV9tZWRpYUVsZW1lbnQpIHsKKyAgICAgICAgRXhjZXB0aW9uQ29k
ZSBlYzsKKyAgICAgICAgbV9tZWRpYUVsZW1lbnQtPnNldEN1cnJlbnRUaW1lKHZhbHVlLCBlYyk7
CisgICAgfQorfQorCitmbG9hdCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpkdXJhdGlvbigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50ID8gbV9tZWRpYUVsZW1lbnQtPmR1
cmF0aW9uKCkgOiAwOworfQorCitmbG9hdCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpwZXJj
ZW50TG9hZGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnQgPyBtX21lZGlh
RWxlbWVudC0+cGVyY2VudExvYWRlZCgpIDogMDsKK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyOjpiZWdpblNlZWsoKQoreworICAgIG1fc2Vla0xvY2sgPSB0cnVlOworCisgICAg
aWYgKG1fbWVkaWFFbGVtZW50KQorICAgICAgICBtX21lZGlhRWxlbWVudC0+YmVnaW5TY3J1YmJp
bmcoKTsKK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpkb1NlZWsoKQorewor
ICAgIGlmICghbV9zZWVrTG9jaykKKyAgICAgICAgIHJldHVybjsKKworICAgIHNldEN1cnJlbnRU
aW1lKGd0a19yYW5nZV9nZXRfdmFsdWUoR1RLX1JBTkdFKG1fdGltZUhTY2FsZSkpKmR1cmF0aW9u
KCkgLyAxMDApOworfQorCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmVuZFNlZWso
KQoreworICAgIGlmIChtX21lZGlhRWxlbWVudCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnQtPmVu
ZFNjcnViYmluZygpOworCisgICAgbV9zZWVrTG9jayA9IGZhbHNlOworfQorCitzdGF0aWMgU3Ry
aW5nIHRpbWVUb1N0cmluZyhmbG9hdCB0aW1lKQoreworICAgIGlmICghaXNmaW5pdGUodGltZSkp
CisgICAgICAgIHRpbWUgPSAwOworICAgIGludCBzZWNvbmRzID0gZmFic2YodGltZSk7CisgICAg
aW50IGhvdXJzID0gc2Vjb25kcyAvICg2MCAqIDYwKTsKKyAgICBpbnQgbWludXRlcyA9IChzZWNv
bmRzIC8gNjApICUgNjA7CisgICAgc2Vjb25kcyAlPSA2MDsKKworICAgIGlmIChob3Vycykgewor
ICAgICAgICBpZiAoaG91cnMgPiA5KQorICAgICAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0
KCIlcyUwMmQ6JTAyZDolMDJkIiwgKHRpbWUgPCAwID8gIi0iIDogIiIpLCBob3VycywgbWludXRl
cywgc2Vjb25kcyk7CisgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJXMlMDFkOiUwMmQ6
JTAyZCIsICh0aW1lIDwgMCA/ICItIiA6ICIiKSwgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpOwor
ICAgIH0KKworICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJXMlMDJkOiUwMmQiLCAodGltZSA8
IDAgPyAiLSIgOiAiIiksIG1pbnV0ZXMsIHNlY29uZHMpOworfQorCitnYm9vbGVhbiBGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyOjp1cGRhdGVIdWRQcm9ncmVzc0JhcigpCit7CisgICAgZmxvYXQg
bWVkaWFEdXJhdGlvbihkdXJhdGlvbigpKTsKKyAgICBmbG9hdCBtZWRpYVBvc2l0aW9uKGN1cnJl
bnRUaW1lKCkpOworCisgICAgaWYgKCFtX3NlZWtMb2NrKSB7CisgICAgICAgIGdkb3VibGUgdmFs
dWUgPSAwLjA7CisKKyAgICAgICAgaWYgKG1lZGlhUG9zaXRpb24gJiYgbWVkaWFEdXJhdGlvbikK
KyAgICAgICAgICAgIHZhbHVlID0gKG1lZGlhUG9zaXRpb24gKiAxMDAuMCkgLyBtZWRpYUR1cmF0
aW9uOworCisgICAgICAgIEd0a0FkanVzdG1lbnQqIGFkanVzdG1lbnQgPSBndGtfcmFuZ2VfZ2V0
X2FkanVzdG1lbnQoR1RLX1JBTkdFKG1fdGltZUhTY2FsZSkpOworICAgICAgICBndGtfYWRqdXN0
bWVudF9zZXRfdmFsdWUoYWRqdXN0bWVudCwgdmFsdWUpOworICAgIH0KKworICAgIGd0a19yYW5n
ZV9zZXRfZmlsbF9sZXZlbChHVEtfUkFOR0UobV90aW1lSFNjYWxlKSwgcGVyY2VudExvYWRlZCgp
KiAxMDApOworCisgICAgZ2NoYXIqIGxhYmVsID0gZ19zdHJkdXBfcHJpbnRmKCIlcyAvICVzIiwg
dGltZVRvU3RyaW5nKG1lZGlhUG9zaXRpb24pLnV0ZjgoKS5kYXRhKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRpbWVUb1N0cmluZyhtZWRpYUR1cmF0aW9uKS51dGY4KCku
ZGF0YSgpKTsKKyAgICBndGtfbGFiZWxfc2V0X3RleHQoR1RLX0xBQkVMKG1fdGltZUxhYmVsKSwg
bGFiZWwpOworICAgIGdfZnJlZShsYWJlbCk7CisgICAgcmV0dXJuIFRSVUU7Cit9CisKK3ZvaWQg
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6Y3JlYXRlSHVkKCkKK3sKKyAgICBtX2h1ZFdpbmRv
dyA9IGd0a193aW5kb3dfbmV3KEdUS19XSU5ET1dfUE9QVVApOworICAgIGd0a193aW5kb3dfc2V0
X2dyYXZpdHkoR1RLX1dJTkRPVyhtX2h1ZFdpbmRvdyksIEdES19HUkFWSVRZX1NPVVRIX1dFU1Qp
OworICAgIGd0a193aW5kb3dfc2V0X3R5cGVfaGludChHVEtfV0lORE9XKG1faHVkV2luZG93KSwg
R0RLX1dJTkRPV19UWVBFX0hJTlRfTk9STUFMKTsKKworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9o
dWRXaW5kb3csICJtb3Rpb24tbm90aWZ5LWV2ZW50IiwgR19DQUxMQkFDSyhvbkZ1bGxzY3JlZW5H
dGtNb3Rpb25Ob3RpZnlFdmVudCksIHRoaXMpOworCisgICAgR3RrV2lkZ2V0KiBoYm94ID0gZ3Rr
X2hib3hfbmV3KEZBTFNFLCA0KTsKKyAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVS
KG1faHVkV2luZG93KSwgaGJveCk7CisKKyAgICBtX3BsYXlQYXVzZUFjdGlvbiA9IGd0a19hY3Rp
b25fbmV3KCJwbGF5IiwgXygiUGxheSAvIFBhdXNlIiksIF8oIlBsYXkgb3IgcGF1c2UgdGhlIG1l
ZGlhIiksICJtZWRpYS1wbGF5YmFjay1wYXVzZS1zeW1ib2xpYyIpOworICAgIGdfc2lnbmFsX2Nv
bm5lY3QobV9wbGF5UGF1c2VBY3Rpb24sICJhY3RpdmF0ZSIsIEdfQ0FMTEJBQ0sodG9nZ2xlUGxh
eVBhdXNlQWN0aXZhdGVkKSwgdGhpcyk7CisKKyAgICBwbGF5U3RhdGVDaGFuZ2VkKCk7CisKKyAg
ICBHdGtXaWRnZXQqIGl0ZW0gPSBndGtfYWN0aW9uX2NyZWF0ZV90b29sX2l0ZW0obV9wbGF5UGF1
c2VBY3Rpb24pOworICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKGhib3gpLCBpdGVtLCBG
QUxTRSwgVFJVRSwgMCk7CisKKyAgICBHdGtXaWRnZXQqIGxhYmVsID0gZ3RrX2xhYmVsX25ldyhf
KCJUaW1lOiIpKTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChoYm94KSwgbGFiZWws
IEZBTFNFLCBUUlVFLCAwKTsKKworICAgIEd0a09iamVjdCogYWRqdXN0bWVudCA9IGd0a19hZGp1
c3RtZW50X25ldygwLjAsIDAuMCwgMTAwLjAsIDAuMSwgMS4wLCAxLjApOworICAgIG1fdGltZUhT
Y2FsZSA9IGd0a19oc2NhbGVfbmV3KEdUS19BREpVU1RNRU5UKGFkanVzdG1lbnQpKTsKKyAgICBn
dGtfc2NhbGVfc2V0X2RyYXdfdmFsdWUoR1RLX1NDQUxFKG1fdGltZUhTY2FsZSksIEZBTFNFKTsK
KyAgICBndGtfcmFuZ2Vfc2V0X3Nob3dfZmlsbF9sZXZlbChHVEtfUkFOR0UobV90aW1lSFNjYWxl
KSwgVFJVRSk7CisgICAgZ3RrX3JhbmdlX3NldF91cGRhdGVfcG9saWN5KEdUS19SQU5HRShtX3Rp
bWVIU2NhbGUpLCBHVEtfVVBEQVRFX0NPTlRJTlVPVVMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
bV90aW1lSFNjYWxlLCAiYnV0dG9uLXByZXNzLWV2ZW50IiwgR19DQUxMQkFDSyh0aW1lU2NhbGVC
dXR0b25QcmVzc2VkKSwgdGhpcyk7CisgICAgZ19zaWduYWxfY29ubmVjdChtX3RpbWVIU2NhbGUs
ICJidXR0b24tcmVsZWFzZS1ldmVudCIsIEdfQ0FMTEJBQ0sodGltZVNjYWxlQnV0dG9uUmVsZWFz
ZWQpLCB0aGlzKTsKKyAgICBtX2hzY2FsZVVwZGF0ZUlkID0gZ19zaWduYWxfY29ubmVjdChtX3Rp
bWVIU2NhbGUsICJ2YWx1ZS1jaGFuZ2VkIiwgR19DQUxMQkFDSyh0aW1lU2NhbGVWYWx1ZUNoYW5n
ZWQpLCB0aGlzKTsKKworICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKGhib3gpLCBtX3Rp
bWVIU2NhbGUsIFRSVUUsIFRSVUUsIDApOworCisgICAgbV90aW1lTGFiZWwgPSBndGtfbGFiZWxf
bmV3KCIiKTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChoYm94KSwgbV90aW1lTGFi
ZWwsIEZBTFNFLCBUUlVFLCAwKTsKKworICAgIC8vIFZvbHVtZSBidXR0b24uCisgICAgbV92b2x1
bWVCdXR0b24gPSBndGtfdm9sdW1lX2J1dHRvbl9uZXcoKTsKKyAgICBndGtfYm94X3BhY2tfc3Rh
cnQoR1RLX0JPWChoYm94KSwgbV92b2x1bWVCdXR0b24sIEZBTFNFLCBUUlVFLCAwKTsKKyAgICBn
dGtfc2NhbGVfYnV0dG9uX3NldF92YWx1ZShHVEtfU0NBTEVfQlVUVE9OKG1fdm9sdW1lQnV0dG9u
KSwgdm9sdW1lKCkpOworICAgIG1fdm9sdW1lVXBkYXRlSWQgPSBnX3NpZ25hbF9jb25uZWN0KG1f
dm9sdW1lQnV0dG9uLCAidmFsdWUtY2hhbmdlZCIsIEdfQ0FMTEJBQ0sodm9sdW1lVmFsdWVDaGFu
Z2VkKSwgdGhpcyk7CisKKworICAgIG1fZXhpdEZ1bGxzY3JlZW5BY3Rpb24gPSBndGtfYWN0aW9u
X25ldygiZXhpdCIsIF8oIkV4aXQgRnVsbHNjcmVlbiIpLCBfKCJFeGl0IGZyb20gZnVsbHNjcmVl
biBtb2RlIiksICJ2aWV3LXJlc3RvcmUtc3ltYm9saWMiKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0
KG1fZXhpdEZ1bGxzY3JlZW5BY3Rpb24sICJhY3RpdmF0ZSIsIEdfQ0FMTEJBQ0soZXhpdEZ1bGxz
Y3JlZW5BY3RpdmF0ZWQpLCB0aGlzKTsKKyAgICBnX29iamVjdF9zZXQobV9leGl0RnVsbHNjcmVl
bkFjdGlvbiwgImljb24tbmFtZSIsICJ2aWV3LXJlc3RvcmUtc3ltYm9saWMiLCBOVUxMKTsKKyAg
ICBpdGVtID0gZ3RrX2FjdGlvbl9jcmVhdGVfdG9vbF9pdGVtKG1fZXhpdEZ1bGxzY3JlZW5BY3Rp
b24pOworICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKGhib3gpLCBpdGVtLCBGQUxTRSwg
VFJVRSwgMCk7CisKKworICAgIG1fcHJvZ3Jlc3NCYXJVcGRhdGVJZCA9IGdfdGltZW91dF9hZGQo
UFJPR1JFU1NfQkFSX1VQREFURV9JTlRFUlZBTCwgcHJvZ3Jlc3NCYXJVcGRhdGVDYWxsYmFjaywg
dGhpcyk7CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjljNDdjODkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaApAQCAtMCwwICsxLDEwMCBAQAorLyoK
KyAqICBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTAorICoKKyAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIEZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJfaAorI2RlZmluZSBGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyX2gKKworI2lmIEVOQUJMRShWSURFTykKKworI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQu
aCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK3R5cGVkZWYgc3RydWN0IF9HdGtPYmplY3Qg
R3RrT2JqZWN0OwordHlwZWRlZiBzdHJ1Y3QgX0d0a1dpZGdldCBHdGtXaWRnZXQ7Cit0eXBlZGVm
IHN0cnVjdCBfR3RrQWN0aW9uIEd0a0FjdGlvbjsKK3R5cGVkZWYgc3RydWN0IF9HZGtDdXJzb3Ig
R2RrQ3Vyc29yOwordHlwZWRlZiBzdHJ1Y3QgX0dka0V2ZW50Q29uZmlndXJlIEdka0V2ZW50Q29u
ZmlndXJlOworCisKK2NsYXNzIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIgOiBwdWJsaWMgTm9u
Y29weWFibGUgeworcHVibGljOgorICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIoKTsKKyAg
ICB2aXJ0dWFsIH5GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKCk7CisKKyAgICB2b2lkIHNldE1l
ZGlhRWxlbWVudChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUVsZW1l
bnQuZ2V0KCk7IH0KKworICAgIHZvaWQgZ3RrQ29uZmlndXJlKEdka0V2ZW50Q29uZmlndXJlKiBl
dmVudCk7CisKKyAgICB2b2lkIGVudGVyRnVsbHNjcmVlbigpOworICAgIHZvaWQgZXhpdEZ1bGxz
Y3JlZW4oKTsKKworICAgIHZvaWQgZXhpdE9uVXNlclJlcXVlc3QoKTsKKyAgICB2b2lkIHRvZ2ds
ZVBsYXkoKTsKKyAgICB2b2lkIGJlZ2luU2VlaygpOworICAgIHZvaWQgZG9TZWVrKCk7CisgICAg
dm9pZCBlbmRTZWVrKCk7CisKKyAgICB2b2lkIGhpZGVIdWQoKTsKKyAgICB2b2lkIHNob3dIdWQo
Ym9vbCk7CisgICAgZ2Jvb2xlYW4gdXBkYXRlSHVkUHJvZ3Jlc3NCYXIoKTsKKworICAgIGZsb2F0
IHZvbHVtZSgpIGNvbnN0OworICAgIHZvaWQgc2V0Vm9sdW1lKGZsb2F0KTsKKyAgICB2b2lkIHZv
bHVtZUNoYW5nZWQoKTsKKyAgICB2b2lkIG11dGVDaGFuZ2VkKCk7CisKK3ByaXZhdGU6CisgICAg
Ym9vbCBjYW5QbGF5KCkgY29uc3Q7CisgICAgdm9pZCBwbGF5KCk7CisgICAgdm9pZCBwYXVzZSgp
OworICAgIHZvaWQgcGxheVN0YXRlQ2hhbmdlZCgpOworCisgICAgYm9vbCBtdXRlZCgpIGNvbnN0
OworCisgICAgZmxvYXQgY3VycmVudFRpbWUoKSBjb25zdDsKKyAgICB2b2lkIHNldEN1cnJlbnRU
aW1lKGZsb2F0KTsKKworICAgIGZsb2F0IGR1cmF0aW9uKCkgY29uc3Q7CisgICAgZmxvYXQgcGVy
Y2VudExvYWRlZCgpIGNvbnN0OworCisgICAgdm9pZCBjcmVhdGVIdWQoKTsKKyAgICB2b2lkIHVw
ZGF0ZUh1ZFBvc2l0aW9uKCk7CisKKyAgICBSZWZQdHI8V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dD4gbV9tZWRpYUVsZW1lbnQ7CisKKyAgICBndWludCBtX2h1ZFRpbWVvdXRJZDsKKyAgICBndWlu
dCBtX3Byb2dyZXNzQmFyVXBkYXRlSWQ7CisgICAgZ3VpbnQgbV9wcm9ncmVzc0JhckZpbGxVcGRh
dGVJZDsKKyAgICBndWludCBtX2hzY2FsZVVwZGF0ZUlkOworICAgIGd1aW50IG1fdm9sdW1lVXBk
YXRlSWQ7CisgICAgYm9vbCBtX3NlZWtMb2NrOworICAgIEd0a1dpZGdldCogbV93aW5kb3c7Cisg
ICAgR2RrQ3Vyc29yKiBtX2N1cnNvcjsKKyAgICBHdGtXaWRnZXQqIG1faHVkV2luZG93OworICAg
IEd0a0FjdGlvbiogbV9wbGF5UGF1c2VBY3Rpb247CisgICAgR3RrQWN0aW9uKiBtX2V4aXRGdWxs
c2NyZWVuQWN0aW9uOworICAgIEd0a1dpZGdldCogbV90aW1lSFNjYWxlOworICAgIEd0a1dpZGdl
dCogbV90aW1lTGFiZWw7CisgICAgR3RrV2lkZ2V0KiBtX3ZvbHVtZUJ1dHRvbjsKK307CisKKyNl
bmRpZgorCisjZW5kaWYgLy8gRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcl9oCmRpZmYgLS1naXQg
YS9XZWJLaXQvZ3RrL3BvL1BPVEZJTEVTIGIvV2ViS2l0L2d0ay9wby9QT1RGSUxFUwppbmRleCAw
NWJhMTM4Li5mZmQwMDE1IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3BvL1BPVEZJTEVTCisrKyBi
L1dlYktpdC9ndGsvcG8vUE9URklMRVMKQEAgLTEsNiArMSw3IEBACiAjIExpc3Qgb2Ygc291cmNl
IGZpbGVzIHdoaWNoIGNvbnRhaW4gdHJhbnNsYXRhYmxlIHN0cmluZ3MuCiBXZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvQ29udGV4dE1lbnVDbGllbnRHdGsuY3BwCitXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Z1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkb3du
bG9hZC5jcHAKIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHNvdXBhdXRoZGlhbG9nLmMKIFdlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0cHJpdmF0ZS5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRl
LmNwcAppbmRleCA0MWRlNzZlLi45Mjg3NDIyIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXRwcml2YXRlLmNwcAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRl
LmNwcApAQCAtMjgsNiArMjgsOCBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVk
ZSAiRnJhbWVMb2FkZXJDbGllbnRHdGsuaCIKICNpbmNsdWRlICJHdGtWZXJzaW9uaW5nLmgiCisj
aW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lu
Y2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJY29uRGF0YWJhc2UuaCIKICNpbmNs
dWRlICJMb2dnaW5nLmgiCkBAIC00OSw2ICs1MSwxMCBAQAogI2luY2x1ZGUgPHN0ZGxpYi5oPgog
I2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAorI2lmIEVOQUJMRShWSURFTykKKyNpbmNsdWRl
ICJGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShEQVRB
QkFTRSkKICNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKICNlbmRpZgpAQCAtMjgxLDMgKzI4
NywzMyBAQCB2b2lkIHdlYmtpdF9yZXNldF9vcmlnaW5fYWNjZXNzX3doaXRlX2xpc3RzKCkKIHsK
ICAgICBTZWN1cml0eU9yaWdpbjo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCk7CiB9CisK
Kwordm9pZCB3ZWJraXRfd2ViX3ZpZXdfZW50ZXJfZnVsbHNjcmVlbihXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3LCBOb2RlKiBub2RlKQoreworICAgIGlmICghbm9kZS0+aGFzVGFnTmFtZShIVE1MTmFt
ZXM6OnZpZGVvVGFnKSkKKyAgICAgICAgcmV0dXJuOworCisjaWYgRU5BQkxFKFZJREVPKQorICAg
IEhUTUxNZWRpYUVsZW1lbnQqIHZpZGVvRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVs
ZW1lbnQqPihub2RlKTsKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXct
PnByaXY7CisKKyAgICAvLyBGaXJzdCBleGl0IEZ1bGxzY3JlZW4gZm9yIHRoZSBvbGQgbWVkaWFF
bGVtZW50LgorICAgIGlmIChwcml2LT5mdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKQorICAgICAg
ICBwcml2LT5mdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLT5leGl0RnVsbHNjcmVlbigpOworCisg
ICAgcHJpdi0+ZnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciA9IG5ldyBGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyOworICAgIHByaXYtPmZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXItPnNldE1lZGlh
RWxlbWVudCh2aWRlb0VsZW1lbnQpOworICAgIHByaXYtPmZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXItPmVudGVyRnVsbHNjcmVlbigpOworI2VuZGlmCit9CisKK3ZvaWQgd2Via2l0X3dlYl92aWV3
X2V4aXRfZnVsbHNjcmVlbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworI2lmIEVOQUJMRShW
SURFTykKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7Cisg
ICAgaWYgKHByaXYtPmZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIpCisgICAgICAgIHByaXYtPmZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXItPmV4aXRGdWxsc2NyZWVuKCk7CisjZW5kaWYKK30KKwpk
aWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oIGIvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCmluZGV4IDczZjlmY2MuLjllNjlmZDEgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaAorKysgYi9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXRwcml2YXRlLmgKQEAgLTU2LDYgKzU2LDggQEAKICNpbmNsdWRlICJJbnNwZWN0
b3JDbGllbnRHdGsuaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUgIkZyYW1lTG9h
ZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oIgorI2lu
Y2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5k
bGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKQEAgLTE1Nyw2ICsxNTksOCBAQCBl
eHRlcm4gIkMiIHsKICAgICAgICAgZ2Jvb2xlYW4gZGlzcG9zaW5nOwogICAgICAgICBnYm9vbGVh
biB1c2VQcmltYXJ5Rm9yUGFzdGU7CiAKKyAgICAgICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ciogZnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjsKKwogICAgICAgICAvLyBUaGVzZSBhcmUgaG9z
dGVkIGhlcmUgYmVjYXVzZSB0aGUgRGF0YVNvdXJjZSBvYmplY3QgaXMKICAgICAgICAgLy8gY3Jl
YXRlZCB0b28gbGF0ZSBpbiB0aGUgZnJhbWUgbG9hZGluZyBwcm9jZXNzLgogICAgICAgICBXZWJL
aXRXZWJSZXNvdXJjZSogbWFpblJlc291cmNlOwpAQCAtMzk3LDYgKzQwMSw5IEBAIGV4dGVybiAi
QyIgewogCiAgICAgV0VCS0lUX0FQSSB2b2lkCiAgICAgd2Via2l0X3dlYl9mcmFtZV9sYXlvdXQo
V2ViS2l0V2ViRnJhbWUqIGZyYW1lKTsKKworICAgIHZvaWQgd2Via2l0X3dlYl92aWV3X2VudGVy
X2Z1bGxzY3JlZW4oV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViQ29yZTo6Tm9kZSogbm9kZSk7
CisgICAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZXhpdF9mdWxsc2NyZWVuKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZp
Z3VyZS5hYwppbmRleCAxZTAxOTRlLi4xZmIxZDgxIDEwMDY0NAotLS0gYS9jb25maWd1cmUuYWMK
KysrIGIvY29uZmlndXJlLmFjCkBAIC04MjYsNiArODI2LDcgQEAgaWYgdGVzdCAiJGVuYWJsZV92
aWRlbyIgPSAieWVzIjsgdGhlbgogICAgICAgICAgICAgICAgICAgICAgW2dzdHJlYW1lci0wLjEw
ID49ICRHU1RSRUFNRVJfUkVRVUlSRURfVkVSU0lPTgogICAgICAgICAgICAgICAgICAgICAgZ3N0
cmVhbWVyLWFwcC0wLjEwCiAgICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXItYmFzZS0wLjEw
CisgICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXItaW50ZXJmYWNlcy0wLjEwCiAgICAgICAg
ICAgICAgICAgICAgICBnc3RyZWFtZXItcGJ1dGlscy0wLjEwCiAgICAgICAgICAgICAgICAgICAg
ICBnc3RyZWFtZXItcGx1Z2lucy1iYXNlLTAuMTAgPj0gJEdTVFJFQU1FUl9QTFVHSU5TX0JBU0Vf
UkVRVUlSRURfVkVSU0lPTgogICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLXZpZGVvLTAu
MTBdKQotLSAKMS42LjMuMw==
</data>
<flag name="review"
          id="49862"
          type_id="1"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62047</attachid>
            <date>2010-07-20 02:47:24 -0700</date>
            <delta_ts>2010-08-12 03:12:29 -0700</delta_ts>
            <desc>fullscreen video support in WebKit/gtk</desc>
            <filename>fullscreen-video-support-in-WebKitgtk.patch</filename>
            <type>text/plain</type>
            <size>51061</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA2OTJlNTE3MjY0NzZlOWVhMDVmZTZmN2MzODc0N2U0NGUxMTc1YWRkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBTYXQsIDEwIEp1bCAyMDEwIDEyOjU3OjM5ICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
ZnVsbHNjcmVlbiB2aWRlbyBzdXBwb3J0IGluIFdlYktpdC9ndGsKCi0tLQogQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEyICsKIEdOVW1ha2Vm
aWxlLmFtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiBXZWJD
b3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMzAgKwog
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAy
ICsKIC4uLi9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmNwcCAgICAgICAgIHwg
IDE1NyArKysrKystCiAuLi4vcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdX
b3JsZC5oICB8ICAgMTkgKwogLi4uL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwICAgICAgfCAgICAxIC0KIC4uLi9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRl
b1dpbmRvdy5oICAgICAgIHwgICA1NCArKwogLi4uL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9y
bVZpZGVvV2luZG93R3RrLmNwcCAgfCAgIDYwICsrCiBXZWJLaXQvZ3RrL0NoYW5nZUxvZyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNzMgKysrCiBXZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAgICAgICB8ICAgMjUgKwogV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaCAgICAgICAgfCAgICA2ICsKIC4uLi9XZWJDb3Jl
U3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcCAgIHwgIDU4MCArKysrKysrKysr
KysrKysrKysrKwogLi4uL2d0ay9XZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyLmggfCAgMTAzICsrKysKIFdlYktpdC9ndGsvcG8vQ2hhbmdlTG9nICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAgOSArCiBXZWJLaXQvZ3RrL3BvL1BPVEZJTEVTICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgIDEgKwogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0
ZS5jcHAgICAgICAgICAgICAgICAgfCAgIDM2ICsrCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRw
cml2YXRlLmggICAgICAgICAgICAgICAgICB8ICAgIDcgKwogY29uZmlndXJlLmFjICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIDE5IGZpbGVzIGNoYW5nZWQs
IDExNzYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93LmgK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9Q
bGF0Zm9ybVZpZGVvV2luZG93R3RrLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXIuaAoKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA2ZTlmNWJkLi44
NmQyMDY2IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMTAtMDctMTAgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHU3Ry
ZWFtZXJdIEdUSyBYT3ZlcmxheSBzdXBwb3J0IGluIEdTdHJlYW1lckdXb3JsZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0NzQKKworICAgICAgICAq
IGNvbmZpZ3VyZS5hYzogZ3N0LWludGVyZmFjZXMgbGluayBzdXBwb3J0IG5lZWRlZCBmb3IgdXNl
IG9mCisgICAgICAgIEdzdFhPdmVybGF5IGludGVyZmFjZS4KKyAgICAgICAgKiBHTlVtYWtlZmls
ZS5hbTogQWRkZWQgbmV3IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIgZmlsZXMgaW4gdGhlCisg
ICAgICAgIGJ1aWxkLgorCiAyMDEwLTA3LTE2ICBMZWFuZHJvIFBlcmVpcmEgIDxsZWFuZHJvQHBy
b2Z1c2lvbi5tb2JpPgogCiAgICAgICAgIFtFRkxdIFVucmV2aWV3ZWQgYnVpbGQgc3lzdGVtIGNs
ZWFudXAuCmRpZmYgLS1naXQgYS9HTlVtYWtlZmlsZS5hbSBiL0dOVW1ha2VmaWxlLmFtCmluZGV4
IDc1NWI1MWIuLjUwMjcxZjAgMTAwNjQ0Ci0tLSBhL0dOVW1ha2VmaWxlLmFtCisrKyBiL0dOVW1h
a2VmaWxlLmFtCkBAIC0zNjgsNiArMzY4LDggQEAgd2Via2l0Z3RrX3NvdXJjZXMgKz0gXAogCVdl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmggXAogCVdlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwIFwKIAlXZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmggXAorCVdlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAgXAorCVdlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oIFwKIAlXZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5jcHAgXAogCVdlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmggXAogCVdlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvUGFzdGVib2FyZEhlbHBlckd0ay5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmNzk2YWJkLi5lYjFhMjU1IDEwMDY0NAotLS0g
YS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMz
IEBACisyMDEwLTA3LTIwICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR1N0cmVh
bWVyXSBHVEsgWE92ZXJsYXkgc3VwcG9ydCBpbiBHU3RyZWFtZXJHV29ybGQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDc0CisKKyAgICAgICAgR1N0
cmVhbWVyR1dvcmxkIG5vdyBjYXRjaGVzIHN5bmNocm9ub3VzIG1lc3NhZ2VzIGNvbWluZyBmcm9t
IHRoZQorICAgICAgICBzaW5rcyBhbmQgY3JlYXRlcyBhIEdUSyB3aW5kb3cgd2hlcmUgdGhlIHZp
ZGVvIGNhbiBiZSBvdmVybGF5ZWQgaWYKKyAgICAgICAgZnVsbHNjcmVlbiBkaXNwbGF5IGlzIHJl
cXVlc3RlZCB1c2luZyBlbnRlckZ1bGxzY3JlZW4uCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5h
bToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxk
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdzdEdXb3JsZFN5bmNNZXNzYWdlQ2FsbGJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyR1dvcmxkOjpHU3RyZWFtZXJHV29ybGQpOgorICAg
ICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyR1dvcmxkOjp+R1N0cmVhbWVyR1dvcmxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdTdHJlYW1lckdXb3JsZDo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAg
KFdlYkNvcmU6OkdTdHJlYW1lckdXb3JsZDo6ZXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2Vi
Q29yZTo6R1N0cmVhbWVyR1dvcmxkOjpzZXRXaW5kb3dPdmVybGF5KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmg6CisgICAgICAgIChXZWJD
b3JlOjpHU3RyZWFtZXJHV29ybGQ6OnBpcGVsaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJl
YW1lckdXb3JsZDo6cGxhdGZvcm1WaWRlb1dpbmRvdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3cuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVZpZGVvV2luZG93OjpjcmVhdGVXaW5kb3cp
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1WaWRlb1dpbmRvdzo6d2luZG93KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtVmlkZW9XaW5kb3c6OnZpZGVvV2luZG93SWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93R3RrLmNw
cDogQWRkZWQuCisgICAgICAgIChQbGF0Zm9ybVZpZGVvV2luZG93OjpQbGF0Zm9ybVZpZGVvV2lu
ZG93KToKKwogMjAxMC0wNy0yMCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggYWU4NWI1Yi4uZDA2ODlm
MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCkBAIC0zMDUzLDYgKzMwNTMsOCBAQCB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAog
CVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5oIFwK
IAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5oIFwK
IAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lckNhaXJv
LmNwcCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRl
b1dpbmRvdy5oIFwKKwlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9y
bVZpZGVvV2luZG93R3RrLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmgKIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmNwcCBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5jcHAK
aW5kZXggYzUwMjJmOS4uZTFlZDFhYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuY3BwCkBAIC0yMSwxMiArMjEsMzMg
QEAKIAogI2luY2x1ZGUgIkdTdHJlYW1lckdXb3JsZC5oIgogCi0jaW5jbHVkZSAiTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmgiCisjaW5jbHVkZSAiR093blB0ckdTdHJlYW1lci5oIgorCisj
aW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1ZGUgPGdzdC9pbnRlcmZhY2VzL3hvdmVybGF5Lmg+
CisKKyNpZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2lmZGVmIEdES19X
SU5ET1dJTkdfWDExCisjaW5jbHVkZSA8Z2RrL2dka3guaD4gLy8gZm9yIEdES19XSU5ET1dfWElE
CisjZW5kaWYKKyNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2dib29sZWFuIGdzdEdXb3JsZFN5bmNNZXNzYWdlQ2FsbGJhY2soR3N0QnVzKiBi
dXMsIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIGdwb2ludGVyIGRhdGEpCit7CisgICAgQVNTRVJUKEdT
VF9NRVNTQUdFX1RZUEUobWVzc2FnZSkgPT0gR1NUX01FU1NBR0VfRUxFTUVOVCk7CisKKyAgICBH
U3RyZWFtZXJHV29ybGQqIGdzdEdXb3JsZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8R1N0cmVhbWVyR1dv
cmxkKj4oZGF0YSk7CisKKyAgICBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShtZXNzYWdlLT5z
dHJ1Y3R1cmUsICJwcmVwYXJlLXh3aW5kb3ctaWQiKSkKKyAgICAgICAgZ3N0R1dvcmxkLT5zZXRX
aW5kb3dPdmVybGF5KG1lc3NhZ2UpOworICAgIHJldHVybiBUUlVFOworfQorCiBQYXNzUmVmUHRy
PEdTdHJlYW1lckdXb3JsZD4gR1N0cmVhbWVyR1dvcmxkOjpjcmVhdGVHV29ybGQoTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyKiBwbGF5ZXIpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBH
U3RyZWFtZXJHV29ybGQocGxheWVyKSk7CkBAIC0zNCwxMSArNTUsMTQ1IEBAIFBhc3NSZWZQdHI8
R1N0cmVhbWVyR1dvcmxkPiBHU3RyZWFtZXJHV29ybGQ6OmNyZWF0ZUdXb3JsZChNZWRpYVBsYXll
clByaXZhdGVHU3RyCiAKIEdTdHJlYW1lckdXb3JsZDo6R1N0cmVhbWVyR1dvcmxkKE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lciogcGxheWVyKQogICAgIDogbV9wbGF5ZXIocGxheWVyKQorICAg
ICwgbV9keW5hbWljUGFkTmFtZSgwKQogeworICAgIC8vIFhPdmVybGF5IG1lc3NhZ2VzIG5lZWQg
dG8gYmUgaGFuZGxlZCBzeW5jaHJvbm91c2x5LgorICAgIEdzdEJ1cyogYnVzID0gZ3N0X3BpcGVs
aW5lX2dldF9idXMoR1NUX1BJUEVMSU5FKG1fcGxheWVyLT5waXBlbGluZSgpKSk7CisgICAgZ3N0
X2J1c19zZXRfc3luY19oYW5kbGVyKGJ1cywgZ3N0X2J1c19zeW5jX3NpZ25hbF9oYW5kbGVyLCB0
aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KGJ1cywgInN5bmMtbWVzc2FnZTo6ZWxlbWVudCIs
IEdfQ0FMTEJBQ0soZ3N0R1dvcmxkU3luY01lc3NhZ2VDYWxsYmFjayksIHRoaXMpOworICAgIGdz
dF9vYmplY3RfdW5yZWYoYnVzKTsKIH0KIAogR1N0cmVhbWVyR1dvcmxkOjp+R1N0cmVhbWVyR1dv
cmxkKCkKIHsKKyAgICBleGl0RnVsbHNjcmVlbigpOworfQorCitib29sIEdTdHJlYW1lckdXb3Js
ZDo6ZW50ZXJGdWxsc2NyZWVuKCkKK3sKKyAgICBpZiAobV9keW5hbWljUGFkTmFtZSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFtX3ZpZGVvV2luZG93KQorICAgICAgICBtX3Zp
ZGVvV2luZG93ID0gUGxhdGZvcm1WaWRlb1dpbmRvdzo6Y3JlYXRlV2luZG93KCk7CisKKyAgICBH
c3RFbGVtZW50KiBwaXBlbGluZSA9IG1fcGxheWVyLT5waXBlbGluZSgpOworICAgIEdzdEVsZW1l
bnQqIHBsYXRmb3JtVmlkZW9TaW5rID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJhdXRvdmlk
ZW9zaW5rIiwgInBsYXRmb3JtVmlkZW9TaW5rIik7CisgICAgR3N0RWxlbWVudCogY29sb3JzcGFj
ZSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiZmZtcGVnY29sb3JzcGFjZSIsICJjb2xvcnNw
YWNlIik7CisgICAgR3N0RWxlbWVudCogcXVldWUgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2Uo
InF1ZXVlIiwgInF1ZXVlIik7CisgICAgR3N0RWxlbWVudCogdmlkZW9TY2FsZSA9IGdzdF9lbGVt
ZW50X2ZhY3RvcnlfbWFrZSgidmlkZW9zY2FsZSIsICJ2aWRlb1NjYWxlIik7CisKKyAgICAvLyBH
ZXQgdmlkZW8gc2luayBiaW4gYW5kIHRoZSB0ZWUgaW5zaWRlLgorICAgIEdPd25QdHI8R3N0RWxl
bWVudD4gdmlkZW9TaW5rOworICAgIGdfb2JqZWN0X2dldChwaXBlbGluZSwgInZpZGVvLXNpbmsi
LCAmdmlkZW9TaW5rLm91dFB0cigpLCBOVUxMKTsKKyAgICBHc3RFbGVtZW50KiB0ZWUgPSBnc3Rf
YmluX2dldF9ieV9uYW1lKEdTVF9CSU4odmlkZW9TaW5rLmdldCgpKSwgInZpZGVvVGVlIik7CisK
KyAgICAvLyBBZGQgYW5kIGxpbmsgYSBxdWV1ZSwgZmZtcGVnY29sb3JzcGFjZSBhbmQgc2luayBp
biB0aGUgYmluLgorICAgIGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJTih2aWRlb1NpbmsuZ2V0KCkp
LCBwbGF0Zm9ybVZpZGVvU2luaywgdmlkZW9TY2FsZSwgY29sb3JzcGFjZSwgcXVldWUsIE5VTEwp
OworICAgIGdzdF9lbGVtZW50X2xpbmtfbWFueShxdWV1ZSwgY29sb3JzcGFjZSwgdmlkZW9TY2Fs
ZSwgcGxhdGZvcm1WaWRlb1NpbmssIE5VTEwpOworCisgICAgLy8gTGluayBhIG5ldyBzcmMgcGFk
IGZyb20gdGVlIHRvIHF1ZXVlLgorICAgIEdzdFBhZCogc3JjUGFkID0gZ3N0X2VsZW1lbnRfZ2V0
X3JlcXVlc3RfcGFkKHRlZSwgInNyYyVkIik7CisgICAgR3N0UGFkKiBzaW5rUGFkID0gZ3N0X2Vs
ZW1lbnRfZ2V0X3N0YXRpY19wYWQocXVldWUsICJzaW5rIik7CisgICAgZ3N0X3BhZF9saW5rKHNy
Y1BhZCwgc2lua1BhZCk7CisgICAgZ3N0X29iamVjdF91bnJlZihHU1RfT0JKRUNUKHNpbmtQYWQp
KTsKKworICAgIG1fZHluYW1pY1BhZE5hbWUgPSBnc3RfcGFkX2dldF9uYW1lKHNyY1BhZCk7CisK
KyAgICAvLyBSb2xsIG5ldyBlbGVtZW50cyB0byBwaXBlbGluZSBzdGF0ZS4KKyAgICBnc3RfZWxl
bWVudF9zeW5jX3N0YXRlX3dpdGhfcGFyZW50KHF1ZXVlKTsKKyAgICBnc3RfZWxlbWVudF9zeW5j
X3N0YXRlX3dpdGhfcGFyZW50KGNvbG9yc3BhY2UpOworICAgIGdzdF9lbGVtZW50X3N5bmNfc3Rh
dGVfd2l0aF9wYXJlbnQodmlkZW9TY2FsZSk7CisgICAgZ3N0X2VsZW1lbnRfc3luY19zdGF0ZV93
aXRoX3BhcmVudChwbGF0Zm9ybVZpZGVvU2luayk7CisKKyAgICBnc3Rfb2JqZWN0X3VucmVmKHRl
ZSk7CisKKyAgICAvLyBRdWVyeSB0aGUgY3VycmVudCBtZWRpYSBzZWdtZW50IGluZm9ybWF0aW9u
cyBhbmQgc2VuZCB0aGVtIHRvd2FyZHMKKyAgICAvLyB0aGUgbmV3IHRlZSBicmFuY2ggZG93bnN0
cmVhbS4KKworICAgIEdzdFF1ZXJ5KiBxdWVyeSA9IGdzdF9xdWVyeV9uZXdfc2VnbWVudChHU1Rf
Rk9STUFUX1RJTUUpOworICAgIGdib29sZWFuIHF1ZXJ5UmVzdWx0ID0gZ3N0X2VsZW1lbnRfcXVl
cnkocGlwZWxpbmUsIHF1ZXJ5KTsKKworICAgIC8vIFNlZSBodHRwczovL2J1Z3ppbGxhLmdub21l
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjIwNDkwLgorI2lmIEdTVF9DSEVDS19WRVJTSU9OKDAsIDEw
LCAzMCkKKyAgICBpZiAoIXF1ZXJ5UmVzdWx0KSB7CisgICAgICAgIGdzdF9xdWVyeV91bnJlZihx
dWVyeSk7CisgICAgICAgIGdzdF9vYmplY3RfdW5yZWYoR1NUX09CSkVDVChzcmNQYWQpKTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmCisKKyAgICBHc3RGb3JtYXQgZm9ybWF0
OworICAgIGdpbnQ2NCBwb3NpdGlvbjsKKyAgICBpZiAoIWdzdF9lbGVtZW50X3F1ZXJ5X3Bvc2l0
aW9uKHBpcGVsaW5lLCAmZm9ybWF0LCAmcG9zaXRpb24pKQorICAgICAgICBwb3NpdGlvbiA9IDA7
CisKKyAgICBnZG91YmxlIHJhdGU7CisgICAgZ2ludDY0IHN0YXJ0VmFsdWUsIHN0b3BWYWx1ZTsK
KyAgICBnc3RfcXVlcnlfcGFyc2Vfc2VnbWVudChxdWVyeSwgJnJhdGUsICZmb3JtYXQsICZzdGFy
dFZhbHVlLCAmc3RvcFZhbHVlKTsKKworICAgIEdzdEV2ZW50KiBldmVudCA9IGdzdF9ldmVudF9u
ZXdfbmV3X3NlZ21lbnQoRkFMU0UsIHJhdGUsIGZvcm1hdCwgc3RhcnRWYWx1ZSwgc3RvcFZhbHVl
LCBwb3NpdGlvbik7CisgICAgZ3N0X3BhZF9wdXNoX2V2ZW50KHNyY1BhZCwgZXZlbnQpOworCisg
ICAgZ3N0X3F1ZXJ5X3VucmVmKHF1ZXJ5KTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmKEdTVF9PQkpF
Q1Qoc3JjUGFkKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgR1N0cmVhbWVyR1dvcmxk
OjpleGl0RnVsbHNjcmVlbigpCit7CisgICAgaWYgKCFtX2R5bmFtaWNQYWROYW1lKQorICAgICAg
ICByZXR1cm47CisKKyAgICBHc3RFbGVtZW50KiBwaXBlbGluZSA9IG1fcGxheWVyLT5waXBlbGlu
ZSgpOworCisgICAgLy8gR2V0IHZpZGVvIHNpbmsgYmluIGFuZCB0aGUgZWxlbWVudHMgdG8gcmVt
b3ZlLgorICAgIEdPd25QdHI8R3N0RWxlbWVudD4gdmlkZW9TaW5rOworICAgIGdfb2JqZWN0X2dl
dChwaXBlbGluZSwgInZpZGVvLXNpbmsiLCAmdmlkZW9TaW5rLm91dFB0cigpLCBOVUxMKTsKKyAg
ICBHc3RFbGVtZW50KiB0ZWUgPSBnc3RfYmluX2dldF9ieV9uYW1lKEdTVF9CSU4odmlkZW9TaW5r
LmdldCgpKSwgInZpZGVvVGVlIik7CisgICAgR3N0RWxlbWVudCogcGxhdGZvcm1WaWRlb1Npbmsg
PSBnc3RfYmluX2dldF9ieV9uYW1lKEdTVF9CSU4odmlkZW9TaW5rLmdldCgpKSwgInBsYXRmb3Jt
VmlkZW9TaW5rIik7CisgICAgR3N0RWxlbWVudCogcXVldWUgPSBnc3RfYmluX2dldF9ieV9uYW1l
KEdTVF9CSU4odmlkZW9TaW5rLmdldCgpKSwgInF1ZXVlIik7CisgICAgR3N0RWxlbWVudCogY29s
b3JzcGFjZSA9IGdzdF9iaW5fZ2V0X2J5X25hbWUoR1NUX0JJTih2aWRlb1NpbmsuZ2V0KCkpLCAi
Y29sb3JzcGFjZSIpOworICAgIEdzdEVsZW1lbnQqIHZpZGVvU2NhbGUgPSBnc3RfYmluX2dldF9i
eV9uYW1lKEdTVF9CSU4odmlkZW9TaW5rLmdldCgpKSwgInZpZGVvU2NhbGUiKTsKKworICAgIC8v
IEdldCBwYWRzIHRvIHVubGluayBhbmQgcmVtb3ZlLgorICAgIEdzdFBhZCogc3JjUGFkID0gZ3N0
X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQodGVlLCBtX2R5bmFtaWNQYWROYW1lKTsKKyAgICBHc3RQ
YWQqIHNpbmtQYWQgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChxdWV1ZSwgInNpbmsiKTsK
KworICAgIC8vIFVubGluayBhbmQgcmVsZWFzZSByZXF1ZXN0IHBhZC4KKyAgICBnc3RfcGFkX3Vu
bGluayhzcmNQYWQsIHNpbmtQYWQpOworICAgIGdzdF9lbGVtZW50X3JlbGVhc2VfcmVxdWVzdF9w
YWQodGVlLCBzcmNQYWQpOworICAgIGdzdF9vYmplY3RfdW5yZWYoR1NUX09CSkVDVChzcmNQYWQp
KTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmKEdTVF9PQkpFQ1Qoc2lua1BhZCkpOworCisgICAgLy8g
VW5saW5rLCByZW1vdmUgYW5kIGNsZWFudXAgcXVldWUsIGZmbXBlZ2NvbG9yc3BhY2UsIHZpZGVv
U2NhbGUgYW5kIHNpbmsuCisgICAgZ3N0X2VsZW1lbnRfdW5saW5rX21hbnkocXVldWUsIGNvbG9y
c3BhY2UsIHZpZGVvU2NhbGUsIHBsYXRmb3JtVmlkZW9TaW5rLCBOVUxMKTsKKyAgICBnc3RfYmlu
X3JlbW92ZV9tYW55KEdTVF9CSU4odmlkZW9TaW5rLmdldCgpKSwgcXVldWUsIGNvbG9yc3BhY2Us
IHZpZGVvU2NhbGUsIHBsYXRmb3JtVmlkZW9TaW5rLCBOVUxMKTsKKyAgICBnc3RfZWxlbWVudF9z
ZXRfc3RhdGUocXVldWUsIEdTVF9TVEFURV9OVUxMKTsKKyAgICBnc3RfZWxlbWVudF9zZXRfc3Rh
dGUoY29sb3JzcGFjZSwgR1NUX1NUQVRFX05VTEwpOworICAgIGdzdF9lbGVtZW50X3NldF9zdGF0
ZSh2aWRlb1NjYWxlLCBHU1RfU1RBVEVfTlVMTCk7CisgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRl
KHBsYXRmb3JtVmlkZW9TaW5rLCBHU1RfU1RBVEVfTlVMTCk7CisgICAgZ3N0X29iamVjdF91bnJl
ZihxdWV1ZSk7CisgICAgZ3N0X29iamVjdF91bnJlZihjb2xvcnNwYWNlKTsKKyAgICBnc3Rfb2Jq
ZWN0X3VucmVmKHZpZGVvU2NhbGUpOworICAgIGdzdF9vYmplY3RfdW5yZWYocGxhdGZvcm1WaWRl
b1NpbmspOworCisgICAgZ3N0X29iamVjdF91bnJlZih0ZWUpOworICAgIG1fZHluYW1pY1BhZE5h
bWUgPSAwOworfQorCit2b2lkIEdTdHJlYW1lckdXb3JsZDo6c2V0V2luZG93T3ZlcmxheShHc3RN
ZXNzYWdlKiBtZXNzYWdlKQoreworICAgIEdzdE9iamVjdCogc2luayA9IEdTVF9NRVNTQUdFX1NS
QyhtZXNzYWdlKTsKKworICAgIGlmICghR1NUX0lTX1hfT1ZFUkxBWShzaW5rKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKGdfb2JqZWN0X2NsYXNzX2ZpbmRfcHJvcGVydHkoR19PQkpFQ1Rf
R0VUX0NMQVNTKHNpbmspLCAiZm9yY2UtYXNwZWN0LXJhdGlvIikpCisgICAgICAgIGdfb2JqZWN0
X3NldChzaW5rLCAiZm9yY2UtYXNwZWN0LXJhdGlvIiwgVFJVRSwgTlVMTCk7CisKKyAgICBpZiAo
bV92aWRlb1dpbmRvdykKKyAgICAgICAgZ3N0X3hfb3ZlcmxheV9zZXRfeHdpbmRvd19pZChHU1Rf
WF9PVkVSTEFZKHNpbmspLCBtX3ZpZGVvV2luZG93LT52aWRlb1dpbmRvd0lkKCkpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFt
ZXJHV29ybGQuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1l
ckdXb3JsZC5oCmluZGV4IGI2MjYyOTguLjAzNThiMDEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5oCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5oCkBAIC0yMywyNSAr
MjMsNDQgQEAKIAogI2lmIEVOQUJMRShWSURFTykKIAorI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtVmlkZW9XaW5kb3cuaCIKICNpbmNs
dWRlICJSZWZDb3VudGVkLmgiCiAjaW5jbHVkZSAiUmVmUHRyLmgiCiAjaW5jbHVkZSA8Z2xpYi5o
PgogCit0eXBlZGVmIHN0cnVjdCBfR3N0RWxlbWVudCBHc3RFbGVtZW50OwordHlwZWRlZiBzdHJ1
Y3QgX0dzdE1lc3NhZ2UgR3N0TWVzc2FnZTsKK3R5cGVkZWYgc3RydWN0IF9Hc3RCdXMgR3N0QnVz
OwordHlwZWRlZiBzdHJ1Y3QgX0dzdEJpbiBHc3RCaW47CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOwogCitnYm9vbGVhbiBnc3RHV29y
bGRTeW5jTWVzc2FnZUNhbGxiYWNrKEdzdEJ1cyogYnVzLCBHc3RNZXNzYWdlKiBtZXNzYWdlLCBn
cG9pbnRlciBkYXRhKTsKIAogY2xhc3MgR1N0cmVhbWVyR1dvcmxkIDogcHVibGljIFJlZkNvdW50
ZWQ8R1N0cmVhbWVyR1dvcmxkPiB7CisgICAgZnJpZW5kIGdib29sZWFuIGdzdEdXb3JsZFN5bmNN
ZXNzYWdlQ2FsbGJhY2soR3N0QnVzKiBidXMsIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIGdwb2ludGVy
IGRhdGEpOwogCiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8R1N0cmVhbWVyR1dvcmxk
PiBjcmVhdGVHV29ybGQoTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKik7CiAgICAgfkdTdHJl
YW1lckdXb3JsZCgpOwogCisgICAgR3N0RWxlbWVudCogcGlwZWxpbmUoKSBjb25zdCB7IHJldHVy
biBtX3BsYXllci0+cGlwZWxpbmUoKTsgfQorCisgICAgLy8gUmV0dXJucyB0aGUgZnVsbC1zY3Jl
ZW4gd2luZG93IGNyZWF0ZWQKKyAgICBib29sIGVudGVyRnVsbHNjcmVlbigpOworICAgIHZvaWQg
ZXhpdEZ1bGxzY3JlZW4oKTsKKworICAgIHZvaWQgc2V0V2luZG93T3ZlcmxheShHc3RNZXNzYWdl
KiBtZXNzYWdlKTsKKyAgICBQbGF0Zm9ybVZpZGVvV2luZG93KiBwbGF0Zm9ybVZpZGVvV2luZG93
KCkgY29uc3QgeyByZXR1cm4gbV92aWRlb1dpbmRvdy5nZXQoKTsgfQorCiBwcml2YXRlOgogICAg
IEdTdHJlYW1lckdXb3JsZChNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqKTsKICAgICBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIqIG1fcGxheWVyOworICAgIFJlZlB0cjxQbGF0Zm9ybVZp
ZGVvV2luZG93PiBtX3ZpZGVvV2luZG93OworICAgIGdjaGFyKiBtX2R5bmFtaWNQYWROYW1lOwog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNzg2OWM0
NS4uMDAwNzQ5YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC01
NCw3ICs1NCw2IEBACiAjaW5jbHVkZSA8R093blB0ci5oPgogI2luY2x1ZGUgPGdzdC9nc3QuaD4K
ICNpbmNsdWRlIDxnc3QvaW50ZXJmYWNlcy9taXhlci5oPgotI2luY2x1ZGUgPGdzdC9pbnRlcmZh
Y2VzL3hvdmVybGF5Lmg+CiAjaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLmg+CiAjaW5jbHVkZSA8
bGltaXRzPgogI2luY2x1ZGUgPG1hdGguaD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3cuaCBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3cuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi44M2RjNWRkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvdy5oCkBAIC0w
LDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTAorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVm
IFBsYXRmb3JtVmlkZW9XaW5kb3dfaAorI2RlZmluZSBQbGF0Zm9ybVZpZGVvV2luZG93X2gKKwor
I2lmIEVOQUJMRShWSURFTykKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworI2lmIFBMQVRGT1JNKEdUSykKKyNpbmNsdWRlIDxndGsv
Z3RrLmg+Cit0eXBlZGVmIEd0a1dpZGdldCBQbGF0Zm9ybVdpbmRvd1R5cGU7CisjZW5kaWYKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQbGF0Zm9ybVZpZGVvV2luZG93IDogcHVibGlj
IFJlZkNvdW50ZWQ8UGxhdGZvcm1WaWRlb1dpbmRvdz4geworICAgIHB1YmxpYzoKKyAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1WaWRlb1dpbmRvdz4gY3JlYXRlV2luZG93KCkgeyBy
ZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3JtVmlkZW9XaW5kb3coKSk7IH0KKworICAgICAgICBQ
bGF0Zm9ybVZpZGVvV2luZG93KCk7CisgICAgICAgIH5QbGF0Zm9ybVZpZGVvV2luZG93KCk7CisK
KyAgICAgICAgUGxhdGZvcm1XaW5kb3dUeXBlKiB3aW5kb3coKSBjb25zdCB7IHJldHVybiBtX3dp
bmRvdzsgfQorICAgICAgICBndWxvbmcgdmlkZW9XaW5kb3dJZCgpIGNvbnN0IHsgcmV0dXJuIG1f
dmlkZW9XaW5kb3dJZDsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgZ3Vsb25nIG1fdmlkZW9X
aW5kb3dJZDsKKyAgICAgICAgUGxhdGZvcm1XaW5kb3dUeXBlKiBtX3ZpZGVvV2luZG93OworICAg
ICAgICBQbGF0Zm9ybVdpbmRvd1R5cGUqIG1fd2luZG93OworICAgIH07Cit9CisKKyNlbmRpZgor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1BsYXRmb3JtVmlkZW9XaW5kb3dHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvd0d0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMTg1ZjUzNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dHdGsuY3BwCkBAIC0wLDAg
KzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTAorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1WaWRlb1dpbmRvdy5oIgorCisjaWZkZWYgR0RL
X1dJTkRPV0lOR19YMTEKKyNpbmNsdWRlIDxnZGsvZ2RreC5oPiAvLyBmb3IgR0RLX1dJTkRPV19Y
SUQKKyNlbmRpZgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUGxhdGZvcm1WaWRlb1dp
bmRvdzo6UGxhdGZvcm1WaWRlb1dpbmRvdygpCit7CisgICAgbV93aW5kb3cgPSBndGtfd2luZG93
X25ldyhHVEtfV0lORE9XX1RPUExFVkVMKTsKKyAgICBndGtfd2lkZ2V0X3NldF9ldmVudHMobV93
aW5kb3csIEdES19QT0lOVEVSX01PVElPTl9NQVNLIHwgR0RLX0tFWV9QUkVTU19NQVNLIHwgR0RL
X0ZPQ1VTX0NIQU5HRV9NQVNLKTsKKworICAgIG1fdmlkZW9XaW5kb3cgPSBndGtfZHJhd2luZ19h
cmVhX25ldygpOworICAgIGd0a193aWRnZXRfc2V0X2RvdWJsZV9idWZmZXJlZChtX3ZpZGVvV2lu
ZG93LCBGQUxTRSk7CisgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUihtX3dpbmRv
dyksIG1fdmlkZW9XaW5kb3cpOworCisgICAgZ3RrX3dpZGdldF9yZWFsaXplKG1fd2luZG93KTsK
KworI2lmZGVmIEdES19XSU5ET1dJTkdfWDExCisgICAgbV92aWRlb1dpbmRvd0lkID0gR0RLX1dJ
TkRPV19YSUQoZ3RrX3dpZGdldF9nZXRfd2luZG93KG1fd2luZG93KSk7CisjZW5kaWYKKworfQor
CitQbGF0Zm9ybVZpZGVvV2luZG93Ojp+UGxhdGZvcm1WaWRlb1dpbmRvdygpCit7CisgICAgaWYg
KG1fdmlkZW9XaW5kb3cgJiYgbV93aW5kb3cpIHsKKyAgICAgICAgZ3RrX2NvbnRhaW5lcl9yZW1v
dmUoR1RLX0NPTlRBSU5FUihtX3dpbmRvdyksIG1fdmlkZW9XaW5kb3cpOworICAgICAgICBndGtf
d2lkZ2V0X2Rlc3Ryb3kobV92aWRlb1dpbmRvdyk7CisgICAgICAgIG1fdmlkZW9XaW5kb3cgPSAw
OworICAgIH0KKworICAgIGlmIChtX3dpbmRvdykgeworICAgICAgICBndGtfd2lkZ2V0X2Rlc3Ry
b3kobV93aW5kb3cpOworICAgICAgICBtX3dpbmRvdyA9IDA7CisgICAgfQorCisgICAgbV92aWRl
b1dpbmRvd0lkID0gMDsKK30KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggODAzYmYxMi4uY2IyMDM0NCAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3
NiBAQAorMjAxMC0wNy0yMCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dTdHJl
YW1lcl0gR1RLIFhPdmVybGF5IHN1cHBvcnQgaW4gR1N0cmVhbWVyR1dvcmxkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ3NAorCisgICAgICAgIE5l
dyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyIG9iamVjdCwgcHJpdmF0ZSBpbiB0aGUgd2Vidmll
dy4gSXQKKyAgICAgICAgaXMgY3JlYXRlZCB3aGVuIHRoZSB1c2VyIHByZXNzZXMgdGhlIGZ1bGxz
Y3JlZW4gYnV0dG9uIG9mIHRoZQorICAgICAgICB2aWRlbyBjb250cm9scy4gVmlkZW8gaXMgZGlz
cGxheWVkIGluIGZ1bGxzY3JlZW4sIGNvbnRyb2xzIGFyZQorICAgICAgICBkaXNwbGF5ZWQgd2hl
biB0aGUgdXNlciBtb3ZlcyB0aGUgbW91c2UgYW5kIHdoZW4gdGhlIHZpZGVvIGlzCisgICAgICAg
IHBhdXNlZC4gVGhlcmUncyBhbHNvIGJhc2ljIGtleWJvYXJkIHNob3J0Y3V0cyBzdXBwb3J0OiBG
L2YgdG8KKyAgICAgICAgbGVhdmUgZnVsbHNjcmVlbiwgc3BhY2UgdG8gdG9nZ2xlIHBsYXkvcGF1
c2UgYW5kIHVwL2Rvd24gdG8KKyAgICAgICAgY29udHJvbCB2b2x1bWUuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJv
bWVDbGllbnQ6OnN1cHBvcnRzRnVsbHNjcmVlbkZvck5vZGUpOgorICAgICAgICAoV2ViS2l0OjpD
aHJvbWVDbGllbnQ6OmVudGVyRnVsbHNjcmVlbkZvck5vZGUpOgorICAgICAgICAoV2ViS2l0OjpD
aHJvbWVDbGllbnQ6OmV4aXRGdWxsc2NyZWVuRm9yTm9kZSk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoaGlkZUh1ZENhbGxiYWNr
KToKKyAgICAgICAgKG9uRnVsbHNjcmVlbkd0a01vdGlvbk5vdGlmeUV2ZW50KToKKyAgICAgICAg
KG9uRnVsbHNjcmVlbkd0a0FjdGl2ZU5vdGlmaWNhdGlvbik6CisgICAgICAgIChvbkZ1bGxzY3Jl
ZW5HdGtDb25maWd1cmVFdmVudCk6CisgICAgICAgIChvbkZ1bGxzY3JlZW5HdGtEZXN0cm95KToK
KyAgICAgICAgKHRvZ2dsZVBsYXlQYXVzZUFjdGl2YXRlZCk6CisgICAgICAgIChleGl0RnVsbHNj
cmVlbkFjdGl2YXRlZCk6CisgICAgICAgIChwcm9ncmVzc0JhclVwZGF0ZUNhbGxiYWNrKToKKyAg
ICAgICAgKHRpbWVTY2FsZUJ1dHRvblByZXNzZWQpOgorICAgICAgICAodGltZVNjYWxlQnV0dG9u
UmVsZWFzZWQpOgorICAgICAgICAodGltZVNjYWxlVmFsdWVDaGFuZ2VkKToKKyAgICAgICAgKHZv
bHVtZVZhbHVlQ2hhbmdlZCk6CisgICAgICAgIChwbGF5ZXJWb2x1bWVDaGFuZ2VkQ2FsbGJhY2sp
OgorICAgICAgICAocGxheWVyTXV0ZUNoYW5nZWRDYWxsYmFjayk6CisgICAgICAgIChGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKToKKyAgICAgICAg
KEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6On5GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKToK
KyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnNldE1lZGlhRWxlbWVudCk6Cisg
ICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpndGtDb25maWd1cmUpOgorICAgICAg
ICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6c2hvd0h1ZCk6CisgICAgICAgIChGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyOjpoaWRlSHVkKToKKyAgICAgICAgKG9uRnVsbHNjcmVlbkd0a0tl
eVByZXNzRXZlbnQpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZW50ZXJG
dWxsc2NyZWVuKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnVwZGF0ZUh1
ZFBvc2l0aW9uKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmV4aXRPblVz
ZXJSZXF1ZXN0KToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmV4aXRGdWxs
c2NyZWVuKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmNhblBsYXkpOgor
ICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6cGxheSk6CisgICAgICAgIChGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyOjpwYXVzZSk6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyOjpwbGF5U3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXI6OnRvZ2dsZVBsYXkpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
cjo6dm9sdW1lKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6Om11dGVkKToK
KyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnNldFZvbHVtZSk6CisgICAgICAg
IChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp2b2x1bWVDaGFuZ2VkKToKKyAgICAgICAgKEZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6Om11dGVDaGFuZ2VkKToKKyAgICAgICAgKEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI6OmN1cnJlbnRUaW1lKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXI6OnNldEN1cnJlbnRUaW1lKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXI6OmR1cmF0aW9uKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6
OnBlcmNlbnRMb2FkZWQpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6YmVn
aW5TZWVrKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmRvU2Vlayk6Cisg
ICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjplbmRTZWVrKToKKyAgICAgICAgKHRp
bWVUb1N0cmluZyk6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp1cGRhdGVI
dWRQcm9ncmVzc0Jhcik6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpjcmVh
dGVIdWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXIuaDogQWRkZWQuCisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjptZWRpYUVs
ZW1lbnQpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXRwcml2YXRlLmNwcDoKKyAgICAgICAgKHdl
YmtpdF93ZWJfdmlld19lbnRlcl9mdWxsc2NyZWVuKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmll
d19leGl0X2Z1bGxzY3JlZW4pOgorICAgICAgICAqIHdlYmtpdC93ZWJraXRwcml2YXRlLmg6CisK
IDIwMTAtMDctMTYgIFpoZSBTdSAgPHN1emhlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50R3RrLmNwcCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50R3RrLmNwcAppbmRleCA4ODQ0MGJhLi43NGM2YjNmIDEwMDY0NAotLS0gYS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKKysrIGIvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5j
bHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkUmVxdWVzdC5oIgogI2luY2x1
ZGUgIkd0a1ZlcnNpb25pbmcuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJ
bnRSZWN0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJIaXRUZXN0
UmVzdWx0LmgiCkBAIC02MTYsNCArNjE3LDI4IEBAIHZvaWQgQ2hyb21lQ2xpZW50OjpjYW5jZWxH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWUqIGZyCiAg
ICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHdlYlZpZXcsICJnZW9sb2NhdGlvbi1wb2xpY3ktZGVj
aXNpb24tY2FuY2VsbGVkIiwgd2ViRnJhbWUpOwogfQogCisjaWYgRU5BQkxFKFZJREVPKQorCiti
b29sIENocm9tZUNsaWVudDo6c3VwcG9ydHNGdWxsc2NyZWVuRm9yTm9kZShjb25zdCBOb2RlKiBu
b2RlKQoreworICAgIHJldHVybiBub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dmlkZW9UYWcp
OworfQorCit2b2lkIENocm9tZUNsaWVudDo6ZW50ZXJGdWxsc2NyZWVuRm9yTm9kZShOb2RlKiBu
b2RlKQoreworICAgIFdlYkNvcmU6OkZyYW1lKiBmcmFtZSA9IG5vZGUtPmRvY3VtZW50KCktPmZy
YW1lKCk7CisgICAgV2ViS2l0V2ViRnJhbWUqIHdlYkZyYW1lID0ga2l0KGZyYW1lKTsKKyAgICBX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gZ2V0Vmlld0Zyb21GcmFtZSh3ZWJGcmFtZSk7CisgICAg
d2Via2l0X3dlYl92aWV3X2VudGVyX2Z1bGxzY3JlZW4od2ViVmlldywgbm9kZSk7Cit9CisKK3Zv
aWQgQ2hyb21lQ2xpZW50OjpleGl0RnVsbHNjcmVlbkZvck5vZGUoTm9kZSogbm9kZSkKK3sKKyAg
ICBXZWJDb3JlOjpGcmFtZSogZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpOworICAg
IFdlYktpdFdlYkZyYW1lKiB3ZWJGcmFtZSA9IGtpdChmcmFtZSk7CisgICAgV2ViS2l0V2ViVmll
dyogd2ViVmlldyA9IGdldFZpZXdGcm9tRnJhbWUod2ViRnJhbWUpOworICAgIHdlYmtpdF93ZWJf
dmlld19leGl0X2Z1bGxzY3JlZW4od2ViVmlldyk7Cit9CisjZW5kaWYKKwogfQpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaCBiL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKaW5kZXggY2U1YzVhNy4uYTFlMjJl
NyAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsu
aAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCkBAIC0x
MjIsNiArMTIyLDEyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFsIHZvaWQg
cmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKFdlYkNvcmU6OkZyYW1lKiwgV2Vi
Q29yZTo6R2VvbG9jYXRpb24qKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGNhbmNlbEdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RGb3JGcmFtZShXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6Okdl
b2xvY2F0aW9uKik7CiAKKyNpZiBFTkFCTEUoVklERU8pCisgICAgICAgIHZpcnR1YWwgYm9vbCBz
dXBwb3J0c0Z1bGxzY3JlZW5Gb3JOb2RlKGNvbnN0IFdlYkNvcmU6Ok5vZGUqKTsKKyAgICAgICAg
dmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbkZvck5vZGUoV2ViQ29yZTo6Tm9kZSopOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKFdlYkNvcmU6Ok5vZGUqKTsK
KyNlbmRpZgorCiAgICAgcHJpdmF0ZToKICAgICAgICAgV2ViS2l0V2ViVmlldyogbV93ZWJWaWV3
OwogICAgICAgICBXZWJDb3JlOjpLVVJMIG1faG92ZXJlZExpbmtVUkw7CmRpZmYgLS1naXQgYS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwIGIv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTNlMGMxCi0tLSAvZGV2L251bGwK
KysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
LmNwcApAQCAtMCwwICsxLDU4MCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlh
IFMuTAorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU8p
CisKKyNpbmNsdWRlICJGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmgiCisKKyNpbmNsdWRlICJN
ZWRpYVBsYXllci5oIgorCisjaW5jbHVkZSA8Z2RrL2dkay5oPgorI2luY2x1ZGUgPGdkay9nZGtr
ZXlzeW1zLmg+CisjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNsdWRlIDxnc3QvZ3N0
Lmg+CisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKKyNkZWZpbmUgSFVEX0FVVE9fSElERV9JTlRFUlZBTCAzMDAw
IC8vIDMgc2Vjb25kcworI2RlZmluZSBQUk9HUkVTU19CQVJfVVBEQVRFX0lOVEVSVkFMIDE1MCAv
LyAxNTBtcworI2RlZmluZSBWT0xVTUVfVVBfT0ZGU0VUIDAuMDUgLy8gNSUKKyNkZWZpbmUgVk9M
VU1FX0RPV05fT0ZGU0VUIDAuMDUgLy8gNSUKKworc3RhdGljIGdib29sZWFuIGhpZGVIdWRDYWxs
YmFjayhncG9pbnRlciBkYXRhKQoreworICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIGNv
bnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0PEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqPihk
YXRhKTsKKyAgICBjb250cm9sbGVyLT5oaWRlSHVkKCk7CisgICAgcmV0dXJuIEZBTFNFOworfQor
CitzdGF0aWMgZ2Jvb2xlYW4gb25GdWxsc2NyZWVuR3RrTW90aW9uTm90aWZ5RXZlbnQoR3RrV2lk
Z2V0KiB3aWRnZXQsIEdka0V2ZW50TW90aW9uKiBldmVudCwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAg
ICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBjb250cm9sbGVyID0gcmVpbnRlcnByZXRfY2Fz
dDxGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKj4oZGF0YSk7CisgICAgY29udHJvbGxlci0+c2hv
d0h1ZCh0cnVlKTsKKyAgICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIHZvaWQgb25GdWxsc2Ny
ZWVuR3RrQWN0aXZlTm90aWZpY2F0aW9uKEd0a1dpZGdldCogd2lkZ2V0LCBHUGFyYW1TcGVjKiBw
cm9wZXJ0eSwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
KiBjb250cm9sbGVyID0gcmVpbnRlcnByZXRfY2FzdDxGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
Kj4oZGF0YSk7CisgICAgaWYgKCFndGtfd2luZG93X2lzX2FjdGl2ZShHVEtfV0lORE9XKHdpZGdl
dCkpKQorICAgICAgICBjb250cm9sbGVyLT5oaWRlSHVkKCk7Cit9CisKK3N0YXRpYyBnYm9vbGVh
biBvbkZ1bGxzY3JlZW5HdGtDb25maWd1cmVFdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZl
bnRDb25maWd1cmUqIGV2ZW50LCBncG9pbnRlciBkYXRhKQoreworICAgIEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0PEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXIqPihkYXRhKTsKKyAgICBjb250cm9sbGVyLT5ndGtDb25maWd1cmUoZXZlbnQp
OworICAgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgdm9pZCBvbkZ1bGxzY3JlZW5HdGtEZXN0
cm95KEd0a1dpZGdldCogd2lkZ2V0LCBncG9pbnRlciBkYXRhKQoreworICAgIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0PEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXIqPihkYXRhKTsKKyAgICBjb250cm9sbGVyLT5leGl0RnVsbHNjcmVlbigp
OworfQorCitzdGF0aWMgdm9pZCB0b2dnbGVQbGF5UGF1c2VBY3RpdmF0ZWQoR3RrQWN0aW9uKiBh
Y3Rpb24sIGdwb2ludGVyIGRhdGEpCit7CisgICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciog
Y29udHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcio+
KGRhdGEpOworICAgIGNvbnRyb2xsZXItPnRvZ2dsZVBsYXkoKTsKK30KKworc3RhdGljIHZvaWQg
ZXhpdEZ1bGxzY3JlZW5BY3RpdmF0ZWQoR3RrQWN0aW9uKiBhY3Rpb24sIGdwb2ludGVyIGRhdGEp
Cit7CisgICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogY29udHJvbGxlciA9IHJlaW50ZXJw
cmV0X2Nhc3Q8RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcio+KGRhdGEpOworICAgIGNvbnRyb2xs
ZXItPmV4aXRPblVzZXJSZXF1ZXN0KCk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiBwcm9ncmVzc0Jh
clVwZGF0ZUNhbGxiYWNrKGdwb2ludGVyIGRhdGEpCit7CisgICAgRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlciogY29udHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlcio+KGRhdGEpOworICAgIHJldHVybiBjb250cm9sbGVyLT51cGRhdGVIdWRQcm9ncmVz
c0JhcigpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gdGltZVNjYWxlQnV0dG9uUHJlc3NlZChHdGtX
aWRnZXQqIHdpZGdldCwgR2RrRXZlbnRCdXR0b24qIGV2ZW50LCBncG9pbnRlciBkYXRhKQorewor
ICAgIGlmIChldmVudC0+dHlwZSAhPSBHREtfQlVUVE9OX1BSRVNTKQorICAgICAgICByZXR1cm4g
RkFMU0U7CisKKyAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBjb250cm9sbGVyID0gcmVp
bnRlcnByZXRfY2FzdDxGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKj4oZGF0YSk7CisgICAgY29u
dHJvbGxlci0+YmVnaW5TZWVrKCk7CisgICAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgZ2Jv
b2xlYW4gdGltZVNjYWxlQnV0dG9uUmVsZWFzZWQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50
QnV0dG9uKiBldmVudCwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyKiBjb250cm9sbGVyID0gcmVpbnRlcnByZXRfY2FzdDxGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyKj4oZGF0YSk7CisgICAgY29udHJvbGxlci0+ZW5kU2VlaygpOworICAgIHJldHVybiBG
QUxTRTsKK30KKworc3RhdGljIHZvaWQgdGltZVNjYWxlVmFsdWVDaGFuZ2VkKEd0a1dpZGdldCog
d2lkZ2V0LCBncG9pbnRlciBkYXRhKQoreworICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIq
IGNvbnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0PEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIq
PihkYXRhKTsKKyAgICBjb250cm9sbGVyLT5kb1NlZWsoKTsKK30KKworc3RhdGljIHZvaWQgdm9s
dW1lVmFsdWVDaGFuZ2VkKEd0a1NjYWxlQnV0dG9uICpidXR0b24sIGdkb3VibGUgdmFsdWUsIGdw
b2ludGVyIGRhdGEpCit7CisgICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogY29udHJvbGxl
ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcio+KGRhdGEpOwor
ICAgIGNvbnRyb2xsZXItPnNldFZvbHVtZShzdGF0aWNfY2FzdDxmbG9hdD4odmFsdWUpKTsKK30K
Kwordm9pZCBwbGF5ZXJWb2x1bWVDaGFuZ2VkQ2FsbGJhY2soR09iamVjdCAqZWxlbWVudCwgR1Bh
cmFtU3BlYyAqcHNwZWMsIGdwb2ludGVyIGRhdGEpCit7CisgICAgRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlciogY29udHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlcio+KGRhdGEpOworICAgIGNvbnRyb2xsZXItPnZvbHVtZUNoYW5nZWQoKTsKK30KKwor
dm9pZCBwbGF5ZXJNdXRlQ2hhbmdlZENhbGxiYWNrKEdPYmplY3QgKmVsZW1lbnQsIEdQYXJhbVNw
ZWMgKnBzcGVjLCBncG9pbnRlciBkYXRhKQoreworICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXIqIGNvbnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0PEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXIqPihkYXRhKTsKKyAgICBjb250cm9sbGVyLT5tdXRlQ2hhbmdlZCgpOworfQorCitGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKCkKKyAgICA6IG1f
aHVkVGltZW91dElkKDApCisgICAgLCBtX3Byb2dyZXNzQmFyVXBkYXRlSWQoMCkKKyAgICAsIG1f
c2Vla0xvY2soZmFsc2UpCisgICAgLCBtX3dpbmRvdygwKQorICAgICwgbV9odWRXaW5kb3coMCkK
K3sKK30KKworRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6fkZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXIoKQoreworICAgIGV4aXRGdWxsc2NyZWVuKCk7Cit9CisKK3ZvaWQgRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlcjo6c2V0TWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxl
bWVudCkKK3sKKyAgICBpZiAobWVkaWFFbGVtZW50ID09IG1fbWVkaWFFbGVtZW50KQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX21lZGlhRWxlbWVudCA9IG1lZGlhRWxlbWVudDsKKyAgICBpZiAo
IW1fbWVkaWFFbGVtZW50KSB7CisgICAgICAgIC8vIENhbid0IGRvIGZ1bGwtc2NyZWVuLCBqdXN0
IGdldCBvdXQKKyAgICAgICAgZXhpdEZ1bGxzY3JlZW4oKTsKKyAgICB9Cit9CisKK3ZvaWQgRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlcjo6Z3RrQ29uZmlndXJlKEdka0V2ZW50Q29uZmlndXJlKiBl
dmVudCkKK3sKKyAgICB1cGRhdGVIdWRQb3NpdGlvbigpOworfQorCit2b2lkIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXI6OnNob3dIdWQoYm9vbCBhdXRvSGlkZSkKK3sKKyAgICBpZiAoIW1faHVk
V2luZG93KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9odWRUaW1lb3V0SWQpIHsKKyAg
ICAgICAgZ19zb3VyY2VfcmVtb3ZlKG1faHVkVGltZW91dElkKTsKKyAgICAgICAgbV9odWRUaW1l
b3V0SWQgPSAwOworICAgIH0KKworICAgIC8vIFNob3cgdGhlIGN1cnNvci4KKyAgICBHZGtXaW5k
b3cqIHdpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyhtX3dpbmRvdyk7CisgICAgZ2RrX3dp
bmRvd19zZXRfY3Vyc29yKHdpbmRvdywgbV9jdXJzb3IuZ2V0KCkpOworCisgICAgLy8gVXBkYXRl
IHRoZSBwcm9ncmVzcyBiYXIgaW1tZWRpYXRlbHkgYmVmb3JlIHNob3dpbmcgdGhlIHdpbmRvdy4K
KyAgICB1cGRhdGVIdWRQcm9ncmVzc0JhcigpOworICAgIGd0a193aWRnZXRfc2hvd19hbGwobV9o
dWRXaW5kb3cpOworICAgIHVwZGF0ZUh1ZFBvc2l0aW9uKCk7CisKKyAgICAvLyBTdGFydCBwZXJp
b2RpYyB1cGRhdGVzIG9mIHRoZSBwcm9ncmVzcyBiYXIuCisgICAgaWYgKCFtX3Byb2dyZXNzQmFy
VXBkYXRlSWQpCisgICAgICAgIG1fcHJvZ3Jlc3NCYXJVcGRhdGVJZCA9IGdfdGltZW91dF9hZGQo
UFJPR1JFU1NfQkFSX1VQREFURV9JTlRFUlZBTCwgcHJvZ3Jlc3NCYXJVcGRhdGVDYWxsYmFjaywg
dGhpcyk7CisKKyAgICAvLyBIaWRlIHRoZSBodWQgaW4gZmV3IHNlY29uZHMsIGlmIHJlcXVlc3Rl
ZC4KKyAgICBpZiAoYXV0b0hpZGUpCisgICAgICAgIG1faHVkVGltZW91dElkID0gZ190aW1lb3V0
X2FkZChIVURfQVVUT19ISURFX0lOVEVSVkFMLCBoaWRlSHVkQ2FsbGJhY2ssIHRoaXMpOworfQor
Cit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmhpZGVIdWQoKQoreworICAgIGlmICht
X2h1ZFRpbWVvdXRJZCkgeworICAgICAgICBnX3NvdXJjZV9yZW1vdmUobV9odWRUaW1lb3V0SWQp
OworICAgICAgICBtX2h1ZFRpbWVvdXRJZCA9IDA7CisgICAgfQorCisgICAgaWYgKCFtX2h1ZFdp
bmRvdykKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gS2VlcCB0aGUgaHVkIHZpc2libGUgaWYg
YSBzZWVrIGlzIGluIHByb2dyZXNzIG9yIGlmIHRoZSB2b2x1bWUKKyAgICAvLyBwb3B1cCBpcyB2
aXNpYmxlLgorICAgIEd0a1dpZGdldCogdm9sdW1lUG9wdXAgPSBndGtfc2NhbGVfYnV0dG9uX2dl
dF9wb3B1cChHVEtfU0NBTEVfQlVUVE9OKG1fdm9sdW1lQnV0dG9uKSk7CisgICAgaWYgKG1fc2Vl
a0xvY2sgfHwgZ3RrX3dpZGdldF9nZXRfdmlzaWJsZSh2b2x1bWVQb3B1cCkpIHsKKyAgICAgICAg
c2hvd0h1ZCh0cnVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEdka1dpbmRvdyog
d2luZG93ID0gZ3RrX3dpZGdldF9nZXRfd2luZG93KG1fd2luZG93KTsKKyAgICBHZGtDdXJzb3Iq
IGN1cnNvciA9IGdka19jdXJzb3JfbmV3KEdES19CTEFOS19DVVJTT1IpOworICAgIGdka193aW5k
b3dfc2V0X2N1cnNvcih3aW5kb3csIGN1cnNvcik7CisKKyAgICBndGtfd2lkZ2V0X2hpZGVfYWxs
KG1faHVkV2luZG93KTsKKworICAgIGlmIChtX3Byb2dyZXNzQmFyVXBkYXRlSWQpIHsKKyAgICAg
ICAgZ19zb3VyY2VfcmVtb3ZlKG1fcHJvZ3Jlc3NCYXJVcGRhdGVJZCk7CisgICAgICAgIG1fcHJv
Z3Jlc3NCYXJVcGRhdGVJZCA9IDA7CisgICAgfQorfQorCitzdGF0aWMgZ2Jvb2xlYW4gb25GdWxs
c2NyZWVuR3RrS2V5UHJlc3NFdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRLZXkqIGV2
ZW50LCBncG9pbnRlciBkYXRhKQoreworICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIGNv
bnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0PEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqPihk
YXRhKTsKKworICAgIHN3aXRjaCAoZXZlbnQtPmtleXZhbCkgeworICAgIGNhc2UgR0RLX0VzY2Fw
ZToKKyAgICBjYXNlICdmJzoKKyAgICBjYXNlICdGJzoKKyAgICAgICAgY29udHJvbGxlci0+ZXhp
dE9uVXNlclJlcXVlc3QoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHREtfc3BhY2U6Cisg
ICAgY2FzZSBHREtfUmV0dXJuOgorICAgICAgICBjb250cm9sbGVyLT50b2dnbGVQbGF5KCk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgR0RLX1VwOgorICAgICAgICAvLyB2b2x1bWUgdXAKKyAg
ICAgICAgY29udHJvbGxlci0+c2V0Vm9sdW1lKGNvbnRyb2xsZXItPnZvbHVtZSgpICsgVk9MVU1F
X1VQX09GRlNFVCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR0RLX0Rvd246CisgICAgICAg
IC8vIHZvbHVtZSBkb3duCisgICAgICAgIGNvbnRyb2xsZXItPnNldFZvbHVtZShjb250cm9sbGVy
LT52b2x1bWUoKSAtIFZPTFVNRV9ET1dOX09GRlNFVCk7CisgICAgICAgIGJyZWFrOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBUUlVFOworfQorCisK
K3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZW50ZXJGdWxsc2NyZWVuKCkKK3sKKyAg
ICBpZiAoIW1fbWVkaWFFbGVtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9tZWRp
YUVsZW1lbnQtPnBsYXRmb3JtTWVkaWEoKS50eXBlICE9IFdlYkNvcmU6OlBsYXRmb3JtTWVkaWE6
OkdTdHJlYW1lckdXb3JsZFR5cGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZ3N0cmVhbWVy
R1dvcmxkID0gbV9tZWRpYUVsZW1lbnQtPnBsYXRmb3JtTWVkaWEoKS5tZWRpYS5nc3RyZWFtZXJH
V29ybGQ7CisgICAgaWYgKCFtX2dzdHJlYW1lckdXb3JsZC0+ZW50ZXJGdWxsc2NyZWVuKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fd2luZG93ID0gcmVpbnRlcnByZXRfY2FzdDxHdGtXaWRn
ZXQqPihtX2dzdHJlYW1lckdXb3JsZC0+cGxhdGZvcm1WaWRlb1dpbmRvdygpLT53aW5kb3coKSk7
CisKKyAgICBHc3RFbGVtZW50KiBwaXBlbGluZSA9IG1fZ3N0cmVhbWVyR1dvcmxkLT5waXBlbGlu
ZSgpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QocGlwZWxpbmUsICJub3RpZnk6OnZvbHVtZSIsIEdf
Q0FMTEJBQ0socGxheWVyVm9sdW1lQ2hhbmdlZENhbGxiYWNrKSwgdGhpcyk7CisgICAgZ19zaWdu
YWxfY29ubmVjdChwaXBlbGluZSwgIm5vdGlmeTo6bXV0ZSIsIEdfQ0FMTEJBQ0socGxheWVyTXV0
ZUNoYW5nZWRDYWxsYmFjayksIHRoaXMpOworCisgICAgaWYgKCFtX2h1ZFdpbmRvdykKKyAgICAg
ICAgY3JlYXRlSHVkKCk7CisKKyAgICAvLyBFbnN1cmUgYmxhY2sgYmFja2dyb3VuZC4KKyAgICBH
ZGtDb2xvciBjb2xvcjsKKyAgICBnZGtfY29sb3JfcGFyc2UoImJsYWNrIiwgJmNvbG9yKTsKKyAg
ICBndGtfd2lkZ2V0X21vZGlmeV9iZyhtX3dpbmRvdywgR1RLX1NUQVRFX05PUk1BTCwgJmNvbG9y
KTsKKyAgICBndGtfd2lkZ2V0X3NldF9kb3VibGVfYnVmZmVyZWQobV93aW5kb3csIEZBTFNFKTsK
KworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93aW5kb3csICJrZXktcHJlc3MtZXZlbnQiLCBHX0NB
TExCQUNLKG9uRnVsbHNjcmVlbkd0a0tleVByZXNzRXZlbnQpLCB0aGlzKTsKKyAgICBnX3NpZ25h
bF9jb25uZWN0KG1fd2luZG93LCAiZGVzdHJveSIsIEdfQ0FMTEJBQ0sob25GdWxsc2NyZWVuR3Rr
RGVzdHJveSksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93aW5kb3csICJub3RpZnk6
OmlzLWFjdGl2ZSIsIEdfQ0FMTEJBQ0sob25GdWxsc2NyZWVuR3RrQWN0aXZlTm90aWZpY2F0aW9u
KSwgdGhpcyk7CisKKworICAgIGd0a193aWRnZXRfc2hvd19hbGwobV93aW5kb3cpOworCisgICAg
R2RrV2luZG93KiB3aW5kb3cgPSBndGtfd2lkZ2V0X2dldF93aW5kb3cobV93aW5kb3cpOworICAg
IEdka0N1cnNvciogY3Vyc29yID0gZ2RrX2N1cnNvcl9uZXcoR0RLX0JMQU5LX0NVUlNPUik7Cisg
ICAgbV9jdXJzb3IgPSBnZGtfd2luZG93X2dldF9jdXJzb3Iod2luZG93KTsKKyAgICBnZGtfd2lu
ZG93X3NldF9jdXJzb3Iod2luZG93LCBjdXJzb3IpOworICAgIGdka19jdXJzb3JfdW5yZWYoY3Vy
c29yKTsKKworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93aW5kb3csICJtb3Rpb24tbm90aWZ5LWV2
ZW50IiwgR19DQUxMQkFDSyhvbkZ1bGxzY3JlZW5HdGtNb3Rpb25Ob3RpZnlFdmVudCksIHRoaXMp
OworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93aW5kb3csICJjb25maWd1cmUtZXZlbnQiLCBHX0NB
TExCQUNLKG9uRnVsbHNjcmVlbkd0a0NvbmZpZ3VyZUV2ZW50KSwgdGhpcyk7CisKKyAgICBndGtf
d2luZG93X2Z1bGxzY3JlZW4oR1RLX1dJTkRPVyhtX3dpbmRvdykpOworICAgIHNob3dIdWQodHJ1
ZSk7Cit9CisKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dXBkYXRlSHVkUG9zaXRp
b24oKQoreworICAgIGlmICghbV9odWRXaW5kb3cpCisgICAgICAgIHJldHVybjsKKworICAgIC8v
IEdldCB0aGUgc2NyZWVuIHJlY3RhbmdsZS4KKyAgICBHZGtTY3JlZW4qIHNjcmVlbiA9IGd0a193
aW5kb3dfZ2V0X3NjcmVlbihHVEtfV0lORE9XKG1fd2luZG93KSk7CisgICAgR2RrV2luZG93KiB3
aW5kb3cgPSBndGtfd2lkZ2V0X2dldF93aW5kb3cobV93aW5kb3cpOworICAgIEdka1JlY3Rhbmds
ZSBmdWxsc2NyZWVuUmVjdGFuZ2xlOworICAgIGdka19zY3JlZW5fZ2V0X21vbml0b3JfZ2VvbWV0
cnkoc2NyZWVuLCBnZGtfc2NyZWVuX2dldF9tb25pdG9yX2F0X3dpbmRvdyhzY3JlZW4sIHdpbmRv
dyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZnVsbHNjcmVlblJlY3Rh
bmdsZSk7CisKKyAgICAvLyBHZXQgdGhlIHBvcHVwIHdpbmRvdyBzaXplLgorICAgIGludCBodWRX
aWR0aCwgaHVkSGVpZ2h0OworICAgIGd0a193aW5kb3dfZ2V0X3NpemUoR1RLX1dJTkRPVyhtX2h1
ZFdpbmRvdyksICZodWRXaWR0aCwgJmh1ZEhlaWdodCk7CisKKyAgICAvLyBSZXNpemUgdGhlIGh1
ZCB0byB0aGUgZnVsbCB3aWR0aCBvZiB0aGUgc2NyZWVuLgorICAgIGd0a193aW5kb3dfcmVzaXpl
KEdUS19XSU5ET1cobV9odWRXaW5kb3cpLCBmdWxsc2NyZWVuUmVjdGFuZ2xlLndpZHRoLCBodWRI
ZWlnaHQpOworCisgICAgLy8gTW92ZSB0aGUgaHVkIHRvIHRoZSBib3R0b20gb2YgdGhlIHNjcmVl
bi4KKyAgICBndGtfd2luZG93X21vdmUoR1RLX1dJTkRPVyhtX2h1ZFdpbmRvdyksIGZ1bGxzY3Jl
ZW5SZWN0YW5nbGUueCwKKyAgICAgICAgICAgICAgICAgICAgZnVsbHNjcmVlblJlY3RhbmdsZS5o
ZWlnaHQgKyBmdWxsc2NyZWVuUmVjdGFuZ2xlLnkgLSBodWRIZWlnaHQpOworfQorCit2b2lkIEZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmV4aXRPblVzZXJSZXF1ZXN0KCkKK3sKKyAgICBtX21l
ZGlhRWxlbWVudC0+ZXhpdEZ1bGxzY3JlZW4oKTsKK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyOjpleGl0RnVsbHNjcmVlbigpCit7CisgICAgaWYgKCFtX2h1ZFdpbmRvdykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5j
KG1fd2luZG93LCByZWludGVycHJldF9jYXN0PHZvaWQqPihvbkZ1bGxzY3JlZW5HdGtLZXlQcmVz
c0V2ZW50KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odGhpcykpOworICAgIGdfc2lnbmFsX2hh
bmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhtX3dpbmRvdywgcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4ob25GdWxsc2NyZWVuR3RrRGVzdHJveSksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHRoaXMp
KTsKKyAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMobV93aW5kb3csIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9uRnVsbHNjcmVlbkd0a01vdGlvbk5vdGlmeUV2ZW50KSwg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odGhpcykpOworICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rp
c2Nvbm5lY3RfYnlfZnVuYyhtX3dpbmRvdywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob25GdWxs
c2NyZWVuR3RrQ29uZmlndXJlRXZlbnQpLCByZWludGVycHJldF9jYXN0PHZvaWQqPih0aGlzKSk7
CisKKyAgICBHc3RFbGVtZW50KiBwaXBlbGluZSA9IG1fbWVkaWFFbGVtZW50LT5wbGF0Zm9ybU1l
ZGlhKCkubWVkaWEuZ3N0cmVhbWVyR1dvcmxkLT5waXBlbGluZSgpOworICAgIGdfc2lnbmFsX2hh
bmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhwaXBlbGluZSwgcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4ocGxheWVyVm9sdW1lQ2hhbmdlZENhbGxiYWNrKSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
dGhpcykpOworICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhwaXBlbGlu
ZSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocGxheWVyTXV0ZUNoYW5nZWRDYWxsYmFjayksIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHRoaXMpKTsKKworICAgIGlmIChtX2h1ZFRpbWVvdXRJZCkg
eworICAgICAgICBnX3NvdXJjZV9yZW1vdmUobV9odWRUaW1lb3V0SWQpOworICAgICAgICBtX2h1
ZFRpbWVvdXRJZCA9IDA7CisgICAgfQorCisgICAgaWYgKG1fcHJvZ3Jlc3NCYXJVcGRhdGVJZCkg
eworICAgICAgICBnX3NvdXJjZV9yZW1vdmUobV9wcm9ncmVzc0JhclVwZGF0ZUlkKTsKKyAgICAg
ICAgbV9wcm9ncmVzc0JhclVwZGF0ZUlkID0gMDsKKyAgICB9CisKKyAgICBpZiAobV9tZWRpYUVs
ZW1lbnQtPnBsYXRmb3JtTWVkaWEoKS50eXBlID09IFdlYkNvcmU6OlBsYXRmb3JtTWVkaWE6OkdT
dHJlYW1lckdXb3JsZFR5cGUpCisgICAgICAgIG1fbWVkaWFFbGVtZW50LT5wbGF0Zm9ybU1lZGlh
KCkubWVkaWEuZ3N0cmVhbWVyR1dvcmxkLT5leGl0RnVsbHNjcmVlbigpOworCisgICAgZ3RrX3dp
ZGdldF9oaWRlX2FsbChtX3dpbmRvdyk7CisKKyAgICBndGtfd2lkZ2V0X2Rlc3Ryb3kobV9odWRX
aW5kb3cpOworICAgIG1faHVkV2luZG93ID0gMDsKK30KKworYm9vbCBGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyOjpjYW5QbGF5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnQg
JiYgbV9tZWRpYUVsZW1lbnQtPmNhblBsYXkoKTsKK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyOjpwbGF5KCkKK3sKKyAgICBpZiAobV9tZWRpYUVsZW1lbnQpCisgICAgICAgIG1f
bWVkaWFFbGVtZW50LT5wbGF5KG1fbWVkaWFFbGVtZW50LT5wcm9jZXNzaW5nVXNlckdlc3R1cmUo
KSk7CisKKyAgICBwbGF5U3RhdGVDaGFuZ2VkKCk7CisgICAgc2hvd0h1ZCh0cnVlKTsKK30KKwor
dm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpwYXVzZSgpCit7CisgICAgaWYgKG1fbWVk
aWFFbGVtZW50KQorICAgICAgICBtX21lZGlhRWxlbWVudC0+cGF1c2UobV9tZWRpYUVsZW1lbnQt
PnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKTsKKworICAgIHBsYXlTdGF0ZUNoYW5nZWQoKTsKKyAg
ICBzaG93SHVkKGZhbHNlKTsKK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpw
bGF5U3RhdGVDaGFuZ2VkKCkKK3sKKyAgICBpZiAoY2FuUGxheSgpKQorICAgICAgICBnX29iamVj
dF9zZXQobV9wbGF5UGF1c2VBY3Rpb24sICJ0b29sdGlwIiwgXygiUGxheSIpLCAiaWNvbi1uYW1l
IiwgIm1lZGlhLXBsYXliYWNrLXN0YXJ0LXN5bWJvbGljIiwgTlVMTCk7CisgICAgZWxzZQorICAg
ICAgICBnX29iamVjdF9zZXQobV9wbGF5UGF1c2VBY3Rpb24sICJ0b29sdGlwIiwgXygiUGF1c2Ui
KSwgImljb24tbmFtZSIsICJtZWRpYS1wbGF5YmFjay1wYXVzZS1zeW1ib2xpYyIsIE5VTEwpOwor
fQorCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnRvZ2dsZVBsYXkoKQoreworICAg
IGlmIChjYW5QbGF5KCkpCisgICAgICAgIHBsYXkoKTsKKyAgICBlbHNlCisgICAgICAgIHBhdXNl
KCk7Cit9CisKK2Zsb2F0IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnZvbHVtZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50ID8gbV9tZWRpYUVsZW1lbnQtPnZvbHVtZSgp
IDogMDsKK30KKworYm9vbCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjptdXRlZCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50ID8gbV9tZWRpYUVsZW1lbnQtPm11dGVkKCkg
OiBmYWxzZTsKK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpzZXRWb2x1bWUo
ZmxvYXQgdm9sdW1lKQoreworICAgIGlmICh2b2x1bWUgPCAwLjAgfHwgdm9sdW1lID4gMS4wKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9tZWRpYUVsZW1lbnQpIHsKKyAgICAgICAgRXhj
ZXB0aW9uQ29kZSBlYzsKKyAgICAgICAgbV9tZWRpYUVsZW1lbnQtPnNldFZvbHVtZSh2b2x1bWUs
IGVjKTsKKyAgICB9Cit9CisKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dm9sdW1l
Q2hhbmdlZCgpCit7CisgICAgZ19zaWduYWxfaGFuZGxlcl9ibG9jayhtX3ZvbHVtZUJ1dHRvbiwg
bV92b2x1bWVVcGRhdGVJZCk7CisgICAgZ3RrX3NjYWxlX2J1dHRvbl9zZXRfdmFsdWUoR1RLX1ND
QUxFX0JVVFRPTihtX3ZvbHVtZUJ1dHRvbiksIHZvbHVtZSgpKTsKKyAgICBnX3NpZ25hbF9oYW5k
bGVyX3VuYmxvY2sobV92b2x1bWVCdXR0b24sIG1fdm9sdW1lVXBkYXRlSWQpOworfQorCit2b2lk
IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6Om11dGVDaGFuZ2VkKCkKK3sKKyAgICBnX3NpZ25h
bF9oYW5kbGVyX2Jsb2NrKG1fdm9sdW1lQnV0dG9uLCBtX3ZvbHVtZVVwZGF0ZUlkKTsKKyAgICBn
dGtfc2NhbGVfYnV0dG9uX3NldF92YWx1ZShHVEtfU0NBTEVfQlVUVE9OKG1fdm9sdW1lQnV0dG9u
KSwgbXV0ZWQoKSA/IDAgOiB2b2x1bWUoKSk7CisgICAgZ19zaWduYWxfaGFuZGxlcl91bmJsb2Nr
KG1fdm9sdW1lQnV0dG9uLCBtX3ZvbHVtZVVwZGF0ZUlkKTsKK30KKworZmxvYXQgRnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlcjo6Y3VycmVudFRpbWUoKSBjb25zdAoreworICAgIHJldHVybiBtX21l
ZGlhRWxlbWVudCA/IG1fbWVkaWFFbGVtZW50LT5jdXJyZW50VGltZSgpIDogMDsKK30KKwordm9p
ZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpzZXRDdXJyZW50VGltZShmbG9hdCB2YWx1ZSkK
K3sKKyAgICBpZiAobV9tZWRpYUVsZW1lbnQpIHsKKyAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsK
KyAgICAgICAgbV9tZWRpYUVsZW1lbnQtPnNldEN1cnJlbnRUaW1lKHZhbHVlLCBlYyk7CisgICAg
fQorfQorCitmbG9hdCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpkdXJhdGlvbigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50ID8gbV9tZWRpYUVsZW1lbnQtPmR1cmF0aW9u
KCkgOiAwOworfQorCitmbG9hdCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpwZXJjZW50TG9h
ZGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnQgPyBtX21lZGlhRWxlbWVu
dC0+cGVyY2VudExvYWRlZCgpIDogMDsKK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyOjpiZWdpblNlZWsoKQoreworICAgIG1fc2Vla0xvY2sgPSB0cnVlOworCisgICAgaWYgKG1f
bWVkaWFFbGVtZW50KQorICAgICAgICBtX21lZGlhRWxlbWVudC0+YmVnaW5TY3J1YmJpbmcoKTsK
K30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpkb1NlZWsoKQoreworICAgIGlm
ICghbV9zZWVrTG9jaykKKyAgICAgICAgIHJldHVybjsKKworICAgIHNldEN1cnJlbnRUaW1lKGd0
a19yYW5nZV9nZXRfdmFsdWUoR1RLX1JBTkdFKG1fdGltZUhTY2FsZSkpKmR1cmF0aW9uKCkgLyAx
MDApOworfQorCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmVuZFNlZWsoKQorewor
ICAgIGlmIChtX21lZGlhRWxlbWVudCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnQtPmVuZFNjcnVi
YmluZygpOworCisgICAgbV9zZWVrTG9jayA9IGZhbHNlOworfQorCitzdGF0aWMgU3RyaW5nIHRp
bWVUb1N0cmluZyhmbG9hdCB0aW1lKQoreworICAgIGlmICghaXNmaW5pdGUodGltZSkpCisgICAg
ICAgIHRpbWUgPSAwOworICAgIGludCBzZWNvbmRzID0gZmFic2YodGltZSk7CisgICAgaW50IGhv
dXJzID0gc2Vjb25kcyAvICg2MCAqIDYwKTsKKyAgICBpbnQgbWludXRlcyA9IChzZWNvbmRzIC8g
NjApICUgNjA7CisgICAgc2Vjb25kcyAlPSA2MDsKKworICAgIGlmIChob3VycykgeworICAgICAg
ICBpZiAoaG91cnMgPiA5KQorICAgICAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlcyUw
MmQ6JTAyZDolMDJkIiwgKHRpbWUgPCAwID8gIi0iIDogIiIpLCBob3VycywgbWludXRlcywgc2Vj
b25kcyk7CisgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJXMlMDFkOiUwMmQ6JTAyZCIs
ICh0aW1lIDwgMCA/ICItIiA6ICIiKSwgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpOworICAgIH0K
KworICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJXMlMDJkOiUwMmQiLCAodGltZSA8IDAgPyAi
LSIgOiAiIiksIG1pbnV0ZXMsIHNlY29uZHMpOworfQorCitnYm9vbGVhbiBGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyOjp1cGRhdGVIdWRQcm9ncmVzc0JhcigpCit7CisgICAgZmxvYXQgbWVkaWFE
dXJhdGlvbihkdXJhdGlvbigpKTsKKyAgICBmbG9hdCBtZWRpYVBvc2l0aW9uKGN1cnJlbnRUaW1l
KCkpOworCisgICAgaWYgKCFtX3NlZWtMb2NrKSB7CisgICAgICAgIGdkb3VibGUgdmFsdWUgPSAw
LjA7CisKKyAgICAgICAgaWYgKG1lZGlhUG9zaXRpb24gJiYgbWVkaWFEdXJhdGlvbikKKyAgICAg
ICAgICAgIHZhbHVlID0gKG1lZGlhUG9zaXRpb24gKiAxMDAuMCkgLyBtZWRpYUR1cmF0aW9uOwor
CisgICAgICAgIEd0a0FkanVzdG1lbnQqIGFkanVzdG1lbnQgPSBndGtfcmFuZ2VfZ2V0X2FkanVz
dG1lbnQoR1RLX1JBTkdFKG1fdGltZUhTY2FsZSkpOworICAgICAgICBndGtfYWRqdXN0bWVudF9z
ZXRfdmFsdWUoYWRqdXN0bWVudCwgdmFsdWUpOworICAgIH0KKworICAgIGd0a19yYW5nZV9zZXRf
ZmlsbF9sZXZlbChHVEtfUkFOR0UobV90aW1lSFNjYWxlKSwgcGVyY2VudExvYWRlZCgpKiAxMDAp
OworCisgICAgZ2NoYXIqIGxhYmVsID0gZ19zdHJkdXBfcHJpbnRmKCIlcyAvICVzIiwgdGltZVRv
U3RyaW5nKG1lZGlhUG9zaXRpb24pLnV0ZjgoKS5kYXRhKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRpbWVUb1N0cmluZyhtZWRpYUR1cmF0aW9uKS51dGY4KCkuZGF0YSgp
KTsKKyAgICBndGtfbGFiZWxfc2V0X3RleHQoR1RLX0xBQkVMKG1fdGltZUxhYmVsKSwgbGFiZWwp
OworICAgIGdfZnJlZShsYWJlbCk7CisgICAgcmV0dXJuIFRSVUU7Cit9CisKK3ZvaWQgRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlcjo6Y3JlYXRlSHVkKCkKK3sKKyAgICBtX2h1ZFdpbmRvdyA9IGd0
a193aW5kb3dfbmV3KEdUS19XSU5ET1dfUE9QVVApOworICAgIGd0a193aW5kb3dfc2V0X2dyYXZp
dHkoR1RLX1dJTkRPVyhtX2h1ZFdpbmRvdyksIEdES19HUkFWSVRZX1NPVVRIX1dFU1QpOworICAg
IGd0a193aW5kb3dfc2V0X3R5cGVfaGludChHVEtfV0lORE9XKG1faHVkV2luZG93KSwgR0RLX1dJ
TkRPV19UWVBFX0hJTlRfTk9STUFMKTsKKworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9odWRXaW5k
b3csICJtb3Rpb24tbm90aWZ5LWV2ZW50IiwgR19DQUxMQkFDSyhvbkZ1bGxzY3JlZW5HdGtNb3Rp
b25Ob3RpZnlFdmVudCksIHRoaXMpOworCisgICAgR3RrV2lkZ2V0KiBoYm94ID0gZ3RrX2hib3hf
bmV3KEZBTFNFLCA0KTsKKyAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKG1faHVk
V2luZG93KSwgaGJveCk7CisKKyAgICBtX3BsYXlQYXVzZUFjdGlvbiA9IGd0a19hY3Rpb25fbmV3
KCJwbGF5IiwgXygiUGxheSAvIFBhdXNlIiksIF8oIlBsYXkgb3IgcGF1c2UgdGhlIG1lZGlhIiks
ICJtZWRpYS1wbGF5YmFjay1wYXVzZS1zeW1ib2xpYyIpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
bV9wbGF5UGF1c2VBY3Rpb24sICJhY3RpdmF0ZSIsIEdfQ0FMTEJBQ0sodG9nZ2xlUGxheVBhdXNl
QWN0aXZhdGVkKSwgdGhpcyk7CisKKyAgICBwbGF5U3RhdGVDaGFuZ2VkKCk7CisKKyAgICBHdGtX
aWRnZXQqIGl0ZW0gPSBndGtfYWN0aW9uX2NyZWF0ZV90b29sX2l0ZW0obV9wbGF5UGF1c2VBY3Rp
b24pOworICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKGhib3gpLCBpdGVtLCBGQUxTRSwg
VFJVRSwgMCk7CisKKyAgICBHdGtXaWRnZXQqIGxhYmVsID0gZ3RrX2xhYmVsX25ldyhfKCJUaW1l
OiIpKTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChoYm94KSwgbGFiZWwsIEZBTFNF
LCBUUlVFLCAwKTsKKworICAgIEd0a09iamVjdCogYWRqdXN0bWVudCA9IGd0a19hZGp1c3RtZW50
X25ldygwLjAsIDAuMCwgMTAwLjAsIDAuMSwgMS4wLCAxLjApOworICAgIG1fdGltZUhTY2FsZSA9
IGd0a19oc2NhbGVfbmV3KEdUS19BREpVU1RNRU5UKGFkanVzdG1lbnQpKTsKKyAgICBndGtfc2Nh
bGVfc2V0X2RyYXdfdmFsdWUoR1RLX1NDQUxFKG1fdGltZUhTY2FsZSksIEZBTFNFKTsKKyAgICBn
dGtfcmFuZ2Vfc2V0X3Nob3dfZmlsbF9sZXZlbChHVEtfUkFOR0UobV90aW1lSFNjYWxlKSwgVFJV
RSk7CisgICAgZ3RrX3JhbmdlX3NldF91cGRhdGVfcG9saWN5KEdUS19SQU5HRShtX3RpbWVIU2Nh
bGUpLCBHVEtfVVBEQVRFX0NPTlRJTlVPVVMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV90aW1l
SFNjYWxlLCAiYnV0dG9uLXByZXNzLWV2ZW50IiwgR19DQUxMQkFDSyh0aW1lU2NhbGVCdXR0b25Q
cmVzc2VkKSwgdGhpcyk7CisgICAgZ19zaWduYWxfY29ubmVjdChtX3RpbWVIU2NhbGUsICJidXR0
b24tcmVsZWFzZS1ldmVudCIsIEdfQ0FMTEJBQ0sodGltZVNjYWxlQnV0dG9uUmVsZWFzZWQpLCB0
aGlzKTsKKyAgICBtX2hzY2FsZVVwZGF0ZUlkID0gZ19zaWduYWxfY29ubmVjdChtX3RpbWVIU2Nh
bGUsICJ2YWx1ZS1jaGFuZ2VkIiwgR19DQUxMQkFDSyh0aW1lU2NhbGVWYWx1ZUNoYW5nZWQpLCB0
aGlzKTsKKworICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKGhib3gpLCBtX3RpbWVIU2Nh
bGUsIFRSVUUsIFRSVUUsIDApOworCisgICAgbV90aW1lTGFiZWwgPSBndGtfbGFiZWxfbmV3KCIi
KTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChoYm94KSwgbV90aW1lTGFiZWwsIEZB
TFNFLCBUUlVFLCAwKTsKKworICAgIC8vIFZvbHVtZSBidXR0b24uCisgICAgbV92b2x1bWVCdXR0
b24gPSBndGtfdm9sdW1lX2J1dHRvbl9uZXcoKTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RL
X0JPWChoYm94KSwgbV92b2x1bWVCdXR0b24sIEZBTFNFLCBUUlVFLCAwKTsKKyAgICBndGtfc2Nh
bGVfYnV0dG9uX3NldF92YWx1ZShHVEtfU0NBTEVfQlVUVE9OKG1fdm9sdW1lQnV0dG9uKSwgdm9s
dW1lKCkpOworICAgIG1fdm9sdW1lVXBkYXRlSWQgPSBnX3NpZ25hbF9jb25uZWN0KG1fdm9sdW1l
QnV0dG9uLCAidmFsdWUtY2hhbmdlZCIsIEdfQ0FMTEJBQ0sodm9sdW1lVmFsdWVDaGFuZ2VkKSwg
dGhpcyk7CisKKworICAgIG1fZXhpdEZ1bGxzY3JlZW5BY3Rpb24gPSBndGtfYWN0aW9uX25ldygi
ZXhpdCIsIF8oIkV4aXQgRnVsbHNjcmVlbiIpLCBfKCJFeGl0IGZyb20gZnVsbHNjcmVlbiBtb2Rl
IiksICJ2aWV3LXJlc3RvcmUtc3ltYm9saWMiKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fZXhp
dEZ1bGxzY3JlZW5BY3Rpb24sICJhY3RpdmF0ZSIsIEdfQ0FMTEJBQ0soZXhpdEZ1bGxzY3JlZW5B
Y3RpdmF0ZWQpLCB0aGlzKTsKKyAgICBnX29iamVjdF9zZXQobV9leGl0RnVsbHNjcmVlbkFjdGlv
biwgImljb24tbmFtZSIsICJ2aWV3LXJlc3RvcmUtc3ltYm9saWMiLCBOVUxMKTsKKyAgICBpdGVt
ID0gZ3RrX2FjdGlvbl9jcmVhdGVfdG9vbF9pdGVtKG1fZXhpdEZ1bGxzY3JlZW5BY3Rpb24pOwor
ICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKGhib3gpLCBpdGVtLCBGQUxTRSwgVFJVRSwg
MCk7CisKKworICAgIG1fcHJvZ3Jlc3NCYXJVcGRhdGVJZCA9IGdfdGltZW91dF9hZGQoUFJPR1JF
U1NfQkFSX1VQREFURV9JTlRFUlZBTCwgcHJvZ3Jlc3NCYXJVcGRhdGVDYWxsYmFjaywgdGhpcyk7
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Z1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjMxYjdmZjAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaApAQCAtMCwwICsxLDEwMyBAQAorLyoKKyAqICBD
b3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTAorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXJfaAorI2RlZmluZSBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyX2gK
KworI2lmIEVOQUJMRShWSURFTykKKworI2luY2x1ZGUgIkdSZWZQdHIuaCIKKyNpbmNsdWRlICJH
U3RyZWFtZXJHV29ybGQuaCIKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgorCit0eXBlZGVmIHN0cnVjdCBfR3RrT2JqZWN0IEd0a09iamVjdDsK
K3R5cGVkZWYgc3RydWN0IF9HdGtXaWRnZXQgR3RrV2lkZ2V0OwordHlwZWRlZiBzdHJ1Y3QgX0d0
a0FjdGlvbiBHdGtBY3Rpb247Cit0eXBlZGVmIHN0cnVjdCBfR2RrQ3Vyc29yIEdka0N1cnNvcjsK
K3R5cGVkZWYgc3RydWN0IF9HZGtFdmVudENvbmZpZ3VyZSBHZGtFdmVudENvbmZpZ3VyZTsKKwor
CitjbGFzcyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsK
K3B1YmxpYzoKKyAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKCk7CisgICAgdmlydHVhbCB+
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcigpOworCisgICAgdm9pZCBzZXRNZWRpYUVsZW1lbnQo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCopOworICAgIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQqIG1lZGlhRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFFbGVtZW50LmdldCgpOyB9
CisKKyAgICB2b2lkIGd0a0NvbmZpZ3VyZShHZGtFdmVudENvbmZpZ3VyZSogZXZlbnQpOworCisg
ICAgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKTsKKyAgICB2b2lkIGV4aXRGdWxsc2NyZWVuKCk7CisK
KyAgICB2b2lkIGV4aXRPblVzZXJSZXF1ZXN0KCk7CisgICAgdm9pZCB0b2dnbGVQbGF5KCk7Cisg
ICAgdm9pZCBiZWdpblNlZWsoKTsKKyAgICB2b2lkIGRvU2VlaygpOworICAgIHZvaWQgZW5kU2Vl
aygpOworCisgICAgdm9pZCBoaWRlSHVkKCk7CisgICAgdm9pZCBzaG93SHVkKGJvb2wpOworICAg
IGdib29sZWFuIHVwZGF0ZUh1ZFByb2dyZXNzQmFyKCk7CisKKyAgICBmbG9hdCB2b2x1bWUoKSBj
b25zdDsKKyAgICB2b2lkIHNldFZvbHVtZShmbG9hdCk7CisgICAgdm9pZCB2b2x1bWVDaGFuZ2Vk
KCk7CisgICAgdm9pZCBtdXRlQ2hhbmdlZCgpOworCitwcml2YXRlOgorICAgIGJvb2wgY2FuUGxh
eSgpIGNvbnN0OworICAgIHZvaWQgcGxheSgpOworICAgIHZvaWQgcGF1c2UoKTsKKyAgICB2b2lk
IHBsYXlTdGF0ZUNoYW5nZWQoKTsKKworICAgIGJvb2wgbXV0ZWQoKSBjb25zdDsKKworICAgIGZs
b2F0IGN1cnJlbnRUaW1lKCkgY29uc3Q7CisgICAgdm9pZCBzZXRDdXJyZW50VGltZShmbG9hdCk7
CisKKyAgICBmbG9hdCBkdXJhdGlvbigpIGNvbnN0OworICAgIGZsb2F0IHBlcmNlbnRMb2FkZWQo
KSBjb25zdDsKKworICAgIHZvaWQgY3JlYXRlSHVkKCk7CisgICAgdm9pZCB1cGRhdGVIdWRQb3Np
dGlvbigpOworCisgICAgUmVmUHRyPFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ+IG1fbWVkaWFF
bGVtZW50OworICAgIFJlZlB0cjxXZWJDb3JlOjpHU3RyZWFtZXJHV29ybGQ+IG1fZ3N0cmVhbWVy
R1dvcmxkOworCisgICAgZ3VpbnQgbV9odWRUaW1lb3V0SWQ7CisgICAgZ3VpbnQgbV9wcm9ncmVz
c0JhclVwZGF0ZUlkOworICAgIGd1aW50IG1fcHJvZ3Jlc3NCYXJGaWxsVXBkYXRlSWQ7CisgICAg
Z3VpbnQgbV9oc2NhbGVVcGRhdGVJZDsKKyAgICBndWludCBtX3ZvbHVtZVVwZGF0ZUlkOworICAg
IGJvb2wgbV9zZWVrTG9jazsKKyAgICBHdGtXaWRnZXQqIG1fd2luZG93OworICAgIEdSZWZQdHI8
R2RrQ3Vyc29yPiBtX2N1cnNvcjsKKyAgICBHdGtXaWRnZXQqIG1faHVkV2luZG93OworICAgIEd0
a0FjdGlvbiogbV9wbGF5UGF1c2VBY3Rpb247CisgICAgR3RrQWN0aW9uKiBtX2V4aXRGdWxsc2Ny
ZWVuQWN0aW9uOworICAgIEd0a1dpZGdldCogbV90aW1lSFNjYWxlOworICAgIEd0a1dpZGdldCog
bV90aW1lTGFiZWw7CisgICAgR3RrV2lkZ2V0KiBtX3ZvbHVtZUJ1dHRvbjsKK307CisKKyNlbmRp
ZgorCisjZW5kaWYgLy8gRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcl9oCmRpZmYgLS1naXQgYS9X
ZWJLaXQvZ3RrL3BvL0NoYW5nZUxvZyBiL1dlYktpdC9ndGsvcG8vQ2hhbmdlTG9nCmluZGV4IGFh
YzNjMGMuLmFkNmJjMzYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvcG8vQ2hhbmdlTG9nCisrKyBi
L1dlYktpdC9ndGsvcG8vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDctMjAgIFBo
aWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHU3RyZWFtZXJdIEdUSyBYT3ZlcmxheSBz
dXBwb3J0IGluIEdTdHJlYW1lckdXb3JsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0NzQKKworICAgICAgICAqIFBPVEZJTEVTOiBBZGRlZCBuZXcg
ZmlsZSB0aGF0IGNvbnRhaW5zIHN0cmluZ3MgdG8gZXh0cmFjdC4KKwogMjAxMC0wNy0xMyAgQWxl
amFuZHJvIEcuIENhc3RybyAgPGFsZXhAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBHdXN0YXZvIE5vcm9uaGEuCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3BvL1BPVEZJTEVTIGIv
V2ViS2l0L2d0ay9wby9QT1RGSUxFUwppbmRleCAwNWJhMTM4Li5mZmQwMDE1IDEwMDY0NAotLS0g
YS9XZWJLaXQvZ3RrL3BvL1BPVEZJTEVTCisrKyBiL1dlYktpdC9ndGsvcG8vUE9URklMRVMKQEAg
LTEsNiArMSw3IEBACiAjIExpc3Qgb2Ygc291cmNlIGZpbGVzIHdoaWNoIGNvbnRhaW4gdHJhbnNs
YXRhYmxlIHN0cmluZ3MuCiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0
ay5jcHAKIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRHdGsuY3Bw
CitXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3Bw
CiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkb3dubG9hZC5jcHAKIFdlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHNvdXBhdXRoZGlhbG9nLmMKIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1l
LmNwcApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5jcHAgYi9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmNwcAppbmRleCA0MWRlNzZlLi45Mjg3NDIy
IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmNwcAorKysgYi9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmNwcApAQCAtMjgsNiArMjgsOCBAQAogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnRHdGsuaCIK
ICNpbmNsdWRlICJHdGtWZXJzaW9uaW5nLmgiCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5o
IgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNp
bmNsdWRlICJJY29uRGF0YWJhc2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC00OSw2ICs1
MSwxMCBAQAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4K
IAorI2lmIEVOQUJMRShWSURFTykKKyNpbmNsdWRlICJGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
LmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShEQVRBQkFTRSkKICNpbmNsdWRlICJEYXRhYmFzZVRy
YWNrZXIuaCIKICNlbmRpZgpAQCAtMjgxLDMgKzI4NywzMyBAQCB2b2lkIHdlYmtpdF9yZXNldF9v
cmlnaW5fYWNjZXNzX3doaXRlX2xpc3RzKCkKIHsKICAgICBTZWN1cml0eU9yaWdpbjo6cmVzZXRP
cmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCk7CiB9CisKKwordm9pZCB3ZWJraXRfd2ViX3ZpZXdfZW50
ZXJfZnVsbHNjcmVlbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBOb2RlKiBub2RlKQoreworICAg
IGlmICghbm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnZpZGVvVGFnKSkKKyAgICAgICAgcmV0
dXJuOworCisjaWYgRU5BQkxFKFZJREVPKQorICAgIEhUTUxNZWRpYUVsZW1lbnQqIHZpZGVvRWxl
bWVudCA9IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihub2RlKTsKKyAgICBXZWJLaXRX
ZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CisKKyAgICAvLyBGaXJzdCBleGl0
IEZ1bGxzY3JlZW4gZm9yIHRoZSBvbGQgbWVkaWFFbGVtZW50LgorICAgIGlmIChwcml2LT5mdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyKQorICAgICAgICBwcml2LT5mdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyLT5leGl0RnVsbHNjcmVlbigpOworCisgICAgcHJpdi0+ZnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlciA9IG5ldyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOworICAgIHByaXYtPmZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXItPnNldE1lZGlhRWxlbWVudCh2aWRlb0VsZW1lbnQpOworICAg
IHByaXYtPmZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXItPmVudGVyRnVsbHNjcmVlbigpOworI2Vu
ZGlmCit9CisKK3ZvaWQgd2Via2l0X3dlYl92aWV3X2V4aXRfZnVsbHNjcmVlbihXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3KQoreworI2lmIEVOQUJMRShWSURFTykKKyAgICBXZWJLaXRXZWJWaWV3UHJp
dmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CisgICAgaWYgKHByaXYtPmZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXIpCisgICAgICAgIHByaXYtPmZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXItPmV4
aXRGdWxsc2NyZWVuKCk7CisjZW5kaWYKK30KKwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0cHJpdmF0ZS5oIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCmlu
ZGV4IDczZjlmY2MuLjllNjlmZDEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHByaXZhdGUuaAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgKQEAgLTU2
LDYgKzU2LDggQEAKICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnRHdGsuaCIKICNpbmNsdWRlICJJ
bnRQb2ludC5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJl
cXVlc3QuaCIKQEAgLTE1Nyw2ICsxNTksOCBAQCBleHRlcm4gIkMiIHsKICAgICAgICAgZ2Jvb2xl
YW4gZGlzcG9zaW5nOwogICAgICAgICBnYm9vbGVhbiB1c2VQcmltYXJ5Rm9yUGFzdGU7CiAKKyAg
ICAgICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogZnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
cjsKKwogICAgICAgICAvLyBUaGVzZSBhcmUgaG9zdGVkIGhlcmUgYmVjYXVzZSB0aGUgRGF0YVNv
dXJjZSBvYmplY3QgaXMKICAgICAgICAgLy8gY3JlYXRlZCB0b28gbGF0ZSBpbiB0aGUgZnJhbWUg
bG9hZGluZyBwcm9jZXNzLgogICAgICAgICBXZWJLaXRXZWJSZXNvdXJjZSogbWFpblJlc291cmNl
OwpAQCAtMzk3LDYgKzQwMSw5IEBAIGV4dGVybiAiQyIgewogCiAgICAgV0VCS0lUX0FQSSB2b2lk
CiAgICAgd2Via2l0X3dlYl9mcmFtZV9sYXlvdXQoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKTsKKwor
ICAgIHZvaWQgd2Via2l0X3dlYl92aWV3X2VudGVyX2Z1bGxzY3JlZW4oV2ViS2l0V2ViVmlldyog
d2ViVmlldywgV2ViQ29yZTo6Tm9kZSogbm9kZSk7CisgICAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdf
ZXhpdF9mdWxsc2NyZWVuKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpOwogfQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCAxZTAxOTRlLi4xZmIx
ZDgxIDEwMDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC04MjYs
NiArODI2LDcgQEAgaWYgdGVzdCAiJGVuYWJsZV92aWRlbyIgPSAieWVzIjsgdGhlbgogICAgICAg
ICAgICAgICAgICAgICAgW2dzdHJlYW1lci0wLjEwID49ICRHU1RSRUFNRVJfUkVRVUlSRURfVkVS
U0lPTgogICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLWFwcC0wLjEwCiAgICAgICAgICAg
ICAgICAgICAgICBnc3RyZWFtZXItYmFzZS0wLjEwCisgICAgICAgICAgICAgICAgICAgICBnc3Ry
ZWFtZXItaW50ZXJmYWNlcy0wLjEwCiAgICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXItcGJ1
dGlscy0wLjEwCiAgICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXItcGx1Z2lucy1iYXNlLTAu
MTAgPj0gJEdTVFJFQU1FUl9QTFVHSU5TX0JBU0VfUkVRVUlSRURfVkVSU0lPTgogICAgICAgICAg
ICAgICAgICAgICAgZ3N0cmVhbWVyLXZpZGVvLTAuMTBdKQotLSAKMS42LjMuMw==
</data>
<flag name="review"
          id="50165"
          type_id="1"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64202</attachid>
            <date>2010-08-12 03:12:29 -0700</date>
            <delta_ts>2010-08-17 00:40:00 -0700</delta_ts>
            <desc>fullscreen video support in WebKit/gtk</desc>
            <filename>fullscreen-video-support-in-WebKitgtk.patch</filename>
            <type>text/plain</type>
            <size>51511</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBiNjBmYTBlNDc3NmIwMDcwYmExOGM0NWFmYjgwYmUzZTIyNzYyNGQ3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBTYXQsIDEwIEp1bCAyMDEwIDEyOjU3OjM5ICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
ZnVsbHNjcmVlbiB2aWRlbyBzdXBwb3J0IGluIFdlYktpdC9ndGsKCi0tLQogQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEyICsKIEdOVW1ha2Vm
aWxlLmFtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiBXZWJD
b3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMzAgKwog
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAy
ICsKIC4uLi9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmNwcCAgICAgICAgIHwg
IDE1NyArKysrKy0KIC4uLi9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dv
cmxkLmggIHwgICAxOSArCiAuLi4vZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAgICAgICB8ICAgIDEgLQogLi4uL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVv
V2luZG93LmggICAgICAgfCAgIDU0ICsrCiAuLi4vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3Jt
VmlkZW9XaW5kb3dHdGsuY3BwICB8ICAgNjAgKysKIFdlYktpdC9ndGsvQ2hhbmdlTG9nICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA3MyArKysKIFdlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcCAgICAgIHwgICAyNSArCiBXZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oICAgICAgICB8ICAgIDUgKwogLi4uL1dlYkNvcmVT
dXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwICAgfCAgNTkzICsrKysrKysrKysr
KysrKysrKysrCiAuLi4vZ3RrL1dlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXIuaCB8ICAxMDMgKysrKwogV2ViS2l0L2d0ay9wby9DaGFuZ2VMb2cgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgICA5ICsKIFdlYktpdC9ndGsvcG8vUE9URklMRVMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAgMSArCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRl
LmNwcCAgICAgICAgICAgICAgICB8ICAgMzYgKysKIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHBy
aXZhdGUuaCAgICAgICAgICAgICAgICAgIHwgICAgNyArCiBjb25maWd1cmUuYWMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogMTkgZmlsZXMgY2hhbmdlZCwg
MTE4OCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3cuaAog
Y3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1Bs
YXRmb3JtVmlkZW9XaW5kb3dHdGsuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAogY3JlYXRlIG1vZGUg
MTAwNjQ0IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ci5oCgpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDI2YzMzY2QuLjg4
OGEzYjggMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAxMC0wNy0xMCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dTdHJl
YW1lcl0gR1RLIFhPdmVybGF5IHN1cHBvcnQgaW4gR1N0cmVhbWVyR1dvcmxkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ3NAorCisgICAgICAgICog
Y29uZmlndXJlLmFjOiBnc3QtaW50ZXJmYWNlcyBsaW5rIHN1cHBvcnQgbmVlZGVkIGZvciB1c2Ug
b2YKKyAgICAgICAgR3N0WE92ZXJsYXkgaW50ZXJmYWNlLgorICAgICAgICAqIEdOVW1ha2VmaWxl
LmFtOiBBZGRlZCBuZXcgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciBmaWxlcyBpbiB0aGUKKyAg
ICAgICAgYnVpbGQuCisKIDIwMTAtMDgtMTAgIEJhbGF6cyBLZWxlbWVuICA8a2JAaW5mLnUtc3pl
Z2VkLmh1PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCmRpZmYgLS1naXQg
YS9HTlVtYWtlZmlsZS5hbSBiL0dOVW1ha2VmaWxlLmFtCmluZGV4IDg3ZmYzMWQuLmI5MjkwYjYg
MTAwNjQ0Ci0tLSBhL0dOVW1ha2VmaWxlLmFtCisrKyBiL0dOVW1ha2VmaWxlLmFtCkBAIC03NDcs
NiArNzQ3LDggQEAgd2Via2l0Z3RrX3NvdXJjZXMgKz0gXAogCVdlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmggXAogCVdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuY3BwIFwKIAlXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50R3RrLmggXAorCVdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlci5jcHAgXAorCVdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlci5oIFwKIAlXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3Bl
Y3RvckNsaWVudEd0ay5jcHAgXAogCVdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9y
Q2xpZW50R3RrLmggXAogCVdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGFzdGVib2FyZEhlbHBl
ckd0ay5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCAwYzEzZmEyLi5hOTdhOGQwIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEwLTA3LTIwICBQ
aGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR1N0cmVhbWVyXSBHVEsgWE92ZXJsYXkg
c3VwcG9ydCBpbiBHU3RyZWFtZXJHV29ybGQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTM5NDc0CisKKyAgICAgICAgR1N0cmVhbWVyR1dvcmxkIG5vdyBj
YXRjaGVzIHN5bmNocm9ub3VzIG1lc3NhZ2VzIGNvbWluZyBmcm9tIHRoZQorICAgICAgICBzaW5r
cyBhbmQgY3JlYXRlcyBhIEdUSyB3aW5kb3cgd2hlcmUgdGhlIHZpZGVvIGNhbiBiZSBvdmVybGF5
ZWQgaWYKKyAgICAgICAgZnVsbHNjcmVlbiBkaXNwbGF5IGlzIHJlcXVlc3RlZCB1c2luZyBlbnRl
ckZ1bGxzY3JlZW4uCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmdzdEdXb3JsZFN5bmNNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
R1N0cmVhbWVyR1dvcmxkOjpHU3RyZWFtZXJHV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6R1N0
cmVhbWVyR1dvcmxkOjp+R1N0cmVhbWVyR1dvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJl
YW1lckdXb3JsZDo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1l
ckdXb3JsZDo6ZXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyR1dv
cmxkOjpzZXRXaW5kb3dPdmVybGF5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmg6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJHV29y
bGQ6OnBpcGVsaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckdXb3JsZDo6cGxhdGZv
cm1WaWRlb1dpbmRvdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3cuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVZpZGVvV2luZG93OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1WaWRlb1dpbmRvdzo6d2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtVmlkZW9XaW5kb3c6OnZpZGVvV2luZG93SWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93R3RrLmNwcDogQWRkZWQuCisgICAgICAg
IChQbGF0Zm9ybVZpZGVvV2luZG93OjpQbGF0Zm9ybVZpZGVvV2luZG93KToKKwogMjAxMC0wOC0x
MiAgQWxlamFuZHJvIEcuIENhc3RybyAgPGFsZXhAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBEYXZpZCBMZXZpbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0g
Yi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDdhMTRjYjEuLjI4YTkxMjUgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpA
QCAtMzEwNSw2ICszMTA1LDggQEAgd2ViY29yZWd0a19zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuaCBcCiAJV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXIuaCBcCiAJV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJDYWlyby5jcHAgXAorCVdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3cuaCBc
CisJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRv
d0d0ay5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdl
YlNvdXJjZUdTdHJlYW1lci5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5oCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5jcHAgYi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuY3BwCmluZGV4IGM1MDIy
ZjkuLmUxZWQxYWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dTdHJlYW1lckdXb3JsZC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmNwcApAQCAtMjEsMTIgKzIxLDMzIEBACiAKICNpbmNs
dWRlICJHU3RyZWFtZXJHV29ybGQuaCIKIAotI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5oIgorI2luY2x1ZGUgIkdPd25QdHJHU3RyZWFtZXIuaCIKKworI2luY2x1ZGUgPGdz
dC9nc3QuaD4KKyNpbmNsdWRlIDxnc3QvaW50ZXJmYWNlcy94b3ZlcmxheS5oPgorCisjaWYgUExB
VEZPUk0oR1RLKQorI2luY2x1ZGUgPGd0ay9ndGsuaD4KKyNpZmRlZiBHREtfV0lORE9XSU5HX1gx
MQorI2luY2x1ZGUgPGdkay9nZGt4Lmg+IC8vIGZvciBHREtfV0lORE9XX1hJRAorI2VuZGlmCisj
ZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitn
Ym9vbGVhbiBnc3RHV29ybGRTeW5jTWVzc2FnZUNhbGxiYWNrKEdzdEJ1cyogYnVzLCBHc3RNZXNz
YWdlKiBtZXNzYWdlLCBncG9pbnRlciBkYXRhKQoreworICAgIEFTU0VSVChHU1RfTUVTU0FHRV9U
WVBFKG1lc3NhZ2UpID09IEdTVF9NRVNTQUdFX0VMRU1FTlQpOworCisgICAgR1N0cmVhbWVyR1dv
cmxkKiBnc3RHV29ybGQgPSByZWludGVycHJldF9jYXN0PEdTdHJlYW1lckdXb3JsZCo+KGRhdGEp
OworCisgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX25hbWUobWVzc2FnZS0+c3RydWN0dXJlLCAi
cHJlcGFyZS14d2luZG93LWlkIikpCisgICAgICAgIGdzdEdXb3JsZC0+c2V0V2luZG93T3Zlcmxh
eShtZXNzYWdlKTsKKyAgICByZXR1cm4gVFJVRTsKK30KKwogUGFzc1JlZlB0cjxHU3RyZWFtZXJH
V29ybGQ+IEdTdHJlYW1lckdXb3JsZDo6Y3JlYXRlR1dvcmxkKE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lciogcGxheWVyKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1N0cmVhbWVyR1dv
cmxkKHBsYXllcikpOwpAQCAtMzQsMTEgKzU1LDE0NSBAQCBQYXNzUmVmUHRyPEdTdHJlYW1lckdX
b3JsZD4gR1N0cmVhbWVyR1dvcmxkOjpjcmVhdGVHV29ybGQoTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cgogCiBHU3RyZWFtZXJHV29ybGQ6OkdTdHJlYW1lckdXb3JsZChNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIqIHBsYXllcikKICAgICA6IG1fcGxheWVyKHBsYXllcikKKyAgICAsIG1fZHluYW1p
Y1BhZE5hbWUoMCkKIHsKKyAgICAvLyBYT3ZlcmxheSBtZXNzYWdlcyBuZWVkIHRvIGJlIGhhbmRs
ZWQgc3luY2hyb25vdXNseS4KKyAgICBHc3RCdXMqIGJ1cyA9IGdzdF9waXBlbGluZV9nZXRfYnVz
KEdTVF9QSVBFTElORShtX3BsYXllci0+cGlwZWxpbmUoKSkpOworICAgIGdzdF9idXNfc2V0X3N5
bmNfaGFuZGxlcihidXMsIGdzdF9idXNfc3luY19zaWduYWxfaGFuZGxlciwgdGhpcyk7CisgICAg
Z19zaWduYWxfY29ubmVjdChidXMsICJzeW5jLW1lc3NhZ2U6OmVsZW1lbnQiLCBHX0NBTExCQUNL
KGdzdEdXb3JsZFN5bmNNZXNzYWdlQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBnc3Rfb2JqZWN0X3Vu
cmVmKGJ1cyk7CiB9CiAKIEdTdHJlYW1lckdXb3JsZDo6fkdTdHJlYW1lckdXb3JsZCgpCiB7Cisg
ICAgZXhpdEZ1bGxzY3JlZW4oKTsKK30KKworYm9vbCBHU3RyZWFtZXJHV29ybGQ6OmVudGVyRnVs
bHNjcmVlbigpCit7CisgICAgaWYgKG1fZHluYW1pY1BhZE5hbWUpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGlmICghbV92aWRlb1dpbmRvdykKKyAgICAgICAgbV92aWRlb1dpbmRvdyA9
IFBsYXRmb3JtVmlkZW9XaW5kb3c6OmNyZWF0ZVdpbmRvdygpOworCisgICAgR3N0RWxlbWVudCog
cGlwZWxpbmUgPSBtX3BsYXllci0+cGlwZWxpbmUoKTsKKyAgICBHc3RFbGVtZW50KiBwbGF0Zm9y
bVZpZGVvU2luayA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiYXV0b3ZpZGVvc2luayIsICJw
bGF0Zm9ybVZpZGVvU2luayIpOworICAgIEdzdEVsZW1lbnQqIGNvbG9yc3BhY2UgPSBnc3RfZWxl
bWVudF9mYWN0b3J5X21ha2UoImZmbXBlZ2NvbG9yc3BhY2UiLCAiY29sb3JzcGFjZSIpOworICAg
IEdzdEVsZW1lbnQqIHF1ZXVlID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJxdWV1ZSIsICJx
dWV1ZSIpOworICAgIEdzdEVsZW1lbnQqIHZpZGVvU2NhbGUgPSBnc3RfZWxlbWVudF9mYWN0b3J5
X21ha2UoInZpZGVvc2NhbGUiLCAidmlkZW9TY2FsZSIpOworCisgICAgLy8gR2V0IHZpZGVvIHNp
bmsgYmluIGFuZCB0aGUgdGVlIGluc2lkZS4KKyAgICBHT3duUHRyPEdzdEVsZW1lbnQ+IHZpZGVv
U2luazsKKyAgICBnX29iamVjdF9nZXQocGlwZWxpbmUsICJ2aWRlby1zaW5rIiwgJnZpZGVvU2lu
ay5vdXRQdHIoKSwgTlVMTCk7CisgICAgR3N0RWxlbWVudCogdGVlID0gZ3N0X2Jpbl9nZXRfYnlf
bmFtZShHU1RfQklOKHZpZGVvU2luay5nZXQoKSksICJ2aWRlb1RlZSIpOworCisgICAgLy8gQWRk
IGFuZCBsaW5rIGEgcXVldWUsIGZmbXBlZ2NvbG9yc3BhY2UgYW5kIHNpbmsgaW4gdGhlIGJpbi4K
KyAgICBnc3RfYmluX2FkZF9tYW55KEdTVF9CSU4odmlkZW9TaW5rLmdldCgpKSwgcGxhdGZvcm1W
aWRlb1NpbmssIHZpZGVvU2NhbGUsIGNvbG9yc3BhY2UsIHF1ZXVlLCBOVUxMKTsKKyAgICBnc3Rf
ZWxlbWVudF9saW5rX21hbnkocXVldWUsIGNvbG9yc3BhY2UsIHZpZGVvU2NhbGUsIHBsYXRmb3Jt
VmlkZW9TaW5rLCBOVUxMKTsKKworICAgIC8vIExpbmsgYSBuZXcgc3JjIHBhZCBmcm9tIHRlZSB0
byBxdWV1ZS4KKyAgICBHc3RQYWQqIHNyY1BhZCA9IGdzdF9lbGVtZW50X2dldF9yZXF1ZXN0X3Bh
ZCh0ZWUsICJzcmMlZCIpOworICAgIEdzdFBhZCogc2lua1BhZCA9IGdzdF9lbGVtZW50X2dldF9z
dGF0aWNfcGFkKHF1ZXVlLCAic2luayIpOworICAgIGdzdF9wYWRfbGluayhzcmNQYWQsIHNpbmtQ
YWQpOworICAgIGdzdF9vYmplY3RfdW5yZWYoR1NUX09CSkVDVChzaW5rUGFkKSk7CisKKyAgICBt
X2R5bmFtaWNQYWROYW1lID0gZ3N0X3BhZF9nZXRfbmFtZShzcmNQYWQpOworCisgICAgLy8gUm9s
bCBuZXcgZWxlbWVudHMgdG8gcGlwZWxpbmUgc3RhdGUuCisgICAgZ3N0X2VsZW1lbnRfc3luY19z
dGF0ZV93aXRoX3BhcmVudChxdWV1ZSk7CisgICAgZ3N0X2VsZW1lbnRfc3luY19zdGF0ZV93aXRo
X3BhcmVudChjb2xvcnNwYWNlKTsKKyAgICBnc3RfZWxlbWVudF9zeW5jX3N0YXRlX3dpdGhfcGFy
ZW50KHZpZGVvU2NhbGUpOworICAgIGdzdF9lbGVtZW50X3N5bmNfc3RhdGVfd2l0aF9wYXJlbnQo
cGxhdGZvcm1WaWRlb1NpbmspOworCisgICAgZ3N0X29iamVjdF91bnJlZih0ZWUpOworCisgICAg
Ly8gUXVlcnkgdGhlIGN1cnJlbnQgbWVkaWEgc2VnbWVudCBpbmZvcm1hdGlvbnMgYW5kIHNlbmQg
dGhlbSB0b3dhcmRzCisgICAgLy8gdGhlIG5ldyB0ZWUgYnJhbmNoIGRvd25zdHJlYW0uCisKKyAg
ICBHc3RRdWVyeSogcXVlcnkgPSBnc3RfcXVlcnlfbmV3X3NlZ21lbnQoR1NUX0ZPUk1BVF9USU1F
KTsKKyAgICBnYm9vbGVhbiBxdWVyeVJlc3VsdCA9IGdzdF9lbGVtZW50X3F1ZXJ5KHBpcGVsaW5l
LCBxdWVyeSk7CisKKyAgICAvLyBTZWUgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19i
dWcuY2dpP2lkPTYyMDQ5MC4KKyNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigwLCAxMCwgMzApCisgICAg
aWYgKCFxdWVyeVJlc3VsdCkgeworICAgICAgICBnc3RfcXVlcnlfdW5yZWYocXVlcnkpOworICAg
ICAgICBnc3Rfb2JqZWN0X3VucmVmKEdTVF9PQkpFQ1Qoc3JjUGFkKSk7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKyNlbmRpZgorCisgICAgR3N0Rm9ybWF0IGZvcm1hdDsKKyAgICBnaW50
NjQgcG9zaXRpb247CisgICAgaWYgKCFnc3RfZWxlbWVudF9xdWVyeV9wb3NpdGlvbihwaXBlbGlu
ZSwgJmZvcm1hdCwgJnBvc2l0aW9uKSkKKyAgICAgICAgcG9zaXRpb24gPSAwOworCisgICAgZ2Rv
dWJsZSByYXRlOworICAgIGdpbnQ2NCBzdGFydFZhbHVlLCBzdG9wVmFsdWU7CisgICAgZ3N0X3F1
ZXJ5X3BhcnNlX3NlZ21lbnQocXVlcnksICZyYXRlLCAmZm9ybWF0LCAmc3RhcnRWYWx1ZSwgJnN0
b3BWYWx1ZSk7CisKKyAgICBHc3RFdmVudCogZXZlbnQgPSBnc3RfZXZlbnRfbmV3X25ld19zZWdt
ZW50KEZBTFNFLCByYXRlLCBmb3JtYXQsIHN0YXJ0VmFsdWUsIHN0b3BWYWx1ZSwgcG9zaXRpb24p
OworICAgIGdzdF9wYWRfcHVzaF9ldmVudChzcmNQYWQsIGV2ZW50KTsKKworICAgIGdzdF9xdWVy
eV91bnJlZihxdWVyeSk7CisgICAgZ3N0X29iamVjdF91bnJlZihHU1RfT0JKRUNUKHNyY1BhZCkp
OworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEdTdHJlYW1lckdXb3JsZDo6ZXhpdEZ1bGxz
Y3JlZW4oKQoreworICAgIGlmICghbV9keW5hbWljUGFkTmFtZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgR3N0RWxlbWVudCogcGlwZWxpbmUgPSBtX3BsYXllci0+cGlwZWxpbmUoKTsKKworICAg
IC8vIEdldCB2aWRlbyBzaW5rIGJpbiBhbmQgdGhlIGVsZW1lbnRzIHRvIHJlbW92ZS4KKyAgICBH
T3duUHRyPEdzdEVsZW1lbnQ+IHZpZGVvU2luazsKKyAgICBnX29iamVjdF9nZXQocGlwZWxpbmUs
ICJ2aWRlby1zaW5rIiwgJnZpZGVvU2luay5vdXRQdHIoKSwgTlVMTCk7CisgICAgR3N0RWxlbWVu
dCogdGVlID0gZ3N0X2Jpbl9nZXRfYnlfbmFtZShHU1RfQklOKHZpZGVvU2luay5nZXQoKSksICJ2
aWRlb1RlZSIpOworICAgIEdzdEVsZW1lbnQqIHBsYXRmb3JtVmlkZW9TaW5rID0gZ3N0X2Jpbl9n
ZXRfYnlfbmFtZShHU1RfQklOKHZpZGVvU2luay5nZXQoKSksICJwbGF0Zm9ybVZpZGVvU2luayIp
OworICAgIEdzdEVsZW1lbnQqIHF1ZXVlID0gZ3N0X2Jpbl9nZXRfYnlfbmFtZShHU1RfQklOKHZp
ZGVvU2luay5nZXQoKSksICJxdWV1ZSIpOworICAgIEdzdEVsZW1lbnQqIGNvbG9yc3BhY2UgPSBn
c3RfYmluX2dldF9ieV9uYW1lKEdTVF9CSU4odmlkZW9TaW5rLmdldCgpKSwgImNvbG9yc3BhY2Ui
KTsKKyAgICBHc3RFbGVtZW50KiB2aWRlb1NjYWxlID0gZ3N0X2Jpbl9nZXRfYnlfbmFtZShHU1Rf
QklOKHZpZGVvU2luay5nZXQoKSksICJ2aWRlb1NjYWxlIik7CisKKyAgICAvLyBHZXQgcGFkcyB0
byB1bmxpbmsgYW5kIHJlbW92ZS4KKyAgICBHc3RQYWQqIHNyY1BhZCA9IGdzdF9lbGVtZW50X2dl
dF9zdGF0aWNfcGFkKHRlZSwgbV9keW5hbWljUGFkTmFtZSk7CisgICAgR3N0UGFkKiBzaW5rUGFk
ID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQocXVldWUsICJzaW5rIik7CisKKyAgICAvLyBV
bmxpbmsgYW5kIHJlbGVhc2UgcmVxdWVzdCBwYWQuCisgICAgZ3N0X3BhZF91bmxpbmsoc3JjUGFk
LCBzaW5rUGFkKTsKKyAgICBnc3RfZWxlbWVudF9yZWxlYXNlX3JlcXVlc3RfcGFkKHRlZSwgc3Jj
UGFkKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmKEdTVF9PQkpFQ1Qoc3JjUGFkKSk7CisgICAgZ3N0
X29iamVjdF91bnJlZihHU1RfT0JKRUNUKHNpbmtQYWQpKTsKKworICAgIC8vIFVubGluaywgcmVt
b3ZlIGFuZCBjbGVhbnVwIHF1ZXVlLCBmZm1wZWdjb2xvcnNwYWNlLCB2aWRlb1NjYWxlIGFuZCBz
aW5rLgorICAgIGdzdF9lbGVtZW50X3VubGlua19tYW55KHF1ZXVlLCBjb2xvcnNwYWNlLCB2aWRl
b1NjYWxlLCBwbGF0Zm9ybVZpZGVvU2luaywgTlVMTCk7CisgICAgZ3N0X2Jpbl9yZW1vdmVfbWFu
eShHU1RfQklOKHZpZGVvU2luay5nZXQoKSksIHF1ZXVlLCBjb2xvcnNwYWNlLCB2aWRlb1NjYWxl
LCBwbGF0Zm9ybVZpZGVvU2luaywgTlVMTCk7CisgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKHF1
ZXVlLCBHU1RfU1RBVEVfTlVMTCk7CisgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKGNvbG9yc3Bh
Y2UsIEdTVF9TVEFURV9OVUxMKTsKKyAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUodmlkZW9TY2Fs
ZSwgR1NUX1NUQVRFX05VTEwpOworICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShwbGF0Zm9ybVZp
ZGVvU2luaywgR1NUX1NUQVRFX05VTEwpOworICAgIGdzdF9vYmplY3RfdW5yZWYocXVldWUpOwor
ICAgIGdzdF9vYmplY3RfdW5yZWYoY29sb3JzcGFjZSk7CisgICAgZ3N0X29iamVjdF91bnJlZih2
aWRlb1NjYWxlKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmKHBsYXRmb3JtVmlkZW9TaW5rKTsKKwor
ICAgIGdzdF9vYmplY3RfdW5yZWYodGVlKTsKKyAgICBtX2R5bmFtaWNQYWROYW1lID0gMDsKK30K
Kwordm9pZCBHU3RyZWFtZXJHV29ybGQ6OnNldFdpbmRvd092ZXJsYXkoR3N0TWVzc2FnZSogbWVz
c2FnZSkKK3sKKyAgICBHc3RPYmplY3QqIHNpbmsgPSBHU1RfTUVTU0FHRV9TUkMobWVzc2FnZSk7
CisKKyAgICBpZiAoIUdTVF9JU19YX09WRVJMQVkoc2luaykpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChnX29iamVjdF9jbGFzc19maW5kX3Byb3BlcnR5KEdfT0JKRUNUX0dFVF9DTEFTUyhz
aW5rKSwgImZvcmNlLWFzcGVjdC1yYXRpbyIpKQorICAgICAgICBnX29iamVjdF9zZXQoc2luaywg
ImZvcmNlLWFzcGVjdC1yYXRpbyIsIFRSVUUsIE5VTEwpOworCisgICAgaWYgKG1fdmlkZW9XaW5k
b3cpCisgICAgICAgIGdzdF94X292ZXJsYXlfc2V0X3h3aW5kb3dfaWQoR1NUX1hfT1ZFUkxBWShz
aW5rKSwgbV92aWRlb1dpbmRvdy0+dmlkZW9XaW5kb3dJZCgpKTsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmgg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuaApp
bmRleCBiNjI2Mjk4Li4wMzU4YjAxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuaApAQCAtMjMsMjUgKzIzLDQ0IEBACiAK
ICNpZiBFTkFCTEUoVklERU8pCiAKKyNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVZpZGVvV2luZG93LmgiCiAjaW5jbHVkZSAiUmVmQ291
bnRlZC5oIgogI2luY2x1ZGUgIlJlZlB0ci5oIgogI2luY2x1ZGUgPGdsaWIuaD4KIAordHlwZWRl
ZiBzdHJ1Y3QgX0dzdEVsZW1lbnQgR3N0RWxlbWVudDsKK3R5cGVkZWYgc3RydWN0IF9Hc3RNZXNz
YWdlIEdzdE1lc3NhZ2U7Cit0eXBlZGVmIHN0cnVjdCBfR3N0QnVzIEdzdEJ1czsKK3R5cGVkZWYg
c3RydWN0IF9Hc3RCaW4gR3N0QmluOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjsKIAorZ2Jvb2xlYW4gZ3N0R1dvcmxkU3luY01lc3Nh
Z2VDYWxsYmFjayhHc3RCdXMqIGJ1cywgR3N0TWVzc2FnZSogbWVzc2FnZSwgZ3BvaW50ZXIgZGF0
YSk7CiAKIGNsYXNzIEdTdHJlYW1lckdXb3JsZCA6IHB1YmxpYyBSZWZDb3VudGVkPEdTdHJlYW1l
ckdXb3JsZD4geworICAgIGZyaWVuZCBnYm9vbGVhbiBnc3RHV29ybGRTeW5jTWVzc2FnZUNhbGxi
YWNrKEdzdEJ1cyogYnVzLCBHc3RNZXNzYWdlKiBtZXNzYWdlLCBncG9pbnRlciBkYXRhKTsKIAog
cHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdTdHJlYW1lckdXb3JsZD4gY3JlYXRlR1dv
cmxkKE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciopOwogICAgIH5HU3RyZWFtZXJHV29ybGQo
KTsKIAorICAgIEdzdEVsZW1lbnQqIHBpcGVsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9wbGF5ZXIt
PnBpcGVsaW5lKCk7IH0KKworICAgIC8vIFJldHVybnMgdGhlIGZ1bGwtc2NyZWVuIHdpbmRvdyBj
cmVhdGVkCisgICAgYm9vbCBlbnRlckZ1bGxzY3JlZW4oKTsKKyAgICB2b2lkIGV4aXRGdWxsc2Ny
ZWVuKCk7CisKKyAgICB2b2lkIHNldFdpbmRvd092ZXJsYXkoR3N0TWVzc2FnZSogbWVzc2FnZSk7
CisgICAgUGxhdGZvcm1WaWRlb1dpbmRvdyogcGxhdGZvcm1WaWRlb1dpbmRvdygpIGNvbnN0IHsg
cmV0dXJuIG1fdmlkZW9XaW5kb3cuZ2V0KCk7IH0KKwogcHJpdmF0ZToKICAgICBHU3RyZWFtZXJH
V29ybGQoTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKik7CiAgICAgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyKiBtX3BsYXllcjsKKyAgICBSZWZQdHI8UGxhdGZvcm1WaWRlb1dpbmRvdz4g
bV92aWRlb1dpbmRvdzsKKyAgICBnY2hhciogbV9keW5hbWljUGFkTmFtZTsKIH07CiAKIH0KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDcxODQ0MzkuLjlmZmY5ODQg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtNTQsNyArNTQsNiBA
QAogI2luY2x1ZGUgPEdPd25QdHIuaD4KICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAjaW5jbHVkZSA8
Z3N0L2ludGVyZmFjZXMvbWl4ZXIuaD4KLSNpbmNsdWRlIDxnc3QvaW50ZXJmYWNlcy94b3Zlcmxh
eS5oPgogI2luY2x1ZGUgPGdzdC92aWRlby92aWRlby5oPgogI2luY2x1ZGUgPGxpbWl0cz4KICNp
bmNsdWRlIDxtYXRoLmg+CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93LmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uODNkYzVkZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3cuaApAQCAtMCwwICsxLDU0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwKKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
ICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBQbGF0Zm9ybVZp
ZGVvV2luZG93X2gKKyNkZWZpbmUgUGxhdGZvcm1WaWRlb1dpbmRvd19oCisKKyNpZiBFTkFCTEUo
VklERU8pCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CisKKyNpZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8Z3RrL2d0ay5oPgordHlw
ZWRlZiBHdGtXaWRnZXQgUGxhdGZvcm1XaW5kb3dUeXBlOworI2VuZGlmCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgUGxhdGZvcm1WaWRlb1dpbmRvdyA6IHB1YmxpYyBSZWZDb3VudGVk
PFBsYXRmb3JtVmlkZW9XaW5kb3c+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFBsYXRmb3JtVmlkZW9XaW5kb3c+IGNyZWF0ZVdpbmRvdygpIHsgcmV0dXJuIGFkb3B0
UmVmKG5ldyBQbGF0Zm9ybVZpZGVvV2luZG93KCkpOyB9CisKKyAgICAgICAgUGxhdGZvcm1WaWRl
b1dpbmRvdygpOworICAgICAgICB+UGxhdGZvcm1WaWRlb1dpbmRvdygpOworCisgICAgICAgIFBs
YXRmb3JtV2luZG93VHlwZSogd2luZG93KCkgY29uc3QgeyByZXR1cm4gbV93aW5kb3c7IH0KKyAg
ICAgICAgZ3Vsb25nIHZpZGVvV2luZG93SWQoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVvV2luZG93
SWQ7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIGd1bG9uZyBtX3ZpZGVvV2luZG93SWQ7Cisg
ICAgICAgIFBsYXRmb3JtV2luZG93VHlwZSogbV92aWRlb1dpbmRvdzsKKyAgICAgICAgUGxhdGZv
cm1XaW5kb3dUeXBlKiBtX3dpbmRvdzsKKyAgICB9OworfQorCisjZW5kaWYKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZp
ZGVvV2luZG93R3RrLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1Bs
YXRmb3JtVmlkZW9XaW5kb3dHdGsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjE4NWY1MzUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93R3RrLmNwcApAQCAtMCwwICsxLDYwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwKKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlBsYXRmb3JtVmlkZW9XaW5kb3cuaCIKKworI2lmZGVmIEdES19XSU5ET1dJTkdf
WDExCisjaW5jbHVkZSA8Z2RrL2dka3guaD4gLy8gZm9yIEdES19XSU5ET1dfWElECisjZW5kaWYK
KwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1BsYXRmb3JtVmlkZW9XaW5kb3c6OlBsYXRm
b3JtVmlkZW9XaW5kb3coKQoreworICAgIG1fd2luZG93ID0gZ3RrX3dpbmRvd19uZXcoR1RLX1dJ
TkRPV19UT1BMRVZFTCk7CisgICAgZ3RrX3dpZGdldF9zZXRfZXZlbnRzKG1fd2luZG93LCBHREtf
UE9JTlRFUl9NT1RJT05fTUFTSyB8IEdES19LRVlfUFJFU1NfTUFTSyB8IEdES19GT0NVU19DSEFO
R0VfTUFTSyk7CisKKyAgICBtX3ZpZGVvV2luZG93ID0gZ3RrX2RyYXdpbmdfYXJlYV9uZXcoKTsK
KyAgICBndGtfd2lkZ2V0X3NldF9kb3VibGVfYnVmZmVyZWQobV92aWRlb1dpbmRvdywgRkFMU0Up
OworICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIobV93aW5kb3cpLCBtX3ZpZGVv
V2luZG93KTsKKworICAgIGd0a193aWRnZXRfcmVhbGl6ZShtX3dpbmRvdyk7CisKKyNpZmRlZiBH
REtfV0lORE9XSU5HX1gxMQorICAgIG1fdmlkZW9XaW5kb3dJZCA9IEdES19XSU5ET1dfWElEKGd0
a193aWRnZXRfZ2V0X3dpbmRvdyhtX3dpbmRvdykpOworI2VuZGlmCisKK30KKworUGxhdGZvcm1W
aWRlb1dpbmRvdzo6flBsYXRmb3JtVmlkZW9XaW5kb3coKQoreworICAgIGlmIChtX3ZpZGVvV2lu
ZG93ICYmIG1fd2luZG93KSB7CisgICAgICAgIGd0a19jb250YWluZXJfcmVtb3ZlKEdUS19DT05U
QUlORVIobV93aW5kb3cpLCBtX3ZpZGVvV2luZG93KTsKKyAgICAgICAgZ3RrX3dpZGdldF9kZXN0
cm95KG1fdmlkZW9XaW5kb3cpOworICAgICAgICBtX3ZpZGVvV2luZG93ID0gMDsKKyAgICB9CisK
KyAgICBpZiAobV93aW5kb3cpIHsKKyAgICAgICAgZ3RrX3dpZGdldF9kZXN0cm95KG1fd2luZG93
KTsKKyAgICAgICAgbV93aW5kb3cgPSAwOworICAgIH0KKworICAgIG1fdmlkZW9XaW5kb3dJZCA9
IDA7Cit9CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCmluZGV4IDQ3N2ExYjguLmRlMjU3MmMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCisrKyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzYgQEAKKzIwMTAt
MDctMjAgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHU3RyZWFtZXJdIEdUSyBY
T3ZlcmxheSBzdXBwb3J0IGluIEdTdHJlYW1lckdXb3JsZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0NzQKKworICAgICAgICBOZXcgRnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlciBvYmplY3QsIHByaXZhdGUgaW4gdGhlIHdlYnZpZXcuIEl0CisgICAg
ICAgIGlzIGNyZWF0ZWQgd2hlbiB0aGUgdXNlciBwcmVzc2VzIHRoZSBmdWxsc2NyZWVuIGJ1dHRv
biBvZiB0aGUKKyAgICAgICAgdmlkZW8gY29udHJvbHMuIFZpZGVvIGlzIGRpc3BsYXllZCBpbiBm
dWxsc2NyZWVuLCBjb250cm9scyBhcmUKKyAgICAgICAgZGlzcGxheWVkIHdoZW4gdGhlIHVzZXIg
bW92ZXMgdGhlIG1vdXNlIGFuZCB3aGVuIHRoZSB2aWRlbyBpcworICAgICAgICBwYXVzZWQuIFRo
ZXJlJ3MgYWxzbyBiYXNpYyBrZXlib2FyZCBzaG9ydGN1dHMgc3VwcG9ydDogRi9mIHRvCisgICAg
ICAgIGxlYXZlIGZ1bGxzY3JlZW4sIHNwYWNlIHRvIHRvZ2dsZSBwbGF5L3BhdXNlIGFuZCB1cC9k
b3duIHRvCisgICAgICAgIGNvbnRyb2wgdm9sdW1lLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50Ojpz
dXBwb3J0c0Z1bGxzY3JlZW5Gb3JOb2RlKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50
OjplbnRlckZ1bGxzY3JlZW5Gb3JOb2RlKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50
OjpleGl0RnVsbHNjcmVlbkZvck5vZGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEd0ay5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKGhpZGVIdWRDYWxsYmFjayk6CisgICAgICAg
IChvbkZ1bGxzY3JlZW5HdGtNb3Rpb25Ob3RpZnlFdmVudCk6CisgICAgICAgIChvbkZ1bGxzY3Jl
ZW5HdGtBY3RpdmVOb3RpZmljYXRpb24pOgorICAgICAgICAob25GdWxsc2NyZWVuR3RrQ29uZmln
dXJlRXZlbnQpOgorICAgICAgICAob25GdWxsc2NyZWVuR3RrRGVzdHJveSk6CisgICAgICAgICh0
b2dnbGVQbGF5UGF1c2VBY3RpdmF0ZWQpOgorICAgICAgICAoZXhpdEZ1bGxzY3JlZW5BY3RpdmF0
ZWQpOgorICAgICAgICAocHJvZ3Jlc3NCYXJVcGRhdGVDYWxsYmFjayk6CisgICAgICAgICh0aW1l
U2NhbGVCdXR0b25QcmVzc2VkKToKKyAgICAgICAgKHRpbWVTY2FsZUJ1dHRvblJlbGVhc2VkKToK
KyAgICAgICAgKHRpbWVTY2FsZVZhbHVlQ2hhbmdlZCk6CisgICAgICAgICh2b2x1bWVWYWx1ZUNo
YW5nZWQpOgorICAgICAgICAocGxheWVyVm9sdW1lQ2hhbmdlZENhbGxiYWNrKToKKyAgICAgICAg
KHBsYXllck11dGVDaGFuZ2VkQ2FsbGJhY2spOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlcjo6RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcik6CisgICAgICAgIChGdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyOjp+RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcik6CisgICAgICAgIChG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpzZXRNZWRpYUVsZW1lbnQpOgorICAgICAgICAoRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlcjo6Z3RrQ29uZmlndXJlKToKKyAgICAgICAgKEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI6OnNob3dIdWQpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlcjo6aGlkZUh1ZCk6CisgICAgICAgIChvbkZ1bGxzY3JlZW5HdGtLZXlQcmVzc0V2ZW50
KToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmVudGVyRnVsbHNjcmVlbik6
CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp1cGRhdGVIdWRQb3NpdGlvbik6
CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpleGl0T25Vc2VyUmVxdWVzdCk6
CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpleGl0RnVsbHNjcmVlbik6Cisg
ICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpjYW5QbGF5KToKKyAgICAgICAgKEZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnBsYXkpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcjo6cGF1c2UpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6
cGxheVN0YXRlQ2hhbmdlZCk6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp0
b2dnbGVQbGF5KToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnZvbHVtZSk6
CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjptdXRlZCk6CisgICAgICAgIChG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpzZXRWb2x1bWUpOgorICAgICAgICAoRnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlcjo6dm9sdW1lQ2hhbmdlZCk6CisgICAgICAgIChGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyOjptdXRlQ2hhbmdlZCk6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyOjpjdXJyZW50VGltZSk6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
OjpzZXRDdXJyZW50VGltZSk6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpk
dXJhdGlvbik6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpwZXJjZW50TG9h
ZGVkKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmJlZ2luU2Vlayk6Cisg
ICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpkb1NlZWspOgorICAgICAgICAoRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZW5kU2Vlayk6CisgICAgICAgICh0aW1lVG9TdHJpbmcp
OgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dXBkYXRlSHVkUHJvZ3Jlc3NC
YXIpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6Y3JlYXRlSHVkKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmg6IEFkZGVk
LgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6bWVkaWFFbGVtZW50KToKKyAg
ICAgICAgKiB3ZWJraXQvd2Via2l0cHJpdmF0ZS5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3Zp
ZXdfZW50ZXJfZnVsbHNjcmVlbik6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZXhpdF9mdWxs
c2NyZWVuKToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0cHJpdmF0ZS5oOgorCiAyMDEwLTA4LTEx
ICBKb29uZSBIdXIgIDxqb29uZUBrbGRwLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJ0
aW4gUm9iaW5zb24uCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEd0ay5jcHAgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0
ay5jcHAKaW5kZXggMTg1YWMxNi4uMWM4NDUxZSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkZs
b2F0UmVjdC5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZFJlcXVlc3QuaCIKICNpbmNsdWRlICJHdGtW
ZXJzaW9uaW5nLmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5o
IgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJY29uLmgiCkBAIC02NDEs
NCArNjQyLDI4IEBAIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51PiBDaHJvbWVD
bGllbnQ6OmNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJDb3JlCiAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBTZWFyY2hQb3B1cE1lbnVHdGsoY2xpZW50KSk7CiB9CiAKKyNpZiBFTkFCTEUoVklERU8p
CisKK2Jvb2wgQ2hyb21lQ2xpZW50OjpzdXBwb3J0c0Z1bGxzY3JlZW5Gb3JOb2RlKGNvbnN0IE5v
ZGUqIG5vZGUpCit7CisgICAgcmV0dXJuIG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp2aWRl
b1RhZyk7Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50OjplbnRlckZ1bGxzY3JlZW5Gb3JOb2RlKE5v
ZGUqIG5vZGUpCit7CisgICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQo
KS0+ZnJhbWUoKTsKKyAgICBXZWJLaXRXZWJGcmFtZSogd2ViRnJhbWUgPSBraXQoZnJhbWUpOwor
ICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBnZXRWaWV3RnJvbUZyYW1lKHdlYkZyYW1lKTsK
KyAgICB3ZWJraXRfd2ViX3ZpZXdfZW50ZXJfZnVsbHNjcmVlbih3ZWJWaWV3LCBub2RlKTsKK30K
Kwordm9pZCBDaHJvbWVDbGllbnQ6OmV4aXRGdWxsc2NyZWVuRm9yTm9kZShOb2RlKiBub2RlKQor
eworICAgIFdlYkNvcmU6OkZyYW1lKiBmcmFtZSA9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCk7
CisgICAgV2ViS2l0V2ViRnJhbWUqIHdlYkZyYW1lID0ga2l0KGZyYW1lKTsKKyAgICBXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3ID0gZ2V0Vmlld0Zyb21GcmFtZSh3ZWJGcmFtZSk7CisgICAgd2Via2l0
X3dlYl92aWV3X2V4aXRfZnVsbHNjcmVlbih3ZWJWaWV3KTsKK30KKyNlbmRpZgorCiB9CmRpZmYg
LS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oIGIvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAppbmRleCBlM2JlMWMyLi4y
MWM0Njc3IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEd0ay5oCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgK
QEAgLTEzMyw2ICsxMzMsMTEgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBzZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpOwogICAgICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6UG9wdXBNZW51PiBjcmVhdGVQb3B1cE1lbnUoV2ViQ29y
ZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJDb3JlOjpQ
b3B1cE1lbnVDbGllbnQqKSBjb25zdDsKKyNpZiBFTkFCTEUoVklERU8pCisgICAgICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0c0Z1bGxzY3JlZW5Gb3JOb2RlKGNvbnN0IFdlYkNvcmU6Ok5vZGUqKTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbkZvck5vZGUoV2ViQ29yZTo6Tm9k
ZSopOworICAgICAgICB2aXJ0dWFsIHZvaWQgZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKFdlYkNvcmU6
Ok5vZGUqKTsKKyNlbmRpZgogCiAgICAgcHJpdmF0ZToKICAgICAgICAgV2ViS2l0V2ViVmlldyog
bV93ZWJWaWV3OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyLmNwcCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uOGIxNTllMQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAKQEAgLTAsMCArMSw1OTMgQEAKKy8qCisgKiAg
Q29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgRU5BQkxFKFZJREVPKQorCisjaW5jbHVkZSAiRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlci5oIgorCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKKworI2luY2x1ZGUgPGdkay9n
ZGsuaD4KKyNpbmNsdWRlIDxnZGsvZ2Rra2V5c3ltcy5oPgorI2luY2x1ZGUgPGdsaWIvZ2kxOG4t
bGliLmg+CisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1ZGUgPGd0ay9ndGsuaD4KKwordXNp
bmcgbmFtZXNwYWNlIHN0ZDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCisjZGVmaW5lIEhV
RF9BVVRPX0hJREVfSU5URVJWQUwgMzAwMCAvLyAzIHNlY29uZHMKKyNkZWZpbmUgUFJPR1JFU1Nf
QkFSX1VQREFURV9JTlRFUlZBTCAxNTAgLy8gMTUwbXMKKyNkZWZpbmUgVk9MVU1FX1VQX09GRlNF
VCAwLjA1IC8vIDUlCisjZGVmaW5lIFZPTFVNRV9ET1dOX09GRlNFVCAwLjA1IC8vIDUlCisKKy8v
IFVzZSBzeW1ib2xpYyBpY29ucyBvbmx5IGlmIHdlIGJ1aWxkIHdpdGggR1RLKy0zIHN1cHBvcnQu
IFRoZXkgY291bGQKKy8vIGJlIGVuYWJsZWQgZm9yIHRoZSBHVEsrMiBidWlsZCBidXQgd2UnZCBu
ZWVkIHRvIGJ1bXAgdGhlIHJlcXVpcmVkCisvLyB2ZXJzaW9uIHRvIGF0IGxlYXN0IDIuMjIuCisj
aWZkZWYgR1RLX0FQSV9WRVJTSU9OXzIKKyNkZWZpbmUgUExBWV9JQ09OX05BTUUgIm1lZGlhLXBs
YXliYWNrLXN0YXJ0IgorI2RlZmluZSBQQVVTRV9JQ09OX05BTUUgIm1lZGlhLXBsYXliYWNrLXBh
dXNlIgorI2RlZmluZSBFWElUX0ZVTExTQ1JFRU5fSUNPTl9OQU1FICJ2aWV3LXJlc3RvcmUiCisj
ZWxzZQorI2RlZmluZSBQTEFZX0lDT05fTkFNRSAibWVkaWEtcGxheWJhY2stc3RhcnQtc3ltYm9s
aWMiCisjZGVmaW5lIFBBVVNFX0lDT05fTkFNRSAibWVkaWEtcGxheWJhY2stcGF1c2Utc3ltYm9s
aWMiCisjZGVmaW5lIEVYSVRfRlVMTFNDUkVFTl9JQ09OX05BTUUgInZpZXctcmVzdG9yZS1zeW1i
b2xpYyIKKyNlbmRpZgorCitzdGF0aWMgZ2Jvb2xlYW4gaGlkZUh1ZENhbGxiYWNrKGdwb2ludGVy
IGRhdGEpCit7CisgICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogY29udHJvbGxlciA9IHJl
aW50ZXJwcmV0X2Nhc3Q8RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcio+KGRhdGEpOworICAgIGNv
bnRyb2xsZXItPmhpZGVIdWQoKTsKKyAgICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyBnYm9v
bGVhbiBvbkZ1bGxzY3JlZW5HdGtNb3Rpb25Ob3RpZnlFdmVudChHdGtXaWRnZXQqIHdpZGdldCwg
R2RrRXZlbnRNb3Rpb24qIGV2ZW50LCBncG9pbnRlciBkYXRhKQoreworICAgIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0PEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXIqPihkYXRhKTsKKyAgICBjb250cm9sbGVyLT5zaG93SHVkKHRydWUpOwor
ICAgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgdm9pZCBvbkZ1bGxzY3JlZW5HdGtBY3RpdmVO
b3RpZmljYXRpb24oR3RrV2lkZ2V0KiB3aWRnZXQsIEdQYXJhbVNwZWMqIHByb3BlcnR5LCBncG9p
bnRlciBkYXRhKQoreworICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIg
PSByZWludGVycHJldF9jYXN0PEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqPihkYXRhKTsKKyAg
ICBpZiAoIWd0a193aW5kb3dfaXNfYWN0aXZlKEdUS19XSU5ET1cod2lkZ2V0KSkpCisgICAgICAg
IGNvbnRyb2xsZXItPmhpZGVIdWQoKTsKK30KKworc3RhdGljIGdib29sZWFuIG9uRnVsbHNjcmVl
bkd0a0NvbmZpZ3VyZUV2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudENvbmZpZ3VyZSog
ZXZlbnQsIGdwb2ludGVyIGRhdGEpCit7CisgICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciog
Y29udHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcio+
KGRhdGEpOworICAgIGNvbnRyb2xsZXItPmd0a0NvbmZpZ3VyZShldmVudCk7CisgICAgcmV0dXJu
IFRSVUU7Cit9CisKK3N0YXRpYyB2b2lkIG9uRnVsbHNjcmVlbkd0a0Rlc3Ryb3koR3RrV2lkZ2V0
KiB3aWRnZXQsIGdwb2ludGVyIGRhdGEpCit7CisgICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ciogY29udHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
cio+KGRhdGEpOworICAgIGNvbnRyb2xsZXItPmV4aXRGdWxsc2NyZWVuKCk7Cit9CisKK3N0YXRp
YyB2b2lkIHRvZ2dsZVBsYXlQYXVzZUFjdGl2YXRlZChHdGtBY3Rpb24qIGFjdGlvbiwgZ3BvaW50
ZXIgZGF0YSkKK3sKKyAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBjb250cm9sbGVyID0g
cmVpbnRlcnByZXRfY2FzdDxGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKj4oZGF0YSk7CisgICAg
Y29udHJvbGxlci0+dG9nZ2xlUGxheSgpOworfQorCitzdGF0aWMgdm9pZCBleGl0RnVsbHNjcmVl
bkFjdGl2YXRlZChHdGtBY3Rpb24qIGFjdGlvbiwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyKiBjb250cm9sbGVyID0gcmVpbnRlcnByZXRfY2FzdDxGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyKj4oZGF0YSk7CisgICAgY29udHJvbGxlci0+ZXhpdE9uVXNl
clJlcXVlc3QoKTsKK30KKworc3RhdGljIGdib29sZWFuIHByb2dyZXNzQmFyVXBkYXRlQ2FsbGJh
Y2soZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBjb250
cm9sbGVyID0gcmVpbnRlcnByZXRfY2FzdDxGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKj4oZGF0
YSk7CisgICAgcmV0dXJuIGNvbnRyb2xsZXItPnVwZGF0ZUh1ZFByb2dyZXNzQmFyKCk7Cit9CisK
K3N0YXRpYyBnYm9vbGVhbiB0aW1lU2NhbGVCdXR0b25QcmVzc2VkKEd0a1dpZGdldCogd2lkZ2V0
LCBHZGtFdmVudEJ1dHRvbiogZXZlbnQsIGdwb2ludGVyIGRhdGEpCit7CisgICAgaWYgKGV2ZW50
LT50eXBlICE9IEdES19CVVRUT05fUFJFU1MpCisgICAgICAgIHJldHVybiBGQUxTRTsKKworICAg
IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0
PEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqPihkYXRhKTsKKyAgICBjb250cm9sbGVyLT5iZWdp
blNlZWsoKTsKKyAgICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiB0aW1lU2Nh
bGVCdXR0b25SZWxlYXNlZChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRCdXR0b24qIGV2ZW50
LCBncG9pbnRlciBkYXRhKQoreworICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIGNvbnRy
b2xsZXIgPSByZWludGVycHJldF9jYXN0PEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqPihkYXRh
KTsKKyAgICBjb250cm9sbGVyLT5lbmRTZWVrKCk7CisgICAgcmV0dXJuIEZBTFNFOworfQorCitz
dGF0aWMgdm9pZCB0aW1lU2NhbGVWYWx1ZUNoYW5nZWQoR3RrV2lkZ2V0KiB3aWRnZXQsIGdwb2lu
dGVyIGRhdGEpCit7CisgICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogY29udHJvbGxlciA9
IHJlaW50ZXJwcmV0X2Nhc3Q8RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcio+KGRhdGEpOworICAg
IGNvbnRyb2xsZXItPmRvU2VlaygpOworfQorCitzdGF0aWMgdm9pZCB2b2x1bWVWYWx1ZUNoYW5n
ZWQoR3RrU2NhbGVCdXR0b24gKmJ1dHRvbiwgZ2RvdWJsZSB2YWx1ZSwgZ3BvaW50ZXIgZGF0YSkK
K3sKKyAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBjb250cm9sbGVyID0gcmVpbnRlcnBy
ZXRfY2FzdDxGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKj4oZGF0YSk7CisgICAgY29udHJvbGxl
ci0+c2V0Vm9sdW1lKHN0YXRpY19jYXN0PGZsb2F0Pih2YWx1ZSkpOworfQorCit2b2lkIHBsYXll
clZvbHVtZUNoYW5nZWRDYWxsYmFjayhHT2JqZWN0ICplbGVtZW50LCBHUGFyYW1TcGVjICpwc3Bl
YywgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBjb250
cm9sbGVyID0gcmVpbnRlcnByZXRfY2FzdDxGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKj4oZGF0
YSk7CisgICAgY29udHJvbGxlci0+dm9sdW1lQ2hhbmdlZCgpOworfQorCit2b2lkIHBsYXllck11
dGVDaGFuZ2VkQ2FsbGJhY2soR09iamVjdCAqZWxlbWVudCwgR1BhcmFtU3BlYyAqcHNwZWMsIGdw
b2ludGVyIGRhdGEpCit7CisgICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogY29udHJvbGxl
ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcio+KGRhdGEpOwor
ICAgIGNvbnRyb2xsZXItPm11dGVDaGFuZ2VkKCk7Cit9CisKK0Z1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXI6OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIoKQorICAgIDogbV9odWRUaW1lb3V0SWQo
MCkKKyAgICAsIG1fcHJvZ3Jlc3NCYXJVcGRhdGVJZCgwKQorICAgICwgbV9zZWVrTG9jayhmYWxz
ZSkKKyAgICAsIG1fd2luZG93KDApCisgICAgLCBtX2h1ZFdpbmRvdygwKQoreworfQorCitGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyOjp+RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcigpCit7Cisg
ICAgZXhpdEZ1bGxzY3JlZW4oKTsKK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
OjpzZXRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQoreworICAg
IGlmIChtZWRpYUVsZW1lbnQgPT0gbV9tZWRpYUVsZW1lbnQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fbWVkaWFFbGVtZW50ID0gbWVkaWFFbGVtZW50OworICAgIGlmICghbV9tZWRpYUVsZW1l
bnQpIHsKKyAgICAgICAgLy8gQ2FuJ3QgZG8gZnVsbC1zY3JlZW4sIGp1c3QgZ2V0IG91dAorICAg
ICAgICBleGl0RnVsbHNjcmVlbigpOworICAgIH0KK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyOjpndGtDb25maWd1cmUoR2RrRXZlbnRDb25maWd1cmUqIGV2ZW50KQoreworICAg
IHVwZGF0ZUh1ZFBvc2l0aW9uKCk7Cit9CisKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
cjo6c2hvd0h1ZChib29sIGF1dG9IaWRlKQoreworICAgIGlmICghbV9odWRXaW5kb3cpCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmIChtX2h1ZFRpbWVvdXRJZCkgeworICAgICAgICBnX3NvdXJj
ZV9yZW1vdmUobV9odWRUaW1lb3V0SWQpOworICAgICAgICBtX2h1ZFRpbWVvdXRJZCA9IDA7Cisg
ICAgfQorCisgICAgLy8gU2hvdyB0aGUgY3Vyc29yLgorICAgIEdka1dpbmRvdyogd2luZG93ID0g
Z3RrX3dpZGdldF9nZXRfd2luZG93KG1fd2luZG93KTsKKyAgICBnZGtfd2luZG93X3NldF9jdXJz
b3Iod2luZG93LCBtX2N1cnNvci5nZXQoKSk7CisKKyAgICAvLyBVcGRhdGUgdGhlIHByb2dyZXNz
IGJhciBpbW1lZGlhdGVseSBiZWZvcmUgc2hvd2luZyB0aGUgd2luZG93LgorICAgIHVwZGF0ZUh1
ZFByb2dyZXNzQmFyKCk7CisgICAgZ3RrX3dpZGdldF9zaG93X2FsbChtX2h1ZFdpbmRvdyk7Cisg
ICAgdXBkYXRlSHVkUG9zaXRpb24oKTsKKworICAgIC8vIFN0YXJ0IHBlcmlvZGljIHVwZGF0ZXMg
b2YgdGhlIHByb2dyZXNzIGJhci4KKyAgICBpZiAoIW1fcHJvZ3Jlc3NCYXJVcGRhdGVJZCkKKyAg
ICAgICAgbV9wcm9ncmVzc0JhclVwZGF0ZUlkID0gZ190aW1lb3V0X2FkZChQUk9HUkVTU19CQVJf
VVBEQVRFX0lOVEVSVkFMLCBwcm9ncmVzc0JhclVwZGF0ZUNhbGxiYWNrLCB0aGlzKTsKKworICAg
IC8vIEhpZGUgdGhlIGh1ZCBpbiBmZXcgc2Vjb25kcywgaWYgcmVxdWVzdGVkLgorICAgIGlmIChh
dXRvSGlkZSkKKyAgICAgICAgbV9odWRUaW1lb3V0SWQgPSBnX3RpbWVvdXRfYWRkKEhVRF9BVVRP
X0hJREVfSU5URVJWQUwsIGhpZGVIdWRDYWxsYmFjaywgdGhpcyk7Cit9CisKK3ZvaWQgRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlcjo6aGlkZUh1ZCgpCit7CisgICAgaWYgKG1faHVkVGltZW91dElk
KSB7CisgICAgICAgIGdfc291cmNlX3JlbW92ZShtX2h1ZFRpbWVvdXRJZCk7CisgICAgICAgIG1f
aHVkVGltZW91dElkID0gMDsKKyAgICB9CisKKyAgICBpZiAoIW1faHVkV2luZG93KQorICAgICAg
ICByZXR1cm47CisKKyAgICAvLyBLZWVwIHRoZSBodWQgdmlzaWJsZSBpZiBhIHNlZWsgaXMgaW4g
cHJvZ3Jlc3Mgb3IgaWYgdGhlIHZvbHVtZQorICAgIC8vIHBvcHVwIGlzIHZpc2libGUuCisgICAg
R3RrV2lkZ2V0KiB2b2x1bWVQb3B1cCA9IGd0a19zY2FsZV9idXR0b25fZ2V0X3BvcHVwKEdUS19T
Q0FMRV9CVVRUT04obV92b2x1bWVCdXR0b24pKTsKKyAgICBpZiAobV9zZWVrTG9jayB8fCBndGtf
d2lkZ2V0X2dldF92aXNpYmxlKHZvbHVtZVBvcHVwKSkgeworICAgICAgICBzaG93SHVkKHRydWUp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR2RrV2luZG93KiB3aW5kb3cgPSBndGtf
d2lkZ2V0X2dldF93aW5kb3cobV93aW5kb3cpOworICAgIEdka0N1cnNvciogY3Vyc29yID0gZ2Rr
X2N1cnNvcl9uZXcoR0RLX0JMQU5LX0NVUlNPUik7CisgICAgZ2RrX3dpbmRvd19zZXRfY3Vyc29y
KHdpbmRvdywgY3Vyc29yKTsKKworICAgIGd0a193aWRnZXRfaGlkZV9hbGwobV9odWRXaW5kb3cp
OworCisgICAgaWYgKG1fcHJvZ3Jlc3NCYXJVcGRhdGVJZCkgeworICAgICAgICBnX3NvdXJjZV9y
ZW1vdmUobV9wcm9ncmVzc0JhclVwZGF0ZUlkKTsKKyAgICAgICAgbV9wcm9ncmVzc0JhclVwZGF0
ZUlkID0gMDsKKyAgICB9Cit9CisKK3N0YXRpYyBnYm9vbGVhbiBvbkZ1bGxzY3JlZW5HdGtLZXlQ
cmVzc0V2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEtleSogZXZlbnQsIGdwb2ludGVy
IGRhdGEpCit7CisgICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogY29udHJvbGxlciA9IHJl
aW50ZXJwcmV0X2Nhc3Q8RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcio+KGRhdGEpOworCisgICAg
c3dpdGNoIChldmVudC0+a2V5dmFsKSB7CisgICAgY2FzZSBHREtfRXNjYXBlOgorICAgIGNhc2Ug
J2YnOgorICAgIGNhc2UgJ0YnOgorICAgICAgICBjb250cm9sbGVyLT5leGl0T25Vc2VyUmVxdWVz
dCgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdES19zcGFjZToKKyAgICBjYXNlIEdES19S
ZXR1cm46CisgICAgICAgIGNvbnRyb2xsZXItPnRvZ2dsZVBsYXkoKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBHREtfVXA6CisgICAgICAgIC8vIHZvbHVtZSB1cAorICAgICAgICBjb250cm9s
bGVyLT5zZXRWb2x1bWUoY29udHJvbGxlci0+dm9sdW1lKCkgKyBWT0xVTUVfVVBfT0ZGU0VUKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHREtfRG93bjoKKyAgICAgICAgLy8gdm9sdW1lIGRv
d24KKyAgICAgICAgY29udHJvbGxlci0+c2V0Vm9sdW1lKGNvbnRyb2xsZXItPnZvbHVtZSgpIC0g
Vk9MVU1FX0RPV05fT0ZGU0VUKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIFRSVUU7Cit9CisKKwordm9pZCBGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyOjplbnRlckZ1bGxzY3JlZW4oKQoreworICAgIGlmICghbV9tZWRp
YUVsZW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX21lZGlhRWxlbWVudC0+cGxh
dGZvcm1NZWRpYSgpLnR5cGUgIT0gV2ViQ29yZTo6UGxhdGZvcm1NZWRpYTo6R1N0cmVhbWVyR1dv
cmxkVHlwZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9nc3RyZWFtZXJHV29ybGQgPSBtX21l
ZGlhRWxlbWVudC0+cGxhdGZvcm1NZWRpYSgpLm1lZGlhLmdzdHJlYW1lckdXb3JsZDsKKyAgICBp
ZiAoIW1fZ3N0cmVhbWVyR1dvcmxkLT5lbnRlckZ1bGxzY3JlZW4oKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV93aW5kb3cgPSByZWludGVycHJldF9jYXN0PEd0a1dpZGdldCo+KG1fZ3N0cmVh
bWVyR1dvcmxkLT5wbGF0Zm9ybVZpZGVvV2luZG93KCktPndpbmRvdygpKTsKKworICAgIEdzdEVs
ZW1lbnQqIHBpcGVsaW5lID0gbV9nc3RyZWFtZXJHV29ybGQtPnBpcGVsaW5lKCk7CisgICAgZ19z
aWduYWxfY29ubmVjdChwaXBlbGluZSwgIm5vdGlmeTo6dm9sdW1lIiwgR19DQUxMQkFDSyhwbGF5
ZXJWb2x1bWVDaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KHBp
cGVsaW5lLCAibm90aWZ5OjptdXRlIiwgR19DQUxMQkFDSyhwbGF5ZXJNdXRlQ2hhbmdlZENhbGxi
YWNrKSwgdGhpcyk7CisKKyAgICBpZiAoIW1faHVkV2luZG93KQorICAgICAgICBjcmVhdGVIdWQo
KTsKKworICAgIC8vIEVuc3VyZSBibGFjayBiYWNrZ3JvdW5kLgorICAgIEdka0NvbG9yIGNvbG9y
OworICAgIGdka19jb2xvcl9wYXJzZSgiYmxhY2siLCAmY29sb3IpOworICAgIGd0a193aWRnZXRf
bW9kaWZ5X2JnKG1fd2luZG93LCBHVEtfU1RBVEVfTk9STUFMLCAmY29sb3IpOworICAgIGd0a193
aWRnZXRfc2V0X2RvdWJsZV9idWZmZXJlZChtX3dpbmRvdywgRkFMU0UpOworCisgICAgZ19zaWdu
YWxfY29ubmVjdChtX3dpbmRvdywgImtleS1wcmVzcy1ldmVudCIsIEdfQ0FMTEJBQ0sob25GdWxs
c2NyZWVuR3RrS2V5UHJlc3NFdmVudCksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93
aW5kb3csICJkZXN0cm95IiwgR19DQUxMQkFDSyhvbkZ1bGxzY3JlZW5HdGtEZXN0cm95KSwgdGhp
cyk7CisgICAgZ19zaWduYWxfY29ubmVjdChtX3dpbmRvdywgIm5vdGlmeTo6aXMtYWN0aXZlIiwg
R19DQUxMQkFDSyhvbkZ1bGxzY3JlZW5HdGtBY3RpdmVOb3RpZmljYXRpb24pLCB0aGlzKTsKKwor
CisgICAgZ3RrX3dpZGdldF9zaG93X2FsbChtX3dpbmRvdyk7CisKKyAgICBHZGtXaW5kb3cqIHdp
bmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyhtX3dpbmRvdyk7CisgICAgR2RrQ3Vyc29yKiBj
dXJzb3IgPSBnZGtfY3Vyc29yX25ldyhHREtfQkxBTktfQ1VSU09SKTsKKyAgICBtX2N1cnNvciA9
IGdka193aW5kb3dfZ2V0X2N1cnNvcih3aW5kb3cpOworICAgIGdka193aW5kb3dfc2V0X2N1cnNv
cih3aW5kb3csIGN1cnNvcik7CisgICAgZ2RrX2N1cnNvcl91bnJlZihjdXJzb3IpOworCisgICAg
Z19zaWduYWxfY29ubmVjdChtX3dpbmRvdywgIm1vdGlvbi1ub3RpZnktZXZlbnQiLCBHX0NBTExC
QUNLKG9uRnVsbHNjcmVlbkd0a01vdGlvbk5vdGlmeUV2ZW50KSwgdGhpcyk7CisgICAgZ19zaWdu
YWxfY29ubmVjdChtX3dpbmRvdywgImNvbmZpZ3VyZS1ldmVudCIsIEdfQ0FMTEJBQ0sob25GdWxs
c2NyZWVuR3RrQ29uZmlndXJlRXZlbnQpLCB0aGlzKTsKKworICAgIGd0a193aW5kb3dfZnVsbHNj
cmVlbihHVEtfV0lORE9XKG1fd2luZG93KSk7CisgICAgc2hvd0h1ZCh0cnVlKTsKK30KKwordm9p
ZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp1cGRhdGVIdWRQb3NpdGlvbigpCit7CisgICAg
aWYgKCFtX2h1ZFdpbmRvdykKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gR2V0IHRoZSBzY3Jl
ZW4gcmVjdGFuZ2xlLgorICAgIEdka1NjcmVlbiogc2NyZWVuID0gZ3RrX3dpbmRvd19nZXRfc2Ny
ZWVuKEdUS19XSU5ET1cobV93aW5kb3cpKTsKKyAgICBHZGtXaW5kb3cqIHdpbmRvdyA9IGd0a193
aWRnZXRfZ2V0X3dpbmRvdyhtX3dpbmRvdyk7CisgICAgR2RrUmVjdGFuZ2xlIGZ1bGxzY3JlZW5S
ZWN0YW5nbGU7CisgICAgZ2RrX3NjcmVlbl9nZXRfbW9uaXRvcl9nZW9tZXRyeShzY3JlZW4sIGdk
a19zY3JlZW5fZ2V0X21vbml0b3JfYXRfd2luZG93KHNjcmVlbiwgd2luZG93KSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmdWxsc2NyZWVuUmVjdGFuZ2xlKTsKKworICAg
IC8vIEdldCB0aGUgcG9wdXAgd2luZG93IHNpemUuCisgICAgaW50IGh1ZFdpZHRoLCBodWRIZWln
aHQ7CisgICAgZ3RrX3dpbmRvd19nZXRfc2l6ZShHVEtfV0lORE9XKG1faHVkV2luZG93KSwgJmh1
ZFdpZHRoLCAmaHVkSGVpZ2h0KTsKKworICAgIC8vIFJlc2l6ZSB0aGUgaHVkIHRvIHRoZSBmdWxs
IHdpZHRoIG9mIHRoZSBzY3JlZW4uCisgICAgZ3RrX3dpbmRvd19yZXNpemUoR1RLX1dJTkRPVyht
X2h1ZFdpbmRvdyksIGZ1bGxzY3JlZW5SZWN0YW5nbGUud2lkdGgsIGh1ZEhlaWdodCk7CisKKyAg
ICAvLyBNb3ZlIHRoZSBodWQgdG8gdGhlIGJvdHRvbSBvZiB0aGUgc2NyZWVuLgorICAgIGd0a193
aW5kb3dfbW92ZShHVEtfV0lORE9XKG1faHVkV2luZG93KSwgZnVsbHNjcmVlblJlY3RhbmdsZS54
LAorICAgICAgICAgICAgICAgICAgICBmdWxsc2NyZWVuUmVjdGFuZ2xlLmhlaWdodCArIGZ1bGxz
Y3JlZW5SZWN0YW5nbGUueSAtIGh1ZEhlaWdodCk7Cit9CisKK3ZvaWQgRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcjo6ZXhpdE9uVXNlclJlcXVlc3QoKQoreworICAgIG1fbWVkaWFFbGVtZW50LT5l
eGl0RnVsbHNjcmVlbigpOworfQorCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmV4
aXRGdWxsc2NyZWVuKCkKK3sKKyAgICBpZiAoIW1faHVkV2luZG93KQorICAgICAgICByZXR1cm47
CisKKyAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMobV93aW5kb3csIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9uRnVsbHNjcmVlbkd0a0tleVByZXNzRXZlbnQpLCByZWlu
dGVycHJldF9jYXN0PHZvaWQqPih0aGlzKSk7CisgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29u
bmVjdF9ieV9mdW5jKG1fd2luZG93LCByZWludGVycHJldF9jYXN0PHZvaWQqPihvbkZ1bGxzY3Jl
ZW5HdGtEZXN0cm95KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odGhpcykpOworICAgIGdfc2ln
bmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhtX3dpbmRvdywgcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4ob25GdWxsc2NyZWVuR3RrTW90aW9uTm90aWZ5RXZlbnQpLCByZWludGVycHJldF9j
YXN0PHZvaWQqPih0aGlzKSk7CisgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9m
dW5jKG1fd2luZG93LCByZWludGVycHJldF9jYXN0PHZvaWQqPihvbkZ1bGxzY3JlZW5HdGtDb25m
aWd1cmVFdmVudCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHRoaXMpKTsKKworICAgIEdzdEVs
ZW1lbnQqIHBpcGVsaW5lID0gbV9tZWRpYUVsZW1lbnQtPnBsYXRmb3JtTWVkaWEoKS5tZWRpYS5n
c3RyZWFtZXJHV29ybGQtPnBpcGVsaW5lKCk7CisgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29u
bmVjdF9ieV9mdW5jKHBpcGVsaW5lLCByZWludGVycHJldF9jYXN0PHZvaWQqPihwbGF5ZXJWb2x1
bWVDaGFuZ2VkQ2FsbGJhY2spLCByZWludGVycHJldF9jYXN0PHZvaWQqPih0aGlzKSk7CisgICAg
Z19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHBpcGVsaW5lLCByZWludGVycHJl
dF9jYXN0PHZvaWQqPihwbGF5ZXJNdXRlQ2hhbmdlZENhbGxiYWNrKSwgcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4odGhpcykpOworCisgICAgaWYgKG1faHVkVGltZW91dElkKSB7CisgICAgICAgIGdf
c291cmNlX3JlbW92ZShtX2h1ZFRpbWVvdXRJZCk7CisgICAgICAgIG1faHVkVGltZW91dElkID0g
MDsKKyAgICB9CisKKyAgICBpZiAobV9wcm9ncmVzc0JhclVwZGF0ZUlkKSB7CisgICAgICAgIGdf
c291cmNlX3JlbW92ZShtX3Byb2dyZXNzQmFyVXBkYXRlSWQpOworICAgICAgICBtX3Byb2dyZXNz
QmFyVXBkYXRlSWQgPSAwOworICAgIH0KKworICAgIGlmIChtX21lZGlhRWxlbWVudC0+cGxhdGZv
cm1NZWRpYSgpLnR5cGUgPT0gV2ViQ29yZTo6UGxhdGZvcm1NZWRpYTo6R1N0cmVhbWVyR1dvcmxk
VHlwZSkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnQtPnBsYXRmb3JtTWVkaWEoKS5tZWRpYS5nc3Ry
ZWFtZXJHV29ybGQtPmV4aXRGdWxsc2NyZWVuKCk7CisKKyAgICBndGtfd2lkZ2V0X2hpZGVfYWxs
KG1fd2luZG93KTsKKworICAgIGd0a193aWRnZXRfZGVzdHJveShtX2h1ZFdpbmRvdyk7CisgICAg
bV9odWRXaW5kb3cgPSAwOworfQorCitib29sIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmNh
blBsYXkoKSBjb25zdAoreworICAgIHJldHVybiBtX21lZGlhRWxlbWVudCAmJiBtX21lZGlhRWxl
bWVudC0+Y2FuUGxheSgpOworfQorCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnBs
YXkoKQoreworICAgIGlmIChtX21lZGlhRWxlbWVudCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnQt
PnBsYXkobV9tZWRpYUVsZW1lbnQtPnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKTsKKworICAgIHBs
YXlTdGF0ZUNoYW5nZWQoKTsKKyAgICBzaG93SHVkKHRydWUpOworfQorCit2b2lkIEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI6OnBhdXNlKCkKK3sKKyAgICBpZiAobV9tZWRpYUVsZW1lbnQpCisg
ICAgICAgIG1fbWVkaWFFbGVtZW50LT5wYXVzZShtX21lZGlhRWxlbWVudC0+cHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlKCkpOworCisgICAgcGxheVN0YXRlQ2hhbmdlZCgpOworICAgIHNob3dIdWQoZmFs
c2UpOworfQorCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnBsYXlTdGF0ZUNoYW5n
ZWQoKQoreworICAgIGlmIChjYW5QbGF5KCkpCisgICAgICAgIGdfb2JqZWN0X3NldChtX3BsYXlQ
YXVzZUFjdGlvbiwgInRvb2x0aXAiLCBfKCJQbGF5IiksICJpY29uLW5hbWUiLCBQTEFZX0lDT05f
TkFNRSwgTlVMTCk7CisgICAgZWxzZQorICAgICAgICBnX29iamVjdF9zZXQobV9wbGF5UGF1c2VB
Y3Rpb24sICJ0b29sdGlwIiwgXygiUGF1c2UiKSwgImljb24tbmFtZSIsIFBBVVNFX0lDT05fTkFN
RSwgTlVMTCk7Cit9CisKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dG9nZ2xlUGxh
eSgpCit7CisgICAgaWYgKGNhblBsYXkoKSkKKyAgICAgICAgcGxheSgpOworICAgIGVsc2UKKyAg
ICAgICAgcGF1c2UoKTsKK30KKworZmxvYXQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dm9s
dW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnQgPyBtX21lZGlhRWxlbWVu
dC0+dm9sdW1lKCkgOiAwOworfQorCitib29sIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6Om11
dGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnQgPyBtX21lZGlhRWxlbWVu
dC0+bXV0ZWQoKSA6IGZhbHNlOworfQorCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6
OnNldFZvbHVtZShmbG9hdCB2b2x1bWUpCit7CisgICAgaWYgKHZvbHVtZSA8IDAuMCB8fCB2b2x1
bWUgPiAxLjApCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX21lZGlhRWxlbWVudCkgewor
ICAgICAgICBFeGNlcHRpb25Db2RlIGVjOworICAgICAgICBtX21lZGlhRWxlbWVudC0+c2V0Vm9s
dW1lKHZvbHVtZSwgZWMpOworICAgIH0KK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyOjp2b2x1bWVDaGFuZ2VkKCkKK3sKKyAgICBnX3NpZ25hbF9oYW5kbGVyX2Jsb2NrKG1fdm9s
dW1lQnV0dG9uLCBtX3ZvbHVtZVVwZGF0ZUlkKTsKKyAgICBndGtfc2NhbGVfYnV0dG9uX3NldF92
YWx1ZShHVEtfU0NBTEVfQlVUVE9OKG1fdm9sdW1lQnV0dG9uKSwgdm9sdW1lKCkpOworICAgIGdf
c2lnbmFsX2hhbmRsZXJfdW5ibG9jayhtX3ZvbHVtZUJ1dHRvbiwgbV92b2x1bWVVcGRhdGVJZCk7
Cit9CisKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6bXV0ZUNoYW5nZWQoKQorewor
ICAgIGdfc2lnbmFsX2hhbmRsZXJfYmxvY2sobV92b2x1bWVCdXR0b24sIG1fdm9sdW1lVXBkYXRl
SWQpOworICAgIGd0a19zY2FsZV9idXR0b25fc2V0X3ZhbHVlKEdUS19TQ0FMRV9CVVRUT04obV92
b2x1bWVCdXR0b24pLCBtdXRlZCgpID8gMCA6IHZvbHVtZSgpKTsKKyAgICBnX3NpZ25hbF9oYW5k
bGVyX3VuYmxvY2sobV92b2x1bWVCdXR0b24sIG1fdm9sdW1lVXBkYXRlSWQpOworfQorCitmbG9h
dCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpjdXJyZW50VGltZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fbWVkaWFFbGVtZW50ID8gbV9tZWRpYUVsZW1lbnQtPmN1cnJlbnRUaW1lKCkgOiAw
OworfQorCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnNldEN1cnJlbnRUaW1lKGZs
b2F0IHZhbHVlKQoreworICAgIGlmIChtX21lZGlhRWxlbWVudCkgeworICAgICAgICBFeGNlcHRp
b25Db2RlIGVjOworICAgICAgICBtX21lZGlhRWxlbWVudC0+c2V0Q3VycmVudFRpbWUodmFsdWUs
IGVjKTsKKyAgICB9Cit9CisKK2Zsb2F0IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmR1cmF0
aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnQgPyBtX21lZGlhRWxlbWVu
dC0+ZHVyYXRpb24oKSA6IDA7Cit9CisKK2Zsb2F0IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6
OnBlcmNlbnRMb2FkZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX21lZGlhRWxlbWVudCA/IG1f
bWVkaWFFbGVtZW50LT5wZXJjZW50TG9hZGVkKCkgOiAwOworfQorCit2b2lkIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXI6OmJlZ2luU2VlaygpCit7CisgICAgbV9zZWVrTG9jayA9IHRydWU7CisK
KyAgICBpZiAobV9tZWRpYUVsZW1lbnQpCisgICAgICAgIG1fbWVkaWFFbGVtZW50LT5iZWdpblNj
cnViYmluZygpOworfQorCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmRvU2Vlaygp
Cit7CisgICAgaWYgKCFtX3NlZWtMb2NrKQorICAgICAgICAgcmV0dXJuOworCisgICAgc2V0Q3Vy
cmVudFRpbWUoZ3RrX3JhbmdlX2dldF92YWx1ZShHVEtfUkFOR0UobV90aW1lSFNjYWxlKSkqZHVy
YXRpb24oKSAvIDEwMCk7Cit9CisKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZW5k
U2VlaygpCit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50KQorICAgICAgICBtX21lZGlhRWxlbWVu
dC0+ZW5kU2NydWJiaW5nKCk7CisKKyAgICBtX3NlZWtMb2NrID0gZmFsc2U7Cit9CisKK3N0YXRp
YyBTdHJpbmcgdGltZVRvU3RyaW5nKGZsb2F0IHRpbWUpCit7CisgICAgaWYgKCFpc2Zpbml0ZSh0
aW1lKSkKKyAgICAgICAgdGltZSA9IDA7CisgICAgaW50IHNlY29uZHMgPSBmYWJzZih0aW1lKTsK
KyAgICBpbnQgaG91cnMgPSBzZWNvbmRzIC8gKDYwICogNjApOworICAgIGludCBtaW51dGVzID0g
KHNlY29uZHMgLyA2MCkgJSA2MDsKKyAgICBzZWNvbmRzICU9IDYwOworCisgICAgaWYgKGhvdXJz
KSB7CisgICAgICAgIGlmIChob3VycyA+IDkpCisgICAgICAgICAgICByZXR1cm4gU3RyaW5nOjpm
b3JtYXQoIiVzJTAyZDolMDJkOiUwMmQiLCAodGltZSA8IDAgPyAiLSIgOiAiIiksIGhvdXJzLCBt
aW51dGVzLCBzZWNvbmRzKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlcyUwMWQ6
JTAyZDolMDJkIiwgKHRpbWUgPCAwID8gIi0iIDogIiIpLCBob3VycywgbWludXRlcywgc2Vjb25k
cyk7CisgICAgfQorCisgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlcyUwMmQ6JTAyZCIsICh0
aW1lIDwgMCA/ICItIiA6ICIiKSwgbWludXRlcywgc2Vjb25kcyk7Cit9CisKK2dib29sZWFuIEZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnVwZGF0ZUh1ZFByb2dyZXNzQmFyKCkKK3sKKyAgICBm
bG9hdCBtZWRpYUR1cmF0aW9uKGR1cmF0aW9uKCkpOworICAgIGZsb2F0IG1lZGlhUG9zaXRpb24o
Y3VycmVudFRpbWUoKSk7CisKKyAgICBpZiAoIW1fc2Vla0xvY2spIHsKKyAgICAgICAgZ2RvdWJs
ZSB2YWx1ZSA9IDAuMDsKKworICAgICAgICBpZiAobWVkaWFQb3NpdGlvbiAmJiBtZWRpYUR1cmF0
aW9uKQorICAgICAgICAgICAgdmFsdWUgPSAobWVkaWFQb3NpdGlvbiAqIDEwMC4wKSAvIG1lZGlh
RHVyYXRpb247CisKKyAgICAgICAgR3RrQWRqdXN0bWVudCogYWRqdXN0bWVudCA9IGd0a19yYW5n
ZV9nZXRfYWRqdXN0bWVudChHVEtfUkFOR0UobV90aW1lSFNjYWxlKSk7CisgICAgICAgIGd0a19h
ZGp1c3RtZW50X3NldF92YWx1ZShhZGp1c3RtZW50LCB2YWx1ZSk7CisgICAgfQorCisgICAgZ3Rr
X3JhbmdlX3NldF9maWxsX2xldmVsKEdUS19SQU5HRShtX3RpbWVIU2NhbGUpLCBwZXJjZW50TG9h
ZGVkKCkqIDEwMCk7CisKKyAgICBnY2hhciogbGFiZWwgPSBnX3N0cmR1cF9wcmludGYoIiVzIC8g
JXMiLCB0aW1lVG9TdHJpbmcobWVkaWFQb3NpdGlvbikudXRmOCgpLmRhdGEoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZVRvU3RyaW5nKG1lZGlhRHVyYXRpb24pLnV0
ZjgoKS5kYXRhKCkpOworICAgIGd0a19sYWJlbF9zZXRfdGV4dChHVEtfTEFCRUwobV90aW1lTGFi
ZWwpLCBsYWJlbCk7CisgICAgZ19mcmVlKGxhYmVsKTsKKyAgICByZXR1cm4gVFJVRTsKK30KKwor
dm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpjcmVhdGVIdWQoKQoreworICAgIG1faHVk
V2luZG93ID0gZ3RrX3dpbmRvd19uZXcoR1RLX1dJTkRPV19QT1BVUCk7CisgICAgZ3RrX3dpbmRv
d19zZXRfZ3Jhdml0eShHVEtfV0lORE9XKG1faHVkV2luZG93KSwgR0RLX0dSQVZJVFlfU09VVEhf
V0VTVCk7CisgICAgZ3RrX3dpbmRvd19zZXRfdHlwZV9oaW50KEdUS19XSU5ET1cobV9odWRXaW5k
b3cpLCBHREtfV0lORE9XX1RZUEVfSElOVF9OT1JNQUwpOworCisgICAgZ19zaWduYWxfY29ubmVj
dChtX2h1ZFdpbmRvdywgIm1vdGlvbi1ub3RpZnktZXZlbnQiLCBHX0NBTExCQUNLKG9uRnVsbHNj
cmVlbkd0a01vdGlvbk5vdGlmeUV2ZW50KSwgdGhpcyk7CisKKyAgICBHdGtXaWRnZXQqIGhib3gg
PSBndGtfaGJveF9uZXcoRkFMU0UsIDQpOworICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05U
QUlORVIobV9odWRXaW5kb3cpLCBoYm94KTsKKworICAgIG1fcGxheVBhdXNlQWN0aW9uID0gZ3Rr
X2FjdGlvbl9uZXcoInBsYXkiLCBfKCJQbGF5IC8gUGF1c2UiKSwgXygiUGxheSBvciBwYXVzZSB0
aGUgbWVkaWEiKSwgUEFVU0VfSUNPTl9OQU1FKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fcGxh
eVBhdXNlQWN0aW9uLCAiYWN0aXZhdGUiLCBHX0NBTExCQUNLKHRvZ2dsZVBsYXlQYXVzZUFjdGl2
YXRlZCksIHRoaXMpOworCisgICAgcGxheVN0YXRlQ2hhbmdlZCgpOworCisgICAgR3RrV2lkZ2V0
KiBpdGVtID0gZ3RrX2FjdGlvbl9jcmVhdGVfdG9vbF9pdGVtKG1fcGxheVBhdXNlQWN0aW9uKTsK
KyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChoYm94KSwgaXRlbSwgRkFMU0UsIFRSVUUs
IDApOworCisgICAgR3RrV2lkZ2V0KiBsYWJlbCA9IGd0a19sYWJlbF9uZXcoXygiVGltZToiKSk7
CisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1goaGJveCksIGxhYmVsLCBGQUxTRSwgVFJV
RSwgMCk7CisKKyAgICBHdGtPYmplY3QqIGFkanVzdG1lbnQgPSBndGtfYWRqdXN0bWVudF9uZXco
MC4wLCAwLjAsIDEwMC4wLCAwLjEsIDEuMCwgMS4wKTsKKyAgICBtX3RpbWVIU2NhbGUgPSBndGtf
aHNjYWxlX25ldyhHVEtfQURKVVNUTUVOVChhZGp1c3RtZW50KSk7CisgICAgZ3RrX3NjYWxlX3Nl
dF9kcmF3X3ZhbHVlKEdUS19TQ0FMRShtX3RpbWVIU2NhbGUpLCBGQUxTRSk7CisgICAgZ3RrX3Jh
bmdlX3NldF9zaG93X2ZpbGxfbGV2ZWwoR1RLX1JBTkdFKG1fdGltZUhTY2FsZSksIFRSVUUpOwor
ICAgIGd0a19yYW5nZV9zZXRfdXBkYXRlX3BvbGljeShHVEtfUkFOR0UobV90aW1lSFNjYWxlKSwg
R1RLX1VQREFURV9DT05USU5VT1VTKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fdGltZUhTY2Fs
ZSwgImJ1dHRvbi1wcmVzcy1ldmVudCIsIEdfQ0FMTEJBQ0sodGltZVNjYWxlQnV0dG9uUHJlc3Nl
ZCksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV90aW1lSFNjYWxlLCAiYnV0dG9uLXJl
bGVhc2UtZXZlbnQiLCBHX0NBTExCQUNLKHRpbWVTY2FsZUJ1dHRvblJlbGVhc2VkKSwgdGhpcyk7
CisgICAgbV9oc2NhbGVVcGRhdGVJZCA9IGdfc2lnbmFsX2Nvbm5lY3QobV90aW1lSFNjYWxlLCAi
dmFsdWUtY2hhbmdlZCIsIEdfQ0FMTEJBQ0sodGltZVNjYWxlVmFsdWVDaGFuZ2VkKSwgdGhpcyk7
CisKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChoYm94KSwgbV90aW1lSFNjYWxlLCBU
UlVFLCBUUlVFLCAwKTsKKworICAgIG1fdGltZUxhYmVsID0gZ3RrX2xhYmVsX25ldygiIik7Cisg
ICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1goaGJveCksIG1fdGltZUxhYmVsLCBGQUxTRSwg
VFJVRSwgMCk7CisKKyAgICAvLyBWb2x1bWUgYnV0dG9uLgorICAgIG1fdm9sdW1lQnV0dG9uID0g
Z3RrX3ZvbHVtZV9idXR0b25fbmV3KCk7CisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1go
aGJveCksIG1fdm9sdW1lQnV0dG9uLCBGQUxTRSwgVFJVRSwgMCk7CisgICAgZ3RrX3NjYWxlX2J1
dHRvbl9zZXRfdmFsdWUoR1RLX1NDQUxFX0JVVFRPTihtX3ZvbHVtZUJ1dHRvbiksIHZvbHVtZSgp
KTsKKyAgICBtX3ZvbHVtZVVwZGF0ZUlkID0gZ19zaWduYWxfY29ubmVjdChtX3ZvbHVtZUJ1dHRv
biwgInZhbHVlLWNoYW5nZWQiLCBHX0NBTExCQUNLKHZvbHVtZVZhbHVlQ2hhbmdlZCksIHRoaXMp
OworCisKKyAgICBtX2V4aXRGdWxsc2NyZWVuQWN0aW9uID0gZ3RrX2FjdGlvbl9uZXcoImV4aXQi
LCBfKCJFeGl0IEZ1bGxzY3JlZW4iKSwgXygiRXhpdCBmcm9tIGZ1bGxzY3JlZW4gbW9kZSIpLCBF
WElUX0ZVTExTQ1JFRU5fSUNPTl9OQU1FKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fZXhpdEZ1
bGxzY3JlZW5BY3Rpb24sICJhY3RpdmF0ZSIsIEdfQ0FMTEJBQ0soZXhpdEZ1bGxzY3JlZW5BY3Rp
dmF0ZWQpLCB0aGlzKTsKKyAgICBnX29iamVjdF9zZXQobV9leGl0RnVsbHNjcmVlbkFjdGlvbiwg
Imljb24tbmFtZSIsIEVYSVRfRlVMTFNDUkVFTl9JQ09OX05BTUUsIE5VTEwpOworICAgIGl0ZW0g
PSBndGtfYWN0aW9uX2NyZWF0ZV90b29sX2l0ZW0obV9leGl0RnVsbHNjcmVlbkFjdGlvbik7Cisg
ICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1goaGJveCksIGl0ZW0sIEZBTFNFLCBUUlVFLCAw
KTsKKworCisgICAgbV9wcm9ncmVzc0JhclVwZGF0ZUlkID0gZ190aW1lb3V0X2FkZChQUk9HUkVT
U19CQVJfVVBEQVRFX0lOVEVSVkFMLCBwcm9ncmVzc0JhclVwZGF0ZUNhbGxiYWNrLCB0aGlzKTsK
KworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlci5oIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMzFiN2ZmMAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogIENv
cHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqICB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgRnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlcl9oCisjZGVmaW5lIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJfaAor
CisjaWYgRU5BQkxFKFZJREVPKQorCisjaW5jbHVkZSAiR1JlZlB0ci5oIgorI2luY2x1ZGUgIkdT
dHJlYW1lckdXb3JsZC5oIgorI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CisKK3R5cGVkZWYgc3RydWN0IF9HdGtPYmplY3QgR3RrT2JqZWN0Owor
dHlwZWRlZiBzdHJ1Y3QgX0d0a1dpZGdldCBHdGtXaWRnZXQ7Cit0eXBlZGVmIHN0cnVjdCBfR3Rr
QWN0aW9uIEd0a0FjdGlvbjsKK3R5cGVkZWYgc3RydWN0IF9HZGtDdXJzb3IgR2RrQ3Vyc29yOwor
dHlwZWRlZiBzdHJ1Y3QgX0dka0V2ZW50Q29uZmlndXJlIEdka0V2ZW50Q29uZmlndXJlOworCisK
K2NsYXNzIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIgOiBwdWJsaWMgTm9uY29weWFibGUgewor
cHVibGljOgorICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIoKTsKKyAgICB2aXJ0dWFsIH5G
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKCk7CisKKyAgICB2b2lkIHNldE1lZGlhRWxlbWVudChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dCogbWVkaWFFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUVsZW1lbnQuZ2V0KCk7IH0K
KworICAgIHZvaWQgZ3RrQ29uZmlndXJlKEdka0V2ZW50Q29uZmlndXJlKiBldmVudCk7CisKKyAg
ICB2b2lkIGVudGVyRnVsbHNjcmVlbigpOworICAgIHZvaWQgZXhpdEZ1bGxzY3JlZW4oKTsKKwor
ICAgIHZvaWQgZXhpdE9uVXNlclJlcXVlc3QoKTsKKyAgICB2b2lkIHRvZ2dsZVBsYXkoKTsKKyAg
ICB2b2lkIGJlZ2luU2VlaygpOworICAgIHZvaWQgZG9TZWVrKCk7CisgICAgdm9pZCBlbmRTZWVr
KCk7CisKKyAgICB2b2lkIGhpZGVIdWQoKTsKKyAgICB2b2lkIHNob3dIdWQoYm9vbCk7CisgICAg
Z2Jvb2xlYW4gdXBkYXRlSHVkUHJvZ3Jlc3NCYXIoKTsKKworICAgIGZsb2F0IHZvbHVtZSgpIGNv
bnN0OworICAgIHZvaWQgc2V0Vm9sdW1lKGZsb2F0KTsKKyAgICB2b2lkIHZvbHVtZUNoYW5nZWQo
KTsKKyAgICB2b2lkIG11dGVDaGFuZ2VkKCk7CisKK3ByaXZhdGU6CisgICAgYm9vbCBjYW5QbGF5
KCkgY29uc3Q7CisgICAgdm9pZCBwbGF5KCk7CisgICAgdm9pZCBwYXVzZSgpOworICAgIHZvaWQg
cGxheVN0YXRlQ2hhbmdlZCgpOworCisgICAgYm9vbCBtdXRlZCgpIGNvbnN0OworCisgICAgZmxv
YXQgY3VycmVudFRpbWUoKSBjb25zdDsKKyAgICB2b2lkIHNldEN1cnJlbnRUaW1lKGZsb2F0KTsK
KworICAgIGZsb2F0IGR1cmF0aW9uKCkgY29uc3Q7CisgICAgZmxvYXQgcGVyY2VudExvYWRlZCgp
IGNvbnN0OworCisgICAgdm9pZCBjcmVhdGVIdWQoKTsKKyAgICB2b2lkIHVwZGF0ZUh1ZFBvc2l0
aW9uKCk7CisKKyAgICBSZWZQdHI8V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudD4gbV9tZWRpYUVs
ZW1lbnQ7CisgICAgUmVmUHRyPFdlYkNvcmU6OkdTdHJlYW1lckdXb3JsZD4gbV9nc3RyZWFtZXJH
V29ybGQ7CisKKyAgICBndWludCBtX2h1ZFRpbWVvdXRJZDsKKyAgICBndWludCBtX3Byb2dyZXNz
QmFyVXBkYXRlSWQ7CisgICAgZ3VpbnQgbV9wcm9ncmVzc0JhckZpbGxVcGRhdGVJZDsKKyAgICBn
dWludCBtX2hzY2FsZVVwZGF0ZUlkOworICAgIGd1aW50IG1fdm9sdW1lVXBkYXRlSWQ7CisgICAg
Ym9vbCBtX3NlZWtMb2NrOworICAgIEd0a1dpZGdldCogbV93aW5kb3c7CisgICAgR1JlZlB0cjxH
ZGtDdXJzb3I+IG1fY3Vyc29yOworICAgIEd0a1dpZGdldCogbV9odWRXaW5kb3c7CisgICAgR3Rr
QWN0aW9uKiBtX3BsYXlQYXVzZUFjdGlvbjsKKyAgICBHdGtBY3Rpb24qIG1fZXhpdEZ1bGxzY3Jl
ZW5BY3Rpb247CisgICAgR3RrV2lkZ2V0KiBtX3RpbWVIU2NhbGU7CisgICAgR3RrV2lkZ2V0KiBt
X3RpbWVMYWJlbDsKKyAgICBHdGtXaWRnZXQqIG1fdm9sdW1lQnV0dG9uOworfTsKKworI2VuZGlm
CisKKyNlbmRpZiAvLyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyX2gKZGlmZiAtLWdpdCBhL1dl
YktpdC9ndGsvcG8vQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9wby9DaGFuZ2VMb2cKaW5kZXggZjA4
ODI3NS4uNGExMjQ4OSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9wby9DaGFuZ2VMb2cKKysrIGIv
V2ViS2l0L2d0ay9wby9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMC0wNy0yMCAgUGhp
bGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dTdHJlYW1lcl0gR1RLIFhPdmVybGF5IHN1
cHBvcnQgaW4gR1N0cmVhbWVyR1dvcmxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zOTQ3NAorCisgICAgICAgICogUE9URklMRVM6IEFkZGVkIG5ldyBm
aWxlIHRoYXQgY29udGFpbnMgc3RyaW5ncyB0byBleHRyYWN0LgorCiAyMDEwLTA4LTAzIEpvcmdl
IEdvbnrDoWxleiAgPGFsb3JpZWxAZ21haWwuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEd1
c3Rhdm8gTm9yb25oYS4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvcG8vUE9URklMRVMgYi9XZWJL
aXQvZ3RrL3BvL1BPVEZJTEVTCmluZGV4IDA1YmExMzguLmZmZDAwMTUgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9ndGsvcG8vUE9URklMRVMKKysrIGIvV2ViS2l0L2d0ay9wby9QT1RGSUxFUwpAQCAtMSw2
ICsxLDcgQEAKICMgTGlzdCBvZiBzb3VyY2UgZmlsZXMgd2hpY2ggY29udGFpbiB0cmFuc2xhdGFi
bGUgc3RyaW5ncy4KIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNw
cAogV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEd0ay5jcHAKK1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAKIFdl
YktpdC9ndGsvd2Via2l0L3dlYmtpdGRvd25sb2FkLmNwcAogV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0c291cGF1dGhkaWFsb2cuYwogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3Bw
CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmNwcCBiL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuY3BwCmluZGV4IDQxZGU3NmUuLjkyODc0MjIgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuY3BwCisrKyBiL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAjaW5jbHVk
ZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudEd0ay5oIgogI2lu
Y2x1ZGUgIkd0a1ZlcnNpb25pbmcuaCIKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1
ZGUgIkljb25EYXRhYmFzZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTQ5LDYgKzUxLDEw
IEBACiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCisj
aWYgRU5BQkxFKFZJREVPKQorI2luY2x1ZGUgIkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaCIK
KyNlbmRpZgorCiAjaWYgRU5BQkxFKERBVEFCQVNFKQogI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tl
ci5oIgogI2VuZGlmCkBAIC0yODEsMyArMjg3LDMzIEBAIHZvaWQgd2Via2l0X3Jlc2V0X29yaWdp
bl9hY2Nlc3Nfd2hpdGVfbGlzdHMoKQogewogICAgIFNlY3VyaXR5T3JpZ2luOjpyZXNldE9yaWdp
bkFjY2Vzc1doaXRlbGlzdHMoKTsKIH0KKworCit2b2lkIHdlYmtpdF93ZWJfdmlld19lbnRlcl9m
dWxsc2NyZWVuKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIE5vZGUqIG5vZGUpCit7CisgICAgaWYg
KCFub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dmlkZW9UYWcpKQorICAgICAgICByZXR1cm47
CisKKyNpZiBFTkFCTEUoVklERU8pCisgICAgSFRNTE1lZGlhRWxlbWVudCogdmlkZW9FbGVtZW50
ID0gc3RhdGljX2Nhc3Q8SFRNTE1lZGlhRWxlbWVudCo+KG5vZGUpOworICAgIFdlYktpdFdlYlZp
ZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKKworICAgIC8vIEZpcnN0IGV4aXQgRnVs
bHNjcmVlbiBmb3IgdGhlIG9sZCBtZWRpYUVsZW1lbnQuCisgICAgaWYgKHByaXYtPmZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXIpCisgICAgICAgIHByaXYtPmZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXItPmV4aXRGdWxsc2NyZWVuKCk7CisKKyAgICBwcml2LT5mdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyID0gbmV3IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI7CisgICAgcHJpdi0+ZnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlci0+c2V0TWVkaWFFbGVtZW50KHZpZGVvRWxlbWVudCk7CisgICAgcHJp
di0+ZnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci0+ZW50ZXJGdWxsc2NyZWVuKCk7CisjZW5kaWYK
K30KKwordm9pZCB3ZWJraXRfd2ViX3ZpZXdfZXhpdF9mdWxsc2NyZWVuKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcpCit7CisjaWYgRU5BQkxFKFZJREVPKQorICAgIFdlYktpdFdlYlZpZXdQcml2YXRl
KiBwcml2ID0gd2ViVmlldy0+cHJpdjsKKyAgICBpZiAocHJpdi0+ZnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlcikKKyAgICAgICAgcHJpdi0+ZnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci0+ZXhpdEZ1
bGxzY3JlZW4oKTsKKyNlbmRpZgorfQorCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXRwcml2YXRlLmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgKaW5kZXgg
YTZlMDA3Mi4uZDc0ODc1ZSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJp
dmF0ZS5oCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaApAQCAtNTYsNiAr
NTYsOCBAQAogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudEd0ay5oIgogI2luY2x1ZGUgIkludFBv
aW50LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlBhZ2Uu
aCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVz
dC5oIgpAQCAtMTU3LDYgKzE1OSw4IEBAIGV4dGVybiAiQyIgewogICAgICAgICBnYm9vbGVhbiBk
aXNwb3Npbmc7CiAgICAgICAgIGdib29sZWFuIHVzZVByaW1hcnlGb3JQYXN0ZTsKIAorICAgICAg
ICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBmdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOwor
CiAgICAgICAgIC8vIFRoZXNlIGFyZSBob3N0ZWQgaGVyZSBiZWNhdXNlIHRoZSBEYXRhU291cmNl
IG9iamVjdCBpcwogICAgICAgICAvLyBjcmVhdGVkIHRvbyBsYXRlIGluIHRoZSBmcmFtZSBsb2Fk
aW5nIHByb2Nlc3MuCiAgICAgICAgIFdlYktpdFdlYlJlc291cmNlKiBtYWluUmVzb3VyY2U7CkBA
IC00MDYsNiArNDEwLDkgQEAgZXh0ZXJuICJDIiB7CiAKICAgICBXRUJLSVRfQVBJIHZvaWQKICAg
ICB3ZWJraXRfd2ViX2ZyYW1lX2xheW91dChXZWJLaXRXZWJGcmFtZSogZnJhbWUpOworCisgICAg
dm9pZCB3ZWJraXRfd2ViX3ZpZXdfZW50ZXJfZnVsbHNjcmVlbihXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3LCBXZWJDb3JlOjpOb2RlKiBub2RlKTsKKyAgICB2b2lkIHdlYmtpdF93ZWJfdmlld19leGl0
X2Z1bGxzY3JlZW4oV2ViS2l0V2ViVmlldyogd2ViVmlldyk7CiB9CiAKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IDM2NWRlNzIuLjhlODZlZTMg
MTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTgzMSw2ICs4
MzEsNyBAQCBpZiB0ZXN0ICIkZW5hYmxlX3ZpZGVvIiA9ICJ5ZXMiOyB0aGVuCiAgICAgICAgICAg
ICAgICAgICAgICBbZ3N0cmVhbWVyLTAuMTAgPj0gJEdTVFJFQU1FUl9SRVFVSVJFRF9WRVJTSU9O
CiAgICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXItYXBwLTAuMTAKICAgICAgICAgICAgICAg
ICAgICAgIGdzdHJlYW1lci1iYXNlLTAuMTAKKyAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1l
ci1pbnRlcmZhY2VzLTAuMTAKICAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1wYnV0aWxz
LTAuMTAKICAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1wbHVnaW5zLWJhc2UtMC4xMCA+
PSAkR1NUUkVBTUVSX1BMVUdJTlNfQkFTRV9SRVFVSVJFRF9WRVJTSU9OCiAgICAgICAgICAgICAg
ICAgICAgICBnc3RyZWFtZXItdmlkZW8tMC4xMF0pCi0tIAoxLjcuMQ==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64203</attachid>
            <date>2010-08-12 03:13:02 -0700</date>
            <delta_ts>2010-08-17 00:40:00 -0700</delta_ts>
            <desc>tests rebaselined</desc>
            <filename>tests-rebaselined.patch</filename>
            <type>text/plain</type>
            <size>12628</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSAxNTE4MjA5NjliZTc3N2RlNmZhOTQ5M2I0Y2ZmZTFkYmZhZTcwYWRhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBGcmksIDI4IE1heSAyMDEwIDE3OjAwOjQ0ICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
dGVzdHMgcmViYXNlbGluZWQKCi0tLQogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgIDE2ICsrKysrKysrKysrKysrKysKIC4uLi9ndGsvbWVkaWEv
Y29udHJvbHMtYWZ0ZXItcmVsb2FkLWV4cGVjdGVkLnR4dCAgIHwgICAgNSArKystLQogLi4uL2d0
ay9tZWRpYS9jb250cm9scy1kcmFnLXRpbWViYXItZXhwZWN0ZWQudHh0ICAgfCAgICA2ICsrKy0t
LQogLi4uL2d0ay9tZWRpYS9jb250cm9scy1zdHJpY3QtZXhwZWN0ZWQudHh0ICAgICAgICAgfCAg
ICA1ICsrKy0tCiAuLi4vZ3RrL21lZGlhL2NvbnRyb2xzLXN0eWxpbmctZXhwZWN0ZWQudHh0ICAg
ICAgICB8ICAgMTAgKysrKysrLS0tLQogLi4uL21lZGlhL3ZpZGVvLWNvbnRyb2xzLXJlbmRlcmlu
Zy1leHBlY3RlZC50eHQgICAgfCAgIDE1ICsrKysrKysrKy0tLS0tLQogLi4uL2d0ay9tZWRpYS92
aWRlby1kaXNwbGF5LXRvZ2dsZS1leHBlY3RlZC50eHQgICAgfCAgICA1ICsrKy0tCiAuLi4vcGxh
dGZvcm0vZ3RrL21lZGlhL3ZpZGVvLW5vLWF1ZGlvLWV4cGVjdGVkLnR4dCB8ICAgIDUgKysrLS0K
IC4uLi9ndGsvbWVkaWEvdmlkZW8tem9vbS1jb250cm9scy1leHBlY3RlZC50eHQgICAgIHwgICAx
MCArKysrKystLS0tCiA5IGZpbGVzIGNoYW5nZWQsIDUyIGluc2VydGlvbnMoKyksIDI1IGRlbGV0
aW9ucygtKQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCBlMzU0YzJkLi41YmU0NTA2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTAtMDctMTAgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHU3RyZWFtZXJd
IEdUSyBYT3ZlcmxheSBzdXBwb3J0IGluIEdTdHJlYW1lckdXb3JsZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0NzQKKworICAgICAgICBSZWJhc2Vs
aW5lZCB0ZXN0cyBzaG93aW5nIHRoZSB2aWRlbyBjb250cm9scyBjb250YWluaW5nIHRoZSBuZXcK
KyAgICAgICAgZnVsbHNjcmVlbiBidXR0b24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvbWVk
aWEvY29udHJvbHMtYWZ0ZXItcmVsb2FkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ndGsvbWVkaWEvY29udHJvbHMtZHJhZy10aW1lYmFyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ndGsvbWVkaWEvY29udHJvbHMtc3RyaWN0LWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ndGsvbWVkaWEvY29udHJvbHMtc3R5bGluZy1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL21lZGlhL3ZpZGVvLWNvbnRyb2xzLXJlbmRlcmluZy1leHBl
Y3RlZC50eHQ6CisKIDIwMTAtMDgtMTIgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9tZWRpYS9jb250cm9scy1hZnRlci1yZWxvYWQt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlhL2NvbnRyb2xzLWFm
dGVyLXJlbG9hZC1leHBlY3RlZC50eHQKaW5kZXggYTBiYWUxOC4uZjc3NmViMCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlhL2NvbnRyb2xzLWFmdGVyLXJlbG9hZC1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlhL2NvbnRyb2xz
LWFmdGVyLXJlbG9hZC1leHBlY3RlZC50eHQKQEAgLTE1LDkgKzE1LDEwIEBAIGxheWVyIGF0ICg4
LDQ0KSBzaXplIDMyMHgyNDAKIGxheWVyIGF0ICg4LDI2NCkgc2l6ZSAzMjB4MjAKICAgUmVuZGVy
RmxleGlibGVCb3ggKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgwLDIyMCkgc2l6ZSAzMjB4MjAKICAg
ICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMCwwKSBzaXplIDIweDIwCi0gICAgUmVuZGVyRmxl
eGlibGVCb3gge0RJVn0gYXQgKDIwLDApIHNpemUgMjQweDIwIFtib3JkZXI6ICgxcHggc29saWQg
I0ZGRkZGRjMzKSBub25lICgxcHggc29saWQgI0ZGRkZGRjMzKV0KLSAgICAgIFJlbmRlclNsaWRl
ciB7SU5QVVR9IGF0ICgxLDApIHNpemUgMjM4eDIwCisgICAgUmVuZGVyRmxleGlibGVCb3gge0RJ
Vn0gYXQgKDIwLDApIHNpemUgMjIweDIwIFtib3JkZXI6ICgxcHggc29saWQgI0ZGRkZGRjMzKSBu
b25lICgxcHggc29saWQgI0ZGRkZGRjMzKV0KKyAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0
ICgxLDApIHNpemUgMjE4eDIwCiAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDQpIHNp
emUgMTJ4MTIKKyAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjQwLDApIHNpemUgMjB4MjAK
ICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjYwLDApIHNpemUgMjB4MjAKICAgICBSZW5k
ZXJCdXR0b24ge0lOUFVUfSBhdCAoMjgwLDApIHNpemUgMjB4MjAKICAgICBSZW5kZXJCdXR0b24g
e0lOUFVUfSBhdCAoMzAwLDApIHNpemUgMjB4MjAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9tZWRpYS9jb250cm9scy1kcmFnLXRpbWViYXItZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlhL2NvbnRyb2xzLWRyYWctdGltZWJhci1leHBlY3Rl
ZC50eHQKaW5kZXggNjkzNmJlNC4uYTQxMjExYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL21lZGlhL2NvbnRyb2xzLWRyYWctdGltZWJhci1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlhL2NvbnRyb2xzLWRyYWctdGltZWJhci1leHBl
Y3RlZC50eHQKQEAgLTQsMTAgKzQsMTAgQEAgUlVOKHZpZGVvLmF1dG9wbGF5ID0gdHJ1ZSkKIFJV
Tih2aWRlby5zcmMgPSAnY29udGVudC90ZXN0Lm1wNCcpCiBFVkVOVChwbGF5aW5nKQogRVZFTlQo
c2Vla2VkKQotVGltZTogMi4xCitUaW1lOiAyLjQKIEVWRU5UKHNlZWtlZCkKLVRpbWU6IDIuNwor
VGltZTogMy4wCiBFVkVOVChzZWVrZWQpCi1UaW1lOiAzLjIKK1RpbWU6IDMuNgogRU5EIE9GIFRF
U1QKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlhL2NvbnRyb2xz
LXN0cmljdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvbWVkaWEvY29u
dHJvbHMtc3RyaWN0LWV4cGVjdGVkLnR4dAppbmRleCBiZTM2MTViLi4zZjk2ZDAzIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvbWVkaWEvY29udHJvbHMtc3RyaWN0LWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvbWVkaWEvY29udHJvbHMtc3Ry
aWN0LWV4cGVjdGVkLnR4dApAQCAtMTUsOSArMTUsMTAgQEAgbGF5ZXIgYXQgKDgsNTIpIHNpemUg
MzIweDI0MAogbGF5ZXIgYXQgKDgsMjcyKSBzaXplIDMyMHgyMAogICBSZW5kZXJGbGV4aWJsZUJv
eCAocG9zaXRpb25lZCkge0RJVn0gYXQgKDAsMjIwKSBzaXplIDMyMHgyMAogICAgIFJlbmRlckJ1
dHRvbiB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjB4MjAKLSAgICBSZW5kZXJGbGV4aWJsZUJveCB7
RElWfSBhdCAoMjAsMCkgc2l6ZSAyNDB4MjAgW2JvcmRlcjogKDFweCBzb2xpZCAjRkZGRkZGMzMp
IG5vbmUgKDFweCBzb2xpZCAjRkZGRkZGMzMpXQotICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0g
YXQgKDEsMCkgc2l6ZSAyMzh4MjAKKyAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMjAs
MCkgc2l6ZSAyMjB4MjAgW2JvcmRlcjogKDFweCBzb2xpZCAjRkZGRkZGMzMpIG5vbmUgKDFweCBz
b2xpZCAjRkZGRkZGMzMpXQorICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDEsMCkgc2l6
ZSAyMTh4MjAKICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsNCkgc2l6ZSAxMngxMgor
ICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyNDAsMCkgc2l6ZSAyMHgyMAogICAgIFJlbmRl
ckJ1dHRvbiB7SU5QVVR9IGF0ICgyNjAsMCkgc2l6ZSAyMHgyMAogICAgIFJlbmRlckJ1dHRvbiB7
SU5QVVR9IGF0ICgyODAsMCkgc2l6ZSAyMHgyMAogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0
ICgzMDAsMCkgc2l6ZSAyMHgyMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L21lZGlhL2NvbnRyb2xzLXN0eWxpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL21lZGlhL2NvbnRyb2xzLXN0eWxpbmctZXhwZWN0ZWQudHh0CmluZGV4IGZlOTQxZGYu
LmJmODUxM2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9tZWRpYS9jb250
cm9scy1zdHlsaW5nLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
bWVkaWEvY29udHJvbHMtc3R5bGluZy1leHBlY3RlZC50eHQKQEAgLTE5LDkgKzE5LDEwIEBAIGxh
eWVyIGF0ICgxOCw0NCkgc2l6ZSAzMjB4MjQwCiBsYXllciBhdCAoMTgsMjY0KSBzaXplIDMyMHgy
MAogICBSZW5kZXJGbGV4aWJsZUJveCAocG9zaXRpb25lZCkge0RJVn0gYXQgKDAsMjIwKSBzaXpl
IDMyMHgyMAogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjB4MjAKLSAg
ICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMjAsMCkgc2l6ZSAyNDB4MjAgW2JvcmRlcjog
KDFweCBzb2xpZCAjRkZGRkZGMzMpIG5vbmUgKDFweCBzb2xpZCAjRkZGRkZGMzMpXQotICAgICAg
UmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDEsMCkgc2l6ZSAyMzh4MjAKKyAgICBSZW5kZXJGbGV4
aWJsZUJveCB7RElWfSBhdCAoMjAsMCkgc2l6ZSAyMjB4MjAgW2JvcmRlcjogKDFweCBzb2xpZCAj
RkZGRkZGMzMpIG5vbmUgKDFweCBzb2xpZCAjRkZGRkZGMzMpXQorICAgICAgUmVuZGVyU2xpZGVy
IHtJTlBVVH0gYXQgKDEsMCkgc2l6ZSAyMTh4MjAKICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0g
YXQgKDIsNCkgc2l6ZSAxMngxMgorICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyNDAsMCkg
c2l6ZSAyMHgyMAogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyNjAsMCkgc2l6ZSAyMHgy
MAogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyODAsMCkgc2l6ZSAyMHgyMAogICAgIFJl
bmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgzMDAsMCkgc2l6ZSAyMHgyMApAQCAtMzAsOSArMzEsMTAg
QEAgbGF5ZXIgYXQgKDgsMjg0KSBzaXplIDMyMHgyNDAKIGxheWVyIGF0ICg4LDUwNCkgc2l6ZSAz
MjB4MjAKICAgUmVuZGVyRmxleGlibGVCb3ggKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgwLDIyMCkg
c2l6ZSAzMjB4MjAKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMCwwKSBzaXplIDIweDIw
Ci0gICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDIwLDApIHNpemUgMjQweDIwIFtib3Jk
ZXI6ICgxcHggc29saWQgI0ZGRkZGRjMzKSBub25lICgxcHggc29saWQgI0ZGRkZGRjMzKV0KLSAg
ICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgxLDApIHNpemUgMjM4eDIwCisgICAgUmVuZGVy
RmxleGlibGVCb3gge0RJVn0gYXQgKDIwLDApIHNpemUgMjIweDIwIFtib3JkZXI6ICgxcHggc29s
aWQgI0ZGRkZGRjMzKSBub25lICgxcHggc29saWQgI0ZGRkZGRjMzKV0KKyAgICAgIFJlbmRlclNs
aWRlciB7SU5QVVR9IGF0ICgxLDApIHNpemUgMjE4eDIwCiAgICAgICAgIFJlbmRlckJsb2NrIHtE
SVZ9IGF0ICgyLDQpIHNpemUgMTJ4MTIKKyAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjQw
LDApIHNpemUgMjB4MjAKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjYwLDApIHNpemUg
MjB4MjAKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjgwLDApIHNpemUgMjB4MjAKICAg
ICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMzAwLDApIHNpemUgMjB4MjAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9tZWRpYS92aWRlby1jb250cm9scy1yZW5kZXJpbmct
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlhL3ZpZGVvLWNvbnRy
b2xzLXJlbmRlcmluZy1leHBlY3RlZC50eHQKaW5kZXggZWM4YzE0Zi4uZTRiN2ViMSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlhL3ZpZGVvLWNvbnRyb2xzLXJlbmRl
cmluZy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlhL3Zp
ZGVvLWNvbnRyb2xzLXJlbmRlcmluZy1leHBlY3RlZC50eHQKQEAgLTIwLDkgKzIwLDEwIEBAIGxh
eWVyIGF0ICg4LDQ0KSBzaXplIDMyMHgyNDAKIGxheWVyIGF0ICg4LDI2NCkgc2l6ZSAzMjB4MjAK
ICAgUmVuZGVyRmxleGlibGVCb3ggKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgwLDIyMCkgc2l6ZSAz
MjB4MjAKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMCwwKSBzaXplIDIweDIwCi0gICAg
UmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDIwLDApIHNpemUgMjQweDIwIFtib3JkZXI6ICgx
cHggc29saWQgI0ZGRkZGRjMzKSBub25lICgxcHggc29saWQgI0ZGRkZGRjMzKV0KLSAgICAgIFJl
bmRlclNsaWRlciB7SU5QVVR9IGF0ICgxLDApIHNpemUgMjM4eDIwCisgICAgUmVuZGVyRmxleGli
bGVCb3gge0RJVn0gYXQgKDIwLDApIHNpemUgMjIweDIwIFtib3JkZXI6ICgxcHggc29saWQgI0ZG
RkZGRjMzKSBub25lICgxcHggc29saWQgI0ZGRkZGRjMzKV0KKyAgICAgIFJlbmRlclNsaWRlciB7
SU5QVVR9IGF0ICgxLDApIHNpemUgMjE4eDIwCiAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0
ICgyLDQpIHNpemUgMTJ4MTIKKyAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjQwLDApIHNp
emUgMjB4MjAKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjYwLDApIHNpemUgMjB4MjAK
ICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjgwLDApIHNpemUgMjB4MjAKICAgICBSZW5k
ZXJCdXR0b24ge0lOUFVUfSBhdCAoMzAwLDApIHNpemUgMjB4MjAKQEAgLTMxLDkgKzMyLDEwIEBA
IGxheWVyIGF0ICg4LDI4NCkgc2l6ZSAzMjB4MjQwCiBsYXllciBhdCAoOCw1MDQpIHNpemUgMzIw
eDIwCiAgIFJlbmRlckZsZXhpYmxlQm94IChwb3NpdGlvbmVkKSB7RElWfSBhdCAoMCwyMjApIHNp
emUgMzIweDIwCiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAyMHgyMAot
ICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0ICgyMCwwKSBzaXplIDI0MHgyMCBbYm9yZGVy
OiAoMXB4IHNvbGlkICNGRkZGRkYzMykgbm9uZSAoMXB4IHNvbGlkICNGRkZGRkYzMyldCi0gICAg
ICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMSwwKSBzaXplIDIzOHgyMAorICAgIFJlbmRlckZs
ZXhpYmxlQm94IHtESVZ9IGF0ICgyMCwwKSBzaXplIDIyMHgyMCBbYm9yZGVyOiAoMXB4IHNvbGlk
ICNGRkZGRkYzMykgbm9uZSAoMXB4IHNvbGlkICNGRkZGRkYzMyldCisgICAgICBSZW5kZXJTbGlk
ZXIge0lOUFVUfSBhdCAoMSwwKSBzaXplIDIxOHgyMAogICAgICAgICBSZW5kZXJCbG9jayB7RElW
fSBhdCAoMiw0KSBzaXplIDEyeDEyCisgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI0MCww
KSBzaXplIDIweDIwCiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI2MCwwKSBzaXplIDIw
eDIwCiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI4MCwwKSBzaXplIDIweDIwCiAgICAg
UmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDMwMCwwKSBzaXplIDIweDIwCkBAIC00NCw5ICs0Niwx
MCBAQCBsYXllciBhdCAoOCw1MjQpIHNpemUgMzIweDI0MAogbGF5ZXIgYXQgKDgsNzQ0KSBzaXpl
IDMyMHgyMAogICBSZW5kZXJGbGV4aWJsZUJveCAocG9zaXRpb25lZCkge0RJVn0gYXQgKDAsMjIw
KSBzaXplIDMyMHgyMAogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjB4
MjAKLSAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMjAsMCkgc2l6ZSAyNDB4MjAgW2Jv
cmRlcjogKDFweCBzb2xpZCAjRkZGRkZGMzMpIG5vbmUgKDFweCBzb2xpZCAjRkZGRkZGMzMpXQot
ICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDEsMCkgc2l6ZSAyMzh4MjAKKyAgICBSZW5k
ZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMjAsMCkgc2l6ZSAyMjB4MjAgW2JvcmRlcjogKDFweCBz
b2xpZCAjRkZGRkZGMzMpIG5vbmUgKDFweCBzb2xpZCAjRkZGRkZGMzMpXQorICAgICAgUmVuZGVy
U2xpZGVyIHtJTlBVVH0gYXQgKDEsMCkgc2l6ZSAyMTh4MjAKICAgICAgICAgUmVuZGVyQmxvY2sg
e0RJVn0gYXQgKDIsNCkgc2l6ZSAxMngxMgorICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgy
NDAsMCkgc2l6ZSAyMHgyMAogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyNjAsMCkgc2l6
ZSAyMHgyMAogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyODAsMCkgc2l6ZSAyMHgyMAog
ICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgzMDAsMCkgc2l6ZSAyMHgyMApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlhL3ZpZGVvLWRpc3BsYXktdG9nZ2xlLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9tZWRpYS92aWRlby1kaXNwbGF5
LXRvZ2dsZS1leHBlY3RlZC50eHQKaW5kZXggMTllMDkyZi4uMDBjM2E1OCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlhL3ZpZGVvLWRpc3BsYXktdG9nZ2xlLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvbWVkaWEvdmlkZW8tZGlzcGxh
eS10b2dnbGUtZXhwZWN0ZWQudHh0CkBAIC0xNCw5ICsxNCwxMCBAQCBsYXllciBhdCAoOCwyOCkg
c2l6ZSAzMjB4MjQwCiBsYXllciBhdCAoOCwyNDgpIHNpemUgMzIweDIwCiAgIFJlbmRlckZsZXhp
YmxlQm94IChwb3NpdGlvbmVkKSB7RElWfSBhdCAoMCwyMjApIHNpemUgMzIweDIwCiAgICAgUmVu
ZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAyMHgyMAotICAgIFJlbmRlckZsZXhpYmxl
Qm94IHtESVZ9IGF0ICgyMCwwKSBzaXplIDI0MHgyMCBbYm9yZGVyOiAoMXB4IHNvbGlkICNGRkZG
RkYzMykgbm9uZSAoMXB4IHNvbGlkICNGRkZGRkYzMyldCi0gICAgICBSZW5kZXJTbGlkZXIge0lO
UFVUfSBhdCAoMSwwKSBzaXplIDIzOHgyMAorICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0
ICgyMCwwKSBzaXplIDIyMHgyMCBbYm9yZGVyOiAoMXB4IHNvbGlkICNGRkZGRkYzMykgbm9uZSAo
MXB4IHNvbGlkICNGRkZGRkYzMyldCisgICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMSww
KSBzaXplIDIxOHgyMAogICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiw0KSBzaXplIDEy
eDEyCisgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI0MCwwKSBzaXplIDIweDIwCiAgICAg
UmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI2MCwwKSBzaXplIDIweDIwCiAgICAgUmVuZGVyQnV0
dG9uIHtJTlBVVH0gYXQgKDI4MCwwKSBzaXplIDIweDIwCiAgICAgUmVuZGVyQnV0dG9uIHtJTlBV
VH0gYXQgKDMwMCwwKSBzaXplIDIweDIwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvbWVkaWEvdmlkZW8tbm8tYXVkaW8tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL21lZGlhL3ZpZGVvLW5vLWF1ZGlvLWV4cGVjdGVkLnR4dAppbmRleCBjZGM2Y2Vl
Li4yZjQ1ZTU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvbWVkaWEvdmlk
ZW8tbm8tYXVkaW8tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9t
ZWRpYS92aWRlby1uby1hdWRpby1leHBlY3RlZC50eHQKQEAgLTE1LDggKzE1LDkgQEAgbGF5ZXIg
YXQgKDgsNDQpIHNpemUgMzUyeDI4OAogbGF5ZXIgYXQgKDgsMzEyKSBzaXplIDM1MngyMAogICBS
ZW5kZXJGbGV4aWJsZUJveCAocG9zaXRpb25lZCkge0RJVn0gYXQgKDAsMjY4KSBzaXplIDM1Mngy
MAogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjB4MjAKLSAgICBSZW5k
ZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMjAsMCkgc2l6ZSAyOTJ4MjAgW2JvcmRlcjogKDFweCBz
b2xpZCAjRkZGRkZGMzMpIG5vbmUgKDFweCBzb2xpZCAjRkZGRkZGMzMpXQotICAgICAgUmVuZGVy
U2xpZGVyIHtJTlBVVH0gYXQgKDEsMCkgc2l6ZSAyOTB4MjAKKyAgICBSZW5kZXJGbGV4aWJsZUJv
eCB7RElWfSBhdCAoMjAsMCkgc2l6ZSAyNzJ4MjAgW2JvcmRlcjogKDFweCBzb2xpZCAjRkZGRkZG
MzMpIG5vbmUgKDFweCBzb2xpZCAjRkZGRkZGMzMpXQorICAgICAgUmVuZGVyU2xpZGVyIHtJTlBV
VH0gYXQgKDEsMCkgc2l6ZSAyNzB4MjAKICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIs
NCkgc2l6ZSAxMngxMgorICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyOTIsMCkgc2l6ZSAy
MHgyMAogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgzMTIsMCkgc2l6ZSAyMHgyMAogICAg
IFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgzMzIsMCkgc2l6ZSAyMHgyMApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlhL3ZpZGVvLXpvb20tY29udHJvbHMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlhL3ZpZGVvLXpvb20tY29udHJv
bHMtZXhwZWN0ZWQudHh0CmluZGV4IDgyMjFkNTUuLmQzZjc0ZDUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9tZWRpYS92aWRlby16b29tLWNvbnRyb2xzLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvbWVkaWEvdmlkZW8tem9vbS1jb250cm9s
cy1leHBlY3RlZC50eHQKQEAgLTEzLDkgKzEzLDEwIEBAIGxheWVyIGF0ICg1Nyw4Nykgc2l6ZSAy
NDB4MTgwCiBsYXllciBhdCAoNTcsMjM3KSBzaXplIDI0MHgzMAogICBSZW5kZXJGbGV4aWJsZUJv
eCAocG9zaXRpb25lZCkge0RJVn0gYXQgKDAsMTUwKSBzaXplIDI0MHgzMAogICAgIFJlbmRlckJ1
dHRvbiB7SU5QVVR9IGF0ICgwLDApIHNpemUgMzB4MzAKLSAgICBSZW5kZXJGbGV4aWJsZUJveCB7
RElWfSBhdCAoMzAsMCkgc2l6ZSAxMjB4MzAgW2JvcmRlcjogKDFweCBzb2xpZCAjRkZGRkZGMzMp
IG5vbmUgKDFweCBzb2xpZCAjRkZGRkZGMzMpXQotICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0g
YXQgKDEsMCkgc2l6ZSAxMTh4MzAKKyAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMzAs
MCkgc2l6ZSA5MHgzMCBbYm9yZGVyOiAoMXB4IHNvbGlkICNGRkZGRkYzMykgbm9uZSAoMXB4IHNv
bGlkICNGRkZGRkYzMyldCisgICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMSwwKSBzaXpl
IDg4eDMwCiAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgzLDkpIHNpemUgMTJ4MTIKKyAg
ICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMTIwLDApIHNpemUgMzB4MzAKICAgICBSZW5kZXJC
dXR0b24ge0lOUFVUfSBhdCAoMTUwLDApIHNpemUgMzB4MzAKICAgICBSZW5kZXJCdXR0b24ge0lO
UFVUfSBhdCAoMTgwLDApIHNpemUgMzB4MzAKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAo
MjEwLDApIHNpemUgMzB4MzAKQEAgLTI2LDkgKzI3LDEwIEBAIGxheWVyIGF0ICg1NywzMTIpIHNp
emUgMjQweDE4MAogbGF5ZXIgYXQgKDU3LDQ2Mikgc2l6ZSAyNDB4MzAKICAgUmVuZGVyRmxleGli
bGVCb3ggKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgwLDE1MCkgc2l6ZSAyNDB4MzAKICAgICBSZW5k
ZXJCdXR0b24ge0lOUFVUfSBhdCAoMCwwKSBzaXplIDMweDMwCi0gICAgUmVuZGVyRmxleGlibGVC
b3gge0RJVn0gYXQgKDMwLDApIHNpemUgMTIweDMwIFtib3JkZXI6ICgxcHggc29saWQgI0ZGRkZG
RjMzKSBub25lICgxcHggc29saWQgI0ZGRkZGRjMzKV0KLSAgICAgIFJlbmRlclNsaWRlciB7SU5Q
VVR9IGF0ICgxLDApIHNpemUgMTE4eDMwCisgICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQg
KDMwLDApIHNpemUgOTB4MzAgW2JvcmRlcjogKDFweCBzb2xpZCAjRkZGRkZGMzMpIG5vbmUgKDFw
eCBzb2xpZCAjRkZGRkZGMzMpXQorICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDEsMCkg
c2l6ZSA4OHgzMAogICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMyw5KSBzaXplIDEyeDEy
CisgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDEyMCwwKSBzaXplIDMweDMwCiAgICAgUmVu
ZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDE1MCwwKSBzaXplIDMweDMwCiAgICAgUmVuZGVyQnV0dG9u
IHtJTlBVVH0gYXQgKDE4MCwwKSBzaXplIDMweDMwCiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0g
YXQgKDIxMCwwKSBzaXplIDMweDMwCi0tIAoxLjcuMQ==
</data>
<flag name="review"
          id="52712"
          type_id="1"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64557</attachid>
            <date>2010-08-17 00:40:00 -0700</date>
            <delta_ts>2010-08-18 09:09:36 -0700</delta_ts>
            <desc>fullscreen video support in WebKit/gtk</desc>
            <filename>fullscreen-video-support-in-WebKitgtk.patch</filename>
            <type>text/plain</type>
            <size>63892</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA3NTg0ODc1NjQxZDliZTY5MmZiM2FiMDU1YjNkM2QwNzE1M2NkYzlhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBGcmksIDI4IE1heSAyMDEwIDE3OjAwOjQ0ICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
ZnVsbHNjcmVlbiB2aWRlbyBzdXBwb3J0IGluIFdlYktpdC9ndGsKCi0tLQogQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEyICsKIEdOVW1ha2Vm
aWxlLmFtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTYgKwog
Li4uL2d0ay9tZWRpYS9jb250cm9scy1hZnRlci1yZWxvYWQtZXhwZWN0ZWQudHh0ICAgfCAgICA1
ICstCiAuLi4vZ3RrL21lZGlhL2NvbnRyb2xzLWRyYWctdGltZWJhci1leHBlY3RlZC50eHQgICB8
ICAgIDYgKy0KIC4uLi9ndGsvbWVkaWEvY29udHJvbHMtc3RyaWN0LWV4cGVjdGVkLnR4dCAgICAg
ICAgIHwgICAgNSArLQogLi4uL2d0ay9tZWRpYS9jb250cm9scy1zdHlsaW5nLWV4cGVjdGVkLnR4
dCAgICAgICAgfCAgIDEwICstCiAuLi4vbWVkaWEvdmlkZW8tY29udHJvbHMtcmVuZGVyaW5nLWV4
cGVjdGVkLnR4dCAgICB8ICAgMTUgKy0KIC4uLi9ndGsvbWVkaWEvdmlkZW8tZGlzcGxheS10b2dn
bGUtZXhwZWN0ZWQudHh0ICAgIHwgICAgNSArLQogLi4uL3BsYXRmb3JtL2d0ay9tZWRpYS92aWRl
by1uby1hdWRpby1leHBlY3RlZC50eHQgfCAgICA1ICstCiAuLi4vZ3RrL21lZGlhL3ZpZGVvLXpv
b20tY29udHJvbHMtZXhwZWN0ZWQudHh0ICAgICB8ICAgMTAgKy0KIFdlYkNvcmUvQ2hhbmdlTG9n
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzMCArCiBXZWJDb3JlL0dOVW1h
a2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKwogLi4uL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuY3BwICAgICAgICAgfCAgMTU3ICsrKysrLQog
Li4uL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuaCAgfCAgIDE5
ICsKIC4uLi9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCAgICAgIHwg
ICAgMSAtCiAuLi4vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3cuaCAgICAg
ICB8ICAgNTQgKysKIC4uLi9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvd0d0
ay5jcHAgIHwgICA2MCArKwogV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgIDczICsrKwogV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRHdGsuY3BwICAgICAgfCAgIDI1ICsKIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50R3RrLmggICAgICAgIHwgICAgNSArCiAuLi4vV2ViQ29yZVN1cHBvcnQvRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlci5jcHAgICB8ICA1OTMgKysrKysrKysrKysrKysrKysrKysKIC4u
Li9ndGsvV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oIHwgIDEwMyAr
KysrCiBXZWJLaXQvZ3RrL3BvL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgIDkgKwogV2ViS2l0L2d0ay9wby9QT1RGSUxFUyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgICAxICsKIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuY3BwICAgICAgICAg
ICAgICAgIHwgICAzNiArKwogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oICAgICAg
ICAgICAgICAgICAgfCAgICA3ICsKIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAgMSArCiAyOCBmaWxlcyBjaGFuZ2VkLCAxMjQwIGluc2VydGlv
bnMoKyksIDI3IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3cuaAogY3JlYXRlIG1vZGUg
MTAwNjQ0IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9X
aW5kb3dHdGsuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oCgpkaWZmIC0t
Z2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGMzZDJjODQuLjkyYTQ4ZTggMTAwNjQ0
Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0w
Ny0xMCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dTdHJlYW1lcl0gR1RLIFhP
dmVybGF5IHN1cHBvcnQgaW4gR1N0cmVhbWVyR1dvcmxkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ3NAorCisgICAgICAgICogY29uZmlndXJlLmFj
OiBnc3QtaW50ZXJmYWNlcyBsaW5rIHN1cHBvcnQgbmVlZGVkIGZvciB1c2Ugb2YKKyAgICAgICAg
R3N0WE92ZXJsYXkgaW50ZXJmYWNlLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGRlZCBu
ZXcgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciBmaWxlcyBpbiB0aGUKKyAgICAgICAgYnVpbGQu
CisKIDIwMTAtMDgtMTYgIFBhdWwgU2F3YXlhICA8cHNhd2F5YUBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgQ2hyaXMgTWFycmluLgpkaWZmIC0tZ2l0IGEvR05VbWFrZWZpbGUuYW0g
Yi9HTlVtYWtlZmlsZS5hbQppbmRleCA5MTY1M2NmLi40N2FkYjdhIDEwMDY0NAotLS0gYS9HTlVt
YWtlZmlsZS5hbQorKysgYi9HTlVtYWtlZmlsZS5hbQpAQCAtNzQ3LDYgKzc0Nyw4IEBAIHdlYmtp
dGd0a19zb3VyY2VzICs9IFwKIAlXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dEd0ay5oIFwKIAlXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3Rr
LmNwcCBcCiAJV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5o
IFwKKwlXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIu
Y3BwIFwKKwlXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXIuaCBcCiAJV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuY3Bw
IFwKIAlXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5oIFwKIAlX
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1Bhc3RlYm9hcmRIZWxwZXJHdGsuY3BwIFwKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCAwYjM2MzhhLi5mZjQ3NDA1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDctMTAgIFBo
aWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHU3RyZWFtZXJdIEdUSyBYT3ZlcmxheSBz
dXBwb3J0IGluIEdTdHJlYW1lckdXb3JsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0NzQKKworICAgICAgICBSZWJhc2VsaW5lZCB0ZXN0cyBzaG93
aW5nIHRoZSB2aWRlbyBjb250cm9scyBjb250YWluaW5nIHRoZSBuZXcKKyAgICAgICAgZnVsbHNj
cmVlbiBidXR0b24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvbWVkaWEvY29udHJvbHMtYWZ0
ZXItcmVsb2FkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvbWVkaWEvY29u
dHJvbHMtZHJhZy10aW1lYmFyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsv
bWVkaWEvY29udHJvbHMtc3RyaWN0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
dGsvbWVkaWEvY29udHJvbHMtc3R5bGluZy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZv
cm0vZ3RrL21lZGlhL3ZpZGVvLWNvbnRyb2xzLXJlbmRlcmluZy1leHBlY3RlZC50eHQ6CisKIDIw
MTAtMDgtMTcgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9tZWRpYS9jb250cm9scy1hZnRlci1yZWxvYWQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlhL2NvbnRyb2xzLWFmdGVyLXJlbG9hZC1leHBl
Y3RlZC50eHQKaW5kZXggYTBiYWUxOC4uZjc3NmViMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL21lZGlhL2NvbnRyb2xzLWFmdGVyLXJlbG9hZC1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlhL2NvbnRyb2xzLWFmdGVyLXJlbG9hZC1l
eHBlY3RlZC50eHQKQEAgLTE1LDkgKzE1LDEwIEBAIGxheWVyIGF0ICg4LDQ0KSBzaXplIDMyMHgy
NDAKIGxheWVyIGF0ICg4LDI2NCkgc2l6ZSAzMjB4MjAKICAgUmVuZGVyRmxleGlibGVCb3ggKHBv
c2l0aW9uZWQpIHtESVZ9IGF0ICgwLDIyMCkgc2l6ZSAzMjB4MjAKICAgICBSZW5kZXJCdXR0b24g
e0lOUFVUfSBhdCAoMCwwKSBzaXplIDIweDIwCi0gICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0g
YXQgKDIwLDApIHNpemUgMjQweDIwIFtib3JkZXI6ICgxcHggc29saWQgI0ZGRkZGRjMzKSBub25l
ICgxcHggc29saWQgI0ZGRkZGRjMzKV0KLSAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgx
LDApIHNpemUgMjM4eDIwCisgICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDIwLDApIHNp
emUgMjIweDIwIFtib3JkZXI6ICgxcHggc29saWQgI0ZGRkZGRjMzKSBub25lICgxcHggc29saWQg
I0ZGRkZGRjMzKV0KKyAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgxLDApIHNpemUgMjE4
eDIwCiAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDQpIHNpemUgMTJ4MTIKKyAgICBS
ZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjQwLDApIHNpemUgMjB4MjAKICAgICBSZW5kZXJCdXR0
b24ge0lOUFVUfSBhdCAoMjYwLDApIHNpemUgMjB4MjAKICAgICBSZW5kZXJCdXR0b24ge0lOUFVU
fSBhdCAoMjgwLDApIHNpemUgMjB4MjAKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMzAw
LDApIHNpemUgMjB4MjAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9tZWRp
YS9jb250cm9scy1kcmFnLXRpbWViYXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL21lZGlhL2NvbnRyb2xzLWRyYWctdGltZWJhci1leHBlY3RlZC50eHQKaW5kZXggNjkz
NmJlNC4uYTQxMjExYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlh
L2NvbnRyb2xzLWRyYWctdGltZWJhci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL21lZGlhL2NvbnRyb2xzLWRyYWctdGltZWJhci1leHBlY3RlZC50eHQKQEAgLTQs
MTAgKzQsMTAgQEAgUlVOKHZpZGVvLmF1dG9wbGF5ID0gdHJ1ZSkKIFJVTih2aWRlby5zcmMgPSAn
Y29udGVudC90ZXN0Lm1wNCcpCiBFVkVOVChwbGF5aW5nKQogRVZFTlQoc2Vla2VkKQotVGltZTog
Mi4xCitUaW1lOiAyLjQKIEVWRU5UKHNlZWtlZCkKLVRpbWU6IDIuNworVGltZTogMy4wCiBFVkVO
VChzZWVrZWQpCi1UaW1lOiAzLjIKK1RpbWU6IDMuNgogRU5EIE9GIFRFU1QKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlhL2NvbnRyb2xzLXN0cmljdC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvbWVkaWEvY29udHJvbHMtc3RyaWN0LWV4
cGVjdGVkLnR4dAppbmRleCBiZTM2MTViLi4zZjk2ZDAzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGsvbWVkaWEvY29udHJvbHMtc3RyaWN0LWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvbWVkaWEvY29udHJvbHMtc3RyaWN0LWV4cGVjdGVkLnR4
dApAQCAtMTUsOSArMTUsMTAgQEAgbGF5ZXIgYXQgKDgsNTIpIHNpemUgMzIweDI0MAogbGF5ZXIg
YXQgKDgsMjcyKSBzaXplIDMyMHgyMAogICBSZW5kZXJGbGV4aWJsZUJveCAocG9zaXRpb25lZCkg
e0RJVn0gYXQgKDAsMjIwKSBzaXplIDMyMHgyMAogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0
ICgwLDApIHNpemUgMjB4MjAKLSAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMjAsMCkg
c2l6ZSAyNDB4MjAgW2JvcmRlcjogKDFweCBzb2xpZCAjRkZGRkZGMzMpIG5vbmUgKDFweCBzb2xp
ZCAjRkZGRkZGMzMpXQotICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDEsMCkgc2l6ZSAy
Mzh4MjAKKyAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMjAsMCkgc2l6ZSAyMjB4MjAg
W2JvcmRlcjogKDFweCBzb2xpZCAjRkZGRkZGMzMpIG5vbmUgKDFweCBzb2xpZCAjRkZGRkZGMzMp
XQorICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDEsMCkgc2l6ZSAyMTh4MjAKICAgICAg
ICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsNCkgc2l6ZSAxMngxMgorICAgIFJlbmRlckJ1dHRv
biB7SU5QVVR9IGF0ICgyNDAsMCkgc2l6ZSAyMHgyMAogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9
IGF0ICgyNjAsMCkgc2l6ZSAyMHgyMAogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyODAs
MCkgc2l6ZSAyMHgyMAogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgzMDAsMCkgc2l6ZSAy
MHgyMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlhL2NvbnRyb2xz
LXN0eWxpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlhL2Nv
bnRyb2xzLXN0eWxpbmctZXhwZWN0ZWQudHh0CmluZGV4IGZlOTQxZGYuLmJmODUxM2EgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9tZWRpYS9jb250cm9scy1zdHlsaW5nLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvbWVkaWEvY29udHJvbHMt
c3R5bGluZy1leHBlY3RlZC50eHQKQEAgLTE5LDkgKzE5LDEwIEBAIGxheWVyIGF0ICgxOCw0NCkg
c2l6ZSAzMjB4MjQwCiBsYXllciBhdCAoMTgsMjY0KSBzaXplIDMyMHgyMAogICBSZW5kZXJGbGV4
aWJsZUJveCAocG9zaXRpb25lZCkge0RJVn0gYXQgKDAsMjIwKSBzaXplIDMyMHgyMAogICAgIFJl
bmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjB4MjAKLSAgICBSZW5kZXJGbGV4aWJs
ZUJveCB7RElWfSBhdCAoMjAsMCkgc2l6ZSAyNDB4MjAgW2JvcmRlcjogKDFweCBzb2xpZCAjRkZG
RkZGMzMpIG5vbmUgKDFweCBzb2xpZCAjRkZGRkZGMzMpXQotICAgICAgUmVuZGVyU2xpZGVyIHtJ
TlBVVH0gYXQgKDEsMCkgc2l6ZSAyMzh4MjAKKyAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBh
dCAoMjAsMCkgc2l6ZSAyMjB4MjAgW2JvcmRlcjogKDFweCBzb2xpZCAjRkZGRkZGMzMpIG5vbmUg
KDFweCBzb2xpZCAjRkZGRkZGMzMpXQorICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDEs
MCkgc2l6ZSAyMTh4MjAKICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsNCkgc2l6ZSAx
MngxMgorICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyNDAsMCkgc2l6ZSAyMHgyMAogICAg
IFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyNjAsMCkgc2l6ZSAyMHgyMAogICAgIFJlbmRlckJ1
dHRvbiB7SU5QVVR9IGF0ICgyODAsMCkgc2l6ZSAyMHgyMAogICAgIFJlbmRlckJ1dHRvbiB7SU5Q
VVR9IGF0ICgzMDAsMCkgc2l6ZSAyMHgyMApAQCAtMzAsOSArMzEsMTAgQEAgbGF5ZXIgYXQgKDgs
Mjg0KSBzaXplIDMyMHgyNDAKIGxheWVyIGF0ICg4LDUwNCkgc2l6ZSAzMjB4MjAKICAgUmVuZGVy
RmxleGlibGVCb3ggKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgwLDIyMCkgc2l6ZSAzMjB4MjAKICAg
ICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMCwwKSBzaXplIDIweDIwCi0gICAgUmVuZGVyRmxl
eGlibGVCb3gge0RJVn0gYXQgKDIwLDApIHNpemUgMjQweDIwIFtib3JkZXI6ICgxcHggc29saWQg
I0ZGRkZGRjMzKSBub25lICgxcHggc29saWQgI0ZGRkZGRjMzKV0KLSAgICAgIFJlbmRlclNsaWRl
ciB7SU5QVVR9IGF0ICgxLDApIHNpemUgMjM4eDIwCisgICAgUmVuZGVyRmxleGlibGVCb3gge0RJ
Vn0gYXQgKDIwLDApIHNpemUgMjIweDIwIFtib3JkZXI6ICgxcHggc29saWQgI0ZGRkZGRjMzKSBu
b25lICgxcHggc29saWQgI0ZGRkZGRjMzKV0KKyAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0
ICgxLDApIHNpemUgMjE4eDIwCiAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDQpIHNp
emUgMTJ4MTIKKyAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjQwLDApIHNpemUgMjB4MjAK
ICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjYwLDApIHNpemUgMjB4MjAKICAgICBSZW5k
ZXJCdXR0b24ge0lOUFVUfSBhdCAoMjgwLDApIHNpemUgMjB4MjAKICAgICBSZW5kZXJCdXR0b24g
e0lOUFVUfSBhdCAoMzAwLDApIHNpemUgMjB4MjAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9tZWRpYS92aWRlby1jb250cm9scy1yZW5kZXJpbmctZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlhL3ZpZGVvLWNvbnRyb2xzLXJlbmRlcmluZy1l
eHBlY3RlZC50eHQKaW5kZXggZWM4YzE0Zi4uZTRiN2ViMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL21lZGlhL3ZpZGVvLWNvbnRyb2xzLXJlbmRlcmluZy1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlhL3ZpZGVvLWNvbnRyb2xzLXJl
bmRlcmluZy1leHBlY3RlZC50eHQKQEAgLTIwLDkgKzIwLDEwIEBAIGxheWVyIGF0ICg4LDQ0KSBz
aXplIDMyMHgyNDAKIGxheWVyIGF0ICg4LDI2NCkgc2l6ZSAzMjB4MjAKICAgUmVuZGVyRmxleGli
bGVCb3ggKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgwLDIyMCkgc2l6ZSAzMjB4MjAKICAgICBSZW5k
ZXJCdXR0b24ge0lOUFVUfSBhdCAoMCwwKSBzaXplIDIweDIwCi0gICAgUmVuZGVyRmxleGlibGVC
b3gge0RJVn0gYXQgKDIwLDApIHNpemUgMjQweDIwIFtib3JkZXI6ICgxcHggc29saWQgI0ZGRkZG
RjMzKSBub25lICgxcHggc29saWQgI0ZGRkZGRjMzKV0KLSAgICAgIFJlbmRlclNsaWRlciB7SU5Q
VVR9IGF0ICgxLDApIHNpemUgMjM4eDIwCisgICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQg
KDIwLDApIHNpemUgMjIweDIwIFtib3JkZXI6ICgxcHggc29saWQgI0ZGRkZGRjMzKSBub25lICgx
cHggc29saWQgI0ZGRkZGRjMzKV0KKyAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgxLDAp
IHNpemUgMjE4eDIwCiAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDQpIHNpemUgMTJ4
MTIKKyAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjQwLDApIHNpemUgMjB4MjAKICAgICBS
ZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjYwLDApIHNpemUgMjB4MjAKICAgICBSZW5kZXJCdXR0
b24ge0lOUFVUfSBhdCAoMjgwLDApIHNpemUgMjB4MjAKICAgICBSZW5kZXJCdXR0b24ge0lOUFVU
fSBhdCAoMzAwLDApIHNpemUgMjB4MjAKQEAgLTMxLDkgKzMyLDEwIEBAIGxheWVyIGF0ICg4LDI4
NCkgc2l6ZSAzMjB4MjQwCiBsYXllciBhdCAoOCw1MDQpIHNpemUgMzIweDIwCiAgIFJlbmRlckZs
ZXhpYmxlQm94IChwb3NpdGlvbmVkKSB7RElWfSBhdCAoMCwyMjApIHNpemUgMzIweDIwCiAgICAg
UmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAyMHgyMAotICAgIFJlbmRlckZsZXhp
YmxlQm94IHtESVZ9IGF0ICgyMCwwKSBzaXplIDI0MHgyMCBbYm9yZGVyOiAoMXB4IHNvbGlkICNG
RkZGRkYzMykgbm9uZSAoMXB4IHNvbGlkICNGRkZGRkYzMyldCi0gICAgICBSZW5kZXJTbGlkZXIg
e0lOUFVUfSBhdCAoMSwwKSBzaXplIDIzOHgyMAorICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9
IGF0ICgyMCwwKSBzaXplIDIyMHgyMCBbYm9yZGVyOiAoMXB4IHNvbGlkICNGRkZGRkYzMykgbm9u
ZSAoMXB4IHNvbGlkICNGRkZGRkYzMyldCisgICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAo
MSwwKSBzaXplIDIxOHgyMAogICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiw0KSBzaXpl
IDEyeDEyCisgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI0MCwwKSBzaXplIDIweDIwCiAg
ICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI2MCwwKSBzaXplIDIweDIwCiAgICAgUmVuZGVy
QnV0dG9uIHtJTlBVVH0gYXQgKDI4MCwwKSBzaXplIDIweDIwCiAgICAgUmVuZGVyQnV0dG9uIHtJ
TlBVVH0gYXQgKDMwMCwwKSBzaXplIDIweDIwCkBAIC00NCw5ICs0NiwxMCBAQCBsYXllciBhdCAo
OCw1MjQpIHNpemUgMzIweDI0MAogbGF5ZXIgYXQgKDgsNzQ0KSBzaXplIDMyMHgyMAogICBSZW5k
ZXJGbGV4aWJsZUJveCAocG9zaXRpb25lZCkge0RJVn0gYXQgKDAsMjIwKSBzaXplIDMyMHgyMAog
ICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjB4MjAKLSAgICBSZW5kZXJG
bGV4aWJsZUJveCB7RElWfSBhdCAoMjAsMCkgc2l6ZSAyNDB4MjAgW2JvcmRlcjogKDFweCBzb2xp
ZCAjRkZGRkZGMzMpIG5vbmUgKDFweCBzb2xpZCAjRkZGRkZGMzMpXQotICAgICAgUmVuZGVyU2xp
ZGVyIHtJTlBVVH0gYXQgKDEsMCkgc2l6ZSAyMzh4MjAKKyAgICBSZW5kZXJGbGV4aWJsZUJveCB7
RElWfSBhdCAoMjAsMCkgc2l6ZSAyMjB4MjAgW2JvcmRlcjogKDFweCBzb2xpZCAjRkZGRkZGMzMp
IG5vbmUgKDFweCBzb2xpZCAjRkZGRkZGMzMpXQorICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0g
YXQgKDEsMCkgc2l6ZSAyMTh4MjAKICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsNCkg
c2l6ZSAxMngxMgorICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyNDAsMCkgc2l6ZSAyMHgy
MAogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyNjAsMCkgc2l6ZSAyMHgyMAogICAgIFJl
bmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyODAsMCkgc2l6ZSAyMHgyMAogICAgIFJlbmRlckJ1dHRv
biB7SU5QVVR9IGF0ICgzMDAsMCkgc2l6ZSAyMHgyMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL21lZGlhL3ZpZGVvLWRpc3BsYXktdG9nZ2xlLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2d0ay9tZWRpYS92aWRlby1kaXNwbGF5LXRvZ2dsZS1leHBlY3Rl
ZC50eHQKaW5kZXggMTllMDkyZi4uMDBjM2E1OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL21lZGlhL3ZpZGVvLWRpc3BsYXktdG9nZ2xlLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvbWVkaWEvdmlkZW8tZGlzcGxheS10b2dnbGUtZXhwZWN0
ZWQudHh0CkBAIC0xNCw5ICsxNCwxMCBAQCBsYXllciBhdCAoOCwyOCkgc2l6ZSAzMjB4MjQwCiBs
YXllciBhdCAoOCwyNDgpIHNpemUgMzIweDIwCiAgIFJlbmRlckZsZXhpYmxlQm94IChwb3NpdGlv
bmVkKSB7RElWfSBhdCAoMCwyMjApIHNpemUgMzIweDIwCiAgICAgUmVuZGVyQnV0dG9uIHtJTlBV
VH0gYXQgKDAsMCkgc2l6ZSAyMHgyMAotICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0ICgy
MCwwKSBzaXplIDI0MHgyMCBbYm9yZGVyOiAoMXB4IHNvbGlkICNGRkZGRkYzMykgbm9uZSAoMXB4
IHNvbGlkICNGRkZGRkYzMyldCi0gICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMSwwKSBz
aXplIDIzOHgyMAorICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0ICgyMCwwKSBzaXplIDIy
MHgyMCBbYm9yZGVyOiAoMXB4IHNvbGlkICNGRkZGRkYzMykgbm9uZSAoMXB4IHNvbGlkICNGRkZG
RkYzMyldCisgICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMSwwKSBzaXplIDIxOHgyMAog
ICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiw0KSBzaXplIDEyeDEyCisgICAgUmVuZGVy
QnV0dG9uIHtJTlBVVH0gYXQgKDI0MCwwKSBzaXplIDIweDIwCiAgICAgUmVuZGVyQnV0dG9uIHtJ
TlBVVH0gYXQgKDI2MCwwKSBzaXplIDIweDIwCiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQg
KDI4MCwwKSBzaXplIDIweDIwCiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDMwMCwwKSBz
aXplIDIweDIwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvbWVkaWEvdmlk
ZW8tbm8tYXVkaW8tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlh
L3ZpZGVvLW5vLWF1ZGlvLWV4cGVjdGVkLnR4dAppbmRleCBjZGM2Y2VlLi4yZjQ1ZTU0IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvbWVkaWEvdmlkZW8tbm8tYXVkaW8tZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9tZWRpYS92aWRlby1uby1h
dWRpby1leHBlY3RlZC50eHQKQEAgLTE1LDggKzE1LDkgQEAgbGF5ZXIgYXQgKDgsNDQpIHNpemUg
MzUyeDI4OAogbGF5ZXIgYXQgKDgsMzEyKSBzaXplIDM1MngyMAogICBSZW5kZXJGbGV4aWJsZUJv
eCAocG9zaXRpb25lZCkge0RJVn0gYXQgKDAsMjY4KSBzaXplIDM1MngyMAogICAgIFJlbmRlckJ1
dHRvbiB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjB4MjAKLSAgICBSZW5kZXJGbGV4aWJsZUJveCB7
RElWfSBhdCAoMjAsMCkgc2l6ZSAyOTJ4MjAgW2JvcmRlcjogKDFweCBzb2xpZCAjRkZGRkZGMzMp
IG5vbmUgKDFweCBzb2xpZCAjRkZGRkZGMzMpXQotICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0g
YXQgKDEsMCkgc2l6ZSAyOTB4MjAKKyAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMjAs
MCkgc2l6ZSAyNzJ4MjAgW2JvcmRlcjogKDFweCBzb2xpZCAjRkZGRkZGMzMpIG5vbmUgKDFweCBz
b2xpZCAjRkZGRkZGMzMpXQorICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDEsMCkgc2l6
ZSAyNzB4MjAKICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsNCkgc2l6ZSAxMngxMgor
ICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyOTIsMCkgc2l6ZSAyMHgyMAogICAgIFJlbmRl
ckJ1dHRvbiB7SU5QVVR9IGF0ICgzMTIsMCkgc2l6ZSAyMHgyMAogICAgIFJlbmRlckJ1dHRvbiB7
SU5QVVR9IGF0ICgzMzIsMCkgc2l6ZSAyMHgyMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL21lZGlhL3ZpZGVvLXpvb20tY29udHJvbHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlhL3ZpZGVvLXpvb20tY29udHJvbHMtZXhwZWN0ZWQudHh0
CmluZGV4IDgyMjFkNTUuLmQzZjc0ZDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9tZWRpYS92aWRlby16b29tLWNvbnRyb2xzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGsvbWVkaWEvdmlkZW8tem9vbS1jb250cm9scy1leHBlY3RlZC50eHQK
QEAgLTEzLDkgKzEzLDEwIEBAIGxheWVyIGF0ICg1Nyw4Nykgc2l6ZSAyNDB4MTgwCiBsYXllciBh
dCAoNTcsMjM3KSBzaXplIDI0MHgzMAogICBSZW5kZXJGbGV4aWJsZUJveCAocG9zaXRpb25lZCkg
e0RJVn0gYXQgKDAsMTUwKSBzaXplIDI0MHgzMAogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0
ICgwLDApIHNpemUgMzB4MzAKLSAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMzAsMCkg
c2l6ZSAxMjB4MzAgW2JvcmRlcjogKDFweCBzb2xpZCAjRkZGRkZGMzMpIG5vbmUgKDFweCBzb2xp
ZCAjRkZGRkZGMzMpXQotICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDEsMCkgc2l6ZSAx
MTh4MzAKKyAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMzAsMCkgc2l6ZSA5MHgzMCBb
Ym9yZGVyOiAoMXB4IHNvbGlkICNGRkZGRkYzMykgbm9uZSAoMXB4IHNvbGlkICNGRkZGRkYzMyld
CisgICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMSwwKSBzaXplIDg4eDMwCiAgICAgICAg
IFJlbmRlckJsb2NrIHtESVZ9IGF0ICgzLDkpIHNpemUgMTJ4MTIKKyAgICBSZW5kZXJCdXR0b24g
e0lOUFVUfSBhdCAoMTIwLDApIHNpemUgMzB4MzAKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBh
dCAoMTUwLDApIHNpemUgMzB4MzAKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMTgwLDAp
IHNpemUgMzB4MzAKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjEwLDApIHNpemUgMzB4
MzAKQEAgLTI2LDkgKzI3LDEwIEBAIGxheWVyIGF0ICg1NywzMTIpIHNpemUgMjQweDE4MAogbGF5
ZXIgYXQgKDU3LDQ2Mikgc2l6ZSAyNDB4MzAKICAgUmVuZGVyRmxleGlibGVCb3ggKHBvc2l0aW9u
ZWQpIHtESVZ9IGF0ICgwLDE1MCkgc2l6ZSAyNDB4MzAKICAgICBSZW5kZXJCdXR0b24ge0lOUFVU
fSBhdCAoMCwwKSBzaXplIDMweDMwCi0gICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDMw
LDApIHNpemUgMTIweDMwIFtib3JkZXI6ICgxcHggc29saWQgI0ZGRkZGRjMzKSBub25lICgxcHgg
c29saWQgI0ZGRkZGRjMzKV0KLSAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgxLDApIHNp
emUgMTE4eDMwCisgICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDMwLDApIHNpemUgOTB4
MzAgW2JvcmRlcjogKDFweCBzb2xpZCAjRkZGRkZGMzMpIG5vbmUgKDFweCBzb2xpZCAjRkZGRkZG
MzMpXQorICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDEsMCkgc2l6ZSA4OHgzMAogICAg
ICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMyw5KSBzaXplIDEyeDEyCisgICAgUmVuZGVyQnV0
dG9uIHtJTlBVVH0gYXQgKDEyMCwwKSBzaXplIDMweDMwCiAgICAgUmVuZGVyQnV0dG9uIHtJTlBV
VH0gYXQgKDE1MCwwKSBzaXplIDMweDMwCiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDE4
MCwwKSBzaXplIDMweDMwCiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDIxMCwwKSBzaXpl
IDMweDMwCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IGVmOGE5MWIuLmZlNDdkOTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTAtMDctMjAgIFBoaWxp
cHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHU3RyZWFtZXJdIEdUSyBYT3ZlcmxheSBzdXBw
b3J0IGluIEdTdHJlYW1lckdXb3JsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Mzk0NzQKKworICAgICAgICBHU3RyZWFtZXJHV29ybGQgbm93IGNhdGNo
ZXMgc3luY2hyb25vdXMgbWVzc2FnZXMgY29taW5nIGZyb20gdGhlCisgICAgICAgIHNpbmtzIGFu
ZCBjcmVhdGVzIGEgR1RLIHdpbmRvdyB3aGVyZSB0aGUgdmlkZW8gY2FuIGJlIG92ZXJsYXllZCBp
ZgorICAgICAgICBmdWxsc2NyZWVuIGRpc3BsYXkgaXMgcmVxdWVzdGVkIHVzaW5nIGVudGVyRnVs
bHNjcmVlbi4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Z3N0R1dvcmxkU3luY01lc3NhZ2VDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpHU3Ry
ZWFtZXJHV29ybGQ6OkdTdHJlYW1lckdXb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFt
ZXJHV29ybGQ6On5HU3RyZWFtZXJHV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVy
R1dvcmxkOjplbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyR1dv
cmxkOjpleGl0RnVsbHNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJHV29ybGQ6
OnNldFdpbmRvd092ZXJsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJHV29ybGQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckdXb3JsZDo6
cGlwZWxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyR1dvcmxkOjpwbGF0Zm9ybVZp
ZGVvV2luZG93KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvdy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtVmlkZW9XaW5kb3c6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVZpZGVvV2luZG93Ojp3aW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1W
aWRlb1dpbmRvdzo6dmlkZW9XaW5kb3dJZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dHdGsuY3BwOiBBZGRlZC4KKyAgICAgICAgKFBs
YXRmb3JtVmlkZW9XaW5kb3c6OlBsYXRmb3JtVmlkZW9XaW5kb3cpOgorCiAyMDEwLTA4LTE3ICBQ
aGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBNYXJ0aW4gUm9iaW5zb24uCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFt
IGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCA5Mzk4NTJmLi42YmViNzJmIDEwMDY0NAot
LS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0K
QEAgLTMxNjAsNiArMzE2MCw4IEBAIHdlYmNvcmVndGtfc291cmNlcyArPSBcCiAJV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmggXAogCVdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyLmggXAogCVdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyQ2Fpcm8uY3BwIFwKKwlX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93Lmgg
XAorCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5k
b3dHdGsuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRX
ZWJTb3VyY2VHU3RyZWFtZXIuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuaAogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuY3BwIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmNwcAppbmRleCBjNTAy
MmY5Li5lMWVkMWFiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJHV29ybGQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5jcHAKQEAgLTIxLDEyICsyMSwzMyBAQAogCiAjaW5j
bHVkZSAiR1N0cmVhbWVyR1dvcmxkLmgiCiAKLSNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuaCIKKyNpbmNsdWRlICJHT3duUHRyR1N0cmVhbWVyLmgiCisKKyNpbmNsdWRlIDxn
c3QvZ3N0Lmg+CisjaW5jbHVkZSA8Z3N0L2ludGVyZmFjZXMveG92ZXJsYXkuaD4KKworI2lmIFBM
QVRGT1JNKEdUSykKKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaWZkZWYgR0RLX1dJTkRPV0lOR19Y
MTEKKyNpbmNsdWRlIDxnZGsvZ2RreC5oPiAvLyBmb3IgR0RLX1dJTkRPV19YSUQKKyNlbmRpZgor
I2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Z2Jvb2xlYW4gZ3N0R1dvcmxkU3luY01lc3NhZ2VDYWxsYmFjayhHc3RCdXMqIGJ1cywgR3N0TWVz
c2FnZSogbWVzc2FnZSwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBBU1NFUlQoR1NUX01FU1NBR0Vf
VFlQRShtZXNzYWdlKSA9PSBHU1RfTUVTU0FHRV9FTEVNRU5UKTsKKworICAgIEdTdHJlYW1lckdX
b3JsZCogZ3N0R1dvcmxkID0gcmVpbnRlcnByZXRfY2FzdDxHU3RyZWFtZXJHV29ybGQqPihkYXRh
KTsKKworICAgIGlmIChnc3Rfc3RydWN0dXJlX2hhc19uYW1lKG1lc3NhZ2UtPnN0cnVjdHVyZSwg
InByZXBhcmUteHdpbmRvdy1pZCIpKQorICAgICAgICBnc3RHV29ybGQtPnNldFdpbmRvd092ZXJs
YXkobWVzc2FnZSk7CisgICAgcmV0dXJuIFRSVUU7Cit9CisKIFBhc3NSZWZQdHI8R1N0cmVhbWVy
R1dvcmxkPiBHU3RyZWFtZXJHV29ybGQ6OmNyZWF0ZUdXb3JsZChNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIqIHBsYXllcikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdTdHJlYW1lckdX
b3JsZChwbGF5ZXIpKTsKQEAgLTM0LDExICs1NSwxNDUgQEAgUGFzc1JlZlB0cjxHU3RyZWFtZXJH
V29ybGQ+IEdTdHJlYW1lckdXb3JsZDo6Y3JlYXRlR1dvcmxkKE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHIKIAogR1N0cmVhbWVyR1dvcmxkOjpHU3RyZWFtZXJHV29ybGQoTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyKiBwbGF5ZXIpCiAgICAgOiBtX3BsYXllcihwbGF5ZXIpCisgICAgLCBtX2R5bmFt
aWNQYWROYW1lKDApCiB7CisgICAgLy8gWE92ZXJsYXkgbWVzc2FnZXMgbmVlZCB0byBiZSBoYW5k
bGVkIHN5bmNocm9ub3VzbHkuCisgICAgR3N0QnVzKiBidXMgPSBnc3RfcGlwZWxpbmVfZ2V0X2J1
cyhHU1RfUElQRUxJTkUobV9wbGF5ZXItPnBpcGVsaW5lKCkpKTsKKyAgICBnc3RfYnVzX3NldF9z
eW5jX2hhbmRsZXIoYnVzLCBnc3RfYnVzX3N5bmNfc2lnbmFsX2hhbmRsZXIsIHRoaXMpOworICAg
IGdfc2lnbmFsX2Nvbm5lY3QoYnVzLCAic3luYy1tZXNzYWdlOjplbGVtZW50IiwgR19DQUxMQkFD
Syhnc3RHV29ybGRTeW5jTWVzc2FnZUNhbGxiYWNrKSwgdGhpcyk7CisgICAgZ3N0X29iamVjdF91
bnJlZihidXMpOwogfQogCiBHU3RyZWFtZXJHV29ybGQ6On5HU3RyZWFtZXJHV29ybGQoKQogewor
ICAgIGV4aXRGdWxsc2NyZWVuKCk7Cit9CisKK2Jvb2wgR1N0cmVhbWVyR1dvcmxkOjplbnRlckZ1
bGxzY3JlZW4oKQoreworICAgIGlmIChtX2R5bmFtaWNQYWROYW1lKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAoIW1fdmlkZW9XaW5kb3cpCisgICAgICAgIG1fdmlkZW9XaW5kb3cg
PSBQbGF0Zm9ybVZpZGVvV2luZG93OjpjcmVhdGVXaW5kb3coKTsKKworICAgIEdzdEVsZW1lbnQq
IHBpcGVsaW5lID0gbV9wbGF5ZXItPnBpcGVsaW5lKCk7CisgICAgR3N0RWxlbWVudCogcGxhdGZv
cm1WaWRlb1NpbmsgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImF1dG92aWRlb3NpbmsiLCAi
cGxhdGZvcm1WaWRlb1NpbmsiKTsKKyAgICBHc3RFbGVtZW50KiBjb2xvcnNwYWNlID0gZ3N0X2Vs
ZW1lbnRfZmFjdG9yeV9tYWtlKCJmZm1wZWdjb2xvcnNwYWNlIiwgImNvbG9yc3BhY2UiKTsKKyAg
ICBHc3RFbGVtZW50KiBxdWV1ZSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgicXVldWUiLCAi
cXVldWUiKTsKKyAgICBHc3RFbGVtZW50KiB2aWRlb1NjYWxlID0gZ3N0X2VsZW1lbnRfZmFjdG9y
eV9tYWtlKCJ2aWRlb3NjYWxlIiwgInZpZGVvU2NhbGUiKTsKKworICAgIC8vIEdldCB2aWRlbyBz
aW5rIGJpbiBhbmQgdGhlIHRlZSBpbnNpZGUuCisgICAgR093blB0cjxHc3RFbGVtZW50PiB2aWRl
b1Npbms7CisgICAgZ19vYmplY3RfZ2V0KHBpcGVsaW5lLCAidmlkZW8tc2luayIsICZ2aWRlb1Np
bmsub3V0UHRyKCksIE5VTEwpOworICAgIEdzdEVsZW1lbnQqIHRlZSA9IGdzdF9iaW5fZ2V0X2J5
X25hbWUoR1NUX0JJTih2aWRlb1NpbmsuZ2V0KCkpLCAidmlkZW9UZWUiKTsKKworICAgIC8vIEFk
ZCBhbmQgbGluayBhIHF1ZXVlLCBmZm1wZWdjb2xvcnNwYWNlIGFuZCBzaW5rIGluIHRoZSBiaW4u
CisgICAgZ3N0X2Jpbl9hZGRfbWFueShHU1RfQklOKHZpZGVvU2luay5nZXQoKSksIHBsYXRmb3Jt
VmlkZW9TaW5rLCB2aWRlb1NjYWxlLCBjb2xvcnNwYWNlLCBxdWV1ZSwgTlVMTCk7CisgICAgZ3N0
X2VsZW1lbnRfbGlua19tYW55KHF1ZXVlLCBjb2xvcnNwYWNlLCB2aWRlb1NjYWxlLCBwbGF0Zm9y
bVZpZGVvU2luaywgTlVMTCk7CisKKyAgICAvLyBMaW5rIGEgbmV3IHNyYyBwYWQgZnJvbSB0ZWUg
dG8gcXVldWUuCisgICAgR3N0UGFkKiBzcmNQYWQgPSBnc3RfZWxlbWVudF9nZXRfcmVxdWVzdF9w
YWQodGVlLCAic3JjJWQiKTsKKyAgICBHc3RQYWQqIHNpbmtQYWQgPSBnc3RfZWxlbWVudF9nZXRf
c3RhdGljX3BhZChxdWV1ZSwgInNpbmsiKTsKKyAgICBnc3RfcGFkX2xpbmsoc3JjUGFkLCBzaW5r
UGFkKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmKEdTVF9PQkpFQ1Qoc2lua1BhZCkpOworCisgICAg
bV9keW5hbWljUGFkTmFtZSA9IGdzdF9wYWRfZ2V0X25hbWUoc3JjUGFkKTsKKworICAgIC8vIFJv
bGwgbmV3IGVsZW1lbnRzIHRvIHBpcGVsaW5lIHN0YXRlLgorICAgIGdzdF9lbGVtZW50X3N5bmNf
c3RhdGVfd2l0aF9wYXJlbnQocXVldWUpOworICAgIGdzdF9lbGVtZW50X3N5bmNfc3RhdGVfd2l0
aF9wYXJlbnQoY29sb3JzcGFjZSk7CisgICAgZ3N0X2VsZW1lbnRfc3luY19zdGF0ZV93aXRoX3Bh
cmVudCh2aWRlb1NjYWxlKTsKKyAgICBnc3RfZWxlbWVudF9zeW5jX3N0YXRlX3dpdGhfcGFyZW50
KHBsYXRmb3JtVmlkZW9TaW5rKTsKKworICAgIGdzdF9vYmplY3RfdW5yZWYodGVlKTsKKworICAg
IC8vIFF1ZXJ5IHRoZSBjdXJyZW50IG1lZGlhIHNlZ21lbnQgaW5mb3JtYXRpb25zIGFuZCBzZW5k
IHRoZW0gdG93YXJkcworICAgIC8vIHRoZSBuZXcgdGVlIGJyYW5jaCBkb3duc3RyZWFtLgorCisg
ICAgR3N0UXVlcnkqIHF1ZXJ5ID0gZ3N0X3F1ZXJ5X25ld19zZWdtZW50KEdTVF9GT1JNQVRfVElN
RSk7CisgICAgZ2Jvb2xlYW4gcXVlcnlSZXN1bHQgPSBnc3RfZWxlbWVudF9xdWVyeShwaXBlbGlu
ZSwgcXVlcnkpOworCisgICAgLy8gU2VlIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3df
YnVnLmNnaT9pZD02MjA0OTAuCisjaWYgR1NUX0NIRUNLX1ZFUlNJT04oMCwgMTAsIDMwKQorICAg
IGlmICghcXVlcnlSZXN1bHQpIHsKKyAgICAgICAgZ3N0X3F1ZXJ5X3VucmVmKHF1ZXJ5KTsKKyAg
ICAgICAgZ3N0X29iamVjdF91bnJlZihHU1RfT0JKRUNUKHNyY1BhZCkpOworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisjZW5kaWYKKworICAgIEdzdEZvcm1hdCBmb3JtYXQ7CisgICAgZ2lu
dDY0IHBvc2l0aW9uOworICAgIGlmICghZ3N0X2VsZW1lbnRfcXVlcnlfcG9zaXRpb24ocGlwZWxp
bmUsICZmb3JtYXQsICZwb3NpdGlvbikpCisgICAgICAgIHBvc2l0aW9uID0gMDsKKworICAgIGdk
b3VibGUgcmF0ZTsKKyAgICBnaW50NjQgc3RhcnRWYWx1ZSwgc3RvcFZhbHVlOworICAgIGdzdF9x
dWVyeV9wYXJzZV9zZWdtZW50KHF1ZXJ5LCAmcmF0ZSwgJmZvcm1hdCwgJnN0YXJ0VmFsdWUsICZz
dG9wVmFsdWUpOworCisgICAgR3N0RXZlbnQqIGV2ZW50ID0gZ3N0X2V2ZW50X25ld19uZXdfc2Vn
bWVudChGQUxTRSwgcmF0ZSwgZm9ybWF0LCBzdGFydFZhbHVlLCBzdG9wVmFsdWUsIHBvc2l0aW9u
KTsKKyAgICBnc3RfcGFkX3B1c2hfZXZlbnQoc3JjUGFkLCBldmVudCk7CisKKyAgICBnc3RfcXVl
cnlfdW5yZWYocXVlcnkpOworICAgIGdzdF9vYmplY3RfdW5yZWYoR1NUX09CSkVDVChzcmNQYWQp
KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBHU3RyZWFtZXJHV29ybGQ6OmV4aXRGdWxs
c2NyZWVuKCkKK3sKKyAgICBpZiAoIW1fZHluYW1pY1BhZE5hbWUpCisgICAgICAgIHJldHVybjsK
KworICAgIEdzdEVsZW1lbnQqIHBpcGVsaW5lID0gbV9wbGF5ZXItPnBpcGVsaW5lKCk7CisKKyAg
ICAvLyBHZXQgdmlkZW8gc2luayBiaW4gYW5kIHRoZSBlbGVtZW50cyB0byByZW1vdmUuCisgICAg
R093blB0cjxHc3RFbGVtZW50PiB2aWRlb1Npbms7CisgICAgZ19vYmplY3RfZ2V0KHBpcGVsaW5l
LCAidmlkZW8tc2luayIsICZ2aWRlb1Npbmsub3V0UHRyKCksIE5VTEwpOworICAgIEdzdEVsZW1l
bnQqIHRlZSA9IGdzdF9iaW5fZ2V0X2J5X25hbWUoR1NUX0JJTih2aWRlb1NpbmsuZ2V0KCkpLCAi
dmlkZW9UZWUiKTsKKyAgICBHc3RFbGVtZW50KiBwbGF0Zm9ybVZpZGVvU2luayA9IGdzdF9iaW5f
Z2V0X2J5X25hbWUoR1NUX0JJTih2aWRlb1NpbmsuZ2V0KCkpLCAicGxhdGZvcm1WaWRlb1Npbmsi
KTsKKyAgICBHc3RFbGVtZW50KiBxdWV1ZSA9IGdzdF9iaW5fZ2V0X2J5X25hbWUoR1NUX0JJTih2
aWRlb1NpbmsuZ2V0KCkpLCAicXVldWUiKTsKKyAgICBHc3RFbGVtZW50KiBjb2xvcnNwYWNlID0g
Z3N0X2Jpbl9nZXRfYnlfbmFtZShHU1RfQklOKHZpZGVvU2luay5nZXQoKSksICJjb2xvcnNwYWNl
Iik7CisgICAgR3N0RWxlbWVudCogdmlkZW9TY2FsZSA9IGdzdF9iaW5fZ2V0X2J5X25hbWUoR1NU
X0JJTih2aWRlb1NpbmsuZ2V0KCkpLCAidmlkZW9TY2FsZSIpOworCisgICAgLy8gR2V0IHBhZHMg
dG8gdW5saW5rIGFuZCByZW1vdmUuCisgICAgR3N0UGFkKiBzcmNQYWQgPSBnc3RfZWxlbWVudF9n
ZXRfc3RhdGljX3BhZCh0ZWUsIG1fZHluYW1pY1BhZE5hbWUpOworICAgIEdzdFBhZCogc2lua1Bh
ZCA9IGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKHF1ZXVlLCAic2luayIpOworCisgICAgLy8g
VW5saW5rIGFuZCByZWxlYXNlIHJlcXVlc3QgcGFkLgorICAgIGdzdF9wYWRfdW5saW5rKHNyY1Bh
ZCwgc2lua1BhZCk7CisgICAgZ3N0X2VsZW1lbnRfcmVsZWFzZV9yZXF1ZXN0X3BhZCh0ZWUsIHNy
Y1BhZCk7CisgICAgZ3N0X29iamVjdF91bnJlZihHU1RfT0JKRUNUKHNyY1BhZCkpOworICAgIGdz
dF9vYmplY3RfdW5yZWYoR1NUX09CSkVDVChzaW5rUGFkKSk7CisKKyAgICAvLyBVbmxpbmssIHJl
bW92ZSBhbmQgY2xlYW51cCBxdWV1ZSwgZmZtcGVnY29sb3JzcGFjZSwgdmlkZW9TY2FsZSBhbmQg
c2luay4KKyAgICBnc3RfZWxlbWVudF91bmxpbmtfbWFueShxdWV1ZSwgY29sb3JzcGFjZSwgdmlk
ZW9TY2FsZSwgcGxhdGZvcm1WaWRlb1NpbmssIE5VTEwpOworICAgIGdzdF9iaW5fcmVtb3ZlX21h
bnkoR1NUX0JJTih2aWRlb1NpbmsuZ2V0KCkpLCBxdWV1ZSwgY29sb3JzcGFjZSwgdmlkZW9TY2Fs
ZSwgcGxhdGZvcm1WaWRlb1NpbmssIE5VTEwpOworICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShx
dWV1ZSwgR1NUX1NUQVRFX05VTEwpOworICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShjb2xvcnNw
YWNlLCBHU1RfU1RBVEVfTlVMTCk7CisgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKHZpZGVvU2Nh
bGUsIEdTVF9TVEFURV9OVUxMKTsKKyAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUocGxhdGZvcm1W
aWRlb1NpbmssIEdTVF9TVEFURV9OVUxMKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmKHF1ZXVlKTsK
KyAgICBnc3Rfb2JqZWN0X3VucmVmKGNvbG9yc3BhY2UpOworICAgIGdzdF9vYmplY3RfdW5yZWYo
dmlkZW9TY2FsZSk7CisgICAgZ3N0X29iamVjdF91bnJlZihwbGF0Zm9ybVZpZGVvU2luayk7CisK
KyAgICBnc3Rfb2JqZWN0X3VucmVmKHRlZSk7CisgICAgbV9keW5hbWljUGFkTmFtZSA9IDA7Cit9
CisKK3ZvaWQgR1N0cmVhbWVyR1dvcmxkOjpzZXRXaW5kb3dPdmVybGF5KEdzdE1lc3NhZ2UqIG1l
c3NhZ2UpCit7CisgICAgR3N0T2JqZWN0KiBzaW5rID0gR1NUX01FU1NBR0VfU1JDKG1lc3NhZ2Up
OworCisgICAgaWYgKCFHU1RfSVNfWF9PVkVSTEFZKHNpbmspKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAoZ19vYmplY3RfY2xhc3NfZmluZF9wcm9wZXJ0eShHX09CSkVDVF9HRVRfQ0xBU1Mo
c2luayksICJmb3JjZS1hc3BlY3QtcmF0aW8iKSkKKyAgICAgICAgZ19vYmplY3Rfc2V0KHNpbmss
ICJmb3JjZS1hc3BlY3QtcmF0aW8iLCBUUlVFLCBOVUxMKTsKKworICAgIGlmIChtX3ZpZGVvV2lu
ZG93KQorICAgICAgICBnc3RfeF9vdmVybGF5X3NldF94d2luZG93X2lkKEdTVF9YX09WRVJMQVko
c2luayksIG1fdmlkZW9XaW5kb3ctPnZpZGVvV2luZG93SWQoKSk7CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5o
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmgK
aW5kZXggYjYyNjI5OC4uMDM1OGIwMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmgKQEAgLTIzLDI1ICsyMyw0NCBAQAog
CiAjaWYgRU5BQkxFKFZJREVPKQogCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1WaWRlb1dpbmRvdy5oIgogI2luY2x1ZGUgIlJlZkNv
dW50ZWQuaCIKICNpbmNsdWRlICJSZWZQdHIuaCIKICNpbmNsdWRlIDxnbGliLmg+CiAKK3R5cGVk
ZWYgc3RydWN0IF9Hc3RFbGVtZW50IEdzdEVsZW1lbnQ7Cit0eXBlZGVmIHN0cnVjdCBfR3N0TWVz
c2FnZSBHc3RNZXNzYWdlOwordHlwZWRlZiBzdHJ1Y3QgX0dzdEJ1cyBHc3RCdXM7Cit0eXBlZGVm
IHN0cnVjdCBfR3N0QmluIEdzdEJpbjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI7CiAKK2dib29sZWFuIGdzdEdXb3JsZFN5bmNNZXNz
YWdlQ2FsbGJhY2soR3N0QnVzKiBidXMsIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIGdwb2ludGVyIGRh
dGEpOwogCiBjbGFzcyBHU3RyZWFtZXJHV29ybGQgOiBwdWJsaWMgUmVmQ291bnRlZDxHU3RyZWFt
ZXJHV29ybGQ+IHsKKyAgICBmcmllbmQgZ2Jvb2xlYW4gZ3N0R1dvcmxkU3luY01lc3NhZ2VDYWxs
YmFjayhHc3RCdXMqIGJ1cywgR3N0TWVzc2FnZSogbWVzc2FnZSwgZ3BvaW50ZXIgZGF0YSk7CiAK
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxHU3RyZWFtZXJHV29ybGQ+IGNyZWF0ZUdX
b3JsZChNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqKTsKICAgICB+R1N0cmVhbWVyR1dvcmxk
KCk7CiAKKyAgICBHc3RFbGVtZW50KiBwaXBlbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWVy
LT5waXBlbGluZSgpOyB9CisKKyAgICAvLyBSZXR1cm5zIHRoZSBmdWxsLXNjcmVlbiB3aW5kb3cg
Y3JlYXRlZAorICAgIGJvb2wgZW50ZXJGdWxsc2NyZWVuKCk7CisgICAgdm9pZCBleGl0RnVsbHNj
cmVlbigpOworCisgICAgdm9pZCBzZXRXaW5kb3dPdmVybGF5KEdzdE1lc3NhZ2UqIG1lc3NhZ2Up
OworICAgIFBsYXRmb3JtVmlkZW9XaW5kb3cqIHBsYXRmb3JtVmlkZW9XaW5kb3coKSBjb25zdCB7
IHJldHVybiBtX3ZpZGVvV2luZG93LmdldCgpOyB9CisKIHByaXZhdGU6CiAgICAgR1N0cmVhbWVy
R1dvcmxkKE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciopOwogICAgIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lciogbV9wbGF5ZXI7CisgICAgUmVmUHRyPFBsYXRmb3JtVmlkZW9XaW5kb3c+
IG1fdmlkZW9XaW5kb3c7CisgICAgZ2NoYXIqIG1fZHluYW1pY1BhZE5hbWU7CiB9OwogCiB9CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA3MTg0NDM5Li45ZmZmOTg0
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTU0LDcgKzU0LDYg
QEAKICNpbmNsdWRlIDxHT3duUHRyLmg+CiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUg
PGdzdC9pbnRlcmZhY2VzL21peGVyLmg+Ci0jaW5jbHVkZSA8Z3N0L2ludGVyZmFjZXMveG92ZXJs
YXkuaD4KICNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8uaD4KICNpbmNsdWRlIDxsaW1pdHM+CiAj
aW5jbHVkZSA8bWF0aC5oPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvdy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvdy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjgzZGM1ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93LmgKQEAgLTAsMCArMSw1NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgUGxhdGZvcm1W
aWRlb1dpbmRvd19oCisjZGVmaW5lIFBsYXRmb3JtVmlkZW9XaW5kb3dfaAorCisjaWYgRU5BQkxF
KFZJREVPKQorCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorCisjaWYgUExBVEZPUk0oR1RLKQorI2luY2x1ZGUgPGd0ay9ndGsuaD4KK3R5
cGVkZWYgR3RrV2lkZ2V0IFBsYXRmb3JtV2luZG93VHlwZTsKKyNlbmRpZgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIFBsYXRmb3JtVmlkZW9XaW5kb3cgOiBwdWJsaWMgUmVmQ291bnRl
ZDxQbGF0Zm9ybVZpZGVvV2luZG93PiB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxQbGF0Zm9ybVZpZGVvV2luZG93PiBjcmVhdGVXaW5kb3coKSB7IHJldHVybiBhZG9w
dFJlZihuZXcgUGxhdGZvcm1WaWRlb1dpbmRvdygpKTsgfQorCisgICAgICAgIFBsYXRmb3JtVmlk
ZW9XaW5kb3coKTsKKyAgICAgICAgflBsYXRmb3JtVmlkZW9XaW5kb3coKTsKKworICAgICAgICBQ
bGF0Zm9ybVdpbmRvd1R5cGUqIHdpbmRvdygpIGNvbnN0IHsgcmV0dXJuIG1fd2luZG93OyB9Cisg
ICAgICAgIGd1bG9uZyB2aWRlb1dpbmRvd0lkKCkgY29uc3QgeyByZXR1cm4gbV92aWRlb1dpbmRv
d0lkOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBndWxvbmcgbV92aWRlb1dpbmRvd0lkOwor
ICAgICAgICBQbGF0Zm9ybVdpbmRvd1R5cGUqIG1fdmlkZW9XaW5kb3c7CisgICAgICAgIFBsYXRm
b3JtV2luZG93VHlwZSogbV93aW5kb3c7CisgICAgfTsKK30KKworI2VuZGlmCisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1W
aWRlb1dpbmRvd0d0ay5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9Q
bGF0Zm9ybVZpZGVvV2luZG93R3RrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4xODVmNTM1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvd0d0ay5jcHAKQEAgLTAsMCArMSw2MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJQbGF0Zm9ybVZpZGVvV2luZG93LmgiCisKKyNpZmRlZiBHREtfV0lORE9XSU5H
X1gxMQorI2luY2x1ZGUgPGdkay9nZGt4Lmg+IC8vIGZvciBHREtfV0lORE9XX1hJRAorI2VuZGlm
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitQbGF0Zm9ybVZpZGVvV2luZG93OjpQbGF0
Zm9ybVZpZGVvV2luZG93KCkKK3sKKyAgICBtX3dpbmRvdyA9IGd0a193aW5kb3dfbmV3KEdUS19X
SU5ET1dfVE9QTEVWRUwpOworICAgIGd0a193aWRnZXRfc2V0X2V2ZW50cyhtX3dpbmRvdywgR0RL
X1BPSU5URVJfTU9USU9OX01BU0sgfCBHREtfS0VZX1BSRVNTX01BU0sgfCBHREtfRk9DVVNfQ0hB
TkdFX01BU0spOworCisgICAgbV92aWRlb1dpbmRvdyA9IGd0a19kcmF3aW5nX2FyZWFfbmV3KCk7
CisgICAgZ3RrX3dpZGdldF9zZXRfZG91YmxlX2J1ZmZlcmVkKG1fdmlkZW9XaW5kb3csIEZBTFNF
KTsKKyAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKG1fd2luZG93KSwgbV92aWRl
b1dpbmRvdyk7CisKKyAgICBndGtfd2lkZ2V0X3JlYWxpemUobV93aW5kb3cpOworCisjaWZkZWYg
R0RLX1dJTkRPV0lOR19YMTEKKyAgICBtX3ZpZGVvV2luZG93SWQgPSBHREtfV0lORE9XX1hJRChn
dGtfd2lkZ2V0X2dldF93aW5kb3cobV93aW5kb3cpKTsKKyNlbmRpZgorCit9CisKK1BsYXRmb3Jt
VmlkZW9XaW5kb3c6On5QbGF0Zm9ybVZpZGVvV2luZG93KCkKK3sKKyAgICBpZiAobV92aWRlb1dp
bmRvdyAmJiBtX3dpbmRvdykgeworICAgICAgICBndGtfY29udGFpbmVyX3JlbW92ZShHVEtfQ09O
VEFJTkVSKG1fd2luZG93KSwgbV92aWRlb1dpbmRvdyk7CisgICAgICAgIGd0a193aWRnZXRfZGVz
dHJveShtX3ZpZGVvV2luZG93KTsKKyAgICAgICAgbV92aWRlb1dpbmRvdyA9IDA7CisgICAgfQor
CisgICAgaWYgKG1fd2luZG93KSB7CisgICAgICAgIGd0a193aWRnZXRfZGVzdHJveShtX3dpbmRv
dyk7CisgICAgICAgIG1fd2luZG93ID0gMDsKKyAgICB9CisKKyAgICBtX3ZpZGVvV2luZG93SWQg
PSAwOworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0No
YW5nZUxvZwppbmRleCAwY2MyMzFlLi5lNTVmNjViIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL0No
YW5nZUxvZworKysgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDEw
LTA3LTIwICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR1N0cmVhbWVyXSBHVEsg
WE92ZXJsYXkgc3VwcG9ydCBpbiBHU3RyZWFtZXJHV29ybGQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDc0CisKKyAgICAgICAgTmV3IEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXIgb2JqZWN0LCBwcml2YXRlIGluIHRoZSB3ZWJ2aWV3LiBJdAorICAg
ICAgICBpcyBjcmVhdGVkIHdoZW4gdGhlIHVzZXIgcHJlc3NlcyB0aGUgZnVsbHNjcmVlbiBidXR0
b24gb2YgdGhlCisgICAgICAgIHZpZGVvIGNvbnRyb2xzLiBWaWRlbyBpcyBkaXNwbGF5ZWQgaW4g
ZnVsbHNjcmVlbiwgY29udHJvbHMgYXJlCisgICAgICAgIGRpc3BsYXllZCB3aGVuIHRoZSB1c2Vy
IG1vdmVzIHRoZSBtb3VzZSBhbmQgd2hlbiB0aGUgdmlkZW8gaXMKKyAgICAgICAgcGF1c2VkLiBU
aGVyZSdzIGFsc28gYmFzaWMga2V5Ym9hcmQgc2hvcnRjdXRzIHN1cHBvcnQ6IEYvZiB0bworICAg
ICAgICBsZWF2ZSBmdWxsc2NyZWVuLCBzcGFjZSB0byB0b2dnbGUgcGxheS9wYXVzZSBhbmQgdXAv
ZG93biB0bworICAgICAgICBjb250cm9sIHZvbHVtZS4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6
c3VwcG9ydHNGdWxsc2NyZWVuRm9yTm9kZSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVu
dDo6ZW50ZXJGdWxsc2NyZWVuRm9yTm9kZSk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVu
dDo6ZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRHdGsuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChoaWRlSHVkQ2FsbGJhY2spOgorICAgICAg
ICAob25GdWxsc2NyZWVuR3RrTW90aW9uTm90aWZ5RXZlbnQpOgorICAgICAgICAob25GdWxsc2Ny
ZWVuR3RrQWN0aXZlTm90aWZpY2F0aW9uKToKKyAgICAgICAgKG9uRnVsbHNjcmVlbkd0a0NvbmZp
Z3VyZUV2ZW50KToKKyAgICAgICAgKG9uRnVsbHNjcmVlbkd0a0Rlc3Ryb3kpOgorICAgICAgICAo
dG9nZ2xlUGxheVBhdXNlQWN0aXZhdGVkKToKKyAgICAgICAgKGV4aXRGdWxsc2NyZWVuQWN0aXZh
dGVkKToKKyAgICAgICAgKHByb2dyZXNzQmFyVXBkYXRlQ2FsbGJhY2spOgorICAgICAgICAodGlt
ZVNjYWxlQnV0dG9uUHJlc3NlZCk6CisgICAgICAgICh0aW1lU2NhbGVCdXR0b25SZWxlYXNlZCk6
CisgICAgICAgICh0aW1lU2NhbGVWYWx1ZUNoYW5nZWQpOgorICAgICAgICAodm9sdW1lVmFsdWVD
aGFuZ2VkKToKKyAgICAgICAgKHBsYXllclZvbHVtZUNoYW5nZWRDYWxsYmFjayk6CisgICAgICAg
IChwbGF5ZXJNdXRlQ2hhbmdlZENhbGxiYWNrKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXI6OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIpOgorICAgICAgICAoRnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlcjo6fkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIpOgorICAgICAgICAo
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6c2V0TWVkaWFFbGVtZW50KToKKyAgICAgICAgKEZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6Omd0a0NvbmZpZ3VyZSk6CisgICAgICAgIChGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyOjpzaG93SHVkKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXI6OmhpZGVIdWQpOgorICAgICAgICAob25GdWxsc2NyZWVuR3RrS2V5UHJlc3NFdmVu
dCk6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjplbnRlckZ1bGxzY3JlZW4p
OgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dXBkYXRlSHVkUG9zaXRpb24p
OgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZXhpdE9uVXNlclJlcXVlc3Qp
OgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZXhpdEZ1bGxzY3JlZW4pOgor
ICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6Y2FuUGxheSk6CisgICAgICAgIChG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpwbGF5KToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXI6OnBhdXNlKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6
OnBsYXlTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6
dG9nZ2xlUGxheSk6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp2b2x1bWUp
OgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6bXV0ZWQpOgorICAgICAgICAo
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6c2V0Vm9sdW1lKToKKyAgICAgICAgKEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI6OnZvbHVtZUNoYW5nZWQpOgorICAgICAgICAoRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlcjo6bXV0ZUNoYW5nZWQpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlcjo6Y3VycmVudFRpbWUpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
cjo6c2V0Q3VycmVudFRpbWUpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6
ZHVyYXRpb24pOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6cGVyY2VudExv
YWRlZCk6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpiZWdpblNlZWspOgor
ICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZG9TZWVrKToKKyAgICAgICAgKEZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmVuZFNlZWspOgorICAgICAgICAodGltZVRvU3RyaW5n
KToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnVwZGF0ZUh1ZFByb2dyZXNz
QmFyKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmNyZWF0ZUh1ZCk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oOiBBZGRl
ZC4KKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6Om1lZGlhRWxlbWVudCk6Cisg
ICAgICAgICogd2Via2l0L3dlYmtpdHByaXZhdGUuY3BwOgorICAgICAgICAod2Via2l0X3dlYl92
aWV3X2VudGVyX2Z1bGxzY3JlZW4pOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2V4aXRfZnVs
bHNjcmVlbik6CisgICAgICAgICogd2Via2l0L3dlYmtpdHByaXZhdGUuaDoKKwogMjAxMC0wOC0x
MiAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9yYS5jby51
az4KIAogICAgICAgICBSZWFsbHkgYWRkIGEgbWlzc2luZyBmaWxlLiBJIHdpc2ggSSB3b3VsZCBy
ZW1lbWJlciBydW5uaW5nIGdpdCBhZGQKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50R3RrLmNwcAppbmRleCAxODVhYzE2Li4xYzg0NTFlIDEwMDY0NAotLS0gYS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKKysrIGIvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAj
aW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkUmVxdWVzdC5oIgogI2lu
Y2x1ZGUgIkd0a1ZlcnNpb25pbmcuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRl
ICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkljb24u
aCIKQEAgLTY0MSw0ICs2NDIsMjggQEAgUGFzc1JlZlB0cjxXZWJDb3JlOjpTZWFyY2hQb3B1cE1l
bnU+IENocm9tZUNsaWVudDo6Y3JlYXRlU2VhcmNoUG9wdXBNZW51KFdlYkNvcmUKICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFNlYXJjaFBvcHVwTWVudUd0ayhjbGllbnQpKTsKIH0KIAorI2lmIEVO
QUJMRShWSURFTykKKworYm9vbCBDaHJvbWVDbGllbnQ6OnN1cHBvcnRzRnVsbHNjcmVlbkZvck5v
ZGUoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICByZXR1cm4gbm9kZS0+aGFzVGFnTmFtZShIVE1M
TmFtZXM6OnZpZGVvVGFnKTsKK30KKwordm9pZCBDaHJvbWVDbGllbnQ6OmVudGVyRnVsbHNjcmVl
bkZvck5vZGUoTm9kZSogbm9kZSkKK3sKKyAgICBXZWJDb3JlOjpGcmFtZSogZnJhbWUgPSBub2Rl
LT5kb2N1bWVudCgpLT5mcmFtZSgpOworICAgIFdlYktpdFdlYkZyYW1lKiB3ZWJGcmFtZSA9IGtp
dChmcmFtZSk7CisgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IGdldFZpZXdGcm9tRnJhbWUo
d2ViRnJhbWUpOworICAgIHdlYmtpdF93ZWJfdmlld19lbnRlcl9mdWxsc2NyZWVuKHdlYlZpZXcs
IG5vZGUpOworfQorCit2b2lkIENocm9tZUNsaWVudDo6ZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKE5v
ZGUqIG5vZGUpCit7CisgICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQo
KS0+ZnJhbWUoKTsKKyAgICBXZWJLaXRXZWJGcmFtZSogd2ViRnJhbWUgPSBraXQoZnJhbWUpOwor
ICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBnZXRWaWV3RnJvbUZyYW1lKHdlYkZyYW1lKTsK
KyAgICB3ZWJraXRfd2ViX3ZpZXdfZXhpdF9mdWxsc2NyZWVuKHdlYlZpZXcpOworfQorI2VuZGlm
CisKIH0KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
R3RrLmggYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCmluZGV4
IGUzYmUxYzIuLjIxYzQ2NzcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50R3RrLmgKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRHdGsuaApAQCAtMTMzLDYgKzEzMywxMSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAg
ICAgdmlydHVhbCBib29sIHNlbGVjdEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKCk7CiAg
ICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpQb3B1cE1lbnU+IGNyZWF0ZVBvcHVw
TWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51
KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0OworI2lmIEVOQUJMRShWSURFTykKKyAg
ICAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVsbHNjcmVlbkZvck5vZGUoY29uc3QgV2ViQ29y
ZTo6Tm9kZSopOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVuRm9yTm9kZShX
ZWJDb3JlOjpOb2RlKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbHNjcmVlbkZvck5v
ZGUoV2ViQ29yZTo6Tm9kZSopOworI2VuZGlmCiAKICAgICBwcml2YXRlOgogICAgICAgICBXZWJL
aXRXZWJWaWV3KiBtX3dlYlZpZXc7CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5kODNlY2VlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcApAQCAtMCwwICsxLDU5MyBA
QAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTAorICoKKyAqICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU8pCisKKyNpbmNsdWRlICJGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyLmgiCisKKyNpbmNsdWRlICJNZWRpYVBsYXllci5oIgorCisjaW5j
bHVkZSA8Z2RrL2dkay5oPgorI2luY2x1ZGUgPGdkay9nZGtrZXlzeW1zLmg+CisjaW5jbHVkZSA8
Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisjaW5jbHVkZSA8Z3RrL2d0
ay5oPgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
KyNkZWZpbmUgSFVEX0FVVE9fSElERV9JTlRFUlZBTCAzMDAwIC8vIDMgc2Vjb25kcworI2RlZmlu
ZSBQUk9HUkVTU19CQVJfVVBEQVRFX0lOVEVSVkFMIDE1MCAvLyAxNTBtcworI2RlZmluZSBWT0xV
TUVfVVBfT0ZGU0VUIDAuMDUgLy8gNSUKKyNkZWZpbmUgVk9MVU1FX0RPV05fT0ZGU0VUIDAuMDUg
Ly8gNSUKKworLy8gVXNlIHN5bWJvbGljIGljb25zIG9ubHkgaWYgd2UgYnVpbGQgd2l0aCBHVEsr
LTMgc3VwcG9ydC4gVGhleSBjb3VsZAorLy8gYmUgZW5hYmxlZCBmb3IgdGhlIEdUSysyIGJ1aWxk
IGJ1dCB3ZSdkIG5lZWQgdG8gYnVtcCB0aGUgcmVxdWlyZWQKKy8vIHZlcnNpb24gdG8gYXQgbGVh
c3QgMi4yMi4KKyNpZiBHVEtfTUFKT1JfVkVSU0lPTiA8IDMKKyNkZWZpbmUgUExBWV9JQ09OX05B
TUUgIm1lZGlhLXBsYXliYWNrLXN0YXJ0IgorI2RlZmluZSBQQVVTRV9JQ09OX05BTUUgIm1lZGlh
LXBsYXliYWNrLXBhdXNlIgorI2RlZmluZSBFWElUX0ZVTExTQ1JFRU5fSUNPTl9OQU1FICJ2aWV3
LXJlc3RvcmUiCisjZWxzZQorI2RlZmluZSBQTEFZX0lDT05fTkFNRSAibWVkaWEtcGxheWJhY2st
c3RhcnQtc3ltYm9saWMiCisjZGVmaW5lIFBBVVNFX0lDT05fTkFNRSAibWVkaWEtcGxheWJhY2st
cGF1c2Utc3ltYm9saWMiCisjZGVmaW5lIEVYSVRfRlVMTFNDUkVFTl9JQ09OX05BTUUgInZpZXct
cmVzdG9yZS1zeW1ib2xpYyIKKyNlbmRpZgorCitzdGF0aWMgZ2Jvb2xlYW4gaGlkZUh1ZENhbGxi
YWNrKGdwb2ludGVyIGRhdGEpCit7CisgICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogY29u
dHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcio+KGRh
dGEpOworICAgIGNvbnRyb2xsZXItPmhpZGVIdWQoKTsKKyAgICByZXR1cm4gRkFMU0U7Cit9CisK
K3N0YXRpYyBnYm9vbGVhbiBvbkZ1bGxzY3JlZW5HdGtNb3Rpb25Ob3RpZnlFdmVudChHdGtXaWRn
ZXQqIHdpZGdldCwgR2RrRXZlbnRNb3Rpb24qIGV2ZW50LCBncG9pbnRlciBkYXRhKQoreworICAg
IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0
PEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqPihkYXRhKTsKKyAgICBjb250cm9sbGVyLT5zaG93
SHVkKHRydWUpOworICAgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgdm9pZCBvbkZ1bGxzY3Jl
ZW5HdGtBY3RpdmVOb3RpZmljYXRpb24oR3RrV2lkZ2V0KiB3aWRnZXQsIEdQYXJhbVNwZWMqIHBy
b3BlcnR5LCBncG9pbnRlciBkYXRhKQoreworICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIq
IGNvbnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0PEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIq
PihkYXRhKTsKKyAgICBpZiAoIWd0a193aW5kb3dfaXNfYWN0aXZlKEdUS19XSU5ET1cod2lkZ2V0
KSkpCisgICAgICAgIGNvbnRyb2xsZXItPmhpZGVIdWQoKTsKK30KKworc3RhdGljIGdib29sZWFu
IG9uRnVsbHNjcmVlbkd0a0NvbmZpZ3VyZUV2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVu
dENvbmZpZ3VyZSogZXZlbnQsIGdwb2ludGVyIGRhdGEpCit7CisgICAgRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlciogY29udHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcio+KGRhdGEpOworICAgIGNvbnRyb2xsZXItPmd0a0NvbmZpZ3VyZShldmVudCk7
CisgICAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyB2b2lkIG9uRnVsbHNjcmVlbkd0a0Rlc3Ry
b3koR3RrV2lkZ2V0KiB3aWRnZXQsIGdwb2ludGVyIGRhdGEpCit7CisgICAgRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlciogY29udHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlcio+KGRhdGEpOworICAgIGNvbnRyb2xsZXItPmV4aXRGdWxsc2NyZWVuKCk7
Cit9CisKK3N0YXRpYyB2b2lkIHRvZ2dsZVBsYXlQYXVzZUFjdGl2YXRlZChHdGtBY3Rpb24qIGFj
dGlvbiwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBj
b250cm9sbGVyID0gcmVpbnRlcnByZXRfY2FzdDxGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKj4o
ZGF0YSk7CisgICAgY29udHJvbGxlci0+dG9nZ2xlUGxheSgpOworfQorCitzdGF0aWMgdm9pZCBl
eGl0RnVsbHNjcmVlbkFjdGl2YXRlZChHdGtBY3Rpb24qIGFjdGlvbiwgZ3BvaW50ZXIgZGF0YSkK
K3sKKyAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBjb250cm9sbGVyID0gcmVpbnRlcnBy
ZXRfY2FzdDxGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKj4oZGF0YSk7CisgICAgY29udHJvbGxl
ci0+ZXhpdE9uVXNlclJlcXVlc3QoKTsKK30KKworc3RhdGljIGdib29sZWFuIHByb2dyZXNzQmFy
VXBkYXRlQ2FsbGJhY2soZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyKiBjb250cm9sbGVyID0gcmVpbnRlcnByZXRfY2FzdDxGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyKj4oZGF0YSk7CisgICAgcmV0dXJuIGNvbnRyb2xsZXItPnVwZGF0ZUh1ZFByb2dyZXNz
QmFyKCk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiB0aW1lU2NhbGVCdXR0b25QcmVzc2VkKEd0a1dp
ZGdldCogd2lkZ2V0LCBHZGtFdmVudEJ1dHRvbiogZXZlbnQsIGdwb2ludGVyIGRhdGEpCit7Cisg
ICAgaWYgKGV2ZW50LT50eXBlICE9IEdES19CVVRUT05fUFJFU1MpCisgICAgICAgIHJldHVybiBG
QUxTRTsKKworICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSByZWlu
dGVycHJldF9jYXN0PEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqPihkYXRhKTsKKyAgICBjb250
cm9sbGVyLT5iZWdpblNlZWsoKTsKKyAgICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyBnYm9v
bGVhbiB0aW1lU2NhbGVCdXR0b25SZWxlYXNlZChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRC
dXR0b24qIGV2ZW50LCBncG9pbnRlciBkYXRhKQoreworICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXIqIGNvbnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0PEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXIqPihkYXRhKTsKKyAgICBjb250cm9sbGVyLT5lbmRTZWVrKCk7CisgICAgcmV0dXJuIEZB
TFNFOworfQorCitzdGF0aWMgdm9pZCB0aW1lU2NhbGVWYWx1ZUNoYW5nZWQoR3RrV2lkZ2V0KiB3
aWRnZXQsIGdwb2ludGVyIGRhdGEpCit7CisgICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciog
Y29udHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcio+
KGRhdGEpOworICAgIGNvbnRyb2xsZXItPmRvU2VlaygpOworfQorCitzdGF0aWMgdm9pZCB2b2x1
bWVWYWx1ZUNoYW5nZWQoR3RrU2NhbGVCdXR0b24gKmJ1dHRvbiwgZ2RvdWJsZSB2YWx1ZSwgZ3Bv
aW50ZXIgZGF0YSkKK3sKKyAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBjb250cm9sbGVy
ID0gcmVpbnRlcnByZXRfY2FzdDxGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKj4oZGF0YSk7Cisg
ICAgY29udHJvbGxlci0+c2V0Vm9sdW1lKHN0YXRpY19jYXN0PGZsb2F0Pih2YWx1ZSkpOworfQor
Cit2b2lkIHBsYXllclZvbHVtZUNoYW5nZWRDYWxsYmFjayhHT2JqZWN0ICplbGVtZW50LCBHUGFy
YW1TcGVjICpwc3BlYywgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyKiBjb250cm9sbGVyID0gcmVpbnRlcnByZXRfY2FzdDxGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyKj4oZGF0YSk7CisgICAgY29udHJvbGxlci0+dm9sdW1lQ2hhbmdlZCgpOworfQorCit2
b2lkIHBsYXllck11dGVDaGFuZ2VkQ2FsbGJhY2soR09iamVjdCAqZWxlbWVudCwgR1BhcmFtU3Bl
YyAqcHNwZWMsIGdwb2ludGVyIGRhdGEpCit7CisgICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ciogY29udHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
cio+KGRhdGEpOworICAgIGNvbnRyb2xsZXItPm11dGVDaGFuZ2VkKCk7Cit9CisKK0Z1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI6OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIoKQorICAgIDogbV9o
dWRUaW1lb3V0SWQoMCkKKyAgICAsIG1fcHJvZ3Jlc3NCYXJVcGRhdGVJZCgwKQorICAgICwgbV9z
ZWVrTG9jayhmYWxzZSkKKyAgICAsIG1fd2luZG93KDApCisgICAgLCBtX2h1ZFdpbmRvdygwKQor
eworfQorCitGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp+RnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlcigpCit7CisgICAgZXhpdEZ1bGxzY3JlZW4oKTsKK30KKwordm9pZCBGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyOjpzZXRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVt
ZW50KQoreworICAgIGlmIChtZWRpYUVsZW1lbnQgPT0gbV9tZWRpYUVsZW1lbnQpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fbWVkaWFFbGVtZW50ID0gbWVkaWFFbGVtZW50OworICAgIGlmICgh
bV9tZWRpYUVsZW1lbnQpIHsKKyAgICAgICAgLy8gQ2FuJ3QgZG8gZnVsbC1zY3JlZW4sIGp1c3Qg
Z2V0IG91dAorICAgICAgICBleGl0RnVsbHNjcmVlbigpOworICAgIH0KK30KKwordm9pZCBGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyOjpndGtDb25maWd1cmUoR2RrRXZlbnRDb25maWd1cmUqIGV2
ZW50KQoreworICAgIHVwZGF0ZUh1ZFBvc2l0aW9uKCk7Cit9CisKK3ZvaWQgRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlcjo6c2hvd0h1ZChib29sIGF1dG9IaWRlKQoreworICAgIGlmICghbV9odWRX
aW5kb3cpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2h1ZFRpbWVvdXRJZCkgeworICAg
ICAgICBnX3NvdXJjZV9yZW1vdmUobV9odWRUaW1lb3V0SWQpOworICAgICAgICBtX2h1ZFRpbWVv
dXRJZCA9IDA7CisgICAgfQorCisgICAgLy8gU2hvdyB0aGUgY3Vyc29yLgorICAgIEdka1dpbmRv
dyogd2luZG93ID0gZ3RrX3dpZGdldF9nZXRfd2luZG93KG1fd2luZG93KTsKKyAgICBnZGtfd2lu
ZG93X3NldF9jdXJzb3Iod2luZG93LCBtX2N1cnNvci5nZXQoKSk7CisKKyAgICAvLyBVcGRhdGUg
dGhlIHByb2dyZXNzIGJhciBpbW1lZGlhdGVseSBiZWZvcmUgc2hvd2luZyB0aGUgd2luZG93Lgor
ICAgIHVwZGF0ZUh1ZFByb2dyZXNzQmFyKCk7CisgICAgZ3RrX3dpZGdldF9zaG93X2FsbChtX2h1
ZFdpbmRvdyk7CisgICAgdXBkYXRlSHVkUG9zaXRpb24oKTsKKworICAgIC8vIFN0YXJ0IHBlcmlv
ZGljIHVwZGF0ZXMgb2YgdGhlIHByb2dyZXNzIGJhci4KKyAgICBpZiAoIW1fcHJvZ3Jlc3NCYXJV
cGRhdGVJZCkKKyAgICAgICAgbV9wcm9ncmVzc0JhclVwZGF0ZUlkID0gZ190aW1lb3V0X2FkZChQ
Uk9HUkVTU19CQVJfVVBEQVRFX0lOVEVSVkFMLCBwcm9ncmVzc0JhclVwZGF0ZUNhbGxiYWNrLCB0
aGlzKTsKKworICAgIC8vIEhpZGUgdGhlIGh1ZCBpbiBmZXcgc2Vjb25kcywgaWYgcmVxdWVzdGVk
LgorICAgIGlmIChhdXRvSGlkZSkKKyAgICAgICAgbV9odWRUaW1lb3V0SWQgPSBnX3RpbWVvdXRf
YWRkKEhVRF9BVVRPX0hJREVfSU5URVJWQUwsIGhpZGVIdWRDYWxsYmFjaywgdGhpcyk7Cit9CisK
K3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6aGlkZUh1ZCgpCit7CisgICAgaWYgKG1f
aHVkVGltZW91dElkKSB7CisgICAgICAgIGdfc291cmNlX3JlbW92ZShtX2h1ZFRpbWVvdXRJZCk7
CisgICAgICAgIG1faHVkVGltZW91dElkID0gMDsKKyAgICB9CisKKyAgICBpZiAoIW1faHVkV2lu
ZG93KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBLZWVwIHRoZSBodWQgdmlzaWJsZSBpZiBh
IHNlZWsgaXMgaW4gcHJvZ3Jlc3Mgb3IgaWYgdGhlIHZvbHVtZQorICAgIC8vIHBvcHVwIGlzIHZp
c2libGUuCisgICAgR3RrV2lkZ2V0KiB2b2x1bWVQb3B1cCA9IGd0a19zY2FsZV9idXR0b25fZ2V0
X3BvcHVwKEdUS19TQ0FMRV9CVVRUT04obV92b2x1bWVCdXR0b24pKTsKKyAgICBpZiAobV9zZWVr
TG9jayB8fCBndGtfd2lkZ2V0X2dldF92aXNpYmxlKHZvbHVtZVBvcHVwKSkgeworICAgICAgICBz
aG93SHVkKHRydWUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR2RrV2luZG93KiB3
aW5kb3cgPSBndGtfd2lkZ2V0X2dldF93aW5kb3cobV93aW5kb3cpOworICAgIEdka0N1cnNvciog
Y3Vyc29yID0gZ2RrX2N1cnNvcl9uZXcoR0RLX0JMQU5LX0NVUlNPUik7CisgICAgZ2RrX3dpbmRv
d19zZXRfY3Vyc29yKHdpbmRvdywgY3Vyc29yKTsKKworICAgIGd0a193aWRnZXRfaGlkZV9hbGwo
bV9odWRXaW5kb3cpOworCisgICAgaWYgKG1fcHJvZ3Jlc3NCYXJVcGRhdGVJZCkgeworICAgICAg
ICBnX3NvdXJjZV9yZW1vdmUobV9wcm9ncmVzc0JhclVwZGF0ZUlkKTsKKyAgICAgICAgbV9wcm9n
cmVzc0JhclVwZGF0ZUlkID0gMDsKKyAgICB9Cit9CisKK3N0YXRpYyBnYm9vbGVhbiBvbkZ1bGxz
Y3JlZW5HdGtLZXlQcmVzc0V2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEtleSogZXZl
bnQsIGdwb2ludGVyIGRhdGEpCit7CisgICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogY29u
dHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcio+KGRh
dGEpOworCisgICAgc3dpdGNoIChldmVudC0+a2V5dmFsKSB7CisgICAgY2FzZSBHREtfRXNjYXBl
OgorICAgIGNhc2UgJ2YnOgorICAgIGNhc2UgJ0YnOgorICAgICAgICBjb250cm9sbGVyLT5leGl0
T25Vc2VyUmVxdWVzdCgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdES19zcGFjZToKKyAg
ICBjYXNlIEdES19SZXR1cm46CisgICAgICAgIGNvbnRyb2xsZXItPnRvZ2dsZVBsYXkoKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBHREtfVXA6CisgICAgICAgIC8vIHZvbHVtZSB1cAorICAg
ICAgICBjb250cm9sbGVyLT5zZXRWb2x1bWUoY29udHJvbGxlci0+dm9sdW1lKCkgKyBWT0xVTUVf
VVBfT0ZGU0VUKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHREtfRG93bjoKKyAgICAgICAg
Ly8gdm9sdW1lIGRvd24KKyAgICAgICAgY29udHJvbGxlci0+c2V0Vm9sdW1lKGNvbnRyb2xsZXIt
PnZvbHVtZSgpIC0gVk9MVU1FX0RPV05fT0ZGU0VUKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIFRSVUU7Cit9CisKKwor
dm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjplbnRlckZ1bGxzY3JlZW4oKQoreworICAg
IGlmICghbV9tZWRpYUVsZW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX21lZGlh
RWxlbWVudC0+cGxhdGZvcm1NZWRpYSgpLnR5cGUgIT0gV2ViQ29yZTo6UGxhdGZvcm1NZWRpYTo6
R1N0cmVhbWVyR1dvcmxkVHlwZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9nc3RyZWFtZXJH
V29ybGQgPSBtX21lZGlhRWxlbWVudC0+cGxhdGZvcm1NZWRpYSgpLm1lZGlhLmdzdHJlYW1lckdX
b3JsZDsKKyAgICBpZiAoIW1fZ3N0cmVhbWVyR1dvcmxkLT5lbnRlckZ1bGxzY3JlZW4oKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV93aW5kb3cgPSByZWludGVycHJldF9jYXN0PEd0a1dpZGdl
dCo+KG1fZ3N0cmVhbWVyR1dvcmxkLT5wbGF0Zm9ybVZpZGVvV2luZG93KCktPndpbmRvdygpKTsK
KworICAgIEdzdEVsZW1lbnQqIHBpcGVsaW5lID0gbV9nc3RyZWFtZXJHV29ybGQtPnBpcGVsaW5l
KCk7CisgICAgZ19zaWduYWxfY29ubmVjdChwaXBlbGluZSwgIm5vdGlmeTo6dm9sdW1lIiwgR19D
QUxMQkFDSyhwbGF5ZXJWb2x1bWVDaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBnX3NpZ25h
bF9jb25uZWN0KHBpcGVsaW5lLCAibm90aWZ5OjptdXRlIiwgR19DQUxMQkFDSyhwbGF5ZXJNdXRl
Q2hhbmdlZENhbGxiYWNrKSwgdGhpcyk7CisKKyAgICBpZiAoIW1faHVkV2luZG93KQorICAgICAg
ICBjcmVhdGVIdWQoKTsKKworICAgIC8vIEVuc3VyZSBibGFjayBiYWNrZ3JvdW5kLgorICAgIEdk
a0NvbG9yIGNvbG9yOworICAgIGdka19jb2xvcl9wYXJzZSgiYmxhY2siLCAmY29sb3IpOworICAg
IGd0a193aWRnZXRfbW9kaWZ5X2JnKG1fd2luZG93LCBHVEtfU1RBVEVfTk9STUFMLCAmY29sb3Ip
OworICAgIGd0a193aWRnZXRfc2V0X2RvdWJsZV9idWZmZXJlZChtX3dpbmRvdywgRkFMU0UpOwor
CisgICAgZ19zaWduYWxfY29ubmVjdChtX3dpbmRvdywgImtleS1wcmVzcy1ldmVudCIsIEdfQ0FM
TEJBQ0sob25GdWxsc2NyZWVuR3RrS2V5UHJlc3NFdmVudCksIHRoaXMpOworICAgIGdfc2lnbmFs
X2Nvbm5lY3QobV93aW5kb3csICJkZXN0cm95IiwgR19DQUxMQkFDSyhvbkZ1bGxzY3JlZW5HdGtE
ZXN0cm95KSwgdGhpcyk7CisgICAgZ19zaWduYWxfY29ubmVjdChtX3dpbmRvdywgIm5vdGlmeTo6
aXMtYWN0aXZlIiwgR19DQUxMQkFDSyhvbkZ1bGxzY3JlZW5HdGtBY3RpdmVOb3RpZmljYXRpb24p
LCB0aGlzKTsKKworCisgICAgZ3RrX3dpZGdldF9zaG93X2FsbChtX3dpbmRvdyk7CisKKyAgICBH
ZGtXaW5kb3cqIHdpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyhtX3dpbmRvdyk7CisgICAg
R2RrQ3Vyc29yKiBjdXJzb3IgPSBnZGtfY3Vyc29yX25ldyhHREtfQkxBTktfQ1VSU09SKTsKKyAg
ICBtX2N1cnNvciA9IGdka193aW5kb3dfZ2V0X2N1cnNvcih3aW5kb3cpOworICAgIGdka193aW5k
b3dfc2V0X2N1cnNvcih3aW5kb3csIGN1cnNvcik7CisgICAgZ2RrX2N1cnNvcl91bnJlZihjdXJz
b3IpOworCisgICAgZ19zaWduYWxfY29ubmVjdChtX3dpbmRvdywgIm1vdGlvbi1ub3RpZnktZXZl
bnQiLCBHX0NBTExCQUNLKG9uRnVsbHNjcmVlbkd0a01vdGlvbk5vdGlmeUV2ZW50KSwgdGhpcyk7
CisgICAgZ19zaWduYWxfY29ubmVjdChtX3dpbmRvdywgImNvbmZpZ3VyZS1ldmVudCIsIEdfQ0FM
TEJBQ0sob25GdWxsc2NyZWVuR3RrQ29uZmlndXJlRXZlbnQpLCB0aGlzKTsKKworICAgIGd0a193
aW5kb3dfZnVsbHNjcmVlbihHVEtfV0lORE9XKG1fd2luZG93KSk7CisgICAgc2hvd0h1ZCh0cnVl
KTsKK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp1cGRhdGVIdWRQb3NpdGlv
bigpCit7CisgICAgaWYgKCFtX2h1ZFdpbmRvdykKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8g
R2V0IHRoZSBzY3JlZW4gcmVjdGFuZ2xlLgorICAgIEdka1NjcmVlbiogc2NyZWVuID0gZ3RrX3dp
bmRvd19nZXRfc2NyZWVuKEdUS19XSU5ET1cobV93aW5kb3cpKTsKKyAgICBHZGtXaW5kb3cqIHdp
bmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyhtX3dpbmRvdyk7CisgICAgR2RrUmVjdGFuZ2xl
IGZ1bGxzY3JlZW5SZWN0YW5nbGU7CisgICAgZ2RrX3NjcmVlbl9nZXRfbW9uaXRvcl9nZW9tZXRy
eShzY3JlZW4sIGdka19zY3JlZW5fZ2V0X21vbml0b3JfYXRfd2luZG93KHNjcmVlbiwgd2luZG93
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmdWxsc2NyZWVuUmVjdGFu
Z2xlKTsKKworICAgIC8vIEdldCB0aGUgcG9wdXAgd2luZG93IHNpemUuCisgICAgaW50IGh1ZFdp
ZHRoLCBodWRIZWlnaHQ7CisgICAgZ3RrX3dpbmRvd19nZXRfc2l6ZShHVEtfV0lORE9XKG1faHVk
V2luZG93KSwgJmh1ZFdpZHRoLCAmaHVkSGVpZ2h0KTsKKworICAgIC8vIFJlc2l6ZSB0aGUgaHVk
IHRvIHRoZSBmdWxsIHdpZHRoIG9mIHRoZSBzY3JlZW4uCisgICAgZ3RrX3dpbmRvd19yZXNpemUo
R1RLX1dJTkRPVyhtX2h1ZFdpbmRvdyksIGZ1bGxzY3JlZW5SZWN0YW5nbGUud2lkdGgsIGh1ZEhl
aWdodCk7CisKKyAgICAvLyBNb3ZlIHRoZSBodWQgdG8gdGhlIGJvdHRvbSBvZiB0aGUgc2NyZWVu
LgorICAgIGd0a193aW5kb3dfbW92ZShHVEtfV0lORE9XKG1faHVkV2luZG93KSwgZnVsbHNjcmVl
blJlY3RhbmdsZS54LAorICAgICAgICAgICAgICAgICAgICBmdWxsc2NyZWVuUmVjdGFuZ2xlLmhl
aWdodCArIGZ1bGxzY3JlZW5SZWN0YW5nbGUueSAtIGh1ZEhlaWdodCk7Cit9CisKK3ZvaWQgRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZXhpdE9uVXNlclJlcXVlc3QoKQoreworICAgIG1fbWVk
aWFFbGVtZW50LT5leGl0RnVsbHNjcmVlbigpOworfQorCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXI6OmV4aXRGdWxsc2NyZWVuKCkKK3sKKyAgICBpZiAoIW1faHVkV2luZG93KQorICAg
ICAgICByZXR1cm47CisKKyAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMo
bV93aW5kb3csIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9uRnVsbHNjcmVlbkd0a0tleVByZXNz
RXZlbnQpLCByZWludGVycHJldF9jYXN0PHZvaWQqPih0aGlzKSk7CisgICAgZ19zaWduYWxfaGFu
ZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKG1fd2luZG93LCByZWludGVycHJldF9jYXN0PHZvaWQq
PihvbkZ1bGxzY3JlZW5HdGtEZXN0cm95KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odGhpcykp
OworICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhtX3dpbmRvdywgcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4ob25GdWxsc2NyZWVuR3RrTW90aW9uTm90aWZ5RXZlbnQpLCBy
ZWludGVycHJldF9jYXN0PHZvaWQqPih0aGlzKSk7CisgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlz
Y29ubmVjdF9ieV9mdW5jKG1fd2luZG93LCByZWludGVycHJldF9jYXN0PHZvaWQqPihvbkZ1bGxz
Y3JlZW5HdGtDb25maWd1cmVFdmVudCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHRoaXMpKTsK
KworICAgIEdzdEVsZW1lbnQqIHBpcGVsaW5lID0gbV9tZWRpYUVsZW1lbnQtPnBsYXRmb3JtTWVk
aWEoKS5tZWRpYS5nc3RyZWFtZXJHV29ybGQtPnBpcGVsaW5lKCk7CisgICAgZ19zaWduYWxfaGFu
ZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHBpcGVsaW5lLCByZWludGVycHJldF9jYXN0PHZvaWQq
PihwbGF5ZXJWb2x1bWVDaGFuZ2VkQ2FsbGJhY2spLCByZWludGVycHJldF9jYXN0PHZvaWQqPih0
aGlzKSk7CisgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHBpcGVsaW5l
LCByZWludGVycHJldF9jYXN0PHZvaWQqPihwbGF5ZXJNdXRlQ2hhbmdlZENhbGxiYWNrKSwgcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4odGhpcykpOworCisgICAgaWYgKG1faHVkVGltZW91dElkKSB7
CisgICAgICAgIGdfc291cmNlX3JlbW92ZShtX2h1ZFRpbWVvdXRJZCk7CisgICAgICAgIG1faHVk
VGltZW91dElkID0gMDsKKyAgICB9CisKKyAgICBpZiAobV9wcm9ncmVzc0JhclVwZGF0ZUlkKSB7
CisgICAgICAgIGdfc291cmNlX3JlbW92ZShtX3Byb2dyZXNzQmFyVXBkYXRlSWQpOworICAgICAg
ICBtX3Byb2dyZXNzQmFyVXBkYXRlSWQgPSAwOworICAgIH0KKworICAgIGlmIChtX21lZGlhRWxl
bWVudC0+cGxhdGZvcm1NZWRpYSgpLnR5cGUgPT0gV2ViQ29yZTo6UGxhdGZvcm1NZWRpYTo6R1N0
cmVhbWVyR1dvcmxkVHlwZSkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnQtPnBsYXRmb3JtTWVkaWEo
KS5tZWRpYS5nc3RyZWFtZXJHV29ybGQtPmV4aXRGdWxsc2NyZWVuKCk7CisKKyAgICBndGtfd2lk
Z2V0X2hpZGVfYWxsKG1fd2luZG93KTsKKworICAgIGd0a193aWRnZXRfZGVzdHJveShtX2h1ZFdp
bmRvdyk7CisgICAgbV9odWRXaW5kb3cgPSAwOworfQorCitib29sIEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXI6OmNhblBsYXkoKSBjb25zdAoreworICAgIHJldHVybiBtX21lZGlhRWxlbWVudCAm
JiBtX21lZGlhRWxlbWVudC0+Y2FuUGxheSgpOworfQorCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXI6OnBsYXkoKQoreworICAgIGlmIChtX21lZGlhRWxlbWVudCkKKyAgICAgICAgbV9t
ZWRpYUVsZW1lbnQtPnBsYXkobV9tZWRpYUVsZW1lbnQtPnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgp
KTsKKworICAgIHBsYXlTdGF0ZUNoYW5nZWQoKTsKKyAgICBzaG93SHVkKHRydWUpOworfQorCit2
b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnBhdXNlKCkKK3sKKyAgICBpZiAobV9tZWRp
YUVsZW1lbnQpCisgICAgICAgIG1fbWVkaWFFbGVtZW50LT5wYXVzZShtX21lZGlhRWxlbWVudC0+
cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpOworCisgICAgcGxheVN0YXRlQ2hhbmdlZCgpOworICAg
IHNob3dIdWQoZmFsc2UpOworfQorCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnBs
YXlTdGF0ZUNoYW5nZWQoKQoreworICAgIGlmIChjYW5QbGF5KCkpCisgICAgICAgIGdfb2JqZWN0
X3NldChtX3BsYXlQYXVzZUFjdGlvbiwgInRvb2x0aXAiLCBfKCJQbGF5IiksICJpY29uLW5hbWUi
LCBQTEFZX0lDT05fTkFNRSwgTlVMTCk7CisgICAgZWxzZQorICAgICAgICBnX29iamVjdF9zZXQo
bV9wbGF5UGF1c2VBY3Rpb24sICJ0b29sdGlwIiwgXygiUGF1c2UiKSwgImljb24tbmFtZSIsIFBB
VVNFX0lDT05fTkFNRSwgTlVMTCk7Cit9CisKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
cjo6dG9nZ2xlUGxheSgpCit7CisgICAgaWYgKGNhblBsYXkoKSkKKyAgICAgICAgcGxheSgpOwor
ICAgIGVsc2UKKyAgICAgICAgcGF1c2UoKTsKK30KKworZmxvYXQgRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlcjo6dm9sdW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnQgPyBt
X21lZGlhRWxlbWVudC0+dm9sdW1lKCkgOiAwOworfQorCitib29sIEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXI6Om11dGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnQgPyBt
X21lZGlhRWxlbWVudC0+bXV0ZWQoKSA6IGZhbHNlOworfQorCit2b2lkIEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXI6OnNldFZvbHVtZShmbG9hdCB2b2x1bWUpCit7CisgICAgaWYgKHZvbHVtZSA8
IDAuMCB8fCB2b2x1bWUgPiAxLjApCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX21lZGlh
RWxlbWVudCkgeworICAgICAgICBFeGNlcHRpb25Db2RlIGVjOworICAgICAgICBtX21lZGlhRWxl
bWVudC0+c2V0Vm9sdW1lKHZvbHVtZSwgZWMpOworICAgIH0KK30KKwordm9pZCBGdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyOjp2b2x1bWVDaGFuZ2VkKCkKK3sKKyAgICBnX3NpZ25hbF9oYW5kbGVy
X2Jsb2NrKG1fdm9sdW1lQnV0dG9uLCBtX3ZvbHVtZVVwZGF0ZUlkKTsKKyAgICBndGtfc2NhbGVf
YnV0dG9uX3NldF92YWx1ZShHVEtfU0NBTEVfQlVUVE9OKG1fdm9sdW1lQnV0dG9uKSwgdm9sdW1l
KCkpOworICAgIGdfc2lnbmFsX2hhbmRsZXJfdW5ibG9jayhtX3ZvbHVtZUJ1dHRvbiwgbV92b2x1
bWVVcGRhdGVJZCk7Cit9CisKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6bXV0ZUNo
YW5nZWQoKQoreworICAgIGdfc2lnbmFsX2hhbmRsZXJfYmxvY2sobV92b2x1bWVCdXR0b24sIG1f
dm9sdW1lVXBkYXRlSWQpOworICAgIGd0a19zY2FsZV9idXR0b25fc2V0X3ZhbHVlKEdUS19TQ0FM
RV9CVVRUT04obV92b2x1bWVCdXR0b24pLCBtdXRlZCgpID8gMCA6IHZvbHVtZSgpKTsKKyAgICBn
X3NpZ25hbF9oYW5kbGVyX3VuYmxvY2sobV92b2x1bWVCdXR0b24sIG1fdm9sdW1lVXBkYXRlSWQp
OworfQorCitmbG9hdCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpjdXJyZW50VGltZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50ID8gbV9tZWRpYUVsZW1lbnQtPmN1cnJl
bnRUaW1lKCkgOiAwOworfQorCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnNldEN1
cnJlbnRUaW1lKGZsb2F0IHZhbHVlKQoreworICAgIGlmIChtX21lZGlhRWxlbWVudCkgeworICAg
ICAgICBFeGNlcHRpb25Db2RlIGVjOworICAgICAgICBtX21lZGlhRWxlbWVudC0+c2V0Q3VycmVu
dFRpbWUodmFsdWUsIGVjKTsKKyAgICB9Cit9CisKK2Zsb2F0IEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXI6OmR1cmF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnQgPyBt
X21lZGlhRWxlbWVudC0+ZHVyYXRpb24oKSA6IDA7Cit9CisKK2Zsb2F0IEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXI6OnBlcmNlbnRMb2FkZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX21lZGlh
RWxlbWVudCA/IG1fbWVkaWFFbGVtZW50LT5wZXJjZW50TG9hZGVkKCkgOiAwOworfQorCit2b2lk
IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmJlZ2luU2VlaygpCit7CisgICAgbV9zZWVrTG9j
ayA9IHRydWU7CisKKyAgICBpZiAobV9tZWRpYUVsZW1lbnQpCisgICAgICAgIG1fbWVkaWFFbGVt
ZW50LT5iZWdpblNjcnViYmluZygpOworfQorCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXI6OmRvU2VlaygpCit7CisgICAgaWYgKCFtX3NlZWtMb2NrKQorICAgICAgICAgcmV0dXJuOwor
CisgICAgc2V0Q3VycmVudFRpbWUoZ3RrX3JhbmdlX2dldF92YWx1ZShHVEtfUkFOR0UobV90aW1l
SFNjYWxlKSkqZHVyYXRpb24oKSAvIDEwMCk7Cit9CisKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlcjo6ZW5kU2VlaygpCit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50KQorICAgICAgICBt
X21lZGlhRWxlbWVudC0+ZW5kU2NydWJiaW5nKCk7CisKKyAgICBtX3NlZWtMb2NrID0gZmFsc2U7
Cit9CisKK3N0YXRpYyBTdHJpbmcgdGltZVRvU3RyaW5nKGZsb2F0IHRpbWUpCit7CisgICAgaWYg
KCFpc2Zpbml0ZSh0aW1lKSkKKyAgICAgICAgdGltZSA9IDA7CisgICAgaW50IHNlY29uZHMgPSBm
YWJzZih0aW1lKTsKKyAgICBpbnQgaG91cnMgPSBzZWNvbmRzIC8gKDYwICogNjApOworICAgIGlu
dCBtaW51dGVzID0gKHNlY29uZHMgLyA2MCkgJSA2MDsKKyAgICBzZWNvbmRzICU9IDYwOworCisg
ICAgaWYgKGhvdXJzKSB7CisgICAgICAgIGlmIChob3VycyA+IDkpCisgICAgICAgICAgICByZXR1
cm4gU3RyaW5nOjpmb3JtYXQoIiVzJTAyZDolMDJkOiUwMmQiLCAodGltZSA8IDAgPyAiLSIgOiAi
IiksIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9y
bWF0KCIlcyUwMWQ6JTAyZDolMDJkIiwgKHRpbWUgPCAwID8gIi0iIDogIiIpLCBob3VycywgbWlu
dXRlcywgc2Vjb25kcyk7CisgICAgfQorCisgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlcyUw
MmQ6JTAyZCIsICh0aW1lIDwgMCA/ICItIiA6ICIiKSwgbWludXRlcywgc2Vjb25kcyk7Cit9CisK
K2dib29sZWFuIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnVwZGF0ZUh1ZFByb2dyZXNzQmFy
KCkKK3sKKyAgICBmbG9hdCBtZWRpYUR1cmF0aW9uKGR1cmF0aW9uKCkpOworICAgIGZsb2F0IG1l
ZGlhUG9zaXRpb24oY3VycmVudFRpbWUoKSk7CisKKyAgICBpZiAoIW1fc2Vla0xvY2spIHsKKyAg
ICAgICAgZ2RvdWJsZSB2YWx1ZSA9IDAuMDsKKworICAgICAgICBpZiAobWVkaWFQb3NpdGlvbiAm
JiBtZWRpYUR1cmF0aW9uKQorICAgICAgICAgICAgdmFsdWUgPSAobWVkaWFQb3NpdGlvbiAqIDEw
MC4wKSAvIG1lZGlhRHVyYXRpb247CisKKyAgICAgICAgR3RrQWRqdXN0bWVudCogYWRqdXN0bWVu
dCA9IGd0a19yYW5nZV9nZXRfYWRqdXN0bWVudChHVEtfUkFOR0UobV90aW1lSFNjYWxlKSk7Cisg
ICAgICAgIGd0a19hZGp1c3RtZW50X3NldF92YWx1ZShhZGp1c3RtZW50LCB2YWx1ZSk7CisgICAg
fQorCisgICAgZ3RrX3JhbmdlX3NldF9maWxsX2xldmVsKEdUS19SQU5HRShtX3RpbWVIU2NhbGUp
LCBwZXJjZW50TG9hZGVkKCkqIDEwMCk7CisKKyAgICBnY2hhciogbGFiZWwgPSBnX3N0cmR1cF9w
cmludGYoIiVzIC8gJXMiLCB0aW1lVG9TdHJpbmcobWVkaWFQb3NpdGlvbikudXRmOCgpLmRhdGEo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZVRvU3RyaW5nKG1lZGlh
RHVyYXRpb24pLnV0ZjgoKS5kYXRhKCkpOworICAgIGd0a19sYWJlbF9zZXRfdGV4dChHVEtfTEFC
RUwobV90aW1lTGFiZWwpLCBsYWJlbCk7CisgICAgZ19mcmVlKGxhYmVsKTsKKyAgICByZXR1cm4g
VFJVRTsKK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpjcmVhdGVIdWQoKQor
eworICAgIG1faHVkV2luZG93ID0gZ3RrX3dpbmRvd19uZXcoR1RLX1dJTkRPV19QT1BVUCk7Cisg
ICAgZ3RrX3dpbmRvd19zZXRfZ3Jhdml0eShHVEtfV0lORE9XKG1faHVkV2luZG93KSwgR0RLX0dS
QVZJVFlfU09VVEhfV0VTVCk7CisgICAgZ3RrX3dpbmRvd19zZXRfdHlwZV9oaW50KEdUS19XSU5E
T1cobV9odWRXaW5kb3cpLCBHREtfV0lORE9XX1RZUEVfSElOVF9OT1JNQUwpOworCisgICAgZ19z
aWduYWxfY29ubmVjdChtX2h1ZFdpbmRvdywgIm1vdGlvbi1ub3RpZnktZXZlbnQiLCBHX0NBTExC
QUNLKG9uRnVsbHNjcmVlbkd0a01vdGlvbk5vdGlmeUV2ZW50KSwgdGhpcyk7CisKKyAgICBHdGtX
aWRnZXQqIGhib3ggPSBndGtfaGJveF9uZXcoRkFMU0UsIDQpOworICAgIGd0a19jb250YWluZXJf
YWRkKEdUS19DT05UQUlORVIobV9odWRXaW5kb3cpLCBoYm94KTsKKworICAgIG1fcGxheVBhdXNl
QWN0aW9uID0gZ3RrX2FjdGlvbl9uZXcoInBsYXkiLCBfKCJQbGF5IC8gUGF1c2UiKSwgXygiUGxh
eSBvciBwYXVzZSB0aGUgbWVkaWEiKSwgUEFVU0VfSUNPTl9OQU1FKTsKKyAgICBnX3NpZ25hbF9j
b25uZWN0KG1fcGxheVBhdXNlQWN0aW9uLCAiYWN0aXZhdGUiLCBHX0NBTExCQUNLKHRvZ2dsZVBs
YXlQYXVzZUFjdGl2YXRlZCksIHRoaXMpOworCisgICAgcGxheVN0YXRlQ2hhbmdlZCgpOworCisg
ICAgR3RrV2lkZ2V0KiBpdGVtID0gZ3RrX2FjdGlvbl9jcmVhdGVfdG9vbF9pdGVtKG1fcGxheVBh
dXNlQWN0aW9uKTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChoYm94KSwgaXRlbSwg
RkFMU0UsIFRSVUUsIDApOworCisgICAgR3RrV2lkZ2V0KiBsYWJlbCA9IGd0a19sYWJlbF9uZXco
XygiVGltZToiKSk7CisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1goaGJveCksIGxhYmVs
LCBGQUxTRSwgVFJVRSwgMCk7CisKKyAgICBHdGtPYmplY3QqIGFkanVzdG1lbnQgPSBndGtfYWRq
dXN0bWVudF9uZXcoMC4wLCAwLjAsIDEwMC4wLCAwLjEsIDEuMCwgMS4wKTsKKyAgICBtX3RpbWVI
U2NhbGUgPSBndGtfaHNjYWxlX25ldyhHVEtfQURKVVNUTUVOVChhZGp1c3RtZW50KSk7CisgICAg
Z3RrX3NjYWxlX3NldF9kcmF3X3ZhbHVlKEdUS19TQ0FMRShtX3RpbWVIU2NhbGUpLCBGQUxTRSk7
CisgICAgZ3RrX3JhbmdlX3NldF9zaG93X2ZpbGxfbGV2ZWwoR1RLX1JBTkdFKG1fdGltZUhTY2Fs
ZSksIFRSVUUpOworICAgIGd0a19yYW5nZV9zZXRfdXBkYXRlX3BvbGljeShHVEtfUkFOR0UobV90
aW1lSFNjYWxlKSwgR1RLX1VQREFURV9DT05USU5VT1VTKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0
KG1fdGltZUhTY2FsZSwgImJ1dHRvbi1wcmVzcy1ldmVudCIsIEdfQ0FMTEJBQ0sodGltZVNjYWxl
QnV0dG9uUHJlc3NlZCksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV90aW1lSFNjYWxl
LCAiYnV0dG9uLXJlbGVhc2UtZXZlbnQiLCBHX0NBTExCQUNLKHRpbWVTY2FsZUJ1dHRvblJlbGVh
c2VkKSwgdGhpcyk7CisgICAgbV9oc2NhbGVVcGRhdGVJZCA9IGdfc2lnbmFsX2Nvbm5lY3QobV90
aW1lSFNjYWxlLCAidmFsdWUtY2hhbmdlZCIsIEdfQ0FMTEJBQ0sodGltZVNjYWxlVmFsdWVDaGFu
Z2VkKSwgdGhpcyk7CisKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChoYm94KSwgbV90
aW1lSFNjYWxlLCBUUlVFLCBUUlVFLCAwKTsKKworICAgIG1fdGltZUxhYmVsID0gZ3RrX2xhYmVs
X25ldygiIik7CisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1goaGJveCksIG1fdGltZUxh
YmVsLCBGQUxTRSwgVFJVRSwgMCk7CisKKyAgICAvLyBWb2x1bWUgYnV0dG9uLgorICAgIG1fdm9s
dW1lQnV0dG9uID0gZ3RrX3ZvbHVtZV9idXR0b25fbmV3KCk7CisgICAgZ3RrX2JveF9wYWNrX3N0
YXJ0KEdUS19CT1goaGJveCksIG1fdm9sdW1lQnV0dG9uLCBGQUxTRSwgVFJVRSwgMCk7CisgICAg
Z3RrX3NjYWxlX2J1dHRvbl9zZXRfdmFsdWUoR1RLX1NDQUxFX0JVVFRPTihtX3ZvbHVtZUJ1dHRv
biksIHZvbHVtZSgpKTsKKyAgICBtX3ZvbHVtZVVwZGF0ZUlkID0gZ19zaWduYWxfY29ubmVjdCht
X3ZvbHVtZUJ1dHRvbiwgInZhbHVlLWNoYW5nZWQiLCBHX0NBTExCQUNLKHZvbHVtZVZhbHVlQ2hh
bmdlZCksIHRoaXMpOworCisKKyAgICBtX2V4aXRGdWxsc2NyZWVuQWN0aW9uID0gZ3RrX2FjdGlv
bl9uZXcoImV4aXQiLCBfKCJFeGl0IEZ1bGxzY3JlZW4iKSwgXygiRXhpdCBmcm9tIGZ1bGxzY3Jl
ZW4gbW9kZSIpLCBFWElUX0ZVTExTQ1JFRU5fSUNPTl9OQU1FKTsKKyAgICBnX3NpZ25hbF9jb25u
ZWN0KG1fZXhpdEZ1bGxzY3JlZW5BY3Rpb24sICJhY3RpdmF0ZSIsIEdfQ0FMTEJBQ0soZXhpdEZ1
bGxzY3JlZW5BY3RpdmF0ZWQpLCB0aGlzKTsKKyAgICBnX29iamVjdF9zZXQobV9leGl0RnVsbHNj
cmVlbkFjdGlvbiwgImljb24tbmFtZSIsIEVYSVRfRlVMTFNDUkVFTl9JQ09OX05BTUUsIE5VTEwp
OworICAgIGl0ZW0gPSBndGtfYWN0aW9uX2NyZWF0ZV90b29sX2l0ZW0obV9leGl0RnVsbHNjcmVl
bkFjdGlvbik7CisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1goaGJveCksIGl0ZW0sIEZB
TFNFLCBUUlVFLCAwKTsKKworCisgICAgbV9wcm9ncmVzc0JhclVwZGF0ZUlkID0gZ190aW1lb3V0
X2FkZChQUk9HUkVTU19CQVJfVVBEQVRFX0lOVEVSVkFMLCBwcm9ncmVzc0JhclVwZGF0ZUNhbGxi
YWNrLCB0aGlzKTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oIGIvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMzFiN2ZmMAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oCkBAIC0wLDAgKzEsMTAzIEBA
CisvKgorICogIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MCisgKgorICogIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5k
ZWYgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcl9oCisjZGVmaW5lIEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXJfaAorCisjaWYgRU5BQkxFKFZJREVPKQorCisjaW5jbHVkZSAiR1JlZlB0ci5oIgor
I2luY2x1ZGUgIkdTdHJlYW1lckdXb3JsZC5oIgorI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQu
aCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK3R5cGVkZWYgc3RydWN0IF9HdGtPYmplY3Qg
R3RrT2JqZWN0OwordHlwZWRlZiBzdHJ1Y3QgX0d0a1dpZGdldCBHdGtXaWRnZXQ7Cit0eXBlZGVm
IHN0cnVjdCBfR3RrQWN0aW9uIEd0a0FjdGlvbjsKK3R5cGVkZWYgc3RydWN0IF9HZGtDdXJzb3Ig
R2RrQ3Vyc29yOwordHlwZWRlZiBzdHJ1Y3QgX0dka0V2ZW50Q29uZmlndXJlIEdka0V2ZW50Q29u
ZmlndXJlOworCisKK2NsYXNzIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIgOiBwdWJsaWMgTm9u
Y29weWFibGUgeworcHVibGljOgorICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIoKTsKKyAg
ICB2aXJ0dWFsIH5GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKCk7CisKKyAgICB2b2lkIHNldE1l
ZGlhRWxlbWVudChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUVsZW1l
bnQuZ2V0KCk7IH0KKworICAgIHZvaWQgZ3RrQ29uZmlndXJlKEdka0V2ZW50Q29uZmlndXJlKiBl
dmVudCk7CisKKyAgICB2b2lkIGVudGVyRnVsbHNjcmVlbigpOworICAgIHZvaWQgZXhpdEZ1bGxz
Y3JlZW4oKTsKKworICAgIHZvaWQgZXhpdE9uVXNlclJlcXVlc3QoKTsKKyAgICB2b2lkIHRvZ2ds
ZVBsYXkoKTsKKyAgICB2b2lkIGJlZ2luU2VlaygpOworICAgIHZvaWQgZG9TZWVrKCk7CisgICAg
dm9pZCBlbmRTZWVrKCk7CisKKyAgICB2b2lkIGhpZGVIdWQoKTsKKyAgICB2b2lkIHNob3dIdWQo
Ym9vbCk7CisgICAgZ2Jvb2xlYW4gdXBkYXRlSHVkUHJvZ3Jlc3NCYXIoKTsKKworICAgIGZsb2F0
IHZvbHVtZSgpIGNvbnN0OworICAgIHZvaWQgc2V0Vm9sdW1lKGZsb2F0KTsKKyAgICB2b2lkIHZv
bHVtZUNoYW5nZWQoKTsKKyAgICB2b2lkIG11dGVDaGFuZ2VkKCk7CisKK3ByaXZhdGU6CisgICAg
Ym9vbCBjYW5QbGF5KCkgY29uc3Q7CisgICAgdm9pZCBwbGF5KCk7CisgICAgdm9pZCBwYXVzZSgp
OworICAgIHZvaWQgcGxheVN0YXRlQ2hhbmdlZCgpOworCisgICAgYm9vbCBtdXRlZCgpIGNvbnN0
OworCisgICAgZmxvYXQgY3VycmVudFRpbWUoKSBjb25zdDsKKyAgICB2b2lkIHNldEN1cnJlbnRU
aW1lKGZsb2F0KTsKKworICAgIGZsb2F0IGR1cmF0aW9uKCkgY29uc3Q7CisgICAgZmxvYXQgcGVy
Y2VudExvYWRlZCgpIGNvbnN0OworCisgICAgdm9pZCBjcmVhdGVIdWQoKTsKKyAgICB2b2lkIHVw
ZGF0ZUh1ZFBvc2l0aW9uKCk7CisKKyAgICBSZWZQdHI8V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dD4gbV9tZWRpYUVsZW1lbnQ7CisgICAgUmVmUHRyPFdlYkNvcmU6OkdTdHJlYW1lckdXb3JsZD4g
bV9nc3RyZWFtZXJHV29ybGQ7CisKKyAgICBndWludCBtX2h1ZFRpbWVvdXRJZDsKKyAgICBndWlu
dCBtX3Byb2dyZXNzQmFyVXBkYXRlSWQ7CisgICAgZ3VpbnQgbV9wcm9ncmVzc0JhckZpbGxVcGRh
dGVJZDsKKyAgICBndWludCBtX2hzY2FsZVVwZGF0ZUlkOworICAgIGd1aW50IG1fdm9sdW1lVXBk
YXRlSWQ7CisgICAgYm9vbCBtX3NlZWtMb2NrOworICAgIEd0a1dpZGdldCogbV93aW5kb3c7Cisg
ICAgR1JlZlB0cjxHZGtDdXJzb3I+IG1fY3Vyc29yOworICAgIEd0a1dpZGdldCogbV9odWRXaW5k
b3c7CisgICAgR3RrQWN0aW9uKiBtX3BsYXlQYXVzZUFjdGlvbjsKKyAgICBHdGtBY3Rpb24qIG1f
ZXhpdEZ1bGxzY3JlZW5BY3Rpb247CisgICAgR3RrV2lkZ2V0KiBtX3RpbWVIU2NhbGU7CisgICAg
R3RrV2lkZ2V0KiBtX3RpbWVMYWJlbDsKKyAgICBHdGtXaWRnZXQqIG1fdm9sdW1lQnV0dG9uOwor
fTsKKworI2VuZGlmCisKKyNlbmRpZiAvLyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyX2gKZGlm
ZiAtLWdpdCBhL1dlYktpdC9ndGsvcG8vQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9wby9DaGFuZ2VM
b2cKaW5kZXggZjA4ODI3NS4uNGExMjQ4OSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9wby9DaGFu
Z2VMb2cKKysrIGIvV2ViS2l0L2d0ay9wby9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAx
MC0wNy0yMCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dTdHJlYW1lcl0gR1RL
IFhPdmVybGF5IHN1cHBvcnQgaW4gR1N0cmVhbWVyR1dvcmxkCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ3NAorCisgICAgICAgICogUE9URklMRVM6
IEFkZGVkIG5ldyBmaWxlIHRoYXQgY29udGFpbnMgc3RyaW5ncyB0byBleHRyYWN0LgorCiAyMDEw
LTA4LTAzIEpvcmdlIEdvbnrDoWxleiAgPGFsb3JpZWxAZ21haWwuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25oYS4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvcG8vUE9U
RklMRVMgYi9XZWJLaXQvZ3RrL3BvL1BPVEZJTEVTCmluZGV4IDA1YmExMzguLmZmZDAwMTUgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9ndGsvcG8vUE9URklMRVMKKysrIGIvV2ViS2l0L2d0ay9wby9QT1RG
SUxFUwpAQCAtMSw2ICsxLDcgQEAKICMgTGlzdCBvZiBzb3VyY2UgZmlsZXMgd2hpY2ggY29udGFp
biB0cmFuc2xhdGFibGUgc3RyaW5ncy4KIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50R3RrLmNwcAogV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVu
dEd0ay5jcHAKK1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlci5jcHAKIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRvd25sb2FkLmNwcAogV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0c291cGF1dGhkaWFsb2cuYwogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2ViZnJhbWUuY3BwCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRl
LmNwcCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuY3BwCmluZGV4IDAwMWIzY2Mu
LmMyZTJhNDEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuY3Bw
CisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuY3BwCkBAIC0yOCw2ICsyOCw4
IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVu
dEd0ay5oIgogI2luY2x1ZGUgIkd0a1ZlcnNpb25pbmcuaCIKKyNpbmNsdWRlICJIVE1MTWVkaWFF
bGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3Vs
dC5oIgogI2luY2x1ZGUgIkljb25EYXRhYmFzZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAg
LTUwLDYgKzUyLDEwIEBACiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVh
ZGluZy5oPgogCisjaWYgRU5BQkxFKFZJREVPKQorI2luY2x1ZGUgIkZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXIuaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKERBVEFCQVNFKQogI2luY2x1ZGUgIkRh
dGFiYXNlVHJhY2tlci5oIgogI2VuZGlmCkBAIC0zMjcsMyArMzMzLDMzIEBAIHZvaWQgd2Via2l0
X3Jlc2V0X29yaWdpbl9hY2Nlc3Nfd2hpdGVfbGlzdHMoKQogewogICAgIFNlY3VyaXR5T3JpZ2lu
OjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKTsKIH0KKworCit2b2lkIHdlYmtpdF93ZWJf
dmlld19lbnRlcl9mdWxsc2NyZWVuKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIE5vZGUqIG5vZGUp
Cit7CisgICAgaWYgKCFub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dmlkZW9UYWcpKQorICAg
ICAgICByZXR1cm47CisKKyNpZiBFTkFCTEUoVklERU8pCisgICAgSFRNTE1lZGlhRWxlbWVudCog
dmlkZW9FbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTE1lZGlhRWxlbWVudCo+KG5vZGUpOworICAg
IFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKKworICAgIC8vIEZp
cnN0IGV4aXQgRnVsbHNjcmVlbiBmb3IgdGhlIG9sZCBtZWRpYUVsZW1lbnQuCisgICAgaWYgKHBy
aXYtPmZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIpCisgICAgICAgIHByaXYtPmZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXItPmV4aXRGdWxsc2NyZWVuKCk7CisKKyAgICBwcml2LT5mdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyID0gbmV3IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI7CisgICAgcHJp
di0+ZnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci0+c2V0TWVkaWFFbGVtZW50KHZpZGVvRWxlbWVu
dCk7CisgICAgcHJpdi0+ZnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci0+ZW50ZXJGdWxsc2NyZWVu
KCk7CisjZW5kaWYKK30KKwordm9pZCB3ZWJraXRfd2ViX3ZpZXdfZXhpdF9mdWxsc2NyZWVuKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisjaWYgRU5BQkxFKFZJREVPKQorICAgIFdlYktpdFdl
YlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKKyAgICBpZiAocHJpdi0+ZnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlcikKKyAgICAgICAgcHJpdi0+ZnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlci0+ZXhpdEZ1bGxzY3JlZW4oKTsKKyNlbmRpZgorfQorCmRpZmYgLS1naXQgYS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2
YXRlLmgKaW5kZXggNGY1YTExOS4uNjUxZmJhMSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0cHJpdmF0ZS5oCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUu
aApAQCAtNTYsNiArNTYsOCBAQAogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudEd0ay5oIgogI2lu
Y2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNs
dWRlICJGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiTm9kZS5oIgogI2lu
Y2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJl
c291cmNlUmVxdWVzdC5oIgpAQCAtMTYxLDYgKzE2Myw4IEBAIGV4dGVybiAiQyIgewogICAgICAg
ICBnYm9vbGVhbiBkaXNwb3Npbmc7CiAgICAgICAgIGdib29sZWFuIHVzZVByaW1hcnlGb3JQYXN0
ZTsKIAorICAgICAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBmdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyOworCiAgICAgICAgIC8vIFRoZXNlIGFyZSBob3N0ZWQgaGVyZSBiZWNhdXNlIHRo
ZSBEYXRhU291cmNlIG9iamVjdCBpcwogICAgICAgICAvLyBjcmVhdGVkIHRvbyBsYXRlIGluIHRo
ZSBmcmFtZSBsb2FkaW5nIHByb2Nlc3MuCiAgICAgICAgIFdlYktpdFdlYlJlc291cmNlKiBtYWlu
UmVzb3VyY2U7CkBAIC00MTAsNiArNDE0LDkgQEAgZXh0ZXJuICJDIiB7CiAKICAgICBXRUJLSVRf
QVBJIHZvaWQKICAgICB3ZWJraXRfd2ViX2ZyYW1lX2xheW91dChXZWJLaXRXZWJGcmFtZSogZnJh
bWUpOworCisgICAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZW50ZXJfZnVsbHNjcmVlbihXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3LCBXZWJDb3JlOjpOb2RlKiBub2RlKTsKKyAgICB2b2lkIHdlYmtpdF93
ZWJfdmlld19leGl0X2Z1bGxzY3JlZW4oV2ViS2l0V2ViVmlldyogd2ViVmlldyk7CiB9CiAKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IDg5N2Zk
MDIuLmE1Y2E5NDQgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUuYWMK
QEAgLTg0Myw2ICs4NDMsNyBAQCBpZiB0ZXN0ICIkZW5hYmxlX3ZpZGVvIiA9ICJ5ZXMiOyB0aGVu
CiAgICAgICAgICAgICAgICAgICAgICBbZ3N0cmVhbWVyLTAuMTAgPj0gJEdTVFJFQU1FUl9SRVFV
SVJFRF9WRVJTSU9OCiAgICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXItYXBwLTAuMTAKICAg
ICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1iYXNlLTAuMTAKKyAgICAgICAgICAgICAgICAg
ICAgIGdzdHJlYW1lci1pbnRlcmZhY2VzLTAuMTAKICAgICAgICAgICAgICAgICAgICAgIGdzdHJl
YW1lci1wYnV0aWxzLTAuMTAKICAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1wbHVnaW5z
LWJhc2UtMC4xMCA+PSAkR1NUUkVBTUVSX1BMVUdJTlNfQkFTRV9SRVFVSVJFRF9WRVJTSU9OCiAg
ICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXItdmlkZW8tMC4xMF0pCi0tIAoxLjcuMQ==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64717</attachid>
            <date>2010-08-18 09:09:36 -0700</date>
            <delta_ts>2010-08-19 01:07:19 -0700</delta_ts>
            <desc>fullscreen video support in WebKit/gtk</desc>
            <filename>fullscreen-video-support-in-WebKitgtk.patch</filename>
            <type>text/plain</type>
            <size>63706</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBiNTM4NWJjMmVkMGRmOGIyMDI4NGQxOGYyYzhlMTUwOTZiNDYwMDg3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBGcmksIDI4IE1heSAyMDEwIDE3OjAwOjQ0ICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
ZnVsbHNjcmVlbiB2aWRlbyBzdXBwb3J0IGluIFdlYktpdC9ndGsKCi0tLQogQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEyICsKIEdOVW1ha2Vm
aWxlLmFtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTYgKwog
Li4uL2d0ay9tZWRpYS9jb250cm9scy1hZnRlci1yZWxvYWQtZXhwZWN0ZWQudHh0ICAgfCAgICA1
ICstCiAuLi4vZ3RrL21lZGlhL2NvbnRyb2xzLWRyYWctdGltZWJhci1leHBlY3RlZC50eHQgICB8
ICAgIDYgKy0KIC4uLi9ndGsvbWVkaWEvY29udHJvbHMtc3RyaWN0LWV4cGVjdGVkLnR4dCAgICAg
ICAgIHwgICAgNSArLQogLi4uL2d0ay9tZWRpYS9jb250cm9scy1zdHlsaW5nLWV4cGVjdGVkLnR4
dCAgICAgICAgfCAgIDEwICstCiAuLi4vbWVkaWEvdmlkZW8tY29udHJvbHMtcmVuZGVyaW5nLWV4
cGVjdGVkLnR4dCAgICB8ICAgMTUgKy0KIC4uLi9ndGsvbWVkaWEvdmlkZW8tZGlzcGxheS10b2dn
bGUtZXhwZWN0ZWQudHh0ICAgIHwgICAgNSArLQogLi4uL3BsYXRmb3JtL2d0ay9tZWRpYS92aWRl
by1uby1hdWRpby1leHBlY3RlZC50eHQgfCAgICA1ICstCiAuLi4vZ3RrL21lZGlhL3ZpZGVvLXpv
b20tY29udHJvbHMtZXhwZWN0ZWQudHh0ICAgICB8ICAgMTAgKy0KIFdlYkNvcmUvQ2hhbmdlTG9n
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzMCArCiBXZWJDb3JlL0dOVW1h
a2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKwogLi4uL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuY3BwICAgICAgICAgfCAgMTU3ICsrKysrLQog
Li4uL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuaCAgfCAgIDE5
ICsKIC4uLi9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCAgICAgIHwg
ICAgMSAtCiAuLi4vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3cuaCAgICAg
ICB8ICAgNTQgKysKIC4uLi9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvd0d0
ay5jcHAgIHwgICA2MCArKwogV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgIDczICsrKwogV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRHdGsuY3BwICAgICAgfCAgIDI1ICsKIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50R3RrLmggICAgICAgIHwgICAgNSArCiAuLi4vV2ViQ29yZVN1cHBvcnQvRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlci5jcHAgICB8ICA1OTMgKysrKysrKysrKysrKysrKysrKysKIC4u
Li9ndGsvV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oIHwgIDEwMyAr
KysrCiBXZWJLaXQvZ3RrL3BvL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgIDkgKwogV2ViS2l0L2d0ay9wby9QT1RGSUxFUyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgICAxICsKIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuY3BwICAgICAgICAg
ICAgICAgIHwgICAzNiArKwogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oICAgICAg
ICAgICAgICAgICAgfCAgICA3ICsKIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAgMSArCiAyOCBmaWxlcyBjaGFuZ2VkLCAxMjQwIGluc2VydGlv
bnMoKyksIDI3IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3cuaAogY3JlYXRlIG1vZGUg
MTAwNjQ0IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9X
aW5kb3dHdGsuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oCgpkaWZmIC0t
Z2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGZlZjdhZDUuLjc0MWRjOTkgMTAwNjQ0
Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0w
Ny0xMCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dTdHJlYW1lcl0gR1RLIFhP
dmVybGF5IHN1cHBvcnQgaW4gR1N0cmVhbWVyR1dvcmxkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ3NAorCisgICAgICAgICogY29uZmlndXJlLmFj
OiBnc3QtaW50ZXJmYWNlcyBsaW5rIHN1cHBvcnQgbmVlZGVkIGZvciB1c2Ugb2YKKyAgICAgICAg
R3N0WE92ZXJsYXkgaW50ZXJmYWNlLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGRlZCBu
ZXcgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciBmaWxlcyBpbiB0aGUKKyAgICAgICAgYnVpbGQu
CisKIDIwMTAtMDgtMTcgIEplc3VzIFNhbmNoZXotUGFsZW5jaWEgIDxqZXN1cy5wYWxlbmNpYUBv
cGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0t
Z2l0IGEvR05VbWFrZWZpbGUuYW0gYi9HTlVtYWtlZmlsZS5hbQppbmRleCBiOWY2Y2FlLi45M2Iw
MWFmIDEwMDY0NAotLS0gYS9HTlVtYWtlZmlsZS5hbQorKysgYi9HTlVtYWtlZmlsZS5hbQpAQCAt
NzQ4LDYgKzc0OCw4IEBAIHdlYmtpdGd0a19zb3VyY2VzICs9IFwKIAlXZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcCBcCiAJV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oIFwKIAlXZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTmV0d29ya2luZ0NvbnRleHRHdGsuaCBcCisJV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcCBcCisJV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmggXAogCVdlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcCBcCiAJV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuaCBcCiAJV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Q
YXN0ZWJvYXJkSGVscGVyR3RrLmNwcCBcCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzgwOGFlMy4uNzhmM2I5NSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE5IEBACisyMDEwLTA3LTEwICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRA
aWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBbR1N0cmVhbWVyXSBHVEsgWE92ZXJsYXkgc3VwcG9ydCBpbiBHU3RyZWFtZXJHV29ybGQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDc0CisK
KyAgICAgICAgUmViYXNlbGluZWQgdGVzdHMgc2hvd2luZyB0aGUgdmlkZW8gY29udHJvbHMgY29u
dGFpbmluZyB0aGUgbmV3CisgICAgICAgIGZ1bGxzY3JlZW4gYnV0dG9uLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3RrL21lZGlhL2NvbnRyb2xzLWFmdGVyLXJlbG9hZC1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL21lZGlhL2NvbnRyb2xzLWRyYWctdGltZWJhci1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL21lZGlhL2NvbnRyb2xzLXN0cmljdC1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL21lZGlhL2NvbnRyb2xzLXN0eWxpbmct
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9tZWRpYS92aWRlby1jb250cm9s
cy1yZW5kZXJpbmctZXhwZWN0ZWQudHh0OgorCiAyMDEwLTA4LTE4ICBSZW5hdGEgSG9kb3ZhbiAg
PHJlbmlAaW5mLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpcmsgU2NodWx6
ZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9tZWRpYS9jb250cm9scy1h
ZnRlci1yZWxvYWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlh
L2NvbnRyb2xzLWFmdGVyLXJlbG9hZC1leHBlY3RlZC50eHQKaW5kZXggYTBiYWUxOC4uZjc3NmVi
MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlhL2NvbnRyb2xzLWFm
dGVyLXJlbG9hZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21l
ZGlhL2NvbnRyb2xzLWFmdGVyLXJlbG9hZC1leHBlY3RlZC50eHQKQEAgLTE1LDkgKzE1LDEwIEBA
IGxheWVyIGF0ICg4LDQ0KSBzaXplIDMyMHgyNDAKIGxheWVyIGF0ICg4LDI2NCkgc2l6ZSAzMjB4
MjAKICAgUmVuZGVyRmxleGlibGVCb3ggKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgwLDIyMCkgc2l6
ZSAzMjB4MjAKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMCwwKSBzaXplIDIweDIwCi0g
ICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDIwLDApIHNpemUgMjQweDIwIFtib3JkZXI6
ICgxcHggc29saWQgI0ZGRkZGRjMzKSBub25lICgxcHggc29saWQgI0ZGRkZGRjMzKV0KLSAgICAg
IFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgxLDApIHNpemUgMjM4eDIwCisgICAgUmVuZGVyRmxl
eGlibGVCb3gge0RJVn0gYXQgKDIwLDApIHNpemUgMjIweDIwIFtib3JkZXI6ICgxcHggc29saWQg
I0ZGRkZGRjMzKSBub25lICgxcHggc29saWQgI0ZGRkZGRjMzKV0KKyAgICAgIFJlbmRlclNsaWRl
ciB7SU5QVVR9IGF0ICgxLDApIHNpemUgMjE4eDIwCiAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9
IGF0ICgyLDQpIHNpemUgMTJ4MTIKKyAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjQwLDAp
IHNpemUgMjB4MjAKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjYwLDApIHNpemUgMjB4
MjAKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjgwLDApIHNpemUgMjB4MjAKICAgICBS
ZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMzAwLDApIHNpemUgMjB4MjAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2d0ay9tZWRpYS9jb250cm9scy1kcmFnLXRpbWViYXItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlhL2NvbnRyb2xzLWRyYWctdGlt
ZWJhci1leHBlY3RlZC50eHQKaW5kZXggNjkzNmJlNC4uYTQxMjExYSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlhL2NvbnRyb2xzLWRyYWctdGltZWJhci1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlhL2NvbnRyb2xzLWRyYWct
dGltZWJhci1leHBlY3RlZC50eHQKQEAgLTQsMTAgKzQsMTAgQEAgUlVOKHZpZGVvLmF1dG9wbGF5
ID0gdHJ1ZSkKIFJVTih2aWRlby5zcmMgPSAnY29udGVudC90ZXN0Lm1wNCcpCiBFVkVOVChwbGF5
aW5nKQogRVZFTlQoc2Vla2VkKQotVGltZTogMi4xCitUaW1lOiAyLjQKIEVWRU5UKHNlZWtlZCkK
LVRpbWU6IDIuNworVGltZTogMy4wCiBFVkVOVChzZWVrZWQpCi1UaW1lOiAzLjIKK1RpbWU6IDMu
NgogRU5EIE9GIFRFU1QKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21l
ZGlhL2NvbnRyb2xzLXN0cmljdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvbWVkaWEvY29udHJvbHMtc3RyaWN0LWV4cGVjdGVkLnR4dAppbmRleCBiZTM2MTViLi4zZjk2
ZDAzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvbWVkaWEvY29udHJvbHMt
c3RyaWN0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvbWVkaWEv
Y29udHJvbHMtc3RyaWN0LWV4cGVjdGVkLnR4dApAQCAtMTUsOSArMTUsMTAgQEAgbGF5ZXIgYXQg
KDgsNTIpIHNpemUgMzIweDI0MAogbGF5ZXIgYXQgKDgsMjcyKSBzaXplIDMyMHgyMAogICBSZW5k
ZXJGbGV4aWJsZUJveCAocG9zaXRpb25lZCkge0RJVn0gYXQgKDAsMjIwKSBzaXplIDMyMHgyMAog
ICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjB4MjAKLSAgICBSZW5kZXJG
bGV4aWJsZUJveCB7RElWfSBhdCAoMjAsMCkgc2l6ZSAyNDB4MjAgW2JvcmRlcjogKDFweCBzb2xp
ZCAjRkZGRkZGMzMpIG5vbmUgKDFweCBzb2xpZCAjRkZGRkZGMzMpXQotICAgICAgUmVuZGVyU2xp
ZGVyIHtJTlBVVH0gYXQgKDEsMCkgc2l6ZSAyMzh4MjAKKyAgICBSZW5kZXJGbGV4aWJsZUJveCB7
RElWfSBhdCAoMjAsMCkgc2l6ZSAyMjB4MjAgW2JvcmRlcjogKDFweCBzb2xpZCAjRkZGRkZGMzMp
IG5vbmUgKDFweCBzb2xpZCAjRkZGRkZGMzMpXQorICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0g
YXQgKDEsMCkgc2l6ZSAyMTh4MjAKICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsNCkg
c2l6ZSAxMngxMgorICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyNDAsMCkgc2l6ZSAyMHgy
MAogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyNjAsMCkgc2l6ZSAyMHgyMAogICAgIFJl
bmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyODAsMCkgc2l6ZSAyMHgyMAogICAgIFJlbmRlckJ1dHRv
biB7SU5QVVR9IGF0ICgzMDAsMCkgc2l6ZSAyMHgyMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL21lZGlhL2NvbnRyb2xzLXN0eWxpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlhL2NvbnRyb2xzLXN0eWxpbmctZXhwZWN0ZWQudHh0Cmlu
ZGV4IGZlOTQxZGYuLmJmODUxM2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay9tZWRpYS9jb250cm9scy1zdHlsaW5nLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGsvbWVkaWEvY29udHJvbHMtc3R5bGluZy1leHBlY3RlZC50eHQKQEAgLTE5LDkg
KzE5LDEwIEBAIGxheWVyIGF0ICgxOCw0NCkgc2l6ZSAzMjB4MjQwCiBsYXllciBhdCAoMTgsMjY0
KSBzaXplIDMyMHgyMAogICBSZW5kZXJGbGV4aWJsZUJveCAocG9zaXRpb25lZCkge0RJVn0gYXQg
KDAsMjIwKSBzaXplIDMyMHgyMAogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgwLDApIHNp
emUgMjB4MjAKLSAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMjAsMCkgc2l6ZSAyNDB4
MjAgW2JvcmRlcjogKDFweCBzb2xpZCAjRkZGRkZGMzMpIG5vbmUgKDFweCBzb2xpZCAjRkZGRkZG
MzMpXQotICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDEsMCkgc2l6ZSAyMzh4MjAKKyAg
ICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMjAsMCkgc2l6ZSAyMjB4MjAgW2JvcmRlcjog
KDFweCBzb2xpZCAjRkZGRkZGMzMpIG5vbmUgKDFweCBzb2xpZCAjRkZGRkZGMzMpXQorICAgICAg
UmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDEsMCkgc2l6ZSAyMTh4MjAKICAgICAgICAgUmVuZGVy
QmxvY2sge0RJVn0gYXQgKDIsNCkgc2l6ZSAxMngxMgorICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9
IGF0ICgyNDAsMCkgc2l6ZSAyMHgyMAogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyNjAs
MCkgc2l6ZSAyMHgyMAogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyODAsMCkgc2l6ZSAy
MHgyMAogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgzMDAsMCkgc2l6ZSAyMHgyMApAQCAt
MzAsOSArMzEsMTAgQEAgbGF5ZXIgYXQgKDgsMjg0KSBzaXplIDMyMHgyNDAKIGxheWVyIGF0ICg4
LDUwNCkgc2l6ZSAzMjB4MjAKICAgUmVuZGVyRmxleGlibGVCb3ggKHBvc2l0aW9uZWQpIHtESVZ9
IGF0ICgwLDIyMCkgc2l6ZSAzMjB4MjAKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMCww
KSBzaXplIDIweDIwCi0gICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDIwLDApIHNpemUg
MjQweDIwIFtib3JkZXI6ICgxcHggc29saWQgI0ZGRkZGRjMzKSBub25lICgxcHggc29saWQgI0ZG
RkZGRjMzKV0KLSAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgxLDApIHNpemUgMjM4eDIw
CisgICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDIwLDApIHNpemUgMjIweDIwIFtib3Jk
ZXI6ICgxcHggc29saWQgI0ZGRkZGRjMzKSBub25lICgxcHggc29saWQgI0ZGRkZGRjMzKV0KKyAg
ICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgxLDApIHNpemUgMjE4eDIwCiAgICAgICAgIFJl
bmRlckJsb2NrIHtESVZ9IGF0ICgyLDQpIHNpemUgMTJ4MTIKKyAgICBSZW5kZXJCdXR0b24ge0lO
UFVUfSBhdCAoMjQwLDApIHNpemUgMjB4MjAKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAo
MjYwLDApIHNpemUgMjB4MjAKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjgwLDApIHNp
emUgMjB4MjAKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMzAwLDApIHNpemUgMjB4MjAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9tZWRpYS92aWRlby1jb250cm9s
cy1yZW5kZXJpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlh
L3ZpZGVvLWNvbnRyb2xzLXJlbmRlcmluZy1leHBlY3RlZC50eHQKaW5kZXggZWM4YzE0Zi4uZTRi
N2ViMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlhL3ZpZGVvLWNv
bnRyb2xzLXJlbmRlcmluZy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrL21lZGlhL3ZpZGVvLWNvbnRyb2xzLXJlbmRlcmluZy1leHBlY3RlZC50eHQKQEAgLTIwLDkg
KzIwLDEwIEBAIGxheWVyIGF0ICg4LDQ0KSBzaXplIDMyMHgyNDAKIGxheWVyIGF0ICg4LDI2NCkg
c2l6ZSAzMjB4MjAKICAgUmVuZGVyRmxleGlibGVCb3ggKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgw
LDIyMCkgc2l6ZSAzMjB4MjAKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMCwwKSBzaXpl
IDIweDIwCi0gICAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDIwLDApIHNpemUgMjQweDIw
IFtib3JkZXI6ICgxcHggc29saWQgI0ZGRkZGRjMzKSBub25lICgxcHggc29saWQgI0ZGRkZGRjMz
KV0KLSAgICAgIFJlbmRlclNsaWRlciB7SU5QVVR9IGF0ICgxLDApIHNpemUgMjM4eDIwCisgICAg
UmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDIwLDApIHNpemUgMjIweDIwIFtib3JkZXI6ICgx
cHggc29saWQgI0ZGRkZGRjMzKSBub25lICgxcHggc29saWQgI0ZGRkZGRjMzKV0KKyAgICAgIFJl
bmRlclNsaWRlciB7SU5QVVR9IGF0ICgxLDApIHNpemUgMjE4eDIwCiAgICAgICAgIFJlbmRlckJs
b2NrIHtESVZ9IGF0ICgyLDQpIHNpemUgMTJ4MTIKKyAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBh
dCAoMjQwLDApIHNpemUgMjB4MjAKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjYwLDAp
IHNpemUgMjB4MjAKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMjgwLDApIHNpemUgMjB4
MjAKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMzAwLDApIHNpemUgMjB4MjAKQEAgLTMx
LDkgKzMyLDEwIEBAIGxheWVyIGF0ICg4LDI4NCkgc2l6ZSAzMjB4MjQwCiBsYXllciBhdCAoOCw1
MDQpIHNpemUgMzIweDIwCiAgIFJlbmRlckZsZXhpYmxlQm94IChwb3NpdGlvbmVkKSB7RElWfSBh
dCAoMCwyMjApIHNpemUgMzIweDIwCiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDAsMCkg
c2l6ZSAyMHgyMAotICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0ICgyMCwwKSBzaXplIDI0
MHgyMCBbYm9yZGVyOiAoMXB4IHNvbGlkICNGRkZGRkYzMykgbm9uZSAoMXB4IHNvbGlkICNGRkZG
RkYzMyldCi0gICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMSwwKSBzaXplIDIzOHgyMAor
ICAgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0ICgyMCwwKSBzaXplIDIyMHgyMCBbYm9yZGVy
OiAoMXB4IHNvbGlkICNGRkZGRkYzMykgbm9uZSAoMXB4IHNvbGlkICNGRkZGRkYzMyldCisgICAg
ICBSZW5kZXJTbGlkZXIge0lOUFVUfSBhdCAoMSwwKSBzaXplIDIxOHgyMAogICAgICAgICBSZW5k
ZXJCbG9jayB7RElWfSBhdCAoMiw0KSBzaXplIDEyeDEyCisgICAgUmVuZGVyQnV0dG9uIHtJTlBV
VH0gYXQgKDI0MCwwKSBzaXplIDIweDIwCiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI2
MCwwKSBzaXplIDIweDIwCiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI4MCwwKSBzaXpl
IDIweDIwCiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDMwMCwwKSBzaXplIDIweDIwCkBA
IC00NCw5ICs0NiwxMCBAQCBsYXllciBhdCAoOCw1MjQpIHNpemUgMzIweDI0MAogbGF5ZXIgYXQg
KDgsNzQ0KSBzaXplIDMyMHgyMAogICBSZW5kZXJGbGV4aWJsZUJveCAocG9zaXRpb25lZCkge0RJ
Vn0gYXQgKDAsMjIwKSBzaXplIDMyMHgyMAogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgw
LDApIHNpemUgMjB4MjAKLSAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMjAsMCkgc2l6
ZSAyNDB4MjAgW2JvcmRlcjogKDFweCBzb2xpZCAjRkZGRkZGMzMpIG5vbmUgKDFweCBzb2xpZCAj
RkZGRkZGMzMpXQotICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDEsMCkgc2l6ZSAyMzh4
MjAKKyAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMjAsMCkgc2l6ZSAyMjB4MjAgW2Jv
cmRlcjogKDFweCBzb2xpZCAjRkZGRkZGMzMpIG5vbmUgKDFweCBzb2xpZCAjRkZGRkZGMzMpXQor
ICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDEsMCkgc2l6ZSAyMTh4MjAKICAgICAgICAg
UmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsNCkgc2l6ZSAxMngxMgorICAgIFJlbmRlckJ1dHRvbiB7
SU5QVVR9IGF0ICgyNDAsMCkgc2l6ZSAyMHgyMAogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0
ICgyNjAsMCkgc2l6ZSAyMHgyMAogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgyODAsMCkg
c2l6ZSAyMHgyMAogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgzMDAsMCkgc2l6ZSAyMHgy
MApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlhL3ZpZGVvLWRpc3Bs
YXktdG9nZ2xlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9tZWRpYS92
aWRlby1kaXNwbGF5LXRvZ2dsZS1leHBlY3RlZC50eHQKaW5kZXggMTllMDkyZi4uMDBjM2E1OCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlhL3ZpZGVvLWRpc3BsYXkt
dG9nZ2xlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvbWVkaWEv
dmlkZW8tZGlzcGxheS10b2dnbGUtZXhwZWN0ZWQudHh0CkBAIC0xNCw5ICsxNCwxMCBAQCBsYXll
ciBhdCAoOCwyOCkgc2l6ZSAzMjB4MjQwCiBsYXllciBhdCAoOCwyNDgpIHNpemUgMzIweDIwCiAg
IFJlbmRlckZsZXhpYmxlQm94IChwb3NpdGlvbmVkKSB7RElWfSBhdCAoMCwyMjApIHNpemUgMzIw
eDIwCiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDAsMCkgc2l6ZSAyMHgyMAotICAgIFJl
bmRlckZsZXhpYmxlQm94IHtESVZ9IGF0ICgyMCwwKSBzaXplIDI0MHgyMCBbYm9yZGVyOiAoMXB4
IHNvbGlkICNGRkZGRkYzMykgbm9uZSAoMXB4IHNvbGlkICNGRkZGRkYzMyldCi0gICAgICBSZW5k
ZXJTbGlkZXIge0lOUFVUfSBhdCAoMSwwKSBzaXplIDIzOHgyMAorICAgIFJlbmRlckZsZXhpYmxl
Qm94IHtESVZ9IGF0ICgyMCwwKSBzaXplIDIyMHgyMCBbYm9yZGVyOiAoMXB4IHNvbGlkICNGRkZG
RkYzMykgbm9uZSAoMXB4IHNvbGlkICNGRkZGRkYzMyldCisgICAgICBSZW5kZXJTbGlkZXIge0lO
UFVUfSBhdCAoMSwwKSBzaXplIDIxOHgyMAogICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAo
Miw0KSBzaXplIDEyeDEyCisgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI0MCwwKSBzaXpl
IDIweDIwCiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI2MCwwKSBzaXplIDIweDIwCiAg
ICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDI4MCwwKSBzaXplIDIweDIwCiAgICAgUmVuZGVy
QnV0dG9uIHtJTlBVVH0gYXQgKDMwMCwwKSBzaXplIDIweDIwCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGsvbWVkaWEvdmlkZW8tbm8tYXVkaW8tZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlhL3ZpZGVvLW5vLWF1ZGlvLWV4cGVjdGVkLnR4dApp
bmRleCBjZGM2Y2VlLi4yZjQ1ZTU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvbWVkaWEvdmlkZW8tbm8tYXVkaW8tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9tZWRpYS92aWRlby1uby1hdWRpby1leHBlY3RlZC50eHQKQEAgLTE1LDggKzE1
LDkgQEAgbGF5ZXIgYXQgKDgsNDQpIHNpemUgMzUyeDI4OAogbGF5ZXIgYXQgKDgsMzEyKSBzaXpl
IDM1MngyMAogICBSZW5kZXJGbGV4aWJsZUJveCAocG9zaXRpb25lZCkge0RJVn0gYXQgKDAsMjY4
KSBzaXplIDM1MngyMAogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgwLDApIHNpemUgMjB4
MjAKLSAgICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMjAsMCkgc2l6ZSAyOTJ4MjAgW2Jv
cmRlcjogKDFweCBzb2xpZCAjRkZGRkZGMzMpIG5vbmUgKDFweCBzb2xpZCAjRkZGRkZGMzMpXQot
ICAgICAgUmVuZGVyU2xpZGVyIHtJTlBVVH0gYXQgKDEsMCkgc2l6ZSAyOTB4MjAKKyAgICBSZW5k
ZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoMjAsMCkgc2l6ZSAyNzJ4MjAgW2JvcmRlcjogKDFweCBz
b2xpZCAjRkZGRkZGMzMpIG5vbmUgKDFweCBzb2xpZCAjRkZGRkZGMzMpXQorICAgICAgUmVuZGVy
U2xpZGVyIHtJTlBVVH0gYXQgKDEsMCkgc2l6ZSAyNzB4MjAKICAgICAgICAgUmVuZGVyQmxvY2sg
e0RJVn0gYXQgKDIsNCkgc2l6ZSAxMngxMgorICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgy
OTIsMCkgc2l6ZSAyMHgyMAogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgzMTIsMCkgc2l6
ZSAyMHgyMAogICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgzMzIsMCkgc2l6ZSAyMHgyMApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlhL3ZpZGVvLXpvb20tY29u
dHJvbHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlhL3ZpZGVv
LXpvb20tY29udHJvbHMtZXhwZWN0ZWQudHh0CmluZGV4IDgyMjFkNTUuLmQzZjc0ZDUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9tZWRpYS92aWRlby16b29tLWNvbnRyb2xz
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvbWVkaWEvdmlkZW8t
em9vbS1jb250cm9scy1leHBlY3RlZC50eHQKQEAgLTEzLDkgKzEzLDEwIEBAIGxheWVyIGF0ICg1
Nyw4Nykgc2l6ZSAyNDB4MTgwCiBsYXllciBhdCAoNTcsMjM3KSBzaXplIDI0MHgzMAogICBSZW5k
ZXJGbGV4aWJsZUJveCAocG9zaXRpb25lZCkge0RJVn0gYXQgKDAsMTUwKSBzaXplIDI0MHgzMAog
ICAgIFJlbmRlckJ1dHRvbiB7SU5QVVR9IGF0ICgwLDApIHNpemUgMzB4MzAKLSAgICBSZW5kZXJG
bGV4aWJsZUJveCB7RElWfSBhdCAoMzAsMCkgc2l6ZSAxMjB4MzAgW2JvcmRlcjogKDFweCBzb2xp
ZCAjRkZGRkZGMzMpIG5vbmUgKDFweCBzb2xpZCAjRkZGRkZGMzMpXQotICAgICAgUmVuZGVyU2xp
ZGVyIHtJTlBVVH0gYXQgKDEsMCkgc2l6ZSAxMTh4MzAKKyAgICBSZW5kZXJGbGV4aWJsZUJveCB7
RElWfSBhdCAoMzAsMCkgc2l6ZSA5MHgzMCBbYm9yZGVyOiAoMXB4IHNvbGlkICNGRkZGRkYzMykg
bm9uZSAoMXB4IHNvbGlkICNGRkZGRkYzMyldCisgICAgICBSZW5kZXJTbGlkZXIge0lOUFVUfSBh
dCAoMSwwKSBzaXplIDg4eDMwCiAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgzLDkpIHNp
emUgMTJ4MTIKKyAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMTIwLDApIHNpemUgMzB4MzAK
ICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMTUwLDApIHNpemUgMzB4MzAKICAgICBSZW5k
ZXJCdXR0b24ge0lOUFVUfSBhdCAoMTgwLDApIHNpemUgMzB4MzAKICAgICBSZW5kZXJCdXR0b24g
e0lOUFVUfSBhdCAoMjEwLDApIHNpemUgMzB4MzAKQEAgLTI2LDkgKzI3LDEwIEBAIGxheWVyIGF0
ICg1NywzMTIpIHNpemUgMjQweDE4MAogbGF5ZXIgYXQgKDU3LDQ2Mikgc2l6ZSAyNDB4MzAKICAg
UmVuZGVyRmxleGlibGVCb3ggKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgwLDE1MCkgc2l6ZSAyNDB4
MzAKICAgICBSZW5kZXJCdXR0b24ge0lOUFVUfSBhdCAoMCwwKSBzaXplIDMweDMwCi0gICAgUmVu
ZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDMwLDApIHNpemUgMTIweDMwIFtib3JkZXI6ICgxcHgg
c29saWQgI0ZGRkZGRjMzKSBub25lICgxcHggc29saWQgI0ZGRkZGRjMzKV0KLSAgICAgIFJlbmRl
clNsaWRlciB7SU5QVVR9IGF0ICgxLDApIHNpemUgMTE4eDMwCisgICAgUmVuZGVyRmxleGlibGVC
b3gge0RJVn0gYXQgKDMwLDApIHNpemUgOTB4MzAgW2JvcmRlcjogKDFweCBzb2xpZCAjRkZGRkZG
MzMpIG5vbmUgKDFweCBzb2xpZCAjRkZGRkZGMzMpXQorICAgICAgUmVuZGVyU2xpZGVyIHtJTlBV
VH0gYXQgKDEsMCkgc2l6ZSA4OHgzMAogICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMyw5
KSBzaXplIDEyeDEyCisgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDEyMCwwKSBzaXplIDMw
eDMwCiAgICAgUmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDE1MCwwKSBzaXplIDMweDMwCiAgICAg
UmVuZGVyQnV0dG9uIHtJTlBVVH0gYXQgKDE4MCwwKSBzaXplIDMweDMwCiAgICAgUmVuZGVyQnV0
dG9uIHtJTlBVVH0gYXQgKDIxMCwwKSBzaXplIDMweDMwCmRpZmYgLS1naXQgYS9XZWJDb3JlL0No
YW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDVkMjZmMTguLmExYjY5NTYgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzMgQEAKKzIwMTAtMDctMjAgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtH
U3RyZWFtZXJdIEdUSyBYT3ZlcmxheSBzdXBwb3J0IGluIEdTdHJlYW1lckdXb3JsZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0NzQKKworICAgICAg
ICBHU3RyZWFtZXJHV29ybGQgbm93IGNhdGNoZXMgc3luY2hyb25vdXMgbWVzc2FnZXMgY29taW5n
IGZyb20gdGhlCisgICAgICAgIHNpbmtzIGFuZCBjcmVhdGVzIGEgR1RLIHdpbmRvdyB3aGVyZSB0
aGUgdmlkZW8gY2FuIGJlIG92ZXJsYXllZCBpZgorICAgICAgICBmdWxsc2NyZWVuIGRpc3BsYXkg
aXMgcmVxdWVzdGVkIHVzaW5nIGVudGVyRnVsbHNjcmVlbi4KKworICAgICAgICAqIEdOVW1ha2Vm
aWxlLmFtOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJH
V29ybGQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z3N0R1dvcmxkU3luY01lc3NhZ2VDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJHV29ybGQ6OkdTdHJlYW1lckdXb3JsZCk6
CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJHV29ybGQ6On5HU3RyZWFtZXJHV29ybGQpOgor
ICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyR1dvcmxkOjplbnRlckZ1bGxzY3JlZW4pOgorICAg
ICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyR1dvcmxkOjpleGl0RnVsbHNjcmVlbik6CisgICAgICAg
IChXZWJDb3JlOjpHU3RyZWFtZXJHV29ybGQ6OnNldFdpbmRvd092ZXJsYXkpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkdTdHJlYW1lckdXb3JsZDo6cGlwZWxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6
R1N0cmVhbWVyR1dvcmxkOjpwbGF0Zm9ybVZpZGVvV2luZG93KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvdy5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVmlkZW9XaW5kb3c6OmNyZWF0ZVdp
bmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVZpZGVvV2luZG93Ojp3aW5kb3cpOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1WaWRlb1dpbmRvdzo6dmlkZW9XaW5kb3dJZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dH
dGsuY3BwOiBBZGRlZC4KKyAgICAgICAgKFBsYXRmb3JtVmlkZW9XaW5kb3c6OlBsYXRmb3JtVmlk
ZW9XaW5kb3cpOgorCiAyMDEwLTA4LTE4ICBTaGluaWNoaXJvIEhhbWFqaSAgPGhhbWFqaUBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5k
ZXggZjc5YzEzMC4uNWVhNmJjNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQor
KysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0zMTY2LDYgKzMxNjYsOCBAQCB3ZWJjb3Jl
Z3RrX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dT
dHJlYW1lckdXb3JsZC5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZUdTdHJlYW1lci5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZUdTdHJlYW1lckNhaXJvLmNwcCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvdy5oIFwKKwlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93R3RrLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBcCiAJV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmgKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyR1dvcmxkLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dT
dHJlYW1lckdXb3JsZC5jcHAKaW5kZXggYzUwMjJmOS4uZTFlZDFhYiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuY3Bw
CkBAIC0yMSwxMiArMjEsMzMgQEAKIAogI2luY2x1ZGUgIkdTdHJlYW1lckdXb3JsZC5oIgogCi0j
aW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgiCisjaW5jbHVkZSAiR093blB0
ckdTdHJlYW1lci5oIgorCisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1ZGUgPGdzdC9pbnRl
cmZhY2VzL3hvdmVybGF5Lmg+CisKKyNpZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8Z3RrL2d0
ay5oPgorI2lmZGVmIEdES19XSU5ET1dJTkdfWDExCisjaW5jbHVkZSA8Z2RrL2dka3guaD4gLy8g
Zm9yIEdES19XSU5ET1dfWElECisjZW5kaWYKKyNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2Ugc3Rk
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2dib29sZWFuIGdzdEdXb3JsZFN5bmNNZXNzYWdl
Q2FsbGJhY2soR3N0QnVzKiBidXMsIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIGdwb2ludGVyIGRhdGEp
Cit7CisgICAgQVNTRVJUKEdTVF9NRVNTQUdFX1RZUEUobWVzc2FnZSkgPT0gR1NUX01FU1NBR0Vf
RUxFTUVOVCk7CisKKyAgICBHU3RyZWFtZXJHV29ybGQqIGdzdEdXb3JsZCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8R1N0cmVhbWVyR1dvcmxkKj4oZGF0YSk7CisKKyAgICBpZiAoZ3N0X3N0cnVjdHVyZV9o
YXNfbmFtZShtZXNzYWdlLT5zdHJ1Y3R1cmUsICJwcmVwYXJlLXh3aW5kb3ctaWQiKSkKKyAgICAg
ICAgZ3N0R1dvcmxkLT5zZXRXaW5kb3dPdmVybGF5KG1lc3NhZ2UpOworICAgIHJldHVybiBUUlVF
OworfQorCiBQYXNzUmVmUHRyPEdTdHJlYW1lckdXb3JsZD4gR1N0cmVhbWVyR1dvcmxkOjpjcmVh
dGVHV29ybGQoTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKiBwbGF5ZXIpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBHU3RyZWFtZXJHV29ybGQocGxheWVyKSk7CkBAIC0zNCwxMSArNTUs
MTQ1IEBAIFBhc3NSZWZQdHI8R1N0cmVhbWVyR1dvcmxkPiBHU3RyZWFtZXJHV29ybGQ6OmNyZWF0
ZUdXb3JsZChNZWRpYVBsYXllclByaXZhdGVHU3RyCiAKIEdTdHJlYW1lckdXb3JsZDo6R1N0cmVh
bWVyR1dvcmxkKE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciogcGxheWVyKQogICAgIDogbV9w
bGF5ZXIocGxheWVyKQorICAgICwgbV9keW5hbWljUGFkTmFtZSgwKQogeworICAgIC8vIFhPdmVy
bGF5IG1lc3NhZ2VzIG5lZWQgdG8gYmUgaGFuZGxlZCBzeW5jaHJvbm91c2x5LgorICAgIEdzdEJ1
cyogYnVzID0gZ3N0X3BpcGVsaW5lX2dldF9idXMoR1NUX1BJUEVMSU5FKG1fcGxheWVyLT5waXBl
bGluZSgpKSk7CisgICAgZ3N0X2J1c19zZXRfc3luY19oYW5kbGVyKGJ1cywgZ3N0X2J1c19zeW5j
X3NpZ25hbF9oYW5kbGVyLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KGJ1cywgInN5bmMt
bWVzc2FnZTo6ZWxlbWVudCIsIEdfQ0FMTEJBQ0soZ3N0R1dvcmxkU3luY01lc3NhZ2VDYWxsYmFj
ayksIHRoaXMpOworICAgIGdzdF9vYmplY3RfdW5yZWYoYnVzKTsKIH0KIAogR1N0cmVhbWVyR1dv
cmxkOjp+R1N0cmVhbWVyR1dvcmxkKCkKIHsKKyAgICBleGl0RnVsbHNjcmVlbigpOworfQorCiti
b29sIEdTdHJlYW1lckdXb3JsZDo6ZW50ZXJGdWxsc2NyZWVuKCkKK3sKKyAgICBpZiAobV9keW5h
bWljUGFkTmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFtX3ZpZGVvV2lu
ZG93KQorICAgICAgICBtX3ZpZGVvV2luZG93ID0gUGxhdGZvcm1WaWRlb1dpbmRvdzo6Y3JlYXRl
V2luZG93KCk7CisKKyAgICBHc3RFbGVtZW50KiBwaXBlbGluZSA9IG1fcGxheWVyLT5waXBlbGlu
ZSgpOworICAgIEdzdEVsZW1lbnQqIHBsYXRmb3JtVmlkZW9TaW5rID0gZ3N0X2VsZW1lbnRfZmFj
dG9yeV9tYWtlKCJhdXRvdmlkZW9zaW5rIiwgInBsYXRmb3JtVmlkZW9TaW5rIik7CisgICAgR3N0
RWxlbWVudCogY29sb3JzcGFjZSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiZmZtcGVnY29s
b3JzcGFjZSIsICJjb2xvcnNwYWNlIik7CisgICAgR3N0RWxlbWVudCogcXVldWUgPSBnc3RfZWxl
bWVudF9mYWN0b3J5X21ha2UoInF1ZXVlIiwgInF1ZXVlIik7CisgICAgR3N0RWxlbWVudCogdmlk
ZW9TY2FsZSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgidmlkZW9zY2FsZSIsICJ2aWRlb1Nj
YWxlIik7CisKKyAgICAvLyBHZXQgdmlkZW8gc2luayBiaW4gYW5kIHRoZSB0ZWUgaW5zaWRlLgor
ICAgIEdPd25QdHI8R3N0RWxlbWVudD4gdmlkZW9TaW5rOworICAgIGdfb2JqZWN0X2dldChwaXBl
bGluZSwgInZpZGVvLXNpbmsiLCAmdmlkZW9TaW5rLm91dFB0cigpLCBOVUxMKTsKKyAgICBHc3RF
bGVtZW50KiB0ZWUgPSBnc3RfYmluX2dldF9ieV9uYW1lKEdTVF9CSU4odmlkZW9TaW5rLmdldCgp
KSwgInZpZGVvVGVlIik7CisKKyAgICAvLyBBZGQgYW5kIGxpbmsgYSBxdWV1ZSwgZmZtcGVnY29s
b3JzcGFjZSBhbmQgc2luayBpbiB0aGUgYmluLgorICAgIGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJ
Tih2aWRlb1NpbmsuZ2V0KCkpLCBwbGF0Zm9ybVZpZGVvU2luaywgdmlkZW9TY2FsZSwgY29sb3Jz
cGFjZSwgcXVldWUsIE5VTEwpOworICAgIGdzdF9lbGVtZW50X2xpbmtfbWFueShxdWV1ZSwgY29s
b3JzcGFjZSwgdmlkZW9TY2FsZSwgcGxhdGZvcm1WaWRlb1NpbmssIE5VTEwpOworCisgICAgLy8g
TGluayBhIG5ldyBzcmMgcGFkIGZyb20gdGVlIHRvIHF1ZXVlLgorICAgIEdzdFBhZCogc3JjUGFk
ID0gZ3N0X2VsZW1lbnRfZ2V0X3JlcXVlc3RfcGFkKHRlZSwgInNyYyVkIik7CisgICAgR3N0UGFk
KiBzaW5rUGFkID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQocXVldWUsICJzaW5rIik7Cisg
ICAgZ3N0X3BhZF9saW5rKHNyY1BhZCwgc2lua1BhZCk7CisgICAgZ3N0X29iamVjdF91bnJlZihH
U1RfT0JKRUNUKHNpbmtQYWQpKTsKKworICAgIG1fZHluYW1pY1BhZE5hbWUgPSBnc3RfcGFkX2dl
dF9uYW1lKHNyY1BhZCk7CisKKyAgICAvLyBSb2xsIG5ldyBlbGVtZW50cyB0byBwaXBlbGluZSBz
dGF0ZS4KKyAgICBnc3RfZWxlbWVudF9zeW5jX3N0YXRlX3dpdGhfcGFyZW50KHF1ZXVlKTsKKyAg
ICBnc3RfZWxlbWVudF9zeW5jX3N0YXRlX3dpdGhfcGFyZW50KGNvbG9yc3BhY2UpOworICAgIGdz
dF9lbGVtZW50X3N5bmNfc3RhdGVfd2l0aF9wYXJlbnQodmlkZW9TY2FsZSk7CisgICAgZ3N0X2Vs
ZW1lbnRfc3luY19zdGF0ZV93aXRoX3BhcmVudChwbGF0Zm9ybVZpZGVvU2luayk7CisKKyAgICBn
c3Rfb2JqZWN0X3VucmVmKHRlZSk7CisKKyAgICAvLyBRdWVyeSB0aGUgY3VycmVudCBtZWRpYSBz
ZWdtZW50IGluZm9ybWF0aW9ucyBhbmQgc2VuZCB0aGVtIHRvd2FyZHMKKyAgICAvLyB0aGUgbmV3
IHRlZSBicmFuY2ggZG93bnN0cmVhbS4KKworICAgIEdzdFF1ZXJ5KiBxdWVyeSA9IGdzdF9xdWVy
eV9uZXdfc2VnbWVudChHU1RfRk9STUFUX1RJTUUpOworICAgIGdib29sZWFuIHF1ZXJ5UmVzdWx0
ID0gZ3N0X2VsZW1lbnRfcXVlcnkocGlwZWxpbmUsIHF1ZXJ5KTsKKworICAgIC8vIFNlZSBodHRw
czovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjIwNDkwLgorI2lmIEdTVF9D
SEVDS19WRVJTSU9OKDAsIDEwLCAzMCkKKyAgICBpZiAoIXF1ZXJ5UmVzdWx0KSB7CisgICAgICAg
IGdzdF9xdWVyeV91bnJlZihxdWVyeSk7CisgICAgICAgIGdzdF9vYmplY3RfdW5yZWYoR1NUX09C
SkVDVChzcmNQYWQpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmCisKKyAg
ICBHc3RGb3JtYXQgZm9ybWF0OworICAgIGdpbnQ2NCBwb3NpdGlvbjsKKyAgICBpZiAoIWdzdF9l
bGVtZW50X3F1ZXJ5X3Bvc2l0aW9uKHBpcGVsaW5lLCAmZm9ybWF0LCAmcG9zaXRpb24pKQorICAg
ICAgICBwb3NpdGlvbiA9IDA7CisKKyAgICBnZG91YmxlIHJhdGU7CisgICAgZ2ludDY0IHN0YXJ0
VmFsdWUsIHN0b3BWYWx1ZTsKKyAgICBnc3RfcXVlcnlfcGFyc2Vfc2VnbWVudChxdWVyeSwgJnJh
dGUsICZmb3JtYXQsICZzdGFydFZhbHVlLCAmc3RvcFZhbHVlKTsKKworICAgIEdzdEV2ZW50KiBl
dmVudCA9IGdzdF9ldmVudF9uZXdfbmV3X3NlZ21lbnQoRkFMU0UsIHJhdGUsIGZvcm1hdCwgc3Rh
cnRWYWx1ZSwgc3RvcFZhbHVlLCBwb3NpdGlvbik7CisgICAgZ3N0X3BhZF9wdXNoX2V2ZW50KHNy
Y1BhZCwgZXZlbnQpOworCisgICAgZ3N0X3F1ZXJ5X3VucmVmKHF1ZXJ5KTsKKyAgICBnc3Rfb2Jq
ZWN0X3VucmVmKEdTVF9PQkpFQ1Qoc3JjUGFkKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Zv
aWQgR1N0cmVhbWVyR1dvcmxkOjpleGl0RnVsbHNjcmVlbigpCit7CisgICAgaWYgKCFtX2R5bmFt
aWNQYWROYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBHc3RFbGVtZW50KiBwaXBlbGluZSA9
IG1fcGxheWVyLT5waXBlbGluZSgpOworCisgICAgLy8gR2V0IHZpZGVvIHNpbmsgYmluIGFuZCB0
aGUgZWxlbWVudHMgdG8gcmVtb3ZlLgorICAgIEdPd25QdHI8R3N0RWxlbWVudD4gdmlkZW9TaW5r
OworICAgIGdfb2JqZWN0X2dldChwaXBlbGluZSwgInZpZGVvLXNpbmsiLCAmdmlkZW9TaW5rLm91
dFB0cigpLCBOVUxMKTsKKyAgICBHc3RFbGVtZW50KiB0ZWUgPSBnc3RfYmluX2dldF9ieV9uYW1l
KEdTVF9CSU4odmlkZW9TaW5rLmdldCgpKSwgInZpZGVvVGVlIik7CisgICAgR3N0RWxlbWVudCog
cGxhdGZvcm1WaWRlb1NpbmsgPSBnc3RfYmluX2dldF9ieV9uYW1lKEdTVF9CSU4odmlkZW9TaW5r
LmdldCgpKSwgInBsYXRmb3JtVmlkZW9TaW5rIik7CisgICAgR3N0RWxlbWVudCogcXVldWUgPSBn
c3RfYmluX2dldF9ieV9uYW1lKEdTVF9CSU4odmlkZW9TaW5rLmdldCgpKSwgInF1ZXVlIik7Cisg
ICAgR3N0RWxlbWVudCogY29sb3JzcGFjZSA9IGdzdF9iaW5fZ2V0X2J5X25hbWUoR1NUX0JJTih2
aWRlb1NpbmsuZ2V0KCkpLCAiY29sb3JzcGFjZSIpOworICAgIEdzdEVsZW1lbnQqIHZpZGVvU2Nh
bGUgPSBnc3RfYmluX2dldF9ieV9uYW1lKEdTVF9CSU4odmlkZW9TaW5rLmdldCgpKSwgInZpZGVv
U2NhbGUiKTsKKworICAgIC8vIEdldCBwYWRzIHRvIHVubGluayBhbmQgcmVtb3ZlLgorICAgIEdz
dFBhZCogc3JjUGFkID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQodGVlLCBtX2R5bmFtaWNQ
YWROYW1lKTsKKyAgICBHc3RQYWQqIHNpbmtQYWQgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3Bh
ZChxdWV1ZSwgInNpbmsiKTsKKworICAgIC8vIFVubGluayBhbmQgcmVsZWFzZSByZXF1ZXN0IHBh
ZC4KKyAgICBnc3RfcGFkX3VubGluayhzcmNQYWQsIHNpbmtQYWQpOworICAgIGdzdF9lbGVtZW50
X3JlbGVhc2VfcmVxdWVzdF9wYWQodGVlLCBzcmNQYWQpOworICAgIGdzdF9vYmplY3RfdW5yZWYo
R1NUX09CSkVDVChzcmNQYWQpKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmKEdTVF9PQkpFQ1Qoc2lu
a1BhZCkpOworCisgICAgLy8gVW5saW5rLCByZW1vdmUgYW5kIGNsZWFudXAgcXVldWUsIGZmbXBl
Z2NvbG9yc3BhY2UsIHZpZGVvU2NhbGUgYW5kIHNpbmsuCisgICAgZ3N0X2VsZW1lbnRfdW5saW5r
X21hbnkocXVldWUsIGNvbG9yc3BhY2UsIHZpZGVvU2NhbGUsIHBsYXRmb3JtVmlkZW9TaW5rLCBO
VUxMKTsKKyAgICBnc3RfYmluX3JlbW92ZV9tYW55KEdTVF9CSU4odmlkZW9TaW5rLmdldCgpKSwg
cXVldWUsIGNvbG9yc3BhY2UsIHZpZGVvU2NhbGUsIHBsYXRmb3JtVmlkZW9TaW5rLCBOVUxMKTsK
KyAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUocXVldWUsIEdTVF9TVEFURV9OVUxMKTsKKyAgICBn
c3RfZWxlbWVudF9zZXRfc3RhdGUoY29sb3JzcGFjZSwgR1NUX1NUQVRFX05VTEwpOworICAgIGdz
dF9lbGVtZW50X3NldF9zdGF0ZSh2aWRlb1NjYWxlLCBHU1RfU1RBVEVfTlVMTCk7CisgICAgZ3N0
X2VsZW1lbnRfc2V0X3N0YXRlKHBsYXRmb3JtVmlkZW9TaW5rLCBHU1RfU1RBVEVfTlVMTCk7Cisg
ICAgZ3N0X29iamVjdF91bnJlZihxdWV1ZSk7CisgICAgZ3N0X29iamVjdF91bnJlZihjb2xvcnNw
YWNlKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmKHZpZGVvU2NhbGUpOworICAgIGdzdF9vYmplY3Rf
dW5yZWYocGxhdGZvcm1WaWRlb1NpbmspOworCisgICAgZ3N0X29iamVjdF91bnJlZih0ZWUpOwor
ICAgIG1fZHluYW1pY1BhZE5hbWUgPSAwOworfQorCit2b2lkIEdTdHJlYW1lckdXb3JsZDo6c2V0
V2luZG93T3ZlcmxheShHc3RNZXNzYWdlKiBtZXNzYWdlKQoreworICAgIEdzdE9iamVjdCogc2lu
ayA9IEdTVF9NRVNTQUdFX1NSQyhtZXNzYWdlKTsKKworICAgIGlmICghR1NUX0lTX1hfT1ZFUkxB
WShzaW5rKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGdfb2JqZWN0X2NsYXNzX2ZpbmRf
cHJvcGVydHkoR19PQkpFQ1RfR0VUX0NMQVNTKHNpbmspLCAiZm9yY2UtYXNwZWN0LXJhdGlvIikp
CisgICAgICAgIGdfb2JqZWN0X3NldChzaW5rLCAiZm9yY2UtYXNwZWN0LXJhdGlvIiwgVFJVRSwg
TlVMTCk7CisKKyAgICBpZiAobV92aWRlb1dpbmRvdykKKyAgICAgICAgZ3N0X3hfb3ZlcmxheV9z
ZXRfeHdpbmRvd19pZChHU1RfWF9PVkVSTEFZKHNpbmspLCBtX3ZpZGVvV2luZG93LT52aWRlb1dp
bmRvd0lkKCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5oCmluZGV4IGI2MjYyOTguLjAzNThiMDEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3Js
ZC5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdX
b3JsZC5oCkBAIC0yMywyNSArMjMsNDQgQEAKIAogI2lmIEVOQUJMRShWSURFTykKIAorI2luY2x1
ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtVmlk
ZW9XaW5kb3cuaCIKICNpbmNsdWRlICJSZWZDb3VudGVkLmgiCiAjaW5jbHVkZSAiUmVmUHRyLmgi
CiAjaW5jbHVkZSA8Z2xpYi5oPgogCit0eXBlZGVmIHN0cnVjdCBfR3N0RWxlbWVudCBHc3RFbGVt
ZW50OwordHlwZWRlZiBzdHJ1Y3QgX0dzdE1lc3NhZ2UgR3N0TWVzc2FnZTsKK3R5cGVkZWYgc3Ry
dWN0IF9Hc3RCdXMgR3N0QnVzOwordHlwZWRlZiBzdHJ1Y3QgX0dzdEJpbiBHc3RCaW47CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOwog
CitnYm9vbGVhbiBnc3RHV29ybGRTeW5jTWVzc2FnZUNhbGxiYWNrKEdzdEJ1cyogYnVzLCBHc3RN
ZXNzYWdlKiBtZXNzYWdlLCBncG9pbnRlciBkYXRhKTsKIAogY2xhc3MgR1N0cmVhbWVyR1dvcmxk
IDogcHVibGljIFJlZkNvdW50ZWQ8R1N0cmVhbWVyR1dvcmxkPiB7CisgICAgZnJpZW5kIGdib29s
ZWFuIGdzdEdXb3JsZFN5bmNNZXNzYWdlQ2FsbGJhY2soR3N0QnVzKiBidXMsIEdzdE1lc3NhZ2Uq
IG1lc3NhZ2UsIGdwb2ludGVyIGRhdGEpOwogCiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8R1N0cmVhbWVyR1dvcmxkPiBjcmVhdGVHV29ybGQoTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyKik7CiAgICAgfkdTdHJlYW1lckdXb3JsZCgpOwogCisgICAgR3N0RWxlbWVudCogcGlwZWxp
bmUoKSBjb25zdCB7IHJldHVybiBtX3BsYXllci0+cGlwZWxpbmUoKTsgfQorCisgICAgLy8gUmV0
dXJucyB0aGUgZnVsbC1zY3JlZW4gd2luZG93IGNyZWF0ZWQKKyAgICBib29sIGVudGVyRnVsbHNj
cmVlbigpOworICAgIHZvaWQgZXhpdEZ1bGxzY3JlZW4oKTsKKworICAgIHZvaWQgc2V0V2luZG93
T3ZlcmxheShHc3RNZXNzYWdlKiBtZXNzYWdlKTsKKyAgICBQbGF0Zm9ybVZpZGVvV2luZG93KiBw
bGF0Zm9ybVZpZGVvV2luZG93KCkgY29uc3QgeyByZXR1cm4gbV92aWRlb1dpbmRvdy5nZXQoKTsg
fQorCiBwcml2YXRlOgogICAgIEdTdHJlYW1lckdXb3JsZChNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIqKTsKICAgICBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqIG1fcGxheWVyOworICAg
IFJlZlB0cjxQbGF0Zm9ybVZpZGVvV2luZG93PiBtX3ZpZGVvV2luZG93OworICAgIGdjaGFyKiBt
X2R5bmFtaWNQYWROYW1lOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKaW5kZXggNzE4NDQzOS4uOWZmZjk4NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwCkBAIC01NCw3ICs1NCw2IEBACiAjaW5jbHVkZSA8R093blB0ci5oPgogI2lu
Y2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDxnc3QvaW50ZXJmYWNlcy9taXhlci5oPgotI2lu
Y2x1ZGUgPGdzdC9pbnRlcmZhY2VzL3hvdmVybGF5Lmg+CiAjaW5jbHVkZSA8Z3N0L3ZpZGVvL3Zp
ZGVvLmg+CiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPG1hdGguaD4KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3cu
aCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5k
b3cuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44M2RjNWRkCi0tLSAvZGV2
L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1W
aWRlb1dpbmRvdy5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
SWdhbGlhIFMuTAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqLworCisjaWZuZGVmIFBsYXRmb3JtVmlkZW9XaW5kb3dfaAorI2RlZmluZSBQbGF0Zm9y
bVZpZGVvV2luZG93X2gKKworI2lmIEVOQUJMRShWSURFTykKKworI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworI2lmIFBMQVRGT1JNKEdU
SykKKyNpbmNsdWRlIDxndGsvZ3RrLmg+Cit0eXBlZGVmIEd0a1dpZGdldCBQbGF0Zm9ybVdpbmRv
d1R5cGU7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQbGF0Zm9ybVZp
ZGVvV2luZG93IDogcHVibGljIFJlZkNvdW50ZWQ8UGxhdGZvcm1WaWRlb1dpbmRvdz4geworICAg
IHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1WaWRlb1dpbmRvdz4g
Y3JlYXRlV2luZG93KCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3JtVmlkZW9XaW5kb3co
KSk7IH0KKworICAgICAgICBQbGF0Zm9ybVZpZGVvV2luZG93KCk7CisgICAgICAgIH5QbGF0Zm9y
bVZpZGVvV2luZG93KCk7CisKKyAgICAgICAgUGxhdGZvcm1XaW5kb3dUeXBlKiB3aW5kb3coKSBj
b25zdCB7IHJldHVybiBtX3dpbmRvdzsgfQorICAgICAgICBndWxvbmcgdmlkZW9XaW5kb3dJZCgp
IGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9XaW5kb3dJZDsgfQorCisgICAgcHJpdmF0ZToKKyAgICAg
ICAgZ3Vsb25nIG1fdmlkZW9XaW5kb3dJZDsKKyAgICAgICAgUGxhdGZvcm1XaW5kb3dUeXBlKiBt
X3ZpZGVvV2luZG93OworICAgICAgICBQbGF0Zm9ybVdpbmRvd1R5cGUqIG1fd2luZG93OworICAg
IH07Cit9CisKKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dHdGsuY3BwIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvd0d0ay5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTg1ZjUzNQotLS0gL2Rldi9udWxsCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5k
b3dHdGsuY3BwCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSWdh
bGlhIFMuTAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1WaWRlb1dpbmRv
dy5oIgorCisjaWZkZWYgR0RLX1dJTkRPV0lOR19YMTEKKyNpbmNsdWRlIDxnZGsvZ2RreC5oPiAv
LyBmb3IgR0RLX1dJTkRPV19YSUQKKyNlbmRpZgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworUGxhdGZvcm1WaWRlb1dpbmRvdzo6UGxhdGZvcm1WaWRlb1dpbmRvdygpCit7CisgICAgbV93
aW5kb3cgPSBndGtfd2luZG93X25ldyhHVEtfV0lORE9XX1RPUExFVkVMKTsKKyAgICBndGtfd2lk
Z2V0X3NldF9ldmVudHMobV93aW5kb3csIEdES19QT0lOVEVSX01PVElPTl9NQVNLIHwgR0RLX0tF
WV9QUkVTU19NQVNLIHwgR0RLX0ZPQ1VTX0NIQU5HRV9NQVNLKTsKKworICAgIG1fdmlkZW9XaW5k
b3cgPSBndGtfZHJhd2luZ19hcmVhX25ldygpOworICAgIGd0a193aWRnZXRfc2V0X2RvdWJsZV9i
dWZmZXJlZChtX3ZpZGVvV2luZG93LCBGQUxTRSk7CisgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RL
X0NPTlRBSU5FUihtX3dpbmRvdyksIG1fdmlkZW9XaW5kb3cpOworCisgICAgZ3RrX3dpZGdldF9y
ZWFsaXplKG1fd2luZG93KTsKKworI2lmZGVmIEdES19XSU5ET1dJTkdfWDExCisgICAgbV92aWRl
b1dpbmRvd0lkID0gR0RLX1dJTkRPV19YSUQoZ3RrX3dpZGdldF9nZXRfd2luZG93KG1fd2luZG93
KSk7CisjZW5kaWYKKworfQorCitQbGF0Zm9ybVZpZGVvV2luZG93Ojp+UGxhdGZvcm1WaWRlb1dp
bmRvdygpCit7CisgICAgaWYgKG1fdmlkZW9XaW5kb3cgJiYgbV93aW5kb3cpIHsKKyAgICAgICAg
Z3RrX2NvbnRhaW5lcl9yZW1vdmUoR1RLX0NPTlRBSU5FUihtX3dpbmRvdyksIG1fdmlkZW9XaW5k
b3cpOworICAgICAgICBndGtfd2lkZ2V0X2Rlc3Ryb3kobV92aWRlb1dpbmRvdyk7CisgICAgICAg
IG1fdmlkZW9XaW5kb3cgPSAwOworICAgIH0KKworICAgIGlmIChtX3dpbmRvdykgeworICAgICAg
ICBndGtfd2lkZ2V0X2Rlc3Ryb3kobV93aW5kb3cpOworICAgICAgICBtX3dpbmRvdyA9IDA7Cisg
ICAgfQorCisgICAgbV92aWRlb1dpbmRvd0lkID0gMDsKK30KZGlmZiAtLWdpdCBhL1dlYktpdC9n
dGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggZGFiZGRhYS4uNzUyMjRh
NyAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw3NiBAQAorMjAxMC0wNy0yMCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBu
b3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW0dTdHJlYW1lcl0gR1RLIFhPdmVybGF5IHN1cHBvcnQgaW4gR1N0cmVhbWVy
R1dvcmxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
OTQ3NAorCisgICAgICAgIE5ldyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyIG9iamVjdCwgcHJp
dmF0ZSBpbiB0aGUgd2Vidmlldy4gSXQKKyAgICAgICAgaXMgY3JlYXRlZCB3aGVuIHRoZSB1c2Vy
IHByZXNzZXMgdGhlIGZ1bGxzY3JlZW4gYnV0dG9uIG9mIHRoZQorICAgICAgICB2aWRlbyBjb250
cm9scy4gVmlkZW8gaXMgZGlzcGxheWVkIGluIGZ1bGxzY3JlZW4sIGNvbnRyb2xzIGFyZQorICAg
ICAgICBkaXNwbGF5ZWQgd2hlbiB0aGUgdXNlciBtb3ZlcyB0aGUgbW91c2UgYW5kIHdoZW4gdGhl
IHZpZGVvIGlzCisgICAgICAgIHBhdXNlZC4gVGhlcmUncyBhbHNvIGJhc2ljIGtleWJvYXJkIHNo
b3J0Y3V0cyBzdXBwb3J0OiBGL2YgdG8KKyAgICAgICAgbGVhdmUgZnVsbHNjcmVlbiwgc3BhY2Ug
dG8gdG9nZ2xlIHBsYXkvcGF1c2UgYW5kIHVwL2Rvd24gdG8KKyAgICAgICAgY29udHJvbCB2b2x1
bWUuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnN1cHBvcnRzRnVsbHNjcmVlbkZvck5vZGUpOgor
ICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OmVudGVyRnVsbHNjcmVlbkZvck5vZGUpOgor
ICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OmV4aXRGdWxsc2NyZWVuRm9yTm9kZSk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmg6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAg
ICAoaGlkZUh1ZENhbGxiYWNrKToKKyAgICAgICAgKG9uRnVsbHNjcmVlbkd0a01vdGlvbk5vdGlm
eUV2ZW50KToKKyAgICAgICAgKG9uRnVsbHNjcmVlbkd0a0FjdGl2ZU5vdGlmaWNhdGlvbik6Cisg
ICAgICAgIChvbkZ1bGxzY3JlZW5HdGtDb25maWd1cmVFdmVudCk6CisgICAgICAgIChvbkZ1bGxz
Y3JlZW5HdGtEZXN0cm95KToKKyAgICAgICAgKHRvZ2dsZVBsYXlQYXVzZUFjdGl2YXRlZCk6Cisg
ICAgICAgIChleGl0RnVsbHNjcmVlbkFjdGl2YXRlZCk6CisgICAgICAgIChwcm9ncmVzc0JhclVw
ZGF0ZUNhbGxiYWNrKToKKyAgICAgICAgKHRpbWVTY2FsZUJ1dHRvblByZXNzZWQpOgorICAgICAg
ICAodGltZVNjYWxlQnV0dG9uUmVsZWFzZWQpOgorICAgICAgICAodGltZVNjYWxlVmFsdWVDaGFu
Z2VkKToKKyAgICAgICAgKHZvbHVtZVZhbHVlQ2hhbmdlZCk6CisgICAgICAgIChwbGF5ZXJWb2x1
bWVDaGFuZ2VkQ2FsbGJhY2spOgorICAgICAgICAocGxheWVyTXV0ZUNoYW5nZWRDYWxsYmFjayk6
CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6On5GdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnNl
dE1lZGlhRWxlbWVudCk6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpndGtD
b25maWd1cmUpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6c2hvd0h1ZCk6
CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpoaWRlSHVkKToKKyAgICAgICAg
KG9uRnVsbHNjcmVlbkd0a0tleVByZXNzRXZlbnQpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcjo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXI6OnVwZGF0ZUh1ZFBvc2l0aW9uKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXI6OmV4aXRPblVzZXJSZXF1ZXN0KToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXI6OmV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXI6OmNhblBsYXkpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6cGxh
eSk6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpwYXVzZSk6CisgICAgICAg
IChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpwbGF5U3RhdGVDaGFuZ2VkKToKKyAgICAgICAg
KEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnRvZ2dsZVBsYXkpOgorICAgICAgICAoRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlcjo6dm9sdW1lKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXI6Om11dGVkKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnNl
dFZvbHVtZSk6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp2b2x1bWVDaGFu
Z2VkKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6Om11dGVDaGFuZ2VkKToK
KyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmN1cnJlbnRUaW1lKToKKyAgICAg
ICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnNldEN1cnJlbnRUaW1lKToKKyAgICAgICAg
KEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmR1cmF0aW9uKToKKyAgICAgICAgKEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI6OnBlcmNlbnRMb2FkZWQpOgorICAgICAgICAoRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlcjo6YmVnaW5TZWVrKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXI6OmRvU2Vlayk6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjplbmRT
ZWVrKToKKyAgICAgICAgKHRpbWVUb1N0cmluZyk6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyOjp1cGRhdGVIdWRQcm9ncmVzc0Jhcik6CisgICAgICAgIChGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyOjpjcmVhdGVIdWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Z1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXIuaDogQWRkZWQuCisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyOjptZWRpYUVsZW1lbnQpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXRwcml2YXRl
LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19lbnRlcl9mdWxsc2NyZWVuKToKKyAgICAg
ICAgKHdlYmtpdF93ZWJfdmlld19leGl0X2Z1bGxzY3JlZW4pOgorICAgICAgICAqIHdlYmtpdC93
ZWJraXRwcml2YXRlLmg6CisKIDIwMTAtMDgtMTcgIFhhbiBMb3BleiAgPHhsb3BlekBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25oYS4KZGlmZiAtLWdpdCBh
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcCBiL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAppbmRleCAxODVhYzE2Li4xYzg0
NTFlIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0
ay5jcHAKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3Bw
CkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRnJh
bWVMb2FkUmVxdWVzdC5oIgogI2luY2x1ZGUgIkd0a1ZlcnNpb25pbmcuaCIKKyNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3Vs
dC5oIgogI2luY2x1ZGUgIkljb24uaCIKQEAgLTY0MSw0ICs2NDIsMjggQEAgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU+IENocm9tZUNsaWVudDo6Y3JlYXRlU2VhcmNoUG9wdXBN
ZW51KFdlYkNvcmUKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlYXJjaFBvcHVwTWVudUd0ayhj
bGllbnQpKTsKIH0KIAorI2lmIEVOQUJMRShWSURFTykKKworYm9vbCBDaHJvbWVDbGllbnQ6OnN1
cHBvcnRzRnVsbHNjcmVlbkZvck5vZGUoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICByZXR1cm4g
bm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnZpZGVvVGFnKTsKK30KKwordm9pZCBDaHJvbWVD
bGllbnQ6OmVudGVyRnVsbHNjcmVlbkZvck5vZGUoTm9kZSogbm9kZSkKK3sKKyAgICBXZWJDb3Jl
OjpGcmFtZSogZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpOworICAgIFdlYktpdFdl
YkZyYW1lKiB3ZWJGcmFtZSA9IGtpdChmcmFtZSk7CisgICAgV2ViS2l0V2ViVmlldyogd2ViVmll
dyA9IGdldFZpZXdGcm9tRnJhbWUod2ViRnJhbWUpOworICAgIHdlYmtpdF93ZWJfdmlld19lbnRl
cl9mdWxsc2NyZWVuKHdlYlZpZXcsIG5vZGUpOworfQorCit2b2lkIENocm9tZUNsaWVudDo6ZXhp
dEZ1bGxzY3JlZW5Gb3JOb2RlKE5vZGUqIG5vZGUpCit7CisgICAgV2ViQ29yZTo6RnJhbWUqIGZy
YW1lID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKKyAgICBXZWJLaXRXZWJGcmFtZSogd2Vi
RnJhbWUgPSBraXQoZnJhbWUpOworICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBnZXRWaWV3
RnJvbUZyYW1lKHdlYkZyYW1lKTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfZXhpdF9mdWxsc2NyZWVu
KHdlYlZpZXcpOworfQorI2VuZGlmCisKIH0KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmggYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEd0ay5oCmluZGV4IGUzYmUxYzIuLjIxYzQ2NzcgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKKysrIGIvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaApAQCAtMTMzLDYgKzEzMywxMSBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKICAgICAgICAgdmlydHVhbCBib29sIHNlbGVjdEl0ZW1Xcml0aW5nRGly
ZWN0aW9uSXNOYXR1cmFsKCk7CiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpQ
b3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25z
dDsKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudT4g
Y3JlYXRlU2VhcmNoUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0Owor
I2lmIEVOQUJMRShWSURFTykKKyAgICAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVsbHNjcmVl
bkZvck5vZGUoY29uc3QgV2ViQ29yZTo6Tm9kZSopOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW50
ZXJGdWxsc2NyZWVuRm9yTm9kZShXZWJDb3JlOjpOb2RlKik7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBleGl0RnVsbHNjcmVlbkZvck5vZGUoV2ViQ29yZTo6Tm9kZSopOworI2VuZGlmCiAKICAgICBw
cml2YXRlOgogICAgICAgICBXZWJLaXRXZWJWaWV3KiBtX3dlYlZpZXc7CmRpZmYgLS1naXQgYS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwIGIv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjNmYTI1Ci0tLSAvZGV2L251bGwK
KysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
LmNwcApAQCAtMCwwICsxLDU5MyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlh
IFMuTAorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU8p
CisKKyNpbmNsdWRlICJGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmgiCisKKyNpbmNsdWRlICJN
ZWRpYVBsYXllci5oIgorCisjaW5jbHVkZSA8Z2RrL2dkay5oPgorI2luY2x1ZGUgPGdkay9nZGtr
ZXlzeW1zLmg+CisjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNsdWRlIDxnc3QvZ3N0
Lmg+CisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKKyNkZWZpbmUgSFVEX0FVVE9fSElERV9JTlRFUlZBTCAzMDAw
IC8vIDMgc2Vjb25kcworI2RlZmluZSBQUk9HUkVTU19CQVJfVVBEQVRFX0lOVEVSVkFMIDE1MCAv
LyAxNTBtcworI2RlZmluZSBWT0xVTUVfVVBfT0ZGU0VUIDAuMDUgLy8gNSUKKyNkZWZpbmUgVk9M
VU1FX0RPV05fT0ZGU0VUIDAuMDUgLy8gNSUKKworLy8gVXNlIHN5bWJvbGljIGljb25zIG9ubHkg
aWYgd2UgYnVpbGQgd2l0aCBHVEsrLTMgc3VwcG9ydC4gVGhleSBjb3VsZAorLy8gYmUgZW5hYmxl
ZCBmb3IgdGhlIEdUSysyIGJ1aWxkIGJ1dCB3ZSdkIG5lZWQgdG8gYnVtcCB0aGUgcmVxdWlyZWQK
Ky8vIHZlcnNpb24gdG8gYXQgbGVhc3QgMi4yMi4KKyNpZiBHVEtfTUFKT1JfVkVSU0lPTiA8IDMK
KyNkZWZpbmUgUExBWV9JQ09OX05BTUUgIm1lZGlhLXBsYXliYWNrLXN0YXJ0IgorI2RlZmluZSBQ
QVVTRV9JQ09OX05BTUUgIm1lZGlhLXBsYXliYWNrLXBhdXNlIgorI2RlZmluZSBFWElUX0ZVTExT
Q1JFRU5fSUNPTl9OQU1FICJ2aWV3LXJlc3RvcmUiCisjZWxzZQorI2RlZmluZSBQTEFZX0lDT05f
TkFNRSAibWVkaWEtcGxheWJhY2stc3RhcnQtc3ltYm9saWMiCisjZGVmaW5lIFBBVVNFX0lDT05f
TkFNRSAibWVkaWEtcGxheWJhY2stcGF1c2Utc3ltYm9saWMiCisjZGVmaW5lIEVYSVRfRlVMTFND
UkVFTl9JQ09OX05BTUUgInZpZXctcmVzdG9yZS1zeW1ib2xpYyIKKyNlbmRpZgorCitzdGF0aWMg
Z2Jvb2xlYW4gaGlkZUh1ZENhbGxiYWNrKGdwb2ludGVyIGRhdGEpCit7CisgICAgRnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlciogY29udHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlcio+KGRhdGEpOworICAgIGNvbnRyb2xsZXItPmhpZGVIdWQoKTsKKyAg
ICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiBvbkZ1bGxzY3JlZW5HdGtNb3Rp
b25Ob3RpZnlFdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRNb3Rpb24qIGV2ZW50LCBn
cG9pbnRlciBkYXRhKQoreworICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIGNvbnRyb2xs
ZXIgPSByZWludGVycHJldF9jYXN0PEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqPihkYXRhKTsK
KyAgICBjb250cm9sbGVyLT5zaG93SHVkKHRydWUpOworICAgIHJldHVybiBUUlVFOworfQorCitz
dGF0aWMgdm9pZCBvbkZ1bGxzY3JlZW5HdGtBY3RpdmVOb3RpZmljYXRpb24oR3RrV2lkZ2V0KiB3
aWRnZXQsIEdQYXJhbVNwZWMqIHByb3BlcnR5LCBncG9pbnRlciBkYXRhKQoreworICAgIEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0PEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXIqPihkYXRhKTsKKyAgICBpZiAoIWd0a193aW5kb3dfaXNfYWN0
aXZlKEdUS19XSU5ET1cod2lkZ2V0KSkpCisgICAgICAgIGNvbnRyb2xsZXItPmhpZGVIdWQoKTsK
K30KKworc3RhdGljIGdib29sZWFuIG9uRnVsbHNjcmVlbkd0a0NvbmZpZ3VyZUV2ZW50KEd0a1dp
ZGdldCogd2lkZ2V0LCBHZGtFdmVudENvbmZpZ3VyZSogZXZlbnQsIGdwb2ludGVyIGRhdGEpCit7
CisgICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogY29udHJvbGxlciA9IHJlaW50ZXJwcmV0
X2Nhc3Q8RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcio+KGRhdGEpOworICAgIGNvbnRyb2xsZXIt
Pmd0a0NvbmZpZ3VyZShldmVudCk7CisgICAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyB2b2lk
IG9uRnVsbHNjcmVlbkd0a0Rlc3Ryb3koR3RrV2lkZ2V0KiB3aWRnZXQsIGdwb2ludGVyIGRhdGEp
Cit7CisgICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogY29udHJvbGxlciA9IHJlaW50ZXJw
cmV0X2Nhc3Q8RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcio+KGRhdGEpOworICAgIGNvbnRyb2xs
ZXItPmV4aXRGdWxsc2NyZWVuKCk7Cit9CisKK3N0YXRpYyB2b2lkIHRvZ2dsZVBsYXlQYXVzZUFj
dGl2YXRlZChHdGtBY3Rpb24qIGFjdGlvbiwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyKiBjb250cm9sbGVyID0gcmVpbnRlcnByZXRfY2FzdDxGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyKj4oZGF0YSk7CisgICAgY29udHJvbGxlci0+dG9nZ2xlUGxheSgp
OworfQorCitzdGF0aWMgdm9pZCBleGl0RnVsbHNjcmVlbkFjdGl2YXRlZChHdGtBY3Rpb24qIGFj
dGlvbiwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBj
b250cm9sbGVyID0gcmVpbnRlcnByZXRfY2FzdDxGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKj4o
ZGF0YSk7CisgICAgY29udHJvbGxlci0+ZXhpdE9uVXNlclJlcXVlc3QoKTsKK30KKworc3RhdGlj
IGdib29sZWFuIHByb2dyZXNzQmFyVXBkYXRlQ2FsbGJhY2soZ3BvaW50ZXIgZGF0YSkKK3sKKyAg
ICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBjb250cm9sbGVyID0gcmVpbnRlcnByZXRfY2Fz
dDxGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKj4oZGF0YSk7CisgICAgcmV0dXJuIGNvbnRyb2xs
ZXItPnVwZGF0ZUh1ZFByb2dyZXNzQmFyKCk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiB0aW1lU2Nh
bGVCdXR0b25QcmVzc2VkKEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEJ1dHRvbiogZXZlbnQs
IGdwb2ludGVyIGRhdGEpCit7CisgICAgaWYgKGV2ZW50LT50eXBlICE9IEdES19CVVRUT05fUFJF
U1MpCisgICAgICAgIHJldHVybiBGQUxTRTsKKworICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXIqIGNvbnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0PEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXIqPihkYXRhKTsKKyAgICBjb250cm9sbGVyLT5iZWdpblNlZWsoKTsKKyAgICByZXR1cm4gRkFM
U0U7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiB0aW1lU2NhbGVCdXR0b25SZWxlYXNlZChHdGtXaWRn
ZXQqIHdpZGdldCwgR2RrRXZlbnRCdXR0b24qIGV2ZW50LCBncG9pbnRlciBkYXRhKQoreworICAg
IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0
PEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqPihkYXRhKTsKKyAgICBjb250cm9sbGVyLT5lbmRT
ZWVrKCk7CisgICAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgdm9pZCB0aW1lU2NhbGVWYWx1
ZUNoYW5nZWQoR3RrV2lkZ2V0KiB3aWRnZXQsIGdwb2ludGVyIGRhdGEpCit7CisgICAgRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlciogY29udHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlcio+KGRhdGEpOworICAgIGNvbnRyb2xsZXItPmRvU2VlaygpOwor
fQorCitzdGF0aWMgdm9pZCB2b2x1bWVWYWx1ZUNoYW5nZWQoR3RrU2NhbGVCdXR0b24gKmJ1dHRv
biwgZ2RvdWJsZSB2YWx1ZSwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyKiBjb250cm9sbGVyID0gcmVpbnRlcnByZXRfY2FzdDxGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyKj4oZGF0YSk7CisgICAgY29udHJvbGxlci0+c2V0Vm9sdW1lKHN0YXRpY19jYXN0
PGZsb2F0Pih2YWx1ZSkpOworfQorCit2b2lkIHBsYXllclZvbHVtZUNoYW5nZWRDYWxsYmFjayhH
T2JqZWN0ICplbGVtZW50LCBHUGFyYW1TcGVjICpwc3BlYywgZ3BvaW50ZXIgZGF0YSkKK3sKKyAg
ICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBjb250cm9sbGVyID0gcmVpbnRlcnByZXRfY2Fz
dDxGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKj4oZGF0YSk7CisgICAgY29udHJvbGxlci0+dm9s
dW1lQ2hhbmdlZCgpOworfQorCit2b2lkIHBsYXllck11dGVDaGFuZ2VkQ2FsbGJhY2soR09iamVj
dCAqZWxlbWVudCwgR1BhcmFtU3BlYyAqcHNwZWMsIGdwb2ludGVyIGRhdGEpCit7CisgICAgRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlciogY29udHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlcio+KGRhdGEpOworICAgIGNvbnRyb2xsZXItPm11dGVDaGFu
Z2VkKCk7Cit9CisKK0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXIoKQorICAgIDogbV9odWRUaW1lb3V0SWQoMCkKKyAgICAsIG1fcHJvZ3Jlc3NCYXJV
cGRhdGVJZCgwKQorICAgICwgbV9zZWVrTG9jayhmYWxzZSkKKyAgICAsIG1fd2luZG93KDApCisg
ICAgLCBtX2h1ZFdpbmRvdygwKQoreworfQorCitGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp+
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcigpCit7CisgICAgZXhpdEZ1bGxzY3JlZW4oKTsKK30K
Kwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpzZXRNZWRpYUVsZW1lbnQoSFRNTE1l
ZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQoreworICAgIGlmIChtZWRpYUVsZW1lbnQgPT0gbV9t
ZWRpYUVsZW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbWVkaWFFbGVtZW50ID0gbWVk
aWFFbGVtZW50OworICAgIGlmICghbV9tZWRpYUVsZW1lbnQpIHsKKyAgICAgICAgLy8gQ2FuJ3Qg
ZG8gZnVsbC1zY3JlZW4sIGp1c3QgZ2V0IG91dAorICAgICAgICBleGl0RnVsbHNjcmVlbigpOwor
ICAgIH0KK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpndGtDb25maWd1cmUo
R2RrRXZlbnRDb25maWd1cmUqIGV2ZW50KQoreworICAgIHVwZGF0ZUh1ZFBvc2l0aW9uKCk7Cit9
CisKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6c2hvd0h1ZChib29sIGF1dG9IaWRl
KQoreworICAgIGlmICghbV9odWRXaW5kb3cpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICht
X2h1ZFRpbWVvdXRJZCkgeworICAgICAgICBnX3NvdXJjZV9yZW1vdmUobV9odWRUaW1lb3V0SWQp
OworICAgICAgICBtX2h1ZFRpbWVvdXRJZCA9IDA7CisgICAgfQorCisgICAgLy8gU2hvdyB0aGUg
Y3Vyc29yLgorICAgIEdka1dpbmRvdyogd2luZG93ID0gZ3RrX3dpZGdldF9nZXRfd2luZG93KG1f
d2luZG93KTsKKyAgICBnZGtfd2luZG93X3NldF9jdXJzb3Iod2luZG93LCBtX2N1cnNvci5nZXQo
KSk7CisKKyAgICAvLyBVcGRhdGUgdGhlIHByb2dyZXNzIGJhciBpbW1lZGlhdGVseSBiZWZvcmUg
c2hvd2luZyB0aGUgd2luZG93LgorICAgIHVwZGF0ZUh1ZFByb2dyZXNzQmFyKCk7CisgICAgZ3Rr
X3dpZGdldF9zaG93X2FsbChtX2h1ZFdpbmRvdyk7CisgICAgdXBkYXRlSHVkUG9zaXRpb24oKTsK
KworICAgIC8vIFN0YXJ0IHBlcmlvZGljIHVwZGF0ZXMgb2YgdGhlIHByb2dyZXNzIGJhci4KKyAg
ICBpZiAoIW1fcHJvZ3Jlc3NCYXJVcGRhdGVJZCkKKyAgICAgICAgbV9wcm9ncmVzc0JhclVwZGF0
ZUlkID0gZ190aW1lb3V0X2FkZChQUk9HUkVTU19CQVJfVVBEQVRFX0lOVEVSVkFMLCBwcm9ncmVz
c0JhclVwZGF0ZUNhbGxiYWNrLCB0aGlzKTsKKworICAgIC8vIEhpZGUgdGhlIGh1ZCBpbiBmZXcg
c2Vjb25kcywgaWYgcmVxdWVzdGVkLgorICAgIGlmIChhdXRvSGlkZSkKKyAgICAgICAgbV9odWRU
aW1lb3V0SWQgPSBnX3RpbWVvdXRfYWRkKEhVRF9BVVRPX0hJREVfSU5URVJWQUwsIGhpZGVIdWRD
YWxsYmFjaywgdGhpcyk7Cit9CisKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6aGlk
ZUh1ZCgpCit7CisgICAgaWYgKG1faHVkVGltZW91dElkKSB7CisgICAgICAgIGdfc291cmNlX3Jl
bW92ZShtX2h1ZFRpbWVvdXRJZCk7CisgICAgICAgIG1faHVkVGltZW91dElkID0gMDsKKyAgICB9
CisKKyAgICBpZiAoIW1faHVkV2luZG93KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBLZWVw
IHRoZSBodWQgdmlzaWJsZSBpZiBhIHNlZWsgaXMgaW4gcHJvZ3Jlc3Mgb3IgaWYgdGhlIHZvbHVt
ZQorICAgIC8vIHBvcHVwIGlzIHZpc2libGUuCisgICAgR3RrV2lkZ2V0KiB2b2x1bWVQb3B1cCA9
IGd0a19zY2FsZV9idXR0b25fZ2V0X3BvcHVwKEdUS19TQ0FMRV9CVVRUT04obV92b2x1bWVCdXR0
b24pKTsKKyAgICBpZiAobV9zZWVrTG9jayB8fCBndGtfd2lkZ2V0X2dldF92aXNpYmxlKHZvbHVt
ZVBvcHVwKSkgeworICAgICAgICBzaG93SHVkKHRydWUpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgR2RrV2luZG93KiB3aW5kb3cgPSBndGtfd2lkZ2V0X2dldF93aW5kb3cobV93aW5k
b3cpOworICAgIEdka0N1cnNvciogY3Vyc29yID0gZ2RrX2N1cnNvcl9uZXcoR0RLX0JMQU5LX0NV
UlNPUik7CisgICAgZ2RrX3dpbmRvd19zZXRfY3Vyc29yKHdpbmRvdywgY3Vyc29yKTsKKworICAg
IGd0a193aWRnZXRfaGlkZV9hbGwobV9odWRXaW5kb3cpOworCisgICAgaWYgKG1fcHJvZ3Jlc3NC
YXJVcGRhdGVJZCkgeworICAgICAgICBnX3NvdXJjZV9yZW1vdmUobV9wcm9ncmVzc0JhclVwZGF0
ZUlkKTsKKyAgICAgICAgbV9wcm9ncmVzc0JhclVwZGF0ZUlkID0gMDsKKyAgICB9Cit9CisKK3N0
YXRpYyBnYm9vbGVhbiBvbkZ1bGxzY3JlZW5HdGtLZXlQcmVzc0V2ZW50KEd0a1dpZGdldCogd2lk
Z2V0LCBHZGtFdmVudEtleSogZXZlbnQsIGdwb2ludGVyIGRhdGEpCit7CisgICAgRnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlciogY29udHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlcio+KGRhdGEpOworCisgICAgc3dpdGNoIChldmVudC0+a2V5dmFsKSB7
CisgICAgY2FzZSBHREtfRXNjYXBlOgorICAgIGNhc2UgJ2YnOgorICAgIGNhc2UgJ0YnOgorICAg
ICAgICBjb250cm9sbGVyLT5leGl0T25Vc2VyUmVxdWVzdCgpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEdES19zcGFjZToKKyAgICBjYXNlIEdES19SZXR1cm46CisgICAgICAgIGNvbnRyb2xs
ZXItPnRvZ2dsZVBsYXkoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHREtfVXA6CisgICAg
ICAgIC8vIHZvbHVtZSB1cAorICAgICAgICBjb250cm9sbGVyLT5zZXRWb2x1bWUoY29udHJvbGxl
ci0+dm9sdW1lKCkgKyBWT0xVTUVfVVBfT0ZGU0VUKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBHREtfRG93bjoKKyAgICAgICAgLy8gdm9sdW1lIGRvd24KKyAgICAgICAgY29udHJvbGxlci0+
c2V0Vm9sdW1lKGNvbnRyb2xsZXItPnZvbHVtZSgpIC0gVk9MVU1FX0RPV05fT0ZGU0VUKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAg
cmV0dXJuIFRSVUU7Cit9CisKKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjplbnRl
ckZ1bGxzY3JlZW4oKQoreworICAgIGlmICghbV9tZWRpYUVsZW1lbnQpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmIChtX21lZGlhRWxlbWVudC0+cGxhdGZvcm1NZWRpYSgpLnR5cGUgIT0gV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYTo6R1N0cmVhbWVyR1dvcmxkVHlwZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9nc3RyZWFtZXJHV29ybGQgPSBtX21lZGlhRWxlbWVudC0+cGxhdGZvcm1NZWRp
YSgpLm1lZGlhLmdzdHJlYW1lckdXb3JsZDsKKyAgICBpZiAoIW1fZ3N0cmVhbWVyR1dvcmxkLT5l
bnRlckZ1bGxzY3JlZW4oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV93aW5kb3cgPSByZWlu
dGVycHJldF9jYXN0PEd0a1dpZGdldCo+KG1fZ3N0cmVhbWVyR1dvcmxkLT5wbGF0Zm9ybVZpZGVv
V2luZG93KCktPndpbmRvdygpKTsKKworICAgIEdzdEVsZW1lbnQqIHBpcGVsaW5lID0gbV9nc3Ry
ZWFtZXJHV29ybGQtPnBpcGVsaW5lKCk7CisgICAgZ19zaWduYWxfY29ubmVjdChwaXBlbGluZSwg
Im5vdGlmeTo6dm9sdW1lIiwgR19DQUxMQkFDSyhwbGF5ZXJWb2x1bWVDaGFuZ2VkQ2FsbGJhY2sp
LCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KHBpcGVsaW5lLCAibm90aWZ5OjptdXRlIiwg
R19DQUxMQkFDSyhwbGF5ZXJNdXRlQ2hhbmdlZENhbGxiYWNrKSwgdGhpcyk7CisKKyAgICBpZiAo
IW1faHVkV2luZG93KQorICAgICAgICBjcmVhdGVIdWQoKTsKKworICAgIC8vIEVuc3VyZSBibGFj
ayBiYWNrZ3JvdW5kLgorICAgIEdka0NvbG9yIGNvbG9yOworICAgIGdka19jb2xvcl9wYXJzZSgi
YmxhY2siLCAmY29sb3IpOworICAgIGd0a193aWRnZXRfbW9kaWZ5X2JnKG1fd2luZG93LCBHVEtf
U1RBVEVfTk9STUFMLCAmY29sb3IpOworICAgIGd0a193aWRnZXRfc2V0X2RvdWJsZV9idWZmZXJl
ZChtX3dpbmRvdywgRkFMU0UpOworCisgICAgZ19zaWduYWxfY29ubmVjdChtX3dpbmRvdywgImtl
eS1wcmVzcy1ldmVudCIsIEdfQ0FMTEJBQ0sob25GdWxsc2NyZWVuR3RrS2V5UHJlc3NFdmVudCks
IHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93aW5kb3csICJkZXN0cm95IiwgR19DQUxM
QkFDSyhvbkZ1bGxzY3JlZW5HdGtEZXN0cm95KSwgdGhpcyk7CisgICAgZ19zaWduYWxfY29ubmVj
dChtX3dpbmRvdywgIm5vdGlmeTo6aXMtYWN0aXZlIiwgR19DQUxMQkFDSyhvbkZ1bGxzY3JlZW5H
dGtBY3RpdmVOb3RpZmljYXRpb24pLCB0aGlzKTsKKworCisgICAgZ3RrX3dpZGdldF9zaG93X2Fs
bChtX3dpbmRvdyk7CisKKyAgICBHZGtXaW5kb3cqIHdpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dp
bmRvdyhtX3dpbmRvdyk7CisgICAgR2RrQ3Vyc29yKiBjdXJzb3IgPSBnZGtfY3Vyc29yX25ldyhH
REtfQkxBTktfQ1VSU09SKTsKKyAgICBtX2N1cnNvciA9IGdka193aW5kb3dfZ2V0X2N1cnNvcih3
aW5kb3cpOworICAgIGdka193aW5kb3dfc2V0X2N1cnNvcih3aW5kb3csIGN1cnNvcik7CisgICAg
Z2RrX2N1cnNvcl91bnJlZihjdXJzb3IpOworCisgICAgZ19zaWduYWxfY29ubmVjdChtX3dpbmRv
dywgIm1vdGlvbi1ub3RpZnktZXZlbnQiLCBHX0NBTExCQUNLKG9uRnVsbHNjcmVlbkd0a01vdGlv
bk5vdGlmeUV2ZW50KSwgdGhpcyk7CisgICAgZ19zaWduYWxfY29ubmVjdChtX3dpbmRvdywgImNv
bmZpZ3VyZS1ldmVudCIsIEdfQ0FMTEJBQ0sob25GdWxsc2NyZWVuR3RrQ29uZmlndXJlRXZlbnQp
LCB0aGlzKTsKKworICAgIGd0a193aW5kb3dfZnVsbHNjcmVlbihHVEtfV0lORE9XKG1fd2luZG93
KSk7CisgICAgc2hvd0h1ZCh0cnVlKTsKK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyOjp1cGRhdGVIdWRQb3NpdGlvbigpCit7CisgICAgaWYgKCFtX2h1ZFdpbmRvdykKKyAgICAg
ICAgcmV0dXJuOworCisgICAgLy8gR2V0IHRoZSBzY3JlZW4gcmVjdGFuZ2xlLgorICAgIEdka1Nj
cmVlbiogc2NyZWVuID0gZ3RrX3dpbmRvd19nZXRfc2NyZWVuKEdUS19XSU5ET1cobV93aW5kb3cp
KTsKKyAgICBHZGtXaW5kb3cqIHdpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyhtX3dpbmRv
dyk7CisgICAgR2RrUmVjdGFuZ2xlIGZ1bGxzY3JlZW5SZWN0YW5nbGU7CisgICAgZ2RrX3NjcmVl
bl9nZXRfbW9uaXRvcl9nZW9tZXRyeShzY3JlZW4sIGdka19zY3JlZW5fZ2V0X21vbml0b3JfYXRf
d2luZG93KHNjcmVlbiwgd2luZG93KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICZmdWxsc2NyZWVuUmVjdGFuZ2xlKTsKKworICAgIC8vIEdldCB0aGUgcG9wdXAgd2luZG93
IHNpemUuCisgICAgaW50IGh1ZFdpZHRoLCBodWRIZWlnaHQ7CisgICAgZ3RrX3dpbmRvd19nZXRf
c2l6ZShHVEtfV0lORE9XKG1faHVkV2luZG93KSwgJmh1ZFdpZHRoLCAmaHVkSGVpZ2h0KTsKKwor
ICAgIC8vIFJlc2l6ZSB0aGUgaHVkIHRvIHRoZSBmdWxsIHdpZHRoIG9mIHRoZSBzY3JlZW4uCisg
ICAgZ3RrX3dpbmRvd19yZXNpemUoR1RLX1dJTkRPVyhtX2h1ZFdpbmRvdyksIGZ1bGxzY3JlZW5S
ZWN0YW5nbGUud2lkdGgsIGh1ZEhlaWdodCk7CisKKyAgICAvLyBNb3ZlIHRoZSBodWQgdG8gdGhl
IGJvdHRvbSBvZiB0aGUgc2NyZWVuLgorICAgIGd0a193aW5kb3dfbW92ZShHVEtfV0lORE9XKG1f
aHVkV2luZG93KSwgZnVsbHNjcmVlblJlY3RhbmdsZS54LAorICAgICAgICAgICAgICAgICAgICBm
dWxsc2NyZWVuUmVjdGFuZ2xlLmhlaWdodCArIGZ1bGxzY3JlZW5SZWN0YW5nbGUueSAtIGh1ZEhl
aWdodCk7Cit9CisKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZXhpdE9uVXNlclJl
cXVlc3QoKQoreworICAgIG1fbWVkaWFFbGVtZW50LT5leGl0RnVsbHNjcmVlbigpOworfQorCit2
b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmV4aXRGdWxsc2NyZWVuKCkKK3sKKyAgICBp
ZiAoIW1faHVkV2luZG93KQorICAgICAgICByZXR1cm47CisKKyAgICBnX3NpZ25hbF9oYW5kbGVy
c19kaXNjb25uZWN0X2J5X2Z1bmMobV93aW5kb3csIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9u
RnVsbHNjcmVlbkd0a0tleVByZXNzRXZlbnQpLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9oYW5kbGVy
c19kaXNjb25uZWN0X2J5X2Z1bmMobV93aW5kb3csIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9u
RnVsbHNjcmVlbkd0a0Rlc3Ryb3kpLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNj
b25uZWN0X2J5X2Z1bmMobV93aW5kb3csIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9uRnVsbHNj
cmVlbkd0a01vdGlvbk5vdGlmeUV2ZW50KSwgdGhpcyk7CisgICAgZ19zaWduYWxfaGFuZGxlcnNf
ZGlzY29ubmVjdF9ieV9mdW5jKG1fd2luZG93LCByZWludGVycHJldF9jYXN0PHZvaWQqPihvbkZ1
bGxzY3JlZW5HdGtDb25maWd1cmVFdmVudCksIHRoaXMpOworCisgICAgR3N0RWxlbWVudCogcGlw
ZWxpbmUgPSBtX21lZGlhRWxlbWVudC0+cGxhdGZvcm1NZWRpYSgpLm1lZGlhLmdzdHJlYW1lckdX
b3JsZC0+cGlwZWxpbmUoKTsKKyAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1
bmMocGlwZWxpbmUsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHBsYXllclZvbHVtZUNoYW5nZWRD
YWxsYmFjayksIHRoaXMpOworICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVu
YyhwaXBlbGluZSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocGxheWVyTXV0ZUNoYW5nZWRDYWxs
YmFjayksIHRoaXMpOworCisgICAgaWYgKG1faHVkVGltZW91dElkKSB7CisgICAgICAgIGdfc291
cmNlX3JlbW92ZShtX2h1ZFRpbWVvdXRJZCk7CisgICAgICAgIG1faHVkVGltZW91dElkID0gMDsK
KyAgICB9CisKKyAgICBpZiAobV9wcm9ncmVzc0JhclVwZGF0ZUlkKSB7CisgICAgICAgIGdfc291
cmNlX3JlbW92ZShtX3Byb2dyZXNzQmFyVXBkYXRlSWQpOworICAgICAgICBtX3Byb2dyZXNzQmFy
VXBkYXRlSWQgPSAwOworICAgIH0KKworICAgIGlmIChtX21lZGlhRWxlbWVudC0+cGxhdGZvcm1N
ZWRpYSgpLnR5cGUgPT0gV2ViQ29yZTo6UGxhdGZvcm1NZWRpYTo6R1N0cmVhbWVyR1dvcmxkVHlw
ZSkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnQtPnBsYXRmb3JtTWVkaWEoKS5tZWRpYS5nc3RyZWFt
ZXJHV29ybGQtPmV4aXRGdWxsc2NyZWVuKCk7CisKKyAgICBndGtfd2lkZ2V0X2hpZGVfYWxsKG1f
d2luZG93KTsKKworICAgIGd0a193aWRnZXRfZGVzdHJveShtX2h1ZFdpbmRvdyk7CisgICAgbV9o
dWRXaW5kb3cgPSAwOworfQorCitib29sIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmNhblBs
YXkoKSBjb25zdAoreworICAgIHJldHVybiBtX21lZGlhRWxlbWVudCAmJiBtX21lZGlhRWxlbWVu
dC0+Y2FuUGxheSgpOworfQorCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnBsYXko
KQoreworICAgIGlmIChtX21lZGlhRWxlbWVudCkKKyAgICAgICAgbV9tZWRpYUVsZW1lbnQtPnBs
YXkobV9tZWRpYUVsZW1lbnQtPnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKTsKKworICAgIHBsYXlT
dGF0ZUNoYW5nZWQoKTsKKyAgICBzaG93SHVkKHRydWUpOworfQorCit2b2lkIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXI6OnBhdXNlKCkKK3sKKyAgICBpZiAobV9tZWRpYUVsZW1lbnQpCisgICAg
ICAgIG1fbWVkaWFFbGVtZW50LT5wYXVzZShtX21lZGlhRWxlbWVudC0+cHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlKCkpOworCisgICAgcGxheVN0YXRlQ2hhbmdlZCgpOworICAgIHNob3dIdWQoZmFsc2Up
OworfQorCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnBsYXlTdGF0ZUNoYW5nZWQo
KQoreworICAgIGlmIChjYW5QbGF5KCkpCisgICAgICAgIGdfb2JqZWN0X3NldChtX3BsYXlQYXVz
ZUFjdGlvbiwgInRvb2x0aXAiLCBfKCJQbGF5IiksICJpY29uLW5hbWUiLCBQTEFZX0lDT05fTkFN
RSwgTlVMTCk7CisgICAgZWxzZQorICAgICAgICBnX29iamVjdF9zZXQobV9wbGF5UGF1c2VBY3Rp
b24sICJ0b29sdGlwIiwgXygiUGF1c2UiKSwgImljb24tbmFtZSIsIFBBVVNFX0lDT05fTkFNRSwg
TlVMTCk7Cit9CisKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dG9nZ2xlUGxheSgp
Cit7CisgICAgaWYgKGNhblBsYXkoKSkKKyAgICAgICAgcGxheSgpOworICAgIGVsc2UKKyAgICAg
ICAgcGF1c2UoKTsKK30KKworZmxvYXQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dm9sdW1l
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnQgPyBtX21lZGlhRWxlbWVudC0+
dm9sdW1lKCkgOiAwOworfQorCitib29sIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6Om11dGVk
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnQgPyBtX21lZGlhRWxlbWVudC0+
bXV0ZWQoKSA6IGZhbHNlOworfQorCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnNl
dFZvbHVtZShmbG9hdCB2b2x1bWUpCit7CisgICAgaWYgKHZvbHVtZSA8IDAuMCB8fCB2b2x1bWUg
PiAxLjApCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX21lZGlhRWxlbWVudCkgeworICAg
ICAgICBFeGNlcHRpb25Db2RlIGVjOworICAgICAgICBtX21lZGlhRWxlbWVudC0+c2V0Vm9sdW1l
KHZvbHVtZSwgZWMpOworICAgIH0KK30KKwordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
Ojp2b2x1bWVDaGFuZ2VkKCkKK3sKKyAgICBnX3NpZ25hbF9oYW5kbGVyX2Jsb2NrKG1fdm9sdW1l
QnV0dG9uLCBtX3ZvbHVtZVVwZGF0ZUlkKTsKKyAgICBndGtfc2NhbGVfYnV0dG9uX3NldF92YWx1
ZShHVEtfU0NBTEVfQlVUVE9OKG1fdm9sdW1lQnV0dG9uKSwgdm9sdW1lKCkpOworICAgIGdfc2ln
bmFsX2hhbmRsZXJfdW5ibG9jayhtX3ZvbHVtZUJ1dHRvbiwgbV92b2x1bWVVcGRhdGVJZCk7Cit9
CisKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6bXV0ZUNoYW5nZWQoKQoreworICAg
IGdfc2lnbmFsX2hhbmRsZXJfYmxvY2sobV92b2x1bWVCdXR0b24sIG1fdm9sdW1lVXBkYXRlSWQp
OworICAgIGd0a19zY2FsZV9idXR0b25fc2V0X3ZhbHVlKEdUS19TQ0FMRV9CVVRUT04obV92b2x1
bWVCdXR0b24pLCBtdXRlZCgpID8gMCA6IHZvbHVtZSgpKTsKKyAgICBnX3NpZ25hbF9oYW5kbGVy
X3VuYmxvY2sobV92b2x1bWVCdXR0b24sIG1fdm9sdW1lVXBkYXRlSWQpOworfQorCitmbG9hdCBG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpjdXJyZW50VGltZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fbWVkaWFFbGVtZW50ID8gbV9tZWRpYUVsZW1lbnQtPmN1cnJlbnRUaW1lKCkgOiAwOwor
fQorCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnNldEN1cnJlbnRUaW1lKGZsb2F0
IHZhbHVlKQoreworICAgIGlmIChtX21lZGlhRWxlbWVudCkgeworICAgICAgICBFeGNlcHRpb25D
b2RlIGVjOworICAgICAgICBtX21lZGlhRWxlbWVudC0+c2V0Q3VycmVudFRpbWUodmFsdWUsIGVj
KTsKKyAgICB9Cit9CisKK2Zsb2F0IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmR1cmF0aW9u
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnQgPyBtX21lZGlhRWxlbWVudC0+
ZHVyYXRpb24oKSA6IDA7Cit9CisKK2Zsb2F0IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnBl
cmNlbnRMb2FkZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX21lZGlhRWxlbWVudCA/IG1fbWVk
aWFFbGVtZW50LT5wZXJjZW50TG9hZGVkKCkgOiAwOworfQorCit2b2lkIEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXI6OmJlZ2luU2VlaygpCit7CisgICAgbV9zZWVrTG9jayA9IHRydWU7CisKKyAg
ICBpZiAobV9tZWRpYUVsZW1lbnQpCisgICAgICAgIG1fbWVkaWFFbGVtZW50LT5iZWdpblNjcnVi
YmluZygpOworfQorCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmRvU2VlaygpCit7
CisgICAgaWYgKCFtX3NlZWtMb2NrKQorICAgICAgICAgcmV0dXJuOworCisgICAgc2V0Q3VycmVu
dFRpbWUoZ3RrX3JhbmdlX2dldF92YWx1ZShHVEtfUkFOR0UobV90aW1lSFNjYWxlKSkqZHVyYXRp
b24oKSAvIDEwMCk7Cit9CisKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZW5kU2Vl
aygpCit7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50KQorICAgICAgICBtX21lZGlhRWxlbWVudC0+
ZW5kU2NydWJiaW5nKCk7CisKKyAgICBtX3NlZWtMb2NrID0gZmFsc2U7Cit9CisKK3N0YXRpYyBT
dHJpbmcgdGltZVRvU3RyaW5nKGZsb2F0IHRpbWUpCit7CisgICAgaWYgKCFpc2Zpbml0ZSh0aW1l
KSkKKyAgICAgICAgdGltZSA9IDA7CisgICAgaW50IHNlY29uZHMgPSBmYWJzZih0aW1lKTsKKyAg
ICBpbnQgaG91cnMgPSBzZWNvbmRzIC8gKDYwICogNjApOworICAgIGludCBtaW51dGVzID0gKHNl
Y29uZHMgLyA2MCkgJSA2MDsKKyAgICBzZWNvbmRzICU9IDYwOworCisgICAgaWYgKGhvdXJzKSB7
CisgICAgICAgIGlmIChob3VycyA+IDkpCisgICAgICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3Jt
YXQoIiVzJTAyZDolMDJkOiUwMmQiLCAodGltZSA8IDAgPyAiLSIgOiAiIiksIGhvdXJzLCBtaW51
dGVzLCBzZWNvbmRzKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlcyUwMWQ6JTAy
ZDolMDJkIiwgKHRpbWUgPCAwID8gIi0iIDogIiIpLCBob3VycywgbWludXRlcywgc2Vjb25kcyk7
CisgICAgfQorCisgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlcyUwMmQ6JTAyZCIsICh0aW1l
IDwgMCA/ICItIiA6ICIiKSwgbWludXRlcywgc2Vjb25kcyk7Cit9CisKK2dib29sZWFuIEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXI6OnVwZGF0ZUh1ZFByb2dyZXNzQmFyKCkKK3sKKyAgICBmbG9h
dCBtZWRpYUR1cmF0aW9uKGR1cmF0aW9uKCkpOworICAgIGZsb2F0IG1lZGlhUG9zaXRpb24oY3Vy
cmVudFRpbWUoKSk7CisKKyAgICBpZiAoIW1fc2Vla0xvY2spIHsKKyAgICAgICAgZ2RvdWJsZSB2
YWx1ZSA9IDAuMDsKKworICAgICAgICBpZiAobWVkaWFQb3NpdGlvbiAmJiBtZWRpYUR1cmF0aW9u
KQorICAgICAgICAgICAgdmFsdWUgPSAobWVkaWFQb3NpdGlvbiAqIDEwMC4wKSAvIG1lZGlhRHVy
YXRpb247CisKKyAgICAgICAgR3RrQWRqdXN0bWVudCogYWRqdXN0bWVudCA9IGd0a19yYW5nZV9n
ZXRfYWRqdXN0bWVudChHVEtfUkFOR0UobV90aW1lSFNjYWxlKSk7CisgICAgICAgIGd0a19hZGp1
c3RtZW50X3NldF92YWx1ZShhZGp1c3RtZW50LCB2YWx1ZSk7CisgICAgfQorCisgICAgZ3RrX3Jh
bmdlX3NldF9maWxsX2xldmVsKEdUS19SQU5HRShtX3RpbWVIU2NhbGUpLCBwZXJjZW50TG9hZGVk
KCkqIDEwMCk7CisKKyAgICBnY2hhciogbGFiZWwgPSBnX3N0cmR1cF9wcmludGYoIiVzIC8gJXMi
LCB0aW1lVG9TdHJpbmcobWVkaWFQb3NpdGlvbikudXRmOCgpLmRhdGEoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGltZVRvU3RyaW5nKG1lZGlhRHVyYXRpb24pLnV0Zjgo
KS5kYXRhKCkpOworICAgIGd0a19sYWJlbF9zZXRfdGV4dChHVEtfTEFCRUwobV90aW1lTGFiZWwp
LCBsYWJlbCk7CisgICAgZ19mcmVlKGxhYmVsKTsKKyAgICByZXR1cm4gVFJVRTsKK30KKwordm9p
ZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpjcmVhdGVIdWQoKQoreworICAgIG1faHVkV2lu
ZG93ID0gZ3RrX3dpbmRvd19uZXcoR1RLX1dJTkRPV19QT1BVUCk7CisgICAgZ3RrX3dpbmRvd19z
ZXRfZ3Jhdml0eShHVEtfV0lORE9XKG1faHVkV2luZG93KSwgR0RLX0dSQVZJVFlfU09VVEhfV0VT
VCk7CisgICAgZ3RrX3dpbmRvd19zZXRfdHlwZV9oaW50KEdUS19XSU5ET1cobV9odWRXaW5kb3cp
LCBHREtfV0lORE9XX1RZUEVfSElOVF9OT1JNQUwpOworCisgICAgZ19zaWduYWxfY29ubmVjdCht
X2h1ZFdpbmRvdywgIm1vdGlvbi1ub3RpZnktZXZlbnQiLCBHX0NBTExCQUNLKG9uRnVsbHNjcmVl
bkd0a01vdGlvbk5vdGlmeUV2ZW50KSwgdGhpcyk7CisKKyAgICBHdGtXaWRnZXQqIGhib3ggPSBn
dGtfaGJveF9uZXcoRkFMU0UsIDQpOworICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlO
RVIobV9odWRXaW5kb3cpLCBoYm94KTsKKworICAgIG1fcGxheVBhdXNlQWN0aW9uID0gZ3RrX2Fj
dGlvbl9uZXcoInBsYXkiLCBfKCJQbGF5IC8gUGF1c2UiKSwgXygiUGxheSBvciBwYXVzZSB0aGUg
bWVkaWEiKSwgUEFVU0VfSUNPTl9OQU1FKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fcGxheVBh
dXNlQWN0aW9uLCAiYWN0aXZhdGUiLCBHX0NBTExCQUNLKHRvZ2dsZVBsYXlQYXVzZUFjdGl2YXRl
ZCksIHRoaXMpOworCisgICAgcGxheVN0YXRlQ2hhbmdlZCgpOworCisgICAgR3RrV2lkZ2V0KiBp
dGVtID0gZ3RrX2FjdGlvbl9jcmVhdGVfdG9vbF9pdGVtKG1fcGxheVBhdXNlQWN0aW9uKTsKKyAg
ICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChoYm94KSwgaXRlbSwgRkFMU0UsIFRSVUUsIDAp
OworCisgICAgR3RrV2lkZ2V0KiBsYWJlbCA9IGd0a19sYWJlbF9uZXcoXygiVGltZToiKSk7Cisg
ICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1goaGJveCksIGxhYmVsLCBGQUxTRSwgVFJVRSwg
MCk7CisKKyAgICBHdGtPYmplY3QqIGFkanVzdG1lbnQgPSBndGtfYWRqdXN0bWVudF9uZXcoMC4w
LCAwLjAsIDEwMC4wLCAwLjEsIDEuMCwgMS4wKTsKKyAgICBtX3RpbWVIU2NhbGUgPSBndGtfaHNj
YWxlX25ldyhHVEtfQURKVVNUTUVOVChhZGp1c3RtZW50KSk7CisgICAgZ3RrX3NjYWxlX3NldF9k
cmF3X3ZhbHVlKEdUS19TQ0FMRShtX3RpbWVIU2NhbGUpLCBGQUxTRSk7CisgICAgZ3RrX3Jhbmdl
X3NldF9zaG93X2ZpbGxfbGV2ZWwoR1RLX1JBTkdFKG1fdGltZUhTY2FsZSksIFRSVUUpOworICAg
IGd0a19yYW5nZV9zZXRfdXBkYXRlX3BvbGljeShHVEtfUkFOR0UobV90aW1lSFNjYWxlKSwgR1RL
X1VQREFURV9DT05USU5VT1VTKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fdGltZUhTY2FsZSwg
ImJ1dHRvbi1wcmVzcy1ldmVudCIsIEdfQ0FMTEJBQ0sodGltZVNjYWxlQnV0dG9uUHJlc3NlZCks
IHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV90aW1lSFNjYWxlLCAiYnV0dG9uLXJlbGVh
c2UtZXZlbnQiLCBHX0NBTExCQUNLKHRpbWVTY2FsZUJ1dHRvblJlbGVhc2VkKSwgdGhpcyk7Cisg
ICAgbV9oc2NhbGVVcGRhdGVJZCA9IGdfc2lnbmFsX2Nvbm5lY3QobV90aW1lSFNjYWxlLCAidmFs
dWUtY2hhbmdlZCIsIEdfQ0FMTEJBQ0sodGltZVNjYWxlVmFsdWVDaGFuZ2VkKSwgdGhpcyk7CisK
KyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChoYm94KSwgbV90aW1lSFNjYWxlLCBUUlVF
LCBUUlVFLCAwKTsKKworICAgIG1fdGltZUxhYmVsID0gZ3RrX2xhYmVsX25ldygiIik7CisgICAg
Z3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1goaGJveCksIG1fdGltZUxhYmVsLCBGQUxTRSwgVFJV
RSwgMCk7CisKKyAgICAvLyBWb2x1bWUgYnV0dG9uLgorICAgIG1fdm9sdW1lQnV0dG9uID0gZ3Rr
X3ZvbHVtZV9idXR0b25fbmV3KCk7CisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1goaGJv
eCksIG1fdm9sdW1lQnV0dG9uLCBGQUxTRSwgVFJVRSwgMCk7CisgICAgZ3RrX3NjYWxlX2J1dHRv
bl9zZXRfdmFsdWUoR1RLX1NDQUxFX0JVVFRPTihtX3ZvbHVtZUJ1dHRvbiksIHZvbHVtZSgpKTsK
KyAgICBtX3ZvbHVtZVVwZGF0ZUlkID0gZ19zaWduYWxfY29ubmVjdChtX3ZvbHVtZUJ1dHRvbiwg
InZhbHVlLWNoYW5nZWQiLCBHX0NBTExCQUNLKHZvbHVtZVZhbHVlQ2hhbmdlZCksIHRoaXMpOwor
CisKKyAgICBtX2V4aXRGdWxsc2NyZWVuQWN0aW9uID0gZ3RrX2FjdGlvbl9uZXcoImV4aXQiLCBf
KCJFeGl0IEZ1bGxzY3JlZW4iKSwgXygiRXhpdCBmcm9tIGZ1bGxzY3JlZW4gbW9kZSIpLCBFWElU
X0ZVTExTQ1JFRU5fSUNPTl9OQU1FKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fZXhpdEZ1bGxz
Y3JlZW5BY3Rpb24sICJhY3RpdmF0ZSIsIEdfQ0FMTEJBQ0soZXhpdEZ1bGxzY3JlZW5BY3RpdmF0
ZWQpLCB0aGlzKTsKKyAgICBnX29iamVjdF9zZXQobV9leGl0RnVsbHNjcmVlbkFjdGlvbiwgImlj
b24tbmFtZSIsIEVYSVRfRlVMTFNDUkVFTl9JQ09OX05BTUUsIE5VTEwpOworICAgIGl0ZW0gPSBn
dGtfYWN0aW9uX2NyZWF0ZV90b29sX2l0ZW0obV9leGl0RnVsbHNjcmVlbkFjdGlvbik7CisgICAg
Z3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1goaGJveCksIGl0ZW0sIEZBTFNFLCBUUlVFLCAwKTsK
KworCisgICAgbV9wcm9ncmVzc0JhclVwZGF0ZUlkID0gZ190aW1lb3V0X2FkZChQUk9HUkVTU19C
QVJfVVBEQVRFX0lOVEVSVkFMLCBwcm9ncmVzc0JhclVwZGF0ZUNhbGxiYWNrLCB0aGlzKTsKKwor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlci5oIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MzFiN2ZmMAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlci5oCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogIENvcHly
aWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqICB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICog
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlcl9oCisjZGVmaW5lIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJfaAorCisj
aWYgRU5BQkxFKFZJREVPKQorCisjaW5jbHVkZSAiR1JlZlB0ci5oIgorI2luY2x1ZGUgIkdTdHJl
YW1lckdXb3JsZC5oIgorI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CisKK3R5cGVkZWYgc3RydWN0IF9HdGtPYmplY3QgR3RrT2JqZWN0OwordHlw
ZWRlZiBzdHJ1Y3QgX0d0a1dpZGdldCBHdGtXaWRnZXQ7Cit0eXBlZGVmIHN0cnVjdCBfR3RrQWN0
aW9uIEd0a0FjdGlvbjsKK3R5cGVkZWYgc3RydWN0IF9HZGtDdXJzb3IgR2RrQ3Vyc29yOwordHlw
ZWRlZiBzdHJ1Y3QgX0dka0V2ZW50Q29uZmlndXJlIEdka0V2ZW50Q29uZmlndXJlOworCisKK2Ns
YXNzIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIgOiBwdWJsaWMgTm9uY29weWFibGUgeworcHVi
bGljOgorICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIoKTsKKyAgICB2aXJ0dWFsIH5GdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyKCk7CisKKyAgICB2b2lkIHNldE1lZGlhRWxlbWVudChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCog
bWVkaWFFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUVsZW1lbnQuZ2V0KCk7IH0KKwor
ICAgIHZvaWQgZ3RrQ29uZmlndXJlKEdka0V2ZW50Q29uZmlndXJlKiBldmVudCk7CisKKyAgICB2
b2lkIGVudGVyRnVsbHNjcmVlbigpOworICAgIHZvaWQgZXhpdEZ1bGxzY3JlZW4oKTsKKworICAg
IHZvaWQgZXhpdE9uVXNlclJlcXVlc3QoKTsKKyAgICB2b2lkIHRvZ2dsZVBsYXkoKTsKKyAgICB2
b2lkIGJlZ2luU2VlaygpOworICAgIHZvaWQgZG9TZWVrKCk7CisgICAgdm9pZCBlbmRTZWVrKCk7
CisKKyAgICB2b2lkIGhpZGVIdWQoKTsKKyAgICB2b2lkIHNob3dIdWQoYm9vbCk7CisgICAgZ2Jv
b2xlYW4gdXBkYXRlSHVkUHJvZ3Jlc3NCYXIoKTsKKworICAgIGZsb2F0IHZvbHVtZSgpIGNvbnN0
OworICAgIHZvaWQgc2V0Vm9sdW1lKGZsb2F0KTsKKyAgICB2b2lkIHZvbHVtZUNoYW5nZWQoKTsK
KyAgICB2b2lkIG11dGVDaGFuZ2VkKCk7CisKK3ByaXZhdGU6CisgICAgYm9vbCBjYW5QbGF5KCkg
Y29uc3Q7CisgICAgdm9pZCBwbGF5KCk7CisgICAgdm9pZCBwYXVzZSgpOworICAgIHZvaWQgcGxh
eVN0YXRlQ2hhbmdlZCgpOworCisgICAgYm9vbCBtdXRlZCgpIGNvbnN0OworCisgICAgZmxvYXQg
Y3VycmVudFRpbWUoKSBjb25zdDsKKyAgICB2b2lkIHNldEN1cnJlbnRUaW1lKGZsb2F0KTsKKwor
ICAgIGZsb2F0IGR1cmF0aW9uKCkgY29uc3Q7CisgICAgZmxvYXQgcGVyY2VudExvYWRlZCgpIGNv
bnN0OworCisgICAgdm9pZCBjcmVhdGVIdWQoKTsKKyAgICB2b2lkIHVwZGF0ZUh1ZFBvc2l0aW9u
KCk7CisKKyAgICBSZWZQdHI8V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudD4gbV9tZWRpYUVsZW1l
bnQ7CisgICAgUmVmUHRyPFdlYkNvcmU6OkdTdHJlYW1lckdXb3JsZD4gbV9nc3RyZWFtZXJHV29y
bGQ7CisKKyAgICBndWludCBtX2h1ZFRpbWVvdXRJZDsKKyAgICBndWludCBtX3Byb2dyZXNzQmFy
VXBkYXRlSWQ7CisgICAgZ3VpbnQgbV9wcm9ncmVzc0JhckZpbGxVcGRhdGVJZDsKKyAgICBndWlu
dCBtX2hzY2FsZVVwZGF0ZUlkOworICAgIGd1aW50IG1fdm9sdW1lVXBkYXRlSWQ7CisgICAgYm9v
bCBtX3NlZWtMb2NrOworICAgIEd0a1dpZGdldCogbV93aW5kb3c7CisgICAgR1JlZlB0cjxHZGtD
dXJzb3I+IG1fY3Vyc29yOworICAgIEd0a1dpZGdldCogbV9odWRXaW5kb3c7CisgICAgR3RrQWN0
aW9uKiBtX3BsYXlQYXVzZUFjdGlvbjsKKyAgICBHdGtBY3Rpb24qIG1fZXhpdEZ1bGxzY3JlZW5B
Y3Rpb247CisgICAgR3RrV2lkZ2V0KiBtX3RpbWVIU2NhbGU7CisgICAgR3RrV2lkZ2V0KiBtX3Rp
bWVMYWJlbDsKKyAgICBHdGtXaWRnZXQqIG1fdm9sdW1lQnV0dG9uOworfTsKKworI2VuZGlmCisK
KyNlbmRpZiAvLyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyX2gKZGlmZiAtLWdpdCBhL1dlYktp
dC9ndGsvcG8vQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9wby9DaGFuZ2VMb2cKaW5kZXggZjA4ODI3
NS4uNGExMjQ4OSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9wby9DaGFuZ2VMb2cKKysrIGIvV2Vi
S2l0L2d0ay9wby9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMC0wNy0yMCAgUGhpbGlw
cGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dTdHJlYW1lcl0gR1RLIFhPdmVybGF5IHN1cHBv
cnQgaW4gR1N0cmVhbWVyR1dvcmxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zOTQ3NAorCisgICAgICAgICogUE9URklMRVM6IEFkZGVkIG5ldyBmaWxl
IHRoYXQgY29udGFpbnMgc3RyaW5ncyB0byBleHRyYWN0LgorCiAyMDEwLTA4LTAzIEpvcmdlIEdv
bnrDoWxleiAgPGFsb3JpZWxAZ21haWwuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEd1c3Rh
dm8gTm9yb25oYS4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvcG8vUE9URklMRVMgYi9XZWJLaXQv
Z3RrL3BvL1BPVEZJTEVTCmluZGV4IDA1YmExMzguLmZmZDAwMTUgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9ndGsvcG8vUE9URklMRVMKKysrIGIvV2ViS2l0L2d0ay9wby9QT1RGSUxFUwpAQCAtMSw2ICsx
LDcgQEAKICMgTGlzdCBvZiBzb3VyY2UgZmlsZXMgd2hpY2ggY29udGFpbiB0cmFuc2xhdGFibGUg
c3RyaW5ncy4KIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAog
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEd0ay5jcHAKK1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAKIFdlYktp
dC9ndGsvd2Via2l0L3dlYmtpdGRvd25sb2FkLmNwcAogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
c291cGF1dGhkaWFsb2cuYwogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwCmRp
ZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmNwcCBiL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHByaXZhdGUuY3BwCmluZGV4IDkxYjI5MDQuLjJkMjI1OGQgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuY3BwCisrKyBiL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHByaXZhdGUuY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAjaW5jbHVkZSAi
RnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudEd0ay5oIgogI2luY2x1
ZGUgIkd0a1ZlcnNpb25pbmcuaCIKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5j
bHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUg
Ikljb25EYXRhYmFzZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTUwLDYgKzUyLDEwIEBA
CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCisjaWYg
RU5BQkxFKFZJREVPKQorI2luY2x1ZGUgIkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaCIKKyNl
bmRpZgorCiAjaWYgRU5BQkxFKERBVEFCQVNFKQogI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5o
IgogI2VuZGlmCkBAIC0zMjcsMyArMzMzLDMzIEBAIHZvaWQgd2Via2l0X3Jlc2V0X29yaWdpbl9h
Y2Nlc3Nfd2hpdGVfbGlzdHMoKQogewogICAgIFNlY3VyaXR5T3JpZ2luOjpyZXNldE9yaWdpbkFj
Y2Vzc1doaXRlbGlzdHMoKTsKIH0KKworCit2b2lkIHdlYmtpdF93ZWJfdmlld19lbnRlcl9mdWxs
c2NyZWVuKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIE5vZGUqIG5vZGUpCit7CisgICAgaWYgKCFu
b2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dmlkZW9UYWcpKQorICAgICAgICByZXR1cm47CisK
KyNpZiBFTkFCTEUoVklERU8pCisgICAgSFRNTE1lZGlhRWxlbWVudCogdmlkZW9FbGVtZW50ID0g
c3RhdGljX2Nhc3Q8SFRNTE1lZGlhRWxlbWVudCo+KG5vZGUpOworICAgIFdlYktpdFdlYlZpZXdQ
cml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKKworICAgIC8vIEZpcnN0IGV4aXQgRnVsbHNj
cmVlbiBmb3IgdGhlIG9sZCBtZWRpYUVsZW1lbnQuCisgICAgaWYgKHByaXYtPmZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXIpCisgICAgICAgIHByaXYtPmZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIt
PmV4aXRGdWxsc2NyZWVuKCk7CisKKyAgICBwcml2LT5mdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
ID0gbmV3IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI7CisgICAgcHJpdi0+ZnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlci0+c2V0TWVkaWFFbGVtZW50KHZpZGVvRWxlbWVudCk7CisgICAgcHJpdi0+
ZnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci0+ZW50ZXJGdWxsc2NyZWVuKCk7CisjZW5kaWYKK30K
Kwordm9pZCB3ZWJraXRfd2ViX3ZpZXdfZXhpdF9mdWxsc2NyZWVuKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcpCit7CisjaWYgRU5BQkxFKFZJREVPKQorICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBw
cml2ID0gd2ViVmlldy0+cHJpdjsKKyAgICBpZiAocHJpdi0+ZnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlcikKKyAgICAgICAgcHJpdi0+ZnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci0+ZXhpdEZ1bGxz
Y3JlZW4oKTsKKyNlbmRpZgorfQorCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXRwcml2YXRlLmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgKaW5kZXggYTU1
MDhhNC4uM2EwY2U0MyAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0
ZS5oCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaApAQCAtNTYsNiArNTYs
OCBAQAogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudEd0ay5oIgogI2luY2x1ZGUgIkludFBvaW50
LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJGdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5o
IgpAQCAtMTYxLDYgKzE2Myw4IEBAIGV4dGVybiAiQyIgewogICAgICAgICBnYm9vbGVhbiBkaXNw
b3Npbmc7CiAgICAgICAgIGdib29sZWFuIHVzZVByaW1hcnlGb3JQYXN0ZTsKIAorICAgICAgICBG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBmdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOworCiAg
ICAgICAgIC8vIFRoZXNlIGFyZSBob3N0ZWQgaGVyZSBiZWNhdXNlIHRoZSBEYXRhU291cmNlIG9i
amVjdCBpcwogICAgICAgICAvLyBjcmVhdGVkIHRvbyBsYXRlIGluIHRoZSBmcmFtZSBsb2FkaW5n
IHByb2Nlc3MuCiAgICAgICAgIFdlYktpdFdlYlJlc291cmNlKiBtYWluUmVzb3VyY2U7CkBAIC00
MTAsNiArNDE0LDkgQEAgZXh0ZXJuICJDIiB7CiAKICAgICBXRUJLSVRfQVBJIHZvaWQKICAgICB3
ZWJraXRfd2ViX2ZyYW1lX2xheW91dChXZWJLaXRXZWJGcmFtZSogZnJhbWUpOworCisgICAgdm9p
ZCB3ZWJraXRfd2ViX3ZpZXdfZW50ZXJfZnVsbHNjcmVlbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
LCBXZWJDb3JlOjpOb2RlKiBub2RlKTsKKyAgICB2b2lkIHdlYmtpdF93ZWJfdmlld19leGl0X2Z1
bGxzY3JlZW4oV2ViS2l0V2ViVmlldyogd2ViVmlldyk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IDBkZTg5ODUuLmJjMzBkNTQgMTAw
NjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTg0MSw2ICs4NDEs
NyBAQCBpZiB0ZXN0ICIkZW5hYmxlX3ZpZGVvIiA9ICJ5ZXMiOyB0aGVuCiAgICAgICAgICAgICAg
ICAgICAgICBbZ3N0cmVhbWVyLTAuMTAgPj0gJEdTVFJFQU1FUl9SRVFVSVJFRF9WRVJTSU9OCiAg
ICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXItYXBwLTAuMTAKICAgICAgICAgICAgICAgICAg
ICAgIGdzdHJlYW1lci1iYXNlLTAuMTAKKyAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1p
bnRlcmZhY2VzLTAuMTAKICAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1wYnV0aWxzLTAu
MTAKICAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1wbHVnaW5zLWJhc2UtMC4xMCA+PSAk
R1NUUkVBTUVSX1BMVUdJTlNfQkFTRV9SRVFVSVJFRF9WRVJTSU9OCiAgICAgICAgICAgICAgICAg
ICAgICBnc3RyZWFtZXItdmlkZW8tMC4xMF0pCi0tIAoxLjcuMQ==
</data>

          </attachment>
      

    </bug>

</bugzilla>