<?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>228264</bug_id>
          
          <creation_ts>2021-07-24 02:57:37 -0700</creation_ts>
          <short_desc>[JSC] Change most of enum in Yarr to enum-class</short_desc>
          <delta_ts>2021-07-24 13:12:22 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1779312</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-24 02:57:37 -0700</bug_when>
    <thetext>[JSC] Change most of enum in Yarr to enum-class</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779313</commentid>
    <comment_count>1</comment_count>
      <attachid>434162</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-24 02:58:12 -0700</bug_when>
    <thetext>Created attachment 434162
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779314</commentid>
    <comment_count>2</comment_count>
      <attachid>434163</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-24 03:08:42 -0700</bug_when>
    <thetext>Created attachment 434163
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779327</commentid>
    <comment_count>3</comment_count>
      <attachid>434163</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-07-24 08:55:25 -0700</bug_when>
    <thetext>Comment on attachment 434163
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779335</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-07-24 13:11:19 -0700</bug_when>
    <thetext>Committed r280285 (239943@main): &lt;https://commits.webkit.org/239943@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 434163.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779336</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-07-24 13:12:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/81060182&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434162</attachid>
            <date>2021-07-24 02:58:12 -0700</date>
            <delta_ts>2021-07-24 03:09:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228264-20210724025811.patch</filename>
            <type>text/plain</type>
            <size>216720</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMjgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
YThhYzExYTFiYWQ5NmNkMDJmMTdmZGFlYzUwYjMxMGU3ZGUwYzQ2Li5kYzZlMDY2YTQ1ODFiOTIw
NjcwNzVhNzVlNDVlMDMwMjg2OGZkZDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDYgQEAKKzIwMjEtMDctMjQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBDaGFuZ2UgbW9zdCBvZiBlbnVtIGluIFlhcnIgdG8gZW51bS1j
bGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4
MjY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBzaW1wbHkgY2hhbmdlcyBtb3N0IG9mIGVudW0gdG8gZW51bS1jbGFzcyBpbiBZYXJy
LgorCisgICAgICAgICogcnVudGltZS9SZWdFeHAuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHA6
OmNvbXBpbGUpOgorICAgICAgICAoSlNDOjpSZWdFeHA6Om1hdGNoQ29uY3VycmVudGx5KToKKyAg
ICAgICAgKEpTQzo6UmVnRXhwOjpjb21waWxlTWF0Y2hPbmx5KToKKyAgICAgICAgKiBydW50aW1l
L1JlZ0V4cC5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwSW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpSZWdFeHA6Omhhc0NvZGVGb3IpOgorICAgICAgICAoSlNDOjpSZWdFeHA6OmNvbXBpbGVJ
Zk5lY2Vzc2FyeSk6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6bWF0Y2hJbmxpbmUpOgorICAgICAg
ICAoSlNDOjpSZWdFeHA6Omhhc01hdGNoT25seUNvZGVGb3IpOgorICAgICAgICAoSlNDOjpSZWdF
eHA6OmNvbXBpbGVJZk5lY2Vzc2FyeU1hdGNoT25seSk6CisgICAgICAgICogeWFyci9ZYXJyLmg6
CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIHlhcnIvWWFyckludGVycHJldGVyLmNw
cDoKKyAgICAgICAgKEpTQzo6WWFycjo6SW50ZXJwcmV0ZXI6OmJhY2t0cmFja1BhdHRlcm5DaGFy
YWN0ZXIpOgorICAgICAgICAoSlNDOjpZYXJyOjpJbnRlcnByZXRlcjo6YmFja3RyYWNrUGF0dGVy
bkNhc2VkQ2hhcmFjdGVyKToKKyAgICAgICAgKEpTQzo6WWFycjo6SW50ZXJwcmV0ZXI6Om1hdGNo
Q2hhcmFjdGVyQ2xhc3MpOgorICAgICAgICAoSlNDOjpZYXJyOjpJbnRlcnByZXRlcjo6YmFja3Ry
YWNrQ2hhcmFjdGVyQ2xhc3MpOgorICAgICAgICAoSlNDOjpZYXJyOjpJbnRlcnByZXRlcjo6bWF0
Y2hCYWNrUmVmZXJlbmNlKToKKyAgICAgICAgKEpTQzo6WWFycjo6SW50ZXJwcmV0ZXI6OmJhY2t0
cmFja0JhY2tSZWZlcmVuY2UpOgorICAgICAgICAoSlNDOjpZYXJyOjpJbnRlcnByZXRlcjo6cGFy
ZW50aGVzZXNEb0JhY2t0cmFjayk6CisgICAgICAgIChKU0M6OllhcnI6OkludGVycHJldGVyOjpt
YXRjaFBhcmVudGhlc2VzT25jZUJlZ2luKToKKyAgICAgICAgKEpTQzo6WWFycjo6SW50ZXJwcmV0
ZXI6Om1hdGNoUGFyZW50aGVzZXNPbmNlRW5kKToKKyAgICAgICAgKEpTQzo6WWFycjo6SW50ZXJw
cmV0ZXI6OmJhY2t0cmFja1BhcmVudGhlc2VzT25jZUJlZ2luKToKKyAgICAgICAgKEpTQzo6WWFy
cjo6SW50ZXJwcmV0ZXI6OmJhY2t0cmFja1BhcmVudGhlc2VzT25jZUVuZCk6CisgICAgICAgIChK
U0M6OllhcnI6OkludGVycHJldGVyOjptYXRjaFBhcmVudGhlc2VzVGVybWluYWxCZWdpbik6Cisg
ICAgICAgIChKU0M6OllhcnI6OkludGVycHJldGVyOjptYXRjaFBhcmVudGhlc2VzVGVybWluYWxF
bmQpOgorICAgICAgICAoSlNDOjpZYXJyOjpJbnRlcnByZXRlcjo6YmFja3RyYWNrUGFyZW50aGVz
ZXNUZXJtaW5hbEJlZ2luKToKKyAgICAgICAgKEpTQzo6WWFycjo6SW50ZXJwcmV0ZXI6Om1hdGNo
UGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luKToKKyAgICAgICAgKEpTQzo6WWFycjo6SW50ZXJw
cmV0ZXI6Om1hdGNoUGFyZW50aGV0aWNhbEFzc2VydGlvbkVuZCk6CisgICAgICAgIChKU0M6Ollh
cnI6OkludGVycHJldGVyOjpiYWNrdHJhY2tQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW4pOgor
ICAgICAgICAoSlNDOjpZYXJyOjpJbnRlcnByZXRlcjo6YmFja3RyYWNrUGFyZW50aGV0aWNhbEFz
c2VydGlvbkVuZCk6CisgICAgICAgIChKU0M6OllhcnI6OkludGVycHJldGVyOjptYXRjaFBhcmVu
dGhlc2VzKToKKyAgICAgICAgKEpTQzo6WWFycjo6SW50ZXJwcmV0ZXI6OmJhY2t0cmFja1BhcmVu
dGhlc2VzKToKKyAgICAgICAgKEpTQzo6WWFycjo6SW50ZXJwcmV0ZXI6Om1hdGNoRGlzanVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpZYXJyOjpJbnRlcnByZXRlcjo6bWF0Y2hOb25aZXJvRGlzanVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmF0b21QYXJlbnRoZXNl
c09uY2VCZWdpbik6CisgICAgICAgIChKU0M6OllhcnI6OkJ5dGVDb21waWxlcjo6YXRvbVBhcmVu
dGhlc2VzVGVybWluYWxCZWdpbik6CisgICAgICAgIChKU0M6OllhcnI6OkJ5dGVDb21waWxlcjo6
YXRvbVBhcmVudGhlc2VzU3VicGF0dGVybkJlZ2luKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qnl0
ZUNvbXBpbGVyOjphdG9tUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luKToKKyAgICAgICAgKEpT
Qzo6WWFycjo6Qnl0ZUNvbXBpbGVyOjphdG9tUGFyZW50aGV0aWNhbEFzc2VydGlvbkVuZCk6Cisg
ICAgICAgIChKU0M6OllhcnI6OkJ5dGVDb21waWxlcjo6Y2xvc2VBbHRlcm5hdGl2ZSk6CisgICAg
ICAgIChKU0M6OllhcnI6OkJ5dGVDb21waWxlcjo6Y2xvc2VCb2R5QWx0ZXJuYXRpdmUpOgorICAg
ICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmF0b21QYXJlbnRoZXNlc1N1YnBhdHRlcm5F
bmQpOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmF0b21QYXJlbnRoZXNlc09u
Y2VFbmQpOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmF0b21QYXJlbnRoZXNl
c1Rlcm1pbmFsRW5kKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qnl0ZUNvbXBpbGVyOjplbWl0RGlz
anVuY3Rpb24pOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmR1bXBEaXNqdW5j
dGlvbik6CisgICAgICAgICogeWFyci9ZYXJySW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQzo6
WWFycjo6Qnl0ZVRlcm06OkJ5dGVUZXJtKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qnl0ZVRlcm06
OkJPTCk6CisgICAgICAgIChKU0M6OllhcnI6OkJ5dGVUZXJtOjpDaGVja0lucHV0KToKKyAgICAg
ICAgKEpTQzo6WWFycjo6Qnl0ZVRlcm06OlVuY2hlY2tJbnB1dCk6CisgICAgICAgIChKU0M6Ollh
cnI6OkJ5dGVUZXJtOjpFT0wpOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlVGVybTo6V29yZEJv
dW5kYXJ5KToKKyAgICAgICAgKEpTQzo6WWFycjo6Qnl0ZVRlcm06OkJhY2tSZWZlcmVuY2UpOgor
ICAgICAgICAoSlNDOjpZYXJyOjpCeXRlVGVybTo6Qm9keUFsdGVybmF0aXZlQmVnaW4pOgorICAg
ICAgICAoSlNDOjpZYXJyOjpCeXRlVGVybTo6Qm9keUFsdGVybmF0aXZlRGlzanVuY3Rpb24pOgor
ICAgICAgICAoSlNDOjpZYXJyOjpCeXRlVGVybTo6Qm9keUFsdGVybmF0aXZlRW5kKToKKyAgICAg
ICAgKEpTQzo6WWFycjo6Qnl0ZVRlcm06OkFsdGVybmF0aXZlQmVnaW4pOgorICAgICAgICAoSlND
OjpZYXJyOjpCeXRlVGVybTo6QWx0ZXJuYXRpdmVEaXNqdW5jdGlvbik6CisgICAgICAgIChKU0M6
OllhcnI6OkJ5dGVUZXJtOjpBbHRlcm5hdGl2ZUVuZCk6CisgICAgICAgIChKU0M6OllhcnI6OkJ5
dGVUZXJtOjpTdWJwYXR0ZXJuQmVnaW4pOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlVGVybTo6
U3VicGF0dGVybkVuZCk6CisgICAgICAgIChKU0M6OllhcnI6OkJ5dGVUZXJtOjpEb3RTdGFyRW5j
bG9zdXJlKToKKyAgICAgICAgKiB5YXJyL1lhcnJKSVQuY3BwOgorICAgICAgICAoSlNDOjpZYXJy
OjpqaXRDb21waWxlKToKKyAgICAgICAgKiB5YXJyL1lhcnJKSVQuaDoKKyAgICAgICAgKiB5YXJy
L1lhcnJQYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6WWFycjo6UGFyc2VyOjpDaGFyYWN0ZXJDbGFz
c1BhcnNlckRlbGVnYXRlOjpDaGFyYWN0ZXJDbGFzc1BhcnNlckRlbGVnYXRlKToKKyAgICAgICAg
KEpTQzo6WWFycjo6UGFyc2VyOjpDaGFyYWN0ZXJDbGFzc1BhcnNlckRlbGVnYXRlOjphdG9tUGF0
dGVybkNoYXJhY3Rlcik6CisgICAgICAgIChKU0M6OllhcnI6OlBhcnNlcjo6Q2hhcmFjdGVyQ2xh
c3NQYXJzZXJEZWxlZ2F0ZTo6YXRvbUJ1aWx0SW5DaGFyYWN0ZXJDbGFzcyk6CisgICAgICAgIChK
U0M6OllhcnI6OlBhcnNlcjo6Q2hhcmFjdGVyQ2xhc3NQYXJzZXJEZWxlZ2F0ZTo6ZW5kKToKKyAg
ICAgICAgKiB5YXJyL1lhcnJQYXR0ZXJuLmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyclBh
dHRlcm5Db25zdHJ1Y3Rvcjo6YXRvbVBhcmVudGhlc2VzU3VicGF0dGVybkJlZ2luKToKKyAgICAg
ICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6YXRvbVBhcmVudGhldGljYWxB
c3NlcnRpb25CZWdpbik6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuQ29uc3RydWN0
b3I6OmF0b21CYWNrUmVmZXJlbmNlKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm5D
b25zdHJ1Y3Rvcjo6Y29weVRlcm0pOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNv
bnN0cnVjdG9yOjpxdWFudGlmeUF0b20pOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVy
bkNvbnN0cnVjdG9yOjpjaGVja0ZvclRlcm1pbmFsUGFyZW50aGVzZXMpOgorICAgICAgICAoSlND
OjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjpjb250YWluc0NhcHR1cmluZ1Rlcm1zKToK
KyAgICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6b3B0aW1pemVEb3RT
dGFyV3JhcHBlZEV4cHJlc3Npb25zKToKKyAgICAgICAgKEpTQzo6WWFycjo6UGF0dGVyblRlcm06
OmR1bXBRdWFudGlmaWVyKToKKyAgICAgICAgKEpTQzo6WWFycjo6UGF0dGVyblRlcm06OmR1bXAp
OgorICAgICAgICAqIHlhcnIvWWFyclBhdHRlcm4uaDoKKyAgICAgICAgKEpTQzo6WWFycjo6UGF0
dGVyblRlcm06OlBhdHRlcm5UZXJtKToKKyAgICAgICAgKEpTQzo6WWFycjo6UGF0dGVyblRlcm06
OkZvcndhcmRSZWZlcmVuY2UpOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXR0ZXJuVGVybTo6Qk9M
KToKKyAgICAgICAgKEpTQzo6WWFycjo6UGF0dGVyblRlcm06OkVPTCk6CisgICAgICAgIChKU0M6
OllhcnI6OlBhdHRlcm5UZXJtOjpXb3JkQm91bmRhcnkpOgorICAgICAgICAoSlNDOjpZYXJyOjpQ
YXR0ZXJuVGVybTo6aXNGaXhlZFdpZHRoQ2hhcmFjdGVyQ2xhc3MgY29uc3QpOgorICAgICAgICAo
SlNDOjpZYXJyOjpQYXR0ZXJuVGVybTo6Y29udGFpbnNBbnlDYXB0dXJlcyk6CisgICAgICAgIChK
U0M6OllhcnI6OlBhdHRlcm5UZXJtOjpxdWFudGlmeSk6CisKIDIwMjEtMDctMjMgIEFsZXhleSBT
aHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIFtXZWJJRExdIFByb3Bl
cmx5IHZhbGlkYXRlIGFuZCBtZXJnZSBkZXNjcmlwdG9ycyBpbiBbUmVwbGFjZWFibGVdIHNldHRl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKaW5kZXggZjVhYWMwYjRk
MzQ1MzQ2NWFkMTQ3OTQ0ZmRlYzAzZjFhNDY4ZjU2ZS4uMjc3N2VlMWY0NTdjYzM1ODlmMWNjNmVl
YzQyNGM3NDAwODY4MzgxNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAu
Y3BwCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBSZWdFeHA6OmJ5dGVDb2RlQ29tcGlsZUlmTmVj
ZXNzYXJ5KFZNKiB2bSkKICAgICB9CiB9CiAKLXZvaWQgUmVnRXhwOjpjb21waWxlKFZNKiB2bSwg
WWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQordm9pZCBSZWdFeHA6OmNvbXBpbGUoVk0qIHZt
LCBZYXJyOjpDaGFyU2l6ZSBjaGFyU2l6ZSkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgY2VsbExv
Y2soKSB9OwogICAgIApAQCAtMjUxLDcgKzI1MSw3IEBAIHZvaWQgUmVnRXhwOjpjb21waWxlKFZN
KiB2bSwgWWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQogI2VuZGlmCiAgICAgICAgICkgewog
ICAgICAgICBhdXRvJiBqaXRDb2RlID0gZW5zdXJlUmVnRXhwSklUQ29kZSgpOwotICAgICAgICBZ
YXJyOjpqaXRDb21waWxlKHBhdHRlcm4sIG1fcGF0dGVyblN0cmluZywgY2hhclNpemUsIHZtLCBq
aXRDb2RlKTsKKyAgICAgICAgWWFycjo6aml0Q29tcGlsZShwYXR0ZXJuLCBtX3BhdHRlcm5TdHJp
bmcsIGNoYXJTaXplLCB2bSwgaml0Q29kZSwgWWFycjo6SklUQ29tcGlsZU1vZGU6OkluY2x1ZGVT
dWJwYXR0ZXJucyk7CiAgICAgICAgIGlmICghaml0Q29kZS5mYWlsdXJlUmVhc29uKCkpIHsKICAg
ICAgICAgICAgIG1fc3RhdGUgPSBKSVRDb2RlOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjgy
LDcgKzI4Miw3IEBAIGJvb2wgUmVnRXhwOjptYXRjaENvbmN1cnJlbnRseSgKIHsKICAgICBMb2Nr
ZXIgbG9ja2VyIHsgY2VsbExvY2soKSB9OwogCi0gICAgaWYgKCFoYXNDb2RlRm9yKHMuaXM4Qml0
KCkgPyBZYXJyOjpDaGFyOCA6IFlhcnI6OkNoYXIxNikpCisgICAgaWYgKCFoYXNDb2RlRm9yKHMu
aXM4Qml0KCkgPyBZYXJyOjpDaGFyU2l6ZTo6Q2hhcjggOiBZYXJyOjpDaGFyU2l6ZTo6Q2hhcjE2
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcG9zaXRpb24gPSBtYXRjaElubGluZTxW
ZWN0b3I8aW50PiYsIFlhcnI6Ok1hdGNoRnJvbTo6Q29tcGlsZXJUaHJlYWQ+KG51bGxwdHIsIHZt
LCBzLCBzdGFydE9mZnNldCwgb3ZlY3Rvcik7CkBAIC0yOTEsNyArMjkxLDcgQEAgYm9vbCBSZWdF
eHA6Om1hdGNoQ29uY3VycmVudGx5KAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFJlZ0V4
cDo6Y29tcGlsZU1hdGNoT25seShWTSogdm0sIFlhcnI6OllhcnJDaGFyU2l6ZSBjaGFyU2l6ZSkK
K3ZvaWQgUmVnRXhwOjpjb21waWxlTWF0Y2hPbmx5KFZNKiB2bSwgWWFycjo6Q2hhclNpemUgY2hh
clNpemUpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IGNlbGxMb2NrKCkgfTsKICAgICAKQEAgLTMx
NSw3ICszMTUsNyBAQCB2b2lkIFJlZ0V4cDo6Y29tcGlsZU1hdGNoT25seShWTSogdm0sIFlhcnI6
OllhcnJDaGFyU2l6ZSBjaGFyU2l6ZSkKICNlbmRpZgogICAgICAgICApIHsKICAgICAgICAgYXV0
byYgaml0Q29kZSA9IGVuc3VyZVJlZ0V4cEpJVENvZGUoKTsKLSAgICAgICAgWWFycjo6aml0Q29t
cGlsZShwYXR0ZXJuLCBtX3BhdHRlcm5TdHJpbmcsIGNoYXJTaXplLCB2bSwgaml0Q29kZSwgWWFy
cjo6TWF0Y2hPbmx5KTsKKyAgICAgICAgWWFycjo6aml0Q29tcGlsZShwYXR0ZXJuLCBtX3BhdHRl
cm5TdHJpbmcsIGNoYXJTaXplLCB2bSwgaml0Q29kZSwgWWFycjo6SklUQ29tcGlsZU1vZGU6Ok1h
dGNoT25seSk7CiAgICAgICAgIGlmICghaml0Q29kZS5mYWlsdXJlUmVhc29uKCkpIHsKICAgICAg
ICAgICAgIG1fc3RhdGUgPSBKSVRDb2RlOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzQ1LDcg
KzM0NSw3IEBAIGJvb2wgUmVnRXhwOjptYXRjaENvbmN1cnJlbnRseShWTSYgdm0sIGNvbnN0IFN0
cmluZyYgcywgdW5zaWduZWQgc3RhcnRPZmZzZXQsIE1hCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7
IGNlbGxMb2NrKCkgfTsKIAotICAgIGlmICghaGFzTWF0Y2hPbmx5Q29kZUZvcihzLmlzOEJpdCgp
ID8gWWFycjo6Q2hhcjggOiBZYXJyOjpDaGFyMTYpKQorICAgIGlmICghaGFzTWF0Y2hPbmx5Q29k
ZUZvcihzLmlzOEJpdCgpID8gWWFycjo6Q2hhclNpemU6OkNoYXI4IDogWWFycjo6Q2hhclNpemU6
OkNoYXIxNikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJlc3VsdCA9IG1hdGNoSW5s
aW5lPFlhcnI6Ok1hdGNoRnJvbTo6Q29tcGlsZXJUaHJlYWQ+KG51bGxwdHIsIHZtLCBzLCBzdGFy
dE9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCmluZGV4IGZmODZm
YzZhMGUxY2Q5ZWE5YjQ1MGQwZWU1ZTRjM2E0ZmJjZjdlYzMuLjk0NjQ4ODdjODc4YjI5YWRkNzM4
YmU1OWQ3ODYzNDZlZTdmN2NmODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cC5oCkBAIC0xMTksOCArMTE5LDggQEAgY2xhc3MgUmVnRXhwIGZpbmFsIDogcHVibGljIEpTQ2Vs
bCB7CiAgICAgICAgIHJldHVybiBtX3N0YXRlID09IEpJVENvZGUgfHwgbV9zdGF0ZSA9PSBCeXRl
Q29kZTsKICAgICB9CiAKLSAgICBib29sIGhhc0NvZGVGb3IoWWFycjo6WWFyckNoYXJTaXplKTsK
LSAgICBib29sIGhhc01hdGNoT25seUNvZGVGb3IoWWFycjo6WWFyckNoYXJTaXplKTsKKyAgICBi
b29sIGhhc0NvZGVGb3IoWWFycjo6Q2hhclNpemUpOworICAgIGJvb2wgaGFzTWF0Y2hPbmx5Q29k
ZUZvcihZYXJyOjpDaGFyU2l6ZSk7CiAKICAgICB2b2lkIGRlbGV0ZUNvZGUoKTsKIApAQCAtMTU3
LDExICsxNTcsMTEgQEAgY2xhc3MgUmVnRXhwIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAKICAg
ICB2b2lkIGJ5dGVDb2RlQ29tcGlsZUlmTmVjZXNzYXJ5KFZNKik7CiAKLSAgICB2b2lkIGNvbXBp
bGUoVk0qLCBZYXJyOjpZYXJyQ2hhclNpemUpOwotICAgIHZvaWQgY29tcGlsZUlmTmVjZXNzYXJ5
KFZNJiwgWWFycjo6WWFyckNoYXJTaXplKTsKKyAgICB2b2lkIGNvbXBpbGUoVk0qLCBZYXJyOjpD
aGFyU2l6ZSk7CisgICAgdm9pZCBjb21waWxlSWZOZWNlc3NhcnkoVk0mLCBZYXJyOjpDaGFyU2l6
ZSk7CiAKLSAgICB2b2lkIGNvbXBpbGVNYXRjaE9ubHkoVk0qLCBZYXJyOjpZYXJyQ2hhclNpemUp
OwotICAgIHZvaWQgY29tcGlsZUlmTmVjZXNzYXJ5TWF0Y2hPbmx5KFZNJiwgWWFycjo6WWFyckNo
YXJTaXplKTsKKyAgICB2b2lkIGNvbXBpbGVNYXRjaE9ubHkoVk0qLCBZYXJyOjpDaGFyU2l6ZSk7
CisgICAgdm9pZCBjb21waWxlSWZOZWNlc3NhcnlNYXRjaE9ubHkoVk0mLCBZYXJyOjpDaGFyU2l6
ZSk7CiAKICNpZiBFTkFCTEUoWUFSUl9KSVRfREVCVUcpCiAgICAgdm9pZCBtYXRjaENvbXBhcmVX
aXRoSW50ZXJwcmV0ZXIoY29uc3QgU3RyaW5nJiwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQqIG9mZnNl
dFZlY3RvciwgaW50IGppdFJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBJbmxpbmVzLmgKaW5kZXggNmQ0NGJhOWEwYTY1ZTU2ZTJjMTliOTQwMDhlMmNiODlm
NDAwYzg3MC4uMDIyY2JiYTU1NTdlNzE3OGQxNGQ0YjY2MWVkY2Q2ODVhNGY3ODdlMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwSW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cElubGluZXMuaApAQCAtNjgsMTYg
KzY4LDE2IEBAIGNsYXNzIFJlZ0V4cEZ1bmN0aW9uYWxUZXN0Q29sbGVjdG9yIHsKIH07CiAjZW5k
aWYgLy8gUkVHRVhQX0ZVTkNfVEVTVF9EQVRBX0dFTgogCi1BTFdBWVNfSU5MSU5FIGJvb2wgUmVn
RXhwOjpoYXNDb2RlRm9yKFlhcnI6OllhcnJDaGFyU2l6ZSBjaGFyU2l6ZSkKK0FMV0FZU19JTkxJ
TkUgYm9vbCBSZWdFeHA6Omhhc0NvZGVGb3IoWWFycjo6Q2hhclNpemUgY2hhclNpemUpCiB7CiAg
ICAgaWYgKGhhc0NvZGUoKSkgewogI2lmIEVOQUJMRShZQVJSX0pJVCkKICAgICAgICAgaWYgKG1f
c3RhdGUgIT0gSklUQ29kZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBBU1NF
UlQobV9yZWdFeHBKSVRDb2RlKTsKLSAgICAgICAgaWYgKChjaGFyU2l6ZSA9PSBZYXJyOjpDaGFy
OCkgJiYgKG1fcmVnRXhwSklUQ29kZS0+aGFzOEJpdENvZGUoKSkpCisgICAgICAgIGlmICgoY2hh
clNpemUgPT0gWWFycjo6Q2hhclNpemU6OkNoYXI4KSAmJiAobV9yZWdFeHBKSVRDb2RlLT5oYXM4
Qml0Q29kZSgpKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBpZiAoKGNoYXJT
aXplID09IFlhcnI6OkNoYXIxNikgJiYgKG1fcmVnRXhwSklUQ29kZS0+aGFzMTZCaXRDb2RlKCkp
KQorICAgICAgICBpZiAoKGNoYXJTaXplID09IFlhcnI6OkNoYXJTaXplOjpDaGFyMTYpICYmICht
X3JlZ0V4cEpJVENvZGUtPmhhczE2Qml0Q29kZSgpKSkKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKGNoYXJTaXplKTsKQEAgLTg3LDcgKzg3LDcg
QEAgQUxXQVlTX0lOTElORSBib29sIFJlZ0V4cDo6aGFzQ29kZUZvcihZYXJyOjpZYXJyQ2hhclNp
emUgY2hhclNpemUpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1BTFdBWVNfSU5MSU5FIHZvaWQg
UmVnRXhwOjpjb21waWxlSWZOZWNlc3NhcnkoVk0mIHZtLCBZYXJyOjpZYXJyQ2hhclNpemUgY2hh
clNpemUpCitBTFdBWVNfSU5MSU5FIHZvaWQgUmVnRXhwOjpjb21waWxlSWZOZWNlc3NhcnkoVk0m
IHZtLCBZYXJyOjpDaGFyU2l6ZSBjaGFyU2l6ZSkKIHsKICAgICBpZiAoaGFzQ29kZUZvcihjaGFy
U2l6ZSkpCiAgICAgICAgIHJldHVybjsKQEAgLTEwNiw3ICsxMDYsNyBAQCBBTFdBWVNfSU5MSU5F
IGludCBSZWdFeHA6Om1hdGNoSW5saW5lKEpTR2xvYmFsT2JqZWN0KiBudWxsT3JHbG9iYWxPYmpl
Y3QsIFZNJiB2bQogICAgIG1fcnRNYXRjaFRvdGFsU3ViamVjdFN0cmluZ0xlbiArPSAoZG91Ymxl
KShzLmxlbmd0aCgpIC0gc3RhcnRPZmZzZXQpOwogI2VuZGlmCiAKLSAgICBjb21waWxlSWZOZWNl
c3Nhcnkodm0sIHMuaXM4Qml0KCkgPyBZYXJyOjpDaGFyOCA6IFlhcnI6OkNoYXIxNik7CisgICAg
Y29tcGlsZUlmTmVjZXNzYXJ5KHZtLCBzLmlzOEJpdCgpID8gWWFycjo6Q2hhclNpemU6OkNoYXI4
IDogWWFycjo6Q2hhclNpemU6OkNoYXIxNik7CiAKICAgICBhdXRvIHRocm93RXJyb3IgPSBbJl0g
ewogICAgICAgICBpZiAobWF0Y2hGcm9tID09IFlhcnI6Ok1hdGNoRnJvbTo6Q29tcGlsZXJUaHJl
YWQpCkBAIC0xNDAsNyArMTQwLDcgQEAgQUxXQVlTX0lOTElORSBpbnQgUmVnRXhwOjptYXRjaElu
bGluZShKU0dsb2JhbE9iamVjdCogbnVsbE9yR2xvYmFsT2JqZWN0LCBWTSYgdm0KICAgICAgICAg
ICAgICAgICByZXN1bHQgPSBtX3JlZ0V4cEpJVENvZGUtPmV4ZWN1dGUocy5jaGFyYWN0ZXJzMTYo
KSwgc3RhcnRPZmZzZXQsIHMubGVuZ3RoKCksIG9mZnNldFZlY3RvciwgcmVnRXhwQ29udGV4dCku
c3RhcnQ7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAocmVzdWx0ID09IFlhcnI6OkpTUmVnRXhw
SklUQ29kZUZhaWx1cmUpIHsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBzdGF0aWNfY2FzdDxpbnQ+
KFlhcnI6OkpTUmVnRXhwUmVzdWx0OjpKSVRDb2RlRmFpbHVyZSkpIHsKICAgICAgICAgICAgIC8v
IEpJVCdlZCBjb2RlIGNvdWxkbid0IGhhbmRsZSBleHByZXNzaW9uLCBzbyBwdW50IGJhY2sgdG8g
dGhlIGludGVycHJldGVyLgogICAgICAgICAgICAgYnl0ZUNvZGVDb21waWxlSWZOZWNlc3Nhcnko
JnZtKTsKICAgICAgICAgICAgIGlmIChtX3N0YXRlID09IFBhcnNlRXJyb3IpCkBAIC0yMDUsMTYg
KzIwNSwxNiBAQCBBTFdBWVNfSU5MSU5FIGludCBSZWdFeHA6Om1hdGNoSW5saW5lKEpTR2xvYmFs
T2JqZWN0KiBudWxsT3JHbG9iYWxPYmplY3QsIFZNJiB2bQogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLUFMV0FZU19JTkxJTkUgYm9vbCBSZWdFeHA6Omhhc01hdGNoT25seUNvZGVGb3IoWWFycjo6
WWFyckNoYXJTaXplIGNoYXJTaXplKQorQUxXQVlTX0lOTElORSBib29sIFJlZ0V4cDo6aGFzTWF0
Y2hPbmx5Q29kZUZvcihZYXJyOjpDaGFyU2l6ZSBjaGFyU2l6ZSkKIHsKICAgICBpZiAoaGFzQ29k
ZSgpKSB7CiAjaWYgRU5BQkxFKFlBUlJfSklUKQogICAgICAgICBpZiAobV9zdGF0ZSAhPSBKSVRD
b2RlKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIEFTU0VSVChtX3JlZ0V4cEpJ
VENvZGUpOwotICAgICAgICBpZiAoKGNoYXJTaXplID09IFlhcnI6OkNoYXI4KSAmJiAobV9yZWdF
eHBKSVRDb2RlLT5oYXM4Qml0Q29kZU1hdGNoT25seSgpKSkKKyAgICAgICAgaWYgKChjaGFyU2l6
ZSA9PSBZYXJyOjpDaGFyU2l6ZTo6Q2hhcjgpICYmIChtX3JlZ0V4cEpJVENvZGUtPmhhczhCaXRD
b2RlTWF0Y2hPbmx5KCkpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmICgo
Y2hhclNpemUgPT0gWWFycjo6Q2hhcjE2KSAmJiAobV9yZWdFeHBKSVRDb2RlLT5oYXMxNkJpdENv
ZGVNYXRjaE9ubHkoKSkpCisgICAgICAgIGlmICgoY2hhclNpemUgPT0gWWFycjo6Q2hhclNpemU6
OkNoYXIxNikgJiYgKG1fcmVnRXhwSklUQ29kZS0+aGFzMTZCaXRDb2RlTWF0Y2hPbmx5KCkpKQog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0oY2hh
clNpemUpOwpAQCAtMjI1LDcgKzIyNSw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBSZWdFeHA6Omhh
c01hdGNoT25seUNvZGVGb3IoWWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotQUxXQVlTX0lOTElORSB2b2lkIFJlZ0V4cDo6Y29tcGlsZUlmTmVjZXNz
YXJ5TWF0Y2hPbmx5KFZNJiB2bSwgWWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQorQUxXQVlT
X0lOTElORSB2b2lkIFJlZ0V4cDo6Y29tcGlsZUlmTmVjZXNzYXJ5TWF0Y2hPbmx5KFZNJiB2bSwg
WWFycjo6Q2hhclNpemUgY2hhclNpemUpCiB7CiAgICAgaWYgKGhhc01hdGNoT25seUNvZGVGb3Io
Y2hhclNpemUpKQogICAgICAgICByZXR1cm47CkBAIC0yNDQsNyArMjQ0LDcgQEAgQUxXQVlTX0lO
TElORSBNYXRjaFJlc3VsdCBSZWdFeHA6Om1hdGNoSW5saW5lKEpTR2xvYmFsT2JqZWN0KiBudWxs
T3JHbG9iYWxPYmplY3QKICAgICBtX3J0TWF0Y2hPbmx5VG90YWxTdWJqZWN0U3RyaW5nTGVuICs9
IChkb3VibGUpKHMubGVuZ3RoKCkgLSBzdGFydE9mZnNldCk7CiAjZW5kaWYKIAotICAgIGNvbXBp
bGVJZk5lY2Vzc2FyeU1hdGNoT25seSh2bSwgcy5pczhCaXQoKSA/IFlhcnI6OkNoYXI4IDogWWFy
cjo6Q2hhcjE2KTsKKyAgICBjb21waWxlSWZOZWNlc3NhcnlNYXRjaE9ubHkodm0sIHMuaXM4Qml0
KCkgPyBZYXJyOjpDaGFyU2l6ZTo6Q2hhcjggOiBZYXJyOjpDaGFyU2l6ZTo6Q2hhcjE2KTsKIAog
ICAgIGF1dG8gdGhyb3dFcnJvciA9IFsmXSB7CiAgICAgICAgIGlmIChtYXRjaEZyb20gPT0gWWFy
cjo6TWF0Y2hGcm9tOjpDb21waWxlclRocmVhZCkKQEAgLTI3OCw3ICsyNzgsNyBAQCBBTFdBWVNf
SU5MSU5FIE1hdGNoUmVzdWx0IFJlZ0V4cDo6bWF0Y2hJbmxpbmUoSlNHbG9iYWxPYmplY3QqIG51
bGxPckdsb2JhbE9iamVjdAogICAgICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgICAgIG1fcnRN
YXRjaE9ubHlGb3VuZENvdW50Kys7CiAjZW5kaWYKLSAgICAgICAgaWYgKHJlc3VsdC5zdGFydCAh
PSBzdGF0aWNfY2FzdDxzaXplX3Q+KFlhcnI6OkpTUmVnRXhwSklUQ29kZUZhaWx1cmUpKQorICAg
ICAgICBpZiAocmVzdWx0LnN0YXJ0ICE9IHN0YXRpY19jYXN0PHNpemVfdD4oWWFycjo6SlNSZWdF
eHBSZXN1bHQ6OkpJVENvZGVGYWlsdXJlKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAK
ICAgICAgICAgLy8gSklUJ2VkIGNvZGUgY291bGRuJ3QgaGFuZGxlIGV4cHJlc3Npb24sIHNvIHB1
bnQgYmFjayB0byB0aGUgaW50ZXJwcmV0ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUveWFyci9ZYXJyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyLmgKaW5k
ZXggMTYzOTg2YTc3MzA1N2Y4NzRjNmJkYjk3OTViMDViOWFmZTI5OGQxNS4uZGExYjc5MTRlY2Rl
Mzc3OGIxYWU5NTdiZTdlZTJmYzcxOWJiMjA0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnIu
aApAQCAtNDksMTkgKzQ5LDE5IEBAIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgb2Zmc2V0Tm9N
YXRjaCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKTsKIC8vIGF2b2lkIHNw
ZW5kaW5nIGV4cG9uZW50aWFsIHRpbWUgb24gY29tcGxleCByZWd1bGFyIGV4cHJlc3Npb25zLgog
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXRjaExpbWl0ID0gMTAwMDAwMDsKIAotZW51bSBN
YXRjaEZyb20geyBWTVRocmVhZCwgQ29tcGlsZXJUaHJlYWQgfTsKK2VudW0gY2xhc3MgTWF0Y2hG
cm9tIHsgVk1UaHJlYWQsIENvbXBpbGVyVGhyZWFkIH07CiAKLWVudW0gSlNSZWdFeHBSZXN1bHQg
ewotICAgIEpTUmVnRXhwTWF0Y2ggPSAxLAotICAgIEpTUmVnRXhwTm9NYXRjaCA9IDAsCi0gICAg
SlNSZWdFeHBFcnJvck5vTWF0Y2ggPSAtMSwKLSAgICBKU1JlZ0V4cEpJVENvZGVGYWlsdXJlID0g
LTIsCi0gICAgSlNSZWdFeHBFcnJvckhpdExpbWl0ID0gLTMsCi0gICAgSlNSZWdFeHBFcnJvck5v
TWVtb3J5ID0gLTQsCi0gICAgSlNSZWdFeHBFcnJvckludGVybmFsID0gLTUsCitlbnVtIGNsYXNz
IEpTUmVnRXhwUmVzdWx0IHsKKyAgICBNYXRjaCA9IDEsCisgICAgTm9NYXRjaCA9IDAsCisgICAg
RXJyb3JOb01hdGNoID0gLTEsCisgICAgSklUQ29kZUZhaWx1cmUgPSAtMiwKKyAgICBFcnJvckhp
dExpbWl0ID0gLTMsCisgICAgRXJyb3JOb01lbW9yeSA9IC00LAorICAgIEVycm9ySW50ZXJuYWwg
PSAtNSwKIH07CiAKLWVudW0gWWFyckNoYXJTaXplIHsKK2VudW0gY2xhc3MgQ2hhclNpemUgOiB1
aW50OF90IHsKICAgICBDaGFyOCwKICAgICBDaGFyMTYKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcAppbmRleCA2ODVmZTYxNmNkOGRjZWI1MDM0
ZjZhNjk5Yzk0NjIwMWMwOGYxZWM3Li5hYjAxNjFlZTdlOGYwZjcwNmMzMmFhYjU5M2I1MjllODhm
M2NmNzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJw
cmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRl
ci5jcHAKQEAgLTUxMSwxMCArNTExLDEwIEBAIGNsYXNzIEludGVycHJldGVyIHsKICAgICAgICAg
QmFja1RyYWNrSW5mb1BhdHRlcm5DaGFyYWN0ZXIqIGJhY2tUcmFjayA9IHJlaW50ZXJwcmV0X2Nh
c3Q8QmFja1RyYWNrSW5mb1BhdHRlcm5DaGFyYWN0ZXIqPihjb250ZXh0LT5mcmFtZSArIHRlcm0u
ZnJhbWVMb2NhdGlvbik7CiAKICAgICAgICAgc3dpdGNoICh0ZXJtLmF0b20ucXVhbnRpdHlUeXBl
KSB7Ci0gICAgICAgIGNhc2UgUXVhbnRpZmllckZpeGVkQ291bnQ6CisgICAgICAgIGNhc2UgUXVh
bnRpZmllclR5cGU6OkZpeGVkQ291bnQ6CiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBj
YXNlIFF1YW50aWZpZXJHcmVlZHk6CisgICAgICAgIGNhc2UgUXVhbnRpZmllclR5cGU6OkdyZWVk
eToKICAgICAgICAgICAgIGlmIChiYWNrVHJhY2stPm1hdGNoQW1vdW50KSB7CiAgICAgICAgICAg
ICAgICAgLS1iYWNrVHJhY2stPm1hdGNoQW1vdW50OwogICAgICAgICAgICAgICAgIGlucHV0LnVu
Y2hlY2tJbnB1dChVMTZfTEVOR1RIKHRlcm0uYXRvbS5wYXR0ZXJuQ2hhcmFjdGVyKSk7CkBAIC01
MjIsNyArNTIyLDcgQEAgY2xhc3MgSW50ZXJwcmV0ZXIgewogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgYnJlYWs7CiAKLSAgICAgICAgY2FzZSBRdWFudGlmaWVyTm9uR3JlZWR5OgorICAgICAg
ICBjYXNlIFF1YW50aWZpZXJUeXBlOjpOb25HcmVlZHk6CiAgICAgICAgICAgICBpZiAoKGJhY2tU
cmFjay0+bWF0Y2hBbW91bnQgPCB0ZXJtLmF0b20ucXVhbnRpdHlNYXhDb3VudCkgJiYgaW5wdXQu
Y2hlY2tJbnB1dCgxKSkgewogICAgICAgICAgICAgICAgICsrYmFja1RyYWNrLT5tYXRjaEFtb3Vu
dDsKICAgICAgICAgICAgICAgICBpZiAoY2hlY2tDaGFyYWN0ZXIodGVybS5hdG9tLnBhdHRlcm5D
aGFyYWN0ZXIsIHRlcm0uaW5wdXRQb3NpdGlvbiArIDEpKQpAQCAtNTQwLDEwICs1NDAsMTAgQEAg
Y2xhc3MgSW50ZXJwcmV0ZXIgewogICAgICAgICBCYWNrVHJhY2tJbmZvUGF0dGVybkNoYXJhY3Rl
ciogYmFja1RyYWNrID0gcmVpbnRlcnByZXRfY2FzdDxCYWNrVHJhY2tJbmZvUGF0dGVybkNoYXJh
Y3Rlcio+KGNvbnRleHQtPmZyYW1lICsgdGVybS5mcmFtZUxvY2F0aW9uKTsKIAogICAgICAgICBz
d2l0Y2ggKHRlcm0uYXRvbS5xdWFudGl0eVR5cGUpIHsKLSAgICAgICAgY2FzZSBRdWFudGlmaWVy
Rml4ZWRDb3VudDoKKyAgICAgICAgY2FzZSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudDoKICAg
ICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGNhc2UgUXVhbnRpZmllckdyZWVkeToKKyAgICAg
ICAgY2FzZSBRdWFudGlmaWVyVHlwZTo6R3JlZWR5OgogICAgICAgICAgICAgaWYgKGJhY2tUcmFj
ay0+bWF0Y2hBbW91bnQpIHsKICAgICAgICAgICAgICAgICAtLWJhY2tUcmFjay0+bWF0Y2hBbW91
bnQ7CiAgICAgICAgICAgICAgICAgaW5wdXQudW5jaGVja0lucHV0KDEpOwpAQCAtNTUxLDcgKzU1
MSw3IEBAIGNsYXNzIEludGVycHJldGVyIHsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJy
ZWFrOwogCi0gICAgICAgIGNhc2UgUXVhbnRpZmllck5vbkdyZWVkeToKKyAgICAgICAgY2FzZSBR
dWFudGlmaWVyVHlwZTo6Tm9uR3JlZWR5OgogICAgICAgICAgICAgaWYgKChiYWNrVHJhY2stPm1h
dGNoQW1vdW50IDwgdGVybS5hdG9tLnF1YW50aXR5TWF4Q291bnQpICYmIGlucHV0LmNoZWNrSW5w
dXQoMSkpIHsKICAgICAgICAgICAgICAgICArK2JhY2tUcmFjay0+bWF0Y2hBbW91bnQ7CiAgICAg
ICAgICAgICAgICAgaWYgKGNoZWNrQ2FzZWRDaGFyYWN0ZXIodGVybS5hdG9tLmNhc2VkQ2hhcmFj
dGVyLmxvLCB0ZXJtLmF0b20uY2FzZWRDaGFyYWN0ZXIuaGksIHRlcm0uaW5wdXRQb3NpdGlvbiAr
IDEpKQpAQCAtNTY2LDExICs1NjYsMTEgQEAgY2xhc3MgSW50ZXJwcmV0ZXIgewogCiAgICAgYm9v
bCBtYXRjaENoYXJhY3RlckNsYXNzKEJ5dGVUZXJtJiB0ZXJtLCBEaXNqdW5jdGlvbkNvbnRleHQq
IGNvbnRleHQpCiAgICAgewotICAgICAgICBBU1NFUlQodGVybS50eXBlID09IEJ5dGVUZXJtOjpU
eXBlQ2hhcmFjdGVyQ2xhc3MpOworICAgICAgICBBU1NFUlQodGVybS50eXBlID09IEJ5dGVUZXJt
OjpUeXBlOjpDaGFyYWN0ZXJDbGFzcyk7CiAgICAgICAgIEJhY2tUcmFja0luZm9DaGFyYWN0ZXJD
bGFzcyogYmFja1RyYWNrID0gcmVpbnRlcnByZXRfY2FzdDxCYWNrVHJhY2tJbmZvQ2hhcmFjdGVy
Q2xhc3MqPihjb250ZXh0LT5mcmFtZSArIHRlcm0uZnJhbWVMb2NhdGlvbik7CiAKICAgICAgICAg
c3dpdGNoICh0ZXJtLmF0b20ucXVhbnRpdHlUeXBlKSB7Ci0gICAgICAgIGNhc2UgUXVhbnRpZmll
ckZpeGVkQ291bnQ6IHsKKyAgICAgICAgY2FzZSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudDog
ewogICAgICAgICAgICAgaWYgKHVuaWNvZGUpIHsKICAgICAgICAgICAgICAgICBDaGFyYWN0ZXJD
bGFzcyogY2hhckNsYXNzID0gdGVybS5hdG9tLmNoYXJhY3RlckNsYXNzOwogICAgICAgICAgICAg
ICAgIGJhY2tUcmFjay0+YmVnaW4gPSBpbnB1dC5nZXRQb3MoKTsKQEAgLTYwMCw3ICs2MDAsNyBA
QCBjbGFzcyBJbnRlcnByZXRlciB7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQogCi0gICAgICAgIGNhc2UgUXVhbnRpZmllckdyZWVkeTogeworICAgICAgICBjYXNlIFF1YW50
aWZpZXJUeXBlOjpHcmVlZHk6IHsKICAgICAgICAgICAgIHVuc2lnbmVkIHBvc2l0aW9uID0gaW5w
dXQuZ2V0UG9zKCk7CiAgICAgICAgICAgICBiYWNrVHJhY2stPmJlZ2luID0gcG9zaXRpb247CiAg
ICAgICAgICAgICB1bnNpZ25lZCBtYXRjaEFtb3VudCA9IDA7CkBAIC02MTcsNyArNjE3LDcgQEAg
Y2xhc3MgSW50ZXJwcmV0ZXIgewogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0K
IAotICAgICAgICBjYXNlIFF1YW50aWZpZXJOb25HcmVlZHk6CisgICAgICAgIGNhc2UgUXVhbnRp
ZmllclR5cGU6Ok5vbkdyZWVkeToKICAgICAgICAgICAgIGJhY2tUcmFjay0+YmVnaW4gPSBpbnB1
dC5nZXRQb3MoKTsKICAgICAgICAgICAgIGJhY2tUcmFjay0+bWF0Y2hBbW91bnQgPSAwOwogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC02MjksMTYgKzYyOSwxNiBAQCBjbGFzcyBJbnRlcnBy
ZXRlciB7CiAKICAgICBib29sIGJhY2t0cmFja0NoYXJhY3RlckNsYXNzKEJ5dGVUZXJtJiB0ZXJt
LCBEaXNqdW5jdGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgewotICAgICAgICBBU1NFUlQodGVy
bS50eXBlID09IEJ5dGVUZXJtOjpUeXBlQ2hhcmFjdGVyQ2xhc3MpOworICAgICAgICBBU1NFUlQo
dGVybS50eXBlID09IEJ5dGVUZXJtOjpUeXBlOjpDaGFyYWN0ZXJDbGFzcyk7CiAgICAgICAgIEJh
Y2tUcmFja0luZm9DaGFyYWN0ZXJDbGFzcyogYmFja1RyYWNrID0gcmVpbnRlcnByZXRfY2FzdDxC
YWNrVHJhY2tJbmZvQ2hhcmFjdGVyQ2xhc3MqPihjb250ZXh0LT5mcmFtZSArIHRlcm0uZnJhbWVM
b2NhdGlvbik7CiAKICAgICAgICAgc3dpdGNoICh0ZXJtLmF0b20ucXVhbnRpdHlUeXBlKSB7Ci0g
ICAgICAgIGNhc2UgUXVhbnRpZmllckZpeGVkQ291bnQ6CisgICAgICAgIGNhc2UgUXVhbnRpZmll
clR5cGU6OkZpeGVkQ291bnQ6CiAgICAgICAgICAgICBpZiAodW5pY29kZSkKICAgICAgICAgICAg
ICAgICBpbnB1dC5zZXRQb3MoYmFja1RyYWNrLT5iZWdpbik7CiAgICAgICAgICAgICBicmVhazsK
IAotICAgICAgICBjYXNlIFF1YW50aWZpZXJHcmVlZHk6CisgICAgICAgIGNhc2UgUXVhbnRpZmll
clR5cGU6OkdyZWVkeToKICAgICAgICAgICAgIGlmIChiYWNrVHJhY2stPm1hdGNoQW1vdW50KSB7
CiAgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGUpIHsKICAgICAgICAgICAgICAgICAgICAgLy8g
UmVtYXRjaCBvbmUgbGVzcyBtYXRjaApAQCAtNjU4LDcgKzY1OCw3IEBAIGNsYXNzIEludGVycHJl
dGVyIHsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGNhc2Ug
UXVhbnRpZmllck5vbkdyZWVkeToKKyAgICAgICAgY2FzZSBRdWFudGlmaWVyVHlwZTo6Tm9uR3Jl
ZWR5OgogICAgICAgICAgICAgaWYgKChiYWNrVHJhY2stPm1hdGNoQW1vdW50IDwgdGVybS5hdG9t
LnF1YW50aXR5TWF4Q291bnQpICYmIGlucHV0LmNoZWNrSW5wdXQoMSkpIHsKICAgICAgICAgICAg
ICAgICArK2JhY2tUcmFjay0+bWF0Y2hBbW91bnQ7CiAgICAgICAgICAgICAgICAgaWYgKGNoZWNr
Q2hhcmFjdGVyQ2xhc3ModGVybS5hdG9tLmNoYXJhY3RlckNsYXNzLCB0ZXJtLmludmVydCgpLCB0
ZXJtLmlucHV0UG9zaXRpb24gKyAxKSkKQEAgLTY3Myw3ICs2NzMsNyBAQCBjbGFzcyBJbnRlcnBy
ZXRlciB7CiAKICAgICBib29sIG1hdGNoQmFja1JlZmVyZW5jZShCeXRlVGVybSYgdGVybSwgRGlz
anVuY3Rpb25Db250ZXh0KiBjb250ZXh0KQogICAgIHsKLSAgICAgICAgQVNTRVJUKHRlcm0udHlw
ZSA9PSBCeXRlVGVybTo6VHlwZUJhY2tSZWZlcmVuY2UpOworICAgICAgICBBU1NFUlQodGVybS50
eXBlID09IEJ5dGVUZXJtOjpUeXBlOjpCYWNrUmVmZXJlbmNlKTsKICAgICAgICAgQmFja1RyYWNr
SW5mb0JhY2tSZWZlcmVuY2UqIGJhY2tUcmFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QmFja1RyYWNr
SW5mb0JhY2tSZWZlcmVuY2UqPihjb250ZXh0LT5mcmFtZSArIHRlcm0uZnJhbWVMb2NhdGlvbik7
CiAKICAgICAgICAgdW5zaWduZWQgbWF0Y2hCZWdpbiA9IG91dHB1dFsodGVybS5hdG9tLnN1YnBh
dHRlcm5JZCA8PCAxKV07CkBAIC02OTQsNyArNjk0LDcgQEAgY2xhc3MgSW50ZXJwcmV0ZXIgewog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAgICAgc3dpdGNoICh0ZXJtLmF0b20ucXVh
bnRpdHlUeXBlKSB7Ci0gICAgICAgIGNhc2UgUXVhbnRpZmllckZpeGVkQ291bnQ6IHsKKyAgICAg
ICAgY2FzZSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudDogewogICAgICAgICAgICAgYmFja1Ry
YWNrLT5iZWdpbiA9IGlucHV0LmdldFBvcygpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBt
YXRjaEFtb3VudCA9IDA7IG1hdGNoQW1vdW50IDwgdGVybS5hdG9tLnF1YW50aXR5TWF4Q291bnQ7
ICsrbWF0Y2hBbW91bnQpIHsKICAgICAgICAgICAgICAgICBpZiAoIXRyeUNvbnN1bWVCYWNrUmVm
ZXJlbmNlKG1hdGNoQmVnaW4sIG1hdGNoRW5kLCB0ZXJtLmlucHV0UG9zaXRpb24pKSB7CkBAIC03
MDUsNyArNzA1LDcgQEAgY2xhc3MgSW50ZXJwcmV0ZXIgewogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIFF1YW50aWZpZXJHcmVlZHk6IHsKKyAgICAg
ICAgY2FzZSBRdWFudGlmaWVyVHlwZTo6R3JlZWR5OiB7CiAgICAgICAgICAgICB1bnNpZ25lZCBt
YXRjaEFtb3VudCA9IDA7CiAgICAgICAgICAgICB3aGlsZSAoKG1hdGNoQW1vdW50IDwgdGVybS5h
dG9tLnF1YW50aXR5TWF4Q291bnQpICYmIHRyeUNvbnN1bWVCYWNrUmVmZXJlbmNlKG1hdGNoQmVn
aW4sIG1hdGNoRW5kLCB0ZXJtLmlucHV0UG9zaXRpb24pKQogICAgICAgICAgICAgICAgICsrbWF0
Y2hBbW91bnQ7CkBAIC03MTMsNyArNzEzLDcgQEAgY2xhc3MgSW50ZXJwcmV0ZXIgewogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIFF1YW50aWZpZXJO
b25HcmVlZHk6CisgICAgICAgIGNhc2UgUXVhbnRpZmllclR5cGU6Ok5vbkdyZWVkeToKICAgICAg
ICAgICAgIGJhY2tUcmFjay0+YmVnaW4gPSBpbnB1dC5nZXRQb3MoKTsKICAgICAgICAgICAgIGJh
Y2tUcmFjay0+bWF0Y2hBbW91bnQgPSAwOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC03
MjUsNyArNzI1LDcgQEAgY2xhc3MgSW50ZXJwcmV0ZXIgewogCiAgICAgYm9vbCBiYWNrdHJhY2tC
YWNrUmVmZXJlbmNlKEJ5dGVUZXJtJiB0ZXJtLCBEaXNqdW5jdGlvbkNvbnRleHQqIGNvbnRleHQp
CiAgICAgewotICAgICAgICBBU1NFUlQodGVybS50eXBlID09IEJ5dGVUZXJtOjpUeXBlQmFja1Jl
ZmVyZW5jZSk7CisgICAgICAgIEFTU0VSVCh0ZXJtLnR5cGUgPT0gQnl0ZVRlcm06OlR5cGU6OkJh
Y2tSZWZlcmVuY2UpOwogICAgICAgICBCYWNrVHJhY2tJbmZvQmFja1JlZmVyZW5jZSogYmFja1Ry
YWNrID0gcmVpbnRlcnByZXRfY2FzdDxCYWNrVHJhY2tJbmZvQmFja1JlZmVyZW5jZSo+KGNvbnRl
eHQtPmZyYW1lICsgdGVybS5mcmFtZUxvY2F0aW9uKTsKIAogICAgICAgICB1bnNpZ25lZCBtYXRj
aEJlZ2luID0gb3V0cHV0Wyh0ZXJtLmF0b20uc3VicGF0dGVybklkIDw8IDEpXTsKQEAgLTc0MCwx
MiArNzQwLDEyIEBAIGNsYXNzIEludGVycHJldGVyIHsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgICAgICBzd2l0Y2ggKHRlcm0uYXRvbS5xdWFudGl0eVR5cGUpIHsKLSAgICAgICAg
Y2FzZSBRdWFudGlmaWVyRml4ZWRDb3VudDoKKyAgICAgICAgY2FzZSBRdWFudGlmaWVyVHlwZTo6
Rml4ZWRDb3VudDoKICAgICAgICAgICAgIC8vIGZvciBxdWFudGl0eU1heENvdW50ID09IDEsIGNv
dWxkIHJld2luZC4KICAgICAgICAgICAgIGlucHV0LnNldFBvcyhiYWNrVHJhY2stPmJlZ2luKTsK
ICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGNhc2UgUXVhbnRpZmllckdyZWVkeToKKyAg
ICAgICAgY2FzZSBRdWFudGlmaWVyVHlwZTo6R3JlZWR5OgogICAgICAgICAgICAgaWYgKGJhY2tU
cmFjay0+bWF0Y2hBbW91bnQpIHsKICAgICAgICAgICAgICAgICAtLWJhY2tUcmFjay0+bWF0Y2hB
bW91bnQ7CiAgICAgICAgICAgICAgICAgaW5wdXQucmV3aW5kKG1hdGNoRW5kIC0gbWF0Y2hCZWdp
bik7CkBAIC03NTMsNyArNzUzLDcgQEAgY2xhc3MgSW50ZXJwcmV0ZXIgewogICAgICAgICAgICAg
fQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgY2FzZSBRdWFudGlmaWVyTm9uR3JlZWR5
OgorICAgICAgICBjYXNlIFF1YW50aWZpZXJUeXBlOjpOb25HcmVlZHk6CiAgICAgICAgICAgICBp
ZiAoKGJhY2tUcmFjay0+bWF0Y2hBbW91bnQgPCB0ZXJtLmF0b20ucXVhbnRpdHlNYXhDb3VudCkg
JiYgdHJ5Q29uc3VtZUJhY2tSZWZlcmVuY2UobWF0Y2hCZWdpbiwgbWF0Y2hFbmQsIHRlcm0uaW5w
dXRQb3NpdGlvbikpIHsKICAgICAgICAgICAgICAgICArK2JhY2tUcmFjay0+bWF0Y2hBbW91bnQ7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC03ODUsMzkgKzc4NSwzOSBAQCBjbGFz
cyBJbnRlcnByZXRlciB7CiAgICAgICAgICAgICBQYXJlbnRoZXNlc0Rpc2p1bmN0aW9uQ29udGV4
dCogY29udGV4dCA9IGJhY2tUcmFjay0+bGFzdENvbnRleHQ7CiAKICAgICAgICAgICAgIEpTUmVn
RXhwUmVzdWx0IHJlc3VsdCA9IG1hdGNoRGlzanVuY3Rpb24odGVybS5hdG9tLnBhcmVudGhlc2Vz
RGlzanVuY3Rpb24sIGNvbnRleHQtPmdldERpc2p1bmN0aW9uQ29udGV4dCh0ZXJtKSwgdHJ1ZSk7
Ci0gICAgICAgICAgICBpZiAocmVzdWx0ID09IEpTUmVnRXhwTWF0Y2gpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIEpTUmVnRXhwTWF0Y2g7CisgICAgICAgICAgICBpZiAocmVzdWx0ID09IEpTUmVn
RXhwUmVzdWx0OjpNYXRjaCkKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNSZWdFeHBSZXN1bHQ6
Ok1hdGNoOwogCiAgICAgICAgICAgICByZXNldE1hdGNoZXModGVybSwgY29udGV4dCk7CiAgICAg
ICAgICAgICBwb3BQYXJlbnRoZXNlc0Rpc2p1bmN0aW9uQ29udGV4dChiYWNrVHJhY2spOwogICAg
ICAgICAgICAgZnJlZVBhcmVudGhlc2VzRGlzanVuY3Rpb25Db250ZXh0KGNvbnRleHQpOwogCi0g
ICAgICAgICAgICBpZiAocmVzdWx0ICE9IEpTUmVnRXhwTm9NYXRjaCkKKyAgICAgICAgICAgIGlm
IChyZXN1bHQgIT0gSlNSZWdFeHBSZXN1bHQ6Ok5vTWF0Y2gpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBKU1JlZ0V4cE5vTWF0Y2g7
CisgICAgICAgIHJldHVybiBKU1JlZ0V4cFJlc3VsdDo6Tm9NYXRjaDsKICAgICB9CiAKICAgICBi
b29sIG1hdGNoUGFyZW50aGVzZXNPbmNlQmVnaW4oQnl0ZVRlcm0mIHRlcm0sIERpc2p1bmN0aW9u
Q29udGV4dCogY29udGV4dCkKICAgICB7Ci0gICAgICAgIEFTU0VSVCh0ZXJtLnR5cGUgPT0gQnl0
ZVRlcm06OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm5PbmNlQmVnaW4pOworICAgICAgICBBU1NF
UlQodGVybS50eXBlID09IEJ5dGVUZXJtOjpUeXBlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm5PbmNl
QmVnaW4pOwogICAgICAgICBBU1NFUlQodGVybS5hdG9tLnF1YW50aXR5TWF4Q291bnQgPT0gMSk7
CiAKICAgICAgICAgQmFja1RyYWNrSW5mb1BhcmVudGhlc2VzT25jZSogYmFja1RyYWNrID0gcmVp
bnRlcnByZXRfY2FzdDxCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXNPbmNlKj4oY29udGV4dC0+ZnJh
bWUgKyB0ZXJtLmZyYW1lTG9jYXRpb24pOwogCiAgICAgICAgIHN3aXRjaCAodGVybS5hdG9tLnF1
YW50aXR5VHlwZSkgewotICAgICAgICBjYXNlIFF1YW50aWZpZXJHcmVlZHk6IHsKKyAgICAgICAg
Y2FzZSBRdWFudGlmaWVyVHlwZTo6R3JlZWR5OiB7CiAgICAgICAgICAgICAvLyBzZXQgdGhpcyBz
cGVjdWxhdGl2ZWx5OyBpZiB3ZSBnZXQgdG8gdGhlIHBhcmVucyBlbmQgdGhpcyB3aWxsIGJlIHRy
dWUuCiAgICAgICAgICAgICBiYWNrVHJhY2stPmJlZ2luID0gaW5wdXQuZ2V0UG9zKCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNlIFF1YW50aWZpZXJOb25HcmVl
ZHk6IHsKKyAgICAgICAgY2FzZSBRdWFudGlmaWVyVHlwZTo6Tm9uR3JlZWR5OiB7CiAgICAgICAg
ICAgICBiYWNrVHJhY2stPmJlZ2luID0gbm90Rm91bmQ7CiAgICAgICAgICAgICBjb250ZXh0LT50
ZXJtICs9IHRlcm0uYXRvbS5wYXJlbnRoZXNlc1dpZHRoOwogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBRdWFudGlmaWVyRml4ZWRDb3VudDoKKyAgICAg
ICAgY2FzZSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudDoKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAKQEAgLTgzMSw3ICs4MzEsNyBAQCBjbGFzcyBJbnRlcnByZXRlciB7CiAKICAg
ICBib29sIG1hdGNoUGFyZW50aGVzZXNPbmNlRW5kKEJ5dGVUZXJtJiB0ZXJtLCBEaXNqdW5jdGlv
bkNvbnRleHQqIGNvbnRleHQpCiAgICAgewotICAgICAgICBBU1NFUlQodGVybS50eXBlID09IEJ5
dGVUZXJtOjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUVuZCk7CisgICAgICAgIEFTU0VS
VCh0ZXJtLnR5cGUgPT0gQnl0ZVRlcm06OlR5cGU6OlBhcmVudGhlc2VzU3VicGF0dGVybk9uY2VF
bmQpOwogICAgICAgICBBU1NFUlQodGVybS5hdG9tLnF1YW50aXR5TWF4Q291bnQgPT0gMSk7CiAK
ICAgICAgICAgaWYgKHRlcm0uY2FwdHVyZSgpKSB7CkBAIC04MzksNyArODM5LDcgQEAgY2xhc3Mg
SW50ZXJwcmV0ZXIgewogICAgICAgICAgICAgb3V0cHV0WyhzdWJwYXR0ZXJuSWQgPDwgMSkgKyAx
XSA9IGlucHV0LmdldFBvcygpIC0gdGVybS5pbnB1dFBvc2l0aW9uOwogICAgICAgICB9CiAKLSAg
ICAgICAgaWYgKHRlcm0uYXRvbS5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllckZpeGVkQ291bnQp
CisgICAgICAgIGlmICh0ZXJtLmF0b20ucXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJUeXBlOjpG
aXhlZENvdW50KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAgICAgQmFja1RyYWNr
SW5mb1BhcmVudGhlc2VzT25jZSogYmFja1RyYWNrID0gcmVpbnRlcnByZXRfY2FzdDxCYWNrVHJh
Y2tJbmZvUGFyZW50aGVzZXNPbmNlKj4oY29udGV4dC0+ZnJhbWUgKyB0ZXJtLmZyYW1lTG9jYXRp
b24pOwpAQCAtODQ4LDcgKzg0OCw3IEBAIGNsYXNzIEludGVycHJldGVyIHsKIAogICAgIGJvb2wg
YmFja3RyYWNrUGFyZW50aGVzZXNPbmNlQmVnaW4oQnl0ZVRlcm0mIHRlcm0sIERpc2p1bmN0aW9u
Q29udGV4dCogY29udGV4dCkKICAgICB7Ci0gICAgICAgIEFTU0VSVCh0ZXJtLnR5cGUgPT0gQnl0
ZVRlcm06OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm5PbmNlQmVnaW4pOworICAgICAgICBBU1NF
UlQodGVybS50eXBlID09IEJ5dGVUZXJtOjpUeXBlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm5PbmNl
QmVnaW4pOwogICAgICAgICBBU1NFUlQodGVybS5hdG9tLnF1YW50aXR5TWF4Q291bnQgPT0gMSk7
CiAKICAgICAgICAgQmFja1RyYWNrSW5mb1BhcmVudGhlc2VzT25jZSogYmFja1RyYWNrID0gcmVp
bnRlcnByZXRfY2FzdDxCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXNPbmNlKj4oY29udGV4dC0+ZnJh
bWUgKyB0ZXJtLmZyYW1lTG9jYXRpb24pOwpAQCAtODYwLDE2ICs4NjAsMTYgQEAgY2xhc3MgSW50
ZXJwcmV0ZXIgewogICAgICAgICB9CiAKICAgICAgICAgc3dpdGNoICh0ZXJtLmF0b20ucXVhbnRp
dHlUeXBlKSB7Ci0gICAgICAgIGNhc2UgUXVhbnRpZmllckdyZWVkeToKKyAgICAgICAgY2FzZSBR
dWFudGlmaWVyVHlwZTo6R3JlZWR5OgogICAgICAgICAgICAgLy8gaWYgd2UgYmFja3RyYWNrIHRv
IHRoaXMgcG9pbnQsIHRoZXJlIGlzIGFub3RoZXIgY2hhbmNlIC0gdHJ5IG1hdGNoaW5nIG5vdGhp
bmcuCiAgICAgICAgICAgICBBU1NFUlQoYmFja1RyYWNrLT5iZWdpbiAhPSBub3RGb3VuZCk7CiAg
ICAgICAgICAgICBiYWNrVHJhY2stPmJlZ2luID0gbm90Rm91bmQ7CiAgICAgICAgICAgICBjb250
ZXh0LT50ZXJtICs9IHRlcm0uYXRvbS5wYXJlbnRoZXNlc1dpZHRoOwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgIGNhc2UgUXVhbnRpZmllck5vbkdyZWVkeToKKyAgICAgICAgY2Fz
ZSBRdWFudGlmaWVyVHlwZTo6Tm9uR3JlZWR5OgogICAgICAgICAgICAgQVNTRVJUKGJhY2tUcmFj
ay0+YmVnaW4gIT0gbm90Rm91bmQpOwogICAgICAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgICAg
IGNhc2UgUXVhbnRpZmllckZpeGVkQ291bnQ6CisgICAgICAgIGNhc2UgUXVhbnRpZmllclR5cGU6
OkZpeGVkQ291bnQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC04NzgsMjYg
Kzg3OCwyNiBAQCBjbGFzcyBJbnRlcnByZXRlciB7CiAKICAgICBib29sIGJhY2t0cmFja1BhcmVu
dGhlc2VzT25jZUVuZChCeXRlVGVybSYgdGVybSwgRGlzanVuY3Rpb25Db250ZXh0KiBjb250ZXh0
KQogICAgIHsKLSAgICAgICAgQVNTRVJUKHRlcm0udHlwZSA9PSBCeXRlVGVybTo6VHlwZVBhcmVu
dGhlc2VzU3VicGF0dGVybk9uY2VFbmQpOworICAgICAgICBBU1NFUlQodGVybS50eXBlID09IEJ5
dGVUZXJtOjpUeXBlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm5PbmNlRW5kKTsKICAgICAgICAgQVNT
RVJUKHRlcm0uYXRvbS5xdWFudGl0eU1heENvdW50ID09IDEpOwogCiAgICAgICAgIEJhY2tUcmFj
a0luZm9QYXJlbnRoZXNlc09uY2UqIGJhY2tUcmFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QmFja1Ry
YWNrSW5mb1BhcmVudGhlc2VzT25jZSo+KGNvbnRleHQtPmZyYW1lICsgdGVybS5mcmFtZUxvY2F0
aW9uKTsKIAogICAgICAgICBzd2l0Y2ggKHRlcm0uYXRvbS5xdWFudGl0eVR5cGUpIHsKLSAgICAg
ICAgY2FzZSBRdWFudGlmaWVyR3JlZWR5OgorICAgICAgICBjYXNlIFF1YW50aWZpZXJUeXBlOjpH
cmVlZHk6CiAgICAgICAgICAgICBpZiAoYmFja1RyYWNrLT5iZWdpbiA9PSBub3RGb3VuZCkgewog
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnRlcm0gLT0gdGVybS5hdG9tLnBhcmVudGhlc2VzV2lk
dGg7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgICAgIGNhc2UgUXVhbnRpZmllck5vbkdyZWVkeToKKyAg
ICAgICAgY2FzZSBRdWFudGlmaWVyVHlwZTo6Tm9uR3JlZWR5OgogICAgICAgICAgICAgaWYgKGJh
Y2tUcmFjay0+YmVnaW4gPT0gbm90Rm91bmQpIHsKICAgICAgICAgICAgICAgICBiYWNrVHJhY2st
PmJlZ2luID0gaW5wdXQuZ2V0UG9zKCk7CiAgICAgICAgICAgICAgICAgaWYgKHRlcm0uY2FwdHVy
ZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRlY2huaWNhbGx5IHRoaXMgYWNjZXNzIHRv
IGlucHV0UG9zaXRpb24gc2hvdWxkIGJlIGFjY2Vzc2luZyB0aGUgYmVnaW4gdGVybSdzCiAgICAg
ICAgICAgICAgICAgICAgIC8vIGlucHV0UG9zaXRpb24sIGJ1dCBmb3IgcmVwZWF0cyBvdGhlciB0
aGFuIGZpeGVkIHRoZXNlIHZhbHVlcyBzaG91bGQgYmUKICAgICAgICAgICAgICAgICAgICAgLy8g
dGhlIHNhbWUgYW55d2F5ISAoV2UgZG9uJ3QgcHJlLWNoZWNrIGZvciBncmVlZHkgb3Igbm9uLWdy
ZWVkeSBtYXRjaGVzLikKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCgmdGVybSAtIHRlcm0u
YXRvbS5wYXJlbnRoZXNlc1dpZHRoKS0+dHlwZSA9PSBCeXRlVGVybTo6VHlwZVBhcmVudGhlc2Vz
U3VicGF0dGVybk9uY2VCZWdpbik7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCgoJnRlcm0g
LSB0ZXJtLmF0b20ucGFyZW50aGVzZXNXaWR0aCktPnR5cGUgPT0gQnl0ZVRlcm06OlR5cGU6OlBh
cmVudGhlc2VzU3VicGF0dGVybk9uY2VCZWdpbik7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VS
VCgoJnRlcm0gLSB0ZXJtLmF0b20ucGFyZW50aGVzZXNXaWR0aCktPmlucHV0UG9zaXRpb24gPT0g
dGVybS5pbnB1dFBvc2l0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc3VicGF0
dGVybklkID0gdGVybS5hdG9tLnN1YnBhdHRlcm5JZDsKICAgICAgICAgICAgICAgICAgICAgb3V0
cHV0W3N1YnBhdHRlcm5JZCA8PCAxXSA9IGlucHV0LmdldFBvcygpIC0gdGVybS5pbnB1dFBvc2l0
aW9uOwpAQCAtOTA2LDcgKzkwNiw3IEBAIGNsYXNzIEludGVycHJldGVyIHsKICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEZBTExUSFJPVUdI
OwotICAgICAgICBjYXNlIFF1YW50aWZpZXJGaXhlZENvdW50OgorICAgICAgICBjYXNlIFF1YW50
aWZpZXJUeXBlOjpGaXhlZENvdW50OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApA
QCAtOTE1LDggKzkxNSw4IEBAIGNsYXNzIEludGVycHJldGVyIHsKIAogICAgIGJvb2wgbWF0Y2hQ
YXJlbnRoZXNlc1Rlcm1pbmFsQmVnaW4oQnl0ZVRlcm0mIHRlcm0sIERpc2p1bmN0aW9uQ29udGV4
dCogY29udGV4dCkKICAgICB7Ci0gICAgICAgIEFTU0VSVCh0ZXJtLnR5cGUgPT0gQnl0ZVRlcm06
OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEJlZ2luKTsKLSAgICAgICAgQVNTRVJU
KHRlcm0uYXRvbS5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllckdyZWVkeSk7CisgICAgICAgIEFT
U0VSVCh0ZXJtLnR5cGUgPT0gQnl0ZVRlcm06OlR5cGU6OlBhcmVudGhlc2VzU3VicGF0dGVyblRl
cm1pbmFsQmVnaW4pOworICAgICAgICBBU1NFUlQodGVybS5hdG9tLnF1YW50aXR5VHlwZSA9PSBR
dWFudGlmaWVyVHlwZTo6R3JlZWR5KTsKICAgICAgICAgQVNTRVJUKHRlcm0uYXRvbS5xdWFudGl0
eU1heENvdW50ID09IHF1YW50aWZ5SW5maW5pdGUpOwogICAgICAgICBBU1NFUlQoIXRlcm0uY2Fw
dHVyZSgpKTsKIApAQCAtOTI3LDcgKzkyNyw3IEBAIGNsYXNzIEludGVycHJldGVyIHsKIAogICAg
IGJvb2wgbWF0Y2hQYXJlbnRoZXNlc1Rlcm1pbmFsRW5kKEJ5dGVUZXJtJiB0ZXJtLCBEaXNqdW5j
dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgewotICAgICAgICBBU1NFUlQodGVybS50eXBlID09
IEJ5dGVUZXJtOjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuVGVybWluYWxFbmQpOworICAgICAg
ICBBU1NFUlQodGVybS50eXBlID09IEJ5dGVUZXJtOjpUeXBlOjpQYXJlbnRoZXNlc1N1YnBhdHRl
cm5UZXJtaW5hbEVuZCk7CiAKICAgICAgICAgQmFja1RyYWNrSW5mb1BhcmVudGhlc2VzVGVybWlu
YWwqIGJhY2tUcmFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QmFja1RyYWNrSW5mb1BhcmVudGhlc2Vz
VGVybWluYWwqPihjb250ZXh0LT5mcmFtZSArIHRlcm0uZnJhbWVMb2NhdGlvbik7CiAgICAgICAg
IC8vIEVtcHR5IG1hdGNoIGlzIGEgZmFpbGVkIG1hdGNoLgpAQCAtOTQxLDggKzk0MSw4IEBAIGNs
YXNzIEludGVycHJldGVyIHsKIAogICAgIGJvb2wgYmFja3RyYWNrUGFyZW50aGVzZXNUZXJtaW5h
bEJlZ2luKEJ5dGVUZXJtJiB0ZXJtLCBEaXNqdW5jdGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAg
ewotICAgICAgICBBU1NFUlQodGVybS50eXBlID09IEJ5dGVUZXJtOjpUeXBlUGFyZW50aGVzZXNT
dWJwYXR0ZXJuVGVybWluYWxCZWdpbik7Ci0gICAgICAgIEFTU0VSVCh0ZXJtLmF0b20ucXVhbnRp
dHlUeXBlID09IFF1YW50aWZpZXJHcmVlZHkpOworICAgICAgICBBU1NFUlQodGVybS50eXBlID09
IEJ5dGVUZXJtOjpUeXBlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEJlZ2luKTsKKyAg
ICAgICAgQVNTRVJUKHRlcm0uYXRvbS5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllclR5cGU6Okdy
ZWVkeSk7CiAgICAgICAgIEFTU0VSVCh0ZXJtLmF0b20ucXVhbnRpdHlNYXhDb3VudCA9PSBxdWFu
dGlmeUluZmluaXRlKTsKICAgICAgICAgQVNTRVJUKCF0ZXJtLmNhcHR1cmUoKSk7CiAKQEAgLTk2
Miw3ICs5NjIsNyBAQCBjbGFzcyBJbnRlcnByZXRlciB7CiAKICAgICBib29sIG1hdGNoUGFyZW50
aGV0aWNhbEFzc2VydGlvbkJlZ2luKEJ5dGVUZXJtJiB0ZXJtLCBEaXNqdW5jdGlvbkNvbnRleHQq
IGNvbnRleHQpCiAgICAgewotICAgICAgICBBU1NFUlQodGVybS50eXBlID09IEJ5dGVUZXJtOjpU
eXBlUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luKTsKKyAgICAgICAgQVNTRVJUKHRlcm0udHlw
ZSA9PSBCeXRlVGVybTo6VHlwZTo6UGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luKTsKICAgICAg
ICAgQVNTRVJUKHRlcm0uYXRvbS5xdWFudGl0eU1heENvdW50ID09IDEpOwogCiAgICAgICAgIEJh
Y2tUcmFja0luZm9QYXJlbnRoZXRpY2FsQXNzZXJ0aW9uKiBiYWNrVHJhY2sgPSByZWludGVycHJl
dF9jYXN0PEJhY2tUcmFja0luZm9QYXJlbnRoZXRpY2FsQXNzZXJ0aW9uKj4oY29udGV4dC0+ZnJh
bWUgKyB0ZXJtLmZyYW1lTG9jYXRpb24pOwpAQCAtOTczLDcgKzk3Myw3IEBAIGNsYXNzIEludGVy
cHJldGVyIHsKIAogICAgIGJvb2wgbWF0Y2hQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uRW5kKEJ5dGVU
ZXJtJiB0ZXJtLCBEaXNqdW5jdGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgewotICAgICAgICBB
U1NFUlQodGVybS50eXBlID09IEJ5dGVUZXJtOjpUeXBlUGFyZW50aGV0aWNhbEFzc2VydGlvbkVu
ZCk7CisgICAgICAgIEFTU0VSVCh0ZXJtLnR5cGUgPT0gQnl0ZVRlcm06OlR5cGU6OlBhcmVudGhl
dGljYWxBc3NlcnRpb25FbmQpOwogICAgICAgICBBU1NFUlQodGVybS5hdG9tLnF1YW50aXR5TWF4
Q291bnQgPT0gMSk7CiAKICAgICAgICAgQmFja1RyYWNrSW5mb1BhcmVudGhldGljYWxBc3NlcnRp
b24qIGJhY2tUcmFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QmFja1RyYWNrSW5mb1BhcmVudGhldGlj
YWxBc3NlcnRpb24qPihjb250ZXh0LT5mcmFtZSArIHRlcm0uZnJhbWVMb2NhdGlvbik7CkBAIC05
OTEsNyArOTkxLDcgQEAgY2xhc3MgSW50ZXJwcmV0ZXIgewogCiAgICAgYm9vbCBiYWNrdHJhY2tQ
YXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW4oQnl0ZVRlcm0mIHRlcm0sIERpc2p1bmN0aW9uQ29u
dGV4dCogY29udGV4dCkKICAgICB7Ci0gICAgICAgIEFTU0VSVCh0ZXJtLnR5cGUgPT0gQnl0ZVRl
cm06OlR5cGVQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW4pOworICAgICAgICBBU1NFUlQodGVy
bS50eXBlID09IEJ5dGVUZXJtOjpUeXBlOjpQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW4pOwog
ICAgICAgICBBU1NFUlQodGVybS5hdG9tLnF1YW50aXR5TWF4Q291bnQgPT0gMSk7CiAKICAgICAg
ICAgLy8gV2UndmUgZmFpbGVkIHRvIG1hdGNoIHBhcmVuczsgaWYgdGhleSBhcmUgaW52ZXJ0ZWQs
IHRoaXMgaXMgd2luIQpAQCAtMTAwNSw3ICsxMDA1LDcgQEAgY2xhc3MgSW50ZXJwcmV0ZXIgewog
CiAgICAgYm9vbCBiYWNrdHJhY2tQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uRW5kKEJ5dGVUZXJtJiB0
ZXJtLCBEaXNqdW5jdGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgewotICAgICAgICBBU1NFUlQo
dGVybS50eXBlID09IEJ5dGVUZXJtOjpUeXBlUGFyZW50aGV0aWNhbEFzc2VydGlvbkVuZCk7Cisg
ICAgICAgIEFTU0VSVCh0ZXJtLnR5cGUgPT0gQnl0ZVRlcm06OlR5cGU6OlBhcmVudGhldGljYWxB
c3NlcnRpb25FbmQpOwogICAgICAgICBBU1NFUlQodGVybS5hdG9tLnF1YW50aXR5TWF4Q291bnQg
PT0gMSk7CiAKICAgICAgICAgQmFja1RyYWNrSW5mb1BhcmVudGhldGljYWxBc3NlcnRpb24qIGJh
Y2tUcmFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QmFja1RyYWNrSW5mb1BhcmVudGhldGljYWxBc3Nl
cnRpb24qPihjb250ZXh0LT5mcmFtZSArIHRlcm0uZnJhbWVMb2NhdGlvbik7CkBAIC0xMDE4LDcg
KzEwMTgsNyBAQCBjbGFzcyBJbnRlcnByZXRlciB7CiAKICAgICBKU1JlZ0V4cFJlc3VsdCBtYXRj
aFBhcmVudGhlc2VzKEJ5dGVUZXJtJiB0ZXJtLCBEaXNqdW5jdGlvbkNvbnRleHQqIGNvbnRleHQp
CiAgICAgewotICAgICAgICBBU1NFUlQodGVybS50eXBlID09IEJ5dGVUZXJtOjpUeXBlUGFyZW50
aGVzZXNTdWJwYXR0ZXJuKTsKKyAgICAgICAgQVNTRVJUKHRlcm0udHlwZSA9PSBCeXRlVGVybTo6
VHlwZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuKTsKIAogICAgICAgICBCYWNrVHJhY2tJbmZvUGFy
ZW50aGVzZXMqIGJhY2tUcmFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QmFja1RyYWNrSW5mb1BhcmVu
dGhlc2VzKj4oY29udGV4dC0+ZnJhbWUgKyB0ZXJtLmZyYW1lTG9jYXRpb24pOwogICAgICAgICBC
eXRlRGlzanVuY3Rpb24qIGRpc2p1bmN0aW9uQm9keSA9IHRlcm0uYXRvbS5wYXJlbnRoZXNlc0Rp
c2p1bmN0aW9uOwpAQCAtMTAyNyw3ICsxMDI3LDcgQEAgY2xhc3MgSW50ZXJwcmV0ZXIgewogICAg
ICAgICBiYWNrVHJhY2stPm1hdGNoQW1vdW50ID0gMDsKICAgICAgICAgYmFja1RyYWNrLT5sYXN0
Q29udGV4dCA9IG51bGxwdHI7CiAKLSAgICAgICAgQVNTRVJUKHRlcm0uYXRvbS5xdWFudGl0eVR5
cGUgIT0gUXVhbnRpZmllckZpeGVkQ291bnQgfHwgdGVybS5hdG9tLnF1YW50aXR5TWluQ291bnQg
PT0gdGVybS5hdG9tLnF1YW50aXR5TWF4Q291bnQpOworICAgICAgICBBU1NFUlQodGVybS5hdG9t
LnF1YW50aXR5VHlwZSAhPSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudCB8fCB0ZXJtLmF0b20u
cXVhbnRpdHlNaW5Db3VudCA9PSB0ZXJtLmF0b20ucXVhbnRpdHlNYXhDb3VudCk7CiAKICAgICAg
ICAgdW5zaWduZWQgbWluaW11bU1hdGNoQ291bnQgPSB0ZXJtLmF0b20ucXVhbnRpdHlNaW5Db3Vu
dDsKICAgICAgICAgSlNSZWdFeHBSZXN1bHQgZml4ZWRNYXRjaFJlc3VsdDsKQEAgLTEwMzksMTcg
KzEwMzksMTcgQEAgY2xhc3MgSW50ZXJwcmV0ZXIgewogICAgICAgICAgICAgICAgIC8vIFRyeSB0
byBkbyBhIG1hdGNoLCBhbmQgaXQgaXQgc3VjY2VlZHMsIGFkZCBpdCB0byB0aGUgbGlzdC4KICAg
ICAgICAgICAgICAgICBQYXJlbnRoZXNlc0Rpc2p1bmN0aW9uQ29udGV4dCogY29udGV4dCA9IGFs
bG9jUGFyZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRleHQoZGlzanVuY3Rpb25Cb2R5LCBvdXRwdXQs
IHRlcm0pOwogICAgICAgICAgICAgICAgIGZpeGVkTWF0Y2hSZXN1bHQgPSBtYXRjaERpc2p1bmN0
aW9uKGRpc2p1bmN0aW9uQm9keSwgY29udGV4dC0+Z2V0RGlzanVuY3Rpb25Db250ZXh0KHRlcm0p
KTsKLSAgICAgICAgICAgICAgICBpZiAoZml4ZWRNYXRjaFJlc3VsdCA9PSBKU1JlZ0V4cE1hdGNo
KQorICAgICAgICAgICAgICAgIGlmIChmaXhlZE1hdGNoUmVzdWx0ID09IEpTUmVnRXhwUmVzdWx0
OjpNYXRjaCkKICAgICAgICAgICAgICAgICAgICAgYXBwZW5kUGFyZW50aGVzZXNEaXNqdW5jdGlv
bkNvbnRleHQoYmFja1RyYWNrLCBjb250ZXh0KTsKICAgICAgICAgICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgICAgICAgICAgLy8gVGhlIG1hdGNoIGZhaWxlZDsgdHJ5IHRvIGZpbmQgYW4gYWx0
ZXJuYXRlIHBvaW50IHRvIGNhcnJ5IG9uIGZyb20uCiAgICAgICAgICAgICAgICAgICAgIHJlc2V0
TWF0Y2hlcyh0ZXJtLCBjb250ZXh0KTsKICAgICAgICAgICAgICAgICAgICAgZnJlZVBhcmVudGhl
c2VzRGlzanVuY3Rpb25Db250ZXh0KGNvbnRleHQpOwogICAgICAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKGZpeGVkTWF0Y2hSZXN1bHQgIT0gSlNSZWdFeHBOb01hdGNo
KQorICAgICAgICAgICAgICAgICAgICBpZiAoZml4ZWRNYXRjaFJlc3VsdCAhPSBKU1JlZ0V4cFJl
c3VsdDo6Tm9NYXRjaCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmaXhlZE1hdGNo
UmVzdWx0OwogICAgICAgICAgICAgICAgICAgICBKU1JlZ0V4cFJlc3VsdCBiYWNrdHJhY2tSZXN1
bHQgPSBwYXJlbnRoZXNlc0RvQmFja3RyYWNrKHRlcm0sIGJhY2tUcmFjayk7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChiYWNrdHJhY2tSZXN1bHQgIT0gSlNSZWdFeHBNYXRjaCkKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGJhY2t0cmFja1Jlc3VsdCAhPSBKU1JlZ0V4cFJlc3VsdDo6TWF0Y2gp
CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYmFja3RyYWNrUmVzdWx0OwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTEwNTksMjIgKzEwNTksMjIgQEAgY2xhc3Mg
SW50ZXJwcmV0ZXIgewogICAgICAgICB9CiAKICAgICAgICAgc3dpdGNoICh0ZXJtLmF0b20ucXVh
bnRpdHlUeXBlKSB7Ci0gICAgICAgIGNhc2UgUXVhbnRpZmllckZpeGVkQ291bnQ6IHsKKyAgICAg
ICAgY2FzZSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudDogewogICAgICAgICAgICAgQVNTRVJU
KGJhY2tUcmFjay0+bWF0Y2hBbW91bnQgPT0gdGVybS5hdG9tLnF1YW50aXR5TWF4Q291bnQpOwot
ICAgICAgICAgICAgcmV0dXJuIEpTUmVnRXhwTWF0Y2g7CisgICAgICAgICAgICByZXR1cm4gSlNS
ZWdFeHBSZXN1bHQ6Ok1hdGNoOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBRdWFudGlmaWVy
R3JlZWR5OiB7CisgICAgICAgIGNhc2UgUXVhbnRpZmllclR5cGU6OkdyZWVkeTogewogICAgICAg
ICAgICAgd2hpbGUgKGJhY2tUcmFjay0+bWF0Y2hBbW91bnQgPCB0ZXJtLmF0b20ucXVhbnRpdHlN
YXhDb3VudCkgewogICAgICAgICAgICAgICAgIFBhcmVudGhlc2VzRGlzanVuY3Rpb25Db250ZXh0
KiBjb250ZXh0ID0gYWxsb2NQYXJlbnRoZXNlc0Rpc2p1bmN0aW9uQ29udGV4dChkaXNqdW5jdGlv
bkJvZHksIG91dHB1dCwgdGVybSk7CiAgICAgICAgICAgICAgICAgSlNSZWdFeHBSZXN1bHQgcmVz
dWx0ID0gbWF0Y2hOb25aZXJvRGlzanVuY3Rpb24oZGlzanVuY3Rpb25Cb2R5LCBjb250ZXh0LT5n
ZXREaXNqdW5jdGlvbkNvbnRleHQodGVybSkpOwotICAgICAgICAgICAgICAgIGlmIChyZXN1bHQg
PT0gSlNSZWdFeHBNYXRjaCkKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IEpTUmVnRXhw
UmVzdWx0OjpNYXRjaCkKICAgICAgICAgICAgICAgICAgICAgYXBwZW5kUGFyZW50aGVzZXNEaXNq
dW5jdGlvbkNvbnRleHQoYmFja1RyYWNrLCBjb250ZXh0KTsKICAgICAgICAgICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgICAgICAgICAgcmVzZXRNYXRjaGVzKHRlcm0sIGNvbnRleHQpOwogICAg
ICAgICAgICAgICAgICAgICBmcmVlUGFyZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRleHQoY29udGV4
dCk7CiAKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBKU1JlZ0V4cE5vTWF0Y2gp
CisgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gSlNSZWdFeHBSZXN1bHQ6Ok5vTWF0
Y2gpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtMTA4NSwxNSArMTA4NSwxNSBAQCBjbGFzcyBJbnRlcnByZXRl
ciB7CiAgICAgICAgICAgICAgICAgUGFyZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRleHQqIGNvbnRl
eHQgPSBiYWNrVHJhY2stPmxhc3RDb250ZXh0OwogICAgICAgICAgICAgICAgIHJlY29yZFBhcmVu
dGhlc2VzTWF0Y2godGVybSwgY29udGV4dCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBy
ZXR1cm4gSlNSZWdFeHBNYXRjaDsKKyAgICAgICAgICAgIHJldHVybiBKU1JlZ0V4cFJlc3VsdDo6
TWF0Y2g7CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIFF1YW50aWZpZXJOb25HcmVlZHk6Ci0g
ICAgICAgICAgICByZXR1cm4gSlNSZWdFeHBNYXRjaDsKKyAgICAgICAgY2FzZSBRdWFudGlmaWVy
VHlwZTo6Tm9uR3JlZWR5OgorICAgICAgICAgICAgcmV0dXJuIEpTUmVnRXhwUmVzdWx0OjpNYXRj
aDsKICAgICAgICAgfQogCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIHJldHVybiBKU1JlZ0V4cEVycm9yTm9NYXRjaDsKKyAgICAgICAgcmV0dXJuIEpTUmVn
RXhwUmVzdWx0OjpFcnJvck5vTWF0Y2g7CiAgICAgfQogCiAgICAgLy8gUnVsZXMgZm9yIGJhY2t0
cmFja2luZyBkaWZmZXIgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhpcyBpcyBncmVlZHkgb3Igbm9u
LWdyZWVkeS4KQEAgLTExMDgsMTkgKzExMDgsMTkgQEAgY2xhc3MgSW50ZXJwcmV0ZXIgewogICAg
IC8vCiAgICAgSlNSZWdFeHBSZXN1bHQgYmFja3RyYWNrUGFyZW50aGVzZXMoQnl0ZVRlcm0mIHRl
cm0sIERpc2p1bmN0aW9uQ29udGV4dCogY29udGV4dCkKICAgICB7Ci0gICAgICAgIEFTU0VSVCh0
ZXJtLnR5cGUgPT0gQnl0ZVRlcm06OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm4pOworICAgICAg
ICBBU1NFUlQodGVybS50eXBlID09IEJ5dGVUZXJtOjpUeXBlOjpQYXJlbnRoZXNlc1N1YnBhdHRl
cm4pOwogCiAgICAgICAgIEJhY2tUcmFja0luZm9QYXJlbnRoZXNlcyogYmFja1RyYWNrID0gcmVp
bnRlcnByZXRfY2FzdDxCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXMqPihjb250ZXh0LT5mcmFtZSAr
IHRlcm0uZnJhbWVMb2NhdGlvbik7CiAgICAgICAgIEJ5dGVEaXNqdW5jdGlvbiogZGlzanVuY3Rp
b25Cb2R5ID0gdGVybS5hdG9tLnBhcmVudGhlc2VzRGlzanVuY3Rpb247CiAKICAgICAgICAgc3dp
dGNoICh0ZXJtLmF0b20ucXVhbnRpdHlUeXBlKSB7Ci0gICAgICAgIGNhc2UgUXVhbnRpZmllckZp
eGVkQ291bnQ6IHsKKyAgICAgICAgY2FzZSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudDogewog
ICAgICAgICAgICAgQVNTRVJUKGJhY2tUcmFjay0+bWF0Y2hBbW91bnQgPT0gdGVybS5hdG9tLnF1
YW50aXR5TWF4Q291bnQpOwogCiAgICAgICAgICAgICBQYXJlbnRoZXNlc0Rpc2p1bmN0aW9uQ29u
dGV4dCogY29udGV4dCA9IG51bGxwdHI7CiAgICAgICAgICAgICBKU1JlZ0V4cFJlc3VsdCByZXN1
bHQgPSBwYXJlbnRoZXNlc0RvQmFja3RyYWNrKHRlcm0sIGJhY2tUcmFjayk7CiAKLSAgICAgICAg
ICAgIGlmIChyZXN1bHQgIT0gSlNSZWdFeHBNYXRjaCkKKyAgICAgICAgICAgIGlmIChyZXN1bHQg
IT0gSlNSZWdFeHBSZXN1bHQ6Ok1hdGNoKQogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAKICAgICAgICAgICAgIC8vIFdoaWxlIHdlIGhhdmVuJ3QgeWV0IHJlYWNoZWQgb3VyIGZpeGVk
IGxpbWl0LApAQCAtMTEyOSwxNyArMTEyOSwxNyBAQCBjbGFzcyBJbnRlcnByZXRlciB7CiAgICAg
ICAgICAgICAgICAgY29udGV4dCA9IGFsbG9jUGFyZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRleHQo
ZGlzanVuY3Rpb25Cb2R5LCBvdXRwdXQsIHRlcm0pOwogICAgICAgICAgICAgICAgIHJlc3VsdCA9
IG1hdGNoRGlzanVuY3Rpb24oZGlzanVuY3Rpb25Cb2R5LCBjb250ZXh0LT5nZXREaXNqdW5jdGlv
bkNvbnRleHQodGVybSkpOwogCi0gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBKU1JlZ0V4
cE1hdGNoKQorICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gSlNSZWdFeHBSZXN1bHQ6Ok1h
dGNoKQogICAgICAgICAgICAgICAgICAgICBhcHBlbmRQYXJlbnRoZXNlc0Rpc2p1bmN0aW9uQ29u
dGV4dChiYWNrVHJhY2ssIGNvbnRleHQpOwogICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICAvLyBUaGUgbWF0Y2ggZmFpbGVkOyB0cnkgdG8gZmluZCBhbiBhbHRlcm5h
dGUgcG9pbnQgdG8gY2Fycnkgb24gZnJvbS4KICAgICAgICAgICAgICAgICAgICAgcmVzZXRNYXRj
aGVzKHRlcm0sIGNvbnRleHQpOwogICAgICAgICAgICAgICAgICAgICBmcmVlUGFyZW50aGVzZXNE
aXNqdW5jdGlvbkNvbnRleHQoY29udGV4dCk7CiAKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJl
c3VsdCAhPSBKU1JlZ0V4cE5vTWF0Y2gpCisgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQg
IT0gSlNSZWdFeHBSZXN1bHQ6Ok5vTWF0Y2gpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgICAgICAgICAgICAgICAgICBKU1JlZ0V4cFJlc3VsdCBiYWNrdHJhY2tS
ZXN1bHQgPSBwYXJlbnRoZXNlc0RvQmFja3RyYWNrKHRlcm0sIGJhY2tUcmFjayk7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChiYWNrdHJhY2tSZXN1bHQgIT0gSlNSZWdFeHBNYXRjaCkKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGJhY2t0cmFja1Jlc3VsdCAhPSBKU1JlZ0V4cFJlc3VsdDo6TWF0
Y2gpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYmFja3RyYWNrUmVzdWx0OwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTExNDcsMjYgKzExNDcsMjYgQEAgY2xh
c3MgSW50ZXJwcmV0ZXIgewogICAgICAgICAgICAgQVNTRVJUKGJhY2tUcmFjay0+bWF0Y2hBbW91
bnQgPT0gdGVybS5hdG9tLnF1YW50aXR5TWF4Q291bnQpOwogICAgICAgICAgICAgY29udGV4dCA9
IGJhY2tUcmFjay0+bGFzdENvbnRleHQ7CiAgICAgICAgICAgICByZWNvcmRQYXJlbnRoZXNlc01h
dGNoKHRlcm0sIGNvbnRleHQpOwotICAgICAgICAgICAgcmV0dXJuIEpTUmVnRXhwTWF0Y2g7Cisg
ICAgICAgICAgICByZXR1cm4gSlNSZWdFeHBSZXN1bHQ6Ok1hdGNoOwogICAgICAgICB9CiAKLSAg
ICAgICAgY2FzZSBRdWFudGlmaWVyR3JlZWR5OiB7CisgICAgICAgIGNhc2UgUXVhbnRpZmllclR5
cGU6OkdyZWVkeTogewogICAgICAgICAgICAgaWYgKCFiYWNrVHJhY2stPm1hdGNoQW1vdW50KQot
ICAgICAgICAgICAgICAgIHJldHVybiBKU1JlZ0V4cE5vTWF0Y2g7CisgICAgICAgICAgICAgICAg
cmV0dXJuIEpTUmVnRXhwUmVzdWx0OjpOb01hdGNoOwogCiAgICAgICAgICAgICBQYXJlbnRoZXNl
c0Rpc2p1bmN0aW9uQ29udGV4dCogY29udGV4dCA9IGJhY2tUcmFjay0+bGFzdENvbnRleHQ7CiAg
ICAgICAgICAgICBKU1JlZ0V4cFJlc3VsdCByZXN1bHQgPSBtYXRjaE5vblplcm9EaXNqdW5jdGlv
bihkaXNqdW5jdGlvbkJvZHksIGNvbnRleHQtPmdldERpc2p1bmN0aW9uQ29udGV4dCh0ZXJtKSwg
dHJ1ZSk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0ID09IEpTUmVnRXhwTWF0Y2gpIHsKKyAgICAg
ICAgICAgIGlmIChyZXN1bHQgPT0gSlNSZWdFeHBSZXN1bHQ6Ok1hdGNoKSB7CiAgICAgICAgICAg
ICAgICAgd2hpbGUgKGJhY2tUcmFjay0+bWF0Y2hBbW91bnQgPCB0ZXJtLmF0b20ucXVhbnRpdHlN
YXhDb3VudCkgewogICAgICAgICAgICAgICAgICAgICBQYXJlbnRoZXNlc0Rpc2p1bmN0aW9uQ29u
dGV4dCogY29udGV4dCA9IGFsbG9jUGFyZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRleHQoZGlzanVu
Y3Rpb25Cb2R5LCBvdXRwdXQsIHRlcm0pOwogICAgICAgICAgICAgICAgICAgICBKU1JlZ0V4cFJl
c3VsdCBwYXJlbnRoZXNlc1Jlc3VsdCA9IG1hdGNoTm9uWmVyb0Rpc2p1bmN0aW9uKGRpc2p1bmN0
aW9uQm9keSwgY29udGV4dC0+Z2V0RGlzanVuY3Rpb25Db250ZXh0KHRlcm0pKTsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHBhcmVudGhlc2VzUmVzdWx0ID09IEpTUmVnRXhwTWF0Y2gpCisgICAg
ICAgICAgICAgICAgICAgIGlmIChwYXJlbnRoZXNlc1Jlc3VsdCA9PSBKU1JlZ0V4cFJlc3VsdDo6
TWF0Y2gpCiAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRQYXJlbnRoZXNlc0Rpc2p1bmN0
aW9uQ29udGV4dChiYWNrVHJhY2ssIGNvbnRleHQpOwogICAgICAgICAgICAgICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0TWF0Y2hlcyh0ZXJtLCBjb250ZXh0KTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGZyZWVQYXJlbnRoZXNlc0Rpc2p1bmN0aW9uQ29udGV4
dChjb250ZXh0KTsKIAotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudGhlc2VzUmVz
dWx0ICE9IEpTUmVnRXhwTm9NYXRjaCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJl
bnRoZXNlc1Jlc3VsdCAhPSBKU1JlZ0V4cFJlc3VsdDo6Tm9NYXRjaCkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gcGFyZW50aGVzZXNSZXN1bHQ7CiAKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtMTE4OSw3ICsxMTg5LDcgQEAgY2xhc3MgSW50ZXJwcmV0ZXIg
ewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gSlNSZWdFeHBOb01hdGNoKQorICAgICAg
ICAgICAgICAgIGlmIChyZXN1bHQgIT0gSlNSZWdFeHBSZXN1bHQ6Ok5vTWF0Y2gpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9CiAKQEAgLTExOTcsMjQg
KzExOTcsMjQgQEAgY2xhc3MgSW50ZXJwcmV0ZXIgewogICAgICAgICAgICAgICAgIFBhcmVudGhl
c2VzRGlzanVuY3Rpb25Db250ZXh0KiBjb250ZXh0ID0gYmFja1RyYWNrLT5sYXN0Q29udGV4dDsK
ICAgICAgICAgICAgICAgICByZWNvcmRQYXJlbnRoZXNlc01hdGNoKHRlcm0sIGNvbnRleHQpOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIEpTUmVnRXhwTWF0Y2g7CisgICAgICAg
ICAgICByZXR1cm4gSlNSZWdFeHBSZXN1bHQ6Ok1hdGNoOwogICAgICAgICB9CiAKLSAgICAgICAg
Y2FzZSBRdWFudGlmaWVyTm9uR3JlZWR5OiB7CisgICAgICAgIGNhc2UgUXVhbnRpZmllclR5cGU6
Ok5vbkdyZWVkeTogewogICAgICAgICAgICAgLy8gSWYgd2UndmUgbm90IHJlYWNoZWQgdGhlIGxp
bWl0LCB0cnkgdG8gYWRkIG9uZSBtb3JlIG1hdGNoLgogICAgICAgICAgICAgaWYgKGJhY2tUcmFj
ay0+bWF0Y2hBbW91bnQgPCB0ZXJtLmF0b20ucXVhbnRpdHlNYXhDb3VudCkgewogICAgICAgICAg
ICAgICAgIFBhcmVudGhlc2VzRGlzanVuY3Rpb25Db250ZXh0KiBjb250ZXh0ID0gYWxsb2NQYXJl
bnRoZXNlc0Rpc2p1bmN0aW9uQ29udGV4dChkaXNqdW5jdGlvbkJvZHksIG91dHB1dCwgdGVybSk7
CiAgICAgICAgICAgICAgICAgSlNSZWdFeHBSZXN1bHQgcmVzdWx0ID0gbWF0Y2hOb25aZXJvRGlz
anVuY3Rpb24oZGlzanVuY3Rpb25Cb2R5LCBjb250ZXh0LT5nZXREaXNqdW5jdGlvbkNvbnRleHQo
dGVybSkpOwotICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gSlNSZWdFeHBNYXRjaCkgewor
ICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gSlNSZWdFeHBSZXN1bHQ6Ok1hdGNoKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGFwcGVuZFBhcmVudGhlc2VzRGlzanVuY3Rpb25Db250ZXh0KGJh
Y2tUcmFjaywgY29udGV4dCk7CiAgICAgICAgICAgICAgICAgICAgIHJlY29yZFBhcmVudGhlc2Vz
TWF0Y2godGVybSwgY29udGV4dCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1JlZ0V4
cE1hdGNoOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNSZWdFeHBSZXN1bHQ6Ok1hdGNo
OwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIHJlc2V0TWF0Y2hlcyh0ZXJt
LCBjb250ZXh0KTsKICAgICAgICAgICAgICAgICBmcmVlUGFyZW50aGVzZXNEaXNqdW5jdGlvbkNv
bnRleHQoY29udGV4dCk7CiAKLSAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IEpTUmVnRXhw
Tm9NYXRjaCkKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IEpTUmVnRXhwUmVzdWx0OjpO
b01hdGNoKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAg
fQogCkBAIC0xMjIyLDEzICsxMjIyLDEzIEBAIGNsYXNzIEludGVycHJldGVyIHsKICAgICAgICAg
ICAgIHdoaWxlIChiYWNrVHJhY2stPm1hdGNoQW1vdW50KSB7CiAgICAgICAgICAgICAgICAgUGFy
ZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRleHQqIGNvbnRleHQgPSBiYWNrVHJhY2stPmxhc3RDb250
ZXh0OwogICAgICAgICAgICAgICAgIEpTUmVnRXhwUmVzdWx0IHJlc3VsdCA9IG1hdGNoTm9uWmVy
b0Rpc2p1bmN0aW9uKGRpc2p1bmN0aW9uQm9keSwgY29udGV4dC0+Z2V0RGlzanVuY3Rpb25Db250
ZXh0KHRlcm0pLCB0cnVlKTsKLSAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IEpTUmVnRXhw
TWF0Y2gpIHsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IEpTUmVnRXhwUmVzdWx0OjpN
YXRjaCkgewogICAgICAgICAgICAgICAgICAgICAvLyBzdWNjZXNzZnVsIGJhY2t0cmFjayEgd2Un
cmUgYmFjayBpbiB0aGUgZ2FtZSEKICAgICAgICAgICAgICAgICAgICAgaWYgKGJhY2tUcmFjay0+
bWF0Y2hBbW91bnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQgPSBiYWNrVHJh
Y2stPmxhc3RDb250ZXh0OwogICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkUGFyZW50aGVz
ZXNNYXRjaCh0ZXJtLCBjb250ZXh0KTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gSlNSZWdFeHBNYXRjaDsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEpTUmVnRXhwUmVzdWx0OjpNYXRjaDsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgICAgICAvLyBwb3AgYSBtYXRjaCBvZmYgdGhlIHN0YWNrCkBAIC0xMjM2LDE2ICsxMjM2LDE2
IEBAIGNsYXNzIEludGVycHJldGVyIHsKICAgICAgICAgICAgICAgICBwb3BQYXJlbnRoZXNlc0Rp
c2p1bmN0aW9uQ29udGV4dChiYWNrVHJhY2spOwogICAgICAgICAgICAgICAgIGZyZWVQYXJlbnRo
ZXNlc0Rpc2p1bmN0aW9uQ29udGV4dChjb250ZXh0KTsKIAotICAgICAgICAgICAgICAgIGlmIChy
ZXN1bHQgIT0gSlNSZWdFeHBOb01hdGNoKQorICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0g
SlNSZWdFeHBSZXN1bHQ6Ok5vTWF0Y2gpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHJldHVybiBKU1JlZ0V4cE5vTWF0Y2g7
CisgICAgICAgICAgICByZXR1cm4gSlNSZWdFeHBSZXN1bHQ6Ok5vTWF0Y2g7CiAgICAgICAgIH0K
ICAgICAgICAgfQogCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgIHJldHVybiBKU1JlZ0V4cEVycm9yTm9NYXRjaDsKKyAgICAgICAgcmV0dXJuIEpTUmVnRXhw
UmVzdWx0OjpFcnJvck5vTWF0Y2g7CiAgICAgfQogCiAgICAgYm9vbCBtYXRjaERvdFN0YXJFbmNs
b3N1cmUoQnl0ZVRlcm0mIHRlcm0sIERpc2p1bmN0aW9uQ29udGV4dCogY29udGV4dCkKQEAgLTEy
OTMsMTAgKzEyOTMsMTAgQEAgY2xhc3MgSW50ZXJwcmV0ZXIgewogICAgIEpTUmVnRXhwUmVzdWx0
IG1hdGNoRGlzanVuY3Rpb24oQnl0ZURpc2p1bmN0aW9uKiBkaXNqdW5jdGlvbiwgRGlzanVuY3Rp
b25Db250ZXh0KiBjb250ZXh0LCBib29sIGJ0cmFjayA9IGZhbHNlKQogICAgIHsKICAgICAgICAg
aWYgKFVOTElLRUxZKCFpc1NhZmVUb1JlY3Vyc2UoKSkpCi0gICAgICAgICAgICByZXR1cm4gSlNS
ZWdFeHBFcnJvck5vTWVtb3J5OworICAgICAgICAgICAgcmV0dXJuIEpTUmVnRXhwUmVzdWx0OjpF
cnJvck5vTWVtb3J5OwogCiAgICAgICAgIGlmICghLS1yZW1haW5pbmdNYXRjaENvdW50KQotICAg
ICAgICAgICAgcmV0dXJuIEpTUmVnRXhwRXJyb3JIaXRMaW1pdDsKKyAgICAgICAgICAgIHJldHVy
biBKU1JlZ0V4cFJlc3VsdDo6RXJyb3JIaXRMaW1pdDsKIAogICAgICAgICBpZiAoYnRyYWNrKQog
ICAgICAgICAgICAgQkFDS1RSQUNLKCk7CkBAIC0xMzA4LDIzICsxMzA4LDIzIEBAIGNsYXNzIElu
dGVycHJldGVyIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQtPnRlcm0gPCBzdGF0aWNfY2FzdDxp
bnQ+KGRpc2p1bmN0aW9uLT50ZXJtcy5zaXplKCkpKTsKIAogICAgICAgICBzd2l0Y2ggKGN1cnJl
bnRUZXJtKCkudHlwZSkgewotICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlU3VicGF0dGVybkJl
Z2luOgorICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlOjpTdWJwYXR0ZXJuQmVnaW46CiAgICAg
ICAgICAgICBNQVRDSF9ORVhUKCk7Ci0gICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVTdWJwYXR0
ZXJuRW5kOgorICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlOjpTdWJwYXR0ZXJuRW5kOgogICAg
ICAgICAgICAgY29udGV4dC0+bWF0Y2hFbmQgPSBpbnB1dC5nZXRQb3MoKTsKLSAgICAgICAgICAg
IHJldHVybiBKU1JlZ0V4cE1hdGNoOworICAgICAgICAgICAgcmV0dXJuIEpTUmVnRXhwUmVzdWx0
OjpNYXRjaDsKIAotICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlQm9keUFsdGVybmF0aXZlQmVn
aW46CisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGU6OkJvZHlBbHRlcm5hdGl2ZUJlZ2luOgog
ICAgICAgICAgICAgTUFUQ0hfTkVYVCgpOwotICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlQm9k
eUFsdGVybmF0aXZlRGlzanVuY3Rpb246Ci0gICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVCb2R5
QWx0ZXJuYXRpdmVFbmQ6CisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGU6OkJvZHlBbHRlcm5h
dGl2ZURpc2p1bmN0aW9uOgorICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlOjpCb2R5QWx0ZXJu
YXRpdmVFbmQ6CiAgICAgICAgICAgICBjb250ZXh0LT5tYXRjaEVuZCA9IGlucHV0LmdldFBvcygp
OwotICAgICAgICAgICAgcmV0dXJuIEpTUmVnRXhwTWF0Y2g7CisgICAgICAgICAgICByZXR1cm4g
SlNSZWdFeHBSZXN1bHQ6Ok1hdGNoOwogCi0gICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVBbHRl
cm5hdGl2ZUJlZ2luOgorICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlOjpBbHRlcm5hdGl2ZUJl
Z2luOgogICAgICAgICAgICAgTUFUQ0hfTkVYVCgpOwotICAgICAgICBjYXNlIEJ5dGVUZXJtOjpU
eXBlQWx0ZXJuYXRpdmVEaXNqdW5jdGlvbjoKLSAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZUFs
dGVybmF0aXZlRW5kOiB7CisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGU6OkFsdGVybmF0aXZl
RGlzanVuY3Rpb246CisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGU6OkFsdGVybmF0aXZlRW5k
OiB7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gY3VycmVudFRlcm0oKS5hbHRlcm5hdGl2ZS5l
bmQ7CiAgICAgICAgICAgICBCYWNrVHJhY2tJbmZvQWx0ZXJuYXRpdmUqIGJhY2tUcmFjayA9IHJl
aW50ZXJwcmV0X2Nhc3Q8QmFja1RyYWNrSW5mb0FsdGVybmF0aXZlKj4oY29udGV4dC0+ZnJhbWUg
KyBjdXJyZW50VGVybSgpLmZyYW1lTG9jYXRpb24pOwogICAgICAgICAgICAgYmFja1RyYWNrLT5v
ZmZzZXQgPSBvZmZzZXQ7CkBAIC0xMzMyLDIxICsxMzMyLDIxIEBAIGNsYXNzIEludGVycHJldGVy
IHsKICAgICAgICAgICAgIE1BVENIX05FWFQoKTsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2Ug
Qnl0ZVRlcm06OlR5cGVBc3NlcnRpb25CT0w6CisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGU6
OkFzc2VydGlvbkJPTDoKICAgICAgICAgICAgIGlmIChtYXRjaEFzc2VydGlvbkJPTChjdXJyZW50
VGVybSgpKSkKICAgICAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7CiAgICAgICAgICAgICBCQUNL
VFJBQ0soKTsKLSAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZUFzc2VydGlvbkVPTDoKKyAgICAg
ICAgY2FzZSBCeXRlVGVybTo6VHlwZTo6QXNzZXJ0aW9uRU9MOgogICAgICAgICAgICAgaWYgKG1h
dGNoQXNzZXJ0aW9uRU9MKGN1cnJlbnRUZXJtKCkpKQogICAgICAgICAgICAgICAgIE1BVENIX05F
WFQoKTsKICAgICAgICAgICAgIEJBQ0tUUkFDSygpOwotICAgICAgICBjYXNlIEJ5dGVUZXJtOjpU
eXBlQXNzZXJ0aW9uV29yZEJvdW5kYXJ5OgorICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlOjpB
c3NlcnRpb25Xb3JkQm91bmRhcnk6CiAgICAgICAgICAgICBpZiAobWF0Y2hBc3NlcnRpb25Xb3Jk
Qm91bmRhcnkoY3VycmVudFRlcm0oKSkpCiAgICAgICAgICAgICAgICAgTUFUQ0hfTkVYVCgpOwog
ICAgICAgICAgICAgQkFDS1RSQUNLKCk7CiAKLSAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBh
dHRlcm5DaGFyYWN0ZXJPbmNlOgotICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGF0dGVybkNo
YXJhY3RlckZpeGVkOiB7CisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGU6OlBhdHRlcm5DaGFy
YWN0ZXJPbmNlOgorICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlOjpQYXR0ZXJuQ2hhcmFjdGVy
Rml4ZWQ6IHsKICAgICAgICAgICAgIGlmICh1bmljb2RlKSB7CiAgICAgICAgICAgICAgICAgaWYg
KCFVX0lTX0JNUChjdXJyZW50VGVybSgpLmF0b20ucGF0dGVybkNoYXJhY3RlcikpIHsKICAgICAg
ICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBtYXRjaEFtb3VudCA9IDA7IG1hdGNoQW1vdW50
IDwgY3VycmVudFRlcm0oKS5hdG9tLnF1YW50aXR5TWF4Q291bnQ7ICsrbWF0Y2hBbW91bnQpIHsK
QEAgLTEzNjcsNyArMTM2Nyw3IEBAIGNsYXNzIEludGVycHJldGVyIHsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIE1BVENIX05FWFQoKTsKICAgICAgICAgfQotICAgICAgICBjYXNlIEJ5dGVU
ZXJtOjpUeXBlUGF0dGVybkNoYXJhY3RlckdyZWVkeTogeworICAgICAgICBjYXNlIEJ5dGVUZXJt
OjpUeXBlOjpQYXR0ZXJuQ2hhcmFjdGVyR3JlZWR5OiB7CiAgICAgICAgICAgICBCYWNrVHJhY2tJ
bmZvUGF0dGVybkNoYXJhY3RlciogYmFja1RyYWNrID0gcmVpbnRlcnByZXRfY2FzdDxCYWNrVHJh
Y2tJbmZvUGF0dGVybkNoYXJhY3Rlcio+KGNvbnRleHQtPmZyYW1lICsgY3VycmVudFRlcm0oKS5m
cmFtZUxvY2F0aW9uKTsKICAgICAgICAgICAgIHVuc2lnbmVkIG1hdGNoQW1vdW50ID0gMDsKICAg
ICAgICAgICAgIHVuc2lnbmVkIHBvc2l0aW9uID0gaW5wdXQuZ2V0UG9zKCk7IC8vIE1heSBuZWVk
IHRvIGJhY2sgb3V0IHJlYWRpbmcgYSBzdXJyb2dhdGUgcGFpci4KQEAgLTEzODMsMTcgKzEzODMs
MTcgQEAgY2xhc3MgSW50ZXJwcmV0ZXIgewogCiAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7CiAg
ICAgICAgIH0KLSAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhdHRlcm5DaGFyYWN0ZXJOb25H
cmVlZHk6IHsKKyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZTo6UGF0dGVybkNoYXJhY3Rlck5v
bkdyZWVkeTogewogICAgICAgICAgICAgQmFja1RyYWNrSW5mb1BhdHRlcm5DaGFyYWN0ZXIqIGJh
Y2tUcmFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QmFja1RyYWNrSW5mb1BhdHRlcm5DaGFyYWN0ZXIq
Pihjb250ZXh0LT5mcmFtZSArIGN1cnJlbnRUZXJtKCkuZnJhbWVMb2NhdGlvbik7CiAgICAgICAg
ICAgICBiYWNrVHJhY2stPmJlZ2luID0gaW5wdXQuZ2V0UG9zKCk7CiAgICAgICAgICAgICBiYWNr
VHJhY2stPm1hdGNoQW1vdW50ID0gMDsKICAgICAgICAgICAgIE1BVENIX05FWFQoKTsKICAgICAg
ICAgfQogCi0gICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXR0ZXJuQ2FzZWRDaGFyYWN0ZXJP
bmNlOgotICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGF0dGVybkNhc2VkQ2hhcmFjdGVyRml4
ZWQ6IHsKKyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZTo6UGF0dGVybkNhc2VkQ2hhcmFjdGVy
T25jZToKKyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZTo6UGF0dGVybkNhc2VkQ2hhcmFjdGVy
Rml4ZWQ6IHsKICAgICAgICAgICAgIGlmICh1bmljb2RlKSB7Ci0gICAgICAgICAgICAgICAgLy8g
Q2FzZSBpbnNlbnNpdGl2ZSBtYXRjaGluZyBvZiB1bmljb2RlIGNoYXJhY3RlcnMgaXMgaGFuZGxl
ZCBhcyBUeXBlQ2hhcmFjdGVyQ2xhc3MuCisgICAgICAgICAgICAgICAgLy8gQ2FzZSBpbnNlbnNp
dGl2ZSBtYXRjaGluZyBvZiB1bmljb2RlIGNoYXJhY3RlcnMgaXMgaGFuZGxlZCBhcyBUeXBlOjpD
aGFyYWN0ZXJDbGFzcy4KICAgICAgICAgICAgICAgICBBU1NFUlQoVV9JU19CTVAoY3VycmVudFRl
cm0oKS5hdG9tLnBhdHRlcm5DaGFyYWN0ZXIpKTsKIAogICAgICAgICAgICAgICAgIHVuc2lnbmVk
IHBvc2l0aW9uID0gaW5wdXQuZ2V0UG9zKCk7IC8vIE1heSBuZWVkIHRvIGJhY2sgb3V0IHJlYWRp
bmcgYSBzdXJyb2dhdGUgcGFpci4KQEAgLTE0MTMsMTAgKzE0MTMsMTAgQEAgY2xhc3MgSW50ZXJw
cmV0ZXIgewogICAgICAgICAgICAgfQogICAgICAgICAgICAgTUFUQ0hfTkVYVCgpOwogICAgICAg
ICB9Ci0gICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXR0ZXJuQ2FzZWRDaGFyYWN0ZXJHcmVl
ZHk6IHsKKyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZTo6UGF0dGVybkNhc2VkQ2hhcmFjdGVy
R3JlZWR5OiB7CiAgICAgICAgICAgICBCYWNrVHJhY2tJbmZvUGF0dGVybkNoYXJhY3RlciogYmFj
a1RyYWNrID0gcmVpbnRlcnByZXRfY2FzdDxCYWNrVHJhY2tJbmZvUGF0dGVybkNoYXJhY3Rlcio+
KGNvbnRleHQtPmZyYW1lICsgY3VycmVudFRlcm0oKS5mcmFtZUxvY2F0aW9uKTsKIAotICAgICAg
ICAgICAgLy8gQ2FzZSBpbnNlbnNpdGl2ZSBtYXRjaGluZyBvZiB1bmljb2RlIGNoYXJhY3RlcnMg
aXMgaGFuZGxlZCBhcyBUeXBlQ2hhcmFjdGVyQ2xhc3MuCisgICAgICAgICAgICAvLyBDYXNlIGlu
c2Vuc2l0aXZlIG1hdGNoaW5nIG9mIHVuaWNvZGUgY2hhcmFjdGVycyBpcyBoYW5kbGVkIGFzIFR5
cGU6OkNoYXJhY3RlckNsYXNzLgogICAgICAgICAgICAgQVNTRVJUKCF1bmljb2RlIHx8IFVfSVNf
Qk1QKGN1cnJlbnRUZXJtKCkuYXRvbS5wYXR0ZXJuQ2hhcmFjdGVyKSk7CiAKICAgICAgICAgICAg
IHVuc2lnbmVkIG1hdGNoQW1vdW50ID0gMDsKQEAgLTE0MzEsNzEgKzE0MzEsNzEgQEAgY2xhc3Mg
SW50ZXJwcmV0ZXIgewogCiAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7CiAgICAgICAgIH0KLSAg
ICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhdHRlcm5DYXNlZENoYXJhY3Rlck5vbkdyZWVkeTog
eworICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlOjpQYXR0ZXJuQ2FzZWRDaGFyYWN0ZXJOb25H
cmVlZHk6IHsKICAgICAgICAgICAgIEJhY2tUcmFja0luZm9QYXR0ZXJuQ2hhcmFjdGVyKiBiYWNr
VHJhY2sgPSByZWludGVycHJldF9jYXN0PEJhY2tUcmFja0luZm9QYXR0ZXJuQ2hhcmFjdGVyKj4o
Y29udGV4dC0+ZnJhbWUgKyBjdXJyZW50VGVybSgpLmZyYW1lTG9jYXRpb24pOwogCi0gICAgICAg
ICAgICAvLyBDYXNlIGluc2Vuc2l0aXZlIG1hdGNoaW5nIG9mIHVuaWNvZGUgY2hhcmFjdGVycyBp
cyBoYW5kbGVkIGFzIFR5cGVDaGFyYWN0ZXJDbGFzcy4KKyAgICAgICAgICAgIC8vIENhc2UgaW5z
ZW5zaXRpdmUgbWF0Y2hpbmcgb2YgdW5pY29kZSBjaGFyYWN0ZXJzIGlzIGhhbmRsZWQgYXMgVHlw
ZTo6Q2hhcmFjdGVyQ2xhc3MuCiAgICAgICAgICAgICBBU1NFUlQoIXVuaWNvZGUgfHwgVV9JU19C
TVAoY3VycmVudFRlcm0oKS5hdG9tLnBhdHRlcm5DaGFyYWN0ZXIpKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgYmFja1RyYWNrLT5tYXRjaEFtb3VudCA9IDA7CiAgICAgICAgICAgICBNQVRD
SF9ORVhUKCk7CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlQ2hhcmFj
dGVyQ2xhc3M6CisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGU6OkNoYXJhY3RlckNsYXNzOgog
ICAgICAgICAgICAgaWYgKG1hdGNoQ2hhcmFjdGVyQ2xhc3MoY3VycmVudFRlcm0oKSwgY29udGV4
dCkpCiAgICAgICAgICAgICAgICAgTUFUQ0hfTkVYVCgpOwogICAgICAgICAgICAgQkFDS1RSQUNL
KCk7Ci0gICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVCYWNrUmVmZXJlbmNlOgorICAgICAgICBj
YXNlIEJ5dGVUZXJtOjpUeXBlOjpCYWNrUmVmZXJlbmNlOgogICAgICAgICAgICAgaWYgKG1hdGNo
QmFja1JlZmVyZW5jZShjdXJyZW50VGVybSgpLCBjb250ZXh0KSkKICAgICAgICAgICAgICAgICBN
QVRDSF9ORVhUKCk7CiAgICAgICAgICAgICBCQUNLVFJBQ0soKTsKLSAgICAgICAgY2FzZSBCeXRl
VGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVybjogeworICAgICAgICBjYXNlIEJ5dGVUZXJt
OjpUeXBlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm46IHsKICAgICAgICAgICAgIEpTUmVnRXhwUmVz
dWx0IHJlc3VsdCA9IG1hdGNoUGFyZW50aGVzZXMoY3VycmVudFRlcm0oKSwgY29udGV4dCk7CiAK
LSAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gSlNSZWdFeHBNYXRjaCkgeworICAgICAgICAgICAg
aWYgKHJlc3VsdCA9PSBKU1JlZ0V4cFJlc3VsdDo6TWF0Y2gpIHsKICAgICAgICAgICAgICAgICBN
QVRDSF9ORVhUKCk7Ci0gICAgICAgICAgICB9ICBlbHNlIGlmIChyZXN1bHQgIT0gSlNSZWdFeHBO
b01hdGNoKQorICAgICAgICAgICAgfSAgZWxzZSBpZiAocmVzdWx0ICE9IEpTUmVnRXhwUmVzdWx0
OjpOb01hdGNoKQogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAgICAgICAgICAg
IEJBQ0tUUkFDSygpOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXJl
bnRoZXNlc1N1YnBhdHRlcm5PbmNlQmVnaW46CisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGU6
OlBhcmVudGhlc2VzU3VicGF0dGVybk9uY2VCZWdpbjoKICAgICAgICAgICAgIGlmIChtYXRjaFBh
cmVudGhlc2VzT25jZUJlZ2luKGN1cnJlbnRUZXJtKCksIGNvbnRleHQpKQogICAgICAgICAgICAg
ICAgIE1BVENIX05FWFQoKTsKICAgICAgICAgICAgIEJBQ0tUUkFDSygpOwotICAgICAgICBjYXNl
IEJ5dGVUZXJtOjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUVuZDoKKyAgICAgICAgY2Fz
ZSBCeXRlVGVybTo6VHlwZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUVuZDoKICAgICAgICAg
ICAgIGlmIChtYXRjaFBhcmVudGhlc2VzT25jZUVuZChjdXJyZW50VGVybSgpLCBjb250ZXh0KSkK
ICAgICAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7CiAgICAgICAgICAgICBCQUNLVFJBQ0soKTsK
LSAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVyblRlcm1pbmFs
QmVnaW46CisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGU6OlBhcmVudGhlc2VzU3VicGF0dGVy
blRlcm1pbmFsQmVnaW46CiAgICAgICAgICAgICBpZiAobWF0Y2hQYXJlbnRoZXNlc1Rlcm1pbmFs
QmVnaW4oY3VycmVudFRlcm0oKSwgY29udGV4dCkpCiAgICAgICAgICAgICAgICAgTUFUQ0hfTkVY
VCgpOwogICAgICAgICAgICAgQkFDS1RSQUNLKCk7Ci0gICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5
cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEVuZDoKKyAgICAgICAgY2FzZSBCeXRlVGVy
bTo6VHlwZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuVGVybWluYWxFbmQ6CiAgICAgICAgICAgICBp
ZiAobWF0Y2hQYXJlbnRoZXNlc1Rlcm1pbmFsRW5kKGN1cnJlbnRUZXJtKCksIGNvbnRleHQpKQog
ICAgICAgICAgICAgICAgIE1BVENIX05FWFQoKTsKICAgICAgICAgICAgIEJBQ0tUUkFDSygpOwot
ICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luOgor
ICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlOjpQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW46
CiAgICAgICAgICAgICBpZiAobWF0Y2hQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW4oY3VycmVu
dFRlcm0oKSwgY29udGV4dCkpCiAgICAgICAgICAgICAgICAgTUFUQ0hfTkVYVCgpOwogICAgICAg
ICAgICAgQkFDS1RSQUNLKCk7Ci0gICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXJlbnRoZXRp
Y2FsQXNzZXJ0aW9uRW5kOgorICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlOjpQYXJlbnRoZXRp
Y2FsQXNzZXJ0aW9uRW5kOgogICAgICAgICAgICAgaWYgKG1hdGNoUGFyZW50aGV0aWNhbEFzc2Vy
dGlvbkVuZChjdXJyZW50VGVybSgpLCBjb250ZXh0KSkKICAgICAgICAgICAgICAgICBNQVRDSF9O
RVhUKCk7CiAgICAgICAgICAgICBCQUNLVFJBQ0soKTsKIAotICAgICAgICBjYXNlIEJ5dGVUZXJt
OjpUeXBlQ2hlY2tJbnB1dDoKKyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZTo6Q2hlY2tJbnB1
dDoKICAgICAgICAgICAgIGlmIChpbnB1dC5jaGVja0lucHV0KGN1cnJlbnRUZXJtKCkuY2hlY2tJ
bnB1dENvdW50KSkKICAgICAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7CiAgICAgICAgICAgICBC
QUNLVFJBQ0soKTsKIAotICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlVW5jaGVja0lucHV0Ogor
ICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlOjpVbmNoZWNrSW5wdXQ6CiAgICAgICAgICAgICBp
bnB1dC51bmNoZWNrSW5wdXQoY3VycmVudFRlcm0oKS5jaGVja0lucHV0Q291bnQpOwogICAgICAg
ICAgICAgTUFUQ0hfTkVYVCgpOwogICAgICAgICAgICAgICAgIAotICAgICAgICBjYXNlIEJ5dGVU
ZXJtOjpUeXBlRG90U3RhckVuY2xvc3VyZToKKyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZTo6
RG90U3RhckVuY2xvc3VyZToKICAgICAgICAgICAgIGlmIChtYXRjaERvdFN0YXJFbmNsb3N1cmUo
Y3VycmVudFRlcm0oKSwgY29udGV4dCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEpTUmVnRXhw
TWF0Y2g7CisgICAgICAgICAgICAgICAgcmV0dXJuIEpTUmVnRXhwUmVzdWx0OjpNYXRjaDsKICAg
ICAgICAgICAgIEJBQ0tUUkFDSygpOwogICAgICAgICB9CiAKQEAgLTE1MDYsMjAgKzE1MDYsMjAg
QEAgY2xhc3MgSW50ZXJwcmV0ZXIgewogICAgICAgICBBU1NFUlQoY29udGV4dC0+dGVybSA8IHN0
YXRpY19jYXN0PGludD4oZGlzanVuY3Rpb24tPnRlcm1zLnNpemUoKSkpOwogCiAgICAgICAgIHN3
aXRjaCAoY3VycmVudFRlcm0oKS50eXBlKSB7Ci0gICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVT
dWJwYXR0ZXJuQmVnaW46Ci0gICAgICAgICAgICByZXR1cm4gSlNSZWdFeHBOb01hdGNoOwotICAg
ICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlU3VicGF0dGVybkVuZDoKKyAgICAgICAgY2FzZSBCeXRl
VGVybTo6VHlwZTo6U3VicGF0dGVybkJlZ2luOgorICAgICAgICAgICAgcmV0dXJuIEpTUmVnRXhw
UmVzdWx0OjpOb01hdGNoOworICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlOjpTdWJwYXR0ZXJu
RW5kOgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIAotICAgICAg
ICBjYXNlIEJ5dGVUZXJtOjpUeXBlQm9keUFsdGVybmF0aXZlQmVnaW46Ci0gICAgICAgIGNhc2Ug
Qnl0ZVRlcm06OlR5cGVCb2R5QWx0ZXJuYXRpdmVEaXNqdW5jdGlvbjogeworICAgICAgICBjYXNl
IEJ5dGVUZXJtOjpUeXBlOjpCb2R5QWx0ZXJuYXRpdmVCZWdpbjoKKyAgICAgICAgY2FzZSBCeXRl
VGVybTo6VHlwZTo6Qm9keUFsdGVybmF0aXZlRGlzanVuY3Rpb246IHsKICAgICAgICAgICAgIGlu
dCBvZmZzZXQgPSBjdXJyZW50VGVybSgpLmFsdGVybmF0aXZlLm5leHQ7CiAgICAgICAgICAgICBj
b250ZXh0LT50ZXJtICs9IG9mZnNldDsKICAgICAgICAgICAgIGlmIChvZmZzZXQgPiAwKQogICAg
ICAgICAgICAgICAgIE1BVENIX05FWFQoKTsKIAogICAgICAgICAgICAgaWYgKGlucHV0LmF0RW5k
KCkgfHwgcGF0dGVybi0+c3RpY2t5KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEpTUmVnRXhw
Tm9NYXRjaDsKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNSZWdFeHBSZXN1bHQ6Ok5vTWF0Y2g7
CiAKICAgICAgICAgICAgIGlucHV0Lm5leHQoKTsKIApAQCAtMTUzMCwxOCArMTUzMCwxOCBAQCBj
bGFzcyBJbnRlcnByZXRlciB7CiAKICAgICAgICAgICAgIE1BVENIX05FWFQoKTsKICAgICAgICAg
fQotICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlQm9keUFsdGVybmF0aXZlRW5kOgorICAgICAg
ICBjYXNlIEJ5dGVUZXJtOjpUeXBlOjpCb2R5QWx0ZXJuYXRpdmVFbmQ6CiAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCi0gICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5
cGVBbHRlcm5hdGl2ZUJlZ2luOgotICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlQWx0ZXJuYXRp
dmVEaXNqdW5jdGlvbjogeworICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlOjpBbHRlcm5hdGl2
ZUJlZ2luOgorICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlOjpBbHRlcm5hdGl2ZURpc2p1bmN0
aW9uOiB7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gY3VycmVudFRlcm0oKS5hbHRlcm5hdGl2
ZS5uZXh0OwogICAgICAgICAgICAgY29udGV4dC0+dGVybSArPSBvZmZzZXQ7CiAgICAgICAgICAg
ICBpZiAob2Zmc2V0ID4gMCkKICAgICAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7CiAgICAgICAg
ICAgICBCQUNLVFJBQ0soKTsKICAgICAgICAgfQotICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBl
QWx0ZXJuYXRpdmVFbmQ6IHsKKyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZTo6QWx0ZXJuYXRp
dmVFbmQ6IHsKICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBuZXZlciBiYWNrdHJhY2sgYmFjayBp
bnRvIGFuIGFsdGVybmF0aXZlIG9mIHRoZSBtYWluIGJvZHkgb2YgdGhlIHJlZ2V4LgogICAgICAg
ICAgICAgQmFja1RyYWNrSW5mb0FsdGVybmF0aXZlKiBiYWNrVHJhY2sgPSByZWludGVycHJldF9j
YXN0PEJhY2tUcmFja0luZm9BbHRlcm5hdGl2ZSo+KGNvbnRleHQtPmZyYW1lICsgY3VycmVudFRl
cm0oKS5mcmFtZUxvY2F0aW9uKTsKICAgICAgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IGJhY2tU
cmFjay0+b2Zmc2V0OwpAQCAtMTU0OSw5NSArMTU0OSw5NSBAQCBjbGFzcyBJbnRlcnByZXRlciB7
CiAgICAgICAgICAgICBCQUNLVFJBQ0soKTsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2UgQnl0
ZVRlcm06OlR5cGVBc3NlcnRpb25CT0w6Ci0gICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVBc3Nl
cnRpb25FT0w6Ci0gICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVBc3NlcnRpb25Xb3JkQm91bmRh
cnk6CisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGU6OkFzc2VydGlvbkJPTDoKKyAgICAgICAg
Y2FzZSBCeXRlVGVybTo6VHlwZTo6QXNzZXJ0aW9uRU9MOgorICAgICAgICBjYXNlIEJ5dGVUZXJt
OjpUeXBlOjpBc3NlcnRpb25Xb3JkQm91bmRhcnk6CiAgICAgICAgICAgICBCQUNLVFJBQ0soKTsK
IAotICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGF0dGVybkNoYXJhY3Rlck9uY2U6Ci0gICAg
ICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXR0ZXJuQ2hhcmFjdGVyRml4ZWQ6Ci0gICAgICAgIGNh
c2UgQnl0ZVRlcm06OlR5cGVQYXR0ZXJuQ2hhcmFjdGVyR3JlZWR5OgotICAgICAgICBjYXNlIEJ5
dGVUZXJtOjpUeXBlUGF0dGVybkNoYXJhY3Rlck5vbkdyZWVkeToKKyAgICAgICAgY2FzZSBCeXRl
VGVybTo6VHlwZTo6UGF0dGVybkNoYXJhY3Rlck9uY2U6CisgICAgICAgIGNhc2UgQnl0ZVRlcm06
OlR5cGU6OlBhdHRlcm5DaGFyYWN0ZXJGaXhlZDoKKyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlw
ZTo6UGF0dGVybkNoYXJhY3RlckdyZWVkeToKKyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZTo6
UGF0dGVybkNoYXJhY3Rlck5vbkdyZWVkeToKICAgICAgICAgICAgIGlmIChiYWNrdHJhY2tQYXR0
ZXJuQ2hhcmFjdGVyKGN1cnJlbnRUZXJtKCksIGNvbnRleHQpKQogICAgICAgICAgICAgICAgIE1B
VENIX05FWFQoKTsKICAgICAgICAgICAgIEJBQ0tUUkFDSygpOwotICAgICAgICBjYXNlIEJ5dGVU
ZXJtOjpUeXBlUGF0dGVybkNhc2VkQ2hhcmFjdGVyT25jZToKLSAgICAgICAgY2FzZSBCeXRlVGVy
bTo6VHlwZVBhdHRlcm5DYXNlZENoYXJhY3RlckZpeGVkOgotICAgICAgICBjYXNlIEJ5dGVUZXJt
OjpUeXBlUGF0dGVybkNhc2VkQ2hhcmFjdGVyR3JlZWR5OgotICAgICAgICBjYXNlIEJ5dGVUZXJt
OjpUeXBlUGF0dGVybkNhc2VkQ2hhcmFjdGVyTm9uR3JlZWR5OgorICAgICAgICBjYXNlIEJ5dGVU
ZXJtOjpUeXBlOjpQYXR0ZXJuQ2FzZWRDaGFyYWN0ZXJPbmNlOgorICAgICAgICBjYXNlIEJ5dGVU
ZXJtOjpUeXBlOjpQYXR0ZXJuQ2FzZWRDaGFyYWN0ZXJGaXhlZDoKKyAgICAgICAgY2FzZSBCeXRl
VGVybTo6VHlwZTo6UGF0dGVybkNhc2VkQ2hhcmFjdGVyR3JlZWR5OgorICAgICAgICBjYXNlIEJ5
dGVUZXJtOjpUeXBlOjpQYXR0ZXJuQ2FzZWRDaGFyYWN0ZXJOb25HcmVlZHk6CiAgICAgICAgICAg
ICBpZiAoYmFja3RyYWNrUGF0dGVybkNhc2VkQ2hhcmFjdGVyKGN1cnJlbnRUZXJtKCksIGNvbnRl
eHQpKQogICAgICAgICAgICAgICAgIE1BVENIX05FWFQoKTsKICAgICAgICAgICAgIEJBQ0tUUkFD
SygpOwotICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlQ2hhcmFjdGVyQ2xhc3M6CisgICAgICAg
IGNhc2UgQnl0ZVRlcm06OlR5cGU6OkNoYXJhY3RlckNsYXNzOgogICAgICAgICAgICAgaWYgKGJh
Y2t0cmFja0NoYXJhY3RlckNsYXNzKGN1cnJlbnRUZXJtKCksIGNvbnRleHQpKQogICAgICAgICAg
ICAgICAgIE1BVENIX05FWFQoKTsKICAgICAgICAgICAgIEJBQ0tUUkFDSygpOwotICAgICAgICBj
YXNlIEJ5dGVUZXJtOjpUeXBlQmFja1JlZmVyZW5jZToKKyAgICAgICAgY2FzZSBCeXRlVGVybTo6
VHlwZTo6QmFja1JlZmVyZW5jZToKICAgICAgICAgICAgIGlmIChiYWNrdHJhY2tCYWNrUmVmZXJl
bmNlKGN1cnJlbnRUZXJtKCksIGNvbnRleHQpKQogICAgICAgICAgICAgICAgIE1BVENIX05FWFQo
KTsKICAgICAgICAgICAgIEJBQ0tUUkFDSygpOwotICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBl
UGFyZW50aGVzZXNTdWJwYXR0ZXJuOiB7CisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGU6OlBh
cmVudGhlc2VzU3VicGF0dGVybjogewogICAgICAgICAgICAgSlNSZWdFeHBSZXN1bHQgcmVzdWx0
ID0gYmFja3RyYWNrUGFyZW50aGVzZXMoY3VycmVudFRlcm0oKSwgY29udGV4dCk7CiAKLSAgICAg
ICAgICAgIGlmIChyZXN1bHQgPT0gSlNSZWdFeHBNYXRjaCkgeworICAgICAgICAgICAgaWYgKHJl
c3VsdCA9PSBKU1JlZ0V4cFJlc3VsdDo6TWF0Y2gpIHsKICAgICAgICAgICAgICAgICBNQVRDSF9O
RVhUKCk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCAhPSBKU1JlZ0V4cE5vTWF0Y2gp
CisgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCAhPSBKU1JlZ0V4cFJlc3VsdDo6Tm9NYXRj
aCkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAgICAgICAgICAgICBCQUNLVFJB
Q0soKTsKICAgICAgICAgfQotICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGFyZW50aGVzZXNT
dWJwYXR0ZXJuT25jZUJlZ2luOgorICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlOjpQYXJlbnRo
ZXNlc1N1YnBhdHRlcm5PbmNlQmVnaW46CiAgICAgICAgICAgICBpZiAoYmFja3RyYWNrUGFyZW50
aGVzZXNPbmNlQmVnaW4oY3VycmVudFRlcm0oKSwgY29udGV4dCkpCiAgICAgICAgICAgICAgICAg
TUFUQ0hfTkVYVCgpOwogICAgICAgICAgICAgQkFDS1RSQUNLKCk7Ci0gICAgICAgIGNhc2UgQnl0
ZVRlcm06OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm5PbmNlRW5kOgorICAgICAgICBjYXNlIEJ5
dGVUZXJtOjpUeXBlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm5PbmNlRW5kOgogICAgICAgICAgICAg
aWYgKGJhY2t0cmFja1BhcmVudGhlc2VzT25jZUVuZChjdXJyZW50VGVybSgpLCBjb250ZXh0KSkK
ICAgICAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7CiAgICAgICAgICAgICBCQUNLVFJBQ0soKTsK
LSAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVyblRlcm1pbmFs
QmVnaW46CisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGU6OlBhcmVudGhlc2VzU3VicGF0dGVy
blRlcm1pbmFsQmVnaW46CiAgICAgICAgICAgICBpZiAoYmFja3RyYWNrUGFyZW50aGVzZXNUZXJt
aW5hbEJlZ2luKGN1cnJlbnRUZXJtKCksIGNvbnRleHQpKQogICAgICAgICAgICAgICAgIE1BVENI
X05FWFQoKTsKICAgICAgICAgICAgIEJBQ0tUUkFDSygpOwotICAgICAgICBjYXNlIEJ5dGVUZXJt
OjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuVGVybWluYWxFbmQ6CisgICAgICAgIGNhc2UgQnl0
ZVRlcm06OlR5cGU6OlBhcmVudGhlc2VzU3VicGF0dGVyblRlcm1pbmFsRW5kOgogICAgICAgICAg
ICAgaWYgKGJhY2t0cmFja1BhcmVudGhlc2VzVGVybWluYWxFbmQoY3VycmVudFRlcm0oKSwgY29u
dGV4dCkpCiAgICAgICAgICAgICAgICAgTUFUQ0hfTkVYVCgpOwogICAgICAgICAgICAgQkFDS1RS
QUNLKCk7Ci0gICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXJlbnRoZXRpY2FsQXNzZXJ0aW9u
QmVnaW46CisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGU6OlBhcmVudGhldGljYWxBc3NlcnRp
b25CZWdpbjoKICAgICAgICAgICAgIGlmIChiYWNrdHJhY2tQYXJlbnRoZXRpY2FsQXNzZXJ0aW9u
QmVnaW4oY3VycmVudFRlcm0oKSwgY29udGV4dCkpCiAgICAgICAgICAgICAgICAgTUFUQ0hfTkVY
VCgpOwogICAgICAgICAgICAgQkFDS1RSQUNLKCk7Ci0gICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5
cGVQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uRW5kOgorICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBl
OjpQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uRW5kOgogICAgICAgICAgICAgaWYgKGJhY2t0cmFja1Bh
cmVudGhldGljYWxBc3NlcnRpb25FbmQoY3VycmVudFRlcm0oKSwgY29udGV4dCkpCiAgICAgICAg
ICAgICAgICAgTUFUQ0hfTkVYVCgpOwogICAgICAgICAgICAgQkFDS1RSQUNLKCk7CiAKLSAgICAg
ICAgY2FzZSBCeXRlVGVybTo6VHlwZUNoZWNrSW5wdXQ6CisgICAgICAgIGNhc2UgQnl0ZVRlcm06
OlR5cGU6OkNoZWNrSW5wdXQ6CiAgICAgICAgICAgICBpbnB1dC51bmNoZWNrSW5wdXQoY3VycmVu
dFRlcm0oKS5jaGVja0lucHV0Q291bnQpOwogICAgICAgICAgICAgQkFDS1RSQUNLKCk7CiAKLSAg
ICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVVuY2hlY2tJbnB1dDoKKyAgICAgICAgY2FzZSBCeXRl
VGVybTo6VHlwZTo6VW5jaGVja0lucHV0OgogICAgICAgICAgICAgaW5wdXQuY2hlY2tJbnB1dChj
dXJyZW50VGVybSgpLmNoZWNrSW5wdXRDb3VudCk7CiAgICAgICAgICAgICBCQUNLVFJBQ0soKTsK
IAotICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlRG90U3RhckVuY2xvc3VyZToKKyAgICAgICAg
Y2FzZSBCeXRlVGVybTo6VHlwZTo6RG90U3RhckVuY2xvc3VyZToKICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KIAogICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gSlNSZWdFeHBFcnJvck5vTWF0Y2g7
CisgICAgICAgIHJldHVybiBKU1JlZ0V4cFJlc3VsdDo6RXJyb3JOb01hdGNoOwogICAgIH0KIAog
ICAgIEpTUmVnRXhwUmVzdWx0IG1hdGNoTm9uWmVyb0Rpc2p1bmN0aW9uKEJ5dGVEaXNqdW5jdGlv
biogZGlzanVuY3Rpb24sIERpc2p1bmN0aW9uQ29udGV4dCogY29udGV4dCwgYm9vbCBidHJhY2sg
PSBmYWxzZSkKICAgICB7CiAgICAgICAgIEpTUmVnRXhwUmVzdWx0IHJlc3VsdCA9IG1hdGNoRGlz
anVuY3Rpb24oZGlzanVuY3Rpb24sIGNvbnRleHQsIGJ0cmFjayk7CiAKLSAgICAgICAgaWYgKHJl
c3VsdCA9PSBKU1JlZ0V4cE1hdGNoKSB7CisgICAgICAgIGlmIChyZXN1bHQgPT0gSlNSZWdFeHBS
ZXN1bHQ6Ok1hdGNoKSB7CiAgICAgICAgICAgICB3aGlsZSAoY29udGV4dC0+bWF0Y2hCZWdpbiA9
PSBjb250ZXh0LT5tYXRjaEVuZCkgewogICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1hdGNoRGlz
anVuY3Rpb24oZGlzanVuY3Rpb24sIGNvbnRleHQsIHRydWUpOwotICAgICAgICAgICAgICAgIGlm
IChyZXN1bHQgIT0gSlNSZWdFeHBNYXRjaCkKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9
IEpTUmVnRXhwUmVzdWx0OjpNYXRjaCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBKU1JlZ0V4cE1hdGNoOworICAg
ICAgICAgICAgcmV0dXJuIEpTUmVnRXhwUmVzdWx0OjpNYXRjaDsKICAgICAgICAgfQogCiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CkBAIC0xNjYzLDcgKzE2NjMsNyBAQCBjbGFzcyBJbnRlcnByZXRl
ciB7CiAgICAgICAgIERpc2p1bmN0aW9uQ29udGV4dCogY29udGV4dCA9IGFsbG9jRGlzanVuY3Rp
b25Db250ZXh0KHBhdHRlcm4tPm1fYm9keS5nZXQoKSk7CiAKICAgICAgICAgSlNSZWdFeHBSZXN1
bHQgcmVzdWx0ID0gbWF0Y2hEaXNqdW5jdGlvbihwYXR0ZXJuLT5tX2JvZHkuZ2V0KCksIGNvbnRl
eHQsIGZhbHNlKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBKU1JlZ0V4cE1hdGNoKSB7CisgICAg
ICAgIGlmIChyZXN1bHQgPT0gSlNSZWdFeHBSZXN1bHQ6Ok1hdGNoKSB7CiAgICAgICAgICAgICBv
dXRwdXRbMF0gPSBjb250ZXh0LT5tYXRjaEJlZ2luOwogICAgICAgICAgICAgb3V0cHV0WzFdID0g
Y29udGV4dC0+bWF0Y2hFbmQ7CiAgICAgICAgIH0KQEAgLTE2NzIsNyArMTY3Miw3IEBAIGNsYXNz
IEludGVycHJldGVyIHsKIAogICAgICAgICBwYXR0ZXJuLT5tX2FsbG9jYXRvci0+c3RvcEFsbG9j
YXRvcigpOwogCi0gICAgICAgIEFTU0VSVCgocmVzdWx0ID09IEpTUmVnRXhwTWF0Y2gpID09IChv
dXRwdXRbMF0gIT0gb2Zmc2V0Tm9NYXRjaCkpOworICAgICAgICBBU1NFUlQoKHJlc3VsdCA9PSBK
U1JlZ0V4cFJlc3VsdDo6TWF0Y2gpID09IChvdXRwdXRbMF0gIT0gb2Zmc2V0Tm9NYXRjaCkpOwog
CiAgICAgICAgIGlmIChwYXR0ZXJuLT5tX2xvY2spCiAgICAgICAgICAgICBwYXR0ZXJuLT5tX2xv
Y2stPnVubG9jaygpOwpAQCAtMTgwNiw3ICsxODA2LDcgQEAgY2xhc3MgQnl0ZUNvbXBpbGVyIHsK
ICAgICB7CiAgICAgICAgIHVuc2lnbmVkIGJlZ2luVGVybSA9IG1fYm9keURpc2p1bmN0aW9uLT50
ZXJtcy5zaXplKCk7CiAKLSAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zLmFwcGVuZChC
eXRlVGVybShCeXRlVGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVybk9uY2VCZWdpbiwgc3Vi
cGF0dGVybklkLCBjYXB0dXJlLCBmYWxzZSwgaW5wdXRQb3NpdGlvbikpOworICAgICAgICBtX2Jv
ZHlEaXNqdW5jdGlvbi0+dGVybXMuYXBwZW5kKEJ5dGVUZXJtKEJ5dGVUZXJtOjpUeXBlOjpQYXJl
bnRoZXNlc1N1YnBhdHRlcm5PbmNlQmVnaW4sIHN1YnBhdHRlcm5JZCwgY2FwdHVyZSwgZmFsc2Us
IGlucHV0UG9zaXRpb24pKTsKICAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zLmxhc3Qo
KS5mcmFtZUxvY2F0aW9uID0gZnJhbWVMb2NhdGlvbjsKICAgICAgICAgbV9ib2R5RGlzanVuY3Rp
b24tPnRlcm1zLmFwcGVuZChCeXRlVGVybTo6QWx0ZXJuYXRpdmVCZWdpbigpKTsKICAgICAgICAg
bV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zLmxhc3QoKS5mcmFtZUxvY2F0aW9uID0gYWx0ZXJuYXRp
dmVGcmFtZUxvY2F0aW9uOwpAQCAtMTgxOSw3ICsxODE5LDcgQEAgY2xhc3MgQnl0ZUNvbXBpbGVy
IHsKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIGJlZ2luVGVybSA9IG1fYm9keURpc2p1bmN0aW9u
LT50ZXJtcy5zaXplKCk7CiAKLSAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zLmFwcGVu
ZChCeXRlVGVybShCeXRlVGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVyblRlcm1pbmFsQmVn
aW4sIHN1YnBhdHRlcm5JZCwgY2FwdHVyZSwgZmFsc2UsIGlucHV0UG9zaXRpb24pKTsKKyAgICAg
ICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zLmFwcGVuZChCeXRlVGVybShCeXRlVGVybTo6VHlw
ZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuVGVybWluYWxCZWdpbiwgc3VicGF0dGVybklkLCBjYXB0
dXJlLCBmYWxzZSwgaW5wdXRQb3NpdGlvbikpOwogICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+
dGVybXMubGFzdCgpLmZyYW1lTG9jYXRpb24gPSBmcmFtZUxvY2F0aW9uOwogICAgICAgICBtX2Jv
ZHlEaXNqdW5jdGlvbi0+dGVybXMuYXBwZW5kKEJ5dGVUZXJtOjpBbHRlcm5hdGl2ZUJlZ2luKCkp
OwogICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXMubGFzdCgpLmZyYW1lTG9jYXRpb24g
PSBhbHRlcm5hdGl2ZUZyYW1lTG9jYXRpb247CkBAIC0xODMwLDEzICsxODMwLDEzIEBAIGNsYXNz
IEJ5dGVDb21waWxlciB7CiAKICAgICB2b2lkIGF0b21QYXJlbnRoZXNlc1N1YnBhdHRlcm5CZWdp
bih1bnNpZ25lZCBzdWJwYXR0ZXJuSWQsIGJvb2wgY2FwdHVyZSwgdW5zaWduZWQgaW5wdXRQb3Np
dGlvbiwgdW5zaWduZWQgZnJhbWVMb2NhdGlvbiwgdW5zaWduZWQgYWx0ZXJuYXRpdmVGcmFtZUxv
Y2F0aW9uKQogICAgIHsKLSAgICAgICAgLy8gRXJycmshIC0gdGhpcyBpcyBhIGxpdHRsZSBjcmF6
eSwgd2UgaW5pdGlhbGx5IGdlbmVyYXRlIGFzIGEgVHlwZVBhcmVudGhlc2VzU3VicGF0dGVybk9u
Y2VCZWdpbiwKKyAgICAgICAgLy8gRXJycmshIC0gdGhpcyBpcyBhIGxpdHRsZSBjcmF6eSwgd2Ug
aW5pdGlhbGx5IGdlbmVyYXRlIGFzIGEgVHlwZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUJl
Z2luLAogICAgICAgICAvLyB0aGVuIGZpeCB0aGlzIHVwIGF0IHRoZSBlbmQhIC0gc2ltcGxpZnlp
bmcgdGhpcyBzaG91bGQgbWFrZSBpdCBtdWNoIGNsZWFyZXIuCiAgICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDEzNgogCiAgICAgICAgIHVuc2lnbmVk
IGJlZ2luVGVybSA9IG1fYm9keURpc2p1bmN0aW9uLT50ZXJtcy5zaXplKCk7CiAKLSAgICAgICAg
bV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zLmFwcGVuZChCeXRlVGVybShCeXRlVGVybTo6VHlwZVBh
cmVudGhlc2VzU3VicGF0dGVybk9uY2VCZWdpbiwgc3VicGF0dGVybklkLCBjYXB0dXJlLCBmYWxz
ZSwgaW5wdXRQb3NpdGlvbikpOworICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXMuYXBw
ZW5kKEJ5dGVUZXJtKEJ5dGVUZXJtOjpUeXBlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm5PbmNlQmVn
aW4sIHN1YnBhdHRlcm5JZCwgY2FwdHVyZSwgZmFsc2UsIGlucHV0UG9zaXRpb24pKTsKICAgICAg
ICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zLmxhc3QoKS5mcmFtZUxvY2F0aW9uID0gZnJhbWVM
b2NhdGlvbjsKICAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zLmFwcGVuZChCeXRlVGVy
bTo6QWx0ZXJuYXRpdmVCZWdpbigpKTsKICAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1z
Lmxhc3QoKS5mcmFtZUxvY2F0aW9uID0gYWx0ZXJuYXRpdmVGcmFtZUxvY2F0aW9uOwpAQCAtMTg0
OSw3ICsxODQ5LDcgQEAgY2xhc3MgQnl0ZUNvbXBpbGVyIHsKICAgICB7CiAgICAgICAgIHVuc2ln
bmVkIGJlZ2luVGVybSA9IG1fYm9keURpc2p1bmN0aW9uLT50ZXJtcy5zaXplKCk7CiAKLSAgICAg
ICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zLmFwcGVuZChCeXRlVGVybShCeXRlVGVybTo6VHlw
ZVBhcmVudGhldGljYWxBc3NlcnRpb25CZWdpbiwgc3VicGF0dGVybklkLCBmYWxzZSwgaW52ZXJ0
LCAwKSk7CisgICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtcy5hcHBlbmQoQnl0ZVRlcm0o
Qnl0ZVRlcm06OlR5cGU6OlBhcmVudGhldGljYWxBc3NlcnRpb25CZWdpbiwgc3VicGF0dGVybklk
LCBmYWxzZSwgaW52ZXJ0LCAwKSk7CiAgICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtcy5s
YXN0KCkuZnJhbWVMb2NhdGlvbiA9IGZyYW1lTG9jYXRpb247CiAgICAgICAgIG1fYm9keURpc2p1
bmN0aW9uLT50ZXJtcy5hcHBlbmQoQnl0ZVRlcm06OkFsdGVybmF0aXZlQmVnaW4oKSk7CiAgICAg
ICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtcy5sYXN0KCkuZnJhbWVMb2NhdGlvbiA9IGFsdGVy
bmF0aXZlRnJhbWVMb2NhdGlvbjsKQEAgLTE4NjQsMTIgKzE4NjQsMTIgQEAgY2xhc3MgQnl0ZUNv
bXBpbGVyIHsKICAgICAgICAgY2xvc2VBbHRlcm5hdGl2ZShiZWdpblRlcm0gKyAxKTsKICAgICAg
ICAgdW5zaWduZWQgZW5kVGVybSA9IG1fYm9keURpc2p1bmN0aW9uLT50ZXJtcy5zaXplKCk7CiAK
LSAgICAgICAgQVNTRVJUKG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tiZWdpblRlcm1dLnR5cGUg
PT0gQnl0ZVRlcm06OlR5cGVQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW4pOworICAgICAgICBB
U1NFUlQobV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zW2JlZ2luVGVybV0udHlwZSA9PSBCeXRlVGVy
bTo6VHlwZTo6UGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luKTsKIAogICAgICAgICBib29sIGlu
dmVydCA9IG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tiZWdpblRlcm1dLmludmVydCgpOwogICAg
ICAgICB1bnNpZ25lZCBzdWJwYXR0ZXJuSWQgPSBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbYmVn
aW5UZXJtXS5hdG9tLnN1YnBhdHRlcm5JZDsKIAotICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+
dGVybXMuYXBwZW5kKEJ5dGVUZXJtKEJ5dGVUZXJtOjpUeXBlUGFyZW50aGV0aWNhbEFzc2VydGlv
bkVuZCwgc3VicGF0dGVybklkLCBmYWxzZSwgaW52ZXJ0LCBpbnB1dFBvc2l0aW9uKSk7CisgICAg
ICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtcy5hcHBlbmQoQnl0ZVRlcm0oQnl0ZVRlcm06OlR5
cGU6OlBhcmVudGhldGljYWxBc3NlcnRpb25FbmQsIHN1YnBhdHRlcm5JZCwgZmFsc2UsIGludmVy
dCwgaW5wdXRQb3NpdGlvbikpOwogICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbYmVn
aW5UZXJtXS5hdG9tLnBhcmVudGhlc2VzV2lkdGggPSBlbmRUZXJtIC0gYmVnaW5UZXJtOwogICAg
ICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbZW5kVGVybV0uYXRvbS5wYXJlbnRoZXNlc1dp
ZHRoID0gZW5kVGVybSAtIGJlZ2luVGVybTsKICAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRl
cm1zW2VuZFRlcm1dLmZyYW1lTG9jYXRpb24gPSBmcmFtZUxvY2F0aW9uOwpAQCAtMTkwMSw3ICsx
OTAxLDcgQEAgY2xhc3MgQnl0ZUNvbXBpbGVyIHsKICAgICB2b2lkIGNsb3NlQWx0ZXJuYXRpdmUo
dW5zaWduZWQgYmVnaW5UZXJtKQogICAgIHsKICAgICAgICAgdW5zaWduZWQgb3JpZ0JlZ2luVGVy
bSA9IGJlZ2luVGVybTsKLSAgICAgICAgQVNTRVJUKG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1ti
ZWdpblRlcm1dLnR5cGUgPT0gQnl0ZVRlcm06OlR5cGVBbHRlcm5hdGl2ZUJlZ2luKTsKKyAgICAg
ICAgQVNTRVJUKG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tiZWdpblRlcm1dLnR5cGUgPT0gQnl0
ZVRlcm06OlR5cGU6OkFsdGVybmF0aXZlQmVnaW4pOwogICAgICAgICB1bnNpZ25lZCBlbmRJbmRl
eCA9IG1fYm9keURpc2p1bmN0aW9uLT50ZXJtcy5zaXplKCk7CiAKICAgICAgICAgdW5zaWduZWQg
ZnJhbWVMb2NhdGlvbiA9IG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tiZWdpblRlcm1dLmZyYW1l
TG9jYXRpb247CkBAIC0xOTExLDcgKzE5MTEsNyBAQCBjbGFzcyBCeXRlQ29tcGlsZXIgewogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIHdoaWxlIChtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNb
YmVnaW5UZXJtXS5hbHRlcm5hdGl2ZS5uZXh0KSB7CiAgICAgICAgICAgICAgICAgYmVnaW5UZXJt
ICs9IG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tiZWdpblRlcm1dLmFsdGVybmF0aXZlLm5leHQ7
Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tiZWdpblRl
cm1dLnR5cGUgPT0gQnl0ZVRlcm06OlR5cGVBbHRlcm5hdGl2ZURpc2p1bmN0aW9uKTsKKyAgICAg
ICAgICAgICAgICBBU1NFUlQobV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zW2JlZ2luVGVybV0udHlw
ZSA9PSBCeXRlVGVybTo6VHlwZTo6QWx0ZXJuYXRpdmVEaXNqdW5jdGlvbik7CiAgICAgICAgICAg
ICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zW2JlZ2luVGVybV0uYWx0ZXJuYXRpdmUuZW5k
ID0gZW5kSW5kZXggLSBiZWdpblRlcm07CiAgICAgICAgICAgICAgICAgbV9ib2R5RGlzanVuY3Rp
b24tPnRlcm1zW2JlZ2luVGVybV0uZnJhbWVMb2NhdGlvbiA9IGZyYW1lTG9jYXRpb247CiAgICAg
ICAgICAgICB9CkBAIC0xOTI3LDE0ICsxOTI3LDE0IEBAIGNsYXNzIEJ5dGVDb21waWxlciB7CiAg
ICAgewogICAgICAgICB1bnNpZ25lZCBiZWdpblRlcm0gPSAwOwogICAgICAgICB1bnNpZ25lZCBv
cmlnQmVnaW5UZXJtID0gMDsKLSAgICAgICAgQVNTRVJUKG1fYm9keURpc2p1bmN0aW9uLT50ZXJt
c1tiZWdpblRlcm1dLnR5cGUgPT0gQnl0ZVRlcm06OlR5cGVCb2R5QWx0ZXJuYXRpdmVCZWdpbik7
CisgICAgICAgIEFTU0VSVChtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbYmVnaW5UZXJtXS50eXBl
ID09IEJ5dGVUZXJtOjpUeXBlOjpCb2R5QWx0ZXJuYXRpdmVCZWdpbik7CiAgICAgICAgIHVuc2ln
bmVkIGVuZEluZGV4ID0gbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zLnNpemUoKTsKIAogICAgICAg
ICB1bnNpZ25lZCBmcmFtZUxvY2F0aW9uID0gbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zW2JlZ2lu
VGVybV0uZnJhbWVMb2NhdGlvbjsKIAogICAgICAgICB3aGlsZSAobV9ib2R5RGlzanVuY3Rpb24t
PnRlcm1zW2JlZ2luVGVybV0uYWx0ZXJuYXRpdmUubmV4dCkgewogICAgICAgICAgICAgYmVnaW5U
ZXJtICs9IG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tiZWdpblRlcm1dLmFsdGVybmF0aXZlLm5l
eHQ7Ci0gICAgICAgICAgICBBU1NFUlQobV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zW2JlZ2luVGVy
bV0udHlwZSA9PSBCeXRlVGVybTo6VHlwZUJvZHlBbHRlcm5hdGl2ZURpc2p1bmN0aW9uKTsKKyAg
ICAgICAgICAgIEFTU0VSVChtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbYmVnaW5UZXJtXS50eXBl
ID09IEJ5dGVUZXJtOjpUeXBlOjpCb2R5QWx0ZXJuYXRpdmVEaXNqdW5jdGlvbik7CiAgICAgICAg
ICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbYmVnaW5UZXJtXS5hbHRlcm5hdGl2ZS5lbmQg
PSBlbmRJbmRleCAtIGJlZ2luVGVybTsKICAgICAgICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50
ZXJtc1tiZWdpblRlcm1dLmZyYW1lTG9jYXRpb24gPSBmcmFtZUxvY2F0aW9uOwogICAgICAgICB9
CkBAIC0xOTUxLDcgKzE5NTEsNyBAQCBjbGFzcyBCeXRlQ29tcGlsZXIgewogICAgICAgICBjbG9z
ZUFsdGVybmF0aXZlKGJlZ2luVGVybSArIDEpOwogICAgICAgICB1bnNpZ25lZCBlbmRUZXJtID0g
bV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zLnNpemUoKTsKIAotICAgICAgICBBU1NFUlQobV9ib2R5
RGlzanVuY3Rpb24tPnRlcm1zW2JlZ2luVGVybV0udHlwZSA9PSBCeXRlVGVybTo6VHlwZVBhcmVu
dGhlc2VzU3VicGF0dGVybk9uY2VCZWdpbik7CisgICAgICAgIEFTU0VSVChtX2JvZHlEaXNqdW5j
dGlvbi0+dGVybXNbYmVnaW5UZXJtXS50eXBlID09IEJ5dGVUZXJtOjpUeXBlOjpQYXJlbnRoZXNl
c1N1YnBhdHRlcm5PbmNlQmVnaW4pOwogCiAgICAgICAgIEJ5dGVUZXJtJiBwYXJlbnRoZXNlc0Jl
Z2luID0gbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zW2JlZ2luVGVybV07CiAKQEAgLTE5NzEsNyAr
MTk3MSw3IEBAIGNsYXNzIEJ5dGVDb21waWxlciB7CiAKICAgICAgICAgbV9ib2R5RGlzanVuY3Rp
b24tPnRlcm1zLnNocmluayhiZWdpblRlcm0pOwogCi0gICAgICAgIG1fYm9keURpc2p1bmN0aW9u
LT50ZXJtcy5hcHBlbmQoQnl0ZVRlcm0oQnl0ZVRlcm06OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRl
cm4sIHN1YnBhdHRlcm5JZCwgcGFyZW50aGVzZXNEaXNqdW5jdGlvbi5nZXQoKSwgY2FwdHVyZSwg
aW5wdXRQb3NpdGlvbikpOworICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXMuYXBwZW5k
KEJ5dGVUZXJtKEJ5dGVUZXJtOjpUeXBlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm4sIHN1YnBhdHRl
cm5JZCwgcGFyZW50aGVzZXNEaXNqdW5jdGlvbi5nZXQoKSwgY2FwdHVyZSwgaW5wdXRQb3NpdGlv
bikpOwogICAgICAgICBtX2FsbFBhcmVudGhlc2VzSW5mby5hcHBlbmQoV1RGTW92ZShwYXJlbnRo
ZXNlc0Rpc2p1bmN0aW9uKSk7CiAKICAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zW2Jl
Z2luVGVybV0uYXRvbS5xdWFudGl0eU1pbkNvdW50ID0gcXVhbnRpdHlNaW5Db3VudDsKQEAgLTE5
ODYsMTIgKzE5ODYsMTIgQEAgY2xhc3MgQnl0ZUNvbXBpbGVyIHsKICAgICAgICAgY2xvc2VBbHRl
cm5hdGl2ZShiZWdpblRlcm0gKyAxKTsKICAgICAgICAgdW5zaWduZWQgZW5kVGVybSA9IG1fYm9k
eURpc2p1bmN0aW9uLT50ZXJtcy5zaXplKCk7CiAKLSAgICAgICAgQVNTRVJUKG1fYm9keURpc2p1
bmN0aW9uLT50ZXJtc1tiZWdpblRlcm1dLnR5cGUgPT0gQnl0ZVRlcm06OlR5cGVQYXJlbnRoZXNl
c1N1YnBhdHRlcm5PbmNlQmVnaW4pOworICAgICAgICBBU1NFUlQobV9ib2R5RGlzanVuY3Rpb24t
PnRlcm1zW2JlZ2luVGVybV0udHlwZSA9PSBCeXRlVGVybTo6VHlwZTo6UGFyZW50aGVzZXNTdWJw
YXR0ZXJuT25jZUJlZ2luKTsKIAogICAgICAgICBib29sIGNhcHR1cmUgPSBtX2JvZHlEaXNqdW5j
dGlvbi0+dGVybXNbYmVnaW5UZXJtXS5jYXB0dXJlKCk7CiAgICAgICAgIHVuc2lnbmVkIHN1YnBh
dHRlcm5JZCA9IG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tiZWdpblRlcm1dLmF0b20uc3VicGF0
dGVybklkOwogCi0gICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtcy5hcHBlbmQoQnl0ZVRl
cm0oQnl0ZVRlcm06OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm5PbmNlRW5kLCBzdWJwYXR0ZXJu
SWQsIGNhcHR1cmUsIGZhbHNlLCBpbnB1dFBvc2l0aW9uKSk7CisgICAgICAgIG1fYm9keURpc2p1
bmN0aW9uLT50ZXJtcy5hcHBlbmQoQnl0ZVRlcm0oQnl0ZVRlcm06OlR5cGU6OlBhcmVudGhlc2Vz
U3VicGF0dGVybk9uY2VFbmQsIHN1YnBhdHRlcm5JZCwgY2FwdHVyZSwgZmFsc2UsIGlucHV0UG9z
aXRpb24pKTsKICAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zW2JlZ2luVGVybV0uYXRv
bS5wYXJlbnRoZXNlc1dpZHRoID0gZW5kVGVybSAtIGJlZ2luVGVybTsKICAgICAgICAgbV9ib2R5
RGlzanVuY3Rpb24tPnRlcm1zW2VuZFRlcm1dLmF0b20ucGFyZW50aGVzZXNXaWR0aCA9IGVuZFRl
cm0gLSBiZWdpblRlcm07CiAgICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tlbmRUZXJt
XS5mcmFtZUxvY2F0aW9uID0gZnJhbWVMb2NhdGlvbjsKQEAgLTIwMTAsMTIgKzIwMTAsMTIgQEAg
Y2xhc3MgQnl0ZUNvbXBpbGVyIHsKICAgICAgICAgY2xvc2VBbHRlcm5hdGl2ZShiZWdpblRlcm0g
KyAxKTsKICAgICAgICAgdW5zaWduZWQgZW5kVGVybSA9IG1fYm9keURpc2p1bmN0aW9uLT50ZXJt
cy5zaXplKCk7CiAKLSAgICAgICAgQVNTRVJUKG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tiZWdp
blRlcm1dLnR5cGUgPT0gQnl0ZVRlcm06OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5h
bEJlZ2luKTsKKyAgICAgICAgQVNTRVJUKG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tiZWdpblRl
cm1dLnR5cGUgPT0gQnl0ZVRlcm06OlR5cGU6OlBhcmVudGhlc2VzU3VicGF0dGVyblRlcm1pbmFs
QmVnaW4pOwogCiAgICAgICAgIGJvb2wgY2FwdHVyZSA9IG1fYm9keURpc2p1bmN0aW9uLT50ZXJt
c1tiZWdpblRlcm1dLmNhcHR1cmUoKTsKICAgICAgICAgdW5zaWduZWQgc3VicGF0dGVybklkID0g
bV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zW2JlZ2luVGVybV0uYXRvbS5zdWJwYXR0ZXJuSWQ7CiAK
LSAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zLmFwcGVuZChCeXRlVGVybShCeXRlVGVy
bTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVyblRlcm1pbmFsRW5kLCBzdWJwYXR0ZXJuSWQsIGNh
cHR1cmUsIGZhbHNlLCBpbnB1dFBvc2l0aW9uKSk7CisgICAgICAgIG1fYm9keURpc2p1bmN0aW9u
LT50ZXJtcy5hcHBlbmQoQnl0ZVRlcm0oQnl0ZVRlcm06OlR5cGU6OlBhcmVudGhlc2VzU3VicGF0
dGVyblRlcm1pbmFsRW5kLCBzdWJwYXR0ZXJuSWQsIGNhcHR1cmUsIGZhbHNlLCBpbnB1dFBvc2l0
aW9uKSk7CiAgICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tiZWdpblRlcm1dLmF0b20u
cGFyZW50aGVzZXNXaWR0aCA9IGVuZFRlcm0gLSBiZWdpblRlcm07CiAgICAgICAgIG1fYm9keURp
c2p1bmN0aW9uLT50ZXJtc1tlbmRUZXJtXS5hdG9tLnBhcmVudGhlc2VzV2lkdGggPSBlbmRUZXJt
IC0gYmVnaW5UZXJtOwogICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbZW5kVGVybV0u
ZnJhbWVMb2NhdGlvbiA9IGZyYW1lTG9jYXRpb247CkBAIC0yMDg5LDM5ICsyMDg5LDM5IEBAIGNs
YXNzIEJ5dGVDb21waWxlciB7CiAKICAgICAgICAgICAgIGZvciAoYXV0byYgdGVybSA6IGFsdGVy
bmF0aXZlLT5tX3Rlcm1zKSB7CiAgICAgICAgICAgICAgICAgc3dpdGNoICh0ZXJtLnR5cGUpIHsK
LSAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlQXNzZXJ0aW9uQk9MOgorICAg
ICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkFzc2VydGlvbkJPTDoKICAgICAg
ICAgICAgICAgICAgICAgYXNzZXJ0aW9uQk9MKGN1cnJlbnRDb3VudEFscmVhZHlDaGVja2VkIC0g
dGVybS5pbnB1dFBvc2l0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAg
ICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlQXNzZXJ0aW9uRU9MOgorICAgICAgICAg
ICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkFzc2VydGlvbkVPTDoKICAgICAgICAgICAg
ICAgICAgICAgYXNzZXJ0aW9uRU9MKGN1cnJlbnRDb3VudEFscmVhZHlDaGVja2VkIC0gdGVybS5p
bnB1dFBvc2l0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAg
ICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlQXNzZXJ0aW9uV29yZEJvdW5kYXJ5OgorICAgICAg
ICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkFzc2VydGlvbldvcmRCb3VuZGFyeToK
ICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0aW9uV29yZEJvdW5kYXJ5KHRlcm0uaW52ZXJ0KCks
IGN1cnJlbnRDb3VudEFscmVhZHlDaGVja2VkIC0gdGVybS5pbnB1dFBvc2l0aW9uKTsKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJt
OjpUeXBlUGF0dGVybkNoYXJhY3RlcjoKKyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJt
OjpUeXBlOjpQYXR0ZXJuQ2hhcmFjdGVyOgogICAgICAgICAgICAgICAgICAgICBhdG9tUGF0dGVy
bkNoYXJhY3Rlcih0ZXJtLnBhdHRlcm5DaGFyYWN0ZXIsIGN1cnJlbnRDb3VudEFscmVhZHlDaGVj
a2VkIC0gdGVybS5pbnB1dFBvc2l0aW9uLCB0ZXJtLmZyYW1lTG9jYXRpb24sIHRlcm0ucXVhbnRp
dHlNYXhDb3VudCwgdGVybS5xdWFudGl0eVR5cGUpOwogICAgICAgICAgICAgICAgICAgICBicmVh
azsKIAotICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGVDaGFyYWN0ZXJDbGFz
czoKKyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpDaGFyYWN0ZXJDbGFz
czoKICAgICAgICAgICAgICAgICAgICAgYXRvbUNoYXJhY3RlckNsYXNzKHRlcm0uY2hhcmFjdGVy
Q2xhc3MsIHRlcm0uaW52ZXJ0KCksIGN1cnJlbnRDb3VudEFscmVhZHlDaGVja2VkIC0gdGVybS5p
bnB1dFBvc2l0aW9uLCB0ZXJtLmZyYW1lTG9jYXRpb24sIHRlcm0ucXVhbnRpdHlNYXhDb3VudCwg
dGVybS5xdWFudGl0eVR5cGUpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAg
ICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGVCYWNrUmVmZXJlbmNlOgorICAgICAgICAg
ICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkJhY2tSZWZlcmVuY2U6CiAgICAgICAgICAg
ICAgICAgICAgIGF0b21CYWNrUmVmZXJlbmNlKHRlcm0uYmFja1JlZmVyZW5jZVN1YnBhdHRlcm5J
ZCwgY3VycmVudENvdW50QWxyZWFkeUNoZWNrZWQgLSB0ZXJtLmlucHV0UG9zaXRpb24sIHRlcm0u
ZnJhbWVMb2NhdGlvbiwgdGVybS5xdWFudGl0eU1heENvdW50LCB0ZXJtLnF1YW50aXR5VHlwZSk7
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICAgICAgY2FzZSBQYXR0
ZXJuVGVybTo6VHlwZUZvcndhcmRSZWZlcmVuY2U6CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0
ZXJuVGVybTo6VHlwZTo6Rm9yd2FyZFJlZmVyZW5jZToKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAKLSAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlUGFyZW50aGVzZXNT
dWJwYXR0ZXJuOiB7CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6UGFy
ZW50aGVzZXNTdWJwYXR0ZXJuOiB7CiAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGRpc2p1
bmN0aW9uQWxyZWFkeUNoZWNrZWRDb3VudCA9IDA7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0
ZXJtLnF1YW50aXR5TWF4Q291bnQgPT0gMSAmJiAhdGVybS5wYXJlbnRoZXNlcy5pc0NvcHkpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGFsdGVybmF0aXZlRnJhbWVMb2NhdGlv
biA9IHRlcm0uZnJhbWVMb2NhdGlvbjsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvciBR
dWFudGlmaWVyRml4ZWRDb3VudCB3ZSBwcmUtY2hlY2sgdGhlIG1pbmltdW0gc2l6ZTsgZm9yIGdy
ZWVkeS9ub24tZ3JlZWR5IHdlIHJlc2VydmUgYSBzbG90IGluIHRoZSBmcmFtZS4KLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICh0ZXJtLnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyRml4ZWRD
b3VudCkKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvciBRdWFudGlmaWVyVHlwZTo6Rml4
ZWRDb3VudCB3ZSBwcmUtY2hlY2sgdGhlIG1pbmltdW0gc2l6ZTsgZm9yIGdyZWVkeS9ub24tZ3Jl
ZWR5IHdlIHJlc2VydmUgYSBzbG90IGluIHRoZSBmcmFtZS4KKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICh0ZXJtLnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudCkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNqdW5jdGlvbkFscmVhZHlDaGVja2VkQ291
bnQgPSB0ZXJtLnBhcmVudGhlc2VzLmRpc2p1bmN0aW9uLT5tX21pbmltdW1TaXplOwogICAgICAg
ICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdGVy
bmF0aXZlRnJhbWVMb2NhdGlvbiArPSBZYXJyU3RhY2tTcGFjZUZvckJhY2tUcmFja0luZm9QYXJl
bnRoZXNlc09uY2U7CkBAIC0yMTQ2LDcgKzIxNDYsNyBAQCBjbGFzcyBCeXRlQ29tcGlsZXIgewog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAg
ICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlUGFyZW50aGV0aWNhbEFzc2VydGlvbjogewor
ICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OlBhcmVudGhldGljYWxBc3Nl
cnRpb246IHsKICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYWx0ZXJuYXRpdmVGcmFtZUxv
Y2F0aW9uID0gdGVybS5mcmFtZUxvY2F0aW9uICsgWWFyclN0YWNrU3BhY2VGb3JCYWNrVHJhY2tJ
bmZvUGFyZW50aGV0aWNhbEFzc2VydGlvbjsKICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
cG9zaXRpdmVJbnB1dE9mZnNldCA9IGN1cnJlbnRDb3VudEFscmVhZHlDaGVja2VkIC0gdGVybS5p
bnB1dFBvc2l0aW9uOwogICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB1bmNoZWNrQW1vdW50
ID0gMDsKQEAgLTIxNzEsNyArMjE3MSw3IEBAIGNsYXNzIEJ5dGVDb21waWxlciB7CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAg
IGNhc2UgUGF0dGVyblRlcm06OlR5cGVEb3RTdGFyRW5jbG9zdXJlOgorICAgICAgICAgICAgICAg
IGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkRvdFN0YXJFbmNsb3N1cmU6CiAgICAgICAgICAgICAg
ICAgICAgIGFzc2VydGlvbkRvdFN0YXJFbmNsb3N1cmUodGVybS5hbmNob3JzLmJvbEFuY2hvciwg
dGVybS5hbmNob3JzLmVvbEFuY2hvcik7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgIH0KQEAgLTIyMDMsNyArMjIwMyw3IEBAIGNsYXNzIEJ5dGVDb21waWxlciB7
CiAgICAgICAgIH07CiAKICAgICAgICAgYXV0byBkdW1wUXVhbnRpdHkgPSBbJl0oQnl0ZVRlcm0m
IHRlcm0pIHsKLSAgICAgICAgICAgIGlmICh0ZXJtLmF0b20ucXVhbnRpdHlUeXBlID09IFF1YW50
aWZpZXJGaXhlZENvdW50ICYmIHRlcm0uYXRvbS5xdWFudGl0eU1pbkNvdW50ID09IDEgJiYgdGVy
bS5hdG9tLnF1YW50aXR5TWF4Q291bnQgPT0gMSkKKyAgICAgICAgICAgIGlmICh0ZXJtLmF0b20u
cXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJUeXBlOjpGaXhlZENvdW50ICYmIHRlcm0uYXRvbS5x
dWFudGl0eU1pbkNvdW50ID09IDEgJiYgdGVybS5hdG9tLnF1YW50aXR5TWF4Q291bnQgPT0gMSkK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIG91dC5wcmludCgiIHsiLCB0
ZXJtLmF0b20ucXVhbnRpdHlNaW5Db3VudCk7CkBAIC0yMjE0LDkgKzIyMTQsOSBAQCBjbGFzcyBC
eXRlQ29tcGlsZXIgewogICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiwiLCB0ZXJtLmF0
b20ucXVhbnRpdHlNYXhDb3VudCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBvdXQucHJp
bnQoIn0iKTsKLSAgICAgICAgICAgIGlmICh0ZXJtLmF0b20ucXVhbnRpdHlUeXBlID09IFF1YW50
aWZpZXJHcmVlZHkpCisgICAgICAgICAgICBpZiAodGVybS5hdG9tLnF1YW50aXR5VHlwZSA9PSBR
dWFudGlmaWVyVHlwZTo6R3JlZWR5KQogICAgICAgICAgICAgICAgIG91dC5wcmludCgiIGdyZWVk
eSIpOwotICAgICAgICAgICAgZWxzZSBpZiAodGVybS5hdG9tLnF1YW50aXR5VHlwZSA9PSBRdWFu
dGlmaWVyTm9uR3JlZWR5KQorICAgICAgICAgICAgZWxzZSBpZiAodGVybS5hdG9tLnF1YW50aXR5
VHlwZSA9PSBRdWFudGlmaWVyVHlwZTo6Tm9uR3JlZWR5KQogICAgICAgICAgICAgICAgIG91dC5w
cmludCgiIG5vbi1ncmVlZHkiKTsKICAgICAgICAgfTsKIApAQCAtMjI1NCw1OSArMjI1NCw1OSBA
QCBjbGFzcyBCeXRlQ29tcGlsZXIgewogICAgICAgICAgICAgYm9vbCBvdXRwdXROZXdsaW5lID0g
dHJ1ZTsKIAogICAgICAgICAgICAgc3dpdGNoICh0ZXJtLnR5cGUpIHsKLSAgICAgICAgICAgIGNh
c2UgQnl0ZVRlcm06OlR5cGVCb2R5QWx0ZXJuYXRpdmVCZWdpbjoKKyAgICAgICAgICAgIGNhc2Ug
Qnl0ZVRlcm06OlR5cGU6OkJvZHlBbHRlcm5hdGl2ZUJlZ2luOgogICAgICAgICAgICAgICAgIG91
dHB1dFRlcm1JbmRleEFuZE5lc3QoaWR4LCBuZXN0aW5nKyspOwogICAgICAgICAgICAgICAgIG91
dC5wcmludCgiQm9keUFsdGVybmF0aXZlQmVnaW4iKTsKICAgICAgICAgICAgICAgICBpZiAodGVy
bS5hbHRlcm5hdGl2ZS5vbmNlVGhyb3VnaCkKICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50
KCIgb25jZVRocm91Z2giKTsKICAgICAgICAgICAgICAgICBkdW1wRnJhbWVMb2NhdGlvbih0ZXJt
KTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5
cGVCb2R5QWx0ZXJuYXRpdmVEaXNqdW5jdGlvbjoKKyAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06
OlR5cGU6OkJvZHlBbHRlcm5hdGl2ZURpc2p1bmN0aW9uOgogICAgICAgICAgICAgICAgIG91dHB1
dFRlcm1JbmRleEFuZE5lc3QoaWR4LCBuZXN0aW5nIC0gMSk7CiAgICAgICAgICAgICAgICAgb3V0
LnByaW50KCJCb2R5QWx0ZXJuYXRpdmVEaXNqdW5jdGlvbiIpOwogICAgICAgICAgICAgICAgIGR1
bXBGcmFtZUxvY2F0aW9uKHRlcm0pOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgY2FzZSBCeXRlVGVybTo6VHlwZUJvZHlBbHRlcm5hdGl2ZUVuZDoKKyAgICAgICAgICAgIGNh
c2UgQnl0ZVRlcm06OlR5cGU6OkJvZHlBbHRlcm5hdGl2ZUVuZDoKICAgICAgICAgICAgICAgICBv
dXRwdXRUZXJtSW5kZXhBbmROZXN0KGlkeCwgLS1uZXN0aW5nKTsKICAgICAgICAgICAgICAgICBv
dXQucHJpbnQoIkJvZHlBbHRlcm5hdGl2ZUVuZCIpOwogICAgICAgICAgICAgICAgIGR1bXBGcmFt
ZUxvY2F0aW9uKHRlcm0pOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2Fz
ZSBCeXRlVGVybTo6VHlwZUFsdGVybmF0aXZlQmVnaW46CisgICAgICAgICAgICBjYXNlIEJ5dGVU
ZXJtOjpUeXBlOjpBbHRlcm5hdGl2ZUJlZ2luOgogICAgICAgICAgICAgICAgIG91dHB1dFRlcm1J
bmRleEFuZE5lc3QoaWR4LCBuZXN0aW5nKyspOwogICAgICAgICAgICAgICAgIG91dC5wcmludCgi
QWx0ZXJuYXRpdmVCZWdpbiIpOwogICAgICAgICAgICAgICAgIGR1bXBGcmFtZUxvY2F0aW9uKHRl
cm0pOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6
VHlwZUFsdGVybmF0aXZlRGlzanVuY3Rpb246CisgICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpU
eXBlOjpBbHRlcm5hdGl2ZURpc2p1bmN0aW9uOgogICAgICAgICAgICAgICAgIG91dHB1dFRlcm1J
bmRleEFuZE5lc3QoaWR4LCBuZXN0aW5nIC0gMSk7CiAgICAgICAgICAgICAgICAgb3V0LnByaW50
KCJBbHRlcm5hdGl2ZURpc2p1bmN0aW9uIik7CiAgICAgICAgICAgICAgICAgZHVtcEZyYW1lTG9j
YXRpb24odGVybSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEJ5
dGVUZXJtOjpUeXBlQWx0ZXJuYXRpdmVFbmQ6CisgICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpU
eXBlOjpBbHRlcm5hdGl2ZUVuZDoKICAgICAgICAgICAgICAgICBvdXRwdXRUZXJtSW5kZXhBbmRO
ZXN0KGlkeCwgLS1uZXN0aW5nKTsKICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIkFsdGVybmF0
aXZlRW5kIik7CiAgICAgICAgICAgICAgICAgZHVtcEZyYW1lTG9jYXRpb24odGVybSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlU3VicGF0
dGVybkJlZ2luOgorICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZTo6U3VicGF0dGVybkJl
Z2luOgogICAgICAgICAgICAgICAgIG91dHB1dFRlcm1JbmRleEFuZE5lc3QoaWR4LCBuZXN0aW5n
KyspOwogICAgICAgICAgICAgICAgIG91dC5wcmludCgiU3VicGF0dGVybkJlZ2luIik7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlU3VicGF0
dGVybkVuZDoKKyAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGU6OlN1YnBhdHRlcm5FbmQ6
CiAgICAgICAgICAgICAgICAgb3V0cHV0VGVybUluZGV4QW5kTmVzdChpZHgsIC0tbmVzdGluZyk7
CiAgICAgICAgICAgICAgICAgb3V0LnByaW50KCJTdWJwYXR0ZXJuRW5kIik7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlQXNzZXJ0aW9uQk9M
OgorICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZTo6QXNzZXJ0aW9uQk9MOgogICAgICAg
ICAgICAgICAgIG91dHB1dFRlcm1JbmRleEFuZE5lc3QoaWR4LCBuZXN0aW5nKTsKICAgICAgICAg
ICAgICAgICBvdXQucHJpbnQoIkFzc2VydGlvbkJPTCIpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZUFzc2VydGlvbkVPTDoKKyAgICAgICAg
ICAgIGNhc2UgQnl0ZVRlcm06OlR5cGU6OkFzc2VydGlvbkVPTDoKICAgICAgICAgICAgICAgICBv
dXRwdXRUZXJtSW5kZXhBbmROZXN0KGlkeCwgbmVzdGluZyk7CiAgICAgICAgICAgICAgICAgb3V0
LnByaW50KCJBc3NlcnRpb25FT0wiKTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVBc3NlcnRpb25Xb3JkQm91bmRhcnk6CisgICAgICAgICAg
ICBjYXNlIEJ5dGVUZXJtOjpUeXBlOjpBc3NlcnRpb25Xb3JkQm91bmRhcnk6CiAgICAgICAgICAg
ICAgICAgb3V0cHV0VGVybUluZGV4QW5kTmVzdChpZHgsIG5lc3RpbmcpOwogICAgICAgICAgICAg
ICAgIG91dC5wcmludCgiQXNzZXJ0aW9uV29yZEJvdW5kYXJ5Iik7CiAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGF0dGVybkNoYXJhY3Rlck9u
Y2U6CisgICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlOjpQYXR0ZXJuQ2hhcmFjdGVyT25j
ZToKICAgICAgICAgICAgICAgICBvdXRwdXRUZXJtSW5kZXhBbmROZXN0KGlkeCwgbmVzdGluZyk7
CiAgICAgICAgICAgICAgICAgb3V0LnByaW50KCJQYXR0ZXJuQ2hhcmFjdGVyT25jZSIpOwogICAg
ICAgICAgICAgICAgIGR1bXBJbnZlcnRlZCh0ZXJtKTsKQEAgLTIzMTUsNyArMjMxNSw3IEBAIGNs
YXNzIEJ5dGVDb21waWxlciB7CiAgICAgICAgICAgICAgICAgZHVtcENoYXJhY3Rlcih0ZXJtKTsK
ICAgICAgICAgICAgICAgICBkdW1wUXVhbnRpdHkodGVybSk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGF0dGVybkNoYXJhY3RlckZpeGVk
OgorICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZTo6UGF0dGVybkNoYXJhY3RlckZpeGVk
OgogICAgICAgICAgICAgICAgIG91dHB1dFRlcm1JbmRleEFuZE5lc3QoaWR4LCBuZXN0aW5nKTsK
ICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIlBhdHRlcm5DaGFyYWN0ZXJGaXhlZCIpOwogICAg
ICAgICAgICAgICAgIGR1bXBJbnZlcnRlZCh0ZXJtKTsKQEAgLTIzMjQsNyArMjMyNCw3IEBAIGNs
YXNzIEJ5dGVDb21waWxlciB7CiAgICAgICAgICAgICAgICAgZHVtcENoYXJhY3Rlcih0ZXJtKTsK
ICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiB7IiwgdGVybS5hdG9tLnF1YW50aXR5TWluQ291
bnQsICJ9Iik7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEJ5dGVU
ZXJtOjpUeXBlUGF0dGVybkNoYXJhY3RlckdyZWVkeToKKyAgICAgICAgICAgIGNhc2UgQnl0ZVRl
cm06OlR5cGU6OlBhdHRlcm5DaGFyYWN0ZXJHcmVlZHk6CiAgICAgICAgICAgICAgICAgb3V0cHV0
VGVybUluZGV4QW5kTmVzdChpZHgsIG5lc3RpbmcpOwogICAgICAgICAgICAgICAgIG91dC5wcmlu
dCgiUGF0dGVybkNoYXJhY3RlckdyZWVkeSIpOwogICAgICAgICAgICAgICAgIGR1bXBJbnZlcnRl
ZCh0ZXJtKTsKQEAgLTIzMzMsNyArMjMzMyw3IEBAIGNsYXNzIEJ5dGVDb21waWxlciB7CiAgICAg
ICAgICAgICAgICAgZHVtcENoYXJhY3Rlcih0ZXJtKTsKICAgICAgICAgICAgICAgICBkdW1wUXVh
bnRpdHkodGVybSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEJ5
dGVUZXJtOjpUeXBlUGF0dGVybkNoYXJhY3Rlck5vbkdyZWVkeToKKyAgICAgICAgICAgIGNhc2Ug
Qnl0ZVRlcm06OlR5cGU6OlBhdHRlcm5DaGFyYWN0ZXJOb25HcmVlZHk6CiAgICAgICAgICAgICAg
ICAgb3V0cHV0VGVybUluZGV4QW5kTmVzdChpZHgsIG5lc3RpbmcpOwogICAgICAgICAgICAgICAg
IG91dC5wcmludCgiUGF0dGVybkNoYXJhY3Rlck5vbkdyZWVkeSIpOwogICAgICAgICAgICAgICAg
IGR1bXBJbnZlcnRlZCh0ZXJtKTsKQEAgLTIzNDIsMjMgKzIzNDIsMjMgQEAgY2xhc3MgQnl0ZUNv
bXBpbGVyIHsKICAgICAgICAgICAgICAgICBkdW1wQ2hhcmFjdGVyKHRlcm0pOwogICAgICAgICAg
ICAgICAgIGR1bXBRdWFudGl0eSh0ZXJtKTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXR0ZXJuQ2FzZWRDaGFyYWN0ZXJPbmNlOgorICAg
ICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZTo6UGF0dGVybkNhc2VkQ2hhcmFjdGVyT25jZToK
ICAgICAgICAgICAgICAgICBvdXRwdXRUZXJtSW5kZXhBbmROZXN0KGlkeCwgbmVzdGluZyk7CiAg
ICAgICAgICAgICAgICAgb3V0LnByaW50KCJQYXR0ZXJuQ2FzZWRDaGFyYWN0ZXJPbmNlIik7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGF0
dGVybkNhc2VkQ2hhcmFjdGVyRml4ZWQ6CisgICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBl
OjpQYXR0ZXJuQ2FzZWRDaGFyYWN0ZXJGaXhlZDoKICAgICAgICAgICAgICAgICBvdXRwdXRUZXJt
SW5kZXhBbmROZXN0KGlkeCwgbmVzdGluZyk7CiAgICAgICAgICAgICAgICAgb3V0LnByaW50KCJQ
YXR0ZXJuQ2FzZWRDaGFyYWN0ZXJGaXhlZCIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhdHRlcm5DYXNlZENoYXJhY3RlckdyZWVkeToK
KyAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGU6OlBhdHRlcm5DYXNlZENoYXJhY3Rlckdy
ZWVkeToKICAgICAgICAgICAgICAgICBvdXRwdXRUZXJtSW5kZXhBbmROZXN0KGlkeCwgbmVzdGlu
Zyk7CiAgICAgICAgICAgICAgICAgb3V0LnByaW50KCJQYXR0ZXJuQ2FzZWRDaGFyYWN0ZXJHcmVl
ZHkiKTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06
OlR5cGVQYXR0ZXJuQ2FzZWRDaGFyYWN0ZXJOb25HcmVlZHk6CisgICAgICAgICAgICBjYXNlIEJ5
dGVUZXJtOjpUeXBlOjpQYXR0ZXJuQ2FzZWRDaGFyYWN0ZXJOb25HcmVlZHk6CiAgICAgICAgICAg
ICAgICAgb3V0cHV0VGVybUluZGV4QW5kTmVzdChpZHgsIG5lc3RpbmcpOwogICAgICAgICAgICAg
ICAgIG91dC5wcmludCgiUGF0dGVybkNhc2VkQ2hhcmFjdGVyTm9uR3JlZWR5Iik7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlQ2hhcmFjdGVy
Q2xhc3M6CisgICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlOjpDaGFyYWN0ZXJDbGFzczoK
ICAgICAgICAgICAgICAgICBvdXRwdXRUZXJtSW5kZXhBbmROZXN0KGlkeCwgbmVzdGluZyk7CiAg
ICAgICAgICAgICAgICAgb3V0LnByaW50KCJDaGFyYWN0ZXJDbGFzcyIpOwogICAgICAgICAgICAg
ICAgIGR1bXBJbnZlcnRlZCh0ZXJtKTsKQEAgLTIzNjcsMTIgKzIzNjcsMTIgQEAgY2xhc3MgQnl0
ZUNvbXBpbGVyIHsKICAgICAgICAgICAgICAgICBkdW1wQ2hhckNsYXNzKHRlcm0pOwogICAgICAg
ICAgICAgICAgIGR1bXBRdWFudGl0eSh0ZXJtKTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVCYWNrUmVmZXJlbmNlOgorICAgICAgICAgICAg
Y2FzZSBCeXRlVGVybTo6VHlwZTo6QmFja1JlZmVyZW5jZToKICAgICAgICAgICAgICAgICBvdXRw
dXRUZXJtSW5kZXhBbmROZXN0KGlkeCwgbmVzdGluZyk7CiAgICAgICAgICAgICAgICAgb3V0LnBy
aW50KCJCYWNrUmVmZXJlbmNlICMiLCB0ZXJtLmF0b20uc3VicGF0dGVybklkKTsKICAgICAgICAg
ICAgICAgICBkdW1wUXVhbnRpdHkodGVybSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuOgorICAgICAg
ICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuOgogICAgICAg
ICAgICAgICAgIG91dHB1dFRlcm1JbmRleEFuZE5lc3QoaWR4LCBuZXN0aW5nKTsKICAgICAgICAg
ICAgICAgICBvdXQucHJpbnQoIlBhcmVudGhlc2VzU3VicGF0dGVybiIpOwogICAgICAgICAgICAg
ICAgIGR1bXBDYXB0dXJlZCh0ZXJtKTsKQEAgLTIzODQsNyArMjM4NCw3IEBAIGNsYXNzIEJ5dGVD
b21waWxlciB7CiAgICAgICAgICAgICAgICAgb3V0cHV0TmV3bGluZSA9IGZhbHNlOwogICAgICAg
ICAgICAgICAgIGR1bXBEaXNqdW5jdGlvbih0ZXJtLmF0b20ucGFyZW50aGVzZXNEaXNqdW5jdGlv
biwgbmVzdGluZyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEJ5
dGVUZXJtOjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUJlZ2luOgorICAgICAgICAgICAg
Y2FzZSBCeXRlVGVybTo6VHlwZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUJlZ2luOgogICAg
ICAgICAgICAgICAgIG91dHB1dFRlcm1JbmRleEFuZE5lc3QoaWR4LCBuZXN0aW5nKyspOwogICAg
ICAgICAgICAgICAgIG91dC5wcmludCgiUGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUJlZ2luIik7
CiAgICAgICAgICAgICAgICAgZHVtcENhcHR1cmVkKHRlcm0pOwpAQCAtMjM5Miw0NCArMjM5Miw0
NCBAQCBjbGFzcyBCeXRlQ29tcGlsZXIgewogICAgICAgICAgICAgICAgIGR1bXBJbnB1dFBvc2l0
aW9uKHRlcm0pOwogICAgICAgICAgICAgICAgIGR1bXBGcmFtZUxvY2F0aW9uKHRlcm0pOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhcmVu
dGhlc2VzU3VicGF0dGVybk9uY2VFbmQ6CisgICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBl
OjpQYXJlbnRoZXNlc1N1YnBhdHRlcm5PbmNlRW5kOgogICAgICAgICAgICAgICAgIG91dHB1dFRl
cm1JbmRleEFuZE5lc3QoaWR4LCAtLW5lc3RpbmcpOwogICAgICAgICAgICAgICAgIG91dC5wcmlu
dCgiUGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUVuZCIpOwogICAgICAgICAgICAgICAgIGR1bXBG
cmFtZUxvY2F0aW9uKHRlcm0pOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
Y2FzZSBCeXRlVGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVyblRlcm1pbmFsQmVnaW46Cisg
ICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJt
aW5hbEJlZ2luOgogICAgICAgICAgICAgICAgIG91dHB1dFRlcm1JbmRleEFuZE5lc3QoaWR4LCBu
ZXN0aW5nKyspOwogICAgICAgICAgICAgICAgIG91dC5wcmludCgiUGFyZW50aGVzZXNTdWJwYXR0
ZXJuVGVybWluYWxCZWdpbiIpOwogICAgICAgICAgICAgICAgIGR1bXBJbnZlcnRlZCh0ZXJtKTsK
ICAgICAgICAgICAgICAgICBkdW1wSW5wdXRQb3NpdGlvbih0ZXJtKTsKICAgICAgICAgICAgICAg
ICBkdW1wRnJhbWVMb2NhdGlvbih0ZXJtKTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEVu
ZDoKKyAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGU6OlBhcmVudGhlc2VzU3VicGF0dGVy
blRlcm1pbmFsRW5kOgogICAgICAgICAgICAgICAgIG91dHB1dFRlcm1JbmRleEFuZE5lc3QoaWR4
LCAtLW5lc3RpbmcpOwogICAgICAgICAgICAgICAgIG91dC5wcmludCgiUGFyZW50aGVzZXNTdWJw
YXR0ZXJuVGVybWluYWxFbmQiKTsKICAgICAgICAgICAgICAgICBkdW1wRnJhbWVMb2NhdGlvbih0
ZXJtKTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06
OlR5cGVQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW46CisgICAgICAgICAgICBjYXNlIEJ5dGVU
ZXJtOjpUeXBlOjpQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW46CiAgICAgICAgICAgICAgICAg
b3V0cHV0VGVybUluZGV4QW5kTmVzdChpZHgsIG5lc3RpbmcrKyk7CiAgICAgICAgICAgICAgICAg
b3V0LnByaW50KCJQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW4iKTsKICAgICAgICAgICAgICAg
ICBkdW1wSW52ZXJ0ZWQodGVybSk7CiAgICAgICAgICAgICAgICAgZHVtcElucHV0UG9zaXRpb24o
dGVybSk7CiAgICAgICAgICAgICAgICAgZHVtcEZyYW1lTG9jYXRpb24odGVybSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGFyZW50aGV0
aWNhbEFzc2VydGlvbkVuZDoKKyAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGU6OlBhcmVu
dGhldGljYWxBc3NlcnRpb25FbmQ6CiAgICAgICAgICAgICAgICAgb3V0cHV0VGVybUluZGV4QW5k
TmVzdChpZHgsIC0tbmVzdGluZyk7CiAgICAgICAgICAgICAgICAgb3V0LnByaW50KCJQYXJlbnRo
ZXRpY2FsQXNzZXJ0aW9uRW5kIik7CiAgICAgICAgICAgICAgICAgZHVtcEZyYW1lTG9jYXRpb24o
dGVybSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEJ5dGVUZXJt
OjpUeXBlQ2hlY2tJbnB1dDoKKyAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGU6OkNoZWNr
SW5wdXQ6CiAgICAgICAgICAgICAgICAgb3V0cHV0VGVybUluZGV4QW5kTmVzdChpZHgsIG5lc3Rp
bmcpOwogICAgICAgICAgICAgICAgIG91dC5wcmludCgiQ2hlY2tJbnB1dCAiLCB0ZXJtLmNoZWNr
SW5wdXRDb3VudCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEJ5
dGVUZXJtOjpUeXBlVW5jaGVja0lucHV0OgorICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlw
ZTo6VW5jaGVja0lucHV0OgogICAgICAgICAgICAgICAgIG91dHB1dFRlcm1JbmRleEFuZE5lc3Qo
aWR4LCBuZXN0aW5nKTsKICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIlVuY2hlY2tJbnB1dCAi
LCB0ZXJtLmNoZWNrSW5wdXRDb3VudCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlRG90U3RhckVuY2xvc3VyZToKKyAgICAgICAgICAgIGNh
c2UgQnl0ZVRlcm06OlR5cGU6OkRvdFN0YXJFbmNsb3N1cmU6CiAgICAgICAgICAgICAgICAgb3V0
cHV0VGVybUluZGV4QW5kTmVzdChpZHgsIG5lc3RpbmcpOwogICAgICAgICAgICAgICAgIG91dC5w
cmludCgiRG90U3RhckVuY2xvc3VyZSIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuaAppbmRleCBhNWM2OTVjNThi
OWJkZjY2ODY2ZjRmNDk5MGEwY2E0YWJjYmZjZGUxLi5hODQwZWY5YTExNmM5ZGRhMWQ5ZDJmOGEw
MDgxNjgxYWZiZDZkZTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9Z
YXJySW50ZXJwcmV0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50
ZXJwcmV0ZXIuaApAQCAtNzEsMzkgKzcxLDQwIEBAIHN0cnVjdCBCeXRlVGVybSB7CiAgICAgICAg
IHVuc2lnbmVkIGNoZWNrSW5wdXRDb3VudDsKICAgICB9OwogICAgIHVuc2lnbmVkIGZyYW1lTG9j
YXRpb247Ci0gICAgZW51bSBUeXBlIDogdWludDhfdCB7Ci0gICAgICAgIFR5cGVCb2R5QWx0ZXJu
YXRpdmVCZWdpbiwKLSAgICAgICAgVHlwZUJvZHlBbHRlcm5hdGl2ZURpc2p1bmN0aW9uLAotICAg
ICAgICBUeXBlQm9keUFsdGVybmF0aXZlRW5kLAotICAgICAgICBUeXBlQWx0ZXJuYXRpdmVCZWdp
biwKLSAgICAgICAgVHlwZUFsdGVybmF0aXZlRGlzanVuY3Rpb24sCi0gICAgICAgIFR5cGVBbHRl
cm5hdGl2ZUVuZCwKLSAgICAgICAgVHlwZVN1YnBhdHRlcm5CZWdpbiwKLSAgICAgICAgVHlwZVN1
YnBhdHRlcm5FbmQsCi0gICAgICAgIFR5cGVBc3NlcnRpb25CT0wsCi0gICAgICAgIFR5cGVBc3Nl
cnRpb25FT0wsCi0gICAgICAgIFR5cGVBc3NlcnRpb25Xb3JkQm91bmRhcnksCi0gICAgICAgIFR5
cGVQYXR0ZXJuQ2hhcmFjdGVyT25jZSwKLSAgICAgICAgVHlwZVBhdHRlcm5DaGFyYWN0ZXJGaXhl
ZCwKLSAgICAgICAgVHlwZVBhdHRlcm5DaGFyYWN0ZXJHcmVlZHksCi0gICAgICAgIFR5cGVQYXR0
ZXJuQ2hhcmFjdGVyTm9uR3JlZWR5LAotICAgICAgICBUeXBlUGF0dGVybkNhc2VkQ2hhcmFjdGVy
T25jZSwKLSAgICAgICAgVHlwZVBhdHRlcm5DYXNlZENoYXJhY3RlckZpeGVkLAotICAgICAgICBU
eXBlUGF0dGVybkNhc2VkQ2hhcmFjdGVyR3JlZWR5LAotICAgICAgICBUeXBlUGF0dGVybkNhc2Vk
Q2hhcmFjdGVyTm9uR3JlZWR5LAotICAgICAgICBUeXBlQ2hhcmFjdGVyQ2xhc3MsCi0gICAgICAg
IFR5cGVCYWNrUmVmZXJlbmNlLAotICAgICAgICBUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuLAot
ICAgICAgICBUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUJlZ2luLAotICAgICAgICBUeXBl
UGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUVuZCwKLSAgICAgICAgVHlwZVBhcmVudGhlc2VzU3Vi
cGF0dGVyblRlcm1pbmFsQmVnaW4sCi0gICAgICAgIFR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm5U
ZXJtaW5hbEVuZCwKLSAgICAgICAgVHlwZVBhcmVudGhldGljYWxBc3NlcnRpb25CZWdpbiwKLSAg
ICAgICAgVHlwZVBhcmVudGhldGljYWxBc3NlcnRpb25FbmQsCi0gICAgICAgIFR5cGVDaGVja0lu
cHV0LAotICAgICAgICBUeXBlVW5jaGVja0lucHV0LAotICAgICAgICBUeXBlRG90U3RhckVuY2xv
c3VyZSwKLSAgICB9IHR5cGU7CisgICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7CisgICAg
ICAgIEJvZHlBbHRlcm5hdGl2ZUJlZ2luLAorICAgICAgICBCb2R5QWx0ZXJuYXRpdmVEaXNqdW5j
dGlvbiwKKyAgICAgICAgQm9keUFsdGVybmF0aXZlRW5kLAorICAgICAgICBBbHRlcm5hdGl2ZUJl
Z2luLAorICAgICAgICBBbHRlcm5hdGl2ZURpc2p1bmN0aW9uLAorICAgICAgICBBbHRlcm5hdGl2
ZUVuZCwKKyAgICAgICAgU3VicGF0dGVybkJlZ2luLAorICAgICAgICBTdWJwYXR0ZXJuRW5kLAor
ICAgICAgICBBc3NlcnRpb25CT0wsCisgICAgICAgIEFzc2VydGlvbkVPTCwKKyAgICAgICAgQXNz
ZXJ0aW9uV29yZEJvdW5kYXJ5LAorICAgICAgICBQYXR0ZXJuQ2hhcmFjdGVyT25jZSwKKyAgICAg
ICAgUGF0dGVybkNoYXJhY3RlckZpeGVkLAorICAgICAgICBQYXR0ZXJuQ2hhcmFjdGVyR3JlZWR5
LAorICAgICAgICBQYXR0ZXJuQ2hhcmFjdGVyTm9uR3JlZWR5LAorICAgICAgICBQYXR0ZXJuQ2Fz
ZWRDaGFyYWN0ZXJPbmNlLAorICAgICAgICBQYXR0ZXJuQ2FzZWRDaGFyYWN0ZXJGaXhlZCwKKyAg
ICAgICAgUGF0dGVybkNhc2VkQ2hhcmFjdGVyR3JlZWR5LAorICAgICAgICBQYXR0ZXJuQ2FzZWRD
aGFyYWN0ZXJOb25HcmVlZHksCisgICAgICAgIENoYXJhY3RlckNsYXNzLAorICAgICAgICBCYWNr
UmVmZXJlbmNlLAorICAgICAgICBQYXJlbnRoZXNlc1N1YnBhdHRlcm4sCisgICAgICAgIFBhcmVu
dGhlc2VzU3VicGF0dGVybk9uY2VCZWdpbiwKKyAgICAgICAgUGFyZW50aGVzZXNTdWJwYXR0ZXJu
T25jZUVuZCwKKyAgICAgICAgUGFyZW50aGVzZXNTdWJwYXR0ZXJuVGVybWluYWxCZWdpbiwKKyAg
ICAgICAgUGFyZW50aGVzZXNTdWJwYXR0ZXJuVGVybWluYWxFbmQsCisgICAgICAgIFBhcmVudGhl
dGljYWxBc3NlcnRpb25CZWdpbiwKKyAgICAgICAgUGFyZW50aGV0aWNhbEFzc2VydGlvbkVuZCwK
KyAgICAgICAgQ2hlY2tJbnB1dCwKKyAgICAgICAgVW5jaGVja0lucHV0LAorICAgICAgICBEb3RT
dGFyRW5jbG9zdXJlLAorICAgIH07CisgICAgVHlwZSB0eXBlOwogICAgIGJvb2wgbV9jYXB0dXJl
IDogMTsKICAgICBib29sIG1faW52ZXJ0IDogMTsKICAgICB1bnNpZ25lZCBpbnB1dFBvc2l0aW9u
OwpAQCAtMTIwLDE0ICsxMjEsMTQgQEAgc3RydWN0IEJ5dGVUZXJtIHsKICAgICAgICAgaW5wdXRQ
b3NpdGlvbiA9IGlucHV0UG9zOwogCiAgICAgICAgIHN3aXRjaCAocXVhbnRpdHlUeXBlKSB7Ci0g
ICAgICAgIGNhc2UgUXVhbnRpZmllckZpeGVkQ291bnQ6Ci0gICAgICAgICAgICB0eXBlID0gKHF1
YW50aXR5Q291bnQgPT0gMSkgPyBCeXRlVGVybTo6VHlwZVBhdHRlcm5DaGFyYWN0ZXJPbmNlIDog
Qnl0ZVRlcm06OlR5cGVQYXR0ZXJuQ2hhcmFjdGVyRml4ZWQ7CisgICAgICAgIGNhc2UgUXVhbnRp
ZmllclR5cGU6OkZpeGVkQ291bnQ6CisgICAgICAgICAgICB0eXBlID0gKHF1YW50aXR5Q291bnQg
PT0gMSkgPyBCeXRlVGVybTo6VHlwZTo6UGF0dGVybkNoYXJhY3Rlck9uY2UgOiBCeXRlVGVybTo6
VHlwZTo6UGF0dGVybkNoYXJhY3RlckZpeGVkOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgUXVhbnRpZmllckdyZWVkeToKLSAgICAgICAgICAgIHR5cGUgPSBCeXRlVGVybTo6VHlw
ZVBhdHRlcm5DaGFyYWN0ZXJHcmVlZHk7CisgICAgICAgIGNhc2UgUXVhbnRpZmllclR5cGU6Okdy
ZWVkeToKKyAgICAgICAgICAgIHR5cGUgPSBCeXRlVGVybTo6VHlwZTo6UGF0dGVybkNoYXJhY3Rl
ckdyZWVkeTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFF1YW50aWZpZXJOb25H
cmVlZHk6Ci0gICAgICAgICAgICB0eXBlID0gQnl0ZVRlcm06OlR5cGVQYXR0ZXJuQ2hhcmFjdGVy
Tm9uR3JlZWR5OworICAgICAgICBjYXNlIFF1YW50aWZpZXJUeXBlOjpOb25HcmVlZHk6CisgICAg
ICAgICAgICB0eXBlID0gQnl0ZVRlcm06OlR5cGU6OlBhdHRlcm5DaGFyYWN0ZXJOb25HcmVlZHk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KQEAgLTEzOCwxNCArMTM5LDE0
IEBAIHN0cnVjdCBCeXRlVGVybSB7CiAgICAgICAgICwgbV9pbnZlcnQoZmFsc2UpCiAgICAgewog
ICAgICAgICBzd2l0Y2ggKHF1YW50aXR5VHlwZSkgewotICAgICAgICBjYXNlIFF1YW50aWZpZXJG
aXhlZENvdW50OgotICAgICAgICAgICAgdHlwZSA9IChxdWFudGl0eUNvdW50ID09IDEpID8gQnl0
ZVRlcm06OlR5cGVQYXR0ZXJuQ2FzZWRDaGFyYWN0ZXJPbmNlIDogQnl0ZVRlcm06OlR5cGVQYXR0
ZXJuQ2FzZWRDaGFyYWN0ZXJGaXhlZDsKKyAgICAgICAgY2FzZSBRdWFudGlmaWVyVHlwZTo6Rml4
ZWRDb3VudDoKKyAgICAgICAgICAgIHR5cGUgPSAocXVhbnRpdHlDb3VudCA9PSAxKSA/IEJ5dGVU
ZXJtOjpUeXBlOjpQYXR0ZXJuQ2FzZWRDaGFyYWN0ZXJPbmNlIDogQnl0ZVRlcm06OlR5cGU6OlBh
dHRlcm5DYXNlZENoYXJhY3RlckZpeGVkOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgUXVhbnRpZmllckdyZWVkeToKLSAgICAgICAgICAgIHR5cGUgPSBCeXRlVGVybTo6VHlwZVBh
dHRlcm5DYXNlZENoYXJhY3RlckdyZWVkeTsKKyAgICAgICAgY2FzZSBRdWFudGlmaWVyVHlwZTo6
R3JlZWR5OgorICAgICAgICAgICAgdHlwZSA9IEJ5dGVUZXJtOjpUeXBlOjpQYXR0ZXJuQ2FzZWRD
aGFyYWN0ZXJHcmVlZHk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBRdWFudGlm
aWVyTm9uR3JlZWR5OgotICAgICAgICAgICAgdHlwZSA9IEJ5dGVUZXJtOjpUeXBlUGF0dGVybkNh
c2VkQ2hhcmFjdGVyTm9uR3JlZWR5OworICAgICAgICBjYXNlIFF1YW50aWZpZXJUeXBlOjpOb25H
cmVlZHk6CisgICAgICAgICAgICB0eXBlID0gQnl0ZVRlcm06OlR5cGU6OlBhdHRlcm5DYXNlZENo
YXJhY3Rlck5vbkdyZWVkeTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTE1
OCwxMiArMTU5LDEyIEBAIHN0cnVjdCBCeXRlVGVybSB7CiAgICAgfQogCiAgICAgQnl0ZVRlcm0o
Q2hhcmFjdGVyQ2xhc3MqIGNoYXJhY3RlckNsYXNzLCBib29sIGludmVydCwgdW5zaWduZWQgaW5w
dXRQb3MpCi0gICAgICAgIDogdHlwZShCeXRlVGVybTo6VHlwZUNoYXJhY3RlckNsYXNzKQorICAg
ICAgICA6IHR5cGUoQnl0ZVRlcm06OlR5cGU6OkNoYXJhY3RlckNsYXNzKQogICAgICAgICAsIG1f
Y2FwdHVyZShmYWxzZSkKICAgICAgICAgLCBtX2ludmVydChpbnZlcnQpCiAgICAgewogICAgICAg
ICBhdG9tLmNoYXJhY3RlckNsYXNzID0gY2hhcmFjdGVyQ2xhc3M7Ci0gICAgICAgIGF0b20ucXVh
bnRpdHlUeXBlID0gUXVhbnRpZmllckZpeGVkQ291bnQ7CisgICAgICAgIGF0b20ucXVhbnRpdHlU
eXBlID0gUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQ7CiAgICAgICAgIGF0b20ucXVhbnRpdHlN
aW5Db3VudCA9IDE7CiAgICAgICAgIGF0b20ucXVhbnRpdHlNYXhDb3VudCA9IDE7CiAgICAgICAg
IGlucHV0UG9zaXRpb24gPSBpbnB1dFBvczsKQEAgLTE3Niw3ICsxNzcsNyBAQCBzdHJ1Y3QgQnl0
ZVRlcm0gewogICAgIHsKICAgICAgICAgYXRvbS5zdWJwYXR0ZXJuSWQgPSBzdWJwYXR0ZXJuSWQ7
CiAgICAgICAgIGF0b20ucGFyZW50aGVzZXNEaXNqdW5jdGlvbiA9IHBhcmVudGhlc2VzSW5mbzsK
LSAgICAgICAgYXRvbS5xdWFudGl0eVR5cGUgPSBRdWFudGlmaWVyRml4ZWRDb3VudDsKKyAgICAg
ICAgYXRvbS5xdWFudGl0eVR5cGUgPSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudDsKICAgICAg
ICAgYXRvbS5xdWFudGl0eU1pbkNvdW50ID0gMTsKICAgICAgICAgYXRvbS5xdWFudGl0eU1heENv
dW50ID0gMTsKICAgICAgICAgaW5wdXRQb3NpdGlvbiA9IGlucHV0UG9zOwpAQCAtMTg3LDcgKzE4
OCw3IEBAIHN0cnVjdCBCeXRlVGVybSB7CiAgICAgICAgICwgbV9jYXB0dXJlKGZhbHNlKQogICAg
ICAgICAsIG1faW52ZXJ0KGludmVydCkKICAgICB7Ci0gICAgICAgIGF0b20ucXVhbnRpdHlUeXBl
ID0gUXVhbnRpZmllckZpeGVkQ291bnQ7CisgICAgICAgIGF0b20ucXVhbnRpdHlUeXBlID0gUXVh
bnRpZmllclR5cGU6OkZpeGVkQ291bnQ7CiAgICAgICAgIGF0b20ucXVhbnRpdHlNaW5Db3VudCA9
IDE7CiAgICAgICAgIGF0b20ucXVhbnRpdHlNYXhDb3VudCA9IDE7CiAgICAgfQpAQCAtMTk4LDcg
KzE5OSw3IEBAIHN0cnVjdCBCeXRlVGVybSB7CiAgICAgICAgICwgbV9pbnZlcnQoaW52ZXJ0KQog
ICAgIHsKICAgICAgICAgYXRvbS5zdWJwYXR0ZXJuSWQgPSBzdWJwYXR0ZXJuSWQ7Ci0gICAgICAg
IGF0b20ucXVhbnRpdHlUeXBlID0gUXVhbnRpZmllckZpeGVkQ291bnQ7CisgICAgICAgIGF0b20u
cXVhbnRpdHlUeXBlID0gUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQ7CiAgICAgICAgIGF0b20u
cXVhbnRpdHlNaW5Db3VudCA9IDE7CiAgICAgICAgIGF0b20ucXVhbnRpdHlNYXhDb3VudCA9IDE7
CiAgICAgICAgIGlucHV0UG9zaXRpb24gPSBpbnB1dFBvczsKQEAgLTIwNiw0NyArMjA3LDQ3IEBA
IHN0cnVjdCBCeXRlVGVybSB7CiAKICAgICBzdGF0aWMgQnl0ZVRlcm0gQk9MKHVuc2lnbmVkIGlu
cHV0UG9zKQogICAgIHsKLSAgICAgICAgQnl0ZVRlcm0gdGVybShUeXBlQXNzZXJ0aW9uQk9MKTsK
KyAgICAgICAgQnl0ZVRlcm0gdGVybShUeXBlOjpBc3NlcnRpb25CT0wpOwogICAgICAgICB0ZXJt
LmlucHV0UG9zaXRpb24gPSBpbnB1dFBvczsKICAgICAgICAgcmV0dXJuIHRlcm07CiAgICAgfQog
CiAgICAgc3RhdGljIEJ5dGVUZXJtIENoZWNrSW5wdXQoQ2hlY2tlZDx1bnNpZ25lZD4gY291bnQp
CiAgICAgewotICAgICAgICBCeXRlVGVybSB0ZXJtKFR5cGVDaGVja0lucHV0KTsKKyAgICAgICAg
Qnl0ZVRlcm0gdGVybShUeXBlOjpDaGVja0lucHV0KTsKICAgICAgICAgdGVybS5jaGVja0lucHV0
Q291bnQgPSBjb3VudDsKICAgICAgICAgcmV0dXJuIHRlcm07CiAgICAgfQogCiAgICAgc3RhdGlj
IEJ5dGVUZXJtIFVuY2hlY2tJbnB1dChDaGVja2VkPHVuc2lnbmVkPiBjb3VudCkKICAgICB7Ci0g
ICAgICAgIEJ5dGVUZXJtIHRlcm0oVHlwZVVuY2hlY2tJbnB1dCk7CisgICAgICAgIEJ5dGVUZXJt
IHRlcm0oVHlwZTo6VW5jaGVja0lucHV0KTsKICAgICAgICAgdGVybS5jaGVja0lucHV0Q291bnQg
PSBjb3VudDsKICAgICAgICAgcmV0dXJuIHRlcm07CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBC
eXRlVGVybSBFT0wodW5zaWduZWQgaW5wdXRQb3MpCiAgICAgewotICAgICAgICBCeXRlVGVybSB0
ZXJtKFR5cGVBc3NlcnRpb25FT0wpOworICAgICAgICBCeXRlVGVybSB0ZXJtKFR5cGU6OkFzc2Vy
dGlvbkVPTCk7CiAgICAgICAgIHRlcm0uaW5wdXRQb3NpdGlvbiA9IGlucHV0UG9zOwogICAgICAg
ICByZXR1cm4gdGVybTsKICAgICB9CiAKICAgICBzdGF0aWMgQnl0ZVRlcm0gV29yZEJvdW5kYXJ5
KGJvb2wgaW52ZXJ0LCB1bnNpZ25lZCBpbnB1dFBvcykKICAgICB7Ci0gICAgICAgIEJ5dGVUZXJt
IHRlcm0oVHlwZUFzc2VydGlvbldvcmRCb3VuZGFyeSwgaW52ZXJ0KTsKKyAgICAgICAgQnl0ZVRl
cm0gdGVybShUeXBlOjpBc3NlcnRpb25Xb3JkQm91bmRhcnksIGludmVydCk7CiAgICAgICAgIHRl
cm0uaW5wdXRQb3NpdGlvbiA9IGlucHV0UG9zOwogICAgICAgICByZXR1cm4gdGVybTsKICAgICB9
CiAgICAgCiAgICAgc3RhdGljIEJ5dGVUZXJtIEJhY2tSZWZlcmVuY2UodW5zaWduZWQgc3VicGF0
dGVybklkLCB1bnNpZ25lZCBpbnB1dFBvcykKICAgICB7Ci0gICAgICAgIHJldHVybiBCeXRlVGVy
bShUeXBlQmFja1JlZmVyZW5jZSwgc3VicGF0dGVybklkLCBmYWxzZSwgZmFsc2UsIGlucHV0UG9z
KTsKKyAgICAgICAgcmV0dXJuIEJ5dGVUZXJtKFR5cGU6OkJhY2tSZWZlcmVuY2UsIHN1YnBhdHRl
cm5JZCwgZmFsc2UsIGZhbHNlLCBpbnB1dFBvcyk7CiAgICAgfQogCiAgICAgc3RhdGljIEJ5dGVU
ZXJtIEJvZHlBbHRlcm5hdGl2ZUJlZ2luKGJvb2wgb25jZVRocm91Z2gpCiAgICAgewotICAgICAg
ICBCeXRlVGVybSB0ZXJtKFR5cGVCb2R5QWx0ZXJuYXRpdmVCZWdpbik7CisgICAgICAgIEJ5dGVU
ZXJtIHRlcm0oVHlwZTo6Qm9keUFsdGVybmF0aXZlQmVnaW4pOwogICAgICAgICB0ZXJtLmFsdGVy
bmF0aXZlLm5leHQgPSAwOwogICAgICAgICB0ZXJtLmFsdGVybmF0aXZlLmVuZCA9IDA7CiAgICAg
ICAgIHRlcm0uYWx0ZXJuYXRpdmUub25jZVRocm91Z2ggPSBvbmNlVGhyb3VnaDsKQEAgLTI1NSw3
ICsyNTYsNyBAQCBzdHJ1Y3QgQnl0ZVRlcm0gewogCiAgICAgc3RhdGljIEJ5dGVUZXJtIEJvZHlB
bHRlcm5hdGl2ZURpc2p1bmN0aW9uKGJvb2wgb25jZVRocm91Z2gpCiAgICAgewotICAgICAgICBC
eXRlVGVybSB0ZXJtKFR5cGVCb2R5QWx0ZXJuYXRpdmVEaXNqdW5jdGlvbik7CisgICAgICAgIEJ5
dGVUZXJtIHRlcm0oVHlwZTo6Qm9keUFsdGVybmF0aXZlRGlzanVuY3Rpb24pOwogICAgICAgICB0
ZXJtLmFsdGVybmF0aXZlLm5leHQgPSAwOwogICAgICAgICB0ZXJtLmFsdGVybmF0aXZlLmVuZCA9
IDA7CiAgICAgICAgIHRlcm0uYWx0ZXJuYXRpdmUub25jZVRocm91Z2ggPSBvbmNlVGhyb3VnaDsK
QEAgLTI2NCw3ICsyNjUsNyBAQCBzdHJ1Y3QgQnl0ZVRlcm0gewogCiAgICAgc3RhdGljIEJ5dGVU
ZXJtIEJvZHlBbHRlcm5hdGl2ZUVuZCgpCiAgICAgewotICAgICAgICBCeXRlVGVybSB0ZXJtKFR5
cGVCb2R5QWx0ZXJuYXRpdmVFbmQpOworICAgICAgICBCeXRlVGVybSB0ZXJtKFR5cGU6OkJvZHlB
bHRlcm5hdGl2ZUVuZCk7CiAgICAgICAgIHRlcm0uYWx0ZXJuYXRpdmUubmV4dCA9IDA7CiAgICAg
ICAgIHRlcm0uYWx0ZXJuYXRpdmUuZW5kID0gMDsKICAgICAgICAgdGVybS5hbHRlcm5hdGl2ZS5v
bmNlVGhyb3VnaCA9IGZhbHNlOwpAQCAtMjczLDcgKzI3NCw3IEBAIHN0cnVjdCBCeXRlVGVybSB7
CiAKICAgICBzdGF0aWMgQnl0ZVRlcm0gQWx0ZXJuYXRpdmVCZWdpbigpCiAgICAgewotICAgICAg
ICBCeXRlVGVybSB0ZXJtKFR5cGVBbHRlcm5hdGl2ZUJlZ2luKTsKKyAgICAgICAgQnl0ZVRlcm0g
dGVybShUeXBlOjpBbHRlcm5hdGl2ZUJlZ2luKTsKICAgICAgICAgdGVybS5hbHRlcm5hdGl2ZS5u
ZXh0ID0gMDsKICAgICAgICAgdGVybS5hbHRlcm5hdGl2ZS5lbmQgPSAwOwogICAgICAgICB0ZXJt
LmFsdGVybmF0aXZlLm9uY2VUaHJvdWdoID0gZmFsc2U7CkBAIC0yODIsNyArMjgzLDcgQEAgc3Ry
dWN0IEJ5dGVUZXJtIHsKIAogICAgIHN0YXRpYyBCeXRlVGVybSBBbHRlcm5hdGl2ZURpc2p1bmN0
aW9uKCkKICAgICB7Ci0gICAgICAgIEJ5dGVUZXJtIHRlcm0oVHlwZUFsdGVybmF0aXZlRGlzanVu
Y3Rpb24pOworICAgICAgICBCeXRlVGVybSB0ZXJtKFR5cGU6OkFsdGVybmF0aXZlRGlzanVuY3Rp
b24pOwogICAgICAgICB0ZXJtLmFsdGVybmF0aXZlLm5leHQgPSAwOwogICAgICAgICB0ZXJtLmFs
dGVybmF0aXZlLmVuZCA9IDA7CiAgICAgICAgIHRlcm0uYWx0ZXJuYXRpdmUub25jZVRocm91Z2gg
PSBmYWxzZTsKQEAgLTI5MSw3ICsyOTIsNyBAQCBzdHJ1Y3QgQnl0ZVRlcm0gewogCiAgICAgc3Rh
dGljIEJ5dGVUZXJtIEFsdGVybmF0aXZlRW5kKCkKICAgICB7Ci0gICAgICAgIEJ5dGVUZXJtIHRl
cm0oVHlwZUFsdGVybmF0aXZlRW5kKTsKKyAgICAgICAgQnl0ZVRlcm0gdGVybShUeXBlOjpBbHRl
cm5hdGl2ZUVuZCk7CiAgICAgICAgIHRlcm0uYWx0ZXJuYXRpdmUubmV4dCA9IDA7CiAgICAgICAg
IHRlcm0uYWx0ZXJuYXRpdmUuZW5kID0gMDsKICAgICAgICAgdGVybS5hbHRlcm5hdGl2ZS5vbmNl
VGhyb3VnaCA9IGZhbHNlOwpAQCAtMzAwLDE3ICszMDEsMTcgQEAgc3RydWN0IEJ5dGVUZXJtIHsK
IAogICAgIHN0YXRpYyBCeXRlVGVybSBTdWJwYXR0ZXJuQmVnaW4oKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIEJ5dGVUZXJtKFR5cGVTdWJwYXR0ZXJuQmVnaW4pOworICAgICAgICByZXR1cm4gQnl0
ZVRlcm0oVHlwZTo6U3VicGF0dGVybkJlZ2luKTsKICAgICB9CiAKICAgICBzdGF0aWMgQnl0ZVRl
cm0gU3VicGF0dGVybkVuZCgpCiAgICAgewotICAgICAgICByZXR1cm4gQnl0ZVRlcm0oVHlwZVN1
YnBhdHRlcm5FbmQpOworICAgICAgICByZXR1cm4gQnl0ZVRlcm0oVHlwZTo6U3VicGF0dGVybkVu
ZCk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBCeXRlVGVybSBEb3RTdGFyRW5jbG9zdXJlKGJv
b2wgYm9sQW5jaG9yLCBib29sIGVvbEFuY2hvcikKICAgICB7Ci0gICAgICAgIEJ5dGVUZXJtIHRl
cm0oVHlwZURvdFN0YXJFbmNsb3N1cmUpOworICAgICAgICBCeXRlVGVybSB0ZXJtKFR5cGU6OkRv
dFN0YXJFbmNsb3N1cmUpOwogICAgICAgICB0ZXJtLmFuY2hvcnMubV9ib2wgPSBib2xBbmNob3I7
CiAgICAgICAgIHRlcm0uYW5jaG9ycy5tX2VvbCA9IGVvbEFuY2hvcjsKICAgICAgICAgcmV0dXJu
IHRlcm07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCmluZGV4IGMyYTJkODhh
ODk3MWU1ODhjNzEwYTRkZGU4NzRlNTBlNDE1ZWFkYmEuLjljNjMwMTgxNWU1ZjNiZWMyNTZkMTE5
MjljMWU3YTg4ODQzMTcyYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L1lhcnJKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3Bw
CkBAIC0zMTksMTEgKzMxOSwxMSBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGlj
IFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgIFBhdHRl
cm5UZXJtJiBuZXh0VGVybSA9IGFsdGVybmF0aXZlLT5tX3Rlcm1zW2kgKyAxXTsKIAogICAgICAg
ICAgICAgLy8gV2UgY2FuIG1vdmUgQk1QIG9ubHkgY2hhcmFjdGVyIGNsYXNzZXMgYWZ0ZXIgZml4
ZWQgY2hhcmFjdGVyIHRlcm1zLgotICAgICAgICAgICAgaWYgKCh0ZXJtLnR5cGUgPT0gUGF0dGVy
blRlcm06OlR5cGVDaGFyYWN0ZXJDbGFzcykKLSAgICAgICAgICAgICAgICAmJiAodGVybS5xdWFu
dGl0eVR5cGUgPT0gUXVhbnRpZmllckZpeGVkQ291bnQpCisgICAgICAgICAgICBpZiAoKHRlcm0u
dHlwZSA9PSBQYXR0ZXJuVGVybTo6VHlwZTo6Q2hhcmFjdGVyQ2xhc3MpCisgICAgICAgICAgICAg
ICAgJiYgKHRlcm0ucXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJUeXBlOjpGaXhlZENvdW50KQog
ICAgICAgICAgICAgICAgICYmICghbV9kZWNvZGVTdXJyb2dhdGVQYWlycyB8fCAodGVybS5jaGFy
YWN0ZXJDbGFzcy0+aGFzT25lQ2hhcmFjdGVyU2l6ZSgpICYmICF0ZXJtLm1faW52ZXJ0KSkKLSAg
ICAgICAgICAgICAgICAmJiAobmV4dFRlcm0udHlwZSA9PSBQYXR0ZXJuVGVybTo6VHlwZVBhdHRl
cm5DaGFyYWN0ZXIpCi0gICAgICAgICAgICAgICAgJiYgKG5leHRUZXJtLnF1YW50aXR5VHlwZSA9
PSBRdWFudGlmaWVyRml4ZWRDb3VudCkpIHsKKyAgICAgICAgICAgICAgICAmJiAobmV4dFRlcm0u
dHlwZSA9PSBQYXR0ZXJuVGVybTo6VHlwZTo6UGF0dGVybkNoYXJhY3RlcikKKyAgICAgICAgICAg
ICAgICAmJiAobmV4dFRlcm0ucXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJUeXBlOjpGaXhlZENv
dW50KSkgewogICAgICAgICAgICAgICAgIFBhdHRlcm5UZXJtIHRlcm1Db3B5ID0gdGVybTsKICAg
ICAgICAgICAgICAgICBhbHRlcm5hdGl2ZS0+bV90ZXJtc1tpXSA9IG5leHRUZXJtOwogICAgICAg
ICAgICAgICAgIGFsdGVybmF0aXZlLT5tX3Rlcm1zW2kgKyAxXSA9IHRlcm1Db3B5OwpAQCAtNDU0
LDcgKzQ1NCw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVElu
Zm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogI2lmZGVmIEpJVF9VTklDT0RFX0VYUFJFU1NJ
T05TCiAgICAgdm9pZCBhZHZhbmNlSW5kZXhBZnRlckNoYXJhY3RlckNsYXNzVGVybU1hdGNoKGNv
bnN0IFBhdHRlcm5UZXJtKiB0ZXJtLCBKdW1wTGlzdCYgZmFpbHVyZXNBZnRlckluY3JlbWVudGlu
Z0luZGV4LCBjb25zdCBSZWdpc3RlcklEIGNoYXJhY3RlcikKICAgICB7Ci0gICAgICAgIEFTU0VS
VCh0ZXJtLT50eXBlID09IFBhdHRlcm5UZXJtOjpUeXBlQ2hhcmFjdGVyQ2xhc3MpOworICAgICAg
ICBBU1NFUlQodGVybS0+dHlwZSA9PSBQYXR0ZXJuVGVybTo6VHlwZTo6Q2hhcmFjdGVyQ2xhc3Mp
OwogCiAgICAgICAgIGlmICh0ZXJtLT5pc0ZpeGVkV2lkdGhDaGFyYWN0ZXJDbGFzcygpKQogICAg
ICAgICAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKHRlcm0tPmNoYXJhY3RlckNsYXNzLT5oYXNOb25C
TVBDaGFyYWN0ZXJzKCkgPyAyIDogMSksIGluZGV4KTsKQEAgLTUxMywxNCArNTEzLDE0IEBAIGNs
YXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFj
cm9Bc3NlbWJsZXIgewogICAgICAgICAvLyBuZWdhdGl2ZUNoYXJhY3Rlck9mZnNldCB3aWxsIHVu
ZGVyZmxvdyBkaXJlY3RseSBvciBhZnRlciBjb252ZXJ0aW5nIGZvciAxNiBiaXQgY2hhcmFjdGVy
cy4KICAgICAgICAgLy8gSWYgc28sIHdlIGRvIG91ciBvd24gYWRkcmVzcyBjYWxjdWxhdGluZyBi
eSBhZGp1c3RpbmcgdGhlIGJhc2UsIHVzaW5nIHRoZSByZXN1bHQgcmVnaXN0ZXIKICAgICAgICAg
Ly8gYXMgYSB0ZW1wIGFkZHJlc3MgcmVnaXN0ZXIuCi0gICAgICAgIHVuc2lnbmVkIG1heGltdW1O
ZWdhdGl2ZU9mZnNldEZvckNoYXJhY3RlclNpemUgPSBtX2NoYXJTaXplID09IENoYXI4ID8gMHg3
ZmZmZmZmZiA6IDB4M2ZmZmZmZmY7CisgICAgICAgIHVuc2lnbmVkIG1heGltdW1OZWdhdGl2ZU9m
ZnNldEZvckNoYXJhY3RlclNpemUgPSBtX2NoYXJTaXplID09IENoYXJTaXplOjpDaGFyOCA/IDB4
N2ZmZmZmZmYgOiAweDNmZmZmZmZmOwogICAgICAgICB1bnNpZ25lZCBvZmZzZXRBZGp1c3RBbW91
bnQgPSAweDQwMDAwMDAwOwogICAgICAgICBpZiAobmVnYXRpdmVDaGFyYWN0ZXJPZmZzZXQgPiBt
YXhpbXVtTmVnYXRpdmVPZmZzZXRGb3JDaGFyYWN0ZXJTaXplKSB7CiAgICAgICAgICAgICBiYXNl
ID0gdGVtcFJlZzsKICAgICAgICAgICAgIG1vdmUoaW5wdXQsIGJhc2UpOwogICAgICAgICAgICAg
d2hpbGUgKG5lZ2F0aXZlQ2hhcmFjdGVyT2Zmc2V0ID4gbWF4aW11bU5lZ2F0aXZlT2Zmc2V0Rm9y
Q2hhcmFjdGVyU2l6ZSkgewogICAgICAgICAgICAgICAgIHN1YlB0cihUcnVzdGVkSW1tMzIob2Zm
c2V0QWRqdXN0QW1vdW50KSwgYmFzZSk7Ci0gICAgICAgICAgICAgICAgaWYgKG1fY2hhclNpemUg
IT0gQ2hhcjgpCisgICAgICAgICAgICAgICAgaWYgKG1fY2hhclNpemUgIT0gQ2hhclNpemU6OkNo
YXI4KQogICAgICAgICAgICAgICAgICAgICBzdWJQdHIoVHJ1c3RlZEltbTMyKG9mZnNldEFkanVz
dEFtb3VudCksIGJhc2UpOwogICAgICAgICAgICAgICAgIG5lZ2F0aXZlQ2hhcmFjdGVyT2Zmc2V0
IC09IG9mZnNldEFkanVzdEFtb3VudDsKICAgICAgICAgICAgIH0KQEAgLTUyOCw3ICs1MjgsNyBA
QCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRl
IE1hY3JvQXNzZW1ibGVyIHsKIAogICAgICAgICBDaGVja2VkPGludDMyX3Q+IGNoYXJhY3Rlck9m
ZnNldCgtc3RhdGljX2Nhc3Q8aW50MzJfdD4obmVnYXRpdmVDaGFyYWN0ZXJPZmZzZXQpKTsKIAot
ICAgICAgICBpZiAobV9jaGFyU2l6ZSA9PSBDaGFyOCkKKyAgICAgICAgaWYgKG1fY2hhclNpemUg
PT0gQ2hhclNpemU6OkNoYXI4KQogICAgICAgICAgICAgcmV0dXJuIEJhc2VJbmRleChpbnB1dCwg
aW5kZXhSZWcsIFRpbWVzT25lLCBjaGFyYWN0ZXJPZmZzZXQgKiBzdGF0aWNfY2FzdDxpbnQzMl90
PihzaXplb2YoY2hhcikpKTsKIAogICAgICAgICByZXR1cm4gQmFzZUluZGV4KGlucHV0LCBpbmRl
eFJlZywgVGltZXNUd28sIGNoYXJhY3Rlck9mZnNldCAqIHN0YXRpY19jYXN0PGludDMyX3Q+KHNp
emVvZihVQ2hhcikpKTsKQEAgLTUzNyw3ICs1MzcsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZp
bmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICNpZmRl
ZiBKSVRfVU5JQ09ERV9FWFBSRVNTSU9OUwogICAgIHZvaWQgdHJ5UmVhZFVuaWNvZGVDaGFySW1w
bChSZWdpc3RlcklEIHJlc3VsdFJlZykKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX2NoYXJTaXpl
ID09IENoYXIxNik7CisgICAgICAgIEFTU0VSVChtX2NoYXJTaXplID09IENoYXJTaXplOjpDaGFy
MTYpOwogCiAgICAgICAgIEp1bXBMaXN0IG5vdFVuaWNvZGU7CiAKQEAgLTU2NCw3ICs1NjQsNyBA
QCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRl
IE1hY3JvQXNzZW1ibGVyIHsKIAogICAgIHZvaWQgdHJ5UmVhZFVuaWNvZGVDaGFyKEJhc2VJbmRl
eCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdFJlZykKICAgICB7Ci0gICAgICAgIEFTU0VSVCht
X2NoYXJTaXplID09IENoYXIxNik7CisgICAgICAgIEFTU0VSVChtX2NoYXJTaXplID09IENoYXJT
aXplOjpDaGFyMTYpOwogCiAgICAgICAgIGdldEVmZmVjdGl2ZUFkZHJlc3MoYWRkcmVzcywgcmVn
VW5pY29kZUlucHV0QW5kVHJhaWwpOwogCkBAIC01NzksNyArNTc5LDcgQEAgY2xhc3MgWWFyckdl
bmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxl
ciB7CiAgICAgewogICAgICAgICBCYXNlSW5kZXggYWRkcmVzcyA9IG5lZ2F0aXZlT2Zmc2V0SW5k
ZXhlZEFkZHJlc3MobmVnYXRpdmVDaGFyYWN0ZXJPZmZzZXQsIHJlc3VsdFJlZywgaW5kZXhSZWcp
OwogCi0gICAgICAgIGlmIChtX2NoYXJTaXplID09IENoYXI4KQorICAgICAgICBpZiAobV9jaGFy
U2l6ZSA9PSBDaGFyU2l6ZTo6Q2hhcjgpCiAgICAgICAgICAgICBsb2FkOChhZGRyZXNzLCByZXN1
bHRSZWcpOwogI2lmZGVmIEpJVF9VTklDT0RFX0VYUFJFU1NJT05TCiAgICAgICAgIGVsc2UgaWYg
KG1fZGVjb2RlU3Vycm9nYXRlUGFpcnMpCkBAIC03MzYsNDUgKzczNiw0NSBAQCBjbGFzcyBZYXJy
R2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1i
bGVyIHsKICAgICAgICAgICAgIG1vdmUob3V0cHV0LCByZWcpOwogICAgIH0KIAotICAgIGVudW0g
WWFyck9wQ29kZSA6IHVpbnQ4X3QgeworICAgIGVudW0gY2xhc3MgWWFyck9wQ29kZSA6IHVpbnQ4
X3QgewogICAgICAgICAvLyBUaGVzZSBub2RlcyB3cmFwIGJvZHkgYWx0ZXJuYXRpdmVzIC0gdGhv
c2UgaW4gdGhlIG1haW4gZGlzanVuY3Rpb24sCiAgICAgICAgIC8vIHJhdGhlciB0aGFuIHN1YnBh
dHRlcm5zIG9yIGFzc2VydGlvbnMuIFRoZXNlIGFyZSBjaGFpbmVkIHRvZ2V0aGVyIGluCiAgICAg
ICAgIC8vIGEgZG91Ymx5IGxpbmtlZCBsaXN0LCB3aXRoIGEgJ2JlZ2luJyBub2RlIGZvciB0aGUg
Zmlyc3QgYWx0ZXJuYXRpdmUsCiAgICAgICAgIC8vIGEgJ25leHQnIG5vZGUgZm9yIGVhY2ggc3Vi
c2VxdWVudCBhbHRlcm5hdGl2ZSwgYW5kIGFuICdlbmQnIG5vZGUgYXQKICAgICAgICAgLy8gdGhl
IGVuZC4gSW4gdGhlIGNhc2Ugb2YgcmVwZWF0aW5nIGFsdGVybmF0aXZlcywgdGhlICdlbmQnIG5v
ZGUgYWxzbwogICAgICAgICAvLyBoYXMgYSByZWZlcmVuY2UgYmFjayB0byAnYmVnaW4nLgotICAg
ICAgICBPcEJvZHlBbHRlcm5hdGl2ZUJlZ2luLAotICAgICAgICBPcEJvZHlBbHRlcm5hdGl2ZU5l
eHQsCi0gICAgICAgIE9wQm9keUFsdGVybmF0aXZlRW5kLAorICAgICAgICBCb2R5QWx0ZXJuYXRp
dmVCZWdpbiwKKyAgICAgICAgQm9keUFsdGVybmF0aXZlTmV4dCwKKyAgICAgICAgQm9keUFsdGVy
bmF0aXZlRW5kLAogICAgICAgICAvLyBTaW1pbGFyIHRvIHRoZSBib2R5IGFsdGVybmF0aXZlcywg
YnV0IHVzZWQgZm9yIHN1YnBhdHRlcm5zIHdpdGggdHdvCiAgICAgICAgIC8vIG9yIG1vcmUgYWx0
ZXJuYXRpdmVzLgotICAgICAgICBPcE5lc3RlZEFsdGVybmF0aXZlQmVnaW4sCi0gICAgICAgIE9w
TmVzdGVkQWx0ZXJuYXRpdmVOZXh0LAotICAgICAgICBPcE5lc3RlZEFsdGVybmF0aXZlRW5kLAor
ICAgICAgICBOZXN0ZWRBbHRlcm5hdGl2ZUJlZ2luLAorICAgICAgICBOZXN0ZWRBbHRlcm5hdGl2
ZU5leHQsCisgICAgICAgIE5lc3RlZEFsdGVybmF0aXZlRW5kLAogICAgICAgICAvLyBVc2VkIGZv
ciBhbHRlcm5hdGl2ZXMgaW4gc3VicGF0dGVybnMgd2hlcmUgdGhlcmUgaXMgb25seSBhIHNpbmds
ZQogICAgICAgICAvLyBhbHRlcm5hdGl2ZSAoYmFja3RyYWNraW5nIGlzIGVhc2llciBpbiB0aGVz
ZSBjYXNlcyksIG9yIGZvciBhbHRlcm5hdGl2ZXMKICAgICAgICAgLy8gd2hpY2ggbmV2ZXIgbmVl
ZCB0byBiZSBiYWNrdHJhY2tlZCAodGhvc2UgaW4gcGFyZW50aGV0aWNhbCBhc3NlcnRpb25zLAog
ICAgICAgICAvLyB0ZXJtaW5hbCBzdWJwYXR0ZXJucykuCi0gICAgICAgIE9wU2ltcGxlTmVzdGVk
QWx0ZXJuYXRpdmVCZWdpbiwKLSAgICAgICAgT3BTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZU5leHQs
Ci0gICAgICAgIE9wU2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVFbmQsCisgICAgICAgIFNpbXBsZU5l
c3RlZEFsdGVybmF0aXZlQmVnaW4sCisgICAgICAgIFNpbXBsZU5lc3RlZEFsdGVybmF0aXZlTmV4
dCwKKyAgICAgICAgU2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVFbmQsCiAgICAgICAgIC8vIFVzZWQg
dG8gd3JhcCAnT25jZScgc3VicGF0dGVybiBtYXRjaGVzIChxdWFudGl0eU1heENvdW50ID09IDEp
LgotICAgICAgICBPcFBhcmVudGhlc2VzU3VicGF0dGVybk9uY2VCZWdpbiwKLSAgICAgICAgT3BQ
YXJlbnRoZXNlc1N1YnBhdHRlcm5PbmNlRW5kLAorICAgICAgICBQYXJlbnRoZXNlc1N1YnBhdHRl
cm5PbmNlQmVnaW4sCisgICAgICAgIFBhcmVudGhlc2VzU3VicGF0dGVybk9uY2VFbmQsCiAgICAg
ICAgIC8vIFVzZWQgdG8gd3JhcCAnVGVybWluYWwnIHN1YnBhdHRlcm4gbWF0Y2hlcyAoYXQgdGhl
IGVuZCBvZiB0aGUgcmVnZXhwKS4KLSAgICAgICAgT3BQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJt
aW5hbEJlZ2luLAotICAgICAgICBPcFBhcmVudGhlc2VzU3VicGF0dGVyblRlcm1pbmFsRW5kLAor
ICAgICAgICBQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEJlZ2luLAorICAgICAgICBQYXJl
bnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEVuZCwKICAgICAgICAgLy8gVXNlZCB0byB3cmFwIGdl
bmVyaWMgY2FwdHVyZWQgbWF0Y2hlcwotICAgICAgICBPcFBhcmVudGhlc2VzU3VicGF0dGVybkJl
Z2luLAotICAgICAgICBPcFBhcmVudGhlc2VzU3VicGF0dGVybkVuZCwKKyAgICAgICAgUGFyZW50
aGVzZXNTdWJwYXR0ZXJuQmVnaW4sCisgICAgICAgIFBhcmVudGhlc2VzU3VicGF0dGVybkVuZCwK
ICAgICAgICAgLy8gVXNlZCB0byB3cmFwIHBhcmVudGhldGljYWwgYXNzZXJ0aW9ucy4KLSAgICAg
ICAgT3BQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW4sCi0gICAgICAgIE9wUGFyZW50aGV0aWNh
bEFzc2VydGlvbkVuZCwKKyAgICAgICAgUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luLAorICAg
ICAgICBQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uRW5kLAogICAgICAgICAvLyBXcmFwcyBhbGwgc2lt
cGxlIHRlcm1zIChwYXR0ZXJuIGNoYXJhY3RlcnMsIGNoYXJhY3RlciBjbGFzc2VzKS4KLSAgICAg
ICAgT3BUZXJtLAorICAgICAgICBUZXJtLAogICAgICAgICAvLyBXaGVyZSBhbiBleHByZXNzaW9u
IGNvbnRhaW5zIG9ubHkgJ29uY2UgdGhyb3VnaCcgYm9keSBhbHRlcm5hdGl2ZXMKICAgICAgICAg
Ly8gYW5kIG5vIHJlcGVhdGluZyBvbmVzLCB0aGlzIG9wIGlzIHVzZWQgdG8gcmV0dXJuIG1hdGNo
IGZhaWx1cmUuCi0gICAgICAgIE9wTWF0Y2hGYWlsZWQKKyAgICAgICAgTWF0Y2hGYWlsZWQKICAg
ICB9OwogCiAgICAgLy8gVGhpcyBzdHJ1Y3R1cmUgaXMgdXNlZCB0byBob2xkIHRoZSBjb21waWxl
ZCBvcGNvZGUgaW5mb3JtYXRpb24sCkBAIC03ODMsNyArNzgzLDcgQEAgY2xhc3MgWWFyckdlbmVy
YXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7
CiAgICAgc3RydWN0IFlhcnJPcCB7CiAgICAgICAgIGV4cGxpY2l0IFlhcnJPcChQYXR0ZXJuVGVy
bSogdGVybSkKICAgICAgICAgICAgIDogbV90ZXJtKHRlcm0pCi0gICAgICAgICAgICAsIG1fb3Ao
T3BUZXJtKQorICAgICAgICAgICAgLCBtX29wKFlhcnJPcENvZGU6OlRlcm0pCiAgICAgICAgICAg
ICAsIG1faXNEZWFkQ29kZShmYWxzZSkKICAgICAgICAgewogICAgICAgICB9CkBAIC03OTYsOCAr
Nzk2LDggQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywg
cHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAKICAgICAgICAgLy8gRm9yIGFsdGVybmF0aXZlcywg
dGhpcyBob2xkcyB0aGUgUGF0dGVybkFsdGVybmF0aXZlIGFuZCBkb3VibHkgbGlua2VkCiAgICAg
ICAgIC8vIHJlZmVyZW5jZXMgdG8gdGhpcyBhbHRlcm5hdGl2ZSdzIHNpYmxpbmdzLiBJbiB0aGUg
Y2FzZSBvZiB0aGUKLSAgICAgICAgLy8gT3BCb2R5QWx0ZXJuYXRpdmVFbmQgbm9kZSBhdCB0aGUg
ZW5kIG9mIGEgc2VjdGlvbiBvZiByZXBlYXRpbmcgbm9kZXMsCi0gICAgICAgIC8vIG1fbmV4dE9w
IHdpbGwgcmVmZXJlbmNlIHRoZSBPcEJvZHlBbHRlcm5hdGl2ZUJlZ2luIG5vZGUgb2YgdGhlIGZp
cnN0CisgICAgICAgIC8vIFlhcnJPcENvZGU6OkJvZHlBbHRlcm5hdGl2ZUVuZCBub2RlIGF0IHRo
ZSBlbmQgb2YgYSBzZWN0aW9uIG9mIHJlcGVhdGluZyBub2RlcywKKyAgICAgICAgLy8gbV9uZXh0
T3Agd2lsbCByZWZlcmVuY2UgdGhlIFlhcnJPcENvZGU6OkJvZHlBbHRlcm5hdGl2ZUJlZ2luIG5v
ZGUgb2YgdGhlIGZpcnN0CiAgICAgICAgIC8vIHJlcGVhdGluZyBhbHRlcm5hdGl2ZS4KICAgICAg
ICAgUGF0dGVybkFsdGVybmF0aXZlKiBtX2FsdGVybmF0aXZlOwogICAgICAgICBzaXplX3QgbV9w
cmV2aW91c09wOwpAQCAtODI3LDcgKzgyNyw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwg
OiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAv
LyByZWNhbGN1bGF0aW5nIGl0LgogICAgICAgICBDaGVja2VkPHVuc2lnbmVkPiBtX2NoZWNrQWRq
dXN0OwogCi0gICAgICAgIC8vIFVzZWQgYnkgT3BOZXN0ZWRBbHRlcm5hdGl2ZU5leHQvRW5kIHRv
IGhvbGQgdGhlIHBvaW50ZXIgdG8gdGhlCisgICAgICAgIC8vIFVzZWQgYnkgWWFyck9wQ29kZTo6
TmVzdGVkQWx0ZXJuYXRpdmVOZXh0L0VuZCB0byBob2xkIHRoZSBwb2ludGVyIHRvIHRoZQogICAg
ICAgICAvLyB2YWx1ZSB0aGF0IHdpbGwgYmUgcHVzaGVkIGludG8gdGhlIHBhdHRlcm4ncyBmcmFt
ZSB0byByZXR1cm4gdG8sCiAgICAgICAgIC8vIHVwb24gYmFja3RyYWNraW5nIGJhY2sgaW50byB0
aGUgZGlzanVuY3Rpb24uCiAgICAgICAgIERhdGFMYWJlbFB0ciBtX3JldHVybkFkZHJlc3M7CkBA
IC0xMTQ4LDcgKzExNDgsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlh
cnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgWWFyck9wJiBvcCA9
IG1fb3BzW29wSW5kZXhdOwogICAgICAgICBQYXR0ZXJuVGVybSogdGVybSA9IG9wLm1fdGVybTsK
IAotICAgICAgICBpZiAobV9wYXR0ZXJuLmlnbm9yZUNhc2UoKSAmJiBtX2NoYXJTaXplICE9IENo
YXI4KSB7CisgICAgICAgIGlmIChtX3BhdHRlcm4uaWdub3JlQ2FzZSgpICYmIG1fY2hhclNpemUg
IT0gQ2hhclNpemU6OkNoYXI4KSB7CiAgICAgICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSBKSVRG
YWlsdXJlUmVhc29uOjpCYWNrUmVmZXJlbmNlOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CkBAIC0xMTYxLDE3ICsxMTYxLDE3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBw
dWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBjb25z
dCBSZWdpc3RlcklEIHBhdHRlcm5UZW1wID0gcmVnVDI7CiAKICAgICAgICAgc3RvcmVUb0ZyYW1l
KGluZGV4LCBwYXJlbnRoZXNlc0ZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvQmFja1JlZmVy
ZW5jZTo6YmVnaW5JbmRleCgpKTsKLSAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5VHlwZSAhPSBR
dWFudGlmaWVyRml4ZWRDb3VudCB8fCB0ZXJtLT5xdWFudGl0eU1heENvdW50ICE9IDEpCisgICAg
ICAgIGlmICh0ZXJtLT5xdWFudGl0eVR5cGUgIT0gUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQg
fHwgdGVybS0+cXVhbnRpdHlNYXhDb3VudCAhPSAxKQogICAgICAgICAgICAgc3RvcmVUb0ZyYW1l
KFRydXN0ZWRJbW0zMigwKSwgcGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uICsgQmFja1RyYWNrSW5m
b0JhY2tSZWZlcmVuY2U6Om1hdGNoQW1vdW50SW5kZXgoKSk7CiAKICAgICAgICAgSnVtcExpc3Qg
bWF0Y2hlczsKIAotICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJO
b25HcmVlZHkpIHsKKyAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5VHlwZSAhPSBRdWFudGlmaWVy
VHlwZTo6Tm9uR3JlZWR5KSB7CiAgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhvdXRwdXQsIChz
dWJwYXR0ZXJuSWQgPDwgMSkgKiBzaXplb2YoaW50KSksIHBhdHRlcm5JbmRleCk7CiAgICAgICAg
ICAgICBsb2FkMzIoQWRkcmVzcyhvdXRwdXQsICgoc3VicGF0dGVybklkIDw8IDEpICsgMSkgKiBz
aXplb2YoaW50KSksIHBhdHRlcm5UZW1wKTsKIAogICAgICAgICAgICAgLy8gQW4gZW1wdHkgbWF0
Y2ggaXMgc3VjY2Vzc2Z1bCB3aXRob3V0IGNvbnN1bWluZyBjaGFyYWN0ZXJzCi0gICAgICAgICAg
ICBpZiAodGVybS0+cXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJGaXhlZENvdW50IHx8IHRlcm0t
PnF1YW50aXR5TWF4Q291bnQgIT0gMSkgeworICAgICAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5
VHlwZSAhPSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudCB8fCB0ZXJtLT5xdWFudGl0eU1heENv
dW50ICE9IDEpIHsKICAgICAgICAgICAgICAgICBtYXRjaGVzLmFwcGVuZChicmFuY2gzMihFcXVh
bCwgVHJ1c3RlZEltbTMyKC0xKSwgcGF0dGVybkluZGV4KSk7CiAgICAgICAgICAgICAgICAgbWF0
Y2hlcy5hcHBlbmQoYnJhbmNoMzIoRXF1YWwsIHBhdHRlcm5JbmRleCwgcGF0dGVyblRlbXApKTsK
ICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0xMTg1LDcgKzExODUsNyBAQCBjbGFzcyBZYXJyR2Vu
ZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVy
IHsKICAgICAgICAgfQogCiAgICAgICAgIHN3aXRjaCAodGVybS0+cXVhbnRpdHlUeXBlKSB7Ci0g
ICAgICAgIGNhc2UgUXVhbnRpZmllckZpeGVkQ291bnQ6IHsKKyAgICAgICAgY2FzZSBRdWFudGlm
aWVyVHlwZTo6Rml4ZWRDb3VudDogewogICAgICAgICAgICAgTGFiZWwgb3V0ZXJMb29wKHRoaXMp
OwogCiAgICAgICAgICAgICAvLyBQYXR0ZXJuVGVtcCBzaG91bGQgY29udGFpbiBwYXR0ZXJuIGVu
ZCBpbmRleCBhdCB0aGlzIHBvaW50CkBAIC0xMjA3LDcgKzEyMDcsNyBAQCBjbGFzcyBZYXJyR2Vu
ZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVy
IHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBRdWFudGlm
aWVyR3JlZWR5OiB7CisgICAgICAgIGNhc2UgUXVhbnRpZmllclR5cGU6OkdyZWVkeTogewogICAg
ICAgICAgICAgSnVtcExpc3QgaW5jb21wbGV0ZU1hdGNoZXM7CiAKICAgICAgICAgICAgIExhYmVs
IG91dGVyTG9vcCh0aGlzKTsKQEAgLTEyMzgsNyArMTIzOCw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0
b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIFF1YW50aWZpZXJO
b25HcmVlZHk6IHsKKyAgICAgICAgY2FzZSBRdWFudGlmaWVyVHlwZTo6Tm9uR3JlZWR5OiB7CiAg
ICAgICAgICAgICBKdW1wTGlzdCBpbmNvbXBsZXRlTWF0Y2hlczsKIAogICAgICAgICAgICAgbWF0
Y2hlcy5hcHBlbmQoanVtcCgpKTsKQEAgLTEyODgsMTEgKzEyODgsMTEgQEAgY2xhc3MgWWFyckdl
bmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxl
ciB7CiAKICAgICAgICAgdW5zaWduZWQgcGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uID0gdGVybS0+
ZnJhbWVMb2NhdGlvbjsKICAgICAgICAgc3dpdGNoICh0ZXJtLT5xdWFudGl0eVR5cGUpIHsKLSAg
ICAgICAgY2FzZSBRdWFudGlmaWVyRml4ZWRDb3VudDoKKyAgICAgICAgY2FzZSBRdWFudGlmaWVy
VHlwZTo6Rml4ZWRDb3VudDoKICAgICAgICAgICAgIGxvYWRGcm9tRnJhbWUocGFyZW50aGVzZXNG
cmFtZUxvY2F0aW9uICsgQmFja1RyYWNrSW5mb0JhY2tSZWZlcmVuY2U6OmJlZ2luSW5kZXgoKSwg
aW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgY2FzZSBRdWFudGlmaWVyR3Jl
ZWR5OiB7CisgICAgICAgIGNhc2UgUXVhbnRpZmllclR5cGU6OkdyZWVkeTogewogICAgICAgICAg
ICAgY29uc3QgUmVnaXN0ZXJJRCBtYXRjaEFtb3VudCA9IHJlZ1QwOwogICAgICAgICAgICAgY29u
c3QgUmVnaXN0ZXJJRCBwYXR0ZXJuU3RhcnRJbmRleCA9IHJlZ1QxOwogICAgICAgICAgICAgY29u
c3QgUmVnaXN0ZXJJRCBwYXR0ZXJuRW5kSW5kZXhPckxlbiA9IHJlZ1QyOwpAQCAtMTMxMSw3ICsx
MzExLDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywg
cHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
Ci0gICAgICAgIGNhc2UgUXVhbnRpZmllck5vbkdyZWVkeTogeworICAgICAgICBjYXNlIFF1YW50
aWZpZXJUeXBlOjpOb25HcmVlZHk6IHsKICAgICAgICAgICAgIGNvbnN0IFJlZ2lzdGVySUQgbWF0
Y2hBbW91bnQgPSByZWdUMDsKIAogICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKGF0RW5kT2ZJ
bnB1dCgpKTsKQEAgLTEzMzYsNyArMTMzNiw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwg
OiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBp
ZiAob3AubV9pc0RlYWRDb2RlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICAg
ICAgLy8gbV9vcHMgYWx3YXlzIGVuZHMgd2l0aCBhIE9wQm9keUFsdGVybmF0aXZlRW5kIG9yIE9w
TWF0Y2hGYWlsZWQKKyAgICAgICAgLy8gbV9vcHMgYWx3YXlzIGVuZHMgd2l0aCBhIFlhcnJPcENv
ZGU6OkJvZHlBbHRlcm5hdGl2ZUVuZCBvciBZYXJyT3BDb2RlOjpNYXRjaEZhaWxlZAogICAgICAg
ICAvLyBub2RlLCBzbyB0aGVyZSBtdXN0IGFsd2F5cyBiZSBhdCBsZWFzdCBvbmUgbW9yZSBub2Rl
LgogICAgICAgICBBU1NFUlQob3BJbmRleCArIDEgPCBtX29wcy5zaXplKCkpOwogICAgICAgICBZ
YXJyT3AqIG5leHRPcCA9ICZtX29wc1tvcEluZGV4ICsgMV07CkBAIC0xMzQ0LDcgKzEzNDQsNyBA
QCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRl
IE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgUGF0dGVyblRlcm0qIHRlcm0gPSBvcC5tX3Rlcm07
CiAgICAgICAgIFVDaGFyMzIgY2ggPSB0ZXJtLT5wYXR0ZXJuQ2hhcmFjdGVyOwogCi0gICAgICAg
IGlmICghaXNMYXRpbjEoY2gpICYmIChtX2NoYXJTaXplID09IENoYXI4KSkgeworICAgICAgICBp
ZiAoIWlzTGF0aW4xKGNoKSAmJiAobV9jaGFyU2l6ZSA9PSBDaGFyU2l6ZTo6Q2hhcjgpKSB7CiAg
ICAgICAgICAgICAvLyBIYXZlIGEgMTYgYml0IHBhdHRlcm4gY2hhcmFjdGVyIGFuZCBhbiA4IGJp
dCBzdHJpbmcgLSBzaG9ydCBjaXJjdWl0CiAgICAgICAgICAgICBvcC5tX2p1bXBzLmFwcGVuZChq
dW1wKCkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTM1MiwxMyArMTM1MiwxMyBAQCBjbGFz
cyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3Jv
QXNzZW1ibGVyIHsKIAogICAgICAgICBjb25zdCBSZWdpc3RlcklEIGNoYXJhY3RlciA9IHJlZ1Qw
OwogI2lmIENQVShYODZfNjQpIHx8IENQVShBUk02NCkKLSAgICAgICAgdW5zaWduZWQgbWF4Q2hh
cmFjdGVyc0F0T25jZSA9IG1fY2hhclNpemUgPT0gQ2hhcjggPyA4IDogNDsKKyAgICAgICAgdW5z
aWduZWQgbWF4Q2hhcmFjdGVyc0F0T25jZSA9IG1fY2hhclNpemUgPT0gQ2hhclNpemU6OkNoYXI4
ID8gOCA6IDQ7CiAjZWxzZQotICAgICAgICB1bnNpZ25lZCBtYXhDaGFyYWN0ZXJzQXRPbmNlID0g
bV9jaGFyU2l6ZSA9PSBDaGFyOCA/IDQgOiAyOworICAgICAgICB1bnNpZ25lZCBtYXhDaGFyYWN0
ZXJzQXRPbmNlID0gbV9jaGFyU2l6ZSA9PSBDaGFyU2l6ZTo6Q2hhcjggPyA0IDogMjsKICNlbmRp
ZgogICAgICAgICB1aW50NjRfdCBpZ25vcmVDYXNlTWFzayA9IDA7CiAjaWYgQ1BVKEJJR19FTkRJ
QU4pCi0gICAgICAgIHVpbnQ2NF90IGFsbENoYXJhY3RlcnMgPSBjaCA8PCAobV9jaGFyU2l6ZSA9
PSBDaGFyOCA/IDI0IDogMTYpOworICAgICAgICB1aW50NjRfdCBhbGxDaGFyYWN0ZXJzID0gY2gg
PDwgKG1fY2hhclNpemUgPT0gQ2hhclNpemU6OkNoYXI4ID8gMjQgOiAxNik7CiAjZWxzZQogICAg
ICAgICB1aW50NjRfdCBhbGxDaGFyYWN0ZXJzID0gY2g7CiAjZW5kaWYKQEAgLTEzNzEsMTkgKzEz
NzEsMTkgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywg
cHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAKICAgICAgICAgaWYgKG1fcGF0dGVybi5pZ25vcmVD
YXNlKCkgJiYgaXNBU0NJSUFscGhhKGNoKSkgewogI2lmIENQVShCSUdfRU5ESUFOKQotICAgICAg
ICAgICAgaWdub3JlQ2FzZU1hc2sgfD0gMzIgPDwgKG1fY2hhclNpemUgPT0gQ2hhcjggPyAyNCA6
IDE2KTsKKyAgICAgICAgICAgIGlnbm9yZUNhc2VNYXNrIHw9IDMyIDw8IChtX2NoYXJTaXplID09
IENoYXJTaXplOjpDaGFyOCA/IDI0IDogMTYpOwogI2Vsc2UKICAgICAgICAgICAgIGlnbm9yZUNh
c2VNYXNrIHw9IDMyOwogI2VuZGlmCiAgICAgICAgIH0KIAotICAgICAgICBmb3IgKG51bWJlckNo
YXJhY3RlcnMgPSAxOyBudW1iZXJDaGFyYWN0ZXJzIDwgbWF4Q2hhcmFjdGVyc0F0T25jZSAmJiBu
ZXh0T3AtPm1fb3AgPT0gT3BUZXJtOyArK251bWJlckNoYXJhY3RlcnMsIG5leHRPcCA9ICZtX29w
c1tvcEluZGV4ICsgbnVtYmVyQ2hhcmFjdGVyc10pIHsKKyAgICAgICAgZm9yIChudW1iZXJDaGFy
YWN0ZXJzID0gMTsgbnVtYmVyQ2hhcmFjdGVycyA8IG1heENoYXJhY3RlcnNBdE9uY2UgJiYgbmV4
dE9wLT5tX29wID09IFlhcnJPcENvZGU6OlRlcm07ICsrbnVtYmVyQ2hhcmFjdGVycywgbmV4dE9w
ID0gJm1fb3BzW29wSW5kZXggKyBudW1iZXJDaGFyYWN0ZXJzXSkgewogICAgICAgICAgICAgUGF0
dGVyblRlcm0qIG5leHRUZXJtID0gbmV4dE9wLT5tX3Rlcm07CiAKICAgICAgICAgICAgIC8vIFlh
cnJKSVQgaGFuZGxlcyBkZWNvZGVkIHN1cnJvZ2F0ZSBwYWlyIGFzIG9uZSBjaGFyYWN0ZXIgaWYg
dW5pY29kZSBmbGFnIGlzIGVuYWJsZWQuCiAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGhlIG51
bWJlckNoYXJhY3RlcnMgYmVjb21lIDEgd2hpbGUgdGhlIHdpZHRoIG9mIHRoZSBwYXR0ZXJuIGNo
YXJhY3RlciBiZWNvbWVzIDMyYml0IGluIHRoaXMgY2FzZS4KLSAgICAgICAgICAgIGlmIChuZXh0
VGVybS0+dHlwZSAhPSBQYXR0ZXJuVGVybTo6VHlwZVBhdHRlcm5DaGFyYWN0ZXIKLSAgICAgICAg
ICAgICAgICB8fCBuZXh0VGVybS0+cXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJGaXhlZENvdW50
CisgICAgICAgICAgICBpZiAobmV4dFRlcm0tPnR5cGUgIT0gUGF0dGVyblRlcm06OlR5cGU6OlBh
dHRlcm5DaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICB8fCBuZXh0VGVybS0+cXVhbnRpdHlUeXBl
ICE9IFF1YW50aWZpZXJUeXBlOjpGaXhlZENvdW50CiAgICAgICAgICAgICAgICAgfHwgbmV4dFRl
cm0tPnF1YW50aXR5TWF4Q291bnQgIT0gMQogICAgICAgICAgICAgICAgIHx8IG5leHRUZXJtLT5p
bnB1dFBvc2l0aW9uICE9IChzdGFydFRlcm1Qb3NpdGlvbiArIG51bWJlckNoYXJhY3RlcnMpCiAg
ICAgICAgICAgICAgICAgfHwgKFUxNl9MRU5HVEgobmV4dFRlcm0tPnBhdHRlcm5DaGFyYWN0ZXIp
ICE9IDEgJiYgbV9kZWNvZGVTdXJyb2dhdGVQYWlycykpCkBAIC0xMzkyLDE0ICsxMzkyLDE0IEBA
IGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUg
TWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgbmV4dE9wLT5tX2lzRGVhZENvZGUgPSB0cnVl
OwogCiAjaWYgQ1BVKEJJR19FTkRJQU4pCi0gICAgICAgICAgICBpbnQgc2hpZnRBbW91bnQgPSAo
bV9jaGFyU2l6ZSA9PSBDaGFyOCA/IDI0IDogMTYpIC0gKChtX2NoYXJTaXplID09IENoYXI4ID8g
OCA6IDE2KSAqIG51bWJlckNoYXJhY3RlcnMpOworICAgICAgICAgICAgaW50IHNoaWZ0QW1vdW50
ID0gKG1fY2hhclNpemUgPT0gQ2hhclNpemU6OkNoYXI4ID8gMjQgOiAxNikgLSAoKG1fY2hhclNp
emUgPT0gQ2hhclNpemU6OkNoYXI4ID8gOCA6IDE2KSAqIG51bWJlckNoYXJhY3RlcnMpOwogI2Vs
c2UKLSAgICAgICAgICAgIGludCBzaGlmdEFtb3VudCA9IChtX2NoYXJTaXplID09IENoYXI4ID8g
OCA6IDE2KSAqIG51bWJlckNoYXJhY3RlcnM7CisgICAgICAgICAgICBpbnQgc2hpZnRBbW91bnQg
PSAobV9jaGFyU2l6ZSA9PSBDaGFyU2l6ZTo6Q2hhcjggPyA4IDogMTYpICogbnVtYmVyQ2hhcmFj
dGVyczsKICNlbmRpZgogCiAgICAgICAgICAgICBVQ2hhcjMyIGN1cnJlbnRDaGFyYWN0ZXIgPSBu
ZXh0VGVybS0+cGF0dGVybkNoYXJhY3RlcjsKIAotICAgICAgICAgICAgaWYgKCFpc0xhdGluMShj
dXJyZW50Q2hhcmFjdGVyKSAmJiAobV9jaGFyU2l6ZSA9PSBDaGFyOCkpIHsKKyAgICAgICAgICAg
IGlmICghaXNMYXRpbjEoY3VycmVudENoYXJhY3RlcikgJiYgKG1fY2hhclNpemUgPT0gQ2hhclNp
emU6OkNoYXI4KSkgewogICAgICAgICAgICAgICAgIC8vIEhhdmUgYSAxNiBiaXQgcGF0dGVybiBj
aGFyYWN0ZXIgYW5kIGFuIDggYml0IHN0cmluZyAtIHNob3J0IGNpcmN1aXQKICAgICAgICAgICAg
ICAgICBvcC5tX2p1bXBzLmFwcGVuZChqdW1wKCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
QEAgLTE0MTgsNyArMTQxOCw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMg
WWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBpZiAobV9kZWNv
ZGVTdXJyb2dhdGVQYWlycykKICAgICAgICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKGp1bXBJZk5v
QXZhaWxhYmxlSW5wdXQoKSk7CiAKLSAgICAgICAgaWYgKG1fY2hhclNpemUgPT0gQ2hhcjgpIHsK
KyAgICAgICAgaWYgKG1fY2hhclNpemUgPT0gQ2hhclNpemU6OkNoYXI4KSB7CiAgICAgICAgICAg
ICBhdXRvIGNoZWNrMSA9IFsmXSAoQ2hlY2tlZDx1bnNpZ25lZD4gb2Zmc2V0LCBVQ2hhcjMyIGNo
YXJhY3RlcnMpIHsKICAgICAgICAgICAgICAgICBvcC5tX2p1bXBzLmFwcGVuZChqdW1wSWZDaGFy
Tm90RXF1YWxzKGNoYXJhY3RlcnMsIG9mZnNldCwgY2hhcmFjdGVyKSk7CiAgICAgICAgICAgICB9
OwpAQCAtMTU5NCw3ICsxNTk0LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1Ymxp
YyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgIG1vdmUoVHJ1
c3RlZEltbTMyKDApLCBjb3VudFJlZ2lzdGVyKTsKIAogICAgICAgICAvLyBVbmxlc3MgaGF2ZSBh
IDE2IGJpdCBwYXR0ZXJuIGNoYXJhY3RlciBhbmQgYW4gOCBiaXQgc3RyaW5nIC0gc2hvcnQgY2ly
Y3VpdAotICAgICAgICBpZiAoISghaXNMYXRpbjEoY2gpICYmIChtX2NoYXJTaXplID09IENoYXI4
KSkpIHsKKyAgICAgICAgaWYgKCEoIWlzTGF0aW4xKGNoKSAmJiAobV9jaGFyU2l6ZSA9PSBDaGFy
U2l6ZTo6Q2hhcjgpKSkgewogICAgICAgICAgICAgSnVtcExpc3QgZmFpbHVyZXM7CiAgICAgICAg
ICAgICBMYWJlbCBsb29wKHRoaXMpOwogICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKGF0RW5k
T2ZJbnB1dCgpKTsKQEAgLTE2NjcsNyArMTY2Nyw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmlu
YWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAg
ICBsb2FkRnJvbUZyYW1lKHRlcm0tPmZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvUGF0dGVy
bkNoYXJhY3Rlcjo6bWF0Y2hBbW91bnRJbmRleCgpLCBjb3VudFJlZ2lzdGVyKTsKIAogICAgICAg
ICAvLyBVbmxlc3MgaGF2ZSBhIDE2IGJpdCBwYXR0ZXJuIGNoYXJhY3RlciBhbmQgYW4gOCBiaXQg
c3RyaW5nIC0gc2hvcnQgY2lyY3VpdAotICAgICAgICBpZiAoISghaXNMYXRpbjEoY2gpICYmICht
X2NoYXJTaXplID09IENoYXI4KSkpIHsKKyAgICAgICAgaWYgKCEoIWlzTGF0aW4xKGNoKSAmJiAo
bV9jaGFyU2l6ZSA9PSBDaGFyU2l6ZTo6Q2hhcjgpKSkgewogICAgICAgICAgICAgSnVtcExpc3Qg
bm9uR3JlZWR5RmFpbHVyZXM7CiAgICAgICAgICAgICBub25HcmVlZHlGYWlsdXJlcy5hcHBlbmQo
YXRFbmRPZklucHV0KCkpOwogICAgICAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5TWF4Q291bnQg
IT0gcXVhbnRpZnlJbmZpbml0ZSkKQEAgLTIwMTksNyArMjAxOSw3IEBAIGNsYXNzIFlhcnJHZW5l
cmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIg
ewogICAgICAgICBzYXZlU3RhcnRJbmRleC5hcHBlbmQoYnJhbmNoMzIoQmVsb3dPckVxdWFsLCBt
YXRjaFBvcywgaW5pdGlhbFN0YXJ0KSk7CiAgICAgICAgIExhYmVsIGZpbmRCT0xMb29wKHRoaXMp
OwogICAgICAgICBzdWIzMihUcnVzdGVkSW1tMzIoMSksIG1hdGNoUG9zKTsKLSAgICAgICAgaWYg
KG1fY2hhclNpemUgPT0gQ2hhcjgpCisgICAgICAgIGlmIChtX2NoYXJTaXplID09IENoYXJTaXpl
OjpDaGFyOCkKICAgICAgICAgICAgIGxvYWQ4KEJhc2VJbmRleChpbnB1dCwgbWF0Y2hQb3MsIFRp
bWVzT25lLCAwKSwgY2hhcmFjdGVyKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbG9hZDE2
KEJhc2VJbmRleChpbnB1dCwgbWF0Y2hQb3MsIFRpbWVzVHdvLCAwKSwgY2hhcmFjdGVyKTsKQEAg
LTIwNDIsNyArMjA0Miw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFy
ckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogCiAgICAgICAgIExhYmVsIGZpbmRF
T0xMb29wKHRoaXMpOyAgICAgICAgCiAgICAgICAgIGZvdW5kRW5kaW5nTmV3TGluZS5hcHBlbmQo
YnJhbmNoMzIoRXF1YWwsIG1hdGNoUG9zLCBsZW5ndGgpKTsKLSAgICAgICAgaWYgKG1fY2hhclNp
emUgPT0gQ2hhcjgpCisgICAgICAgIGlmIChtX2NoYXJTaXplID09IENoYXJTaXplOjpDaGFyOCkK
ICAgICAgICAgICAgIGxvYWQ4KEJhc2VJbmRleChpbnB1dCwgbWF0Y2hQb3MsIFRpbWVzT25lLCAw
KSwgY2hhcmFjdGVyKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbG9hZDE2KEJhc2VJbmRl
eChpbnB1dCwgbWF0Y2hQb3MsIFRpbWVzVHdvLCAwKSwgY2hhcmFjdGVyKTsKQEAgLTIwNzIsNjgg
KzIwNzIsNjggQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5m
bywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgIFBhdHRlcm5UZXJtKiB0ZXJtID0g
b3AubV90ZXJtOwogCiAgICAgICAgIHN3aXRjaCAodGVybS0+dHlwZSkgewotICAgICAgICBjYXNl
IFBhdHRlcm5UZXJtOjpUeXBlUGF0dGVybkNoYXJhY3RlcjoKKyAgICAgICAgY2FzZSBQYXR0ZXJu
VGVybTo6VHlwZTo6UGF0dGVybkNoYXJhY3RlcjoKICAgICAgICAgICAgIHN3aXRjaCAodGVybS0+
cXVhbnRpdHlUeXBlKSB7Ci0gICAgICAgICAgICBjYXNlIFF1YW50aWZpZXJGaXhlZENvdW50Ogor
ICAgICAgICAgICAgY2FzZSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudDoKICAgICAgICAgICAg
ICAgICBpZiAodGVybS0+cXVhbnRpdHlNYXhDb3VudCA9PSAxKQogICAgICAgICAgICAgICAgICAg
ICBnZW5lcmF0ZVBhdHRlcm5DaGFyYWN0ZXJPbmNlKG9wSW5kZXgpOwogICAgICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVQYXR0ZXJuQ2hhcmFjdGVyRml4ZWQo
b3BJbmRleCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFF1YW50
aWZpZXJHcmVlZHk6CisgICAgICAgICAgICBjYXNlIFF1YW50aWZpZXJUeXBlOjpHcmVlZHk6CiAg
ICAgICAgICAgICAgICAgZ2VuZXJhdGVQYXR0ZXJuQ2hhcmFjdGVyR3JlZWR5KG9wSW5kZXgpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBRdWFudGlmaWVyTm9uR3Jl
ZWR5OgorICAgICAgICAgICAgY2FzZSBRdWFudGlmaWVyVHlwZTo6Tm9uR3JlZWR5OgogICAgICAg
ICAgICAgICAgIGdlbmVyYXRlUGF0dGVybkNoYXJhY3Rlck5vbkdyZWVkeShvcEluZGV4KTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwog
Ci0gICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGVDaGFyYWN0ZXJDbGFzczoKKyAgICAgICAg
Y2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6Q2hhcmFjdGVyQ2xhc3M6CiAgICAgICAgICAgICBzd2l0
Y2ggKHRlcm0tPnF1YW50aXR5VHlwZSkgewotICAgICAgICAgICAgY2FzZSBRdWFudGlmaWVyRml4
ZWRDb3VudDoKKyAgICAgICAgICAgIGNhc2UgUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQ6CiAg
ICAgICAgICAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5TWF4Q291bnQgPT0gMSkKICAgICAgICAg
ICAgICAgICAgICAgZ2VuZXJhdGVDaGFyYWN0ZXJDbGFzc09uY2Uob3BJbmRleCk7CiAgICAgICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZUNoYXJhY3RlckNsYXNz
Rml4ZWQob3BJbmRleCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNl
IFF1YW50aWZpZXJHcmVlZHk6CisgICAgICAgICAgICBjYXNlIFF1YW50aWZpZXJUeXBlOjpHcmVl
ZHk6CiAgICAgICAgICAgICAgICAgZ2VuZXJhdGVDaGFyYWN0ZXJDbGFzc0dyZWVkeShvcEluZGV4
KTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgUXVhbnRpZmllck5v
bkdyZWVkeToKKyAgICAgICAgICAgIGNhc2UgUXVhbnRpZmllclR5cGU6Ok5vbkdyZWVkeToKICAg
ICAgICAgICAgICAgICBnZW5lcmF0ZUNoYXJhY3RlckNsYXNzTm9uR3JlZWR5KG9wSW5kZXgpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7
CiAKLSAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZUFzc2VydGlvbkJPTDoKKyAgICAgICAg
Y2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6QXNzZXJ0aW9uQk9MOgogICAgICAgICAgICAgZ2VuZXJh
dGVBc3NlcnRpb25CT0wob3BJbmRleCk7CiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBj
YXNlIFBhdHRlcm5UZXJtOjpUeXBlQXNzZXJ0aW9uRU9MOgorICAgICAgICBjYXNlIFBhdHRlcm5U
ZXJtOjpUeXBlOjpBc3NlcnRpb25FT0w6CiAgICAgICAgICAgICBnZW5lcmF0ZUFzc2VydGlvbkVP
TChvcEluZGV4KTsKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGNhc2UgUGF0dGVyblRl
cm06OlR5cGVBc3NlcnRpb25Xb3JkQm91bmRhcnk6CisgICAgICAgIGNhc2UgUGF0dGVyblRlcm06
OlR5cGU6OkFzc2VydGlvbldvcmRCb3VuZGFyeToKICAgICAgICAgICAgIGdlbmVyYXRlQXNzZXJ0
aW9uV29yZEJvdW5kYXJ5KG9wSW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAg
Y2FzZSBQYXR0ZXJuVGVybTo6VHlwZUZvcndhcmRSZWZlcmVuY2U6CisgICAgICAgIGNhc2UgUGF0
dGVyblRlcm06OlR5cGU6OkZvcndhcmRSZWZlcmVuY2U6CiAgICAgICAgICAgICBtX2ZhaWx1cmVS
ZWFzb24gPSBKSVRGYWlsdXJlUmVhc29uOjpGb3J3YXJkUmVmZXJlbmNlOwogICAgICAgICAgICAg
YnJlYWs7CiAKLSAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0
dGVybjoKLSAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZVBhcmVudGhldGljYWxBc3NlcnRp
b246CisgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OlBhcmVudGhlc2VzU3VicGF0dGVy
bjoKKyAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6UGFyZW50aGV0aWNhbEFzc2VydGlv
bjoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKLSAgICAgICAg
Y2FzZSBQYXR0ZXJuVGVybTo6VHlwZUJhY2tSZWZlcmVuY2U6CisgICAgICAgIGNhc2UgUGF0dGVy
blRlcm06OlR5cGU6OkJhY2tSZWZlcmVuY2U6CiAjaWYgRU5BQkxFKFlBUlJfSklUX0JBQ0tSRUZF
UkVOQ0VTKQogICAgICAgICAgICAgZ2VuZXJhdGVCYWNrUmVmZXJlbmNlKG9wSW5kZXgpOwogI2Vs
c2UKICAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9IEpJVEZhaWx1cmVSZWFzb246OkJhY2tS
ZWZlcmVuY2U7CiAjZW5kaWYKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFBhdHRl
cm5UZXJtOjpUeXBlRG90U3RhckVuY2xvc3VyZToKKyAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6
VHlwZTo6RG90U3RhckVuY2xvc3VyZToKICAgICAgICAgICAgIGdlbmVyYXRlRG90U3RhckVuY2xv
c3VyZShvcEluZGV4KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yMTQ0LDYx
ICsyMTQ0LDYxIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVElu
Zm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBQYXR0ZXJuVGVybSogdGVybSA9
IG9wLm1fdGVybTsKIAogICAgICAgICBzd2l0Y2ggKHRlcm0tPnR5cGUpIHsKLSAgICAgICAgY2Fz
ZSBQYXR0ZXJuVGVybTo6VHlwZVBhdHRlcm5DaGFyYWN0ZXI6CisgICAgICAgIGNhc2UgUGF0dGVy
blRlcm06OlR5cGU6OlBhdHRlcm5DaGFyYWN0ZXI6CiAgICAgICAgICAgICBzd2l0Y2ggKHRlcm0t
PnF1YW50aXR5VHlwZSkgewotICAgICAgICAgICAgY2FzZSBRdWFudGlmaWVyRml4ZWRDb3VudDoK
KyAgICAgICAgICAgIGNhc2UgUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQ6CiAgICAgICAgICAg
ICAgICAgaWYgKHRlcm0tPnF1YW50aXR5TWF4Q291bnQgPT0gMSkKICAgICAgICAgICAgICAgICAg
ICAgYmFja3RyYWNrUGF0dGVybkNoYXJhY3Rlck9uY2Uob3BJbmRleCk7CiAgICAgICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBiYWNrdHJhY2tQYXR0ZXJuQ2hhcmFjdGVyRml4
ZWQob3BJbmRleCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFF1
YW50aWZpZXJHcmVlZHk6CisgICAgICAgICAgICBjYXNlIFF1YW50aWZpZXJUeXBlOjpHcmVlZHk6
CiAgICAgICAgICAgICAgICAgYmFja3RyYWNrUGF0dGVybkNoYXJhY3RlckdyZWVkeShvcEluZGV4
KTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgUXVhbnRpZmllck5v
bkdyZWVkeToKKyAgICAgICAgICAgIGNhc2UgUXVhbnRpZmllclR5cGU6Ok5vbkdyZWVkeToKICAg
ICAgICAgICAgICAgICBiYWNrdHJhY2tQYXR0ZXJuQ2hhcmFjdGVyTm9uR3JlZWR5KG9wSW5kZXgp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJl
YWs7CiAKLSAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZUNoYXJhY3RlckNsYXNzOgorICAg
ICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpDaGFyYWN0ZXJDbGFzczoKICAgICAgICAgICAg
IHN3aXRjaCAodGVybS0+cXVhbnRpdHlUeXBlKSB7Ci0gICAgICAgICAgICBjYXNlIFF1YW50aWZp
ZXJGaXhlZENvdW50OgorICAgICAgICAgICAgY2FzZSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3Vu
dDoKICAgICAgICAgICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlNYXhDb3VudCA9PSAxKQogICAg
ICAgICAgICAgICAgICAgICBiYWNrdHJhY2tDaGFyYWN0ZXJDbGFzc09uY2Uob3BJbmRleCk7CiAg
ICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBiYWNrdHJhY2tDaGFyYWN0
ZXJDbGFzc0ZpeGVkKG9wSW5kZXgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgY2FzZSBRdWFudGlmaWVyR3JlZWR5OgorICAgICAgICAgICAgY2FzZSBRdWFudGlmaWVyVHlw
ZTo6R3JlZWR5OgogICAgICAgICAgICAgICAgIGJhY2t0cmFja0NoYXJhY3RlckNsYXNzR3JlZWR5
KG9wSW5kZXgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBRdWFu
dGlmaWVyTm9uR3JlZWR5OgorICAgICAgICAgICAgY2FzZSBRdWFudGlmaWVyVHlwZTo6Tm9uR3Jl
ZWR5OgogICAgICAgICAgICAgICAgIGJhY2t0cmFja0NoYXJhY3RlckNsYXNzTm9uR3JlZWR5KG9w
SW5kZXgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgYnJlYWs7CiAKLSAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZUFzc2VydGlvbkJPTDoK
KyAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6QXNzZXJ0aW9uQk9MOgogICAgICAgICAg
ICAgYmFja3RyYWNrQXNzZXJ0aW9uQk9MKG9wSW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAK
LSAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZUFzc2VydGlvbkVPTDoKKyAgICAgICAgY2Fz
ZSBQYXR0ZXJuVGVybTo6VHlwZTo6QXNzZXJ0aW9uRU9MOgogICAgICAgICAgICAgYmFja3RyYWNr
QXNzZXJ0aW9uRU9MKG9wSW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgY2Fz
ZSBQYXR0ZXJuVGVybTo6VHlwZUFzc2VydGlvbldvcmRCb3VuZGFyeToKKyAgICAgICAgY2FzZSBQ
YXR0ZXJuVGVybTo6VHlwZTo6QXNzZXJ0aW9uV29yZEJvdW5kYXJ5OgogICAgICAgICAgICAgYmFj
a3RyYWNrQXNzZXJ0aW9uV29yZEJvdW5kYXJ5KG9wSW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7
CiAKLSAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZUZvcndhcmRSZWZlcmVuY2U6CisgICAg
ICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkZvcndhcmRSZWZlcmVuY2U6CiAgICAgICAgICAg
ICBtX2ZhaWx1cmVSZWFzb24gPSBKSVRGYWlsdXJlUmVhc29uOjpGb3J3YXJkUmVmZXJlbmNlOwog
ICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZVBhcmVu
dGhlc2VzU3VicGF0dGVybjoKLSAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZVBhcmVudGhl
dGljYWxBc3NlcnRpb246CisgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OlBhcmVudGhl
c2VzU3VicGF0dGVybjoKKyAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6UGFyZW50aGV0
aWNhbEFzc2VydGlvbjoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAKLSAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZUJhY2tSZWZlcmVuY2U6CisgICAgICAg
IGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkJhY2tSZWZlcmVuY2U6CiAjaWYgRU5BQkxFKFlBUlJf
SklUX0JBQ0tSRUZFUkVOQ0VTKQogICAgICAgICAgICAgYmFja3RyYWNrQmFja1JlZmVyZW5jZShv
cEluZGV4KTsKICNlbHNlCkBAIC0yMjA2LDcgKzIyMDYsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9y
IGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICNl
bmRpZgogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlw
ZURvdFN0YXJFbmNsb3N1cmU6CisgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkRvdFN0
YXJFbmNsb3N1cmU6CiAgICAgICAgICAgICBiYWNrdHJhY2tEb3RTdGFyRW5jbG9zdXJlKG9wSW5k
ZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTIyMjUsMTEgKzIyMjUsMTEg
QEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0
ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICBZYXJyT3AmIG9wID0gbV9vcHNbb3BJbmRl
eF07CiAgICAgICAgICAgICBzd2l0Y2ggKG9wLm1fb3ApIHsKIAotICAgICAgICAgICAgY2FzZSBP
cFRlcm06CisgICAgICAgICAgICBjYXNlIFlhcnJPcENvZGU6OlRlcm06CiAgICAgICAgICAgICAg
ICAgZ2VuZXJhdGVUZXJtKG9wSW5kZXgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAg
ICAgICAgICAvLyBPcEJvZHlBbHRlcm5hdGl2ZUJlZ2luL05leHQvRW5kCisgICAgICAgICAgICAv
LyBZYXJyT3BDb2RlOjpCb2R5QWx0ZXJuYXRpdmVCZWdpbi9OZXh0L0VuZAogICAgICAgICAgICAg
Ly8KICAgICAgICAgICAgIC8vIFRoZXNlIG5vZGVzIHdyYXAgdGhlIHNldCBvZiBhbHRlcm5hdGl2
ZXMgaW4gdGhlIGJvZHkgb2YgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbi4KICAgICAgICAgICAgIC8v
IFRoZXJlIG1heSBiZSBlaXRoZXIgb25lIG9yIHR3byBjaGFpbnMgb2YgT3BCb2R5QWx0ZXJuYXRp
dmUgbm9kZXMsIG9uZSByZXByZXNlbnRpbmcKQEAgLTIyNTEsNyArMjI1MSw3IEBAIGNsYXNzIFlh
cnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3Nl
bWJsZXIgewogICAgICAgICAgICAgLy8gSW4gdGhlIGNhc2UgJ29uY2UgdGhyb3VnaCcgZXhwcmVz
c2lvbnMsIHRoZSBFbmQgbm9kZSB3aWxsIGFsc28gaGF2ZSBhIHJlZW50cnkKICAgICAgICAgICAg
IC8vIHBvaW50IHRvIGp1bXAgdG8gd2hlbiB0aGUgbGFzdCBhbHRlcm5hdGl2ZSBmYWlscy4gQWdh
aW4sIHRoaXMgZXhwZWN0cyB0aGUgaW5wdXQKICAgICAgICAgICAgIC8vIHBvc2l0aW9uIHRvIHN0
aWxsIHJlZmxlY3QgdGhhdCBleHBlY3RlZCBieSB0aGUgcHJpb3IgYWx0ZXJuYXRpdmUuCi0gICAg
ICAgICAgICBjYXNlIE9wQm9keUFsdGVybmF0aXZlQmVnaW46IHsKKyAgICAgICAgICAgIGNhc2Ug
WWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlQmVnaW46IHsKICAgICAgICAgICAgICAgICBQYXR0
ZXJuQWx0ZXJuYXRpdmUqIGFsdGVybmF0aXZlID0gb3AubV9hbHRlcm5hdGl2ZTsKIAogICAgICAg
ICAgICAgICAgIC8vIFVwb24gZW50cnkgYXQgdGhlIGhlYWQgb2YgdGhlIHNldCBvZiBhbHRlcm5h
dGl2ZXMsIGNoZWNrIGlmIGlucHV0IGlzIGF2YWlsYWJsZQpAQCAtMjI2NCw4ICsyMjY0LDggQEAg
Y2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBN
YWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAgbV9jaGVja2VkT2Zmc2V0ICs9IGFsdGVy
bmF0aXZlLT5tX21pbmltdW1TaXplOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgY2FzZSBPcEJvZHlBbHRlcm5hdGl2ZU5leHQ6Ci0gICAgICAgICAg
ICBjYXNlIE9wQm9keUFsdGVybmF0aXZlRW5kOiB7CisgICAgICAgICAgICBjYXNlIFlhcnJPcENv
ZGU6OkJvZHlBbHRlcm5hdGl2ZU5leHQ6CisgICAgICAgICAgICBjYXNlIFlhcnJPcENvZGU6OkJv
ZHlBbHRlcm5hdGl2ZUVuZDogewogICAgICAgICAgICAgICAgIFBhdHRlcm5BbHRlcm5hdGl2ZSog
cHJpb3JBbHRlcm5hdGl2ZSA9IG1fb3BzW29wLm1fcHJldmlvdXNPcF0ubV9hbHRlcm5hdGl2ZTsK
ICAgICAgICAgICAgICAgICBQYXR0ZXJuQWx0ZXJuYXRpdmUqIGFsdGVybmF0aXZlID0gb3AubV9h
bHRlcm5hdGl2ZTsKIApAQCAtMjI5NSw3ICsyMjk1LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBm
aW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAg
ICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZGl2aWRlIGJldHdlZW4gdGhlIHRhaWwgb2YgdGhl
IHByaW9yIGFsdGVybmF0aXZlLCBhYm92ZSwgYW5kCiAgICAgICAgICAgICAgICAgLy8gdGhlIGhl
YWQgb2YgdGhlIHN1YnNlcXVlbnQgYWx0ZXJuYXRpdmUsIGJlbG93LgogCi0gICAgICAgICAgICAg
ICAgaWYgKG9wLm1fb3AgPT0gT3BCb2R5QWx0ZXJuYXRpdmVOZXh0KSB7CisgICAgICAgICAgICAg
ICAgaWYgKG9wLm1fb3AgPT0gWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlTmV4dCkgewogICAg
ICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSByZWVudHJ5IHBvaW50IGZvciB0aGUgTmV4
dCBhbHRlcm5hdGl2ZS4gV2UgZXhwZWN0IGFueSBjb2RlCiAgICAgICAgICAgICAgICAgICAgIC8v
IHRoYXQganVtcHMgaGVyZSB0byBkbyBzbyB3aXRoIHRoZSBpbnB1dCBwb3NpdGlvbiBtYXRjaGlu
ZyB0aGF0IG9mIHRoZQogICAgICAgICAgICAgICAgICAgICAvLyBQUklPUiBhbHRlcmFuYXRpdmUs
IGFuZCB3ZSB3aWxsIG9ubHkgY2hlY2sgaW5wdXQgYXZhaWxhYmlsaXR5IGlmIHdlCkBAIC0yMzEz
LDE0ICsyMzEzLDE0IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJ
VEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgICAgICBzdWIz
MihJbW0zMihwcmlvckFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplKSwgaW5kZXgpOwogICAgICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGlmIChvcC5tX29wID09IE9wQm9keUFsdGVy
bmF0aXZlTmV4dCkKKyAgICAgICAgICAgICAgICBpZiAob3AubV9vcCA9PSBZYXJyT3BDb2RlOjpC
b2R5QWx0ZXJuYXRpdmVOZXh0KQogICAgICAgICAgICAgICAgICAgICBtX2NoZWNrZWRPZmZzZXQg
Kz0gYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemU7CiAgICAgICAgICAgICAgICAgbV9jaGVja2Vk
T2Zmc2V0IC09IHByaW9yQWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemU7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIC8vIE9wU2ltcGxlTmVzdGVk
QWx0ZXJuYXRpdmVCZWdpbi9OZXh0L0VuZAotICAgICAgICAgICAgLy8gT3BOZXN0ZWRBbHRlcm5h
dGl2ZUJlZ2luL05leHQvRW5kCisgICAgICAgICAgICAvLyBZYXJyT3BDb2RlOjpTaW1wbGVOZXN0
ZWRBbHRlcm5hdGl2ZUJlZ2luL05leHQvRW5kCisgICAgICAgICAgICAvLyBZYXJyT3BDb2RlOjpO
ZXN0ZWRBbHRlcm5hdGl2ZUJlZ2luL05leHQvRW5kCiAgICAgICAgICAgICAvLwogICAgICAgICAg
ICAgLy8gVGhlc2Ugbm9kZXMgYXJlIHVzZWQgdG8gaGFuZGxlIHNldHMgb2YgYWx0ZXJuYXRpdmVz
IHRoYXQgYXJlIG5lc3RlZCB3aXRoaW4KICAgICAgICAgICAgIC8vIHN1YnBhdHRlcm5zIGFuZCBw
YXJlbnRoZXRpY2FsIGFzc2VydGlvbnMuIFRoZSAnc2ltcGxlJyBmb3JtcyBhcmUgdXNlZCB3aGVy
ZQpAQCAtMjMzNSwxNSArMjMzNSwxNSBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVi
bGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgIC8v
IEluIHRoZSBub24tc2ltcGxlIGZvcm1zLCBzdWNjZXNzZnVsIGFsdGVybmF0aXZlIG1hdGNoZXMg
bXVzdCBzdG9yZSBhCiAgICAgICAgICAgICAvLyAncmV0dXJuIGFkZHJlc3MnIHVzaW5nIGEgRGF0
YUxhYmVsUHRyLCB1c2VkIHRvIHN0b3JlIHRoZSBhZGRyZXNzIHRvIGp1bXAKICAgICAgICAgICAg
IC8vIHRvIHdoZW4gYmFja3RyYWNraW5nLCB0byBnZXQgdG8gdGhlIGNvZGUgZm9yIHRoZSBhcHBy
b3ByaWF0ZSBhbHRlcm5hdGl2ZS4KLSAgICAgICAgICAgIGNhc2UgT3BTaW1wbGVOZXN0ZWRBbHRl
cm5hdGl2ZUJlZ2luOgotICAgICAgICAgICAgY2FzZSBPcE5lc3RlZEFsdGVybmF0aXZlQmVnaW46
IHsKKyAgICAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6U2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVC
ZWdpbjoKKyAgICAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6TmVzdGVkQWx0ZXJuYXRpdmVCZWdp
bjogewogICAgICAgICAgICAgICAgIFBhdHRlcm5UZXJtKiB0ZXJtID0gb3AubV90ZXJtOwogICAg
ICAgICAgICAgICAgIFBhdHRlcm5BbHRlcm5hdGl2ZSogYWx0ZXJuYXRpdmUgPSBvcC5tX2FsdGVy
bmF0aXZlOwogICAgICAgICAgICAgICAgIFBhdHRlcm5EaXNqdW5jdGlvbiogZGlzanVuY3Rpb24g
PSB0ZXJtLT5wYXJlbnRoZXNlcy5kaXNqdW5jdGlvbjsKIAogICAgICAgICAgICAgICAgIC8vIENh
bGN1bGF0ZSBob3cgbXVjaCBpbnB1dCB3ZSBuZWVkIHRvIGNoZWNrIGZvciwgYW5kIGlmIG5vbi16
ZXJvIGNoZWNrLgogICAgICAgICAgICAgICAgIG9wLm1fY2hlY2tBZGp1c3QgPSBDaGVja2VkPHVu
c2lnbmVkPihhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSk7Ci0gICAgICAgICAgICAgICAgaWYg
KCh0ZXJtLT5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllckZpeGVkQ291bnQpICYmICh0ZXJtLT50
eXBlICE9IFBhdHRlcm5UZXJtOjpUeXBlUGFyZW50aGV0aWNhbEFzc2VydGlvbikpCisgICAgICAg
ICAgICAgICAgaWYgKCh0ZXJtLT5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllclR5cGU6OkZpeGVk
Q291bnQpICYmICh0ZXJtLT50eXBlICE9IFBhdHRlcm5UZXJtOjpUeXBlOjpQYXJlbnRoZXRpY2Fs
QXNzZXJ0aW9uKSkKICAgICAgICAgICAgICAgICAgICAgb3AubV9jaGVja0FkanVzdCAtPSBkaXNq
dW5jdGlvbi0+bV9taW5pbXVtU2l6ZTsKICAgICAgICAgICAgICAgICBpZiAob3AubV9jaGVja0Fk
anVzdCkKICAgICAgICAgICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBlbmQoanVtcElmTm9BdmFp
bGFibGVJbnB1dChvcC5tX2NoZWNrQWRqdXN0KSk7CkBAIC0yMzUxLDE5ICsyMzUxLDE5IEBAIGNs
YXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFj
cm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgIG1fY2hlY2tlZE9mZnNldCArPSBvcC5tX2No
ZWNrQWRqdXN0OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgY2FzZSBPcFNpbXBsZU5lc3RlZEFsdGVybmF0aXZlTmV4dDoKLSAgICAgICAgICAgIGNh
c2UgT3BOZXN0ZWRBbHRlcm5hdGl2ZU5leHQ6IHsKKyAgICAgICAgICAgIGNhc2UgWWFyck9wQ29k
ZTo6U2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVOZXh0OgorICAgICAgICAgICAgY2FzZSBZYXJyT3BD
b2RlOjpOZXN0ZWRBbHRlcm5hdGl2ZU5leHQ6IHsKICAgICAgICAgICAgICAgICBQYXR0ZXJuVGVy
bSogdGVybSA9IG9wLm1fdGVybTsKICAgICAgICAgICAgICAgICBQYXR0ZXJuQWx0ZXJuYXRpdmUq
IGFsdGVybmF0aXZlID0gb3AubV9hbHRlcm5hdGl2ZTsKICAgICAgICAgICAgICAgICBQYXR0ZXJu
RGlzanVuY3Rpb24qIGRpc2p1bmN0aW9uID0gdGVybS0+cGFyZW50aGVzZXMuZGlzanVuY3Rpb247
CiAKICAgICAgICAgICAgICAgICAvLyBJbiB0aGUgbm9uLXNpbXBsZSBjYXNlLCBzdG9yZSBhICdy
ZXR1cm4gYWRkcmVzcycgc28gd2UgY2FuIGJhY2t0cmFjayBjb3JyZWN0bHkuCi0gICAgICAgICAg
ICAgICAgaWYgKG9wLm1fb3AgPT0gT3BOZXN0ZWRBbHRlcm5hdGl2ZU5leHQpIHsKKyAgICAgICAg
ICAgICAgICBpZiAob3AubV9vcCA9PSBZYXJyT3BDb2RlOjpOZXN0ZWRBbHRlcm5hdGl2ZU5leHQp
IHsKICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcGFyZW50aGVzZXNGcmFtZUxvY2F0aW9u
ID0gdGVybS0+ZnJhbWVMb2NhdGlvbjsKICAgICAgICAgICAgICAgICAgICAgb3AubV9yZXR1cm5B
ZGRyZXNzID0gc3RvcmVUb0ZyYW1lV2l0aFBhdGNoKHBhcmVudGhlc2VzRnJhbWVMb2NhdGlvbiAr
IEJhY2tUcmFja0luZm9QYXJlbnRoZXNlczo6cmV0dXJuQWRkcmVzc0luZGV4KCkpOwogICAgICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eVR5cGUgIT0g
UXVhbnRpZmllckZpeGVkQ291bnQgJiYgIW1fb3BzW29wLm1fcHJldmlvdXNPcF0ubV9hbHRlcm5h
dGl2ZS0+bV9taW5pbXVtU2l6ZSkgeworICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0
eVR5cGUgIT0gUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQgJiYgIW1fb3BzW29wLm1fcHJldmlv
dXNPcF0ubV9hbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSkgewogICAgICAgICAgICAgICAgICAg
ICAvLyBJZiB0aGUgcHJldmlvdXMgYWx0ZXJuYXRpdmUgbWF0Y2hlZCB3aXRob3V0IGNvbnN1bWlu
ZyBjaGFyYWN0ZXJzIHRoZW4KICAgICAgICAgICAgICAgICAgICAgLy8gYmFja3RyYWNrIHRvIHRy
eSB0byBtYXRjaCB3aGlsZSBjb25zdW1taW5nIHNvbWUgaW5wdXQuCiAgICAgICAgICAgICAgICAg
ICAgIG9wLm1femVyb0xlbmd0aE1hdGNoID0gYnJhbmNoMzIoRXF1YWwsIGluZGV4LCBBZGRyZXNz
KHN0YWNrUG9pbnRlclJlZ2lzdGVyLCB0ZXJtLT5mcmFtZUxvY2F0aW9uICogc2l6ZW9mKHZvaWQq
KSkpOwpAQCAtMjM3OSwxMCArMjM3OSwxMCBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDog
cHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAg
ICAgICAvLyB3ZSBkaWRuJ3QgbmVlZCB0byBwbGFudCB0aGUgaW5wdXQgY2hlY2tzLCB0aGVuIG1f
anVtcHMgd291bGQgYmUgZnJlZSkuCiAgICAgICAgICAgICAgICAgWWFyck9wKiBlbmRPcCA9ICZt
X29wc1tvcC5tX25leHRPcF07CiAgICAgICAgICAgICAgICAgd2hpbGUgKGVuZE9wLT5tX25leHRP
cCAhPSBub3RGb3VuZCkgewotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZW5kT3AtPm1fb3Ag
PT0gT3BTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZU5leHQgfHwgZW5kT3AtPm1fb3AgPT0gT3BOZXN0
ZWRBbHRlcm5hdGl2ZU5leHQpOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZW5kT3AtPm1f
b3AgPT0gWWFyck9wQ29kZTo6U2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVOZXh0IHx8IGVuZE9wLT5t
X29wID09IFlhcnJPcENvZGU6Ok5lc3RlZEFsdGVybmF0aXZlTmV4dCk7CiAgICAgICAgICAgICAg
ICAgICAgIGVuZE9wID0gJm1fb3BzW2VuZE9wLT5tX25leHRPcF07CiAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIEFTU0VSVChlbmRPcC0+bV9vcCA9PSBPcFNpbXBsZU5lc3RlZEFs
dGVybmF0aXZlRW5kIHx8IGVuZE9wLT5tX29wID09IE9wTmVzdGVkQWx0ZXJuYXRpdmVFbmQpOwor
ICAgICAgICAgICAgICAgIEFTU0VSVChlbmRPcC0+bV9vcCA9PSBZYXJyT3BDb2RlOjpTaW1wbGVO
ZXN0ZWRBbHRlcm5hdGl2ZUVuZCB8fCBlbmRPcC0+bV9vcCA9PSBZYXJyT3BDb2RlOjpOZXN0ZWRB
bHRlcm5hdGl2ZUVuZCk7CiAgICAgICAgICAgICAgICAgZW5kT3AtPm1fanVtcHMuYXBwZW5kKGp1
bXAoKSk7CiAKICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBlbnRyeSBwb2ludCBmb3Ig
dGhlIG5leHQgYWx0ZXJuYXRpdmUuCkBAIC0yMzkwLDcgKzIzOTAsNyBAQCBjbGFzcyBZYXJyR2Vu
ZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVy
IHsKIAogICAgICAgICAgICAgICAgIC8vIENhbGN1bGF0ZSBob3cgbXVjaCBpbnB1dCB3ZSBuZWVk
IHRvIGNoZWNrIGZvciwgYW5kIGlmIG5vbi16ZXJvIGNoZWNrLgogICAgICAgICAgICAgICAgIG9w
Lm1fY2hlY2tBZGp1c3QgPSBhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZTsKLSAgICAgICAgICAg
ICAgICBpZiAoKHRlcm0tPnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyRml4ZWRDb3VudCkgJiYg
KHRlcm0tPnR5cGUgIT0gUGF0dGVyblRlcm06OlR5cGVQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uKSkK
KyAgICAgICAgICAgICAgICBpZiAoKHRlcm0tPnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyVHlw
ZTo6Rml4ZWRDb3VudCkgJiYgKHRlcm0tPnR5cGUgIT0gUGF0dGVyblRlcm06OlR5cGU6OlBhcmVu
dGhldGljYWxBc3NlcnRpb24pKQogICAgICAgICAgICAgICAgICAgICBvcC5tX2NoZWNrQWRqdXN0
IC09IGRpc2p1bmN0aW9uLT5tX21pbmltdW1TaXplOwogICAgICAgICAgICAgICAgIGlmIChvcC5t
X2NoZWNrQWRqdXN0KQogICAgICAgICAgICAgICAgICAgICBvcC5tX2p1bXBzLmFwcGVuZChqdW1w
SWZOb0F2YWlsYWJsZUlucHV0KG9wLm1fY2hlY2tBZGp1c3QpKTsKQEAgLTI0MDAsMTcgKzI0MDAs
MTcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJp
dmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAgbV9jaGVja2VkT2Zmc2V0ICs9
IG9wLm1fY2hlY2tBZGp1c3Q7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBjYXNlIE9wU2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVFbmQ6Ci0gICAgICAg
ICAgICBjYXNlIE9wTmVzdGVkQWx0ZXJuYXRpdmVFbmQ6IHsKKyAgICAgICAgICAgIGNhc2UgWWFy
ck9wQ29kZTo6U2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVFbmQ6CisgICAgICAgICAgICBjYXNlIFlh
cnJPcENvZGU6Ok5lc3RlZEFsdGVybmF0aXZlRW5kOiB7CiAgICAgICAgICAgICAgICAgUGF0dGVy
blRlcm0qIHRlcm0gPSBvcC5tX3Rlcm07CiAKICAgICAgICAgICAgICAgICAvLyBJbiB0aGUgbm9u
LXNpbXBsZSBjYXNlLCBzdG9yZSBhICdyZXR1cm4gYWRkcmVzcycgc28gd2UgY2FuIGJhY2t0cmFj
ayBjb3JyZWN0bHkuCi0gICAgICAgICAgICAgICAgaWYgKG9wLm1fb3AgPT0gT3BOZXN0ZWRBbHRl
cm5hdGl2ZUVuZCkgeworICAgICAgICAgICAgICAgIGlmIChvcC5tX29wID09IFlhcnJPcENvZGU6
Ok5lc3RlZEFsdGVybmF0aXZlRW5kKSB7CiAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHBh
cmVudGhlc2VzRnJhbWVMb2NhdGlvbiA9IHRlcm0tPmZyYW1lTG9jYXRpb247CiAgICAgICAgICAg
ICAgICAgICAgIG9wLm1fcmV0dXJuQWRkcmVzcyA9IHN0b3JlVG9GcmFtZVdpdGhQYXRjaChwYXJl
bnRoZXNlc0ZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXM6OnJldHVybkFk
ZHJlc3NJbmRleCgpKTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBpZiAo
dGVybS0+cXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJGaXhlZENvdW50ICYmICFtX29wc1tvcC5t
X3ByZXZpb3VzT3BdLm1fYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUpIHsKKyAgICAgICAgICAg
ICAgICBpZiAodGVybS0+cXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJUeXBlOjpGaXhlZENvdW50
ICYmICFtX29wc1tvcC5tX3ByZXZpb3VzT3BdLm1fYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUp
IHsKICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHByZXZpb3VzIGFsdGVybmF0aXZlIG1h
dGNoZWQgd2l0aG91dCBjb25zdW1pbmcgY2hhcmFjdGVycyB0aGVuCiAgICAgICAgICAgICAgICAg
ICAgIC8vIGJhY2t0cmFjayB0byB0cnkgdG8gbWF0Y2ggd2hpbGUgY29uc3VtbWluZyBzb21lIGlu
cHV0LgogICAgICAgICAgICAgICAgICAgICBvcC5tX3plcm9MZW5ndGhNYXRjaCA9IGJyYW5jaDMy
KEVxdWFsLCBpbmRleCwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgdGVybS0+ZnJhbWVM
b2NhdGlvbiAqIHNpemVvZih2b2lkKikpKTsKQEAgLTI0MjcsMTEgKzI0MjcsMTEgQEAgY2xhc3Mg
WWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fz
c2VtYmxlciB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgIC8vIE9wUGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUJlZ2luL0VuZAorICAgICAgICAg
ICAgLy8gWWFyck9wQ29kZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUJlZ2luL0VuZAogICAg
ICAgICAgICAgLy8KICAgICAgICAgICAgIC8vIFRoZXNlIG5vZGVzIHN1cHBvcnQgKG9wdGlvbmFs
bHkpIGNhcHR1cmluZyBzdWJwYXR0ZXJucywgdGhhdCBoYXZlIGEKICAgICAgICAgICAgIC8vIHF1
YW50aXR5IGNvdW50IG9mIDEgKHRoaXMgY292ZXJzIGZpeGVkIG9uY2UsIGFuZCA/Lz8/IHF1YW50
aWZpZXJzKS4gCi0gICAgICAgICAgICBjYXNlIE9wUGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUJl
Z2luOiB7CisgICAgICAgICAgICBjYXNlIFlhcnJPcENvZGU6OlBhcmVudGhlc2VzU3VicGF0dGVy
bk9uY2VCZWdpbjogewogICAgICAgICAgICAgICAgIFBhdHRlcm5UZXJtKiB0ZXJtID0gb3AubV90
ZXJtOwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIHBhcmVudGhlc2VzRnJhbWVMb2NhdGlvbiA9
IHRlcm0tPmZyYW1lTG9jYXRpb247CiAgICAgICAgICAgICAgICAgY29uc3QgUmVnaXN0ZXJJRCBp
bmRleFRlbXBvcmFyeSA9IHJlZ1QwOwpAQCAtMjQ1MSw5ICsyNDUxLDkgQEAgY2xhc3MgWWFyckdl
bmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxl
ciB7CiAgICAgICAgICAgICAgICAgLy8gc2Vjb25kIGl0ZXJhdGlvbi4KICAgICAgICAgICAgICAg
ICAvLwogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBmb3IgY2FwdHVyaW5nIHBhcmVucywgY291
bGQgdXNlIHRoZSBpbmRleCBpbiB0aGUgY2FwdHVyZSBhcnJheT8KLSAgICAgICAgICAgICAgICBp
ZiAodGVybS0+cXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJHcmVlZHkpCisgICAgICAgICAgICAg
ICAgaWYgKHRlcm0tPnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyVHlwZTo6R3JlZWR5KQogICAg
ICAgICAgICAgICAgICAgICBzdG9yZVRvRnJhbWUoaW5kZXgsIHBhcmVudGhlc2VzRnJhbWVMb2Nh
dGlvbiArIEJhY2tUcmFja0luZm9QYXJlbnRoZXNlc09uY2U6OmJlZ2luSW5kZXgoKSk7Ci0gICAg
ICAgICAgICAgICAgZWxzZSBpZiAodGVybS0+cXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJOb25H
cmVlZHkpIHsKKyAgICAgICAgICAgICAgICBlbHNlIGlmICh0ZXJtLT5xdWFudGl0eVR5cGUgPT0g
UXVhbnRpZmllclR5cGU6Ok5vbkdyZWVkeSkgewogICAgICAgICAgICAgICAgICAgICBzdG9yZVRv
RnJhbWUoVHJ1c3RlZEltbTMyKC0xKSwgcGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uICsgQmFja1Ry
YWNrSW5mb1BhcmVudGhlc2VzT25jZTo6YmVnaW5JbmRleCgpKTsKICAgICAgICAgICAgICAgICAg
ICAgb3AubV9qdW1wcy5hcHBlbmQoanVtcCgpKTsKICAgICAgICAgICAgICAgICAgICAgb3AubV9y
ZWVudHJ5ID0gbGFiZWwoKTsKQEAgLTI0NjgsNyArMjQ2OCw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0
b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewog
ICAgICAgICAgICAgICAgIC8vIGJlaW5nIGFjY2Vzc2VkLgogICAgICAgICAgICAgICAgIGlmICh0
ZXJtLT5jYXB0dXJlKCkgJiYgY29tcGlsZU1vZGUgPT0gSW5jbHVkZVN1YnBhdHRlcm5zKSB7CiAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlucHV0T2Zmc2V0ID0gbV9jaGVja2VkT2Zmc2V0
IC0gdGVybS0+aW5wdXRQb3NpdGlvbjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm0tPnF1
YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyRml4ZWRDb3VudCkKKyAgICAgICAgICAgICAgICAgICAg
aWYgKHRlcm0tPnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudCkKICAg
ICAgICAgICAgICAgICAgICAgICAgIGlucHV0T2Zmc2V0ICs9IHRlcm0tPnBhcmVudGhlc2VzLmRp
c2p1bmN0aW9uLT5tX21pbmltdW1TaXplOwogICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXRP
ZmZzZXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUoaW5kZXgsIGluZGV4VGVtcG9y
YXJ5KTsKQEAgLTI0NzksNyArMjQ3OSw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBw
dWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGNhc2UgT3BQYXJlbnRoZXNlc1N1YnBhdHRlcm5PbmNlRW5kOiB7CisgICAgICAgICAgICBjYXNl
IFlhcnJPcENvZGU6OlBhcmVudGhlc2VzU3VicGF0dGVybk9uY2VFbmQ6IHsKICAgICAgICAgICAg
ICAgICBQYXR0ZXJuVGVybSogdGVybSA9IG9wLm1fdGVybTsKICAgICAgICAgICAgICAgICBjb25z
dCBSZWdpc3RlcklEIGluZGV4VGVtcG9yYXJ5ID0gcmVnVDA7CiAgICAgICAgICAgICAgICAgQVNT
RVJUKHRlcm0tPnF1YW50aXR5TWF4Q291bnQgPT0gMSk7CkBAIC0yNDg3LDcgKzI0ODcsNyBAQCBj
bGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1h
Y3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgbmVzdGVkIGFsdGVybmF0
aXZlIG1hdGNoZWQgd2l0aG91dCBjb25zdW1pbmcgYW55IGNoYXJhY3RlcnMsIHB1bnQgdGhpcyBi
YWNrIHRvIHRoZSBpbnRlcnByZXRlci4KICAgICAgICAgICAgICAgICAvLyBGSVhNRTogPGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA3ODY+IEFkZCBhYmlsaXR5IGZv
ciB0aGUgWUFSUiBKSVQgdG8gcHJvcGVybHkKICAgICAgICAgICAgICAgICAvLyBoYW5kbGUgbmVz
dGVkIGV4cHJlc3Npb25zIHRoYXQgY2FuIG1hdGNoIHdpdGhvdXQgY29uc3VtaW5nIGNoYXJhY3Rl
cnMKLSAgICAgICAgICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJG
aXhlZENvdW50ICYmICF0ZXJtLT5wYXJlbnRoZXNlcy5kaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6
ZSkKKyAgICAgICAgICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJU
eXBlOjpGaXhlZENvdW50ICYmICF0ZXJtLT5wYXJlbnRoZXNlcy5kaXNqdW5jdGlvbi0+bV9taW5p
bXVtU2l6ZSkKICAgICAgICAgICAgICAgICAgICAgbV9hYm9ydEV4ZWN1dGlvbi5hcHBlbmQoYnJh
bmNoMzIoRXF1YWwsIGluZGV4LCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCB0ZXJtLT5m
cmFtZUxvY2F0aW9uICogc2l6ZW9mKHZvaWQqKSkpKTsKIAogICAgICAgICAgICAgICAgIC8vIElm
IHRoZSBwYXJlbnRoZXNlIGFyZSBjYXB0dXJpbmcsIHN0b3JlIHRoZSBlbmRpbmcgaW5kZXggdmFs
dWUgdG8gdGhlCkBAIC0yNTA5LDE5ICsyNTA5LDE5IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmlu
YWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAg
ICAgICAgICAgIC8vIElmIHRoZSBwYXJlbnRoZXNlcyBhcmUgcXVhbnRpZmllZCBHcmVlZHkgdGhl
biBhZGQgYSBsYWJlbCB0byBqdW1wIGJhY2sKICAgICAgICAgICAgICAgICAvLyB0byBpZiB3ZSBn
ZXQgYSBmYWlsZWQgbWF0Y2ggZnJvbSBhZnRlciB0aGUgcGFyZW50aGVzZXMuIEZvciBOb25HcmVl
ZHkKICAgICAgICAgICAgICAgICAvLyBwYXJlbnRoZXNlcywgbGluayB0aGUganVtcCBmcm9tIGJl
Zm9yZSB0aGUgc3VicGF0dGVybiB0byBoZXJlLgotICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5x
dWFudGl0eVR5cGUgPT0gUXVhbnRpZmllckdyZWVkeSkKKyAgICAgICAgICAgICAgICBpZiAodGVy
bS0+cXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJUeXBlOjpHcmVlZHkpCiAgICAgICAgICAgICAg
ICAgICAgIG9wLm1fcmVlbnRyeSA9IGxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAo
dGVybS0+cXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJOb25HcmVlZHkpIHsKKyAgICAgICAgICAg
ICAgICBlbHNlIGlmICh0ZXJtLT5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllclR5cGU6Ok5vbkdy
ZWVkeSkgewogICAgICAgICAgICAgICAgICAgICBZYXJyT3AmIGJlZ2luT3AgPSBtX29wc1tvcC5t
X3ByZXZpb3VzT3BdOwogICAgICAgICAgICAgICAgICAgICBiZWdpbk9wLm1fanVtcHMubGluayh0
aGlzKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgIC8vIE9wUGFyZW50aGVzZXNTdWJwYXR0ZXJuVGVybWluYWxC
ZWdpbi9FbmQKLSAgICAgICAgICAgIGNhc2UgT3BQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5h
bEJlZ2luOiB7CisgICAgICAgICAgICAvLyBZYXJyT3BDb2RlOjpQYXJlbnRoZXNlc1N1YnBhdHRl
cm5UZXJtaW5hbEJlZ2luL0VuZAorICAgICAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpQYXJlbnRo
ZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEJlZ2luOiB7CiAgICAgICAgICAgICAgICAgUGF0dGVyblRl
cm0qIHRlcm0gPSBvcC5tX3Rlcm07Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHRlcm0tPnF1YW50
aXR5VHlwZSA9PSBRdWFudGlmaWVyR3JlZWR5KTsKKyAgICAgICAgICAgICAgICBBU1NFUlQodGVy
bS0+cXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJUeXBlOjpHcmVlZHkpOwogICAgICAgICAgICAg
ICAgIEFTU0VSVCh0ZXJtLT5xdWFudGl0eU1heENvdW50ID09IHF1YW50aWZ5SW5maW5pdGUpOwog
ICAgICAgICAgICAgICAgIEFTU0VSVCghdGVybS0+Y2FwdHVyZSgpKTsKIApAQCAtMjUzMywxNCAr
MjUzMywxNCBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZv
LCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICBzdG9yZVRvRnJhbWUo
aW5kZXgsIHRlcm0tPmZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXNUZXJt
aW5hbDo6YmVnaW5JbmRleCgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGNhc2UgT3BQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEVuZDog
eworICAgICAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJt
aW5hbEVuZDogewogICAgICAgICAgICAgICAgIFlhcnJPcCYgYmVnaW5PcCA9IG1fb3BzW29wLm1f
cHJldmlvdXNPcF07CiAgICAgICAgICAgICAgICAgUGF0dGVyblRlcm0qIHRlcm0gPSBvcC5tX3Rl
cm07CiAKICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgbmVzdGVkIGFsdGVybmF0aXZlIG1hdGNo
ZWQgd2l0aG91dCBjb25zdW1pbmcgYW55IGNoYXJhY3RlcnMsIHB1bnQgdGhpcyBiYWNrIHRvIHRo
ZSBpbnRlcnByZXRlci4KICAgICAgICAgICAgICAgICAvLyBGSVhNRTogPGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA3ODY+IEFkZCBhYmlsaXR5IGZvciB0aGUgWUFS
UiBKSVQgdG8gcHJvcGVybHkKICAgICAgICAgICAgICAgICAvLyBoYW5kbGUgbmVzdGVkIGV4cHJl
c3Npb25zIHRoYXQgY2FuIG1hdGNoIHdpdGhvdXQgY29uc3VtaW5nIGNoYXJhY3RlcnMKLSAgICAg
ICAgICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJGaXhlZENvdW50
ICYmICF0ZXJtLT5wYXJlbnRoZXNlcy5kaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZSkKKyAgICAg
ICAgICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJUeXBlOjpGaXhl
ZENvdW50ICYmICF0ZXJtLT5wYXJlbnRoZXNlcy5kaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZSkK
ICAgICAgICAgICAgICAgICAgICAgbV9hYm9ydEV4ZWN1dGlvbi5hcHBlbmQoYnJhbmNoMzIoRXF1
YWwsIGluZGV4LCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCB0ZXJtLT5mcmFtZUxvY2F0
aW9uICogc2l6ZW9mKHZvaWQqKSkpKTsKIAogICAgICAgICAgICAgICAgIC8vIFdlIGtub3cgdGhh
dCB0aGUgbWF0Y2ggaXMgbm9uLXplcm8sIHdlIGNhbiBhY2NlcHQgaXQgYW5kCkBAIC0yNTUzLDEw
ICsyNTUzLDEwIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVElu
Zm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICAvLyBPcFBhcmVudGhlc2VzU3VicGF0dGVybkJlZ2lu
L0VuZAorICAgICAgICAgICAgLy8gWWFyck9wQ29kZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuQmVn
aW4vRW5kCiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8gVGhlc2Ugbm9kZXMgc3VwcG9y
dCBnZW5lcmljIHN1YnBhdHRlcm5zLgotICAgICAgICAgICAgY2FzZSBPcFBhcmVudGhlc2VzU3Vi
cGF0dGVybkJlZ2luOiB7CisgICAgICAgICAgICBjYXNlIFlhcnJPcENvZGU6OlBhcmVudGhlc2Vz
U3VicGF0dGVybkJlZ2luOiB7CiAjaWYgRU5BQkxFKFlBUlJfSklUX0FMTF9QQVJFTlNfRVhQUkVT
U0lPTlMpCiAgICAgICAgICAgICAgICAgUGF0dGVyblRlcm0qIHRlcm0gPSBvcC5tX3Rlcm07CiAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgcGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uID0gdGVybS0+
ZnJhbWVMb2NhdGlvbjsKQEAgLTI1NzUsMTEgKzI1NzUsMTEgQEAgY2xhc3MgWWFyckdlbmVyYXRv
ciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAg
ICAgICAgICAgICAgICAgLy8gb24gdGhlIHNlY29uZCBpdGVyYXRpb24uCiAgICAgICAgICAgICAg
ICAgLy8KICAgICAgICAgICAgICAgICAvLyBGSVhNRTogZm9yIGNhcHR1cmluZyBwYXJlbnMsIGNv
dWxkIHVzZSB0aGUgaW5kZXggaW4gdGhlIGNhcHR1cmUgYXJyYXk/Ci0gICAgICAgICAgICAgICAg
aWYgKHRlcm0tPnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyR3JlZWR5IHx8IHRlcm0tPnF1YW50
aXR5VHlwZSA9PSBRdWFudGlmaWVyTm9uR3JlZWR5KSB7CisgICAgICAgICAgICAgICAgaWYgKHRl
cm0tPnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyVHlwZTo6R3JlZWR5IHx8IHRlcm0tPnF1YW50
aXR5VHlwZSA9PSBRdWFudGlmaWVyVHlwZTo6Tm9uR3JlZWR5KSB7CiAgICAgICAgICAgICAgICAg
ICAgIHN0b3JlVG9GcmFtZShUcnVzdGVkSW1tMzIoMCksIHBhcmVudGhlc2VzRnJhbWVMb2NhdGlv
biArIEJhY2tUcmFja0luZm9QYXJlbnRoZXNlczo6bWF0Y2hBbW91bnRJbmRleCgpKTsKICAgICAg
ICAgICAgICAgICAgICAgc3RvcmVUb0ZyYW1lKFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIHBhcmVu
dGhlc2VzRnJhbWVMb2NhdGlvbiArIEJhY2tUcmFja0luZm9QYXJlbnRoZXNlczo6cGFyZW5Db250
ZXh0SGVhZEluZGV4KCkpOwogCi0gICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0
eVR5cGUgPT0gUXVhbnRpZmllck5vbkdyZWVkeSkgeworICAgICAgICAgICAgICAgICAgICBpZiAo
dGVybS0+cXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJUeXBlOjpOb25HcmVlZHkpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0b3JlVG9GcmFtZShUcnVzdGVkSW1tMzIoLTEpLCBwYXJlbnRo
ZXNlc0ZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXM6OmJlZ2luSW5kZXgo
KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBvcC5tX2p1bXBzLmFwcGVuZChqdW1wKCkpOwog
ICAgICAgICAgICAgICAgICAgICB9CkBAIC0yNjA1LDcgKzI2MDUsNyBAQCBjbGFzcyBZYXJyR2Vu
ZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVy
IHsKICAgICAgICAgICAgICAgICBpZiAodGVybS0+Y2FwdHVyZSgpICYmIGNvbXBpbGVNb2RlID09
IEluY2x1ZGVTdWJwYXR0ZXJucykgewogICAgICAgICAgICAgICAgICAgICBjb25zdCBSZWdpc3Rl
cklEIGluZGV4VGVtcG9yYXJ5ID0gcmVnVDA7CiAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGlucHV0T2Zmc2V0ID0gbV9jaGVja2VkT2Zmc2V0IC0gdGVybS0+aW5wdXRQb3NpdGlvbjsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyRml4
ZWRDb3VudCkKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5VHlwZSA9PSBR
dWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudCkKICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0
T2Zmc2V0ICs9IHRlcm0tPnBhcmVudGhlc2VzLmRpc2p1bmN0aW9uLT5tX21pbmltdW1TaXplOwog
ICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXRPZmZzZXQpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIG1vdmUoaW5kZXgsIGluZGV4VGVtcG9yYXJ5KTsKQEAgLTI2MTksNyArMjYxOSw3IEBA
IGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUg
TWFjcm9Bc3NlbWJsZXIgewogI2VuZGlmCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBjYXNlIE9wUGFyZW50aGVzZXNTdWJwYXR0ZXJuRW5kOiB7Cisg
ICAgICAgICAgICBjYXNlIFlhcnJPcENvZGU6OlBhcmVudGhlc2VzU3VicGF0dGVybkVuZDogewog
I2lmIEVOQUJMRShZQVJSX0pJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05TKQogICAgICAgICAgICAg
ICAgIFBhdHRlcm5UZXJtKiB0ZXJtID0gb3AubV90ZXJtOwogICAgICAgICAgICAgICAgIHVuc2ln
bmVkIHBhcmVudGhlc2VzRnJhbWVMb2NhdGlvbiA9IHRlcm0tPmZyYW1lTG9jYXRpb247CkBAIC0y
NjI3LDcgKzI2MjcsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJK
SVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICAvLyBJZiB0
aGUgbmVzdGVkIGFsdGVybmF0aXZlIG1hdGNoZWQgd2l0aG91dCBjb25zdW1pbmcgYW55IGNoYXJh
Y3RlcnMsIHB1bnQgdGhpcyBiYWNrIHRvIHRoZSBpbnRlcnByZXRlci4KICAgICAgICAgICAgICAg
ICAvLyBGSVhNRTogPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA3
ODY+IEFkZCBhYmlsaXR5IGZvciB0aGUgWUFSUiBKSVQgdG8gcHJvcGVybHkKICAgICAgICAgICAg
ICAgICAvLyBoYW5kbGUgbmVzdGVkIGV4cHJlc3Npb25zIHRoYXQgY2FuIG1hdGNoIHdpdGhvdXQg
Y29uc3VtaW5nIGNoYXJhY3RlcnMKLSAgICAgICAgICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlU
eXBlICE9IFF1YW50aWZpZXJGaXhlZENvdW50ICYmICF0ZXJtLT5wYXJlbnRoZXNlcy5kaXNqdW5j
dGlvbi0+bV9taW5pbXVtU2l6ZSkKKyAgICAgICAgICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlU
eXBlICE9IFF1YW50aWZpZXJUeXBlOjpGaXhlZENvdW50ICYmICF0ZXJtLT5wYXJlbnRoZXNlcy5k
aXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZSkKICAgICAgICAgICAgICAgICAgICAgbV9hYm9ydEV4
ZWN1dGlvbi5hcHBlbmQoYnJhbmNoMzIoRXF1YWwsIGluZGV4LCBBZGRyZXNzKHN0YWNrUG9pbnRl
clJlZ2lzdGVyLCBwYXJlbnRoZXNlc0ZyYW1lTG9jYXRpb24gKiBzaXplb2Yodm9pZCopKSkpOwog
CiAgICAgICAgICAgICAgICAgY29uc3QgUmVnaXN0ZXJJRCBjb3VudFRlbXBvcmFyeSA9IHJlZ1Qx
OwpAQCAtMjY1OCwxNCArMjY1OCwxNCBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVi
bGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAg
ICAvLyBJZiB0aGUgcGFyZW50aGVzZXMgYXJlIHF1YW50aWZpZWQgR3JlZWR5IHRoZW4gYWRkIGEg
bGFiZWwgdG8ganVtcCBiYWNrCiAgICAgICAgICAgICAgICAgLy8gdG8gaWYgd2UgZ2V0IGEgZmFp
bGVkIG1hdGNoIGZyb20gYWZ0ZXIgdGhlIHBhcmVudGhlc2VzLiBGb3IgTm9uR3JlZWR5CiAgICAg
ICAgICAgICAgICAgLy8gcGFyZW50aGVzZXMsIGxpbmsgdGhlIGp1bXAgZnJvbSBiZWZvcmUgdGhl
IHN1YnBhdHRlcm4gdG8gaGVyZS4KLSAgICAgICAgICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlU
eXBlID09IFF1YW50aWZpZXJHcmVlZHkpIHsKKyAgICAgICAgICAgICAgICBpZiAodGVybS0+cXVh
bnRpdHlUeXBlID09IFF1YW50aWZpZXJUeXBlOjpHcmVlZHkpIHsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKHRlcm0tPnF1YW50aXR5TWF4Q291bnQgIT0gcXVhbnRpZnlJbmZpbml0ZSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyYW5jaDMyKEJlbG93LCBjb3VudFRlbXBvcmFyeSwgSW1tMzIo
dGVybS0+cXVhbnRpdHlNYXhDb3VudCkpLmxpbmtUbyhiZWdpbk9wLm1fcmVlbnRyeSwgdGhpcyk7
CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIGp1bXAo
YmVnaW5PcC5tX3JlZW50cnkpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICAgICAgb3AubV9yZWVudHJ5ID0gbGFiZWwoKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYg
KHRlcm0tPnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyTm9uR3JlZWR5KSB7CisgICAgICAgICAg
ICAgICAgfSBlbHNlIGlmICh0ZXJtLT5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllclR5cGU6Ok5v
bkdyZWVkeSkgewogICAgICAgICAgICAgICAgICAgICBZYXJyT3AmIGJlZ2luT3AgPSBtX29wc1tv
cC5tX3ByZXZpb3VzT3BdOwogICAgICAgICAgICAgICAgICAgICBiZWdpbk9wLm1fanVtcHMubGlu
ayh0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgb3AubV9yZWVudHJ5ID0gbGFiZWwoKTsKQEAg
LTI2NzYsOCArMjY3Niw4IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFy
ckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAvLyBPcFBhcmVudGhldGljYWxBc3NlcnRp
b25CZWdpbi9FbmQKLSAgICAgICAgICAgIGNhc2UgT3BQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVn
aW46IHsKKyAgICAgICAgICAgIC8vIFlhcnJPcENvZGU6OlBhcmVudGhldGljYWxBc3NlcnRpb25C
ZWdpbi9FbmQKKyAgICAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6UGFyZW50aGV0aWNhbEFzc2Vy
dGlvbkJlZ2luOiB7CiAgICAgICAgICAgICAgICAgUGF0dGVyblRlcm0qIHRlcm0gPSBvcC5tX3Rl
cm07CiAKICAgICAgICAgICAgICAgICAvLyBTdG9yZSB0aGUgY3VycmVudCBpbmRleCAtIGFzc2Vy
dGlvbnMgc2hvdWxkIG5vdCB1cGRhdGUgaW5kZXgsIHNvCkBAIC0yNjkzLDcgKzI2OTMsNyBAQCBj
bGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1h
Y3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICBtX2NoZWNrZWRPZmZzZXQgLT0gb3AubV9j
aGVja0FkanVzdDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGNhc2UgT3BQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uRW5kOiB7CisgICAgICAgICAgICBj
YXNlIFlhcnJPcENvZGU6OlBhcmVudGhldGljYWxBc3NlcnRpb25FbmQ6IHsKICAgICAgICAgICAg
ICAgICBQYXR0ZXJuVGVybSogdGVybSA9IG9wLm1fdGVybTsKIAogICAgICAgICAgICAgICAgIC8v
IFJlc3RvcmUgdGhlIGlucHV0IGluZGV4IHZhbHVlLgpAQCAtMjcxMiw3ICsyNzEyLDcgQEAgY2xh
c3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNy
b0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgIGNhc2UgT3BNYXRjaEZhaWxlZDoKKyAgICAgICAgICAgIGNhc2UgWWFyck9wQ29k
ZTo6TWF0Y2hGYWlsZWQ6CiAgICAgICAgICAgICAgICAgcmVtb3ZlQ2FsbEZyYW1lKCk7CiAgICAg
ICAgICAgICAgICAgZ2VuZXJhdGVGYWlsUmV0dXJuKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CkBAIC0yNzM3LDExICsyNzM3LDExIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJs
aWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgWWFy
ck9wJiBvcCA9IG1fb3BzW29wSW5kZXhdOwogICAgICAgICAgICAgc3dpdGNoIChvcC5tX29wKSB7
CiAKLSAgICAgICAgICAgIGNhc2UgT3BUZXJtOgorICAgICAgICAgICAgY2FzZSBZYXJyT3BDb2Rl
OjpUZXJtOgogICAgICAgICAgICAgICAgIGJhY2t0cmFja1Rlcm0ob3BJbmRleCk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIC8vIE9wQm9keUFsdGVybmF0aXZlQmVnaW4v
TmV4dC9FbmQKKyAgICAgICAgICAgIC8vIFlhcnJPcENvZGU6OkJvZHlBbHRlcm5hdGl2ZUJlZ2lu
L05leHQvRW5kCiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8gRm9yIGVhY2ggQmVnaW4v
TmV4dCBub2RlIHJlcHJlc2VudGluZyBhbiBhbHRlcm5hdGl2ZSwgd2UgbmVlZCB0byBkZWNpZGUg
d2hhdCB0byBkbwogICAgICAgICAgICAgLy8gaW4gdHdvIGNpcmN1bXN0YW5jZXM6CkBAIC0yNzY0
LDI3ICsyNzY0LDI3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJ
VEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgLy8gU2luY2UgYmFj
a3RyYWNraW5nIG9mIGFsbCBvdGhlciBhbHRlcm5hdGl2ZXMgc2ltcGx5IHJlcXVpcmVzIHVzIHRv
IGxpbmsgYmFja3RyYWNrcwogICAgICAgICAgICAgLy8gdG8gdGhlIHJlZW50cnkgcG9pbnQgZm9y
IHRoZSBzdWJzZXF1ZW50IGFsdGVybmF0aXZlLCB3ZSB3aWxsIG9ubHkgYmUgZ2VuZXJhdGluZyBh
bnkKICAgICAgICAgICAgIC8vIGNvZGUgd2hlbiBiYWNrdHJhY2tpbmcgdGhlIGxhc3QgYWx0ZXJu
YXRpdmUuCi0gICAgICAgICAgICBjYXNlIE9wQm9keUFsdGVybmF0aXZlQmVnaW46Ci0gICAgICAg
ICAgICBjYXNlIE9wQm9keUFsdGVybmF0aXZlTmV4dDogeworICAgICAgICAgICAgY2FzZSBZYXJy
T3BDb2RlOjpCb2R5QWx0ZXJuYXRpdmVCZWdpbjoKKyAgICAgICAgICAgIGNhc2UgWWFyck9wQ29k
ZTo6Qm9keUFsdGVybmF0aXZlTmV4dDogewogICAgICAgICAgICAgICAgIFBhdHRlcm5BbHRlcm5h
dGl2ZSogYWx0ZXJuYXRpdmUgPSBvcC5tX2FsdGVybmF0aXZlOwogCiAgICAgICAgICAgICAgICAg
bV9jaGVja2VkT2Zmc2V0IC09IGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplOwotICAgICAgICAg
ICAgICAgIGlmIChvcC5tX29wID09IE9wQm9keUFsdGVybmF0aXZlTmV4dCkgeworICAgICAgICAg
ICAgICAgIGlmIChvcC5tX29wID09IFlhcnJPcENvZGU6OkJvZHlBbHRlcm5hdGl2ZU5leHQpIHsK
ICAgICAgICAgICAgICAgICAgICAgUGF0dGVybkFsdGVybmF0aXZlKiBwcmlvckFsdGVybmF0aXZl
ID0gbV9vcHNbb3AubV9wcmV2aW91c09wXS5tX2FsdGVybmF0aXZlOwogICAgICAgICAgICAgICAg
ICAgICBtX2NoZWNrZWRPZmZzZXQgKz0gcHJpb3JBbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZTsK
ICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAvLyBJcyB0aGlzIHRoZSBsYXN0
IGFsdGVybmF0aXZlPyBJZiBub3QsIHRoZW4gaWYgd2UgYmFja3RyYWNrIHRvIHRoaXMgcG9pbnQg
d2UganVzdAogICAgICAgICAgICAgICAgIC8vIG5lZWQgdG8ganVtcCB0byB0cnkgdG8gbWF0Y2gg
dGhlIG5leHQgYWx0ZXJuYXRpdmUuCi0gICAgICAgICAgICAgICAgaWYgKG1fb3BzW29wLm1fbmV4
dE9wXS5tX29wICE9IE9wQm9keUFsdGVybmF0aXZlRW5kKSB7CisgICAgICAgICAgICAgICAgaWYg
KG1fb3BzW29wLm1fbmV4dE9wXS5tX29wICE9IFlhcnJPcENvZGU6OkJvZHlBbHRlcm5hdGl2ZUVu
ZCkgewogICAgICAgICAgICAgICAgICAgICBtX2JhY2t0cmFja2luZ1N0YXRlLmxpbmtUbyhtX29w
c1tvcC5tX25leHRPcF0ubV9yZWVudHJ5LCB0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFlhcnJPcCYgZW5kT3AgPSBt
X29wc1tvcC5tX25leHRPcF07CiAKICAgICAgICAgICAgICAgICBZYXJyT3AqIGJlZ2luT3AgPSAm
b3A7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKGJlZ2luT3AtPm1fb3AgIT0gT3BCb2R5QWx0ZXJu
YXRpdmVCZWdpbikgewotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoYmVnaW5PcC0+bV9vcCA9
PSBPcEJvZHlBbHRlcm5hdGl2ZU5leHQpOworICAgICAgICAgICAgICAgIHdoaWxlIChiZWdpbk9w
LT5tX29wICE9IFlhcnJPcENvZGU6OkJvZHlBbHRlcm5hdGl2ZUJlZ2luKSB7CisgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChiZWdpbk9wLT5tX29wID09IFlhcnJPcENvZGU6OkJvZHlBbHRlcm5h
dGl2ZU5leHQpOwogICAgICAgICAgICAgICAgICAgICBiZWdpbk9wID0gJm1fb3BzW2JlZ2luT3At
Pm1fcHJldmlvdXNPcF07CiAgICAgICAgICAgICAgICAgfQogCkBAIC0yNzk4LDcgKzI3OTgsNyBA
QCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRl
IE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICBpZiAob25jZVRocm91Z2gpCiAgICAg
ICAgICAgICAgICAgICAgIG1fYmFja3RyYWNraW5nU3RhdGUubGlua1RvKGVuZE9wLm1fcmVlbnRy
eSwgdGhpcyk7CiAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChtX3BhdHRlcm4uc3RpY2t5KCkgJiYgbV9vcHNbb3AubV9uZXh0T3BdLm1fb3AgPT0gT3BCb2R5
QWx0ZXJuYXRpdmVFbmQpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fcGF0dGVybi5zdGlj
a3koKSAmJiBtX29wc1tvcC5tX25leHRPcF0ubV9vcCA9PSBZYXJyT3BDb2RlOjpCb2R5QWx0ZXJu
YXRpdmVFbmQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEl0IGlzIGEgc3RpY2t5IHBh
dHRlcm4gYW5kIHRoZSBsYXN0IGFsdGVybmF0aXZlIGZhaWxlZCwganVtcCB0byB0aGUgZW5kLgog
ICAgICAgICAgICAgICAgICAgICAgICAgbV9iYWNrdHJhY2tpbmdTdGF0ZS50YWtlQmFja3RyYWNr
c1RvSnVtcExpc3QobGFzdFN0aWNreUFsdGVybmF0aXZlRmFpbHVyZXMsIHRoaXMpOwogICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1fcGF0dGVybi5tX2JvZHktPm1faGFzRml4ZWRTaXpl
CkBAIC0yODcxLDcgKzI4NzEsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGlj
IFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICAv
LyB0aGF0IGNhbiBoYW5kbGUgdGhlbS4KICAgICAgICAgICAgICAgICBZYXJyT3AqIHByZXZPcCA9
IGJlZ2luT3A7CiAgICAgICAgICAgICAgICAgWWFyck9wKiBuZXh0T3AgPSAmbV9vcHNbYmVnaW5P
cC0+bV9uZXh0T3BdOwotICAgICAgICAgICAgICAgIHdoaWxlIChuZXh0T3AtPm1fb3AgIT0gT3BC
b2R5QWx0ZXJuYXRpdmVFbmQpIHsKKyAgICAgICAgICAgICAgICB3aGlsZSAobmV4dE9wLT5tX29w
ICE9IFlhcnJPcENvZGU6OkJvZHlBbHRlcm5hdGl2ZUVuZCkgewogICAgICAgICAgICAgICAgICAg
ICBwcmV2T3AtPm1fanVtcHMubGluayh0aGlzKTsKIAogICAgICAgICAgICAgICAgICAgICAvLyBX
ZSBvbmx5IGdldCBoZXJlIGlmIGFuIGlucHV0IGNoZWNrIGZhaWxzLCBpdCBpcyBvbmx5IHdvcnRo
IGNoZWNraW5nIGFnYWluCkBAIC0yOTcwLDcgKzI5NzAsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9y
IGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAg
ICAgICAgICAgICAgICBnZW5lcmF0ZUZhaWxSZXR1cm4oKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgT3BCb2R5QWx0ZXJuYXRpdmVFbmQ6
IHsKKyAgICAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlRW5kOiB7CiAg
ICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG5ldmVyIGJhY2t0cmFjayBiYWNrIGludG8gYSBi
b2R5IGRpc2p1bmN0aW9uLgogICAgICAgICAgICAgICAgIEFTU0VSVChtX2JhY2t0cmFja2luZ1N0
YXRlLmlzRW1wdHkoKSk7CiAKQEAgLTI5NzksOCArMjk3OSw4IEBAIGNsYXNzIFlhcnJHZW5lcmF0
b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAvLyBP
cFNpbXBsZU5lc3RlZEFsdGVybmF0aXZlQmVnaW4vTmV4dC9FbmQKLSAgICAgICAgICAgIC8vIE9w
TmVzdGVkQWx0ZXJuYXRpdmVCZWdpbi9OZXh0L0VuZAorICAgICAgICAgICAgLy8gWWFyck9wQ29k
ZTo6U2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVCZWdpbi9OZXh0L0VuZAorICAgICAgICAgICAgLy8g
WWFyck9wQ29kZTo6TmVzdGVkQWx0ZXJuYXRpdmVCZWdpbi9OZXh0L0VuZAogICAgICAgICAgICAg
Ly8KICAgICAgICAgICAgIC8vIEdlbmVyYXRlIGNvZGUgZm9yIHdoZW4gd2UgYmFja3RyYWNrIGJh
Y2sgb3V0IG9mIGFuIGFsdGVybmF0aXZlIGludG8KICAgICAgICAgICAgIC8vIGEgQmVnaW4gb3Ig
TmV4dCBub2RlLCBvciB3aGVuIHRoZSBlbnRyeSBpbnB1dCBjb3VudCBjaGVjayBmYWlscy4gSWYK
QEAgLTI5OTAsMTUgKzI5OTAsMTUgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1Ymxp
YyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAvLyBJ
biB0aGUgY2FzZSBvZiBub24tc2ltcGxlIG5lc3RlZCBhc3NlcnRpb25zIHdlIG5lZWQgdG8gYWxz
byBsaW5rIHRoZQogICAgICAgICAgICAgLy8gJ3JldHVybiBhZGRyZXNzJyBhcHByb3ByaWF0ZWx5
IHRvIGJhY2t0cmFjayBiYWNrIG91dCBpbnRvIHRoZSBjb3JyZWN0CiAgICAgICAgICAgICAvLyBh
bHRlcm5hdGl2ZS4KLSAgICAgICAgICAgIGNhc2UgT3BTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZUJl
Z2luOgotICAgICAgICAgICAgY2FzZSBPcFNpbXBsZU5lc3RlZEFsdGVybmF0aXZlTmV4dDoKLSAg
ICAgICAgICAgIGNhc2UgT3BOZXN0ZWRBbHRlcm5hdGl2ZUJlZ2luOgotICAgICAgICAgICAgY2Fz
ZSBPcE5lc3RlZEFsdGVybmF0aXZlTmV4dDogeworICAgICAgICAgICAgY2FzZSBZYXJyT3BDb2Rl
OjpTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZUJlZ2luOgorICAgICAgICAgICAgY2FzZSBZYXJyT3BD
b2RlOjpTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZU5leHQ6CisgICAgICAgICAgICBjYXNlIFlhcnJP
cENvZGU6Ok5lc3RlZEFsdGVybmF0aXZlQmVnaW46CisgICAgICAgICAgICBjYXNlIFlhcnJPcENv
ZGU6Ok5lc3RlZEFsdGVybmF0aXZlTmV4dDogewogICAgICAgICAgICAgICAgIFlhcnJPcCYgbmV4
dE9wID0gbV9vcHNbb3AubV9uZXh0T3BdOwogICAgICAgICAgICAgICAgIGJvb2wgaXNCZWdpbiA9
IG9wLm1fcHJldmlvdXNPcCA9PSBub3RGb3VuZDsKICAgICAgICAgICAgICAgICBib29sIGlzTGFz
dEFsdGVybmF0aXZlID0gbmV4dE9wLm1fbmV4dE9wID09IG5vdEZvdW5kOwotICAgICAgICAgICAg
ICAgIEFTU0VSVChpc0JlZ2luID09IChvcC5tX29wID09IE9wU2ltcGxlTmVzdGVkQWx0ZXJuYXRp
dmVCZWdpbiB8fCBvcC5tX29wID09IE9wTmVzdGVkQWx0ZXJuYXRpdmVCZWdpbikpOwotICAgICAg
ICAgICAgICAgIEFTU0VSVChpc0xhc3RBbHRlcm5hdGl2ZSA9PSAobmV4dE9wLm1fb3AgPT0gT3BT
aW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZUVuZCB8fCBuZXh0T3AubV9vcCA9PSBPcE5lc3RlZEFsdGVy
bmF0aXZlRW5kKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGlzQmVnaW4gPT0gKG9wLm1fb3Ag
PT0gWWFyck9wQ29kZTo6U2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVCZWdpbiB8fCBvcC5tX29wID09
IFlhcnJPcENvZGU6Ok5lc3RlZEFsdGVybmF0aXZlQmVnaW4pKTsKKyAgICAgICAgICAgICAgICBB
U1NFUlQoaXNMYXN0QWx0ZXJuYXRpdmUgPT0gKG5leHRPcC5tX29wID09IFlhcnJPcENvZGU6OlNp
bXBsZU5lc3RlZEFsdGVybmF0aXZlRW5kIHx8IG5leHRPcC5tX29wID09IFlhcnJPcENvZGU6Ok5l
c3RlZEFsdGVybmF0aXZlRW5kKSk7CiAKICAgICAgICAgICAgICAgICAvLyBUcmVhdCBhbiBpbnB1
dCBjaGVjayBmYWlsdXJlIHRoZSBzYW1lIGFzIGEgZmFpbGVkIG1hdGNoLgogICAgICAgICAgICAg
ICAgIG1fYmFja3RyYWNraW5nU3RhdGUuYXBwZW5kKG9wLm1fanVtcHMpOwpAQCAtMzA1OCw3ICsz
MDU4LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywg
cHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAKICAgICAgICAgICAgICAgICAvLyBGb3Igbm9uLXNp
bXBsZSBhbHRlcm5hdGl2ZXMsIGxpbmsgdGhlIGFsdGVybmF0aXZlJ3MgJ3JldHVybiBhZGRyZXNz
JwogICAgICAgICAgICAgICAgIC8vIHNvIHRoYXQgd2UgYmFja3RyYWNrIGJhY2sgb3V0IGludG8g
dGhlIHByZXZpb3VzIGFsdGVybmF0aXZlLgotICAgICAgICAgICAgICAgIGlmIChvcC5tX29wID09
IE9wTmVzdGVkQWx0ZXJuYXRpdmVOZXh0KQorICAgICAgICAgICAgICAgIGlmIChvcC5tX29wID09
IFlhcnJPcENvZGU6Ok5lc3RlZEFsdGVybmF0aXZlTmV4dCkKICAgICAgICAgICAgICAgICAgICAg
bV9iYWNrdHJhY2tpbmdTdGF0ZS5hcHBlbmQob3AubV9yZXR1cm5BZGRyZXNzKTsKIAogICAgICAg
ICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgYWx0ZXJuYXRpdmUsIHRoZW4g
dGhlIGxhc3QgYWx0ZXJuYXRpdmUgd2lsbApAQCAtMzA2NywxMCArMzA2NywxMCBAQCBjbGFzcyBZ
YXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNz
ZW1ibGVyIHsKICAgICAgICAgICAgICAgICBpZiAoaXNCZWdpbikgewogICAgICAgICAgICAgICAg
ICAgICBZYXJyT3AqIGVuZE9wID0gJm1fb3BzW29wLm1fbmV4dE9wXTsKICAgICAgICAgICAgICAg
ICAgICAgd2hpbGUgKGVuZE9wLT5tX25leHRPcCAhPSBub3RGb3VuZCkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKGVuZE9wLT5tX29wID09IE9wU2ltcGxlTmVzdGVkQWx0ZXJuYXRp
dmVOZXh0IHx8IGVuZE9wLT5tX29wID09IE9wTmVzdGVkQWx0ZXJuYXRpdmVOZXh0KTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChlbmRPcC0+bV9vcCA9PSBZYXJyT3BDb2RlOjpTaW1w
bGVOZXN0ZWRBbHRlcm5hdGl2ZU5leHQgfHwgZW5kT3AtPm1fb3AgPT0gWWFyck9wQ29kZTo6TmVz
dGVkQWx0ZXJuYXRpdmVOZXh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGVuZE9wID0gJm1f
b3BzW2VuZE9wLT5tX25leHRPcF07CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKGVuZE9wLT5tX29wID09IE9wU2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVF
bmQgfHwgZW5kT3AtPm1fb3AgPT0gT3BOZXN0ZWRBbHRlcm5hdGl2ZUVuZCk7CisgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChlbmRPcC0+bV9vcCA9PSBZYXJyT3BDb2RlOjpTaW1wbGVOZXN0ZWRB
bHRlcm5hdGl2ZUVuZCB8fCBlbmRPcC0+bV9vcCA9PSBZYXJyT3BDb2RlOjpOZXN0ZWRBbHRlcm5h
dGl2ZUVuZCk7CiAgICAgICAgICAgICAgICAgICAgIG1fYmFja3RyYWNraW5nU3RhdGUuYXBwZW5k
KGVuZE9wLT5tX2p1bXBzKTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTMwODEsOCArMzA4MSw4
IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZh
dGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgT3BTaW1wbGVOZXN0ZWRBbHRl
cm5hdGl2ZUVuZDoKLSAgICAgICAgICAgIGNhc2UgT3BOZXN0ZWRBbHRlcm5hdGl2ZUVuZDogewor
ICAgICAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZUVuZDoK
KyAgICAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6TmVzdGVkQWx0ZXJuYXRpdmVFbmQ6IHsKICAg
ICAgICAgICAgICAgICBQYXR0ZXJuVGVybSogdGVybSA9IG9wLm1fdGVybTsKIAogICAgICAgICAg
ICAgICAgIC8vIElmIHRoZXJlIGlzIGEgYmFja3RyYWNrIGp1bXAgZnJvbSBhIHplcm8gbGVuZ3Ro
IG1hdGNoIGxpbmsgaXQgaGVyZS4KQEAgLTMwOTMsNyArMzA5Myw3IEBAIGNsYXNzIFlhcnJHZW5l
cmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIg
ewogICAgICAgICAgICAgICAgIC8vIGp1c3QgY29udGludWUgdGhyb3VnaCBpbnRvIHRoZSBsYXN0
IGFsdGVybmF0aXZlLiBJZiB3ZSBiYWNrdHJhY2sKICAgICAgICAgICAgICAgICAvLyBpbnRvIHRo
ZSBlbmQgb2YgYSBub24tc2ltcGxlIHNldCBvZiBhbHRlcm50aXZlcyB3ZSBuZWVkIHRvIGp1bXAK
ICAgICAgICAgICAgICAgICAvLyB0byB0aGUgYmFja3RyYWNraW5nIHJldHVybiBhZGRyZXNzIHNl
dCB1cCBkdXJpbmcgZ2VuZXJhdGlvbi4KLSAgICAgICAgICAgICAgICBpZiAob3AubV9vcCA9PSBP
cE5lc3RlZEFsdGVybmF0aXZlRW5kKSB7CisgICAgICAgICAgICAgICAgaWYgKG9wLm1fb3AgPT0g
WWFyck9wQ29kZTo6TmVzdGVkQWx0ZXJuYXRpdmVFbmQpIHsKICAgICAgICAgICAgICAgICAgICAg
bV9iYWNrdHJhY2tpbmdTdGF0ZS5saW5rKHRoaXMpOwogCiAgICAgICAgICAgICAgICAgICAgIC8v
IFBsYW50IGEganVtcCB0byB0aGUgcmV0dXJuIGFkZHJlc3MuCkBAIC0zMTEwLDcgKzMxMTAsNyBA
QCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRl
IE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgLy8gT3BQYXJlbnRoZXNlc1N1YnBhdHRlcm5PbmNlQmVnaW4vRW5kCisg
ICAgICAgICAgICAvLyBZYXJyT3BDb2RlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm5PbmNlQmVnaW4v
RW5kCiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgYmFja3RyYWNr
aW5nIGJhY2sgb3V0IG9mIGEgY2FwdHVyaW5nIHN1YnBhdHRlcm4gd2UgbmVlZAogICAgICAgICAg
ICAgLy8gdG8gY2xlYXIgdGhlIHN0YXJ0IGluZGV4IGluIHRoZSBtYXRjaGVzIG91dHB1dCBhcnJh
eSwgdG8gcmVjb3JkIHRoYXQKQEAgLTMxMjUsMTIgKzMxMjUsMTIgQEAgY2xhc3MgWWFyckdlbmVy
YXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7
CiAgICAgICAgICAgICAvLyBjYW4gYmFja3RyYWNrIGludG8gdGhlbSwgaWYgd2Ugd2VyZSB3ZSBu
ZWVkIHRvIGVpdGhlciBiYWNrdHJhY2sgYmFjawogICAgICAgICAgICAgLy8gb3V0IG9mIHRoZSBz
dGFydCBvZiB0aGUgcGFyZW50aGVzZXMsIG9yIGp1bXAgYmFjayB0byB0aGUgZm9yd2FyZHMKICAg
ICAgICAgICAgIC8vIG1hdGNoaW5nIHN0YXJ0LCBkZXBlbmRpbmcgb2Ygd2hldGhlciB0aGUgbWF0
Y2ggaXMgR3JlZWR5IG9yIE5vbkdyZWVkeS4KLSAgICAgICAgICAgIGNhc2UgT3BQYXJlbnRoZXNl
c1N1YnBhdHRlcm5PbmNlQmVnaW46IHsKKyAgICAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6UGFy
ZW50aGVzZXNTdWJwYXR0ZXJuT25jZUJlZ2luOiB7CiAgICAgICAgICAgICAgICAgUGF0dGVyblRl
cm0qIHRlcm0gPSBvcC5tX3Rlcm07CiAgICAgICAgICAgICAgICAgQVNTRVJUKHRlcm0tPnF1YW50
aXR5TWF4Q291bnQgPT0gMSk7CiAKICAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IG5lZWQgdG8g
YmFja3RyYWNrIHRvIHRoaXMgcG9pbnQgaWYgY2FwdHVyaW5nIG9yIGdyZWVkeS4KLSAgICAgICAg
ICAgICAgICBpZiAoKHRlcm0tPmNhcHR1cmUoKSAmJiBjb21waWxlTW9kZSA9PSBJbmNsdWRlU3Vi
cGF0dGVybnMpIHx8IHRlcm0tPnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyR3JlZWR5KSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCh0ZXJtLT5jYXB0dXJlKCkgJiYgY29tcGlsZU1vZGUgPT0gSW5j
bHVkZVN1YnBhdHRlcm5zKSB8fCB0ZXJtLT5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllclR5cGU6
OkdyZWVkeSkgewogICAgICAgICAgICAgICAgICAgICBtX2JhY2t0cmFja2luZ1N0YXRlLmxpbmso
dGhpcyk7CiAKICAgICAgICAgICAgICAgICAgICAgLy8gSWYgY2FwdHVyaW5nLCBjbGVhciB0aGUg
Y2FwdHVyZSAod2Ugb25seSBuZWVkIHRvIHJlc2V0IHN0YXJ0KS4KQEAgLTMxMzgsNyArMzEzOCw3
IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZh
dGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJTdWJwYXR0
ZXJuU3RhcnQodGVybS0+cGFyZW50aGVzZXMuc3VicGF0dGVybklkKTsKIAogICAgICAgICAgICAg
ICAgICAgICAvLyBJZiBHcmVlZHksIGp1bXAgdG8gdGhlIGVuZC4KLSAgICAgICAgICAgICAgICAg
ICAgaWYgKHRlcm0tPnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyR3JlZWR5KSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllclR5cGU6Okdy
ZWVkeSkgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2xlYXIgdGhlIGZsYWcgaW4gdGhl
IHN0YWNrZnJhbWUgaW5kaWNhdGluZyB3ZSByYW4gdGhyb3VnaCB0aGUgc3VicGF0dGVybi4KICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHBhcmVudGhlc2VzRnJhbWVMb2NhdGlvbiA9
IHRlcm0tPmZyYW1lTG9jYXRpb247CiAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZVRvRnJh
bWUoVHJ1c3RlZEltbTMyKC0xKSwgcGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uICsgQmFja1RyYWNr
SW5mb1BhcmVudGhlc2VzT25jZTo6YmVnaW5JbmRleCgpKTsKQEAgLTMxNTMsMTAgKzMxNTMsMTAg
QEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0
ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSBPcFBhcmVudGhlc2VzU3VicGF0
dGVybk9uY2VFbmQ6IHsKKyAgICAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6UGFyZW50aGVzZXNT
dWJwYXR0ZXJuT25jZUVuZDogewogICAgICAgICAgICAgICAgIFBhdHRlcm5UZXJtKiB0ZXJtID0g
b3AubV90ZXJtOwogCi0gICAgICAgICAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5VHlwZSAhPSBR
dWFudGlmaWVyRml4ZWRDb3VudCkgeworICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0
eVR5cGUgIT0gUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQpIHsKICAgICAgICAgICAgICAgICAg
ICAgbV9iYWNrdHJhY2tpbmdTdGF0ZS5saW5rKHRoaXMpOwogCiAgICAgICAgICAgICAgICAgICAg
IC8vIENoZWNrIHdoZXRoZXIgd2Ugc2hvdWxkIGJhY2t0cmFjayBiYWNrIGludG8gdGhlIHBhcmVu
dGhlc2VzLCBvciBpZiB3ZQpAQCAtMzE2NSw3ICszMTY1LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRv
ciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHBhcmVudGhlc2VzRnJhbWVMb2NhdGlvbiA9IHRl
cm0tPmZyYW1lTG9jYXRpb247CiAgICAgICAgICAgICAgICAgICAgIEp1bXAgaGFkU2tpcHBlZCA9
IGJyYW5jaDMyKEVxdWFsLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCAocGFyZW50aGVz
ZXNGcmFtZUxvY2F0aW9uICsgQmFja1RyYWNrSW5mb1BhcmVudGhlc2VzT25jZTo6YmVnaW5JbmRl
eCgpKSAqIHNpemVvZih2b2lkKikpLCBUcnVzdGVkSW1tMzIoLTEpKTsKIAotICAgICAgICAgICAg
ICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJHcmVlZHkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyVHlw
ZTo6R3JlZWR5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGb3IgR3JlZWR5IHBhcmVu
dGhlc2VzLCB3ZSBza2lwIGFmdGVyIGhhdmluZyBhbHJlYWR5IHRyaWVkIGdvaW5nCiAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyB0aHJvdWdoIHRoZSBzdWJwYXR0ZXJuLCBzbyBpZiB3ZSBnZXQg
aGVyZSB3ZSdyZSBkb25lLgogICAgICAgICAgICAgICAgICAgICAgICAgWWFyck9wJiBiZWdpbk9w
ID0gbV9vcHNbb3AubV9wcmV2aW91c09wXTsKQEAgLTMxNzUsNyArMzE3NSw3IEBAIGNsYXNzIFlh
cnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3Nl
bWJsZXIgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gc28gaWYgd2UgZ2V0IGhlcmUgd2Ug
bmVlZCB0byB0cnkgcnVubmluZyB0aHJvdWdoIHRoZSBzdWJwYXR0ZXJuCiAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBuZXh0LiBKdW1wIGJhY2sgdG8gdGhlIHN0YXJ0IG9mIHRoZSBwYXJlbnRo
ZXNlcyBpbiB0aGUgZm9yd2FyZHMKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1hdGNoaW5n
IHBhdGguCi0gICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQodGVybS0+cXVhbnRpdHlUeXBl
ID09IFF1YW50aWZpZXJOb25HcmVlZHkpOworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KHRlcm0tPnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyVHlwZTo6Tm9uR3JlZWR5KTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIFlhcnJPcCYgYmVnaW5PcCA9IG1fb3BzW29wLm1fcHJldmlvdXNP
cF07CiAgICAgICAgICAgICAgICAgICAgICAgICBoYWRTa2lwcGVkLmxpbmtUbyhiZWdpbk9wLm1f
cmVlbnRyeSwgdGhpcyk7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTMxODcsMTIgKzMxODcs
MTIgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJp
dmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgIC8vIE9wUGFyZW50aGVzZXNTdWJwYXR0ZXJuVGVybWluYWxCZWdp
bi9FbmQKKyAgICAgICAgICAgIC8vIFlhcnJPcENvZGU6OlBhcmVudGhlc2VzU3VicGF0dGVyblRl
cm1pbmFsQmVnaW4vRW5kCiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8gVGVybWluYWwg
c3VicGF0dGVybnMgd2lsbCBhbHdheXMgbWF0Y2ggLSB0aGVyZSBpcyBub3RoaW5nIGFmdGVyIHRo
ZW0gdG8KICAgICAgICAgICAgIC8vIGZvcmNlIGEgYmFja3RyYWNrLCBhbmQgdGhleSBoYXZlIGEg
bWluaW11bSBjb3VudCBvZiAwLCBhbmQgYXMgc3VjaCB3aWxsCiAgICAgICAgICAgICAvLyBhbHdh
eXMgcHJvZHVjZSBhbiBhY2NlcHRhYmxlIHJlc3VsdC4KLSAgICAgICAgICAgIGNhc2UgT3BQYXJl
bnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEJlZ2luOiB7CisgICAgICAgICAgICBjYXNlIFlhcnJP
cENvZGU6OlBhcmVudGhlc2VzU3VicGF0dGVyblRlcm1pbmFsQmVnaW46IHsKICAgICAgICAgICAg
ICAgICAvLyBXZSB3aWxsIGJhY2t0cmFjayB0byB0aGlzIHBvaW50IG9uY2UgdGhlIHN1YnBhdHRl
cm4gY2Fubm90IG1hdGNoIGFueQogICAgICAgICAgICAgICAgIC8vIG1vcmUuIFNpbmNlIG5vIG1h
dGNoIGlzIGFjY2VwdGVkIGFzIGEgc3VjY2Vzc2Z1bCBtYXRjaCAod2UgYXJlIEdyZWVkeQogICAg
ICAgICAgICAgICAgIC8vIHF1YW50aWZpZWQgd2l0aCBhIG1pbmltdW0gb2YgemVybykganVtcCBi
YWNrIHRvIHRoZSBmb3J3YXJkcyBtYXRjaGluZwpAQCAtMzIwMSwxMyArMzIwMSwxMyBAQCBjbGFz
cyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3Jv
QXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICBtX2JhY2t0cmFja2luZ1N0YXRlLmxpbmtUbyhl
bmRPcC5tX3JlZW50cnksIHRoaXMpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgY2FzZSBPcFBhcmVudGhlc2VzU3VicGF0dGVyblRlcm1pbmFsRW5k
OgorICAgICAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJt
aW5hbEVuZDoKICAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgbmV2ZXIgYmUgYmFja3RyYWNr
aW5nIHRvIGhlcmUgKGhlbmNlIHRoZSAndGVybWluYWwnIGluIHRoZSBuYW1lKS4KICAgICAgICAg
ICAgICAgICBBU1NFUlQobV9iYWNrdHJhY2tpbmdTdGF0ZS5pc0VtcHR5KCkpOwogICAgICAgICAg
ICAgICAgIG1fYmFja3RyYWNraW5nU3RhdGUuYXBwZW5kKG9wLm1fanVtcHMpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICAvLyBPcFBhcmVudGhlc2VzU3VicGF0dGVybkJl
Z2luL0VuZAorICAgICAgICAgICAgLy8gWWFyck9wQ29kZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJu
QmVnaW4vRW5kCiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgYmFj
a3RyYWNraW5nIGJhY2sgb3V0IG9mIGEgY2FwdHVyaW5nIHN1YnBhdHRlcm4gd2UgbmVlZAogICAg
ICAgICAgICAgLy8gdG8gY2xlYXIgdGhlIHN0YXJ0IGluZGV4IGluIHRoZSBtYXRjaGVzIG91dHB1
dCBhcnJheSwgdG8gcmVjb3JkIHRoYXQKQEAgLTMyMjIsMTIgKzMyMjIsMTIgQEAgY2xhc3MgWWFy
ckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2Vt
YmxlciB7CiAgICAgICAgICAgICAvLyBjYW4gYmFja3RyYWNrIGludG8gdGhlbSwgaWYgd2Ugd2Vy
ZSB3ZSBuZWVkIHRvIGVpdGhlciBiYWNrdHJhY2sgYmFjawogICAgICAgICAgICAgLy8gb3V0IG9m
IHRoZSBzdGFydCBvZiB0aGUgcGFyZW50aGVzZXMsIG9yIGp1bXAgYmFjayB0byB0aGUgZm9yd2Fy
ZHMKICAgICAgICAgICAgIC8vIG1hdGNoaW5nIHN0YXJ0LCBkZXBlbmRpbmcgb2Ygd2hldGhlciB0
aGUgbWF0Y2ggaXMgR3JlZWR5IG9yIE5vbkdyZWVkeS4KLSAgICAgICAgICAgIGNhc2UgT3BQYXJl
bnRoZXNlc1N1YnBhdHRlcm5CZWdpbjogeworICAgICAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpQ
YXJlbnRoZXNlc1N1YnBhdHRlcm5CZWdpbjogewogI2lmIEVOQUJMRShZQVJSX0pJVF9BTExfUEFS
RU5TX0VYUFJFU1NJT05TKQogICAgICAgICAgICAgICAgIFBhdHRlcm5UZXJtKiB0ZXJtID0gb3Au
bV90ZXJtOwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIHBhcmVudGhlc2VzRnJhbWVMb2NhdGlv
biA9IHRlcm0tPmZyYW1lTG9jYXRpb247CiAKLSAgICAgICAgICAgICAgICBpZiAodGVybS0+cXVh
bnRpdHlUeXBlICE9IFF1YW50aWZpZXJGaXhlZENvdW50KSB7CisgICAgICAgICAgICAgICAgaWYg
KHRlcm0tPnF1YW50aXR5VHlwZSAhPSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudCkgewogICAg
ICAgICAgICAgICAgICAgICBtX2JhY2t0cmFja2luZ1N0YXRlLmxpbmsodGhpcyk7CiAKICAgICAg
ICAgICAgICAgICAgICAgUmVnaXN0ZXJJRCBjdXJyUGFyZW5Db250ZXh0UmVnID0gcmVnVDA7CkBA
IC0zMjU0LDExICszMjU0LDExIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMg
WWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgICAg
ICAvLyBDbGVhciB0aGUgZmxhZyBpbiB0aGUgc3RhY2tmcmFtZSBpbmRpY2F0aW5nIHdlIGRpZG4n
dCBydW4gdGhyb3VnaCB0aGUgc3VicGF0dGVybi4KICAgICAgICAgICAgICAgICAgICAgc3RvcmVU
b0ZyYW1lKFRydXN0ZWRJbW0zMigtMSksIHBhcmVudGhlc2VzRnJhbWVMb2NhdGlvbiArIEJhY2tU
cmFja0luZm9QYXJlbnRoZXNlczo6YmVnaW5JbmRleCgpKTsKIAotICAgICAgICAgICAgICAgICAg
ICBpZiAodGVybS0+cXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJHcmVlZHkpCisgICAgICAgICAg
ICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllclR5cGU6OkdyZWVk
eSkKICAgICAgICAgICAgICAgICAgICAgICAgIGp1bXAobV9vcHNbb3AubV9uZXh0T3BdLm1fcmVl
bnRyeSk7CiAKICAgICAgICAgICAgICAgICAgICAgLy8gSWYgR3JlZWR5LCBqdW1wIHRvIHRoZSBl
bmQuCi0gICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eVR5cGUgPT0gUXVhbnRp
ZmllckdyZWVkeSkgeworICAgICAgICAgICAgICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlUeXBl
ID09IFF1YW50aWZpZXJUeXBlOjpHcmVlZHkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IEEgYmFja3RyYWNrIGZyb20gYWZ0ZXIgdGhlIHBhcmVudGhlc2VzLCB3aGVuIHNraXBwaW5nIHRo
ZSBzdWJwYXR0ZXJuLAogICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBqdW1wIGJhY2sg
dG8gaGVyZS4KICAgICAgICAgICAgICAgICAgICAgICAgIG9wLm1fanVtcHMubGluayh0aGlzKTsK
QEAgLTMyNzEsMTYgKzMyNzEsMTYgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1Ymxp
YyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAjZW5kaWYKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgT3BQYXJlbnRo
ZXNlc1N1YnBhdHRlcm5FbmQ6IHsKKyAgICAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6UGFyZW50
aGVzZXNTdWJwYXR0ZXJuRW5kOiB7CiAjaWYgRU5BQkxFKFlBUlJfSklUX0FMTF9QQVJFTlNfRVhQ
UkVTU0lPTlMpCiAgICAgICAgICAgICAgICAgUGF0dGVyblRlcm0qIHRlcm0gPSBvcC5tX3Rlcm07
CiAKLSAgICAgICAgICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJG
aXhlZENvdW50KSB7CisgICAgICAgICAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5VHlwZSAhPSBR
dWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudCkgewogICAgICAgICAgICAgICAgICAgICBtX2JhY2t0
cmFja2luZ1N0YXRlLmxpbmsodGhpcyk7CiAKICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
cGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uID0gdGVybS0+ZnJhbWVMb2NhdGlvbjsKIAotICAgICAg
ICAgICAgICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJHcmVlZHkp
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5VHlwZSA9PSBRdWFudGlm
aWVyVHlwZTo6R3JlZWR5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayB3aGV0
aGVyIHdlIHNob3VsZCBiYWNrdHJhY2sgYmFjayBpbnRvIHRoZSBwYXJlbnRoZXNlcywgb3IgaWYg
d2UKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFyZSBjdXJyZW50bHkgaW4gYSBzdGF0ZSB3
aGVyZSB3ZSBoYWQgc2tpcHBlZCBvdmVyIHRoZSBzdWJwYXR0ZXJuCiAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyAoaW4gd2hpY2ggY2FzZSB0aGUgZmxhZyB2YWx1ZSBvbiB0aGUgc3RhY2sgd2ls
bCBiZSAtMSkuCkBAIC0zMjk1LDcgKzMyOTUsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFs
IDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHNvIGlmIHdlIGdldCBoZXJlIHdlIG5lZWQgdG8gdHJ5IHJ1bm5p
bmcgdGhyb3VnaCB0aGUgc3VicGF0dGVybgogICAgICAgICAgICAgICAgICAgICAgICAgLy8gbmV4
dC4gSnVtcCBiYWNrIHRvIHRoZSBzdGFydCBvZiB0aGUgcGFyZW50aGVzZXMgaW4gdGhlIGZvcndh
cmRzCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYXRjaGluZyBwYXRoLgotICAgICAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKHRlcm0tPnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyTm9u
R3JlZWR5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCh0ZXJtLT5xdWFudGl0eVR5
cGUgPT0gUXVhbnRpZmllclR5cGU6Ok5vbkdyZWVkeSk7CiAKICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFJlZ2lzdGVySUQgYmVnaW5UZW1wb3JhcnkgPSByZWdUMDsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFJlZ2lzdGVySUQgY291bnRUZW1wb3JhcnkgPSByZWdUMTsKQEAg
LTMzMjcsOCArMzMyNyw4IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFy
ckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAvLyBPcFBhcmVudGhldGljYWxBc3NlcnRp
b25CZWdpbi9FbmQKLSAgICAgICAgICAgIGNhc2UgT3BQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVn
aW46IHsKKyAgICAgICAgICAgIC8vIFlhcnJPcENvZGU6OlBhcmVudGhldGljYWxBc3NlcnRpb25C
ZWdpbi9FbmQKKyAgICAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6UGFyZW50aGV0aWNhbEFzc2Vy
dGlvbkJlZ2luOiB7CiAgICAgICAgICAgICAgICAgUGF0dGVyblRlcm0qIHRlcm0gPSBvcC5tX3Rl
cm07CiAgICAgICAgICAgICAgICAgWWFyck9wJiBlbmRPcCA9IG1fb3BzW29wLm1fbmV4dE9wXTsK
IApAQCAtMzM1OSw3ICszMzU5LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1Ymxp
YyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAg
bV9jaGVja2VkT2Zmc2V0ICs9IG9wLm1fY2hlY2tBZGp1c3Q7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlIE9wUGFyZW50aGV0aWNhbEFzc2Vy
dGlvbkVuZDogeworICAgICAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpQYXJlbnRoZXRpY2FsQXNz
ZXJ0aW9uRW5kOiB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZWFsbHkg
YmUgY2xlYXJpbmcgYW55IG5lc3RlZCBzdWJwYXR0ZXJuCiAgICAgICAgICAgICAgICAgLy8gbWF0
Y2hlcyBvbiBiYWlsaW5nIG91dCBmcm9tIGFmdGVyIHRoZSBwYXR0ZXJuLiBGaXJlZm94IGhhcwog
ICAgICAgICAgICAgICAgIC8vIHRoaXMgYnVnIHRvbyAocHJlc3VtYWJseSBiZWNhdXNlIHRoZXkg
dXNlIFlBUlIhKQpAQCAtMzM3Miw3ICszMzcyLDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5h
bCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGNhc2UgT3BNYXRj
aEZhaWxlZDoKKyAgICAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6TWF0Y2hGYWlsZWQ6CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKQEAgLTMzOTYsOSArMzM5Niw5IEBA
IGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUg
TWFjcm9Bc3NlbWJsZXIgewogICAgIHsKICAgICAgICAgWWFyck9wQ29kZSBwYXJlbnRoZXNlc0Jl
Z2luT3BDb2RlOwogICAgICAgICBZYXJyT3BDb2RlIHBhcmVudGhlc2VzRW5kT3BDb2RlOwotICAg
ICAgICBZYXJyT3BDb2RlIGFsdGVybmF0aXZlQmVnaW5PcENvZGUgPSBPcFNpbXBsZU5lc3RlZEFs
dGVybmF0aXZlQmVnaW47Ci0gICAgICAgIFlhcnJPcENvZGUgYWx0ZXJuYXRpdmVOZXh0T3BDb2Rl
ID0gT3BTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZU5leHQ7Ci0gICAgICAgIFlhcnJPcENvZGUgYWx0
ZXJuYXRpdmVFbmRPcENvZGUgPSBPcFNpbXBsZU5lc3RlZEFsdGVybmF0aXZlRW5kOworICAgICAg
ICBZYXJyT3BDb2RlIGFsdGVybmF0aXZlQmVnaW5PcENvZGUgPSBZYXJyT3BDb2RlOjpTaW1wbGVO
ZXN0ZWRBbHRlcm5hdGl2ZUJlZ2luOworICAgICAgICBZYXJyT3BDb2RlIGFsdGVybmF0aXZlTmV4
dE9wQ29kZSA9IFlhcnJPcENvZGU6OlNpbXBsZU5lc3RlZEFsdGVybmF0aXZlTmV4dDsKKyAgICAg
ICAgWWFyck9wQ29kZSBhbHRlcm5hdGl2ZUVuZE9wQ29kZSA9IFlhcnJPcENvZGU6OlNpbXBsZU5l
c3RlZEFsdGVybmF0aXZlRW5kOwogCiAgICAgICAgIGlmIChVTkxJS0VMWSghbV92bS0+aXNTYWZl
VG9SZWN1cnNlKCkpKSB7CiAgICAgICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSBKSVRGYWlsdXJl
UmVhc29uOjpQYXJlbnRoZXNpc05lc3RlZFRvb0RlZXA7CkBAIC0zNDE5LDIzICszNDE5LDIzIEBA
IGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUg
TWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAKICAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5TWF4
Q291bnQgPT0gMSAmJiAhdGVybS0+cGFyZW50aGVzZXMuaXNDb3B5KSB7CiAgICAgICAgICAgICAv
LyBTZWxlY3QgdGhlICdPbmNlJyBub2Rlcy4KLSAgICAgICAgICAgIHBhcmVudGhlc2VzQmVnaW5P
cENvZGUgPSBPcFBhcmVudGhlc2VzU3VicGF0dGVybk9uY2VCZWdpbjsKLSAgICAgICAgICAgIHBh
cmVudGhlc2VzRW5kT3BDb2RlID0gT3BQYXJlbnRoZXNlc1N1YnBhdHRlcm5PbmNlRW5kOworICAg
ICAgICAgICAgcGFyZW50aGVzZXNCZWdpbk9wQ29kZSA9IFlhcnJPcENvZGU6OlBhcmVudGhlc2Vz
U3VicGF0dGVybk9uY2VCZWdpbjsKKyAgICAgICAgICAgIHBhcmVudGhlc2VzRW5kT3BDb2RlID0g
WWFyck9wQ29kZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUVuZDsKIAogICAgICAgICAgICAg
Ly8gSWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBhbHRlcm5hdGl2ZSB3ZSBjYW5ub3QgdXNlIHRo
ZSAnc2ltcGxlJyBub2Rlcy4KICAgICAgICAgICAgIGlmICh0ZXJtLT5wYXJlbnRoZXNlcy5kaXNq
dW5jdGlvbi0+bV9hbHRlcm5hdGl2ZXMuc2l6ZSgpICE9IDEpIHsKLSAgICAgICAgICAgICAgICBh
bHRlcm5hdGl2ZUJlZ2luT3BDb2RlID0gT3BOZXN0ZWRBbHRlcm5hdGl2ZUJlZ2luOwotICAgICAg
ICAgICAgICAgIGFsdGVybmF0aXZlTmV4dE9wQ29kZSA9IE9wTmVzdGVkQWx0ZXJuYXRpdmVOZXh0
OwotICAgICAgICAgICAgICAgIGFsdGVybmF0aXZlRW5kT3BDb2RlID0gT3BOZXN0ZWRBbHRlcm5h
dGl2ZUVuZDsKKyAgICAgICAgICAgICAgICBhbHRlcm5hdGl2ZUJlZ2luT3BDb2RlID0gWWFyck9w
Q29kZTo6TmVzdGVkQWx0ZXJuYXRpdmVCZWdpbjsKKyAgICAgICAgICAgICAgICBhbHRlcm5hdGl2
ZU5leHRPcENvZGUgPSBZYXJyT3BDb2RlOjpOZXN0ZWRBbHRlcm5hdGl2ZU5leHQ7CisgICAgICAg
ICAgICAgICAgYWx0ZXJuYXRpdmVFbmRPcENvZGUgPSBZYXJyT3BDb2RlOjpOZXN0ZWRBbHRlcm5h
dGl2ZUVuZDsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmICh0ZXJtLT5wYXJlbnRo
ZXNlcy5pc1Rlcm1pbmFsKSB7CiAgICAgICAgICAgICAvLyBTZWxlY3QgdGhlICdUZXJtaW5hbCcg
bm9kZXMuCi0gICAgICAgICAgICBwYXJlbnRoZXNlc0JlZ2luT3BDb2RlID0gT3BQYXJlbnRoZXNl
c1N1YnBhdHRlcm5UZXJtaW5hbEJlZ2luOwotICAgICAgICAgICAgcGFyZW50aGVzZXNFbmRPcENv
ZGUgPSBPcFBhcmVudGhlc2VzU3VicGF0dGVyblRlcm1pbmFsRW5kOworICAgICAgICAgICAgcGFy
ZW50aGVzZXNCZWdpbk9wQ29kZSA9IFlhcnJPcENvZGU6OlBhcmVudGhlc2VzU3VicGF0dGVyblRl
cm1pbmFsQmVnaW47CisgICAgICAgICAgICBwYXJlbnRoZXNlc0VuZE9wQ29kZSA9IFlhcnJPcENv
ZGU6OlBhcmVudGhlc2VzU3VicGF0dGVyblRlcm1pbmFsRW5kOwogICAgICAgICB9IGVsc2Ugewog
I2lmIEVOQUJMRShZQVJSX0pJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05TKQogICAgICAgICAgICAg
Ly8gV2Ugb25seSBoYW5kbGUgZ2VuZXJpYyBwYXJlbnRoZXNpcyB3aXRoIG5vbi1maXhlZCBjb3Vu
dHMuCi0gICAgICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJGaXhl
ZENvdW50KSB7CisgICAgICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlUeXBlID09IFF1YW50aWZp
ZXJUeXBlOjpGaXhlZENvdW50KSB7CiAgICAgICAgICAgICAgICAgLy8gVGhpcyBzdWJwYXR0ZXJu
IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIEpJVC4KICAgICAgICAgICAgICAgICBtX2ZhaWx1cmVS
ZWFzb24gPSBKSVRGYWlsdXJlUmVhc29uOjpGaXhlZENvdW50UGFyZW50aGVzaXplZFN1YnBhdHRl
cm47CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzQ0NCwxNCArMzQ0NCwxNCBAQCBjbGFz
cyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3Jv
QXNzZW1ibGVyIHsKICAgICAgICAgICAgIG1fY29udGFpbnNOZXN0ZWRTdWJwYXR0ZXJucyA9IHRy
dWU7CiAKICAgICAgICAgICAgIC8vIFNlbGVjdCB0aGUgJ0dlbmVyaWMnIG5vZGVzLgotICAgICAg
ICAgICAgcGFyZW50aGVzZXNCZWdpbk9wQ29kZSA9IE9wUGFyZW50aGVzZXNTdWJwYXR0ZXJuQmVn
aW47Ci0gICAgICAgICAgICBwYXJlbnRoZXNlc0VuZE9wQ29kZSA9IE9wUGFyZW50aGVzZXNTdWJw
YXR0ZXJuRW5kOworICAgICAgICAgICAgcGFyZW50aGVzZXNCZWdpbk9wQ29kZSA9IFlhcnJPcENv
ZGU6OlBhcmVudGhlc2VzU3VicGF0dGVybkJlZ2luOworICAgICAgICAgICAgcGFyZW50aGVzZXNF
bmRPcENvZGUgPSBZYXJyT3BDb2RlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm5FbmQ7CiAKICAgICAg
ICAgICAgIC8vIElmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgYWx0ZXJuYXRpdmUgd2UgY2Fubm90
IHVzZSB0aGUgJ3NpbXBsZScgbm9kZXMuCiAgICAgICAgICAgICBpZiAodGVybS0+cGFyZW50aGVz
ZXMuZGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzLnNpemUoKSAhPSAxKSB7Ci0gICAgICAgICAg
ICAgICAgYWx0ZXJuYXRpdmVCZWdpbk9wQ29kZSA9IE9wTmVzdGVkQWx0ZXJuYXRpdmVCZWdpbjsK
LSAgICAgICAgICAgICAgICBhbHRlcm5hdGl2ZU5leHRPcENvZGUgPSBPcE5lc3RlZEFsdGVybmF0
aXZlTmV4dDsKLSAgICAgICAgICAgICAgICBhbHRlcm5hdGl2ZUVuZE9wQ29kZSA9IE9wTmVzdGVk
QWx0ZXJuYXRpdmVFbmQ7CisgICAgICAgICAgICAgICAgYWx0ZXJuYXRpdmVCZWdpbk9wQ29kZSA9
IFlhcnJPcENvZGU6Ok5lc3RlZEFsdGVybmF0aXZlQmVnaW47CisgICAgICAgICAgICAgICAgYWx0
ZXJuYXRpdmVOZXh0T3BDb2RlID0gWWFyck9wQ29kZTo6TmVzdGVkQWx0ZXJuYXRpdmVOZXh0Owor
ICAgICAgICAgICAgICAgIGFsdGVybmF0aXZlRW5kT3BDb2RlID0gWWFyck9wQ29kZTo6TmVzdGVk
QWx0ZXJuYXRpdmVFbmQ7CiAgICAgICAgICAgICB9CiAjZWxzZQogICAgICAgICAgICAgLy8gVGhp
cyBzdWJwYXR0ZXJuIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIEpJVC4KQEAgLTM1MDMsOSArMzUw
Myw5IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHBy
aXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogCiAgICAgLy8gb3BDb21waWxlUGFyZW50aGV0aWNhbEFz
c2VydGlvbgogICAgIC8vIEVtaXRzIG9wcyBmb3IgYSBwYXJlbnRoZXRpY2FsIGFzc2VydGlvbi4g
VGhlc2UgY29uc2lzdCBvZiBhbgotICAgIC8vIE9wU2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVCZWdp
bi9OZXh0L0VuZCBzZXQgb2Ygbm9kZXMgd3JhcHBpbmcKKyAgICAvLyBZYXJyT3BDb2RlOjpTaW1w
bGVOZXN0ZWRBbHRlcm5hdGl2ZUJlZ2luL05leHQvRW5kIHNldCBvZiBub2RlcyB3cmFwcGluZwog
ICAgIC8vIHRoZSBhbHRlcm5hdGl2ZXMsIHdpdGggdGhlc2Ugd3JhcHBlZCBieSBhbiBvdXRlciBw
YWlyIG9mCi0gICAgLy8gT3BQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW4vRW5kIG5vZGVzLgor
ICAgIC8vIFlhcnJPcENvZGU6OlBhcmVudGhldGljYWxBc3NlcnRpb25CZWdpbi9FbmQgbm9kZXMu
CiAgICAgLy8gV2UgY2FuIGFsd2F5cyB1c2UgdGhlIE9wU2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmUg
bm9kZXMgaW4gdGhlCiAgICAgLy8gY2FzZSBvZiBwYXJlbnRoZXRpY2FsIGFzc2VydGlvbnMgc2lu
Y2UgdGhlc2Ugb25seSBldmVyIG1hdGNoCiAgICAgLy8gb25jZSwgYW5kIHdpbGwgbmV2ZXIgYmFj
a3RyYWNrIGJhY2sgaW50byB0aGUgYXNzZXJ0aW9uLgpAQCAtMzUxNyw5ICszNTE3LDkgQEAgY2xh
c3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNy
b0Fzc2VtYmxlciB7CiAgICAgICAgIH0KIAogICAgICAgICBzaXplX3QgcGFyZW5CZWdpbiA9IG1f
b3BzLnNpemUoKTsKLSAgICAgICAgbV9vcHMuYXBwZW5kKE9wUGFyZW50aGV0aWNhbEFzc2VydGlv
bkJlZ2luKTsKKyAgICAgICAgbV9vcHMuYXBwZW5kKFlhcnJPcENvZGU6OlBhcmVudGhldGljYWxB
c3NlcnRpb25CZWdpbik7CiAKLSAgICAgICAgbV9vcHMuYXBwZW5kKE9wU2ltcGxlTmVzdGVkQWx0
ZXJuYXRpdmVCZWdpbik7CisgICAgICAgIG1fb3BzLmFwcGVuZChZYXJyT3BDb2RlOjpTaW1wbGVO
ZXN0ZWRBbHRlcm5hdGl2ZUJlZ2luKTsKICAgICAgICAgbV9vcHMubGFzdCgpLm1fcHJldmlvdXNP
cCA9IG5vdEZvdW5kOwogICAgICAgICBtX29wcy5sYXN0KCkubV90ZXJtID0gdGVybTsKICAgICAg
ICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxQYXR0ZXJuQWx0ZXJuYXRpdmU+PiYgYWx0ZXJuYXRp
dmVzID0gIHRlcm0tPnBhcmVudGhlc2VzLmRpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZlczsKQEAg
LTM1MzAsNyArMzUzMCw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFy
ckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgb3BDb21waWxl
QWx0ZXJuYXRpdmUobmVzdGVkQWx0ZXJuYXRpdmUpOwogCiAgICAgICAgICAgICBzaXplX3QgdGhp
c09wSW5kZXggPSBtX29wcy5zaXplKCk7Ci0gICAgICAgICAgICBtX29wcy5hcHBlbmQoWWFyck9w
KE9wU2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVOZXh0KSk7CisgICAgICAgICAgICBtX29wcy5hcHBl
bmQoWWFyck9wKFlhcnJPcENvZGU6OlNpbXBsZU5lc3RlZEFsdGVybmF0aXZlTmV4dCkpOwogCiAg
ICAgICAgICAgICBZYXJyT3AmIGxhc3RPcCA9IG1fb3BzW2xhc3RPcEluZGV4XTsKICAgICAgICAg
ICAgIFlhcnJPcCYgdGhpc09wID0gbV9vcHNbdGhpc09wSW5kZXhdOwpAQCAtMzU0MSwxMyArMzU0
MSwxMyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBw
cml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgIHRoaXNPcC5tX3Rlcm0gPSB0ZXJt
OwogICAgICAgICB9CiAgICAgICAgIFlhcnJPcCYgbGFzdE9wID0gbV9vcHMubGFzdCgpOwotICAg
ICAgICBBU1NFUlQobGFzdE9wLm1fb3AgPT0gT3BTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZU5leHQp
OwotICAgICAgICBsYXN0T3AubV9vcCA9IE9wU2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVFbmQ7Cisg
ICAgICAgIEFTU0VSVChsYXN0T3AubV9vcCA9PSBZYXJyT3BDb2RlOjpTaW1wbGVOZXN0ZWRBbHRl
cm5hdGl2ZU5leHQpOworICAgICAgICBsYXN0T3AubV9vcCA9IFlhcnJPcENvZGU6OlNpbXBsZU5l
c3RlZEFsdGVybmF0aXZlRW5kOwogICAgICAgICBsYXN0T3AubV9hbHRlcm5hdGl2ZSA9IG51bGxw
dHI7CiAgICAgICAgIGxhc3RPcC5tX25leHRPcCA9IG5vdEZvdW5kOwogCiAgICAgICAgIHNpemVf
dCBwYXJlbkVuZCA9IG1fb3BzLnNpemUoKTsKLSAgICAgICAgbV9vcHMuYXBwZW5kKE9wUGFyZW50
aGV0aWNhbEFzc2VydGlvbkVuZCk7CisgICAgICAgIG1fb3BzLmFwcGVuZChZYXJyT3BDb2RlOjpQ
YXJlbnRoZXRpY2FsQXNzZXJ0aW9uRW5kKTsKIAogICAgICAgICBtX29wc1twYXJlbkJlZ2luXS5t
X3Rlcm0gPSB0ZXJtOwogICAgICAgICBtX29wc1twYXJlbkJlZ2luXS5tX3ByZXZpb3VzT3AgPSBu
b3RGb3VuZDsKQEAgLTM1NjcsMTEgKzM1NjcsMTEgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5h
bCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAg
ICAgICBQYXR0ZXJuVGVybSogdGVybSA9ICZhbHRlcm5hdGl2ZS0+bV90ZXJtc1tpXTsKIAogICAg
ICAgICAgICAgc3dpdGNoICh0ZXJtLT50eXBlKSB7Ci0gICAgICAgICAgICBjYXNlIFBhdHRlcm5U
ZXJtOjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuOgorICAgICAgICAgICAgY2FzZSBQYXR0ZXJu
VGVybTo6VHlwZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuOgogICAgICAgICAgICAgICAgIG9wQ29t
cGlsZVBhcmVudGhlc2VzU3VicGF0dGVybih0ZXJtKTsKICAgICAgICAgICAgICAgICBicmVhazsK
IAotICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZVBhcmVudGhldGljYWxBc3NlcnRp
b246CisgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpQYXJlbnRoZXRpY2FsQXNz
ZXJ0aW9uOgogICAgICAgICAgICAgICAgIG9wQ29tcGlsZVBhcmVudGhldGljYWxBc3NlcnRpb24o
dGVybSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTM1ODcsMTIgKzM1ODcsMTIgQEAg
Y2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBN
YWNyb0Fzc2VtYmxlciB7CiAgICAgLy8gdGhyb3VnaCcgKEJPTCBhbmNob3JlZCkgYWx0ZXJuYXRp
dmVzLCBmb2xsb3dlZCBieSB6ZXJvIG9yIG1vcmUKICAgICAvLyByZXBlYXRlZCBhbHRlcm5hdGl2
ZXMuCiAgICAgLy8gRm9yIGVhY2ggb2YgdGhlc2UgdHdvIHNldHMgb2YgYWx0ZXJhdGl2ZXMsIGlm
IG5vdCBlbXB0eSB0aGV5IHdpbGwgYmUKLSAgICAvLyB3cmFwcGVkIGluIGEgc2V0IG9mIE9wQm9k
eUFsdGVybmF0aXZlQmVnaW4vTmV4dC9FbmQgbm9kZXMgKHdpdGggdGhlCisgICAgLy8gd3JhcHBl
ZCBpbiBhIHNldCBvZiBZYXJyT3BDb2RlOjpCb2R5QWx0ZXJuYXRpdmVCZWdpbi9OZXh0L0VuZCBu
b2RlcyAod2l0aCB0aGUKICAgICAvLyAnYmVnaW4nIG5vZGUgcmVmZXJlbmNpbmcgdGhlIGZpcnN0
IGFsdGVybmF0aXZlLCBhbmQgJ25leHQnIG5vZGVzCiAgICAgLy8gcmVmZXJlbmNpbmcgYW55IGZ1
cnRoZXIgYWx0ZXJuYXRpdmVzLiBUaGUgYmVnaW4vbmV4dC9lbmQgbm9kZXMgYXJlCiAgICAgLy8g
bGlua2VkIHRvZ2V0aGVyIGluIGEgZG91Ymx5IGxpbmtlZCBsaXN0LiBJbiB0aGUgY2FzZSBvZiBy
ZXBlYXRpbmcKICAgICAvLyBhbHRlcm5hdGl2ZXMsIHRoZSBlbmQgbm9kZSBpcyBhbHNvIGxpbmtl
ZCBiYWNrIHRvIHRoZSBiZWdpbm5pbmcuCi0gICAgLy8gSWYgbm8gcmVwZWF0aW5nIGFsdGVybmF0
aXZlcyBleGlzdCwgdGhlbiBhIE9wTWF0Y2hGYWlsZWQgbm9kZSBleGlzdHMKKyAgICAvLyBJZiBu
byByZXBlYXRpbmcgYWx0ZXJuYXRpdmVzIGV4aXN0LCB0aGVuIGEgWWFyck9wQ29kZTo6TWF0Y2hG
YWlsZWQgbm9kZSBleGlzdHMKICAgICAvLyB0byByZXR1cm4gdGhlIGZhaWxpbmcgcmVzdWx0Lgog
ICAgIHZvaWQgb3BDb21waWxlQm9keShQYXR0ZXJuRGlzanVuY3Rpb24qIGRpc2p1bmN0aW9uKQog
ICAgIHsKQEAgLTM2MDYsNyArMzYwNiw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBw
dWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogCiAgICAgICAgIC8v
IEVtaXQgdGhlICdvbmNlIHRocm91Z2gnIGFsdGVybmF0aXZlcy4KICAgICAgICAgaWYgKGFsdGVy
bmF0aXZlcy5zaXplKCkgJiYgYWx0ZXJuYXRpdmVzWzBdLT5vbmNlVGhyb3VnaCgpKSB7Ci0gICAg
ICAgICAgICBtX29wcy5hcHBlbmQoWWFyck9wKE9wQm9keUFsdGVybmF0aXZlQmVnaW4pKTsKKyAg
ICAgICAgICAgIG1fb3BzLmFwcGVuZChZYXJyT3AoWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZl
QmVnaW4pKTsKICAgICAgICAgICAgIG1fb3BzLmxhc3QoKS5tX3ByZXZpb3VzT3AgPSBub3RGb3Vu
ZDsKIAogICAgICAgICAgICAgZG8gewpAQCAtMzYxNSw3ICszNjE1LDcgQEAgY2xhc3MgWWFyckdl
bmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxl
ciB7CiAgICAgICAgICAgICAgICAgb3BDb21waWxlQWx0ZXJuYXRpdmUoYWx0ZXJuYXRpdmUpOwog
CiAgICAgICAgICAgICAgICAgc2l6ZV90IHRoaXNPcEluZGV4ID0gbV9vcHMuc2l6ZSgpOwotICAg
ICAgICAgICAgICAgIG1fb3BzLmFwcGVuZChZYXJyT3AoT3BCb2R5QWx0ZXJuYXRpdmVOZXh0KSk7
CisgICAgICAgICAgICAgICAgbV9vcHMuYXBwZW5kKFlhcnJPcChZYXJyT3BDb2RlOjpCb2R5QWx0
ZXJuYXRpdmVOZXh0KSk7CiAKICAgICAgICAgICAgICAgICBZYXJyT3AmIGxhc3RPcCA9IG1fb3Bz
W2xhc3RPcEluZGV4XTsKICAgICAgICAgICAgICAgICBZYXJyT3AmIHRoaXNPcCA9IG1fb3BzW3Ro
aXNPcEluZGV4XTsKQEAgLTM2MjksMjAgKzM2MjksMjAgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBm
aW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAKICAg
ICAgICAgICAgIFlhcnJPcCYgbGFzdE9wID0gbV9vcHMubGFzdCgpOwogCi0gICAgICAgICAgICBB
U1NFUlQobGFzdE9wLm1fb3AgPT0gT3BCb2R5QWx0ZXJuYXRpdmVOZXh0KTsKLSAgICAgICAgICAg
IGxhc3RPcC5tX29wID0gT3BCb2R5QWx0ZXJuYXRpdmVFbmQ7CisgICAgICAgICAgICBBU1NFUlQo
bGFzdE9wLm1fb3AgPT0gWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlTmV4dCk7CisgICAgICAg
ICAgICBsYXN0T3AubV9vcCA9IFlhcnJPcENvZGU6OkJvZHlBbHRlcm5hdGl2ZUVuZDsKICAgICAg
ICAgICAgIGxhc3RPcC5tX2FsdGVybmF0aXZlID0gbnVsbHB0cjsKICAgICAgICAgICAgIGxhc3RP
cC5tX25leHRPcCA9IG5vdEZvdW5kOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGN1cnJlbnRB
bHRlcm5hdGl2ZUluZGV4ID09IGFsdGVybmF0aXZlcy5zaXplKCkpIHsKLSAgICAgICAgICAgIG1f
b3BzLmFwcGVuZChZYXJyT3AoT3BNYXRjaEZhaWxlZCkpOworICAgICAgICAgICAgbV9vcHMuYXBw
ZW5kKFlhcnJPcChZYXJyT3BDb2RlOjpNYXRjaEZhaWxlZCkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKICAgICAgICAgLy8gRW1pdCB0aGUgcmVwZWF0ZWQgYWx0ZXJuYXRpdmVz
LgogICAgICAgICBzaXplX3QgcmVwZWF0TG9vcCA9IG1fb3BzLnNpemUoKTsKLSAgICAgICAgbV9v
cHMuYXBwZW5kKFlhcnJPcChPcEJvZHlBbHRlcm5hdGl2ZUJlZ2luKSk7CisgICAgICAgIG1fb3Bz
LmFwcGVuZChZYXJyT3AoWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlQmVnaW4pKTsKICAgICAg
ICAgbV9vcHMubGFzdCgpLm1fcHJldmlvdXNPcCA9IG5vdEZvdW5kOwogICAgICAgICBkbyB7CiAg
ICAgICAgICAgICBzaXplX3QgbGFzdE9wSW5kZXggPSBtX29wcy5zaXplKCkgLSAxOwpAQCAtMzY1
MSw3ICszNjUxLDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklU
SW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICBvcENvbXBpbGVBbHRl
cm5hdGl2ZShhbHRlcm5hdGl2ZSk7CiAKICAgICAgICAgICAgIHNpemVfdCB0aGlzT3BJbmRleCA9
IG1fb3BzLnNpemUoKTsKLSAgICAgICAgICAgIG1fb3BzLmFwcGVuZChZYXJyT3AoT3BCb2R5QWx0
ZXJuYXRpdmVOZXh0KSk7CisgICAgICAgICAgICBtX29wcy5hcHBlbmQoWWFyck9wKFlhcnJPcENv
ZGU6OkJvZHlBbHRlcm5hdGl2ZU5leHQpKTsKIAogICAgICAgICAgICAgWWFyck9wJiBsYXN0T3Ag
PSBtX29wc1tsYXN0T3BJbmRleF07CiAgICAgICAgICAgICBZYXJyT3AmIHRoaXNPcCA9IG1fb3Bz
W3RoaXNPcEluZGV4XTsKQEAgLTM2NjMsOCArMzY2Myw4IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3Ig
ZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAg
ICAgICAgICAgKytjdXJyZW50QWx0ZXJuYXRpdmVJbmRleDsKICAgICAgICAgfSB3aGlsZSAoY3Vy
cmVudEFsdGVybmF0aXZlSW5kZXggPCBhbHRlcm5hdGl2ZXMuc2l6ZSgpKTsKICAgICAgICAgWWFy
ck9wJiBsYXN0T3AgPSBtX29wcy5sYXN0KCk7Ci0gICAgICAgIEFTU0VSVChsYXN0T3AubV9vcCA9
PSBPcEJvZHlBbHRlcm5hdGl2ZU5leHQpOwotICAgICAgICBsYXN0T3AubV9vcCA9IE9wQm9keUFs
dGVybmF0aXZlRW5kOworICAgICAgICBBU1NFUlQobGFzdE9wLm1fb3AgPT0gWWFyck9wQ29kZTo6
Qm9keUFsdGVybmF0aXZlTmV4dCk7CisgICAgICAgIGxhc3RPcC5tX29wID0gWWFyck9wQ29kZTo6
Qm9keUFsdGVybmF0aXZlRW5kOwogICAgICAgICBsYXN0T3AubV9hbHRlcm5hdGl2ZSA9IG51bGxw
dHI7CiAgICAgICAgIGxhc3RPcC5tX25leHRPcCA9IHJlcGVhdExvb3A7CiAgICAgfQpAQCAtMzgw
MSwxNSArMzgwMSwxNCBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJK
SVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICB9CiAKIHB1YmxpYzoKLSAgICBZ
YXJyR2VuZXJhdG9yKFZNKiB2bSwgWWFyclBhdHRlcm4mIHBhdHRlcm4sIFN0cmluZyYgcGF0dGVy
blN0cmluZywgWWFyckNvZGVCbG9jayYgY29kZUJsb2NrLCBZYXJyQ2hhclNpemUgY2hhclNpemUp
CisgICAgWWFyckdlbmVyYXRvcihWTSogdm0sIFlhcnJQYXR0ZXJuJiBwYXR0ZXJuLCBTdHJpbmcm
IHBhdHRlcm5TdHJpbmcsIFlhcnJDb2RlQmxvY2smIGNvZGVCbG9jaywgQ2hhclNpemUgY2hhclNp
emUpCiAgICAgICAgIDogbV92bSh2bSkKICAgICAgICAgLCBtX3BhdHRlcm4ocGF0dGVybikKICAg
ICAgICAgLCBtX3BhdHRlcm5TdHJpbmcocGF0dGVyblN0cmluZykKICAgICAgICAgLCBtX2NvZGVC
bG9jayhjb2RlQmxvY2spCiAgICAgICAgICwgbV9jaGFyU2l6ZShjaGFyU2l6ZSkKLSAgICAgICAg
LCBtX2RlY29kZVN1cnJvZ2F0ZVBhaXJzKG1fY2hhclNpemUgPT0gQ2hhcjE2ICYmIG1fcGF0dGVy
bi51bmljb2RlKCkpCisgICAgICAgICwgbV9kZWNvZGVTdXJyb2dhdGVQYWlycyhtX2NoYXJTaXpl
ID09IENoYXJTaXplOjpDaGFyMTYgJiYgbV9wYXR0ZXJuLnVuaWNvZGUoKSkKICAgICAgICAgLCBt
X3VuaWNvZGVJZ25vcmVDYXNlKG1fcGF0dGVybi51bmljb2RlKCkgJiYgbV9wYXR0ZXJuLmlnbm9y
ZUNhc2UoKSkKLSAgICAgICAgLCBtX2ZpeGVkU2l6ZWRBbHRlcm5hdGl2ZShmYWxzZSkKICAgICAg
ICAgLCBtX2Nhbm9uaWNhbE1vZGUobV9wYXR0ZXJuLnVuaWNvZGUoKSA/IENhbm9uaWNhbE1vZGU6
OlVuaWNvZGUgOiBDYW5vbmljYWxNb2RlOjpVQ1MyKQogI2lmIEVOQUJMRShZQVJSX0pJVF9BTExf
UEFSRU5TX0VYUFJFU1NJT05TKQogICAgICAgICAsIG1fY29udGFpbnNOZXN0ZWRTdWJwYXR0ZXJu
cyhmYWxzZSkKQEAgLTM4MzEsNyArMzgzMCw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwg
OiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogCiAgICAgICAg
IGlmIChtX3BhdHRlcm4ubV9jb250YWluc0JhY2tyZWZlcmVuY2VzCiAjaWYgRU5BQkxFKFlBUlJf
SklUX0JBQ0tSRUZFUkVOQ0VTKQotICAgICAgICAgICAgJiYgKGNvbXBpbGVNb2RlID09IE1hdGNo
T25seSB8fCAobV9wYXR0ZXJuLmlnbm9yZUNhc2UoKSAmJiBtX2NoYXJTaXplICE9IENoYXI4KSkK
KyAgICAgICAgICAgICYmIChjb21waWxlTW9kZSA9PSBNYXRjaE9ubHkgfHwgKG1fcGF0dGVybi5p
Z25vcmVDYXNlKCkgJiYgbV9jaGFyU2l6ZSAhPSBDaGFyU2l6ZTo6Q2hhcjgpKQogI2VuZGlmCiAg
ICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICBjb2RlQmxvY2suc2V0RmFsbEJhY2tXaXRo
RmFpbHVyZVJlYXNvbihKSVRGYWlsdXJlUmVhc29uOjpCYWNrUmVmZXJlbmNlKTsKQEAgLTM4ODAs
NyArMzg3OSw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVElu
Zm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgSnVtcCBzdGFja09rID0g
YnJhbmNoUHRyKEJlbG93T3JFcXVhbCwgQWRkcmVzcyhtYXRjaGluZ0NvbnRleHQsIE1hdGNoaW5n
Q29udGV4dEhvbGRlcjo6b2Zmc2V0T2ZTdGFja0xpbWl0KCkpLCByZWdUMCk7CiAKICAgICAgICAg
ICAgIC8vIEV4Y2VlZGVkIHN0YWNrIGxpbWl0LCBwdW50IHRvIHRoZSBpbnRlcnByZXRlci4KLSAg
ICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cigodm9pZCopc3RhdGljX2Nhc3Q8c2l6ZV90PihK
U1JlZ0V4cEpJVENvZGVGYWlsdXJlKSksIHJldHVyblJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1v
dmUoVHJ1c3RlZEltbVB0cigodm9pZCopc3RhdGljX2Nhc3Q8c2l6ZV90PihKU1JlZ0V4cFJlc3Vs
dDo6SklUQ29kZUZhaWx1cmUpKSwgcmV0dXJuUmVnaXN0ZXIpOwogICAgICAgICAgICAgbW92ZShU
cnVzdGVkSW1tMzIoMCksIHJldHVyblJlZ2lzdGVyMik7CiAgICAgICAgICAgICBnZW5lcmF0ZVJl
dHVybigpOwogCkBAIC0zOTUyLDEyICszOTUxLDEyIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmlu
YWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAg
ICAgICAgbV9kaXNhc3NlbWJsZXItPmR1bXAobGlua0J1ZmZlcik7CiAKICAgICAgICAgaWYgKGNv
bXBpbGVNb2RlID09IE1hdGNoT25seSkgewotICAgICAgICAgICAgaWYgKG1fY2hhclNpemUgPT0g
Q2hhcjgpCisgICAgICAgICAgICBpZiAobV9jaGFyU2l6ZSA9PSBDaGFyU2l6ZTo6Q2hhcjgpCiAg
ICAgICAgICAgICAgICAgY29kZUJsb2NrLnNldDhCaXRDb2RlTWF0Y2hPbmx5KEZJTkFMSVpFX1JF
R0VYUF9DT0RFKGxpbmtCdWZmZXIsIFlhcnJNYXRjaE9ubHk4Qml0UHRyVGFnLCAiTWF0Y2gtb25s
eSA4LWJpdCByZWd1bGFyIGV4cHJlc3Npb24iKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgY29kZUJsb2NrLnNldDE2Qml0Q29kZU1hdGNoT25seShGSU5BTElaRV9SRUdFWFBf
Q09ERShsaW5rQnVmZmVyLCBZYXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWcsICJNYXRjaC1vbmx5IDE2
LWJpdCByZWd1bGFyIGV4cHJlc3Npb24iKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBpZiAobV9jaGFyU2l6ZSA9PSBDaGFyOCkKKyAgICAgICAgICAgIGlmIChtX2NoYXJTaXplID09
IENoYXJTaXplOjpDaGFyOCkKICAgICAgICAgICAgICAgICBjb2RlQmxvY2suc2V0OEJpdENvZGUo
RklOQUxJWkVfUkVHRVhQX0NPREUobGlua0J1ZmZlciwgWWFycjhCaXRQdHJUYWcsICI4LWJpdCBy
ZWd1bGFyIGV4cHJlc3Npb24iKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
Y29kZUJsb2NrLnNldDE2Qml0Q29kZShGSU5BTElaRV9SRUdFWFBfQ09ERShsaW5rQnVmZmVyLCBZ
YXJyMTZCaXRQdHJUYWcsICIxNi1iaXQgcmVndWxhciBleHByZXNzaW9uIikpOwpAQCAtMzk2OSwx
MyArMzk2OCwxMyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJ
bmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICBjb25zdCBjaGFyKiB2YXJpYW50KCkg
ZmluYWwKICAgICB7CiAgICAgICAgIGlmIChjb21waWxlTW9kZSA9PSBNYXRjaE9ubHkpIHsKLSAg
ICAgICAgICAgIGlmIChtX2NoYXJTaXplID09IENoYXI4KQorICAgICAgICAgICAgaWYgKG1fY2hh
clNpemUgPT0gQ2hhclNpemU6OkNoYXI4KQogICAgICAgICAgICAgICAgIHJldHVybiAiTWF0Y2gt
b25seSA4LWJpdCByZWd1bGFyIGV4cHJlc3Npb24iOwogCiAgICAgICAgICAgICByZXR1cm4gIk1h
dGNoLW9ubHkgMTYtYml0IHJlZ3VsYXIgZXhwcmVzc2lvbiI7CiAgICAgICAgIH0KIAotICAgICAg
ICBpZiAobV9jaGFyU2l6ZSA9PSBDaGFyOCkKKyAgICAgICAgaWYgKG1fY2hhclNpemUgPT0gQ2hh
clNpemU6OkNoYXI4KQogICAgICAgICAgICAgcmV0dXJuICI4LWJpdCByZWd1bGFyIGV4cHJlc3Np
b24iOwogCiAgICAgICAgIHJldHVybiAiMTYtYml0IHJlZ3VsYXIgZXhwcmVzc2lvbiI7CkBAIC00
MDAxLDI0ICs0MDAwLDI0IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFy
ckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBZYXJyT3AmIG9wID0g
bV9vcHNbb3BJbmRleF07CiAgICAgICAgIFBhdHRlcm5UZXJtKiB0ZXJtID0gb3AubV90ZXJtOwog
ICAgICAgICBzd2l0Y2ggKG9wLm1fb3ApIHsKLSAgICAgICAgY2FzZSBPcFRlcm06IHsKLSAgICAg
ICAgICAgIG91dC5wcmludCgiT3BUZXJtICIpOworICAgICAgICBjYXNlIFlhcnJPcENvZGU6OlRl
cm06IHsKKyAgICAgICAgICAgIG91dC5wcmludCgiVGVybSAiKTsKICAgICAgICAgICAgIHN3aXRj
aCAodGVybS0+dHlwZSkgewotICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZUFzc2Vy
dGlvbkJPTDoKKyAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkFzc2VydGlvbkJP
TDoKICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIkFzc2VydCBCT0wiKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKIAotICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZUFzc2VydGlv
bkVPTDoKKyAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkFzc2VydGlvbkVPTDoK
ICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIkFzc2VydCBFT0wiKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKIAotICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZUJhY2tSZWZlcmVu
Y2U6CisgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpCYWNrUmVmZXJlbmNlOgog
ICAgICAgICAgICAgICAgIG91dC5wcmludGYoIkJhY2tSZWZlcmVuY2UgcGF0dGVybiAjJXUiLCB0
ZXJtLT5iYWNrUmVmZXJlbmNlU3VicGF0dGVybklkKTsKICAgICAgICAgICAgICAgICB0ZXJtLT5k
dW1wUXVhbnRpZmllcihvdXQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAg
ICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlUGF0dGVybkNoYXJhY3RlcjoKLSAgICAgICAgICAgICAg
ICBvdXQucHJpbnQoIlR5cGVQYXR0ZXJuQ2hhcmFjdGVyICIpOworICAgICAgICAgICAgY2FzZSBQ
YXR0ZXJuVGVybTo6VHlwZTo6UGF0dGVybkNoYXJhY3RlcjoKKyAgICAgICAgICAgICAgICBvdXQu
cHJpbnQoIlR5cGU6OlBhdHRlcm5DaGFyYWN0ZXIgIik7CiAgICAgICAgICAgICAgICAgZHVtcFVD
aGFyMzIob3V0LCB0ZXJtLT5wYXR0ZXJuQ2hhcmFjdGVyKTsKICAgICAgICAgICAgICAgICBpZiAo
bV9wYXR0ZXJuLmlnbm9yZUNhc2UoKSkKICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50KCIg
aWdub3JlIGNhc2UiKTsKQEAgLTQwMjYsMjggKzQwMjUsMjggQEAgY2xhc3MgWWFyckdlbmVyYXRv
ciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAg
ICAgICAgICAgICAgICAgdGVybS0+ZHVtcFF1YW50aWZpZXIob3V0KTsKICAgICAgICAgICAgICAg
ICBicmVhazsKIAotICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZUNoYXJhY3RlckNs
YXNzOgotICAgICAgICAgICAgICAgIG91dC5wcmludCgiVHlwZVBhdHRlcm5DaGFyYWN0ZXJDbGFz
cyAiKTsKKyAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkNoYXJhY3RlckNsYXNz
OgorICAgICAgICAgICAgICAgIG91dC5wcmludCgiVHlwZTo6UGF0dGVybkNoYXJhY3RlckNsYXNz
ICIpOwogICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5pbnZlcnQoKSkKICAgICAgICAgICAgICAg
ICAgICAgb3V0LnByaW50KCJub3QgIik7CiAgICAgICAgICAgICAgICAgZHVtcENoYXJhY3RlckNs
YXNzKG91dCwgJm1fcGF0dGVybiwgdGVybS0+Y2hhcmFjdGVyQ2xhc3MpOwogICAgICAgICAgICAg
ICAgIHRlcm0tPmR1bXBRdWFudGlmaWVyKG91dCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAK
LSAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGVBc3NlcnRpb25Xb3JkQm91bmRhcnk6
CisgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpBc3NlcnRpb25Xb3JkQm91bmRh
cnk6CiAgICAgICAgICAgICAgICAgb3V0LnByaW50ZigiJXN3b3JkIGJvdW5kYXJ5IiwgdGVybS0+
aW52ZXJ0KCkgPyAibm9uLSIgOiAiIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAg
ICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGVEb3RTdGFyRW5jbG9zdXJlOgorICAgICAgICAg
ICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6RG90U3RhckVuY2xvc3VyZToKICAgICAgICAgICAg
ICAgICBvdXQucHJpbnQoIi4qIGVuY2xvc3VyZSIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
Ci0gICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlRm9yd2FyZFJlZmVyZW5jZToKLSAg
ICAgICAgICAgICAgICBvdXQucHJpbnQoIlR5cGVGb3J3YXJkUmVmZXJlbmNlIDxub3QgaGFuZGxl
ZD4iKTsKKyAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkZvcndhcmRSZWZlcmVu
Y2U6CisgICAgICAgICAgICAgICAgb3V0LnByaW50KCJUeXBlOjpGb3J3YXJkUmVmZXJlbmNlIDxu
b3QgaGFuZGxlZD4iKTsKICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgY2Fz
ZSBQYXR0ZXJuVGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVybjoKLSAgICAgICAgICAgIGNh
c2UgUGF0dGVyblRlcm06OlR5cGVQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uOgorICAgICAgICAgICAg
Y2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuOgorICAgICAgICAg
ICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6UGFyZW50aGV0aWNhbEFzc2VydGlvbjoKICAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtNDA1NSwxMTkgKzQwNTQsMTE5IEBAIGNsYXNzIFlh
cnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3Nl
bWJsZXIgewogICAgICAgICAgICAgaWYgKG9wLm1faXNEZWFkQ29kZSkKICAgICAgICAgICAgICAg
ICBvdXQucHJpbnQoIiBhbHJlYWR5IGhhbmRsZWQiKTsKICAgICAgICAgICAgIG91dC5wcmludCgi
XG4iKTsKLSAgICAgICAgICAgIHJldHVybigwKTsKKyAgICAgICAgICAgIHJldHVybiAwOwogICAg
ICAgICB9CiAKLSAgICAgICAgY2FzZSBPcEJvZHlBbHRlcm5hdGl2ZUJlZ2luOgotICAgICAgICAg
ICAgb3V0LnByaW50ZigiT3BCb2R5QWx0ZXJuYXRpdmVCZWdpbiBtaW5pbXVtIHNpemUgJXVcbiIs
IG9wLm1fYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUpOwotICAgICAgICAgICAgcmV0dXJuKDAp
OworICAgICAgICBjYXNlIFlhcnJPcENvZGU6OkJvZHlBbHRlcm5hdGl2ZUJlZ2luOgorICAgICAg
ICAgICAgb3V0LnByaW50ZigiQm9keUFsdGVybmF0aXZlQmVnaW4gbWluaW11bSBzaXplICV1XG4i
LCBvcC5tX2FsdGVybmF0aXZlLT5tX21pbmltdW1TaXplKTsKKyAgICAgICAgICAgIHJldHVybiAw
OwogCi0gICAgICAgIGNhc2UgT3BCb2R5QWx0ZXJuYXRpdmVOZXh0OgotICAgICAgICAgICAgb3V0
LnByaW50ZigiT3BCb2R5QWx0ZXJuYXRpdmVOZXh0IG1pbmltdW0gc2l6ZSAldVxuIiwgb3AubV9h
bHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSk7Ci0gICAgICAgICAgICByZXR1cm4oMCk7CisgICAg
ICAgIGNhc2UgWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlTmV4dDoKKyAgICAgICAgICAgIG91
dC5wcmludGYoIkJvZHlBbHRlcm5hdGl2ZU5leHQgbWluaW11bSBzaXplICV1XG4iLCBvcC5tX2Fs
dGVybmF0aXZlLT5tX21pbmltdW1TaXplKTsKKyAgICAgICAgICAgIHJldHVybiAwOwogCi0gICAg
ICAgIGNhc2UgT3BCb2R5QWx0ZXJuYXRpdmVFbmQ6Ci0gICAgICAgICAgICBvdXQucHJpbnQoIk9w
Qm9keUFsdGVybmF0aXZlRW5kXG4iKTsKLSAgICAgICAgICAgIHJldHVybigwKTsKKyAgICAgICAg
Y2FzZSBZYXJyT3BDb2RlOjpCb2R5QWx0ZXJuYXRpdmVFbmQ6CisgICAgICAgICAgICBvdXQucHJp
bnQoIkJvZHlBbHRlcm5hdGl2ZUVuZFxuIik7CisgICAgICAgICAgICByZXR1cm4gMDsKIAotICAg
ICAgICBjYXNlIE9wU2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVCZWdpbjoKLSAgICAgICAgICAgIG91
dC5wcmludGYoIk9wU2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVCZWdpbiBtaW5pbXVtIHNpemUgJXVc
biIsIG9wLm1fYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUpOwotICAgICAgICAgICAgcmV0dXJu
KDEpOworICAgICAgICBjYXNlIFlhcnJPcENvZGU6OlNpbXBsZU5lc3RlZEFsdGVybmF0aXZlQmVn
aW46CisgICAgICAgICAgICBvdXQucHJpbnRmKCJTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZUJlZ2lu
IG1pbmltdW0gc2l6ZSAldVxuIiwgb3AubV9hbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSk7Cisg
ICAgICAgICAgICByZXR1cm4gMTsKIAotICAgICAgICBjYXNlIE9wTmVzdGVkQWx0ZXJuYXRpdmVC
ZWdpbjoKLSAgICAgICAgICAgIG91dC5wcmludGYoIk9wTmVzdGVkQWx0ZXJuYXRpdmVCZWdpbiBt
aW5pbXVtIHNpemUgJXVcbiIsIG9wLm1fYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUpOwotICAg
ICAgICAgICAgcmV0dXJuKDEpOworICAgICAgICBjYXNlIFlhcnJPcENvZGU6Ok5lc3RlZEFsdGVy
bmF0aXZlQmVnaW46CisgICAgICAgICAgICBvdXQucHJpbnRmKCJOZXN0ZWRBbHRlcm5hdGl2ZUJl
Z2luIG1pbmltdW0gc2l6ZSAldVxuIiwgb3AubV9hbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSk7
CisgICAgICAgICAgICByZXR1cm4gMTsKIAotICAgICAgICBjYXNlIE9wU2ltcGxlTmVzdGVkQWx0
ZXJuYXRpdmVOZXh0OgotICAgICAgICAgICAgb3V0LnByaW50ZigiT3BTaW1wbGVOZXN0ZWRBbHRl
cm5hdGl2ZU5leHQgbWluaW11bSBzaXplICV1XG4iLCBvcC5tX2FsdGVybmF0aXZlLT5tX21pbmlt
dW1TaXplKTsKLSAgICAgICAgICAgIHJldHVybigwKTsKKyAgICAgICAgY2FzZSBZYXJyT3BDb2Rl
OjpTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZU5leHQ6CisgICAgICAgICAgICBvdXQucHJpbnRmKCJT
aW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZU5leHQgbWluaW11bSBzaXplICV1XG4iLCBvcC5tX2FsdGVy
bmF0aXZlLT5tX21pbmltdW1TaXplKTsKKyAgICAgICAgICAgIHJldHVybiAwOwogCi0gICAgICAg
IGNhc2UgT3BOZXN0ZWRBbHRlcm5hdGl2ZU5leHQ6Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCJP
cE5lc3RlZEFsdGVybmF0aXZlTmV4dCBtaW5pbXVtIHNpemUgJXVcbiIsIG9wLm1fYWx0ZXJuYXRp
dmUtPm1fbWluaW11bVNpemUpOwotICAgICAgICAgICAgcmV0dXJuKDApOworICAgICAgICBjYXNl
IFlhcnJPcENvZGU6Ok5lc3RlZEFsdGVybmF0aXZlTmV4dDoKKyAgICAgICAgICAgIG91dC5wcmlu
dGYoIk5lc3RlZEFsdGVybmF0aXZlTmV4dCBtaW5pbXVtIHNpemUgJXVcbiIsIG9wLm1fYWx0ZXJu
YXRpdmUtPm1fbWluaW11bVNpemUpOworICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAg
Y2FzZSBPcFNpbXBsZU5lc3RlZEFsdGVybmF0aXZlRW5kOgotICAgICAgICAgICAgb3V0LnByaW50
KCJPcFNpbXBsZU5lc3RlZEFsdGVybmF0aXZlRW5kIik7CisgICAgICAgIGNhc2UgWWFyck9wQ29k
ZTo6U2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVFbmQ6CisgICAgICAgICAgICBvdXQucHJpbnQoIlNp
bXBsZU5lc3RlZEFsdGVybmF0aXZlRW5kIik7CiAgICAgICAgICAgICB0ZXJtLT5kdW1wUXVhbnRp
ZmllcihvdXQpOwogICAgICAgICAgICAgb3V0LnByaW50KCJcbiIpOwotICAgICAgICAgICAgcmV0
dXJuKC0xKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKIAotICAgICAgICBjYXNlIE9wTmVzdGVk
QWx0ZXJuYXRpdmVFbmQ6Ci0gICAgICAgICAgICBvdXQucHJpbnQoIk9wTmVzdGVkQWx0ZXJuYXRp
dmVFbmQiKTsKKyAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpOZXN0ZWRBbHRlcm5hdGl2ZUVuZDoK
KyAgICAgICAgICAgIG91dC5wcmludCgiTmVzdGVkQWx0ZXJuYXRpdmVFbmQiKTsKICAgICAgICAg
ICAgIHRlcm0tPmR1bXBRdWFudGlmaWVyKG91dCk7CiAgICAgICAgICAgICBvdXQucHJpbnQoIlxu
Iik7Ci0gICAgICAgICAgICByZXR1cm4oLTEpOworICAgICAgICAgICAgcmV0dXJuIC0xOwogCi0g
ICAgICAgIGNhc2UgT3BQYXJlbnRoZXNlc1N1YnBhdHRlcm5PbmNlQmVnaW46Ci0gICAgICAgICAg
ICBvdXQucHJpbnQoIk9wUGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUJlZ2luICIpOworICAgICAg
ICBjYXNlIFlhcnJPcENvZGU6OlBhcmVudGhlc2VzU3VicGF0dGVybk9uY2VCZWdpbjoKKyAgICAg
ICAgICAgIG91dC5wcmludCgiUGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUJlZ2luICIpOwogICAg
ICAgICAgICAgaWYgKHRlcm0tPmNhcHR1cmUoKSkKICAgICAgICAgICAgICAgICBvdXQucHJpbnRm
KCJjYXB0dXJpbmcgcGF0dGVybiAjJXUiLCB0ZXJtLT5wYXJlbnRoZXNlcy5zdWJwYXR0ZXJuSWQp
OwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIG91dC5wcmludCgibm9uLWNhcHR1
cmluZyIpOwogICAgICAgICAgICAgdGVybS0+ZHVtcFF1YW50aWZpZXIob3V0KTsKICAgICAgICAg
ICAgIG91dC5wcmludCgiXG4iKTsKLSAgICAgICAgICAgIHJldHVybigwKTsKKyAgICAgICAgICAg
IHJldHVybiAwOwogCi0gICAgICAgIGNhc2UgT3BQYXJlbnRoZXNlc1N1YnBhdHRlcm5PbmNlRW5k
OgotICAgICAgICAgICAgb3V0LnByaW50KCJPcFBhcmVudGhlc2VzU3VicGF0dGVybk9uY2VFbmQg
Iik7CisgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUVu
ZDoKKyAgICAgICAgICAgIG91dC5wcmludCgiUGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUVuZCAi
KTsKICAgICAgICAgICAgIGlmICh0ZXJtLT5jYXB0dXJlKCkpCiAgICAgICAgICAgICAgICAgb3V0
LnByaW50ZigiY2FwdHVyaW5nIHBhdHRlcm4gIyV1IiwgdGVybS0+cGFyZW50aGVzZXMuc3VicGF0
dGVybklkKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIm5v
bi1jYXB0dXJpbmciKTsKICAgICAgICAgICAgIHRlcm0tPmR1bXBRdWFudGlmaWVyKG91dCk7CiAg
ICAgICAgICAgICBvdXQucHJpbnQoIlxuIik7Ci0gICAgICAgICAgICByZXR1cm4oMCk7CisgICAg
ICAgICAgICByZXR1cm4gMDsKIAotICAgICAgICBjYXNlIE9wUGFyZW50aGVzZXNTdWJwYXR0ZXJu
VGVybWluYWxCZWdpbjoKLSAgICAgICAgICAgIG91dC5wcmludCgiT3BQYXJlbnRoZXNlc1N1YnBh
dHRlcm5UZXJtaW5hbEJlZ2luICIpOworICAgICAgICBjYXNlIFlhcnJPcENvZGU6OlBhcmVudGhl
c2VzU3VicGF0dGVyblRlcm1pbmFsQmVnaW46CisgICAgICAgICAgICBvdXQucHJpbnQoIlBhcmVu
dGhlc2VzU3VicGF0dGVyblRlcm1pbmFsQmVnaW4gIik7CiAgICAgICAgICAgICBpZiAodGVybS0+
Y2FwdHVyZSgpKQogICAgICAgICAgICAgICAgIG91dC5wcmludGYoImNhcHR1cmluZyBwYXR0ZXJu
ICMldVxuIiwgdGVybS0+cGFyZW50aGVzZXMuc3VicGF0dGVybklkKTsKICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIm5vbi1jYXB0dXJpbmdcbiIpOwotICAgICAg
ICAgICAgcmV0dXJuKDApOworICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgY2FzZSBP
cFBhcmVudGhlc2VzU3VicGF0dGVyblRlcm1pbmFsRW5kOgotICAgICAgICAgICAgb3V0LnByaW50
KCJPcFBhcmVudGhlc2VzU3VicGF0dGVyblRlcm1pbmFsRW5kICIpOworICAgICAgICBjYXNlIFlh
cnJPcENvZGU6OlBhcmVudGhlc2VzU3VicGF0dGVyblRlcm1pbmFsRW5kOgorICAgICAgICAgICAg
b3V0LnByaW50KCJQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEVuZCAiKTsKICAgICAgICAg
ICAgIGlmICh0ZXJtLT5jYXB0dXJlKCkpCiAgICAgICAgICAgICAgICAgb3V0LnByaW50ZigiY2Fw
dHVyaW5nIHBhdHRlcm4gIyV1XG4iLCB0ZXJtLT5wYXJlbnRoZXNlcy5zdWJwYXR0ZXJuSWQpOwog
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIG91dC5wcmludCgibm9uLWNhcHR1cmlu
Z1xuIik7Ci0gICAgICAgICAgICByZXR1cm4oMCk7CisgICAgICAgICAgICByZXR1cm4gMDsKIAot
ICAgICAgICBjYXNlIE9wUGFyZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW46Ci0gICAgICAgICAgICBv
dXQucHJpbnQoIk9wUGFyZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4gIik7CisgICAgICAgIGNhc2Ug
WWFyck9wQ29kZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW46CisgICAgICAgICAgICBvdXQu
cHJpbnQoIlBhcmVudGhlc2VzU3VicGF0dGVybkJlZ2luICIpOwogICAgICAgICAgICAgaWYgKHRl
cm0tPmNhcHR1cmUoKSkKICAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCJjYXB0dXJpbmcgcGF0
dGVybiAjJXUiLCB0ZXJtLT5wYXJlbnRoZXNlcy5zdWJwYXR0ZXJuSWQpOwogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIG91dC5wcmludCgibm9uLWNhcHR1cmluZyIpOwogICAgICAg
ICAgICAgdGVybS0+ZHVtcFF1YW50aWZpZXIob3V0KTsKICAgICAgICAgICAgIG91dC5wcmludCgi
XG4iKTsKLSAgICAgICAgICAgIHJldHVybigwKTsKKyAgICAgICAgICAgIHJldHVybiAwOwogCi0g
ICAgICAgIGNhc2UgT3BQYXJlbnRoZXNlc1N1YnBhdHRlcm5FbmQ6Ci0gICAgICAgICAgICBvdXQu
cHJpbnQoIk9wUGFyZW50aGVzZXNTdWJwYXR0ZXJuRW5kICIpOworICAgICAgICBjYXNlIFlhcnJP
cENvZGU6OlBhcmVudGhlc2VzU3VicGF0dGVybkVuZDoKKyAgICAgICAgICAgIG91dC5wcmludCgi
UGFyZW50aGVzZXNTdWJwYXR0ZXJuRW5kICIpOwogICAgICAgICAgICAgaWYgKHRlcm0tPmNhcHR1
cmUoKSkKICAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCJjYXB0dXJpbmcgcGF0dGVybiAjJXUi
LCB0ZXJtLT5wYXJlbnRoZXNlcy5zdWJwYXR0ZXJuSWQpOwogICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgIG91dC5wcmludCgibm9uLWNhcHR1cmluZyIpOwogICAgICAgICAgICAgdGVy
bS0+ZHVtcFF1YW50aWZpZXIob3V0KTsKICAgICAgICAgICAgIG91dC5wcmludCgiXG4iKTsKLSAg
ICAgICAgICAgIHJldHVybigwKTsKKyAgICAgICAgICAgIHJldHVybiAwOwogCi0gICAgICAgIGNh
c2UgT3BQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW46Ci0gICAgICAgICAgICBvdXQucHJpbnRm
KCJPcFBhcmVudGhldGljYWxBc3NlcnRpb25CZWdpbiVzXG4iLCB0ZXJtLT5pbnZlcnQoKSA/ICIg
aW52ZXJ0ZWQiIDogIiIpOwotICAgICAgICAgICAgcmV0dXJuKDApOworICAgICAgICBjYXNlIFlh
cnJPcENvZGU6OlBhcmVudGhldGljYWxBc3NlcnRpb25CZWdpbjoKKyAgICAgICAgICAgIG91dC5w
cmludGYoIlBhcmVudGhldGljYWxBc3NlcnRpb25CZWdpbiVzXG4iLCB0ZXJtLT5pbnZlcnQoKSA/
ICIgaW52ZXJ0ZWQiIDogIiIpOworICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgY2Fz
ZSBPcFBhcmVudGhldGljYWxBc3NlcnRpb25FbmQ6Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCJP
cFBhcmVudGhldGljYWxBc3NlcnRpb25FbmQlc1xuIiwgdGVybS0+aW52ZXJ0KCkgPyAiIGludmVy
dGVkIiA6ICIiKTsKLSAgICAgICAgICAgIHJldHVybigwKTsKKyAgICAgICAgY2FzZSBZYXJyT3BD
b2RlOjpQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uRW5kOgorICAgICAgICAgICAgb3V0LnByaW50Zigi
UGFyZW50aGV0aWNhbEFzc2VydGlvbkVuZCVzXG4iLCB0ZXJtLT5pbnZlcnQoKSA/ICIgaW52ZXJ0
ZWQiIDogIiIpOworICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgY2FzZSBPcE1hdGNo
RmFpbGVkOgotICAgICAgICAgICAgb3V0LnByaW50KCJPcE1hdGNoRmFpbGVkXG4iKTsKLSAgICAg
ICAgICAgIHJldHVybigwKTsKKyAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpNYXRjaEZhaWxlZDoK
KyAgICAgICAgICAgIG91dC5wcmludCgiTWF0Y2hGYWlsZWRcbiIpOworICAgICAgICAgICAgcmV0
dXJuIDA7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4oMCk7CisgICAgICAgIHJldHVybiAw
OwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTQxNzcsNyArNDE3Niw3IEBAIGNsYXNzIFlhcnJHZW5l
cmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIg
ewogICAgIFN0cmluZyYgbV9wYXR0ZXJuU3RyaW5nOwogCiAgICAgWWFyckNvZGVCbG9jayYgbV9j
b2RlQmxvY2s7Ci0gICAgWWFyckNoYXJTaXplIG1fY2hhclNpemU7CisgICAgQ2hhclNpemUgbV9j
aGFyU2l6ZTsKIAogICAgIC8vIFVzZWQgdG8gZGV0ZWN0IHJlZ3VsYXIgZXhwcmVzc2lvbiBjb25z
dHJ1Y3RzIHRoYXQgYXJlIG5vdCBjdXJyZW50bHkKICAgICAvLyBzdXBwb3J0ZWQgaW4gdGhlIEpJ
VDsgZmFsbCBiYWNrIHRvIHRoZSBpbnRlcnByZXRlciB3aGVuIHRoaXMgaXMgZGV0ZWN0ZWQuCkBA
IC00MTg1LDcgKzQxODQsNiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlh
cnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKIAogICAgIGJvb2wgbV9kZWNvZGVT
dXJyb2dhdGVQYWlyczsKICAgICBib29sIG1fdW5pY29kZUlnbm9yZUNhc2U7Ci0gICAgYm9vbCBt
X2ZpeGVkU2l6ZWRBbHRlcm5hdGl2ZTsKICAgICBDYW5vbmljYWxNb2RlIG1fY2Fub25pY2FsTW9k
ZTsKICNpZiBFTkFCTEUoWUFSUl9KSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUykKICAgICBib29s
IG1fY29udGFpbnNOZXN0ZWRTdWJwYXR0ZXJuczsKQEAgLTQyNDcsNyArNDI0NSw3IEBAIHN0YXRp
YyB2b2lkIGR1bXBDb21waWxlRmFpbHVyZShKSVRGYWlsdXJlUmVhc29uIGZhaWx1cmUpCiAgICAg
fQogfQogCi12b2lkIGppdENvbXBpbGUoWWFyclBhdHRlcm4mIHBhdHRlcm4sIFN0cmluZyYgcGF0
dGVyblN0cmluZywgWWFyckNoYXJTaXplIGNoYXJTaXplLCBWTSogdm0sIFlhcnJDb2RlQmxvY2sm
IGNvZGVCbG9jaywgWWFyckpJVENvbXBpbGVNb2RlIG1vZGUpCit2b2lkIGppdENvbXBpbGUoWWFy
clBhdHRlcm4mIHBhdHRlcm4sIFN0cmluZyYgcGF0dGVyblN0cmluZywgQ2hhclNpemUgY2hhclNp
emUsIFZNKiB2bSwgWWFyckNvZGVCbG9jayYgY29kZUJsb2NrLCBKSVRDb21waWxlTW9kZSBtb2Rl
KQogewogICAgIGlmIChtb2RlID09IE1hdGNoT25seSkKICAgICAgICAgWWFyckdlbmVyYXRvcjxN
YXRjaE9ubHk+KHZtLCBwYXR0ZXJuLCBwYXR0ZXJuU3RyaW5nLCBjb2RlQmxvY2ssIGNoYXJTaXpl
KS5jb21waWxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJy
SklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmgKaW5kZXggM2QyZmM0
YWQ2NjVmMWQxM2E2MzRjOTUxZTAyMjQwN2E3M2RkYzM3ZS4uZWYzOWM4YjQwNDUyZmQ4NWFhYmUz
ZTA3Mjk2NWMwZGYzZGJiMDlmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyckpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaApA
QCAtMTg4LDExICsxODgsMTEgQEAgY2xhc3MgWWFyckNvZGVCbG9jayB7CiAgICAgc3RkOjpvcHRp
b25hbDxKSVRGYWlsdXJlUmVhc29uPiBtX2ZhaWx1cmVSZWFzb247CiB9OwogCi1lbnVtIFlhcnJK
SVRDb21waWxlTW9kZSB7CitlbnVtIGNsYXNzIEpJVENvbXBpbGVNb2RlIDogdWludDhfdCB7CiAg
ICAgTWF0Y2hPbmx5LAogICAgIEluY2x1ZGVTdWJwYXR0ZXJucwogfTsKLXZvaWQgaml0Q29tcGls
ZShZYXJyUGF0dGVybiYsIFN0cmluZyYgcGF0dGVyblN0cmluZywgWWFyckNoYXJTaXplLCBWTSos
IFlhcnJDb2RlQmxvY2smIGppdE9iamVjdCwgWWFyckpJVENvbXBpbGVNb2RlID0gSW5jbHVkZVN1
YnBhdHRlcm5zKTsKK3ZvaWQgaml0Q29tcGlsZShZYXJyUGF0dGVybiYsIFN0cmluZyYgcGF0dGVy
blN0cmluZywgQ2hhclNpemUsIFZNKiwgWWFyckNvZGVCbG9jayYgaml0T2JqZWN0LCBKSVRDb21w
aWxlTW9kZSk7CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpZYXJyCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJQYXJzZXIuaAppbmRleCA5MjE0MmJjODg5YzM3Y2FjZDkzNTAwY2E2YzBj
MWU4NjVmOWQwZjBiLi4zMGVjM2Y4YzhjYjhlYTIzYzZjNTAxOTRkYTU4MDMzZDE2ZGRkM2JiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGFyc2VyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhcnNlci5oCkBAIC02MCw3ICs2MCw3IEBA
IGNsYXNzIFBhcnNlciB7CiAgICAgICAgICAgICA6IG1fZGVsZWdhdGUoZGVsZWdhdGUpCiAgICAg
ICAgICAgICAsIG1fZXJyb3JDb2RlKGVycikKICAgICAgICAgICAgICwgbV9pc1VuaWNvZGUoaXNV
bmljb2RlKQotICAgICAgICAgICAgLCBtX3N0YXRlKEVtcHR5KQorICAgICAgICAgICAgLCBtX3N0
YXRlKENoYXJhY3RlckNsYXNzQ29uc3RydWN0aW9uU3RhdGU6OkVtcHR5KQogICAgICAgICAgICAg
LCBtX2NoYXJhY3RlcigwKQogICAgICAgICB7CiAgICAgICAgIH0KQEAgLTg3LDcgKzg3LDcgQEAg
Y2xhc3MgUGFyc2VyIHsKICAgICAgICAgdm9pZCBhdG9tUGF0dGVybkNoYXJhY3RlcihVQ2hhcjMy
IGNoLCBib29sIGh5cGhlbklzUmFuZ2UgPSBmYWxzZSkKICAgICAgICAgewogICAgICAgICAgICAg
c3dpdGNoIChtX3N0YXRlKSB7Ci0gICAgICAgICAgICBjYXNlIEFmdGVyQ2hhcmFjdGVyQ2xhc3M6
CisgICAgICAgICAgICBjYXNlIENoYXJhY3RlckNsYXNzQ29uc3RydWN0aW9uU3RhdGU6OkFmdGVy
Q2hhcmFjdGVyQ2xhc3M6CiAgICAgICAgICAgICAgICAgLy8gRm9sbG93aW5nIGEgYnVpbHQtaW4g
Y2hhcmFjdGVyIGNsYXNzIHdlIG5lZWQgbG9vayBvdXQgZm9yIGEgaHlwaGVuLgogICAgICAgICAg
ICAgICAgIC8vIFdlJ3JlIGxvb2tpbmcgZm9yIGludmFsaWQgcmFuZ2VzLCBzdWNoIGFzIC9bXGQt
eF0vIG9yIC9bXGQtXGRdLy4KICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBzZWUgYSBoeXBoZW4g
Zm9sbG93aW5nIGEgY2hhcmFjdGVyIGNsYXNzIHRoZW4gdW5saWtlIHVzdWFsCkBAIC05OCw0NCAr
OTgsNDQgQEAgY2xhc3MgUGFyc2VyIHsKICAgICAgICAgICAgICAgICAvLyB0aGUgZW5kIG9mIGEg
cmVnZXguCiAgICAgICAgICAgICAgICAgaWYgKGh5cGhlbklzUmFuZ2UgJiYgY2ggPT0gJy0nKSB7
CiAgICAgICAgICAgICAgICAgICAgIG1fZGVsZWdhdGUuYXRvbUNoYXJhY3RlckNsYXNzQXRvbSgn
LScpOwotICAgICAgICAgICAgICAgICAgICBtX3N0YXRlID0gQWZ0ZXJDaGFyYWN0ZXJDbGFzc0h5
cGhlbjsKKyAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IENoYXJhY3RlckNsYXNzQ29uc3Ry
dWN0aW9uU3RhdGU6OkFmdGVyQ2hhcmFjdGVyQ2xhc3NIeXBoZW47CiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgLy8gT3RoZXJ3
aXNlIGp1c3QgZmFsbCB0aHJvdWdoIC0gY2FjaGVkIGNoYXJhY3RlciBzbyB0cmVhdCB0aGlzIGFz
IEVtcHR5LgorICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZSBqdXN0IGZhbGwgdGhyb3VnaCAt
IGNhY2hlZCBjaGFyYWN0ZXIgc28gdHJlYXQgdGhpcyBhcyBDaGFyYWN0ZXJDbGFzc0NvbnN0cnVj
dGlvblN0YXRlOjpFbXB0eS4KICAgICAgICAgICAgICAgICBGQUxMVEhST1VHSDsKIAotICAgICAg
ICAgICAgY2FzZSBFbXB0eToKKyAgICAgICAgICAgIGNhc2UgQ2hhcmFjdGVyQ2xhc3NDb25zdHJ1
Y3Rpb25TdGF0ZTo6RW1wdHk6CiAgICAgICAgICAgICAgICAgbV9jaGFyYWN0ZXIgPSBjaDsKLSAg
ICAgICAgICAgICAgICBtX3N0YXRlID0gQ2FjaGVkQ2hhcmFjdGVyOworICAgICAgICAgICAgICAg
IG1fc3RhdGUgPSBDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdGlvblN0YXRlOjpDYWNoZWRDaGFyYWN0
ZXI7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBjYXNlIENhY2hlZENo
YXJhY3RlcjoKKyAgICAgICAgICAgIGNhc2UgQ2hhcmFjdGVyQ2xhc3NDb25zdHJ1Y3Rpb25TdGF0
ZTo6Q2FjaGVkQ2hhcmFjdGVyOgogICAgICAgICAgICAgICAgIGlmIChoeXBoZW5Jc1JhbmdlICYm
IGNoID09ICctJykKLSAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IENhY2hlZENoYXJhY3Rl
ckh5cGhlbjsKKyAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IENoYXJhY3RlckNsYXNzQ29u
c3RydWN0aW9uU3RhdGU6OkNhY2hlZENoYXJhY3Rlckh5cGhlbjsKICAgICAgICAgICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgICAgICAgICAgbV9kZWxlZ2F0ZS5hdG9tQ2hhcmFjdGVyQ2xhc3NB
dG9tKG1fY2hhcmFjdGVyKTsKICAgICAgICAgICAgICAgICAgICAgbV9jaGFyYWN0ZXIgPSBjaDsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAg
ICBjYXNlIENhY2hlZENoYXJhY3Rlckh5cGhlbjoKKyAgICAgICAgICAgIGNhc2UgQ2hhcmFjdGVy
Q2xhc3NDb25zdHJ1Y3Rpb25TdGF0ZTo6Q2FjaGVkQ2hhcmFjdGVySHlwaGVuOgogICAgICAgICAg
ICAgICAgIGlmIChjaCA8IG1fY2hhcmFjdGVyKSB7CiAgICAgICAgICAgICAgICAgICAgIG1fZXJy
b3JDb2RlID0gRXJyb3JDb2RlOjpDaGFyYWN0ZXJDbGFzc1JhbmdlT3V0T2ZPcmRlcjsKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICBtX2RlbGVnYXRlLmF0b21DaGFyYWN0ZXJDbGFzc1JhbmdlKG1fY2hhcmFjdGVyLCBjaCk7Ci0g
ICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEVtcHR5OworICAgICAgICAgICAgICAgIG1fc3RhdGUg
PSBDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdGlvblN0YXRlOjpFbXB0eTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBoaXQgdGhpcyBjYXNlLCB3ZSBo
YXZlIGFuIGludmFsaWQgcmFuZ2UgbGlrZSAvW1xkLWFdLy4KICAgICAgICAgICAgICAgICAvLyBT
ZWUgY29tZW50IGluIGF0b21CdWlsdEluQ2hhcmFjdGVyQ2xhc3MoKSBiZWxvdy4KLSAgICAgICAg
ICAgIGNhc2UgQWZ0ZXJDaGFyYWN0ZXJDbGFzc0h5cGhlbjoKKyAgICAgICAgICAgIGNhc2UgQ2hh
cmFjdGVyQ2xhc3NDb25zdHJ1Y3Rpb25TdGF0ZTo6QWZ0ZXJDaGFyYWN0ZXJDbGFzc0h5cGhlbjoK
ICAgICAgICAgICAgICAgICBpZiAobV9pc1VuaWNvZGUpIHsKICAgICAgICAgICAgICAgICAgICAg
bV9lcnJvckNvZGUgPSBFcnJvckNvZGU6OkNoYXJhY3RlckNsYXNzUmFuZ2VJbnZhbGlkOwogICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIG1fZGVsZWdhdGUuYXRvbUNoYXJhY3RlckNsYXNzQXRvbShjaCk7Ci0gICAgICAgICAgICAg
ICAgbV9zdGF0ZSA9IEVtcHR5OworICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBDaGFyYWN0ZXJD
bGFzc0NvbnN0cnVjdGlvblN0YXRlOjpFbXB0eTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE0OCwxNCArMTQ4LDE0IEBAIGNsYXNzIFBhcnNl
ciB7CiAgICAgICAgIHZvaWQgYXRvbUJ1aWx0SW5DaGFyYWN0ZXJDbGFzcyhCdWlsdEluQ2hhcmFj
dGVyQ2xhc3NJRCBjbGFzc0lELCBib29sIGludmVydCkKICAgICAgICAgewogICAgICAgICAgICAg
c3dpdGNoIChtX3N0YXRlKSB7Ci0gICAgICAgICAgICBjYXNlIENhY2hlZENoYXJhY3RlcjoKKyAg
ICAgICAgICAgIGNhc2UgQ2hhcmFjdGVyQ2xhc3NDb25zdHJ1Y3Rpb25TdGF0ZTo6Q2FjaGVkQ2hh
cmFjdGVyOgogICAgICAgICAgICAgICAgIC8vIEZsdXNoIHRoZSBjdXJyZW50bHkgY2FjaGVkIGNo
YXJhY3RlciwgdGhlbiBmYWxsIHRocm91Z2guCiAgICAgICAgICAgICAgICAgbV9kZWxlZ2F0ZS5h
dG9tQ2hhcmFjdGVyQ2xhc3NBdG9tKG1fY2hhcmFjdGVyKTsKICAgICAgICAgICAgICAgICBGQUxM
VEhST1VHSDsKLSAgICAgICAgICAgIGNhc2UgRW1wdHk6Ci0gICAgICAgICAgICBjYXNlIEFmdGVy
Q2hhcmFjdGVyQ2xhc3M6CisgICAgICAgICAgICBjYXNlIENoYXJhY3RlckNsYXNzQ29uc3RydWN0
aW9uU3RhdGU6OkVtcHR5OgorICAgICAgICAgICAgY2FzZSBDaGFyYWN0ZXJDbGFzc0NvbnN0cnVj
dGlvblN0YXRlOjpBZnRlckNoYXJhY3RlckNsYXNzOgogICAgICAgICAgICAgICAgIG1fZGVsZWdh
dGUuYXRvbUNoYXJhY3RlckNsYXNzQnVpbHRJbihjbGFzc0lELCBpbnZlcnQpOwotICAgICAgICAg
ICAgICAgIG1fc3RhdGUgPSBBZnRlckNoYXJhY3RlckNsYXNzOworICAgICAgICAgICAgICAgIG1f
c3RhdGUgPSBDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdGlvblN0YXRlOjpBZnRlckNoYXJhY3RlckNs
YXNzOwogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgICAgIC8vIElmIHdl
IGhpdCBlaXRoZXIgb2YgdGhlc2UgY2FzZXMsIHdlIGhhdmUgYW4gaW52YWxpZCByYW5nZSB0aGF0
CkBAIC0xNjYsMTcgKzE2NiwxNyBAQCBjbGFzcyBQYXJzZXIgewogICAgICAgICAgICAgICAgIC8v
IGUuZy4gL1tcZC1hLXpdLyBpcyB0cmVhdGVkIGFzIC9bXGRcLWFcLXpdLy4KICAgICAgICAgICAg
ICAgICAvLyBTZWUgdXNhZ2VzIG9mIENoYXJhY3RlclJhbmdlT3JVbmlvbiBhYnN0cmFjdCBvcCBp
bgogICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcmVndWxh
ci1leHByZXNzaW9uLXBhdHRlcm5zLXNlbWFudGljcwotICAgICAgICAgICAgY2FzZSBDYWNoZWRD
aGFyYWN0ZXJIeXBoZW46CisgICAgICAgICAgICBjYXNlIENoYXJhY3RlckNsYXNzQ29uc3RydWN0
aW9uU3RhdGU6OkNhY2hlZENoYXJhY3Rlckh5cGhlbjoKICAgICAgICAgICAgICAgICBtX2RlbGVn
YXRlLmF0b21DaGFyYWN0ZXJDbGFzc0F0b20obV9jaGFyYWN0ZXIpOwogICAgICAgICAgICAgICAg
IG1fZGVsZWdhdGUuYXRvbUNoYXJhY3RlckNsYXNzQXRvbSgnLScpOwogICAgICAgICAgICAgICAg
IEZBTExUSFJPVUdIOwotICAgICAgICAgICAgY2FzZSBBZnRlckNoYXJhY3RlckNsYXNzSHlwaGVu
OgorICAgICAgICAgICAgY2FzZSBDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdGlvblN0YXRlOjpBZnRl
ckNoYXJhY3RlckNsYXNzSHlwaGVuOgogICAgICAgICAgICAgICAgIGlmIChtX2lzVW5pY29kZSkg
ewogICAgICAgICAgICAgICAgICAgICBtX2Vycm9yQ29kZSA9IEVycm9yQ29kZTo6Q2hhcmFjdGVy
Q2xhc3NSYW5nZUludmFsaWQ7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgbV9kZWxlZ2F0ZS5hdG9tQ2hhcmFjdGVyQ2xhc3NC
dWlsdEluKGNsYXNzSUQsIGludmVydCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEVtcHR5
OworICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdGlvblN0
YXRlOjpFbXB0eTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KQEAgLTE4OCw5ICsxODgsOSBAQCBjbGFzcyBQYXJzZXIgewogICAgICAgICAgKi8KICAg
ICAgICAgdm9pZCBlbmQoKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobV9zdGF0ZSA9PSBD
YWNoZWRDaGFyYWN0ZXIpCisgICAgICAgICAgICBpZiAobV9zdGF0ZSA9PSBDaGFyYWN0ZXJDbGFz
c0NvbnN0cnVjdGlvblN0YXRlOjpDYWNoZWRDaGFyYWN0ZXIpCiAgICAgICAgICAgICAgICAgbV9k
ZWxlZ2F0ZS5hdG9tQ2hhcmFjdGVyQ2xhc3NBdG9tKG1fY2hhcmFjdGVyKTsKLSAgICAgICAgICAg
IGVsc2UgaWYgKG1fc3RhdGUgPT0gQ2FjaGVkQ2hhcmFjdGVySHlwaGVuKSB7CisgICAgICAgICAg
ICBlbHNlIGlmIChtX3N0YXRlID09IENoYXJhY3RlckNsYXNzQ29uc3RydWN0aW9uU3RhdGU6OkNh
Y2hlZENoYXJhY3Rlckh5cGhlbikgewogICAgICAgICAgICAgICAgIG1fZGVsZWdhdGUuYXRvbUNo
YXJhY3RlckNsYXNzQXRvbShtX2NoYXJhY3Rlcik7CiAgICAgICAgICAgICAgICAgbV9kZWxlZ2F0
ZS5hdG9tQ2hhcmFjdGVyQ2xhc3NBdG9tKCctJyk7CiAgICAgICAgICAgICB9CkBAIC0yMDgsMTMg
KzIwOCwxNCBAQCBjbGFzcyBQYXJzZXIgewogICAgICAgICBEZWxlZ2F0ZSYgbV9kZWxlZ2F0ZTsK
ICAgICAgICAgRXJyb3JDb2RlJiBtX2Vycm9yQ29kZTsKICAgICAgICAgYm9vbCBtX2lzVW5pY29k
ZTsKLSAgICAgICAgZW51bSBDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdGlvblN0YXRlIHsKKyAgICAg
ICAgZW51bSBjbGFzcyBDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdGlvblN0YXRlIHsKICAgICAgICAg
ICAgIEVtcHR5LAogICAgICAgICAgICAgQ2FjaGVkQ2hhcmFjdGVyLAogICAgICAgICAgICAgQ2Fj
aGVkQ2hhcmFjdGVySHlwaGVuLAogICAgICAgICAgICAgQWZ0ZXJDaGFyYWN0ZXJDbGFzcywKICAg
ICAgICAgICAgIEFmdGVyQ2hhcmFjdGVyQ2xhc3NIeXBoZW4sCi0gICAgICAgIH0gbV9zdGF0ZTsK
KyAgICAgICAgfTsKKyAgICAgICAgQ2hhcmFjdGVyQ2xhc3NDb25zdHJ1Y3Rpb25TdGF0ZSBtX3N0
YXRlOwogICAgICAgICBVQ2hhcjMyIG1fY2hhcmFjdGVyOwogICAgIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAppbmRleCA5Y2JiZTkwY2IzZTlhMTYwZGYz
MzFjYjY5ZTBmZTI0ZDQwODA4OWE2Li4xY2FjYWZjNDE3ZWJmMTRmOTQ4MWY1OTk0NDMyZTIwMzU0
NmVhOWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVy
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCkBA
IC01OTYsNyArNTk2LDcgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7CiAgICAgICAg
ICAgICBBU1NFUlQoIW9wdEdyb3VwTmFtZSk7CiAKICAgICAgICAgYXV0byBwYXJlbnRoZXNlc0Rp
c2p1bmN0aW9uID0gbWFrZVVuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KG1fYWx0ZXJuYXRpdmUp
OwotICAgICAgICBtX2FsdGVybmF0aXZlLT5tX3Rlcm1zLmFwcGVuZChQYXR0ZXJuVGVybShQYXR0
ZXJuVGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVybiwgc3VicGF0dGVybklkLCBwYXJlbnRo
ZXNlc0Rpc2p1bmN0aW9uLmdldCgpLCBjYXB0dXJlLCBmYWxzZSkpOworICAgICAgICBtX2FsdGVy
bmF0aXZlLT5tX3Rlcm1zLmFwcGVuZChQYXR0ZXJuVGVybShQYXR0ZXJuVGVybTo6VHlwZTo6UGFy
ZW50aGVzZXNTdWJwYXR0ZXJuLCBzdWJwYXR0ZXJuSWQsIHBhcmVudGhlc2VzRGlzanVuY3Rpb24u
Z2V0KCksIGNhcHR1cmUsIGZhbHNlKSk7CiAgICAgICAgIG1fYWx0ZXJuYXRpdmUgPSBwYXJlbnRo
ZXNlc0Rpc2p1bmN0aW9uLT5hZGROZXdBbHRlcm5hdGl2ZSgpOwogICAgICAgICBtX3BhdHRlcm4u
bV9kaXNqdW5jdGlvbnMuYXBwZW5kKFdURk1vdmUocGFyZW50aGVzZXNEaXNqdW5jdGlvbikpOwog
ICAgIH0KQEAgLTYwNCw3ICs2MDQsNyBAQCBjbGFzcyBZYXJyUGF0dGVybkNvbnN0cnVjdG9yIHsK
ICAgICB2b2lkIGF0b21QYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW4oYm9vbCBpbnZlcnQgPSBm
YWxzZSkKICAgICB7CiAgICAgICAgIGF1dG8gcGFyZW50aGVzZXNEaXNqdW5jdGlvbiA9IG1ha2VV
bmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPihtX2FsdGVybmF0aXZlKTsKLSAgICAgICAgbV9hbHRl
cm5hdGl2ZS0+bV90ZXJtcy5hcHBlbmQoUGF0dGVyblRlcm0oUGF0dGVyblRlcm06OlR5cGVQYXJl
bnRoZXRpY2FsQXNzZXJ0aW9uLCBtX3BhdHRlcm4ubV9udW1TdWJwYXR0ZXJucyArIDEsIHBhcmVu
dGhlc2VzRGlzanVuY3Rpb24uZ2V0KCksIGZhbHNlLCBpbnZlcnQpKTsKKyAgICAgICAgbV9hbHRl
cm5hdGl2ZS0+bV90ZXJtcy5hcHBlbmQoUGF0dGVyblRlcm0oUGF0dGVyblRlcm06OlR5cGU6OlBh
cmVudGhldGljYWxBc3NlcnRpb24sIG1fcGF0dGVybi5tX251bVN1YnBhdHRlcm5zICsgMSwgcGFy
ZW50aGVzZXNEaXNqdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGludmVydCkpOwogICAgICAgICBtX2Fs
dGVybmF0aXZlID0gcGFyZW50aGVzZXNEaXNqdW5jdGlvbi0+YWRkTmV3QWx0ZXJuYXRpdmUoKTsK
ICAgICAgICAgbV9pbnZlcnRQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uID0gaW52ZXJ0OwogICAgICAg
ICBtX3BhdHRlcm4ubV9kaXNqdW5jdGlvbnMuYXBwZW5kKFdURk1vdmUocGFyZW50aGVzZXNEaXNq
dW5jdGlvbikpOwpAQCAtNjU2LDkgKzY1Niw5IEBAIGNsYXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0
b3IgewogICAgICAgICAvLyBOb3RlIHRvIHNlbGY6IGlmIHdlIHdhaXRlZCB1bnRpbCB0aGUgQVNU
IHdhcyBiYWtlZCwgd2UgY291bGQgYWxzbyByZW1vdmUgZm9yd2FyZHMgcmVmcyAKICAgICAgICAg
d2hpbGUgKChjdXJyZW50QWx0ZXJuYXRpdmUgPSBjdXJyZW50QWx0ZXJuYXRpdmUtPm1fcGFyZW50
LT5tX3BhcmVudCkpIHsKICAgICAgICAgICAgIFBhdHRlcm5UZXJtJiB0ZXJtID0gY3VycmVudEFs
dGVybmF0aXZlLT5sYXN0VGVybSgpOwotICAgICAgICAgICAgQVNTRVJUKCh0ZXJtLnR5cGUgPT0g
UGF0dGVyblRlcm06OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm4pIHx8ICh0ZXJtLnR5cGUgPT0g
UGF0dGVyblRlcm06OlR5cGVQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uKSk7CisgICAgICAgICAgICBB
U1NFUlQoKHRlcm0udHlwZSA9PSBQYXR0ZXJuVGVybTo6VHlwZTo6UGFyZW50aGVzZXNTdWJwYXR0
ZXJuKSB8fCAodGVybS50eXBlID09IFBhdHRlcm5UZXJtOjpUeXBlOjpQYXJlbnRoZXRpY2FsQXNz
ZXJ0aW9uKSk7CiAKLSAgICAgICAgICAgIGlmICgodGVybS50eXBlID09IFBhdHRlcm5UZXJtOjpU
eXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuKSAmJiB0ZXJtLmNhcHR1cmUoKSAmJiAoc3VicGF0dGVy
bklkID09IHRlcm0ucGFyZW50aGVzZXMuc3VicGF0dGVybklkKSkgeworICAgICAgICAgICAgaWYg
KCh0ZXJtLnR5cGUgPT0gUGF0dGVyblRlcm06OlR5cGU6OlBhcmVudGhlc2VzU3VicGF0dGVybikg
JiYgdGVybS5jYXB0dXJlKCkgJiYgKHN1YnBhdHRlcm5JZCA9PSB0ZXJtLnBhcmVudGhlc2VzLnN1
YnBhdHRlcm5JZCkpIHsKICAgICAgICAgICAgICAgICBtX2FsdGVybmF0aXZlLT5tX3Rlcm1zLmFw
cGVuZChQYXR0ZXJuVGVybTo6Rm9yd2FyZFJlZmVyZW5jZSgpKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICB9CkBAIC03MjIsNyArNzIyLDcgQEAgY2xhc3MgWWFyclBhdHRl
cm5Db25zdHJ1Y3RvciB7CiAgICAgICAgICAgICByZXR1cm4gUGF0dGVyblRlcm0odGVybSk7CiAg
ICAgICAgIH0KIAotICAgICAgICBpZiAoKHRlcm0udHlwZSAhPSBQYXR0ZXJuVGVybTo6VHlwZVBh
cmVudGhlc2VzU3VicGF0dGVybikgJiYgKHRlcm0udHlwZSAhPSBQYXR0ZXJuVGVybTo6VHlwZVBh
cmVudGhldGljYWxBc3NlcnRpb24pKQorICAgICAgICBpZiAoKHRlcm0udHlwZSAhPSBQYXR0ZXJu
VGVybTo6VHlwZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuKSAmJiAodGVybS50eXBlICE9IFBhdHRl
cm5UZXJtOjpUeXBlOjpQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uKSkKICAgICAgICAgICAgIHJldHVy
biBQYXR0ZXJuVGVybSh0ZXJtKTsKICAgICAgICAgCiAgICAgICAgIFBhdHRlcm5UZXJtIHRlcm1D
b3B5ID0gdGVybTsKQEAgLTc0MiwxMCArNzQyLDEwIEBAIGNsYXNzIFlhcnJQYXR0ZXJuQ29uc3Ry
dWN0b3IgewogICAgICAgICB9CiAKICAgICAgICAgUGF0dGVyblRlcm0mIHRlcm0gPSBtX2FsdGVy
bmF0aXZlLT5sYXN0VGVybSgpOwotICAgICAgICBBU1NFUlQodGVybS50eXBlID4gUGF0dGVyblRl
cm06OlR5cGVBc3NlcnRpb25Xb3JkQm91bmRhcnkpOwotICAgICAgICBBU1NFUlQodGVybS5xdWFu
dGl0eU1pbkNvdW50ID09IDEgJiYgdGVybS5xdWFudGl0eU1heENvdW50ID09IDEgJiYgdGVybS5x
dWFudGl0eVR5cGUgPT0gUXVhbnRpZmllckZpeGVkQ291bnQpOworICAgICAgICBBU1NFUlQodGVy
bS50eXBlID4gUGF0dGVyblRlcm06OlR5cGU6OkFzc2VydGlvbldvcmRCb3VuZGFyeSk7CisgICAg
ICAgIEFTU0VSVCh0ZXJtLnF1YW50aXR5TWluQ291bnQgPT0gMSAmJiB0ZXJtLnF1YW50aXR5TWF4
Q291bnQgPT0gMSAmJiB0ZXJtLnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRD
b3VudCk7CiAKLSAgICAgICAgaWYgKHRlcm0udHlwZSA9PSBQYXR0ZXJuVGVybTo6VHlwZVBhcmVu
dGhldGljYWxBc3NlcnRpb24pIHsKKyAgICAgICAgaWYgKHRlcm0udHlwZSA9PSBQYXR0ZXJuVGVy
bTo6VHlwZTo6UGFyZW50aGV0aWNhbEFzc2VydGlvbikgewogICAgICAgICAgICAgLy8gSWYgYW4g
YXNzZXJ0aW9uIGlzIHF1YW50aWZpZWQgd2l0aCBhIG1pbmltdW0gY291bnQgb2YgemVybywgaXQg
Y2FuIHNpbXBseSBiZSByZW1vdmVkLgogICAgICAgICAgICAgLy8gVGhpcyBhcmlzZXMgZnJvbSB0
aGUgUmVwZWF0TWF0Y2hlciBiZWhhdmlvdXIgaW4gdGhlIHNwZWMuIE1hdGNoaW5nIGFuIGFzc2Vy
dGlvbiBuZXZlcgogICAgICAgICAgICAgLy8gcmVzdWx0cyBpbiBhbnkgaW5wdXQgYmVpbmcgY29u
c3VtZWQsIGhvd2V2ZXIgdGhlIGNvbnRpbnVhdGlvbiBwYXNzZWQgdG8gdGhlIGFzc2VydGlvbgpA
QCAtNzY2LDE1ICs3NjYsMTUgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7CiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAobWluID09IG1heCkKLSAgICAgICAgICAgIHRlcm0ucXVhbnRp
ZnkobWluLCBtYXgsIFF1YW50aWZpZXJGaXhlZENvdW50KTsKLSAgICAgICAgZWxzZSBpZiAoIW1p
biB8fCAodGVybS50eXBlID09IFBhdHRlcm5UZXJtOjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJu
ICYmIG1fcGF0dGVybi5tX2hhc0NvcGllZFBhcmVuU3ViZXhwcmVzc2lvbnMpKQotICAgICAgICAg
ICAgdGVybS5xdWFudGlmeShtaW4sIG1heCwgZ3JlZWR5ID8gUXVhbnRpZmllckdyZWVkeSA6IFF1
YW50aWZpZXJOb25HcmVlZHkpOworICAgICAgICAgICAgdGVybS5xdWFudGlmeShtaW4sIG1heCwg
UXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQpOworICAgICAgICBlbHNlIGlmICghbWluIHx8ICh0
ZXJtLnR5cGUgPT0gUGF0dGVyblRlcm06OlR5cGU6OlBhcmVudGhlc2VzU3VicGF0dGVybiAmJiBt
X3BhdHRlcm4ubV9oYXNDb3BpZWRQYXJlblN1YmV4cHJlc3Npb25zKSkKKyAgICAgICAgICAgIHRl
cm0ucXVhbnRpZnkobWluLCBtYXgsIGdyZWVkeSA/IFF1YW50aWZpZXJUeXBlOjpHcmVlZHkgOiBR
dWFudGlmaWVyVHlwZTo6Tm9uR3JlZWR5KTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB0
ZXJtLnF1YW50aWZ5KG1pbiwgbWluLCBRdWFudGlmaWVyRml4ZWRDb3VudCk7CisgICAgICAgICAg
ICB0ZXJtLnF1YW50aWZ5KG1pbiwgbWluLCBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudCk7CiAg
ICAgICAgICAgICBtX2FsdGVybmF0aXZlLT5tX3Rlcm1zLmFwcGVuZChjb3B5VGVybSh0ZXJtKSk7
CiAgICAgICAgICAgICAvLyBOT1RFOiB0aGlzIHRlcm0gaXMgaW50ZXJlc3RpbmcgZnJvbSBhbiBh
bmFseXNpcyBwZXJzcGVjdGl2ZSwgaW4gdGhhdCBpdCBjYW4gYmUgaWdub3JlZC4uLi4uCi0gICAg
ICAgICAgICBtX2FsdGVybmF0aXZlLT5sYXN0VGVybSgpLnF1YW50aWZ5KChtYXggPT0gcXVhbnRp
ZnlJbmZpbml0ZSkgPyBtYXggOiBtYXggLSBtaW4sIGdyZWVkeSA/IFF1YW50aWZpZXJHcmVlZHkg
OiBRdWFudGlmaWVyTm9uR3JlZWR5KTsKLSAgICAgICAgICAgIGlmIChtX2FsdGVybmF0aXZlLT5s
YXN0VGVybSgpLnR5cGUgPT0gUGF0dGVyblRlcm06OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm4p
CisgICAgICAgICAgICBtX2FsdGVybmF0aXZlLT5sYXN0VGVybSgpLnF1YW50aWZ5KChtYXggPT0g
cXVhbnRpZnlJbmZpbml0ZSkgPyBtYXggOiBtYXggLSBtaW4sIGdyZWVkeSA/IFF1YW50aWZpZXJU
eXBlOjpHcmVlZHkgOiBRdWFudGlmaWVyVHlwZTo6Tm9uR3JlZWR5KTsKKyAgICAgICAgICAgIGlm
IChtX2FsdGVybmF0aXZlLT5sYXN0VGVybSgpLnR5cGUgPT0gUGF0dGVyblRlcm06OlR5cGU6OlBh
cmVudGhlc2VzU3VicGF0dGVybikKICAgICAgICAgICAgICAgICBtX2FsdGVybmF0aXZlLT5sYXN0
VGVybSgpLnBhcmVudGhlc2VzLmlzQ29weSA9IHRydWU7CiAgICAgICAgIH0KICAgICB9CkBAIC03
OTcsMjUgKzc5NywyNSBAQCBjbGFzcyBZYXJyUGF0dGVybkNvbnN0cnVjdG9yIHsKICAgICAgICAg
ICAgIFBhdHRlcm5UZXJtJiB0ZXJtID0gYWx0ZXJuYXRpdmUtPm1fdGVybXNbaV07CiAKICAgICAg
ICAgICAgIHN3aXRjaCAodGVybS50eXBlKSB7Ci0gICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJt
OjpUeXBlQXNzZXJ0aW9uQk9MOgotICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZUFz
c2VydGlvbkVPTDoKLSAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGVBc3NlcnRpb25X
b3JkQm91bmRhcnk6CisgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpBc3NlcnRp
b25CT0w6CisgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpBc3NlcnRpb25FT0w6
CisgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpBc3NlcnRpb25Xb3JkQm91bmRh
cnk6CiAgICAgICAgICAgICAgICAgdGVybS5pbnB1dFBvc2l0aW9uID0gY3VycmVudElucHV0UG9z
aXRpb247CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIGNhc2UgUGF0dGVy
blRlcm06OlR5cGVCYWNrUmVmZXJlbmNlOgorICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6
VHlwZTo6QmFja1JlZmVyZW5jZToKICAgICAgICAgICAgICAgICB0ZXJtLmlucHV0UG9zaXRpb24g
PSBjdXJyZW50SW5wdXRQb3NpdGlvbjsKICAgICAgICAgICAgICAgICB0ZXJtLmZyYW1lTG9jYXRp
b24gPSBjdXJyZW50Q2FsbEZyYW1lU2l6ZTsKICAgICAgICAgICAgICAgICBjdXJyZW50Q2FsbEZy
YW1lU2l6ZSArPSBZYXJyU3RhY2tTcGFjZUZvckJhY2tUcmFja0luZm9CYWNrUmVmZXJlbmNlOwog
ICAgICAgICAgICAgICAgIGFsdGVybmF0aXZlLT5tX2hhc0ZpeGVkU2l6ZSA9IGZhbHNlOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBl
Rm9yd2FyZFJlZmVyZW5jZToKKyAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkZv
cndhcmRSZWZlcmVuY2U6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIGNh
c2UgUGF0dGVyblRlcm06OlR5cGVQYXR0ZXJuQ2hhcmFjdGVyOgorICAgICAgICAgICAgY2FzZSBQ
YXR0ZXJuVGVybTo6VHlwZTo6UGF0dGVybkNoYXJhY3RlcjoKICAgICAgICAgICAgICAgICB0ZXJt
LmlucHV0UG9zaXRpb24gPSBjdXJyZW50SW5wdXRQb3NpdGlvbjsKLSAgICAgICAgICAgICAgICBp
ZiAodGVybS5xdWFudGl0eVR5cGUgIT0gUXVhbnRpZmllckZpeGVkQ291bnQpIHsKKyAgICAgICAg
ICAgICAgICBpZiAodGVybS5xdWFudGl0eVR5cGUgIT0gUXVhbnRpZmllclR5cGU6OkZpeGVkQ291
bnQpIHsKICAgICAgICAgICAgICAgICAgICAgdGVybS5mcmFtZUxvY2F0aW9uID0gY3VycmVudENh
bGxGcmFtZVNpemU7CiAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDYWxsRnJhbWVTaXplICs9
IFlhcnJTdGFja1NwYWNlRm9yQmFja1RyYWNrSW5mb1BhdHRlcm5DaGFyYWN0ZXI7CiAgICAgICAg
ICAgICAgICAgICAgIGFsdGVybmF0aXZlLT5tX2hhc0ZpeGVkU2l6ZSA9IGZhbHNlOwpAQCAtODI5
LDkgKzgyOSw5IEBAIGNsYXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAgICAgICAgICAg
ICAgICAgICBjdXJyZW50SW5wdXRQb3NpdGlvbiArPSB0ZXJtLnF1YW50aXR5TWF4Q291bnQ7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5
cGVDaGFyYWN0ZXJDbGFzczoKKyAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkNo
YXJhY3RlckNsYXNzOgogICAgICAgICAgICAgICAgIHRlcm0uaW5wdXRQb3NpdGlvbiA9IGN1cnJl
bnRJbnB1dFBvc2l0aW9uOwotICAgICAgICAgICAgICAgIGlmICh0ZXJtLnF1YW50aXR5VHlwZSAh
PSBRdWFudGlmaWVyRml4ZWRDb3VudCkgeworICAgICAgICAgICAgICAgIGlmICh0ZXJtLnF1YW50
aXR5VHlwZSAhPSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudCkgewogICAgICAgICAgICAgICAg
ICAgICB0ZXJtLmZyYW1lTG9jYXRpb24gPSBjdXJyZW50Q2FsbEZyYW1lU2l6ZTsKICAgICAgICAg
ICAgICAgICAgICAgY3VycmVudENhbGxGcmFtZVNpemUgKz0gWWFyclN0YWNrU3BhY2VGb3JCYWNr
VHJhY2tJbmZvQ2hhcmFjdGVyQ2xhc3M7CiAgICAgICAgICAgICAgICAgICAgIGFsdGVybmF0aXZl
LT5tX2hhc0ZpeGVkU2l6ZSA9IGZhbHNlOwpAQCAtODUyLDcgKzg1Miw3IEBAIGNsYXNzIFlhcnJQ
YXR0ZXJuQ29uc3RydWN0b3IgewogICAgICAgICAgICAgICAgICAgICBjdXJyZW50SW5wdXRQb3Np
dGlvbiArPSB0ZXJtLnF1YW50aXR5TWF4Q291bnQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAK
LSAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm46
CisgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpQYXJlbnRoZXNlc1N1YnBhdHRl
cm46CiAgICAgICAgICAgICAgICAgLy8gTm90ZTogZm9yIGZpeGVkIG9uY2UgcGFyZW50aGVzZXMg
d2Ugd2lsbCBlbnN1cmUgYXQgbGVhc3QgdGhlIG1pbmltdW0gaXMgYXZhaWxhYmxlOyBvdGhlcnMg
YXJlIG9uIHRoZWlyIG93bi4KICAgICAgICAgICAgICAgICB0ZXJtLmZyYW1lTG9jYXRpb24gPSBj
dXJyZW50Q2FsbEZyYW1lU2l6ZTsKICAgICAgICAgICAgICAgICBpZiAodGVybS5xdWFudGl0eU1h
eENvdW50ID09IDEgJiYgIXRlcm0ucGFyZW50aGVzZXMuaXNDb3B5KSB7CkBAIC04NjEsNyArODYx
LDcgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChoYXNFcnJvcihlcnJvcikpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJy
b3I7CiAgICAgICAgICAgICAgICAgICAgIC8vIElmIHF1YW50aXR5IGlzIGZpeGVkLCB0aGVuIHBy
ZS1jaGVjayBpdHMgbWluaW11bSBzaXplLgotICAgICAgICAgICAgICAgICAgICBpZiAodGVybS5x
dWFudGl0eVR5cGUgPT0gUXVhbnRpZmllckZpeGVkQ291bnQpCisgICAgICAgICAgICAgICAgICAg
IGlmICh0ZXJtLnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudCkKICAg
ICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRJbnB1dFBvc2l0aW9uICs9IHRlcm0ucGFyZW50
aGVzZXMuZGlzanVuY3Rpb24tPm1fbWluaW11bVNpemU7CiAgICAgICAgICAgICAgICAgICAgIHRl
cm0uaW5wdXRQb3NpdGlvbiA9IGN1cnJlbnRJbnB1dFBvc2l0aW9uOwogICAgICAgICAgICAgICAg
IH0gZWxzZSBpZiAodGVybS5wYXJlbnRoZXNlcy5pc1Rlcm1pbmFsKSB7CkBAIC04ODEsNyArODgx
LDcgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7CiAgICAgICAgICAgICAgICAgYWx0
ZXJuYXRpdmUtPm1faGFzRml4ZWRTaXplID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAKLSAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGVQYXJlbnRoZXRpY2FsQXNzZXJ0
aW9uOgorICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6UGFyZW50aGV0aWNhbEFz
c2VydGlvbjoKICAgICAgICAgICAgICAgICB0ZXJtLmlucHV0UG9zaXRpb24gPSBjdXJyZW50SW5w
dXRQb3NpdGlvbjsKICAgICAgICAgICAgICAgICB0ZXJtLmZyYW1lTG9jYXRpb24gPSBjdXJyZW50
Q2FsbEZyYW1lU2l6ZTsKICAgICAgICAgICAgICAgICBlcnJvciA9IHNldHVwRGlzanVuY3Rpb25P
ZmZzZXRzKHRlcm0ucGFyZW50aGVzZXMuZGlzanVuY3Rpb24sIGN1cnJlbnRDYWxsRnJhbWVTaXpl
ICsgWWFyclN0YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZvUGFyZW50aGV0aWNhbEFzc2VydGlvbiwg
Y3VycmVudElucHV0UG9zaXRpb24sIGN1cnJlbnRDYWxsRnJhbWVTaXplKTsKQEAgLTg4OSw3ICs4
ODksNyBAQCBjbGFzcyBZYXJyUGF0dGVybkNvbnN0cnVjdG9yIHsKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGVycm9yOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICBj
YXNlIFBhdHRlcm5UZXJtOjpUeXBlRG90U3RhckVuY2xvc3VyZToKKyAgICAgICAgICAgIGNhc2Ug
UGF0dGVyblRlcm06OlR5cGU6OkRvdFN0YXJFbmNsb3N1cmU6CiAgICAgICAgICAgICAgICAgQVNT
RVJUKCFtX3BhdHRlcm4ubV9zYXZlSW5pdGlhbFN0YXJ0VmFsdWUpOwogICAgICAgICAgICAgICAg
IGFsdGVybmF0aXZlLT5tX2hhc0ZpeGVkU2l6ZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgIHRl
cm0uaW5wdXRQb3NpdGlvbiA9IGluaXRpYWxJbnB1dFBvc2l0aW9uOwpAQCAtOTY4LDggKzk2OCw4
IEBAIGNsYXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAgICAgICAgICAgVmVjdG9yPFBh
dHRlcm5UZXJtPiYgdGVybXMgPSBhbHRlcm5hdGl2ZXNbaV0tPm1fdGVybXM7CiAgICAgICAgICAg
ICBpZiAodGVybXMuc2l6ZSgpKSB7CiAgICAgICAgICAgICAgICAgUGF0dGVyblRlcm0mIHRlcm0g
PSB0ZXJtcy5sYXN0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKHRlcm0udHlwZSA9PSBQYXR0ZXJu
VGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVybgotICAgICAgICAgICAgICAgICAgICAmJiB0
ZXJtLnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyR3JlZWR5CisgICAgICAgICAgICAgICAgaWYg
KHRlcm0udHlwZSA9PSBQYXR0ZXJuVGVybTo6VHlwZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuCisg
ICAgICAgICAgICAgICAgICAgICYmIHRlcm0ucXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJUeXBl
OjpHcmVlZHkKICAgICAgICAgICAgICAgICAgICAgJiYgdGVybS5xdWFudGl0eU1pbkNvdW50ID09
IDAKICAgICAgICAgICAgICAgICAgICAgJiYgdGVybS5xdWFudGl0eU1heENvdW50ID09IHF1YW50
aWZ5SW5maW5pdGUKICAgICAgICAgICAgICAgICAgICAgJiYgIXRlcm0uY2FwdHVyZSgpKQpAQCAt
MTAxNiw3ICsxMDE2LDcgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7CiAgICAgICAg
ICAgICBpZiAodGVybS5tX2NhcHR1cmUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAK
LSAgICAgICAgICAgIGlmICh0ZXJtLnR5cGUgPT0gUGF0dGVyblRlcm06OlR5cGVQYXJlbnRoZXNl
c1N1YnBhdHRlcm4pIHsKKyAgICAgICAgICAgIGlmICh0ZXJtLnR5cGUgPT0gUGF0dGVyblRlcm06
OlR5cGU6OlBhcmVudGhlc2VzU3VicGF0dGVybikgewogICAgICAgICAgICAgICAgIFBhdHRlcm5E
aXNqdW5jdGlvbiogbmVzdGVkRGlzanVuY3Rpb24gPSB0ZXJtLnBhcmVudGhlc2VzLmRpc2p1bmN0
aW9uOwogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgYWx0ID0gMDsgYWx0IDwgbmVzdGVk
RGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzLnNpemUoKTsgKythbHQpIHsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKGNvbnRhaW5zQ2FwdHVyaW5nVGVybXMobmVzdGVkRGlzanVuY3Rpb24tPm1f
YWx0ZXJuYXRpdmVzW2FsdF0uZ2V0KCksIDAsIG5lc3RlZERpc2p1bmN0aW9uLT5tX2FsdGVybmF0
aXZlc1thbHRdLT5tX3Rlcm1zLnNpemUoKSkpCkBAIC0xMDQ4LDEzICsxMDQ4LDEzIEBAIGNsYXNz
IFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAgICAgICAgICAgc2l6ZV90IHRlcm1JbmRleCwg
Zmlyc3RFeHByZXNzaW9uVGVybTsKIAogICAgICAgICAgICAgdGVybUluZGV4ID0gMDsKLSAgICAg
ICAgICAgIGlmICh0ZXJtc1t0ZXJtSW5kZXhdLnR5cGUgPT0gUGF0dGVyblRlcm06OlR5cGVBc3Nl
cnRpb25CT0wpIHsKKyAgICAgICAgICAgIGlmICh0ZXJtc1t0ZXJtSW5kZXhdLnR5cGUgPT0gUGF0
dGVyblRlcm06OlR5cGU6OkFzc2VydGlvbkJPTCkgewogICAgICAgICAgICAgICAgIHN0YXJ0c1dp
dGhCT0wgPSB0cnVlOwogICAgICAgICAgICAgICAgICsrdGVybUluZGV4OwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgCiAgICAgICAgICAgICBQYXR0ZXJuVGVybSYgZmlyc3ROb25BbmNob3JU
ZXJtID0gdGVybXNbdGVybUluZGV4XTsKLSAgICAgICAgICAgIGlmIChmaXJzdE5vbkFuY2hvclRl
cm0udHlwZSAhPSBQYXR0ZXJuVGVybTo6VHlwZUNoYXJhY3RlckNsYXNzCisgICAgICAgICAgICBp
ZiAoZmlyc3ROb25BbmNob3JUZXJtLnR5cGUgIT0gUGF0dGVyblRlcm06OlR5cGU6OkNoYXJhY3Rl
ckNsYXNzCiAgICAgICAgICAgICAgICAgfHwgZmlyc3ROb25BbmNob3JUZXJtLmNoYXJhY3RlckNs
YXNzICE9IGRvdENoYXJhY3RlckNsYXNzCiAgICAgICAgICAgICAgICAgfHwgZmlyc3ROb25BbmNo
b3JUZXJtLnF1YW50aXR5TWluQ291bnQKICAgICAgICAgICAgICAgICB8fCBmaXJzdE5vbkFuY2hv
clRlcm0ucXVhbnRpdHlNYXhDb3VudCAhPSBxdWFudGlmeUluZmluaXRlKQpAQCAtMTA2MywxNSAr
MTA2MywxNSBAQCBjbGFzcyBZYXJyUGF0dGVybkNvbnN0cnVjdG9yIHsKICAgICAgICAgICAgIGZp
cnN0RXhwcmVzc2lvblRlcm0gPSB0ZXJtSW5kZXggKyAxOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICB0ZXJtSW5kZXggPSB0ZXJtcy5zaXplKCkgLSAxOwotICAgICAgICAgICAgaWYgKHRlcm1z
W3Rlcm1JbmRleF0udHlwZSA9PSBQYXR0ZXJuVGVybTo6VHlwZUFzc2VydGlvbkVPTCkgeworICAg
ICAgICAgICAgaWYgKHRlcm1zW3Rlcm1JbmRleF0udHlwZSA9PSBQYXR0ZXJuVGVybTo6VHlwZTo6
QXNzZXJ0aW9uRU9MKSB7CiAgICAgICAgICAgICAgICAgZW5kc1dpdGhFT0wgPSB0cnVlOwogICAg
ICAgICAgICAgICAgIC0tdGVybUluZGV4OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBQYXR0ZXJuVGVybSYgbGFzdE5vbkFuY2hvclRlcm0gPSB0ZXJtc1t0ZXJtSW5k
ZXhdOwotICAgICAgICAgICAgaWYgKGxhc3ROb25BbmNob3JUZXJtLnR5cGUgIT0gUGF0dGVyblRl
cm06OlR5cGVDaGFyYWN0ZXJDbGFzcworICAgICAgICAgICAgaWYgKGxhc3ROb25BbmNob3JUZXJt
LnR5cGUgIT0gUGF0dGVyblRlcm06OlR5cGU6OkNoYXJhY3RlckNsYXNzCiAgICAgICAgICAgICAg
ICAgfHwgbGFzdE5vbkFuY2hvclRlcm0uY2hhcmFjdGVyQ2xhc3MgIT0gZG90Q2hhcmFjdGVyQ2xh
c3MKLSAgICAgICAgICAgICAgICB8fCBsYXN0Tm9uQW5jaG9yVGVybS5xdWFudGl0eVR5cGUgIT0g
UXVhbnRpZmllckdyZWVkeQorICAgICAgICAgICAgICAgIHx8IGxhc3ROb25BbmNob3JUZXJtLnF1
YW50aXR5VHlwZSAhPSBRdWFudGlmaWVyVHlwZTo6R3JlZWR5CiAgICAgICAgICAgICAgICAgfHwg
bGFzdE5vbkFuY2hvclRlcm0ucXVhbnRpdHlNaW5Db3VudAogICAgICAgICAgICAgICAgIHx8IGxh
c3ROb25BbmNob3JUZXJtLnF1YW50aXR5TWF4Q291bnQgIT0gcXVhbnRpZnlJbmZpbml0ZSkKICAg
ICAgICAgICAgICAgICByZXR1cm47CkBAIC0xMjU2LDcgKzEyNTYsNyBAQCB2b2lkIFBhdHRlcm5B
bHRlcm5hdGl2ZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBZYXJyUGF0dGVybiogdGhpc1BhdHRl
cm4sIHVuc2lnbgogCiB2b2lkIFBhdHRlcm5UZXJtOjpkdW1wUXVhbnRpZmllcihQcmludFN0cmVh
bSYgb3V0KQogewotICAgIGlmIChxdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllckZpeGVkQ291bnQg
JiYgcXVhbnRpdHlNaW5Db3VudCA9PSAxICYmIHF1YW50aXR5TWF4Q291bnQgPT0gMSkKKyAgICBp
ZiAocXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJUeXBlOjpGaXhlZENvdW50ICYmIHF1YW50aXR5
TWluQ291bnQgPT0gMSAmJiBxdWFudGl0eU1heENvdW50ID09IDEpCiAgICAgICAgIHJldHVybjsK
ICAgICBvdXQucHJpbnQoIiB7IiwgcXVhbnRpdHlNaW5Db3VudC52YWx1ZSgpKTsKICAgICBpZiAo
cXVhbnRpdHlNaW5Db3VudCAhPSBxdWFudGl0eU1heENvdW50KSB7CkBAIC0xMjY2LDkgKzEyNjYs
OSBAQCB2b2lkIFBhdHRlcm5UZXJtOjpkdW1wUXVhbnRpZmllcihQcmludFN0cmVhbSYgb3V0KQog
ICAgICAgICAgICAgb3V0LnByaW50KCIsIiwgcXVhbnRpdHlNYXhDb3VudC52YWx1ZSgpKTsKICAg
ICB9CiAgICAgb3V0LnByaW50KCJ9Iik7Ci0gICAgaWYgKHF1YW50aXR5VHlwZSA9PSBRdWFudGlm
aWVyR3JlZWR5KQorICAgIGlmIChxdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllclR5cGU6OkdyZWVk
eSkKICAgICAgICAgb3V0LnByaW50KCIgZ3JlZWR5Iik7Ci0gICAgZWxzZSBpZiAocXVhbnRpdHlU
eXBlID09IFF1YW50aWZpZXJOb25HcmVlZHkpCisgICAgZWxzZSBpZiAocXVhbnRpdHlUeXBlID09
IFF1YW50aWZpZXJUeXBlOjpOb25HcmVlZHkpCiAgICAgICAgIG91dC5wcmludCgiIG5vbi1ncmVl
ZHkiKTsKIH0KIApAQCAtMTI3NiwyMiArMTI3NiwyMiBAQCB2b2lkIFBhdHRlcm5UZXJtOjpkdW1w
KFByaW50U3RyZWFtJiBvdXQsIFlhcnJQYXR0ZXJuKiB0aGlzUGF0dGVybiwgdW5zaWduZWQgbmVz
dAogewogICAgIGluZGVudEZvck5lc3RpbmdMZXZlbChvdXQsIG5lc3RpbmdEZXB0aCk7CiAKLSAg
ICBpZiAodHlwZSAhPSBUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuICYmIHR5cGUgIT0gVHlwZVBh
cmVudGhldGljYWxBc3NlcnRpb24pIHsKKyAgICBpZiAodHlwZSAhPSBUeXBlOjpQYXJlbnRoZXNl
c1N1YnBhdHRlcm4gJiYgdHlwZSAhPSBUeXBlOjpQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uKSB7CiAg
ICAgICAgIGlmIChpbnZlcnQoKSkKICAgICAgICAgICAgIG91dC5wcmludCgibm90ICIpOwogICAg
IH0KIAogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgVHlwZUFzc2VydGlvbkJPTDoKKyAg
ICBjYXNlIFR5cGU6OkFzc2VydGlvbkJPTDoKICAgICAgICAgb3V0LnByaW50bG4oIkJPTCIpOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFR5cGVBc3NlcnRpb25FT0w6CisgICAgY2FzZSBUeXBl
OjpBc3NlcnRpb25FT0w6CiAgICAgICAgIG91dC5wcmludGxuKCJFT0wiKTsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBUeXBlQXNzZXJ0aW9uV29yZEJvdW5kYXJ5OgorICAgIGNhc2UgVHlwZTo6
QXNzZXJ0aW9uV29yZEJvdW5kYXJ5OgogICAgICAgICBvdXQucHJpbnRsbigid29yZCBib3VuZGFy
eSIpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFR5cGVQYXR0ZXJuQ2hhcmFjdGVyOgorICAg
IGNhc2UgVHlwZTo6UGF0dGVybkNoYXJhY3RlcjoKICAgICAgICAgb3V0LnByaW50ZigiY2hhcmFj
dGVyICIpOwogICAgICAgICBvdXQucHJpbnRmKCJpbnB1dFBvc2l0aW9uICV1ICIsIGlucHV0UG9z
aXRpb24pOwogICAgICAgICBpZiAodGhpc1BhdHRlcm4tPmlnbm9yZUNhc2UoKSAmJiBpc0FTQ0lJ
QWxwaGEocGF0dGVybkNoYXJhY3RlcikpIHsKQEAgLTEzMDEsNDAgKzEzMDEsNDAgQEAgdm9pZCBQ
YXR0ZXJuVGVybTo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBZYXJyUGF0dGVybiogdGhpc1BhdHRl
cm4sIHVuc2lnbmVkIG5lc3QKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBkdW1wVUNoYXIz
MihvdXQsIHBhdHRlcm5DaGFyYWN0ZXIpOwogICAgICAgICBkdW1wUXVhbnRpZmllcihvdXQpOwot
ICAgICAgICBpZiAocXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJGaXhlZENvdW50KQorICAgICAg
ICBpZiAocXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJUeXBlOjpGaXhlZENvdW50KQogICAgICAg
ICAgICAgb3V0LnByaW50KCIsZnJhbWUgbG9jYXRpb24gIiwgZnJhbWVMb2NhdGlvbik7CiAgICAg
ICAgIG91dC5wcmludGxuKCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVHlwZUNoYXJhY3Rl
ckNsYXNzOgorICAgIGNhc2UgVHlwZTo6Q2hhcmFjdGVyQ2xhc3M6CiAgICAgICAgIG91dC5wcmlu
dCgiY2hhcmFjdGVyIGNsYXNzICIpOwogICAgICAgICBvdXQucHJpbnRmKCJpbnB1dFBvc2l0aW9u
ICV1ICIsIGlucHV0UG9zaXRpb24pOwogICAgICAgICBkdW1wQ2hhcmFjdGVyQ2xhc3Mob3V0LCB0
aGlzUGF0dGVybiwgY2hhcmFjdGVyQ2xhc3MpOwogICAgICAgICBkdW1wUXVhbnRpZmllcihvdXQp
OwotICAgICAgICBpZiAocXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJGaXhlZENvdW50IHx8IHRo
aXNQYXR0ZXJuLT51bmljb2RlKCkpCisgICAgICAgIGlmIChxdWFudGl0eVR5cGUgIT0gUXVhbnRp
ZmllclR5cGU6OkZpeGVkQ291bnQgfHwgdGhpc1BhdHRlcm4tPnVuaWNvZGUoKSkKICAgICAgICAg
ICAgIG91dC5wcmludCgiLGZyYW1lIGxvY2F0aW9uICIsIGZyYW1lTG9jYXRpb24pOwogICAgICAg
ICBvdXQucHJpbnRsbigpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFR5cGVCYWNrUmVmZXJl
bmNlOgorICAgIGNhc2UgVHlwZTo6QmFja1JlZmVyZW5jZToKICAgICAgICAgb3V0LnByaW50KCJi
YWNrIHJlZmVyZW5jZSB0byBzdWJwYXR0ZXJuICMiLCBiYWNrUmVmZXJlbmNlU3VicGF0dGVybklk
KTsKICAgICAgICAgb3V0LnByaW50bG4oIixmcmFtZSBsb2NhdGlvbiAiLCBmcmFtZUxvY2F0aW9u
KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUeXBlRm9yd2FyZFJlZmVyZW5jZToKKyAgICBj
YXNlIFR5cGU6OkZvcndhcmRSZWZlcmVuY2U6CiAgICAgICAgIG91dC5wcmludGxuKCJmb3J3YXJk
IHJlZmVyZW5jZSIpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFR5cGVQYXJlbnRoZXNlc1N1
YnBhdHRlcm46CisgICAgY2FzZSBUeXBlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm46CiAgICAgICAg
IGlmIChtX2NhcHR1cmUpCiAgICAgICAgICAgICBvdXQucHJpbnQoImNhcHR1cmVkICIpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBvdXQucHJpbnQoIm5vbi1jYXB0dXJlZCAiKTsKIAogICAg
ICAgICBGQUxMVEhST1VHSDsKLSAgICBjYXNlIFR5cGVQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uOgor
ICAgIGNhc2UgVHlwZTo6UGFyZW50aGV0aWNhbEFzc2VydGlvbjoKICAgICAgICAgaWYgKG1faW52
ZXJ0KQogICAgICAgICAgICAgb3V0LnByaW50KCJpbnZlcnRlZCAiKTsKIAotICAgICAgICBpZiAo
dHlwZSA9PSBUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuKQorICAgICAgICBpZiAodHlwZSA9PSBU
eXBlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm4pCiAgICAgICAgICAgICBvdXQucHJpbnQoInN1YnBh
dHRlcm4iKTsKLSAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBUeXBlUGFyZW50aGV0aWNhbEFzc2Vy
dGlvbikKKyAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBUeXBlOjpQYXJlbnRoZXRpY2FsQXNzZXJ0
aW9uKQogICAgICAgICAgICAgb3V0LnByaW50KCJhc3NlcnRpb24iKTsKIAogICAgICAgICBpZiAo
bV9jYXB0dXJlKQpAQCAtMTM2NCw3ICsxMzY0LDcgQEAgdm9pZCBQYXR0ZXJuVGVybTo6ZHVtcChQ
cmludFN0cmVhbSYgb3V0LCBZYXJyUGF0dGVybiogdGhpc1BhdHRlcm4sIHVuc2lnbmVkIG5lc3QK
IAogICAgICAgICBwYXJlbnRoZXNlcy5kaXNqdW5jdGlvbi0+ZHVtcChvdXQsIHRoaXNQYXR0ZXJu
LCBuZXN0aW5nRGVwdGggKyAxKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUeXBlRG90U3Rh
ckVuY2xvc3VyZToKKyAgICBjYXNlIFR5cGU6OkRvdFN0YXJFbmNsb3N1cmU6CiAgICAgICAgIG91
dC5wcmludGxuKCIuKiBlbmNsb3N1cmUsZnJhbWUgbG9jYXRpb24gIiwgdGhpc1BhdHRlcm4tPm1f
aW5pdGlhbFN0YXJ0VmFsdWVGcmFtZUxvY2F0aW9uKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgKaW5kZXggMThjYWVhOTgyNTE3
YjMzZWViNjg5NTE4ZmRiZTcxNDZlYWRiYjdmMi4uOWZiNmU2MWFiMWU2NzMxZDM5ZTU2NDFkODQy
MDcxMGFlN2Q3ZDAyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
clBhdHRlcm4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5o
CkBAIC0xMjIsMjUgKzEyMiwyNiBAQCBzdHJ1Y3QgQ2hhcmFjdGVyQ2xhc3MgewogICAgIGJvb2wg
bV9hbnlDaGFyYWN0ZXIgOiAxOwogfTsKIAotZW51bSBRdWFudGlmaWVyVHlwZSA6IHVpbnQ4X3Qg
ewotICAgIFF1YW50aWZpZXJGaXhlZENvdW50LAotICAgIFF1YW50aWZpZXJHcmVlZHksCi0gICAg
UXVhbnRpZmllck5vbkdyZWVkeSwKK2VudW0gY2xhc3MgUXVhbnRpZmllclR5cGUgOiB1aW50OF90
IHsKKyAgICBGaXhlZENvdW50LAorICAgIEdyZWVkeSwKKyAgICBOb25HcmVlZHksCiB9OwogCiBz
dHJ1Y3QgUGF0dGVyblRlcm0gewotICAgIGVudW0gVHlwZSA6IHVpbnQ4X3QgewotICAgICAgICBU
eXBlQXNzZXJ0aW9uQk9MLAotICAgICAgICBUeXBlQXNzZXJ0aW9uRU9MLAotICAgICAgICBUeXBl
QXNzZXJ0aW9uV29yZEJvdW5kYXJ5LAotICAgICAgICBUeXBlUGF0dGVybkNoYXJhY3RlciwKLSAg
ICAgICAgVHlwZUNoYXJhY3RlckNsYXNzLAotICAgICAgICBUeXBlQmFja1JlZmVyZW5jZSwKLSAg
ICAgICAgVHlwZUZvcndhcmRSZWZlcmVuY2UsCi0gICAgICAgIFR5cGVQYXJlbnRoZXNlc1N1YnBh
dHRlcm4sCi0gICAgICAgIFR5cGVQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uLAotICAgICAgICBUeXBl
RG90U3RhckVuY2xvc3VyZSwKLSAgICB9IHR5cGU7CisgICAgZW51bSBjbGFzcyBUeXBlIDogdWlu
dDhfdCB7CisgICAgICAgIEFzc2VydGlvbkJPTCwKKyAgICAgICAgQXNzZXJ0aW9uRU9MLAorICAg
ICAgICBBc3NlcnRpb25Xb3JkQm91bmRhcnksCisgICAgICAgIFBhdHRlcm5DaGFyYWN0ZXIsCisg
ICAgICAgIENoYXJhY3RlckNsYXNzLAorICAgICAgICBCYWNrUmVmZXJlbmNlLAorICAgICAgICBG
b3J3YXJkUmVmZXJlbmNlLAorICAgICAgICBQYXJlbnRoZXNlc1N1YnBhdHRlcm4sCisgICAgICAg
IFBhcmVudGhldGljYWxBc3NlcnRpb24sCisgICAgICAgIERvdFN0YXJFbmNsb3N1cmUsCisgICAg
fTsKKyAgICBUeXBlIHR5cGU7CiAgICAgYm9vbCBtX2NhcHR1cmUgOjE7CiAgICAgYm9vbCBtX2lu
dmVydCA6MTsKICAgICBRdWFudGlmaWVyVHlwZSBxdWFudGl0eVR5cGU7CkBAIC0xNjYsMjIgKzE2
NywyMiBAQCBzdHJ1Y3QgUGF0dGVyblRlcm0gewogICAgIHVuc2lnbmVkIGZyYW1lTG9jYXRpb247
CiAKICAgICBQYXR0ZXJuVGVybShVQ2hhcjMyIGNoKQotICAgICAgICA6IHR5cGUoUGF0dGVyblRl
cm06OlR5cGVQYXR0ZXJuQ2hhcmFjdGVyKQorICAgICAgICA6IHR5cGUoUGF0dGVyblRlcm06OlR5
cGU6OlBhdHRlcm5DaGFyYWN0ZXIpCiAgICAgICAgICwgbV9jYXB0dXJlKGZhbHNlKQogICAgICAg
ICAsIG1faW52ZXJ0KGZhbHNlKQogICAgIHsKICAgICAgICAgcGF0dGVybkNoYXJhY3RlciA9IGNo
OwotICAgICAgICBxdWFudGl0eVR5cGUgPSBRdWFudGlmaWVyRml4ZWRDb3VudDsKKyAgICAgICAg
cXVhbnRpdHlUeXBlID0gUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQ7CiAgICAgICAgIHF1YW50
aXR5TWluQ291bnQgPSBxdWFudGl0eU1heENvdW50ID0gMTsKICAgICB9CiAKICAgICBQYXR0ZXJu
VGVybShDaGFyYWN0ZXJDbGFzcyogY2hhckNsYXNzLCBib29sIGludmVydCkKLSAgICAgICAgOiB0
eXBlKFBhdHRlcm5UZXJtOjpUeXBlQ2hhcmFjdGVyQ2xhc3MpCisgICAgICAgIDogdHlwZShQYXR0
ZXJuVGVybTo6VHlwZTo6Q2hhcmFjdGVyQ2xhc3MpCiAgICAgICAgICwgbV9jYXB0dXJlKGZhbHNl
KQogICAgICAgICAsIG1faW52ZXJ0KGludmVydCkKICAgICB7CiAgICAgICAgIGNoYXJhY3RlckNs
YXNzID0gY2hhckNsYXNzOwotICAgICAgICBxdWFudGl0eVR5cGUgPSBRdWFudGlmaWVyRml4ZWRD
b3VudDsKKyAgICAgICAgcXVhbnRpdHlUeXBlID0gUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQ7
CiAgICAgICAgIHF1YW50aXR5TWluQ291bnQgPSBxdWFudGl0eU1heENvdW50ID0gMTsKICAgICB9
CiAKQEAgLTE5NCw3ICsxOTUsNyBAQCBzdHJ1Y3QgUGF0dGVyblRlcm0gewogICAgICAgICBwYXJl
bnRoZXNlcy5zdWJwYXR0ZXJuSWQgPSBzdWJwYXR0ZXJuSWQ7CiAgICAgICAgIHBhcmVudGhlc2Vz
LmlzQ29weSA9IGZhbHNlOwogICAgICAgICBwYXJlbnRoZXNlcy5pc1Rlcm1pbmFsID0gZmFsc2U7
Ci0gICAgICAgIHF1YW50aXR5VHlwZSA9IFF1YW50aWZpZXJGaXhlZENvdW50OworICAgICAgICBx
dWFudGl0eVR5cGUgPSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudDsKICAgICAgICAgcXVhbnRp
dHlNaW5Db3VudCA9IHF1YW50aXR5TWF4Q291bnQgPSAxOwogICAgIH0KICAgICAKQEAgLTIwMyw0
OSArMjA0LDQ5IEBAIHN0cnVjdCBQYXR0ZXJuVGVybSB7CiAgICAgICAgICwgbV9jYXB0dXJlKGZh
bHNlKQogICAgICAgICAsIG1faW52ZXJ0KGludmVydCkKICAgICB7Ci0gICAgICAgIHF1YW50aXR5
VHlwZSA9IFF1YW50aWZpZXJGaXhlZENvdW50OworICAgICAgICBxdWFudGl0eVR5cGUgPSBRdWFu
dGlmaWVyVHlwZTo6Rml4ZWRDb3VudDsKICAgICAgICAgcXVhbnRpdHlNaW5Db3VudCA9IHF1YW50
aXR5TWF4Q291bnQgPSAxOwogICAgIH0KIAogICAgIFBhdHRlcm5UZXJtKHVuc2lnbmVkIHNwYXR0
ZXJuSWQpCi0gICAgICAgIDogdHlwZShUeXBlQmFja1JlZmVyZW5jZSkKKyAgICAgICAgOiB0eXBl
KFR5cGU6OkJhY2tSZWZlcmVuY2UpCiAgICAgICAgICwgbV9jYXB0dXJlKGZhbHNlKQogICAgICAg
ICAsIG1faW52ZXJ0KGZhbHNlKQogICAgIHsKICAgICAgICAgYmFja1JlZmVyZW5jZVN1YnBhdHRl
cm5JZCA9IHNwYXR0ZXJuSWQ7Ci0gICAgICAgIHF1YW50aXR5VHlwZSA9IFF1YW50aWZpZXJGaXhl
ZENvdW50OworICAgICAgICBxdWFudGl0eVR5cGUgPSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3Vu
dDsKICAgICAgICAgcXVhbnRpdHlNaW5Db3VudCA9IHF1YW50aXR5TWF4Q291bnQgPSAxOwogICAg
IH0KIAogICAgIFBhdHRlcm5UZXJtKGJvb2wgYm9sQW5jaG9yLCBib29sIGVvbEFuY2hvcikKLSAg
ICAgICAgOiB0eXBlKFR5cGVEb3RTdGFyRW5jbG9zdXJlKQorICAgICAgICA6IHR5cGUoVHlwZTo6
RG90U3RhckVuY2xvc3VyZSkKICAgICAgICAgLCBtX2NhcHR1cmUoZmFsc2UpCiAgICAgICAgICwg
bV9pbnZlcnQoZmFsc2UpCiAgICAgewogICAgICAgICBhbmNob3JzLmJvbEFuY2hvciA9IGJvbEFu
Y2hvcjsKICAgICAgICAgYW5jaG9ycy5lb2xBbmNob3IgPSBlb2xBbmNob3I7Ci0gICAgICAgIHF1
YW50aXR5VHlwZSA9IFF1YW50aWZpZXJGaXhlZENvdW50OworICAgICAgICBxdWFudGl0eVR5cGUg
PSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudDsKICAgICAgICAgcXVhbnRpdHlNaW5Db3VudCA9
IHF1YW50aXR5TWF4Q291bnQgPSAxOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgUGF0dGVyblRl
cm0gRm9yd2FyZFJlZmVyZW5jZSgpCiAgICAgewotICAgICAgICByZXR1cm4gUGF0dGVyblRlcm0o
VHlwZUZvcndhcmRSZWZlcmVuY2UpOworICAgICAgICByZXR1cm4gUGF0dGVyblRlcm0oVHlwZTo6
Rm9yd2FyZFJlZmVyZW5jZSk7CiAgICAgfQogCiAgICAgc3RhdGljIFBhdHRlcm5UZXJtIEJPTCgp
CiAgICAgewotICAgICAgICByZXR1cm4gUGF0dGVyblRlcm0oVHlwZUFzc2VydGlvbkJPTCk7Cisg
ICAgICAgIHJldHVybiBQYXR0ZXJuVGVybShUeXBlOjpBc3NlcnRpb25CT0wpOwogICAgIH0KIAog
ICAgIHN0YXRpYyBQYXR0ZXJuVGVybSBFT0woKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFBhdHRl
cm5UZXJtKFR5cGVBc3NlcnRpb25FT0wpOworICAgICAgICByZXR1cm4gUGF0dGVyblRlcm0oVHlw
ZTo6QXNzZXJ0aW9uRU9MKTsKICAgICB9CiAKICAgICBzdGF0aWMgUGF0dGVyblRlcm0gV29yZEJv
dW5kYXJ5KGJvb2wgaW52ZXJ0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIFBhdHRlcm5UZXJtKFR5
cGVBc3NlcnRpb25Xb3JkQm91bmRhcnksIGludmVydCk7CisgICAgICAgIHJldHVybiBQYXR0ZXJu
VGVybShUeXBlOjpBc3NlcnRpb25Xb3JkQm91bmRhcnksIGludmVydCk7CiAgICAgfQogICAgIAog
ICAgIGJvb2wgaW52ZXJ0KCkgY29uc3QKQEAgLTI2MCwxMiArMjYxLDEyIEBAIHN0cnVjdCBQYXR0
ZXJuVGVybSB7CiAKICAgICBib29sIGlzRml4ZWRXaWR0aENoYXJhY3RlckNsYXNzKCkgY29uc3QK
ICAgICB7Ci0gICAgICAgIHJldHVybiB0eXBlID09IFR5cGVDaGFyYWN0ZXJDbGFzcyAmJiBjaGFy
YWN0ZXJDbGFzcy0+aGFzT25lQ2hhcmFjdGVyU2l6ZSgpICYmICFpbnZlcnQoKTsKKyAgICAgICAg
cmV0dXJuIHR5cGUgPT0gVHlwZTo6Q2hhcmFjdGVyQ2xhc3MgJiYgY2hhcmFjdGVyQ2xhc3MtPmhh
c09uZUNoYXJhY3RlclNpemUoKSAmJiAhaW52ZXJ0KCk7CiAgICAgfQogCiAgICAgYm9vbCBjb250
YWluc0FueUNhcHR1cmVzKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVCh0aGlzLT50eXBlID09IFR5
cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm4pOworICAgICAgICBBU1NFUlQodGhpcy0+dHlwZSA9PSBU
eXBlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm4pOwogICAgICAgICByZXR1cm4gcGFyZW50aGVzZXMu
bGFzdFN1YnBhdHRlcm5JZCA+PSBwYXJlbnRoZXNlcy5zdWJwYXR0ZXJuSWQ7CiAgICAgfQogCkBA
IC0yNzksNyArMjgwLDcgQEAgc3RydWN0IFBhdHRlcm5UZXJtIHsKICAgICB2b2lkIHF1YW50aWZ5
KHVuc2lnbmVkIG1pbkNvdW50LCB1bnNpZ25lZCBtYXhDb3VudCwgUXVhbnRpZmllclR5cGUgdHlw
ZSkKICAgICB7CiAgICAgICAgIC8vIEN1cnJlbnRseSBvbmx5IFBhcmVudGhlc2VzIGNhbiBzcGVj
aWZ5IGEgbm9uLXplcm8gbWluIHdpdGggYSBkaWZmZXJlbnQgbWF4LgotICAgICAgICBBU1NFUlQo
dGhpcy0+dHlwZSA9PSBUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuIHx8ICFtaW5Db3VudCB8fCBt
aW5Db3VudCA9PSBtYXhDb3VudCk7CisgICAgICAgIEFTU0VSVCh0aGlzLT50eXBlID09IFR5cGU6
OlBhcmVudGhlc2VzU3VicGF0dGVybiB8fCAhbWluQ291bnQgfHwgbWluQ291bnQgPT0gbWF4Q291
bnQpOwogICAgICAgICBBU1NFUlQobWluQ291bnQgPD0gbWF4Q291bnQpOwogICAgICAgICBxdWFu
dGl0eU1pbkNvdW50ID0gbWluQ291bnQ7CiAgICAgICAgIHF1YW50aXR5TWF4Q291bnQgPSBtYXhD
b3VudDsK
</data>
<flag name="commit-queue"
          id="456572"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434163</attachid>
            <date>2021-07-24 03:08:42 -0700</date>
            <delta_ts>2021-07-24 13:11:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228264-20210724030841.patch</filename>
            <type>text/plain</type>
            <size>226638</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMjgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
YThhYzExYTFiYWQ5NmNkMDJmMTdmZGFlYzUwYjMxMGU3ZGUwYzQ2Li5mYjUwYzMyOGZlNTY4NTU1
NTU1NDk0MTBjNTdkNDRjNmM2NGJmZDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDggQEAKKzIwMjEtMDctMjQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBDaGFuZ2UgbW9zdCBvZiBlbnVtIGluIFlhcnIgdG8gZW51bS1j
bGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4
MjY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBzaW1wbHkgY2hhbmdlcyBtb3N0IG9mIGVudW0gdG8gZW51bS1jbGFzcyBpbiBZYXJy
LgorICAgICAgICBXZSBhbHNvIHJlbW92ZSBZYXJySklUIFlhcnJHZW5lcmF0b3IncyB0ZW1wbGF0
ZSBwYXJhbWV0ZXIgc2luY2UKKyAgICAgICAgaXQgaXMgbm90IHdvcnRoIGRvdWJsaW5nIGNvZGUu
IFdlIGNhbiBqdXN0IGhvbGQgWWFycjo6SklUQ29tcGlsZU1vZGUgYXMgbV9jb21waWxlTW9kZS4K
KworICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpj
b21waWxlKToKKyAgICAgICAgKEpTQzo6UmVnRXhwOjptYXRjaENvbmN1cnJlbnRseSk6CisgICAg
ICAgIChKU0M6OlJlZ0V4cDo6Y29tcGlsZU1hdGNoT25seSk6CisgICAgICAgICogcnVudGltZS9S
ZWdFeHAuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cElubGluZXMuaDoKKyAgICAgICAgKEpT
Qzo6UmVnRXhwOjpoYXNDb2RlRm9yKToKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpjb21waWxlSWZO
ZWNlc3NhcnkpOgorICAgICAgICAoSlNDOjpSZWdFeHA6Om1hdGNoSW5saW5lKToKKyAgICAgICAg
KEpTQzo6UmVnRXhwOjpoYXNNYXRjaE9ubHlDb2RlRm9yKToKKyAgICAgICAgKEpTQzo6UmVnRXhw
Ojpjb21waWxlSWZOZWNlc3NhcnlNYXRjaE9ubHkpOgorICAgICAgICAqIHlhcnIvWWFyci5oOgor
ICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiB5YXJyL1lhcnJJbnRlcnByZXRlci5jcHA6
CisgICAgICAgIChKU0M6OllhcnI6OkludGVycHJldGVyOjpiYWNrdHJhY2tQYXR0ZXJuQ2hhcmFj
dGVyKToKKyAgICAgICAgKEpTQzo6WWFycjo6SW50ZXJwcmV0ZXI6OmJhY2t0cmFja1BhdHRlcm5D
YXNlZENoYXJhY3Rlcik6CisgICAgICAgIChKU0M6OllhcnI6OkludGVycHJldGVyOjptYXRjaENo
YXJhY3RlckNsYXNzKToKKyAgICAgICAgKEpTQzo6WWFycjo6SW50ZXJwcmV0ZXI6OmJhY2t0cmFj
a0NoYXJhY3RlckNsYXNzKToKKyAgICAgICAgKEpTQzo6WWFycjo6SW50ZXJwcmV0ZXI6Om1hdGNo
QmFja1JlZmVyZW5jZSk6CisgICAgICAgIChKU0M6OllhcnI6OkludGVycHJldGVyOjpiYWNrdHJh
Y2tCYWNrUmVmZXJlbmNlKToKKyAgICAgICAgKEpTQzo6WWFycjo6SW50ZXJwcmV0ZXI6OnBhcmVu
dGhlc2VzRG9CYWNrdHJhY2spOgorICAgICAgICAoSlNDOjpZYXJyOjpJbnRlcnByZXRlcjo6bWF0
Y2hQYXJlbnRoZXNlc09uY2VCZWdpbik6CisgICAgICAgIChKU0M6OllhcnI6OkludGVycHJldGVy
OjptYXRjaFBhcmVudGhlc2VzT25jZUVuZCk6CisgICAgICAgIChKU0M6OllhcnI6OkludGVycHJl
dGVyOjpiYWNrdHJhY2tQYXJlbnRoZXNlc09uY2VCZWdpbik6CisgICAgICAgIChKU0M6OllhcnI6
OkludGVycHJldGVyOjpiYWNrdHJhY2tQYXJlbnRoZXNlc09uY2VFbmQpOgorICAgICAgICAoSlND
OjpZYXJyOjpJbnRlcnByZXRlcjo6bWF0Y2hQYXJlbnRoZXNlc1Rlcm1pbmFsQmVnaW4pOgorICAg
ICAgICAoSlNDOjpZYXJyOjpJbnRlcnByZXRlcjo6bWF0Y2hQYXJlbnRoZXNlc1Rlcm1pbmFsRW5k
KToKKyAgICAgICAgKEpTQzo6WWFycjo6SW50ZXJwcmV0ZXI6OmJhY2t0cmFja1BhcmVudGhlc2Vz
VGVybWluYWxCZWdpbik6CisgICAgICAgIChKU0M6OllhcnI6OkludGVycHJldGVyOjptYXRjaFBh
cmVudGhldGljYWxBc3NlcnRpb25CZWdpbik6CisgICAgICAgIChKU0M6OllhcnI6OkludGVycHJl
dGVyOjptYXRjaFBhcmVudGhldGljYWxBc3NlcnRpb25FbmQpOgorICAgICAgICAoSlNDOjpZYXJy
OjpJbnRlcnByZXRlcjo6YmFja3RyYWNrUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6SW50ZXJwcmV0ZXI6OmJhY2t0cmFja1BhcmVudGhldGljYWxBc3Nl
cnRpb25FbmQpOgorICAgICAgICAoSlNDOjpZYXJyOjpJbnRlcnByZXRlcjo6bWF0Y2hQYXJlbnRo
ZXNlcyk6CisgICAgICAgIChKU0M6OllhcnI6OkludGVycHJldGVyOjpiYWNrdHJhY2tQYXJlbnRo
ZXNlcyk6CisgICAgICAgIChKU0M6OllhcnI6OkludGVycHJldGVyOjptYXRjaERpc2p1bmN0aW9u
KToKKyAgICAgICAgKEpTQzo6WWFycjo6SW50ZXJwcmV0ZXI6Om1hdGNoTm9uWmVyb0Rpc2p1bmN0
aW9uKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qnl0ZUNvbXBpbGVyOjphdG9tUGFyZW50aGVzZXNP
bmNlQmVnaW4pOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmF0b21QYXJlbnRo
ZXNlc1Rlcm1pbmFsQmVnaW4pOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmF0
b21QYXJlbnRoZXNlc1N1YnBhdHRlcm5CZWdpbik6CisgICAgICAgIChKU0M6OllhcnI6OkJ5dGVD
b21waWxlcjo6YXRvbVBhcmVudGhldGljYWxBc3NlcnRpb25CZWdpbik6CisgICAgICAgIChKU0M6
OllhcnI6OkJ5dGVDb21waWxlcjo6YXRvbVBhcmVudGhldGljYWxBc3NlcnRpb25FbmQpOgorICAg
ICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmNsb3NlQWx0ZXJuYXRpdmUpOgorICAgICAg
ICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmNsb3NlQm9keUFsdGVybmF0aXZlKToKKyAgICAg
ICAgKEpTQzo6WWFycjo6Qnl0ZUNvbXBpbGVyOjphdG9tUGFyZW50aGVzZXNTdWJwYXR0ZXJuRW5k
KToKKyAgICAgICAgKEpTQzo6WWFycjo6Qnl0ZUNvbXBpbGVyOjphdG9tUGFyZW50aGVzZXNPbmNl
RW5kKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qnl0ZUNvbXBpbGVyOjphdG9tUGFyZW50aGVzZXNU
ZXJtaW5hbEVuZCk6CisgICAgICAgIChKU0M6OllhcnI6OkJ5dGVDb21waWxlcjo6ZW1pdERpc2p1
bmN0aW9uKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qnl0ZUNvbXBpbGVyOjpkdW1wRGlzanVuY3Rp
b24pOgorICAgICAgICAqIHlhcnIvWWFyckludGVycHJldGVyLmg6CisgICAgICAgIChKU0M6Ollh
cnI6OkJ5dGVUZXJtOjpCeXRlVGVybSk6CisgICAgICAgIChKU0M6OllhcnI6OkJ5dGVUZXJtOjpC
T0wpOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlVGVybTo6Q2hlY2tJbnB1dCk6CisgICAgICAg
IChKU0M6OllhcnI6OkJ5dGVUZXJtOjpVbmNoZWNrSW5wdXQpOgorICAgICAgICAoSlNDOjpZYXJy
OjpCeXRlVGVybTo6RU9MKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qnl0ZVRlcm06OldvcmRCb3Vu
ZGFyeSk6CisgICAgICAgIChKU0M6OllhcnI6OkJ5dGVUZXJtOjpCYWNrUmVmZXJlbmNlKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6Qnl0ZVRlcm06OkJvZHlBbHRlcm5hdGl2ZUJlZ2luKToKKyAgICAg
ICAgKEpTQzo6WWFycjo6Qnl0ZVRlcm06OkJvZHlBbHRlcm5hdGl2ZURpc2p1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6Qnl0ZVRlcm06OkJvZHlBbHRlcm5hdGl2ZUVuZCk6CisgICAgICAg
IChKU0M6OllhcnI6OkJ5dGVUZXJtOjpBbHRlcm5hdGl2ZUJlZ2luKToKKyAgICAgICAgKEpTQzo6
WWFycjo6Qnl0ZVRlcm06OkFsdGVybmF0aXZlRGlzanVuY3Rpb24pOgorICAgICAgICAoSlNDOjpZ
YXJyOjpCeXRlVGVybTo6QWx0ZXJuYXRpdmVFbmQpOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRl
VGVybTo6U3VicGF0dGVybkJlZ2luKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qnl0ZVRlcm06OlN1
YnBhdHRlcm5FbmQpOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlVGVybTo6RG90U3RhckVuY2xv
c3VyZSk6CisgICAgICAgICogeWFyci9ZYXJySklULmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6
aml0Q29tcGlsZSk6CisgICAgICAgICogeWFyci9ZYXJySklULmg6CisgICAgICAgICogeWFyci9Z
YXJyUGFyc2VyLmg6CisgICAgICAgIChKU0M6OllhcnI6OlBhcnNlcjo6Q2hhcmFjdGVyQ2xhc3NQ
YXJzZXJEZWxlZ2F0ZTo6Q2hhcmFjdGVyQ2xhc3NQYXJzZXJEZWxlZ2F0ZSk6CisgICAgICAgIChK
U0M6OllhcnI6OlBhcnNlcjo6Q2hhcmFjdGVyQ2xhc3NQYXJzZXJEZWxlZ2F0ZTo6YXRvbVBhdHRl
cm5DaGFyYWN0ZXIpOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXJzZXI6OkNoYXJhY3RlckNsYXNz
UGFyc2VyRGVsZWdhdGU6OmF0b21CdWlsdEluQ2hhcmFjdGVyQ2xhc3MpOgorICAgICAgICAoSlND
OjpZYXJyOjpQYXJzZXI6OkNoYXJhY3RlckNsYXNzUGFyc2VyRGVsZWdhdGU6OmVuZCk6CisgICAg
ICAgICogeWFyci9ZYXJyUGF0dGVybi5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0
ZXJuQ29uc3RydWN0b3I6OmF0b21QYXJlbnRoZXNlc1N1YnBhdHRlcm5CZWdpbik6CisgICAgICAg
IChKU0M6OllhcnI6OllhcnJQYXR0ZXJuQ29uc3RydWN0b3I6OmF0b21QYXJlbnRoZXRpY2FsQXNz
ZXJ0aW9uQmVnaW4pOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9y
OjphdG9tQmFja1JlZmVyZW5jZSk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuQ29u
c3RydWN0b3I6OmNvcHlUZXJtKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25z
dHJ1Y3Rvcjo6cXVhbnRpZnlBdG9tKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm5D
b25zdHJ1Y3Rvcjo6Y2hlY2tGb3JUZXJtaW5hbFBhcmVudGhlc2VzKToKKyAgICAgICAgKEpTQzo6
WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6Y29udGFpbnNDYXB0dXJpbmdUZXJtcyk6Cisg
ICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuQ29uc3RydWN0b3I6Om9wdGltaXplRG90U3Rh
cldyYXBwZWRFeHByZXNzaW9ucyk6CisgICAgICAgIChKU0M6OllhcnI6OlBhdHRlcm5UZXJtOjpk
dW1wUXVhbnRpZmllcik6CisgICAgICAgIChKU0M6OllhcnI6OlBhdHRlcm5UZXJtOjpkdW1wKToK
KyAgICAgICAgKiB5YXJyL1lhcnJQYXR0ZXJuLmg6CisgICAgICAgIChKU0M6OllhcnI6OlBhdHRl
cm5UZXJtOjpQYXR0ZXJuVGVybSk6CisgICAgICAgIChKU0M6OllhcnI6OlBhdHRlcm5UZXJtOjpG
b3J3YXJkUmVmZXJlbmNlKToKKyAgICAgICAgKEpTQzo6WWFycjo6UGF0dGVyblRlcm06OkJPTCk6
CisgICAgICAgIChKU0M6OllhcnI6OlBhdHRlcm5UZXJtOjpFT0wpOgorICAgICAgICAoSlNDOjpZ
YXJyOjpQYXR0ZXJuVGVybTo6V29yZEJvdW5kYXJ5KToKKyAgICAgICAgKEpTQzo6WWFycjo6UGF0
dGVyblRlcm06OmlzRml4ZWRXaWR0aENoYXJhY3RlckNsYXNzIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6WWFycjo6UGF0dGVyblRlcm06OmNvbnRhaW5zQW55Q2FwdHVyZXMpOgorICAgICAgICAoSlND
OjpZYXJyOjpQYXR0ZXJuVGVybTo6cXVhbnRpZnkpOgorCiAyMDIxLTA3LTIzICBBbGV4ZXkgU2h2
YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICBbV2ViSURMXSBQcm9wZXJs
eSB2YWxpZGF0ZSBhbmQgbWVyZ2UgZGVzY3JpcHRvcnMgaW4gW1JlcGxhY2VhYmxlXSBzZXR0ZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCmluZGV4IGY1YWFjMGI0ZDM0
NTM0NjVhZDE0Nzk0NGZkZWMwM2YxYTQ2OGY1NmUuLjI3NzdlZTFmNDU3Y2MzNTg5ZjFjYzZlZWM0
MjRjNzQwMDg2ODM4MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNw
cApAQCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQgUmVnRXhwOjpieXRlQ29kZUNvbXBpbGVJZk5lY2Vz
c2FyeShWTSogdm0pCiAgICAgfQogfQogCi12b2lkIFJlZ0V4cDo6Y29tcGlsZShWTSogdm0sIFlh
cnI6OllhcnJDaGFyU2l6ZSBjaGFyU2l6ZSkKK3ZvaWQgUmVnRXhwOjpjb21waWxlKFZNKiB2bSwg
WWFycjo6Q2hhclNpemUgY2hhclNpemUpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IGNlbGxMb2Nr
KCkgfTsKICAgICAKQEAgLTI1MSw3ICsyNTEsNyBAQCB2b2lkIFJlZ0V4cDo6Y29tcGlsZShWTSog
dm0sIFlhcnI6OllhcnJDaGFyU2l6ZSBjaGFyU2l6ZSkKICNlbmRpZgogICAgICAgICApIHsKICAg
ICAgICAgYXV0byYgaml0Q29kZSA9IGVuc3VyZVJlZ0V4cEpJVENvZGUoKTsKLSAgICAgICAgWWFy
cjo6aml0Q29tcGlsZShwYXR0ZXJuLCBtX3BhdHRlcm5TdHJpbmcsIGNoYXJTaXplLCB2bSwgaml0
Q29kZSk7CisgICAgICAgIFlhcnI6OmppdENvbXBpbGUocGF0dGVybiwgbV9wYXR0ZXJuU3RyaW5n
LCBjaGFyU2l6ZSwgdm0sIGppdENvZGUsIFlhcnI6OkpJVENvbXBpbGVNb2RlOjpJbmNsdWRlU3Vi
cGF0dGVybnMpOwogICAgICAgICBpZiAoIWppdENvZGUuZmFpbHVyZVJlYXNvbigpKSB7CiAgICAg
ICAgICAgICBtX3N0YXRlID0gSklUQ29kZTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI4Miw3
ICsyODIsNyBAQCBib29sIFJlZ0V4cDo6bWF0Y2hDb25jdXJyZW50bHkoCiB7CiAgICAgTG9ja2Vy
IGxvY2tlciB7IGNlbGxMb2NrKCkgfTsKIAotICAgIGlmICghaGFzQ29kZUZvcihzLmlzOEJpdCgp
ID8gWWFycjo6Q2hhcjggOiBZYXJyOjpDaGFyMTYpKQorICAgIGlmICghaGFzQ29kZUZvcihzLmlz
OEJpdCgpID8gWWFycjo6Q2hhclNpemU6OkNoYXI4IDogWWFycjo6Q2hhclNpemU6OkNoYXIxNikp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHBvc2l0aW9uID0gbWF0Y2hJbmxpbmU8VmVj
dG9yPGludD4mLCBZYXJyOjpNYXRjaEZyb206OkNvbXBpbGVyVGhyZWFkPihudWxscHRyLCB2bSwg
cywgc3RhcnRPZmZzZXQsIG92ZWN0b3IpOwpAQCAtMjkxLDcgKzI5MSw3IEBAIGJvb2wgUmVnRXhw
OjptYXRjaENvbmN1cnJlbnRseSgKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBSZWdFeHA6
OmNvbXBpbGVNYXRjaE9ubHkoVk0qIHZtLCBZYXJyOjpZYXJyQ2hhclNpemUgY2hhclNpemUpCit2
b2lkIFJlZ0V4cDo6Y29tcGlsZU1hdGNoT25seShWTSogdm0sIFlhcnI6OkNoYXJTaXplIGNoYXJT
aXplKQogewogICAgIExvY2tlciBsb2NrZXIgeyBjZWxsTG9jaygpIH07CiAgICAgCkBAIC0zMTUs
NyArMzE1LDcgQEAgdm9pZCBSZWdFeHA6OmNvbXBpbGVNYXRjaE9ubHkoVk0qIHZtLCBZYXJyOjpZ
YXJyQ2hhclNpemUgY2hhclNpemUpCiAjZW5kaWYKICAgICAgICAgKSB7CiAgICAgICAgIGF1dG8m
IGppdENvZGUgPSBlbnN1cmVSZWdFeHBKSVRDb2RlKCk7Ci0gICAgICAgIFlhcnI6OmppdENvbXBp
bGUocGF0dGVybiwgbV9wYXR0ZXJuU3RyaW5nLCBjaGFyU2l6ZSwgdm0sIGppdENvZGUsIFlhcnI6
Ok1hdGNoT25seSk7CisgICAgICAgIFlhcnI6OmppdENvbXBpbGUocGF0dGVybiwgbV9wYXR0ZXJu
U3RyaW5nLCBjaGFyU2l6ZSwgdm0sIGppdENvZGUsIFlhcnI6OkpJVENvbXBpbGVNb2RlOjpNYXRj
aE9ubHkpOwogICAgICAgICBpZiAoIWppdENvZGUuZmFpbHVyZVJlYXNvbigpKSB7CiAgICAgICAg
ICAgICBtX3N0YXRlID0gSklUQ29kZTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM0NSw3ICsz
NDUsNyBAQCBib29sIFJlZ0V4cDo6bWF0Y2hDb25jdXJyZW50bHkoVk0mIHZtLCBjb25zdCBTdHJp
bmcmIHMsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBNYQogewogICAgIExvY2tlciBsb2NrZXIgeyBj
ZWxsTG9jaygpIH07CiAKLSAgICBpZiAoIWhhc01hdGNoT25seUNvZGVGb3Iocy5pczhCaXQoKSA/
IFlhcnI6OkNoYXI4IDogWWFycjo6Q2hhcjE2KSkKKyAgICBpZiAoIWhhc01hdGNoT25seUNvZGVG
b3Iocy5pczhCaXQoKSA/IFlhcnI6OkNoYXJTaXplOjpDaGFyOCA6IFlhcnI6OkNoYXJTaXplOjpD
aGFyMTYpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXN1bHQgPSBtYXRjaElubGlu
ZTxZYXJyOjpNYXRjaEZyb206OkNvbXBpbGVyVGhyZWFkPihudWxscHRyLCB2bSwgcywgc3RhcnRP
ZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAppbmRleCBmZjg2ZmM2
YTBlMWNkOWVhOWI0NTBkMGVlNWU0YzNhNGZiY2Y3ZWMzLi45NDY0ODg3Yzg3OGIyOWFkZDczOGJl
NTlkNzg2MzQ2ZWU3ZjdjZjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAu
aApAQCAtMTE5LDggKzExOSw4IEBAIGNsYXNzIFJlZ0V4cCBmaW5hbCA6IHB1YmxpYyBKU0NlbGwg
ewogICAgICAgICByZXR1cm4gbV9zdGF0ZSA9PSBKSVRDb2RlIHx8IG1fc3RhdGUgPT0gQnl0ZUNv
ZGU7CiAgICAgfQogCi0gICAgYm9vbCBoYXNDb2RlRm9yKFlhcnI6OllhcnJDaGFyU2l6ZSk7Ci0g
ICAgYm9vbCBoYXNNYXRjaE9ubHlDb2RlRm9yKFlhcnI6OllhcnJDaGFyU2l6ZSk7CisgICAgYm9v
bCBoYXNDb2RlRm9yKFlhcnI6OkNoYXJTaXplKTsKKyAgICBib29sIGhhc01hdGNoT25seUNvZGVG
b3IoWWFycjo6Q2hhclNpemUpOwogCiAgICAgdm9pZCBkZWxldGVDb2RlKCk7CiAKQEAgLTE1Nywx
MSArMTU3LDExIEBAIGNsYXNzIFJlZ0V4cCBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAg
dm9pZCBieXRlQ29kZUNvbXBpbGVJZk5lY2Vzc2FyeShWTSopOwogCi0gICAgdm9pZCBjb21waWxl
KFZNKiwgWWFycjo6WWFyckNoYXJTaXplKTsKLSAgICB2b2lkIGNvbXBpbGVJZk5lY2Vzc2FyeShW
TSYsIFlhcnI6OllhcnJDaGFyU2l6ZSk7CisgICAgdm9pZCBjb21waWxlKFZNKiwgWWFycjo6Q2hh
clNpemUpOworICAgIHZvaWQgY29tcGlsZUlmTmVjZXNzYXJ5KFZNJiwgWWFycjo6Q2hhclNpemUp
OwogCi0gICAgdm9pZCBjb21waWxlTWF0Y2hPbmx5KFZNKiwgWWFycjo6WWFyckNoYXJTaXplKTsK
LSAgICB2b2lkIGNvbXBpbGVJZk5lY2Vzc2FyeU1hdGNoT25seShWTSYsIFlhcnI6OllhcnJDaGFy
U2l6ZSk7CisgICAgdm9pZCBjb21waWxlTWF0Y2hPbmx5KFZNKiwgWWFycjo6Q2hhclNpemUpOwor
ICAgIHZvaWQgY29tcGlsZUlmTmVjZXNzYXJ5TWF0Y2hPbmx5KFZNJiwgWWFycjo6Q2hhclNpemUp
OwogCiAjaWYgRU5BQkxFKFlBUlJfSklUX0RFQlVHKQogICAgIHZvaWQgbWF0Y2hDb21wYXJlV2l0
aEludGVycHJldGVyKGNvbnN0IFN0cmluZyYsIGludCBzdGFydE9mZnNldCwgaW50KiBvZmZzZXRW
ZWN0b3IsIGludCBqaXRSZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwSW5saW5lcy5oCmluZGV4IDZkNDRiYTlhMGE2NWU1NmUyYzE5Yjk0MDA4ZTJjYjg5ZjQw
MGM4NzAuLjAyMmNiYmE1NTU3ZTcxNzhkMTRkNGI2NjFlZGNkNjg1YTRmNzg3ZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cElubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBJbmxpbmVzLmgKQEAgLTY4LDE2ICs2
OCwxNiBAQCBjbGFzcyBSZWdFeHBGdW5jdGlvbmFsVGVzdENvbGxlY3RvciB7CiB9OwogI2VuZGlm
IC8vIFJFR0VYUF9GVU5DX1RFU1RfREFUQV9HRU4KIAotQUxXQVlTX0lOTElORSBib29sIFJlZ0V4
cDo6aGFzQ29kZUZvcihZYXJyOjpZYXJyQ2hhclNpemUgY2hhclNpemUpCitBTFdBWVNfSU5MSU5F
IGJvb2wgUmVnRXhwOjpoYXNDb2RlRm9yKFlhcnI6OkNoYXJTaXplIGNoYXJTaXplKQogewogICAg
IGlmIChoYXNDb2RlKCkpIHsKICNpZiBFTkFCTEUoWUFSUl9KSVQpCiAgICAgICAgIGlmIChtX3N0
YXRlICE9IEpJVENvZGUpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgQVNTRVJU
KG1fcmVnRXhwSklUQ29kZSk7Ci0gICAgICAgIGlmICgoY2hhclNpemUgPT0gWWFycjo6Q2hhcjgp
ICYmIChtX3JlZ0V4cEpJVENvZGUtPmhhczhCaXRDb2RlKCkpKQorICAgICAgICBpZiAoKGNoYXJT
aXplID09IFlhcnI6OkNoYXJTaXplOjpDaGFyOCkgJiYgKG1fcmVnRXhwSklUQ29kZS0+aGFzOEJp
dENvZGUoKSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgaWYgKChjaGFyU2l6
ZSA9PSBZYXJyOjpDaGFyMTYpICYmIChtX3JlZ0V4cEpJVENvZGUtPmhhczE2Qml0Q29kZSgpKSkK
KyAgICAgICAgaWYgKChjaGFyU2l6ZSA9PSBZYXJyOjpDaGFyU2l6ZTo6Q2hhcjE2KSAmJiAobV9y
ZWdFeHBKSVRDb2RlLT5oYXMxNkJpdENvZGUoKSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTShjaGFyU2l6ZSk7CkBAIC04Nyw3ICs4Nyw3IEBA
IEFMV0FZU19JTkxJTkUgYm9vbCBSZWdFeHA6Omhhc0NvZGVGb3IoWWFycjo6WWFyckNoYXJTaXpl
IGNoYXJTaXplKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotQUxXQVlTX0lOTElORSB2b2lkIFJl
Z0V4cDo6Y29tcGlsZUlmTmVjZXNzYXJ5KFZNJiB2bSwgWWFycjo6WWFyckNoYXJTaXplIGNoYXJT
aXplKQorQUxXQVlTX0lOTElORSB2b2lkIFJlZ0V4cDo6Y29tcGlsZUlmTmVjZXNzYXJ5KFZNJiB2
bSwgWWFycjo6Q2hhclNpemUgY2hhclNpemUpCiB7CiAgICAgaWYgKGhhc0NvZGVGb3IoY2hhclNp
emUpKQogICAgICAgICByZXR1cm47CkBAIC0xMDYsNyArMTA2LDcgQEAgQUxXQVlTX0lOTElORSBp
bnQgUmVnRXhwOjptYXRjaElubGluZShKU0dsb2JhbE9iamVjdCogbnVsbE9yR2xvYmFsT2JqZWN0
LCBWTSYgdm0KICAgICBtX3J0TWF0Y2hUb3RhbFN1YmplY3RTdHJpbmdMZW4gKz0gKGRvdWJsZSko
cy5sZW5ndGgoKSAtIHN0YXJ0T2Zmc2V0KTsKICNlbmRpZgogCi0gICAgY29tcGlsZUlmTmVjZXNz
YXJ5KHZtLCBzLmlzOEJpdCgpID8gWWFycjo6Q2hhcjggOiBZYXJyOjpDaGFyMTYpOworICAgIGNv
bXBpbGVJZk5lY2Vzc2FyeSh2bSwgcy5pczhCaXQoKSA/IFlhcnI6OkNoYXJTaXplOjpDaGFyOCA6
IFlhcnI6OkNoYXJTaXplOjpDaGFyMTYpOwogCiAgICAgYXV0byB0aHJvd0Vycm9yID0gWyZdIHsK
ICAgICAgICAgaWYgKG1hdGNoRnJvbSA9PSBZYXJyOjpNYXRjaEZyb206OkNvbXBpbGVyVGhyZWFk
KQpAQCAtMTQwLDcgKzE0MCw3IEBAIEFMV0FZU19JTkxJTkUgaW50IFJlZ0V4cDo6bWF0Y2hJbmxp
bmUoSlNHbG9iYWxPYmplY3QqIG51bGxPckdsb2JhbE9iamVjdCwgVk0mIHZtCiAgICAgICAgICAg
ICAgICAgcmVzdWx0ID0gbV9yZWdFeHBKSVRDb2RlLT5leGVjdXRlKHMuY2hhcmFjdGVyczE2KCks
IHN0YXJ0T2Zmc2V0LCBzLmxlbmd0aCgpLCBvZmZzZXRWZWN0b3IsIHJlZ0V4cENvbnRleHQpLnN0
YXJ0OwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBZYXJyOjpKU1JlZ0V4cEpJ
VENvZGVGYWlsdXJlKSB7CisgICAgICAgIGlmIChyZXN1bHQgPT0gc3RhdGljX2Nhc3Q8aW50PihZ
YXJyOjpKU1JlZ0V4cFJlc3VsdDo6SklUQ29kZUZhaWx1cmUpKSB7CiAgICAgICAgICAgICAvLyBK
SVQnZWQgY29kZSBjb3VsZG4ndCBoYW5kbGUgZXhwcmVzc2lvbiwgc28gcHVudCBiYWNrIHRvIHRo
ZSBpbnRlcnByZXRlci4KICAgICAgICAgICAgIGJ5dGVDb2RlQ29tcGlsZUlmTmVjZXNzYXJ5KCZ2
bSk7CiAgICAgICAgICAgICBpZiAobV9zdGF0ZSA9PSBQYXJzZUVycm9yKQpAQCAtMjA1LDE2ICsy
MDUsMTYgQEAgQUxXQVlTX0lOTElORSBpbnQgUmVnRXhwOjptYXRjaElubGluZShKU0dsb2JhbE9i
amVjdCogbnVsbE9yR2xvYmFsT2JqZWN0LCBWTSYgdm0KICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci1BTFdBWVNfSU5MSU5FIGJvb2wgUmVnRXhwOjpoYXNNYXRjaE9ubHlDb2RlRm9yKFlhcnI6Ollh
cnJDaGFyU2l6ZSBjaGFyU2l6ZSkKK0FMV0FZU19JTkxJTkUgYm9vbCBSZWdFeHA6Omhhc01hdGNo
T25seUNvZGVGb3IoWWFycjo6Q2hhclNpemUgY2hhclNpemUpCiB7CiAgICAgaWYgKGhhc0NvZGUo
KSkgewogI2lmIEVOQUJMRShZQVJSX0pJVCkKICAgICAgICAgaWYgKG1fc3RhdGUgIT0gSklUQ29k
ZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBBU1NFUlQobV9yZWdFeHBKSVRD
b2RlKTsKLSAgICAgICAgaWYgKChjaGFyU2l6ZSA9PSBZYXJyOjpDaGFyOCkgJiYgKG1fcmVnRXhw
SklUQ29kZS0+aGFzOEJpdENvZGVNYXRjaE9ubHkoKSkpCisgICAgICAgIGlmICgoY2hhclNpemUg
PT0gWWFycjo6Q2hhclNpemU6OkNoYXI4KSAmJiAobV9yZWdFeHBKSVRDb2RlLT5oYXM4Qml0Q29k
ZU1hdGNoT25seSgpKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBpZiAoKGNo
YXJTaXplID09IFlhcnI6OkNoYXIxNikgJiYgKG1fcmVnRXhwSklUQ29kZS0+aGFzMTZCaXRDb2Rl
TWF0Y2hPbmx5KCkpKQorICAgICAgICBpZiAoKGNoYXJTaXplID09IFlhcnI6OkNoYXJTaXplOjpD
aGFyMTYpICYmIChtX3JlZ0V4cEpJVENvZGUtPmhhczE2Qml0Q29kZU1hdGNoT25seSgpKSkKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKGNoYXJT
aXplKTsKQEAgLTIyNSw3ICsyMjUsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgUmVnRXhwOjpoYXNN
YXRjaE9ubHlDb2RlRm9yKFlhcnI6OllhcnJDaGFyU2l6ZSBjaGFyU2l6ZSkKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLUFMV0FZU19JTkxJTkUgdm9pZCBSZWdFeHA6OmNvbXBpbGVJZk5lY2Vzc2Fy
eU1hdGNoT25seShWTSYgdm0sIFlhcnI6OllhcnJDaGFyU2l6ZSBjaGFyU2l6ZSkKK0FMV0FZU19J
TkxJTkUgdm9pZCBSZWdFeHA6OmNvbXBpbGVJZk5lY2Vzc2FyeU1hdGNoT25seShWTSYgdm0sIFlh
cnI6OkNoYXJTaXplIGNoYXJTaXplKQogewogICAgIGlmIChoYXNNYXRjaE9ubHlDb2RlRm9yKGNo
YXJTaXplKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjQ0LDcgKzI0NCw3IEBAIEFMV0FZU19JTkxJ
TkUgTWF0Y2hSZXN1bHQgUmVnRXhwOjptYXRjaElubGluZShKU0dsb2JhbE9iamVjdCogbnVsbE9y
R2xvYmFsT2JqZWN0CiAgICAgbV9ydE1hdGNoT25seVRvdGFsU3ViamVjdFN0cmluZ0xlbiArPSAo
ZG91YmxlKShzLmxlbmd0aCgpIC0gc3RhcnRPZmZzZXQpOwogI2VuZGlmCiAKLSAgICBjb21waWxl
SWZOZWNlc3NhcnlNYXRjaE9ubHkodm0sIHMuaXM4Qml0KCkgPyBZYXJyOjpDaGFyOCA6IFlhcnI6
OkNoYXIxNik7CisgICAgY29tcGlsZUlmTmVjZXNzYXJ5TWF0Y2hPbmx5KHZtLCBzLmlzOEJpdCgp
ID8gWWFycjo6Q2hhclNpemU6OkNoYXI4IDogWWFycjo6Q2hhclNpemU6OkNoYXIxNik7CiAKICAg
ICBhdXRvIHRocm93RXJyb3IgPSBbJl0gewogICAgICAgICBpZiAobWF0Y2hGcm9tID09IFlhcnI6
Ok1hdGNoRnJvbTo6Q29tcGlsZXJUaHJlYWQpCkBAIC0yNzgsNyArMjc4LDcgQEAgQUxXQVlTX0lO
TElORSBNYXRjaFJlc3VsdCBSZWdFeHA6Om1hdGNoSW5saW5lKEpTR2xvYmFsT2JqZWN0KiBudWxs
T3JHbG9iYWxPYmplY3QKICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICBtX3J0TWF0
Y2hPbmx5Rm91bmRDb3VudCsrOwogI2VuZGlmCi0gICAgICAgIGlmIChyZXN1bHQuc3RhcnQgIT0g
c3RhdGljX2Nhc3Q8c2l6ZV90PihZYXJyOjpKU1JlZ0V4cEpJVENvZGVGYWlsdXJlKSkKKyAgICAg
ICAgaWYgKHJlc3VsdC5zdGFydCAhPSBzdGF0aWNfY2FzdDxzaXplX3Q+KFlhcnI6OkpTUmVnRXhw
UmVzdWx0OjpKSVRDb2RlRmFpbHVyZSkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAg
ICAgICAgIC8vIEpJVCdlZCBjb2RlIGNvdWxkbid0IGhhbmRsZSBleHByZXNzaW9uLCBzbyBwdW50
IGJhY2sgdG8gdGhlIGludGVycHJldGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyci5oCmluZGV4
IDE2Mzk4NmE3NzMwNTdmODc0YzZiZGI5Nzk1YjA1YjlhZmUyOThkMTUuLmRhMWI3OTE0ZWNkZTM3
NzhiMWFlOTU3YmU3ZWUyZmM3MTliYjIwNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyLmgK
QEAgLTQ5LDE5ICs0OSwxOSBAQCBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG9mZnNldE5vTWF0
Y2ggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCk7CiAvLyBhdm9pZCBzcGVu
ZGluZyBleHBvbmVudGlhbCB0aW1lIG9uIGNvbXBsZXggcmVndWxhciBleHByZXNzaW9ucy4KIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF0Y2hMaW1pdCA9IDEwMDAwMDA7CiAKLWVudW0gTWF0
Y2hGcm9tIHsgVk1UaHJlYWQsIENvbXBpbGVyVGhyZWFkIH07CitlbnVtIGNsYXNzIE1hdGNoRnJv
bSB7IFZNVGhyZWFkLCBDb21waWxlclRocmVhZCB9OwogCi1lbnVtIEpTUmVnRXhwUmVzdWx0IHsK
LSAgICBKU1JlZ0V4cE1hdGNoID0gMSwKLSAgICBKU1JlZ0V4cE5vTWF0Y2ggPSAwLAotICAgIEpT
UmVnRXhwRXJyb3JOb01hdGNoID0gLTEsCi0gICAgSlNSZWdFeHBKSVRDb2RlRmFpbHVyZSA9IC0y
LAotICAgIEpTUmVnRXhwRXJyb3JIaXRMaW1pdCA9IC0zLAotICAgIEpTUmVnRXhwRXJyb3JOb01l
bW9yeSA9IC00LAotICAgIEpTUmVnRXhwRXJyb3JJbnRlcm5hbCA9IC01LAorZW51bSBjbGFzcyBK
U1JlZ0V4cFJlc3VsdCB7CisgICAgTWF0Y2ggPSAxLAorICAgIE5vTWF0Y2ggPSAwLAorICAgIEVy
cm9yTm9NYXRjaCA9IC0xLAorICAgIEpJVENvZGVGYWlsdXJlID0gLTIsCisgICAgRXJyb3JIaXRM
aW1pdCA9IC0zLAorICAgIEVycm9yTm9NZW1vcnkgPSAtNCwKKyAgICBFcnJvckludGVybmFsID0g
LTUsCiB9OwogCi1lbnVtIFlhcnJDaGFyU2l6ZSB7CitlbnVtIGNsYXNzIENoYXJTaXplIDogdWlu
dDhfdCB7CiAgICAgQ2hhcjgsCiAgICAgQ2hhcjE2CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAKaW5kZXggNjg1ZmU2MTZjZDhkY2ViNTAzNGY2
YTY5OWM5NDYyMDFjMDhmMWVjNy4uYWIwMTYxZWU3ZThmMGY3MDZjMzJhYWI1OTNiNTI5ZTg4ZjNj
Zjc4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJl
dGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIu
Y3BwCkBAIC01MTEsMTAgKzUxMSwxMCBAQCBjbGFzcyBJbnRlcnByZXRlciB7CiAgICAgICAgIEJh
Y2tUcmFja0luZm9QYXR0ZXJuQ2hhcmFjdGVyKiBiYWNrVHJhY2sgPSByZWludGVycHJldF9jYXN0
PEJhY2tUcmFja0luZm9QYXR0ZXJuQ2hhcmFjdGVyKj4oY29udGV4dC0+ZnJhbWUgKyB0ZXJtLmZy
YW1lTG9jYXRpb24pOwogCiAgICAgICAgIHN3aXRjaCAodGVybS5hdG9tLnF1YW50aXR5VHlwZSkg
ewotICAgICAgICBjYXNlIFF1YW50aWZpZXJGaXhlZENvdW50OgorICAgICAgICBjYXNlIFF1YW50
aWZpZXJUeXBlOjpGaXhlZENvdW50OgogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgY2Fz
ZSBRdWFudGlmaWVyR3JlZWR5OgorICAgICAgICBjYXNlIFF1YW50aWZpZXJUeXBlOjpHcmVlZHk6
CiAgICAgICAgICAgICBpZiAoYmFja1RyYWNrLT5tYXRjaEFtb3VudCkgewogICAgICAgICAgICAg
ICAgIC0tYmFja1RyYWNrLT5tYXRjaEFtb3VudDsKICAgICAgICAgICAgICAgICBpbnB1dC51bmNo
ZWNrSW5wdXQoVTE2X0xFTkdUSCh0ZXJtLmF0b20ucGF0dGVybkNoYXJhY3RlcikpOwpAQCAtNTIy
LDcgKzUyMiw3IEBAIGNsYXNzIEludGVycHJldGVyIHsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGJyZWFrOwogCi0gICAgICAgIGNhc2UgUXVhbnRpZmllck5vbkdyZWVkeToKKyAgICAgICAg
Y2FzZSBRdWFudGlmaWVyVHlwZTo6Tm9uR3JlZWR5OgogICAgICAgICAgICAgaWYgKChiYWNrVHJh
Y2stPm1hdGNoQW1vdW50IDwgdGVybS5hdG9tLnF1YW50aXR5TWF4Q291bnQpICYmIGlucHV0LmNo
ZWNrSW5wdXQoMSkpIHsKICAgICAgICAgICAgICAgICArK2JhY2tUcmFjay0+bWF0Y2hBbW91bnQ7
CiAgICAgICAgICAgICAgICAgaWYgKGNoZWNrQ2hhcmFjdGVyKHRlcm0uYXRvbS5wYXR0ZXJuQ2hh
cmFjdGVyLCB0ZXJtLmlucHV0UG9zaXRpb24gKyAxKSkKQEAgLTU0MCwxMCArNTQwLDEwIEBAIGNs
YXNzIEludGVycHJldGVyIHsKICAgICAgICAgQmFja1RyYWNrSW5mb1BhdHRlcm5DaGFyYWN0ZXIq
IGJhY2tUcmFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QmFja1RyYWNrSW5mb1BhdHRlcm5DaGFyYWN0
ZXIqPihjb250ZXh0LT5mcmFtZSArIHRlcm0uZnJhbWVMb2NhdGlvbik7CiAKICAgICAgICAgc3dp
dGNoICh0ZXJtLmF0b20ucXVhbnRpdHlUeXBlKSB7Ci0gICAgICAgIGNhc2UgUXVhbnRpZmllckZp
eGVkQ291bnQ6CisgICAgICAgIGNhc2UgUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQ6CiAgICAg
ICAgICAgICBicmVhazsKIAotICAgICAgICBjYXNlIFF1YW50aWZpZXJHcmVlZHk6CisgICAgICAg
IGNhc2UgUXVhbnRpZmllclR5cGU6OkdyZWVkeToKICAgICAgICAgICAgIGlmIChiYWNrVHJhY2st
Pm1hdGNoQW1vdW50KSB7CiAgICAgICAgICAgICAgICAgLS1iYWNrVHJhY2stPm1hdGNoQW1vdW50
OwogICAgICAgICAgICAgICAgIGlucHV0LnVuY2hlY2tJbnB1dCgxKTsKQEAgLTU1MSw3ICs1NTEs
NyBAQCBjbGFzcyBJbnRlcnByZXRlciB7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVh
azsKIAotICAgICAgICBjYXNlIFF1YW50aWZpZXJOb25HcmVlZHk6CisgICAgICAgIGNhc2UgUXVh
bnRpZmllclR5cGU6Ok5vbkdyZWVkeToKICAgICAgICAgICAgIGlmICgoYmFja1RyYWNrLT5tYXRj
aEFtb3VudCA8IHRlcm0uYXRvbS5xdWFudGl0eU1heENvdW50KSAmJiBpbnB1dC5jaGVja0lucHV0
KDEpKSB7CiAgICAgICAgICAgICAgICAgKytiYWNrVHJhY2stPm1hdGNoQW1vdW50OwogICAgICAg
ICAgICAgICAgIGlmIChjaGVja0Nhc2VkQ2hhcmFjdGVyKHRlcm0uYXRvbS5jYXNlZENoYXJhY3Rl
ci5sbywgdGVybS5hdG9tLmNhc2VkQ2hhcmFjdGVyLmhpLCB0ZXJtLmlucHV0UG9zaXRpb24gKyAx
KSkKQEAgLTU2NiwxMSArNTY2LDExIEBAIGNsYXNzIEludGVycHJldGVyIHsKIAogICAgIGJvb2wg
bWF0Y2hDaGFyYWN0ZXJDbGFzcyhCeXRlVGVybSYgdGVybSwgRGlzanVuY3Rpb25Db250ZXh0KiBj
b250ZXh0KQogICAgIHsKLSAgICAgICAgQVNTRVJUKHRlcm0udHlwZSA9PSBCeXRlVGVybTo6VHlw
ZUNoYXJhY3RlckNsYXNzKTsKKyAgICAgICAgQVNTRVJUKHRlcm0udHlwZSA9PSBCeXRlVGVybTo6
VHlwZTo6Q2hhcmFjdGVyQ2xhc3MpOwogICAgICAgICBCYWNrVHJhY2tJbmZvQ2hhcmFjdGVyQ2xh
c3MqIGJhY2tUcmFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QmFja1RyYWNrSW5mb0NoYXJhY3RlckNs
YXNzKj4oY29udGV4dC0+ZnJhbWUgKyB0ZXJtLmZyYW1lTG9jYXRpb24pOwogCiAgICAgICAgIHN3
aXRjaCAodGVybS5hdG9tLnF1YW50aXR5VHlwZSkgewotICAgICAgICBjYXNlIFF1YW50aWZpZXJG
aXhlZENvdW50OiB7CisgICAgICAgIGNhc2UgUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQ6IHsK
ICAgICAgICAgICAgIGlmICh1bmljb2RlKSB7CiAgICAgICAgICAgICAgICAgQ2hhcmFjdGVyQ2xh
c3MqIGNoYXJDbGFzcyA9IHRlcm0uYXRvbS5jaGFyYWN0ZXJDbGFzczsKICAgICAgICAgICAgICAg
ICBiYWNrVHJhY2stPmJlZ2luID0gaW5wdXQuZ2V0UG9zKCk7CkBAIC02MDAsNyArNjAwLDcgQEAg
Y2xhc3MgSW50ZXJwcmV0ZXIgewogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0K
IAotICAgICAgICBjYXNlIFF1YW50aWZpZXJHcmVlZHk6IHsKKyAgICAgICAgY2FzZSBRdWFudGlm
aWVyVHlwZTo6R3JlZWR5OiB7CiAgICAgICAgICAgICB1bnNpZ25lZCBwb3NpdGlvbiA9IGlucHV0
LmdldFBvcygpOwogICAgICAgICAgICAgYmFja1RyYWNrLT5iZWdpbiA9IHBvc2l0aW9uOwogICAg
ICAgICAgICAgdW5zaWduZWQgbWF0Y2hBbW91bnQgPSAwOwpAQCAtNjE3LDcgKzYxNyw3IEBAIGNs
YXNzIEludGVycHJldGVyIHsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAK
LSAgICAgICAgY2FzZSBRdWFudGlmaWVyTm9uR3JlZWR5OgorICAgICAgICBjYXNlIFF1YW50aWZp
ZXJUeXBlOjpOb25HcmVlZHk6CiAgICAgICAgICAgICBiYWNrVHJhY2stPmJlZ2luID0gaW5wdXQu
Z2V0UG9zKCk7CiAgICAgICAgICAgICBiYWNrVHJhY2stPm1hdGNoQW1vdW50ID0gMDsKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwpAQCAtNjI5LDE2ICs2MjksMTYgQEAgY2xhc3MgSW50ZXJwcmV0
ZXIgewogCiAgICAgYm9vbCBiYWNrdHJhY2tDaGFyYWN0ZXJDbGFzcyhCeXRlVGVybSYgdGVybSwg
RGlzanVuY3Rpb25Db250ZXh0KiBjb250ZXh0KQogICAgIHsKLSAgICAgICAgQVNTRVJUKHRlcm0u
dHlwZSA9PSBCeXRlVGVybTo6VHlwZUNoYXJhY3RlckNsYXNzKTsKKyAgICAgICAgQVNTRVJUKHRl
cm0udHlwZSA9PSBCeXRlVGVybTo6VHlwZTo6Q2hhcmFjdGVyQ2xhc3MpOwogICAgICAgICBCYWNr
VHJhY2tJbmZvQ2hhcmFjdGVyQ2xhc3MqIGJhY2tUcmFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QmFj
a1RyYWNrSW5mb0NoYXJhY3RlckNsYXNzKj4oY29udGV4dC0+ZnJhbWUgKyB0ZXJtLmZyYW1lTG9j
YXRpb24pOwogCiAgICAgICAgIHN3aXRjaCAodGVybS5hdG9tLnF1YW50aXR5VHlwZSkgewotICAg
ICAgICBjYXNlIFF1YW50aWZpZXJGaXhlZENvdW50OgorICAgICAgICBjYXNlIFF1YW50aWZpZXJU
eXBlOjpGaXhlZENvdW50OgogICAgICAgICAgICAgaWYgKHVuaWNvZGUpCiAgICAgICAgICAgICAg
ICAgaW5wdXQuc2V0UG9zKGJhY2tUcmFjay0+YmVnaW4pOwogICAgICAgICAgICAgYnJlYWs7CiAK
LSAgICAgICAgY2FzZSBRdWFudGlmaWVyR3JlZWR5OgorICAgICAgICBjYXNlIFF1YW50aWZpZXJU
eXBlOjpHcmVlZHk6CiAgICAgICAgICAgICBpZiAoYmFja1RyYWNrLT5tYXRjaEFtb3VudCkgewog
ICAgICAgICAgICAgICAgIGlmICh1bmljb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFJl
bWF0Y2ggb25lIGxlc3MgbWF0Y2gKQEAgLTY1OCw3ICs2NTgsNyBAQCBjbGFzcyBJbnRlcnByZXRl
ciB7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBjYXNlIFF1
YW50aWZpZXJOb25HcmVlZHk6CisgICAgICAgIGNhc2UgUXVhbnRpZmllclR5cGU6Ok5vbkdyZWVk
eToKICAgICAgICAgICAgIGlmICgoYmFja1RyYWNrLT5tYXRjaEFtb3VudCA8IHRlcm0uYXRvbS5x
dWFudGl0eU1heENvdW50KSAmJiBpbnB1dC5jaGVja0lucHV0KDEpKSB7CiAgICAgICAgICAgICAg
ICAgKytiYWNrVHJhY2stPm1hdGNoQW1vdW50OwogICAgICAgICAgICAgICAgIGlmIChjaGVja0No
YXJhY3RlckNsYXNzKHRlcm0uYXRvbS5jaGFyYWN0ZXJDbGFzcywgdGVybS5pbnZlcnQoKSwgdGVy
bS5pbnB1dFBvc2l0aW9uICsgMSkpCkBAIC02NzMsNyArNjczLDcgQEAgY2xhc3MgSW50ZXJwcmV0
ZXIgewogCiAgICAgYm9vbCBtYXRjaEJhY2tSZWZlcmVuY2UoQnl0ZVRlcm0mIHRlcm0sIERpc2p1
bmN0aW9uQ29udGV4dCogY29udGV4dCkKICAgICB7Ci0gICAgICAgIEFTU0VSVCh0ZXJtLnR5cGUg
PT0gQnl0ZVRlcm06OlR5cGVCYWNrUmVmZXJlbmNlKTsKKyAgICAgICAgQVNTRVJUKHRlcm0udHlw
ZSA9PSBCeXRlVGVybTo6VHlwZTo6QmFja1JlZmVyZW5jZSk7CiAgICAgICAgIEJhY2tUcmFja0lu
Zm9CYWNrUmVmZXJlbmNlKiBiYWNrVHJhY2sgPSByZWludGVycHJldF9jYXN0PEJhY2tUcmFja0lu
Zm9CYWNrUmVmZXJlbmNlKj4oY29udGV4dC0+ZnJhbWUgKyB0ZXJtLmZyYW1lTG9jYXRpb24pOwog
CiAgICAgICAgIHVuc2lnbmVkIG1hdGNoQmVnaW4gPSBvdXRwdXRbKHRlcm0uYXRvbS5zdWJwYXR0
ZXJuSWQgPDwgMSldOwpAQCAtNjk0LDcgKzY5NCw3IEBAIGNsYXNzIEludGVycHJldGVyIHsKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgICAgIHN3aXRjaCAodGVybS5hdG9tLnF1YW50
aXR5VHlwZSkgewotICAgICAgICBjYXNlIFF1YW50aWZpZXJGaXhlZENvdW50OiB7CisgICAgICAg
IGNhc2UgUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQ6IHsKICAgICAgICAgICAgIGJhY2tUcmFj
ay0+YmVnaW4gPSBpbnB1dC5nZXRQb3MoKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgbWF0
Y2hBbW91bnQgPSAwOyBtYXRjaEFtb3VudCA8IHRlcm0uYXRvbS5xdWFudGl0eU1heENvdW50OyAr
K21hdGNoQW1vdW50KSB7CiAgICAgICAgICAgICAgICAgaWYgKCF0cnlDb25zdW1lQmFja1JlZmVy
ZW5jZShtYXRjaEJlZ2luLCBtYXRjaEVuZCwgdGVybS5pbnB1dFBvc2l0aW9uKSkgewpAQCAtNzA1
LDcgKzcwNSw3IEBAIGNsYXNzIEludGVycHJldGVyIHsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBRdWFudGlmaWVyR3JlZWR5OiB7CisgICAgICAg
IGNhc2UgUXVhbnRpZmllclR5cGU6OkdyZWVkeTogewogICAgICAgICAgICAgdW5zaWduZWQgbWF0
Y2hBbW91bnQgPSAwOwogICAgICAgICAgICAgd2hpbGUgKChtYXRjaEFtb3VudCA8IHRlcm0uYXRv
bS5xdWFudGl0eU1heENvdW50KSAmJiB0cnlDb25zdW1lQmFja1JlZmVyZW5jZShtYXRjaEJlZ2lu
LCBtYXRjaEVuZCwgdGVybS5pbnB1dFBvc2l0aW9uKSkKICAgICAgICAgICAgICAgICArK21hdGNo
QW1vdW50OwpAQCAtNzEzLDcgKzcxMyw3IEBAIGNsYXNzIEludGVycHJldGVyIHsKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBRdWFudGlmaWVyTm9u
R3JlZWR5OgorICAgICAgICBjYXNlIFF1YW50aWZpZXJUeXBlOjpOb25HcmVlZHk6CiAgICAgICAg
ICAgICBiYWNrVHJhY2stPmJlZ2luID0gaW5wdXQuZ2V0UG9zKCk7CiAgICAgICAgICAgICBiYWNr
VHJhY2stPm1hdGNoQW1vdW50ID0gMDsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNzI1
LDcgKzcyNSw3IEBAIGNsYXNzIEludGVycHJldGVyIHsKIAogICAgIGJvb2wgYmFja3RyYWNrQmFj
a1JlZmVyZW5jZShCeXRlVGVybSYgdGVybSwgRGlzanVuY3Rpb25Db250ZXh0KiBjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgQVNTRVJUKHRlcm0udHlwZSA9PSBCeXRlVGVybTo6VHlwZUJhY2tSZWZl
cmVuY2UpOworICAgICAgICBBU1NFUlQodGVybS50eXBlID09IEJ5dGVUZXJtOjpUeXBlOjpCYWNr
UmVmZXJlbmNlKTsKICAgICAgICAgQmFja1RyYWNrSW5mb0JhY2tSZWZlcmVuY2UqIGJhY2tUcmFj
ayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QmFja1RyYWNrSW5mb0JhY2tSZWZlcmVuY2UqPihjb250ZXh0
LT5mcmFtZSArIHRlcm0uZnJhbWVMb2NhdGlvbik7CiAKICAgICAgICAgdW5zaWduZWQgbWF0Y2hC
ZWdpbiA9IG91dHB1dFsodGVybS5hdG9tLnN1YnBhdHRlcm5JZCA8PCAxKV07CkBAIC03NDAsMTIg
Kzc0MCwxMiBAQCBjbGFzcyBJbnRlcnByZXRlciB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICAgICAgc3dpdGNoICh0ZXJtLmF0b20ucXVhbnRpdHlUeXBlKSB7Ci0gICAgICAgIGNh
c2UgUXVhbnRpZmllckZpeGVkQ291bnQ6CisgICAgICAgIGNhc2UgUXVhbnRpZmllclR5cGU6OkZp
eGVkQ291bnQ6CiAgICAgICAgICAgICAvLyBmb3IgcXVhbnRpdHlNYXhDb3VudCA9PSAxLCBjb3Vs
ZCByZXdpbmQuCiAgICAgICAgICAgICBpbnB1dC5zZXRQb3MoYmFja1RyYWNrLT5iZWdpbik7CiAg
ICAgICAgICAgICBicmVhazsKIAotICAgICAgICBjYXNlIFF1YW50aWZpZXJHcmVlZHk6CisgICAg
ICAgIGNhc2UgUXVhbnRpZmllclR5cGU6OkdyZWVkeToKICAgICAgICAgICAgIGlmIChiYWNrVHJh
Y2stPm1hdGNoQW1vdW50KSB7CiAgICAgICAgICAgICAgICAgLS1iYWNrVHJhY2stPm1hdGNoQW1v
dW50OwogICAgICAgICAgICAgICAgIGlucHV0LnJld2luZChtYXRjaEVuZCAtIG1hdGNoQmVnaW4p
OwpAQCAtNzUzLDcgKzc1Myw3IEBAIGNsYXNzIEludGVycHJldGVyIHsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGNhc2UgUXVhbnRpZmllck5vbkdyZWVkeToK
KyAgICAgICAgY2FzZSBRdWFudGlmaWVyVHlwZTo6Tm9uR3JlZWR5OgogICAgICAgICAgICAgaWYg
KChiYWNrVHJhY2stPm1hdGNoQW1vdW50IDwgdGVybS5hdG9tLnF1YW50aXR5TWF4Q291bnQpICYm
IHRyeUNvbnN1bWVCYWNrUmVmZXJlbmNlKG1hdGNoQmVnaW4sIG1hdGNoRW5kLCB0ZXJtLmlucHV0
UG9zaXRpb24pKSB7CiAgICAgICAgICAgICAgICAgKytiYWNrVHJhY2stPm1hdGNoQW1vdW50Owog
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNzg1LDM5ICs3ODUsMzkgQEAgY2xhc3Mg
SW50ZXJwcmV0ZXIgewogICAgICAgICAgICAgUGFyZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRleHQq
IGNvbnRleHQgPSBiYWNrVHJhY2stPmxhc3RDb250ZXh0OwogCiAgICAgICAgICAgICBKU1JlZ0V4
cFJlc3VsdCByZXN1bHQgPSBtYXRjaERpc2p1bmN0aW9uKHRlcm0uYXRvbS5wYXJlbnRoZXNlc0Rp
c2p1bmN0aW9uLCBjb250ZXh0LT5nZXREaXNqdW5jdGlvbkNvbnRleHQodGVybSksIHRydWUpOwot
ICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBKU1JlZ0V4cE1hdGNoKQotICAgICAgICAgICAgICAg
IHJldHVybiBKU1JlZ0V4cE1hdGNoOworICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBKU1JlZ0V4
cFJlc3VsdDo6TWF0Y2gpCisgICAgICAgICAgICAgICAgcmV0dXJuIEpTUmVnRXhwUmVzdWx0OjpN
YXRjaDsKIAogICAgICAgICAgICAgcmVzZXRNYXRjaGVzKHRlcm0sIGNvbnRleHQpOwogICAgICAg
ICAgICAgcG9wUGFyZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRleHQoYmFja1RyYWNrKTsKICAgICAg
ICAgICAgIGZyZWVQYXJlbnRoZXNlc0Rpc2p1bmN0aW9uQ29udGV4dChjb250ZXh0KTsKIAotICAg
ICAgICAgICAgaWYgKHJlc3VsdCAhPSBKU1JlZ0V4cE5vTWF0Y2gpCisgICAgICAgICAgICBpZiAo
cmVzdWx0ICE9IEpTUmVnRXhwUmVzdWx0OjpOb01hdGNoKQogICAgICAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gSlNSZWdFeHBOb01hdGNoOwor
ICAgICAgICByZXR1cm4gSlNSZWdFeHBSZXN1bHQ6Ok5vTWF0Y2g7CiAgICAgfQogCiAgICAgYm9v
bCBtYXRjaFBhcmVudGhlc2VzT25jZUJlZ2luKEJ5dGVUZXJtJiB0ZXJtLCBEaXNqdW5jdGlvbkNv
bnRleHQqIGNvbnRleHQpCiAgICAgewotICAgICAgICBBU1NFUlQodGVybS50eXBlID09IEJ5dGVU
ZXJtOjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUJlZ2luKTsKKyAgICAgICAgQVNTRVJU
KHRlcm0udHlwZSA9PSBCeXRlVGVybTo6VHlwZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUJl
Z2luKTsKICAgICAgICAgQVNTRVJUKHRlcm0uYXRvbS5xdWFudGl0eU1heENvdW50ID09IDEpOwog
CiAgICAgICAgIEJhY2tUcmFja0luZm9QYXJlbnRoZXNlc09uY2UqIGJhY2tUcmFjayA9IHJlaW50
ZXJwcmV0X2Nhc3Q8QmFja1RyYWNrSW5mb1BhcmVudGhlc2VzT25jZSo+KGNvbnRleHQtPmZyYW1l
ICsgdGVybS5mcmFtZUxvY2F0aW9uKTsKIAogICAgICAgICBzd2l0Y2ggKHRlcm0uYXRvbS5xdWFu
dGl0eVR5cGUpIHsKLSAgICAgICAgY2FzZSBRdWFudGlmaWVyR3JlZWR5OiB7CisgICAgICAgIGNh
c2UgUXVhbnRpZmllclR5cGU6OkdyZWVkeTogewogICAgICAgICAgICAgLy8gc2V0IHRoaXMgc3Bl
Y3VsYXRpdmVseTsgaWYgd2UgZ2V0IHRvIHRoZSBwYXJlbnMgZW5kIHRoaXMgd2lsbCBiZSB0cnVl
LgogICAgICAgICAgICAgYmFja1RyYWNrLT5iZWdpbiA9IGlucHV0LmdldFBvcygpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBRdWFudGlmaWVyTm9uR3JlZWR5
OiB7CisgICAgICAgIGNhc2UgUXVhbnRpZmllclR5cGU6Ok5vbkdyZWVkeTogewogICAgICAgICAg
ICAgYmFja1RyYWNrLT5iZWdpbiA9IG5vdEZvdW5kOwogICAgICAgICAgICAgY29udGV4dC0+dGVy
bSArPSB0ZXJtLmF0b20ucGFyZW50aGVzZXNXaWR0aDsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgUXVhbnRpZmllckZpeGVkQ291bnQ6CisgICAgICAg
IGNhc2UgUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQ6CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCkBAIC04MzEsNyArODMxLDcgQEAgY2xhc3MgSW50ZXJwcmV0ZXIgewogCiAgICAg
Ym9vbCBtYXRjaFBhcmVudGhlc2VzT25jZUVuZChCeXRlVGVybSYgdGVybSwgRGlzanVuY3Rpb25D
b250ZXh0KiBjb250ZXh0KQogICAgIHsKLSAgICAgICAgQVNTRVJUKHRlcm0udHlwZSA9PSBCeXRl
VGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVybk9uY2VFbmQpOworICAgICAgICBBU1NFUlQo
dGVybS50eXBlID09IEJ5dGVUZXJtOjpUeXBlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm5PbmNlRW5k
KTsKICAgICAgICAgQVNTRVJUKHRlcm0uYXRvbS5xdWFudGl0eU1heENvdW50ID09IDEpOwogCiAg
ICAgICAgIGlmICh0ZXJtLmNhcHR1cmUoKSkgewpAQCAtODM5LDcgKzgzOSw3IEBAIGNsYXNzIElu
dGVycHJldGVyIHsKICAgICAgICAgICAgIG91dHB1dFsoc3VicGF0dGVybklkIDw8IDEpICsgMV0g
PSBpbnB1dC5nZXRQb3MoKSAtIHRlcm0uaW5wdXRQb3NpdGlvbjsKICAgICAgICAgfQogCi0gICAg
ICAgIGlmICh0ZXJtLmF0b20ucXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJGaXhlZENvdW50KQor
ICAgICAgICBpZiAodGVybS5hdG9tLnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyVHlwZTo6Rml4
ZWRDb3VudCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgICAgIEJhY2tUcmFja0lu
Zm9QYXJlbnRoZXNlc09uY2UqIGJhY2tUcmFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QmFja1RyYWNr
SW5mb1BhcmVudGhlc2VzT25jZSo+KGNvbnRleHQtPmZyYW1lICsgdGVybS5mcmFtZUxvY2F0aW9u
KTsKQEAgLTg0OCw3ICs4NDgsNyBAQCBjbGFzcyBJbnRlcnByZXRlciB7CiAKICAgICBib29sIGJh
Y2t0cmFja1BhcmVudGhlc2VzT25jZUJlZ2luKEJ5dGVUZXJtJiB0ZXJtLCBEaXNqdW5jdGlvbkNv
bnRleHQqIGNvbnRleHQpCiAgICAgewotICAgICAgICBBU1NFUlQodGVybS50eXBlID09IEJ5dGVU
ZXJtOjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUJlZ2luKTsKKyAgICAgICAgQVNTRVJU
KHRlcm0udHlwZSA9PSBCeXRlVGVybTo6VHlwZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUJl
Z2luKTsKICAgICAgICAgQVNTRVJUKHRlcm0uYXRvbS5xdWFudGl0eU1heENvdW50ID09IDEpOwog
CiAgICAgICAgIEJhY2tUcmFja0luZm9QYXJlbnRoZXNlc09uY2UqIGJhY2tUcmFjayA9IHJlaW50
ZXJwcmV0X2Nhc3Q8QmFja1RyYWNrSW5mb1BhcmVudGhlc2VzT25jZSo+KGNvbnRleHQtPmZyYW1l
ICsgdGVybS5mcmFtZUxvY2F0aW9uKTsKQEAgLTg2MCwxNiArODYwLDE2IEBAIGNsYXNzIEludGVy
cHJldGVyIHsKICAgICAgICAgfQogCiAgICAgICAgIHN3aXRjaCAodGVybS5hdG9tLnF1YW50aXR5
VHlwZSkgewotICAgICAgICBjYXNlIFF1YW50aWZpZXJHcmVlZHk6CisgICAgICAgIGNhc2UgUXVh
bnRpZmllclR5cGU6OkdyZWVkeToKICAgICAgICAgICAgIC8vIGlmIHdlIGJhY2t0cmFjayB0byB0
aGlzIHBvaW50LCB0aGVyZSBpcyBhbm90aGVyIGNoYW5jZSAtIHRyeSBtYXRjaGluZyBub3RoaW5n
LgogICAgICAgICAgICAgQVNTRVJUKGJhY2tUcmFjay0+YmVnaW4gIT0gbm90Rm91bmQpOwogICAg
ICAgICAgICAgYmFja1RyYWNrLT5iZWdpbiA9IG5vdEZvdW5kOwogICAgICAgICAgICAgY29udGV4
dC0+dGVybSArPSB0ZXJtLmF0b20ucGFyZW50aGVzZXNXaWR0aDsKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICBjYXNlIFF1YW50aWZpZXJOb25HcmVlZHk6CisgICAgICAgIGNhc2Ug
UXVhbnRpZmllclR5cGU6Ok5vbkdyZWVkeToKICAgICAgICAgICAgIEFTU0VSVChiYWNrVHJhY2st
PmJlZ2luICE9IG5vdEZvdW5kKTsKICAgICAgICAgICAgIEZBTExUSFJPVUdIOwotICAgICAgICBj
YXNlIFF1YW50aWZpZXJGaXhlZENvdW50OgorICAgICAgICBjYXNlIFF1YW50aWZpZXJUeXBlOjpG
aXhlZENvdW50OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtODc4LDI2ICs4
NzgsMjYgQEAgY2xhc3MgSW50ZXJwcmV0ZXIgewogCiAgICAgYm9vbCBiYWNrdHJhY2tQYXJlbnRo
ZXNlc09uY2VFbmQoQnl0ZVRlcm0mIHRlcm0sIERpc2p1bmN0aW9uQ29udGV4dCogY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIEFTU0VSVCh0ZXJtLnR5cGUgPT0gQnl0ZVRlcm06OlR5cGVQYXJlbnRo
ZXNlc1N1YnBhdHRlcm5PbmNlRW5kKTsKKyAgICAgICAgQVNTRVJUKHRlcm0udHlwZSA9PSBCeXRl
VGVybTo6VHlwZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUVuZCk7CiAgICAgICAgIEFTU0VS
VCh0ZXJtLmF0b20ucXVhbnRpdHlNYXhDb3VudCA9PSAxKTsKIAogICAgICAgICBCYWNrVHJhY2tJ
bmZvUGFyZW50aGVzZXNPbmNlKiBiYWNrVHJhY2sgPSByZWludGVycHJldF9jYXN0PEJhY2tUcmFj
a0luZm9QYXJlbnRoZXNlc09uY2UqPihjb250ZXh0LT5mcmFtZSArIHRlcm0uZnJhbWVMb2NhdGlv
bik7CiAKICAgICAgICAgc3dpdGNoICh0ZXJtLmF0b20ucXVhbnRpdHlUeXBlKSB7Ci0gICAgICAg
IGNhc2UgUXVhbnRpZmllckdyZWVkeToKKyAgICAgICAgY2FzZSBRdWFudGlmaWVyVHlwZTo6R3Jl
ZWR5OgogICAgICAgICAgICAgaWYgKGJhY2tUcmFjay0+YmVnaW4gPT0gbm90Rm91bmQpIHsKICAg
ICAgICAgICAgICAgICBjb250ZXh0LT50ZXJtIC09IHRlcm0uYXRvbS5wYXJlbnRoZXNlc1dpZHRo
OwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIEZBTExUSFJPVUdIOwotICAgICAgICBjYXNlIFF1YW50aWZpZXJOb25HcmVlZHk6CisgICAg
ICAgIGNhc2UgUXVhbnRpZmllclR5cGU6Ok5vbkdyZWVkeToKICAgICAgICAgICAgIGlmIChiYWNr
VHJhY2stPmJlZ2luID09IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICAgICAgYmFja1RyYWNrLT5i
ZWdpbiA9IGlucHV0LmdldFBvcygpOwogICAgICAgICAgICAgICAgIGlmICh0ZXJtLmNhcHR1cmUo
KSkgewogICAgICAgICAgICAgICAgICAgICAvLyBUZWNobmljYWxseSB0aGlzIGFjY2VzcyB0byBp
bnB1dFBvc2l0aW9uIHNob3VsZCBiZSBhY2Nlc3NpbmcgdGhlIGJlZ2luIHRlcm0ncwogICAgICAg
ICAgICAgICAgICAgICAvLyBpbnB1dFBvc2l0aW9uLCBidXQgZm9yIHJlcGVhdHMgb3RoZXIgdGhh
biBmaXhlZCB0aGVzZSB2YWx1ZXMgc2hvdWxkIGJlCiAgICAgICAgICAgICAgICAgICAgIC8vIHRo
ZSBzYW1lIGFueXdheSEgKFdlIGRvbid0IHByZS1jaGVjayBmb3IgZ3JlZWR5IG9yIG5vbi1ncmVl
ZHkgbWF0Y2hlcy4pCi0gICAgICAgICAgICAgICAgICAgIEFTU0VSVCgoJnRlcm0gLSB0ZXJtLmF0
b20ucGFyZW50aGVzZXNXaWR0aCktPnR5cGUgPT0gQnl0ZVRlcm06OlR5cGVQYXJlbnRoZXNlc1N1
YnBhdHRlcm5PbmNlQmVnaW4pOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoKCZ0ZXJtIC0g
dGVybS5hdG9tLnBhcmVudGhlc2VzV2lkdGgpLT50eXBlID09IEJ5dGVUZXJtOjpUeXBlOjpQYXJl
bnRoZXNlc1N1YnBhdHRlcm5PbmNlQmVnaW4pOwogICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
KCZ0ZXJtIC0gdGVybS5hdG9tLnBhcmVudGhlc2VzV2lkdGgpLT5pbnB1dFBvc2l0aW9uID09IHRl
cm0uaW5wdXRQb3NpdGlvbik7CiAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHN1YnBhdHRl
cm5JZCA9IHRlcm0uYXRvbS5zdWJwYXR0ZXJuSWQ7CiAgICAgICAgICAgICAgICAgICAgIG91dHB1
dFtzdWJwYXR0ZXJuSWQgPDwgMV0gPSBpbnB1dC5nZXRQb3MoKSAtIHRlcm0uaW5wdXRQb3NpdGlv
bjsKQEAgLTkwNiw3ICs5MDYsNyBAQCBjbGFzcyBJbnRlcnByZXRlciB7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBGQUxMVEhST1VHSDsK
LSAgICAgICAgY2FzZSBRdWFudGlmaWVyRml4ZWRDb3VudDoKKyAgICAgICAgY2FzZSBRdWFudGlm
aWVyVHlwZTo6Rml4ZWRDb3VudDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAg
LTkxNSw4ICs5MTUsOCBAQCBjbGFzcyBJbnRlcnByZXRlciB7CiAKICAgICBib29sIG1hdGNoUGFy
ZW50aGVzZXNUZXJtaW5hbEJlZ2luKEJ5dGVUZXJtJiB0ZXJtLCBEaXNqdW5jdGlvbkNvbnRleHQq
IGNvbnRleHQpCiAgICAgewotICAgICAgICBBU1NFUlQodGVybS50eXBlID09IEJ5dGVUZXJtOjpU
eXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuVGVybWluYWxCZWdpbik7Ci0gICAgICAgIEFTU0VSVCh0
ZXJtLmF0b20ucXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJHcmVlZHkpOworICAgICAgICBBU1NF
UlQodGVybS50eXBlID09IEJ5dGVUZXJtOjpUeXBlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJt
aW5hbEJlZ2luKTsKKyAgICAgICAgQVNTRVJUKHRlcm0uYXRvbS5xdWFudGl0eVR5cGUgPT0gUXVh
bnRpZmllclR5cGU6OkdyZWVkeSk7CiAgICAgICAgIEFTU0VSVCh0ZXJtLmF0b20ucXVhbnRpdHlN
YXhDb3VudCA9PSBxdWFudGlmeUluZmluaXRlKTsKICAgICAgICAgQVNTRVJUKCF0ZXJtLmNhcHR1
cmUoKSk7CiAKQEAgLTkyNyw3ICs5MjcsNyBAQCBjbGFzcyBJbnRlcnByZXRlciB7CiAKICAgICBi
b29sIG1hdGNoUGFyZW50aGVzZXNUZXJtaW5hbEVuZChCeXRlVGVybSYgdGVybSwgRGlzanVuY3Rp
b25Db250ZXh0KiBjb250ZXh0KQogICAgIHsKLSAgICAgICAgQVNTRVJUKHRlcm0udHlwZSA9PSBC
eXRlVGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVyblRlcm1pbmFsRW5kKTsKKyAgICAgICAg
QVNTRVJUKHRlcm0udHlwZSA9PSBCeXRlVGVybTo6VHlwZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJu
VGVybWluYWxFbmQpOwogCiAgICAgICAgIEJhY2tUcmFja0luZm9QYXJlbnRoZXNlc1Rlcm1pbmFs
KiBiYWNrVHJhY2sgPSByZWludGVycHJldF9jYXN0PEJhY2tUcmFja0luZm9QYXJlbnRoZXNlc1Rl
cm1pbmFsKj4oY29udGV4dC0+ZnJhbWUgKyB0ZXJtLmZyYW1lTG9jYXRpb24pOwogICAgICAgICAv
LyBFbXB0eSBtYXRjaCBpcyBhIGZhaWxlZCBtYXRjaC4KQEAgLTk0MSw4ICs5NDEsOCBAQCBjbGFz
cyBJbnRlcnByZXRlciB7CiAKICAgICBib29sIGJhY2t0cmFja1BhcmVudGhlc2VzVGVybWluYWxC
ZWdpbihCeXRlVGVybSYgdGVybSwgRGlzanVuY3Rpb25Db250ZXh0KiBjb250ZXh0KQogICAgIHsK
LSAgICAgICAgQVNTRVJUKHRlcm0udHlwZSA9PSBCeXRlVGVybTo6VHlwZVBhcmVudGhlc2VzU3Vi
cGF0dGVyblRlcm1pbmFsQmVnaW4pOwotICAgICAgICBBU1NFUlQodGVybS5hdG9tLnF1YW50aXR5
VHlwZSA9PSBRdWFudGlmaWVyR3JlZWR5KTsKKyAgICAgICAgQVNTRVJUKHRlcm0udHlwZSA9PSBC
eXRlVGVybTo6VHlwZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuVGVybWluYWxCZWdpbik7CisgICAg
ICAgIEFTU0VSVCh0ZXJtLmF0b20ucXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJUeXBlOjpHcmVl
ZHkpOwogICAgICAgICBBU1NFUlQodGVybS5hdG9tLnF1YW50aXR5TWF4Q291bnQgPT0gcXVhbnRp
ZnlJbmZpbml0ZSk7CiAgICAgICAgIEFTU0VSVCghdGVybS5jYXB0dXJlKCkpOwogCkBAIC05NjIs
NyArOTYyLDcgQEAgY2xhc3MgSW50ZXJwcmV0ZXIgewogCiAgICAgYm9vbCBtYXRjaFBhcmVudGhl
dGljYWxBc3NlcnRpb25CZWdpbihCeXRlVGVybSYgdGVybSwgRGlzanVuY3Rpb25Db250ZXh0KiBj
b250ZXh0KQogICAgIHsKLSAgICAgICAgQVNTRVJUKHRlcm0udHlwZSA9PSBCeXRlVGVybTo6VHlw
ZVBhcmVudGhldGljYWxBc3NlcnRpb25CZWdpbik7CisgICAgICAgIEFTU0VSVCh0ZXJtLnR5cGUg
PT0gQnl0ZVRlcm06OlR5cGU6OlBhcmVudGhldGljYWxBc3NlcnRpb25CZWdpbik7CiAgICAgICAg
IEFTU0VSVCh0ZXJtLmF0b20ucXVhbnRpdHlNYXhDb3VudCA9PSAxKTsKIAogICAgICAgICBCYWNr
VHJhY2tJbmZvUGFyZW50aGV0aWNhbEFzc2VydGlvbiogYmFja1RyYWNrID0gcmVpbnRlcnByZXRf
Y2FzdDxCYWNrVHJhY2tJbmZvUGFyZW50aGV0aWNhbEFzc2VydGlvbio+KGNvbnRleHQtPmZyYW1l
ICsgdGVybS5mcmFtZUxvY2F0aW9uKTsKQEAgLTk3Myw3ICs5NzMsNyBAQCBjbGFzcyBJbnRlcnBy
ZXRlciB7CiAKICAgICBib29sIG1hdGNoUGFyZW50aGV0aWNhbEFzc2VydGlvbkVuZChCeXRlVGVy
bSYgdGVybSwgRGlzanVuY3Rpb25Db250ZXh0KiBjb250ZXh0KQogICAgIHsKLSAgICAgICAgQVNT
RVJUKHRlcm0udHlwZSA9PSBCeXRlVGVybTo6VHlwZVBhcmVudGhldGljYWxBc3NlcnRpb25FbmQp
OworICAgICAgICBBU1NFUlQodGVybS50eXBlID09IEJ5dGVUZXJtOjpUeXBlOjpQYXJlbnRoZXRp
Y2FsQXNzZXJ0aW9uRW5kKTsKICAgICAgICAgQVNTRVJUKHRlcm0uYXRvbS5xdWFudGl0eU1heENv
dW50ID09IDEpOwogCiAgICAgICAgIEJhY2tUcmFja0luZm9QYXJlbnRoZXRpY2FsQXNzZXJ0aW9u
KiBiYWNrVHJhY2sgPSByZWludGVycHJldF9jYXN0PEJhY2tUcmFja0luZm9QYXJlbnRoZXRpY2Fs
QXNzZXJ0aW9uKj4oY29udGV4dC0+ZnJhbWUgKyB0ZXJtLmZyYW1lTG9jYXRpb24pOwpAQCAtOTkx
LDcgKzk5MSw3IEBAIGNsYXNzIEludGVycHJldGVyIHsKIAogICAgIGJvb2wgYmFja3RyYWNrUGFy
ZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luKEJ5dGVUZXJtJiB0ZXJtLCBEaXNqdW5jdGlvbkNvbnRl
eHQqIGNvbnRleHQpCiAgICAgewotICAgICAgICBBU1NFUlQodGVybS50eXBlID09IEJ5dGVUZXJt
OjpUeXBlUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luKTsKKyAgICAgICAgQVNTRVJUKHRlcm0u
dHlwZSA9PSBCeXRlVGVybTo6VHlwZTo6UGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luKTsKICAg
ICAgICAgQVNTRVJUKHRlcm0uYXRvbS5xdWFudGl0eU1heENvdW50ID09IDEpOwogCiAgICAgICAg
IC8vIFdlJ3ZlIGZhaWxlZCB0byBtYXRjaCBwYXJlbnM7IGlmIHRoZXkgYXJlIGludmVydGVkLCB0
aGlzIGlzIHdpbiEKQEAgLTEwMDUsNyArMTAwNSw3IEBAIGNsYXNzIEludGVycHJldGVyIHsKIAog
ICAgIGJvb2wgYmFja3RyYWNrUGFyZW50aGV0aWNhbEFzc2VydGlvbkVuZChCeXRlVGVybSYgdGVy
bSwgRGlzanVuY3Rpb25Db250ZXh0KiBjb250ZXh0KQogICAgIHsKLSAgICAgICAgQVNTRVJUKHRl
cm0udHlwZSA9PSBCeXRlVGVybTo6VHlwZVBhcmVudGhldGljYWxBc3NlcnRpb25FbmQpOworICAg
ICAgICBBU1NFUlQodGVybS50eXBlID09IEJ5dGVUZXJtOjpUeXBlOjpQYXJlbnRoZXRpY2FsQXNz
ZXJ0aW9uRW5kKTsKICAgICAgICAgQVNTRVJUKHRlcm0uYXRvbS5xdWFudGl0eU1heENvdW50ID09
IDEpOwogCiAgICAgICAgIEJhY2tUcmFja0luZm9QYXJlbnRoZXRpY2FsQXNzZXJ0aW9uKiBiYWNr
VHJhY2sgPSByZWludGVycHJldF9jYXN0PEJhY2tUcmFja0luZm9QYXJlbnRoZXRpY2FsQXNzZXJ0
aW9uKj4oY29udGV4dC0+ZnJhbWUgKyB0ZXJtLmZyYW1lTG9jYXRpb24pOwpAQCAtMTAxOCw3ICsx
MDE4LDcgQEAgY2xhc3MgSW50ZXJwcmV0ZXIgewogCiAgICAgSlNSZWdFeHBSZXN1bHQgbWF0Y2hQ
YXJlbnRoZXNlcyhCeXRlVGVybSYgdGVybSwgRGlzanVuY3Rpb25Db250ZXh0KiBjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgQVNTRVJUKHRlcm0udHlwZSA9PSBCeXRlVGVybTo6VHlwZVBhcmVudGhl
c2VzU3VicGF0dGVybik7CisgICAgICAgIEFTU0VSVCh0ZXJtLnR5cGUgPT0gQnl0ZVRlcm06OlR5
cGU6OlBhcmVudGhlc2VzU3VicGF0dGVybik7CiAKICAgICAgICAgQmFja1RyYWNrSW5mb1BhcmVu
dGhlc2VzKiBiYWNrVHJhY2sgPSByZWludGVycHJldF9jYXN0PEJhY2tUcmFja0luZm9QYXJlbnRo
ZXNlcyo+KGNvbnRleHQtPmZyYW1lICsgdGVybS5mcmFtZUxvY2F0aW9uKTsKICAgICAgICAgQnl0
ZURpc2p1bmN0aW9uKiBkaXNqdW5jdGlvbkJvZHkgPSB0ZXJtLmF0b20ucGFyZW50aGVzZXNEaXNq
dW5jdGlvbjsKQEAgLTEwMjcsNyArMTAyNyw3IEBAIGNsYXNzIEludGVycHJldGVyIHsKICAgICAg
ICAgYmFja1RyYWNrLT5tYXRjaEFtb3VudCA9IDA7CiAgICAgICAgIGJhY2tUcmFjay0+bGFzdENv
bnRleHQgPSBudWxscHRyOwogCi0gICAgICAgIEFTU0VSVCh0ZXJtLmF0b20ucXVhbnRpdHlUeXBl
ICE9IFF1YW50aWZpZXJGaXhlZENvdW50IHx8IHRlcm0uYXRvbS5xdWFudGl0eU1pbkNvdW50ID09
IHRlcm0uYXRvbS5xdWFudGl0eU1heENvdW50KTsKKyAgICAgICAgQVNTRVJUKHRlcm0uYXRvbS5x
dWFudGl0eVR5cGUgIT0gUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQgfHwgdGVybS5hdG9tLnF1
YW50aXR5TWluQ291bnQgPT0gdGVybS5hdG9tLnF1YW50aXR5TWF4Q291bnQpOwogCiAgICAgICAg
IHVuc2lnbmVkIG1pbmltdW1NYXRjaENvdW50ID0gdGVybS5hdG9tLnF1YW50aXR5TWluQ291bnQ7
CiAgICAgICAgIEpTUmVnRXhwUmVzdWx0IGZpeGVkTWF0Y2hSZXN1bHQ7CkBAIC0xMDM5LDE3ICsx
MDM5LDE3IEBAIGNsYXNzIEludGVycHJldGVyIHsKICAgICAgICAgICAgICAgICAvLyBUcnkgdG8g
ZG8gYSBtYXRjaCwgYW5kIGl0IGl0IHN1Y2NlZWRzLCBhZGQgaXQgdG8gdGhlIGxpc3QuCiAgICAg
ICAgICAgICAgICAgUGFyZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRleHQqIGNvbnRleHQgPSBhbGxv
Y1BhcmVudGhlc2VzRGlzanVuY3Rpb25Db250ZXh0KGRpc2p1bmN0aW9uQm9keSwgb3V0cHV0LCB0
ZXJtKTsKICAgICAgICAgICAgICAgICBmaXhlZE1hdGNoUmVzdWx0ID0gbWF0Y2hEaXNqdW5jdGlv
bihkaXNqdW5jdGlvbkJvZHksIGNvbnRleHQtPmdldERpc2p1bmN0aW9uQ29udGV4dCh0ZXJtKSk7
Ci0gICAgICAgICAgICAgICAgaWYgKGZpeGVkTWF0Y2hSZXN1bHQgPT0gSlNSZWdFeHBNYXRjaCkK
KyAgICAgICAgICAgICAgICBpZiAoZml4ZWRNYXRjaFJlc3VsdCA9PSBKU1JlZ0V4cFJlc3VsdDo6
TWF0Y2gpCiAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFBhcmVudGhlc2VzRGlzanVuY3Rpb25D
b250ZXh0KGJhY2tUcmFjaywgY29udGV4dCk7CiAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICAgICAgICAgIC8vIFRoZSBtYXRjaCBmYWlsZWQ7IHRyeSB0byBmaW5kIGFuIGFsdGVy
bmF0ZSBwb2ludCB0byBjYXJyeSBvbiBmcm9tLgogICAgICAgICAgICAgICAgICAgICByZXNldE1h
dGNoZXModGVybSwgY29udGV4dCk7CiAgICAgICAgICAgICAgICAgICAgIGZyZWVQYXJlbnRoZXNl
c0Rpc2p1bmN0aW9uQ29udGV4dChjb250ZXh0KTsKICAgICAgICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgICAgIGlmIChmaXhlZE1hdGNoUmVzdWx0ICE9IEpTUmVnRXhwTm9NYXRjaCkK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGZpeGVkTWF0Y2hSZXN1bHQgIT0gSlNSZWdFeHBSZXN1
bHQ6Ok5vTWF0Y2gpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZml4ZWRNYXRjaFJl
c3VsdDsKICAgICAgICAgICAgICAgICAgICAgSlNSZWdFeHBSZXN1bHQgYmFja3RyYWNrUmVzdWx0
ID0gcGFyZW50aGVzZXNEb0JhY2t0cmFjayh0ZXJtLCBiYWNrVHJhY2spOwotICAgICAgICAgICAg
ICAgICAgICBpZiAoYmFja3RyYWNrUmVzdWx0ICE9IEpTUmVnRXhwTWF0Y2gpCisgICAgICAgICAg
ICAgICAgICAgIGlmIChiYWNrdHJhY2tSZXN1bHQgIT0gSlNSZWdFeHBSZXN1bHQ6Ok1hdGNoKQog
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJhY2t0cmFja1Jlc3VsdDsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0xMDU5LDIyICsxMDU5LDIyIEBAIGNsYXNzIElu
dGVycHJldGVyIHsKICAgICAgICAgfQogCiAgICAgICAgIHN3aXRjaCAodGVybS5hdG9tLnF1YW50
aXR5VHlwZSkgewotICAgICAgICBjYXNlIFF1YW50aWZpZXJGaXhlZENvdW50OiB7CisgICAgICAg
IGNhc2UgUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQ6IHsKICAgICAgICAgICAgIEFTU0VSVChi
YWNrVHJhY2stPm1hdGNoQW1vdW50ID09IHRlcm0uYXRvbS5xdWFudGl0eU1heENvdW50KTsKLSAg
ICAgICAgICAgIHJldHVybiBKU1JlZ0V4cE1hdGNoOworICAgICAgICAgICAgcmV0dXJuIEpTUmVn
RXhwUmVzdWx0OjpNYXRjaDsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2UgUXVhbnRpZmllckdy
ZWVkeTogeworICAgICAgICBjYXNlIFF1YW50aWZpZXJUeXBlOjpHcmVlZHk6IHsKICAgICAgICAg
ICAgIHdoaWxlIChiYWNrVHJhY2stPm1hdGNoQW1vdW50IDwgdGVybS5hdG9tLnF1YW50aXR5TWF4
Q291bnQpIHsKICAgICAgICAgICAgICAgICBQYXJlbnRoZXNlc0Rpc2p1bmN0aW9uQ29udGV4dCog
Y29udGV4dCA9IGFsbG9jUGFyZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRleHQoZGlzanVuY3Rpb25C
b2R5LCBvdXRwdXQsIHRlcm0pOwogICAgICAgICAgICAgICAgIEpTUmVnRXhwUmVzdWx0IHJlc3Vs
dCA9IG1hdGNoTm9uWmVyb0Rpc2p1bmN0aW9uKGRpc2p1bmN0aW9uQm9keSwgY29udGV4dC0+Z2V0
RGlzanVuY3Rpb25Db250ZXh0KHRlcm0pKTsKLSAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09
IEpTUmVnRXhwTWF0Y2gpCisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBKU1JlZ0V4cFJl
c3VsdDo6TWF0Y2gpCiAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFBhcmVudGhlc2VzRGlzanVu
Y3Rpb25Db250ZXh0KGJhY2tUcmFjaywgY29udGV4dCk7CiAgICAgICAgICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICAgICAgICAgIHJlc2V0TWF0Y2hlcyh0ZXJtLCBjb250ZXh0KTsKICAgICAg
ICAgICAgICAgICAgICAgZnJlZVBhcmVudGhlc2VzRGlzanVuY3Rpb25Db250ZXh0KGNvbnRleHQp
OwogCi0gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gSlNSZWdFeHBOb01hdGNoKQor
ICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IEpTUmVnRXhwUmVzdWx0OjpOb01hdGNo
KQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKQEAgLTEwODUsMTUgKzEwODUsMTUgQEAgY2xhc3MgSW50ZXJwcmV0ZXIg
ewogICAgICAgICAgICAgICAgIFBhcmVudGhlc2VzRGlzanVuY3Rpb25Db250ZXh0KiBjb250ZXh0
ID0gYmFja1RyYWNrLT5sYXN0Q29udGV4dDsKICAgICAgICAgICAgICAgICByZWNvcmRQYXJlbnRo
ZXNlc01hdGNoKHRlcm0sIGNvbnRleHQpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0
dXJuIEpTUmVnRXhwTWF0Y2g7CisgICAgICAgICAgICByZXR1cm4gSlNSZWdFeHBSZXN1bHQ6Ok1h
dGNoOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBRdWFudGlmaWVyTm9uR3JlZWR5OgotICAg
ICAgICAgICAgcmV0dXJuIEpTUmVnRXhwTWF0Y2g7CisgICAgICAgIGNhc2UgUXVhbnRpZmllclR5
cGU6Ok5vbkdyZWVkeToKKyAgICAgICAgICAgIHJldHVybiBKU1JlZ0V4cFJlc3VsdDo6TWF0Y2g7
CiAgICAgICAgIH0KIAogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICByZXR1cm4gSlNSZWdFeHBFcnJvck5vTWF0Y2g7CisgICAgICAgIHJldHVybiBKU1JlZ0V4
cFJlc3VsdDo6RXJyb3JOb01hdGNoOwogICAgIH0KIAogICAgIC8vIFJ1bGVzIGZvciBiYWNrdHJh
Y2tpbmcgZGlmZmVyIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoaXMgaXMgZ3JlZWR5IG9yIG5vbi1n
cmVlZHkuCkBAIC0xMTA4LDE5ICsxMTA4LDE5IEBAIGNsYXNzIEludGVycHJldGVyIHsKICAgICAv
LwogICAgIEpTUmVnRXhwUmVzdWx0IGJhY2t0cmFja1BhcmVudGhlc2VzKEJ5dGVUZXJtJiB0ZXJt
LCBEaXNqdW5jdGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgewotICAgICAgICBBU1NFUlQodGVy
bS50eXBlID09IEJ5dGVUZXJtOjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuKTsKKyAgICAgICAg
QVNTRVJUKHRlcm0udHlwZSA9PSBCeXRlVGVybTo6VHlwZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJu
KTsKIAogICAgICAgICBCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXMqIGJhY2tUcmFjayA9IHJlaW50
ZXJwcmV0X2Nhc3Q8QmFja1RyYWNrSW5mb1BhcmVudGhlc2VzKj4oY29udGV4dC0+ZnJhbWUgKyB0
ZXJtLmZyYW1lTG9jYXRpb24pOwogICAgICAgICBCeXRlRGlzanVuY3Rpb24qIGRpc2p1bmN0aW9u
Qm9keSA9IHRlcm0uYXRvbS5wYXJlbnRoZXNlc0Rpc2p1bmN0aW9uOwogCiAgICAgICAgIHN3aXRj
aCAodGVybS5hdG9tLnF1YW50aXR5VHlwZSkgewotICAgICAgICBjYXNlIFF1YW50aWZpZXJGaXhl
ZENvdW50OiB7CisgICAgICAgIGNhc2UgUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQ6IHsKICAg
ICAgICAgICAgIEFTU0VSVChiYWNrVHJhY2stPm1hdGNoQW1vdW50ID09IHRlcm0uYXRvbS5xdWFu
dGl0eU1heENvdW50KTsKIAogICAgICAgICAgICAgUGFyZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRl
eHQqIGNvbnRleHQgPSBudWxscHRyOwogICAgICAgICAgICAgSlNSZWdFeHBSZXN1bHQgcmVzdWx0
ID0gcGFyZW50aGVzZXNEb0JhY2t0cmFjayh0ZXJtLCBiYWNrVHJhY2spOwogCi0gICAgICAgICAg
ICBpZiAocmVzdWx0ICE9IEpTUmVnRXhwTWF0Y2gpCisgICAgICAgICAgICBpZiAocmVzdWx0ICE9
IEpTUmVnRXhwUmVzdWx0OjpNYXRjaCkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owog
CiAgICAgICAgICAgICAvLyBXaGlsZSB3ZSBoYXZlbid0IHlldCByZWFjaGVkIG91ciBmaXhlZCBs
aW1pdCwKQEAgLTExMjksMTcgKzExMjksMTcgQEAgY2xhc3MgSW50ZXJwcmV0ZXIgewogICAgICAg
ICAgICAgICAgIGNvbnRleHQgPSBhbGxvY1BhcmVudGhlc2VzRGlzanVuY3Rpb25Db250ZXh0KGRp
c2p1bmN0aW9uQm9keSwgb3V0cHV0LCB0ZXJtKTsKICAgICAgICAgICAgICAgICByZXN1bHQgPSBt
YXRjaERpc2p1bmN0aW9uKGRpc2p1bmN0aW9uQm9keSwgY29udGV4dC0+Z2V0RGlzanVuY3Rpb25D
b250ZXh0KHRlcm0pKTsKIAotICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gSlNSZWdFeHBN
YXRjaCkKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IEpTUmVnRXhwUmVzdWx0OjpNYXRj
aCkKICAgICAgICAgICAgICAgICAgICAgYXBwZW5kUGFyZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRl
eHQoYmFja1RyYWNrLCBjb250ZXh0KTsKICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgICAgICAgICAgLy8gVGhlIG1hdGNoIGZhaWxlZDsgdHJ5IHRvIGZpbmQgYW4gYWx0ZXJuYXRl
IHBvaW50IHRvIGNhcnJ5IG9uIGZyb20uCiAgICAgICAgICAgICAgICAgICAgIHJlc2V0TWF0Y2hl
cyh0ZXJtLCBjb250ZXh0KTsKICAgICAgICAgICAgICAgICAgICAgZnJlZVBhcmVudGhlc2VzRGlz
anVuY3Rpb25Db250ZXh0KGNvbnRleHQpOwogCi0gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1
bHQgIT0gSlNSZWdFeHBOb01hdGNoKQorICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9
IEpTUmVnRXhwUmVzdWx0OjpOb01hdGNoKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICAgICAgICAgICAgICAgICAgSlNSZWdFeHBSZXN1bHQgYmFja3RyYWNrUmVz
dWx0ID0gcGFyZW50aGVzZXNEb0JhY2t0cmFjayh0ZXJtLCBiYWNrVHJhY2spOwotICAgICAgICAg
ICAgICAgICAgICBpZiAoYmFja3RyYWNrUmVzdWx0ICE9IEpTUmVnRXhwTWF0Y2gpCisgICAgICAg
ICAgICAgICAgICAgIGlmIChiYWNrdHJhY2tSZXN1bHQgIT0gSlNSZWdFeHBSZXN1bHQ6Ok1hdGNo
KQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJhY2t0cmFja1Jlc3VsdDsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0xMTQ3LDI2ICsxMTQ3LDI2IEBAIGNsYXNz
IEludGVycHJldGVyIHsKICAgICAgICAgICAgIEFTU0VSVChiYWNrVHJhY2stPm1hdGNoQW1vdW50
ID09IHRlcm0uYXRvbS5xdWFudGl0eU1heENvdW50KTsKICAgICAgICAgICAgIGNvbnRleHQgPSBi
YWNrVHJhY2stPmxhc3RDb250ZXh0OwogICAgICAgICAgICAgcmVjb3JkUGFyZW50aGVzZXNNYXRj
aCh0ZXJtLCBjb250ZXh0KTsKLSAgICAgICAgICAgIHJldHVybiBKU1JlZ0V4cE1hdGNoOworICAg
ICAgICAgICAgcmV0dXJuIEpTUmVnRXhwUmVzdWx0OjpNYXRjaDsKICAgICAgICAgfQogCi0gICAg
ICAgIGNhc2UgUXVhbnRpZmllckdyZWVkeTogeworICAgICAgICBjYXNlIFF1YW50aWZpZXJUeXBl
OjpHcmVlZHk6IHsKICAgICAgICAgICAgIGlmICghYmFja1RyYWNrLT5tYXRjaEFtb3VudCkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gSlNSZWdFeHBOb01hdGNoOworICAgICAgICAgICAgICAgIHJl
dHVybiBKU1JlZ0V4cFJlc3VsdDo6Tm9NYXRjaDsKIAogICAgICAgICAgICAgUGFyZW50aGVzZXNE
aXNqdW5jdGlvbkNvbnRleHQqIGNvbnRleHQgPSBiYWNrVHJhY2stPmxhc3RDb250ZXh0OwogICAg
ICAgICAgICAgSlNSZWdFeHBSZXN1bHQgcmVzdWx0ID0gbWF0Y2hOb25aZXJvRGlzanVuY3Rpb24o
ZGlzanVuY3Rpb25Cb2R5LCBjb250ZXh0LT5nZXREaXNqdW5jdGlvbkNvbnRleHQodGVybSksIHRy
dWUpOwotICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBKU1JlZ0V4cE1hdGNoKSB7CisgICAgICAg
ICAgICBpZiAocmVzdWx0ID09IEpTUmVnRXhwUmVzdWx0OjpNYXRjaCkgewogICAgICAgICAgICAg
ICAgIHdoaWxlIChiYWNrVHJhY2stPm1hdGNoQW1vdW50IDwgdGVybS5hdG9tLnF1YW50aXR5TWF4
Q291bnQpIHsKICAgICAgICAgICAgICAgICAgICAgUGFyZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRl
eHQqIGNvbnRleHQgPSBhbGxvY1BhcmVudGhlc2VzRGlzanVuY3Rpb25Db250ZXh0KGRpc2p1bmN0
aW9uQm9keSwgb3V0cHV0LCB0ZXJtKTsKICAgICAgICAgICAgICAgICAgICAgSlNSZWdFeHBSZXN1
bHQgcGFyZW50aGVzZXNSZXN1bHQgPSBtYXRjaE5vblplcm9EaXNqdW5jdGlvbihkaXNqdW5jdGlv
bkJvZHksIGNvbnRleHQtPmdldERpc2p1bmN0aW9uQ29udGV4dCh0ZXJtKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChwYXJlbnRoZXNlc1Jlc3VsdCA9PSBKU1JlZ0V4cE1hdGNoKQorICAgICAg
ICAgICAgICAgICAgICBpZiAocGFyZW50aGVzZXNSZXN1bHQgPT0gSlNSZWdFeHBSZXN1bHQ6Ok1h
dGNoKQogICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kUGFyZW50aGVzZXNEaXNqdW5jdGlv
bkNvbnRleHQoYmFja1RyYWNrLCBjb250ZXh0KTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICByZXNldE1hdGNoZXModGVybSwgY29udGV4dCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBmcmVlUGFyZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRleHQo
Y29udGV4dCk7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRoZXNlc1Jlc3Vs
dCAhPSBKU1JlZ0V4cE5vTWF0Y2gpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50
aGVzZXNSZXN1bHQgIT0gSlNSZWdFeHBSZXN1bHQ6Ok5vTWF0Y2gpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHBhcmVudGhlc2VzUmVzdWx0OwogCiAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKQEAgLTExODksNyArMTE4OSw3IEBAIGNsYXNzIEludGVycHJldGVyIHsK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IEpTUmVnRXhwTm9NYXRjaCkKKyAgICAgICAg
ICAgICAgICBpZiAocmVzdWx0ICE9IEpTUmVnRXhwUmVzdWx0OjpOb01hdGNoKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfQogCkBAIC0xMTk3LDI0ICsx
MTk3LDI0IEBAIGNsYXNzIEludGVycHJldGVyIHsKICAgICAgICAgICAgICAgICBQYXJlbnRoZXNl
c0Rpc2p1bmN0aW9uQ29udGV4dCogY29udGV4dCA9IGJhY2tUcmFjay0+bGFzdENvbnRleHQ7CiAg
ICAgICAgICAgICAgICAgcmVjb3JkUGFyZW50aGVzZXNNYXRjaCh0ZXJtLCBjb250ZXh0KTsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBKU1JlZ0V4cE1hdGNoOworICAgICAgICAg
ICAgcmV0dXJuIEpTUmVnRXhwUmVzdWx0OjpNYXRjaDsKICAgICAgICAgfQogCi0gICAgICAgIGNh
c2UgUXVhbnRpZmllck5vbkdyZWVkeTogeworICAgICAgICBjYXNlIFF1YW50aWZpZXJUeXBlOjpO
b25HcmVlZHk6IHsKICAgICAgICAgICAgIC8vIElmIHdlJ3ZlIG5vdCByZWFjaGVkIHRoZSBsaW1p
dCwgdHJ5IHRvIGFkZCBvbmUgbW9yZSBtYXRjaC4KICAgICAgICAgICAgIGlmIChiYWNrVHJhY2st
Pm1hdGNoQW1vdW50IDwgdGVybS5hdG9tLnF1YW50aXR5TWF4Q291bnQpIHsKICAgICAgICAgICAg
ICAgICBQYXJlbnRoZXNlc0Rpc2p1bmN0aW9uQ29udGV4dCogY29udGV4dCA9IGFsbG9jUGFyZW50
aGVzZXNEaXNqdW5jdGlvbkNvbnRleHQoZGlzanVuY3Rpb25Cb2R5LCBvdXRwdXQsIHRlcm0pOwog
ICAgICAgICAgICAgICAgIEpTUmVnRXhwUmVzdWx0IHJlc3VsdCA9IG1hdGNoTm9uWmVyb0Rpc2p1
bmN0aW9uKGRpc2p1bmN0aW9uQm9keSwgY29udGV4dC0+Z2V0RGlzanVuY3Rpb25Db250ZXh0KHRl
cm0pKTsKLSAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IEpTUmVnRXhwTWF0Y2gpIHsKKyAg
ICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IEpTUmVnRXhwUmVzdWx0OjpNYXRjaCkgewogICAg
ICAgICAgICAgICAgICAgICBhcHBlbmRQYXJlbnRoZXNlc0Rpc2p1bmN0aW9uQ29udGV4dChiYWNr
VHJhY2ssIGNvbnRleHQpOwogICAgICAgICAgICAgICAgICAgICByZWNvcmRQYXJlbnRoZXNlc01h
dGNoKHRlcm0sIGNvbnRleHQpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNSZWdFeHBN
YXRjaDsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTUmVnRXhwUmVzdWx0OjpNYXRjaDsK
ICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICByZXNldE1hdGNoZXModGVybSwg
Y29udGV4dCk7CiAgICAgICAgICAgICAgICAgZnJlZVBhcmVudGhlc2VzRGlzanVuY3Rpb25Db250
ZXh0KGNvbnRleHQpOwogCi0gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBKU1JlZ0V4cE5v
TWF0Y2gpCisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBKU1JlZ0V4cFJlc3VsdDo6Tm9N
YXRjaCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0K
IApAQCAtMTIyMiwxMyArMTIyMiwxMyBAQCBjbGFzcyBJbnRlcnByZXRlciB7CiAgICAgICAgICAg
ICB3aGlsZSAoYmFja1RyYWNrLT5tYXRjaEFtb3VudCkgewogICAgICAgICAgICAgICAgIFBhcmVu
dGhlc2VzRGlzanVuY3Rpb25Db250ZXh0KiBjb250ZXh0ID0gYmFja1RyYWNrLT5sYXN0Q29udGV4
dDsKICAgICAgICAgICAgICAgICBKU1JlZ0V4cFJlc3VsdCByZXN1bHQgPSBtYXRjaE5vblplcm9E
aXNqdW5jdGlvbihkaXNqdW5jdGlvbkJvZHksIGNvbnRleHQtPmdldERpc2p1bmN0aW9uQ29udGV4
dCh0ZXJtKSwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBKU1JlZ0V4cE1h
dGNoKSB7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBKU1JlZ0V4cFJlc3VsdDo6TWF0
Y2gpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gc3VjY2Vzc2Z1bCBiYWNrdHJhY2shIHdlJ3Jl
IGJhY2sgaW4gdGhlIGdhbWUhCiAgICAgICAgICAgICAgICAgICAgIGlmIChiYWNrVHJhY2stPm1h
dGNoQW1vdW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0ID0gYmFja1RyYWNr
LT5sYXN0Q29udGV4dDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZFBhcmVudGhlc2Vz
TWF0Y2godGVybSwgY29udGV4dCk7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEpTUmVnRXhwTWF0Y2g7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBKU1JlZ0V4cFJlc3VsdDo6TWF0Y2g7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICAgICAgLy8gcG9wIGEgbWF0Y2ggb2ZmIHRoZSBzdGFjawpAQCAtMTIzNiwxNiArMTIzNiwxNiBA
QCBjbGFzcyBJbnRlcnByZXRlciB7CiAgICAgICAgICAgICAgICAgcG9wUGFyZW50aGVzZXNEaXNq
dW5jdGlvbkNvbnRleHQoYmFja1RyYWNrKTsKICAgICAgICAgICAgICAgICBmcmVlUGFyZW50aGVz
ZXNEaXNqdW5jdGlvbkNvbnRleHQoY29udGV4dCk7CiAKLSAgICAgICAgICAgICAgICBpZiAocmVz
dWx0ICE9IEpTUmVnRXhwTm9NYXRjaCkKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IEpT
UmVnRXhwUmVzdWx0OjpOb01hdGNoKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICByZXR1cm4gSlNSZWdFeHBOb01hdGNoOwor
ICAgICAgICAgICAgcmV0dXJuIEpTUmVnRXhwUmVzdWx0OjpOb01hdGNoOwogICAgICAgICB9CiAg
ICAgICAgIH0KIAogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICByZXR1cm4gSlNSZWdFeHBFcnJvck5vTWF0Y2g7CisgICAgICAgIHJldHVybiBKU1JlZ0V4cFJl
c3VsdDo6RXJyb3JOb01hdGNoOwogICAgIH0KIAogICAgIGJvb2wgbWF0Y2hEb3RTdGFyRW5jbG9z
dXJlKEJ5dGVUZXJtJiB0ZXJtLCBEaXNqdW5jdGlvbkNvbnRleHQqIGNvbnRleHQpCkBAIC0xMjkz
LDEwICsxMjkzLDEwIEBAIGNsYXNzIEludGVycHJldGVyIHsKICAgICBKU1JlZ0V4cFJlc3VsdCBt
YXRjaERpc2p1bmN0aW9uKEJ5dGVEaXNqdW5jdGlvbiogZGlzanVuY3Rpb24sIERpc2p1bmN0aW9u
Q29udGV4dCogY29udGV4dCwgYm9vbCBidHJhY2sgPSBmYWxzZSkKICAgICB7CiAgICAgICAgIGlm
IChVTkxJS0VMWSghaXNTYWZlVG9SZWN1cnNlKCkpKQotICAgICAgICAgICAgcmV0dXJuIEpTUmVn
RXhwRXJyb3JOb01lbW9yeTsKKyAgICAgICAgICAgIHJldHVybiBKU1JlZ0V4cFJlc3VsdDo6RXJy
b3JOb01lbW9yeTsKIAogICAgICAgICBpZiAoIS0tcmVtYWluaW5nTWF0Y2hDb3VudCkKLSAgICAg
ICAgICAgIHJldHVybiBKU1JlZ0V4cEVycm9ySGl0TGltaXQ7CisgICAgICAgICAgICByZXR1cm4g
SlNSZWdFeHBSZXN1bHQ6OkVycm9ySGl0TGltaXQ7CiAKICAgICAgICAgaWYgKGJ0cmFjaykKICAg
ICAgICAgICAgIEJBQ0tUUkFDSygpOwpAQCAtMTMwOCwyMyArMTMwOCwyMyBAQCBjbGFzcyBJbnRl
cnByZXRlciB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0LT50ZXJtIDwgc3RhdGljX2Nhc3Q8aW50
PihkaXNqdW5jdGlvbi0+dGVybXMuc2l6ZSgpKSk7CiAKICAgICAgICAgc3dpdGNoIChjdXJyZW50
VGVybSgpLnR5cGUpIHsKLSAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVN1YnBhdHRlcm5CZWdp
bjoKKyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZTo6U3VicGF0dGVybkJlZ2luOgogICAgICAg
ICAgICAgTUFUQ0hfTkVYVCgpOwotICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlU3VicGF0dGVy
bkVuZDoKKyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZTo6U3VicGF0dGVybkVuZDoKICAgICAg
ICAgICAgIGNvbnRleHQtPm1hdGNoRW5kID0gaW5wdXQuZ2V0UG9zKCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gSlNSZWdFeHBNYXRjaDsKKyAgICAgICAgICAgIHJldHVybiBKU1JlZ0V4cFJlc3VsdDo6
TWF0Y2g7CiAKLSAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZUJvZHlBbHRlcm5hdGl2ZUJlZ2lu
OgorICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlOjpCb2R5QWx0ZXJuYXRpdmVCZWdpbjoKICAg
ICAgICAgICAgIE1BVENIX05FWFQoKTsKLSAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZUJvZHlB
bHRlcm5hdGl2ZURpc2p1bmN0aW9uOgotICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlQm9keUFs
dGVybmF0aXZlRW5kOgorICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlOjpCb2R5QWx0ZXJuYXRp
dmVEaXNqdW5jdGlvbjoKKyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZTo6Qm9keUFsdGVybmF0
aXZlRW5kOgogICAgICAgICAgICAgY29udGV4dC0+bWF0Y2hFbmQgPSBpbnB1dC5nZXRQb3MoKTsK
LSAgICAgICAgICAgIHJldHVybiBKU1JlZ0V4cE1hdGNoOworICAgICAgICAgICAgcmV0dXJuIEpT
UmVnRXhwUmVzdWx0OjpNYXRjaDsKIAotICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlQWx0ZXJu
YXRpdmVCZWdpbjoKKyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZTo6QWx0ZXJuYXRpdmVCZWdp
bjoKICAgICAgICAgICAgIE1BVENIX05FWFQoKTsKLSAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlw
ZUFsdGVybmF0aXZlRGlzanVuY3Rpb246Ci0gICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVBbHRl
cm5hdGl2ZUVuZDogeworICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlOjpBbHRlcm5hdGl2ZURp
c2p1bmN0aW9uOgorICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlOjpBbHRlcm5hdGl2ZUVuZDog
ewogICAgICAgICAgICAgaW50IG9mZnNldCA9IGN1cnJlbnRUZXJtKCkuYWx0ZXJuYXRpdmUuZW5k
OwogICAgICAgICAgICAgQmFja1RyYWNrSW5mb0FsdGVybmF0aXZlKiBiYWNrVHJhY2sgPSByZWlu
dGVycHJldF9jYXN0PEJhY2tUcmFja0luZm9BbHRlcm5hdGl2ZSo+KGNvbnRleHQtPmZyYW1lICsg
Y3VycmVudFRlcm0oKS5mcmFtZUxvY2F0aW9uKTsKICAgICAgICAgICAgIGJhY2tUcmFjay0+b2Zm
c2V0ID0gb2Zmc2V0OwpAQCAtMTMzMiwyMSArMTMzMiwyMSBAQCBjbGFzcyBJbnRlcnByZXRlciB7
CiAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIEJ5
dGVUZXJtOjpUeXBlQXNzZXJ0aW9uQk9MOgorICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlOjpB
c3NlcnRpb25CT0w6CiAgICAgICAgICAgICBpZiAobWF0Y2hBc3NlcnRpb25CT0woY3VycmVudFRl
cm0oKSkpCiAgICAgICAgICAgICAgICAgTUFUQ0hfTkVYVCgpOwogICAgICAgICAgICAgQkFDS1RS
QUNLKCk7Ci0gICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVBc3NlcnRpb25FT0w6CisgICAgICAg
IGNhc2UgQnl0ZVRlcm06OlR5cGU6OkFzc2VydGlvbkVPTDoKICAgICAgICAgICAgIGlmIChtYXRj
aEFzc2VydGlvbkVPTChjdXJyZW50VGVybSgpKSkKICAgICAgICAgICAgICAgICBNQVRDSF9ORVhU
KCk7CiAgICAgICAgICAgICBCQUNLVFJBQ0soKTsKLSAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlw
ZUFzc2VydGlvbldvcmRCb3VuZGFyeToKKyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZTo6QXNz
ZXJ0aW9uV29yZEJvdW5kYXJ5OgogICAgICAgICAgICAgaWYgKG1hdGNoQXNzZXJ0aW9uV29yZEJv
dW5kYXJ5KGN1cnJlbnRUZXJtKCkpKQogICAgICAgICAgICAgICAgIE1BVENIX05FWFQoKTsKICAg
ICAgICAgICAgIEJBQ0tUUkFDSygpOwogCi0gICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXR0
ZXJuQ2hhcmFjdGVyT25jZToKLSAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhdHRlcm5DaGFy
YWN0ZXJGaXhlZDogeworICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlOjpQYXR0ZXJuQ2hhcmFj
dGVyT25jZToKKyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZTo6UGF0dGVybkNoYXJhY3RlckZp
eGVkOiB7CiAgICAgICAgICAgICBpZiAodW5pY29kZSkgewogICAgICAgICAgICAgICAgIGlmICgh
VV9JU19CTVAoY3VycmVudFRlcm0oKS5hdG9tLnBhdHRlcm5DaGFyYWN0ZXIpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgbWF0Y2hBbW91bnQgPSAwOyBtYXRjaEFtb3VudCA8
IGN1cnJlbnRUZXJtKCkuYXRvbS5xdWFudGl0eU1heENvdW50OyArK21hdGNoQW1vdW50KSB7CkBA
IC0xMzY3LDcgKzEzNjcsNyBAQCBjbGFzcyBJbnRlcnByZXRlciB7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBNQVRDSF9ORVhUKCk7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBCeXRlVGVy
bTo6VHlwZVBhdHRlcm5DaGFyYWN0ZXJHcmVlZHk6IHsKKyAgICAgICAgY2FzZSBCeXRlVGVybTo6
VHlwZTo6UGF0dGVybkNoYXJhY3RlckdyZWVkeTogewogICAgICAgICAgICAgQmFja1RyYWNrSW5m
b1BhdHRlcm5DaGFyYWN0ZXIqIGJhY2tUcmFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QmFja1RyYWNr
SW5mb1BhdHRlcm5DaGFyYWN0ZXIqPihjb250ZXh0LT5mcmFtZSArIGN1cnJlbnRUZXJtKCkuZnJh
bWVMb2NhdGlvbik7CiAgICAgICAgICAgICB1bnNpZ25lZCBtYXRjaEFtb3VudCA9IDA7CiAgICAg
ICAgICAgICB1bnNpZ25lZCBwb3NpdGlvbiA9IGlucHV0LmdldFBvcygpOyAvLyBNYXkgbmVlZCB0
byBiYWNrIG91dCByZWFkaW5nIGEgc3Vycm9nYXRlIHBhaXIuCkBAIC0xMzgzLDE3ICsxMzgzLDE3
IEBAIGNsYXNzIEludGVycHJldGVyIHsKIAogICAgICAgICAgICAgTUFUQ0hfTkVYVCgpOwogICAg
ICAgICB9Ci0gICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXR0ZXJuQ2hhcmFjdGVyTm9uR3Jl
ZWR5OiB7CisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGU6OlBhdHRlcm5DaGFyYWN0ZXJOb25H
cmVlZHk6IHsKICAgICAgICAgICAgIEJhY2tUcmFja0luZm9QYXR0ZXJuQ2hhcmFjdGVyKiBiYWNr
VHJhY2sgPSByZWludGVycHJldF9jYXN0PEJhY2tUcmFja0luZm9QYXR0ZXJuQ2hhcmFjdGVyKj4o
Y29udGV4dC0+ZnJhbWUgKyBjdXJyZW50VGVybSgpLmZyYW1lTG9jYXRpb24pOwogICAgICAgICAg
ICAgYmFja1RyYWNrLT5iZWdpbiA9IGlucHV0LmdldFBvcygpOwogICAgICAgICAgICAgYmFja1Ry
YWNrLT5tYXRjaEFtb3VudCA9IDA7CiAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7CiAgICAgICAg
IH0KIAotICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGF0dGVybkNhc2VkQ2hhcmFjdGVyT25j
ZToKLSAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhdHRlcm5DYXNlZENoYXJhY3RlckZpeGVk
OiB7CisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGU6OlBhdHRlcm5DYXNlZENoYXJhY3Rlck9u
Y2U6CisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGU6OlBhdHRlcm5DYXNlZENoYXJhY3RlckZp
eGVkOiB7CiAgICAgICAgICAgICBpZiAodW5pY29kZSkgewotICAgICAgICAgICAgICAgIC8vIENh
c2UgaW5zZW5zaXRpdmUgbWF0Y2hpbmcgb2YgdW5pY29kZSBjaGFyYWN0ZXJzIGlzIGhhbmRsZWQg
YXMgVHlwZUNoYXJhY3RlckNsYXNzLgorICAgICAgICAgICAgICAgIC8vIENhc2UgaW5zZW5zaXRp
dmUgbWF0Y2hpbmcgb2YgdW5pY29kZSBjaGFyYWN0ZXJzIGlzIGhhbmRsZWQgYXMgVHlwZTo6Q2hh
cmFjdGVyQ2xhc3MuCiAgICAgICAgICAgICAgICAgQVNTRVJUKFVfSVNfQk1QKGN1cnJlbnRUZXJt
KCkuYXRvbS5wYXR0ZXJuQ2hhcmFjdGVyKSk7CiAKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBw
b3NpdGlvbiA9IGlucHV0LmdldFBvcygpOyAvLyBNYXkgbmVlZCB0byBiYWNrIG91dCByZWFkaW5n
IGEgc3Vycm9nYXRlIHBhaXIuCkBAIC0xNDEzLDEwICsxNDEzLDEwIEBAIGNsYXNzIEludGVycHJl
dGVyIHsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIE1BVENIX05FWFQoKTsKICAgICAgICAg
fQotICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGF0dGVybkNhc2VkQ2hhcmFjdGVyR3JlZWR5
OiB7CisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGU6OlBhdHRlcm5DYXNlZENoYXJhY3Rlckdy
ZWVkeTogewogICAgICAgICAgICAgQmFja1RyYWNrSW5mb1BhdHRlcm5DaGFyYWN0ZXIqIGJhY2tU
cmFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QmFja1RyYWNrSW5mb1BhdHRlcm5DaGFyYWN0ZXIqPihj
b250ZXh0LT5mcmFtZSArIGN1cnJlbnRUZXJtKCkuZnJhbWVMb2NhdGlvbik7CiAKLSAgICAgICAg
ICAgIC8vIENhc2UgaW5zZW5zaXRpdmUgbWF0Y2hpbmcgb2YgdW5pY29kZSBjaGFyYWN0ZXJzIGlz
IGhhbmRsZWQgYXMgVHlwZUNoYXJhY3RlckNsYXNzLgorICAgICAgICAgICAgLy8gQ2FzZSBpbnNl
bnNpdGl2ZSBtYXRjaGluZyBvZiB1bmljb2RlIGNoYXJhY3RlcnMgaXMgaGFuZGxlZCBhcyBUeXBl
OjpDaGFyYWN0ZXJDbGFzcy4KICAgICAgICAgICAgIEFTU0VSVCghdW5pY29kZSB8fCBVX0lTX0JN
UChjdXJyZW50VGVybSgpLmF0b20ucGF0dGVybkNoYXJhY3RlcikpOwogCiAgICAgICAgICAgICB1
bnNpZ25lZCBtYXRjaEFtb3VudCA9IDA7CkBAIC0xNDMxLDcxICsxNDMxLDcxIEBAIGNsYXNzIElu
dGVycHJldGVyIHsKIAogICAgICAgICAgICAgTUFUQ0hfTkVYVCgpOwogICAgICAgICB9Ci0gICAg
ICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXR0ZXJuQ2FzZWRDaGFyYWN0ZXJOb25HcmVlZHk6IHsK
KyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZTo6UGF0dGVybkNhc2VkQ2hhcmFjdGVyTm9uR3Jl
ZWR5OiB7CiAgICAgICAgICAgICBCYWNrVHJhY2tJbmZvUGF0dGVybkNoYXJhY3RlciogYmFja1Ry
YWNrID0gcmVpbnRlcnByZXRfY2FzdDxCYWNrVHJhY2tJbmZvUGF0dGVybkNoYXJhY3Rlcio+KGNv
bnRleHQtPmZyYW1lICsgY3VycmVudFRlcm0oKS5mcmFtZUxvY2F0aW9uKTsKIAotICAgICAgICAg
ICAgLy8gQ2FzZSBpbnNlbnNpdGl2ZSBtYXRjaGluZyBvZiB1bmljb2RlIGNoYXJhY3RlcnMgaXMg
aGFuZGxlZCBhcyBUeXBlQ2hhcmFjdGVyQ2xhc3MuCisgICAgICAgICAgICAvLyBDYXNlIGluc2Vu
c2l0aXZlIG1hdGNoaW5nIG9mIHVuaWNvZGUgY2hhcmFjdGVycyBpcyBoYW5kbGVkIGFzIFR5cGU6
OkNoYXJhY3RlckNsYXNzLgogICAgICAgICAgICAgQVNTRVJUKCF1bmljb2RlIHx8IFVfSVNfQk1Q
KGN1cnJlbnRUZXJtKCkuYXRvbS5wYXR0ZXJuQ2hhcmFjdGVyKSk7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIGJhY2tUcmFjay0+bWF0Y2hBbW91bnQgPSAwOwogICAgICAgICAgICAgTUFUQ0hf
TkVYVCgpOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZUNoYXJhY3Rl
ckNsYXNzOgorICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlOjpDaGFyYWN0ZXJDbGFzczoKICAg
ICAgICAgICAgIGlmIChtYXRjaENoYXJhY3RlckNsYXNzKGN1cnJlbnRUZXJtKCksIGNvbnRleHQp
KQogICAgICAgICAgICAgICAgIE1BVENIX05FWFQoKTsKICAgICAgICAgICAgIEJBQ0tUUkFDSygp
OwotICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlQmFja1JlZmVyZW5jZToKKyAgICAgICAgY2Fz
ZSBCeXRlVGVybTo6VHlwZTo6QmFja1JlZmVyZW5jZToKICAgICAgICAgICAgIGlmIChtYXRjaEJh
Y2tSZWZlcmVuY2UoY3VycmVudFRlcm0oKSwgY29udGV4dCkpCiAgICAgICAgICAgICAgICAgTUFU
Q0hfTkVYVCgpOwogICAgICAgICAgICAgQkFDS1RSQUNLKCk7Ci0gICAgICAgIGNhc2UgQnl0ZVRl
cm06OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm46IHsKKyAgICAgICAgY2FzZSBCeXRlVGVybTo6
VHlwZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuOiB7CiAgICAgICAgICAgICBKU1JlZ0V4cFJlc3Vs
dCByZXN1bHQgPSBtYXRjaFBhcmVudGhlc2VzKGN1cnJlbnRUZXJtKCksIGNvbnRleHQpOwogCi0g
ICAgICAgICAgICBpZiAocmVzdWx0ID09IEpTUmVnRXhwTWF0Y2gpIHsKKyAgICAgICAgICAgIGlm
IChyZXN1bHQgPT0gSlNSZWdFeHBSZXN1bHQ6Ok1hdGNoKSB7CiAgICAgICAgICAgICAgICAgTUFU
Q0hfTkVYVCgpOwotICAgICAgICAgICAgfSAgZWxzZSBpZiAocmVzdWx0ICE9IEpTUmVnRXhwTm9N
YXRjaCkKKyAgICAgICAgICAgIH0gIGVsc2UgaWYgKHJlc3VsdCAhPSBKU1JlZ0V4cFJlc3VsdDo6
Tm9NYXRjaCkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAgICAgICAgICAgICBC
QUNLVFJBQ0soKTsKICAgICAgICAgfQotICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGFyZW50
aGVzZXNTdWJwYXR0ZXJuT25jZUJlZ2luOgorICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlOjpQ
YXJlbnRoZXNlc1N1YnBhdHRlcm5PbmNlQmVnaW46CiAgICAgICAgICAgICBpZiAobWF0Y2hQYXJl
bnRoZXNlc09uY2VCZWdpbihjdXJyZW50VGVybSgpLCBjb250ZXh0KSkKICAgICAgICAgICAgICAg
ICBNQVRDSF9ORVhUKCk7CiAgICAgICAgICAgICBCQUNLVFJBQ0soKTsKLSAgICAgICAgY2FzZSBC
eXRlVGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVybk9uY2VFbmQ6CisgICAgICAgIGNhc2Ug
Qnl0ZVRlcm06OlR5cGU6OlBhcmVudGhlc2VzU3VicGF0dGVybk9uY2VFbmQ6CiAgICAgICAgICAg
ICBpZiAobWF0Y2hQYXJlbnRoZXNlc09uY2VFbmQoY3VycmVudFRlcm0oKSwgY29udGV4dCkpCiAg
ICAgICAgICAgICAgICAgTUFUQ0hfTkVYVCgpOwogICAgICAgICAgICAgQkFDS1RSQUNLKCk7Ci0g
ICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEJl
Z2luOgorICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm5U
ZXJtaW5hbEJlZ2luOgogICAgICAgICAgICAgaWYgKG1hdGNoUGFyZW50aGVzZXNUZXJtaW5hbEJl
Z2luKGN1cnJlbnRUZXJtKCksIGNvbnRleHQpKQogICAgICAgICAgICAgICAgIE1BVENIX05FWFQo
KTsKICAgICAgICAgICAgIEJBQ0tUUkFDSygpOwotICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBl
UGFyZW50aGVzZXNTdWJwYXR0ZXJuVGVybWluYWxFbmQ6CisgICAgICAgIGNhc2UgQnl0ZVRlcm06
OlR5cGU6OlBhcmVudGhlc2VzU3VicGF0dGVyblRlcm1pbmFsRW5kOgogICAgICAgICAgICAgaWYg
KG1hdGNoUGFyZW50aGVzZXNUZXJtaW5hbEVuZChjdXJyZW50VGVybSgpLCBjb250ZXh0KSkKICAg
ICAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7CiAgICAgICAgICAgICBCQUNLVFJBQ0soKTsKLSAg
ICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhcmVudGhldGljYWxBc3NlcnRpb25CZWdpbjoKKyAg
ICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZTo6UGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luOgog
ICAgICAgICAgICAgaWYgKG1hdGNoUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luKGN1cnJlbnRU
ZXJtKCksIGNvbnRleHQpKQogICAgICAgICAgICAgICAgIE1BVENIX05FWFQoKTsKICAgICAgICAg
ICAgIEJBQ0tUUkFDSygpOwotICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGFyZW50aGV0aWNh
bEFzc2VydGlvbkVuZDoKKyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZTo6UGFyZW50aGV0aWNh
bEFzc2VydGlvbkVuZDoKICAgICAgICAgICAgIGlmIChtYXRjaFBhcmVudGhldGljYWxBc3NlcnRp
b25FbmQoY3VycmVudFRlcm0oKSwgY29udGV4dCkpCiAgICAgICAgICAgICAgICAgTUFUQ0hfTkVY
VCgpOwogICAgICAgICAgICAgQkFDS1RSQUNLKCk7CiAKLSAgICAgICAgY2FzZSBCeXRlVGVybTo6
VHlwZUNoZWNrSW5wdXQ6CisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGU6OkNoZWNrSW5wdXQ6
CiAgICAgICAgICAgICBpZiAoaW5wdXQuY2hlY2tJbnB1dChjdXJyZW50VGVybSgpLmNoZWNrSW5w
dXRDb3VudCkpCiAgICAgICAgICAgICAgICAgTUFUQ0hfTkVYVCgpOwogICAgICAgICAgICAgQkFD
S1RSQUNLKCk7CiAKLSAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVVuY2hlY2tJbnB1dDoKKyAg
ICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZTo6VW5jaGVja0lucHV0OgogICAgICAgICAgICAgaW5w
dXQudW5jaGVja0lucHV0KGN1cnJlbnRUZXJtKCkuY2hlY2tJbnB1dENvdW50KTsKICAgICAgICAg
ICAgIE1BVENIX05FWFQoKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBCeXRlVGVy
bTo6VHlwZURvdFN0YXJFbmNsb3N1cmU6CisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGU6OkRv
dFN0YXJFbmNsb3N1cmU6CiAgICAgICAgICAgICBpZiAobWF0Y2hEb3RTdGFyRW5jbG9zdXJlKGN1
cnJlbnRUZXJtKCksIGNvbnRleHQpKQotICAgICAgICAgICAgICAgIHJldHVybiBKU1JlZ0V4cE1h
dGNoOworICAgICAgICAgICAgICAgIHJldHVybiBKU1JlZ0V4cFJlc3VsdDo6TWF0Y2g7CiAgICAg
ICAgICAgICBCQUNLVFJBQ0soKTsKICAgICAgICAgfQogCkBAIC0xNTA2LDIwICsxNTA2LDIwIEBA
IGNsYXNzIEludGVycHJldGVyIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQtPnRlcm0gPCBzdGF0
aWNfY2FzdDxpbnQ+KGRpc2p1bmN0aW9uLT50ZXJtcy5zaXplKCkpKTsKIAogICAgICAgICBzd2l0
Y2ggKGN1cnJlbnRUZXJtKCkudHlwZSkgewotICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlU3Vi
cGF0dGVybkJlZ2luOgotICAgICAgICAgICAgcmV0dXJuIEpTUmVnRXhwTm9NYXRjaDsKLSAgICAg
ICAgY2FzZSBCeXRlVGVybTo6VHlwZVN1YnBhdHRlcm5FbmQ6CisgICAgICAgIGNhc2UgQnl0ZVRl
cm06OlR5cGU6OlN1YnBhdHRlcm5CZWdpbjoKKyAgICAgICAgICAgIHJldHVybiBKU1JlZ0V4cFJl
c3VsdDo6Tm9NYXRjaDsKKyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZTo6U3VicGF0dGVybkVu
ZDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKLSAgICAgICAg
Y2FzZSBCeXRlVGVybTo6VHlwZUJvZHlBbHRlcm5hdGl2ZUJlZ2luOgotICAgICAgICBjYXNlIEJ5
dGVUZXJtOjpUeXBlQm9keUFsdGVybmF0aXZlRGlzanVuY3Rpb246IHsKKyAgICAgICAgY2FzZSBC
eXRlVGVybTo6VHlwZTo6Qm9keUFsdGVybmF0aXZlQmVnaW46CisgICAgICAgIGNhc2UgQnl0ZVRl
cm06OlR5cGU6OkJvZHlBbHRlcm5hdGl2ZURpc2p1bmN0aW9uOiB7CiAgICAgICAgICAgICBpbnQg
b2Zmc2V0ID0gY3VycmVudFRlcm0oKS5hbHRlcm5hdGl2ZS5uZXh0OwogICAgICAgICAgICAgY29u
dGV4dC0+dGVybSArPSBvZmZzZXQ7CiAgICAgICAgICAgICBpZiAob2Zmc2V0ID4gMCkKICAgICAg
ICAgICAgICAgICBNQVRDSF9ORVhUKCk7CiAKICAgICAgICAgICAgIGlmIChpbnB1dC5hdEVuZCgp
IHx8IHBhdHRlcm4tPnN0aWNreSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBKU1JlZ0V4cE5v
TWF0Y2g7CisgICAgICAgICAgICAgICAgcmV0dXJuIEpTUmVnRXhwUmVzdWx0OjpOb01hdGNoOwog
CiAgICAgICAgICAgICBpbnB1dC5uZXh0KCk7CiAKQEAgLTE1MzAsMTggKzE1MzAsMTggQEAgY2xh
c3MgSW50ZXJwcmV0ZXIgewogCiAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7CiAgICAgICAgIH0K
LSAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZUJvZHlBbHRlcm5hdGl2ZUVuZDoKKyAgICAgICAg
Y2FzZSBCeXRlVGVybTo6VHlwZTo6Qm9keUFsdGVybmF0aXZlRW5kOgogICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIAotICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBl
QWx0ZXJuYXRpdmVCZWdpbjoKLSAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZUFsdGVybmF0aXZl
RGlzanVuY3Rpb246IHsKKyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZTo6QWx0ZXJuYXRpdmVC
ZWdpbjoKKyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZTo6QWx0ZXJuYXRpdmVEaXNqdW5jdGlv
bjogewogICAgICAgICAgICAgaW50IG9mZnNldCA9IGN1cnJlbnRUZXJtKCkuYWx0ZXJuYXRpdmUu
bmV4dDsKICAgICAgICAgICAgIGNvbnRleHQtPnRlcm0gKz0gb2Zmc2V0OwogICAgICAgICAgICAg
aWYgKG9mZnNldCA+IDApCiAgICAgICAgICAgICAgICAgTUFUQ0hfTkVYVCgpOwogICAgICAgICAg
ICAgQkFDS1RSQUNLKCk7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZUFs
dGVybmF0aXZlRW5kOiB7CisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGU6OkFsdGVybmF0aXZl
RW5kOiB7CiAgICAgICAgICAgICAvLyBXZSBzaG91bGQgbmV2ZXIgYmFja3RyYWNrIGJhY2sgaW50
byBhbiBhbHRlcm5hdGl2ZSBvZiB0aGUgbWFpbiBib2R5IG9mIHRoZSByZWdleC4KICAgICAgICAg
ICAgIEJhY2tUcmFja0luZm9BbHRlcm5hdGl2ZSogYmFja1RyYWNrID0gcmVpbnRlcnByZXRfY2Fz
dDxCYWNrVHJhY2tJbmZvQWx0ZXJuYXRpdmUqPihjb250ZXh0LT5mcmFtZSArIGN1cnJlbnRUZXJt
KCkuZnJhbWVMb2NhdGlvbik7CiAgICAgICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSBiYWNrVHJh
Y2stPm9mZnNldDsKQEAgLTE1NDksOTUgKzE1NDksOTUgQEAgY2xhc3MgSW50ZXJwcmV0ZXIgewog
ICAgICAgICAgICAgQkFDS1RSQUNLKCk7CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIEJ5dGVU
ZXJtOjpUeXBlQXNzZXJ0aW9uQk9MOgotICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlQXNzZXJ0
aW9uRU9MOgotICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlQXNzZXJ0aW9uV29yZEJvdW5kYXJ5
OgorICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlOjpBc3NlcnRpb25CT0w6CisgICAgICAgIGNh
c2UgQnl0ZVRlcm06OlR5cGU6OkFzc2VydGlvbkVPTDoKKyAgICAgICAgY2FzZSBCeXRlVGVybTo6
VHlwZTo6QXNzZXJ0aW9uV29yZEJvdW5kYXJ5OgogICAgICAgICAgICAgQkFDS1RSQUNLKCk7CiAK
LSAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhdHRlcm5DaGFyYWN0ZXJPbmNlOgotICAgICAg
ICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGF0dGVybkNoYXJhY3RlckZpeGVkOgotICAgICAgICBjYXNl
IEJ5dGVUZXJtOjpUeXBlUGF0dGVybkNoYXJhY3RlckdyZWVkeToKLSAgICAgICAgY2FzZSBCeXRl
VGVybTo6VHlwZVBhdHRlcm5DaGFyYWN0ZXJOb25HcmVlZHk6CisgICAgICAgIGNhc2UgQnl0ZVRl
cm06OlR5cGU6OlBhdHRlcm5DaGFyYWN0ZXJPbmNlOgorICAgICAgICBjYXNlIEJ5dGVUZXJtOjpU
eXBlOjpQYXR0ZXJuQ2hhcmFjdGVyRml4ZWQ6CisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGU6
OlBhdHRlcm5DaGFyYWN0ZXJHcmVlZHk6CisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGU6OlBh
dHRlcm5DaGFyYWN0ZXJOb25HcmVlZHk6CiAgICAgICAgICAgICBpZiAoYmFja3RyYWNrUGF0dGVy
bkNoYXJhY3RlcihjdXJyZW50VGVybSgpLCBjb250ZXh0KSkKICAgICAgICAgICAgICAgICBNQVRD
SF9ORVhUKCk7CiAgICAgICAgICAgICBCQUNLVFJBQ0soKTsKLSAgICAgICAgY2FzZSBCeXRlVGVy
bTo6VHlwZVBhdHRlcm5DYXNlZENoYXJhY3Rlck9uY2U6Ci0gICAgICAgIGNhc2UgQnl0ZVRlcm06
OlR5cGVQYXR0ZXJuQ2FzZWRDaGFyYWN0ZXJGaXhlZDoKLSAgICAgICAgY2FzZSBCeXRlVGVybTo6
VHlwZVBhdHRlcm5DYXNlZENoYXJhY3RlckdyZWVkeToKLSAgICAgICAgY2FzZSBCeXRlVGVybTo6
VHlwZVBhdHRlcm5DYXNlZENoYXJhY3Rlck5vbkdyZWVkeToKKyAgICAgICAgY2FzZSBCeXRlVGVy
bTo6VHlwZTo6UGF0dGVybkNhc2VkQ2hhcmFjdGVyT25jZToKKyAgICAgICAgY2FzZSBCeXRlVGVy
bTo6VHlwZTo6UGF0dGVybkNhc2VkQ2hhcmFjdGVyRml4ZWQ6CisgICAgICAgIGNhc2UgQnl0ZVRl
cm06OlR5cGU6OlBhdHRlcm5DYXNlZENoYXJhY3RlckdyZWVkeToKKyAgICAgICAgY2FzZSBCeXRl
VGVybTo6VHlwZTo6UGF0dGVybkNhc2VkQ2hhcmFjdGVyTm9uR3JlZWR5OgogICAgICAgICAgICAg
aWYgKGJhY2t0cmFja1BhdHRlcm5DYXNlZENoYXJhY3RlcihjdXJyZW50VGVybSgpLCBjb250ZXh0
KSkKICAgICAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7CiAgICAgICAgICAgICBCQUNLVFJBQ0so
KTsKLSAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZUNoYXJhY3RlckNsYXNzOgorICAgICAgICBj
YXNlIEJ5dGVUZXJtOjpUeXBlOjpDaGFyYWN0ZXJDbGFzczoKICAgICAgICAgICAgIGlmIChiYWNr
dHJhY2tDaGFyYWN0ZXJDbGFzcyhjdXJyZW50VGVybSgpLCBjb250ZXh0KSkKICAgICAgICAgICAg
ICAgICBNQVRDSF9ORVhUKCk7CiAgICAgICAgICAgICBCQUNLVFJBQ0soKTsKLSAgICAgICAgY2Fz
ZSBCeXRlVGVybTo6VHlwZUJhY2tSZWZlcmVuY2U6CisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5
cGU6OkJhY2tSZWZlcmVuY2U6CiAgICAgICAgICAgICBpZiAoYmFja3RyYWNrQmFja1JlZmVyZW5j
ZShjdXJyZW50VGVybSgpLCBjb250ZXh0KSkKICAgICAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7
CiAgICAgICAgICAgICBCQUNLVFJBQ0soKTsKLSAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBh
cmVudGhlc2VzU3VicGF0dGVybjogeworICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlOjpQYXJl
bnRoZXNlc1N1YnBhdHRlcm46IHsKICAgICAgICAgICAgIEpTUmVnRXhwUmVzdWx0IHJlc3VsdCA9
IGJhY2t0cmFja1BhcmVudGhlc2VzKGN1cnJlbnRUZXJtKCksIGNvbnRleHQpOwogCi0gICAgICAg
ICAgICBpZiAocmVzdWx0ID09IEpTUmVnRXhwTWF0Y2gpIHsKKyAgICAgICAgICAgIGlmIChyZXN1
bHQgPT0gSlNSZWdFeHBSZXN1bHQ6Ok1hdGNoKSB7CiAgICAgICAgICAgICAgICAgTUFUQ0hfTkVY
VCgpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgIT0gSlNSZWdFeHBOb01hdGNoKQor
ICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgIT0gSlNSZWdFeHBSZXN1bHQ6Ok5vTWF0Y2gp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogICAgICAgICAgICAgQkFDS1RSQUNL
KCk7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhcmVudGhlc2VzU3Vi
cGF0dGVybk9uY2VCZWdpbjoKKyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZTo6UGFyZW50aGVz
ZXNTdWJwYXR0ZXJuT25jZUJlZ2luOgogICAgICAgICAgICAgaWYgKGJhY2t0cmFja1BhcmVudGhl
c2VzT25jZUJlZ2luKGN1cnJlbnRUZXJtKCksIGNvbnRleHQpKQogICAgICAgICAgICAgICAgIE1B
VENIX05FWFQoKTsKICAgICAgICAgICAgIEJBQ0tUUkFDSygpOwotICAgICAgICBjYXNlIEJ5dGVU
ZXJtOjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUVuZDoKKyAgICAgICAgY2FzZSBCeXRl
VGVybTo6VHlwZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUVuZDoKICAgICAgICAgICAgIGlm
IChiYWNrdHJhY2tQYXJlbnRoZXNlc09uY2VFbmQoY3VycmVudFRlcm0oKSwgY29udGV4dCkpCiAg
ICAgICAgICAgICAgICAgTUFUQ0hfTkVYVCgpOwogICAgICAgICAgICAgQkFDS1RSQUNLKCk7Ci0g
ICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEJl
Z2luOgorICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm5U
ZXJtaW5hbEJlZ2luOgogICAgICAgICAgICAgaWYgKGJhY2t0cmFja1BhcmVudGhlc2VzVGVybWlu
YWxCZWdpbihjdXJyZW50VGVybSgpLCBjb250ZXh0KSkKICAgICAgICAgICAgICAgICBNQVRDSF9O
RVhUKCk7CiAgICAgICAgICAgICBCQUNLVFJBQ0soKTsKLSAgICAgICAgY2FzZSBCeXRlVGVybTo6
VHlwZVBhcmVudGhlc2VzU3VicGF0dGVyblRlcm1pbmFsRW5kOgorICAgICAgICBjYXNlIEJ5dGVU
ZXJtOjpUeXBlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEVuZDoKICAgICAgICAgICAg
IGlmIChiYWNrdHJhY2tQYXJlbnRoZXNlc1Rlcm1pbmFsRW5kKGN1cnJlbnRUZXJtKCksIGNvbnRl
eHQpKQogICAgICAgICAgICAgICAgIE1BVENIX05FWFQoKTsKICAgICAgICAgICAgIEJBQ0tUUkFD
SygpOwotICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGFyZW50aGV0aWNhbEFzc2VydGlvbkJl
Z2luOgorICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlOjpQYXJlbnRoZXRpY2FsQXNzZXJ0aW9u
QmVnaW46CiAgICAgICAgICAgICBpZiAoYmFja3RyYWNrUGFyZW50aGV0aWNhbEFzc2VydGlvbkJl
Z2luKGN1cnJlbnRUZXJtKCksIGNvbnRleHQpKQogICAgICAgICAgICAgICAgIE1BVENIX05FWFQo
KTsKICAgICAgICAgICAgIEJBQ0tUUkFDSygpOwotICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBl
UGFyZW50aGV0aWNhbEFzc2VydGlvbkVuZDoKKyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZTo6
UGFyZW50aGV0aWNhbEFzc2VydGlvbkVuZDoKICAgICAgICAgICAgIGlmIChiYWNrdHJhY2tQYXJl
bnRoZXRpY2FsQXNzZXJ0aW9uRW5kKGN1cnJlbnRUZXJtKCksIGNvbnRleHQpKQogICAgICAgICAg
ICAgICAgIE1BVENIX05FWFQoKTsKICAgICAgICAgICAgIEJBQ0tUUkFDSygpOwogCi0gICAgICAg
IGNhc2UgQnl0ZVRlcm06OlR5cGVDaGVja0lucHV0OgorICAgICAgICBjYXNlIEJ5dGVUZXJtOjpU
eXBlOjpDaGVja0lucHV0OgogICAgICAgICAgICAgaW5wdXQudW5jaGVja0lucHV0KGN1cnJlbnRU
ZXJtKCkuY2hlY2tJbnB1dENvdW50KTsKICAgICAgICAgICAgIEJBQ0tUUkFDSygpOwogCi0gICAg
ICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVVbmNoZWNrSW5wdXQ6CisgICAgICAgIGNhc2UgQnl0ZVRl
cm06OlR5cGU6OlVuY2hlY2tJbnB1dDoKICAgICAgICAgICAgIGlucHV0LmNoZWNrSW5wdXQoY3Vy
cmVudFRlcm0oKS5jaGVja0lucHV0Q291bnQpOwogICAgICAgICAgICAgQkFDS1RSQUNLKCk7CiAK
LSAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZURvdFN0YXJFbmNsb3N1cmU6CisgICAgICAgIGNh
c2UgQnl0ZVRlcm06OlR5cGU6OkRvdFN0YXJFbmNsb3N1cmU6CiAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAKICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEpTUmVnRXhwRXJyb3JOb01hdGNoOwor
ICAgICAgICByZXR1cm4gSlNSZWdFeHBSZXN1bHQ6OkVycm9yTm9NYXRjaDsKICAgICB9CiAKICAg
ICBKU1JlZ0V4cFJlc3VsdCBtYXRjaE5vblplcm9EaXNqdW5jdGlvbihCeXRlRGlzanVuY3Rpb24q
IGRpc2p1bmN0aW9uLCBEaXNqdW5jdGlvbkNvbnRleHQqIGNvbnRleHQsIGJvb2wgYnRyYWNrID0g
ZmFsc2UpCiAgICAgewogICAgICAgICBKU1JlZ0V4cFJlc3VsdCByZXN1bHQgPSBtYXRjaERpc2p1
bmN0aW9uKGRpc2p1bmN0aW9uLCBjb250ZXh0LCBidHJhY2spOwogCi0gICAgICAgIGlmIChyZXN1
bHQgPT0gSlNSZWdFeHBNYXRjaCkgeworICAgICAgICBpZiAocmVzdWx0ID09IEpTUmVnRXhwUmVz
dWx0OjpNYXRjaCkgewogICAgICAgICAgICAgd2hpbGUgKGNvbnRleHQtPm1hdGNoQmVnaW4gPT0g
Y29udGV4dC0+bWF0Y2hFbmQpIHsKICAgICAgICAgICAgICAgICByZXN1bHQgPSBtYXRjaERpc2p1
bmN0aW9uKGRpc2p1bmN0aW9uLCBjb250ZXh0LCB0cnVlKTsKLSAgICAgICAgICAgICAgICBpZiAo
cmVzdWx0ICE9IEpTUmVnRXhwTWF0Y2gpCisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBK
U1JlZ0V4cFJlc3VsdDo6TWF0Y2gpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gSlNSZWdFeHBNYXRjaDsKKyAgICAg
ICAgICAgIHJldHVybiBKU1JlZ0V4cFJlc3VsdDo6TWF0Y2g7CiAgICAgICAgIH0KIAogICAgICAg
ICByZXR1cm4gcmVzdWx0OwpAQCAtMTY2Myw3ICsxNjYzLDcgQEAgY2xhc3MgSW50ZXJwcmV0ZXIg
ewogICAgICAgICBEaXNqdW5jdGlvbkNvbnRleHQqIGNvbnRleHQgPSBhbGxvY0Rpc2p1bmN0aW9u
Q29udGV4dChwYXR0ZXJuLT5tX2JvZHkuZ2V0KCkpOwogCiAgICAgICAgIEpTUmVnRXhwUmVzdWx0
IHJlc3VsdCA9IG1hdGNoRGlzanVuY3Rpb24ocGF0dGVybi0+bV9ib2R5LmdldCgpLCBjb250ZXh0
LCBmYWxzZSk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gSlNSZWdFeHBNYXRjaCkgeworICAgICAg
ICBpZiAocmVzdWx0ID09IEpTUmVnRXhwUmVzdWx0OjpNYXRjaCkgewogICAgICAgICAgICAgb3V0
cHV0WzBdID0gY29udGV4dC0+bWF0Y2hCZWdpbjsKICAgICAgICAgICAgIG91dHB1dFsxXSA9IGNv
bnRleHQtPm1hdGNoRW5kOwogICAgICAgICB9CkBAIC0xNjcyLDcgKzE2NzIsNyBAQCBjbGFzcyBJ
bnRlcnByZXRlciB7CiAKICAgICAgICAgcGF0dGVybi0+bV9hbGxvY2F0b3ItPnN0b3BBbGxvY2F0
b3IoKTsKIAotICAgICAgICBBU1NFUlQoKHJlc3VsdCA9PSBKU1JlZ0V4cE1hdGNoKSA9PSAob3V0
cHV0WzBdICE9IG9mZnNldE5vTWF0Y2gpKTsKKyAgICAgICAgQVNTRVJUKChyZXN1bHQgPT0gSlNS
ZWdFeHBSZXN1bHQ6Ok1hdGNoKSA9PSAob3V0cHV0WzBdICE9IG9mZnNldE5vTWF0Y2gpKTsKIAog
ICAgICAgICBpZiAocGF0dGVybi0+bV9sb2NrKQogICAgICAgICAgICAgcGF0dGVybi0+bV9sb2Nr
LT51bmxvY2soKTsKQEAgLTE4MDYsNyArMTgwNiw3IEBAIGNsYXNzIEJ5dGVDb21waWxlciB7CiAg
ICAgewogICAgICAgICB1bnNpZ25lZCBiZWdpblRlcm0gPSBtX2JvZHlEaXNqdW5jdGlvbi0+dGVy
bXMuc2l6ZSgpOwogCi0gICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtcy5hcHBlbmQoQnl0
ZVRlcm0oQnl0ZVRlcm06OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm5PbmNlQmVnaW4sIHN1YnBh
dHRlcm5JZCwgY2FwdHVyZSwgZmFsc2UsIGlucHV0UG9zaXRpb24pKTsKKyAgICAgICAgbV9ib2R5
RGlzanVuY3Rpb24tPnRlcm1zLmFwcGVuZChCeXRlVGVybShCeXRlVGVybTo6VHlwZTo6UGFyZW50
aGVzZXNTdWJwYXR0ZXJuT25jZUJlZ2luLCBzdWJwYXR0ZXJuSWQsIGNhcHR1cmUsIGZhbHNlLCBp
bnB1dFBvc2l0aW9uKSk7CiAgICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtcy5sYXN0KCku
ZnJhbWVMb2NhdGlvbiA9IGZyYW1lTG9jYXRpb247CiAgICAgICAgIG1fYm9keURpc2p1bmN0aW9u
LT50ZXJtcy5hcHBlbmQoQnl0ZVRlcm06OkFsdGVybmF0aXZlQmVnaW4oKSk7CiAgICAgICAgIG1f
Ym9keURpc2p1bmN0aW9uLT50ZXJtcy5sYXN0KCkuZnJhbWVMb2NhdGlvbiA9IGFsdGVybmF0aXZl
RnJhbWVMb2NhdGlvbjsKQEAgLTE4MTksNyArMTgxOSw3IEBAIGNsYXNzIEJ5dGVDb21waWxlciB7
CiAgICAgewogICAgICAgICB1bnNpZ25lZCBiZWdpblRlcm0gPSBtX2JvZHlEaXNqdW5jdGlvbi0+
dGVybXMuc2l6ZSgpOwogCi0gICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtcy5hcHBlbmQo
Qnl0ZVRlcm0oQnl0ZVRlcm06OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEJlZ2lu
LCBzdWJwYXR0ZXJuSWQsIGNhcHR1cmUsIGZhbHNlLCBpbnB1dFBvc2l0aW9uKSk7CisgICAgICAg
IG1fYm9keURpc2p1bmN0aW9uLT50ZXJtcy5hcHBlbmQoQnl0ZVRlcm0oQnl0ZVRlcm06OlR5cGU6
OlBhcmVudGhlc2VzU3VicGF0dGVyblRlcm1pbmFsQmVnaW4sIHN1YnBhdHRlcm5JZCwgY2FwdHVy
ZSwgZmFsc2UsIGlucHV0UG9zaXRpb24pKTsKICAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRl
cm1zLmxhc3QoKS5mcmFtZUxvY2F0aW9uID0gZnJhbWVMb2NhdGlvbjsKICAgICAgICAgbV9ib2R5
RGlzanVuY3Rpb24tPnRlcm1zLmFwcGVuZChCeXRlVGVybTo6QWx0ZXJuYXRpdmVCZWdpbigpKTsK
ICAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zLmxhc3QoKS5mcmFtZUxvY2F0aW9uID0g
YWx0ZXJuYXRpdmVGcmFtZUxvY2F0aW9uOwpAQCAtMTgzMCwxMyArMTgzMCwxMyBAQCBjbGFzcyBC
eXRlQ29tcGlsZXIgewogCiAgICAgdm9pZCBhdG9tUGFyZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4o
dW5zaWduZWQgc3VicGF0dGVybklkLCBib29sIGNhcHR1cmUsIHVuc2lnbmVkIGlucHV0UG9zaXRp
b24sIHVuc2lnbmVkIGZyYW1lTG9jYXRpb24sIHVuc2lnbmVkIGFsdGVybmF0aXZlRnJhbWVMb2Nh
dGlvbikKICAgICB7Ci0gICAgICAgIC8vIEVycnJrISAtIHRoaXMgaXMgYSBsaXR0bGUgY3Jhenks
IHdlIGluaXRpYWxseSBnZW5lcmF0ZSBhcyBhIFR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm5PbmNl
QmVnaW4sCisgICAgICAgIC8vIEVycnJrISAtIHRoaXMgaXMgYSBsaXR0bGUgY3JhenksIHdlIGlu
aXRpYWxseSBnZW5lcmF0ZSBhcyBhIFR5cGU6OlBhcmVudGhlc2VzU3VicGF0dGVybk9uY2VCZWdp
biwKICAgICAgICAgLy8gdGhlbiBmaXggdGhpcyB1cCBhdCB0aGUgZW5kISAtIHNpbXBsaWZ5aW5n
IHRoaXMgc2hvdWxkIG1ha2UgaXQgbXVjaCBjbGVhcmVyLgogICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTAxMzYKIAogICAgICAgICB1bnNpZ25lZCBi
ZWdpblRlcm0gPSBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXMuc2l6ZSgpOwogCi0gICAgICAgIG1f
Ym9keURpc2p1bmN0aW9uLT50ZXJtcy5hcHBlbmQoQnl0ZVRlcm0oQnl0ZVRlcm06OlR5cGVQYXJl
bnRoZXNlc1N1YnBhdHRlcm5PbmNlQmVnaW4sIHN1YnBhdHRlcm5JZCwgY2FwdHVyZSwgZmFsc2Us
IGlucHV0UG9zaXRpb24pKTsKKyAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zLmFwcGVu
ZChCeXRlVGVybShCeXRlVGVybTo6VHlwZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUJlZ2lu
LCBzdWJwYXR0ZXJuSWQsIGNhcHR1cmUsIGZhbHNlLCBpbnB1dFBvc2l0aW9uKSk7CiAgICAgICAg
IG1fYm9keURpc2p1bmN0aW9uLT50ZXJtcy5sYXN0KCkuZnJhbWVMb2NhdGlvbiA9IGZyYW1lTG9j
YXRpb247CiAgICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtcy5hcHBlbmQoQnl0ZVRlcm06
OkFsdGVybmF0aXZlQmVnaW4oKSk7CiAgICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtcy5s
YXN0KCkuZnJhbWVMb2NhdGlvbiA9IGFsdGVybmF0aXZlRnJhbWVMb2NhdGlvbjsKQEAgLTE4NDks
NyArMTg0OSw3IEBAIGNsYXNzIEJ5dGVDb21waWxlciB7CiAgICAgewogICAgICAgICB1bnNpZ25l
ZCBiZWdpblRlcm0gPSBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXMuc2l6ZSgpOwogCi0gICAgICAg
IG1fYm9keURpc2p1bmN0aW9uLT50ZXJtcy5hcHBlbmQoQnl0ZVRlcm0oQnl0ZVRlcm06OlR5cGVQ
YXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW4sIHN1YnBhdHRlcm5JZCwgZmFsc2UsIGludmVydCwg
MCkpOworICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXMuYXBwZW5kKEJ5dGVUZXJtKEJ5
dGVUZXJtOjpUeXBlOjpQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW4sIHN1YnBhdHRlcm5JZCwg
ZmFsc2UsIGludmVydCwgMCkpOwogICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXMubGFz
dCgpLmZyYW1lTG9jYXRpb24gPSBmcmFtZUxvY2F0aW9uOwogICAgICAgICBtX2JvZHlEaXNqdW5j
dGlvbi0+dGVybXMuYXBwZW5kKEJ5dGVUZXJtOjpBbHRlcm5hdGl2ZUJlZ2luKCkpOwogICAgICAg
ICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXMubGFzdCgpLmZyYW1lTG9jYXRpb24gPSBhbHRlcm5h
dGl2ZUZyYW1lTG9jYXRpb247CkBAIC0xODY0LDEyICsxODY0LDEyIEBAIGNsYXNzIEJ5dGVDb21w
aWxlciB7CiAgICAgICAgIGNsb3NlQWx0ZXJuYXRpdmUoYmVnaW5UZXJtICsgMSk7CiAgICAgICAg
IHVuc2lnbmVkIGVuZFRlcm0gPSBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXMuc2l6ZSgpOwogCi0g
ICAgICAgIEFTU0VSVChtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbYmVnaW5UZXJtXS50eXBlID09
IEJ5dGVUZXJtOjpUeXBlUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luKTsKKyAgICAgICAgQVNT
RVJUKG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tiZWdpblRlcm1dLnR5cGUgPT0gQnl0ZVRlcm06
OlR5cGU6OlBhcmVudGhldGljYWxBc3NlcnRpb25CZWdpbik7CiAKICAgICAgICAgYm9vbCBpbnZl
cnQgPSBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbYmVnaW5UZXJtXS5pbnZlcnQoKTsKICAgICAg
ICAgdW5zaWduZWQgc3VicGF0dGVybklkID0gbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zW2JlZ2lu
VGVybV0uYXRvbS5zdWJwYXR0ZXJuSWQ7CiAKLSAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRl
cm1zLmFwcGVuZChCeXRlVGVybShCeXRlVGVybTo6VHlwZVBhcmVudGhldGljYWxBc3NlcnRpb25F
bmQsIHN1YnBhdHRlcm5JZCwgZmFsc2UsIGludmVydCwgaW5wdXRQb3NpdGlvbikpOworICAgICAg
ICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXMuYXBwZW5kKEJ5dGVUZXJtKEJ5dGVUZXJtOjpUeXBl
OjpQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uRW5kLCBzdWJwYXR0ZXJuSWQsIGZhbHNlLCBpbnZlcnQs
IGlucHV0UG9zaXRpb24pKTsKICAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zW2JlZ2lu
VGVybV0uYXRvbS5wYXJlbnRoZXNlc1dpZHRoID0gZW5kVGVybSAtIGJlZ2luVGVybTsKICAgICAg
ICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zW2VuZFRlcm1dLmF0b20ucGFyZW50aGVzZXNXaWR0
aCA9IGVuZFRlcm0gLSBiZWdpblRlcm07CiAgICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJt
c1tlbmRUZXJtXS5mcmFtZUxvY2F0aW9uID0gZnJhbWVMb2NhdGlvbjsKQEAgLTE5MDEsNyArMTkw
MSw3IEBAIGNsYXNzIEJ5dGVDb21waWxlciB7CiAgICAgdm9pZCBjbG9zZUFsdGVybmF0aXZlKHVu
c2lnbmVkIGJlZ2luVGVybSkKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIG9yaWdCZWdpblRlcm0g
PSBiZWdpblRlcm07Ci0gICAgICAgIEFTU0VSVChtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbYmVn
aW5UZXJtXS50eXBlID09IEJ5dGVUZXJtOjpUeXBlQWx0ZXJuYXRpdmVCZWdpbik7CisgICAgICAg
IEFTU0VSVChtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbYmVnaW5UZXJtXS50eXBlID09IEJ5dGVU
ZXJtOjpUeXBlOjpBbHRlcm5hdGl2ZUJlZ2luKTsKICAgICAgICAgdW5zaWduZWQgZW5kSW5kZXgg
PSBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXMuc2l6ZSgpOwogCiAgICAgICAgIHVuc2lnbmVkIGZy
YW1lTG9jYXRpb24gPSBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbYmVnaW5UZXJtXS5mcmFtZUxv
Y2F0aW9uOwpAQCAtMTkxMSw3ICsxOTExLDcgQEAgY2xhc3MgQnl0ZUNvbXBpbGVyIHsKICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICB3aGlsZSAobV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zW2Jl
Z2luVGVybV0uYWx0ZXJuYXRpdmUubmV4dCkgewogICAgICAgICAgICAgICAgIGJlZ2luVGVybSAr
PSBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbYmVnaW5UZXJtXS5hbHRlcm5hdGl2ZS5uZXh0Owot
ICAgICAgICAgICAgICAgIEFTU0VSVChtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbYmVnaW5UZXJt
XS50eXBlID09IEJ5dGVUZXJtOjpUeXBlQWx0ZXJuYXRpdmVEaXNqdW5jdGlvbik7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tiZWdpblRlcm1dLnR5cGUg
PT0gQnl0ZVRlcm06OlR5cGU6OkFsdGVybmF0aXZlRGlzanVuY3Rpb24pOwogICAgICAgICAgICAg
ICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tiZWdpblRlcm1dLmFsdGVybmF0aXZlLmVuZCA9
IGVuZEluZGV4IC0gYmVnaW5UZXJtOwogICAgICAgICAgICAgICAgIG1fYm9keURpc2p1bmN0aW9u
LT50ZXJtc1tiZWdpblRlcm1dLmZyYW1lTG9jYXRpb24gPSBmcmFtZUxvY2F0aW9uOwogICAgICAg
ICAgICAgfQpAQCAtMTkyNywxNCArMTkyNywxNCBAQCBjbGFzcyBCeXRlQ29tcGlsZXIgewogICAg
IHsKICAgICAgICAgdW5zaWduZWQgYmVnaW5UZXJtID0gMDsKICAgICAgICAgdW5zaWduZWQgb3Jp
Z0JlZ2luVGVybSA9IDA7Ci0gICAgICAgIEFTU0VSVChtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNb
YmVnaW5UZXJtXS50eXBlID09IEJ5dGVUZXJtOjpUeXBlQm9keUFsdGVybmF0aXZlQmVnaW4pOwor
ICAgICAgICBBU1NFUlQobV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zW2JlZ2luVGVybV0udHlwZSA9
PSBCeXRlVGVybTo6VHlwZTo6Qm9keUFsdGVybmF0aXZlQmVnaW4pOwogICAgICAgICB1bnNpZ25l
ZCBlbmRJbmRleCA9IG1fYm9keURpc2p1bmN0aW9uLT50ZXJtcy5zaXplKCk7CiAKICAgICAgICAg
dW5zaWduZWQgZnJhbWVMb2NhdGlvbiA9IG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tiZWdpblRl
cm1dLmZyYW1lTG9jYXRpb247CiAKICAgICAgICAgd2hpbGUgKG1fYm9keURpc2p1bmN0aW9uLT50
ZXJtc1tiZWdpblRlcm1dLmFsdGVybmF0aXZlLm5leHQpIHsKICAgICAgICAgICAgIGJlZ2luVGVy
bSArPSBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbYmVnaW5UZXJtXS5hbHRlcm5hdGl2ZS5uZXh0
OwotICAgICAgICAgICAgQVNTRVJUKG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tiZWdpblRlcm1d
LnR5cGUgPT0gQnl0ZVRlcm06OlR5cGVCb2R5QWx0ZXJuYXRpdmVEaXNqdW5jdGlvbik7CisgICAg
ICAgICAgICBBU1NFUlQobV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zW2JlZ2luVGVybV0udHlwZSA9
PSBCeXRlVGVybTo6VHlwZTo6Qm9keUFsdGVybmF0aXZlRGlzanVuY3Rpb24pOwogICAgICAgICAg
ICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zW2JlZ2luVGVybV0uYWx0ZXJuYXRpdmUuZW5kID0g
ZW5kSW5kZXggLSBiZWdpblRlcm07CiAgICAgICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVy
bXNbYmVnaW5UZXJtXS5mcmFtZUxvY2F0aW9uID0gZnJhbWVMb2NhdGlvbjsKICAgICAgICAgfQpA
QCAtMTk1MSw3ICsxOTUxLDcgQEAgY2xhc3MgQnl0ZUNvbXBpbGVyIHsKICAgICAgICAgY2xvc2VB
bHRlcm5hdGl2ZShiZWdpblRlcm0gKyAxKTsKICAgICAgICAgdW5zaWduZWQgZW5kVGVybSA9IG1f
Ym9keURpc2p1bmN0aW9uLT50ZXJtcy5zaXplKCk7CiAKLSAgICAgICAgQVNTRVJUKG1fYm9keURp
c2p1bmN0aW9uLT50ZXJtc1tiZWdpblRlcm1dLnR5cGUgPT0gQnl0ZVRlcm06OlR5cGVQYXJlbnRo
ZXNlc1N1YnBhdHRlcm5PbmNlQmVnaW4pOworICAgICAgICBBU1NFUlQobV9ib2R5RGlzanVuY3Rp
b24tPnRlcm1zW2JlZ2luVGVybV0udHlwZSA9PSBCeXRlVGVybTo6VHlwZTo6UGFyZW50aGVzZXNT
dWJwYXR0ZXJuT25jZUJlZ2luKTsKIAogICAgICAgICBCeXRlVGVybSYgcGFyZW50aGVzZXNCZWdp
biA9IG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tiZWdpblRlcm1dOwogCkBAIC0xOTcxLDcgKzE5
NzEsNyBAQCBjbGFzcyBCeXRlQ29tcGlsZXIgewogCiAgICAgICAgIG1fYm9keURpc2p1bmN0aW9u
LT50ZXJtcy5zaHJpbmsoYmVnaW5UZXJtKTsKIAotICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+
dGVybXMuYXBwZW5kKEJ5dGVUZXJtKEJ5dGVUZXJtOjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJu
LCBzdWJwYXR0ZXJuSWQsIHBhcmVudGhlc2VzRGlzanVuY3Rpb24uZ2V0KCksIGNhcHR1cmUsIGlu
cHV0UG9zaXRpb24pKTsKKyAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zLmFwcGVuZChC
eXRlVGVybShCeXRlVGVybTo6VHlwZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuLCBzdWJwYXR0ZXJu
SWQsIHBhcmVudGhlc2VzRGlzanVuY3Rpb24uZ2V0KCksIGNhcHR1cmUsIGlucHV0UG9zaXRpb24p
KTsKICAgICAgICAgbV9hbGxQYXJlbnRoZXNlc0luZm8uYXBwZW5kKFdURk1vdmUocGFyZW50aGVz
ZXNEaXNqdW5jdGlvbikpOwogCiAgICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tiZWdp
blRlcm1dLmF0b20ucXVhbnRpdHlNaW5Db3VudCA9IHF1YW50aXR5TWluQ291bnQ7CkBAIC0xOTg2
LDEyICsxOTg2LDEyIEBAIGNsYXNzIEJ5dGVDb21waWxlciB7CiAgICAgICAgIGNsb3NlQWx0ZXJu
YXRpdmUoYmVnaW5UZXJtICsgMSk7CiAgICAgICAgIHVuc2lnbmVkIGVuZFRlcm0gPSBtX2JvZHlE
aXNqdW5jdGlvbi0+dGVybXMuc2l6ZSgpOwogCi0gICAgICAgIEFTU0VSVChtX2JvZHlEaXNqdW5j
dGlvbi0+dGVybXNbYmVnaW5UZXJtXS50eXBlID09IEJ5dGVUZXJtOjpUeXBlUGFyZW50aGVzZXNT
dWJwYXR0ZXJuT25jZUJlZ2luKTsKKyAgICAgICAgQVNTRVJUKG1fYm9keURpc2p1bmN0aW9uLT50
ZXJtc1tiZWdpblRlcm1dLnR5cGUgPT0gQnl0ZVRlcm06OlR5cGU6OlBhcmVudGhlc2VzU3VicGF0
dGVybk9uY2VCZWdpbik7CiAKICAgICAgICAgYm9vbCBjYXB0dXJlID0gbV9ib2R5RGlzanVuY3Rp
b24tPnRlcm1zW2JlZ2luVGVybV0uY2FwdHVyZSgpOwogICAgICAgICB1bnNpZ25lZCBzdWJwYXR0
ZXJuSWQgPSBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbYmVnaW5UZXJtXS5hdG9tLnN1YnBhdHRl
cm5JZDsKIAotICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXMuYXBwZW5kKEJ5dGVUZXJt
KEJ5dGVUZXJtOjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUVuZCwgc3VicGF0dGVybklk
LCBjYXB0dXJlLCBmYWxzZSwgaW5wdXRQb3NpdGlvbikpOworICAgICAgICBtX2JvZHlEaXNqdW5j
dGlvbi0+dGVybXMuYXBwZW5kKEJ5dGVUZXJtKEJ5dGVUZXJtOjpUeXBlOjpQYXJlbnRoZXNlc1N1
YnBhdHRlcm5PbmNlRW5kLCBzdWJwYXR0ZXJuSWQsIGNhcHR1cmUsIGZhbHNlLCBpbnB1dFBvc2l0
aW9uKSk7CiAgICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tiZWdpblRlcm1dLmF0b20u
cGFyZW50aGVzZXNXaWR0aCA9IGVuZFRlcm0gLSBiZWdpblRlcm07CiAgICAgICAgIG1fYm9keURp
c2p1bmN0aW9uLT50ZXJtc1tlbmRUZXJtXS5hdG9tLnBhcmVudGhlc2VzV2lkdGggPSBlbmRUZXJt
IC0gYmVnaW5UZXJtOwogICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbZW5kVGVybV0u
ZnJhbWVMb2NhdGlvbiA9IGZyYW1lTG9jYXRpb247CkBAIC0yMDEwLDEyICsyMDEwLDEyIEBAIGNs
YXNzIEJ5dGVDb21waWxlciB7CiAgICAgICAgIGNsb3NlQWx0ZXJuYXRpdmUoYmVnaW5UZXJtICsg
MSk7CiAgICAgICAgIHVuc2lnbmVkIGVuZFRlcm0gPSBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXMu
c2l6ZSgpOwogCi0gICAgICAgIEFTU0VSVChtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbYmVnaW5U
ZXJtXS50eXBlID09IEJ5dGVUZXJtOjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuVGVybWluYWxC
ZWdpbik7CisgICAgICAgIEFTU0VSVChtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbYmVnaW5UZXJt
XS50eXBlID09IEJ5dGVUZXJtOjpUeXBlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEJl
Z2luKTsKIAogICAgICAgICBib29sIGNhcHR1cmUgPSBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNb
YmVnaW5UZXJtXS5jYXB0dXJlKCk7CiAgICAgICAgIHVuc2lnbmVkIHN1YnBhdHRlcm5JZCA9IG1f
Ym9keURpc2p1bmN0aW9uLT50ZXJtc1tiZWdpblRlcm1dLmF0b20uc3VicGF0dGVybklkOwogCi0g
ICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtcy5hcHBlbmQoQnl0ZVRlcm0oQnl0ZVRlcm06
OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEVuZCwgc3VicGF0dGVybklkLCBjYXB0
dXJlLCBmYWxzZSwgaW5wdXRQb3NpdGlvbikpOworICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+
dGVybXMuYXBwZW5kKEJ5dGVUZXJtKEJ5dGVUZXJtOjpUeXBlOjpQYXJlbnRoZXNlc1N1YnBhdHRl
cm5UZXJtaW5hbEVuZCwgc3VicGF0dGVybklkLCBjYXB0dXJlLCBmYWxzZSwgaW5wdXRQb3NpdGlv
bikpOwogICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbYmVnaW5UZXJtXS5hdG9tLnBh
cmVudGhlc2VzV2lkdGggPSBlbmRUZXJtIC0gYmVnaW5UZXJtOwogICAgICAgICBtX2JvZHlEaXNq
dW5jdGlvbi0+dGVybXNbZW5kVGVybV0uYXRvbS5wYXJlbnRoZXNlc1dpZHRoID0gZW5kVGVybSAt
IGJlZ2luVGVybTsKICAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zW2VuZFRlcm1dLmZy
YW1lTG9jYXRpb24gPSBmcmFtZUxvY2F0aW9uOwpAQCAtMjA4OSwzOSArMjA4OSwzOSBAQCBjbGFz
cyBCeXRlQ29tcGlsZXIgewogCiAgICAgICAgICAgICBmb3IgKGF1dG8mIHRlcm0gOiBhbHRlcm5h
dGl2ZS0+bV90ZXJtcykgewogICAgICAgICAgICAgICAgIHN3aXRjaCAodGVybS50eXBlKSB7Ci0g
ICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZUFzc2VydGlvbkJPTDoKKyAgICAg
ICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpBc3NlcnRpb25CT0w6CiAgICAgICAg
ICAgICAgICAgICAgIGFzc2VydGlvbkJPTChjdXJyZW50Q291bnRBbHJlYWR5Q2hlY2tlZCAtIHRl
cm0uaW5wdXRQb3NpdGlvbik7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAg
ICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZUFzc2VydGlvbkVPTDoKKyAgICAgICAgICAg
ICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpBc3NlcnRpb25FT0w6CiAgICAgICAgICAgICAg
ICAgICAgIGFzc2VydGlvbkVPTChjdXJyZW50Q291bnRBbHJlYWR5Q2hlY2tlZCAtIHRlcm0uaW5w
dXRQb3NpdGlvbik7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICAg
ICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZUFzc2VydGlvbldvcmRCb3VuZGFyeToKKyAgICAgICAg
ICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpBc3NlcnRpb25Xb3JkQm91bmRhcnk6CiAg
ICAgICAgICAgICAgICAgICAgIGFzc2VydGlvbldvcmRCb3VuZGFyeSh0ZXJtLmludmVydCgpLCBj
dXJyZW50Q291bnRBbHJlYWR5Q2hlY2tlZCAtIHRlcm0uaW5wdXRQb3NpdGlvbik7CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6
VHlwZVBhdHRlcm5DaGFyYWN0ZXI6CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6
VHlwZTo6UGF0dGVybkNoYXJhY3RlcjoKICAgICAgICAgICAgICAgICAgICAgYXRvbVBhdHRlcm5D
aGFyYWN0ZXIodGVybS5wYXR0ZXJuQ2hhcmFjdGVyLCBjdXJyZW50Q291bnRBbHJlYWR5Q2hlY2tl
ZCAtIHRlcm0uaW5wdXRQb3NpdGlvbiwgdGVybS5mcmFtZUxvY2F0aW9uLCB0ZXJtLnF1YW50aXR5
TWF4Q291bnQsIHRlcm0ucXVhbnRpdHlUeXBlKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAKLSAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlQ2hhcmFjdGVyQ2xhc3M6
CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6Q2hhcmFjdGVyQ2xhc3M6
CiAgICAgICAgICAgICAgICAgICAgIGF0b21DaGFyYWN0ZXJDbGFzcyh0ZXJtLmNoYXJhY3RlckNs
YXNzLCB0ZXJtLmludmVydCgpLCBjdXJyZW50Q291bnRBbHJlYWR5Q2hlY2tlZCAtIHRlcm0uaW5w
dXRQb3NpdGlvbiwgdGVybS5mcmFtZUxvY2F0aW9uLCB0ZXJtLnF1YW50aXR5TWF4Q291bnQsIHRl
cm0ucXVhbnRpdHlUeXBlKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAg
ICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlQmFja1JlZmVyZW5jZToKKyAgICAgICAgICAg
ICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpCYWNrUmVmZXJlbmNlOgogICAgICAgICAgICAg
ICAgICAgICBhdG9tQmFja1JlZmVyZW5jZSh0ZXJtLmJhY2tSZWZlcmVuY2VTdWJwYXR0ZXJuSWQs
IGN1cnJlbnRDb3VudEFscmVhZHlDaGVja2VkIC0gdGVybS5pbnB1dFBvc2l0aW9uLCB0ZXJtLmZy
YW1lTG9jYXRpb24sIHRlcm0ucXVhbnRpdHlNYXhDb3VudCwgdGVybS5xdWFudGl0eVR5cGUpOwog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVy
blRlcm06OlR5cGVGb3J3YXJkUmVmZXJlbmNlOgorICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVy
blRlcm06OlR5cGU6OkZvcndhcmRSZWZlcmVuY2U6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogCi0gICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZVBhcmVudGhlc2VzU3Vi
cGF0dGVybjogeworICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OlBhcmVu
dGhlc2VzU3VicGF0dGVybjogewogICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBkaXNqdW5j
dGlvbkFscmVhZHlDaGVja2VkQ291bnQgPSAwOwogICAgICAgICAgICAgICAgICAgICBpZiAodGVy
bS5xdWFudGl0eU1heENvdW50ID09IDEgJiYgIXRlcm0ucGFyZW50aGVzZXMuaXNDb3B5KSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBhbHRlcm5hdGl2ZUZyYW1lTG9jYXRpb24g
PSB0ZXJtLmZyYW1lTG9jYXRpb247Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBGb3IgUXVh
bnRpZmllckZpeGVkQ291bnQgd2UgcHJlLWNoZWNrIHRoZSBtaW5pbXVtIHNpemU7IGZvciBncmVl
ZHkvbm9uLWdyZWVkeSB3ZSByZXNlcnZlIGEgc2xvdCBpbiB0aGUgZnJhbWUuCi0gICAgICAgICAg
ICAgICAgICAgICAgICBpZiAodGVybS5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllckZpeGVkQ291
bnQpCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBGb3IgUXVhbnRpZmllclR5cGU6OkZpeGVk
Q291bnQgd2UgcHJlLWNoZWNrIHRoZSBtaW5pbXVtIHNpemU7IGZvciBncmVlZHkvbm9uLWdyZWVk
eSB3ZSByZXNlcnZlIGEgc2xvdCBpbiB0aGUgZnJhbWUuCisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAodGVybS5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzanVuY3Rpb25BbHJlYWR5Q2hlY2tlZENvdW50
ID0gdGVybS5wYXJlbnRoZXNlcy5kaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHRlcm5h
dGl2ZUZyYW1lTG9jYXRpb24gKz0gWWFyclN0YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZvUGFyZW50
aGVzZXNPbmNlOwpAQCAtMjE0Niw3ICsyMTQ2LDcgQEAgY2xhc3MgQnl0ZUNvbXBpbGVyIHsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZVBhcmVudGhldGljYWxBc3NlcnRpb246IHsKKyAg
ICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpQYXJlbnRoZXRpY2FsQXNzZXJ0
aW9uOiB7CiAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGFsdGVybmF0aXZlRnJhbWVMb2Nh
dGlvbiA9IHRlcm0uZnJhbWVMb2NhdGlvbiArIFlhcnJTdGFja1NwYWNlRm9yQmFja1RyYWNrSW5m
b1BhcmVudGhldGljYWxBc3NlcnRpb247CiAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHBv
c2l0aXZlSW5wdXRPZmZzZXQgPSBjdXJyZW50Q291bnRBbHJlYWR5Q2hlY2tlZCAtIHRlcm0uaW5w
dXRQb3NpdGlvbjsKICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgdW5jaGVja0Ftb3VudCA9
IDA7CkBAIC0yMTcxLDcgKzIxNzEsNyBAQCBjbGFzcyBCeXRlQ29tcGlsZXIgewogICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBj
YXNlIFBhdHRlcm5UZXJtOjpUeXBlRG90U3RhckVuY2xvc3VyZToKKyAgICAgICAgICAgICAgICBj
YXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpEb3RTdGFyRW5jbG9zdXJlOgogICAgICAgICAgICAgICAg
ICAgICBhc3NlcnRpb25Eb3RTdGFyRW5jbG9zdXJlKHRlcm0uYW5jaG9ycy5ib2xBbmNob3IsIHRl
cm0uYW5jaG9ycy5lb2xBbmNob3IpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICB9CkBAIC0yMjAzLDcgKzIyMDMsNyBAQCBjbGFzcyBCeXRlQ29tcGlsZXIgewog
ICAgICAgICB9OwogCiAgICAgICAgIGF1dG8gZHVtcFF1YW50aXR5ID0gWyZdKEJ5dGVUZXJtJiB0
ZXJtKSB7Ci0gICAgICAgICAgICBpZiAodGVybS5hdG9tLnF1YW50aXR5VHlwZSA9PSBRdWFudGlm
aWVyRml4ZWRDb3VudCAmJiB0ZXJtLmF0b20ucXVhbnRpdHlNaW5Db3VudCA9PSAxICYmIHRlcm0u
YXRvbS5xdWFudGl0eU1heENvdW50ID09IDEpCisgICAgICAgICAgICBpZiAodGVybS5hdG9tLnF1
YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudCAmJiB0ZXJtLmF0b20ucXVh
bnRpdHlNaW5Db3VudCA9PSAxICYmIHRlcm0uYXRvbS5xdWFudGl0eU1heENvdW50ID09IDEpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBvdXQucHJpbnQoIiB7IiwgdGVy
bS5hdG9tLnF1YW50aXR5TWluQ291bnQpOwpAQCAtMjIxNCw5ICsyMjE0LDkgQEAgY2xhc3MgQnl0
ZUNvbXBpbGVyIHsKICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50KCIsIiwgdGVybS5hdG9t
LnF1YW50aXR5TWF4Q291bnQpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgb3V0LnByaW50
KCJ9Iik7Ci0gICAgICAgICAgICBpZiAodGVybS5hdG9tLnF1YW50aXR5VHlwZSA9PSBRdWFudGlm
aWVyR3JlZWR5KQorICAgICAgICAgICAgaWYgKHRlcm0uYXRvbS5xdWFudGl0eVR5cGUgPT0gUXVh
bnRpZmllclR5cGU6OkdyZWVkeSkKICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiBncmVlZHki
KTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHRlcm0uYXRvbS5xdWFudGl0eVR5cGUgPT0gUXVhbnRp
Zmllck5vbkdyZWVkeSkKKyAgICAgICAgICAgIGVsc2UgaWYgKHRlcm0uYXRvbS5xdWFudGl0eVR5
cGUgPT0gUXVhbnRpZmllclR5cGU6Ok5vbkdyZWVkeSkKICAgICAgICAgICAgICAgICBvdXQucHJp
bnQoIiBub24tZ3JlZWR5Iik7CiAgICAgICAgIH07CiAKQEAgLTIyNTQsNTkgKzIyNTQsNTkgQEAg
Y2xhc3MgQnl0ZUNvbXBpbGVyIHsKICAgICAgICAgICAgIGJvb2wgb3V0cHV0TmV3bGluZSA9IHRy
dWU7CiAKICAgICAgICAgICAgIHN3aXRjaCAodGVybS50eXBlKSB7Ci0gICAgICAgICAgICBjYXNl
IEJ5dGVUZXJtOjpUeXBlQm9keUFsdGVybmF0aXZlQmVnaW46CisgICAgICAgICAgICBjYXNlIEJ5
dGVUZXJtOjpUeXBlOjpCb2R5QWx0ZXJuYXRpdmVCZWdpbjoKICAgICAgICAgICAgICAgICBvdXRw
dXRUZXJtSW5kZXhBbmROZXN0KGlkeCwgbmVzdGluZysrKTsKICAgICAgICAgICAgICAgICBvdXQu
cHJpbnQoIkJvZHlBbHRlcm5hdGl2ZUJlZ2luIik7CiAgICAgICAgICAgICAgICAgaWYgKHRlcm0u
YWx0ZXJuYXRpdmUub25jZVRocm91Z2gpCiAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludCgi
IG9uY2VUaHJvdWdoIik7CiAgICAgICAgICAgICAgICAgZHVtcEZyYW1lTG9jYXRpb24odGVybSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBl
Qm9keUFsdGVybmF0aXZlRGlzanVuY3Rpb246CisgICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpU
eXBlOjpCb2R5QWx0ZXJuYXRpdmVEaXNqdW5jdGlvbjoKICAgICAgICAgICAgICAgICBvdXRwdXRU
ZXJtSW5kZXhBbmROZXN0KGlkeCwgbmVzdGluZyAtIDEpOwogICAgICAgICAgICAgICAgIG91dC5w
cmludCgiQm9keUFsdGVybmF0aXZlRGlzanVuY3Rpb24iKTsKICAgICAgICAgICAgICAgICBkdW1w
RnJhbWVMb2NhdGlvbih0ZXJtKTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IGNhc2UgQnl0ZVRlcm06OlR5cGVCb2R5QWx0ZXJuYXRpdmVFbmQ6CisgICAgICAgICAgICBjYXNl
IEJ5dGVUZXJtOjpUeXBlOjpCb2R5QWx0ZXJuYXRpdmVFbmQ6CiAgICAgICAgICAgICAgICAgb3V0
cHV0VGVybUluZGV4QW5kTmVzdChpZHgsIC0tbmVzdGluZyk7CiAgICAgICAgICAgICAgICAgb3V0
LnByaW50KCJCb2R5QWx0ZXJuYXRpdmVFbmQiKTsKICAgICAgICAgICAgICAgICBkdW1wRnJhbWVM
b2NhdGlvbih0ZXJtKTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2Ug
Qnl0ZVRlcm06OlR5cGVBbHRlcm5hdGl2ZUJlZ2luOgorICAgICAgICAgICAgY2FzZSBCeXRlVGVy
bTo6VHlwZTo6QWx0ZXJuYXRpdmVCZWdpbjoKICAgICAgICAgICAgICAgICBvdXRwdXRUZXJtSW5k
ZXhBbmROZXN0KGlkeCwgbmVzdGluZysrKTsKICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIkFs
dGVybmF0aXZlQmVnaW4iKTsKICAgICAgICAgICAgICAgICBkdW1wRnJhbWVMb2NhdGlvbih0ZXJt
KTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5
cGVBbHRlcm5hdGl2ZURpc2p1bmN0aW9uOgorICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlw
ZTo6QWx0ZXJuYXRpdmVEaXNqdW5jdGlvbjoKICAgICAgICAgICAgICAgICBvdXRwdXRUZXJtSW5k
ZXhBbmROZXN0KGlkeCwgbmVzdGluZyAtIDEpOwogICAgICAgICAgICAgICAgIG91dC5wcmludCgi
QWx0ZXJuYXRpdmVEaXNqdW5jdGlvbiIpOwogICAgICAgICAgICAgICAgIGR1bXBGcmFtZUxvY2F0
aW9uKHRlcm0pOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBCeXRl
VGVybTo6VHlwZUFsdGVybmF0aXZlRW5kOgorICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlw
ZTo6QWx0ZXJuYXRpdmVFbmQ6CiAgICAgICAgICAgICAgICAgb3V0cHV0VGVybUluZGV4QW5kTmVz
dChpZHgsIC0tbmVzdGluZyk7CiAgICAgICAgICAgICAgICAgb3V0LnByaW50KCJBbHRlcm5hdGl2
ZUVuZCIpOwogICAgICAgICAgICAgICAgIGR1bXBGcmFtZUxvY2F0aW9uKHRlcm0pOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVN1YnBhdHRl
cm5CZWdpbjoKKyAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGU6OlN1YnBhdHRlcm5CZWdp
bjoKICAgICAgICAgICAgICAgICBvdXRwdXRUZXJtSW5kZXhBbmROZXN0KGlkeCwgbmVzdGluZysr
KTsKICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIlN1YnBhdHRlcm5CZWdpbiIpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVN1YnBhdHRl
cm5FbmQ6CisgICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlOjpTdWJwYXR0ZXJuRW5kOgog
ICAgICAgICAgICAgICAgIG91dHB1dFRlcm1JbmRleEFuZE5lc3QoaWR4LCAtLW5lc3RpbmcpOwog
ICAgICAgICAgICAgICAgIG91dC5wcmludCgiU3VicGF0dGVybkVuZCIpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZUFzc2VydGlvbkJPTDoK
KyAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGU6OkFzc2VydGlvbkJPTDoKICAgICAgICAg
ICAgICAgICBvdXRwdXRUZXJtSW5kZXhBbmROZXN0KGlkeCwgbmVzdGluZyk7CiAgICAgICAgICAg
ICAgICAgb3V0LnByaW50KCJBc3NlcnRpb25CT0wiKTsKICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVBc3NlcnRpb25FT0w6CisgICAgICAgICAg
ICBjYXNlIEJ5dGVUZXJtOjpUeXBlOjpBc3NlcnRpb25FT0w6CiAgICAgICAgICAgICAgICAgb3V0
cHV0VGVybUluZGV4QW5kTmVzdChpZHgsIG5lc3RpbmcpOwogICAgICAgICAgICAgICAgIG91dC5w
cmludCgiQXNzZXJ0aW9uRU9MIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICBjYXNlIEJ5dGVUZXJtOjpUeXBlQXNzZXJ0aW9uV29yZEJvdW5kYXJ5OgorICAgICAgICAgICAg
Y2FzZSBCeXRlVGVybTo6VHlwZTo6QXNzZXJ0aW9uV29yZEJvdW5kYXJ5OgogICAgICAgICAgICAg
ICAgIG91dHB1dFRlcm1JbmRleEFuZE5lc3QoaWR4LCBuZXN0aW5nKTsKICAgICAgICAgICAgICAg
ICBvdXQucHJpbnQoIkFzc2VydGlvbldvcmRCb3VuZGFyeSIpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhdHRlcm5DaGFyYWN0ZXJPbmNl
OgorICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZTo6UGF0dGVybkNoYXJhY3Rlck9uY2U6
CiAgICAgICAgICAgICAgICAgb3V0cHV0VGVybUluZGV4QW5kTmVzdChpZHgsIG5lc3RpbmcpOwog
ICAgICAgICAgICAgICAgIG91dC5wcmludCgiUGF0dGVybkNoYXJhY3Rlck9uY2UiKTsKICAgICAg
ICAgICAgICAgICBkdW1wSW52ZXJ0ZWQodGVybSk7CkBAIC0yMzE1LDcgKzIzMTUsNyBAQCBjbGFz
cyBCeXRlQ29tcGlsZXIgewogICAgICAgICAgICAgICAgIGR1bXBDaGFyYWN0ZXIodGVybSk7CiAg
ICAgICAgICAgICAgICAgZHVtcFF1YW50aXR5KHRlcm0pOwogICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhdHRlcm5DaGFyYWN0ZXJGaXhlZDoK
KyAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGU6OlBhdHRlcm5DaGFyYWN0ZXJGaXhlZDoK
ICAgICAgICAgICAgICAgICBvdXRwdXRUZXJtSW5kZXhBbmROZXN0KGlkeCwgbmVzdGluZyk7CiAg
ICAgICAgICAgICAgICAgb3V0LnByaW50KCJQYXR0ZXJuQ2hhcmFjdGVyRml4ZWQiKTsKICAgICAg
ICAgICAgICAgICBkdW1wSW52ZXJ0ZWQodGVybSk7CkBAIC0yMzI0LDcgKzIzMjQsNyBAQCBjbGFz
cyBCeXRlQ29tcGlsZXIgewogICAgICAgICAgICAgICAgIGR1bXBDaGFyYWN0ZXIodGVybSk7CiAg
ICAgICAgICAgICAgICAgb3V0LnByaW50KCIgeyIsIHRlcm0uYXRvbS5xdWFudGl0eU1pbkNvdW50
LCAifSIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBCeXRlVGVy
bTo6VHlwZVBhdHRlcm5DaGFyYWN0ZXJHcmVlZHk6CisgICAgICAgICAgICBjYXNlIEJ5dGVUZXJt
OjpUeXBlOjpQYXR0ZXJuQ2hhcmFjdGVyR3JlZWR5OgogICAgICAgICAgICAgICAgIG91dHB1dFRl
cm1JbmRleEFuZE5lc3QoaWR4LCBuZXN0aW5nKTsKICAgICAgICAgICAgICAgICBvdXQucHJpbnQo
IlBhdHRlcm5DaGFyYWN0ZXJHcmVlZHkiKTsKICAgICAgICAgICAgICAgICBkdW1wSW52ZXJ0ZWQo
dGVybSk7CkBAIC0yMzMzLDcgKzIzMzMsNyBAQCBjbGFzcyBCeXRlQ29tcGlsZXIgewogICAgICAg
ICAgICAgICAgIGR1bXBDaGFyYWN0ZXIodGVybSk7CiAgICAgICAgICAgICAgICAgZHVtcFF1YW50
aXR5KHRlcm0pOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBCeXRl
VGVybTo6VHlwZVBhdHRlcm5DaGFyYWN0ZXJOb25HcmVlZHk6CisgICAgICAgICAgICBjYXNlIEJ5
dGVUZXJtOjpUeXBlOjpQYXR0ZXJuQ2hhcmFjdGVyTm9uR3JlZWR5OgogICAgICAgICAgICAgICAg
IG91dHB1dFRlcm1JbmRleEFuZE5lc3QoaWR4LCBuZXN0aW5nKTsKICAgICAgICAgICAgICAgICBv
dXQucHJpbnQoIlBhdHRlcm5DaGFyYWN0ZXJOb25HcmVlZHkiKTsKICAgICAgICAgICAgICAgICBk
dW1wSW52ZXJ0ZWQodGVybSk7CkBAIC0yMzQyLDIzICsyMzQyLDIzIEBAIGNsYXNzIEJ5dGVDb21w
aWxlciB7CiAgICAgICAgICAgICAgICAgZHVtcENoYXJhY3Rlcih0ZXJtKTsKICAgICAgICAgICAg
ICAgICBkdW1wUXVhbnRpdHkodGVybSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGF0dGVybkNhc2VkQ2hhcmFjdGVyT25jZToKKyAgICAg
ICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGU6OlBhdHRlcm5DYXNlZENoYXJhY3Rlck9uY2U6CiAg
ICAgICAgICAgICAgICAgb3V0cHV0VGVybUluZGV4QW5kTmVzdChpZHgsIG5lc3RpbmcpOwogICAg
ICAgICAgICAgICAgIG91dC5wcmludCgiUGF0dGVybkNhc2VkQ2hhcmFjdGVyT25jZSIpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhdHRl
cm5DYXNlZENoYXJhY3RlckZpeGVkOgorICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZTo6
UGF0dGVybkNhc2VkQ2hhcmFjdGVyRml4ZWQ6CiAgICAgICAgICAgICAgICAgb3V0cHV0VGVybUlu
ZGV4QW5kTmVzdChpZHgsIG5lc3RpbmcpOwogICAgICAgICAgICAgICAgIG91dC5wcmludCgiUGF0
dGVybkNhc2VkQ2hhcmFjdGVyRml4ZWQiKTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXR0ZXJuQ2FzZWRDaGFyYWN0ZXJHcmVlZHk6Cisg
ICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlOjpQYXR0ZXJuQ2FzZWRDaGFyYWN0ZXJHcmVl
ZHk6CiAgICAgICAgICAgICAgICAgb3V0cHV0VGVybUluZGV4QW5kTmVzdChpZHgsIG5lc3Rpbmcp
OwogICAgICAgICAgICAgICAgIG91dC5wcmludCgiUGF0dGVybkNhc2VkQ2hhcmFjdGVyR3JlZWR5
Iik7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpU
eXBlUGF0dGVybkNhc2VkQ2hhcmFjdGVyTm9uR3JlZWR5OgorICAgICAgICAgICAgY2FzZSBCeXRl
VGVybTo6VHlwZTo6UGF0dGVybkNhc2VkQ2hhcmFjdGVyTm9uR3JlZWR5OgogICAgICAgICAgICAg
ICAgIG91dHB1dFRlcm1JbmRleEFuZE5lc3QoaWR4LCBuZXN0aW5nKTsKICAgICAgICAgICAgICAg
ICBvdXQucHJpbnQoIlBhdHRlcm5DYXNlZENoYXJhY3Rlck5vbkdyZWVkeSIpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZUNoYXJhY3RlckNs
YXNzOgorICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZTo6Q2hhcmFjdGVyQ2xhc3M6CiAg
ICAgICAgICAgICAgICAgb3V0cHV0VGVybUluZGV4QW5kTmVzdChpZHgsIG5lc3RpbmcpOwogICAg
ICAgICAgICAgICAgIG91dC5wcmludCgiQ2hhcmFjdGVyQ2xhc3MiKTsKICAgICAgICAgICAgICAg
ICBkdW1wSW52ZXJ0ZWQodGVybSk7CkBAIC0yMzY3LDEyICsyMzY3LDEyIEBAIGNsYXNzIEJ5dGVD
b21waWxlciB7CiAgICAgICAgICAgICAgICAgZHVtcENoYXJDbGFzcyh0ZXJtKTsKICAgICAgICAg
ICAgICAgICBkdW1wUXVhbnRpdHkodGVybSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlQmFja1JlZmVyZW5jZToKKyAgICAgICAgICAgIGNh
c2UgQnl0ZVRlcm06OlR5cGU6OkJhY2tSZWZlcmVuY2U6CiAgICAgICAgICAgICAgICAgb3V0cHV0
VGVybUluZGV4QW5kTmVzdChpZHgsIG5lc3RpbmcpOwogICAgICAgICAgICAgICAgIG91dC5wcmlu
dCgiQmFja1JlZmVyZW5jZSAjIiwgdGVybS5hdG9tLnN1YnBhdHRlcm5JZCk7CiAgICAgICAgICAg
ICAgICAgZHVtcFF1YW50aXR5KHRlcm0pOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVybjoKKyAgICAgICAg
ICAgIGNhc2UgQnl0ZVRlcm06OlR5cGU6OlBhcmVudGhlc2VzU3VicGF0dGVybjoKICAgICAgICAg
ICAgICAgICBvdXRwdXRUZXJtSW5kZXhBbmROZXN0KGlkeCwgbmVzdGluZyk7CiAgICAgICAgICAg
ICAgICAgb3V0LnByaW50KCJQYXJlbnRoZXNlc1N1YnBhdHRlcm4iKTsKICAgICAgICAgICAgICAg
ICBkdW1wQ2FwdHVyZWQodGVybSk7CkBAIC0yMzg0LDcgKzIzODQsNyBAQCBjbGFzcyBCeXRlQ29t
cGlsZXIgewogICAgICAgICAgICAgICAgIG91dHB1dE5ld2xpbmUgPSBmYWxzZTsKICAgICAgICAg
ICAgICAgICBkdW1wRGlzanVuY3Rpb24odGVybS5hdG9tLnBhcmVudGhlc2VzRGlzanVuY3Rpb24s
IG5lc3RpbmcpOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBCeXRl
VGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVybk9uY2VCZWdpbjoKKyAgICAgICAgICAgIGNh
c2UgQnl0ZVRlcm06OlR5cGU6OlBhcmVudGhlc2VzU3VicGF0dGVybk9uY2VCZWdpbjoKICAgICAg
ICAgICAgICAgICBvdXRwdXRUZXJtSW5kZXhBbmROZXN0KGlkeCwgbmVzdGluZysrKTsKICAgICAg
ICAgICAgICAgICBvdXQucHJpbnQoIlBhcmVudGhlc2VzU3VicGF0dGVybk9uY2VCZWdpbiIpOwog
ICAgICAgICAgICAgICAgIGR1bXBDYXB0dXJlZCh0ZXJtKTsKQEAgLTIzOTIsNDQgKzIzOTIsNDQg
QEAgY2xhc3MgQnl0ZUNvbXBpbGVyIHsKICAgICAgICAgICAgICAgICBkdW1wSW5wdXRQb3NpdGlv
bih0ZXJtKTsKICAgICAgICAgICAgICAgICBkdW1wRnJhbWVMb2NhdGlvbih0ZXJtKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXJlbnRo
ZXNlc1N1YnBhdHRlcm5PbmNlRW5kOgorICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZTo6
UGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUVuZDoKICAgICAgICAgICAgICAgICBvdXRwdXRUZXJt
SW5kZXhBbmROZXN0KGlkeCwgLS1uZXN0aW5nKTsKICAgICAgICAgICAgICAgICBvdXQucHJpbnQo
IlBhcmVudGhlc2VzU3VicGF0dGVybk9uY2VFbmQiKTsKICAgICAgICAgICAgICAgICBkdW1wRnJh
bWVMb2NhdGlvbih0ZXJtKTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNh
c2UgQnl0ZVRlcm06OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEJlZ2luOgorICAg
ICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuVGVybWlu
YWxCZWdpbjoKICAgICAgICAgICAgICAgICBvdXRwdXRUZXJtSW5kZXhBbmROZXN0KGlkeCwgbmVz
dGluZysrKTsKICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIlBhcmVudGhlc2VzU3VicGF0dGVy
blRlcm1pbmFsQmVnaW4iKTsKICAgICAgICAgICAgICAgICBkdW1wSW52ZXJ0ZWQodGVybSk7CiAg
ICAgICAgICAgICAgICAgZHVtcElucHV0UG9zaXRpb24odGVybSk7CiAgICAgICAgICAgICAgICAg
ZHVtcEZyYW1lTG9jYXRpb24odGVybSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuVGVybWluYWxFbmQ6
CisgICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm5U
ZXJtaW5hbEVuZDoKICAgICAgICAgICAgICAgICBvdXRwdXRUZXJtSW5kZXhBbmROZXN0KGlkeCwg
LS1uZXN0aW5nKTsKICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIlBhcmVudGhlc2VzU3VicGF0
dGVyblRlcm1pbmFsRW5kIik7CiAgICAgICAgICAgICAgICAgZHVtcEZyYW1lTG9jYXRpb24odGVy
bSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpU
eXBlUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luOgorICAgICAgICAgICAgY2FzZSBCeXRlVGVy
bTo6VHlwZTo6UGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luOgogICAgICAgICAgICAgICAgIG91
dHB1dFRlcm1JbmRleEFuZE5lc3QoaWR4LCBuZXN0aW5nKyspOwogICAgICAgICAgICAgICAgIG91
dC5wcmludCgiUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luIik7CiAgICAgICAgICAgICAgICAg
ZHVtcEludmVydGVkKHRlcm0pOwogICAgICAgICAgICAgICAgIGR1bXBJbnB1dFBvc2l0aW9uKHRl
cm0pOwogICAgICAgICAgICAgICAgIGR1bXBGcmFtZUxvY2F0aW9uKHRlcm0pOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhcmVudGhldGlj
YWxBc3NlcnRpb25FbmQ6CisgICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlOjpQYXJlbnRo
ZXRpY2FsQXNzZXJ0aW9uRW5kOgogICAgICAgICAgICAgICAgIG91dHB1dFRlcm1JbmRleEFuZE5l
c3QoaWR4LCAtLW5lc3RpbmcpOwogICAgICAgICAgICAgICAgIG91dC5wcmludCgiUGFyZW50aGV0
aWNhbEFzc2VydGlvbkVuZCIpOwogICAgICAgICAgICAgICAgIGR1bXBGcmFtZUxvY2F0aW9uKHRl
cm0pOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6
VHlwZUNoZWNrSW5wdXQ6CisgICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlOjpDaGVja0lu
cHV0OgogICAgICAgICAgICAgICAgIG91dHB1dFRlcm1JbmRleEFuZE5lc3QoaWR4LCBuZXN0aW5n
KTsKICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIkNoZWNrSW5wdXQgIiwgdGVybS5jaGVja0lu
cHV0Q291bnQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBCeXRl
VGVybTo6VHlwZVVuY2hlY2tJbnB1dDoKKyAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGU6
OlVuY2hlY2tJbnB1dDoKICAgICAgICAgICAgICAgICBvdXRwdXRUZXJtSW5kZXhBbmROZXN0KGlk
eCwgbmVzdGluZyk7CiAgICAgICAgICAgICAgICAgb3V0LnByaW50KCJVbmNoZWNrSW5wdXQgIiwg
dGVybS5jaGVja0lucHV0Q291bnQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgY2FzZSBCeXRlVGVybTo6VHlwZURvdFN0YXJFbmNsb3N1cmU6CisgICAgICAgICAgICBjYXNl
IEJ5dGVUZXJtOjpUeXBlOjpEb3RTdGFyRW5jbG9zdXJlOgogICAgICAgICAgICAgICAgIG91dHB1
dFRlcm1JbmRleEFuZE5lc3QoaWR4LCBuZXN0aW5nKTsKICAgICAgICAgICAgICAgICBvdXQucHJp
bnQoIkRvdFN0YXJFbmNsb3N1cmUiKTsKICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmgKaW5kZXggYTVjNjk1YzU4Yjli
ZGY2Njg2NmY0ZjQ5OTBhMGNhNGFiY2JmY2RlMS4uYTg0MGVmOWExMTZjOWRkYTFkOWQyZjhhMDA4
MTY4MWFmYmQ2ZGU0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
ckludGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVy
cHJldGVyLmgKQEAgLTcxLDM5ICs3MSw0MCBAQCBzdHJ1Y3QgQnl0ZVRlcm0gewogICAgICAgICB1
bnNpZ25lZCBjaGVja0lucHV0Q291bnQ7CiAgICAgfTsKICAgICB1bnNpZ25lZCBmcmFtZUxvY2F0
aW9uOwotICAgIGVudW0gVHlwZSA6IHVpbnQ4X3QgewotICAgICAgICBUeXBlQm9keUFsdGVybmF0
aXZlQmVnaW4sCi0gICAgICAgIFR5cGVCb2R5QWx0ZXJuYXRpdmVEaXNqdW5jdGlvbiwKLSAgICAg
ICAgVHlwZUJvZHlBbHRlcm5hdGl2ZUVuZCwKLSAgICAgICAgVHlwZUFsdGVybmF0aXZlQmVnaW4s
Ci0gICAgICAgIFR5cGVBbHRlcm5hdGl2ZURpc2p1bmN0aW9uLAotICAgICAgICBUeXBlQWx0ZXJu
YXRpdmVFbmQsCi0gICAgICAgIFR5cGVTdWJwYXR0ZXJuQmVnaW4sCi0gICAgICAgIFR5cGVTdWJw
YXR0ZXJuRW5kLAotICAgICAgICBUeXBlQXNzZXJ0aW9uQk9MLAotICAgICAgICBUeXBlQXNzZXJ0
aW9uRU9MLAotICAgICAgICBUeXBlQXNzZXJ0aW9uV29yZEJvdW5kYXJ5LAotICAgICAgICBUeXBl
UGF0dGVybkNoYXJhY3Rlck9uY2UsCi0gICAgICAgIFR5cGVQYXR0ZXJuQ2hhcmFjdGVyRml4ZWQs
Ci0gICAgICAgIFR5cGVQYXR0ZXJuQ2hhcmFjdGVyR3JlZWR5LAotICAgICAgICBUeXBlUGF0dGVy
bkNoYXJhY3Rlck5vbkdyZWVkeSwKLSAgICAgICAgVHlwZVBhdHRlcm5DYXNlZENoYXJhY3Rlck9u
Y2UsCi0gICAgICAgIFR5cGVQYXR0ZXJuQ2FzZWRDaGFyYWN0ZXJGaXhlZCwKLSAgICAgICAgVHlw
ZVBhdHRlcm5DYXNlZENoYXJhY3RlckdyZWVkeSwKLSAgICAgICAgVHlwZVBhdHRlcm5DYXNlZENo
YXJhY3Rlck5vbkdyZWVkeSwKLSAgICAgICAgVHlwZUNoYXJhY3RlckNsYXNzLAotICAgICAgICBU
eXBlQmFja1JlZmVyZW5jZSwKLSAgICAgICAgVHlwZVBhcmVudGhlc2VzU3VicGF0dGVybiwKLSAg
ICAgICAgVHlwZVBhcmVudGhlc2VzU3VicGF0dGVybk9uY2VCZWdpbiwKLSAgICAgICAgVHlwZVBh
cmVudGhlc2VzU3VicGF0dGVybk9uY2VFbmQsCi0gICAgICAgIFR5cGVQYXJlbnRoZXNlc1N1YnBh
dHRlcm5UZXJtaW5hbEJlZ2luLAotICAgICAgICBUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuVGVy
bWluYWxFbmQsCi0gICAgICAgIFR5cGVQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW4sCi0gICAg
ICAgIFR5cGVQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uRW5kLAotICAgICAgICBUeXBlQ2hlY2tJbnB1
dCwKLSAgICAgICAgVHlwZVVuY2hlY2tJbnB1dCwKLSAgICAgICAgVHlwZURvdFN0YXJFbmNsb3N1
cmUsCi0gICAgfSB0eXBlOworICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgeworICAgICAg
ICBCb2R5QWx0ZXJuYXRpdmVCZWdpbiwKKyAgICAgICAgQm9keUFsdGVybmF0aXZlRGlzanVuY3Rp
b24sCisgICAgICAgIEJvZHlBbHRlcm5hdGl2ZUVuZCwKKyAgICAgICAgQWx0ZXJuYXRpdmVCZWdp
biwKKyAgICAgICAgQWx0ZXJuYXRpdmVEaXNqdW5jdGlvbiwKKyAgICAgICAgQWx0ZXJuYXRpdmVF
bmQsCisgICAgICAgIFN1YnBhdHRlcm5CZWdpbiwKKyAgICAgICAgU3VicGF0dGVybkVuZCwKKyAg
ICAgICAgQXNzZXJ0aW9uQk9MLAorICAgICAgICBBc3NlcnRpb25FT0wsCisgICAgICAgIEFzc2Vy
dGlvbldvcmRCb3VuZGFyeSwKKyAgICAgICAgUGF0dGVybkNoYXJhY3Rlck9uY2UsCisgICAgICAg
IFBhdHRlcm5DaGFyYWN0ZXJGaXhlZCwKKyAgICAgICAgUGF0dGVybkNoYXJhY3RlckdyZWVkeSwK
KyAgICAgICAgUGF0dGVybkNoYXJhY3Rlck5vbkdyZWVkeSwKKyAgICAgICAgUGF0dGVybkNhc2Vk
Q2hhcmFjdGVyT25jZSwKKyAgICAgICAgUGF0dGVybkNhc2VkQ2hhcmFjdGVyRml4ZWQsCisgICAg
ICAgIFBhdHRlcm5DYXNlZENoYXJhY3RlckdyZWVkeSwKKyAgICAgICAgUGF0dGVybkNhc2VkQ2hh
cmFjdGVyTm9uR3JlZWR5LAorICAgICAgICBDaGFyYWN0ZXJDbGFzcywKKyAgICAgICAgQmFja1Jl
ZmVyZW5jZSwKKyAgICAgICAgUGFyZW50aGVzZXNTdWJwYXR0ZXJuLAorICAgICAgICBQYXJlbnRo
ZXNlc1N1YnBhdHRlcm5PbmNlQmVnaW4sCisgICAgICAgIFBhcmVudGhlc2VzU3VicGF0dGVybk9u
Y2VFbmQsCisgICAgICAgIFBhcmVudGhlc2VzU3VicGF0dGVyblRlcm1pbmFsQmVnaW4sCisgICAg
ICAgIFBhcmVudGhlc2VzU3VicGF0dGVyblRlcm1pbmFsRW5kLAorICAgICAgICBQYXJlbnRoZXRp
Y2FsQXNzZXJ0aW9uQmVnaW4sCisgICAgICAgIFBhcmVudGhldGljYWxBc3NlcnRpb25FbmQsCisg
ICAgICAgIENoZWNrSW5wdXQsCisgICAgICAgIFVuY2hlY2tJbnB1dCwKKyAgICAgICAgRG90U3Rh
ckVuY2xvc3VyZSwKKyAgICB9OworICAgIFR5cGUgdHlwZTsKICAgICBib29sIG1fY2FwdHVyZSA6
IDE7CiAgICAgYm9vbCBtX2ludmVydCA6IDE7CiAgICAgdW5zaWduZWQgaW5wdXRQb3NpdGlvbjsK
QEAgLTEyMCwxNCArMTIxLDE0IEBAIHN0cnVjdCBCeXRlVGVybSB7CiAgICAgICAgIGlucHV0UG9z
aXRpb24gPSBpbnB1dFBvczsKIAogICAgICAgICBzd2l0Y2ggKHF1YW50aXR5VHlwZSkgewotICAg
ICAgICBjYXNlIFF1YW50aWZpZXJGaXhlZENvdW50OgotICAgICAgICAgICAgdHlwZSA9IChxdWFu
dGl0eUNvdW50ID09IDEpID8gQnl0ZVRlcm06OlR5cGVQYXR0ZXJuQ2hhcmFjdGVyT25jZSA6IEJ5
dGVUZXJtOjpUeXBlUGF0dGVybkNoYXJhY3RlckZpeGVkOworICAgICAgICBjYXNlIFF1YW50aWZp
ZXJUeXBlOjpGaXhlZENvdW50OgorICAgICAgICAgICAgdHlwZSA9IChxdWFudGl0eUNvdW50ID09
IDEpID8gQnl0ZVRlcm06OlR5cGU6OlBhdHRlcm5DaGFyYWN0ZXJPbmNlIDogQnl0ZVRlcm06OlR5
cGU6OlBhdHRlcm5DaGFyYWN0ZXJGaXhlZDsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIFF1YW50aWZpZXJHcmVlZHk6Ci0gICAgICAgICAgICB0eXBlID0gQnl0ZVRlcm06OlR5cGVQ
YXR0ZXJuQ2hhcmFjdGVyR3JlZWR5OworICAgICAgICBjYXNlIFF1YW50aWZpZXJUeXBlOjpHcmVl
ZHk6CisgICAgICAgICAgICB0eXBlID0gQnl0ZVRlcm06OlR5cGU6OlBhdHRlcm5DaGFyYWN0ZXJH
cmVlZHk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBRdWFudGlmaWVyTm9uR3Jl
ZWR5OgotICAgICAgICAgICAgdHlwZSA9IEJ5dGVUZXJtOjpUeXBlUGF0dGVybkNoYXJhY3Rlck5v
bkdyZWVkeTsKKyAgICAgICAgY2FzZSBRdWFudGlmaWVyVHlwZTo6Tm9uR3JlZWR5OgorICAgICAg
ICAgICAgdHlwZSA9IEJ5dGVUZXJtOjpUeXBlOjpQYXR0ZXJuQ2hhcmFjdGVyTm9uR3JlZWR5Owog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMzgsMTQgKzEzOSwxNCBA
QCBzdHJ1Y3QgQnl0ZVRlcm0gewogICAgICAgICAsIG1faW52ZXJ0KGZhbHNlKQogICAgIHsKICAg
ICAgICAgc3dpdGNoIChxdWFudGl0eVR5cGUpIHsKLSAgICAgICAgY2FzZSBRdWFudGlmaWVyRml4
ZWRDb3VudDoKLSAgICAgICAgICAgIHR5cGUgPSAocXVhbnRpdHlDb3VudCA9PSAxKSA/IEJ5dGVU
ZXJtOjpUeXBlUGF0dGVybkNhc2VkQ2hhcmFjdGVyT25jZSA6IEJ5dGVUZXJtOjpUeXBlUGF0dGVy
bkNhc2VkQ2hhcmFjdGVyRml4ZWQ7CisgICAgICAgIGNhc2UgUXVhbnRpZmllclR5cGU6OkZpeGVk
Q291bnQ6CisgICAgICAgICAgICB0eXBlID0gKHF1YW50aXR5Q291bnQgPT0gMSkgPyBCeXRlVGVy
bTo6VHlwZTo6UGF0dGVybkNhc2VkQ2hhcmFjdGVyT25jZSA6IEJ5dGVUZXJtOjpUeXBlOjpQYXR0
ZXJuQ2FzZWRDaGFyYWN0ZXJGaXhlZDsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IFF1YW50aWZpZXJHcmVlZHk6Ci0gICAgICAgICAgICB0eXBlID0gQnl0ZVRlcm06OlR5cGVQYXR0
ZXJuQ2FzZWRDaGFyYWN0ZXJHcmVlZHk7CisgICAgICAgIGNhc2UgUXVhbnRpZmllclR5cGU6Okdy
ZWVkeToKKyAgICAgICAgICAgIHR5cGUgPSBCeXRlVGVybTo6VHlwZTo6UGF0dGVybkNhc2VkQ2hh
cmFjdGVyR3JlZWR5OwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUXVhbnRpZmll
ck5vbkdyZWVkeToKLSAgICAgICAgICAgIHR5cGUgPSBCeXRlVGVybTo6VHlwZVBhdHRlcm5DYXNl
ZENoYXJhY3Rlck5vbkdyZWVkeTsKKyAgICAgICAgY2FzZSBRdWFudGlmaWVyVHlwZTo6Tm9uR3Jl
ZWR5OgorICAgICAgICAgICAgdHlwZSA9IEJ5dGVUZXJtOjpUeXBlOjpQYXR0ZXJuQ2FzZWRDaGFy
YWN0ZXJOb25HcmVlZHk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0xNTgs
MTIgKzE1OSwxMiBAQCBzdHJ1Y3QgQnl0ZVRlcm0gewogICAgIH0KIAogICAgIEJ5dGVUZXJtKENo
YXJhY3RlckNsYXNzKiBjaGFyYWN0ZXJDbGFzcywgYm9vbCBpbnZlcnQsIHVuc2lnbmVkIGlucHV0
UG9zKQotICAgICAgICA6IHR5cGUoQnl0ZVRlcm06OlR5cGVDaGFyYWN0ZXJDbGFzcykKKyAgICAg
ICAgOiB0eXBlKEJ5dGVUZXJtOjpUeXBlOjpDaGFyYWN0ZXJDbGFzcykKICAgICAgICAgLCBtX2Nh
cHR1cmUoZmFsc2UpCiAgICAgICAgICwgbV9pbnZlcnQoaW52ZXJ0KQogICAgIHsKICAgICAgICAg
YXRvbS5jaGFyYWN0ZXJDbGFzcyA9IGNoYXJhY3RlckNsYXNzOwotICAgICAgICBhdG9tLnF1YW50
aXR5VHlwZSA9IFF1YW50aWZpZXJGaXhlZENvdW50OworICAgICAgICBhdG9tLnF1YW50aXR5VHlw
ZSA9IFF1YW50aWZpZXJUeXBlOjpGaXhlZENvdW50OwogICAgICAgICBhdG9tLnF1YW50aXR5TWlu
Q291bnQgPSAxOwogICAgICAgICBhdG9tLnF1YW50aXR5TWF4Q291bnQgPSAxOwogICAgICAgICBp
bnB1dFBvc2l0aW9uID0gaW5wdXRQb3M7CkBAIC0xNzYsNyArMTc3LDcgQEAgc3RydWN0IEJ5dGVU
ZXJtIHsKICAgICB7CiAgICAgICAgIGF0b20uc3VicGF0dGVybklkID0gc3VicGF0dGVybklkOwog
ICAgICAgICBhdG9tLnBhcmVudGhlc2VzRGlzanVuY3Rpb24gPSBwYXJlbnRoZXNlc0luZm87Ci0g
ICAgICAgIGF0b20ucXVhbnRpdHlUeXBlID0gUXVhbnRpZmllckZpeGVkQ291bnQ7CisgICAgICAg
IGF0b20ucXVhbnRpdHlUeXBlID0gUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQ7CiAgICAgICAg
IGF0b20ucXVhbnRpdHlNaW5Db3VudCA9IDE7CiAgICAgICAgIGF0b20ucXVhbnRpdHlNYXhDb3Vu
dCA9IDE7CiAgICAgICAgIGlucHV0UG9zaXRpb24gPSBpbnB1dFBvczsKQEAgLTE4Nyw3ICsxODgs
NyBAQCBzdHJ1Y3QgQnl0ZVRlcm0gewogICAgICAgICAsIG1fY2FwdHVyZShmYWxzZSkKICAgICAg
ICAgLCBtX2ludmVydChpbnZlcnQpCiAgICAgewotICAgICAgICBhdG9tLnF1YW50aXR5VHlwZSA9
IFF1YW50aWZpZXJGaXhlZENvdW50OworICAgICAgICBhdG9tLnF1YW50aXR5VHlwZSA9IFF1YW50
aWZpZXJUeXBlOjpGaXhlZENvdW50OwogICAgICAgICBhdG9tLnF1YW50aXR5TWluQ291bnQgPSAx
OwogICAgICAgICBhdG9tLnF1YW50aXR5TWF4Q291bnQgPSAxOwogICAgIH0KQEAgLTE5OCw3ICsx
OTksNyBAQCBzdHJ1Y3QgQnl0ZVRlcm0gewogICAgICAgICAsIG1faW52ZXJ0KGludmVydCkKICAg
ICB7CiAgICAgICAgIGF0b20uc3VicGF0dGVybklkID0gc3VicGF0dGVybklkOwotICAgICAgICBh
dG9tLnF1YW50aXR5VHlwZSA9IFF1YW50aWZpZXJGaXhlZENvdW50OworICAgICAgICBhdG9tLnF1
YW50aXR5VHlwZSA9IFF1YW50aWZpZXJUeXBlOjpGaXhlZENvdW50OwogICAgICAgICBhdG9tLnF1
YW50aXR5TWluQ291bnQgPSAxOwogICAgICAgICBhdG9tLnF1YW50aXR5TWF4Q291bnQgPSAxOwog
ICAgICAgICBpbnB1dFBvc2l0aW9uID0gaW5wdXRQb3M7CkBAIC0yMDYsNDcgKzIwNyw0NyBAQCBz
dHJ1Y3QgQnl0ZVRlcm0gewogCiAgICAgc3RhdGljIEJ5dGVUZXJtIEJPTCh1bnNpZ25lZCBpbnB1
dFBvcykKICAgICB7Ci0gICAgICAgIEJ5dGVUZXJtIHRlcm0oVHlwZUFzc2VydGlvbkJPTCk7Cisg
ICAgICAgIEJ5dGVUZXJtIHRlcm0oVHlwZTo6QXNzZXJ0aW9uQk9MKTsKICAgICAgICAgdGVybS5p
bnB1dFBvc2l0aW9uID0gaW5wdXRQb3M7CiAgICAgICAgIHJldHVybiB0ZXJtOwogICAgIH0KIAog
ICAgIHN0YXRpYyBCeXRlVGVybSBDaGVja0lucHV0KENoZWNrZWQ8dW5zaWduZWQ+IGNvdW50KQog
ICAgIHsKLSAgICAgICAgQnl0ZVRlcm0gdGVybShUeXBlQ2hlY2tJbnB1dCk7CisgICAgICAgIEJ5
dGVUZXJtIHRlcm0oVHlwZTo6Q2hlY2tJbnB1dCk7CiAgICAgICAgIHRlcm0uY2hlY2tJbnB1dENv
dW50ID0gY291bnQ7CiAgICAgICAgIHJldHVybiB0ZXJtOwogICAgIH0KIAogICAgIHN0YXRpYyBC
eXRlVGVybSBVbmNoZWNrSW5wdXQoQ2hlY2tlZDx1bnNpZ25lZD4gY291bnQpCiAgICAgewotICAg
ICAgICBCeXRlVGVybSB0ZXJtKFR5cGVVbmNoZWNrSW5wdXQpOworICAgICAgICBCeXRlVGVybSB0
ZXJtKFR5cGU6OlVuY2hlY2tJbnB1dCk7CiAgICAgICAgIHRlcm0uY2hlY2tJbnB1dENvdW50ID0g
Y291bnQ7CiAgICAgICAgIHJldHVybiB0ZXJtOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgQnl0
ZVRlcm0gRU9MKHVuc2lnbmVkIGlucHV0UG9zKQogICAgIHsKLSAgICAgICAgQnl0ZVRlcm0gdGVy
bShUeXBlQXNzZXJ0aW9uRU9MKTsKKyAgICAgICAgQnl0ZVRlcm0gdGVybShUeXBlOjpBc3NlcnRp
b25FT0wpOwogICAgICAgICB0ZXJtLmlucHV0UG9zaXRpb24gPSBpbnB1dFBvczsKICAgICAgICAg
cmV0dXJuIHRlcm07CiAgICAgfQogCiAgICAgc3RhdGljIEJ5dGVUZXJtIFdvcmRCb3VuZGFyeShi
b29sIGludmVydCwgdW5zaWduZWQgaW5wdXRQb3MpCiAgICAgewotICAgICAgICBCeXRlVGVybSB0
ZXJtKFR5cGVBc3NlcnRpb25Xb3JkQm91bmRhcnksIGludmVydCk7CisgICAgICAgIEJ5dGVUZXJt
IHRlcm0oVHlwZTo6QXNzZXJ0aW9uV29yZEJvdW5kYXJ5LCBpbnZlcnQpOwogICAgICAgICB0ZXJt
LmlucHV0UG9zaXRpb24gPSBpbnB1dFBvczsKICAgICAgICAgcmV0dXJuIHRlcm07CiAgICAgfQog
ICAgIAogICAgIHN0YXRpYyBCeXRlVGVybSBCYWNrUmVmZXJlbmNlKHVuc2lnbmVkIHN1YnBhdHRl
cm5JZCwgdW5zaWduZWQgaW5wdXRQb3MpCiAgICAgewotICAgICAgICByZXR1cm4gQnl0ZVRlcm0o
VHlwZUJhY2tSZWZlcmVuY2UsIHN1YnBhdHRlcm5JZCwgZmFsc2UsIGZhbHNlLCBpbnB1dFBvcyk7
CisgICAgICAgIHJldHVybiBCeXRlVGVybShUeXBlOjpCYWNrUmVmZXJlbmNlLCBzdWJwYXR0ZXJu
SWQsIGZhbHNlLCBmYWxzZSwgaW5wdXRQb3MpOwogICAgIH0KIAogICAgIHN0YXRpYyBCeXRlVGVy
bSBCb2R5QWx0ZXJuYXRpdmVCZWdpbihib29sIG9uY2VUaHJvdWdoKQogICAgIHsKLSAgICAgICAg
Qnl0ZVRlcm0gdGVybShUeXBlQm9keUFsdGVybmF0aXZlQmVnaW4pOworICAgICAgICBCeXRlVGVy
bSB0ZXJtKFR5cGU6OkJvZHlBbHRlcm5hdGl2ZUJlZ2luKTsKICAgICAgICAgdGVybS5hbHRlcm5h
dGl2ZS5uZXh0ID0gMDsKICAgICAgICAgdGVybS5hbHRlcm5hdGl2ZS5lbmQgPSAwOwogICAgICAg
ICB0ZXJtLmFsdGVybmF0aXZlLm9uY2VUaHJvdWdoID0gb25jZVRocm91Z2g7CkBAIC0yNTUsNyAr
MjU2LDcgQEAgc3RydWN0IEJ5dGVUZXJtIHsKIAogICAgIHN0YXRpYyBCeXRlVGVybSBCb2R5QWx0
ZXJuYXRpdmVEaXNqdW5jdGlvbihib29sIG9uY2VUaHJvdWdoKQogICAgIHsKLSAgICAgICAgQnl0
ZVRlcm0gdGVybShUeXBlQm9keUFsdGVybmF0aXZlRGlzanVuY3Rpb24pOworICAgICAgICBCeXRl
VGVybSB0ZXJtKFR5cGU6OkJvZHlBbHRlcm5hdGl2ZURpc2p1bmN0aW9uKTsKICAgICAgICAgdGVy
bS5hbHRlcm5hdGl2ZS5uZXh0ID0gMDsKICAgICAgICAgdGVybS5hbHRlcm5hdGl2ZS5lbmQgPSAw
OwogICAgICAgICB0ZXJtLmFsdGVybmF0aXZlLm9uY2VUaHJvdWdoID0gb25jZVRocm91Z2g7CkBA
IC0yNjQsNyArMjY1LDcgQEAgc3RydWN0IEJ5dGVUZXJtIHsKIAogICAgIHN0YXRpYyBCeXRlVGVy
bSBCb2R5QWx0ZXJuYXRpdmVFbmQoKQogICAgIHsKLSAgICAgICAgQnl0ZVRlcm0gdGVybShUeXBl
Qm9keUFsdGVybmF0aXZlRW5kKTsKKyAgICAgICAgQnl0ZVRlcm0gdGVybShUeXBlOjpCb2R5QWx0
ZXJuYXRpdmVFbmQpOwogICAgICAgICB0ZXJtLmFsdGVybmF0aXZlLm5leHQgPSAwOwogICAgICAg
ICB0ZXJtLmFsdGVybmF0aXZlLmVuZCA9IDA7CiAgICAgICAgIHRlcm0uYWx0ZXJuYXRpdmUub25j
ZVRocm91Z2ggPSBmYWxzZTsKQEAgLTI3Myw3ICsyNzQsNyBAQCBzdHJ1Y3QgQnl0ZVRlcm0gewog
CiAgICAgc3RhdGljIEJ5dGVUZXJtIEFsdGVybmF0aXZlQmVnaW4oKQogICAgIHsKLSAgICAgICAg
Qnl0ZVRlcm0gdGVybShUeXBlQWx0ZXJuYXRpdmVCZWdpbik7CisgICAgICAgIEJ5dGVUZXJtIHRl
cm0oVHlwZTo6QWx0ZXJuYXRpdmVCZWdpbik7CiAgICAgICAgIHRlcm0uYWx0ZXJuYXRpdmUubmV4
dCA9IDA7CiAgICAgICAgIHRlcm0uYWx0ZXJuYXRpdmUuZW5kID0gMDsKICAgICAgICAgdGVybS5h
bHRlcm5hdGl2ZS5vbmNlVGhyb3VnaCA9IGZhbHNlOwpAQCAtMjgyLDcgKzI4Myw3IEBAIHN0cnVj
dCBCeXRlVGVybSB7CiAKICAgICBzdGF0aWMgQnl0ZVRlcm0gQWx0ZXJuYXRpdmVEaXNqdW5jdGlv
bigpCiAgICAgewotICAgICAgICBCeXRlVGVybSB0ZXJtKFR5cGVBbHRlcm5hdGl2ZURpc2p1bmN0
aW9uKTsKKyAgICAgICAgQnl0ZVRlcm0gdGVybShUeXBlOjpBbHRlcm5hdGl2ZURpc2p1bmN0aW9u
KTsKICAgICAgICAgdGVybS5hbHRlcm5hdGl2ZS5uZXh0ID0gMDsKICAgICAgICAgdGVybS5hbHRl
cm5hdGl2ZS5lbmQgPSAwOwogICAgICAgICB0ZXJtLmFsdGVybmF0aXZlLm9uY2VUaHJvdWdoID0g
ZmFsc2U7CkBAIC0yOTEsNyArMjkyLDcgQEAgc3RydWN0IEJ5dGVUZXJtIHsKIAogICAgIHN0YXRp
YyBCeXRlVGVybSBBbHRlcm5hdGl2ZUVuZCgpCiAgICAgewotICAgICAgICBCeXRlVGVybSB0ZXJt
KFR5cGVBbHRlcm5hdGl2ZUVuZCk7CisgICAgICAgIEJ5dGVUZXJtIHRlcm0oVHlwZTo6QWx0ZXJu
YXRpdmVFbmQpOwogICAgICAgICB0ZXJtLmFsdGVybmF0aXZlLm5leHQgPSAwOwogICAgICAgICB0
ZXJtLmFsdGVybmF0aXZlLmVuZCA9IDA7CiAgICAgICAgIHRlcm0uYWx0ZXJuYXRpdmUub25jZVRo
cm91Z2ggPSBmYWxzZTsKQEAgLTMwMCwxNyArMzAxLDE3IEBAIHN0cnVjdCBCeXRlVGVybSB7CiAK
ICAgICBzdGF0aWMgQnl0ZVRlcm0gU3VicGF0dGVybkJlZ2luKCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBCeXRlVGVybShUeXBlU3VicGF0dGVybkJlZ2luKTsKKyAgICAgICAgcmV0dXJuIEJ5dGVU
ZXJtKFR5cGU6OlN1YnBhdHRlcm5CZWdpbik7CiAgICAgfQogCiAgICAgc3RhdGljIEJ5dGVUZXJt
IFN1YnBhdHRlcm5FbmQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEJ5dGVUZXJtKFR5cGVTdWJw
YXR0ZXJuRW5kKTsKKyAgICAgICAgcmV0dXJuIEJ5dGVUZXJtKFR5cGU6OlN1YnBhdHRlcm5FbmQp
OwogICAgIH0KICAgICAKICAgICBzdGF0aWMgQnl0ZVRlcm0gRG90U3RhckVuY2xvc3VyZShib29s
IGJvbEFuY2hvciwgYm9vbCBlb2xBbmNob3IpCiAgICAgewotICAgICAgICBCeXRlVGVybSB0ZXJt
KFR5cGVEb3RTdGFyRW5jbG9zdXJlKTsKKyAgICAgICAgQnl0ZVRlcm0gdGVybShUeXBlOjpEb3RT
dGFyRW5jbG9zdXJlKTsKICAgICAgICAgdGVybS5hbmNob3JzLm1fYm9sID0gYm9sQW5jaG9yOwog
ICAgICAgICB0ZXJtLmFuY2hvcnMubV9lb2wgPSBlb2xBbmNob3I7CiAgICAgICAgIHJldHVybiB0
ZXJtOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAppbmRleCBjMmEyZDg4YTg5
NzFlNTg4YzcxMGE0ZGRlODc0ZTUwZTQxNWVhZGJhLi44YjUwMWVlMzQwNzU0OGU0YTRlMWEwZDcw
NTg5ODRkOGQyZjY1YjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9Z
YXJySklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcApA
QCAtNDUsNyArNDUsNiBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFlhcnIgewogSlNDX0FO
Tk9UQVRFX0pJVF9PUEVSQVRJT04oX0pJVFRhcmdldF92bUVudHJ5VG9ZYXJySklUQWZ0ZXIsIHZt
RW50cnlUb1lhcnJKSVRBZnRlcik7CiAjZW5kaWYKIAotdGVtcGxhdGU8WWFyckpJVENvbXBpbGVN
b2RlIGNvbXBpbGVNb2RlPgogY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJy
SklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAKICNpZiBDUFUoQVJNX1RIVU1CMikK
QEAgLTI3Myw3ICsyNzIsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlh
cnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgc3RvcmUzMih0ZW1w
UmVnLCBBZGRyZXNzKHBhcmVuQ29udGV4dFJlZywgUGFyZW5Db250ZXh0OjptYXRjaEFtb3VudE9m
ZnNldCgpKSk7CiAgICAgICAgIGxvYWRGcm9tRnJhbWUoc3VicGF0dGVybkJhc2VGcmFtZUxvY2F0
aW9uICsgQmFja1RyYWNrSW5mb1BhcmVudGhlc2VzOjpyZXR1cm5BZGRyZXNzSW5kZXgoKSwgdGVt
cFJlZyk7CiAgICAgICAgIHN0b3JlUHRyKHRlbXBSZWcsIEFkZHJlc3MocGFyZW5Db250ZXh0UmVn
LCBQYXJlbkNvbnRleHQ6OnJldHVybkFkZHJlc3NPZmZzZXQoKSkpOwotICAgICAgICBpZiAoY29t
cGlsZU1vZGUgPT0gSW5jbHVkZVN1YnBhdHRlcm5zKSB7CisgICAgICAgIGlmIChtX2NvbXBpbGVN
b2RlID09IEpJVENvbXBpbGVNb2RlOjpJbmNsdWRlU3VicGF0dGVybnMpIHsKICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgc3VicGF0dGVybiA9IGZpcnN0U3VicGF0dGVybjsgc3VicGF0dGVybiA8
PSBsYXN0U3VicGF0dGVybjsgc3VicGF0dGVybisrKSB7CiAgICAgICAgICAgICAgICAgbG9hZFB0
cihBZGRyZXNzKG91dHB1dCwgKHN1YnBhdHRlcm4gPDwgMSkgKiBzaXplb2YodW5zaWduZWQpKSwg
dGVtcFJlZyk7CiAgICAgICAgICAgICAgICAgc3RvcmVQdHIodGVtcFJlZywgQWRkcmVzcyhwYXJl
bkNvbnRleHRSZWcsIFBhcmVuQ29udGV4dDo6c3VicGF0dGVybk9mZnNldChzdWJwYXR0ZXJuKSkp
OwpAQCAtMjk1LDcgKzI5NCw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMg
WWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBzdG9yZVRvRnJh
bWUodGVtcFJlZywgc3VicGF0dGVybkJhc2VGcmFtZUxvY2F0aW9uICsgQmFja1RyYWNrSW5mb1Bh
cmVudGhlc2VzOjptYXRjaEFtb3VudEluZGV4KCkpOwogICAgICAgICBsb2FkUHRyKEFkZHJlc3Mo
cGFyZW5Db250ZXh0UmVnLCBQYXJlbkNvbnRleHQ6OnJldHVybkFkZHJlc3NPZmZzZXQoKSksIHRl
bXBSZWcpOwogICAgICAgICBzdG9yZVRvRnJhbWUodGVtcFJlZywgc3VicGF0dGVybkJhc2VGcmFt
ZUxvY2F0aW9uICsgQmFja1RyYWNrSW5mb1BhcmVudGhlc2VzOjpyZXR1cm5BZGRyZXNzSW5kZXgo
KSk7Ci0gICAgICAgIGlmIChjb21waWxlTW9kZSA9PSBJbmNsdWRlU3VicGF0dGVybnMpIHsKKyAg
ICAgICAgaWYgKG1fY29tcGlsZU1vZGUgPT0gSklUQ29tcGlsZU1vZGU6OkluY2x1ZGVTdWJwYXR0
ZXJucykgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBzdWJwYXR0ZXJuID0gZmlyc3RTdWJw
YXR0ZXJuOyBzdWJwYXR0ZXJuIDw9IGxhc3RTdWJwYXR0ZXJuOyBzdWJwYXR0ZXJuKyspIHsKICAg
ICAgICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3MocGFyZW5Db250ZXh0UmVnLCBQYXJlbkNvbnRl
eHQ6OnN1YnBhdHRlcm5PZmZzZXQoc3VicGF0dGVybikpLCB0ZW1wUmVnKTsKICAgICAgICAgICAg
ICAgICBzdG9yZVB0cih0ZW1wUmVnLCBBZGRyZXNzKG91dHB1dCwgKHN1YnBhdHRlcm4gPDwgMSkg
KiBzaXplb2YodW5zaWduZWQpKSk7CkBAIC0zMTksMTEgKzMxOCwxMSBAQCBjbGFzcyBZYXJyR2Vu
ZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVy
IHsKICAgICAgICAgICAgIFBhdHRlcm5UZXJtJiBuZXh0VGVybSA9IGFsdGVybmF0aXZlLT5tX3Rl
cm1zW2kgKyAxXTsKIAogICAgICAgICAgICAgLy8gV2UgY2FuIG1vdmUgQk1QIG9ubHkgY2hhcmFj
dGVyIGNsYXNzZXMgYWZ0ZXIgZml4ZWQgY2hhcmFjdGVyIHRlcm1zLgotICAgICAgICAgICAgaWYg
KCh0ZXJtLnR5cGUgPT0gUGF0dGVyblRlcm06OlR5cGVDaGFyYWN0ZXJDbGFzcykKLSAgICAgICAg
ICAgICAgICAmJiAodGVybS5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllckZpeGVkQ291bnQpCisg
ICAgICAgICAgICBpZiAoKHRlcm0udHlwZSA9PSBQYXR0ZXJuVGVybTo6VHlwZTo6Q2hhcmFjdGVy
Q2xhc3MpCisgICAgICAgICAgICAgICAgJiYgKHRlcm0ucXVhbnRpdHlUeXBlID09IFF1YW50aWZp
ZXJUeXBlOjpGaXhlZENvdW50KQogICAgICAgICAgICAgICAgICYmICghbV9kZWNvZGVTdXJyb2dh
dGVQYWlycyB8fCAodGVybS5jaGFyYWN0ZXJDbGFzcy0+aGFzT25lQ2hhcmFjdGVyU2l6ZSgpICYm
ICF0ZXJtLm1faW52ZXJ0KSkKLSAgICAgICAgICAgICAgICAmJiAobmV4dFRlcm0udHlwZSA9PSBQ
YXR0ZXJuVGVybTo6VHlwZVBhdHRlcm5DaGFyYWN0ZXIpCi0gICAgICAgICAgICAgICAgJiYgKG5l
eHRUZXJtLnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyRml4ZWRDb3VudCkpIHsKKyAgICAgICAg
ICAgICAgICAmJiAobmV4dFRlcm0udHlwZSA9PSBQYXR0ZXJuVGVybTo6VHlwZTo6UGF0dGVybkNo
YXJhY3RlcikKKyAgICAgICAgICAgICAgICAmJiAobmV4dFRlcm0ucXVhbnRpdHlUeXBlID09IFF1
YW50aWZpZXJUeXBlOjpGaXhlZENvdW50KSkgewogICAgICAgICAgICAgICAgIFBhdHRlcm5UZXJt
IHRlcm1Db3B5ID0gdGVybTsKICAgICAgICAgICAgICAgICBhbHRlcm5hdGl2ZS0+bV90ZXJtc1tp
XSA9IG5leHRUZXJtOwogICAgICAgICAgICAgICAgIGFsdGVybmF0aXZlLT5tX3Rlcm1zW2kgKyAx
XSA9IHRlcm1Db3B5OwpAQCAtNDU0LDcgKzQ1Myw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmlu
YWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogI2lmZGVm
IEpJVF9VTklDT0RFX0VYUFJFU1NJT05TCiAgICAgdm9pZCBhZHZhbmNlSW5kZXhBZnRlckNoYXJh
Y3RlckNsYXNzVGVybU1hdGNoKGNvbnN0IFBhdHRlcm5UZXJtKiB0ZXJtLCBKdW1wTGlzdCYgZmFp
bHVyZXNBZnRlckluY3JlbWVudGluZ0luZGV4LCBjb25zdCBSZWdpc3RlcklEIGNoYXJhY3RlcikK
ICAgICB7Ci0gICAgICAgIEFTU0VSVCh0ZXJtLT50eXBlID09IFBhdHRlcm5UZXJtOjpUeXBlQ2hh
cmFjdGVyQ2xhc3MpOworICAgICAgICBBU1NFUlQodGVybS0+dHlwZSA9PSBQYXR0ZXJuVGVybTo6
VHlwZTo6Q2hhcmFjdGVyQ2xhc3MpOwogCiAgICAgICAgIGlmICh0ZXJtLT5pc0ZpeGVkV2lkdGhD
aGFyYWN0ZXJDbGFzcygpKQogICAgICAgICAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKHRlcm0tPmNo
YXJhY3RlckNsYXNzLT5oYXNOb25CTVBDaGFyYWN0ZXJzKCkgPyAyIDogMSksIGluZGV4KTsKQEAg
LTUxMywxNCArNTEyLDE0IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFy
ckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAvLyBuZWdhdGl2ZUNo
YXJhY3Rlck9mZnNldCB3aWxsIHVuZGVyZmxvdyBkaXJlY3RseSBvciBhZnRlciBjb252ZXJ0aW5n
IGZvciAxNiBiaXQgY2hhcmFjdGVycy4KICAgICAgICAgLy8gSWYgc28sIHdlIGRvIG91ciBvd24g
YWRkcmVzcyBjYWxjdWxhdGluZyBieSBhZGp1c3RpbmcgdGhlIGJhc2UsIHVzaW5nIHRoZSByZXN1
bHQgcmVnaXN0ZXIKICAgICAgICAgLy8gYXMgYSB0ZW1wIGFkZHJlc3MgcmVnaXN0ZXIuCi0gICAg
ICAgIHVuc2lnbmVkIG1heGltdW1OZWdhdGl2ZU9mZnNldEZvckNoYXJhY3RlclNpemUgPSBtX2No
YXJTaXplID09IENoYXI4ID8gMHg3ZmZmZmZmZiA6IDB4M2ZmZmZmZmY7CisgICAgICAgIHVuc2ln
bmVkIG1heGltdW1OZWdhdGl2ZU9mZnNldEZvckNoYXJhY3RlclNpemUgPSBtX2NoYXJTaXplID09
IENoYXJTaXplOjpDaGFyOCA/IDB4N2ZmZmZmZmYgOiAweDNmZmZmZmZmOwogICAgICAgICB1bnNp
Z25lZCBvZmZzZXRBZGp1c3RBbW91bnQgPSAweDQwMDAwMDAwOwogICAgICAgICBpZiAobmVnYXRp
dmVDaGFyYWN0ZXJPZmZzZXQgPiBtYXhpbXVtTmVnYXRpdmVPZmZzZXRGb3JDaGFyYWN0ZXJTaXpl
KSB7CiAgICAgICAgICAgICBiYXNlID0gdGVtcFJlZzsKICAgICAgICAgICAgIG1vdmUoaW5wdXQs
IGJhc2UpOwogICAgICAgICAgICAgd2hpbGUgKG5lZ2F0aXZlQ2hhcmFjdGVyT2Zmc2V0ID4gbWF4
aW11bU5lZ2F0aXZlT2Zmc2V0Rm9yQ2hhcmFjdGVyU2l6ZSkgewogICAgICAgICAgICAgICAgIHN1
YlB0cihUcnVzdGVkSW1tMzIob2Zmc2V0QWRqdXN0QW1vdW50KSwgYmFzZSk7Ci0gICAgICAgICAg
ICAgICAgaWYgKG1fY2hhclNpemUgIT0gQ2hhcjgpCisgICAgICAgICAgICAgICAgaWYgKG1fY2hh
clNpemUgIT0gQ2hhclNpemU6OkNoYXI4KQogICAgICAgICAgICAgICAgICAgICBzdWJQdHIoVHJ1
c3RlZEltbTMyKG9mZnNldEFkanVzdEFtb3VudCksIGJhc2UpOwogICAgICAgICAgICAgICAgIG5l
Z2F0aXZlQ2hhcmFjdGVyT2Zmc2V0IC09IG9mZnNldEFkanVzdEFtb3VudDsKICAgICAgICAgICAg
IH0KQEAgLTUyOCw3ICs1MjcsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGlj
IFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKIAogICAgICAgICBDaGVja2Vk
PGludDMyX3Q+IGNoYXJhY3Rlck9mZnNldCgtc3RhdGljX2Nhc3Q8aW50MzJfdD4obmVnYXRpdmVD
aGFyYWN0ZXJPZmZzZXQpKTsKIAotICAgICAgICBpZiAobV9jaGFyU2l6ZSA9PSBDaGFyOCkKKyAg
ICAgICAgaWYgKG1fY2hhclNpemUgPT0gQ2hhclNpemU6OkNoYXI4KQogICAgICAgICAgICAgcmV0
dXJuIEJhc2VJbmRleChpbnB1dCwgaW5kZXhSZWcsIFRpbWVzT25lLCBjaGFyYWN0ZXJPZmZzZXQg
KiBzdGF0aWNfY2FzdDxpbnQzMl90PihzaXplb2YoY2hhcikpKTsKIAogICAgICAgICByZXR1cm4g
QmFzZUluZGV4KGlucHV0LCBpbmRleFJlZywgVGltZXNUd28sIGNoYXJhY3Rlck9mZnNldCAqIHN0
YXRpY19jYXN0PGludDMyX3Q+KHNpemVvZihVQ2hhcikpKTsKQEAgLTUzNyw3ICs1MzYsNyBAQCBj
bGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1h
Y3JvQXNzZW1ibGVyIHsKICNpZmRlZiBKSVRfVU5JQ09ERV9FWFBSRVNTSU9OUwogICAgIHZvaWQg
dHJ5UmVhZFVuaWNvZGVDaGFySW1wbChSZWdpc3RlcklEIHJlc3VsdFJlZykKICAgICB7Ci0gICAg
ICAgIEFTU0VSVChtX2NoYXJTaXplID09IENoYXIxNik7CisgICAgICAgIEFTU0VSVChtX2NoYXJT
aXplID09IENoYXJTaXplOjpDaGFyMTYpOwogCiAgICAgICAgIEp1bXBMaXN0IG5vdFVuaWNvZGU7
CiAKQEAgLTU2NCw3ICs1NjMsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGlj
IFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKIAogICAgIHZvaWQgdHJ5UmVh
ZFVuaWNvZGVDaGFyKEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHJlc3VsdFJlZykKICAg
ICB7Ci0gICAgICAgIEFTU0VSVChtX2NoYXJTaXplID09IENoYXIxNik7CisgICAgICAgIEFTU0VS
VChtX2NoYXJTaXplID09IENoYXJTaXplOjpDaGFyMTYpOwogCiAgICAgICAgIGdldEVmZmVjdGl2
ZUFkZHJlc3MoYWRkcmVzcywgcmVnVW5pY29kZUlucHV0QW5kVHJhaWwpOwogCkBAIC01NzksNyAr
NTc4LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywg
cHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgewogICAgICAgICBCYXNlSW5kZXggYWRkcmVz
cyA9IG5lZ2F0aXZlT2Zmc2V0SW5kZXhlZEFkZHJlc3MobmVnYXRpdmVDaGFyYWN0ZXJPZmZzZXQs
IHJlc3VsdFJlZywgaW5kZXhSZWcpOwogCi0gICAgICAgIGlmIChtX2NoYXJTaXplID09IENoYXI4
KQorICAgICAgICBpZiAobV9jaGFyU2l6ZSA9PSBDaGFyU2l6ZTo6Q2hhcjgpCiAgICAgICAgICAg
ICBsb2FkOChhZGRyZXNzLCByZXN1bHRSZWcpOwogI2lmZGVmIEpJVF9VTklDT0RFX0VYUFJFU1NJ
T05TCiAgICAgICAgIGVsc2UgaWYgKG1fZGVjb2RlU3Vycm9nYXRlUGFpcnMpCkBAIC02ODQsMjMg
KzY4MywyMyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZv
LCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgZ2VuZXJhdGVSZXR1cm4oKTsKICAg
ICB9CiAKLSAgICAvLyBVc2VkIHRvIHJlY29yZCBzdWJwYXR0ZXJucywgc2hvdWxkIG9ubHkgYmUg
Y2FsbGVkIGlmIGNvbXBpbGVNb2RlIGlzIEluY2x1ZGVTdWJwYXR0ZXJucy4KKyAgICAvLyBVc2Vk
IHRvIHJlY29yZCBzdWJwYXR0ZXJucywgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGlmIG1fY29tcGls
ZU1vZGUgaXMgSklUQ29tcGlsZU1vZGU6OkluY2x1ZGVTdWJwYXR0ZXJucy4KICAgICB2b2lkIHNl
dFN1YnBhdHRlcm5TdGFydChSZWdpc3RlcklEIHJlZywgdW5zaWduZWQgc3VicGF0dGVybikKICAg
ICB7CiAgICAgICAgIEFTU0VSVChzdWJwYXR0ZXJuKTsKLSAgICAgICAgLy8gRklYTUU6IHNob3Vs
ZCBiZSBhYmxlIHRvIEFTU0VSVChjb21waWxlTW9kZSA9PSBJbmNsdWRlU3VicGF0dGVybnMpLCBi
dXQgdGhlbiB0aGlzIGZ1bmN0aW9uIGlzIGNvbmRpdGlvbmFsbHkgTk9SRVRVUk4uIDotKAorICAg
ICAgICAvLyBGSVhNRTogc2hvdWxkIGJlIGFibGUgdG8gQVNTRVJUKG1fY29tcGlsZU1vZGUgPT0g
SklUQ29tcGlsZU1vZGU6OkluY2x1ZGVTdWJwYXR0ZXJucyksIGJ1dCB0aGVuIHRoaXMgZnVuY3Rp
b24gaXMgY29uZGl0aW9uYWxseSBOT1JFVFVSTi4gOi0oCiAgICAgICAgIHN0b3JlMzIocmVnLCBB
ZGRyZXNzKG91dHB1dCwgKHN1YnBhdHRlcm4gPDwgMSkgKiBzaXplb2YoaW50KSkpOwogICAgIH0K
ICAgICB2b2lkIHNldFN1YnBhdHRlcm5FbmQoUmVnaXN0ZXJJRCByZWcsIHVuc2lnbmVkIHN1YnBh
dHRlcm4pCiAgICAgewogICAgICAgICBBU1NFUlQoc3VicGF0dGVybik7Ci0gICAgICAgIC8vIEZJ
WE1FOiBzaG91bGQgYmUgYWJsZSB0byBBU1NFUlQoY29tcGlsZU1vZGUgPT0gSW5jbHVkZVN1YnBh
dHRlcm5zKSwgYnV0IHRoZW4gdGhpcyBmdW5jdGlvbiBpcyBjb25kaXRpb25hbGx5IE5PUkVUVVJO
LiA6LSgKKyAgICAgICAgLy8gRklYTUU6IHNob3VsZCBiZSBhYmxlIHRvIEFTU0VSVChtX2NvbXBp
bGVNb2RlID09IEpJVENvbXBpbGVNb2RlOjpJbmNsdWRlU3VicGF0dGVybnMpLCBidXQgdGhlbiB0
aGlzIGZ1bmN0aW9uIGlzIGNvbmRpdGlvbmFsbHkgTk9SRVRVUk4uIDotKAogICAgICAgICBzdG9y
ZTMyKHJlZywgQWRkcmVzcyhvdXRwdXQsICgoc3VicGF0dGVybiA8PCAxKSArIDEpICogc2l6ZW9m
KGludCkpKTsKICAgICB9CiAgICAgdm9pZCBjbGVhclN1YnBhdHRlcm5TdGFydCh1bnNpZ25lZCBz
dWJwYXR0ZXJuKQogICAgIHsKICAgICAgICAgQVNTRVJUKHN1YnBhdHRlcm4pOwotICAgICAgICAv
LyBGSVhNRTogc2hvdWxkIGJlIGFibGUgdG8gQVNTRVJUKGNvbXBpbGVNb2RlID09IEluY2x1ZGVT
dWJwYXR0ZXJucyksIGJ1dCB0aGVuIHRoaXMgZnVuY3Rpb24gaXMgY29uZGl0aW9uYWxseSBOT1JF
VFVSTi4gOi0oCisgICAgICAgIC8vIEZJWE1FOiBzaG91bGQgYmUgYWJsZSB0byBBU1NFUlQobV9j
b21waWxlTW9kZSA9PSBKSVRDb21waWxlTW9kZTo6SW5jbHVkZVN1YnBhdHRlcm5zKSwgYnV0IHRo
ZW4gdGhpcyBmdW5jdGlvbiBpcyBjb25kaXRpb25hbGx5IE5PUkVUVVJOLiA6LSgKICAgICAgICAg
c3RvcmUzMihUcnVzdGVkSW1tMzIoLTEpLCBBZGRyZXNzKG91dHB1dCwgKHN1YnBhdHRlcm4gPDwg
MSkgKiBzaXplb2YoaW50KSkpOwogICAgIH0KIApAQCAtNzEzLDE2ICs3MTIsMTYgQEAgY2xhc3Mg
WWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fz
c2VtYmxlciB7CiAgICAgLy8gV2UgdXNlIG9uZSBvZiB0aHJlZSBkaWZmZXJlbnQgc3RyYXRlZ2ll
cyB0byB0cmFjayB0aGUgc3RhcnQgb2YgdGhlIGN1cnJlbnQgbWF0Y2gsCiAgICAgLy8gd2hpbGUg
bWF0Y2hpbmcuCiAgICAgLy8gMSkgSWYgdGhlIHBhdHRlcm4gaGFzIGEgZml4ZWQgc2l6ZSwgZG8g
bm90aGluZyEgLSB3ZSBjYWxjdWxhdGUgdGhlIHZhbHVlIGxhemlseQotICAgIC8vICAgIGF0IHRo
ZSBlbmQgb2YgbWF0Y2hpbmcuIFRoaXMgaXMgaXJyZXNwZWN0aXZlIG9mIGNvbXBpbGVNb2RlLCBh
bmQgaW4gdGhpcyBjYXNlCisgICAgLy8gICAgYXQgdGhlIGVuZCBvZiBtYXRjaGluZy4gVGhpcyBp
cyBpcnJlc3BlY3RpdmUgb2YgbV9jb21waWxlTW9kZSwgYW5kIGluIHRoaXMgY2FzZQogICAgIC8v
ICAgIHRoZXNlIG1ldGhvZHMgc2hvdWxkIG5ldmVyIGJlIGNhbGxlZC4KLSAgICAvLyAyKSBJZiB3
ZSdyZSBjb21waWxpbmcgSW5jbHVkZVN1YnBhdHRlcm5zLCAnb3V0cHV0JyBjb250YWlucyBhIHBv
aW50ZXIgdG8gYW4gb3V0cHV0CisgICAgLy8gMikgSWYgd2UncmUgY29tcGlsaW5nIEpJVENvbXBp
bGVNb2RlOjpJbmNsdWRlU3VicGF0dGVybnMsICdvdXRwdXQnIGNvbnRhaW5zIGEgcG9pbnRlciB0
byBhbiBvdXRwdXQKICAgICAvLyAgICB2ZWN0b3IsIHN0b3JlIHRoZSBtYXRjaCBzdGFydCBpbiB0
aGUgb3V0cHV0IHZlY3Rvci4KICAgICAvLyAzKSBJZiB3ZSdyZSBjb21waWxpbmcgTWF0Y2hPbmx5
LCAnb3V0cHV0JyBpcyB1bnVzZWQsIHN0b3JlIHRoZSBtYXRjaCBzdGFydCBkaXJlY3RseQogICAg
IC8vICAgIGluIHRoaXMgcmVnaXN0ZXIuCiAgICAgdm9pZCBzZXRNYXRjaFN0YXJ0KFJlZ2lzdGVy
SUQgcmVnKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFtX3BhdHRlcm4ubV9ib2R5LT5tX2hhc0Zp
eGVkU2l6ZSk7Ci0gICAgICAgIGlmIChjb21waWxlTW9kZSA9PSBJbmNsdWRlU3VicGF0dGVybnMp
CisgICAgICAgIGlmIChtX2NvbXBpbGVNb2RlID09IEpJVENvbXBpbGVNb2RlOjpJbmNsdWRlU3Vi
cGF0dGVybnMpCiAgICAgICAgICAgICBzdG9yZTMyKHJlZywgb3V0cHV0KTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgbW92ZShyZWcsIG91dHB1dCk7CkBAIC03MzAsNTEgKzcyOSw1MSBAQCBj
bGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1h
Y3JvQXNzZW1ibGVyIHsKICAgICB2b2lkIGdldE1hdGNoU3RhcnQoUmVnaXN0ZXJJRCByZWcpCiAg
ICAgewogICAgICAgICBBU1NFUlQoIW1fcGF0dGVybi5tX2JvZHktPm1faGFzRml4ZWRTaXplKTsK
LSAgICAgICAgaWYgKGNvbXBpbGVNb2RlID09IEluY2x1ZGVTdWJwYXR0ZXJucykKKyAgICAgICAg
aWYgKG1fY29tcGlsZU1vZGUgPT0gSklUQ29tcGlsZU1vZGU6OkluY2x1ZGVTdWJwYXR0ZXJucykK
ICAgICAgICAgICAgIGxvYWQzMihvdXRwdXQsIHJlZyk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIG1vdmUob3V0cHV0LCByZWcpOwogICAgIH0KIAotICAgIGVudW0gWWFyck9wQ29kZSA6IHVp
bnQ4X3QgeworICAgIGVudW0gY2xhc3MgWWFyck9wQ29kZSA6IHVpbnQ4X3QgewogICAgICAgICAv
LyBUaGVzZSBub2RlcyB3cmFwIGJvZHkgYWx0ZXJuYXRpdmVzIC0gdGhvc2UgaW4gdGhlIG1haW4g
ZGlzanVuY3Rpb24sCiAgICAgICAgIC8vIHJhdGhlciB0aGFuIHN1YnBhdHRlcm5zIG9yIGFzc2Vy
dGlvbnMuIFRoZXNlIGFyZSBjaGFpbmVkIHRvZ2V0aGVyIGluCiAgICAgICAgIC8vIGEgZG91Ymx5
IGxpbmtlZCBsaXN0LCB3aXRoIGEgJ2JlZ2luJyBub2RlIGZvciB0aGUgZmlyc3QgYWx0ZXJuYXRp
dmUsCiAgICAgICAgIC8vIGEgJ25leHQnIG5vZGUgZm9yIGVhY2ggc3Vic2VxdWVudCBhbHRlcm5h
dGl2ZSwgYW5kIGFuICdlbmQnIG5vZGUgYXQKICAgICAgICAgLy8gdGhlIGVuZC4gSW4gdGhlIGNh
c2Ugb2YgcmVwZWF0aW5nIGFsdGVybmF0aXZlcywgdGhlICdlbmQnIG5vZGUgYWxzbwogICAgICAg
ICAvLyBoYXMgYSByZWZlcmVuY2UgYmFjayB0byAnYmVnaW4nLgotICAgICAgICBPcEJvZHlBbHRl
cm5hdGl2ZUJlZ2luLAotICAgICAgICBPcEJvZHlBbHRlcm5hdGl2ZU5leHQsCi0gICAgICAgIE9w
Qm9keUFsdGVybmF0aXZlRW5kLAorICAgICAgICBCb2R5QWx0ZXJuYXRpdmVCZWdpbiwKKyAgICAg
ICAgQm9keUFsdGVybmF0aXZlTmV4dCwKKyAgICAgICAgQm9keUFsdGVybmF0aXZlRW5kLAogICAg
ICAgICAvLyBTaW1pbGFyIHRvIHRoZSBib2R5IGFsdGVybmF0aXZlcywgYnV0IHVzZWQgZm9yIHN1
YnBhdHRlcm5zIHdpdGggdHdvCiAgICAgICAgIC8vIG9yIG1vcmUgYWx0ZXJuYXRpdmVzLgotICAg
ICAgICBPcE5lc3RlZEFsdGVybmF0aXZlQmVnaW4sCi0gICAgICAgIE9wTmVzdGVkQWx0ZXJuYXRp
dmVOZXh0LAotICAgICAgICBPcE5lc3RlZEFsdGVybmF0aXZlRW5kLAorICAgICAgICBOZXN0ZWRB
bHRlcm5hdGl2ZUJlZ2luLAorICAgICAgICBOZXN0ZWRBbHRlcm5hdGl2ZU5leHQsCisgICAgICAg
IE5lc3RlZEFsdGVybmF0aXZlRW5kLAogICAgICAgICAvLyBVc2VkIGZvciBhbHRlcm5hdGl2ZXMg
aW4gc3VicGF0dGVybnMgd2hlcmUgdGhlcmUgaXMgb25seSBhIHNpbmdsZQogICAgICAgICAvLyBh
bHRlcm5hdGl2ZSAoYmFja3RyYWNraW5nIGlzIGVhc2llciBpbiB0aGVzZSBjYXNlcyksIG9yIGZv
ciBhbHRlcm5hdGl2ZXMKICAgICAgICAgLy8gd2hpY2ggbmV2ZXIgbmVlZCB0byBiZSBiYWNrdHJh
Y2tlZCAodGhvc2UgaW4gcGFyZW50aGV0aWNhbCBhc3NlcnRpb25zLAogICAgICAgICAvLyB0ZXJt
aW5hbCBzdWJwYXR0ZXJucykuCi0gICAgICAgIE9wU2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVCZWdp
biwKLSAgICAgICAgT3BTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZU5leHQsCi0gICAgICAgIE9wU2lt
cGxlTmVzdGVkQWx0ZXJuYXRpdmVFbmQsCisgICAgICAgIFNpbXBsZU5lc3RlZEFsdGVybmF0aXZl
QmVnaW4sCisgICAgICAgIFNpbXBsZU5lc3RlZEFsdGVybmF0aXZlTmV4dCwKKyAgICAgICAgU2lt
cGxlTmVzdGVkQWx0ZXJuYXRpdmVFbmQsCiAgICAgICAgIC8vIFVzZWQgdG8gd3JhcCAnT25jZScg
c3VicGF0dGVybiBtYXRjaGVzIChxdWFudGl0eU1heENvdW50ID09IDEpLgotICAgICAgICBPcFBh
cmVudGhlc2VzU3VicGF0dGVybk9uY2VCZWdpbiwKLSAgICAgICAgT3BQYXJlbnRoZXNlc1N1YnBh
dHRlcm5PbmNlRW5kLAorICAgICAgICBQYXJlbnRoZXNlc1N1YnBhdHRlcm5PbmNlQmVnaW4sCisg
ICAgICAgIFBhcmVudGhlc2VzU3VicGF0dGVybk9uY2VFbmQsCiAgICAgICAgIC8vIFVzZWQgdG8g
d3JhcCAnVGVybWluYWwnIHN1YnBhdHRlcm4gbWF0Y2hlcyAoYXQgdGhlIGVuZCBvZiB0aGUgcmVn
ZXhwKS4KLSAgICAgICAgT3BQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEJlZ2luLAotICAg
ICAgICBPcFBhcmVudGhlc2VzU3VicGF0dGVyblRlcm1pbmFsRW5kLAorICAgICAgICBQYXJlbnRo
ZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEJlZ2luLAorICAgICAgICBQYXJlbnRoZXNlc1N1YnBhdHRl
cm5UZXJtaW5hbEVuZCwKICAgICAgICAgLy8gVXNlZCB0byB3cmFwIGdlbmVyaWMgY2FwdHVyZWQg
bWF0Y2hlcwotICAgICAgICBPcFBhcmVudGhlc2VzU3VicGF0dGVybkJlZ2luLAotICAgICAgICBP
cFBhcmVudGhlc2VzU3VicGF0dGVybkVuZCwKKyAgICAgICAgUGFyZW50aGVzZXNTdWJwYXR0ZXJu
QmVnaW4sCisgICAgICAgIFBhcmVudGhlc2VzU3VicGF0dGVybkVuZCwKICAgICAgICAgLy8gVXNl
ZCB0byB3cmFwIHBhcmVudGhldGljYWwgYXNzZXJ0aW9ucy4KLSAgICAgICAgT3BQYXJlbnRoZXRp
Y2FsQXNzZXJ0aW9uQmVnaW4sCi0gICAgICAgIE9wUGFyZW50aGV0aWNhbEFzc2VydGlvbkVuZCwK
KyAgICAgICAgUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luLAorICAgICAgICBQYXJlbnRoZXRp
Y2FsQXNzZXJ0aW9uRW5kLAogICAgICAgICAvLyBXcmFwcyBhbGwgc2ltcGxlIHRlcm1zIChwYXR0
ZXJuIGNoYXJhY3RlcnMsIGNoYXJhY3RlciBjbGFzc2VzKS4KLSAgICAgICAgT3BUZXJtLAorICAg
ICAgICBUZXJtLAogICAgICAgICAvLyBXaGVyZSBhbiBleHByZXNzaW9uIGNvbnRhaW5zIG9ubHkg
J29uY2UgdGhyb3VnaCcgYm9keSBhbHRlcm5hdGl2ZXMKICAgICAgICAgLy8gYW5kIG5vIHJlcGVh
dGluZyBvbmVzLCB0aGlzIG9wIGlzIHVzZWQgdG8gcmV0dXJuIG1hdGNoIGZhaWx1cmUuCi0gICAg
ICAgIE9wTWF0Y2hGYWlsZWQKKyAgICAgICAgTWF0Y2hGYWlsZWQKICAgICB9OwogCiAgICAgLy8g
VGhpcyBzdHJ1Y3R1cmUgaXMgdXNlZCB0byBob2xkIHRoZSBjb21waWxlZCBvcGNvZGUgaW5mb3Jt
YXRpb24sCkBAIC03ODMsNyArNzgyLDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1
YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgc3RydWN0IFlh
cnJPcCB7CiAgICAgICAgIGV4cGxpY2l0IFlhcnJPcChQYXR0ZXJuVGVybSogdGVybSkKICAgICAg
ICAgICAgIDogbV90ZXJtKHRlcm0pCi0gICAgICAgICAgICAsIG1fb3AoT3BUZXJtKQorICAgICAg
ICAgICAgLCBtX29wKFlhcnJPcENvZGU6OlRlcm0pCiAgICAgICAgICAgICAsIG1faXNEZWFkQ29k
ZShmYWxzZSkKICAgICAgICAgewogICAgICAgICB9CkBAIC03OTYsOCArNzk1LDggQEAgY2xhc3Mg
WWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fz
c2VtYmxlciB7CiAKICAgICAgICAgLy8gRm9yIGFsdGVybmF0aXZlcywgdGhpcyBob2xkcyB0aGUg
UGF0dGVybkFsdGVybmF0aXZlIGFuZCBkb3VibHkgbGlua2VkCiAgICAgICAgIC8vIHJlZmVyZW5j
ZXMgdG8gdGhpcyBhbHRlcm5hdGl2ZSdzIHNpYmxpbmdzLiBJbiB0aGUgY2FzZSBvZiB0aGUKLSAg
ICAgICAgLy8gT3BCb2R5QWx0ZXJuYXRpdmVFbmQgbm9kZSBhdCB0aGUgZW5kIG9mIGEgc2VjdGlv
biBvZiByZXBlYXRpbmcgbm9kZXMsCi0gICAgICAgIC8vIG1fbmV4dE9wIHdpbGwgcmVmZXJlbmNl
IHRoZSBPcEJvZHlBbHRlcm5hdGl2ZUJlZ2luIG5vZGUgb2YgdGhlIGZpcnN0CisgICAgICAgIC8v
IFlhcnJPcENvZGU6OkJvZHlBbHRlcm5hdGl2ZUVuZCBub2RlIGF0IHRoZSBlbmQgb2YgYSBzZWN0
aW9uIG9mIHJlcGVhdGluZyBub2RlcywKKyAgICAgICAgLy8gbV9uZXh0T3Agd2lsbCByZWZlcmVu
Y2UgdGhlIFlhcnJPcENvZGU6OkJvZHlBbHRlcm5hdGl2ZUJlZ2luIG5vZGUgb2YgdGhlIGZpcnN0
CiAgICAgICAgIC8vIHJlcGVhdGluZyBhbHRlcm5hdGl2ZS4KICAgICAgICAgUGF0dGVybkFsdGVy
bmF0aXZlKiBtX2FsdGVybmF0aXZlOwogICAgICAgICBzaXplX3QgbV9wcmV2aW91c09wOwpAQCAt
ODI3LDcgKzgyNiw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJ
VEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAvLyByZWNhbGN1bGF0aW5n
IGl0LgogICAgICAgICBDaGVja2VkPHVuc2lnbmVkPiBtX2NoZWNrQWRqdXN0OwogCi0gICAgICAg
IC8vIFVzZWQgYnkgT3BOZXN0ZWRBbHRlcm5hdGl2ZU5leHQvRW5kIHRvIGhvbGQgdGhlIHBvaW50
ZXIgdG8gdGhlCisgICAgICAgIC8vIFVzZWQgYnkgWWFyck9wQ29kZTo6TmVzdGVkQWx0ZXJuYXRp
dmVOZXh0L0VuZCB0byBob2xkIHRoZSBwb2ludGVyIHRvIHRoZQogICAgICAgICAvLyB2YWx1ZSB0
aGF0IHdpbGwgYmUgcHVzaGVkIGludG8gdGhlIHBhdHRlcm4ncyBmcmFtZSB0byByZXR1cm4gdG8s
CiAgICAgICAgIC8vIHVwb24gYmFja3RyYWNraW5nIGJhY2sgaW50byB0aGUgZGlzanVuY3Rpb24u
CiAgICAgICAgIERhdGFMYWJlbFB0ciBtX3JldHVybkFkZHJlc3M7CkBAIC0xMTQ4LDcgKzExNDcs
NyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2
YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgWWFyck9wJiBvcCA9IG1fb3BzW29wSW5kZXhd
OwogICAgICAgICBQYXR0ZXJuVGVybSogdGVybSA9IG9wLm1fdGVybTsKIAotICAgICAgICBpZiAo
bV9wYXR0ZXJuLmlnbm9yZUNhc2UoKSAmJiBtX2NoYXJTaXplICE9IENoYXI4KSB7CisgICAgICAg
IGlmIChtX3BhdHRlcm4uaWdub3JlQ2FzZSgpICYmIG1fY2hhclNpemUgIT0gQ2hhclNpemU6OkNo
YXI4KSB7CiAgICAgICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSBKSVRGYWlsdXJlUmVhc29uOjpC
YWNrUmVmZXJlbmNlOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xMTYxLDE3
ICsxMTYwLDE3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVElu
Zm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBjb25zdCBSZWdpc3RlcklEIHBh
dHRlcm5UZW1wID0gcmVnVDI7CiAKICAgICAgICAgc3RvcmVUb0ZyYW1lKGluZGV4LCBwYXJlbnRo
ZXNlc0ZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvQmFja1JlZmVyZW5jZTo6YmVnaW5JbmRl
eCgpKTsKLSAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5VHlwZSAhPSBRdWFudGlmaWVyRml4ZWRD
b3VudCB8fCB0ZXJtLT5xdWFudGl0eU1heENvdW50ICE9IDEpCisgICAgICAgIGlmICh0ZXJtLT5x
dWFudGl0eVR5cGUgIT0gUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQgfHwgdGVybS0+cXVhbnRp
dHlNYXhDb3VudCAhPSAxKQogICAgICAgICAgICAgc3RvcmVUb0ZyYW1lKFRydXN0ZWRJbW0zMigw
KSwgcGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uICsgQmFja1RyYWNrSW5mb0JhY2tSZWZlcmVuY2U6
Om1hdGNoQW1vdW50SW5kZXgoKSk7CiAKICAgICAgICAgSnVtcExpc3QgbWF0Y2hlczsKIAotICAg
ICAgICBpZiAodGVybS0+cXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJOb25HcmVlZHkpIHsKKyAg
ICAgICAgaWYgKHRlcm0tPnF1YW50aXR5VHlwZSAhPSBRdWFudGlmaWVyVHlwZTo6Tm9uR3JlZWR5
KSB7CiAgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhvdXRwdXQsIChzdWJwYXR0ZXJuSWQgPDwg
MSkgKiBzaXplb2YoaW50KSksIHBhdHRlcm5JbmRleCk7CiAgICAgICAgICAgICBsb2FkMzIoQWRk
cmVzcyhvdXRwdXQsICgoc3VicGF0dGVybklkIDw8IDEpICsgMSkgKiBzaXplb2YoaW50KSksIHBh
dHRlcm5UZW1wKTsKIAogICAgICAgICAgICAgLy8gQW4gZW1wdHkgbWF0Y2ggaXMgc3VjY2Vzc2Z1
bCB3aXRob3V0IGNvbnN1bWluZyBjaGFyYWN0ZXJzCi0gICAgICAgICAgICBpZiAodGVybS0+cXVh
bnRpdHlUeXBlICE9IFF1YW50aWZpZXJGaXhlZENvdW50IHx8IHRlcm0tPnF1YW50aXR5TWF4Q291
bnQgIT0gMSkgeworICAgICAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5VHlwZSAhPSBRdWFudGlm
aWVyVHlwZTo6Rml4ZWRDb3VudCB8fCB0ZXJtLT5xdWFudGl0eU1heENvdW50ICE9IDEpIHsKICAg
ICAgICAgICAgICAgICBtYXRjaGVzLmFwcGVuZChicmFuY2gzMihFcXVhbCwgVHJ1c3RlZEltbTMy
KC0xKSwgcGF0dGVybkluZGV4KSk7CiAgICAgICAgICAgICAgICAgbWF0Y2hlcy5hcHBlbmQoYnJh
bmNoMzIoRXF1YWwsIHBhdHRlcm5JbmRleCwgcGF0dGVyblRlbXApKTsKICAgICAgICAgICAgIH0g
ZWxzZSB7CkBAIC0xMTg1LDcgKzExODQsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDog
cHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgfQog
CiAgICAgICAgIHN3aXRjaCAodGVybS0+cXVhbnRpdHlUeXBlKSB7Ci0gICAgICAgIGNhc2UgUXVh
bnRpZmllckZpeGVkQ291bnQ6IHsKKyAgICAgICAgY2FzZSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRD
b3VudDogewogICAgICAgICAgICAgTGFiZWwgb3V0ZXJMb29wKHRoaXMpOwogCiAgICAgICAgICAg
ICAvLyBQYXR0ZXJuVGVtcCBzaG91bGQgY29udGFpbiBwYXR0ZXJuIGVuZCBpbmRleCBhdCB0aGlz
IHBvaW50CkBAIC0xMjA3LDcgKzEyMDYsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDog
cHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBRdWFudGlmaWVyR3JlZWR5OiB7Cisg
ICAgICAgIGNhc2UgUXVhbnRpZmllclR5cGU6OkdyZWVkeTogewogICAgICAgICAgICAgSnVtcExp
c3QgaW5jb21wbGV0ZU1hdGNoZXM7CiAKICAgICAgICAgICAgIExhYmVsIG91dGVyTG9vcCh0aGlz
KTsKQEAgLTEyMzgsNyArMTIzNyw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJs
aWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIFF1YW50aWZpZXJOb25HcmVlZHk6IHsKKyAg
ICAgICAgY2FzZSBRdWFudGlmaWVyVHlwZTo6Tm9uR3JlZWR5OiB7CiAgICAgICAgICAgICBKdW1w
TGlzdCBpbmNvbXBsZXRlTWF0Y2hlczsKIAogICAgICAgICAgICAgbWF0Y2hlcy5hcHBlbmQoanVt
cCgpKTsKQEAgLTEyODgsMTEgKzEyODcsMTEgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6
IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAKICAgICAgICAg
dW5zaWduZWQgcGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uID0gdGVybS0+ZnJhbWVMb2NhdGlvbjsK
ICAgICAgICAgc3dpdGNoICh0ZXJtLT5xdWFudGl0eVR5cGUpIHsKLSAgICAgICAgY2FzZSBRdWFu
dGlmaWVyRml4ZWRDb3VudDoKKyAgICAgICAgY2FzZSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3Vu
dDoKICAgICAgICAgICAgIGxvYWRGcm9tRnJhbWUocGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uICsg
QmFja1RyYWNrSW5mb0JhY2tSZWZlcmVuY2U6OmJlZ2luSW5kZXgoKSwgaW5kZXgpOwogICAgICAg
ICAgICAgYnJlYWs7CiAKLSAgICAgICAgY2FzZSBRdWFudGlmaWVyR3JlZWR5OiB7CisgICAgICAg
IGNhc2UgUXVhbnRpZmllclR5cGU6OkdyZWVkeTogewogICAgICAgICAgICAgY29uc3QgUmVnaXN0
ZXJJRCBtYXRjaEFtb3VudCA9IHJlZ1QwOwogICAgICAgICAgICAgY29uc3QgUmVnaXN0ZXJJRCBw
YXR0ZXJuU3RhcnRJbmRleCA9IHJlZ1QxOwogICAgICAgICAgICAgY29uc3QgUmVnaXN0ZXJJRCBw
YXR0ZXJuRW5kSW5kZXhPckxlbiA9IHJlZ1QyOwpAQCAtMTMxMSw3ICsxMzEwLDcgQEAgY2xhc3Mg
WWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fz
c2VtYmxlciB7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2Ug
UXVhbnRpZmllck5vbkdyZWVkeTogeworICAgICAgICBjYXNlIFF1YW50aWZpZXJUeXBlOjpOb25H
cmVlZHk6IHsKICAgICAgICAgICAgIGNvbnN0IFJlZ2lzdGVySUQgbWF0Y2hBbW91bnQgPSByZWdU
MDsKIAogICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKGF0RW5kT2ZJbnB1dCgpKTsKQEAgLTEz
MzYsNyArMTMzNSw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJ
VEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBpZiAob3AubV9pc0RlYWRD
b2RlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICAgICAgLy8gbV9vcHMgYWx3
YXlzIGVuZHMgd2l0aCBhIE9wQm9keUFsdGVybmF0aXZlRW5kIG9yIE9wTWF0Y2hGYWlsZWQKKyAg
ICAgICAgLy8gbV9vcHMgYWx3YXlzIGVuZHMgd2l0aCBhIFlhcnJPcENvZGU6OkJvZHlBbHRlcm5h
dGl2ZUVuZCBvciBZYXJyT3BDb2RlOjpNYXRjaEZhaWxlZAogICAgICAgICAvLyBub2RlLCBzbyB0
aGVyZSBtdXN0IGFsd2F5cyBiZSBhdCBsZWFzdCBvbmUgbW9yZSBub2RlLgogICAgICAgICBBU1NF
UlQob3BJbmRleCArIDEgPCBtX29wcy5zaXplKCkpOwogICAgICAgICBZYXJyT3AqIG5leHRPcCA9
ICZtX29wc1tvcEluZGV4ICsgMV07CkBAIC0xMzQ0LDcgKzEzNDMsNyBAQCBjbGFzcyBZYXJyR2Vu
ZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVy
IHsKICAgICAgICAgUGF0dGVyblRlcm0qIHRlcm0gPSBvcC5tX3Rlcm07CiAgICAgICAgIFVDaGFy
MzIgY2ggPSB0ZXJtLT5wYXR0ZXJuQ2hhcmFjdGVyOwogCi0gICAgICAgIGlmICghaXNMYXRpbjEo
Y2gpICYmIChtX2NoYXJTaXplID09IENoYXI4KSkgeworICAgICAgICBpZiAoIWlzTGF0aW4xKGNo
KSAmJiAobV9jaGFyU2l6ZSA9PSBDaGFyU2l6ZTo6Q2hhcjgpKSB7CiAgICAgICAgICAgICAvLyBI
YXZlIGEgMTYgYml0IHBhdHRlcm4gY2hhcmFjdGVyIGFuZCBhbiA4IGJpdCBzdHJpbmcgLSBzaG9y
dCBjaXJjdWl0CiAgICAgICAgICAgICBvcC5tX2p1bXBzLmFwcGVuZChqdW1wKCkpOwogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMTM1MiwxMyArMTM1MSwxMyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9y
IGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKIAog
ICAgICAgICBjb25zdCBSZWdpc3RlcklEIGNoYXJhY3RlciA9IHJlZ1QwOwogI2lmIENQVShYODZf
NjQpIHx8IENQVShBUk02NCkKLSAgICAgICAgdW5zaWduZWQgbWF4Q2hhcmFjdGVyc0F0T25jZSA9
IG1fY2hhclNpemUgPT0gQ2hhcjggPyA4IDogNDsKKyAgICAgICAgdW5zaWduZWQgbWF4Q2hhcmFj
dGVyc0F0T25jZSA9IG1fY2hhclNpemUgPT0gQ2hhclNpemU6OkNoYXI4ID8gOCA6IDQ7CiAjZWxz
ZQotICAgICAgICB1bnNpZ25lZCBtYXhDaGFyYWN0ZXJzQXRPbmNlID0gbV9jaGFyU2l6ZSA9PSBD
aGFyOCA/IDQgOiAyOworICAgICAgICB1bnNpZ25lZCBtYXhDaGFyYWN0ZXJzQXRPbmNlID0gbV9j
aGFyU2l6ZSA9PSBDaGFyU2l6ZTo6Q2hhcjggPyA0IDogMjsKICNlbmRpZgogICAgICAgICB1aW50
NjRfdCBpZ25vcmVDYXNlTWFzayA9IDA7CiAjaWYgQ1BVKEJJR19FTkRJQU4pCi0gICAgICAgIHVp
bnQ2NF90IGFsbENoYXJhY3RlcnMgPSBjaCA8PCAobV9jaGFyU2l6ZSA9PSBDaGFyOCA/IDI0IDog
MTYpOworICAgICAgICB1aW50NjRfdCBhbGxDaGFyYWN0ZXJzID0gY2ggPDwgKG1fY2hhclNpemUg
PT0gQ2hhclNpemU6OkNoYXI4ID8gMjQgOiAxNik7CiAjZWxzZQogICAgICAgICB1aW50NjRfdCBh
bGxDaGFyYWN0ZXJzID0gY2g7CiAjZW5kaWYKQEAgLTEzNzEsMTkgKzEzNzAsMTkgQEAgY2xhc3Mg
WWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fz
c2VtYmxlciB7CiAKICAgICAgICAgaWYgKG1fcGF0dGVybi5pZ25vcmVDYXNlKCkgJiYgaXNBU0NJ
SUFscGhhKGNoKSkgewogI2lmIENQVShCSUdfRU5ESUFOKQotICAgICAgICAgICAgaWdub3JlQ2Fz
ZU1hc2sgfD0gMzIgPDwgKG1fY2hhclNpemUgPT0gQ2hhcjggPyAyNCA6IDE2KTsKKyAgICAgICAg
ICAgIGlnbm9yZUNhc2VNYXNrIHw9IDMyIDw8IChtX2NoYXJTaXplID09IENoYXJTaXplOjpDaGFy
OCA/IDI0IDogMTYpOwogI2Vsc2UKICAgICAgICAgICAgIGlnbm9yZUNhc2VNYXNrIHw9IDMyOwog
I2VuZGlmCiAgICAgICAgIH0KIAotICAgICAgICBmb3IgKG51bWJlckNoYXJhY3RlcnMgPSAxOyBu
dW1iZXJDaGFyYWN0ZXJzIDwgbWF4Q2hhcmFjdGVyc0F0T25jZSAmJiBuZXh0T3AtPm1fb3AgPT0g
T3BUZXJtOyArK251bWJlckNoYXJhY3RlcnMsIG5leHRPcCA9ICZtX29wc1tvcEluZGV4ICsgbnVt
YmVyQ2hhcmFjdGVyc10pIHsKKyAgICAgICAgZm9yIChudW1iZXJDaGFyYWN0ZXJzID0gMTsgbnVt
YmVyQ2hhcmFjdGVycyA8IG1heENoYXJhY3RlcnNBdE9uY2UgJiYgbmV4dE9wLT5tX29wID09IFlh
cnJPcENvZGU6OlRlcm07ICsrbnVtYmVyQ2hhcmFjdGVycywgbmV4dE9wID0gJm1fb3BzW29wSW5k
ZXggKyBudW1iZXJDaGFyYWN0ZXJzXSkgewogICAgICAgICAgICAgUGF0dGVyblRlcm0qIG5leHRU
ZXJtID0gbmV4dE9wLT5tX3Rlcm07CiAKICAgICAgICAgICAgIC8vIFlhcnJKSVQgaGFuZGxlcyBk
ZWNvZGVkIHN1cnJvZ2F0ZSBwYWlyIGFzIG9uZSBjaGFyYWN0ZXIgaWYgdW5pY29kZSBmbGFnIGlz
IGVuYWJsZWQuCiAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGhlIG51bWJlckNoYXJhY3RlcnMg
YmVjb21lIDEgd2hpbGUgdGhlIHdpZHRoIG9mIHRoZSBwYXR0ZXJuIGNoYXJhY3RlciBiZWNvbWVz
IDMyYml0IGluIHRoaXMgY2FzZS4KLSAgICAgICAgICAgIGlmIChuZXh0VGVybS0+dHlwZSAhPSBQ
YXR0ZXJuVGVybTo6VHlwZVBhdHRlcm5DaGFyYWN0ZXIKLSAgICAgICAgICAgICAgICB8fCBuZXh0
VGVybS0+cXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJGaXhlZENvdW50CisgICAgICAgICAgICBp
ZiAobmV4dFRlcm0tPnR5cGUgIT0gUGF0dGVyblRlcm06OlR5cGU6OlBhdHRlcm5DaGFyYWN0ZXIK
KyAgICAgICAgICAgICAgICB8fCBuZXh0VGVybS0+cXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJU
eXBlOjpGaXhlZENvdW50CiAgICAgICAgICAgICAgICAgfHwgbmV4dFRlcm0tPnF1YW50aXR5TWF4
Q291bnQgIT0gMQogICAgICAgICAgICAgICAgIHx8IG5leHRUZXJtLT5pbnB1dFBvc2l0aW9uICE9
IChzdGFydFRlcm1Qb3NpdGlvbiArIG51bWJlckNoYXJhY3RlcnMpCiAgICAgICAgICAgICAgICAg
fHwgKFUxNl9MRU5HVEgobmV4dFRlcm0tPnBhdHRlcm5DaGFyYWN0ZXIpICE9IDEgJiYgbV9kZWNv
ZGVTdXJyb2dhdGVQYWlycykpCkBAIC0xMzkyLDE0ICsxMzkxLDE0IEBAIGNsYXNzIFlhcnJHZW5l
cmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIg
ewogICAgICAgICAgICAgbmV4dE9wLT5tX2lzRGVhZENvZGUgPSB0cnVlOwogCiAjaWYgQ1BVKEJJ
R19FTkRJQU4pCi0gICAgICAgICAgICBpbnQgc2hpZnRBbW91bnQgPSAobV9jaGFyU2l6ZSA9PSBD
aGFyOCA/IDI0IDogMTYpIC0gKChtX2NoYXJTaXplID09IENoYXI4ID8gOCA6IDE2KSAqIG51bWJl
ckNoYXJhY3RlcnMpOworICAgICAgICAgICAgaW50IHNoaWZ0QW1vdW50ID0gKG1fY2hhclNpemUg
PT0gQ2hhclNpemU6OkNoYXI4ID8gMjQgOiAxNikgLSAoKG1fY2hhclNpemUgPT0gQ2hhclNpemU6
OkNoYXI4ID8gOCA6IDE2KSAqIG51bWJlckNoYXJhY3RlcnMpOwogI2Vsc2UKLSAgICAgICAgICAg
IGludCBzaGlmdEFtb3VudCA9IChtX2NoYXJTaXplID09IENoYXI4ID8gOCA6IDE2KSAqIG51bWJl
ckNoYXJhY3RlcnM7CisgICAgICAgICAgICBpbnQgc2hpZnRBbW91bnQgPSAobV9jaGFyU2l6ZSA9
PSBDaGFyU2l6ZTo6Q2hhcjggPyA4IDogMTYpICogbnVtYmVyQ2hhcmFjdGVyczsKICNlbmRpZgog
CiAgICAgICAgICAgICBVQ2hhcjMyIGN1cnJlbnRDaGFyYWN0ZXIgPSBuZXh0VGVybS0+cGF0dGVy
bkNoYXJhY3RlcjsKIAotICAgICAgICAgICAgaWYgKCFpc0xhdGluMShjdXJyZW50Q2hhcmFjdGVy
KSAmJiAobV9jaGFyU2l6ZSA9PSBDaGFyOCkpIHsKKyAgICAgICAgICAgIGlmICghaXNMYXRpbjEo
Y3VycmVudENoYXJhY3RlcikgJiYgKG1fY2hhclNpemUgPT0gQ2hhclNpemU6OkNoYXI4KSkgewog
ICAgICAgICAgICAgICAgIC8vIEhhdmUgYSAxNiBiaXQgcGF0dGVybiBjaGFyYWN0ZXIgYW5kIGFu
IDggYml0IHN0cmluZyAtIHNob3J0IGNpcmN1aXQKICAgICAgICAgICAgICAgICBvcC5tX2p1bXBz
LmFwcGVuZChqdW1wKCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTE0MTgsNyArMTQx
Nyw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHBy
aXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBpZiAobV9kZWNvZGVTdXJyb2dhdGVQYWly
cykKICAgICAgICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKGp1bXBJZk5vQXZhaWxhYmxlSW5wdXQo
KSk7CiAKLSAgICAgICAgaWYgKG1fY2hhclNpemUgPT0gQ2hhcjgpIHsKKyAgICAgICAgaWYgKG1f
Y2hhclNpemUgPT0gQ2hhclNpemU6OkNoYXI4KSB7CiAgICAgICAgICAgICBhdXRvIGNoZWNrMSA9
IFsmXSAoQ2hlY2tlZDx1bnNpZ25lZD4gb2Zmc2V0LCBVQ2hhcjMyIGNoYXJhY3RlcnMpIHsKICAg
ICAgICAgICAgICAgICBvcC5tX2p1bXBzLmFwcGVuZChqdW1wSWZDaGFyTm90RXF1YWxzKGNoYXJh
Y3RlcnMsIG9mZnNldCwgY2hhcmFjdGVyKSk7CiAgICAgICAgICAgICB9OwpAQCAtMTU5NCw3ICsx
NTkzLDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywg
cHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKDApLCBj
b3VudFJlZ2lzdGVyKTsKIAogICAgICAgICAvLyBVbmxlc3MgaGF2ZSBhIDE2IGJpdCBwYXR0ZXJu
IGNoYXJhY3RlciBhbmQgYW4gOCBiaXQgc3RyaW5nIC0gc2hvcnQgY2lyY3VpdAotICAgICAgICBp
ZiAoISghaXNMYXRpbjEoY2gpICYmIChtX2NoYXJTaXplID09IENoYXI4KSkpIHsKKyAgICAgICAg
aWYgKCEoIWlzTGF0aW4xKGNoKSAmJiAobV9jaGFyU2l6ZSA9PSBDaGFyU2l6ZTo6Q2hhcjgpKSkg
ewogICAgICAgICAgICAgSnVtcExpc3QgZmFpbHVyZXM7CiAgICAgICAgICAgICBMYWJlbCBsb29w
KHRoaXMpOwogICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKGF0RW5kT2ZJbnB1dCgpKTsKQEAg
LTE2NjcsNyArMTY2Niw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFy
ckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBsb2FkRnJvbUZyYW1l
KHRlcm0tPmZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvUGF0dGVybkNoYXJhY3Rlcjo6bWF0
Y2hBbW91bnRJbmRleCgpLCBjb3VudFJlZ2lzdGVyKTsKIAogICAgICAgICAvLyBVbmxlc3MgaGF2
ZSBhIDE2IGJpdCBwYXR0ZXJuIGNoYXJhY3RlciBhbmQgYW4gOCBiaXQgc3RyaW5nIC0gc2hvcnQg
Y2lyY3VpdAotICAgICAgICBpZiAoISghaXNMYXRpbjEoY2gpICYmIChtX2NoYXJTaXplID09IENo
YXI4KSkpIHsKKyAgICAgICAgaWYgKCEoIWlzTGF0aW4xKGNoKSAmJiAobV9jaGFyU2l6ZSA9PSBD
aGFyU2l6ZTo6Q2hhcjgpKSkgewogICAgICAgICAgICAgSnVtcExpc3Qgbm9uR3JlZWR5RmFpbHVy
ZXM7CiAgICAgICAgICAgICBub25HcmVlZHlGYWlsdXJlcy5hcHBlbmQoYXRFbmRPZklucHV0KCkp
OwogICAgICAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5TWF4Q291bnQgIT0gcXVhbnRpZnlJbmZp
bml0ZSkKQEAgLTIwMTksNyArMjAxOCw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBw
dWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBzYXZl
U3RhcnRJbmRleC5hcHBlbmQoYnJhbmNoMzIoQmVsb3dPckVxdWFsLCBtYXRjaFBvcywgaW5pdGlh
bFN0YXJ0KSk7CiAgICAgICAgIExhYmVsIGZpbmRCT0xMb29wKHRoaXMpOwogICAgICAgICBzdWIz
MihUcnVzdGVkSW1tMzIoMSksIG1hdGNoUG9zKTsKLSAgICAgICAgaWYgKG1fY2hhclNpemUgPT0g
Q2hhcjgpCisgICAgICAgIGlmIChtX2NoYXJTaXplID09IENoYXJTaXplOjpDaGFyOCkKICAgICAg
ICAgICAgIGxvYWQ4KEJhc2VJbmRleChpbnB1dCwgbWF0Y2hQb3MsIFRpbWVzT25lLCAwKSwgY2hh
cmFjdGVyKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbG9hZDE2KEJhc2VJbmRleChpbnB1
dCwgbWF0Y2hQb3MsIFRpbWVzVHdvLCAwKSwgY2hhcmFjdGVyKTsKQEAgLTIwNDIsNyArMjA0MSw3
IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZh
dGUgTWFjcm9Bc3NlbWJsZXIgewogCiAgICAgICAgIExhYmVsIGZpbmRFT0xMb29wKHRoaXMpOyAg
ICAgICAgCiAgICAgICAgIGZvdW5kRW5kaW5nTmV3TGluZS5hcHBlbmQoYnJhbmNoMzIoRXF1YWws
IG1hdGNoUG9zLCBsZW5ndGgpKTsKLSAgICAgICAgaWYgKG1fY2hhclNpemUgPT0gQ2hhcjgpCisg
ICAgICAgIGlmIChtX2NoYXJTaXplID09IENoYXJTaXplOjpDaGFyOCkKICAgICAgICAgICAgIGxv
YWQ4KEJhc2VJbmRleChpbnB1dCwgbWF0Y2hQb3MsIFRpbWVzT25lLCAwKSwgY2hhcmFjdGVyKTsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgbG9hZDE2KEJhc2VJbmRleChpbnB1dCwgbWF0Y2hQ
b3MsIFRpbWVzVHdvLCAwKSwgY2hhcmFjdGVyKTsKQEAgLTIwNzIsNjggKzIwNzEsNjggQEAgY2xh
c3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNy
b0Fzc2VtYmxlciB7CiAgICAgICAgIFBhdHRlcm5UZXJtKiB0ZXJtID0gb3AubV90ZXJtOwogCiAg
ICAgICAgIHN3aXRjaCAodGVybS0+dHlwZSkgewotICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpU
eXBlUGF0dGVybkNoYXJhY3RlcjoKKyAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6UGF0
dGVybkNoYXJhY3RlcjoKICAgICAgICAgICAgIHN3aXRjaCAodGVybS0+cXVhbnRpdHlUeXBlKSB7
Ci0gICAgICAgICAgICBjYXNlIFF1YW50aWZpZXJGaXhlZENvdW50OgorICAgICAgICAgICAgY2Fz
ZSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudDoKICAgICAgICAgICAgICAgICBpZiAodGVybS0+
cXVhbnRpdHlNYXhDb3VudCA9PSAxKQogICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZVBhdHRl
cm5DaGFyYWN0ZXJPbmNlKG9wSW5kZXgpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICAgICAgZ2VuZXJhdGVQYXR0ZXJuQ2hhcmFjdGVyRml4ZWQob3BJbmRleCk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFF1YW50aWZpZXJHcmVlZHk6Cisg
ICAgICAgICAgICBjYXNlIFF1YW50aWZpZXJUeXBlOjpHcmVlZHk6CiAgICAgICAgICAgICAgICAg
Z2VuZXJhdGVQYXR0ZXJuQ2hhcmFjdGVyR3JlZWR5KG9wSW5kZXgpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgY2FzZSBRdWFudGlmaWVyTm9uR3JlZWR5OgorICAgICAgICAg
ICAgY2FzZSBRdWFudGlmaWVyVHlwZTo6Tm9uR3JlZWR5OgogICAgICAgICAgICAgICAgIGdlbmVy
YXRlUGF0dGVybkNoYXJhY3Rlck5vbkdyZWVkeShvcEluZGV4KTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGNhc2Ug
UGF0dGVyblRlcm06OlR5cGVDaGFyYWN0ZXJDbGFzczoKKyAgICAgICAgY2FzZSBQYXR0ZXJuVGVy
bTo6VHlwZTo6Q2hhcmFjdGVyQ2xhc3M6CiAgICAgICAgICAgICBzd2l0Y2ggKHRlcm0tPnF1YW50
aXR5VHlwZSkgewotICAgICAgICAgICAgY2FzZSBRdWFudGlmaWVyRml4ZWRDb3VudDoKKyAgICAg
ICAgICAgIGNhc2UgUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQ6CiAgICAgICAgICAgICAgICAg
aWYgKHRlcm0tPnF1YW50aXR5TWF4Q291bnQgPT0gMSkKICAgICAgICAgICAgICAgICAgICAgZ2Vu
ZXJhdGVDaGFyYWN0ZXJDbGFzc09uY2Uob3BJbmRleCk7CiAgICAgICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZUNoYXJhY3RlckNsYXNzRml4ZWQob3BJbmRleCk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFF1YW50aWZpZXJHcmVl
ZHk6CisgICAgICAgICAgICBjYXNlIFF1YW50aWZpZXJUeXBlOjpHcmVlZHk6CiAgICAgICAgICAg
ICAgICAgZ2VuZXJhdGVDaGFyYWN0ZXJDbGFzc0dyZWVkeShvcEluZGV4KTsKICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgUXVhbnRpZmllck5vbkdyZWVkeToKKyAgICAg
ICAgICAgIGNhc2UgUXVhbnRpZmllclR5cGU6Ok5vbkdyZWVkeToKICAgICAgICAgICAgICAgICBn
ZW5lcmF0ZUNoYXJhY3RlckNsYXNzTm9uR3JlZWR5KG9wSW5kZXgpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgY2Fz
ZSBQYXR0ZXJuVGVybTo6VHlwZUFzc2VydGlvbkJPTDoKKyAgICAgICAgY2FzZSBQYXR0ZXJuVGVy
bTo6VHlwZTo6QXNzZXJ0aW9uQk9MOgogICAgICAgICAgICAgZ2VuZXJhdGVBc3NlcnRpb25CT0wo
b3BJbmRleCk7CiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBjYXNlIFBhdHRlcm5UZXJt
OjpUeXBlQXNzZXJ0aW9uRU9MOgorICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpBc3Nl
cnRpb25FT0w6CiAgICAgICAgICAgICBnZW5lcmF0ZUFzc2VydGlvbkVPTChvcEluZGV4KTsKICAg
ICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGVBc3NlcnRp
b25Xb3JkQm91bmRhcnk6CisgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkFzc2VydGlv
bldvcmRCb3VuZGFyeToKICAgICAgICAgICAgIGdlbmVyYXRlQXNzZXJ0aW9uV29yZEJvdW5kYXJ5
KG9wSW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgY2FzZSBQYXR0ZXJuVGVy
bTo6VHlwZUZvcndhcmRSZWZlcmVuY2U6CisgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6
OkZvcndhcmRSZWZlcmVuY2U6CiAgICAgICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSBKSVRGYWls
dXJlUmVhc29uOjpGb3J3YXJkUmVmZXJlbmNlOwogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAg
ICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVybjoKLSAgICAgICAg
Y2FzZSBQYXR0ZXJuVGVybTo6VHlwZVBhcmVudGhldGljYWxBc3NlcnRpb246CisgICAgICAgIGNh
c2UgUGF0dGVyblRlcm06OlR5cGU6OlBhcmVudGhlc2VzU3VicGF0dGVybjoKKyAgICAgICAgY2Fz
ZSBQYXR0ZXJuVGVybTo6VHlwZTo6UGFyZW50aGV0aWNhbEFzc2VydGlvbjoKICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKLSAgICAgICAgY2FzZSBQYXR0ZXJuVGVy
bTo6VHlwZUJhY2tSZWZlcmVuY2U6CisgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkJh
Y2tSZWZlcmVuY2U6CiAjaWYgRU5BQkxFKFlBUlJfSklUX0JBQ0tSRUZFUkVOQ0VTKQogICAgICAg
ICAgICAgZ2VuZXJhdGVCYWNrUmVmZXJlbmNlKG9wSW5kZXgpOwogI2Vsc2UKICAgICAgICAgICAg
IG1fZmFpbHVyZVJlYXNvbiA9IEpJVEZhaWx1cmVSZWFzb246OkJhY2tSZWZlcmVuY2U7CiAjZW5k
aWYKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlRG90
U3RhckVuY2xvc3VyZToKKyAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6RG90U3RhckVu
Y2xvc3VyZToKICAgICAgICAgICAgIGdlbmVyYXRlRG90U3RhckVuY2xvc3VyZShvcEluZGV4KTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yMTQ0LDYxICsyMTQzLDYxIEBAIGNs
YXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFj
cm9Bc3NlbWJsZXIgewogICAgICAgICBQYXR0ZXJuVGVybSogdGVybSA9IG9wLm1fdGVybTsKIAog
ICAgICAgICBzd2l0Y2ggKHRlcm0tPnR5cGUpIHsKLSAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6
VHlwZVBhdHRlcm5DaGFyYWN0ZXI6CisgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OlBh
dHRlcm5DaGFyYWN0ZXI6CiAgICAgICAgICAgICBzd2l0Y2ggKHRlcm0tPnF1YW50aXR5VHlwZSkg
ewotICAgICAgICAgICAgY2FzZSBRdWFudGlmaWVyRml4ZWRDb3VudDoKKyAgICAgICAgICAgIGNh
c2UgUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQ6CiAgICAgICAgICAgICAgICAgaWYgKHRlcm0t
PnF1YW50aXR5TWF4Q291bnQgPT0gMSkKICAgICAgICAgICAgICAgICAgICAgYmFja3RyYWNrUGF0
dGVybkNoYXJhY3Rlck9uY2Uob3BJbmRleCk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgICAgICBiYWNrdHJhY2tQYXR0ZXJuQ2hhcmFjdGVyRml4ZWQob3BJbmRleCk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFF1YW50aWZpZXJHcmVlZHk6
CisgICAgICAgICAgICBjYXNlIFF1YW50aWZpZXJUeXBlOjpHcmVlZHk6CiAgICAgICAgICAgICAg
ICAgYmFja3RyYWNrUGF0dGVybkNoYXJhY3RlckdyZWVkeShvcEluZGV4KTsKICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgUXVhbnRpZmllck5vbkdyZWVkeToKKyAgICAg
ICAgICAgIGNhc2UgUXVhbnRpZmllclR5cGU6Ok5vbkdyZWVkeToKICAgICAgICAgICAgICAgICBi
YWNrdHJhY2tQYXR0ZXJuQ2hhcmFjdGVyTm9uR3JlZWR5KG9wSW5kZXgpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAg
Y2FzZSBQYXR0ZXJuVGVybTo6VHlwZUNoYXJhY3RlckNsYXNzOgorICAgICAgICBjYXNlIFBhdHRl
cm5UZXJtOjpUeXBlOjpDaGFyYWN0ZXJDbGFzczoKICAgICAgICAgICAgIHN3aXRjaCAodGVybS0+
cXVhbnRpdHlUeXBlKSB7Ci0gICAgICAgICAgICBjYXNlIFF1YW50aWZpZXJGaXhlZENvdW50Ogor
ICAgICAgICAgICAgY2FzZSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudDoKICAgICAgICAgICAg
ICAgICBpZiAodGVybS0+cXVhbnRpdHlNYXhDb3VudCA9PSAxKQogICAgICAgICAgICAgICAgICAg
ICBiYWNrdHJhY2tDaGFyYWN0ZXJDbGFzc09uY2Uob3BJbmRleCk7CiAgICAgICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgICAgICBiYWNrdHJhY2tDaGFyYWN0ZXJDbGFzc0ZpeGVkKG9w
SW5kZXgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBRdWFudGlm
aWVyR3JlZWR5OgorICAgICAgICAgICAgY2FzZSBRdWFudGlmaWVyVHlwZTo6R3JlZWR5OgogICAg
ICAgICAgICAgICAgIGJhY2t0cmFja0NoYXJhY3RlckNsYXNzR3JlZWR5KG9wSW5kZXgpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBRdWFudGlmaWVyTm9uR3JlZWR5
OgorICAgICAgICAgICAgY2FzZSBRdWFudGlmaWVyVHlwZTo6Tm9uR3JlZWR5OgogICAgICAgICAg
ICAgICAgIGJhY2t0cmFja0NoYXJhY3RlckNsYXNzTm9uR3JlZWR5KG9wSW5kZXgpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAKLSAg
ICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZUFzc2VydGlvbkJPTDoKKyAgICAgICAgY2FzZSBQ
YXR0ZXJuVGVybTo6VHlwZTo6QXNzZXJ0aW9uQk9MOgogICAgICAgICAgICAgYmFja3RyYWNrQXNz
ZXJ0aW9uQk9MKG9wSW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgY2FzZSBQ
YXR0ZXJuVGVybTo6VHlwZUFzc2VydGlvbkVPTDoKKyAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6
VHlwZTo6QXNzZXJ0aW9uRU9MOgogICAgICAgICAgICAgYmFja3RyYWNrQXNzZXJ0aW9uRU9MKG9w
SW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6
VHlwZUFzc2VydGlvbldvcmRCb3VuZGFyeToKKyAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlw
ZTo6QXNzZXJ0aW9uV29yZEJvdW5kYXJ5OgogICAgICAgICAgICAgYmFja3RyYWNrQXNzZXJ0aW9u
V29yZEJvdW5kYXJ5KG9wSW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgY2Fz
ZSBQYXR0ZXJuVGVybTo6VHlwZUZvcndhcmRSZWZlcmVuY2U6CisgICAgICAgIGNhc2UgUGF0dGVy
blRlcm06OlR5cGU6OkZvcndhcmRSZWZlcmVuY2U6CiAgICAgICAgICAgICBtX2ZhaWx1cmVSZWFz
b24gPSBKSVRGYWlsdXJlUmVhc29uOjpGb3J3YXJkUmVmZXJlbmNlOwogICAgICAgICAgICAgYnJl
YWs7CiAKLSAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVy
bjoKLSAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZVBhcmVudGhldGljYWxBc3NlcnRpb246
CisgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OlBhcmVudGhlc2VzU3VicGF0dGVybjoK
KyAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6UGFyZW50aGV0aWNhbEFzc2VydGlvbjoK
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKLSAgICAgICAgY2Fz
ZSBQYXR0ZXJuVGVybTo6VHlwZUJhY2tSZWZlcmVuY2U6CisgICAgICAgIGNhc2UgUGF0dGVyblRl
cm06OlR5cGU6OkJhY2tSZWZlcmVuY2U6CiAjaWYgRU5BQkxFKFlBUlJfSklUX0JBQ0tSRUZFUkVO
Q0VTKQogICAgICAgICAgICAgYmFja3RyYWNrQmFja1JlZmVyZW5jZShvcEluZGV4KTsKICNlbHNl
CkBAIC0yMjA2LDcgKzIyMDUsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGlj
IFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICNlbmRpZgogICAgICAgICAg
ICAgYnJlYWs7CiAKLSAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZURvdFN0YXJFbmNsb3N1
cmU6CisgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkRvdFN0YXJFbmNsb3N1cmU6CiAg
ICAgICAgICAgICBiYWNrdHJhY2tEb3RTdGFyRW5jbG9zdXJlKG9wSW5kZXgpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTIyMjUsMTEgKzIyMjQsMTEgQEAgY2xhc3MgWWFyckdl
bmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxl
ciB7CiAgICAgICAgICAgICBZYXJyT3AmIG9wID0gbV9vcHNbb3BJbmRleF07CiAgICAgICAgICAg
ICBzd2l0Y2ggKG9wLm1fb3ApIHsKIAotICAgICAgICAgICAgY2FzZSBPcFRlcm06CisgICAgICAg
ICAgICBjYXNlIFlhcnJPcENvZGU6OlRlcm06CiAgICAgICAgICAgICAgICAgZ2VuZXJhdGVUZXJt
KG9wSW5kZXgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICAvLyBPcEJv
ZHlBbHRlcm5hdGl2ZUJlZ2luL05leHQvRW5kCisgICAgICAgICAgICAvLyBZYXJyT3BDb2RlOjpC
b2R5QWx0ZXJuYXRpdmVCZWdpbi9OZXh0L0VuZAogICAgICAgICAgICAgLy8KICAgICAgICAgICAg
IC8vIFRoZXNlIG5vZGVzIHdyYXAgdGhlIHNldCBvZiBhbHRlcm5hdGl2ZXMgaW4gdGhlIGJvZHkg
b2YgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbi4KICAgICAgICAgICAgIC8vIFRoZXJlIG1heSBiZSBl
aXRoZXIgb25lIG9yIHR3byBjaGFpbnMgb2YgT3BCb2R5QWx0ZXJuYXRpdmUgbm9kZXMsIG9uZSBy
ZXByZXNlbnRpbmcKQEAgLTIyNTEsNyArMjI1MCw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmlu
YWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAg
ICAgICAgLy8gSW4gdGhlIGNhc2UgJ29uY2UgdGhyb3VnaCcgZXhwcmVzc2lvbnMsIHRoZSBFbmQg
bm9kZSB3aWxsIGFsc28gaGF2ZSBhIHJlZW50cnkKICAgICAgICAgICAgIC8vIHBvaW50IHRvIGp1
bXAgdG8gd2hlbiB0aGUgbGFzdCBhbHRlcm5hdGl2ZSBmYWlscy4gQWdhaW4sIHRoaXMgZXhwZWN0
cyB0aGUgaW5wdXQKICAgICAgICAgICAgIC8vIHBvc2l0aW9uIHRvIHN0aWxsIHJlZmxlY3QgdGhh
dCBleHBlY3RlZCBieSB0aGUgcHJpb3IgYWx0ZXJuYXRpdmUuCi0gICAgICAgICAgICBjYXNlIE9w
Qm9keUFsdGVybmF0aXZlQmVnaW46IHsKKyAgICAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6Qm9k
eUFsdGVybmF0aXZlQmVnaW46IHsKICAgICAgICAgICAgICAgICBQYXR0ZXJuQWx0ZXJuYXRpdmUq
IGFsdGVybmF0aXZlID0gb3AubV9hbHRlcm5hdGl2ZTsKIAogICAgICAgICAgICAgICAgIC8vIFVw
b24gZW50cnkgYXQgdGhlIGhlYWQgb2YgdGhlIHNldCBvZiBhbHRlcm5hdGl2ZXMsIGNoZWNrIGlm
IGlucHV0IGlzIGF2YWlsYWJsZQpAQCAtMjI2NCw4ICsyMjYzLDggQEAgY2xhc3MgWWFyckdlbmVy
YXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7
CiAgICAgICAgICAgICAgICAgbV9jaGVja2VkT2Zmc2V0ICs9IGFsdGVybmF0aXZlLT5tX21pbmlt
dW1TaXplOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgY2FzZSBPcEJvZHlBbHRlcm5hdGl2ZU5leHQ6Ci0gICAgICAgICAgICBjYXNlIE9wQm9keUFs
dGVybmF0aXZlRW5kOiB7CisgICAgICAgICAgICBjYXNlIFlhcnJPcENvZGU6OkJvZHlBbHRlcm5h
dGl2ZU5leHQ6CisgICAgICAgICAgICBjYXNlIFlhcnJPcENvZGU6OkJvZHlBbHRlcm5hdGl2ZUVu
ZDogewogICAgICAgICAgICAgICAgIFBhdHRlcm5BbHRlcm5hdGl2ZSogcHJpb3JBbHRlcm5hdGl2
ZSA9IG1fb3BzW29wLm1fcHJldmlvdXNPcF0ubV9hbHRlcm5hdGl2ZTsKICAgICAgICAgICAgICAg
ICBQYXR0ZXJuQWx0ZXJuYXRpdmUqIGFsdGVybmF0aXZlID0gb3AubV9hbHRlcm5hdGl2ZTsKIApA
QCAtMjI4MiwxMSArMjI4MSwxMSBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGlj
IFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICAg
ICAgbW92ZShpbmRleCwgcmV0dXJuUmVnaXN0ZXIpOwogICAgICAgICAgICAgICAgICAgICBpZiAo
cHJpb3JBbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSkKICAgICAgICAgICAgICAgICAgICAgICAg
IHN1YjMyKEltbTMyKHByaW9yQWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUpLCByZXR1cm5SZWdp
c3Rlcik7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjb21waWxlTW9kZSA9PSBJbmNsdWRlU3Vi
cGF0dGVybnMpCisgICAgICAgICAgICAgICAgICAgIGlmIChtX2NvbXBpbGVNb2RlID09IEpJVENv
bXBpbGVNb2RlOjpJbmNsdWRlU3VicGF0dGVybnMpCiAgICAgICAgICAgICAgICAgICAgICAgICBz
dG9yZTMyKHJldHVyblJlZ2lzdGVyLCBvdXRwdXQpOwogICAgICAgICAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgICAgICAgICBnZXRNYXRjaFN0YXJ0KHJldHVyblJlZ2lzdGVyKTsKLSAgICAg
ICAgICAgICAgICBpZiAoY29tcGlsZU1vZGUgPT0gSW5jbHVkZVN1YnBhdHRlcm5zKQorICAgICAg
ICAgICAgICAgIGlmIChtX2NvbXBpbGVNb2RlID09IEpJVENvbXBpbGVNb2RlOjpJbmNsdWRlU3Vi
cGF0dGVybnMpCiAgICAgICAgICAgICAgICAgICAgIHN0b3JlMzIoaW5kZXgsIEFkZHJlc3Mob3V0
cHV0LCA0KSk7CiAgICAgICAgICAgICAgICAgbW92ZShpbmRleCwgcmV0dXJuUmVnaXN0ZXIyKTsK
IApAQCAtMjI5NSw3ICsyMjk0LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1Ymxp
YyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAg
Ly8gVGhpcyBpcyB0aGUgZGl2aWRlIGJldHdlZW4gdGhlIHRhaWwgb2YgdGhlIHByaW9yIGFsdGVy
bmF0aXZlLCBhYm92ZSwgYW5kCiAgICAgICAgICAgICAgICAgLy8gdGhlIGhlYWQgb2YgdGhlIHN1
YnNlcXVlbnQgYWx0ZXJuYXRpdmUsIGJlbG93LgogCi0gICAgICAgICAgICAgICAgaWYgKG9wLm1f
b3AgPT0gT3BCb2R5QWx0ZXJuYXRpdmVOZXh0KSB7CisgICAgICAgICAgICAgICAgaWYgKG9wLm1f
b3AgPT0gWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlTmV4dCkgewogICAgICAgICAgICAgICAg
ICAgICAvLyBUaGlzIGlzIHRoZSByZWVudHJ5IHBvaW50IGZvciB0aGUgTmV4dCBhbHRlcm5hdGl2
ZS4gV2UgZXhwZWN0IGFueSBjb2RlCiAgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQganVtcHMg
aGVyZSB0byBkbyBzbyB3aXRoIHRoZSBpbnB1dCBwb3NpdGlvbiBtYXRjaGluZyB0aGF0IG9mIHRo
ZQogICAgICAgICAgICAgICAgICAgICAvLyBQUklPUiBhbHRlcmFuYXRpdmUsIGFuZCB3ZSB3aWxs
IG9ubHkgY2hlY2sgaW5wdXQgYXZhaWxhYmlsaXR5IGlmIHdlCkBAIC0yMzEzLDE0ICsyMzEyLDE0
IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZh
dGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgICAgICBzdWIzMihJbW0zMihwcmlv
ckFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplKSwgaW5kZXgpOwogICAgICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgICAgIGlmIChvcC5tX29wID09IE9wQm9keUFsdGVybmF0aXZlTmV4dCkK
KyAgICAgICAgICAgICAgICBpZiAob3AubV9vcCA9PSBZYXJyT3BDb2RlOjpCb2R5QWx0ZXJuYXRp
dmVOZXh0KQogICAgICAgICAgICAgICAgICAgICBtX2NoZWNrZWRPZmZzZXQgKz0gYWx0ZXJuYXRp
dmUtPm1fbWluaW11bVNpemU7CiAgICAgICAgICAgICAgICAgbV9jaGVja2VkT2Zmc2V0IC09IHBy
aW9yQWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIC8vIE9wU2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVC
ZWdpbi9OZXh0L0VuZAotICAgICAgICAgICAgLy8gT3BOZXN0ZWRBbHRlcm5hdGl2ZUJlZ2luL05l
eHQvRW5kCisgICAgICAgICAgICAvLyBZYXJyT3BDb2RlOjpTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2
ZUJlZ2luL05leHQvRW5kCisgICAgICAgICAgICAvLyBZYXJyT3BDb2RlOjpOZXN0ZWRBbHRlcm5h
dGl2ZUJlZ2luL05leHQvRW5kCiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8gVGhlc2Ug
bm9kZXMgYXJlIHVzZWQgdG8gaGFuZGxlIHNldHMgb2YgYWx0ZXJuYXRpdmVzIHRoYXQgYXJlIG5l
c3RlZCB3aXRoaW4KICAgICAgICAgICAgIC8vIHN1YnBhdHRlcm5zIGFuZCBwYXJlbnRoZXRpY2Fs
IGFzc2VydGlvbnMuIFRoZSAnc2ltcGxlJyBmb3JtcyBhcmUgdXNlZCB3aGVyZQpAQCAtMjMzNSwx
NSArMjMzNCwxNSBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJ
bmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgIC8vIEluIHRoZSBub24t
c2ltcGxlIGZvcm1zLCBzdWNjZXNzZnVsIGFsdGVybmF0aXZlIG1hdGNoZXMgbXVzdCBzdG9yZSBh
CiAgICAgICAgICAgICAvLyAncmV0dXJuIGFkZHJlc3MnIHVzaW5nIGEgRGF0YUxhYmVsUHRyLCB1
c2VkIHRvIHN0b3JlIHRoZSBhZGRyZXNzIHRvIGp1bXAKICAgICAgICAgICAgIC8vIHRvIHdoZW4g
YmFja3RyYWNraW5nLCB0byBnZXQgdG8gdGhlIGNvZGUgZm9yIHRoZSBhcHByb3ByaWF0ZSBhbHRl
cm5hdGl2ZS4KLSAgICAgICAgICAgIGNhc2UgT3BTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZUJlZ2lu
OgotICAgICAgICAgICAgY2FzZSBPcE5lc3RlZEFsdGVybmF0aXZlQmVnaW46IHsKKyAgICAgICAg
ICAgIGNhc2UgWWFyck9wQ29kZTo6U2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVCZWdpbjoKKyAgICAg
ICAgICAgIGNhc2UgWWFyck9wQ29kZTo6TmVzdGVkQWx0ZXJuYXRpdmVCZWdpbjogewogICAgICAg
ICAgICAgICAgIFBhdHRlcm5UZXJtKiB0ZXJtID0gb3AubV90ZXJtOwogICAgICAgICAgICAgICAg
IFBhdHRlcm5BbHRlcm5hdGl2ZSogYWx0ZXJuYXRpdmUgPSBvcC5tX2FsdGVybmF0aXZlOwogICAg
ICAgICAgICAgICAgIFBhdHRlcm5EaXNqdW5jdGlvbiogZGlzanVuY3Rpb24gPSB0ZXJtLT5wYXJl
bnRoZXNlcy5kaXNqdW5jdGlvbjsKIAogICAgICAgICAgICAgICAgIC8vIENhbGN1bGF0ZSBob3cg
bXVjaCBpbnB1dCB3ZSBuZWVkIHRvIGNoZWNrIGZvciwgYW5kIGlmIG5vbi16ZXJvIGNoZWNrLgog
ICAgICAgICAgICAgICAgIG9wLm1fY2hlY2tBZGp1c3QgPSBDaGVja2VkPHVuc2lnbmVkPihhbHRl
cm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKCh0ZXJtLT5xdWFu
dGl0eVR5cGUgPT0gUXVhbnRpZmllckZpeGVkQ291bnQpICYmICh0ZXJtLT50eXBlICE9IFBhdHRl
cm5UZXJtOjpUeXBlUGFyZW50aGV0aWNhbEFzc2VydGlvbikpCisgICAgICAgICAgICAgICAgaWYg
KCh0ZXJtLT5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQpICYmICh0
ZXJtLT50eXBlICE9IFBhdHRlcm5UZXJtOjpUeXBlOjpQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uKSkK
ICAgICAgICAgICAgICAgICAgICAgb3AubV9jaGVja0FkanVzdCAtPSBkaXNqdW5jdGlvbi0+bV9t
aW5pbXVtU2l6ZTsKICAgICAgICAgICAgICAgICBpZiAob3AubV9jaGVja0FkanVzdCkKICAgICAg
ICAgICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBlbmQoanVtcElmTm9BdmFpbGFibGVJbnB1dChv
cC5tX2NoZWNrQWRqdXN0KSk7CkBAIC0yMzUxLDE5ICsyMzUwLDE5IEBAIGNsYXNzIFlhcnJHZW5l
cmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIg
ewogICAgICAgICAgICAgICAgIG1fY2hlY2tlZE9mZnNldCArPSBvcC5tX2NoZWNrQWRqdXN0Owog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSBP
cFNpbXBsZU5lc3RlZEFsdGVybmF0aXZlTmV4dDoKLSAgICAgICAgICAgIGNhc2UgT3BOZXN0ZWRB
bHRlcm5hdGl2ZU5leHQ6IHsKKyAgICAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6U2ltcGxlTmVz
dGVkQWx0ZXJuYXRpdmVOZXh0OgorICAgICAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpOZXN0ZWRB
bHRlcm5hdGl2ZU5leHQ6IHsKICAgICAgICAgICAgICAgICBQYXR0ZXJuVGVybSogdGVybSA9IG9w
Lm1fdGVybTsKICAgICAgICAgICAgICAgICBQYXR0ZXJuQWx0ZXJuYXRpdmUqIGFsdGVybmF0aXZl
ID0gb3AubV9hbHRlcm5hdGl2ZTsKICAgICAgICAgICAgICAgICBQYXR0ZXJuRGlzanVuY3Rpb24q
IGRpc2p1bmN0aW9uID0gdGVybS0+cGFyZW50aGVzZXMuZGlzanVuY3Rpb247CiAKICAgICAgICAg
ICAgICAgICAvLyBJbiB0aGUgbm9uLXNpbXBsZSBjYXNlLCBzdG9yZSBhICdyZXR1cm4gYWRkcmVz
cycgc28gd2UgY2FuIGJhY2t0cmFjayBjb3JyZWN0bHkuCi0gICAgICAgICAgICAgICAgaWYgKG9w
Lm1fb3AgPT0gT3BOZXN0ZWRBbHRlcm5hdGl2ZU5leHQpIHsKKyAgICAgICAgICAgICAgICBpZiAo
b3AubV9vcCA9PSBZYXJyT3BDb2RlOjpOZXN0ZWRBbHRlcm5hdGl2ZU5leHQpIHsKICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgcGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uID0gdGVybS0+ZnJh
bWVMb2NhdGlvbjsKICAgICAgICAgICAgICAgICAgICAgb3AubV9yZXR1cm5BZGRyZXNzID0gc3Rv
cmVUb0ZyYW1lV2l0aFBhdGNoKHBhcmVudGhlc2VzRnJhbWVMb2NhdGlvbiArIEJhY2tUcmFja0lu
Zm9QYXJlbnRoZXNlczo6cmV0dXJuQWRkcmVzc0luZGV4KCkpOwogICAgICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eVR5cGUgIT0gUXVhbnRpZmllckZp
eGVkQ291bnQgJiYgIW1fb3BzW29wLm1fcHJldmlvdXNPcF0ubV9hbHRlcm5hdGl2ZS0+bV9taW5p
bXVtU2l6ZSkgeworICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eVR5cGUgIT0gUXVh
bnRpZmllclR5cGU6OkZpeGVkQ291bnQgJiYgIW1fb3BzW29wLm1fcHJldmlvdXNPcF0ubV9hbHRl
cm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSkgewogICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUg
cHJldmlvdXMgYWx0ZXJuYXRpdmUgbWF0Y2hlZCB3aXRob3V0IGNvbnN1bWluZyBjaGFyYWN0ZXJz
IHRoZW4KICAgICAgICAgICAgICAgICAgICAgLy8gYmFja3RyYWNrIHRvIHRyeSB0byBtYXRjaCB3
aGlsZSBjb25zdW1taW5nIHNvbWUgaW5wdXQuCiAgICAgICAgICAgICAgICAgICAgIG9wLm1femVy
b0xlbmd0aE1hdGNoID0gYnJhbmNoMzIoRXF1YWwsIGluZGV4LCBBZGRyZXNzKHN0YWNrUG9pbnRl
clJlZ2lzdGVyLCB0ZXJtLT5mcmFtZUxvY2F0aW9uICogc2l6ZW9mKHZvaWQqKSkpOwpAQCAtMjM3
OSwxMCArMjM3OCwxMCBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJK
SVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICAvLyB3ZSBk
aWRuJ3QgbmVlZCB0byBwbGFudCB0aGUgaW5wdXQgY2hlY2tzLCB0aGVuIG1fanVtcHMgd291bGQg
YmUgZnJlZSkuCiAgICAgICAgICAgICAgICAgWWFyck9wKiBlbmRPcCA9ICZtX29wc1tvcC5tX25l
eHRPcF07CiAgICAgICAgICAgICAgICAgd2hpbGUgKGVuZE9wLT5tX25leHRPcCAhPSBub3RGb3Vu
ZCkgewotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZW5kT3AtPm1fb3AgPT0gT3BTaW1wbGVO
ZXN0ZWRBbHRlcm5hdGl2ZU5leHQgfHwgZW5kT3AtPm1fb3AgPT0gT3BOZXN0ZWRBbHRlcm5hdGl2
ZU5leHQpOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZW5kT3AtPm1fb3AgPT0gWWFyck9w
Q29kZTo6U2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVOZXh0IHx8IGVuZE9wLT5tX29wID09IFlhcnJP
cENvZGU6Ok5lc3RlZEFsdGVybmF0aXZlTmV4dCk7CiAgICAgICAgICAgICAgICAgICAgIGVuZE9w
ID0gJm1fb3BzW2VuZE9wLT5tX25leHRPcF07CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIEFTU0VSVChlbmRPcC0+bV9vcCA9PSBPcFNpbXBsZU5lc3RlZEFsdGVybmF0aXZlRW5k
IHx8IGVuZE9wLT5tX29wID09IE9wTmVzdGVkQWx0ZXJuYXRpdmVFbmQpOworICAgICAgICAgICAg
ICAgIEFTU0VSVChlbmRPcC0+bV9vcCA9PSBZYXJyT3BDb2RlOjpTaW1wbGVOZXN0ZWRBbHRlcm5h
dGl2ZUVuZCB8fCBlbmRPcC0+bV9vcCA9PSBZYXJyT3BDb2RlOjpOZXN0ZWRBbHRlcm5hdGl2ZUVu
ZCk7CiAgICAgICAgICAgICAgICAgZW5kT3AtPm1fanVtcHMuYXBwZW5kKGp1bXAoKSk7CiAKICAg
ICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBlbnRyeSBwb2ludCBmb3IgdGhlIG5leHQgYWx0
ZXJuYXRpdmUuCkBAIC0yMzkwLDcgKzIzODksNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFs
IDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKIAogICAgICAg
ICAgICAgICAgIC8vIENhbGN1bGF0ZSBob3cgbXVjaCBpbnB1dCB3ZSBuZWVkIHRvIGNoZWNrIGZv
ciwgYW5kIGlmIG5vbi16ZXJvIGNoZWNrLgogICAgICAgICAgICAgICAgIG9wLm1fY2hlY2tBZGp1
c3QgPSBhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZTsKLSAgICAgICAgICAgICAgICBpZiAoKHRl
cm0tPnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyRml4ZWRDb3VudCkgJiYgKHRlcm0tPnR5cGUg
IT0gUGF0dGVyblRlcm06OlR5cGVQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uKSkKKyAgICAgICAgICAg
ICAgICBpZiAoKHRlcm0tPnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3Vu
dCkgJiYgKHRlcm0tPnR5cGUgIT0gUGF0dGVyblRlcm06OlR5cGU6OlBhcmVudGhldGljYWxBc3Nl
cnRpb24pKQogICAgICAgICAgICAgICAgICAgICBvcC5tX2NoZWNrQWRqdXN0IC09IGRpc2p1bmN0
aW9uLT5tX21pbmltdW1TaXplOwogICAgICAgICAgICAgICAgIGlmIChvcC5tX2NoZWNrQWRqdXN0
KQogICAgICAgICAgICAgICAgICAgICBvcC5tX2p1bXBzLmFwcGVuZChqdW1wSWZOb0F2YWlsYWJs
ZUlucHV0KG9wLm1fY2hlY2tBZGp1c3QpKTsKQEAgLTI0MDAsMTcgKzIzOTksMTcgQEAgY2xhc3Mg
WWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fz
c2VtYmxlciB7CiAgICAgICAgICAgICAgICAgbV9jaGVja2VkT2Zmc2V0ICs9IG9wLm1fY2hlY2tB
ZGp1c3Q7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBjYXNlIE9wU2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVFbmQ6Ci0gICAgICAgICAgICBjYXNlIE9w
TmVzdGVkQWx0ZXJuYXRpdmVFbmQ6IHsKKyAgICAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6U2lt
cGxlTmVzdGVkQWx0ZXJuYXRpdmVFbmQ6CisgICAgICAgICAgICBjYXNlIFlhcnJPcENvZGU6Ok5l
c3RlZEFsdGVybmF0aXZlRW5kOiB7CiAgICAgICAgICAgICAgICAgUGF0dGVyblRlcm0qIHRlcm0g
PSBvcC5tX3Rlcm07CiAKICAgICAgICAgICAgICAgICAvLyBJbiB0aGUgbm9uLXNpbXBsZSBjYXNl
LCBzdG9yZSBhICdyZXR1cm4gYWRkcmVzcycgc28gd2UgY2FuIGJhY2t0cmFjayBjb3JyZWN0bHku
Ci0gICAgICAgICAgICAgICAgaWYgKG9wLm1fb3AgPT0gT3BOZXN0ZWRBbHRlcm5hdGl2ZUVuZCkg
eworICAgICAgICAgICAgICAgIGlmIChvcC5tX29wID09IFlhcnJPcENvZGU6Ok5lc3RlZEFsdGVy
bmF0aXZlRW5kKSB7CiAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHBhcmVudGhlc2VzRnJh
bWVMb2NhdGlvbiA9IHRlcm0tPmZyYW1lTG9jYXRpb247CiAgICAgICAgICAgICAgICAgICAgIG9w
Lm1fcmV0dXJuQWRkcmVzcyA9IHN0b3JlVG9GcmFtZVdpdGhQYXRjaChwYXJlbnRoZXNlc0ZyYW1l
TG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXM6OnJldHVybkFkZHJlc3NJbmRleCgp
KTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBpZiAodGVybS0+cXVhbnRp
dHlUeXBlICE9IFF1YW50aWZpZXJGaXhlZENvdW50ICYmICFtX29wc1tvcC5tX3ByZXZpb3VzT3Bd
Lm1fYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUpIHsKKyAgICAgICAgICAgICAgICBpZiAodGVy
bS0+cXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJUeXBlOjpGaXhlZENvdW50ICYmICFtX29wc1tv
cC5tX3ByZXZpb3VzT3BdLm1fYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUpIHsKICAgICAgICAg
ICAgICAgICAgICAgLy8gSWYgdGhlIHByZXZpb3VzIGFsdGVybmF0aXZlIG1hdGNoZWQgd2l0aG91
dCBjb25zdW1pbmcgY2hhcmFjdGVycyB0aGVuCiAgICAgICAgICAgICAgICAgICAgIC8vIGJhY2t0
cmFjayB0byB0cnkgdG8gbWF0Y2ggd2hpbGUgY29uc3VtbWluZyBzb21lIGlucHV0LgogICAgICAg
ICAgICAgICAgICAgICBvcC5tX3plcm9MZW5ndGhNYXRjaCA9IGJyYW5jaDMyKEVxdWFsLCBpbmRl
eCwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgdGVybS0+ZnJhbWVMb2NhdGlvbiAqIHNp
emVvZih2b2lkKikpKTsKQEAgLTI0MjcsMTEgKzI0MjYsMTEgQEAgY2xhc3MgWWFyckdlbmVyYXRv
ciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIC8vIE9w
UGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUJlZ2luL0VuZAorICAgICAgICAgICAgLy8gWWFyck9w
Q29kZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUJlZ2luL0VuZAogICAgICAgICAgICAgLy8K
ICAgICAgICAgICAgIC8vIFRoZXNlIG5vZGVzIHN1cHBvcnQgKG9wdGlvbmFsbHkpIGNhcHR1cmlu
ZyBzdWJwYXR0ZXJucywgdGhhdCBoYXZlIGEKICAgICAgICAgICAgIC8vIHF1YW50aXR5IGNvdW50
IG9mIDEgKHRoaXMgY292ZXJzIGZpeGVkIG9uY2UsIGFuZCA/Lz8/IHF1YW50aWZpZXJzKS4gCi0g
ICAgICAgICAgICBjYXNlIE9wUGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUJlZ2luOiB7CisgICAg
ICAgICAgICBjYXNlIFlhcnJPcENvZGU6OlBhcmVudGhlc2VzU3VicGF0dGVybk9uY2VCZWdpbjog
ewogICAgICAgICAgICAgICAgIFBhdHRlcm5UZXJtKiB0ZXJtID0gb3AubV90ZXJtOwogICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIHBhcmVudGhlc2VzRnJhbWVMb2NhdGlvbiA9IHRlcm0tPmZyYW1l
TG9jYXRpb247CiAgICAgICAgICAgICAgICAgY29uc3QgUmVnaXN0ZXJJRCBpbmRleFRlbXBvcmFy
eSA9IHJlZ1QwOwpAQCAtMjQ1MSw5ICsyNDUwLDkgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5h
bCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAg
ICAgICAgICAgLy8gc2Vjb25kIGl0ZXJhdGlvbi4KICAgICAgICAgICAgICAgICAvLwogICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBmb3IgY2FwdHVyaW5nIHBhcmVucywgY291bGQgdXNlIHRoZSBp
bmRleCBpbiB0aGUgY2FwdHVyZSBhcnJheT8KLSAgICAgICAgICAgICAgICBpZiAodGVybS0+cXVh
bnRpdHlUeXBlID09IFF1YW50aWZpZXJHcmVlZHkpCisgICAgICAgICAgICAgICAgaWYgKHRlcm0t
PnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyVHlwZTo6R3JlZWR5KQogICAgICAgICAgICAgICAg
ICAgICBzdG9yZVRvRnJhbWUoaW5kZXgsIHBhcmVudGhlc2VzRnJhbWVMb2NhdGlvbiArIEJhY2tU
cmFja0luZm9QYXJlbnRoZXNlc09uY2U6OmJlZ2luSW5kZXgoKSk7Ci0gICAgICAgICAgICAgICAg
ZWxzZSBpZiAodGVybS0+cXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJOb25HcmVlZHkpIHsKKyAg
ICAgICAgICAgICAgICBlbHNlIGlmICh0ZXJtLT5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllclR5
cGU6Ok5vbkdyZWVkeSkgewogICAgICAgICAgICAgICAgICAgICBzdG9yZVRvRnJhbWUoVHJ1c3Rl
ZEltbTMyKC0xKSwgcGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uICsgQmFja1RyYWNrSW5mb1BhcmVu
dGhlc2VzT25jZTo6YmVnaW5JbmRleCgpKTsKICAgICAgICAgICAgICAgICAgICAgb3AubV9qdW1w
cy5hcHBlbmQoanVtcCgpKTsKICAgICAgICAgICAgICAgICAgICAgb3AubV9yZWVudHJ5ID0gbGFi
ZWwoKTsKQEAgLTI0NjYsOSArMjQ2NSw5IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBw
dWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAg
ICAgIC8vIEZJWE1FOiBjb3VsZCBhdm9pZCBvZmZzZXR0aW5nIHRoaXMgdmFsdWUgaW4gSklUIGNv
ZGUsIGFwcGx5CiAgICAgICAgICAgICAgICAgLy8gb2Zmc2V0cyBvbmx5IGFmdGVyd2FyZHMsIGF0
IHRoZSBwb2ludCB0aGUgcmVzdWx0cyBhcnJheSBpcwogICAgICAgICAgICAgICAgIC8vIGJlaW5n
IGFjY2Vzc2VkLgotICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5jYXB0dXJlKCkgJiYgY29tcGls
ZU1vZGUgPT0gSW5jbHVkZVN1YnBhdHRlcm5zKSB7CisgICAgICAgICAgICAgICAgaWYgKHRlcm0t
PmNhcHR1cmUoKSAmJiBtX2NvbXBpbGVNb2RlID09IEpJVENvbXBpbGVNb2RlOjpJbmNsdWRlU3Vi
cGF0dGVybnMpIHsKICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5wdXRPZmZzZXQgPSBt
X2NoZWNrZWRPZmZzZXQgLSB0ZXJtLT5pbnB1dFBvc2l0aW9uOwotICAgICAgICAgICAgICAgICAg
ICBpZiAodGVybS0+cXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJGaXhlZENvdW50KQorICAgICAg
ICAgICAgICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJUeXBlOjpG
aXhlZENvdW50KQogICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRPZmZzZXQgKz0gdGVybS0+
cGFyZW50aGVzZXMuZGlzanVuY3Rpb24tPm1fbWluaW11bVNpemU7CiAgICAgICAgICAgICAgICAg
ICAgIGlmIChpbnB1dE9mZnNldCkgewogICAgICAgICAgICAgICAgICAgICAgICAgbW92ZShpbmRl
eCwgaW5kZXhUZW1wb3JhcnkpOwpAQCAtMjQ3OSw3ICsyNDc4LDcgQEAgY2xhc3MgWWFyckdlbmVy
YXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgY2FzZSBPcFBhcmVudGhlc2VzU3VicGF0dGVybk9uY2VFbmQ6IHsKKyAg
ICAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUVuZDog
ewogICAgICAgICAgICAgICAgIFBhdHRlcm5UZXJtKiB0ZXJtID0gb3AubV90ZXJtOwogICAgICAg
ICAgICAgICAgIGNvbnN0IFJlZ2lzdGVySUQgaW5kZXhUZW1wb3JhcnkgPSByZWdUMDsKICAgICAg
ICAgICAgICAgICBBU1NFUlQodGVybS0+cXVhbnRpdHlNYXhDb3VudCA9PSAxKTsKQEAgLTI0ODcs
NyArMjQ4Niw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVElu
Zm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgIC8vIElmIHRoZSBu
ZXN0ZWQgYWx0ZXJuYXRpdmUgbWF0Y2hlZCB3aXRob3V0IGNvbnN1bWluZyBhbnkgY2hhcmFjdGVy
cywgcHVudCB0aGlzIGJhY2sgdG8gdGhlIGludGVycHJldGVyLgogICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDc4Nj4g
QWRkIGFiaWxpdHkgZm9yIHRoZSBZQVJSIEpJVCB0byBwcm9wZXJseQogICAgICAgICAgICAgICAg
IC8vIGhhbmRsZSBuZXN0ZWQgZXhwcmVzc2lvbnMgdGhhdCBjYW4gbWF0Y2ggd2l0aG91dCBjb25z
dW1pbmcgY2hhcmFjdGVycwotICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eVR5cGUg
IT0gUXVhbnRpZmllckZpeGVkQ291bnQgJiYgIXRlcm0tPnBhcmVudGhlc2VzLmRpc2p1bmN0aW9u
LT5tX21pbmltdW1TaXplKQorICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eVR5cGUg
IT0gUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQgJiYgIXRlcm0tPnBhcmVudGhlc2VzLmRpc2p1
bmN0aW9uLT5tX21pbmltdW1TaXplKQogICAgICAgICAgICAgICAgICAgICBtX2Fib3J0RXhlY3V0
aW9uLmFwcGVuZChicmFuY2gzMihFcXVhbCwgaW5kZXgsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVn
aXN0ZXIsIHRlcm0tPmZyYW1lTG9jYXRpb24gKiBzaXplb2Yodm9pZCopKSkpOwogCiAgICAgICAg
ICAgICAgICAgLy8gSWYgdGhlIHBhcmVudGhlc2UgYXJlIGNhcHR1cmluZywgc3RvcmUgdGhlIGVu
ZGluZyBpbmRleCB2YWx1ZSB0byB0aGUKQEAgLTI0OTYsNyArMjQ5NSw3IEBAIGNsYXNzIFlhcnJH
ZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJs
ZXIgewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBjb3VsZCBhdm9pZCBvZmZzZXR0aW5nIHRo
aXMgdmFsdWUgaW4gSklUIGNvZGUsIGFwcGx5CiAgICAgICAgICAgICAgICAgLy8gb2Zmc2V0cyBv
bmx5IGFmdGVyd2FyZHMsIGF0IHRoZSBwb2ludCB0aGUgcmVzdWx0cyBhcnJheSBpcwogICAgICAg
ICAgICAgICAgIC8vIGJlaW5nIGFjY2Vzc2VkLgotICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5j
YXB0dXJlKCkgJiYgY29tcGlsZU1vZGUgPT0gSW5jbHVkZVN1YnBhdHRlcm5zKSB7CisgICAgICAg
ICAgICAgICAgaWYgKHRlcm0tPmNhcHR1cmUoKSAmJiBtX2NvbXBpbGVNb2RlID09IEpJVENvbXBp
bGVNb2RlOjpJbmNsdWRlU3VicGF0dGVybnMpIHsKICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW5wdXRPZmZzZXQgPSBtX2NoZWNrZWRPZmZzZXQgLSB0ZXJtLT5pbnB1dFBvc2l0aW9uOwog
ICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXRPZmZzZXQpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIG1vdmUoaW5kZXgsIGluZGV4VGVtcG9yYXJ5KTsKQEAgLTI1MDksMTkgKzI1MDgsMTkg
QEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0
ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHBhcmVudGhlc2Vz
IGFyZSBxdWFudGlmaWVkIEdyZWVkeSB0aGVuIGFkZCBhIGxhYmVsIHRvIGp1bXAgYmFjawogICAg
ICAgICAgICAgICAgIC8vIHRvIGlmIHdlIGdldCBhIGZhaWxlZCBtYXRjaCBmcm9tIGFmdGVyIHRo
ZSBwYXJlbnRoZXNlcy4gRm9yIE5vbkdyZWVkeQogICAgICAgICAgICAgICAgIC8vIHBhcmVudGhl
c2VzLCBsaW5rIHRoZSBqdW1wIGZyb20gYmVmb3JlIHRoZSBzdWJwYXR0ZXJuIHRvIGhlcmUuCi0g
ICAgICAgICAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyR3JlZWR5
KQorICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllclR5
cGU6OkdyZWVkeSkKICAgICAgICAgICAgICAgICAgICAgb3AubV9yZWVudHJ5ID0gbGFiZWwoKTsK
LSAgICAgICAgICAgICAgICBlbHNlIGlmICh0ZXJtLT5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmll
ck5vbkdyZWVkeSkgeworICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRlcm0tPnF1YW50aXR5VHlw
ZSA9PSBRdWFudGlmaWVyVHlwZTo6Tm9uR3JlZWR5KSB7CiAgICAgICAgICAgICAgICAgICAgIFlh
cnJPcCYgYmVnaW5PcCA9IG1fb3BzW29wLm1fcHJldmlvdXNPcF07CiAgICAgICAgICAgICAgICAg
ICAgIGJlZ2luT3AubV9qdW1wcy5saW5rKHRoaXMpOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgLy8gT3BQYXJl
bnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEJlZ2luL0VuZAotICAgICAgICAgICAgY2FzZSBPcFBh
cmVudGhlc2VzU3VicGF0dGVyblRlcm1pbmFsQmVnaW46IHsKKyAgICAgICAgICAgIC8vIFlhcnJP
cENvZGU6OlBhcmVudGhlc2VzU3VicGF0dGVyblRlcm1pbmFsQmVnaW4vRW5kCisgICAgICAgICAg
ICBjYXNlIFlhcnJPcENvZGU6OlBhcmVudGhlc2VzU3VicGF0dGVyblRlcm1pbmFsQmVnaW46IHsK
ICAgICAgICAgICAgICAgICBQYXR0ZXJuVGVybSogdGVybSA9IG9wLm1fdGVybTsKLSAgICAgICAg
ICAgICAgICBBU1NFUlQodGVybS0+cXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJHcmVlZHkpOwor
ICAgICAgICAgICAgICAgIEFTU0VSVCh0ZXJtLT5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllclR5
cGU6OkdyZWVkeSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHRlcm0tPnF1YW50aXR5TWF4Q291
bnQgPT0gcXVhbnRpZnlJbmZpbml0ZSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCF0ZXJtLT5j
YXB0dXJlKCkpOwogCkBAIC0yNTMzLDE0ICsyNTMyLDE0IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3Ig
ZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAg
ICAgICAgICAgICAgIHN0b3JlVG9GcmFtZShpbmRleCwgdGVybS0+ZnJhbWVMb2NhdGlvbiArIEJh
Y2tUcmFja0luZm9QYXJlbnRoZXNlc1Rlcm1pbmFsOjpiZWdpbkluZGV4KCkpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSBPcFBhcmVudGhl
c2VzU3VicGF0dGVyblRlcm1pbmFsRW5kOiB7CisgICAgICAgICAgICBjYXNlIFlhcnJPcENvZGU6
OlBhcmVudGhlc2VzU3VicGF0dGVyblRlcm1pbmFsRW5kOiB7CiAgICAgICAgICAgICAgICAgWWFy
ck9wJiBiZWdpbk9wID0gbV9vcHNbb3AubV9wcmV2aW91c09wXTsKICAgICAgICAgICAgICAgICBQ
YXR0ZXJuVGVybSogdGVybSA9IG9wLm1fdGVybTsKIAogICAgICAgICAgICAgICAgIC8vIElmIHRo
ZSBuZXN0ZWQgYWx0ZXJuYXRpdmUgbWF0Y2hlZCB3aXRob3V0IGNvbnN1bWluZyBhbnkgY2hhcmFj
dGVycywgcHVudCB0aGlzIGJhY2sgdG8gdGhlIGludGVycHJldGVyLgogICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDc4
Nj4gQWRkIGFiaWxpdHkgZm9yIHRoZSBZQVJSIEpJVCB0byBwcm9wZXJseQogICAgICAgICAgICAg
ICAgIC8vIGhhbmRsZSBuZXN0ZWQgZXhwcmVzc2lvbnMgdGhhdCBjYW4gbWF0Y2ggd2l0aG91dCBj
b25zdW1pbmcgY2hhcmFjdGVycwotICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eVR5
cGUgIT0gUXVhbnRpZmllckZpeGVkQ291bnQgJiYgIXRlcm0tPnBhcmVudGhlc2VzLmRpc2p1bmN0
aW9uLT5tX21pbmltdW1TaXplKQorICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eVR5
cGUgIT0gUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQgJiYgIXRlcm0tPnBhcmVudGhlc2VzLmRp
c2p1bmN0aW9uLT5tX21pbmltdW1TaXplKQogICAgICAgICAgICAgICAgICAgICBtX2Fib3J0RXhl
Y3V0aW9uLmFwcGVuZChicmFuY2gzMihFcXVhbCwgaW5kZXgsIEFkZHJlc3Moc3RhY2tQb2ludGVy
UmVnaXN0ZXIsIHRlcm0tPmZyYW1lTG9jYXRpb24gKiBzaXplb2Yodm9pZCopKSkpOwogCiAgICAg
ICAgICAgICAgICAgLy8gV2Uga25vdyB0aGF0IHRoZSBtYXRjaCBpcyBub24temVybywgd2UgY2Fu
IGFjY2VwdCBpdCBhbmQKQEAgLTI1NTMsMTAgKzI1NTIsMTAgQEAgY2xhc3MgWWFyckdlbmVyYXRv
ciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIC8vIE9w
UGFyZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4vRW5kCisgICAgICAgICAgICAvLyBZYXJyT3BDb2Rl
OjpQYXJlbnRoZXNlc1N1YnBhdHRlcm5CZWdpbi9FbmQKICAgICAgICAgICAgIC8vCiAgICAgICAg
ICAgICAvLyBUaGVzZSBub2RlcyBzdXBwb3J0IGdlbmVyaWMgc3VicGF0dGVybnMuCi0gICAgICAg
ICAgICBjYXNlIE9wUGFyZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW46IHsKKyAgICAgICAgICAgIGNh
c2UgWWFyck9wQ29kZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW46IHsKICNpZiBFTkFCTEUo
WUFSUl9KSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUykKICAgICAgICAgICAgICAgICBQYXR0ZXJu
VGVybSogdGVybSA9IG9wLm1fdGVybTsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBwYXJlbnRo
ZXNlc0ZyYW1lTG9jYXRpb24gPSB0ZXJtLT5mcmFtZUxvY2F0aW9uOwpAQCAtMjU3NSwxMSArMjU3
NCwxMSBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBw
cml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICAvLyBvbiB0aGUgc2Vjb25k
IGl0ZXJhdGlvbi4KICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgIC8vIEZJWE1F
OiBmb3IgY2FwdHVyaW5nIHBhcmVucywgY291bGQgdXNlIHRoZSBpbmRleCBpbiB0aGUgY2FwdHVy
ZSBhcnJheT8KLSAgICAgICAgICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlUeXBlID09IFF1YW50
aWZpZXJHcmVlZHkgfHwgdGVybS0+cXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJOb25HcmVlZHkp
IHsKKyAgICAgICAgICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJU
eXBlOjpHcmVlZHkgfHwgdGVybS0+cXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJUeXBlOjpOb25H
cmVlZHkpIHsKICAgICAgICAgICAgICAgICAgICAgc3RvcmVUb0ZyYW1lKFRydXN0ZWRJbW0zMigw
KSwgcGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uICsgQmFja1RyYWNrSW5mb1BhcmVudGhlc2VzOjpt
YXRjaEFtb3VudEluZGV4KCkpOwogICAgICAgICAgICAgICAgICAgICBzdG9yZVRvRnJhbWUoVHJ1
c3RlZEltbVB0cihudWxscHRyKSwgcGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uICsgQmFja1RyYWNr
SW5mb1BhcmVudGhlc2VzOjpwYXJlbkNvbnRleHRIZWFkSW5kZXgoKSk7CiAKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyTm9uR3JlZWR5KSB7
CisgICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmll
clR5cGU6Ok5vbkdyZWVkeSkgewogICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVUb0ZyYW1l
KFRydXN0ZWRJbW0zMigtMSksIHBhcmVudGhlc2VzRnJhbWVMb2NhdGlvbiArIEJhY2tUcmFja0lu
Zm9QYXJlbnRoZXNlczo6YmVnaW5JbmRleCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIG9w
Lm1fanVtcHMuYXBwZW5kKGp1bXAoKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTI2MDIs
MTAgKzI2MDEsMTAgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklU
SW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6
IGNvdWxkIGF2b2lkIG9mZnNldHRpbmcgdGhpcyB2YWx1ZSBpbiBKSVQgY29kZSwgYXBwbHkKICAg
ICAgICAgICAgICAgICAvLyBvZmZzZXRzIG9ubHkgYWZ0ZXJ3YXJkcywgYXQgdGhlIHBvaW50IHRo
ZSByZXN1bHRzIGFycmF5IGlzCiAgICAgICAgICAgICAgICAgLy8gYmVpbmcgYWNjZXNzZWQuCi0g
ICAgICAgICAgICAgICAgaWYgKHRlcm0tPmNhcHR1cmUoKSAmJiBjb21waWxlTW9kZSA9PSBJbmNs
dWRlU3VicGF0dGVybnMpIHsKKyAgICAgICAgICAgICAgICBpZiAodGVybS0+Y2FwdHVyZSgpICYm
IG1fY29tcGlsZU1vZGUgPT0gSklUQ29tcGlsZU1vZGU6OkluY2x1ZGVTdWJwYXR0ZXJucykgewog
ICAgICAgICAgICAgICAgICAgICBjb25zdCBSZWdpc3RlcklEIGluZGV4VGVtcG9yYXJ5ID0gcmVn
VDA7CiAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlucHV0T2Zmc2V0ID0gbV9jaGVja2Vk
T2Zmc2V0IC0gdGVybS0+aW5wdXRQb3NpdGlvbjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRl
cm0tPnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyRml4ZWRDb3VudCkKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKHRlcm0tPnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3Vu
dCkKICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0T2Zmc2V0ICs9IHRlcm0tPnBhcmVudGhl
c2VzLmRpc2p1bmN0aW9uLT5tX21pbmltdW1TaXplOwogICAgICAgICAgICAgICAgICAgICBpZiAo
aW5wdXRPZmZzZXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUoaW5kZXgsIGluZGV4
VGVtcG9yYXJ5KTsKQEAgLTI2MTksNyArMjYxOCw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmlu
YWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogI2VuZGlm
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNl
IE9wUGFyZW50aGVzZXNTdWJwYXR0ZXJuRW5kOiB7CisgICAgICAgICAgICBjYXNlIFlhcnJPcENv
ZGU6OlBhcmVudGhlc2VzU3VicGF0dGVybkVuZDogewogI2lmIEVOQUJMRShZQVJSX0pJVF9BTExf
UEFSRU5TX0VYUFJFU1NJT05TKQogICAgICAgICAgICAgICAgIFBhdHRlcm5UZXJtKiB0ZXJtID0g
b3AubV90ZXJtOwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIHBhcmVudGhlc2VzRnJhbWVMb2Nh
dGlvbiA9IHRlcm0tPmZyYW1lTG9jYXRpb247CkBAIC0yNjI3LDcgKzI2MjYsNyBAQCBjbGFzcyBZ
YXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNz
ZW1ibGVyIHsKICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgbmVzdGVkIGFsdGVybmF0aXZlIG1h
dGNoZWQgd2l0aG91dCBjb25zdW1pbmcgYW55IGNoYXJhY3RlcnMsIHB1bnQgdGhpcyBiYWNrIHRv
IHRoZSBpbnRlcnByZXRlci4KICAgICAgICAgICAgICAgICAvLyBGSVhNRTogPGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA3ODY+IEFkZCBhYmlsaXR5IGZvciB0aGUg
WUFSUiBKSVQgdG8gcHJvcGVybHkKICAgICAgICAgICAgICAgICAvLyBoYW5kbGUgbmVzdGVkIGV4
cHJlc3Npb25zIHRoYXQgY2FuIG1hdGNoIHdpdGhvdXQgY29uc3VtaW5nIGNoYXJhY3RlcnMKLSAg
ICAgICAgICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJGaXhlZENv
dW50ICYmICF0ZXJtLT5wYXJlbnRoZXNlcy5kaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZSkKKyAg
ICAgICAgICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJUeXBlOjpG
aXhlZENvdW50ICYmICF0ZXJtLT5wYXJlbnRoZXNlcy5kaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6
ZSkKICAgICAgICAgICAgICAgICAgICAgbV9hYm9ydEV4ZWN1dGlvbi5hcHBlbmQoYnJhbmNoMzIo
RXF1YWwsIGluZGV4LCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBwYXJlbnRoZXNlc0Zy
YW1lTG9jYXRpb24gKiBzaXplb2Yodm9pZCopKSkpOwogCiAgICAgICAgICAgICAgICAgY29uc3Qg
UmVnaXN0ZXJJRCBjb3VudFRlbXBvcmFyeSA9IHJlZ1QxOwpAQCAtMjY0Myw3ICsyNjQyLDcgQEAg
Y2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBN
YWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IGNvdWxkIGF2b2lkIG9m
ZnNldHRpbmcgdGhpcyB2YWx1ZSBpbiBKSVQgY29kZSwgYXBwbHkKICAgICAgICAgICAgICAgICAv
LyBvZmZzZXRzIG9ubHkgYWZ0ZXJ3YXJkcywgYXQgdGhlIHBvaW50IHRoZSByZXN1bHRzIGFycmF5
IGlzCiAgICAgICAgICAgICAgICAgLy8gYmVpbmcgYWNjZXNzZWQuCi0gICAgICAgICAgICAgICAg
aWYgKHRlcm0tPmNhcHR1cmUoKSAmJiBjb21waWxlTW9kZSA9PSBJbmNsdWRlU3VicGF0dGVybnMp
IHsKKyAgICAgICAgICAgICAgICBpZiAodGVybS0+Y2FwdHVyZSgpICYmIG1fY29tcGlsZU1vZGUg
PT0gSklUQ29tcGlsZU1vZGU6OkluY2x1ZGVTdWJwYXR0ZXJucykgewogICAgICAgICAgICAgICAg
ICAgICBjb25zdCBSZWdpc3RlcklEIGluZGV4VGVtcG9yYXJ5ID0gcmVnVDA7CiAgICAgICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnB1dE9mZnNldCA9IG1f
Y2hlY2tlZE9mZnNldCAtIHRlcm0tPmlucHV0UG9zaXRpb247CkBAIC0yNjU4LDE0ICsyNjU3LDE0
IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZh
dGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgIC8vIElmIHRoZSBwYXJlbnRoZXNl
cyBhcmUgcXVhbnRpZmllZCBHcmVlZHkgdGhlbiBhZGQgYSBsYWJlbCB0byBqdW1wIGJhY2sKICAg
ICAgICAgICAgICAgICAvLyB0byBpZiB3ZSBnZXQgYSBmYWlsZWQgbWF0Y2ggZnJvbSBhZnRlciB0
aGUgcGFyZW50aGVzZXMuIEZvciBOb25HcmVlZHkKICAgICAgICAgICAgICAgICAvLyBwYXJlbnRo
ZXNlcywgbGluayB0aGUganVtcCBmcm9tIGJlZm9yZSB0aGUgc3VicGF0dGVybiB0byBoZXJlLgot
ICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllckdyZWVk
eSkgeworICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmll
clR5cGU6OkdyZWVkeSkgewogICAgICAgICAgICAgICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlN
YXhDb3VudCAhPSBxdWFudGlmeUluZmluaXRlKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJh
bmNoMzIoQmVsb3csIGNvdW50VGVtcG9yYXJ5LCBJbW0zMih0ZXJtLT5xdWFudGl0eU1heENvdW50
KSkubGlua1RvKGJlZ2luT3AubV9yZWVudHJ5LCB0aGlzKTsKICAgICAgICAgICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAganVtcChiZWdpbk9wLm1fcmVlbnRyeSk7CiAg
ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBvcC5tX3JlZW50cnkgPSBs
YWJlbCgpOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGVybS0+cXVhbnRpdHlUeXBlID09
IFF1YW50aWZpZXJOb25HcmVlZHkpIHsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRlcm0t
PnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyVHlwZTo6Tm9uR3JlZWR5KSB7CiAgICAgICAgICAg
ICAgICAgICAgIFlhcnJPcCYgYmVnaW5PcCA9IG1fb3BzW29wLm1fcHJldmlvdXNPcF07CiAgICAg
ICAgICAgICAgICAgICAgIGJlZ2luT3AubV9qdW1wcy5saW5rKHRoaXMpOwogICAgICAgICAgICAg
ICAgICAgICBvcC5tX3JlZW50cnkgPSBsYWJlbCgpOwpAQCAtMjY3Niw4ICsyNjc1LDggQEAgY2xh
c3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNy
b0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgIC8vIE9wUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luL0VuZAotICAgICAgICAg
ICAgY2FzZSBPcFBhcmVudGhldGljYWxBc3NlcnRpb25CZWdpbjogeworICAgICAgICAgICAgLy8g
WWFyck9wQ29kZTo6UGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luL0VuZAorICAgICAgICAgICAg
Y2FzZSBZYXJyT3BDb2RlOjpQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW46IHsKICAgICAgICAg
ICAgICAgICBQYXR0ZXJuVGVybSogdGVybSA9IG9wLm1fdGVybTsKIAogICAgICAgICAgICAgICAg
IC8vIFN0b3JlIHRoZSBjdXJyZW50IGluZGV4IC0gYXNzZXJ0aW9ucyBzaG91bGQgbm90IHVwZGF0
ZSBpbmRleCwgc28KQEAgLTI2OTMsNyArMjY5Miw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmlu
YWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAg
ICAgICAgICAgIG1fY2hlY2tlZE9mZnNldCAtPSBvcC5tX2NoZWNrQWRqdXN0OwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSBPcFBhcmVudGhl
dGljYWxBc3NlcnRpb25FbmQ6IHsKKyAgICAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6UGFyZW50
aGV0aWNhbEFzc2VydGlvbkVuZDogewogICAgICAgICAgICAgICAgIFBhdHRlcm5UZXJtKiB0ZXJt
ID0gb3AubV90ZXJtOwogCiAgICAgICAgICAgICAgICAgLy8gUmVzdG9yZSB0aGUgaW5wdXQgaW5k
ZXggdmFsdWUuCkBAIC0yNzEyLDcgKzI3MTEsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFs
IDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgY2FzZSBPcE1hdGNo
RmFpbGVkOgorICAgICAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpNYXRjaEZhaWxlZDoKICAgICAg
ICAgICAgICAgICByZW1vdmVDYWxsRnJhbWUoKTsKICAgICAgICAgICAgICAgICBnZW5lcmF0ZUZh
aWxSZXR1cm4oKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI3MzcsMTEgKzI3MzYsMTEg
QEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0
ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICBZYXJyT3AmIG9wID0gbV9vcHNbb3BJbmRl
eF07CiAgICAgICAgICAgICBzd2l0Y2ggKG9wLm1fb3ApIHsKIAotICAgICAgICAgICAgY2FzZSBP
cFRlcm06CisgICAgICAgICAgICBjYXNlIFlhcnJPcENvZGU6OlRlcm06CiAgICAgICAgICAgICAg
ICAgYmFja3RyYWNrVGVybShvcEluZGV4KTsKICAgICAgICAgICAgICAgICBicmVhazsKIAotICAg
ICAgICAgICAgLy8gT3BCb2R5QWx0ZXJuYXRpdmVCZWdpbi9OZXh0L0VuZAorICAgICAgICAgICAg
Ly8gWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlQmVnaW4vTmV4dC9FbmQKICAgICAgICAgICAg
IC8vCiAgICAgICAgICAgICAvLyBGb3IgZWFjaCBCZWdpbi9OZXh0IG5vZGUgcmVwcmVzZW50aW5n
IGFuIGFsdGVybmF0aXZlLCB3ZSBuZWVkIHRvIGRlY2lkZSB3aGF0IHRvIGRvCiAgICAgICAgICAg
ICAvLyBpbiB0d28gY2lyY3Vtc3RhbmNlczoKQEAgLTI3NjQsMjcgKzI3NjMsMjcgQEAgY2xhc3Mg
WWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fz
c2VtYmxlciB7CiAgICAgICAgICAgICAvLyBTaW5jZSBiYWNrdHJhY2tpbmcgb2YgYWxsIG90aGVy
IGFsdGVybmF0aXZlcyBzaW1wbHkgcmVxdWlyZXMgdXMgdG8gbGluayBiYWNrdHJhY2tzCiAgICAg
ICAgICAgICAvLyB0byB0aGUgcmVlbnRyeSBwb2ludCBmb3IgdGhlIHN1YnNlcXVlbnQgYWx0ZXJu
YXRpdmUsIHdlIHdpbGwgb25seSBiZSBnZW5lcmF0aW5nIGFueQogICAgICAgICAgICAgLy8gY29k
ZSB3aGVuIGJhY2t0cmFja2luZyB0aGUgbGFzdCBhbHRlcm5hdGl2ZS4KLSAgICAgICAgICAgIGNh
c2UgT3BCb2R5QWx0ZXJuYXRpdmVCZWdpbjoKLSAgICAgICAgICAgIGNhc2UgT3BCb2R5QWx0ZXJu
YXRpdmVOZXh0OiB7CisgICAgICAgICAgICBjYXNlIFlhcnJPcENvZGU6OkJvZHlBbHRlcm5hdGl2
ZUJlZ2luOgorICAgICAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpCb2R5QWx0ZXJuYXRpdmVOZXh0
OiB7CiAgICAgICAgICAgICAgICAgUGF0dGVybkFsdGVybmF0aXZlKiBhbHRlcm5hdGl2ZSA9IG9w
Lm1fYWx0ZXJuYXRpdmU7CiAKICAgICAgICAgICAgICAgICBtX2NoZWNrZWRPZmZzZXQgLT0gYWx0
ZXJuYXRpdmUtPm1fbWluaW11bVNpemU7Ci0gICAgICAgICAgICAgICAgaWYgKG9wLm1fb3AgPT0g
T3BCb2R5QWx0ZXJuYXRpdmVOZXh0KSB7CisgICAgICAgICAgICAgICAgaWYgKG9wLm1fb3AgPT0g
WWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlTmV4dCkgewogICAgICAgICAgICAgICAgICAgICBQ
YXR0ZXJuQWx0ZXJuYXRpdmUqIHByaW9yQWx0ZXJuYXRpdmUgPSBtX29wc1tvcC5tX3ByZXZpb3Vz
T3BdLm1fYWx0ZXJuYXRpdmU7CiAgICAgICAgICAgICAgICAgICAgIG1fY2hlY2tlZE9mZnNldCAr
PSBwcmlvckFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplOwogICAgICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgICAgIC8vIElzIHRoaXMgdGhlIGxhc3QgYWx0ZXJuYXRpdmU/IElmIG5vdCwg
dGhlbiBpZiB3ZSBiYWNrdHJhY2sgdG8gdGhpcyBwb2ludCB3ZSBqdXN0CiAgICAgICAgICAgICAg
ICAgLy8gbmVlZCB0byBqdW1wIHRvIHRyeSB0byBtYXRjaCB0aGUgbmV4dCBhbHRlcm5hdGl2ZS4K
LSAgICAgICAgICAgICAgICBpZiAobV9vcHNbb3AubV9uZXh0T3BdLm1fb3AgIT0gT3BCb2R5QWx0
ZXJuYXRpdmVFbmQpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9vcHNbb3AubV9uZXh0T3BdLm1f
b3AgIT0gWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlRW5kKSB7CiAgICAgICAgICAgICAgICAg
ICAgIG1fYmFja3RyYWNraW5nU3RhdGUubGlua1RvKG1fb3BzW29wLm1fbmV4dE9wXS5tX3JlZW50
cnksIHRoaXMpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgWWFyck9wJiBlbmRPcCA9IG1fb3BzW29wLm1fbmV4dE9wXTsKIAog
ICAgICAgICAgICAgICAgIFlhcnJPcCogYmVnaW5PcCA9ICZvcDsKLSAgICAgICAgICAgICAgICB3
aGlsZSAoYmVnaW5PcC0+bV9vcCAhPSBPcEJvZHlBbHRlcm5hdGl2ZUJlZ2luKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIEFTU0VSVChiZWdpbk9wLT5tX29wID09IE9wQm9keUFsdGVybmF0aXZlTmV4
dCk7CisgICAgICAgICAgICAgICAgd2hpbGUgKGJlZ2luT3AtPm1fb3AgIT0gWWFyck9wQ29kZTo6
Qm9keUFsdGVybmF0aXZlQmVnaW4pIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGJlZ2lu
T3AtPm1fb3AgPT0gWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlTmV4dCk7CiAgICAgICAgICAg
ICAgICAgICAgIGJlZ2luT3AgPSAmbV9vcHNbYmVnaW5PcC0+bV9wcmV2aW91c09wXTsKICAgICAg
ICAgICAgICAgICB9CiAKQEAgLTI3OTgsNyArMjc5Nyw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3Ig
ZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAg
ICAgICAgICAgICAgIGlmIChvbmNlVGhyb3VnaCkKICAgICAgICAgICAgICAgICAgICAgbV9iYWNr
dHJhY2tpbmdTdGF0ZS5saW5rVG8oZW5kT3AubV9yZWVudHJ5LCB0aGlzKTsKICAgICAgICAgICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1fcGF0dGVybi5zdGlja3koKSAm
JiBtX29wc1tvcC5tX25leHRPcF0ubV9vcCA9PSBPcEJvZHlBbHRlcm5hdGl2ZUVuZCkgeworICAg
ICAgICAgICAgICAgICAgICBpZiAobV9wYXR0ZXJuLnN0aWNreSgpICYmIG1fb3BzW29wLm1fbmV4
dE9wXS5tX29wID09IFlhcnJPcENvZGU6OkJvZHlBbHRlcm5hdGl2ZUVuZCkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gSXQgaXMgYSBzdGlja3kgcGF0dGVybiBhbmQgdGhlIGxhc3QgYWx0
ZXJuYXRpdmUgZmFpbGVkLCBqdW1wIHRvIHRoZSBlbmQuCiAgICAgICAgICAgICAgICAgICAgICAg
ICBtX2JhY2t0cmFja2luZ1N0YXRlLnRha2VCYWNrdHJhY2tzVG9KdW1wTGlzdChsYXN0U3RpY2t5
QWx0ZXJuYXRpdmVGYWlsdXJlcywgdGhpcyk7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBp
ZiAobV9wYXR0ZXJuLm1fYm9keS0+bV9oYXNGaXhlZFNpemUKQEAgLTI4NzEsNyArMjg3MCw3IEBA
IGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUg
TWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgIC8vIHRoYXQgY2FuIGhhbmRsZSB0aGVt
LgogICAgICAgICAgICAgICAgIFlhcnJPcCogcHJldk9wID0gYmVnaW5PcDsKICAgICAgICAgICAg
ICAgICBZYXJyT3AqIG5leHRPcCA9ICZtX29wc1tiZWdpbk9wLT5tX25leHRPcF07Ci0gICAgICAg
ICAgICAgICAgd2hpbGUgKG5leHRPcC0+bV9vcCAhPSBPcEJvZHlBbHRlcm5hdGl2ZUVuZCkgewor
ICAgICAgICAgICAgICAgIHdoaWxlIChuZXh0T3AtPm1fb3AgIT0gWWFyck9wQ29kZTo6Qm9keUFs
dGVybmF0aXZlRW5kKSB7CiAgICAgICAgICAgICAgICAgICAgIHByZXZPcC0+bV9qdW1wcy5saW5r
KHRoaXMpOwogCiAgICAgICAgICAgICAgICAgICAgIC8vIFdlIG9ubHkgZ2V0IGhlcmUgaWYgYW4g
aW5wdXQgY2hlY2sgZmFpbHMsIGl0IGlzIG9ubHkgd29ydGggY2hlY2tpbmcgYWdhaW4KQEAgLTI5
NzAsNyArMjk2OSw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJ
VEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgIGdlbmVyYXRl
RmFpbFJldHVybigpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgY2FzZSBPcEJvZHlBbHRlcm5hdGl2ZUVuZDogeworICAgICAgICAgICAgY2FzZSBZ
YXJyT3BDb2RlOjpCb2R5QWx0ZXJuYXRpdmVFbmQ6IHsKICAgICAgICAgICAgICAgICAvLyBXZSBz
aG91bGQgbmV2ZXIgYmFja3RyYWNrIGJhY2sgaW50byBhIGJvZHkgZGlzanVuY3Rpb24uCiAgICAg
ICAgICAgICAgICAgQVNTRVJUKG1fYmFja3RyYWNraW5nU3RhdGUuaXNFbXB0eSgpKTsKIApAQCAt
Mjk3OSw4ICsyOTc4LDggQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJy
SklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIC8vIE9wU2ltcGxlTmVzdGVkQWx0ZXJuYXRp
dmVCZWdpbi9OZXh0L0VuZAotICAgICAgICAgICAgLy8gT3BOZXN0ZWRBbHRlcm5hdGl2ZUJlZ2lu
L05leHQvRW5kCisgICAgICAgICAgICAvLyBZYXJyT3BDb2RlOjpTaW1wbGVOZXN0ZWRBbHRlcm5h
dGl2ZUJlZ2luL05leHQvRW5kCisgICAgICAgICAgICAvLyBZYXJyT3BDb2RlOjpOZXN0ZWRBbHRl
cm5hdGl2ZUJlZ2luL05leHQvRW5kCiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8gR2Vu
ZXJhdGUgY29kZSBmb3Igd2hlbiB3ZSBiYWNrdHJhY2sgYmFjayBvdXQgb2YgYW4gYWx0ZXJuYXRp
dmUgaW50bwogICAgICAgICAgICAgLy8gYSBCZWdpbiBvciBOZXh0IG5vZGUsIG9yIHdoZW4gdGhl
IGVudHJ5IGlucHV0IGNvdW50IGNoZWNrIGZhaWxzLiBJZgpAQCAtMjk5MCwxNSArMjk4OSwxNSBA
QCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRl
IE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgIC8vIEluIHRoZSBjYXNlIG9mIG5vbi1zaW1w
bGUgbmVzdGVkIGFzc2VydGlvbnMgd2UgbmVlZCB0byBhbHNvIGxpbmsgdGhlCiAgICAgICAgICAg
ICAvLyAncmV0dXJuIGFkZHJlc3MnIGFwcHJvcHJpYXRlbHkgdG8gYmFja3RyYWNrIGJhY2sgb3V0
IGludG8gdGhlIGNvcnJlY3QKICAgICAgICAgICAgIC8vIGFsdGVybmF0aXZlLgotICAgICAgICAg
ICAgY2FzZSBPcFNpbXBsZU5lc3RlZEFsdGVybmF0aXZlQmVnaW46Ci0gICAgICAgICAgICBjYXNl
IE9wU2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVOZXh0OgotICAgICAgICAgICAgY2FzZSBPcE5lc3Rl
ZEFsdGVybmF0aXZlQmVnaW46Ci0gICAgICAgICAgICBjYXNlIE9wTmVzdGVkQWx0ZXJuYXRpdmVO
ZXh0OiB7CisgICAgICAgICAgICBjYXNlIFlhcnJPcENvZGU6OlNpbXBsZU5lc3RlZEFsdGVybmF0
aXZlQmVnaW46CisgICAgICAgICAgICBjYXNlIFlhcnJPcENvZGU6OlNpbXBsZU5lc3RlZEFsdGVy
bmF0aXZlTmV4dDoKKyAgICAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6TmVzdGVkQWx0ZXJuYXRp
dmVCZWdpbjoKKyAgICAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6TmVzdGVkQWx0ZXJuYXRpdmVO
ZXh0OiB7CiAgICAgICAgICAgICAgICAgWWFyck9wJiBuZXh0T3AgPSBtX29wc1tvcC5tX25leHRP
cF07CiAgICAgICAgICAgICAgICAgYm9vbCBpc0JlZ2luID0gb3AubV9wcmV2aW91c09wID09IG5v
dEZvdW5kOwogICAgICAgICAgICAgICAgIGJvb2wgaXNMYXN0QWx0ZXJuYXRpdmUgPSBuZXh0T3Au
bV9uZXh0T3AgPT0gbm90Rm91bmQ7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGlzQmVnaW4gPT0g
KG9wLm1fb3AgPT0gT3BTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZUJlZ2luIHx8IG9wLm1fb3AgPT0g
T3BOZXN0ZWRBbHRlcm5hdGl2ZUJlZ2luKSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGlzTGFz
dEFsdGVybmF0aXZlID09IChuZXh0T3AubV9vcCA9PSBPcFNpbXBsZU5lc3RlZEFsdGVybmF0aXZl
RW5kIHx8IG5leHRPcC5tX29wID09IE9wTmVzdGVkQWx0ZXJuYXRpdmVFbmQpKTsKKyAgICAgICAg
ICAgICAgICBBU1NFUlQoaXNCZWdpbiA9PSAob3AubV9vcCA9PSBZYXJyT3BDb2RlOjpTaW1wbGVO
ZXN0ZWRBbHRlcm5hdGl2ZUJlZ2luIHx8IG9wLm1fb3AgPT0gWWFyck9wQ29kZTo6TmVzdGVkQWx0
ZXJuYXRpdmVCZWdpbikpOworICAgICAgICAgICAgICAgIEFTU0VSVChpc0xhc3RBbHRlcm5hdGl2
ZSA9PSAobmV4dE9wLm1fb3AgPT0gWWFyck9wQ29kZTo6U2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVF
bmQgfHwgbmV4dE9wLm1fb3AgPT0gWWFyck9wQ29kZTo6TmVzdGVkQWx0ZXJuYXRpdmVFbmQpKTsK
IAogICAgICAgICAgICAgICAgIC8vIFRyZWF0IGFuIGlucHV0IGNoZWNrIGZhaWx1cmUgdGhlIHNh
bWUgYXMgYSBmYWlsZWQgbWF0Y2guCiAgICAgICAgICAgICAgICAgbV9iYWNrdHJhY2tpbmdTdGF0
ZS5hcHBlbmQob3AubV9qdW1wcyk7CkBAIC0zMDU4LDcgKzMwNTcsNyBAQCBjbGFzcyBZYXJyR2Vu
ZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVy
IHsKIAogICAgICAgICAgICAgICAgIC8vIEZvciBub24tc2ltcGxlIGFsdGVybmF0aXZlcywgbGlu
ayB0aGUgYWx0ZXJuYXRpdmUncyAncmV0dXJuIGFkZHJlc3MnCiAgICAgICAgICAgICAgICAgLy8g
c28gdGhhdCB3ZSBiYWNrdHJhY2sgYmFjayBvdXQgaW50byB0aGUgcHJldmlvdXMgYWx0ZXJuYXRp
dmUuCi0gICAgICAgICAgICAgICAgaWYgKG9wLm1fb3AgPT0gT3BOZXN0ZWRBbHRlcm5hdGl2ZU5l
eHQpCisgICAgICAgICAgICAgICAgaWYgKG9wLm1fb3AgPT0gWWFyck9wQ29kZTo6TmVzdGVkQWx0
ZXJuYXRpdmVOZXh0KQogICAgICAgICAgICAgICAgICAgICBtX2JhY2t0cmFja2luZ1N0YXRlLmFw
cGVuZChvcC5tX3JldHVybkFkZHJlc3MpOwogCiAgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUg
aXMgbW9yZSB0aGFuIG9uZSBhbHRlcm5hdGl2ZSwgdGhlbiB0aGUgbGFzdCBhbHRlcm5hdGl2ZSB3
aWxsCkBAIC0zMDY3LDEwICszMDY2LDEwIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBw
dWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAg
ICAgIGlmIChpc0JlZ2luKSB7CiAgICAgICAgICAgICAgICAgICAgIFlhcnJPcCogZW5kT3AgPSAm
bV9vcHNbb3AubV9uZXh0T3BdOwogICAgICAgICAgICAgICAgICAgICB3aGlsZSAoZW5kT3AtPm1f
bmV4dE9wICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZW5k
T3AtPm1fb3AgPT0gT3BTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZU5leHQgfHwgZW5kT3AtPm1fb3Ag
PT0gT3BOZXN0ZWRBbHRlcm5hdGl2ZU5leHQpOworICAgICAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKGVuZE9wLT5tX29wID09IFlhcnJPcENvZGU6OlNpbXBsZU5lc3RlZEFsdGVybmF0aXZlTmV4
dCB8fCBlbmRPcC0+bV9vcCA9PSBZYXJyT3BDb2RlOjpOZXN0ZWRBbHRlcm5hdGl2ZU5leHQpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgZW5kT3AgPSAmbV9vcHNbZW5kT3AtPm1fbmV4dE9wXTsK
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZW5kT3At
Pm1fb3AgPT0gT3BTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZUVuZCB8fCBlbmRPcC0+bV9vcCA9PSBP
cE5lc3RlZEFsdGVybmF0aXZlRW5kKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGVuZE9w
LT5tX29wID09IFlhcnJPcENvZGU6OlNpbXBsZU5lc3RlZEFsdGVybmF0aXZlRW5kIHx8IGVuZE9w
LT5tX29wID09IFlhcnJPcENvZGU6Ok5lc3RlZEFsdGVybmF0aXZlRW5kKTsKICAgICAgICAgICAg
ICAgICAgICAgbV9iYWNrdHJhY2tpbmdTdGF0ZS5hcHBlbmQoZW5kT3AtPm1fanVtcHMpOwogICAg
ICAgICAgICAgICAgIH0KIApAQCAtMzA4MSw4ICszMDgwLDggQEAgY2xhc3MgWWFyckdlbmVyYXRv
ciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgY2FzZSBPcFNpbXBsZU5lc3RlZEFsdGVybmF0aXZlRW5kOgotICAgICAgICAg
ICAgY2FzZSBPcE5lc3RlZEFsdGVybmF0aXZlRW5kOiB7CisgICAgICAgICAgICBjYXNlIFlhcnJP
cENvZGU6OlNpbXBsZU5lc3RlZEFsdGVybmF0aXZlRW5kOgorICAgICAgICAgICAgY2FzZSBZYXJy
T3BDb2RlOjpOZXN0ZWRBbHRlcm5hdGl2ZUVuZDogewogICAgICAgICAgICAgICAgIFBhdHRlcm5U
ZXJtKiB0ZXJtID0gb3AubV90ZXJtOwogCiAgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMg
YSBiYWNrdHJhY2sganVtcCBmcm9tIGEgemVybyBsZW5ndGggbWF0Y2ggbGluayBpdCBoZXJlLgpA
QCAtMzA5Myw3ICszMDkyLDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZ
YXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAgLy8g
anVzdCBjb250aW51ZSB0aHJvdWdoIGludG8gdGhlIGxhc3QgYWx0ZXJuYXRpdmUuIElmIHdlIGJh
Y2t0cmFjawogICAgICAgICAgICAgICAgIC8vIGludG8gdGhlIGVuZCBvZiBhIG5vbi1zaW1wbGUg
c2V0IG9mIGFsdGVybnRpdmVzIHdlIG5lZWQgdG8ganVtcAogICAgICAgICAgICAgICAgIC8vIHRv
IHRoZSBiYWNrdHJhY2tpbmcgcmV0dXJuIGFkZHJlc3Mgc2V0IHVwIGR1cmluZyBnZW5lcmF0aW9u
LgotICAgICAgICAgICAgICAgIGlmIChvcC5tX29wID09IE9wTmVzdGVkQWx0ZXJuYXRpdmVFbmQp
IHsKKyAgICAgICAgICAgICAgICBpZiAob3AubV9vcCA9PSBZYXJyT3BDb2RlOjpOZXN0ZWRBbHRl
cm5hdGl2ZUVuZCkgewogICAgICAgICAgICAgICAgICAgICBtX2JhY2t0cmFja2luZ1N0YXRlLmxp
bmsodGhpcyk7CiAKICAgICAgICAgICAgICAgICAgICAgLy8gUGxhbnQgYSBqdW1wIHRvIHRoZSBy
ZXR1cm4gYWRkcmVzcy4KQEAgLTMxMTAsNyArMzEwOSw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3Ig
ZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAvLyBPcFBh
cmVudGhlc2VzU3VicGF0dGVybk9uY2VCZWdpbi9FbmQKKyAgICAgICAgICAgIC8vIFlhcnJPcENv
ZGU6OlBhcmVudGhlc2VzU3VicGF0dGVybk9uY2VCZWdpbi9FbmQKICAgICAgICAgICAgIC8vCiAg
ICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBiYWNrdHJhY2tpbmcgYmFjayBvdXQgb2YgYSBjYXB0
dXJpbmcgc3VicGF0dGVybiB3ZSBuZWVkCiAgICAgICAgICAgICAvLyB0byBjbGVhciB0aGUgc3Rh
cnQgaW5kZXggaW4gdGhlIG1hdGNoZXMgb3V0cHV0IGFycmF5LCB0byByZWNvcmQgdGhhdApAQCAt
MzEyNSwyMCArMzEyNCwyMCBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlh
cnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgIC8vIGNhbiBi
YWNrdHJhY2sgaW50byB0aGVtLCBpZiB3ZSB3ZXJlIHdlIG5lZWQgdG8gZWl0aGVyIGJhY2t0cmFj
ayBiYWNrCiAgICAgICAgICAgICAvLyBvdXQgb2YgdGhlIHN0YXJ0IG9mIHRoZSBwYXJlbnRoZXNl
cywgb3IganVtcCBiYWNrIHRvIHRoZSBmb3J3YXJkcwogICAgICAgICAgICAgLy8gbWF0Y2hpbmcg
c3RhcnQsIGRlcGVuZGluZyBvZiB3aGV0aGVyIHRoZSBtYXRjaCBpcyBHcmVlZHkgb3IgTm9uR3Jl
ZWR5LgotICAgICAgICAgICAgY2FzZSBPcFBhcmVudGhlc2VzU3VicGF0dGVybk9uY2VCZWdpbjog
eworICAgICAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm5PbmNl
QmVnaW46IHsKICAgICAgICAgICAgICAgICBQYXR0ZXJuVGVybSogdGVybSA9IG9wLm1fdGVybTsK
ICAgICAgICAgICAgICAgICBBU1NFUlQodGVybS0+cXVhbnRpdHlNYXhDb3VudCA9PSAxKTsKIAog
ICAgICAgICAgICAgICAgIC8vIFdlIG9ubHkgbmVlZCB0byBiYWNrdHJhY2sgdG8gdGhpcyBwb2lu
dCBpZiBjYXB0dXJpbmcgb3IgZ3JlZWR5LgotICAgICAgICAgICAgICAgIGlmICgodGVybS0+Y2Fw
dHVyZSgpICYmIGNvbXBpbGVNb2RlID09IEluY2x1ZGVTdWJwYXR0ZXJucykgfHwgdGVybS0+cXVh
bnRpdHlUeXBlID09IFF1YW50aWZpZXJHcmVlZHkpIHsKKyAgICAgICAgICAgICAgICBpZiAoKHRl
cm0tPmNhcHR1cmUoKSAmJiBtX2NvbXBpbGVNb2RlID09IEpJVENvbXBpbGVNb2RlOjpJbmNsdWRl
U3VicGF0dGVybnMpIHx8IHRlcm0tPnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyVHlwZTo6R3Jl
ZWR5KSB7CiAgICAgICAgICAgICAgICAgICAgIG1fYmFja3RyYWNraW5nU3RhdGUubGluayh0aGlz
KTsKIAogICAgICAgICAgICAgICAgICAgICAvLyBJZiBjYXB0dXJpbmcsIGNsZWFyIHRoZSBjYXB0
dXJlICh3ZSBvbmx5IG5lZWQgdG8gcmVzZXQgc3RhcnQpLgotICAgICAgICAgICAgICAgICAgICBp
ZiAodGVybS0+Y2FwdHVyZSgpICYmIGNvbXBpbGVNb2RlID09IEluY2x1ZGVTdWJwYXR0ZXJucykK
KyAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm0tPmNhcHR1cmUoKSAmJiBtX2NvbXBpbGVNb2Rl
ID09IEpJVENvbXBpbGVNb2RlOjpJbmNsdWRlU3VicGF0dGVybnMpCiAgICAgICAgICAgICAgICAg
ICAgICAgICBjbGVhclN1YnBhdHRlcm5TdGFydCh0ZXJtLT5wYXJlbnRoZXNlcy5zdWJwYXR0ZXJu
SWQpOwogCiAgICAgICAgICAgICAgICAgICAgIC8vIElmIEdyZWVkeSwganVtcCB0byB0aGUgZW5k
LgotICAgICAgICAgICAgICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlUeXBlID09IFF1YW50aWZp
ZXJHcmVlZHkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5VHlwZSA9
PSBRdWFudGlmaWVyVHlwZTo6R3JlZWR5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBD
bGVhciB0aGUgZmxhZyBpbiB0aGUgc3RhY2tmcmFtZSBpbmRpY2F0aW5nIHdlIHJhbiB0aHJvdWdo
IHRoZSBzdWJwYXR0ZXJuLgogICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcGFyZW50
aGVzZXNGcmFtZUxvY2F0aW9uID0gdGVybS0+ZnJhbWVMb2NhdGlvbjsKICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0b3JlVG9GcmFtZShUcnVzdGVkSW1tMzIoLTEpLCBwYXJlbnRoZXNlc0ZyYW1l
TG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXNPbmNlOjpiZWdpbkluZGV4KCkpOwpA
QCAtMzE1MywxMCArMzE1MiwxMCBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGlj
IFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNl
IE9wUGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUVuZDogeworICAgICAgICAgICAgY2FzZSBZYXJy
T3BDb2RlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm5PbmNlRW5kOiB7CiAgICAgICAgICAgICAgICAg
UGF0dGVyblRlcm0qIHRlcm0gPSBvcC5tX3Rlcm07CiAKLSAgICAgICAgICAgICAgICBpZiAodGVy
bS0+cXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJGaXhlZENvdW50KSB7CisgICAgICAgICAgICAg
ICAgaWYgKHRlcm0tPnF1YW50aXR5VHlwZSAhPSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudCkg
ewogICAgICAgICAgICAgICAgICAgICBtX2JhY2t0cmFja2luZ1N0YXRlLmxpbmsodGhpcyk7CiAK
ICAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgd2hldGhlciB3ZSBzaG91bGQgYmFja3RyYWNr
IGJhY2sgaW50byB0aGUgcGFyZW50aGVzZXMsIG9yIGlmIHdlCkBAIC0zMTY1LDcgKzMxNjQsNyBA
QCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRl
IE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcGFyZW50aGVz
ZXNGcmFtZUxvY2F0aW9uID0gdGVybS0+ZnJhbWVMb2NhdGlvbjsKICAgICAgICAgICAgICAgICAg
ICAgSnVtcCBoYWRTa2lwcGVkID0gYnJhbmNoMzIoRXF1YWwsIEFkZHJlc3Moc3RhY2tQb2ludGVy
UmVnaXN0ZXIsIChwYXJlbnRoZXNlc0ZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvUGFyZW50
aGVzZXNPbmNlOjpiZWdpbkluZGV4KCkpICogc2l6ZW9mKHZvaWQqKSksIFRydXN0ZWRJbW0zMigt
MSkpOwogCi0gICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eVR5cGUgPT0gUXVh
bnRpZmllckdyZWVkeSkgeworICAgICAgICAgICAgICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlU
eXBlID09IFF1YW50aWZpZXJUeXBlOjpHcmVlZHkpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIEZvciBHcmVlZHkgcGFyZW50aGVzZXMsIHdlIHNraXAgYWZ0ZXIgaGF2aW5nIGFscmVhZHkg
dHJpZWQgZ29pbmcKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRocm91Z2ggdGhlIHN1YnBh
dHRlcm4sIHNvIGlmIHdlIGdldCBoZXJlIHdlJ3JlIGRvbmUuCiAgICAgICAgICAgICAgICAgICAg
ICAgICBZYXJyT3AmIGJlZ2luT3AgPSBtX29wc1tvcC5tX3ByZXZpb3VzT3BdOwpAQCAtMzE3NSw3
ICszMTc0LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5m
bywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBz
byBpZiB3ZSBnZXQgaGVyZSB3ZSBuZWVkIHRvIHRyeSBydW5uaW5nIHRocm91Z2ggdGhlIHN1YnBh
dHRlcm4KICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5leHQuIEp1bXAgYmFjayB0byB0aGUg
c3RhcnQgb2YgdGhlIHBhcmVudGhlc2VzIGluIHRoZSBmb3J3YXJkcwogICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gbWF0Y2hpbmcgcGF0aC4KLSAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VS
VCh0ZXJtLT5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllck5vbkdyZWVkeSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQodGVybS0+cXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJUeXBl
OjpOb25HcmVlZHkpOwogICAgICAgICAgICAgICAgICAgICAgICAgWWFyck9wJiBiZWdpbk9wID0g
bV9vcHNbb3AubV9wcmV2aW91c09wXTsKICAgICAgICAgICAgICAgICAgICAgICAgIGhhZFNraXBw
ZWQubGlua1RvKGJlZ2luT3AubV9yZWVudHJ5LCB0aGlzKTsKICAgICAgICAgICAgICAgICAgICAg
fQpAQCAtMzE4NywxMiArMzE4NiwxMiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVi
bGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgLy8gT3BQYXJlbnRoZXNlc1N1
YnBhdHRlcm5UZXJtaW5hbEJlZ2luL0VuZAorICAgICAgICAgICAgLy8gWWFyck9wQ29kZTo6UGFy
ZW50aGVzZXNTdWJwYXR0ZXJuVGVybWluYWxCZWdpbi9FbmQKICAgICAgICAgICAgIC8vCiAgICAg
ICAgICAgICAvLyBUZXJtaW5hbCBzdWJwYXR0ZXJucyB3aWxsIGFsd2F5cyBtYXRjaCAtIHRoZXJl
IGlzIG5vdGhpbmcgYWZ0ZXIgdGhlbSB0bwogICAgICAgICAgICAgLy8gZm9yY2UgYSBiYWNrdHJh
Y2ssIGFuZCB0aGV5IGhhdmUgYSBtaW5pbXVtIGNvdW50IG9mIDAsIGFuZCBhcyBzdWNoIHdpbGwK
ICAgICAgICAgICAgIC8vIGFsd2F5cyBwcm9kdWNlIGFuIGFjY2VwdGFibGUgcmVzdWx0LgotICAg
ICAgICAgICAgY2FzZSBPcFBhcmVudGhlc2VzU3VicGF0dGVyblRlcm1pbmFsQmVnaW46IHsKKyAg
ICAgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuVGVybWluYWxC
ZWdpbjogewogICAgICAgICAgICAgICAgIC8vIFdlIHdpbGwgYmFja3RyYWNrIHRvIHRoaXMgcG9p
bnQgb25jZSB0aGUgc3VicGF0dGVybiBjYW5ub3QgbWF0Y2ggYW55CiAgICAgICAgICAgICAgICAg
Ly8gbW9yZS4gU2luY2Ugbm8gbWF0Y2ggaXMgYWNjZXB0ZWQgYXMgYSBzdWNjZXNzZnVsIG1hdGNo
ICh3ZSBhcmUgR3JlZWR5CiAgICAgICAgICAgICAgICAgLy8gcXVhbnRpZmllZCB3aXRoIGEgbWlu
aW11bSBvZiB6ZXJvKSBqdW1wIGJhY2sgdG8gdGhlIGZvcndhcmRzIG1hdGNoaW5nCkBAIC0zMjAx
LDEzICszMjAwLDEzIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJ
VEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgIG1fYmFja3Ry
YWNraW5nU3RhdGUubGlua1RvKGVuZE9wLm1fcmVlbnRyeSwgdGhpcyk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlIE9wUGFyZW50aGVzZXNT
dWJwYXR0ZXJuVGVybWluYWxFbmQ6CisgICAgICAgICAgICBjYXNlIFlhcnJPcENvZGU6OlBhcmVu
dGhlc2VzU3VicGF0dGVyblRlcm1pbmFsRW5kOgogICAgICAgICAgICAgICAgIC8vIFdlIHNob3Vs
ZCBuZXZlciBiZSBiYWNrdHJhY2tpbmcgdG8gaGVyZSAoaGVuY2UgdGhlICd0ZXJtaW5hbCcgaW4g
dGhlIG5hbWUpLgogICAgICAgICAgICAgICAgIEFTU0VSVChtX2JhY2t0cmFja2luZ1N0YXRlLmlz
RW1wdHkoKSk7CiAgICAgICAgICAgICAgICAgbV9iYWNrdHJhY2tpbmdTdGF0ZS5hcHBlbmQob3Au
bV9qdW1wcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIC8vIE9wUGFy
ZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4vRW5kCisgICAgICAgICAgICAvLyBZYXJyT3BDb2RlOjpQ
YXJlbnRoZXNlc1N1YnBhdHRlcm5CZWdpbi9FbmQKICAgICAgICAgICAgIC8vCiAgICAgICAgICAg
ICAvLyBXaGVuIHdlIGFyZSBiYWNrdHJhY2tpbmcgYmFjayBvdXQgb2YgYSBjYXB0dXJpbmcgc3Vi
cGF0dGVybiB3ZSBuZWVkCiAgICAgICAgICAgICAvLyB0byBjbGVhciB0aGUgc3RhcnQgaW5kZXgg
aW4gdGhlIG1hdGNoZXMgb3V0cHV0IGFycmF5LCB0byByZWNvcmQgdGhhdApAQCAtMzIyMiwxMiAr
MzIyMSwxMiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZv
LCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgIC8vIGNhbiBiYWNrdHJhY2sg
aW50byB0aGVtLCBpZiB3ZSB3ZXJlIHdlIG5lZWQgdG8gZWl0aGVyIGJhY2t0cmFjayBiYWNrCiAg
ICAgICAgICAgICAvLyBvdXQgb2YgdGhlIHN0YXJ0IG9mIHRoZSBwYXJlbnRoZXNlcywgb3IganVt
cCBiYWNrIHRvIHRoZSBmb3J3YXJkcwogICAgICAgICAgICAgLy8gbWF0Y2hpbmcgc3RhcnQsIGRl
cGVuZGluZyBvZiB3aGV0aGVyIHRoZSBtYXRjaCBpcyBHcmVlZHkgb3IgTm9uR3JlZWR5LgotICAg
ICAgICAgICAgY2FzZSBPcFBhcmVudGhlc2VzU3VicGF0dGVybkJlZ2luOiB7CisgICAgICAgICAg
ICBjYXNlIFlhcnJPcENvZGU6OlBhcmVudGhlc2VzU3VicGF0dGVybkJlZ2luOiB7CiAjaWYgRU5B
QkxFKFlBUlJfSklUX0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMpCiAgICAgICAgICAgICAgICAgUGF0
dGVyblRlcm0qIHRlcm0gPSBvcC5tX3Rlcm07CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgcGFy
ZW50aGVzZXNGcmFtZUxvY2F0aW9uID0gdGVybS0+ZnJhbWVMb2NhdGlvbjsKIAotICAgICAgICAg
ICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eVR5cGUgIT0gUXVhbnRpZmllckZpeGVkQ291bnQpIHsK
KyAgICAgICAgICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJUeXBl
OjpGaXhlZENvdW50KSB7CiAgICAgICAgICAgICAgICAgICAgIG1fYmFja3RyYWNraW5nU3RhdGUu
bGluayh0aGlzKTsKIAogICAgICAgICAgICAgICAgICAgICBSZWdpc3RlcklEIGN1cnJQYXJlbkNv
bnRleHRSZWcgPSByZWdUMDsKQEAgLTMyNTQsMTEgKzMyNTMsMTEgQEAgY2xhc3MgWWFyckdlbmVy
YXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7
CiAgICAgICAgICAgICAgICAgICAgIC8vIENsZWFyIHRoZSBmbGFnIGluIHRoZSBzdGFja2ZyYW1l
IGluZGljYXRpbmcgd2UgZGlkbid0IHJ1biB0aHJvdWdoIHRoZSBzdWJwYXR0ZXJuLgogICAgICAg
ICAgICAgICAgICAgICBzdG9yZVRvRnJhbWUoVHJ1c3RlZEltbTMyKC0xKSwgcGFyZW50aGVzZXNG
cmFtZUxvY2F0aW9uICsgQmFja1RyYWNrSW5mb1BhcmVudGhlc2VzOjpiZWdpbkluZGV4KCkpOwog
Ci0gICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmll
ckdyZWVkeSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5VHlwZSA9PSBR
dWFudGlmaWVyVHlwZTo6R3JlZWR5KQogICAgICAgICAgICAgICAgICAgICAgICAganVtcChtX29w
c1tvcC5tX25leHRPcF0ubV9yZWVudHJ5KTsKIAogICAgICAgICAgICAgICAgICAgICAvLyBJZiBH
cmVlZHksIGp1bXAgdG8gdGhlIGVuZC4KLSAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm0tPnF1
YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyR3JlZWR5KSB7CisgICAgICAgICAgICAgICAgICAgIGlm
ICh0ZXJtLT5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllclR5cGU6OkdyZWVkeSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gQSBiYWNrdHJhY2sgZnJvbSBhZnRlciB0aGUgcGFyZW50aGVz
ZXMsIHdoZW4gc2tpcHBpbmcgdGhlIHN1YnBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyB3aWxsIGp1bXAgYmFjayB0byBoZXJlLgogICAgICAgICAgICAgICAgICAgICAgICAgb3Au
bV9qdW1wcy5saW5rKHRoaXMpOwpAQCAtMzI3MSwxNiArMzI3MCwxNiBAQCBjbGFzcyBZYXJyR2Vu
ZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVy
IHsKICNlbmRpZgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgY2FzZSBPcFBhcmVudGhlc2VzU3VicGF0dGVybkVuZDogeworICAgICAgICAgICAgY2Fz
ZSBZYXJyT3BDb2RlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm5FbmQ6IHsKICNpZiBFTkFCTEUoWUFS
Ul9KSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUykKICAgICAgICAgICAgICAgICBQYXR0ZXJuVGVy
bSogdGVybSA9IG9wLm1fdGVybTsKIAotICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0
eVR5cGUgIT0gUXVhbnRpZmllckZpeGVkQ291bnQpIHsKKyAgICAgICAgICAgICAgICBpZiAodGVy
bS0+cXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJUeXBlOjpGaXhlZENvdW50KSB7CiAgICAgICAg
ICAgICAgICAgICAgIG1fYmFja3RyYWNraW5nU3RhdGUubGluayh0aGlzKTsKIAogICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBwYXJlbnRoZXNlc0ZyYW1lTG9jYXRpb24gPSB0ZXJtLT5mcmFt
ZUxvY2F0aW9uOwogCi0gICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eVR5cGUg
PT0gUXVhbnRpZmllckdyZWVkeSkgeworICAgICAgICAgICAgICAgICAgICBpZiAodGVybS0+cXVh
bnRpdHlUeXBlID09IFF1YW50aWZpZXJUeXBlOjpHcmVlZHkpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIENoZWNrIHdoZXRoZXIgd2Ugc2hvdWxkIGJhY2t0cmFjayBiYWNrIGludG8gdGhl
IHBhcmVudGhlc2VzLCBvciBpZiB3ZQogICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXJlIGN1
cnJlbnRseSBpbiBhIHN0YXRlIHdoZXJlIHdlIGhhZCBza2lwcGVkIG92ZXIgdGhlIHN1YnBhdHRl
cm4KICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChpbiB3aGljaCBjYXNlIHRoZSBmbGFnIHZh
bHVlIG9uIHRoZSBzdGFjayB3aWxsIGJlIC0xKS4KQEAgLTMyOTUsNyArMzI5NCw3IEBAIGNsYXNz
IFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9B
c3NlbWJsZXIgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gc28gaWYgd2UgZ2V0IGhlcmUg
d2UgbmVlZCB0byB0cnkgcnVubmluZyB0aHJvdWdoIHRoZSBzdWJwYXR0ZXJuCiAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBuZXh0LiBKdW1wIGJhY2sgdG8gdGhlIHN0YXJ0IG9mIHRoZSBwYXJl
bnRoZXNlcyBpbiB0aGUgZm9yd2FyZHMKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1hdGNo
aW5nIHBhdGguCi0gICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQodGVybS0+cXVhbnRpdHlU
eXBlID09IFF1YW50aWZpZXJOb25HcmVlZHkpOworICAgICAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKHRlcm0tPnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyVHlwZTo6Tm9uR3JlZWR5KTsKIAog
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVnaXN0ZXJJRCBiZWdpblRlbXBvcmFyeSA9
IHJlZ1QwOwogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVnaXN0ZXJJRCBjb3VudFRl
bXBvcmFyeSA9IHJlZ1QxOwpAQCAtMzMyNyw4ICszMzI2LDggQEAgY2xhc3MgWWFyckdlbmVyYXRv
ciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIC8vIE9w
UGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luL0VuZAotICAgICAgICAgICAgY2FzZSBPcFBhcmVu
dGhldGljYWxBc3NlcnRpb25CZWdpbjogeworICAgICAgICAgICAgLy8gWWFyck9wQ29kZTo6UGFy
ZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luL0VuZAorICAgICAgICAgICAgY2FzZSBZYXJyT3BDb2Rl
OjpQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW46IHsKICAgICAgICAgICAgICAgICBQYXR0ZXJu
VGVybSogdGVybSA9IG9wLm1fdGVybTsKICAgICAgICAgICAgICAgICBZYXJyT3AmIGVuZE9wID0g
bV9vcHNbb3AubV9uZXh0T3BdOwogCkBAIC0zMzU5LDcgKzMzNTgsNyBAQCBjbGFzcyBZYXJyR2Vu
ZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVy
IHsKICAgICAgICAgICAgICAgICBtX2NoZWNrZWRPZmZzZXQgKz0gb3AubV9jaGVja0FkanVzdDsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2Ug
T3BQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uRW5kOiB7CisgICAgICAgICAgICBjYXNlIFlhcnJPcENv
ZGU6OlBhcmVudGhldGljYWxBc3NlcnRpb25FbmQ6IHsKICAgICAgICAgICAgICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIHJlYWxseSBiZSBjbGVhcmluZyBhbnkgbmVzdGVkIHN1YnBhdHRlcm4KICAg
ICAgICAgICAgICAgICAvLyBtYXRjaGVzIG9uIGJhaWxpbmcgb3V0IGZyb20gYWZ0ZXIgdGhlIHBh
dHRlcm4uIEZpcmVmb3ggaGFzCiAgICAgICAgICAgICAgICAgLy8gdGhpcyBidWcgdG9vIChwcmVz
dW1hYmx5IGJlY2F1c2UgdGhleSB1c2UgWUFSUiEpCkBAIC0zMzcyLDcgKzMzNzEsNyBAQCBjbGFz
cyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3Jv
QXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgY2FzZSBPcE1hdGNoRmFpbGVkOgorICAgICAgICAgICAgY2FzZSBZYXJyT3BDb2Rl
OjpNYXRjaEZhaWxlZDoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIApA
QCAtMzM5Niw5ICszMzk1LDkgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZ
YXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgewogICAgICAgICBZYXJy
T3BDb2RlIHBhcmVudGhlc2VzQmVnaW5PcENvZGU7CiAgICAgICAgIFlhcnJPcENvZGUgcGFyZW50
aGVzZXNFbmRPcENvZGU7Ci0gICAgICAgIFlhcnJPcENvZGUgYWx0ZXJuYXRpdmVCZWdpbk9wQ29k
ZSA9IE9wU2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVCZWdpbjsKLSAgICAgICAgWWFyck9wQ29kZSBh
bHRlcm5hdGl2ZU5leHRPcENvZGUgPSBPcFNpbXBsZU5lc3RlZEFsdGVybmF0aXZlTmV4dDsKLSAg
ICAgICAgWWFyck9wQ29kZSBhbHRlcm5hdGl2ZUVuZE9wQ29kZSA9IE9wU2ltcGxlTmVzdGVkQWx0
ZXJuYXRpdmVFbmQ7CisgICAgICAgIFlhcnJPcENvZGUgYWx0ZXJuYXRpdmVCZWdpbk9wQ29kZSA9
IFlhcnJPcENvZGU6OlNpbXBsZU5lc3RlZEFsdGVybmF0aXZlQmVnaW47CisgICAgICAgIFlhcnJP
cENvZGUgYWx0ZXJuYXRpdmVOZXh0T3BDb2RlID0gWWFyck9wQ29kZTo6U2ltcGxlTmVzdGVkQWx0
ZXJuYXRpdmVOZXh0OworICAgICAgICBZYXJyT3BDb2RlIGFsdGVybmF0aXZlRW5kT3BDb2RlID0g
WWFyck9wQ29kZTo6U2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVFbmQ7CiAKICAgICAgICAgaWYgKFVO
TElLRUxZKCFtX3ZtLT5pc1NhZmVUb1JlY3Vyc2UoKSkpIHsKICAgICAgICAgICAgIG1fZmFpbHVy
ZVJlYXNvbiA9IEpJVEZhaWx1cmVSZWFzb246OlBhcmVudGhlc2lzTmVzdGVkVG9vRGVlcDsKQEAg
LTM0MTksMjMgKzM0MTgsMjMgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZ
YXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgIAogICAgICAgICBp
ZiAodGVybS0+cXVhbnRpdHlNYXhDb3VudCA9PSAxICYmICF0ZXJtLT5wYXJlbnRoZXNlcy5pc0Nv
cHkpIHsKICAgICAgICAgICAgIC8vIFNlbGVjdCB0aGUgJ09uY2UnIG5vZGVzLgotICAgICAgICAg
ICAgcGFyZW50aGVzZXNCZWdpbk9wQ29kZSA9IE9wUGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUJl
Z2luOwotICAgICAgICAgICAgcGFyZW50aGVzZXNFbmRPcENvZGUgPSBPcFBhcmVudGhlc2VzU3Vi
cGF0dGVybk9uY2VFbmQ7CisgICAgICAgICAgICBwYXJlbnRoZXNlc0JlZ2luT3BDb2RlID0gWWFy
ck9wQ29kZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUJlZ2luOworICAgICAgICAgICAgcGFy
ZW50aGVzZXNFbmRPcENvZGUgPSBZYXJyT3BDb2RlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm5PbmNl
RW5kOwogCiAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIGFsdGVybmF0
aXZlIHdlIGNhbm5vdCB1c2UgdGhlICdzaW1wbGUnIG5vZGVzLgogICAgICAgICAgICAgaWYgKHRl
cm0tPnBhcmVudGhlc2VzLmRpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZlcy5zaXplKCkgIT0gMSkg
ewotICAgICAgICAgICAgICAgIGFsdGVybmF0aXZlQmVnaW5PcENvZGUgPSBPcE5lc3RlZEFsdGVy
bmF0aXZlQmVnaW47Ci0gICAgICAgICAgICAgICAgYWx0ZXJuYXRpdmVOZXh0T3BDb2RlID0gT3BO
ZXN0ZWRBbHRlcm5hdGl2ZU5leHQ7Ci0gICAgICAgICAgICAgICAgYWx0ZXJuYXRpdmVFbmRPcENv
ZGUgPSBPcE5lc3RlZEFsdGVybmF0aXZlRW5kOworICAgICAgICAgICAgICAgIGFsdGVybmF0aXZl
QmVnaW5PcENvZGUgPSBZYXJyT3BDb2RlOjpOZXN0ZWRBbHRlcm5hdGl2ZUJlZ2luOworICAgICAg
ICAgICAgICAgIGFsdGVybmF0aXZlTmV4dE9wQ29kZSA9IFlhcnJPcENvZGU6Ok5lc3RlZEFsdGVy
bmF0aXZlTmV4dDsKKyAgICAgICAgICAgICAgICBhbHRlcm5hdGl2ZUVuZE9wQ29kZSA9IFlhcnJP
cENvZGU6Ok5lc3RlZEFsdGVybmF0aXZlRW5kOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVs
c2UgaWYgKHRlcm0tPnBhcmVudGhlc2VzLmlzVGVybWluYWwpIHsKICAgICAgICAgICAgIC8vIFNl
bGVjdCB0aGUgJ1Rlcm1pbmFsJyBub2Rlcy4KLSAgICAgICAgICAgIHBhcmVudGhlc2VzQmVnaW5P
cENvZGUgPSBPcFBhcmVudGhlc2VzU3VicGF0dGVyblRlcm1pbmFsQmVnaW47Ci0gICAgICAgICAg
ICBwYXJlbnRoZXNlc0VuZE9wQ29kZSA9IE9wUGFyZW50aGVzZXNTdWJwYXR0ZXJuVGVybWluYWxF
bmQ7CisgICAgICAgICAgICBwYXJlbnRoZXNlc0JlZ2luT3BDb2RlID0gWWFyck9wQ29kZTo6UGFy
ZW50aGVzZXNTdWJwYXR0ZXJuVGVybWluYWxCZWdpbjsKKyAgICAgICAgICAgIHBhcmVudGhlc2Vz
RW5kT3BDb2RlID0gWWFyck9wQ29kZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuVGVybWluYWxFbmQ7
CiAgICAgICAgIH0gZWxzZSB7CiAjaWYgRU5BQkxFKFlBUlJfSklUX0FMTF9QQVJFTlNfRVhQUkVT
U0lPTlMpCiAgICAgICAgICAgICAvLyBXZSBvbmx5IGhhbmRsZSBnZW5lcmljIHBhcmVudGhlc2lz
IHdpdGggbm9uLWZpeGVkIGNvdW50cy4KLSAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eVR5
cGUgPT0gUXVhbnRpZmllckZpeGVkQ291bnQpIHsKKyAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFu
dGl0eVR5cGUgPT0gUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQpIHsKICAgICAgICAgICAgICAg
ICAvLyBUaGlzIHN1YnBhdHRlcm4gaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgSklULgogICAgICAg
ICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9IEpJVEZhaWx1cmVSZWFzb246OkZpeGVkQ291bnRQ
YXJlbnRoZXNpemVkU3VicGF0dGVybjsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0zNDQ0
LDE0ICszNDQzLDE0IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJ
VEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgbV9jb250YWluc05l
c3RlZFN1YnBhdHRlcm5zID0gdHJ1ZTsKIAogICAgICAgICAgICAgLy8gU2VsZWN0IHRoZSAnR2Vu
ZXJpYycgbm9kZXMuCi0gICAgICAgICAgICBwYXJlbnRoZXNlc0JlZ2luT3BDb2RlID0gT3BQYXJl
bnRoZXNlc1N1YnBhdHRlcm5CZWdpbjsKLSAgICAgICAgICAgIHBhcmVudGhlc2VzRW5kT3BDb2Rl
ID0gT3BQYXJlbnRoZXNlc1N1YnBhdHRlcm5FbmQ7CisgICAgICAgICAgICBwYXJlbnRoZXNlc0Jl
Z2luT3BDb2RlID0gWWFyck9wQ29kZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW47CisgICAg
ICAgICAgICBwYXJlbnRoZXNlc0VuZE9wQ29kZSA9IFlhcnJPcENvZGU6OlBhcmVudGhlc2VzU3Vi
cGF0dGVybkVuZDsKIAogICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBh
bHRlcm5hdGl2ZSB3ZSBjYW5ub3QgdXNlIHRoZSAnc2ltcGxlJyBub2Rlcy4KICAgICAgICAgICAg
IGlmICh0ZXJtLT5wYXJlbnRoZXNlcy5kaXNqdW5jdGlvbi0+bV9hbHRlcm5hdGl2ZXMuc2l6ZSgp
ICE9IDEpIHsKLSAgICAgICAgICAgICAgICBhbHRlcm5hdGl2ZUJlZ2luT3BDb2RlID0gT3BOZXN0
ZWRBbHRlcm5hdGl2ZUJlZ2luOwotICAgICAgICAgICAgICAgIGFsdGVybmF0aXZlTmV4dE9wQ29k
ZSA9IE9wTmVzdGVkQWx0ZXJuYXRpdmVOZXh0OwotICAgICAgICAgICAgICAgIGFsdGVybmF0aXZl
RW5kT3BDb2RlID0gT3BOZXN0ZWRBbHRlcm5hdGl2ZUVuZDsKKyAgICAgICAgICAgICAgICBhbHRl
cm5hdGl2ZUJlZ2luT3BDb2RlID0gWWFyck9wQ29kZTo6TmVzdGVkQWx0ZXJuYXRpdmVCZWdpbjsK
KyAgICAgICAgICAgICAgICBhbHRlcm5hdGl2ZU5leHRPcENvZGUgPSBZYXJyT3BDb2RlOjpOZXN0
ZWRBbHRlcm5hdGl2ZU5leHQ7CisgICAgICAgICAgICAgICAgYWx0ZXJuYXRpdmVFbmRPcENvZGUg
PSBZYXJyT3BDb2RlOjpOZXN0ZWRBbHRlcm5hdGl2ZUVuZDsKICAgICAgICAgICAgIH0KICNlbHNl
CiAgICAgICAgICAgICAvLyBUaGlzIHN1YnBhdHRlcm4gaXMgbm90IHN1cHBvcnRlZCBieSB0aGUg
SklULgpAQCAtMzUwMyw5ICszNTAyLDkgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1
YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAKICAgICAvLyBvcENv
bXBpbGVQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uCiAgICAgLy8gRW1pdHMgb3BzIGZvciBhIHBhcmVu
dGhldGljYWwgYXNzZXJ0aW9uLiBUaGVzZSBjb25zaXN0IG9mIGFuCi0gICAgLy8gT3BTaW1wbGVO
ZXN0ZWRBbHRlcm5hdGl2ZUJlZ2luL05leHQvRW5kIHNldCBvZiBub2RlcyB3cmFwcGluZworICAg
IC8vIFlhcnJPcENvZGU6OlNpbXBsZU5lc3RlZEFsdGVybmF0aXZlQmVnaW4vTmV4dC9FbmQgc2V0
IG9mIG5vZGVzIHdyYXBwaW5nCiAgICAgLy8gdGhlIGFsdGVybmF0aXZlcywgd2l0aCB0aGVzZSB3
cmFwcGVkIGJ5IGFuIG91dGVyIHBhaXIgb2YKLSAgICAvLyBPcFBhcmVudGhldGljYWxBc3NlcnRp
b25CZWdpbi9FbmQgbm9kZXMuCisgICAgLy8gWWFyck9wQ29kZTo6UGFyZW50aGV0aWNhbEFzc2Vy
dGlvbkJlZ2luL0VuZCBub2Rlcy4KICAgICAvLyBXZSBjYW4gYWx3YXlzIHVzZSB0aGUgT3BTaW1w
bGVOZXN0ZWRBbHRlcm5hdGl2ZSBub2RlcyBpbiB0aGUKICAgICAvLyBjYXNlIG9mIHBhcmVudGhl
dGljYWwgYXNzZXJ0aW9ucyBzaW5jZSB0aGVzZSBvbmx5IGV2ZXIgbWF0Y2gKICAgICAvLyBvbmNl
LCBhbmQgd2lsbCBuZXZlciBiYWNrdHJhY2sgYmFjayBpbnRvIHRoZSBhc3NlcnRpb24uCkBAIC0z
NTE3LDkgKzM1MTYsOSBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJK
SVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgfQogCiAgICAgICAgIHNp
emVfdCBwYXJlbkJlZ2luID0gbV9vcHMuc2l6ZSgpOwotICAgICAgICBtX29wcy5hcHBlbmQoT3BQ
YXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW4pOworICAgICAgICBtX29wcy5hcHBlbmQoWWFyck9w
Q29kZTo6UGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luKTsKIAotICAgICAgICBtX29wcy5hcHBl
bmQoT3BTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZUJlZ2luKTsKKyAgICAgICAgbV9vcHMuYXBwZW5k
KFlhcnJPcENvZGU6OlNpbXBsZU5lc3RlZEFsdGVybmF0aXZlQmVnaW4pOwogICAgICAgICBtX29w
cy5sYXN0KCkubV9wcmV2aW91c09wID0gbm90Rm91bmQ7CiAgICAgICAgIG1fb3BzLmxhc3QoKS5t
X3Rlcm0gPSB0ZXJtOwogICAgICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFBhdHRlcm5BbHRl
cm5hdGl2ZT4+JiBhbHRlcm5hdGl2ZXMgPSAgdGVybS0+cGFyZW50aGVzZXMuZGlzanVuY3Rpb24t
Pm1fYWx0ZXJuYXRpdmVzOwpAQCAtMzUzMCw3ICszNTI5LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRv
ciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAg
ICAgICAgICAgICBvcENvbXBpbGVBbHRlcm5hdGl2ZShuZXN0ZWRBbHRlcm5hdGl2ZSk7CiAKICAg
ICAgICAgICAgIHNpemVfdCB0aGlzT3BJbmRleCA9IG1fb3BzLnNpemUoKTsKLSAgICAgICAgICAg
IG1fb3BzLmFwcGVuZChZYXJyT3AoT3BTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZU5leHQpKTsKKyAg
ICAgICAgICAgIG1fb3BzLmFwcGVuZChZYXJyT3AoWWFyck9wQ29kZTo6U2ltcGxlTmVzdGVkQWx0
ZXJuYXRpdmVOZXh0KSk7CiAKICAgICAgICAgICAgIFlhcnJPcCYgbGFzdE9wID0gbV9vcHNbbGFz
dE9wSW5kZXhdOwogICAgICAgICAgICAgWWFyck9wJiB0aGlzT3AgPSBtX29wc1t0aGlzT3BJbmRl
eF07CkBAIC0zNTQxLDEzICszNTQwLDEzIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBw
dWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAg
dGhpc09wLm1fdGVybSA9IHRlcm07CiAgICAgICAgIH0KICAgICAgICAgWWFyck9wJiBsYXN0T3Ag
PSBtX29wcy5sYXN0KCk7Ci0gICAgICAgIEFTU0VSVChsYXN0T3AubV9vcCA9PSBPcFNpbXBsZU5l
c3RlZEFsdGVybmF0aXZlTmV4dCk7Ci0gICAgICAgIGxhc3RPcC5tX29wID0gT3BTaW1wbGVOZXN0
ZWRBbHRlcm5hdGl2ZUVuZDsKKyAgICAgICAgQVNTRVJUKGxhc3RPcC5tX29wID09IFlhcnJPcENv
ZGU6OlNpbXBsZU5lc3RlZEFsdGVybmF0aXZlTmV4dCk7CisgICAgICAgIGxhc3RPcC5tX29wID0g
WWFyck9wQ29kZTo6U2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVFbmQ7CiAgICAgICAgIGxhc3RPcC5t
X2FsdGVybmF0aXZlID0gbnVsbHB0cjsKICAgICAgICAgbGFzdE9wLm1fbmV4dE9wID0gbm90Rm91
bmQ7CiAKICAgICAgICAgc2l6ZV90IHBhcmVuRW5kID0gbV9vcHMuc2l6ZSgpOwotICAgICAgICBt
X29wcy5hcHBlbmQoT3BQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uRW5kKTsKKyAgICAgICAgbV9vcHMu
YXBwZW5kKFlhcnJPcENvZGU6OlBhcmVudGhldGljYWxBc3NlcnRpb25FbmQpOwogCiAgICAgICAg
IG1fb3BzW3BhcmVuQmVnaW5dLm1fdGVybSA9IHRlcm07CiAgICAgICAgIG1fb3BzW3BhcmVuQmVn
aW5dLm1fcHJldmlvdXNPcCA9IG5vdEZvdW5kOwpAQCAtMzU2NywxMSArMzU2NiwxMSBAQCBjbGFz
cyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3Jv
QXNzZW1ibGVyIHsKICAgICAgICAgICAgIFBhdHRlcm5UZXJtKiB0ZXJtID0gJmFsdGVybmF0aXZl
LT5tX3Rlcm1zW2ldOwogCiAgICAgICAgICAgICBzd2l0Y2ggKHRlcm0tPnR5cGUpIHsKLSAgICAg
ICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm46CisgICAg
ICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm46CiAg
ICAgICAgICAgICAgICAgb3BDb21waWxlUGFyZW50aGVzZXNTdWJwYXR0ZXJuKHRlcm0pOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBl
UGFyZW50aGV0aWNhbEFzc2VydGlvbjoKKyAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5
cGU6OlBhcmVudGhldGljYWxBc3NlcnRpb246CiAgICAgICAgICAgICAgICAgb3BDb21waWxlUGFy
ZW50aGV0aWNhbEFzc2VydGlvbih0ZXJtKTsKICAgICAgICAgICAgICAgICBicmVhazsKIApAQCAt
MzU4NywxMiArMzU4NiwxMiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlh
cnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAvLyB0aHJvdWdoJyAoQk9M
IGFuY2hvcmVkKSBhbHRlcm5hdGl2ZXMsIGZvbGxvd2VkIGJ5IHplcm8gb3IgbW9yZQogICAgIC8v
IHJlcGVhdGVkIGFsdGVybmF0aXZlcy4KICAgICAvLyBGb3IgZWFjaCBvZiB0aGVzZSB0d28gc2V0
cyBvZiBhbHRlcmF0aXZlcywgaWYgbm90IGVtcHR5IHRoZXkgd2lsbCBiZQotICAgIC8vIHdyYXBw
ZWQgaW4gYSBzZXQgb2YgT3BCb2R5QWx0ZXJuYXRpdmVCZWdpbi9OZXh0L0VuZCBub2RlcyAod2l0
aCB0aGUKKyAgICAvLyB3cmFwcGVkIGluIGEgc2V0IG9mIFlhcnJPcENvZGU6OkJvZHlBbHRlcm5h
dGl2ZUJlZ2luL05leHQvRW5kIG5vZGVzICh3aXRoIHRoZQogICAgIC8vICdiZWdpbicgbm9kZSBy
ZWZlcmVuY2luZyB0aGUgZmlyc3QgYWx0ZXJuYXRpdmUsIGFuZCAnbmV4dCcgbm9kZXMKICAgICAv
LyByZWZlcmVuY2luZyBhbnkgZnVydGhlciBhbHRlcm5hdGl2ZXMuIFRoZSBiZWdpbi9uZXh0L2Vu
ZCBub2RlcyBhcmUKICAgICAvLyBsaW5rZWQgdG9nZXRoZXIgaW4gYSBkb3VibHkgbGlua2VkIGxp
c3QuIEluIHRoZSBjYXNlIG9mIHJlcGVhdGluZwogICAgIC8vIGFsdGVybmF0aXZlcywgdGhlIGVu
ZCBub2RlIGlzIGFsc28gbGlua2VkIGJhY2sgdG8gdGhlIGJlZ2lubmluZy4KLSAgICAvLyBJZiBu
byByZXBlYXRpbmcgYWx0ZXJuYXRpdmVzIGV4aXN0LCB0aGVuIGEgT3BNYXRjaEZhaWxlZCBub2Rl
IGV4aXN0cworICAgIC8vIElmIG5vIHJlcGVhdGluZyBhbHRlcm5hdGl2ZXMgZXhpc3QsIHRoZW4g
YSBZYXJyT3BDb2RlOjpNYXRjaEZhaWxlZCBub2RlIGV4aXN0cwogICAgIC8vIHRvIHJldHVybiB0
aGUgZmFpbGluZyByZXN1bHQuCiAgICAgdm9pZCBvcENvbXBpbGVCb2R5KFBhdHRlcm5EaXNqdW5j
dGlvbiogZGlzanVuY3Rpb24pCiAgICAgewpAQCAtMzYwNiw3ICszNjA1LDcgQEAgY2xhc3MgWWFy
ckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2Vt
YmxlciB7CiAKICAgICAgICAgLy8gRW1pdCB0aGUgJ29uY2UgdGhyb3VnaCcgYWx0ZXJuYXRpdmVz
LgogICAgICAgICBpZiAoYWx0ZXJuYXRpdmVzLnNpemUoKSAmJiBhbHRlcm5hdGl2ZXNbMF0tPm9u
Y2VUaHJvdWdoKCkpIHsKLSAgICAgICAgICAgIG1fb3BzLmFwcGVuZChZYXJyT3AoT3BCb2R5QWx0
ZXJuYXRpdmVCZWdpbikpOworICAgICAgICAgICAgbV9vcHMuYXBwZW5kKFlhcnJPcChZYXJyT3BD
b2RlOjpCb2R5QWx0ZXJuYXRpdmVCZWdpbikpOwogICAgICAgICAgICAgbV9vcHMubGFzdCgpLm1f
cHJldmlvdXNPcCA9IG5vdEZvdW5kOwogCiAgICAgICAgICAgICBkbyB7CkBAIC0zNjE1LDcgKzM2
MTQsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBw
cml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICBvcENvbXBpbGVBbHRlcm5h
dGl2ZShhbHRlcm5hdGl2ZSk7CiAKICAgICAgICAgICAgICAgICBzaXplX3QgdGhpc09wSW5kZXgg
PSBtX29wcy5zaXplKCk7Ci0gICAgICAgICAgICAgICAgbV9vcHMuYXBwZW5kKFlhcnJPcChPcEJv
ZHlBbHRlcm5hdGl2ZU5leHQpKTsKKyAgICAgICAgICAgICAgICBtX29wcy5hcHBlbmQoWWFyck9w
KFlhcnJPcENvZGU6OkJvZHlBbHRlcm5hdGl2ZU5leHQpKTsKIAogICAgICAgICAgICAgICAgIFlh
cnJPcCYgbGFzdE9wID0gbV9vcHNbbGFzdE9wSW5kZXhdOwogICAgICAgICAgICAgICAgIFlhcnJP
cCYgdGhpc09wID0gbV9vcHNbdGhpc09wSW5kZXhdOwpAQCAtMzYyOSwyMCArMzYyOCwyMCBAQCBj
bGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1h
Y3JvQXNzZW1ibGVyIHsKIAogICAgICAgICAgICAgWWFyck9wJiBsYXN0T3AgPSBtX29wcy5sYXN0
KCk7CiAKLSAgICAgICAgICAgIEFTU0VSVChsYXN0T3AubV9vcCA9PSBPcEJvZHlBbHRlcm5hdGl2
ZU5leHQpOwotICAgICAgICAgICAgbGFzdE9wLm1fb3AgPSBPcEJvZHlBbHRlcm5hdGl2ZUVuZDsK
KyAgICAgICAgICAgIEFTU0VSVChsYXN0T3AubV9vcCA9PSBZYXJyT3BDb2RlOjpCb2R5QWx0ZXJu
YXRpdmVOZXh0KTsKKyAgICAgICAgICAgIGxhc3RPcC5tX29wID0gWWFyck9wQ29kZTo6Qm9keUFs
dGVybmF0aXZlRW5kOwogICAgICAgICAgICAgbGFzdE9wLm1fYWx0ZXJuYXRpdmUgPSBudWxscHRy
OwogICAgICAgICAgICAgbGFzdE9wLm1fbmV4dE9wID0gbm90Rm91bmQ7CiAgICAgICAgIH0KIAog
ICAgICAgICBpZiAoY3VycmVudEFsdGVybmF0aXZlSW5kZXggPT0gYWx0ZXJuYXRpdmVzLnNpemUo
KSkgewotICAgICAgICAgICAgbV9vcHMuYXBwZW5kKFlhcnJPcChPcE1hdGNoRmFpbGVkKSk7Cisg
ICAgICAgICAgICBtX29wcy5hcHBlbmQoWWFyck9wKFlhcnJPcENvZGU6Ok1hdGNoRmFpbGVkKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICAvLyBFbWl0IHRoZSBy
ZXBlYXRlZCBhbHRlcm5hdGl2ZXMuCiAgICAgICAgIHNpemVfdCByZXBlYXRMb29wID0gbV9vcHMu
c2l6ZSgpOwotICAgICAgICBtX29wcy5hcHBlbmQoWWFyck9wKE9wQm9keUFsdGVybmF0aXZlQmVn
aW4pKTsKKyAgICAgICAgbV9vcHMuYXBwZW5kKFlhcnJPcChZYXJyT3BDb2RlOjpCb2R5QWx0ZXJu
YXRpdmVCZWdpbikpOwogICAgICAgICBtX29wcy5sYXN0KCkubV9wcmV2aW91c09wID0gbm90Rm91
bmQ7CiAgICAgICAgIGRvIHsKICAgICAgICAgICAgIHNpemVfdCBsYXN0T3BJbmRleCA9IG1fb3Bz
LnNpemUoKSAtIDE7CkBAIC0zNjUxLDcgKzM2NTAsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZp
bmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAg
ICAgICAgIG9wQ29tcGlsZUFsdGVybmF0aXZlKGFsdGVybmF0aXZlKTsKIAogICAgICAgICAgICAg
c2l6ZV90IHRoaXNPcEluZGV4ID0gbV9vcHMuc2l6ZSgpOwotICAgICAgICAgICAgbV9vcHMuYXBw
ZW5kKFlhcnJPcChPcEJvZHlBbHRlcm5hdGl2ZU5leHQpKTsKKyAgICAgICAgICAgIG1fb3BzLmFw
cGVuZChZYXJyT3AoWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZlTmV4dCkpOwogCiAgICAgICAg
ICAgICBZYXJyT3AmIGxhc3RPcCA9IG1fb3BzW2xhc3RPcEluZGV4XTsKICAgICAgICAgICAgIFlh
cnJPcCYgdGhpc09wID0gbV9vcHNbdGhpc09wSW5kZXhdOwpAQCAtMzY2Myw4ICszNjYyLDggQEAg
Y2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBN
YWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICArK2N1cnJlbnRBbHRlcm5hdGl2ZUluZGV4Owog
ICAgICAgICB9IHdoaWxlIChjdXJyZW50QWx0ZXJuYXRpdmVJbmRleCA8IGFsdGVybmF0aXZlcy5z
aXplKCkpOwogICAgICAgICBZYXJyT3AmIGxhc3RPcCA9IG1fb3BzLmxhc3QoKTsKLSAgICAgICAg
QVNTRVJUKGxhc3RPcC5tX29wID09IE9wQm9keUFsdGVybmF0aXZlTmV4dCk7Ci0gICAgICAgIGxh
c3RPcC5tX29wID0gT3BCb2R5QWx0ZXJuYXRpdmVFbmQ7CisgICAgICAgIEFTU0VSVChsYXN0T3Au
bV9vcCA9PSBZYXJyT3BDb2RlOjpCb2R5QWx0ZXJuYXRpdmVOZXh0KTsKKyAgICAgICAgbGFzdE9w
Lm1fb3AgPSBZYXJyT3BDb2RlOjpCb2R5QWx0ZXJuYXRpdmVFbmQ7CiAgICAgICAgIGxhc3RPcC5t
X2FsdGVybmF0aXZlID0gbnVsbHB0cjsKICAgICAgICAgbGFzdE9wLm1fbmV4dE9wID0gcmVwZWF0
TG9vcDsKICAgICB9CkBAIC0zNzE3LDcgKzM3MTYsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZp
bmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAg
ICAgemVyb0V4dGVuZDMyVG9Xb3JkKGluZGV4LCBpbmRleCk7CiAgICAgICAgIHplcm9FeHRlbmQz
MlRvV29yZChsZW5ndGgsIGxlbmd0aCk7CiAjaWYgT1MoV0lORE9XUykKLSAgICAgICAgaWYgKGNv
bXBpbGVNb2RlID09IEluY2x1ZGVTdWJwYXR0ZXJucykKKyAgICAgICAgaWYgKG1fY29tcGlsZU1v
ZGUgPT0gSklUQ29tcGlsZU1vZGU6OkluY2x1ZGVTdWJwYXR0ZXJucykKICAgICAgICAgICAgIGxv
YWRQdHIoQWRkcmVzcyhYODZSZWdpc3RlcnM6OmVicCwgNiAqIHNpemVvZih2b2lkKikpLCBvdXRw
dXQpOwogICAgICAgICAvLyByY3ggaXMgdGhlIHBvaW50ZXIgdG8gdGhlIGFsbG9jYXRlZCBzcGFj
ZSBmb3IgcmVzdWx0IGluIHg2NCBXaW5kb3dzLgogICAgICAgICBwdXNoKFg4NlJlZ2lzdGVyczo6
ZWN4KTsKQEAgLTM4MDEsMTkgKzM4MDAsMTkgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6
IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgfQogCiBw
dWJsaWM6Ci0gICAgWWFyckdlbmVyYXRvcihWTSogdm0sIFlhcnJQYXR0ZXJuJiBwYXR0ZXJuLCBT
dHJpbmcmIHBhdHRlcm5TdHJpbmcsIFlhcnJDb2RlQmxvY2smIGNvZGVCbG9jaywgWWFyckNoYXJT
aXplIGNoYXJTaXplKQorICAgIFlhcnJHZW5lcmF0b3IoVk0qIHZtLCBZYXJyUGF0dGVybiYgcGF0
dGVybiwgU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBZYXJyQ29kZUJsb2NrJiBjb2RlQmxvY2ssIENo
YXJTaXplIGNoYXJTaXplLCBKSVRDb21waWxlTW9kZSBjb21waWxlTW9kZSkKICAgICAgICAgOiBt
X3ZtKHZtKQogICAgICAgICAsIG1fcGF0dGVybihwYXR0ZXJuKQogICAgICAgICAsIG1fcGF0dGVy
blN0cmluZyhwYXR0ZXJuU3RyaW5nKQogICAgICAgICAsIG1fY29kZUJsb2NrKGNvZGVCbG9jaykK
ICAgICAgICAgLCBtX2NoYXJTaXplKGNoYXJTaXplKQotICAgICAgICAsIG1fZGVjb2RlU3Vycm9n
YXRlUGFpcnMobV9jaGFyU2l6ZSA9PSBDaGFyMTYgJiYgbV9wYXR0ZXJuLnVuaWNvZGUoKSkKKyAg
ICAgICAgLCBtX2NvbXBpbGVNb2RlKGNvbXBpbGVNb2RlKQorICAgICAgICAsIG1fZGVjb2RlU3Vy
cm9nYXRlUGFpcnMobV9jaGFyU2l6ZSA9PSBDaGFyU2l6ZTo6Q2hhcjE2ICYmIG1fcGF0dGVybi51
bmljb2RlKCkpCiAgICAgICAgICwgbV91bmljb2RlSWdub3JlQ2FzZShtX3BhdHRlcm4udW5pY29k
ZSgpICYmIG1fcGF0dGVybi5pZ25vcmVDYXNlKCkpCi0gICAgICAgICwgbV9maXhlZFNpemVkQWx0
ZXJuYXRpdmUoZmFsc2UpCiAgICAgICAgICwgbV9jYW5vbmljYWxNb2RlKG1fcGF0dGVybi51bmlj
b2RlKCkgPyBDYW5vbmljYWxNb2RlOjpVbmljb2RlIDogQ2Fub25pY2FsTW9kZTo6VUNTMikKICNp
ZiBFTkFCTEUoWUFSUl9KSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUykKICAgICAgICAgLCBtX2Nv
bnRhaW5zTmVzdGVkU3VicGF0dGVybnMoZmFsc2UpCi0gICAgICAgICwgbV9wYXJlbkNvbnRleHRT
aXplcyhjb21waWxlTW9kZSA9PSBJbmNsdWRlU3VicGF0dGVybnMgPyBtX3BhdHRlcm4ubV9udW1T
dWJwYXR0ZXJucyA6IDAsIG1fcGF0dGVybi5tX2JvZHktPm1fY2FsbEZyYW1lU2l6ZSkKKyAgICAg
ICAgLCBtX3BhcmVuQ29udGV4dFNpemVzKGNvbXBpbGVNb2RlID09IEpJVENvbXBpbGVNb2RlOjpJ
bmNsdWRlU3VicGF0dGVybnMgPyBtX3BhdHRlcm4ubV9udW1TdWJwYXR0ZXJucyA6IDAsIG1fcGF0
dGVybi5tX2JvZHktPm1fY2FsbEZyYW1lU2l6ZSkKICNlbmRpZgogICAgIHsKICAgICB9CkBAIC0z
ODMxLDcgKzM4MzAsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJK
SVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKIAogICAgICAgICBpZiAobV9wYXR0ZXJu
Lm1fY29udGFpbnNCYWNrcmVmZXJlbmNlcwogI2lmIEVOQUJMRShZQVJSX0pJVF9CQUNLUkVGRVJF
TkNFUykKLSAgICAgICAgICAgICYmIChjb21waWxlTW9kZSA9PSBNYXRjaE9ubHkgfHwgKG1fcGF0
dGVybi5pZ25vcmVDYXNlKCkgJiYgbV9jaGFyU2l6ZSAhPSBDaGFyOCkpCisgICAgICAgICAgICAm
JiAobV9jb21waWxlTW9kZSA9PSBKSVRDb21waWxlTW9kZTo6TWF0Y2hPbmx5IHx8IChtX3BhdHRl
cm4uaWdub3JlQ2FzZSgpICYmIG1fY2hhclNpemUgIT0gQ2hhclNpemU6OkNoYXI4KSkKICNlbmRp
ZgogICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgY29kZUJsb2NrLnNldEZhbGxCYWNr
V2l0aEZhaWx1cmVSZWFzb24oSklURmFpbHVyZVJlYXNvbjo6QmFja1JlZmVyZW5jZSk7CkBAIC0z
ODgwLDcgKzM4NzksNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJK
SVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgIEp1bXAgc3RhY2tP
ayA9IGJyYW5jaFB0cihCZWxvd09yRXF1YWwsIEFkZHJlc3MobWF0Y2hpbmdDb250ZXh0LCBNYXRj
aGluZ0NvbnRleHRIb2xkZXI6Om9mZnNldE9mU3RhY2tMaW1pdCgpKSwgcmVnVDApOwogCiAgICAg
ICAgICAgICAvLyBFeGNlZWRlZCBzdGFjayBsaW1pdCwgcHVudCB0byB0aGUgaW50ZXJwcmV0ZXIu
Ci0gICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoKHZvaWQqKXN0YXRpY19jYXN0PHNpemVf
dD4oSlNSZWdFeHBKSVRDb2RlRmFpbHVyZSkpLCByZXR1cm5SZWdpc3Rlcik7CisgICAgICAgICAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIoKHZvaWQqKXN0YXRpY19jYXN0PHNpemVfdD4oSlNSZWdFeHBS
ZXN1bHQ6OkpJVENvZGVGYWlsdXJlKSksIHJldHVyblJlZ2lzdGVyKTsKICAgICAgICAgICAgIG1v
dmUoVHJ1c3RlZEltbTMyKDApLCByZXR1cm5SZWdpc3RlcjIpOwogICAgICAgICAgICAgZ2VuZXJh
dGVSZXR1cm4oKTsKIApAQCAtMzg5OCw3ICszODk3LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBm
aW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAg
ICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihtYXRjaExpbWl0KSwgcmVtYWluaW5nTWF0Y2hDb3Vu
dCk7CiAjZW5kaWYKIAotICAgICAgICBpZiAoY29tcGlsZU1vZGUgPT0gSW5jbHVkZVN1YnBhdHRl
cm5zKSB7CisgICAgICAgIGlmIChtX2NvbXBpbGVNb2RlID09IEpJVENvbXBpbGVNb2RlOjpJbmNs
dWRlU3VicGF0dGVybnMpIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X3BhdHRlcm4ubV9udW1TdWJwYXR0ZXJucyArIDE7ICsraSkKICAgICAgICAgICAgICAgICBzdG9y
ZTMyKFRydXN0ZWRJbW0zMigtMSksIEFkZHJlc3Mob3V0cHV0LCAoaSA8PCAxKSAqIHNpemVvZihp
bnQpKSk7CiAgICAgICAgIH0KQEAgLTM5NTEsMTMgKzM5NTAsMTMgQEAgY2xhc3MgWWFyckdlbmVy
YXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7
CiAgICAgICAgIGlmIChtX2Rpc2Fzc2VtYmxlcikKICAgICAgICAgICAgIG1fZGlzYXNzZW1ibGVy
LT5kdW1wKGxpbmtCdWZmZXIpOwogCi0gICAgICAgIGlmIChjb21waWxlTW9kZSA9PSBNYXRjaE9u
bHkpIHsKLSAgICAgICAgICAgIGlmIChtX2NoYXJTaXplID09IENoYXI4KQorICAgICAgICBpZiAo
bV9jb21waWxlTW9kZSA9PSBKSVRDb21waWxlTW9kZTo6TWF0Y2hPbmx5KSB7CisgICAgICAgICAg
ICBpZiAobV9jaGFyU2l6ZSA9PSBDaGFyU2l6ZTo6Q2hhcjgpCiAgICAgICAgICAgICAgICAgY29k
ZUJsb2NrLnNldDhCaXRDb2RlTWF0Y2hPbmx5KEZJTkFMSVpFX1JFR0VYUF9DT0RFKGxpbmtCdWZm
ZXIsIFlhcnJNYXRjaE9ubHk4Qml0UHRyVGFnLCAiTWF0Y2gtb25seSA4LWJpdCByZWd1bGFyIGV4
cHJlc3Npb24iKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgY29kZUJsb2Nr
LnNldDE2Qml0Q29kZU1hdGNoT25seShGSU5BTElaRV9SRUdFWFBfQ09ERShsaW5rQnVmZmVyLCBZ
YXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWcsICJNYXRjaC1vbmx5IDE2LWJpdCByZWd1bGFyIGV4cHJl
c3Npb24iKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAobV9jaGFyU2l6ZSA9
PSBDaGFyOCkKKyAgICAgICAgICAgIGlmIChtX2NoYXJTaXplID09IENoYXJTaXplOjpDaGFyOCkK
ICAgICAgICAgICAgICAgICBjb2RlQmxvY2suc2V0OEJpdENvZGUoRklOQUxJWkVfUkVHRVhQX0NP
REUobGlua0J1ZmZlciwgWWFycjhCaXRQdHJUYWcsICI4LWJpdCByZWd1bGFyIGV4cHJlc3Npb24i
KSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgY29kZUJsb2NrLnNldDE2Qml0
Q29kZShGSU5BTElaRV9SRUdFWFBfQ09ERShsaW5rQnVmZmVyLCBZYXJyMTZCaXRQdHJUYWcsICIx
Ni1iaXQgcmVndWxhciBleHByZXNzaW9uIikpOwpAQCAtMzk2OCwxNCArMzk2NywxNCBAQCBjbGFz
cyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3Jv
QXNzZW1ibGVyIHsKIAogICAgIGNvbnN0IGNoYXIqIHZhcmlhbnQoKSBmaW5hbAogICAgIHsKLSAg
ICAgICAgaWYgKGNvbXBpbGVNb2RlID09IE1hdGNoT25seSkgewotICAgICAgICAgICAgaWYgKG1f
Y2hhclNpemUgPT0gQ2hhcjgpCisgICAgICAgIGlmIChtX2NvbXBpbGVNb2RlID09IEpJVENvbXBp
bGVNb2RlOjpNYXRjaE9ubHkpIHsKKyAgICAgICAgICAgIGlmIChtX2NoYXJTaXplID09IENoYXJT
aXplOjpDaGFyOCkKICAgICAgICAgICAgICAgICByZXR1cm4gIk1hdGNoLW9ubHkgOC1iaXQgcmVn
dWxhciBleHByZXNzaW9uIjsKIAogICAgICAgICAgICAgcmV0dXJuICJNYXRjaC1vbmx5IDE2LWJp
dCByZWd1bGFyIGV4cHJlc3Npb24iOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG1fY2hhclNp
emUgPT0gQ2hhcjgpCisgICAgICAgIGlmIChtX2NoYXJTaXplID09IENoYXJTaXplOjpDaGFyOCkK
ICAgICAgICAgICAgIHJldHVybiAiOC1iaXQgcmVndWxhciBleHByZXNzaW9uIjsKIAogICAgICAg
ICByZXR1cm4gIjE2LWJpdCByZWd1bGFyIGV4cHJlc3Npb24iOwpAQCAtNDAwMSwyNCArNDAwMCwy
NCBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2
YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgWWFyck9wJiBvcCA9IG1fb3BzW29wSW5kZXhd
OwogICAgICAgICBQYXR0ZXJuVGVybSogdGVybSA9IG9wLm1fdGVybTsKICAgICAgICAgc3dpdGNo
IChvcC5tX29wKSB7Ci0gICAgICAgIGNhc2UgT3BUZXJtOiB7Ci0gICAgICAgICAgICBvdXQucHJp
bnQoIk9wVGVybSAiKTsKKyAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpUZXJtOiB7CisgICAgICAg
ICAgICBvdXQucHJpbnQoIlRlcm0gIik7CiAgICAgICAgICAgICBzd2l0Y2ggKHRlcm0tPnR5cGUp
IHsKLSAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGVBc3NlcnRpb25CT0w6CisgICAg
ICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpBc3NlcnRpb25CT0w6CiAgICAgICAgICAg
ICAgICAgb3V0LnByaW50KCJBc3NlcnQgQk9MIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAK
LSAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGVBc3NlcnRpb25FT0w6CisgICAgICAg
ICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpBc3NlcnRpb25FT0w6CiAgICAgICAgICAgICAg
ICAgb3V0LnByaW50KCJBc3NlcnQgRU9MIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAg
ICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGVCYWNrUmVmZXJlbmNlOgorICAgICAgICAg
ICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6QmFja1JlZmVyZW5jZToKICAgICAgICAgICAgICAg
ICBvdXQucHJpbnRmKCJCYWNrUmVmZXJlbmNlIHBhdHRlcm4gIyV1IiwgdGVybS0+YmFja1JlZmVy
ZW5jZVN1YnBhdHRlcm5JZCk7CiAgICAgICAgICAgICAgICAgdGVybS0+ZHVtcFF1YW50aWZpZXIo
b3V0KTsKICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgY2FzZSBQYXR0ZXJu
VGVybTo6VHlwZVBhdHRlcm5DaGFyYWN0ZXI6Ci0gICAgICAgICAgICAgICAgb3V0LnByaW50KCJU
eXBlUGF0dGVybkNoYXJhY3RlciAiKTsKKyAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5
cGU6OlBhdHRlcm5DaGFyYWN0ZXI6CisgICAgICAgICAgICAgICAgb3V0LnByaW50KCJQYXR0ZXJu
Q2hhcmFjdGVyICIpOwogICAgICAgICAgICAgICAgIGR1bXBVQ2hhcjMyKG91dCwgdGVybS0+cGF0
dGVybkNoYXJhY3Rlcik7CiAgICAgICAgICAgICAgICAgaWYgKG1fcGF0dGVybi5pZ25vcmVDYXNl
KCkpCiAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludCgiIGlnbm9yZSBjYXNlIik7CkBAIC00
MDI2LDI4ICs0MDI1LDI4IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFy
ckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgIHRlcm0t
PmR1bXBRdWFudGlmaWVyKG91dCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAg
ICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGVDaGFyYWN0ZXJDbGFzczoKLSAgICAgICAgICAgICAg
ICBvdXQucHJpbnQoIlR5cGVQYXR0ZXJuQ2hhcmFjdGVyQ2xhc3MgIik7CisgICAgICAgICAgICBj
YXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpDaGFyYWN0ZXJDbGFzczoKKyAgICAgICAgICAgICAgICBv
dXQucHJpbnQoIlBhdHRlcm5DaGFyYWN0ZXJDbGFzcyAiKTsKICAgICAgICAgICAgICAgICBpZiAo
dGVybS0+aW52ZXJ0KCkpCiAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludCgibm90ICIpOwog
ICAgICAgICAgICAgICAgIGR1bXBDaGFyYWN0ZXJDbGFzcyhvdXQsICZtX3BhdHRlcm4sIHRlcm0t
PmNoYXJhY3RlckNsYXNzKTsKICAgICAgICAgICAgICAgICB0ZXJtLT5kdW1wUXVhbnRpZmllcihv
dXQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICBjYXNlIFBhdHRlcm5U
ZXJtOjpUeXBlQXNzZXJ0aW9uV29yZEJvdW5kYXJ5OgorICAgICAgICAgICAgY2FzZSBQYXR0ZXJu
VGVybTo6VHlwZTo6QXNzZXJ0aW9uV29yZEJvdW5kYXJ5OgogICAgICAgICAgICAgICAgIG91dC5w
cmludGYoIiVzd29yZCBib3VuZGFyeSIsIHRlcm0tPmludmVydCgpID8gIm5vbi0iIDogIiIpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpU
eXBlRG90U3RhckVuY2xvc3VyZToKKyAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6
OkRvdFN0YXJFbmNsb3N1cmU6CiAgICAgICAgICAgICAgICAgb3V0LnByaW50KCIuKiBlbmNsb3N1
cmUiKTsKICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgY2FzZSBQYXR0ZXJu
VGVybTo6VHlwZUZvcndhcmRSZWZlcmVuY2U6Ci0gICAgICAgICAgICAgICAgb3V0LnByaW50KCJU
eXBlRm9yd2FyZFJlZmVyZW5jZSA8bm90IGhhbmRsZWQ+Iik7CisgICAgICAgICAgICBjYXNlIFBh
dHRlcm5UZXJtOjpUeXBlOjpGb3J3YXJkUmVmZXJlbmNlOgorICAgICAgICAgICAgICAgIG91dC5w
cmludCgiRm9yd2FyZFJlZmVyZW5jZSA8bm90IGhhbmRsZWQ+Iik7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAKLSAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGVQYXJlbnRoZXNlc1N1
YnBhdHRlcm46Ci0gICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlUGFyZW50aGV0aWNh
bEFzc2VydGlvbjoKKyAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OlBhcmVudGhl
c2VzU3VicGF0dGVybjoKKyAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OlBhcmVu
dGhldGljYWxBc3NlcnRpb246CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTQwNTUs
MTE5ICs0MDU0LDExOSBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJK
SVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgIGlmIChvcC5tX2lz
RGVhZENvZGUpCiAgICAgICAgICAgICAgICAgb3V0LnByaW50KCIgYWxyZWFkeSBoYW5kbGVkIik7
CiAgICAgICAgICAgICBvdXQucHJpbnQoIlxuIik7Ci0gICAgICAgICAgICByZXR1cm4oMCk7Cisg
ICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2UgT3BCb2R5QWx0
ZXJuYXRpdmVCZWdpbjoKLSAgICAgICAgICAgIG91dC5wcmludGYoIk9wQm9keUFsdGVybmF0aXZl
QmVnaW4gbWluaW11bSBzaXplICV1XG4iLCBvcC5tX2FsdGVybmF0aXZlLT5tX21pbmltdW1TaXpl
KTsKLSAgICAgICAgICAgIHJldHVybigwKTsKKyAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpCb2R5
QWx0ZXJuYXRpdmVCZWdpbjoKKyAgICAgICAgICAgIG91dC5wcmludGYoIkJvZHlBbHRlcm5hdGl2
ZUJlZ2luIG1pbmltdW0gc2l6ZSAldVxuIiwgb3AubV9hbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6
ZSk7CisgICAgICAgICAgICByZXR1cm4gMDsKIAotICAgICAgICBjYXNlIE9wQm9keUFsdGVybmF0
aXZlTmV4dDoKLSAgICAgICAgICAgIG91dC5wcmludGYoIk9wQm9keUFsdGVybmF0aXZlTmV4dCBt
aW5pbXVtIHNpemUgJXVcbiIsIG9wLm1fYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUpOwotICAg
ICAgICAgICAgcmV0dXJuKDApOworICAgICAgICBjYXNlIFlhcnJPcENvZGU6OkJvZHlBbHRlcm5h
dGl2ZU5leHQ6CisgICAgICAgICAgICBvdXQucHJpbnRmKCJCb2R5QWx0ZXJuYXRpdmVOZXh0IG1p
bmltdW0gc2l6ZSAldVxuIiwgb3AubV9hbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSk7CisgICAg
ICAgICAgICByZXR1cm4gMDsKIAotICAgICAgICBjYXNlIE9wQm9keUFsdGVybmF0aXZlRW5kOgot
ICAgICAgICAgICAgb3V0LnByaW50KCJPcEJvZHlBbHRlcm5hdGl2ZUVuZFxuIik7Ci0gICAgICAg
ICAgICByZXR1cm4oMCk7CisgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6Qm9keUFsdGVybmF0aXZl
RW5kOgorICAgICAgICAgICAgb3V0LnByaW50KCJCb2R5QWx0ZXJuYXRpdmVFbmRcbiIpOworICAg
ICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgY2FzZSBPcFNpbXBsZU5lc3RlZEFsdGVybmF0
aXZlQmVnaW46Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCJPcFNpbXBsZU5lc3RlZEFsdGVybmF0
aXZlQmVnaW4gbWluaW11bSBzaXplICV1XG4iLCBvcC5tX2FsdGVybmF0aXZlLT5tX21pbmltdW1T
aXplKTsKLSAgICAgICAgICAgIHJldHVybigxKTsKKyAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpT
aW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZUJlZ2luOgorICAgICAgICAgICAgb3V0LnByaW50ZigiU2lt
cGxlTmVzdGVkQWx0ZXJuYXRpdmVCZWdpbiBtaW5pbXVtIHNpemUgJXVcbiIsIG9wLm1fYWx0ZXJu
YXRpdmUtPm1fbWluaW11bVNpemUpOworICAgICAgICAgICAgcmV0dXJuIDE7CiAKLSAgICAgICAg
Y2FzZSBPcE5lc3RlZEFsdGVybmF0aXZlQmVnaW46Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCJP
cE5lc3RlZEFsdGVybmF0aXZlQmVnaW4gbWluaW11bSBzaXplICV1XG4iLCBvcC5tX2FsdGVybmF0
aXZlLT5tX21pbmltdW1TaXplKTsKLSAgICAgICAgICAgIHJldHVybigxKTsKKyAgICAgICAgY2Fz
ZSBZYXJyT3BDb2RlOjpOZXN0ZWRBbHRlcm5hdGl2ZUJlZ2luOgorICAgICAgICAgICAgb3V0LnBy
aW50ZigiTmVzdGVkQWx0ZXJuYXRpdmVCZWdpbiBtaW5pbXVtIHNpemUgJXVcbiIsIG9wLm1fYWx0
ZXJuYXRpdmUtPm1fbWluaW11bVNpemUpOworICAgICAgICAgICAgcmV0dXJuIDE7CiAKLSAgICAg
ICAgY2FzZSBPcFNpbXBsZU5lc3RlZEFsdGVybmF0aXZlTmV4dDoKLSAgICAgICAgICAgIG91dC5w
cmludGYoIk9wU2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVOZXh0IG1pbmltdW0gc2l6ZSAldVxuIiwg
b3AubV9hbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSk7Ci0gICAgICAgICAgICByZXR1cm4oMCk7
CisgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6U2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVOZXh0Ogor
ICAgICAgICAgICAgb3V0LnByaW50ZigiU2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVOZXh0IG1pbmlt
dW0gc2l6ZSAldVxuIiwgb3AubV9hbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSk7CisgICAgICAg
ICAgICByZXR1cm4gMDsKIAotICAgICAgICBjYXNlIE9wTmVzdGVkQWx0ZXJuYXRpdmVOZXh0Ogot
ICAgICAgICAgICAgb3V0LnByaW50ZigiT3BOZXN0ZWRBbHRlcm5hdGl2ZU5leHQgbWluaW11bSBz
aXplICV1XG4iLCBvcC5tX2FsdGVybmF0aXZlLT5tX21pbmltdW1TaXplKTsKLSAgICAgICAgICAg
IHJldHVybigwKTsKKyAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpOZXN0ZWRBbHRlcm5hdGl2ZU5l
eHQ6CisgICAgICAgICAgICBvdXQucHJpbnRmKCJOZXN0ZWRBbHRlcm5hdGl2ZU5leHQgbWluaW11
bSBzaXplICV1XG4iLCBvcC5tX2FsdGVybmF0aXZlLT5tX21pbmltdW1TaXplKTsKKyAgICAgICAg
ICAgIHJldHVybiAwOwogCi0gICAgICAgIGNhc2UgT3BTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZUVu
ZDoKLSAgICAgICAgICAgIG91dC5wcmludCgiT3BTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZUVuZCIp
OworICAgICAgICBjYXNlIFlhcnJPcENvZGU6OlNpbXBsZU5lc3RlZEFsdGVybmF0aXZlRW5kOgor
ICAgICAgICAgICAgb3V0LnByaW50KCJTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZUVuZCIpOwogICAg
ICAgICAgICAgdGVybS0+ZHVtcFF1YW50aWZpZXIob3V0KTsKICAgICAgICAgICAgIG91dC5wcmlu
dCgiXG4iKTsKLSAgICAgICAgICAgIHJldHVybigtMSk7CisgICAgICAgICAgICByZXR1cm4gLTE7
CiAKLSAgICAgICAgY2FzZSBPcE5lc3RlZEFsdGVybmF0aXZlRW5kOgotICAgICAgICAgICAgb3V0
LnByaW50KCJPcE5lc3RlZEFsdGVybmF0aXZlRW5kIik7CisgICAgICAgIGNhc2UgWWFyck9wQ29k
ZTo6TmVzdGVkQWx0ZXJuYXRpdmVFbmQ6CisgICAgICAgICAgICBvdXQucHJpbnQoIk5lc3RlZEFs
dGVybmF0aXZlRW5kIik7CiAgICAgICAgICAgICB0ZXJtLT5kdW1wUXVhbnRpZmllcihvdXQpOwog
ICAgICAgICAgICAgb3V0LnByaW50KCJcbiIpOwotICAgICAgICAgICAgcmV0dXJuKC0xKTsKKyAg
ICAgICAgICAgIHJldHVybiAtMTsKIAotICAgICAgICBjYXNlIE9wUGFyZW50aGVzZXNTdWJwYXR0
ZXJuT25jZUJlZ2luOgotICAgICAgICAgICAgb3V0LnByaW50KCJPcFBhcmVudGhlc2VzU3VicGF0
dGVybk9uY2VCZWdpbiAiKTsKKyAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpQYXJlbnRoZXNlc1N1
YnBhdHRlcm5PbmNlQmVnaW46CisgICAgICAgICAgICBvdXQucHJpbnQoIlBhcmVudGhlc2VzU3Vi
cGF0dGVybk9uY2VCZWdpbiAiKTsKICAgICAgICAgICAgIGlmICh0ZXJtLT5jYXB0dXJlKCkpCiAg
ICAgICAgICAgICAgICAgb3V0LnByaW50ZigiY2FwdHVyaW5nIHBhdHRlcm4gIyV1IiwgdGVybS0+
cGFyZW50aGVzZXMuc3VicGF0dGVybklkKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICBvdXQucHJpbnQoIm5vbi1jYXB0dXJpbmciKTsKICAgICAgICAgICAgIHRlcm0tPmR1bXBR
dWFudGlmaWVyKG91dCk7CiAgICAgICAgICAgICBvdXQucHJpbnQoIlxuIik7Ci0gICAgICAgICAg
ICByZXR1cm4oMCk7CisgICAgICAgICAgICByZXR1cm4gMDsKIAotICAgICAgICBjYXNlIE9wUGFy
ZW50aGVzZXNTdWJwYXR0ZXJuT25jZUVuZDoKLSAgICAgICAgICAgIG91dC5wcmludCgiT3BQYXJl
bnRoZXNlc1N1YnBhdHRlcm5PbmNlRW5kICIpOworICAgICAgICBjYXNlIFlhcnJPcENvZGU6OlBh
cmVudGhlc2VzU3VicGF0dGVybk9uY2VFbmQ6CisgICAgICAgICAgICBvdXQucHJpbnQoIlBhcmVu
dGhlc2VzU3VicGF0dGVybk9uY2VFbmQgIik7CiAgICAgICAgICAgICBpZiAodGVybS0+Y2FwdHVy
ZSgpKQogICAgICAgICAgICAgICAgIG91dC5wcmludGYoImNhcHR1cmluZyBwYXR0ZXJuICMldSIs
IHRlcm0tPnBhcmVudGhlc2VzLnN1YnBhdHRlcm5JZCk7CiAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgb3V0LnByaW50KCJub24tY2FwdHVyaW5nIik7CiAgICAgICAgICAgICB0ZXJt
LT5kdW1wUXVhbnRpZmllcihvdXQpOwogICAgICAgICAgICAgb3V0LnByaW50KCJcbiIpOwotICAg
ICAgICAgICAgcmV0dXJuKDApOworICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgY2Fz
ZSBPcFBhcmVudGhlc2VzU3VicGF0dGVyblRlcm1pbmFsQmVnaW46Ci0gICAgICAgICAgICBvdXQu
cHJpbnQoIk9wUGFyZW50aGVzZXNTdWJwYXR0ZXJuVGVybWluYWxCZWdpbiAiKTsKKyAgICAgICAg
Y2FzZSBZYXJyT3BDb2RlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEJlZ2luOgorICAg
ICAgICAgICAgb3V0LnByaW50KCJQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEJlZ2luICIp
OwogICAgICAgICAgICAgaWYgKHRlcm0tPmNhcHR1cmUoKSkKICAgICAgICAgICAgICAgICBvdXQu
cHJpbnRmKCJjYXB0dXJpbmcgcGF0dGVybiAjJXVcbiIsIHRlcm0tPnBhcmVudGhlc2VzLnN1YnBh
dHRlcm5JZCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgb3V0LnByaW50KCJu
b24tY2FwdHVyaW5nXG4iKTsKLSAgICAgICAgICAgIHJldHVybigwKTsKKyAgICAgICAgICAgIHJl
dHVybiAwOwogCi0gICAgICAgIGNhc2UgT3BQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEVu
ZDoKLSAgICAgICAgICAgIG91dC5wcmludCgiT3BQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5h
bEVuZCAiKTsKKyAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm5U
ZXJtaW5hbEVuZDoKKyAgICAgICAgICAgIG91dC5wcmludCgiUGFyZW50aGVzZXNTdWJwYXR0ZXJu
VGVybWluYWxFbmQgIik7CiAgICAgICAgICAgICBpZiAodGVybS0+Y2FwdHVyZSgpKQogICAgICAg
ICAgICAgICAgIG91dC5wcmludGYoImNhcHR1cmluZyBwYXR0ZXJuICMldVxuIiwgdGVybS0+cGFy
ZW50aGVzZXMuc3VicGF0dGVybklkKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICBvdXQucHJpbnQoIm5vbi1jYXB0dXJpbmdcbiIpOwotICAgICAgICAgICAgcmV0dXJuKDApOwor
ICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgY2FzZSBPcFBhcmVudGhlc2VzU3VicGF0
dGVybkJlZ2luOgotICAgICAgICAgICAgb3V0LnByaW50KCJPcFBhcmVudGhlc2VzU3VicGF0dGVy
bkJlZ2luICIpOworICAgICAgICBjYXNlIFlhcnJPcENvZGU6OlBhcmVudGhlc2VzU3VicGF0dGVy
bkJlZ2luOgorICAgICAgICAgICAgb3V0LnByaW50KCJQYXJlbnRoZXNlc1N1YnBhdHRlcm5CZWdp
biAiKTsKICAgICAgICAgICAgIGlmICh0ZXJtLT5jYXB0dXJlKCkpCiAgICAgICAgICAgICAgICAg
b3V0LnByaW50ZigiY2FwdHVyaW5nIHBhdHRlcm4gIyV1IiwgdGVybS0+cGFyZW50aGVzZXMuc3Vi
cGF0dGVybklkKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBvdXQucHJpbnQo
Im5vbi1jYXB0dXJpbmciKTsKICAgICAgICAgICAgIHRlcm0tPmR1bXBRdWFudGlmaWVyKG91dCk7
CiAgICAgICAgICAgICBvdXQucHJpbnQoIlxuIik7Ci0gICAgICAgICAgICByZXR1cm4oMCk7Cisg
ICAgICAgICAgICByZXR1cm4gMDsKIAotICAgICAgICBjYXNlIE9wUGFyZW50aGVzZXNTdWJwYXR0
ZXJuRW5kOgotICAgICAgICAgICAgb3V0LnByaW50KCJPcFBhcmVudGhlc2VzU3VicGF0dGVybkVu
ZCAiKTsKKyAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm5FbmQ6
CisgICAgICAgICAgICBvdXQucHJpbnQoIlBhcmVudGhlc2VzU3VicGF0dGVybkVuZCAiKTsKICAg
ICAgICAgICAgIGlmICh0ZXJtLT5jYXB0dXJlKCkpCiAgICAgICAgICAgICAgICAgb3V0LnByaW50
ZigiY2FwdHVyaW5nIHBhdHRlcm4gIyV1IiwgdGVybS0+cGFyZW50aGVzZXMuc3VicGF0dGVybklk
KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIm5vbi1jYXB0
dXJpbmciKTsKICAgICAgICAgICAgIHRlcm0tPmR1bXBRdWFudGlmaWVyKG91dCk7CiAgICAgICAg
ICAgICBvdXQucHJpbnQoIlxuIik7Ci0gICAgICAgICAgICByZXR1cm4oMCk7CisgICAgICAgICAg
ICByZXR1cm4gMDsKIAotICAgICAgICBjYXNlIE9wUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2lu
OgotICAgICAgICAgICAgb3V0LnByaW50ZigiT3BQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW4l
c1xuIiwgdGVybS0+aW52ZXJ0KCkgPyAiIGludmVydGVkIiA6ICIiKTsKLSAgICAgICAgICAgIHJl
dHVybigwKTsKKyAgICAgICAgY2FzZSBZYXJyT3BDb2RlOjpQYXJlbnRoZXRpY2FsQXNzZXJ0aW9u
QmVnaW46CisgICAgICAgICAgICBvdXQucHJpbnRmKCJQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVn
aW4lc1xuIiwgdGVybS0+aW52ZXJ0KCkgPyAiIGludmVydGVkIiA6ICIiKTsKKyAgICAgICAgICAg
IHJldHVybiAwOwogCi0gICAgICAgIGNhc2UgT3BQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uRW5kOgot
ICAgICAgICAgICAgb3V0LnByaW50ZigiT3BQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uRW5kJXNcbiIs
IHRlcm0tPmludmVydCgpID8gIiBpbnZlcnRlZCIgOiAiIik7Ci0gICAgICAgICAgICByZXR1cm4o
MCk7CisgICAgICAgIGNhc2UgWWFyck9wQ29kZTo6UGFyZW50aGV0aWNhbEFzc2VydGlvbkVuZDoK
KyAgICAgICAgICAgIG91dC5wcmludGYoIlBhcmVudGhldGljYWxBc3NlcnRpb25FbmQlc1xuIiwg
dGVybS0+aW52ZXJ0KCkgPyAiIGludmVydGVkIiA6ICIiKTsKKyAgICAgICAgICAgIHJldHVybiAw
OwogCi0gICAgICAgIGNhc2UgT3BNYXRjaEZhaWxlZDoKLSAgICAgICAgICAgIG91dC5wcmludCgi
T3BNYXRjaEZhaWxlZFxuIik7Ci0gICAgICAgICAgICByZXR1cm4oMCk7CisgICAgICAgIGNhc2Ug
WWFyck9wQ29kZTo6TWF0Y2hGYWlsZWQ6CisgICAgICAgICAgICBvdXQucHJpbnQoIk1hdGNoRmFp
bGVkXG4iKTsKKyAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0
dXJuKDApOworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKIHByaXZhdGU6CkBAIC00MTc3LDcg
KzQxNzYsOCBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZv
LCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICBTdHJpbmcmIG1fcGF0dGVyblN0cmluZzsK
IAogICAgIFlhcnJDb2RlQmxvY2smIG1fY29kZUJsb2NrOwotICAgIFlhcnJDaGFyU2l6ZSBtX2No
YXJTaXplOworICAgIENoYXJTaXplIG1fY2hhclNpemU7CisgICAgSklUQ29tcGlsZU1vZGUgbV9j
b21waWxlTW9kZTsKIAogICAgIC8vIFVzZWQgdG8gZGV0ZWN0IHJlZ3VsYXIgZXhwcmVzc2lvbiBj
b25zdHJ1Y3RzIHRoYXQgYXJlIG5vdCBjdXJyZW50bHkKICAgICAvLyBzdXBwb3J0ZWQgaW4gdGhl
IEpJVDsgZmFsbCBiYWNrIHRvIHRoZSBpbnRlcnByZXRlciB3aGVuIHRoaXMgaXMgZGV0ZWN0ZWQu
CkBAIC00MTg1LDcgKzQxODUsNiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGlj
IFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKIAogICAgIGJvb2wgbV9kZWNv
ZGVTdXJyb2dhdGVQYWlyczsKICAgICBib29sIG1fdW5pY29kZUlnbm9yZUNhc2U7Ci0gICAgYm9v
bCBtX2ZpeGVkU2l6ZWRBbHRlcm5hdGl2ZTsKICAgICBDYW5vbmljYWxNb2RlIG1fY2Fub25pY2Fs
TW9kZTsKICNpZiBFTkFCTEUoWUFSUl9KSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUykKICAgICBi
b29sIG1fY29udGFpbnNOZXN0ZWRTdWJwYXR0ZXJuczsKQEAgLTQyNDcsMTMgKzQyNDYsOSBAQCBz
dGF0aWMgdm9pZCBkdW1wQ29tcGlsZUZhaWx1cmUoSklURmFpbHVyZVJlYXNvbiBmYWlsdXJlKQog
ICAgIH0KIH0KIAotdm9pZCBqaXRDb21waWxlKFlhcnJQYXR0ZXJuJiBwYXR0ZXJuLCBTdHJpbmcm
IHBhdHRlcm5TdHJpbmcsIFlhcnJDaGFyU2l6ZSBjaGFyU2l6ZSwgVk0qIHZtLCBZYXJyQ29kZUJs
b2NrJiBjb2RlQmxvY2ssIFlhcnJKSVRDb21waWxlTW9kZSBtb2RlKQordm9pZCBqaXRDb21waWxl
KFlhcnJQYXR0ZXJuJiBwYXR0ZXJuLCBTdHJpbmcmIHBhdHRlcm5TdHJpbmcsIENoYXJTaXplIGNo
YXJTaXplLCBWTSogdm0sIFlhcnJDb2RlQmxvY2smIGNvZGVCbG9jaywgSklUQ29tcGlsZU1vZGUg
bW9kZSkKIHsKLSAgICBpZiAobW9kZSA9PSBNYXRjaE9ubHkpCi0gICAgICAgIFlhcnJHZW5lcmF0
b3I8TWF0Y2hPbmx5Pih2bSwgcGF0dGVybiwgcGF0dGVyblN0cmluZywgY29kZUJsb2NrLCBjaGFy
U2l6ZSkuY29tcGlsZSgpOwotICAgIGVsc2UKLSAgICAgICAgWWFyckdlbmVyYXRvcjxJbmNsdWRl
U3VicGF0dGVybnM+KHZtLCBwYXR0ZXJuLCBwYXR0ZXJuU3RyaW5nLCBjb2RlQmxvY2ssIGNoYXJT
aXplKS5jb21waWxlKCk7Ci0KKyAgICBZYXJyR2VuZXJhdG9yKHZtLCBwYXR0ZXJuLCBwYXR0ZXJu
U3RyaW5nLCBjb2RlQmxvY2ssIGNoYXJTaXplLCBtb2RlKS5jb21waWxlKCk7CiAgICAgaWYgKGF1
dG8gZmFpbHVyZVJlYXNvbiA9IGNvZGVCbG9jay5mYWlsdXJlUmVhc29uKCkpIHsKICAgICAgICAg
aWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1bXBDb21waWxlZFJlZ0V4cFBhdHRlcm5zKCkpKSB7CiAg
ICAgICAgICAgICBwYXR0ZXJuLmR1bXBQYXR0ZXJuU3RyaW5nKFdURjo6ZGF0YUZpbGUoKSwgcGF0
dGVyblN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJy
SklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmgKaW5kZXggM2QyZmM0
YWQ2NjVmMWQxM2E2MzRjOTUxZTAyMjQwN2E3M2RkYzM3ZS4uZWYzOWM4YjQwNDUyZmQ4NWFhYmUz
ZTA3Mjk2NWMwZGYzZGJiMDlmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyckpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaApA
QCAtMTg4LDExICsxODgsMTEgQEAgY2xhc3MgWWFyckNvZGVCbG9jayB7CiAgICAgc3RkOjpvcHRp
b25hbDxKSVRGYWlsdXJlUmVhc29uPiBtX2ZhaWx1cmVSZWFzb247CiB9OwogCi1lbnVtIFlhcnJK
SVRDb21waWxlTW9kZSB7CitlbnVtIGNsYXNzIEpJVENvbXBpbGVNb2RlIDogdWludDhfdCB7CiAg
ICAgTWF0Y2hPbmx5LAogICAgIEluY2x1ZGVTdWJwYXR0ZXJucwogfTsKLXZvaWQgaml0Q29tcGls
ZShZYXJyUGF0dGVybiYsIFN0cmluZyYgcGF0dGVyblN0cmluZywgWWFyckNoYXJTaXplLCBWTSos
IFlhcnJDb2RlQmxvY2smIGppdE9iamVjdCwgWWFyckpJVENvbXBpbGVNb2RlID0gSW5jbHVkZVN1
YnBhdHRlcm5zKTsKK3ZvaWQgaml0Q29tcGlsZShZYXJyUGF0dGVybiYsIFN0cmluZyYgcGF0dGVy
blN0cmluZywgQ2hhclNpemUsIFZNKiwgWWFyckNvZGVCbG9jayYgaml0T2JqZWN0LCBKSVRDb21w
aWxlTW9kZSk7CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpZYXJyCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJQYXJzZXIuaAppbmRleCA5MjE0MmJjODg5YzM3Y2FjZDkzNTAwY2E2YzBj
MWU4NjVmOWQwZjBiLi4zMGVjM2Y4YzhjYjhlYTIzYzZjNTAxOTRkYTU4MDMzZDE2ZGRkM2JiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGFyc2VyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhcnNlci5oCkBAIC02MCw3ICs2MCw3IEBA
IGNsYXNzIFBhcnNlciB7CiAgICAgICAgICAgICA6IG1fZGVsZWdhdGUoZGVsZWdhdGUpCiAgICAg
ICAgICAgICAsIG1fZXJyb3JDb2RlKGVycikKICAgICAgICAgICAgICwgbV9pc1VuaWNvZGUoaXNV
bmljb2RlKQotICAgICAgICAgICAgLCBtX3N0YXRlKEVtcHR5KQorICAgICAgICAgICAgLCBtX3N0
YXRlKENoYXJhY3RlckNsYXNzQ29uc3RydWN0aW9uU3RhdGU6OkVtcHR5KQogICAgICAgICAgICAg
LCBtX2NoYXJhY3RlcigwKQogICAgICAgICB7CiAgICAgICAgIH0KQEAgLTg3LDcgKzg3LDcgQEAg
Y2xhc3MgUGFyc2VyIHsKICAgICAgICAgdm9pZCBhdG9tUGF0dGVybkNoYXJhY3RlcihVQ2hhcjMy
IGNoLCBib29sIGh5cGhlbklzUmFuZ2UgPSBmYWxzZSkKICAgICAgICAgewogICAgICAgICAgICAg
c3dpdGNoIChtX3N0YXRlKSB7Ci0gICAgICAgICAgICBjYXNlIEFmdGVyQ2hhcmFjdGVyQ2xhc3M6
CisgICAgICAgICAgICBjYXNlIENoYXJhY3RlckNsYXNzQ29uc3RydWN0aW9uU3RhdGU6OkFmdGVy
Q2hhcmFjdGVyQ2xhc3M6CiAgICAgICAgICAgICAgICAgLy8gRm9sbG93aW5nIGEgYnVpbHQtaW4g
Y2hhcmFjdGVyIGNsYXNzIHdlIG5lZWQgbG9vayBvdXQgZm9yIGEgaHlwaGVuLgogICAgICAgICAg
ICAgICAgIC8vIFdlJ3JlIGxvb2tpbmcgZm9yIGludmFsaWQgcmFuZ2VzLCBzdWNoIGFzIC9bXGQt
eF0vIG9yIC9bXGQtXGRdLy4KICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBzZWUgYSBoeXBoZW4g
Zm9sbG93aW5nIGEgY2hhcmFjdGVyIGNsYXNzIHRoZW4gdW5saWtlIHVzdWFsCkBAIC05OCw0NCAr
OTgsNDQgQEAgY2xhc3MgUGFyc2VyIHsKICAgICAgICAgICAgICAgICAvLyB0aGUgZW5kIG9mIGEg
cmVnZXguCiAgICAgICAgICAgICAgICAgaWYgKGh5cGhlbklzUmFuZ2UgJiYgY2ggPT0gJy0nKSB7
CiAgICAgICAgICAgICAgICAgICAgIG1fZGVsZWdhdGUuYXRvbUNoYXJhY3RlckNsYXNzQXRvbSgn
LScpOwotICAgICAgICAgICAgICAgICAgICBtX3N0YXRlID0gQWZ0ZXJDaGFyYWN0ZXJDbGFzc0h5
cGhlbjsKKyAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IENoYXJhY3RlckNsYXNzQ29uc3Ry
dWN0aW9uU3RhdGU6OkFmdGVyQ2hhcmFjdGVyQ2xhc3NIeXBoZW47CiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgLy8gT3RoZXJ3
aXNlIGp1c3QgZmFsbCB0aHJvdWdoIC0gY2FjaGVkIGNoYXJhY3RlciBzbyB0cmVhdCB0aGlzIGFz
IEVtcHR5LgorICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZSBqdXN0IGZhbGwgdGhyb3VnaCAt
IGNhY2hlZCBjaGFyYWN0ZXIgc28gdHJlYXQgdGhpcyBhcyBDaGFyYWN0ZXJDbGFzc0NvbnN0cnVj
dGlvblN0YXRlOjpFbXB0eS4KICAgICAgICAgICAgICAgICBGQUxMVEhST1VHSDsKIAotICAgICAg
ICAgICAgY2FzZSBFbXB0eToKKyAgICAgICAgICAgIGNhc2UgQ2hhcmFjdGVyQ2xhc3NDb25zdHJ1
Y3Rpb25TdGF0ZTo6RW1wdHk6CiAgICAgICAgICAgICAgICAgbV9jaGFyYWN0ZXIgPSBjaDsKLSAg
ICAgICAgICAgICAgICBtX3N0YXRlID0gQ2FjaGVkQ2hhcmFjdGVyOworICAgICAgICAgICAgICAg
IG1fc3RhdGUgPSBDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdGlvblN0YXRlOjpDYWNoZWRDaGFyYWN0
ZXI7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBjYXNlIENhY2hlZENo
YXJhY3RlcjoKKyAgICAgICAgICAgIGNhc2UgQ2hhcmFjdGVyQ2xhc3NDb25zdHJ1Y3Rpb25TdGF0
ZTo6Q2FjaGVkQ2hhcmFjdGVyOgogICAgICAgICAgICAgICAgIGlmIChoeXBoZW5Jc1JhbmdlICYm
IGNoID09ICctJykKLSAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IENhY2hlZENoYXJhY3Rl
ckh5cGhlbjsKKyAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IENoYXJhY3RlckNsYXNzQ29u
c3RydWN0aW9uU3RhdGU6OkNhY2hlZENoYXJhY3Rlckh5cGhlbjsKICAgICAgICAgICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgICAgICAgICAgbV9kZWxlZ2F0ZS5hdG9tQ2hhcmFjdGVyQ2xhc3NB
dG9tKG1fY2hhcmFjdGVyKTsKICAgICAgICAgICAgICAgICAgICAgbV9jaGFyYWN0ZXIgPSBjaDsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAg
ICBjYXNlIENhY2hlZENoYXJhY3Rlckh5cGhlbjoKKyAgICAgICAgICAgIGNhc2UgQ2hhcmFjdGVy
Q2xhc3NDb25zdHJ1Y3Rpb25TdGF0ZTo6Q2FjaGVkQ2hhcmFjdGVySHlwaGVuOgogICAgICAgICAg
ICAgICAgIGlmIChjaCA8IG1fY2hhcmFjdGVyKSB7CiAgICAgICAgICAgICAgICAgICAgIG1fZXJy
b3JDb2RlID0gRXJyb3JDb2RlOjpDaGFyYWN0ZXJDbGFzc1JhbmdlT3V0T2ZPcmRlcjsKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICBtX2RlbGVnYXRlLmF0b21DaGFyYWN0ZXJDbGFzc1JhbmdlKG1fY2hhcmFjdGVyLCBjaCk7Ci0g
ICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEVtcHR5OworICAgICAgICAgICAgICAgIG1fc3RhdGUg
PSBDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdGlvblN0YXRlOjpFbXB0eTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBoaXQgdGhpcyBjYXNlLCB3ZSBo
YXZlIGFuIGludmFsaWQgcmFuZ2UgbGlrZSAvW1xkLWFdLy4KICAgICAgICAgICAgICAgICAvLyBT
ZWUgY29tZW50IGluIGF0b21CdWlsdEluQ2hhcmFjdGVyQ2xhc3MoKSBiZWxvdy4KLSAgICAgICAg
ICAgIGNhc2UgQWZ0ZXJDaGFyYWN0ZXJDbGFzc0h5cGhlbjoKKyAgICAgICAgICAgIGNhc2UgQ2hh
cmFjdGVyQ2xhc3NDb25zdHJ1Y3Rpb25TdGF0ZTo6QWZ0ZXJDaGFyYWN0ZXJDbGFzc0h5cGhlbjoK
ICAgICAgICAgICAgICAgICBpZiAobV9pc1VuaWNvZGUpIHsKICAgICAgICAgICAgICAgICAgICAg
bV9lcnJvckNvZGUgPSBFcnJvckNvZGU6OkNoYXJhY3RlckNsYXNzUmFuZ2VJbnZhbGlkOwogICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIG1fZGVsZWdhdGUuYXRvbUNoYXJhY3RlckNsYXNzQXRvbShjaCk7Ci0gICAgICAgICAgICAg
ICAgbV9zdGF0ZSA9IEVtcHR5OworICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBDaGFyYWN0ZXJD
bGFzc0NvbnN0cnVjdGlvblN0YXRlOjpFbXB0eTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE0OCwxNCArMTQ4LDE0IEBAIGNsYXNzIFBhcnNl
ciB7CiAgICAgICAgIHZvaWQgYXRvbUJ1aWx0SW5DaGFyYWN0ZXJDbGFzcyhCdWlsdEluQ2hhcmFj
dGVyQ2xhc3NJRCBjbGFzc0lELCBib29sIGludmVydCkKICAgICAgICAgewogICAgICAgICAgICAg
c3dpdGNoIChtX3N0YXRlKSB7Ci0gICAgICAgICAgICBjYXNlIENhY2hlZENoYXJhY3RlcjoKKyAg
ICAgICAgICAgIGNhc2UgQ2hhcmFjdGVyQ2xhc3NDb25zdHJ1Y3Rpb25TdGF0ZTo6Q2FjaGVkQ2hh
cmFjdGVyOgogICAgICAgICAgICAgICAgIC8vIEZsdXNoIHRoZSBjdXJyZW50bHkgY2FjaGVkIGNo
YXJhY3RlciwgdGhlbiBmYWxsIHRocm91Z2guCiAgICAgICAgICAgICAgICAgbV9kZWxlZ2F0ZS5h
dG9tQ2hhcmFjdGVyQ2xhc3NBdG9tKG1fY2hhcmFjdGVyKTsKICAgICAgICAgICAgICAgICBGQUxM
VEhST1VHSDsKLSAgICAgICAgICAgIGNhc2UgRW1wdHk6Ci0gICAgICAgICAgICBjYXNlIEFmdGVy
Q2hhcmFjdGVyQ2xhc3M6CisgICAgICAgICAgICBjYXNlIENoYXJhY3RlckNsYXNzQ29uc3RydWN0
aW9uU3RhdGU6OkVtcHR5OgorICAgICAgICAgICAgY2FzZSBDaGFyYWN0ZXJDbGFzc0NvbnN0cnVj
dGlvblN0YXRlOjpBZnRlckNoYXJhY3RlckNsYXNzOgogICAgICAgICAgICAgICAgIG1fZGVsZWdh
dGUuYXRvbUNoYXJhY3RlckNsYXNzQnVpbHRJbihjbGFzc0lELCBpbnZlcnQpOwotICAgICAgICAg
ICAgICAgIG1fc3RhdGUgPSBBZnRlckNoYXJhY3RlckNsYXNzOworICAgICAgICAgICAgICAgIG1f
c3RhdGUgPSBDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdGlvblN0YXRlOjpBZnRlckNoYXJhY3RlckNs
YXNzOwogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgICAgIC8vIElmIHdl
IGhpdCBlaXRoZXIgb2YgdGhlc2UgY2FzZXMsIHdlIGhhdmUgYW4gaW52YWxpZCByYW5nZSB0aGF0
CkBAIC0xNjYsMTcgKzE2NiwxNyBAQCBjbGFzcyBQYXJzZXIgewogICAgICAgICAgICAgICAgIC8v
IGUuZy4gL1tcZC1hLXpdLyBpcyB0cmVhdGVkIGFzIC9bXGRcLWFcLXpdLy4KICAgICAgICAgICAg
ICAgICAvLyBTZWUgdXNhZ2VzIG9mIENoYXJhY3RlclJhbmdlT3JVbmlvbiBhYnN0cmFjdCBvcCBp
bgogICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcmVndWxh
ci1leHByZXNzaW9uLXBhdHRlcm5zLXNlbWFudGljcwotICAgICAgICAgICAgY2FzZSBDYWNoZWRD
aGFyYWN0ZXJIeXBoZW46CisgICAgICAgICAgICBjYXNlIENoYXJhY3RlckNsYXNzQ29uc3RydWN0
aW9uU3RhdGU6OkNhY2hlZENoYXJhY3Rlckh5cGhlbjoKICAgICAgICAgICAgICAgICBtX2RlbGVn
YXRlLmF0b21DaGFyYWN0ZXJDbGFzc0F0b20obV9jaGFyYWN0ZXIpOwogICAgICAgICAgICAgICAg
IG1fZGVsZWdhdGUuYXRvbUNoYXJhY3RlckNsYXNzQXRvbSgnLScpOwogICAgICAgICAgICAgICAg
IEZBTExUSFJPVUdIOwotICAgICAgICAgICAgY2FzZSBBZnRlckNoYXJhY3RlckNsYXNzSHlwaGVu
OgorICAgICAgICAgICAgY2FzZSBDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdGlvblN0YXRlOjpBZnRl
ckNoYXJhY3RlckNsYXNzSHlwaGVuOgogICAgICAgICAgICAgICAgIGlmIChtX2lzVW5pY29kZSkg
ewogICAgICAgICAgICAgICAgICAgICBtX2Vycm9yQ29kZSA9IEVycm9yQ29kZTo6Q2hhcmFjdGVy
Q2xhc3NSYW5nZUludmFsaWQ7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgbV9kZWxlZ2F0ZS5hdG9tQ2hhcmFjdGVyQ2xhc3NC
dWlsdEluKGNsYXNzSUQsIGludmVydCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEVtcHR5
OworICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdGlvblN0
YXRlOjpFbXB0eTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KQEAgLTE4OCw5ICsxODgsOSBAQCBjbGFzcyBQYXJzZXIgewogICAgICAgICAgKi8KICAg
ICAgICAgdm9pZCBlbmQoKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobV9zdGF0ZSA9PSBD
YWNoZWRDaGFyYWN0ZXIpCisgICAgICAgICAgICBpZiAobV9zdGF0ZSA9PSBDaGFyYWN0ZXJDbGFz
c0NvbnN0cnVjdGlvblN0YXRlOjpDYWNoZWRDaGFyYWN0ZXIpCiAgICAgICAgICAgICAgICAgbV9k
ZWxlZ2F0ZS5hdG9tQ2hhcmFjdGVyQ2xhc3NBdG9tKG1fY2hhcmFjdGVyKTsKLSAgICAgICAgICAg
IGVsc2UgaWYgKG1fc3RhdGUgPT0gQ2FjaGVkQ2hhcmFjdGVySHlwaGVuKSB7CisgICAgICAgICAg
ICBlbHNlIGlmIChtX3N0YXRlID09IENoYXJhY3RlckNsYXNzQ29uc3RydWN0aW9uU3RhdGU6OkNh
Y2hlZENoYXJhY3Rlckh5cGhlbikgewogICAgICAgICAgICAgICAgIG1fZGVsZWdhdGUuYXRvbUNo
YXJhY3RlckNsYXNzQXRvbShtX2NoYXJhY3Rlcik7CiAgICAgICAgICAgICAgICAgbV9kZWxlZ2F0
ZS5hdG9tQ2hhcmFjdGVyQ2xhc3NBdG9tKCctJyk7CiAgICAgICAgICAgICB9CkBAIC0yMDgsMTMg
KzIwOCwxNCBAQCBjbGFzcyBQYXJzZXIgewogICAgICAgICBEZWxlZ2F0ZSYgbV9kZWxlZ2F0ZTsK
ICAgICAgICAgRXJyb3JDb2RlJiBtX2Vycm9yQ29kZTsKICAgICAgICAgYm9vbCBtX2lzVW5pY29k
ZTsKLSAgICAgICAgZW51bSBDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdGlvblN0YXRlIHsKKyAgICAg
ICAgZW51bSBjbGFzcyBDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdGlvblN0YXRlIHsKICAgICAgICAg
ICAgIEVtcHR5LAogICAgICAgICAgICAgQ2FjaGVkQ2hhcmFjdGVyLAogICAgICAgICAgICAgQ2Fj
aGVkQ2hhcmFjdGVySHlwaGVuLAogICAgICAgICAgICAgQWZ0ZXJDaGFyYWN0ZXJDbGFzcywKICAg
ICAgICAgICAgIEFmdGVyQ2hhcmFjdGVyQ2xhc3NIeXBoZW4sCi0gICAgICAgIH0gbV9zdGF0ZTsK
KyAgICAgICAgfTsKKyAgICAgICAgQ2hhcmFjdGVyQ2xhc3NDb25zdHJ1Y3Rpb25TdGF0ZSBtX3N0
YXRlOwogICAgICAgICBVQ2hhcjMyIG1fY2hhcmFjdGVyOwogICAgIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAppbmRleCA5Y2JiZTkwY2IzZTlhMTYwZGYz
MzFjYjY5ZTBmZTI0ZDQwODA4OWE2Li4xY2FjYWZjNDE3ZWJmMTRmOTQ4MWY1OTk0NDMyZTIwMzU0
NmVhOWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVy
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCkBA
IC01OTYsNyArNTk2LDcgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7CiAgICAgICAg
ICAgICBBU1NFUlQoIW9wdEdyb3VwTmFtZSk7CiAKICAgICAgICAgYXV0byBwYXJlbnRoZXNlc0Rp
c2p1bmN0aW9uID0gbWFrZVVuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KG1fYWx0ZXJuYXRpdmUp
OwotICAgICAgICBtX2FsdGVybmF0aXZlLT5tX3Rlcm1zLmFwcGVuZChQYXR0ZXJuVGVybShQYXR0
ZXJuVGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVybiwgc3VicGF0dGVybklkLCBwYXJlbnRo
ZXNlc0Rpc2p1bmN0aW9uLmdldCgpLCBjYXB0dXJlLCBmYWxzZSkpOworICAgICAgICBtX2FsdGVy
bmF0aXZlLT5tX3Rlcm1zLmFwcGVuZChQYXR0ZXJuVGVybShQYXR0ZXJuVGVybTo6VHlwZTo6UGFy
ZW50aGVzZXNTdWJwYXR0ZXJuLCBzdWJwYXR0ZXJuSWQsIHBhcmVudGhlc2VzRGlzanVuY3Rpb24u
Z2V0KCksIGNhcHR1cmUsIGZhbHNlKSk7CiAgICAgICAgIG1fYWx0ZXJuYXRpdmUgPSBwYXJlbnRo
ZXNlc0Rpc2p1bmN0aW9uLT5hZGROZXdBbHRlcm5hdGl2ZSgpOwogICAgICAgICBtX3BhdHRlcm4u
bV9kaXNqdW5jdGlvbnMuYXBwZW5kKFdURk1vdmUocGFyZW50aGVzZXNEaXNqdW5jdGlvbikpOwog
ICAgIH0KQEAgLTYwNCw3ICs2MDQsNyBAQCBjbGFzcyBZYXJyUGF0dGVybkNvbnN0cnVjdG9yIHsK
ICAgICB2b2lkIGF0b21QYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW4oYm9vbCBpbnZlcnQgPSBm
YWxzZSkKICAgICB7CiAgICAgICAgIGF1dG8gcGFyZW50aGVzZXNEaXNqdW5jdGlvbiA9IG1ha2VV
bmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPihtX2FsdGVybmF0aXZlKTsKLSAgICAgICAgbV9hbHRl
cm5hdGl2ZS0+bV90ZXJtcy5hcHBlbmQoUGF0dGVyblRlcm0oUGF0dGVyblRlcm06OlR5cGVQYXJl
bnRoZXRpY2FsQXNzZXJ0aW9uLCBtX3BhdHRlcm4ubV9udW1TdWJwYXR0ZXJucyArIDEsIHBhcmVu
dGhlc2VzRGlzanVuY3Rpb24uZ2V0KCksIGZhbHNlLCBpbnZlcnQpKTsKKyAgICAgICAgbV9hbHRl
cm5hdGl2ZS0+bV90ZXJtcy5hcHBlbmQoUGF0dGVyblRlcm0oUGF0dGVyblRlcm06OlR5cGU6OlBh
cmVudGhldGljYWxBc3NlcnRpb24sIG1fcGF0dGVybi5tX251bVN1YnBhdHRlcm5zICsgMSwgcGFy
ZW50aGVzZXNEaXNqdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGludmVydCkpOwogICAgICAgICBtX2Fs
dGVybmF0aXZlID0gcGFyZW50aGVzZXNEaXNqdW5jdGlvbi0+YWRkTmV3QWx0ZXJuYXRpdmUoKTsK
ICAgICAgICAgbV9pbnZlcnRQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uID0gaW52ZXJ0OwogICAgICAg
ICBtX3BhdHRlcm4ubV9kaXNqdW5jdGlvbnMuYXBwZW5kKFdURk1vdmUocGFyZW50aGVzZXNEaXNq
dW5jdGlvbikpOwpAQCAtNjU2LDkgKzY1Niw5IEBAIGNsYXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0
b3IgewogICAgICAgICAvLyBOb3RlIHRvIHNlbGY6IGlmIHdlIHdhaXRlZCB1bnRpbCB0aGUgQVNU
IHdhcyBiYWtlZCwgd2UgY291bGQgYWxzbyByZW1vdmUgZm9yd2FyZHMgcmVmcyAKICAgICAgICAg
d2hpbGUgKChjdXJyZW50QWx0ZXJuYXRpdmUgPSBjdXJyZW50QWx0ZXJuYXRpdmUtPm1fcGFyZW50
LT5tX3BhcmVudCkpIHsKICAgICAgICAgICAgIFBhdHRlcm5UZXJtJiB0ZXJtID0gY3VycmVudEFs
dGVybmF0aXZlLT5sYXN0VGVybSgpOwotICAgICAgICAgICAgQVNTRVJUKCh0ZXJtLnR5cGUgPT0g
UGF0dGVyblRlcm06OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm4pIHx8ICh0ZXJtLnR5cGUgPT0g
UGF0dGVyblRlcm06OlR5cGVQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uKSk7CisgICAgICAgICAgICBB
U1NFUlQoKHRlcm0udHlwZSA9PSBQYXR0ZXJuVGVybTo6VHlwZTo6UGFyZW50aGVzZXNTdWJwYXR0
ZXJuKSB8fCAodGVybS50eXBlID09IFBhdHRlcm5UZXJtOjpUeXBlOjpQYXJlbnRoZXRpY2FsQXNz
ZXJ0aW9uKSk7CiAKLSAgICAgICAgICAgIGlmICgodGVybS50eXBlID09IFBhdHRlcm5UZXJtOjpU
eXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuKSAmJiB0ZXJtLmNhcHR1cmUoKSAmJiAoc3VicGF0dGVy
bklkID09IHRlcm0ucGFyZW50aGVzZXMuc3VicGF0dGVybklkKSkgeworICAgICAgICAgICAgaWYg
KCh0ZXJtLnR5cGUgPT0gUGF0dGVyblRlcm06OlR5cGU6OlBhcmVudGhlc2VzU3VicGF0dGVybikg
JiYgdGVybS5jYXB0dXJlKCkgJiYgKHN1YnBhdHRlcm5JZCA9PSB0ZXJtLnBhcmVudGhlc2VzLnN1
YnBhdHRlcm5JZCkpIHsKICAgICAgICAgICAgICAgICBtX2FsdGVybmF0aXZlLT5tX3Rlcm1zLmFw
cGVuZChQYXR0ZXJuVGVybTo6Rm9yd2FyZFJlZmVyZW5jZSgpKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICB9CkBAIC03MjIsNyArNzIyLDcgQEAgY2xhc3MgWWFyclBhdHRl
cm5Db25zdHJ1Y3RvciB7CiAgICAgICAgICAgICByZXR1cm4gUGF0dGVyblRlcm0odGVybSk7CiAg
ICAgICAgIH0KIAotICAgICAgICBpZiAoKHRlcm0udHlwZSAhPSBQYXR0ZXJuVGVybTo6VHlwZVBh
cmVudGhlc2VzU3VicGF0dGVybikgJiYgKHRlcm0udHlwZSAhPSBQYXR0ZXJuVGVybTo6VHlwZVBh
cmVudGhldGljYWxBc3NlcnRpb24pKQorICAgICAgICBpZiAoKHRlcm0udHlwZSAhPSBQYXR0ZXJu
VGVybTo6VHlwZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuKSAmJiAodGVybS50eXBlICE9IFBhdHRl
cm5UZXJtOjpUeXBlOjpQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uKSkKICAgICAgICAgICAgIHJldHVy
biBQYXR0ZXJuVGVybSh0ZXJtKTsKICAgICAgICAgCiAgICAgICAgIFBhdHRlcm5UZXJtIHRlcm1D
b3B5ID0gdGVybTsKQEAgLTc0MiwxMCArNzQyLDEwIEBAIGNsYXNzIFlhcnJQYXR0ZXJuQ29uc3Ry
dWN0b3IgewogICAgICAgICB9CiAKICAgICAgICAgUGF0dGVyblRlcm0mIHRlcm0gPSBtX2FsdGVy
bmF0aXZlLT5sYXN0VGVybSgpOwotICAgICAgICBBU1NFUlQodGVybS50eXBlID4gUGF0dGVyblRl
cm06OlR5cGVBc3NlcnRpb25Xb3JkQm91bmRhcnkpOwotICAgICAgICBBU1NFUlQodGVybS5xdWFu
dGl0eU1pbkNvdW50ID09IDEgJiYgdGVybS5xdWFudGl0eU1heENvdW50ID09IDEgJiYgdGVybS5x
dWFudGl0eVR5cGUgPT0gUXVhbnRpZmllckZpeGVkQ291bnQpOworICAgICAgICBBU1NFUlQodGVy
bS50eXBlID4gUGF0dGVyblRlcm06OlR5cGU6OkFzc2VydGlvbldvcmRCb3VuZGFyeSk7CisgICAg
ICAgIEFTU0VSVCh0ZXJtLnF1YW50aXR5TWluQ291bnQgPT0gMSAmJiB0ZXJtLnF1YW50aXR5TWF4
Q291bnQgPT0gMSAmJiB0ZXJtLnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRD
b3VudCk7CiAKLSAgICAgICAgaWYgKHRlcm0udHlwZSA9PSBQYXR0ZXJuVGVybTo6VHlwZVBhcmVu
dGhldGljYWxBc3NlcnRpb24pIHsKKyAgICAgICAgaWYgKHRlcm0udHlwZSA9PSBQYXR0ZXJuVGVy
bTo6VHlwZTo6UGFyZW50aGV0aWNhbEFzc2VydGlvbikgewogICAgICAgICAgICAgLy8gSWYgYW4g
YXNzZXJ0aW9uIGlzIHF1YW50aWZpZWQgd2l0aCBhIG1pbmltdW0gY291bnQgb2YgemVybywgaXQg
Y2FuIHNpbXBseSBiZSByZW1vdmVkLgogICAgICAgICAgICAgLy8gVGhpcyBhcmlzZXMgZnJvbSB0
aGUgUmVwZWF0TWF0Y2hlciBiZWhhdmlvdXIgaW4gdGhlIHNwZWMuIE1hdGNoaW5nIGFuIGFzc2Vy
dGlvbiBuZXZlcgogICAgICAgICAgICAgLy8gcmVzdWx0cyBpbiBhbnkgaW5wdXQgYmVpbmcgY29u
c3VtZWQsIGhvd2V2ZXIgdGhlIGNvbnRpbnVhdGlvbiBwYXNzZWQgdG8gdGhlIGFzc2VydGlvbgpA
QCAtNzY2LDE1ICs3NjYsMTUgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7CiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAobWluID09IG1heCkKLSAgICAgICAgICAgIHRlcm0ucXVhbnRp
ZnkobWluLCBtYXgsIFF1YW50aWZpZXJGaXhlZENvdW50KTsKLSAgICAgICAgZWxzZSBpZiAoIW1p
biB8fCAodGVybS50eXBlID09IFBhdHRlcm5UZXJtOjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJu
ICYmIG1fcGF0dGVybi5tX2hhc0NvcGllZFBhcmVuU3ViZXhwcmVzc2lvbnMpKQotICAgICAgICAg
ICAgdGVybS5xdWFudGlmeShtaW4sIG1heCwgZ3JlZWR5ID8gUXVhbnRpZmllckdyZWVkeSA6IFF1
YW50aWZpZXJOb25HcmVlZHkpOworICAgICAgICAgICAgdGVybS5xdWFudGlmeShtaW4sIG1heCwg
UXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQpOworICAgICAgICBlbHNlIGlmICghbWluIHx8ICh0
ZXJtLnR5cGUgPT0gUGF0dGVyblRlcm06OlR5cGU6OlBhcmVudGhlc2VzU3VicGF0dGVybiAmJiBt
X3BhdHRlcm4ubV9oYXNDb3BpZWRQYXJlblN1YmV4cHJlc3Npb25zKSkKKyAgICAgICAgICAgIHRl
cm0ucXVhbnRpZnkobWluLCBtYXgsIGdyZWVkeSA/IFF1YW50aWZpZXJUeXBlOjpHcmVlZHkgOiBR
dWFudGlmaWVyVHlwZTo6Tm9uR3JlZWR5KTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB0
ZXJtLnF1YW50aWZ5KG1pbiwgbWluLCBRdWFudGlmaWVyRml4ZWRDb3VudCk7CisgICAgICAgICAg
ICB0ZXJtLnF1YW50aWZ5KG1pbiwgbWluLCBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudCk7CiAg
ICAgICAgICAgICBtX2FsdGVybmF0aXZlLT5tX3Rlcm1zLmFwcGVuZChjb3B5VGVybSh0ZXJtKSk7
CiAgICAgICAgICAgICAvLyBOT1RFOiB0aGlzIHRlcm0gaXMgaW50ZXJlc3RpbmcgZnJvbSBhbiBh
bmFseXNpcyBwZXJzcGVjdGl2ZSwgaW4gdGhhdCBpdCBjYW4gYmUgaWdub3JlZC4uLi4uCi0gICAg
ICAgICAgICBtX2FsdGVybmF0aXZlLT5sYXN0VGVybSgpLnF1YW50aWZ5KChtYXggPT0gcXVhbnRp
ZnlJbmZpbml0ZSkgPyBtYXggOiBtYXggLSBtaW4sIGdyZWVkeSA/IFF1YW50aWZpZXJHcmVlZHkg
OiBRdWFudGlmaWVyTm9uR3JlZWR5KTsKLSAgICAgICAgICAgIGlmIChtX2FsdGVybmF0aXZlLT5s
YXN0VGVybSgpLnR5cGUgPT0gUGF0dGVyblRlcm06OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm4p
CisgICAgICAgICAgICBtX2FsdGVybmF0aXZlLT5sYXN0VGVybSgpLnF1YW50aWZ5KChtYXggPT0g
cXVhbnRpZnlJbmZpbml0ZSkgPyBtYXggOiBtYXggLSBtaW4sIGdyZWVkeSA/IFF1YW50aWZpZXJU
eXBlOjpHcmVlZHkgOiBRdWFudGlmaWVyVHlwZTo6Tm9uR3JlZWR5KTsKKyAgICAgICAgICAgIGlm
IChtX2FsdGVybmF0aXZlLT5sYXN0VGVybSgpLnR5cGUgPT0gUGF0dGVyblRlcm06OlR5cGU6OlBh
cmVudGhlc2VzU3VicGF0dGVybikKICAgICAgICAgICAgICAgICBtX2FsdGVybmF0aXZlLT5sYXN0
VGVybSgpLnBhcmVudGhlc2VzLmlzQ29weSA9IHRydWU7CiAgICAgICAgIH0KICAgICB9CkBAIC03
OTcsMjUgKzc5NywyNSBAQCBjbGFzcyBZYXJyUGF0dGVybkNvbnN0cnVjdG9yIHsKICAgICAgICAg
ICAgIFBhdHRlcm5UZXJtJiB0ZXJtID0gYWx0ZXJuYXRpdmUtPm1fdGVybXNbaV07CiAKICAgICAg
ICAgICAgIHN3aXRjaCAodGVybS50eXBlKSB7Ci0gICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJt
OjpUeXBlQXNzZXJ0aW9uQk9MOgotICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZUFz
c2VydGlvbkVPTDoKLSAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGVBc3NlcnRpb25X
b3JkQm91bmRhcnk6CisgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpBc3NlcnRp
b25CT0w6CisgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpBc3NlcnRpb25FT0w6
CisgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpBc3NlcnRpb25Xb3JkQm91bmRh
cnk6CiAgICAgICAgICAgICAgICAgdGVybS5pbnB1dFBvc2l0aW9uID0gY3VycmVudElucHV0UG9z
aXRpb247CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIGNhc2UgUGF0dGVy
blRlcm06OlR5cGVCYWNrUmVmZXJlbmNlOgorICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6
VHlwZTo6QmFja1JlZmVyZW5jZToKICAgICAgICAgICAgICAgICB0ZXJtLmlucHV0UG9zaXRpb24g
PSBjdXJyZW50SW5wdXRQb3NpdGlvbjsKICAgICAgICAgICAgICAgICB0ZXJtLmZyYW1lTG9jYXRp
b24gPSBjdXJyZW50Q2FsbEZyYW1lU2l6ZTsKICAgICAgICAgICAgICAgICBjdXJyZW50Q2FsbEZy
YW1lU2l6ZSArPSBZYXJyU3RhY2tTcGFjZUZvckJhY2tUcmFja0luZm9CYWNrUmVmZXJlbmNlOwog
ICAgICAgICAgICAgICAgIGFsdGVybmF0aXZlLT5tX2hhc0ZpeGVkU2l6ZSA9IGZhbHNlOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBl
Rm9yd2FyZFJlZmVyZW5jZToKKyAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkZv
cndhcmRSZWZlcmVuY2U6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIGNh
c2UgUGF0dGVyblRlcm06OlR5cGVQYXR0ZXJuQ2hhcmFjdGVyOgorICAgICAgICAgICAgY2FzZSBQ
YXR0ZXJuVGVybTo6VHlwZTo6UGF0dGVybkNoYXJhY3RlcjoKICAgICAgICAgICAgICAgICB0ZXJt
LmlucHV0UG9zaXRpb24gPSBjdXJyZW50SW5wdXRQb3NpdGlvbjsKLSAgICAgICAgICAgICAgICBp
ZiAodGVybS5xdWFudGl0eVR5cGUgIT0gUXVhbnRpZmllckZpeGVkQ291bnQpIHsKKyAgICAgICAg
ICAgICAgICBpZiAodGVybS5xdWFudGl0eVR5cGUgIT0gUXVhbnRpZmllclR5cGU6OkZpeGVkQ291
bnQpIHsKICAgICAgICAgICAgICAgICAgICAgdGVybS5mcmFtZUxvY2F0aW9uID0gY3VycmVudENh
bGxGcmFtZVNpemU7CiAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDYWxsRnJhbWVTaXplICs9
IFlhcnJTdGFja1NwYWNlRm9yQmFja1RyYWNrSW5mb1BhdHRlcm5DaGFyYWN0ZXI7CiAgICAgICAg
ICAgICAgICAgICAgIGFsdGVybmF0aXZlLT5tX2hhc0ZpeGVkU2l6ZSA9IGZhbHNlOwpAQCAtODI5
LDkgKzgyOSw5IEBAIGNsYXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAgICAgICAgICAg
ICAgICAgICBjdXJyZW50SW5wdXRQb3NpdGlvbiArPSB0ZXJtLnF1YW50aXR5TWF4Q291bnQ7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5
cGVDaGFyYWN0ZXJDbGFzczoKKyAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkNo
YXJhY3RlckNsYXNzOgogICAgICAgICAgICAgICAgIHRlcm0uaW5wdXRQb3NpdGlvbiA9IGN1cnJl
bnRJbnB1dFBvc2l0aW9uOwotICAgICAgICAgICAgICAgIGlmICh0ZXJtLnF1YW50aXR5VHlwZSAh
PSBRdWFudGlmaWVyRml4ZWRDb3VudCkgeworICAgICAgICAgICAgICAgIGlmICh0ZXJtLnF1YW50
aXR5VHlwZSAhPSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudCkgewogICAgICAgICAgICAgICAg
ICAgICB0ZXJtLmZyYW1lTG9jYXRpb24gPSBjdXJyZW50Q2FsbEZyYW1lU2l6ZTsKICAgICAgICAg
ICAgICAgICAgICAgY3VycmVudENhbGxGcmFtZVNpemUgKz0gWWFyclN0YWNrU3BhY2VGb3JCYWNr
VHJhY2tJbmZvQ2hhcmFjdGVyQ2xhc3M7CiAgICAgICAgICAgICAgICAgICAgIGFsdGVybmF0aXZl
LT5tX2hhc0ZpeGVkU2l6ZSA9IGZhbHNlOwpAQCAtODUyLDcgKzg1Miw3IEBAIGNsYXNzIFlhcnJQ
YXR0ZXJuQ29uc3RydWN0b3IgewogICAgICAgICAgICAgICAgICAgICBjdXJyZW50SW5wdXRQb3Np
dGlvbiArPSB0ZXJtLnF1YW50aXR5TWF4Q291bnQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAK
LSAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm46
CisgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpQYXJlbnRoZXNlc1N1YnBhdHRl
cm46CiAgICAgICAgICAgICAgICAgLy8gTm90ZTogZm9yIGZpeGVkIG9uY2UgcGFyZW50aGVzZXMg
d2Ugd2lsbCBlbnN1cmUgYXQgbGVhc3QgdGhlIG1pbmltdW0gaXMgYXZhaWxhYmxlOyBvdGhlcnMg
YXJlIG9uIHRoZWlyIG93bi4KICAgICAgICAgICAgICAgICB0ZXJtLmZyYW1lTG9jYXRpb24gPSBj
dXJyZW50Q2FsbEZyYW1lU2l6ZTsKICAgICAgICAgICAgICAgICBpZiAodGVybS5xdWFudGl0eU1h
eENvdW50ID09IDEgJiYgIXRlcm0ucGFyZW50aGVzZXMuaXNDb3B5KSB7CkBAIC04NjEsNyArODYx
LDcgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChoYXNFcnJvcihlcnJvcikpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJy
b3I7CiAgICAgICAgICAgICAgICAgICAgIC8vIElmIHF1YW50aXR5IGlzIGZpeGVkLCB0aGVuIHBy
ZS1jaGVjayBpdHMgbWluaW11bSBzaXplLgotICAgICAgICAgICAgICAgICAgICBpZiAodGVybS5x
dWFudGl0eVR5cGUgPT0gUXVhbnRpZmllckZpeGVkQ291bnQpCisgICAgICAgICAgICAgICAgICAg
IGlmICh0ZXJtLnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudCkKICAg
ICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRJbnB1dFBvc2l0aW9uICs9IHRlcm0ucGFyZW50
aGVzZXMuZGlzanVuY3Rpb24tPm1fbWluaW11bVNpemU7CiAgICAgICAgICAgICAgICAgICAgIHRl
cm0uaW5wdXRQb3NpdGlvbiA9IGN1cnJlbnRJbnB1dFBvc2l0aW9uOwogICAgICAgICAgICAgICAg
IH0gZWxzZSBpZiAodGVybS5wYXJlbnRoZXNlcy5pc1Rlcm1pbmFsKSB7CkBAIC04ODEsNyArODgx
LDcgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7CiAgICAgICAgICAgICAgICAgYWx0
ZXJuYXRpdmUtPm1faGFzRml4ZWRTaXplID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAKLSAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGVQYXJlbnRoZXRpY2FsQXNzZXJ0
aW9uOgorICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6UGFyZW50aGV0aWNhbEFz
c2VydGlvbjoKICAgICAgICAgICAgICAgICB0ZXJtLmlucHV0UG9zaXRpb24gPSBjdXJyZW50SW5w
dXRQb3NpdGlvbjsKICAgICAgICAgICAgICAgICB0ZXJtLmZyYW1lTG9jYXRpb24gPSBjdXJyZW50
Q2FsbEZyYW1lU2l6ZTsKICAgICAgICAgICAgICAgICBlcnJvciA9IHNldHVwRGlzanVuY3Rpb25P
ZmZzZXRzKHRlcm0ucGFyZW50aGVzZXMuZGlzanVuY3Rpb24sIGN1cnJlbnRDYWxsRnJhbWVTaXpl
ICsgWWFyclN0YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZvUGFyZW50aGV0aWNhbEFzc2VydGlvbiwg
Y3VycmVudElucHV0UG9zaXRpb24sIGN1cnJlbnRDYWxsRnJhbWVTaXplKTsKQEAgLTg4OSw3ICs4
ODksNyBAQCBjbGFzcyBZYXJyUGF0dGVybkNvbnN0cnVjdG9yIHsKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGVycm9yOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICBj
YXNlIFBhdHRlcm5UZXJtOjpUeXBlRG90U3RhckVuY2xvc3VyZToKKyAgICAgICAgICAgIGNhc2Ug
UGF0dGVyblRlcm06OlR5cGU6OkRvdFN0YXJFbmNsb3N1cmU6CiAgICAgICAgICAgICAgICAgQVNT
RVJUKCFtX3BhdHRlcm4ubV9zYXZlSW5pdGlhbFN0YXJ0VmFsdWUpOwogICAgICAgICAgICAgICAg
IGFsdGVybmF0aXZlLT5tX2hhc0ZpeGVkU2l6ZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgIHRl
cm0uaW5wdXRQb3NpdGlvbiA9IGluaXRpYWxJbnB1dFBvc2l0aW9uOwpAQCAtOTY4LDggKzk2OCw4
IEBAIGNsYXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAgICAgICAgICAgVmVjdG9yPFBh
dHRlcm5UZXJtPiYgdGVybXMgPSBhbHRlcm5hdGl2ZXNbaV0tPm1fdGVybXM7CiAgICAgICAgICAg
ICBpZiAodGVybXMuc2l6ZSgpKSB7CiAgICAgICAgICAgICAgICAgUGF0dGVyblRlcm0mIHRlcm0g
PSB0ZXJtcy5sYXN0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKHRlcm0udHlwZSA9PSBQYXR0ZXJu
VGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVybgotICAgICAgICAgICAgICAgICAgICAmJiB0
ZXJtLnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyR3JlZWR5CisgICAgICAgICAgICAgICAgaWYg
KHRlcm0udHlwZSA9PSBQYXR0ZXJuVGVybTo6VHlwZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuCisg
ICAgICAgICAgICAgICAgICAgICYmIHRlcm0ucXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJUeXBl
OjpHcmVlZHkKICAgICAgICAgICAgICAgICAgICAgJiYgdGVybS5xdWFudGl0eU1pbkNvdW50ID09
IDAKICAgICAgICAgICAgICAgICAgICAgJiYgdGVybS5xdWFudGl0eU1heENvdW50ID09IHF1YW50
aWZ5SW5maW5pdGUKICAgICAgICAgICAgICAgICAgICAgJiYgIXRlcm0uY2FwdHVyZSgpKQpAQCAt
MTAxNiw3ICsxMDE2LDcgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7CiAgICAgICAg
ICAgICBpZiAodGVybS5tX2NhcHR1cmUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAK
LSAgICAgICAgICAgIGlmICh0ZXJtLnR5cGUgPT0gUGF0dGVyblRlcm06OlR5cGVQYXJlbnRoZXNl
c1N1YnBhdHRlcm4pIHsKKyAgICAgICAgICAgIGlmICh0ZXJtLnR5cGUgPT0gUGF0dGVyblRlcm06
OlR5cGU6OlBhcmVudGhlc2VzU3VicGF0dGVybikgewogICAgICAgICAgICAgICAgIFBhdHRlcm5E
aXNqdW5jdGlvbiogbmVzdGVkRGlzanVuY3Rpb24gPSB0ZXJtLnBhcmVudGhlc2VzLmRpc2p1bmN0
aW9uOwogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgYWx0ID0gMDsgYWx0IDwgbmVzdGVk
RGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzLnNpemUoKTsgKythbHQpIHsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKGNvbnRhaW5zQ2FwdHVyaW5nVGVybXMobmVzdGVkRGlzanVuY3Rpb24tPm1f
YWx0ZXJuYXRpdmVzW2FsdF0uZ2V0KCksIDAsIG5lc3RlZERpc2p1bmN0aW9uLT5tX2FsdGVybmF0
aXZlc1thbHRdLT5tX3Rlcm1zLnNpemUoKSkpCkBAIC0xMDQ4LDEzICsxMDQ4LDEzIEBAIGNsYXNz
IFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAgICAgICAgICAgc2l6ZV90IHRlcm1JbmRleCwg
Zmlyc3RFeHByZXNzaW9uVGVybTsKIAogICAgICAgICAgICAgdGVybUluZGV4ID0gMDsKLSAgICAg
ICAgICAgIGlmICh0ZXJtc1t0ZXJtSW5kZXhdLnR5cGUgPT0gUGF0dGVyblRlcm06OlR5cGVBc3Nl
cnRpb25CT0wpIHsKKyAgICAgICAgICAgIGlmICh0ZXJtc1t0ZXJtSW5kZXhdLnR5cGUgPT0gUGF0
dGVyblRlcm06OlR5cGU6OkFzc2VydGlvbkJPTCkgewogICAgICAgICAgICAgICAgIHN0YXJ0c1dp
dGhCT0wgPSB0cnVlOwogICAgICAgICAgICAgICAgICsrdGVybUluZGV4OwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgCiAgICAgICAgICAgICBQYXR0ZXJuVGVybSYgZmlyc3ROb25BbmNob3JU
ZXJtID0gdGVybXNbdGVybUluZGV4XTsKLSAgICAgICAgICAgIGlmIChmaXJzdE5vbkFuY2hvclRl
cm0udHlwZSAhPSBQYXR0ZXJuVGVybTo6VHlwZUNoYXJhY3RlckNsYXNzCisgICAgICAgICAgICBp
ZiAoZmlyc3ROb25BbmNob3JUZXJtLnR5cGUgIT0gUGF0dGVyblRlcm06OlR5cGU6OkNoYXJhY3Rl
ckNsYXNzCiAgICAgICAgICAgICAgICAgfHwgZmlyc3ROb25BbmNob3JUZXJtLmNoYXJhY3RlckNs
YXNzICE9IGRvdENoYXJhY3RlckNsYXNzCiAgICAgICAgICAgICAgICAgfHwgZmlyc3ROb25BbmNo
b3JUZXJtLnF1YW50aXR5TWluQ291bnQKICAgICAgICAgICAgICAgICB8fCBmaXJzdE5vbkFuY2hv
clRlcm0ucXVhbnRpdHlNYXhDb3VudCAhPSBxdWFudGlmeUluZmluaXRlKQpAQCAtMTA2MywxNSAr
MTA2MywxNSBAQCBjbGFzcyBZYXJyUGF0dGVybkNvbnN0cnVjdG9yIHsKICAgICAgICAgICAgIGZp
cnN0RXhwcmVzc2lvblRlcm0gPSB0ZXJtSW5kZXggKyAxOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICB0ZXJtSW5kZXggPSB0ZXJtcy5zaXplKCkgLSAxOwotICAgICAgICAgICAgaWYgKHRlcm1z
W3Rlcm1JbmRleF0udHlwZSA9PSBQYXR0ZXJuVGVybTo6VHlwZUFzc2VydGlvbkVPTCkgeworICAg
ICAgICAgICAgaWYgKHRlcm1zW3Rlcm1JbmRleF0udHlwZSA9PSBQYXR0ZXJuVGVybTo6VHlwZTo6
QXNzZXJ0aW9uRU9MKSB7CiAgICAgICAgICAgICAgICAgZW5kc1dpdGhFT0wgPSB0cnVlOwogICAg
ICAgICAgICAgICAgIC0tdGVybUluZGV4OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBQYXR0ZXJuVGVybSYgbGFzdE5vbkFuY2hvclRlcm0gPSB0ZXJtc1t0ZXJtSW5k
ZXhdOwotICAgICAgICAgICAgaWYgKGxhc3ROb25BbmNob3JUZXJtLnR5cGUgIT0gUGF0dGVyblRl
cm06OlR5cGVDaGFyYWN0ZXJDbGFzcworICAgICAgICAgICAgaWYgKGxhc3ROb25BbmNob3JUZXJt
LnR5cGUgIT0gUGF0dGVyblRlcm06OlR5cGU6OkNoYXJhY3RlckNsYXNzCiAgICAgICAgICAgICAg
ICAgfHwgbGFzdE5vbkFuY2hvclRlcm0uY2hhcmFjdGVyQ2xhc3MgIT0gZG90Q2hhcmFjdGVyQ2xh
c3MKLSAgICAgICAgICAgICAgICB8fCBsYXN0Tm9uQW5jaG9yVGVybS5xdWFudGl0eVR5cGUgIT0g
UXVhbnRpZmllckdyZWVkeQorICAgICAgICAgICAgICAgIHx8IGxhc3ROb25BbmNob3JUZXJtLnF1
YW50aXR5VHlwZSAhPSBRdWFudGlmaWVyVHlwZTo6R3JlZWR5CiAgICAgICAgICAgICAgICAgfHwg
bGFzdE5vbkFuY2hvclRlcm0ucXVhbnRpdHlNaW5Db3VudAogICAgICAgICAgICAgICAgIHx8IGxh
c3ROb25BbmNob3JUZXJtLnF1YW50aXR5TWF4Q291bnQgIT0gcXVhbnRpZnlJbmZpbml0ZSkKICAg
ICAgICAgICAgICAgICByZXR1cm47CkBAIC0xMjU2LDcgKzEyNTYsNyBAQCB2b2lkIFBhdHRlcm5B
bHRlcm5hdGl2ZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBZYXJyUGF0dGVybiogdGhpc1BhdHRl
cm4sIHVuc2lnbgogCiB2b2lkIFBhdHRlcm5UZXJtOjpkdW1wUXVhbnRpZmllcihQcmludFN0cmVh
bSYgb3V0KQogewotICAgIGlmIChxdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllckZpeGVkQ291bnQg
JiYgcXVhbnRpdHlNaW5Db3VudCA9PSAxICYmIHF1YW50aXR5TWF4Q291bnQgPT0gMSkKKyAgICBp
ZiAocXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJUeXBlOjpGaXhlZENvdW50ICYmIHF1YW50aXR5
TWluQ291bnQgPT0gMSAmJiBxdWFudGl0eU1heENvdW50ID09IDEpCiAgICAgICAgIHJldHVybjsK
ICAgICBvdXQucHJpbnQoIiB7IiwgcXVhbnRpdHlNaW5Db3VudC52YWx1ZSgpKTsKICAgICBpZiAo
cXVhbnRpdHlNaW5Db3VudCAhPSBxdWFudGl0eU1heENvdW50KSB7CkBAIC0xMjY2LDkgKzEyNjYs
OSBAQCB2b2lkIFBhdHRlcm5UZXJtOjpkdW1wUXVhbnRpZmllcihQcmludFN0cmVhbSYgb3V0KQog
ICAgICAgICAgICAgb3V0LnByaW50KCIsIiwgcXVhbnRpdHlNYXhDb3VudC52YWx1ZSgpKTsKICAg
ICB9CiAgICAgb3V0LnByaW50KCJ9Iik7Ci0gICAgaWYgKHF1YW50aXR5VHlwZSA9PSBRdWFudGlm
aWVyR3JlZWR5KQorICAgIGlmIChxdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllclR5cGU6OkdyZWVk
eSkKICAgICAgICAgb3V0LnByaW50KCIgZ3JlZWR5Iik7Ci0gICAgZWxzZSBpZiAocXVhbnRpdHlU
eXBlID09IFF1YW50aWZpZXJOb25HcmVlZHkpCisgICAgZWxzZSBpZiAocXVhbnRpdHlUeXBlID09
IFF1YW50aWZpZXJUeXBlOjpOb25HcmVlZHkpCiAgICAgICAgIG91dC5wcmludCgiIG5vbi1ncmVl
ZHkiKTsKIH0KIApAQCAtMTI3NiwyMiArMTI3NiwyMiBAQCB2b2lkIFBhdHRlcm5UZXJtOjpkdW1w
KFByaW50U3RyZWFtJiBvdXQsIFlhcnJQYXR0ZXJuKiB0aGlzUGF0dGVybiwgdW5zaWduZWQgbmVz
dAogewogICAgIGluZGVudEZvck5lc3RpbmdMZXZlbChvdXQsIG5lc3RpbmdEZXB0aCk7CiAKLSAg
ICBpZiAodHlwZSAhPSBUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuICYmIHR5cGUgIT0gVHlwZVBh
cmVudGhldGljYWxBc3NlcnRpb24pIHsKKyAgICBpZiAodHlwZSAhPSBUeXBlOjpQYXJlbnRoZXNl
c1N1YnBhdHRlcm4gJiYgdHlwZSAhPSBUeXBlOjpQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uKSB7CiAg
ICAgICAgIGlmIChpbnZlcnQoKSkKICAgICAgICAgICAgIG91dC5wcmludCgibm90ICIpOwogICAg
IH0KIAogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgVHlwZUFzc2VydGlvbkJPTDoKKyAg
ICBjYXNlIFR5cGU6OkFzc2VydGlvbkJPTDoKICAgICAgICAgb3V0LnByaW50bG4oIkJPTCIpOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFR5cGVBc3NlcnRpb25FT0w6CisgICAgY2FzZSBUeXBl
OjpBc3NlcnRpb25FT0w6CiAgICAgICAgIG91dC5wcmludGxuKCJFT0wiKTsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBUeXBlQXNzZXJ0aW9uV29yZEJvdW5kYXJ5OgorICAgIGNhc2UgVHlwZTo6
QXNzZXJ0aW9uV29yZEJvdW5kYXJ5OgogICAgICAgICBvdXQucHJpbnRsbigid29yZCBib3VuZGFy
eSIpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFR5cGVQYXR0ZXJuQ2hhcmFjdGVyOgorICAg
IGNhc2UgVHlwZTo6UGF0dGVybkNoYXJhY3RlcjoKICAgICAgICAgb3V0LnByaW50ZigiY2hhcmFj
dGVyICIpOwogICAgICAgICBvdXQucHJpbnRmKCJpbnB1dFBvc2l0aW9uICV1ICIsIGlucHV0UG9z
aXRpb24pOwogICAgICAgICBpZiAodGhpc1BhdHRlcm4tPmlnbm9yZUNhc2UoKSAmJiBpc0FTQ0lJ
QWxwaGEocGF0dGVybkNoYXJhY3RlcikpIHsKQEAgLTEzMDEsNDAgKzEzMDEsNDAgQEAgdm9pZCBQ
YXR0ZXJuVGVybTo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBZYXJyUGF0dGVybiogdGhpc1BhdHRl
cm4sIHVuc2lnbmVkIG5lc3QKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBkdW1wVUNoYXIz
MihvdXQsIHBhdHRlcm5DaGFyYWN0ZXIpOwogICAgICAgICBkdW1wUXVhbnRpZmllcihvdXQpOwot
ICAgICAgICBpZiAocXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJGaXhlZENvdW50KQorICAgICAg
ICBpZiAocXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJUeXBlOjpGaXhlZENvdW50KQogICAgICAg
ICAgICAgb3V0LnByaW50KCIsZnJhbWUgbG9jYXRpb24gIiwgZnJhbWVMb2NhdGlvbik7CiAgICAg
ICAgIG91dC5wcmludGxuKCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVHlwZUNoYXJhY3Rl
ckNsYXNzOgorICAgIGNhc2UgVHlwZTo6Q2hhcmFjdGVyQ2xhc3M6CiAgICAgICAgIG91dC5wcmlu
dCgiY2hhcmFjdGVyIGNsYXNzICIpOwogICAgICAgICBvdXQucHJpbnRmKCJpbnB1dFBvc2l0aW9u
ICV1ICIsIGlucHV0UG9zaXRpb24pOwogICAgICAgICBkdW1wQ2hhcmFjdGVyQ2xhc3Mob3V0LCB0
aGlzUGF0dGVybiwgY2hhcmFjdGVyQ2xhc3MpOwogICAgICAgICBkdW1wUXVhbnRpZmllcihvdXQp
OwotICAgICAgICBpZiAocXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJGaXhlZENvdW50IHx8IHRo
aXNQYXR0ZXJuLT51bmljb2RlKCkpCisgICAgICAgIGlmIChxdWFudGl0eVR5cGUgIT0gUXVhbnRp
ZmllclR5cGU6OkZpeGVkQ291bnQgfHwgdGhpc1BhdHRlcm4tPnVuaWNvZGUoKSkKICAgICAgICAg
ICAgIG91dC5wcmludCgiLGZyYW1lIGxvY2F0aW9uICIsIGZyYW1lTG9jYXRpb24pOwogICAgICAg
ICBvdXQucHJpbnRsbigpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFR5cGVCYWNrUmVmZXJl
bmNlOgorICAgIGNhc2UgVHlwZTo6QmFja1JlZmVyZW5jZToKICAgICAgICAgb3V0LnByaW50KCJi
YWNrIHJlZmVyZW5jZSB0byBzdWJwYXR0ZXJuICMiLCBiYWNrUmVmZXJlbmNlU3VicGF0dGVybklk
KTsKICAgICAgICAgb3V0LnByaW50bG4oIixmcmFtZSBsb2NhdGlvbiAiLCBmcmFtZUxvY2F0aW9u
KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUeXBlRm9yd2FyZFJlZmVyZW5jZToKKyAgICBj
YXNlIFR5cGU6OkZvcndhcmRSZWZlcmVuY2U6CiAgICAgICAgIG91dC5wcmludGxuKCJmb3J3YXJk
IHJlZmVyZW5jZSIpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFR5cGVQYXJlbnRoZXNlc1N1
YnBhdHRlcm46CisgICAgY2FzZSBUeXBlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm46CiAgICAgICAg
IGlmIChtX2NhcHR1cmUpCiAgICAgICAgICAgICBvdXQucHJpbnQoImNhcHR1cmVkICIpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBvdXQucHJpbnQoIm5vbi1jYXB0dXJlZCAiKTsKIAogICAg
ICAgICBGQUxMVEhST1VHSDsKLSAgICBjYXNlIFR5cGVQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uOgor
ICAgIGNhc2UgVHlwZTo6UGFyZW50aGV0aWNhbEFzc2VydGlvbjoKICAgICAgICAgaWYgKG1faW52
ZXJ0KQogICAgICAgICAgICAgb3V0LnByaW50KCJpbnZlcnRlZCAiKTsKIAotICAgICAgICBpZiAo
dHlwZSA9PSBUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuKQorICAgICAgICBpZiAodHlwZSA9PSBU
eXBlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm4pCiAgICAgICAgICAgICBvdXQucHJpbnQoInN1YnBh
dHRlcm4iKTsKLSAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBUeXBlUGFyZW50aGV0aWNhbEFzc2Vy
dGlvbikKKyAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBUeXBlOjpQYXJlbnRoZXRpY2FsQXNzZXJ0
aW9uKQogICAgICAgICAgICAgb3V0LnByaW50KCJhc3NlcnRpb24iKTsKIAogICAgICAgICBpZiAo
bV9jYXB0dXJlKQpAQCAtMTM2NCw3ICsxMzY0LDcgQEAgdm9pZCBQYXR0ZXJuVGVybTo6ZHVtcChQ
cmludFN0cmVhbSYgb3V0LCBZYXJyUGF0dGVybiogdGhpc1BhdHRlcm4sIHVuc2lnbmVkIG5lc3QK
IAogICAgICAgICBwYXJlbnRoZXNlcy5kaXNqdW5jdGlvbi0+ZHVtcChvdXQsIHRoaXNQYXR0ZXJu
LCBuZXN0aW5nRGVwdGggKyAxKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUeXBlRG90U3Rh
ckVuY2xvc3VyZToKKyAgICBjYXNlIFR5cGU6OkRvdFN0YXJFbmNsb3N1cmU6CiAgICAgICAgIG91
dC5wcmludGxuKCIuKiBlbmNsb3N1cmUsZnJhbWUgbG9jYXRpb24gIiwgdGhpc1BhdHRlcm4tPm1f
aW5pdGlhbFN0YXJ0VmFsdWVGcmFtZUxvY2F0aW9uKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgKaW5kZXggMThjYWVhOTgyNTE3
YjMzZWViNjg5NTE4ZmRiZTcxNDZlYWRiYjdmMi4uOWZiNmU2MWFiMWU2NzMxZDM5ZTU2NDFkODQy
MDcxMGFlN2Q3ZDAyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
clBhdHRlcm4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5o
CkBAIC0xMjIsMjUgKzEyMiwyNiBAQCBzdHJ1Y3QgQ2hhcmFjdGVyQ2xhc3MgewogICAgIGJvb2wg
bV9hbnlDaGFyYWN0ZXIgOiAxOwogfTsKIAotZW51bSBRdWFudGlmaWVyVHlwZSA6IHVpbnQ4X3Qg
ewotICAgIFF1YW50aWZpZXJGaXhlZENvdW50LAotICAgIFF1YW50aWZpZXJHcmVlZHksCi0gICAg
UXVhbnRpZmllck5vbkdyZWVkeSwKK2VudW0gY2xhc3MgUXVhbnRpZmllclR5cGUgOiB1aW50OF90
IHsKKyAgICBGaXhlZENvdW50LAorICAgIEdyZWVkeSwKKyAgICBOb25HcmVlZHksCiB9OwogCiBz
dHJ1Y3QgUGF0dGVyblRlcm0gewotICAgIGVudW0gVHlwZSA6IHVpbnQ4X3QgewotICAgICAgICBU
eXBlQXNzZXJ0aW9uQk9MLAotICAgICAgICBUeXBlQXNzZXJ0aW9uRU9MLAotICAgICAgICBUeXBl
QXNzZXJ0aW9uV29yZEJvdW5kYXJ5LAotICAgICAgICBUeXBlUGF0dGVybkNoYXJhY3RlciwKLSAg
ICAgICAgVHlwZUNoYXJhY3RlckNsYXNzLAotICAgICAgICBUeXBlQmFja1JlZmVyZW5jZSwKLSAg
ICAgICAgVHlwZUZvcndhcmRSZWZlcmVuY2UsCi0gICAgICAgIFR5cGVQYXJlbnRoZXNlc1N1YnBh
dHRlcm4sCi0gICAgICAgIFR5cGVQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uLAotICAgICAgICBUeXBl
RG90U3RhckVuY2xvc3VyZSwKLSAgICB9IHR5cGU7CisgICAgZW51bSBjbGFzcyBUeXBlIDogdWlu
dDhfdCB7CisgICAgICAgIEFzc2VydGlvbkJPTCwKKyAgICAgICAgQXNzZXJ0aW9uRU9MLAorICAg
ICAgICBBc3NlcnRpb25Xb3JkQm91bmRhcnksCisgICAgICAgIFBhdHRlcm5DaGFyYWN0ZXIsCisg
ICAgICAgIENoYXJhY3RlckNsYXNzLAorICAgICAgICBCYWNrUmVmZXJlbmNlLAorICAgICAgICBG
b3J3YXJkUmVmZXJlbmNlLAorICAgICAgICBQYXJlbnRoZXNlc1N1YnBhdHRlcm4sCisgICAgICAg
IFBhcmVudGhldGljYWxBc3NlcnRpb24sCisgICAgICAgIERvdFN0YXJFbmNsb3N1cmUsCisgICAg
fTsKKyAgICBUeXBlIHR5cGU7CiAgICAgYm9vbCBtX2NhcHR1cmUgOjE7CiAgICAgYm9vbCBtX2lu
dmVydCA6MTsKICAgICBRdWFudGlmaWVyVHlwZSBxdWFudGl0eVR5cGU7CkBAIC0xNjYsMjIgKzE2
NywyMiBAQCBzdHJ1Y3QgUGF0dGVyblRlcm0gewogICAgIHVuc2lnbmVkIGZyYW1lTG9jYXRpb247
CiAKICAgICBQYXR0ZXJuVGVybShVQ2hhcjMyIGNoKQotICAgICAgICA6IHR5cGUoUGF0dGVyblRl
cm06OlR5cGVQYXR0ZXJuQ2hhcmFjdGVyKQorICAgICAgICA6IHR5cGUoUGF0dGVyblRlcm06OlR5
cGU6OlBhdHRlcm5DaGFyYWN0ZXIpCiAgICAgICAgICwgbV9jYXB0dXJlKGZhbHNlKQogICAgICAg
ICAsIG1faW52ZXJ0KGZhbHNlKQogICAgIHsKICAgICAgICAgcGF0dGVybkNoYXJhY3RlciA9IGNo
OwotICAgICAgICBxdWFudGl0eVR5cGUgPSBRdWFudGlmaWVyRml4ZWRDb3VudDsKKyAgICAgICAg
cXVhbnRpdHlUeXBlID0gUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQ7CiAgICAgICAgIHF1YW50
aXR5TWluQ291bnQgPSBxdWFudGl0eU1heENvdW50ID0gMTsKICAgICB9CiAKICAgICBQYXR0ZXJu
VGVybShDaGFyYWN0ZXJDbGFzcyogY2hhckNsYXNzLCBib29sIGludmVydCkKLSAgICAgICAgOiB0
eXBlKFBhdHRlcm5UZXJtOjpUeXBlQ2hhcmFjdGVyQ2xhc3MpCisgICAgICAgIDogdHlwZShQYXR0
ZXJuVGVybTo6VHlwZTo6Q2hhcmFjdGVyQ2xhc3MpCiAgICAgICAgICwgbV9jYXB0dXJlKGZhbHNl
KQogICAgICAgICAsIG1faW52ZXJ0KGludmVydCkKICAgICB7CiAgICAgICAgIGNoYXJhY3RlckNs
YXNzID0gY2hhckNsYXNzOwotICAgICAgICBxdWFudGl0eVR5cGUgPSBRdWFudGlmaWVyRml4ZWRD
b3VudDsKKyAgICAgICAgcXVhbnRpdHlUeXBlID0gUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQ7
CiAgICAgICAgIHF1YW50aXR5TWluQ291bnQgPSBxdWFudGl0eU1heENvdW50ID0gMTsKICAgICB9
CiAKQEAgLTE5NCw3ICsxOTUsNyBAQCBzdHJ1Y3QgUGF0dGVyblRlcm0gewogICAgICAgICBwYXJl
bnRoZXNlcy5zdWJwYXR0ZXJuSWQgPSBzdWJwYXR0ZXJuSWQ7CiAgICAgICAgIHBhcmVudGhlc2Vz
LmlzQ29weSA9IGZhbHNlOwogICAgICAgICBwYXJlbnRoZXNlcy5pc1Rlcm1pbmFsID0gZmFsc2U7
Ci0gICAgICAgIHF1YW50aXR5VHlwZSA9IFF1YW50aWZpZXJGaXhlZENvdW50OworICAgICAgICBx
dWFudGl0eVR5cGUgPSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudDsKICAgICAgICAgcXVhbnRp
dHlNaW5Db3VudCA9IHF1YW50aXR5TWF4Q291bnQgPSAxOwogICAgIH0KICAgICAKQEAgLTIwMyw0
OSArMjA0LDQ5IEBAIHN0cnVjdCBQYXR0ZXJuVGVybSB7CiAgICAgICAgICwgbV9jYXB0dXJlKGZh
bHNlKQogICAgICAgICAsIG1faW52ZXJ0KGludmVydCkKICAgICB7Ci0gICAgICAgIHF1YW50aXR5
VHlwZSA9IFF1YW50aWZpZXJGaXhlZENvdW50OworICAgICAgICBxdWFudGl0eVR5cGUgPSBRdWFu
dGlmaWVyVHlwZTo6Rml4ZWRDb3VudDsKICAgICAgICAgcXVhbnRpdHlNaW5Db3VudCA9IHF1YW50
aXR5TWF4Q291bnQgPSAxOwogICAgIH0KIAogICAgIFBhdHRlcm5UZXJtKHVuc2lnbmVkIHNwYXR0
ZXJuSWQpCi0gICAgICAgIDogdHlwZShUeXBlQmFja1JlZmVyZW5jZSkKKyAgICAgICAgOiB0eXBl
KFR5cGU6OkJhY2tSZWZlcmVuY2UpCiAgICAgICAgICwgbV9jYXB0dXJlKGZhbHNlKQogICAgICAg
ICAsIG1faW52ZXJ0KGZhbHNlKQogICAgIHsKICAgICAgICAgYmFja1JlZmVyZW5jZVN1YnBhdHRl
cm5JZCA9IHNwYXR0ZXJuSWQ7Ci0gICAgICAgIHF1YW50aXR5VHlwZSA9IFF1YW50aWZpZXJGaXhl
ZENvdW50OworICAgICAgICBxdWFudGl0eVR5cGUgPSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3Vu
dDsKICAgICAgICAgcXVhbnRpdHlNaW5Db3VudCA9IHF1YW50aXR5TWF4Q291bnQgPSAxOwogICAg
IH0KIAogICAgIFBhdHRlcm5UZXJtKGJvb2wgYm9sQW5jaG9yLCBib29sIGVvbEFuY2hvcikKLSAg
ICAgICAgOiB0eXBlKFR5cGVEb3RTdGFyRW5jbG9zdXJlKQorICAgICAgICA6IHR5cGUoVHlwZTo6
RG90U3RhckVuY2xvc3VyZSkKICAgICAgICAgLCBtX2NhcHR1cmUoZmFsc2UpCiAgICAgICAgICwg
bV9pbnZlcnQoZmFsc2UpCiAgICAgewogICAgICAgICBhbmNob3JzLmJvbEFuY2hvciA9IGJvbEFu
Y2hvcjsKICAgICAgICAgYW5jaG9ycy5lb2xBbmNob3IgPSBlb2xBbmNob3I7Ci0gICAgICAgIHF1
YW50aXR5VHlwZSA9IFF1YW50aWZpZXJGaXhlZENvdW50OworICAgICAgICBxdWFudGl0eVR5cGUg
PSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudDsKICAgICAgICAgcXVhbnRpdHlNaW5Db3VudCA9
IHF1YW50aXR5TWF4Q291bnQgPSAxOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgUGF0dGVyblRl
cm0gRm9yd2FyZFJlZmVyZW5jZSgpCiAgICAgewotICAgICAgICByZXR1cm4gUGF0dGVyblRlcm0o
VHlwZUZvcndhcmRSZWZlcmVuY2UpOworICAgICAgICByZXR1cm4gUGF0dGVyblRlcm0oVHlwZTo6
Rm9yd2FyZFJlZmVyZW5jZSk7CiAgICAgfQogCiAgICAgc3RhdGljIFBhdHRlcm5UZXJtIEJPTCgp
CiAgICAgewotICAgICAgICByZXR1cm4gUGF0dGVyblRlcm0oVHlwZUFzc2VydGlvbkJPTCk7Cisg
ICAgICAgIHJldHVybiBQYXR0ZXJuVGVybShUeXBlOjpBc3NlcnRpb25CT0wpOwogICAgIH0KIAog
ICAgIHN0YXRpYyBQYXR0ZXJuVGVybSBFT0woKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFBhdHRl
cm5UZXJtKFR5cGVBc3NlcnRpb25FT0wpOworICAgICAgICByZXR1cm4gUGF0dGVyblRlcm0oVHlw
ZTo6QXNzZXJ0aW9uRU9MKTsKICAgICB9CiAKICAgICBzdGF0aWMgUGF0dGVyblRlcm0gV29yZEJv
dW5kYXJ5KGJvb2wgaW52ZXJ0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIFBhdHRlcm5UZXJtKFR5
cGVBc3NlcnRpb25Xb3JkQm91bmRhcnksIGludmVydCk7CisgICAgICAgIHJldHVybiBQYXR0ZXJu
VGVybShUeXBlOjpBc3NlcnRpb25Xb3JkQm91bmRhcnksIGludmVydCk7CiAgICAgfQogICAgIAog
ICAgIGJvb2wgaW52ZXJ0KCkgY29uc3QKQEAgLTI2MCwxMiArMjYxLDEyIEBAIHN0cnVjdCBQYXR0
ZXJuVGVybSB7CiAKICAgICBib29sIGlzRml4ZWRXaWR0aENoYXJhY3RlckNsYXNzKCkgY29uc3QK
ICAgICB7Ci0gICAgICAgIHJldHVybiB0eXBlID09IFR5cGVDaGFyYWN0ZXJDbGFzcyAmJiBjaGFy
YWN0ZXJDbGFzcy0+aGFzT25lQ2hhcmFjdGVyU2l6ZSgpICYmICFpbnZlcnQoKTsKKyAgICAgICAg
cmV0dXJuIHR5cGUgPT0gVHlwZTo6Q2hhcmFjdGVyQ2xhc3MgJiYgY2hhcmFjdGVyQ2xhc3MtPmhh
c09uZUNoYXJhY3RlclNpemUoKSAmJiAhaW52ZXJ0KCk7CiAgICAgfQogCiAgICAgYm9vbCBjb250
YWluc0FueUNhcHR1cmVzKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVCh0aGlzLT50eXBlID09IFR5
cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm4pOworICAgICAgICBBU1NFUlQodGhpcy0+dHlwZSA9PSBU
eXBlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm4pOwogICAgICAgICByZXR1cm4gcGFyZW50aGVzZXMu
bGFzdFN1YnBhdHRlcm5JZCA+PSBwYXJlbnRoZXNlcy5zdWJwYXR0ZXJuSWQ7CiAgICAgfQogCkBA
IC0yNzksNyArMjgwLDcgQEAgc3RydWN0IFBhdHRlcm5UZXJtIHsKICAgICB2b2lkIHF1YW50aWZ5
KHVuc2lnbmVkIG1pbkNvdW50LCB1bnNpZ25lZCBtYXhDb3VudCwgUXVhbnRpZmllclR5cGUgdHlw
ZSkKICAgICB7CiAgICAgICAgIC8vIEN1cnJlbnRseSBvbmx5IFBhcmVudGhlc2VzIGNhbiBzcGVj
aWZ5IGEgbm9uLXplcm8gbWluIHdpdGggYSBkaWZmZXJlbnQgbWF4LgotICAgICAgICBBU1NFUlQo
dGhpcy0+dHlwZSA9PSBUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuIHx8ICFtaW5Db3VudCB8fCBt
aW5Db3VudCA9PSBtYXhDb3VudCk7CisgICAgICAgIEFTU0VSVCh0aGlzLT50eXBlID09IFR5cGU6
OlBhcmVudGhlc2VzU3VicGF0dGVybiB8fCAhbWluQ291bnQgfHwgbWluQ291bnQgPT0gbWF4Q291
bnQpOwogICAgICAgICBBU1NFUlQobWluQ291bnQgPD0gbWF4Q291bnQpOwogICAgICAgICBxdWFu
dGl0eU1pbkNvdW50ID0gbWluQ291bnQ7CiAgICAgICAgIHF1YW50aXR5TWF4Q291bnQgPSBtYXhD
b3VudDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>