<?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>59655</bug_id>
          
          <creation_ts>2011-04-27 16:40:13 -0700</creation_ts>
          <short_desc>GTK port of WebKit2 should switch to new DrawingAreaImpl model</short_desc>
          <delta_ts>2019-09-17 20:44:39 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=201895</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>60293</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>alex</cc>
    
    <cc>andersca</cc>
    
    <cc>cgarcia</cc>
    
    <cc>mrobinson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>393965</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-04-27 16:40:13 -0700</bug_when>
    <thetext>The GTK port is the only port left using the ChunkedUpdate model for DrawingAreas.  I would like to remove the ChunkedUpdate model soon, but getting the GTK port off it is a blocker.  The new model is quite a bit simpler from a porting perspective, but has a lot more functionality.  The Qt guys made the change recently in http://trac.webkit.org/changeset/84613.

The main things you have to do in order to make the change are:
- Fill out an implementation of BackingStore.
- Update your native views painting routine to call the new DrawingArea&apos;s paint function.
- Add some stubs for accelerated compositing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402414</commentid>
    <comment_count>1</comment_count>
      <attachid>93211</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-05-11 16:37:26 -0700</bug_when>
    <thetext>Created attachment 93211
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402706</commentid>
    <comment_count>2</comment_count>
      <attachid>93211</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-05-11 23:47:51 -0700</bug_when>
    <thetext>Comment on attachment 93211
Patch

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

Great!

&gt; Source/WebKit2/UIProcess/gtk/BackingStoreGtk.cpp:43
&gt; +    cairo_set_operator(context, CAIRO_OPERATOR_SOURCE);

Why using the source operator?

&gt; Source/WebKit2/UIProcess/gtk/BackingStoreGtk.cpp:82
&gt; +#ifdef GTK_API_VERSION_2
&gt; +    GdkRegion* moveRegion = gdk_region_rectangle(&amp;moveRect);
&gt; +#else
&gt; +    cairo_region_t* moveRegion = cairo_region_create_rectangle(&amp;moveRect);
&gt; +#endif

Region is leaked. I don&apos;t think we have an OwnPtr for cairo_region_t nor GdkRegion, so we should either add them and use OwnPtr here or call cairo_region_destroy()/gdk_region_destroy() after gdk_window_move_region()

&gt; Source/WebKit2/UIProcess/gtk/BackingStoreGtk.cpp:85
&gt; +    gdk_window_move_region(gtk_widget_get_window(m_webPageProxy-&gt;viewWidget()), moveRegion,
&gt; +                           scrollOffset.width(), scrollOffset.height());

Maybe we should call gdk_window_process_updates() here so that expose events are sent synchronously.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402855</commentid>
    <comment_count>3</comment_count>
      <attachid>93211</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-05-12 08:30:07 -0700</bug_when>
    <thetext>Comment on attachment 93211
Patch

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:154
&gt; +    WebKit::Region unpaintedRegion; // This is simply unused.
&gt; +    static_cast&lt;DrawingAreaProxyImpl*&gt;(drawingArea)-&gt;paint(context, area, unpaintedRegion);

When you resize the widget and the web page doesn&apos;t have time to catch up, the unpainted region will contain the parts of the page that weren&apos;t painted from the backing store. On other platforms, we paint the unpainted region with white or transparent. Does GTK+ need to do this too?

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:1320
&gt; -#if PLATFORM(MAC) || PLATFORM(WIN) || PLATFORM(QT)
&gt; +#if PLATFORM(MAC) || PLATFORM(WIN) || PLATFORM(QT) || PLATFORM(GTK)

I think this covers all our supported platforms, so this #if can be removed.

&gt; Source/WebKit2/WebProcess/WebPage/DrawingArea.cpp:48
&gt; -#if PLATFORM(MAC) || PLATFORM(WIN) || PLATFORM(QT)
&gt; +#if PLATFORM(MAC) || PLATFORM(WIN) || PLATFORM(QT) || PLATFORM(GTK)

I think this covers all our supported platforms, so this #if can be removed.

&gt; Source/WebKit2/WebProcess/WebPage/DrawingArea.h:56
&gt; -#if PLATFORM(MAC) || PLATFORM(WIN) || PLATFORM(QT)
&gt; +#if PLATFORM(MAC) || PLATFORM(WIN) || PLATFORM(QT) || PLATFORM(GTK)

I think this covers all our supported platforms, so this #if can be removed.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1968
&gt; -#if PLATFORM(MAC) || PLATFORM(WIN) || PLATFORM(QT)
&gt; +#if PLATFORM(MAC) || PLATFORM(WIN) || PLATFORM(QT) || PLATFORM(GTK)

