<?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>157669</bug_id>
          
          <creation_ts>2016-05-13 02:02:31 -0700</creation_ts>
          <short_desc>ResourceTiming entries for cached resources and XHR</short_desc>
          <delta_ts>2017-02-10 12:09:56 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=157816</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>157796</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yoav Weiss">yoav</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>yoav</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1192698</commentid>
    <comment_count>0</comment_count>
    <who name="Yoav Weiss">yoav</who>
    <bug_when>2016-05-13 02:02:31 -0700</bug_when>
    <thetext>ResourceTiming entries for cached resources and XHR</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192707</commentid>
    <comment_count>1</comment_count>
      <attachid>278827</attachid>
    <who name="Yoav Weiss">yoav</who>
    <bug_when>2016-05-13 02:36:42 -0700</bug_when>
    <thetext>Created attachment 278827
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192717</commentid>
    <comment_count>2</comment_count>
      <attachid>278831</attachid>
    <who name="Yoav Weiss">yoav</who>
    <bug_when>2016-05-13 04:07:35 -0700</bug_when>
    <thetext>Created attachment 278831
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192721</commentid>
    <comment_count>3</comment_count>
      <attachid>278832</attachid>
    <who name="Yoav Weiss">yoav</who>
    <bug_when>2016-05-13 04:13:53 -0700</bug_when>
    <thetext>Created attachment 278832
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192723</commentid>
    <comment_count>4</comment_count>
    <who name="Yoav Weiss">yoav</who>
    <bug_when>2016-05-13 04:19:11 -0700</bug_when>
    <thetext>This fixes a few issues with ResourceTiming that were preventing it from being useful:
* Resources that were being reused from MemoryCache were not getting their own entries. 
* XHR based resources were not being registered.

The patch also splits out the resource timing entry registration logic from CachedResourceLoader into its own class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192800</commentid>
    <comment_count>5</comment_count>
      <attachid>278832</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-05-13 10:43:15 -0700</bug_when>
    <thetext>Comment on attachment 278832
Patch

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

&gt; Source/WebCore/loader/ResourceTimingInformation.cpp:14
&gt; + *     * Neither the name of Google Inc. nor the names of its

I&apos;m not sure this is the correct copyright.

&gt; Source/WebCore/loader/ResourceTimingInformation.cpp:57
&gt; +                initiatorDocument = document-&gt;parentDocument();

What if there are deeply nested iframes?  Should this be topDocument()?

&gt; Source/WebCore/loader/ResourceTimingInformation.h:32
&gt; +#ifndef ResourceTimingInformation_h
&gt; +#define ResourceTimingInformation_h

#pragma once is the latest thing in WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192863</commentid>
    <comment_count>6</comment_count>
      <attachid>278864</attachid>
    <who name="Yoav Weiss">yoav</who>
    <bug_when>2016-05-13 13:12:06 -0700</bug_when>
    <thetext>Created attachment 278864
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192864</commentid>
    <comment_count>7</comment_count>
    <who name="Yoav Weiss">yoav</who>
    <bug_when>2016-05-13 13:14:38 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 278832 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=278832&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/ResourceTimingInformation.cpp:14
&gt; &gt; + *     * Neither the name of Google Inc. nor the names of its
&gt; 
&gt; I&apos;m not sure this is the correct copyright.

Indeed! Corrected

&gt; 
&gt; &gt; Source/WebCore/loader/ResourceTimingInformation.cpp:57
&gt; &gt; +                initiatorDocument = document-&gt;parentDocument();
&gt; 
&gt; What if there are deeply nested iframes?  Should this be topDocument()?

I believe each iframe is reported as a resource in its parent document, so the above should by correct. FWIW, I didn&apos;t change the existing logic but just moved it from CachedResourceLoader to here.

&gt; 
&gt; &gt; Source/WebCore/loader/ResourceTimingInformation.h:32
&gt; &gt; +#ifndef ResourceTimingInformation_h
&gt; &gt; +#define ResourceTimingInformation_h
&gt; 
&gt; #pragma once is the latest thing in WebKit.

Neat! Changed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192901</commentid>
    <comment_count>8</comment_count>
      <attachid>278864</attachid>
    <who name="Yoav Weiss">yoav</who>
    <bug_when>2016-05-13 15:11:47 -0700</bug_when>
    <thetext>Comment on attachment 278864
Patch

Thanks for reviewing! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192918</commentid>
    <comment_count>9</comment_count>
      <attachid>278864</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-13 15:33:37 -0700</bug_when>
    <thetext>Comment on attachment 278864
Patch

Clearing flags on attachment: 278864

Committed r200887: &lt;http://trac.webkit.org/changeset/200887&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192919</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-13 15:33:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1275470</commentid>
    <comment_count>11</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-02-10 12:09:56 -0800</bug_when>
    <thetext>*** Bug 157259 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278827</attachid>
            <date>2016-05-13 02:36:42 -0700</date>
            <delta_ts>2016-05-13 04:07:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157669-20160513113732.patch</filename>
            <type>text/plain</type>
            <size>26584</size>
            <attacher name="Yoav Weiss">yoav</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwODI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDBjNjBlOGZiZTUyOGYw
NTA2NmU1MmE4YTI5ZjQ5YzliMzQ0NTZlYS4uYTg1YzYxYWZmYmE2ZjAwYWZlMjNiZWMwM2I4MDgw
MjgzNGExOWU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE2LTA1LTEzICBZb2F2
IFdlaXNzICA8eW9hdkB5b2F2LndzPgorCisgICAgICAgIFJlc291cmNlVGltaW5nIGVudHJpZXMg
Zm9yIGNhY2hlZCByZXNvdXJjZXMgYW5kIFhIUgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3NjY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgIC0gTW92ZXMgdGhlIFJlc291cmNlVGltaW5nIHN0b3JhZ2Ug
YW5kIGFkZGl0aW9uIGxvZ2ljIGludG8gaXRzIG93biBjbGFzcywgc28gdGhhdCBpdAorICAgICAg
ICAgICBjYW4gYmUgYWNjZXNzZWQgYnkgYm90aCBDYWNoZWRSZXNvdXJjZUxvYWRlciBhbmQgRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLgorICAgICAgICAgLSBVc2luZyB0aGUgYWJvdmUsIGFkZHMg
UmVzb3VyY2VUaW1pbmcgY29sbGVjdGlvbiBpbnRvIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciwK
KyAgICAgICAgICAgaW4gb3JkZXIgdG8gc3VwcG9ydCBSZXNvdXJjZVRpbWluZyBlbnRyaWVzIGZv
ciBYSFIgYmFzZWQgcmVxdWVzdHMuCisgICAgICAgICAtIEFkZHMgUmVzb3VyY2VUaW1pbmcgZW50
cmllcyBmb3IgcmVzb3VyY2VzIHRoYXQgYXJlIHJldXNlZCBmcm9tIHRoZSBtZW1vcnkgY2FjaGUu
CisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS1yZXNv
dXJjZS10aW1pbmctY2FjaGVkLWVudHJpZXMuaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6IEFkZCBSZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uLgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIFJlc291cmNlVGltaW5nSW5mb3JtYXRpb24uCisg
ICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOiBBZGQg
YSBjYWxsIHRvIGFkZFJlc291cmNlVGltaW5nLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdCk6IFN0b3JlIHRoZSBpbml0aWF0b3IgaW5mb3Jt
YXRpb24uCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uOjphZGRSZXNvdXJjZVRpbWlu
Zyk6IE1vdmVkIGFkZFJlc291cmNlVGltaW5nIGxvZ2ljIGZyb20gQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uOjpzdG9yZVJl
c291cmNlVGltaW5nSW5pdGlhdG9ySW5mb3JtYXRpb24pOiBNb3ZlZCBhZGRSZXNvdXJjZVRpbWlu
ZyBsb2dpYyBmcm9tCisgICAgICAgIENhY2hlZFJlc291cmNlTG9hZGVyLiBSZW1vdmVkIHJlbGlh
bmNlIG9uIHRoZSBjb21taXR0aW5nRmlyc3RSZWFsTG9hZCBib29sIHdoZW4gc3RvcmluZyBpbml0
aWF0b3IgaW5mbywgYXMgSSBkb24ndAorICAgICAgICBzZWUgd2h5IGl0IGlzIHJlcXVpcmVkLCBh
bmQgaXQgbWFkZSBubyBzZW5zZSBpbiB0aGUgY29udGV4dCBvZiBEb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlVGltaW5nSW5mb3JtYXRpb24uaDogQWRk
ZWQuCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UpOiBB
ZGQgYSBSZXNvdXJjZVRpbWluZyBlbnRyeSB3aGVuIGEgcmVzb3VyY2UgaXMgcmV1c2VkIGZyb20g
TWVtb3J5Q2FjaGUuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmV2
YWxpZGF0ZVJlc291cmNlKTogVXNlIFJlc291cmNlVGltaW5nSW5mb3JtYXRpb246OnN0b3JlUmVz
b3VyY2VUaW1pbmdJbml0aWF0b3JJbmZvcm1hdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFJlc291cmNlTG9hZGVyOjpsb2FkUmVzb3VyY2UpOiBVc2UgUmVzb3VyY2VUaW1pbmdJbmZvcm1h
dGlvbjo6c3RvcmVSZXNvdXJjZVRpbWluZ0luaXRpYXRvckluZm9ybWF0aW9uLgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmxvYWREb25lKTogVXNlIFJlc291cmNlVGlt
aW5nSW5mb3JtYXRpb246OmFkZFJlc291cmNlVGltaW5nLgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OnN0b3JlUmVzb3VyY2VUaW1pbmdJbml0aWF0b3JJbmZvcm1hdGlv
bik6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
Lmg6CisKIDIwMTYtMDUtMTIgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5j
b20+CiAKICAgICAgICAgW2Nzcy1ncmlkXSBTaG93IGF1dG8tcmVwZWF0IGxpbmUgbmFtZXMgaW4g
Q29tcHV0ZWRTdHlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA3NTUwYjAwZDJhZjc1Zjg5NDVi
NmRhZjQyMGIwYmJmODcwNWU2NjdmLi5mYzk3Nzk1YTE2NzZhZWJlOGJhNGExNjhlMGQ0OWYzZjk1
NDc3YWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTkzMSw2ICsxOTMxLDcgQEAgc2V0KFdl
YkNvcmVfU09VUkNFUwogICAgIGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAogICAg
IGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCiAgICAgbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcAorICAgIGxvYWRlci9SZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uLmNwcAog
ICAgIGxvYWRlci9TaW5rRG9jdW1lbnQuY3BwCiAgICAgbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNw
cAogICAgIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmNTI2NzI3NDc0NmE5MzI0
MGQ5ZjYzYjc3NWU2MmZmM2Q1ODNlMGYwLi4xY2FiMjY5OGNjNWM0ZWExYmFhZjJiNGI2Yjc3Zjdk
NTYzZWYyMjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC02MDA3LDYgKzYwMDcsOCBAQAogCQlDQjM4RkQ1QTFDRDIzMjU4MDA1
OTJBM0YgLyogSlNQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENCMzhGRDU4MUNEMjMxNDUwMDU5MkEzRiAv
KiBKU1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuY3BwICovOyB9OwogCQlDQjM4RkQ1QjFDRDIz
MjVCMDA1OTJBM0YgLyogSlNQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQjM4RkQ1OTFDRDIzMTQ1MDA1OTJB
M0YgLyogSlNQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmggKi87IH07CiAJCUNCOENGMDE4MUE5
MzU4RDQwMDBENTEwQiAvKiBNaWNyb3Rhc2tzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENCOENGMDE1MUE5MzRCNDMwMDBENTEwQiAvKiBNaWNyb3Rh
c2tzLmNwcCAqLzsgfTsKKwkJQ0JDMkQyMkYxQ0U1Qjg5RDAwRDE4ODBCIC8qIFJlc291cmNlVGlt
aW5nSW5mb3JtYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0JDMkQyMkQxQ0U1Qjc3NDAwRDE4ODBCIC8qIFJlc291cmNlVGltaW5nSW5mb3Jt
YXRpb24uY3BwICovOyB9OworCQlDQkMyRDIzMDFDRTVCOEExMDBEMTg4MEIgLyogUmVzb3VyY2VU
aW1pbmdJbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0JDMkQyMkUxQ0U1Qjc3RDAwRDE4ODBCIC8qIFJlc291cmNlVGltaW5nSW5mb3Jt
YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlDQ0MyQjUxNDE1RjYxMzA2MDA0OENERDYgLyogRGV2aWNlQ2xpZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQ0MyQjUxMDE1RjYxMzA2MDA0OENE
RDYgLyogRGV2aWNlQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQ0NDMkI1MTUxNUY2MTMwNjAwNDhDREQ2IC8qIERldmljZUNvbnRyb2xs
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0ND
MkI1MTExNUY2MTMwNjAwNDhDREQ2IC8qIERldmljZUNvbnRyb2xsZXIuY3BwICovOyB9OwogCQlD
Q0MyQjUxNjE1RjYxMzA2MDA0OENERDYgLyogRGV2aWNlQ29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0NDMkI1MTIxNUY2MTMwNjAwNDhD
REQ2IC8qIERldmljZUNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMTM5ODksNiArMTM5OTEsOCBAQAogCQlDQjM4RkQ1ODFDRDIz
MTQ1MDA1OTJBM0YgLyogSlNQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNCMzhGRDU5MUNEMjMxNDUwMDU5MkEz
RiAvKiBKU1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNCOENGMDE1MUE5MzRCNDMwMDBENTEwQiAvKiBNaWNyb3Rhc2tzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1pY3JvdGFza3MuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDQkMyRDIyRDFDRTVCNzc0MDBEMTg4MEIgLyog
UmVzb3VyY2VUaW1pbmdJbmZvcm1hdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0JDMkQyMkUxQ0U1Qjc3RDAwRDE4ODBCIC8qIFJlc291cmNlVGltaW5n
SW5mb3JtYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VU
aW1pbmdJbmZvcm1hdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQ0MyQjUx
MDE1RjYxMzA2MDA0OENERDYgLyogRGV2aWNlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERldmljZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDQ0MyQjUxMTE1RjYxMzA2MDA0OENERDYgLyogRGV2aWNlQ29udHJvbGxlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZXZpY2VDb250cm9sbGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0NDMkI1MTIxNUY2MTMwNjAwNDhDREQ2IC8qIERl
dmljZUNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGV2aWNl
Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjI4MjIsNiArMjI4
MjYsOCBAQAogCQkJCTdBOTI5Q0EyMUM1OTgzNzgwMDRERjIyNiAvKiBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLmggKi8sCiAJCQkJN0E3Q0M4MzYxQzg3NTA2ODAwMzY2MjQzIC8qIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAgKi8sCiAJCQkJN0E3Q0M4MzcxQzg3NTA2ODAwMzY2MjQzIC8q
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oICovLAorCQkJCUNCQzJEMjJEMUNFNUI3NzQw
MEQxODgwQiAvKiBSZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uLmNwcCAqLywKKwkJCQlDQkMyRDIy
RTFDRTVCNzdEMDBEMTg4MEIgLyogUmVzb3VyY2VUaW1pbmdJbmZvcm1hdGlvbi5oICovLAogCQkJ
CTUxMzI3RDVGMTFBMzNBMkIwMDRGOUQ2NSAvKiBTaW5rRG9jdW1lbnQuY3BwICovLAogCQkJCTUx
MzI3RDVFMTFBMzNBMkIwMDRGOUQ2NSAvKiBTaW5rRG9jdW1lbnQuaCAqLywKIAkJCQlEMDAwRUQy
NTExQzFCOUNEMDBDNDc3MjYgLyogU3ViZnJhbWVMb2FkZXIuY3BwICovLApAQCAtMjgyNDgsNiAr
MjgyNTQsNyBAQAogCQkJCTgzQzFENDMyMTc4RDVBQjUwMDE0MUU2OCAvKiBTVkdQYXRoU2VnTGlu
ZXRvUmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E3RDBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0MxRDQzMzE3
OEQ1QUI1MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsQWJzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlDQkMyRDIzMDFDRTVCOEExMDBEMTg4MEIgLyogUmVzb3VyY2VUaW1pbmdJbmZv
cm1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDMUQ0MzQxNzhENUFCNTAwMTQxRTY4IC8q
IFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdB
ODEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdGhTZWdMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NDc2QzlFNjExREY2QTBCMDA1NTVCMDIgLyogU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTMyMTA5LDYgKzMyMTE2LDcgQEAKIAkJCQkxQTE0MTRCNTEzQTBGMDUw
MDAxOTk5NkMgLyogV2ViS2l0Rm9udEZhbWlseU5hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUQ3NjEzQTUwMTQ3NEYxM0YwMERCODYwNiAvKiBXZWJLaXROYW1lZEZsb3cuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0M0OEE2RDAxOTFDOUQ2NTAwMDI2Njc0IC8qIFdlYktpdE5hbWVzcGFjZS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlDQkMyRDIyRjFDRTVCODlEMDBEMTg4MEIgLyogUmVzb3Vy
Y2VUaW1pbmdJbmZvcm1hdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNURFQkRBMzE2RkI5
MDg3MDA4MzZGRTAgLyogV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkzMUMwRkYyNDBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0VHJh
bnNpdGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQ0YzMzJFMEYyQjlBMjUwMDRC
Njc5NSAvKiBXZWJMYXllci5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA1ZjVlZmQ4NDE4YTM3
ZWEwMmRmYWI2MzUzYjAyNWE4YTYwNmZhYmU1Li5mZDM0OTBlNTA3ZjM4Njg5N2E4ZGZkNTVkZTBh
ZjYwNjBmNzZhMDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMzI1LDYgKzMyNSw5IEBAIHZvaWQgRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiAK
IHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpCiB7CisgICAgaWYgKFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkucmVzb3VyY2VUaW1pbmdFbmFibGVkKCkp
CisgICAgICAgIG1fcmVzb3VyY2VUaW1pbmdJbmZvLmFkZFJlc291cmNlVGltaW5nKG1fcmVzb3Vy
Y2UuZ2V0KCksICZtX2RvY3VtZW50KTsKKwogICAgIGlmIChtX2FjdHVhbFJlcXVlc3QpIHsKICAg
ICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nKG1fZG9jdW1l
bnQuZnJhbWUoKSwgbV9kb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigp
LCBpZGVudGlmaWVyLCBmaW5pc2hUaW1lKTsKIApAQCAtMzkwLDkgKzM5MywxMyBAQCB2b2lkIERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBTZWN1cgogICAgICAgICAgICAgbmV3UmVxdWVzdC5zZXRJbml0aWF0b3IobV9v
cHRpb25zLmluaXRpYXRvcik7CiAgICAgICAgIEFTU0VSVCghbV9yZXNvdXJjZSk7CiAgICAgICAg
IG1fcmVzb3VyY2UgPSBtX2RvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdFJh
d1Jlc291cmNlKG5ld1JlcXVlc3QpOwotICAgICAgICBpZiAobV9yZXNvdXJjZSkKKyAgICAgICAg
aWYgKG1fcmVzb3VyY2UpIHsKICAgICAgICAgICAgIG1fcmVzb3VyY2UtPmFkZENsaWVudCh0aGlz
KTsKIAorICAgICAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkucmVzb3VyY2VUaW1pbmdFbmFibGVkKCkpCisgICAgICAgICAgICAgICAgbV9yZXNvdXJj
ZVRpbWluZ0luZm8uc3RvcmVSZXNvdXJjZVRpbWluZ0luaXRpYXRvckluZm9ybWF0aW9uKG1fcmVz
b3VyY2UsIG5ld1JlcXVlc3QsIG1fZG9jdW1lbnQuZnJhbWUoKSk7CisgICAgICAgIH0KKwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCmluZGV4IDQ2ZGZjNTI4Y2RkOTllMWUyNmQ2N2I1Mjc0
ZTM0M2ZjYTVmYTFlYzYuLmI0MjFlODdmMjQzYjJmNzkxNDZhYjViMzI1MDYzOTUwYTA3NWEwNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LmgKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkNhY2hlZFJhd1Jlc291cmNlQ2xpZW50
LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJSZXNvdXJj
ZVRpbWluZ0luZm9ybWF0aW9uLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMDUsNiArMTA2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBtX2NsaWVudDsKICAgICAgICAgRG9j
dW1lbnQmIG1fZG9jdW1lbnQ7CiAgICAgICAgIFRocmVhZGFibGVMb2FkZXJPcHRpb25zIG1fb3B0
aW9uczsKKyAgICAgICAgUmVzb3VyY2VUaW1pbmdJbmZvcm1hdGlvbiBtX3Jlc291cmNlVGltaW5n
SW5mbzsKICAgICAgICAgYm9vbCBtX3NhbWVPcmlnaW5SZXF1ZXN0OwogICAgICAgICBib29sIG1f
c2ltcGxlUmVxdWVzdDsKICAgICAgICAgYm9vbCBtX2FzeW5jOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nSW5mb3JtYXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nSW5mb3JtYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1
YzRhYjNhMzQ4MmY1ZmRjMzQwMjQ5ZGUzNjVhYzY5NzQ1ZmJlZGMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VUaW1pbmdJbmZvcm1hdGlvbi5jcHAKQEAg
LTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBa2FtYWkgVGVjaG5vbG9n
aWVzIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJSZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uLmgiCisKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJj
ZS5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlUmVxdWVzdC5oIgorI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCisjaW5jbHVkZSAiRG9tV2luZG93LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNs
dWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKKyNpbmNsdWRlICJQZXJmb3JtYW5jZS5oIgor
I2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCit2b2lkIFJlc291cmNlVGltaW5nSW5mb3JtYXRpb246OmFkZFJlc291cmNlVGltaW5nKENh
Y2hlZFJlc291cmNlKiByZXNvdXJjZSwgRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIEFTU0VS
VChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnJlc291cmNlVGltaW5n
RW5hYmxlZCgpKTsKKyAgICBpZiAocmVzb3VyY2UgJiYgcmVzb3VyY2UtPnJlc3BvbnNlKCkuaXNI
VFRQKCkKKyAgICAgICAgJiYgKCghcmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSAmJiAhcmVzb3Vy
Y2UtPndhc0NhbmNlbGVkKCkpIHx8IHJlc291cmNlLT5yZXNwb25zZSgpLmh0dHBTdGF0dXNDb2Rl
KCkgPT0gMzA0KSkgeworICAgICAgICBIYXNoTWFwPENhY2hlZFJlc291cmNlKiwgSW5pdGlhdG9y
SW5mbz46Oml0ZXJhdG9yIGluaXRpYXRvckl0ID0gbV9pbml0aWF0b3JNYXAuZmluZChyZXNvdXJj
ZSk7CisgICAgICAgIGlmIChpbml0aWF0b3JJdCAhPSBtX2luaXRpYXRvck1hcC5lbmQoKSkgewor
ICAgICAgICAgICAgQVNTRVJUKGRvY3VtZW50KTsKKyAgICAgICAgICAgIERvY3VtZW50KiBpbml0
aWF0b3JEb2N1bWVudCA9IGRvY3VtZW50OworICAgICAgICAgICAgaWYgKHJlc291cmNlLT50eXBl
KCkgPT0gQ2FjaGVkUmVzb3VyY2U6Ok1haW5SZXNvdXJjZSkKKyAgICAgICAgICAgICAgICBpbml0
aWF0b3JEb2N1bWVudCA9IGRvY3VtZW50LT5wYXJlbnREb2N1bWVudCgpOworICAgICAgICAgICAg
QVNTRVJUKGluaXRpYXRvckRvY3VtZW50KTsKKyAgICAgICAgICAgIEFTU0VSVChpbml0aWF0b3JE
b2N1bWVudC0+ZG9tV2luZG93KCkpOworICAgICAgICAgICAgQVNTRVJUKGluaXRpYXRvckRvY3Vt
ZW50LT5kb21XaW5kb3coKS0+cGVyZm9ybWFuY2UoKSk7CisgICAgICAgICAgICBjb25zdCBJbml0
aWF0b3JJbmZvJiBpbmZvID0gaW5pdGlhdG9ySXQtPnZhbHVlOworICAgICAgICAgICAgaW5pdGlh
dG9yRG9jdW1lbnQtPmRvbVdpbmRvdygpLT5wZXJmb3JtYW5jZSgpLT5hZGRSZXNvdXJjZVRpbWlu
ZyhpbmZvLm5hbWUsIGluaXRpYXRvckRvY3VtZW50LCByZXNvdXJjZS0+cmVzb3VyY2VSZXF1ZXN0
KCksIHJlc291cmNlLT5yZXNwb25zZSgpLCBpbmZvLnN0YXJ0VGltZSwgcmVzb3VyY2UtPmxvYWRG
aW5pc2hUaW1lKCkpOworICAgICAgICAgICAgbV9pbml0aWF0b3JNYXAucmVtb3ZlKGluaXRpYXRv
ckl0KTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBSZXNvdXJjZVRpbWluZ0luZm9ybWF0
aW9uOjpzdG9yZVJlc291cmNlVGltaW5nSW5pdGlhdG9ySW5mb3JtYXRpb24oY29uc3QgQ2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+JiByZXNvdXJjZSwgY29uc3QgQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGcmFtZSogZnJhbWUpCit7CisgICAgQVNTRVJUKFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkucmVzb3VyY2VUaW1pbmdFbmFibGVk
KCkpOworICAgIEFTU0VSVChyZXNvdXJjZS5nZXQoKSk7CisgICAgaWYgKHJlc291cmNlLT50eXBl
KCkgPT0gQ2FjaGVkUmVzb3VyY2U6Ok1haW5SZXNvdXJjZSkgeworICAgICAgICAvLyA8aWZyYW1l
PnMgc2hvdWxkIHJlcG9ydCB0aGUgaW5pdGlhbCBuYXZpZ2F0aW9uIHJlcXVlc3RlZCBieSB0aGUg
cGFyZW50IGRvY3VtZW50LCBidXQgbm90IHN1YnNlcXVlbnQgbmF2aWdhdGlvbnMuCisgICAgICAg
IEFTU0VSVChmcmFtZSk7CisgICAgICAgIGlmIChmcmFtZS0+b3duZXJFbGVtZW50KCkpIHsKKyAg
ICAgICAgICAgIEluaXRpYXRvckluZm8gaW5mbyA9IHsgZnJhbWUtPm93bmVyRWxlbWVudCgpLT5s
b2NhbE5hbWUoKSwgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgfTsKKyAgICAgICAgICAg
IG1faW5pdGlhdG9yTWFwLmFkZChyZXNvdXJjZS5nZXQoKSwgaW5mbyk7CisgICAgICAgIH0KKyAg
ICB9IGVsc2UgeworICAgICAgICBJbml0aWF0b3JJbmZvIGluZm8gPSB7IHJlcXVlc3QuaW5pdGlh
dG9yTmFtZSgpLCBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSB9OworICAgICAgICBtX2lu
aXRpYXRvck1hcC5hZGQocmVzb3VyY2UuZ2V0KCksIGluZm8pOworICAgIH0KK30KKworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nSW5mb3JtYXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZGY5NzYzZjM1ZjczNGM3MDU4ZTc3ZWQ2YjIwZGE5NWMxYWQ1MDI0MQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZVRpbWluZ0luZm9ybWF0
aW9uLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBa2FtYWkg
VGVjaG5vbG9naWVzIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJlc291cmNlVGltaW5n
SW5mb3JtYXRpb25faAorI2RlZmluZSBSZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uX2gKKworI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBDYWNoZWRSZXNvdXJjZTsKK2NsYXNzIENhY2hlZFJlc291cmNlUmVxdWVzdDsKK2Ns
YXNzIERvY3VtZW50OworY2xhc3MgRnJhbWU7CisKK2NsYXNzIFJlc291cmNlVGltaW5nSW5mb3Jt
YXRpb24geworcHVibGljOgorCisgICAgdm9pZCBhZGRSZXNvdXJjZVRpbWluZyhDYWNoZWRSZXNv
dXJjZSosIERvY3VtZW50Kik7CisgICAgdm9pZCBzdG9yZVJlc291cmNlVGltaW5nSW5pdGlhdG9y
SW5mb3JtYXRpb24oY29uc3QgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+Jiwg
Y29uc3QgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiwgRnJhbWUqKTsKKworcHJpdmF0ZToKKyAgICBz
dHJ1Y3QgSW5pdGlhdG9ySW5mbyB7CisgICAgICAgIEF0b21pY1N0cmluZyBuYW1lOworICAgICAg
ICBkb3VibGUgc3RhcnRUaW1lOworICAgIH07CisgICAgSGFzaE1hcDxDYWNoZWRSZXNvdXJjZSos
IEluaXRpYXRvckluZm8+IG1faW5pdGlhdG9yTWFwOworfTsKKworfQorCisjZW5kaWYgLy8gIWRl
ZmluZWQoUmVzb3VyY2VUaW1pbmdJbmZvcm1hdGlvbl9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZTkzNGIwZjRi
NmU3NzlkYzJhMWNmMWZkMDliMWNkOGUzOGY5MDYxNy4uYzE3NjgxZmEwOTk4YTc2M2NlNTgyY2Nh
ODg0NGI3NDAwMTYwODg0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC02MTgsNiArNjE4LDEwIEBAIENhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVz
dFJlc291cmNlKENhY2hlCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgbG9n
TWVtb3J5Q2FjaGVSZXNvdXJjZVJlcXVlc3QoZnJhbWUoKSwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlz
Ojppbk1lbW9yeUNhY2hlS2V5KCksIERpYWdub3N0aWNMb2dnaW5nS2V5czo6dXNlZEtleSgpKTsK
ICAgICAgICAgbWVtb3J5Q2FjaGUucmVzb3VyY2VBY2Nlc3NlZCgqcmVzb3VyY2UpOworICAgICAg
ICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5yZXNvdXJjZVRp
bWluZ0VuYWJsZWQoKSkgeworICAgICAgICAgICAgbV9yZXNvdXJjZVRpbWluZ0luZm8uc3RvcmVS
ZXNvdXJjZVRpbWluZ0luaXRpYXRvckluZm9ybWF0aW9uKHJlc291cmNlLCByZXF1ZXN0LCBmcmFt
ZSgpKTsKKyAgICAgICAgICAgIG1fcmVzb3VyY2VUaW1pbmdJbmZvLmFkZFJlc291cmNlVGltaW5n
KHJlc291cmNlLmdldCgpLCBkb2N1bWVudCgpKTsKKyAgICAgICAgfQogICAgICAgICBicmVhazsK
ICAgICB9CiAKQEAgLTY3MCw3ICs2NzQsNyBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRS
ZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJldmFsaWRhdGVSZXNvdXJjZShjbwogICAg
IG1lbW9yeUNhY2hlLnJlbW92ZSgqcmVzb3VyY2UpOwogICAgIG1lbW9yeUNhY2hlLmFkZCgqbmV3
UmVzb3VyY2UpOwogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpLnJlc291cmNlVGltaW5nRW5hYmxlZCgpKQotICAgICAgICBzdG9yZVJlc291cmNlVGltaW5n
SW5pdGlhdG9ySW5mb3JtYXRpb24ocmVzb3VyY2UsIHJlcXVlc3QpOworICAgICAgICBtX3Jlc291
cmNlVGltaW5nSW5mby5zdG9yZVJlc291cmNlVGltaW5nSW5pdGlhdG9ySW5mb3JtYXRpb24ocmVz
b3VyY2UsIHJlcXVlc3QsIGZyYW1lKCkpOwogICAgIHJldHVybiBuZXdSZXNvdXJjZTsKIH0KIApA
QCAtNjg2LDI1ICs2OTAsMTAgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+
IENhY2hlZFJlc291cmNlTG9hZGVyOjpsb2FkUmVzb3VyY2UoQ2FjaGVkUmUKICAgICBpZiAocmVx
dWVzdC5hbGxvd3NDYWNoaW5nKCkgJiYgIW1lbW9yeUNhY2hlLmFkZCgqcmVzb3VyY2UpKQogICAg
ICAgICByZXNvdXJjZS0+c2V0T3duaW5nQ2FjaGVkUmVzb3VyY2VMb2FkZXIodGhpcyk7CiAgICAg
aWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkucmVzb3VyY2VUaW1p
bmdFbmFibGVkKCkpCi0gICAgICAgIHN0b3JlUmVzb3VyY2VUaW1pbmdJbml0aWF0b3JJbmZvcm1h
dGlvbihyZXNvdXJjZSwgcmVxdWVzdCk7CisgICAgICAgIG1fcmVzb3VyY2VUaW1pbmdJbmZvLnN0
b3JlUmVzb3VyY2VUaW1pbmdJbml0aWF0b3JJbmZvcm1hdGlvbihyZXNvdXJjZSwgcmVxdWVzdCwg
ZnJhbWUoKSk7CiAgICAgcmV0dXJuIHJlc291cmNlOwogfQogCi12b2lkIENhY2hlZFJlc291cmNl
TG9hZGVyOjpzdG9yZVJlc291cmNlVGltaW5nSW5pdGlhdG9ySW5mb3JtYXRpb24oY29uc3QgQ2Fj
aGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+JiByZXNvdXJjZSwgY29uc3QgQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQotewotICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnJlc291cmNlVGltaW5nRW5hYmxlZCgpKTsKLSAgICBp
ZiAocmVzb3VyY2UtPnR5cGUoKSA9PSBDYWNoZWRSZXNvdXJjZTo6TWFpblJlc291cmNlKSB7Ci0g
ICAgICAgIC8vIDxpZnJhbWU+cyBzaG91bGQgcmVwb3J0IHRoZSBpbml0aWFsIG5hdmlnYXRpb24g
cmVxdWVzdGVkIGJ5IHRoZSBwYXJlbnQgZG9jdW1lbnQsIGJ1dCBub3Qgc3Vic2VxdWVudCBuYXZp
Z2F0aW9ucy4KLSAgICAgICAgaWYgKGZyYW1lKCktPm93bmVyRWxlbWVudCgpICYmIG1fZG9jdW1l
bnRMb2FkZXItPmZyYW1lTG9hZGVyKCktPnN0YXRlTWFjaGluZSgpLmNvbW1pdHRpbmdGaXJzdFJl
YWxMb2FkKCkpIHsKLSAgICAgICAgICAgIEluaXRpYXRvckluZm8gaW5mbyA9IHsgZnJhbWUoKS0+
b3duZXJFbGVtZW50KCktPmxvY2FsTmFtZSgpLCBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUo
KSB9OwotICAgICAgICAgICAgbV9pbml0aWF0b3JNYXAuYWRkKHJlc291cmNlLmdldCgpLCBpbmZv
KTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIEluaXRpYXRvckluZm8gaW5mbyA9
IHsgcmVxdWVzdC5pbml0aWF0b3JOYW1lKCksIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgp
IH07Ci0gICAgICAgIG1faW5pdGlhdG9yTWFwLmFkZChyZXNvdXJjZS5nZXQoKSwgaW5mbyk7Ci0g
ICAgfQotfQotCiBzdGF0aWMgdm9pZCBsb2dSZXZhbGlkYXRpb24oY29uc3QgU3RyaW5nJiByZWFz
b24sIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50JiBsb2dDbGllbnQpCiB7CiAgICAgbG9nQ2xpZW50
LmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKERpYWdub3N0aWNMb2dnaW5nS2V5czo6Y2Fj
aGVkUmVzb3VyY2VSZXZhbGlkYXRpb25LZXkoKSwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpyZWFz
b25LZXkoKSwgcmVhc29uLCBTaG91bGRTYW1wbGU6Olllcyk7CkBAIC05NzAsMjEgKzk1OSw4IEBA
IHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmxvYWREb25lKENhY2hlZFJlc291cmNlKiByZXNv
dXJjZSwgYm9vbCBzaG91bGRQZXJmb3JtCiAgICAgUmVmUHRyPERvY3VtZW50PiBwcm90ZWN0RG9j
dW1lbnQobV9kb2N1bWVudCk7CiAKICNpZiBFTkFCTEUoV0VCX1RJTUlORykKLSAgICBpZiAoUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5yZXNvdXJjZVRpbWluZ0VuYWJs
ZWQoKQotICAgICAgICAmJiByZXNvdXJjZSAmJiByZXNvdXJjZS0+cmVzcG9uc2UoKS5pc0hUVFAo
KQotICAgICAgICAmJiAoKCFyZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpICYmICFyZXNvdXJjZS0+
d2FzQ2FuY2VsZWQoKSkgfHwgcmVzb3VyY2UtPnJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA9
PSAzMDQpKSB7Ci0gICAgICAgIEhhc2hNYXA8Q2FjaGVkUmVzb3VyY2UqLCBJbml0aWF0b3JJbmZv
Pjo6aXRlcmF0b3IgaW5pdGlhdG9ySXQgPSBtX2luaXRpYXRvck1hcC5maW5kKHJlc291cmNlKTsK
LSAgICAgICAgaWYgKGluaXRpYXRvckl0ICE9IG1faW5pdGlhdG9yTWFwLmVuZCgpKSB7Ci0gICAg
ICAgICAgICBBU1NFUlQoZG9jdW1lbnQoKSk7Ci0gICAgICAgICAgICBEb2N1bWVudCogaW5pdGlh
dG9yRG9jdW1lbnQgPSBkb2N1bWVudCgpOwotICAgICAgICAgICAgaWYgKHJlc291cmNlLT50eXBl
KCkgPT0gQ2FjaGVkUmVzb3VyY2U6Ok1haW5SZXNvdXJjZSkKLSAgICAgICAgICAgICAgICBpbml0
aWF0b3JEb2N1bWVudCA9IGRvY3VtZW50KCktPnBhcmVudERvY3VtZW50KCk7Ci0gICAgICAgICAg
ICBBU1NFUlQoaW5pdGlhdG9yRG9jdW1lbnQpOwotICAgICAgICAgICAgY29uc3QgSW5pdGlhdG9y
SW5mbyYgaW5mbyA9IGluaXRpYXRvckl0LT52YWx1ZTsKLSAgICAgICAgICAgIGluaXRpYXRvckRv
Y3VtZW50LT5kb21XaW5kb3coKS0+cGVyZm9ybWFuY2UoKS0+YWRkUmVzb3VyY2VUaW1pbmcoaW5m
by5uYW1lLCBpbml0aWF0b3JEb2N1bWVudCwgcmVzb3VyY2UtPnJlc291cmNlUmVxdWVzdCgpLCBy
ZXNvdXJjZS0+cmVzcG9uc2UoKSwgaW5mby5zdGFydFRpbWUsIHJlc291cmNlLT5sb2FkRmluaXNo
VGltZSgpKTsKLSAgICAgICAgICAgIG1faW5pdGlhdG9yTWFwLnJlbW92ZShpbml0aWF0b3JJdCk7
Ci0gICAgICAgIH0KLSAgICB9CisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkucmVzb3VyY2VUaW1pbmdFbmFibGVkKCkpCisgICAgICAgIG1fcmVzb3VyY2VU
aW1pbmdJbmZvLmFkZFJlc291cmNlVGltaW5nKHJlc291cmNlLCBkb2N1bWVudCgpKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKHJlc291cmNlKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAppbmRleCA0ZGY4MTk5NTlj
ZWFiMTEwMzc0YjU1YjQ2MDM5MzBhODdlYjdjNjZhLi4yYjU2MWI2NTliYmRlOWNkOTM5MDQ5M2Q5
ZmUwYjVmYjAyZjhjMWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNhY2hl
ZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCIKKyNpbmNsdWRlICJSZXNvdXJjZVRpbWlu
Z0luZm9ybWF0aW9uLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtMTQ0LDcgKzE0NSw2IEBAIHByaXZhdGU6
CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHJlcXVlc3RSZXNvdXJj
ZShDYWNoZWRSZXNvdXJjZTo6VHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgQ2Fj
aGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHJldmFsaWRhdGVSZXNvdXJjZShjb25z
dCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmLCBDYWNoZWRSZXNvdXJjZSopOwogICAgIENhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBsb2FkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6
OlR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdCYpOwotICAgIHZvaWQgc3RvcmVSZXNvdXJjZVRp
bWluZ0luaXRpYXRvckluZm9ybWF0aW9uKGNvbnN0IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZFJlc291cmNlPiYsIGNvbnN0IENhY2hlZFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgcmVx
dWVzdFByZWxvYWQoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFN0cmluZyYgY2hhcnNldCk7CiAKICAgICBlbnVtIFJldmFsaWRhdGlvblBvbGljeSB7
IFVzZSwgUmV2YWxpZGF0ZSwgUmVsb2FkLCBMb2FkIH07CkBAIC0xNzcsMTEgKzE3Nyw3IEBAIHBy
aXZhdGU6CiAKICAgICBUaW1lciBtX2dhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXNUaW1l
cjsKIAotICAgIHN0cnVjdCBJbml0aWF0b3JJbmZvIHsKLSAgICAgICAgQXRvbWljU3RyaW5nIG5h
bWU7Ci0gICAgICAgIGRvdWJsZSBzdGFydFRpbWU7Ci0gICAgfTsKLSAgICBIYXNoTWFwPENhY2hl
ZFJlc291cmNlKiwgSW5pdGlhdG9ySW5mbz4gbV9pbml0aWF0b3JNYXA7CisgICAgUmVzb3VyY2VU
aW1pbmdJbmZvcm1hdGlvbiBtX3Jlc291cmNlVGltaW5nSW5mbzsKIAogICAgIC8vIDI5IGJpdHMg
bGVmdAogICAgIGJvb2wgbV9hdXRvTG9hZEltYWdlcyA6IDE7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOWZlMjljZDI3OWY3
MjE1MTYyYzUwOTk2MWNjZmY0OTQ0ZjVhMWVlZC4uZjFjMWJlMGU1YzNjOWZjN2UyYmJlZjhlY2E3
NTQxNTlmN2Q0ZTE1ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE2LTA1LTEzICBZb2F2IFdl
aXNzICA8eW9hdkB5b2F2LndzPgorCisgICAgICAgIFJlc291cmNlVGltaW5nIGVudHJpZXMgZm9y
IGNhY2hlZCByZXNvdXJjZXMgYW5kIFhIUgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU3NjY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhlc2UgdGVzdHMgbWFrZSBzdXJlIHRoYXQgY2FjaGVhYmxlIHJl
c291cmNlcyBhcyB3ZWxsIGFzIFhIUiBiYXNlZCByZXNvdXJjZXMKKyAgICAgICAgaGF2ZSBSZXNv
dXJjZVRpbWluZyBlbnRyaWVzLgorCisgICAgICAgICogaHR0cC90ZXN0cy9wZXJmb3JtYW5jZS9w
ZXJmb3JtYW5jZS1yZXNvdXJjZS10aW1pbmctY2FjaGVkLWVudHJpZXMtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3BlcmZvcm1hbmNlL3BlcmZvcm1hbmNlLXJlc291
cmNlLXRpbWluZy1jYWNoZWQtZW50cmllcy5odG1sOiBBZGRlZC4KKwogMjAxNi0wNS0xMyAgU2th
Y2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdtYWlsLmNvbT4KIAogICAgICAgICBBc3NlcnRp
b24gZmFpbHVyZSBmb3Igc3VwZXIoKSBjYWxsIGluIGFycm93IGZ1bmN0aW9uIGRlZmF1bHQgcGFy
YW1ldGVycwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wZXJmb3JtYW5jZS9w
ZXJmb3JtYW5jZS1yZXNvdXJjZS10aW1pbmctY2FjaGVkLWVudHJpZXMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS1yZXNvdXJjZS10
aW1pbmctY2FjaGVkLWVudHJpZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmODcxYzNiODM5
NDc3MmE0ODIzNTFmZDM4YzE3NTAxMTI5Y2E0ODAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3BlcmZvcm1hbmNlL3BlcmZvcm1hbmNlLXJlc291cmNlLXRpbWluZy1j
YWNoZWQtZW50cmllcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyIEBACitQQVNTIGZvdW5kUmVz
b3VyY2UgaXMgMgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BlcmZvcm1h
bmNlL3BlcmZvcm1hbmNlLXJlc291cmNlLXRpbWluZy1jYWNoZWQtZW50cmllcy5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS1yZXNvdXJjZS10aW1p
bmctY2FjaGVkLWVudHJpZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNTRkMzJkMmFjZTRjZDgzYjVhOTJl
MGZjYjA0Y2U4YmRlZTIwOWZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS1yZXNvdXJjZS10aW1pbmctY2FjaGVkLWVudHJp
ZXMuaHRtbApAQCAtMCwwICsxLDQ0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPHNjcmlw
dD4KKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxzLnNldFJlc291
cmNlVGltaW5nU3VwcG9ydCh0cnVlKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCkKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7CisgICAgfQorPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxpbWcgc3JjPSIuLi8uLi9yZXNvdXJjZXMvc3F1
YXJlMTAwLnBuZyI+Cis8c2NyaXB0PgorICAgIHZhciBmb3VuZFJlc291cmNlID0gMDsKKyAgICB2
YXIgcnVuVGVzdCA9IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgcmVzb3VyY2VzID0gcGVyZm9y
bWFuY2UuZ2V0RW50cmllc0J5VHlwZSgncmVzb3VyY2UnKTsKKyAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCByZXNvdXJjZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChyZXNvdXJj
ZXNbaV0ubmFtZS5pbmRleE9mKCJzcXVhcmUiKSAhPSAtMSkKKyAgICAgICAgICAgICAgICArK2Zv
dW5kUmVzb3VyY2U7CisgICAgICAgIH07CisgICAgICAgIHNob3VsZEJlKCJmb3VuZFJlc291cmNl
IiwgIjIiKTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICB3aW5k
b3cuaW50ZXJuYWxzLnNldFJlc291cmNlVGltaW5nU3VwcG9ydChmYWxzZSk7CisgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OworICAgIH07CisgICAgdmFyIHdpbmRvd0xvYWRlZCA9IGZhbHNlOworICAgIHZhciB4aHJMb2Fk
ZWQgPSBmYWxzZTsKKyAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgeGhy
LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKHdpbmRv
d0xvYWRlZCkKKyAgICAgICAgICAgIHJ1blRlc3QoKTsKKyAgICAgICAgeGhyTG9hZGVkID0gdHJ1
ZTsKKyAgICB9KTsKKyAgICB4aHIub3BlbigiR0VUIiwgIi4uLy4uL3Jlc291cmNlcy9zcXVhcmUx
MDAucG5nIik7CisgICAgeGhyLnNlbmQoKTsKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigi
bG9hZCIsIGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAoeGhyTG9hZGVkKQorICAgICAgICAgICAg
cnVuVGVzdCgpOworICAgICAgICB3aW5kb3dMb2FkZWQgPSB0cnVlOworICAgIH0pOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278831</attachid>
            <date>2016-05-13 04:07:35 -0700</date>
            <delta_ts>2016-05-13 04:13:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157669-20160513130820.patch</filename>
            <type>text/plain</type>
            <size>26696</size>
            <attacher name="Yoav Weiss">yoav</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwODI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDBjNjBlOGZiZTUyOGYw
NTA2NmU1MmE4YTI5ZjQ5YzliMzQ0NTZlYS4uYTg1YzYxYWZmYmE2ZjAwYWZlMjNiZWMwM2I4MDgw
MjgzNGExOWU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE2LTA1LTEzICBZb2F2
IFdlaXNzICA8eW9hdkB5b2F2LndzPgorCisgICAgICAgIFJlc291cmNlVGltaW5nIGVudHJpZXMg
Zm9yIGNhY2hlZCByZXNvdXJjZXMgYW5kIFhIUgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3NjY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgIC0gTW92ZXMgdGhlIFJlc291cmNlVGltaW5nIHN0b3JhZ2Ug
YW5kIGFkZGl0aW9uIGxvZ2ljIGludG8gaXRzIG93biBjbGFzcywgc28gdGhhdCBpdAorICAgICAg
ICAgICBjYW4gYmUgYWNjZXNzZWQgYnkgYm90aCBDYWNoZWRSZXNvdXJjZUxvYWRlciBhbmQgRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLgorICAgICAgICAgLSBVc2luZyB0aGUgYWJvdmUsIGFkZHMg
UmVzb3VyY2VUaW1pbmcgY29sbGVjdGlvbiBpbnRvIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciwK
KyAgICAgICAgICAgaW4gb3JkZXIgdG8gc3VwcG9ydCBSZXNvdXJjZVRpbWluZyBlbnRyaWVzIGZv
ciBYSFIgYmFzZWQgcmVxdWVzdHMuCisgICAgICAgICAtIEFkZHMgUmVzb3VyY2VUaW1pbmcgZW50
cmllcyBmb3IgcmVzb3VyY2VzIHRoYXQgYXJlIHJldXNlZCBmcm9tIHRoZSBtZW1vcnkgY2FjaGUu
CisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS1yZXNv
dXJjZS10aW1pbmctY2FjaGVkLWVudHJpZXMuaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6IEFkZCBSZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uLgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIFJlc291cmNlVGltaW5nSW5mb3JtYXRpb24uCisg
ICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOiBBZGQg
YSBjYWxsIHRvIGFkZFJlc291cmNlVGltaW5nLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdCk6IFN0b3JlIHRoZSBpbml0aWF0b3IgaW5mb3Jt
YXRpb24uCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uOjphZGRSZXNvdXJjZVRpbWlu
Zyk6IE1vdmVkIGFkZFJlc291cmNlVGltaW5nIGxvZ2ljIGZyb20gQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uOjpzdG9yZVJl
c291cmNlVGltaW5nSW5pdGlhdG9ySW5mb3JtYXRpb24pOiBNb3ZlZCBhZGRSZXNvdXJjZVRpbWlu
ZyBsb2dpYyBmcm9tCisgICAgICAgIENhY2hlZFJlc291cmNlTG9hZGVyLiBSZW1vdmVkIHJlbGlh
bmNlIG9uIHRoZSBjb21taXR0aW5nRmlyc3RSZWFsTG9hZCBib29sIHdoZW4gc3RvcmluZyBpbml0
aWF0b3IgaW5mbywgYXMgSSBkb24ndAorICAgICAgICBzZWUgd2h5IGl0IGlzIHJlcXVpcmVkLCBh
bmQgaXQgbWFkZSBubyBzZW5zZSBpbiB0aGUgY29udGV4dCBvZiBEb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlVGltaW5nSW5mb3JtYXRpb24uaDogQWRk
ZWQuCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UpOiBB
ZGQgYSBSZXNvdXJjZVRpbWluZyBlbnRyeSB3aGVuIGEgcmVzb3VyY2UgaXMgcmV1c2VkIGZyb20g
TWVtb3J5Q2FjaGUuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmV2
YWxpZGF0ZVJlc291cmNlKTogVXNlIFJlc291cmNlVGltaW5nSW5mb3JtYXRpb246OnN0b3JlUmVz
b3VyY2VUaW1pbmdJbml0aWF0b3JJbmZvcm1hdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFJlc291cmNlTG9hZGVyOjpsb2FkUmVzb3VyY2UpOiBVc2UgUmVzb3VyY2VUaW1pbmdJbmZvcm1h
dGlvbjo6c3RvcmVSZXNvdXJjZVRpbWluZ0luaXRpYXRvckluZm9ybWF0aW9uLgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmxvYWREb25lKTogVXNlIFJlc291cmNlVGlt
aW5nSW5mb3JtYXRpb246OmFkZFJlc291cmNlVGltaW5nLgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OnN0b3JlUmVzb3VyY2VUaW1pbmdJbml0aWF0b3JJbmZvcm1hdGlv
bik6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
Lmg6CisKIDIwMTYtMDUtMTIgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5j
b20+CiAKICAgICAgICAgW2Nzcy1ncmlkXSBTaG93IGF1dG8tcmVwZWF0IGxpbmUgbmFtZXMgaW4g
Q29tcHV0ZWRTdHlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA3NTUwYjAwZDJhZjc1Zjg5NDVi
NmRhZjQyMGIwYmJmODcwNWU2NjdmLi5mYzk3Nzk1YTE2NzZhZWJlOGJhNGExNjhlMGQ0OWYzZjk1
NDc3YWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTkzMSw2ICsxOTMxLDcgQEAgc2V0KFdl
YkNvcmVfU09VUkNFUwogICAgIGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAogICAg
IGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCiAgICAgbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcAorICAgIGxvYWRlci9SZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uLmNwcAog
ICAgIGxvYWRlci9TaW5rRG9jdW1lbnQuY3BwCiAgICAgbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNw
cAogICAgIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmNTI2NzI3NDc0NmE5MzI0
MGQ5ZjYzYjc3NWU2MmZmM2Q1ODNlMGYwLi4xY2FiMjY5OGNjNWM0ZWExYmFhZjJiNGI2Yjc3Zjdk
NTYzZWYyMjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC02MDA3LDYgKzYwMDcsOCBAQAogCQlDQjM4RkQ1QTFDRDIzMjU4MDA1
OTJBM0YgLyogSlNQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENCMzhGRDU4MUNEMjMxNDUwMDU5MkEzRiAv
KiBKU1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuY3BwICovOyB9OwogCQlDQjM4RkQ1QjFDRDIz
MjVCMDA1OTJBM0YgLyogSlNQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQjM4RkQ1OTFDRDIzMTQ1MDA1OTJB
M0YgLyogSlNQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmggKi87IH07CiAJCUNCOENGMDE4MUE5
MzU4RDQwMDBENTEwQiAvKiBNaWNyb3Rhc2tzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENCOENGMDE1MUE5MzRCNDMwMDBENTEwQiAvKiBNaWNyb3Rh
c2tzLmNwcCAqLzsgfTsKKwkJQ0JDMkQyMkYxQ0U1Qjg5RDAwRDE4ODBCIC8qIFJlc291cmNlVGlt
aW5nSW5mb3JtYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0JDMkQyMkQxQ0U1Qjc3NDAwRDE4ODBCIC8qIFJlc291cmNlVGltaW5nSW5mb3Jt
YXRpb24uY3BwICovOyB9OworCQlDQkMyRDIzMDFDRTVCOEExMDBEMTg4MEIgLyogUmVzb3VyY2VU
aW1pbmdJbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0JDMkQyMkUxQ0U1Qjc3RDAwRDE4ODBCIC8qIFJlc291cmNlVGltaW5nSW5mb3Jt
YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlDQ0MyQjUxNDE1RjYxMzA2MDA0OENERDYgLyogRGV2aWNlQ2xpZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQ0MyQjUxMDE1RjYxMzA2MDA0OENE
RDYgLyogRGV2aWNlQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQ0NDMkI1MTUxNUY2MTMwNjAwNDhDREQ2IC8qIERldmljZUNvbnRyb2xs
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0ND
MkI1MTExNUY2MTMwNjAwNDhDREQ2IC8qIERldmljZUNvbnRyb2xsZXIuY3BwICovOyB9OwogCQlD
Q0MyQjUxNjE1RjYxMzA2MDA0OENERDYgLyogRGV2aWNlQ29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0NDMkI1MTIxNUY2MTMwNjAwNDhD
REQ2IC8qIERldmljZUNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMTM5ODksNiArMTM5OTEsOCBAQAogCQlDQjM4RkQ1ODFDRDIz
MTQ1MDA1OTJBM0YgLyogSlNQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNCMzhGRDU5MUNEMjMxNDUwMDU5MkEz
RiAvKiBKU1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNCOENGMDE1MUE5MzRCNDMwMDBENTEwQiAvKiBNaWNyb3Rhc2tzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1pY3JvdGFza3MuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDQkMyRDIyRDFDRTVCNzc0MDBEMTg4MEIgLyog
UmVzb3VyY2VUaW1pbmdJbmZvcm1hdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0JDMkQyMkUxQ0U1Qjc3RDAwRDE4ODBCIC8qIFJlc291cmNlVGltaW5n
SW5mb3JtYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VU
aW1pbmdJbmZvcm1hdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQ0MyQjUx
MDE1RjYxMzA2MDA0OENERDYgLyogRGV2aWNlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERldmljZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDQ0MyQjUxMTE1RjYxMzA2MDA0OENERDYgLyogRGV2aWNlQ29udHJvbGxlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZXZpY2VDb250cm9sbGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0NDMkI1MTIxNUY2MTMwNjAwNDhDREQ2IC8qIERl
dmljZUNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGV2aWNl
Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjI4MjIsNiArMjI4
MjYsOCBAQAogCQkJCTdBOTI5Q0EyMUM1OTgzNzgwMDRERjIyNiAvKiBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLmggKi8sCiAJCQkJN0E3Q0M4MzYxQzg3NTA2ODAwMzY2MjQzIC8qIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAgKi8sCiAJCQkJN0E3Q0M4MzcxQzg3NTA2ODAwMzY2MjQzIC8q
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oICovLAorCQkJCUNCQzJEMjJEMUNFNUI3NzQw
MEQxODgwQiAvKiBSZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uLmNwcCAqLywKKwkJCQlDQkMyRDIy
RTFDRTVCNzdEMDBEMTg4MEIgLyogUmVzb3VyY2VUaW1pbmdJbmZvcm1hdGlvbi5oICovLAogCQkJ
CTUxMzI3RDVGMTFBMzNBMkIwMDRGOUQ2NSAvKiBTaW5rRG9jdW1lbnQuY3BwICovLAogCQkJCTUx
MzI3RDVFMTFBMzNBMkIwMDRGOUQ2NSAvKiBTaW5rRG9jdW1lbnQuaCAqLywKIAkJCQlEMDAwRUQy
NTExQzFCOUNEMDBDNDc3MjYgLyogU3ViZnJhbWVMb2FkZXIuY3BwICovLApAQCAtMjgyNDgsNiAr
MjgyNTQsNyBAQAogCQkJCTgzQzFENDMyMTc4RDVBQjUwMDE0MUU2OCAvKiBTVkdQYXRoU2VnTGlu
ZXRvUmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E3RDBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0MxRDQzMzE3
OEQ1QUI1MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsQWJzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlDQkMyRDIzMDFDRTVCOEExMDBEMTg4MEIgLyogUmVzb3VyY2VUaW1pbmdJbmZv
cm1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDMUQ0MzQxNzhENUFCNTAwMTQxRTY4IC8q
IFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdB
ODEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdGhTZWdMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NDc2QzlFNjExREY2QTBCMDA1NTVCMDIgLyogU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTMyMTA5LDYgKzMyMTE2LDcgQEAKIAkJCQkxQTE0MTRCNTEzQTBGMDUw
MDAxOTk5NkMgLyogV2ViS2l0Rm9udEZhbWlseU5hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUQ3NjEzQTUwMTQ3NEYxM0YwMERCODYwNiAvKiBXZWJLaXROYW1lZEZsb3cuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0M0OEE2RDAxOTFDOUQ2NTAwMDI2Njc0IC8qIFdlYktpdE5hbWVzcGFjZS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlDQkMyRDIyRjFDRTVCODlEMDBEMTg4MEIgLyogUmVzb3Vy
Y2VUaW1pbmdJbmZvcm1hdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNURFQkRBMzE2RkI5
MDg3MDA4MzZGRTAgLyogV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkzMUMwRkYyNDBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0VHJh
bnNpdGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQ0YzMzJFMEYyQjlBMjUwMDRC
Njc5NSAvKiBXZWJMYXllci5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA1ZjVlZmQ4NDE4YTM3
ZWEwMmRmYWI2MzUzYjAyNWE4YTYwNmZhYmU1Li5mZDM0OTBlNTA3ZjM4Njg5N2E4ZGZkNTVkZTBh
ZjYwNjBmNzZhMDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMzI1LDYgKzMyNSw5IEBAIHZvaWQgRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiAK
IHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpCiB7CisgICAgaWYgKFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkucmVzb3VyY2VUaW1pbmdFbmFibGVkKCkp
CisgICAgICAgIG1fcmVzb3VyY2VUaW1pbmdJbmZvLmFkZFJlc291cmNlVGltaW5nKG1fcmVzb3Vy
Y2UuZ2V0KCksICZtX2RvY3VtZW50KTsKKwogICAgIGlmIChtX2FjdHVhbFJlcXVlc3QpIHsKICAg
ICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nKG1fZG9jdW1l
bnQuZnJhbWUoKSwgbV9kb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigp
LCBpZGVudGlmaWVyLCBmaW5pc2hUaW1lKTsKIApAQCAtMzkwLDkgKzM5MywxMyBAQCB2b2lkIERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBTZWN1cgogICAgICAgICAgICAgbmV3UmVxdWVzdC5zZXRJbml0aWF0b3IobV9v
cHRpb25zLmluaXRpYXRvcik7CiAgICAgICAgIEFTU0VSVCghbV9yZXNvdXJjZSk7CiAgICAgICAg
IG1fcmVzb3VyY2UgPSBtX2RvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdFJh
d1Jlc291cmNlKG5ld1JlcXVlc3QpOwotICAgICAgICBpZiAobV9yZXNvdXJjZSkKKyAgICAgICAg
aWYgKG1fcmVzb3VyY2UpIHsKICAgICAgICAgICAgIG1fcmVzb3VyY2UtPmFkZENsaWVudCh0aGlz
KTsKIAorICAgICAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkucmVzb3VyY2VUaW1pbmdFbmFibGVkKCkpCisgICAgICAgICAgICAgICAgbV9yZXNvdXJj
ZVRpbWluZ0luZm8uc3RvcmVSZXNvdXJjZVRpbWluZ0luaXRpYXRvckluZm9ybWF0aW9uKG1fcmVz
b3VyY2UsIG5ld1JlcXVlc3QsIG1fZG9jdW1lbnQuZnJhbWUoKSk7CisgICAgICAgIH0KKwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCmluZGV4IDQ2ZGZjNTI4Y2RkOTllMWUyNmQ2N2I1Mjc0
ZTM0M2ZjYTVmYTFlYzYuLmI0MjFlODdmMjQzYjJmNzkxNDZhYjViMzI1MDYzOTUwYTA3NWEwNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LmgKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkNhY2hlZFJhd1Jlc291cmNlQ2xpZW50
LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJSZXNvdXJj
ZVRpbWluZ0luZm9ybWF0aW9uLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMDUsNiArMTA2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBtX2NsaWVudDsKICAgICAgICAgRG9j
dW1lbnQmIG1fZG9jdW1lbnQ7CiAgICAgICAgIFRocmVhZGFibGVMb2FkZXJPcHRpb25zIG1fb3B0
aW9uczsKKyAgICAgICAgUmVzb3VyY2VUaW1pbmdJbmZvcm1hdGlvbiBtX3Jlc291cmNlVGltaW5n
SW5mbzsKICAgICAgICAgYm9vbCBtX3NhbWVPcmlnaW5SZXF1ZXN0OwogICAgICAgICBib29sIG1f
c2ltcGxlUmVxdWVzdDsKICAgICAgICAgYm9vbCBtX2FzeW5jOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nSW5mb3JtYXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nSW5mb3JtYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4
MmMyOGRkNzNlNmQ3NzNiMDViZWExNDlhNzE4OWQxZDBiZTM4ODAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VUaW1pbmdJbmZvcm1hdGlvbi5jcHAKQEAg
LTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBa2FtYWkgVGVjaG5vbG9n
aWVzIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZiBFTkFC
TEUoV0VCX1RJTUlORykKKyNpbmNsdWRlICJSZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uLmgiCisK
KyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZS5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlUmVx
dWVzdC5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRG9tV2luZG93LmgiCisj
aW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKKyNp
bmNsdWRlICJQZXJmb3JtYW5jZS5oIgorI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFJlc291cmNlVGltaW5nSW5mb3JtYXRp
b246OmFkZFJlc291cmNlVGltaW5nKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgRG9jdW1lbnQq
IGRvY3VtZW50KQoreworICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLnJlc291cmNlVGltaW5nRW5hYmxlZCgpKTsKKyAgICBpZiAocmVzb3VyY2UgJiYg
cmVzb3VyY2UtPnJlc3BvbnNlKCkuaXNIVFRQKCkKKyAgICAgICAgJiYgKCghcmVzb3VyY2UtPmVy
cm9yT2NjdXJyZWQoKSAmJiAhcmVzb3VyY2UtPndhc0NhbmNlbGVkKCkpIHx8IHJlc291cmNlLT5y
ZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0KSkgeworICAgICAgICBIYXNoTWFwPENh
Y2hlZFJlc291cmNlKiwgSW5pdGlhdG9ySW5mbz46Oml0ZXJhdG9yIGluaXRpYXRvckl0ID0gbV9p
bml0aWF0b3JNYXAuZmluZChyZXNvdXJjZSk7CisgICAgICAgIGlmIChpbml0aWF0b3JJdCAhPSBt
X2luaXRpYXRvck1hcC5lbmQoKSkgeworICAgICAgICAgICAgQVNTRVJUKGRvY3VtZW50KTsKKyAg
ICAgICAgICAgIERvY3VtZW50KiBpbml0aWF0b3JEb2N1bWVudCA9IGRvY3VtZW50OworICAgICAg
ICAgICAgaWYgKHJlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6Ok1haW5SZXNvdXJj
ZSkKKyAgICAgICAgICAgICAgICBpbml0aWF0b3JEb2N1bWVudCA9IGRvY3VtZW50LT5wYXJlbnRE
b2N1bWVudCgpOworICAgICAgICAgICAgQVNTRVJUKGluaXRpYXRvckRvY3VtZW50KTsKKyAgICAg
ICAgICAgIEFTU0VSVChpbml0aWF0b3JEb2N1bWVudC0+ZG9tV2luZG93KCkpOworICAgICAgICAg
ICAgQVNTRVJUKGluaXRpYXRvckRvY3VtZW50LT5kb21XaW5kb3coKS0+cGVyZm9ybWFuY2UoKSk7
CisgICAgICAgICAgICBjb25zdCBJbml0aWF0b3JJbmZvJiBpbmZvID0gaW5pdGlhdG9ySXQtPnZh
bHVlOworICAgICAgICAgICAgaW5pdGlhdG9yRG9jdW1lbnQtPmRvbVdpbmRvdygpLT5wZXJmb3Jt
YW5jZSgpLT5hZGRSZXNvdXJjZVRpbWluZyhpbmZvLm5hbWUsIGluaXRpYXRvckRvY3VtZW50LCBy
ZXNvdXJjZS0+cmVzb3VyY2VSZXF1ZXN0KCksIHJlc291cmNlLT5yZXNwb25zZSgpLCBpbmZvLnN0
YXJ0VGltZSwgcmVzb3VyY2UtPmxvYWRGaW5pc2hUaW1lKCkpOworICAgICAgICAgICAgbV9pbml0
aWF0b3JNYXAucmVtb3ZlKGluaXRpYXRvckl0KTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9p
ZCBSZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uOjpzdG9yZVJlc291cmNlVGltaW5nSW5pdGlhdG9y
SW5mb3JtYXRpb24oY29uc3QgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+JiBy
ZXNvdXJjZSwgY29uc3QgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGcmFtZSogZnJh
bWUpCit7CisgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkucmVzb3VyY2VUaW1pbmdFbmFibGVkKCkpOworICAgIEFTU0VSVChyZXNvdXJjZS5nZXQoKSk7
CisgICAgaWYgKHJlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6Ok1haW5SZXNvdXJj
ZSkgeworICAgICAgICAvLyA8aWZyYW1lPnMgc2hvdWxkIHJlcG9ydCB0aGUgaW5pdGlhbCBuYXZp
Z2F0aW9uIHJlcXVlc3RlZCBieSB0aGUgcGFyZW50IGRvY3VtZW50LCBidXQgbm90IHN1YnNlcXVl
bnQgbmF2aWdhdGlvbnMuCisgICAgICAgIEFTU0VSVChmcmFtZSk7CisgICAgICAgIGlmIChmcmFt
ZS0+b3duZXJFbGVtZW50KCkpIHsKKyAgICAgICAgICAgIEluaXRpYXRvckluZm8gaW5mbyA9IHsg
ZnJhbWUtPm93bmVyRWxlbWVudCgpLT5sb2NhbE5hbWUoKSwgbW9ub3RvbmljYWxseUluY3JlYXNp
bmdUaW1lKCkgfTsKKyAgICAgICAgICAgIG1faW5pdGlhdG9yTWFwLmFkZChyZXNvdXJjZS5nZXQo
KSwgaW5mbyk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBJbml0aWF0b3JJbmZv
IGluZm8gPSB7IHJlcXVlc3QuaW5pdGlhdG9yTmFtZSgpLCBtb25vdG9uaWNhbGx5SW5jcmVhc2lu
Z1RpbWUoKSB9OworICAgICAgICBtX2luaXRpYXRvck1hcC5hZGQocmVzb3VyY2UuZ2V0KCksIGlu
Zm8pOworICAgIH0KK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9USU1JTkcpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VUaW1pbmdJbmZvcm1hdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nSW5mb3JtYXRpb24uaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43NDM1OGRjYTg1MjAzODAzYjdjODAyNTFmNGEyZTc3NDM0MDg2NmJjCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nSW5mb3JtYXRp
b24uaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFrYW1haSBU
ZWNobm9sb2dpZXMgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUmVzb3VyY2VUaW1pbmdJ
bmZvcm1hdGlvbl9oCisjZGVmaW5lIFJlc291cmNlVGltaW5nSW5mb3JtYXRpb25faAorCisjaWYg
RU5BQkxFKFdFQl9USU1JTkcpCisKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CitjbGFzcyBD
YWNoZWRSZXNvdXJjZVJlcXVlc3Q7CitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIEZyYW1lOworCitj
bGFzcyBSZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uIHsKK3B1YmxpYzoKKworICAgIHZvaWQgYWRk
UmVzb3VyY2VUaW1pbmcoQ2FjaGVkUmVzb3VyY2UqLCBEb2N1bWVudCopOworICAgIHZvaWQgc3Rv
cmVSZXNvdXJjZVRpbWluZ0luaXRpYXRvckluZm9ybWF0aW9uKGNvbnN0IENhY2hlZFJlc291cmNl
SGFuZGxlPENhY2hlZFJlc291cmNlPiYsIGNvbnN0IENhY2hlZFJlc291cmNlUmVxdWVzdCYsIEZy
YW1lKik7CisKK3ByaXZhdGU6CisgICAgc3RydWN0IEluaXRpYXRvckluZm8geworICAgICAgICBB
dG9taWNTdHJpbmcgbmFtZTsKKyAgICAgICAgZG91YmxlIHN0YXJ0VGltZTsKKyAgICB9OworICAg
IEhhc2hNYXA8Q2FjaGVkUmVzb3VyY2UqLCBJbml0aWF0b3JJbmZvPiBtX2luaXRpYXRvck1hcDsK
K307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShXRUJfVElNSU5HKQorI2VuZGlmIC8vICFkZWZp
bmVkKFJlc291cmNlVGltaW5nSW5mb3JtYXRpb25faCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGU5MzRiMGY0YjZl
Nzc5ZGMyYTFjZjFmZDA5YjFjZDhlMzhmOTA2MTcuLmMxNzY4MWZhMDk5OGE3NjNjZTU4MmNjYTg4
NDRiNzQwMDE2MDg4NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAtNjE4LDYgKzYxOCwxMCBAQCBDYWNoZWRSZXNv
dXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RS
ZXNvdXJjZShDYWNoZQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIGxvZ01l
bW9yeUNhY2hlUmVzb3VyY2VSZXF1ZXN0KGZyYW1lKCksIERpYWdub3N0aWNMb2dnaW5nS2V5czo6
aW5NZW1vcnlDYWNoZUtleSgpLCBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnVzZWRLZXkoKSk7CiAg
ICAgICAgIG1lbW9yeUNhY2hlLnJlc291cmNlQWNjZXNzZWQoKnJlc291cmNlKTsKKyAgICAgICAg
aWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkucmVzb3VyY2VUaW1p
bmdFbmFibGVkKCkpIHsKKyAgICAgICAgICAgIG1fcmVzb3VyY2VUaW1pbmdJbmZvLnN0b3JlUmVz
b3VyY2VUaW1pbmdJbml0aWF0b3JJbmZvcm1hdGlvbihyZXNvdXJjZSwgcmVxdWVzdCwgZnJhbWUo
KSk7CisgICAgICAgICAgICBtX3Jlc291cmNlVGltaW5nSW5mby5hZGRSZXNvdXJjZVRpbWluZyhy
ZXNvdXJjZS5nZXQoKSwgZG9jdW1lbnQoKSk7CisgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCkBAIC02NzAsNyArNjc0LDcgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVz
b3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXZhbGlkYXRlUmVzb3VyY2UoY28KICAgICBt
ZW1vcnlDYWNoZS5yZW1vdmUoKnJlc291cmNlKTsKICAgICBtZW1vcnlDYWNoZS5hZGQoKm5ld1Jl
c291cmNlKTsKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS5yZXNvdXJjZVRpbWluZ0VuYWJsZWQoKSkKLSAgICAgICAgc3RvcmVSZXNvdXJjZVRpbWluZ0lu
aXRpYXRvckluZm9ybWF0aW9uKHJlc291cmNlLCByZXF1ZXN0KTsKKyAgICAgICAgbV9yZXNvdXJj
ZVRpbWluZ0luZm8uc3RvcmVSZXNvdXJjZVRpbWluZ0luaXRpYXRvckluZm9ybWF0aW9uKHJlc291
cmNlLCByZXF1ZXN0LCBmcmFtZSgpKTsKICAgICByZXR1cm4gbmV3UmVzb3VyY2U7CiB9CiAKQEAg
LTY4NiwyNSArNjkwLDEwIEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6bG9hZFJlc291cmNlKENhY2hlZFJlCiAgICAgaWYgKHJlcXVl
c3QuYWxsb3dzQ2FjaGluZygpICYmICFtZW1vcnlDYWNoZS5hZGQoKnJlc291cmNlKSkKICAgICAg
ICAgcmVzb3VyY2UtPnNldE93bmluZ0NhY2hlZFJlc291cmNlTG9hZGVyKHRoaXMpOwogICAgIGlm
IChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnJlc291cmNlVGltaW5n
RW5hYmxlZCgpKQotICAgICAgICBzdG9yZVJlc291cmNlVGltaW5nSW5pdGlhdG9ySW5mb3JtYXRp
b24ocmVzb3VyY2UsIHJlcXVlc3QpOworICAgICAgICBtX3Jlc291cmNlVGltaW5nSW5mby5zdG9y
ZVJlc291cmNlVGltaW5nSW5pdGlhdG9ySW5mb3JtYXRpb24ocmVzb3VyY2UsIHJlcXVlc3QsIGZy
YW1lKCkpOwogICAgIHJldHVybiByZXNvdXJjZTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6c3RvcmVSZXNvdXJjZVRpbWluZ0luaXRpYXRvckluZm9ybWF0aW9uKGNvbnN0IENhY2hl
ZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiYgcmVzb3VyY2UsIGNvbnN0IENhY2hlZFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkKLXsKLSAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5yZXNvdXJjZVRpbWluZ0VuYWJsZWQoKSk7Ci0gICAgaWYg
KHJlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6Ok1haW5SZXNvdXJjZSkgewotICAg
ICAgICAvLyA8aWZyYW1lPnMgc2hvdWxkIHJlcG9ydCB0aGUgaW5pdGlhbCBuYXZpZ2F0aW9uIHJl
cXVlc3RlZCBieSB0aGUgcGFyZW50IGRvY3VtZW50LCBidXQgbm90IHN1YnNlcXVlbnQgbmF2aWdh
dGlvbnMuCi0gICAgICAgIGlmIChmcmFtZSgpLT5vd25lckVsZW1lbnQoKSAmJiBtX2RvY3VtZW50
TG9hZGVyLT5mcmFtZUxvYWRlcigpLT5zdGF0ZU1hY2hpbmUoKS5jb21taXR0aW5nRmlyc3RSZWFs
TG9hZCgpKSB7Ci0gICAgICAgICAgICBJbml0aWF0b3JJbmZvIGluZm8gPSB7IGZyYW1lKCktPm93
bmVyRWxlbWVudCgpLT5sb2NhbE5hbWUoKSwgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkg
fTsKLSAgICAgICAgICAgIG1faW5pdGlhdG9yTWFwLmFkZChyZXNvdXJjZS5nZXQoKSwgaW5mbyk7
Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBJbml0aWF0b3JJbmZvIGluZm8gPSB7
IHJlcXVlc3QuaW5pdGlhdG9yTmFtZSgpLCBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSB9
OwotICAgICAgICBtX2luaXRpYXRvck1hcC5hZGQocmVzb3VyY2UuZ2V0KCksIGluZm8pOwotICAg
IH0KLX0KLQogc3RhdGljIHZvaWQgbG9nUmV2YWxpZGF0aW9uKGNvbnN0IFN0cmluZyYgcmVhc29u
LCBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudCYgbG9nQ2xpZW50KQogewogICAgIGxvZ0NsaWVudC5s
b2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmNhY2hl
ZFJlc291cmNlUmV2YWxpZGF0aW9uS2V5KCksIERpYWdub3N0aWNMb2dnaW5nS2V5czo6cmVhc29u
S2V5KCksIHJlYXNvbiwgU2hvdWxkU2FtcGxlOjpZZXMpOwpAQCAtOTcwLDIxICs5NTksOCBAQCB2
b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpsb2FkRG9uZShDYWNoZWRSZXNvdXJjZSogcmVzb3Vy
Y2UsIGJvb2wgc2hvdWxkUGVyZm9ybQogICAgIFJlZlB0cjxEb2N1bWVudD4gcHJvdGVjdERvY3Vt
ZW50KG1fZG9jdW1lbnQpOwogCiAjaWYgRU5BQkxFKFdFQl9USU1JTkcpCi0gICAgaWYgKFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkucmVzb3VyY2VUaW1pbmdFbmFibGVk
KCkKLSAgICAgICAgJiYgcmVzb3VyY2UgJiYgcmVzb3VyY2UtPnJlc3BvbnNlKCkuaXNIVFRQKCkK
LSAgICAgICAgJiYgKCghcmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSAmJiAhcmVzb3VyY2UtPndh
c0NhbmNlbGVkKCkpIHx8IHJlc291cmNlLT5yZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPT0g
MzA0KSkgewotICAgICAgICBIYXNoTWFwPENhY2hlZFJlc291cmNlKiwgSW5pdGlhdG9ySW5mbz46
Oml0ZXJhdG9yIGluaXRpYXRvckl0ID0gbV9pbml0aWF0b3JNYXAuZmluZChyZXNvdXJjZSk7Ci0g
ICAgICAgIGlmIChpbml0aWF0b3JJdCAhPSBtX2luaXRpYXRvck1hcC5lbmQoKSkgewotICAgICAg
ICAgICAgQVNTRVJUKGRvY3VtZW50KCkpOwotICAgICAgICAgICAgRG9jdW1lbnQqIGluaXRpYXRv
ckRvY3VtZW50ID0gZG9jdW1lbnQoKTsKLSAgICAgICAgICAgIGlmIChyZXNvdXJjZS0+dHlwZSgp
ID09IENhY2hlZFJlc291cmNlOjpNYWluUmVzb3VyY2UpCi0gICAgICAgICAgICAgICAgaW5pdGlh
dG9yRG9jdW1lbnQgPSBkb2N1bWVudCgpLT5wYXJlbnREb2N1bWVudCgpOwotICAgICAgICAgICAg
QVNTRVJUKGluaXRpYXRvckRvY3VtZW50KTsKLSAgICAgICAgICAgIGNvbnN0IEluaXRpYXRvcklu
Zm8mIGluZm8gPSBpbml0aWF0b3JJdC0+dmFsdWU7Ci0gICAgICAgICAgICBpbml0aWF0b3JEb2N1
bWVudC0+ZG9tV2luZG93KCktPnBlcmZvcm1hbmNlKCktPmFkZFJlc291cmNlVGltaW5nKGluZm8u
bmFtZSwgaW5pdGlhdG9yRG9jdW1lbnQsIHJlc291cmNlLT5yZXNvdXJjZVJlcXVlc3QoKSwgcmVz
b3VyY2UtPnJlc3BvbnNlKCksIGluZm8uc3RhcnRUaW1lLCByZXNvdXJjZS0+bG9hZEZpbmlzaFRp
bWUoKSk7Ci0gICAgICAgICAgICBtX2luaXRpYXRvck1hcC5yZW1vdmUoaW5pdGlhdG9ySXQpOwot
ICAgICAgICB9Ci0gICAgfQorICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLnJlc291cmNlVGltaW5nRW5hYmxlZCgpKQorICAgICAgICBtX3Jlc291cmNlVGlt
aW5nSW5mby5hZGRSZXNvdXJjZVRpbWluZyhyZXNvdXJjZSwgZG9jdW1lbnQoKSk7CiAjZWxzZQog
ICAgIFVOVVNFRF9QQVJBTShyZXNvdXJjZSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKaW5kZXggNGRmODE5OTU5Y2Vh
YjExMDM3NGI1NWI0NjAzOTMwYTg3ZWI3YzY2YS4uMmI1NjFiNjU5YmJkZTljZDkzOTA0OTNkOWZl
MGI1ZmIwMmY4YzFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDYWNoZWRS
ZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlUmVxdWVzdC5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VUaW1pbmdJ
bmZvcm1hdGlvbi5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTE0NCw3ICsxNDUsNiBAQCBwcml2YXRlOgog
ICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXF1ZXN0UmVzb3VyY2Uo
Q2FjaGVkUmVzb3VyY2U6OlR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdCYpOwogICAgIENhY2hl
ZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXZhbGlkYXRlUmVzb3VyY2UoY29uc3Qg
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiwgQ2FjaGVkUmVzb3VyY2UqKTsKICAgICBDYWNoZWRSZXNv
dXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gbG9hZFJlc291cmNlKENhY2hlZFJlc291cmNlOjpU
eXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICB2b2lkIHN0b3JlUmVzb3VyY2VUaW1p
bmdJbml0aWF0b3JJbmZvcm1hdGlvbihjb25zdCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRS
ZXNvdXJjZT4mLCBjb25zdCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIHJlcXVl
c3RQcmVsb2FkKENhY2hlZFJlc291cmNlOjpUeXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBTdHJpbmcmIGNoYXJzZXQpOwogCiAgICAgZW51bSBSZXZhbGlkYXRpb25Qb2xpY3kgeyBV
c2UsIFJldmFsaWRhdGUsIFJlbG9hZCwgTG9hZCB9OwpAQCAtMTc3LDExICsxNzcsNyBAQCBwcml2
YXRlOgogCiAgICAgVGltZXIgbV9nYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzVGltZXI7
CiAKLSAgICBzdHJ1Y3QgSW5pdGlhdG9ySW5mbyB7Ci0gICAgICAgIEF0b21pY1N0cmluZyBuYW1l
OwotICAgICAgICBkb3VibGUgc3RhcnRUaW1lOwotICAgIH07Ci0gICAgSGFzaE1hcDxDYWNoZWRS
ZXNvdXJjZSosIEluaXRpYXRvckluZm8+IG1faW5pdGlhdG9yTWFwOworICAgIFJlc291cmNlVGlt
aW5nSW5mb3JtYXRpb24gbV9yZXNvdXJjZVRpbWluZ0luZm87CiAKICAgICAvLyAyOSBiaXRzIGxl
ZnQKICAgICBib29sIG1fYXV0b0xvYWRJbWFnZXMgOiAxOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDlmZTI5Y2QyNzlmNzIx
NTE2MmM1MDk5NjFjY2ZmNDk0NGY1YTFlZWQuLmYxYzFiZTBlNWMzYzlmYzdlMmJiZWY4ZWNhNzU0
MTU5ZjdkNGUxNWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNi0wNS0xMyAgWW9hdiBXZWlz
cyAgPHlvYXZAeW9hdi53cz4KKworICAgICAgICBSZXNvdXJjZVRpbWluZyBlbnRyaWVzIGZvciBj
YWNoZWQgcmVzb3VyY2VzIGFuZCBYSFIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1NzY2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoZXNlIHRlc3RzIG1ha2Ugc3VyZSB0aGF0IGNhY2hlYWJsZSByZXNv
dXJjZXMgYXMgd2VsbCBhcyBYSFIgYmFzZWQgcmVzb3VyY2VzCisgICAgICAgIGhhdmUgUmVzb3Vy
Y2VUaW1pbmcgZW50cmllcy4KKworICAgICAgICAqIGh0dHAvdGVzdHMvcGVyZm9ybWFuY2UvcGVy
Zm9ybWFuY2UtcmVzb3VyY2UtdGltaW5nLWNhY2hlZC1lbnRyaWVzLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS1yZXNvdXJj
ZS10aW1pbmctY2FjaGVkLWVudHJpZXMuaHRtbDogQWRkZWQuCisKIDIwMTYtMDUtMTMgIFNrYWNo
a292IE9sZWtzYW5kciAgPGdza2FjaGtvdkBnbWFpbC5jb20+CiAKICAgICAgICAgQXNzZXJ0aW9u
IGZhaWx1cmUgZm9yIHN1cGVyKCkgY2FsbCBpbiBhcnJvdyBmdW5jdGlvbiBkZWZhdWx0IHBhcmFt
ZXRlcnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGVyZm9ybWFuY2UvcGVy
Zm9ybWFuY2UtcmVzb3VyY2UtdGltaW5nLWNhY2hlZC1lbnRyaWVzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvcGVyZm9ybWFuY2UvcGVyZm9ybWFuY2UtcmVzb3VyY2UtdGlt
aW5nLWNhY2hlZC1lbnRyaWVzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZjg3MWMzYjgzOTQ3
NzJhNDgyMzUxZmQzOGMxNzUwMTEyOWNhNDgwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS1yZXNvdXJjZS10aW1pbmctY2Fj
aGVkLWVudHJpZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMiBAQAorUEFTUyBmb3VuZFJlc291
cmNlIGlzIDIKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wZXJmb3JtYW5j
ZS9wZXJmb3JtYW5jZS1yZXNvdXJjZS10aW1pbmctY2FjaGVkLWVudHJpZXMuaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvcGVyZm9ybWFuY2UvcGVyZm9ybWFuY2UtcmVzb3VyY2UtdGltaW5n
LWNhY2hlZC1lbnRyaWVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjU0ZDMyZDJhY2U0Y2Q4M2I1YTkyZTBm
Y2IwNGNlOGJkZWUyMDlmYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcGVyZm9ybWFuY2UvcGVyZm9ybWFuY2UtcmVzb3VyY2UtdGltaW5nLWNhY2hlZC1lbnRyaWVz
Lmh0bWwKQEAgLTAsMCArMSw0NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxzY3JpcHQ+
CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5zZXRSZXNvdXJj
ZVRpbWluZ1N1cHBvcnQodHJ1ZSk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpCisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOworICAgIH0KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8aW1nIHNyYz0iLi4vLi4vcmVzb3VyY2VzL3NxdWFy
ZTEwMC5wbmciPgorPHNjcmlwdD4KKyAgICB2YXIgZm91bmRSZXNvdXJjZSA9IDA7CisgICAgdmFy
IHJ1blRlc3QgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHJlc291cmNlcyA9IHBlcmZvcm1h
bmNlLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJyk7CisgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgcmVzb3VyY2VzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBpZiAocmVzb3VyY2Vz
W2ldLm5hbWUuaW5kZXhPZigic3F1YXJlIikgIT0gLTEpCisgICAgICAgICAgICAgICAgKytmb3Vu
ZFJlc291cmNlOworICAgICAgICB9OworICAgICAgICBzaG91bGRCZSgiZm91bmRSZXNvdXJjZSIs
ICIyIik7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgd2luZG93
LmludGVybmFscy5zZXRSZXNvdXJjZVRpbWluZ1N1cHBvcnQoZmFsc2UpOworICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
KyAgICB9OworICAgIHZhciB3aW5kb3dMb2FkZWQgPSBmYWxzZTsKKyAgICB2YXIgeGhyTG9hZGVk
ID0gZmFsc2U7CisgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgIHhoci5h
ZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICh3aW5kb3dM
b2FkZWQpCisgICAgICAgICAgICBydW5UZXN0KCk7CisgICAgICAgIHhockxvYWRlZCA9IHRydWU7
CisgICAgfSk7CisgICAgeGhyLm9wZW4oIkdFVCIsICIuLi8uLi9yZXNvdXJjZXMvc3F1YXJlMTAw
LnBuZyIpOworICAgIHhoci5zZW5kKCk7CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxv
YWQiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKHhockxvYWRlZCkKKyAgICAgICAgICAgIHJ1
blRlc3QoKTsKKyAgICAgICAgd2luZG93TG9hZGVkID0gdHJ1ZTsKKyAgICB9KTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278832</attachid>
            <date>2016-05-13 04:13:53 -0700</date>
            <delta_ts>2016-05-13 13:11:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157669-20160513131443.patch</filename>
            <type>text/plain</type>
            <size>26696</size>
            <attacher name="Yoav Weiss">yoav</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwODI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDBjNjBlOGZiZTUyOGYw
NTA2NmU1MmE4YTI5ZjQ5YzliMzQ0NTZlYS4uYTg1YzYxYWZmYmE2ZjAwYWZlMjNiZWMwM2I4MDgw
MjgzNGExOWU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE2LTA1LTEzICBZb2F2
IFdlaXNzICA8eW9hdkB5b2F2LndzPgorCisgICAgICAgIFJlc291cmNlVGltaW5nIGVudHJpZXMg
Zm9yIGNhY2hlZCByZXNvdXJjZXMgYW5kIFhIUgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3NjY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgIC0gTW92ZXMgdGhlIFJlc291cmNlVGltaW5nIHN0b3JhZ2Ug
YW5kIGFkZGl0aW9uIGxvZ2ljIGludG8gaXRzIG93biBjbGFzcywgc28gdGhhdCBpdAorICAgICAg
ICAgICBjYW4gYmUgYWNjZXNzZWQgYnkgYm90aCBDYWNoZWRSZXNvdXJjZUxvYWRlciBhbmQgRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLgorICAgICAgICAgLSBVc2luZyB0aGUgYWJvdmUsIGFkZHMg
UmVzb3VyY2VUaW1pbmcgY29sbGVjdGlvbiBpbnRvIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciwK
KyAgICAgICAgICAgaW4gb3JkZXIgdG8gc3VwcG9ydCBSZXNvdXJjZVRpbWluZyBlbnRyaWVzIGZv
ciBYSFIgYmFzZWQgcmVxdWVzdHMuCisgICAgICAgICAtIEFkZHMgUmVzb3VyY2VUaW1pbmcgZW50
cmllcyBmb3IgcmVzb3VyY2VzIHRoYXQgYXJlIHJldXNlZCBmcm9tIHRoZSBtZW1vcnkgY2FjaGUu
CisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS1yZXNv
dXJjZS10aW1pbmctY2FjaGVkLWVudHJpZXMuaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6IEFkZCBSZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uLgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIFJlc291cmNlVGltaW5nSW5mb3JtYXRpb24uCisg
ICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOiBBZGQg
YSBjYWxsIHRvIGFkZFJlc291cmNlVGltaW5nLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdCk6IFN0b3JlIHRoZSBpbml0aWF0b3IgaW5mb3Jt
YXRpb24uCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uOjphZGRSZXNvdXJjZVRpbWlu
Zyk6IE1vdmVkIGFkZFJlc291cmNlVGltaW5nIGxvZ2ljIGZyb20gQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uOjpzdG9yZVJl
c291cmNlVGltaW5nSW5pdGlhdG9ySW5mb3JtYXRpb24pOiBNb3ZlZCBhZGRSZXNvdXJjZVRpbWlu
ZyBsb2dpYyBmcm9tCisgICAgICAgIENhY2hlZFJlc291cmNlTG9hZGVyLiBSZW1vdmVkIHJlbGlh
bmNlIG9uIHRoZSBjb21taXR0aW5nRmlyc3RSZWFsTG9hZCBib29sIHdoZW4gc3RvcmluZyBpbml0
aWF0b3IgaW5mbywgYXMgSSBkb24ndAorICAgICAgICBzZWUgd2h5IGl0IGlzIHJlcXVpcmVkLCBh
bmQgaXQgbWFkZSBubyBzZW5zZSBpbiB0aGUgY29udGV4dCBvZiBEb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlVGltaW5nSW5mb3JtYXRpb24uaDogQWRk
ZWQuCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UpOiBB
ZGQgYSBSZXNvdXJjZVRpbWluZyBlbnRyeSB3aGVuIGEgcmVzb3VyY2UgaXMgcmV1c2VkIGZyb20g
TWVtb3J5Q2FjaGUuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmV2
YWxpZGF0ZVJlc291cmNlKTogVXNlIFJlc291cmNlVGltaW5nSW5mb3JtYXRpb246OnN0b3JlUmVz
b3VyY2VUaW1pbmdJbml0aWF0b3JJbmZvcm1hdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFJlc291cmNlTG9hZGVyOjpsb2FkUmVzb3VyY2UpOiBVc2UgUmVzb3VyY2VUaW1pbmdJbmZvcm1h
dGlvbjo6c3RvcmVSZXNvdXJjZVRpbWluZ0luaXRpYXRvckluZm9ybWF0aW9uLgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmxvYWREb25lKTogVXNlIFJlc291cmNlVGlt
aW5nSW5mb3JtYXRpb246OmFkZFJlc291cmNlVGltaW5nLgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OnN0b3JlUmVzb3VyY2VUaW1pbmdJbml0aWF0b3JJbmZvcm1hdGlv
bik6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
Lmg6CisKIDIwMTYtMDUtMTIgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5j
b20+CiAKICAgICAgICAgW2Nzcy1ncmlkXSBTaG93IGF1dG8tcmVwZWF0IGxpbmUgbmFtZXMgaW4g
Q29tcHV0ZWRTdHlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA3NTUwYjAwZDJhZjc1Zjg5NDVi
NmRhZjQyMGIwYmJmODcwNWU2NjdmLi5mYzk3Nzk1YTE2NzZhZWJlOGJhNGExNjhlMGQ0OWYzZjk1
NDc3YWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTkzMSw2ICsxOTMxLDcgQEAgc2V0KFdl
YkNvcmVfU09VUkNFUwogICAgIGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAogICAg
IGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCiAgICAgbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcAorICAgIGxvYWRlci9SZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uLmNwcAog
ICAgIGxvYWRlci9TaW5rRG9jdW1lbnQuY3BwCiAgICAgbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNw
cAogICAgIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmNTI2NzI3NDc0NmE5MzI0
MGQ5ZjYzYjc3NWU2MmZmM2Q1ODNlMGYwLi4xY2FiMjY5OGNjNWM0ZWExYmFhZjJiNGI2Yjc3Zjdk
NTYzZWYyMjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC02MDA3LDYgKzYwMDcsOCBAQAogCQlDQjM4RkQ1QTFDRDIzMjU4MDA1
OTJBM0YgLyogSlNQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENCMzhGRDU4MUNEMjMxNDUwMDU5MkEzRiAv
KiBKU1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuY3BwICovOyB9OwogCQlDQjM4RkQ1QjFDRDIz
MjVCMDA1OTJBM0YgLyogSlNQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQjM4RkQ1OTFDRDIzMTQ1MDA1OTJB
M0YgLyogSlNQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmggKi87IH07CiAJCUNCOENGMDE4MUE5
MzU4RDQwMDBENTEwQiAvKiBNaWNyb3Rhc2tzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENCOENGMDE1MUE5MzRCNDMwMDBENTEwQiAvKiBNaWNyb3Rh
c2tzLmNwcCAqLzsgfTsKKwkJQ0JDMkQyMkYxQ0U1Qjg5RDAwRDE4ODBCIC8qIFJlc291cmNlVGlt
aW5nSW5mb3JtYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0JDMkQyMkQxQ0U1Qjc3NDAwRDE4ODBCIC8qIFJlc291cmNlVGltaW5nSW5mb3Jt
YXRpb24uY3BwICovOyB9OworCQlDQkMyRDIzMDFDRTVCOEExMDBEMTg4MEIgLyogUmVzb3VyY2VU
aW1pbmdJbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0JDMkQyMkUxQ0U1Qjc3RDAwRDE4ODBCIC8qIFJlc291cmNlVGltaW5nSW5mb3Jt
YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlDQ0MyQjUxNDE1RjYxMzA2MDA0OENERDYgLyogRGV2aWNlQ2xpZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQ0MyQjUxMDE1RjYxMzA2MDA0OENE
RDYgLyogRGV2aWNlQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQ0NDMkI1MTUxNUY2MTMwNjAwNDhDREQ2IC8qIERldmljZUNvbnRyb2xs
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0ND
MkI1MTExNUY2MTMwNjAwNDhDREQ2IC8qIERldmljZUNvbnRyb2xsZXIuY3BwICovOyB9OwogCQlD
Q0MyQjUxNjE1RjYxMzA2MDA0OENERDYgLyogRGV2aWNlQ29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0NDMkI1MTIxNUY2MTMwNjAwNDhD
REQ2IC8qIERldmljZUNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMTM5ODksNiArMTM5OTEsOCBAQAogCQlDQjM4RkQ1ODFDRDIz
MTQ1MDA1OTJBM0YgLyogSlNQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNCMzhGRDU5MUNEMjMxNDUwMDU5MkEz
RiAvKiBKU1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNCOENGMDE1MUE5MzRCNDMwMDBENTEwQiAvKiBNaWNyb3Rhc2tzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1pY3JvdGFza3MuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDQkMyRDIyRDFDRTVCNzc0MDBEMTg4MEIgLyog
UmVzb3VyY2VUaW1pbmdJbmZvcm1hdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0JDMkQyMkUxQ0U1Qjc3RDAwRDE4ODBCIC8qIFJlc291cmNlVGltaW5n
SW5mb3JtYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VU
aW1pbmdJbmZvcm1hdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQ0MyQjUx
MDE1RjYxMzA2MDA0OENERDYgLyogRGV2aWNlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERldmljZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDQ0MyQjUxMTE1RjYxMzA2MDA0OENERDYgLyogRGV2aWNlQ29udHJvbGxlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZXZpY2VDb250cm9sbGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0NDMkI1MTIxNUY2MTMwNjAwNDhDREQ2IC8qIERl
dmljZUNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGV2aWNl
Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjI4MjIsNiArMjI4
MjYsOCBAQAogCQkJCTdBOTI5Q0EyMUM1OTgzNzgwMDRERjIyNiAvKiBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLmggKi8sCiAJCQkJN0E3Q0M4MzYxQzg3NTA2ODAwMzY2MjQzIC8qIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAgKi8sCiAJCQkJN0E3Q0M4MzcxQzg3NTA2ODAwMzY2MjQzIC8q
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oICovLAorCQkJCUNCQzJEMjJEMUNFNUI3NzQw
MEQxODgwQiAvKiBSZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uLmNwcCAqLywKKwkJCQlDQkMyRDIy
RTFDRTVCNzdEMDBEMTg4MEIgLyogUmVzb3VyY2VUaW1pbmdJbmZvcm1hdGlvbi5oICovLAogCQkJ
CTUxMzI3RDVGMTFBMzNBMkIwMDRGOUQ2NSAvKiBTaW5rRG9jdW1lbnQuY3BwICovLAogCQkJCTUx
MzI3RDVFMTFBMzNBMkIwMDRGOUQ2NSAvKiBTaW5rRG9jdW1lbnQuaCAqLywKIAkJCQlEMDAwRUQy
NTExQzFCOUNEMDBDNDc3MjYgLyogU3ViZnJhbWVMb2FkZXIuY3BwICovLApAQCAtMjgyNDgsNiAr
MjgyNTQsNyBAQAogCQkJCTgzQzFENDMyMTc4RDVBQjUwMDE0MUU2OCAvKiBTVkdQYXRoU2VnTGlu
ZXRvUmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E3RDBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0MxRDQzMzE3
OEQ1QUI1MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsQWJzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlDQkMyRDIzMDFDRTVCOEExMDBEMTg4MEIgLyogUmVzb3VyY2VUaW1pbmdJbmZv
cm1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDMUQ0MzQxNzhENUFCNTAwMTQxRTY4IC8q
IFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdB
ODEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdGhTZWdMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NDc2QzlFNjExREY2QTBCMDA1NTVCMDIgLyogU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTMyMTA5LDYgKzMyMTE2LDcgQEAKIAkJCQkxQTE0MTRCNTEzQTBGMDUw
MDAxOTk5NkMgLyogV2ViS2l0Rm9udEZhbWlseU5hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUQ3NjEzQTUwMTQ3NEYxM0YwMERCODYwNiAvKiBXZWJLaXROYW1lZEZsb3cuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0M0OEE2RDAxOTFDOUQ2NTAwMDI2Njc0IC8qIFdlYktpdE5hbWVzcGFjZS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlDQkMyRDIyRjFDRTVCODlEMDBEMTg4MEIgLyogUmVzb3Vy
Y2VUaW1pbmdJbmZvcm1hdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNURFQkRBMzE2RkI5
MDg3MDA4MzZGRTAgLyogV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkzMUMwRkYyNDBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0VHJh
bnNpdGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQ0YzMzJFMEYyQjlBMjUwMDRC
Njc5NSAvKiBXZWJMYXllci5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA1ZjVlZmQ4NDE4YTM3
ZWEwMmRmYWI2MzUzYjAyNWE4YTYwNmZhYmU1Li5mZDM0OTBlNTA3ZjM4Njg5N2E4ZGZkNTVkZTBh
ZjYwNjBmNzZhMDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMzI1LDYgKzMyNSw5IEBAIHZvaWQgRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiAK
IHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpCiB7CisgICAgaWYgKFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkucmVzb3VyY2VUaW1pbmdFbmFibGVkKCkp
CisgICAgICAgIG1fcmVzb3VyY2VUaW1pbmdJbmZvLmFkZFJlc291cmNlVGltaW5nKG1fcmVzb3Vy
Y2UuZ2V0KCksICZtX2RvY3VtZW50KTsKKwogICAgIGlmIChtX2FjdHVhbFJlcXVlc3QpIHsKICAg
ICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nKG1fZG9jdW1l
bnQuZnJhbWUoKSwgbV9kb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigp
LCBpZGVudGlmaWVyLCBmaW5pc2hUaW1lKTsKIApAQCAtMzkwLDkgKzM5MywxMyBAQCB2b2lkIERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBTZWN1cgogICAgICAgICAgICAgbmV3UmVxdWVzdC5zZXRJbml0aWF0b3IobV9v
cHRpb25zLmluaXRpYXRvcik7CiAgICAgICAgIEFTU0VSVCghbV9yZXNvdXJjZSk7CiAgICAgICAg
IG1fcmVzb3VyY2UgPSBtX2RvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdFJh
d1Jlc291cmNlKG5ld1JlcXVlc3QpOwotICAgICAgICBpZiAobV9yZXNvdXJjZSkKKyAgICAgICAg
aWYgKG1fcmVzb3VyY2UpIHsKICAgICAgICAgICAgIG1fcmVzb3VyY2UtPmFkZENsaWVudCh0aGlz
KTsKIAorICAgICAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkucmVzb3VyY2VUaW1pbmdFbmFibGVkKCkpCisgICAgICAgICAgICAgICAgbV9yZXNvdXJj
ZVRpbWluZ0luZm8uc3RvcmVSZXNvdXJjZVRpbWluZ0luaXRpYXRvckluZm9ybWF0aW9uKG1fcmVz
b3VyY2UsIG5ld1JlcXVlc3QsIG1fZG9jdW1lbnQuZnJhbWUoKSk7CisgICAgICAgIH0KKwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCmluZGV4IDQ2ZGZjNTI4Y2RkOTllMWUyNmQ2N2I1Mjc0
ZTM0M2ZjYTVmYTFlYzYuLmI0MjFlODdmMjQzYjJmNzkxNDZhYjViMzI1MDYzOTUwYTA3NWEwNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LmgKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkNhY2hlZFJhd1Jlc291cmNlQ2xpZW50
LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJSZXNvdXJj
ZVRpbWluZ0luZm9ybWF0aW9uLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMDUsNiArMTA2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBtX2NsaWVudDsKICAgICAgICAgRG9j
dW1lbnQmIG1fZG9jdW1lbnQ7CiAgICAgICAgIFRocmVhZGFibGVMb2FkZXJPcHRpb25zIG1fb3B0
aW9uczsKKyAgICAgICAgUmVzb3VyY2VUaW1pbmdJbmZvcm1hdGlvbiBtX3Jlc291cmNlVGltaW5n
SW5mbzsKICAgICAgICAgYm9vbCBtX3NhbWVPcmlnaW5SZXF1ZXN0OwogICAgICAgICBib29sIG1f
c2ltcGxlUmVxdWVzdDsKICAgICAgICAgYm9vbCBtX2FzeW5jOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nSW5mb3JtYXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nSW5mb3JtYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2
ODE5ZDk5YWZhNTJjNDBkY2U0ZjUwMThhMTFhZmFiYWQzNGZiYTMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VUaW1pbmdJbmZvcm1hdGlvbi5jcHAKQEAg
LTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBa2FtYWkgVGVjaG5vbG9n
aWVzIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZiBFTkFC
TEUoV0VCX1RJTUlORykKKyNpbmNsdWRlICJSZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uLmgiCisK
KyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZS5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlUmVx
dWVzdC5oIgorI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisj
aW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKKyNp
bmNsdWRlICJQZXJmb3JtYW5jZS5oIgorI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFJlc291cmNlVGltaW5nSW5mb3JtYXRp
b246OmFkZFJlc291cmNlVGltaW5nKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgRG9jdW1lbnQq
IGRvY3VtZW50KQoreworICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLnJlc291cmNlVGltaW5nRW5hYmxlZCgpKTsKKyAgICBpZiAocmVzb3VyY2UgJiYg
cmVzb3VyY2UtPnJlc3BvbnNlKCkuaXNIVFRQKCkKKyAgICAgICAgJiYgKCghcmVzb3VyY2UtPmVy
cm9yT2NjdXJyZWQoKSAmJiAhcmVzb3VyY2UtPndhc0NhbmNlbGVkKCkpIHx8IHJlc291cmNlLT5y
ZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0KSkgeworICAgICAgICBIYXNoTWFwPENh
Y2hlZFJlc291cmNlKiwgSW5pdGlhdG9ySW5mbz46Oml0ZXJhdG9yIGluaXRpYXRvckl0ID0gbV9p
bml0aWF0b3JNYXAuZmluZChyZXNvdXJjZSk7CisgICAgICAgIGlmIChpbml0aWF0b3JJdCAhPSBt
X2luaXRpYXRvck1hcC5lbmQoKSkgeworICAgICAgICAgICAgQVNTRVJUKGRvY3VtZW50KTsKKyAg
ICAgICAgICAgIERvY3VtZW50KiBpbml0aWF0b3JEb2N1bWVudCA9IGRvY3VtZW50OworICAgICAg
ICAgICAgaWYgKHJlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6Ok1haW5SZXNvdXJj
ZSkKKyAgICAgICAgICAgICAgICBpbml0aWF0b3JEb2N1bWVudCA9IGRvY3VtZW50LT5wYXJlbnRE
b2N1bWVudCgpOworICAgICAgICAgICAgQVNTRVJUKGluaXRpYXRvckRvY3VtZW50KTsKKyAgICAg
ICAgICAgIEFTU0VSVChpbml0aWF0b3JEb2N1bWVudC0+ZG9tV2luZG93KCkpOworICAgICAgICAg
ICAgQVNTRVJUKGluaXRpYXRvckRvY3VtZW50LT5kb21XaW5kb3coKS0+cGVyZm9ybWFuY2UoKSk7
CisgICAgICAgICAgICBjb25zdCBJbml0aWF0b3JJbmZvJiBpbmZvID0gaW5pdGlhdG9ySXQtPnZh
bHVlOworICAgICAgICAgICAgaW5pdGlhdG9yRG9jdW1lbnQtPmRvbVdpbmRvdygpLT5wZXJmb3Jt
YW5jZSgpLT5hZGRSZXNvdXJjZVRpbWluZyhpbmZvLm5hbWUsIGluaXRpYXRvckRvY3VtZW50LCBy
ZXNvdXJjZS0+cmVzb3VyY2VSZXF1ZXN0KCksIHJlc291cmNlLT5yZXNwb25zZSgpLCBpbmZvLnN0
YXJ0VGltZSwgcmVzb3VyY2UtPmxvYWRGaW5pc2hUaW1lKCkpOworICAgICAgICAgICAgbV9pbml0
aWF0b3JNYXAucmVtb3ZlKGluaXRpYXRvckl0KTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9p
ZCBSZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uOjpzdG9yZVJlc291cmNlVGltaW5nSW5pdGlhdG9y
SW5mb3JtYXRpb24oY29uc3QgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+JiBy
ZXNvdXJjZSwgY29uc3QgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGcmFtZSogZnJh
bWUpCit7CisgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkucmVzb3VyY2VUaW1pbmdFbmFibGVkKCkpOworICAgIEFTU0VSVChyZXNvdXJjZS5nZXQoKSk7
CisgICAgaWYgKHJlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6Ok1haW5SZXNvdXJj
ZSkgeworICAgICAgICAvLyA8aWZyYW1lPnMgc2hvdWxkIHJlcG9ydCB0aGUgaW5pdGlhbCBuYXZp
Z2F0aW9uIHJlcXVlc3RlZCBieSB0aGUgcGFyZW50IGRvY3VtZW50LCBidXQgbm90IHN1YnNlcXVl
bnQgbmF2aWdhdGlvbnMuCisgICAgICAgIEFTU0VSVChmcmFtZSk7CisgICAgICAgIGlmIChmcmFt
ZS0+b3duZXJFbGVtZW50KCkpIHsKKyAgICAgICAgICAgIEluaXRpYXRvckluZm8gaW5mbyA9IHsg
ZnJhbWUtPm93bmVyRWxlbWVudCgpLT5sb2NhbE5hbWUoKSwgbW9ub3RvbmljYWxseUluY3JlYXNp
bmdUaW1lKCkgfTsKKyAgICAgICAgICAgIG1faW5pdGlhdG9yTWFwLmFkZChyZXNvdXJjZS5nZXQo
KSwgaW5mbyk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBJbml0aWF0b3JJbmZv
IGluZm8gPSB7IHJlcXVlc3QuaW5pdGlhdG9yTmFtZSgpLCBtb25vdG9uaWNhbGx5SW5jcmVhc2lu
Z1RpbWUoKSB9OworICAgICAgICBtX2luaXRpYXRvck1hcC5hZGQocmVzb3VyY2UuZ2V0KCksIGlu
Zm8pOworICAgIH0KK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9USU1JTkcpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VUaW1pbmdJbmZvcm1hdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nSW5mb3JtYXRpb24uaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43NDM1OGRjYTg1MjAzODAzYjdjODAyNTFmNGEyZTc3NDM0MDg2NmJjCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nSW5mb3JtYXRp
b24uaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFrYW1haSBU
ZWNobm9sb2dpZXMgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUmVzb3VyY2VUaW1pbmdJ
bmZvcm1hdGlvbl9oCisjZGVmaW5lIFJlc291cmNlVGltaW5nSW5mb3JtYXRpb25faAorCisjaWYg
RU5BQkxFKFdFQl9USU1JTkcpCisKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CitjbGFzcyBD
YWNoZWRSZXNvdXJjZVJlcXVlc3Q7CitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIEZyYW1lOworCitj
bGFzcyBSZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uIHsKK3B1YmxpYzoKKworICAgIHZvaWQgYWRk
UmVzb3VyY2VUaW1pbmcoQ2FjaGVkUmVzb3VyY2UqLCBEb2N1bWVudCopOworICAgIHZvaWQgc3Rv
cmVSZXNvdXJjZVRpbWluZ0luaXRpYXRvckluZm9ybWF0aW9uKGNvbnN0IENhY2hlZFJlc291cmNl
SGFuZGxlPENhY2hlZFJlc291cmNlPiYsIGNvbnN0IENhY2hlZFJlc291cmNlUmVxdWVzdCYsIEZy
YW1lKik7CisKK3ByaXZhdGU6CisgICAgc3RydWN0IEluaXRpYXRvckluZm8geworICAgICAgICBB
dG9taWNTdHJpbmcgbmFtZTsKKyAgICAgICAgZG91YmxlIHN0YXJ0VGltZTsKKyAgICB9OworICAg
IEhhc2hNYXA8Q2FjaGVkUmVzb3VyY2UqLCBJbml0aWF0b3JJbmZvPiBtX2luaXRpYXRvck1hcDsK
K307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShXRUJfVElNSU5HKQorI2VuZGlmIC8vICFkZWZp
bmVkKFJlc291cmNlVGltaW5nSW5mb3JtYXRpb25faCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGU5MzRiMGY0YjZl
Nzc5ZGMyYTFjZjFmZDA5YjFjZDhlMzhmOTA2MTcuLmMxNzY4MWZhMDk5OGE3NjNjZTU4MmNjYTg4
NDRiNzQwMDE2MDg4NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAtNjE4LDYgKzYxOCwxMCBAQCBDYWNoZWRSZXNv
dXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RS
ZXNvdXJjZShDYWNoZQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIGxvZ01l
bW9yeUNhY2hlUmVzb3VyY2VSZXF1ZXN0KGZyYW1lKCksIERpYWdub3N0aWNMb2dnaW5nS2V5czo6
aW5NZW1vcnlDYWNoZUtleSgpLCBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnVzZWRLZXkoKSk7CiAg
ICAgICAgIG1lbW9yeUNhY2hlLnJlc291cmNlQWNjZXNzZWQoKnJlc291cmNlKTsKKyAgICAgICAg
aWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkucmVzb3VyY2VUaW1p
bmdFbmFibGVkKCkpIHsKKyAgICAgICAgICAgIG1fcmVzb3VyY2VUaW1pbmdJbmZvLnN0b3JlUmVz
b3VyY2VUaW1pbmdJbml0aWF0b3JJbmZvcm1hdGlvbihyZXNvdXJjZSwgcmVxdWVzdCwgZnJhbWUo
KSk7CisgICAgICAgICAgICBtX3Jlc291cmNlVGltaW5nSW5mby5hZGRSZXNvdXJjZVRpbWluZyhy
ZXNvdXJjZS5nZXQoKSwgZG9jdW1lbnQoKSk7CisgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCkBAIC02NzAsNyArNjc0LDcgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVz
b3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXZhbGlkYXRlUmVzb3VyY2UoY28KICAgICBt
ZW1vcnlDYWNoZS5yZW1vdmUoKnJlc291cmNlKTsKICAgICBtZW1vcnlDYWNoZS5hZGQoKm5ld1Jl
c291cmNlKTsKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS5yZXNvdXJjZVRpbWluZ0VuYWJsZWQoKSkKLSAgICAgICAgc3RvcmVSZXNvdXJjZVRpbWluZ0lu
aXRpYXRvckluZm9ybWF0aW9uKHJlc291cmNlLCByZXF1ZXN0KTsKKyAgICAgICAgbV9yZXNvdXJj
ZVRpbWluZ0luZm8uc3RvcmVSZXNvdXJjZVRpbWluZ0luaXRpYXRvckluZm9ybWF0aW9uKHJlc291
cmNlLCByZXF1ZXN0LCBmcmFtZSgpKTsKICAgICByZXR1cm4gbmV3UmVzb3VyY2U7CiB9CiAKQEAg
LTY4NiwyNSArNjkwLDEwIEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6bG9hZFJlc291cmNlKENhY2hlZFJlCiAgICAgaWYgKHJlcXVl
c3QuYWxsb3dzQ2FjaGluZygpICYmICFtZW1vcnlDYWNoZS5hZGQoKnJlc291cmNlKSkKICAgICAg
ICAgcmVzb3VyY2UtPnNldE93bmluZ0NhY2hlZFJlc291cmNlTG9hZGVyKHRoaXMpOwogICAgIGlm
IChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnJlc291cmNlVGltaW5n
RW5hYmxlZCgpKQotICAgICAgICBzdG9yZVJlc291cmNlVGltaW5nSW5pdGlhdG9ySW5mb3JtYXRp
b24ocmVzb3VyY2UsIHJlcXVlc3QpOworICAgICAgICBtX3Jlc291cmNlVGltaW5nSW5mby5zdG9y
ZVJlc291cmNlVGltaW5nSW5pdGlhdG9ySW5mb3JtYXRpb24ocmVzb3VyY2UsIHJlcXVlc3QsIGZy
YW1lKCkpOwogICAgIHJldHVybiByZXNvdXJjZTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6c3RvcmVSZXNvdXJjZVRpbWluZ0luaXRpYXRvckluZm9ybWF0aW9uKGNvbnN0IENhY2hl
ZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiYgcmVzb3VyY2UsIGNvbnN0IENhY2hlZFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkKLXsKLSAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5yZXNvdXJjZVRpbWluZ0VuYWJsZWQoKSk7Ci0gICAgaWYg
KHJlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6Ok1haW5SZXNvdXJjZSkgewotICAg
ICAgICAvLyA8aWZyYW1lPnMgc2hvdWxkIHJlcG9ydCB0aGUgaW5pdGlhbCBuYXZpZ2F0aW9uIHJl
cXVlc3RlZCBieSB0aGUgcGFyZW50IGRvY3VtZW50LCBidXQgbm90IHN1YnNlcXVlbnQgbmF2aWdh
dGlvbnMuCi0gICAgICAgIGlmIChmcmFtZSgpLT5vd25lckVsZW1lbnQoKSAmJiBtX2RvY3VtZW50
TG9hZGVyLT5mcmFtZUxvYWRlcigpLT5zdGF0ZU1hY2hpbmUoKS5jb21taXR0aW5nRmlyc3RSZWFs
TG9hZCgpKSB7Ci0gICAgICAgICAgICBJbml0aWF0b3JJbmZvIGluZm8gPSB7IGZyYW1lKCktPm93
bmVyRWxlbWVudCgpLT5sb2NhbE5hbWUoKSwgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkg
fTsKLSAgICAgICAgICAgIG1faW5pdGlhdG9yTWFwLmFkZChyZXNvdXJjZS5nZXQoKSwgaW5mbyk7
Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBJbml0aWF0b3JJbmZvIGluZm8gPSB7
IHJlcXVlc3QuaW5pdGlhdG9yTmFtZSgpLCBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSB9
OwotICAgICAgICBtX2luaXRpYXRvck1hcC5hZGQocmVzb3VyY2UuZ2V0KCksIGluZm8pOwotICAg
IH0KLX0KLQogc3RhdGljIHZvaWQgbG9nUmV2YWxpZGF0aW9uKGNvbnN0IFN0cmluZyYgcmVhc29u
LCBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudCYgbG9nQ2xpZW50KQogewogICAgIGxvZ0NsaWVudC5s
b2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmNhY2hl
ZFJlc291cmNlUmV2YWxpZGF0aW9uS2V5KCksIERpYWdub3N0aWNMb2dnaW5nS2V5czo6cmVhc29u
S2V5KCksIHJlYXNvbiwgU2hvdWxkU2FtcGxlOjpZZXMpOwpAQCAtOTcwLDIxICs5NTksOCBAQCB2
b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpsb2FkRG9uZShDYWNoZWRSZXNvdXJjZSogcmVzb3Vy
Y2UsIGJvb2wgc2hvdWxkUGVyZm9ybQogICAgIFJlZlB0cjxEb2N1bWVudD4gcHJvdGVjdERvY3Vt
ZW50KG1fZG9jdW1lbnQpOwogCiAjaWYgRU5BQkxFKFdFQl9USU1JTkcpCi0gICAgaWYgKFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkucmVzb3VyY2VUaW1pbmdFbmFibGVk
KCkKLSAgICAgICAgJiYgcmVzb3VyY2UgJiYgcmVzb3VyY2UtPnJlc3BvbnNlKCkuaXNIVFRQKCkK
LSAgICAgICAgJiYgKCghcmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSAmJiAhcmVzb3VyY2UtPndh
c0NhbmNlbGVkKCkpIHx8IHJlc291cmNlLT5yZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPT0g
MzA0KSkgewotICAgICAgICBIYXNoTWFwPENhY2hlZFJlc291cmNlKiwgSW5pdGlhdG9ySW5mbz46
Oml0ZXJhdG9yIGluaXRpYXRvckl0ID0gbV9pbml0aWF0b3JNYXAuZmluZChyZXNvdXJjZSk7Ci0g
ICAgICAgIGlmIChpbml0aWF0b3JJdCAhPSBtX2luaXRpYXRvck1hcC5lbmQoKSkgewotICAgICAg
ICAgICAgQVNTRVJUKGRvY3VtZW50KCkpOwotICAgICAgICAgICAgRG9jdW1lbnQqIGluaXRpYXRv
ckRvY3VtZW50ID0gZG9jdW1lbnQoKTsKLSAgICAgICAgICAgIGlmIChyZXNvdXJjZS0+dHlwZSgp
ID09IENhY2hlZFJlc291cmNlOjpNYWluUmVzb3VyY2UpCi0gICAgICAgICAgICAgICAgaW5pdGlh
dG9yRG9jdW1lbnQgPSBkb2N1bWVudCgpLT5wYXJlbnREb2N1bWVudCgpOwotICAgICAgICAgICAg
QVNTRVJUKGluaXRpYXRvckRvY3VtZW50KTsKLSAgICAgICAgICAgIGNvbnN0IEluaXRpYXRvcklu
Zm8mIGluZm8gPSBpbml0aWF0b3JJdC0+dmFsdWU7Ci0gICAgICAgICAgICBpbml0aWF0b3JEb2N1
bWVudC0+ZG9tV2luZG93KCktPnBlcmZvcm1hbmNlKCktPmFkZFJlc291cmNlVGltaW5nKGluZm8u
bmFtZSwgaW5pdGlhdG9yRG9jdW1lbnQsIHJlc291cmNlLT5yZXNvdXJjZVJlcXVlc3QoKSwgcmVz
b3VyY2UtPnJlc3BvbnNlKCksIGluZm8uc3RhcnRUaW1lLCByZXNvdXJjZS0+bG9hZEZpbmlzaFRp
bWUoKSk7Ci0gICAgICAgICAgICBtX2luaXRpYXRvck1hcC5yZW1vdmUoaW5pdGlhdG9ySXQpOwot
ICAgICAgICB9Ci0gICAgfQorICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLnJlc291cmNlVGltaW5nRW5hYmxlZCgpKQorICAgICAgICBtX3Jlc291cmNlVGlt
aW5nSW5mby5hZGRSZXNvdXJjZVRpbWluZyhyZXNvdXJjZSwgZG9jdW1lbnQoKSk7CiAjZWxzZQog
ICAgIFVOVVNFRF9QQVJBTShyZXNvdXJjZSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKaW5kZXggNGRmODE5OTU5Y2Vh
YjExMDM3NGI1NWI0NjAzOTMwYTg3ZWI3YzY2YS4uMmI1NjFiNjU5YmJkZTljZDkzOTA0OTNkOWZl
MGI1ZmIwMmY4YzFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDYWNoZWRS
ZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlUmVxdWVzdC5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VUaW1pbmdJ
bmZvcm1hdGlvbi5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTE0NCw3ICsxNDUsNiBAQCBwcml2YXRlOgog
ICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXF1ZXN0UmVzb3VyY2Uo
Q2FjaGVkUmVzb3VyY2U6OlR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdCYpOwogICAgIENhY2hl
ZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXZhbGlkYXRlUmVzb3VyY2UoY29uc3Qg
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiwgQ2FjaGVkUmVzb3VyY2UqKTsKICAgICBDYWNoZWRSZXNv
dXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gbG9hZFJlc291cmNlKENhY2hlZFJlc291cmNlOjpU
eXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICB2b2lkIHN0b3JlUmVzb3VyY2VUaW1p
bmdJbml0aWF0b3JJbmZvcm1hdGlvbihjb25zdCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRS
ZXNvdXJjZT4mLCBjb25zdCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIHJlcXVl
c3RQcmVsb2FkKENhY2hlZFJlc291cmNlOjpUeXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBTdHJpbmcmIGNoYXJzZXQpOwogCiAgICAgZW51bSBSZXZhbGlkYXRpb25Qb2xpY3kgeyBV
c2UsIFJldmFsaWRhdGUsIFJlbG9hZCwgTG9hZCB9OwpAQCAtMTc3LDExICsxNzcsNyBAQCBwcml2
YXRlOgogCiAgICAgVGltZXIgbV9nYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzVGltZXI7
CiAKLSAgICBzdHJ1Y3QgSW5pdGlhdG9ySW5mbyB7Ci0gICAgICAgIEF0b21pY1N0cmluZyBuYW1l
OwotICAgICAgICBkb3VibGUgc3RhcnRUaW1lOwotICAgIH07Ci0gICAgSGFzaE1hcDxDYWNoZWRS
ZXNvdXJjZSosIEluaXRpYXRvckluZm8+IG1faW5pdGlhdG9yTWFwOworICAgIFJlc291cmNlVGlt
aW5nSW5mb3JtYXRpb24gbV9yZXNvdXJjZVRpbWluZ0luZm87CiAKICAgICAvLyAyOSBiaXRzIGxl
ZnQKICAgICBib29sIG1fYXV0b0xvYWRJbWFnZXMgOiAxOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDlmZTI5Y2QyNzlmNzIx
NTE2MmM1MDk5NjFjY2ZmNDk0NGY1YTFlZWQuLmYxYzFiZTBlNWMzYzlmYzdlMmJiZWY4ZWNhNzU0
MTU5ZjdkNGUxNWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNi0wNS0xMyAgWW9hdiBXZWlz
cyAgPHlvYXZAeW9hdi53cz4KKworICAgICAgICBSZXNvdXJjZVRpbWluZyBlbnRyaWVzIGZvciBj
YWNoZWQgcmVzb3VyY2VzIGFuZCBYSFIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1NzY2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoZXNlIHRlc3RzIG1ha2Ugc3VyZSB0aGF0IGNhY2hlYWJsZSByZXNv
dXJjZXMgYXMgd2VsbCBhcyBYSFIgYmFzZWQgcmVzb3VyY2VzCisgICAgICAgIGhhdmUgUmVzb3Vy
Y2VUaW1pbmcgZW50cmllcy4KKworICAgICAgICAqIGh0dHAvdGVzdHMvcGVyZm9ybWFuY2UvcGVy
Zm9ybWFuY2UtcmVzb3VyY2UtdGltaW5nLWNhY2hlZC1lbnRyaWVzLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS1yZXNvdXJj
ZS10aW1pbmctY2FjaGVkLWVudHJpZXMuaHRtbDogQWRkZWQuCisKIDIwMTYtMDUtMTMgIFNrYWNo
a292IE9sZWtzYW5kciAgPGdza2FjaGtvdkBnbWFpbC5jb20+CiAKICAgICAgICAgQXNzZXJ0aW9u
IGZhaWx1cmUgZm9yIHN1cGVyKCkgY2FsbCBpbiBhcnJvdyBmdW5jdGlvbiBkZWZhdWx0IHBhcmFt
ZXRlcnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGVyZm9ybWFuY2UvcGVy
Zm9ybWFuY2UtcmVzb3VyY2UtdGltaW5nLWNhY2hlZC1lbnRyaWVzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvcGVyZm9ybWFuY2UvcGVyZm9ybWFuY2UtcmVzb3VyY2UtdGlt
aW5nLWNhY2hlZC1lbnRyaWVzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZjg3MWMzYjgzOTQ3
NzJhNDgyMzUxZmQzOGMxNzUwMTEyOWNhNDgwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS1yZXNvdXJjZS10aW1pbmctY2Fj
aGVkLWVudHJpZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMiBAQAorUEFTUyBmb3VuZFJlc291
cmNlIGlzIDIKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wZXJmb3JtYW5j
ZS9wZXJmb3JtYW5jZS1yZXNvdXJjZS10aW1pbmctY2FjaGVkLWVudHJpZXMuaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvcGVyZm9ybWFuY2UvcGVyZm9ybWFuY2UtcmVzb3VyY2UtdGltaW5n
LWNhY2hlZC1lbnRyaWVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjU0ZDMyZDJhY2U0Y2Q4M2I1YTkyZTBm
Y2IwNGNlOGJkZWUyMDlmYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcGVyZm9ybWFuY2UvcGVyZm9ybWFuY2UtcmVzb3VyY2UtdGltaW5nLWNhY2hlZC1lbnRyaWVz
Lmh0bWwKQEAgLTAsMCArMSw0NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxzY3JpcHQ+
CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5zZXRSZXNvdXJj
ZVRpbWluZ1N1cHBvcnQodHJ1ZSk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpCisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOworICAgIH0KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8aW1nIHNyYz0iLi4vLi4vcmVzb3VyY2VzL3NxdWFy
ZTEwMC5wbmciPgorPHNjcmlwdD4KKyAgICB2YXIgZm91bmRSZXNvdXJjZSA9IDA7CisgICAgdmFy
IHJ1blRlc3QgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHJlc291cmNlcyA9IHBlcmZvcm1h
bmNlLmdldEVudHJpZXNCeVR5cGUoJ3Jlc291cmNlJyk7CisgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgcmVzb3VyY2VzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBpZiAocmVzb3VyY2Vz
W2ldLm5hbWUuaW5kZXhPZigic3F1YXJlIikgIT0gLTEpCisgICAgICAgICAgICAgICAgKytmb3Vu
ZFJlc291cmNlOworICAgICAgICB9OworICAgICAgICBzaG91bGRCZSgiZm91bmRSZXNvdXJjZSIs
ICIyIik7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgd2luZG93
LmludGVybmFscy5zZXRSZXNvdXJjZVRpbWluZ1N1cHBvcnQoZmFsc2UpOworICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
KyAgICB9OworICAgIHZhciB3aW5kb3dMb2FkZWQgPSBmYWxzZTsKKyAgICB2YXIgeGhyTG9hZGVk
ID0gZmFsc2U7CisgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgIHhoci5h
ZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICh3aW5kb3dM
b2FkZWQpCisgICAgICAgICAgICBydW5UZXN0KCk7CisgICAgICAgIHhockxvYWRlZCA9IHRydWU7
CisgICAgfSk7CisgICAgeGhyLm9wZW4oIkdFVCIsICIuLi8uLi9yZXNvdXJjZXMvc3F1YXJlMTAw
LnBuZyIpOworICAgIHhoci5zZW5kKCk7CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxv
YWQiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKHhockxvYWRlZCkKKyAgICAgICAgICAgIHJ1
blRlc3QoKTsKKyAgICAgICAgd2luZG93TG9hZGVkID0gdHJ1ZTsKKyAgICB9KTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278864</attachid>
            <date>2016-05-13 13:12:06 -0700</date>
            <delta_ts>2016-05-13 15:33:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157669-20160513221255.patch</filename>
            <type>text/plain</type>
            <size>26181</size>
            <attacher name="Yoav Weiss">yoav</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwODI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDBjNjBlOGZiZTUyOGYw
NTA2NmU1MmE4YTI5ZjQ5YzliMzQ0NTZlYS4uYTg1YzYxYWZmYmE2ZjAwYWZlMjNiZWMwM2I4MDgw
MjgzNGExOWU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE2LTA1LTEzICBZb2F2
IFdlaXNzICA8eW9hdkB5b2F2LndzPgorCisgICAgICAgIFJlc291cmNlVGltaW5nIGVudHJpZXMg
Zm9yIGNhY2hlZCByZXNvdXJjZXMgYW5kIFhIUgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3NjY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgIC0gTW92ZXMgdGhlIFJlc291cmNlVGltaW5nIHN0b3JhZ2Ug
YW5kIGFkZGl0aW9uIGxvZ2ljIGludG8gaXRzIG93biBjbGFzcywgc28gdGhhdCBpdAorICAgICAg
ICAgICBjYW4gYmUgYWNjZXNzZWQgYnkgYm90aCBDYWNoZWRSZXNvdXJjZUxvYWRlciBhbmQgRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLgorICAgICAgICAgLSBVc2luZyB0aGUgYWJvdmUsIGFkZHMg
UmVzb3VyY2VUaW1pbmcgY29sbGVjdGlvbiBpbnRvIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciwK
KyAgICAgICAgICAgaW4gb3JkZXIgdG8gc3VwcG9ydCBSZXNvdXJjZVRpbWluZyBlbnRyaWVzIGZv
ciBYSFIgYmFzZWQgcmVxdWVzdHMuCisgICAgICAgICAtIEFkZHMgUmVzb3VyY2VUaW1pbmcgZW50
cmllcyBmb3IgcmVzb3VyY2VzIHRoYXQgYXJlIHJldXNlZCBmcm9tIHRoZSBtZW1vcnkgY2FjaGUu
CisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS1yZXNv
dXJjZS10aW1pbmctY2FjaGVkLWVudHJpZXMuaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6IEFkZCBSZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uLgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIFJlc291cmNlVGltaW5nSW5mb3JtYXRpb24uCisg
ICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOiBBZGQg
YSBjYWxsIHRvIGFkZFJlc291cmNlVGltaW5nLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdCk6IFN0b3JlIHRoZSBpbml0aWF0b3IgaW5mb3Jt
YXRpb24uCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uOjphZGRSZXNvdXJjZVRpbWlu
Zyk6IE1vdmVkIGFkZFJlc291cmNlVGltaW5nIGxvZ2ljIGZyb20gQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uOjpzdG9yZVJl
c291cmNlVGltaW5nSW5pdGlhdG9ySW5mb3JtYXRpb24pOiBNb3ZlZCBhZGRSZXNvdXJjZVRpbWlu
ZyBsb2dpYyBmcm9tCisgICAgICAgIENhY2hlZFJlc291cmNlTG9hZGVyLiBSZW1vdmVkIHJlbGlh
bmNlIG9uIHRoZSBjb21taXR0aW5nRmlyc3RSZWFsTG9hZCBib29sIHdoZW4gc3RvcmluZyBpbml0
aWF0b3IgaW5mbywgYXMgSSBkb24ndAorICAgICAgICBzZWUgd2h5IGl0IGlzIHJlcXVpcmVkLCBh
bmQgaXQgbWFkZSBubyBzZW5zZSBpbiB0aGUgY29udGV4dCBvZiBEb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlVGltaW5nSW5mb3JtYXRpb24uaDogQWRk
ZWQuCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UpOiBB
ZGQgYSBSZXNvdXJjZVRpbWluZyBlbnRyeSB3aGVuIGEgcmVzb3VyY2UgaXMgcmV1c2VkIGZyb20g
TWVtb3J5Q2FjaGUuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmV2
YWxpZGF0ZVJlc291cmNlKTogVXNlIFJlc291cmNlVGltaW5nSW5mb3JtYXRpb246OnN0b3JlUmVz
b3VyY2VUaW1pbmdJbml0aWF0b3JJbmZvcm1hdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFJlc291cmNlTG9hZGVyOjpsb2FkUmVzb3VyY2UpOiBVc2UgUmVzb3VyY2VUaW1pbmdJbmZvcm1h
dGlvbjo6c3RvcmVSZXNvdXJjZVRpbWluZ0luaXRpYXRvckluZm9ybWF0aW9uLgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmxvYWREb25lKTogVXNlIFJlc291cmNlVGlt
aW5nSW5mb3JtYXRpb246OmFkZFJlc291cmNlVGltaW5nLgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OnN0b3JlUmVzb3VyY2VUaW1pbmdJbml0aWF0b3JJbmZvcm1hdGlv
bik6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
Lmg6CisKIDIwMTYtMDUtMTIgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5j
b20+CiAKICAgICAgICAgW2Nzcy1ncmlkXSBTaG93IGF1dG8tcmVwZWF0IGxpbmUgbmFtZXMgaW4g
Q29tcHV0ZWRTdHlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA3NTUwYjAwZDJhZjc1Zjg5NDVi
NmRhZjQyMGIwYmJmODcwNWU2NjdmLi5mYzk3Nzk1YTE2NzZhZWJlOGJhNGExNjhlMGQ0OWYzZjk1
NDc3YWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTkzMSw2ICsxOTMxLDcgQEAgc2V0KFdl
YkNvcmVfU09VUkNFUwogICAgIGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAogICAg
IGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCiAgICAgbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcAorICAgIGxvYWRlci9SZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uLmNwcAog
ICAgIGxvYWRlci9TaW5rRG9jdW1lbnQuY3BwCiAgICAgbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNw
cAogICAgIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmNTI2NzI3NDc0NmE5MzI0
MGQ5ZjYzYjc3NWU2MmZmM2Q1ODNlMGYwLi4xY2FiMjY5OGNjNWM0ZWExYmFhZjJiNGI2Yjc3Zjdk
NTYzZWYyMjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC02MDA3LDYgKzYwMDcsOCBAQAogCQlDQjM4RkQ1QTFDRDIzMjU4MDA1
OTJBM0YgLyogSlNQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENCMzhGRDU4MUNEMjMxNDUwMDU5MkEzRiAv
KiBKU1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuY3BwICovOyB9OwogCQlDQjM4RkQ1QjFDRDIz
MjVCMDA1OTJBM0YgLyogSlNQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQjM4RkQ1OTFDRDIzMTQ1MDA1OTJB
M0YgLyogSlNQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmggKi87IH07CiAJCUNCOENGMDE4MUE5
MzU4RDQwMDBENTEwQiAvKiBNaWNyb3Rhc2tzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENCOENGMDE1MUE5MzRCNDMwMDBENTEwQiAvKiBNaWNyb3Rh
c2tzLmNwcCAqLzsgfTsKKwkJQ0JDMkQyMkYxQ0U1Qjg5RDAwRDE4ODBCIC8qIFJlc291cmNlVGlt
aW5nSW5mb3JtYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0JDMkQyMkQxQ0U1Qjc3NDAwRDE4ODBCIC8qIFJlc291cmNlVGltaW5nSW5mb3Jt
YXRpb24uY3BwICovOyB9OworCQlDQkMyRDIzMDFDRTVCOEExMDBEMTg4MEIgLyogUmVzb3VyY2VU
aW1pbmdJbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0JDMkQyMkUxQ0U1Qjc3RDAwRDE4ODBCIC8qIFJlc291cmNlVGltaW5nSW5mb3Jt
YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlDQ0MyQjUxNDE1RjYxMzA2MDA0OENERDYgLyogRGV2aWNlQ2xpZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQ0MyQjUxMDE1RjYxMzA2MDA0OENE
RDYgLyogRGV2aWNlQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQ0NDMkI1MTUxNUY2MTMwNjAwNDhDREQ2IC8qIERldmljZUNvbnRyb2xs
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0ND
MkI1MTExNUY2MTMwNjAwNDhDREQ2IC8qIERldmljZUNvbnRyb2xsZXIuY3BwICovOyB9OwogCQlD
Q0MyQjUxNjE1RjYxMzA2MDA0OENERDYgLyogRGV2aWNlQ29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0NDMkI1MTIxNUY2MTMwNjAwNDhD
REQ2IC8qIERldmljZUNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMTM5ODksNiArMTM5OTEsOCBAQAogCQlDQjM4RkQ1ODFDRDIz
MTQ1MDA1OTJBM0YgLyogSlNQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNCMzhGRDU5MUNEMjMxNDUwMDU5MkEz
RiAvKiBKU1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNCOENGMDE1MUE5MzRCNDMwMDBENTEwQiAvKiBNaWNyb3Rhc2tzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1pY3JvdGFza3MuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDQkMyRDIyRDFDRTVCNzc0MDBEMTg4MEIgLyog
UmVzb3VyY2VUaW1pbmdJbmZvcm1hdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0JDMkQyMkUxQ0U1Qjc3RDAwRDE4ODBCIC8qIFJlc291cmNlVGltaW5n
SW5mb3JtYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VU
aW1pbmdJbmZvcm1hdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQ0MyQjUx
MDE1RjYxMzA2MDA0OENERDYgLyogRGV2aWNlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERldmljZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDQ0MyQjUxMTE1RjYxMzA2MDA0OENERDYgLyogRGV2aWNlQ29udHJvbGxlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZXZpY2VDb250cm9sbGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0NDMkI1MTIxNUY2MTMwNjAwNDhDREQ2IC8qIERl
dmljZUNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGV2aWNl
Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjI4MjIsNiArMjI4
MjYsOCBAQAogCQkJCTdBOTI5Q0EyMUM1OTgzNzgwMDRERjIyNiAvKiBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLmggKi8sCiAJCQkJN0E3Q0M4MzYxQzg3NTA2ODAwMzY2MjQzIC8qIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAgKi8sCiAJCQkJN0E3Q0M4MzcxQzg3NTA2ODAwMzY2MjQzIC8q
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oICovLAorCQkJCUNCQzJEMjJEMUNFNUI3NzQw
MEQxODgwQiAvKiBSZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uLmNwcCAqLywKKwkJCQlDQkMyRDIy
RTFDRTVCNzdEMDBEMTg4MEIgLyogUmVzb3VyY2VUaW1pbmdJbmZvcm1hdGlvbi5oICovLAogCQkJ
CTUxMzI3RDVGMTFBMzNBMkIwMDRGOUQ2NSAvKiBTaW5rRG9jdW1lbnQuY3BwICovLAogCQkJCTUx
MzI3RDVFMTFBMzNBMkIwMDRGOUQ2NSAvKiBTaW5rRG9jdW1lbnQuaCAqLywKIAkJCQlEMDAwRUQy
NTExQzFCOUNEMDBDNDc3MjYgLyogU3ViZnJhbWVMb2FkZXIuY3BwICovLApAQCAtMjgyNDgsNiAr
MjgyNTQsNyBAQAogCQkJCTgzQzFENDMyMTc4RDVBQjUwMDE0MUU2OCAvKiBTVkdQYXRoU2VnTGlu
ZXRvUmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E3RDBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0MxRDQzMzE3
OEQ1QUI1MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsQWJzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlDQkMyRDIzMDFDRTVCOEExMDBEMTg4MEIgLyogUmVzb3VyY2VUaW1pbmdJbmZv
cm1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDMUQ0MzQxNzhENUFCNTAwMTQxRTY4IC8q
IFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdB
ODEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdGhTZWdMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NDc2QzlFNjExREY2QTBCMDA1NTVCMDIgLyogU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTMyMTA5LDYgKzMyMTE2LDcgQEAKIAkJCQkxQTE0MTRCNTEzQTBGMDUw
MDAxOTk5NkMgLyogV2ViS2l0Rm9udEZhbWlseU5hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUQ3NjEzQTUwMTQ3NEYxM0YwMERCODYwNiAvKiBXZWJLaXROYW1lZEZsb3cuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0M0OEE2RDAxOTFDOUQ2NTAwMDI2Njc0IC8qIFdlYktpdE5hbWVzcGFjZS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlDQkMyRDIyRjFDRTVCODlEMDBEMTg4MEIgLyogUmVzb3Vy
Y2VUaW1pbmdJbmZvcm1hdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNURFQkRBMzE2RkI5
MDg3MDA4MzZGRTAgLyogV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkzMUMwRkYyNDBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0VHJh
bnNpdGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQ0YzMzJFMEYyQjlBMjUwMDRC
Njc5NSAvKiBXZWJMYXllci5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA1ZjVlZmQ4NDE4YTM3
ZWEwMmRmYWI2MzUzYjAyNWE4YTYwNmZhYmU1Li5mZDM0OTBlNTA3ZjM4Njg5N2E4ZGZkNTVkZTBh
ZjYwNjBmNzZhMDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMzI1LDYgKzMyNSw5IEBAIHZvaWQgRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiAK
IHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpCiB7CisgICAgaWYgKFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkucmVzb3VyY2VUaW1pbmdFbmFibGVkKCkp
CisgICAgICAgIG1fcmVzb3VyY2VUaW1pbmdJbmZvLmFkZFJlc291cmNlVGltaW5nKG1fcmVzb3Vy
Y2UuZ2V0KCksICZtX2RvY3VtZW50KTsKKwogICAgIGlmIChtX2FjdHVhbFJlcXVlc3QpIHsKICAg
ICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nKG1fZG9jdW1l
bnQuZnJhbWUoKSwgbV9kb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigp
LCBpZGVudGlmaWVyLCBmaW5pc2hUaW1lKTsKIApAQCAtMzkwLDkgKzM5MywxMyBAQCB2b2lkIERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBTZWN1cgogICAgICAgICAgICAgbmV3UmVxdWVzdC5zZXRJbml0aWF0b3IobV9v
cHRpb25zLmluaXRpYXRvcik7CiAgICAgICAgIEFTU0VSVCghbV9yZXNvdXJjZSk7CiAgICAgICAg
IG1fcmVzb3VyY2UgPSBtX2RvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdFJh
d1Jlc291cmNlKG5ld1JlcXVlc3QpOwotICAgICAgICBpZiAobV9yZXNvdXJjZSkKKyAgICAgICAg
aWYgKG1fcmVzb3VyY2UpIHsKICAgICAgICAgICAgIG1fcmVzb3VyY2UtPmFkZENsaWVudCh0aGlz
KTsKIAorICAgICAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkucmVzb3VyY2VUaW1pbmdFbmFibGVkKCkpCisgICAgICAgICAgICAgICAgbV9yZXNvdXJj
ZVRpbWluZ0luZm8uc3RvcmVSZXNvdXJjZVRpbWluZ0luaXRpYXRvckluZm9ybWF0aW9uKG1fcmVz
b3VyY2UsIG5ld1JlcXVlc3QsIG1fZG9jdW1lbnQuZnJhbWUoKSk7CisgICAgICAgIH0KKwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCmluZGV4IDQ2ZGZjNTI4Y2RkOTllMWUyNmQ2N2I1Mjc0
ZTM0M2ZjYTVmYTFlYzYuLmI0MjFlODdmMjQzYjJmNzkxNDZhYjViMzI1MDYzOTUwYTA3NWEwNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LmgKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkNhY2hlZFJhd1Jlc291cmNlQ2xpZW50
LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJSZXNvdXJj
ZVRpbWluZ0luZm9ybWF0aW9uLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMDUsNiArMTA2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBtX2NsaWVudDsKICAgICAgICAgRG9j
dW1lbnQmIG1fZG9jdW1lbnQ7CiAgICAgICAgIFRocmVhZGFibGVMb2FkZXJPcHRpb25zIG1fb3B0
aW9uczsKKyAgICAgICAgUmVzb3VyY2VUaW1pbmdJbmZvcm1hdGlvbiBtX3Jlc291cmNlVGltaW5n
SW5mbzsKICAgICAgICAgYm9vbCBtX3NhbWVPcmlnaW5SZXF1ZXN0OwogICAgICAgICBib29sIG1f
c2ltcGxlUmVxdWVzdDsKICAgICAgICAgYm9vbCBtX2FzeW5jOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nSW5mb3JtYXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nSW5mb3JtYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0
ODBlOTI2ZjlhNzRkZjI3Mjc4YTVlNTE0ZjhkYjkwNjc5MDczZWIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VUaW1pbmdJbmZvcm1hdGlvbi5jcHAKQEAg
LTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBa2FtYWkgVGVjaG5vbG9n
aWVzIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpZiBFTkFCTEUoV0VCX1RJTUlORykKKyNpbmNsdWRlICJSZXNvdXJj
ZVRpbWluZ0luZm9ybWF0aW9uLmgiCisKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZS5oIgorI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlUmVxdWVzdC5oIgorI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgor
I2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJIVE1M
RnJhbWVPd25lckVsZW1lbnQuaCIKKyNpbmNsdWRlICJQZXJmb3JtYW5jZS5oIgorI2luY2x1ZGUg
IlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lk
IFJlc291cmNlVGltaW5nSW5mb3JtYXRpb246OmFkZFJlc291cmNlVGltaW5nKENhY2hlZFJlc291
cmNlKiByZXNvdXJjZSwgRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIEFTU0VSVChSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnJlc291cmNlVGltaW5nRW5hYmxlZCgp
KTsKKyAgICBpZiAocmVzb3VyY2UgJiYgcmVzb3VyY2UtPnJlc3BvbnNlKCkuaXNIVFRQKCkKKyAg
ICAgICAgJiYgKCghcmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSAmJiAhcmVzb3VyY2UtPndhc0Nh
bmNlbGVkKCkpIHx8IHJlc291cmNlLT5yZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0
KSkgeworICAgICAgICBIYXNoTWFwPENhY2hlZFJlc291cmNlKiwgSW5pdGlhdG9ySW5mbz46Oml0
ZXJhdG9yIGluaXRpYXRvckl0ID0gbV9pbml0aWF0b3JNYXAuZmluZChyZXNvdXJjZSk7CisgICAg
ICAgIGlmIChpbml0aWF0b3JJdCAhPSBtX2luaXRpYXRvck1hcC5lbmQoKSkgeworICAgICAgICAg
ICAgQVNTRVJUKGRvY3VtZW50KTsKKyAgICAgICAgICAgIERvY3VtZW50KiBpbml0aWF0b3JEb2N1
bWVudCA9IGRvY3VtZW50OworICAgICAgICAgICAgaWYgKHJlc291cmNlLT50eXBlKCkgPT0gQ2Fj
aGVkUmVzb3VyY2U6Ok1haW5SZXNvdXJjZSkKKyAgICAgICAgICAgICAgICBpbml0aWF0b3JEb2N1
bWVudCA9IGRvY3VtZW50LT5wYXJlbnREb2N1bWVudCgpOworICAgICAgICAgICAgQVNTRVJUKGlu
aXRpYXRvckRvY3VtZW50KTsKKyAgICAgICAgICAgIEFTU0VSVChpbml0aWF0b3JEb2N1bWVudC0+
ZG9tV2luZG93KCkpOworICAgICAgICAgICAgQVNTRVJUKGluaXRpYXRvckRvY3VtZW50LT5kb21X
aW5kb3coKS0+cGVyZm9ybWFuY2UoKSk7CisgICAgICAgICAgICBjb25zdCBJbml0aWF0b3JJbmZv
JiBpbmZvID0gaW5pdGlhdG9ySXQtPnZhbHVlOworICAgICAgICAgICAgaW5pdGlhdG9yRG9jdW1l
bnQtPmRvbVdpbmRvdygpLT5wZXJmb3JtYW5jZSgpLT5hZGRSZXNvdXJjZVRpbWluZyhpbmZvLm5h
bWUsIGluaXRpYXRvckRvY3VtZW50LCByZXNvdXJjZS0+cmVzb3VyY2VSZXF1ZXN0KCksIHJlc291
cmNlLT5yZXNwb25zZSgpLCBpbmZvLnN0YXJ0VGltZSwgcmVzb3VyY2UtPmxvYWRGaW5pc2hUaW1l
KCkpOworICAgICAgICAgICAgbV9pbml0aWF0b3JNYXAucmVtb3ZlKGluaXRpYXRvckl0KTsKKyAg
ICAgICAgfQorICAgIH0KK30KKwordm9pZCBSZXNvdXJjZVRpbWluZ0luZm9ybWF0aW9uOjpzdG9y
ZVJlc291cmNlVGltaW5nSW5pdGlhdG9ySW5mb3JtYXRpb24oY29uc3QgQ2FjaGVkUmVzb3VyY2VI
YW5kbGU8Q2FjaGVkUmVzb3VyY2U+JiByZXNvdXJjZSwgY29uc3QgQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBGcmFtZSogZnJhbWUpCit7CisgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkucmVzb3VyY2VUaW1pbmdFbmFibGVkKCkpOworICAg
IEFTU0VSVChyZXNvdXJjZS5nZXQoKSk7CisgICAgaWYgKHJlc291cmNlLT50eXBlKCkgPT0gQ2Fj
aGVkUmVzb3VyY2U6Ok1haW5SZXNvdXJjZSkgeworICAgICAgICAvLyA8aWZyYW1lPnMgc2hvdWxk
IHJlcG9ydCB0aGUgaW5pdGlhbCBuYXZpZ2F0aW9uIHJlcXVlc3RlZCBieSB0aGUgcGFyZW50IGRv
Y3VtZW50LCBidXQgbm90IHN1YnNlcXVlbnQgbmF2aWdhdGlvbnMuCisgICAgICAgIEFTU0VSVChm
cmFtZSk7CisgICAgICAgIGlmIChmcmFtZS0+b3duZXJFbGVtZW50KCkpIHsKKyAgICAgICAgICAg
IEluaXRpYXRvckluZm8gaW5mbyA9IHsgZnJhbWUtPm93bmVyRWxlbWVudCgpLT5sb2NhbE5hbWUo
KSwgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgfTsKKyAgICAgICAgICAgIG1faW5pdGlh
dG9yTWFwLmFkZChyZXNvdXJjZS5nZXQoKSwgaW5mbyk7CisgICAgICAgIH0KKyAgICB9IGVsc2Ug
eworICAgICAgICBJbml0aWF0b3JJbmZvIGluZm8gPSB7IHJlcXVlc3QuaW5pdGlhdG9yTmFtZSgp
LCBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSB9OworICAgICAgICBtX2luaXRpYXRvck1h
cC5hZGQocmVzb3VyY2UuZ2V0KCksIGluZm8pOworICAgIH0KK30KKworfQorCisjZW5kaWYgLy8g
RU5BQkxFKFdFQl9USU1JTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VUaW1pbmdJbmZvcm1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
VGltaW5nSW5mb3JtYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDBiNzE2M2EwYzgyMzVkZjZkMjEyMzlh
OTgwYmM5YjE2MmE1OWMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlVGltaW5nSW5mb3JtYXRpb24uaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFrYW1haSBUZWNobm9sb2dpZXMgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VC
X1RJTUlORykKKworI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBDYWNoZWRSZXNvdXJjZTsKK2NsYXNzIENhY2hlZFJlc291
cmNlUmVxdWVzdDsKK2NsYXNzIERvY3VtZW50OworY2xhc3MgRnJhbWU7CisKK2NsYXNzIFJlc291
cmNlVGltaW5nSW5mb3JtYXRpb24geworcHVibGljOgorCisgICAgdm9pZCBhZGRSZXNvdXJjZVRp
bWluZyhDYWNoZWRSZXNvdXJjZSosIERvY3VtZW50Kik7CisgICAgdm9pZCBzdG9yZVJlc291cmNl
VGltaW5nSW5pdGlhdG9ySW5mb3JtYXRpb24oY29uc3QgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2Fj
aGVkUmVzb3VyY2U+JiwgY29uc3QgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiwgRnJhbWUqKTsKKwor
cHJpdmF0ZToKKyAgICBzdHJ1Y3QgSW5pdGlhdG9ySW5mbyB7CisgICAgICAgIEF0b21pY1N0cmlu
ZyBuYW1lOworICAgICAgICBkb3VibGUgc3RhcnRUaW1lOworICAgIH07CisgICAgSGFzaE1hcDxD
YWNoZWRSZXNvdXJjZSosIEluaXRpYXRvckluZm8+IG1faW5pdGlhdG9yTWFwOworfTsKKworfQor
CisjZW5kaWYgLy8gRU5BQkxFKFdFQl9USU1JTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAppbmRleCBlOTM0YjBmNGI2ZTc3
OWRjMmExY2YxZmQwOWIxY2Q4ZTM4ZjkwNjE3Li5jMTc2ODFmYTA5OThhNzYzY2U1ODJjY2E4ODQ0
Yjc0MDAxNjA4ODRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTYxOCw2ICs2MTgsMTAgQEAgQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVz
b3VyY2UoQ2FjaGUKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBsb2dNZW1v
cnlDYWNoZVJlc291cmNlUmVxdWVzdChmcmFtZSgpLCBEaWFnbm9zdGljTG9nZ2luZ0tleXM6Omlu
TWVtb3J5Q2FjaGVLZXkoKSwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjp1c2VkS2V5KCkpOwogICAg
ICAgICBtZW1vcnlDYWNoZS5yZXNvdXJjZUFjY2Vzc2VkKCpyZXNvdXJjZSk7CisgICAgICAgIGlm
IChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnJlc291cmNlVGltaW5n
RW5hYmxlZCgpKSB7CisgICAgICAgICAgICBtX3Jlc291cmNlVGltaW5nSW5mby5zdG9yZVJlc291
cmNlVGltaW5nSW5pdGlhdG9ySW5mb3JtYXRpb24ocmVzb3VyY2UsIHJlcXVlc3QsIGZyYW1lKCkp
OworICAgICAgICAgICAgbV9yZXNvdXJjZVRpbWluZ0luZm8uYWRkUmVzb3VyY2VUaW1pbmcocmVz
b3VyY2UuZ2V0KCksIGRvY3VtZW50KCkpOworICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAg
IH0KIApAQCAtNjcwLDcgKzY3NCw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291
cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmV2YWxpZGF0ZVJlc291cmNlKGNvCiAgICAgbWVt
b3J5Q2FjaGUucmVtb3ZlKCpyZXNvdXJjZSk7CiAgICAgbWVtb3J5Q2FjaGUuYWRkKCpuZXdSZXNv
dXJjZSk7CiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
cmVzb3VyY2VUaW1pbmdFbmFibGVkKCkpCi0gICAgICAgIHN0b3JlUmVzb3VyY2VUaW1pbmdJbml0
aWF0b3JJbmZvcm1hdGlvbihyZXNvdXJjZSwgcmVxdWVzdCk7CisgICAgICAgIG1fcmVzb3VyY2VU
aW1pbmdJbmZvLnN0b3JlUmVzb3VyY2VUaW1pbmdJbml0aWF0b3JJbmZvcm1hdGlvbihyZXNvdXJj
ZSwgcmVxdWVzdCwgZnJhbWUoKSk7CiAgICAgcmV0dXJuIG5ld1Jlc291cmNlOwogfQogCkBAIC02
ODYsMjUgKzY5MCwxMCBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OmxvYWRSZXNvdXJjZShDYWNoZWRSZQogICAgIGlmIChyZXF1ZXN0
LmFsbG93c0NhY2hpbmcoKSAmJiAhbWVtb3J5Q2FjaGUuYWRkKCpyZXNvdXJjZSkpCiAgICAgICAg
IHJlc291cmNlLT5zZXRPd25pbmdDYWNoZWRSZXNvdXJjZUxvYWRlcih0aGlzKTsKICAgICBpZiAo
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5yZXNvdXJjZVRpbWluZ0Vu
YWJsZWQoKSkKLSAgICAgICAgc3RvcmVSZXNvdXJjZVRpbWluZ0luaXRpYXRvckluZm9ybWF0aW9u
KHJlc291cmNlLCByZXF1ZXN0KTsKKyAgICAgICAgbV9yZXNvdXJjZVRpbWluZ0luZm8uc3RvcmVS
ZXNvdXJjZVRpbWluZ0luaXRpYXRvckluZm9ybWF0aW9uKHJlc291cmNlLCByZXF1ZXN0LCBmcmFt
ZSgpKTsKICAgICByZXR1cm4gcmVzb3VyY2U7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OnN0b3JlUmVzb3VyY2VUaW1pbmdJbml0aWF0b3JJbmZvcm1hdGlvbihjb25zdCBDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4mIHJlc291cmNlLCBjb25zdCBDYWNoZWRSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCi17Ci0gICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkucmVzb3VyY2VUaW1pbmdFbmFibGVkKCkpOwotICAgIGlmIChy
ZXNvdXJjZS0+dHlwZSgpID09IENhY2hlZFJlc291cmNlOjpNYWluUmVzb3VyY2UpIHsKLSAgICAg
ICAgLy8gPGlmcmFtZT5zIHNob3VsZCByZXBvcnQgdGhlIGluaXRpYWwgbmF2aWdhdGlvbiByZXF1
ZXN0ZWQgYnkgdGhlIHBhcmVudCBkb2N1bWVudCwgYnV0IG5vdCBzdWJzZXF1ZW50IG5hdmlnYXRp
b25zLgotICAgICAgICBpZiAoZnJhbWUoKS0+b3duZXJFbGVtZW50KCkgJiYgbV9kb2N1bWVudExv
YWRlci0+ZnJhbWVMb2FkZXIoKS0+c3RhdGVNYWNoaW5lKCkuY29tbWl0dGluZ0ZpcnN0UmVhbExv
YWQoKSkgewotICAgICAgICAgICAgSW5pdGlhdG9ySW5mbyBpbmZvID0geyBmcmFtZSgpLT5vd25l
ckVsZW1lbnQoKS0+bG9jYWxOYW1lKCksIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIH07
Ci0gICAgICAgICAgICBtX2luaXRpYXRvck1hcC5hZGQocmVzb3VyY2UuZ2V0KCksIGluZm8pOwot
ICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgSW5pdGlhdG9ySW5mbyBpbmZvID0geyBy
ZXF1ZXN0LmluaXRpYXRvck5hbWUoKSwgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgfTsK
LSAgICAgICAgbV9pbml0aWF0b3JNYXAuYWRkKHJlc291cmNlLmdldCgpLCBpbmZvKTsKLSAgICB9
Ci19Ci0KIHN0YXRpYyB2b2lkIGxvZ1JldmFsaWRhdGlvbihjb25zdCBTdHJpbmcmIHJlYXNvbiwg
RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQmIGxvZ0NsaWVudCkKIHsKICAgICBsb2dDbGllbnQubG9n
RGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpjYWNoZWRS
ZXNvdXJjZVJldmFsaWRhdGlvbktleSgpLCBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnJlYXNvbktl
eSgpLCByZWFzb24sIFNob3VsZFNhbXBsZTo6WWVzKTsKQEAgLTk3MCwyMSArOTU5LDggQEAgdm9p
ZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6bG9hZERvbmUoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNl
LCBib29sIHNob3VsZFBlcmZvcm0KICAgICBSZWZQdHI8RG9jdW1lbnQ+IHByb3RlY3REb2N1bWVu
dChtX2RvY3VtZW50KTsKIAogI2lmIEVOQUJMRShXRUJfVElNSU5HKQotICAgIGlmIChSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnJlc291cmNlVGltaW5nRW5hYmxlZCgp
Ci0gICAgICAgICYmIHJlc291cmNlICYmIHJlc291cmNlLT5yZXNwb25zZSgpLmlzSFRUUCgpCi0g
ICAgICAgICYmICgoIXJlc291cmNlLT5lcnJvck9jY3VycmVkKCkgJiYgIXJlc291cmNlLT53YXND
YW5jZWxlZCgpKSB8fCByZXNvdXJjZS0+cmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgpID09IDMw
NCkpIHsKLSAgICAgICAgSGFzaE1hcDxDYWNoZWRSZXNvdXJjZSosIEluaXRpYXRvckluZm8+Ojpp
dGVyYXRvciBpbml0aWF0b3JJdCA9IG1faW5pdGlhdG9yTWFwLmZpbmQocmVzb3VyY2UpOwotICAg
ICAgICBpZiAoaW5pdGlhdG9ySXQgIT0gbV9pbml0aWF0b3JNYXAuZW5kKCkpIHsKLSAgICAgICAg
ICAgIEFTU0VSVChkb2N1bWVudCgpKTsKLSAgICAgICAgICAgIERvY3VtZW50KiBpbml0aWF0b3JE
b2N1bWVudCA9IGRvY3VtZW50KCk7Ci0gICAgICAgICAgICBpZiAocmVzb3VyY2UtPnR5cGUoKSA9
PSBDYWNoZWRSZXNvdXJjZTo6TWFpblJlc291cmNlKQotICAgICAgICAgICAgICAgIGluaXRpYXRv
ckRvY3VtZW50ID0gZG9jdW1lbnQoKS0+cGFyZW50RG9jdW1lbnQoKTsKLSAgICAgICAgICAgIEFT
U0VSVChpbml0aWF0b3JEb2N1bWVudCk7Ci0gICAgICAgICAgICBjb25zdCBJbml0aWF0b3JJbmZv
JiBpbmZvID0gaW5pdGlhdG9ySXQtPnZhbHVlOwotICAgICAgICAgICAgaW5pdGlhdG9yRG9jdW1l
bnQtPmRvbVdpbmRvdygpLT5wZXJmb3JtYW5jZSgpLT5hZGRSZXNvdXJjZVRpbWluZyhpbmZvLm5h
bWUsIGluaXRpYXRvckRvY3VtZW50LCByZXNvdXJjZS0+cmVzb3VyY2VSZXF1ZXN0KCksIHJlc291
cmNlLT5yZXNwb25zZSgpLCBpbmZvLnN0YXJ0VGltZSwgcmVzb3VyY2UtPmxvYWRGaW5pc2hUaW1l
KCkpOwotICAgICAgICAgICAgbV9pbml0aWF0b3JNYXAucmVtb3ZlKGluaXRpYXRvckl0KTsKLSAg
ICAgICAgfQotICAgIH0KKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS5yZXNvdXJjZVRpbWluZ0VuYWJsZWQoKSkKKyAgICAgICAgbV9yZXNvdXJjZVRpbWlu
Z0luZm8uYWRkUmVzb3VyY2VUaW1pbmcocmVzb3VyY2UsIGRvY3VtZW50KCkpOwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0ocmVzb3VyY2UpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCmluZGV4IDRkZjgxOTk1OWNlYWIx
MTAzNzRiNTViNDYwMzkzMGE4N2ViN2M2NmEuLjJiNTYxYjY1OWJiZGU5Y2Q5MzkwNDkzZDlmZTBi
NWZiMDJmOGMxYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVz
b3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUxvYWRQcmlvcml0eS5oIgorI2luY2x1ZGUgIlJlc291cmNlVGltaW5nSW5m
b3JtYXRpb24uaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0xNDQsNyArMTQ1LDYgQEAgcHJpdmF0ZToKICAg
ICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gcmVxdWVzdFJlc291cmNlKENh
Y2hlZFJlc291cmNlOjpUeXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gcmV2YWxpZGF0ZVJlc291cmNlKGNvbnN0IENh
Y2hlZFJlc291cmNlUmVxdWVzdCYsIENhY2hlZFJlc291cmNlKik7CiAgICAgQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IGxvYWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlw
ZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgdm9pZCBzdG9yZVJlc291cmNlVGltaW5n
SW5pdGlhdG9ySW5mb3JtYXRpb24oY29uc3QgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVz
b3VyY2U+JiwgY29uc3QgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCByZXF1ZXN0
UHJlbG9hZChDYWNoZWRSZXNvdXJjZTo6VHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgU3RyaW5nJiBjaGFyc2V0KTsKIAogICAgIGVudW0gUmV2YWxpZGF0aW9uUG9saWN5IHsgVXNl
LCBSZXZhbGlkYXRlLCBSZWxvYWQsIExvYWQgfTsKQEAgLTE3NywxMSArMTc3LDcgQEAgcHJpdmF0
ZToKIAogICAgIFRpbWVyIG1fZ2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlc1RpbWVyOwog
Ci0gICAgc3RydWN0IEluaXRpYXRvckluZm8gewotICAgICAgICBBdG9taWNTdHJpbmcgbmFtZTsK
LSAgICAgICAgZG91YmxlIHN0YXJ0VGltZTsKLSAgICB9OwotICAgIEhhc2hNYXA8Q2FjaGVkUmVz
b3VyY2UqLCBJbml0aWF0b3JJbmZvPiBtX2luaXRpYXRvck1hcDsKKyAgICBSZXNvdXJjZVRpbWlu
Z0luZm9ybWF0aW9uIG1fcmVzb3VyY2VUaW1pbmdJbmZvOwogCiAgICAgLy8gMjkgYml0cyBsZWZ0
CiAgICAgYm9vbCBtX2F1dG9Mb2FkSW1hZ2VzIDogMTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5ZmUyOWNkMjc5ZjcyMTUx
NjJjNTA5OTYxY2NmZjQ5NDRmNWExZWVkLi5mMWMxYmUwZTVjM2M5ZmM3ZTJiYmVmOGVjYTc1NDE1
OWY3ZDRlMTVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMDUtMTMgIFlvYXYgV2Vpc3Mg
IDx5b2F2QHlvYXYud3M+CisKKyAgICAgICAgUmVzb3VyY2VUaW1pbmcgZW50cmllcyBmb3IgY2Fj
aGVkIHJlc291cmNlcyBhbmQgWEhSCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTc2NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGVzZSB0ZXN0cyBtYWtlIHN1cmUgdGhhdCBjYWNoZWFibGUgcmVzb3Vy
Y2VzIGFzIHdlbGwgYXMgWEhSIGJhc2VkIHJlc291cmNlcworICAgICAgICBoYXZlIFJlc291cmNl
VGltaW5nIGVudHJpZXMuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3BlcmZvcm1hbmNlL3BlcmZv
cm1hbmNlLXJlc291cmNlLXRpbWluZy1jYWNoZWQtZW50cmllcy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvcGVyZm9ybWFuY2UvcGVyZm9ybWFuY2UtcmVzb3VyY2Ut
dGltaW5nLWNhY2hlZC1lbnRyaWVzLmh0bWw6IEFkZGVkLgorCiAyMDE2LTA1LTEzICBTa2FjaGtv
diBPbGVrc2FuZHIgIDxnc2thY2hrb3ZAZ21haWwuY29tPgogCiAgICAgICAgIEFzc2VydGlvbiBm
YWlsdXJlIGZvciBzdXBlcigpIGNhbGwgaW4gYXJyb3cgZnVuY3Rpb24gZGVmYXVsdCBwYXJhbWV0
ZXJzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BlcmZvcm1hbmNlL3BlcmZv
cm1hbmNlLXJlc291cmNlLXRpbWluZy1jYWNoZWQtZW50cmllcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3BlcmZvcm1hbmNlL3BlcmZvcm1hbmNlLXJlc291cmNlLXRpbWlu
Zy1jYWNoZWQtZW50cmllcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGY4NzFjM2I4Mzk0Nzcy
YTQ4MjM1MWZkMzhjMTc1MDExMjljYTQ4MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvcGVyZm9ybWFuY2UvcGVyZm9ybWFuY2UtcmVzb3VyY2UtdGltaW5nLWNhY2hl
ZC1lbnRyaWVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIgQEAKK1BBU1MgZm91bmRSZXNvdXJj
ZSBpcyAyCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGVyZm9ybWFuY2Uv
cGVyZm9ybWFuY2UtcmVzb3VyY2UtdGltaW5nLWNhY2hlZC1lbnRyaWVzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3BlcmZvcm1hbmNlL3BlcmZvcm1hbmNlLXJlc291cmNlLXRpbWluZy1j
YWNoZWQtZW50cmllcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1NGQzMmQyYWNlNGNkODNiNWE5MmUwZmNi
MDRjZThiZGVlMjA5ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3BlcmZvcm1hbmNlL3BlcmZvcm1hbmNlLXJlc291cmNlLXRpbWluZy1jYWNoZWQtZW50cmllcy5o
dG1sCkBAIC0wLDAgKzEsNDQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8c2NyaXB0Pgor
ICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuc2V0UmVzb3VyY2VU
aW1pbmdTdXBwb3J0KHRydWUpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKQorICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKKyAgICB9Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPGltZyBzcmM9Ii4uLy4uL3Jlc291cmNlcy9zcXVhcmUx
MDAucG5nIj4KKzxzY3JpcHQ+CisgICAgdmFyIGZvdW5kUmVzb3VyY2UgPSAwOworICAgIHZhciBy
dW5UZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciByZXNvdXJjZXMgPSBwZXJmb3JtYW5j
ZS5nZXRFbnRyaWVzQnlUeXBlKCdyZXNvdXJjZScpOworICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHJlc291cmNlcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgaWYgKHJlc291cmNlc1tp
XS5uYW1lLmluZGV4T2YoInNxdWFyZSIpICE9IC0xKQorICAgICAgICAgICAgICAgICsrZm91bmRS
ZXNvdXJjZTsKKyAgICAgICAgfTsKKyAgICAgICAgc2hvdWxkQmUoImZvdW5kUmVzb3VyY2UiLCAi
MiIpOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIHdpbmRvdy5p
bnRlcm5hbHMuc2V0UmVzb3VyY2VUaW1pbmdTdXBwb3J0KGZhbHNlKTsKKyAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cisg
ICAgfTsKKyAgICB2YXIgd2luZG93TG9hZGVkID0gZmFsc2U7CisgICAgdmFyIHhockxvYWRlZCA9
IGZhbHNlOworICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAgICB4aHIuYWRk
RXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAod2luZG93TG9h
ZGVkKQorICAgICAgICAgICAgcnVuVGVzdCgpOworICAgICAgICB4aHJMb2FkZWQgPSB0cnVlOwor
ICAgIH0pOworICAgIHhoci5vcGVuKCJHRVQiLCAiLi4vLi4vcmVzb3VyY2VzL3NxdWFyZTEwMC5w
bmciKTsKKyAgICB4aHIuc2VuZCgpOworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2Fk
IiwgZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICh4aHJMb2FkZWQpCisgICAgICAgICAgICBydW5U
ZXN0KCk7CisgICAgICAgIHdpbmRvd0xvYWRlZCA9IHRydWU7CisgICAgfSk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>