<?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>239864</bug_id>
          
          <creation_ts>2022-04-28 12:39:41 -0700</creation_ts>
          <short_desc>Use IterationStatus in more places.</short_desc>
          <delta_ts>2022-05-04 10:46:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>pangle</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1865219</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2022-04-28 12:39:41 -0700</bug_when>
    <thetext>There&apos;s no need for a StackVisitor::Status and a VMInspector::FunctorStatus which represent the same idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865220</commentid>
    <comment_count>1</comment_count>
      <attachid>458542</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2022-04-28 12:44:46 -0700</bug_when>
    <thetext>Created attachment 458542
[fast-cq] proposed patch.

Let&apos;s check this on the EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866525</commentid>
    <comment_count>2</comment_count>
      <attachid>458542</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2022-05-04 10:42:37 -0700</bug_when>
    <thetext>Comment on attachment 458542
[fast-cq] proposed patch.

Thanks for the review.  Landing now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866527</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-05-04 10:45:58 -0700</bug_when>
    <thetext>Committed r293779 (250258@main): &lt;https://commits.webkit.org/250258@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 458542.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866528</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-05-04 10:46:56 -0700</bug_when>
    <thetext>&lt;rdar://problem/92742048&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458542</attachid>
            <date>2022-04-28 12:44:46 -0700</date>
            <delta_ts>2022-05-04 10:46:00 -0700</delta_ts>
            <desc>[fast-cq] proposed patch.</desc>
            <filename>bug-239864.patch</filename>
            <type>text/plain</type>
            <size>43405</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjkzNTgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYyIEBA
CisyMDIyLTA0LTI4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBV
c2UgSXRlcmF0aW9uU3RhdHVzIGluIG1vcmUgcGxhY2VzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5ODY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlcmUncyBubyBuZWVkIGZvciBhIFN0YWNrVmlz
aXRvcjo6U3RhdHVzIGFuZCBhIFZNSW5zcGVjdG9yOjpGdW5jdG9yU3RhdHVzIHdoaWNoCisgICAg
ICAgIHJlcHJlc2VudCB0aGUgc2FtZSBpZGVhLgorCisgICAgICAgICogQVBJL0pTQ29udGV4dFJl
Zi5jcHA6CisgICAgICAgIChCYWNrdHJhY2VGdW5jdG9yOjpvcGVyYXRvcigpIGNvbnN0KToKKyAg
ICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpSZWN1cnNpb25D
aGVja0Z1bmN0b3I6Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVn
Z2VyQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6TGluZUFuZENvbHVtbkZ1bmN0b3I6Om9w
ZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0
b3J5LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6Q3JlYXRlU2NyaXB0Q2FsbFN0YWNrRnVuY3Rv
cjo6b3BlcmF0b3IoKSBjb25zdCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNw
cDoKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpjYWxsZXJTb3VyY2VPcmlnaW4pOgorICAgICAg
ICAoSlNDOjpDYWxsRnJhbWU6Omdsb2JhbE9iamVjdE9mQ2xvc2VzdENvZGVCbG9jayk6CisgICAg
ICAgICogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpHZXRTdGFja1RyYWNlRnVuY3Rvcjo6b3BlcmF0
b3IoKSBjb25zdCk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpnZXRTdGFja1RyYWNlKToK
KyAgICAgICAgKEpTQzo6R2V0Q2F0Y2hIYW5kbGVyRnVuY3Rvcjo6b3BlcmF0b3IoKSBjb25zdCk6
CisgICAgICAgIChKU0M6OlVud2luZEZ1bmN0b3I6Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAg
ICAqIGludGVycHJldGVyL1NoYWRvd0NoaWNrZW4uY3BwOgorICAgICAgICAoSlNDOjpTaGFkb3dD
aGlja2VuOjp1cGRhdGUpOgorICAgICAgICAqIGludGVycHJldGVyL1N0YWNrVmlzaXRvci5oOgor
ICAgICAgICAoSlNDOjpTdGFja1Zpc2l0b3I6OnZpc2l0KToKKyAgICAgICAgKEpTQzo6Q2FsbGVy
RnVuY3Rvcjo6b3BlcmF0b3IoKSBjb25zdCk6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAg
KEZ1bmN0aW9uSlNDU3RhY2tGdW5jdG9yOjpvcGVyYXRvcigpIGNvbnN0KToKKyAgICAgICAgKHN0
YXJ0VGltZW91dFRpbWVyKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yLmNwcDoKKyAgICAgICAg
KEpTQzo6RmluZEZpcnN0Q2FsbGVyRnJhbWVXaXRoQ29kZWJsb2NrRnVuY3Rvcjo6b3BlcmF0b3Io
KSBjb25zdCk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OlJldHJpZXZlQXJndW1lbnRzRnVuY3Rvcjo6b3BlcmF0b3IoKSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OlJldHJpZXZlQ2FsbGVyRnVuY3Rpb25GdW5jdG9yOjpvcGVyYXRvcigpIGNv
bnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL051bGxTZXR0
ZXJGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkdldENhbGxlclN0cmljdG5lc3NGdW5jdG9y
OjpvcGVyYXRvcigpIGNvbnN0KToKKyAgICAgICAgKiB0b29scy9IZWFwVmVyaWZpZXIuY3BwOgor
ICAgICAgICAoSlNDOjpIZWFwVmVyaWZpZXI6OmNoZWNrSWZSZWNvcmRlZCk6CisgICAgICAgICog
dG9vbHMvSlNEb2xsYXJWTS5jcHA6CisgICAgICAgIChKU0M6OkNhbGxlckZyYW1lSklUVHlwZUZ1
bmN0b3I6Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04pOgorICAgICAgICAqIHRvb2xzL1ZNSW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6Vk1JbnNwZWN0b3I6OmZvckVhY2hWTSk6CisgICAgICAgIChKU0M6OlZNSW5zcGVjdG9yOjpp
c1ZhbGlkRXhlY3V0YWJsZU1lbW9yeSk6CisgICAgICAgIChKU0M6OlZNSW5zcGVjdG9yOjpjb2Rl
QmxvY2tGb3JNYWNoaW5lUEMpOgorICAgICAgICAoSlNDOjpWTUluc3BlY3Rvcjo6Y29kZUJsb2Nr
Rm9yRnJhbWUpOgorICAgICAgICAoSlNDOjpEdW1wRnJhbWVGdW5jdG9yOjpvcGVyYXRvcigpIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6Vk1JbnNwZWN0b3I6OmR1bXBSZWdpc3RlcnMpOgorICAgICAg
ICAqIHRvb2xzL1ZNSW5zcGVjdG9yLmg6CisgICAgICAgIChKU0M6OlZNSW5zcGVjdG9yOjpXVEZf
UkVRVUlSRVNfTE9DSyk6CisKIDIwMjItMDQtMjggIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0Bp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtSSVNDVjY0XSBJbXBsZW1lbnQgTWFjcm9Bc3NlbWJsZXJS
SVNDVjY0IGJyYW5jaEF0b21pY1dlYWtDQVN7OCwxNiwzMiw2NH0gbWV0aG9kcwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDI5MzU4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzc1LDEwICsxMzc1LDEwIEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgfQogCi0gICAgU3RhY2tWaXNpdG9yOjpTdGF0dXMgb3BlcmF0b3IoKShTdGFj
a1Zpc2l0b3ImIHZpc2l0b3IpIGNvbnN0CisgICAgSXRlcmF0aW9uU3RhdHVzIG9wZXJhdG9yKCko
U3RhY2tWaXNpdG9yJiB2aXNpdG9yKSBjb25zdAogICAgIHsKICAgICAgICAgbV90cmFjZS5hcHBl
bmQobWFrZVN0cmluZygiICAgICIsIHZpc2l0b3ItPmluZGV4KCksICIgICAiLCB2aXNpdG9yLT50
b1N0cmluZygpLCAnXG4nKSk7Ci0gICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVl
OworICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKICAgICB9CiAKIHBy
aXZhdGU6CkBAIC0yOTM1LDExICsyOTM1LDExIEBAIHN0YXRpYyB2b2lkIHN0YXJ0VGltZW91dFRp
bWVyKFNlY29uZHMgZHUKIHsKICAgICBUaHJlYWQ6OmNyZWF0ZSgianNjIFRpbWVvdXQgVGhyZWFk
IiwgWz1dICgpIHsKICAgICAgICAgc2xlZXAoZHVyYXRpb24pOwotICAgICAgICBWTUluc3BlY3Rv
cjo6Zm9yRWFjaFZNKFsmXSAoVk0mIHZtKSAtPiBWTUluc3BlY3Rvcjo6RnVuY3RvclN0YXR1cyB7
CisgICAgICAgIFZNSW5zcGVjdG9yOjpmb3JFYWNoVk0oWyZdIChWTSYgdm0pIC0+IEl0ZXJhdGlv
blN0YXR1cyB7CiAgICAgICAgICAgICBpZiAoJnZtICE9IHNfdm0pCi0gICAgICAgICAgICAgICAg
cmV0dXJuIFZNSW5zcGVjdG9yOjpGdW5jdG9yU3RhdHVzOjpDb250aW51ZTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKICAgICAgICAgICAgIHZtLm5v
dGlmeU5lZWRTaGVsbFRpbWVvdXRDaGVjaygpOwotICAgICAgICAgICAgcmV0dXJuIFZNSW5zcGVj
dG9yOjpGdW5jdG9yU3RhdHVzOjpEb25lOworICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0
YXR1czo6RG9uZTsKICAgICAgICAgfSk7CiAKICAgICAgICAgaWYgKGNvbnN0IGNoYXIqIHRpbWVv
dXRTdHJpbmcgPSBnZXRlbnYoIkpTQ1RFU1RfaGFyZFRpbWVvdXQiKSkgewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAkocmV2aXNpb24gMjkzNTgxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjkwLDcgKzI5MCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgU3Rh
Y2tWaXNpdG9yOjpTdGF0dXMgb3BlcmF0b3IoKShTdGFja1Zpc2l0b3ImIHZpc2l0b3IpIGNvbnN0
CisgICAgSXRlcmF0aW9uU3RhdHVzIG9wZXJhdG9yKCkoU3RhY2tWaXNpdG9yJiB2aXNpdG9yKSBj
b25zdAogICAgIHsKICAgICAgICAgaWYgKG1fcmVtYWluaW5nQ2FwYWNpdHlGb3JGcmFtZUNhcHR1
cmUpIHsKICAgICAgICAgICAgIC8vIElmIGNhbGxlZSBpcyB1bmtub3duLCBidXQgd2UndmUgbm90
IGFkZGVkIGFueSBmcmFtZSB5ZXQsIHdlIHNob3VsZApAQCAtMjk4LDcgKzI5OCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIGlmICh2aXNpdG9yLT5jYWxsZWUoKS5pc0NlbGwoKSkgewogICAgICAg
ICAgICAgICAgIEpTQ2VsbCogY2FsbGVlID0gdmlzaXRvci0+Y2FsbGVlKCkuYXNDZWxsKCk7CiAg
ICAgICAgICAgICAgICAgaWYgKCFjYWxsZWUgJiYgdmlzaXRvci0+aW5kZXgoKSkKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6RG9uZTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6RG9uZTsKICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgU3RyaW5nQnVpbGRlciYgYnVpbGRlciA9IG1fYnVpbGRlcjsKQEAgLTMxMywxMiArMzEz
LDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCF2aXNpdG9y
LT5jYWxsZWUoKS5yYXdQdHIoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9y
OjpEb25lOworICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkRvbmU7CiAK
ICAgICAgICAgICAgIG1fcmVtYWluaW5nQ2FwYWNpdHlGb3JGcmFtZUNhcHR1cmUtLTsKLSAgICAg
ICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOworICAgICAgICAgICAgcmV0dXJu
IEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFN0
YWNrVmlzaXRvcjo6RG9uZTsKKyAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6RG9uZTsK
ICAgICB9CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMjkzNTgxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMjksNyArMjMy
OSw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2RpZFJlY3Vyc2UoZmFsc2UpCiAgICAgeyB9CiAK
LSAgICBTdGFja1Zpc2l0b3I6OlN0YXR1cyBvcGVyYXRvcigpKFN0YWNrVmlzaXRvciYgdmlzaXRv
cikgY29uc3QKKyAgICBJdGVyYXRpb25TdGF0dXMgb3BlcmF0b3IoKShTdGFja1Zpc2l0b3ImIHZp
c2l0b3IpIGNvbnN0CiAgICAgewogICAgICAgICBDYWxsRnJhbWUqIGN1cnJlbnRDYWxsRnJhbWUg
PSB2aXNpdG9yLT5jYWxsRnJhbWUoKTsKIApAQCAtMjMzOSwxNCArMjMzOSwxNCBAQCBwdWJsaWM6
CiAgICAgICAgIGlmIChtX2ZvdW5kU3RhcnRDYWxsRnJhbWUpIHsKICAgICAgICAgICAgIGlmICh2
aXNpdG9yLT5jYWxsRnJhbWUoKS0+Y29kZUJsb2NrKCkgPT0gbV9jb2RlQmxvY2spIHsKICAgICAg
ICAgICAgICAgICBtX2RpZFJlY3Vyc2UgPSB0cnVlOwotICAgICAgICAgICAgICAgIHJldHVybiBT
dGFja1Zpc2l0b3I6OkRvbmU7CisgICAgICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1
czo6RG9uZTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCFtX2RlcHRoVG9DaGVj
ay0tKQotICAgICAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkRvbmU7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6RG9uZTsKICAgICAgICAgfQogCi0gICAg
ICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOworICAgICAgICByZXR1cm4gSXRlcmF0
aW9uU3RhdHVzOjpDb250aW51ZTsKICAgICB9CiAKICAgICBib29sIGRpZFJlY3Vyc2UoKSBjb25z
dCB7IHJldHVybiBtX2RpZFJlY3Vyc2U7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAkocmV2aXNpb24gMjkzNTgx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDgsIDIwMTMtMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDgtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ0LDEwICs0NCwxMCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogY2xhc3MgTGluZUFuZENvbHVtbkZ1bmN0b3IgewogcHVibGljOgotICAgIFN0
YWNrVmlzaXRvcjo6U3RhdHVzIG9wZXJhdG9yKCkoU3RhY2tWaXNpdG9yJiB2aXNpdG9yKSBjb25z
dAorICAgIEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKFN0YWNrVmlzaXRvciYgdmlzaXRvcikg
Y29uc3QKICAgICB7CiAgICAgICAgIHZpc2l0b3ItPmNvbXB1dGVMaW5lQW5kQ29sdW1uKG1fbGlu
ZSwgbV9jb2x1bW4pOwotICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpEb25lOworICAgICAg
ICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpEb25lOwogICAgIH0KIAogICAgIHVuc2lnbmVkIGxp
bmUoKSBjb25zdCB7IHJldHVybiBtX2xpbmU7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcAko
cmV2aXNpb24gMjkzNTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3Jp
cHRDYWxsU3RhY2tGYWN0b3J5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC01MSwxMSArNTEsMTEgQEAgcHVibGljOgogICAg
IHsKICAgICB9CiAKLSAgICBTdGFja1Zpc2l0b3I6OlN0YXR1cyBvcGVyYXRvcigpKFN0YWNrVmlz
aXRvciYgdmlzaXRvcikgY29uc3QKKyAgICBJdGVyYXRpb25TdGF0dXMgb3BlcmF0b3IoKShTdGFj
a1Zpc2l0b3ImIHZpc2l0b3IpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAobV9uZWVkVG9Ta2lw
QUZyYW1lKSB7CiAgICAgICAgICAgICBtX25lZWRUb1NraXBBRnJhbWUgPSBmYWxzZTsKLSAgICAg
ICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOworICAgICAgICAgICAgcmV0dXJu
IEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9y
ZW1haW5pbmdDYXBhY2l0eUZvckZyYW1lQ2FwdHVyZSkgewpAQCAtNjUsMTAgKzY1LDEwIEBAIHB1
YmxpYzoKICAgICAgICAgICAgIG1fZnJhbWVzLmFwcGVuZChTY3JpcHRDYWxsRnJhbWUodmlzaXRv
ci0+ZnVuY3Rpb25OYW1lKCksIHZpc2l0b3ItPnNvdXJjZVVSTCgpLCB2aXNpdG9yLT5zb3VyY2VJ
RCgpLCBsaW5lLCBjb2x1bW4pKTsKIAogICAgICAgICAgICAgbV9yZW1haW5pbmdDYXBhY2l0eUZv
ckZyYW1lQ2FwdHVyZS0tOwotICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGlu
dWU7CisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKICAgICAg
ICAgfQogCi0gICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkRvbmU7CisgICAgICAgIHJldHVy
biBJdGVyYXRpb25TdGF0dXM6OkRvbmU7CiAgICAgfQogCiBwcml2YXRlOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAJKHJldmlzaW9u
IDI5MzU4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAsNyArMjAwLDcgQEAgU291cmNlT3JpZ2luIENhbGxG
cmFtZTo6Y2FsbGVyU291cmNlT3JpZwogICAgIGJvb2wgaGF2ZVNraXBwZWRGaXJzdEZyYW1lID0g
ZmFsc2U7CiAgICAgU3RhY2tWaXNpdG9yOjp2aXNpdCh0aGlzLCB2bSwgWyZdKFN0YWNrVmlzaXRv
ciYgdmlzaXRvcikgewogICAgICAgICBpZiAoIXN0ZDo6ZXhjaGFuZ2UoaGF2ZVNraXBwZWRGaXJz
dEZyYW1lLCB0cnVlKSkKLSAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OlN0YXR1czo6
Q29udGludWU7CisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsK
IAogICAgICAgICBzd2l0Y2ggKHZpc2l0b3ItPmNvZGVUeXBlKCkpIHsKICAgICAgICAgY2FzZSBT
dGFja1Zpc2l0b3I6OkZyYW1lOjpDb2RlVHlwZTo6RnVuY3Rpb246CkBAIC0yMTMsMjUgKzIxMywy
NSBAQCBTb3VyY2VPcmlnaW4gQ2FsbEZyYW1lOjpjYWxsZXJTb3VyY2VPcmlnCiAgICAgICAgICAg
ICAvLyBBdCB0aGF0IHRpbWUsIHRoZSBnZW5lcmF0ZWQgZXZhbCBjb2RlIHNob3VsZCBoYXZlIHRo
ZSBzb3VyY2Ugb3JpZ2luIHRvIHRoZSBvcmlnaW5hbCBjYWxsZXIgb2YgdGhlIGZvckVhY2ggZnVu
Y3Rpb24KICAgICAgICAgICAgIC8vIGluc3RlYWQgb2YgdGhlIHNvdXJjZSBvcmlnaW4gb2YgdGhl
IGZvckVhY2ggZnVuY3Rpb24uCiAgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8RnVuY3Rpb25F
eGVjdXRhYmxlKj4odmlzaXRvci0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpKS0+aXNC
dWlsdGluRnVuY3Rpb24oKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpT
dGF0dXM6OkNvbnRpbnVlOworICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6
OkNvbnRpbnVlOwogICAgICAgICAgICAgRkFMTFRIUk9VR0g7CiAKICAgICAgICAgY2FzZSBTdGFj
a1Zpc2l0b3I6OkZyYW1lOjpDb2RlVHlwZTo6RXZhbDoKICAgICAgICAgY2FzZSBTdGFja1Zpc2l0
b3I6OkZyYW1lOjpDb2RlVHlwZTo6TW9kdWxlOgogICAgICAgICBjYXNlIFN0YWNrVmlzaXRvcjo6
RnJhbWU6OkNvZGVUeXBlOjpHbG9iYWw6CiAgICAgICAgICAgICBzb3VyY2VPcmlnaW4gPSB2aXNp
dG9yLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZU9yaWdpbigpOwotICAg
ICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6U3RhdHVzOjpEb25lOworICAgICAgICAgICAg
cmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6RG9uZTsKIAogICAgICAgICBjYXNlIFN0YWNrVmlzaXRv
cjo6RnJhbWU6OkNvZGVUeXBlOjpOYXRpdmU6Ci0gICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNp
dG9yOjpTdGF0dXM6OkNvbnRpbnVlOworICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1
czo6Q29udGludWU7CiAKICAgICAgICAgY2FzZSBTdGFja1Zpc2l0b3I6OkZyYW1lOjpDb2RlVHlw
ZTo6V2FzbToKICAgICAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgcmV0dXJuIHRoZSBzb3VyY2Ug
b3JpZ2luIGZvciBXQVNNLgotICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6U3RhdHVz
OjpEb25lOworICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6RG9uZTsKICAgICAg
ICAgfQogCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJl
dHVybiBTdGFja1Zpc2l0b3I6OlN0YXR1czo6RG9uZTsKKyAgICAgICAgcmV0dXJuIEl0ZXJhdGlv
blN0YXR1czo6RG9uZTsKICAgICB9KTsKICAgICByZXR1cm4gc291cmNlT3JpZ2luOwogfQpAQCAt
MjQ0LDE2ICsyNDQsMTYgQEAgSlNHbG9iYWxPYmplY3QqIENhbGxGcmFtZTo6Z2xvYmFsT2JqZWN0
TwogICAgIFN0YWNrVmlzaXRvcjo6dmlzaXQoY2FsbEZyYW1lLCB2bSwgWyZdKFN0YWNrVmlzaXRv
ciYgdmlzaXRvcikgewogICAgICAgICBpZiAodmlzaXRvci0+aXNXYXNtRnJhbWUoKSkgewogICAg
ICAgICAgICAgZ2xvYmFsT2JqZWN0ID0gdmlzaXRvci0+Y2FsbEZyYW1lKCktPmxleGljYWxHbG9i
YWxPYmplY3Qodm0pOwotICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6U3RhdHVzOjpE
b25lOworICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6RG9uZTsKICAgICAgICAg
fQogICAgICAgICBpZiAoYXV0byogY29kZUJsb2NrID0gdmlzaXRvci0+Y29kZUJsb2NrKCkpIHsK
ICAgICAgICAgICAgIGlmIChjb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gQ29kZVR5cGU6OkZ1bmN0
aW9uQ29kZSAmJiBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihjb2RlQmxvY2stPm93
bmVyRXhlY3V0YWJsZSgpKS0+aXNCdWlsdGluRnVuY3Rpb24oKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gU3RhY2tWaXNpdG9yOjpTdGF0dXM6OkNvbnRpbnVlOworICAgICAgICAgICAgICAgIHJl
dHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgICAgICAgICAgZ2xvYmFsT2JqZWN0
ID0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKLSAgICAgICAgICAgIHJldHVybiBTdGFja1Zp
c2l0b3I6OlN0YXR1czo6RG9uZTsKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6
OkRvbmU7CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUKHZpc2l0b3ItPmNvZGVUeXBlKCkgPT0g
U3RhY2tWaXNpdG9yOjpGcmFtZTo6Q29kZVR5cGU6Ok5hdGl2ZSk7Ci0gICAgICAgIHJldHVybiBT
dGFja1Zpc2l0b3I6OlN0YXR1czo6Q29udGludWU7CisgICAgICAgIHJldHVybiBJdGVyYXRpb25T
dGF0dXM6OkNvbnRpbnVlOwogICAgIH0pOwogICAgIGlmIChnbG9iYWxPYmplY3QpCiAgICAgICAg
IHJldHVybiBnbG9iYWxPYmplY3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvQ2FsbEZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0NhbGxGcmFtZS5oCShyZXZpc2lvbiAyOTM1ODEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNyAr
MSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9y
dGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9z
dC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zMTgsNyArMzE4LDcgQEAg
bmFtZXNwYWNlIEpTQyAgewogICAgICAgICBTdHJpbmcgZnJpZW5kbHlGdW5jdGlvbk5hbWUoKTsK
IAogICAgICAgICAvLyBDYWxsRnJhbWU6Oml0ZXJhdGUoKSBleHBlY3RzIGEgRnVuY3RvciB0aGF0
IGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBtZXRob2Q6Ci0gICAgICAgIC8vICAgICBTdGFja1Zp
c2l0b3I6OlN0YXR1cyBvcGVyYXRvcigpKFN0YWNrVmlzaXRvciYpIGNvbnN0OworICAgICAgICAv
LyAgICAgSXRlcmF0aW9uU3RhdHVzIG9wZXJhdG9yKCkoU3RhY2tWaXNpdG9yJikgY29uc3Q7CiAg
ICAgICAgIC8vIEZJWE1FOiBUaGlzIG1ldGhvZCBpcyBpbXByb3Blci4gV2UgcmVseSBvbiB0aGUg
ZmFjdCB0aGF0IHdlIGNhbiBjYWxsIGl0IHdpdGggYSBudWxsCiAgICAgICAgIC8vIHJlY2VpdmVy
LiBXZSBzaG91bGQgYWx3YXlzIGJlIHVzaW5nIFN0YWNrVmlzaXRvciBkaXJlY3RseS4KICAgICAg
ICAgLy8gSXQncyBvbmx5IHZhbGlkIHRvIGNhbGwgdGhpcyBmcm9tIGEgbm9uLXdhc20gdG9wIGZy
YW1lLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAyOTM1ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODYsMTEgKzM4
NiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fcmVzdWx0cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KGNhcGFjaXR5KTsKICAgICB9CiAKLSAgICBTdGFja1Zpc2l0b3I6OlN0YXR1cyBvcGVyYXRvcigp
KFN0YWNrVmlzaXRvciYgdmlzaXRvcikgY29uc3QKKyAgICBJdGVyYXRpb25TdGF0dXMgb3BlcmF0
b3IoKShTdGFja1Zpc2l0b3ImIHZpc2l0b3IpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAobV9m
cmFtZXNUb1NraXAgPiAwKSB7CiAgICAgICAgICAgICBtX2ZyYW1lc1RvU2tpcC0tOwotICAgICAg
ICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7CisgICAgICAgICAgICByZXR1cm4g
SXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtX3Jl
bWFpbmluZ0NhcGFjaXR5Rm9yRnJhbWVDYXB0dXJlKSB7CkBAIC00MDUsOSArNDA1LDkgQEAgcHVi
bGljOgogICAgICAgICAgICAgfQogICAgIAogICAgICAgICAgICAgbV9yZW1haW5pbmdDYXBhY2l0
eUZvckZyYW1lQ2FwdHVyZS0tOwotICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29u
dGludWU7CisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKICAg
ICAgICAgfQotICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpEb25lOworICAgICAgICByZXR1
cm4gSXRlcmF0aW9uU3RhdHVzOjpEb25lOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTQyOCwxMCAr
NDI4LDEwIEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmdldFN0YWNrVHJhY2UoSlNDZWxsKiAKIAogICAg
IHNpemVfdCBmcmFtZXNDb3VudCA9IDA7CiAgICAgc2l6ZV90IG1heEZyYW1lc0NvdW50TmVlZGVk
ID0gbWF4U3RhY2tTaXplICsgZnJhbWVzVG9Ta2lwOwotICAgIFN0YWNrVmlzaXRvcjo6dmlzaXQo
Y2FsbEZyYW1lLCB2bSwgWyZdIChTdGFja1Zpc2l0b3ImKSAtPiBTdGFja1Zpc2l0b3I6OlN0YXR1
cyB7CisgICAgU3RhY2tWaXNpdG9yOjp2aXNpdChjYWxsRnJhbWUsIHZtLCBbJl0gKFN0YWNrVmlz
aXRvciYpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CiAgICAgICAgIGlmICgrK2ZyYW1lc0NvdW50IDwg
bWF4RnJhbWVzQ291bnROZWVkZWQpCi0gICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpD
b250aW51ZTsKLSAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6RG9uZTsKKyAgICAgICAgICAg
IHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOworICAgICAgICByZXR1cm4gSXRlcmF0
aW9uU3RhdHVzOjpEb25lOwogICAgIH0pOwogICAgIGlmIChmcmFtZXNDb3VudCA8PSBmcmFtZXNU
b1NraXApCiAgICAgICAgIHJldHVybjsKQEAgLTQ4MiwxOSArNDgyLDE5IEBAIHB1YmxpYzoKIAog
ICAgIEhhbmRsZXJJbmZvKiBoYW5kbGVyKCkgeyByZXR1cm4gbV9oYW5kbGVyOyB9CiAKLSAgICBT
dGFja1Zpc2l0b3I6OlN0YXR1cyBvcGVyYXRvcigpKFN0YWNrVmlzaXRvciYgdmlzaXRvcikgY29u
c3QKKyAgICBJdGVyYXRpb25TdGF0dXMgb3BlcmF0b3IoKShTdGFja1Zpc2l0b3ImIHZpc2l0b3Ip
IGNvbnN0CiAgICAgewogICAgICAgICB2aXNpdG9yLnVud2luZFRvTWFjaGluZUNvZGVCbG9ja0Zy
YW1lKCk7CiAKICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSB2aXNpdG9yLT5jb2RlQmxv
Y2soKTsKICAgICAgICAgaWYgKCFjb2RlQmxvY2spCi0gICAgICAgICAgICByZXR1cm4gU3RhY2tW
aXNpdG9yOjpDb250aW51ZTsKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNv
bnRpbnVlOwogCiAgICAgICAgIG1faGFuZGxlciA9IGZpbmRFeGNlcHRpb25IYW5kbGVyKHZpc2l0
b3IsIGNvZGVCbG9jaywgUmVxdWlyZWRIYW5kbGVyOjpDYXRjaEhhbmRsZXIpOwogICAgICAgICBp
ZiAobV9oYW5kbGVyKQotICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6RG9uZTsKKyAg
ICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkRvbmU7CiAKLSAgICAgICAgcmV0dXJu
IFN0YWNrVmlzaXRvcjo6Q29udGludWU7CisgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6
OkNvbnRpbnVlOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTU2MSw3ICs1NjEsNyBAQCBwdWJsaWM6
CiAjZW5kaWYKICAgICB9CiAKLSAgICBTdGFja1Zpc2l0b3I6OlN0YXR1cyBvcGVyYXRvcigpKFN0
YWNrVmlzaXRvciYgdmlzaXRvcikgY29uc3QKKyAgICBJdGVyYXRpb25TdGF0dXMgb3BlcmF0b3Io
KShTdGFja1Zpc2l0b3ImIHZpc2l0b3IpIGNvbnN0CiAgICAgewogICAgICAgICB2aXNpdG9yLnVu
d2luZFRvTWFjaGluZUNvZGVCbG9ja0ZyYW1lKCk7CiAgICAgICAgIG1fY2FsbEZyYW1lID0gdmlz
aXRvci0+Y2FsbEZyYW1lKCk7CkBAIC01NzIsNyArNTcyLDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgaWYgKCFtX2lzVGVybWluYXRpb24pIHsKICAgICAgICAgICAgICAgICBtX2hhbmRsZXIgPSB7
IGZpbmRFeGNlcHRpb25IYW5kbGVyKHZpc2l0b3IsIG1fY29kZUJsb2NrLCBSZXF1aXJlZEhhbmRs
ZXI6OkFueUhhbmRsZXIpLCBtX2NvZGVCbG9jayB9OwogICAgICAgICAgICAgICAgIGlmIChtX2hh
bmRsZXIubV92YWxpZCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6
RG9uZTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6RG9uZTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC01OTAsNyArNTkwLDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGV4Y2VwdGlvbkhhbmRsZXJJbmRleCA9IG1fY2FsbEZy
YW1lLT5jYWxsU2l0ZUluZGV4KCkuYml0cygpOwogICAgICAgICAgICAgICAgIG1faGFuZGxlciA9
IHsgd2FzbUNhbGxlZS0+aGFuZGxlckZvckluZGV4KGpzSW5zdGFuY2UtPmluc3RhbmNlKCksIGV4
Y2VwdGlvbkhhbmRsZXJJbmRleCwgbV93YXNtVGFnKSwgd2FzbUNhbGxlZSB9OwogICAgICAgICAg
ICAgICAgIGlmIChtX2hhbmRsZXIubV92YWxpZCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IFN0YWNrVmlzaXRvcjo6RG9uZTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlv
blN0YXR1czo6RG9uZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogI2VuZGlmCkBAIC02MDcs
OSArNjA3LDkgQEAgcHVibGljOgogCiAgICAgICAgIGJvb2wgc2hvdWxkU3RvcFVud2luZGluZyA9
IHZpc2l0b3ItPmNhbGxlcklzRW50cnlGcmFtZSgpOwogICAgICAgICBpZiAoc2hvdWxkU3RvcFVu
d2luZGluZykKLSAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkRvbmU7CisgICAgICAg
ICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpEb25lOwogCi0gICAgICAgIHJldHVybiBTdGFj
a1Zpc2l0b3I6OkNvbnRpbnVlOworICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250
aW51ZTsKICAgICB9CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL1NoYWRvd0NoaWNrZW4uY3BwCShyZXZpc2lvbiAyOTM1ODEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2
LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0xNzMsMjAgKzE3MywyMCBAQCB2b2lkIFNoYWRvd0NoaWNrZW46OnVw
ZGF0ZShWTSYgdm0sIENhbGxGCiAgICAgaWYgKCFtX3N0YWNrLmlzRW1wdHkoKSkgewogICAgICAg
ICBWZWN0b3I8RnJhbWU+IHN0YWNrUmlnaHROb3c7CiAgICAgICAgIFN0YWNrVmlzaXRvcjo6dmlz
aXQoCi0gICAgICAgICAgICBjYWxsRnJhbWUsIHZtLCBbJl0gKFN0YWNrVmlzaXRvciYgdmlzaXRv
cikgLT4gU3RhY2tWaXNpdG9yOjpTdGF0dXMgeworICAgICAgICAgICAgY2FsbEZyYW1lLCB2bSwg
WyZdIChTdGFja1Zpc2l0b3ImIHZpc2l0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CiAgICAgICAg
ICAgICAgICAgaWYgKHZpc2l0b3ItPmlzSW5saW5lZEZyYW1lKCkpCi0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKICAgICAgICAgICAgICAgICBpZiAodmlz
aXRvci0+aXNXYXNtRnJhbWUoKSkgewogICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogTWFr
ZSBzaGFkb3cgY2hpY2tlbiB3b3JrIHdpdGggV2FzbS4KICAgICAgICAgICAgICAgICAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTQ0MQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250aW51ZTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiAgICAgICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICAgICAgYm9vbCBpc1RhaWxEZWxldGVkID0gZmFsc2U7CiAgICAgICAg
ICAgICAgICAgLy8gRklYTUU6IE1ha2Ugc2hhZG93IGNoaWNrZW4gd29yayB3aXRoIFdhc20uCiAg
ICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2NTQ0MQogICAgICAgICAgICAgICAgIHN0YWNrUmlnaHROb3cuYXBwZW5kKEZyYW1lKGpzQ2Fz
dDxKU09iamVjdCo+KHZpc2l0b3ItPmNhbGxlZSgpLmFzQ2VsbCgpKSwgdmlzaXRvci0+Y2FsbEZy
YW1lKCksIGlzVGFpbERlbGV0ZWQpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNp
dG9yOjpDb250aW51ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpD
b250aW51ZTsKICAgICAgICAgICAgIH0pOwogICAgICAgICBzdGFja1JpZ2h0Tm93LnJldmVyc2Uo
KTsKICAgICAgICAgCkBAIC0yOTQsMTYgKzI5NCwxNiBAQCB2b2lkIFNoYWRvd0NoaWNrZW46OnVw
ZGF0ZShWTSYgdm0sIENhbGxGCiAgICAgCiAgICAgVmVjdG9yPEZyYW1lPiB0b1B1c2g7CiAgICAg
U3RhY2tWaXNpdG9yOjp2aXNpdCgKLSAgICAgICAgY2FsbEZyYW1lLCB2bSwgWyZdIChTdGFja1Zp
c2l0b3ImIHZpc2l0b3IpIC0+IFN0YWNrVmlzaXRvcjo6U3RhdHVzIHsKKyAgICAgICAgY2FsbEZy
YW1lLCB2bSwgWyZdIChTdGFja1Zpc2l0b3ImIHZpc2l0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7
CiAgICAgICAgICAgICBpZiAodmlzaXRvci0+aXNJbmxpbmVkRnJhbWUoKSkgewogICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgaW5saW5pbmcuCiAgICAgICAgICAgICAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTY4NgotICAgICAgICAgICAg
ICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOworICAgICAgICAgICAgICAgIHJldHVy
biBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBpZiAodmlzaXRvci0+aXNXYXNtRnJhbWUoKSkgewogICAgICAgICAgICAgICAgIC8vIEZJWE1F
OiBNYWtlIHNoYWRvdyBjaGlja2VuIHdvcmsgd2l0aCBXYXNtLgotICAgICAgICAgICAgICAgIHJl
dHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOworICAgICAgICAgICAgICAgIHJldHVybiBJdGVy
YXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IHZpc2l0b3ItPmNhbGxGcmFtZSgpOwpAQCAtMzIyLDcgKzMyMiw3
IEBAIHZvaWQgU2hhZG93Q2hpY2tlbjo6dXBkYXRlKFZNJiB2bSwgQ2FsbEYKICAgICAgICAgICAg
ICAgICAvLyB0aGF0IGRvIG5vdCBydW4gaW50byB0aGUgY3VycmVudCBjYWxsIGZyYW1lIGJ1dCBh
cmUgbGVmdCBpbiB0aGUgc2hhZG93IHN0YWNrLgogICAgICAgICAgICAgICAgIC8vIFRob3NlIHRh
aWwgZGVsZXRlZCBmcmFtZXMgc2hvdWxkIGJlIHZhbGlkYXRlZCBzb21laG93LgogCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6RG9uZTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gSXRlcmF0aW9uU3RhdHVzOjpEb25lOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBi
b29sIGZvdW5kRnJhbWUgPSBhZHZhbmNlSW5kZXhJbkxvZ1RvKGNhbGxGcmFtZSwgY2FsbEZyYW1l
LT5qc0NhbGxlZSgpLCBjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCkpOwpAQCAtMzkyLDcgKzM5Miw3
IEBAIHZvaWQgU2hhZG93Q2hpY2tlbjo6dXBkYXRlKFZNJiB2bSwgQ2FsbEYKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6
OkNvbnRpbnVlOworICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7
CiAgICAgICAgIH0pOwogCiAgICAgaWYgKFNoYWRvd0NoaWNrZW5JbnRlcm5hbDo6dmVyYm9zZSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNp
dG9yLmgJKHJldmlzaW9uIDI5MzU4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9TdGFja1Zpc2l0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDYgKzMxLDcgQEAKICNp
bmNsdWRlICJXYXNtSW5kZXhPck5hbWUuaCIKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNp
bmNsdWRlIDx3dGYvSW5kZW50ZXIuaD4KKyNpbmNsdWRlIDx3dGYvSXRlcmF0aW9uU3RhdHVzLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAt
MTUwLDggKzE1MSw4IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKGFjdGlvbiA9PSBUZXJtaW5hdGVJ
ZlRvcEVudHJ5RnJhbWVJc0VtcHR5ICYmIHZpc2l0b3IudG9wRW50cnlGcmFtZUlzRW1wdHkoKSkK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgd2hpbGUgKHZpc2l0b3ItPmNhbGxGcmFtZSgp
KSB7Ci0gICAgICAgICAgICBTdGF0dXMgc3RhdHVzID0gZnVuY3Rvcih2aXNpdG9yKTsKLSAgICAg
ICAgICAgIGlmIChzdGF0dXMgIT0gQ29udGludWUpCisgICAgICAgICAgICBJdGVyYXRpb25TdGF0
dXMgc3RhdHVzID0gZnVuY3Rvcih2aXNpdG9yKTsKKyAgICAgICAgICAgIGlmIChzdGF0dXMgIT0g
SXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIHZpc2l0b3IuZ290b05leHRGcmFtZSgpOwogICAgICAgICB9CkBAIC0xODgsMTUgKzE4
OSwxNSBAQCBwdWJsaWM6CiAKICAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9jYWxsZXJGcmFtZTsgfQogCi0gICAgU3RhY2tWaXNpdG9yOjpTdGF0dXMgb3BlcmF0
b3IoKShTdGFja1Zpc2l0b3ImIHZpc2l0b3IpIGNvbnN0CisgICAgSXRlcmF0aW9uU3RhdHVzIG9w
ZXJhdG9yKCkoU3RhY2tWaXNpdG9yJiB2aXNpdG9yKSBjb25zdAogICAgIHsKICAgICAgICAgaWYg
KCFtX2hhc1NraXBwZWRGaXJzdEZyYW1lKSB7CiAgICAgICAgICAgICBtX2hhc1NraXBwZWRGaXJz
dEZyYW1lID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVl
OworICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiAgICAgICAg
IH0KIAogICAgICAgICBtX2NhbGxlckZyYW1lID0gdmlzaXRvci0+Y2FsbEZyYW1lKCk7Ci0gICAg
ICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkRvbmU7CisgICAgICAgIHJldHVybiBJdGVyYXRpb25T
dGF0dXM6OkRvbmU7CiAgICAgfQogICAgIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvci5jcHAJKHJldmlzaW9uIDI5MzU4MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcg
QEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5A
a2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNv
bSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAwNyBFcmljIFNlaWRlbCAoZXJpY0B3ZWJr
aXQub3JnKQogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0xMjcsNyArMTI3LDcgQEAgcHVibGljOgogICAgICAg
ICAsIG1faW5kZXgoMCkKICAgICB7IH0KIAotICAgIFN0YWNrVmlzaXRvcjo6U3RhdHVzIG9wZXJh
dG9yKCkoU3RhY2tWaXNpdG9yJiB2aXNpdG9yKSBjb25zdAorICAgIEl0ZXJhdGlvblN0YXR1cyBv
cGVyYXRvcigpKFN0YWNrVmlzaXRvciYgdmlzaXRvcikgY29uc3QKICAgICB7CiAgICAgICAgIGlm
ICghbV9mb3VuZFN0YXJ0Q2FsbEZyYW1lICYmICh2aXNpdG9yLT5jYWxsRnJhbWUoKSA9PSBtX3N0
YXJ0Q2FsbEZyYW1lKSkKICAgICAgICAgICAgIG1fZm91bmRTdGFydENhbGxGcmFtZSA9IHRydWU7
CkBAIC0xMzUsMTIgKzEzNSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChtX2ZvdW5kU3RhcnRD
YWxsRnJhbWUpIHsKICAgICAgICAgICAgIGlmICghdmlzaXRvci0+aXNXYXNtRnJhbWUoKSAmJiB2
aXNpdG9yLT5jYWxsRnJhbWUoKS0+Y29kZUJsb2NrKCkpIHsKICAgICAgICAgICAgICAgICBtX2Zv
dW5kQ2FsbEZyYW1lID0gdmlzaXRvci0+Y2FsbEZyYW1lKCk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIFN0YWNrVmlzaXRvcjo6RG9uZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9u
U3RhdHVzOjpEb25lOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9pbmRleCsrOwogICAg
ICAgICB9CiAKLSAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7CisgICAgICAg
IHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgIH0KIAogICAgIENhbGxGcmFt
ZSogZm91bmRDYWxsRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZvdW5kQ2FsbEZyYW1lOyB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90
b3R5cGUuY3BwCShyZXZpc2lvbiAyOTM1ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBA
CiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtk
ZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTEyMiwxNyArMTIyLDE3IEBA
IHB1YmxpYzoKIAogICAgIEpTVmFsdWUgcmVzdWx0KCkgY29uc3QgeyByZXR1cm4gbV9yZXN1bHQ7
IH0KIAotICAgIFN0YWNrVmlzaXRvcjo6U3RhdHVzIG9wZXJhdG9yKCkoU3RhY2tWaXNpdG9yJiB2
aXNpdG9yKSBjb25zdAorICAgIEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKFN0YWNrVmlzaXRv
ciYgdmlzaXRvcikgY29uc3QKICAgICB7CiAgICAgICAgIGlmICghdmlzaXRvci0+Y2FsbGVlKCku
aXNDZWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250aW51ZTsKKyAg
ICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogCiAgICAgICAgIEpT
Q2VsbCogY2FsbGVlID0gdmlzaXRvci0+Y2FsbGVlKCkuYXNDZWxsKCk7CiAgICAgICAgIGlmIChj
YWxsZWUgIT0gbV90YXJnZXRDYWxsZWUpCi0gICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9y
OjpDb250aW51ZTsKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVl
OwogCiAgICAgICAgIG1fcmVzdWx0ID0gSlNWYWx1ZSh2aXNpdG9yLT5jcmVhdGVBcmd1bWVudHMo
bV92bSkpOwotICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpEb25lOworICAgICAgICByZXR1
cm4gSXRlcmF0aW9uU3RhdHVzOjpEb25lOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTE3NCwyOCAr
MTc0LDI4IEBAIHB1YmxpYzoKIAogICAgIEpTVmFsdWUgcmVzdWx0KCkgY29uc3QgeyByZXR1cm4g
bV9yZXN1bHQ7IH0KIAotICAgIFN0YWNrVmlzaXRvcjo6U3RhdHVzIG9wZXJhdG9yKCkoU3RhY2tW
aXNpdG9yJiB2aXNpdG9yKSBjb25zdAorICAgIEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKFN0
YWNrVmlzaXRvciYgdmlzaXRvcikgY29uc3QKICAgICB7CiAgICAgICAgIGlmICghdmlzaXRvci0+
Y2FsbGVlKCkuaXNDZWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250
aW51ZTsKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogCiAg
ICAgICAgIEpTQ2VsbCogY2FsbGVlID0gdmlzaXRvci0+Y2FsbGVlKCkuYXNDZWxsKCk7CiAKICAg
ICAgICAgaWYgKGNhbGxlZSAmJiAoY2FsbGVlLT5pbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KCkg
fHwgY2FsbGVlLT5pbmhlcml0czxKU1JlbW90ZUZ1bmN0aW9uPigpIHx8IGNhbGxlZS0+dHlwZSgp
ID09IFByb3h5T2JqZWN0VHlwZSkpCi0gICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpD
b250aW51ZTsKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwog
CiAgICAgICAgIGlmICghbV9oYXNGb3VuZEZyYW1lICYmIGNhbGxlZSAhPSBtX3RhcmdldENhbGxl
ZSkKLSAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOworICAgICAgICAg
ICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiAKICAgICAgICAgbV9oYXNGb3Vu
ZEZyYW1lID0gdHJ1ZTsKICAgICAgICAgaWYgKCFtX2hhc1NraXBwZWRUb0NhbGxlckZyYW1lKSB7
CiAgICAgICAgICAgICBtX2hhc1NraXBwZWRUb0NhbGxlckZyYW1lID0gdHJ1ZTsKLSAgICAgICAg
ICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOworICAgICAgICAgICAgcmV0dXJuIEl0
ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoY2FsbGVl
KQogICAgICAgICAgICAgbV9yZXN1bHQgPSBjYWxsZWU7Ci0gICAgICAgIHJldHVybiBTdGFja1Zp
c2l0b3I6OkRvbmU7CisgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkRvbmU7CiAgICAg
fQogCiBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMjkzNTgxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBDYW1lcm9uIFp3YXJpY2gg
KGN3endhcmljaEB1d2F0ZXJsb28uY2EpCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zNzQsMTQgKzM3
NCwxNCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYXNzZXJ0Q2FsbCwgKEpTCiAgICAgY2Fs
bEZyYW1lLT5pdGVyYXRlKGdsb2JhbE9iamVjdC0+dm0oKSwgWyZdIChTdGFja1Zpc2l0b3ImIHZp
c2l0b3IpIHsKICAgICAgICAgaWYgKCFpdGVyYXRlZE9uY2UpIHsKICAgICAgICAgICAgIGl0ZXJh
dGVkT25jZSA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250aW51
ZTsKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgICAg
ICB9CiAKICAgICAgICAgUkVMRUFTRV9BU1NFUlQodmlzaXRvci0+aGFzTGluZUFuZENvbHVtbklu
Zm8oKSk7CiAgICAgICAgIHVuc2lnbmVkIGNvbHVtbjsKICAgICAgICAgdmlzaXRvci0+Y29tcHV0
ZUxpbmVBbmRDb2x1bW4obGluZSwgY29sdW1uKTsKICAgICAgICAgY29kZUJsb2NrID0gdmlzaXRv
ci0+Y29kZUJsb2NrKCk7Ci0gICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkRvbmU7CisgICAg
ICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkRvbmU7CiAgICAgfSk7CiAgICAgUkVMRUFTRV9B
U1NFUlQoISFjb2RlQmxvY2spOwogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShmYWxz
ZSwgIkpTIGFzc2VydGlvbiBmYWlsZWQgYXQgbGluZSAldSBpbjpcbiVzXG4iLCBsaW5lLCBjb2Rl
QmxvY2stPnNvdXJjZUNvZGVGb3JUb29scygpLmRhdGEoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHAJKHJldmlz
aW9uIDI5MzU4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJG
dW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NCwxNyArNDQsMTcgQEAgcHVibGljOgog
ICAgIHsKICAgICB9CiAKLSAgICBTdGFja1Zpc2l0b3I6OlN0YXR1cyBvcGVyYXRvcigpKFN0YWNr
VmlzaXRvciYgdmlzaXRvcikgY29uc3QKKyAgICBJdGVyYXRpb25TdGF0dXMgb3BlcmF0b3IoKShT
dGFja1Zpc2l0b3ImIHZpc2l0b3IpIGNvbnN0CiAgICAgewogICAgICAgICArK21faXRlcmF0aW9u
czsKICAgICAgICAgaWYgKG1faXRlcmF0aW9ucyA8IDIpCi0gICAgICAgICAgICByZXR1cm4gU3Rh
Y2tWaXNpdG9yOjpDb250aW51ZTsKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6
OkNvbnRpbnVlOwogCiAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gdmlzaXRvci0+Y29k
ZUJsb2NrKCk7CiAgICAgICAgIC8vIFRoaXMgZG9lcyBub3QgdGFrZSBpbnRvIGFjY291bnQgdGhh
dCB3ZSBtaWdodCBoYXZlIGFuIHN0cmljdCBvcGNvZGUgaW4gYSBub24tc3RyaWN0IGNvbnRleHQs
IGJ1dCB0aGF0J3MKICAgICAgICAgLy8gb2sgc2luY2Ugd2UgYXNzZXJ0IGJlbG93IHRoYXQgdGhp
cyBmdW5jdGlvbiBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkIGZyb20gYW55IGtpbmQgc3RyaWN0IGNv
bnRleHQuCiAgICAgICAgIG1fY2FsbGVySXNTdHJpY3QgPSBjb2RlQmxvY2sgJiYgY29kZUJsb2Nr
LT5vd25lckV4ZWN1dGFibGUoKS0+aXNJblN0cmljdENvbnRleHQoKTsKLSAgICAgICAgcmV0dXJu
IFN0YWNrVmlzaXRvcjo6RG9uZTsKKyAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6RG9u
ZTsKICAgICB9CiAKICAgICBib29sIGNhbGxlcklzU3RyaWN0KCkgY29uc3QgeyByZXR1cm4gbV9j
YWxsZXJJc1N0cmljdDsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBW
ZXJpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hl
YXBWZXJpZmllci5jcHAJKHJldmlzaW9uIDI5MzU4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90b29scy9IZWFwVmVyaWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDQ0LDEyICs0NDQs
MTIgQEAgdm9pZCBIZWFwVmVyaWZpZXI6OmNoZWNrSWZSZWNvcmRlZCh1aW50cAogICAgIExvY2tl
ciBsb2NrZXIgeyBBZG9wdExvY2ssIGluc3BlY3Rvci5nZXRMb2NrKCkgfTsKICAgICBpbnNwZWN0
b3IuaXRlcmF0ZShbJl0gKFZNJiB2bSkgewogICAgICAgICBpZiAoIXZtLmhlYXAubV92ZXJpZmll
cikKLSAgICAgICAgICAgIHJldHVybiBWTUluc3BlY3Rvcjo6RnVuY3RvclN0YXR1czo6Q29udGlu
dWU7CisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKICAgICAg
ICAgCiAgICAgICAgIGF1dG8qIHZlcmlmaWVyID0gdm0uaGVhcC5tX3ZlcmlmaWVyLmdldCgpOwog
ICAgICAgICBkYXRhTG9nKCJTZWFyY2ggZm9yIGNlbGwgIiwgUmF3UG9pbnRlcihjYW5kaWRhdGVI
ZWFwQ2VsbCksICIgaW4gVk0gIiwgUmF3UG9pbnRlcigmdm0pLCAiOlxuIik7CiAgICAgICAgIHZl
cmlmaWVyLT5jaGVja0lmUmVjb3JkZWQoY2FuZGlkYXRlSGVhcENlbGwpOwotICAgICAgICByZXR1
cm4gVk1JbnNwZWN0b3I6OkZ1bmN0b3JTdGF0dXM6OkNvbnRpbnVlOworICAgICAgICByZXR1cm4g
SXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKICAgICB9KTsKIH0KIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAkocmV2aXNpb24gMjkzNTgxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMTcxLDcgKzE3MSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIERvbGxhclZNQXNzZXJ0
U2NvcGUgYXNzZXJ0U2NvcGU7CiAKICAgICAgICAgICAgIGlmIChmcmFtZUluZGV4KysgIT0gcmVx
dWVzdGVkRnJhbWVJbmRleCkKLSAgICAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpD
b250aW51ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51
ZTsKIAogICAgICAgICAgICAgYWRkUHJvcGVydHkodm0sICJuYW1lIl9zLCBqc1N0cmluZyh2bSwg
dmlzaXRvci0+ZnVuY3Rpb25OYW1lKCkpKTsKIApAQCAtMTg2LDcgKzE4Niw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlzVmFsaWQgPSB0cnVlOwogCi0gICAgICAgICAg
ICByZXR1cm4gU3RhY2tWaXNpdG9yOjpEb25lOworICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlv
blN0YXR1czo6RG9uZTsKICAgICAgICAgfSk7CiAKICAgICAgICAgYWRkUHJvcGVydHkodm0sICJ2
YWxpZCJfcywganNCb29sZWFuKGlzVmFsaWQpKTsKQEAgLTIzMTQsMTYgKzIzMTQsMTYgQEAgcHVi
bGljOgogICAgICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwogICAgIH0KIAot
ICAgIFN0YWNrVmlzaXRvcjo6U3RhdHVzIG9wZXJhdG9yKCkoU3RhY2tWaXNpdG9yJiB2aXNpdG9y
KSBjb25zdAorICAgIEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKFN0YWNrVmlzaXRvciYgdmlz
aXRvcikgY29uc3QKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gbV9jdXJyZW50RnJh
bWUrKzsKICAgICAgICAgLy8gRmlyc3QgZnJhbWUgKGluZGV4IDApIGlzIGBsbGludFRydWVgIGV0
Yy4gZnVuY3Rpb24gaXRzZWxmLgogICAgICAgICBpZiAoaW5kZXggPT0gMSkgewogICAgICAgICAg
ICAgaWYgKHZpc2l0b3ItPmNvZGVCbG9jaygpKQogICAgICAgICAgICAgICAgIG1faml0VHlwZSA9
IHZpc2l0b3ItPmNvZGVCbG9jaygpLT5qaXRUeXBlKCk7Ci0gICAgICAgICAgICByZXR1cm4gU3Rh
Y2tWaXNpdG9yOjpEb25lOworICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6RG9u
ZTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250aW51ZTsKKyAg
ICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiAgICAgfQogICAgIAogICAg
IEpJVFR5cGUgaml0VHlwZSgpIHsgcmV0dXJuIG1faml0VHlwZTsgfQpAQCAtMjYxOCw5ICsyNjE4
LDkgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uRHVtcFJlZwogICAgIGNhbGxG
cmFtZS0+aXRlcmF0ZSh2bSwgWyZdIChTdGFja1Zpc2l0b3ImIHZpc2l0b3IpIHsKICAgICAgICAg
RG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKICAgICAgICAgaWYgKGZyYW1lSW5kZXgr
KyAhPSByZXF1ZXN0ZWRGcmFtZUluZGV4KQotICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRv
cjo6Q29udGludWU7CisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51
ZTsKICAgICAgICAgVk1JbnNwZWN0b3I6OmR1bXBSZWdpc3RlcnModmlzaXRvci0+Y2FsbEZyYW1l
KCkpOwotICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpEb25lOworICAgICAgICByZXR1cm4g
SXRlcmF0aW9uU3RhdHVzOjpEb25lOwogICAgIH0pOwogCiAgICAgcmV0dXJuIGVuY29kZWRKU1Vu
ZGVmaW5lZCgpOwpAQCAtMzI1MSwxNSArMzI1MSwxNSBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oZnVuY3Rpb25TaGFkb3dDCiAKICAgICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0
eUFycmF5KGdsb2JhbE9iamVjdCwgbnVsbHB0cik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKLSAgICBTdGFja1Zpc2l0b3I6OnZpc2l0KGNhbGxGcmFtZSwgdm0sIFsmXSAo
U3RhY2tWaXNpdG9yJiB2aXNpdG9yKSAtPiBTdGFja1Zpc2l0b3I6OlN0YXR1cyB7CisgICAgU3Rh
Y2tWaXNpdG9yOjp2aXNpdChjYWxsRnJhbWUsIHZtLCBbJl0gKFN0YWNrVmlzaXRvciYgdmlzaXRv
cikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKICAgICAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3Nl
cnRTY29wZTsKICAgICAgICAgaWYgKHZpc2l0b3ItPmlzSW5saW5lZEZyYW1lKCkpCi0gICAgICAg
ICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250aW51ZTsKKyAgICAgICAgICAgIHJldHVybiBJ
dGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgICAgICBpZiAodmlzaXRvci0+aXNXYXNtRnJh
bWUoKSkKLSAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOworICAgICAg
ICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiAgICAgICAgIHJlc3VsdC0+
cHVzaChnbG9iYWxPYmplY3QsIGpzQ2FzdDxKU09iamVjdCo+KHZpc2l0b3ItPmNhbGxlZSgpLmFz
Q2VsbCgpKSk7CiAgICAgICAgIHNjb3BlLnJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigpOyAvLyBU
aGlzIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkIGZyb20gdGVzdHMuCi0gICAgICAgIHJldHVybiBT
dGFja1Zpc2l0b3I6OkNvbnRpbnVlOworICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpD
b250aW51ZTsKICAgICB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90b29scy9WTUluc3BlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rvb2xzL1ZNSW5zcGVjdG9yLmNwcAkocmV2aXNpb24gMjkzNTgxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1ZNSW5zcGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTc1LDcgKzc1LDcgQEAgc3RhdGljIGJvb2wgZW5zdXJlSXNTYWZlVG9Mb2NrKExvY2smIGxv
YwogfQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAKLXZvaWQgVk1JbnNwZWN0b3I6OmZvckVhY2hW
TShGdW5jdGlvbjxGdW5jdG9yU3RhdHVzKFZNJik+JiYgZnVuYykKK3ZvaWQgVk1JbnNwZWN0b3I6
OmZvckVhY2hWTShGdW5jdGlvbjxJdGVyYXRpb25TdGF0dXMoVk0mKT4mJiBmdW5jKQogewogICAg
IFZNSW5zcGVjdG9yJiBpbnNwZWN0b3IgPSBpbnN0YW5jZSgpOwogICAgIExvY2tlciBsb2NrIHsg
aW5zcGVjdG9yLmdldExvY2soKSB9OwpAQCAtODcsMjIgKzg3LDIyIEBAIGF1dG8gVk1JbnNwZWN0
b3I6OmlzVmFsaWRFeGVjdXRhYmxlTWVtb3IKICNpZiBFTkFCTEUoSklUKQogICAgIGJvb2wgZm91
bmQgPSBmYWxzZTsKICAgICBib29sIGhhc1RpbWVvdXQgPSBmYWxzZTsKLSAgICBpdGVyYXRlKFsm
XSAoVk0mKSAtPiBGdW5jdG9yU3RhdHVzIHsKKyAgICBpdGVyYXRlKFsmXSAoVk0mKSAtPiBJdGVy
YXRpb25TdGF0dXMgewogICAgICAgICBhdXRvJiBhbGxvY2F0b3IgPSBFeGVjdXRhYmxlQWxsb2Nh
dG9yOjpzaW5nbGV0b24oKTsKICAgICAgICAgYXV0byYgbG9jayA9IGFsbG9jYXRvci5nZXRMb2Nr
KCk7CiAKICAgICAgICAgYm9vbCBpc1NhZmVUb0xvY2sgPSBlbnN1cmVJc1NhZmVUb0xvY2sobG9j
ayk7CiAgICAgICAgIGlmICghaXNTYWZlVG9Mb2NrKSB7CiAgICAgICAgICAgICBoYXNUaW1lb3V0
ID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiBGdW5jdG9yU3RhdHVzOjpDb250aW51ZTsgLy8g
U2tpcCB0aGlzIFZNLgorICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGlu
dWU7IC8vIFNraXAgdGhpcyBWTS4KICAgICAgICAgfQogCiAgICAgICAgIExvY2tlciBleGVjdXRh
YmxlQWxsb2NhdG9yTG9ja2VyIHsgbG9jayB9OwogICAgICAgICBpZiAoYWxsb2NhdG9yLmlzVmFs
aWRFeGVjdXRhYmxlTWVtb3J5KGV4ZWN1dGFibGVBbGxvY2F0b3JMb2NrZXIsIG1hY2hpbmVQQykp
IHsKICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiBGdW5jdG9y
U3RhdHVzOjpEb25lOworICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6RG9uZTsK
ICAgICAgICAgfQotICAgICAgICByZXR1cm4gRnVuY3RvclN0YXR1czo6Q29udGludWU7CisgICAg
ICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgIH0pOwogCiAgICAgaWYg
KCFmb3VuZCAmJiBoYXNUaW1lb3V0KQpAQCAtMTIxLDcgKzEyMSw3IEBAIGF1dG8gVk1JbnNwZWN0
b3I6OmNvZGVCbG9ja0Zvck1hY2hpbmVQQygKICAgICBib29sIGhhc1RpbWVvdXQgPSBmYWxzZTsK
ICAgICBpdGVyYXRlKFsmXSAoVk0mIHZtKSB7CiAgICAgICAgIGlmICghdm0uY3VycmVudFRocmVh
ZElzSG9sZGluZ0FQSUxvY2soKSkKLSAgICAgICAgICAgIHJldHVybiBGdW5jdG9yU3RhdHVzOjpD
b250aW51ZTsKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwog
CiAgICAgICAgIC8vIEl0IGlzIHNhZmUgdG8gY2FsbCBIZWFwOjpmb3JFYWNoQ29kZUJsb2NrSWdu
b3JpbmdKSVRQbGFucyBoZXJlIGJlY2F1c2U6CiAgICAgICAgIC8vIDEuIENvZGVCbG9ja3MgYXJl
IGFkZGVkIHRvIHRoZSBDb2RlQmxvY2tTZXQgZnJvbSB0aGUgbWFpbiB0aHJlYWQgYmVmb3JlCkBA
IC0xMzgsNyArMTM4LDcgQEAgYXV0byBWTUluc3BlY3Rvcjo6Y29kZUJsb2NrRm9yTWFjaGluZVBD
KAogICAgICAgICBib29sIGlzU2FmZVRvTG9jayA9IGVuc3VyZUlzU2FmZVRvTG9jayhjb2RlQmxv
Y2tTZXRMb2NrKTsKICAgICAgICAgaWYgKCFpc1NhZmVUb0xvY2spIHsKICAgICAgICAgICAgIGhh
c1RpbWVvdXQgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuIEZ1bmN0b3JTdGF0dXM6OkNvbnRp
bnVlOyAvLyBTa2lwIHRoaXMgVk0uCisgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVz
OjpDb250aW51ZTsgLy8gU2tpcCB0aGlzIFZNLgogICAgICAgICB9CiAKICAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IGNvZGVCbG9ja1NldExvY2sgfTsKQEAgLTE2MCw4ICsxNjAsOCBAQCBhdXRvIFZN
SW5zcGVjdG9yOjpjb2RlQmxvY2tGb3JNYWNoaW5lUEMoCiAgICAgICAgICAgICB9CiAgICAgICAg
IH0pOwogICAgICAgICBpZiAoY29kZUJsb2NrKQotICAgICAgICAgICAgcmV0dXJuIEZ1bmN0b3JT
dGF0dXM6OkRvbmU7Ci0gICAgICAgIHJldHVybiBGdW5jdG9yU3RhdHVzOjpDb250aW51ZTsKKyAg
ICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkRvbmU7CisgICAgICAgIHJldHVybiBJ
dGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgIH0pOwogCiAgICAgaWYgKCFjb2RlQmxvY2sg
JiYgaGFzVGltZW91dCkKQEAgLTI4MCwxNCArMjgwLDE0IEBAIENvZGVCbG9jayogVk1JbnNwZWN0
b3I6OmNvZGVCbG9ja0ZvckZyYW0KICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgU3Rh
Y2tWaXNpdG9yOjpTdGF0dXMgb3BlcmF0b3IoKShTdGFja1Zpc2l0b3ImIHZpc2l0b3IpIGNvbnN0
CisgICAgICAgIEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKFN0YWNrVmlzaXRvciYgdmlzaXRv
cikgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgYXV0byBjdXJyZW50RnJhbWUgPSBuZXh0
RnJhbWUrKzsKICAgICAgICAgICAgIGlmIChjdXJyZW50RnJhbWUgPT0gdGFyZ2V0RnJhbWUpIHsK
ICAgICAgICAgICAgICAgICBjb2RlQmxvY2sgPSB2aXNpdG9yLT5jb2RlQmxvY2soKTsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpEb25lOworICAgICAgICAgICAgICAgIHJl
dHVybiBJdGVyYXRpb25TdGF0dXM6OkRvbmU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBy
ZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250aW51ZTsKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRp
b25TdGF0dXM6OkNvbnRpbnVlOwogICAgICAgICB9CiAKICAgICAgICAgdW5zaWduZWQgdGFyZ2V0
RnJhbWU7CkBAIC0zMTMsNyArMzEzLDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBT
dGFja1Zpc2l0b3I6OlN0YXR1cyBvcGVyYXRvcigpKFN0YWNrVmlzaXRvciYgdmlzaXRvcikgY29u
c3QKKyAgICBJdGVyYXRpb25TdGF0dXMgb3BlcmF0b3IoKShTdGFja1Zpc2l0b3ImIHZpc2l0b3Ip
IGNvbnN0CiAgICAgewogICAgICAgICBtX2N1cnJlbnRGcmFtZSsrOwogICAgICAgICBpZiAobV9j
dXJyZW50RnJhbWUgPiBtX2ZyYW1lc1RvU2tpcCkgewpAQCAtMzIyLDggKzMyMiw4IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgICAgIGlmIChtX2FjdGlvbiA9PSBE
dW1wT25lICYmIG1fY3VycmVudEZyYW1lID4gbV9mcmFtZXNUb1NraXApCi0gICAgICAgICAgICBy
ZXR1cm4gU3RhY2tWaXNpdG9yOjpEb25lOwotICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpD
b250aW51ZTsKKyAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkRvbmU7CisgICAg
ICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgIH0KIAogcHJpdmF0ZToK
QEAgLTM4MSw5ICszODEsOSBAQCB2b2lkIFZNSW5zcGVjdG9yOjpkdW1wUmVnaXN0ZXJzKENhbGxG
cmFtCiAgICAgICAgICAgICB1bnNpZ25lZCB1bnVzZWRDb2x1bW4gPSAwOwogICAgICAgICAgICAg
dmlzaXRvci0+Y29tcHV0ZUxpbmVBbmRDb2x1bW4obGluZSwgdW51c2VkQ29sdW1uKTsKICAgICAg
ICAgICAgIGRhdGFMb2dGKCJbUmV0dXJuVlBDXSAgICAgICAgICAgICAgICB8ICUxMHAgfCAlZCAo
bGluZSAlZClcbiIsIGl0LCB2aXNpdG9yLT5ieXRlY29kZUluZGV4KCkub2Zmc2V0KCksIGxpbmUp
OwotICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6RG9uZTsKKyAgICAgICAgICAgIHJl
dHVybiBJdGVyYXRpb25TdGF0dXM6OkRvbmU7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFN0
YWNrVmlzaXRvcjo6Q29udGludWU7CisgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNv
bnRpbnVlOwogICAgIH0pOwogCiAgICAgLS1pdDsKQEAgLTQyNSw5ICs0MjUsOSBAQCB2b2lkIFZN
SW5zcGVjdG9yOjpkdW1wUmVnaXN0ZXJzKENhbGxGcmFtCiAgICAgaWYgKHRvcENhbGxGcmFtZSkg
ewogICAgICAgICB0b3BDYWxsRnJhbWUtPml0ZXJhdGUodm0sIFsmXSAoU3RhY2tWaXNpdG9yJiB2
aXNpdG9yKSB7CiAgICAgICAgICAgICBpZiAoY2FsbEZyYW1lID09IHZpc2l0b3ItPmNhbGxGcmFt
ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkRvbmU7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6RG9uZTsKICAgICAgICAgICAgIG5leHRD
YWxsRnJhbWUgPSB2aXNpdG9yLT5jYWxsRnJhbWUoKTsKLSAgICAgICAgICAgIHJldHVybiBTdGFj
a1Zpc2l0b3I6OkNvbnRpbnVlOworICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6
Q29udGludWU7CiAgICAgICAgIH0pOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rvb2xzL1ZNSW5zcGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rvb2xzL1ZNSW5zcGVjdG9yLmgJKHJldmlzaW9uIDI5MzU4MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS90b29scy9WTUluc3BlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiAr
MjksNyBAQAogI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSA8d3RmL0RvdWJseUxpbmtlZExpc3Qu
aD4KICNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KKyNpbmNsdWRlIDx3dGYvSXRlcmF0aW9uU3Rh
dHVzLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC01MCwy
MSArNTEsMTYgQEAgcHVibGljOgogCiAgICAgTG9jayYgZ2V0TG9jaygpIFdURl9SRVRVUk5TX0xP
Q0sobV9sb2NrKSB7IHJldHVybiBtX2xvY2s7IH0KIAotICAgIGVudW0gY2xhc3MgRnVuY3RvclN0
YXR1cyB7Ci0gICAgICAgIENvbnRpbnVlLAotICAgICAgICBEb25lCi0gICAgfTsKLQogICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGl0ZXJhdGUoY29uc3QgRnVuY3RvciYgZnVu
Y3RvcikgV1RGX1JFUVVJUkVTX0xPQ0sobV9sb2NrKQogICAgIHsKICAgICAgICAgZm9yIChWTSog
dm0gPSBtX3ZtTGlzdC5oZWFkKCk7IHZtOyB2bSA9IHZtLT5uZXh0KCkpIHsKLSAgICAgICAgICAg
IEZ1bmN0b3JTdGF0dXMgc3RhdHVzID0gZnVuY3Rvcigqdm0pOwotICAgICAgICAgICAgaWYgKHN0
YXR1cyA9PSBGdW5jdG9yU3RhdHVzOjpEb25lKQorICAgICAgICAgICAgSXRlcmF0aW9uU3RhdHVz
IHN0YXR1cyA9IGZ1bmN0b3IoKnZtKTsKKyAgICAgICAgICAgIGlmIChzdGF0dXMgPT0gSXRlcmF0
aW9uU3RhdHVzOjpEb25lKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
IH0KIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGZvckVhY2hWTShGdW5jdGlv
bjxGdW5jdG9yU3RhdHVzKFZNJik+JiYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2
b2lkIGZvckVhY2hWTShGdW5jdGlvbjxJdGVyYXRpb25TdGF0dXMoVk0mKT4mJik7CiAKICAgICBF
eHBlY3RlZDxib29sLCBFcnJvcj4gaXNWYWxpZEV4ZWN1dGFibGVNZW1vcnkodm9pZCopIFdURl9S
RVFVSVJFU19MT0NLKG1fbG9jayk7CiAgICAgRXhwZWN0ZWQ8Q29kZUJsb2NrKiwgRXJyb3I+IGNv
ZGVCbG9ja0Zvck1hY2hpbmVQQyh2b2lkKikgV1RGX1JFUVVJUkVTX0xPQ0sobV9sb2NrKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5MzU4MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIyLTA0LTI4ICBNYXJrIExhbSAg
PG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgSXRlcmF0aW9uU3RhdHVzIGluIG1v
cmUgcGxhY2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM5ODY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpjYWxsZXJHbG9iYWxPYmplY3QpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdldENhbGxlckNvZGVCbG9ja0Z1bmN0b3I6Om9wZXJhdG9yKCkg
Y29uc3QpOgorCiAyMDIyLTA0LTI4ICBQaGlsaXBwZSBOb3JtYW5kICA8cGhpbG5AaWdhbGlhLmNv
bT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBQaXBld2lyZSBkaXNwbGF5IGNhcHR1cmUgYnJva2Vu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmpl
Y3QuY3BwCShyZXZpc2lvbiAyOTM1ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02NTEsMTIgKzY1MSwxMiBA
QCBzdGF0aWMgSlNET01HbG9iYWxPYmplY3QmIGNhbGxlckdsb2JhbE9iCiAgICAgICAgICAgICAg
ICAgOiBtX3NraXBGaXJzdEZyYW1lKHNraXBGaXJzdEZyYW1lKQogICAgICAgICAgICAgeyB9CiAK
LSAgICAgICAgICAgIFN0YWNrVmlzaXRvcjo6U3RhdHVzIG9wZXJhdG9yKCkoU3RhY2tWaXNpdG9y
JiB2aXNpdG9yKSBjb25zdAorICAgICAgICAgICAgSXRlcmF0aW9uU3RhdHVzIG9wZXJhdG9yKCko
U3RhY2tWaXNpdG9yJiB2aXNpdG9yKSBjb25zdAogICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgIGlmIChtX3NraXBGaXJzdEZyYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghbV9o
YXNTa2lwcGVkRmlyc3RGcmFtZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgbV9oYXNTa2lw
cGVkRmlyc3RGcmFtZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3Rh
Y2tWaXNpdG9yOjpDb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBJdGVy
YXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgfQogCkBAIC02NzAsNyArNjcwLDcgQEAgc3RhdGljIEpTRE9NR2xvYmFsT2JqZWN0JiBj
YWxsZXJHbG9iYWxPYgogICAgICAgICAgICAgICAgICAgICBpZiAodmlzaXRvci0+Y2FsbGVlKCku
aXNDZWxsKCkgJiYgdmlzaXRvci0+Y2FsbGVlKCkuYXNDZWxsKCktPmlzT2JqZWN0KCkpCiAgICAg
ICAgICAgICAgICAgICAgICAgICBtX2dsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KHZp
c2l0b3ItPmNhbGxlZSgpLmFzQ2VsbCgpKS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkRvbmU7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6RG9uZTsKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCkgY29uc3QgeyBy
ZXR1cm4gbV9nbG9iYWxPYmplY3Q7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAJKHJldmlzaW9uIDI5MzU4MSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAo
QykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMy0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjQ2NCwxNCArMjQ2NCwxNCBAQCBwdWJsaWM6CiAg
ICAgewogICAgIH0KIAotICAgIFN0YWNrVmlzaXRvcjo6U3RhdHVzIG9wZXJhdG9yKCkoU3RhY2tW
aXNpdG9yJiB2aXNpdG9yKSBjb25zdAorICAgIEl0ZXJhdGlvblN0YXR1cyBvcGVyYXRvcigpKFN0
YWNrVmlzaXRvciYgdmlzaXRvcikgY29uc3QKICAgICB7CiAgICAgICAgICsrbV9pdGVyYXRpb25z
OwogICAgICAgICBpZiAobV9pdGVyYXRpb25zIDwgMikKLSAgICAgICAgICAgIHJldHVybiBTdGFj
a1Zpc2l0b3I6OkNvbnRpbnVlOworICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6
Q29udGludWU7CiAKICAgICAgICAgbV9jb2RlQmxvY2sgPSB2aXNpdG9yLT5jb2RlQmxvY2soKTsK
LSAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6RG9uZTsKKyAgICAgICAgcmV0dXJuIEl0ZXJh
dGlvblN0YXR1czo6RG9uZTsKICAgICB9CiAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaygpIGNv
bnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrOyB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>