I think this covers all our supported platforms, so this #if can be removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402934</commentid>
    <comment_count>4</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-05-12 10:26:59 -0700</bug_when>
    <thetext>(In reply to comment #2)

Thanks for the comments.

&gt; (From update of attachment 93211 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=93211&amp;action=review

&gt; &gt; Source/WebKit2/UIProcess/gtk/BackingStoreGtk.cpp:43
&gt; &gt; +    cairo_set_operator(context, CAIRO_OPERATOR_SOURCE);
&gt; Why using the source operator?

Certainly the over operator is incorrect when painting parts of the backing store?

&gt; &gt; Source/WebKit2/UIProcess/gtk/BackingStoreGtk.cpp:82
&gt; &gt; +#ifdef GTK_API_VERSION_2
&gt; &gt; +    GdkRegion* moveRegion = gdk_region_rectangle(&amp;moveRect);
&gt; &gt; +#else
&gt; &gt; +    cairo_region_t* moveRegion = cairo_region_create_rectangle(&amp;moveRect);
&gt; &gt; +#endif
&gt; 
&gt; Region is leaked. I don&apos;t think we have an OwnPtr for cairo_region_t nor GdkRegion, so we should either add them and use OwnPtr here or call cairo_region_destroy()/gdk_region_destroy() after gdk_window_move_region()

Nice catch. I&apos;ll just add an #ifdef&apos;d free here and then fix the entire situation in a followup patch. I have an idea that I&apos;ve been putting off for months.

&gt; &gt; Source/WebKit2/UIProcess/gtk/BackingStoreGtk.cpp:85
&gt; &gt; +    gdk_window_move_region(gtk_widget_get_window(m_webPageProxy-&gt;viewWidget()), moveRegion,
&gt; &gt; +                           scrollOffset.width(), scrollOffset.height());
&gt; 
&gt; Maybe we should call gdk_window_process_updates() here so that expose events are sent synchronously.

I&apos;d like to keep the behavior asynchronous here to match other ports. If we run into trouble in the future, I&apos;ll be happy to explore doing the redraw synchronously.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402937</commentid>
    <comment_count>5</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-05-12 10:28:11 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 93211 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=93211&amp;action=review

Thanks for the comments.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:154
&gt; &gt; +    WebKit::Region unpaintedRegion; // This is simply unused.
&gt; &gt; +    static_cast&lt;DrawingAreaProxyImpl*&gt;(drawingArea)-&gt;paint(context, area, unpaintedRegion);

&gt; When you resize the widget and the web page doesn&apos;t have time to catch up, the unpainted region will contain the parts of the page that weren&apos;t painted from the backing store. On other platforms, we paint the unpainted region with white or transparent. Does GTK+ need to do this too?

Right now it seems the unpainted areas are painted black. Would it make sense to do a white repaint in a followup patch? The logic deciding whether or not the window is transparent might be tricky.

&gt; &gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:1320
&gt; &gt; -#if PLATFORM(MAC) || PLATFORM(WIN) || PLATFORM(QT)
&gt; &gt; +#if PLATFORM(MAC) || PLATFORM(WIN) || PLATFORM(QT) || PLATFORM(GTK)
&gt; 
&gt; I think this covers all our supported platforms, so this #if can be removed.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/DrawingArea.cpp:48
&gt; &gt; -#if PLATFORM(MAC) || PLATFORM(WIN) || PLATFORM(QT)
&gt; &gt; +#if PLATFORM(MAC) || PLATFORM(WIN) || PLATFORM(QT) || PLATFORM(GTK)
&gt; 
&gt; I think this covers all our supported platforms, so this #if can be removed.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/DrawingArea.h:56
&gt; &gt; -#if PLATFORM(MAC) || PLATFORM(WIN) || PLATFORM(QT)
&gt; &gt; +#if PLATFORM(MAC) || PLATFORM(WIN) || PLATFORM(QT) || PLATFORM(GTK)
&gt; 
&gt; I think this covers all our supported platforms, so this #if can be removed.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1968
&gt; &gt; -#if PLATFORM(MAC) || PLATFORM(WIN) || PLATFORM(QT)
&gt; &gt; +#if PLATFORM(MAC) || PLATFORM(WIN) || PLATFORM(QT) || PLATFORM(GTK)
&gt; 
&gt; I think this covers all our supported platforms, so this #if can be removed.

Fixed all of these!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402939</commentid>
    <comment_count>6</comment_count>
      <attachid>93301</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-05-12 10:32:13 -0700</bug_when>
    <thetext>Created attachment 93301
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403082</commentid>
    <comment_count>7</comment_count>
      <attachid>93301</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-05-12 12:41:16 -0700</bug_when>
    <thetext>Comment on attachment 93301
Patch

I have discovered that with this version of my patch, it is possible for the backing store and the window to get out of sync leading to rendering errors. :( Will post a new patch soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403580</commentid>
    <comment_count>8</comment_count>
      <attachid>93458</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-05-13 09:06:33 -0700</bug_when>
    <thetext>Created attachment 93458
Patch without scrolling artifacts</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403630</commentid>
    <comment_count>9</comment_count>
      <attachid>93458</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-05-13 10:12:15 -0700</bug_when>
    <thetext>Comment on attachment 93458
Patch without scrolling artifacts

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

&gt; Source/WebKit2/UIProcess/gtk/BackingStoreGtk.cpp:102
&gt; +    GdkRectangle invalidatedRect = targetRect;
&gt; +    gdk_window_invalidate_rect(gtk_widget_get_window(m_webPageProxy-&gt;viewWidget()),
&gt; +                               &amp;invalidatedRect, FALSE);
&gt; +}

This is not needed. Instead, you should implement PageClientImpl::scrollView which will be called automatically after the backing store has been updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403660</commentid>
    <comment_count>10</comment_count>
      <attachid>93481</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-05-13 10:44:50 -0700</bug_when>
    <thetext>Created attachment 93481
Patch which also implements PageClientImpl::scrollView</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403664</commentid>
    <comment_count>11</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-05-13 10:47:21 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 93458 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=93458&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/gtk/BackingStoreGtk.cpp:102
&gt; &gt; +    GdkRectangle invalidatedRect = targetRect;
&gt; &gt; +    gdk_window_invalidate_rect(gtk_widget_get_window(m_webPageProxy-&gt;viewWidget()),
&gt; &gt; +                               &amp;invalidatedRect, FALSE);
&gt; &gt; +}
&gt; 
&gt; This is not needed. Instead, you should implement PageClientImpl::scrollView which will be called automatically after the backing store has been updated.

Thanks for the quick review. I&apos;ve updated the patch to implement a version of PageClientImpl::scrollView that just calls into PageClientImpl::setViewNeedsDisplay like the Windows port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404747</commentid>
    <comment_count>12</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-05-16 15:08:06 -0700</bug_when>
    <thetext>Committed r86612: &lt;http://trac.webkit.org/changeset/86612&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93211</attachid>
            <date>2011-05-11 16:37:26 -0700</date>
            <delta_ts>2011-05-12 10:32:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59655-20110511163726.patch</filename>
            <type>text/plain</type>
            <size>27183</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODYyNDcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAxYWQzMGYyYmExYTVmMGEy
NTNiYWIxZDc3Y2YzMmI0NDQ2YTg4ZDcxLi42OTllNTI1ZjVjNTgxMzQyNGU3NmMzY2ZhMjVmYjIx
MWE0MGZmNDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNTQgQEAKIDIwMTEtMDUtMTEgIE1hcnRp
biBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdUSyBwb3J0IG9mIFdlYktpdDIgc2hvdWxkIHN3
aXRjaCB0byBuZXcgRHJhd2luZ0FyZWFJbXBsIG1vZGVsCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTY1NQorCisgICAgICAgICogR05VbWFrZWZpbGUu
YW06IEFkZCB0aGUgZmlsZXMgbmVjZXNzYXJ5IHRvIHVzZSB0aGUgRHJhd2luZ0FyZWFQcm94eUlt
cGwKKyAgICAgICAgdG8gdGhlIHNvdXJjZSBsaXN0LiBUaGUgc291cmNlIGxpc3QgYWxzbyBuZWVk
cyB0aGUgTGF5ZXJDb250ZXh0VHJlZSBzdHVicy4KKyAgICAgICAgKiBTaGFyZWQvTGF5ZXJUcmVl
Q29udGV4dC5oOiBUaGlzIGZpbGUgc2hvdWxkIG5vdCBiZSBndWFyZGVkIGJ5CisgICAgICAgIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgYXMgaXQncyBuZWVkZWQgZm9yIHRoZSBEcmF3aW5n
QXJlYVByb3h5SW1wbAorICAgICAgICBJUEMgbWVzc2FnaW5nLgorICAgICAgICAqIFNoYXJlZC9n
dGsvTGF5ZXJUcmVlQ29udGV4dEd0ay5jcHA6IEFkZGVkIHRoaXMgc3R1Yi4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VDbGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KTogSW5zdGVhZCBvZiBjcmVhdGlu
ZyB0aGUgZGVwcmVjYXRlZAorICAgICAgICBjaHVua2VkIGRyYXdpbmcgYXJlYSwgY3JlYXRlIGEg
RHJhd2luZ0FyZWFQcm94eUltcGwuCisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpz
ZXRWaWV3TmVlZHNEaXNwbGF5KTogSGVyZSB3ZSBtdXN0IG5vdyBxdWV1ZSBhIHJlZHJhdy4gUHJl
dmlvdXNseQorICAgICAgICB0aGUgY2h1bmtlZCBkcmF3aW5nIGFyZWEgd2FzIGRvaW5nIHRoaXMg
bWFudWFsbHkuIFRoaXMgaXMgdGhlIGFwcHJvcHJpYXRlIHBsYWNlIHRob3VnaC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oOiBBZGRlZCBhIGdldHRlciBmb3Ig
bV92aWV3V2lkZ2V0LgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6dmlld1dpZGdl
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgor
ICAgICAgICAoY2FsbERyYXdpbmdBcmVhUGFpbnRNZXRob2QpOiBBZGRlZCB0aGlzIGhlbHBlciB3
aGljaCByZWR1Y2VzIGNvZGUgZHVwbGljYXRpb24gYmV0d2VlbgorICAgICAgICBHVEsrIDIueCBh
bmQgMy54CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUV4cG9zZSk6IENhbGwgdGhlIG5ldyBo
ZWxwZXIgbm93LgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VEcmF3KTogRGl0dG8uCisgICAg
ICAgICogVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5oOiBVcGRhdGVkIHRvIGluY2x1ZGUgR1RLKyBz
cGVjaWZpYyB0eXBlcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oOiBE
aXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5tZXNzYWdlcy5pbjog
RG8gbm90IHRoZSBEcmF3aW5nQXJlYVByb3h5SW1wbC1zcGVjaWZpYworICAgICAgICAgbWVzc2Fn
ZSB3aXRoIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykuCisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHA6IFVwZGF0ZWQgZ3VhcmRzIHRvIGluY2x1ZGUgR1RLKy4uCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOiBEaXR0by4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6IERpdHRvLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9ndGsvQmFja2luZ1N0b3JlR3RrLmNwcDogQWRkZWQuIFRoaXMgaW1wbGVtZW50YXRpb24g
aGVhdmlseSB1c2VzIENhaXJvLAorICAgICAgICBidXQgZGVwZW5kcyBvbiBHVEsrL0dESyBpbiBh
IGZldyBwbGFjZXMuCisgICAgICAgIChXZWJLaXQ6OkJhY2tpbmdTdG9yZTo6cGFpbnQpOgorICAg
ICAgICAoV2ViS2l0OjpCYWNraW5nU3RvcmU6OmluY29ycG9yYXRlVXBkYXRlKToKKyAgICAgICAg
KFdlYktpdDo6QmFja2luZ1N0b3JlOjpzY3JvbGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsv
V2ViUGFnZVByb3h5R3RrLmNwcDogQWRkZWQgYSBnZXR0aW5nIGZvciB0aGUgdmlld1dpZGdldCwg
d2hpY2ggaXMKKyAgICAgICAgcmVxdWlyZWQgYnkgQmFja2luZ1N0b3JlR3RrLiBBIHNpbWlsYXIg
Z2V0dGVyIGV4aXN0cyBmb3IgV2luZG93cyBhbmQgTWFjLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnZpZXdXaWRnZXQpOiBEaXR0by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvRHJhd2luZ0FyZWEuY3BwOiBVcGRhdGVkIGd1YXJkcyB0byBpbmNsdWRlIEdUSysuCisgICAg
ICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjpjcmVhdGUpOiBEaXR0by4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaDogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdB
cmVhSW1wbDo6c2VuZERpZFVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRlKTogRG8gbm90IGd1YXJkCisg
ICAgICAgIHRoaXMgRHJhd2luZ0FyZWFQcm94eUltcGwtc3BlY2lmaWMgbWVzc2FnZSB3aXRoIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHA6IFVwZGF0ZWQgZ3VhcmQgdG8gaW5jbHVkZSBHVEsrLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpkaWRSZWNlaXZlTWVzc2FnZSk6IERpdHRvLgorCisyMDExLTA1LTExICBN
YXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKwogICAgICAgICBUcnkgdG8g
Zml4IHRoZSBXaW5DYWlybyBidWlsZC4KIAogICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRt
YXAuaDogQ29ycmVjdGx5IGluY2x1ZGUgUmVmUHRyQ2Fpcm8gaGVyZSBhbmQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZp
bGUuYW0KaW5kZXggYzA5YTY5NDYwYjgxNjg0ZDBmOWU4M2MyYjc2Y2EwYWJkMmZmMmY3NC4uNzU2
ZDJlM2U0NDM2MDM1OWRmMzY2YjM0ZTM2MzdhNTdjZmIwNDU4NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUu
YW0KQEAgLTEwMiw2ICsxMDIsOCBAQCBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9S
X1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX1NPVQogCVNvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL01vZHVsZS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL01v
ZHVsZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9QbGF0Zm9ybVByb2Nlc3NJZGVudGlm
aWVyLmggXAorCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1JlZ2lvbi5jcHAgXAorCVNvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL1JlZ2lvbi5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9SdW5M
b29wLmNwcCBcCiAJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vUnVuTG9vcC5oIFwKIAlTb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaCBcCkBAIC0xODMsNiArMTg1LDcgQEAgbGli
d2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9N
SU5PUl9WRVJTSU9OQF9sYV9TT1UKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRWRpdG9yU3RhdGUu
aCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL0ZvbnRTbW9vdGhpbmdMZXZlbC5oIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwIFwKKwlTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL0xheWVyVHJlZUNvbnRleHRHdGsuY3BwIFwKIAlTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYktleWJvYXJkRXZlbnRHdGsuY3BwIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRHdGsuY3BwIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYldoZWVsRXZlbnRHdGsuY3BwIFwKQEAgLTIz
Nyw2ICsyNDAsOCBAQCBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05A
X0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX1NPVQogCVNvdXJjZS9XZWJLaXQyL1No
YXJlZC9TdHJpbmdQYWlyVmVjdG9yLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9UZXh0Q2hl
Y2tlclN0YXRlLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Vc2VyTWVzc2FnZUNvZGVycy5o
IFwKKwlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXBkYXRlSW5mby5jcHAgXAorCVNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9VcGRhdGVJbmZvLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9WaXNpdGVk
TGlua1RhYmxlLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1Zpc2l0ZWRMaW5rVGFibGUu
aCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwIFwK
QEAgLTM2NiwxMiArMzcxLDE2IEBAIGxpYndlYmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFKT1Jf
VkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfU09VCiAJU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYkNyZWRlbnRpYWwuaCBcCiAJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYlByb3RlY3Rpb25TcGFjZS5jcHAg
XAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJQcm90ZWN0aW9u
U3BhY2UuaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5jcHAgXAor
CVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9CYWNraW5nU3RvcmUuaCBcCiAJU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5LmNwcCBcCiAJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5LmggXAogCVNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAgXAogCVNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAgXAogCVNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmggXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9EcmF3aW5nQXJlYVByb3h5SW1wbC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRmlu
ZEluZGljYXRvci5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9GaW5kSW5kaWNhdG9y
LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaCBcCkBAIC0z
NzksNiArMzg4LDcgQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9O
QF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9TT1UKIAlTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIFwKIAlT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5
LmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RQcm94eS5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0JhY2tpbmdTdG9y
ZUd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQ2h1bmtlZFVwZGF0ZURy
YXdpbmdBcmVhUHJveHlHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1Rl
eHRDaGVja2VyR3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb250
ZXh0R3RrLmNwcCBcCkBAIC02NTMsNiArNjYzLDcgQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RL
X0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9TT1UK
IAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRGVjb2RlckFkYXB0ZXIuaCBcCiAJ
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcCBcCiAJU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmggXAorCVNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwIFwKIAlTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRW5jb2RlckFkYXB0ZXIuY3BwIFwKIAlTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRW5jb2RlckFkYXB0ZXIuaCBcCiAJU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcCBcCkBAIC02NjAsNiAr
NjcxLDcgQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VC
S0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9TT1UKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvZ3RrL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYUd0ay5jcHAgXAogCVNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViSW5zcGVjdG9yR3RrLmNwcCBcCiAJ
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcCBcCisJ
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuY3BwIFwKIAlT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXkuY3BwIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXkuaCBcCiAJU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1RpbGVkRHJhd2luZ0FyZWEuY3BwIFwKQEAgLTgwOSw2
ICs4MjEsMTAgQEAgcGtnY29uZmlnX0RBVEEgKz0gU291cmNlL1dlYktpdDIvZ3RrL0BXRUJLSVRH
VEtfUENfTkFNRUAyLUBXRUJLSVRHVEtfQVBJX1ZFUlNJT04KIHdlYmtpdDJfYnVpbHRfc291cmNl
cyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9BdXRoZW50aWNhdGlvbk1hbmFnZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJLaXQyL0F1dGhlbnRpY2F0aW9u
TWFuYWdlck1lc3NhZ2VzLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYktpdDIvRHJhd2luZ0FyZWFN
ZXNzYWdlUmVjZWl2ZXIuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJLaXQyL0RyYXdpbmdBcmVh
TWVzc2FnZXMuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9EcmF3aW5nQXJlYVByb3h5TWVz
c2FnZXMuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9EcmF3aW5nQXJlYVByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9Eb3dubG9hZFByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9Eb3dubG9hZFByb3h5
TWVzc2FnZXMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9OUE9iamVjdE1lc3NhZ2VSZWNl
aXZlck1lc3NhZ2VSZWNlaXZlci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0xheWVyVHJlZUNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9MYXllclRyZWVD
b250ZXh0LmgKaW5kZXggMjMzYjdhZWQ2YTNmNmU5NjQ2MTc2YmMyNThkZjQxMzljYzA0M2VlNC4u
MGZiNTUyYTY0NmE4OTBmZmM4MWY2YjVmZTdmZmE1YTc4YzEzM2E0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0xheWVyVHJlZUNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvTGF5ZXJUcmVlQ29udGV4dC5oCkBAIC0zMSw4ICszMSw2IEBAIG5hbWVzcGFjZSBD
b3JlSVBDIHsKICAgICBjbGFzcyBBcmd1bWVudEVuY29kZXI7CiB9CiAKLSNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCi0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBMYXllclRy
ZWVDb250ZXh0IHsKQEAgLTU5LDYgKzU3LDQgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBMYXllclRyZWVDb250ZXh0JiBhLCBjb25zdCBMYXllclRyZWVDb250ZXh0JiBiKQogCiB9Owog
Ci0jZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotCiAjZW5kaWYgLy8gTGF5
ZXJUcmVlQ29udGV4dF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL0xh
eWVyVHJlZUNvbnRleHRHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9MYXllclRy
ZWVDb250ZXh0R3RrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMWJmMWI0MTYzMDA1YzIwZmM1YzIzZDdhZjBk
MDc4M2JlYjFmN2I4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0
ay9MYXllclRyZWVDb250ZXh0R3RrLmNwcApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxheWVyVHJlZUNvbnRleHQuaCIKKworI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitMYXllclRy
ZWVDb250ZXh0OjpMYXllclRyZWVDb250ZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCitMYXllclRyZWVDb250ZXh0Ojp+TGF5ZXJUcmVlQ29udGV4dCgpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwordm9pZCBMYXllclRyZWVDb250ZXh0OjplbmNvZGUoQ29yZUlQQzo6
QXJndW1lbnRFbmNvZGVyKikgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiti
b29sIExheWVyVHJlZUNvbnRleHQ6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBM
YXllclRyZWVDb250ZXh0JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiB0
cnVlOworfQorCitib29sIExheWVyVHJlZUNvbnRleHQ6OmlzRW1wdHkoKSBjb25zdAoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgb3BlcmF0b3I9
PShjb25zdCBMYXllclRyZWVDb250ZXh0JiwgY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9Q
YWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdl
Q2xpZW50SW1wbC5jcHAKaW5kZXggYmIxYTczMWVjNDE4M2NjYTA2NmEyYjkyNWM2NGE4YzQ4MWVk
ZTQ4MS4uMWMxZWUxMGRmZmZkMGI5NmY1ZDk3ZDk0MTEwOTQ0MTg4OTc3NTU4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcApA
QCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBhZ2VDbGll
bnRJbXBsLmgiCiAKLSNpbmNsdWRlICJDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eS5oIgor
I2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHlJbXBsLmgiCiAjaW5jbHVkZSAiTmF0aXZlV2ViS2V5
Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYk1vdXNlRXZlbnQuaCIKICNpbmNsdWRl
ICJOb3RJbXBsZW1lbnRlZC5oIgpAQCAtMjkwLDEzICsyOTAsMTIgQEAgdm9pZCBQYWdlQ2xpZW50
SW1wbDo6Z2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2Fy
ZEV2ZW50JgogLy8gUGFnZUNsaWVudCdzIHB1cmUgdmlydHVhbCBmdW5jdGlvbnMKIFBhc3NPd25Q
dHI8RHJhd2luZ0FyZWFQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZURyYXdpbmdBcmVhUHJv
eHkoKQogewotICAgIFdlYktpdFdlYlZpZXdCYXNlKiB2aWV3ID0gV0VCS0lUX1dFQl9WSUVXX0JB
U0UobV92aWV3V2lkZ2V0KTsKLSAgICByZXR1cm4gQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJv
eHk6OmNyZWF0ZSh2aWV3LCB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UodmlldykpOworICAgIHJl
dHVybiBEcmF3aW5nQXJlYVByb3h5SW1wbDo6Y3JlYXRlKHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFn
ZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdXaWRnZXQpKSk7CiB9CiAKLXZvaWQgUGFnZUNs
aWVudEltcGw6OnNldFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpCit2
b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIHJlY3QpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBndGtfd2lkZ2V0X3F1
ZXVlX2RyYXdfYXJlYShtX3ZpZXdXaWRnZXQsIHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0
aCgpLCByZWN0LmhlaWdodCgpKTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlzcGxheVZp
ZXcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNs
aWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJ
bXBsLmgKaW5kZXggZjIwY2FhNzMwYWNiODQwMzczNDg0ODExMjk3YTNhYjEzMzhlNzI0NS4uNjc2
NTA3Yjk4MmQ2Mzc5ZjgzYjIzM2Y0NjlhODM2YzNmYTU0MGNlOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCkBAIC00Nyw2ICs0Nyw4
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQYWdlQ2xpZW50SW1wbCh2
aWV3V2lkZ2V0KSk7CiAgICAgfQogCisgICAgR3RrV2lkZ2V0KiB2aWV3V2lkZ2V0KCkgeyByZXR1
cm4gbV92aWV3V2lkZ2V0OyB9CisKICAgICB2b2lkIGFkZFBlbmRpbmdFZGl0b3JDb21tYW5kKGNv
bnN0IGNoYXIqIGNvbW1hbmQpIHsgbV9wZW5kaW5nRWRpdG9yQ29tbWFuZHMuYXBwZW5kKFdURjo6
U3RyaW5nKGNvbW1hbmQpKTsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmluZGV4IDJhNDFjZWEw
Mjg1ZDg5NDZkYzgxNGE2NGFhNjNkNjQzYzU1OWFiMGUuLmJjMzdjYjkwMjE0YjBiM2I2OTc0N2Fj
OWMwMzM0YjZmNzRiYTk4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3QmFzZS5oIgogCisjaW5jbHVk
ZSAiRHJhd2luZ0FyZWFQcm94eUltcGwuaCIKICNpbmNsdWRlICJHT3duUHRyR3RrLmgiCiAjaW5j
bHVkZSAiR3RrQ2xpY2tDb3VudGVyLmgiCiAjaW5jbHVkZSAiR3RrVmVyc2lvbmluZy5oIgpAQCAt
MzcsNiArMzgsNyBAQAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGFn
ZUNsaWVudEltcGwuaCIKICNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgorI2luY2x1ZGUgIlJlZ2lv
bi5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJFdmVudEZhY3Rvcnku
aCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaCIKQEAgLTE0NiwzMCArMTQ4
LDMwIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19iYXNlX2luaXQoV2ViS2l0V2ViVmll
d0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlKQogICAgIHByaXYtPnBhZ2VDbGllbnQgPSBQYWdlQ2xp
ZW50SW1wbDo6Y3JlYXRlKEdUS19XSURHRVQod2Via2l0V2ViVmlld0Jhc2UpKTsKIH0KIAorc3Rh
dGljIHZvaWQgY2FsbERyYXdpbmdBcmVhUGFpbnRNZXRob2QoRHJhd2luZ0FyZWFQcm94eSogZHJh
d2luZ0FyZWEsIGNhaXJvX3QqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGFyZWEpCit7CisgICAg
V2ViS2l0OjpSZWdpb24gdW5wYWludGVkUmVnaW9uOyAvLyBUaGlzIGlzIHNpbXBseSB1bnVzZWQu
CisgICAgc3RhdGljX2Nhc3Q8RHJhd2luZ0FyZWFQcm94eUltcGwqPihkcmF3aW5nQXJlYSktPnBh
aW50KGNvbnRleHQsIGFyZWEsIHVucGFpbnRlZFJlZ2lvbik7Cit9CisKICNpZmRlZiBHVEtfQVBJ
X1ZFUlNJT05fMgogc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdCYXNlRXhwb3NlKEd0a1dp
ZGdldCogd2lkZ2V0LCBHZGtFdmVudEV4cG9zZSogZXZlbnQpCiB7Ci0gICAgV2ViS2l0V2ViVmll
d0Jhc2UqIHdlYlZpZXdCYXNlID0gV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2lkZ2V0KTsKLQogICAg
IEdka1JlY3RhbmdsZSBjbGlwUmVjdDsKICAgICBnZGtfcmVnaW9uX2dldF9jbGlwYm94KGV2ZW50
LT5yZWdpb24sICZjbGlwUmVjdCk7CiAKICAgICBSZWZQdHI8Y2Fpcm9fdD4gY3IgPSBhZG9wdFJl
ZihnZGtfY2Fpcm9fY3JlYXRlKGd0a193aWRnZXRfZ2V0X3dpbmRvdyh3aWRnZXQpKSk7Ci0gICAg
d2ViVmlld0Jhc2UtPnByaXYtPnBhZ2VQcm94eS0+ZHJhd2luZ0FyZWEoKS0+cGFpbnQoY2xpcFJl
Y3QsIGNyLmdldCgpKTsKLQorICAgIGNhbGxEcmF3aW5nQXJlYVBhaW50TWV0aG9kKFdFQktJVF9X
RUJfVklFV19CQVNFKHdpZGdldCktPnByaXYtPnBhZ2VQcm94eS0+ZHJhd2luZ0FyZWEoKSwgY3Iu
Z2V0KCksIGNsaXBSZWN0KTsKICAgICByZXR1cm4gRkFMU0U7CiB9CiAjZWxzZQogc3RhdGljIGdi
b29sZWFuIHdlYmtpdFdlYlZpZXdCYXNlRHJhdyhHdGtXaWRnZXQqIHdpZGdldCwgY2Fpcm9fdCog
Y3IpCiB7Ci0gICAgV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlID0gV0VCS0lUX1dFQl9W
SUVXX0JBU0Uod2lkZ2V0KTsKLQogICAgIEdka1JlY3RhbmdsZSBjbGlwUmVjdDsKICAgICBpZiAo
IWdka19jYWlyb19nZXRfY2xpcF9yZWN0YW5nbGUoY3IsICZjbGlwUmVjdCkpCiAgICAgICAgIHJl
dHVybiBGQUxTRTsKIAotICAgIHdlYlZpZXdCYXNlLT5wcml2LT5wYWdlUHJveHktPmRyYXdpbmdB
cmVhKCktPnBhaW50KGNsaXBSZWN0LCBjcik7Ci0KKyAgICBjYWxsRHJhd2luZ0FyZWFQYWludE1l
dGhvZChXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRnZXQpLT5wcml2LT5wYWdlUHJveHktPmRyYXdp
bmdBcmVhKCksIGNyLCBjbGlwUmVjdCk7CiAgICAgcmV0dXJuIEZBTFNFOwogfQogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQmFja2luZ1N0b3JlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQmFja2luZ1N0b3JlLmgKaW5kZXggOWExMTk0MmExNWZmZDUz
MjE3NTA5ODM0ZDhiYTQ4YWI0MThmODhiMC4uN2E2OWQ3YzQ0YmQ5MWViMjIyMTQyYTQxNzJlYjlk
YWNlNWZmNDUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0JhY2tpbmdT
dG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9CYWNraW5nU3RvcmUuaApAQCAt
NDEsNiArNDEsMTAgQEAKICNpbmNsdWRlIDxRdEd1aS9RUGl4bWFwPgogI2VuZGlmCiAKKyNpZiBQ
TEFURk9STShHVEspCisjaW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgorI2VuZGlmCisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBJbnRSZWN0OwogfQpAQCAtNjYsNiArNzAs
OCBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBIREMgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQ7CiAj
ZWxpZiBQTEFURk9STShRVCkKICAgICB0eXBlZGVmIFFQYWludGVyKiBQbGF0Zm9ybUdyYXBoaWNz
Q29udGV4dDsKKyNlbGlmIFBMQVRGT1JNKEdUSykKKyAgICB0eXBlZGVmIGNhaXJvX3QqIFBsYXRm
b3JtR3JhcGhpY3NDb250ZXh0OwogI2VuZGlmCiAKICAgICB2b2lkIHBhaW50KFBsYXRmb3JtR3Jh
cGhpY3NDb250ZXh0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CkBAIC04OSw2ICs5NSw4IEBA
IHByaXZhdGU6CiAgICAgT3duUHRyPEhCSVRNQVA+IG1fYml0bWFwOwogI2VsaWYgUExBVEZPUk0o
UVQpCiAgICAgUVBpeG1hcCBtX3BpeG1hcDsKKyNlbGlmIFBMQVRGT1JNKEdUSykKKyAgICBSZWZQ
dHI8Y2Fpcm9fc3VyZmFjZV90PiBtX3N1cmZhY2U7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCmluZGV4IGY1MzE3NTBhNGU2MzQ1M2Nh
NTM5MjkxNTM1NWVlYzA5MDA3ZTAzYWEuLmIyM2JhNmZjMjc2ZmE0YjdmOTk0MGNkYTdiYTE0MmVk
YmE3ZDQ1MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJl
YVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHku
aApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAKICAgICBEcmF3aW5nQXJlYVR5cGUgdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9S
TShXSU4pIHx8IFBMQVRGT1JNKFFUKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oV0lO
KSB8fCBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKQogICAgIHZvaWQgZGlkUmVjZWl2ZURy
YXdpbmdBcmVhUHJveHlNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNz
YWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5Lm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkubWVzc2FnZXMuaW4KaW5k
ZXggNzhkNTcyNGQyNDgyOWYyZjgzMmQzMjBjZTlhYmNjM2Q5YzQzMzNmNC4uNjE0NDMwZTY0YmI5
MTg1YTlmN2FkZWQ0YTNiMjliMzQ0ZTQxZmQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkubWVzc2FnZXMuaW4KQEAgLTIyLDggKzIyLDgg
QEAKIAogbWVzc2FnZXMgLT4gRHJhd2luZ0FyZWFQcm94eSB7CiAgICAgVXBkYXRlKHVpbnQ2NF90
IHN0YXRlSUQsIFdlYktpdDo6VXBkYXRlSW5mbyB1cGRhdGVJbmZvKQotI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKICAgICBEaWRVcGRhdGVCYWNraW5nU3RvcmVTdGF0ZSh1aW50NjRf
dCBiYWNraW5nU3RvcmVTdGF0ZUlELCBXZWJLaXQ6OlVwZGF0ZUluZm8gdXBkYXRlSW5mbywgV2Vi
S2l0OjpMYXllclRyZWVDb250ZXh0IGNvbnRleHQpCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQogICAgIEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUodWludDY0X3QgYmFj
a2luZ1N0b3JlU3RhdGVJRCwgV2ViS2l0OjpMYXllclRyZWVDb250ZXh0IGNvbnRleHQpCiAgICAg
RXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKHVpbnQ2NF90IGJhY2tpbmdTdG9yZVN0YXRl
SUQsIFdlYktpdDo6VXBkYXRlSW5mbyB1cGRhdGVJbmZvKQogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGUwMGUyNWM3MjJhNjA3OTVmMzI5OTA3
MGYyOGJmYTQ0ZGZhMjRlN2IuLjE2NzhkOTE2OWI0NjlkYjE1MWY5NjY3ODdjYTFmODg2ZjIxMTcw
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMzE3
LDcgKzEzMTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UmVzaXplc1RvQ29udGVudHNVc2lu
Z0xheW91dFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdAogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29y
ZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1
bWVudHMpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JN
KFFUKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oV0lOKSB8fCBQTEFURk9STShRVCkg
fHwgUExBVEZPUk0oR1RLKQogICAgIGlmIChtZXNzYWdlSUQuaXM8Q29yZUlQQzo6TWVzc2FnZUNs
YXNzRHJhd2luZ0FyZWFQcm94eT4oKSkgewogICAgICAgICBtX2RyYXdpbmdBcmVhLT5kaWRSZWNl
aXZlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBhcmd1bWVu
dHMpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKaW5kZXggMTZjMGJkMDI2NThjZDNlZGVhMzc4MTZlOThjZGVhZmNjOGFhZjZmNi4uMGQ0ZGM4
YmQ1OWM1ZTMxNTZhMzBjZGNlYTkxMzMxODU5NTk3Njk0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMzA2LDYgKzMwNiw5IEBAIHB1YmxpYzoKIAogICAgIEhX
TkQgbmF0aXZlV2luZG93KCkgY29uc3Q7CiAjZW5kaWYKKyNpZiBQTEFURk9STShHVEspCisgICAg
R3RrV2lkZ2V0KiB2aWV3V2lkZ2V0KCk7CisjZW5kaWYKICNpZiBFTkFCTEUoVElMRURfQkFDS0lO
R19TVE9SRSkKICAgICB2b2lkIHNldEFjdHVhbFZpc2libGVDb250ZW50UmVjdChjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiByZWN0KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2d0ay9CYWNraW5nU3RvcmVHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2d0ay9CYWNraW5nU3RvcmVHdGsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2N2I2ZmVhNWNhOWIwMGRk
Njg2YzExZTgxZTQ4M2IzZTU1YmVlNTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZ3RrL0JhY2tpbmdTdG9yZUd0ay5jcHAKQEAgLTAsMCArMSw4OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkJhY2tpbmdTdG9yZS5oIgorCisjaW5jbHVkZSAiU2hhcmVhYmxl
Qml0bWFwLmgiCisjaW5jbHVkZSAiVXBkYXRlSW5mby5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94
eS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CisjaW5jbHVkZSA8Y2Fp
cm8vY2Fpcm8uaD4KKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBCYWNraW5nU3RvcmU6OnBhaW50KGNh
aXJvX3QqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgY2Fpcm9fc2V0X29w
ZXJhdG9yKGNvbnRleHQsIENBSVJPX09QRVJBVE9SX1NPVVJDRSk7CisgICAgY2Fpcm9fc2V0X3Nv
dXJjZV9zdXJmYWNlKGNvbnRleHQsIG1fc3VyZmFjZS5nZXQoKSwgMCwgMCk7CisgICAgY2Fpcm9f
cmVjdGFuZ2xlKGNvbnRleHQsIHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0
LmhlaWdodCgpKTsKKyAgICBjYWlyb19maWxsKGNvbnRleHQpOworfQorCit2b2lkIEJhY2tpbmdT
dG9yZTo6aW5jb3Jwb3JhdGVVcGRhdGUoU2hhcmVhYmxlQml0bWFwKiBiaXRtYXAsIGNvbnN0IFVw
ZGF0ZUluZm8mIHVwZGF0ZUluZm8pCit7CisgICAgR3RrV2lkZ2V0KiB2aWV3V2lkZ2V0ID0gbV93
ZWJQYWdlUHJveHktPnZpZXdXaWRnZXQoKTsKKyAgICBpZiAoIW1fc3VyZmFjZSkgeworICAgICAg
ICBtX3N1cmZhY2UgPSBhZG9wdFJlZihnZGtfd2luZG93X2NyZWF0ZV9zaW1pbGFyX3N1cmZhY2Uo
Z3RrX3dpZGdldF9nZXRfd2luZG93KHZpZXdXaWRnZXQpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0FJUk9fQ09OVEVOVF9D
T0xPUl9BTFBIQSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemUoKS53aWR0aCgpLCBzaXplKCkuaGVpZ2h0KCkpKTsKKyAg
ICB9CisKKyAgICBzY3JvbGwodXBkYXRlSW5mby5zY3JvbGxSZWN0LCB1cGRhdGVJbmZvLnNjcm9s
bE9mZnNldCk7CisKKyAgICAvLyBQYWludCBhbGwgdXBkYXRlIHJlY3RzLgorICAgIEludFBvaW50
IHVwZGF0ZVJlY3RMb2NhdGlvbiA9IHVwZGF0ZUluZm8udXBkYXRlUmVjdEJvdW5kcy5sb2NhdGlv
bigpOworICAgIFJlZlB0cjxjYWlyb190PiBjb250ZXh0KGFkb3B0UmVmKGNhaXJvX2NyZWF0ZSht
X3N1cmZhY2UuZ2V0KCkpKSk7CisgICAgR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dChj
b250ZXh0LmdldCgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHVwZGF0ZUluZm8udXBk
YXRlUmVjdHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgSW50UmVjdCB1cGRhdGVSZWN0ID0gdXBk
YXRlSW5mby51cGRhdGVSZWN0c1tpXTsKKyAgICAgICAgSW50UmVjdCBzcmNSZWN0ID0gdXBkYXRl
UmVjdDsKKyAgICAgICAgc3JjUmVjdC5tb3ZlKC11cGRhdGVSZWN0TG9jYXRpb24ueCgpLCAtdXBk
YXRlUmVjdExvY2F0aW9uLnkoKSk7CisgICAgICAgIGJpdG1hcC0+cGFpbnQoZ3JhcGhpY3NDb250
ZXh0LCB1cGRhdGVSZWN0LmxvY2F0aW9uKCksIHNyY1JlY3QpOworICAgIH0KK30KKwordm9pZCBC
YWNraW5nU3RvcmU6OnNjcm9sbChjb25zdCBJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBJbnRT
aXplJiBzY3JvbGxPZmZzZXQpCit7CisgICAgaWYgKHNjcm9sbE9mZnNldC5pc1plcm8oKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgR2RrUmVjdGFuZ2xlIG1vdmVSZWN0ID0gc2Nyb2xsUmVjdDsK
KyNpZmRlZiBHVEtfQVBJX1ZFUlNJT05fMgorICAgIEdka1JlZ2lvbiogbW92ZVJlZ2lvbiA9IGdk
a19yZWdpb25fcmVjdGFuZ2xlKCZtb3ZlUmVjdCk7CisjZWxzZQorICAgIGNhaXJvX3JlZ2lvbl90
KiBtb3ZlUmVnaW9uID0gY2Fpcm9fcmVnaW9uX2NyZWF0ZV9yZWN0YW5nbGUoJm1vdmVSZWN0KTsK
KyNlbmRpZgorCisgICAgZ2RrX3dpbmRvd19tb3ZlX3JlZ2lvbihndGtfd2lkZ2V0X2dldF93aW5k
b3cobV93ZWJQYWdlUHJveHktPnZpZXdXaWRnZXQoKSksIG1vdmVSZWdpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzY3JvbGxPZmZzZXQud2lkdGgoKSwgc2Nyb2xsT2Zmc2V0LmhlaWdo
dCgpKTsKKworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcAppbmRleCA4OTQ1ZDEzYmEwZWUzNjkz
YzQ1OTU4YmFlOWFiOGU1ZmZhNGI1NmMyLi4zOTNiNGM3OTM3ZjQzZDY5ODE3NTdmYTRmM2U4YWM2
MDVmODViMWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBh
Z2VQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdl
UHJveHlHdGsuY3BwCkBAIC0yOSwxMCArMjksMTUgQEAKIAogI2luY2x1ZGUgIk5hdGl2ZVdlYktl
eWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlBh
Z2VDbGllbnQuaCIKKyNpbmNsdWRlICJQYWdlQ2xpZW50SW1wbC5oIgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAorR3RrV2lkZ2V0KiBXZWJQYWdlUHJveHk6OnZpZXdXaWRnZXQoKQoreworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxQYWdlQ2xpZW50SW1wbCo+KG1fcGFnZUNsaWVudCktPnZpZXdXaWRn
ZXQoKTsKK30KKwogU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RhbmRhcmRVc2VyQWdlbnQoY29uc3Qg
U3RyaW5nJiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQpCiB7CiAgICAgLy8gRklYTUU6IFRo
aXMgc2hvdWxkIG5vdCBiZSBoYXJkIGNvZGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKaW5kZXggYmFmMGYzYTRhOGJhODdiNTg5Mjc1
ZTUzNTg2YmIyNWZiN2Q5M2U4Mi4uNDkzYjRlZjU3NzcwNGQyNWMwNjZlZGU5ZDBjM2UxMGY3MTEw
ZGE1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdp
bmdBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2lu
Z0FyZWEuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAvLyBTdWJjbGFzc2VzCiAjaW5jbHVkZSAiQ2h1
bmtlZFVwZGF0ZURyYXdpbmdBcmVhLmgiCiAKLSNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JN
KFdJTikgfHwgUExBVEZPUk0oUVQpCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShXSU4p
IHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFJ
bXBsLmgiCiAjZW5kaWYKIApAQCAtNDUsNyArNDUsNyBAQCBQYXNzT3duUHRyPERyYXdpbmdBcmVh
PiBEcmF3aW5nQXJlYTo6Y3JlYXRlKFdlYlBhZ2UqIHdlYlBhZ2UsIGNvbnN0IFdlYlBhZ2VDcmVh
dAogewogICAgIHN3aXRjaCAocGFyYW1ldGVycy5kcmF3aW5nQXJlYVR5cGUpIHsKICAgICBjYXNl
IERyYXdpbmdBcmVhVHlwZUltcGw6Ci0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShXSU4p
IHx8IFBMQVRGT1JNKFFUKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oV0lOKSB8fCBQ
TEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKQogICAgICAgICByZXR1cm4gRHJhd2luZ0FyZWFJ
bXBsOjpjcmVhdGUod2ViUGFnZSwgcGFyYW1ldGVycyk7CiAjZWxzZQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9E
cmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdB
cmVhLmgKaW5kZXggM2Q4N2EyYTQ0MDAzMGNhYTQ2NTY3NzA5ODdiZmIwZWU5MjQ0ZGZmMS4uMmU4
MGVjMDllMGNmMzcwZmE1YmEzYTQxMmU2MjU0Y2Y4ZDMxMjQyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKQEAgLTUzLDcgKzUzLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPERyYXdpbmdBcmVhPiBjcmVhdGUoV2ViUGFn
ZSosIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmKTsKICAgICB2aXJ0dWFsIH5EcmF3
aW5nQXJlYSgpOwogICAgIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oV0lOKSB8fCBQ
TEFURk9STShRVCkKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFdJTikgfHwgUExBVEZP
Uk0oUVQpIHx8IFBMQVRGT1JNKEdUSykKICAgICB2b2lkIGRpZFJlY2VpdmVEcmF3aW5nQXJlYU1l
c3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6
QXJndW1lbnREZWNvZGVyKik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcAppbmRleCA5M2E0NmVmMTY1NTcz
NWQ3N2U2YmUzMWNjYzY1N2ZiYjMxNDBjMmZiLi42OTc4NGVjZWJhNGRmYWYyMjJmNTkyMzIxMTFl
MTU5NTRhNGY5MmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvRHJhd2luZ0FyZWFJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcApAQCAtMzE4LDcgKzMxOCw2IEBAIHZvaWQgRHJhd2lu
Z0FyZWFJbXBsOjpzZW5kRGlkVXBkYXRlQmFja2luZ1N0b3JlU3RhdGUoKQogICAgIGlmICghbV9p
c1BhaW50aW5nU3VzcGVuZGVkICYmICghbV9sYXllclRyZWVIb3N0IHx8IG1fbGF5ZXJUcmVlSG9z
dC0+cGFydGljaXBhdGVzSW5EaXNwbGF5KCkpKQogICAgICAgICBkaXNwbGF5KHVwZGF0ZUluZm8p
OwogCi0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIExheWVyVHJlZUNvbnRl
eHQgbGF5ZXJUcmVlQ29udGV4dDsKIAogICAgIGlmIChtX2lzUGFpbnRpbmdTdXNwZW5kZWQgfHwg
KG1fbGF5ZXJUcmVlSG9zdCAmJiAhbV9sYXllclRyZWVIb3N0LT5wYXJ0aWNpcGF0ZXNJbkRpc3Bs
YXkoKSkpIHsKQEAgLTMzOCw3ICszMzcsNiBAQCB2b2lkIERyYXdpbmdBcmVhSW1wbDo6c2VuZERp
ZFVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRlKCkKIAogICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdl
czo6RHJhd2luZ0FyZWFQcm94eTo6RGlkVXBkYXRlQmFja2luZ1N0b3JlU3RhdGUobV9iYWNraW5n
U3RvcmVTdGF0ZUlELCB1cGRhdGVJbmZvLCBsYXllclRyZWVDb250ZXh0KSk7CiAgICAgbV9jb21w
b3NpdGluZ0FjY29yZGluZ1RvUHJveHlNZXNzYWdlcyA9ICFsYXllclRyZWVDb250ZXh0LmlzRW1w
dHkoKTsKLSNlbmRpZgogfQogCiB2b2lkIERyYXdpbmdBcmVhSW1wbDo6ZGlkVXBkYXRlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBjYTgx
MWZmZjgxNzZmNGM0ZDBkMjQwYTVlNjFlNDMwYTg4MzViYjk5Li45OWY0MTQ2MWIzZjUwMzhjMmU4
YzM1MjMwNGViZjA0ZDE1YmQ4ODE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xOTY1LDcgKzE5NjUsNyBAQCB2b2lkIFdlYlBhZ2U6OmRp
ZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6
Ok1lc3NhZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBQ
TEFURk9STShXSU4pIHx8IFBMQVRGT1JNKFFUKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZP
Uk0oV0lOKSB8fCBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKQogICAgIGlmIChtZXNzYWdl
SUQuaXM8Q29yZUlQQzo6TWVzc2FnZUNsYXNzRHJhd2luZ0FyZWE+KCkpIHsKICAgICAgICAgaWYg
KG1fZHJhd2luZ0FyZWEpCiAgICAgICAgICAgICBtX2RyYXdpbmdBcmVhLT5kaWRSZWNlaXZlRHJh
d2luZ0FyZWFNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgYXJndW1lbnRzKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93301</attachid>
            <date>2011-05-12 10:32:13 -0700</date>
            <delta_ts>2011-05-12 12:41:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59655-20110512103207.patch</filename>
            <type>text/plain</type>
            <size>27804</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODYyNDcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAxYWQzMGYyYmExYTVmMGEy
NTNiYWIxZDc3Y2YzMmI0NDQ2YTg4ZDcxLi5kMzg0OTNiZDAyODljM2M1NzFjNDRhZmUxODg3NGIy
MTk4MDdiYzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNTQgQEAKIDIwMTEtMDUtMTEgIE1hcnRp
biBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdUSyBwb3J0IG9mIFdlYktpdDIgc2hvdWxkIHN3
aXRjaCB0byBuZXcgRHJhd2luZ0FyZWFJbXBsIG1vZGVsCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTY1NQorCisgICAgICAgICogR05VbWFrZWZpbGUu
YW06IEFkZCB0aGUgZmlsZXMgbmVjZXNzYXJ5IHRvIHVzZSB0aGUgRHJhd2luZ0FyZWFQcm94eUlt
cGwKKyAgICAgICAgdG8gdGhlIHNvdXJjZSBsaXN0LiBUaGUgc291cmNlIGxpc3QgYWxzbyBuZWVk
cyB0aGUgTGF5ZXJDb250ZXh0VHJlZSBzdHVicy4KKyAgICAgICAgKiBTaGFyZWQvTGF5ZXJUcmVl
Q29udGV4dC5oOiBUaGlzIGZpbGUgc2hvdWxkIG5vdCBiZSBndWFyZGVkIGJ5CisgICAgICAgIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgYXMgaXQncyBuZWVkZWQgZm9yIHRoZSBEcmF3aW5n
QXJlYVByb3h5SW1wbAorICAgICAgICBJUEMgbWVzc2FnaW5nLgorICAgICAgICAqIFNoYXJlZC9n
dGsvTGF5ZXJUcmVlQ29udGV4dEd0ay5jcHA6IEFkZGVkIHRoaXMgc3R1Yi4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VDbGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KTogSW5zdGVhZCBvZiBjcmVhdGlu
ZyB0aGUgZGVwcmVjYXRlZAorICAgICAgICBjaHVua2VkIGRyYXdpbmcgYXJlYSwgY3JlYXRlIGEg
RHJhd2luZ0FyZWFQcm94eUltcGwuCisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpz
ZXRWaWV3TmVlZHNEaXNwbGF5KTogSGVyZSB3ZSBtdXN0IG5vdyBxdWV1ZSBhIHJlZHJhdy4gUHJl
dmlvdXNseQorICAgICAgICB0aGUgY2h1bmtlZCBkcmF3aW5nIGFyZWEgd2FzIGRvaW5nIHRoaXMg
bWFudWFsbHkuIFRoaXMgaXMgdGhlIGFwcHJvcHJpYXRlIHBsYWNlIHRob3VnaC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oOiBBZGRlZCBhIGdldHRlciBmb3Ig
bV92aWV3V2lkZ2V0LgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6dmlld1dpZGdl
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgor
ICAgICAgICAoY2FsbERyYXdpbmdBcmVhUGFpbnRNZXRob2QpOiBBZGRlZCB0aGlzIGhlbHBlciB3
aGljaCByZWR1Y2VzIGNvZGUgZHVwbGljYXRpb24gYmV0d2VlbgorICAgICAgICBHVEsrIDIueCBh
bmQgMy54CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUV4cG9zZSk6IENhbGwgdGhlIG5ldyBo
ZWxwZXIgbm93LgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VEcmF3KTogRGl0dG8uCisgICAg
ICAgICogVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5oOiBVcGRhdGVkIHRvIGluY2x1ZGUgR1RLKyBz
cGVjaWZpYyB0eXBlcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oOiBE
aXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5tZXNzYWdlcy5pbjog
RG8gbm90IHRoZSBEcmF3aW5nQXJlYVByb3h5SW1wbC1zcGVjaWZpYworICAgICAgICAgbWVzc2Fn
ZSB3aXRoIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykuCisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHA6IFJlbW92ZWQgdGhlc2UgZ3VhcmRzLCBhcyBEcmF3aW5nQXJlUHJv
eHlJbXBsIGlzIHVzZWQgb24gYWxsIHBsYXRmb3JtcyBub3cuCisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lmg6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvQmFja2lu
Z1N0b3JlR3RrLmNwcDogQWRkZWQuIFRoaXMgaW1wbGVtZW50YXRpb24gaGVhdmlseSB1c2VzIENh
aXJvLAorICAgICAgICBidXQgZGVwZW5kcyBvbiBHVEsrL0dESyBpbiBhIGZldyBwbGFjZXMuCisg
ICAgICAgIChXZWJLaXQ6OkJhY2tpbmdTdG9yZTo6cGFpbnQpOgorICAgICAgICAoV2ViS2l0OjpC
YWNraW5nU3RvcmU6OmluY29ycG9yYXRlVXBkYXRlKToKKyAgICAgICAgKFdlYktpdDo6QmFja2lu
Z1N0b3JlOjpzY3JvbGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3Rr
LmNwcDogQWRkZWQgYSBnZXR0aW5nIGZvciB0aGUgdmlld1dpZGdldCwgd2hpY2ggaXMKKyAgICAg
ICAgcmVxdWlyZWQgYnkgQmFja2luZ1N0b3JlR3RrLiBBIHNpbWlsYXIgZ2V0dGVyIGV4aXN0cyBm
b3IgV2luZG93cyBhbmQgTWFjLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnZpZXdX
aWRnZXQpOiBEaXR0by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEu
Y3BwOiBSZW1vdmVkIHRoZXNlIGd1YXJkcyBhcyBEcmF3aW5nQXJlYVByb3h5SW1wbCBpcyB1c2Vk
IG9uIGFsbCBwbGF0Zm9ybXMgbm93LgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6Y3Jl
YXRlKTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmg6
IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYUltcGw6OnNlbmREaWRVcGRhdGVCYWNraW5n
U3RvcmVTdGF0ZSk6IERvIG5vdCBndWFyZAorICAgICAgICB0aGlzIERyYXdpbmdBcmVhUHJveHlJ
bXBsLXNwZWNpZmljIG1lc3NhZ2Ugd2l0aCBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOiBSZW1vdmVkIHRoZXNlIGd1
YXJkcyBhcyBEcmF3aW5nQXJlYVByb3h5SW1wbCBpcyB1c2VkIG9uIGFsbCBwbGF0Zm9ybXMgbm93
LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRSZWNlaXZlTWVzc2FnZSk6IERpdHRvLgor
CisyMDExLTA1LTExICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKwog
ICAgICAgICBUcnkgdG8gZml4IHRoZSBXaW5DYWlybyBidWlsZC4KIAogICAgICAgICAqIFNoYXJl
ZC9TaGFyZWFibGVCaXRtYXAuaDogQ29ycmVjdGx5IGluY2x1ZGUgUmVmUHRyQ2Fpcm8gaGVyZSBh
bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dl
YktpdDIvR05VbWFrZWZpbGUuYW0KaW5kZXggYzA5YTY5NDYwYjgxNjg0ZDBmOWU4M2MyYjc2Y2Ew
YWJkMmZmMmY3NC4uNzU2ZDJlM2U0NDM2MDM1OWRmMzY2YjM0ZTM2MzdhNTdjZmIwNDU4NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYktp
dDIvR05VbWFrZWZpbGUuYW0KQEAgLTEwMiw2ICsxMDIsOCBAQCBsaWJ3ZWJraXQyZ3RrX0BXRUJL
SVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xh
X1NPVQogCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL01vZHVsZS5jcHAgXAogCVNvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL01vZHVsZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9QbGF0Zm9y
bVByb2Nlc3NJZGVudGlmaWVyLmggXAorCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1JlZ2lvbi5j
cHAgXAorCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1JlZ2lvbi5oIFwKIAlTb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9SdW5Mb29wLmNwcCBcCiAJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vUnVuTG9v
cC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaCBcCkBAIC0xODMs
NiArMTg1LDcgQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9A
V0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9TT1UKIAlTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvRWRpdG9yU3RhdGUuaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL0ZvbnRTbW9vdGhpbmdM
ZXZlbC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fp
cm8uY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL0xheWVyVHJlZUNvbnRleHRHdGsu
Y3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYktleWJvYXJkRXZlbnRH
dGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRH
dGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYldoZWVsRXZlbnRH
dGsuY3BwIFwKQEAgLTIzNyw2ICsyNDAsOCBAQCBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJ
X01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX1NPVQogCVNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9TdHJpbmdQYWlyVmVjdG9yLmggXAogCVNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9UZXh0Q2hlY2tlclN0YXRlLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Vc2Vy
TWVzc2FnZUNvZGVycy5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXBkYXRlSW5mby5jcHAg
XAorCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9VcGRhdGVJbmZvLmggXAogCVNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9WaXNpdGVkTGlua1RhYmxlLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1Zp
c2l0ZWRMaW5rVGFibGUuaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0uY3BwIFwKQEAgLTM2NiwxMiArMzcxLDE2IEBAIGxpYndlYmtpdDJndGtfQFdFQktJ
VEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFf
U09VCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYkNyZWRlbnRp
YWwuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYlByb3Rl
Y3Rpb25TcGFjZS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlv
bi9XZWJQcm90ZWN0aW9uU3BhY2UuaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0JhY2tp
bmdTdG9yZS5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9CYWNraW5nU3RvcmUuaCBc
CiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5
LmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJl
YVByb3h5LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQ
cm94eS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQ
cm94eS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAg
XAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmggXAorCVNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5jcHAgXAorCVNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5oIFwKIAlTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvRmluZEluZGljYXRvci5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9GaW5kSW5kaWNhdG9yLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5lcmljQ2Fs
bGJhY2suaCBcCkBAIC0zNzksNiArMzg4LDcgQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQ
SV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9TT1UKIAlT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdFByb3h5LmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eS5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Z3RrL0JhY2tpbmdTdG9yZUd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsv
Q2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHlHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZ3RrL1RleHRDaGVja2VyR3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2d0ay9XZWJDb250ZXh0R3RrLmNwcCBcCkBAIC02NTMsNiArNjYzLDcgQEAgbGlid2Via2l0
Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9W
RVJTSU9OQF9sYV9TT1UKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRGVjb2Rl
ckFkYXB0ZXIuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdB
cmVhLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVh
LmggXAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwu
Y3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRW5jb2RlckFkYXB0ZXIu
Y3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRW5jb2RlckFkYXB0ZXIu
aCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNw
cCBcCkBAIC02NjAsNiArNjcxLDcgQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpP
Ul9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9TT1UKIAlTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYUd0
ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViSW5zcGVj
dG9yR3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQ
YWdlR3RrLmNwcCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJl
ZUhvc3QuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZU92ZXJs
YXkuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXku
aCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1RpbGVkRHJhd2luZ0FyZWEu
Y3BwIFwKQEAgLTgwOSw2ICs4MjEsMTAgQEAgcGtnY29uZmlnX0RBVEEgKz0gU291cmNlL1dlYktp
dDIvZ3RrL0BXRUJLSVRHVEtfUENfTkFNRUAyLUBXRUJLSVRHVEtfQVBJX1ZFUlNJT04KIHdlYmtp
dDJfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9BdXRoZW50aWNh
dGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJLaXQy
L0F1dGhlbnRpY2F0aW9uTWFuYWdlck1lc3NhZ2VzLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYktp
dDIvRHJhd2luZ0FyZWFNZXNzYWdlUmVjZWl2ZXIuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJL
aXQyL0RyYXdpbmdBcmVhTWVzc2FnZXMuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9EcmF3
aW5nQXJlYVByb3h5TWVzc2FnZXMuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9EcmF3aW5n
QXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9E
b3dubG9hZFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9Eb3dubG9hZFByb3h5TWVzc2FnZXMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9OUE9i
amVjdE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2VSZWNlaXZlci5jcHAgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0xheWVyVHJlZUNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9MYXllclRyZWVDb250ZXh0LmgKaW5kZXggMjMzYjdhZWQ2YTNmNmU5NjQ2MTc2YmMyNThk
ZjQxMzljYzA0M2VlNC4uMGZiNTUyYTY0NmE4OTBmZmM4MWY2YjVmZTdmZmE1YTc4YzEzM2E0ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0xheWVyVHJlZUNvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTGF5ZXJUcmVlQ29udGV4dC5oCkBAIC0zMSw4ICszMSw2
IEBAIG5hbWVzcGFjZSBDb3JlSVBDIHsKICAgICBjbGFzcyBBcmd1bWVudEVuY29kZXI7CiB9CiAK
LSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0KIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBjbGFzcyBMYXllclRyZWVDb250ZXh0IHsKQEAgLTU5LDYgKzU3LDQgQEAgaW5saW5lIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBMYXllclRyZWVDb250ZXh0JiBhLCBjb25zdCBMYXllclRyZWVDb250
ZXh0JiBiKQogCiB9OwogCi0jZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQot
CiAjZW5kaWYgLy8gTGF5ZXJUcmVlQ29udGV4dF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvZ3RrL0xheWVyVHJlZUNvbnRleHRHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL2d0ay9MYXllclRyZWVDb250ZXh0R3RrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMWJmMWI0MTYzMDA1
YzIwZmM1YzIzZDdhZjBkMDc4M2JlYjFmN2I4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL2d0ay9MYXllclRyZWVDb250ZXh0R3RrLmNwcApAQCAtMCwwICsxLDY2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxheWVyVHJlZUNv
bnRleHQuaCIKKworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitMYXllclRyZWVDb250ZXh0OjpMYXllclRyZWVDb250ZXh0KCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCitMYXllclRyZWVDb250ZXh0Ojp+TGF5ZXJUcmVlQ29udGV4dCgp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBMYXllclRyZWVDb250ZXh0Ojpl
bmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKikgY29uc3QKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCitib29sIExheWVyVHJlZUNvbnRleHQ6OmRlY29kZShDb3JlSVBDOjpBcmd1
bWVudERlY29kZXIqLCBMYXllclRyZWVDb250ZXh0JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiB0cnVlOworfQorCitib29sIExheWVyVHJlZUNvbnRleHQ6OmlzRW1wdHko
KSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Jvb2wgb3BlcmF0b3I9PShjb25zdCBMYXllclRyZWVDb250ZXh0JiwgY29uc3QgTGF5ZXJUcmVl
Q29udGV4dCYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggYmIxYTczMWVjNDE4M2NjYTA2NmEy
YjkyNWM2NGE4YzQ4MWVkZTQ4MS4uMWMxZWUxMGRmZmZkMGI5NmY1ZDk3ZDk0MTEwOTQ0MTg4OTc3
NTU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNs
aWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VD
bGllbnRJbXBsLmNwcApAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIlBhZ2VDbGllbnRJbXBsLmgiCiAKLSNpbmNsdWRlICJDaHVua2VkVXBkYXRlRHJhd2lu
Z0FyZWFQcm94eS5oIgorI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHlJbXBsLmgiCiAjaW5jbHVk
ZSAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYk1vdXNlRXZl
bnQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgpAQCAtMjkwLDEzICsyOTAsMTIgQEAg
dm9pZCBQYWdlQ2xpZW50SW1wbDo6Z2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVudChjb25zdCBO
YXRpdmVXZWJLZXlib2FyZEV2ZW50JgogLy8gUGFnZUNsaWVudCdzIHB1cmUgdmlydHVhbCBmdW5j
dGlvbnMKIFBhc3NPd25QdHI8RHJhd2luZ0FyZWFQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0
ZURyYXdpbmdBcmVhUHJveHkoKQogewotICAgIFdlYktpdFdlYlZpZXdCYXNlKiB2aWV3ID0gV0VC
S0lUX1dFQl9WSUVXX0JBU0UobV92aWV3V2lkZ2V0KTsKLSAgICByZXR1cm4gQ2h1bmtlZFVwZGF0
ZURyYXdpbmdBcmVhUHJveHk6OmNyZWF0ZSh2aWV3LCB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2Uo
dmlldykpOworICAgIHJldHVybiBEcmF3aW5nQXJlYVByb3h5SW1wbDo6Y3JlYXRlKHdlYmtpdFdl
YlZpZXdCYXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdXaWRnZXQpKSk7CiB9
CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OnNldFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRWaWV3TmVlZHNEaXNwbGF5KGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICBndGtfd2lkZ2V0X3F1ZXVlX2RyYXdfYXJlYShtX3ZpZXdXaWRnZXQsIHJlY3QueCgpLCByZWN0
LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50
SW1wbDo6ZGlzcGxheVZpZXcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1BhZ2VDbGllbnRJbXBsLmgKaW5kZXggZjIwY2FhNzMwYWNiODQwMzczNDg0ODExMjk3YTNh
YjEzMzhlNzI0NS4uNjc2NTA3Yjk4MmQ2Mzc5ZjgzYjIzM2Y0NjlhODM2YzNmYTU0MGNlOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5o
CkBAIC00Nyw2ICs0Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQ
YWdlQ2xpZW50SW1wbCh2aWV3V2lkZ2V0KSk7CiAgICAgfQogCisgICAgR3RrV2lkZ2V0KiB2aWV3
V2lkZ2V0KCkgeyByZXR1cm4gbV92aWV3V2lkZ2V0OyB9CisKICAgICB2b2lkIGFkZFBlbmRpbmdF
ZGl0b3JDb21tYW5kKGNvbnN0IGNoYXIqIGNvbW1hbmQpIHsgbV9wZW5kaW5nRWRpdG9yQ29tbWFu
ZHMuYXBwZW5kKFdURjo6U3RyaW5nKGNvbW1hbmQpKTsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3Bw
CmluZGV4IDJhNDFjZWEwMjg1ZDg5NDZkYzgxNGE2NGFhNjNkNjQzYzU1OWFiMGUuLmJjMzdjYjkw
MjE0YjBiM2I2OTc0N2FjOWMwMzM0YjZmNzRiYTk4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKQEAgLTI4LDYg
KzI4LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3QmFz
ZS5oIgogCisjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eUltcGwuaCIKICNpbmNsdWRlICJHT3du
UHRyR3RrLmgiCiAjaW5jbHVkZSAiR3RrQ2xpY2tDb3VudGVyLmgiCiAjaW5jbHVkZSAiR3RrVmVy
c2lvbmluZy5oIgpAQCAtMzcsNiArMzgsNyBAQAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CiAjaW5jbHVkZSAiUGFnZUNsaWVudEltcGwuaCIKICNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgor
I2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKICNpbmNsdWRlICJX
ZWJFdmVudEZhY3RvcnkuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaCIK
QEAgLTE0NiwzMCArMTQ4LDMwIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19iYXNlX2lu
aXQoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlKQogICAgIHByaXYtPnBhZ2VD
bGllbnQgPSBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlKEdUS19XSURHRVQod2Via2l0V2ViVmlld0Jh
c2UpKTsKIH0KIAorc3RhdGljIHZvaWQgY2FsbERyYXdpbmdBcmVhUGFpbnRNZXRob2QoRHJhd2lu
Z0FyZWFQcm94eSogZHJhd2luZ0FyZWEsIGNhaXJvX3QqIGNvbnRleHQsIGNvbnN0IEludFJlY3Qm
IGFyZWEpCit7CisgICAgV2ViS2l0OjpSZWdpb24gdW5wYWludGVkUmVnaW9uOyAvLyBUaGlzIGlz
IHNpbXBseSB1bnVzZWQuCisgICAgc3RhdGljX2Nhc3Q8RHJhd2luZ0FyZWFQcm94eUltcGwqPihk
cmF3aW5nQXJlYSktPnBhaW50KGNvbnRleHQsIGFyZWEsIHVucGFpbnRlZFJlZ2lvbik7Cit9CisK
ICNpZmRlZiBHVEtfQVBJX1ZFUlNJT05fMgogc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdC
YXNlRXhwb3NlKEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEV4cG9zZSogZXZlbnQpCiB7Ci0g
ICAgV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlID0gV0VCS0lUX1dFQl9WSUVXX0JBU0Uo
d2lkZ2V0KTsKLQogICAgIEdka1JlY3RhbmdsZSBjbGlwUmVjdDsKICAgICBnZGtfcmVnaW9uX2dl
dF9jbGlwYm94KGV2ZW50LT5yZWdpb24sICZjbGlwUmVjdCk7CiAKICAgICBSZWZQdHI8Y2Fpcm9f
dD4gY3IgPSBhZG9wdFJlZihnZGtfY2Fpcm9fY3JlYXRlKGd0a193aWRnZXRfZ2V0X3dpbmRvdyh3
aWRnZXQpKSk7Ci0gICAgd2ViVmlld0Jhc2UtPnByaXYtPnBhZ2VQcm94eS0+ZHJhd2luZ0FyZWEo
KS0+cGFpbnQoY2xpcFJlY3QsIGNyLmdldCgpKTsKLQorICAgIGNhbGxEcmF3aW5nQXJlYVBhaW50
TWV0aG9kKFdFQktJVF9XRUJfVklFV19CQVNFKHdpZGdldCktPnByaXYtPnBhZ2VQcm94eS0+ZHJh
d2luZ0FyZWEoKSwgY3IuZ2V0KCksIGNsaXBSZWN0KTsKICAgICByZXR1cm4gRkFMU0U7CiB9CiAj
ZWxzZQogc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdCYXNlRHJhdyhHdGtXaWRnZXQqIHdp
ZGdldCwgY2Fpcm9fdCogY3IpCiB7Ci0gICAgV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNl
ID0gV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2lkZ2V0KTsKLQogICAgIEdka1JlY3RhbmdsZSBjbGlw
UmVjdDsKICAgICBpZiAoIWdka19jYWlyb19nZXRfY2xpcF9yZWN0YW5nbGUoY3IsICZjbGlwUmVj
dCkpCiAgICAgICAgIHJldHVybiBGQUxTRTsKIAotICAgIHdlYlZpZXdCYXNlLT5wcml2LT5wYWdl
UHJveHktPmRyYXdpbmdBcmVhKCktPnBhaW50KGNsaXBSZWN0LCBjcik7Ci0KKyAgICBjYWxsRHJh
d2luZ0FyZWFQYWludE1ldGhvZChXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRnZXQpLT5wcml2LT5w
YWdlUHJveHktPmRyYXdpbmdBcmVhKCksIGNyLCBjbGlwUmVjdCk7CiAgICAgcmV0dXJuIEZBTFNF
OwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQmFja2lu
Z1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQmFja2luZ1N0b3JlLmgKaW5kZXgg
OWExMTk0MmExNWZmZDUzMjE3NTA5ODM0ZDhiYTQ4YWI0MThmODhiMC4uN2E2OWQ3YzQ0YmQ5MWVi
MjIyMTQyYTQxNzJlYjlkYWNlNWZmNDUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0JhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9CYWNr
aW5nU3RvcmUuaApAQCAtNDEsNiArNDEsMTAgQEAKICNpbmNsdWRlIDxRdEd1aS9RUGl4bWFwPgog
I2VuZGlmCiAKKyNpZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWly
by5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBJbnRSZWN0Owog
fQpAQCAtNjYsNiArNzAsOCBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBIREMgUGxhdGZvcm1HcmFw
aGljc0NvbnRleHQ7CiAjZWxpZiBQTEFURk9STShRVCkKICAgICB0eXBlZGVmIFFQYWludGVyKiBQ
bGF0Zm9ybUdyYXBoaWNzQ29udGV4dDsKKyNlbGlmIFBMQVRGT1JNKEdUSykKKyAgICB0eXBlZGVm
IGNhaXJvX3QqIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0OwogI2VuZGlmCiAKICAgICB2b2lkIHBh
aW50KFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CkBA
IC04OSw2ICs5NSw4IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPEhCSVRNQVA+IG1fYml0bWFwOwog
I2VsaWYgUExBVEZPUk0oUVQpCiAgICAgUVBpeG1hcCBtX3BpeG1hcDsKKyNlbGlmIFBMQVRGT1JN
KEdUSykKKyAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBtX3N1cmZhY2U7CiAjZW5kaWYKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCmluZGV4IGY1
MzE3NTBhNGU2MzQ1M2NhNTM5MjkxNTM1NWVlYzA5MDA3ZTAzYWEuLjVmMzVlNjU2N2VlZjU1ZTZl
ODU5MDFkMTIzOGQyODNjYmY3OTAwMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Ry
YXdpbmdBcmVhUHJveHkuaApAQCAtNzIsOSArNzIsNyBAQCBwdWJsaWM6CiAKICAgICBEcmF3aW5n
QXJlYVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCi0jaWYgUExBVEZPUk0o
TUFDKSB8fCBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JNKFFUKQogICAgIHZvaWQgZGlkUmVjZWl2
ZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpN
ZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwotI2VuZGlmCiAKICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6
Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKikgPSAwOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5Lm1lc3NhZ2VzLmluCmlu
ZGV4IDc4ZDU3MjRkMjQ4MjlmMmY4MzJkMzIwY2U5YWJjYzNkOWM0MzMzZjQuLjYxNDQzMGU2NGJi
OTE4NWE5ZjdhZGVkNGEzYjI5YjM0NGU0MWZkN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMiw4ICsyMiw4
IEBACiAKIG1lc3NhZ2VzIC0+IERyYXdpbmdBcmVhUHJveHkgewogICAgIFVwZGF0ZSh1aW50NjRf
dCBzdGF0ZUlELCBXZWJLaXQ6OlVwZGF0ZUluZm8gdXBkYXRlSW5mbykKLSNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCiAgICAgRGlkVXBkYXRlQmFja2luZ1N0b3JlU3RhdGUodWludDY0
X3QgYmFja2luZ1N0b3JlU3RhdGVJRCwgV2ViS2l0OjpVcGRhdGVJbmZvIHVwZGF0ZUluZm8sIFdl
YktpdDo6TGF5ZXJUcmVlQ29udGV4dCBjb250ZXh0KQorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKICAgICBFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKHVpbnQ2NF90IGJh
Y2tpbmdTdG9yZVN0YXRlSUQsIFdlYktpdDo6TGF5ZXJUcmVlQ29udGV4dCBjb250ZXh0KQogICAg
IEV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSh1aW50NjRfdCBiYWNraW5nU3RvcmVTdGF0
ZUlELCBXZWJLaXQ6OlVwZGF0ZUluZm8gdXBkYXRlSW5mbykKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBlMDBlMjVjNzIyYTYwNzk1ZjMyOTkw
NzBmMjhiZmE0NGRmYTI0ZTdiLi5lM2EyZGEzZDY3MmQwNGU4MTFjYTBmY2I3YWViOTE0MGUzNTYx
ZjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTMx
NywxMiArMTMxNywxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UmVzaXplc1RvQ29udGVudHNV
c2luZ0xheW91dFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdAogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwg
Q29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBh
cmd1bWVudHMpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShXSU4pIHx8IFBMQVRG
T1JNKFFUKQogICAgIGlmIChtZXNzYWdlSUQuaXM8Q29yZUlQQzo6TWVzc2FnZUNsYXNzRHJhd2lu
Z0FyZWFQcm94eT4oKSkgewogICAgICAgICBtX2RyYXdpbmdBcmVhLT5kaWRSZWNlaXZlRHJhd2lu
Z0FyZWFQcm94eU1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBhcmd1bWVudHMpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotI2VuZGlmCiAKICAgICBpZiAobWVzc2FnZUlELmlzPENvcmVJ
UEM6Ok1lc3NhZ2VDbGFzc0RyYXdpbmdBcmVhUHJveHlMZWdhY3k+KCkpIHsKICAgICAgICAgbV9k
cmF3aW5nQXJlYS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBhcmd1
bWVudHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDE2YzBi
ZDAyNjU4Y2QzZWRlYTM3ODE2ZTk4Y2RlYWZjYzhhYWY2ZjYuLjBkNGRjOGJkNTljNWUzMTU2YTMw
Y2RjZWE5MTMzMTg1OTU5NzY5NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKQEAgLTMwNiw2ICszMDYsOSBAQCBwdWJsaWM6CiAKICAgICBIV05EIG5hdGl2ZVdpbmRv
dygpIGNvbnN0OwogI2VuZGlmCisjaWYgUExBVEZPUk0oR1RLKQorICAgIEd0a1dpZGdldCogdmll
d1dpZGdldCgpOworI2VuZGlmCiAjaWYgRU5BQkxFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAg
dm9pZCBzZXRBY3R1YWxWaXNpYmxlQ29udGVudFJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
cmVjdCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsv
QmFja2luZ1N0b3JlR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQmFja2lu
Z1N0b3JlR3RrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMDE0NWI3OWY2YWY5NDc5OTEzZjNjYWNhNTRjNzdj
ZmFkMTA3ZTE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0
ay9CYWNraW5nU3RvcmVHdGsuY3BwCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJCYWNraW5nU3RvcmUuaCIKKworI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgorI2lu
Y2x1ZGUgIlVwZGF0ZUluZm8uaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgorI2luY2x1ZGUgPGNhaXJvL2NhaXJvLmg+Cisj
aW5jbHVkZSA8Z3RrL2d0ay5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK3ZvaWQgQmFja2luZ1N0b3JlOjpwYWludChjYWlyb190KiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiByZWN0KQoreworICAgIGNhaXJvX3NldF9vcGVyYXRvcihjb250ZXh0
LCBDQUlST19PUEVSQVRPUl9TT1VSQ0UpOworICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShj
b250ZXh0LCBtX3N1cmZhY2UuZ2V0KCksIDAsIDApOworICAgIGNhaXJvX3JlY3RhbmdsZShjb250
ZXh0LCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7Cisg
ICAgY2Fpcm9fZmlsbChjb250ZXh0KTsKK30KKwordm9pZCBCYWNraW5nU3RvcmU6OmluY29ycG9y
YXRlVXBkYXRlKFNoYXJlYWJsZUJpdG1hcCogYml0bWFwLCBjb25zdCBVcGRhdGVJbmZvJiB1cGRh
dGVJbmZvKQoreworICAgIEd0a1dpZGdldCogdmlld1dpZGdldCA9IG1fd2ViUGFnZVByb3h5LT52
aWV3V2lkZ2V0KCk7CisgICAgaWYgKCFtX3N1cmZhY2UpIHsKKyAgICAgICAgbV9zdXJmYWNlID0g
YWRvcHRSZWYoZ2RrX3dpbmRvd19jcmVhdGVfc2ltaWxhcl9zdXJmYWNlKGd0a193aWRnZXRfZ2V0
X3dpbmRvdyh2aWV3V2lkZ2V0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENBSVJPX0NPTlRFTlRfQ09MT1JfQUxQSEEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpKSk7CisgICAgfQorCisgICAgc2Ny
b2xsKHVwZGF0ZUluZm8uc2Nyb2xsUmVjdCwgdXBkYXRlSW5mby5zY3JvbGxPZmZzZXQpOworCisg
ICAgLy8gUGFpbnQgYWxsIHVwZGF0ZSByZWN0cy4KKyAgICBJbnRQb2ludCB1cGRhdGVSZWN0TG9j
YXRpb24gPSB1cGRhdGVJbmZvLnVwZGF0ZVJlY3RCb3VuZHMubG9jYXRpb24oKTsKKyAgICBSZWZQ
dHI8Y2Fpcm9fdD4gY29udGV4dChhZG9wdFJlZihjYWlyb19jcmVhdGUobV9zdXJmYWNlLmdldCgp
KSkpOworICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQoY29udGV4dC5nZXQoKSk7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB1cGRhdGVJbmZvLnVwZGF0ZVJlY3RzLnNpemUo
KTsgKytpKSB7CisgICAgICAgIEludFJlY3QgdXBkYXRlUmVjdCA9IHVwZGF0ZUluZm8udXBkYXRl
UmVjdHNbaV07CisgICAgICAgIEludFJlY3Qgc3JjUmVjdCA9IHVwZGF0ZVJlY3Q7CisgICAgICAg
IHNyY1JlY3QubW92ZSgtdXBkYXRlUmVjdExvY2F0aW9uLngoKSwgLXVwZGF0ZVJlY3RMb2NhdGlv
bi55KCkpOworICAgICAgICBiaXRtYXAtPnBhaW50KGdyYXBoaWNzQ29udGV4dCwgdXBkYXRlUmVj
dC5sb2NhdGlvbigpLCBzcmNSZWN0KTsKKyAgICB9Cit9CisKK3ZvaWQgQmFja2luZ1N0b3JlOjpz
Y3JvbGwoY29uc3QgSW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgSW50U2l6ZSYgc2Nyb2xsT2Zm
c2V0KQoreworICAgIGlmIChzY3JvbGxPZmZzZXQuaXNaZXJvKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIEdka1JlY3RhbmdsZSBtb3ZlUmVjdCA9IHNjcm9sbFJlY3Q7CisjaWZkZWYgR1RLX0FQ
SV9WRVJTSU9OXzIKKyAgICBHZGtSZWdpb24qIG1vdmVSZWdpb24gPSBnZGtfcmVnaW9uX3JlY3Rh
bmdsZSgmbW92ZVJlY3QpOworI2Vsc2UKKyAgICBjYWlyb19yZWdpb25fdCogbW92ZVJlZ2lvbiA9
IGNhaXJvX3JlZ2lvbl9jcmVhdGVfcmVjdGFuZ2xlKCZtb3ZlUmVjdCk7CisjZW5kaWYKKworICAg
IGdka193aW5kb3dfbW92ZV9yZWdpb24oZ3RrX3dpZGdldF9nZXRfd2luZG93KG1fd2ViUGFnZVBy
b3h5LT52aWV3V2lkZ2V0KCkpLCBtb3ZlUmVnaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2Nyb2xsT2Zmc2V0LndpZHRoKCksIHNjcm9sbE9mZnNldC5oZWlnaHQoKSk7CisKKyNpZmRl
ZiBHVEtfQVBJX1ZFUlNJT05fMgorICAgIGdka19yZWdpb25fZGVzdHJveShtb3ZlUmVnaW9uKTsK
KyNlbHNlCisgICAgY2Fpcm9fcmVnaW9uX2Rlc3Ryb3kobW92ZVJlZ2lvbik7CisjZW5kaWYKKwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcAppbmRleCA4OTQ1ZDEzYmEwZWUzNjkzYzQ1OTU4YmFl
OWFiOGU1ZmZhNGI1NmMyLi4zOTNiNGM3OTM3ZjQzZDY5ODE3NTdmYTRmM2U4YWM2MDVmODViMWE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0
ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsu
Y3BwCkBAIC0yOSwxMCArMjksMTUgQEAKIAogI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZl
bnQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlBhZ2VDbGllbnQu
aCIKKyNpbmNsdWRlICJQYWdlQ2xpZW50SW1wbC5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAor
R3RrV2lkZ2V0KiBXZWJQYWdlUHJveHk6OnZpZXdXaWRnZXQoKQoreworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxQYWdlQ2xpZW50SW1wbCo+KG1fcGFnZUNsaWVudCktPnZpZXdXaWRnZXQoKTsKK30K
KwogU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RhbmRhcmRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiBh
cHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxk
IG5vdCBiZSBoYXJkIGNvZGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9EcmF3aW5nQXJlYS5jcHAKaW5kZXggYmFmMGYzYTRhOGJhODdiNTg5Mjc1ZTUzNTg2YmIy
NWZiN2Q5M2U4Mi4uNjNlMTk5ZTcyODU4NWRkYzAzNmQyZGI4YzIwZTg1NDNlNDE5MGViMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3Bw
CkBAIC0yOCwxMCArMjgsNyBAQAogCiAvLyBTdWJjbGFzc2VzCiAjaW5jbHVkZSAiQ2h1bmtlZFVw
ZGF0ZURyYXdpbmdBcmVhLmgiCi0KLSNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFdJTikg
fHwgUExBVEZPUk0oUVQpCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFJbXBsLmgiCi0jZW5kaWYKIAog
I2lmIEVOQUJMRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogI2luY2x1ZGUgIlRpbGVkRHJhd2luZ0Fy
ZWEuaCIKQEAgLTQ1LDExICs0Miw3IEBAIFBhc3NPd25QdHI8RHJhd2luZ0FyZWE+IERyYXdpbmdB
cmVhOjpjcmVhdGUoV2ViUGFnZSogd2ViUGFnZSwgY29uc3QgV2ViUGFnZUNyZWF0CiB7CiAgICAg
c3dpdGNoIChwYXJhbWV0ZXJzLmRyYXdpbmdBcmVhVHlwZSkgewogICAgIGNhc2UgRHJhd2luZ0Fy
ZWFUeXBlSW1wbDoKLSNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFdJTikgfHwgUExBVEZP
Uk0oUVQpCiAgICAgICAgIHJldHVybiBEcmF3aW5nQXJlYUltcGw6OmNyZWF0ZSh3ZWJQYWdlLCBw
YXJhbWV0ZXJzKTsKLSNlbHNlCi0gICAgICAgIHJldHVybiBudWxscHRyOwotI2VuZGlmCiAgICAg
Y2FzZSBEcmF3aW5nQXJlYVR5cGVDaHVua2VkVXBkYXRlOgogICAgICAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYSh3ZWJQYWdlKSk7CiAjaWYgRU5BQkxFKFRJ
TEVEX0JBQ0tJTkdfU1RPUkUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9EcmF3aW5nQXJlYS5oCmluZGV4IDNkODdhMmE0NDAwMzBjYWE0NjU2NzcwOTg3YmZiMGVlOTI0
NGRmZjEuLjA3NWJjY2ExZmRmMjhkNTZiMmJlOTJhY2VkYThhOWUwYTRiZTUzMDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCkBAIC01Myw5
ICs1Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxEcmF3aW5nQXJlYT4gY3Jl
YXRlKFdlYlBhZ2UqLCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgdmly
dHVhbCB+RHJhd2luZ0FyZWEoKTsKICAgICAKLSNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JN
KFdJTikgfHwgUExBVEZPUk0oUVQpCiAgICAgdm9pZCBkaWRSZWNlaXZlRHJhd2luZ0FyZWFNZXNz
YWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFy
Z3VtZW50RGVjb2RlciopOwotI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNEaXNw
bGF5KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNjcm9s
bChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiBzY3JvbGxPZmZzZXQpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAKaW5kZXggOTNhNDZlZjE2NTU3MzVkNzdl
NmJlMzFjY2M2NTdmYmIzMTQwYzJmYi4uNjk3ODRlY2ViYTRkZmFmMjIyZjU5MjMyMTExZTE1OTU0
YTRmOTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Ry
YXdpbmdBcmVhSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0RyYXdpbmdBcmVhSW1wbC5jcHAKQEAgLTMxOCw3ICszMTgsNiBAQCB2b2lkIERyYXdpbmdBcmVh
SW1wbDo6c2VuZERpZFVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRlKCkKICAgICBpZiAoIW1faXNQYWlu
dGluZ1N1c3BlbmRlZCAmJiAoIW1fbGF5ZXJUcmVlSG9zdCB8fCBtX2xheWVyVHJlZUhvc3QtPnBh
cnRpY2lwYXRlc0luRGlzcGxheSgpKSkKICAgICAgICAgZGlzcGxheSh1cGRhdGVJbmZvKTsKIAot
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBMYXllclRyZWVDb250ZXh0IGxh
eWVyVHJlZUNvbnRleHQ7CiAKICAgICBpZiAobV9pc1BhaW50aW5nU3VzcGVuZGVkIHx8IChtX2xh
eWVyVHJlZUhvc3QgJiYgIW1fbGF5ZXJUcmVlSG9zdC0+cGFydGljaXBhdGVzSW5EaXNwbGF5KCkp
KSB7CkBAIC0zMzgsNyArMzM3LDYgQEAgdm9pZCBEcmF3aW5nQXJlYUltcGw6OnNlbmREaWRVcGRh
dGVCYWNraW5nU3RvcmVTdGF0ZSgpCiAKICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkRy
YXdpbmdBcmVhUHJveHk6OkRpZFVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRlKG1fYmFja2luZ1N0b3Jl
U3RhdGVJRCwgdXBkYXRlSW5mbywgbGF5ZXJUcmVlQ29udGV4dCkpOwogICAgIG1fY29tcG9zaXRp
bmdBY2NvcmRpbmdUb1Byb3h5TWVzc2FnZXMgPSAhbGF5ZXJUcmVlQ29udGV4dC5pc0VtcHR5KCk7
Ci0jZW5kaWYKIH0KIAogdm9pZCBEcmF3aW5nQXJlYUltcGw6OmRpZFVwZGF0ZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggY2E4MTFmZmY4
MTc2ZjRjNGQwZDI0MGE1ZTYxZTQzMGE4ODM1YmI5OS4uOTYwYzQ0YWJmOGIxMjVjNzliNzdlMTAw
MzUzOWZhMGY0MDU3MTcxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcApAQCAtMTk2NSwxMyArMTk2NSwxMSBAQCB2b2lkIFdlYlBhZ2U6OmRpZFJl
Y2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1l
c3NhZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFU
Rk9STShXSU4pIHx8IFBMQVRGT1JNKFFUKQogICAgIGlmIChtZXNzYWdlSUQuaXM8Q29yZUlQQzo6
TWVzc2FnZUNsYXNzRHJhd2luZ0FyZWE+KCkpIHsKICAgICAgICAgaWYgKG1fZHJhd2luZ0FyZWEp
CiAgICAgICAgICAgICBtX2RyYXdpbmdBcmVhLT5kaWRSZWNlaXZlRHJhd2luZ0FyZWFNZXNzYWdl
KGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgYXJndW1lbnRzKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSNlbmRpZgogICAgIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKG1lc3NhZ2VJ
RC5pczxDb3JlSVBDOjpNZXNzYWdlQ2xhc3NXZWJJbnNwZWN0b3I+KCkpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93458</attachid>
            <date>2011-05-13 09:06:33 -0700</date>
            <delta_ts>2011-05-13 11:35:03 -0700</delta_ts>
            <desc>Patch without scrolling artifacts</desc>
            <filename>bug-59655-20110513090632.patch</filename>
            <type>text/plain</type>
            <size>28413</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODYyNDcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAxYWQzMGYyYmExYTVmMGEy
NTNiYWIxZDc3Y2YzMmI0NDQ2YTg4ZDcxLi5kMzg0OTNiZDAyODljM2M1NzFjNDRhZmUxODg3NGIy
MTk4MDdiYzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNTQgQEAKIDIwMTEtMDUtMTEgIE1hcnRp
biBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdUSyBwb3J0IG9mIFdlYktpdDIgc2hvdWxkIHN3
aXRjaCB0byBuZXcgRHJhd2luZ0FyZWFJbXBsIG1vZGVsCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTY1NQorCisgICAgICAgICogR05VbWFrZWZpbGUu
YW06IEFkZCB0aGUgZmlsZXMgbmVjZXNzYXJ5IHRvIHVzZSB0aGUgRHJhd2luZ0FyZWFQcm94eUlt
cGwKKyAgICAgICAgdG8gdGhlIHNvdXJjZSBsaXN0LiBUaGUgc291cmNlIGxpc3QgYWxzbyBuZWVk
cyB0aGUgTGF5ZXJDb250ZXh0VHJlZSBzdHVicy4KKyAgICAgICAgKiBTaGFyZWQvTGF5ZXJUcmVl
Q29udGV4dC5oOiBUaGlzIGZpbGUgc2hvdWxkIG5vdCBiZSBndWFyZGVkIGJ5CisgICAgICAgIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgYXMgaXQncyBuZWVkZWQgZm9yIHRoZSBEcmF3aW5n
QXJlYVByb3h5SW1wbAorICAgICAgICBJUEMgbWVzc2FnaW5nLgorICAgICAgICAqIFNoYXJlZC9n
dGsvTGF5ZXJUcmVlQ29udGV4dEd0ay5jcHA6IEFkZGVkIHRoaXMgc3R1Yi4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VDbGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KTogSW5zdGVhZCBvZiBjcmVhdGlu
ZyB0aGUgZGVwcmVjYXRlZAorICAgICAgICBjaHVua2VkIGRyYXdpbmcgYXJlYSwgY3JlYXRlIGEg
RHJhd2luZ0FyZWFQcm94eUltcGwuCisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpz
ZXRWaWV3TmVlZHNEaXNwbGF5KTogSGVyZSB3ZSBtdXN0IG5vdyBxdWV1ZSBhIHJlZHJhdy4gUHJl
dmlvdXNseQorICAgICAgICB0aGUgY2h1bmtlZCBkcmF3aW5nIGFyZWEgd2FzIGRvaW5nIHRoaXMg
bWFudWFsbHkuIFRoaXMgaXMgdGhlIGFwcHJvcHJpYXRlIHBsYWNlIHRob3VnaC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oOiBBZGRlZCBhIGdldHRlciBmb3Ig
bV92aWV3V2lkZ2V0LgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6dmlld1dpZGdl
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgor
ICAgICAgICAoY2FsbERyYXdpbmdBcmVhUGFpbnRNZXRob2QpOiBBZGRlZCB0aGlzIGhlbHBlciB3
aGljaCByZWR1Y2VzIGNvZGUgZHVwbGljYXRpb24gYmV0d2VlbgorICAgICAgICBHVEsrIDIueCBh
bmQgMy54CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUV4cG9zZSk6IENhbGwgdGhlIG5ldyBo
ZWxwZXIgbm93LgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VEcmF3KTogRGl0dG8uCisgICAg
ICAgICogVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5oOiBVcGRhdGVkIHRvIGluY2x1ZGUgR1RLKyBz
cGVjaWZpYyB0eXBlcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oOiBE
aXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5tZXNzYWdlcy5pbjog
RG8gbm90IHRoZSBEcmF3aW5nQXJlYVByb3h5SW1wbC1zcGVjaWZpYworICAgICAgICAgbWVzc2Fn
ZSB3aXRoIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykuCisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHA6IFJlbW92ZWQgdGhlc2UgZ3VhcmRzLCBhcyBEcmF3aW5nQXJlUHJv
eHlJbXBsIGlzIHVzZWQgb24gYWxsIHBsYXRmb3JtcyBub3cuCisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lmg6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvQmFja2lu
Z1N0b3JlR3RrLmNwcDogQWRkZWQuIFRoaXMgaW1wbGVtZW50YXRpb24gaGVhdmlseSB1c2VzIENh
aXJvLAorICAgICAgICBidXQgZGVwZW5kcyBvbiBHVEsrL0dESyBpbiBhIGZldyBwbGFjZXMuCisg
ICAgICAgIChXZWJLaXQ6OkJhY2tpbmdTdG9yZTo6cGFpbnQpOgorICAgICAgICAoV2ViS2l0OjpC
YWNraW5nU3RvcmU6OmluY29ycG9yYXRlVXBkYXRlKToKKyAgICAgICAgKFdlYktpdDo6QmFja2lu
Z1N0b3JlOjpzY3JvbGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3Rr
LmNwcDogQWRkZWQgYSBnZXR0aW5nIGZvciB0aGUgdmlld1dpZGdldCwgd2hpY2ggaXMKKyAgICAg
ICAgcmVxdWlyZWQgYnkgQmFja2luZ1N0b3JlR3RrLiBBIHNpbWlsYXIgZ2V0dGVyIGV4aXN0cyBm
b3IgV2luZG93cyBhbmQgTWFjLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnZpZXdX
aWRnZXQpOiBEaXR0by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEu
Y3BwOiBSZW1vdmVkIHRoZXNlIGd1YXJkcyBhcyBEcmF3aW5nQXJlYVByb3h5SW1wbCBpcyB1c2Vk
IG9uIGFsbCBwbGF0Zm9ybXMgbm93LgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6Y3Jl
YXRlKTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmg6
IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYUltcGw6OnNlbmREaWRVcGRhdGVCYWNraW5n
U3RvcmVTdGF0ZSk6IERvIG5vdCBndWFyZAorICAgICAgICB0aGlzIERyYXdpbmdBcmVhUHJveHlJ
bXBsLXNwZWNpZmljIG1lc3NhZ2Ugd2l0aCBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOiBSZW1vdmVkIHRoZXNlIGd1
YXJkcyBhcyBEcmF3aW5nQXJlYVByb3h5SW1wbCBpcyB1c2VkIG9uIGFsbCBwbGF0Zm9ybXMgbm93
LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRSZWNlaXZlTWVzc2FnZSk6IERpdHRvLgor
CisyMDExLTA1LTExICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKwog
ICAgICAgICBUcnkgdG8gZml4IHRoZSBXaW5DYWlybyBidWlsZC4KIAogICAgICAgICAqIFNoYXJl
ZC9TaGFyZWFibGVCaXRtYXAuaDogQ29ycmVjdGx5IGluY2x1ZGUgUmVmUHRyQ2Fpcm8gaGVyZSBh
bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dl
YktpdDIvR05VbWFrZWZpbGUuYW0KaW5kZXggYzA5YTY5NDYwYjgxNjg0ZDBmOWU4M2MyYjc2Y2Ew
YWJkMmZmMmY3NC4uNzU2ZDJlM2U0NDM2MDM1OWRmMzY2YjM0ZTM2MzdhNTdjZmIwNDU4NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYktp
dDIvR05VbWFrZWZpbGUuYW0KQEAgLTEwMiw2ICsxMDIsOCBAQCBsaWJ3ZWJraXQyZ3RrX0BXRUJL
SVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xh
X1NPVQogCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL01vZHVsZS5jcHAgXAogCVNvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL01vZHVsZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9QbGF0Zm9y
bVByb2Nlc3NJZGVudGlmaWVyLmggXAorCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1JlZ2lvbi5j
cHAgXAorCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1JlZ2lvbi5oIFwKIAlTb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9SdW5Mb29wLmNwcCBcCiAJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vUnVuTG9v
cC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaCBcCkBAIC0xODMs
NiArMTg1LDcgQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9A
V0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9TT1UKIAlTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvRWRpdG9yU3RhdGUuaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL0ZvbnRTbW9vdGhpbmdM
ZXZlbC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fp
cm8uY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL0xheWVyVHJlZUNvbnRleHRHdGsu
Y3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYktleWJvYXJkRXZlbnRH
dGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRH
dGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYldoZWVsRXZlbnRH
dGsuY3BwIFwKQEAgLTIzNyw2ICsyNDAsOCBAQCBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJ
X01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX1NPVQogCVNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9TdHJpbmdQYWlyVmVjdG9yLmggXAogCVNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9UZXh0Q2hlY2tlclN0YXRlLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Vc2Vy
TWVzc2FnZUNvZGVycy5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXBkYXRlSW5mby5jcHAg
XAorCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9VcGRhdGVJbmZvLmggXAogCVNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9WaXNpdGVkTGlua1RhYmxlLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1Zp
c2l0ZWRMaW5rVGFibGUuaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0uY3BwIFwKQEAgLTM2NiwxMiArMzcxLDE2IEBAIGxpYndlYmtpdDJndGtfQFdFQktJ
VEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFf
U09VCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYkNyZWRlbnRp
YWwuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYlByb3Rl
Y3Rpb25TcGFjZS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlv
bi9XZWJQcm90ZWN0aW9uU3BhY2UuaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0JhY2tp
bmdTdG9yZS5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9CYWNraW5nU3RvcmUuaCBc
CiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5
LmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJl
YVByb3h5LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQ
cm94eS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQ
cm94eS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAg
XAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmggXAorCVNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5jcHAgXAorCVNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5oIFwKIAlTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvRmluZEluZGljYXRvci5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9GaW5kSW5kaWNhdG9yLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5lcmljQ2Fs
bGJhY2suaCBcCkBAIC0zNzksNiArMzg4LDcgQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQ
SV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9TT1UKIAlT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdFByb3h5LmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eS5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Z3RrL0JhY2tpbmdTdG9yZUd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsv
Q2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHlHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZ3RrL1RleHRDaGVja2VyR3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2d0ay9XZWJDb250ZXh0R3RrLmNwcCBcCkBAIC02NTMsNiArNjYzLDcgQEAgbGlid2Via2l0
Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9W
RVJTSU9OQF9sYV9TT1UKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRGVjb2Rl
ckFkYXB0ZXIuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdB
cmVhLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVh
LmggXAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwu
Y3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRW5jb2RlckFkYXB0ZXIu
Y3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRW5jb2RlckFkYXB0ZXIu
aCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNw
cCBcCkBAIC02NjAsNiArNjcxLDcgQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpP
Ul9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9TT1UKIAlTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYUd0
ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViSW5zcGVj
dG9yR3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQ
YWdlR3RrLmNwcCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJl
ZUhvc3QuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZU92ZXJs
YXkuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXku
aCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1RpbGVkRHJhd2luZ0FyZWEu
Y3BwIFwKQEAgLTgwOSw2ICs4MjEsMTAgQEAgcGtnY29uZmlnX0RBVEEgKz0gU291cmNlL1dlYktp
dDIvZ3RrL0BXRUJLSVRHVEtfUENfTkFNRUAyLUBXRUJLSVRHVEtfQVBJX1ZFUlNJT04KIHdlYmtp
dDJfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9BdXRoZW50aWNh
dGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJLaXQy
L0F1dGhlbnRpY2F0aW9uTWFuYWdlck1lc3NhZ2VzLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYktp
dDIvRHJhd2luZ0FyZWFNZXNzYWdlUmVjZWl2ZXIuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJL
aXQyL0RyYXdpbmdBcmVhTWVzc2FnZXMuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9EcmF3
aW5nQXJlYVByb3h5TWVzc2FnZXMuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9EcmF3aW5n
QXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9E
b3dubG9hZFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9Eb3dubG9hZFByb3h5TWVzc2FnZXMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9OUE9i
amVjdE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2VSZWNlaXZlci5jcHAgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0xheWVyVHJlZUNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9MYXllclRyZWVDb250ZXh0LmgKaW5kZXggMjMzYjdhZWQ2YTNmNmU5NjQ2MTc2YmMyNThk
ZjQxMzljYzA0M2VlNC4uMGZiNTUyYTY0NmE4OTBmZmM4MWY2YjVmZTdmZmE1YTc4YzEzM2E0ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0xheWVyVHJlZUNvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTGF5ZXJUcmVlQ29udGV4dC5oCkBAIC0zMSw4ICszMSw2
IEBAIG5hbWVzcGFjZSBDb3JlSVBDIHsKICAgICBjbGFzcyBBcmd1bWVudEVuY29kZXI7CiB9CiAK
LSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0KIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBjbGFzcyBMYXllclRyZWVDb250ZXh0IHsKQEAgLTU5LDYgKzU3LDQgQEAgaW5saW5lIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBMYXllclRyZWVDb250ZXh0JiBhLCBjb25zdCBMYXllclRyZWVDb250
ZXh0JiBiKQogCiB9OwogCi0jZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQot
CiAjZW5kaWYgLy8gTGF5ZXJUcmVlQ29udGV4dF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvZ3RrL0xheWVyVHJlZUNvbnRleHRHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL2d0ay9MYXllclRyZWVDb250ZXh0R3RrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMWJmMWI0MTYzMDA1
YzIwZmM1YzIzZDdhZjBkMDc4M2JlYjFmN2I4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL2d0ay9MYXllclRyZWVDb250ZXh0R3RrLmNwcApAQCAtMCwwICsxLDY2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxheWVyVHJlZUNv
bnRleHQuaCIKKworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitMYXllclRyZWVDb250ZXh0OjpMYXllclRyZWVDb250ZXh0KCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCitMYXllclRyZWVDb250ZXh0Ojp+TGF5ZXJUcmVlQ29udGV4dCgp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBMYXllclRyZWVDb250ZXh0Ojpl
bmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKikgY29uc3QKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCitib29sIExheWVyVHJlZUNvbnRleHQ6OmRlY29kZShDb3JlSVBDOjpBcmd1
bWVudERlY29kZXIqLCBMYXllclRyZWVDb250ZXh0JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiB0cnVlOworfQorCitib29sIExheWVyVHJlZUNvbnRleHQ6OmlzRW1wdHko
KSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Jvb2wgb3BlcmF0b3I9PShjb25zdCBMYXllclRyZWVDb250ZXh0JiwgY29uc3QgTGF5ZXJUcmVl
Q29udGV4dCYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggYmIxYTczMWVjNDE4M2NjYTA2NmEy
YjkyNWM2NGE4YzQ4MWVkZTQ4MS4uMWMxZWUxMGRmZmZkMGI5NmY1ZDk3ZDk0MTEwOTQ0MTg4OTc3
NTU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNs
aWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VD
bGllbnRJbXBsLmNwcApAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIlBhZ2VDbGllbnRJbXBsLmgiCiAKLSNpbmNsdWRlICJDaHVua2VkVXBkYXRlRHJhd2lu
Z0FyZWFQcm94eS5oIgorI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHlJbXBsLmgiCiAjaW5jbHVk
ZSAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYk1vdXNlRXZl
bnQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgpAQCAtMjkwLDEzICsyOTAsMTIgQEAg
dm9pZCBQYWdlQ2xpZW50SW1wbDo6Z2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVudChjb25zdCBO
YXRpdmVXZWJLZXlib2FyZEV2ZW50JgogLy8gUGFnZUNsaWVudCdzIHB1cmUgdmlydHVhbCBmdW5j
dGlvbnMKIFBhc3NPd25QdHI8RHJhd2luZ0FyZWFQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0
ZURyYXdpbmdBcmVhUHJveHkoKQogewotICAgIFdlYktpdFdlYlZpZXdCYXNlKiB2aWV3ID0gV0VC
S0lUX1dFQl9WSUVXX0JBU0UobV92aWV3V2lkZ2V0KTsKLSAgICByZXR1cm4gQ2h1bmtlZFVwZGF0
ZURyYXdpbmdBcmVhUHJveHk6OmNyZWF0ZSh2aWV3LCB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2Uo
dmlldykpOworICAgIHJldHVybiBEcmF3aW5nQXJlYVByb3h5SW1wbDo6Y3JlYXRlKHdlYmtpdFdl
YlZpZXdCYXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdXaWRnZXQpKSk7CiB9
CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OnNldFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRWaWV3TmVlZHNEaXNwbGF5KGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICBndGtfd2lkZ2V0X3F1ZXVlX2RyYXdfYXJlYShtX3ZpZXdXaWRnZXQsIHJlY3QueCgpLCByZWN0
LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50
SW1wbDo6ZGlzcGxheVZpZXcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1BhZ2VDbGllbnRJbXBsLmgKaW5kZXggZjIwY2FhNzMwYWNiODQwMzczNDg0ODExMjk3YTNh
YjEzMzhlNzI0NS4uNjc2NTA3Yjk4MmQ2Mzc5ZjgzYjIzM2Y0NjlhODM2YzNmYTU0MGNlOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5o
CkBAIC00Nyw2ICs0Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQ
YWdlQ2xpZW50SW1wbCh2aWV3V2lkZ2V0KSk7CiAgICAgfQogCisgICAgR3RrV2lkZ2V0KiB2aWV3
V2lkZ2V0KCkgeyByZXR1cm4gbV92aWV3V2lkZ2V0OyB9CisKICAgICB2b2lkIGFkZFBlbmRpbmdF
ZGl0b3JDb21tYW5kKGNvbnN0IGNoYXIqIGNvbW1hbmQpIHsgbV9wZW5kaW5nRWRpdG9yQ29tbWFu
ZHMuYXBwZW5kKFdURjo6U3RyaW5nKGNvbW1hbmQpKTsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3Bw
CmluZGV4IDJhNDFjZWEwMjg1ZDg5NDZkYzgxNGE2NGFhNjNkNjQzYzU1OWFiMGUuLmJjMzdjYjkw
MjE0YjBiM2I2OTc0N2FjOWMwMzM0YjZmNzRiYTk4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKQEAgLTI4LDYg
KzI4LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3QmFz
ZS5oIgogCisjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eUltcGwuaCIKICNpbmNsdWRlICJHT3du
UHRyR3RrLmgiCiAjaW5jbHVkZSAiR3RrQ2xpY2tDb3VudGVyLmgiCiAjaW5jbHVkZSAiR3RrVmVy
c2lvbmluZy5oIgpAQCAtMzcsNiArMzgsNyBAQAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CiAjaW5jbHVkZSAiUGFnZUNsaWVudEltcGwuaCIKICNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgor
I2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKICNpbmNsdWRlICJX
ZWJFdmVudEZhY3RvcnkuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaCIK
QEAgLTE0NiwzMCArMTQ4LDMwIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19iYXNlX2lu
aXQoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlKQogICAgIHByaXYtPnBhZ2VD
bGllbnQgPSBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlKEdUS19XSURHRVQod2Via2l0V2ViVmlld0Jh
c2UpKTsKIH0KIAorc3RhdGljIHZvaWQgY2FsbERyYXdpbmdBcmVhUGFpbnRNZXRob2QoRHJhd2lu
Z0FyZWFQcm94eSogZHJhd2luZ0FyZWEsIGNhaXJvX3QqIGNvbnRleHQsIGNvbnN0IEludFJlY3Qm
IGFyZWEpCit7CisgICAgV2ViS2l0OjpSZWdpb24gdW5wYWludGVkUmVnaW9uOyAvLyBUaGlzIGlz
IHNpbXBseSB1bnVzZWQuCisgICAgc3RhdGljX2Nhc3Q8RHJhd2luZ0FyZWFQcm94eUltcGwqPihk
cmF3aW5nQXJlYSktPnBhaW50KGNvbnRleHQsIGFyZWEsIHVucGFpbnRlZFJlZ2lvbik7Cit9CisK
ICNpZmRlZiBHVEtfQVBJX1ZFUlNJT05fMgogc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdC
YXNlRXhwb3NlKEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEV4cG9zZSogZXZlbnQpCiB7Ci0g
ICAgV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlID0gV0VCS0lUX1dFQl9WSUVXX0JBU0Uo
d2lkZ2V0KTsKLQogICAgIEdka1JlY3RhbmdsZSBjbGlwUmVjdDsKICAgICBnZGtfcmVnaW9uX2dl
dF9jbGlwYm94KGV2ZW50LT5yZWdpb24sICZjbGlwUmVjdCk7CiAKICAgICBSZWZQdHI8Y2Fpcm9f
dD4gY3IgPSBhZG9wdFJlZihnZGtfY2Fpcm9fY3JlYXRlKGd0a193aWRnZXRfZ2V0X3dpbmRvdyh3
aWRnZXQpKSk7Ci0gICAgd2ViVmlld0Jhc2UtPnByaXYtPnBhZ2VQcm94eS0+ZHJhd2luZ0FyZWEo
KS0+cGFpbnQoY2xpcFJlY3QsIGNyLmdldCgpKTsKLQorICAgIGNhbGxEcmF3aW5nQXJlYVBhaW50
TWV0aG9kKFdFQktJVF9XRUJfVklFV19CQVNFKHdpZGdldCktPnByaXYtPnBhZ2VQcm94eS0+ZHJh
d2luZ0FyZWEoKSwgY3IuZ2V0KCksIGNsaXBSZWN0KTsKICAgICByZXR1cm4gRkFMU0U7CiB9CiAj
ZWxzZQogc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdCYXNlRHJhdyhHdGtXaWRnZXQqIHdp
ZGdldCwgY2Fpcm9fdCogY3IpCiB7Ci0gICAgV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNl
ID0gV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2lkZ2V0KTsKLQogICAgIEdka1JlY3RhbmdsZSBjbGlw
UmVjdDsKICAgICBpZiAoIWdka19jYWlyb19nZXRfY2xpcF9yZWN0YW5nbGUoY3IsICZjbGlwUmVj
dCkpCiAgICAgICAgIHJldHVybiBGQUxTRTsKIAotICAgIHdlYlZpZXdCYXNlLT5wcml2LT5wYWdl
UHJveHktPmRyYXdpbmdBcmVhKCktPnBhaW50KGNsaXBSZWN0LCBjcik7Ci0KKyAgICBjYWxsRHJh
d2luZ0FyZWFQYWludE1ldGhvZChXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRnZXQpLT5wcml2LT5w
YWdlUHJveHktPmRyYXdpbmdBcmVhKCksIGNyLCBjbGlwUmVjdCk7CiAgICAgcmV0dXJuIEZBTFNF
OwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQmFja2lu
Z1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQmFja2luZ1N0b3JlLmgKaW5kZXgg
OWExMTk0MmExNWZmZDUzMjE3NTA5ODM0ZDhiYTQ4YWI0MThmODhiMC4uN2E2OWQ3YzQ0YmQ5MWVi
MjIyMTQyYTQxNzJlYjlkYWNlNWZmNDUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0JhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9CYWNr
aW5nU3RvcmUuaApAQCAtNDEsNiArNDEsMTAgQEAKICNpbmNsdWRlIDxRdEd1aS9RUGl4bWFwPgog
I2VuZGlmCiAKKyNpZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWly
by5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBJbnRSZWN0Owog
fQpAQCAtNjYsNiArNzAsOCBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBIREMgUGxhdGZvcm1HcmFw
aGljc0NvbnRleHQ7CiAjZWxpZiBQTEFURk9STShRVCkKICAgICB0eXBlZGVmIFFQYWludGVyKiBQ
bGF0Zm9ybUdyYXBoaWNzQ29udGV4dDsKKyNlbGlmIFBMQVRGT1JNKEdUSykKKyAgICB0eXBlZGVm
IGNhaXJvX3QqIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0OwogI2VuZGlmCiAKICAgICB2b2lkIHBh
aW50KFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CkBA
IC04OSw2ICs5NSw4IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPEhCSVRNQVA+IG1fYml0bWFwOwog
I2VsaWYgUExBVEZPUk0oUVQpCiAgICAgUVBpeG1hcCBtX3BpeG1hcDsKKyNlbGlmIFBMQVRGT1JN
KEdUSykKKyAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBtX3N1cmZhY2U7CiAjZW5kaWYKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCmluZGV4IGY1
MzE3NTBhNGU2MzQ1M2NhNTM5MjkxNTM1NWVlYzA5MDA3ZTAzYWEuLjVmMzVlNjU2N2VlZjU1ZTZl
ODU5MDFkMTIzOGQyODNjYmY3OTAwMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Ry
YXdpbmdBcmVhUHJveHkuaApAQCAtNzIsOSArNzIsNyBAQCBwdWJsaWM6CiAKICAgICBEcmF3aW5n
QXJlYVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCi0jaWYgUExBVEZPUk0o
TUFDKSB8fCBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JNKFFUKQogICAgIHZvaWQgZGlkUmVjZWl2
ZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpN
ZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwotI2VuZGlmCiAKICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6
Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKikgPSAwOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5Lm1lc3NhZ2VzLmluCmlu
ZGV4IDc4ZDU3MjRkMjQ4MjlmMmY4MzJkMzIwY2U5YWJjYzNkOWM0MzMzZjQuLjYxNDQzMGU2NGJi
OTE4NWE5ZjdhZGVkNGEzYjI5YjM0NGU0MWZkN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMiw4ICsyMiw4
IEBACiAKIG1lc3NhZ2VzIC0+IERyYXdpbmdBcmVhUHJveHkgewogICAgIFVwZGF0ZSh1aW50NjRf
dCBzdGF0ZUlELCBXZWJLaXQ6OlVwZGF0ZUluZm8gdXBkYXRlSW5mbykKLSNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCiAgICAgRGlkVXBkYXRlQmFja2luZ1N0b3JlU3RhdGUodWludDY0
X3QgYmFja2luZ1N0b3JlU3RhdGVJRCwgV2ViS2l0OjpVcGRhdGVJbmZvIHVwZGF0ZUluZm8sIFdl
YktpdDo6TGF5ZXJUcmVlQ29udGV4dCBjb250ZXh0KQorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKICAgICBFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKHVpbnQ2NF90IGJh
Y2tpbmdTdG9yZVN0YXRlSUQsIFdlYktpdDo6TGF5ZXJUcmVlQ29udGV4dCBjb250ZXh0KQogICAg
IEV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSh1aW50NjRfdCBiYWNraW5nU3RvcmVTdGF0
ZUlELCBXZWJLaXQ6OlVwZGF0ZUluZm8gdXBkYXRlSW5mbykKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBlMDBlMjVjNzIyYTYwNzk1ZjMyOTkw
NzBmMjhiZmE0NGRmYTI0ZTdiLi5lM2EyZGEzZDY3MmQwNGU4MTFjYTBmY2I3YWViOTE0MGUzNTYx
ZjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTMx
NywxMiArMTMxNywxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UmVzaXplc1RvQ29udGVudHNV
c2luZ0xheW91dFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdAogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwg
Q29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBh
cmd1bWVudHMpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShXSU4pIHx8IFBMQVRG
T1JNKFFUKQogICAgIGlmIChtZXNzYWdlSUQuaXM8Q29yZUlQQzo6TWVzc2FnZUNsYXNzRHJhd2lu
Z0FyZWFQcm94eT4oKSkgewogICAgICAgICBtX2RyYXdpbmdBcmVhLT5kaWRSZWNlaXZlRHJhd2lu
Z0FyZWFQcm94eU1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBhcmd1bWVudHMpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotI2VuZGlmCiAKICAgICBpZiAobWVzc2FnZUlELmlzPENvcmVJ
UEM6Ok1lc3NhZ2VDbGFzc0RyYXdpbmdBcmVhUHJveHlMZWdhY3k+KCkpIHsKICAgICAgICAgbV9k
cmF3aW5nQXJlYS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBhcmd1
bWVudHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDE2YzBi
ZDAyNjU4Y2QzZWRlYTM3ODE2ZTk4Y2RlYWZjYzhhYWY2ZjYuLjBkNGRjOGJkNTljNWUzMTU2YTMw
Y2RjZWE5MTMzMTg1OTU5NzY5NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKQEAgLTMwNiw2ICszMDYsOSBAQCBwdWJsaWM6CiAKICAgICBIV05EIG5hdGl2ZVdpbmRv
dygpIGNvbnN0OwogI2VuZGlmCisjaWYgUExBVEZPUk0oR1RLKQorICAgIEd0a1dpZGdldCogdmll
d1dpZGdldCgpOworI2VuZGlmCiAjaWYgRU5BQkxFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAg
dm9pZCBzZXRBY3R1YWxWaXNpYmxlQ29udGVudFJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
cmVjdCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsv
QmFja2luZ1N0b3JlR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQmFja2lu
Z1N0b3JlR3RrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZjNmNDBiNDM3MTE4NGQwZDQ1NmQxZThhYWEyNDAw
MTc4OTVkYzAyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0
ay9CYWNraW5nU3RvcmVHdGsuY3BwCkBAIC0wLDAgKzEsMTA0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiQmFja2luZ1N0b3JlLmgiCisKKyNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKKyNp
bmNsdWRlICJVcGRhdGVJbmZvLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KKyNpbmNsdWRlIDxjYWlyby9jYWlyby5oPgor
I2luY2x1ZGUgPGd0ay9ndGsuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCit2b2lkIEJhY2tpbmdTdG9yZTo6cGFpbnQoY2Fpcm9fdCogY29udGV4
dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBjYWlyb19zZXRfb3BlcmF0b3IoY29udGV4
dCwgQ0FJUk9fT1BFUkFUT1JfU09VUkNFKTsKKyAgICBjYWlyb19zZXRfc291cmNlX3N1cmZhY2Uo
Y29udGV4dCwgbV9zdXJmYWNlLmdldCgpLCAwLCAwKTsKKyAgICBjYWlyb19yZWN0YW5nbGUoY29u
dGV4dCwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwor
ICAgIGNhaXJvX2ZpbGwoY29udGV4dCk7Cit9CisKK3ZvaWQgQmFja2luZ1N0b3JlOjppbmNvcnBv
cmF0ZVVwZGF0ZShTaGFyZWFibGVCaXRtYXAqIGJpdG1hcCwgY29uc3QgVXBkYXRlSW5mbyYgdXBk
YXRlSW5mbykKK3sKKyAgICBHdGtXaWRnZXQqIHZpZXdXaWRnZXQgPSBtX3dlYlBhZ2VQcm94eS0+
dmlld1dpZGdldCgpOworICAgIGlmICghbV9zdXJmYWNlKSB7CisgICAgICAgIG1fc3VyZmFjZSA9
IGFkb3B0UmVmKGdka193aW5kb3dfY3JlYXRlX3NpbWlsYXJfc3VyZmFjZShndGtfd2lkZ2V0X2dl
dF93aW5kb3codmlld1dpZGdldCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQUlST19DT05URU5UX0NPTE9SX0FMUEhBLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZSgpLndpZHRoKCksIHNpemUoKS5oZWlnaHQoKSkpOworICAgIH0KKworICAgIHNj
cm9sbCh1cGRhdGVJbmZvLnNjcm9sbFJlY3QsIHVwZGF0ZUluZm8uc2Nyb2xsT2Zmc2V0KTsKKwor
ICAgIC8vIFBhaW50IGFsbCB1cGRhdGUgcmVjdHMuCisgICAgSW50UG9pbnQgdXBkYXRlUmVjdExv
Y2F0aW9uID0gdXBkYXRlSW5mby51cGRhdGVSZWN0Qm91bmRzLmxvY2F0aW9uKCk7CisgICAgUmVm
UHRyPGNhaXJvX3Q+IGNvbnRleHQoYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKG1fc3VyZmFjZS5nZXQo
KSkpKTsKKyAgICBHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0KGNvbnRleHQuZ2V0KCkp
OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdXBkYXRlSW5mby51cGRhdGVSZWN0cy5zaXpl
KCk7ICsraSkgeworICAgICAgICBJbnRSZWN0IHVwZGF0ZVJlY3QgPSB1cGRhdGVJbmZvLnVwZGF0
ZVJlY3RzW2ldOworICAgICAgICBJbnRSZWN0IHNyY1JlY3QgPSB1cGRhdGVSZWN0OworICAgICAg
ICBzcmNSZWN0Lm1vdmUoLXVwZGF0ZVJlY3RMb2NhdGlvbi54KCksIC11cGRhdGVSZWN0TG9jYXRp
b24ueSgpKTsKKyAgICAgICAgYml0bWFwLT5wYWludChncmFwaGljc0NvbnRleHQsIHVwZGF0ZVJl
Y3QubG9jYXRpb24oKSwgc3JjUmVjdCk7CisgICAgfQorfQorCit2b2lkIEJhY2tpbmdTdG9yZTo6
c2Nyb2xsKGNvbnN0IEludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IEludFNpemUmIHNjcm9sbE9m
ZnNldCkKK3sKKyAgICBpZiAoc2Nyb2xsT2Zmc2V0LmlzWmVybygpKQorICAgICAgICByZXR1cm47
CisKKyAgICBBU1NFUlQobV9zdXJmYWNlKTsKKyAgICBSZWZQdHI8Y2Fpcm9fdD4gY29udGV4dCA9
IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShtX3N1cmZhY2UuZ2V0KCkpKTsKKyAgICBjYWlyb19wdXNo
X2dyb3VwKGNvbnRleHQuZ2V0KCkpOworCisgICAgSW50UmVjdCB0YXJnZXRSZWN0KHNjcm9sbFJl
Y3QpOworICAgIHRhcmdldFJlY3QubW92ZShzY3JvbGxPZmZzZXQpOworICAgIHRhcmdldFJlY3Qu
c2hpZnRNYXhYRWRnZVRvKHRhcmdldFJlY3QubWF4WCgpIC0gc2Nyb2xsT2Zmc2V0LndpZHRoKCkp
OworICAgIHRhcmdldFJlY3Quc2hpZnRNYXhZRWRnZVRvKHRhcmdldFJlY3QubWF4WSgpIC0gc2Ny
b2xsT2Zmc2V0LmhlaWdodCgpKTsKKyAgICBpZiAodGFyZ2V0UmVjdC5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjb250ZXh0LmdldCgp
LCBtX3N1cmZhY2UuZ2V0KCksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxP
ZmZzZXQud2lkdGgoKSwgc2Nyb2xsT2Zmc2V0LmhlaWdodCgpKTsKKyAgICBjYWlyb19yZWN0YW5n
bGUoY29udGV4dC5nZXQoKSwgdGFyZ2V0UmVjdC54KCksIHRhcmdldFJlY3QueSgpLCAKKyAgICAg
ICAgICAgICAgICAgICAgdGFyZ2V0UmVjdC53aWR0aCgpLCB0YXJnZXRSZWN0LmhlaWdodCgpKTsK
KyAgICBjYWlyb19maWxsKGNvbnRleHQuZ2V0KCkpOworCisgICAgY2Fpcm9fcG9wX2dyb3VwX3Rv
X3NvdXJjZShjb250ZXh0LmdldCgpKTsKKyAgICBjYWlyb19yZWN0YW5nbGUoY29udGV4dC5nZXQo
KSwgdGFyZ2V0UmVjdC54KCksIHRhcmdldFJlY3QueSgpLAorICAgICAgICAgICAgICAgICAgICB0
YXJnZXRSZWN0LndpZHRoKCksIHRhcmdldFJlY3QuaGVpZ2h0KCkpOworICAgIGNhaXJvX2ZpbGwo
Y29udGV4dC5nZXQoKSk7CisKKyAgICBHZGtSZWN0YW5nbGUgaW52YWxpZGF0ZWRSZWN0ID0gdGFy
Z2V0UmVjdDsKKyAgICBnZGtfd2luZG93X2ludmFsaWRhdGVfcmVjdChndGtfd2lkZ2V0X2dldF93
aW5kb3cobV93ZWJQYWdlUHJveHktPnZpZXdXaWRnZXQoKSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJmludmFsaWRhdGVkUmVjdCwgRkFMU0UpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUGFn
ZVByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5
R3RrLmNwcAppbmRleCA4OTQ1ZDEzYmEwZWUzNjkzYzQ1OTU4YmFlOWFiOGU1ZmZhNGI1NmMyLi4z
OTNiNGM3OTM3ZjQzZDY5ODE3NTdmYTRmM2U4YWM2MDVmODViMWE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCkBAIC0yOSwxMCArMjks
MTUgQEAKIAogI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlBhZ2VDbGllbnQuaCIKKyNpbmNsdWRlICJQYWdl
Q2xpZW50SW1wbC5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorR3RrV2lkZ2V0KiBXZWJQYWdl
UHJveHk6OnZpZXdXaWRnZXQoKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxQYWdlQ2xpZW50
SW1wbCo+KG1fcGFnZUNsaWVudCktPnZpZXdXaWRnZXQoKTsKK30KKwogU3RyaW5nIFdlYlBhZ2VQ
cm94eTo6c3RhbmRhcmRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWVGb3JV
c2VyQWdlbnQpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIG5vdCBiZSBoYXJkIGNvZGVk
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdB
cmVhLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5j
cHAKaW5kZXggYmFmMGYzYTRhOGJhODdiNTg5Mjc1ZTUzNTg2YmIyNWZiN2Q5M2U4Mi4uNjNlMTk5
ZTcyODU4NWRkYzAzNmQyZGI4YzIwZTg1NDNlNDE5MGViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwCkBAIC0yOCwxMCArMjgsNyBA
QAogCiAvLyBTdWJjbGFzc2VzCiAjaW5jbHVkZSAiQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhLmgi
Ci0KLSNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFdJTikgfHwgUExBVEZPUk0oUVQpCiAj
aW5jbHVkZSAiRHJhd2luZ0FyZWFJbXBsLmgiCi0jZW5kaWYKIAogI2lmIEVOQUJMRShUSUxFRF9C
QUNLSU5HX1NUT1JFKQogI2luY2x1ZGUgIlRpbGVkRHJhd2luZ0FyZWEuaCIKQEAgLTQ1LDExICs0
Miw3IEBAIFBhc3NPd25QdHI8RHJhd2luZ0FyZWE+IERyYXdpbmdBcmVhOjpjcmVhdGUoV2ViUGFn
ZSogd2ViUGFnZSwgY29uc3QgV2ViUGFnZUNyZWF0CiB7CiAgICAgc3dpdGNoIChwYXJhbWV0ZXJz
LmRyYXdpbmdBcmVhVHlwZSkgewogICAgIGNhc2UgRHJhd2luZ0FyZWFUeXBlSW1wbDoKLSNpZiBQ
TEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFdJTikgfHwgUExBVEZPUk0oUVQpCiAgICAgICAgIHJl
dHVybiBEcmF3aW5nQXJlYUltcGw6OmNyZWF0ZSh3ZWJQYWdlLCBwYXJhbWV0ZXJzKTsKLSNlbHNl
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotI2VuZGlmCiAgICAgY2FzZSBEcmF3aW5nQXJlYVR5
cGVDaHVua2VkVXBkYXRlOgogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENodW5rZWRVcGRh
dGVEcmF3aW5nQXJlYSh3ZWJQYWdlKSk7CiAjaWYgRU5BQkxFKFRJTEVEX0JBQ0tJTkdfU1RPUkUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0Fy
ZWEuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCmlu
ZGV4IDNkODdhMmE0NDAwMzBjYWE0NjU2NzcwOTg3YmZiMGVlOTI0NGRmZjEuLjA3NWJjY2ExZmRm
MjhkNTZiMmJlOTJhY2VkYThhOWUwYTRiZTUzMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCkBAIC01Myw5ICs1Myw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc093blB0cjxEcmF3aW5nQXJlYT4gY3JlYXRlKFdlYlBhZ2UqLCBjb25z
dCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgdmlydHVhbCB+RHJhd2luZ0FyZWEo
KTsKICAgICAKLSNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFdJTikgfHwgUExBVEZPUk0o
UVQpCiAgICAgdm9pZCBkaWRSZWNlaXZlRHJhd2luZ0FyZWFNZXNzYWdlKENvcmVJUEM6OkNvbm5l
Y3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwot
I2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbChjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxPZmZzZXQp
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3
aW5nQXJlYUltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdp
bmdBcmVhSW1wbC5jcHAKaW5kZXggOTNhNDZlZjE2NTU3MzVkNzdlNmJlMzFjY2M2NTdmYmIzMTQw
YzJmYi4uNjk3ODRlY2ViYTRkZmFmMjIyZjU5MjMyMTExZTE1OTU0YTRmOTJlNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5j
cHAKQEAgLTMxOCw3ICszMTgsNiBAQCB2b2lkIERyYXdpbmdBcmVhSW1wbDo6c2VuZERpZFVwZGF0
ZUJhY2tpbmdTdG9yZVN0YXRlKCkKICAgICBpZiAoIW1faXNQYWludGluZ1N1c3BlbmRlZCAmJiAo
IW1fbGF5ZXJUcmVlSG9zdCB8fCBtX2xheWVyVHJlZUhvc3QtPnBhcnRpY2lwYXRlc0luRGlzcGxh
eSgpKSkKICAgICAgICAgZGlzcGxheSh1cGRhdGVJbmZvKTsKIAotI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKICAgICBMYXllclRyZWVDb250ZXh0IGxheWVyVHJlZUNvbnRleHQ7CiAK
ICAgICBpZiAobV9pc1BhaW50aW5nU3VzcGVuZGVkIHx8IChtX2xheWVyVHJlZUhvc3QgJiYgIW1f
bGF5ZXJUcmVlSG9zdC0+cGFydGljaXBhdGVzSW5EaXNwbGF5KCkpKSB7CkBAIC0zMzgsNyArMzM3
LDYgQEAgdm9pZCBEcmF3aW5nQXJlYUltcGw6OnNlbmREaWRVcGRhdGVCYWNraW5nU3RvcmVTdGF0
ZSgpCiAKICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkRyYXdpbmdBcmVhUHJveHk6OkRp
ZFVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRlKG1fYmFja2luZ1N0b3JlU3RhdGVJRCwgdXBkYXRlSW5m
bywgbGF5ZXJUcmVlQ29udGV4dCkpOwogICAgIG1fY29tcG9zaXRpbmdBY2NvcmRpbmdUb1Byb3h5
TWVzc2FnZXMgPSAhbGF5ZXJUcmVlQ29udGV4dC5pc0VtcHR5KCk7Ci0jZW5kaWYKIH0KIAogdm9p
ZCBEcmF3aW5nQXJlYUltcGw6OmRpZFVwZGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggY2E4MTFmZmY4MTc2ZjRjNGQwZDI0MGE1ZTYx
ZTQzMGE4ODM1YmI5OS4uOTYwYzQ0YWJmOGIxMjVjNzliNzdlMTAwMzUzOWZhMGY0MDU3MTcxNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAt
MTk2NSwxMyArMTk2NSwxMSBAQCB2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJ
UEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShXSU4pIHx8IFBMQVRG
T1JNKFFUKQogICAgIGlmIChtZXNzYWdlSUQuaXM8Q29yZUlQQzo6TWVzc2FnZUNsYXNzRHJhd2lu
Z0FyZWE+KCkpIHsKICAgICAgICAgaWYgKG1fZHJhd2luZ0FyZWEpCiAgICAgICAgICAgICBtX2Ry
YXdpbmdBcmVhLT5kaWRSZWNlaXZlRHJhd2luZ0FyZWFNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3Nh
Z2VJRCwgYXJndW1lbnRzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSNlbmRpZgogICAgIAog
I2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKG1lc3NhZ2VJRC5pczxDb3JlSVBDOjpNZXNz
YWdlQ2xhc3NXZWJJbnNwZWN0b3I+KCkpIHsK
</data>
<flag name="review"
          id="86648"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93481</attachid>
            <date>2011-05-13 10:44:50 -0700</date>
            <delta_ts>2011-05-16 14:49:51 -0700</delta_ts>
            <desc>Patch which also implements PageClientImpl::scrollView</desc>
            <filename>bug-59655-20110513104449.patch</filename>
            <type>text/plain</type>
            <size>28609</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODYyNDcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAxYWQzMGYyYmExYTVmMGEy
NTNiYWIxZDc3Y2YzMmI0NDQ2YTg4ZDcxLi40NDFmNTdjNGJhYzBmN2E5ZDQ2MWJhNmUyYjUzZDMz
ZjY4NjgxZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNTUgQEAKIDIwMTEtMDUtMTEgIE1hcnRp
biBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdUSyBwb3J0IG9mIFdlYktpdDIgc2hvdWxkIHN3
aXRjaCB0byBuZXcgRHJhd2luZ0FyZWFJbXBsIG1vZGVsCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTY1NQorCisgICAgICAgICogR05VbWFrZWZpbGUu
YW06IEFkZCB0aGUgZmlsZXMgbmVjZXNzYXJ5IHRvIHVzZSB0aGUgRHJhd2luZ0FyZWFQcm94eUlt
cGwKKyAgICAgICAgdG8gdGhlIHNvdXJjZSBsaXN0LiBUaGUgc291cmNlIGxpc3QgYWxzbyBuZWVk
cyB0aGUgTGF5ZXJDb250ZXh0VHJlZSBzdHVicy4KKyAgICAgICAgKiBTaGFyZWQvTGF5ZXJUcmVl
Q29udGV4dC5oOiBUaGlzIGZpbGUgc2hvdWxkIG5vdCBiZSBndWFyZGVkIGJ5CisgICAgICAgIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgYXMgaXQncyBuZWVkZWQgZm9yIHRoZSBEcmF3aW5n
QXJlYVByb3h5SW1wbAorICAgICAgICBJUEMgbWVzc2FnaW5nLgorICAgICAgICAqIFNoYXJlZC9n
dGsvTGF5ZXJUcmVlQ29udGV4dEd0ay5jcHA6IEFkZGVkIHRoaXMgc3R1Yi4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VDbGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KTogSW5zdGVhZCBvZiBjcmVhdGlu
ZyB0aGUgZGVwcmVjYXRlZAorICAgICAgICBjaHVua2VkIGRyYXdpbmcgYXJlYSwgY3JlYXRlIGEg
RHJhd2luZ0FyZWFQcm94eUltcGwuCisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpz
ZXRWaWV3TmVlZHNEaXNwbGF5KTogSGVyZSB3ZSBtdXN0IG5vdyBxdWV1ZSBhIHJlZHJhdy4gUHJl
dmlvdXNseQorICAgICAgICB0aGUgY2h1bmtlZCBkcmF3aW5nIGFyZWEgd2FzIGRvaW5nIHRoaXMg
bWFudWFsbHkuIFRoaXMgaXMgdGhlIGFwcHJvcHJpYXRlIHBsYWNlIHRob3VnaC4KKyAgICAgICAg
KFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNjcm9sbFZpZXcpOiBBZGQgYW4gaW1wbGVtZW50YXRp
b24gdGhhdCBqdXN0IGNhbGxzIGludG8gc2V0Vmlld05lZWRzRGlzcGxheS4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oOiBBZGRlZCBhIGdldHRlciBmb3IgbV92
aWV3V2lkZ2V0LgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6dmlld1dpZGdldCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgorICAg
ICAgICAoY2FsbERyYXdpbmdBcmVhUGFpbnRNZXRob2QpOiBBZGRlZCB0aGlzIGhlbHBlciB3aGlj
aCByZWR1Y2VzIGNvZGUgZHVwbGljYXRpb24gYmV0d2VlbgorICAgICAgICBHVEsrIDIueCBhbmQg
My54CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUV4cG9zZSk6IENhbGwgdGhlIG5ldyBoZWxw
ZXIgbm93LgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VEcmF3KTogRGl0dG8uCisgICAgICAg
ICogVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5oOiBVcGRhdGVkIHRvIGluY2x1ZGUgR1RLKyBzcGVj
aWZpYyB0eXBlcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oOiBEaXR0
by4KKyAgICAgICAgKiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5tZXNzYWdlcy5pbjogRG8g
bm90IHRoZSBEcmF3aW5nQXJlYVByb3h5SW1wbC1zcGVjaWZpYworICAgICAgICAgbWVzc2FnZSB3
aXRoIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykuCisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6IFJlbW92ZWQgdGhlc2UgZ3VhcmRzLCBhcyBEcmF3aW5nQXJlUHJveHlJ
bXBsIGlzIHVzZWQgb24gYWxsIHBsYXRmb3JtcyBub3cuCisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lmg6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvQmFja2luZ1N0
b3JlR3RrLmNwcDogQWRkZWQuIFRoaXMgaW1wbGVtZW50YXRpb24gaGVhdmlseSB1c2VzIENhaXJv
LAorICAgICAgICBidXQgZGVwZW5kcyBvbiBHVEsrL0dESyBpbiBhIGZldyBwbGFjZXMuCisgICAg
ICAgIChXZWJLaXQ6OkJhY2tpbmdTdG9yZTo6cGFpbnQpOgorICAgICAgICAoV2ViS2l0OjpCYWNr
aW5nU3RvcmU6OmluY29ycG9yYXRlVXBkYXRlKToKKyAgICAgICAgKFdlYktpdDo6QmFja2luZ1N0
b3JlOjpzY3JvbGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNw
cDogQWRkZWQgYSBnZXR0aW5nIGZvciB0aGUgdmlld1dpZGdldCwgd2hpY2ggaXMKKyAgICAgICAg
cmVxdWlyZWQgYnkgQmFja2luZ1N0b3JlR3RrLiBBIHNpbWlsYXIgZ2V0dGVyIGV4aXN0cyBmb3Ig
V2luZG93cyBhbmQgTWFjLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnZpZXdXaWRn
ZXQpOiBEaXR0by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3Bw
OiBSZW1vdmVkIHRoZXNlIGd1YXJkcyBhcyBEcmF3aW5nQXJlYVByb3h5SW1wbCBpcyB1c2VkIG9u
IGFsbCBwbGF0Zm9ybXMgbm93LgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6Y3JlYXRl
KTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmg6IERp
dHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYUltcGw6OnNlbmREaWRVcGRhdGVCYWNraW5nU3Rv
cmVTdGF0ZSk6IERvIG5vdCBndWFyZAorICAgICAgICB0aGlzIERyYXdpbmdBcmVhUHJveHlJbXBs
LXNwZWNpZmljIG1lc3NhZ2Ugd2l0aCBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOiBSZW1vdmVkIHRoZXNlIGd1YXJk
cyBhcyBEcmF3aW5nQXJlYVByb3h5SW1wbCBpcyB1c2VkIG9uIGFsbCBwbGF0Zm9ybXMgbm93Lgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRSZWNlaXZlTWVzc2FnZSk6IERpdHRvLgorCisy
MDExLTA1LTExICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKwogICAg
ICAgICBUcnkgdG8gZml4IHRoZSBXaW5DYWlybyBidWlsZC4KIAogICAgICAgICAqIFNoYXJlZC9T
aGFyZWFibGVCaXRtYXAuaDogQ29ycmVjdGx5IGluY2x1ZGUgUmVmUHRyQ2Fpcm8gaGVyZSBhbmQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktp
dDIvR05VbWFrZWZpbGUuYW0KaW5kZXggYzA5YTY5NDYwYjgxNjg0ZDBmOWU4M2MyYjc2Y2EwYWJk
MmZmMmY3NC4uNzU2ZDJlM2U0NDM2MDM1OWRmMzY2YjM0ZTM2MzdhNTdjZmIwNDU4NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYktpdDIv
R05VbWFrZWZpbGUuYW0KQEAgLTEwMiw2ICsxMDIsOCBAQCBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRH
VEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX1NP
VQogCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL01vZHVsZS5jcHAgXAogCVNvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL01vZHVsZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9QbGF0Zm9ybVBy
b2Nlc3NJZGVudGlmaWVyLmggXAorCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1JlZ2lvbi5jcHAg
XAorCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1JlZ2lvbi5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9SdW5Mb29wLmNwcCBcCiAJU291cmNlL1dlYktpdDIvUGxhdGZvcm0vUnVuTG9vcC5o
IFwKIAlTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaCBcCkBAIC0xODMsNiAr
MTg1LDcgQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VC
S0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9TT1UKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
RWRpdG9yU3RhdGUuaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL0ZvbnRTbW9vdGhpbmdMZXZl
bC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8u
Y3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL0xheWVyVHJlZUNvbnRleHRHdGsuY3Bw
IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYktleWJvYXJkRXZlbnRHdGsu
Y3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRHdGsu
Y3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYldoZWVsRXZlbnRHdGsu
Y3BwIFwKQEAgLTIzNyw2ICsyNDAsOCBAQCBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01B
Sk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX1NPVQogCVNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9TdHJpbmdQYWlyVmVjdG9yLmggXAogCVNvdXJjZS9XZWJLaXQyL1No
YXJlZC9UZXh0Q2hlY2tlclN0YXRlLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Vc2VyTWVz
c2FnZUNvZGVycy5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXBkYXRlSW5mby5jcHAgXAor
CVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9VcGRhdGVJbmZvLmggXAogCVNvdXJjZS9XZWJLaXQyL1No
YXJlZC9WaXNpdGVkTGlua1RhYmxlLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1Zpc2l0
ZWRMaW5rVGFibGUuaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0uY3BwIFwKQEAgLTM2NiwxMiArMzcxLDE2IEBAIGxpYndlYmtpdDJndGtfQFdFQktJVEdU
S19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfU09V
CiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYkNyZWRlbnRpYWwu
aCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYlByb3RlY3Rp
b25TcGFjZS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9X
ZWJQcm90ZWN0aW9uU3BhY2UuaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0JhY2tpbmdT
dG9yZS5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9CYWNraW5nU3RvcmUuaCBcCiAJ
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5LmNw
cCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVBy
b3h5LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAgXAog
CVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmggXAorCVNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5jcHAgXAorCVNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvRmluZEluZGljYXRvci5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9G
aW5kSW5kaWNhdG9yLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJh
Y2suaCBcCkBAIC0zNzksNiArMzg4LDcgQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9N
QUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9TT1UKIAlTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdFByb3h5LmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RQcm94eS5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3Rr
L0JhY2tpbmdTdG9yZUd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQ2h1
bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHlHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZ3RrL1RleHRDaGVja2VyR3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2d0ay9XZWJDb250ZXh0R3RrLmNwcCBcCkBAIC02NTMsNiArNjYzLDcgQEAgbGlid2Via2l0Mmd0
a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJT
SU9OQF9sYV9TT1UKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRGVjb2RlckFk
YXB0ZXIuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVh
LmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgg
XAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3Bw
IFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRW5jb2RlckFkYXB0ZXIuY3Bw
IFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRW5jb2RlckFkYXB0ZXIuaCBc
CiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcCBc
CkBAIC02NjAsNiArNjcxLDcgQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9W
RVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9TT1UKIAlTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYUd0ay5j
cHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViSW5zcGVjdG9y
R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdl
R3RrLmNwcCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhv
c3QuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXku
Y3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXkuaCBc
CiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1RpbGVkRHJhd2luZ0FyZWEuY3Bw
IFwKQEAgLTgwOSw2ICs4MjEsMTAgQEAgcGtnY29uZmlnX0RBVEEgKz0gU291cmNlL1dlYktpdDIv
Z3RrL0BXRUJLSVRHVEtfUENfTkFNRUAyLUBXRUJLSVRHVEtfQVBJX1ZFUlNJT04KIHdlYmtpdDJf
YnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9BdXRoZW50aWNhdGlv
bk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJLaXQyL0F1
dGhlbnRpY2F0aW9uTWFuYWdlck1lc3NhZ2VzLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYktpdDIv
RHJhd2luZ0FyZWFNZXNzYWdlUmVjZWl2ZXIuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJLaXQy
L0RyYXdpbmdBcmVhTWVzc2FnZXMuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9EcmF3aW5n
QXJlYVByb3h5TWVzc2FnZXMuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9EcmF3aW5nQXJl
YVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9Eb3du
bG9hZFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9E
b3dubG9hZFByb3h5TWVzc2FnZXMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9OUE9iamVj
dE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2VSZWNlaXZlci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL0xheWVyVHJlZUNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9MYXllclRyZWVDb250ZXh0LmgKaW5kZXggMjMzYjdhZWQ2YTNmNmU5NjQ2MTc2YmMyNThkZjQx
MzljYzA0M2VlNC4uMGZiNTUyYTY0NmE4OTBmZmM4MWY2YjVmZTdmZmE1YTc4YzEzM2E0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0xheWVyVHJlZUNvbnRleHQuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvTGF5ZXJUcmVlQ29udGV4dC5oCkBAIC0zMSw4ICszMSw2IEBA
IG5hbWVzcGFjZSBDb3JlSVBDIHsKICAgICBjbGFzcyBBcmd1bWVudEVuY29kZXI7CiB9CiAKLSNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBMYXllclRyZWVDb250ZXh0IHsKQEAgLTU5LDYgKzU3LDQgQEAgaW5saW5lIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBMYXllclRyZWVDb250ZXh0JiBhLCBjb25zdCBMYXllclRyZWVDb250ZXh0
JiBiKQogCiB9OwogCi0jZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotCiAj
ZW5kaWYgLy8gTGF5ZXJUcmVlQ29udGV4dF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvZ3RrL0xheWVyVHJlZUNvbnRleHRHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L2d0ay9MYXllclRyZWVDb250ZXh0R3RrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMWJmMWI0MTYzMDA1YzIw
ZmM1YzIzZDdhZjBkMDc4M2JlYjFmN2I4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL2d0ay9MYXllclRyZWVDb250ZXh0R3RrLmNwcApAQCAtMCwwICsxLDY2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxheWVyVHJlZUNvbnRl
eHQuaCIKKworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitMYXllclRyZWVDb250ZXh0OjpMYXllclRyZWVDb250ZXh0KCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCitMYXllclRyZWVDb250ZXh0Ojp+TGF5ZXJUcmVlQ29udGV4dCgpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBMYXllclRyZWVDb250ZXh0OjplbmNv
ZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKikgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCitib29sIExheWVyVHJlZUNvbnRleHQ6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVu
dERlY29kZXIqLCBMYXllclRyZWVDb250ZXh0JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIExheWVyVHJlZUNvbnRleHQ6OmlzRW1wdHkoKSBj
b25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jv
b2wgb3BlcmF0b3I9PShjb25zdCBMYXllclRyZWVDb250ZXh0JiwgY29uc3QgTGF5ZXJUcmVlQ29u
dGV4dCYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggYmIxYTczMWVjNDE4M2NjYTA2NmEyYjky
NWM2NGE4YzQ4MWVkZTQ4MS4uM2JjMzM1ZjljYTlkYWIyNDA0YzlmZmM0MDQ0Y2U2NTYxOTFmYmUw
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVu
dEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGll
bnRJbXBsLmNwcApAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIlBhZ2VDbGllbnRJbXBsLmgiCiAKLSNpbmNsdWRlICJDaHVua2VkVXBkYXRlRHJhd2luZ0Fy
ZWFQcm94eS5oIgorI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHlJbXBsLmgiCiAjaW5jbHVkZSAi
TmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYk1vdXNlRXZlbnQu
aCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgpAQCAtMjkwLDEzICsyOTAsMTIgQEAgdm9p
ZCBQYWdlQ2xpZW50SW1wbDo6Z2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVudChjb25zdCBOYXRp
dmVXZWJLZXlib2FyZEV2ZW50JgogLy8gUGFnZUNsaWVudCdzIHB1cmUgdmlydHVhbCBmdW5jdGlv
bnMKIFBhc3NPd25QdHI8RHJhd2luZ0FyZWFQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZURy
YXdpbmdBcmVhUHJveHkoKQogewotICAgIFdlYktpdFdlYlZpZXdCYXNlKiB2aWV3ID0gV0VCS0lU
X1dFQl9WSUVXX0JBU0UobV92aWV3V2lkZ2V0KTsKLSAgICByZXR1cm4gQ2h1bmtlZFVwZGF0ZURy
YXdpbmdBcmVhUHJveHk6OmNyZWF0ZSh2aWV3LCB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2Uodmll
dykpOworICAgIHJldHVybiBEcmF3aW5nQXJlYVByb3h5SW1wbDo6Y3JlYXRlKHdlYmtpdFdlYlZp
ZXdCYXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdXaWRnZXQpKSk7CiB9CiAK
LXZvaWQgUGFnZUNsaWVudEltcGw6OnNldFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBn
dGtfd2lkZ2V0X3F1ZXVlX2RyYXdfYXJlYShtX3ZpZXdXaWRnZXQsIHJlY3QueCgpLCByZWN0Lnko
KSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1w
bDo6ZGlzcGxheVZpZXcoKQpAQCAtMzA2LDcgKzMwNSw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6
OmRpc3BsYXlWaWV3KCkKIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2Nyb2xsVmlldyhjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3Jv
bGxPZmZzZXQpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBzZXRWaWV3TmVlZHNEaXNw
bGF5KHNjcm9sbFJlY3QpOwogfQogCiBXZWJDb3JlOjpJbnRTaXplIFBhZ2VDbGllbnRJbXBsOjp2
aWV3U2l6ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9Q
YWdlQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNs
aWVudEltcGwuaAppbmRleCBmMjBjYWE3MzBhY2I4NDAzNzM0ODQ4MTEyOTdhM2FiMTMzOGU3MjQ1
Li42NzY1MDdiOTgyZDYzNzlmODNiMjMzZjQ2OWE4MzZjM2ZhNTQwY2U4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTQ3LDYg
KzQ3LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFBhZ2VDbGllbnRJ
bXBsKHZpZXdXaWRnZXQpKTsKICAgICB9CiAKKyAgICBHdGtXaWRnZXQqIHZpZXdXaWRnZXQoKSB7
IHJldHVybiBtX3ZpZXdXaWRnZXQ7IH0KKwogICAgIHZvaWQgYWRkUGVuZGluZ0VkaXRvckNvbW1h
bmQoY29uc3QgY2hhciogY29tbWFuZCkgeyBtX3BlbmRpbmdFZGl0b3JDb21tYW5kcy5hcHBlbmQo
V1RGOjpTdHJpbmcoY29tbWFuZCkpOyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggMmE0
MWNlYTAyODVkODk0NmRjODE0YTY0YWE2M2Q2NDNjNTU5YWIwZS4uYmMzN2NiOTAyMTRiMGIzYjY5
NzQ3YWM5YzAzMzRiNmY3NGJhOTg2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtMjgsNiArMjgsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdCYXNlLmgiCiAKKyNp
bmNsdWRlICJEcmF3aW5nQXJlYVByb3h5SW1wbC5oIgogI2luY2x1ZGUgIkdPd25QdHJHdGsuaCIK
ICNpbmNsdWRlICJHdGtDbGlja0NvdW50ZXIuaCIKICNpbmNsdWRlICJHdGtWZXJzaW9uaW5nLmgi
CkBAIC0zNyw2ICszOCw3IEBACiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRl
ICJQYWdlQ2xpZW50SW1wbC5oIgogI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCisjaW5jbHVkZSAi
UmVnaW9uLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgogI2luY2x1ZGUgIldlYkV2ZW50RmFj
dG9yeS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oIgpAQCAtMTQ2LDMw
ICsxNDgsMzAgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2Jhc2VfaW5pdChXZWJLaXRX
ZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCiAgICAgcHJpdi0+cGFnZUNsaWVudCA9IFBh
Z2VDbGllbnRJbXBsOjpjcmVhdGUoR1RLX1dJREdFVCh3ZWJraXRXZWJWaWV3QmFzZSkpOwogfQog
CitzdGF0aWMgdm9pZCBjYWxsRHJhd2luZ0FyZWFQYWludE1ldGhvZChEcmF3aW5nQXJlYVByb3h5
KiBkcmF3aW5nQXJlYSwgY2Fpcm9fdCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgYXJlYSkKK3sK
KyAgICBXZWJLaXQ6OlJlZ2lvbiB1bnBhaW50ZWRSZWdpb247IC8vIFRoaXMgaXMgc2ltcGx5IHVu
dXNlZC4KKyAgICBzdGF0aWNfY2FzdDxEcmF3aW5nQXJlYVByb3h5SW1wbCo+KGRyYXdpbmdBcmVh
KS0+cGFpbnQoY29udGV4dCwgYXJlYSwgdW5wYWludGVkUmVnaW9uKTsKK30KKwogI2lmZGVmIEdU
S19BUElfVkVSU0lPTl8yCiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VFeHBvc2Uo
R3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50RXhwb3NlKiBldmVudCkKIHsKLSAgICBXZWJLaXRX
ZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRnZXQpOwot
CiAgICAgR2RrUmVjdGFuZ2xlIGNsaXBSZWN0OwogICAgIGdka19yZWdpb25fZ2V0X2NsaXBib3go
ZXZlbnQtPnJlZ2lvbiwgJmNsaXBSZWN0KTsKIAogICAgIFJlZlB0cjxjYWlyb190PiBjciA9IGFk
b3B0UmVmKGdka19jYWlyb19jcmVhdGUoZ3RrX3dpZGdldF9nZXRfd2luZG93KHdpZGdldCkpKTsK
LSAgICB3ZWJWaWV3QmFzZS0+cHJpdi0+cGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpLT5wYWludChj
bGlwUmVjdCwgY3IuZ2V0KCkpOwotCisgICAgY2FsbERyYXdpbmdBcmVhUGFpbnRNZXRob2QoV0VC
S0lUX1dFQl9WSUVXX0JBU0Uod2lkZ2V0KS0+cHJpdi0+cGFnZVByb3h5LT5kcmF3aW5nQXJlYSgp
LCBjci5nZXQoKSwgY2xpcFJlY3QpOwogICAgIHJldHVybiBGQUxTRTsKIH0KICNlbHNlCiBzdGF0
aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VEcmF3KEd0a1dpZGdldCogd2lkZ2V0LCBjYWly
b190KiBjcikKIHsKLSAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UgPSBXRUJLSVRf
V0VCX1ZJRVdfQkFTRSh3aWRnZXQpOwotCiAgICAgR2RrUmVjdGFuZ2xlIGNsaXBSZWN0OwogICAg
IGlmICghZ2RrX2NhaXJvX2dldF9jbGlwX3JlY3RhbmdsZShjciwgJmNsaXBSZWN0KSkKICAgICAg
ICAgcmV0dXJuIEZBTFNFOwogCi0gICAgd2ViVmlld0Jhc2UtPnByaXYtPnBhZ2VQcm94eS0+ZHJh
d2luZ0FyZWEoKS0+cGFpbnQoY2xpcFJlY3QsIGNyKTsKLQorICAgIGNhbGxEcmF3aW5nQXJlYVBh
aW50TWV0aG9kKFdFQktJVF9XRUJfVklFV19CQVNFKHdpZGdldCktPnByaXYtPnBhZ2VQcm94eS0+
ZHJhd2luZ0FyZWEoKSwgY3IsIGNsaXBSZWN0KTsKICAgICByZXR1cm4gRkFMU0U7CiB9CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9CYWNraW5nU3RvcmUuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9CYWNraW5nU3RvcmUuaAppbmRleCA5YTExOTQyYTE1
ZmZkNTMyMTc1MDk4MzRkOGJhNDhhYjQxOGY4OGIwLi43YTY5ZDdjNDRiZDkxZWIyMjIxNDJhNDE3
MmViOWRhY2U1ZmY0NTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQmFj
a2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5o
CkBAIC00MSw2ICs0MSwxMCBAQAogI2luY2x1ZGUgPFF0R3VpL1FQaXhtYXA+CiAjZW5kaWYKIAor
I2lmIFBMQVRGT1JNKEdUSykKKyNpbmNsdWRlIDxXZWJDb3JlL1JlZlB0ckNhaXJvLmg+CisjZW5k
aWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEludFJlY3Q7CiB9CkBAIC02Niw2
ICs3MCw4IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEhEQyBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4
dDsKICNlbGlmIFBMQVRGT1JNKFFUKQogICAgIHR5cGVkZWYgUVBhaW50ZXIqIFBsYXRmb3JtR3Jh
cGhpY3NDb250ZXh0OworI2VsaWYgUExBVEZPUk0oR1RLKQorICAgIHR5cGVkZWYgY2Fpcm9fdCog
UGxhdGZvcm1HcmFwaGljc0NvbnRleHQ7CiAjZW5kaWYKIAogICAgIHZvaWQgcGFpbnQoUGxhdGZv
cm1HcmFwaGljc0NvbnRleHQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKQEAgLTg5LDYgKzk1
LDggQEAgcHJpdmF0ZToKICAgICBPd25QdHI8SEJJVE1BUD4gbV9iaXRtYXA7CiAjZWxpZiBQTEFU
Rk9STShRVCkKICAgICBRUGl4bWFwIG1fcGl4bWFwOworI2VsaWYgUExBVEZPUk0oR1RLKQorICAg
IFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG1fc3VyZmFjZTsKICNlbmRpZgogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKaW5kZXggZjUzMTc1MGE0ZTYz
NDUzY2E1MzkyOTE1MzU1ZWVjMDkwMDdlMDNhYS4uNWYzNWU2NTY3ZWVmNTVlNmU4NTkwMWQxMjM4
ZDI4M2NiZjc5MDAyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdp
bmdBcmVhUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQ
cm94eS5oCkBAIC03Miw5ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgIERyYXdpbmdBcmVhVHlwZSB0
eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAKLSNpZiBQTEFURk9STShNQUMpIHx8IFBM
QVRGT1JNKFdJTikgfHwgUExBVEZPUk0oUVQpCiAgICAgdm9pZCBkaWRSZWNlaXZlRHJhd2luZ0Fy
ZWFQcm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwg
Q29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7Ci0jZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlE
LCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNzhkNTcy
NGQyNDgyOWYyZjgzMmQzMjBjZTlhYmNjM2Q5YzQzMzNmNC4uNjE0NDMwZTY0YmI5MTg1YTlmN2Fk
ZWQ0YTNiMjliMzQ0ZTQxZmQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0RyYXdpbmdBcmVhUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0RyYXdpbmdBcmVhUHJveHkubWVzc2FnZXMuaW4KQEAgLTIyLDggKzIyLDggQEAKIAogbWVz
c2FnZXMgLT4gRHJhd2luZ0FyZWFQcm94eSB7CiAgICAgVXBkYXRlKHVpbnQ2NF90IHN0YXRlSUQs
IFdlYktpdDo6VXBkYXRlSW5mbyB1cGRhdGVJbmZvKQotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKICAgICBEaWRVcGRhdGVCYWNraW5nU3RvcmVTdGF0ZSh1aW50NjRfdCBiYWNraW5n
U3RvcmVTdGF0ZUlELCBXZWJLaXQ6OlVwZGF0ZUluZm8gdXBkYXRlSW5mbywgV2ViS2l0OjpMYXll
clRyZWVDb250ZXh0IGNvbnRleHQpCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQog
ICAgIEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUodWludDY0X3QgYmFja2luZ1N0b3Jl
U3RhdGVJRCwgV2ViS2l0OjpMYXllclRyZWVDb250ZXh0IGNvbnRleHQpCiAgICAgRXhpdEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdNb2RlKHVpbnQ2NF90IGJhY2tpbmdTdG9yZVN0YXRlSUQsIFdlYktp
dDo6VXBkYXRlSW5mbyB1cGRhdGVJbmZvKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGUwMGUyNWM3MjJhNjA3OTVmMzI5OTA3MGYyOGJmYTQ0
ZGZhMjRlN2IuLmUzYTJkYTNkNjcyZDA0ZTgxMWNhMGZjYjdhZWI5MTQwZTM1NjFmMTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMzE3LDEyICsxMzE3
LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRSZXNpemVzVG9Db250ZW50c1VzaW5nTGF5b3V0
U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB0CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRS
ZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpN
ZXNzYWdlSUQgbWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50cykK
IHsKLSNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFdJTikgfHwgUExBVEZPUk0oUVQpCiAg
ICAgaWYgKG1lc3NhZ2VJRC5pczxDb3JlSVBDOjpNZXNzYWdlQ2xhc3NEcmF3aW5nQXJlYVByb3h5
PigpKSB7CiAgICAgICAgIG1fZHJhd2luZ0FyZWEtPmRpZFJlY2VpdmVEcmF3aW5nQXJlYVByb3h5
TWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3VtZW50cyk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0jZW5kaWYKIAogICAgIGlmIChtZXNzYWdlSUQuaXM8Q29yZUlQQzo6TWVzc2Fn
ZUNsYXNzRHJhd2luZ0FyZWFQcm94eUxlZ2FjeT4oKSkgewogICAgICAgICBtX2RyYXdpbmdBcmVh
LT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3VtZW50cyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMTZjMGJkMDI2NThjZDNl
ZGVhMzc4MTZlOThjZGVhZmNjOGFhZjZmNi4uMGQ0ZGM4YmQ1OWM1ZTMxNTZhMzBjZGNlYTkxMzMx
ODU5NTk3Njk0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAt
MzA2LDYgKzMwNiw5IEBAIHB1YmxpYzoKIAogICAgIEhXTkQgbmF0aXZlV2luZG93KCkgY29uc3Q7
CiAjZW5kaWYKKyNpZiBQTEFURk9STShHVEspCisgICAgR3RrV2lkZ2V0KiB2aWV3V2lkZ2V0KCk7
CisjZW5kaWYKICNpZiBFTkFCTEUoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICB2b2lkIHNldEFj
dHVhbFZpc2libGVDb250ZW50UmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9CYWNraW5nU3Rv
cmVHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9CYWNraW5nU3RvcmVHdGsu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjBmYzk1YzM4Nzc4OTkzNjUxY2QwMjdjMzY0OGY3NWM5OWRlMmVjNjUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0JhY2tpbmdT
dG9yZUd0ay5jcHAKQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEln
YWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCYWNr
aW5nU3RvcmUuaCIKKworI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgorI2luY2x1ZGUgIlVw
ZGF0ZUluZm8uaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L0dyYXBoaWNzQ29udGV4dC5oPgorI2luY2x1ZGUgPGNhaXJvL2NhaXJvLmg+CisjaW5jbHVkZSA8
Z3RrL2d0ay5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK3ZvaWQgQmFja2luZ1N0b3JlOjpwYWludChjYWlyb190KiBjb250ZXh0LCBjb25zdCBJ
bnRSZWN0JiByZWN0KQoreworICAgIGNhaXJvX3NldF9vcGVyYXRvcihjb250ZXh0LCBDQUlST19P
UEVSQVRPUl9TT1VSQ0UpOworICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjb250ZXh0LCBt
X3N1cmZhY2UuZ2V0KCksIDAsIDApOworICAgIGNhaXJvX3JlY3RhbmdsZShjb250ZXh0LCByZWN0
LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CisgICAgY2Fpcm9f
ZmlsbChjb250ZXh0KTsKK30KKwordm9pZCBCYWNraW5nU3RvcmU6OmluY29ycG9yYXRlVXBkYXRl
KFNoYXJlYWJsZUJpdG1hcCogYml0bWFwLCBjb25zdCBVcGRhdGVJbmZvJiB1cGRhdGVJbmZvKQor
eworICAgIEd0a1dpZGdldCogdmlld1dpZGdldCA9IG1fd2ViUGFnZVByb3h5LT52aWV3V2lkZ2V0
KCk7CisgICAgaWYgKCFtX3N1cmZhY2UpIHsKKyAgICAgICAgbV9zdXJmYWNlID0gYWRvcHRSZWYo
Z2RrX3dpbmRvd19jcmVhdGVfc2ltaWxhcl9zdXJmYWNlKGd0a193aWRnZXRfZ2V0X3dpbmRvdyh2
aWV3V2lkZ2V0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENBSVJPX0NPTlRFTlRfQ09MT1JfQUxQSEEsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
KCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpKSk7CisgICAgfQorCisgICAgc2Nyb2xsKHVwZGF0
ZUluZm8uc2Nyb2xsUmVjdCwgdXBkYXRlSW5mby5zY3JvbGxPZmZzZXQpOworCisgICAgLy8gUGFp
bnQgYWxsIHVwZGF0ZSByZWN0cy4KKyAgICBJbnRQb2ludCB1cGRhdGVSZWN0TG9jYXRpb24gPSB1
cGRhdGVJbmZvLnVwZGF0ZVJlY3RCb3VuZHMubG9jYXRpb24oKTsKKyAgICBSZWZQdHI8Y2Fpcm9f
dD4gY29udGV4dChhZG9wdFJlZihjYWlyb19jcmVhdGUobV9zdXJmYWNlLmdldCgpKSkpOworICAg
IEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQoY29udGV4dC5nZXQoKSk7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCB1cGRhdGVJbmZvLnVwZGF0ZVJlY3RzLnNpemUoKTsgKytpKSB7
CisgICAgICAgIEludFJlY3QgdXBkYXRlUmVjdCA9IHVwZGF0ZUluZm8udXBkYXRlUmVjdHNbaV07
CisgICAgICAgIEludFJlY3Qgc3JjUmVjdCA9IHVwZGF0ZVJlY3Q7CisgICAgICAgIHNyY1JlY3Qu
bW92ZSgtdXBkYXRlUmVjdExvY2F0aW9uLngoKSwgLXVwZGF0ZVJlY3RMb2NhdGlvbi55KCkpOwor
ICAgICAgICBiaXRtYXAtPnBhaW50KGdyYXBoaWNzQ29udGV4dCwgdXBkYXRlUmVjdC5sb2NhdGlv
bigpLCBzcmNSZWN0KTsKKyAgICB9Cit9CisKK3ZvaWQgQmFja2luZ1N0b3JlOjpzY3JvbGwoY29u
c3QgSW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgSW50U2l6ZSYgc2Nyb2xsT2Zmc2V0KQorewor
ICAgIGlmIChzY3JvbGxPZmZzZXQuaXNaZXJvKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEFT
U0VSVChtX3N1cmZhY2UpOworICAgIFJlZlB0cjxjYWlyb190PiBjb250ZXh0ID0gYWRvcHRSZWYo
Y2Fpcm9fY3JlYXRlKG1fc3VyZmFjZS5nZXQoKSkpOworICAgIGNhaXJvX3B1c2hfZ3JvdXAoY29u
dGV4dC5nZXQoKSk7CisKKyAgICBJbnRSZWN0IHRhcmdldFJlY3Qoc2Nyb2xsUmVjdCk7CisgICAg
dGFyZ2V0UmVjdC5tb3ZlKHNjcm9sbE9mZnNldCk7CisgICAgdGFyZ2V0UmVjdC5zaGlmdE1heFhF
ZGdlVG8odGFyZ2V0UmVjdC5tYXhYKCkgLSBzY3JvbGxPZmZzZXQud2lkdGgoKSk7CisgICAgdGFy
Z2V0UmVjdC5zaGlmdE1heFlFZGdlVG8odGFyZ2V0UmVjdC5tYXhZKCkgLSBzY3JvbGxPZmZzZXQu
aGVpZ2h0KCkpOworICAgIGlmICh0YXJnZXRSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNvbnRleHQuZ2V0KCksIG1fc3VyZmFj
ZS5nZXQoKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbE9mZnNldC53aWR0
aCgpLCBzY3JvbGxPZmZzZXQuaGVpZ2h0KCkpOworICAgIGNhaXJvX3JlY3RhbmdsZShjb250ZXh0
LmdldCgpLCB0YXJnZXRSZWN0LngoKSwgdGFyZ2V0UmVjdC55KCksIAorICAgICAgICAgICAgICAg
ICAgICB0YXJnZXRSZWN0LndpZHRoKCksIHRhcmdldFJlY3QuaGVpZ2h0KCkpOworICAgIGNhaXJv
X2ZpbGwoY29udGV4dC5nZXQoKSk7CisKKyAgICBjYWlyb19wb3BfZ3JvdXBfdG9fc291cmNlKGNv
bnRleHQuZ2V0KCkpOworICAgIGNhaXJvX3JlY3RhbmdsZShjb250ZXh0LmdldCgpLCB0YXJnZXRS
ZWN0LngoKSwgdGFyZ2V0UmVjdC55KCksCisgICAgICAgICAgICAgICAgICAgIHRhcmdldFJlY3Qu
d2lkdGgoKSwgdGFyZ2V0UmVjdC5oZWlnaHQoKSk7CisgICAgY2Fpcm9fZmlsbChjb250ZXh0Lmdl
dCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAKaW5kZXggODk0NWQxM2JhMGVlMzY5M2M0
NTk1OGJhZTlhYjhlNWZmYTRiNTZjMi4uMzkzYjRjNzkzN2Y0M2Q2OTgxNzU3ZmE0ZjNlOGFjNjA1
Zjg1YjFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdl
UHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVBy
b3h5R3RrLmNwcApAQCAtMjksMTAgKzI5LDE1IEBACiAKICNpbmNsdWRlICJOYXRpdmVXZWJLZXli
b2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJQYWdl
Q2xpZW50LmgiCisjaW5jbHVkZSAiUGFnZUNsaWVudEltcGwuaCIKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKK0d0a1dpZGdldCogV2ViUGFnZVByb3h5Ojp2aWV3V2lkZ2V0KCkKK3sKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8UGFnZUNsaWVudEltcGwqPihtX3BhZ2VDbGllbnQpLT52aWV3V2lkZ2V0
KCk7Cit9CisKIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0YW5kYXJkVXNlckFnZW50KGNvbnN0IFN0
cmluZyYgYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50KQogewogICAgIC8vIEZJWE1FOiBUaGlz
IHNob3VsZCBub3QgYmUgaGFyZCBjb2RlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwCmluZGV4IGJhZjBmM2E0YThiYTg3YjU4OTI3NWU1
MzU4NmJiMjVmYjdkOTNlODIuLjYzZTE5OWU3Mjg1ODVkZGMwMzZkMmRiOGMyMGU4NTQzZTQxOTBl
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5n
QXJlYS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdB
cmVhLmNwcApAQCAtMjgsMTAgKzI4LDcgQEAKIAogLy8gU3ViY2xhc3NlcwogI2luY2x1ZGUgIkNo
dW5rZWRVcGRhdGVEcmF3aW5nQXJlYS5oIgotCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9S
TShXSU4pIHx8IFBMQVRGT1JNKFFUKQogI2luY2x1ZGUgIkRyYXdpbmdBcmVhSW1wbC5oIgotI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoVElMRURfQkFDS0lOR19TVE9SRSkKICNpbmNsdWRlICJUaWxlZERy
YXdpbmdBcmVhLmgiCkBAIC00NSwxMSArNDIsNyBAQCBQYXNzT3duUHRyPERyYXdpbmdBcmVhPiBE
cmF3aW5nQXJlYTo6Y3JlYXRlKFdlYlBhZ2UqIHdlYlBhZ2UsIGNvbnN0IFdlYlBhZ2VDcmVhdAog
ewogICAgIHN3aXRjaCAocGFyYW1ldGVycy5kcmF3aW5nQXJlYVR5cGUpIHsKICAgICBjYXNlIERy
YXdpbmdBcmVhVHlwZUltcGw6Ci0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShXSU4pIHx8
IFBMQVRGT1JNKFFUKQogICAgICAgICByZXR1cm4gRHJhd2luZ0FyZWFJbXBsOjpjcmVhdGUod2Vi
UGFnZSwgcGFyYW1ldGVycyk7Ci0jZWxzZQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSNlbmRp
ZgogICAgIGNhc2UgRHJhd2luZ0FyZWFUeXBlQ2h1bmtlZFVwZGF0ZToKICAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWEod2ViUGFnZSkpOwogI2lmIEVO
QUJMRShUSUxFRF9CQUNLSU5HX1NUT1JFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAppbmRleCAzZDg3YTJhNDQwMDMwY2FhNDY1Njc3MDk4N2Jm
YjBlZTkyNDRkZmYxLi4wNzViY2NhMWZkZjI4ZDU2YjJiZTkyYWNlZGE4YTllMGE0YmU1MzAwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaApA
QCAtNTMsOSArNTMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8RHJhd2luZ0Fy
ZWE+IGNyZWF0ZShXZWJQYWdlKiwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwog
ICAgIHZpcnR1YWwgfkRyYXdpbmdBcmVhKCk7CiAgICAgCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBQ
TEFURk9STShXSU4pIHx8IFBMQVRGT1JNKFFUKQogICAgIHZvaWQgZGlkUmVjZWl2ZURyYXdpbmdB
cmVhTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3Jl
SVBDOjpBcmd1bWVudERlY29kZXIqKTsKLSNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIHNldE5l
ZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBzY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgc2Nyb2xsT2Zmc2V0KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCmluZGV4IDkzYTQ2ZWYxNjU1
NzM1ZDc3ZTZiZTMxY2NjNjU3ZmJiMzE0MGMyZmIuLjY5Nzg0ZWNlYmE0ZGZhZjIyMmY1OTIzMjEx
MWUxNTk1NGE0ZjkyZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCkBAIC0zMTgsNyArMzE4LDYgQEAgdm9pZCBEcmF3
aW5nQXJlYUltcGw6OnNlbmREaWRVcGRhdGVCYWNraW5nU3RvcmVTdGF0ZSgpCiAgICAgaWYgKCFt
X2lzUGFpbnRpbmdTdXNwZW5kZWQgJiYgKCFtX2xheWVyVHJlZUhvc3QgfHwgbV9sYXllclRyZWVI
b3N0LT5wYXJ0aWNpcGF0ZXNJbkRpc3BsYXkoKSkpCiAgICAgICAgIGRpc3BsYXkodXBkYXRlSW5m
byk7CiAKLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgTGF5ZXJUcmVlQ29u
dGV4dCBsYXllclRyZWVDb250ZXh0OwogCiAgICAgaWYgKG1faXNQYWludGluZ1N1c3BlbmRlZCB8
fCAobV9sYXllclRyZWVIb3N0ICYmICFtX2xheWVyVHJlZUhvc3QtPnBhcnRpY2lwYXRlc0luRGlz
cGxheSgpKSkgewpAQCAtMzM4LDcgKzMzNyw2IEBAIHZvaWQgRHJhd2luZ0FyZWFJbXBsOjpzZW5k
RGlkVXBkYXRlQmFja2luZ1N0b3JlU3RhdGUoKQogCiAgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpEcmF3aW5nQXJlYVByb3h5OjpEaWRVcGRhdGVCYWNraW5nU3RvcmVTdGF0ZShtX2JhY2tp
bmdTdG9yZVN0YXRlSUQsIHVwZGF0ZUluZm8sIGxheWVyVHJlZUNvbnRleHQpKTsKICAgICBtX2Nv
bXBvc2l0aW5nQWNjb3JkaW5nVG9Qcm94eU1lc3NhZ2VzID0gIWxheWVyVHJlZUNvbnRleHQuaXNF
bXB0eSgpOwotI2VuZGlmCiB9CiAKIHZvaWQgRHJhd2luZ0FyZWFJbXBsOjpkaWRVcGRhdGUoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGNh
ODExZmZmODE3NmY0YzRkMGQyNDBhNWU2MWU0MzBhODgzNWJiOTkuLjk2MGM0NGFiZjhiMTI1Yzc5
Yjc3ZTEwMDM1MzlmYTBmNDA1NzE3MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE5NjUsMTMgKzE5NjUsMTEgQEAgdm9pZCBXZWJQYWdl
OjpkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3Jl
SVBDOjpNZXNzYWcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotI2lmIFBMQVRGT1JNKE1BQykg
fHwgUExBVEZPUk0oV0lOKSB8fCBQTEFURk9STShRVCkKICAgICBpZiAobWVzc2FnZUlELmlzPENv
cmVJUEM6Ok1lc3NhZ2VDbGFzc0RyYXdpbmdBcmVhPigpKSB7CiAgICAgICAgIGlmIChtX2RyYXdp
bmdBcmVhKQogICAgICAgICAgICAgbV9kcmF3aW5nQXJlYS0+ZGlkUmVjZWl2ZURyYXdpbmdBcmVh
TWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3VtZW50cyk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0jZW5kaWYKICAgICAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmICht
ZXNzYWdlSUQuaXM8Q29yZUlQQzo6TWVzc2FnZUNsYXNzV2ViSW5zcGVjdG9yPigpKSB7Cg==
</data>
<flag name="review"
          id="86637"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>