<?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>184961</bug_id>
          
          <creation_ts>2018-04-25 02:03:45 -0700</creation_ts>
          <short_desc>[GTK][WPE] Initial ASYNC_SCROLLING support</short_desc>
          <delta_ts>2018-04-26 00:55:22 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1417472</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-04-25 02:03:45 -0700</bug_when>
    <thetext>[GTK][WPE] Enable ASYNC_SCROLLING</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417476</commentid>
    <comment_count>1</comment_count>
      <attachid>338715</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-04-25 02:18:58 -0700</bug_when>
    <thetext>Created attachment 338715
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417480</commentid>
    <comment_count>2</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-04-25 02:51:22 -0700</bug_when>
    <thetext>Is this the same as bug #151436? If this patch makes the one attached there obsolete, let&apos;s mark one of them as duplicate, please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417484</commentid>
    <comment_count>3</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-04-25 03:11:53 -0700</bug_when>
    <thetext>*** Bug 151436 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417489</commentid>
    <comment_count>4</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-04-25 03:25:26 -0700</bug_when>
    <thetext>*** Bug 153857 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417491</commentid>
    <comment_count>5</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-04-25 03:25:30 -0700</bug_when>
    <thetext>*** Bug 153858 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417493</commentid>
    <comment_count>6</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-04-25 03:25:33 -0700</bug_when>
    <thetext>*** Bug 154279 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417494</commentid>
    <comment_count>7</comment_count>
      <attachid>338717</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-04-25 03:39:06 -0700</bug_when>
    <thetext>Created attachment 338717
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417506</commentid>
    <comment_count>8</comment_count>
      <attachid>338717</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-04-25 05:46:51 -0700</bug_when>
    <thetext>Comment on attachment 338717
Patch

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

