<?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>159144</bug_id>
          
          <creation_ts>2016-06-27 05:07:54 -0700</creation_ts>
          <short_desc>Too much duplicated code in LayerTreeHosts implementations</short_desc>
          <delta_ts>2016-06-29 05:17:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Local 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>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>159209</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>yoon</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1205524</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-06-27 05:07:54 -0700</bug_when>
    <thetext>There&apos;s some code common and duplicated in all current LayerTreeHosts implementations (Gtk, Coordinated, and ThreadedCoordinated). The thing is even worse in the case of ThreadedCoordinated and Coordinated, where the former is actually a special case of the later, and it seems like code was copy pasted and then modified to add ThreadedCoordinated specific code. The problem of that approach, apart from the code duplication, is that common parts end up diverging too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1205525</commentid>
    <comment_count>1</comment_count>
      <attachid>282120</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-06-27 05:10:52 -0700</bug_when>
    <thetext>Created attachment 282120
Patch

12 files changed, 169 insertions(+), 418 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1205527</commentid>
    <comment_count>2</comment_count>
      <attachid>282122</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-06-27 05:16:45 -0700</bug_when>
    <thetext>Created attachment 282122
Try to fix builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1205528</commentid>
    <comment_count>3</comment_count>
      <attachid>282123</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-06-27 05:22:46 -0700</bug_when>
    <thetext>Created attachment 282123
Try to fix EFL build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1205892</commentid>
    <comment_count>4</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2016-06-27 23:25:56 -0700</bug_when>
    <thetext>Yoon, any thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1205945</commentid>
    <comment_count>5</comment_count>
      <attachid>282123</attachid>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2016-06-28 00:58:42 -0700</bug_when>
    <thetext>Comment on attachment 282123
Try to fix EFL build

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

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:207
&gt; +    UNUSED_PARAM(size);

