<?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>169506</bug_id>
          
          <creation_ts>2017-03-10 20:27:29 -0800</creation_ts>
          <short_desc>Resource Load Statistics: More efficient network process messaging + Fix bug in user interaction reporting</short_desc>
          <delta_ts>2017-03-13 14:50:58 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="John Wilander">wilander</reporter>
          <assigned_to name="John Wilander">wilander</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1286058</commentid>
    <comment_count>0</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2017-03-10 20:27:29 -0800</bug_when>
    <thetext>We should send batches of domains to remove and add in one message type to the network process.

Also, there is a bug in how user interaction gets reported to the network process. It has to go through the UI process which will be addressed by the same change.

We should make sure we behave gracefully if we have nothing to report to the network process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286063</commentid>
    <comment_count>1</comment_count>
      <attachid>304123</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2017-03-10 20:48:12 -0800</bug_when>
    <thetext>Created attachment 304123
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287257</commentid>
    <comment_count>2</comment_count>
      <attachid>304123</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-03-13 11:36:06 -0700</bug_when>
    <thetext>Comment on attachment 304123
Patch

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

&gt; Source/WebCore/loader/ResourceLoadStatistics.cpp:297
&gt; +    // In-memory only

I&apos;m not sure this comment helps anything

&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:185
&gt; -    m_resourceLoadStatisticsStore-&gt;setShouldPartitionCookiesCallback([this, shouldPartitionCookiesForDomainsHandler = WTFMove(shouldPartitionCookiesForDomainsHandler)] (const Vector&lt;String&gt;&amp; primaryDomains, bool value) {
&gt; -        shouldPartitionCookiesForDomainsHandler(primaryDomains, value);
&gt; +    m_resourceLoadStatisticsStore-&gt;setShouldPartitionCookiesCallback([this, shouldPartitionCookiesForDomainsHandler] (const Vector&lt;String&gt;&amp; domainsToRemove, const Vector&lt;String&gt;&amp; domainsToAdd) {

The WTFMove will still be necessary when we change the std::function to WTF::Function and make sure it&apos;s never copied.  Removing the WTFMove just makes a copy, which doesn&apos;t cause a problem in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287321</commentid>
    <comment_count>3</comment_count>
      <attachid>304295</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2017-03-13 13:54:28 -0700</bug_when>
    <thetext>Created attachment 304295
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287323</commentid>
    <comment_count>4</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2017-03-13 13:57:55 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 304123 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=304123&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/ResourceLoadStatistics.cpp:297
&gt; &gt; +    // In-memory only
&gt; 
&gt; I&apos;m not sure this comment helps anything

I commented on it to minimize confusion as to why this value is not persisted to or decoded from disk and that it has to be generated at runtime. This is because the state in the network process only exists at runtime.

&gt; &gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:185
&gt; &gt; -    m_resourceLoadStatisticsStore-&gt;setShouldPartitionCookiesCallback([this, shouldPartitionCookiesForDomainsHandler = WTFMove(shouldPartitionCookiesForDomainsHandler)] (const Vector&lt;String&gt;&amp; primaryDomains, bool value) {
&gt; &gt; -        shouldPartitionCookiesForDomainsHandler(primaryDomains, value);
&gt; &gt; +    m_resourceLoadStatisticsStore-&gt;setShouldPartitionCookiesCallback([this, shouldPartitionCookiesForDomainsHandler] (const Vector&lt;String&gt;&amp; domainsToRemove, const Vector&lt;String&gt;&amp; domainsToAdd) {
&gt; 
&gt; The WTFMove will still be necessary when we change the std::function to
&gt; WTF::Function and make sure it&apos;s never copied.  Removing the WTFMove just
&gt; makes a copy, which doesn&apos;t cause a problem in this case.

Good catch! That change was unintentional. I was changing things as part of my debugging. The move is now back in.

Thanks for the review, Alex!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287332</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-03-13 14:08:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/31019494&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287357</commentid>
    <comment_count>6</comment_count>
      <attachid>304295</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-13 14:50:54 -0700</bug_when>
    <thetext>Comment on attachment 304295
Patch

Clearing flags on attachment: 304295

Committed r213871: &lt;http://trac.webkit.org/changeset/213871&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287358</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-13 14:50:58 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304123</attachid>
            <date>2017-03-10 20:48:12 -0800</date>
            <delta_ts>2017-03-13 13:54:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169506-20170310204815.patch</filename>
            <type>text/plain</type>
            <size>30982</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMzcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDE3LTAzLTEwICBKb2huIFdp
bGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQgU3Rh
dGlzdGljczogTW9yZSBlZmZpY2llbnQgbmV0d29yayBwcm9jZXNzIG1lc3NhZ2luZyArIEZpeCBi
dWcgaW4gdXNlciBpbnRlcmFjdGlvbiByZXBvcnRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTUwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgcHJldmlvdXMgdGVzdCB3aGljaCBu
b3cgZm9sbG93cyB0aGUgY29kZSBwYXRoIG1vcmUgY2xvc2VseSB0byB3aGVuIHJlcG9ydGluZwor
ICAgICAgICBoYXBwZW5zIGluIHRoZSB3ZWIgcHJvY2Vzcy4KKworICAgICAgICAqIGxvYWRlci9S
ZXNvdXJjZUxvYWRPYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6bG9nVXNlckludGVyYWN0aW9uV2l0aFJlZHVjZWRUaW1lUmVzb2x1dGlvbik6Cisg
ICAgICAgICAgICBObyBsb25nZXIgZXhwbGljaXRseSBjYWxscyBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcigpLgorICAgICAgICAg
ICAgSW5zdGVhZCBqdXN0IGNhbGxzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZmlyZURh
dGFNb2RpZmljYXRpb25IYW5kbGVyKCkuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6bG9nVXNlckludGVyYWN0aW9uKToKKyAgICAgICAgICAgIFVwZGF0ZWQgdG8gY2Fs
bCB0aGUgbmV3IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZmlyZVNob3VsZFBhcnRpdGlv
bkNvb2tpZXNIYW5kbGVyKCkuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKToKKyAgICAgICAgICAgIE5vdyB0
YWtlcyB0d28gdmVjdG9ycyDigJMgZG9tYWluc1RvUmVtb3ZlIGFuZCBkb21haW5zVG9BZGQuCisg
ICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmg6CisgICAgICAgICogbG9hZGVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljczo6dG9TdHJpbmcpOgorICAgICAgICAgICAgQWRkZWQgYm9vbGVhbiBmaWVs
ZCBpc01hcmtlZEZvckNvb2tpZVBhcnRpdGlvbmluZy4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3M6Om1lcmdlKToKKyAgICAgICAgICAgIEFkZGVkIGJvb2xlYW4gZmll
bGQgaXNNYXJrZWRGb3JDb29raWVQYXJ0aXRpb25pbmcuCisgICAgICAgICogbG9hZGVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3MuaDoKKyAgICAgICAgICAgIEFkZGVkIGJvb2xlYW4gZmllbGQgaXNN
YXJrZWRGb3JDb29raWVQYXJ0aXRpb25pbmcuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnJlYWREYXRhRnJvbURlY29kZXIpOgorICAgICAgICAgICAgTm93IG1hcmtz
IHN0YXRpc3RpY3Mgd2l0aCBpc01hcmtlZEZvckNvb2tpZVBhcnRpdGlvbmluZyBiZWZvcmUgc2Vu
ZGluZyB0aGVtIG9mZiB0bworICAgICAgICAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKS4KKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Nh
bGxiYWNrKToKKyAgICAgICAgICAgIE5vdyBhY2NlcHRzIGEgaGFuZGxlciB3aXRoIHR3byB2ZWN0
b3JzLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpmaXJl
U2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIpOgorICAgICAgICAgICAgTm93IHRoZSBvbmx5
IGV4cG9ydGVkIHZlcnNpb24gb2YgdGhpcyBmdW5jdGlvbiBpcyB0aGUgb25lIHdpdGhvdXQgYXJn
dW1lbnRzLgorICAgICAgICAgICAgVGhlIG9uZSBpbnRlcm5hbCB0byBXZWJDb3JlIGFjY2VwdHMg
dHdvIHZlY3RvcnMg4oCTIGRvbWFpbnNUb1JlbW92ZSBhbmQgZG9tYWluc1RvQWRkLgorICAgICAg
ICAgICAgVGhlIGV4cG9ydGVkIG9uZSBnZW5lcmF0ZXMgdGhlIHR3byB2ZWN0b3JzIGFuZCB0aGVu
IGNhbGxzIHRoZSBpbnRlcm5hbCBvbmUuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6Omhhc0hhZFJlY2VudFVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgICAg
ICBObyBsb25nZXIgZXhwbGljaXRseSBjYWxscyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcigpLgorICAgICAgICAqIGxvYWRlci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2Yv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpzZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdHMpOgorICAg
ICAgICAgICAgTm93IHRha2VzIHR3byB2ZWN0b3JzIOKAkyBkb21haW5zVG9SZW1vdmUgYW5kIGRv
bWFpbnNUb0FkZC4KKwogMjAxNy0wMy0xMCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgW1dpbl0gU2Nyb2xsYmFycyBidXR0b25zIGhhdmUgaW5jb3JyZWN0
IHNpemUgaW4gSGlEUEkuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRPYnNlcnZlci5jcHAJKHJldmlzaW9uIDIxMzcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNiw3ICsz
MjYsNiBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dVc2VySW50ZXJhCiAgICAgc3Rh
dGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb24gPSB0cnVlOwogICAgIHN0YXRpc3RpY3MubW9zdFJl
Y2VudFVzZXJJbnRlcmFjdGlvbiA9IG5ld1RpbWVzdGFtcDsKIAotICAgIG1fc3RvcmUtPmZpcmVT
aG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihwcmltYXJ5RG9tYWluU3RyLCBmYWxzZSk7CiAg
ICAgbV9zdG9yZS0+ZmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCk7CiB9CiAKQEAgLTM0MSw3
ICszNDAsNyBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dVc2VySW50ZXJhCiAgICAg
c3RhdGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb24gPSB0cnVlOwogICAgIHN0YXRpc3RpY3MubW9z
dFJlY2VudFVzZXJJbnRlcmFjdGlvbiA9IFdURjo6Y3VycmVudFRpbWUoKTsKIAotICAgIG1fc3Rv
cmUtPmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihwcmltYXJ5RG9tYWluU3RyLCBm
YWxzZSk7CisgICAgbV9zdG9yZS0+ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKHtw
cmltYXJ5RG9tYWluU3RyfSwgeyB9KTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
Y2xlYXJVc2VySW50ZXJhY3Rpb24oY29uc3QgVVJMJiB1cmwpCkBAIC00MzIsOSArNDMxLDkgQEAg
dm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6ZmlyZURhdGFNb2RpZgogICAgIG1fc3RvcmUtPmZp
cmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpOwogfQogCi12b2lkIFJlc291cmNlTG9hZE9ic2Vy
dmVyOjpmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoY29uc3QgU3RyaW5nJiBob3N0
TmFtZSwgYm9vbCB2YWx1ZSkKK3ZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmZpcmVTaG91bGRQ
YXJ0aXRpb25Db29raWVzSGFuZGxlcihjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVt
b3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkKQogewotICAgIG1fc3RvcmUt
PmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihwcmltYXJ5RG9tYWluKGhvc3ROYW1l
KSwgdmFsdWUpOworICAgIG1fc3RvcmUtPmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxl
cihkb21haW5zVG9SZW1vdmUsIGRvbWFpbnNUb0FkZCk7CiB9CiAKIFN0cmluZyBSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6cHJpbWFyeURvbWFpbihjb25zdCBVUkwmIHVybCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCShyZXZpc2lvbiAyMTM3Mjgp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRSZWR1Y2VkVGltZXN0YW1wUmVzb2x1dGlvbihkb3VibGUgc2Vjb25kcyk7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpOwotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKGNvbnN0
IFN0cmluZyYgcHJpbWFyeURvbWFpbiwgYm9vbCB2YWx1ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCk7
CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
PiBzdGF0aXN0aWNzU3RvcmUoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN0YXRpc3Rp
Y3NTdG9yZShSZWY8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiYmKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAJKHJldmlz
aW9uIDIxMzcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk0LDYgKzI5NCwxMCBAQCBTdHJpbmcgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljczo6dG9TdHJpbmcoCiAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoZGF0
YVJlY29yZHNSZW1vdmVkKTsKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKIAorICAgIC8vIElu
LW1lbW9yeSBvbmx5CisgICAgYXBwZW5kQm9vbGVhbihidWlsZGVyLCAiaXNNYXJrZWRGb3JDb29r
aWVQYXJ0aXRpb25pbmciLCBpc01hcmtlZEZvckNvb2tpZVBhcnRpdGlvbmluZyk7CisgICAgYnVp
bGRlci5hcHBlbmQoJ1xuJyk7CisKICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKIAogICAgIHJl
dHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CkBAIC0zNTMsNiArMzU3LDkgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzOjptZXJnZShjb25zdAogICAgIG1lcmdlSGFzaENvdW50ZWRTZXQocmVk
aXJlY3RlZFRvT3RoZXJQcmV2YWxlbnRSZXNvdXJjZU9yaWdpbnMsIG90aGVyLnJlZGlyZWN0ZWRU
b090aGVyUHJldmFsZW50UmVzb3VyY2VPcmlnaW5zKTsKICAgICBpc1ByZXZhbGVudFJlc291cmNl
IHw9IG90aGVyLmlzUHJldmFsZW50UmVzb3VyY2U7CiAgICAgZGF0YVJlY29yZHNSZW1vdmVkICs9
IG90aGVyLmRhdGFSZWNvcmRzUmVtb3ZlZDsKKyAgICAKKyAgICAvLyBJbi1tZW1vcnkgb25seQor
ICAgIGlzTWFya2VkRm9yQ29va2llUGFydGl0aW9uaW5nIHw9IG90aGVyLmlzTWFya2VkRm9yQ29v
a2llUGFydGl0aW9uaW5nOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgJKHJldmlzaW9uIDIxMzcyOCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTg3LDYgKzg3LDkgQEAgc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MgewogICAgIEhhc2hD
b3VudGVkU2V0PFN0cmluZz4gcmVkaXJlY3RlZFRvT3RoZXJQcmV2YWxlbnRSZXNvdXJjZU9yaWdp
bnM7CiAgICAgYm9vbCBpc1ByZXZhbGVudFJlc291cmNlIHsgZmFsc2UgfTsKICAgICB1bnNpZ25l
ZCBkYXRhUmVjb3Jkc1JlbW92ZWQgeyAwIH07CisKKyAgICAvLyBJbi1tZW1vcnkgb25seQorICAg
IGJvb2wgaXNNYXJrZWRGb3JDb29raWVQYXJ0aXRpb25pbmcgeyBmYWxzZSB9OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHJldmlzaW9uIDIxMzcyOCkKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDMsMTIgKzEwMywxNCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6cmVhZERhCiAgICAgVmVjdG9yPFN0cmluZz4gcHJldmFsZW50UmVzb3VyY2VE
b21haW5zV2l0aG91dFVzZXJJbnRlcmFjdGlvbjsKICAgICBwcmV2YWxlbnRSZXNvdXJjZURvbWFp
bnNXaXRob3V0VXNlckludGVyYWN0aW9uLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobG9hZGVkU3Rh
dGlzdGljcy5zaXplKCkpOwogICAgIGZvciAoYXV0byYgc3RhdGlzdGljcyA6IGxvYWRlZFN0YXRp
c3RpY3MpIHsKLSAgICAgICAgbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuc2V0KHN0YXRpc3RpY3Mu
aGlnaExldmVsRG9tYWluLCBzdGF0aXN0aWNzKTsKLSAgICAgICAgaWYgKHN0YXRpc3RpY3MuaXNQ
cmV2YWxlbnRSZXNvdXJjZSAmJiAhc3RhdGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb24pCisgICAg
ICAgIGlmIChzdGF0aXN0aWNzLmlzUHJldmFsZW50UmVzb3VyY2UgJiYgIXN0YXRpc3RpY3MuaGFk
VXNlckludGVyYWN0aW9uKSB7CiAgICAgICAgICAgICBwcmV2YWxlbnRSZXNvdXJjZURvbWFpbnNX
aXRob3V0VXNlckludGVyYWN0aW9uLnVuY2hlY2tlZEFwcGVuZChzdGF0aXN0aWNzLmhpZ2hMZXZl
bERvbWFpbik7CisgICAgICAgICAgICBzdGF0aXN0aWNzLmlzTWFya2VkRm9yQ29va2llUGFydGl0
aW9uaW5nID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBtX3Jlc291cmNlU3RhdGlzdGljc01h
cC5zZXQoc3RhdGlzdGljcy5oaWdoTGV2ZWxEb21haW4sIHN0YXRpc3RpY3MpOwogICAgIH0KLSAg
ICAKLSAgICBmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIocHJldmFsZW50UmVzb3Vy
Y2VEb21haW5zV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgdHJ1ZSk7CisKKyAgICBmaXJlU2hvdWxk
UGFydGl0aW9uQ29va2llc0hhbmRsZXIoeyB9LCBwcmV2YWxlbnRSZXNvdXJjZURvbWFpbnNXaXRo
b3V0VXNlckludGVyYWN0aW9uKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KCkKQEAgLTE1NSw3ICsxNTcsNyBAQCB2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0Tm90CiAgICAgbV9kYXRhQWRkZWRIYW5k
bGVyID0gV1RGTW92ZShoYW5kbGVyKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OnNldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNDYWxsYmFjayhzdGQ6OmZ1bmN0aW9uPHZv
aWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIHByaW1hcnlEb21haW5zLCBib29sIHZhbHVlKT4mJiBo
YW5kbGVyKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFNob3VsZFBhcnRp
dGlvbkNvb2tpZXNDYWxsYmFjayhzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCk+
JiYgaGFuZGxlcikKIHsKICAgICBtX3Nob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JEb21haW5zSGFu
ZGxlciA9IFdURk1vdmUoaGFuZGxlcik7CiB9CkBAIC0xNzEsMTcgKzE3MywzMiBAQCB2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZmlyZURhCiAgICAgICAgIG1fZGF0YUFkZGVkSGFu
ZGxlcigpOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZmlyZVNob3Vs
ZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKGNvbnN0IFN0cmluZyYgcHJpbWFyeURvbWFpbiwgYm9v
bCB2YWx1ZSkKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpmaXJlU2hvdWxkUGFy
dGl0aW9uQ29va2llc0hhbmRsZXIoKQogewotICAgIFZlY3RvcjxTdHJpbmc+IGRvbWFpblZlY3Rv
cjsKLSAgICBkb21haW5WZWN0b3IuYXBwZW5kKHByaW1hcnlEb21haW4pOwotICAgIGZpcmVTaG91
bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihkb21haW5WZWN0b3IsIHZhbHVlKTsKKyAgICBWZWN0
b3I8U3RyaW5nPiBkb21haW5zVG9SZW1vdmU7CisgICAgVmVjdG9yPFN0cmluZz4gZG9tYWluc1Rv
QWRkOworICAgIAorICAgIGZvciAoYXV0byYgcmVzb3VyY2VTdGF0aXN0aWMgOiBtX3Jlc291cmNl
U3RhdGlzdGljc01hcC52YWx1ZXMoKSkgeworICAgICAgICBib29sIHJlY2VudFVzZXJJbnRlcmFj
dGlvbiA9IGhhc0hhZFJlY2VudFVzZXJJbnRlcmFjdGlvbihyZXNvdXJjZVN0YXRpc3RpYyk7Cisg
ICAgICAgIGlmIChyZXNvdXJjZVN0YXRpc3RpYy5pc01hcmtlZEZvckNvb2tpZVBhcnRpdGlvbmlu
ZyAmJiByZWNlbnRVc2VySW50ZXJhY3Rpb24pIHsKKyAgICAgICAgICAgIHJlc291cmNlU3RhdGlz
dGljLmlzTWFya2VkRm9yQ29va2llUGFydGl0aW9uaW5nID0gZmFsc2U7CisgICAgICAgICAgICBk
b21haW5zVG9SZW1vdmUuYXBwZW5kKHJlc291cmNlU3RhdGlzdGljLmhpZ2hMZXZlbERvbWFpbik7
CisgICAgICAgIH0gZWxzZSBpZiAoIXJlc291cmNlU3RhdGlzdGljLmlzTWFya2VkRm9yQ29va2ll
UGFydGl0aW9uaW5nICYmICFyZWNlbnRVc2VySW50ZXJhY3Rpb24gJiYgcmVzb3VyY2VTdGF0aXN0
aWMuaXNQcmV2YWxlbnRSZXNvdXJjZSkgeworICAgICAgICAgICAgcmVzb3VyY2VTdGF0aXN0aWMu
aXNNYXJrZWRGb3JDb29raWVQYXJ0aXRpb25pbmcgPSB0cnVlOworICAgICAgICAgICAgZG9tYWlu
c1RvQWRkLmFwcGVuZChyZXNvdXJjZVN0YXRpc3RpYy5oaWdoTGV2ZWxEb21haW4pOworICAgICAg
ICB9CisgICAgfQorICAgIAorICAgIGZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihk
b21haW5zVG9SZW1vdmUsIGRvbWFpbnNUb0FkZCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoY29uc3QgVmVj
dG9yPFN0cmluZz4mIHByaW1hcnlEb21haW5zLCBib29sIHZhbHVlKQordm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihjb25z
dCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZG9tYWluc1RvQWRkKQogeworICAgIGlmIChkb21haW5zVG9SZW1vdmUuaXNFbXB0eSgpICYmIGRv
bWFpbnNUb0FkZC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChtX3Nob3Vs
ZFBhcnRpdGlvbkNvb2tpZXNGb3JEb21haW5zSGFuZGxlcikKLSAgICAgICAgbV9zaG91bGRQYXJ0
aXRpb25Db29raWVzRm9yRG9tYWluc0hhbmRsZXIocHJpbWFyeURvbWFpbnMsIHZhbHVlKTsKKyAg
ICAgICAgbV9zaG91bGRQYXJ0aXRpb25Db29raWVzRm9yRG9tYWluc0hhbmRsZXIoZG9tYWluc1Rv
UmVtb3ZlLCBkb21haW5zVG9BZGQpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6c2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihkb3VibGUgc2Vjb25kcykKQEAgLTIw
OCw5ICsyMjUsNiBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzSGFkCiAg
ICAgICAgIHJlc291cmNlU3RhdGlzdGljLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24gPSAwOwog
ICAgICAgICByZXNvdXJjZVN0YXRpc3RpYy5oYWRVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTsKIAot
ICAgICAgICBpZiAocmVzb3VyY2VTdGF0aXN0aWMuaXNQcmV2YWxlbnRSZXNvdXJjZSkKLSAgICAg
ICAgICAgIGZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihyZXNvdXJjZVN0YXRpc3Rp
Yy5oaWdoTGV2ZWxEb21haW4sIHRydWUpOwotCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmgJKHJldmlzaW9uIDIxMzcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsMTQg
KzU4LDEzIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8UmVzb3VyY2VMb2Fk
U3RhdGlzdGljcz4gdGFrZVN0YXRpc3RpY3MoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0Tm90aWZpY2F0aW9uQ2FsbGJhY2soc3RkOjpmdW5jdGlvbjx2b2lkKCk+KTsKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNDYWxsYmFjayhzdGQ6OmZ1
bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIHByaW1hcnlEb21haW5zLCBib29sIHZh
bHVlKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTaG91bGRQYXJ0aXRpb25Db29r
aWVzQ2FsbGJhY2soc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21h
aW5zVG9SZW1vdmUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9BZGQpPiYmKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFdyaXRlUGVyc2lzdGVudFN0b3JlQ2FsbGJhY2soc3Rk
OjpmdW5jdGlvbjx2b2lkKCk+JiYpOwogCi0KICAgICB2b2lkIGZpcmVEYXRhTW9kaWZpY2F0aW9u
SGFuZGxlcigpOwogICAgIHZvaWQgc2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihkb3VibGUg
c2Vjb25kcyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaXJlU2hvdWxkUGFydGl0aW9uQ29v
a2llc0hhbmRsZXIoY29uc3QgU3RyaW5nJiBwcmltYXJ5RG9tYWluLCBib29sIHZhbHVlKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcHJpbWFyeURvbWFpbiwgYm9vbCB2YWx1ZSk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKTsKKyAg
ICB2b2lkIGZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRk
KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHJvY2Vzc1N0YXRpc3RpY3Moc3RkOjpmdW5j
dGlvbjx2b2lkKFJlc291cmNlTG9hZFN0YXRpc3RpY3MmKT4mJik7CiAKQEAgLTc3LDcgKzc2LDcg
QEAgcHJpdmF0ZToKIAogICAgIEhhc2hNYXA8U3RyaW5nLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
PiBtX3Jlc291cmNlU3RhdGlzdGljc01hcDsKICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gbV9k
YXRhQWRkZWRIYW5kbGVyOwotICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcHJpbWFyeURvbWFpbnMsIGJvb2wgdmFsdWUpPiBtX3Nob3VsZFBhcnRpdGlvbkNvb2tp
ZXNGb3JEb21haW5zSGFuZGxlcjsKKyAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9y
PFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpPiBtX3Nob3VsZFBhcnRpdGlvbkNvb2tp
ZXNGb3JEb21haW5zSGFuZGxlcjsKICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gbV93cml0ZVBl
cnNpc3RlbnRTdG9yZUhhbmRsZXI7CiB9OwogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCShyZXZp
c2lvbiAyMTM3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRDb29raWVTdG9yYWdlUGFydGl0aW9u
aW5nRW5hYmxlZChib29sKTsKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklO
RykKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JIb3N0
KGNvbnN0IFN0cmluZyYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2hvdWxkUGFydGl0
aW9uQ29va2llc0Zvckhvc3RzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgYm9vbCB2YWx1ZSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdHMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRvbWFpbnNUb0FkZCk7CiAjZW5kaWYKICNlbGlmIFVTRShTT1VQKQogICAgIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbihTZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxTb3VwTmV0d29ya1Nlc3Np
b24+JiYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAJKHJldmlzaW9u
IDIxMzcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQsMTQgKzE1NCwxNSBA
QCBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkUGFydGl0CiAgICAgcmV0dXJuIG1f
dG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNGb3JDb29raWVQYXJ0aXRpb25pbmcuY29udGFp
bnMoZG9tYWluKTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldFNob3VsZFBh
cnRpdGlvbkNvb2tpZXNGb3JIb3N0cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdHMsIGJvb2wg
dmFsdWUpCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0U2hvdWxkUGFydGl0aW9uQ29v
a2llc0Zvckhvc3RzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9BZGQpCiB7Ci0gICAgaWYgKHZhbHVlKQotICAgICAg
ICBtX3RvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zRm9yQ29va2llUGFydGl0aW9uaW5nLmFk
ZChob3N0cy5iZWdpbigpLCBob3N0cy5lbmQoKSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGZvciAo
YXV0byYgaG9zdCA6IGhvc3RzKQotICAgICAgICAgICAgbV90b3BQcml2YXRlbHlDb250cm9sbGVk
RG9tYWluc0ZvckNvb2tpZVBhcnRpdGlvbmluZy5yZW1vdmUoaG9zdCk7CisgICAgaWYgKCFkb21h
aW5zVG9SZW1vdmUuaXNFbXB0eSgpKSB7CisgICAgICAgIGZvciAoYXV0byYgZG9tYWluIDogZG9t
YWluc1RvUmVtb3ZlKQorICAgICAgICAgICAgbV90b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWlu
c0ZvckNvb2tpZVBhcnRpdGlvbmluZy5yZW1vdmUoZG9tYWluKTsKICAgICB9CisgICAgICAgIAor
ICAgIGlmICghZG9tYWluc1RvQWRkLmlzRW1wdHkoKSkKKyAgICAgICAgbV90b3BQcml2YXRlbHlD
b250cm9sbGVkRG9tYWluc0ZvckNvb2tpZVBhcnRpdGlvbmluZy5hZGQoZG9tYWluc1RvQWRkLmJl
Z2luKCksIGRvbWFpbnNUb0FkZC5lbmQoKSk7CiB9CiAKICNlbmRpZiAvLyBIQVZFKENGTkVUV09S
S19TVE9SQUdFX1BBUlRJVElPTklORykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMzc0OCkK
KysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQz
IEBACisyMDE3LTAzLTEwICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisg
ICAgICAgIFJlc291cmNlIExvYWQgU3RhdGlzdGljczogTW9yZSBlZmZpY2llbnQgbmV0d29yayBw
cm9jZXNzIG1lc3NhZ2luZyArIEZpeCBidWcgaW4gdXNlciBpbnRlcmFjdGlvbiByZXBvcnRpbmcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTUwNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6c2hvdWxkUGFydGl0aW9uQ29va2llc0ZvclRvcFByaXZhdGVseU93bmVkRG9tYWlucyk6
CisgICAgICAgICAgICBOb3cgdGFrZXMgdHdvIHZlY3RvcnMg4oCTIGRvbWFpbnNUb1JlbW92ZSBh
bmQgZG9tYWluc1RvQWRkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46
CisgICAgICAgICAgICBUaGUgbWVzc2FnZSBub3cgdGFrZXMgdHdvIHZlY3RvcnMg4oCTIGRvbWFp
bnNUb1JlbW92ZSBhbmQgZG9tYWluc1RvQWRkLgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpzaG91bGRQYXJ0aXRpb25Db29raWVzRm9yVG9wUHJpdmF0ZWx5T3duZWREb21haW5z
KToKKyAgICAgICAgICAgIE5vdyB0YWtlcyB0d28gdmVjdG9ycyDigJMgZG9tYWluc1RvUmVtb3Zl
IGFuZCBkb21haW5zVG9BZGQuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICAgICBUaGUgbWVzc2FnZSBub3cgdGFrZXMgdHdv
IHZlY3RvcnMg4oCTIGRvbWFpbnNUb1JlbW92ZSBhbmQgZG9tYWluc1RvQWRkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpmaXJlU2hvdWxkUGFy
dGl0aW9uQ29va2llc0hhbmRsZXIpOgorICAgICAgICAgICAgTm93IGNvbnZlcnRzIHRvIHRoZSB0
d28gdmVjdG9ycyBuZWVkZWQgYnkKKyAgICAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZE9i
c2VydmVyOjpmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKS4KKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGFzc2lmeVJlc291cmNlKToK
KyAgICAgICAgICAgIE5vIGxvbmdlciBleHBsaWNpdGx5IGNhbGxzIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCkuCisgICAgICAg
IChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVtb3ZlRGF0YVJlY29y
ZHMpOgorICAgICAgICAgICAgQ2hhbmdlZCB0aGUgb3JkZXIgb2YgdHdvIGJsb2NrcyB0byBub3Qg
YnVpbGQgYSB2ZWN0b3IgaWYgd2UgYXJlIHRvIHJldHVybiBlYXJseS4KKyAgICAgICAgKFdlYktp
dDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNz
VXBkYXRlZCk6CisgICAgICAgICAgICBOb3cgY2FsbHMgV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcigpLgorICAgICAgICAoV2Vi
S2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlZ2lzdGVyU2hhcmVkUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXIpOgorICAgICAgICAgICAgTm93IHRha2VzIGEgaGFuZGxlciB3aXRoIHR3
byB2ZWN0b3JzIOKAkyBkb21haW5zVG9SZW1vdmUgYW5kIGRvbWFpbnNUb0FkZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzaG91bGRQYXJ0aXRpb25Db29raWVzRm9yVG9wUHJpdmF0
ZWx5T3duZWREb21haW5zKToKKyAgICAgICAgICAgIE5vdyB0YWtlcyB0d28gdmVjdG9ycyDigJMg
ZG9tYWluc1RvUmVtb3ZlIGFuZCBkb21haW5zVG9BZGQuCisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OnJlZ2lzdGVyU2hhcmVkUmVzb3VyY2VMb2FkT2JzZXJ2ZXIpOgorICAgICAg
ICAgICAgTm93IHN1Ym1pdHMgYSBoYW5kbGVyIHRoYXQgdGFrZXMgdHdvIHZlY3RvcnMg4oCTIGRv
bWFpbnNUb1JlbW92ZSBhbmQgZG9tYWluc1RvQWRkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisKIDIwMTctMDMtMTAgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgU1BJIHRvIHNldCBO
U1VSTFNlc3Npb25Db25maWd1cmF0aW9uLmFsbG93c0NlbGx1bGFyQWNjZXNzIGZyb20gX1dLUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShyZXZpc2lvbiAyMTM3MjgpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMxMSw5ICszMTEsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRHcmFudFNhbmRib3hF
eHRlCiB9CiAKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKLXZvaWQg
TmV0d29ya1Byb2Nlc3M6OnNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JUb3BQcml2YXRlbHlPd25l
ZERvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMsIGJvb2wgdmFsdWUpCit2b2lk
IE5ldHdvcmtQcm9jZXNzOjpzaG91bGRQYXJ0aXRpb25Db29raWVzRm9yVG9wUHJpdmF0ZWx5T3du
ZWREb21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBkb21haW5zVG9BZGQpCiB7Ci0gICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5zZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9ySG9z
dHMoZG9tYWlucywgdmFsdWUpOworICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0
b3JhZ2VTZXNzaW9uKCkuc2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3RzKGRvbWFpbnNU
b1JlbW92ZSwgZG9tYWluc1RvQWRkKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHJldmlzaW9uIDIxMzcyOCkK
KysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTExNyw3ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBncmFudFNhbmRi
b3hFeHRlbnNpb25zVG9EYXRhYmFzZVByb2Nlc3NGb3JCbG9icyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgZmlsZW5hbWVzLCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKIAog
I2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKQotICAgIHZvaWQgc2hvdWxk
UGFydGl0aW9uQ29va2llc0ZvclRvcFByaXZhdGVseU93bmVkRG9tYWlucyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYsIGJvb2wgdmFsdWUpOworICAgIHZvaWQgc2hvdWxkUGFydGl0aW9uQ29va2llc0Zv
clRvcFByaXZhdGVseU93bmVkRG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1Rv
UmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkKTsKICNlbmRpZgogCiAg
ICAgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBsb2FkVGhyb3R0bGVMYXRlbmN5KCkgY29uc3Qg
eyByZXR1cm4gbV9sb2FkVGhyb3R0bGVMYXRlbmN5OyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgko
cmV2aXNpb24gMjEzNzI4KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTc5LDYgKzc5LDYgQEAgbWVz
c2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZQogICAgIERpZEdyYW50U2FuZGJv
eEV4dGVuc2lvbnNUb0RhdGFiYXNlUHJvY2Vzc0ZvckJsb2JzKHVpbnQ2NF90IHJlcXVlc3RJRCkK
IAogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKQotICAgIFNob3VsZFBh
cnRpdGlvbkNvb2tpZXNGb3JUb3BQcml2YXRlbHlPd25lZERvbWFpbnMoVmVjdG9yPFN0cmluZz4g
dG9wUHJpdmF0ZWx5T3duZWREb21haW5zLCBib29sIHZhbHVlKQorICAgIFNob3VsZFBhcnRpdGlv
bkNvb2tpZXNGb3JUb3BQcml2YXRlbHlPd25lZERvbWFpbnMoVmVjdG9yPFN0cmluZz4gZG9tYWlu
c1RvUmVtb3ZlLCBWZWN0b3I8U3RyaW5nPiBkb21haW5zVG9BZGQpCiAjZW5kaWYKIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjEzNzI4KQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODgsNyArODgsMTAgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWFuYWdlcjo6ZgogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpm
aXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoY29uc3QgU3RyaW5nJiBob3N0TmFtZSwg
Ym9vbCB2YWx1ZSkKIHsKLSAgICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVk
T2JzZXJ2ZXIoKS5maXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoaG9zdE5hbWUsIHZh
bHVlKTsKKyAgICBpZiAodmFsdWUpCisgICAgICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2Vy
dmVyOjpzaGFyZWRPYnNlcnZlcigpLmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcih7
IH0sIHtob3N0TmFtZX0pOworICAgIGVsc2UKKyAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5k
bGVyKHtob3N0TmFtZX0sIHsgfSk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXI6OnNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoYm9vbCB2
YWx1ZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCShyZXZpc2lvbiAyMTM3MjgpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODUsMTEgKzg1LDggQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnNldAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OmNsYXNzaWZ5UmVzb3VyY2UoUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgcmVzb3VyY2VTdGF0aXN0
aWMpCiB7CiAgICAgaWYgKCFyZXNvdXJjZVN0YXRpc3RpYy5pc1ByZXZhbGVudFJlc291cmNlCi0g
ICAgICAgICYmIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXIuaGFzUHJldmFsZW50
UmVzb3VyY2VDaGFyYWN0ZXJpc3RpY3MocmVzb3VyY2VTdGF0aXN0aWMpKSB7CisgICAgICAgICYm
IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXIuaGFzUHJldmFsZW50UmVzb3VyY2VD
aGFyYWN0ZXJpc3RpY3MocmVzb3VyY2VTdGF0aXN0aWMpKQogICAgICAgICByZXNvdXJjZVN0YXRp
c3RpYy5pc1ByZXZhbGVudFJlc291cmNlID0gdHJ1ZTsKLSAgICAgICAgaWYgKCFyZXNvdXJjZVN0
YXRpc3RpYy5oYWRVc2VySW50ZXJhY3Rpb24pCi0gICAgICAgICAgICBtX3Jlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS0+ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKHJlc291cmNl
U3RhdGlzdGljLmhpZ2hMZXZlbERvbWFpbiwgdHJ1ZSk7Ci0gICAgfQogfQogCiB2b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVtb3ZlRGF0YVJlY29yZHMoKQpAQCAtOTcsMTUg
Kzk0LDE1IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZW0KICAgICBp
ZiAobV9kYXRhUmVjb3Jkc1JlbW92YWxQZW5kaW5nKQogICAgICAgICByZXR1cm47CiAKLSAgICBW
ZWN0b3I8U3RyaW5nPiBwcmV2YWxlbnRSZXNvdXJjZURvbWFpbnMgPSBjb3JlU3RvcmUoKS5wcmV2
YWxlbnRSZXNvdXJjZURvbWFpbnNXaXRob3V0VXNlckludGVyYWN0aW9uKCk7Ci0gICAgaWYgKCFw
cmV2YWxlbnRSZXNvdXJjZURvbWFpbnMuc2l6ZSgpKQotICAgICAgICByZXR1cm47Ci0KICAgICBk
b3VibGUgbm93ID0gY3VycmVudFRpbWUoKTsKICAgICBpZiAobV9sYXN0VGltZURhdGFSZWNvcmRz
V2VyZVJlbW92ZWQKICAgICAgICAgJiYgbm93IDwgbV9sYXN0VGltZURhdGFSZWNvcmRzV2VyZVJl
bW92ZWQgKyBtaW5pbXVtVGltZUJldHdlZWVuRGF0YVJlY29yZHNSZW1vdmFsKQogICAgICAgICBy
ZXR1cm47CiAKKyAgICBWZWN0b3I8U3RyaW5nPiBwcmV2YWxlbnRSZXNvdXJjZURvbWFpbnMgPSBj
b3JlU3RvcmUoKS5wcmV2YWxlbnRSZXNvdXJjZURvbWFpbnNXaXRob3V0VXNlckludGVyYWN0aW9u
KCk7CisgICAgaWYgKCFwcmV2YWxlbnRSZXNvdXJjZURvbWFpbnMuc2l6ZSgpKQorICAgICAgICBy
ZXR1cm47CisgICAgCiAgICAgbV9kYXRhUmVjb3Jkc1JlbW92YWxQZW5kaW5nID0gdHJ1ZTsKICAg
ICBtX2xhc3RUaW1lRGF0YVJlY29yZHNXZXJlUmVtb3ZlZCA9IG5vdzsKIApAQCAtMTUzLDYgKzE1
MCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwcm8KIHZvaWQgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRl
ZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mIG9yaWdpbnMp
CiB7CiAgICAgY29yZVN0b3JlKCkubWVyZ2VTdGF0aXN0aWNzKG9yaWdpbnMpOworICAgIGNvcmVT
dG9yZSgpLmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcigpOwogICAgIHByb2Nlc3NT
dGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKIH0KIApAQCAtMTgxLDExICsxNzksMTEgQEAgdm9p
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlZwogICAgIH0pOwogfQogICAgIAot
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlZ2lzdGVyU2hhcmVkUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXIoc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
cmltYXJ5RG9tYWluLCBib29sIHZhbHVlKT4mJiBzaG91bGRQYXJ0aXRpb25Db29raWVzRm9yRG9t
YWluc0hhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVnaXN0
ZXJTaGFyZWRSZXNvdXJjZUxvYWRPYnNlcnZlcihzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFp
bnNUb0FkZCk+JiYgc2hvdWxkUGFydGl0aW9uQ29va2llc0ZvckRvbWFpbnNIYW5kbGVyKQogewog
ICAgIHJlZ2lzdGVyU2hhcmVkUmVzb3VyY2VMb2FkT2JzZXJ2ZXIoKTsKLSAgICBtX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS0+c2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0NhbGxiYWNrKFt0
aGlzLCBzaG91bGRQYXJ0aXRpb25Db29raWVzRm9yRG9tYWluc0hhbmRsZXIgPSBXVEZNb3ZlKHNo
b3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JEb21haW5zSGFuZGxlcildIChjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcHJpbWFyeURvbWFpbnMsIGJvb2wgdmFsdWUpIHsKLSAgICAgICAgc2hvdWxkUGFydGl0
aW9uQ29va2llc0ZvckRvbWFpbnNIYW5kbGVyKHByaW1hcnlEb21haW5zLCB2YWx1ZSk7CisgICAg
bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUtPnNldFNob3VsZFBhcnRpdGlvbkNvb2tpZXND
YWxsYmFjayhbdGhpcywgc2hvdWxkUGFydGl0aW9uQ29va2llc0ZvckRvbWFpbnNIYW5kbGVyXSAo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRvbWFpbnNUb0FkZCkgeworICAgICAgICBzaG91bGRQYXJ0aXRpb25Db29raWVzRm9yRG9t
YWluc0hhbmRsZXIoZG9tYWluc1RvUmVtb3ZlLCBkb21haW5zVG9BZGQpOwogICAgIH0pOwogICAg
IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLT5zZXRXcml0ZVBlcnNpc3RlbnRTdG9yZUNh
bGxiYWNrKFt0aGlzXSgpIHsKICAgICAgICAgd3JpdGVTdG9yZVRvRGlzaygpOwpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuaAkocmV2aXNpb24gMjEzNzI4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02
Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NF
bmFibGVkKGJvb2wpOwogICAgIGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSBj
b25zdDsKICAgICB2b2lkIHJlZ2lzdGVyU2hhcmVkUmVzb3VyY2VMb2FkT2JzZXJ2ZXIoKTsKLSAg
ICB2b2lkIHJlZ2lzdGVyU2hhcmVkUmVzb3VyY2VMb2FkT2JzZXJ2ZXIoc3RkOjpmdW5jdGlvbjx2
b2lkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwcmltYXJ5RG9tYWluLCBib29sIHZhbHVlKT4mJiBz
aG91bGRQYXJ0aXRpb25Db29raWVzRm9yRG9tYWluc0hhbmRsZXIpOworICAgIHZvaWQgcmVnaXN0
ZXJTaGFyZWRSZXNvdXJjZUxvYWRPYnNlcnZlcihzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFp
bnNUb0FkZCk+JiYgc2hvdWxkUGFydGl0aW9uQ29va2llc0ZvckRvbWFpbnNIYW5kbGVyKTsKICAg
ICAKICAgICB2b2lkIHJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYgb3JpZ2lucyk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwCShyZXZpc2lvbiAyMTM3MjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkzLDkg
KzI5Myw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z3JhbnRTYW5kYm94RXgKIH0KIAog
I2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKQotdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpzaG91bGRQYXJ0aXRpb25Db29raWVzRm9yVG9wUHJpdmF0ZWx5T3duZWREb21h
aW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0b3BQcml2YXRlbHlPd25lZERvbWFpbnMsIGJvb2wg
dmFsdWUpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNob3VsZFBhcnRpdGlvbkNvb2tpZXNG
b3JUb3BQcml2YXRlbHlPd25lZERvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNU
b1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCkKIHsKLSAgICBjb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTaG91bGRQYXJ0aXRpb25D
b29raWVzRm9yVG9wUHJpdmF0ZWx5T3duZWREb21haW5zKHRvcFByaXZhdGVseU93bmVkRG9tYWlu
cywgdmFsdWUpLCAwKTsKKyAgICBjb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzOjpTaG91bGRQYXJ0aXRpb25Db29raWVzRm9yVG9wUHJpdmF0ZWx5T3duZWREb21haW5z
KGRvbWFpbnNUb1JlbW92ZSwgZG9tYWluc1RvQWRkKSwgMCk7CiB9CiAjZW5kaWYKIApJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaAkocmV2aXNpb24gMjEzNzI4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsNyAr
MTEwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZERlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lu
cyh1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGdyYW50U2FuZGJveEV4dGVuc2lvbnNU
b0RhdGFiYXNlUHJvY2Vzc0ZvckJsb2JzKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhdGhzKTsKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklO
RykKLSAgICB2b2lkIHNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JUb3BQcml2YXRlbHlPd25lZERv
bWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBib29sIHZhbHVlKTsKKyAgICB2b2lkIHNob3Vs
ZFBhcnRpdGlvbkNvb2tpZXNGb3JUb3BQcml2YXRlbHlPd25lZERvbWFpbnMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNU
b0FkZCk7CiAjZW5kaWYKICAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlKHVpbnQ2NF90IHBh
Z2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBX
ZWJDb3JlOjpTaG91bGRTYW1wbGUpOwogICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRo
UmVzdWx0KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIGRlc2NyaXB0aW9uLCB1aW50MzJfdCByZXN1bHQsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIxMzcyOCkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAgbWVzc2FnZXMgLT4g
TmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZQogICAgIEdyYW50U2FuZGJveEV4dGVuc2lvbnNU
b0RhdGFiYXNlUHJvY2Vzc0ZvckJsb2JzKHVpbnQ2NF90IHJlcXVlc3RJRCwgVmVjdG9yPFN0cmlu
Zz4gcGF0aHMpCiAKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKLSAg
ICBTaG91bGRQYXJ0aXRpb25Db29raWVzRm9yVG9wUHJpdmF0ZWx5T3duZWREb21haW5zKFZlY3Rv
cjxTdHJpbmc+IHRvcFByaXZhdGVseU93bmVkRG9tYWlucywgYm9vbCB2YWx1ZSkKKyAgICBTaG91
bGRQYXJ0aXRpb25Db29raWVzRm9yVG9wUHJpdmF0ZWx5T3duZWREb21haW5zKFZlY3RvcjxTdHJp
bmc+IGRvbWFpbnNUb1JlbW92ZSwgVmVjdG9yPFN0cmluZz4gZG9tYWluc1RvQWRkKQogI2VuZGlm
CiAKICAgICBQcm9jZXNzUmVhZHlUb1N1c3BlbmQoKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAko
cmV2aXNpb24gMjEzNzI4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDU5LDEwICsxMDU5LDEw
IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YUZvclRvcFAKIH0KIAogI2lmIEhB
VkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKQotdm9pZCBXZWJzaXRlRGF0YVN0b3Jl
OjpzaG91bGRQYXJ0aXRpb25Db29raWVzRm9yVG9wUHJpdmF0ZWx5T3duZWREb21haW5zKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiB0b3BQcml2YXRlbHlPd25lZERvbWFpbnMsIGJvb2wgdmFsdWUpCit2
b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JUb3BQcml2YXRl
bHlPd25lZERvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCkKIHsKICAgICBmb3IgKGF1dG8mIHByb2Nl
c3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpCi0gICAgICAgIHByb2Nlc3NQb29sLT5zZW5kVG9OZXR3
b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNob3VsZFBhcnRpdGlvbkNv
b2tpZXNGb3JUb3BQcml2YXRlbHlPd25lZERvbWFpbnModG9wUHJpdmF0ZWx5T3duZWREb21haW5z
LCB2YWx1ZSkpOworICAgICAgICBwcm9jZXNzUG9vbC0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3Mo
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTaG91bGRQYXJ0aXRpb25Db29raWVzRm9yVG9wUHJp
dmF0ZWx5T3duZWREb21haW5zKGRvbWFpbnNUb1JlbW92ZSwgZG9tYWluc1RvQWRkKSk7CiB9CiAj
ZW5kaWYKIApAQCAtMTIzMyw4ICsxMjMzLDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZWdp
c3RlclNoYXJlZFJlcwogICAgIAogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9O
SU5HKQogICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cmVnaXN0ZXJTaGFyZWRSZXNvdXJj
ZUxvYWRPYnNlcnZlcigKLSAgICAgICAgW3RoaXNdIChjb25zdCBWZWN0b3I8U3RyaW5nPiYgdG9w
UHJpdmF0ZWx5T3duZWREb21haW5zLCBib29sIHZhbHVlKSB7Ci0gICAgICAgICAgICB0aGlzLT5z
aG91bGRQYXJ0aXRpb25Db29raWVzRm9yVG9wUHJpdmF0ZWx5T3duZWREb21haW5zKHRvcFByaXZh
dGVseU93bmVkRG9tYWlucywgdmFsdWUpOworICAgICAgICBbdGhpc10gKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9B
ZGQpIHsKKyAgICAgICAgICAgIHRoaXMtPnNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JUb3BQcml2
YXRlbHlPd25lZERvbWFpbnMoZG9tYWluc1RvUmVtb3ZlLCBkb21haW5zVG9BZGQpOwogICAgICAg
ICB9KTsKICNlbHNlCiAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5yZWdpc3RlclNoYXJl
ZFJlc291cmNlTG9hZE9ic2VydmVyKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgJKHJldmlzaW9uIDIx
MzcyOCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTkyLDcgKzkyLDcgQEAgcHVibGljOgogICAgIHZv
aWQgcmVtb3ZlRGF0YUZvclRvcFByaXZhdGVseU93bmVkRG9tYWlucyhPcHRpb25TZXQ8V2Vic2l0
ZURhdGFUeXBlPiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+LCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgdG9wUHJpdmF0ZWx5T3duZWREb21haW5zLCBzdGQ6OmZ1bmN0aW9uPHZvaWQo
VmVjdG9yPFN0cmluZz4pPiBjb21wbGV0aW9uSGFuZGxlcik7CiAKICNpZiBIQVZFKENGTkVUV09S
S19TVE9SQUdFX1BBUlRJVElPTklORykKLSAgICB2b2lkIHNob3VsZFBhcnRpdGlvbkNvb2tpZXNG
b3JUb3BQcml2YXRlbHlPd25lZERvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBib29sIHZh
bHVlKTsKKyAgICB2b2lkIHNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JUb3BQcml2YXRlbHlPd25l
ZERvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCk7CiAjZW5kaWYKICAgICB2b2lkIHJlc29sdmVEaXJl
Y3Rvcmllc0lmTmVjZXNzYXJ5KCk7CiAgICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZEFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlv
bi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304295</attachid>
            <date>2017-03-13 13:54:28 -0700</date>
            <delta_ts>2017-03-13 14:50:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169506-20170313135428.patch</filename>
            <type>text/plain</type>
            <size>30961</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMzcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDE3LTAzLTEzICBKb2huIFdp
bGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQgU3Rh
dGlzdGljczogTW9yZSBlZmZpY2llbnQgbmV0d29yayBwcm9jZXNzIG1lc3NhZ2luZyArIEZpeCBi
dWcgaW4gdXNlciBpbnRlcmFjdGlvbiByZXBvcnRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTUwNgorCisgICAgICAgIFJldmlld2VkIGJ5IEFs
ZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgQ292ZXJlZCBieSBwcmV2aW91cyB0ZXN0IHdoaWNo
IG5vdyBmb2xsb3dzIHRoZSBjb2RlIHBhdGggbW9yZSBjbG9zZWx5IHRvIHdoZW4gcmVwb3J0aW5n
CisgICAgICAgIGhhcHBlbnMgaW4gdGhlIHdlYiBwcm9jZXNzLgorCisgICAgICAgICogbG9hZGVy
L1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9h
ZE9ic2VydmVyOjpsb2dVc2VySW50ZXJhY3Rpb25XaXRoUmVkdWNlZFRpbWVSZXNvbHV0aW9uKToK
KyAgICAgICAgICAgIE5vIGxvbmdlciBleHBsaWNpdGx5IGNhbGxzIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCkuCisgICAgICAg
ICAgICBJbnN0ZWFkIGp1c3QgY2FsbHMgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpmaXJl
RGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKS4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9h
ZE9ic2VydmVyOjpsb2dVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAgICAgVXBkYXRlZCB0byBj
YWxsIHRoZSBuZXcgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpmaXJlU2hvdWxkUGFydGl0
aW9uQ29va2llc0hhbmRsZXIoKS4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2Vy
dmVyOjpmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIpOgorICAgICAgICAgICAgTm93
IHRha2VzIHR3byB2ZWN0b3JzIOKAkyBkb21haW5zVG9SZW1vdmUgYW5kIGRvbWFpbnNUb0FkZC4K
KyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzOjp0b1N0cmluZyk6CisgICAgICAgICAgICBBZGRlZCBib29sZWFuIGZp
ZWxkIGlzTWFya2VkRm9yQ29va2llUGFydGl0aW9uaW5nLgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljczo6bWVyZ2UpOgorICAgICAgICAgICAgQWRkZWQgYm9vbGVhbiBm
aWVsZCBpc01hcmtlZEZvckNvb2tpZVBhcnRpdGlvbmluZy4KKyAgICAgICAgKiBsb2FkZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljcy5oOgorICAgICAgICAgICAgQWRkZWQgYm9vbGVhbiBmaWVsZCBp
c01hcmtlZEZvckNvb2tpZVBhcnRpdGlvbmluZy4KKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6cmVhZERhdGFGcm9tRGVjb2Rlcik6CisgICAgICAgICAgICBOb3cgbWFy
a3Mgc3RhdGlzdGljcyB3aXRoIGlzTWFya2VkRm9yQ29va2llUGFydGl0aW9uaW5nIGJlZm9yZSBz
ZW5kaW5nIHRoZW0gb2ZmIHRvCisgICAgICAgICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcigpLgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTaG91bGRQYXJ0aXRpb25Db29raWVz
Q2FsbGJhY2spOgorICAgICAgICAgICAgTm93IGFjY2VwdHMgYSBoYW5kbGVyIHdpdGggdHdvIHZl
Y3RvcnMuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmZp
cmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcik6CisgICAgICAgICAgICBOb3cgdGhlIG9u
bHkgZXhwb3J0ZWQgdmVyc2lvbiBvZiB0aGlzIGZ1bmN0aW9uIGlzIHRoZSBvbmUgd2l0aG91dCBh
cmd1bWVudHMuCisgICAgICAgICAgICBUaGUgb25lIGludGVybmFsIHRvIFdlYkNvcmUgYWNjZXB0
cyB0d28gdmVjdG9ycyDigJMgZG9tYWluc1RvUmVtb3ZlIGFuZCBkb21haW5zVG9BZGQuCisgICAg
ICAgICAgICBUaGUgZXhwb3J0ZWQgb25lIGdlbmVyYXRlcyB0aGUgdHdvIHZlY3RvcnMgYW5kIHRo
ZW4gY2FsbHMgdGhlIGludGVybmFsIG9uZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6aGFzSGFkUmVjZW50VXNlckludGVyYWN0aW9uKToKKyAgICAgICAg
ICAgIE5vIGxvbmdlciBleHBsaWNpdGx5IGNhbGxzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCkuCisgICAgICAgICogbG9hZGVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
Zi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnNldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JIb3N0cyk6Cisg
ICAgICAgICAgICBOb3cgdGFrZXMgdHdvIHZlY3RvcnMg4oCTIGRvbWFpbnNUb1JlbW92ZSBhbmQg
ZG9tYWluc1RvQWRkLgorCiAyMDE3LTAzLTEwICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBbV2luXSBTY3JvbGxiYXJzIGJ1dHRvbnMgaGF2ZSBpbmNvcnJl
Y3Qgc2l6ZSBpbiBIaURQSS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRPYnNlcnZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZE9ic2VydmVyLmNwcAkocmV2aXNpb24gMjEzNzI4KQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI2LDcg
KzMyNiw2IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1VzZXJJbnRlcmEKICAgICBz
dGF0aXN0aWNzLmhhZFVzZXJJbnRlcmFjdGlvbiA9IHRydWU7CiAgICAgc3RhdGlzdGljcy5tb3N0
UmVjZW50VXNlckludGVyYWN0aW9uID0gbmV3VGltZXN0YW1wOwogCi0gICAgbV9zdG9yZS0+Zmly
ZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKHByaW1hcnlEb21haW5TdHIsIGZhbHNlKTsK
ICAgICBtX3N0b3JlLT5maXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKTsKIH0KIApAQCAtMzQx
LDcgKzM0MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1VzZXJJbnRlcmEKICAg
ICBzdGF0aXN0aWNzLmhhZFVzZXJJbnRlcmFjdGlvbiA9IHRydWU7CiAgICAgc3RhdGlzdGljcy5t
b3N0UmVjZW50VXNlckludGVyYWN0aW9uID0gV1RGOjpjdXJyZW50VGltZSgpOwogCi0gICAgbV9z
dG9yZS0+ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKHByaW1hcnlEb21haW5TdHIs
IGZhbHNlKTsKKyAgICBtX3N0b3JlLT5maXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIo
e3ByaW1hcnlEb21haW5TdHJ9LCB7IH0pOwogfQogCiB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVy
OjpjbGVhclVzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmIHVybCkKQEAgLTQzMiw5ICs0MzEsOSBA
QCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpmaXJlRGF0YU1vZGlmCiAgICAgbV9zdG9yZS0+
ZmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihjb25zdCBTdHJpbmcmIGhv
c3ROYW1lLCBib29sIHZhbHVlKQordm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6ZmlyZVNob3Vs
ZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9S
ZW1vdmUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9BZGQpCiB7Ci0gICAgbV9zdG9y
ZS0+ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKHByaW1hcnlEb21haW4oaG9zdE5h
bWUpLCB2YWx1ZSk7CisgICAgbV9zdG9yZS0+ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5k
bGVyKGRvbWFpbnNUb1JlbW92ZSwgZG9tYWluc1RvQWRkKTsKIH0KIAogU3RyaW5nIFJlc291cmNl
TG9hZE9ic2VydmVyOjpwcmltYXJ5RG9tYWluKGNvbnN0IFVSTCYgdXJsKQpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgJKHJldmlzaW9uIDIxMzcy
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldFJlZHVjZWRUaW1lc3RhbXBSZXNvbHV0aW9uKGRvdWJsZSBzZWNvbmRzKTsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCk7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoY29u
c3QgU3RyaW5nJiBwcmltYXJ5RG9tYWluLCBib29sIHZhbHVlKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRk
KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU+IHN0YXRpc3RpY3NTdG9yZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U3RhdGlz
dGljc1N0b3JlKFJlZjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+JiYpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAkocmV2
aXNpb24gMjEzNzI4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTQsNiArMjk0LDEwIEBAIFN0cmluZyBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzOjp0b1N0cmluZygKICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihk
YXRhUmVjb3Jkc1JlbW92ZWQpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogCisgICAgLy8g
SW4tbWVtb3J5IG9ubHkKKyAgICBhcHBlbmRCb29sZWFuKGJ1aWxkZXIsICJpc01hcmtlZEZvckNv
b2tpZVBhcnRpdGlvbmluZyIsIGlzTWFya2VkRm9yQ29va2llUGFydGl0aW9uaW5nKTsKKyAgICBi
dWlsZGVyLmFwcGVuZCgnXG4nKTsKKwogICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOwogCiAgICAg
cmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKQEAgLTM1Myw2ICszNTcsOSBAQCB2b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3M6Om1lcmdlKGNvbnN0CiAgICAgbWVyZ2VIYXNoQ291bnRlZFNldChy
ZWRpcmVjdGVkVG9PdGhlclByZXZhbGVudFJlc291cmNlT3JpZ2lucywgb3RoZXIucmVkaXJlY3Rl
ZFRvT3RoZXJQcmV2YWxlbnRSZXNvdXJjZU9yaWdpbnMpOwogICAgIGlzUHJldmFsZW50UmVzb3Vy
Y2UgfD0gb3RoZXIuaXNQcmV2YWxlbnRSZXNvdXJjZTsKICAgICBkYXRhUmVjb3Jkc1JlbW92ZWQg
Kz0gb3RoZXIuZGF0YVJlY29yZHNSZW1vdmVkOworICAgIAorICAgIC8vIEluLW1lbW9yeSBvbmx5
CisgICAgaXNNYXJrZWRGb3JDb29raWVQYXJ0aXRpb25pbmcgfD0gb3RoZXIuaXNNYXJrZWRGb3JD
b29raWVQYXJ0aXRpb25pbmc7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaAkocmV2aXNpb24gMjEzNzI4KQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaAkod29ya2luZyBjb3B5KQpA
QCAtODcsNiArODcsOSBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyB7CiAgICAgSGFz
aENvdW50ZWRTZXQ8U3RyaW5nPiByZWRpcmVjdGVkVG9PdGhlclByZXZhbGVudFJlc291cmNlT3Jp
Z2luczsKICAgICBib29sIGlzUHJldmFsZW50UmVzb3VyY2UgeyBmYWxzZSB9OwogICAgIHVuc2ln
bmVkIGRhdGFSZWNvcmRzUmVtb3ZlZCB7IDAgfTsKKworICAgIC8vIEluLW1lbW9yeSBvbmx5Cisg
ICAgYm9vbCBpc01hcmtlZEZvckNvb2tpZVBhcnRpdGlvbmluZyB7IGZhbHNlIH07CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAkocmV2aXNpb24gMjEzNzI4KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwMywxMiArMTAzLDE0IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpyZWFkRGEKICAgICBWZWN0b3I8U3RyaW5nPiBwcmV2YWxlbnRSZXNvdXJj
ZURvbWFpbnNXaXRob3V0VXNlckludGVyYWN0aW9uOwogICAgIHByZXZhbGVudFJlc291cmNlRG9t
YWluc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24ucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsb2FkZWRT
dGF0aXN0aWNzLnNpemUoKSk7CiAgICAgZm9yIChhdXRvJiBzdGF0aXN0aWNzIDogbG9hZGVkU3Rh
dGlzdGljcykgewotICAgICAgICBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5zZXQoc3RhdGlzdGlj
cy5oaWdoTGV2ZWxEb21haW4sIHN0YXRpc3RpY3MpOwotICAgICAgICBpZiAoc3RhdGlzdGljcy5p
c1ByZXZhbGVudFJlc291cmNlICYmICFzdGF0aXN0aWNzLmhhZFVzZXJJbnRlcmFjdGlvbikKKyAg
ICAgICAgaWYgKHN0YXRpc3RpY3MuaXNQcmV2YWxlbnRSZXNvdXJjZSAmJiAhc3RhdGlzdGljcy5o
YWRVc2VySW50ZXJhY3Rpb24pIHsKICAgICAgICAgICAgIHByZXZhbGVudFJlc291cmNlRG9tYWlu
c1dpdGhvdXRVc2VySW50ZXJhY3Rpb24udW5jaGVja2VkQXBwZW5kKHN0YXRpc3RpY3MuaGlnaExl
dmVsRG9tYWluKTsKKyAgICAgICAgICAgIHN0YXRpc3RpY3MuaXNNYXJrZWRGb3JDb29raWVQYXJ0
aXRpb25pbmcgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIG1fcmVzb3VyY2VTdGF0aXN0aWNz
TWFwLnNldChzdGF0aXN0aWNzLmhpZ2hMZXZlbERvbWFpbiwgc3RhdGlzdGljcyk7CiAgICAgfQot
ICAgIAotICAgIGZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihwcmV2YWxlbnRSZXNv
dXJjZURvbWFpbnNXaXRob3V0VXNlckludGVyYWN0aW9uLCB0cnVlKTsKKworICAgIGZpcmVTaG91
bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcih7IH0sIHByZXZhbGVudFJlc291cmNlRG9tYWluc1dp
dGhvdXRVc2VySW50ZXJhY3Rpb24pOwogfQogCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6Y2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoKQpAQCAtMTU1LDcgKzE1Nyw3IEBAIHZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXROb3QKICAgICBtX2RhdGFBZGRlZEhh
bmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6c2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0NhbGxiYWNrKHN0ZDo6ZnVuY3Rpb248
dm9pZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJpbWFyeURvbWFpbnMsIGJvb2wgdmFsdWUpPiYm
IGhhbmRsZXIpCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0U2hvdWxkUGFy
dGl0aW9uQ29va2llc0NhbGxiYWNrKHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRk
KT4mJiBoYW5kbGVyKQogewogICAgIG1fc2hvdWxkUGFydGl0aW9uQ29va2llc0ZvckRvbWFpbnNI
YW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKTsKIH0KQEAgLTE3MSwxNyArMTczLDMyIEBAIHZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpmaXJlRGEKICAgICAgICAgbV9kYXRhQWRkZWRI
YW5kbGVyKCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpmaXJlU2hv
dWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoY29uc3QgU3RyaW5nJiBwcmltYXJ5RG9tYWluLCBi
b29sIHZhbHVlKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmZpcmVTaG91bGRQ
YXJ0aXRpb25Db29raWVzSGFuZGxlcigpCiB7Ci0gICAgVmVjdG9yPFN0cmluZz4gZG9tYWluVmVj
dG9yOwotICAgIGRvbWFpblZlY3Rvci5hcHBlbmQocHJpbWFyeURvbWFpbik7Ci0gICAgZmlyZVNo
b3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKGRvbWFpblZlY3RvciwgdmFsdWUpOworICAgIFZl
Y3RvcjxTdHJpbmc+IGRvbWFpbnNUb1JlbW92ZTsKKyAgICBWZWN0b3I8U3RyaW5nPiBkb21haW5z
VG9BZGQ7CisgICAgCisgICAgZm9yIChhdXRvJiByZXNvdXJjZVN0YXRpc3RpYyA6IG1fcmVzb3Vy
Y2VTdGF0aXN0aWNzTWFwLnZhbHVlcygpKSB7CisgICAgICAgIGJvb2wgcmVjZW50VXNlckludGVy
YWN0aW9uID0gaGFzSGFkUmVjZW50VXNlckludGVyYWN0aW9uKHJlc291cmNlU3RhdGlzdGljKTsK
KyAgICAgICAgaWYgKHJlc291cmNlU3RhdGlzdGljLmlzTWFya2VkRm9yQ29va2llUGFydGl0aW9u
aW5nICYmIHJlY2VudFVzZXJJbnRlcmFjdGlvbikgeworICAgICAgICAgICAgcmVzb3VyY2VTdGF0
aXN0aWMuaXNNYXJrZWRGb3JDb29raWVQYXJ0aXRpb25pbmcgPSBmYWxzZTsKKyAgICAgICAgICAg
IGRvbWFpbnNUb1JlbW92ZS5hcHBlbmQocmVzb3VyY2VTdGF0aXN0aWMuaGlnaExldmVsRG9tYWlu
KTsKKyAgICAgICAgfSBlbHNlIGlmICghcmVzb3VyY2VTdGF0aXN0aWMuaXNNYXJrZWRGb3JDb29r
aWVQYXJ0aXRpb25pbmcgJiYgIXJlY2VudFVzZXJJbnRlcmFjdGlvbiAmJiByZXNvdXJjZVN0YXRp
c3RpYy5pc1ByZXZhbGVudFJlc291cmNlKSB7CisgICAgICAgICAgICByZXNvdXJjZVN0YXRpc3Rp
Yy5pc01hcmtlZEZvckNvb2tpZVBhcnRpdGlvbmluZyA9IHRydWU7CisgICAgICAgICAgICBkb21h
aW5zVG9BZGQuYXBwZW5kKHJlc291cmNlU3RhdGlzdGljLmhpZ2hMZXZlbERvbWFpbik7CisgICAg
ICAgIH0KKyAgICB9CisgICAgCisgICAgZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVy
KGRvbWFpbnNUb1JlbW92ZSwgZG9tYWluc1RvQWRkKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcihjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcHJpbWFyeURvbWFpbnMsIGJvb2wgdmFsdWUpCit2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBkb21haW5zVG9BZGQpCiB7CisgICAgaWYgKGRvbWFpbnNUb1JlbW92ZS5pc0VtcHR5KCkgJiYg
ZG9tYWluc1RvQWRkLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKG1fc2hv
dWxkUGFydGl0aW9uQ29va2llc0ZvckRvbWFpbnNIYW5kbGVyKQotICAgICAgICBtX3Nob3VsZFBh
cnRpdGlvbkNvb2tpZXNGb3JEb21haW5zSGFuZGxlcihwcmltYXJ5RG9tYWlucywgdmFsdWUpOwor
ICAgICAgICBtX3Nob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JEb21haW5zSGFuZGxlcihkb21haW5z
VG9SZW1vdmUsIGRvbWFpbnNUb0FkZCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKGRvdWJsZSBzZWNvbmRzKQpAQCAt
MjA4LDkgKzIyNSw2IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNIYWQK
ICAgICAgICAgcmVzb3VyY2VTdGF0aXN0aWMubW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiA9IDA7
CiAgICAgICAgIHJlc291cmNlU3RhdGlzdGljLmhhZFVzZXJJbnRlcmFjdGlvbiA9IGZhbHNlOwog
Ci0gICAgICAgIGlmIChyZXNvdXJjZVN0YXRpc3RpYy5pc1ByZXZhbGVudFJlc291cmNlKQotICAg
ICAgICAgICAgZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKHJlc291cmNlU3RhdGlz
dGljLmhpZ2hMZXZlbERvbWFpbiwgdHJ1ZSk7Ci0KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaAkocmV2aXNpb24gMjEzNzI4KQorKysgU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCwx
NCArNTgsMTMgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzPiB0YWtlU3RhdGlzdGljcygpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXROb3RpZmljYXRpb25DYWxsYmFjayhzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4pOwotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0NhbGxiYWNrKHN0ZDo6
ZnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJpbWFyeURvbWFpbnMsIGJvb2wg
dmFsdWUpPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNob3VsZFBhcnRpdGlvbkNv
b2tpZXNDYWxsYmFjayhzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRv
bWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCk+JiYpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0V3JpdGVQZXJzaXN0ZW50U3RvcmVDYWxsYmFjayhz
dGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJik7CiAKLQogICAgIHZvaWQgZmlyZURhdGFNb2RpZmljYXRp
b25IYW5kbGVyKCk7CiAgICAgdm9pZCBzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKGRvdWJs
ZSBzZWNvbmRzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpcmVTaG91bGRQYXJ0aXRpb25D
b29raWVzSGFuZGxlcihjb25zdCBTdHJpbmcmIHByaW1hcnlEb21haW4sIGJvb2wgdmFsdWUpOwot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVy
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwcmltYXJ5RG9tYWluLCBib29sIHZhbHVlKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcigpOwor
ICAgIHZvaWQgZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9B
ZGQpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwcm9jZXNzU3RhdGlzdGljcyhzdGQ6OmZ1
bmN0aW9uPHZvaWQoUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpPiYmKTsKIApAQCAtNzcsNyArNzYs
NyBAQCBwcml2YXRlOgogCiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3M+IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwOwogICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBt
X2RhdGFBZGRlZEhhbmRsZXI7Ci0gICAgc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBwcmltYXJ5RG9tYWlucywgYm9vbCB2YWx1ZSk+IG1fc2hvdWxkUGFydGl0aW9uQ29v
a2llc0ZvckRvbWFpbnNIYW5kbGVyOworICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBWZWN0
b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik+IG1fc2hvdWxkUGFydGl0aW9uQ29v
a2llc0ZvckRvbWFpbnNIYW5kbGVyOwogICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBtX3dyaXRl
UGVyc2lzdGVudFN0b3JlSGFuZGxlcjsKIH07CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgJKHJl
dmlzaW9uIDIxMzcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldENvb2tpZVN0b3JhZ2VQYXJ0aXRp
b25pbmdFbmFibGVkKGJvb2wpOwogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9O
SU5HKQogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhv
c3QoY29uc3QgU3RyaW5nJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTaG91bGRQYXJ0
aXRpb25Db29raWVzRm9ySG9zdHMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBib29sIHZhbHVlKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JIb3N0
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZG9tYWluc1RvQWRkKTsKICNlbmRpZgogI2VsaWYgVVNFKFNPVVApCiAgICAgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uKFNlc3Npb25JRCwgc3RkOjp1bmlxdWVfcHRyPFNvdXBOZXR3b3JrU2Vz
c2lvbj4mJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAkocmV2aXNp
b24gMjEzNzI4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NCwxNCArMTU0LDE1
IEBAIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRQYXJ0aXQKICAgICByZXR1cm4g
bV90b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluc0ZvckNvb2tpZVBhcnRpdGlvbmluZy5jb250
YWlucyhkb21haW4pOwogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0U2hvdWxk
UGFydGl0aW9uQ29va2llc0Zvckhvc3RzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0cywgYm9v
bCB2YWx1ZSkKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRTaG91bGRQYXJ0aXRpb25D
b29raWVzRm9ySG9zdHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCkKIHsKLSAgICBpZiAodmFsdWUpCi0gICAg
ICAgIG1fdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNGb3JDb29raWVQYXJ0aXRpb25pbmcu
YWRkKGhvc3RzLmJlZ2luKCksIGhvc3RzLmVuZCgpKTsKLSAgICBlbHNlIHsKLSAgICAgICAgZm9y
IChhdXRvJiBob3N0IDogaG9zdHMpCi0gICAgICAgICAgICBtX3RvcFByaXZhdGVseUNvbnRyb2xs
ZWREb21haW5zRm9yQ29va2llUGFydGl0aW9uaW5nLnJlbW92ZShob3N0KTsKKyAgICBpZiAoIWRv
bWFpbnNUb1JlbW92ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBkb21haW4gOiBk
b21haW5zVG9SZW1vdmUpCisgICAgICAgICAgICBtX3RvcFByaXZhdGVseUNvbnRyb2xsZWREb21h
aW5zRm9yQ29va2llUGFydGl0aW9uaW5nLnJlbW92ZShkb21haW4pOwogICAgIH0KKyAgICAgICAg
CisgICAgaWYgKCFkb21haW5zVG9BZGQuaXNFbXB0eSgpKQorICAgICAgICBtX3RvcFByaXZhdGVs
eUNvbnRyb2xsZWREb21haW5zRm9yQ29va2llUGFydGl0aW9uaW5nLmFkZChkb21haW5zVG9BZGQu
YmVnaW4oKSwgZG9tYWluc1RvQWRkLmVuZCgpKTsKIH0KIAogI2VuZGlmIC8vIEhBVkUoQ0ZORVRX
T1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKQpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMjEzODY1
KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
NDMgQEAKKzIwMTctMDMtMTMgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzOiBNb3JlIGVmZmljaWVudCBuZXR3b3Jr
IHByb2Nlc3MgbWVzc2FnaW5nICsgRml4IGJ1ZyBpbiB1c2VyIGludGVyYWN0aW9uIHJlcG9ydGlu
ZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NTA2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JUb3BQcml2YXRlbHlPd25lZERvbWFp
bnMpOgorICAgICAgICAgICAgTm93IHRha2VzIHR3byB2ZWN0b3JzIOKAkyBkb21haW5zVG9SZW1v
dmUgYW5kIGRvbWFpbnNUb0FkZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluOgorICAgICAgICAgICAgVGhlIG1lc3NhZ2Ugbm93IHRha2VzIHR3byB2ZWN0b3JzIOKAkyBk
b21haW5zVG9SZW1vdmUgYW5kIGRvbWFpbnNUb0FkZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3NQcm94eTo6c2hvdWxkUGFydGl0aW9uQ29va2llc0ZvclRvcFByaXZhdGVseU93bmVkRG9t
YWlucyk6CisgICAgICAgICAgICBOb3cgdGFrZXMgdHdvIHZlY3RvcnMg4oCTIGRvbWFpbnNUb1Jl
bW92ZSBhbmQgZG9tYWluc1RvQWRkLgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAgICAgVGhlIG1lc3NhZ2Ugbm93IHRha2Vz
IHR3byB2ZWN0b3JzIOKAkyBkb21haW5zVG9SZW1vdmUgYW5kIGRvbWFpbnNUb0FkZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6ZmlyZVNob3Vs
ZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKToKKyAgICAgICAgICAgIE5vdyBjb252ZXJ0cyB0byB0
aGUgdHdvIHZlY3RvcnMgbmVlZGVkIGJ5CisgICAgICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKCkuCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xhc3NpZnlSZXNvdXJj
ZSk6CisgICAgICAgICAgICBObyBsb25nZXIgZXhwbGljaXRseSBjYWxscyBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcigpLgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlbW92ZURhdGFS
ZWNvcmRzKToKKyAgICAgICAgICAgIENoYW5nZWQgdGhlIG9yZGVyIG9mIHR3byBibG9ja3MgdG8g
bm90IGJ1aWxkIGEgdmVjdG9yIGlmIHdlIGFyZSB0byByZXR1cm4gZWFybHkuCisgICAgICAgIChX
ZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlz
dGljc1VwZGF0ZWQpOgorICAgICAgICAgICAgTm93IGNhbGxzIFdlYkNvcmU6OlJlc291cmNlTG9h
ZE9ic2VydmVyOjpmaXJlU2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoKS4KKyAgICAgICAg
KFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZWdpc3RlclNoYXJlZFJl
c291cmNlTG9hZE9ic2VydmVyKToKKyAgICAgICAgICAgIE5vdyB0YWtlcyBhIGhhbmRsZXIgd2l0
aCB0d28gdmVjdG9ycyDigJMgZG9tYWluc1RvUmVtb3ZlIGFuZCBkb21haW5zVG9BZGQuCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2hvdWxkUGFydGl0aW9uQ29va2llc0ZvclRvcFBy
aXZhdGVseU93bmVkRG9tYWlucyk6CisgICAgICAgICAgICBOb3cgdGFrZXMgdHdvIHZlY3RvcnMg
4oCTIGRvbWFpbnNUb1JlbW92ZSBhbmQgZG9tYWluc1RvQWRkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlOjpyZWdpc3RlclNoYXJlZFJlc291cmNlTG9hZE9ic2VydmVyKToKKyAg
ICAgICAgICAgIE5vdyBzdWJtaXRzIGEgaGFuZGxlciB0aGF0IHRha2VzIHR3byB2ZWN0b3JzIOKA
kyBkb21haW5zVG9SZW1vdmUgYW5kIGRvbWFpbnNUb0FkZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorCiAyMDE3LTAzLTEzICBBbmRlcnMgQ2Fy
bHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IG1vcmUgYnVpbGQgd2Fy
bmluZ3MuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCShyZXZpc2lvbiAyMTM3MjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxMSw5ICszMTEs
OSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRHcmFudFNhbmRib3hFeHRlCiB9CiAKICNpZiBI
QVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKLXZvaWQgTmV0d29ya1Byb2Nlc3M6
OnNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JUb3BQcml2YXRlbHlPd25lZERvbWFpbnMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGRvbWFpbnMsIGJvb2wgdmFsdWUpCit2b2lkIE5ldHdvcmtQcm9jZXNz
OjpzaG91bGRQYXJ0aXRpb25Db29raWVzRm9yVG9wUHJpdmF0ZWx5T3duZWREb21haW5zKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBk
b21haW5zVG9BZGQpCiB7Ci0gICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFn
ZVNlc3Npb24oKS5zZXRTaG91bGRQYXJ0aXRpb25Db29raWVzRm9ySG9zdHMoZG9tYWlucywgdmFs
dWUpOworICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCku
c2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0Zvckhvc3RzKGRvbWFpbnNUb1JlbW92ZSwgZG9tYWlu
c1RvQWRkKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHJldmlzaW9uIDIxMzcyOCkKKysrIFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEx
Nyw3ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBncmFudFNhbmRib3hFeHRlbnNpb25zVG9E
YXRhYmFzZVByb2Nlc3NGb3JCbG9icyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBG
dW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKIAogI2lmIEhBVkUoQ0ZORVRX
T1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKQotICAgIHZvaWQgc2hvdWxkUGFydGl0aW9uQ29va2ll
c0ZvclRvcFByaXZhdGVseU93bmVkRG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGJvb2wg
dmFsdWUpOworICAgIHZvaWQgc2hvdWxkUGFydGl0aW9uQ29va2llc0ZvclRvcFByaXZhdGVseU93
bmVkRG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkKTsKICNlbmRpZgogCiAgICAgc3RkOjpjaHJvbm86
Om1pbGxpc2Vjb25kcyBsb2FkVGhyb3R0bGVMYXRlbmN5KCkgY29uc3QgeyByZXR1cm4gbV9sb2Fk
VGhyb3R0bGVMYXRlbmN5OyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjEzNzI4
KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTc5LDYgKzc5LDYgQEAgbWVzc2FnZXMgLT4gTmV0d29y
a1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZQogICAgIERpZEdyYW50U2FuZGJveEV4dGVuc2lvbnNUb0Rh
dGFiYXNlUHJvY2Vzc0ZvckJsb2JzKHVpbnQ2NF90IHJlcXVlc3RJRCkKIAogI2lmIEhBVkUoQ0ZO
RVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKQotICAgIFNob3VsZFBhcnRpdGlvbkNvb2tpZXNG
b3JUb3BQcml2YXRlbHlPd25lZERvbWFpbnMoVmVjdG9yPFN0cmluZz4gdG9wUHJpdmF0ZWx5T3du
ZWREb21haW5zLCBib29sIHZhbHVlKQorICAgIFNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JUb3BQ
cml2YXRlbHlPd25lZERvbWFpbnMoVmVjdG9yPFN0cmluZz4gZG9tYWluc1RvUmVtb3ZlLCBWZWN0
b3I8U3RyaW5nPiBkb21haW5zVG9BZGQpCiAjZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NN
YW5hZ2VyLmNwcAkocmV2aXNpb24gMjEzNzI4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODgsNyArODgsMTAgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcjo6Zgog
CiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOjpmaXJlU2hvdWxkUGFydGl0
aW9uQ29va2llc0hhbmRsZXIoY29uc3QgU3RyaW5nJiBob3N0TmFtZSwgYm9vbCB2YWx1ZSkKIHsK
LSAgICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5maXJl
U2hvdWxkUGFydGl0aW9uQ29va2llc0hhbmRsZXIoaG9zdE5hbWUsIHZhbHVlKTsKKyAgICBpZiAo
dmFsdWUpCisgICAgICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNl
cnZlcigpLmZpcmVTaG91bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcih7IH0sIHtob3N0TmFtZX0p
OworICAgIGVsc2UKKyAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJl
ZE9ic2VydmVyKCkuZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKHtob3N0TmFtZX0s
IHsgfSk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI6OnNldE5v
dGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoYm9vbCB2YWx1ZSkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwCShyZXZpc2lvbiAyMTM3MjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODUsMTEgKzg1LDggQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnNldAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsYXNzaWZ5UmVzb3Vy
Y2UoUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgcmVzb3VyY2VTdGF0aXN0aWMpCiB7CiAgICAgaWYg
KCFyZXNvdXJjZVN0YXRpc3RpYy5pc1ByZXZhbGVudFJlc291cmNlCi0gICAgICAgICYmIG1fcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXIuaGFzUHJldmFsZW50UmVzb3VyY2VDaGFyYWN0
ZXJpc3RpY3MocmVzb3VyY2VTdGF0aXN0aWMpKSB7CisgICAgICAgICYmIG1fcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0NsYXNzaWZpZXIuaGFzUHJldmFsZW50UmVzb3VyY2VDaGFyYWN0ZXJpc3RpY3Mo
cmVzb3VyY2VTdGF0aXN0aWMpKQogICAgICAgICByZXNvdXJjZVN0YXRpc3RpYy5pc1ByZXZhbGVu
dFJlc291cmNlID0gdHJ1ZTsKLSAgICAgICAgaWYgKCFyZXNvdXJjZVN0YXRpc3RpYy5oYWRVc2Vy
SW50ZXJhY3Rpb24pCi0gICAgICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS0+
ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKHJlc291cmNlU3RhdGlzdGljLmhpZ2hM
ZXZlbERvbWFpbiwgdHJ1ZSk7Ci0gICAgfQogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6cmVtb3ZlRGF0YVJlY29yZHMoKQpAQCAtOTcsMTUgKzk0LDE1IEBAIHZvaWQg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZW0KICAgICBpZiAobV9kYXRhUmVjb3Jk
c1JlbW92YWxQZW5kaW5nKQogICAgICAgICByZXR1cm47CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBw
cmV2YWxlbnRSZXNvdXJjZURvbWFpbnMgPSBjb3JlU3RvcmUoKS5wcmV2YWxlbnRSZXNvdXJjZURv
bWFpbnNXaXRob3V0VXNlckludGVyYWN0aW9uKCk7Ci0gICAgaWYgKCFwcmV2YWxlbnRSZXNvdXJj
ZURvbWFpbnMuc2l6ZSgpKQotICAgICAgICByZXR1cm47Ci0KICAgICBkb3VibGUgbm93ID0gY3Vy
cmVudFRpbWUoKTsKICAgICBpZiAobV9sYXN0VGltZURhdGFSZWNvcmRzV2VyZVJlbW92ZWQKICAg
ICAgICAgJiYgbm93IDwgbV9sYXN0VGltZURhdGFSZWNvcmRzV2VyZVJlbW92ZWQgKyBtaW5pbXVt
VGltZUJldHdlZWVuRGF0YVJlY29yZHNSZW1vdmFsKQogICAgICAgICByZXR1cm47CiAKKyAgICBW
ZWN0b3I8U3RyaW5nPiBwcmV2YWxlbnRSZXNvdXJjZURvbWFpbnMgPSBjb3JlU3RvcmUoKS5wcmV2
YWxlbnRSZXNvdXJjZURvbWFpbnNXaXRob3V0VXNlckludGVyYWN0aW9uKCk7CisgICAgaWYgKCFw
cmV2YWxlbnRSZXNvdXJjZURvbWFpbnMuc2l6ZSgpKQorICAgICAgICByZXR1cm47CisgICAgCiAg
ICAgbV9kYXRhUmVjb3Jkc1JlbW92YWxQZW5kaW5nID0gdHJ1ZTsKICAgICBtX2xhc3RUaW1lRGF0
YVJlY29yZHNXZXJlUmVtb3ZlZCA9IG5vdzsKIApAQCAtMTUzLDYgKzE1MCw3IEBAIHZvaWQgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwcm8KIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChjb25zdCBWZWN0b3I8
V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mIG9yaWdpbnMpCiB7CiAgICAgY29yZVN0
b3JlKCkubWVyZ2VTdGF0aXN0aWNzKG9yaWdpbnMpOworICAgIGNvcmVTdG9yZSgpLmZpcmVTaG91
bGRQYXJ0aXRpb25Db29raWVzSGFuZGxlcigpOwogICAgIHByb2Nlc3NTdGF0aXN0aWNzQW5kRGF0
YVJlY29yZHMoKTsKIH0KIApAQCAtMTgxLDExICsxNzksMTEgQEAgdm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OnJlZwogICAgIH0pOwogfQogICAgIAotdm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlZ2lzdGVyU2hhcmVkUmVzb3VyY2VMb2FkT2JzZXJ2ZXIo
c3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwcmltYXJ5RG9tYWluLCBi
b29sIHZhbHVlKT4mJiBzaG91bGRQYXJ0aXRpb25Db29raWVzRm9yRG9tYWluc0hhbmRsZXIpCit2
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVnaXN0ZXJTaGFyZWRSZXNvdXJj
ZUxvYWRPYnNlcnZlcihzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRv
bWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCk+JiYgc2hv
dWxkUGFydGl0aW9uQ29va2llc0ZvckRvbWFpbnNIYW5kbGVyKQogewogICAgIHJlZ2lzdGVyU2hh
cmVkUmVzb3VyY2VMb2FkT2JzZXJ2ZXIoKTsKLSAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS0+c2V0U2hvdWxkUGFydGl0aW9uQ29va2llc0NhbGxiYWNrKFt0aGlzLCBzaG91bGRQYXJ0
aXRpb25Db29raWVzRm9yRG9tYWluc0hhbmRsZXIgPSBXVEZNb3ZlKHNob3VsZFBhcnRpdGlvbkNv
b2tpZXNGb3JEb21haW5zSGFuZGxlcildIChjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJpbWFyeURv
bWFpbnMsIGJvb2wgdmFsdWUpIHsKLSAgICAgICAgc2hvdWxkUGFydGl0aW9uQ29va2llc0ZvckRv
bWFpbnNIYW5kbGVyKHByaW1hcnlEb21haW5zLCB2YWx1ZSk7CisgICAgbV9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUtPnNldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNDYWxsYmFjayhbdGhpcywg
c2hvdWxkUGFydGl0aW9uQ29va2llc0ZvckRvbWFpbnNIYW5kbGVyID0gV1RGTW92ZShzaG91bGRQ
YXJ0aXRpb25Db29raWVzRm9yRG9tYWluc0hhbmRsZXIpXSAoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCkgewor
ICAgICAgICBzaG91bGRQYXJ0aXRpb25Db29raWVzRm9yRG9tYWluc0hhbmRsZXIoZG9tYWluc1Rv
UmVtb3ZlLCBkb21haW5zVG9BZGQpOwogICAgIH0pOwogICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLT5zZXRXcml0ZVBlcnNpc3RlbnRTdG9yZUNhbGxiYWNrKFt0aGlzXSgpIHsKICAg
ICAgICAgd3JpdGVTdG9yZVRvRGlzaygpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAkocmV2aXNp
b24gMjEzNzI4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wpOwogICAgIGJv
b2wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSBjb25zdDsKICAgICB2b2lkIHJlZ2lz
dGVyU2hhcmVkUmVzb3VyY2VMb2FkT2JzZXJ2ZXIoKTsKLSAgICB2b2lkIHJlZ2lzdGVyU2hhcmVk
UmVzb3VyY2VMb2FkT2JzZXJ2ZXIoc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwcmltYXJ5RG9tYWluLCBib29sIHZhbHVlKT4mJiBzaG91bGRQYXJ0aXRpb25Db29raWVz
Rm9yRG9tYWluc0hhbmRsZXIpOworICAgIHZvaWQgcmVnaXN0ZXJTaGFyZWRSZXNvdXJjZUxvYWRP
YnNlcnZlcihzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNU
b1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCk+JiYgc2hvdWxkUGFy
dGl0aW9uQ29va2llc0ZvckRvbWFpbnNIYW5kbGVyKTsKICAgICAKICAgICB2b2lkIHJlc291cmNl
TG9hZFN0YXRpc3RpY3NVcGRhdGVkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzPiYgb3JpZ2lucyk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAy
MTM3MjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkzLDkgKzI5Myw5IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3NQcm94eTo6Z3JhbnRTYW5kYm94RXgKIH0KIAogI2lmIEhBVkUoQ0ZORVRXT1JLX1NU
T1JBR0VfUEFSVElUSU9OSU5HKQotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzaG91bGRQYXJ0
aXRpb25Db29raWVzRm9yVG9wUHJpdmF0ZWx5T3duZWREb21haW5zKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiB0b3BQcml2YXRlbHlPd25lZERvbWFpbnMsIGJvb2wgdmFsdWUpCit2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OnNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JUb3BQcml2YXRlbHlPd25lZERv
bWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGRvbWFpbnNUb0FkZCkKIHsKLSAgICBjb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzOjpTaG91bGRQYXJ0aXRpb25Db29raWVzRm9yVG9wUHJpdmF0ZWx5
T3duZWREb21haW5zKHRvcFByaXZhdGVseU93bmVkRG9tYWlucywgdmFsdWUpLCAwKTsKKyAgICBj
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTaG91bGRQYXJ0aXRp
b25Db29raWVzRm9yVG9wUHJpdmF0ZWx5T3duZWREb21haW5zKGRvbWFpbnNUb1JlbW92ZSwgZG9t
YWluc1RvQWRkKSwgMCk7CiB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkocmV2aXNpb24g
MjEzNzI4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsNyArMTEwLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRpZERlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyh1aW50NjRfdCBjYWxsYmFja0lE
KTsKICAgICB2b2lkIGdyYW50U2FuZGJveEV4dGVuc2lvbnNUb0RhdGFiYXNlUHJvY2Vzc0ZvckJs
b2JzKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKTsKICNp
ZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKLSAgICB2b2lkIHNob3VsZFBh
cnRpdGlvbkNvb2tpZXNGb3JUb3BQcml2YXRlbHlPd25lZERvbWFpbnMoY29uc3QgVmVjdG9yPFN0
cmluZz4mLCBib29sIHZhbHVlKTsKKyAgICB2b2lkIHNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JU
b3BQcml2YXRlbHlPd25lZERvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1Jl
bW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCk7CiAjZW5kaWYKICAgICB2
b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUp
OwogICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KHVpbnQ2NF90IHBhZ2VJ
RCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCB1aW50
MzJfdCByZXN1bHQsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIxMzcyOCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDcgKzMyLDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBM
ZWdhY3lSZQogICAgIEdyYW50U2FuZGJveEV4dGVuc2lvbnNUb0RhdGFiYXNlUHJvY2Vzc0ZvckJs
b2JzKHVpbnQ2NF90IHJlcXVlc3RJRCwgVmVjdG9yPFN0cmluZz4gcGF0aHMpCiAKICNpZiBIQVZF
KENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKLSAgICBTaG91bGRQYXJ0aXRpb25Db29r
aWVzRm9yVG9wUHJpdmF0ZWx5T3duZWREb21haW5zKFZlY3RvcjxTdHJpbmc+IHRvcFByaXZhdGVs
eU93bmVkRG9tYWlucywgYm9vbCB2YWx1ZSkKKyAgICBTaG91bGRQYXJ0aXRpb25Db29raWVzRm9y
VG9wUHJpdmF0ZWx5T3duZWREb21haW5zKFZlY3RvcjxTdHJpbmc+IGRvbWFpbnNUb1JlbW92ZSwg
VmVjdG9yPFN0cmluZz4gZG9tYWluc1RvQWRkKQogI2VuZGlmCiAKICAgICBQcm9jZXNzUmVhZHlU
b1N1c3BlbmQoKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkocmV2aXNpb24gMjEzNzI4KQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDU5LDEwICsxMDU5LDEwIEBAIHZvaWQgV2Vic2l0ZURhdGFT
dG9yZTo6cmVtb3ZlRGF0YUZvclRvcFAKIH0KIAogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0Vf
UEFSVElUSU9OSU5HKQotdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzaG91bGRQYXJ0aXRpb25Db29r
aWVzRm9yVG9wUHJpdmF0ZWx5T3duZWREb21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0b3BQ
cml2YXRlbHlPd25lZERvbWFpbnMsIGJvb2wgdmFsdWUpCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6
OnNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JUb3BQcml2YXRlbHlPd25lZERvbWFpbnMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRv
bWFpbnNUb0FkZCkKIHsKICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xz
KCkpCi0gICAgICAgIHByb2Nlc3NQb29sLT5zZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3M6OlNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JUb3BQcml2YXRlbHlP
d25lZERvbWFpbnModG9wUHJpdmF0ZWx5T3duZWREb21haW5zLCB2YWx1ZSkpOworICAgICAgICBw
cm9jZXNzUG9vbC0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzOjpTaG91bGRQYXJ0aXRpb25Db29raWVzRm9yVG9wUHJpdmF0ZWx5T3duZWREb21haW5zKGRv
bWFpbnNUb1JlbW92ZSwgZG9tYWluc1RvQWRkKSk7CiB9CiAjZW5kaWYKIApAQCAtMTIzMyw4ICsx
MjMzLDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZWdpc3RlclNoYXJlZFJlcwogICAgIAog
I2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKQogICAgIG1fcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy0+cmVnaXN0ZXJTaGFyZWRSZXNvdXJjZUxvYWRPYnNlcnZlcigKLSAgICAg
ICAgW3RoaXNdIChjb25zdCBWZWN0b3I8U3RyaW5nPiYgdG9wUHJpdmF0ZWx5T3duZWREb21haW5z
LCBib29sIHZhbHVlKSB7Ci0gICAgICAgICAgICB0aGlzLT5zaG91bGRQYXJ0aXRpb25Db29raWVz
Rm9yVG9wUHJpdmF0ZWx5T3duZWREb21haW5zKHRvcFByaXZhdGVseU93bmVkRG9tYWlucywgdmFs
dWUpOworICAgICAgICBbdGhpc10gKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1v
dmUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9BZGQpIHsKKyAgICAgICAgICAgIHRo
aXMtPnNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JUb3BQcml2YXRlbHlPd25lZERvbWFpbnMoZG9t
YWluc1RvUmVtb3ZlLCBkb21haW5zVG9BZGQpOwogICAgICAgICB9KTsKICNlbHNlCiAgICAgbV9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5yZWdpc3RlclNoYXJlZFJlc291cmNlTG9hZE9ic2VydmVy
KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgJKHJldmlzaW9uIDIxMzcyOCkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTkyLDcgKzkyLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlRGF0YUZvclRvcFBy
aXZhdGVseU93bmVkRG9tYWlucyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgT3B0aW9uU2V0
PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdG9wUHJpdmF0
ZWx5T3duZWREb21haW5zLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoVmVjdG9yPFN0cmluZz4pPiBjb21w
bGV0aW9uSGFuZGxlcik7CiAKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklO
RykKLSAgICB2b2lkIHNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JUb3BQcml2YXRlbHlPd25lZERv
bWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBib29sIHZhbHVlKTsKKyAgICB2b2lkIHNob3Vs
ZFBhcnRpdGlvbkNvb2tpZXNGb3JUb3BQcml2YXRlbHlPd25lZERvbWFpbnMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNU
b0FkZCk7CiAjZW5kaWYKICAgICB2b2lkIHJlc29sdmVEaXJlY3Rvcmllc0lmTmVjZXNzYXJ5KCk7
CiAgICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSBj
b25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5OyB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>