&gt; Source/WebCore/page/scrolling/coordinatedgraphics/ScrollingCoordinatorCoordinatedGraphics.h:36
&gt; +class ScrollingCoordinatorCoordinatedGraphics : public AsyncScrollingCoordinator {

final?

&gt; Source/WebCore/page/scrolling/coordinatedgraphics/ScrollingCoordinatorCoordinatedGraphics.h:52
&gt; +    Timer m_scrollingStateTreeCommitterTimer;

Any reason to use a WebCore timer here? Could we use a RunLoop::Timer instead that we can also set a priority?

&gt; Source/WebCore/page/scrolling/coordinatedgraphics/ScrollingTreeCoordinatedGraphics.cpp:65
&gt; +    ASSERT_NOT_REACHED();
&gt; +    return ScrollingTreeFixedNode::create(*this, nodeID);

If we use RELEASE_ASSERT_NOT_REACHED we don&apos;t need to add a fake return here.

&gt; Source/WebCore/page/scrolling/coordinatedgraphics/ScrollingTreeFixedNode.h:36
&gt; +class ScrollingTreeFixedNode : public ScrollingTreeNode {

final?

&gt; Source/WebCore/page/scrolling/coordinatedgraphics/ScrollingTreeFrameScrollingNodeCoordinatedGraphics.h:36
&gt; +class ScrollingTreeFrameScrollingNodeCoordinatedGraphics : public ScrollingTreeFrameScrollingNode {

final?

&gt; Source/WebCore/page/scrolling/coordinatedgraphics/ScrollingTreeStickyNode.h:36
&gt; +class ScrollingTreeStickyNode : public ScrollingTreeNode {

final?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417515</commentid>
    <comment_count>9</comment_count>
      <attachid>338717</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-04-25 06:34:55 -0700</bug_when>
    <thetext>Comment on attachment 338717
Patch

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

&gt;&gt; Source/WebCore/page/scrolling/coordinatedgraphics/ScrollingCoordinatorCoordinatedGraphics.h:36
&gt;&gt; +class ScrollingCoordinatorCoordinatedGraphics : public AsyncScrollingCoordinator {
&gt; 
&gt; final?

OK.

&gt;&gt; Source/WebCore/page/scrolling/coordinatedgraphics/ScrollingCoordinatorCoordinatedGraphics.h:52
&gt;&gt; +    Timer m_scrollingStateTreeCommitterTimer;
&gt; 
&gt; Any reason to use a WebCore timer here? Could we use a RunLoop::Timer instead that we can also set a priority?

OK.

&gt;&gt; Source/WebCore/page/scrolling/coordinatedgraphics/ScrollingTreeCoordinatedGraphics.cpp:65
&gt;&gt; +    return ScrollingTreeFixedNode::create(*this, nodeID);
&gt; 
&gt; If we use RELEASE_ASSERT_NOT_REACHED we don&apos;t need to add a fake return here.

We have to return something because of Ref&lt;&gt; being the return value, or am I missing something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417520</commentid>
    <comment_count>10</comment_count>
      <attachid>338726</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-04-25 06:47:53 -0700</bug_when>
    <thetext>Created attachment 338726
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417996</commentid>
    <comment_count>11</comment_count>
      <attachid>338726</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-04-25 23:48:58 -0700</bug_when>
    <thetext>Comment on attachment 338726
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        [GTK][WPE] Enable ASYNC_SCROLLING

I still find this confusing, please rename the bug title as something like &quot;add initial implementation of async scrolling for coordinated graphics&quot; or something similar.

&gt; Source/WebCore/ChangeLog:17
&gt; +        While the build-time flag is enabled, the feature is still not usable
&gt; +        both due to the mentioned pending changes and further enabling in the
&gt; +        WebKit layer.

Make it clear here that it&apos;s disabled at runtime, please. At least for me &quot;not usable&quot; doesn&apos;t imply it&apos;s disabled.

&gt; Source/WebKit/ChangeLog:14
&gt; +        Despite enabling the code at build-time, the feature (as intended) is
&gt; +        not yet used because of the DrawingArea rejection in the WebPage
&gt; +        constructor.

Ok, it&apos;s clear here now, thanks!

&gt; Source/WebCore/page/scrolling/coordinatedgraphics/ScrollingCoordinatorCoordinatedGraphics.cpp:45
&gt; +    , m_scrollingStateTreeCommitterTimer(RunLoop::main(), this, &amp;ScrollingCoordinatorCoordinatedGraphics::commitTreeState)

What thread is this supposed to run in? Should we use current() instead of main()? If it&apos;s the main one, we should probably set a priority to this timer, I would add at least a FIXME to add it later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418000</commentid>
    <comment_count>12</comment_count>
      <attachid>338726</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-04-26 00:32:17 -0700</bug_when>
    <thetext>Comment on attachment 338726
Patch

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

&gt;&gt; Source/WebCore/page/scrolling/coordinatedgraphics/ScrollingCoordinatorCoordinatedGraphics.cpp:45
&gt;&gt; +    , m_scrollingStateTreeCommitterTimer(RunLoop::main(), this, &amp;ScrollingCoordinatorCoordinatedGraphics::commitTreeState)
&gt; 
&gt; What thread is this supposed to run in? Should we use current() instead of main()? If it&apos;s the main one, we should probably set a priority to this timer, I would add at least a FIXME to add it later.

The main one. It&apos;s not clear yet what the best priority for it should be, so I&apos;ll add a FIXME.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418001</commentid>
    <comment_count>13</comment_count>
      <attachid>338863</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-04-26 00:36:11 -0700</bug_when>
    <thetext>Created attachment 338863
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418002</commentid>
    <comment_count>14</comment_count>
      <attachid>338863</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-04-26 00:54:22 -0700</bug_when>
    <thetext>Comment on attachment 338863
Patch for landing

Clearing flags on attachment: 338863

Committed r231043: &lt;https://trac.webkit.org/changeset/231043&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418003</commentid>
    <comment_count>15</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-04-26 00:54:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1418004</commentid>
    <comment_count>16</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-04-26 00:55:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/39750623&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338715</attachid>
            <date>2018-04-25 02:18:58 -0700</date>
            <delta_ts>2018-04-25 03:39:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184961-20180425111856.patch</filename>
            <type>text/plain</type>
            <size>52894</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwOTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTk1ZGY1MjE5NTE4Njhh
NmQyNzZhMzA0MjlmMmIzZDFjZTEyNjkyZC4uMTMwYzhhMzg4MTQyMWUxNzI5YzkwYzgxMDNhMTRh
NzE2ZjZkZmVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDE4LTA0LTI1ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEVu
YWJsZSBBU1lOQ19TQ1JPTExJTkcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4NDk2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBDb29yZGluYXRlZEdyYXBoaWNzLXNwZWNpZmljIGNvZGUgdGhhdCB3
aWxsIGJlIHJlcXVpcmVkIGZvciBhc3luYworICAgICAgICBzY3JvbGxpbmcgc3VwcG9ydC4gVGhl
IFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcyBhbmQKKyAgICAgICAgU2Ny
b2xsaW5nVHJlZUNvb3JkaW5hdGVkR3JhcGhpY3MgY2xhc3NlcyBhcmUgbW9zdGx5IGNvbXBsZXRl
IGFscmVhZHksCisgICAgICAgIGJ1dCB0aGUgbmV3IFNjcm9sbGluZ1RyZWVOb2RlLWluaGVyaXRp
bmcgY2xhc3NlcyB3aWxsIG5lZWQgZnVydGhlcgorICAgICAgICB3b3JrIHRoYXQgd2lsbCBoYXZl
IHRvIGJlIGRvbmUgaW4gcGFyYWxsZWwgd2l0aCBvdGhlciBpbXByb3ZlbWVudHMKKyAgICAgICAg
cGxhbm5lZCBmb3IgdGhlIENvb3JkaW5hdGVkR3JhcGhpY3Mgc3Vic3lzdGVtLgorCisgICAgICAg
IFdoaWxlIHRoZSBidWlsZC10aW1lIGZsYWcgaXMgZW5hYmxlZCwgdGhlIGZlYXR1cmUgaXMgc3Rp
bGwgbm90IHVzYWJsZQorICAgICAgICBib3RoIGR1ZSB0byB0aGUgbWVudGlvbmVkIHBlbmRpbmcg
Y2hhbmdlcyBhbmQgZnVydGhlciBlbmFibGluZyBpbiB0aGUKKyAgICAgICAgV2ViS2l0IGxheWVy
LgorCisgICAgICAgIFZhcmlvdXMgYnVpbGQgZml4ZXMgdGhhdCBhZGRyZXNzIG5vbi1Db2NvYSB1
c2FnZSBvZiBBU1lOQ19TQ1JPTExJTkcKKyAgICAgICAgY29kZSBhcmUgaW5jbHVkZWQuCisKKyAg
ICAgICAgKiBTb3VyY2VzLnR4dDogQWRkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIHRv
IGJ1aWxkLgorICAgICAgICAqIFNvdXJjZXNHVEsudHh0OiBBZGQgbmV3IGZpbGVzIHRvIGJ1aWxk
LgorICAgICAgICAqIFNvdXJjZXNXUEUudHh0OiBEaXR0by4KKyAgICAgICAgKiBwYWdlL3Njcm9s
bGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgR3VhcmQgc2V0U3Rh
dGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KCkgd2l0aCBDU1NfU0NST0xMX1NOQVAu
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oOgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHA6CisgICAgICAgICogcGFnZS9z
Y3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmg6CisgICAgICAgIGN1cnJlbnRTbmFwUG9p
bnRJbmRpY2VzRGlkQ2hhbmdlKCkgbWV0aG9kIGlzIG9ubHkgaW52b2tlZCBpbgorICAgICAgICBD
b2NvYS1zcGVjaWZpYyBjb2RlLCBhbmQgaXRzIGltcGxlbWVudGF0aW9uIGNhbGxzIENvY29hLXNw
ZWNpZmljIG1ldGhvZAorICAgICAgICBvbiB0aGUgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvciBj
bGFzcy4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9s
bGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdDb29yZGluYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljczo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JD
b29yZGluYXRlZEdyYXBoaWNzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5h
dG9yQ29vcmRpbmF0ZWRHcmFwaGljczo6flNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRH
cmFwaGljcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5h
dGVkR3JhcGhpY3M6OnBhZ2VEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
Q29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzOjpjb21taXRUcmVlU3RhdGVJZk5lZWRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhp
Y3M6OmhhbmRsZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRp
bmF0b3JDb29yZGluYXRlZEdyYXBoaWNzOjpzY2hlZHVsZVRyZWVTdGF0ZUNvbW1pdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3M6OmNv
bW1pdFRyZWVTdGF0ZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFw
aGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuaDogQWRkZWQuCisg
ICAgICAgICogcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdUcmVl
Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nVHJlZUNvb3JkaW5hdGVkR3JhcGhpY3M6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdUcmVlQ29vcmRpbmF0ZWRHcmFwaGljczo6U2Nyb2xsaW5nVHJlZUNvb3JkaW5hdGVk
R3JhcGhpY3MpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUNvb3JkaW5hdGVkR3Jh
cGhpY3M6OmNyZWF0ZVNjcm9sbGluZ1RyZWVOb2RlKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ1RyZWVDb29yZGluYXRlZEdyYXBoaWNzLmg6
IEFkZGVkLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Ny
b2xsaW5nVHJlZUZpeGVkTm9kZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nVHJlZUZpeGVkTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1Ry
ZWVGaXhlZE5vZGU6OlNjcm9sbGluZ1RyZWVGaXhlZE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6flNjcm9sbGluZ1RyZWVGaXhlZE5vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6Y29tbWl0U3RhdGVCZWZvcmVDaGls
ZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRml4ZWROb2RlOjp1cGRhdGVM
YXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9jb29y
ZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuaDogQWRkZWQuCisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUNvb3JkaW5hdGVkR3JhcGhpY3M6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlQ29vcmRpbmF0ZWRHcmFwaGljczo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUNv
b3JkaW5hdGVkR3JhcGhpY3MpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZUNvb3JkaW5hdGVkR3JhcGhpY3M6OmhhbmRsZVdoZWVsRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUNvb3JkaW5hdGVk
R3JhcGhpY3M6OnNjcm9sbFBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVDb29yZGluYXRlZEdyYXBoaWNzOjpzZXRTY3JvbGxQ
b3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlQ29vcmRpbmF0ZWRHcmFwaGljczo6c2V0U2Nyb2xsUG9zaXRpb25XaXRob3V0Q29udGVudEVk
Z2VDb25zdHJhaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlQ29vcmRpbmF0ZWRHcmFwaGljczo6c2V0U2Nyb2xsTGF5ZXJQb3NpdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlQ29vcmRpbmF0
ZWRHcmFwaGljczo6dXBkYXRlTGF5ZXJzQWZ0ZXJWaWV3cG9ydENoYW5nZSk6CisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlQ29vcmRpbmF0ZWRHcmFwaGljcy5oOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL3Nj
cm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpTY3JvbGxpbmdU
cmVlU3RpY2t5Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZTo6flNjcm9sbGluZ1RyZWVTdGlja3lOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1RyZWVTdGlja3lOb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjp1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9y
Q2hhbmdlKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Nj
cm9sbGluZ1RyZWVTdGlja3lOb2RlLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRm
b3JtV2hlZWxFdmVudC5oOiBFbmFibGUgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgY29kZQorICAg
ICAgICBmb3IgV1BFLiBHdWFyZCBsYXRjaGluZy1zcGVjaWZpYyBtZXRob2RzIHVuZGVyIEFTWU5D
X1NDUk9MTElORy4KKyAgICAgICAgKiBwbGF0Zm9ybS9UZXh0dXJlTWFwcGVyLmNtYWtlOiBUd28g
YnVpbGQgdGFyZ2V0cyBoYXZlIGJlZW4gbW92ZWQgdG8KKyAgICAgICAgU291cmNlc0dUSy50eHQg
YW5kIFNvdXJjZXNXUEUudHh0LgorCiAyMDE4LTA0LTI0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFJlbGVhc2UgYXNzZXJ0IGluIFNjcmlwdENvbnRyb2xsZXI6
OmNhbkV4ZWN1dGVTY3JpcHRzIHZpYSBDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0
YSBkdXJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggZmJkZTU0OTMxZWM4YTE3ZDZhMmExNjk1Mzc5N2U3N2U5N2Zh
OTlkMS4uZTRiZDk3YWQ2NTMyY2M1NjM4NGYzODczNzdiMjZmM2NlNzVmMjU0MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMiBAQAorMjAxOC0wNC0yNSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGln
YWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBFbmFibGUgQVNZTkNfU0NST0xMSU5HCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ5NjEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHdWFyZCBSZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvciBhbmQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94
eQorICAgICAgICB1c2FnZSBpbiBXZWJDaHJvbWVDbGllbnQgYW5kIFdlYlBhZ2VQcm94eSwgcmVz
cGVjdGl2ZWx5LCB3aXRoCisgICAgICAgIFBMQVRGT1JNKENPQ09BKSBpbiBhZGRpdGlvbiB0byB0
aGUgQVNZTkNfU0NST0xMSU5HIGd1YXJkcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmluaXRpYWxpemVXZWJQ
YWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYW5kbGVXaGVlbEV2ZW50KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVUb3VjaEV2ZW50VHJhY2tpbmcp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkNocm9tZUNsaWVudDo6Y3JlYXRlU2Nyb2xsaW5nQ29vcmRpbmF0b3IgY29uc3QpOgorCiAy
MDE4LTA0LTI0ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAg
ICAgICAgIFtXaW5DYWlyb10gQWRkIFdLVmlldyBhbmQgV0tBUEkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXgg
MDM4ODUzZTQzZjZiYmQxNjdmNDlhYWQzZmY4OGRjN2NmYWM2NmEwMy4uNGJhYzJjMDg1ZWRmZmY4
MDQ3NjQ4OGI5Mjk3YmE3MDk2ODViYzlhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE0MzYsNiArMTQz
Niw3IEBAIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5jcHAKIHBhZ2UvY3Nw
L0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwCiBwYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlLmNwcAogCitwYWdlL3Njcm9sbGluZy9Bc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAogcGFnZS9zY3JvbGxpbmcvQXhpc1Njcm9sbFNuYXBP
ZmZzZXRzLmNwcAogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsTGF0Y2hpbmdTdGF0ZS5jcHAKIHBhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ0NvbnN0cmFpbnRzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvU291cmNlc0dUSy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dAppbmRl
eCBmZmNhOWEyOWEzODVhZGI1OTQ3YjhjMzI0ZTc5ZjJjNTBjNjdiNTQwLi45MmFjZDBiY2FmZDZl
MGFiZDY1ZWY0ZjY1ZWI5NDU2NDE5OWNmODVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzR1RLLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dApAQCAtNDYs
NiArNDYsMTMgQEAgbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcAogcGFnZS9saW51
eC9SZXNvdXJjZVVzYWdlT3ZlcmxheUxpbnV4LmNwcAogcGFnZS9saW51eC9SZXNvdXJjZVVzYWdl
VGhyZWFkTGludXguY3BwCiAKK3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Ny
b2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmNwcAorcGFnZS9zY3JvbGxpbmcv
Y29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdUcmVlQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAK
K3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nVHJlZUZpeGVkTm9k
ZS5jcHAKK3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCitwYWdlL3Njcm9sbGluZy9j
b29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcAorcGFnZS9zY3Jv
bGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdTdGF0ZU5vZGVDb29yZGluYXRlZEdy
YXBoaWNzLmNwcAorCiBwYWdlL3Njcm9sbGluZy9nZW5lcmljL1Njcm9sbGluZ1RocmVhZEdlbmVy
aWMuY3BwCiAKIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzV1BFLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNX
UEUudHh0CmluZGV4IGU4NjFkYWU1ZDM2ODY0YWE5YzY5YTE0MWEyYjI0YzFlZmQ2ZmMzYjAuLmZj
MDAxOWI1M2JhNTg1ZWYwOTIzNzE4ZDdkNzRiNzA5OTFiNmE1MTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNXUEUudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNXUEUu
dHh0CkBAIC0zMiw2ICszMiwxMCBAQCBwYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGlu
dXguY3BwCiBwYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VUaHJlYWRMaW51eC5jcHAKIAogcGFnZS9z
Y3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5h
dGVkR3JhcGhpY3MuY3BwCitwYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9s
bGluZ1RyZWVDb29yZGluYXRlZEdyYXBoaWNzLmNwcAorcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0
ZWRncmFwaGljcy9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmNwcAorcGFnZS9zY3JvbGxpbmcvY29v
cmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlQ29vcmRpbmF0
ZWRHcmFwaGljcy5jcHAKK3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xs
aW5nVHJlZVN0aWNreU5vZGUuY3BwCiBwYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNz
L1Njcm9sbGluZ1N0YXRlTm9kZUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCiAKIHBhZ2Uvc2Nyb2xs
aW5nL2dlbmVyaWMvU2Nyb2xsaW5nVGhyZWFkR2VuZXJpYy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5j
cHAKaW5kZXggZTJlY2Q1YTJmZjlhN2JiMThlZTg2NTZjMGJiMWU0YTJlOGFiOGJhZi4uMGJmMzE5
N2UxN2YwNjBjMDk1YjZmZWE5ZTcwMzYzZWZkY2NlZDMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5j
cHAKQEAgLTY0LDYgKzY0LDcgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY3Jv
bGxpbmdTdGF0ZVRyZWVQcm9wZXJ0aWVzQ2hhbmdlZCgpCiAgICAgc2NoZWR1bGVUcmVlU3RhdGVD
b21taXQoKTsKIH0KIAorI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiBzdGF0aWMgaW5saW5l
IHZvaWQgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZSYgbm9kZSwgU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IFZlY3Rv
cjxMYXlvdXRVbml0Piogc25hcE9mZnNldHMsIGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5n
ZTxMYXlvdXRVbml0Pj4qIHNuYXBPZmZzZXRSYW5nZXMsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9y
KQogewogICAgIC8vIEZJWE1FOiBJbmNvcnBvcmF0ZSBjdXJyZW50IHBhZ2Ugc2NhbGUgZmFjdG9y
IGluIHNuYXBwaW5nIHRvIGRldmljZSBwaXhlbC4gUGVyaGFwcyB3ZSBzaG91bGQganVzdCBjb252
ZXJ0IHRvIGZsb2F0IGhlcmUgYW5kIGxldCBVSSBwcm9jZXNzIGRvIHRoZSBwaXhlbCBzbmFwcGlu
Zz8KQEAgLTg4LDYgKzg5LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHNldFN0YXRlU2Nyb2xsaW5n
Tm9kZVNuYXBPZmZzZXRzQXNGbG9hdChTY3JvbGxpbmdTdGF0ZVNjcm9sbGkKICAgICAgICAgbm9k
ZS5zZXRWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMoc25hcE9mZnNldFJhbmdlc0FzRmxvYXQpOwog
ICAgIH0KIH0KKyNlbmRpZgogCiB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldEV2
ZW50VHJhY2tpbmdSZWdpb25zRGlydHkoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZS5oCmluZGV4IDE5NDAxNGFlNWEzZTk3ZTkzYmNlODQwYzkyODU1
NTY4NmEwNTRiNDQuLjFkOWRlYWFkYmVmYjYxYTMzYjI4M2JlMDNiNjA3ZTFmOTg1YTY4YTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKQEAgLTkx
LDggKzkxLDYgQEAgcHVibGljOgogICAgIC8vIGFuZCBjYWxsIHNjcm9sbGluZ1RyZWVOb2RlRGlk
U2Nyb2xsKCkuCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNjcm9sbFBvc2l0aW9u
Q2hhbmdlZFZpYURlbGVnYXRlZFNjcm9sbGluZyhTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBib29sIGluVXNlckludGVyYWN0aW9uKTsK
IAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBjdXJyZW50U25hcFBvaW50SW5kaWNl
c0RpZENoYW5nZShTY3JvbGxpbmdOb2RlSUQsIHVuc2lnbmVkIGhvcml6b250YWwsIHVuc2lnbmVk
IHZlcnRpY2FsKSA9IDA7Ci0KICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgcmVwb3J0
U3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zQ2hhbmdlZChNb25vdG9uaWNUaW1lLCBTeW5jaHJv
bm91c1Njcm9sbGluZ1JlYXNvbnMpIHsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9p
ZCByZXBvcnRFeHBvc2VkVW5maWxsZWRBcmVhKE1vbm90b25pY1RpbWUsIHVuc2lnbmVkIC8qIHVu
ZmlsbGVkQXJlYSAqLykgeyB9CiAKQEAgLTExNCw2ICsxMTIsMTAgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVUZXN0RGVmZXJyYWxGb3JSZWFzb24oV2hlZWxFdmVudFRlc3RUcmln
Z2VyOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6RGVm
ZXJUZXN0VHJpZ2dlclJlYXNvbikgeyB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKENPQ09BKQor
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBjdXJyZW50U25hcFBvaW50SW5kaWNlc0Rp
ZENoYW5nZShTY3JvbGxpbmdOb2RlSUQsIHVuc2lnbmVkIGhvcml6b250YWwsIHVuc2lnbmVkIHZl
cnRpY2FsKSA9IDA7CisjZW5kaWYKKwogICAgIC8vIENhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhy
ZWFkLiBXaWxsIHVwZGF0ZSB3aGF0IGVkZ2VzIGFsbG93IHJ1YmJlci1iYW5kaW5nLgogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2FuUnViYmVyQmFuZFN0YXRlKGJvb2wgY2FuUnViYmVyQmFu
ZEF0TGVmdCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRSaWdodCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRU
b3AsIGJvb2wgY2FuUnViYmVyQmFuZEF0Qm90dG9tKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAKaW5kZXggZjg1
ZTY0ZGU3MWNiZDNkNWIyOWY0MGE3ZTQ1OTY3ZDc0YjI3ZmE0Zi4uNWM3YmE4MDNiNmY5OGMxYmE3
YzFmNWY0YTFiNWQ2NWU2YzBmNTg2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwCkBAIC0zMSwxMCArMzEsOCBA
QAogI2luY2x1ZGUgIkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybVdoZWVsRXZlbnQuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdUaHJlYWQuaCIKLSNpbmNsdWRl
ICJTY3JvbGxpbmdUcmVlRml4ZWROb2RlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZU5vZGUu
aCIKICNpbmNsdWRlICJTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oIgotI2luY2x1ZGUgIlNj
cm9sbGluZ1RyZWVTdGlja3lOb2RlLmgiCiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtMTE5LDYgKzExNyw3IEBAIHZvaWQgVGhyZWFkZWRTY3JvbGxp
bmdUcmVlOjpyZXBvcnRFeHBvc2VkVW5maWxsZWRBcmVhKE1vbm90b25pY1RpbWUgdGltZXN0YW1w
LCB1CiAgICAgfSk7CiB9CiAKKyNpZiBQTEFURk9STShDT0NPQSkKIHZvaWQgVGhyZWFkZWRTY3Jv
bGxpbmdUcmVlOjpjdXJyZW50U25hcFBvaW50SW5kaWNlc0RpZENoYW5nZShTY3JvbGxpbmdOb2Rl
SUQgbm9kZUlELCB1bnNpZ25lZCBob3Jpem9udGFsLCB1bnNpZ25lZCB2ZXJ0aWNhbCkKIHsKICAg
ICBpZiAoIW1fc2Nyb2xsaW5nQ29vcmRpbmF0b3IpCkBAIC0xMjgsNiArMTI3LDcgQEAgdm9pZCBU
aHJlYWRlZFNjcm9sbGluZ1RyZWU6OmN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKFNj
cm9sbGluZ05vZGVJRCBub2QKICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNldEFjdGl2
ZVNjcm9sbFNuYXBJbmRpY2VzKG5vZGVJRCwgaG9yaXpvbnRhbCwgdmVydGljYWwpOwogICAgIH0p
OwogfQorI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCiB2b2lkIFRocmVhZGVkU2Nyb2xsaW5n
VHJlZTo6aGFuZGxlV2hlZWxFdmVudFBoYXNlKFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIHBoYXNl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3Jv
bGxpbmdUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9s
bGluZ1RyZWUuaAppbmRleCA0NmY2NDNjMDFhNmRhMjU0YTFlNzRkMDU0MmYzMjg5MjViODNkMzJk
Li5kYjNjM2Q1Y2ZiOWU5MDhiM2Y3ZDIzZGQxNjhmOTIwZDFjN2EzNDgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuaApA
QCAtNTgsNyArNTgsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgVGhyZWFkZWRTY3JvbGxp
bmdUcmVlKEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3ImKTsKIAogICAgIHZvaWQgc2Nyb2xsaW5n
VHJlZU5vZGVEaWRTY3JvbGwoU2Nyb2xsaW5nTm9kZUlELCBjb25zdCBGbG9hdFBvaW50JiBzY3Jv
bGxQb3NpdGlvbiwgY29uc3Qgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiYgbGF5b3V0Vmlld3Bv
cnRPcmlnaW4sIFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24gPSBTY3JvbGxpbmdMYXllclBv
c2l0aW9uQWN0aW9uOjpTeW5jKSBvdmVycmlkZTsKLSAgICB2b2lkIGN1cnJlbnRTbmFwUG9pbnRJ
bmRpY2VzRGlkQ2hhbmdlKFNjcm9sbGluZ05vZGVJRCwgdW5zaWduZWQgaG9yaXpvbnRhbCwgdW5z
aWduZWQgdmVydGljYWwpIG92ZXJyaWRlOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIGhh
bmRsZVdoZWVsRXZlbnRQaGFzZShQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBzZXRBY3RpdmVTY3JvbGxTbmFwSW5kaWNlcyhTY3JvbGxpbmdOb2RlSUQsIHVuc2ln
bmVkIGhvcml6b250YWxJbmRleCwgdW5zaWduZWQgdmVydGljYWxJbmRleCkgb3ZlcnJpZGU7CkBA
IC02Niw2ICs2NSwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCByZW1vdmVUZXN0RGVmZXJyYWxG
b3JSZWFzb24oV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIs
IFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6RGVmZXJUZXN0VHJpZ2dlclJlYXNvbikgb3ZlcnJpZGU7
CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgY3VycmVudFNuYXBQb2lu
dEluZGljZXNEaWRDaGFuZ2UoU2Nyb2xsaW5nTm9kZUlELCB1bnNpZ25lZCBob3Jpem9udGFsLCB1
bnNpZ25lZCB2ZXJ0aWNhbCkgb3ZlcnJpZGU7CisjZW5kaWYKKwogICAgIHZvaWQgcmVwb3J0RXhw
b3NlZFVuZmlsbGVkQXJlYShNb25vdG9uaWNUaW1lLCB1bnNpZ25lZCB1bmZpbGxlZEFyZWEpIG92
ZXJyaWRlOwogICAgIHZvaWQgcmVwb3J0U3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zQ2hhbmdl
ZChNb25vdG9uaWNUaW1lLCBTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMpIG92ZXJyaWRlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdy
YXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nv
b3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKaW5kZXggYjFhNDc3NThiOTI0OWM3ZjZi
OTYyNTdhNWQwMTI3ODA1NzFkZGQzMC4uMDkzOTk5Mzc3YTQ5Y2M5NTE0MGYzNTVhMGYwNWYyNTI2
MzAyYmNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRp
bmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3Mv
U2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmNwcApAQCAtMSwzOSArMSw5
NCBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwogICogYXJlIG1ldDoKKyAqCiAgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAogICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCiAgKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJTY3JvbGxpbmdDb29yZGluYXRvci5oIgorI2luY2x1ZGUgIlNjcm9s
bGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5oIgogCiAjaWYgVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTKQogCisjaW5jbHVkZSAiU2Nyb2xsaW5nVGhyZWFkLmgiCisjaW5jbHVkZSAi
U2Nyb2xsaW5nVHJlZUNvb3JkaW5hdGVkR3JhcGhpY3MuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBSZWY8U2Nyb2xsaW5nQ29vcmRpbmF0b3I+IFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjcmVh
dGUoUGFnZSogcGFnZSkKIHsKLSAgICAvLyBGSVhNRTogUmV0dXJuIGFuIG9iamVjdCBpbXBsZW1l
bnRpbmcgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci4KLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTY3JvbGxpbmdDb29yZGluYXRvcihwYWdlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzKHBhZ2UpKTsKK30KKworU2Ny
b2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzOjpTY3JvbGxpbmdDb29yZGluYXRv
ckNvb3JkaW5hdGVkR3JhcGhpY3MoUGFnZSogcGFnZSkKKyAgICA6IEFzeW5jU2Nyb2xsaW5nQ29v
cmRpbmF0b3IocGFnZSkKKyAgICAsIG1fc2Nyb2xsaW5nU3RhdGVUcmVlQ29tbWl0dGVyVGltZXIo
KnRoaXMsICZTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3M6OmNvbW1pdFRy
ZWVTdGF0ZSkKK3sKKyAgICBzZXRTY3JvbGxpbmdUcmVlKFNjcm9sbGluZ1RyZWVDb29yZGluYXRl
ZEdyYXBoaWNzOjpjcmVhdGUoKnRoaXMpKTsKK30KKworU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29y
ZGluYXRlZEdyYXBoaWNzOjp+U2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNz
KCkKK3sKKyAgICBBU1NFUlQoIXNjcm9sbGluZ1RyZWUoKSk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5n
Q29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzOjpwYWdlRGVzdHJveWVkKCkKK3sKKyAgICBB
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpwYWdlRGVzdHJveWVkKCk7CisKKyAgICBtX3Njcm9s
bGluZ1N0YXRlVHJlZUNvbW1pdHRlclRpbWVyLnN0b3AoKTsKKworICAgIHJlbGVhc2VTY3JvbGxp
bmdUcmVlKCk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBo
aWNzOjpjb21taXRUcmVlU3RhdGVJZk5lZWRlZCgpCit7CisgICAgY29tbWl0VHJlZVN0YXRlKCk7
CisgICAgbV9zY3JvbGxpbmdTdGF0ZVRyZWVDb21taXR0ZXJUaW1lci5zdG9wKCk7Cit9CisKK2Jv
b2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzOjpoYW5kbGVXaGVlbEV2
ZW50KEZyYW1lVmlldyYsIGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpCit7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCit2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGlj
czo6c2NoZWR1bGVUcmVlU3RhdGVDb21taXQoKQoreworICAgIGlmICghbV9zY3JvbGxpbmdTdGF0
ZVRyZWVDb21taXR0ZXJUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3Njcm9sbGluZ1N0YXRl
VHJlZUNvbW1pdHRlclRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOworfQorCit2b2lkIFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljczo6Y29tbWl0VHJlZVN0YXRlKCkKK3sKKyAg
ICBpZiAoIXNjcm9sbGluZ1N0YXRlVHJlZSgpLT5oYXNDaGFuZ2VkUHJvcGVydGllcygpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8VGhyZWFkZWRTY3JvbGxpbmdUcmVlPiB0aHJlYWRl
ZFNjcm9sbGluZ1RyZWUgPSBkb3duY2FzdDxUaHJlYWRlZFNjcm9sbGluZ1RyZWU+KHNjcm9sbGlu
Z1RyZWUoKSk7CisKKyAgICBhdXRvIHRyZWVTdGF0ZSA9IHNjcm9sbGluZ1N0YXRlVHJlZSgpLT5j
b21taXQoTGF5ZXJSZXByZXNlbnRhdGlvbjo6UGxhdGZvcm1MYXllclJlcHJlc2VudGF0aW9uKTsK
KyAgICBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKFt0aHJlYWRlZFNjcm9sbGluZ1RyZWUsIHRy
ZWVTdGF0ZSA9IFdURk1vdmUodHJlZVN0YXRlKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgdGhyZWFk
ZWRTY3JvbGxpbmdUcmVlLT5jb21taXRUcmVlU3RhdGUoV1RGTW92ZSh0cmVlU3RhdGUpKTsKKyAg
ICB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGlu
YXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBo
aWNzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmJmY2IxMzNmYzY4Y2UwNmE4ZjcwN2E4OGQ5ZTQ2YWYxOTA4NzQ5
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3Jk
aW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmgK
QEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoQVNZTkNfU0NST0xMSU5HKSAmJiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisKKyNpbmNs
dWRlICJBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzIDogcHVibGlj
IEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IgeworcHVibGljOgorICAgIGV4cGxpY2l0IFNjcm9s
bGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcyhQYWdlKik7CisgICAgdmlydHVhbCB+
U2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzKCk7CisKKyAgICB2b2lkIHBh
Z2VEZXN0cm95ZWQoKSBvdmVycmlkZTsKKworICAgIHZvaWQgY29tbWl0VHJlZVN0YXRlSWZOZWVk
ZWQoKSBvdmVycmlkZTsKKworICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudChGcmFtZVZpZXcmLCBj
b25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICB2b2lk
IHNjaGVkdWxlVHJlZVN0YXRlQ29tbWl0KCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGNvbW1pdFRy
ZWVTdGF0ZSgpOworCisgICAgVGltZXIgbV9zY3JvbGxpbmdTdGF0ZVRyZWVDb21taXR0ZXJUaW1l
cjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBU1lO
Q19TQ1JPTExJTkcpICYmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5n
VHJlZUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdUcmVlQ29vcmRpbmF0ZWRHcmFwaGljcy5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYWIzN2I5MDkxMjViM2YxNGE4ODI0NmY4ZGZkNDZiOGVmNzM4N2Y2YQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5h
dGVkZ3JhcGhpY3MvU2Nyb2xsaW5nVHJlZUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCkBAIC0wLDAg
KzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorICogICAgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJT
Y3JvbGxpbmdUcmVlQ29vcmRpbmF0ZWRHcmFwaGljcy5oIgorCisjaWYgRU5BQkxFKEFTWU5DX1ND
Uk9MTElORykgJiYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorCisjaW5jbHVkZSAiU2Nyb2xs
aW5nVHJlZUZpeGVkTm9kZS5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVDb29yZGluYXRlZEdyYXBoaWNzLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZVN0aWNr
eU5vZGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8U2Nyb2xsaW5nVHJlZUNvb3Jk
aW5hdGVkR3JhcGhpY3M+IFNjcm9sbGluZ1RyZWVDb29yZGluYXRlZEdyYXBoaWNzOjpjcmVhdGUo
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvciYgc2Nyb2xsaW5nQ29vcmRpbmF0b3IpCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU2Nyb2xsaW5nVHJlZUNvb3JkaW5hdGVkR3JhcGhpY3Moc2Ny
b2xsaW5nQ29vcmRpbmF0b3IpKTsKK30KKworU2Nyb2xsaW5nVHJlZUNvb3JkaW5hdGVkR3JhcGhp
Y3M6OlNjcm9sbGluZ1RyZWVDb29yZGluYXRlZEdyYXBoaWNzKEFzeW5jU2Nyb2xsaW5nQ29vcmRp
bmF0b3ImIHNjcm9sbGluZ0Nvb3JkaW5hdG9yKQorICAgIDogVGhyZWFkZWRTY3JvbGxpbmdUcmVl
KHNjcm9sbGluZ0Nvb3JkaW5hdG9yKQoreworfQorCitSZWY8U2Nyb2xsaW5nVHJlZU5vZGU+IFNj
cm9sbGluZ1RyZWVDb29yZGluYXRlZEdyYXBoaWNzOjpjcmVhdGVTY3JvbGxpbmdUcmVlTm9kZShT
Y3JvbGxpbmdOb2RlVHlwZSBub2RlVHlwZSwgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKK3sKKyAg
ICBzd2l0Y2ggKG5vZGVUeXBlKSB7CisgICAgY2FzZSBNYWluRnJhbWVTY3JvbGxpbmdOb2RlOgor
ICAgIGNhc2UgU3ViZnJhbWVTY3JvbGxpbmdOb2RlOgorICAgICAgICByZXR1cm4gU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUNvb3JkaW5hdGVkR3JhcGhpY3M6OmNyZWF0ZSgqdGhpcywg
bm9kZVR5cGUsIG5vZGVJRCk7CisgICAgY2FzZSBPdmVyZmxvd1Njcm9sbGluZ05vZGU6CisgICAg
ICAgIC8vIFNob3VsZCBub3QgYmUgcmVhY2hlZCAtLSBjYXVnaHQgYnkgQVNTRVJUX05PVF9SRUFD
SEVEKCkgYmVsb3cuCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRml4ZWROb2RlOgorICAgICAg
ICByZXR1cm4gU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6Y3JlYXRlKCp0aGlzLCBub2RlSUQpOwor
ICAgIGNhc2UgU3RpY2t5Tm9kZToKKyAgICAgICAgcmV0dXJuIFNjcm9sbGluZ1RyZWVTdGlja3lO
b2RlOjpjcmVhdGUoKnRoaXMsIG5vZGVJRCk7CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU6OmNyZWF0ZSgqdGhpcywg
bm9kZUlEKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KEFTWU5DX1NDUk9MTElORykgJiYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3Jv
bGxpbmdUcmVlQ29vcmRpbmF0ZWRHcmFwaGljcy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdUcmVlQ29vcmRpbmF0ZWRHcmFwaGlj
cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjQ1YmI2NDVlYjNiNmI2MjY1NjU4MzcwMDUxYjI4MjE3Y2I0OWU3ODAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGlu
YXRlZGdyYXBoaWNzL1Njcm9sbGluZ1RyZWVDb29yZGluYXRlZEdyYXBoaWNzLmgKQEAgLTAsMCAr
MSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVNZTkNf
U0NST0xMSU5HKSAmJiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisKKyNpbmNsdWRlICJUaHJl
YWRlZFNjcm9sbGluZ1RyZWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTY3Jv
bGxpbmdUcmVlQ29vcmRpbmF0ZWRHcmFwaGljcyBmaW5hbCA6IHB1YmxpYyBUaHJlYWRlZFNjcm9s
bGluZ1RyZWUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U2Nyb2xsaW5nVHJlZUNvb3JkaW5h
dGVkR3JhcGhpY3M+IGNyZWF0ZShBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yJik7CisKK3ByaXZh
dGU6CisgICAgZXhwbGljaXQgU2Nyb2xsaW5nVHJlZUNvb3JkaW5hdGVkR3JhcGhpY3MoQXN5bmNT
Y3JvbGxpbmdDb29yZGluYXRvciYpOworCisgICAgUmVmPFNjcm9sbGluZ1RyZWVOb2RlPiBjcmVh
dGVTY3JvbGxpbmdUcmVlTm9kZShTY3JvbGxpbmdOb2RlVHlwZSwgU2Nyb2xsaW5nTm9kZUlEKSBv
dmVycmlkZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShBU1lOQ19TQ1JPTExJTkcpICYmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Ny
b2xsaW5nVHJlZUZpeGVkTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9j
b29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjI0MDgxNzAzZWIxZDQ4MjdlMmQ2ZTFiYzY5ZmVhMmFiYzI0MmMyZTMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Nj
cm9sbGluZ1RyZWVGaXhlZE5vZGUuY3BwCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcK
KyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZAorICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBI
T0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlRml4ZWROb2RlLmgi
CisKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU+
IFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU6OmNyZWF0ZShTY3JvbGxpbmdUcmVlJiBzY3JvbGxpbmdU
cmVlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNjcm9sbGluZ1RyZWVGaXhlZE5vZGUoc2Nyb2xsaW5nVHJlZSwgbm9kZUlEKSk7Cit9CisKK1Nj
cm9sbGluZ1RyZWVGaXhlZE5vZGU6OlNjcm9sbGluZ1RyZWVGaXhlZE5vZGUoU2Nyb2xsaW5nVHJl
ZSYgc2Nyb2xsaW5nVHJlZSwgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKKyAgICA6IFNjcm9sbGlu
Z1RyZWVOb2RlKHNjcm9sbGluZ1RyZWUsIEZpeGVkTm9kZSwgbm9kZUlEKQoreworICAgIHNjcm9s
bGluZ1RyZWUuZml4ZWRPclN0aWNreU5vZGVBZGRlZCgpOworfQorCitTY3JvbGxpbmdUcmVlRml4
ZWROb2RlOjp+U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZSgpCit7CisgICAgc2Nyb2xsaW5nVHJlZSgp
LmZpeGVkT3JTdGlja3lOb2RlUmVtb3ZlZCgpOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVGaXhl
ZE5vZGU6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2Rl
JikKK3sKK30KKwordm9pZCBTY3JvbGxpbmdUcmVlRml4ZWROb2RlOjp1cGRhdGVMYXllcnNBZnRl
ckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVOb2RlJiwgY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgRmxvYXRTaXplJikKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0
ZWRncmFwaGljcy9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40MDgzNWQyZDc4YzcwYTkxZjA0NmVhNDZiYzA5NGU2NTI2ZTU1OTJhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRn
cmFwaGljcy9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlTm9kZS5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGUg
OiBwdWJsaWMgU2Nyb2xsaW5nVHJlZU5vZGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U2Ny
b2xsaW5nVHJlZUZpeGVkTm9kZT4gY3JlYXRlKFNjcm9sbGluZ1RyZWUmLCBTY3JvbGxpbmdOb2Rl
SUQpOworICAgIHZpcnR1YWwgflNjcm9sbGluZ1RyZWVGaXhlZE5vZGUoKTsKKworcHJpdmF0ZToK
KyAgICBTY3JvbGxpbmdUcmVlRml4ZWROb2RlKFNjcm9sbGluZ1RyZWUmLCBTY3JvbGxpbmdOb2Rl
SUQpOworCisgICAgdm9pZCBjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGlu
Z1N0YXRlTm9kZSYpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3Rv
ckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEZsb2F0U2l6ZSYpIG92ZXJyaWRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0
ZWRncmFwaGljcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlQ29vcmRpbmF0ZWRHcmFw
aGljcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBo
aWNzL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVDb29yZGluYXRlZEdyYXBoaWNzLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lY2M2ZjMxNzMwNjE2MDMwZGE4NjVmZmM5YjhlMGI5M2I4NjY2MzYyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0
ZWRncmFwaGljcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlQ29vcmRpbmF0ZWRHcmFw
aGljcy5jcHAKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2Fs
aWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1l
ciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisg
KiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVDb29yZGluYXRl
ZEdyYXBoaWNzLmgiCisKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1MpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFNjcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGU+IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVDb29y
ZGluYXRlZEdyYXBoaWNzOjpjcmVhdGUoU2Nyb2xsaW5nVHJlZSYgc2Nyb2xsaW5nVHJlZSwgU2Ny
b2xsaW5nTm9kZVR5cGUgbm9kZVR5cGUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUNvb3Jk
aW5hdGVkR3JhcGhpY3Moc2Nyb2xsaW5nVHJlZSwgbm9kZVR5cGUsIG5vZGVJRCkpOworfQorCitT
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlQ29vcmRpbmF0ZWRHcmFwaGljczo6U2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUNvb3JkaW5hdGVkR3JhcGhpY3MoU2Nyb2xsaW5nVHJl
ZSYgc2Nyb2xsaW5nVHJlZSwgU2Nyb2xsaW5nTm9kZVR5cGUgbm9kZVR5cGUsIFNjcm9sbGluZ05v
ZGVJRCBub2RlSUQpCisgICAgOiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlKHNjcm9s
bGluZ1RyZWUsIG5vZGVUeXBlLCBub2RlSUQpCit7Cit9CisKK1Njcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVDb29yZGluYXRlZEdyYXBoaWNzOjp+U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZUNvb3JkaW5hdGVkR3JhcGhpY3MoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUNvb3JkaW5hdGVkR3JhcGhpY3M6OmhhbmRsZVdoZWVsRXZl
bnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JikKK3sKK30KKworRmxvYXRQb2ludCBTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlQ29vcmRpbmF0ZWRHcmFwaGljczo6c2Nyb2xsUG9zaXRp
b24oKSBjb25zdAoreworICAgIHJldHVybiB7IH07Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZUNvb3JkaW5hdGVkR3JhcGhpY3M6OnNldFNjcm9sbFBvc2l0aW9uKGNv
bnN0IEZsb2F0UG9pbnQmKQoreworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVDb29yZGluYXRlZEdyYXBoaWNzOjpzZXRTY3JvbGxQb3NpdGlvbldpdGhvdXRDb250ZW50
RWRnZUNvbnN0cmFpbnRzKGNvbnN0IEZsb2F0UG9pbnQmKQoreworfQorCit2b2lkIFNjcm9sbGlu
Z1RyZWVGcmFtZVNjcm9sbGluZ05vZGVDb29yZGluYXRlZEdyYXBoaWNzOjpzZXRTY3JvbGxMYXll
clBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFJlY3QmKQoreworfQorCit2
b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVDb29yZGluYXRlZEdyYXBoaWNzOjp1
cGRhdGVMYXllcnNBZnRlclZpZXdwb3J0Q2hhbmdlKGNvbnN0IEZsb2F0UmVjdCYsIGRvdWJsZSkK
K3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFTWU5D
X1NDUk9MTElORykgJiYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlQ29vcmRpbmF0ZWRHcmFwaGljcy5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlQ29vcmRpbmF0ZWRHcmFwaGljcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwNzJiNzVmMDUx
NTA4YTNjMTkzZDExNGYyZjJkNGJhMmU5NTgzNWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVDb29yZGluYXRlZEdyYXBoaWNzLmgKQEAgLTAsMCArMSw1NiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5H
KSAmJiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUNvb3JkaW5hdGVkR3JhcGhpY3MgOiBwdWJsaWMg
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJl
ZjxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPiBjcmVhdGUoU2Nyb2xsaW5nVHJlZSYs
IFNjcm9sbGluZ05vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQpOworICAgIHZpcnR1YWwgflNjcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVDb29yZGluYXRlZEdyYXBoaWNzKCk7CisKK3ByaXZh
dGU6CisgICAgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUNvb3JkaW5hdGVkR3JhcGhp
Y3MoU2Nyb2xsaW5nVHJlZSYsIFNjcm9sbGluZ05vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQpOwor
CisgICAgdm9pZCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpIG92
ZXJyaWRlOworCisgICAgRmxvYXRQb2ludCBzY3JvbGxQb3NpdGlvbigpIGNvbnN0IG92ZXJyaWRl
OworICAgIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRl
OworICAgIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb25XaXRob3V0Q29udGVudEVkZ2VDb25zdHJhaW50
cyhjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRTY3JvbGxMYXllclBv
c2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKwor
ICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJWaWV3cG9ydENoYW5nZShjb25zdCBGbG9hdFJlY3Qm
LCBkb3VibGUpIG92ZXJyaWRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRn
cmFwaGljcy9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yNWE3Njg5MTQyMzQwZmI1ZmEyODkwM2U2NzcxYzVmMGM3NTdlYjBkCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0
ZWRncmFwaGljcy9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAKQEAgLTAsMCArMSw2MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1Ry
ZWVTdGlja3lOb2RlLmgiCisKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1MpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFNjcm9sbGlu
Z1RyZWVTdGlja3lOb2RlPiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6Y3JlYXRlKFNjcm9sbGlu
Z1RyZWUmIHNjcm9sbGluZ1RyZWUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUoc2Nyb2xsaW5nVHJlZSwg
bm9kZUlEKSk7Cit9CisKK1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpTY3JvbGxpbmdUcmVlU3Rp
Y2t5Tm9kZShTY3JvbGxpbmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2RlSUQgbm9k
ZUlEKQorICAgIDogU2Nyb2xsaW5nVHJlZU5vZGUoc2Nyb2xsaW5nVHJlZSwgU3RpY2t5Tm9kZSwg
bm9kZUlEKQoreworICAgIHNjcm9sbGluZ1RyZWUuZml4ZWRPclN0aWNreU5vZGVBZGRlZCgpOwor
fQorCitTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6flNjcm9sbGluZ1RyZWVTdGlja3lOb2RlKCkK
K3sKKyAgICBzY3JvbGxpbmdUcmVlKCkuZml4ZWRPclN0aWNreU5vZGVSZW1vdmVkKCk7Cit9CisK
K3ZvaWQgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4o
Y29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikKK3sKK30KKwordm9pZCBTY3JvbGxpbmdUcmVlU3Rp
Y2t5Tm9kZTo6dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdU
cmVlTm9kZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYpCit7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcp
ICYmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nVHJlZVN0aWNreU5v
ZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3Mv
U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNzY1NDc0YWE0ODE5NTg5ZTBh
N2FjYWViNmUwNjhlNTIwNzkwOGE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZS5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMu
TC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorICogICAg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorCisj
aW5jbHVkZSAiU2Nyb2xsaW5nVHJlZU5vZGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSA6IHB1YmxpYyBTY3JvbGxpbmdUcmVlTm9kZSB7
CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZT4gY3JlYXRl
KFNjcm9sbGluZ1RyZWUmLCBTY3JvbGxpbmdOb2RlSUQpOworICAgIHZpcnR1YWwgflNjcm9sbGlu
Z1RyZWVTdGlja3lOb2RlKCk7CisKK3ByaXZhdGU6CisgICAgU2Nyb2xsaW5nVHJlZVN0aWNreU5v
ZGUoU2Nyb2xsaW5nVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7CisKKyAgICB2b2lkIGNvbW1pdFN0
YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCB1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1Ry
ZWVOb2RlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJikgb3ZlcnJpZGU7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NS
T0xMSU5HKSAmJiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCmluZGV4IGMxYjZhMmE4ZjFhMWY3ZWQxYzZlZmIz
MGVlZjIwOGVhMDk5OWNjNTQuLmUxZDJkM2IzZmI0NTRjZDJmNDQ4OTdlYTRlY2QzMjJjOWY2NzJj
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCkBA
IC00OCw3ICs0OCw3IEBAIGVudW0gUGxhdGZvcm1XaGVlbEV2ZW50R3JhbnVsYXJpdHkgOiB1aW50
OF90IHsKICAgICBTY3JvbGxCeVBpeGVsV2hlZWxFdmVudCwKIH07CiAKLSNpZiBQTEFURk9STShD
T0NPQSkgfHwgUExBVEZPUk0oR1RLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShH
VEspIHx8IFBMQVRGT1JNKFdQRSkKIAogZW51bSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSA6IHVp
bnQ4X3QgewogICAgIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlTm9uZSA9IDAsCkBAIC0xMzUsNiAr
MTM1LDkgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIHNjcm9sbENvdW50KCkgY29uc3QgeyByZXR1
cm4gbV9zY3JvbGxDb3VudDsgfQogICAgIGZsb2F0IHVuYWNjZWxlcmF0ZWRTY3JvbGxpbmdEZWx0
YVgoKSBjb25zdCB7IHJldHVybiBtX3VuYWNjZWxlcmF0ZWRTY3JvbGxpbmdEZWx0YVg7IH0KICAg
ICBmbG9hdCB1bmFjY2VsZXJhdGVkU2Nyb2xsaW5nRGVsdGFZKCkgY29uc3QgeyByZXR1cm4gbV91
bmFjY2VsZXJhdGVkU2Nyb2xsaW5nRGVsdGFZOyB9CisjZW5kaWYKKworI2lmIEVOQUJMRShBU1lO
Q19TQ1JPTExJTkcpCiAgICAgYm9vbCB1c2VMYXRjaGVkRXZlbnRFbGVtZW50KCkgY29uc3Q7CiAg
ICAgYm9vbCBzaG91bGRDb25zaWRlckxhdGNoaW5nKCkgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRS
ZXNldExhdGNoaW5nKCkgY29uc3Q7CkBAIC0xNDMsNyArMTQ2LDcgQEAgcHVibGljOgogICAgIGJv
b2wgdXNlTGF0Y2hlZEV2ZW50RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5k
aWYKIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShHVEspCisjaWYgUExBVEZPUk0o
Q09DT0EpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIFBsYXRmb3JtV2hl
ZWxFdmVudFBoYXNlIHBoYXNlKCkgY29uc3QgeyByZXR1cm4gbV9waGFzZTsgfQogICAgIFBsYXRm
b3JtV2hlZWxFdmVudFBoYXNlIG1vbWVudHVtUGhhc2UoKSBjb25zdCB7IHJldHVybiBtX21vbWVu
dHVtUGhhc2U7IH0KICAgICBib29sIGlzRW5kT2ZOb25Nb21lbnR1bVNjcm9sbCgpIGNvbnN0OwpA
QCAtMTY4LDcgKzE3MSw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBTY3JvbGxpbmcgdmVsb2NpdHkg
aW4gcGl4ZWxzIHBlciBzZWNvbmQuCiAgICAgRmxvYXRTaXplIG1fc2Nyb2xsaW5nVmVsb2NpdHk7
CiAKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oR1RLKQorI2lmIFBMQVRGT1JNKENP
Q09BKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKICAgICBQbGF0Zm9ybVdoZWVs
RXZlbnRQaGFzZSBtX3BoYXNlIHsgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VOb25lIH07CiAgICAg
UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgbV9tb21lbnR1bVBoYXNlIHsgUGxhdGZvcm1XaGVlbEV2
ZW50UGhhc2VOb25lIH07CiAjZW5kaWYKQEAgLTE4MCw3ICsxODMsNyBAQCBwcm90ZWN0ZWQ6CiAj
ZW5kaWYKIH07CiAKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xM
SU5HKQogCiBpbmxpbmUgYm9vbCBQbGF0Zm9ybVdoZWVsRXZlbnQ6OnVzZUxhdGNoZWRFdmVudEVs
ZW1lbnQoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGV4
dHVyZU1hcHBlci5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RleHR1cmVNYXBwZXIu
Y21ha2UKaW5kZXggZWE5MjZjZWUyMWIzODZhNDY5YmUzNDdhODI5YTk4NWUxNTQ0ZWJmMi4uNmVh
YjZhMGExODk1YWRhZjc4NzUxZDE5MGMxNjg4ZDQ3YmZjNzdmZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVGV4dHVyZU1hcHBlci5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9UZXh0dXJlTWFwcGVyLmNtYWtlCkBAIC0zMCw5ICszMCw2IEBAIGlmIChVU0Vf
Q09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQiCiAgICAgKQogICAgIGxpc3QoQVBQRU5EIFdlYkNv
cmVfU09VUkNFUwotICAgICAgICBwYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKLSAgICAgICAgcGFnZS9z
Y3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdTdGF0ZU5vZGVDb29yZGluYXRl
ZEdyYXBoaWNzLmNwcAotCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDE0ZGU1YzVjZDJkNWQwN2RmY2Y5MDVi
MmYyOTIyZDBiYmRlNDE4NTguLjgwZWQzNDk3ZWExMGQ3M2FiOGFlNzcxNTU3ZDMyN2IyZTNlMzBh
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTU1LDcg
KzE1NSw3IEBACiAjaW5jbHVkZSAiQVBJQXBwbGljYXRpb25NYW5pZmVzdC5oIgogI2VuZGlmCiAK
LSNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQorI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcp
ICYmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
UHJveHkuaCIKICNlbmRpZgogCkBAIC04MDMsNyArODAzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmluaXRpYWxpemVXZWJQYWdlKCkKICAgICBtX2RyYXdpbmdBcmVhID0gbV9wYWdlQ2xpZW50LmNy
ZWF0ZURyYXdpbmdBcmVhUHJveHkoKTsKICAgICBBU1NFUlQobV9kcmF3aW5nQXJlYSk7CiAKLSNp
ZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQorI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYm
IFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChtX2RyYXdpbmdBcmVhLT50eXBlKCkgPT0gRHJhd2lu
Z0FyZWFUeXBlUmVtb3RlTGF5ZXJUcmVlKSB7CiAgICAgICAgIG1fc2Nyb2xsaW5nQ29vcmRpbmF0
b3JQcm94eSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94
eT4oKnRoaXMpOwogI2lmIFBMQVRGT1JNKElPUykKQEAgLTIwMTUsNyArMjAxNSw3IEBAIHN0YXRp
YyBXZWJXaGVlbEV2ZW50IGNvYWxlc2NlZFdoZWVsRXZlbnQoRGVxdWU8TmF0aXZlV2ViV2hlZWxF
dmVudD4mIHF1ZXVlLCBWZWN0CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVXaGVlbEV2ZW50
KGNvbnN0IE5hdGl2ZVdlYldoZWVsRXZlbnQmIGV2ZW50KQogewotI2lmIEVOQUJMRShBU1lOQ19T
Q1JPTExJTkcpCisjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgaWYgKG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSAmJiBtX3Njcm9sbGluZ0Nvb3Jk
aW5hdG9yUHJveHktPmhhbmRsZVdoZWVsRXZlbnQocGxhdGZvcm0oZXZlbnQpKSkKICAgICAgICAg
cmV0dXJuOwogI2VuZGlmCkBAIC0yMTg5LDcgKzIxODksNyBAQCBzdGF0aWMgVHJhY2tpbmdUeXBl
IG1lcmdlVHJhY2tpbmdUeXBlcyhUcmFja2luZ1R5cGUgYSwgVHJhY2tpbmdUeXBlIGIpCiAKIHZv
aWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVUb3VjaEV2ZW50VHJhY2tpbmcoY29uc3QgV2ViVG91Y2hF
dmVudCYgdG91Y2hTdGFydEV2ZW50KQogewotI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCisj
aWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0oQ09DT0EpCiAgICAgY29uc3Qg
RXZlbnROYW1lcyYgbmFtZXMgPSBldmVudE5hbWVzKCk7CiAgICAgZm9yIChhdXRvJiB0b3VjaFBv
aW50IDogdG91Y2hTdGFydEV2ZW50LnRvdWNoUG9pbnRzKCkpIHsKICAgICAgICAgSW50UG9pbnQg
bG9jYXRpb24gPSB0b3VjaFBvaW50LmxvY2F0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCmluZGV4IGYxMjMyNWE2NmFmZGFiMWNjNmUzM2RlNjVmNjZhMTRlMWMyZDZk
NmYuLmNjYWVkZWQzMTNkMGJlNzJiZGY2MDk0NTFhZjIzOGRiMTVkNTJjMWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0zNDcsNyArMzQ3LDcgQEAgcHVibGljOgog
ICAgIE5TQXJyYXkgKmRhdGFEZXRlY3Rpb25SZXN1bHRzKCkgeyByZXR1cm4gbV9kYXRhRGV0ZWN0
aW9uUmVzdWx0cy5nZXQoKTsgfQogI2VuZGlmCiAgICAgICAgIAotI2lmIEVOQUJMRShBU1lOQ19T
Q1JPTExJTkcpCisjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSogc2Nyb2xsaW5nQ29vcmRpbmF0
b3JQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5nZXQo
KTsgfQogI2VuZGlmCiAKQEAgLTE3NzgsNyArMTc3OCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2lzTG9hZGluZ0FsdGVybmF0ZUhUTUxTdHJpbmdGb3JGYWlsaW5nUHJvdmlzaW9uYWxMb2FkIHsg
ZmFsc2UgfTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5PiBtX2RyYXdp
bmdBcmVhOwotI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCisjaWYgRU5BQkxFKEFTWU5DX1ND
Uk9MTElORykgJiYgUExBVEZPUk0oQ09DT0EpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk+IG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTsKICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IGI2MjNmNzZiM2MyZmQ3MTE3NWZhYzk0
OWE3ODc3YWY4YzM4MmVhMTMuLmVmMzY5NDNhYTc2Mjk3ZTBiYjlhM2Q5MWI3NDMxNjk0MmJlZGNh
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC05MjgsOSArOTI4LDEzIEBAIGJvb2wgV2Vi
Q2hyb21lQ2xpZW50OjpsYXllclRyZWVTdGF0ZUlzRnJvemVuKCkgY29uc3QKIFJlZlB0cjxTY3Jv
bGxpbmdDb29yZGluYXRvcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVTY3JvbGxpbmdDb29yZGlu
YXRvcihQYWdlJiBwYWdlKSBjb25zdAogewogICAgIEFTU0VSVF9VTlVTRUQocGFnZSwgbV9wYWdl
LmNvcmVQYWdlKCkgPT0gJnBhZ2UpOworI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChtX3Bh
Z2UuZHJhd2luZ0FyZWEoKS0+dHlwZSgpICE9IERyYXdpbmdBcmVhVHlwZVJlbW90ZUxheWVyVHJl
ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIFJlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yOjpjcmVhdGUoJm1fcGFnZSk7CisjZWxzZQorICAgIHJldHVybiBudWxscHRyOwor
I2VuZGlmCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsu
Y21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQppbmRleCBhZjlkNjlhNGM0ODAz
YmUzOTNhZmIyODRhZjJjOTY5NjQzZWQ2MzhhLi4zZjkxYjA1NWE0N2VhNmM3ZGEyZjkxZTMwYjM3
OWQzNmI4ZTMxODg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQor
KysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQpAQCAtMTIzLDYgKzEyMyw3IEBAIGVu
ZGlmICgpCiAjIHdpdGhvdXQgYXBwcm92YWwgZnJvbSBhIEdUSysgcmV2aWV3ZXIuIFRoZXJlIG11
c3QgYmUgc3Ryb25nIHJlYXNvbiB0byBzdXBwb3J0CiAjIGNoYW5naW5nIHRoZSB2YWx1ZSBvZiB0
aGUgb3B0aW9uLgogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0FDQ0VM
RVJBVEVEXzJEX0NBTlZBUyBQVUJMSUMgT0ZGKQorV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRf
VkFMVUUoRU5BQkxFX0FTWU5DX1NDUk9MTElORyBQUklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9E
RUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0RSQUdfU1VQUE9SVCBQVUJMSUMgT04pCiBXRUJLSVRf
T1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfR0VPTE9DQVRJT04gUFVCTElDIE9OKQog
V0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0lDT05EQVRBQkFTRSBQVUJM
SUMgT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFrZSBiL1NvdXJj
ZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlCmluZGV4IGM1ZGM0ZGYwNzg2MWIzYTJlNzcyYWE2MDRh
YjBlYmU4ZmNhYTNiMmMuLjRkYzE3YTlhMzJkYmJmZDg4OGYwZjFhNDEwMjIwZWYyODE1ZGU3YTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlCisrKyBiL1NvdXJjZS9j
bWFrZS9PcHRpb25zV1BFLmNtYWtlCkBAIC0zMSw2ICszMSw3IEBAIFdFQktJVF9PUFRJT05fREVG
QVVMVF9QT1JUX1ZBTFVFKFVTRV9TWVNURU1fTUFMTE9DIFBVQkxJQyBPRkYpCiAjIHdlIG5lZWQg
YSB2YWx1ZSBkaWZmZXJlbnQgZnJvbSB0aGUgZGVmYXVsdCBkZWZpbmVkIGluIFdlYktpdEZlYXR1
cmVzLmNtYWtlLgogIyBDaGFuZ2luZyB0aGVzZSBvcHRpb25zIGlzIGNvbXBsZXRlbHkgdW5zdXBw
b3J0ZWQuCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfQUNDRVNTSUJJ
TElUWSBQUklWQVRFIE9OKQorV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxF
X0FTWU5DX1NDUk9MTElORyBQUklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRf
VkFMVUUoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9E
RUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0dFT0xPQ0FUSU9OIFBSSVZBVEUgT0ZGKQogV0VCS0lU
X09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX01IVE1MIFBSSVZBVEUgT04pCmRpZmYg
LS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggMGUwMmNjN2M5YmZjYzE2YjZmMDBl
ZmE1NGVjOWE2MmViMTQ4NzMzZS4uNmMwY2M4Mzc4MzU0YWYyZjk2YjhlZWMyOTBlZTFjMzliOWYy
NDMwOSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDE4LTA0LTI1ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKwor
ICAgICAgICBbR1RLXVtXUEVdIEVuYWJsZSBBU1lOQ19TQ1JPTExJTkcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDk2MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNH
VEsuY21ha2U6IEVuYWJsZSBBU1lOQ19TQ1JPTExJTkcgYXMgYSBwcml2YXRlIG9wdGlvbi4KKyAg
ICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFrZTogRGl0dG8uCisKIDIwMTgtMDQt
MjQgIExlbyBCYWx0ZXIgIDxsZW9uYXJkby5iYWx0ZXJAZ21haWwuY29tPgogCiAgICAgICAgIExh
bmQgdGVzdDI2MiB0ZXN0IHJlc3VsdHMgYXNzb2NpYXRlZCB3aXRoIFRlc3QyNjIgcnVubmVyCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338717</attachid>
            <date>2018-04-25 03:39:06 -0700</date>
            <delta_ts>2018-04-25 06:47:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184961-20180425123905.patch</filename>
            <type>text/plain</type>
            <size>53393</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwOTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmMyYTQ1NzM4NTM1Yjhk
ZGJlOTA5N2E1YTA0YzEyN2QxOTIzMzM0MS4uMjhiNjc0YTc5ZWU2ZjgzZDNiNzI4MzJkMjUxOWU3
YjViZTYyMTA1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDE4LTA0LTI1ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEVu
YWJsZSBBU1lOQ19TQ1JPTExJTkcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4NDk2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBDb29yZGluYXRlZEdyYXBoaWNzLXNwZWNpZmljIGNvZGUgdGhhdCB3
aWxsIGJlIHJlcXVpcmVkIGZvciBhc3luYworICAgICAgICBzY3JvbGxpbmcgc3VwcG9ydC4gVGhl
IFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcyBhbmQKKyAgICAgICAgU2Ny
b2xsaW5nVHJlZUNvb3JkaW5hdGVkR3JhcGhpY3MgY2xhc3NlcyBhcmUgbW9zdGx5IGNvbXBsZXRl
IGFscmVhZHksCisgICAgICAgIGJ1dCB0aGUgbmV3IFNjcm9sbGluZ1RyZWVOb2RlLWluaGVyaXRp
bmcgY2xhc3NlcyB3aWxsIG5lZWQgZnVydGhlcgorICAgICAgICB3b3JrIHRoYXQgd2lsbCBoYXZl
IHRvIGJlIGRvbmUgaW4gcGFyYWxsZWwgd2l0aCBvdGhlciBpbXByb3ZlbWVudHMKKyAgICAgICAg
cGxhbm5lZCBmb3IgdGhlIENvb3JkaW5hdGVkR3JhcGhpY3Mgc3Vic3lzdGVtLgorCisgICAgICAg
IFdoaWxlIHRoZSBidWlsZC10aW1lIGZsYWcgaXMgZW5hYmxlZCwgdGhlIGZlYXR1cmUgaXMgc3Rp
bGwgbm90IHVzYWJsZQorICAgICAgICBib3RoIGR1ZSB0byB0aGUgbWVudGlvbmVkIHBlbmRpbmcg
Y2hhbmdlcyBhbmQgZnVydGhlciBlbmFibGluZyBpbiB0aGUKKyAgICAgICAgV2ViS2l0IGxheWVy
LgorCisgICAgICAgIFZhcmlvdXMgYnVpbGQgZml4ZXMgdGhhdCBhZGRyZXNzIG5vbi1Db2NvYSB1
c2FnZSBvZiBBU1lOQ19TQ1JPTExJTkcKKyAgICAgICAgY29kZSBhcmUgaW5jbHVkZWQuCisKKyAg
ICAgICAgKiBTb3VyY2VzLnR4dDogQWRkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIHRv
IGJ1aWxkLgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogU291cmNlc0dU
Sy50eHQ6IEFkZCBuZXcgZmlsZXMgdG8gYnVpbGQuCisgICAgICAgICogU291cmNlc1dQRS50eHQ6
IERpdHRvLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3IuY3BwOgorICAgICAgICBHdWFyZCBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0Fz
RmxvYXQoKSB3aXRoIENTU19TQ1JPTExfU05BUC4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdUcmVlLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxp
bmdUcmVlLmNwcDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1Ry
ZWUuaDoKKyAgICAgICAgY3VycmVudFNuYXBQb2ludEluZGljZXNEaWRDaGFuZ2UoKSBtZXRob2Qg
aXMgb25seSBpbnZva2VkIGluCisgICAgICAgIENvY29hLXNwZWNpZmljIGNvZGUsIGFuZCBpdHMg
aW1wbGVtZW50YXRpb24gY2FsbHMgQ29jb2Etc3BlY2lmaWMgbWV0aG9kCisgICAgICAgIG9uIHRo
ZSBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yIGNsYXNzLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xs
aW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdy
YXBoaWNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdy
YXBoaWNzOjpTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzOjp+U2Ny
b2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljczo6cGFnZURlc3Ryb3llZCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhp
Y3M6OmNvbW1pdFRyZWVTdGF0ZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljczo6aGFuZGxlV2hlZWxFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3M6OnNj
aGVkdWxlVHJlZVN0YXRlQ29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3Jk
aW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljczo6Y29tbWl0VHJlZVN0YXRlKToKKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29v
cmRpbmF0ZWRHcmFwaGljcy5oOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9jb29y
ZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ1RyZWVDb29yZGluYXRlZEdyYXBoaWNzLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlQ29vcmRpbmF0ZWRHcmFwaGljczo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVDb29yZGluYXRlZEdyYXBo
aWNzOjpTY3JvbGxpbmdUcmVlQ29vcmRpbmF0ZWRHcmFwaGljcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdUcmVlQ29vcmRpbmF0ZWRHcmFwaGljczo6Y3JlYXRlU2Nyb2xsaW5nVHJlZU5v
ZGUpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xs
aW5nVHJlZUNvb3JkaW5hdGVkR3JhcGhpY3MuaDogQWRkZWQuCisgICAgICAgICogcGFnZS9zY3Jv
bGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRml4ZWROb2RlOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6U2Nyb2xsaW5nVHJlZUZp
eGVkTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRml4ZWROb2RlOjp+U2Ny
b2xsaW5nVHJlZUZpeGVkTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRml4
ZWROb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1RyZWVGaXhlZE5vZGU6OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UpOgor
ICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nVHJl
ZUZpeGVkTm9kZS5oOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9jb29yZGluYXRl
ZGdyYXBoaWNzL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVDb29yZGluYXRlZEdyYXBo
aWNzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlQ29vcmRpbmF0ZWRHcmFwaGljczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVDb29yZGluYXRlZEdyYXBoaWNzOjpTY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlQ29vcmRpbmF0ZWRHcmFwaGljcyk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlQ29vcmRpbmF0ZWRHcmFw
aGljczo6aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlQ29vcmRpbmF0ZWRHcmFwaGljczo6c2Nyb2xsUG9zaXRpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUNv
b3JkaW5hdGVkR3JhcGhpY3M6OnNldFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVDb29yZGluYXRlZEdyYXBoaWNzOjpzZXRT
Y3JvbGxQb3NpdGlvbldpdGhvdXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVDb29yZGluYXRlZEdyYXBoaWNz
OjpzZXRTY3JvbGxMYXllclBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVDb29yZGluYXRlZEdyYXBoaWNzOjp1cGRhdGVMYXllcnNBZnRl
clZpZXdwb3J0Q2hhbmdlKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdy
YXBoaWNzL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVDb29yZGluYXRlZEdyYXBoaWNz
Lmg6IEFkZGVkLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3Mv
U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1RyZWVTdGlja3lOb2RlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nVHJlZVN0aWNreU5vZGU6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjp+U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OmNvbW1pdFN0YXRl
QmVmb3JlQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVN0aWNreU5v
ZGU6OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UpOgorICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50Lmg6IEVuYWJsZSBQbGF0
Zm9ybVdoZWVsRXZlbnRQaGFzZSBjb2RlCisgICAgICAgIGZvciBXUEUuIEd1YXJkIGxhdGNoaW5n
LXNwZWNpZmljIG1ldGhvZHMgdW5kZXIgQVNZTkNfU0NST0xMSU5HLgorICAgICAgICAqIHBsYXRm
b3JtL1RleHR1cmVNYXBwZXIuY21ha2U6IFR3byBidWlsZCB0YXJnZXRzIGhhdmUgYmVlbiBtb3Zl
ZCB0bworICAgICAgICBTb3VyY2VzR1RLLnR4dCBhbmQgU291cmNlc1dQRS50eHQuCisKIDIwMTgt
MDQtMjUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHVEtdIEltcGxlbWVudCBNb3VzZUV2ZW50LmJ1dHRvbnMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZjViM2Rj
YjcxODRkMWM4MmRiYjAxZGU2M2ViMGU3ZDNjYmU2ZTFiMy4uNWFiNmFlODM3NDE4MjlhODBkNzZl
YTg5ZmQ5ZWJjZWIyNmExZDEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxOC0wNC0y
NSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11b
V1BFXSBFbmFibGUgQVNZTkNfU0NST0xMSU5HCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ5NjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBHdWFyZCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvciBhbmQg
UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eQorICAgICAgICB1c2FnZSBpbiBXZWJDaHJv
bWVDbGllbnQgYW5kIFdlYlBhZ2VQcm94eSwgcmVzcGVjdGl2ZWx5LCB3aXRoCisgICAgICAgIFBM
QVRGT1JNKENPQ09BKSBpbiBhZGRpdGlvbiB0byB0aGUgQVNZTkNfU0NST0xMSU5HIGd1YXJkcy4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmluaXRpYWxpemVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpoYW5kbGVXaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojp1cGRhdGVUb3VjaEV2ZW50VHJhY2tpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6Y3JlYXRlU2Ny
b2xsaW5nQ29vcmRpbmF0b3IgY29uc3QpOgorCiAyMDE4LTA0LTI1ICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBJbXBsZW1lbnQgTW91
c2VFdmVudC5idXR0b25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDAzODg1M2U0M2Y2YmJkMTY3ZjQ5YWFk
M2ZmODhkYzdjZmFjNjZhMDMuLjRiYWMyYzA4NWVkZmZmODA0NzY0ODhiOTI5N2JhNzA5Njg1YmM5
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xNDM2LDYgKzE0MzYsNyBAQCBwYWdlL2NzcC9Db250ZW50
U2VjdXJpdHlQb2xpY3lTb3VyY2UuY3BwCiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2VMaXN0LmNwcAogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERp
cmVjdGl2ZS5jcHAKIAorcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5j
cHAKIHBhZ2Uvc2Nyb2xsaW5nL0F4aXNTY3JvbGxTbmFwT2Zmc2V0cy5jcHAKIHBhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbExhdGNoaW5nU3RhdGUuY3BwCiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb25z
dHJhaW50cy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGEwMzYzMzAyOGFmOGRlNDM1
ZWJlOWUyYmE1NGEzOTI3Y2M3MTM4YjIuLjI2ZmIyZjBjYTQ1MmNlYTI1MDgzNDY2OTA0N2VjNDY4
NjE3YTZlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMTQwLDcgKzE0MCw2IEBAIHBh
Z2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0KIHBhZ2UvbWFjL1RleHRJbmRpY2F0
b3JXaW5kb3cubW0KIHBhZ2UvbWFjL1doZWVsRXZlbnREZWx0YUZpbHRlck1hYy5tbQogCi1wYWdl
L3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAogcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmNwcAogCiBwYWdlL3Njcm9sbGluZy9jb2NvYS9T
Y3JvbGxpbmdTdGF0ZU5vZGUubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNH
VEsudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQKaW5kZXggZmZjYTlhMjlhMzg1
YWRiNTk0N2I4YzMyNGU3OWYyYzUwYzY3YjU0MC4uOTJhY2QwYmNhZmQ2ZTBhYmQ2NWVmNGY2NWVi
OTQ1NjQxOTljZjg1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQK
KysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQKQEAgLTQ2LDYgKzQ2LDEzIEBAIGxv
YWRlci9zb3VwL1Jlc291cmNlTG9hZGVyU291cC5jcHAKIHBhZ2UvbGludXgvUmVzb3VyY2VVc2Fn
ZU92ZXJsYXlMaW51eC5jcHAKIHBhZ2UvbGludXgvUmVzb3VyY2VVc2FnZVRocmVhZExpbnV4LmNw
cAogCitwYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5h
dG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKK3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3Jh
cGhpY3MvU2Nyb2xsaW5nVHJlZUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCitwYWdlL3Njcm9sbGlu
Zy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuY3BwCitwYWdlL3Nj
cm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVDb29yZGluYXRlZEdyYXBoaWNzLmNwcAorcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFw
aGljcy9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAKK3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5h
dGVkZ3JhcGhpY3MvU2Nyb2xsaW5nU3RhdGVOb2RlQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKKwog
cGFnZS9zY3JvbGxpbmcvZ2VuZXJpYy9TY3JvbGxpbmdUaHJlYWRHZW5lcmljLmNwcAogCiBwbGF0
Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvU291cmNlc1dQRS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzV1BFLnR4dAppbmRleCBl
ODYxZGFlNWQzNjg2NGFhOWM2OWExNDFhMmIyNGMxZWZkNmZjM2IwLi5mYzAwMTliNTNiYTU4NWVm
MDkyMzcxOGQ3ZDc0YjcwOTkxYjZhNTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzV1BFLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzV1BFLnR4dApAQCAtMzIsNiAr
MzIsMTAgQEAgcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlT3ZlcmxheUxpbnV4LmNwcAogcGFnZS9s
aW51eC9SZXNvdXJjZVVzYWdlVGhyZWFkTGludXguY3BwCiAKIHBhZ2Uvc2Nyb2xsaW5nL2Nvb3Jk
aW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmNw
cAorcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdUcmVlQ29vcmRp
bmF0ZWRHcmFwaGljcy5jcHAKK3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Ny
b2xsaW5nVHJlZUZpeGVkTm9kZS5jcHAKK3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhp
Y3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUNvb3JkaW5hdGVkR3JhcGhpY3MuY3Bw
CitwYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ1RyZWVTdGlja3lO
b2RlLmNwcAogcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdTdGF0
ZU5vZGVDb29yZGluYXRlZEdyYXBoaWNzLmNwcAogCiBwYWdlL3Njcm9sbGluZy9nZW5lcmljL1Nj
cm9sbGluZ1RocmVhZEdlbmVyaWMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IGUyZWNk
NWEyZmY5YTdiYjE4ZWU4NjU2YzBiYjFlNGEyZThhYjhiYWYuLjBiZjMxOTdlMTdmMDYwYzA5NWI2
ZmVhOWU3MDM2M2VmZGNjZWQzMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC02NCw2ICs2
NCw3IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2Nyb2xsaW5nU3RhdGVUcmVl
UHJvcGVydGllc0NoYW5nZWQoKQogICAgIHNjaGVkdWxlVHJlZVN0YXRlQ29tbWl0KCk7CiB9CiAK
KyNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogc3RhdGljIGlubGluZSB2b2lkIHNldFN0YXRl
U2Nyb2xsaW5nTm9kZVNuYXBPZmZzZXRzQXNGbG9hdChTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGUmIG5vZGUsIFNjcm9sbEV2ZW50QXhpcyBheGlzLCBjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4q
IHNuYXBPZmZzZXRzLCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+
KiBzbmFwT2Zmc2V0UmFuZ2VzLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKIHsKICAgICAvLyBG
SVhNRTogSW5jb3Jwb3JhdGUgY3VycmVudCBwYWdlIHNjYWxlIGZhY3RvciBpbiBzbmFwcGluZyB0
byBkZXZpY2UgcGl4ZWwuIFBlcmhhcHMgd2Ugc2hvdWxkIGp1c3QgY29udmVydCB0byBmbG9hdCBo
ZXJlIGFuZCBsZXQgVUkgcHJvY2VzcyBkbyB0aGUgcGl4ZWwgc25hcHBpbmc/CkBAIC04OCw2ICs4
OSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0
c0FzRmxvYXQoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpCiAgICAgICAgIG5vZGUuc2V0VmVydGljYWxT
bmFwT2Zmc2V0UmFuZ2VzKHNuYXBPZmZzZXRSYW5nZXNBc0Zsb2F0KTsKICAgICB9CiB9CisjZW5k
aWYKIAogdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRFdmVudFRyYWNraW5nUmVn
aW9uc0RpcnR5KCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1RyZWUuaAppbmRleCAxOTQwMTRhZTVhM2U5N2U5M2JjZTg0MGM5Mjg1NTU2ODZhMDU0YjQ0Li4x
ZDlkZWFhZGJlZmI2MWEzM2IyODNiZTAzYjYwN2UxZjk4NWE2OGE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oCkBAIC05MSw4ICs5MSw2IEBAIHB1
YmxpYzoKICAgICAvLyBhbmQgY2FsbCBzY3JvbGxpbmdUcmVlTm9kZURpZFNjcm9sbCgpLgogICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzY3JvbGxQb3NpdGlvbkNoYW5nZWRWaWFEZWxl
Z2F0ZWRTY3JvbGxpbmcoU2Nyb2xsaW5nTm9kZUlELCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50
JiBzY3JvbGxQb3NpdGlvbiwgYm9vbCBpblVzZXJJbnRlcmFjdGlvbik7CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIHZvaWQgY3VycmVudFNuYXBQb2ludEluZGljZXNEaWRDaGFuZ2UoU2Ny
b2xsaW5nTm9kZUlELCB1bnNpZ25lZCBob3Jpem9udGFsLCB1bnNpZ25lZCB2ZXJ0aWNhbCkgPSAw
OwotCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHJlcG9ydFN5bmNocm9ub3VzU2Ny
b2xsaW5nUmVhc29uc0NoYW5nZWQoTW9ub3RvbmljVGltZSwgU3luY2hyb25vdXNTY3JvbGxpbmdS
ZWFzb25zKSB7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgcmVwb3J0RXhwb3Nl
ZFVuZmlsbGVkQXJlYShNb25vdG9uaWNUaW1lLCB1bnNpZ25lZCAvKiB1bmZpbGxlZEFyZWEgKi8p
IHsgfQogCkBAIC0xMTQsNiArMTEyLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlVGVzdERlZmVycmFsRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6U2Nyb2xsYWJs
ZUFyZWFJZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OkRlZmVyVGVzdFRyaWdnZXJS
ZWFzb24pIHsgfQogI2VuZGlmCiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIHZvaWQgY3VycmVudFNuYXBQb2ludEluZGljZXNEaWRDaGFuZ2UoU2Nyb2xs
aW5nTm9kZUlELCB1bnNpZ25lZCBob3Jpem9udGFsLCB1bnNpZ25lZCB2ZXJ0aWNhbCkgPSAwOwor
I2VuZGlmCisKICAgICAvLyBDYW4gYmUgY2FsbGVkIGZyb20gYW55IHRocmVhZC4gV2lsbCB1cGRh
dGUgd2hhdCBlZGdlcyBhbGxvdyBydWJiZXItYmFuZGluZy4KICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldENhblJ1YmJlckJhbmRTdGF0ZShib29sIGNhblJ1YmJlckJhbmRBdExlZnQsIGJvb2wg
Y2FuUnViYmVyQmFuZEF0UmlnaHQsIGJvb2wgY2FuUnViYmVyQmFuZEF0VG9wLCBib29sIGNhblJ1
YmJlckJhbmRBdEJvdHRvbSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwCmluZGV4IGY4NWU2NGRlNzFjYmQzZDVi
MjlmNDBhN2U0NTk2N2Q3NGIyN2ZhNGYuLjVjN2JhODAzYjZmOThjMWJhN2MxZjVmNGExYjVkNjVl
NmMwZjU4NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVh
ZGVkU2Nyb2xsaW5nVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
VGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcApAQCAtMzEsMTAgKzMxLDggQEAKICNpbmNsdWRlICJB
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50
LmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nVGhyZWFkLmgiCi0jaW5jbHVkZSAiU2Nyb2xsaW5nVHJl
ZUZpeGVkTm9kZS5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVOb2RlLmgiCiAjaW5jbHVkZSAi
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaCIKLSNpbmNsdWRlICJTY3JvbGxpbmdUcmVlU3Rp
Y2t5Tm9kZS5oIgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTExOSw2ICsxMTcsNyBAQCB2b2lkIFRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6cmVwb3J0
RXhwb3NlZFVuZmlsbGVkQXJlYShNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgdQogICAgIH0pOwog
fQogCisjaWYgUExBVEZPUk0oQ09DT0EpCiB2b2lkIFRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6Y3Vy
cmVudFNuYXBQb2ludEluZGljZXNEaWRDaGFuZ2UoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCwgdW5z
aWduZWQgaG9yaXpvbnRhbCwgdW5zaWduZWQgdmVydGljYWwpCiB7CiAgICAgaWYgKCFtX3Njcm9s
bGluZ0Nvb3JkaW5hdG9yKQpAQCAtMTI4LDYgKzEyNyw3IEBAIHZvaWQgVGhyZWFkZWRTY3JvbGxp
bmdUcmVlOjpjdXJyZW50U25hcFBvaW50SW5kaWNlc0RpZENoYW5nZShTY3JvbGxpbmdOb2RlSUQg
bm9kCiAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zZXRBY3RpdmVTY3JvbGxTbmFwSW5k
aWNlcyhub2RlSUQsIGhvcml6b250YWwsIHZlcnRpY2FsKTsKICAgICB9KTsKIH0KKyNlbmRpZgog
CiAjaWYgUExBVEZPUk0oTUFDKQogdm9pZCBUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OmhhbmRsZVdo
ZWVsRXZlbnRQaGFzZShQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSBwaGFzZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmgKaW5k
ZXggNDZmNjQzYzAxYTZkYTI1NGExZTc0ZDA1NDJmMzI4OTI1YjgzZDMyZC4uZGIzYzNkNWNmYjll
OTA4YjNmN2QyM2RkMTY4ZjkyMGQxYzdhMzQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmgKQEAgLTU4LDcgKzU4LDYg
QEAgcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFRocmVhZGVkU2Nyb2xsaW5nVHJlZShBc3luY1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yJik7CiAKICAgICB2b2lkIHNjcm9sbGluZ1RyZWVOb2RlRGlkU2Ny
b2xsKFNjcm9sbGluZ05vZGVJRCwgY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4mIGxheW91dFZpZXdwb3J0T3JpZ2luLCBTY3Jv
bGxpbmdMYXllclBvc2l0aW9uQWN0aW9uID0gU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbjo6
U3luYykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjdXJyZW50U25hcFBvaW50SW5kaWNlc0RpZENoYW5n
ZShTY3JvbGxpbmdOb2RlSUQsIHVuc2lnbmVkIGhvcml6b250YWwsIHVuc2lnbmVkIHZlcnRpY2Fs
KSBvdmVycmlkZTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBoYW5kbGVXaGVlbEV2ZW50
UGhhc2UoUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0QWN0
aXZlU2Nyb2xsU25hcEluZGljZXMoU2Nyb2xsaW5nTm9kZUlELCB1bnNpZ25lZCBob3Jpem9udGFs
SW5kZXgsIHVuc2lnbmVkIHZlcnRpY2FsSW5kZXgpIG92ZXJyaWRlOwpAQCAtNjYsNiArNjUsMTAg
QEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcmVtb3ZlVGVzdERlZmVycmFsRm9yUmVhc29uKFdoZWVs
RXZlbnRUZXN0VHJpZ2dlcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVz
dFRyaWdnZXI6OkRlZmVyVGVzdFRyaWdnZXJSZWFzb24pIG92ZXJyaWRlOwogI2VuZGlmCiAKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIGN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hh
bmdlKFNjcm9sbGluZ05vZGVJRCwgdW5zaWduZWQgaG9yaXpvbnRhbCwgdW5zaWduZWQgdmVydGlj
YWwpIG92ZXJyaWRlOworI2VuZGlmCisKICAgICB2b2lkIHJlcG9ydEV4cG9zZWRVbmZpbGxlZEFy
ZWEoTW9ub3RvbmljVGltZSwgdW5zaWduZWQgdW5maWxsZWRBcmVhKSBvdmVycmlkZTsKICAgICB2
b2lkIHJlcG9ydFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uc0NoYW5nZWQoTW9ub3RvbmljVGlt
ZSwgU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxp
bmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3Jk
aW5hdGVkR3JhcGhpY3MuY3BwCmluZGV4IGIxYTQ3NzU4YjkyNDljN2Y2Yjk2MjU3YTVkMDEyNzgw
NTcxZGRkMzAuLjA5Mzk5OTM3N2E0OWNjOTUxNDBmMzU1YTBmMDVmMjUyNjMwMmJjYjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3Mv
U2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKQEAgLTEsMzkgKzEsOTQgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpLgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKICAqIGFyZSBtZXQ6CisgKgogICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgogICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdDb29yZGluYXRv
ckNvb3JkaW5hdGVkR3JhcGhpY3MuaCIKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykK
IAorI2luY2x1ZGUgIlNjcm9sbGluZ1RocmVhZC5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVD
b29yZGluYXRlZEdyYXBoaWNzLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVmPFNjcm9s
bGluZ0Nvb3JkaW5hdG9yPiBTY3JvbGxpbmdDb29yZGluYXRvcjo6Y3JlYXRlKFBhZ2UqIHBhZ2Up
CiB7Ci0gICAgLy8gRklYTUU6IFJldHVybiBhbiBvYmplY3QgaW1wbGVtZW50aW5nIEFzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3IuCi0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2Nyb2xsaW5nQ29v
cmRpbmF0b3IocGFnZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcyhwYWdlKSk7Cit9CisKK1Njcm9sbGluZ0Nvb3JkaW5h
dG9yQ29vcmRpbmF0ZWRHcmFwaGljczo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdy
YXBoaWNzKFBhZ2UqIHBhZ2UpCisgICAgOiBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yKHBhZ2Up
CisgICAgLCBtX3Njcm9sbGluZ1N0YXRlVHJlZUNvbW1pdHRlclRpbWVyKCp0aGlzLCAmU2Nyb2xs
aW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzOjpjb21taXRUcmVlU3RhdGUpCit7Cisg
ICAgc2V0U2Nyb2xsaW5nVHJlZShTY3JvbGxpbmdUcmVlQ29vcmRpbmF0ZWRHcmFwaGljczo6Y3Jl
YXRlKCp0aGlzKSk7Cit9CisKK1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGlj
czo6flNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcygpCit7CisgICAgQVNT
RVJUKCFzY3JvbGxpbmdUcmVlKCkpOworfQorCit2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29v
cmRpbmF0ZWRHcmFwaGljczo6cGFnZURlc3Ryb3llZCgpCit7CisgICAgQXN5bmNTY3JvbGxpbmdD
b29yZGluYXRvcjo6cGFnZURlc3Ryb3llZCgpOworCisgICAgbV9zY3JvbGxpbmdTdGF0ZVRyZWVD
b21taXR0ZXJUaW1lci5zdG9wKCk7CisKKyAgICByZWxlYXNlU2Nyb2xsaW5nVHJlZSgpOworfQor
Cit2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljczo6Y29tbWl0VHJl
ZVN0YXRlSWZOZWVkZWQoKQoreworICAgIGNvbW1pdFRyZWVTdGF0ZSgpOworICAgIG1fc2Nyb2xs
aW5nU3RhdGVUcmVlQ29tbWl0dGVyVGltZXIuc3RvcCgpOworfQorCitib29sIFNjcm9sbGluZ0Nv
b3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljczo6aGFuZGxlV2hlZWxFdmVudChGcmFtZVZpZXcm
LCBjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKwor
dm9pZCBTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3M6OnNjaGVkdWxlVHJl
ZVN0YXRlQ29tbWl0KCkKK3sKKyAgICBpZiAoIW1fc2Nyb2xsaW5nU3RhdGVUcmVlQ29tbWl0dGVy
VGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9zY3JvbGxpbmdTdGF0ZVRyZWVDb21taXR0ZXJU
aW1lci5zdGFydE9uZVNob3QoMF9zKTsKK30KKwordm9pZCBTY3JvbGxpbmdDb29yZGluYXRvckNv
b3JkaW5hdGVkR3JhcGhpY3M6OmNvbW1pdFRyZWVTdGF0ZSgpCit7CisgICAgaWYgKCFzY3JvbGxp
bmdTdGF0ZVRyZWUoKS0+aGFzQ2hhbmdlZFByb3BlcnRpZXMoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgUmVmUHRyPFRocmVhZGVkU2Nyb2xsaW5nVHJlZT4gdGhyZWFkZWRTY3JvbGxpbmdUcmVl
ID0gZG93bmNhc3Q8VGhyZWFkZWRTY3JvbGxpbmdUcmVlPihzY3JvbGxpbmdUcmVlKCkpOworCisg
ICAgYXV0byB0cmVlU3RhdGUgPSBzY3JvbGxpbmdTdGF0ZVRyZWUoKS0+Y29tbWl0KExheWVyUmVw
cmVzZW50YXRpb246OlBsYXRmb3JtTGF5ZXJSZXByZXNlbnRhdGlvbik7CisgICAgU2Nyb2xsaW5n
VGhyZWFkOjpkaXNwYXRjaChbdGhyZWFkZWRTY3JvbGxpbmdUcmVlLCB0cmVlU3RhdGUgPSBXVEZN
b3ZlKHRyZWVTdGF0ZSldKCkgbXV0YWJsZSB7CisgICAgICAgIHRocmVhZGVkU2Nyb2xsaW5nVHJl
ZS0+Y29tbWl0VHJlZVN0YXRlKFdURk1vdmUodHJlZVN0YXRlKSk7CisgICAgfSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRl
ZEdyYXBoaWNzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdy
YXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZiZmNiMTMzZmM2OGNlMDZhOGY3MDdhODhkOWU0NmFmMTkwODc0OTgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNz
L1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5oCkBAIC0wLDAgKzEsNTcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorICogICAgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEFTWU5DX1NDUk9M
TElORykgJiYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorCisjaW5jbHVkZSAiQXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcm9s
bGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcyA6IHB1YmxpYyBBc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTY3JvbGxpbmdDb29yZGluYXRv
ckNvb3JkaW5hdGVkR3JhcGhpY3MoUGFnZSopOworICAgIHZpcnR1YWwgflNjcm9sbGluZ0Nvb3Jk
aW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcygpOworCisgICAgdm9pZCBwYWdlRGVzdHJveWVkKCkg
b3ZlcnJpZGU7CisKKyAgICB2b2lkIGNvbW1pdFRyZWVTdGF0ZUlmTmVlZGVkKCkgb3ZlcnJpZGU7
CisKKyAgICBib29sIGhhbmRsZVdoZWVsRXZlbnQoRnJhbWVWaWV3JiwgY29uc3QgUGxhdGZvcm1X
aGVlbEV2ZW50Jikgb3ZlcnJpZGU7CisKK3ByaXZhdGU6CisgICAgdm9pZCBzY2hlZHVsZVRyZWVT
dGF0ZUNvbW1pdCgpIG92ZXJyaWRlOworCisgICAgdm9pZCBjb21taXRUcmVlU3RhdGUoKTsKKwor
ICAgIFRpbWVyIG1fc2Nyb2xsaW5nU3RhdGVUcmVlQ29tbWl0dGVyVGltZXI7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAm
JiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ1RyZWVDb29yZGluYXRl
ZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVk
Z3JhcGhpY3MvU2Nyb2xsaW5nVHJlZUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmFiMzdiOTA5MTI1YjNmMTRhODgyNDZmOGRmZDQ2YjhlZjczODdmNmEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Nj
cm9sbGluZ1RyZWVDb29yZGluYXRlZEdyYXBoaWNzLmNwcApAQCAtMCwwICsxLDcwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKyAqICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZUNv
b3JkaW5hdGVkR3JhcGhpY3MuaCIKKworI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFVT
RShDT09SRElOQVRFRF9HUkFQSElDUykKKworI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVGaXhlZE5v
ZGUuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlQ29vcmRpbmF0
ZWRHcmFwaGljcy5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFNjcm9sbGluZ1RyZWVDb29yZGluYXRlZEdyYXBoaWNz
PiBTY3JvbGxpbmdUcmVlQ29vcmRpbmF0ZWRHcmFwaGljczo6Y3JlYXRlKEFzeW5jU2Nyb2xsaW5n
Q29vcmRpbmF0b3ImIHNjcm9sbGluZ0Nvb3JkaW5hdG9yKQoreworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFNjcm9sbGluZ1RyZWVDb29yZGluYXRlZEdyYXBoaWNzKHNjcm9sbGluZ0Nvb3JkaW5h
dG9yKSk7Cit9CisKK1Njcm9sbGluZ1RyZWVDb29yZGluYXRlZEdyYXBoaWNzOjpTY3JvbGxpbmdU
cmVlQ29vcmRpbmF0ZWRHcmFwaGljcyhBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yJiBzY3JvbGxp
bmdDb29yZGluYXRvcikKKyAgICA6IFRocmVhZGVkU2Nyb2xsaW5nVHJlZShzY3JvbGxpbmdDb29y
ZGluYXRvcikKK3sKK30KKworUmVmPFNjcm9sbGluZ1RyZWVOb2RlPiBTY3JvbGxpbmdUcmVlQ29v
cmRpbmF0ZWRHcmFwaGljczo6Y3JlYXRlU2Nyb2xsaW5nVHJlZU5vZGUoU2Nyb2xsaW5nTm9kZVR5
cGUgbm9kZVR5cGUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCit7CisgICAgc3dpdGNoIChub2Rl
VHlwZSkgeworICAgIGNhc2UgTWFpbkZyYW1lU2Nyb2xsaW5nTm9kZToKKyAgICBjYXNlIFN1YmZy
YW1lU2Nyb2xsaW5nTm9kZToKKyAgICAgICAgcmV0dXJuIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVDb29yZGluYXRlZEdyYXBoaWNzOjpjcmVhdGUoKnRoaXMsIG5vZGVUeXBlLCBub2Rl
SUQpOworICAgIGNhc2UgT3ZlcmZsb3dTY3JvbGxpbmdOb2RlOgorICAgICAgICAvLyBTaG91bGQg
bm90IGJlIHJlYWNoZWQgLS0gY2F1Z2h0IGJ5IEFTU0VSVF9OT1RfUkVBQ0hFRCgpIGJlbG93Lgor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEZpeGVkTm9kZToKKyAgICAgICAgcmV0dXJuIFNjcm9s
bGluZ1RyZWVGaXhlZE5vZGU6OmNyZWF0ZSgqdGhpcywgbm9kZUlEKTsKKyAgICBjYXNlIFN0aWNr
eU5vZGU6CisgICAgICAgIHJldHVybiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6Y3JlYXRlKCp0
aGlzLCBub2RlSUQpOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBTY3JvbGxpbmdUcmVlRml4ZWROb2RlOjpjcmVhdGUoKnRoaXMsIG5vZGVJRCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJ
TkcpICYmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nVHJlZUNvb3Jk
aW5hdGVkR3JhcGhpY3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5h
dGVkZ3JhcGhpY3MvU2Nyb2xsaW5nVHJlZUNvb3JkaW5hdGVkR3JhcGhpY3MuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40NWJiNjQ1ZWIzYjZiNjI2NTY1ODM3MDA1MWIyODIxN2NiNDllNzgwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9T
Y3JvbGxpbmdUcmVlQ29vcmRpbmF0ZWRHcmFwaGljcy5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZAorICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYg
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorCisjaW5jbHVkZSAiVGhyZWFkZWRTY3JvbGxpbmdU
cmVlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2Nyb2xsaW5nVHJlZUNvb3Jk
aW5hdGVkR3JhcGhpY3MgZmluYWwgOiBwdWJsaWMgVGhyZWFkZWRTY3JvbGxpbmdUcmVlIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUmVmPFNjcm9sbGluZ1RyZWVDb29yZGluYXRlZEdyYXBoaWNzPiBj
cmVhdGUoQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvciYpOworCitwcml2YXRlOgorICAgIGV4cGxp
Y2l0IFNjcm9sbGluZ1RyZWVDb29yZGluYXRlZEdyYXBoaWNzKEFzeW5jU2Nyb2xsaW5nQ29vcmRp
bmF0b3ImKTsKKworICAgIFJlZjxTY3JvbGxpbmdUcmVlTm9kZT4gY3JlYXRlU2Nyb2xsaW5nVHJl
ZU5vZGUoU2Nyb2xsaW5nTm9kZVR5cGUsIFNjcm9sbGluZ05vZGVJRCkgb3ZlcnJpZGU7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xM
SU5HKSAmJiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ1RyZWVGaXhl
ZE5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFw
aGljcy9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNDA4MTcwM2ViMWQ0
ODI3ZTJkNmUxYmM2OWZlYTJhYmMyNDJjMmUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdUcmVlRml4
ZWROb2RlLmNwcApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEln
YWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFp
bWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQK
KyAqICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5oIgorCisjaWYgRU5BQkxF
KEFTWU5DX1NDUk9MTElORykgJiYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1JlZjxTY3JvbGxpbmdUcmVlRml4ZWROb2RlPiBTY3JvbGxpbmdUcmVl
Rml4ZWROb2RlOjpjcmVhdGUoU2Nyb2xsaW5nVHJlZSYgc2Nyb2xsaW5nVHJlZSwgU2Nyb2xsaW5n
Tm9kZUlEIG5vZGVJRCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTY3JvbGxpbmdUcmVl
Rml4ZWROb2RlKHNjcm9sbGluZ1RyZWUsIG5vZGVJRCkpOworfQorCitTY3JvbGxpbmdUcmVlRml4
ZWROb2RlOjpTY3JvbGxpbmdUcmVlRml4ZWROb2RlKFNjcm9sbGluZ1RyZWUmIHNjcm9sbGluZ1Ry
ZWUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCisgICAgOiBTY3JvbGxpbmdUcmVlTm9kZShzY3Jv
bGxpbmdUcmVlLCBGaXhlZE5vZGUsIG5vZGVJRCkKK3sKKyAgICBzY3JvbGxpbmdUcmVlLmZpeGVk
T3JTdGlja3lOb2RlQWRkZWQoKTsKK30KKworU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6flNjcm9s
bGluZ1RyZWVGaXhlZE5vZGUoKQoreworICAgIHNjcm9sbGluZ1RyZWUoKS5maXhlZE9yU3RpY2t5
Tm9kZVJlbW92ZWQoKTsKK30KKwordm9pZCBTY3JvbGxpbmdUcmVlRml4ZWROb2RlOjpjb21taXRT
dGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYpCit7Cit9CisKK3Zv
aWQgU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5n
ZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0
U2l6ZSYpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShBU1lOQ19TQ1JPTExJTkcpICYmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Ny
b2xsaW5nVHJlZUZpeGVkTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29v
cmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDA4
MzVkMmQ3OGM3MGE5MWYwNDZlYTQ2YmMwOTRlNjUyNmU1NTkyYQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xs
aW5nVHJlZUZpeGVkTm9kZS5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAg
IGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZAorICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgVVNFKENPT1JESU5BVEVE
X0dSQVBISUNTKQorCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZU5vZGUuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBTY3JvbGxpbmdUcmVlRml4ZWROb2RlIDogcHVibGljIFNjcm9s
bGluZ1RyZWVOb2RlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFNjcm9sbGluZ1RyZWVGaXhl
ZE5vZGU+IGNyZWF0ZShTY3JvbGxpbmdUcmVlJiwgU2Nyb2xsaW5nTm9kZUlEKTsKKyAgICB2aXJ0
dWFsIH5TY3JvbGxpbmdUcmVlRml4ZWROb2RlKCk7CisKK3ByaXZhdGU6CisgICAgU2Nyb2xsaW5n
VHJlZUZpeGVkTm9kZShTY3JvbGxpbmdUcmVlJiwgU2Nyb2xsaW5nTm9kZUlEKTsKKworICAgIHZv
aWQgY29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmKSBv
dmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29uc3Qg
U2Nyb2xsaW5nVHJlZU5vZGUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFNpemUmKSBv
dmVycmlkZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShBU1lOQ19TQ1JPTExJTkcpICYmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZWNjNmYzMTczMDYxNjAzMGRhODY1ZmZjOWI4ZTBiOTNiODY2NjM2MgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCkBAIC0w
LDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorICogICAgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlQ29vcmRpbmF0ZWRHcmFwaGljcy5oIgor
CisjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNT
KQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlPiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlQ29vcmRpbmF0ZWRHcmFwaGlj
czo6Y3JlYXRlKFNjcm9sbGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUsIFNjcm9sbGluZ05vZGVUeXBl
IG5vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQoreworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVDb29yZGluYXRlZEdyYXBoaWNz
KHNjcm9sbGluZ1RyZWUsIG5vZGVUeXBlLCBub2RlSUQpKTsKK30KKworU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZUNvb3JkaW5hdGVkR3JhcGhpY3M6OlNjcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVDb29yZGluYXRlZEdyYXBoaWNzKFNjcm9sbGluZ1RyZWUmIHNjcm9sbGluZ1Ry
ZWUsIFNjcm9sbGluZ05vZGVUeXBlIG5vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQor
ICAgIDogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZShzY3JvbGxpbmdUcmVlLCBub2Rl
VHlwZSwgbm9kZUlEKQoreworfQorCitTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlQ29v
cmRpbmF0ZWRHcmFwaGljczo6flNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVDb29yZGlu
YXRlZEdyYXBoaWNzKCkgPSBkZWZhdWx0OworCit2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVDb29yZGluYXRlZEdyYXBoaWNzOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYpCit7Cit9CisKK0Zsb2F0UG9pbnQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZUNvb3JkaW5hdGVkR3JhcGhpY3M6OnNjcm9sbFBvc2l0aW9uKCkgY29uc3QKK3sK
KyAgICByZXR1cm4geyB9OworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVDb29yZGluYXRlZEdyYXBoaWNzOjpzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50
JikKK3sKK30KKwordm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlQ29vcmRpbmF0
ZWRHcmFwaGljczo6c2V0U2Nyb2xsUG9zaXRpb25XaXRob3V0Q29udGVudEVkZ2VDb25zdHJhaW50
cyhjb25zdCBGbG9hdFBvaW50JikKK3sKK30KKwordm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlQ29vcmRpbmF0ZWRHcmFwaGljczo6c2V0U2Nyb2xsTGF5ZXJQb3NpdGlvbihjb25z
dCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRSZWN0JikKK3sKK30KKwordm9pZCBTY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlQ29vcmRpbmF0ZWRHcmFwaGljczo6dXBkYXRlTGF5ZXJzQWZ0
ZXJWaWV3cG9ydENoYW5nZShjb25zdCBGbG9hdFJlY3QmLCBkb3VibGUpCit7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYm
IFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZUNvb3JkaW5hdGVkR3JhcGhpY3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUNv
b3JkaW5hdGVkR3JhcGhpY3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDcyYjc1ZjA1MTUwOGEzYzE5M2QxMTRm
MmYyZDRiYTJlOTU4MzVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlQ29vcmRpbmF0ZWRHcmFwaGljcy5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcK
KyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZAorICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBI
T0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQorCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGVDb29yZGluYXRlZEdyYXBoaWNzIDogcHVibGljIFNjcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U2Nyb2xsaW5nVHJl
ZUZyYW1lU2Nyb2xsaW5nTm9kZT4gY3JlYXRlKFNjcm9sbGluZ1RyZWUmLCBTY3JvbGxpbmdOb2Rl
VHlwZSwgU2Nyb2xsaW5nTm9kZUlEKTsKKyAgICB2aXJ0dWFsIH5TY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlQ29vcmRpbmF0ZWRHcmFwaGljcygpOworCitwcml2YXRlOgorICAgIFNjcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVDb29yZGluYXRlZEdyYXBoaWNzKFNjcm9sbGluZ1Ry
ZWUmLCBTY3JvbGxpbmdOb2RlVHlwZSwgU2Nyb2xsaW5nTm9kZUlEKTsKKworICAgIHZvaWQgaGFu
ZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSBvdmVycmlkZTsKKworICAg
IEZsb2F0UG9pbnQgc2Nyb2xsUG9zaXRpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNl
dFNjcm9sbFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNl
dFNjcm9sbFBvc2l0aW9uV2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMoY29uc3QgRmxvYXRQ
b2ludCYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0U2Nyb2xsTGF5ZXJQb3NpdGlvbihjb25zdCBG
bG9hdFBvaW50JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHVwZGF0
ZUxheWVyc0FmdGVyVmlld3BvcnRDaGFuZ2UoY29uc3QgRmxvYXRSZWN0JiwgZG91YmxlKSBvdmVy
cmlkZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShB
U1lOQ19TQ1JPTExJTkcpICYmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xs
aW5nVHJlZVN0aWNreU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29v
cmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjVhNzY4OTE0MjM0MGZiNWZhMjg5MDNlNjc3MWM1ZjBjNzU3ZWIwZAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Ny
b2xsaW5nVHJlZVN0aWNreU5vZGUuY3BwCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcK
KyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZAorICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBI
T0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5o
IgorCisjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxTY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZT4gU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OmNyZWF0ZShTY3JvbGxpbmdUcmVlJiBzY3JvbGxp
bmdUcmVlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQoreworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlKHNjcm9sbGluZ1RyZWUsIG5vZGVJRCkpOworfQor
CitTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUoU2Nyb2xs
aW5nVHJlZSYgc2Nyb2xsaW5nVHJlZSwgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKKyAgICA6IFNj
cm9sbGluZ1RyZWVOb2RlKHNjcm9sbGluZ1RyZWUsIFN0aWNreU5vZGUsIG5vZGVJRCkKK3sKKyAg
ICBzY3JvbGxpbmdUcmVlLmZpeGVkT3JTdGlja3lOb2RlQWRkZWQoKTsKK30KKworU2Nyb2xsaW5n
VHJlZVN0aWNreU5vZGU6On5TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSgpCit7CisgICAgc2Nyb2xs
aW5nVHJlZSgpLmZpeGVkT3JTdGlja3lOb2RlUmVtb3ZlZCgpOworfQorCit2b2lkIFNjcm9sbGlu
Z1RyZWVTdGlja3lOb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGlu
Z1N0YXRlTm9kZSYpCit7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OnVwZGF0
ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29uc3QgU2Nyb2xsaW5nVHJlZU5vZGUmLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFNpemUmKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ1RyZWVT
dGlja3lOb2RlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjc2NTQ3NGFhNDgxOTU4OWUwYTdhY2FlYjZlMDY4ZTUy
MDc5MDhhNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaApAQCAtMCwwICsx
LDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKyAqICAgIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBU1lOQ19T
Q1JPTExJTkcpICYmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKworI2luY2x1ZGUgIlNjcm9s
bGluZ1RyZWVOb2RlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2Nyb2xsaW5n
VHJlZVN0aWNreU5vZGUgOiBwdWJsaWMgU2Nyb2xsaW5nVHJlZU5vZGUgeworcHVibGljOgorICAg
IHN0YXRpYyBSZWY8U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU+IGNyZWF0ZShTY3JvbGxpbmdUcmVl
JiwgU2Nyb2xsaW5nTm9kZUlEKTsKKyAgICB2aXJ0dWFsIH5TY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZSgpOworCitwcml2YXRlOgorICAgIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlKFNjcm9sbGluZ1Ry
ZWUmLCBTY3JvbGxpbmdOb2RlSUQpOworCisgICAgdm9pZCBjb21taXRTdGF0ZUJlZm9yZUNoaWxk
cmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRl
TGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYsIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYpIG92ZXJyaWRlOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgVVNF
KENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1XaGVlbEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bVdoZWVsRXZlbnQuaAppbmRleCBjMWI2YTJhOGYxYTFmN2VkMWM2ZWZiMzBlZWYyMDhlYTA5OTlj
YzU0Li5lMWQyZDNiM2ZiNDU0Y2QyZjQ0ODk3ZWE0ZWNkMzIyYzlmNjcyYzYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaApAQCAtNDgsNyArNDgsNyBA
QCBlbnVtIFBsYXRmb3JtV2hlZWxFdmVudEdyYW51bGFyaXR5IDogdWludDhfdCB7CiAgICAgU2Ny
b2xsQnlQaXhlbFdoZWVsRXZlbnQsCiB9OwogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRG
T1JNKEdUSykKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9S
TShXUEUpCiAKIGVudW0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgOiB1aW50OF90IHsKICAgICBQ
bGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmUgPSAwLApAQCAtMTM1LDYgKzEzNSw5IEBAIHB1Ymxp
YzoKICAgICB1bnNpZ25lZCBzY3JvbGxDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsQ291
bnQ7IH0KICAgICBmbG9hdCB1bmFjY2VsZXJhdGVkU2Nyb2xsaW5nRGVsdGFYKCkgY29uc3QgeyBy
ZXR1cm4gbV91bmFjY2VsZXJhdGVkU2Nyb2xsaW5nRGVsdGFYOyB9CiAgICAgZmxvYXQgdW5hY2Nl
bGVyYXRlZFNjcm9sbGluZ0RlbHRhWSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5hY2NlbGVyYXRlZFNj
cm9sbGluZ0RlbHRhWTsgfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQog
ICAgIGJvb2wgdXNlTGF0Y2hlZEV2ZW50RWxlbWVudCgpIGNvbnN0OwogICAgIGJvb2wgc2hvdWxk
Q29uc2lkZXJMYXRjaGluZygpIGNvbnN0OwogICAgIGJvb2wgc2hvdWxkUmVzZXRMYXRjaGluZygp
IGNvbnN0OwpAQCAtMTQzLDcgKzE0Niw3IEBAIHB1YmxpYzoKICAgICBib29sIHVzZUxhdGNoZWRF
dmVudEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKLSNpZiBQTEFU
Rk9STShDT0NPQSkgfHwgUExBVEZPUk0oR1RLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFU
Rk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKICAgICBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSBw
aGFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGhhc2U7IH0KICAgICBQbGF0Zm9ybVdoZWVsRXZlbnRQ
aGFzZSBtb21lbnR1bVBoYXNlKCkgY29uc3QgeyByZXR1cm4gbV9tb21lbnR1bVBoYXNlOyB9CiAg
ICAgYm9vbCBpc0VuZE9mTm9uTW9tZW50dW1TY3JvbGwoKSBjb25zdDsKQEAgLTE2OCw3ICsxNzEs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gU2Nyb2xsaW5nIHZlbG9jaXR5IGluIHBpeGVscyBwZXIg
c2Vjb25kLgogICAgIEZsb2F0U2l6ZSBtX3Njcm9sbGluZ1ZlbG9jaXR5OwogCi0jaWYgUExBVEZP
Uk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZP
Uk0oR1RLKSB8fCBQTEFURk9STShXUEUpCiAgICAgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgbV9w
aGFzZSB7IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlTm9uZSB9OwogICAgIFBsYXRmb3JtV2hlZWxF
dmVudFBoYXNlIG1fbW9tZW50dW1QaGFzZSB7IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlTm9uZSB9
OwogI2VuZGlmCkBAIC0xODAsNyArMTgzLDcgQEAgcHJvdGVjdGVkOgogI2VuZGlmCiB9OwogCi0j
aWYgUExBVEZPUk0oQ09DT0EpCisjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKIAogaW5saW5l
IGJvb2wgUGxhdGZvcm1XaGVlbEV2ZW50Ojp1c2VMYXRjaGVkRXZlbnRFbGVtZW50KCkgY29uc3QK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RleHR1cmVNYXBwZXIuY21h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UZXh0dXJlTWFwcGVyLmNtYWtlCmluZGV4IGVh
OTI2Y2VlMjFiMzg2YTQ2OWJlMzQ3YTgyOWE5ODVlMTU0NGViZjIuLjZlYWI2YTBhMTg5NWFkYWY3
ODc1MWQxOTBjMTY4OGQ0N2JmYzc3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1RleHR1cmVNYXBwZXIuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGV4
dHVyZU1hcHBlci5jbWFrZQpAQCAtMzAsOSArMzAsNiBAQCBpZiAoVVNFX0NPT1JESU5BVEVEX0dS
QVBISUNTKQogICAgICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkIgogICAgICkKICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKLSAg
ICAgICAgcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGlu
YXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCi0gICAgICAgIHBhZ2Uvc2Nyb2xsaW5nL2Nvb3Jk
aW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nU3RhdGVOb2RlQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAK
LQogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJCdWZmZXIuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCAxNGRlNWM1Y2QyZDVkMDdkZmNmOTA1YjJmMjkyMmQwYmJkZTQx
ODU4Li44MGVkMzQ5N2VhMTBkNzNhYjhhZTc3MTU1N2QzMjdiMmUzZTMwYWFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQAogI2lu
Y2x1ZGUgIkFQSUFwcGxpY2F0aW9uTWFuaWZlc3QuaCIKICNlbmRpZgogCi0jaWYgRU5BQkxFKEFT
WU5DX1NDUk9MTElORykKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBQTEFURk9STShD
T0NPQSkKICNpbmNsdWRlICJSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmgiCiAjZW5k
aWYKIApAQCAtODAzLDcgKzgwMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojppbml0aWFsaXplV2Vi
UGFnZSgpCiAgICAgbV9kcmF3aW5nQXJlYSA9IG1fcGFnZUNsaWVudC5jcmVhdGVEcmF3aW5nQXJl
YVByb3h5KCk7CiAgICAgQVNTRVJUKG1fZHJhd2luZ0FyZWEpOwogCi0jaWYgRU5BQkxFKEFTWU5D
X1NDUk9MTElORykKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBQTEFURk9STShDT0NP
QSkKICAgICBpZiAobV9kcmF3aW5nQXJlYS0+dHlwZSgpID09IERyYXdpbmdBcmVhVHlwZVJlbW90
ZUxheWVyVHJlZSkgewogICAgICAgICBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkgPSBzdGQ6
Om1ha2VfdW5pcXVlPFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKICNp
ZiBQTEFURk9STShJT1MpCkBAIC0yMDE1LDcgKzIwMTUsNyBAQCBzdGF0aWMgV2ViV2hlZWxFdmVu
dCBjb2FsZXNjZWRXaGVlbEV2ZW50KERlcXVlPE5hdGl2ZVdlYldoZWVsRXZlbnQ+JiBxdWV1ZSwg
VmVjdAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBOYXRpdmVX
ZWJXaGVlbEV2ZW50JiBldmVudCkKIHsKLSNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQorI2lm
IEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChtX3Nj
cm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkgJiYgbV9zY3JvbGxpbmdDb29yZGluYXRvclByb3h5LT5o
YW5kbGVXaGVlbEV2ZW50KHBsYXRmb3JtKGV2ZW50KSkpCiAgICAgICAgIHJldHVybjsKICNlbmRp
ZgpAQCAtMjE4OSw3ICsyMTg5LDcgQEAgc3RhdGljIFRyYWNraW5nVHlwZSBtZXJnZVRyYWNraW5n
VHlwZXMoVHJhY2tpbmdUeXBlIGEsIFRyYWNraW5nVHlwZSBiKQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6dXBkYXRlVG91Y2hFdmVudFRyYWNraW5nKGNvbnN0IFdlYlRvdWNoRXZlbnQmIHRvdWNoU3Rh
cnRFdmVudCkKIHsKLSNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQorI2lmIEVOQUJMRShBU1lO
Q19TQ1JPTExJTkcpICYmIFBMQVRGT1JNKENPQ09BKQogICAgIGNvbnN0IEV2ZW50TmFtZXMmIG5h
bWVzID0gZXZlbnROYW1lcygpOwogICAgIGZvciAoYXV0byYgdG91Y2hQb2ludCA6IHRvdWNoU3Rh
cnRFdmVudC50b3VjaFBvaW50cygpKSB7CiAgICAgICAgIEludFBvaW50IGxvY2F0aW9uID0gdG91
Y2hQb2ludC5sb2NhdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApp
bmRleCBmMTIzMjVhNjZhZmRhYjFjYzZlMzNkZTY1ZjY2YTE0ZTFjMmQ2ZDZmLi5jY2FlZGVkMzEz
ZDBiZTcyYmRmNjA5NDUxYWYyMzhkYjE1ZDUyYzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaApAQCAtMzQ3LDcgKzM0Nyw3IEBAIHB1YmxpYzoKICAgICBOU0FycmF5ICpk
YXRhRGV0ZWN0aW9uUmVzdWx0cygpIHsgcmV0dXJuIG1fZGF0YURldGVjdGlvblJlc3VsdHMuZ2V0
KCk7IH0KICNlbmRpZgogICAgICAgICAKLSNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQorI2lm
IEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFBMQVRGT1JNKENPQ09BKQogICAgIFJlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkoKSBjb25z
dCB7IHJldHVybiBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuZ2V0KCk7IH0KICNlbmRpZgog
CkBAIC0xNzc4LDcgKzE3NzgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0xvYWRpbmdBbHRl
cm5hdGVIVE1MU3RyaW5nRm9yRmFpbGluZ1Byb3Zpc2lvbmFsTG9hZCB7IGZhbHNlIH07CiAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4gbV9kcmF3aW5nQXJlYTsKLSNpZiBF
TkFCTEUoQVNZTkNfU0NST0xMSU5HKQorI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFBM
QVRGT1JNKENPQ09BKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVTY3JvbGxpbmdDb29yZGlu
YXRvclByb3h5PiBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk7CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcAppbmRleCBiNjIzZjc2YjNjMmZkNzExNzVmYWM5NDlhNzg3N2FmOGMzODJl
YTEzLi5lZjM2OTQzYWE3NjI5N2UwYmI5YTNkOTFiNzQzMTY5NDJiZWRjYWExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcApAQCAtOTI4LDkgKzkyOCwxMyBAQCBib29sIFdlYkNocm9tZUNsaWVudDo6
bGF5ZXJUcmVlU3RhdGVJc0Zyb3plbigpIGNvbnN0CiBSZWZQdHI8U2Nyb2xsaW5nQ29vcmRpbmF0
b3I+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlU2Nyb2xsaW5nQ29vcmRpbmF0b3IoUGFnZSYgcGFn
ZSkgY29uc3QKIHsKICAgICBBU1NFUlRfVU5VU0VEKHBhZ2UsIG1fcGFnZS5jb3JlUGFnZSgpID09
ICZwYWdlKTsKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAobV9wYWdlLmRyYXdpbmdBcmVh
KCktPnR5cGUoKSAhPSBEcmF3aW5nQXJlYVR5cGVSZW1vdGVMYXllclRyZWUpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIHJldHVybiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcjo6Y3Jl
YXRlKCZtX3BhZ2UpOworI2Vsc2UKKyAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZgogfQogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlIGIvU291cmNl
L2NtYWtlL09wdGlvbnNHVEsuY21ha2UKaW5kZXggYWY5ZDY5YTRjNDgwM2JlMzkzYWZiMjg0YWYy
Yzk2OTY0M2VkNjM4YS4uM2Y5MWIwNTVhNDdlYTZjN2RhMmY5MWUzMGIzNzlkMzZiOGUzMTg4OSAx
MDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKKysrIGIvU291cmNlL2Nt
YWtlL09wdGlvbnNHVEsuY21ha2UKQEAgLTEyMyw2ICsxMjMsNyBAQCBlbmRpZiAoKQogIyB3aXRo
b3V0IGFwcHJvdmFsIGZyb20gYSBHVEsrIHJldmlld2VyLiBUaGVyZSBtdXN0IGJlIHN0cm9uZyBy
ZWFzb24gdG8gc3VwcG9ydAogIyBjaGFuZ2luZyB0aGUgdmFsdWUgb2YgdGhlIG9wdGlvbi4KIFdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5W
QVMgUFVCTElDIE9GRikKK1dFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9B
U1lOQ19TQ1JPTExJTkcgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZB
TFVFKEVOQUJMRV9EUkFHX1NVUFBPUlQgUFVCTElDIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxU
X1BPUlRfVkFMVUUoRU5BQkxFX0dFT0xPQ0FUSU9OIFBVQkxJQyBPTikKIFdFQktJVF9PUFRJT05f
REVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9JQ09OREFUQUJBU0UgUFVCTElDIE9OKQpkaWZmIC0t
Z2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9u
c1dQRS5jbWFrZQppbmRleCBjNWRjNGRmMDc4NjFiM2EyZTc3MmFhNjA0YWIwZWJlOGZjYWEzYjJj
Li40ZGMxN2E5YTMyZGJiZmQ4ODhmMGYxYTQxMDIyMGVmMjgxNWRlN2E2IDEwMDY0NAotLS0gYS9T
b3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dQ
RS5jbWFrZQpAQCAtMzEsNiArMzEsNyBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShVU0VfU1lTVEVNX01BTExPQyBQVUJMSUMgT0ZGKQogIyB3ZSBuZWVkIGEgdmFsdWUgZGlmZmVy
ZW50IGZyb20gdGhlIGRlZmF1bHQgZGVmaW5lZCBpbiBXZWJLaXRGZWF0dXJlcy5jbWFrZS4KICMg
Q2hhbmdpbmcgdGhlc2Ugb3B0aW9ucyBpcyBjb21wbGV0ZWx5IHVuc3VwcG9ydGVkLgogV0VCS0lU
X09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0FDQ0VTU0lCSUxJVFkgUFJJVkFURSBP
TikKK1dFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9BU1lOQ19TQ1JPTExJ
TkcgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9G
VUxMU0NSRUVOX0FQSSBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZB
TFVFKEVOQUJMRV9HRU9MT0NBVElPTiBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVM
VF9QT1JUX1ZBTFVFKEVOQUJMRV9NSFRNTCBQUklWQVRFIE9OKQpkaWZmIC0tZ2l0IGEvQ2hhbmdl
TG9nIGIvQ2hhbmdlTG9nCmluZGV4IDBlMDJjYzdjOWJmY2MxNmI2ZjAwZWZhNTRlYzlhNjJlYjE0
ODczM2UuLjZjMGNjODM3ODM1NGFmMmY5NmI4ZWVjMjkwZWUxYzM5YjlmMjQzMDkgMTAwNjQ0Ci0t
LSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOC0wNC0y
NSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11b
V1BFXSBFbmFibGUgQVNZTkNfU0NST0xMSU5HCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ5NjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlOiBFbmFi
bGUgQVNZTkNfU0NST0xMSU5HIGFzIGEgcHJpdmF0ZSBvcHRpb24uCisgICAgICAgICogU291cmNl
L2NtYWtlL09wdGlvbnNXUEUuY21ha2U6IERpdHRvLgorCiAyMDE4LTA0LTI0ICBMZW8gQmFsdGVy
ICA8bGVvbmFyZG8uYmFsdGVyQGdtYWlsLmNvbT4KIAogICAgICAgICBMYW5kIHRlc3QyNjIgdGVz
dCByZXN1bHRzIGFzc29jaWF0ZWQgd2l0aCBUZXN0MjYyIHJ1bm5lcgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338726</attachid>
            <date>2018-04-25 06:47:53 -0700</date>
            <delta_ts>2018-04-26 00:36:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184961-20180425154751.patch</filename>
            <type>text/plain</type>
            <size>53623</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwOTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2FiMDM2OWRlZjJjOTAy
OTU3Nzk0YjBlZjllYTY0YTQ0NTY2NDQ5My4uYTU1NmM0ZGVmNzkwZWZkMzhiOWEzZDIwNGNjZWUw
YTY2NDgxN2MxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDE4LTA0LTI1ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEVu
YWJsZSBBU1lOQ19TQ1JPTExJTkcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4NDk2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBDb29yZGluYXRlZEdyYXBoaWNzLXNwZWNpZmljIGNvZGUgdGhhdCB3
aWxsIGJlIHJlcXVpcmVkIGZvciBhc3luYworICAgICAgICBzY3JvbGxpbmcgc3VwcG9ydC4gVGhl
IFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcyBhbmQKKyAgICAgICAgU2Ny
b2xsaW5nVHJlZUNvb3JkaW5hdGVkR3JhcGhpY3MgY2xhc3NlcyBhcmUgbW9zdGx5IGNvbXBsZXRl
IGFscmVhZHksCisgICAgICAgIGJ1dCB0aGUgbmV3IFNjcm9sbGluZ1RyZWVOb2RlLWluaGVyaXRp
bmcgY2xhc3NlcyB3aWxsIG5lZWQgZnVydGhlcgorICAgICAgICB3b3JrIHRoYXQgd2lsbCBoYXZl
IHRvIGJlIGRvbmUgaW4gcGFyYWxsZWwgd2l0aCBvdGhlciBpbXByb3ZlbWVudHMKKyAgICAgICAg
cGxhbm5lZCBmb3IgdGhlIENvb3JkaW5hdGVkR3JhcGhpY3Mgc3Vic3lzdGVtLgorCisgICAgICAg
IFdoaWxlIHRoZSBidWlsZC10aW1lIGZsYWcgaXMgZW5hYmxlZCwgdGhlIGZlYXR1cmUgaXMgc3Rp
bGwgbm90IHVzYWJsZQorICAgICAgICBib3RoIGR1ZSB0byB0aGUgbWVudGlvbmVkIHBlbmRpbmcg
Y2hhbmdlcyBhbmQgZnVydGhlciBlbmFibGluZyBpbiB0aGUKKyAgICAgICAgV2ViS2l0IGxheWVy
LgorCisgICAgICAgIFZhcmlvdXMgYnVpbGQgZml4ZXMgdGhhdCBhZGRyZXNzIG5vbi1Db2NvYSB1
c2FnZSBvZiBBU1lOQ19TQ1JPTExJTkcKKyAgICAgICAgY29kZSBhcmUgaW5jbHVkZWQuCisKKyAg
ICAgICAgKiBTb3VyY2VzLnR4dDogQWRkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIHRv
IGJ1aWxkLgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogU291cmNlc0dU
Sy50eHQ6IEFkZCBuZXcgZmlsZXMgdG8gYnVpbGQuCisgICAgICAgICogU291cmNlc1dQRS50eHQ6
IERpdHRvLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3IuY3BwOgorICAgICAgICBHdWFyZCBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0Fz
RmxvYXQoKSB3aXRoIENTU19TQ1JPTExfU05BUC4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdUcmVlLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxp
bmdUcmVlLmNwcDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1Ry
ZWUuaDoKKyAgICAgICAgY3VycmVudFNuYXBQb2ludEluZGljZXNEaWRDaGFuZ2UoKSBtZXRob2Qg
aXMgb25seSBpbnZva2VkIGluCisgICAgICAgIENvY29hLXNwZWNpZmljIGNvZGUsIGFuZCBpdHMg
aW1wbGVtZW50YXRpb24gY2FsbHMgQ29jb2Etc3BlY2lmaWMgbWV0aG9kCisgICAgICAgIG9uIHRo
ZSBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yIGNsYXNzLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xs
aW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdy
YXBoaWNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdy
YXBoaWNzOjpTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzOjp+U2Ny
b2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljczo6cGFnZURlc3Ryb3llZCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhp
Y3M6OmNvbW1pdFRyZWVTdGF0ZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljczo6aGFuZGxlV2hlZWxFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3M6OnNj
aGVkdWxlVHJlZVN0YXRlQ29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3Jk
aW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljczo6Y29tbWl0VHJlZVN0YXRlKToKKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29v
cmRpbmF0ZWRHcmFwaGljcy5oOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9jb29y
ZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ1RyZWVDb29yZGluYXRlZEdyYXBoaWNzLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlQ29vcmRpbmF0ZWRHcmFwaGljczo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVDb29yZGluYXRlZEdyYXBo
aWNzOjpTY3JvbGxpbmdUcmVlQ29vcmRpbmF0ZWRHcmFwaGljcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdUcmVlQ29vcmRpbmF0ZWRHcmFwaGljczo6Y3JlYXRlU2Nyb2xsaW5nVHJlZU5v
ZGUpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xs
aW5nVHJlZUNvb3JkaW5hdGVkR3JhcGhpY3MuaDogQWRkZWQuCisgICAgICAgICogcGFnZS9zY3Jv
bGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRml4ZWROb2RlOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6U2Nyb2xsaW5nVHJlZUZp
eGVkTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRml4ZWROb2RlOjp+U2Ny
b2xsaW5nVHJlZUZpeGVkTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRml4
ZWROb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1RyZWVGaXhlZE5vZGU6OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UpOgor
ICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nVHJl
ZUZpeGVkTm9kZS5oOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9jb29yZGluYXRl
ZGdyYXBoaWNzL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVDb29yZGluYXRlZEdyYXBo
aWNzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlQ29vcmRpbmF0ZWRHcmFwaGljczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVDb29yZGluYXRlZEdyYXBoaWNzOjpTY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlQ29vcmRpbmF0ZWRHcmFwaGljcyk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlQ29vcmRpbmF0ZWRHcmFw
aGljczo6aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlQ29vcmRpbmF0ZWRHcmFwaGljczo6c2Nyb2xsUG9zaXRpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUNv
b3JkaW5hdGVkR3JhcGhpY3M6OnNldFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVDb29yZGluYXRlZEdyYXBoaWNzOjpzZXRT
Y3JvbGxQb3NpdGlvbldpdGhvdXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVDb29yZGluYXRlZEdyYXBoaWNz
OjpzZXRTY3JvbGxMYXllclBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVDb29yZGluYXRlZEdyYXBoaWNzOjp1cGRhdGVMYXllcnNBZnRl
clZpZXdwb3J0Q2hhbmdlKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdy
YXBoaWNzL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVDb29yZGluYXRlZEdyYXBoaWNz
Lmg6IEFkZGVkLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3Mv
U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1RyZWVTdGlja3lOb2RlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nVHJlZVN0aWNreU5vZGU6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjp+U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OmNvbW1pdFN0YXRl
QmVmb3JlQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVN0aWNreU5v
ZGU6OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UpOgorICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50Lmg6IEVuYWJsZSBQbGF0
Zm9ybVdoZWVsRXZlbnRQaGFzZSBjb2RlCisgICAgICAgIGZvciBXUEUuIEd1YXJkIGxhdGNoaW5n
LXNwZWNpZmljIG1ldGhvZHMgdW5kZXIgQVNZTkNfU0NST0xMSU5HLgorICAgICAgICAqIHBsYXRm
b3JtL1RleHR1cmVNYXBwZXIuY21ha2U6IFR3byBidWlsZCB0YXJnZXRzIGhhdmUgYmVlbiBtb3Zl
ZCB0bworICAgICAgICBTb3VyY2VzR1RLLnR4dCBhbmQgU291cmNlc1dQRS50eHQuCisKIDIwMTgt
MDQtMjUgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggcHJv
amVjdCBmaWxlIGFmdGVyIHIyMzA5MzEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY1YjNkY2I3MTg0ZDFjODJkYmIw
MWRlNjNlYjBlN2QzY2JlNmUxYjMuLmEwNWIyOTBjMjZmZWZjMzllNjlkMTE1ZjAzNzFmN2E4MzNi
MmE5N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTgtMDQtMjUgIFphbiBEb2JlcnNl
ayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gRW5hYmxlIEFT
WU5DX1NDUk9MTElORworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTg0OTYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgR3VhcmQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IgYW5kIFJlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yUHJveHkKKyAgICAgICAgdXNhZ2UgaW4gV2ViQ2hyb21lQ2xpZW50IGFuZCBX
ZWJQYWdlUHJveHksIHJlc3BlY3RpdmVseSwgd2l0aAorICAgICAgICBQTEFURk9STShDT0NPQSkg
aW4gYWRkaXRpb24gdG8gdGhlIEFTWU5DX1NDUk9MTElORyBndWFyZHMuCisKKyAgICAgICAgRGVz
cGl0ZSBlbmFibGluZyB0aGUgY29kZSBhdCBidWlsZC10aW1lLCB0aGUgZmVhdHVyZSAoYXMgaW50
ZW5kZWQpIGlzCisgICAgICAgIG5vdCB5ZXQgdXNlZCBiZWNhdXNlIG9mIHRoZSBEcmF3aW5nQXJl
YSByZWplY3Rpb24gaW4gdGhlIFdlYlBhZ2UKKyAgICAgICAgY29uc3RydWN0b3IuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5Ojppbml0aWFsaXplV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBk
YXRlVG91Y2hFdmVudFRyYWNraW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yIGNvbnN0KToKKwogMjAxOC0wNC0yNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxj
Z2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gSW1wbGVtZW50IE1vdXNlRXZlbnQu
YnV0dG9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAwMzg4NTNlNDNmNmJiZDE2N2Y0OWFhZDNmZjg4ZGM3
Y2ZhYzY2YTAzLi40YmFjMmMwODVlZGZmZjgwNDc2NDg4YjkyOTdiYTcwOTY4NWJjOWFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dApAQCAtMTQzNiw2ICsxNDM2LDcgQEAgcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5
UG9saWN5U291cmNlLmNwcAogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlz
dC5jcHAKIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUu
Y3BwCiAKK3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCiBwYWdl
L3Njcm9sbGluZy9BeGlzU2Nyb2xsU25hcE9mZnNldHMuY3BwCiBwYWdlL3Njcm9sbGluZy9TY3Jv
bGxMYXRjaGluZ1N0YXRlLmNwcAogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29uc3RyYWludHMu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNl
L1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCBhMDM2MzMwMjhhZjhkZTQzNWViZTllMmJh
NTRhMzkyN2NjNzEzOGIyLi4yNmZiMmYwY2E0NTJjZWEyNTA4MzQ2NjkwNDdlYzQ2ODYxN2E2ZWI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTE0MCw3ICsxNDAsNiBAQCBwYWdlL21hYy9T
ZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tCiBwYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93
Lm1tCiBwYWdlL21hYy9XaGVlbEV2ZW50RGVsdGFGaWx0ZXJNYWMubW0KIAotcGFnZS9zY3JvbGxp
bmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z01vbWVudHVtQ2FsY3VsYXRvci5jcHAKIAogcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5n
U3RhdGVOb2RlLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0CmluZGV4IGZmY2E5YTI5YTM4NWFkYjU5NDdi
OGMzMjRlNzlmMmM1MGM2N2I1NDAuLjkyYWNkMGJjYWZkNmUwYWJkNjVlZjRmNjVlYjk0NTY0MTk5
Y2Y4NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0CkBAIC00Niw2ICs0NiwxMyBAQCBsb2FkZXIvc291
cC9SZXNvdXJjZUxvYWRlclNvdXAuY3BwCiBwYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5
TGludXguY3BwCiBwYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VUaHJlYWRMaW51eC5jcHAKIAorcGFn
ZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3Jk
aW5hdGVkR3JhcGhpY3MuY3BwCitwYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Nj
cm9sbGluZ1RyZWVDb29yZGluYXRlZEdyYXBoaWNzLmNwcAorcGFnZS9zY3JvbGxpbmcvY29vcmRp
bmF0ZWRncmFwaGljcy9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmNwcAorcGFnZS9zY3JvbGxpbmcv
Y29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlQ29vcmRp
bmF0ZWRHcmFwaGljcy5jcHAKK3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Ny
b2xsaW5nVHJlZVN0aWNreU5vZGUuY3BwCitwYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBo
aWNzL1Njcm9sbGluZ1N0YXRlTm9kZUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCisKIHBhZ2Uvc2Ny
b2xsaW5nL2dlbmVyaWMvU2Nyb2xsaW5nVGhyZWFkR2VuZXJpYy5jcHAKIAogcGxhdGZvcm0vU2Ny
b2xsQW5pbWF0aW9uS2luZXRpYy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXNXUEUudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc1dQRS50eHQKaW5kZXggZTg2MWRhZTVk
MzY4NjRhYTljNjlhMTQxYTJiMjRjMWVmZDZmYzNiMC4uZmMwMDE5YjUzYmE1ODVlZjA5MjM3MThk
N2Q3NGI3MDk5MWI2YTUxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc1dQRS50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc1dQRS50eHQKQEAgLTMyLDYgKzMyLDEwIEBA
IHBhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51eC5jcHAKIHBhZ2UvbGludXgvUmVz
b3VyY2VVc2FnZVRocmVhZExpbnV4LmNwcAogCiBwYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdy
YXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKK3BhZ2Uv
c2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nVHJlZUNvb3JkaW5hdGVkR3Jh
cGhpY3MuY3BwCitwYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ1Ry
ZWVGaXhlZE5vZGUuY3BwCitwYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVDb29yZGluYXRlZEdyYXBoaWNzLmNwcAorcGFnZS9z
Y3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAK
IHBhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nU3RhdGVOb2RlQ29v
cmRpbmF0ZWRHcmFwaGljcy5jcHAKIAogcGFnZS9zY3JvbGxpbmcvZ2VuZXJpYy9TY3JvbGxpbmdU
aHJlYWRHZW5lcmljLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCBlMmVjZDVhMmZmOWE3
YmIxOGVlODY1NmMwYmIxZTRhMmU4YWI4YmFmLi4wYmYzMTk3ZTE3ZjA2MGMwOTViNmZlYTllNzAz
NjNlZmRjY2VkMzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9B
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtNjQsNiArNjQsNyBAQCB2
b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjcm9sbGluZ1N0YXRlVHJlZVByb3BlcnRp
ZXNDaGFuZ2VkKCkKICAgICBzY2hlZHVsZVRyZWVTdGF0ZUNvbW1pdCgpOwogfQogCisjaWYgRU5B
QkxFKENTU19TQ1JPTExfU05BUCkKIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRTdGF0ZVNjcm9sbGlu
Z05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlJiBub2Rl
LCBTY3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3QgVmVjdG9yPExheW91dFVuaXQ+KiBzbmFwT2Zm
c2V0cywgY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPExheW91dFVuaXQ+Piogc25hcE9m
ZnNldFJhbmdlcywgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCiB7CiAgICAgLy8gRklYTUU6IElu
Y29ycG9yYXRlIGN1cnJlbnQgcGFnZSBzY2FsZSBmYWN0b3IgaW4gc25hcHBpbmcgdG8gZGV2aWNl
IHBpeGVsLiBQZXJoYXBzIHdlIHNob3VsZCBqdXN0IGNvbnZlcnQgdG8gZmxvYXQgaGVyZSBhbmQg
bGV0IFVJIHByb2Nlc3MgZG8gdGhlIHBpeGVsIHNuYXBwaW5nPwpAQCAtODgsNiArODksNyBAQCBz
dGF0aWMgaW5saW5lIHZvaWQgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0
KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaQogICAgICAgICBub2RlLnNldFZlcnRpY2FsU25hcE9mZnNl
dFJhbmdlcyhzbmFwT2Zmc2V0UmFuZ2VzQXNGbG9hdCk7CiAgICAgfQogfQorI2VuZGlmCiAKIHZv
aWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0RXZlbnRUcmFja2luZ1JlZ2lvbnNEaXJ0
eSgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgK
aW5kZXggMTk0MDE0YWU1YTNlOTdlOTNiY2U4NDBjOTI4NTU1Njg2YTA1NGI0NC4uMWQ5ZGVhYWRi
ZWZiNjFhMzNiMjgzYmUwM2I2MDdlMWY5ODVhNjhhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaApAQCAtOTEsOCArOTEsNiBAQCBwdWJsaWM6CiAg
ICAgLy8gYW5kIGNhbGwgc2Nyb2xsaW5nVHJlZU5vZGVEaWRTY3JvbGwoKS4KICAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2Nyb2xsUG9zaXRpb25DaGFuZ2VkVmlhRGVsZWdhdGVkU2Ny
b2xsaW5nKFNjcm9sbGluZ05vZGVJRCwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgc2Nyb2xs
UG9zaXRpb24sIGJvb2wgaW5Vc2VySW50ZXJhY3Rpb24pOwogCi0gICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCB2b2lkIGN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKFNjcm9sbGluZ05v
ZGVJRCwgdW5zaWduZWQgaG9yaXpvbnRhbCwgdW5zaWduZWQgdmVydGljYWwpID0gMDsKLQogICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCByZXBvcnRTeW5jaHJvbm91c1Njcm9sbGluZ1Jl
YXNvbnNDaGFuZ2VkKE1vbm90b25pY1RpbWUsIFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucykg
eyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHJlcG9ydEV4cG9zZWRVbmZpbGxl
ZEFyZWEoTW9ub3RvbmljVGltZSwgdW5zaWduZWQgLyogdW5maWxsZWRBcmVhICovKSB7IH0KIApA
QCAtMTE0LDYgKzExMiwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVRlc3RE
ZWZlcnJhbEZvclJlYXNvbihXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OlNjcm9sbGFibGVBcmVhSWRl
bnRpZmllciwgV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpEZWZlclRlc3RUcmlnZ2VyUmVhc29uKSB7
IH0KICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCB2b2lkIGN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKFNjcm9sbGluZ05vZGVJ
RCwgdW5zaWduZWQgaG9yaXpvbnRhbCwgdW5zaWduZWQgdmVydGljYWwpID0gMDsKKyNlbmRpZgor
CiAgICAgLy8gQ2FuIGJlIGNhbGxlZCBmcm9tIGFueSB0aHJlYWQuIFdpbGwgdXBkYXRlIHdoYXQg
ZWRnZXMgYWxsb3cgcnViYmVyLWJhbmRpbmcuCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRD
YW5SdWJiZXJCYW5kU3RhdGUoYm9vbCBjYW5SdWJiZXJCYW5kQXRMZWZ0LCBib29sIGNhblJ1YmJl
ckJhbmRBdFJpZ2h0LCBib29sIGNhblJ1YmJlckJhbmRBdFRvcCwgYm9vbCBjYW5SdWJiZXJCYW5k
QXRCb3R0b20pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9U
aHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
VGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcAppbmRleCBmODVlNjRkZTcxY2JkM2Q1YjI5ZjQwYTdl
NDU5NjdkNzRiMjdmYTRmLi41YzdiYTgwM2I2Zjk4YzFiYTdjMWY1ZjRhMWI1ZDY1ZTZjMGY1ODY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9s
bGluZ1RyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVk
U2Nyb2xsaW5nVHJlZS5jcHAKQEAgLTMxLDEwICszMSw4IEBACiAjaW5jbHVkZSAiQXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgogI2lu
Y2x1ZGUgIlNjcm9sbGluZ1RocmVhZC5oIgotI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVGaXhlZE5v
ZGUuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdUcmVlTm9kZS5oIgogI2luY2x1ZGUgIlNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlLmgiCi0jaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUu
aCIKICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0x
MTksNiArMTE3LDcgQEAgdm9pZCBUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OnJlcG9ydEV4cG9zZWRV
bmZpbGxlZEFyZWEoTW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIHUKICAgICB9KTsKIH0KIAorI2lm
IFBMQVRGT1JNKENPQ09BKQogdm9pZCBUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OmN1cnJlbnRTbmFw
UG9pbnRJbmRpY2VzRGlkQ2hhbmdlKFNjcm9sbGluZ05vZGVJRCBub2RlSUQsIHVuc2lnbmVkIGhv
cml6b250YWwsIHVuc2lnbmVkIHZlcnRpY2FsKQogewogICAgIGlmICghbV9zY3JvbGxpbmdDb29y
ZGluYXRvcikKQEAgLTEyOCw2ICsxMjcsNyBAQCB2b2lkIFRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6
Y3VycmVudFNuYXBQb2ludEluZGljZXNEaWRDaGFuZ2UoU2Nyb2xsaW5nTm9kZUlEIG5vZAogICAg
ICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2V0QWN0aXZlU2Nyb2xsU25hcEluZGljZXMobm9k
ZUlELCBob3Jpem9udGFsLCB2ZXJ0aWNhbCk7CiAgICAgfSk7CiB9CisjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKE1BQykKIHZvaWQgVGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50
UGhhc2UoUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgcGhhc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5oCmluZGV4IDQ2ZjY0
M2MwMWE2ZGEyNTRhMWU3NGQwNTQyZjMyODkyNWI4M2QzMmQuLmRiM2MzZDVjZmI5ZTkwOGIzZjdk
MjNkZDE2OGY5MjBkMWM3YTM0ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5oCkBAIC01OCw3ICs1OCw2IEBAIHByb3Rl
Y3RlZDoKICAgICBleHBsaWNpdCBUaHJlYWRlZFNjcm9sbGluZ1RyZWUoQXN5bmNTY3JvbGxpbmdD
b29yZGluYXRvciYpOwogCiAgICAgdm9pZCBzY3JvbGxpbmdUcmVlTm9kZURpZFNjcm9sbChTY3Jv
bGxpbmdOb2RlSUQsIGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPEZsb2F0UG9pbnQ+JiBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgU2Nyb2xsaW5nTGF5
ZXJQb3NpdGlvbkFjdGlvbiA9IFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb246OlN5bmMpIG92
ZXJyaWRlOwotICAgIHZvaWQgY3VycmVudFNuYXBQb2ludEluZGljZXNEaWRDaGFuZ2UoU2Nyb2xs
aW5nTm9kZUlELCB1bnNpZ25lZCBob3Jpem9udGFsLCB1bnNpZ25lZCB2ZXJ0aWNhbCkgb3ZlcnJp
ZGU7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQgaGFuZGxlV2hlZWxFdmVudFBoYXNlKFBs
YXRmb3JtV2hlZWxFdmVudFBoYXNlKSBvdmVycmlkZTsKICAgICB2b2lkIHNldEFjdGl2ZVNjcm9s
bFNuYXBJbmRpY2VzKFNjcm9sbGluZ05vZGVJRCwgdW5zaWduZWQgaG9yaXpvbnRhbEluZGV4LCB1
bnNpZ25lZCB2ZXJ0aWNhbEluZGV4KSBvdmVycmlkZTsKQEAgLTY2LDYgKzY1LDEwIEBAIHByb3Rl
Y3RlZDoKICAgICB2b2lkIHJlbW92ZVRlc3REZWZlcnJhbEZvclJlYXNvbihXaGVlbEV2ZW50VGVz
dFRyaWdnZXI6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciwgV2hlZWxFdmVudFRlc3RUcmlnZ2Vy
OjpEZWZlclRlc3RUcmlnZ2VyUmVhc29uKSBvdmVycmlkZTsKICNlbmRpZgogCisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgdm9pZCBjdXJyZW50U25hcFBvaW50SW5kaWNlc0RpZENoYW5nZShTY3Jv
bGxpbmdOb2RlSUQsIHVuc2lnbmVkIGhvcml6b250YWwsIHVuc2lnbmVkIHZlcnRpY2FsKSBvdmVy
cmlkZTsKKyNlbmRpZgorCiAgICAgdm9pZCByZXBvcnRFeHBvc2VkVW5maWxsZWRBcmVhKE1vbm90
b25pY1RpbWUsIHVuc2lnbmVkIHVuZmlsbGVkQXJlYSkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXBv
cnRTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnNDaGFuZ2VkKE1vbm90b25pY1RpbWUsIFN5bmNo
cm9ub3VzU2Nyb2xsaW5nUmVhc29ucykgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRp
bmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdy
YXBoaWNzLmNwcAppbmRleCBiMWE0Nzc1OGI5MjQ5YzdmNmI5NjI1N2E1ZDAxMjc4MDU3MWRkZDMw
Li5kMjNmMzc4MzMyNmMwMzJjYzczYTIzYTU0M2IyNDBmMTA0MzViYWVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNv
b3JkaW5hdGVkR3JhcGhpY3MuY3BwCkBAIC0xLDM5ICsxLDk0IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4K
KyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCiAgKiBhcmUgbWV0OgorICoKICAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
ICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQKKyAqICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSUyBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNjcm9s
bGluZ0Nvb3JkaW5hdG9yLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGlu
YXRlZEdyYXBoaWNzLmgiCiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAKKyNpbmNs
dWRlICJTY3JvbGxpbmdUaHJlYWQuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlQ29vcmRpbmF0
ZWRHcmFwaGljcy5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlZjxTY3JvbGxpbmdDb29y
ZGluYXRvcj4gU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNyZWF0ZShQYWdlKiBwYWdlKQogewotICAg
IC8vIEZJWE1FOiBSZXR1cm4gYW4gb2JqZWN0IGltcGxlbWVudGluZyBBc3luY1Njcm9sbGluZ0Nv
b3JkaW5hdG9yLgotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNjcm9sbGluZ0Nvb3JkaW5hdG9y
KHBhZ2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTY3JvbGxpbmdDb29yZGluYXRvckNv
b3JkaW5hdGVkR3JhcGhpY3MocGFnZSkpOworfQorCitTY3JvbGxpbmdDb29yZGluYXRvckNvb3Jk
aW5hdGVkR3JhcGhpY3M6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcyhQ
YWdlKiBwYWdlKQorICAgIDogQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcihwYWdlKQorICAgICwg
bV9zY3JvbGxpbmdTdGF0ZVRyZWVDb21taXR0ZXJUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMs
ICZTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3M6OmNvbW1pdFRyZWVTdGF0
ZSkKK3sKKyAgICBzZXRTY3JvbGxpbmdUcmVlKFNjcm9sbGluZ1RyZWVDb29yZGluYXRlZEdyYXBo
aWNzOjpjcmVhdGUoKnRoaXMpKTsKK30KKworU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRl
ZEdyYXBoaWNzOjp+U2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzKCkKK3sK
KyAgICBBU1NFUlQoIXNjcm9sbGluZ1RyZWUoKSk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nQ29vcmRp
bmF0b3JDb29yZGluYXRlZEdyYXBoaWNzOjpwYWdlRGVzdHJveWVkKCkKK3sKKyAgICBBc3luY1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yOjpwYWdlRGVzdHJveWVkKCk7CisKKyAgICBtX3Njcm9sbGluZ1N0
YXRlVHJlZUNvbW1pdHRlclRpbWVyLnN0b3AoKTsKKworICAgIHJlbGVhc2VTY3JvbGxpbmdUcmVl
KCk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzOjpj
b21taXRUcmVlU3RhdGVJZk5lZWRlZCgpCit7CisgICAgY29tbWl0VHJlZVN0YXRlKCk7CisgICAg
bV9zY3JvbGxpbmdTdGF0ZVRyZWVDb21taXR0ZXJUaW1lci5zdG9wKCk7Cit9CisKK2Jvb2wgU2Ny
b2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzOjpoYW5kbGVXaGVlbEV2ZW50KEZy
YW1lVmlldyYsIGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpCit7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCit2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljczo6c2No
ZWR1bGVUcmVlU3RhdGVDb21taXQoKQoreworICAgIGlmICghbV9zY3JvbGxpbmdTdGF0ZVRyZWVD
b21taXR0ZXJUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3Njcm9sbGluZ1N0YXRlVHJlZUNv
bW1pdHRlclRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOworfQorCit2b2lkIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljczo6Y29tbWl0VHJlZVN0YXRlKCkKK3sKKyAgICBpZiAo
IXNjcm9sbGluZ1N0YXRlVHJlZSgpLT5oYXNDaGFuZ2VkUHJvcGVydGllcygpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBSZWZQdHI8VGhyZWFkZWRTY3JvbGxpbmdUcmVlPiB0aHJlYWRlZFNjcm9s
bGluZ1RyZWUgPSBkb3duY2FzdDxUaHJlYWRlZFNjcm9sbGluZ1RyZWU+KHNjcm9sbGluZ1RyZWUo
KSk7CisKKyAgICBhdXRvIHRyZWVTdGF0ZSA9IHNjcm9sbGluZ1N0YXRlVHJlZSgpLT5jb21taXQo
TGF5ZXJSZXByZXNlbnRhdGlvbjo6UGxhdGZvcm1MYXllclJlcHJlc2VudGF0aW9uKTsKKyAgICBT
Y3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKFt0aHJlYWRlZFNjcm9sbGluZ1RyZWUsIHRyZWVTdGF0
ZSA9IFdURk1vdmUodHJlZVN0YXRlKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgdGhyZWFkZWRTY3Jv
bGxpbmdUcmVlLT5jb21taXRUcmVlU3RhdGUoV1RGTW92ZSh0cmVlU3RhdGUpKTsKKyAgICB9KTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNv
b3JkaW5hdGVkR3JhcGhpY3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3Jk
aW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODI1NzQyMmVjOWVkYTA2NTc3MTJmNWM2MjZlMTFlZjMzNDViNDYzMwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVk
Z3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmgKQEAgLTAs
MCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVNZ
TkNfU0NST0xMSU5HKSAmJiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisKKyNpbmNsdWRlICJB
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCisKKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRp
bmF0ZWRHcmFwaGljcyBmaW5hbCA6IHB1YmxpYyBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yIHsK
K3B1YmxpYzoKKyAgICBleHBsaWNpdCBTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3Jh
cGhpY3MoUGFnZSopOworICAgIHZpcnR1YWwgflNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0
ZWRHcmFwaGljcygpOworCisgICAgdm9pZCBwYWdlRGVzdHJveWVkKCkgb3ZlcnJpZGU7CisKKyAg
ICB2b2lkIGNvbW1pdFRyZWVTdGF0ZUlmTmVlZGVkKCkgb3ZlcnJpZGU7CisKKyAgICBib29sIGhh
bmRsZVdoZWVsRXZlbnQoRnJhbWVWaWV3JiwgY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jikgb3Zl
cnJpZGU7CisKK3ByaXZhdGU6CisgICAgdm9pZCBzY2hlZHVsZVRyZWVTdGF0ZUNvbW1pdCgpIG92
ZXJyaWRlOworCisgICAgdm9pZCBjb21taXRUcmVlU3RhdGUoKTsKKworICAgIFJ1bkxvb3A6OlRp
bWVyPFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcz4gbV9zY3JvbGxpbmdT
dGF0ZVRyZWVDb21taXR0ZXJUaW1lcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFVTRShDT09SRElOQVRFRF9HUkFQ
SElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5h
dGVkZ3JhcGhpY3MvU2Nyb2xsaW5nVHJlZUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdUcmVl
Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmJmY2E0ZGZkNTEyZjhjMmMwODM5
OTlkNmU3MWI5Y2RmNGEzYTVkNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nVHJlZUNvb3JkaW5hdGVk
R3JhcGhpY3MuY3BwCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
SWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2Ns
YWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZAorICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlQ29vcmRpbmF0ZWRHcmFwaGljcy5oIgor
CisjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNT
KQorCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5oIgorI2luY2x1ZGUgIlNjcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVDb29yZGluYXRlZEdyYXBoaWNzLmgiCisjaW5jbHVk
ZSAiU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitS
ZWY8U2Nyb2xsaW5nVHJlZUNvb3JkaW5hdGVkR3JhcGhpY3M+IFNjcm9sbGluZ1RyZWVDb29yZGlu
YXRlZEdyYXBoaWNzOjpjcmVhdGUoQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvciYgc2Nyb2xsaW5n
Q29vcmRpbmF0b3IpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2Nyb2xsaW5nVHJlZUNv
b3JkaW5hdGVkR3JhcGhpY3Moc2Nyb2xsaW5nQ29vcmRpbmF0b3IpKTsKK30KKworU2Nyb2xsaW5n
VHJlZUNvb3JkaW5hdGVkR3JhcGhpY3M6OlNjcm9sbGluZ1RyZWVDb29yZGluYXRlZEdyYXBoaWNz
KEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3ImIHNjcm9sbGluZ0Nvb3JkaW5hdG9yKQorICAgIDog
VGhyZWFkZWRTY3JvbGxpbmdUcmVlKHNjcm9sbGluZ0Nvb3JkaW5hdG9yKQoreworfQorCitSZWY8
U2Nyb2xsaW5nVHJlZU5vZGU+IFNjcm9sbGluZ1RyZWVDb29yZGluYXRlZEdyYXBoaWNzOjpjcmVh
dGVTY3JvbGxpbmdUcmVlTm9kZShTY3JvbGxpbmdOb2RlVHlwZSBub2RlVHlwZSwgU2Nyb2xsaW5n
Tm9kZUlEIG5vZGVJRCkKK3sKKyAgICBzd2l0Y2ggKG5vZGVUeXBlKSB7CisgICAgY2FzZSBNYWlu
RnJhbWVTY3JvbGxpbmdOb2RlOgorICAgIGNhc2UgU3ViZnJhbWVTY3JvbGxpbmdOb2RlOgorICAg
ICAgICByZXR1cm4gU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUNvb3JkaW5hdGVkR3Jh
cGhpY3M6OmNyZWF0ZSgqdGhpcywgbm9kZVR5cGUsIG5vZGVJRCk7CisgICAgY2FzZSBPdmVyZmxv
d1Njcm9sbGluZ05vZGU6CisgICAgICAgIC8vIFNob3VsZCBub3QgYmUgcmVhY2hlZCAtLSBjYXVn
aHQgYnkgQVNTRVJUX05PVF9SRUFDSEVEKCkgYmVsb3cuCisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgRml4ZWROb2RlOgorICAgICAgICByZXR1cm4gU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6Y3Jl
YXRlKCp0aGlzLCBub2RlSUQpOworICAgIGNhc2UgU3RpY2t5Tm9kZToKKyAgICAgICAgcmV0dXJu
IFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpjcmVhdGUoKnRoaXMsIG5vZGVJRCk7CisgICAgfQor
CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdUcmVlQ29vcmRpbmF0ZWRHcmFwaGljcy5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3Jv
bGxpbmdUcmVlQ29vcmRpbmF0ZWRHcmFwaGljcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ1YmI2NDVlYjNiNmI2
MjY1NjU4MzcwMDUxYjI4MjE3Y2I0OWU3ODAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ1RyZWVDb29y
ZGluYXRlZEdyYXBoaWNzLmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAg
ZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBVU0UoQ09PUkRJTkFURURf
R1JBUEhJQ1MpCisKKyNpbmNsdWRlICJUaHJlYWRlZFNjcm9sbGluZ1RyZWUuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBTY3JvbGxpbmdUcmVlQ29vcmRpbmF0ZWRHcmFwaGljcyBm
aW5hbCA6IHB1YmxpYyBUaHJlYWRlZFNjcm9sbGluZ1RyZWUgeworcHVibGljOgorICAgIHN0YXRp
YyBSZWY8U2Nyb2xsaW5nVHJlZUNvb3JkaW5hdGVkR3JhcGhpY3M+IGNyZWF0ZShBc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yJik7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgU2Nyb2xsaW5nVHJl
ZUNvb3JkaW5hdGVkR3JhcGhpY3MoQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvciYpOworCisgICAg
UmVmPFNjcm9sbGluZ1RyZWVOb2RlPiBjcmVhdGVTY3JvbGxpbmdUcmVlTm9kZShTY3JvbGxpbmdO
b2RlVHlwZSwgU2Nyb2xsaW5nTm9kZUlEKSBvdmVycmlkZTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFVTRShDT09S
RElOQVRFRF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ1Ry
ZWVGaXhlZE5vZGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0MDgxNzAzZWIxZDQ4MjdlMmQ2ZTFiYzY5ZmVh
MmFiYzI0MmMyZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuY3BwCkBAIC0w
LDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorICogICAgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJTY3JvbGxpbmdUcmVlRml4ZWROb2RlLmgiCisKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5H
KSAmJiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
UmVmPFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU+IFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU6OmNyZWF0
ZShTY3JvbGxpbmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQor
eworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNjcm9sbGluZ1RyZWVGaXhlZE5vZGUoc2Nyb2xs
aW5nVHJlZSwgbm9kZUlEKSk7Cit9CisKK1Njcm9sbGluZ1RyZWVGaXhlZE5vZGU6OlNjcm9sbGlu
Z1RyZWVGaXhlZE5vZGUoU2Nyb2xsaW5nVHJlZSYgc2Nyb2xsaW5nVHJlZSwgU2Nyb2xsaW5nTm9k
ZUlEIG5vZGVJRCkKKyAgICA6IFNjcm9sbGluZ1RyZWVOb2RlKHNjcm9sbGluZ1RyZWUsIEZpeGVk
Tm9kZSwgbm9kZUlEKQoreworICAgIHNjcm9sbGluZ1RyZWUuZml4ZWRPclN0aWNreU5vZGVBZGRl
ZCgpOworfQorCitTY3JvbGxpbmdUcmVlRml4ZWROb2RlOjp+U2Nyb2xsaW5nVHJlZUZpeGVkTm9k
ZSgpCit7CisgICAgc2Nyb2xsaW5nVHJlZSgpLmZpeGVkT3JTdGlja3lOb2RlUmVtb3ZlZCgpOwor
fQorCit2b2lkIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRy
ZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikKK3sKK30KKwordm9pZCBTY3JvbGxpbmdUcmVl
Rml4ZWROb2RlOjp1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGlu
Z1RyZWVOb2RlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJikKK3sKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElO
RykgJiYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdUcmVlRml4ZWRO
b2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNz
L1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMGFhODc5MjQyMjIzMGNlY2Uy
ZTYzZmY0ZjE2YmY3NzlmZTg4YTg3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdUcmVlRml4ZWROb2Rl
LmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5M
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisKKyNp
bmNsdWRlICJTY3JvbGxpbmdUcmVlTm9kZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGUgZmluYWwgOiBwdWJsaWMgU2Nyb2xsaW5nVHJlZU5v
ZGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZT4gY3Jl
YXRlKFNjcm9sbGluZ1RyZWUmLCBTY3JvbGxpbmdOb2RlSUQpOworICAgIHZpcnR1YWwgflNjcm9s
bGluZ1RyZWVGaXhlZE5vZGUoKTsKKworcHJpdmF0ZToKKyAgICBTY3JvbGxpbmdUcmVlRml4ZWRO
b2RlKFNjcm9sbGluZ1RyZWUmLCBTY3JvbGxpbmdOb2RlSUQpOworCisgICAgdm9pZCBjb21taXRT
dGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdU
cmVlTm9kZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYpIG92ZXJyaWRlOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1ND
Uk9MTElORykgJiYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVDb29yZGluYXRlZEdyYXBoaWNzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lY2M2ZjMxNzMw
NjE2MDMwZGE4NjVmZmM5YjhlMGI5M2I4NjY2MzYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKQEAgLTAsMCArMSw3NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNjcm9sbGlu
Z1RyZWVGcmFtZVNjcm9sbGluZ05vZGVDb29yZGluYXRlZEdyYXBoaWNzLmgiCisKKyNpZiBFTkFC
TEUoQVNZTkNfU0NST0xMSU5HKSAmJiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworUmVmPFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU+IFNj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVDb29yZGluYXRlZEdyYXBoaWNzOjpjcmVhdGUo
U2Nyb2xsaW5nVHJlZSYgc2Nyb2xsaW5nVHJlZSwgU2Nyb2xsaW5nTm9kZVR5cGUgbm9kZVR5cGUs
IFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUNvb3JkaW5hdGVkR3JhcGhpY3Moc2Nyb2xsaW5n
VHJlZSwgbm9kZVR5cGUsIG5vZGVJRCkpOworfQorCitTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlQ29vcmRpbmF0ZWRHcmFwaGljczo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9k
ZUNvb3JkaW5hdGVkR3JhcGhpY3MoU2Nyb2xsaW5nVHJlZSYgc2Nyb2xsaW5nVHJlZSwgU2Nyb2xs
aW5nTm9kZVR5cGUgbm9kZVR5cGUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCisgICAgOiBTY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlKHNjcm9sbGluZ1RyZWUsIG5vZGVUeXBlLCBub2Rl
SUQpCit7Cit9CisKK1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVDb29yZGluYXRlZEdy
YXBoaWNzOjp+U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUNvb3JkaW5hdGVkR3JhcGhp
Y3MoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUNv
b3JkaW5hdGVkR3JhcGhpY3M6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50JikKK3sKK30KKworRmxvYXRQb2ludCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
Q29vcmRpbmF0ZWRHcmFwaGljczo6c2Nyb2xsUG9zaXRpb24oKSBjb25zdAoreworICAgIHJldHVy
biB7IH07Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUNvb3JkaW5h
dGVkR3JhcGhpY3M6OnNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKQoreworfQor
Cit2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVDb29yZGluYXRlZEdyYXBoaWNz
OjpzZXRTY3JvbGxQb3NpdGlvbldpdGhvdXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKGNvbnN0IEZs
b2F0UG9pbnQmKQoreworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVD
b29yZGluYXRlZEdyYXBoaWNzOjpzZXRTY3JvbGxMYXllclBvc2l0aW9uKGNvbnN0IEZsb2F0UG9p
bnQmLCBjb25zdCBGbG9hdFJlY3QmKQoreworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVDb29yZGluYXRlZEdyYXBoaWNzOjp1cGRhdGVMYXllcnNBZnRlclZpZXdwb3J0
Q2hhbmdlKGNvbnN0IEZsb2F0UmVjdCYsIGRvdWJsZSkKK3sKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlQ29v
cmRpbmF0ZWRHcmFwaGljcy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRp
bmF0ZWRncmFwaGljcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlQ29vcmRpbmF0ZWRH
cmFwaGljcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1MDg2Y2M5MmJkZmRlOGQ0YTUwNjY3MTI3Nzg3NWUzYmUz
MjU5M2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9j
b29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVDb29yZGlu
YXRlZEdyYXBoaWNzLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlz
Y2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1MpCisKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZUNvb3JkaW5hdGVkR3JhcGhpY3MgZmluYWwgOiBwdWJsaWMgU2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlPiBjcmVhdGUoU2Nyb2xsaW5nVHJlZSYsIFNjcm9sbGluZ05vZGVUeXBl
LCBTY3JvbGxpbmdOb2RlSUQpOworICAgIHZpcnR1YWwgflNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVDb29yZGluYXRlZEdyYXBoaWNzKCk7CisKK3ByaXZhdGU6CisgICAgU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUNvb3JkaW5hdGVkR3JhcGhpY3MoU2Nyb2xsaW5nVHJlZSYs
IFNjcm9sbGluZ05vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQpOworCisgICAgdm9pZCBoYW5kbGVX
aGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpIG92ZXJyaWRlOworCisgICAgRmxv
YXRQb2ludCBzY3JvbGxQb3NpdGlvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0U2Ny
b2xsUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0U2Ny
b2xsUG9zaXRpb25XaXRob3V0Q29udGVudEVkZ2VDb25zdHJhaW50cyhjb25zdCBGbG9hdFBvaW50
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRTY3JvbGxMYXllclBvc2l0aW9uKGNvbnN0IEZsb2F0
UG9pbnQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKworICAgIHZvaWQgdXBkYXRlTGF5
ZXJzQWZ0ZXJWaWV3cG9ydENoYW5nZShjb25zdCBGbG9hdFJlY3QmLCBkb3VibGUpIG92ZXJyaWRl
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFTWU5D
X1NDUk9MTElORykgJiYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdU
cmVlU3RpY2t5Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGlu
YXRlZGdyYXBoaWNzL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNWE3
Njg5MTQyMzQwZmI1ZmEyODkwM2U2NzcxYzVmMGM3NTdlYjBkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxp
bmdUcmVlU3RpY2t5Tm9kZS5jcHAKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICog
ICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERF
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLmgiCisK
KyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Mp
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlPiBT
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6Y3JlYXRlKFNjcm9sbGluZ1RyZWUmIHNjcm9sbGluZ1Ry
ZWUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUoc2Nyb2xsaW5nVHJlZSwgbm9kZUlEKSk7Cit9CisKK1Nj
cm9sbGluZ1RyZWVTdGlja3lOb2RlOjpTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZShTY3JvbGxpbmdU
cmVlJiBzY3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQorICAgIDogU2Nyb2xs
aW5nVHJlZU5vZGUoc2Nyb2xsaW5nVHJlZSwgU3RpY2t5Tm9kZSwgbm9kZUlEKQoreworICAgIHNj
cm9sbGluZ1RyZWUuZml4ZWRPclN0aWNreU5vZGVBZGRlZCgpOworfQorCitTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZTo6flNjcm9sbGluZ1RyZWVTdGlja3lOb2RlKCkKK3sKKyAgICBzY3JvbGxpbmdU
cmVlKCkuZml4ZWRPclN0aWNreU5vZGVSZW1vdmVkKCk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJl
ZVN0aWNreU5vZGU6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3Rh
dGVOb2RlJikKK3sKK30KKwordm9pZCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6dXBkYXRlTGF5
ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFVTRShDT09SRElOQVRF
RF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nv
b3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nVHJlZVN0aWNr
eU5vZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mMzEzM2E3MDhjN2E2YzNhNTQ1ZWZmODc5YTdhMGRmMTVjN2I1
M2U4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29v
cmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oCkBAIC0wLDAgKzEsNTAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorICogICAgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEFTWU5DX1NDUk9M
TElORykgJiYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorCisjaW5jbHVkZSAiU2Nyb2xsaW5n
VHJlZU5vZGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZSBmaW5hbCA6IHB1YmxpYyBTY3JvbGxpbmdUcmVlTm9kZSB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFJlZjxTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZT4gY3JlYXRlKFNjcm9sbGluZ1Ry
ZWUmLCBTY3JvbGxpbmdOb2RlSUQpOworICAgIHZpcnR1YWwgflNjcm9sbGluZ1RyZWVTdGlja3lO
b2RlKCk7CisKK3ByaXZhdGU6CisgICAgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUoU2Nyb2xsaW5n
VHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7CisKKyAgICB2b2lkIGNvbW1pdFN0YXRlQmVmb3JlQ2hp
bGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRh
dGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVOb2RlJiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJikgb3ZlcnJpZGU7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtV2hlZWxFdmVudC5oCmluZGV4IGMxYjZhMmE4ZjFhMWY3ZWQxYzZlZmIzMGVlZjIwOGVhMDk5
OWNjNTQuLmUxZDJkM2IzZmI0NTRjZDJmNDQ4OTdlYTRlY2QzMjJjOWY2NzJjNjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCkBAIC00OCw3ICs0OCw3
IEBAIGVudW0gUGxhdGZvcm1XaGVlbEV2ZW50R3JhbnVsYXJpdHkgOiB1aW50OF90IHsKICAgICBT
Y3JvbGxCeVBpeGVsV2hlZWxFdmVudCwKIH07CiAKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgUExB
VEZPUk0oR1RLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRG
T1JNKFdQRSkKIAogZW51bSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSA6IHVpbnQ4X3QgewogICAg
IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlTm9uZSA9IDAsCkBAIC0xMzUsNiArMTM1LDkgQEAgcHVi
bGljOgogICAgIHVuc2lnbmVkIHNjcm9sbENvdW50KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxD
b3VudDsgfQogICAgIGZsb2F0IHVuYWNjZWxlcmF0ZWRTY3JvbGxpbmdEZWx0YVgoKSBjb25zdCB7
IHJldHVybiBtX3VuYWNjZWxlcmF0ZWRTY3JvbGxpbmdEZWx0YVg7IH0KICAgICBmbG9hdCB1bmFj
Y2VsZXJhdGVkU2Nyb2xsaW5nRGVsdGFZKCkgY29uc3QgeyByZXR1cm4gbV91bmFjY2VsZXJhdGVk
U2Nyb2xsaW5nRGVsdGFZOyB9CisjZW5kaWYKKworI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcp
CiAgICAgYm9vbCB1c2VMYXRjaGVkRXZlbnRFbGVtZW50KCkgY29uc3Q7CiAgICAgYm9vbCBzaG91
bGRDb25zaWRlckxhdGNoaW5nKCkgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRSZXNldExhdGNoaW5n
KCkgY29uc3Q7CkBAIC0xNDMsNyArMTQ2LDcgQEAgcHVibGljOgogICAgIGJvb2wgdXNlTGF0Y2hl
ZEV2ZW50RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAotI2lmIFBM
QVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShHVEspCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBM
QVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNl
IHBoYXNlKCkgY29uc3QgeyByZXR1cm4gbV9waGFzZTsgfQogICAgIFBsYXRmb3JtV2hlZWxFdmVu
dFBoYXNlIG1vbWVudHVtUGhhc2UoKSBjb25zdCB7IHJldHVybiBtX21vbWVudHVtUGhhc2U7IH0K
ICAgICBib29sIGlzRW5kT2ZOb25Nb21lbnR1bVNjcm9sbCgpIGNvbnN0OwpAQCAtMTY4LDcgKzE3
MSw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBTY3JvbGxpbmcgdmVsb2NpdHkgaW4gcGl4ZWxzIHBl
ciBzZWNvbmQuCiAgICAgRmxvYXRTaXplIG1fc2Nyb2xsaW5nVmVsb2NpdHk7CiAKLSNpZiBQTEFU
Rk9STShDT0NPQSkgfHwgUExBVEZPUk0oR1RLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFU
Rk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKICAgICBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSBt
X3BoYXNlIHsgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VOb25lIH07CiAgICAgUGxhdGZvcm1XaGVl
bEV2ZW50UGhhc2UgbV9tb21lbnR1bVBoYXNlIHsgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VOb25l
IH07CiAjZW5kaWYKQEAgLTE4MCw3ICsxODMsNyBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYKIH07CiAK
LSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQogCiBpbmxp
bmUgYm9vbCBQbGF0Zm9ybVdoZWVsRXZlbnQ6OnVzZUxhdGNoZWRFdmVudEVsZW1lbnQoKSBjb25z
dAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGV4dHVyZU1hcHBlci5j
bWFrZSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RleHR1cmVNYXBwZXIuY21ha2UKaW5kZXgg
ZWE5MjZjZWUyMWIzODZhNDY5YmUzNDdhODI5YTk4NWUxNTQ0ZWJmMi4uNmVhYjZhMGExODk1YWRh
Zjc4NzUxZDE5MGMxNjg4ZDQ3YmZjNzdmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVGV4dHVyZU1hcHBlci5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9U
ZXh0dXJlTWFwcGVyLmNtYWtlCkBAIC0zMCw5ICszMCw2IEBAIGlmIChVU0VfQ09PUkRJTkFURURf
R1JBUEhJQ1MpCiAgICAgICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQiCiAgICAgKQogICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwot
ICAgICAgICBwYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKLSAgICAgICAgcGFnZS9zY3JvbGxpbmcvY29v
cmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdTdGF0ZU5vZGVDb29yZGluYXRlZEdyYXBoaWNzLmNw
cAotCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckJ1ZmZlci5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCmluZGV4IDE0ZGU1YzVjZDJkNWQwN2RmY2Y5MDViMmYyOTIyZDBiYmRl
NDE4NTguLjgwZWQzNDk3ZWExMGQ3M2FiOGFlNzcxNTU3ZDMyN2IyZTNlMzBhYWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTU1LDcgKzE1NSw3IEBACiAj
aW5jbHVkZSAiQVBJQXBwbGljYXRpb25NYW5pZmVzdC5oIgogI2VuZGlmCiAKLSNpZiBFTkFCTEUo
QVNZTkNfU0NST0xMSU5HKQorI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFBMQVRGT1JN
KENPQ09BKQogI2luY2x1ZGUgIlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaCIKICNl
bmRpZgogCkBAIC04MDMsNyArODAzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmluaXRpYWxpemVX
ZWJQYWdlKCkKICAgICBtX2RyYXdpbmdBcmVhID0gbV9wYWdlQ2xpZW50LmNyZWF0ZURyYXdpbmdB
cmVhUHJveHkoKTsKICAgICBBU1NFUlQobV9kcmF3aW5nQXJlYSk7CiAKLSNpZiBFTkFCTEUoQVNZ
TkNfU0NST0xMSU5HKQorI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFBMQVRGT1JNKENP
Q09BKQogICAgIGlmIChtX2RyYXdpbmdBcmVhLT50eXBlKCkgPT0gRHJhd2luZ0FyZWFUeXBlUmVt
b3RlTGF5ZXJUcmVlKSB7CiAgICAgICAgIG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSA9IHN0
ZDo6bWFrZV91bmlxdWU8UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOwog
I2lmIFBMQVRGT1JNKElPUykKQEAgLTIwMTUsNyArMjAxNSw3IEBAIHN0YXRpYyBXZWJXaGVlbEV2
ZW50IGNvYWxlc2NlZFdoZWVsRXZlbnQoRGVxdWU8TmF0aXZlV2ViV2hlZWxFdmVudD4mIHF1ZXVl
LCBWZWN0CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IE5hdGl2
ZVdlYldoZWVsRXZlbnQmIGV2ZW50KQogewotI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCisj
aWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKG1f
c2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSAmJiBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkt
PmhhbmRsZVdoZWVsRXZlbnQocGxhdGZvcm0oZXZlbnQpKSkKICAgICAgICAgcmV0dXJuOwogI2Vu
ZGlmCkBAIC0yMTg5LDcgKzIxODksNyBAQCBzdGF0aWMgVHJhY2tpbmdUeXBlIG1lcmdlVHJhY2tp
bmdUeXBlcyhUcmFja2luZ1R5cGUgYSwgVHJhY2tpbmdUeXBlIGIpCiAKIHZvaWQgV2ViUGFnZVBy
b3h5Ojp1cGRhdGVUb3VjaEV2ZW50VHJhY2tpbmcoY29uc3QgV2ViVG91Y2hFdmVudCYgdG91Y2hT
dGFydEV2ZW50KQogewotI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCisjaWYgRU5BQkxFKEFT
WU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0oQ09DT0EpCiAgICAgY29uc3QgRXZlbnROYW1lcyYg
bmFtZXMgPSBldmVudE5hbWVzKCk7CiAgICAgZm9yIChhdXRvJiB0b3VjaFBvaW50IDogdG91Y2hT
dGFydEV2ZW50LnRvdWNoUG9pbnRzKCkpIHsKICAgICAgICAgSW50UG9pbnQgbG9jYXRpb24gPSB0
b3VjaFBvaW50LmxvY2F0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CmluZGV4IGYxMjMyNWE2NmFmZGFiMWNjNmUzM2RlNjVmNjZhMTRlMWMyZDZkNmYuLmNjYWVkZWQz
MTNkMGJlNzJiZGY2MDk0NTFhZjIzOGRiMTVkNTJjMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCkBAIC0zNDcsNyArMzQ3LDcgQEAgcHVibGljOgogICAgIE5TQXJyYXkg
KmRhdGFEZXRlY3Rpb25SZXN1bHRzKCkgeyByZXR1cm4gbV9kYXRhRGV0ZWN0aW9uUmVzdWx0cy5n
ZXQoKTsgfQogI2VuZGlmCiAgICAgICAgIAotI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCisj
aWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSogc2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5nZXQoKTsgfQogI2VuZGlm
CiAKQEAgLTE3NzgsNyArMTc3OCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzTG9hZGluZ0Fs
dGVybmF0ZUhUTUxTdHJpbmdGb3JGYWlsaW5nUHJvdmlzaW9uYWxMb2FkIHsgZmFsc2UgfTsKIAog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5PiBtX2RyYXdpbmdBcmVhOwotI2lm
IEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCisjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYg
UExBVEZPUk0oQ09DT0EpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yUHJveHk+IG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTsKICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwCmluZGV4IGI2MjNmNzZiM2MyZmQ3MTE3NWZhYzk0OWE3ODc3YWY4YzM4
MmVhMTMuLmVmMzY5NDNhYTc2Mjk3ZTBiYjlhM2Q5MWI3NDMxNjk0MmJlZGNhYTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwCkBAIC05MjgsOSArOTI4LDEzIEBAIGJvb2wgV2ViQ2hyb21lQ2xpZW50
OjpsYXllclRyZWVTdGF0ZUlzRnJvemVuKCkgY29uc3QKIFJlZlB0cjxTY3JvbGxpbmdDb29yZGlu
YXRvcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVTY3JvbGxpbmdDb29yZGluYXRvcihQYWdlJiBw
YWdlKSBjb25zdAogewogICAgIEFTU0VSVF9VTlVTRUQocGFnZSwgbV9wYWdlLmNvcmVQYWdlKCkg
PT0gJnBhZ2UpOworI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChtX3BhZ2UuZHJhd2luZ0Fy
ZWEoKS0+dHlwZSgpICE9IERyYXdpbmdBcmVhVHlwZVJlbW90ZUxheWVyVHJlZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpj
cmVhdGUoJm1fcGFnZSk7CisjZWxzZQorICAgIHJldHVybiBudWxscHRyOworI2VuZGlmCiB9CiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UgYi9Tb3Vy
Y2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQppbmRleCBhZjlkNjlhNGM0ODAzYmUzOTNhZmIyODRh
ZjJjOTY5NjQzZWQ2MzhhLi4zZjkxYjA1NWE0N2VhNmM3ZGEyZjkxZTMwYjM3OWQzNmI4ZTMxODg5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQorKysgYi9Tb3VyY2Uv
Y21ha2UvT3B0aW9uc0dUSy5jbWFrZQpAQCAtMTIzLDYgKzEyMyw3IEBAIGVuZGlmICgpCiAjIHdp
dGhvdXQgYXBwcm92YWwgZnJvbSBhIEdUSysgcmV2aWV3ZXIuIFRoZXJlIG11c3QgYmUgc3Ryb25n
IHJlYXNvbiB0byBzdXBwb3J0CiAjIGNoYW5naW5nIHRoZSB2YWx1ZSBvZiB0aGUgb3B0aW9uLgog
V0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NB
TlZBUyBQVUJMSUMgT0ZGKQorV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxF
X0FTWU5DX1NDUk9MTElORyBQUklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRf
VkFMVUUoRU5BQkxFX0RSQUdfU1VQUE9SVCBQVUJMSUMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFV
TFRfUE9SVF9WQUxVRShFTkFCTEVfR0VPTE9DQVRJT04gUFVCTElDIE9OKQogV0VCS0lUX09QVElP
Tl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0lDT05EQVRBQkFTRSBQVUJMSUMgT04pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRp
b25zV1BFLmNtYWtlCmluZGV4IGM1ZGM0ZGYwNzg2MWIzYTJlNzcyYWE2MDRhYjBlYmU4ZmNhYTNi
MmMuLjRkYzE3YTlhMzJkYmJmZDg4OGYwZjFhNDEwMjIwZWYyODE1ZGU3YTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25z
V1BFLmNtYWtlCkBAIC0zMSw2ICszMSw3IEBAIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZB
TFVFKFVTRV9TWVNURU1fTUFMTE9DIFBVQkxJQyBPRkYpCiAjIHdlIG5lZWQgYSB2YWx1ZSBkaWZm
ZXJlbnQgZnJvbSB0aGUgZGVmYXVsdCBkZWZpbmVkIGluIFdlYktpdEZlYXR1cmVzLmNtYWtlLgog
IyBDaGFuZ2luZyB0aGVzZSBvcHRpb25zIGlzIGNvbXBsZXRlbHkgdW5zdXBwb3J0ZWQuCiBXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfQUNDRVNTSUJJTElUWSBQUklWQVRF
IE9OKQorV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0FTWU5DX1NDUk9M
TElORyBQUklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxF
X0ZVTExTQ1JFRU5fQVBJIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRf
VkFMVUUoRU5BQkxFX0dFT0xPQ0FUSU9OIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZB
VUxUX1BPUlRfVkFMVUUoRU5BQkxFX01IVE1MIFBSSVZBVEUgT04pCmRpZmYgLS1naXQgYS9DaGFu
Z2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggMGUwMmNjN2M5YmZjYzE2YjZmMDBlZmE1NGVjOWE2MmVi
MTQ4NzMzZS4uNmMwY2M4Mzc4MzU0YWYyZjk2YjhlZWMyOTBlZTFjMzliOWYyNDMwOSAxMDA2NDQK
LS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE4LTA0
LTI1ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RL
XVtXUEVdIEVuYWJsZSBBU1lOQ19TQ1JPTExJTkcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDk2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2U6IEVu
YWJsZSBBU1lOQ19TQ1JPTExJTkcgYXMgYSBwcml2YXRlIG9wdGlvbi4KKyAgICAgICAgKiBTb3Vy
Y2UvY21ha2UvT3B0aW9uc1dQRS5jbWFrZTogRGl0dG8uCisKIDIwMTgtMDQtMjQgIExlbyBCYWx0
ZXIgIDxsZW9uYXJkby5iYWx0ZXJAZ21haWwuY29tPgogCiAgICAgICAgIExhbmQgdGVzdDI2MiB0
ZXN0IHJlc3VsdHMgYXNzb2NpYXRlZCB3aXRoIFRlc3QyNjIgcnVubmVyCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338863</attachid>
            <date>2018-04-26 00:36:11 -0700</date>
            <delta_ts>2018-04-26 00:36:11 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-184961-20180426093610.patch</filename>
            <type>text/plain</type>
            <size>53874</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxMDQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjYwYWFlMjdlOTJmMDMw
YzM0YjFmMGZkMzEyYWI3MmFjMTUxNzJiMS4uYjczMjRiYzUyMWQ3MDEzYjAzOWE1NzQ4YTk0YTFi
NGM5YzM3YjEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDE4LTA0LTI2ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIElu
aXRpYWwgQVNZTkNfU0NST0xMSU5HIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDk2MQorCisgICAgICAgIFJldmlld2VkIGJ5IENhcmxv
cyBHYXJjaWEgQ2FtcG9zLgorCisgICAgICAgIEFkZCBDb29yZGluYXRlZEdyYXBoaWNzLXNwZWNp
ZmljIGNvZGUgdGhhdCB3aWxsIGJlIHJlcXVpcmVkIGZvciBhc3luYworICAgICAgICBzY3JvbGxp
bmcgc3VwcG9ydC4gVGhlIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcyBh
bmQKKyAgICAgICAgU2Nyb2xsaW5nVHJlZUNvb3JkaW5hdGVkR3JhcGhpY3MgY2xhc3NlcyBhcmUg
bW9zdGx5IGNvbXBsZXRlIGFscmVhZHksCisgICAgICAgIGJ1dCB0aGUgbmV3IFNjcm9sbGluZ1Ry
ZWVOb2RlLWluaGVyaXRpbmcgY2xhc3NlcyB3aWxsIG5lZWQgZnVydGhlcgorICAgICAgICB3b3Jr
IHRoYXQgd2lsbCBoYXZlIHRvIGJlIGRvbmUgaW4gcGFyYWxsZWwgd2l0aCBvdGhlciBpbXByb3Zl
bWVudHMKKyAgICAgICAgcGxhbm5lZCBmb3IgdGhlIENvb3JkaW5hdGVkR3JhcGhpY3Mgc3Vic3lz
dGVtLgorCisgICAgICAgIFdoaWxlIHRoZSBidWlsZC10aW1lIGZsYWcgaXMgZW5hYmxlZCwgdGhl
IGZlYXR1cmUgaXMgc3RpbGwgbm90IGVuYWJsZWQKKyAgICAgICAgYXQgcnVudGltZSBkdWUgdG8g
YmVpbmcgbWFya2VkIGFzIHVuc3VwcG9ydGVkIGJ5IHRoZSBEcmF3aW5nQXJlYQorICAgICAgICBp
bXBsZW1lbnRhdGlvbiBpbiB0aGUgV2ViS2l0IGxheWVyLiBJdCB3b3VsZCBhbHNvIG5vdCB3b3Jr
IHlldCBpZiBpdAorICAgICAgICB3ZXJlIGVuYWJsZWQgZHVlIHRvIHRoZSBiZWZvcmUtbWVudGlv
bmVkIHBlbmRpbmcgY2hhbmdlcy4KKworICAgICAgICBWYXJpb3VzIGJ1aWxkIGZpeGVzIHRoYXQg
YWRkcmVzcyBub24tQ29jb2EgdXNhZ2Ugb2YgQVNZTkNfU0NST0xMSU5HCisgICAgICAgIGNvZGUg
YXJlIGluY2x1ZGVkLgorCisgICAgICAgICogU291cmNlcy50eHQ6IEFkZCBBc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmNwcCB0byBidWlsZC4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0Ogor
ICAgICAgICAqIFNvdXJjZXNHVEsudHh0OiBBZGQgbmV3IGZpbGVzIHRvIGJ1aWxkLgorICAgICAg
ICAqIFNvdXJjZXNXUEUudHh0OiBEaXR0by4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9Bc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgR3VhcmQgc2V0U3RhdGVTY3JvbGxp
bmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KCkgd2l0aCBDU1NfU0NST0xMX1NOQVAuCisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xs
aW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHA6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcv
VGhyZWFkZWRTY3JvbGxpbmdUcmVlLmg6CisgICAgICAgIGN1cnJlbnRTbmFwUG9pbnRJbmRpY2Vz
RGlkQ2hhbmdlKCkgbWV0aG9kIGlzIG9ubHkgaW52b2tlZCBpbgorICAgICAgICBDb2NvYS1zcGVj
aWZpYyBjb2RlLCBhbmQgaXRzIGltcGxlbWVudGF0aW9uIGNhbGxzIENvY29hLXNwZWNpZmljIG1l
dGhvZAorICAgICAgICBvbiB0aGUgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvciBjbGFzcy4KKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdDb29yZGluYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3Jk
aW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljczo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRl
ZEdyYXBoaWNzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRp
bmF0ZWRHcmFwaGljczo6flNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcyk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhp
Y3M6OnBhZ2VEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0
b3JDb29yZGluYXRlZEdyYXBoaWNzOjpjb21taXRUcmVlU3RhdGVJZk5lZWRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3M6OmhhbmRs
ZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29y
ZGluYXRlZEdyYXBoaWNzOjpzY2hlZHVsZVRyZWVTdGF0ZUNvbW1pdCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3M6OmNvbW1pdFRyZWVT
dGF0ZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3Jv
bGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuaDogQWRkZWQuCisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdUcmVlQ29vcmRpbmF0
ZWRHcmFwaGljcy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUNv
b3JkaW5hdGVkR3JhcGhpY3M6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlQ29vcmRpbmF0ZWRHcmFwaGljczo6U2Nyb2xsaW5nVHJlZUNvb3JkaW5hdGVkR3JhcGhpY3Mp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUNvb3JkaW5hdGVkR3JhcGhpY3M6OmNy
ZWF0ZVNjcm9sbGluZ1RyZWVOb2RlKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9jb29yZGlu
YXRlZGdyYXBoaWNzL1Njcm9sbGluZ1RyZWVDb29yZGluYXRlZEdyYXBoaWNzLmg6IEFkZGVkLgor
ICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nVHJl
ZUZpeGVkTm9kZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZp
eGVkTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGaXhlZE5v
ZGU6OlNjcm9sbGluZ1RyZWVGaXhlZE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
VHJlZUZpeGVkTm9kZTo6flNjcm9sbGluZ1RyZWVGaXhlZE5vZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRml4ZWROb2RlOjp1cGRhdGVMYXllcnNBZnRl
ckFuY2VzdG9yQ2hhbmdlKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdy
YXBoaWNzL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuaDogQWRkZWQuCisgICAgICAgICogcGFnZS9z
Y3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUNvb3JkaW5hdGVkR3JhcGhpY3M6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlQ29vcmRp
bmF0ZWRHcmFwaGljczo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUNvb3JkaW5hdGVk
R3JhcGhpY3MpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZUNvb3JkaW5hdGVkR3JhcGhpY3M6OmhhbmRsZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUNvb3JkaW5hdGVkR3JhcGhpY3M6
OnNjcm9sbFBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVDb29yZGluYXRlZEdyYXBoaWNzOjpzZXRTY3JvbGxQb3NpdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlQ29vcmRp
bmF0ZWRHcmFwaGljczo6c2V0U2Nyb2xsUG9zaXRpb25XaXRob3V0Q29udGVudEVkZ2VDb25zdHJh
aW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
Q29vcmRpbmF0ZWRHcmFwaGljczo6c2V0U2Nyb2xsTGF5ZXJQb3NpdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlQ29vcmRpbmF0ZWRHcmFwaGlj
czo6dXBkYXRlTGF5ZXJzQWZ0ZXJWaWV3cG9ydENoYW5nZSk6CisgICAgICAgICogcGFnZS9zY3Jv
bGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
Q29vcmRpbmF0ZWRHcmFwaGljcy5oOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9j
b29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpTY3JvbGxpbmdUcmVlU3RpY2t5
Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6flNjcm9s
bGluZ1RyZWVTdGlja3lOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTdGlj
a3lOb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1RyZWVTdGlja3lOb2RlOjp1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKToK
KyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ1Ry
ZWVTdGlja3lOb2RlLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtV2hlZWxF
dmVudC5oOiBFbmFibGUgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgY29kZQorICAgICAgICBmb3Ig
V1BFLiBHdWFyZCBsYXRjaGluZy1zcGVjaWZpYyBtZXRob2RzIHVuZGVyIEFTWU5DX1NDUk9MTElO
Ry4KKyAgICAgICAgKiBwbGF0Zm9ybS9UZXh0dXJlTWFwcGVyLmNtYWtlOiBUd28gYnVpbGQgdGFy
Z2V0cyBoYXZlIGJlZW4gbW92ZWQgdG8KKyAgICAgICAgU291cmNlc0dUSy50eHQgYW5kIFNvdXJj
ZXNXUEUudHh0LgorCiAyMDE4LTA0LTI1ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9A
aWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXSBCdWlsZCBhbmQgbGluayBhZ2FpbnN0IGxhdGVz
dCBXUEVCYWNrZW5kIGFuZCBXUEVCYWNrZW5kLWZkbwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3ZDIyZmRiNTIxNmVk
MTAyYTM3YjZmMDIyM2U0NDA3NGFmNmQ4YjllLi4xNjY5OTkzMGQ3NmQ4OWZkNzI0NTNlYWZhNjQx
MzEyZDAzMDg5YmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE4LTA0LTI2ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIElu
aXRpYWwgQVNZTkNfU0NST0xMSU5HIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDk2MQorCisgICAgICAgIFJldmlld2VkIGJ5IENhcmxv
cyBHYXJjaWEgQ2FtcG9zLgorCisgICAgICAgIEd1YXJkIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5h
dG9yIGFuZCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5CisgICAgICAgIHVzYWdlIGlu
IFdlYkNocm9tZUNsaWVudCBhbmQgV2ViUGFnZVByb3h5LCByZXNwZWN0aXZlbHksIHdpdGgKKyAg
ICAgICAgUExBVEZPUk0oQ09DT0EpIGluIGFkZGl0aW9uIHRvIHRoZSBBU1lOQ19TQ1JPTExJTkcg
Z3VhcmRzLgorCisgICAgICAgIERlc3BpdGUgZW5hYmxpbmcgdGhlIGNvZGUgYXQgYnVpbGQtdGlt
ZSwgdGhlIGZlYXR1cmUgKGFzIGludGVuZGVkKSBpcworICAgICAgICBub3QgeWV0IHVzZWQgYmVj
YXVzZSBvZiB0aGUgRHJhd2luZ0FyZWEgcmVqZWN0aW9uIGluIHRoZSBXZWJQYWdlCisgICAgICAg
IGNvbnN0cnVjdG9yLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZVdlYlBhZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmhhbmRsZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0ZVRvdWNoRXZlbnRUcmFja2luZyk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xp
ZW50OjpjcmVhdGVTY3JvbGxpbmdDb29yZGluYXRvciBjb25zdCk6CisKIDIwMTgtMDQtMjUgIE1p
Y2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVd
IEJ1aWxkIGFuZCBsaW5rIGFnYWluc3QgbGF0ZXN0IFdQRUJhY2tlbmQgYW5kIFdQRUJhY2tlbmQt
ZmRvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CmluZGV4IDAzODg1M2U0M2Y2YmJkMTY3ZjQ5YWFkM2ZmODhkYzdjZmFj
NjZhMDMuLjRiYWMyYzA4NWVkZmZmODA0NzY0ODhiOTI5N2JhNzA5Njg1YmM5YWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CkBAIC0xNDM2LDYgKzE0MzYsNyBAQCBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3lTb3VyY2UuY3BwCiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNw
cAogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZS5jcHAK
IAorcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKIHBhZ2Uvc2Ny
b2xsaW5nL0F4aXNTY3JvbGxTbmFwT2Zmc2V0cy5jcHAKIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbExh
dGNoaW5nU3RhdGUuY3BwCiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb25zdHJhaW50cy5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGEwMzYzMzAyOGFmOGRlNDM1ZWJlOWUyYmE1NGEz
OTI3Y2M3MTM4YjIuLjI2ZmIyZjBjYTQ1MmNlYTI1MDgzNDY2OTA0N2VjNDY4NjE3YTZlYjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMTQwLDcgKzE0MCw2IEBAIHBhZ2UvbWFjL1NlcnZp
Y2VzT3ZlcmxheUNvbnRyb2xsZXIubW0KIHBhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW0K
IHBhZ2UvbWFjL1doZWVsRXZlbnREZWx0YUZpbHRlck1hYy5tbQogCi1wYWdlL3Njcm9sbGluZy9B
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9t
ZW50dW1DYWxjdWxhdG9yLmNwcAogCiBwYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdTdGF0
ZU5vZGUubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQKaW5kZXggZmZjYTlhMjlhMzg1YWRiNTk0N2I4YzMy
NGU3OWYyYzUwYzY3YjU0MC4uOTJhY2QwYmNhZmQ2ZTBhYmQ2NWVmNGY2NWViOTQ1NjQxOTljZjg1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlc0dUSy50eHQKQEAgLTQ2LDYgKzQ2LDEzIEBAIGxvYWRlci9zb3VwL1Jl
c291cmNlTG9hZGVyU291cC5jcHAKIHBhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51
eC5jcHAKIHBhZ2UvbGludXgvUmVzb3VyY2VVc2FnZVRocmVhZExpbnV4LmNwcAogCitwYWdlL3Nj
cm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0
ZWRHcmFwaGljcy5jcHAKK3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xs
aW5nVHJlZUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCitwYWdlL3Njcm9sbGluZy9jb29yZGluYXRl
ZGdyYXBoaWNzL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuY3BwCitwYWdlL3Njcm9sbGluZy9jb29y
ZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVDb29yZGluYXRl
ZEdyYXBoaWNzLmNwcAorcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxp
bmdUcmVlU3RpY2t5Tm9kZS5jcHAKK3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3Mv
U2Nyb2xsaW5nU3RhdGVOb2RlQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKKwogcGFnZS9zY3JvbGxp
bmcvZ2VuZXJpYy9TY3JvbGxpbmdUaHJlYWRHZW5lcmljLmNwcAogCiBwbGF0Zm9ybS9TY3JvbGxB
bmltYXRpb25LaW5ldGljLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc1dQ
RS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzV1BFLnR4dAppbmRleCBlODYxZGFlNWQzNjg2
NGFhOWM2OWExNDFhMmIyNGMxZWZkNmZjM2IwLi5mYzAwMTliNTNiYTU4NWVmMDkyMzcxOGQ3ZDc0
YjcwOTkxYjZhNTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzV1BFLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzV1BFLnR4dApAQCAtMzIsNiArMzIsMTAgQEAgcGFn
ZS9saW51eC9SZXNvdXJjZVVzYWdlT3ZlcmxheUxpbnV4LmNwcAogcGFnZS9saW51eC9SZXNvdXJj
ZVVzYWdlVGhyZWFkTGludXguY3BwCiAKIHBhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhp
Y3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmNwcAorcGFnZS9zY3Jv
bGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdUcmVlQ29vcmRpbmF0ZWRHcmFwaGlj
cy5jcHAKK3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nVHJlZUZp
eGVkTm9kZS5jcHAKK3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCitwYWdlL3Njcm9s
bGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcAogcGFn
ZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdTdGF0ZU5vZGVDb29yZGlu
YXRlZEdyYXBoaWNzLmNwcAogCiBwYWdlL3Njcm9sbGluZy9nZW5lcmljL1Njcm9sbGluZ1RocmVh
ZEdlbmVyaWMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9B
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IGUyZWNkNWEyZmY5YTdiYjE4
ZWU4NjU2YzBiYjFlNGEyZThhYjhiYWYuLjBiZjMxOTdlMTdmMDYwYzA5NWI2ZmVhOWU3MDM2M2Vm
ZGNjZWQzMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5j
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC02NCw2ICs2NCw3IEBAIHZvaWQg
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2Nyb2xsaW5nU3RhdGVUcmVlUHJvcGVydGllc0No
YW5nZWQoKQogICAgIHNjaGVkdWxlVHJlZVN0YXRlQ29tbWl0KCk7CiB9CiAKKyNpZiBFTkFCTEUo
Q1NTX1NDUk9MTF9TTkFQKQogc3RhdGljIGlubGluZSB2b2lkIHNldFN0YXRlU2Nyb2xsaW5nTm9k
ZVNuYXBPZmZzZXRzQXNGbG9hdChTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUmIG5vZGUsIFNj
cm9sbEV2ZW50QXhpcyBheGlzLCBjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4qIHNuYXBPZmZzZXRz
LCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+KiBzbmFwT2Zmc2V0
UmFuZ2VzLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKIHsKICAgICAvLyBGSVhNRTogSW5jb3Jw
b3JhdGUgY3VycmVudCBwYWdlIHNjYWxlIGZhY3RvciBpbiBzbmFwcGluZyB0byBkZXZpY2UgcGl4
ZWwuIFBlcmhhcHMgd2Ugc2hvdWxkIGp1c3QgY29udmVydCB0byBmbG9hdCBoZXJlIGFuZCBsZXQg
VUkgcHJvY2VzcyBkbyB0aGUgcGl4ZWwgc25hcHBpbmc/CkBAIC04OCw2ICs4OSw3IEBAIHN0YXRp
YyBpbmxpbmUgdm9pZCBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQoU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpCiAgICAgICAgIG5vZGUuc2V0VmVydGljYWxTbmFwT2Zmc2V0UmFu
Z2VzKHNuYXBPZmZzZXRSYW5nZXNBc0Zsb2F0KTsKICAgICB9CiB9CisjZW5kaWYKIAogdm9pZCBB
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRFdmVudFRyYWNraW5nUmVnaW9uc0RpcnR5KCkK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaAppbmRl
eCAxOTQwMTRhZTVhM2U5N2U5M2JjZTg0MGM5Mjg1NTU2ODZhMDU0YjQ0Li4xZDlkZWFhZGJlZmI2
MWEzM2IyODNiZTAzYjYwN2UxZjk4NWE2OGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oCkBAIC05MSw4ICs5MSw2IEBAIHB1YmxpYzoKICAgICAv
LyBhbmQgY2FsbCBzY3JvbGxpbmdUcmVlTm9kZURpZFNjcm9sbCgpLgogICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgdm9pZCBzY3JvbGxQb3NpdGlvbkNoYW5nZWRWaWFEZWxlZ2F0ZWRTY3JvbGxp
bmcoU2Nyb2xsaW5nTm9kZUlELCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBzY3JvbGxQb3Np
dGlvbiwgYm9vbCBpblVzZXJJbnRlcmFjdGlvbik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIHZvaWQgY3VycmVudFNuYXBQb2ludEluZGljZXNEaWRDaGFuZ2UoU2Nyb2xsaW5nTm9kZUlE
LCB1bnNpZ25lZCBob3Jpem9udGFsLCB1bnNpZ25lZCB2ZXJ0aWNhbCkgPSAwOwotCiAgICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHJlcG9ydFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29u
c0NoYW5nZWQoTW9ub3RvbmljVGltZSwgU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKSB7IH0K
ICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgcmVwb3J0RXhwb3NlZFVuZmlsbGVkQXJl
YShNb25vdG9uaWNUaW1lLCB1bnNpZ25lZCAvKiB1bmZpbGxlZEFyZWEgKi8pIHsgfQogCkBAIC0x
MTQsNiArMTEyLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlVGVzdERlZmVy
cmFsRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlm
aWVyLCBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OkRlZmVyVGVzdFRyaWdnZXJSZWFzb24pIHsgfQog
I2VuZGlmCiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IHZvaWQgY3VycmVudFNuYXBQb2ludEluZGljZXNEaWRDaGFuZ2UoU2Nyb2xsaW5nTm9kZUlELCB1
bnNpZ25lZCBob3Jpem9udGFsLCB1bnNpZ25lZCB2ZXJ0aWNhbCkgPSAwOworI2VuZGlmCisKICAg
ICAvLyBDYW4gYmUgY2FsbGVkIGZyb20gYW55IHRocmVhZC4gV2lsbCB1cGRhdGUgd2hhdCBlZGdl
cyBhbGxvdyBydWJiZXItYmFuZGluZy4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENhblJ1
YmJlckJhbmRTdGF0ZShib29sIGNhblJ1YmJlckJhbmRBdExlZnQsIGJvb2wgY2FuUnViYmVyQmFu
ZEF0UmlnaHQsIGJvb2wgY2FuUnViYmVyQmFuZEF0VG9wLCBib29sIGNhblJ1YmJlckJhbmRBdEJv
dHRvbSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVh
ZGVkU2Nyb2xsaW5nVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJl
YWRlZFNjcm9sbGluZ1RyZWUuY3BwCmluZGV4IGY4NWU2NGRlNzFjYmQzZDViMjlmNDBhN2U0NTk2
N2Q3NGIyN2ZhNGYuLjVjN2JhODAzYjZmOThjMWJhN2MxZjVmNGExYjVkNjVlNmMwZjU4NjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5n
VHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3Jv
bGxpbmdUcmVlLmNwcApAQCAtMzEsMTAgKzMxLDggQEAKICNpbmNsdWRlICJBc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCiAjaW5jbHVk
ZSAiU2Nyb2xsaW5nVGhyZWFkLmgiCi0jaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5o
IgogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVOb2RlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGUuaCIKLSNpbmNsdWRlICJTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oIgog
I2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTExOSw2
ICsxMTcsNyBAQCB2b2lkIFRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6cmVwb3J0RXhwb3NlZFVuZmls
bGVkQXJlYShNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgdQogICAgIH0pOwogfQogCisjaWYgUExB
VEZPUk0oQ09DT0EpCiB2b2lkIFRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6Y3VycmVudFNuYXBQb2lu
dEluZGljZXNEaWRDaGFuZ2UoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCwgdW5zaWduZWQgaG9yaXpv
bnRhbCwgdW5zaWduZWQgdmVydGljYWwpCiB7CiAgICAgaWYgKCFtX3Njcm9sbGluZ0Nvb3JkaW5h
dG9yKQpAQCAtMTI4LDYgKzEyNyw3IEBAIHZvaWQgVGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpjdXJy
ZW50U25hcFBvaW50SW5kaWNlc0RpZENoYW5nZShTY3JvbGxpbmdOb2RlSUQgbm9kCiAgICAgICAg
IHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zZXRBY3RpdmVTY3JvbGxTbmFwSW5kaWNlcyhub2RlSUQs
IGhvcml6b250YWwsIHZlcnRpY2FsKTsKICAgICB9KTsKIH0KKyNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oTUFDKQogdm9pZCBUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OmhhbmRsZVdoZWVsRXZlbnRQaGFz
ZShQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSBwaGFzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmgKaW5kZXggNDZmNjQzYzAx
YTZkYTI1NGExZTc0ZDA1NDJmMzI4OTI1YjgzZDMyZC4uZGIzYzNkNWNmYjllOTA4YjNmN2QyM2Rk
MTY4ZjkyMGQxYzdhMzQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmgKQEAgLTU4LDcgKzU4LDYgQEAgcHJvdGVjdGVk
OgogICAgIGV4cGxpY2l0IFRocmVhZGVkU2Nyb2xsaW5nVHJlZShBc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yJik7CiAKICAgICB2b2lkIHNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xsKFNjcm9sbGlu
Z05vZGVJRCwgY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8RmxvYXRQb2ludD4mIGxheW91dFZpZXdwb3J0T3JpZ2luLCBTY3JvbGxpbmdMYXllclBv
c2l0aW9uQWN0aW9uID0gU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbjo6U3luYykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBjdXJyZW50U25hcFBvaW50SW5kaWNlc0RpZENoYW5nZShTY3JvbGxpbmdO
b2RlSUQsIHVuc2lnbmVkIGhvcml6b250YWwsIHVuc2lnbmVkIHZlcnRpY2FsKSBvdmVycmlkZTsK
ICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBoYW5kbGVXaGVlbEV2ZW50UGhhc2UoUGxhdGZv
cm1XaGVlbEV2ZW50UGhhc2UpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0QWN0aXZlU2Nyb2xsU25h
cEluZGljZXMoU2Nyb2xsaW5nTm9kZUlELCB1bnNpZ25lZCBob3Jpem9udGFsSW5kZXgsIHVuc2ln
bmVkIHZlcnRpY2FsSW5kZXgpIG92ZXJyaWRlOwpAQCAtNjYsNiArNjUsMTAgQEAgcHJvdGVjdGVk
OgogICAgIHZvaWQgcmVtb3ZlVGVzdERlZmVycmFsRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0VHJp
Z2dlcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OkRl
ZmVyVGVzdFRyaWdnZXJSZWFzb24pIG92ZXJyaWRlOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICB2b2lkIGN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKFNjcm9sbGlu
Z05vZGVJRCwgdW5zaWduZWQgaG9yaXpvbnRhbCwgdW5zaWduZWQgdmVydGljYWwpIG92ZXJyaWRl
OworI2VuZGlmCisKICAgICB2b2lkIHJlcG9ydEV4cG9zZWRVbmZpbGxlZEFyZWEoTW9ub3Rvbmlj
VGltZSwgdW5zaWduZWQgdW5maWxsZWRBcmVhKSBvdmVycmlkZTsKICAgICB2b2lkIHJlcG9ydFN5
bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uc0NoYW5nZWQoTW9ub3RvbmljVGltZSwgU3luY2hyb25v
dXNTY3JvbGxpbmdSZWFzb25zKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRv
ckNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
Y29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhp
Y3MuY3BwCmluZGV4IGIxYTQ3NzU4YjkyNDljN2Y2Yjk2MjU3YTVkMDEyNzgwNTcxZGRkMzAuLmQy
M2YzNzgzMzI2YzAzMmNjNzNhMjNhNTQzYjI0MGYxMDQzNWJhZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29v
cmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRp
bmF0ZWRHcmFwaGljcy5jcHAKQEAgLTEsMzkgKzEsOTQgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICog
Q29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKICAqIGFyZSBtZXQ6CisgKgogICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZAorICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVJTIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVk
R3JhcGhpY3MuaCIKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKIAorI2luY2x1ZGUg
IlNjcm9sbGluZ1RocmVhZC5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVDb29yZGluYXRlZEdy
YXBoaWNzLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVmPFNjcm9sbGluZ0Nvb3JkaW5h
dG9yPiBTY3JvbGxpbmdDb29yZGluYXRvcjo6Y3JlYXRlKFBhZ2UqIHBhZ2UpCiB7Ci0gICAgLy8g
RklYTUU6IFJldHVybiBhbiBvYmplY3QgaW1wbGVtZW50aW5nIEFzeW5jU2Nyb2xsaW5nQ29vcmRp
bmF0b3IuCi0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2Nyb2xsaW5nQ29vcmRpbmF0b3IocGFn
ZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRp
bmF0ZWRHcmFwaGljcyhwYWdlKSk7Cit9CisKK1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0
ZWRHcmFwaGljczo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzKFBhZ2Uq
IHBhZ2UpCisgICAgOiBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yKHBhZ2UpCisgICAgLCBtX3Nj
cm9sbGluZ1N0YXRlVHJlZUNvbW1pdHRlclRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlNj
cm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljczo6Y29tbWl0VHJlZVN0YXRlKQor
eworICAgIHNldFNjcm9sbGluZ1RyZWUoU2Nyb2xsaW5nVHJlZUNvb3JkaW5hdGVkR3JhcGhpY3M6
OmNyZWF0ZSgqdGhpcykpOworfQorCitTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3Jh
cGhpY3M6On5TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MoKQoreworICAg
IEFTU0VSVCghc2Nyb2xsaW5nVHJlZSgpKTsKK30KKwordm9pZCBTY3JvbGxpbmdDb29yZGluYXRv
ckNvb3JkaW5hdGVkR3JhcGhpY3M6OnBhZ2VEZXN0cm95ZWQoKQoreworICAgIEFzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3I6OnBhZ2VEZXN0cm95ZWQoKTsKKworICAgIG1fc2Nyb2xsaW5nU3RhdGVU
cmVlQ29tbWl0dGVyVGltZXIuc3RvcCgpOworCisgICAgcmVsZWFzZVNjcm9sbGluZ1RyZWUoKTsK
K30KKwordm9pZCBTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3M6OmNvbW1p
dFRyZWVTdGF0ZUlmTmVlZGVkKCkKK3sKKyAgICBjb21taXRUcmVlU3RhdGUoKTsKKyAgICBtX3Nj
cm9sbGluZ1N0YXRlVHJlZUNvbW1pdHRlclRpbWVyLnN0b3AoKTsKK30KKworYm9vbCBTY3JvbGxp
bmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3M6OmhhbmRsZVdoZWVsRXZlbnQoRnJhbWVW
aWV3JiwgY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3ZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzOjpzY2hlZHVs
ZVRyZWVTdGF0ZUNvbW1pdCgpCit7CisgICAgaWYgKCFtX3Njcm9sbGluZ1N0YXRlVHJlZUNvbW1p
dHRlclRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fc2Nyb2xsaW5nU3RhdGVUcmVlQ29tbWl0
dGVyVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0
b3JDb29yZGluYXRlZEdyYXBoaWNzOjpjb21taXRUcmVlU3RhdGUoKQoreworICAgIGlmICghc2Ny
b2xsaW5nU3RhdGVUcmVlKCktPmhhc0NoYW5nZWRQcm9wZXJ0aWVzKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIFJlZlB0cjxUaHJlYWRlZFNjcm9sbGluZ1RyZWU+IHRocmVhZGVkU2Nyb2xsaW5n
VHJlZSA9IGRvd25jYXN0PFRocmVhZGVkU2Nyb2xsaW5nVHJlZT4oc2Nyb2xsaW5nVHJlZSgpKTsK
KworICAgIGF1dG8gdHJlZVN0YXRlID0gc2Nyb2xsaW5nU3RhdGVUcmVlKCktPmNvbW1pdChMYXll
clJlcHJlc2VudGF0aW9uOjpQbGF0Zm9ybUxheWVyUmVwcmVzZW50YXRpb24pOworICAgIFNjcm9s
bGluZ1RocmVhZDo6ZGlzcGF0Y2goW3RocmVhZGVkU2Nyb2xsaW5nVHJlZSwgdHJlZVN0YXRlID0g
V1RGTW92ZSh0cmVlU3RhdGUpXSgpIG11dGFibGUgeworICAgICAgICB0aHJlYWRlZFNjcm9sbGlu
Z1RyZWUtPmNvbW1pdFRyZWVTdGF0ZShXVEZNb3ZlKHRyZWVTdGF0ZSkpOworICAgIH0pOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRp
bmF0ZWRHcmFwaGljcy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0
ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44MjU3NDIyZWM5ZWRhMDY1NzcxMmY1YzYyNmUxMWVmMzM0NWI0NjMzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFw
aGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuaApAQCAtMCwwICsx
LDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKyAqICAgIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBU1lOQ19T
Q1JPTExJTkcpICYmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKworI2luY2x1ZGUgIkFzeW5j
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKKworI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRl
ZEdyYXBoaWNzIGZpbmFsIDogcHVibGljIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IgeworcHVi
bGljOgorICAgIGV4cGxpY2l0IFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGlj
cyhQYWdlKik7CisgICAgdmlydHVhbCB+U2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdy
YXBoaWNzKCk7CisKKyAgICB2b2lkIHBhZ2VEZXN0cm95ZWQoKSBvdmVycmlkZTsKKworICAgIHZv
aWQgY29tbWl0VHJlZVN0YXRlSWZOZWVkZWQoKSBvdmVycmlkZTsKKworICAgIGJvb2wgaGFuZGxl
V2hlZWxFdmVudChGcmFtZVZpZXcmLCBjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSBvdmVycmlk
ZTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHNjaGVkdWxlVHJlZVN0YXRlQ29tbWl0KCkgb3ZlcnJp
ZGU7CisKKyAgICB2b2lkIGNvbW1pdFRyZWVTdGF0ZSgpOworCisgICAgUnVuTG9vcDo6VGltZXI8
U2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzPiBtX3Njcm9sbGluZ1N0YXRl
VHJlZUNvbW1pdHRlclRpbWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRn
cmFwaGljcy9TY3JvbGxpbmdUcmVlQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ1RyZWVDb29y
ZGluYXRlZEdyYXBoaWNzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YmZjYTRkZmQ1MTJmOGMyYzA4Mzk5OWQ2
ZTcxYjljZGY0YTNhNWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdUcmVlQ29vcmRpbmF0ZWRHcmFw
aGljcy5jcHAKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2Fs
aWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1l
ciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisg
KiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVDb29yZGluYXRlZEdyYXBoaWNzLmgiCisKKyNp
ZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisK
KyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlRml4ZWROb2RlLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUNvb3JkaW5hdGVkR3JhcGhpY3MuaCIKKyNpbmNsdWRlICJT
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxT
Y3JvbGxpbmdUcmVlQ29vcmRpbmF0ZWRHcmFwaGljcz4gU2Nyb2xsaW5nVHJlZUNvb3JkaW5hdGVk
R3JhcGhpY3M6OmNyZWF0ZShBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yJiBzY3JvbGxpbmdDb29y
ZGluYXRvcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTY3JvbGxpbmdUcmVlQ29vcmRp
bmF0ZWRHcmFwaGljcyhzY3JvbGxpbmdDb29yZGluYXRvcikpOworfQorCitTY3JvbGxpbmdUcmVl
Q29vcmRpbmF0ZWRHcmFwaGljczo6U2Nyb2xsaW5nVHJlZUNvb3JkaW5hdGVkR3JhcGhpY3MoQXN5
bmNTY3JvbGxpbmdDb29yZGluYXRvciYgc2Nyb2xsaW5nQ29vcmRpbmF0b3IpCisgICAgOiBUaHJl
YWRlZFNjcm9sbGluZ1RyZWUoc2Nyb2xsaW5nQ29vcmRpbmF0b3IpCit7Cit9CisKK1JlZjxTY3Jv
bGxpbmdUcmVlTm9kZT4gU2Nyb2xsaW5nVHJlZUNvb3JkaW5hdGVkR3JhcGhpY3M6OmNyZWF0ZVNj
cm9sbGluZ1RyZWVOb2RlKFNjcm9sbGluZ05vZGVUeXBlIG5vZGVUeXBlLCBTY3JvbGxpbmdOb2Rl
SUQgbm9kZUlEKQoreworICAgIHN3aXRjaCAobm9kZVR5cGUpIHsKKyAgICBjYXNlIE1haW5GcmFt
ZVNjcm9sbGluZ05vZGU6CisgICAgY2FzZSBTdWJmcmFtZVNjcm9sbGluZ05vZGU6CisgICAgICAg
IHJldHVybiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlQ29vcmRpbmF0ZWRHcmFwaGlj
czo6Y3JlYXRlKCp0aGlzLCBub2RlVHlwZSwgbm9kZUlEKTsKKyAgICBjYXNlIE92ZXJmbG93U2Ny
b2xsaW5nTm9kZToKKyAgICAgICAgLy8gU2hvdWxkIG5vdCBiZSByZWFjaGVkIC0tIGNhdWdodCBi
eSBBU1NFUlRfTk9UX1JFQUNIRUQoKSBiZWxvdy4KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBG
aXhlZE5vZGU6CisgICAgICAgIHJldHVybiBTY3JvbGxpbmdUcmVlRml4ZWROb2RlOjpjcmVhdGUo
KnRoaXMsIG5vZGVJRCk7CisgICAgY2FzZSBTdGlja3lOb2RlOgorICAgICAgICByZXR1cm4gU2Ny
b2xsaW5nVHJlZVN0aWNreU5vZGU6OmNyZWF0ZSgqdGhpcywgbm9kZUlEKTsKKyAgICB9CisKKyAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBVU0UoQ09PUkRJTkFU
RURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9j
b29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ1RyZWVDb29yZGluYXRlZEdyYXBoaWNzLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGlu
Z1RyZWVDb29yZGluYXRlZEdyYXBoaWNzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDViYjY0NWViM2I2YjYyNjU2
NTgzNzAwNTFiMjgyMTdjYjQ5ZTc4MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nVHJlZUNvb3JkaW5h
dGVkR3JhcGhpY3MuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4
IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNj
bGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQKKyAqICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFVTRShDT09SRElOQVRFRF9HUkFQ
SElDUykKKworI2luY2x1ZGUgIlRocmVhZGVkU2Nyb2xsaW5nVHJlZS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIFNjcm9sbGluZ1RyZWVDb29yZGluYXRlZEdyYXBoaWNzIGZpbmFs
IDogcHVibGljIFRocmVhZGVkU2Nyb2xsaW5nVHJlZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJl
ZjxTY3JvbGxpbmdUcmVlQ29vcmRpbmF0ZWRHcmFwaGljcz4gY3JlYXRlKEFzeW5jU2Nyb2xsaW5n
Q29vcmRpbmF0b3ImKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBTY3JvbGxpbmdUcmVlQ29v
cmRpbmF0ZWRHcmFwaGljcyhBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yJik7CisKKyAgICBSZWY8
U2Nyb2xsaW5nVHJlZU5vZGU+IGNyZWF0ZVNjcm9sbGluZ1RyZWVOb2RlKFNjcm9sbGluZ05vZGVU
eXBlLCBTY3JvbGxpbmdOb2RlSUQpIG92ZXJyaWRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
Y29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nVHJlZUZp
eGVkTm9kZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQwODE3MDNlYjFkNDgyN2UyZDZlMWJjNjlmZWEyYWJj
MjQyYzJlMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5jcHAKQEAgLTAsMCAr
MSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNj
cm9sbGluZ1RyZWVGaXhlZE5vZGUuaCIKKworI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYm
IFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8
U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZT4gU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6Y3JlYXRlKFNj
cm9sbGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZShzY3JvbGxpbmdU
cmVlLCBub2RlSUQpKTsKK30KKworU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6U2Nyb2xsaW5nVHJl
ZUZpeGVkTm9kZShTY3JvbGxpbmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2RlSUQg
bm9kZUlEKQorICAgIDogU2Nyb2xsaW5nVHJlZU5vZGUoc2Nyb2xsaW5nVHJlZSwgRml4ZWROb2Rl
LCBub2RlSUQpCit7CisgICAgc2Nyb2xsaW5nVHJlZS5maXhlZE9yU3RpY2t5Tm9kZUFkZGVkKCk7
Cit9CisKK1Njcm9sbGluZ1RyZWVGaXhlZE5vZGU6On5TY3JvbGxpbmdUcmVlRml4ZWROb2RlKCkK
K3sKKyAgICBzY3JvbGxpbmdUcmVlKCkuZml4ZWRPclN0aWNreU5vZGVSZW1vdmVkKCk7Cit9CisK
K3ZvaWQgU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihj
b25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmKQoreworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVGaXhl
ZE5vZGU6OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29uc3QgU2Nyb2xsaW5nVHJl
ZU5vZGUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFNpemUmKQoreworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAm
JiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Ny
b2xsaW5nVHJlZUZpeGVkTm9kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwYWE4NzkyNDIyMjMwY2VjZTJlNjNm
ZjRmMTZiZjc3OWZlODhhODcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuaApA
QCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKyAqICAgIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJM
RShBU1lOQ19TQ1JPTExJTkcpICYmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKworI2luY2x1
ZGUgIlNjcm9sbGluZ1RyZWVOb2RlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZSBmaW5hbCA6IHB1YmxpYyBTY3JvbGxpbmdUcmVlTm9kZSB7
CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTY3JvbGxpbmdUcmVlRml4ZWROb2RlPiBjcmVhdGUo
U2Nyb2xsaW5nVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7CisgICAgdmlydHVhbCB+U2Nyb2xsaW5n
VHJlZUZpeGVkTm9kZSgpOworCitwcml2YXRlOgorICAgIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGUo
U2Nyb2xsaW5nVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7CisKKyAgICB2b2lkIGNvbW1pdFN0YXRl
QmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikgb3ZlcnJpZGU7CisgICAg
dm9pZCB1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVO
b2RlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJikgb3ZlcnJpZGU7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xM
SU5HKSAmJiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGVDb29yZGluYXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVjYzZmMzE3MzA2MTYw
MzBkYTg2NWZmYzliOGUwYjkzYjg2NjYzNjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGVDb29yZGluYXRlZEdyYXBoaWNzLmNwcApAQCAtMCwwICsxLDc0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKyAqICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJl
ZUZyYW1lU2Nyb2xsaW5nTm9kZUNvb3JkaW5hdGVkR3JhcGhpY3MuaCIKKworI2lmIEVOQUJMRShB
U1lOQ19TQ1JPTExJTkcpICYmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitSZWY8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZT4gU2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUNvb3JkaW5hdGVkR3JhcGhpY3M6OmNyZWF0ZShTY3Jv
bGxpbmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2RlVHlwZSBub2RlVHlwZSwgU2Ny
b2xsaW5nTm9kZUlEIG5vZGVJRCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlQ29vcmRpbmF0ZWRHcmFwaGljcyhzY3JvbGxpbmdUcmVl
LCBub2RlVHlwZSwgbm9kZUlEKSk7Cit9CisKK1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVDb29yZGluYXRlZEdyYXBoaWNzOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlQ29v
cmRpbmF0ZWRHcmFwaGljcyhTY3JvbGxpbmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdO
b2RlVHlwZSBub2RlVHlwZSwgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKKyAgICA6IFNjcm9sbGlu
Z1RyZWVGcmFtZVNjcm9sbGluZ05vZGUoc2Nyb2xsaW5nVHJlZSwgbm9kZVR5cGUsIG5vZGVJRCkK
K3sKK30KKworU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUNvb3JkaW5hdGVkR3JhcGhp
Y3M6On5TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlQ29vcmRpbmF0ZWRHcmFwaGljcygp
ID0gZGVmYXVsdDsKKwordm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlQ29vcmRp
bmF0ZWRHcmFwaGljczo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQm
KQoreworfQorCitGbG9hdFBvaW50IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVDb29y
ZGluYXRlZEdyYXBoaWNzOjpzY3JvbGxQb3NpdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsg
fTsKK30KKwordm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlQ29vcmRpbmF0ZWRH
cmFwaGljczo6c2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYpCit7Cit9CisKK3Zv
aWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUNvb3JkaW5hdGVkR3JhcGhpY3M6OnNl
dFNjcm9sbFBvc2l0aW9uV2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMoY29uc3QgRmxvYXRQ
b2ludCYpCit7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUNvb3Jk
aW5hdGVkR3JhcGhpY3M6OnNldFNjcm9sbExheWVyUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYs
IGNvbnN0IEZsb2F0UmVjdCYpCit7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZUNvb3JkaW5hdGVkR3JhcGhpY3M6OnVwZGF0ZUxheWVyc0FmdGVyVmlld3BvcnRDaGFu
Z2UoY29uc3QgRmxvYXRSZWN0JiwgZG91YmxlKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBVU0UoQ09PUkRJTkFU
RURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9j
b29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVDb29yZGlu
YXRlZEdyYXBoaWNzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRl
ZGdyYXBoaWNzL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVDb29yZGluYXRlZEdyYXBo
aWNzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjUwODZjYzkyYmRmZGU4ZDRhNTA2NjcxMjc3ODc1ZTNiZTMyNTkz
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3Jk
aW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUNvb3JkaW5hdGVk
R3JhcGhpY3MuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEln
YWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFp
bWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQK
KyAqICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFVTRShDT09SRElOQVRFRF9HUkFQSElD
UykKKworI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
Q29vcmRpbmF0ZWRHcmFwaGljcyBmaW5hbCA6IHB1YmxpYyBTY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFNjcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGU+IGNyZWF0ZShTY3JvbGxpbmdUcmVlJiwgU2Nyb2xsaW5nTm9kZVR5cGUsIFNj
cm9sbGluZ05vZGVJRCk7CisgICAgdmlydHVhbCB+U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZUNvb3JkaW5hdGVkR3JhcGhpY3MoKTsKKworcHJpdmF0ZToKKyAgICBTY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlQ29vcmRpbmF0ZWRHcmFwaGljcyhTY3JvbGxpbmdUcmVlJiwgU2Ny
b2xsaW5nTm9kZVR5cGUsIFNjcm9sbGluZ05vZGVJRCk7CisKKyAgICB2b2lkIGhhbmRsZVdoZWVs
RXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jikgb3ZlcnJpZGU7CisKKyAgICBGbG9hdFBv
aW50IHNjcm9sbFBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRTY3JvbGxQ
b3NpdGlvbihjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRTY3JvbGxQ
b3NpdGlvbldpdGhvdXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKGNvbnN0IEZsb2F0UG9pbnQmKSBv
dmVycmlkZTsKKyAgICB2b2lkIHNldFNjcm9sbExheWVyUG9zaXRpb24oY29uc3QgRmxvYXRQb2lu
dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworCisgICAgdm9pZCB1cGRhdGVMYXllcnNB
ZnRlclZpZXdwb3J0Q2hhbmdlKGNvbnN0IEZsb2F0UmVjdCYsIGRvdWJsZSkgb3ZlcnJpZGU7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NS
T0xMSU5HKSAmJiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ1RyZWVT
dGlja3lOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVk
Z3JhcGhpY3MvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1YTc2ODkx
NDIzNDBmYjVmYTI4OTAzZTY3NzFjNWYwYzc1N2ViMGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ1Ry
ZWVTdGlja3lOb2RlLmNwcApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBk
aXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQKKyAqICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaCIKKworI2lm
IEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU+IFNjcm9s
bGluZ1RyZWVTdGlja3lOb2RlOjpjcmVhdGUoU2Nyb2xsaW5nVHJlZSYgc2Nyb2xsaW5nVHJlZSwg
U2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTY3Jv
bGxpbmdUcmVlU3RpY2t5Tm9kZShzY3JvbGxpbmdUcmVlLCBub2RlSUQpKTsKK30KKworU2Nyb2xs
aW5nVHJlZVN0aWNreU5vZGU6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlKFNjcm9sbGluZ1RyZWUm
IHNjcm9sbGluZ1RyZWUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCisgICAgOiBTY3JvbGxpbmdU
cmVlTm9kZShzY3JvbGxpbmdUcmVlLCBTdGlja3lOb2RlLCBub2RlSUQpCit7CisgICAgc2Nyb2xs
aW5nVHJlZS5maXhlZE9yU3RpY2t5Tm9kZUFkZGVkKCk7Cit9CisKK1Njcm9sbGluZ1RyZWVTdGlj
a3lOb2RlOjp+U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUoKQoreworICAgIHNjcm9sbGluZ1RyZWUo
KS5maXhlZE9yU3RpY2t5Tm9kZVJlbW92ZWQoKTsKK30KKwordm9pZCBTY3JvbGxpbmdUcmVlU3Rp
Y2t5Tm9kZTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5v
ZGUmKQoreworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjp1cGRhdGVMYXllcnNB
ZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVOb2RlJiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgRmxvYXRTaXplJikKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRp
bmF0ZWRncmFwaGljcy9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmYzMTMzYTcwOGM3YTZjM2E1NDVlZmY4NzlhN2EwZGYxNWM3YjUzZTgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGlu
YXRlZGdyYXBoaWNzL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmgKQEAgLTAsMCArMSw1MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5H
KSAmJiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVl
Tm9kZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcm9sbGluZ1RyZWVTdGlj
a3lOb2RlIGZpbmFsIDogcHVibGljIFNjcm9sbGluZ1RyZWVOb2RlIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUmVmPFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlPiBjcmVhdGUoU2Nyb2xsaW5nVHJlZSYs
IFNjcm9sbGluZ05vZGVJRCk7CisgICAgdmlydHVhbCB+U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUo
KTsKKworcHJpdmF0ZToKKyAgICBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZShTY3JvbGxpbmdUcmVl
JiwgU2Nyb2xsaW5nTm9kZUlEKTsKKworICAgIHZvaWQgY29tbWl0U3RhdGVCZWZvcmVDaGlsZHJl
bihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUxh
eWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29uc3QgU2Nyb2xsaW5nVHJlZU5vZGUmLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBGbG9hdFNpemUmKSBvdmVycmlkZTsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFVTRShD
T09SRElOQVRFRF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtV2hlZWxFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1X
aGVlbEV2ZW50LmgKaW5kZXggYzFiNmEyYThmMWExZjdlZDFjNmVmYjMwZWVmMjA4ZWEwOTk5Y2M1
NC4uZTFkMmQzYjNmYjQ1NGNkMmY0NDg5N2VhNGVjZDMyMmM5ZjY3MmM2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKQEAgLTQ4LDcgKzQ4LDcgQEAg
ZW51bSBQbGF0Zm9ybVdoZWVsRXZlbnRHcmFudWxhcml0eSA6IHVpbnQ4X3QgewogICAgIFNjcm9s
bEJ5UGl4ZWxXaGVlbEV2ZW50LAogfTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9S
TShHVEspCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0o
V1BFKQogCiBlbnVtIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIDogdWludDhfdCB7CiAgICAgUGxh
dGZvcm1XaGVlbEV2ZW50UGhhc2VOb25lID0gMCwKQEAgLTEzNSw2ICsxMzUsOSBAQCBwdWJsaWM6
CiAgICAgdW5zaWduZWQgc2Nyb2xsQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbENvdW50
OyB9CiAgICAgZmxvYXQgdW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhWCgpIGNvbnN0IHsgcmV0
dXJuIG1fdW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhWDsgfQogICAgIGZsb2F0IHVuYWNjZWxl
cmF0ZWRTY3JvbGxpbmdEZWx0YVkoKSBjb25zdCB7IHJldHVybiBtX3VuYWNjZWxlcmF0ZWRTY3Jv
bGxpbmdEZWx0YVk7IH0KKyNlbmRpZgorCisjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKICAg
ICBib29sIHVzZUxhdGNoZWRFdmVudEVsZW1lbnQoKSBjb25zdDsKICAgICBib29sIHNob3VsZENv
bnNpZGVyTGF0Y2hpbmcoKSBjb25zdDsKICAgICBib29sIHNob3VsZFJlc2V0TGF0Y2hpbmcoKSBj
b25zdDsKQEAgLTE0Myw3ICsxNDYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCB1c2VMYXRjaGVkRXZl
bnRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCi0jaWYgUExBVEZP
Uk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZP
Uk0oR1RLKSB8fCBQTEFURk9STShXUEUpCiAgICAgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgcGhh
c2UoKSBjb25zdCB7IHJldHVybiBtX3BoYXNlOyB9CiAgICAgUGxhdGZvcm1XaGVlbEV2ZW50UGhh
c2UgbW9tZW50dW1QaGFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9tZW50dW1QaGFzZTsgfQogICAg
IGJvb2wgaXNFbmRPZk5vbk1vbWVudHVtU2Nyb2xsKCkgY29uc3Q7CkBAIC0xNjgsNyArMTcxLDcg
QEAgcHJvdGVjdGVkOgogICAgIC8vIFNjcm9sbGluZyB2ZWxvY2l0eSBpbiBwaXhlbHMgcGVyIHNl
Y29uZC4KICAgICBGbG9hdFNpemUgbV9zY3JvbGxpbmdWZWxvY2l0eTsKIAotI2lmIFBMQVRGT1JN
KENPQ09BKSB8fCBQTEFURk9STShHVEspCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JN
KEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIG1fcGhh
c2UgeyBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmUgfTsKICAgICBQbGF0Zm9ybVdoZWVsRXZl
bnRQaGFzZSBtX21vbWVudHVtUGhhc2UgeyBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmUgfTsK
ICNlbmRpZgpAQCAtMTgwLDcgKzE4Myw3IEBAIHByb3RlY3RlZDoKICNlbmRpZgogfTsKIAotI2lm
IFBMQVRGT1JNKENPQ09BKQorI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCiAKIGlubGluZSBi
b29sIFBsYXRmb3JtV2hlZWxFdmVudDo6dXNlTGF0Y2hlZEV2ZW50RWxlbWVudCgpIGNvbnN0CiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UZXh0dXJlTWFwcGVyLmNtYWtl
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGV4dHVyZU1hcHBlci5jbWFrZQppbmRleCBlYTky
NmNlZTIxYjM4NmE0NjliZTM0N2E4MjlhOTg1ZTE1NDRlYmYyLi42ZWFiNmEwYTE4OTVhZGFmNzg3
NTFkMTkwYzE2ODhkNDdiZmM3N2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9UZXh0dXJlTWFwcGVyLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RleHR1
cmVNYXBwZXIuY21ha2UKQEAgLTMwLDkgKzMwLDYgQEAgaWYgKFVTRV9DT09SRElOQVRFRF9HUkFQ
SElDUykKICAgICAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9j
b29yZGluYXRlZCIKICAgICApCiAgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCi0gICAg
ICAgIHBhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0
b3JDb29yZGluYXRlZEdyYXBoaWNzLmNwcAotICAgICAgICBwYWdlL3Njcm9sbGluZy9jb29yZGlu
YXRlZGdyYXBoaWNzL1Njcm9sbGluZ1N0YXRlTm9kZUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCi0K
ICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKaW5kZXggYmJjNTJhYThlY2YwNTNiZmEyYmViYjYwNmVjMTM1NzZjNmI5NzQz
Mi4uZDcyY2UyZTYxMGVmZjYyMjhhMDMyZTcyM2YwMDRiNGI5NzIxN2IwMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xNTYsNyArMTU2LDcgQEAKICNpbmNs
dWRlICJBUElBcHBsaWNhdGlvbk1hbmlmZXN0LmgiCiAjZW5kaWYKIAotI2lmIEVOQUJMRShBU1lO
Q19TQ1JPTExJTkcpCisjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0oQ09D
T0EpCiAjaW5jbHVkZSAiUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oIgogI2VuZGlm
CiAKQEAgLTgwNCw3ICs4MDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZVdlYlBh
Z2UoKQogICAgIG1fZHJhd2luZ0FyZWEgPSBtX3BhZ2VDbGllbnQuY3JlYXRlRHJhd2luZ0FyZWFQ
cm94eSgpOwogICAgIEFTU0VSVChtX2RyYXdpbmdBcmVhKTsKIAotI2lmIEVOQUJMRShBU1lOQ19T
Q1JPTExJTkcpCisjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgaWYgKG1fZHJhd2luZ0FyZWEtPnR5cGUoKSA9PSBEcmF3aW5nQXJlYVR5cGVSZW1vdGVM
YXllclRyZWUpIHsKICAgICAgICAgbV9zY3JvbGxpbmdDb29yZGluYXRvclByb3h5ID0gc3RkOjpt
YWtlX3VuaXF1ZTxSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5PigqdGhpcyk7CiAjaWYg
UExBVEZPUk0oSU9TKQpAQCAtMjAxNiw3ICsyMDE2LDcgQEAgc3RhdGljIFdlYldoZWVsRXZlbnQg
Y29hbGVzY2VkV2hlZWxFdmVudChEZXF1ZTxOYXRpdmVXZWJXaGVlbEV2ZW50PiYgcXVldWUsIFZl
Y3QKIAogdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgTmF0aXZlV2Vi
V2hlZWxFdmVudCYgZXZlbnQpCiB7Ci0jaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKKyNpZiBF
TkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBQTEFURk9STShDT0NPQSkKICAgICBpZiAobV9zY3Jv
bGxpbmdDb29yZGluYXRvclByb3h5ICYmIG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS0+aGFu
ZGxlV2hlZWxFdmVudChwbGF0Zm9ybShldmVudCkpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYK
QEAgLTIxOTAsNyArMjE5MCw3IEBAIHN0YXRpYyBUcmFja2luZ1R5cGUgbWVyZ2VUcmFja2luZ1R5
cGVzKFRyYWNraW5nVHlwZSBhLCBUcmFja2luZ1R5cGUgYikKIAogdm9pZCBXZWJQYWdlUHJveHk6
OnVwZGF0ZVRvdWNoRXZlbnRUcmFja2luZyhjb25zdCBXZWJUb3VjaEV2ZW50JiB0b3VjaFN0YXJ0
RXZlbnQpCiB7Ci0jaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKKyNpZiBFTkFCTEUoQVNZTkNf
U0NST0xMSU5HKSAmJiBQTEFURk9STShDT0NPQSkKICAgICBjb25zdCBFdmVudE5hbWVzJiBuYW1l
cyA9IGV2ZW50TmFtZXMoKTsKICAgICBmb3IgKGF1dG8mIHRvdWNoUG9pbnQgOiB0b3VjaFN0YXJ0
RXZlbnQudG91Y2hQb2ludHMoKSkgewogICAgICAgICBJbnRQb2ludCBsb2NhdGlvbiA9IHRvdWNo
UG9pbnQubG9jYXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5k
ZXggYjUzNDQ1ZjI0ZDViM2Y1NmZlN2U4ZjJlMWUyYmRmMzA5ZmYxYmYyMS4uMGRkOWYwY2QyNGQz
ODk2YzQwOGZhMjZlZDkyMDAxYTUzNDc3MjcyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKQEAgLTM0Nyw3ICszNDcsNyBAQCBwdWJsaWM6CiAgICAgTlNBcnJheSAqZGF0
YURldGVjdGlvblJlc3VsdHMoKSB7IHJldHVybiBtX2RhdGFEZXRlY3Rpb25SZXN1bHRzLmdldCgp
OyB9CiAjZW5kaWYKICAgICAgICAgCi0jaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKKyNpZiBF
TkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBQTEFURk9STShDT0NPQSkKICAgICBSZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclByb3h5KiBzY3JvbGxpbmdDb29yZGluYXRvclByb3h5KCkgY29uc3Qg
eyByZXR1cm4gbV9zY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmdldCgpOyB9CiAjZW5kaWYKIApA
QCAtMTc4MCw3ICsxNzgwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNMb2FkaW5nQWx0ZXJu
YXRlSFRNTFN0cmluZ0ZvckZhaWxpbmdQcm92aXNpb25hbExvYWQgeyBmYWxzZSB9OwogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVhUHJveHk+IG1fZHJhd2luZ0FyZWE7Ci0jaWYgRU5B
QkxFKEFTWU5DX1NDUk9MTElORykKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBQTEFU
Rk9STShDT0NPQSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0
b3JQcm94eT4gbV9zY3JvbGxpbmdDb29yZGluYXRvclByb3h5OwogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAKaW5kZXggNjIxZWEzOTA5OWRkNDhmMzg3NWYzMjYxOGQ3OWQ4ZmM3MTk2MTQ4
Zi4uMGEzZWE1ZjhkZDk4NzkxMDllYWU2MTY1YTcyNjQzNzU4NmQ1ZmZjZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAKQEAgLTkyOCw5ICs5MjgsMTMgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6Omxh
eWVyVHJlZVN0YXRlSXNGcm96ZW4oKSBjb25zdAogUmVmUHRyPFNjcm9sbGluZ0Nvb3JkaW5hdG9y
PiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yKFBhZ2UmIHBhZ2Up
IGNvbnN0CiB7CiAgICAgQVNTRVJUX1VOVVNFRChwYWdlLCBtX3BhZ2UuY29yZVBhZ2UoKSA9PSAm
cGFnZSk7CisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKG1fcGFnZS5kcmF3aW5nQXJlYSgp
LT50eXBlKCkgIT0gRHJhd2luZ0FyZWFUeXBlUmVtb3RlTGF5ZXJUcmVlKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICByZXR1cm4gUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNyZWF0
ZSgmbV9wYWdlKTsKKyNlbHNlCisgICAgcmV0dXJuIG51bGxwdHI7CisjZW5kaWYKIH0KIAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZSBiL1NvdXJjZS9j
bWFrZS9PcHRpb25zR1RLLmNtYWtlCmluZGV4IDhmMTVmZTRiN2U2NGZmM2NiYzQ4OWU3MjRlOTU4
MDA2NWViOTBiNjAuLjlhYmVjYzlhOGQyYTVkNWFmMzI3OGU1M2NmNzY5M2YzYTBlYjRiZmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFr
ZS9PcHRpb25zR1RLLmNtYWtlCkBAIC0xMjEsNiArMTIxLDcgQEAgZW5kaWYgKCkKICMgd2l0aG91
dCBhcHByb3ZhbCBmcm9tIGEgR1RLKyByZXZpZXdlci4gVGhlcmUgbXVzdCBiZSBzdHJvbmcgcmVh
c29uIHRvIHN1cHBvcnQKICMgY2hhbmdpbmcgdGhlIHZhbHVlIG9mIHRoZSBvcHRpb24uCiBXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFT
IFBVQkxJQyBPRkYpCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfQVNZ
TkNfU0NST0xMSU5HIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfRFJBR19TVVBQT1JUIFBVQkxJQyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9Q
T1JUX1ZBTFVFKEVOQUJMRV9HRU9MT0NBVElPTiBQVUJMSUMgT04pCiBXRUJLSVRfT1BUSU9OX0RF
RkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfSUNPTkRBVEFCQVNFIFBVQkxJQyBPTikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNX
UEUuY21ha2UKaW5kZXggYzVkYzRkZjA3ODYxYjNhMmU3NzJhYTYwNGFiMGViZThmY2FhM2IyYy4u
NGRjMTdhOWEzMmRiYmZkODg4ZjBmMWE0MTAyMjBlZjI4MTVkZTdhNiAxMDA2NDQKLS0tIGEvU291
cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNXUEUu
Y21ha2UKQEAgLTMxLDYgKzMxLDcgQEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUo
VVNFX1NZU1RFTV9NQUxMT0MgUFVCTElDIE9GRikKICMgd2UgbmVlZCBhIHZhbHVlIGRpZmZlcmVu
dCBmcm9tIHRoZSBkZWZhdWx0IGRlZmluZWQgaW4gV2ViS2l0RmVhdHVyZXMuY21ha2UuCiAjIENo
YW5naW5nIHRoZXNlIG9wdGlvbnMgaXMgY29tcGxldGVseSB1bnN1cHBvcnRlZC4KIFdFQktJVF9P
UFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9BQ0NFU1NJQklMSVRZIFBSSVZBVEUgT04p
CitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfQVNZTkNfU0NST0xMSU5H
IFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRlVM
TFNDUkVFTl9BUEkgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfR0VPTE9DQVRJT04gUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfTUhUTUwgUFJJVkFURSBPTikKZGlmZiAtLWdpdCBhL0NoYW5nZUxv
ZyBiL0NoYW5nZUxvZwppbmRleCA0YjZiNWE4YjcyMjVkOGUzMjM2ZmQwZDNjYzM5M2UyYWMyMzRh
NzcyLi5jNGJiOGY1MjAwZjE2ZDY1MWU4NTZhNmU0ZDkwMDUyOTIzMzMyNDA4IDEwMDY0NAotLS0g
YS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgtMDQtMjYg
IFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQ
RV0gSW5pdGlhbCBBU1lOQ19TQ1JPTExJTkcgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0OTYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Q2FybG9zIEdhcmNpYSBDYW1wb3MuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0dU
Sy5jbWFrZTogRW5hYmxlIEFTWU5DX1NDUk9MTElORyBhcyBhIHByaXZhdGUgb3B0aW9uLgorICAg
ICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlOiBEaXR0by4KKwogMjAxOC0wNC0y
NSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W1dQRV0gQnVpbGQgYW5kIGxpbmsgYWdhaW5zdCBsYXRlc3QgV1BFQmFja2VuZCBhbmQgV1BFQmFj
a2VuZC1mZG8K
</data>

          </attachment>
      

    </bug>

</bugzilla>