Maybe using ASSERT_NOT_REACHED would be nice to use here.

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h:65
&gt; +    class CompositorClient final : public ThreadedCompositor::Client {

What about to add WTF_MAKE_NONCOPYABLE to make sure?

&gt; Source/WebKit2/WebProcess/WebPage/LayerTreeHost.h:73
&gt;      virtual void sizeDidChange(const WebCore::IntSize&amp; newSize) = 0;

What about change the name of it to the viewportSizeChanged, as we discussed earlier?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1205961</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-06-28 02:16:07 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 282123 [details]
&gt; Try to fix EFL build
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=282123&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:207
&gt; &gt; +    UNUSED_PARAM(size);
&gt; 
&gt; Maybe using ASSERT_NOT_REACHED would be nice to use here.

Sure.

&gt; &gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h:65
&gt; &gt; +    class CompositorClient final : public ThreadedCompositor::Client {
&gt; 
&gt; What about to add WTF_MAKE_NONCOPYABLE to make sure?

It&apos;s private and stack allocated only, LayerTreeHost is already non copyable, so I don&apos;t see how it can be copied.

&gt; &gt; Source/WebKit2/WebProcess/WebPage/LayerTreeHost.h:73
&gt; &gt;      virtual void sizeDidChange(const WebCore::IntSize&amp; newSize) = 0;
&gt; 
&gt; What about change the name of it to the viewportSizeChanged, as we discussed
&gt; earlier?

That doesn&apos;t belong to this patch, this is about sharing existing code, I avoided changes like that to make sure I don&apos;t break EFL port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206356</commentid>
    <comment_count>7</comment_count>
      <attachid>282123</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2016-06-29 04:40:40 -0700</bug_when>
    <thetext>Comment on attachment 282123
Try to fix EFL build

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

&gt;&gt;&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h:65
&gt;&gt;&gt; +    class CompositorClient final : public ThreadedCompositor::Client {
&gt;&gt; 
&gt;&gt; What about to add WTF_MAKE_NONCOPYABLE to make sure?
&gt; 
&gt; It&apos;s private and stack allocated only, LayerTreeHost is already non copyable, so I don&apos;t see how it can be copied.

It&apos;s not stack-allocated, it&apos;s allocated on the heap by being located inside the ThreadedCoordinatedLayerTreeHost.

It can be copied, ThreadedCompositor::Client is copyable and the LayerTreeHost reference doesn&apos;t prevent it either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206357</commentid>
    <comment_count>8</comment_count>
      <attachid>282123</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2016-06-29 04:41:42 -0700</bug_when>
    <thetext>Comment on attachment 282123
Try to fix EFL build

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

&gt;&gt;&gt;&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h:65
&gt;&gt;&gt;&gt; +    class CompositorClient final : public ThreadedCompositor::Client {
&gt;&gt;&gt; 
&gt;&gt;&gt; What about to add WTF_MAKE_NONCOPYABLE to make sure?
&gt;&gt; 
&gt;&gt; It&apos;s private and stack allocated only, LayerTreeHost is already non copyable, so I don&apos;t see how it can be copied.
&gt; 
&gt; It&apos;s not stack-allocated, it&apos;s allocated on the heap by being located inside the ThreadedCoordinatedLayerTreeHost.
&gt; 
&gt; It can be copied, ThreadedCompositor::Client is copyable and the LayerTreeHost reference doesn&apos;t prevent it either.

r=me with WTF_MAKE_NONCOPYABLE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206360</commentid>
    <comment_count>9</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-06-29 05:12:22 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 282123 [details]
&gt; Try to fix EFL build
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=282123&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h:65
&gt; &gt;&gt;&gt;&gt; +    class CompositorClient final : public ThreadedCompositor::Client {
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; What about to add WTF_MAKE_NONCOPYABLE to make sure?
&gt; &gt;&gt; 
&gt; &gt;&gt; It&apos;s private and stack allocated only, LayerTreeHost is already non copyable, so I don&apos;t see how it can be copied.
&gt; &gt; 
&gt; &gt; It&apos;s not stack-allocated, it&apos;s allocated on the heap by being located inside the ThreadedCoordinatedLayerTreeHost.
&gt; &gt; 
&gt; &gt; It can be copied, ThreadedCompositor::Client is copyable and the LayerTreeHost reference doesn&apos;t prevent it either.
&gt; 
&gt; r=me with WTF_MAKE_NONCOPYABLE.

Ok, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206361</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-06-29 05:17:13 -0700</bug_when>
    <thetext>Committed r202621: &lt;http://trac.webkit.org/changeset/202621&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282120</attachid>
            <date>2016-06-27 05:10:52 -0700</date>
            <delta_ts>2016-06-27 05:16:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-layer-tree-host.diff</filename>
            <type>text/plain</type>
            <size>45329</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA0MTM3ZTZhLi4wYzFlMzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODIg
QEAKKzIwMTYtMDYtMjcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFRvbyBtdWNoIGR1cGxpY2F0ZWQgY29kZSBpbiBMYXllclRyZWVIb3N0cyBp
bXBsZW1lbnRhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1OTE0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoZXJlJ3Mgc29tZSBjb2RlIGNvbW1vbiBhbmQgZHVwbGljYXRlZCBpbiBhbGwgY3Vy
cmVudCBMYXllclRyZWVIb3N0cyBpbXBsZW1lbnRhdGlvbnMgKEd0aywgQ29vcmRpbmF0ZWQsIGFu
ZAorICAgICAgICBUaHJlYWRlZENvb3JkaW5hdGVkKS4gVGhlIHRoaW5nIGlzIGV2ZW4gd29yc2Ug
aW4gdGhlIGNhc2Ugb2YgVGhyZWFkZWRDb29yZGluYXRlZCBhbmQgQ29vcmRpbmF0ZWQsIHdoZXJl
IHRoZQorICAgICAgICBmb3JtZXIgaXMgYWN0dWFsbHkgYSBzcGVjaWFsIGNhc2Ugb2YgdGhlIGxh
dGVyLCBhbmQgaXQgc2VlbXMgbGlrZSBjb2RlIHdhcyBjb3B5IHBhc3RlZCBhbmQgdGhlbiBtb2Rp
ZmllZCB0byBhZGQKKyAgICAgICAgVGhyZWFkZWRDb29yZGluYXRlZCBzcGVjaWZpYyBjb2RlLiBU
aGUgcHJvYmxlbSBvZiB0aGF0IGFwcHJvYWNoLCBhcGFydCBmcm9tIHRoZSBjb2RlIGR1cGxpY2F0
aW9uLCBpcyB0aGF0IGNvbW1vbgorICAgICAgICBwYXJ0cyBlbmQgdXAgZGl2ZXJnaW5nIHRvby4g
VGhpcyBwYXRjaCBtb3ZlcyB0aGUgY29tbW9uIHBhcnRzIHRvIHRoZSBiYXNlIGNsYXNzIExheWVy
VHJlZUhvc3QgYW5kIG1ha2VzCisgICAgICAgIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0IGluaGVyaXQgZnJvbSBDb29yZGluYXRlZExheWVyVHJlZUhvc3QsIHRvIHNoYXJlIHRoZSBj
b21tb24gY29kZSBhbmQgc2ltcGx5IGFkZAorICAgICAgICB0aGUgc3BlY2lmaWMgb25lLgorCisg
ICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWREcmF3aW5nQXJlYS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0OjpzY2hlZHVsZUxheWVyRmx1c2gpOgorICAgICAgICAoV2ViS2l0OjpDb29y
ZGluYXRlZExheWVyVHJlZUhvc3Q6OnNldFZpZXdPdmVybGF5Um9vdExheWVyKToKKyAgICAgICAg
KFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzZXRSb290Q29tcG9zaXRpbmdMYXll
cik6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6aW52YWxpZGF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2l6ZURpZENo
YW5nZSk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6bGF5ZXJG
bHVzaFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhv
c3Q6OmNvbW1pdFNjZW5lU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OmNyZWF0ZUNvb3JkaW5hdGVkU3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OkNv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y2FuY2VsUGVuZGluZ0xheWVyRmx1c2gpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmZvcmNlUmVwYWlu
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
Zm9yY2VSZXBhaW50QXN5bmMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRl
ZExheWVyVHJlZUhvc3Q6OmRpZEZsdXNoUm9vdExheWVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNo
YW5nZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhv
c3Q6OnBhZ2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Z3JhcGhpY3NMYXllckZhY3Rvcnkp
OiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6
OlRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KToKKyAgICAgICAgKFdlYktpdDo6VGhy
ZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hh
bmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpzaXplRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb29yZGluYXRlZExh
eWVyVHJlZUhvc3Q6OnNldFZpc2libGVDb250ZW50c1JlY3QpOgorICAgICAgICAoV2ViS2l0OjpU
aHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y29tbWl0U2NlbmVTdGF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjcmVhdGUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dDo6c2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6VGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNvbnRlbnRzU2l6ZUNoYW5nZWQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdDo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6VGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRpZFNjYWxlRmFjdG9yQ2hh
bmdlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0OjpzZXROYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcpOiBEZWxldGVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVh
ZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL0RyYXdpbmdBcmVhLmg6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjpsYXllckhv
c3REaWRGbHVzaExheWVycyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdB
cmVhSW1wbC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6fkxheWVyVHJlZUhvc3QpOgorICAg
ICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0OjpzZXRMYXllckZsdXNoU2NoZWR1bGluZ0VuYWJs
ZWQpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0OjpwYXVzZVJlbmRlcmluZyk6Cisg
ICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6OnJlc3VtZVJlbmRlcmluZyk6CisgICAgICAg
IChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6OmludmFsaWRhdGUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9MYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhv
c3Q6OmxheWVyVHJlZUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0Ojpz
ZXRTaG91bGROb3RpZnlBZnRlck5leHRTY2hlZHVsZWRMYXllckZsdXNoKToKKyAgICAgICAgKFdl
YktpdDo6TGF5ZXJUcmVlSG9zdDo6c2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVlZERpc3BsYXkp
OgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0OjpzZXROb25Db21wb3NpdGVkQ29udGVu
dHNOZWVkRGlzcGxheUluUmVjdCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6OnNj
cm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50cyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhv
c3Q6OmdyYXBoaWNzTGF5ZXJGYWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9z
dDo6Y29udGVudHNTaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6
OmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJl
ZUhvc3Q6OnNldE5hdGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZyk6CisgICAgICAgIChX
ZWJLaXQ6OkxheWVyVHJlZUhvc3Q6OnNldFZpZXdPdmVybGF5Um9vdExheWVyKToKKyAgICAgICAg
KFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6Zm9yY2VSZXBhaW50QXN5bmMpOiBEZWxldGVkLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RHdGs6OmludmFsaWRhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpMYXllclRyZWVIb3N0R3RrOjpzZXRWaWV3T3ZlcmxheVJvb3RMYXllcik6CisgICAgICAg
IChXZWJLaXQ6OkxheWVyVHJlZUhvc3RHdGs6OkxheWVyVHJlZUhvc3RHdGspOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0R3RrOjpzZXRSb290Q29tcG9zaXRpbmdMYXll
cik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RHdGs6OnNldE5vbkNv
bXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
TGF5ZXJUcmVlSG9zdEd0azo6c2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdEd0azo6c2V0TmF0aXZlU3VyZmFjZUhhbmRs
ZUZvckNvbXBvc2l0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
Z3RrL0xheWVyVHJlZUhvc3RHdGsuaDoKKwogMjAxNi0wNi0yNyAgTWlndWVsIEdvbWV6ICA8bWFn
b21lekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW0VGTF0gQnVpbGQgd2l0aCB0aHJlYWRl
ZCBjb21wb3NpdG9yIGVuYWJsZWQgaXMgYnJva2VuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCmlu
ZGV4IGFjMDJlNGMuLjRmNTU5MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
R1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC04MjYs
NiArODI2LDcgQEAgaWYgKEVOQUJMRV9USFJFQURFRF9DT01QT1NJVE9SKQogICAgICAgICBTaGFy
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkU2FmZUNvb3Jk
aW5hdGVkU3VyZmFjZS5jcHAKICAgICAgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhy
ZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKIAorICAgICAgICBXZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3Qu
Y3BwCiAgICAgICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVh
ZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAogICAgICkKICAgICBsaXN0KEFQUEVORCBX
ZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkRHJhd2luZ0Fy
ZWEuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkRHJhd2luZ0FyZWEuaAppbmRleCBkMGI5ZjNlLi5kZDBkNjM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZERyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWREcmF3aW5nQXJlYS5o
CkBAIC00MSw4ICs0MSw2IEBAIHB1YmxpYzoKICAgICBDb29yZGluYXRlZERyYXdpbmdBcmVhKFdl
YlBhZ2UmLCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgdmlydHVhbCB+
Q29vcmRpbmF0ZWREcmF3aW5nQXJlYSgpOwogCi0gICAgdm9pZCBsYXllckhvc3REaWRGbHVzaExh
eWVycygpOwotCiBwcml2YXRlOgogICAgIC8vIERyYXdpbmdBcmVhCiAgICAgdm9pZCBzZXROZWVk
c0Rpc3BsYXkoKSBvdmVycmlkZTsKQEAgLTY5LDYgKzY3LDggQEAgcHJpdmF0ZToKICAgICB2b2lk
IHZpZXdTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpWaWV3U3RhdGU6OkZsYWdzLCBib29sIC8qIHdh
bnRzRGlkVXBkYXRlVmlld1N0YXRlICovLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiAvKiBjYWxs
YmFja0lEcyAqLykgb3ZlcnJpZGU7CiAgICAgdm9pZCBhdHRhY2hWaWV3T3ZlcmxheUdyYXBoaWNz
TGF5ZXIoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7
CiAKKyAgICB2b2lkIGxheWVySG9zdERpZEZsdXNoTGF5ZXJzKCkgb3ZlcnJpZGU7CisKICAgICAv
LyBJUEMgbWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lkIHVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRl
KHVpbnQ2NF90IGJhY2tpbmdTdG9yZVN0YXRlSUQsIGJvb2wgcmVzcG9uZEltbWVkaWF0ZWx5LCBm
bG9hdCBkZXZpY2VTY2FsZUZhY3RvciwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIHNjcm9sbE9mZnNldCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IHN1c3BlbmRQYWludGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggYjY4ZGM0MC4uZGEyYWU4MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3QuY3BwCkBAIC0zMCwyMCArMzAsMjEgQEAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCiAjaW5jbHVkZSAiQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgiCiAKLSNpbmNsdWRlICJD
b29yZGluYXRlZERyYXdpbmdBcmVhLmgiCi0jaW5jbHVkZSAiQ29vcmRpbmF0ZWRHcmFwaGljc0Fy
Z3VtZW50Q29kZXJzLmgiCi0jaW5jbHVkZSAiQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHlN
ZXNzYWdlcy5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkRyYXdp
bmdBcmVhLmgiCiAjaW5jbHVkZSAiV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmgiCi0jaW5jbHVkZSAi
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUg
IldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NYWluRnJhbWUu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvU2V0dGluZ3MuaD4KLSNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKworI2lm
IFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyNpbmNsdWRlICJUaHJlYWRTYWZl
Q29vcmRpbmF0ZWRTdXJmYWNlLmgiCisjZWxpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVM
VElQUk9DRVNTKQorI2luY2x1ZGUgIkNvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5o
IgorI2luY2x1ZGUgIkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5TWVzc2FnZXMuaCIKKyNp
bmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNlbmRpZgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIApAQCAtNjAsNDYgKzYxLDI0IEBAIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dDo6fkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCgpCiAKIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KFdlYlBhZ2UmIHdlYlBhZ2UpCiAgICAgOiBMYXll
clRyZWVIb3N0KHdlYlBhZ2UpCi0gICAgLCBtX25vdGlmeUFmdGVyU2NoZWR1bGVkTGF5ZXJGbHVz
aChmYWxzZSkKLSAgICAsIG1faXNWYWxpZCh0cnVlKQotICAgICwgbV9pc1N1c3BlbmRlZChmYWxz
ZSkKLSAgICAsIG1faXNXYWl0aW5nRm9yUmVuZGVyZXIodHJ1ZSkKLSAgICAsIG1fbGF5ZXJGbHVz
aFRpbWVyKCp0aGlzLCAmQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpsYXllckZsdXNoVGltZXJG
aXJlZCkKLSAgICAsIG1fbGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFibGVkKHRydWUpCi0gICAgLCBt
X2ZvcmNlUmVwYWludEFzeW5jQ2FsbGJhY2tJRCgwKQotICAgICwgbV92aWV3T3ZlcmxheVJvb3RM
YXllcihudWxscHRyKQorICAgICwgbV9jb29yZGluYXRvcihzdGQ6Om1ha2VfdW5pcXVlPENvbXBv
c2l0aW5nQ29vcmRpbmF0b3I+KHdlYlBhZ2UuY29yZVBhZ2UoKSwgdGhpcykpCisgICAgLCBtX2xh
eWVyRmx1c2hUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZDb29yZGluYXRlZExheWVyVHJl
ZUhvc3Q6OmxheWVyRmx1c2hUaW1lckZpcmVkKQogewotICAgIG1fY29vcmRpbmF0b3IgPSBzdGQ6
Om1ha2VfdW5pcXVlPENvbXBvc2l0aW5nQ29vcmRpbmF0b3I+KG1fd2ViUGFnZS5jb3JlUGFnZSgp
LCB0aGlzKTsKLQogICAgIG1fY29vcmRpbmF0b3ItPmNyZWF0ZVJvb3RMYXllcihtX3dlYlBhZ2Uu
c2l6ZSgpKTsKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQogICAg
IG1fbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQgPSB0b0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cihtX2Nvb3JkaW5hdG9yLT5yb290TGF5ZXIoKSktPmlkKCk7CisjZW5kaWYKIAogICAgIENvb3Jk
aW5hdGVkU3VyZmFjZTo6c2V0RmFjdG9yeShjcmVhdGVDb29yZGluYXRlZFN1cmZhY2UpOwotCiAg
ICAgc2NoZWR1bGVMYXllckZsdXNoKCk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0OjpzZXRMYXllckZsdXNoU2NoZWR1bGluZ0VuYWJsZWQoYm9vbCBsYXllckZsdXNoaW5nRW5h
YmxlZCkKLXsKLSAgICBpZiAobV9sYXllckZsdXNoU2NoZWR1bGluZ0VuYWJsZWQgPT0gbGF5ZXJG
bHVzaGluZ0VuYWJsZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fbGF5ZXJGbHVzaFNjaGVk
dWxpbmdFbmFibGVkID0gbGF5ZXJGbHVzaGluZ0VuYWJsZWQ7Ci0KLSAgICBpZiAobV9sYXllckZs
dXNoU2NoZWR1bGluZ0VuYWJsZWQpIHsKLSAgICAgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjYW5jZWxQZW5kaW5nTGF5ZXJGbHVzaCgpOwot
fQotCiB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2NoZWR1bGVMYXllckZsdXNoKCkK
IHsKICAgICBpZiAoIW1fbGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFibGVkKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAoIW1fbGF5ZXJGbHVzaFRpbWVyLmlzQWN0aXZlKCkgfHwgbV9sYXllckZs
dXNoVGltZXIubmV4dEZpcmVJbnRlcnZhbCgpID4gMCkKKyAgICBpZiAoIW1fbGF5ZXJGbHVzaFRp
bWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fbGF5ZXJGbHVzaFRpbWVyLnN0YXJ0T25lU2hvdCgw
KTsKIH0KIApAQCAtMTA4LDE4ICs4NywxMyBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dDo6Y2FuY2VsUGVuZGluZ0xheWVyRmx1c2goKQogICAgIG1fbGF5ZXJGbHVzaFRpbWVyLnN0b3Ao
KTsKIH0KIAotdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNldFNob3VsZE5vdGlmeUFm
dGVyTmV4dFNjaGVkdWxlZExheWVyRmx1c2goYm9vbCBub3RpZnlBZnRlclNjaGVkdWxlZExheWVy
Rmx1c2gpCi17Ci0gICAgbV9ub3RpZnlBZnRlclNjaGVkdWxlZExheWVyRmx1c2ggPSBub3RpZnlB
ZnRlclNjaGVkdWxlZExheWVyRmx1c2g7Ci19Ci0KLXZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0OjpzZXRWaWV3T3ZlcmxheVJvb3RMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKiB2aWV3
T3ZlcmxheVJvb3RMYXllcikKK3ZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzZXRWaWV3
T3ZlcmxheVJvb3RMYXllcihHcmFwaGljc0xheWVyKiB2aWV3T3ZlcmxheVJvb3RMYXllcikKIHsK
LSAgICBtX3ZpZXdPdmVybGF5Um9vdExheWVyID0gdmlld092ZXJsYXlSb290TGF5ZXI7CisgICAg
TGF5ZXJUcmVlSG9zdDo6c2V0Vmlld092ZXJsYXlSb290TGF5ZXIodmlld092ZXJsYXlSb290TGF5
ZXIpOwogICAgIG1fY29vcmRpbmF0b3ItPnNldFZpZXdPdmVybGF5Um9vdExheWVyKHZpZXdPdmVy
bGF5Um9vdExheWVyKTsKIH0KIAotdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNldFJv
b3RDb21wb3NpdGluZ0xheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIp
Cit2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIo
R3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikKIHsKICAgICBtX2Nvb3JkaW5hdG9yLT5zZXRS
b290Q29tcG9zaXRpbmdMYXllcihncmFwaGljc0xheWVyKTsKIH0KQEAgLTEyOCw5ICsxMDIsOCBA
QCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6aW52YWxpZGF0ZSgpCiB7CiAgICAgY2Fu
Y2VsUGVuZGluZ0xheWVyRmx1c2goKTsKIAotICAgIEFTU0VSVChtX2lzVmFsaWQpOwogICAgIG1f
Y29vcmRpbmF0b3ItPmNsZWFyUm9vdExheWVyKCk7Ci0gICAgbV9pc1ZhbGlkID0gZmFsc2U7Cisg
ICAgTGF5ZXJUcmVlSG9zdDo6aW52YWxpZGF0ZSgpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdDo6Zm9yY2VSZXBhaW50KCkKQEAgLTE1OCw3ICsxMzEsNyBAQCBib29sIENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdDo6Zm9yY2VSZXBhaW50QXN5bmModWludDY0X3QgY2FsbGJhY2tJ
RCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6
OnNpemVEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgbmV3U2l6ZSkKK3ZvaWQgQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzaXplRGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIG5ld1Np
emUpCiB7CiAgICAgbV9jb29yZGluYXRvci0+c2l6ZURpZENoYW5nZShuZXdTaXplKTsKICAgICBz
Y2hlZHVsZUxheWVyRmx1c2goKTsKQEAgLTE4OSw3ICsxNjIsNyBAQCB2b2lkIENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdDo6ZGlkRmx1c2hSb290TGF5ZXIoY29uc3QgRmxvYXRSZWN0JiB2aXNpYmxl
Q29udGVudAogICAgICAgICBtX3ZpZXdPdmVybGF5Um9vdExheWVyLT5mbHVzaENvbXBvc2l0aW5n
U3RhdGUodmlzaWJsZUNvbnRlbnRSZWN0LCAgbV93ZWJQYWdlLm1haW5GcmFtZSgpLT52aWV3KCkt
PnZpZXdwb3J0SXNTdGFibGUoKSk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpwZXJmb3JtU2NoZWR1bGVkTGF5ZXJGbHVzaCgpCit2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdDo6bGF5ZXJGbHVzaFRpbWVyRmlyZWQoKQogewogICAgIGlmIChtX2lzU3VzcGVuZGVkIHx8
IG1faXNXYWl0aW5nRm9yUmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsKQEAgLTIwNywyOSArMTgw
LDM0IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpwZXJmb3JtU2NoZWR1bGVkTGF5
ZXJGbHVzaCgpCiAgICAgfQogCiAgICAgaWYgKG1fbm90aWZ5QWZ0ZXJTY2hlZHVsZWRMYXllckZs
dXNoICYmIGRpZFN5bmMpIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8Q29vcmRpbmF0ZWREcmF3aW5n
QXJlYSo+KG1fd2ViUGFnZS5kcmF3aW5nQXJlYSgpKS0+bGF5ZXJIb3N0RGlkRmx1c2hMYXllcnMo
KTsKKyAgICAgICAgbV93ZWJQYWdlLmRyYXdpbmdBcmVhKCktPmxheWVySG9zdERpZEZsdXNoTGF5
ZXJzKCk7CiAgICAgICAgIG1fbm90aWZ5QWZ0ZXJTY2hlZHVsZWRMYXllckZsdXNoID0gZmFsc2U7
CiAgICAgfQogfQogCi12b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6bGF5ZXJGbHVzaFRp
bWVyRmlyZWQoKQotewotICAgIHBlcmZvcm1TY2hlZHVsZWRMYXllckZsdXNoKCk7Ci19Ci0KIHZv
aWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpwYWludExheWVyQ29udGVudHMoY29uc3QgR3Jh
cGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmKQogewogfQogCi12
b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y29tbWl0U2NlbmVTdGF0ZShjb25zdCBXZWJD
b3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmIHN0YXRlKQordm9pZCBDb29yZGluYXRlZExh
eWVyVHJlZUhvc3Q6OmNvbW1pdFNjZW5lU3RhdGUoY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0
YXRlJiBzdGF0ZSkKIHsKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNT
KQogICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQ
cm94eTo6Q29tbWl0Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlKHN0YXRlKSk7CisjZW5kaWYKICAg
ICBtX2lzV2FpdGluZ0ZvclJlbmRlcmVyID0gdHJ1ZTsKIH0KIAogUmVmUHRyPENvb3JkaW5hdGVk
U3VyZmFjZT4gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjcmVhdGVDb29yZGluYXRlZFN1cmZh
Y2UoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncyBmbGFncykK
IHsKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgcmV0dXJuIFRo
cmVhZFNhZmVDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShzaXplLCBmbGFncyk7CisjZWxpZiBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQogICAgIHJldHVybiBXZWJDb29y
ZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShzaXplLCBmbGFncyk7CisjZWxzZQorICAgIFVOVVNFRF9Q
QVJBTShzaXplKTsKKyAgICBVTlVTRURfUEFSQU0oZmxhZ3MpOworICAgIHJldHVybiBudWxscHRy
OworI2VuZGlmCiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZXZpY2VPclBh
Z2VTY2FsZUZhY3RvckNoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaAppbmRleCA0ZDg4NTk5MC4uYTE0NjY0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0LmgKQEAgLTIzLDE0ICsyMywxMiBAQAogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNT
KQogCi0jaW5jbHVkZSAiTGF5ZXJUcmVlQ29udGV4dC5oIgogI2luY2x1ZGUgIkxheWVyVHJlZUhv
c3QuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJGYWN0b3J5Lmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29vcmRpbmF0ZWRTdXJmYWNlOwor
Y2xhc3MgR3JhcGhpY3NMYXllckZhY3Rvcnk7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NDMsMjggKzQxLDI3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPENvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdD4gY3JlYXRlKFdlYlBhZ2UmKTsKICAgICB2aXJ0dWFsIH5Db29yZGluYXRlZExheWVy
VHJlZUhvc3QoKTsKIAotICAgIGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGxheWVyVHJlZUNvbnRl
eHQoKSBvdmVycmlkZSB7IHJldHVybiBtX2xheWVyVHJlZUNvbnRleHQ7IH0KLSAgICB2b2lkIHNl
dExheWVyRmx1c2hTY2hlZHVsaW5nRW5hYmxlZChib29sKSBvdmVycmlkZTsKK3Byb3RlY3RlZDoK
KyAgICBleHBsaWNpdCBDb29yZGluYXRlZExheWVyVHJlZUhvc3QoV2ViUGFnZSYpOworCiAgICAg
dm9pZCBzY2hlZHVsZUxheWVyRmx1c2goKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldFNob3VsZE5v
dGlmeUFmdGVyTmV4dFNjaGVkdWxlZExheWVyRmx1c2goYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBjYW5jZWxQZW5kaW5nTGF5ZXJGbHVzaCgpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Um9vdENv
bXBvc2l0aW5nTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwogICAgIHZv
aWQgaW52YWxpZGF0ZSgpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBzZXROb25Db21wb3NpdGVkQ29u
dGVudHNOZWVkRGlzcGxheSgpIG92ZXJyaWRlIHsgfQotICAgIHZvaWQgc2V0Tm9uQ29tcG9zaXRl
ZENvbnRlbnRzTmVlZERpc3BsYXlJblJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJy
aWRlIHsgfQotICAgIHZvaWQgc2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmKSBvdmVycmlkZSB7IH0KICAgICB2b2lkIGZvcmNlUmVwYWludCgpIG92ZXJy
aWRlOwogICAgIGJvb2wgZm9yY2VSZXBhaW50QXN5bmModWludDY0X3QgY2FsbGJhY2tJRCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBzaXplRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG5l
d1NpemUpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBwYXVzZVJlbmRlcmluZygpIG92ZXJyaWRlIHsg
bV9pc1N1c3BlbmRlZCA9IHRydWU7IH0KLSAgICB2b2lkIHJlc3VtZVJlbmRlcmluZygpIG92ZXJy
aWRlIHsgbV9pc1N1c3BlbmRlZCA9IGZhbHNlOyBzY2hlZHVsZUxheWVyRmx1c2goKTsgfQogICAg
IHZvaWQgZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBwYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKSBvdmVycmlkZTsKIAotICAgIHZv
aWQgZGlkUmVjZWl2ZUNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VmlzaWJs
ZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFBvaW50Jik7CisgICAgdm9pZCByZW5kZXJOZXh0RnJhbWUoKTsKKyAgICB2b2lkIHB1cmdl
QmFja2luZ1N0b3JlcygpOworICAgIHZvaWQgY29tbWl0U2Nyb2xsT2Zmc2V0KHVpbnQzMl90IGxh
eWVySUQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG9mZnNldCk7CisKICAgICBXZWJDb3JlOjpH
cmFwaGljc0xheWVyRmFjdG9yeSogZ3JhcGhpY3NMYXllckZhY3RvcnkoKSBvdmVycmlkZTsKLSAg
ICBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqIG1haW5Db250ZW50c0xheWVyKCk7
CiAKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCiAgICAgdm9pZCBzY2hlZHVs
ZUFuaW1hdGlvbigpIG92ZXJyaWRlOwpAQCAtNzIsNDIgKzY5LDI1IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgc2V0Vmlld092ZXJsYXlSb290TGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIG92
ZXJyaWRlOwogCi0gICAgc3RhdGljIFJlZlB0cjxXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U+
IGNyZWF0ZUNvb3JkaW5hdGVkU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29y
ZTo6Q29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncyk7Ci0KLXByb3RlY3RlZDoKLSAgICBleHBsaWNp
dCBDb29yZGluYXRlZExheWVyVHJlZUhvc3QoV2ViUGFnZSYpOwotCi1wcml2YXRlOgotICAgIC8v
IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdAotICAgIHZvaWQgY2FuY2VsUGVuZGluZ0xheWVyRmx1
c2goKTsKLSAgICB2b2lkIHBlcmZvcm1TY2hlZHVsZWRMYXllckZsdXNoKCk7Ci0gICAgdm9pZCBz
ZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UG9pbnQmKTsKLSAgICB2b2lkIHJlbmRlck5leHRGcmFtZSgpOwotICAgIHZv
aWQgcHVyZ2VCYWNraW5nU3RvcmVzKCk7Ci0gICAgdm9pZCBjb21taXRTY3JvbGxPZmZzZXQodWlu
dDMyX3QgbGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgb2Zmc2V0KTsKLQotICAgIHZv
aWQgbGF5ZXJGbHVzaFRpbWVyRmlyZWQoKTsKLQogICAgIC8vIENvbXBvc2l0aW5nQ29vcmRpbmF0
b3I6OkNsaWVudAogICAgIHZvaWQgZGlkRmx1c2hSb290TGF5ZXIoY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiB2aXNpYmxlQ29udGVudFJlY3QpIG92ZXJyaWRlOwogICAgIHZvaWQgbm90aWZ5Rmx1
c2hSZXF1aXJlZCgpIG92ZXJyaWRlIHsgc2NoZWR1bGVMYXllckZsdXNoKCk7IH07CiAgICAgdm9p
ZCBjb21taXRTY2VuZVN0YXRlKGNvbnN0IFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0
ZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgcGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXIqLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBjbGlwUmVjdCkgb3ZlcnJpZGU7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6Q29tcG9zaXRpbmdDb29yZGluYXRvcj4gbV9jb29yZGluYXRvcjsKLQotICAgIGJvb2wg
bV9ub3RpZnlBZnRlclNjaGVkdWxlZExheWVyRmx1c2g7Ci0gICAgYm9vbCBtX2lzVmFsaWQ7Ci0g
ICAgYm9vbCBtX2lzU3VzcGVuZGVkOwotICAgIGJvb2wgbV9pc1dhaXRpbmdGb3JSZW5kZXJlcjsK
K3ByaXZhdGU6CisgICAgdm9pZCBsYXllckZsdXNoVGltZXJGaXJlZCgpOwogCi0gICAgTGF5ZXJU
cmVlQ29udGV4dCBtX2xheWVyVHJlZUNvbnRleHQ7CisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTX01VTFRJUFJPQ0VTUykKKyAgICB2b2lkIGRpZFJlY2VpdmVDb29yZGluYXRlZExheWVyVHJl
ZUhvc3RNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVy
cmlkZTsKKyNlbmRpZgogCi0gICAgV2ViQ29yZTo6VGltZXIgbV9sYXllckZsdXNoVGltZXI7Ci0g
ICAgYm9vbCBtX2xheWVyRmx1c2hTY2hlZHVsaW5nRW5hYmxlZDsKLSAgICB1aW50NjRfdCBtX2Zv
cmNlUmVwYWludEFzeW5jQ2FsbGJhY2tJRDsKKyAgICBzdGF0aWMgUmVmUHRyPFdlYkNvcmU6OkNv
b3JkaW5hdGVkU3VyZmFjZT4gY3JlYXRlQ29vcmRpbmF0ZWRTdXJmYWNlKGNvbnN0IFdlYkNvcmU6
OkludFNpemUmLCBXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzKTsKIAotICAgIFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXIqIG1fdmlld092ZXJsYXlSb290TGF5ZXI7CisgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OkNvbXBvc2l0aW5nQ29vcmRpbmF0b3I+IG1fY29vcmRpbmF0b3I7
CisgICAgYm9vbCBtX2lzV2FpdGluZ0ZvclJlbmRlcmVyIHsgdHJ1ZSB9OworICAgIHVpbnQ2NF90
IG1fZm9yY2VSZXBhaW50QXN5bmNDYWxsYmFja0lEIHsgMCB9OworICAgIFJ1bkxvb3A6OlRpbWVy
PENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdD4gbV9sYXllckZsdXNoVGltZXI7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAppbmRleCA2MzE3ZGEz
Li45YTAzYzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCkBAIC0zMCwxOSArMzAsOSBA
QAogI2luY2x1ZGUgIlRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgiCiAKICNpZiBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCi0KLSNpbmNsdWRlICJEcmF3aW5nQXJl
YUltcGwuaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlRocmVhZFNh
ZmVDb29yZGluYXRlZFN1cmZhY2UuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCi0jaW5jbHVkZSA8
V2ViQ29yZS9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Nv
b3JkaW5hdGVkR3JhcGhpY3NTdGF0ZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3ND
b250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NYWluRnJhbWUuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL1BhZ2UuaD4KLSNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIAogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKQEAgLTU4LDY2ICs0OCwxMCBAQCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdDo6flRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KCkKIH0KIAogVGhy
ZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OlRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0KFdlYlBhZ2UmIHdlYlBhZ2UpCi0gICAgOiBMYXllclRyZWVIb3N0KHdlYlBhZ2UpCi0g
ICAgLCBtX2ZvcmNlUmVwYWludEFzeW5jQ2FsbGJhY2tJRCgwKQotICAgICwgbV9ub3RpZnlBZnRl
clNjaGVkdWxlZExheWVyRmx1c2goZmFsc2UpCi0gICAgLCBtX2lzU3VzcGVuZGVkKGZhbHNlKQot
ICAgICwgbV9pc1dhaXRpbmdGb3JSZW5kZXJlcihmYWxzZSkKLSAgICAsIG1fbGF5ZXJGbHVzaFRp
bWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0OjpwZXJmb3JtU2NoZWR1bGVkTGF5ZXJGbHVzaCkKLSAgICAsIG1fbGF5ZXJGbHVzaFNjaGVk
dWxpbmdFbmFibGVkKHRydWUpCi17Ci0gICAgbV9jb29yZGluYXRvciA9IHN0ZDo6bWFrZV91bmlx
dWU8Q29tcG9zaXRpbmdDb29yZGluYXRvcj4obV93ZWJQYWdlLmNvcmVQYWdlKCksIHRoaXMpOwot
Ci0gICAgbV9jb29yZGluYXRvci0+Y3JlYXRlUm9vdExheWVyKG1fd2ViUGFnZS5zaXplKCkpOwot
Ci0gICAgQ29vcmRpbmF0ZWRTdXJmYWNlOjpzZXRGYWN0b3J5KGNyZWF0ZUNvb3JkaW5hdGVkU3Vy
ZmFjZSk7Ci0KLSAgICBtX2NvbXBvc2l0b3IgPSBUaHJlYWRlZENvbXBvc2l0b3I6OmNyZWF0ZSh0
aGlzKTsKLSAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKLX0KLQotUmVmUHRyPENvb3JkaW5hdGVk
U3VyZmFjZT4gVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0ZUNvb3JkaW5h
dGVkU3VyZmFjZShjb25zdCBJbnRTaXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdz
IGZsYWdzKQotewotICAgIHJldHVybiBUaHJlYWRTYWZlQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVh
dGUoc2l6ZSwgZmxhZ3MpOwotfQotCi12b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0OjpzY2hlZHVsZUxheWVyRmx1c2goKQotewotICAgIGlmICghbV9sYXllckZsdXNoU2NoZWR1
bGluZ0VuYWJsZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghbV9sYXllckZsdXNoVGlt
ZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV9sYXllckZsdXNoVGltZXIuc3RhcnRPbmVTaG90KDAp
OwotfQotCi12b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzZXRMYXllckZs
dXNoU2NoZWR1bGluZ0VuYWJsZWQoYm9vbCBsYXllckZsdXNoaW5nRW5hYmxlZCkKLXsKLSAgICBp
ZiAobV9sYXllckZsdXNoU2NoZWR1bGluZ0VuYWJsZWQgPT0gbGF5ZXJGbHVzaGluZ0VuYWJsZWQp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIG1fbGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFibGVkID0g
bGF5ZXJGbHVzaGluZ0VuYWJsZWQ7Ci0KLSAgICBpZiAobV9sYXllckZsdXNoU2NoZWR1bGluZ0Vu
YWJsZWQpIHsKLSAgICAgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBjYW5jZWxQZW5kaW5nTGF5ZXJGbHVzaCgpOwotfQotCi12b2lkIFRocmVh
ZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzZXRTaG91bGROb3RpZnlBZnRlck5leHRTY2hl
ZHVsZWRMYXllckZsdXNoKGJvb2wgbm90aWZ5QWZ0ZXJTY2hlZHVsZWRMYXllckZsdXNoKQorICAg
IDogQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KHdlYlBhZ2UpCisgICAgLCBtX2NvbXBvc2l0b3JD
bGllbnQoKnRoaXMpCisgICAgLCBtX2NvbXBvc2l0b3IoVGhyZWFkZWRDb21wb3NpdG9yOjpjcmVh
dGUoJm1fY29tcG9zaXRvckNsaWVudCkpCiB7Ci0gICAgbV9ub3RpZnlBZnRlclNjaGVkdWxlZExh
eWVyRmx1c2ggPSBub3RpZnlBZnRlclNjaGVkdWxlZExheWVyRmx1c2g7Ci19Ci0KLXZvaWQgVGhy
ZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNldFJvb3RDb21wb3NpdGluZ0xheWVyKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIpCi17Ci0gICAgbV9jb29yZGluYXRv
ci0+c2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoZ3JhcGhpY3NMYXllcik7Ci19Ci0KLXZvaWQgVGhy
ZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmludmFsaWRhdGUoKQotewotICAgIG5vdElt
cGxlbWVudGVkKCk7CiB9CiAKIHZvaWQgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6
OnNjcm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0
KQpAQCAtMTI2LDIwICs2MCw2IEBAIHZvaWQgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhv
c3Q6OnNjcm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50cyhjb25zdCBXZWJDb3JlCiAgICAgc2NoZWR1
bGVMYXllckZsdXNoKCk7CiB9CiAKLXZvaWQgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhv
c3Q6OmZvcmNlUmVwYWludCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotYm9vbCBU
aHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Zm9yY2VSZXBhaW50QXN5bmModWludDY0
X3QgY2FsbGJhY2tJRCkKLXsKLSAgICAvLyBXZSBleHBlY3QgdGhlIFVJIHByb2Nlc3MgdG8gbm90
IHJlcXVpcmUgYSBuZXcgcmVwYWludCB1bnRpbCB0aGUgcHJldmlvdXMgb25lIGhhcyBmaW5pc2hl
ZC4KLSAgICBBU1NFUlQoIW1fZm9yY2VSZXBhaW50QXN5bmNDYWxsYmFja0lEKTsKLSAgICBtX2Zv
cmNlUmVwYWludEFzeW5jQ2FsbGJhY2tJRCA9IGNhbGxiYWNrSUQ7Ci0gICAgc2NoZWR1bGVMYXll
ckZsdXNoKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHZvaWQgVGhyZWFkZWRDb29yZGluYXRl
ZExheWVyVHJlZUhvc3Q6OmNvbnRlbnRzU2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgbmV3U2l6ZSkKIHsKICAgICBtX2NvbXBvc2l0b3ItPmRpZENoYW5nZUNvbnRlbnRzU2l6ZShu
ZXdTaXplKTsKQEAgLTE0NywyOSArNjcsMTMgQEAgdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdDo6Y29udGVudHNTaXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXoKIAog
dm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGV2aWNlT3JQYWdlU2NhbGVG
YWN0b3JDaGFuZ2VkKCkKIHsKLSAgICBtX2Nvb3JkaW5hdG9yLT5kZXZpY2VPclBhZ2VTY2FsZUZh
Y3RvckNoYW5nZWQoKTsKKyAgICBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRldmljZU9yUGFn
ZVNjYWxlRmFjdG9yQ2hhbmdlZCgpOwogICAgIG1fY29tcG9zaXRvci0+c2V0RGV2aWNlU2NhbGVG
YWN0b3IobV93ZWJQYWdlLmRldmljZVNjYWxlRmFjdG9yKCkpOwogfQogCi12b2lkIFRocmVhZGVk
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpwYXVzZVJlbmRlcmluZygpCi17Ci0gICAgbV9pc1N1
c3BlbmRlZCA9IHRydWU7Ci19Ci0KLXZvaWQgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhv
c3Q6OnJlc3VtZVJlbmRlcmluZygpCi17Ci0gICAgbV9pc1N1c3BlbmRlZCA9IGZhbHNlOwotICAg
IHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwotfQotCi1HcmFwaGljc0xheWVyRmFjdG9yeSogVGhyZWFk
ZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkKLXsKLSAg
ICByZXR1cm4gbV9jb29yZGluYXRvci5nZXQoKTsKLX0KLQotdm9pZCBUaHJlYWRlZENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdDo6c2l6ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBz
aXplKQordm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2l6ZURpZENoYW5n
ZShjb25zdCBJbnRTaXplJiBzaXplKQogewotICAgIG1fY29vcmRpbmF0b3ItPnNpemVEaWRDaGFu
Z2Uoc2l6ZSk7CisgICAgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzaXplRGlkQ2hhbmdlKHNp
emUpOwogICAgIG1fY29tcG9zaXRvci0+ZGlkQ2hhbmdlVmlld3BvcnRTaXplKHNpemUpOwogfQog
CkBAIC0xNzgsMjEgKzgyLDExIEBAIHZvaWQgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhv
c3Q6OmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlCiAgICAgbV9jb21w
b3NpdG9yLT5kaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZShhdHRyKTsKIH0KIAotdm9pZCBUaHJl
YWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y29tcG9zaXRvckRpZEZsdXNoTGF5ZXJzKCkK
LXsKLSAgICBzdGF0aWNfY2FzdDxEcmF3aW5nQXJlYUltcGwqPihtX3dlYlBhZ2UuZHJhd2luZ0Fy
ZWEoKSktPmxheWVySG9zdERpZEZsdXNoTGF5ZXJzKCk7Ci19Ci0KIHZvaWQgVGhyZWFkZWRDb29y
ZGluYXRlZExheWVyVHJlZUhvc3Q6OmRpZFNjYWxlRmFjdG9yQ2hhbmdlZChmbG9hdCBzY2FsZSwg
Y29uc3QgSW50UG9pbnQmIG9yaWdpbikKIHsKICAgICBtX3dlYlBhZ2Uuc2NhbGVQYWdlKHNjYWxl
LCBvcmlnaW4pOwogfQogCi12b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpz
ZXRWaWV3T3ZlcmxheVJvb3RMYXllcihHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyKQotewot
ICAgIG1fY29vcmRpbmF0b3ItPnNldFZpZXdPdmVybGF5Um9vdExheWVyKGdyYXBoaWNzTGF5ZXIp
OwotfQotCiAjaWYgUExBVEZPUk0oR1RLKQogdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdDo6c2V0TmF0aXZlU3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKHVpbnQ2NF90IGhh
bmRsZSkKIHsKQEAgLTIwMiwyMyArOTYsOSBAQCB2b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0OjpzZXROYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcodWludAogfQog
I2VuZGlmCiAKLSNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCi12b2lkIFRocmVh
ZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzY2hlZHVsZUFuaW1hdGlvbigpCi17Ci0gICAg
aWYgKG1faXNXYWl0aW5nRm9yUmVuZGVyZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICht
X2xheWVyRmx1c2hUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2xh
eWVyRmx1c2hUaW1lci5zdGFydE9uZVNob3QobV9jb29yZGluYXRvci0+bmV4dEFuaW1hdGlvblNl
cnZpY2VUaW1lKCkpOwotICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwotfQotI2VuZGlmCi0KIHZv
aWQgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNldFZpc2libGVDb250ZW50c1Jl
Y3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVj
dG9yLCBmbG9hdCBzY2FsZSkKIHsKLSAgICBtX2Nvb3JkaW5hdG9yLT5zZXRWaXNpYmxlQ29udGVu
dHNSZWN0KHJlY3QsIHRyYWplY3RvcnlWZWN0b3IpOworICAgIENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChyZWN0LCB0cmFqZWN0b3J5VmVjdG9yKTsKICAg
ICBpZiAobV9sYXN0U2Nyb2xsUG9zaXRpb24gIT0gcm91bmRlZEludFBvaW50KHJlY3QubG9jYXRp
b24oKSkpIHsKICAgICAgICAgbV9sYXN0U2Nyb2xsUG9zaXRpb24gPSByb3VuZGVkSW50UG9pbnQo
cmVjdC5sb2NhdGlvbigpKTsKIApAQCAtMjMwLDYxICsxMTAsMTQgQEAgdm9pZCBUaHJlYWRlZENv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBGbG9h
dFJlY3QmIHIKICAgICAgICAgbV9sYXN0U2NhbGVGYWN0b3IgPSBzY2FsZTsKICAgICAgICAgZGlk
U2NhbGVGYWN0b3JDaGFuZ2VkKG1fbGFzdFNjYWxlRmFjdG9yLCBtX2xhc3RTY3JvbGxQb3NpdGlv
bik7CiAgICAgfQotCi0gICAgc2NoZWR1bGVMYXllckZsdXNoKCk7Ci19Ci0KLXZvaWQgVGhyZWFk
ZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNhbmNlbFBlbmRpbmdMYXllckZsdXNoKCkKLXsK
LSAgICBtX2xheWVyRmx1c2hUaW1lci5zdG9wKCk7Ci19Ci0KLXZvaWQgVGhyZWFkZWRDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Q6OnBlcmZvcm1TY2hlZHVsZWRMYXllckZsdXNoKCkKLXsKLSAgICBp
ZiAobV9pc1N1c3BlbmRlZCB8fCBtX2lzV2FpdGluZ0ZvclJlbmRlcmVyKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBtX2Nvb3JkaW5hdG9yLT5zeW5jRGlzcGxheVN0YXRlKCk7Ci0gICAgYm9vbCBk
aWRTeW5jID0gbV9jb29yZGluYXRvci0+Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCk7Ci0KLSAg
ICBpZiAobV9ub3RpZnlBZnRlclNjaGVkdWxlZExheWVyRmx1c2ggJiYgZGlkU3luYykgewotICAg
ICAgICBjb21wb3NpdG9yRGlkRmx1c2hMYXllcnMoKTsKLSAgICAgICAgbV9ub3RpZnlBZnRlclNj
aGVkdWxlZExheWVyRmx1c2ggPSBmYWxzZTsKLSAgICB9Ci19Ci0KLXZvaWQgVGhyZWFkZWRDb29y
ZGluYXRlZExheWVyVHJlZUhvc3Q6OnB1cmdlQmFja2luZ1N0b3JlcygpCi17Ci0gICAgbV9jb29y
ZGluYXRvci0+cHVyZ2VCYWNraW5nU3RvcmVzKCk7Ci19Ci0KLXZvaWQgVGhyZWFkZWRDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Q6OnJlbmRlck5leHRGcmFtZSgpCi17Ci0gICAgbV9pc1dhaXRpbmdG
b3JSZW5kZXJlciA9IGZhbHNlOwotICAgIG1fY29vcmRpbmF0b3ItPnJlbmRlck5leHRGcmFtZSgp
OwotICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwotfQotCi12b2lkIFRocmVhZGVkQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0Ojpjb21taXRTY3JvbGxPZmZzZXQodWludDMyX3QgbGF5ZXJJRCwgY29u
c3QgSW50U2l6ZSYgb2Zmc2V0KQotewotICAgIG1fY29vcmRpbmF0b3ItPmNvbW1pdFNjcm9sbE9m
ZnNldChsYXllcklELCBvZmZzZXQpOwotfQotCi12b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0Ojpub3RpZnlGbHVzaFJlcXVpcmVkKCkKLXsKLSAgICBzY2hlZHVsZUxheWVyRmx1
c2goKTsKIH0KIAogdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y29tbWl0
U2NlbmVTdGF0ZShjb25zdCBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmIHN0YXRlKQogewotICAg
IG1faXNXYWl0aW5nRm9yUmVuZGVyZXIgPSB0cnVlOworICAgIENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdDo6Y29tbWl0U2NlbmVTdGF0ZShzdGF0ZSk7CiAgICAgbV9jb21wb3NpdG9yLT51cGRhdGVT
Y2VuZVN0YXRlKHN0YXRlKTsKIH0KIAotdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBJbnRSZWN0JikKLXsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
ICNlbmRpZiAvLyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Qu
aAppbmRleCA1NGRjMjE0Li40Nzc3MGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKQEAgLTMw
LDI3ICszMCwxMiBAQAogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQog
Ci0jaW5jbHVkZSAiTGF5ZXJUcmVlQ29udGV4dC5oIgotI2luY2x1ZGUgIkxheWVyVHJlZUhvc3Qu
aCIKKyNpbmNsdWRlICJDb29yZGluYXRlZExheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJUaHJl
YWRlZENvbXBvc2l0b3IuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0NvbXBvc2l0aW5nQ29vcmRpbmF0
b3IuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UG9pbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L0Zsb2F0UmVjdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSW50UG9pbnQuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL0ludFJlY3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemUuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL1BhZ2VPdmVybGF5Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgotI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBDb29yZGluYXRlZFN1cmZhY2U7CiBjbGFzcyBHcmFwaGlj
c0NvbnRleHQ7CiBjbGFzcyBHcmFwaGljc0xheWVyOwotY2xhc3MgR3JhcGhpY3NMYXllckZhY3Rv
cnk7Ci1jbGFzcyBHcmFwaGljc0xheWVyRmFjdG9yeTsKLXN0cnVjdCBDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXJTdGF0ZTsKIHN0cnVjdCBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGU7CiB9CiAKQEAg
LTU4LDM0ICs0MywxOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViUGFnZTsKIAot
Y2xhc3MgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QgOiBwdWJsaWMgTGF5ZXJUcmVl
SG9zdCwgcHVibGljIFdlYkNvcmU6OkNvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OkNsaWVudCwgcHVi
bGljIFRocmVhZGVkQ29tcG9zaXRvcjo6Q2xpZW50IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworY2xhc3MgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QgZmluYWwgOiBwdWJs
aWMgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFRo
cmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0PiBjcmVhdGUoV2ViUGFnZSYpOwogICAgIHZp
cnR1YWwgflRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KCk7CiAKLSAgICBjb25zdCBM
YXllclRyZWVDb250ZXh0JiBsYXllclRyZWVDb250ZXh0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9s
YXllclRyZWVDb250ZXh0OyB9OwotCi0gICAgdm9pZCBzY2hlZHVsZUxheWVyRmx1c2goKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHNldExheWVyRmx1c2hTY2hlZHVsaW5nRW5hYmxlZChib29sKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHNldFNob3VsZE5vdGlmeUFmdGVyTmV4dFNjaGVkdWxlZExheWVyRmx1
c2goYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRSb290Q29tcG9zaXRpbmdMYXllcihXZWJD
b3JlOjpHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBpbnZhbGlkYXRlKCkgb3Zl
cnJpZGU7Citwcml2YXRlOgorICAgIGV4cGxpY2l0IFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0KFdlYlBhZ2UmKTsKIAotICAgIHZvaWQgc2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVl
ZERpc3BsYXkoKSBvdmVycmlkZSB7IH07Ci0gICAgdm9pZCBzZXROb25Db21wb3NpdGVkQ29udGVu
dHNOZWVkRGlzcGxheUluUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGUgeyB9
OwogICAgIHZvaWQgc2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIHNjcm9sbFJlY3QpIG92ZXJyaWRlOwotICAgIHZvaWQgZm9yY2VSZXBhaW50KCkgb3Zl
cnJpZGU7Ci0gICAgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyh1aW50NjRfdCAvKmNhbGxiYWNrSUQq
Lykgb3ZlcnJpZGU7CiAgICAgdm9pZCBzaXplRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNp
emUmKSBvdmVycmlkZTsKICAgICB2b2lkIGRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgp
IG92ZXJyaWRlOwogCi0gICAgdm9pZCBwYXVzZVJlbmRlcmluZygpIG92ZXJyaWRlOwotICAgIHZv
aWQgcmVzdW1lUmVuZGVyaW5nKCkgb3ZlcnJpZGU7Ci0KLSAgICBXZWJDb3JlOjpHcmFwaGljc0xh
eWVyRmFjdG9yeSogZ3JhcGhpY3NMYXllckZhY3RvcnkoKSBvdmVycmlkZTsKLSAgICB2b2lkIHBh
Z2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgpIG92ZXJyaWRlIHsgfTsKLQogICAgIHZv
aWQgY29udGVudHNTaXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmll
d3BvcnRBdHRyaWJ1dGVzJikgb3ZlcnJpZGU7CiAKQEAgLTkzLDU1ICs2Miw1MCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXROYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcodWludDY0X3Qp
IG92ZXJyaWRlOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUp
Ci0gICAgdm9pZCBzY2hlZHVsZUFuaW1hdGlvbigpIG92ZXJyaWRlOwotI2VuZGlmCi0KLSAgICB2
b2lkIHNldFZpZXdPdmVybGF5Um9vdExheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBvdmVy
cmlkZTsKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZT4gY3Jl
YXRlQ29vcmRpbmF0ZWRTdXJmYWNlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpD
b29yZGluYXRlZFN1cmZhY2U6OkZsYWdzKTsKLQotcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IFRo
cmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KFdlYlBhZ2UmKTsKLQotcHJpdmF0ZToKKyAg
ICBjbGFzcyBDb21wb3NpdG9yQ2xpZW50IGZpbmFsIDogcHVibGljIFRocmVhZGVkQ29tcG9zaXRv
cjo6Q2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIENvbXBvc2l0b3JDbGllbnQoVGhyZWFk
ZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QmIGxheWVyVHJlZUhvc3QpCisgICAgICAgICAgICA6
IG1fbGF5ZXJUcmVlSG9zdChsYXllclRyZWVIb3N0KQorICAgICAgICB7CisgICAgICAgIH0KKwor
ICAgIHByaXZhdGU6CisgICAgICAgIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHRyYWpl
Y3RvcnlWZWN0b3IsIGZsb2F0IHNjYWxlKSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAg
ICBtX2xheWVyVHJlZUhvc3Quc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChyZWN0LCB0cmFqZWN0b3J5
VmVjdG9yLCBzY2FsZSk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHB1cmdlQmFja2luZ1N0
b3JlcygpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC5w
dXJnZUJhY2tpbmdTdG9yZXMoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgcmVuZGVyTmV4
dEZyYW1lKCkgb3ZlcnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0
LnJlbmRlck5leHRGcmFtZSgpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBjb21taXRTY3Jv
bGxPZmZzZXQodWludDMyX3QgbGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgb2Zmc2V0
KSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QuY29tbWl0
U2Nyb2xsT2Zmc2V0KGxheWVySUQsIG9mZnNldCk7CisgICAgICAgIH0KKworICAgICAgICBUaHJl
YWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCYgbV9sYXllclRyZWVIb3N0OworICAgIH07CiAK
LSAgICB2b2lkIGNvbXBvc2l0b3JEaWRGbHVzaExheWVycygpOwogICAgIHZvaWQgZGlkU2NhbGVG
YWN0b3JDaGFuZ2VkKGZsb2F0IHNjYWxlLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgb3JpZ2lu
KTsKIAotICAgIHZvaWQgY2FuY2VsUGVuZGluZ0xheWVyRmx1c2goKTsKLSAgICB2b2lkIHBlcmZv
cm1TY2hlZHVsZWRMYXllckZsdXNoKCk7Ci0KLSAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBy
b290TGF5ZXIoKSB7IHJldHVybiBtX2Nvb3JkaW5hdG9yLT5yb290TGF5ZXIoKTsgfQotCi0gICAg
Ly8gVGhyZWFkZWRDb21wb3NpdG9yOjpDbGllbnQKLSAgICB2b2lkIHNldFZpc2libGVDb250ZW50
c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2lu
dCYsIGZsb2F0KSBvdmVycmlkZTsKLSAgICB2b2lkIHB1cmdlQmFja2luZ1N0b3JlcygpIG92ZXJy
aWRlOwotICAgIHZvaWQgcmVuZGVyTmV4dEZyYW1lKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjb21t
aXRTY3JvbGxPZmZzZXQodWludDMyX3QgbGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
b2Zmc2V0KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGZsb2F0KTsK
IAogICAgIC8vIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OkNsaWVudAogICAgIHZvaWQgZGlkRmx1
c2hSb290TGF5ZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGUgeyB9Ci0gICAg
dm9pZCBub3RpZnlGbHVzaFJlcXVpcmVkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21taXRTY2Vu
ZVN0YXRlKGNvbnN0IFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYpIG92ZXJyaWRl
OwotICAgIHZvaWQgcGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXIqLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBj
bGlwUmVjdCkgb3ZlcnJpZGU7Ci0KLSAgICBMYXllclRyZWVDb250ZXh0IG1fbGF5ZXJUcmVlQ29u
dGV4dDsKLSAgICB1aW50NjRfdCBtX2ZvcmNlUmVwYWludEFzeW5jQ2FsbGJhY2tJRDsKIAogICAg
IFdlYkNvcmU6OkludFBvaW50IG1fcHJldlNjcm9sbFBvc2l0aW9uOwotCi0gICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OkNvbXBvc2l0aW5nQ29vcmRpbmF0b3I+IG1fY29vcmRpbmF0b3I7Cisg
ICAgQ29tcG9zaXRvckNsaWVudCBtX2NvbXBvc2l0b3JDbGllbnQ7CiAgICAgUmVmUHRyPFRocmVh
ZGVkQ29tcG9zaXRvcj4gbV9jb21wb3NpdG9yOwotCi0gICAgYm9vbCBtX25vdGlmeUFmdGVyU2No
ZWR1bGVkTGF5ZXJGbHVzaDsKLSAgICBib29sIG1faXNTdXNwZW5kZWQ7Ci0gICAgYm9vbCBtX2lz
V2FpdGluZ0ZvclJlbmRlcmVyOwotCi0gICAgZmxvYXQgbV9sYXN0U2NhbGVGYWN0b3I7CisgICAg
ZmxvYXQgbV9sYXN0U2NhbGVGYWN0b3IgeyAxIH07CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9s
YXN0U2Nyb2xsUG9zaXRpb247Ci0KLSAgICBSdW5Mb29wOjpUaW1lcjxUaHJlYWRlZENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdD4gbV9sYXllckZsdXNoVGltZXI7Ci0gICAgYm9vbCBtX2xheWVyRmx1
c2hTY2hlZHVsaW5nRW5hYmxlZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAppbmRleCBiNDMy
YmJkLi5jMjlkNGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
RHJhd2luZ0FyZWEuaApAQCAtMTM4LDYgKzEzOCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlR2VvbWV0cnkoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdmlld1NpemUsIGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIGxheWVyUG9zaXRpb24sIGJvb2wgZmx1c2hTeW5jaHJvbm91c2x5
LCBjb25zdCBXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0JiBmZW5jZVBvcnQpIHsgfQogI2VuZGlmCiAK
KyAgICB2aXJ0dWFsIHZvaWQgbGF5ZXJIb3N0RGlkRmx1c2hMYXllcnMoKSB7IH07CisKIHByb3Rl
Y3RlZDoKICAgICBEcmF3aW5nQXJlYShEcmF3aW5nQXJlYVR5cGUsIFdlYlBhZ2UmKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1w
bC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5o
CmluZGV4IDZmMWY4NzQuLmU3YjYzNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmgKQEAgLTQ1LDggKzQ1LDYgQEAgcHVibGlj
OgogICAgIERyYXdpbmdBcmVhSW1wbChXZWJQYWdlJiwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycyYpOwogICAgIHZpcnR1YWwgfkRyYXdpbmdBcmVhSW1wbCgpOwogCi0gICAgdm9pZCBs
YXllckhvc3REaWRGbHVzaExheWVycygpOwotCiBwcml2YXRlOgogICAgIC8vIERyYXdpbmdBcmVh
CiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXkoKSBvdmVycmlkZTsKQEAgLTc1LDYgKzczLDggQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRlc3Ryb3lOYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRp
bmcoYm9vbCYpIG92ZXJyaWRlOwogI2VuZGlmCiAKKyAgICB2b2lkIGxheWVySG9zdERpZEZsdXNo
TGF5ZXJzKCkgb3ZlcnJpZGU7CisKICAgICAvLyBJUEMgbWVzc2FnZSBoYW5kbGVycy4KICAgICB2
b2lkIHVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRlKHVpbnQ2NF90IGJhY2tpbmdTdG9yZVN0YXRlSUQs
IGJvb2wgcmVzcG9uZEltbWVkaWF0ZWx5LCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciwgY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbE9mZnNldCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRVcGRhdGUoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmNwcAppbmRleCBkMmEx
NGY4Li4xMWRkMTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0xheWVyVHJlZUhvc3QuY3BwCkBAIC02Miw2ICs2MiwzOSBAQCBMYXllclRyZWVIb3N0OjpM
YXllclRyZWVIb3N0KFdlYlBhZ2UmIHdlYlBhZ2UpCiAKIExheWVyVHJlZUhvc3Q6On5MYXllclRy
ZWVIb3N0KCkKIHsKKyAgICBBU1NFUlQoIW1faXNWYWxpZCk7Cit9CisKK3ZvaWQgTGF5ZXJUcmVl
SG9zdDo6c2V0TGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFibGVkKGJvb2wgbGF5ZXJGbHVzaGluZ0Vu
YWJsZWQpCit7CisgICAgaWYgKG1fbGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFibGVkID09IGxheWVy
Rmx1c2hpbmdFbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2xheWVyRmx1c2hTY2hl
ZHVsaW5nRW5hYmxlZCA9IGxheWVyRmx1c2hpbmdFbmFibGVkOworCisgICAgaWYgKG1fbGF5ZXJG
bHVzaFNjaGVkdWxpbmdFbmFibGVkKSB7CisgICAgICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FuY2VsUGVuZGluZ0xheWVyRmx1c2goKTsK
K30KKwordm9pZCBMYXllclRyZWVIb3N0OjpwYXVzZVJlbmRlcmluZygpCit7CisgICAgbV9pc1N1
c3BlbmRlZCA9IHRydWU7Cit9CisKK3ZvaWQgTGF5ZXJUcmVlSG9zdDo6cmVzdW1lUmVuZGVyaW5n
KCkKK3sKKyAgICBtX2lzU3VzcGVuZGVkID0gZmFsc2U7CisgICAgc2NoZWR1bGVMYXllckZsdXNo
KCk7Cit9CisKK3ZvaWQgTGF5ZXJUcmVlSG9zdDo6aW52YWxpZGF0ZSgpCit7CisgICAgQVNTRVJU
KG1faXNWYWxpZCk7CisgICAgbV9pc1ZhbGlkID0gZmFsc2U7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xh
eWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRy
ZWVIb3N0LmgKaW5kZXggMjFiZjkxOS4uYmFlZTRhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oCkBAIC0yOSw4ICsyOSw3IEBACiAj
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKSB8fCBVU0UoVEVYVFVSRV9NQVBQRVIpCiAKICNp
bmNsdWRlICJMYXllclRyZWVDb250ZXh0LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgot
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTM5LDggKzM4
LDYgQEAgY2xhc3MgTWVzc2FnZURlY29kZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNs
YXNzIEZsb2F0UG9pbnQ7Ci1jbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3Mg
SW50U2l6ZTsKIGNsYXNzIEdyYXBoaWNzTGF5ZXI7CkBAIC01Miw3ICs0OSw2IEBAIHN0cnVjdCBW
aWV3cG9ydEF0dHJpYnV0ZXM7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBVcGRhdGVJ
bmZvOwogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgTGF5ZXJUcmVlSG9zdCA6IHB1YmxpYyBSZWZD
b3VudGVkPExheWVyVHJlZUhvc3Q+IHsKQEAgLTYwLDM0ICs1NiwzNiBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZlB0cjxMYXllclRyZWVIb3N0PiBjcmVhdGUoV2ViUGFnZSYpOwogICAgIHZpcnR1
YWwgfkxheWVyVHJlZUhvc3QoKTsKIAotICAgIHZpcnR1YWwgY29uc3QgTGF5ZXJUcmVlQ29udGV4
dCYgbGF5ZXJUcmVlQ29udGV4dCgpID0gMDsKKyAgICBjb25zdCBMYXllclRyZWVDb250ZXh0JiBs
YXllclRyZWVDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9sYXllclRyZWVDb250ZXh0OyB9Cisg
ICAgdm9pZCBzZXRMYXllckZsdXNoU2NoZWR1bGluZ0VuYWJsZWQoYm9vbCk7CisgICAgdm9pZCBz
ZXRTaG91bGROb3RpZnlBZnRlck5leHRTY2hlZHVsZWRMYXllckZsdXNoKGJvb2wgbm90aWZ5QWZ0
ZXJTY2hlZHVsZWRMYXllckZsdXNoKSB7IG1fbm90aWZ5QWZ0ZXJTY2hlZHVsZWRMYXllckZsdXNo
ID0gbm90aWZ5QWZ0ZXJTY2hlZHVsZWRMYXllckZsdXNoOyB9CisKICAgICB2aXJ0dWFsIHZvaWQg
c2NoZWR1bGVMYXllckZsdXNoKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllckZsdXNo
U2NoZWR1bGluZ0VuYWJsZWQoYm9vbCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRO
b3RpZnlBZnRlck5leHRTY2hlZHVsZWRMYXllckZsdXNoKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgY2FuY2VsUGVuZGluZ0xheWVyRmx1c2goKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNl
dFJvb3RDb21wb3NpdGluZ0xheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGludmFsaWRhdGUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRh
dGUoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXROb25Db21wb3NpdGVkQ29udGVudHNOZWVkRGlz
cGxheSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVl
ZERpc3BsYXlJblJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgc2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IHNjcm9sbFJlY3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9uQ29tcG9zaXRlZENvbnRl
bnRzTmVlZERpc3BsYXkoKSB7IH07CisgICAgdmlydHVhbCB2b2lkIHNldE5vbkNvbXBvc2l0ZWRD
b250ZW50c05lZWREaXNwbGF5SW5SZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSB7IH07Cisg
ICAgdmlydHVhbCB2b2lkIHNjcm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50cyhjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JikgeyB9OwogICAgIHZpcnR1YWwgdm9pZCBmb3JjZVJlcGFpbnQoKSA9IDA7CiAg
ICAgdmlydHVhbCBib29sIGZvcmNlUmVwYWludEFzeW5jKHVpbnQ2NF90IC8qY2FsbGJhY2tJRCov
KSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzaXplRGlkQ2hhbmdlKGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIG5ld1NpemUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGV2aWNl
T3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwYWdlQmFj
a2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGF1
c2VSZW5kZXJpbmcoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lUmVuZGVyaW5nKCkgeyB9
CisgICAgdmlydHVhbCB2b2lkIHBhdXNlUmVuZGVyaW5nKCk7CisgICAgdmlydHVhbCB2b2lkIHJl
c3VtZVJlbmRlcmluZygpOwogCi0gICAgdmlydHVhbCBXZWJDb3JlOjpHcmFwaGljc0xheWVyRmFj
dG9yeSogZ3JhcGhpY3NMYXllckZhY3RvcnkoKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBX
ZWJDb3JlOjpHcmFwaGljc0xheWVyRmFjdG9yeSogZ3JhcGhpY3NMYXllckZhY3RvcnkoKSB7IHJl
dHVybiBudWxscHRyOyB9CiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9D
RVNTKQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgPSAwOwogI2Vu
ZGlmCiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCi0gICAgdmlydHVh
bCB2b2lkIGNvbnRlbnRzU2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNv
cmU6OlZpZXdwb3J0QXR0cmlidXRlcyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29udGVudHNT
aXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgeyB9OworICAgIHZpcnR1YWwgdm9p
ZCBkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRy
aWJ1dGVzJikgeyB9OwogI2VuZGlmCiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpICYm
IEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKQEAgLTk1LDE1ICs5MywyMSBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogI2lmIFVTRShURVhUVVJFX01BUFBFUikgJiYgUExBVEZPUk0oR1RLKQot
ICAgIHZpcnR1YWwgdm9pZCBzZXROYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcodWlu
dDY0X3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmF0aXZlU3VyZmFjZUhhbmRsZUZvckNv
bXBvc2l0aW5nKHVpbnQ2NF90KSB7IH07CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRW
aWV3T3ZlcmxheVJvb3RMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzZXRWaWV3T3ZlcmxheVJvb3RMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVy
KiB2aWV3T3ZlcmxheVJvb3RMYXllcikgeyBtX3ZpZXdPdmVybGF5Um9vdExheWVyID0gdmlld092
ZXJsYXlSb290TGF5ZXI7IH0KIAogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IExheWVyVHJlZUhv
c3QoV2ViUGFnZSYpOwogCiAgICAgV2ViUGFnZSYgbV93ZWJQYWdlOworICAgIExheWVyVHJlZUNv
bnRleHQgbV9sYXllclRyZWVDb250ZXh0OworICAgIGJvb2wgbV9sYXllckZsdXNoU2NoZWR1bGlu
Z0VuYWJsZWQgeyB0cnVlIH07CisgICAgYm9vbCBtX25vdGlmeUFmdGVyU2NoZWR1bGVkTGF5ZXJG
bHVzaCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzU3VzcGVuZGVkIHsgZmFsc2UgfTsKKyAgICBi
b29sIG1faXNWYWxpZCB7IHRydWUgfTsKKyAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBtX3Zp
ZXdPdmVybGF5Um9vdExheWVyIHsgbnVsbHB0ciB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xh
eWVyVHJlZUhvc3RHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0
ay9MYXllclRyZWVIb3N0R3RrLmNwcAppbmRleCA1NTJhNzYyLi5iYTA3MWZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVl
SG9zdEd0ay5jcHAKQEAgLTEzMywxMCArMTMzLDYgQEAgUmVmPExheWVyVHJlZUhvc3RHdGs+IExh
eWVyVHJlZUhvc3RHdGs6OmNyZWF0ZShXZWJQYWdlJiB3ZWJQYWdlKQogCiBMYXllclRyZWVIb3N0
R3RrOjpMYXllclRyZWVIb3N0R3RrKFdlYlBhZ2UmIHdlYlBhZ2UpCiAgICAgOiBMYXllclRyZWVI
b3N0KHdlYlBhZ2UpCi0gICAgLCBtX2lzVmFsaWQodHJ1ZSkKLSAgICAsIG1fbm90aWZ5QWZ0ZXJT
Y2hlZHVsZWRMYXllckZsdXNoKGZhbHNlKQotICAgICwgbV9sYXllckZsdXNoU2NoZWR1bGluZ0Vu
YWJsZWQodHJ1ZSkKLSAgICAsIG1fdmlld092ZXJsYXlSb290TGF5ZXIobnVsbHB0cikKICAgICAs
IG1fcmVuZGVyRnJhbWVTY2hlZHVsZXIoc3RkOjpiaW5kKCZMYXllclRyZWVIb3N0R3RrOjpyZW5k
ZXJGcmFtZSwgdGhpcykpCiB7CiAgICAgbV9yb290TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVh
dGUoZ3JhcGhpY3NMYXllckZhY3RvcnkoKSwgKnRoaXMpOwpAQCAtMTgzLDIxICsxNzksMTAgQEAg
Ym9vbCBMYXllclRyZWVIb3N0R3RrOjptYWtlQ29udGV4dEN1cnJlbnQoKQogCiBMYXllclRyZWVI
b3N0R3RrOjp+TGF5ZXJUcmVlSG9zdEd0aygpCiB7Ci0gICAgQVNTRVJUKCFtX2lzVmFsaWQpOwog
ICAgIEFTU0VSVCghbV9yb290TGF5ZXIpOwogICAgIGNhbmNlbFBlbmRpbmdMYXllckZsdXNoKCk7
CiB9CiAKLWNvbnN0IExheWVyVHJlZUNvbnRleHQmIExheWVyVHJlZUhvc3RHdGs6OmxheWVyVHJl
ZUNvbnRleHQoKQotewotICAgIHJldHVybiBtX2xheWVyVHJlZUNvbnRleHQ7Ci19Ci0KLXZvaWQg
TGF5ZXJUcmVlSG9zdEd0azo6c2V0U2hvdWxkTm90aWZ5QWZ0ZXJOZXh0U2NoZWR1bGVkTGF5ZXJG
bHVzaChib29sIG5vdGlmeUFmdGVyU2NoZWR1bGVkTGF5ZXJGbHVzaCkKLXsKLSAgICBtX25vdGlm
eUFmdGVyU2NoZWR1bGVkTGF5ZXJGbHVzaCA9IG5vdGlmeUFmdGVyU2NoZWR1bGVkTGF5ZXJGbHVz
aDsKLX0KLQogdm9pZCBMYXllclRyZWVIb3N0R3RrOjpzZXRSb290Q29tcG9zaXRpbmdMYXllcihH
cmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyKQogewogICAgIG1fbm9uQ29tcG9zaXRlZENvbnRl
bnRMYXllci0+cmVtb3ZlQWxsQ2hpbGRyZW4oKTsKQEAgLTIxMSw4ICsxOTYsNiBAQCB2b2lkIExh
eWVyVHJlZUhvc3RHdGs6OnNldFJvb3RDb21wb3NpdGluZ0xheWVyKEdyYXBoaWNzTGF5ZXIqIGdy
YXBoaWNzTGF5ZXIpCiAKIHZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6aW52YWxpZGF0ZSgpCiB7Ci0g
ICAgQVNTRVJUKG1faXNWYWxpZCk7Ci0KICAgICAvLyBUaGlzIGNhbiB0cmlnZ2VyIGRlc3RydWN0
aW9uIG9mIEdMIG9iamVjdHMgc28gbGV0J3MgbWFrZSBzdXJlIHRoYXQKICAgICAvLyB3ZSBoYXZl
IHRoZSByaWdodCBhY3RpdmUgY29udGV4dAogICAgIGlmIChtX2NvbnRleHQpCkBAIC0yMjQsNyAr
MjA3LDcgQEAgdm9pZCBMYXllclRyZWVIb3N0R3RrOjppbnZhbGlkYXRlKCkKICAgICBtX3RleHR1
cmVNYXBwZXIgPSBudWxscHRyOwogCiAgICAgbV9jb250ZXh0ID0gbnVsbHB0cjsKLSAgICBtX2lz
VmFsaWQgPSBmYWxzZTsKKyAgICBMYXllclRyZWVIb3N0OjppbnZhbGlkYXRlKCk7CiB9CiAKIHZv
aWQgTGF5ZXJUcmVlSG9zdEd0azo6c2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVlZERpc3BsYXko
KQpAQCAtMzc4LDIxICszNjEsNiBAQCB2b2lkIExheWVyVHJlZUhvc3RHdGs6OnNjaGVkdWxlTGF5
ZXJGbHVzaCgpCiAgICAgbV9yZW5kZXJGcmFtZVNjaGVkdWxlci5zdGFydCgpOwogfQogCi12b2lk
IExheWVyVHJlZUhvc3RHdGs6OnNldExheWVyRmx1c2hTY2hlZHVsaW5nRW5hYmxlZChib29sIGxh
eWVyRmx1c2hpbmdFbmFibGVkKQotewotICAgIGlmIChtX2xheWVyRmx1c2hTY2hlZHVsaW5nRW5h
YmxlZCA9PSBsYXllckZsdXNoaW5nRW5hYmxlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9s
YXllckZsdXNoU2NoZWR1bGluZ0VuYWJsZWQgPSBsYXllckZsdXNoaW5nRW5hYmxlZDsKLQotICAg
IGlmIChtX2xheWVyRmx1c2hTY2hlZHVsaW5nRW5hYmxlZCkgewotICAgICAgICBzY2hlZHVsZUxh
eWVyRmx1c2goKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNhbmNlbFBlbmRpbmdM
YXllckZsdXNoKCk7Ci19Ci0KIHZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6cGFnZUJhY2tncm91bmRU
cmFuc3BhcmVuY3lDaGFuZ2VkKCkKIHsKICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXIt
PnNldENvbnRlbnRzT3BhcXVlKG1fd2ViUGFnZS5kcmF3c0JhY2tncm91bmQoKSk7CkBAIC00MDMs
OSArMzcxLDkgQEAgdm9pZCBMYXllclRyZWVIb3N0R3RrOjpjYW5jZWxQZW5kaW5nTGF5ZXJGbHVz
aCgpCiAgICAgbV9yZW5kZXJGcmFtZVNjaGVkdWxlci5zdG9wKCk7CiB9CiAKLXZvaWQgTGF5ZXJU
cmVlSG9zdEd0azo6c2V0Vmlld092ZXJsYXlSb290TGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXll
ciogdmlld092ZXJsYXlSb290TGF5ZXIpCit2b2lkIExheWVyVHJlZUhvc3RHdGs6OnNldFZpZXdP
dmVybGF5Um9vdExheWVyKEdyYXBoaWNzTGF5ZXIqIHZpZXdPdmVybGF5Um9vdExheWVyKQogewot
ICAgIG1fdmlld092ZXJsYXlSb290TGF5ZXIgPSB2aWV3T3ZlcmxheVJvb3RMYXllcjsKKyAgICBM
YXllclRyZWVIb3N0OjpzZXRWaWV3T3ZlcmxheVJvb3RMYXllcih2aWV3T3ZlcmxheVJvb3RMYXll
cik7CiAgICAgaWYgKG1fdmlld092ZXJsYXlSb290TGF5ZXIpCiAgICAgICAgIG1fcm9vdExheWVy
LT5hZGRDaGlsZChtX3ZpZXdPdmVybGF5Um9vdExheWVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmgKaW5k
ZXggYmJmYjMyMS4uYzE1Yjg2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmgKQEAgLTUxLDcgKzUxLDcgQEAg
cHJpdmF0ZToKIAogICAgIC8vIExheWVyVHJlZUhvc3QKICAgICB2b2lkIHNjaGVkdWxlTGF5ZXJG
bHVzaCgpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0TGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFibGVk
KGJvb2wgbGF5ZXJGbHVzaGluZ0VuYWJsZWQpIG92ZXJyaWRlOworICAgIHZvaWQgY2FuY2VsUGVu
ZGluZ0xheWVyRmx1c2goKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFJvb3RDb21wb3NpdGluZ0xh
eWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKICAgICB2b2lkIGludmFsaWRh
dGUoKSBvdmVycmlkZTsKIApAQCAtNjAsNiArNjAsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRl
dmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgcGFnZUJh
Y2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAKKyAgICB2b2lkIHNldE5v
bkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRO
b25Db21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheUluUmVjdChjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzY3JvbGxOb25Db21wb3NpdGVkQ29udGVudHMoY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRW
aWV3T3ZlcmxheVJvb3RMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CisK
ICAgICB2b2lkIHNldE5hdGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZyh1aW50NjRfdCkg
b3ZlcnJpZGU7CiAKICAgICBjbGFzcyBSZW5kZXJGcmFtZVNjaGVkdWxlciB7CkBAIC04MCwxNSAr
ODUsNiBAQCBwcml2YXRlOgogICAgICAgICBkb3VibGUgbV9sYXN0SW1tZWRpYXRlRmx1c2hUaW1l
IHsgMCB9OwogICAgIH07CiAKLSAgICAvLyBMYXllclRyZWVIb3N0Ci0gICAgY29uc3QgTGF5ZXJU
cmVlQ29udGV4dCYgbGF5ZXJUcmVlQ29udGV4dCgpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0U2hv
dWxkTm90aWZ5QWZ0ZXJOZXh0U2NoZWR1bGVkTGF5ZXJGbHVzaChib29sKSBvdmVycmlkZTsKLQot
ICAgIHZvaWQgc2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVlZERpc3BsYXkoKSBvdmVycmlkZTsK
LSAgICB2b2lkIHNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5SW5SZWN0KGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIHNjcm9sbE5vbkNvbXBvc2l0
ZWRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzY3JvbGxSZWN0KSBvdmVycmlkZTsK
LSAgICB2b2lkIHNldFZpZXdPdmVybGF5Um9vdExheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIq
KSBvdmVycmlkZTsKLQogICAgIC8vIEdyYXBoaWNzTGF5ZXJDbGllbnQKICAgICB2b2lkIHBhaW50
Q29udGVudHMoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciosIFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dCYsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmIGNsaXBSZWN0KSBvdmVycmlkZTsKICAgICBmbG9hdCBkZXZpY2VTY2Fs
ZUZhY3RvcigpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMTAwLDIxICs5NiwxMyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgY29tcG9zaXRlTGF5ZXJzVG9Db250ZXh0KENvbXBvc2l0ZVB1cnBvc2UgPSBOb3RG
b3JSZXNpemUpOwogCiAgICAgdm9pZCBmbHVzaEFuZFJlbmRlckxheWVycygpOwotICAgIHZvaWQg
Y2FuY2VsUGVuZGluZ0xheWVyRmx1c2goKTsKLQogICAgIGJvb2wgcmVuZGVyRnJhbWUoKTsKLQog
ICAgIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAKLSAgICBMYXllclRyZWVDb250ZXh0IG1f
bGF5ZXJUcmVlQ29udGV4dDsKLSAgICBib29sIG1faXNWYWxpZDsKLSAgICBib29sIG1fbm90aWZ5
QWZ0ZXJTY2hlZHVsZWRMYXllckZsdXNoOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpH
cmFwaGljc0xheWVyPiBtX3Jvb3RMYXllcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
R3JhcGhpY3NMYXllcj4gbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpUZXh0dXJlTWFwcGVyPiBtX3RleHR1cmVNYXBwZXI7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OkdMQ29udGV4dD4gbV9jb250ZXh0OwotICAgIGJvb2wgbV9s
YXllckZsdXNoU2NoZWR1bGluZ0VuYWJsZWQ7Ci0gICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllciog
bV92aWV3T3ZlcmxheVJvb3RMYXllcjsKICAgICBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBtX3NjYWxlTWF0cml4OwogICAgIFJlbmRlckZyYW1lU2NoZWR1bGVyIG1fcmVuZGVyRnJhbWVT
Y2hlZHVsZXI7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282122</attachid>
            <date>2016-06-27 05:16:45 -0700</date>
            <delta_ts>2016-06-27 05:22:46 -0700</delta_ts>
            <desc>Try to fix builds</desc>
            <filename>wk2-layer-tree-host.diff</filename>
            <type>text/plain</type>
            <size>45766</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA0MTM3ZTZhLi4wYzFlMzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODIg
QEAKKzIwMTYtMDYtMjcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFRvbyBtdWNoIGR1cGxpY2F0ZWQgY29kZSBpbiBMYXllclRyZWVIb3N0cyBp
bXBsZW1lbnRhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1OTE0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoZXJlJ3Mgc29tZSBjb2RlIGNvbW1vbiBhbmQgZHVwbGljYXRlZCBpbiBhbGwgY3Vy
cmVudCBMYXllclRyZWVIb3N0cyBpbXBsZW1lbnRhdGlvbnMgKEd0aywgQ29vcmRpbmF0ZWQsIGFu
ZAorICAgICAgICBUaHJlYWRlZENvb3JkaW5hdGVkKS4gVGhlIHRoaW5nIGlzIGV2ZW4gd29yc2Ug
aW4gdGhlIGNhc2Ugb2YgVGhyZWFkZWRDb29yZGluYXRlZCBhbmQgQ29vcmRpbmF0ZWQsIHdoZXJl
IHRoZQorICAgICAgICBmb3JtZXIgaXMgYWN0dWFsbHkgYSBzcGVjaWFsIGNhc2Ugb2YgdGhlIGxh
dGVyLCBhbmQgaXQgc2VlbXMgbGlrZSBjb2RlIHdhcyBjb3B5IHBhc3RlZCBhbmQgdGhlbiBtb2Rp
ZmllZCB0byBhZGQKKyAgICAgICAgVGhyZWFkZWRDb29yZGluYXRlZCBzcGVjaWZpYyBjb2RlLiBU
aGUgcHJvYmxlbSBvZiB0aGF0IGFwcHJvYWNoLCBhcGFydCBmcm9tIHRoZSBjb2RlIGR1cGxpY2F0
aW9uLCBpcyB0aGF0IGNvbW1vbgorICAgICAgICBwYXJ0cyBlbmQgdXAgZGl2ZXJnaW5nIHRvby4g
VGhpcyBwYXRjaCBtb3ZlcyB0aGUgY29tbW9uIHBhcnRzIHRvIHRoZSBiYXNlIGNsYXNzIExheWVy
VHJlZUhvc3QgYW5kIG1ha2VzCisgICAgICAgIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0IGluaGVyaXQgZnJvbSBDb29yZGluYXRlZExheWVyVHJlZUhvc3QsIHRvIHNoYXJlIHRoZSBj
b21tb24gY29kZSBhbmQgc2ltcGx5IGFkZAorICAgICAgICB0aGUgc3BlY2lmaWMgb25lLgorCisg
ICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWREcmF3aW5nQXJlYS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0OjpzY2hlZHVsZUxheWVyRmx1c2gpOgorICAgICAgICAoV2ViS2l0OjpDb29y
ZGluYXRlZExheWVyVHJlZUhvc3Q6OnNldFZpZXdPdmVybGF5Um9vdExheWVyKToKKyAgICAgICAg
KFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzZXRSb290Q29tcG9zaXRpbmdMYXll
cik6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6aW52YWxpZGF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2l6ZURpZENo
YW5nZSk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6bGF5ZXJG
bHVzaFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhv
c3Q6OmNvbW1pdFNjZW5lU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OmNyZWF0ZUNvb3JkaW5hdGVkU3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OkNv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y2FuY2VsUGVuZGluZ0xheWVyRmx1c2gpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmZvcmNlUmVwYWlu
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
Zm9yY2VSZXBhaW50QXN5bmMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRl
ZExheWVyVHJlZUhvc3Q6OmRpZEZsdXNoUm9vdExheWVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNo
YW5nZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhv
c3Q6OnBhZ2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Z3JhcGhpY3NMYXllckZhY3Rvcnkp
OiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6
OlRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KToKKyAgICAgICAgKFdlYktpdDo6VGhy
ZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hh
bmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpzaXplRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb29yZGluYXRlZExh
eWVyVHJlZUhvc3Q6OnNldFZpc2libGVDb250ZW50c1JlY3QpOgorICAgICAgICAoV2ViS2l0OjpU
aHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y29tbWl0U2NlbmVTdGF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjcmVhdGUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dDo6c2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6VGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNvbnRlbnRzU2l6ZUNoYW5nZWQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdDo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6VGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRpZFNjYWxlRmFjdG9yQ2hh
bmdlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0OjpzZXROYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcpOiBEZWxldGVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVh
ZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL0RyYXdpbmdBcmVhLmg6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjpsYXllckhv
c3REaWRGbHVzaExheWVycyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdB
cmVhSW1wbC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6fkxheWVyVHJlZUhvc3QpOgorICAg
ICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0OjpzZXRMYXllckZsdXNoU2NoZWR1bGluZ0VuYWJs
ZWQpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0OjpwYXVzZVJlbmRlcmluZyk6Cisg
ICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6OnJlc3VtZVJlbmRlcmluZyk6CisgICAgICAg
IChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6OmludmFsaWRhdGUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9MYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhv
c3Q6OmxheWVyVHJlZUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0Ojpz
ZXRTaG91bGROb3RpZnlBZnRlck5leHRTY2hlZHVsZWRMYXllckZsdXNoKToKKyAgICAgICAgKFdl
YktpdDo6TGF5ZXJUcmVlSG9zdDo6c2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVlZERpc3BsYXkp
OgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0OjpzZXROb25Db21wb3NpdGVkQ29udGVu
dHNOZWVkRGlzcGxheUluUmVjdCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6OnNj
cm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50cyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhv
c3Q6OmdyYXBoaWNzTGF5ZXJGYWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9z
dDo6Y29udGVudHNTaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6
OmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJl
ZUhvc3Q6OnNldE5hdGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZyk6CisgICAgICAgIChX
ZWJLaXQ6OkxheWVyVHJlZUhvc3Q6OnNldFZpZXdPdmVybGF5Um9vdExheWVyKToKKyAgICAgICAg
KFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6Zm9yY2VSZXBhaW50QXN5bmMpOiBEZWxldGVkLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RHdGs6OmludmFsaWRhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpMYXllclRyZWVIb3N0R3RrOjpzZXRWaWV3T3ZlcmxheVJvb3RMYXllcik6CisgICAgICAg
IChXZWJLaXQ6OkxheWVyVHJlZUhvc3RHdGs6OkxheWVyVHJlZUhvc3RHdGspOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0R3RrOjpzZXRSb290Q29tcG9zaXRpbmdMYXll
cik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RHdGs6OnNldE5vbkNv
bXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
TGF5ZXJUcmVlSG9zdEd0azo6c2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdEd0azo6c2V0TmF0aXZlU3VyZmFjZUhhbmRs
ZUZvckNvbXBvc2l0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
Z3RrL0xheWVyVHJlZUhvc3RHdGsuaDoKKwogMjAxNi0wNi0yNyAgTWlndWVsIEdvbWV6ICA8bWFn
b21lekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW0VGTF0gQnVpbGQgd2l0aCB0aHJlYWRl
ZCBjb21wb3NpdG9yIGVuYWJsZWQgaXMgYnJva2VuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCmlu
ZGV4IGFjMDJlNGMuLjRmNTU5MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
R1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC04MjYs
NiArODI2LDcgQEAgaWYgKEVOQUJMRV9USFJFQURFRF9DT01QT1NJVE9SKQogICAgICAgICBTaGFy
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkU2FmZUNvb3Jk
aW5hdGVkU3VyZmFjZS5jcHAKICAgICAgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhy
ZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKIAorICAgICAgICBXZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3Qu
Y3BwCiAgICAgICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVh
ZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAogICAgICkKICAgICBsaXN0KEFQUEVORCBX
ZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkRHJhd2luZ0Fy
ZWEuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkRHJhd2luZ0FyZWEuaAppbmRleCBkMGI5ZjNlLi5kZDBkNjM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZERyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWREcmF3aW5nQXJlYS5o
CkBAIC00MSw4ICs0MSw2IEBAIHB1YmxpYzoKICAgICBDb29yZGluYXRlZERyYXdpbmdBcmVhKFdl
YlBhZ2UmLCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgdmlydHVhbCB+
Q29vcmRpbmF0ZWREcmF3aW5nQXJlYSgpOwogCi0gICAgdm9pZCBsYXllckhvc3REaWRGbHVzaExh
eWVycygpOwotCiBwcml2YXRlOgogICAgIC8vIERyYXdpbmdBcmVhCiAgICAgdm9pZCBzZXROZWVk
c0Rpc3BsYXkoKSBvdmVycmlkZTsKQEAgLTY5LDYgKzY3LDggQEAgcHJpdmF0ZToKICAgICB2b2lk
IHZpZXdTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpWaWV3U3RhdGU6OkZsYWdzLCBib29sIC8qIHdh
bnRzRGlkVXBkYXRlVmlld1N0YXRlICovLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiAvKiBjYWxs
YmFja0lEcyAqLykgb3ZlcnJpZGU7CiAgICAgdm9pZCBhdHRhY2hWaWV3T3ZlcmxheUdyYXBoaWNz
TGF5ZXIoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7
CiAKKyAgICB2b2lkIGxheWVySG9zdERpZEZsdXNoTGF5ZXJzKCkgb3ZlcnJpZGU7CisKICAgICAv
LyBJUEMgbWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lkIHVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRl
KHVpbnQ2NF90IGJhY2tpbmdTdG9yZVN0YXRlSUQsIGJvb2wgcmVzcG9uZEltbWVkaWF0ZWx5LCBm
bG9hdCBkZXZpY2VTY2FsZUZhY3RvciwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIHNjcm9sbE9mZnNldCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IHN1c3BlbmRQYWludGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggYjY4ZGM0MC4uZGEyYWU4MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3QuY3BwCkBAIC0zMCwyMCArMzAsMjEgQEAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCiAjaW5jbHVkZSAiQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgiCiAKLSNpbmNsdWRlICJD
b29yZGluYXRlZERyYXdpbmdBcmVhLmgiCi0jaW5jbHVkZSAiQ29vcmRpbmF0ZWRHcmFwaGljc0Fy
Z3VtZW50Q29kZXJzLmgiCi0jaW5jbHVkZSAiQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHlN
ZXNzYWdlcy5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkRyYXdp
bmdBcmVhLmgiCiAjaW5jbHVkZSAiV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmgiCi0jaW5jbHVkZSAi
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUg
IldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NYWluRnJhbWUu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvU2V0dGluZ3MuaD4KLSNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKworI2lm
IFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyNpbmNsdWRlICJUaHJlYWRTYWZl
Q29vcmRpbmF0ZWRTdXJmYWNlLmgiCisjZWxpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVM
VElQUk9DRVNTKQorI2luY2x1ZGUgIkNvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5o
IgorI2luY2x1ZGUgIkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5TWVzc2FnZXMuaCIKKyNp
bmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNlbmRpZgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIApAQCAtNjAsNDYgKzYxLDI0IEBAIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dDo6fkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCgpCiAKIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KFdlYlBhZ2UmIHdlYlBhZ2UpCiAgICAgOiBMYXll
clRyZWVIb3N0KHdlYlBhZ2UpCi0gICAgLCBtX25vdGlmeUFmdGVyU2NoZWR1bGVkTGF5ZXJGbHVz
aChmYWxzZSkKLSAgICAsIG1faXNWYWxpZCh0cnVlKQotICAgICwgbV9pc1N1c3BlbmRlZChmYWxz
ZSkKLSAgICAsIG1faXNXYWl0aW5nRm9yUmVuZGVyZXIodHJ1ZSkKLSAgICAsIG1fbGF5ZXJGbHVz
aFRpbWVyKCp0aGlzLCAmQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpsYXllckZsdXNoVGltZXJG
aXJlZCkKLSAgICAsIG1fbGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFibGVkKHRydWUpCi0gICAgLCBt
X2ZvcmNlUmVwYWludEFzeW5jQ2FsbGJhY2tJRCgwKQotICAgICwgbV92aWV3T3ZlcmxheVJvb3RM
YXllcihudWxscHRyKQorICAgICwgbV9jb29yZGluYXRvcihzdGQ6Om1ha2VfdW5pcXVlPENvbXBv
c2l0aW5nQ29vcmRpbmF0b3I+KHdlYlBhZ2UuY29yZVBhZ2UoKSwgdGhpcykpCisgICAgLCBtX2xh
eWVyRmx1c2hUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZDb29yZGluYXRlZExheWVyVHJl
ZUhvc3Q6OmxheWVyRmx1c2hUaW1lckZpcmVkKQogewotICAgIG1fY29vcmRpbmF0b3IgPSBzdGQ6
Om1ha2VfdW5pcXVlPENvbXBvc2l0aW5nQ29vcmRpbmF0b3I+KG1fd2ViUGFnZS5jb3JlUGFnZSgp
LCB0aGlzKTsKLQogICAgIG1fY29vcmRpbmF0b3ItPmNyZWF0ZVJvb3RMYXllcihtX3dlYlBhZ2Uu
c2l6ZSgpKTsKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQogICAg
IG1fbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQgPSB0b0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cihtX2Nvb3JkaW5hdG9yLT5yb290TGF5ZXIoKSktPmlkKCk7CisjZW5kaWYKIAogICAgIENvb3Jk
aW5hdGVkU3VyZmFjZTo6c2V0RmFjdG9yeShjcmVhdGVDb29yZGluYXRlZFN1cmZhY2UpOwotCiAg
ICAgc2NoZWR1bGVMYXllckZsdXNoKCk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0OjpzZXRMYXllckZsdXNoU2NoZWR1bGluZ0VuYWJsZWQoYm9vbCBsYXllckZsdXNoaW5nRW5h
YmxlZCkKLXsKLSAgICBpZiAobV9sYXllckZsdXNoU2NoZWR1bGluZ0VuYWJsZWQgPT0gbGF5ZXJG
bHVzaGluZ0VuYWJsZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fbGF5ZXJGbHVzaFNjaGVk
dWxpbmdFbmFibGVkID0gbGF5ZXJGbHVzaGluZ0VuYWJsZWQ7Ci0KLSAgICBpZiAobV9sYXllckZs
dXNoU2NoZWR1bGluZ0VuYWJsZWQpIHsKLSAgICAgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjYW5jZWxQZW5kaW5nTGF5ZXJGbHVzaCgpOwot
fQotCiB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2NoZWR1bGVMYXllckZsdXNoKCkK
IHsKICAgICBpZiAoIW1fbGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFibGVkKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAoIW1fbGF5ZXJGbHVzaFRpbWVyLmlzQWN0aXZlKCkgfHwgbV9sYXllckZs
dXNoVGltZXIubmV4dEZpcmVJbnRlcnZhbCgpID4gMCkKKyAgICBpZiAoIW1fbGF5ZXJGbHVzaFRp
bWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fbGF5ZXJGbHVzaFRpbWVyLnN0YXJ0T25lU2hvdCgw
KTsKIH0KIApAQCAtMTA4LDE4ICs4NywxMyBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dDo6Y2FuY2VsUGVuZGluZ0xheWVyRmx1c2goKQogICAgIG1fbGF5ZXJGbHVzaFRpbWVyLnN0b3Ao
KTsKIH0KIAotdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNldFNob3VsZE5vdGlmeUFm
dGVyTmV4dFNjaGVkdWxlZExheWVyRmx1c2goYm9vbCBub3RpZnlBZnRlclNjaGVkdWxlZExheWVy
Rmx1c2gpCi17Ci0gICAgbV9ub3RpZnlBZnRlclNjaGVkdWxlZExheWVyRmx1c2ggPSBub3RpZnlB
ZnRlclNjaGVkdWxlZExheWVyRmx1c2g7Ci19Ci0KLXZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0OjpzZXRWaWV3T3ZlcmxheVJvb3RMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKiB2aWV3
T3ZlcmxheVJvb3RMYXllcikKK3ZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzZXRWaWV3
T3ZlcmxheVJvb3RMYXllcihHcmFwaGljc0xheWVyKiB2aWV3T3ZlcmxheVJvb3RMYXllcikKIHsK
LSAgICBtX3ZpZXdPdmVybGF5Um9vdExheWVyID0gdmlld092ZXJsYXlSb290TGF5ZXI7CisgICAg
TGF5ZXJUcmVlSG9zdDo6c2V0Vmlld092ZXJsYXlSb290TGF5ZXIodmlld092ZXJsYXlSb290TGF5
ZXIpOwogICAgIG1fY29vcmRpbmF0b3ItPnNldFZpZXdPdmVybGF5Um9vdExheWVyKHZpZXdPdmVy
bGF5Um9vdExheWVyKTsKIH0KIAotdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNldFJv
b3RDb21wb3NpdGluZ0xheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIp
Cit2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIo
R3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikKIHsKICAgICBtX2Nvb3JkaW5hdG9yLT5zZXRS
b290Q29tcG9zaXRpbmdMYXllcihncmFwaGljc0xheWVyKTsKIH0KQEAgLTEyOCw5ICsxMDIsOCBA
QCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6aW52YWxpZGF0ZSgpCiB7CiAgICAgY2Fu
Y2VsUGVuZGluZ0xheWVyRmx1c2goKTsKIAotICAgIEFTU0VSVChtX2lzVmFsaWQpOwogICAgIG1f
Y29vcmRpbmF0b3ItPmNsZWFyUm9vdExheWVyKCk7Ci0gICAgbV9pc1ZhbGlkID0gZmFsc2U7Cisg
ICAgTGF5ZXJUcmVlSG9zdDo6aW52YWxpZGF0ZSgpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdDo6Zm9yY2VSZXBhaW50KCkKQEAgLTE1OCw3ICsxMzEsNyBAQCBib29sIENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdDo6Zm9yY2VSZXBhaW50QXN5bmModWludDY0X3QgY2FsbGJhY2tJ
RCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6
OnNpemVEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgbmV3U2l6ZSkKK3ZvaWQgQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzaXplRGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIG5ld1Np
emUpCiB7CiAgICAgbV9jb29yZGluYXRvci0+c2l6ZURpZENoYW5nZShuZXdTaXplKTsKICAgICBz
Y2hlZHVsZUxheWVyRmx1c2goKTsKQEAgLTE4OSw3ICsxNjIsNyBAQCB2b2lkIENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdDo6ZGlkRmx1c2hSb290TGF5ZXIoY29uc3QgRmxvYXRSZWN0JiB2aXNpYmxl
Q29udGVudAogICAgICAgICBtX3ZpZXdPdmVybGF5Um9vdExheWVyLT5mbHVzaENvbXBvc2l0aW5n
U3RhdGUodmlzaWJsZUNvbnRlbnRSZWN0LCAgbV93ZWJQYWdlLm1haW5GcmFtZSgpLT52aWV3KCkt
PnZpZXdwb3J0SXNTdGFibGUoKSk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpwZXJmb3JtU2NoZWR1bGVkTGF5ZXJGbHVzaCgpCit2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdDo6bGF5ZXJGbHVzaFRpbWVyRmlyZWQoKQogewogICAgIGlmIChtX2lzU3VzcGVuZGVkIHx8
IG1faXNXYWl0aW5nRm9yUmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsKQEAgLTIwNywyOSArMTgw
LDM0IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpwZXJmb3JtU2NoZWR1bGVkTGF5
ZXJGbHVzaCgpCiAgICAgfQogCiAgICAgaWYgKG1fbm90aWZ5QWZ0ZXJTY2hlZHVsZWRMYXllckZs
dXNoICYmIGRpZFN5bmMpIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8Q29vcmRpbmF0ZWREcmF3aW5n
QXJlYSo+KG1fd2ViUGFnZS5kcmF3aW5nQXJlYSgpKS0+bGF5ZXJIb3N0RGlkRmx1c2hMYXllcnMo
KTsKKyAgICAgICAgbV93ZWJQYWdlLmRyYXdpbmdBcmVhKCktPmxheWVySG9zdERpZEZsdXNoTGF5
ZXJzKCk7CiAgICAgICAgIG1fbm90aWZ5QWZ0ZXJTY2hlZHVsZWRMYXllckZsdXNoID0gZmFsc2U7
CiAgICAgfQogfQogCi12b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6bGF5ZXJGbHVzaFRp
bWVyRmlyZWQoKQotewotICAgIHBlcmZvcm1TY2hlZHVsZWRMYXllckZsdXNoKCk7Ci19Ci0KIHZv
aWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpwYWludExheWVyQ29udGVudHMoY29uc3QgR3Jh
cGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmKQogewogfQogCi12
b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y29tbWl0U2NlbmVTdGF0ZShjb25zdCBXZWJD
b3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmIHN0YXRlKQordm9pZCBDb29yZGluYXRlZExh
eWVyVHJlZUhvc3Q6OmNvbW1pdFNjZW5lU3RhdGUoY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0
YXRlJiBzdGF0ZSkKIHsKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNT
KQogICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQ
cm94eTo6Q29tbWl0Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlKHN0YXRlKSk7CisjZW5kaWYKICAg
ICBtX2lzV2FpdGluZ0ZvclJlbmRlcmVyID0gdHJ1ZTsKIH0KIAogUmVmUHRyPENvb3JkaW5hdGVk
U3VyZmFjZT4gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjcmVhdGVDb29yZGluYXRlZFN1cmZh
Y2UoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncyBmbGFncykK
IHsKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgcmV0dXJuIFRo
cmVhZFNhZmVDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShzaXplLCBmbGFncyk7CisjZWxpZiBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQogICAgIHJldHVybiBXZWJDb29y
ZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShzaXplLCBmbGFncyk7CisjZWxzZQorICAgIFVOVVNFRF9Q
QVJBTShzaXplKTsKKyAgICBVTlVTRURfUEFSQU0oZmxhZ3MpOworICAgIHJldHVybiBudWxscHRy
OworI2VuZGlmCiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZXZpY2VPclBh
Z2VTY2FsZUZhY3RvckNoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaAppbmRleCA0ZDg4NTk5MC4uOGEwOGRmYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0LmgKQEAgLTIzLDE0ICsyMywxMyBAQAogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNT
KQogCi0jaW5jbHVkZSAiTGF5ZXJUcmVlQ29udGV4dC5oIgogI2luY2x1ZGUgIkxheWVyVHJlZUhv
c3QuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJGYWN0b3J5Lmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBDb29yZGluYXRlZFN1cmZhY2U7CitjbGFzcyBHcmFwaGljc0xheWVyRmFjdG9yeTsKIH0K
IAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00MywyOCArNDIsMjcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBSZWY8Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0PiBjcmVhdGUoV2ViUGFnZSYpOwogICAg
IHZpcnR1YWwgfkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCgpOwogCi0gICAgY29uc3QgTGF5ZXJU
cmVlQ29udGV4dCYgbGF5ZXJUcmVlQ29udGV4dCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fbGF5ZXJU
cmVlQ29udGV4dDsgfQotICAgIHZvaWQgc2V0TGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFibGVkKGJv
b2wpIG92ZXJyaWRlOworcHJvdGVjdGVkOgorICAgIGV4cGxpY2l0IENvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdChXZWJQYWdlJik7CisKICAgICB2b2lkIHNjaGVkdWxlTGF5ZXJGbHVzaCgpIG92ZXJy
aWRlOwotICAgIHZvaWQgc2V0U2hvdWxkTm90aWZ5QWZ0ZXJOZXh0U2NoZWR1bGVkTGF5ZXJGbHVz
aChib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIGNhbmNlbFBlbmRpbmdMYXllckZsdXNoKCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBzZXRSb290Q29tcG9zaXRpbmdMYXllcihXZWJDb3JlOjpHcmFwaGlj
c0xheWVyKikgb3ZlcnJpZGU7CiAgICAgdm9pZCBpbnZhbGlkYXRlKCkgb3ZlcnJpZGU7CiAKLSAg
ICB2b2lkIHNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5KCkgb3ZlcnJpZGUgeyB9
Ci0gICAgdm9pZCBzZXROb25Db21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheUluUmVjdChjb25z
dCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBzY3JvbGxOb25Db21w
b3NpdGVkQ29udGVudHMoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlIHsgfQogICAg
IHZvaWQgZm9yY2VSZXBhaW50KCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBmb3JjZVJlcGFpbnRBc3lu
Yyh1aW50NjRfdCBjYWxsYmFja0lEKSBvdmVycmlkZTsKICAgICB2b2lkIHNpemVEaWRDaGFuZ2Uo
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgbmV3U2l6ZSkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHBh
dXNlUmVuZGVyaW5nKCkgb3ZlcnJpZGUgeyBtX2lzU3VzcGVuZGVkID0gdHJ1ZTsgfQotICAgIHZv
aWQgcmVzdW1lUmVuZGVyaW5nKCkgb3ZlcnJpZGUgeyBtX2lzU3VzcGVuZGVkID0gZmFsc2U7IHNj
aGVkdWxlTGF5ZXJGbHVzaCgpOyB9CiAgICAgdm9pZCBkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNo
YW5nZWQoKSBvdmVycmlkZTsKICAgICB2b2lkIHBhZ2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hh
bmdlZCgpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKKyAgICB2b2lkIHJlbmRlck5l
eHRGcmFtZSgpOworICAgIHZvaWQgcHVyZ2VCYWNraW5nU3RvcmVzKCk7CisgICAgdm9pZCBjb21t
aXRTY3JvbGxPZmZzZXQodWludDMyX3QgbGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
b2Zmc2V0KTsKKwogICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBncmFwaGljc0xh
eWVyRmFjdG9yeSgpIG92ZXJyaWRlOwotICAgIFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NM
YXllciogbWFpbkNvbnRlbnRzTGF5ZXIoKTsKIAogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElP
Tl9GUkFNRSkKICAgICB2b2lkIHNjaGVkdWxlQW5pbWF0aW9uKCkgb3ZlcnJpZGU7CkBAIC03Miw0
MiArNzAsMjUgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRWaWV3T3ZlcmxheVJvb3RMYXllcihX
ZWJDb3JlOjpHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgUmVmUHRyPFdl
YkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZT4gY3JlYXRlQ29vcmRpbmF0ZWRTdXJmYWNlKGNvbnN0
IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzKTsK
LQotcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdChXZWJQ
YWdlJik7Ci0KLXByaXZhdGU6Ci0gICAgLy8gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ci0gICAg
dm9pZCBjYW5jZWxQZW5kaW5nTGF5ZXJGbHVzaCgpOwotICAgIHZvaWQgcGVyZm9ybVNjaGVkdWxl
ZExheWVyRmx1c2goKTsKLSAgICB2b2lkIHNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwotICAgIHZvaWQg
cmVuZGVyTmV4dEZyYW1lKCk7Ci0gICAgdm9pZCBwdXJnZUJhY2tpbmdTdG9yZXMoKTsKLSAgICB2
b2lkIGNvbW1pdFNjcm9sbE9mZnNldCh1aW50MzJfdCBsYXllcklELCBjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiBvZmZzZXQpOwotCi0gICAgdm9pZCBsYXllckZsdXNoVGltZXJGaXJlZCgpOwotCiAg
ICAgLy8gQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6Q2xpZW50CiAgICAgdm9pZCBkaWRGbHVzaFJv
b3RMYXllcihjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHZpc2libGVDb250ZW50UmVjdCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBub3RpZnlGbHVzaFJlcXVpcmVkKCkgb3ZlcnJpZGUgeyBzY2hlZHVs
ZUxheWVyRmx1c2goKTsgfTsKICAgICB2b2lkIGNvbW1pdFNjZW5lU3RhdGUoY29uc3QgV2ViQ29y
ZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwYWludExh
eWVyQ29udGVudHMoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciosIFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0KSBvdmVycmlkZTsK
IAotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDb21wb3NpdGluZ0Nvb3JkaW5hdG9yPiBt
X2Nvb3JkaW5hdG9yOwotCi0gICAgYm9vbCBtX25vdGlmeUFmdGVyU2NoZWR1bGVkTGF5ZXJGbHVz
aDsKLSAgICBib29sIG1faXNWYWxpZDsKLSAgICBib29sIG1faXNTdXNwZW5kZWQ7Ci0gICAgYm9v
bCBtX2lzV2FpdGluZ0ZvclJlbmRlcmVyOworcHJpdmF0ZToKKyAgICB2b2lkIGxheWVyRmx1c2hU
aW1lckZpcmVkKCk7CiAKLSAgICBMYXllclRyZWVDb250ZXh0IG1fbGF5ZXJUcmVlQ29udGV4dDsK
KyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9DRVNTKQorICAgIHZvaWQgZGlk
UmVjZWl2ZUNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpNZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOworI2VuZGlmCiAKLSAgICBXZWJDb3JlOjpU
aW1lciBtX2xheWVyRmx1c2hUaW1lcjsKLSAgICBib29sIG1fbGF5ZXJGbHVzaFNjaGVkdWxpbmdF
bmFibGVkOwotICAgIHVpbnQ2NF90IG1fZm9yY2VSZXBhaW50QXN5bmNDYWxsYmFja0lEOworICAg
IHN0YXRpYyBSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPiBjcmVhdGVDb29yZGlu
YXRlZFN1cmZhY2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkNvb3JkaW5hdGVk
U3VyZmFjZTo6RmxhZ3MpOwogCi0gICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllciogbV92aWV3T3Zl
cmxheVJvb3RMYXllcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q29tcG9zaXRpbmdD
b29yZGluYXRvcj4gbV9jb29yZGluYXRvcjsKKyAgICBib29sIG1faXNXYWl0aW5nRm9yUmVuZGVy
ZXIgeyB0cnVlIH07CisgICAgdWludDY0X3QgbV9mb3JjZVJlcGFpbnRBc3luY0NhbGxiYWNrSUQg
eyAwIH07CisgICAgUnVuTG9vcDo6VGltZXI8Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0PiBtX2xh
eWVyRmx1c2hUaW1lcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhy
ZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVy
VHJlZUhvc3QuY3BwCmluZGV4IDYzMTdkYTMuLjlhMDNjMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdC5jcHAKQEAgLTMwLDE5ICszMCw5IEBACiAjaW5jbHVkZSAiVGhyZWFkZWRDb29yZGluYXRl
ZExheWVyVHJlZUhvc3QuaCIKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURF
RCkKLQotI2luY2x1ZGUgIkRyYXdpbmdBcmVhSW1wbC5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCi0jaW5jbHVkZSAiVGhyZWFkU2FmZUNvb3JkaW5hdGVkU3VyZmFjZS5oIgogI2luY2x1
ZGUgIldlYlBhZ2UuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01h
aW5GcmFtZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgotI2luY2x1ZGUgPHd0Zi9DdXJy
ZW50VGltZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNTgsNjYgKzQ4LDEw
IEBAIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojp+VGhyZWFkZWRDb29yZGluYXRl
ZExheWVyVHJlZUhvc3QoKQogfQogCiBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
VGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QoV2ViUGFnZSYgd2ViUGFnZSkKLSAgICA6
IExheWVyVHJlZUhvc3Qod2ViUGFnZSkKLSAgICAsIG1fZm9yY2VSZXBhaW50QXN5bmNDYWxsYmFj
a0lEKDApCi0gICAgLCBtX25vdGlmeUFmdGVyU2NoZWR1bGVkTGF5ZXJGbHVzaChmYWxzZSkKLSAg
ICAsIG1faXNTdXNwZW5kZWQoZmFsc2UpCi0gICAgLCBtX2lzV2FpdGluZ0ZvclJlbmRlcmVyKGZh
bHNlKQotICAgICwgbV9sYXllckZsdXNoVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmVGhy
ZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnBlcmZvcm1TY2hlZHVsZWRMYXllckZsdXNo
KQotICAgICwgbV9sYXllckZsdXNoU2NoZWR1bGluZ0VuYWJsZWQodHJ1ZSkKLXsKLSAgICBtX2Nv
b3JkaW5hdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxDb21wb3NpdGluZ0Nvb3JkaW5hdG9yPihtX3dl
YlBhZ2UuY29yZVBhZ2UoKSwgdGhpcyk7Ci0KLSAgICBtX2Nvb3JkaW5hdG9yLT5jcmVhdGVSb290
TGF5ZXIobV93ZWJQYWdlLnNpemUoKSk7Ci0KLSAgICBDb29yZGluYXRlZFN1cmZhY2U6OnNldEZh
Y3RvcnkoY3JlYXRlQ29vcmRpbmF0ZWRTdXJmYWNlKTsKLQotICAgIG1fY29tcG9zaXRvciA9IFRo
cmVhZGVkQ29tcG9zaXRvcjo6Y3JlYXRlKHRoaXMpOwotICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgp
OwotfQotCi1SZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBUaHJlYWRlZENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdDo6Y3JlYXRlQ29vcmRpbmF0ZWRTdXJmYWNlKGNvbnN0IEludFNpemUmIHNpemUs
IENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MgZmxhZ3MpCi17Ci0gICAgcmV0dXJuIFRocmVhZFNh
ZmVDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShzaXplLCBmbGFncyk7Ci19Ci0KLXZvaWQgVGhy
ZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNjaGVkdWxlTGF5ZXJGbHVzaCgpCi17Ci0g
ICAgaWYgKCFtX2xheWVyRmx1c2hTY2hlZHVsaW5nRW5hYmxlZCkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgaWYgKCFtX2xheWVyRmx1c2hUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX2xheWVy
Rmx1c2hUaW1lci5zdGFydE9uZVNob3QoMCk7Ci19Ci0KLXZvaWQgVGhyZWFkZWRDb29yZGluYXRl
ZExheWVyVHJlZUhvc3Q6OnNldExheWVyRmx1c2hTY2hlZHVsaW5nRW5hYmxlZChib29sIGxheWVy
Rmx1c2hpbmdFbmFibGVkKQotewotICAgIGlmIChtX2xheWVyRmx1c2hTY2hlZHVsaW5nRW5hYmxl
ZCA9PSBsYXllckZsdXNoaW5nRW5hYmxlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9sYXll
ckZsdXNoU2NoZWR1bGluZ0VuYWJsZWQgPSBsYXllckZsdXNoaW5nRW5hYmxlZDsKLQotICAgIGlm
IChtX2xheWVyRmx1c2hTY2hlZHVsaW5nRW5hYmxlZCkgewotICAgICAgICBzY2hlZHVsZUxheWVy
Rmx1c2goKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNhbmNlbFBlbmRpbmdMYXll
ckZsdXNoKCk7Ci19Ci0KLXZvaWQgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNl
dFNob3VsZE5vdGlmeUFmdGVyTmV4dFNjaGVkdWxlZExheWVyRmx1c2goYm9vbCBub3RpZnlBZnRl
clNjaGVkdWxlZExheWVyRmx1c2gpCisgICAgOiBDb29yZGluYXRlZExheWVyVHJlZUhvc3Qod2Vi
UGFnZSkKKyAgICAsIG1fY29tcG9zaXRvckNsaWVudCgqdGhpcykKKyAgICAsIG1fY29tcG9zaXRv
cihUaHJlYWRlZENvbXBvc2l0b3I6OmNyZWF0ZSgmbV9jb21wb3NpdG9yQ2xpZW50KSkKIHsKLSAg
ICBtX25vdGlmeUFmdGVyU2NoZWR1bGVkTGF5ZXJGbHVzaCA9IG5vdGlmeUFmdGVyU2NoZWR1bGVk
TGF5ZXJGbHVzaDsKLX0KLQotdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
c2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciogZ3JhcGhpY3NM
YXllcikKLXsKLSAgICBtX2Nvb3JkaW5hdG9yLT5zZXRSb290Q29tcG9zaXRpbmdMYXllcihncmFw
aGljc0xheWVyKTsKLX0KLQotdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
aW52YWxpZGF0ZSgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAogdm9pZCBUaHJlYWRl
ZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpCkBAIC0xMjYsMjAgKzYwLDYgQEAgdm9pZCBUaHJl
YWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRz
KGNvbnN0IFdlYkNvcmUKICAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKIH0KIAotdm9pZCBUaHJl
YWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Zm9yY2VSZXBhaW50KCkKLXsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotfQotCi1ib29sIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
Ojpmb3JjZVJlcGFpbnRBc3luYyh1aW50NjRfdCBjYWxsYmFja0lEKQotewotICAgIC8vIFdlIGV4
cGVjdCB0aGUgVUkgcHJvY2VzcyB0byBub3QgcmVxdWlyZSBhIG5ldyByZXBhaW50IHVudGlsIHRo
ZSBwcmV2aW91cyBvbmUgaGFzIGZpbmlzaGVkLgotICAgIEFTU0VSVCghbV9mb3JjZVJlcGFpbnRB
c3luY0NhbGxiYWNrSUQpOwotICAgIG1fZm9yY2VSZXBhaW50QXN5bmNDYWxsYmFja0lEID0gY2Fs
bGJhY2tJRDsKLSAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQogdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y29udGVudHNTaXplQ2hh
bmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBuZXdTaXplKQogewogICAgIG1fY29tcG9zaXRv
ci0+ZGlkQ2hhbmdlQ29udGVudHNTaXplKG5ld1NpemUpOwpAQCAtMTQ3LDI5ICs2NywxMyBAQCB2
b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpjb250ZW50c1NpemVDaGFuZ2Vk
KGNvbnN0IFdlYkNvcmU6OkludFNpegogCiB2b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0OjpkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKQogewotICAgIG1fY29vcmRp
bmF0b3ItPmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpOworICAgIENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdDo6ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CiAgICAgbV9j
b21wb3NpdG9yLT5zZXREZXZpY2VTY2FsZUZhY3RvcihtX3dlYlBhZ2UuZGV2aWNlU2NhbGVGYWN0
b3IoKSk7CiB9CiAKLXZvaWQgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnBhdXNl
UmVuZGVyaW5nKCkKLXsKLSAgICBtX2lzU3VzcGVuZGVkID0gdHJ1ZTsKLX0KLQotdm9pZCBUaHJl
YWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cmVzdW1lUmVuZGVyaW5nKCkKLXsKLSAgICBt
X2lzU3VzcGVuZGVkID0gZmFsc2U7Ci0gICAgc2NoZWR1bGVMYXllckZsdXNoKCk7Ci19Ci0KLUdy
YXBoaWNzTGF5ZXJGYWN0b3J5KiBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Z3Jh
cGhpY3NMYXllckZhY3RvcnkoKQotewotICAgIHJldHVybiBtX2Nvb3JkaW5hdG9yLmdldCgpOwot
fQotCi12b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzaXplRGlkQ2hhbmdl
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpCit2b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0OjpzaXplRGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHNpemUpCiB7Ci0gICAg
bV9jb29yZGluYXRvci0+c2l6ZURpZENoYW5nZShzaXplKTsKKyAgICBDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OnNpemVEaWRDaGFuZ2Uoc2l6ZSk7CiAgICAgbV9jb21wb3NpdG9yLT5kaWRDaGFu
Z2VWaWV3cG9ydFNpemUoc2l6ZSk7CiB9CiAKQEAgLTE3OCwyMSArODIsMTEgQEAgdm9pZCBUaHJl
YWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVz
KGNvbnN0IFdlYkNvcmUKICAgICBtX2NvbXBvc2l0b3ItPmRpZENoYW5nZVZpZXdwb3J0QXR0cmli
dXRlKGF0dHIpOwogfQogCi12b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpj
b21wb3NpdG9yRGlkRmx1c2hMYXllcnMoKQotewotICAgIHN0YXRpY19jYXN0PERyYXdpbmdBcmVh
SW1wbCo+KG1fd2ViUGFnZS5kcmF3aW5nQXJlYSgpKS0+bGF5ZXJIb3N0RGlkRmx1c2hMYXllcnMo
KTsKLX0KLQogdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGlkU2NhbGVG
YWN0b3JDaGFuZ2VkKGZsb2F0IHNjYWxlLCBjb25zdCBJbnRQb2ludCYgb3JpZ2luKQogewogICAg
IG1fd2ViUGFnZS5zY2FsZVBhZ2Uoc2NhbGUsIG9yaWdpbik7CiB9CiAKLXZvaWQgVGhyZWFkZWRD
b29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNldFZpZXdPdmVybGF5Um9vdExheWVyKEdyYXBoaWNz
TGF5ZXIqIGdyYXBoaWNzTGF5ZXIpCi17Ci0gICAgbV9jb29yZGluYXRvci0+c2V0Vmlld092ZXJs
YXlSb290TGF5ZXIoZ3JhcGhpY3NMYXllcik7Ci19Ci0KICNpZiBQTEFURk9STShHVEspCiB2b2lk
IFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzZXROYXRpdmVTdXJmYWNlSGFuZGxl
Rm9yQ29tcG9zaXRpbmcodWludDY0X3QgaGFuZGxlKQogewpAQCAtMjAyLDIzICs5Niw5IEBAIHZv
aWQgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNldE5hdGl2ZVN1cmZhY2VIYW5k
bGVGb3JDb21wb3NpdGluZyh1aW50CiB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShSRVFVRVNUX0FO
SU1BVElPTl9GUkFNRSkKLXZvaWQgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNj
aGVkdWxlQW5pbWF0aW9uKCkKLXsKLSAgICBpZiAobV9pc1dhaXRpbmdGb3JSZW5kZXJlcikKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fbGF5ZXJGbHVzaFRpbWVyLmlzQWN0aXZlKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIG1fbGF5ZXJGbHVzaFRpbWVyLnN0YXJ0T25lU2hvdChtX2Nv
b3JkaW5hdG9yLT5uZXh0QW5pbWF0aW9uU2VydmljZVRpbWUoKSk7Ci0gICAgc2NoZWR1bGVMYXll
ckZsdXNoKCk7Ci19Ci0jZW5kaWYKLQogdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0
IEZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IsIGZsb2F0IHNjYWxlKQogewotICAgIG1fY29v
cmRpbmF0b3ItPnNldFZpc2libGVDb250ZW50c1JlY3QocmVjdCwgdHJhamVjdG9yeVZlY3Rvcik7
CisgICAgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KHJl
Y3QsIHRyYWplY3RvcnlWZWN0b3IpOwogICAgIGlmIChtX2xhc3RTY3JvbGxQb3NpdGlvbiAhPSBy
b3VuZGVkSW50UG9pbnQocmVjdC5sb2NhdGlvbigpKSkgewogICAgICAgICBtX2xhc3RTY3JvbGxQ
b3NpdGlvbiA9IHJvdW5kZWRJbnRQb2ludChyZWN0LmxvY2F0aW9uKCkpOwogCkBAIC0yMzAsNjEg
KzExMCwxNCBAQCB2b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzZXRWaXNp
YmxlQ29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcgogICAgICAgICBtX2xhc3RTY2FsZUZh
Y3RvciA9IHNjYWxlOwogICAgICAgICBkaWRTY2FsZUZhY3RvckNoYW5nZWQobV9sYXN0U2NhbGVG
YWN0b3IsIG1fbGFzdFNjcm9sbFBvc2l0aW9uKTsKICAgICB9Ci0KLSAgICBzY2hlZHVsZUxheWVy
Rmx1c2goKTsKLX0KLQotdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y2Fu
Y2VsUGVuZGluZ0xheWVyRmx1c2goKQotewotICAgIG1fbGF5ZXJGbHVzaFRpbWVyLnN0b3AoKTsK
LX0KLQotdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cGVyZm9ybVNjaGVk
dWxlZExheWVyRmx1c2goKQotewotICAgIGlmIChtX2lzU3VzcGVuZGVkIHx8IG1faXNXYWl0aW5n
Rm9yUmVuZGVyZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fY29vcmRpbmF0b3ItPnN5bmNE
aXNwbGF5U3RhdGUoKTsKLSAgICBib29sIGRpZFN5bmMgPSBtX2Nvb3JkaW5hdG9yLT5mbHVzaFBl
bmRpbmdMYXllckNoYW5nZXMoKTsKLQotICAgIGlmIChtX25vdGlmeUFmdGVyU2NoZWR1bGVkTGF5
ZXJGbHVzaCAmJiBkaWRTeW5jKSB7Ci0gICAgICAgIGNvbXBvc2l0b3JEaWRGbHVzaExheWVycygp
OwotICAgICAgICBtX25vdGlmeUFmdGVyU2NoZWR1bGVkTGF5ZXJGbHVzaCA9IGZhbHNlOwotICAg
IH0KLX0KLQotdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cHVyZ2VCYWNr
aW5nU3RvcmVzKCkKLXsKLSAgICBtX2Nvb3JkaW5hdG9yLT5wdXJnZUJhY2tpbmdTdG9yZXMoKTsK
LX0KLQotdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cmVuZGVyTmV4dEZy
YW1lKCkKLXsKLSAgICBtX2lzV2FpdGluZ0ZvclJlbmRlcmVyID0gZmFsc2U7Ci0gICAgbV9jb29y
ZGluYXRvci0+cmVuZGVyTmV4dEZyYW1lKCk7Ci0gICAgc2NoZWR1bGVMYXllckZsdXNoKCk7Ci19
Ci0KLXZvaWQgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNvbW1pdFNjcm9sbE9m
ZnNldCh1aW50MzJfdCBsYXllcklELCBjb25zdCBJbnRTaXplJiBvZmZzZXQpCi17Ci0gICAgbV9j
b29yZGluYXRvci0+Y29tbWl0U2Nyb2xsT2Zmc2V0KGxheWVySUQsIG9mZnNldCk7Ci19Ci0KLXZv
aWQgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6Om5vdGlmeUZsdXNoUmVxdWlyZWQo
KQotewotICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwogfQogCiB2b2lkIFRocmVhZGVkQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0Ojpjb21taXRTY2VuZVN0YXRlKGNvbnN0IENvb3JkaW5hdGVkR3Jh
cGhpY3NTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgbV9pc1dhaXRpbmdGb3JSZW5kZXJlciA9IHRydWU7
CisgICAgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpjb21taXRTY2VuZVN0YXRlKHN0YXRlKTsK
ICAgICBtX2NvbXBvc2l0b3ItPnVwZGF0ZVNjZW5lU3RhdGUoc3RhdGUpOwogfQogCi12b2lkIFRo
cmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpwYWludExheWVyQ29udGVudHMoY29uc3Qg
R3JhcGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmKQotewotfQot
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQ
SElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRl
ZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDU0ZGMyMTQuLjQ3NzcwY2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGlu
YXRlZExheWVyVHJlZUhvc3QuaApAQCAtMzAsMjcgKzMwLDEyIEBACiAKICNpZiBVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCiAKLSNpbmNsdWRlICJMYXllclRyZWVDb250ZXh0Lmgi
Ci0jaW5jbHVkZSAiTGF5ZXJUcmVlSG9zdC5oIgorI2luY2x1ZGUgIkNvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdC5oIgogI2luY2x1ZGUgIlRocmVhZGVkQ29tcG9zaXRvci5oIgotI2luY2x1ZGUgPFdl
YkNvcmUvQ29tcG9zaXRpbmdDb29yZGluYXRvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRQ
b2ludC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9JbnRQb2ludC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvSW50U2l6ZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUGFnZU92ZXJsYXkuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL1RpbWVyLmg+Ci0jaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KLSNpbmNsdWRl
IDx3dGYvVGhyZWFkaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIENvb3JkaW5h
dGVkU3VyZmFjZTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEdyYXBoaWNzTGF5ZXI7
Ci1jbGFzcyBHcmFwaGljc0xheWVyRmFjdG9yeTsKLWNsYXNzIEdyYXBoaWNzTGF5ZXJGYWN0b3J5
Owotc3RydWN0IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlOwogc3RydWN0IENvb3JkaW5h
dGVkR3JhcGhpY3NTdGF0ZTsKIH0KIApAQCAtNTgsMzQgKzQzLDE4IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBXZWJQYWdlOwogCi1jbGFzcyBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdCA6IHB1YmxpYyBMYXllclRyZWVIb3N0LCBwdWJsaWMgV2ViQ29yZTo6Q29tcG9zaXRp
bmdDb29yZGluYXRvcjo6Q2xpZW50LCBwdWJsaWMgVGhyZWFkZWRDb21wb3NpdG9yOjpDbGllbnQg
ewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitjbGFzcyBUaHJlYWRlZENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdCBmaW5hbCA6IHB1YmxpYyBDb29yZGluYXRlZExheWVyVHJlZUhvc3Qgewog
cHVibGljOgogICAgIHN0YXRpYyBSZWY8VGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q+
IGNyZWF0ZShXZWJQYWdlJik7CiAgICAgdmlydHVhbCB+VGhyZWFkZWRDb29yZGluYXRlZExheWVy
VHJlZUhvc3QoKTsKIAotICAgIGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGxheWVyVHJlZUNvbnRl
eHQoKSBvdmVycmlkZSB7IHJldHVybiBtX2xheWVyVHJlZUNvbnRleHQ7IH07Ci0KLSAgICB2b2lk
IHNjaGVkdWxlTGF5ZXJGbHVzaCgpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0TGF5ZXJGbHVzaFNj
aGVkdWxpbmdFbmFibGVkKGJvb2wpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0U2hvdWxkTm90aWZ5
QWZ0ZXJOZXh0U2NoZWR1bGVkTGF5ZXJGbHVzaChib29sKSBvdmVycmlkZTsKLSAgICB2b2lkIHNl
dFJvb3RDb21wb3NpdGluZ0xheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsK
LSAgICB2b2lkIGludmFsaWRhdGUoKSBvdmVycmlkZTsKK3ByaXZhdGU6CisgICAgZXhwbGljaXQg
VGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QoV2ViUGFnZSYpOwogCi0gICAgdm9pZCBz
ZXROb25Db21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheSgpIG92ZXJyaWRlIHsgfTsKLSAgICB2
b2lkIHNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5SW5SZWN0KGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmKSBvdmVycmlkZSB7IH07CiAgICAgdm9pZCBzY3JvbGxOb25Db21wb3NpdGVk
Q29udGVudHMoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBmb3JjZVJlcGFpbnQoKSBvdmVycmlkZTsKLSAgICBib29sIGZvcmNlUmVwYWludEFz
eW5jKHVpbnQ2NF90IC8qY2FsbGJhY2tJRCovKSBvdmVycmlkZTsKICAgICB2b2lkIHNpemVEaWRD
aGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGV2aWNl
T3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHBhdXNlUmVu
ZGVyaW5nKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZXN1bWVSZW5kZXJpbmcoKSBvdmVycmlkZTsK
LQotICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBncmFwaGljc0xheWVyRmFjdG9y
eSgpIG92ZXJyaWRlOwotICAgIHZvaWQgcGFnZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2Vk
KCkgb3ZlcnJpZGUgeyB9OwotCiAgICAgdm9pZCBjb250ZW50c1NpemVDaGFuZ2VkKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENoYW5nZVZpZXdwb3J0UHJv
cGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMmKSBvdmVycmlkZTsKIApA
QCAtOTMsNTUgKzYyLDUwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5hdGl2ZVN1cmZhY2VIYW5k
bGVGb3JDb21wb3NpdGluZyh1aW50NjRfdCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAotI2lmIEVOQUJM
RShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKLSAgICB2b2lkIHNjaGVkdWxlQW5pbWF0aW9uKCkg
b3ZlcnJpZGU7Ci0jZW5kaWYKLQotICAgIHZvaWQgc2V0Vmlld092ZXJsYXlSb290TGF5ZXIoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwotICAgIHN0YXRpYyBSZWZQdHI8V2ViQ29y
ZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPiBjcmVhdGVDb29yZGluYXRlZFN1cmZhY2UoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MpOwotCi1w
cm90ZWN0ZWQ6Ci0gICAgZXhwbGljaXQgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Qo
V2ViUGFnZSYpOwotCi1wcml2YXRlOgorICAgIGNsYXNzIENvbXBvc2l0b3JDbGllbnQgZmluYWwg
OiBwdWJsaWMgVGhyZWFkZWRDb21wb3NpdG9yOjpDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAg
ICAgQ29tcG9zaXRvckNsaWVudChUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCYgbGF5
ZXJUcmVlSG9zdCkKKyAgICAgICAgICAgIDogbV9sYXllclRyZWVIb3N0KGxheWVyVHJlZUhvc3Qp
CisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgdm9pZCBzZXRW
aXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgcmVjdCwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3RvciwgZmxvYXQgc2NhbGUpIG92ZXJy
aWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC5zZXRWaXNpYmxlQ29u
dGVudHNSZWN0KHJlY3QsIHRyYWplY3RvcnlWZWN0b3IsIHNjYWxlKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHZvaWQgcHVyZ2VCYWNraW5nU3RvcmVzKCkgb3ZlcnJpZGUKKyAgICAgICAgeworICAg
ICAgICAgICAgbV9sYXllclRyZWVIb3N0LnB1cmdlQmFja2luZ1N0b3JlcygpOworICAgICAgICB9
CisKKyAgICAgICAgdm9pZCByZW5kZXJOZXh0RnJhbWUoKSBvdmVycmlkZQorICAgICAgICB7Cisg
ICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QucmVuZGVyTmV4dEZyYW1lKCk7CisgICAgICAgIH0K
KworICAgICAgICB2b2lkIGNvbW1pdFNjcm9sbE9mZnNldCh1aW50MzJfdCBsYXllcklELCBjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiBvZmZzZXQpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdC5jb21taXRTY3JvbGxPZmZzZXQobGF5ZXJJRCwgb2Zmc2V0KTsK
KyAgICAgICAgfQorCisgICAgICAgIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0JiBt
X2xheWVyVHJlZUhvc3Q7CisgICAgfTsKIAotICAgIHZvaWQgY29tcG9zaXRvckRpZEZsdXNoTGF5
ZXJzKCk7CiAgICAgdm9pZCBkaWRTY2FsZUZhY3RvckNoYW5nZWQoZmxvYXQgc2NhbGUsIGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiBvcmlnaW4pOwogCi0gICAgdm9pZCBjYW5jZWxQZW5kaW5nTGF5
ZXJGbHVzaCgpOwotICAgIHZvaWQgcGVyZm9ybVNjaGVkdWxlZExheWVyRmx1c2goKTsKLQotICAg
IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIHJvb3RMYXllcigpIHsgcmV0dXJuIG1fY29vcmRpbmF0
b3ItPnJvb3RMYXllcigpOyB9Ci0KLSAgICAvLyBUaHJlYWRlZENvbXBvc2l0b3I6OkNsaWVudAot
ICAgIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgZmxvYXQpIG92ZXJyaWRlOwotICAgIHZvaWQg
cHVyZ2VCYWNraW5nU3RvcmVzKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZW5kZXJOZXh0RnJhbWUo
KSBvdmVycmlkZTsKLSAgICB2b2lkIGNvbW1pdFNjcm9sbE9mZnNldCh1aW50MzJfdCBsYXllcklE
LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBvZmZzZXQpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0
VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFBvaW50JiwgZmxvYXQpOwogCiAgICAgLy8gQ29tcG9zaXRpbmdDb29yZGluYXRv
cjo6Q2xpZW50CiAgICAgdm9pZCBkaWRGbHVzaFJvb3RMYXllcihjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmKSBvdmVycmlkZSB7IH0KLSAgICB2b2lkIG5vdGlmeUZsdXNoUmVxdWlyZWQoKSBvdmVy
cmlkZTsKICAgICB2b2lkIGNvbW1pdFNjZW5lU3RhdGUoY29uc3QgV2ViQ29yZTo6Q29vcmRpbmF0
ZWRHcmFwaGljc1N0YXRlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwYWludExheWVyQ29udGVudHMo
Y29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciosIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0KSBvdmVycmlkZTsKLQotICAgIExheWVy
VHJlZUNvbnRleHQgbV9sYXllclRyZWVDb250ZXh0OwotICAgIHVpbnQ2NF90IG1fZm9yY2VSZXBh
aW50QXN5bmNDYWxsYmFja0lEOwogCiAgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9wcmV2U2Nyb2xs
UG9zaXRpb247Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q29tcG9zaXRpbmdDb29y
ZGluYXRvcj4gbV9jb29yZGluYXRvcjsKKyAgICBDb21wb3NpdG9yQ2xpZW50IG1fY29tcG9zaXRv
ckNsaWVudDsKICAgICBSZWZQdHI8VGhyZWFkZWRDb21wb3NpdG9yPiBtX2NvbXBvc2l0b3I7Ci0K
LSAgICBib29sIG1fbm90aWZ5QWZ0ZXJTY2hlZHVsZWRMYXllckZsdXNoOwotICAgIGJvb2wgbV9p
c1N1c3BlbmRlZDsKLSAgICBib29sIG1faXNXYWl0aW5nRm9yUmVuZGVyZXI7Ci0KLSAgICBmbG9h
dCBtX2xhc3RTY2FsZUZhY3RvcjsKKyAgICBmbG9hdCBtX2xhc3RTY2FsZUZhY3RvciB7IDEgfTsK
ICAgICBXZWJDb3JlOjpJbnRQb2ludCBtX2xhc3RTY3JvbGxQb3NpdGlvbjsKLQotICAgIFJ1bkxv
b3A6OlRpbWVyPFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0PiBtX2xheWVyRmx1c2hU
aW1lcjsKLSAgICBib29sIG1fbGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFibGVkOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9EcmF3aW5nQXJlYS5oCmluZGV4IGI0MzJiYmQuLmMyOWQ0ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCkBAIC0xMzgsNiArMTM4LDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHZW9tZXRyeShjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiB2aWV3U2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgbGF5ZXJQb3NpdGlv
biwgYm9vbCBmbHVzaFN5bmNocm9ub3VzbHksIGNvbnN0IFdlYkNvcmU6Ok1hY2hTZW5kUmlnaHQm
IGZlbmNlUG9ydCkgeyB9CiAjZW5kaWYKIAorICAgIHZpcnR1YWwgdm9pZCBsYXllckhvc3REaWRG
bHVzaExheWVycygpIHsgfTsKKwogcHJvdGVjdGVkOgogICAgIERyYXdpbmdBcmVhKERyYXdpbmdB
cmVhVHlwZSwgV2ViUGFnZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmgKaW5kZXggNmYxZjg3NC4uZTdiNjM2YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwu
aApAQCAtNDUsOCArNDUsNiBAQCBwdWJsaWM6CiAgICAgRHJhd2luZ0FyZWFJbXBsKFdlYlBhZ2Um
LCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgdmlydHVhbCB+RHJhd2lu
Z0FyZWFJbXBsKCk7CiAKLSAgICB2b2lkIGxheWVySG9zdERpZEZsdXNoTGF5ZXJzKCk7Ci0KIHBy
aXZhdGU6CiAgICAgLy8gRHJhd2luZ0FyZWEKICAgICB2b2lkIHNldE5lZWRzRGlzcGxheSgpIG92
ZXJyaWRlOwpAQCAtNzUsNiArNzMsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVzdHJveU5hdGl2
ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZyhib29sJikgb3ZlcnJpZGU7CiAjZW5kaWYKIAor
ICAgIHZvaWQgbGF5ZXJIb3N0RGlkRmx1c2hMYXllcnMoKSBvdmVycmlkZTsKKwogICAgIC8vIElQ
QyBtZXNzYWdlIGhhbmRsZXJzLgogICAgIHZvaWQgdXBkYXRlQmFja2luZ1N0b3JlU3RhdGUodWlu
dDY0X3QgYmFja2luZ1N0b3JlU3RhdGVJRCwgYm9vbCByZXNwb25kSW1tZWRpYXRlbHksIGZsb2F0
IGRldmljZVNjYWxlRmFjdG9yLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgc2Nyb2xsT2Zmc2V0KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFVwZGF0ZSgp
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xh
eWVyVHJlZUhvc3QuY3BwCmluZGV4IGQyYTE0ZjguLjExZGQxMzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTYyLDYg
KzYyLDM5IEBAIExheWVyVHJlZUhvc3Q6OkxheWVyVHJlZUhvc3QoV2ViUGFnZSYgd2ViUGFnZSkK
IAogTGF5ZXJUcmVlSG9zdDo6fkxheWVyVHJlZUhvc3QoKQogeworICAgIEFTU0VSVCghbV9pc1Zh
bGlkKTsKK30KKwordm9pZCBMYXllclRyZWVIb3N0OjpzZXRMYXllckZsdXNoU2NoZWR1bGluZ0Vu
YWJsZWQoYm9vbCBsYXllckZsdXNoaW5nRW5hYmxlZCkKK3sKKyAgICBpZiAobV9sYXllckZsdXNo
U2NoZWR1bGluZ0VuYWJsZWQgPT0gbGF5ZXJGbHVzaGluZ0VuYWJsZWQpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fbGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFibGVkID0gbGF5ZXJGbHVzaGluZ0Vu
YWJsZWQ7CisKKyAgICBpZiAobV9sYXllckZsdXNoU2NoZWR1bGluZ0VuYWJsZWQpIHsKKyAgICAg
ICAgc2NoZWR1bGVMYXllckZsdXNoKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBj
YW5jZWxQZW5kaW5nTGF5ZXJGbHVzaCgpOworfQorCit2b2lkIExheWVyVHJlZUhvc3Q6OnBhdXNl
UmVuZGVyaW5nKCkKK3sKKyAgICBtX2lzU3VzcGVuZGVkID0gdHJ1ZTsKK30KKwordm9pZCBMYXll
clRyZWVIb3N0OjpyZXN1bWVSZW5kZXJpbmcoKQoreworICAgIG1faXNTdXNwZW5kZWQgPSBmYWxz
ZTsKKyAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKK30KKwordm9pZCBMYXllclRyZWVIb3N0Ojpp
bnZhbGlkYXRlKCkKK3sKKyAgICBBU1NFUlQobV9pc1ZhbGlkKTsKKyAgICBtX2lzVmFsaWQgPSBm
YWxzZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaAppbmRleCAyMWJmOTE5Li5iYWVlNGFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVl
SG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVI
b3N0LmgKQEAgLTI5LDggKzI5LDcgQEAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpIHx8
IFVTRShURVhUVVJFX01BUFBFUikKIAogI2luY2x1ZGUgIkxheWVyVHJlZUNvbnRleHQuaCIKLSNp
bmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5h
bWVzcGFjZSBJUEMgewpAQCAtMzksOCArMzgsNiBAQCBjbGFzcyBNZXNzYWdlRGVjb2RlcjsKIH0K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgRmxvYXRQb2ludDsKLWNsYXNzIEZsb2F0UmVj
dDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgR3JhcGhpY3NMYXllcjsK
QEAgLTUyLDcgKzQ5LDYgQEAgc3RydWN0IFZpZXdwb3J0QXR0cmlidXRlczsKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLWNsYXNzIFVwZGF0ZUluZm87CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBM
YXllclRyZWVIb3N0IDogcHVibGljIFJlZkNvdW50ZWQ8TGF5ZXJUcmVlSG9zdD4gewpAQCAtNjAs
MzQgKzU2LDM2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPExheWVyVHJlZUhvc3Q+IGNy
ZWF0ZShXZWJQYWdlJik7CiAgICAgdmlydHVhbCB+TGF5ZXJUcmVlSG9zdCgpOwogCi0gICAgdmly
dHVhbCBjb25zdCBMYXllclRyZWVDb250ZXh0JiBsYXllclRyZWVDb250ZXh0KCkgPSAwOworICAg
IGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGxheWVyVHJlZUNvbnRleHQoKSBjb25zdCB7IHJldHVy
biBtX2xheWVyVHJlZUNvbnRleHQ7IH0KKyAgICB2b2lkIHNldExheWVyRmx1c2hTY2hlZHVsaW5n
RW5hYmxlZChib29sKTsKKyAgICB2b2lkIHNldFNob3VsZE5vdGlmeUFmdGVyTmV4dFNjaGVkdWxl
ZExheWVyRmx1c2goYm9vbCBub3RpZnlBZnRlclNjaGVkdWxlZExheWVyRmx1c2gpIHsgbV9ub3Rp
ZnlBZnRlclNjaGVkdWxlZExheWVyRmx1c2ggPSBub3RpZnlBZnRlclNjaGVkdWxlZExheWVyRmx1
c2g7IH0KKwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUxheWVyRmx1c2goKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHNldExheWVyRmx1c2hTY2hlZHVsaW5nRW5hYmxlZChib29sKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIHNldFNob3VsZE5vdGlmeUFmdGVyTmV4dFNjaGVkdWxlZExheWVyRmx1
c2goYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxQZW5kaW5nTGF5ZXJGbHVzaCgp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoV2ViQ29yZTo6
R3JhcGhpY3NMYXllciopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgpOwogCi0gICAgdmlydHVhbCB2b2lkIHNldE5v
bkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5KCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBz
ZXROb25Db21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheUluUmVjdChjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxOb25Db21wb3NpdGVkQ29udGVu
dHMoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzZXROb25Db21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheSgpIHsgfTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVlZERpc3BsYXlJblJlY3QoY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsTm9uQ29tcG9z
aXRlZENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSB7IH07CiAgICAgdmlydHVhbCB2
b2lkIGZvcmNlUmVwYWludCgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgZm9yY2VSZXBhaW50QXN5
bmModWludDY0X3QgLypjYWxsYmFja0lEKi8pIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVh
bCB2b2lkIHNpemVEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgbmV3U2l6ZSkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHBhZ2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgpID0g
MDsKIAotICAgIHZpcnR1YWwgdm9pZCBwYXVzZVJlbmRlcmluZygpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCByZXN1bWVSZW5kZXJpbmcoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGF1c2VSZW5kZXJp
bmcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lUmVuZGVyaW5nKCk7CiAKLSAgICB2aXJ0dWFs
IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBncmFwaGljc0xheWVyRmFjdG9yeSgpIHsg
cmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBn
cmFwaGljc0xheWVyRmFjdG9yeSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogI2lmIFVTRShDT09S
RElOQVRFRF9HUkFQSElDU19NVUxUSVBST0NFU1MpCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVDb29yZGluYXRlZExheWVyVHJlZUhvc3RNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
TWVzc2FnZURlY29kZXImKSA9IDA7CiAjZW5kaWYKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQ
SElDU19USFJFQURFRCkKLSAgICB2aXJ0dWFsIHZvaWQgY29udGVudHNTaXplQ2hhbmdlZChjb25z
dCBXZWJDb3JlOjpJbnRTaXplJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VWaWV3
cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBjb250ZW50c1NpemVDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OkludFNp
emUmKSB7IH07CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhj
b25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMmKSB7IH07CiAjZW5kaWYKIAogI2lmIFVT
RShDT09SRElOQVRFRF9HUkFQSElDUykgJiYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1F
KQpAQCAtOTUsMTUgKzkzLDIxIEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgVVNFKFRFWFRVUkVf
TUFQUEVSKSAmJiBQTEFURk9STShHVEspCi0gICAgdmlydHVhbCB2b2lkIHNldE5hdGl2ZVN1cmZh
Y2VIYW5kbGVGb3JDb21wb3NpdGluZyh1aW50NjRfdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
ZXROYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcodWludDY0X3QpIHsgfTsKICNlbmRp
ZgogCi0gICAgdmlydHVhbCB2b2lkIHNldFZpZXdPdmVybGF5Um9vdExheWVyKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXIqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFZpZXdPdmVybGF5Um9vdExh
eWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIHZpZXdPdmVybGF5Um9vdExheWVyKSB7IG1fdmll
d092ZXJsYXlSb290TGF5ZXIgPSB2aWV3T3ZlcmxheVJvb3RMYXllcjsgfQogCiBwcm90ZWN0ZWQ6
CiAgICAgZXhwbGljaXQgTGF5ZXJUcmVlSG9zdChXZWJQYWdlJik7CiAKICAgICBXZWJQYWdlJiBt
X3dlYlBhZ2U7CisgICAgTGF5ZXJUcmVlQ29udGV4dCBtX2xheWVyVHJlZUNvbnRleHQ7CisgICAg
Ym9vbCBtX2xheWVyRmx1c2hTY2hlZHVsaW5nRW5hYmxlZCB7IHRydWUgfTsKKyAgICBib29sIG1f
bm90aWZ5QWZ0ZXJTY2hlZHVsZWRMYXllckZsdXNoIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNT
dXNwZW5kZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc1ZhbGlkIHsgdHJ1ZSB9OworICAgIFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXIqIG1fdmlld092ZXJsYXlSb290TGF5ZXIgeyBudWxscHRyIH07
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3BwCmluZGV4IDU1
MmE3NjIuLjQ0ZTVlMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcApAQCAtMTMzLDEwICsxMzMsNiBA
QCBSZWY8TGF5ZXJUcmVlSG9zdEd0az4gTGF5ZXJUcmVlSG9zdEd0azo6Y3JlYXRlKFdlYlBhZ2Um
IHdlYlBhZ2UpCiAKIExheWVyVHJlZUhvc3RHdGs6OkxheWVyVHJlZUhvc3RHdGsoV2ViUGFnZSYg
d2ViUGFnZSkKICAgICA6IExheWVyVHJlZUhvc3Qod2ViUGFnZSkKLSAgICAsIG1faXNWYWxpZCh0
cnVlKQotICAgICwgbV9ub3RpZnlBZnRlclNjaGVkdWxlZExheWVyRmx1c2goZmFsc2UpCi0gICAg
LCBtX2xheWVyRmx1c2hTY2hlZHVsaW5nRW5hYmxlZCh0cnVlKQotICAgICwgbV92aWV3T3Zlcmxh
eVJvb3RMYXllcihudWxscHRyKQogICAgICwgbV9yZW5kZXJGcmFtZVNjaGVkdWxlcihzdGQ6OmJp
bmQoJkxheWVyVHJlZUhvc3RHdGs6OnJlbmRlckZyYW1lLCB0aGlzKSkKIHsKICAgICBtX3Jvb3RM
YXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShncmFwaGljc0xheWVyRmFjdG9yeSgpLCAqdGhp
cyk7CkBAIC0xODMsMjEgKzE3OSwxMCBAQCBib29sIExheWVyVHJlZUhvc3RHdGs6Om1ha2VDb250
ZXh0Q3VycmVudCgpCiAKIExheWVyVHJlZUhvc3RHdGs6On5MYXllclRyZWVIb3N0R3RrKCkKIHsK
LSAgICBBU1NFUlQoIW1faXNWYWxpZCk7CiAgICAgQVNTRVJUKCFtX3Jvb3RMYXllcik7CiAgICAg
Y2FuY2VsUGVuZGluZ0xheWVyRmx1c2goKTsKIH0KIAotY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYg
TGF5ZXJUcmVlSG9zdEd0azo6bGF5ZXJUcmVlQ29udGV4dCgpCi17Ci0gICAgcmV0dXJuIG1fbGF5
ZXJUcmVlQ29udGV4dDsKLX0KLQotdm9pZCBMYXllclRyZWVIb3N0R3RrOjpzZXRTaG91bGROb3Rp
ZnlBZnRlck5leHRTY2hlZHVsZWRMYXllckZsdXNoKGJvb2wgbm90aWZ5QWZ0ZXJTY2hlZHVsZWRM
YXllckZsdXNoKQotewotICAgIG1fbm90aWZ5QWZ0ZXJTY2hlZHVsZWRMYXllckZsdXNoID0gbm90
aWZ5QWZ0ZXJTY2hlZHVsZWRMYXllckZsdXNoOwotfQotCiB2b2lkIExheWVyVHJlZUhvc3RHdGs6
OnNldFJvb3RDb21wb3NpdGluZ0xheWVyKEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIpCiB7
CiAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5yZW1vdmVBbGxDaGlsZHJlbigpOwpA
QCAtMjExLDggKzE5Niw2IEBAIHZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6c2V0Um9vdENvbXBvc2l0
aW5nTGF5ZXIoR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikKIAogdm9pZCBMYXllclRyZWVI
b3N0R3RrOjppbnZhbGlkYXRlKCkKIHsKLSAgICBBU1NFUlQobV9pc1ZhbGlkKTsKLQogICAgIC8v
IFRoaXMgY2FuIHRyaWdnZXIgZGVzdHJ1Y3Rpb24gb2YgR0wgb2JqZWN0cyBzbyBsZXQncyBtYWtl
IHN1cmUgdGhhdAogICAgIC8vIHdlIGhhdmUgdGhlIHJpZ2h0IGFjdGl2ZSBjb250ZXh0CiAgICAg
aWYgKG1fY29udGV4dCkKQEAgLTIyNCw3ICsyMDcsNyBAQCB2b2lkIExheWVyVHJlZUhvc3RHdGs6
OmludmFsaWRhdGUoKQogICAgIG1fdGV4dHVyZU1hcHBlciA9IG51bGxwdHI7CiAKICAgICBtX2Nv
bnRleHQgPSBudWxscHRyOwotICAgIG1faXNWYWxpZCA9IGZhbHNlOworICAgIExheWVyVHJlZUhv
c3Q6OmludmFsaWRhdGUoKTsKIH0KIAogdm9pZCBMYXllclRyZWVIb3N0R3RrOjpzZXROb25Db21w
b3NpdGVkQ29udGVudHNOZWVkRGlzcGxheSgpCkBAIC0zNjUsNyArMzQ4LDcgQEAgdm9pZCBMYXll
clRyZWVIb3N0R3RrOjpmbHVzaEFuZFJlbmRlckxheWVycygpCiAKICAgICBpZiAobV9ub3RpZnlB
ZnRlclNjaGVkdWxlZExheWVyRmx1c2gpIHsKICAgICAgICAgLy8gTGV0IHRoZSBkcmF3aW5nIGFy
ZWEga25vdyB0aGF0IHdlJ3ZlIGRvbmUgYSBmbHVzaCBvZiB0aGUgbGF5ZXIgY2hhbmdlcy4KLSAg
ICAgICAgc3RhdGljX2Nhc3Q8RHJhd2luZ0FyZWFJbXBsKj4obV93ZWJQYWdlLmRyYXdpbmdBcmVh
KCkpLT5sYXllckhvc3REaWRGbHVzaExheWVycygpOworICAgICAgICBtX3dlYlBhZ2UuZHJhd2lu
Z0FyZWEoKS0+bGF5ZXJIb3N0RGlkRmx1c2hMYXllcnMoKTsKICAgICAgICAgbV9ub3RpZnlBZnRl
clNjaGVkdWxlZExheWVyRmx1c2ggPSBmYWxzZTsKICAgICB9CiB9CkBAIC0zNzgsMjEgKzM2MSw2
IEBAIHZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6c2NoZWR1bGVMYXllckZsdXNoKCkKICAgICBtX3Jl
bmRlckZyYW1lU2NoZWR1bGVyLnN0YXJ0KCk7CiB9CiAKLXZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6
c2V0TGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFibGVkKGJvb2wgbGF5ZXJGbHVzaGluZ0VuYWJsZWQp
Ci17Ci0gICAgaWYgKG1fbGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFibGVkID09IGxheWVyRmx1c2hp
bmdFbmFibGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2xheWVyRmx1c2hTY2hlZHVsaW5n
RW5hYmxlZCA9IGxheWVyRmx1c2hpbmdFbmFibGVkOwotCi0gICAgaWYgKG1fbGF5ZXJGbHVzaFNj
aGVkdWxpbmdFbmFibGVkKSB7Ci0gICAgICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgY2FuY2VsUGVuZGluZ0xheWVyRmx1c2goKTsKLX0KLQog
dm9pZCBMYXllclRyZWVIb3N0R3RrOjpwYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQo
KQogewogICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0Q29udGVudHNPcGFxdWUo
bV93ZWJQYWdlLmRyYXdzQmFja2dyb3VuZCgpKTsKQEAgLTQwMyw5ICszNzEsOSBAQCB2b2lkIExh
eWVyVHJlZUhvc3RHdGs6OmNhbmNlbFBlbmRpbmdMYXllckZsdXNoKCkKICAgICBtX3JlbmRlckZy
YW1lU2NoZWR1bGVyLnN0b3AoKTsKIH0KIAotdm9pZCBMYXllclRyZWVIb3N0R3RrOjpzZXRWaWV3
T3ZlcmxheVJvb3RMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKiB2aWV3T3ZlcmxheVJvb3RM
YXllcikKK3ZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6c2V0Vmlld092ZXJsYXlSb290TGF5ZXIoR3Jh
cGhpY3NMYXllciogdmlld092ZXJsYXlSb290TGF5ZXIpCiB7Ci0gICAgbV92aWV3T3ZlcmxheVJv
b3RMYXllciA9IHZpZXdPdmVybGF5Um9vdExheWVyOworICAgIExheWVyVHJlZUhvc3Q6OnNldFZp
ZXdPdmVybGF5Um9vdExheWVyKHZpZXdPdmVybGF5Um9vdExheWVyKTsKICAgICBpZiAobV92aWV3
T3ZlcmxheVJvb3RMYXllcikKICAgICAgICAgbV9yb290TGF5ZXItPmFkZENoaWxkKG1fdmlld092
ZXJsYXlSb290TGF5ZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuaAppbmRleCBiYmZiMzIxLi5jMTViODZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVy
VHJlZUhvc3RHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3Rr
L0xheWVyVHJlZUhvc3RHdGsuaApAQCAtNTEsNyArNTEsNyBAQCBwcml2YXRlOgogCiAgICAgLy8g
TGF5ZXJUcmVlSG9zdAogICAgIHZvaWQgc2NoZWR1bGVMYXllckZsdXNoKCkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBzZXRMYXllckZsdXNoU2NoZWR1bGluZ0VuYWJsZWQoYm9vbCBsYXllckZsdXNoaW5n
RW5hYmxlZCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjYW5jZWxQZW5kaW5nTGF5ZXJGbHVzaCgpIG92
ZXJyaWRlOwogICAgIHZvaWQgc2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllciopIG92ZXJyaWRlOwogICAgIHZvaWQgaW52YWxpZGF0ZSgpIG92ZXJyaWRlOwogCkBA
IC02MCw2ICs2MCwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGV2aWNlT3JQYWdlU2NhbGVGYWN0
b3JDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5j
eUNoYW5nZWQoKSBvdmVycmlkZTsKIAorICAgIHZvaWQgc2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRz
TmVlZERpc3BsYXkoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldE5vbkNvbXBvc2l0ZWRDb250ZW50
c05lZWREaXNwbGF5SW5SZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHNjcm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiBzY3JvbGxSZWN0KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFZpZXdPdmVybGF5Um9vdExheWVy
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKKwogICAgIHZvaWQgc2V0TmF0aXZl
U3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKHVpbnQ2NF90KSBvdmVycmlkZTsKIAogICAgIGNs
YXNzIFJlbmRlckZyYW1lU2NoZWR1bGVyIHsKQEAgLTgwLDE1ICs4NSw2IEBAIHByaXZhdGU6CiAg
ICAgICAgIGRvdWJsZSBtX2xhc3RJbW1lZGlhdGVGbHVzaFRpbWUgeyAwIH07CiAgICAgfTsKIAot
ICAgIC8vIExheWVyVHJlZUhvc3QKLSAgICBjb25zdCBMYXllclRyZWVDb250ZXh0JiBsYXllclRy
ZWVDb250ZXh0KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRTaG91bGROb3RpZnlBZnRlck5leHRT
Y2hlZHVsZWRMYXllckZsdXNoKGJvb2wpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBzZXROb25Db21w
b3NpdGVkQ29udGVudHNOZWVkRGlzcGxheSgpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0Tm9uQ29t
cG9zaXRlZENvbnRlbnRzTmVlZERpc3BsYXlJblJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYp
IG92ZXJyaWRlOwotICAgIHZvaWQgc2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3QpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0Vmlld092
ZXJsYXlSb290TGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwotCiAgICAg
Ly8gR3JhcGhpY3NMYXllckNsaWVudAogICAgIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBXZWJD
b3JlOjpHcmFwaGljc0xheWVyKiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgV2ViQ29yZTo6
R3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgY2xp
cFJlY3QpIG92ZXJyaWRlOwogICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKCkgY29uc3Qgb3Zl
cnJpZGU7CkBAIC0xMDAsMjEgKzk2LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21wb3NpdGVM
YXllcnNUb0NvbnRleHQoQ29tcG9zaXRlUHVycG9zZSA9IE5vdEZvclJlc2l6ZSk7CiAKICAgICB2
b2lkIGZsdXNoQW5kUmVuZGVyTGF5ZXJzKCk7Ci0gICAgdm9pZCBjYW5jZWxQZW5kaW5nTGF5ZXJG
bHVzaCgpOwotCiAgICAgYm9vbCByZW5kZXJGcmFtZSgpOwotCiAgICAgYm9vbCBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKIAotICAgIExheWVyVHJlZUNvbnRleHQgbV9sYXllclRyZWVDb250ZXh0Owot
ICAgIGJvb2wgbV9pc1ZhbGlkOwotICAgIGJvb2wgbV9ub3RpZnlBZnRlclNjaGVkdWxlZExheWVy
Rmx1c2g7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+IG1fcm9v
dExheWVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyPiBtX25v
bkNvbXBvc2l0ZWRDb250ZW50TGF5ZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXI+IG1fdGV4dHVyZU1hcHBlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6R0xDb250ZXh0PiBtX2NvbnRleHQ7Ci0gICAgYm9vbCBtX2xheWVyRmx1c2hTY2hlZHVsaW5n
RW5hYmxlZDsKLSAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBtX3ZpZXdPdmVybGF5Um9vdExh
eWVyOwogICAgIFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fc2NhbGVNYXRyaXg7CiAg
ICAgUmVuZGVyRnJhbWVTY2hlZHVsZXIgbV9yZW5kZXJGcmFtZVNjaGVkdWxlcjsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282123</attachid>
            <date>2016-06-27 05:22:46 -0700</date>
            <delta_ts>2016-06-29 04:41:42 -0700</delta_ts>
            <desc>Try to fix EFL build</desc>
            <filename>wk2-layer-tree-host.diff</filename>
            <type>text/plain</type>
            <size>46595</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA0MTM3ZTZhLi4wYzFlMzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODIg
QEAKKzIwMTYtMDYtMjcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFRvbyBtdWNoIGR1cGxpY2F0ZWQgY29kZSBpbiBMYXllclRyZWVIb3N0cyBp
bXBsZW1lbnRhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1OTE0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoZXJlJ3Mgc29tZSBjb2RlIGNvbW1vbiBhbmQgZHVwbGljYXRlZCBpbiBhbGwgY3Vy
cmVudCBMYXllclRyZWVIb3N0cyBpbXBsZW1lbnRhdGlvbnMgKEd0aywgQ29vcmRpbmF0ZWQsIGFu
ZAorICAgICAgICBUaHJlYWRlZENvb3JkaW5hdGVkKS4gVGhlIHRoaW5nIGlzIGV2ZW4gd29yc2Ug
aW4gdGhlIGNhc2Ugb2YgVGhyZWFkZWRDb29yZGluYXRlZCBhbmQgQ29vcmRpbmF0ZWQsIHdoZXJl
IHRoZQorICAgICAgICBmb3JtZXIgaXMgYWN0dWFsbHkgYSBzcGVjaWFsIGNhc2Ugb2YgdGhlIGxh
dGVyLCBhbmQgaXQgc2VlbXMgbGlrZSBjb2RlIHdhcyBjb3B5IHBhc3RlZCBhbmQgdGhlbiBtb2Rp
ZmllZCB0byBhZGQKKyAgICAgICAgVGhyZWFkZWRDb29yZGluYXRlZCBzcGVjaWZpYyBjb2RlLiBU
aGUgcHJvYmxlbSBvZiB0aGF0IGFwcHJvYWNoLCBhcGFydCBmcm9tIHRoZSBjb2RlIGR1cGxpY2F0
aW9uLCBpcyB0aGF0IGNvbW1vbgorICAgICAgICBwYXJ0cyBlbmQgdXAgZGl2ZXJnaW5nIHRvby4g
VGhpcyBwYXRjaCBtb3ZlcyB0aGUgY29tbW9uIHBhcnRzIHRvIHRoZSBiYXNlIGNsYXNzIExheWVy
VHJlZUhvc3QgYW5kIG1ha2VzCisgICAgICAgIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0IGluaGVyaXQgZnJvbSBDb29yZGluYXRlZExheWVyVHJlZUhvc3QsIHRvIHNoYXJlIHRoZSBj
b21tb24gY29kZSBhbmQgc2ltcGx5IGFkZAorICAgICAgICB0aGUgc3BlY2lmaWMgb25lLgorCisg
ICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWREcmF3aW5nQXJlYS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0OjpzY2hlZHVsZUxheWVyRmx1c2gpOgorICAgICAgICAoV2ViS2l0OjpDb29y
ZGluYXRlZExheWVyVHJlZUhvc3Q6OnNldFZpZXdPdmVybGF5Um9vdExheWVyKToKKyAgICAgICAg
KFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzZXRSb290Q29tcG9zaXRpbmdMYXll
cik6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6aW52YWxpZGF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2l6ZURpZENo
YW5nZSk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6bGF5ZXJG
bHVzaFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhv
c3Q6OmNvbW1pdFNjZW5lU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OmNyZWF0ZUNvb3JkaW5hdGVkU3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OkNv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y2FuY2VsUGVuZGluZ0xheWVyRmx1c2gpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmZvcmNlUmVwYWlu
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
Zm9yY2VSZXBhaW50QXN5bmMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRl
ZExheWVyVHJlZUhvc3Q6OmRpZEZsdXNoUm9vdExheWVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNo
YW5nZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhv
c3Q6OnBhZ2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Z3JhcGhpY3NMYXllckZhY3Rvcnkp
OiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6
OlRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KToKKyAgICAgICAgKFdlYktpdDo6VGhy
ZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hh
bmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpzaXplRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb29yZGluYXRlZExh
eWVyVHJlZUhvc3Q6OnNldFZpc2libGVDb250ZW50c1JlY3QpOgorICAgICAgICAoV2ViS2l0OjpU
aHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y29tbWl0U2NlbmVTdGF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjcmVhdGUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dDo6c2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6VGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNvbnRlbnRzU2l6ZUNoYW5nZWQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdDo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6VGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRpZFNjYWxlRmFjdG9yQ2hh
bmdlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0OjpzZXROYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcpOiBEZWxldGVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVh
ZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL0RyYXdpbmdBcmVhLmg6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjpsYXllckhv
c3REaWRGbHVzaExheWVycyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdB
cmVhSW1wbC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6fkxheWVyVHJlZUhvc3QpOgorICAg
ICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0OjpzZXRMYXllckZsdXNoU2NoZWR1bGluZ0VuYWJs
ZWQpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0OjpwYXVzZVJlbmRlcmluZyk6Cisg
ICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6OnJlc3VtZVJlbmRlcmluZyk6CisgICAgICAg
IChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6OmludmFsaWRhdGUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9MYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhv
c3Q6OmxheWVyVHJlZUNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0Ojpz
ZXRTaG91bGROb3RpZnlBZnRlck5leHRTY2hlZHVsZWRMYXllckZsdXNoKToKKyAgICAgICAgKFdl
YktpdDo6TGF5ZXJUcmVlSG9zdDo6c2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVlZERpc3BsYXkp
OgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0OjpzZXROb25Db21wb3NpdGVkQ29udGVu
dHNOZWVkRGlzcGxheUluUmVjdCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6OnNj
cm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50cyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhv
c3Q6OmdyYXBoaWNzTGF5ZXJGYWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9z
dDo6Y29udGVudHNTaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6
OmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJl
ZUhvc3Q6OnNldE5hdGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZyk6CisgICAgICAgIChX
ZWJLaXQ6OkxheWVyVHJlZUhvc3Q6OnNldFZpZXdPdmVybGF5Um9vdExheWVyKToKKyAgICAgICAg
KFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6Zm9yY2VSZXBhaW50QXN5bmMpOiBEZWxldGVkLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RHdGs6OmludmFsaWRhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpMYXllclRyZWVIb3N0R3RrOjpzZXRWaWV3T3ZlcmxheVJvb3RMYXllcik6CisgICAgICAg
IChXZWJLaXQ6OkxheWVyVHJlZUhvc3RHdGs6OkxheWVyVHJlZUhvc3RHdGspOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0R3RrOjpzZXRSb290Q29tcG9zaXRpbmdMYXll
cik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RHdGs6OnNldE5vbkNv
bXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
TGF5ZXJUcmVlSG9zdEd0azo6c2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdEd0azo6c2V0TmF0aXZlU3VyZmFjZUhhbmRs
ZUZvckNvbXBvc2l0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
Z3RrL0xheWVyVHJlZUhvc3RHdGsuaDoKKwogMjAxNi0wNi0yNyAgTWlndWVsIEdvbWV6ICA8bWFn
b21lekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW0VGTF0gQnVpbGQgd2l0aCB0aHJlYWRl
ZCBjb21wb3NpdG9yIGVuYWJsZWQgaXMgYnJva2VuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCmlu
ZGV4IGFjMDJlNGMuLjRmNTU5MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
R1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC04MjYs
NiArODI2LDcgQEAgaWYgKEVOQUJMRV9USFJFQURFRF9DT01QT1NJVE9SKQogICAgICAgICBTaGFy
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkU2FmZUNvb3Jk
aW5hdGVkU3VyZmFjZS5jcHAKICAgICAgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhy
ZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKIAorICAgICAgICBXZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3Qu
Y3BwCiAgICAgICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVh
ZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAogICAgICkKICAgICBsaXN0KEFQUEVORCBX
ZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkRHJhd2luZ0Fy
ZWEuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWREcmF3aW5nQXJlYS5jcHAKaW5kZXggY2ExMTA4NC4uMDliNzJlZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWREcmF3aW5nQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWREcmF3aW5n
QXJlYS5jcHAKQEAgLTM0OCw4ICszNDgsNyBAQCB2b2lkIENvb3JkaW5hdGVkRHJhd2luZ0FyZWE6
OmF0dGFjaFZpZXdPdmVybGF5R3JhcGhpY3NMYXllcihXZWJDb3JlOjpGcmFtZSogZnJhbQogICAg
IGlmICghZnJhbWUtPmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdCogY29vcmRpbmF0ZWRMYXllclRyZWVIb3N0ID0gc3RhdGljX2Nh
c3Q8Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Kj4obV9sYXllclRyZWVIb3N0LmdldCgpKTsKLSAg
ICBjb29yZGluYXRlZExheWVyVHJlZUhvc3QtPnNldFZpZXdPdmVybGF5Um9vdExheWVyKHZpZXdP
dmVybGF5Um9vdExheWVyKTsKKyAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdPdmVybGF5Um9v
dExheWVyKHZpZXdPdmVybGF5Um9vdExheWVyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZERyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZERyYXdpbmdBcmVh
LmgKaW5kZXggZDBiOWYzZS4uZGQwZDYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWREcmF3aW5nQXJl
YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkRHJhd2luZ0FyZWEuaApAQCAtNDEsOCArNDEsNiBAQCBwdWJsaWM6
CiAgICAgQ29vcmRpbmF0ZWREcmF3aW5nQXJlYShXZWJQYWdlJiwgY29uc3QgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycyYpOwogICAgIHZpcnR1YWwgfkNvb3JkaW5hdGVkRHJhd2luZ0FyZWEoKTsK
IAotICAgIHZvaWQgbGF5ZXJIb3N0RGlkRmx1c2hMYXllcnMoKTsKLQogcHJpdmF0ZToKICAgICAv
LyBEcmF3aW5nQXJlYQogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCkgb3ZlcnJpZGU7CkBAIC02
OSw2ICs2Nyw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB2aWV3U3RhdGVEaWRDaGFuZ2UoV2ViQ29y
ZTo6Vmlld1N0YXRlOjpGbGFncywgYm9vbCAvKiB3YW50c0RpZFVwZGF0ZVZpZXdTdGF0ZSAqLywg
Y29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgLyogY2FsbGJhY2tJRHMgKi8pIG92ZXJyaWRlOwogICAg
IHZvaWQgYXR0YWNoVmlld092ZXJsYXlHcmFwaGljc0xheWVyKFdlYkNvcmU6OkZyYW1lKiwgV2Vi
Q29yZTo6R3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwogCisgICAgdm9pZCBsYXllckhvc3REaWRG
bHVzaExheWVycygpIG92ZXJyaWRlOworCiAgICAgLy8gSVBDIG1lc3NhZ2UgaGFuZGxlcnMuCiAg
ICAgdm9pZCB1cGRhdGVCYWNraW5nU3RvcmVTdGF0ZSh1aW50NjRfdCBiYWNraW5nU3RvcmVTdGF0
ZUlELCBib29sIHJlc3BvbmRJbW1lZGlhdGVseSwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIGNv
bnN0IFdlYkNvcmU6OkludFNpemUmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxPZmZz
ZXQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kUGFpbnRpbmcoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3Qu
Y3BwCmluZGV4IGI2OGRjNDAuLmRhMmFlODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcApAQCAtMzAsMjAgKzMwLDIx
IEBACiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogI2luY2x1ZGUgIkNvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdC5oIgogCi0jaW5jbHVkZSAiQ29vcmRpbmF0ZWREcmF3aW5nQXJlYS5oIgot
I2luY2x1ZGUgIkNvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUg
IkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5TWVzc2FnZXMuaCIKLSNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJEcmF3aW5nQXJlYS5oIgogI2luY2x1ZGUgIldlYkNv
b3JkaW5hdGVkU3VyZmFjZS5oIgotI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgog
I2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgot
I2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvTWFpbkZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdl
T3ZlcmxheUNvbnRyb2xsZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+Ci0jaW5j
bHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Nf
VEhSRUFERUQpCisjaW5jbHVkZSAiVGhyZWFkU2FmZUNvb3JkaW5hdGVkU3VyZmFjZS5oIgorI2Vs
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykKKyNpbmNsdWRlICJDb29y
ZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJDb29yZGluYXRlZExh
eWVyVHJlZUhvc3RQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCisjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTYwLDQ2ICs2
MSwyNCBAQCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6On5Db29yZGluYXRlZExheWVyVHJlZUhv
c3QoKQogCiBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dChXZWJQYWdlJiB3ZWJQYWdlKQogICAgIDogTGF5ZXJUcmVlSG9zdCh3ZWJQYWdlKQotICAgICwg
bV9ub3RpZnlBZnRlclNjaGVkdWxlZExheWVyRmx1c2goZmFsc2UpCi0gICAgLCBtX2lzVmFsaWQo
dHJ1ZSkKLSAgICAsIG1faXNTdXNwZW5kZWQoZmFsc2UpCi0gICAgLCBtX2lzV2FpdGluZ0ZvclJl
bmRlcmVyKHRydWUpCi0gICAgLCBtX2xheWVyRmx1c2hUaW1lcigqdGhpcywgJkNvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdDo6bGF5ZXJGbHVzaFRpbWVyRmlyZWQpCi0gICAgLCBtX2xheWVyRmx1c2hT
Y2hlZHVsaW5nRW5hYmxlZCh0cnVlKQotICAgICwgbV9mb3JjZVJlcGFpbnRBc3luY0NhbGxiYWNr
SUQoMCkKLSAgICAsIG1fdmlld092ZXJsYXlSb290TGF5ZXIobnVsbHB0cikKKyAgICAsIG1fY29v
cmRpbmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxDb21wb3NpdGluZ0Nvb3JkaW5hdG9yPih3ZWJQYWdl
LmNvcmVQYWdlKCksIHRoaXMpKQorICAgICwgbV9sYXllckZsdXNoVGltZXIoUnVuTG9vcDo6bWFp
bigpLCB0aGlzLCAmQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpsYXllckZsdXNoVGltZXJGaXJl
ZCkKIHsKLSAgICBtX2Nvb3JkaW5hdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxDb21wb3NpdGluZ0Nv
b3JkaW5hdG9yPihtX3dlYlBhZ2UuY29yZVBhZ2UoKSwgdGhpcyk7Ci0KICAgICBtX2Nvb3JkaW5h
dG9yLT5jcmVhdGVSb290TGF5ZXIobV93ZWJQYWdlLnNpemUoKSk7CisjaWYgVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykKICAgICBtX2xheWVyVHJlZUNvbnRleHQuY29udGV4
dElEID0gdG9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIobV9jb29yZGluYXRvci0+cm9vdExheWVy
KCkpLT5pZCgpOworI2VuZGlmCiAKICAgICBDb29yZGluYXRlZFN1cmZhY2U6OnNldEZhY3Rvcnko
Y3JlYXRlQ29vcmRpbmF0ZWRTdXJmYWNlKTsKLQogICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwog
fQogCi12b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0TGF5ZXJGbHVzaFNjaGVkdWxp
bmdFbmFibGVkKGJvb2wgbGF5ZXJGbHVzaGluZ0VuYWJsZWQpCi17Ci0gICAgaWYgKG1fbGF5ZXJG
bHVzaFNjaGVkdWxpbmdFbmFibGVkID09IGxheWVyRmx1c2hpbmdFbmFibGVkKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBtX2xheWVyRmx1c2hTY2hlZHVsaW5nRW5hYmxlZCA9IGxheWVyRmx1c2hp
bmdFbmFibGVkOwotCi0gICAgaWYgKG1fbGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFibGVkKSB7Ci0g
ICAgICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgY2FuY2VsUGVuZGluZ0xheWVyRmx1c2goKTsKLX0KLQogdm9pZCBDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OnNjaGVkdWxlTGF5ZXJGbHVzaCgpCiB7CiAgICAgaWYgKCFtX2xheWVyRmx1c2hT
Y2hlZHVsaW5nRW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX2xheWVyRmx1
c2hUaW1lci5pc0FjdGl2ZSgpIHx8IG1fbGF5ZXJGbHVzaFRpbWVyLm5leHRGaXJlSW50ZXJ2YWwo
KSA+IDApCisgICAgaWYgKCFtX2xheWVyRmx1c2hUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBt
X2xheWVyRmx1c2hUaW1lci5zdGFydE9uZVNob3QoMCk7CiB9CiAKQEAgLTEwOCwxOCArODcsMTMg
QEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNhbmNlbFBlbmRpbmdMYXllckZsdXNo
KCkKICAgICBtX2xheWVyRmx1c2hUaW1lci5zdG9wKCk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0OjpzZXRTaG91bGROb3RpZnlBZnRlck5leHRTY2hlZHVsZWRMYXllckZsdXNo
KGJvb2wgbm90aWZ5QWZ0ZXJTY2hlZHVsZWRMYXllckZsdXNoKQotewotICAgIG1fbm90aWZ5QWZ0
ZXJTY2hlZHVsZWRMYXllckZsdXNoID0gbm90aWZ5QWZ0ZXJTY2hlZHVsZWRMYXllckZsdXNoOwot
fQotCi12b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0Vmlld092ZXJsYXlSb290TGF5
ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciogdmlld092ZXJsYXlSb290TGF5ZXIpCit2b2lkIENv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0Vmlld092ZXJsYXlSb290TGF5ZXIoR3JhcGhpY3NM
YXllciogdmlld092ZXJsYXlSb290TGF5ZXIpCiB7Ci0gICAgbV92aWV3T3ZlcmxheVJvb3RMYXll
ciA9IHZpZXdPdmVybGF5Um9vdExheWVyOworICAgIExheWVyVHJlZUhvc3Q6OnNldFZpZXdPdmVy
bGF5Um9vdExheWVyKHZpZXdPdmVybGF5Um9vdExheWVyKTsKICAgICBtX2Nvb3JkaW5hdG9yLT5z
ZXRWaWV3T3ZlcmxheVJvb3RMYXllcih2aWV3T3ZlcmxheVJvb3RMYXllcik7CiB9CiAKLXZvaWQg
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzZXRSb290Q29tcG9zaXRpbmdMYXllcihXZWJDb3Jl
OjpHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyKQordm9pZCBDb29yZGluYXRlZExheWVyVHJl
ZUhvc3Q6OnNldFJvb3RDb21wb3NpdGluZ0xheWVyKEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5
ZXIpCiB7CiAgICAgbV9jb29yZGluYXRvci0+c2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoZ3JhcGhp
Y3NMYXllcik7CiB9CkBAIC0xMjgsOSArMTAyLDggQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJl
ZUhvc3Q6OmludmFsaWRhdGUoKQogewogICAgIGNhbmNlbFBlbmRpbmdMYXllckZsdXNoKCk7CiAK
LSAgICBBU1NFUlQobV9pc1ZhbGlkKTsKICAgICBtX2Nvb3JkaW5hdG9yLT5jbGVhclJvb3RMYXll
cigpOwotICAgIG1faXNWYWxpZCA9IGZhbHNlOworICAgIExheWVyVHJlZUhvc3Q6OmludmFsaWRh
dGUoKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmZvcmNlUmVwYWludCgp
CkBAIC0xNTgsNyArMTMxLDcgQEAgYm9vbCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmZvcmNl
UmVwYWludEFzeW5jKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LXZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzaXplRGlkQ2hhbmdlKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIG5ld1NpemUpCit2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2l6
ZURpZENoYW5nZShjb25zdCBJbnRTaXplJiBuZXdTaXplKQogewogICAgIG1fY29vcmRpbmF0b3It
PnNpemVEaWRDaGFuZ2UobmV3U2l6ZSk7CiAgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7CkBAIC0x
ODksNyArMTYyLDcgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRpZEZsdXNoUm9v
dExheWVyKGNvbnN0IEZsb2F0UmVjdCYgdmlzaWJsZUNvbnRlbnQKICAgICAgICAgbV92aWV3T3Zl
cmxheVJvb3RMYXllci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlKHZpc2libGVDb250ZW50UmVjdCwg
IG1fd2ViUGFnZS5tYWluRnJhbWUoKS0+dmlldygpLT52aWV3cG9ydElzU3RhYmxlKCkpOwogfQog
Ci12b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cGVyZm9ybVNjaGVkdWxlZExheWVyRmx1
c2goKQordm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmxheWVyRmx1c2hUaW1lckZpcmVk
KCkKIHsKICAgICBpZiAobV9pc1N1c3BlbmRlZCB8fCBtX2lzV2FpdGluZ0ZvclJlbmRlcmVyKQog
ICAgICAgICByZXR1cm47CkBAIC0yMDcsMjkgKzE4MCwzNCBAQCB2b2lkIENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdDo6cGVyZm9ybVNjaGVkdWxlZExheWVyRmx1c2goKQogICAgIH0KIAogICAgIGlm
IChtX25vdGlmeUFmdGVyU2NoZWR1bGVkTGF5ZXJGbHVzaCAmJiBkaWRTeW5jKSB7Ci0gICAgICAg
IHN0YXRpY19jYXN0PENvb3JkaW5hdGVkRHJhd2luZ0FyZWEqPihtX3dlYlBhZ2UuZHJhd2luZ0Fy
ZWEoKSktPmxheWVySG9zdERpZEZsdXNoTGF5ZXJzKCk7CisgICAgICAgIG1fd2ViUGFnZS5kcmF3
aW5nQXJlYSgpLT5sYXllckhvc3REaWRGbHVzaExheWVycygpOwogICAgICAgICBtX25vdGlmeUFm
dGVyU2NoZWR1bGVkTGF5ZXJGbHVzaCA9IGZhbHNlOwogICAgIH0KIH0KIAotdm9pZCBDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Q6OmxheWVyRmx1c2hUaW1lckZpcmVkKCkKLXsKLSAgICBwZXJmb3Jt
U2NoZWR1bGVkTGF5ZXJGbHVzaCgpOwotfQotCiB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dDo6cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBJbnRSZWN0JikKIHsKIH0KIAotdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhv
c3Q6OmNvbW1pdFNjZW5lU3RhdGUoY29uc3QgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1N0
YXRlJiBzdGF0ZSkKK3ZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpjb21taXRTY2VuZVN0
YXRlKGNvbnN0IENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYgc3RhdGUpCiB7CisjaWYgVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTX01VTFRJUFJPQ0VTUykKICAgICBtX3dlYlBhZ2Uuc2VuZChNZXNz
YWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OkNvbW1pdENvb3JkaW5hdGVkR3Jh
cGhpY3NTdGF0ZShzdGF0ZSkpOworI2VuZGlmCiAgICAgbV9pc1dhaXRpbmdGb3JSZW5kZXJlciA9
IHRydWU7CiB9CiAKIFJlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IENvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdDo6Y3JlYXRlQ29vcmRpbmF0ZWRTdXJmYWNlKGNvbnN0IEludFNpemUmIHNpemUsIENv
b3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MgZmxhZ3MpCiB7CisjaWYgVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTX1RIUkVBREVEKQorICAgIHJldHVybiBUaHJlYWRTYWZlQ29vcmRpbmF0ZWRTdXJmYWNl
OjpjcmVhdGUoc2l6ZSwgZmxhZ3MpOworI2VsaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX01V
TFRJUFJPQ0VTUykKICAgICByZXR1cm4gV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUoc2l6
ZSwgZmxhZ3MpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc2l6ZSk7CisgICAgVU5VU0VEX1BB
UkFNKGZsYWdzKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZgogfQogCiB2b2lkIENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
LmgKaW5kZXggNGQ4ODU5OTAuLjhhMDhkZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCkBAIC0yMywxNCArMjMsMTMgQEAK
IAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKIAotI2luY2x1ZGUgIkxheWVyVHJlZUNv
bnRleHQuaCIKICNpbmNsdWRlICJMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9D
b21wb3NpdGluZ0Nvb3JkaW5hdG9yLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVy
RmFjdG9yeS5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1J1bkxv
b3AuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29vcmRpbmF0ZWRTdXJmYWNlOwor
Y2xhc3MgR3JhcGhpY3NMYXllckZhY3Rvcnk7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NDMsMjggKzQyLDI3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPENvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdD4gY3JlYXRlKFdlYlBhZ2UmKTsKICAgICB2aXJ0dWFsIH5Db29yZGluYXRlZExheWVy
VHJlZUhvc3QoKTsKIAotICAgIGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGxheWVyVHJlZUNvbnRl
eHQoKSBvdmVycmlkZSB7IHJldHVybiBtX2xheWVyVHJlZUNvbnRleHQ7IH0KLSAgICB2b2lkIHNl
dExheWVyRmx1c2hTY2hlZHVsaW5nRW5hYmxlZChib29sKSBvdmVycmlkZTsKK3Byb3RlY3RlZDoK
KyAgICBleHBsaWNpdCBDb29yZGluYXRlZExheWVyVHJlZUhvc3QoV2ViUGFnZSYpOworCiAgICAg
dm9pZCBzY2hlZHVsZUxheWVyRmx1c2goKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldFNob3VsZE5v
dGlmeUFmdGVyTmV4dFNjaGVkdWxlZExheWVyRmx1c2goYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBjYW5jZWxQZW5kaW5nTGF5ZXJGbHVzaCgpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Um9vdENv
bXBvc2l0aW5nTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwogICAgIHZv
aWQgaW52YWxpZGF0ZSgpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBzZXROb25Db21wb3NpdGVkQ29u
dGVudHNOZWVkRGlzcGxheSgpIG92ZXJyaWRlIHsgfQotICAgIHZvaWQgc2V0Tm9uQ29tcG9zaXRl
ZENvbnRlbnRzTmVlZERpc3BsYXlJblJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJy
aWRlIHsgfQotICAgIHZvaWQgc2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmKSBvdmVycmlkZSB7IH0KICAgICB2b2lkIGZvcmNlUmVwYWludCgpIG92ZXJy
aWRlOwogICAgIGJvb2wgZm9yY2VSZXBhaW50QXN5bmModWludDY0X3QgY2FsbGJhY2tJRCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBzaXplRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG5l
d1NpemUpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBwYXVzZVJlbmRlcmluZygpIG92ZXJyaWRlIHsg
bV9pc1N1c3BlbmRlZCA9IHRydWU7IH0KLSAgICB2b2lkIHJlc3VtZVJlbmRlcmluZygpIG92ZXJy
aWRlIHsgbV9pc1N1c3BlbmRlZCA9IGZhbHNlOyBzY2hlZHVsZUxheWVyRmx1c2goKTsgfQogICAg
IHZvaWQgZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBwYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKSBvdmVycmlkZTsKIAotICAgIHZv
aWQgZGlkUmVjZWl2ZUNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VmlzaWJs
ZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFBvaW50Jik7CisgICAgdm9pZCByZW5kZXJOZXh0RnJhbWUoKTsKKyAgICB2b2lkIHB1cmdl
QmFja2luZ1N0b3JlcygpOworICAgIHZvaWQgY29tbWl0U2Nyb2xsT2Zmc2V0KHVpbnQzMl90IGxh
eWVySUQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG9mZnNldCk7CisKICAgICBXZWJDb3JlOjpH
cmFwaGljc0xheWVyRmFjdG9yeSogZ3JhcGhpY3NMYXllckZhY3RvcnkoKSBvdmVycmlkZTsKLSAg
ICBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqIG1haW5Db250ZW50c0xheWVyKCk7
CiAKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCiAgICAgdm9pZCBzY2hlZHVs
ZUFuaW1hdGlvbigpIG92ZXJyaWRlOwpAQCAtNzIsNDIgKzcwLDI1IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgc2V0Vmlld092ZXJsYXlSb290TGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIG92
ZXJyaWRlOwogCi0gICAgc3RhdGljIFJlZlB0cjxXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U+
IGNyZWF0ZUNvb3JkaW5hdGVkU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29y
ZTo6Q29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncyk7Ci0KLXByb3RlY3RlZDoKLSAgICBleHBsaWNp
dCBDb29yZGluYXRlZExheWVyVHJlZUhvc3QoV2ViUGFnZSYpOwotCi1wcml2YXRlOgotICAgIC8v
IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdAotICAgIHZvaWQgY2FuY2VsUGVuZGluZ0xheWVyRmx1
c2goKTsKLSAgICB2b2lkIHBlcmZvcm1TY2hlZHVsZWRMYXllckZsdXNoKCk7Ci0gICAgdm9pZCBz
ZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UG9pbnQmKTsKLSAgICB2b2lkIHJlbmRlck5leHRGcmFtZSgpOwotICAgIHZv
aWQgcHVyZ2VCYWNraW5nU3RvcmVzKCk7Ci0gICAgdm9pZCBjb21taXRTY3JvbGxPZmZzZXQodWlu
dDMyX3QgbGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgb2Zmc2V0KTsKLQotICAgIHZv
aWQgbGF5ZXJGbHVzaFRpbWVyRmlyZWQoKTsKLQogICAgIC8vIENvbXBvc2l0aW5nQ29vcmRpbmF0
b3I6OkNsaWVudAogICAgIHZvaWQgZGlkRmx1c2hSb290TGF5ZXIoY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiB2aXNpYmxlQ29udGVudFJlY3QpIG92ZXJyaWRlOwogICAgIHZvaWQgbm90aWZ5Rmx1
c2hSZXF1aXJlZCgpIG92ZXJyaWRlIHsgc2NoZWR1bGVMYXllckZsdXNoKCk7IH07CiAgICAgdm9p
ZCBjb21taXRTY2VuZVN0YXRlKGNvbnN0IFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0
ZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgcGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXIqLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBjbGlwUmVjdCkgb3ZlcnJpZGU7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6Q29tcG9zaXRpbmdDb29yZGluYXRvcj4gbV9jb29yZGluYXRvcjsKLQotICAgIGJvb2wg
bV9ub3RpZnlBZnRlclNjaGVkdWxlZExheWVyRmx1c2g7Ci0gICAgYm9vbCBtX2lzVmFsaWQ7Ci0g
ICAgYm9vbCBtX2lzU3VzcGVuZGVkOwotICAgIGJvb2wgbV9pc1dhaXRpbmdGb3JSZW5kZXJlcjsK
K3ByaXZhdGU6CisgICAgdm9pZCBsYXllckZsdXNoVGltZXJGaXJlZCgpOwogCi0gICAgTGF5ZXJU
cmVlQ29udGV4dCBtX2xheWVyVHJlZUNvbnRleHQ7CisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTX01VTFRJUFJPQ0VTUykKKyAgICB2b2lkIGRpZFJlY2VpdmVDb29yZGluYXRlZExheWVyVHJl
ZUhvc3RNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVy
cmlkZTsKKyNlbmRpZgogCi0gICAgV2ViQ29yZTo6VGltZXIgbV9sYXllckZsdXNoVGltZXI7Ci0g
ICAgYm9vbCBtX2xheWVyRmx1c2hTY2hlZHVsaW5nRW5hYmxlZDsKLSAgICB1aW50NjRfdCBtX2Zv
cmNlUmVwYWludEFzeW5jQ2FsbGJhY2tJRDsKKyAgICBzdGF0aWMgUmVmUHRyPFdlYkNvcmU6OkNv
b3JkaW5hdGVkU3VyZmFjZT4gY3JlYXRlQ29vcmRpbmF0ZWRTdXJmYWNlKGNvbnN0IFdlYkNvcmU6
OkludFNpemUmLCBXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzKTsKIAotICAgIFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXIqIG1fdmlld092ZXJsYXlSb290TGF5ZXI7CisgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OkNvbXBvc2l0aW5nQ29vcmRpbmF0b3I+IG1fY29vcmRpbmF0b3I7
CisgICAgYm9vbCBtX2lzV2FpdGluZ0ZvclJlbmRlcmVyIHsgdHJ1ZSB9OworICAgIHVpbnQ2NF90
IG1fZm9yY2VSZXBhaW50QXN5bmNDYWxsYmFja0lEIHsgMCB9OworICAgIFJ1bkxvb3A6OlRpbWVy
PENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdD4gbV9sYXllckZsdXNoVGltZXI7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAppbmRleCA2MzE3ZGEz
Li45YTAzYzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCkBAIC0zMCwxOSArMzAsOSBA
QAogI2luY2x1ZGUgIlRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgiCiAKICNpZiBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCi0KLSNpbmNsdWRlICJEcmF3aW5nQXJl
YUltcGwuaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlRocmVhZFNh
ZmVDb29yZGluYXRlZFN1cmZhY2UuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCi0jaW5jbHVkZSA8
V2ViQ29yZS9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Nv
b3JkaW5hdGVkR3JhcGhpY3NTdGF0ZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3ND
b250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NYWluRnJhbWUuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL1BhZ2UuaD4KLSNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIAogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKQEAgLTU4LDY2ICs0OCwxMCBAQCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdDo6flRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KCkKIH0KIAogVGhy
ZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OlRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0KFdlYlBhZ2UmIHdlYlBhZ2UpCi0gICAgOiBMYXllclRyZWVIb3N0KHdlYlBhZ2UpCi0g
ICAgLCBtX2ZvcmNlUmVwYWludEFzeW5jQ2FsbGJhY2tJRCgwKQotICAgICwgbV9ub3RpZnlBZnRl
clNjaGVkdWxlZExheWVyRmx1c2goZmFsc2UpCi0gICAgLCBtX2lzU3VzcGVuZGVkKGZhbHNlKQot
ICAgICwgbV9pc1dhaXRpbmdGb3JSZW5kZXJlcihmYWxzZSkKLSAgICAsIG1fbGF5ZXJGbHVzaFRp
bWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0OjpwZXJmb3JtU2NoZWR1bGVkTGF5ZXJGbHVzaCkKLSAgICAsIG1fbGF5ZXJGbHVzaFNjaGVk
dWxpbmdFbmFibGVkKHRydWUpCi17Ci0gICAgbV9jb29yZGluYXRvciA9IHN0ZDo6bWFrZV91bmlx
dWU8Q29tcG9zaXRpbmdDb29yZGluYXRvcj4obV93ZWJQYWdlLmNvcmVQYWdlKCksIHRoaXMpOwot
Ci0gICAgbV9jb29yZGluYXRvci0+Y3JlYXRlUm9vdExheWVyKG1fd2ViUGFnZS5zaXplKCkpOwot
Ci0gICAgQ29vcmRpbmF0ZWRTdXJmYWNlOjpzZXRGYWN0b3J5KGNyZWF0ZUNvb3JkaW5hdGVkU3Vy
ZmFjZSk7Ci0KLSAgICBtX2NvbXBvc2l0b3IgPSBUaHJlYWRlZENvbXBvc2l0b3I6OmNyZWF0ZSh0
aGlzKTsKLSAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKLX0KLQotUmVmUHRyPENvb3JkaW5hdGVk
U3VyZmFjZT4gVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0ZUNvb3JkaW5h
dGVkU3VyZmFjZShjb25zdCBJbnRTaXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdz
IGZsYWdzKQotewotICAgIHJldHVybiBUaHJlYWRTYWZlQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVh
dGUoc2l6ZSwgZmxhZ3MpOwotfQotCi12b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0OjpzY2hlZHVsZUxheWVyRmx1c2goKQotewotICAgIGlmICghbV9sYXllckZsdXNoU2NoZWR1
bGluZ0VuYWJsZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghbV9sYXllckZsdXNoVGlt
ZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV9sYXllckZsdXNoVGltZXIuc3RhcnRPbmVTaG90KDAp
OwotfQotCi12b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzZXRMYXllckZs
dXNoU2NoZWR1bGluZ0VuYWJsZWQoYm9vbCBsYXllckZsdXNoaW5nRW5hYmxlZCkKLXsKLSAgICBp
ZiAobV9sYXllckZsdXNoU2NoZWR1bGluZ0VuYWJsZWQgPT0gbGF5ZXJGbHVzaGluZ0VuYWJsZWQp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIG1fbGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFibGVkID0g
bGF5ZXJGbHVzaGluZ0VuYWJsZWQ7Ci0KLSAgICBpZiAobV9sYXllckZsdXNoU2NoZWR1bGluZ0Vu
YWJsZWQpIHsKLSAgICAgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBjYW5jZWxQZW5kaW5nTGF5ZXJGbHVzaCgpOwotfQotCi12b2lkIFRocmVh
ZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzZXRTaG91bGROb3RpZnlBZnRlck5leHRTY2hl
ZHVsZWRMYXllckZsdXNoKGJvb2wgbm90aWZ5QWZ0ZXJTY2hlZHVsZWRMYXllckZsdXNoKQorICAg
IDogQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KHdlYlBhZ2UpCisgICAgLCBtX2NvbXBvc2l0b3JD
bGllbnQoKnRoaXMpCisgICAgLCBtX2NvbXBvc2l0b3IoVGhyZWFkZWRDb21wb3NpdG9yOjpjcmVh
dGUoJm1fY29tcG9zaXRvckNsaWVudCkpCiB7Ci0gICAgbV9ub3RpZnlBZnRlclNjaGVkdWxlZExh
eWVyRmx1c2ggPSBub3RpZnlBZnRlclNjaGVkdWxlZExheWVyRmx1c2g7Ci19Ci0KLXZvaWQgVGhy
ZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNldFJvb3RDb21wb3NpdGluZ0xheWVyKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIpCi17Ci0gICAgbV9jb29yZGluYXRv
ci0+c2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoZ3JhcGhpY3NMYXllcik7Ci19Ci0KLXZvaWQgVGhy
ZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmludmFsaWRhdGUoKQotewotICAgIG5vdElt
cGxlbWVudGVkKCk7CiB9CiAKIHZvaWQgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6
OnNjcm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0
KQpAQCAtMTI2LDIwICs2MCw2IEBAIHZvaWQgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhv
c3Q6OnNjcm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50cyhjb25zdCBXZWJDb3JlCiAgICAgc2NoZWR1
bGVMYXllckZsdXNoKCk7CiB9CiAKLXZvaWQgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhv
c3Q6OmZvcmNlUmVwYWludCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotYm9vbCBU
aHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Zm9yY2VSZXBhaW50QXN5bmModWludDY0
X3QgY2FsbGJhY2tJRCkKLXsKLSAgICAvLyBXZSBleHBlY3QgdGhlIFVJIHByb2Nlc3MgdG8gbm90
IHJlcXVpcmUgYSBuZXcgcmVwYWludCB1bnRpbCB0aGUgcHJldmlvdXMgb25lIGhhcyBmaW5pc2hl
ZC4KLSAgICBBU1NFUlQoIW1fZm9yY2VSZXBhaW50QXN5bmNDYWxsYmFja0lEKTsKLSAgICBtX2Zv
cmNlUmVwYWludEFzeW5jQ2FsbGJhY2tJRCA9IGNhbGxiYWNrSUQ7Ci0gICAgc2NoZWR1bGVMYXll
ckZsdXNoKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHZvaWQgVGhyZWFkZWRDb29yZGluYXRl
ZExheWVyVHJlZUhvc3Q6OmNvbnRlbnRzU2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgbmV3U2l6ZSkKIHsKICAgICBtX2NvbXBvc2l0b3ItPmRpZENoYW5nZUNvbnRlbnRzU2l6ZShu
ZXdTaXplKTsKQEAgLTE0NywyOSArNjcsMTMgQEAgdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdDo6Y29udGVudHNTaXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXoKIAog
dm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGV2aWNlT3JQYWdlU2NhbGVG
YWN0b3JDaGFuZ2VkKCkKIHsKLSAgICBtX2Nvb3JkaW5hdG9yLT5kZXZpY2VPclBhZ2VTY2FsZUZh
Y3RvckNoYW5nZWQoKTsKKyAgICBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRldmljZU9yUGFn
ZVNjYWxlRmFjdG9yQ2hhbmdlZCgpOwogICAgIG1fY29tcG9zaXRvci0+c2V0RGV2aWNlU2NhbGVG
YWN0b3IobV93ZWJQYWdlLmRldmljZVNjYWxlRmFjdG9yKCkpOwogfQogCi12b2lkIFRocmVhZGVk
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpwYXVzZVJlbmRlcmluZygpCi17Ci0gICAgbV9pc1N1
c3BlbmRlZCA9IHRydWU7Ci19Ci0KLXZvaWQgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhv
c3Q6OnJlc3VtZVJlbmRlcmluZygpCi17Ci0gICAgbV9pc1N1c3BlbmRlZCA9IGZhbHNlOwotICAg
IHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwotfQotCi1HcmFwaGljc0xheWVyRmFjdG9yeSogVGhyZWFk
ZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkKLXsKLSAg
ICByZXR1cm4gbV9jb29yZGluYXRvci5nZXQoKTsKLX0KLQotdm9pZCBUaHJlYWRlZENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdDo6c2l6ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBz
aXplKQordm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2l6ZURpZENoYW5n
ZShjb25zdCBJbnRTaXplJiBzaXplKQogewotICAgIG1fY29vcmRpbmF0b3ItPnNpemVEaWRDaGFu
Z2Uoc2l6ZSk7CisgICAgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzaXplRGlkQ2hhbmdlKHNp
emUpOwogICAgIG1fY29tcG9zaXRvci0+ZGlkQ2hhbmdlVmlld3BvcnRTaXplKHNpemUpOwogfQog
CkBAIC0xNzgsMjEgKzgyLDExIEBAIHZvaWQgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhv
c3Q6OmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlCiAgICAgbV9jb21w
b3NpdG9yLT5kaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZShhdHRyKTsKIH0KIAotdm9pZCBUaHJl
YWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y29tcG9zaXRvckRpZEZsdXNoTGF5ZXJzKCkK
LXsKLSAgICBzdGF0aWNfY2FzdDxEcmF3aW5nQXJlYUltcGwqPihtX3dlYlBhZ2UuZHJhd2luZ0Fy
ZWEoKSktPmxheWVySG9zdERpZEZsdXNoTGF5ZXJzKCk7Ci19Ci0KIHZvaWQgVGhyZWFkZWRDb29y
ZGluYXRlZExheWVyVHJlZUhvc3Q6OmRpZFNjYWxlRmFjdG9yQ2hhbmdlZChmbG9hdCBzY2FsZSwg
Y29uc3QgSW50UG9pbnQmIG9yaWdpbikKIHsKICAgICBtX3dlYlBhZ2Uuc2NhbGVQYWdlKHNjYWxl
LCBvcmlnaW4pOwogfQogCi12b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpz
ZXRWaWV3T3ZlcmxheVJvb3RMYXllcihHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyKQotewot
ICAgIG1fY29vcmRpbmF0b3ItPnNldFZpZXdPdmVybGF5Um9vdExheWVyKGdyYXBoaWNzTGF5ZXIp
OwotfQotCiAjaWYgUExBVEZPUk0oR1RLKQogdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdDo6c2V0TmF0aXZlU3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKHVpbnQ2NF90IGhh
bmRsZSkKIHsKQEAgLTIwMiwyMyArOTYsOSBAQCB2b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0OjpzZXROYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcodWludAogfQog
I2VuZGlmCiAKLSNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCi12b2lkIFRocmVh
ZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzY2hlZHVsZUFuaW1hdGlvbigpCi17Ci0gICAg
aWYgKG1faXNXYWl0aW5nRm9yUmVuZGVyZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICht
X2xheWVyRmx1c2hUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2xh
eWVyRmx1c2hUaW1lci5zdGFydE9uZVNob3QobV9jb29yZGluYXRvci0+bmV4dEFuaW1hdGlvblNl
cnZpY2VUaW1lKCkpOwotICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwotfQotI2VuZGlmCi0KIHZv
aWQgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNldFZpc2libGVDb250ZW50c1Jl
Y3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVj
dG9yLCBmbG9hdCBzY2FsZSkKIHsKLSAgICBtX2Nvb3JkaW5hdG9yLT5zZXRWaXNpYmxlQ29udGVu
dHNSZWN0KHJlY3QsIHRyYWplY3RvcnlWZWN0b3IpOworICAgIENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChyZWN0LCB0cmFqZWN0b3J5VmVjdG9yKTsKICAg
ICBpZiAobV9sYXN0U2Nyb2xsUG9zaXRpb24gIT0gcm91bmRlZEludFBvaW50KHJlY3QubG9jYXRp
b24oKSkpIHsKICAgICAgICAgbV9sYXN0U2Nyb2xsUG9zaXRpb24gPSByb3VuZGVkSW50UG9pbnQo
cmVjdC5sb2NhdGlvbigpKTsKIApAQCAtMjMwLDYxICsxMTAsMTQgQEAgdm9pZCBUaHJlYWRlZENv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBGbG9h
dFJlY3QmIHIKICAgICAgICAgbV9sYXN0U2NhbGVGYWN0b3IgPSBzY2FsZTsKICAgICAgICAgZGlk
U2NhbGVGYWN0b3JDaGFuZ2VkKG1fbGFzdFNjYWxlRmFjdG9yLCBtX2xhc3RTY3JvbGxQb3NpdGlv
bik7CiAgICAgfQotCi0gICAgc2NoZWR1bGVMYXllckZsdXNoKCk7Ci19Ci0KLXZvaWQgVGhyZWFk
ZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNhbmNlbFBlbmRpbmdMYXllckZsdXNoKCkKLXsK
LSAgICBtX2xheWVyRmx1c2hUaW1lci5zdG9wKCk7Ci19Ci0KLXZvaWQgVGhyZWFkZWRDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Q6OnBlcmZvcm1TY2hlZHVsZWRMYXllckZsdXNoKCkKLXsKLSAgICBp
ZiAobV9pc1N1c3BlbmRlZCB8fCBtX2lzV2FpdGluZ0ZvclJlbmRlcmVyKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBtX2Nvb3JkaW5hdG9yLT5zeW5jRGlzcGxheVN0YXRlKCk7Ci0gICAgYm9vbCBk
aWRTeW5jID0gbV9jb29yZGluYXRvci0+Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCk7Ci0KLSAg
ICBpZiAobV9ub3RpZnlBZnRlclNjaGVkdWxlZExheWVyRmx1c2ggJiYgZGlkU3luYykgewotICAg
ICAgICBjb21wb3NpdG9yRGlkRmx1c2hMYXllcnMoKTsKLSAgICAgICAgbV9ub3RpZnlBZnRlclNj
aGVkdWxlZExheWVyRmx1c2ggPSBmYWxzZTsKLSAgICB9Ci19Ci0KLXZvaWQgVGhyZWFkZWRDb29y
ZGluYXRlZExheWVyVHJlZUhvc3Q6OnB1cmdlQmFja2luZ1N0b3JlcygpCi17Ci0gICAgbV9jb29y
ZGluYXRvci0+cHVyZ2VCYWNraW5nU3RvcmVzKCk7Ci19Ci0KLXZvaWQgVGhyZWFkZWRDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Q6OnJlbmRlck5leHRGcmFtZSgpCi17Ci0gICAgbV9pc1dhaXRpbmdG
b3JSZW5kZXJlciA9IGZhbHNlOwotICAgIG1fY29vcmRpbmF0b3ItPnJlbmRlck5leHRGcmFtZSgp
OwotICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwotfQotCi12b2lkIFRocmVhZGVkQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0Ojpjb21taXRTY3JvbGxPZmZzZXQodWludDMyX3QgbGF5ZXJJRCwgY29u
c3QgSW50U2l6ZSYgb2Zmc2V0KQotewotICAgIG1fY29vcmRpbmF0b3ItPmNvbW1pdFNjcm9sbE9m
ZnNldChsYXllcklELCBvZmZzZXQpOwotfQotCi12b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0Ojpub3RpZnlGbHVzaFJlcXVpcmVkKCkKLXsKLSAgICBzY2hlZHVsZUxheWVyRmx1
c2goKTsKIH0KIAogdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y29tbWl0
U2NlbmVTdGF0ZShjb25zdCBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmIHN0YXRlKQogewotICAg
IG1faXNXYWl0aW5nRm9yUmVuZGVyZXIgPSB0cnVlOworICAgIENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdDo6Y29tbWl0U2NlbmVTdGF0ZShzdGF0ZSk7CiAgICAgbV9jb21wb3NpdG9yLT51cGRhdGVT
Y2VuZVN0YXRlKHN0YXRlKTsKIH0KIAotdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBJbnRSZWN0JikKLXsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
ICNlbmRpZiAvLyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Qu
aAppbmRleCA1NGRjMjE0Li40Nzc3MGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKQEAgLTMw
LDI3ICszMCwxMiBAQAogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQog
Ci0jaW5jbHVkZSAiTGF5ZXJUcmVlQ29udGV4dC5oIgotI2luY2x1ZGUgIkxheWVyVHJlZUhvc3Qu
aCIKKyNpbmNsdWRlICJDb29yZGluYXRlZExheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJUaHJl
YWRlZENvbXBvc2l0b3IuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0NvbXBvc2l0aW5nQ29vcmRpbmF0
b3IuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UG9pbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L0Zsb2F0UmVjdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSW50UG9pbnQuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL0ludFJlY3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemUuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL1BhZ2VPdmVybGF5Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgotI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBDb29yZGluYXRlZFN1cmZhY2U7CiBjbGFzcyBHcmFwaGlj
c0NvbnRleHQ7CiBjbGFzcyBHcmFwaGljc0xheWVyOwotY2xhc3MgR3JhcGhpY3NMYXllckZhY3Rv
cnk7Ci1jbGFzcyBHcmFwaGljc0xheWVyRmFjdG9yeTsKLXN0cnVjdCBDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXJTdGF0ZTsKIHN0cnVjdCBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGU7CiB9CiAKQEAg
LTU4LDM0ICs0MywxOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViUGFnZTsKIAot
Y2xhc3MgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QgOiBwdWJsaWMgTGF5ZXJUcmVl
SG9zdCwgcHVibGljIFdlYkNvcmU6OkNvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OkNsaWVudCwgcHVi
bGljIFRocmVhZGVkQ29tcG9zaXRvcjo6Q2xpZW50IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworY2xhc3MgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QgZmluYWwgOiBwdWJs
aWMgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFRo
cmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0PiBjcmVhdGUoV2ViUGFnZSYpOwogICAgIHZp
cnR1YWwgflRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KCk7CiAKLSAgICBjb25zdCBM
YXllclRyZWVDb250ZXh0JiBsYXllclRyZWVDb250ZXh0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9s
YXllclRyZWVDb250ZXh0OyB9OwotCi0gICAgdm9pZCBzY2hlZHVsZUxheWVyRmx1c2goKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHNldExheWVyRmx1c2hTY2hlZHVsaW5nRW5hYmxlZChib29sKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHNldFNob3VsZE5vdGlmeUFmdGVyTmV4dFNjaGVkdWxlZExheWVyRmx1
c2goYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRSb290Q29tcG9zaXRpbmdMYXllcihXZWJD
b3JlOjpHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBpbnZhbGlkYXRlKCkgb3Zl
cnJpZGU7Citwcml2YXRlOgorICAgIGV4cGxpY2l0IFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0KFdlYlBhZ2UmKTsKIAotICAgIHZvaWQgc2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVl
ZERpc3BsYXkoKSBvdmVycmlkZSB7IH07Ci0gICAgdm9pZCBzZXROb25Db21wb3NpdGVkQ29udGVu
dHNOZWVkRGlzcGxheUluUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGUgeyB9
OwogICAgIHZvaWQgc2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIHNjcm9sbFJlY3QpIG92ZXJyaWRlOwotICAgIHZvaWQgZm9yY2VSZXBhaW50KCkgb3Zl
cnJpZGU7Ci0gICAgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyh1aW50NjRfdCAvKmNhbGxiYWNrSUQq
Lykgb3ZlcnJpZGU7CiAgICAgdm9pZCBzaXplRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNp
emUmKSBvdmVycmlkZTsKICAgICB2b2lkIGRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgp
IG92ZXJyaWRlOwogCi0gICAgdm9pZCBwYXVzZVJlbmRlcmluZygpIG92ZXJyaWRlOwotICAgIHZv
aWQgcmVzdW1lUmVuZGVyaW5nKCkgb3ZlcnJpZGU7Ci0KLSAgICBXZWJDb3JlOjpHcmFwaGljc0xh
eWVyRmFjdG9yeSogZ3JhcGhpY3NMYXllckZhY3RvcnkoKSBvdmVycmlkZTsKLSAgICB2b2lkIHBh
Z2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgpIG92ZXJyaWRlIHsgfTsKLQogICAgIHZv
aWQgY29udGVudHNTaXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmll
d3BvcnRBdHRyaWJ1dGVzJikgb3ZlcnJpZGU7CiAKQEAgLTkzLDU1ICs2Miw1MCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXROYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcodWludDY0X3Qp
IG92ZXJyaWRlOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUp
Ci0gICAgdm9pZCBzY2hlZHVsZUFuaW1hdGlvbigpIG92ZXJyaWRlOwotI2VuZGlmCi0KLSAgICB2
b2lkIHNldFZpZXdPdmVybGF5Um9vdExheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBvdmVy
cmlkZTsKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZT4gY3Jl
YXRlQ29vcmRpbmF0ZWRTdXJmYWNlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpD
b29yZGluYXRlZFN1cmZhY2U6OkZsYWdzKTsKLQotcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IFRo
cmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KFdlYlBhZ2UmKTsKLQotcHJpdmF0ZToKKyAg
ICBjbGFzcyBDb21wb3NpdG9yQ2xpZW50IGZpbmFsIDogcHVibGljIFRocmVhZGVkQ29tcG9zaXRv
cjo6Q2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIENvbXBvc2l0b3JDbGllbnQoVGhyZWFk
ZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QmIGxheWVyVHJlZUhvc3QpCisgICAgICAgICAgICA6
IG1fbGF5ZXJUcmVlSG9zdChsYXllclRyZWVIb3N0KQorICAgICAgICB7CisgICAgICAgIH0KKwor
ICAgIHByaXZhdGU6CisgICAgICAgIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHRyYWpl
Y3RvcnlWZWN0b3IsIGZsb2F0IHNjYWxlKSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAg
ICBtX2xheWVyVHJlZUhvc3Quc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChyZWN0LCB0cmFqZWN0b3J5
VmVjdG9yLCBzY2FsZSk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHB1cmdlQmFja2luZ1N0
b3JlcygpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC5w
dXJnZUJhY2tpbmdTdG9yZXMoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgcmVuZGVyTmV4
dEZyYW1lKCkgb3ZlcnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0
LnJlbmRlck5leHRGcmFtZSgpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBjb21taXRTY3Jv
bGxPZmZzZXQodWludDMyX3QgbGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgb2Zmc2V0
KSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QuY29tbWl0
U2Nyb2xsT2Zmc2V0KGxheWVySUQsIG9mZnNldCk7CisgICAgICAgIH0KKworICAgICAgICBUaHJl
YWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCYgbV9sYXllclRyZWVIb3N0OworICAgIH07CiAK
LSAgICB2b2lkIGNvbXBvc2l0b3JEaWRGbHVzaExheWVycygpOwogICAgIHZvaWQgZGlkU2NhbGVG
YWN0b3JDaGFuZ2VkKGZsb2F0IHNjYWxlLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgb3JpZ2lu
KTsKIAotICAgIHZvaWQgY2FuY2VsUGVuZGluZ0xheWVyRmx1c2goKTsKLSAgICB2b2lkIHBlcmZv
cm1TY2hlZHVsZWRMYXllckZsdXNoKCk7Ci0KLSAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBy
b290TGF5ZXIoKSB7IHJldHVybiBtX2Nvb3JkaW5hdG9yLT5yb290TGF5ZXIoKTsgfQotCi0gICAg
Ly8gVGhyZWFkZWRDb21wb3NpdG9yOjpDbGllbnQKLSAgICB2b2lkIHNldFZpc2libGVDb250ZW50
c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2lu
dCYsIGZsb2F0KSBvdmVycmlkZTsKLSAgICB2b2lkIHB1cmdlQmFja2luZ1N0b3JlcygpIG92ZXJy
aWRlOwotICAgIHZvaWQgcmVuZGVyTmV4dEZyYW1lKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjb21t
aXRTY3JvbGxPZmZzZXQodWludDMyX3QgbGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
b2Zmc2V0KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGZsb2F0KTsK
IAogICAgIC8vIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OkNsaWVudAogICAgIHZvaWQgZGlkRmx1
c2hSb290TGF5ZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGUgeyB9Ci0gICAg
dm9pZCBub3RpZnlGbHVzaFJlcXVpcmVkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21taXRTY2Vu
ZVN0YXRlKGNvbnN0IFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYpIG92ZXJyaWRl
OwotICAgIHZvaWQgcGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXIqLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBj
bGlwUmVjdCkgb3ZlcnJpZGU7Ci0KLSAgICBMYXllclRyZWVDb250ZXh0IG1fbGF5ZXJUcmVlQ29u
dGV4dDsKLSAgICB1aW50NjRfdCBtX2ZvcmNlUmVwYWludEFzeW5jQ2FsbGJhY2tJRDsKIAogICAg
IFdlYkNvcmU6OkludFBvaW50IG1fcHJldlNjcm9sbFBvc2l0aW9uOwotCi0gICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OkNvbXBvc2l0aW5nQ29vcmRpbmF0b3I+IG1fY29vcmRpbmF0b3I7Cisg
ICAgQ29tcG9zaXRvckNsaWVudCBtX2NvbXBvc2l0b3JDbGllbnQ7CiAgICAgUmVmUHRyPFRocmVh
ZGVkQ29tcG9zaXRvcj4gbV9jb21wb3NpdG9yOwotCi0gICAgYm9vbCBtX25vdGlmeUFmdGVyU2No
ZWR1bGVkTGF5ZXJGbHVzaDsKLSAgICBib29sIG1faXNTdXNwZW5kZWQ7Ci0gICAgYm9vbCBtX2lz
V2FpdGluZ0ZvclJlbmRlcmVyOwotCi0gICAgZmxvYXQgbV9sYXN0U2NhbGVGYWN0b3I7CisgICAg
ZmxvYXQgbV9sYXN0U2NhbGVGYWN0b3IgeyAxIH07CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9s
YXN0U2Nyb2xsUG9zaXRpb247Ci0KLSAgICBSdW5Mb29wOjpUaW1lcjxUaHJlYWRlZENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdD4gbV9sYXllckZsdXNoVGltZXI7Ci0gICAgYm9vbCBtX2xheWVyRmx1
c2hTY2hlZHVsaW5nRW5hYmxlZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAppbmRleCBiNDMy
YmJkLi5jMjlkNGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
RHJhd2luZ0FyZWEuaApAQCAtMTM4LDYgKzEzOCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlR2VvbWV0cnkoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdmlld1NpemUsIGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIGxheWVyUG9zaXRpb24sIGJvb2wgZmx1c2hTeW5jaHJvbm91c2x5
LCBjb25zdCBXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0JiBmZW5jZVBvcnQpIHsgfQogI2VuZGlmCiAK
KyAgICB2aXJ0dWFsIHZvaWQgbGF5ZXJIb3N0RGlkRmx1c2hMYXllcnMoKSB7IH07CisKIHByb3Rl
Y3RlZDoKICAgICBEcmF3aW5nQXJlYShEcmF3aW5nQXJlYVR5cGUsIFdlYlBhZ2UmKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1w
bC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5o
CmluZGV4IDZmMWY4NzQuLmU3YjYzNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmgKQEAgLTQ1LDggKzQ1LDYgQEAgcHVibGlj
OgogICAgIERyYXdpbmdBcmVhSW1wbChXZWJQYWdlJiwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycyYpOwogICAgIHZpcnR1YWwgfkRyYXdpbmdBcmVhSW1wbCgpOwogCi0gICAgdm9pZCBs
YXllckhvc3REaWRGbHVzaExheWVycygpOwotCiBwcml2YXRlOgogICAgIC8vIERyYXdpbmdBcmVh
CiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXkoKSBvdmVycmlkZTsKQEAgLTc1LDYgKzczLDggQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRlc3Ryb3lOYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRp
bmcoYm9vbCYpIG92ZXJyaWRlOwogI2VuZGlmCiAKKyAgICB2b2lkIGxheWVySG9zdERpZEZsdXNo
TGF5ZXJzKCkgb3ZlcnJpZGU7CisKICAgICAvLyBJUEMgbWVzc2FnZSBoYW5kbGVycy4KICAgICB2
b2lkIHVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRlKHVpbnQ2NF90IGJhY2tpbmdTdG9yZVN0YXRlSUQs
IGJvb2wgcmVzcG9uZEltbWVkaWF0ZWx5LCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciwgY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbE9mZnNldCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRVcGRhdGUoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmNwcAppbmRleCBkMmEx
NGY4Li4xMWRkMTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0xheWVyVHJlZUhvc3QuY3BwCkBAIC02Miw2ICs2MiwzOSBAQCBMYXllclRyZWVIb3N0OjpM
YXllclRyZWVIb3N0KFdlYlBhZ2UmIHdlYlBhZ2UpCiAKIExheWVyVHJlZUhvc3Q6On5MYXllclRy
ZWVIb3N0KCkKIHsKKyAgICBBU1NFUlQoIW1faXNWYWxpZCk7Cit9CisKK3ZvaWQgTGF5ZXJUcmVl
SG9zdDo6c2V0TGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFibGVkKGJvb2wgbGF5ZXJGbHVzaGluZ0Vu
YWJsZWQpCit7CisgICAgaWYgKG1fbGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFibGVkID09IGxheWVy
Rmx1c2hpbmdFbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2xheWVyRmx1c2hTY2hl
ZHVsaW5nRW5hYmxlZCA9IGxheWVyRmx1c2hpbmdFbmFibGVkOworCisgICAgaWYgKG1fbGF5ZXJG
bHVzaFNjaGVkdWxpbmdFbmFibGVkKSB7CisgICAgICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FuY2VsUGVuZGluZ0xheWVyRmx1c2goKTsK
K30KKwordm9pZCBMYXllclRyZWVIb3N0OjpwYXVzZVJlbmRlcmluZygpCit7CisgICAgbV9pc1N1
c3BlbmRlZCA9IHRydWU7Cit9CisKK3ZvaWQgTGF5ZXJUcmVlSG9zdDo6cmVzdW1lUmVuZGVyaW5n
KCkKK3sKKyAgICBtX2lzU3VzcGVuZGVkID0gZmFsc2U7CisgICAgc2NoZWR1bGVMYXllckZsdXNo
KCk7Cit9CisKK3ZvaWQgTGF5ZXJUcmVlSG9zdDo6aW52YWxpZGF0ZSgpCit7CisgICAgQVNTRVJU
KG1faXNWYWxpZCk7CisgICAgbV9pc1ZhbGlkID0gZmFsc2U7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xh
eWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRy
ZWVIb3N0LmgKaW5kZXggMjFiZjkxOS4uYmFlZTRhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oCkBAIC0yOSw4ICsyOSw3IEBACiAj
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKSB8fCBVU0UoVEVYVFVSRV9NQVBQRVIpCiAKICNp
bmNsdWRlICJMYXllclRyZWVDb250ZXh0LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgot
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTM5LDggKzM4
LDYgQEAgY2xhc3MgTWVzc2FnZURlY29kZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNs
YXNzIEZsb2F0UG9pbnQ7Ci1jbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3Mg
SW50U2l6ZTsKIGNsYXNzIEdyYXBoaWNzTGF5ZXI7CkBAIC01Miw3ICs0OSw2IEBAIHN0cnVjdCBW
aWV3cG9ydEF0dHJpYnV0ZXM7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBVcGRhdGVJ
bmZvOwogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgTGF5ZXJUcmVlSG9zdCA6IHB1YmxpYyBSZWZD
b3VudGVkPExheWVyVHJlZUhvc3Q+IHsKQEAgLTYwLDM0ICs1NiwzNiBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZlB0cjxMYXllclRyZWVIb3N0PiBjcmVhdGUoV2ViUGFnZSYpOwogICAgIHZpcnR1
YWwgfkxheWVyVHJlZUhvc3QoKTsKIAotICAgIHZpcnR1YWwgY29uc3QgTGF5ZXJUcmVlQ29udGV4
dCYgbGF5ZXJUcmVlQ29udGV4dCgpID0gMDsKKyAgICBjb25zdCBMYXllclRyZWVDb250ZXh0JiBs
YXllclRyZWVDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9sYXllclRyZWVDb250ZXh0OyB9Cisg
ICAgdm9pZCBzZXRMYXllckZsdXNoU2NoZWR1bGluZ0VuYWJsZWQoYm9vbCk7CisgICAgdm9pZCBz
ZXRTaG91bGROb3RpZnlBZnRlck5leHRTY2hlZHVsZWRMYXllckZsdXNoKGJvb2wgbm90aWZ5QWZ0
ZXJTY2hlZHVsZWRMYXllckZsdXNoKSB7IG1fbm90aWZ5QWZ0ZXJTY2hlZHVsZWRMYXllckZsdXNo
ID0gbm90aWZ5QWZ0ZXJTY2hlZHVsZWRMYXllckZsdXNoOyB9CisKICAgICB2aXJ0dWFsIHZvaWQg
c2NoZWR1bGVMYXllckZsdXNoKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllckZsdXNo
U2NoZWR1bGluZ0VuYWJsZWQoYm9vbCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRO
b3RpZnlBZnRlck5leHRTY2hlZHVsZWRMYXllckZsdXNoKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgY2FuY2VsUGVuZGluZ0xheWVyRmx1c2goKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNl
dFJvb3RDb21wb3NpdGluZ0xheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGludmFsaWRhdGUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRh
dGUoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXROb25Db21wb3NpdGVkQ29udGVudHNOZWVkRGlz
cGxheSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVl
ZERpc3BsYXlJblJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgc2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IHNjcm9sbFJlY3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9uQ29tcG9zaXRlZENvbnRl
bnRzTmVlZERpc3BsYXkoKSB7IH07CisgICAgdmlydHVhbCB2b2lkIHNldE5vbkNvbXBvc2l0ZWRD
b250ZW50c05lZWREaXNwbGF5SW5SZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSB7IH07Cisg
ICAgdmlydHVhbCB2b2lkIHNjcm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50cyhjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JikgeyB9OwogICAgIHZpcnR1YWwgdm9pZCBmb3JjZVJlcGFpbnQoKSA9IDA7CiAg
ICAgdmlydHVhbCBib29sIGZvcmNlUmVwYWludEFzeW5jKHVpbnQ2NF90IC8qY2FsbGJhY2tJRCov
KSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzaXplRGlkQ2hhbmdlKGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIG5ld1NpemUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGV2aWNl
T3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwYWdlQmFj
a2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGF1
c2VSZW5kZXJpbmcoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lUmVuZGVyaW5nKCkgeyB9
CisgICAgdmlydHVhbCB2b2lkIHBhdXNlUmVuZGVyaW5nKCk7CisgICAgdmlydHVhbCB2b2lkIHJl
c3VtZVJlbmRlcmluZygpOwogCi0gICAgdmlydHVhbCBXZWJDb3JlOjpHcmFwaGljc0xheWVyRmFj
dG9yeSogZ3JhcGhpY3NMYXllckZhY3RvcnkoKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBX
ZWJDb3JlOjpHcmFwaGljc0xheWVyRmFjdG9yeSogZ3JhcGhpY3NMYXllckZhY3RvcnkoKSB7IHJl
dHVybiBudWxscHRyOyB9CiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfTVVMVElQUk9D
RVNTKQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgPSAwOwogI2Vu
ZGlmCiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCi0gICAgdmlydHVh
bCB2b2lkIGNvbnRlbnRzU2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNv
cmU6OlZpZXdwb3J0QXR0cmlidXRlcyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29udGVudHNT
aXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgeyB9OworICAgIHZpcnR1YWwgdm9p
ZCBkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRy
aWJ1dGVzJikgeyB9OwogI2VuZGlmCiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpICYm
IEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKQEAgLTk1LDE1ICs5MywyMSBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogI2lmIFVTRShURVhUVVJFX01BUFBFUikgJiYgUExBVEZPUk0oR1RLKQot
ICAgIHZpcnR1YWwgdm9pZCBzZXROYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcodWlu
dDY0X3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmF0aXZlU3VyZmFjZUhhbmRsZUZvckNv
bXBvc2l0aW5nKHVpbnQ2NF90KSB7IH07CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRW
aWV3T3ZlcmxheVJvb3RMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzZXRWaWV3T3ZlcmxheVJvb3RMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVy
KiB2aWV3T3ZlcmxheVJvb3RMYXllcikgeyBtX3ZpZXdPdmVybGF5Um9vdExheWVyID0gdmlld092
ZXJsYXlSb290TGF5ZXI7IH0KIAogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IExheWVyVHJlZUhv
c3QoV2ViUGFnZSYpOwogCiAgICAgV2ViUGFnZSYgbV93ZWJQYWdlOworICAgIExheWVyVHJlZUNv
bnRleHQgbV9sYXllclRyZWVDb250ZXh0OworICAgIGJvb2wgbV9sYXllckZsdXNoU2NoZWR1bGlu
Z0VuYWJsZWQgeyB0cnVlIH07CisgICAgYm9vbCBtX25vdGlmeUFmdGVyU2NoZWR1bGVkTGF5ZXJG
bHVzaCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzU3VzcGVuZGVkIHsgZmFsc2UgfTsKKyAgICBi
b29sIG1faXNWYWxpZCB7IHRydWUgfTsKKyAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBtX3Zp
ZXdPdmVybGF5Um9vdExheWVyIHsgbnVsbHB0ciB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xh
eWVyVHJlZUhvc3RHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0
ay9MYXllclRyZWVIb3N0R3RrLmNwcAppbmRleCA1NTJhNzYyLi40NGU1ZTA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVl
SG9zdEd0ay5jcHAKQEAgLTEzMywxMCArMTMzLDYgQEAgUmVmPExheWVyVHJlZUhvc3RHdGs+IExh
eWVyVHJlZUhvc3RHdGs6OmNyZWF0ZShXZWJQYWdlJiB3ZWJQYWdlKQogCiBMYXllclRyZWVIb3N0
R3RrOjpMYXllclRyZWVIb3N0R3RrKFdlYlBhZ2UmIHdlYlBhZ2UpCiAgICAgOiBMYXllclRyZWVI
b3N0KHdlYlBhZ2UpCi0gICAgLCBtX2lzVmFsaWQodHJ1ZSkKLSAgICAsIG1fbm90aWZ5QWZ0ZXJT
Y2hlZHVsZWRMYXllckZsdXNoKGZhbHNlKQotICAgICwgbV9sYXllckZsdXNoU2NoZWR1bGluZ0Vu
YWJsZWQodHJ1ZSkKLSAgICAsIG1fdmlld092ZXJsYXlSb290TGF5ZXIobnVsbHB0cikKICAgICAs
IG1fcmVuZGVyRnJhbWVTY2hlZHVsZXIoc3RkOjpiaW5kKCZMYXllclRyZWVIb3N0R3RrOjpyZW5k
ZXJGcmFtZSwgdGhpcykpCiB7CiAgICAgbV9yb290TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVh
dGUoZ3JhcGhpY3NMYXllckZhY3RvcnkoKSwgKnRoaXMpOwpAQCAtMTgzLDIxICsxNzksMTAgQEAg
Ym9vbCBMYXllclRyZWVIb3N0R3RrOjptYWtlQ29udGV4dEN1cnJlbnQoKQogCiBMYXllclRyZWVI
b3N0R3RrOjp+TGF5ZXJUcmVlSG9zdEd0aygpCiB7Ci0gICAgQVNTRVJUKCFtX2lzVmFsaWQpOwog
ICAgIEFTU0VSVCghbV9yb290TGF5ZXIpOwogICAgIGNhbmNlbFBlbmRpbmdMYXllckZsdXNoKCk7
CiB9CiAKLWNvbnN0IExheWVyVHJlZUNvbnRleHQmIExheWVyVHJlZUhvc3RHdGs6OmxheWVyVHJl
ZUNvbnRleHQoKQotewotICAgIHJldHVybiBtX2xheWVyVHJlZUNvbnRleHQ7Ci19Ci0KLXZvaWQg
TGF5ZXJUcmVlSG9zdEd0azo6c2V0U2hvdWxkTm90aWZ5QWZ0ZXJOZXh0U2NoZWR1bGVkTGF5ZXJG
bHVzaChib29sIG5vdGlmeUFmdGVyU2NoZWR1bGVkTGF5ZXJGbHVzaCkKLXsKLSAgICBtX25vdGlm
eUFmdGVyU2NoZWR1bGVkTGF5ZXJGbHVzaCA9IG5vdGlmeUFmdGVyU2NoZWR1bGVkTGF5ZXJGbHVz
aDsKLX0KLQogdm9pZCBMYXllclRyZWVIb3N0R3RrOjpzZXRSb290Q29tcG9zaXRpbmdMYXllcihH
cmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyKQogewogICAgIG1fbm9uQ29tcG9zaXRlZENvbnRl
bnRMYXllci0+cmVtb3ZlQWxsQ2hpbGRyZW4oKTsKQEAgLTIxMSw4ICsxOTYsNiBAQCB2b2lkIExh
eWVyVHJlZUhvc3RHdGs6OnNldFJvb3RDb21wb3NpdGluZ0xheWVyKEdyYXBoaWNzTGF5ZXIqIGdy
YXBoaWNzTGF5ZXIpCiAKIHZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6aW52YWxpZGF0ZSgpCiB7Ci0g
ICAgQVNTRVJUKG1faXNWYWxpZCk7Ci0KICAgICAvLyBUaGlzIGNhbiB0cmlnZ2VyIGRlc3RydWN0
aW9uIG9mIEdMIG9iamVjdHMgc28gbGV0J3MgbWFrZSBzdXJlIHRoYXQKICAgICAvLyB3ZSBoYXZl
IHRoZSByaWdodCBhY3RpdmUgY29udGV4dAogICAgIGlmIChtX2NvbnRleHQpCkBAIC0yMjQsNyAr
MjA3LDcgQEAgdm9pZCBMYXllclRyZWVIb3N0R3RrOjppbnZhbGlkYXRlKCkKICAgICBtX3RleHR1
cmVNYXBwZXIgPSBudWxscHRyOwogCiAgICAgbV9jb250ZXh0ID0gbnVsbHB0cjsKLSAgICBtX2lz
VmFsaWQgPSBmYWxzZTsKKyAgICBMYXllclRyZWVIb3N0OjppbnZhbGlkYXRlKCk7CiB9CiAKIHZv
aWQgTGF5ZXJUcmVlSG9zdEd0azo6c2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVlZERpc3BsYXko
KQpAQCAtMzY1LDcgKzM0OCw3IEBAIHZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6Zmx1c2hBbmRSZW5k
ZXJMYXllcnMoKQogCiAgICAgaWYgKG1fbm90aWZ5QWZ0ZXJTY2hlZHVsZWRMYXllckZsdXNoKSB7
CiAgICAgICAgIC8vIExldCB0aGUgZHJhd2luZyBhcmVhIGtub3cgdGhhdCB3ZSd2ZSBkb25lIGEg
Zmx1c2ggb2YgdGhlIGxheWVyIGNoYW5nZXMuCi0gICAgICAgIHN0YXRpY19jYXN0PERyYXdpbmdB
cmVhSW1wbCo+KG1fd2ViUGFnZS5kcmF3aW5nQXJlYSgpKS0+bGF5ZXJIb3N0RGlkRmx1c2hMYXll
cnMoKTsKKyAgICAgICAgbV93ZWJQYWdlLmRyYXdpbmdBcmVhKCktPmxheWVySG9zdERpZEZsdXNo
TGF5ZXJzKCk7CiAgICAgICAgIG1fbm90aWZ5QWZ0ZXJTY2hlZHVsZWRMYXllckZsdXNoID0gZmFs
c2U7CiAgICAgfQogfQpAQCAtMzc4LDIxICszNjEsNiBAQCB2b2lkIExheWVyVHJlZUhvc3RHdGs6
OnNjaGVkdWxlTGF5ZXJGbHVzaCgpCiAgICAgbV9yZW5kZXJGcmFtZVNjaGVkdWxlci5zdGFydCgp
OwogfQogCi12b2lkIExheWVyVHJlZUhvc3RHdGs6OnNldExheWVyRmx1c2hTY2hlZHVsaW5nRW5h
YmxlZChib29sIGxheWVyRmx1c2hpbmdFbmFibGVkKQotewotICAgIGlmIChtX2xheWVyRmx1c2hT
Y2hlZHVsaW5nRW5hYmxlZCA9PSBsYXllckZsdXNoaW5nRW5hYmxlZCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgbV9sYXllckZsdXNoU2NoZWR1bGluZ0VuYWJsZWQgPSBsYXllckZsdXNoaW5nRW5h
YmxlZDsKLQotICAgIGlmIChtX2xheWVyRmx1c2hTY2hlZHVsaW5nRW5hYmxlZCkgewotICAgICAg
ICBzY2hlZHVsZUxheWVyRmx1c2goKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNh
bmNlbFBlbmRpbmdMYXllckZsdXNoKCk7Ci19Ci0KIHZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6cGFn
ZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCkKIHsKICAgICBtX25vbkNvbXBvc2l0ZWRD
b250ZW50TGF5ZXItPnNldENvbnRlbnRzT3BhcXVlKG1fd2ViUGFnZS5kcmF3c0JhY2tncm91bmQo
KSk7CkBAIC00MDMsOSArMzcxLDkgQEAgdm9pZCBMYXllclRyZWVIb3N0R3RrOjpjYW5jZWxQZW5k
aW5nTGF5ZXJGbHVzaCgpCiAgICAgbV9yZW5kZXJGcmFtZVNjaGVkdWxlci5zdG9wKCk7CiB9CiAK
LXZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6c2V0Vmlld092ZXJsYXlSb290TGF5ZXIoV2ViQ29yZTo6
R3JhcGhpY3NMYXllciogdmlld092ZXJsYXlSb290TGF5ZXIpCit2b2lkIExheWVyVHJlZUhvc3RH
dGs6OnNldFZpZXdPdmVybGF5Um9vdExheWVyKEdyYXBoaWNzTGF5ZXIqIHZpZXdPdmVybGF5Um9v
dExheWVyKQogewotICAgIG1fdmlld092ZXJsYXlSb290TGF5ZXIgPSB2aWV3T3ZlcmxheVJvb3RM
YXllcjsKKyAgICBMYXllclRyZWVIb3N0OjpzZXRWaWV3T3ZlcmxheVJvb3RMYXllcih2aWV3T3Zl
cmxheVJvb3RMYXllcik7CiAgICAgaWYgKG1fdmlld092ZXJsYXlSb290TGF5ZXIpCiAgICAgICAg
IG1fcm9vdExheWVyLT5hZGRDaGlsZChtX3ZpZXdPdmVybGF5Um9vdExheWVyKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9z
dEd0ay5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVI
b3N0R3RrLmgKaW5kZXggYmJmYjMyMS4uYzE1Yjg2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmgKQEAgLTUx
LDcgKzUxLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIExheWVyVHJlZUhvc3QKICAgICB2b2lkIHNj
aGVkdWxlTGF5ZXJGbHVzaCgpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0TGF5ZXJGbHVzaFNjaGVk
dWxpbmdFbmFibGVkKGJvb2wgbGF5ZXJGbHVzaGluZ0VuYWJsZWQpIG92ZXJyaWRlOworICAgIHZv
aWQgY2FuY2VsUGVuZGluZ0xheWVyRmx1c2goKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFJvb3RD
b21wb3NpdGluZ0xheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKICAgICB2
b2lkIGludmFsaWRhdGUoKSBvdmVycmlkZTsKIApAQCAtNjAsNiArNjAsMTEgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpIG92ZXJyaWRlOwogICAg
IHZvaWQgcGFnZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAKKyAg
ICB2b2lkIHNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5KCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBzZXROb25Db21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheUluUmVjdChjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzY3JvbGxOb25Db21wb3NpdGVk
Q29udGVudHMoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBzZXRWaWV3T3ZlcmxheVJvb3RMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKikg
b3ZlcnJpZGU7CisKICAgICB2b2lkIHNldE5hdGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGlu
Zyh1aW50NjRfdCkgb3ZlcnJpZGU7CiAKICAgICBjbGFzcyBSZW5kZXJGcmFtZVNjaGVkdWxlciB7
CkBAIC04MCwxNSArODUsNiBAQCBwcml2YXRlOgogICAgICAgICBkb3VibGUgbV9sYXN0SW1tZWRp
YXRlRmx1c2hUaW1lIHsgMCB9OwogICAgIH07CiAKLSAgICAvLyBMYXllclRyZWVIb3N0Ci0gICAg
Y29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgbGF5ZXJUcmVlQ29udGV4dCgpIG92ZXJyaWRlOwotICAg
IHZvaWQgc2V0U2hvdWxkTm90aWZ5QWZ0ZXJOZXh0U2NoZWR1bGVkTGF5ZXJGbHVzaChib29sKSBv
dmVycmlkZTsKLQotICAgIHZvaWQgc2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVlZERpc3BsYXko
KSBvdmVycmlkZTsKLSAgICB2b2lkIHNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5
SW5SZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIHNjcm9s
bE5vbkNvbXBvc2l0ZWRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzY3JvbGxSZWN0
KSBvdmVycmlkZTsKLSAgICB2b2lkIHNldFZpZXdPdmVybGF5Um9vdExheWVyKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKLQogICAgIC8vIEdyYXBoaWNzTGF5ZXJDbGllbnQKICAg
ICB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciosIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dCYsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNl
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGNsaXBSZWN0KSBvdmVycmlkZTsKICAgICBmbG9h
dCBkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMTAwLDIxICs5NiwxMyBA
QCBwcml2YXRlOgogICAgIHZvaWQgY29tcG9zaXRlTGF5ZXJzVG9Db250ZXh0KENvbXBvc2l0ZVB1
cnBvc2UgPSBOb3RGb3JSZXNpemUpOwogCiAgICAgdm9pZCBmbHVzaEFuZFJlbmRlckxheWVycygp
OwotICAgIHZvaWQgY2FuY2VsUGVuZGluZ0xheWVyRmx1c2goKTsKLQogICAgIGJvb2wgcmVuZGVy
RnJhbWUoKTsKLQogICAgIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAKLSAgICBMYXllclRy
ZWVDb250ZXh0IG1fbGF5ZXJUcmVlQ29udGV4dDsKLSAgICBib29sIG1faXNWYWxpZDsKLSAgICBi
b29sIG1fbm90aWZ5QWZ0ZXJTY2hlZHVsZWRMYXllckZsdXNoOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyPiBtX3Jvb3RMYXllcjsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4gbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpUZXh0dXJlTWFwcGVyPiBtX3RleHR1cmVNYXBw
ZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdMQ29udGV4dD4gbV9jb250ZXh0Owot
ICAgIGJvb2wgbV9sYXllckZsdXNoU2NoZWR1bGluZ0VuYWJsZWQ7Ci0gICAgV2ViQ29yZTo6R3Jh
cGhpY3NMYXllciogbV92aWV3T3ZlcmxheVJvb3RMYXllcjsKICAgICBXZWJDb3JlOjpUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBtX3NjYWxlTWF0cml4OwogICAgIFJlbmRlckZyYW1lU2NoZWR1bGVyIG1f
cmVuZGVyRnJhbWVTY2hlZHVsZXI7CiB9Owo=
</data>
<flag name="review"
          id="305931"
          type_id="1"
          status="+"
          setter="zan"
    />
          </attachment>
      

    </bug>

</bugzilla>