<?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>152698</bug_id>
          
          <creation_ts>2016-01-04 11:02:11 -0800</creation_ts>
          <short_desc>Modern IDB: Transactions from a previous page can leak forward to the next</short_desc>
          <delta_ts>2016-01-05 09:45:11 -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>WebCore Misc.</component>
          <version>Safari 9</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>149117</blocked>
    
    <blocked>150882</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jsbell</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1152391</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-01-04 11:02:11 -0800</bug_when>
    <thetext>Modern IDB: Transactions from a previous page can leak forward to the next

Noticed this while exploring why storage/indexeddb/keypath-basics.html causes downstream tests to crash. And IDBTransaction from keypath-basics.html is still sending operations to the server even after DRT has navigated to the next test.

Yikes!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152653</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-01-04 22:18:57 -0800</bug_when>
    <thetext>Fixing this *affects* various other tests with TestExpectations entries, but I&apos;ll leave their entries as-is for now.

I managed to write a test that reliably fails because of this bug and will include it with the patch, which is upcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152654</commentid>
    <comment_count>2</comment_count>
      <attachid>268268</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-01-04 22:21:28 -0800</bug_when>
    <thetext>Created attachment 268268
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152661</commentid>
    <comment_count>3</comment_count>
      <attachid>268268</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-01-04 22:48:36 -0800</bug_when>
    <thetext>Comment on attachment 268268
Patch v1

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

r=me once my question about the removed assertion is answered.

&gt; Source/WebCore/Modules/indexeddb/client/IDBDatabaseImpl.cpp:273
&gt; +        if (transaction)

Can there be null entries in m_activeTransactions? This check might be unnecessary because we know id is a valid key with a value in m_activeTransactions.  But it&apos;s also good to check pointers before dereferencing them.

&gt; Source/WebCore/Modules/indexeddb/client/IDBTransactionImpl.cpp:218
&gt;      // Since we&apos;re aborting, this abortOnServerAndCancelRequests() operation should be the only
&gt;      // in-progress operation, and it should be impossible to have queued any further operations.
&gt; -    ASSERT(m_transactionOperationMap.size() == 1);
&gt;      ASSERT(m_transactionOperationQueue.isEmpty());

This comment needs updating.

&gt; Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:-978
&gt; -        ASSERT(&amp;m_versionChangeTransaction-&gt;databaseConnection() == m_versionChangeDatabaseConnection);

I don&apos;t understand why this assertion is being removed.  Please justify.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152662</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-01-04 22:52:35 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 268268 [details]
&gt; Patch v1
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=268268&amp;action=review
&gt; 
&gt; r=me once my question about the removed assertion is answered.
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/client/IDBDatabaseImpl.cpp:273
&gt; &gt; +        if (transaction)
&gt; 
&gt; Can there be null entries in m_activeTransactions? This check might be
&gt; unnecessary because we know id is a valid key with a value in
&gt; m_activeTransactions.  But it&apos;s also good to check pointers before
&gt; dereferencing them.
&gt; 

There cannot be a null entry, but calling stop() on one transaction might cause another to be removed from the set.

So we build up the initial list of known ids, but have to make sure the transaction is still there for each id we stop().

&gt; &gt; Source/WebCore/Modules/indexeddb/client/IDBTransactionImpl.cpp:218
&gt; &gt;      // Since we&apos;re aborting, this abortOnServerAndCancelRequests() operation should be the only
&gt; &gt;      // in-progress operation, and it should be impossible to have queued any further operations.
&gt; &gt; -    ASSERT(m_transactionOperationMap.size() == 1);
&gt; &gt;      ASSERT(m_transactionOperationQueue.isEmpty());
&gt; 
&gt; This comment needs updating.

Yup.

&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:-978
&gt; &gt; -        ASSERT(&amp;m_versionChangeTransaction-&gt;databaseConnection() == m_versionChangeDatabaseConnection);
&gt; 
&gt; I don&apos;t understand why this assertion is being removed.  Please justify.

Because m_versionChangeDatabaseConnection can now be null when this code is run.

I could change the assert to that effect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152723</commentid>
    <comment_count>5</comment_count>
      <attachid>268283</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-01-05 08:58:31 -0800</bug_when>
    <thetext>Created attachment 268283
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152732</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-01-05 09:12:59 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; &gt; Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:-978
&gt; &gt; &gt; -        ASSERT(&amp;m_versionChangeTransaction-&gt;databaseConnection() == m_versionChangeDatabaseConnection);
&gt; &gt; 
&gt; &gt; I don&apos;t understand why this assertion is being removed.  Please justify.
&gt; 
&gt; Because m_versionChangeDatabaseConnection can now be null when this code is
&gt; run.
&gt; 
&gt; I could change the assert to that effect.

In the patch for landing, I changed the assert to for the connections to be equal only if the version change connection is not nullptr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152739</commentid>
    <comment_count>7</comment_count>
      <attachid>268283</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-05 09:45:08 -0800</bug_when>
    <thetext>Comment on attachment 268283
Patch for landing

Clearing flags on attachment: 268283

Committed r194587: &lt;http://trac.webkit.org/changeset/194587&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152740</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-05 09:45:11 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268268</attachid>
            <date>2016-01-04 22:21:28 -0800</date>
            <delta_ts>2016-01-05 08:58:31 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>14787</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2ZTgzYWI2Li5lODY0Mjc1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTcgQEAKIDIwMTYtMDEt
MDQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCisgICAgICAgIE1vZGVybiBJ
REI6IFRyYW5zYWN0aW9ucyBmcm9tIGEgcHJldmlvdXMgcGFnZSBjYW4gbGVhayBmb3J3YXJkIHRv
IHRoZSBuZXh0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUyNjk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL3RyYW5zYWN0aW9ucy1zdG9w
LW9uLW5hdmlnYXRpb24tMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vcmVzb3VyY2VzL3RyYW5zYWN0aW9ucy1zdG9wLW9uLW5hdmlnYXRpb24uanM6IEFk
ZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi90cmFuc2FjdGlvbnMtc3Rv
cC1vbi1uYXZpZ2F0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL3RyYW5zYWN0aW9ucy1zdG9wLW9uLW5hdmlnYXRpb24uaHRtbDogQWRk
ZWQuCisKKzIwMTYtMDEtMDQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCiAg
ICAgICAgIE1vZGVybiBJREI6IE1lbW9yeSBpbmRleGVzIGFyZW4ndCBkZWxldGVkIHdoZW4gdGhl
aXIgb3duaW5nIG1lbW9yeSBvYmplY3Qgc3RvcmVzIGFyZSBkZWxldGVkLgogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNzE3CiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvdHJhbnNhY3Rp
b25zLXN0b3Atb24tbmF2aWdhdGlvbi0yLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL3RyYW5zYWN0aW9ucy1zdG9wLW9uLW5hdmlnYXRpb24tMi5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyNTYxMWEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2Vz
L3RyYW5zYWN0aW9ucy1zdG9wLW9uLW5hdmlnYXRpb24tMi5odG1sCkBAIC0wLDAgKzEsNDAgQEAK
K01ha2VzIHN1cmUgdHJhbnNhY3Rpb25zIHN0b3Agb24gbmF2aWdhdGlvbiB0byBhIG5ldyBwYWdl
Ljxicj4KK0lmIHRoZSBwcmV2aW91cyBwYWdlJ3MgdHJhbnNhY3Rpb24gaXMgYmxpbmRseSBjaGFy
Z2luZyBmb3J3YXJkLCB0aGlzIHRlc3Qgd2lsbCBwcm9iYWJseSB0aW1lb3V0Ljxicj4KK0lmIHRo
ZSBwcmV2aW91cyBwYWdlJ3MgY29ubmVjdGlvbi90cmFuc2FjdGlvbnMgZGlkIG5vdCBjbGVhbiB1
cCBwcm9wZXJseSwgdGhlIGRlbGV0ZSByZXF1ZXN0IGluIHRoaXMgdGVzdCB3aWxsIGluY29ycmVj
dGx5IGJlIGJsb2NrZWQuPGJyPgorSWYgZXZlcnkgdGhpbmcgaXMgcGVhY2h5IGtlZW4sIHRoZSBk
ZWxldGUgcmVxdWVzdCBpbiB0aGlzIHRlc3Qgd2lsbCBjb3JyZWN0bHkgc3VjY2VlZC48YnI+Cis8
ZGl2IGlkPSJsb2dnZXIiPjwvZGl2PgorPHNjcmlwdD4KKworZnVuY3Rpb24gbG9nKG1zZykKK3sK
KyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nZ2VyIikuaW5uZXJIVE1MICs9IG1zZyAr
ICI8YnI+IjsKK30KKworZnVuY3Rpb24gZG9uZSgpCit7CisgICAgbG9nKCJEb25lLiIpOworICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
Cit9CisKKy8vIENhbGxpbmcgImRlbGV0ZURhdGFiYXNlIiB3aGlsZSB0aGVyZSBhcmUgYWxyZWFk
eSBvcGVuIGNvbm5lY3Rpb25zIGNhdXNlcyB0aG9zZSBjb25uZWN0aW9ucyB0byBmaXJzdCByZWNl
aXZlIGEgdmVyc2lvbkNoYW5nZSBldmVudC4KKy8vIElmIHRoZSB0cmFuc2FjdGlvbi9jb25uZWN0
aW9uIGZyb20gdGhlIHByZXZpb3VzIHBhZ2UgaXMgc3RpbGwgYWN0aXZlLCB0aGVuIGRlbGV0aW5n
IHRoZSBkYXRhYmFzZSB3aWxsIHRpbWVvdXQgYmVjYXVzZSB0aGUgcHJldmlvdXMgY29ubmVjdGlv
biB3aWxsIG5ldmVyIGJlIGFibGUgdG8gcmVzcG9uZCB0byB0aGUgdmVyc2lvbiBjaGFuZ2UgZXZl
bnQuCisvLyBEZWxldGluZyB0aGUgZGF0YWJhc2Ugc2hvdWxkIGltbWVkaWF0ZWx5IHN1Y2NlZWQu
CisKK3ZhciByZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgndHJhbnNh
Y3Rpb25zLXN0b3Atb24tbmF2aWdhdGlvbi5odG1sJyk7CityZXF1ZXN0Lm9uc3VjY2VzcyA9IGRl
bGV0ZVN1Y2Nlc3M7CityZXF1ZXN0Lm9uYmxvY2tlZCA9IGRlbGV0ZUJsb2NrZWQ7CisKK2Z1bmN0
aW9uIGRlbGV0ZVN1Y2Nlc3MoKQoreworICAgIGxvZygiRGVsZXRlIHJlcXVlc3Qgd2FzIHN1Y2Nl
c3NmdWwuIik7CisgICAgZG9uZSgpOworfQorCitmdW5jdGlvbiBkZWxldGVCbG9ja2VkKCkKK3sK
KyAgICBsb2coIkRlbGV0ZSByZXF1ZXN0IHdhcyBibG9ja2VkIC0gaXQgc2hvdWxkIG5vdCBoYXZl
IGJlZW4uIik7CisgICAgZG9uZSgpOworfQorCis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvdHJhbnNhY3Rpb25zLXN0
b3Atb24tbmF2aWdhdGlvbi5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi9yZXNvdXJjZXMvdHJhbnNhY3Rpb25zLXN0b3Atb24tbmF2aWdhdGlvbi5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xN2Y5NzM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy90cmFuc2FjdGlvbnMt
c3RvcC1vbi1uYXZpZ2F0aW9uLmpzCkBAIC0wLDAgKzEsMjggQEAKK2Rlc2NyaXB0aW9uKCJNYWtl
cyBzdXJlIHRyYW5zYWN0aW9ucyBzdG9wIG9uIG5hdmlnYXRpb24gdG8gYSBuZXcgcGFnZS4iKTsK
KworaW5kZXhlZERCVGVzdChwcmVwYXJlRGF0YWJhc2UsIG9wZW5TdWNjZXNzKTsKKworZnVuY3Rp
b24gcHJlcGFyZURhdGFiYXNlKCkKK3sKKyAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uID0gZXZl
bnQudGFyZ2V0LnJlc3VsdDsiKTsKKworICAgIGV2YWxBbmRMb2coInN0b3JlID0gY29ubmVjdGlv
bi5jcmVhdGVPYmplY3RTdG9yZSgnbmFtZScpOyIpOworICAgIGV2YWxBbmRMb2coImluZGV4ID0g
c3RvcmUuY3JlYXRlSW5kZXgoJ25hbWUnLCAnZm9vJyk7Iik7Cit9CisKK2Z1bmN0aW9uIG9wZW5T
dWNjZXNzKCkKK3sKKyAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uLmNsb3NlKCk7Iik7CisgICAg
ZXZhbEFuZExvZygicmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigndHJhbnNhY3Rpb25z
LXN0b3Atb24tbmF2aWdhdGlvbi5odG1sJyk7Iik7CisgICAgZXZhbEFuZExvZygicmVxdWVzdC5v
bnN1Y2Nlc3MgPSBvcGVuZWQ7Iik7Cit9CisKK2Z1bmN0aW9uIG9wZW5lZChldmVudCkKK3sKKyAg
ICBldmFsQW5kTG9nKCJjb25uZWN0aW9uID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsiKTsKKyAgICBl
dmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGNvbm5lY3Rpb24udHJhbnNhY3Rpb24oJ25hbWUnLCAn
cmVhZHdyaXRlJyk7Iik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkKKyAgICAg
ICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ25hbWUnKS5wdXQoJ2Jhcics
ICdmb28nKTsiKTsKKyAgICAKKyAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICJyZXNvdXJjZXMv
dHJhbnNhY3Rpb25zLXN0b3Atb24tbmF2aWdhdGlvbi0yLmh0bWwiOworfQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3RyYW5zYWN0aW9ucy1zdG9wLW9u
LW5hdmlnYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW9kZXJuL3RyYW5zYWN0aW9ucy1zdG9wLW9uLW5hdmlnYXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjZDY3MmQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vdHJhbnNhY3Rpb25zLXN0b3At
b24tbmF2aWdhdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACitNYWtlcyBzdXJlIHRy
YW5zYWN0aW9ucyBzdG9wIG9uIG5hdmlnYXRpb24gdG8gYSBuZXcgcGFnZS4KK0lmIHRoZSBwcmV2
aW91cyBwYWdlJ3MgdHJhbnNhY3Rpb24gaXMgYmxpbmRseSBjaGFyZ2luZyBmb3J3YXJkLCB0aGlz
IHRlc3Qgd2lsbCBwcm9iYWJseSB0aW1lb3V0LgorSWYgdGhlIHByZXZpb3VzIHBhZ2UncyBjb25u
ZWN0aW9uL3RyYW5zYWN0aW9ucyBkaWQgbm90IGNsZWFuIHVwIHByb3Blcmx5LCB0aGUgZGVsZXRl
IHJlcXVlc3QgaW4gdGhpcyB0ZXN0IHdpbGwgaW5jb3JyZWN0bHkgYmUgYmxvY2tlZC4KK0lmIGV2
ZXJ5IHRoaW5nIGlzIHBlYWNoeSBrZWVuLCB0aGUgZGVsZXRlIHJlcXVlc3QgaW4gdGhpcyB0ZXN0
IHdpbGwgY29ycmVjdGx5IHN1Y2NlZWQuCitEZWxldGUgcmVxdWVzdCB3YXMgc3VjY2Vzc2Z1bC4K
K0RvbmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi90cmFuc2FjdGlvbnMtc3RvcC1vbi1uYXZpZ2F0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vdHJhbnNhY3Rpb25zLXN0b3Atb24tbmF2aWdhdGlvbi5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkMjI0NTIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vdHJhbnNhY3Rpb25z
LXN0b3Atb24tbmF2aWdhdGlvbi5odG1sCkBAIC0wLDAgKzEsOSBAQAorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdHJhbnNhY3Rpb25zLXN0b3Atb24tbmF2aWdh
dGlvbi5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjdiZmQx
NC4uMzMxMTVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE2LTAxLTA0ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb2Rlcm4gSURCOiBUcmFu
c2FjdGlvbnMgZnJvbSBhIHByZXZpb3VzIHBhZ2UgY2FuIGxlYWsgZm9yd2FyZCB0byB0aGUgbmV4
dC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjY5
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6
IHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi90cmFuc2FjdGlvbnMtc3RvcC1vbi1uYXZpZ2F0aW9u
Lmh0bWwKKworICAgICAgICBUaGlzIHBhdGNoIGlzIG1vc3RseSBhYm91dCBhY3R1YWxseSBpbXBs
ZW1lbnRpbmcgSURCRGF0YWJhc2U6OnN0b3AgYW5kIElEQlRyYW5zYWN0aW9uOjpzdG9wLgorICAg
ICAgICBNb3N0IG9mIHRoZSByZXN0IG9mIHRoZSBzY2F0dGVyZWQgY2hhbmdlcyBhcmUgYWJvdXQg
Y2xlYW5pbmcgdXAgbm93LWluY29ycmVjdCBBU1NFUlRzLgorCisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvY2xpZW50L0lEQkRhdGFiYXNlSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
REJDbGllbnQ6OklEQkRhdGFiYXNlOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGll
bnQ6OklEQkRhdGFiYXNlOjptYXliZUNsb3NlSW5TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SURCQ2xpZW50OjpJREJEYXRhYmFzZTo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGll
bnQ6OklEQkRhdGFiYXNlOjpzdGFydFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkRhdGFiYXNlOjpkaWRBYm9ydFRyYW5zYWN0aW9uKToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCRGF0YWJhc2VJbXBsLmg6Cisg
ICAgICAgIAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPcGVuREJSZXF1
ZXN0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQk9wZW5EQlJlcXVl
c3Q6OnJlcXVlc3RDb21wbGV0ZWQpOgorICAgICAgICAKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9jbGllbnQvSURCUmVxdWVzdEltcGwuaDoKKyAgICAgICAgCisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvY2xpZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJDbGllbnQ6OklEQlRyYW5zYWN0aW9uOjpJREJUcmFuc2FjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpJREJDbGllbnQ6OklEQlRyYW5zYWN0aW9uOjpzdG9wKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkNsaWVudDo6SURCVHJhbnNhY3Rpb246OmFib3J0T25TZXJ2ZXJBbmRDYW5jZWxS
ZXF1ZXN0cyk6CisgICAgICAgIAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9V
bmlxdWVJREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1
ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3VycmVudERlbGV0ZU9wZXJhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3JtQWJvcnRUcmFu
c2FjdGlvbik6CisKIDIwMTYtMDEtMDQgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFw
cGxlLmNvbT4KIAogICAgICAgICBUZXh0QnJlYWtJdGVyYXRvciB1c2VzIGFuIGludGVybmFsIGlt
cGxlbWVudGF0aW9uIGRldGFpbCBvZiBOU0xvY2FsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkRhdGFiYXNlSW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCRGF0YWJhc2VJbXBsLmNwcAppbmRl
eCAyZDNjYWU2Li4wMDMyODMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvSURCRGF0YWJhc2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCRGF0YWJhc2VJbXBsLmNwcApAQCAtMjIzLDEyICsy
MjMsMTYgQEAgdm9pZCBJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5n
JiBvYmplY3RTdG9yZU5hbWUsIEV4Y2VwdGlvbkNvZGUKIAogdm9pZCBJREJEYXRhYmFzZTo6Y2xv
c2UoKQogeworICAgIExPRyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6Y2xvc2UgLSAlIiBQUkl1
NjQsIG1fZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcik7CisKICAgICBtX2Nsb3NlUGVuZGlu
ZyA9IHRydWU7CiAgICAgbWF5YmVDbG9zZUluU2VydmVyKCk7CiB9CiAKIHZvaWQgSURCRGF0YWJh
c2U6Om1heWJlQ2xvc2VJblNlcnZlcigpCiB7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFi
YXNlOjptYXliZUNsb3NlSW5TZXJ2ZXIgLSAlIiBQUkl1NjQsIG1fZGF0YWJhc2VDb25uZWN0aW9u
SWRlbnRpZmllcik7CisKICAgICBpZiAobV9jbG9zZWRJblNlcnZlcikKICAgICAgICAgcmV0dXJu
OwogCkBAIC0yNTQsMTIgKzI1OCwzMyBAQCBib29sIElEQkRhdGFiYXNlOjpjYW5TdXNwZW5kRm9y
RG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBJ
REJEYXRhYmFzZTo6c3RvcCgpCit7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjpz
dG9wIC0gJSIgUFJJdTY0LCBtX2RhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOworCisgICAg
VmVjdG9yPElEQlJlc291cmNlSWRlbnRpZmllcj4gdHJhbnNhY3Rpb25JZGVudGlmaWVyczsKKyAg
ICB0cmFuc2FjdGlvbklkZW50aWZpZXJzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9hY3RpdmVU
cmFuc2FjdGlvbnMuc2l6ZSgpKTsKKworICAgIGZvciAoYXV0byYgaWQgOiBtX2FjdGl2ZVRyYW5z
YWN0aW9ucy5rZXlzKCkpCisgICAgICAgIHRyYW5zYWN0aW9uSWRlbnRpZmllcnMudW5jaGVja2Vk
QXBwZW5kKGlkKTsKKworICAgIGZvciAoYXV0byYgaWQgOiB0cmFuc2FjdGlvbklkZW50aWZpZXJz
KSB7CisgICAgICAgIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiA9IG1fYWN0aXZlVHJhbnNh
Y3Rpb25zLmdldChpZCk7CisgICAgICAgIGlmICh0cmFuc2FjdGlvbikKKyAgICAgICAgICAgIHRy
YW5zYWN0aW9uLT5zdG9wKCk7CisgICAgfQorCisgICAgY2xvc2UoKTsKK30KKwogUmVmPElEQlRy
YW5zYWN0aW9uPiBJREJEYXRhYmFzZTo6c3RhcnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oY29u
c3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvLCBJREJPcGVuREJSZXF1ZXN0JiByZXF1ZXN0KQog
ewogICAgIExPRyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6c3RhcnRWZXJzaW9uQ2hhbmdlVHJh
bnNhY3Rpb24gJXMiLCBpbmZvLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiAKICAgICBBU1NFUlQoIW1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKTsKICAgICBB
U1NFUlQoaW5mby5tb2RlKCkgPT0gSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGU6OlZlcnNpb25D
aGFuZ2UpOworICAgIEFTU0VSVCghbV9jbG9zZVBlbmRpbmcpOworICAgIEFTU0VSVChzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgUmVmPElEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlv
biA9IElEQlRyYW5zYWN0aW9uOjpjcmVhdGUoKnRoaXMsIGluZm8sIHJlcXVlc3QpOwogICAgIG1f
dmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uID0gJnRyYW5zYWN0aW9uLmdldCgpOwpAQCAtMzIzLDgg
KzM0OCw3IEBAIHZvaWQgSURCRGF0YWJhc2U6OmRpZEFib3J0VHJhbnNhY3Rpb24oSURCVHJhbnNh
Y3Rpb24mIHRyYW5zYWN0aW9uKQogICAgICAgICBBU1NFUlQodHJhbnNhY3Rpb24ub3JpZ2luYWxE
YXRhYmFzZUluZm8oKSk7CiAgICAgICAgIEFTU0VSVChtX2luZm8udmVyc2lvbigpID09IHRyYW5z
YWN0aW9uLm9yaWdpbmFsRGF0YWJhc2VJbmZvKCktPnZlcnNpb24oKSk7CiAgICAgICAgIG1fY2xv
c2VQZW5kaW5nID0gdHJ1ZTsKLSAgICAgICAgbV9jbG9zZWRJblNlcnZlciA9IHRydWU7Ci0gICAg
ICAgIG1fc2VydmVyQ29ubmVjdGlvbi0+ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKCp0aGlzKTsK
KyAgICAgICAgbWF5YmVDbG9zZUluU2VydmVyKCk7CiAgICAgfQogCiAgICAgZGlkQ29tbWl0T3JB
Ym9ydFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJEYXRhYmFzZUltcGwuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJEYXRhYmFzZUltcGwuaAppbmRleCAwYjNl
N2MyLi4zMzZkMTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvSURCRGF0YWJhc2VJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvY2xpZW50L0lEQkRhdGFiYXNlSW1wbC5oCkBAIC02OCw2ICs2OCw3IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0
IG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgYm9vbCBjYW5TdXNwZW5kRm9yRG9jdW1lbnRT
dXNwZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCB2b2lkIHN0b3Ao
KSBvdmVycmlkZSBmaW5hbDsKIAogICAgIGNvbnN0IElEQkRhdGFiYXNlSW5mbyYgaW5mbygpIGNv
bnN0IHsgcmV0dXJuIG1faW5mbzsgfQogICAgIHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklk
ZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXI7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9J
REJPcGVuREJSZXF1ZXN0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvSURCT3BlbkRCUmVxdWVzdEltcGwuY3BwCmluZGV4IDkyYTcwN2UuLjQ4Mjg4MDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJP
cGVuREJSZXF1ZXN0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvY2xpZW50L0lEQk9wZW5EQlJlcXVlc3RJbXBsLmNwcApAQCAtMTYyLDYgKzE2Miw5IEBAIHZv
aWQgSURCT3BlbkRCUmVxdWVzdDo6cmVxdWVzdENvbXBsZXRlZChjb25zdCBJREJSZXN1bHREYXRh
JiBkYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJPcGVuREJSZXF1ZXN0OjpyZXF1ZXN0
Q29tcGxldGVkIik7CiAKKyAgICBpZiAobV9jb250ZXh0U3RvcHBlZCkKKyAgICAgICAgcmV0dXJu
OworCiAgICAgc3dpdGNoIChkYXRhLnR5cGUoKSkgewogICAgIGNhc2UgSURCUmVzdWx0VHlwZTo6
RXJyb3I6CiAgICAgICAgIG9uRXJyb3IoZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCUmVxdWVzdEltcGwuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5oCmluZGV4IDE2YzUx
NzIuLjk1YmZmY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L2NsaWVudC9JREJSZXF1ZXN0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5oCkBAIC0xMjksNiArMTI5LDcgQEAgcHJvdGVj
dGVkOgogICAgIFJlZlB0cjxET01FcnJvcj4gbV9kb21FcnJvcjsKICAgICBJREJFcnJvciBtX2lk
YkVycm9yOwogICAgIEluZGV4ZWREQjo6UmVxdWVzdFR5cGUgbV9yZXF1ZXN0VHlwZSA9IHsgSW5k
ZXhlZERCOjpSZXF1ZXN0VHlwZTo6T3RoZXIgfTsKKyAgICBib29sIG1fY29udGV4dFN0b3BwZWQg
eyBmYWxzZSB9OwogCiBwcml2YXRlOgogICAgIHZvaWQgb25FcnJvcigpOwpAQCAtMTQzLDggKzE0
NCw2IEBAIHByaXZhdGU6CiAgICAgSW5kZXhlZERCOjpJbmRleFJlY29yZFR5cGUgbV9yZXF1ZXN0
ZWRJbmRleFJlY29yZFR5cGU7CiAKICAgICBSZWZQdHI8SURCQ3Vyc29yPiBtX3BlbmRpbmdDdXJz
b3I7Ci0KLSAgICBib29sIG1fY29udGV4dFN0b3BwZWQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgSURCQ2xpZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvSURCVHJhbnNhY3Rpb25JbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJUcmFuc2FjdGlvbkltcGwuY3BwCmluZGV4IGNmN2M1
Y2YuLmM2ZGVmZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L2NsaWVudC9JREJUcmFuc2FjdGlvbkltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL2NsaWVudC9JREJUcmFuc2FjdGlvbkltcGwuY3BwCkBAIC02Nyw2ICs2Nyw4
IEBAIElEQlRyYW5zYWN0aW9uOjpJREJUcmFuc2FjdGlvbihJREJEYXRhYmFzZSYgZGF0YWJhc2Us
IGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYKICAgICAsIG1fb3BlbkRCUmVxdWVzdChyZXF1ZXN0
KQogCiB7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpJREJUcmFuc2FjdGlv
biAtICVzIiwgbV9pbmZvLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKwogICAgIHJl
bGF4QWRvcHRpb25SZXF1aXJlbWVudCgpOwogCiAgICAgaWYgKG1faW5mby5tb2RlKCkgPT0gSW5k
ZXhlZERCOjpUcmFuc2FjdGlvbk1vZGU6OlZlcnNpb25DaGFuZ2UpIHsKQEAgLTIxMyw3ICsyMTUs
NiBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjphYm9ydE9uU2VydmVyQW5kQ2FuY2VsUmVxdWVzdHMo
VHJhbnNhY3Rpb25PcGVyYXRpb24mKQogCiAgICAgLy8gU2luY2Ugd2UncmUgYWJvcnRpbmcsIHRo
aXMgYWJvcnRPblNlcnZlckFuZENhbmNlbFJlcXVlc3RzKCkgb3BlcmF0aW9uIHNob3VsZCBiZSB0
aGUgb25seQogICAgIC8vIGluLXByb2dyZXNzIG9wZXJhdGlvbiwgYW5kIGl0IHNob3VsZCBiZSBp
bXBvc3NpYmxlIHRvIGhhdmUgcXVldWVkIGFueSBmdXJ0aGVyIG9wZXJhdGlvbnMuCi0gICAgQVNT
RVJUKG1fdHJhbnNhY3Rpb25PcGVyYXRpb25NYXAuc2l6ZSgpID09IDEpOwogICAgIEFTU0VSVCht
X3RyYW5zYWN0aW9uT3BlcmF0aW9uUXVldWUuaXNFbXB0eSgpKTsKIH0KIApAQCAtMjM0LDggKzIz
NSwyMCBAQCBib29sIElEQlRyYW5zYWN0aW9uOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAog
CiB2b2lkIElEQlRyYW5zYWN0aW9uOjpzdG9wKCkKIHsKLSAgICBBU1NFUlQoIW1fY29udGV4dFN0
b3BwZWQpOworICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6c3RvcCIpOworCisg
ICAgLy8gSURCRGF0YWJhc2U6OnN0b3AoKSBjYWxscyBJREJUcmFuc2FjdGlvbjo6c3RvcCgpIGZv
ciBlYWNoIG9mIGl0cyBhY3RpdmUgdHJhbnNhY3Rpb25zLgorICAgIC8vIFNpbmNlIHRoZSBvcmRl
ciBvZiBjYWxsaW5nIEFjdGl2ZURPTU9iamVjdDo6c3RvcCgpIGlzIHJhbmRvbSwgd2UgbWlnaHQg
YWxyZWFkeSBoYXZlIGJlZW4gc3RvcHBlZC4KKyAgICBpZiAobV9jb250ZXh0U3RvcHBlZCkKKyAg
ICAgICAgcmV0dXJuOworCiAgICAgbV9jb250ZXh0U3RvcHBlZCA9IHRydWU7CisKKyAgICBpZiAo
aXNGaW5pc2hlZE9yRmluaXNoaW5nKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEV4Y2VwdGlv
bkNvZGVXaXRoTWVzc2FnZSBlYzsKKyAgICBhYm9ydChlYyk7CiB9CiAKIGJvb2wgSURCVHJhbnNh
Y3Rpb246OmlzQWN0aXZlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCmluZGV4IGNk
YzVlZTMuLmVhNWRiZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcApAQCAtMTc4LDggKzE3
OCwxNCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3VycmVudERlbGV0ZU9wZXJh
dGlvbigpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICAvLyBFdmVuIHRob3VnaCB3ZSBo
YXZlIG5vIG9wZW4gZGF0YWJhc2UgY29ubmVjdGlvbnMsIHdlIG1pZ2h0IGhhdmUgY2xvc2UtcGVu
ZGluZyBkYXRhYmFzZSBjb25uZWN0aW9ucworICAgIC8vIHRoYXQgYXJlIHdhaXRpbmcgb24gdHJh
bnNhY3Rpb25zIHRvIGNvbXBsZXRlLgorICAgIGlmICghbV9pblByb2dyZXNzVHJhbnNhY3Rpb25z
LmlzRW1wdHkoKSkgeworICAgICAgICBBU1NFUlQoIW1fY2xvc2VQZW5kaW5nRGF0YWJhc2VDb25u
ZWN0aW9ucy5pc0VtcHR5KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgQVNTRVJU
KCFoYXNBbnlQZW5kaW5nQ2FsbGJhY2tzKCkpOwotICAgIEFTU0VSVChtX2luUHJvZ3Jlc3NUcmFu
c2FjdGlvbnMuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQobV9wZW5kaW5nVHJhbnNhY3Rpb25zLmlz
RW1wdHkoKSk7CiAgICAgQVNTRVJUKG1fb3BlbkRhdGFiYXNlQ29ubmVjdGlvbnMuaXNFbXB0eSgp
KTsKIApAQCAtOTc1LDcgKzk4MSw2IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZv
cm1BYm9ydFRyYW5zYWN0aW9uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwKICAgICBMT0co
SW5kZXhlZERCLCAiKG1haW4pIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3JtQWJvcnRUcmFu
c2FjdGlvbiIpOwogCiAgICAgaWYgKG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uICYmIG1fdmVy
c2lvbkNoYW5nZVRyYW5zYWN0aW9uLT5pbmZvKCkuaWRlbnRpZmllcigpID09IHRyYW5zYWN0aW9u
SWRlbnRpZmllcikgewotICAgICAgICBBU1NFUlQoJm1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9u
LT5kYXRhYmFzZUNvbm5lY3Rpb24oKSA9PSBtX3ZlcnNpb25DaGFuZ2VEYXRhYmFzZUNvbm5lY3Rp
b24pOwogICAgICAgICBBU1NFUlQobV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPm9yaWdpbmFs
RGF0YWJhc2VJbmZvKCkpOwogICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlx
dWU8SURCRGF0YWJhc2VJbmZvPigqbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPm9yaWdpbmFs
RGF0YWJhc2VJbmZvKCkpOwogICAgIH0K
</data>
<flag name="review"
          id="293215"
          type_id="1"
          status="+"
          setter="achristensen"
    />
    <flag name="commit-queue"
          id="293216"
          type_id="3"
          status="-"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268283</attachid>
            <date>2016-01-05 08:58:31 -0800</date>
            <delta_ts>2016-01-05 09:45:08 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>15114</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2ZTgzYWI2Li4yOWIwY2NjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMDEt
MDUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vZGVybiBJ
REI6IFRyYW5zYWN0aW9ucyBmcm9tIGEgcHJldmlvdXMgcGFnZSBjYW4gbGVhayBmb3J3YXJkIHRv
IHRoZSBuZXh0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUyNjk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvdHJhbnNhY3Rpb25zLXN0
b3Atb24tbmF2aWdhdGlvbi0yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL21vZGVybi9yZXNvdXJjZXMvdHJhbnNhY3Rpb25zLXN0b3Atb24tbmF2aWdhdGlvbi5qczog
QWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3RyYW5zYWN0aW9ucy1z
dG9wLW9uLW5hdmlnYXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vdHJhbnNhY3Rpb25zLXN0b3Atb24tbmF2aWdhdGlvbi5odG1sOiBB
ZGRlZC4KKwogMjAxNi0wMS0wNCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgTW9kZXJuIElEQjogTWVtb3J5IGluZGV4ZXMgYXJlbid0IGRlbGV0ZWQgd2hlbiB0
aGVpciBvd25pbmcgbWVtb3J5IG9iamVjdCBzdG9yZXMgYXJlIGRlbGV0ZWQuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL3RyYW5zYWN0
aW9ucy1zdG9wLW9uLW5hdmlnYXRpb24tMi5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL3Jlc291cmNlcy90cmFuc2FjdGlvbnMtc3RvcC1vbi1uYXZpZ2F0aW9uLTIu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjU2MTFhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNl
cy90cmFuc2FjdGlvbnMtc3RvcC1vbi1uYXZpZ2F0aW9uLTIuaHRtbApAQCAtMCwwICsxLDQwIEBA
CitNYWtlcyBzdXJlIHRyYW5zYWN0aW9ucyBzdG9wIG9uIG5hdmlnYXRpb24gdG8gYSBuZXcgcGFn
ZS48YnI+CitJZiB0aGUgcHJldmlvdXMgcGFnZSdzIHRyYW5zYWN0aW9uIGlzIGJsaW5kbHkgY2hh
cmdpbmcgZm9yd2FyZCwgdGhpcyB0ZXN0IHdpbGwgcHJvYmFibHkgdGltZW91dC48YnI+CitJZiB0
aGUgcHJldmlvdXMgcGFnZSdzIGNvbm5lY3Rpb24vdHJhbnNhY3Rpb25zIGRpZCBub3QgY2xlYW4g
dXAgcHJvcGVybHksIHRoZSBkZWxldGUgcmVxdWVzdCBpbiB0aGlzIHRlc3Qgd2lsbCBpbmNvcnJl
Y3RseSBiZSBibG9ja2VkLjxicj4KK0lmIGV2ZXJ5IHRoaW5nIGlzIHBlYWNoeSBrZWVuLCB0aGUg
ZGVsZXRlIHJlcXVlc3QgaW4gdGhpcyB0ZXN0IHdpbGwgY29ycmVjdGx5IHN1Y2NlZWQuPGJyPgor
PGRpdiBpZD0ibG9nZ2VyIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGxvZyhtc2cpCit7
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZ2dlciIpLmlubmVySFRNTCArPSBtc2cg
KyAiPGJyPiI7Cit9CisKK2Z1bmN0aW9uIGRvbmUoKQoreworICAgIGxvZygiRG9uZS4iKTsKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OworfQorCisvLyBDYWxsaW5nICJkZWxldGVEYXRhYmFzZSIgd2hpbGUgdGhlcmUgYXJlIGFscmVh
ZHkgb3BlbiBjb25uZWN0aW9ucyBjYXVzZXMgdGhvc2UgY29ubmVjdGlvbnMgdG8gZmlyc3QgcmVj
ZWl2ZSBhIHZlcnNpb25DaGFuZ2UgZXZlbnQuCisvLyBJZiB0aGUgdHJhbnNhY3Rpb24vY29ubmVj
dGlvbiBmcm9tIHRoZSBwcmV2aW91cyBwYWdlIGlzIHN0aWxsIGFjdGl2ZSwgdGhlbiBkZWxldGlu
ZyB0aGUgZGF0YWJhc2Ugd2lsbCB0aW1lb3V0IGJlY2F1c2UgdGhlIHByZXZpb3VzIGNvbm5lY3Rp
b24gd2lsbCBuZXZlciBiZSBhYmxlIHRvIHJlc3BvbmQgdG8gdGhlIHZlcnNpb24gY2hhbmdlIGV2
ZW50LgorLy8gRGVsZXRpbmcgdGhlIGRhdGFiYXNlIHNob3VsZCBpbW1lZGlhdGVseSBzdWNjZWVk
LgorCit2YXIgcmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoJ3RyYW5z
YWN0aW9ucy1zdG9wLW9uLW5hdmlnYXRpb24uaHRtbCcpOworcmVxdWVzdC5vbnN1Y2Nlc3MgPSBk
ZWxldGVTdWNjZXNzOworcmVxdWVzdC5vbmJsb2NrZWQgPSBkZWxldGVCbG9ja2VkOworCitmdW5j
dGlvbiBkZWxldGVTdWNjZXNzKCkKK3sKKyAgICBsb2coIkRlbGV0ZSByZXF1ZXN0IHdhcyBzdWNj
ZXNzZnVsLiIpOworICAgIGRvbmUoKTsKK30KKworZnVuY3Rpb24gZGVsZXRlQmxvY2tlZCgpCit7
CisgICAgbG9nKCJEZWxldGUgcmVxdWVzdCB3YXMgYmxvY2tlZCAtIGl0IHNob3VsZCBub3QgaGF2
ZSBiZWVuLiIpOworICAgIGRvbmUoKTsKK30KKworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL3RyYW5zYWN0aW9ucy1z
dG9wLW9uLW5hdmlnYXRpb24uanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rl
cm4vcmVzb3VyY2VzL3RyYW5zYWN0aW9ucy1zdG9wLW9uLW5hdmlnYXRpb24uanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdmOTczNwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvdHJhbnNhY3Rpb25z
LXN0b3Atb24tbmF2aWdhdGlvbi5qcwpAQCAtMCwwICsxLDI4IEBACitkZXNjcmlwdGlvbigiTWFr
ZXMgc3VyZSB0cmFuc2FjdGlvbnMgc3RvcCBvbiBuYXZpZ2F0aW9uIHRvIGEgbmV3IHBhZ2UuIik7
CisKK2luZGV4ZWREQlRlc3QocHJlcGFyZURhdGFiYXNlLCBvcGVuU3VjY2Vzcyk7CisKK2Z1bmN0
aW9uIHByZXBhcmVEYXRhYmFzZSgpCit7CisgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbiA9IGV2
ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGNvbm5lY3Rp
b24uY3JlYXRlT2JqZWN0U3RvcmUoJ25hbWUnKTsiKTsKKyAgICBldmFsQW5kTG9nKCJpbmRleCA9
IHN0b3JlLmNyZWF0ZUluZGV4KCduYW1lJywgJ2ZvbycpOyIpOworfQorCitmdW5jdGlvbiBvcGVu
U3VjY2VzcygpCit7CisgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbi5jbG9zZSgpOyIpOworICAg
IGV2YWxBbmRMb2coInJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oJ3RyYW5zYWN0aW9u
cy1zdG9wLW9uLW5hdmlnYXRpb24uaHRtbCcpOyIpOworICAgIGV2YWxBbmRMb2coInJlcXVlc3Qu
b25zdWNjZXNzID0gb3BlbmVkOyIpOworfQorCitmdW5jdGlvbiBvcGVuZWQoZXZlbnQpCit7Cisg
ICAgZXZhbEFuZExvZygiY29ubmVjdGlvbiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Iik7CisgICAg
ZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBjb25uZWN0aW9uLnRyYW5zYWN0aW9uKCduYW1lJywg
J3JlYWR3cml0ZScpOyIpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpCisgICAg
ICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCduYW1lJykucHV0KCdiYXIn
LCAnZm9vJyk7Iik7CisgICAgCisgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAicmVzb3VyY2Vz
L3RyYW5zYWN0aW9ucy1zdG9wLW9uLW5hdmlnYXRpb24tMi5odG1sIjsKK30KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi90cmFuc2FjdGlvbnMtc3RvcC1v
bi1uYXZpZ2F0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi90cmFuc2FjdGlvbnMtc3RvcC1vbi1uYXZpZ2F0aW9uLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Y2Q2NzJkCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3RyYW5zYWN0aW9ucy1zdG9w
LW9uLW5hdmlnYXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorTWFrZXMgc3VyZSB0
cmFuc2FjdGlvbnMgc3RvcCBvbiBuYXZpZ2F0aW9uIHRvIGEgbmV3IHBhZ2UuCitJZiB0aGUgcHJl
dmlvdXMgcGFnZSdzIHRyYW5zYWN0aW9uIGlzIGJsaW5kbHkgY2hhcmdpbmcgZm9yd2FyZCwgdGhp
cyB0ZXN0IHdpbGwgcHJvYmFibHkgdGltZW91dC4KK0lmIHRoZSBwcmV2aW91cyBwYWdlJ3MgY29u
bmVjdGlvbi90cmFuc2FjdGlvbnMgZGlkIG5vdCBjbGVhbiB1cCBwcm9wZXJseSwgdGhlIGRlbGV0
ZSByZXF1ZXN0IGluIHRoaXMgdGVzdCB3aWxsIGluY29ycmVjdGx5IGJlIGJsb2NrZWQuCitJZiBl
dmVyeSB0aGluZyBpcyBwZWFjaHkga2VlbiwgdGhlIGRlbGV0ZSByZXF1ZXN0IGluIHRoaXMgdGVz
dCB3aWxsIGNvcnJlY3RseSBzdWNjZWVkLgorRGVsZXRlIHJlcXVlc3Qgd2FzIHN1Y2Nlc3NmdWwu
CitEb25lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rl
cm4vdHJhbnNhY3Rpb25zLXN0b3Atb24tbmF2aWdhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW9kZXJuL3RyYW5zYWN0aW9ucy1zdG9wLW9uLW5hdmlnYXRpb24uaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDIyNDUyCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3RyYW5zYWN0aW9u
cy1zdG9wLW9uLW5hdmlnYXRpb24uaHRtbApAQCAtMCwwICsxLDkgQEAKKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3RyYW5zYWN0aW9ucy1zdG9wLW9uLW5hdmln
YXRpb24uanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDE5MDRk
OWQuLjBkZmYyOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxNi0wMS0wNSAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW9kZXJuIElEQjogVHJh
bnNhY3Rpb25zIGZyb20gYSBwcmV2aW91cyBwYWdlIGNhbiBsZWFrIGZvcndhcmQgdG8gdGhlIG5l
eHQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI2
OTgKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIFRl
c3Q6IHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi90cmFuc2FjdGlvbnMtc3RvcC1vbi1uYXZpZ2F0
aW9uLmh0bWwKKworICAgICAgICBUaGlzIHBhdGNoIGlzIG1vc3RseSBhYm91dCBhY3R1YWxseSBp
bXBsZW1lbnRpbmcgSURCRGF0YWJhc2U6OnN0b3AgYW5kIElEQlRyYW5zYWN0aW9uOjpzdG9wLgor
ICAgICAgICBNb3N0IG9mIHRoZSByZXN0IG9mIHRoZSBzY2F0dGVyZWQgY2hhbmdlcyBhcmUgYWJv
dXQgY2xlYW5pbmcgdXAgbm93LWluY29ycmVjdCBBU1NFUlRzLgorCisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvY2xpZW50L0lEQkRhdGFiYXNlSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJDbGllbnQ6OklEQkRhdGFiYXNlOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJD
bGllbnQ6OklEQkRhdGFiYXNlOjptYXliZUNsb3NlSW5TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ2xpZW50OjpJREJEYXRhYmFzZTo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpJREJD
bGllbnQ6OklEQkRhdGFiYXNlOjpzdGFydFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkRhdGFiYXNlOjpkaWRBYm9ydFRyYW5zYWN0aW9u
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCRGF0YWJhc2VJbXBsLmg6
CisgICAgICAgIAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPcGVuREJS
ZXF1ZXN0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQk9wZW5EQlJl
cXVlc3Q6OnJlcXVlc3RDb21wbGV0ZWQpOgorICAgICAgICAKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvSURCUmVxdWVzdEltcGwuaDoKKyAgICAgICAgCisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJDbGllbnQ6OklEQlRyYW5zYWN0aW9uOjpJREJUcmFuc2FjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQlRyYW5zYWN0aW9uOjpzdG9wKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkNsaWVudDo6SURCVHJhbnNhY3Rpb246OmFib3J0T25TZXJ2ZXJBbmRDYW5j
ZWxSZXF1ZXN0cyk6CisgICAgICAgIAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9VbmlxdWVJREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVu
aXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3VycmVudERlbGV0ZU9wZXJhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3JtQWJvcnRU
cmFuc2FjdGlvbik6CisKIDIwMTYtMDEtMDQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgogCiAgICAgICAgIE1vZGVybiBJREI6IE1lbW9yeSBpbmRleGVzIGFyZW4ndCBkZWxldGVk
IHdoZW4gdGhlaXIgb3duaW5nIG1lbW9yeSBvYmplY3Qgc3RvcmVzIGFyZSBkZWxldGVkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkRhdGFi
YXNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
RGF0YWJhc2VJbXBsLmNwcAppbmRleCAyZDNjYWU2Li4wMDMyODMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCRGF0YWJhc2VJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCRGF0YWJhc2VJ
bXBsLmNwcApAQCAtMjIzLDEyICsyMjMsMTYgQEAgdm9pZCBJREJEYXRhYmFzZTo6ZGVsZXRlT2Jq
ZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUsIEV4Y2VwdGlvbkNvZGUKIAog
dm9pZCBJREJEYXRhYmFzZTo6Y2xvc2UoKQogeworICAgIExPRyhJbmRleGVkREIsICJJREJEYXRh
YmFzZTo6Y2xvc2UgLSAlIiBQUkl1NjQsIG1fZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcik7
CisKICAgICBtX2Nsb3NlUGVuZGluZyA9IHRydWU7CiAgICAgbWF5YmVDbG9zZUluU2VydmVyKCk7
CiB9CiAKIHZvaWQgSURCRGF0YWJhc2U6Om1heWJlQ2xvc2VJblNlcnZlcigpCiB7CisgICAgTE9H
KEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjptYXliZUNsb3NlSW5TZXJ2ZXIgLSAlIiBQUkl1NjQs
IG1fZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcik7CisKICAgICBpZiAobV9jbG9zZWRJblNl
cnZlcikKICAgICAgICAgcmV0dXJuOwogCkBAIC0yNTQsMTIgKzI1OCwzMyBAQCBib29sIElEQkRh
dGFiYXNlOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAordm9pZCBJREJEYXRhYmFzZTo6c3RvcCgpCit7CisgICAgTE9HKEluZGV4
ZWREQiwgIklEQkRhdGFiYXNlOjpzdG9wIC0gJSIgUFJJdTY0LCBtX2RhdGFiYXNlQ29ubmVjdGlv
bklkZW50aWZpZXIpOworCisgICAgVmVjdG9yPElEQlJlc291cmNlSWRlbnRpZmllcj4gdHJhbnNh
Y3Rpb25JZGVudGlmaWVyczsKKyAgICB0cmFuc2FjdGlvbklkZW50aWZpZXJzLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkobV9hY3RpdmVUcmFuc2FjdGlvbnMuc2l6ZSgpKTsKKworICAgIGZvciAoYXV0
byYgaWQgOiBtX2FjdGl2ZVRyYW5zYWN0aW9ucy5rZXlzKCkpCisgICAgICAgIHRyYW5zYWN0aW9u
SWRlbnRpZmllcnMudW5jaGVja2VkQXBwZW5kKGlkKTsKKworICAgIGZvciAoYXV0byYgaWQgOiB0
cmFuc2FjdGlvbklkZW50aWZpZXJzKSB7CisgICAgICAgIElEQlRyYW5zYWN0aW9uKiB0cmFuc2Fj
dGlvbiA9IG1fYWN0aXZlVHJhbnNhY3Rpb25zLmdldChpZCk7CisgICAgICAgIGlmICh0cmFuc2Fj
dGlvbikKKyAgICAgICAgICAgIHRyYW5zYWN0aW9uLT5zdG9wKCk7CisgICAgfQorCisgICAgY2xv
c2UoKTsKK30KKwogUmVmPElEQlRyYW5zYWN0aW9uPiBJREJEYXRhYmFzZTo6c3RhcnRWZXJzaW9u
Q2hhbmdlVHJhbnNhY3Rpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvLCBJREJPcGVu
REJSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIExPRyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6
c3RhcnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gJXMiLCBpbmZvLmlkZW50aWZpZXIoKS5sb2dn
aW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICBBU1NFUlQoIW1fdmVyc2lvbkNoYW5n
ZVRyYW5zYWN0aW9uKTsKICAgICBBU1NFUlQoaW5mby5tb2RlKCkgPT0gSW5kZXhlZERCOjpUcmFu
c2FjdGlvbk1vZGU6OlZlcnNpb25DaGFuZ2UpOworICAgIEFTU0VSVCghbV9jbG9zZVBlbmRpbmcp
OworICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgUmVmPElEQlRy
YW5zYWN0aW9uPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uOjpjcmVhdGUoKnRoaXMsIGlu
Zm8sIHJlcXVlc3QpOwogICAgIG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uID0gJnRyYW5zYWN0
aW9uLmdldCgpOwpAQCAtMzIzLDggKzM0OCw3IEBAIHZvaWQgSURCRGF0YWJhc2U6OmRpZEFib3J0
VHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogICAgICAgICBBU1NFUlQo
dHJhbnNhY3Rpb24ub3JpZ2luYWxEYXRhYmFzZUluZm8oKSk7CiAgICAgICAgIEFTU0VSVChtX2lu
Zm8udmVyc2lvbigpID09IHRyYW5zYWN0aW9uLm9yaWdpbmFsRGF0YWJhc2VJbmZvKCktPnZlcnNp
b24oKSk7CiAgICAgICAgIG1fY2xvc2VQZW5kaW5nID0gdHJ1ZTsKLSAgICAgICAgbV9jbG9zZWRJ
blNlcnZlciA9IHRydWU7Ci0gICAgICAgIG1fc2VydmVyQ29ubmVjdGlvbi0+ZGF0YWJhc2VDb25u
ZWN0aW9uQ2xvc2VkKCp0aGlzKTsKKyAgICAgICAgbWF5YmVDbG9zZUluU2VydmVyKCk7CiAgICAg
fQogCiAgICAgZGlkQ29tbWl0T3JBYm9ydFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJEYXRhYmFz
ZUltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJEYXRh
YmFzZUltcGwuaAppbmRleCAwYjNlN2MyLi4zMzZkMTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCRGF0YWJhc2VJbXBsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkRhdGFiYXNlSW1wbC5oCkBA
IC02OCw2ICs2OCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgY29uc3QgY2hhciogYWN0aXZl
RE9NT2JqZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgYm9vbCBj
YW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7Cisg
ICAgdmlydHVhbCB2b2lkIHN0b3AoKSBvdmVycmlkZSBmaW5hbDsKIAogICAgIGNvbnN0IElEQkRh
dGFiYXNlSW5mbyYgaW5mbygpIGNvbnN0IHsgcmV0dXJuIG1faW5mbzsgfQogICAgIHVpbnQ2NF90
IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGFiYXNl
Q29ubmVjdGlvbklkZW50aWZpZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPcGVuREJSZXF1ZXN0SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT3BlbkRCUmVxdWVzdEltcGwuY3BwCmlu
ZGV4IDkyYTcwN2UuLjQ4Mjg4MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2NsaWVudC9JREJPcGVuREJSZXF1ZXN0SW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQk9wZW5EQlJlcXVlc3RJbXBsLmNwcApA
QCAtMTYyLDYgKzE2Miw5IEBAIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6cmVxdWVzdENvbXBsZXRl
ZChjb25zdCBJREJSZXN1bHREYXRhJiBkYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJP
cGVuREJSZXF1ZXN0OjpyZXF1ZXN0Q29tcGxldGVkIik7CiAKKyAgICBpZiAobV9jb250ZXh0U3Rv
cHBlZCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgc3dpdGNoIChkYXRhLnR5cGUoKSkgewogICAg
IGNhc2UgSURCUmVzdWx0VHlwZTo6RXJyb3I6CiAgICAgICAgIG9uRXJyb3IoZGF0YSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCUmVxdWVz
dEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1
ZXN0SW1wbC5oCmluZGV4IDE2YzUxNzIuLjk1YmZmY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5oCkBAIC0x
MjksNiArMTI5LDcgQEAgcHJvdGVjdGVkOgogICAgIFJlZlB0cjxET01FcnJvcj4gbV9kb21FcnJv
cjsKICAgICBJREJFcnJvciBtX2lkYkVycm9yOwogICAgIEluZGV4ZWREQjo6UmVxdWVzdFR5cGUg
bV9yZXF1ZXN0VHlwZSA9IHsgSW5kZXhlZERCOjpSZXF1ZXN0VHlwZTo6T3RoZXIgfTsKKyAgICBi
b29sIG1fY29udGV4dFN0b3BwZWQgeyBmYWxzZSB9OwogCiBwcml2YXRlOgogICAgIHZvaWQgb25F
cnJvcigpOwpAQCAtMTQzLDggKzE0NCw2IEBAIHByaXZhdGU6CiAgICAgSW5kZXhlZERCOjpJbmRl
eFJlY29yZFR5cGUgbV9yZXF1ZXN0ZWRJbmRleFJlY29yZFR5cGU7CiAKICAgICBSZWZQdHI8SURC
Q3Vyc29yPiBtX3BlbmRpbmdDdXJzb3I7Ci0KLSAgICBib29sIG1fY29udGV4dFN0b3BwZWQgeyBm
YWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSURCQ2xpZW50CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCVHJhbnNhY3Rpb25JbXBsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJUcmFuc2FjdGlv
bkltcGwuY3BwCmluZGV4IGNmN2M1Y2YuLmZhZGMxNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJUcmFuc2FjdGlvbkltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJUcmFuc2FjdGlvbklt
cGwuY3BwCkBAIC02Nyw2ICs2Nyw4IEBAIElEQlRyYW5zYWN0aW9uOjpJREJUcmFuc2FjdGlvbihJ
REJEYXRhYmFzZSYgZGF0YWJhc2UsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYKICAgICAsIG1f
b3BlbkRCUmVxdWVzdChyZXF1ZXN0KQogCiB7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5z
YWN0aW9uOjpJREJUcmFuc2FjdGlvbiAtICVzIiwgbV9pbmZvLmxvZ2dpbmdTdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKKwogICAgIHJlbGF4QWRvcHRpb25SZXF1aXJlbWVudCgpOwogCiAgICAgaWYg
KG1faW5mby5tb2RlKCkgPT0gSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGU6OlZlcnNpb25DaGFu
Z2UpIHsKQEAgLTIxMSw5ICsyMTMsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjphYm9ydE9uU2Vy
dmVyQW5kQ2FuY2VsUmVxdWVzdHMoVHJhbnNhY3Rpb25PcGVyYXRpb24mKQogICAgIGZvciAoYXV0
byYgb3BlcmF0aW9uIDogbV9hYm9ydFF1ZXVlKQogICAgICAgICBvcGVyYXRpb24tPmNvbXBsZXRl
ZChJREJSZXN1bHREYXRhOjplcnJvcihvcGVyYXRpb24tPmlkZW50aWZpZXIoKSwgZXJyb3IpKTsK
IAotICAgIC8vIFNpbmNlIHdlJ3JlIGFib3J0aW5nLCB0aGlzIGFib3J0T25TZXJ2ZXJBbmRDYW5j
ZWxSZXF1ZXN0cygpIG9wZXJhdGlvbiBzaG91bGQgYmUgdGhlIG9ubHkKLSAgICAvLyBpbi1wcm9n
cmVzcyBvcGVyYXRpb24sIGFuZCBpdCBzaG91bGQgYmUgaW1wb3NzaWJsZSB0byBoYXZlIHF1ZXVl
ZCBhbnkgZnVydGhlciBvcGVyYXRpb25zLgotICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uT3BlcmF0
aW9uTWFwLnNpemUoKSA9PSAxKTsKKyAgICAvLyBTaW5jZSB3ZSdyZSBhYm9ydGluZywgaXQgc2hv
dWxkIGJlIGltcG9zc2libGUgdG8gaGF2ZSBxdWV1ZWQgYW55IGZ1cnRoZXIgb3BlcmF0aW9ucy4K
ICAgICBBU1NFUlQobV90cmFuc2FjdGlvbk9wZXJhdGlvblF1ZXVlLmlzRW1wdHkoKSk7CiB9CiAK
QEAgLTIzNCw4ICsyMzQsMjAgQEAgYm9vbCBJREJUcmFuc2FjdGlvbjo6aGFzUGVuZGluZ0FjdGl2
aXR5KCkgY29uc3QKIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6c3RvcCgpCiB7Ci0gICAgQVNTRVJU
KCFtX2NvbnRleHRTdG9wcGVkKTsKKyAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246
OnN0b3AiKTsKKworICAgIC8vIElEQkRhdGFiYXNlOjpzdG9wKCkgY2FsbHMgSURCVHJhbnNhY3Rp
b246OnN0b3AoKSBmb3IgZWFjaCBvZiBpdHMgYWN0aXZlIHRyYW5zYWN0aW9ucy4KKyAgICAvLyBT
aW5jZSB0aGUgb3JkZXIgb2YgY2FsbGluZyBBY3RpdmVET01PYmplY3Q6OnN0b3AoKSBpcyByYW5k
b20sIHdlIG1pZ2h0IGFscmVhZHkgaGF2ZSBiZWVuIHN0b3BwZWQuCisgICAgaWYgKG1fY29udGV4
dFN0b3BwZWQpCisgICAgICAgIHJldHVybjsKKwogICAgIG1fY29udGV4dFN0b3BwZWQgPSB0cnVl
OworCisgICAgaWYgKGlzRmluaXNoZWRPckZpbmlzaGluZygpKQorICAgICAgICByZXR1cm47CisK
KyAgICBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UgZWM7CisgICAgYWJvcnQoZWMpOwogfQogCiBi
b29sIElEQlRyYW5zYWN0aW9uOjppc0FjdGl2ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNl
LmNwcAppbmRleCBjZGM1ZWUzLi4wNzI0NjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAK
QEAgLTE3OCw4ICsxNzgsMTQgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUN1cnJl
bnREZWxldGVPcGVyYXRpb24oKQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgLy8gRXZl
biB0aG91Z2ggd2UgaGF2ZSBubyBvcGVuIGRhdGFiYXNlIGNvbm5lY3Rpb25zLCB3ZSBtaWdodCBo
YXZlIGNsb3NlLXBlbmRpbmcgZGF0YWJhc2UgY29ubmVjdGlvbnMKKyAgICAvLyB0aGF0IGFyZSB3
YWl0aW5nIG9uIHRyYW5zYWN0aW9ucyB0byBjb21wbGV0ZS4KKyAgICBpZiAoIW1faW5Qcm9ncmVz
c1RyYW5zYWN0aW9ucy5pc0VtcHR5KCkpIHsKKyAgICAgICAgQVNTRVJUKCFtX2Nsb3NlUGVuZGlu
Z0RhdGFiYXNlQ29ubmVjdGlvbnMuaXNFbXB0eSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KwogICAgIEFTU0VSVCghaGFzQW55UGVuZGluZ0NhbGxiYWNrcygpKTsKLSAgICBBU1NFUlQobV9p
blByb2dyZXNzVHJhbnNhY3Rpb25zLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKG1fcGVuZGluZ1Ry
YW5zYWN0aW9ucy5pc0VtcHR5KCkpOwogICAgIEFTU0VSVChtX29wZW5EYXRhYmFzZUNvbm5lY3Rp
b25zLmlzRW1wdHkoKSk7CiAKQEAgLTk3NSw3ICs5ODEsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpkaWRQZXJmb3JtQWJvcnRUcmFuc2FjdGlvbih1aW50NjRfdCBjYWxsYmFja0lkZW50aWZp
ZXIsCiAgICAgTE9HKEluZGV4ZWREQiwgIihtYWluKSBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVy
Zm9ybUFib3J0VHJhbnNhY3Rpb24iKTsKIAogICAgIGlmIChtX3ZlcnNpb25DaGFuZ2VUcmFuc2Fj
dGlvbiAmJiBtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+aW5mbygpLmlkZW50aWZpZXIoKSA9
PSB0cmFuc2FjdGlvbklkZW50aWZpZXIpIHsKLSAgICAgICAgQVNTRVJUKCZtX3ZlcnNpb25DaGFu
Z2VUcmFuc2FjdGlvbi0+ZGF0YWJhc2VDb25uZWN0aW9uKCkgPT0gbV92ZXJzaW9uQ2hhbmdlRGF0
YWJhc2VDb25uZWN0aW9uKTsKKyAgICAgICAgQVNTRVJUKCFtX3ZlcnNpb25DaGFuZ2VEYXRhYmFz
ZUNvbm5lY3Rpb24gfHwgJm1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLT5kYXRhYmFzZUNvbm5l
Y3Rpb24oKSA9PSBtX3ZlcnNpb25DaGFuZ2VEYXRhYmFzZUNvbm5lY3Rpb24pOwogICAgICAgICBB
U1NFUlQobV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPm9yaWdpbmFsRGF0YWJhc2VJbmZvKCkp
OwogICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJ
bmZvPigqbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPm9yaWdpbmFsRGF0YWJhc2VJbmZvKCkp
OwogICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>