<?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>168996</bug_id>
          
          <creation_ts>2017-02-28 15:45:53 -0800</creation_ts>
          <short_desc>Change JSLock to stash PlatformThread instead of std::thread::id.</short_desc>
          <delta_ts>2017-03-01 12:18:03 -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>JavaScriptCore</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>168920</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1282009</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-02-28 15:45:53 -0800</bug_when>
    <thetext>PlatformThread is more useful because it allows us to:
1. suspend / resume threads.
2. find the MachineThreads::Thread which is associated with it.
3. send a signal to the thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282029</commentid>
    <comment_count>1</comment_count>
      <attachid>303005</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-02-28 16:19:58 -0800</bug_when>
    <thetext>Created attachment 303005
proposed patch.

Let&apos;s test this on the EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282109</commentid>
    <comment_count>2</comment_count>
      <attachid>303005</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-02-28 18:28:40 -0800</bug_when>
    <thetext>Comment on attachment 303005
proposed patch.

Thanks for the review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282116</commentid>
    <comment_count>3</comment_count>
      <attachid>303005</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-28 18:56:11 -0800</bug_when>
    <thetext>Comment on attachment 303005
proposed patch.

Clearing flags on attachment: 303005

Committed r213202: &lt;http://trac.webkit.org/changeset/213202&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282117</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-28 18:56:17 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282341</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-03-01 10:54:27 -0800</bug_when>
    <thetext>The patch has been rolled out in r213231: &lt;http://trac.webkit.org/r213231&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282358</commentid>
    <comment_count>6</comment_count>
      <attachid>303087</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-03-01 11:23:31 -0800</bug_when>
    <thetext>Created attachment 303087
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282367</commentid>
    <comment_count>7</comment_count>
      <attachid>303087</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-03-01 11:42:55 -0800</bug_when>
    <thetext>Comment on attachment 303087
proposed patch.

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

r=me

&gt; Source/JavaScriptCore/runtime/JSLock.cpp:173
&gt; +        WTF::storeStoreFence();

This isn&apos;t necessary

&gt; Source/JavaScriptCore/runtime/JSLock.h:96
&gt; +    std::optional&lt;PlatformThread&gt; ownerThread() const { return m_ownerThread; }

you need to do the right thing here by checking m_hasOwnerThread</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282376</commentid>
    <comment_count>8</comment_count>
      <attachid>303087</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-03-01 11:49:31 -0800</bug_when>
    <thetext>Comment on attachment 303087
proposed patch.

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

Thanks for the review.

&gt;&gt; Source/JavaScriptCore/runtime/JSLock.cpp:173
&gt;&gt; +        WTF::storeStoreFence();
&gt; 
&gt; This isn&apos;t necessary

I&apos;ve removed this.

&gt;&gt; Source/JavaScriptCore/runtime/JSLock.h:96
&gt;&gt; +    std::optional&lt;PlatformThread&gt; ownerThread() const { return m_ownerThread; }
&gt; 
&gt; you need to do the right thing here by checking m_hasOwnerThread

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282377</commentid>
    <comment_count>9</comment_count>
      <attachid>303092</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-03-01 11:50:01 -0800</bug_when>
    <thetext>Created attachment 303092
patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282383</commentid>
    <comment_count>10</comment_count>
      <attachid>303095</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-03-01 12:04:02 -0800</bug_when>
    <thetext>Created attachment 303095
patch for landing: added a comment in JSLock to explain why m_ownerThread cannot be an optional.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282385</commentid>
    <comment_count>11</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-03-01 12:18:03 -0800</bug_when>
    <thetext>Thanks for the review.  Landed in r213238: &lt;http://trac.webkit.org/r213238&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303005</attachid>
            <date>2017-02-28 16:19:58 -0800</date>
            <delta_ts>2017-03-01 11:23:31 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-168996.patch</filename>
            <type>text/plain</type>
            <size>20823</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjEzMTg4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBA
CisyMDE3LTAyLTI4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBD
aGFuZ2UgSlNMb2NrIHRvIHN0YXNoIFBsYXRmb3JtVGhyZWFkIGluc3RlYWQgb2Ygc3RkOjp0aHJl
YWQ6OmlkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY4OTk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UGxhdGZvcm1UaHJlYWQgaXMgbW9yZSB1c2VmdWwgYmVjYXVzZSBpdCBhbGxvd3MgdXMgdG86Cisg
ICAgICAgIDEuIGZpbmQgdGhlIE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQgd2hpY2ggaXMgYXNzb2Np
YXRlZCB3aXRoIGl0LgorICAgICAgICAyLiBzdXNwZW5kIC8gcmVzdW1lIHRocmVhZHMuCisgICAg
ICAgIDMuIHNlbmQgYSBzaWduYWwgdG8gYSB0aHJlYWQuCisKKyAgICAgICAgV2UgY2FuJ3QgZG8g
dGhvc2Ugd2l0aCBzdGQ6OnRocmVhZDo6aWQuICBXZSB3aWxsIG5lZWQgb25lIG9yIG1vcmUgb2Yg
dGhlc2UKKyAgICAgICAgY2FwYWJpbGl0aWVzIHRvIGltcGxlbWVudCBub24tcG9sbGluZyBWTSB0
cmFwcyBsYXRlci4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwOgorICAgICAg
ICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpjcmVhdGVGb3JDdXJyZW50VGhyZWFkKToK
KyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6Om1hY2hpbmVUaHJlYWRGb3JDdXJyZW50VGhy
ZWFkKToKKyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6OnJlbW92ZVRocmVhZCk6CisgICAg
ICAgIChKU0M6Ok1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OnN1c3BlbmQpOgorICAgICAgICAoSlND
OjpNYWNoaW5lVGhyZWFkczo6dHJ5Q29weU90aGVyVGhyZWFkU3RhY2tzKToKKyAgICAgICAgKEpT
Qzo6Z2V0Q3VycmVudFBsYXRmb3JtVGhyZWFkKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL01h
Y2hpbmVTdGFja01hcmtlci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsSW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpKU0NlbGw6OmNsYXNzSW5mbyk6CisgICAgICAgICogcnVudGltZS9KU0xv
Y2suY3BwOgorICAgICAgICAoSlNDOjpKU0xvY2s6OmxvY2spOgorICAgICAgICAoSlNDOjpKU0xv
Y2s6OnVubG9jayk6CisgICAgICAgIChKU0M6OkpTTG9jazo6Y3VycmVudFRocmVhZElzSG9sZGlu
Z0xvY2spOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNMb2NrLmg6CisgICAgICAgIChK
U0M6OkpTTG9jazo6b3duZXJUaHJlYWQpOgorICAgICAgICAoSlNDOjpKU0xvY2s6OmN1cnJlbnRU
aHJlYWRJc0hvbGRpbmdMb2NrKToKKyAgICAgICAgKiBydW50aW1lL1BsYXRmb3JtVGhyZWFkLmg6
IEFkZGVkLgorICAgICAgICAoSlNDOjpjdXJyZW50UGxhdGZvcm1UaHJlYWQpOgorICAgICAgICAq
IHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6flZNKToKKyAgICAgICAgKiBydW50
aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlZNOjpvd25lclRocmVhZCk6CisgICAgICAgICogcnVu
dGltZS9XYXRjaGRvZy5jcHA6CisgICAgICAgIChKU0M6OldhdGNoZG9nOjpzZXRUaW1lTGltaXQp
OgorICAgICAgICAoSlNDOjpXYXRjaGRvZzo6c2hvdWxkVGVybWluYXRlKToKKyAgICAgICAgKEpT
Qzo6V2F0Y2hkb2c6OnN0YXJ0VGltZXIpOgorICAgICAgICAoSlNDOjpXYXRjaGRvZzo6c3RvcFRp
bWVyKToKKyAgICAgICAgKiB0b29scy9KU0RvbGxhclZNUHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNEb2xsYXJWTVByb3RvdHlwZTo6Y3VycmVudFRocmVhZE93bnNKU0xvY2spOgorICAg
ICAgICAqIHRvb2xzL1ZNSW5zcGVjdG9yLmNwcDoKKwogMjAxNy0wMi0yOCAgTWFyayBMYW0gIDxt
YXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxlIHRoZSBTaWdpbGxDcmFzaEFuYWx5
emVyIGJ5IGRlZmF1bHQgZm9yIGlPUy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyMTMxODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjQyMSw2ICsy
NDIxLDcgQEAKIAkJRkVEMjg3QjIxNUVDOUE1NzAwREE4MTYxIC8qIExMSW50T3Bjb2RlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUQyODdCMTE1RUM5
QTU3MDBEQTgxNjEgLyogTExJbnRPcGNvZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlGRUQ5NEYyRTE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hk
b2cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVE
OTRGMkIxNzFFM0UyMzAwQkU3N0E0IC8qIFdhdGNoZG9nLmNwcCAqLzsgfTsKIAkJRkVEOTRGMkYx
NzFFM0UyMzAwQkU3N0E0IC8qIFdhdGNoZG9nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRUQ5NEYyQzE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRUU0
M0ZDRTFFNjY0MTcxMDA3N0Q2RDEgLyogUGxhdGZvcm1UaHJlYWQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRTQzRkNEMUU2NjQxNDAwMDc3RDZEMSAv
KiBQbGF0Zm9ybVRocmVhZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUZFRjA0MDUxMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRl
c3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVG
MDQwNTAxQUFFNjYyRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5jcHAgKi87IH07CiAJ
CUZFRkQ2RkM2MUQ1RTc5OTIwMDhGMkYwQiAvKiBKU1N0cmluZ0lubGluZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRkQ2RkM1MUQ1RTc5NzAwMDhG
MkYwQiAvKiBKU1N0cmluZ0lubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCkBAIC00OTk5
LDYgKzUwMDAsNyBAQAogCQlGRUQ5NEYyQzE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2F0Y2hkb2cuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkVEQTUwRDQxQjk3RjQ0MjAwOUEzQjRGIC8qIFBpbmdQb25nU3Rh
Y2tPdmVyZmxvd1Rlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
UGluZ1BvbmdTdGFja092ZXJmbG93VGVzdC5jcHA7IHBhdGggPSBBUEkvdGVzdHMvUGluZ1BvbmdT
dGFja092ZXJmbG93VGVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFREE1
MEQ1MUI5N0Y0RDkwMDlBM0I0RiAvKiBQaW5nUG9uZ1N0YWNrT3ZlcmZsb3dUZXN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBpbmdQb25nU3RhY2tPdmVyZmxvd1Rlc3QuaDsg
cGF0aCA9IEFQSS90ZXN0cy9QaW5nUG9uZ1N0YWNrT3ZlcmZsb3dUZXN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUZFRTQzRkNEMUU2NjQxNDAwMDc3RDZEMSAvKiBQbGF0Zm9ybVRo
cmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVRocmVhZC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUYwNDA1MDFBQUU2NjJEMDBCRDI4QjAg
LyogQ29tcGFyZUFuZFN3YXBUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IENvbXBhcmVBbmRTd2FwVGVzdC5jcHA7IHBhdGggPSBBUEkvdGVzdHMvQ29tcGFyZUFu
ZFN3YXBUZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVGMDQwNTIxQUFF
QzRFRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBDb21wYXJlQW5kU3dhcFRlc3QuaDsgcGF0aCA9IEFQSS90ZXN0cy9Db21w
YXJlQW5kU3dhcFRlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVGRDZGQzUx
RDVFNzk3MDAwOEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1N0cmluZ0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTY3MjgsNiArNjczMCw3IEBACiAJCQkJRjY5MkE4NzgwMjU1NTk3RDAxRkY2MEY3IC8q
IE9wZXJhdGlvbnMuaCAqLywKIAkJCQkwRkUyMjhFQTE0MzZBQjIzMDAxOTZDNDggLyogT3B0aW9u
cy5jcHAgKi8sCiAJCQkJMEZFMjI4RUIxNDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuaCAqLywK
KwkJCQlGRUU0M0ZDRDFFNjY0MTQwMDA3N0Q2RDEgLyogUGxhdGZvcm1UaHJlYWQuaCAqLywKIAkJ
CQk4Njg5MTZBOTE1NUYyODU0MDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCAqLywKIAkJCQkxNDcz
NDFERjFEQzJDRTk2MDBBQTI5QkEgLyogUHJvZ3JhbUV4ZWN1dGFibGUuY3BwICovLAogCQkJCTE0
NzM0MUQzMURDMDJFNkQwMEFBMjlCQSAvKiBQcm9ncmFtRXhlY3V0YWJsZS5oICovLApAQCAtOTE2
Nyw2ICs5MTcwLDcgQEAKIAkJCQkwRjRBMzhGQTFDOEUxM0RGMDAxOTAzMTggLyogU3VwZXJTYW1w
bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MDVCNDFBQzFBNkU1MDFFMDA3MTY3NTcgLyogU3lt
Ym9sLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MDVCNDFBRTFBNkU1MDFFMDA3MTY3NTcgLyogU3lt
Ym9sQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFRTQzRkNFMUU2NjQxNzEwMDc3
RDZEMSAvKiBQbGF0Zm9ybVRocmVhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTk2QjczMjcxQkRB
MDhFRjAwMzMxQjg0IC8qIFN5bWJvbENvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNzA1QjQxQjAxQTZFNTAxRTAwNzE2NzU3IC8qIFN5bWJvbE9iamVjdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNzA1QjQxQjIxQTZFNTAxRTAwNzE2NzU3IC8qIFN5bWJvbFByb3RvdHlwZS5oIGlu
IEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3Rh
Y2tNYXJrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
Y2hpbmVTdGFja01hcmtlci5jcHAJKHJldmlzaW9uIDIxMzE4MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3
OSwxNyArMTc5LDYgQEAgc3RhdGljIEFjdGl2ZU1hY2hpbmVUaHJlYWRzTWFuYWdlciYgYWN0aQog
ICAgIHJldHVybiAqbWFuYWdlcjsKIH0KICAgICAKLXN0YXRpYyBpbmxpbmUgUGxhdGZvcm1UaHJl
YWQgZ2V0Q3VycmVudFBsYXRmb3JtVGhyZWFkKCkKLXsKLSNpZiBPUyhEQVJXSU4pCi0gICAgcmV0
dXJuIHB0aHJlYWRfbWFjaF90aHJlYWRfbnAocHRocmVhZF9zZWxmKCkpOwotI2VsaWYgT1MoV0lO
RE9XUykKLSAgICByZXR1cm4gR2V0Q3VycmVudFRocmVhZElkKCk7Ci0jZWxpZiBVU0UoUFRIUkVB
RFMpCi0gICAgcmV0dXJuIHB0aHJlYWRfc2VsZigpOwotI2VuZGlmCi19Ci0KIE1hY2hpbmVUaHJl
YWRzOjpNYWNoaW5lVGhyZWFkcygpCiAgICAgOiBtX3JlZ2lzdGVyZWRUaHJlYWRzKDApCiAgICAg
LCBtX3RocmVhZFNwZWNpZmljRm9yTWFjaGluZVRocmVhZHMoMCkKQEAgLTIxNCw3ICsyMDMsNyBA
QCBNYWNoaW5lVGhyZWFkczo6fk1hY2hpbmVUaHJlYWRzKCkKIFRocmVhZCogTWFjaGluZVRocmVh
ZHM6OlRocmVhZDo6Y3JlYXRlRm9yQ3VycmVudFRocmVhZCgpCiB7CiAgICAgYXV0byBzdGFja0Jv
dW5kcyA9IHd0ZlRocmVhZERhdGEoKS5zdGFjaygpOwotICAgIHJldHVybiBuZXcgVGhyZWFkKGdl
dEN1cnJlbnRQbGF0Zm9ybVRocmVhZCgpLCBzdGFja0JvdW5kcy5vcmlnaW4oKSwgc3RhY2tCb3Vu
ZHMuZW5kKCkpOworICAgIHJldHVybiBuZXcgVGhyZWFkKGN1cnJlbnRQbGF0Zm9ybVRocmVhZCgp
LCBzdGFja0JvdW5kcy5vcmlnaW4oKSwgc3RhY2tCb3VuZHMuZW5kKCkpOwogfQogCiBib29sIE1h
Y2hpbmVUaHJlYWRzOjpUaHJlYWQ6Om9wZXJhdG9yPT0oY29uc3QgUGxhdGZvcm1UaHJlYWQmIG90
aGVyKSBjb25zdApAQCAtMjUwLDcgKzIzOSw3IEBAIHZvaWQgTWFjaGluZVRocmVhZHM6OmFkZEN1
cnJlbnRUaHJlYWQoKQogVGhyZWFkKiBNYWNoaW5lVGhyZWFkczo6bWFjaGluZVRocmVhZEZvckN1
cnJlbnRUaHJlYWQoKQogewogICAgIExvY2tIb2xkZXIgbG9jayhtX3JlZ2lzdGVyZWRUaHJlYWRz
TXV0ZXgpOwotICAgIFBsYXRmb3JtVGhyZWFkIHBsYXRmb3JtVGhyZWFkID0gZ2V0Q3VycmVudFBs
YXRmb3JtVGhyZWFkKCk7CisgICAgUGxhdGZvcm1UaHJlYWQgcGxhdGZvcm1UaHJlYWQgPSBjdXJy
ZW50UGxhdGZvcm1UaHJlYWQoKTsKICAgICBmb3IgKFRocmVhZCogdGhyZWFkID0gbV9yZWdpc3Rl
cmVkVGhyZWFkczsgdGhyZWFkOyB0aHJlYWQgPSB0aHJlYWQtPm5leHQpIHsKICAgICAgICAgaWYg
KCp0aHJlYWQgPT0gcGxhdGZvcm1UaHJlYWQpCiAgICAgICAgICAgICByZXR1cm4gdGhyZWFkOwpA
QCAtMjgyLDcgKzI3MSw3IEBAIHZvaWQgVEhSRUFEX1NQRUNJRklDX0NBTEwgTWFjaGluZVRocmVh
ZHMKICAgICAgICAgICAgIHJldHVybjsKICNlbmRpZgogCi0gICAgICAgIG1hY2hpbmVUaHJlYWRz
LT5yZW1vdmVUaHJlYWRJZkZvdW5kKGdldEN1cnJlbnRQbGF0Zm9ybVRocmVhZCgpKTsKKyAgICAg
ICAgbWFjaGluZVRocmVhZHMtPnJlbW92ZVRocmVhZElmRm91bmQoY3VycmVudFBsYXRmb3JtVGhy
ZWFkKCkpOwogICAgIH0KIH0KIApAQCAtMzc1LDcgKzM2NCw3IEBAIGJvb2wgTWFjaGluZVRocmVh
ZHM6OlRocmVhZDo6c3VzcGVuZCgpCiAgICAgQVNTRVJUKHRocmVhZElzU3VzcGVuZGVkKTsKICAg
ICByZXR1cm4gdGhyZWFkSXNTdXNwZW5kZWQ7CiAjZWxpZiBVU0UoUFRIUkVBRFMpCi0gICAgQVNT
RVJUX1dJVEhfTUVTU0FHRShnZXRDdXJyZW50UGxhdGZvcm1UaHJlYWQoKSAhPSBwbGF0Zm9ybVRo
cmVhZCwgIkN1cnJlbnRseSB3ZSBkb24ndCBzdXBwb3J0IHN1c3BlbmQgdGhlIGN1cnJlbnQgdGhy
ZWFkIGl0c2VsZi4iKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGN1cnJlbnRQbGF0Zm9ybVRo
cmVhZCgpICE9IHBsYXRmb3JtVGhyZWFkLCAiQ3VycmVudGx5IHdlIGRvbid0IHN1cHBvcnQgc3Vz
cGVuZCB0aGUgY3VycmVudCB0aHJlYWQgaXRzZWxmLiIpOwogICAgIHsKICAgICAgICAgLy8gRHVy
aW5nIHN1c3BlbmQsIHN1c3BlbmQgb3IgcmVzdW1lIHNob3VsZCBub3QgYmUgZXhlY3V0ZWQgZnJv
bSB0aGUgb3RoZXIgdGhyZWFkcy4KICAgICAgICAgLy8gV2UgdXNlIGdsb2JhbCBsb2NrIGluc3Rl
YWQgb2YgcGVyIHRocmVhZCBsb2NrLgpAQCAtOTQ4LDE0ICs5MzcsMTQgQEAgYm9vbCBNYWNoaW5l
VGhyZWFkczo6dHJ5Q29weU90aGVyVGhyZWFkUwogCiAgICAgKnNpemUgPSAwOwogCi0gICAgUGxh
dGZvcm1UaHJlYWQgY3VycmVudFBsYXRmb3JtVGhyZWFkID0gZ2V0Q3VycmVudFBsYXRmb3JtVGhy
ZWFkKCk7CisgICAgUGxhdGZvcm1UaHJlYWQgcGxhdGZvcm1UaHJlYWQgPSBjdXJyZW50UGxhdGZv
cm1UaHJlYWQoKTsKICAgICBpbnQgbnVtYmVyT2ZUaHJlYWRzID0gMDsgLy8gVXNpbmcgMCB0byBk
ZW5vdGUgdGhhdCB3ZSBoYXZlbid0IGNvdW50ZWQgdGhlIG51bWJlciBvZiB0aHJlYWRzIHlldC4K
ICAgICBpbnQgaW5kZXggPSAxOwogICAgIFRocmVhZCogdGhyZWFkc1RvQmVEZWxldGVkID0gbnVs
bHB0cjsKIAogICAgIFRocmVhZCogcHJldmlvdXNUaHJlYWQgPSBudWxscHRyOwogICAgIGZvciAo
VGhyZWFkKiB0aHJlYWQgPSBtX3JlZ2lzdGVyZWRUaHJlYWRzOyB0aHJlYWQ7IGluZGV4KyspIHsK
LSAgICAgICAgaWYgKCp0aHJlYWQgIT0gY3VycmVudFBsYXRmb3JtVGhyZWFkKSB7CisgICAgICAg
IGlmICgqdGhyZWFkICE9IHBsYXRmb3JtVGhyZWFkKSB7CiAgICAgICAgICAgICBib29sIHN1Y2Nl
c3MgPSB0aHJlYWQtPnN1c3BlbmQoKTsKICNpZiBPUyhEQVJXSU4pCiAgICAgICAgICAgICBpZiAo
IXN1Y2Nlc3MpIHsKQEAgLTk5OSwxMiArOTg4LDEyIEBAIGJvb2wgTWFjaGluZVRocmVhZHM6OnRy
eUNvcHlPdGhlclRocmVhZFMKICAgICB9CiAKICAgICBmb3IgKFRocmVhZCogdGhyZWFkID0gbV9y
ZWdpc3RlcmVkVGhyZWFkczsgdGhyZWFkOyB0aHJlYWQgPSB0aHJlYWQtPm5leHQpIHsKLSAgICAg
ICAgaWYgKCp0aHJlYWQgIT0gY3VycmVudFBsYXRmb3JtVGhyZWFkKQorICAgICAgICBpZiAoKnRo
cmVhZCAhPSBwbGF0Zm9ybVRocmVhZCkKICAgICAgICAgICAgIHRyeUNvcHlPdGhlclRocmVhZFN0
YWNrKHRocmVhZCwgYnVmZmVyLCBjYXBhY2l0eSwgc2l6ZSk7CiAgICAgfQogCiAgICAgZm9yIChU
aHJlYWQqIHRocmVhZCA9IG1fcmVnaXN0ZXJlZFRocmVhZHM7IHRocmVhZDsgdGhyZWFkID0gdGhy
ZWFkLT5uZXh0KSB7Ci0gICAgICAgIGlmICgqdGhyZWFkICE9IGN1cnJlbnRQbGF0Zm9ybVRocmVh
ZCkKKyAgICAgICAgaWYgKCp0aHJlYWQgIT0gcGxhdGZvcm1UaHJlYWQpCiAgICAgICAgICAgICB0
aHJlYWQtPnJlc3VtZSgpOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFjaGluZVN0YWNrTWFya2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmgJKHJldmlzaW9uIDIxMzE4MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMSwxNiArMjEsMTMgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJQbGF0Zm9y
bVRocmVhZC5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyU3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvTG9j
ay5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZWRM
YW1iZGEuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KIAotI2lmIE9TKERBUldJ
TikKLSNpbmNsdWRlIDxtYWNoL3RocmVhZF9hY3QuaD4KLSNlbmRpZgotCiAjaWYgVVNFKFBUSFJF
QURTKSAmJiAhT1MoV0lORE9XUykgJiYgIU9TKERBUldJTikKICNpbmNsdWRlIDxzZW1hcGhvcmUu
aD4KICNpbmNsdWRlIDxzaWduYWwuaD4KQEAgLTQzLDE0ICs0MCw2IEBACiAjZW5kaWYKICNlbmRp
ZgogCi0jaWYgT1MoREFSV0lOKQotdHlwZWRlZiBtYWNoX3BvcnRfdCBQbGF0Zm9ybVRocmVhZDsK
LSNlbGlmIE9TKFdJTkRPV1MpCi10eXBlZGVmIERXT1JEIFBsYXRmb3JtVGhyZWFkOwotI2VsaWYg
VVNFKFBUSFJFQURTKQotdHlwZWRlZiBwdGhyZWFkX3QgUGxhdGZvcm1UaHJlYWQ7Ci0jZW5kaWYg
Ly8gT1MoREFSV0lOKQotCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQ29kZUJsb2NrU2V0OwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAko
cmV2aXNpb24gMjEzMTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzgsOSArMjc4LDkgQEAgQUxXQVlTX0lOTElO
RSBjb25zdCBDbGFzc0luZm8qIEpTQ2VsbDo6YwogICAgIC8vIFdoYXQgd2UgcmVhbGx5IHdhbnQg
dG8gYXNzZXJ0IGhlcmUgaXMgdGhhdCB3ZSdyZSBub3QgY3VycmVudGx5IGRlc3RydWN0aW5nIHRo
aXMgb2JqZWN0ICh3aGljaCBtYWtlcyBpdHMgY2xhc3NJbmZvCiAgICAgLy8gaW52YWxpZCkuIElm
IG11dGF0b3JTdGF0ZSgpID09IE11dGF0b3JTdGF0ZTo6UnVubmluZywgdGhlbiB3ZSdyZSBub3Qg
Y3VycmVudGx5IHN3ZWVwaW5nLCBhbmQgdGhlcmVmb3JlIGNhbm5vdCBiZQogICAgIC8vIGRlc3Ry
dWN0aW5nIHRoZSBvYmplY3QuIFRoZSBHQyB0aHJlYWQgb3IgSklUIHRocmVhZHMsIHVubGlrZSB0
aGUgbXV0YXRvciB0aHJlYWQsIGFyZSBhYmxlIHRvIGFjY2VzcyBjbGFzc0luZm8KLSAgICAvLyBp
bmRlcGVuZGVudCBvZiB3aGV0aGVyIHRoZSBtdXRhdG9yIHRocmVhZCBpcyBzd2VlcGluZyBvciBu
b3QuIEhlbmNlLCB3ZSBhbHNvIGNoZWNrIGZvciBvd25lclRocmVhZCgpICE9Ci0gICAgLy8gc3Rk
Ojp0aGlzX3RocmVhZDo6Z2V0X2lkKCkgdG8gYWxsb3cgdGhlIEdDIHRocmVhZCBvciBKSVQgdGhy
ZWFkcyB0byBwYXNzIHRoaXMgYXNzZXJ0aW9uLgotICAgIEFTU0VSVCh2bS5oZWFwLm11dGF0b3JT
dGF0ZSgpICE9IE11dGF0b3JTdGF0ZTo6U3dlZXBpbmcgfHwgdm0uYXBpTG9jaygpLm93bmVyVGhy
ZWFkKCkgIT0gc3RkOjp0aGlzX3RocmVhZDo6Z2V0X2lkKCkpOworICAgIC8vIGluZGVwZW5kZW50
IG9mIHdoZXRoZXIgdGhlIG11dGF0b3IgdGhyZWFkIGlzIHN3ZWVwaW5nIG9yIG5vdC4gSGVuY2Us
IHdlIGFsc28gY2hlY2sgZm9yICFjdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpCisgICAg
Ly8gdG8gYWxsb3cgdGhlIEdDIHRocmVhZCBvciBKSVQgdGhyZWFkcyB0byBwYXNzIHRoaXMgYXNz
ZXJ0aW9uLgorICAgIEFTU0VSVCh2bS5oZWFwLm11dGF0b3JTdGF0ZSgpICE9IE11dGF0b3JTdGF0
ZTo6U3dlZXBpbmcgfHwgIXZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwogICAg
IHJldHVybiBzdHJ1Y3R1cmUodm0pLT5jbGFzc0luZm8oKTsKIH0KIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCShyZXZpc2lvbiAyMTMxODEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
NSw4ICs3NSw3IEBAIEpTTG9ja0hvbGRlcjo6fkpTTG9ja0hvbGRlcigpCiB9CiAKIEpTTG9jazo6
SlNMb2NrKFZNKiB2bSkKLSAgICA6IG1fb3duZXJUaHJlYWRJRChzdGQ6OnRocmVhZDo6aWQoKSkK
LSAgICAsIG1fbG9ja0NvdW50KDApCisgICAgOiBtX2xvY2tDb3VudCgwKQogICAgICwgbV9sb2Nr
RHJvcERlcHRoKDApCiAgICAgLCBtX3ZtKHZtKQogICAgICwgbV9lbnRyeUF0b21pY1N0cmluZ1Rh
YmxlKG51bGxwdHIpCkBAIC0xMTAsNyArMTA5LDcgQEAgdm9pZCBKU0xvY2s6OmxvY2soaW50cHRy
X3QgbG9ja0NvdW50KQogICAgICAgICBtX2xvY2subG9jaygpOwogICAgIH0KIAotICAgIG1fb3du
ZXJUaHJlYWRJRCA9IHN0ZDo6dGhpc190aHJlYWQ6OmdldF9pZCgpOworICAgIG1fb3duZXJUaHJl
YWQgPSBjdXJyZW50UGxhdGZvcm1UaHJlYWQoKTsKICAgICBBU1NFUlQoIW1fbG9ja0NvdW50KTsK
ICAgICBtX2xvY2tDb3VudCA9IGxvY2tDb3VudDsKIApAQCAtMTY4LDcgKzE2Nyw3IEBAIHZvaWQg
SlNMb2NrOjp1bmxvY2soaW50cHRyX3QgdW5sb2NrQ291bnQKICAgICBtX2xvY2tDb3VudCAtPSB1
bmxvY2tDb3VudDsKIAogICAgIGlmICghbV9sb2NrQ291bnQpIHsKLSAgICAgICAgbV9vd25lclRo
cmVhZElEID0gc3RkOjp0aHJlYWQ6OmlkKCk7CisgICAgICAgIG1fb3duZXJUaHJlYWQgPSB7IH07
CiAgICAgICAgIG1fbG9jay51bmxvY2soKTsKICAgICB9CiB9CkBAIC0yMDIsMTEgKzIwMSw2IEBA
IHZvaWQgSlNMb2NrOjp1bmxvY2soRXhlY1N0YXRlKiBleGVjKQogICAgIGV4ZWMtPnZtKCkuYXBp
TG9jaygpLnVubG9jaygpOwogfQogCi1ib29sIEpTTG9jazo6Y3VycmVudFRocmVhZElzSG9sZGlu
Z0xvY2soKQotewotICAgIHJldHVybiBtX293bmVyVGhyZWFkSUQgPT0gc3RkOjp0aGlzX3RocmVh
ZDo6Z2V0X2lkKCk7Ci19Ci0KIC8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgbnVtYmVyIG9m
IGxvY2tzIHRoYXQgd2VyZSBkcm9wcGVkLgogdW5zaWduZWQgSlNMb2NrOjpkcm9wQWxsTG9ja3Mo
RHJvcEFsbExvY2tzKiBkcm9wcGVyKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNMb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNMb2NrLmgJKHJldmlzaW9uIDIxMzE4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsyMCw4IEBACiAKICNwcmFn
bWEgb25jZQogCisjaW5jbHVkZSAiUGxhdGZvcm1UaHJlYWQuaCIKICNpbmNsdWRlIDxtdXRleD4K
LSNpbmNsdWRlIDx0aHJlYWQ+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRl
IDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtOTMsOCArOTMs
OCBAQCBwdWJsaWM6CiAKICAgICBWTSogdm0oKSB7IHJldHVybiBtX3ZtOyB9CiAKLSAgICBzdGQ6
OnRocmVhZDo6aWQgb3duZXJUaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX293bmVyVGhyZWFkSUQ7
IH0KLSAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2Nr
KCk7CisgICAgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVRocmVhZD4gb3duZXJUaHJlYWQoKSBjb25z
dCB7IHJldHVybiBtX293bmVyVGhyZWFkOyB9CisgICAgYm9vbCBjdXJyZW50VGhyZWFkSXNIb2xk
aW5nTG9jaygpIHsgcmV0dXJuIG1fb3duZXJUaHJlYWQgPT0gY3VycmVudFBsYXRmb3JtVGhyZWFk
KCk7IH0KIAogICAgIHZvaWQgd2lsbERlc3Ryb3lWTShWTSopOwogCkBAIC0xMjYsNyArMTI2LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGdyYWJBbGxMb2NrcyhEcm9wQWxsTG9ja3MqLCB1bnNpZ25l
ZCBsb2NrQ291bnQpOwogCiAgICAgTG9jayBtX2xvY2s7Ci0gICAgc3RkOjp0aHJlYWQ6OmlkIG1f
b3duZXJUaHJlYWRJRDsKKyAgICBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtVGhyZWFkPiBtX293bmVy
VGhyZWFkOwogICAgIGludHB0cl90IG1fbG9ja0NvdW50OwogICAgIHVuc2lnbmVkIG1fbG9ja0Ry
b3BEZXB0aDsKICAgICBib29sIG1fc2hvdWxkUmVsZWFzZUhlYXBBY2Nlc3M7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QbGF0Zm9ybVRocmVhZC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1BsYXRmb3JtVGhyZWFkLmgJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUGxhdGZvcm1UaHJlYWQuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBPUyhEQVJXSU4pIHx8IE9T
KFVOSVgpCisjaW5jbHVkZSA8cHRocmVhZC5oPgorI2VuZGlmCisKKyNpZiBPUyhEQVJXSU4pCisj
aW5jbHVkZSA8bWFjaC90aHJlYWRfYWN0Lmg+CisjZWxpZiBPUyhXSU5ET1dTKQorI2luY2x1ZGUg
PHdpbmRvd3MuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgSlNDIHsKKworI2lmIE9TKERBUldJTikK
K3R5cGVkZWYgbWFjaF9wb3J0X3QgUGxhdGZvcm1UaHJlYWQ7CisjZWxpZiBPUyhXSU5ET1dTKQor
dHlwZWRlZiBEV09SRCBQbGF0Zm9ybVRocmVhZDsKKyNlbGlmIFVTRShQVEhSRUFEUykKK3R5cGVk
ZWYgcHRocmVhZF90IFBsYXRmb3JtVGhyZWFkOworI2VuZGlmIC8vIE9TKERBUldJTikKKyAgICAK
K2lubGluZSBQbGF0Zm9ybVRocmVhZCBjdXJyZW50UGxhdGZvcm1UaHJlYWQoKQoreworI2lmIE9T
KERBUldJTikKKyAgICByZXR1cm4gcHRocmVhZF9tYWNoX3RocmVhZF9ucChwdGhyZWFkX3NlbGYo
KSk7CisjZWxpZiBPUyhXSU5ET1dTKQorICAgIHJldHVybiBHZXRDdXJyZW50VGhyZWFkSWQoKTsK
KyNlbGlmIFVTRShQVEhSRUFEUykKKyAgICByZXR1cm4gcHRocmVhZF9zZWxmKCk7CisjZW5kaWYK
K30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCShyZXZpc2lvbiAyMTMxODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5Miw3ICszOTIsNyBAQCBWTTo6flZNKCkKICAg
ICAvLyBDbGVhciB0aGlzIGZpcnN0IHRvIGVuc3VyZSB0aGF0IG5vYm9keSB0cmllcyB0byByZW1v
dmUgdGhlbXNlbHZlcyBmcm9tIGl0LgogICAgIG1fcGVyQnl0ZWNvZGVQcm9maWxlciA9IG51bGxw
dHI7CiAKLSAgICBBU1NFUlQobV9hcGlMb2NrLT5jdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jaygp
KTsKKyAgICBBU1NFUlQoY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7CiAgICAgbV9h
cGlMb2NrLT53aWxsRGVzdHJveVZNKHRoaXMpOwogICAgIGhlYXAubGFzdENoYW5jZVRvRmluYWxp
emUoKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAyMTMx
ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkp
CkBAIC02MTEsOCArNjExLDYgQEAgcHVibGljOgogICAgIFJUVHJhY2VMaXN0KiBtX3J0VHJhY2VM
aXN0OwogI2VuZGlmCiAKLSAgICBzdGQ6OnRocmVhZDo6aWQgb3duZXJUaHJlYWQoKSBjb25zdCB7
IHJldHVybiBtX2FwaUxvY2stPm93bmVyVGhyZWFkKCk7IH0KLQogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgcmVzZXREYXRlQ2FjaGUoKTsKIAogICAgIFJlZ0V4cENhY2hlKiByZWdFeHBDYWNo
ZSgpIHsgcmV0dXJuIG1fcmVnRXhwQ2FjaGU7IH0KQEAgLTcyNSw2ICs3MjMsOCBAQCBwcml2YXRl
OgogICAgIGJvb2wgaXNTYWZlVG9SZWN1cnNlU29mdENMb29wKCkgY29uc3Q7CiAjZW5kaWYgLy8g
IUVOQUJMRShKSVQpCiAKKyAgICBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtVGhyZWFkPiBvd25lclRo
cmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXBpTG9jay0+b3duZXJUaHJlYWQoKTsgfQorCiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqLCBFeGNlcHRp
b24qKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIHRocm93RXhjZXB0aW9uKEV4ZWNT
dGF0ZSosIEpTVmFsdWUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd0V4
Y2VwdGlvbihFeGVjU3RhdGUqLCBKU09iamVjdCopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvV2F0Y2hkb2cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dhdGNoZG9nLmNwcAkocmV2aXNpb24gMjEzMTgxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvV2F0Y2hkb2cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3
ICs1NSw3IEBAIFdhdGNoZG9nOjpXYXRjaGRvZyhWTSogdm0pCiB2b2lkIFdhdGNoZG9nOjpzZXRU
aW1lTGltaXQoc3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcyBsaW1pdCwKICAgICBTaG91bGRUZXJt
aW5hdGVDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogZGF0YTEsIHZvaWQqIGRhdGEyKQogewotICAg
IEFTU0VSVChtX3ZtLT5vd25lclRocmVhZCgpID09IHN0ZDo6dGhpc190aHJlYWQ6OmdldF9pZCgp
KTsKKyAgICBBU1NFUlQobV92bS0+Y3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7CiAK
ICAgICBtX3RpbWVMaW1pdCA9IGxpbWl0OwogICAgIG1fY2FsbGJhY2sgPSBjYWxsYmFjazsKQEAg
LTY4LDcgKzY4LDcgQEAgdm9pZCBXYXRjaGRvZzo6c2V0VGltZUxpbWl0KHN0ZDo6Y2hyb25vOgog
CiBib29sIFdhdGNoZG9nOjpzaG91bGRUZXJtaW5hdGUoRXhlY1N0YXRlKiBleGVjKQogewotICAg
IEFTU0VSVChtX3ZtLT5vd25lclRocmVhZCgpID09IHN0ZDo6dGhpc190aHJlYWQ6OmdldF9pZCgp
KTsKKyAgICBBU1NFUlQobV92bS0+Y3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7CiAg
ICAgLy8gRklYTUU6IFdpbGwgdW5pbmRlbnQgdGhlIGZvbGxvd2luZyBiZWZvcmUgbGFuZGluZy4g
TGVhdmluZyBpbmRlbnRlZCBmb3Igbm93IHRvIG1pbmltaXplIHRoZSBjb2RlIGRpZmYuCiAgICAg
ewogICAgICAgICBpZiAoY3VycmVudFdhbGxDbG9ja1RpbWUoKSA8IG1fd2FsbENsb2NrRGVhZGxp
bmUpCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBXYXRjaGRvZzo6ZXhpdGVkVk0oKQogdm9pZCBX
YXRjaGRvZzo6c3RhcnRUaW1lcihzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIHRpbWVMaW1pdCkK
IHsKICAgICBBU1NFUlQobV9oYXNFbnRlcmVkVk0pOwotICAgIEFTU0VSVChtX3ZtLT5vd25lclRo
cmVhZCgpID09IHN0ZDo6dGhpc190aHJlYWQ6OmdldF9pZCgpKTsKKyAgICBBU1NFUlQobV92bS0+
Y3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7CiAgICAgQVNTRVJUKGhhc1RpbWVMaW1p
dCgpKTsKICAgICBBU1NFUlQodGltZUxpbWl0IDw9IG1fdGltZUxpbWl0KTsKIApAQCAtMTY4LDcg
KzE2OCw3IEBAIHZvaWQgV2F0Y2hkb2c6OnN0YXJ0VGltZXIoc3RkOjpjaHJvbm86Om0KIHZvaWQg
V2F0Y2hkb2c6OnN0b3BUaW1lcigpCiB7CiAgICAgQVNTRVJUKG1faGFzRW50ZXJlZFZNKTsKLSAg
ICBBU1NFUlQobV92bS0+b3duZXJUaHJlYWQoKSA9PSBzdGQ6OnRoaXNfdGhyZWFkOjpnZXRfaWQo
KSk7CisgICAgQVNTRVJUKG1fdm0tPmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwog
ICAgIG1fY3B1RGVhZGxpbmUgPSBub1RpbWVMaW1pdDsKIH0KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk1Qcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNUHJvdG90eXBlLmNwcAkocmV2aXNp
b24gMjEzMTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk1Qcm90
b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIGNvbnN0IENsYXNzSW5m
byBKU0RvbGxhclZNUHJvdG90eXBlOjpzX2kKICAgICAKIGJvb2wgSlNEb2xsYXJWTVByb3RvdHlw
ZTo6Y3VycmVudFRocmVhZE93bnNKU0xvY2soRXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVy
biBleGVjLT52bSgpLmFwaUxvY2soKS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jaygpOworICAg
IHJldHVybiBleGVjLT52bSgpLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCk7CiB9CiAK
IHN0YXRpYyBib29sIGVuc3VyZUN1cnJlbnRUaHJlYWRPd25zSlNMb2NrKEV4ZWNTdGF0ZSogZXhl
YykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9WTUluc3BlY3Rvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1ZNSW5zcGVjdG9yLmNwcAko
cmV2aXNpb24gMjEzMTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1ZNSW5zcGVj
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDcgKzEzOSw3IEBAIGF1dG8gVk1JbnNwZWN0
b3I6OmNvZGVCbG9ja0Zvck1hY2hpbmVQQygKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG51
bGxwdHI7CiAgICAgYm9vbCBoYXNUaW1lb3V0ID0gZmFsc2U7CiAgICAgaXRlcmF0ZShbJl0gKFZN
JiB2bSkgewotICAgICAgICBpZiAoIXZtLmFwaUxvY2soKS5jdXJyZW50VGhyZWFkSXNIb2xkaW5n
TG9jaygpKQorICAgICAgICBpZiAoIXZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkp
CiAgICAgICAgICAgICByZXR1cm4gRnVuY3RvclN0YXR1czo6Q29udGludWU7CiAKICAgICAgICAg
Ly8gSXQgaXMgc2FmZSB0byBjYWxsIEhlYXA6OmZvckVhY2hDb2RlQmxvY2tJZ25vcmluZ0pJVFBs
YW5zIGhlcmUgYmVjYXVzZToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303087</attachid>
            <date>2017-03-01 11:23:31 -0800</date>
            <delta_ts>2017-03-01 11:50:01 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-168996.patch</filename>
            <type>text/plain</type>
            <size>19046</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjEzMjMyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBA
CisyMDE3LTAzLTAxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBb
UmUtbGFuZGluZ10gQ2hhbmdlIEpTTG9jayB0byBzdGFzaCBQbGF0Zm9ybVRocmVhZCBpbnN0ZWFk
IG9mIHN0ZDo6dGhyZWFkOjppZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2ODk5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFBsYXRmb3JtVGhyZWFkIGlzIG1vcmUgdXNlZnVsIGJlY2F1c2UgaXQgYWxs
b3dzIHVzIHRvOgorICAgICAgICAxLiBmaW5kIHRoZSBNYWNoaW5lVGhyZWFkczo6VGhyZWFkIHdo
aWNoIGlzIGFzc29jaWF0ZWQgd2l0aCBpdC4KKyAgICAgICAgMi4gc3VzcGVuZCAvIHJlc3VtZSB0
aHJlYWRzLgorICAgICAgICAzLiBzZW5kIGEgc2lnbmFsIHRvIGEgdGhyZWFkLgorCisgICAgICAg
IFdlIGNhbid0IGRvIHRob3NlIHdpdGggc3RkOjp0aHJlYWQ6OmlkLiAgV2Ugd2lsbCBuZWVkIG9u
ZSBvciBtb3JlIG9mIHRoZXNlCisgICAgICAgIGNhcGFiaWxpdGllcyB0byBpbXBsZW1lbnQgbm9u
LXBvbGxpbmcgVk0gdHJhcHMgbGF0ZXIuCisKKyAgICAgICAgVXBkYXRlOiBTaW5jZSB3ZSBkb24n
dCBoYXZlIGEgY2Fub25pY2FsICJ1bmluaXRpYWxpemVkIiB2YWx1ZSBmb3IgUGxhdGZvcm1UaHJl
YWQsCisgICAgICAgIHdlIG5vdyBoYXZlIGEgSlNMb2NrOjptX2hhc093bmVyVGhyZWFkIGZsYWcg
dGhhdCBpcyBzZXQgdG8gdHJ1ZSBpZiBhbmQgb25seSB0aGUKKyAgICAgICAgbV9vd25lclRocmVh
ZCB2YWx1ZSBpcyB2YWxpZC4gIEpTTG9jazo6Y3VycmVudFRocmVhZElzSG9sZGluZ0xvY2soKSBu
b3cgY2hlY2tzCisgICAgICAgIEpTTG9jazo6bV9oYXNPd25lclRocmVhZCBiZWZvcmUgZG9pbmcg
dGhlIHRocmVhZCBpZGVudGl0eSBjb21wYXJpc29uLgorCisgICAgICAgICogSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBoZWFwL01hY2hpbmVTdGFj
a01hcmtlci5jcHA6CisgICAgICAgIChKU0M6Ok1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OmNyZWF0
ZUZvckN1cnJlbnRUaHJlYWQpOgorICAgICAgICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6bWFjaGlu
ZVRocmVhZEZvckN1cnJlbnRUaHJlYWQpOgorICAgICAgICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6
cmVtb3ZlVGhyZWFkKToKKyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6OlRocmVhZDo6c3Vz
cGVuZCk6CisgICAgICAgIChKU0M6Ok1hY2hpbmVUaHJlYWRzOjp0cnlDb3B5T3RoZXJUaHJlYWRT
dGFja3MpOgorICAgICAgICAoSlNDOjpnZXRDdXJyZW50UGxhdGZvcm1UaHJlYWQpOiBEZWxldGVk
LgorICAgICAgICAqIGhlYXAvTWFjaGluZVN0YWNrTWFya2VyLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0NlbGxJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6Y2xhc3NJbmZvKToKKyAg
ICAgICAgKiBydW50aW1lL0pTTG9jay5jcHA6CisgICAgICAgIChKU0M6OkpTTG9jazo6SlNMb2Nr
KToKKyAgICAgICAgKEpTQzo6SlNMb2NrOjpsb2NrKToKKyAgICAgICAgKEpTQzo6SlNMb2NrOjp1
bmxvY2spOgorICAgICAgICAoSlNDOjpKU0xvY2s6OmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2Nr
KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTTG9jay5oOgorICAgICAgICAoSlNDOjpK
U0xvY2s6Om93bmVyVGhyZWFkKToKKyAgICAgICAgKEpTQzo6SlNMb2NrOjpjdXJyZW50VGhyZWFk
SXNIb2xkaW5nTG9jayk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjp+Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKEpTQzo6Vk06Om93
bmVyVGhyZWFkKToKKyAgICAgICAgKiBydW50aW1lL1dhdGNoZG9nLmNwcDoKKyAgICAgICAgKEpT
Qzo6V2F0Y2hkb2c6OnNldFRpbWVMaW1pdCk6CisgICAgICAgIChKU0M6OldhdGNoZG9nOjpzaG91
bGRUZXJtaW5hdGUpOgorICAgICAgICAoSlNDOjpXYXRjaGRvZzo6c3RhcnRUaW1lcik6CisgICAg
ICAgIChKU0M6OldhdGNoZG9nOjpzdG9wVGltZXIpOgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFy
Vk1Qcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0RvbGxhclZNUHJvdG90eXBlOjpjdXJy
ZW50VGhyZWFkT3duc0pTTG9jayk6CisgICAgICAgICogdG9vbHMvVk1JbnNwZWN0b3IuY3BwOgor
CiAyMDE3LTAzLTAxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBS
RUdSRVNTSU9OIChyMjEzMjAyPyk6IEFzc2VydGlvbiBmYWlsZWQ6ICghImluaXRpYWxpemVkKCki
KSwgZnVuY3Rpb24gb3BlcmF0b3IoKS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyMTMyMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjQyMyw2ICsy
NDIzLDcgQEAKIAkJRkVEMjg3QjIxNUVDOUE1NzAwREE4MTYxIC8qIExMSW50T3Bjb2RlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUQyODdCMTE1RUM5
QTU3MDBEQTgxNjEgLyogTExJbnRPcGNvZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlGRUQ5NEYyRTE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hk
b2cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVE
OTRGMkIxNzFFM0UyMzAwQkU3N0E0IC8qIFdhdGNoZG9nLmNwcCAqLzsgfTsKIAkJRkVEOTRGMkYx
NzFFM0UyMzAwQkU3N0E0IC8qIFdhdGNoZG9nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRUQ5NEYyQzE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRUU0
M0ZDRTFFNjY0MTcxMDA3N0Q2RDEgLyogUGxhdGZvcm1UaHJlYWQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRTQzRkNEMUU2NjQxNDAwMDc3RDZEMSAv
KiBQbGF0Zm9ybVRocmVhZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUZFRjA0MDUxMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRl
c3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVG
MDQwNTAxQUFFNjYyRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5jcHAgKi87IH07CiAJ
CUZFRkQ2RkM2MUQ1RTc5OTIwMDhGMkYwQiAvKiBKU1N0cmluZ0lubGluZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRkQ2RkM1MUQ1RTc5NzAwMDhG
MkYwQiAvKiBKU1N0cmluZ0lubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCkBAIC01MDAz
LDYgKzUwMDQsNyBAQAogCQlGRUQ5NEYyQzE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2F0Y2hkb2cuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkVEQTUwRDQxQjk3RjQ0MjAwOUEzQjRGIC8qIFBpbmdQb25nU3Rh
Y2tPdmVyZmxvd1Rlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
UGluZ1BvbmdTdGFja092ZXJmbG93VGVzdC5jcHA7IHBhdGggPSBBUEkvdGVzdHMvUGluZ1BvbmdT
dGFja092ZXJmbG93VGVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFREE1
MEQ1MUI5N0Y0RDkwMDlBM0I0RiAvKiBQaW5nUG9uZ1N0YWNrT3ZlcmZsb3dUZXN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBpbmdQb25nU3RhY2tPdmVyZmxvd1Rlc3QuaDsg
cGF0aCA9IEFQSS90ZXN0cy9QaW5nUG9uZ1N0YWNrT3ZlcmZsb3dUZXN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUZFRTQzRkNEMUU2NjQxNDAwMDc3RDZEMSAvKiBQbGF0Zm9ybVRo
cmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVRocmVhZC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUYwNDA1MDFBQUU2NjJEMDBCRDI4QjAg
LyogQ29tcGFyZUFuZFN3YXBUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IENvbXBhcmVBbmRTd2FwVGVzdC5jcHA7IHBhdGggPSBBUEkvdGVzdHMvQ29tcGFyZUFu
ZFN3YXBUZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVGMDQwNTIxQUFF
QzRFRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBDb21wYXJlQW5kU3dhcFRlc3QuaDsgcGF0aCA9IEFQSS90ZXN0cy9Db21w
YXJlQW5kU3dhcFRlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVGRDZGQzUx
RDVFNzk3MDAwOEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1N0cmluZ0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTY3MzIsNiArNjczNCw3IEBACiAJCQkJRjY5MkE4NzgwMjU1NTk3RDAxRkY2MEY3IC8q
IE9wZXJhdGlvbnMuaCAqLywKIAkJCQkwRkUyMjhFQTE0MzZBQjIzMDAxOTZDNDggLyogT3B0aW9u
cy5jcHAgKi8sCiAJCQkJMEZFMjI4RUIxNDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuaCAqLywK
KwkJCQlGRUU0M0ZDRDFFNjY0MTQwMDA3N0Q2RDEgLyogUGxhdGZvcm1UaHJlYWQuaCAqLywKIAkJ
CQk4Njg5MTZBOTE1NUYyODU0MDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCAqLywKIAkJCQkxNDcz
NDFERjFEQzJDRTk2MDBBQTI5QkEgLyogUHJvZ3JhbUV4ZWN1dGFibGUuY3BwICovLAogCQkJCTE0
NzM0MUQzMURDMDJFNkQwMEFBMjlCQSAvKiBQcm9ncmFtRXhlY3V0YWJsZS5oICovLApAQCAtOTE3
NCw2ICs5MTc3LDcgQEAKIAkJCQkwRjRBMzhGQTFDOEUxM0RGMDAxOTAzMTggLyogU3VwZXJTYW1w
bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MDVCNDFBQzFBNkU1MDFFMDA3MTY3NTcgLyogU3lt
Ym9sLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MDVCNDFBRTFBNkU1MDFFMDA3MTY3NTcgLyogU3lt
Ym9sQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFRTQzRkNFMUU2NjQxNzEwMDc3
RDZEMSAvKiBQbGF0Zm9ybVRocmVhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTk2QjczMjcxQkRB
MDhFRjAwMzMxQjg0IC8qIFN5bWJvbENvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNzA1QjQxQjAxQTZFNTAxRTAwNzE2NzU3IC8qIFN5bWJvbE9iamVjdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNzA1QjQxQjIxQTZFNTAxRTAwNzE2NzU3IC8qIFN5bWJvbFByb3RvdHlwZS5oIGlu
IEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3Rh
Y2tNYXJrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
Y2hpbmVTdGFja01hcmtlci5jcHAJKHJldmlzaW9uIDIxMzIzMSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3
OSwxNyArMTc5LDYgQEAgc3RhdGljIEFjdGl2ZU1hY2hpbmVUaHJlYWRzTWFuYWdlciYgYWN0aQog
ICAgIHJldHVybiAqbWFuYWdlcjsKIH0KICAgICAKLXN0YXRpYyBpbmxpbmUgUGxhdGZvcm1UaHJl
YWQgZ2V0Q3VycmVudFBsYXRmb3JtVGhyZWFkKCkKLXsKLSNpZiBPUyhEQVJXSU4pCi0gICAgcmV0
dXJuIHB0aHJlYWRfbWFjaF90aHJlYWRfbnAocHRocmVhZF9zZWxmKCkpOwotI2VsaWYgT1MoV0lO
RE9XUykKLSAgICByZXR1cm4gR2V0Q3VycmVudFRocmVhZElkKCk7Ci0jZWxpZiBVU0UoUFRIUkVB
RFMpCi0gICAgcmV0dXJuIHB0aHJlYWRfc2VsZigpOwotI2VuZGlmCi19Ci0KIE1hY2hpbmVUaHJl
YWRzOjpNYWNoaW5lVGhyZWFkcygpCiAgICAgOiBtX3JlZ2lzdGVyZWRUaHJlYWRzKDApCiAgICAg
LCBtX3RocmVhZFNwZWNpZmljRm9yTWFjaGluZVRocmVhZHMoMCkKQEAgLTIxNCw3ICsyMDMsNyBA
QCBNYWNoaW5lVGhyZWFkczo6fk1hY2hpbmVUaHJlYWRzKCkKIFRocmVhZCogTWFjaGluZVRocmVh
ZHM6OlRocmVhZDo6Y3JlYXRlRm9yQ3VycmVudFRocmVhZCgpCiB7CiAgICAgYXV0byBzdGFja0Jv
dW5kcyA9IHd0ZlRocmVhZERhdGEoKS5zdGFjaygpOwotICAgIHJldHVybiBuZXcgVGhyZWFkKGdl
dEN1cnJlbnRQbGF0Zm9ybVRocmVhZCgpLCBzdGFja0JvdW5kcy5vcmlnaW4oKSwgc3RhY2tCb3Vu
ZHMuZW5kKCkpOworICAgIHJldHVybiBuZXcgVGhyZWFkKGN1cnJlbnRQbGF0Zm9ybVRocmVhZCgp
LCBzdGFja0JvdW5kcy5vcmlnaW4oKSwgc3RhY2tCb3VuZHMuZW5kKCkpOwogfQogCiBib29sIE1h
Y2hpbmVUaHJlYWRzOjpUaHJlYWQ6Om9wZXJhdG9yPT0oY29uc3QgUGxhdGZvcm1UaHJlYWQmIG90
aGVyKSBjb25zdApAQCAtMjUwLDcgKzIzOSw3IEBAIHZvaWQgTWFjaGluZVRocmVhZHM6OmFkZEN1
cnJlbnRUaHJlYWQoKQogVGhyZWFkKiBNYWNoaW5lVGhyZWFkczo6bWFjaGluZVRocmVhZEZvckN1
cnJlbnRUaHJlYWQoKQogewogICAgIExvY2tIb2xkZXIgbG9jayhtX3JlZ2lzdGVyZWRUaHJlYWRz
TXV0ZXgpOwotICAgIFBsYXRmb3JtVGhyZWFkIHBsYXRmb3JtVGhyZWFkID0gZ2V0Q3VycmVudFBs
YXRmb3JtVGhyZWFkKCk7CisgICAgUGxhdGZvcm1UaHJlYWQgcGxhdGZvcm1UaHJlYWQgPSBjdXJy
ZW50UGxhdGZvcm1UaHJlYWQoKTsKICAgICBmb3IgKFRocmVhZCogdGhyZWFkID0gbV9yZWdpc3Rl
cmVkVGhyZWFkczsgdGhyZWFkOyB0aHJlYWQgPSB0aHJlYWQtPm5leHQpIHsKICAgICAgICAgaWYg
KCp0aHJlYWQgPT0gcGxhdGZvcm1UaHJlYWQpCiAgICAgICAgICAgICByZXR1cm4gdGhyZWFkOwpA
QCAtMjgyLDcgKzI3MSw3IEBAIHZvaWQgVEhSRUFEX1NQRUNJRklDX0NBTEwgTWFjaGluZVRocmVh
ZHMKICAgICAgICAgICAgIHJldHVybjsKICNlbmRpZgogCi0gICAgICAgIG1hY2hpbmVUaHJlYWRz
LT5yZW1vdmVUaHJlYWRJZkZvdW5kKGdldEN1cnJlbnRQbGF0Zm9ybVRocmVhZCgpKTsKKyAgICAg
ICAgbWFjaGluZVRocmVhZHMtPnJlbW92ZVRocmVhZElmRm91bmQoY3VycmVudFBsYXRmb3JtVGhy
ZWFkKCkpOwogICAgIH0KIH0KIApAQCAtMzc1LDcgKzM2NCw3IEBAIGJvb2wgTWFjaGluZVRocmVh
ZHM6OlRocmVhZDo6c3VzcGVuZCgpCiAgICAgQVNTRVJUKHRocmVhZElzU3VzcGVuZGVkKTsKICAg
ICByZXR1cm4gdGhyZWFkSXNTdXNwZW5kZWQ7CiAjZWxpZiBVU0UoUFRIUkVBRFMpCi0gICAgQVNT
RVJUX1dJVEhfTUVTU0FHRShnZXRDdXJyZW50UGxhdGZvcm1UaHJlYWQoKSAhPSBwbGF0Zm9ybVRo
cmVhZCwgIkN1cnJlbnRseSB3ZSBkb24ndCBzdXBwb3J0IHN1c3BlbmQgdGhlIGN1cnJlbnQgdGhy
ZWFkIGl0c2VsZi4iKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGN1cnJlbnRQbGF0Zm9ybVRo
cmVhZCgpICE9IHBsYXRmb3JtVGhyZWFkLCAiQ3VycmVudGx5IHdlIGRvbid0IHN1cHBvcnQgc3Vz
cGVuZCB0aGUgY3VycmVudCB0aHJlYWQgaXRzZWxmLiIpOwogICAgIHsKICAgICAgICAgLy8gRHVy
aW5nIHN1c3BlbmQsIHN1c3BlbmQgb3IgcmVzdW1lIHNob3VsZCBub3QgYmUgZXhlY3V0ZWQgZnJv
bSB0aGUgb3RoZXIgdGhyZWFkcy4KICAgICAgICAgLy8gV2UgdXNlIGdsb2JhbCBsb2NrIGluc3Rl
YWQgb2YgcGVyIHRocmVhZCBsb2NrLgpAQCAtOTQ4LDE0ICs5MzcsMTQgQEAgYm9vbCBNYWNoaW5l
VGhyZWFkczo6dHJ5Q29weU90aGVyVGhyZWFkUwogCiAgICAgKnNpemUgPSAwOwogCi0gICAgUGxh
dGZvcm1UaHJlYWQgY3VycmVudFBsYXRmb3JtVGhyZWFkID0gZ2V0Q3VycmVudFBsYXRmb3JtVGhy
ZWFkKCk7CisgICAgUGxhdGZvcm1UaHJlYWQgcGxhdGZvcm1UaHJlYWQgPSBjdXJyZW50UGxhdGZv
cm1UaHJlYWQoKTsKICAgICBpbnQgbnVtYmVyT2ZUaHJlYWRzID0gMDsgLy8gVXNpbmcgMCB0byBk
ZW5vdGUgdGhhdCB3ZSBoYXZlbid0IGNvdW50ZWQgdGhlIG51bWJlciBvZiB0aHJlYWRzIHlldC4K
ICAgICBpbnQgaW5kZXggPSAxOwogICAgIFRocmVhZCogdGhyZWFkc1RvQmVEZWxldGVkID0gbnVs
bHB0cjsKIAogICAgIFRocmVhZCogcHJldmlvdXNUaHJlYWQgPSBudWxscHRyOwogICAgIGZvciAo
VGhyZWFkKiB0aHJlYWQgPSBtX3JlZ2lzdGVyZWRUaHJlYWRzOyB0aHJlYWQ7IGluZGV4KyspIHsK
LSAgICAgICAgaWYgKCp0aHJlYWQgIT0gY3VycmVudFBsYXRmb3JtVGhyZWFkKSB7CisgICAgICAg
IGlmICgqdGhyZWFkICE9IHBsYXRmb3JtVGhyZWFkKSB7CiAgICAgICAgICAgICBib29sIHN1Y2Nl
c3MgPSB0aHJlYWQtPnN1c3BlbmQoKTsKICNpZiBPUyhEQVJXSU4pCiAgICAgICAgICAgICBpZiAo
IXN1Y2Nlc3MpIHsKQEAgLTk5OSwxMiArOTg4LDEyIEBAIGJvb2wgTWFjaGluZVRocmVhZHM6OnRy
eUNvcHlPdGhlclRocmVhZFMKICAgICB9CiAKICAgICBmb3IgKFRocmVhZCogdGhyZWFkID0gbV9y
ZWdpc3RlcmVkVGhyZWFkczsgdGhyZWFkOyB0aHJlYWQgPSB0aHJlYWQtPm5leHQpIHsKLSAgICAg
ICAgaWYgKCp0aHJlYWQgIT0gY3VycmVudFBsYXRmb3JtVGhyZWFkKQorICAgICAgICBpZiAoKnRo
cmVhZCAhPSBwbGF0Zm9ybVRocmVhZCkKICAgICAgICAgICAgIHRyeUNvcHlPdGhlclRocmVhZFN0
YWNrKHRocmVhZCwgYnVmZmVyLCBjYXBhY2l0eSwgc2l6ZSk7CiAgICAgfQogCiAgICAgZm9yIChU
aHJlYWQqIHRocmVhZCA9IG1fcmVnaXN0ZXJlZFRocmVhZHM7IHRocmVhZDsgdGhyZWFkID0gdGhy
ZWFkLT5uZXh0KSB7Ci0gICAgICAgIGlmICgqdGhyZWFkICE9IGN1cnJlbnRQbGF0Zm9ybVRocmVh
ZCkKKyAgICAgICAgaWYgKCp0aHJlYWQgIT0gcGxhdGZvcm1UaHJlYWQpCiAgICAgICAgICAgICB0
aHJlYWQtPnJlc3VtZSgpOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFjaGluZVN0YWNrTWFya2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmgJKHJldmlzaW9uIDIxMzIzMSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMSwxNiArMjEsMTMgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJQbGF0Zm9y
bVRocmVhZC5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyU3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvTG9j
ay5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZWRM
YW1iZGEuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KIAotI2lmIE9TKERBUldJ
TikKLSNpbmNsdWRlIDxtYWNoL3RocmVhZF9hY3QuaD4KLSNlbmRpZgotCiAjaWYgVVNFKFBUSFJF
QURTKSAmJiAhT1MoV0lORE9XUykgJiYgIU9TKERBUldJTikKICNpbmNsdWRlIDxzZW1hcGhvcmUu
aD4KICNpbmNsdWRlIDxzaWduYWwuaD4KQEAgLTQzLDE0ICs0MCw2IEBACiAjZW5kaWYKICNlbmRp
ZgogCi0jaWYgT1MoREFSV0lOKQotdHlwZWRlZiBtYWNoX3BvcnRfdCBQbGF0Zm9ybVRocmVhZDsK
LSNlbGlmIE9TKFdJTkRPV1MpCi10eXBlZGVmIERXT1JEIFBsYXRmb3JtVGhyZWFkOwotI2VsaWYg
VVNFKFBUSFJFQURTKQotdHlwZWRlZiBwdGhyZWFkX3QgUGxhdGZvcm1UaHJlYWQ7Ci0jZW5kaWYg
Ly8gT1MoREFSV0lOKQotCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQ29kZUJsb2NrU2V0OwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAko
cmV2aXNpb24gMjEzMjMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzgsOSArMjc4LDkgQEAgQUxXQVlTX0lOTElO
RSBjb25zdCBDbGFzc0luZm8qIEpTQ2VsbDo6YwogICAgIC8vIFdoYXQgd2UgcmVhbGx5IHdhbnQg
dG8gYXNzZXJ0IGhlcmUgaXMgdGhhdCB3ZSdyZSBub3QgY3VycmVudGx5IGRlc3RydWN0aW5nIHRo
aXMgb2JqZWN0ICh3aGljaCBtYWtlcyBpdHMgY2xhc3NJbmZvCiAgICAgLy8gaW52YWxpZCkuIElm
IG11dGF0b3JTdGF0ZSgpID09IE11dGF0b3JTdGF0ZTo6UnVubmluZywgdGhlbiB3ZSdyZSBub3Qg
Y3VycmVudGx5IHN3ZWVwaW5nLCBhbmQgdGhlcmVmb3JlIGNhbm5vdCBiZQogICAgIC8vIGRlc3Ry
dWN0aW5nIHRoZSBvYmplY3QuIFRoZSBHQyB0aHJlYWQgb3IgSklUIHRocmVhZHMsIHVubGlrZSB0
aGUgbXV0YXRvciB0aHJlYWQsIGFyZSBhYmxlIHRvIGFjY2VzcyBjbGFzc0luZm8KLSAgICAvLyBp
bmRlcGVuZGVudCBvZiB3aGV0aGVyIHRoZSBtdXRhdG9yIHRocmVhZCBpcyBzd2VlcGluZyBvciBu
b3QuIEhlbmNlLCB3ZSBhbHNvIGNoZWNrIGZvciBvd25lclRocmVhZCgpICE9Ci0gICAgLy8gc3Rk
Ojp0aGlzX3RocmVhZDo6Z2V0X2lkKCkgdG8gYWxsb3cgdGhlIEdDIHRocmVhZCBvciBKSVQgdGhy
ZWFkcyB0byBwYXNzIHRoaXMgYXNzZXJ0aW9uLgotICAgIEFTU0VSVCh2bS5oZWFwLm11dGF0b3JT
dGF0ZSgpICE9IE11dGF0b3JTdGF0ZTo6U3dlZXBpbmcgfHwgdm0uYXBpTG9jaygpLm93bmVyVGhy
ZWFkKCkgIT0gc3RkOjp0aGlzX3RocmVhZDo6Z2V0X2lkKCkpOworICAgIC8vIGluZGVwZW5kZW50
IG9mIHdoZXRoZXIgdGhlIG11dGF0b3IgdGhyZWFkIGlzIHN3ZWVwaW5nIG9yIG5vdC4gSGVuY2Us
IHdlIGFsc28gY2hlY2sgZm9yICFjdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpCisgICAg
Ly8gdG8gYWxsb3cgdGhlIEdDIHRocmVhZCBvciBKSVQgdGhyZWFkcyB0byBwYXNzIHRoaXMgYXNz
ZXJ0aW9uLgorICAgIEFTU0VSVCh2bS5oZWFwLm11dGF0b3JTdGF0ZSgpICE9IE11dGF0b3JTdGF0
ZTo6U3dlZXBpbmcgfHwgIXZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwogICAg
IHJldHVybiBzdHJ1Y3R1cmUodm0pLT5jbGFzc0luZm8oKTsKIH0KIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCShyZXZpc2lvbiAyMTMyMzEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
NSw4ICs3NSw3IEBAIEpTTG9ja0hvbGRlcjo6fkpTTG9ja0hvbGRlcigpCiB9CiAKIEpTTG9jazo6
SlNMb2NrKFZNKiB2bSkKLSAgICA6IG1fb3duZXJUaHJlYWRJRChzdGQ6OnRocmVhZDo6aWQoKSkK
LSAgICAsIG1fbG9ja0NvdW50KDApCisgICAgOiBtX2xvY2tDb3VudCgwKQogICAgICwgbV9sb2Nr
RHJvcERlcHRoKDApCiAgICAgLCBtX3ZtKHZtKQogICAgICwgbV9lbnRyeUF0b21pY1N0cmluZ1Rh
YmxlKG51bGxwdHIpCkBAIC0xMTAsNyArMTA5LDkgQEAgdm9pZCBKU0xvY2s6OmxvY2soaW50cHRy
X3QgbG9ja0NvdW50KQogICAgICAgICBtX2xvY2subG9jaygpOwogICAgIH0KIAotICAgIG1fb3du
ZXJUaHJlYWRJRCA9IHN0ZDo6dGhpc190aHJlYWQ6OmdldF9pZCgpOworICAgIG1fb3duZXJUaHJl
YWQgPSBjdXJyZW50UGxhdGZvcm1UaHJlYWQoKTsKKyAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgp
OworICAgIG1faGFzT3duZXJUaHJlYWQgPSB0cnVlOwogICAgIEFTU0VSVCghbV9sb2NrQ291bnQp
OwogICAgIG1fbG9ja0NvdW50ID0gbG9ja0NvdW50OwogCkBAIC0xNjgsNyArMTY5LDggQEAgdm9p
ZCBKU0xvY2s6OnVubG9jayhpbnRwdHJfdCB1bmxvY2tDb3VudAogICAgIG1fbG9ja0NvdW50IC09
IHVubG9ja0NvdW50OwogCiAgICAgaWYgKCFtX2xvY2tDb3VudCkgewotICAgICAgICBtX293bmVy
VGhyZWFkSUQgPSBzdGQ6OnRocmVhZDo6aWQoKTsKKyAgICAgICAgbV9oYXNPd25lclRocmVhZCA9
IGZhbHNlOworICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOwogICAgICAgICBtX2xvY2su
dW5sb2NrKCk7CiAgICAgfQogfQpAQCAtMjAyLDExICsyMDQsNiBAQCB2b2lkIEpTTG9jazo6dW5s
b2NrKEV4ZWNTdGF0ZSogZXhlYykKICAgICBleGVjLT52bSgpLmFwaUxvY2soKS51bmxvY2soKTsK
IH0KIAotYm9vbCBKU0xvY2s6OmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCkKLXsKLSAgICBy
ZXR1cm4gbV9vd25lclRocmVhZElEID09IHN0ZDo6dGhpc190aHJlYWQ6OmdldF9pZCgpOwotfQot
CiAvLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIG51bWJlciBvZiBsb2NrcyB0aGF0IHdlcmUg
ZHJvcHBlZC4KIHVuc2lnbmVkIEpTTG9jazo6ZHJvcEFsbExvY2tzKERyb3BBbGxMb2NrcyogZHJv
cHBlcikKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCShyZXZp
c2lvbiAyMTMyMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAko
d29ya2luZyBjb3B5KQpAQCAtMjAsOCArMjAsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1
ZGUgIlBsYXRmb3JtVGhyZWFkLmgiCiAjaW5jbHVkZSA8bXV0ZXg+Ci0jaW5jbHVkZSA8dGhyZWFk
PgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTkzLDggKzkzLDggQEAgcHVibGljOgogCiAg
ICAgVk0qIHZtKCkgeyByZXR1cm4gbV92bTsgfQogCi0gICAgc3RkOjp0aHJlYWQ6OmlkIG93bmVy
VGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV9vd25lclRocmVhZElEOyB9Ci0gICAgSlNfRVhQT1JU
X1BSSVZBVEUgYm9vbCBjdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jaygpOworICAgIHN0ZDo6b3B0
aW9uYWw8UGxhdGZvcm1UaHJlYWQ+IG93bmVyVGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV9vd25l
clRocmVhZDsgfQorICAgIGJvb2wgY3VycmVudFRocmVhZElzSG9sZGluZ0xvY2soKSB7IHJldHVy
biBtX2hhc093bmVyVGhyZWFkICYmIG1fb3duZXJUaHJlYWQgPT0gY3VycmVudFBsYXRmb3JtVGhy
ZWFkKCk7IH0KIAogICAgIHZvaWQgd2lsbERlc3Ryb3lWTShWTSopOwogCkBAIC0xMjYsNyArMTI2
LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGdyYWJBbGxMb2NrcyhEcm9wQWxsTG9ja3MqLCB1bnNp
Z25lZCBsb2NrQ291bnQpOwogCiAgICAgTG9jayBtX2xvY2s7Ci0gICAgc3RkOjp0aHJlYWQ6Omlk
IG1fb3duZXJUaHJlYWRJRDsKKyAgICBib29sIG1faGFzT3duZXJUaHJlYWQgeyBmYWxzZSB9Owor
ICAgIFBsYXRmb3JtVGhyZWFkIG1fb3duZXJUaHJlYWQ7CiAgICAgaW50cHRyX3QgbV9sb2NrQ291
bnQ7CiAgICAgdW5zaWduZWQgbV9sb2NrRHJvcERlcHRoOwogICAgIGJvb2wgbV9zaG91bGRSZWxl
YXNlSGVhcEFjY2VzczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHJl
dmlzaW9uIDIxMzIzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzkyLDcgKzM5Miw3IEBAIFZNOjp+Vk0oKQogICAgIC8vIENsZWFy
IHRoaXMgZmlyc3QgdG8gZW5zdXJlIHRoYXQgbm9ib2R5IHRyaWVzIHRvIHJlbW92ZSB0aGVtc2Vs
dmVzIGZyb20gaXQuCiAgICAgbV9wZXJCeXRlY29kZVByb2ZpbGVyID0gbnVsbHB0cjsKIAotICAg
IEFTU0VSVChtX2FwaUxvY2stPmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCkpOworICAgIEFT
U0VSVChjdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKICAgICBtX2FwaUxvY2stPndp
bGxEZXN0cm95Vk0odGhpcyk7CiAgICAgaGVhcC5sYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDIxMzIzMSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxMSw4
ICs2MTEsNiBAQCBwdWJsaWM6CiAgICAgUlRUcmFjZUxpc3QqIG1fcnRUcmFjZUxpc3Q7CiAjZW5k
aWYKIAotICAgIHN0ZDo6dGhyZWFkOjppZCBvd25lclRocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1f
YXBpTG9jay0+b3duZXJUaHJlYWQoKTsgfQotCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBy
ZXNldERhdGVDYWNoZSgpOwogCiAgICAgUmVnRXhwQ2FjaGUqIHJlZ0V4cENhY2hlKCkgeyByZXR1
cm4gbV9yZWdFeHBDYWNoZTsgfQpAQCAtNzI1LDYgKzcyMyw4IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBpc1NhZmVUb1JlY3Vyc2VTb2Z0Q0xvb3AoKSBjb25zdDsKICNlbmRpZiAvLyAhRU5BQkxFKEpJ
VCkKIAorICAgIHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1UaHJlYWQ+IG93bmVyVGhyZWFkKCkgY29u
c3QgeyByZXR1cm4gbV9hcGlMb2NrLT5vd25lclRocmVhZCgpOyB9CisKICAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEV4Y2VwdGlvbiopOwogICAg
IEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgdGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiwgSlNW
YWx1ZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93RXhjZXB0aW9uKEV4
ZWNTdGF0ZSosIEpTT2JqZWN0Kik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9XYXRjaGRvZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvV2F0Y2hkb2cuY3BwCShyZXZpc2lvbiAyMTMyMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9XYXRjaGRvZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAg
V2F0Y2hkb2c6OldhdGNoZG9nKFZNKiB2bSkKIHZvaWQgV2F0Y2hkb2c6OnNldFRpbWVMaW1pdChz
dGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIGxpbWl0LAogICAgIFNob3VsZFRlcm1pbmF0ZUNhbGxi
YWNrIGNhbGxiYWNrLCB2b2lkKiBkYXRhMSwgdm9pZCogZGF0YTIpCiB7Ci0gICAgQVNTRVJUKG1f
dm0tPm93bmVyVGhyZWFkKCkgPT0gc3RkOjp0aGlzX3RocmVhZDo6Z2V0X2lkKCkpOworICAgIEFT
U0VSVChtX3ZtLT5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKIAogICAgIG1fdGlt
ZUxpbWl0ID0gbGltaXQ7CiAgICAgbV9jYWxsYmFjayA9IGNhbGxiYWNrOwpAQCAtNjgsNyArNjgs
NyBAQCB2b2lkIFdhdGNoZG9nOjpzZXRUaW1lTGltaXQoc3RkOjpjaHJvbm86CiAKIGJvb2wgV2F0
Y2hkb2c6OnNob3VsZFRlcm1pbmF0ZShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgQVNTRVJUKG1f
dm0tPm93bmVyVGhyZWFkKCkgPT0gc3RkOjp0aGlzX3RocmVhZDo6Z2V0X2lkKCkpOworICAgIEFT
U0VSVChtX3ZtLT5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKICAgICAvLyBGSVhN
RTogV2lsbCB1bmluZGVudCB0aGUgZm9sbG93aW5nIGJlZm9yZSBsYW5kaW5nLiBMZWF2aW5nIGlu
ZGVudGVkIGZvciBub3cgdG8gbWluaW1pemUgdGhlIGNvZGUgZGlmZi4KICAgICB7CiAgICAgICAg
IGlmIChjdXJyZW50V2FsbENsb2NrVGltZSgpIDwgbV93YWxsQ2xvY2tEZWFkbGluZSkKQEAgLTEz
OCw3ICsxMzgsNyBAQCB2b2lkIFdhdGNoZG9nOjpleGl0ZWRWTSgpCiB2b2lkIFdhdGNoZG9nOjpz
dGFydFRpbWVyKHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHMgdGltZUxpbWl0KQogewogICAgIEFT
U0VSVChtX2hhc0VudGVyZWRWTSk7Ci0gICAgQVNTRVJUKG1fdm0tPm93bmVyVGhyZWFkKCkgPT0g
c3RkOjp0aGlzX3RocmVhZDo6Z2V0X2lkKCkpOworICAgIEFTU0VSVChtX3ZtLT5jdXJyZW50VGhy
ZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKICAgICBBU1NFUlQoaGFzVGltZUxpbWl0KCkpOwogICAg
IEFTU0VSVCh0aW1lTGltaXQgPD0gbV90aW1lTGltaXQpOwogCkBAIC0xNjgsNyArMTY4LDcgQEAg
dm9pZCBXYXRjaGRvZzo6c3RhcnRUaW1lcihzdGQ6OmNocm9ubzo6bQogdm9pZCBXYXRjaGRvZzo6
c3RvcFRpbWVyKCkKIHsKICAgICBBU1NFUlQobV9oYXNFbnRlcmVkVk0pOwotICAgIEFTU0VSVCht
X3ZtLT5vd25lclRocmVhZCgpID09IHN0ZDo6dGhpc190aHJlYWQ6OmdldF9pZCgpKTsKKyAgICBB
U1NFUlQobV92bS0+Y3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7CiAgICAgbV9jcHVE
ZWFkbGluZSA9IG5vVGltZUxpbWl0OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvSlNEb2xsYXJWTVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk1Qcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMTMyMzEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTVByb3RvdHlwZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEpTRG9sbGFy
Vk1Qcm90b3R5cGU6OnNfaQogICAgIAogYm9vbCBKU0RvbGxhclZNUHJvdG90eXBlOjpjdXJyZW50
VGhyZWFkT3duc0pTTG9jayhFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIGV4ZWMtPnZt
KCkuYXBpTG9jaygpLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCk7CisgICAgcmV0dXJuIGV4
ZWMtPnZtKCkuY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKTsKIH0KIAogc3RhdGljIGJv
b2wgZW5zdXJlQ3VycmVudFRocmVhZE93bnNKU0xvY2soRXhlY1N0YXRlKiBleGVjKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1ZNSW5zcGVjdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvVk1JbnNwZWN0b3IuY3BwCShyZXZpc2lvbiAy
MTMyMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvVk1JbnNwZWN0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzksNyArMTM5LDcgQEAgYXV0byBWTUluc3BlY3Rvcjo6Y29kZUJs
b2NrRm9yTWFjaGluZVBDKAogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbnVsbHB0cjsKICAg
ICBib29sIGhhc1RpbWVvdXQgPSBmYWxzZTsKICAgICBpdGVyYXRlKFsmXSAoVk0mIHZtKSB7Ci0g
ICAgICAgIGlmICghdm0uYXBpTG9jaygpLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCkpCisg
ICAgICAgIGlmICghdm0uY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSkKICAgICAgICAg
ICAgIHJldHVybiBGdW5jdG9yU3RhdHVzOjpDb250aW51ZTsKIAogICAgICAgICAvLyBJdCBpcyBz
YWZlIHRvIGNhbGwgSGVhcDo6Zm9yRWFjaENvZGVCbG9ja0lnbm9yaW5nSklUUGxhbnMgaGVyZSBi
ZWNhdXNlOgo=
</data>
<flag name="review"
          id="324769"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303092</attachid>
            <date>2017-03-01 11:50:01 -0800</date>
            <delta_ts>2017-03-01 12:04:02 -0800</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-168996.patch</filename>
            <type>text/plain</type>
            <size>21421</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjEzMjM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBA
CisyMDE3LTAzLTAxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBb
UmUtbGFuZGluZ10gQ2hhbmdlIEpTTG9jayB0byBzdGFzaCBQbGF0Zm9ybVRocmVhZCBpbnN0ZWFk
IG9mIHN0ZDo6dGhyZWFkOjppZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2ODk5NgorCisgICAgICAgIFJldmlld2VkIGJ5IEZpbGlwIFBpemxvIGFu
ZCBTYWFtIEJhcmF0aS4KKworICAgICAgICBQbGF0Zm9ybVRocmVhZCBpcyBtb3JlIHVzZWZ1bCBi
ZWNhdXNlIGl0IGFsbG93cyB1cyB0bzoKKyAgICAgICAgMS4gZmluZCB0aGUgTWFjaGluZVRocmVh
ZHM6OlRocmVhZCB3aGljaCBpcyBhc3NvY2lhdGVkIHdpdGggaXQuCisgICAgICAgIDIuIHN1c3Bl
bmQgLyByZXN1bWUgdGhyZWFkcy4KKyAgICAgICAgMy4gc2VuZCBhIHNpZ25hbCB0byBhIHRocmVh
ZC4KKworICAgICAgICBXZSBjYW4ndCBkbyB0aG9zZSB3aXRoIHN0ZDo6dGhyZWFkOjppZC4gIFdl
IHdpbGwgbmVlZCBvbmUgb3IgbW9yZSBvZiB0aGVzZQorICAgICAgICBjYXBhYmlsaXRpZXMgdG8g
aW1wbGVtZW50IG5vbi1wb2xsaW5nIFZNIHRyYXBzIGxhdGVyLgorCisgICAgICAgIFVwZGF0ZTog
U2luY2Ugd2UgZG9uJ3QgaGF2ZSBhIGNhbm9uaWNhbCAidW5pbml0aWFsaXplZCIgdmFsdWUgZm9y
IFBsYXRmb3JtVGhyZWFkLAorICAgICAgICB3ZSBub3cgaGF2ZSBhIEpTTG9jazo6bV9oYXNPd25l
clRocmVhZCBmbGFnIHRoYXQgaXMgc2V0IHRvIHRydWUgaWYgYW5kIG9ubHkgdGhlCisgICAgICAg
IG1fb3duZXJUaHJlYWQgdmFsdWUgaXMgdmFsaWQuICBKU0xvY2s6OmN1cnJlbnRUaHJlYWRJc0hv
bGRpbmdMb2NrKCkgbm93IGNoZWNrcworICAgICAgICBKU0xvY2s6Om1faGFzT3duZXJUaHJlYWQg
YmVmb3JlIGRvaW5nIHRoZSB0aHJlYWQgaWRlbnRpdHkgY29tcGFyaXNvbi4KKworICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaGVh
cC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwOgorICAgICAgICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6
VGhyZWFkOjpjcmVhdGVGb3JDdXJyZW50VGhyZWFkKToKKyAgICAgICAgKEpTQzo6TWFjaGluZVRo
cmVhZHM6Om1hY2hpbmVUaHJlYWRGb3JDdXJyZW50VGhyZWFkKToKKyAgICAgICAgKEpTQzo6TWFj
aGluZVRocmVhZHM6OnJlbW92ZVRocmVhZCk6CisgICAgICAgIChKU0M6Ok1hY2hpbmVUaHJlYWRz
OjpUaHJlYWQ6OnN1c3BlbmQpOgorICAgICAgICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6dHJ5Q29w
eU90aGVyVGhyZWFkU3RhY2tzKToKKyAgICAgICAgKEpTQzo6Z2V0Q3VycmVudFBsYXRmb3JtVGhy
ZWFkKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL01hY2hpbmVTdGFja01hcmtlci5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNDZWxsSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmNs
YXNzSW5mbyk6CisgICAgICAgICogcnVudGltZS9KU0xvY2suY3BwOgorICAgICAgICAoSlNDOjpK
U0xvY2s6OkpTTG9jayk6CisgICAgICAgIChKU0M6OkpTTG9jazo6bG9jayk6CisgICAgICAgIChK
U0M6OkpTTG9jazo6dW5sb2NrKToKKyAgICAgICAgKEpTQzo6SlNMb2NrOjpjdXJyZW50VGhyZWFk
SXNIb2xkaW5nTG9jayk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU0xvY2suaDoKKyAg
ICAgICAgKEpTQzo6SlNMb2NrOjpvd25lclRocmVhZCk6CisgICAgICAgIChKU0M6OkpTTG9jazo6
Y3VycmVudFRocmVhZElzSG9sZGluZ0xvY2spOgorICAgICAgICAqIHJ1bnRpbWUvUGxhdGZvcm1U
aHJlYWQuaDogQWRkZWQuCisgICAgICAgIChKU0M6OmN1cnJlbnRQbGF0Zm9ybVRocmVhZCk6Cisg
ICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjp+Vk0pOgorICAgICAg
ICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKEpTQzo6Vk06Om93bmVyVGhyZWFkKToKKyAgICAg
ICAgKiBydW50aW1lL1dhdGNoZG9nLmNwcDoKKyAgICAgICAgKEpTQzo6V2F0Y2hkb2c6OnNldFRp
bWVMaW1pdCk6CisgICAgICAgIChKU0M6OldhdGNoZG9nOjpzaG91bGRUZXJtaW5hdGUpOgorICAg
ICAgICAoSlNDOjpXYXRjaGRvZzo6c3RhcnRUaW1lcik6CisgICAgICAgIChKU0M6OldhdGNoZG9n
OjpzdG9wVGltZXIpOgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk1Qcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpKU0RvbGxhclZNUHJvdG90eXBlOjpjdXJyZW50VGhyZWFkT3duc0pTTG9j
ayk6CisgICAgICAgICogdG9vbHMvVk1JbnNwZWN0b3IuY3BwOgorCiAyMDE3LTAzLTAxICBTYWFt
IEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBhIG1lZ2Et
ZGlzYXNzZW1ibGVyIHRoYXQnbGwgYmUgdXNlZCBpbiB0aGUgRlRMCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjEzMjMxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTI0MjMsNiArMjQyMyw3IEBACiAJCUZFRDI4N0IyMTVFQzlBNTcwMERBODE2MSAvKiBM
TEludE9wY29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkVEMjg3QjExNUVDOUE1NzAwREE4MTYxIC8qIExMSW50T3Bjb2RlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkVEOTRGMkUxNzFFM0UyMzAw
QkU3N0E0IC8qIFdhdGNoZG9nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFRDk0RjJCMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5jcHAgKi87
IH07CiAJCUZFRDk0RjJGMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVEOTRGMkMxNzFFM0UyMzAwQkU3
N0E0IC8qIFdhdGNoZG9nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJRkVFNDNGQ0UxRTY2NDE3MTAwNzdENkQxIC8qIFBsYXRmb3JtVGhyZWFkLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUU0M0ZDRDFF
NjY0MTQwMDA3N0Q2RDEgLyogUGxhdGZvcm1UaHJlYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRUYwNDA1MTFBQUU2NjJEMDBCRDI4QjAgLyog
Q29tcGFyZUFuZFN3YXBUZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFRjA0MDUwMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRl
c3QuY3BwICovOyB9OwogCQlGRUZENkZDNjFENUU3OTkyMDA4RjJGMEIgLyogSlNTdHJpbmdJbmxp
bmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUZE
NkZDNTFENUU3OTcwMDA4RjJGMEIgLyogSlNTdHJpbmdJbmxpbmVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2Vj
dGlvbiAqLwpAQCAtNTAwMyw2ICs1MDA0LDcgQEAKIAkJRkVEOTRGMkMxNzFFM0UyMzAwQkU3N0E0
IC8qIFdhdGNoZG9nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhdGNoZG9n
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFREE1MEQ0MUI5N0Y0NDIwMDlBM0I0
RiAvKiBQaW5nUG9uZ1N0YWNrT3ZlcmZsb3dUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IFBpbmdQb25nU3RhY2tPdmVyZmxvd1Rlc3QuY3BwOyBwYXRoID0gQVBJ
L3Rlc3RzL1BpbmdQb25nU3RhY2tPdmVyZmxvd1Rlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRURBNTBENTFCOTdGNEQ5MDA5QTNCNEYgLyogUGluZ1BvbmdTdGFja092ZXJm
bG93VGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQaW5nUG9uZ1N0YWNr
T3ZlcmZsb3dUZXN0Lmg7IHBhdGggPSBBUEkvdGVzdHMvUGluZ1BvbmdTdGFja092ZXJmbG93VGVz
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRUU0M0ZDRDFFNjY0MTQwMDA3N0Q2
RDEgLyogUGxhdGZvcm1UaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UGxhdGZvcm1UaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVGMDQwNTAx
QUFFNjYyRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDb21wYXJlQW5kU3dhcFRlc3QuY3BwOyBwYXRoID0gQVBJ
L3Rlc3RzL0NvbXBhcmVBbmRTd2FwVGVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZFRjA0MDUyMUFBRUM0RUQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ29tcGFyZUFuZFN3YXBUZXN0Lmg7IHBhdGgg
PSBBUEkvdGVzdHMvQ29tcGFyZUFuZFN3YXBUZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUZFRkQ2RkM1MUQ1RTc5NzAwMDhGMkYwQiAvKiBKU1N0cmluZ0lubGluZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJpbmdJbmxpbmVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NzMyLDYgKzY3MzQsNyBAQAogCQkJCUY2OTJBODc4MDI1
NTU5N0QwMUZGNjBGNyAvKiBPcGVyYXRpb25zLmggKi8sCiAJCQkJMEZFMjI4RUExNDM2QUIyMzAw
MTk2QzQ4IC8qIE9wdGlvbnMuY3BwICovLAogCQkJCTBGRTIyOEVCMTQzNkFCMjMwMDE5NkM0OCAv
KiBPcHRpb25zLmggKi8sCisJCQkJRkVFNDNGQ0QxRTY2NDE0MDAwNzdENkQxIC8qIFBsYXRmb3Jt
VGhyZWFkLmggKi8sCiAJCQkJODY4OTE2QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFByaXZhdGVOYW1l
LmggKi8sCiAJCQkJMTQ3MzQxREYxREMyQ0U5NjAwQUEyOUJBIC8qIFByb2dyYW1FeGVjdXRhYmxl
LmNwcCAqLywKIAkJCQkxNDczNDFEMzFEQzAyRTZEMDBBQTI5QkEgLyogUHJvZ3JhbUV4ZWN1dGFi
bGUuaCAqLywKQEAgLTkxNzQsNiArOTE3Nyw3IEBACiAJCQkJMEY0QTM4RkExQzhFMTNERjAwMTkw
MzE4IC8qIFN1cGVyU2FtcGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzA1QjQxQUMxQTZFNTAx
RTAwNzE2NzU3IC8qIFN5bWJvbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzA1QjQxQUUxQTZFNTAx
RTAwNzE2NzU3IC8qIFN5bWJvbENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRUU0
M0ZDRTFFNjY0MTcxMDA3N0Q2RDEgLyogUGxhdGZvcm1UaHJlYWQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk5NkI3MzI3MUJEQTA4RUYwMDMzMUI4NCAvKiBTeW1ib2xDb25zdHJ1Y3Rvci5sdXQuaCBp
biBIZWFkZXJzICovLAogCQkJCTcwNUI0MUIwMUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2xPYmpl
Y3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwNUI0MUIyMUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1i
b2xQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwCShyZXZpc2lvbiAyMTMyMzEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzksMTcgKzE3OSw2IEBAIHN0YXRpYyBBY3RpdmVNYWNoaW5lVGhyZWFk
c01hbmFnZXImIGFjdGkKICAgICByZXR1cm4gKm1hbmFnZXI7CiB9CiAgICAgCi1zdGF0aWMgaW5s
aW5lIFBsYXRmb3JtVGhyZWFkIGdldEN1cnJlbnRQbGF0Zm9ybVRocmVhZCgpCi17Ci0jaWYgT1Mo
REFSV0lOKQotICAgIHJldHVybiBwdGhyZWFkX21hY2hfdGhyZWFkX25wKHB0aHJlYWRfc2VsZigp
KTsKLSNlbGlmIE9TKFdJTkRPV1MpCi0gICAgcmV0dXJuIEdldEN1cnJlbnRUaHJlYWRJZCgpOwot
I2VsaWYgVVNFKFBUSFJFQURTKQotICAgIHJldHVybiBwdGhyZWFkX3NlbGYoKTsKLSNlbmRpZgot
fQotCiBNYWNoaW5lVGhyZWFkczo6TWFjaGluZVRocmVhZHMoKQogICAgIDogbV9yZWdpc3RlcmVk
VGhyZWFkcygwKQogICAgICwgbV90aHJlYWRTcGVjaWZpY0Zvck1hY2hpbmVUaHJlYWRzKDApCkBA
IC0yMTQsNyArMjAzLDcgQEAgTWFjaGluZVRocmVhZHM6On5NYWNoaW5lVGhyZWFkcygpCiBUaHJl
YWQqIE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OmNyZWF0ZUZvckN1cnJlbnRUaHJlYWQoKQogewog
ICAgIGF1dG8gc3RhY2tCb3VuZHMgPSB3dGZUaHJlYWREYXRhKCkuc3RhY2soKTsKLSAgICByZXR1
cm4gbmV3IFRocmVhZChnZXRDdXJyZW50UGxhdGZvcm1UaHJlYWQoKSwgc3RhY2tCb3VuZHMub3Jp
Z2luKCksIHN0YWNrQm91bmRzLmVuZCgpKTsKKyAgICByZXR1cm4gbmV3IFRocmVhZChjdXJyZW50
UGxhdGZvcm1UaHJlYWQoKSwgc3RhY2tCb3VuZHMub3JpZ2luKCksIHN0YWNrQm91bmRzLmVuZCgp
KTsKIH0KIAogYm9vbCBNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpvcGVyYXRvcj09KGNvbnN0IFBs
YXRmb3JtVGhyZWFkJiBvdGhlcikgY29uc3QKQEAgLTI1MCw3ICsyMzksNyBAQCB2b2lkIE1hY2hp
bmVUaHJlYWRzOjphZGRDdXJyZW50VGhyZWFkKCkKIFRocmVhZCogTWFjaGluZVRocmVhZHM6Om1h
Y2hpbmVUaHJlYWRGb3JDdXJyZW50VGhyZWFkKCkKIHsKICAgICBMb2NrSG9sZGVyIGxvY2sobV9y
ZWdpc3RlcmVkVGhyZWFkc011dGV4KTsKLSAgICBQbGF0Zm9ybVRocmVhZCBwbGF0Zm9ybVRocmVh
ZCA9IGdldEN1cnJlbnRQbGF0Zm9ybVRocmVhZCgpOworICAgIFBsYXRmb3JtVGhyZWFkIHBsYXRm
b3JtVGhyZWFkID0gY3VycmVudFBsYXRmb3JtVGhyZWFkKCk7CiAgICAgZm9yIChUaHJlYWQqIHRo
cmVhZCA9IG1fcmVnaXN0ZXJlZFRocmVhZHM7IHRocmVhZDsgdGhyZWFkID0gdGhyZWFkLT5uZXh0
KSB7CiAgICAgICAgIGlmICgqdGhyZWFkID09IHBsYXRmb3JtVGhyZWFkKQogICAgICAgICAgICAg
cmV0dXJuIHRocmVhZDsKQEAgLTI4Miw3ICsyNzEsNyBAQCB2b2lkIFRIUkVBRF9TUEVDSUZJQ19D
QUxMIE1hY2hpbmVUaHJlYWRzCiAgICAgICAgICAgICByZXR1cm47CiAjZW5kaWYKIAotICAgICAg
ICBtYWNoaW5lVGhyZWFkcy0+cmVtb3ZlVGhyZWFkSWZGb3VuZChnZXRDdXJyZW50UGxhdGZvcm1U
aHJlYWQoKSk7CisgICAgICAgIG1hY2hpbmVUaHJlYWRzLT5yZW1vdmVUaHJlYWRJZkZvdW5kKGN1
cnJlbnRQbGF0Zm9ybVRocmVhZCgpKTsKICAgICB9CiB9CiAKQEAgLTM3NSw3ICszNjQsNyBAQCBi
b29sIE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OnN1c3BlbmQoKQogICAgIEFTU0VSVCh0aHJlYWRJ
c1N1c3BlbmRlZCk7CiAgICAgcmV0dXJuIHRocmVhZElzU3VzcGVuZGVkOwogI2VsaWYgVVNFKFBU
SFJFQURTKQotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZ2V0Q3VycmVudFBsYXRmb3JtVGhyZWFk
KCkgIT0gcGxhdGZvcm1UaHJlYWQsICJDdXJyZW50bHkgd2UgZG9uJ3Qgc3VwcG9ydCBzdXNwZW5k
IHRoZSBjdXJyZW50IHRocmVhZCBpdHNlbGYuIik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShj
dXJyZW50UGxhdGZvcm1UaHJlYWQoKSAhPSBwbGF0Zm9ybVRocmVhZCwgIkN1cnJlbnRseSB3ZSBk
b24ndCBzdXBwb3J0IHN1c3BlbmQgdGhlIGN1cnJlbnQgdGhyZWFkIGl0c2VsZi4iKTsKICAgICB7
CiAgICAgICAgIC8vIER1cmluZyBzdXNwZW5kLCBzdXNwZW5kIG9yIHJlc3VtZSBzaG91bGQgbm90
IGJlIGV4ZWN1dGVkIGZyb20gdGhlIG90aGVyIHRocmVhZHMuCiAgICAgICAgIC8vIFdlIHVzZSBn
bG9iYWwgbG9jayBpbnN0ZWFkIG9mIHBlciB0aHJlYWQgbG9jay4KQEAgLTk0OCwxNCArOTM3LDE0
IEBAIGJvb2wgTWFjaGluZVRocmVhZHM6OnRyeUNvcHlPdGhlclRocmVhZFMKIAogICAgICpzaXpl
ID0gMDsKIAotICAgIFBsYXRmb3JtVGhyZWFkIGN1cnJlbnRQbGF0Zm9ybVRocmVhZCA9IGdldEN1
cnJlbnRQbGF0Zm9ybVRocmVhZCgpOworICAgIFBsYXRmb3JtVGhyZWFkIHBsYXRmb3JtVGhyZWFk
ID0gY3VycmVudFBsYXRmb3JtVGhyZWFkKCk7CiAgICAgaW50IG51bWJlck9mVGhyZWFkcyA9IDA7
IC8vIFVzaW5nIDAgdG8gZGVub3RlIHRoYXQgd2UgaGF2ZW4ndCBjb3VudGVkIHRoZSBudW1iZXIg
b2YgdGhyZWFkcyB5ZXQuCiAgICAgaW50IGluZGV4ID0gMTsKICAgICBUaHJlYWQqIHRocmVhZHNU
b0JlRGVsZXRlZCA9IG51bGxwdHI7CiAKICAgICBUaHJlYWQqIHByZXZpb3VzVGhyZWFkID0gbnVs
bHB0cjsKICAgICBmb3IgKFRocmVhZCogdGhyZWFkID0gbV9yZWdpc3RlcmVkVGhyZWFkczsgdGhy
ZWFkOyBpbmRleCsrKSB7Ci0gICAgICAgIGlmICgqdGhyZWFkICE9IGN1cnJlbnRQbGF0Zm9ybVRo
cmVhZCkgeworICAgICAgICBpZiAoKnRocmVhZCAhPSBwbGF0Zm9ybVRocmVhZCkgewogICAgICAg
ICAgICAgYm9vbCBzdWNjZXNzID0gdGhyZWFkLT5zdXNwZW5kKCk7CiAjaWYgT1MoREFSV0lOKQog
ICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7CkBAIC05OTksMTIgKzk4OCwxMiBAQCBib29sIE1h
Y2hpbmVUaHJlYWRzOjp0cnlDb3B5T3RoZXJUaHJlYWRTCiAgICAgfQogCiAgICAgZm9yIChUaHJl
YWQqIHRocmVhZCA9IG1fcmVnaXN0ZXJlZFRocmVhZHM7IHRocmVhZDsgdGhyZWFkID0gdGhyZWFk
LT5uZXh0KSB7Ci0gICAgICAgIGlmICgqdGhyZWFkICE9IGN1cnJlbnRQbGF0Zm9ybVRocmVhZCkK
KyAgICAgICAgaWYgKCp0aHJlYWQgIT0gcGxhdGZvcm1UaHJlYWQpCiAgICAgICAgICAgICB0cnlD
b3B5T3RoZXJUaHJlYWRTdGFjayh0aHJlYWQsIGJ1ZmZlciwgY2FwYWNpdHksIHNpemUpOwogICAg
IH0KIAogICAgIGZvciAoVGhyZWFkKiB0aHJlYWQgPSBtX3JlZ2lzdGVyZWRUaHJlYWRzOyB0aHJl
YWQ7IHRocmVhZCA9IHRocmVhZC0+bmV4dCkgewotICAgICAgICBpZiAoKnRocmVhZCAhPSBjdXJy
ZW50UGxhdGZvcm1UaHJlYWQpCisgICAgICAgIGlmICgqdGhyZWFkICE9IHBsYXRmb3JtVGhyZWFk
KQogICAgICAgICAgICAgdGhyZWFkLT5yZXN1bWUoKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5oCShyZXZpc2lvbiAy
MTMyMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMjEsMTYgKzIxLDEzIEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiUGxhdGZvcm1UaHJlYWQuaCIKICNpbmNsdWRlICJSZWdpc3RlclN0YXRlLmgiCiAj
aW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNs
dWRlIDx3dGYvU2NvcGVkTGFtYmRhLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+
CiAKLSNpZiBPUyhEQVJXSU4pCi0jaW5jbHVkZSA8bWFjaC90aHJlYWRfYWN0Lmg+Ci0jZW5kaWYK
LQogI2lmIFVTRShQVEhSRUFEUykgJiYgIU9TKFdJTkRPV1MpICYmICFPUyhEQVJXSU4pCiAjaW5j
bHVkZSA8c2VtYXBob3JlLmg+CiAjaW5jbHVkZSA8c2lnbmFsLmg+CkBAIC00MywxNCArNDAsNiBA
QAogI2VuZGlmCiAjZW5kaWYKIAotI2lmIE9TKERBUldJTikKLXR5cGVkZWYgbWFjaF9wb3J0X3Qg
UGxhdGZvcm1UaHJlYWQ7Ci0jZWxpZiBPUyhXSU5ET1dTKQotdHlwZWRlZiBEV09SRCBQbGF0Zm9y
bVRocmVhZDsKLSNlbGlmIFVTRShQVEhSRUFEUykKLXR5cGVkZWYgcHRocmVhZF90IFBsYXRmb3Jt
VGhyZWFkOwotI2VuZGlmIC8vIE9TKERBUldJTikKLQogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNz
IENvZGVCbG9ja1NldDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGxJbmxpbmVzLmgJKHJldmlzaW9uIDIxMzIzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjc4LDkgKzI3OCw5
IEBAIEFMV0FZU19JTkxJTkUgY29uc3QgQ2xhc3NJbmZvKiBKU0NlbGw6OmMKICAgICAvLyBXaGF0
IHdlIHJlYWxseSB3YW50IHRvIGFzc2VydCBoZXJlIGlzIHRoYXQgd2UncmUgbm90IGN1cnJlbnRs
eSBkZXN0cnVjdGluZyB0aGlzIG9iamVjdCAod2hpY2ggbWFrZXMgaXRzIGNsYXNzSW5mbwogICAg
IC8vIGludmFsaWQpLiBJZiBtdXRhdG9yU3RhdGUoKSA9PSBNdXRhdG9yU3RhdGU6OlJ1bm5pbmcs
IHRoZW4gd2UncmUgbm90IGN1cnJlbnRseSBzd2VlcGluZywgYW5kIHRoZXJlZm9yZSBjYW5ub3Qg
YmUKICAgICAvLyBkZXN0cnVjdGluZyB0aGUgb2JqZWN0LiBUaGUgR0MgdGhyZWFkIG9yIEpJVCB0
aHJlYWRzLCB1bmxpa2UgdGhlIG11dGF0b3IgdGhyZWFkLCBhcmUgYWJsZSB0byBhY2Nlc3MgY2xh
c3NJbmZvCi0gICAgLy8gaW5kZXBlbmRlbnQgb2Ygd2hldGhlciB0aGUgbXV0YXRvciB0aHJlYWQg
aXMgc3dlZXBpbmcgb3Igbm90LiBIZW5jZSwgd2UgYWxzbyBjaGVjayBmb3Igb3duZXJUaHJlYWQo
KSAhPQotICAgIC8vIHN0ZDo6dGhpc190aHJlYWQ6OmdldF9pZCgpIHRvIGFsbG93IHRoZSBHQyB0
aHJlYWQgb3IgSklUIHRocmVhZHMgdG8gcGFzcyB0aGlzIGFzc2VydGlvbi4KLSAgICBBU1NFUlQo
dm0uaGVhcC5tdXRhdG9yU3RhdGUoKSAhPSBNdXRhdG9yU3RhdGU6OlN3ZWVwaW5nIHx8IHZtLmFw
aUxvY2soKS5vd25lclRocmVhZCgpICE9IHN0ZDo6dGhpc190aHJlYWQ6OmdldF9pZCgpKTsKKyAg
ICAvLyBpbmRlcGVuZGVudCBvZiB3aGV0aGVyIHRoZSBtdXRhdG9yIHRocmVhZCBpcyBzd2VlcGlu
ZyBvciBub3QuIEhlbmNlLCB3ZSBhbHNvIGNoZWNrIGZvciAhY3VycmVudFRocmVhZElzSG9sZGlu
Z0FQSUxvY2soKQorICAgIC8vIHRvIGFsbG93IHRoZSBHQyB0aHJlYWQgb3IgSklUIHRocmVhZHMg
dG8gcGFzcyB0aGlzIGFzc2VydGlvbi4KKyAgICBBU1NFUlQodm0uaGVhcC5tdXRhdG9yU3RhdGUo
KSAhPSBNdXRhdG9yU3RhdGU6OlN3ZWVwaW5nIHx8ICF2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5n
QVBJTG9jaygpKTsKICAgICByZXR1cm4gc3RydWN0dXJlKHZtKS0+Y2xhc3NJbmZvKCk7CiB9CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAkocmV2aXNpb24g
MjEzMjMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzUsOCArNzUsNyBAQCBKU0xvY2tIb2xkZXI6On5KU0xvY2tIb2xkZXIo
KQogfQogCiBKU0xvY2s6OkpTTG9jayhWTSogdm0pCi0gICAgOiBtX293bmVyVGhyZWFkSUQoc3Rk
Ojp0aHJlYWQ6OmlkKCkpCi0gICAgLCBtX2xvY2tDb3VudCgwKQorICAgIDogbV9sb2NrQ291bnQo
MCkKICAgICAsIG1fbG9ja0Ryb3BEZXB0aCgwKQogICAgICwgbV92bSh2bSkKICAgICAsIG1fZW50
cnlBdG9taWNTdHJpbmdUYWJsZShudWxscHRyKQpAQCAtMTEwLDcgKzEwOSw5IEBAIHZvaWQgSlNM
b2NrOjpsb2NrKGludHB0cl90IGxvY2tDb3VudCkKICAgICAgICAgbV9sb2NrLmxvY2soKTsKICAg
ICB9CiAKLSAgICBtX293bmVyVGhyZWFkSUQgPSBzdGQ6OnRoaXNfdGhyZWFkOjpnZXRfaWQoKTsK
KyAgICBtX293bmVyVGhyZWFkID0gY3VycmVudFBsYXRmb3JtVGhyZWFkKCk7CisgICAgV1RGOjpz
dG9yZVN0b3JlRmVuY2UoKTsKKyAgICBtX2hhc093bmVyVGhyZWFkID0gdHJ1ZTsKICAgICBBU1NF
UlQoIW1fbG9ja0NvdW50KTsKICAgICBtX2xvY2tDb3VudCA9IGxvY2tDb3VudDsKIApAQCAtMTY4
LDcgKzE2OSw3IEBAIHZvaWQgSlNMb2NrOjp1bmxvY2soaW50cHRyX3QgdW5sb2NrQ291bnQKICAg
ICBtX2xvY2tDb3VudCAtPSB1bmxvY2tDb3VudDsKIAogICAgIGlmICghbV9sb2NrQ291bnQpIHsK
LSAgICAgICAgbV9vd25lclRocmVhZElEID0gc3RkOjp0aHJlYWQ6OmlkKCk7CisgICAgICAgIG1f
aGFzT3duZXJUaHJlYWQgPSBmYWxzZTsKICAgICAgICAgbV9sb2NrLnVubG9jaygpOwogICAgIH0K
IH0KQEAgLTIwMiwxMSArMjAzLDYgQEAgdm9pZCBKU0xvY2s6OnVubG9jayhFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgZXhlYy0+dm0oKS5hcGlMb2NrKCkudW5sb2NrKCk7CiB9CiAKLWJvb2wgSlNMb2Nr
OjpjdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jaygpCi17Ci0gICAgcmV0dXJuIG1fb3duZXJUaHJl
YWRJRCA9PSBzdGQ6OnRoaXNfdGhyZWFkOjpnZXRfaWQoKTsKLX0KLQogLy8gVGhpcyBmdW5jdGlv
biByZXR1cm5zIHRoZSBudW1iZXIgb2YgbG9ja3MgdGhhdCB3ZXJlIGRyb3BwZWQuCiB1bnNpZ25l
ZCBKU0xvY2s6OmRyb3BBbGxMb2NrcyhEcm9wQWxsTG9ja3MqIGRyb3BwZXIpCiB7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAkocmV2aXNpb24gMjEzMjMxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTIwLDggKzIwLDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJQbGF0Zm9ybVRocmVh
ZC5oIgogI2luY2x1ZGUgPG11dGV4PgotI2luY2x1ZGUgPHRocmVhZD4KICNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CkBAIC05Myw4ICs5MywxMyBAQCBwdWJsaWM6CiAKICAgICBWTSogdm0oKSB7IHJl
dHVybiBtX3ZtOyB9CiAKLSAgICBzdGQ6OnRocmVhZDo6aWQgb3duZXJUaHJlYWQoKSBjb25zdCB7
IHJldHVybiBtX293bmVyVGhyZWFkSUQ7IH0KLSAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGN1
cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCk7CisgICAgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVRo
cmVhZD4gb3duZXJUaHJlYWQoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1faGFzT3duZXJU
aHJlYWQpCisgICAgICAgICAgICByZXR1cm4gbV9vd25lclRocmVhZDsKKyAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICB9CisgICAgYm9vbCBjdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jaygpIHsgcmV0
dXJuIG1faGFzT3duZXJUaHJlYWQgJiYgbV9vd25lclRocmVhZCA9PSBjdXJyZW50UGxhdGZvcm1U
aHJlYWQoKTsgfQogCiAgICAgdm9pZCB3aWxsRGVzdHJveVZNKFZNKik7CiAKQEAgLTEyNiw3ICsx
MzEsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZ3JhYkFsbExvY2tzKERyb3BBbGxMb2NrcyosIHVu
c2lnbmVkIGxvY2tDb3VudCk7CiAKICAgICBMb2NrIG1fbG9jazsKLSAgICBzdGQ6OnRocmVhZDo6
aWQgbV9vd25lclRocmVhZElEOworICAgIGJvb2wgbV9oYXNPd25lclRocmVhZCB7IGZhbHNlIH07
CisgICAgUGxhdGZvcm1UaHJlYWQgbV9vd25lclRocmVhZDsKICAgICBpbnRwdHJfdCBtX2xvY2tD
b3VudDsKICAgICB1bnNpZ25lZCBtX2xvY2tEcm9wRGVwdGg7CiAgICAgYm9vbCBtX3Nob3VsZFJl
bGVhc2VIZWFwQWNjZXNzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUGxh
dGZvcm1UaHJlYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9QbGF0Zm9ybVRocmVhZC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1BsYXRmb3JtVGhyZWFkLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgT1MoREFSV0lOKSB8fCBPUyhVTklYKQorI2luY2x1ZGUgPHB0aHJlYWQuaD4K
KyNlbmRpZgorCisjaWYgT1MoREFSV0lOKQorI2luY2x1ZGUgPG1hY2gvdGhyZWFkX2FjdC5oPgor
I2VsaWYgT1MoV0lORE9XUykKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjZW5kaWYKKworbmFtZXNw
YWNlIEpTQyB7CisKKyNpZiBPUyhEQVJXSU4pCit0eXBlZGVmIG1hY2hfcG9ydF90IFBsYXRmb3Jt
VGhyZWFkOworI2VsaWYgT1MoV0lORE9XUykKK3R5cGVkZWYgRFdPUkQgUGxhdGZvcm1UaHJlYWQ7
CisjZWxpZiBVU0UoUFRIUkVBRFMpCit0eXBlZGVmIHB0aHJlYWRfdCBQbGF0Zm9ybVRocmVhZDsK
KyNlbmRpZiAvLyBPUyhEQVJXSU4pCisgICAgCitpbmxpbmUgUGxhdGZvcm1UaHJlYWQgY3VycmVu
dFBsYXRmb3JtVGhyZWFkKCkKK3sKKyNpZiBPUyhEQVJXSU4pCisgICAgcmV0dXJuIHB0aHJlYWRf
bWFjaF90aHJlYWRfbnAocHRocmVhZF9zZWxmKCkpOworI2VsaWYgT1MoV0lORE9XUykKKyAgICBy
ZXR1cm4gR2V0Q3VycmVudFRocmVhZElkKCk7CisjZWxpZiBVU0UoUFRIUkVBRFMpCisgICAgcmV0
dXJuIHB0aHJlYWRfc2VsZigpOworI2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMjEzMjMxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
OTIsNyArMzkyLDcgQEAgVk06On5WTSgpCiAgICAgLy8gQ2xlYXIgdGhpcyBmaXJzdCB0byBlbnN1
cmUgdGhhdCBub2JvZHkgdHJpZXMgdG8gcmVtb3ZlIHRoZW1zZWx2ZXMgZnJvbSBpdC4KICAgICBt
X3BlckJ5dGVjb2RlUHJvZmlsZXIgPSBudWxscHRyOwogCi0gICAgQVNTRVJUKG1fYXBpTG9jay0+
Y3VycmVudFRocmVhZElzSG9sZGluZ0xvY2soKSk7CisgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWRJ
c0hvbGRpbmdBUElMb2NrKCkpOwogICAgIG1fYXBpTG9jay0+d2lsbERlc3Ryb3lWTSh0aGlzKTsK
ICAgICBoZWFwLmxhc3RDaGFuY2VUb0ZpbmFsaXplKCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMjEzMjMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtNjExLDggKzYxMSw2IEBAIHB1YmxpYzoK
ICAgICBSVFRyYWNlTGlzdCogbV9ydFRyYWNlTGlzdDsKICNlbmRpZgogCi0gICAgc3RkOjp0aHJl
YWQ6OmlkIG93bmVyVGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV9hcGlMb2NrLT5vd25lclRocmVh
ZCgpOyB9Ci0KICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJlc2V0RGF0ZUNhY2hlKCk7CiAK
ICAgICBSZWdFeHBDYWNoZSogcmVnRXhwQ2FjaGUoKSB7IHJldHVybiBtX3JlZ0V4cENhY2hlOyB9
CkBAIC03MjUsNiArNzIzLDggQEAgcHJpdmF0ZToKICAgICBib29sIGlzU2FmZVRvUmVjdXJzZVNv
ZnRDTG9vcCgpIGNvbnN0OwogI2VuZGlmIC8vICFFTkFCTEUoSklUKQogCisgICAgc3RkOjpvcHRp
b25hbDxQbGF0Zm9ybVRocmVhZD4gb3duZXJUaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX2FwaUxv
Y2stPm93bmVyVGhyZWFkKCk7IH0KKwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgdGhyb3dF
eGNlcHRpb24oRXhlY1N0YXRlKiwgRXhjZXB0aW9uKik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
SlNWYWx1ZSB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKICAgICBKU19FWFBP
UlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiwgSlNPYmplY3Qq
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dhdGNoZG9nLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XYXRjaGRvZy5jcHAJKHJl
dmlzaW9uIDIxMzIzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dhdGNoZG9n
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBXYXRjaGRvZzo6V2F0Y2hkb2co
Vk0qIHZtKQogdm9pZCBXYXRjaGRvZzo6c2V0VGltZUxpbWl0KHN0ZDo6Y2hyb25vOjptaWNyb3Nl
Y29uZHMgbGltaXQsCiAgICAgU2hvdWxkVGVybWluYXRlQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQq
IGRhdGExLCB2b2lkKiBkYXRhMikKIHsKLSAgICBBU1NFUlQobV92bS0+b3duZXJUaHJlYWQoKSA9
PSBzdGQ6OnRoaXNfdGhyZWFkOjpnZXRfaWQoKSk7CisgICAgQVNTRVJUKG1fdm0tPmN1cnJlbnRU
aHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwogCiAgICAgbV90aW1lTGltaXQgPSBsaW1pdDsKICAg
ICBtX2NhbGxiYWNrID0gY2FsbGJhY2s7CkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgV2F0Y2hkb2c6
OnNldFRpbWVMaW1pdChzdGQ6OmNocm9ubzoKIAogYm9vbCBXYXRjaGRvZzo6c2hvdWxkVGVybWlu
YXRlKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBBU1NFUlQobV92bS0+b3duZXJUaHJlYWQoKSA9
PSBzdGQ6OnRoaXNfdGhyZWFkOjpnZXRfaWQoKSk7CisgICAgQVNTRVJUKG1fdm0tPmN1cnJlbnRU
aHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwogICAgIC8vIEZJWE1FOiBXaWxsIHVuaW5kZW50IHRo
ZSBmb2xsb3dpbmcgYmVmb3JlIGxhbmRpbmcuIExlYXZpbmcgaW5kZW50ZWQgZm9yIG5vdyB0byBt
aW5pbWl6ZSB0aGUgY29kZSBkaWZmLgogICAgIHsKICAgICAgICAgaWYgKGN1cnJlbnRXYWxsQ2xv
Y2tUaW1lKCkgPCBtX3dhbGxDbG9ja0RlYWRsaW5lKQpAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQg
V2F0Y2hkb2c6OmV4aXRlZFZNKCkKIHZvaWQgV2F0Y2hkb2c6OnN0YXJ0VGltZXIoc3RkOjpjaHJv
bm86Om1pY3Jvc2Vjb25kcyB0aW1lTGltaXQpCiB7CiAgICAgQVNTRVJUKG1faGFzRW50ZXJlZFZN
KTsKLSAgICBBU1NFUlQobV92bS0+b3duZXJUaHJlYWQoKSA9PSBzdGQ6OnRoaXNfdGhyZWFkOjpn
ZXRfaWQoKSk7CisgICAgQVNTRVJUKG1fdm0tPmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2Nr
KCkpOwogICAgIEFTU0VSVChoYXNUaW1lTGltaXQoKSk7CiAgICAgQVNTRVJUKHRpbWVMaW1pdCA8
PSBtX3RpbWVMaW1pdCk7CiAKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIFdhdGNoZG9nOjpzdGFy
dFRpbWVyKHN0ZDo6Y2hyb25vOjptCiB2b2lkIFdhdGNoZG9nOjpzdG9wVGltZXIoKQogewogICAg
IEFTU0VSVChtX2hhc0VudGVyZWRWTSk7Ci0gICAgQVNTRVJUKG1fdm0tPm93bmVyVGhyZWFkKCkg
PT0gc3RkOjp0aGlzX3RocmVhZDo6Z2V0X2lkKCkpOworICAgIEFTU0VSVChtX3ZtLT5jdXJyZW50
VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKICAgICBtX2NwdURlYWRsaW5lID0gbm9UaW1lTGlt
aXQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNUHJv
dG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNE
b2xsYXJWTVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIxMzIzMSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90b29scy9KU0RvbGxhclZNUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDQsNyArNDQsNyBAQCBjb25zdCBDbGFzc0luZm8gSlNEb2xsYXJWTVByb3RvdHlwZTo6c19pCiAg
ICAgCiBib29sIEpTRG9sbGFyVk1Qcm90b3R5cGU6OmN1cnJlbnRUaHJlYWRPd25zSlNMb2NrKEV4
ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gZXhlYy0+dm0oKS5hcGlMb2NrKCkuY3VycmVu
dFRocmVhZElzSG9sZGluZ0xvY2soKTsKKyAgICByZXR1cm4gZXhlYy0+dm0oKS5jdXJyZW50VGhy
ZWFkSXNIb2xkaW5nQVBJTG9jaygpOwogfQogCiBzdGF0aWMgYm9vbCBlbnN1cmVDdXJyZW50VGhy
ZWFkT3duc0pTTG9jayhFeGVjU3RhdGUqIGV4ZWMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvVk1JbnNwZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9WTUluc3BlY3Rvci5jcHAJKHJldmlzaW9uIDIxMzIzMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS90b29scy9WTUluc3BlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
OSw3ICsxMzksNyBAQCBhdXRvIFZNSW5zcGVjdG9yOjpjb2RlQmxvY2tGb3JNYWNoaW5lUEMoCiAg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBudWxscHRyOwogICAgIGJvb2wgaGFzVGltZW91dCA9
IGZhbHNlOwogICAgIGl0ZXJhdGUoWyZdIChWTSYgdm0pIHsKLSAgICAgICAgaWYgKCF2bS5hcGlM
b2NrKCkuY3VycmVudFRocmVhZElzSG9sZGluZ0xvY2soKSkKKyAgICAgICAgaWYgKCF2bS5jdXJy
ZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKQogICAgICAgICAgICAgcmV0dXJuIEZ1bmN0b3JT
dGF0dXM6OkNvbnRpbnVlOwogCiAgICAgICAgIC8vIEl0IGlzIHNhZmUgdG8gY2FsbCBIZWFwOjpm
b3JFYWNoQ29kZUJsb2NrSWdub3JpbmdKSVRQbGFucyBoZXJlIGJlY2F1c2U6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303095</attachid>
            <date>2017-03-01 12:04:02 -0800</date>
            <delta_ts>2017-03-01 12:04:02 -0800</delta_ts>
            <desc>patch for landing: added a comment in JSLock to explain why m_ownerThread cannot be an optional.</desc>
            <filename>bug-168996.patch</filename>
            <type>text/plain</type>
            <size>21723</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjEzMjM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBA
CisyMDE3LTAzLTAxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBb
UmUtbGFuZGluZ10gQ2hhbmdlIEpTTG9jayB0byBzdGFzaCBQbGF0Zm9ybVRocmVhZCBpbnN0ZWFk
IG9mIHN0ZDo6dGhyZWFkOjppZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2ODk5NgorCisgICAgICAgIFJldmlld2VkIGJ5IEZpbGlwIFBpemxvIGFu
ZCBTYWFtIEJhcmF0aS4KKworICAgICAgICBQbGF0Zm9ybVRocmVhZCBpcyBtb3JlIHVzZWZ1bCBi
ZWNhdXNlIGl0IGFsbG93cyB1cyB0bzoKKyAgICAgICAgMS4gZmluZCB0aGUgTWFjaGluZVRocmVh
ZHM6OlRocmVhZCB3aGljaCBpcyBhc3NvY2lhdGVkIHdpdGggaXQuCisgICAgICAgIDIuIHN1c3Bl
bmQgLyByZXN1bWUgdGhyZWFkcy4KKyAgICAgICAgMy4gc2VuZCBhIHNpZ25hbCB0byBhIHRocmVh
ZC4KKworICAgICAgICBXZSBjYW4ndCBkbyB0aG9zZSB3aXRoIHN0ZDo6dGhyZWFkOjppZC4gIFdl
IHdpbGwgbmVlZCBvbmUgb3IgbW9yZSBvZiB0aGVzZQorICAgICAgICBjYXBhYmlsaXRpZXMgdG8g
aW1wbGVtZW50IG5vbi1wb2xsaW5nIFZNIHRyYXBzIGxhdGVyLgorCisgICAgICAgIFVwZGF0ZTog
U2luY2Ugd2UgZG9uJ3QgaGF2ZSBhIGNhbm9uaWNhbCAidW5pbml0aWFsaXplZCIgdmFsdWUgZm9y
IFBsYXRmb3JtVGhyZWFkLAorICAgICAgICB3ZSBub3cgaGF2ZSBhIEpTTG9jazo6bV9oYXNPd25l
clRocmVhZCBmbGFnIHRoYXQgaXMgc2V0IHRvIHRydWUgaWYgYW5kIG9ubHkgdGhlCisgICAgICAg
IG1fb3duZXJUaHJlYWQgdmFsdWUgaXMgdmFsaWQuICBKU0xvY2s6OmN1cnJlbnRUaHJlYWRJc0hv
bGRpbmdMb2NrKCkgbm93IGNoZWNrcworICAgICAgICBKU0xvY2s6Om1faGFzT3duZXJUaHJlYWQg
YmVmb3JlIGRvaW5nIHRoZSB0aHJlYWQgaWRlbnRpdHkgY29tcGFyaXNvbi4KKworICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaGVh
cC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwOgorICAgICAgICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6
VGhyZWFkOjpjcmVhdGVGb3JDdXJyZW50VGhyZWFkKToKKyAgICAgICAgKEpTQzo6TWFjaGluZVRo
cmVhZHM6Om1hY2hpbmVUaHJlYWRGb3JDdXJyZW50VGhyZWFkKToKKyAgICAgICAgKEpTQzo6TWFj
aGluZVRocmVhZHM6OnJlbW92ZVRocmVhZCk6CisgICAgICAgIChKU0M6Ok1hY2hpbmVUaHJlYWRz
OjpUaHJlYWQ6OnN1c3BlbmQpOgorICAgICAgICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6dHJ5Q29w
eU90aGVyVGhyZWFkU3RhY2tzKToKKyAgICAgICAgKEpTQzo6Z2V0Q3VycmVudFBsYXRmb3JtVGhy
ZWFkKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL01hY2hpbmVTdGFja01hcmtlci5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNDZWxsSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmNs
YXNzSW5mbyk6CisgICAgICAgICogcnVudGltZS9KU0xvY2suY3BwOgorICAgICAgICAoSlNDOjpK
U0xvY2s6OkpTTG9jayk6CisgICAgICAgIChKU0M6OkpTTG9jazo6bG9jayk6CisgICAgICAgIChK
U0M6OkpTTG9jazo6dW5sb2NrKToKKyAgICAgICAgKEpTQzo6SlNMb2NrOjpjdXJyZW50VGhyZWFk
SXNIb2xkaW5nTG9jayk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU0xvY2suaDoKKyAg
ICAgICAgKEpTQzo6SlNMb2NrOjpvd25lclRocmVhZCk6CisgICAgICAgIChKU0M6OkpTTG9jazo6
Y3VycmVudFRocmVhZElzSG9sZGluZ0xvY2spOgorICAgICAgICAqIHJ1bnRpbWUvUGxhdGZvcm1U
aHJlYWQuaDogQWRkZWQuCisgICAgICAgIChKU0M6OmN1cnJlbnRQbGF0Zm9ybVRocmVhZCk6Cisg
ICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjp+Vk0pOgorICAgICAg
ICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKEpTQzo6Vk06Om93bmVyVGhyZWFkKToKKyAgICAg
ICAgKiBydW50aW1lL1dhdGNoZG9nLmNwcDoKKyAgICAgICAgKEpTQzo6V2F0Y2hkb2c6OnNldFRp
bWVMaW1pdCk6CisgICAgICAgIChKU0M6OldhdGNoZG9nOjpzaG91bGRUZXJtaW5hdGUpOgorICAg
ICAgICAoSlNDOjpXYXRjaGRvZzo6c3RhcnRUaW1lcik6CisgICAgICAgIChKU0M6OldhdGNoZG9n
OjpzdG9wVGltZXIpOgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk1Qcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpKU0RvbGxhclZNUHJvdG90eXBlOjpjdXJyZW50VGhyZWFkT3duc0pTTG9j
ayk6CisgICAgICAgICogdG9vbHMvVk1JbnNwZWN0b3IuY3BwOgorCiAyMDE3LTAzLTAxICBTYWFt
IEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBhIG1lZ2Et
ZGlzYXNzZW1ibGVyIHRoYXQnbGwgYmUgdXNlZCBpbiB0aGUgRlRMCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjEzMjMxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTI0MjMsNiArMjQyMyw3IEBACiAJCUZFRDI4N0IyMTVFQzlBNTcwMERBODE2MSAvKiBM
TEludE9wY29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkVEMjg3QjExNUVDOUE1NzAwREE4MTYxIC8qIExMSW50T3Bjb2RlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkVEOTRGMkUxNzFFM0UyMzAw
QkU3N0E0IC8qIFdhdGNoZG9nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFRDk0RjJCMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5jcHAgKi87
IH07CiAJCUZFRDk0RjJGMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVEOTRGMkMxNzFFM0UyMzAwQkU3
N0E0IC8qIFdhdGNoZG9nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJRkVFNDNGQ0UxRTY2NDE3MTAwNzdENkQxIC8qIFBsYXRmb3JtVGhyZWFkLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUU0M0ZDRDFF
NjY0MTQwMDA3N0Q2RDEgLyogUGxhdGZvcm1UaHJlYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRUYwNDA1MTFBQUU2NjJEMDBCRDI4QjAgLyog
Q29tcGFyZUFuZFN3YXBUZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFRjA0MDUwMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRl
c3QuY3BwICovOyB9OwogCQlGRUZENkZDNjFENUU3OTkyMDA4RjJGMEIgLyogSlNTdHJpbmdJbmxp
bmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUZE
NkZDNTFENUU3OTcwMDA4RjJGMEIgLyogSlNTdHJpbmdJbmxpbmVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2Vj
dGlvbiAqLwpAQCAtNTAwMyw2ICs1MDA0LDcgQEAKIAkJRkVEOTRGMkMxNzFFM0UyMzAwQkU3N0E0
IC8qIFdhdGNoZG9nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhdGNoZG9n
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFREE1MEQ0MUI5N0Y0NDIwMDlBM0I0
RiAvKiBQaW5nUG9uZ1N0YWNrT3ZlcmZsb3dUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IFBpbmdQb25nU3RhY2tPdmVyZmxvd1Rlc3QuY3BwOyBwYXRoID0gQVBJ
L3Rlc3RzL1BpbmdQb25nU3RhY2tPdmVyZmxvd1Rlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRURBNTBENTFCOTdGNEQ5MDA5QTNCNEYgLyogUGluZ1BvbmdTdGFja092ZXJm
bG93VGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQaW5nUG9uZ1N0YWNr
T3ZlcmZsb3dUZXN0Lmg7IHBhdGggPSBBUEkvdGVzdHMvUGluZ1BvbmdTdGFja092ZXJmbG93VGVz
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRUU0M0ZDRDFFNjY0MTQwMDA3N0Q2
RDEgLyogUGxhdGZvcm1UaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UGxhdGZvcm1UaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVGMDQwNTAx
QUFFNjYyRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDb21wYXJlQW5kU3dhcFRlc3QuY3BwOyBwYXRoID0gQVBJ
L3Rlc3RzL0NvbXBhcmVBbmRTd2FwVGVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZFRjA0MDUyMUFBRUM0RUQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ29tcGFyZUFuZFN3YXBUZXN0Lmg7IHBhdGgg
PSBBUEkvdGVzdHMvQ29tcGFyZUFuZFN3YXBUZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUZFRkQ2RkM1MUQ1RTc5NzAwMDhGMkYwQiAvKiBKU1N0cmluZ0lubGluZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJpbmdJbmxpbmVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NzMyLDYgKzY3MzQsNyBAQAogCQkJCUY2OTJBODc4MDI1
NTU5N0QwMUZGNjBGNyAvKiBPcGVyYXRpb25zLmggKi8sCiAJCQkJMEZFMjI4RUExNDM2QUIyMzAw
MTk2QzQ4IC8qIE9wdGlvbnMuY3BwICovLAogCQkJCTBGRTIyOEVCMTQzNkFCMjMwMDE5NkM0OCAv
KiBPcHRpb25zLmggKi8sCisJCQkJRkVFNDNGQ0QxRTY2NDE0MDAwNzdENkQxIC8qIFBsYXRmb3Jt
VGhyZWFkLmggKi8sCiAJCQkJODY4OTE2QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFByaXZhdGVOYW1l
LmggKi8sCiAJCQkJMTQ3MzQxREYxREMyQ0U5NjAwQUEyOUJBIC8qIFByb2dyYW1FeGVjdXRhYmxl
LmNwcCAqLywKIAkJCQkxNDczNDFEMzFEQzAyRTZEMDBBQTI5QkEgLyogUHJvZ3JhbUV4ZWN1dGFi
bGUuaCAqLywKQEAgLTkxNzQsNiArOTE3Nyw3IEBACiAJCQkJMEY0QTM4RkExQzhFMTNERjAwMTkw
MzE4IC8qIFN1cGVyU2FtcGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzA1QjQxQUMxQTZFNTAx
RTAwNzE2NzU3IC8qIFN5bWJvbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzA1QjQxQUUxQTZFNTAx
RTAwNzE2NzU3IC8qIFN5bWJvbENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRUU0
M0ZDRTFFNjY0MTcxMDA3N0Q2RDEgLyogUGxhdGZvcm1UaHJlYWQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk5NkI3MzI3MUJEQTA4RUYwMDMzMUI4NCAvKiBTeW1ib2xDb25zdHJ1Y3Rvci5sdXQuaCBp
biBIZWFkZXJzICovLAogCQkJCTcwNUI0MUIwMUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2xPYmpl
Y3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwNUI0MUIyMUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1i
b2xQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwCShyZXZpc2lvbiAyMTMyMzEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzksMTcgKzE3OSw2IEBAIHN0YXRpYyBBY3RpdmVNYWNoaW5lVGhyZWFk
c01hbmFnZXImIGFjdGkKICAgICByZXR1cm4gKm1hbmFnZXI7CiB9CiAgICAgCi1zdGF0aWMgaW5s
aW5lIFBsYXRmb3JtVGhyZWFkIGdldEN1cnJlbnRQbGF0Zm9ybVRocmVhZCgpCi17Ci0jaWYgT1Mo
REFSV0lOKQotICAgIHJldHVybiBwdGhyZWFkX21hY2hfdGhyZWFkX25wKHB0aHJlYWRfc2VsZigp
KTsKLSNlbGlmIE9TKFdJTkRPV1MpCi0gICAgcmV0dXJuIEdldEN1cnJlbnRUaHJlYWRJZCgpOwot
I2VsaWYgVVNFKFBUSFJFQURTKQotICAgIHJldHVybiBwdGhyZWFkX3NlbGYoKTsKLSNlbmRpZgot
fQotCiBNYWNoaW5lVGhyZWFkczo6TWFjaGluZVRocmVhZHMoKQogICAgIDogbV9yZWdpc3RlcmVk
VGhyZWFkcygwKQogICAgICwgbV90aHJlYWRTcGVjaWZpY0Zvck1hY2hpbmVUaHJlYWRzKDApCkBA
IC0yMTQsNyArMjAzLDcgQEAgTWFjaGluZVRocmVhZHM6On5NYWNoaW5lVGhyZWFkcygpCiBUaHJl
YWQqIE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OmNyZWF0ZUZvckN1cnJlbnRUaHJlYWQoKQogewog
ICAgIGF1dG8gc3RhY2tCb3VuZHMgPSB3dGZUaHJlYWREYXRhKCkuc3RhY2soKTsKLSAgICByZXR1
cm4gbmV3IFRocmVhZChnZXRDdXJyZW50UGxhdGZvcm1UaHJlYWQoKSwgc3RhY2tCb3VuZHMub3Jp
Z2luKCksIHN0YWNrQm91bmRzLmVuZCgpKTsKKyAgICByZXR1cm4gbmV3IFRocmVhZChjdXJyZW50
UGxhdGZvcm1UaHJlYWQoKSwgc3RhY2tCb3VuZHMub3JpZ2luKCksIHN0YWNrQm91bmRzLmVuZCgp
KTsKIH0KIAogYm9vbCBNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpvcGVyYXRvcj09KGNvbnN0IFBs
YXRmb3JtVGhyZWFkJiBvdGhlcikgY29uc3QKQEAgLTI1MCw3ICsyMzksNyBAQCB2b2lkIE1hY2hp
bmVUaHJlYWRzOjphZGRDdXJyZW50VGhyZWFkKCkKIFRocmVhZCogTWFjaGluZVRocmVhZHM6Om1h
Y2hpbmVUaHJlYWRGb3JDdXJyZW50VGhyZWFkKCkKIHsKICAgICBMb2NrSG9sZGVyIGxvY2sobV9y
ZWdpc3RlcmVkVGhyZWFkc011dGV4KTsKLSAgICBQbGF0Zm9ybVRocmVhZCBwbGF0Zm9ybVRocmVh
ZCA9IGdldEN1cnJlbnRQbGF0Zm9ybVRocmVhZCgpOworICAgIFBsYXRmb3JtVGhyZWFkIHBsYXRm
b3JtVGhyZWFkID0gY3VycmVudFBsYXRmb3JtVGhyZWFkKCk7CiAgICAgZm9yIChUaHJlYWQqIHRo
cmVhZCA9IG1fcmVnaXN0ZXJlZFRocmVhZHM7IHRocmVhZDsgdGhyZWFkID0gdGhyZWFkLT5uZXh0
KSB7CiAgICAgICAgIGlmICgqdGhyZWFkID09IHBsYXRmb3JtVGhyZWFkKQogICAgICAgICAgICAg
cmV0dXJuIHRocmVhZDsKQEAgLTI4Miw3ICsyNzEsNyBAQCB2b2lkIFRIUkVBRF9TUEVDSUZJQ19D
QUxMIE1hY2hpbmVUaHJlYWRzCiAgICAgICAgICAgICByZXR1cm47CiAjZW5kaWYKIAotICAgICAg
ICBtYWNoaW5lVGhyZWFkcy0+cmVtb3ZlVGhyZWFkSWZGb3VuZChnZXRDdXJyZW50UGxhdGZvcm1U
aHJlYWQoKSk7CisgICAgICAgIG1hY2hpbmVUaHJlYWRzLT5yZW1vdmVUaHJlYWRJZkZvdW5kKGN1
cnJlbnRQbGF0Zm9ybVRocmVhZCgpKTsKICAgICB9CiB9CiAKQEAgLTM3NSw3ICszNjQsNyBAQCBi
b29sIE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OnN1c3BlbmQoKQogICAgIEFTU0VSVCh0aHJlYWRJ
c1N1c3BlbmRlZCk7CiAgICAgcmV0dXJuIHRocmVhZElzU3VzcGVuZGVkOwogI2VsaWYgVVNFKFBU
SFJFQURTKQotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZ2V0Q3VycmVudFBsYXRmb3JtVGhyZWFk
KCkgIT0gcGxhdGZvcm1UaHJlYWQsICJDdXJyZW50bHkgd2UgZG9uJ3Qgc3VwcG9ydCBzdXNwZW5k
IHRoZSBjdXJyZW50IHRocmVhZCBpdHNlbGYuIik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShj
dXJyZW50UGxhdGZvcm1UaHJlYWQoKSAhPSBwbGF0Zm9ybVRocmVhZCwgIkN1cnJlbnRseSB3ZSBk
b24ndCBzdXBwb3J0IHN1c3BlbmQgdGhlIGN1cnJlbnQgdGhyZWFkIGl0c2VsZi4iKTsKICAgICB7
CiAgICAgICAgIC8vIER1cmluZyBzdXNwZW5kLCBzdXNwZW5kIG9yIHJlc3VtZSBzaG91bGQgbm90
IGJlIGV4ZWN1dGVkIGZyb20gdGhlIG90aGVyIHRocmVhZHMuCiAgICAgICAgIC8vIFdlIHVzZSBn
bG9iYWwgbG9jayBpbnN0ZWFkIG9mIHBlciB0aHJlYWQgbG9jay4KQEAgLTk0OCwxNCArOTM3LDE0
IEBAIGJvb2wgTWFjaGluZVRocmVhZHM6OnRyeUNvcHlPdGhlclRocmVhZFMKIAogICAgICpzaXpl
ID0gMDsKIAotICAgIFBsYXRmb3JtVGhyZWFkIGN1cnJlbnRQbGF0Zm9ybVRocmVhZCA9IGdldEN1
cnJlbnRQbGF0Zm9ybVRocmVhZCgpOworICAgIFBsYXRmb3JtVGhyZWFkIHBsYXRmb3JtVGhyZWFk
ID0gY3VycmVudFBsYXRmb3JtVGhyZWFkKCk7CiAgICAgaW50IG51bWJlck9mVGhyZWFkcyA9IDA7
IC8vIFVzaW5nIDAgdG8gZGVub3RlIHRoYXQgd2UgaGF2ZW4ndCBjb3VudGVkIHRoZSBudW1iZXIg
b2YgdGhyZWFkcyB5ZXQuCiAgICAgaW50IGluZGV4ID0gMTsKICAgICBUaHJlYWQqIHRocmVhZHNU
b0JlRGVsZXRlZCA9IG51bGxwdHI7CiAKICAgICBUaHJlYWQqIHByZXZpb3VzVGhyZWFkID0gbnVs
bHB0cjsKICAgICBmb3IgKFRocmVhZCogdGhyZWFkID0gbV9yZWdpc3RlcmVkVGhyZWFkczsgdGhy
ZWFkOyBpbmRleCsrKSB7Ci0gICAgICAgIGlmICgqdGhyZWFkICE9IGN1cnJlbnRQbGF0Zm9ybVRo
cmVhZCkgeworICAgICAgICBpZiAoKnRocmVhZCAhPSBwbGF0Zm9ybVRocmVhZCkgewogICAgICAg
ICAgICAgYm9vbCBzdWNjZXNzID0gdGhyZWFkLT5zdXNwZW5kKCk7CiAjaWYgT1MoREFSV0lOKQog
ICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7CkBAIC05OTksMTIgKzk4OCwxMiBAQCBib29sIE1h
Y2hpbmVUaHJlYWRzOjp0cnlDb3B5T3RoZXJUaHJlYWRTCiAgICAgfQogCiAgICAgZm9yIChUaHJl
YWQqIHRocmVhZCA9IG1fcmVnaXN0ZXJlZFRocmVhZHM7IHRocmVhZDsgdGhyZWFkID0gdGhyZWFk
LT5uZXh0KSB7Ci0gICAgICAgIGlmICgqdGhyZWFkICE9IGN1cnJlbnRQbGF0Zm9ybVRocmVhZCkK
KyAgICAgICAgaWYgKCp0aHJlYWQgIT0gcGxhdGZvcm1UaHJlYWQpCiAgICAgICAgICAgICB0cnlD
b3B5T3RoZXJUaHJlYWRTdGFjayh0aHJlYWQsIGJ1ZmZlciwgY2FwYWNpdHksIHNpemUpOwogICAg
IH0KIAogICAgIGZvciAoVGhyZWFkKiB0aHJlYWQgPSBtX3JlZ2lzdGVyZWRUaHJlYWRzOyB0aHJl
YWQ7IHRocmVhZCA9IHRocmVhZC0+bmV4dCkgewotICAgICAgICBpZiAoKnRocmVhZCAhPSBjdXJy
ZW50UGxhdGZvcm1UaHJlYWQpCisgICAgICAgIGlmICgqdGhyZWFkICE9IHBsYXRmb3JtVGhyZWFk
KQogICAgICAgICAgICAgdGhyZWFkLT5yZXN1bWUoKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5oCShyZXZpc2lvbiAy
MTMyMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMjEsMTYgKzIxLDEzIEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiUGxhdGZvcm1UaHJlYWQuaCIKICNpbmNsdWRlICJSZWdpc3RlclN0YXRlLmgiCiAj
aW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNs
dWRlIDx3dGYvU2NvcGVkTGFtYmRhLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+
CiAKLSNpZiBPUyhEQVJXSU4pCi0jaW5jbHVkZSA8bWFjaC90aHJlYWRfYWN0Lmg+Ci0jZW5kaWYK
LQogI2lmIFVTRShQVEhSRUFEUykgJiYgIU9TKFdJTkRPV1MpICYmICFPUyhEQVJXSU4pCiAjaW5j
bHVkZSA8c2VtYXBob3JlLmg+CiAjaW5jbHVkZSA8c2lnbmFsLmg+CkBAIC00MywxNCArNDAsNiBA
QAogI2VuZGlmCiAjZW5kaWYKIAotI2lmIE9TKERBUldJTikKLXR5cGVkZWYgbWFjaF9wb3J0X3Qg
UGxhdGZvcm1UaHJlYWQ7Ci0jZWxpZiBPUyhXSU5ET1dTKQotdHlwZWRlZiBEV09SRCBQbGF0Zm9y
bVRocmVhZDsKLSNlbGlmIFVTRShQVEhSRUFEUykKLXR5cGVkZWYgcHRocmVhZF90IFBsYXRmb3Jt
VGhyZWFkOwotI2VuZGlmIC8vIE9TKERBUldJTikKLQogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNz
IENvZGVCbG9ja1NldDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGxJbmxpbmVzLmgJKHJldmlzaW9uIDIxMzIzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjc4LDkgKzI3OCw5
IEBAIEFMV0FZU19JTkxJTkUgY29uc3QgQ2xhc3NJbmZvKiBKU0NlbGw6OmMKICAgICAvLyBXaGF0
IHdlIHJlYWxseSB3YW50IHRvIGFzc2VydCBoZXJlIGlzIHRoYXQgd2UncmUgbm90IGN1cnJlbnRs
eSBkZXN0cnVjdGluZyB0aGlzIG9iamVjdCAod2hpY2ggbWFrZXMgaXRzIGNsYXNzSW5mbwogICAg
IC8vIGludmFsaWQpLiBJZiBtdXRhdG9yU3RhdGUoKSA9PSBNdXRhdG9yU3RhdGU6OlJ1bm5pbmcs
IHRoZW4gd2UncmUgbm90IGN1cnJlbnRseSBzd2VlcGluZywgYW5kIHRoZXJlZm9yZSBjYW5ub3Qg
YmUKICAgICAvLyBkZXN0cnVjdGluZyB0aGUgb2JqZWN0LiBUaGUgR0MgdGhyZWFkIG9yIEpJVCB0
aHJlYWRzLCB1bmxpa2UgdGhlIG11dGF0b3IgdGhyZWFkLCBhcmUgYWJsZSB0byBhY2Nlc3MgY2xh
c3NJbmZvCi0gICAgLy8gaW5kZXBlbmRlbnQgb2Ygd2hldGhlciB0aGUgbXV0YXRvciB0aHJlYWQg
aXMgc3dlZXBpbmcgb3Igbm90LiBIZW5jZSwgd2UgYWxzbyBjaGVjayBmb3Igb3duZXJUaHJlYWQo
KSAhPQotICAgIC8vIHN0ZDo6dGhpc190aHJlYWQ6OmdldF9pZCgpIHRvIGFsbG93IHRoZSBHQyB0
aHJlYWQgb3IgSklUIHRocmVhZHMgdG8gcGFzcyB0aGlzIGFzc2VydGlvbi4KLSAgICBBU1NFUlQo
dm0uaGVhcC5tdXRhdG9yU3RhdGUoKSAhPSBNdXRhdG9yU3RhdGU6OlN3ZWVwaW5nIHx8IHZtLmFw
aUxvY2soKS5vd25lclRocmVhZCgpICE9IHN0ZDo6dGhpc190aHJlYWQ6OmdldF9pZCgpKTsKKyAg
ICAvLyBpbmRlcGVuZGVudCBvZiB3aGV0aGVyIHRoZSBtdXRhdG9yIHRocmVhZCBpcyBzd2VlcGlu
ZyBvciBub3QuIEhlbmNlLCB3ZSBhbHNvIGNoZWNrIGZvciAhY3VycmVudFRocmVhZElzSG9sZGlu
Z0FQSUxvY2soKQorICAgIC8vIHRvIGFsbG93IHRoZSBHQyB0aHJlYWQgb3IgSklUIHRocmVhZHMg
dG8gcGFzcyB0aGlzIGFzc2VydGlvbi4KKyAgICBBU1NFUlQodm0uaGVhcC5tdXRhdG9yU3RhdGUo
KSAhPSBNdXRhdG9yU3RhdGU6OlN3ZWVwaW5nIHx8ICF2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5n
QVBJTG9jaygpKTsKICAgICByZXR1cm4gc3RydWN0dXJlKHZtKS0+Y2xhc3NJbmZvKCk7CiB9CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAkocmV2aXNpb24g
MjEzMjMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzUsOCArNzUsNyBAQCBKU0xvY2tIb2xkZXI6On5KU0xvY2tIb2xkZXIo
KQogfQogCiBKU0xvY2s6OkpTTG9jayhWTSogdm0pCi0gICAgOiBtX293bmVyVGhyZWFkSUQoc3Rk
Ojp0aHJlYWQ6OmlkKCkpCi0gICAgLCBtX2xvY2tDb3VudCgwKQorICAgIDogbV9sb2NrQ291bnQo
MCkKICAgICAsIG1fbG9ja0Ryb3BEZXB0aCgwKQogICAgICwgbV92bSh2bSkKICAgICAsIG1fZW50
cnlBdG9taWNTdHJpbmdUYWJsZShudWxscHRyKQpAQCAtMTEwLDcgKzEwOSw5IEBAIHZvaWQgSlNM
b2NrOjpsb2NrKGludHB0cl90IGxvY2tDb3VudCkKICAgICAgICAgbV9sb2NrLmxvY2soKTsKICAg
ICB9CiAKLSAgICBtX293bmVyVGhyZWFkSUQgPSBzdGQ6OnRoaXNfdGhyZWFkOjpnZXRfaWQoKTsK
KyAgICBtX293bmVyVGhyZWFkID0gY3VycmVudFBsYXRmb3JtVGhyZWFkKCk7CisgICAgV1RGOjpz
dG9yZVN0b3JlRmVuY2UoKTsKKyAgICBtX2hhc093bmVyVGhyZWFkID0gdHJ1ZTsKICAgICBBU1NF
UlQoIW1fbG9ja0NvdW50KTsKICAgICBtX2xvY2tDb3VudCA9IGxvY2tDb3VudDsKIApAQCAtMTY4
LDcgKzE2OSw3IEBAIHZvaWQgSlNMb2NrOjp1bmxvY2soaW50cHRyX3QgdW5sb2NrQ291bnQKICAg
ICBtX2xvY2tDb3VudCAtPSB1bmxvY2tDb3VudDsKIAogICAgIGlmICghbV9sb2NrQ291bnQpIHsK
LSAgICAgICAgbV9vd25lclRocmVhZElEID0gc3RkOjp0aHJlYWQ6OmlkKCk7CisgICAgICAgIG1f
aGFzT3duZXJUaHJlYWQgPSBmYWxzZTsKICAgICAgICAgbV9sb2NrLnVubG9jaygpOwogICAgIH0K
IH0KQEAgLTIwMiwxMSArMjAzLDYgQEAgdm9pZCBKU0xvY2s6OnVubG9jayhFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgZXhlYy0+dm0oKS5hcGlMb2NrKCkudW5sb2NrKCk7CiB9CiAKLWJvb2wgSlNMb2Nr
OjpjdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jaygpCi17Ci0gICAgcmV0dXJuIG1fb3duZXJUaHJl
YWRJRCA9PSBzdGQ6OnRoaXNfdGhyZWFkOjpnZXRfaWQoKTsKLX0KLQogLy8gVGhpcyBmdW5jdGlv
biByZXR1cm5zIHRoZSBudW1iZXIgb2YgbG9ja3MgdGhhdCB3ZXJlIGRyb3BwZWQuCiB1bnNpZ25l
ZCBKU0xvY2s6OmRyb3BBbGxMb2NrcyhEcm9wQWxsTG9ja3MqIGRyb3BwZXIpCiB7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAkocmV2aXNpb24gMjEzMjMxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTIwLDggKzIwLDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJQbGF0Zm9ybVRocmVh
ZC5oIgogI2luY2x1ZGUgPG11dGV4PgotI2luY2x1ZGUgPHRocmVhZD4KICNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CkBAIC05Myw4ICs5MywxMyBAQCBwdWJsaWM6CiAKICAgICBWTSogdm0oKSB7IHJl
dHVybiBtX3ZtOyB9CiAKLSAgICBzdGQ6OnRocmVhZDo6aWQgb3duZXJUaHJlYWQoKSBjb25zdCB7
IHJldHVybiBtX293bmVyVGhyZWFkSUQ7IH0KLSAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGN1
cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCk7CisgICAgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVRo
cmVhZD4gb3duZXJUaHJlYWQoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1faGFzT3duZXJU
aHJlYWQpCisgICAgICAgICAgICByZXR1cm4gbV9vd25lclRocmVhZDsKKyAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICB9CisgICAgYm9vbCBjdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jaygpIHsgcmV0
dXJuIG1faGFzT3duZXJUaHJlYWQgJiYgbV9vd25lclRocmVhZCA9PSBjdXJyZW50UGxhdGZvcm1U
aHJlYWQoKTsgfQogCiAgICAgdm9pZCB3aWxsRGVzdHJveVZNKFZNKik7CiAKQEAgLTEyNiw3ICsx
MzEsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdyYWJBbGxMb2NrcyhEcm9wQWxsTG9ja3MqLCB1
bnNpZ25lZCBsb2NrQ291bnQpOwogCiAgICAgTG9jayBtX2xvY2s7Ci0gICAgc3RkOjp0aHJlYWQ6
OmlkIG1fb3duZXJUaHJlYWRJRDsKKyAgICAvLyBXZSBjYW5ub3QgbWFrZSBtX293bmVyVGhyZWFk
IGFuIG9wdGlvbmFsIChpbnN0ZWFkIG9mIHBhaXJpbmcgaXQgd2l0aCBhbiBleHBsaWNpdAorICAg
IC8vIG1faGFzT3duZXJUaHJlYWQpIGJlY2F1c2UgY3VycmVudFRocmVhZElzSG9sZGluZ0xvY2so
KSBtYXkgYmUgY2FsbGVkIGZyb20gYQorICAgIC8vIGRpZmZlcmVudCB0aHJlYWQsIGFuZCBhbiBv
cHRpb25hbCBpcyB2dWxuZXJhYmxlIHRvIHJhY2VzLgorICAgIC8vIFNlZSBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5MDQyI2M2CisgICAgYm9vbCBtX2hhc093bmVy
VGhyZWFkIHsgZmFsc2UgfTsKKyAgICBQbGF0Zm9ybVRocmVhZCBtX293bmVyVGhyZWFkOwogICAg
IGludHB0cl90IG1fbG9ja0NvdW50OwogICAgIHVuc2lnbmVkIG1fbG9ja0Ryb3BEZXB0aDsKICAg
ICBib29sIG1fc2hvdWxkUmVsZWFzZUhlYXBBY2Nlc3M7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9QbGF0Zm9ybVRocmVhZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1BsYXRmb3JtVGhyZWFkLmgJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUGxhdGZvcm1UaHJlYWQuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBPUyhEQVJXSU4pIHx8IE9TKFVOSVgpCisjaW5j
bHVkZSA8cHRocmVhZC5oPgorI2VuZGlmCisKKyNpZiBPUyhEQVJXSU4pCisjaW5jbHVkZSA8bWFj
aC90aHJlYWRfYWN0Lmg+CisjZWxpZiBPUyhXSU5ET1dTKQorI2luY2x1ZGUgPHdpbmRvd3MuaD4K
KyNlbmRpZgorCituYW1lc3BhY2UgSlNDIHsKKworI2lmIE9TKERBUldJTikKK3R5cGVkZWYgbWFj
aF9wb3J0X3QgUGxhdGZvcm1UaHJlYWQ7CisjZWxpZiBPUyhXSU5ET1dTKQordHlwZWRlZiBEV09S
RCBQbGF0Zm9ybVRocmVhZDsKKyNlbGlmIFVTRShQVEhSRUFEUykKK3R5cGVkZWYgcHRocmVhZF90
IFBsYXRmb3JtVGhyZWFkOworI2VuZGlmIC8vIE9TKERBUldJTikKKyAgICAKK2lubGluZSBQbGF0
Zm9ybVRocmVhZCBjdXJyZW50UGxhdGZvcm1UaHJlYWQoKQoreworI2lmIE9TKERBUldJTikKKyAg
ICByZXR1cm4gcHRocmVhZF9tYWNoX3RocmVhZF9ucChwdGhyZWFkX3NlbGYoKSk7CisjZWxpZiBP
UyhXSU5ET1dTKQorICAgIHJldHVybiBHZXRDdXJyZW50VGhyZWFkSWQoKTsKKyNlbGlmIFVTRShQ
VEhSRUFEUykKKyAgICByZXR1cm4gcHRocmVhZF9zZWxmKCk7CisjZW5kaWYKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCShyZXZp
c2lvbiAyMTMyMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM5Miw3ICszOTIsNyBAQCBWTTo6flZNKCkKICAgICAvLyBDbGVhciB0
aGlzIGZpcnN0IHRvIGVuc3VyZSB0aGF0IG5vYm9keSB0cmllcyB0byByZW1vdmUgdGhlbXNlbHZl
cyBmcm9tIGl0LgogICAgIG1fcGVyQnl0ZWNvZGVQcm9maWxlciA9IG51bGxwdHI7CiAKLSAgICBB
U1NFUlQobV9hcGlMb2NrLT5jdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jaygpKTsKKyAgICBBU1NF
UlQoY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7CiAgICAgbV9hcGlMb2NrLT53aWxs
RGVzdHJveVZNKHRoaXMpOwogICAgIGhlYXAubGFzdENoYW5jZVRvRmluYWxpemUoKTsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAyMTMyMzEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MTEsOCAr
NjExLDYgQEAgcHVibGljOgogICAgIFJUVHJhY2VMaXN0KiBtX3J0VHJhY2VMaXN0OwogI2VuZGlm
CiAKLSAgICBzdGQ6OnRocmVhZDo6aWQgb3duZXJUaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX2Fw
aUxvY2stPm93bmVyVGhyZWFkKCk7IH0KLQogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVz
ZXREYXRlQ2FjaGUoKTsKIAogICAgIFJlZ0V4cENhY2hlKiByZWdFeHBDYWNoZSgpIHsgcmV0dXJu
IG1fcmVnRXhwQ2FjaGU7IH0KQEAgLTcyNSw2ICs3MjMsOCBAQCBwcml2YXRlOgogICAgIGJvb2wg
aXNTYWZlVG9SZWN1cnNlU29mdENMb29wKCkgY29uc3Q7CiAjZW5kaWYgLy8gIUVOQUJMRShKSVQp
CiAKKyAgICBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtVGhyZWFkPiBvd25lclRocmVhZCgpIGNvbnN0
IHsgcmV0dXJuIG1fYXBpTG9jay0+b3duZXJUaHJlYWQoKTsgfQorCiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqLCBFeGNlcHRpb24qKTsKICAgICBK
U19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEpTVmFs
dWUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd0V4Y2VwdGlvbihFeGVj
U3RhdGUqLCBKU09iamVjdCopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
V2F0Y2hkb2cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1dhdGNoZG9nLmNwcAkocmV2aXNpb24gMjEzMjMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV2F0Y2hkb2cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIFdh
dGNoZG9nOjpXYXRjaGRvZyhWTSogdm0pCiB2b2lkIFdhdGNoZG9nOjpzZXRUaW1lTGltaXQoc3Rk
OjpjaHJvbm86Om1pY3Jvc2Vjb25kcyBsaW1pdCwKICAgICBTaG91bGRUZXJtaW5hdGVDYWxsYmFj
ayBjYWxsYmFjaywgdm9pZCogZGF0YTEsIHZvaWQqIGRhdGEyKQogewotICAgIEFTU0VSVChtX3Zt
LT5vd25lclRocmVhZCgpID09IHN0ZDo6dGhpc190aHJlYWQ6OmdldF9pZCgpKTsKKyAgICBBU1NF
UlQobV92bS0+Y3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7CiAKICAgICBtX3RpbWVM
aW1pdCA9IGxpbWl0OwogICAgIG1fY2FsbGJhY2sgPSBjYWxsYmFjazsKQEAgLTY4LDcgKzY4LDcg
QEAgdm9pZCBXYXRjaGRvZzo6c2V0VGltZUxpbWl0KHN0ZDo6Y2hyb25vOgogCiBib29sIFdhdGNo
ZG9nOjpzaG91bGRUZXJtaW5hdGUoRXhlY1N0YXRlKiBleGVjKQogewotICAgIEFTU0VSVChtX3Zt
LT5vd25lclRocmVhZCgpID09IHN0ZDo6dGhpc190aHJlYWQ6OmdldF9pZCgpKTsKKyAgICBBU1NF
UlQobV92bS0+Y3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7CiAgICAgLy8gRklYTUU6
IFdpbGwgdW5pbmRlbnQgdGhlIGZvbGxvd2luZyBiZWZvcmUgbGFuZGluZy4gTGVhdmluZyBpbmRl
bnRlZCBmb3Igbm93IHRvIG1pbmltaXplIHRoZSBjb2RlIGRpZmYuCiAgICAgewogICAgICAgICBp
ZiAoY3VycmVudFdhbGxDbG9ja1RpbWUoKSA8IG1fd2FsbENsb2NrRGVhZGxpbmUpCkBAIC0xMzgs
NyArMTM4LDcgQEAgdm9pZCBXYXRjaGRvZzo6ZXhpdGVkVk0oKQogdm9pZCBXYXRjaGRvZzo6c3Rh
cnRUaW1lcihzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIHRpbWVMaW1pdCkKIHsKICAgICBBU1NF
UlQobV9oYXNFbnRlcmVkVk0pOwotICAgIEFTU0VSVChtX3ZtLT5vd25lclRocmVhZCgpID09IHN0
ZDo6dGhpc190aHJlYWQ6OmdldF9pZCgpKTsKKyAgICBBU1NFUlQobV92bS0+Y3VycmVudFRocmVh
ZElzSG9sZGluZ0FQSUxvY2soKSk7CiAgICAgQVNTRVJUKGhhc1RpbWVMaW1pdCgpKTsKICAgICBB
U1NFUlQodGltZUxpbWl0IDw9IG1fdGltZUxpbWl0KTsKIApAQCAtMTY4LDcgKzE2OCw3IEBAIHZv
aWQgV2F0Y2hkb2c6OnN0YXJ0VGltZXIoc3RkOjpjaHJvbm86Om0KIHZvaWQgV2F0Y2hkb2c6OnN0
b3BUaW1lcigpCiB7CiAgICAgQVNTRVJUKG1faGFzRW50ZXJlZFZNKTsKLSAgICBBU1NFUlQobV92
bS0+b3duZXJUaHJlYWQoKSA9PSBzdGQ6OnRoaXNfdGhyZWFkOjpnZXRfaWQoKSk7CisgICAgQVNT
RVJUKG1fdm0tPmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwogICAgIG1fY3B1RGVh
ZGxpbmUgPSBub1RpbWVMaW1pdDsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rv
b2xzL0pTRG9sbGFyVk1Qcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90b29scy9KU0RvbGxhclZNUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjEzMjMxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk1Qcm90b3R5cGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU0RvbGxhclZN
UHJvdG90eXBlOjpzX2kKICAgICAKIGJvb2wgSlNEb2xsYXJWTVByb3RvdHlwZTo6Y3VycmVudFRo
cmVhZE93bnNKU0xvY2soRXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBleGVjLT52bSgp
LmFwaUxvY2soKS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jaygpOworICAgIHJldHVybiBleGVj
LT52bSgpLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCk7CiB9CiAKIHN0YXRpYyBib29s
IGVuc3VyZUN1cnJlbnRUaHJlYWRPd25zSlNMb2NrKEV4ZWNTdGF0ZSogZXhlYykKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9WTUluc3BlY3Rvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1ZNSW5zcGVjdG9yLmNwcAkocmV2aXNpb24gMjEz
MjMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1ZNSW5zcGVjdG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTM5LDcgKzEzOSw3IEBAIGF1dG8gVk1JbnNwZWN0b3I6OmNvZGVCbG9j
a0Zvck1hY2hpbmVQQygKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG51bGxwdHI7CiAgICAg
Ym9vbCBoYXNUaW1lb3V0ID0gZmFsc2U7CiAgICAgaXRlcmF0ZShbJl0gKFZNJiB2bSkgewotICAg
ICAgICBpZiAoIXZtLmFwaUxvY2soKS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jaygpKQorICAg
ICAgICBpZiAoIXZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpCiAgICAgICAgICAg
ICByZXR1cm4gRnVuY3RvclN0YXR1czo6Q29udGludWU7CiAKICAgICAgICAgLy8gSXQgaXMgc2Fm
ZSB0byBjYWxsIEhlYXA6OmZvckVhY2hDb2RlQmxvY2tJZ25vcmluZ0pJVFBsYW5zIGhlcmUgYmVj
YXVzZToK
</data>

          </attachment>
      

    </bug>

</bugzilla>