<?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>226750</bug_id>
          
          <creation_ts>2021-06-07 18:39:25 -0700</creation_ts>
          <short_desc>[JSC] Rename *ByIdVariant to *ByVariant and *ByKind::Normal to *ByKind::ById</short_desc>
          <delta_ts>2021-06-09 23:27:18 -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="Ross Kirsling">ross.kirsling</reporter>
          <assigned_to name="Ross Kirsling">ross.kirsling</assigned_to>
          <cc>annulen</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1767630</commentid>
    <comment_count>0</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2021-06-07 18:39:25 -0700</bug_when>
    <thetext>[JSC] Rename *ByIdVariant to *ByVariant and *ByKind::Normal to *ByKind::ById</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767633</commentid>
    <comment_count>1</comment_count>
      <attachid>430798</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2021-06-07 18:55:55 -0700</bug_when>
    <thetext>Created attachment 430798
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768272</commentid>
    <comment_count>2</comment_count>
      <attachid>430798</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-06-09 12:09:23 -0700</bug_when>
    <thetext>Comment on attachment 430798
Patch

r=me. Maybe, you need rebaseline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768362</commentid>
    <comment_count>3</comment_count>
      <attachid>431017</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2021-06-09 15:15:24 -0700</bug_when>
    <thetext>Created attachment 431017
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768445</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-09 20:02:45 -0700</bug_when>
    <thetext>Found 1 new test failure: imported/w3c/web-platform-tests/navigation-timing/nav2_test_attributes_values.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768450</commentid>
    <comment_count>5</comment_count>
      <attachid>431046</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2021-06-09 20:56:07 -0700</bug_when>
    <thetext>Created attachment 431046
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768471</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-09 23:26:19 -0700</bug_when>
    <thetext>Committed r278696 (238668@main): &lt;https://commits.webkit.org/238668@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 431046.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768472</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-09 23:27:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/79123276&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430798</attachid>
            <date>2021-06-07 18:55:55 -0700</date>
            <delta_ts>2021-06-09 15:15:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>226750.diff</filename>
            <type>text/plain</type>
            <size>90089</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA2NTNjNWYzMzgxMWEuLjM1NjZj
YTQ4NTllMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTQ4LDggKzU0
OCw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
Ynl0ZWNvZGUvQ29kZVR5cGUuaAogICAgIGJ5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgKICAgICBi
eXRlY29kZS9EYXRhRm9ybWF0LmgKLSAgICBieXRlY29kZS9EZWxldGVCeUlkVmFyaWFudC5oCi0g
ICAgYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuaAogICAgIGJ5dGVjb2RlL0RpcmVjdEV2YWxDb2Rl
Q2FjaGUuaAogICAgIGJ5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKICAgICBieXRlY29kZS9FeGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDEyMGY5
MmVjYzVlNi4uN2U5ZjJlZTM1YTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMTYgQEAKKzIwMjEtMDYtMDcgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnku
Y29tPgorCisgICAgICAgIFtKU0NdIFJlbmFtZSAqQnlJZFZhcmlhbnQgdG8gKkJ5VmFyaWFudCBh
bmQgKkJ5S2luZDo6Tm9ybWFsIHRvICpCeUtpbmQ6OkJ5SWQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjc1MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENsZWFudXAgcGF0Y2ggZm9sbG93aW5nIHIyNzg0
NDUuCisKKyAgICAgICAgMS4ge0dldCwgRGVsZXRlLCBJbn1CeVN0YXR1cyAoYnV0IG5vdCBgUHV0
YCkgaGF2ZSBoYWQgYElkYCByZW1vdmVkIGZyb20gdGhlaXIgbmFtZXM7IGxpa2V3aXNlLCByZW1v
dmUgYElkYAorICAgICAgICAgICBmcm9tIHRoZSBuYW1lcyBvZiB7R2V0LCBEZWxldGUsIElufUJ5
SWRWYXJpYW50LiBUaGVzZSBhcmUgdXNlZCAqYmVmb3JlKiBCeVZhbCBoYXMgYmVlbiBjb252ZXJ0
ZWQgdG8gQnlJZC4KKworICAgICAgICAyLiBUaGUge0dldCwgRGVsLCBJbn1CeUtpbmQgZW51bSBj
bGFzc2VzIHNob3VsZG4ndCByZWFsbHkgY2FsbCBCeUlkIGBOb3JtYWxgIC0tIGxldCdzIHNheSBg
QnlJZGAgZXhwbGljaXRseS4KKworICAgICAgICAzLiBCb251czogSW4gREZHQnl0ZWNvZGVQYXJz
ZXIsIG1vdmUgc29tZSAqU3RhdHVzOjpjb21wdXRlRm9yIGNhbGxzIGluc2lkZSB0aGUgY29uZGl0
aW9uYWwgdGhhdCB1c2VzIHRoZW0uCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFNvdXJjZXMudHh0OgorICAgICAgICAqIGJ5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6RGVsZXRlQnlTdGF0dXM6OmFwcGVuZFZhcmlhbnQpOgorICAgICAgICAoSlND
OjpEZWxldGVCeVN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJh
Y2spOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6dmlzaXRBZ2dyZWdhdGVJbXBsKToK
KyAgICAgICAgKEpTQzo6RGVsZXRlQnlTdGF0dXM6Om1hcmtJZkNoZWFwKToKKyAgICAgICAgKiBi
eXRlY29kZS9EZWxldGVCeVN0YXR1cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0RlbGV0ZUJ5VmFy
aWFudC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVs
ZXRlQnlJZFZhcmlhbnQuY3BwLgorICAgICAgICAoSlNDOjpEZWxldGVCeVZhcmlhbnQ6OkRlbGV0
ZUJ5VmFyaWFudCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5VmFyaWFudDo6fkRlbGV0ZUJ5VmFy
aWFudCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5VmFyaWFudDo6b3BlcmF0b3I9KToKKyAgICAg
ICAgKEpTQzo6RGVsZXRlQnlWYXJpYW50OjphdHRlbXB0VG9NZXJnZSk6CisgICAgICAgIChKU0M6
OkRlbGV0ZUJ5VmFyaWFudDo6d3JpdGVzU3RydWN0dXJlcyBjb25zdCk6CisgICAgICAgIChKU0M6
OkRlbGV0ZUJ5VmFyaWFudDo6dmlzaXRBZ2dyZWdhdGVJbXBsKToKKyAgICAgICAgKEpTQzo6RGVs
ZXRlQnlWYXJpYW50OjptYXJrSWZDaGVhcCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5VmFyaWFu
dDo6ZHVtcCBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5VmFyaWFudDo6ZmluYWxpemUp
OgorICAgICAgICAoSlNDOjpEZWxldGVCeVZhcmlhbnQ6OmR1bXBJbkNvbnRleHQgY29uc3QpOgor
ICAgICAgICAqIGJ5dGVjb2RlL0RlbGV0ZUJ5VmFyaWFudC5oOiBSZW5hbWVkIGZyb20gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5SWRWYXJpYW50LmguCisgICAgICAgIChK
U0M6OkRlbGV0ZUJ5VmFyaWFudDo6b3ZlcmxhcHMpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5
U3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlTdGF0dXM6OmFwcGVuZFZhcmlhbnQpOgor
ICAgICAgICAoSlNDOjpHZXRCeVN0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChK
U0M6OkdldEJ5U3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFj
ayk6CisgICAgICAgIChKU0M6OkdldEJ5U3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKEpT
Qzo6R2V0QnlTdGF0dXM6Om1lcmdlKToKKyAgICAgICAgKEpTQzo6R2V0QnlTdGF0dXM6OnZpc2l0
QWdncmVnYXRlSW1wbCk6CisgICAgICAgIChKU0M6OkdldEJ5U3RhdHVzOjptYXJrSWZDaGVhcCk6
CisgICAgICAgIChKU0M6OkdldEJ5U3RhdHVzOjpmaW5hbGl6ZSk6CisgICAgICAgICogYnl0ZWNv
ZGUvR2V0QnlTdGF0dXMuaDoKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeVZhcmlhbnQuY3BwOiBS
ZW5hbWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50
LmNwcC4KKyAgICAgICAgKEpTQzo6R2V0QnlWYXJpYW50OjpHZXRCeVZhcmlhbnQpOgorICAgICAg
ICAoSlNDOjpHZXRCeVZhcmlhbnQ6On5HZXRCeVZhcmlhbnQpOgorICAgICAgICAoSlNDOjpHZXRC
eVZhcmlhbnQ6Om9wZXJhdG9yPSk6CisgICAgICAgIChKU0M6OkdldEJ5VmFyaWFudDo6Y2FuTWVy
Z2VJbnRyaW5zaWNTdHJ1Y3R1cmVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6R2V0QnlWYXJpYW50
OjphdHRlbXB0VG9NZXJnZSk6CisgICAgICAgIChKU0M6OkdldEJ5VmFyaWFudDo6dmlzaXRBZ2dy
ZWdhdGVJbXBsKToKKyAgICAgICAgKEpTQzo6R2V0QnlWYXJpYW50OjptYXJrSWZDaGVhcCk6Cisg
ICAgICAgIChKU0M6OkdldEJ5VmFyaWFudDo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpHZXRC
eVZhcmlhbnQ6OmR1bXAgY29uc3QpOgorICAgICAgICAoSlNDOjpHZXRCeVZhcmlhbnQ6OmR1bXBJ
bkNvbnRleHQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5VmFyaWFudC5oOiBSZW5h
bWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50Lmgu
CisgICAgICAgIChKU0M6OkdldEJ5VmFyaWFudDo6b3ZlcmxhcHMpOgorICAgICAgICAqIGJ5dGVj
b2RlL0luQnlTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpJbkJ5U3RhdHVzOjphcHBlbmRWYXJp
YW50KToKKyAgICAgICAgKEpTQzo6SW5CeVN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91
dEV4aXRTaXRlRmVlZGJhY2spOgorICAgICAgICAoSlNDOjpJbkJ5U3RhdHVzOjptZXJnZSk6Cisg
ICAgICAgIChKU0M6OkluQnlTdGF0dXM6Om1hcmtJZkNoZWFwKToKKyAgICAgICAgKEpTQzo6SW5C
eVN0YXR1czo6ZmluYWxpemUpOgorICAgICAgICAqIGJ5dGVjb2RlL0luQnlTdGF0dXMuaDoKKyAg
ICAgICAgKiBieXRlY29kZS9JbkJ5VmFyaWFudC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlkVmFyaWFudC5jcHAuCisgICAgICAgIChKU0M6Oklu
QnlWYXJpYW50OjpJbkJ5VmFyaWFudCk6CisgICAgICAgIChKU0M6OkluQnlWYXJpYW50OjphdHRl
bXB0VG9NZXJnZSk6CisgICAgICAgIChKU0M6OkluQnlWYXJpYW50OjptYXJrSWZDaGVhcCk6Cisg
ICAgICAgIChKU0M6OkluQnlWYXJpYW50OjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkluQnlW
YXJpYW50OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW5CeVZhcmlhbnQ6OmR1bXBJbkNv
bnRleHQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0luQnlWYXJpYW50Lmg6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlkVmFyaWFudC5oLgorICAg
ICAgICAoSlNDOjpJbkJ5VmFyaWFudDo6b3ZlcmxhcHMpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0
cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OnJl
c2V0KToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcik6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVEdldHRlcik6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQpOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRQcml2YXRlTmFtZUJ5SWQp
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVEZWxldGVCeUlkKToK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5CeUlkKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZn
L0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFu
dEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3Rh
bnRGb2xkaW5nUGhhc2U6OmVtaXRHZXRCeU9mZnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6Q29u
c3RhbnRGb2xkaW5nUGhhc2U6OmVtaXREZWxldGVCeU9mZnNldCk6CisgICAgICAgICogZGZnL0RG
R05vZGUuaDoKKyAgICAgICAgKiBkZmcvREZHVmFsaWRhdGUuY3BwOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlRGVsQnkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlRGVsZXRlQnlJZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVEZWxldGVCeVZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVNdWx0aURlbGV0ZUJ5T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNvbXBhcmVTdHJpY3RFcSk6CisgICAgICAgICogaml0L0pJ
VE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04p
OgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6YXBwcm9wcmlhdGVP
cHRpbWl6aW5nR2V0QnlGdW5jdGlvbik6CisgICAgICAgIChKU0M6OmFwcHJvcHJpYXRlR2V0QnlG
dW5jdGlvbik6CisgICAgICAgIChKU0M6OnRyeUNhY2hlR2V0QnkpOgorICAgICAgICAoSlNDOjpy
ZXBhdGNoRGVsZXRlQnkpOgorICAgICAgICAoSlNDOjpyZXBhdGNoSW5CeSk6CisgICAgICAgIChK
U0M6OnJlc2V0RGVsQnkpOgorICAgICAgICAoSlNDOjpyZXNldEluQnkpOgorICAgICAgICAqIGpp
dC9SZXBhdGNoLmg6CisKIDIwMjEtMDYtMDcgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5j
b20+CiAKICAgICAgICAgU2hvcnQgY2lyY3VpdCByZWFkIG1vZGlmeSB3cml0ZSBub2RlcyBlbWl0
IGJ5dGUgY29kZSB0aGF0IHVzZXMgdGhlIHdyb25nIGxvY2FscwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCAyZGVjMjRjOGJiNmIuLjU3MTRkNDYwNTdjYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTEyNyw3ICsxMjcsNyBAQAogCiAvKiBCZWdpbiBQQlhCdWlsZEZp
bGUgc2VjdGlvbiAqLwogCQkwRjAxMjMzMzE5NDRFQTFCMDA4NDNBMEMgLyogREZHVmFsdWVTdHJl
bmd0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYw
MTIzMzExOTQ0RUExQjAwODQzQTBDIC8qIERGR1ZhbHVlU3RyZW5ndGguaCAqLzsgfTsKLQkJMEYw
MzMyQzQxOEIwMTc2MzAwNUY5NzlBIC8qIEdldEJ5SWRWYXJpYW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjAzMzJDMjE4QjAxNzYzMDA1Rjk3OUEg
LyogR2V0QnlJZFZhcmlhbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkwRjAzMzJDNDE4QjAxNzYzMDA1Rjk3OUEgLyogR2V0QnlWYXJpYW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjAzMzJDMjE4
QjAxNzYzMDA1Rjk3OUEgLyogR2V0QnlWYXJpYW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwMzMyQzYxOEI1M0ZBOTAwNUY5NzlBIC8qIEZU
TFdlaWdodC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYwMzMyQzUxOEI1M0ZBOTAwNUY5NzlBIC8qIEZUTFdlaWdodC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMDMzMkM4MThCNTQ2RUMwMDVGOTc5
QSAvKiBGVExXZWlnaHRlZFRhcmdldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYwMzMyQzcxOEI1NDZFQzAwNUY5NzlBIC8qIEZUTFdlaWdodGVkVGFy
Z2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEYwNDM5NkUxQjAzREMwQjAwOTU5OEI3IC8qIERGR0NvbWJpbmVkTGl2ZW5lc3MuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMDQzOTZDMUIwM0RDMEIw
MDk1OThCNyAvKiBERkdDb21iaW5lZExpdmVuZXNzLmggKi87IH07CkBAIC0xMTgyLDcgKzExODIs
NyBAQAogCQk3MjZCOTFCMzI2NTgxNjUzMDA4RTZGODIgLyogSklUQ29tcGlsYXRpb25Nb2RlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjZCOTFBQjI2
NTgxNjUzMDA4RTZGODIgLyogSklUQ29tcGlsYXRpb25Nb2RlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI2QjkxQjcyNjU4MTY1MzAwOEU2Rjgy
IC8qIEpJVFBsYW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcyNkI5MUFGMjY1ODE2NTMwMDhFNkY4MiAvKiBKSVRQbGFuLmggKi87IH07CiAJCTcyNkI5
MUJBMjY1ODI2M0QwMDhFNkY4MiAvKiBKSVRDb21waWxhdGlvbktleS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI2QjkxQjgyNjU4MjYzQzAwOEU2Rjgy
IC8qIEpJVENvbXBpbGF0aW9uS2V5LmggKi87IH07Ci0JCTczMTFGQTMyMjQwREIxRDMwMDNENDhE
QiAvKiBEZWxldGVCeUlkVmFyaWFudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzMxMUZBMzEyNDBEQjFEMzAwM0Q0OERCIC8qIERlbGV0ZUJ5SWRWYXJp
YW50LmggKi87IH07CisJCTczMTFGQTMyMjQwREIxRDMwMDNENDhEQiAvKiBEZWxldGVCeVZhcmlh
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDczMTFG
QTMxMjQwREIxRDMwMDNENDhEQiAvKiBEZWxldGVCeVZhcmlhbnQuaCAqLzsgfTsKIAkJNzM0QjY1
NTUyM0Y1QzEwNDAwQTA2OUQxIC8qIERlbGV0ZVByb3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzM0QjY1NTQyM0Y0QTMzMTAwQTA2OUQx
IC8qIERlbGV0ZVByb3BlcnR5U2xvdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTczQUQwNjI5MjNGRjY2MjYwMEY1MzU5MyAvKiBEZWxldGVCeVN0
YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzNB
RDA2MjgyM0ZGNjYyNjAwRjUzNTkzIC8qIERlbGV0ZUJ5U3RhdHVzLmggKi87IH07CiAJCTczRTM3
OTk0MjJFMEVGNjUwMDkzMzU2NSAvKiBCM1JlZHVjZUxvb3BTdHJlbmd0aC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzNFMzc5OTMyMkUwRUY0RjAwOTMz
NTY1IC8qIEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmggKi87IH07CkBAIC0xNDAxLDcgKzE0MDEsNyBA
QAogCQlBMUQ3OTJGRjFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVj
dG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUQ3
OTJGOTFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmggKi87
IH07CiAJCUExRDc5MzAxMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUQ3
OTJGQjFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oICovOyB9
OwogCQlBMzIxQUE2RDI2MjYzNTlCMDAyM0FEQTIgLyogSW50bFdvcmthcm91bmQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzMjFBQTZDMjYyNjM1OUIw
MDIzQURBMiAvKiBJbnRsV29ya2Fyb3VuZC5oICovOyB9OwotCQlBMzgyQzUzMTI2NjcxMTFEMDA0
MkNEOTkgLyogSW5CeUlkVmFyaWFudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTMzMDVGQjEyMEIwRjc4ODAwQ0VCODJCIC8qIEluQnlJZFZhcmlhbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBMzgy
QzUzMTI2NjcxMTFEMDA0MkNEOTkgLyogSW5CeVZhcmlhbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMzA1RkIxMjBCMEY3ODgwMENFQjgyQiAvKiBJ
bkJ5VmFyaWFudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUEzOEQyNTBFMjU4MDBENDQwMDQyQkZERCAvKiBKU0FycmF5QnVmZmVyUHJvdG90eXBl
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTM4RDI1MEQyNTgwMEQ0MzAwNDJCRkREIC8qIEpTQXJyYXlCdWZmZXJQcm90b3R5cGVJbmxpbmVz
LmggKi87IH07CiAJCUEzOEQ1QkZDMjY2NkQzREEwMEExMDlBNiAvKiBJbkJ5U3RhdHVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzhENUJGQTI2NjZE
M0RBMDBBMTA5QTYgLyogSW5CeVN0YXR1cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUEzRUU4NTQzMjYyNTE0QjAwMEZDOUI4RCAvKiBJbnRsV29y
a2Fyb3VuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMzc2MTk0MDI2MjUxMjdDMDBDQkNCQTkgLyogSW50bFdvcmthcm91bmQuY3BwICovOyB9OwpA
QCAtMjMwNSw4ICsyMzA1LDggQEAKIAkJMEYwMTIzMzAxOTQ0RUExQjAwODQzQTBDIC8qIERGR1Zh
bHVlU3RyZW5ndGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZH
VmFsdWVTdHJlbmd0aC5jcHA7IHBhdGggPSBkZmcvREZHVmFsdWVTdHJlbmd0aC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMDEyMzMxMTk0NEVBMUIwMDg0M0EwQyAvKiBERkdW
YWx1ZVN0cmVuZ3RoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1ZhbHVl
U3RyZW5ndGguaDsgcGF0aCA9IGRmZy9ERkdWYWx1ZVN0cmVuZ3RoLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGMDMzMkJGMThBREZBRTEwMDVGOTc5QSAvKiBFeGl0aW5nSklUVHlw
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGl0aW5nSklUVHlw
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGMDMzMkMxMThCMDE3NjMwMDVG
OTc5QSAvKiBHZXRCeUlkVmFyaWFudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBHZXRCeUlkVmFyaWFudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTBGMDMzMkMyMThCMDE3NjMwMDVGOTc5QSAvKiBHZXRCeUlkVmFyaWFudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBHZXRCeUlkVmFyaWFudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjAzMzJDMTE4QjAxNzYzMDA1Rjk3OUEgLyogR2V0QnlWYXJpYW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdldEJ5VmFyaWFudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMDMzMkMyMThCMDE3NjMwMDVGOTc5QSAv
KiBHZXRCeVZhcmlhbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2V0QnlW
YXJpYW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMDMzMkM1MThCNTNGQTkw
MDVGOTc5QSAvKiBGVExXZWlnaHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
RlRMV2VpZ2h0Lmg7IHBhdGggPSBmdGwvRlRMV2VpZ2h0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGMDMzMkM3MThCNTQ2RUMwMDVGOTc5QSAvKiBGVExXZWlnaHRlZFRhcmdldC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExXZWlnaHRlZFRhcmdldC5oOyBw
YXRoID0gZnRsL0ZUTFdlaWdodGVkVGFyZ2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGMDQzOTZCMUIwM0RDMEIwMDk1OThCNyAvKiBERkdDb21iaW5lZExpdmVuZXNzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0NvbWJpbmVkTGl2ZW5lc3Mu
Y3BwOyBwYXRoID0gZGZnL0RGR0NvbWJpbmVkTGl2ZW5lc3MuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNDA2Miw4ICs0MDYyLDggQEAKIAkJNzI2QjkxQUYyNjU4MTY1MzAwOEU2
RjgyIC8qIEpJVFBsYW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUUGxh
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjZCOTFCODI2NTgyNjNDMDA4RTZG
ODIgLyogSklUQ29tcGlsYXRpb25LZXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSklUQ29tcGlsYXRpb25LZXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2
QjkxQjkyNjU4MjYzQzAwOEU2RjgyIC8qIEpJVENvbXBpbGF0aW9uS2V5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVENvbXBpbGF0aW9uS2V5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzMxMUZBMzEyNDBEQjFEMzAwM0Q0OERCIC8qIERlbGV0
ZUJ5SWRWYXJpYW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlbGV0ZUJ5SWRWYXJpYW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTczMTFGQTMzMjQwREIyNDkwMDNENDhEQiAvKiBEZWxl
dGVCeUlkVmFyaWFudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWxldGVCeUlkVmFyaWFudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTczMTFGQTMxMjQwREIxRDMwMDNENDhE
QiAvKiBEZWxldGVCeVZhcmlhbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVsZXRlQnlWYXJpYW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTczMTFGQTMzMjQwREIyNDkwMDNENDhEQiAv
KiBEZWxldGVCeVZhcmlhbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVsZXRlQnlWYXJpYW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzMxOTBEOTYyNDAwOTM0OTAwRjg5
MUM5IC8qIERlbGV0ZUJ5U3RhdHVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlbGV0ZUJ5U3Rh
dHVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzM0QjY1NTQyM0Y0QTMzMTAw
QTA2OUQxIC8qIERlbGV0ZVByb3BlcnR5U2xvdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEZWxldGVQcm9wZXJ0eVNsb3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzNBRDA2MjgyM0ZGNjYyNjAwRjUzNTkzIC8qIERlbGV0ZUJ5U3RhdHVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERlbGV0ZUJ5U3RhdHVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01
MDYyLDggKzUwNjIsOCBAQAogCQlFMzI4MkJCOTFGRTkzMEEzMDBFREFGNzEgLyogWWFyckVycm9y
Q29kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBZYXJyRXJyb3JD
b2RlLmNwcDsgcGF0aCA9IHlhcnIvWWFyckVycm9yQ29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzMjgyQkJBMUZFOTMwQTQwMEVEQUY3MSAvKiBZYXJyRXJyb3JDb2RlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFlhcnJFcnJvckNvZGUuaDsgcGF0aCA9
IHlhcnIvWWFyckVycm9yQ29kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzJD
M0M2ODIzRTk0QzFFMDBCQzk3QzAgLyogVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTMzMDVGQjAyMEIwRjc4NzAwQ0VCODJC
IC8qIEluQnlJZFZhcmlhbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSW5CeUlkVmFyaWFudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUzMzA1
RkIxMjBCMEY3ODgwMENFQjgyQiAvKiBJbkJ5SWRWYXJpYW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEluQnlJZFZhcmlhbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTMzMDVGQjAyMEIwRjc4NzAwQ0VCODJCIC8qIEluQnlWYXJpYW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluQnlWYXJpYW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMzMDVGQjEyMEIwRjc4ODAwQ0VCODJCIC8qIEluQnlWYXJp
YW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluQnlWYXJpYW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMzA5NURDMjMyMTBBMTQwMEVCNzg1NiAvKiBK
U0ludGVybmFsRmllbGRPYmplY3RJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW50ZXJuYWxGaWVs
ZE9iamVjdEltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzNENCQjIyMUZE
OTZBODAwMEVCMTc4IC8qIFJlZ0V4cEdsb2JhbERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVnRXhwR2xvYmFsRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzMzRDQkIzMjFGRDk2QTkwMDBFQjE3OCAvKiBSZWdFeHBHbG9iYWxEYXRh
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cEdsb2JhbERhdGEuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg1MzcsMTAgKzg1MzcsMTAgQEAKIAkJCQkw
RkM3MTJERDE3Q0Q4Nzc4MDA4Q0M5M0MgLyogRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmgg
Ki8sCiAJCQkJRkU1MDY4NjYxQUUyNUUyODAwMDlEQUI3IC8qIERlZmVycmVkU291cmNlRHVtcC5j
cHAgKi8sCiAJCQkJRkU1MDY4NjQxQUUyNDYzOTAwMDlEQUI3IC8qIERlZmVycmVkU291cmNlRHVt
cC5oICovLAotCQkJCTczMTFGQTMzMjQwREIyNDkwMDNENDhEQiAvKiBEZWxldGVCeUlkVmFyaWFu
dC5jcHAgKi8sCi0JCQkJNzMxMUZBMzEyNDBEQjFEMzAwM0Q0OERCIC8qIERlbGV0ZUJ5SWRWYXJp
YW50LmggKi8sCiAJCQkJNzMxOTBEOTYyNDAwOTM0OTAwRjg5MUM5IC8qIERlbGV0ZUJ5U3RhdHVz
LmNwcCAqLywKIAkJCQk3M0FEMDYyODIzRkY2NjI2MDBGNTM1OTMgLyogRGVsZXRlQnlTdGF0dXMu
aCAqLywKKwkJCQk3MzExRkEzMzI0MERCMjQ5MDAzRDQ4REIgLyogRGVsZXRlQnlWYXJpYW50LmNw
cCAqLywKKwkJCQk3MzExRkEzMTI0MERCMUQzMDAzRDQ4REIgLyogRGVsZXRlQnlWYXJpYW50Lmgg
Ki8sCiAJCQkJMEZCQzBBRTQxNDk2QzdDMTAwRDRGQkREIC8qIERGR0V4aXRQcm9maWxlLmNwcCAq
LywKIAkJCQkwRkJDMEFFNTE0OTZDN0MxMDBENEZCREQgLyogREZHRXhpdFByb2ZpbGUuaCAqLywK
IAkJCQkwRjJFQkJBQTFERURGOTRFMDA5OTAzNjkgLyogRGlyZWN0RXZhbENvZGVDYWNoZS5jcHAg
Ki8sCkBAIC04NTY4LDIxICs4NTY4LDIxIEBACiAJCQkJMTRBRDkxMTYxRENBOTdGRDAwMTRGOUZF
IC8qIEZ1bmN0aW9uQ29kZUJsb2NrLmNwcCAqLywKIAkJCQkxNEFEOTEwNzFEQ0E5Mjk0MDAxNEY5
RkUgLyogRnVuY3Rpb25Db2RlQmxvY2suaCAqLywKIAkJCQkxNDk4Q0FENTIxNEJGMzZEMDA3MTA4
NzkgLyogR2V0QnlJZE1ldGFkYXRhLmggKi8sCi0JCQkJMEYwMzMyQzExOEIwMTc2MzAwNUY5NzlB
IC8qIEdldEJ5SWRWYXJpYW50LmNwcCAqLywKLQkJCQkwRjAzMzJDMjE4QjAxNzYzMDA1Rjk3OUEg
LyogR2V0QnlJZFZhcmlhbnQuaCAqLywKIAkJCQkwRjkzMzI5NTE0Q0E3REMxMDA4NUYzQzYgLyog
R2V0QnlTdGF0dXMuY3BwICovLAogCQkJCTBGOTMzMjk2MTRDQTdEQzEwMDg1RjNDNiAvKiBHZXRC
eVN0YXR1cy5oICovLAogCQkJCTUyMEQ5OUYwMjM4OENDNzgwMDA1MDlBMyAvKiBHZXRCeVZhbEhp
c3RvcnkuaCAqLywKKwkJCQkwRjAzMzJDMTE4QjAxNzYzMDA1Rjk3OUEgLyogR2V0QnlWYXJpYW50
LmNwcCAqLywKKwkJCQkwRjAzMzJDMjE4QjAxNzYzMDA1Rjk3OUEgLyogR2V0QnlWYXJpYW50Lmgg
Ki8sCiAJCQkJMTRBRDkxMDgxRENBOTI5NDAwMTRGOUZFIC8qIEdsb2JhbENvZGVCbG9jay5oICov
LAogCQkJCTBGMEI4M0E4MTRCQ0Y1NUUwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5oICovLAogCQkJ
CTBGNDRBN0FCMjBCRjY4NUUwMDIyQjE3MSAvKiBJQ1N0YXR1c01hcC5jcHAgKi8sCiAJCQkJMEY0
NEE3QUYyMEJGNjg1RjAwMjJCMTcxIC8qIElDU3RhdHVzTWFwLmggKi8sCiAJCQkJMEY0NEE3QjUy
MEMwQkUzRjAwMjJCMTcxIC8qIElDU3RhdHVzVXRpbHMuY3BwICovLAogCQkJCTBGQjM5OUJEMjBB
RjZCMzgwMDE3RTIxMyAvKiBJQ1N0YXR1c1V0aWxzLmggKi8sCi0JCQkJRTMzMDVGQjAyMEIwRjc4
NzAwQ0VCODJCIC8qIEluQnlJZFZhcmlhbnQuY3BwICovLAotCQkJCUUzMzA1RkIxMjBCMEY3ODgw
MENFQjgyQiAvKiBJbkJ5SWRWYXJpYW50LmggKi8sCiAJCQkJQTM4RDVCRjkyNjY2RDNEQTAwQTEw
OUE2IC8qIEluQnlTdGF0dXMuY3BwICovLAogCQkJCUEzOEQ1QkZBMjY2NkQzREEwMEExMDlBNiAv
KiBJbkJ5U3RhdHVzLmggKi8sCisJCQkJRTMzMDVGQjAyMEIwRjc4NzAwQ0VCODJCIC8qIEluQnlW
YXJpYW50LmNwcCAqLywKKwkJCQlFMzMwNUZCMTIwQjBGNzg4MDBDRUI4MkIgLyogSW5CeVZhcmlh
bnQuaCAqLywKIAkJCQk3OTA1QkI2NjFEMTIwNTBFMDAxOUZFNTcgLyogSW5saW5lQWNjZXNzLmNw
cCAqLywKIAkJCQk3OTA1QkI2NzFEMTIwNTBFMDAxOUZFNTcgLyogSW5saW5lQWNjZXNzLmggKi8s
CiAJCQkJMTQ4QTdCRUQxQjgyOTc1QTAwMkQ5MTU3IC8qIElubGluZUNhbGxGcmFtZS5jcHAgKi8s
CkBAIC05NTI4LDggKzk1MjgsOCBAQAogCQkJCUZFOUYzRkM4MjYxNjNDQTkwMDY5RTg5RiAvKiBE
ZWZlclRlcm1pbmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NzNEQTRBNDc2NEM0NUZFODcx
QjA0ODUgLyogRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkJCNzNCQjFERUY4NjQ1MDAyQzAwOUUgLyogRGVsZXRlQWxsQ29kZUVmZm9ydC5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJNzMxMUZBMzIyNDBEQjFEMzAwM0Q0OERCIC8qIERlbGV0ZUJ5SWRWYXJpYW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3M0FEMDYyOTIzRkY2NjI2MDBGNTM1OTMgLyogRGVsZXRl
QnlTdGF0dXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTczMTFGQTMyMjQwREIxRDMwMDNENDhEQiAv
KiBEZWxldGVCeVZhcmlhbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTczNEI2NTU1MjNGNUMxMDQw
MEEwNjlEMSAvKiBEZWxldGVQcm9wZXJ0eVNsb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTYz
MDNDMUQ0MTkyQ0QwMDU2MDlEOSAvKiBEZXN0cnVjdGlvbk1vZGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE3N0E0MjNFMTdBMEJCRkQwMEE4REI4MSAvKiBERkdBYnN0cmFjdEhlYXAuaCBpbiBIZWFk
ZXJzICovLApAQCAtOTg4MCw5ICs5ODgwLDkgQEAKIAkJCQkwRjJCNjZFMDE3QjZCNUFCMDBBN0FF
M0YgLyogR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZF
MTE3QjZCNUFCMDBBN0FFM0YgLyogR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMTQ5OENBRDYyMTRCRjM2RDAwNzEwODc5IC8qIEdldEJ5SWRNZXRhZGF0
YS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEYwMzMyQzQxOEIwMTc2MzAwNUY5NzlBIC8qIEdldEJ5
SWRWYXJpYW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzMzJBMDE0Q0E3RENEMDA4NUYzQzYg
LyogR2V0QnlTdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUyMEQ5OUYxMjM4OENDODEwMDA1
MDlBMyAvKiBHZXRCeVZhbEhpc3RvcnkuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMDMzMkM0MThC
MDE3NjMwMDVGOTc5QSAvKiBHZXRCeVZhcmlhbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTc5NjQ2
NTZBMUI5NTJGRjAwMDMwNTlFRSAvKiBHZXRQdXRJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NDMyM0U3QTI1RDVFQzNCMDBGOTc3NzYgLyogR2V0dGVyU2V0dGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MzRFMDM1ODFFNTNCRjJGMDAyMTNGNjQgLyogR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5o
IGluIEhlYWRlcnMgKi8sCkBAIC05OTIxLDggKzk5MjEsOCBAQAogCQkJCUJDMThDNDBGMEUxNkY1
Q0QwMEIzNDQ2MCAvKiBJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjA2RERFQTE4
REE0NEFCMDBBMzgzRDAgLyogSWRlbnRpZmllcklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE1RkQwMDc2MTg5QjAzOEMwMDYzMzIzMSAvKiBJZGVudGlmaWVyc0ZhY3RvcnkuaCBpbiBIZWFk
ZXJzICovLAotCQkJCUEzODJDNTMxMjY2NzExMUQwMDQyQ0Q5OSAvKiBJbkJ5SWRWYXJpYW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBMzhENUJGQzI2NjZEM0RBMDBBMTA5QTYgLyogSW5CeVN0YXR1
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTM4MkM1MzEyNjY3MTExRDAwNDJDRDk5IC8qIEluQnlW
YXJpYW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjVGOEJDRTE1NzU0NEE5MDAyNDVCNzEgLyog
SW5jcmVtZW50YWxTd2VlcGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5OTE1RUQ4RTQ2
MDBGMTY3QjIgLyogSW5kZXhpbmdIZWFkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzlB
MTVFRDhFNDYwMEYxNjdCMiAvKiBJbmRleGluZ0hlYWRlcklubGluZXMuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IDg4NGI4ZjllOGFkOS4uNDAyNzIyY2E0
ZDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0yMjMsNyArMjIzLDcgQEAgYnl0
ZWNvZGUvRGF0YUZvcm1hdC5jcHAKIGJ5dGVjb2RlL0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFj
ay5jcHAKIGJ5dGVjb2RlL0RlZmVycmVkU291cmNlRHVtcC5jcHAKIGJ5dGVjb2RlL0RlbGV0ZUJ5
U3RhdHVzLmNwcAotYnl0ZWNvZGUvRGVsZXRlQnlJZFZhcmlhbnQuY3BwCitieXRlY29kZS9EZWxl
dGVCeVZhcmlhbnQuY3BwCiBieXRlY29kZS9EaXJlY3RFdmFsQ29kZUNhY2hlLmNwcAogYnl0ZWNv
ZGUvRXZhbENvZGVCbG9jay5jcHAKIGJ5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2Uu
Y3BwCkBAIC0yMzUsMTIgKzIzNSwxMiBAQCBieXRlY29kZS9FeGl0aW5nSklUVHlwZS5jcHAKIGJ5
dGVjb2RlL0Z1bGxDb2RlT3JpZ2luLmNwcAogYnl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suY3Bw
CiBieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAKLWJ5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNwcAor
Ynl0ZWNvZGUvR2V0QnlWYXJpYW50LmNwcAogYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2Fz
ZS5jcHAKIGJ5dGVjb2RlL0lDU3RhdHVzTWFwLmNwcAogYnl0ZWNvZGUvSUNTdGF0dXNVdGlscy5j
cHAKIGJ5dGVjb2RlL0luQnlTdGF0dXMuY3BwCi1ieXRlY29kZS9JbkJ5SWRWYXJpYW50LmNwcAor
Ynl0ZWNvZGUvSW5CeVZhcmlhbnQuY3BwCiBieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwCiBieXRl
Y29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwCiBieXRlY29kZS9JbmxpbmVDYWxsRnJhbWVTZXQuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlTdGF0
dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmNw
cAppbmRleCA3MjE2ZjRhNDBiMjAuLmUxYjg0M2NiNTk1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3BwCkBAIC0zNSw3ICszNSw3IEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCi1ib29sIERlbGV0ZUJ5U3RhdHVzOjphcHBlbmRWYXJpYW50
KGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50JiB2YXJpYW50KQorYm9vbCBEZWxldGVCeVN0YXR1czo6
YXBwZW5kVmFyaWFudChjb25zdCBEZWxldGVCeVZhcmlhbnQmIHZhcmlhbnQpCiB7CiAgICAgcmV0
dXJuIGFwcGVuZElDU3RhdHVzVmFyaWFudChtX3ZhcmlhbnRzLCB2YXJpYW50KTsKIH0KQEAgLTEx
MSw3ICsxMTEsNyBAQCBEZWxldGVCeVN0YXR1cyBEZWxldGVCeVN0YXR1czo6Y29tcHV0ZUZvclN0
dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soCiAgICAgICAgICAgICBzd2l0Y2ggKGFjY2Vz
cy50eXBlKCkpIHsKICAgICAgICAgICAgIGNhc2UgQWNjZXNzQ2FzZTo6RGVsZXRlTWlzczoKICAg
ICAgICAgICAgIGNhc2UgQWNjZXNzQ2FzZTo6RGVsZXRlTm9uQ29uZmlndXJhYmxlOiB7Ci0gICAg
ICAgICAgICAgICAgRGVsZXRlQnlJZFZhcmlhbnQgdmFyaWFudChhY2Nlc3MuaWRlbnRpZmllcigp
LCBhY2Nlc3MudHlwZSgpID09IEFjY2Vzc0Nhc2U6OkRlbGV0ZU1pc3MgPyB0cnVlIDogZmFsc2Us
IHN0cnVjdHVyZSwgbnVsbHB0ciwgaW52YWxpZE9mZnNldCk7CisgICAgICAgICAgICAgICAgRGVs
ZXRlQnlWYXJpYW50IHZhcmlhbnQoYWNjZXNzLmlkZW50aWZpZXIoKSwgYWNjZXNzLnR5cGUoKSA9
PSBBY2Nlc3NDYXNlOjpEZWxldGVNaXNzID8gdHJ1ZSA6IGZhbHNlLCBzdHJ1Y3R1cmUsIG51bGxw
dHIsIGludmFsaWRPZmZzZXQpOwogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmFwcGVuZFZh
cmlhbnQodmFyaWFudCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBEZWxldGVCeVN0YXR1
cyhKU0M6OnNsb3dWZXJzaW9uKHN1bW1hcnkpLCAqc3R1YkluZm8pOwogICAgICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMTIyLDcgKzEyMiw3IEBAIERlbGV0ZUJ5U3RhdHVzIERlbGV0ZUJ5U3RhdHVz
Ojpjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjaygKICAgICAgICAgICAg
ICAgICBpZiAoIW5ld1N0cnVjdHVyZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERlbGV0
ZUJ5U3RhdHVzKEpTQzo6c2xvd1ZlcnNpb24oc3VtbWFyeSksICpzdHViSW5mbyk7CiAgICAgICAg
ICAgICAgICAgQVNTRVJUX1VOVVNFRChvZmZzZXQsIG9mZnNldCA9PSBhY2Nlc3Mub2Zmc2V0KCkp
OyAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBEZWxldGVCeUlkVmFyaWFudCB2YXJp
YW50KGFjY2Vzcy5pZGVudGlmaWVyKCksIHRydWUsIHN0cnVjdHVyZSwgbmV3U3RydWN0dXJlLCBh
Y2Nlc3Mub2Zmc2V0KCkpOworICAgICAgICAgICAgICAgIERlbGV0ZUJ5VmFyaWFudCB2YXJpYW50
KGFjY2Vzcy5pZGVudGlmaWVyKCksIHRydWUsIHN0cnVjdHVyZSwgbmV3U3RydWN0dXJlLCBhY2Nl
c3Mub2Zmc2V0KCkpOwogCiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuYXBwZW5kVmFyaWFu
dCh2YXJpYW50KSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERlbGV0ZUJ5U3RhdHVzKEpT
Qzo6c2xvd1ZlcnNpb24oc3VtbWFyeSksICpzdHViSW5mbyk7CkBAIC0yNTEsNyArMjUxLDcgQEAg
Q2FjaGVhYmxlSWRlbnRpZmllciBEZWxldGVCeVN0YXR1czo6c2luZ2xlSWRlbnRpZmllcigpIGNv
bnN0CiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgogdm9pZCBEZWxldGVCeVN0YXR1czo6dmlz
aXRBZ2dyZWdhdGVJbXBsKFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgZm9yIChEZWxldGVCeUlk
VmFyaWFudCYgdmFyaWFudCA6IG1fdmFyaWFudHMpCisgICAgZm9yIChEZWxldGVCeVZhcmlhbnQm
IHZhcmlhbnQgOiBtX3ZhcmlhbnRzKQogICAgICAgICB2YXJpYW50LnZpc2l0QWdncmVnYXRlKHZp
c2l0b3IpOwogfQogCkBAIC0yNjAsNyArMjYwLDcgQEAgREVGSU5FX1ZJU0lUX0FHR1JFR0FURShE
ZWxldGVCeVN0YXR1cyk7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgogdm9pZCBEZWxldGVC
eVN0YXR1czo6bWFya0lmQ2hlYXAoVmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBmb3IgKERlbGV0
ZUJ5SWRWYXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykKKyAgICBmb3IgKERlbGV0ZUJ5VmFy
aWFudCYgdmFyaWFudCA6IG1fdmFyaWFudHMpCiAgICAgICAgIHZhcmlhbnQubWFya0lmQ2hlYXAo
dmlzaXRvcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9EZWxldGVCeVN0YXR1cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0
ZUJ5U3RhdHVzLmgKaW5kZXggNWJhODAzYWE5NzdmLi4zODhhZGJkMjdiNzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeVN0YXR1cy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeVN0YXR1cy5oCkBAIC0yOSw3ICsy
OSw3IEBACiAjaW5jbHVkZSAiQ2FsbExpbmtTdGF0dXMuaCIKICNpbmNsdWRlICJDb2RlT3JpZ2lu
LmgiCiAjaW5jbHVkZSAiQ29uY3VycmVudEpTTG9jay5oIgotI2luY2x1ZGUgIkRlbGV0ZUJ5SWRW
YXJpYW50LmgiCisjaW5jbHVkZSAiRGVsZXRlQnlWYXJpYW50LmgiCiAjaW5jbHVkZSAiRXhpdEZs
YWcuaCIKICNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgogI2luY2x1ZGUgIlN0dWJJbmZvU3VtbWFy
eS5oIgpAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25z
dCB7IHJldHVybiAhaXNTZXQoKTsgfQogICAgIGJvb2wgb2JzZXJ2ZWRTbG93UGF0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RhdGUgPT0gT2JzZXJ2ZWRUYWtlc1Nsb3dQYXRoOyB9CiAgICAgYm9vbCBp
c1NpbXBsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gU2ltcGxlOyB9Ci0gICAgY29uc3Qg
VmVjdG9yPERlbGV0ZUJ5SWRWYXJpYW50LCAxPiYgdmFyaWFudHMoKSB7IHJldHVybiBtX3Zhcmlh
bnRzOyB9CisgICAgY29uc3QgVmVjdG9yPERlbGV0ZUJ5VmFyaWFudCwgMT4mIHZhcmlhbnRzKCkg
eyByZXR1cm4gbV92YXJpYW50czsgfQogICAgIENhY2hlYWJsZUlkZW50aWZpZXIgc2luZ2xlSWRl
bnRpZmllcigpIGNvbnN0OwogCiAgICAgRGVsZXRlQnlTdGF0dXMgc2xvd1ZlcnNpb24oKSBjb25z
dDsKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0
b3I+IHZvaWQgbWFya0lmQ2hlYXAoVmlzaXRvciYpOwogICAgIGJvb2wgZmluYWxpemUoVk0mKTsK
IAotICAgIGJvb2wgYXBwZW5kVmFyaWFudChjb25zdCBEZWxldGVCeUlkVmFyaWFudCYpOworICAg
IGJvb2wgYXBwZW5kVmFyaWFudChjb25zdCBEZWxldGVCeVZhcmlhbnQmKTsKICAgICB2b2lkIHNo
cmlua1RvRml0KCk7CiAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKQEAgLTEw
MCw3ICsxMDAsNyBAQCBwcml2YXRlOgogICAgICAgICBjb25zdCBDb25jdXJyZW50SlNMb2NrZXIm
LCBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKik7CiAjZW5kaWYK
IAotICAgIFZlY3RvcjxEZWxldGVCeUlkVmFyaWFudCwgMT4gbV92YXJpYW50czsKKyAgICBWZWN0
b3I8RGVsZXRlQnlWYXJpYW50LCAxPiBtX3ZhcmlhbnRzOwogICAgIFN0YXRlIG1fc3RhdGU7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlJ
ZFZhcmlhbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5VmFy
aWFudC5jcHAKc2ltaWxhcml0eSBpbmRleCA3NiUKcmVuYW1lIGZyb20gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5SWRWYXJpYW50LmNwcApyZW5hbWUgdG8gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5VmFyaWFudC5jcHAKaW5kZXggYzZlY2MzOTBk
YzY0Li5hZDVlNGJhMWRhZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9EZWxldGVCeUlkVmFyaWFudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0RlbGV0ZUJ5VmFyaWFudC5jcHAKQEAgLTI0LDE0ICsyNCwxMyBAQAogICovCiAKICNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJEZWxldGVCeUlkVmFyaWFudC5oIgorI2luY2x1
ZGUgIkRlbGV0ZUJ5VmFyaWFudC5oIgogCiAjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllcklu
bGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKLURlbGV0ZUJ5SWRWYXJpYW50OjpEZWxldGVC
eUlkVmFyaWFudChDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgcmVzdWx0LAot
ICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0KQorRGVsZXRlQnlWYXJpYW50OjpEZWxldGVCeVZhcmlhbnQoQ2Fj
aGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIHJlc3VsdCwgU3RydWN0dXJlKiBvbGRT
dHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQp
CiAgICAgOiBtX3Jlc3VsdChyZXN1bHQpCiAgICAgLCBtX29sZFN0cnVjdHVyZShvbGRTdHJ1Y3R1
cmUpCiAgICAgLCBtX25ld1N0cnVjdHVyZShuZXdTdHJ1Y3R1cmUpCkBAIC00NSwxNCArNDQsMTQg
QEAgRGVsZXRlQnlJZFZhcmlhbnQ6OkRlbGV0ZUJ5SWRWYXJpYW50KENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgYm9vbCByZXN1bHQKICAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZSk7
CiB9CiAKLURlbGV0ZUJ5SWRWYXJpYW50Ojp+RGVsZXRlQnlJZFZhcmlhbnQoKSB7IH0KK0RlbGV0
ZUJ5VmFyaWFudDo6fkRlbGV0ZUJ5VmFyaWFudCgpIHsgfQogCi1EZWxldGVCeUlkVmFyaWFudDo6
RGVsZXRlQnlJZFZhcmlhbnQoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIG90aGVyKQorRGVsZXRl
QnlWYXJpYW50OjpEZWxldGVCeVZhcmlhbnQoY29uc3QgRGVsZXRlQnlWYXJpYW50JiBvdGhlcikK
IHsKICAgICAqdGhpcyA9IG90aGVyOwogfQogCi1EZWxldGVCeUlkVmFyaWFudCYgRGVsZXRlQnlJ
ZFZhcmlhbnQ6Om9wZXJhdG9yPShjb25zdCBEZWxldGVCeUlkVmFyaWFudCYgb3RoZXIpCitEZWxl
dGVCeVZhcmlhbnQmIERlbGV0ZUJ5VmFyaWFudDo6b3BlcmF0b3I9KGNvbnN0IERlbGV0ZUJ5VmFy
aWFudCYgb3RoZXIpCiB7CiAgICAgbV9pZGVudGlmaWVyID0gb3RoZXIubV9pZGVudGlmaWVyOwog
ICAgIG1fcmVzdWx0ID0gb3RoZXIubV9yZXN1bHQ7CkBAIC02Miw3ICs2MSw3IEBAIERlbGV0ZUJ5
SWRWYXJpYW50JiBEZWxldGVCeUlkVmFyaWFudDo6b3BlcmF0b3I9KGNvbnN0IERlbGV0ZUJ5SWRW
YXJpYW50JiBvdGhlcikKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKLWJvb2wgRGVsZXRlQnlJZFZh
cmlhbnQ6OmF0dGVtcHRUb01lcmdlKGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50JiBvdGhlcikKK2Jv
b2wgRGVsZXRlQnlWYXJpYW50OjphdHRlbXB0VG9NZXJnZShjb25zdCBEZWxldGVCeVZhcmlhbnQm
IG90aGVyKQogewogICAgIGlmICghIW1faWRlbnRpZmllciAhPSAhIW90aGVyLm1faWRlbnRpZmll
cikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODMsMjEgKzgyLDIxIEBAIGJvb2wgRGVsZXRl
QnlJZFZhcmlhbnQ6OmF0dGVtcHRUb01lcmdlKGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50JiBvdGhl
cikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBEZWxldGVCeUlkVmFyaWFudDo6d3JpdGVz
U3RydWN0dXJlcygpIGNvbnN0Citib29sIERlbGV0ZUJ5VmFyaWFudDo6d3JpdGVzU3RydWN0dXJl
cygpIGNvbnN0CiB7CiAgICAgcmV0dXJuICEhbmV3U3RydWN0dXJlKCk7CiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFZpc2l0b3I+Ci12b2lkIERlbGV0ZUJ5SWRWYXJpYW50Ojp2aXNpdEFnZ3JlZ2F0
ZUltcGwoVmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgRGVsZXRlQnlWYXJpYW50Ojp2aXNpdEFnZ3Jl
Z2F0ZUltcGwoVmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBtX2lkZW50aWZpZXIudmlzaXRBZ2dy
ZWdhdGUodmlzaXRvcik7CiB9CiAKLURFRklORV9WSVNJVF9BR0dSRUdBVEUoRGVsZXRlQnlJZFZh
cmlhbnQpOworREVGSU5FX1ZJU0lUX0FHR1JFR0FURShEZWxldGVCeVZhcmlhbnQpOwogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgotdm9pZCBEZWxldGVCeUlkVmFyaWFudDo6bWFya0lmQ2hl
YXAoVmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgRGVsZXRlQnlWYXJpYW50OjptYXJrSWZDaGVhcChW
aXNpdG9yJiB2aXNpdG9yKQogewogICAgIGlmIChtX29sZFN0cnVjdHVyZSkKICAgICAgICAgbV9v
bGRTdHJ1Y3R1cmUtPm1hcmtJZkNoZWFwKHZpc2l0b3IpOwpAQCAtMTA1LDE1ICsxMDQsMTUgQEAg
dm9pZCBEZWxldGVCeUlkVmFyaWFudDo6bWFya0lmQ2hlYXAoVmlzaXRvciYgdmlzaXRvcikKICAg
ICAgICAgbV9uZXdTdHJ1Y3R1cmUtPm1hcmtJZkNoZWFwKHZpc2l0b3IpOwogfQogCi10ZW1wbGF0
ZSB2b2lkIERlbGV0ZUJ5SWRWYXJpYW50OjptYXJrSWZDaGVhcChBYnN0cmFjdFNsb3RWaXNpdG9y
Jik7Ci10ZW1wbGF0ZSB2b2lkIERlbGV0ZUJ5SWRWYXJpYW50OjptYXJrSWZDaGVhcChTbG90Vmlz
aXRvciYpOwordGVtcGxhdGUgdm9pZCBEZWxldGVCeVZhcmlhbnQ6Om1hcmtJZkNoZWFwKEFic3Ry
YWN0U2xvdFZpc2l0b3ImKTsKK3RlbXBsYXRlIHZvaWQgRGVsZXRlQnlWYXJpYW50OjptYXJrSWZD
aGVhcChTbG90VmlzaXRvciYpOwogCi12b2lkIERlbGV0ZUJ5SWRWYXJpYW50OjpkdW1wKFByaW50
U3RyZWFtJiBvdXQpIGNvbnN0Cit2b2lkIERlbGV0ZUJ5VmFyaWFudDo6ZHVtcChQcmludFN0cmVh
bSYgb3V0KSBjb25zdAogewogICAgIGR1bXBJbkNvbnRleHQob3V0LCBudWxscHRyKTsKIH0KIAot
Ym9vbCBEZWxldGVCeUlkVmFyaWFudDo6ZmluYWxpemUoVk0mIHZtKQorYm9vbCBEZWxldGVCeVZh
cmlhbnQ6OmZpbmFsaXplKFZNJiB2bSkKIHsKICAgICBpZiAoIXZtLmhlYXAuaXNNYXJrZWQobV9v
bGRTdHJ1Y3R1cmUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMjIsNyArMTIxLDcgQEAg
Ym9vbCBEZWxldGVCeUlkVmFyaWFudDo6ZmluYWxpemUoVk0mIHZtKQogICAgIHJldHVybiB0cnVl
OwogfQogCi12b2lkIERlbGV0ZUJ5SWRWYXJpYW50OjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFt
JiBvdXQsIER1bXBDb250ZXh0KikgY29uc3QKK3ZvaWQgRGVsZXRlQnlWYXJpYW50OjpkdW1wSW5D
b250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KikgY29uc3QKIHsKICAgICBvdXQu
cHJpbnQoIjwiKTsKICAgICBvdXQucHJpbnQoImlkPSciLCBtX2lkZW50aWZpZXIsICInLCByZXN1
bHQ9IiwgbV9yZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0RlbGV0ZUJ5SWRWYXJpYW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RGVsZXRlQnlWYXJpYW50LmgKc2ltaWxhcml0eSBpbmRleCA5MCUKcmVuYW1lIGZyb20gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5SWRWYXJpYW50LmgKcmVuYW1lIHRvIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeVZhcmlhbnQuaAppbmRleCAwODY3
NzU0NjlkY2EuLmUyMzY0OTIyMGUxMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0RlbGV0ZUJ5SWRWYXJpYW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0RlbGV0ZUJ5VmFyaWFudC5oCkBAIC0zOCwxNyArMzgsMTcgQEAgY2xhc3MgQ2Fs
bExpbmtTdGF0dXM7CiBjbGFzcyBEZWxldGVCeVN0YXR1czsKIHN0cnVjdCBEdW1wQ29udGV4dDsK
IAotY2xhc3MgRGVsZXRlQnlJZFZhcmlhbnQgeworY2xhc3MgRGVsZXRlQnlWYXJpYW50IHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBEZWxldGVCeUlkVmFyaWFu
dCgKKyAgICBEZWxldGVCeVZhcmlhbnQoCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXIsIGJv
b2wgcmVzdWx0LAogICAgICAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdXRyZSwgU3RydWN0dXJlKiBu
ZXdTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0KTsKIAotICAgIH5EZWxldGVCeUlkVmFyaWFudCgp
OworICAgIH5EZWxldGVCeVZhcmlhbnQoKTsKIAotICAgIERlbGV0ZUJ5SWRWYXJpYW50KGNvbnN0
IERlbGV0ZUJ5SWRWYXJpYW50Jik7Ci0gICAgRGVsZXRlQnlJZFZhcmlhbnQmIG9wZXJhdG9yPShj
b25zdCBEZWxldGVCeUlkVmFyaWFudCYpOworICAgIERlbGV0ZUJ5VmFyaWFudChjb25zdCBEZWxl
dGVCeVZhcmlhbnQmKTsKKyAgICBEZWxldGVCeVZhcmlhbnQmIG9wZXJhdG9yPShjb25zdCBEZWxl
dGVCeVZhcmlhbnQmKTsKIAogICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV9vbGRTdHJ1Y3R1cmU7IH0KICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbmV3U3RydWN0dXJlOyB9CkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgaXNQcm9wZXJ0eVVuc2V0KCkgY29uc3QgeyByZXR1cm4gb2Zmc2V0KCkgPT0g
aW52YWxpZE9mZnNldDsgfQogCi0gICAgYm9vbCBhdHRlbXB0VG9NZXJnZShjb25zdCBEZWxldGVC
eUlkVmFyaWFudCYgb3RoZXIpOworICAgIGJvb2wgYXR0ZW1wdFRvTWVyZ2UoY29uc3QgRGVsZXRl
QnlWYXJpYW50JiBvdGhlcik7CiAKICAgICBERUNMQVJFX1ZJU0lUX0FHR1JFR0FURTsKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPiB2b2lkIG1hcmtJZkNoZWFwKFZpc2l0b3ImKTsKQEAg
LTcwLDcgKzcwLDcgQEAgcHVibGljOgogCiAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKLSAgICBib29sIG92ZXJsYXBz
KGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50JiBvdGhlcikKKyAgICBib29sIG92ZXJsYXBzKGNvbnN0
IERlbGV0ZUJ5VmFyaWFudCYgb3RoZXIpCiAgICAgewogICAgICAgICBpZiAoISFtX2lkZW50aWZp
ZXIgIT0gISFvdGhlci5tX2lkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwCmluZGV4IGZh
ZWIzOGMxYWUxYS4uMmEyNDRlNWMwMWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9HZXRCeVN0YXR1cy5jcHAKQEAgLTQwLDcgKzQwLDcgQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKLWJvb2wgR2V0QnlTdGF0dXM6OmFwcGVuZFZhcmlhbnQoY29uc3QgR2V0QnlJZFZhcmlh
bnQmIHZhcmlhbnQpCitib29sIEdldEJ5U3RhdHVzOjphcHBlbmRWYXJpYW50KGNvbnN0IEdldEJ5
VmFyaWFudCYgdmFyaWFudCkKIHsKICAgICByZXR1cm4gYXBwZW5kSUNTdGF0dXNWYXJpYW50KG1f
dmFyaWFudHMsIHZhcmlhbnQpOwogfQpAQCAtMTQwLDcgKzE0MCw3IEBAIEdldEJ5U3RhdHVzIEdl
dEJ5U3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgQnl0
ZWNvZGVJbmRlCiAgICAgICAgIHJldHVybiBHZXRCeVN0YXR1cyhOb0luZm9ybWF0aW9uLCBmYWxz
ZSk7CiAKICAgICBHZXRCeVN0YXR1cyByZXN1bHQoU2ltcGxlLCBmYWxzZSk7Ci0gICAgcmVzdWx0
LmFwcGVuZFZhcmlhbnQoR2V0QnlJZFZhcmlhbnQobnVsbHB0ciwgU3RydWN0dXJlU2V0KHN0cnVj
dHVyZSksIG9mZnNldCkpOworICAgIHJlc3VsdC5hcHBlbmRWYXJpYW50KEdldEJ5VmFyaWFudChu
dWxscHRyLCBTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSwgb2Zmc2V0KSk7CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIApAQCAtMjE5LDcgKzIxOSw3IEBAIEdldEJ5U3RhdHVzIEdldEJ5U3RhdHVzOjpj
b21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjaygKICAgICAgICAgQ2FjaGVh
YmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gc3R1YkluZm8tPmlkZW50aWZpZXIoKTsKICAgICAg
ICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IGlkZW50aWZpZXIudWlkKCk7CiAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKHVpZCk7Ci0gICAgICAgIEdldEJ5SWRWYXJpYW50IHZhcmlhbnQoV1RGTW92
ZShpZGVudGlmaWVyKSk7CisgICAgICAgIEdldEJ5VmFyaWFudCB2YXJpYW50KFdURk1vdmUoaWRl
bnRpZmllcikpOwogICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgICAgICB2YXJpYW50
Lm1fb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkodWlkLCBhdHRyaWJ1dGVzKTsK
ICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KHZhcmlhbnQubV9vZmZzZXQpKQpAQCAtMjYzLDcg
KzI2Myw3IEBAIEdldEJ5U3RhdHVzIEdldEJ5U3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9XaXRo
b3V0RXhpdFNpdGVGZWVkYmFjaygKICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
YWNjZXNzLnN0cnVjdHVyZSgpOwogICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUpIHsKICAgICAg
ICAgICAgICAgICAvLyBUaGUgbnVsbCBzdHJ1Y3R1cmUgY2FzZXMgYXJpc2UgZHVlIHRvIGFycmF5
Lmxlbmd0aCBhbmQgc3RyaW5nLmxlbmd0aC4gV2UgaGF2ZSBubyB3YXkKLSAgICAgICAgICAgICAg
ICAvLyBvZiBjcmVhdGluZyBhIEdldEJ5SWRWYXJpYW50IGZvciB0aG9zZSwgYW5kIHdlIGRvbid0
IHJlYWxseSBoYXZlIHRvIHNpbmNlIHRoZSBERkcKKyAgICAgICAgICAgICAgICAvLyBvZiBjcmVh
dGluZyBhIEdldEJ5VmFyaWFudCBmb3IgdGhvc2UsIGFuZCB3ZSBkb24ndCByZWFsbHkgaGF2ZSB0
byBzaW5jZSB0aGUgREZHCiAgICAgICAgICAgICAgICAgLy8gaGFuZGxlcyB0aG9zZSBjYXNlcyBp
biBGaXh1cFBoYXNlIHVzaW5nIHZhbHVlIHByb2ZpbGluZy4gVGhhdCdzIGEgYml0IGF3a3dhcmQg
LSB3ZQogICAgICAgICAgICAgICAgIC8vIHNob3VsZG4ndCBoYXZlIHRvIHVzZSB2YWx1ZSBwcm9m
aWxpbmcgdG8gZGlzY292ZXIgc29tZXRoaW5nIHRoYXQgdGhlIEFjY2Vzc0Nhc2UKICAgICAgICAg
ICAgICAgICAvLyBjb3VsZCBoYXZlIHRvbGQgdXMuIEJ1dCwgaXQgd29ya3Mgd2VsbCBlbm91Z2gu
IFNvLCBvdXIgb25seSBjb25jZXJuIGhlcmUgaXMgdG8gbm90CkBAIC0zMjIsNyArMzIyLDcgQEAg
R2V0QnlTdGF0dXMgR2V0QnlTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0
ZUZlZWRiYWNrKAogICAgICAgICAgICAgICAgIH0gfQogCiAgICAgICAgICAgICAgICAgQVNTRVJU
KChBY2Nlc3NDYXNlOjpNaXNzID09IGFjY2Vzcy50eXBlKCkgfHwgYWNjZXNzLmlzQ3VzdG9tKCkp
ID09IChhY2Nlc3Mub2Zmc2V0KCkgPT0gaW52YWxpZE9mZnNldCkpOwotICAgICAgICAgICAgICAg
IEdldEJ5SWRWYXJpYW50IHZhcmlhbnQoYWNjZXNzLmlkZW50aWZpZXIoKSwgU3RydWN0dXJlU2V0
KHN0cnVjdHVyZSksIGNvbXBsZXhHZXRTdGF0dXMub2Zmc2V0KCksCisgICAgICAgICAgICAgICAg
R2V0QnlWYXJpYW50IHZhcmlhbnQoYWNjZXNzLmlkZW50aWZpZXIoKSwgU3RydWN0dXJlU2V0KHN0
cnVjdHVyZSksIGNvbXBsZXhHZXRTdGF0dXMub2Zmc2V0KCksCiAgICAgICAgICAgICAgICAgICAg
IGNvbXBsZXhHZXRTdGF0dXMuY29uZGl0aW9uU2V0KCksIFdURk1vdmUoY2FsbExpbmtTdGF0dXMp
LAogICAgICAgICAgICAgICAgICAgICBpbnRyaW5zaWNGdW5jdGlvbiwKICAgICAgICAgICAgICAg
ICAgICAgY3VzdG9tQWNjZXNzb3JHZXR0ZXIsCkBAIC00MzUsNyArNDM1LDcgQEAgR2V0QnlTdGF0
dXMgR2V0QnlTdGF0dXM6OmNvbXB1dGVGb3IoY29uc3QgU3RydWN0dXJlU2V0JiBzZXQsIFVuaXF1
ZWRTdHJpbmdJbXBsKgogICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3Nvck9yVmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gR2V0QnlTdGF0dXMo
TGlrZWx5VGFrZXNTbG93UGF0aCk7CiAgICAgICAgIAotICAgICAgICBpZiAoIXJlc3VsdC5hcHBl
bmRWYXJpYW50KEdldEJ5SWRWYXJpYW50KG51bGxwdHIsIHN0cnVjdHVyZSwgb2Zmc2V0KSkpCisg
ICAgICAgIGlmICghcmVzdWx0LmFwcGVuZFZhcmlhbnQoR2V0QnlWYXJpYW50KG51bGxwdHIsIHN0
cnVjdHVyZSwgb2Zmc2V0KSkpCiAgICAgICAgICAgICByZXR1cm4gR2V0QnlTdGF0dXMoTGlrZWx5
VGFrZXNTbG93UGF0aCk7CiAgICAgfQogICAgIApAQCAtNDk3LDcgKzQ5Nyw3IEBAIHZvaWQgR2V0
QnlTdGF0dXM6Om1lcmdlKGNvbnN0IEdldEJ5U3RhdHVzJiBvdGhlcikKICAgICAgICAgaWYgKG1f
c3RhdGUgIT0gb3RoZXIubV9zdGF0ZSkKICAgICAgICAgICAgIHJldHVybiBtZXJnZVNsb3coKTsK
ICAgICAgICAgCi0gICAgICAgIGZvciAoY29uc3QgR2V0QnlJZFZhcmlhbnQmIG90aGVyVmFyaWFu
dCA6IG90aGVyLm1fdmFyaWFudHMpIHsKKyAgICAgICAgZm9yIChjb25zdCBHZXRCeVZhcmlhbnQm
IG90aGVyVmFyaWFudCA6IG90aGVyLm1fdmFyaWFudHMpIHsKICAgICAgICAgICAgIGlmICghYXBw
ZW5kVmFyaWFudChvdGhlclZhcmlhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBtZXJnZVNs
b3coKTsKICAgICAgICAgfQpAQCAtNTQzLDcgKzU0Myw3IEBAIHZvaWQgR2V0QnlTdGF0dXM6OnZp
c2l0QWdncmVnYXRlSW1wbChWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIGlmIChpc01vZHVsZU5h
bWVzcGFjZSgpKQogICAgICAgICBtX21vZHVsZU5hbWVzcGFjZURhdGEtPm1faWRlbnRpZmllci52
aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKLSAgICBmb3IgKEdldEJ5SWRWYXJpYW50JiB2YXJpYW50
IDogbV92YXJpYW50cykKKyAgICBmb3IgKEdldEJ5VmFyaWFudCYgdmFyaWFudCA6IG1fdmFyaWFu
dHMpCiAgICAgICAgIHZhcmlhbnQudmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CiB9CiAKQEAgLTU1
Miw3ICs1NTIsNyBAQCBERUZJTkVfVklTSVRfQUdHUkVHQVRFKEdldEJ5U3RhdHVzKTsKIHRlbXBs
YXRlPHR5cGVuYW1lIFZpc2l0b3I+CiB2b2lkIEdldEJ5U3RhdHVzOjptYXJrSWZDaGVhcChWaXNp
dG9yJiB2aXNpdG9yKQogewotICAgIGZvciAoR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBtX3Zh
cmlhbnRzKQorICAgIGZvciAoR2V0QnlWYXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykKICAg
ICAgICAgdmFyaWFudC5tYXJrSWZDaGVhcCh2aXNpdG9yKTsKIH0KIApAQCAtNTYxLDcgKzU2MSw3
IEBAIHRlbXBsYXRlIHZvaWQgR2V0QnlTdGF0dXM6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7
CiAKIGJvb2wgR2V0QnlTdGF0dXM6OmZpbmFsaXplKFZNJiB2bSkKIHsKLSAgICBmb3IgKEdldEJ5
SWRWYXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykgeworICAgIGZvciAoR2V0QnlWYXJpYW50
JiB2YXJpYW50IDogbV92YXJpYW50cykgewogICAgICAgICBpZiAoIXZhcmlhbnQuZmluYWxpemUo
dm0pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmgKaW5kZXggMjQzNzMwZmRlMzNhLi4zNjY5MmQ5
YzA4NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0
YXR1cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5o
CkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgogI2luY2x1ZGUgIkNv
bmN1cnJlbnRKU0xvY2suaCIKICNpbmNsdWRlICJFeGl0RmxhZy5oIgotI2luY2x1ZGUgIkdldEJ5
SWRWYXJpYW50LmgiCisjaW5jbHVkZSAiR2V0QnlWYXJpYW50LmgiCiAjaW5jbHVkZSAiSUNTdGF0
dXNNYXAuaCIKICNpbmNsdWRlICJTY29wZU9mZnNldC5oIgogI2luY2x1ZGUgIlN0dWJJbmZvU3Vt
bWFyeS5oIgpAQCAtOTksOSArOTksOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc01vZHVsZU5hbWVz
cGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gTW9kdWxlTmFtZXNwYWNlOyB9CiAKICAg
ICBzaXplX3QgbnVtVmFyaWFudHMoKSBjb25zdCB7IHJldHVybiBtX3ZhcmlhbnRzLnNpemUoKTsg
fQotICAgIGNvbnN0IFZlY3RvcjxHZXRCeUlkVmFyaWFudCwgMT4mIHZhcmlhbnRzKCkgY29uc3Qg
eyByZXR1cm4gbV92YXJpYW50czsgfQotICAgIGNvbnN0IEdldEJ5SWRWYXJpYW50JiBhdChzaXpl
X3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFudHNbaW5kZXhdOyB9Ci0gICAgY29uc3Qg
R2V0QnlJZFZhcmlhbnQmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBh
dChpbmRleCk7IH0KKyAgICBjb25zdCBWZWN0b3I8R2V0QnlWYXJpYW50LCAxPiYgdmFyaWFudHMo
KSBjb25zdCB7IHJldHVybiBtX3ZhcmlhbnRzOyB9CisgICAgY29uc3QgR2V0QnlWYXJpYW50JiBh
dChzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFudHNbaW5kZXhdOyB9CisgICAg
Y29uc3QgR2V0QnlWYXJpYW50JiBvcGVyYXRvcltdKHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1
cm4gYXQoaW5kZXgpOyB9CiAKICAgICBib29sIHRha2VzU2xvd1BhdGgoKSBjb25zdCB7IHJldHVy
biBtX3N0YXRlID09IExpa2VseVRha2VzU2xvd1BhdGggfHwgbV9zdGF0ZSA9PSBPYnNlcnZlZFRh
a2VzU2xvd1BhdGggfHwgbV9zdGF0ZSA9PSBNYWtlc0NhbGxzIHx8IG1fc3RhdGUgPT0gT2JzZXJ2
ZWRTbG93UGF0aEFuZE1ha2VzQ2FsbHMgfHwgbV9zdGF0ZSA9PSBDdXN0b20gfHwgbV9zdGF0ZSA9
PSBNb2R1bGVOYW1lc3BhY2U7IH0KICAgICBib29sIG9ic2VydmVkU3RydWN0dXJlU3R1YkluZm9T
bG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gT2JzZXJ2ZWRUYWtlc1Nsb3dQYXRo
IHx8IG1fc3RhdGUgPT0gT2JzZXJ2ZWRTbG93UGF0aEFuZE1ha2VzQ2FsbHM7IH0KQEAgLTEyMiw3
ICsxMjIsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4gdm9pZCBt
YXJrSWZDaGVhcChWaXNpdG9yJik7CiAgICAgYm9vbCBmaW5hbGl6ZShWTSYpOyAvLyBSZXR1cm4g
dHJ1ZSBpZiB0aGlzIGdldHMgdG8gbGl2ZS4KIAotICAgIGJvb2wgYXBwZW5kVmFyaWFudChjb25z
dCBHZXRCeUlkVmFyaWFudCYpOworICAgIGJvb2wgYXBwZW5kVmFyaWFudChjb25zdCBHZXRCeVZh
cmlhbnQmKTsKICAgICB2b2lkIHNocmlua1RvRml0KCk7CiAKICAgICB2b2lkIGR1bXAoUHJpbnRT
dHJlYW0mKSBjb25zdDsKQEAgLTE0Nyw3ICsxNDcsNyBAQCBwcml2YXRlOgogICAgICAgICBDYWNo
ZWFibGVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICB9OwogCi0gICAgVmVjdG9yPEdldEJ5
SWRWYXJpYW50LCAxPiBtX3ZhcmlhbnRzOworICAgIFZlY3RvcjxHZXRCeVZhcmlhbnQsIDE+IG1f
dmFyaWFudHM7CiAgICAgQm94PE1vZHVsZU5hbWVzcGFjZURhdGE+IG1fbW9kdWxlTmFtZXNwYWNl
RGF0YTsKICAgICBTdGF0ZSBtX3N0YXRlOwogICAgIGJvb2wgbV93YXNTZWVuSW5KSVQgeyBmYWxz
ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRW
YXJpYW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVZhcmlhbnQu
Y3BwCnNpbWlsYXJpdHkgaW5kZXggODMlCnJlbmFtZSBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5jcHAKcmVuYW1lIHRvIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9HZXRCeVZhcmlhbnQuY3BwCmluZGV4IDdjNzliYTExYThkNy4uNjc2NWY1
NWJmYWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJ
ZFZhcmlhbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVZh
cmlhbnQuY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIkdldEJ5SWRWYXJpYW50LmgiCisjaW5jbHVkZSAiR2V0QnlWYXJpYW50LmgiCiAK
ICNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oIgogI2luY2x1ZGUgIkNhbGxM
aW5rU3RhdHVzLmgiCkBAIC0zMiwxNCArMzIsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotR2V0
QnlJZFZhcmlhbnQ6OkdldEJ5SWRWYXJpYW50KAotICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRl
bnRpZmllciwKLSAgICBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCwgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0LAotICAgIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25k
aXRpb25TZXQsCi0gICAgc3RkOjp1bmlxdWVfcHRyPENhbGxMaW5rU3RhdHVzPiBjYWxsTGlua1N0
YXR1cywKLSAgICBKU0Z1bmN0aW9uKiBpbnRyaW5zaWNGdW5jdGlvbiwKLSAgICBGdW5jdGlvblB0
cjxDdXN0b21BY2Nlc3NvclB0clRhZz4gY3VzdG9tQWNjZXNzb3JHZXR0ZXIsCi0gICAgc3RkOjp1
bmlxdWVfcHRyPERPTUF0dHJpYnV0ZUFubm90YXRpb24+IGRvbUF0dHJpYnV0ZSkKK0dldEJ5VmFy
aWFudDo6R2V0QnlWYXJpYW50KENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3Qg
U3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgY29uc3Qg
T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgc3RkOjp1bmlxdWVfcHRy
PENhbGxMaW5rU3RhdHVzPiBjYWxsTGlua1N0YXR1cywgSlNGdW5jdGlvbiogaW50cmluc2ljRnVu
Y3Rpb24sIEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPiBjdXN0b21BY2Nlc3Nvckdl
dHRlciwgc3RkOjp1bmlxdWVfcHRyPERPTUF0dHJpYnV0ZUFubm90YXRpb24+IGRvbUF0dHJpYnV0
ZSkKICAgICA6IG1fc3RydWN0dXJlU2V0KHN0cnVjdHVyZVNldCkKICAgICAsIG1fY29uZGl0aW9u
U2V0KGNvbmRpdGlvblNldCkKICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKQEAgLTU2LDE2ICs0OSwx
NiBAQCBHZXRCeUlkVmFyaWFudDo6R2V0QnlJZFZhcmlhbnQoCiAgICAgaWYgKGludHJpbnNpY0Z1
bmN0aW9uKQogICAgICAgICBBU1NFUlQoaW50cmluc2ljKCkgIT0gTm9JbnRyaW5zaWMpOwogfQot
ICAgICAgICAgICAgICAgICAgICAgCi1HZXRCeUlkVmFyaWFudDo6fkdldEJ5SWRWYXJpYW50KCkg
eyB9CiAKLUdldEJ5SWRWYXJpYW50OjpHZXRCeUlkVmFyaWFudChjb25zdCBHZXRCeUlkVmFyaWFu
dCYgb3RoZXIpCi0gICAgOiBHZXRCeUlkVmFyaWFudChvdGhlci5tX2lkZW50aWZpZXIpCitHZXRC
eVZhcmlhbnQ6On5HZXRCeVZhcmlhbnQoKSB7IH0KKworR2V0QnlWYXJpYW50OjpHZXRCeVZhcmlh
bnQoY29uc3QgR2V0QnlWYXJpYW50JiBvdGhlcikKKyAgICA6IEdldEJ5VmFyaWFudChvdGhlci5t
X2lkZW50aWZpZXIpCiB7CiAgICAgKnRoaXMgPSBvdGhlcjsKIH0KIAotR2V0QnlJZFZhcmlhbnQm
IEdldEJ5SWRWYXJpYW50OjpvcGVyYXRvcj0oY29uc3QgR2V0QnlJZFZhcmlhbnQmIG90aGVyKQor
R2V0QnlWYXJpYW50JiBHZXRCeVZhcmlhbnQ6Om9wZXJhdG9yPShjb25zdCBHZXRCeVZhcmlhbnQm
IG90aGVyKQogewogICAgIG1faWRlbnRpZmllciA9IG90aGVyLm1faWRlbnRpZmllcjsKICAgICBt
X3N0cnVjdHVyZVNldCA9IG90aGVyLm1fc3RydWN0dXJlU2V0OwpAQCAtODQsNyArNzcsNyBAQCBH
ZXRCeUlkVmFyaWFudCYgR2V0QnlJZFZhcmlhbnQ6Om9wZXJhdG9yPShjb25zdCBHZXRCeUlkVmFy
aWFudCYgb3RoZXIpCiAgICAgcmV0dXJuICp0aGlzOwogfQogCi1pbmxpbmUgYm9vbCBHZXRCeUlk
VmFyaWFudDo6Y2FuTWVyZ2VJbnRyaW5zaWNTdHJ1Y3R1cmVzKGNvbnN0IEdldEJ5SWRWYXJpYW50
JiBvdGhlcikgY29uc3QKK2lubGluZSBib29sIEdldEJ5VmFyaWFudDo6Y2FuTWVyZ2VJbnRyaW5z
aWNTdHJ1Y3R1cmVzKGNvbnN0IEdldEJ5VmFyaWFudCYgb3RoZXIpIGNvbnN0CiB7CiAgICAgaWYg
KG1faW50cmluc2ljRnVuY3Rpb24gIT0gb3RoZXIubV9pbnRyaW5zaWNGdW5jdGlvbikKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA1LDcgKzk4LDcgQEAgaW5saW5lIGJvb2wgR2V0QnlJZFZh
cmlhbnQ6OmNhbk1lcmdlSW50cmluc2ljU3RydWN0dXJlcyhjb25zdCBHZXRCeUlkVmFyaWFudCYg
b3QKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1ib29sIEdldEJ5SWRW
YXJpYW50OjphdHRlbXB0VG9NZXJnZShjb25zdCBHZXRCeUlkVmFyaWFudCYgb3RoZXIpCitib29s
IEdldEJ5VmFyaWFudDo6YXR0ZW1wdFRvTWVyZ2UoY29uc3QgR2V0QnlWYXJpYW50JiBvdGhlcikK
IHsKICAgICBpZiAoISFtX2lkZW50aWZpZXIgIT0gISFvdGhlci5tX2lkZW50aWZpZXIpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTE1NywyMyArMTUwLDIzIEBAIGJvb2wgR2V0QnlJZFZhcmlh
bnQ6OmF0dGVtcHRUb01lcmdlKGNvbnN0IEdldEJ5SWRWYXJpYW50JiBvdGhlcikKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KLXZvaWQgR2V0QnlJZFZhcmlhbnQ6OnZpc2l0QWdncmVn
YXRlSW1wbChWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBHZXRCeVZhcmlhbnQ6OnZpc2l0QWdncmVn
YXRlSW1wbChWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIG1faWRlbnRpZmllci52aXNpdEFnZ3Jl
Z2F0ZSh2aXNpdG9yKTsKIH0KIAotREVGSU5FX1ZJU0lUX0FHR1JFR0FURShHZXRCeUlkVmFyaWFu
dCk7CitERUZJTkVfVklTSVRfQUdHUkVHQVRFKEdldEJ5VmFyaWFudCk7CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFZpc2l0b3I+Ci12b2lkIEdldEJ5SWRWYXJpYW50OjptYXJrSWZDaGVhcChWaXNpdG9y
JiB2aXNpdG9yKQordm9pZCBHZXRCeVZhcmlhbnQ6Om1hcmtJZkNoZWFwKFZpc2l0b3ImIHZpc2l0
b3IpCiB7CiAgICAgbV9zdHJ1Y3R1cmVTZXQubWFya0lmQ2hlYXAodmlzaXRvcik7CiB9CiAKLXRl
bXBsYXRlIHZvaWQgR2V0QnlJZFZhcmlhbnQ6Om1hcmtJZkNoZWFwKEFic3RyYWN0U2xvdFZpc2l0
b3ImKTsKLXRlbXBsYXRlIHZvaWQgR2V0QnlJZFZhcmlhbnQ6Om1hcmtJZkNoZWFwKFNsb3RWaXNp
dG9yJik7Cit0ZW1wbGF0ZSB2b2lkIEdldEJ5VmFyaWFudDo6bWFya0lmQ2hlYXAoQWJzdHJhY3RT
bG90VmlzaXRvciYpOwordGVtcGxhdGUgdm9pZCBHZXRCeVZhcmlhbnQ6Om1hcmtJZkNoZWFwKFNs
b3RWaXNpdG9yJik7CiAKLWJvb2wgR2V0QnlJZFZhcmlhbnQ6OmZpbmFsaXplKFZNJiB2bSkKK2Jv
b2wgR2V0QnlWYXJpYW50OjpmaW5hbGl6ZShWTSYgdm0pCiB7CiAgICAgaWYgKCFtX3N0cnVjdHVy
ZVNldC5pc1N0aWxsQWxpdmUodm0pKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xODYsMTIg
KzE3OSwxMiBAQCBib29sIEdldEJ5SWRWYXJpYW50OjpmaW5hbGl6ZShWTSYgdm0pCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgR2V0QnlJZFZhcmlhbnQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91
dCkgY29uc3QKK3ZvaWQgR2V0QnlWYXJpYW50OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0
CiB7CiAgICAgZHVtcEluQ29udGV4dChvdXQsIG51bGxwdHIpOwogfQogCi12b2lkIEdldEJ5SWRW
YXJpYW50OjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250
ZXh0KSBjb25zdAordm9pZCBHZXRCeVZhcmlhbnQ6OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0m
IG91dCwgRHVtcENvbnRleHQqIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgb3V0LnByaW50KCI8Iik7
CiAgICAgb3V0LnByaW50KCJpZD0nIiwgbV9pZGVudGlmaWVyLCAiJywgIik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVZhcmlhbnQuaApzaW1pbGFyaXR5IGluZGV4
IDkwJQpyZW5hbWUgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZh
cmlhbnQuaApyZW5hbWUgdG8gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5VmFy
aWFudC5oCmluZGV4IDc5ZmMyMjRmZmViYi4uMDk5YWVkNzczNjM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlWYXJpYW50LmgKQEAgLTQxLDIyICs0MSwyMiBA
QCBjbGFzcyBDYWxsTGlua1N0YXR1czsKIGNsYXNzIEdldEJ5U3RhdHVzOwogc3RydWN0IER1bXBD
b250ZXh0OwogCi1jbGFzcyBHZXRCeUlkVmFyaWFudCB7CitjbGFzcyBHZXRCeVZhcmlhbnQgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEdldEJ5SWRWYXJpYW50
KAorICAgIEdldEJ5VmFyaWFudCgKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciwKLSAgICAg
ICAgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQgPSBTdHJ1Y3R1cmVTZXQoKSwgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0ID0gaW52YWxpZE9mZnNldCwKKyAgICAgICAgY29uc3QgU3RydWN0
dXJlU2V0JiA9IFN0cnVjdHVyZVNldCgpLCBQcm9wZXJ0eU9mZnNldCA9IGludmFsaWRPZmZzZXQs
CiAgICAgICAgIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiA9IE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uU2V0KCksCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWxsTGlua1N0YXR1
cz4gPSBudWxscHRyLAogICAgICAgICBKU0Z1bmN0aW9uKiA9IG51bGxwdHIsCiAgICAgICAgIEZ1
bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPiBjdXN0b21BY2Nlc3NvckdldHRlciA9IG51
bGxwdHIsCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxET01BdHRyaWJ1dGVBbm5vdGF0aW9uPiA9
IG51bGxwdHIpOwogCi0gICAgfkdldEJ5SWRWYXJpYW50KCk7CisgICAgfkdldEJ5VmFyaWFudCgp
OwogICAgIAotICAgIEdldEJ5SWRWYXJpYW50KGNvbnN0IEdldEJ5SWRWYXJpYW50Jik7Ci0gICAg
R2V0QnlJZFZhcmlhbnQmIG9wZXJhdG9yPShjb25zdCBHZXRCeUlkVmFyaWFudCYpOworICAgIEdl
dEJ5VmFyaWFudChjb25zdCBHZXRCeVZhcmlhbnQmKTsKKyAgICBHZXRCeVZhcmlhbnQmIG9wZXJh
dG9yPShjb25zdCBHZXRCeVZhcmlhbnQmKTsKICAgICAKICAgICBib29sIGlzU2V0KCkgY29uc3Qg
eyByZXR1cm4gISFtX3N0cnVjdHVyZVNldC5zaXplKCk7IH0KICAgICBleHBsaWNpdCBvcGVyYXRv
ciBib29sKCkgY29uc3QgeyByZXR1cm4gaXNTZXQoKTsgfQpAQCAtNzUsNyArNzUsNyBAQCBwdWJs
aWM6CiAKICAgICBib29sIGlzUHJvcGVydHlVbnNldCgpIGNvbnN0IHsgcmV0dXJuIG9mZnNldCgp
ID09IGludmFsaWRPZmZzZXQ7IH0KIAotICAgIGJvb2wgYXR0ZW1wdFRvTWVyZ2UoY29uc3QgR2V0
QnlJZFZhcmlhbnQmIG90aGVyKTsKKyAgICBib29sIGF0dGVtcHRUb01lcmdlKGNvbnN0IEdldEJ5
VmFyaWFudCYgb3RoZXIpOwogICAgIAogICAgIERFQ0xBUkVfVklTSVRfQUdHUkVHQVRFOwogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+IHZvaWQgbWFya0lmQ2hlYXAoVmlzaXRvciYpOwpA
QCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAKICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KIAotICAgIGJvb2wgb3Zlcmxh
cHMoY29uc3QgR2V0QnlJZFZhcmlhbnQmIG90aGVyKQorICAgIGJvb2wgb3ZlcmxhcHMoY29uc3Qg
R2V0QnlWYXJpYW50JiBvdGhlcikKICAgICB7CiAgICAgICAgIGlmICghIW1faWRlbnRpZmllciAh
PSAhIW90aGVyLm1faWRlbnRpZmllcikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTAw
LDcgKzEwMCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEdldEJ5U3Rh
dHVzOwogCi0gICAgYm9vbCBjYW5NZXJnZUludHJpbnNpY1N0cnVjdHVyZXMoY29uc3QgR2V0QnlJ
ZFZhcmlhbnQmKSBjb25zdDsKKyAgICBib29sIGNhbk1lcmdlSW50cmluc2ljU3RydWN0dXJlcyhj
b25zdCBHZXRCeVZhcmlhbnQmKSBjb25zdDsKICAgICAKICAgICBTdHJ1Y3R1cmVTZXQgbV9zdHJ1
Y3R1cmVTZXQ7CiAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgbV9jb25kaXRpb25TZXQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeVN0YXR1cy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeVN0YXR1cy5jcHAKaW5kZXgg
OGE2Y2M2MGY0YzZmLi5mMmM3OTc5OWFkNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9JbkJ5U3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSW5CeVN0YXR1cy5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKLWJvb2wgSW5CeVN0YXR1czo6YXBwZW5kVmFyaWFudChjb25zdCBJbkJ5SWRWYXJpYW50
JiB2YXJpYW50KQorYm9vbCBJbkJ5U3RhdHVzOjphcHBlbmRWYXJpYW50KGNvbnN0IEluQnlWYXJp
YW50JiB2YXJpYW50KQogewogICAgIHJldHVybiBhcHBlbmRJQ1N0YXR1c1ZhcmlhbnQobV92YXJp
YW50cywgdmFyaWFudCk7CiB9CkBAIC0xNDUsNyArMTQ1LDcgQEAgSW5CeVN0YXR1cyBJbkJ5U3Rh
dHVzOjpjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjayhjb25zdCBDb25j
dXJyZW4KICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gc3R1YkluZm8t
PmlkZW50aWZpZXIoKTsKICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IGlkZW50aWZp
ZXIudWlkKCk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHVpZCk7Ci0gICAgICAgIEluQnlJZFZh
cmlhbnQgdmFyaWFudChXVEZNb3ZlKGlkZW50aWZpZXIpKTsKKyAgICAgICAgSW5CeVZhcmlhbnQg
dmFyaWFudChXVEZNb3ZlKGlkZW50aWZpZXIpKTsKICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRl
czsKICAgICAgICAgdmFyaWFudC5tX29mZnNldCA9IHN0cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5
KHVpZCwgYXR0cmlidXRlcyk7CiAgICAgICAgIGlmICghaXNWYWxpZE9mZnNldCh2YXJpYW50Lm1f
b2Zmc2V0KSkKQEAgLTE3Miw3ICsxNzIsNyBAQCBJbkJ5U3RhdHVzIEluQnlTdGF0dXM6OmNvbXB1
dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKGNvbnN0IENvbmN1cnJlbgogICAg
ICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBhY2Nlc3Muc3RydWN0dXJlKCk7CiAgICAg
ICAgICAgICBpZiAoIXN0cnVjdHVyZSkgewogICAgICAgICAgICAgICAgIC8vIFRoZSBudWxsIHN0
cnVjdHVyZSBjYXNlcyBhcmlzZSBkdWUgdG8gYXJyYXkubGVuZ3RoLiBXZSBoYXZlIG5vIHdheSBv
ZiBjcmVhdGluZyBhCi0gICAgICAgICAgICAgICAgLy8gSW5CeUlkVmFyaWFudCBmb3IgdGhvc2Us
IGFuZCB3ZSBkb24ndCByZWFsbHkgaGF2ZSB0byBzaW5jZSB0aGUgREZHIGhhbmRsZXMgdGhvc2UK
KyAgICAgICAgICAgICAgICAvLyBJbkJ5VmFyaWFudCBmb3IgdGhvc2UsIGFuZCB3ZSBkb24ndCBy
ZWFsbHkgaGF2ZSB0byBzaW5jZSB0aGUgREZHIGhhbmRsZXMgdGhvc2UKICAgICAgICAgICAgICAg
ICAvLyBjYXNlcyBpbiBGaXh1cFBoYXNlIHVzaW5nIHZhbHVlIHByb2ZpbGluZy4gVGhhdCdzIGEg
Yml0IGF3a3dhcmQgLSB3ZSBzaG91bGRuJ3QKICAgICAgICAgICAgICAgICAvLyBoYXZlIHRvIHVz
ZSB2YWx1ZSBwcm9maWxpbmcgdG8gZGlzY292ZXIgc29tZXRoaW5nIHRoYXQgdGhlIEFjY2Vzc0Nh
c2UgY291bGQgaGF2ZQogICAgICAgICAgICAgICAgIC8vIHRvbGQgdXMuIEJ1dCwgaXQgd29ya3Mg
d2VsbCBlbm91Z2guIFNvLCBvdXIgb25seSBjb25jZXJuIGhlcmUgaXMgdG8gbm90CkBAIC0xOTcs
NyArMTk3LDcgQEAgSW5CeVN0YXR1cyBJbkJ5U3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9XaXRo
b3V0RXhpdFNpdGVGZWVkYmFjayhjb25zdCBDb25jdXJyZW4KICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEluQnlTdGF0dXMoVGFrZXNTbG93UGF0aCk7CiAgICAgICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICAgICAgSW5CeUlkVmFyaWFudCB2YXJpYW50KAorICAgICAgICAgICAgICAgIElu
QnlWYXJpYW50IHZhcmlhbnQoCiAgICAgICAgICAgICAgICAgICAgIGFjY2Vzcy5pZGVudGlmaWVy
KCksIFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpLCBjb21wbGV4R2V0U3RhdHVzLm9mZnNldCgpLAog
ICAgICAgICAgICAgICAgICAgICBjb21wbGV4R2V0U3RhdHVzLmNvbmRpdGlvblNldCgpKTsKIApA
QCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgSW5CeVN0YXR1czo6bWVyZ2UoY29uc3QgSW5CeVN0YXR1
cyYgb3RoZXIpCiAgICAgICAgICAgICAqdGhpcyA9IEluQnlTdGF0dXMoVGFrZXNTbG93UGF0aCk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgZm9yIChjb25zdCBJbkJ5
SWRWYXJpYW50JiBvdGhlclZhcmlhbnQgOiBvdGhlci5tX3ZhcmlhbnRzKSB7CisgICAgICAgIGZv
ciAoY29uc3QgSW5CeVZhcmlhbnQmIG90aGVyVmFyaWFudCA6IG90aGVyLm1fdmFyaWFudHMpIHsK
ICAgICAgICAgICAgIGlmICghYXBwZW5kVmFyaWFudChvdGhlclZhcmlhbnQpKSB7CiAgICAgICAg
ICAgICAgICAgKnRoaXMgPSBJbkJ5U3RhdHVzKFRha2VzU2xvd1BhdGgpOwogICAgICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIEluQnlTdGF0dXM6OmZpbHRlcihj
b25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCkKIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0
b3I+CiB2b2lkIEluQnlTdGF0dXM6Om1hcmtJZkNoZWFwKFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0g
ICAgZm9yIChJbkJ5SWRWYXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykKKyAgICBmb3IgKElu
QnlWYXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykKICAgICAgICAgdmFyaWFudC5tYXJrSWZD
aGVhcCh2aXNpdG9yKTsKIH0KIApAQCAtMjczLDcgKzI3Myw3IEBAIHRlbXBsYXRlIHZvaWQgSW5C
eVN0YXR1czo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKTsKIAogYm9vbCBJbkJ5U3RhdHVzOjpm
aW5hbGl6ZShWTSYgdm0pCiB7Ci0gICAgZm9yIChJbkJ5SWRWYXJpYW50JiB2YXJpYW50IDogbV92
YXJpYW50cykgeworICAgIGZvciAoSW5CeVZhcmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKSB7
CiAgICAgICAgIGlmICghdmFyaWFudC5maW5hbGl6ZSh2bSkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0luQnlTdGF0dXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5U3RhdHVz
LmgKaW5kZXggNWEzNDBiNDkzYTM0Li4zODQ2OGQ1MmFjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5U3RhdHVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0luQnlTdGF0dXMuaApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUg
IkNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJDb25jdXJyZW50SlNMb2NrLmgiCiAjaW5jbHVkZSAi
SUNTdGF0dXNNYXAuaCIKLSNpbmNsdWRlICJJbkJ5SWRWYXJpYW50LmgiCisjaW5jbHVkZSAiSW5C
eVZhcmlhbnQuaCIKICNpbmNsdWRlICJTdHViSW5mb1N1bW1hcnkuaCIKIAogbmFtZXNwYWNlIEpT
QyB7CkBAIC05Myw5ICs5Myw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzU2ltcGxlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGF0ZSA9PSBTaW1wbGU7IH0KIAogICAgIHNpemVfdCBudW1WYXJpYW50cygp
IGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFudHMuc2l6ZSgpOyB9Ci0gICAgY29uc3QgVmVjdG9yPElu
QnlJZFZhcmlhbnQsIDE+JiB2YXJpYW50cygpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFudHM7IH0K
LSAgICBjb25zdCBJbkJ5SWRWYXJpYW50JiBhdChzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJu
IG1fdmFyaWFudHNbaW5kZXhdOyB9Ci0gICAgY29uc3QgSW5CeUlkVmFyaWFudCYgb3BlcmF0b3Jb
XShzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGF0KGluZGV4KTsgfQorICAgIGNvbnN0IFZl
Y3RvcjxJbkJ5VmFyaWFudCwgMT4mIHZhcmlhbnRzKCkgY29uc3QgeyByZXR1cm4gbV92YXJpYW50
czsgfQorICAgIGNvbnN0IEluQnlWYXJpYW50JiBhdChzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0
dXJuIG1fdmFyaWFudHNbaW5kZXhdOyB9CisgICAgY29uc3QgSW5CeVZhcmlhbnQmIG9wZXJhdG9y
W10oc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBhdChpbmRleCk7IH0KIAogICAgIGJvb2wg
dGFrZXNTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gVGFrZXNTbG93UGF0aDsg
fQogICAgIApAQCAtMTE1LDExICsxMTUsMTEgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoREZHX0pJ
VCkKICAgICBzdGF0aWMgSW5CeVN0YXR1cyBjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNp
dGVGZWVkYmFjayhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBWTSYsIFN0cnVjdHVyZVN0dWJJ
bmZvKik7CiAjZW5kaWYKLSAgICBib29sIGFwcGVuZFZhcmlhbnQoY29uc3QgSW5CeUlkVmFyaWFu
dCYpOworICAgIGJvb2wgYXBwZW5kVmFyaWFudChjb25zdCBJbkJ5VmFyaWFudCYpOwogICAgIHZv
aWQgc2hyaW5rVG9GaXQoKTsKIAogICAgIFN0YXRlIG1fc3RhdGUgeyBOb0luZm9ybWF0aW9uIH07
Ci0gICAgVmVjdG9yPEluQnlJZFZhcmlhbnQsIDE+IG1fdmFyaWFudHM7CisgICAgVmVjdG9yPElu
QnlWYXJpYW50LCAxPiBtX3ZhcmlhbnRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlkVmFyaWFudC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeVZhcmlhbnQuY3BwCnNpbWlsYXJp
dHkgaW5kZXggODQlCnJlbmFtZSBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9J
bkJ5SWRWYXJpYW50LmNwcApyZW5hbWUgdG8gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0luQnlWYXJpYW50LmNwcAppbmRleCBmNDk0YmZiZGI0YWUuLjcwNjkxNGUzNmMwMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFZhcmlhbnQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5VmFyaWFudC5jcHAKQEAgLTI1
LDEzICsyNSwxMyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbkJ5
SWRWYXJpYW50LmgiCisjaW5jbHVkZSAiSW5CeVZhcmlhbnQuaCIKIAogI2luY2x1ZGUgIkNhY2hl
YWJsZUlkZW50aWZpZXJJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi1JbkJ5SWRWYXJp
YW50OjpJbkJ5SWRWYXJpYW50KENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3Qg
U3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgY29uc3Qg
T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCkKK0luQnlWYXJpYW50OjpJ
bkJ5VmFyaWFudChDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cnVjdHVy
ZVNldCYgc3RydWN0dXJlU2V0LCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIGNvbnN0IE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQpCiAgICAgOiBtX3N0cnVjdHVyZVNldChz
dHJ1Y3R1cmVTZXQpCiAgICAgLCBtX2NvbmRpdGlvblNldChjb25kaXRpb25TZXQpCiAgICAgLCBt
X29mZnNldChvZmZzZXQpCkBAIC00Myw3ICs0Myw3IEBAIEluQnlJZFZhcmlhbnQ6OkluQnlJZFZh
cmlhbnQoQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJ1Y3R1cmVTZXQm
CiAgICAgfQogfQogCi1ib29sIEluQnlJZFZhcmlhbnQ6OmF0dGVtcHRUb01lcmdlKGNvbnN0IElu
QnlJZFZhcmlhbnQmIG90aGVyKQorYm9vbCBJbkJ5VmFyaWFudDo6YXR0ZW1wdFRvTWVyZ2UoY29u
c3QgSW5CeVZhcmlhbnQmIG90aGVyKQogewogICAgIGlmICghIW1faWRlbnRpZmllciAhPSAhIW90
aGVyLm1faWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNzQsMTUgKzc0LDE1
IEBAIGJvb2wgSW5CeUlkVmFyaWFudDo6YXR0ZW1wdFRvTWVyZ2UoY29uc3QgSW5CeUlkVmFyaWFu
dCYgb3RoZXIpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+Ci12b2lkIEluQnlJZFZh
cmlhbnQ6Om1hcmtJZkNoZWFwKFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEluQnlWYXJpYW50Ojpt
YXJrSWZDaGVhcChWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIG1fc3RydWN0dXJlU2V0Lm1hcmtJ
ZkNoZWFwKHZpc2l0b3IpOwogfQogCi10ZW1wbGF0ZSB2b2lkIEluQnlJZFZhcmlhbnQ6Om1hcmtJ
ZkNoZWFwKEFic3RyYWN0U2xvdFZpc2l0b3ImKTsKLXRlbXBsYXRlIHZvaWQgSW5CeUlkVmFyaWFu
dDo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKTsKK3RlbXBsYXRlIHZvaWQgSW5CeVZhcmlhbnQ6
Om1hcmtJZkNoZWFwKEFic3RyYWN0U2xvdFZpc2l0b3ImKTsKK3RlbXBsYXRlIHZvaWQgSW5CeVZh
cmlhbnQ6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7CiAKLWJvb2wgSW5CeUlkVmFyaWFudDo6
ZmluYWxpemUoVk0mIHZtKQorYm9vbCBJbkJ5VmFyaWFudDo6ZmluYWxpemUoVk0mIHZtKQogewog
ICAgIGlmICghbV9zdHJ1Y3R1cmVTZXQuaXNTdGlsbEFsaXZlKHZtKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtOTEsMTIgKzkxLDEyIEBAIGJvb2wgSW5CeUlkVmFyaWFudDo6ZmluYWxpemUo
Vk0mIHZtKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEluQnlJZFZhcmlhbnQ6OmR1bXAo
UHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3ZvaWQgSW5CeVZhcmlhbnQ6OmR1bXAoUHJpbnRTdHJl
YW0mIG91dCkgY29uc3QKIHsKICAgICBkdW1wSW5Db250ZXh0KG91dCwgbnVsbHB0cik7CiB9CiAK
LXZvaWQgSW5CeUlkVmFyaWFudDo6ZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1w
Q29udGV4dCogY29udGV4dCkgY29uc3QKK3ZvaWQgSW5CeVZhcmlhbnQ6OmR1bXBJbkNvbnRleHQo
UHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgb3V0
LnByaW50KCI8aWQ9JyIsIG1faWRlbnRpZmllciwgIicsICIpOwogICAgIGlmICghaXNTZXQoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFZhcmlh
bnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5VmFyaWFudC5oCnNpbWls
YXJpdHkgaW5kZXggOTAlCnJlbmFtZSBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9JbkJ5SWRWYXJpYW50LmgKcmVuYW1lIHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9JbkJ5VmFyaWFudC5oCmluZGV4IDdkNzMyMzhmYmU1My4uNzdmY2IxM2EzYzMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlkVmFyaWFudC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5VmFyaWFudC5oCkBAIC0zOSwxMCAr
MzksMTAgQEAgY2xhc3MgR2V0dGVyU2V0dGVyOwogY2xhc3MgSW5CeVN0YXR1czsKIHN0cnVjdCBE
dW1wQ29udGV4dDsKIAotY2xhc3MgSW5CeUlkVmFyaWFudCB7CitjbGFzcyBJbkJ5VmFyaWFudCB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSW5CeUlkVmFyaWFu
dChDYWNoZWFibGVJZGVudGlmaWVyLCBjb25zdCBTdHJ1Y3R1cmVTZXQmID0gU3RydWN0dXJlU2V0
KCksIFByb3BlcnR5T2Zmc2V0ID0gaW52YWxpZE9mZnNldCwgY29uc3QgT2JqZWN0UHJvcGVydHlD
b25kaXRpb25TZXQmID0gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQoKSk7CisgICAgSW5CeVZh
cmlhbnQoQ2FjaGVhYmxlSWRlbnRpZmllciwgY29uc3QgU3RydWN0dXJlU2V0JiA9IFN0cnVjdHVy
ZVNldCgpLCBQcm9wZXJ0eU9mZnNldCA9IGludmFsaWRPZmZzZXQsIGNvbnN0IE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uU2V0JiA9IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0KCkpOwogCiAgICAg
Ym9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuICEhbV9zdHJ1Y3R1cmVTZXQuc2l6ZSgpOyB9CiAg
ICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIGlzU2V0KCk7IH0KQEAg
LTU2LDcgKzU2LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0hpdCgpIGNvbnN0IHsgcmV0dXJu
IG9mZnNldCgpICE9IGludmFsaWRPZmZzZXQ7IH0KIAotICAgIGJvb2wgYXR0ZW1wdFRvTWVyZ2Uo
Y29uc3QgSW5CeUlkVmFyaWFudCYgb3RoZXIpOworICAgIGJvb2wgYXR0ZW1wdFRvTWVyZ2UoY29u
c3QgSW5CeVZhcmlhbnQmIG90aGVyKTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNp
dG9yPiB2b2lkIG1hcmtJZkNoZWFwKFZpc2l0b3ImKTsKICAgICBib29sIGZpbmFsaXplKFZNJik7
CkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKIAogICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCi0gICAgYm9vbCBvdmVy
bGFwcyhjb25zdCBJbkJ5SWRWYXJpYW50JiBvdGhlcikKKyAgICBib29sIG92ZXJsYXBzKGNvbnN0
IEluQnlWYXJpYW50JiBvdGhlcikKICAgICB7CiAgICAgICAgIGlmICghIW1faWRlbnRpZmllciAh
PSAhIW90aGVyLm1faWRlbnRpZmllcikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAK
aW5kZXggYWZhZTRlODQyZmM3Li4yYmFlODkyZjRlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcApAQCAtMjUyLDE5ICsy
NTIsMTkgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6cmVzZXQoY29uc3QgQ29uY3VycmVudEpT
TG9ja2VyQmFzZSYgbG9ja2VyLCBDb2RlQmxvY2sqIGMKIAogICAgIHN3aXRjaCAoYWNjZXNzVHlw
ZSkgewogICAgIGNhc2UgQWNjZXNzVHlwZTo6VHJ5R2V0QnlJZDoKLSAgICAgICAgcmVzZXRHZXRC
eShjb2RlQmxvY2ssICp0aGlzLCBHZXRCeUtpbmQ6OlRyeSk7CisgICAgICAgIHJlc2V0R2V0Qnko
Y29kZUJsb2NrLCAqdGhpcywgR2V0QnlLaW5kOjpUcnlCeUlkKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXRCeUlkOgotICAgICAgICByZXNldEdldEJ5KGNvZGVCbG9j
aywgKnRoaXMsIEdldEJ5S2luZDo6Tm9ybWFsKTsKKyAgICAgICAgcmVzZXRHZXRCeShjb2RlQmxv
Y2ssICp0aGlzLCBHZXRCeUtpbmQ6OkJ5SWQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFj
Y2Vzc1R5cGU6OkdldEJ5SWRXaXRoVGhpczoKLSAgICAgICAgcmVzZXRHZXRCeShjb2RlQmxvY2ss
ICp0aGlzLCBHZXRCeUtpbmQ6OldpdGhUaGlzKTsKKyAgICAgICAgcmVzZXRHZXRCeShjb2RlQmxv
Y2ssICp0aGlzLCBHZXRCeUtpbmQ6OkJ5SWRXaXRoVGhpcyk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgQWNjZXNzVHlwZTo6R2V0QnlJZERpcmVjdDoKLSAgICAgICAgcmVzZXRHZXRCeShjb2Rl
QmxvY2ssICp0aGlzLCBHZXRCeUtpbmQ6OkRpcmVjdCk7CisgICAgICAgIHJlc2V0R2V0QnkoY29k
ZUJsb2NrLCAqdGhpcywgR2V0QnlLaW5kOjpCeUlkRGlyZWN0KTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXRCeVZhbDoKLSAgICAgICAgcmVzZXRHZXRCeShjb2RlQmxv
Y2ssICp0aGlzLCBHZXRCeUtpbmQ6Ok5vcm1hbEJ5VmFsKTsKKyAgICAgICAgcmVzZXRHZXRCeShj
b2RlQmxvY2ssICp0aGlzLCBHZXRCeUtpbmQ6OkJ5VmFsKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBBY2Nlc3NUeXBlOjpHZXRQcml2YXRlTmFtZToKICAgICAgICAgcmVzZXRHZXRCeShjb2Rl
QmxvY2ssICp0aGlzLCBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lKTsKQEAgLTI3MywxOSArMjczLDE5
IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OnJlc2V0KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tl
ckJhc2UmIGxvY2tlciwgQ29kZUJsb2NrKiBjCiAgICAgICAgIHJlc2V0UHV0QnlJRChjb2RlQmxv
Y2ssICp0aGlzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpJbkJ5SWQ6
Ci0gICAgICAgIHJlc2V0SW5CeShjb2RlQmxvY2ssICp0aGlzLCBJbkJ5S2luZDo6Tm9ybWFsKTsK
KyAgICAgICAgcmVzZXRJbkJ5KGNvZGVCbG9jaywgKnRoaXMsIEluQnlLaW5kOjpCeUlkKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpJbkJ5VmFsOgotICAgICAgICByZXNl
dEluQnkoY29kZUJsb2NrLCAqdGhpcywgSW5CeUtpbmQ6Ok5vcm1hbEJ5VmFsKTsKKyAgICAgICAg
cmVzZXRJbkJ5KGNvZGVCbG9jaywgKnRoaXMsIEluQnlLaW5kOjpCeVZhbCk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6SW5zdGFuY2VPZjoKICAgICAgICAgcmVzZXRJbnN0
YW5jZU9mKCp0aGlzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpEZWxl
dGVCeUlEOgotICAgICAgICByZXNldERlbEJ5KGNvZGVCbG9jaywgKnRoaXMsIERlbEJ5S2luZDo6
Tm9ybWFsKTsKKyAgICAgICAgcmVzZXREZWxCeShjb2RlQmxvY2ssICp0aGlzLCBEZWxCeUtpbmQ6
OkJ5SWQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkRlbGV0ZUJ5VmFs
OgotICAgICAgICByZXNldERlbEJ5KGNvZGVCbG9jaywgKnRoaXMsIERlbEJ5S2luZDo6Tm9ybWFs
QnlWYWwpOworICAgICAgICByZXNldERlbEJ5KGNvZGVCbG9jaywgKnRoaXMsIERlbEJ5S2luZDo6
QnlWYWwpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkNoZWNrUHJpdmF0
ZUJyYW5kOgogICAgICAgICByZXNldENoZWNrUHJpdmF0ZUJyYW5kKGNvZGVCbG9jaywgKnRoaXMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oCmluZGV4IDNiNjFhNWZkMTk4OS4uZTM0MzNmNGFlYTdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCkBAIC00MDExLDcgKzQwMTEsNyBAQCBib29sIEFic3RyYWN0SW50ZXJw
cmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVy
TGltaQogICAgICAgICAgICAgZGlkRm9sZENsb2JiZXJTdHJ1Y3R1cmVzKCk7CiAKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gbm9kZS0+bXVsdGlEZWxldGVCeU9mZnNldERhdGEoKS52YXJpYW50
cy5zaXplKCk7IGktLTspIHsKLSAgICAgICAgICAgIGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50JiB2
YXJpYW50ID0gbm9kZS0+bXVsdGlEZWxldGVCeU9mZnNldERhdGEoKS52YXJpYW50c1tpXTsKKyAg
ICAgICAgICAgIGNvbnN0IERlbGV0ZUJ5VmFyaWFudCYgdmFyaWFudCA9IG5vZGUtPm11bHRpRGVs
ZXRlQnlPZmZzZXREYXRhKCkudmFyaWFudHNbaV07CiAgICAgICAgICAgICBSZWdpc3RlcmVkU3Ry
dWN0dXJlU2V0IHRoaXNTZXQgPSAqbV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5vbGRT
dHJ1Y3R1cmUoKSk7CiAgICAgICAgICAgICB0aGlzU2V0LmZpbHRlcihiYXNlKTsKICAgICAgICAg
ICAgIGlmICh0aGlzU2V0LmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggNWNkMmQ4ZjJhMzZhLi45NWE4OGExNzM5Yjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CkBAIC0yMDUsMTQgKzIwNSwxNCBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENo
ZWNrc0Z1bmN0b3I+CiAgICAgYm9vbCBoYW5kbGVET01KSVRDYWxsKE5vZGUqIGNhbGxlZSwgT3Bl
cmFuZCByZXN1bHQsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiwgaW50IHJlZ2lzdGVyT2Zmc2V0
LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rp
b24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLSAgICBib29sIGhhbmRsZUludHJpbnNpY0dldHRlcihPcGVy
YW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgR2V0QnlJZFZhcmlh
bnQmIGludHJpbnNpY1ZhcmlhbnQsIE5vZGUqIHRoaXNOb2RlLCBjb25zdCBDaGVja3NGdW5jdG9y
JiBpbnNlcnRDaGVja3MpOworICAgIGJvb2wgaGFuZGxlSW50cmluc2ljR2V0dGVyKE9wZXJhbmQg
cmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBHZXRCeVZhcmlhbnQmIGlu
dHJpbnNpY1ZhcmlhbnQsIE5vZGUqIHRoaXNOb2RlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNl
cnRDaGVja3MpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+CiAgICAgYm9v
bCBoYW5kbGVUeXBlZEFycmF5Q29uc3RydWN0b3IoT3BlcmFuZCByZXN1bHQsIEludGVybmFsRnVu
Y3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgVHlwZWRBcnJheVR5cGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KICAgICBib29sIGhhbmRsZUNvbnN0
YW50SW50ZXJuYWxGdW5jdGlvbihOb2RlKiBjYWxsVGFyZ2V0Tm9kZSwgT3BlcmFuZCByZXN1bHQs
IEludGVybmFsRnVuY3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgU3BlY3VsYXRlZFR5cGUsIGNv
bnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgTm9kZSogaGFuZGxlUHV0QnlP
ZmZzZXQoTm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIE5v
ZGUqIHZhbHVlKTsKICAgICBOb2RlKiBoYW5kbGVHZXRCeU9mZnNldChTcGVjdWxhdGVkVHlwZSwg
Tm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgUHJvcGVydHlPZmZzZXQsIE5v
ZGVUeXBlID0gR2V0QnlPZmZzZXQpOwotICAgIGJvb2wgaGFuZGxlRE9NSklUR2V0dGVyKE9wZXJh
bmQgcmVzdWx0LCBjb25zdCBHZXRCeUlkVmFyaWFudCYsIE5vZGUqIHRoaXNOb2RlLCB1bnNpZ25l
ZCBpZGVudGlmaWVyTnVtYmVyLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKTsKKyAgICBib29s
IGhhbmRsZURPTUpJVEdldHRlcihPcGVyYW5kIHJlc3VsdCwgY29uc3QgR2V0QnlWYXJpYW50Jiwg
Tm9kZSogdGhpc05vZGUsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFNwZWN1bGF0ZWRUeXBl
IHByZWRpY3Rpb24pOwogICAgIGJvb2wgaGFuZGxlTW9kdWxlTmFtZXNwYWNlTG9hZChWaXJ0dWFs
UmVnaXN0ZXIgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSwgTm9kZSogYmFzZSwgR2V0QnlTdGF0dXMp
OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGU+CkBAIC0yMzksNyArMjM5LDcgQEAg
cHJpdmF0ZToKICAgICBib29sIGNoZWNrUHJlc2VuY2UoSlNPYmplY3QqIGtub3duQmFzZSwgVW5p
cXVlZFN0cmluZ0ltcGwqLCBQcm9wZXJ0eU9mZnNldCwgY29uc3QgU3RydWN0dXJlU2V0Jik7CiAg
ICAgdm9pZCBjaGVja1ByZXNlbmNlRm9yUmVwbGFjZShOb2RlKiBiYXNlLCBVbmlxdWVkU3RyaW5n
SW1wbCosIFByb3BlcnR5T2Zmc2V0LCBjb25zdCBTdHJ1Y3R1cmVTZXQmKTsKICAgICAKLSAgICAv
LyBXb3JrcyB3aXRoIGJvdGggR2V0QnlJZFZhcmlhbnQgYW5kIHRoZSBzZXR0ZXIgZm9ybSBvZiBQ
dXRCeUlkVmFyaWFudC4KKyAgICAvLyBXb3JrcyB3aXRoIGJvdGggR2V0QnlWYXJpYW50IGFuZCB0
aGUgc2V0dGVyIGZvcm0gb2YgUHV0QnlJZFZhcmlhbnQuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VmFyaWFudFR5cGU+CiAgICAgTm9kZSogbG9hZChTcGVjdWxhdGVkVHlwZSwgTm9kZSogYmFzZSwg
dW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgY29uc3QgVmFyaWFudFR5cGUmKTsKIApAQCAtMzc4
Niw3ICszNzg2LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2FsbChOb2Rl
KiBjYWxsVGFyZ2V0LCBPcGVyYW5kIHJlc3VsdCwgY29uc3QgRE8KIAogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGVja3NGdW5jdG9yPgotYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2lj
R2V0dGVyKE9wZXJhbmQgcmVzdWx0LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBH
ZXRCeUlkVmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNrc0Z1bmN0
b3ImIGluc2VydENoZWNrcykKK2Jvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dl
dHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgR2V0
QnlWYXJpYW50JiB2YXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYg
aW5zZXJ0Q2hlY2tzKQogewogICAgIHN3aXRjaCAodmFyaWFudC5pbnRyaW5zaWMoKSkgewogICAg
IGNhc2UgVHlwZWRBcnJheUJ5dGVMZW5ndGhJbnRyaW5zaWM6IHsKQEAgLTM5MDIsNyArMzkwMiw3
IEBAIHN0YXRpYyB2b2lkIGJsZXNzQ2FsbERPTUdldHRlcihOb2RlKiBub2RlKQogICAgICAgICBu
b2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwogfQogCi1ib29sIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVET01KSVRHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIGNvbnN0IEdldEJ5SWRWYXJp
YW50JiB2YXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwg
U3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKK2Jvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURP
TUpJVEdldHRlcihPcGVyYW5kIHJlc3VsdCwgY29uc3QgR2V0QnlWYXJpYW50JiB2YXJpYW50LCBO
b2RlKiB0aGlzTm9kZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgU3BlY3VsYXRlZFR5cGUg
cHJlZGljdGlvbikKIHsKICAgICBpZiAoIXZhcmlhbnQuZG9tQXR0cmlidXRlKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTQ2MjgsNyArNDYyOCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUdldEJ5SWQoCiAgICAgaWYgKE9wdGlvbnM6OnVzZURPTUpJVCgpICYmIGdldEJ5U3Rh
dHVzLmlzQ3VzdG9tKCkpIHsKICAgICAgICAgQVNTRVJUKGdldEJ5U3RhdHVzLm51bVZhcmlhbnRz
KCkgPT0gMSk7CiAgICAgICAgIEFTU0VSVCghZ2V0QnlTdGF0dXMubWFrZXNDYWxscygpKTsKLSAg
ICAgICAgR2V0QnlJZFZhcmlhbnQgdmFyaWFudCA9IGdldEJ5U3RhdHVzWzBdOworICAgICAgICBH
ZXRCeVZhcmlhbnQgdmFyaWFudCA9IGdldEJ5U3RhdHVzWzBdOwogICAgICAgICBBU1NFUlQodmFy
aWFudC5kb21BdHRyaWJ1dGUoKSk7CiAgICAgICAgIGlmIChoYW5kbGVET01KSVRHZXR0ZXIoZGVz
dGluYXRpb24sIHZhcmlhbnQsIGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIHByZWRpY3Rpb24pKSB7
CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkobV9ncmFwaC5jb21waWxhdGlvbigpKSkKQEAgLTQ2
NjQsNyArNDY2NCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQoCiAgICAg
ICAgIC8vIDEpIEVtaXQgcHJvdG90eXBlIHN0cnVjdHVyZSBjaGVja3MgZm9yIGFsbCBjaGFpbnMu
IFRoaXMgY291bGQgc29ydCBvZiBtYXliZSBub3QgYmUKICAgICAgICAgLy8gICAgb3B0aW1hbCwg
aWYgdGhlcmUgaXMgc29tZSByYXJlbHkgZXhlY3V0ZWQgY2FzZSBpbiB0aGUgY2hhaW4gdGhhdCBy
ZXF1aXJlcyBhIGxvdAogICAgICAgICAvLyAgICBvZiBjaGVja3MgYW5kIHRob3NlIGNoZWNrcyBh
cmUgbm90IHdhdGNocG9pbnRhYmxlLgotICAgICAgICBmb3IgKGNvbnN0IEdldEJ5SWRWYXJpYW50
JiB2YXJpYW50IDogZ2V0QnlTdGF0dXMudmFyaWFudHMoKSkgeworICAgICAgICBmb3IgKGNvbnN0
IEdldEJ5VmFyaWFudCYgdmFyaWFudCA6IGdldEJ5U3RhdHVzLnZhcmlhbnRzKCkpIHsKICAgICAg
ICAgICAgIGlmICh2YXJpYW50LmludHJpbnNpYygpICE9IE5vSW50cmluc2ljKSB7CiAgICAgICAg
ICAgICAgICAgc2V0KGRlc3RpbmF0aW9uLAogICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBo
KGdldEJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBiYXNlKSk7
CkBAIC00NzA0LDcgKzQ3MDQsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlk
KAogICAgIGFkZFRvR3JhcGgoRmlsdGVyR2V0QnlTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxh
bi5yZWNvcmRlZFN0YXR1c2VzKCkuYWRkR2V0QnlTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwg
Z2V0QnlTdGF0dXMpKSwgYmFzZSk7CiAKICAgICBBU1NFUlQoZ2V0QnlTdGF0dXMubnVtVmFyaWFu
dHMoKSA9PSAxKTsKLSAgICBHZXRCeUlkVmFyaWFudCB2YXJpYW50ID0gZ2V0QnlTdGF0dXNbMF07
CisgICAgR2V0QnlWYXJpYW50IHZhcmlhbnQgPSBnZXRCeVN0YXR1c1swXTsKICAgICAKICAgICBO
b2RlKiBsb2FkZWRWYWx1ZSA9IGxvYWQocHJlZGljdGlvbiwgYmFzZSwgaWRlbnRpZmllck51bWJl
ciwgdmFyaWFudCk7CiAgICAgaWYgKCFsb2FkZWRWYWx1ZSkgewpAQCAtNDgwMCw3ICs0ODAwLDcg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0UHJpdmF0ZU5hbWVCeUlkKAogCiAgICAg
ICAgIFZlY3RvcjxNdWx0aUdldEJ5T2Zmc2V0Q2FzZSwgMj4gY2FzZXM7CiAKLSAgICAgICAgZm9y
IChjb25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IGdldEJ5U3RhdHVzLnZhcmlhbnRzKCkp
IHsKKyAgICAgICAgZm9yIChjb25zdCBHZXRCeVZhcmlhbnQmIHZhcmlhbnQgOiBnZXRCeVN0YXR1
cy52YXJpYW50cygpKSB7CiAgICAgICAgICAgICBBU1NFUlQodmFyaWFudC5pbnRyaW5zaWMoKSA9
PSBOb0ludHJpbnNpYyk7CiAgICAgICAgICAgICBBU1NFUlQodmFyaWFudC5jb25kaXRpb25TZXQo
KS5pc0VtcHR5KCkpOwogCkBAIC00ODI2LDcgKzQ4MjYsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVHZXRQcml2YXRlTmFtZUJ5SWQoCiAgICAgYWRkVG9HcmFwaChGaWx0ZXJHZXRCeVN0
YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMoKS5hZGRHZXRCeVN0
YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBnZXRCeVN0YXR1cykpLCBiYXNlKTsKIAogICAgIEFT
U0VSVChnZXRCeVN0YXR1cy5udW1WYXJpYW50cygpID09IDEpOwotICAgIEdldEJ5SWRWYXJpYW50
IHZhcmlhbnQgPSBnZXRCeVN0YXR1c1swXTsKKyAgICBHZXRCeVZhcmlhbnQgdmFyaWFudCA9IGdl
dEJ5U3RhdHVzWzBdOwogCiAgICAgTm9kZSogbG9hZGVkVmFsdWUgPSBsb2FkKHByZWRpY3Rpb24s
IGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIHZhcmlhbnQpOwogICAgIGlmICghbG9hZGVkVmFsdWUp
IHsKQEAgLTQ4NjgsNyArNDg2OCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURlbGV0
ZUJ5SWQoCiAgICAgICAgIGJvb2wgaGFzTWlzcyA9IGZhbHNlOwogICAgICAgICBib29sIGhhc01p
c3NOb25jb25maWd1cmFibGUgPSBmYWxzZTsKIAotICAgICAgICBmb3IgKGNvbnN0IERlbGV0ZUJ5
SWRWYXJpYW50JiB2YXJpYW50IDogZGVsZXRlQnlTdGF0dXMudmFyaWFudHMoKSkgeworICAgICAg
ICBmb3IgKGNvbnN0IERlbGV0ZUJ5VmFyaWFudCYgdmFyaWFudCA6IGRlbGV0ZUJ5U3RhdHVzLnZh
cmlhbnRzKCkpIHsKICAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFu
dC5vbGRTdHJ1Y3R1cmUoKSk7CiAgICAgICAgICAgICBpZiAodmFyaWFudC5uZXdTdHJ1Y3R1cmUo
KSkgewogICAgICAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5u
ZXdTdHJ1Y3R1cmUoKSk7CkBAIC00ODgzLDcgKzQ4ODMsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVEZWxldGVCeUlkKAogICAgICAgICAgICAgaWYgKChoYXNNaXNzICYmICFoYXNNaXNz
Tm9uY29uZmlndXJhYmxlKSB8fCAoIWhhc01pc3MgJiYgaGFzTWlzc05vbmNvbmZpZ3VyYWJsZSkp
IHsKICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVTZXQgYmFzZVNldDsKIAotICAgICAgICAgICAg
ICAgIGZvciAoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBkZWxldGVCeVN0YXR1
cy52YXJpYW50cygpKQorICAgICAgICAgICAgICAgIGZvciAoY29uc3QgRGVsZXRlQnlWYXJpYW50
JiB2YXJpYW50IDogZGVsZXRlQnlTdGF0dXMudmFyaWFudHMoKSkKICAgICAgICAgICAgICAgICAg
ICAgYmFzZVNldC5hZGQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSk7CiAKICAgICAgICAgICAgICAg
ICBhZGRUb0dyYXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVT
ZXQoYmFzZVNldCkpLCBiYXNlKTsKQEAgLTQ5MDEsNyArNDkwMSw3IEBAIHZvaWQgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZURlbGV0ZUJ5SWQoCiAgICAgfQogCiAgICAgQVNTRVJUKGRlbGV0ZUJ5U3Rh
dHVzLnZhcmlhbnRzKCkuc2l6ZSgpID09IDEpOwotICAgIERlbGV0ZUJ5SWRWYXJpYW50IHZhcmlh
bnQgPSBkZWxldGVCeVN0YXR1cy52YXJpYW50cygpWzBdOworICAgIERlbGV0ZUJ5VmFyaWFudCB2
YXJpYW50ID0gZGVsZXRlQnlTdGF0dXMudmFyaWFudHMoKVswXTsKIAogICAgIGlmICghdmFyaWFu
dC5uZXdTdHJ1Y3R1cmUoKSkgewogICAgICAgICBhZGRUb0dyYXBoKEZpbHRlckRlbGV0ZUJ5U3Rh
dHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFkZERlbGV0ZUJ5
U3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIGRlbGV0ZUJ5U3RhdHVzKSksIGJhc2UpOwpAQCAt
NDk0Niw3ICs0OTQ2LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5CeUlkKFZpcnR1
YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwgTm9kZSogYmFzZSwgQ2FjaGUKICAgICBpZiAoc3RhdHVz
LmlzU2ltcGxlKCkgJiYgT3B0aW9uczo6dXNlQWNjZXNzSW5saW5pbmcoKSkgewogICAgICAgICBi
b29sIGFsbE9LID0gdHJ1ZTsKICAgICAgICAgTWF0Y2hTdHJ1Y3R1cmVEYXRhKiBkYXRhID0gbV9n
cmFwaC5tX21hdGNoU3RydWN0dXJlRGF0YS5hZGQoKTsKLSAgICAgICAgZm9yIChjb25zdCBJbkJ5
SWRWYXJpYW50JiB2YXJpYW50IDogc3RhdHVzLnZhcmlhbnRzKCkpIHsKKyAgICAgICAgZm9yIChj
b25zdCBJbkJ5VmFyaWFudCYgdmFyaWFudCA6IHN0YXR1cy52YXJpYW50cygpKSB7CiAgICAgICAg
ICAgICBpZiAoIWNoZWNrKHZhcmlhbnQuY29uZGl0aW9uU2V0KCkpKSB7CiAgICAgICAgICAgICAg
ICAgYWxsT0sgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTYzNDAsMTUgKzYz
NDAsMTUgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkK
ICAgICAgICAgICAgIE5vZGUqIGJyYW5kID0gZ2V0KGJ5dGVjb2RlLm1fYnJhbmQpOwogICAgICAg
ICAgICAgYm9vbCBjb21waWxlZEFzQ2hlY2tTdHJ1Y3R1cmUgPSBmYWxzZTsKIAotICAgICAgICAg
ICAgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMgY2hlY2tTdGF0dXMgPSBDaGVja1ByaXZhdGVCcmFu
ZFN0YXR1czo6Y29tcHV0ZUZvcigKLSAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5t
X3Byb2ZpbGVkQmxvY2ssCi0gICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNl
bGluZU1hcCwgbV9pY0NvbnRleHRTdGFjaywKLSAgICAgICAgICAgICAgICBjdXJyZW50Q29kZU9y
aWdpbigpKTsKLQogICAgICAgICAgICAgaWYgKCFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9m
aWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRJZGVudCkKICAgICAgICAgICAgICAg
ICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJl
bnRJbmRleCwgQmFkVHlwZSkKICAgICAgICAgICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+
bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ29uc3RhbnRWYWx1
ZSkpIHsKIAorICAgICAgICAgICAgICAgIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzIGNoZWNrU3Rh
dHVzID0gQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAgICAgICAgICAg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKKyAgICAgICAgICAgICAg
ICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwgbV9pY0NvbnRleHRTdGFjaywK
KyAgICAgICAgICAgICAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSk7CisKICAgICAgICAgICAg
ICAgICBpZiAoQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gY2hlY2tTdGF0dXMuc2lu
Z2xlSWRlbnRpZmllcigpKSB7CiAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguaWRlbnRpZmll
cnMoKS5lbnN1cmUoaWRlbnRpZmllci51aWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VS
VChpZGVudGlmaWVyLmlzU3ltYm9sKCkpOwpAQCAtNjM3NywxNyArNjM3NywxNyBAQCB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BTZXRQcml2YXRlQnJhbmQ+KCk7
CiAgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1fYmFzZSk7CiAgICAgICAg
ICAgICBOb2RlKiBicmFuZCA9IGdldChieXRlY29kZS5tX2JyYW5kKTsKLQogICAgICAgICAgICAg
Ym9vbCBpbmxpbmVkU2V0UHJpdmF0ZUJyYW5kID0gZmFsc2U7Ci0gICAgICAgICAgICBTZXRQcml2
YXRlQnJhbmRTdGF0dXMgc2V0U3RhdHVzID0gU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOjpjb21wdXRl
Rm9yKAotICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywK
LSAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29u
dGV4dFN0YWNrLAotICAgICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCkpOwogCiAgICAg
ICAgICAgICBpZiAoIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUo
bV9jdXJyZW50SW5kZXgsIEJhZElkZW50KQogICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0
YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRUeXBl
KQogICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhh
c0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDb25zdGFudFZhbHVlKSkgewogCisgICAgICAg
ICAgICAgICAgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzIHNldFN0YXR1cyA9IFNldFByaXZhdGVCcmFu
ZFN0YXR1czo6Y29tcHV0ZUZvcigKKyAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1Rv
cC0+bV9wcm9maWxlZEJsb2NrLAorICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9w
LT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNrLAorICAgICAgICAgICAgICAgICAgICBj
dXJyZW50Q29kZU9yaWdpbigpKTsKKwogICAgICAgICAgICAgICAgIGlmIChDYWNoZWFibGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIgPSBzZXRTdGF0dXMuc2luZ2xlSWRlbnRpZmllcigpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChpZGVudGlmaWVyLmlzU3ltYm9sKCkpOwogICAgICAgICAg
ICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJvbmcoaWRl
bnRpZmllci5jZWxsKCkpOwpAQCAtNjY0MCwxNSArNjY0MCwxNiBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgTm9kZSogYmFzZSA9
IGdldChieXRlY29kZS5tX2Jhc2UpOwogICAgICAgICAgICAgTm9kZSogcHJvcGVydHkgPSBnZXQo
Ynl0ZWNvZGUubV9wcm9wZXJ0eSk7CiAgICAgICAgICAgICBib29sIHNob3VsZENvbXBpbGVBc0Rl
bGV0ZUJ5SWQgPSBmYWxzZTsKLSAgICAgICAgICAgIERlbGV0ZUJ5U3RhdHVzIGRlbGV0ZUJ5U3Rh
dHVzID0gRGVsZXRlQnlTdGF0dXM6OmNvbXB1dGVGb3IoCi0gICAgICAgICAgICAgICAgbV9pbmxp
bmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLAotICAgICAgICAgICAgICAgIG1faW5saW5lU3Rh
Y2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ssCi0gICAgICAgICAgICAgICAg
Y3VycmVudENvZGVPcmlnaW4oKSk7CiAKICAgICAgICAgICAgIGlmICghbV9pbmxpbmVTdGFja1Rv
cC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkSWRlbnQpCiAg
ICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhp
dFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZFR5cGUpCiAgICAgICAgICAgICAgICAgJiYgIW1faW5s
aW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJh
ZENvbnN0YW50VmFsdWUpKSB7CiAKKyAgICAgICAgICAgICAgICBEZWxldGVCeVN0YXR1cyBkZWxl
dGVCeVN0YXR1cyA9IERlbGV0ZUJ5U3RhdHVzOjpjb21wdXRlRm9yKAorICAgICAgICAgICAgICAg
ICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssCisgICAgICAgICAgICAgICAg
ICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ssCisg
ICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCkpOworCiAgICAgICAgICAgICAg
ICAgaWYgKENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IGRlbGV0ZUJ5U3RhdHVzLnNp
bmdsZUlkZW50aWZpZXIoKSkgewogICAgICAgICAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1w
bCogdWlkID0gaWRlbnRpZmllci51aWQoKTsKICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
aWRlbnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUoaWRlbnRpZmll
ci51aWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0
YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4IGM0N2Q0OTMwODMyNS4uZWFlYWY4NWVhMjU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1Bo
YXNlLmNwcApAQCAtNTQyLDcgKzU0Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYWxy
ZWFkeUhhbmRsZWQgPSB0cnVlOyAvLyBEb24ndCBhbGxvdyB0aGUgZGVmYXVsdCBjb25zdGFudCBm
b2xkZXIgdG8gZG8gdGhpbmdzIHRvIHRoaXMuCiAKICAgICAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgZGF0YS52YXJpYW50cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAg
ICAgICAgICBEZWxldGVCeUlkVmFyaWFudCYgdmFyaWFudCA9IGRhdGEudmFyaWFudHNbaV07Cisg
ICAgICAgICAgICAgICAgICAgIERlbGV0ZUJ5VmFyaWFudCYgdmFyaWFudCA9IGRhdGEudmFyaWFu
dHNbaV07CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKCFiYXNlVmFsdWUuY29udGFpbnMobV9n
cmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKSkpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGRhdGEudmFyaWFudHNbaS0tXSA9IGRhdGEudmFyaWFudHMubGFz
dCgpOwpAQCAtNjUwLDcgKzY1MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaWRlbnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUodWlkKTsK
ICAgICAgICAgICAgICAgICBhZGRGaWx0ZXJTdGF0dXMoKTsKICAgICAgICAgICAgICAgICBNdWx0
aUdldEJ5T2Zmc2V0RGF0YSogZGF0YSA9IG1fZ3JhcGgubV9tdWx0aUdldEJ5T2Zmc2V0RGF0YS5h
ZGQoKTsKLSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IEdldEJ5SWRWYXJpYW50JiB2YXJpYW50
IDogc3RhdHVzLnZhcmlhbnRzKCkpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IEdldEJ5
VmFyaWFudCYgdmFyaWFudCA6IHN0YXR1cy52YXJpYW50cygpKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGRhdGEtPmNhc2VzLmFwcGVuZCgKICAgICAgICAgICAgICAgICAgICAgICAgIE11bHRpR2V0
QnlPZmZzZXRDYXNlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICptX2dyYXBoLmFkZFN0
cnVjdHVyZVNldCh2YXJpYW50LnN0cnVjdHVyZVNldCgpKSwKQEAgLTExNzQsNyArMTE3NCw3IEBA
IHByaXZhdGU6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQog
ICAgIAotICAgIHZvaWQgZW1pdEdldEJ5T2Zmc2V0KHVuc2lnbmVkIGluZGV4SW5CbG9jaywgTm9k
ZSogbm9kZSwgY29uc3QgQWJzdHJhY3RWYWx1ZSYgYmFzZVZhbHVlLCBjb25zdCBHZXRCeUlkVmFy
aWFudCYgdmFyaWFudCwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlcikKKyAgICB2b2lkIGVtaXRH
ZXRCeU9mZnNldCh1bnNpZ25lZCBpbmRleEluQmxvY2ssIE5vZGUqIG5vZGUsIGNvbnN0IEFic3Ry
YWN0VmFsdWUmIGJhc2VWYWx1ZSwgY29uc3QgR2V0QnlWYXJpYW50JiB2YXJpYW50LCB1bnNpZ25l
ZCBpZGVudGlmaWVyTnVtYmVyKQogICAgIHsKICAgICAgICAgRWRnZSBjaGlsZEVkZ2UgPSBub2Rl
LT5jaGlsZDEoKTsKIApAQCAtMTI4NSw3ICsxMjg1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQog
ICAgIH0KIAotICAgIHZvaWQgZW1pdERlbGV0ZUJ5T2Zmc2V0KHVuc2lnbmVkIGluZGV4SW5CbG9j
aywgTm9kZSogbm9kZSwgY29uc3QgQWJzdHJhY3RWYWx1ZSYgYmFzZVZhbHVlLCBjb25zdCBEZWxl
dGVCeUlkVmFyaWFudCYgdmFyaWFudCwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlcikKKyAgICB2
b2lkIGVtaXREZWxldGVCeU9mZnNldCh1bnNpZ25lZCBpbmRleEluQmxvY2ssIE5vZGUqIG5vZGUs
IGNvbnN0IEFic3RyYWN0VmFsdWUmIGJhc2VWYWx1ZSwgY29uc3QgRGVsZXRlQnlWYXJpYW50JiB2
YXJpYW50LCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyKQogICAgIHsKICAgICAgICAgTm9kZU9y
aWdpbiBvcmlnaW4gPSBub2RlLT5vcmlnaW47CiAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwg
bm9kZSwgb3JpZ2luLmV4aXRPSyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4
IDM1Y2Q1NGM4YTIxZS4uNjkxNjJiY2ZmNGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaApAQCAtNDksOCArNDksOCBAQAogI2luY2x1ZGUgIkRGR1VzZUtpbmQuaCIKICNpbmNsdWRl
ICJERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaCIKICNpbmNsdWRlICJET01KSVRTaWduYXR1cmUuaCIK
LSNpbmNsdWRlICJEZWxldGVCeUlkVmFyaWFudC5oIgotI2luY2x1ZGUgIkdldEJ5SWRWYXJpYW50
LmgiCisjaW5jbHVkZSAiRGVsZXRlQnlWYXJpYW50LmgiCisjaW5jbHVkZSAiR2V0QnlWYXJpYW50
LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIk9wZXJhbmRzLmgiCiAjaW5j
bHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgpAQCAtOTksNyArOTksNyBAQCBzdHJ1Y3QgTXVs
dGlQdXRCeU9mZnNldERhdGEgewogCiBzdHJ1Y3QgTXVsdGlEZWxldGVCeU9mZnNldERhdGEgewog
ICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXI7Ci0gICAgVmVjdG9yPERlbGV0ZUJ5SWRWYXJp
YW50LCAyPiB2YXJpYW50czsKKyAgICBWZWN0b3I8RGVsZXRlQnlWYXJpYW50LCAyPiB2YXJpYW50
czsKIAogICAgIGJvb2wgd3JpdGVzU3RydWN0dXJlcygpIGNvbnN0OwogICAgIGJvb2wgYWxsVmFy
aWFudHNTdG9yZUVtcHR5KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ZhbGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFs
aWRhdGUuY3BwCmluZGV4IGM1OWI2OWUyZDU3ZC4uNTQxMGQ5MDg5NmRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcApAQCAtMzIwLDcgKzMyMCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBNdWx0
aURlbGV0ZUJ5T2Zmc2V0OgogICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBu
b2RlLT5tdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YSgpLnZhcmlhbnRzLnNpemUoKTsgaS0tOykgewot
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIHZhcmlhbnQg
PSBub2RlLT5tdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YSgpLnZhcmlhbnRzW2ldOworICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgRGVsZXRlQnlWYXJpYW50JiB2YXJpYW50ID0gbm9kZS0+bXVs
dGlEZWxldGVCeU9mZnNldERhdGEoKS52YXJpYW50c1tpXTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIFZBTElEQVRFKChub2RlKSwgIXZhcmlhbnQubmV3U3RydWN0dXJlKCkgfHwgIXZhcmlhbnQu
b2xkU3RydWN0dXJlKCktPmRmZ1Nob3VsZFdhdGNoKCkpOwogICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDQxMzNiODI4YjY0Yy4uZDU0MDI2MzZjMzkyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC01
ODQxLDcgKzU4NDEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZURlbEJ5KExWYWx1ZSBi
YXNlLCBTdWJzY3JpcHRLaW5kIHN1YnNjcmlwdFZhbHVlKQogICAgIHsKICAgICAgICAgUGF0Y2hw
b2ludFZhbHVlKiBwYXRjaHBvaW50OwotICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gRGVs
QnlLaW5kOjpOb3JtYWwpIHsKKyAgICAgICAgaWYgY29uc3RleHByIChraW5kID09IERlbEJ5S2lu
ZDo6QnlJZCkgewogICAgICAgICAgICAgcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoSW50
NjQpOwogICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYmFz
ZSwgVmFsdWVSZXA6OlNvbWVMYXRlUmVnaXN0ZXIpKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTU4
ODQsMTQgKzU4ODQsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2Vz
LmFwcGVuZChqaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2UpKTsKIAogICAgICAgICAgICAgICAgIGNv
bnN0ZXhwciBhdXRvIG9wdGltaXphdGlvbkZ1bmN0aW9uID0gWyZdICgpIHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgY29uc3RleHByIChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKQorICAgICAg
ICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gRGVsQnlLaW5kOjpCeUlkKQogICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZTsK
ICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemU7CiAgICAgICAgICAgICAgICAgfSgpOwogCiAg
ICAgICAgICAgICAgICAgY29uc3QgYXV0byBzdWJzY3JpcHQgPSBbJl0gewotICAgICAgICAgICAg
ICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCisgICAgICAg
ICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBEZWxCeUtpbmQ6OkJ5SWQpCiAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN1
YnNjcmlwdFZhbHVlLnJhd0JpdHMoKSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHBhcmFtcy5ncFNjcmF0Y2goMCkgIT0gcGFyYW1z
WzJdLmdwcigpKTsKQEAgLTU5MDIsNyArNTkwMiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgfSgpOwogCiAgICAgICAgICAgICAgICAgY29uc3QgYXV0byBnZW5lcmF0b3IgPSBbJl0gewot
ICAgICAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3Jt
YWwpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChraW5kID09IERlbEJ5S2lu
ZDo6QnlJZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJveDxKSVREZWxCeUlk
R2VuZXJhdG9yPjo6Y3JlYXRlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2Rl
QmxvY2soKSwgbm9kZVNlbWFudGljT3JpZ2luLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBzdWJzY3JpcHRW
YWx1ZSwgYmFzZSwKQEAgLTU5NTAsNyArNTk1MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHN3aXRj
aCAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKICAgICAgICAgY2FzZSBDZWxsVXNlOiB7
CiAgICAgICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7Ci0g
ICAgICAgICAgICBjb21waWxlRGVsQnk8RGVsQnlLaW5kOjpOb3JtYWw+KGJhc2UsIG1fbm9kZS0+
Y2FjaGVhYmxlSWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIGNvbXBpbGVEZWxCeTxEZWxCeUtp
bmQ6OkJ5SWQ+KGJhc2UsIG1fbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTU5OTAsNyArNTk5MCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgIkJhZCB1c2Uga2luZCIp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNv
bXBpbGVEZWxCeTxEZWxCeUtpbmQ6Ok5vcm1hbEJ5VmFsPihiYXNlLCBzdWJzY3JpcHQpOworICAg
ICAgICAgICAgY29tcGlsZURlbEJ5PERlbEJ5S2luZDo6QnlWYWw+KGJhc2UsIHN1YnNjcmlwdCk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtODkzNyw3ICs4OTM3LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgdW5zaWduZWQgbWlzc05vbmNvbmZpZ3VyYWJsZSA9IDA7CiAKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS52YXJpYW50cy5zaXplKCk7IGktLTspIHsKLSAg
ICAgICAgICAgIERlbGV0ZUJ5SWRWYXJpYW50IHZhcmlhbnQgPSBkYXRhLnZhcmlhbnRzW2ldOwor
ICAgICAgICAgICAgRGVsZXRlQnlWYXJpYW50IHZhcmlhbnQgPSBkYXRhLnZhcmlhbnRzW2ldOwog
ICAgICAgICAgICAgaWYgKCF2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKHZhcmlhbnQucmVzdWx0KCkpCiAgICAgICAgICAgICAgICAgICAgICsrbWlzc0NvbmZp
Z3VyYWJsZTsKQEAgLTg5NjMsNyArODk2Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIFZlY3RvcjxT
d2l0Y2hDYXNlLCAyPiBjYXNlczsKICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBiYXNl
U2V0OwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLnZhcmlhbnRzLnNpemUoKSwgYmxv
Y2sgPSAwOyBpLS07KSB7Ci0gICAgICAgICAgICBEZWxldGVCeUlkVmFyaWFudCB2YXJpYW50ID0g
ZGF0YS52YXJpYW50c1tpXTsKKyAgICAgICAgICAgIERlbGV0ZUJ5VmFyaWFudCB2YXJpYW50ID0g
ZGF0YS52YXJpYW50c1tpXTsKICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0
dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKTsK
ICAgICAgICAgICAgIGJhc2VTZXQuYWRkKHN0cnVjdHVyZSk7CiAgICAgICAgICAgICBpZiAodmFy
aWFudC5uZXdTdHJ1Y3R1cmUoKSkKQEAgLTg5NzksNyArODk3OSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIFZlY3RvcjxWYWx1ZUZyb21CbG9jaywgMj4gcmVzdWx0czsKIAogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBkYXRhLnZhcmlhbnRzLnNpemUoKSwgYmxvY2sgPSAwOyBpLS07KSB7Ci0gICAg
ICAgICAgICBEZWxldGVCeUlkVmFyaWFudCB2YXJpYW50ID0gZGF0YS52YXJpYW50c1tpXTsKKyAg
ICAgICAgICAgIERlbGV0ZUJ5VmFyaWFudCB2YXJpYW50ID0gZGF0YS52YXJpYW50c1tpXTsKICAg
ICAgICAgICAgIGlmICghdmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKIApAQCAtMTIzNzQsNyArMTIzNzQsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAg
ICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChJbnQ2NCk7
CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihiYXNlKTsKLSAgICAgICAg
aWYgY29uc3RleHByIChraW5kICE9IEluQnlLaW5kOjpOb3JtYWwpCisgICAgICAgIGlmIGNvbnN0
ZXhwciAoa2luZCAhPSBJbkJ5S2luZDo6QnlJZCkKICAgICAgICAgICAgIHBhdGNocG9pbnQtPmFw
cGVuZFNvbWVSZWdpc3RlcihzdWJzY3JpcHRWYWx1ZSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFw
cGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFz
a1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFs
dWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKQEAgLTEyMzk3LDE0
ICsxMjM5NywxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGF1dG8gYmFzZSA9IEpTVmFs
dWVSZWdzKHBhcmFtc1sxXS5ncHIoKSk7CiAKICAgICAgICAgICAgICAgICBjb25zdCBhdXRvIHN1
YnNjcmlwdCA9IFsmXSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9
PSBJbkJ5S2luZDo6Tm9ybWFsKQorICAgICAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtp
bmQgPT0gSW5CeUtpbmQ6OkJ5SWQpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN1YnNjcmlwdFZhbHVlLnJhd0JpdHMoKSk7CiAgICAg
ICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkpOwogICAgICAgICAgICAgICAgIH0oKTsKIAogICAgICAg
ICAgICAgICAgIGNvbnN0IGF1dG8gZ2VuZXJhdG9yID0gWyZdIHsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgY29uc3RleHByIChraW5kID09IEluQnlLaW5kOjpOb3JtYWwpIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgY29uc3RleHByIChraW5kID09IEluQnlLaW5kOjpCeUlkKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gQm94PEpJVEluQnlJZEdlbmVyYXRvcj46OmNyZWF0ZSgK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIHNlbWFudGljTm9k
ZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJh
bXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgc3Vic2NyaXB0VmFsdWUsIGJhc2UsCkBAIC0xMjQy
Nyw3ICsxMjQyNyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0
b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gSW5CeUtpbmQ6Ok5vcm1hbCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChraW5kID09IEluQnlLaW5k
OjpCeUlkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2Fs
bE9wZXJhdGlvbigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJh
bXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBzZW1hbnRpY05vZGVPcmlnaW4sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbklu
QnlJZE9wdGltaXplLCByZXR1cm5HUFIsCkBAIC0xMjQ1OCwxMiArMTI0NTgsMTIgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgY29tcGlsZUluQnlJZCgpCiAgICAgewotICAgICAgICBjb21waWxlSW5C
eTxJbkJ5S2luZDo6Tm9ybWFsPihsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX25vZGUtPmNh
Y2hlYWJsZUlkZW50aWZpZXIoKSk7CisgICAgICAgIGNvbXBpbGVJbkJ5PEluQnlLaW5kOjpCeUlk
Pihsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX25vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIo
KSk7CiAgICAgfQogCiAgICAgdm9pZCBjb21waWxlSW5CeVZhbCgpCiAgICAgewotICAgICAgICBj
b21waWxlSW5CeTxJbkJ5S2luZDo6Tm9ybWFsQnlWYWw+KGxvd0NlbGwobV9ub2RlLT5jaGlsZDEo
KSksIGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSkpOworICAgICAgICBjb21waWxlSW5CeTxJ
bkJ5S2luZDo6QnlWYWw+KGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIGxvd0pTVmFsdWUobV9u
b2RlLT5jaGlsZDIoKSkpOwogICAgIH0KIAogICAgIHZvaWQgY29tcGlsZUhhc093blByb3BlcnR5
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDQx
ODVjNzYyYzk4NS4uNmYyOGM5MzA2N2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAKQEAgLTIwNyw3ICsyMDcsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xv
YmFsTwogCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygp
OwogICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nQnkodm0sIGNvZGVCbG9jaywgYmFz
ZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCh2bSksIGlkZW50aWZpZXIpICYmICFzbG90LmlzVGFpbnRl
ZEJ5T3BhcXVlT2JqZWN0KCkgJiYgKHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpIHx8IHNsb3QuaXND
YWNoZWFibGVHZXR0ZXIoKSB8fCBzbG90LmlzVW5zZXQoKSkpCi0gICAgICAgIHJlcGF0Y2hHZXRC
eShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBpZGVudGlmaWVyLCBzbG90LCAq
c3R1YkluZm8sIEdldEJ5S2luZDo6VHJ5KTsKKyAgICAgICAgcmVwYXRjaEdldEJ5KGdsb2JhbE9i
amVjdCwgY29kZUJsb2NrLCBiYXNlVmFsdWUsIGlkZW50aWZpZXIsIHNsb3QsICpzdHViSW5mbywg
R2V0QnlLaW5kOjpUcnlCeUlkKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2xvdC5n
ZXRQdXJlUmVzdWx0KCkpOwogfQpAQCAtMjY2LDcgKzI2Niw3IEBAIEpTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemUsIEVuY29kZWRKU1ZhbHVlLCAo
SlNHbG9iCiAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2Nr
KCk7CiAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeSh2bSwgY29kZUJsb2NrLCBi
YXNlVmFsdWUuc3RydWN0dXJlT3JOdWxsKHZtKSwgaWRlbnRpZmllcikpCi0gICAgICAgIHJlcGF0
Y2hHZXRCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBpZGVudGlmaWVyLCBz
bG90LCAqc3R1YkluZm8sIEdldEJ5S2luZDo6RGlyZWN0KTsKKyAgICAgICAgcmVwYXRjaEdldEJ5
KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlVmFsdWUsIGlkZW50aWZpZXIsIHNsb3QsICpz
dHViSW5mbywgR2V0QnlLaW5kOjpCeUlkRGlyZWN0KTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGZvdW5kID8gc2xvdC5nZXRWYWx1ZShnbG9iYWxPYmpl
Y3QsIGlkZW50KSA6IGpzVW5kZWZpbmVkKCkpKTsKIH0KQEAgLTMyOSw3ICszMjksNyBAQCBKU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCBFbmNvZGVkSlNW
YWx1ZSwgKEpTR2xvYmFsT2JqZQogICAgICAgICAKICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwogICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnNp
ZGVyQ2FjaGluZ0J5KHZtLCBjb2RlQmxvY2ssIGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwodm0p
LCBpZGVudGlmaWVyKSkKLSAgICAgICAgICAgIHJlcGF0Y2hHZXRCeShnbG9iYWxPYmplY3QsIGNv
ZGVCbG9jaywgYmFzZVZhbHVlLCBpZGVudGlmaWVyLCBzbG90LCAqc3R1YkluZm8sIEdldEJ5S2lu
ZDo6Tm9ybWFsKTsKKyAgICAgICAgICAgIHJlcGF0Y2hHZXRCeShnbG9iYWxPYmplY3QsIGNvZGVC
bG9jaywgYmFzZVZhbHVlLCBpZGVudGlmaWVyLCBzbG90LCAqc3R1YkluZm8sIEdldEJ5S2luZDo6
QnlJZCk7CiAgICAgICAgIHJldHVybiBmb3VuZCA/IHNsb3QuZ2V0VmFsdWUoZ2xvYmFsT2JqZWN0
LCBpZGVudCkgOiBqc1VuZGVmaW5lZCgpOwogICAgIH0pKTsKIH0KQEAgLTM4OSw3ICszODksNyBA
QCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1p
emUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbAogICAgICAgICAKICAgICAgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwogICAgICAgICBpZiAoc3R1YkluZm8t
PmNvbnNpZGVyQ2FjaGluZ0J5KHZtLCBjb2RlQmxvY2ssIGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51
bGwodm0pLCBpZGVudGlmaWVyKSkKLSAgICAgICAgICAgIHJlcGF0Y2hHZXRCeShnbG9iYWxPYmpl
Y3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBpZGVudGlmaWVyLCBzbG90LCAqc3R1YkluZm8sIEdl
dEJ5S2luZDo6V2l0aFRoaXMpOworICAgICAgICAgICAgcmVwYXRjaEdldEJ5KGdsb2JhbE9iamVj
dCwgY29kZUJsb2NrLCBiYXNlVmFsdWUsIGlkZW50aWZpZXIsIHNsb3QsICpzdHViSW5mbywgR2V0
QnlLaW5kOjpCeUlkV2l0aFRoaXMpOwogICAgICAgICByZXR1cm4gZm91bmQgPyBzbG90LmdldFZh
bHVlKGdsb2JhbE9iamVjdCwgaWRlbnQpIDoganNVbmRlZmluZWQoKTsKICAgICB9KSk7CiB9CkBA
IC00NDgsNyArNDQ4LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluQnlJ
ZE9wdGltaXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWMKICAgICBib29sIGZvdW5k
ID0gYmFzZU9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3Qp
OwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKICAg
ICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZ0J5KHZtLCBjb2RlQmxvY2ssIGJhc2VPYmpl
Y3QtPnN0cnVjdHVyZSh2bSksIGlkZW50aWZpZXIpKQotICAgICAgICByZXBhdGNoSW5CeShnbG9i
YWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgaWRlbnRpZmllciwgZm91bmQsIHNsb3Qs
ICpzdHViSW5mbywgSW5CeUtpbmQ6Ok5vcm1hbCk7CisgICAgICAgIHJlcGF0Y2hJbkJ5KGdsb2Jh
bE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBpZGVudGlmaWVyLCBmb3VuZCwgc2xvdCwg
KnN0dWJJbmZvLCBJbkJ5S2luZDo6QnlJZCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c0Jvb2xlYW4oZm91bmQpKTsKIH0KIApAQCAtNDkwLDcgKzQ5MCw3IEBAIEpTQ19ERUZJTkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25JbkJ5VmFsT3B0aW1pemUsIEVuY29kZWRKU1ZhbHVlLCAoSlNH
bG9iYWxPYmplCiAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2Rl
QmxvY2soKTsKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gQ2FjaGVh
YmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUNlbGwoa2V5LmFzQ2VsbCgpKTsKICAgICAgICAgaWYg
KHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeSh2bSwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LT5z
dHJ1Y3R1cmUodm0pLCBpZGVudGlmaWVyKSkKLSAgICAgICAgICAgIHJlcGF0Y2hJbkJ5KGdsb2Jh
bE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBpZGVudGlmaWVyLCBmb3VuZCwgc2xvdCwg
KnN0dWJJbmZvLCBJbkJ5S2luZDo6Tm9ybWFsQnlWYWwpOworICAgICAgICAgICAgcmVwYXRjaElu
QnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIGlkZW50aWZpZXIsIGZvdW5k
LCBzbG90LCAqc3R1YkluZm8sIEluQnlLaW5kOjpCeVZhbCk7CiAgICAgfQogCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZm91bmQpKTsKQEAgLTIzNzIsNyArMjM3Miw3IEBA
IEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplLCBFbmNv
ZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqCiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gQ2FjaGVhYmxlSWRlbnRpZmllcjo6
Y3JlYXRlRnJvbUNlbGwoc3Vic2NyaXB0LmFzQ2VsbCgpKTsKICAgICAgICAgICAgICAgICBpZiAo
c3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZ0J5KHZtLCBjb2RlQmxvY2ssIGJhc2VWYWx1ZS5zdHJ1
Y3R1cmVPck51bGwodm0pLCBpZGVudGlmaWVyKSkKLSAgICAgICAgICAgICAgICAgICAgcmVwYXRj
aEdldEJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlVmFsdWUsIGlkZW50aWZpZXIsIHNs
b3QsICpzdHViSW5mbywgR2V0QnlLaW5kOjpOb3JtYWxCeVZhbCk7CisgICAgICAgICAgICAgICAg
ICAgIHJlcGF0Y2hHZXRCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBpZGVu
dGlmaWVyLCBzbG90LCAqc3R1YkluZm8sIEdldEJ5S2luZDo6QnlWYWwpOwogICAgICAgICAgICAg
ICAgIHJldHVybiBmb3VuZCA/IHNsb3QuZ2V0VmFsdWUoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUpIDoganNVbmRlZmluZWQoKTsKICAgICAgICAgICAgIH0pKTsKICAgICAgICAgfQpAQCAtMjY4
Miw3ICsyNjgyLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkRlbGV0ZUJ5
SWRPcHRpbWl6ZSwgc2l6ZV90LCAoSlNHbG9iYWxPYmplY3QqIGcKICAgICAgICAgaWYgKCFwYXJz
ZUluZGV4KGlkZW50KSkgewogICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxs
RnJhbWUtPmNvZGVCbG9jaygpOwogICAgICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNh
Y2hpbmdCeSh2bSwgY29kZUJsb2NrLCBiYXNlVmFsdWUuc3RydWN0dXJlT3JOdWxsKHZtKSwgaWRl
bnRpZmllcikpCi0gICAgICAgICAgICAgICAgcmVwYXRjaERlbGV0ZUJ5KGdsb2JhbE9iamVjdCwg
Y29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVyZSwgaWRlbnRpZmllciwgKnN0
dWJJbmZvLCBEZWxCeUtpbmQ6Ok5vcm1hbCwgZWNtYU1vZGUpOworICAgICAgICAgICAgICAgIHJl
cGF0Y2hEZWxldGVCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgc2xvdCwgYmFzZVZhbHVlLCBv
bGRTdHJ1Y3R1cmUsIGlkZW50aWZpZXIsICpzdHViSW5mbywgRGVsQnlLaW5kOjpCeUlkLCBlY21h
TW9kZSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTI3NDcsNyArMjc0Nyw3IEBAIEpTQ19ERUZJ
TkVfSklUX09QRVJBVElPTihvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLCBzaXplX3QsIChK
U0dsb2JhbE9iamVjdCoKICAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZy
YW1lLT5jb2RlQmxvY2soKTsKICAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRp
ZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21DZWxsKHN1YnNjcmlwdC5hc0Nl
bGwoKSk7CiAgICAgICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZ0J5KHZtLCBj
b2RlQmxvY2ssIGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwodm0pLCBpZGVudGlmaWVyKSkKLSAg
ICAgICAgICAgICAgICByZXBhdGNoRGVsZXRlQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHNs
b3QsIGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBpZGVudGlmaWVyLCAqc3R1YkluZm8sIERlbEJ5
S2luZDo6Tm9ybWFsQnlWYWwsIGVjbWFNb2RlKTsKKyAgICAgICAgICAgICAgICByZXBhdGNoRGVs
ZXRlQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHNsb3QsIGJhc2VWYWx1ZSwgb2xkU3RydWN0
dXJlLCBpZGVudGlmaWVyLCAqc3R1YkluZm8sIERlbEJ5S2luZDo6QnlWYWwsIGVjbWFNb2RlKTsK
ICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5k
ZXggMDcyOWRlNjJmNzRhLi41ZTc3NWVmNzYwMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZXBhdGNoLmNwcApAQCAtMTUzLDE1ICsxNTMsMTUgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9p
ZCBmaXJlV2F0Y2hwb2ludHNBbmRDbGVhclN0dWJJZk5lZWRlZChWTSYgdm0sIFN0cnVjdHVyZVMK
IGlubGluZSBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGFwcHJvcHJpYXRlT3B0aW1pemlu
Z0dldEJ5RnVuY3Rpb24oR2V0QnlLaW5kIGtpbmQpCiB7CiAgICAgc3dpdGNoIChraW5kKSB7Ci0g
ICAgY2FzZSBHZXRCeUtpbmQ6Ok5vcm1hbDoKKyAgICBjYXNlIEdldEJ5S2luZDo6QnlJZDoKICAg
ICAgICAgcmV0dXJuIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZTsKLSAgICBjYXNlIEdldEJ5S2lu
ZDo6V2l0aFRoaXM6CisgICAgY2FzZSBHZXRCeUtpbmQ6OkJ5SWRXaXRoVGhpczoKICAgICAgICAg
cmV0dXJuIG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplOwotICAgIGNhc2UgR2V0QnlL
aW5kOjpUcnk6CisgICAgY2FzZSBHZXRCeUtpbmQ6OlRyeUJ5SWQ6CiAgICAgICAgIHJldHVybiBv
cGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemU7Ci0gICAgY2FzZSBHZXRCeUtpbmQ6OkRpcmVjdDoK
KyAgICBjYXNlIEdldEJ5S2luZDo6QnlJZERpcmVjdDoKICAgICAgICAgcmV0dXJuIG9wZXJhdGlv
bkdldEJ5SWREaXJlY3RPcHRpbWl6ZTsKLSAgICBjYXNlIEdldEJ5S2luZDo6Tm9ybWFsQnlWYWw6
CisgICAgY2FzZSBHZXRCeUtpbmQ6OkJ5VmFsOgogICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0
QnlWYWxPcHRpbWl6ZTsKICAgICBjYXNlIEdldEJ5S2luZDo6UHJpdmF0ZU5hbWU6CiAgICAgICAg
IHJldHVybiBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplOwpAQCAtMTc0LDE1ICsxNzQs
MTUgQEAgaW5saW5lIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gYXBwcm9wcmlhdGVPcHRp
bWl6aW5nR2V0QnlGdW5jdGlvbihHZXRCeUtpbmQKIGlubGluZSBGdW5jdGlvblB0cjxDRnVuY3Rp
b25QdHJUYWc+IGFwcHJvcHJpYXRlR2V0QnlGdW5jdGlvbihHZXRCeUtpbmQga2luZCkKIHsKICAg
ICBzd2l0Y2ggKGtpbmQpIHsKLSAgICBjYXNlIEdldEJ5S2luZDo6Tm9ybWFsOgorICAgIGNhc2Ug
R2V0QnlLaW5kOjpCeUlkOgogICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0QnlJZDsKLSAgICBj
YXNlIEdldEJ5S2luZDo6V2l0aFRoaXM6CisgICAgY2FzZSBHZXRCeUtpbmQ6OkJ5SWRXaXRoVGhp
czoKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpczsKLSAgICBjYXNlIEdl
dEJ5S2luZDo6VHJ5OgorICAgIGNhc2UgR2V0QnlLaW5kOjpUcnlCeUlkOgogICAgICAgICByZXR1
cm4gb3BlcmF0aW9uVHJ5R2V0QnlJZDsKLSAgICBjYXNlIEdldEJ5S2luZDo6RGlyZWN0OgorICAg
IGNhc2UgR2V0QnlLaW5kOjpCeUlkRGlyZWN0OgogICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0
QnlJZERpcmVjdDsKLSAgICBjYXNlIEdldEJ5S2luZDo6Tm9ybWFsQnlWYWw6CisgICAgY2FzZSBH
ZXRCeUtpbmQ6OkJ5VmFsOgogICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0QnlWYWxHZW5lcmlj
OwogICAgIGNhc2UgR2V0QnlLaW5kOjpQcml2YXRlTmFtZToKICAgICAgICAgcmV0dXJuIG9wZXJh
dGlvbkdldFByaXZhdGVOYW1lOwpAQCAtMzIwLDkgKzMyMCw5IEBAIHN0YXRpYyBJbmxpbmVDYWNo
ZUFjdGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVC
bG9jayoKICAgICAgICAgICAgICAgICBpZiAoc2xvdC5pc1Vuc2V0KCkgJiYgc3RydWN0dXJlLT50
eXBlSW5mbygpLmdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlKCkp
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogCi0gICAgICAgICAg
ICAgICAgLy8gSWYgYSBraW5kIGlzIEdldEJ5S2luZDo6RGlyZWN0IG9yIEdldEJ5S2luZDo6UHJp
dmF0ZU5hbWUsIHdlIGRvIG5vdCBuZWVkIHRvIGludmVzdGlnYXRlIHByb3RvdHlwZSBjaGFpbnMg
ZnVydGhlci4KKyAgICAgICAgICAgICAgICAvLyBJZiBhIGtpbmQgaXMgR2V0QnlLaW5kOjpCeUlk
RGlyZWN0IG9yIEdldEJ5S2luZDo6UHJpdmF0ZU5hbWUsIHdlIGRvIG5vdCBuZWVkIHRvIGludmVz
dGlnYXRlIHByb3RvdHlwZSBjaGFpbnMgZnVydGhlci4KICAgICAgICAgICAgICAgICAvLyBDYWNo
ZWFiaWxpdHkganVzdCBkZXBlbmRzIG9uIHRoZSBoZWFkIHN0cnVjdHVyZS4KLSAgICAgICAgICAg
ICAgICBpZiAoa2luZCAhPSBHZXRCeUtpbmQ6OkRpcmVjdCAmJiAhaXNQcml2YXRlKSB7CisgICAg
ICAgICAgICAgICAgaWYgKGtpbmQgIT0gR2V0QnlLaW5kOjpCeUlkRGlyZWN0ICYmICFpc1ByaXZh
dGUpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byBjYWNoZVN0YXR1cyA9IHByZXBhcmVDaGFp
bkZvckNhY2hpbmcoZ2xvYmFsT2JqZWN0LCBiYXNlQ2VsbCwgc2xvdCk7CiAgICAgICAgICAgICAg
ICAgICAgIGlmICghY2FjaGVTdGF0dXMpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
R2l2ZVVwT25DYWNoZTsKQEAgLTM3MSw3ICszNzEsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rp
b24gdHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sq
CiAgICAgICAgICAgICBpZiAoc2xvdC5pc0NhY2hlYWJsZUN1c3RvbSgpICYmIHNsb3QuZG9tQXR0
cmlidXRlKCkpCiAgICAgICAgICAgICAgICAgZG9tQXR0cmlidXRlID0gc2xvdC5kb21BdHRyaWJ1
dGUoKTsKIAotICAgICAgICAgICAgaWYgKGtpbmQgPT0gR2V0QnlLaW5kOjpUcnkpIHsKKyAgICAg
ICAgICAgIGlmIChraW5kID09IEdldEJ5S2luZDo6VHJ5QnlJZCkgewogICAgICAgICAgICAgICAg
IEFjY2Vzc0Nhc2U6OkFjY2Vzc1R5cGUgdHlwZTsKICAgICAgICAgICAgICAgICBpZiAoc2xvdC5p
c0NhY2hlYWJsZVZhbHVlKCkpCiAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSBBY2Nlc3NDYXNl
OjpMb2FkOwpAQCAtNDA1LDcgKzQwNSw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlD
YWNoZUdldEJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayoKICAgICAg
ICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9IEFjY2Vz
c0Nhc2U6OkN1c3RvbVZhbHVlR2V0dGVyOwogCi0gICAgICAgICAgICAgICAgICAgIGlmIChraW5k
ID09IEdldEJ5S2luZDo6V2l0aFRoaXMgJiYgdHlwZSA9PSBBY2Nlc3NDYXNlOjpDdXN0b21BY2Nl
c3NvckdldHRlciAmJiBkb21BdHRyaWJ1dGUpCisgICAgICAgICAgICAgICAgICAgIGlmIChraW5k
ID09IEdldEJ5S2luZDo6QnlJZFdpdGhUaGlzICYmIHR5cGUgPT0gQWNjZXNzQ2FzZTo6Q3VzdG9t
QWNjZXNzb3JHZXR0ZXIgJiYgZG9tQXR0cmlidXRlKQogICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAKICAgICAgICAgICAgICAgICAgICAgbmV3Q2FzZSA9IEdl
dHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSgKQEAgLTg5MCw3ICs4OTAsNyBAQCB2b2lkIHJl
cGF0Y2hEZWxldGVCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgRGVsZXRlUAogCiAgICAgaWYgKHRyeUNhY2hlRGVsZXRlQnkoZ2xvYmFsT2JqZWN0
LCBjb2RlQmxvY2ssIHNsb3QsIGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUs
IHN0dWJJbmZvLCBraW5kLCBlY21hTW9kZSkgPT0gR2l2ZVVwT25DYWNoZSkgewogICAgICAgICBM
T0dfSUMoKElDRXZlbnQ6OkRlbEJ5UmVwbGFjZVdpdGhHZW5lcmljLCBiYXNlVmFsdWUuY2xhc3NJ
bmZvT3JOdWxsKGdsb2JhbE9iamVjdC0+dm0oKSksIElkZW50aWZpZXI6OmZyb21VaWQodm0sIHBy
b3BlcnR5TmFtZS51aWQoKSkpKTsKLSAgICAgICAgaWYgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3Jt
YWwpCisgICAgICAgIGlmIChraW5kID09IERlbEJ5S2luZDo6QnlJZCkKICAgICAgICAgICAgIGZ0
bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExv
Y2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYyk7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQ
YXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMpOwpAQCAtMTAwOSw3
ICsxMDA5LDcgQEAgdm9pZCByZXBhdGNoSW5CeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNPYmplY3QqIGIKIAogICAgIGlmICh0cnlDYWNoZUlu
QnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIHByb3BlcnR5TmFtZSwgd2Fz
Rm91bmQsIHNsb3QsIHN0dWJJbmZvKSA9PSBHaXZlVXBPbkNhY2hlKSB7CiAgICAgICAgIExPR19J
QygoSUNFdmVudDo6SW5SZXBsYWNlV2l0aEdlbmVyaWMsIGJhc2VPYmplY3QtPmNsYXNzSW5mbyhn
bG9iYWxPYmplY3QtPnZtKCkpLCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBwcm9wZXJ0eU5hbWUu
dWlkKCkpKSk7Ci0gICAgICAgIGlmIChraW5kID09IEluQnlLaW5kOjpOb3JtYWwpCisgICAgICAg
IGlmIChraW5kID09IEluQnlLaW5kOjpCeUlkKQogICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJl
cGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJh
dGlvbkluQnlJZEdlbmVyaWMpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBmdGxUaHVua0F3
YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwg
b3BlcmF0aW9uSW5CeVZhbEdlbmVyaWMpOwpAQCAtMTY3Nyw3ICsxNjc3LDcgQEAgdm9pZCByZXNl
dFB1dEJ5SUQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5m
bykKIAogdm9pZCByZXNldERlbEJ5KENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHVi
SW5mbyYgc3R1YkluZm8sIERlbEJ5S2luZCBraW5kKQogewotICAgIGlmIChraW5kID09IERlbEJ5
S2luZDo6Tm9ybWFsKQorICAgIGlmIChraW5kID09IERlbEJ5S2luZDo6QnlJZCkKICAgICAgICAg
ZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxs
TG9jYXRpb24sIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSk7CiAgICAgZWxzZQogICAgICAg
ICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENh
bGxMb2NhdGlvbiwgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSk7CkBAIC0xNjkxLDcgKzE2
OTEsNyBAQCBzdGF0aWMgdm9pZCByZXNldFBhdGNoYWJsZUp1bXAoU3RydWN0dXJlU3R1YkluZm8m
IHN0dWJJbmZvKQogCiB2b2lkIHJlc2V0SW5CeShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0
dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBJbkJ5S2luZCBraW5kKQogewotICAgIGlmIChraW5kID09
IEluQnlLaW5kOjpOb3JtYWwpCisgICAgaWYgKGtpbmQgPT0gSW5CeUtpbmQ6OkJ5SWQpCiAgICAg
ICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRo
Q2FsbExvY2F0aW9uLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7CiAgICAgZWxzZQogICAgICAg
ICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENh
bGxMb2NhdGlvbiwgb3BlcmF0aW9uSW5CeVZhbE9wdGltaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmgKaW5kZXggOTI4Yzk5YjEyOTE5Li44YWIzMDVhNzA5MTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVwYXRjaC5oCkBAIC0zNCwyMyArMzQsMjMgQEAKIG5hbWVzcGFjZSBKU0Mg
ewogCiBlbnVtIGNsYXNzIEdldEJ5S2luZCB7Ci0gICAgTm9ybWFsLAotICAgIE5vcm1hbEJ5VmFs
LAotICAgIFRyeSwKLSAgICBXaXRoVGhpcywKLSAgICBEaXJlY3QsCisgICAgQnlJZCwKKyAgICBC
eVZhbCwKKyAgICBUcnlCeUlkLAorICAgIEJ5SWRXaXRoVGhpcywKKyAgICBCeUlkRGlyZWN0LAog
ICAgIFByaXZhdGVOYW1lLAogICAgIFByaXZhdGVOYW1lQnlJZCwKIH07CiAKIGVudW0gY2xhc3Mg
RGVsQnlLaW5kIHsKLSAgICBOb3JtYWwsCi0gICAgTm9ybWFsQnlWYWwKKyAgICBCeUlkLAorICAg
IEJ5VmFsCiB9OwogCiBlbnVtIGNsYXNzIEluQnlLaW5kIHsKLSAgICBOb3JtYWwsCi0gICAgTm9y
bWFsQnlWYWwKKyAgICBCeUlkLAorICAgIEJ5VmFsCiB9OwogCiB2b2lkIHJlcGF0Y2hBcnJheUdl
dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVl
IGluZGV4LCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwo=
</data>
<flag name="review"
          id="452381"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431017</attachid>
            <date>2021-06-09 15:15:24 -0700</date>
            <delta_ts>2021-06-09 20:56:07 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>226750.diff</filename>
            <type>text/plain</type>
            <size>93039</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA2NTNjNWYzMzgxMWEuLjM1NjZj
YTQ4NTllMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTQ4LDggKzU0
OCw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
Ynl0ZWNvZGUvQ29kZVR5cGUuaAogICAgIGJ5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgKICAgICBi
eXRlY29kZS9EYXRhRm9ybWF0LmgKLSAgICBieXRlY29kZS9EZWxldGVCeUlkVmFyaWFudC5oCi0g
ICAgYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuaAogICAgIGJ5dGVjb2RlL0RpcmVjdEV2YWxDb2Rl
Q2FjaGUuaAogICAgIGJ5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKICAgICBieXRlY29kZS9FeGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGNhZWRl
YTA2ZjEyZC4uNjllMzA5ZGI2MTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMTggQEAKKzIwMjEtMDYtMDkgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnku
Y29tPgorCisgICAgICAgIFtKU0NdIFJlbmFtZSAqQnlJZFZhcmlhbnQgdG8gKkJ5VmFyaWFudCBh
bmQgKkJ5S2luZDo6Tm9ybWFsIHRvICpCeUtpbmQ6OkJ5SWQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjc1MAorCisgICAgICAgIFJldmlld2VkIGJ5
IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgQ2xlYW51cCBwYXRjaCBmb2xsb3dpbmcgcjI3ODQ0
NS4KKworICAgICAgICAxLiB7R2V0LCBEZWxldGUsIElufUJ5U3RhdHVzIChidXQgbm90IGBQdXRg
KSBoYXZlIGhhZCBgSWRgIHJlbW92ZWQgZnJvbSB0aGVpciBuYW1lczsgbGlrZXdpc2UsIHJlbW92
ZSBgSWRgCisgICAgICAgICAgIGZyb20gdGhlIG5hbWVzIG9mIHtHZXQsIERlbGV0ZSwgSW59QnlJ
ZFZhcmlhbnQuIFRoZXNlIGFyZSB1c2VkICpiZWZvcmUqIEJ5VmFsIGhhcyBiZWVuIGNvbnZlcnRl
ZCB0byBCeUlkLgorCisgICAgICAgIDIuIFRoZSB7R2V0LCBEZWwsIElufUJ5S2luZCBlbnVtIGNs
YXNzZXMgc2hvdWxkbid0IHJlYWxseSBjYWxsIEJ5SWQgYE5vcm1hbGAgLS0gbGV0J3Mgc2F5IGBC
eUlkYCBleHBsaWNpdGx5LgorCisgICAgICAgIDMuIEJvbnVzOiBJbiBERkdCeXRlY29kZVBhcnNl
ciwgbW92ZSBzb21lICpTdGF0dXM6OmNvbXB1dGVGb3IgY2FsbHMgaW5zaWRlIHRoZSBjb25kaXRp
b25hbCB0aGF0IHVzZXMgdGhlbS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
U291cmNlcy50eHQ6CisgICAgICAgICogYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3BwOgorICAg
ICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6YXBwZW5kVmFyaWFudCk6CisgICAgICAgIChKU0M6
OkRlbGV0ZUJ5U3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFj
ayk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjp2aXNpdEFnZ3JlZ2F0ZUltcGwpOgor
ICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6bWFya0lmQ2hlYXApOgorICAgICAgICAqIGJ5
dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvRGVsZXRlQnlWYXJp
YW50LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxl
dGVCeUlkVmFyaWFudC5jcHAuCisgICAgICAgIChKU0M6OkRlbGV0ZUJ5VmFyaWFudDo6RGVsZXRl
QnlWYXJpYW50KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlWYXJpYW50Ojp+RGVsZXRlQnlWYXJp
YW50KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlWYXJpYW50OjpvcGVyYXRvcj0pOgorICAgICAg
ICAoSlNDOjpEZWxldGVCeVZhcmlhbnQ6OmF0dGVtcHRUb01lcmdlKToKKyAgICAgICAgKEpTQzo6
RGVsZXRlQnlWYXJpYW50Ojp3cml0ZXNTdHJ1Y3R1cmVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
RGVsZXRlQnlWYXJpYW50Ojp2aXNpdEFnZ3JlZ2F0ZUltcGwpOgorICAgICAgICAoSlNDOjpEZWxl
dGVCeVZhcmlhbnQ6Om1hcmtJZkNoZWFwKToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlWYXJpYW50
OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlWYXJpYW50OjpmaW5hbGl6ZSk6
CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5VmFyaWFudDo6ZHVtcEluQ29udGV4dCBjb25zdCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvRGVsZXRlQnlWYXJpYW50Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlJZFZhcmlhbnQuaC4KKyAgICAgICAgKEpT
Qzo6RGVsZXRlQnlWYXJpYW50OjpvdmVybGFwcyk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlT
dGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeVN0YXR1czo6YXBwZW5kVmFyaWFudCk6Cisg
ICAgICAgIChKU0M6OkdldEJ5U3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpT
Qzo6R2V0QnlTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNr
KToKKyAgICAgICAgKEpTQzo6R2V0QnlTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAoSlND
OjpHZXRCeVN0YXR1czo6bWVyZ2UpOgorICAgICAgICAoSlNDOjpHZXRCeVN0YXR1czo6dmlzaXRB
Z2dyZWdhdGVJbXBsKToKKyAgICAgICAgKEpTQzo6R2V0QnlTdGF0dXM6Om1hcmtJZkNoZWFwKToK
KyAgICAgICAgKEpTQzo6R2V0QnlTdGF0dXM6OmZpbmFsaXplKToKKyAgICAgICAgKiBieXRlY29k
ZS9HZXRCeVN0YXR1cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5VmFyaWFudC5jcHA6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQu
Y3BwLgorICAgICAgICAoSlNDOjpHZXRCeVZhcmlhbnQ6OkdldEJ5VmFyaWFudCk6CisgICAgICAg
IChKU0M6OkdldEJ5VmFyaWFudDo6fkdldEJ5VmFyaWFudCk6CisgICAgICAgIChKU0M6OkdldEJ5
VmFyaWFudDo6b3BlcmF0b3I9KToKKyAgICAgICAgKEpTQzo6R2V0QnlWYXJpYW50OjpjYW5NZXJn
ZUludHJpbnNpY1N0cnVjdHVyZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpHZXRCeVZhcmlhbnQ6
OmF0dGVtcHRUb01lcmdlKToKKyAgICAgICAgKEpTQzo6R2V0QnlWYXJpYW50Ojp2aXNpdEFnZ3Jl
Z2F0ZUltcGwpOgorICAgICAgICAoSlNDOjpHZXRCeVZhcmlhbnQ6Om1hcmtJZkNoZWFwKToKKyAg
ICAgICAgKEpTQzo6R2V0QnlWYXJpYW50OjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkdldEJ5
VmFyaWFudDo6ZHVtcCBjb25zdCk6CisgICAgICAgIChKU0M6OkdldEJ5VmFyaWFudDo6ZHVtcElu
Q29udGV4dCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlWYXJpYW50Lmg6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuaC4K
KyAgICAgICAgKEpTQzo6R2V0QnlWYXJpYW50OjpvdmVybGFwcyk6CisgICAgICAgICogYnl0ZWNv
ZGUvSW5CeVN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkluQnlTdGF0dXM6OmFwcGVuZFZhcmlh
bnQpOgorICAgICAgICAoSlNDOjpJbkJ5U3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0
RXhpdFNpdGVGZWVkYmFjayk6CisgICAgICAgIChKU0M6OkluQnlTdGF0dXM6Om1lcmdlKToKKyAg
ICAgICAgKEpTQzo6SW5CeVN0YXR1czo6bWFya0lmQ2hlYXApOgorICAgICAgICAoSlNDOjpJbkJ5
U3RhdHVzOjpmaW5hbGl6ZSk6CisgICAgICAgICogYnl0ZWNvZGUvSW5CeVN0YXR1cy5oOgorICAg
ICAgICAqIGJ5dGVjb2RlL0luQnlWYXJpYW50LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRWYXJpYW50LmNwcC4KKyAgICAgICAgKEpTQzo6SW5C
eVZhcmlhbnQ6OkluQnlWYXJpYW50KToKKyAgICAgICAgKEpTQzo6SW5CeVZhcmlhbnQ6OmF0dGVt
cHRUb01lcmdlKToKKyAgICAgICAgKEpTQzo6SW5CeVZhcmlhbnQ6Om1hcmtJZkNoZWFwKToKKyAg
ICAgICAgKEpTQzo6SW5CeVZhcmlhbnQ6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SW5CeVZh
cmlhbnQ6OmR1bXAgY29uc3QpOgorICAgICAgICAoSlNDOjpJbkJ5VmFyaWFudDo6ZHVtcEluQ29u
dGV4dCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvSW5CeVZhcmlhbnQuaDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRWYXJpYW50LmguCisgICAg
ICAgIChKU0M6OkluQnlWYXJpYW50OjpvdmVybGFwcyk6CisgICAgICAgICogYnl0ZWNvZGUvU3Ry
dWN0dXJlU3R1YkluZm8uY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6cmVz
ZXQpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAg
ICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKToK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKToK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldFByaXZhdGVOYW1lQnlJZCk6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURlbGV0ZUJ5SWQpOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbkJ5SWQpOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcv
REZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50
Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFu
dEZvbGRpbmdQaGFzZTo6ZW1pdEdldEJ5T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpDb25z
dGFudEZvbGRpbmdQaGFzZTo6ZW1pdERlbGV0ZUJ5T2Zmc2V0KToKKyAgICAgICAgKiBkZmcvREZH
Tm9kZS5oOgorICAgICAgICAqIGRmZy9ERkdWYWxpZGF0ZS5jcHA6CisgICAgICAgICogZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVEZWxCeSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVEZWxldGVCeUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZURlbGV0ZUJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZU11bHRpRGVsZXRlQnlPZmZzZXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAgICAgKiBqaXQvSklU
T3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6
CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjphcHByb3ByaWF0ZU9w
dGltaXppbmdHZXRCeUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6YXBwcm9wcmlhdGVHZXRCeUZ1
bmN0aW9uKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVHZXRCeSk6CisgICAgICAgIChKU0M6OnJl
cGF0Y2hEZWxldGVCeSk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlSW5CeSk6CisgICAgICAgIChK
U0M6OnJlcGF0Y2hJbkJ5KToKKyAgICAgICAgKEpTQzo6cmVzZXRHZXRCeSk6CisgICAgICAgIChK
U0M6OnJlc2V0RGVsQnkpOgorICAgICAgICAoSlNDOjpyZXNldEluQnkpOgorICAgICAgICAqIGpp
dC9SZXBhdGNoLmg6CisKIDIwMjEtMDYtMDkgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29t
PgogCiAgICAgICAgIFNwZWN1bGF0aXZlIGJ1aWxkIGZpeCBmb3IgV2luMzIuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDJkZWMyNGM4YmI2Yi4uNTcxNGQ0NjA1N2NjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI3LDcgKzEyNyw3IEBACiAKIC8qIEJlZ2luIFBC
WEJ1aWxkRmlsZSBzZWN0aW9uICovCiAJCTBGMDEyMzMzMTk0NEVBMUIwMDg0M0EwQyAvKiBERkdW
YWx1ZVN0cmVuZ3RoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjAxMjMzMTE5NDRFQTFCMDA4NDNBMEMgLyogREZHVmFsdWVTdHJlbmd0aC5oICovOyB9
OwotCQkwRjAzMzJDNDE4QjAxNzYzMDA1Rjk3OUEgLyogR2V0QnlJZFZhcmlhbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMDMzMkMyMThCMDE3NjMw
MDVGOTc5QSAvKiBHZXRCeUlkVmFyaWFudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGMDMzMkM0MThCMDE3NjMwMDVGOTc5QSAvKiBHZXRCeVZh
cmlhbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MDMzMkMyMThCMDE3NjMwMDVGOTc5QSAvKiBHZXRCeVZhcmlhbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjAzMzJDNjE4QjUzRkE5MDA1Rjk3
OUEgLyogRlRMV2VpZ2h0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjAzMzJDNTE4QjUzRkE5MDA1Rjk3OUEgLyogRlRMV2VpZ2h0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwMzMyQzgxOEI1NDZF
QzAwNUY5NzlBIC8qIEZUTFdlaWdodGVkVGFyZ2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjAzMzJDNzE4QjU0NkVDMDA1Rjk3OUEgLyogRlRMV2Vp
Z2h0ZWRUYXJnZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRjA0Mzk2RTFCMDNEQzBCMDA5NTk4QjcgLyogREZHQ29tYmluZWRMaXZlbmVzcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwNDM5NkMx
QjAzREMwQjAwOTU5OEI3IC8qIERGR0NvbWJpbmVkTGl2ZW5lc3MuaCAqLzsgfTsKQEAgLTExODIs
NyArMTE4Miw3IEBACiAJCTcyNkI5MUIzMjY1ODE2NTMwMDhFNkY4MiAvKiBKSVRDb21waWxhdGlv
bk1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcy
NkI5MUFCMjY1ODE2NTMwMDhFNkY4MiAvKiBKSVRDb21waWxhdGlvbk1vZGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjZCOTFCNzI2NTgxNjUz
MDA4RTZGODIgLyogSklUUGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzI2QjkxQUYyNjU4MTY1MzAwOEU2RjgyIC8qIEpJVFBsYW4uaCAqLzsgfTsK
IAkJNzI2QjkxQkEyNjU4MjYzRDAwOEU2RjgyIC8qIEpJVENvbXBpbGF0aW9uS2V5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjZCOTFCODI2NTgyNjND
MDA4RTZGODIgLyogSklUQ29tcGlsYXRpb25LZXkuaCAqLzsgfTsKLQkJNzMxMUZBMzIyNDBEQjFE
MzAwM0Q0OERCIC8qIERlbGV0ZUJ5SWRWYXJpYW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MzExRkEzMTI0MERCMUQzMDAzRDQ4REIgLyogRGVsZXRl
QnlJZFZhcmlhbnQuaCAqLzsgfTsKKwkJNzMxMUZBMzIyNDBEQjFEMzAwM0Q0OERCIC8qIERlbGV0
ZUJ5VmFyaWFudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzMxMUZBMzEyNDBEQjFEMzAwM0Q0OERCIC8qIERlbGV0ZUJ5VmFyaWFudC5oICovOyB9Owog
CQk3MzRCNjU1NTIzRjVDMTA0MDBBMDY5RDEgLyogRGVsZXRlUHJvcGVydHlTbG90LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MzRCNjU1NDIzRjRBMzMx
MDBBMDY5RDEgLyogRGVsZXRlUHJvcGVydHlTbG90LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzNBRDA2MjkyM0ZGNjYyNjAwRjUzNTkzIC8qIERl
bGV0ZUJ5U3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3M0FEMDYyODIzRkY2NjI2MDBGNTM1OTMgLyogRGVsZXRlQnlTdGF0dXMuaCAqLzsgfTsK
IAkJNzNFMzc5OTQyMkUwRUY2NTAwOTMzNTY1IC8qIEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3M0UzNzk5MzIyRTBF
RjRGMDA5MzM1NjUgLyogQjNSZWR1Y2VMb29wU3RyZW5ndGguaCAqLzsgfTsKQEAgLTE0MDEsNyAr
MTQwMSw3IEBACiAJCUExRDc5MkZGMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0
Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExRDc5MkY5MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0
b3IuaCAqLzsgfTsKIAkJQTFENzkzMDExQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3Jt
YXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExRDc5MkZCMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
LmggKi87IH07CiAJCUEzMjFBQTZEMjYyNjM1OUIwMDIzQURBMiAvKiBJbnRsV29ya2Fyb3VuZC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMyMUFBNkMy
NjI2MzU5QjAwMjNBREEyIC8qIEludGxXb3JrYXJvdW5kLmggKi87IH07Ci0JCUEzODJDNTMxMjY2
NzExMUQwMDQyQ0Q5OSAvKiBJbkJ5SWRWYXJpYW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzMwNUZCMTIwQjBGNzg4MDBDRUI4MkIgLyogSW5CeUlk
VmFyaWFudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUEzODJDNTMxMjY2NzExMUQwMDQyQ0Q5OSAvKiBJbkJ5VmFyaWFudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzMDVGQjEyMEIwRjc4ODAwQ0VC
ODJCIC8qIEluQnlWYXJpYW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQTM4RDI1MEUyNTgwMEQ0NDAwNDJCRkREIC8qIEpTQXJyYXlCdWZmZXJQ
cm90b3R5cGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMzhEMjUwRDI1ODAwRDQzMDA0MkJGREQgLyogSlNBcnJheUJ1ZmZlclByb3RvdHlw
ZUlubGluZXMuaCAqLzsgfTsKIAkJQTM4RDVCRkMyNjY2RDNEQTAwQTEwOUE2IC8qIEluQnlTdGF0
dXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzOEQ1
QkZBMjY2NkQzREEwMEExMDlBNiAvKiBJbkJ5U3RhdHVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTNFRTg1NDMyNjI1MTRCMDAwRkM5QjhEIC8q
IEludGxXb3JrYXJvdW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEEzNzYxOTQwMjYyNTEyN0MwMENCQ0JBOSAvKiBJbnRsV29ya2Fyb3VuZC5jcHAg
Ki87IH07CkBAIC0yMzA1LDggKzIzMDUsOCBAQAogCQkwRjAxMjMzMDE5NDRFQTFCMDA4NDNBMEMg
LyogREZHVmFsdWVTdHJlbmd0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBERkdWYWx1ZVN0cmVuZ3RoLmNwcDsgcGF0aCA9IGRmZy9ERkdWYWx1ZVN0cmVuZ3RoLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwMTIzMzExOTQ0RUExQjAwODQzQTBD
IC8qIERGR1ZhbHVlU3RyZW5ndGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
REZHVmFsdWVTdHJlbmd0aC5oOyBwYXRoID0gZGZnL0RGR1ZhbHVlU3RyZW5ndGguaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwMzMyQkYxOEFERkFFMTAwNUY5NzlBIC8qIEV4aXRp
bmdKSVRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4aXRp
bmdKSVRUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEYwMzMyQzExOEIw
MTc2MzAwNUY5NzlBIC8qIEdldEJ5SWRWYXJpYW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEdldEJ5SWRWYXJpYW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMEYwMzMyQzIxOEIwMTc2MzAwNUY5NzlBIC8qIEdldEJ5SWRWYXJpYW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdldEJ5SWRWYXJpYW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMDMzMkMxMThCMDE3NjMwMDVGOTc5QSAvKiBHZXRCeVZh
cmlhbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2V0QnlWYXJp
YW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwMzMyQzIxOEIwMTc2MzAw
NUY5NzlBIC8qIEdldEJ5VmFyaWFudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHZXRCeVZhcmlhbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwMzMyQzUx
OEI1M0ZBOTAwNUY5NzlBIC8qIEZUTFdlaWdodC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBGVExXZWlnaHQuaDsgcGF0aCA9IGZ0bC9GVExXZWlnaHQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEYwMzMyQzcxOEI1NDZFQzAwNUY5NzlBIC8qIEZUTFdlaWdodGVk
VGFyZ2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTFdlaWdodGVkVGFy
Z2V0Lmg7IHBhdGggPSBmdGwvRlRMV2VpZ2h0ZWRUYXJnZXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEYwNDM5NkIxQjAzREMwQjAwOTU5OEI3IC8qIERGR0NvbWJpbmVkTGl2ZW5l
c3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQ29tYmluZWRM
aXZlbmVzcy5jcHA7IHBhdGggPSBkZmcvREZHQ29tYmluZWRMaXZlbmVzcy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MDYyLDggKzQwNjIsOCBAQAogCQk3MjZCOTFBRjI2NTgx
NjUzMDA4RTZGODIgLyogSklUUGxhbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKSVRQbGFuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNkI5MUI4MjY1ODI2
M0MwMDhFNkY4MiAvKiBKSVRDb21waWxhdGlvbktleS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKSVRDb21waWxhdGlvbktleS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MjZCOTFCOTI2NTgyNjNDMDA4RTZGODIgLyogSklUQ29tcGlsYXRpb25LZXkuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUQ29tcGlsYXRpb25LZXkuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MzExRkEzMTI0MERCMUQzMDAzRDQ4REIg
LyogRGVsZXRlQnlJZFZhcmlhbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVsZXRlQnlJZFZhcmlhbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzMxMUZBMzMyNDBEQjI0OTAwM0Q0OERC
IC8qIERlbGV0ZUJ5SWRWYXJpYW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlbGV0ZUJ5SWRW
YXJpYW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzMxMUZBMzEyNDBEQjFE
MzAwM0Q0OERCIC8qIERlbGV0ZUJ5VmFyaWFudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWxldGVCeVZh
cmlhbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzMxMUZBMzMyNDBEQjI0OTAw
M0Q0OERCIC8qIERlbGV0ZUJ5VmFyaWFudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWxldGVC
eVZhcmlhbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MzE5MEQ5NjI0MDA5
MzQ5MDBGODkxQzkgLyogRGVsZXRlQnlTdGF0dXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVs
ZXRlQnlTdGF0dXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MzRCNjU1NDIz
RjRBMzMxMDBBMDY5RDEgLyogRGVsZXRlUHJvcGVydHlTbG90LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERlbGV0ZVByb3BlcnR5U2xvdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3M0FEMDYyODIzRkY2NjI2MDBGNTM1OTMgLyogRGVsZXRlQnlTdGF0dXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRGVsZXRlQnlTdGF0dXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTUwNjIsOCArNTA2Miw4IEBACiAJCUUzMjgyQkI5MUZFOTMwQTMwMEVEQUY3MSAvKiBZ
YXJyRXJyb3JDb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFlh
cnJFcnJvckNvZGUuY3BwOyBwYXRoID0geWFyci9ZYXJyRXJyb3JDb2RlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMyODJCQkExRkU5MzBBNDAwRURBRjcxIC8qIFlhcnJFcnJv
ckNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyckVycm9yQ29kZS5o
OyBwYXRoID0geWFyci9ZYXJyRXJyb3JDb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzMkMzQzY4MjNFOTRDMUUwMEJDOTdDMCAvKiBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmxpbmtlZENvZGVCbG9ja0dl
bmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMzMwNUZCMDIwQjBGNzg3
MDBDRUI4MkIgLyogSW5CeUlkVmFyaWFudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbkJ5SWRWYXJpYW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRTMzMDVGQjEyMEIwRjc4ODAwQ0VCODJCIC8qIEluQnlJZFZhcmlhbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5CeUlkVmFyaWFudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFMzMwNUZCMDIwQjBGNzg3MDBDRUI4MkIgLyogSW5CeVZhcmlhbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5CeVZhcmlhbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzMwNUZCMTIwQjBGNzg4MDBDRUI4MkIgLyog
SW5CeVZhcmlhbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5CeVZhcmlh
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzMDk1REMyMzIxMEExNDAwRUI3
ODU2IC8qIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJbnRl
cm5hbEZpZWxkT2JqZWN0SW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzM0
Q0JCMjIxRkQ5NkE4MDAwRUIxNzggLyogUmVnRXhwR2xvYmFsRGF0YS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBHbG9iYWxEYXRhLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzNENCQjMyMUZEOTZBOTAwMEVCMTc4IC8qIFJlZ0V4cEds
b2JhbERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwR2xvYmFs
RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODUzNywxMCArODUzNywxMCBA
QAogCQkJCTBGQzcxMkREMTdDRDg3NzgwMDhDQzkzQyAvKiBEZWZlcnJlZENvbXBpbGF0aW9uQ2Fs
bGJhY2suaCAqLywKIAkJCQlGRTUwNjg2NjFBRTI1RTI4MDAwOURBQjcgLyogRGVmZXJyZWRTb3Vy
Y2VEdW1wLmNwcCAqLywKIAkJCQlGRTUwNjg2NDFBRTI0NjM5MDAwOURBQjcgLyogRGVmZXJyZWRT
b3VyY2VEdW1wLmggKi8sCi0JCQkJNzMxMUZBMzMyNDBEQjI0OTAwM0Q0OERCIC8qIERlbGV0ZUJ5
SWRWYXJpYW50LmNwcCAqLywKLQkJCQk3MzExRkEzMTI0MERCMUQzMDAzRDQ4REIgLyogRGVsZXRl
QnlJZFZhcmlhbnQuaCAqLywKIAkJCQk3MzE5MEQ5NjI0MDA5MzQ5MDBGODkxQzkgLyogRGVsZXRl
QnlTdGF0dXMuY3BwICovLAogCQkJCTczQUQwNjI4MjNGRjY2MjYwMEY1MzU5MyAvKiBEZWxldGVC
eVN0YXR1cy5oICovLAorCQkJCTczMTFGQTMzMjQwREIyNDkwMDNENDhEQiAvKiBEZWxldGVCeVZh
cmlhbnQuY3BwICovLAorCQkJCTczMTFGQTMxMjQwREIxRDMwMDNENDhEQiAvKiBEZWxldGVCeVZh
cmlhbnQuaCAqLywKIAkJCQkwRkJDMEFFNDE0OTZDN0MxMDBENEZCREQgLyogREZHRXhpdFByb2Zp
bGUuY3BwICovLAogCQkJCTBGQkMwQUU1MTQ5NkM3QzEwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmls
ZS5oICovLAogCQkJCTBGMkVCQkFBMURFREY5NEUwMDk5MDM2OSAvKiBEaXJlY3RFdmFsQ29kZUNh
Y2hlLmNwcCAqLywKQEAgLTg1NjgsMjEgKzg1NjgsMjEgQEAKIAkJCQkxNEFEOTExNjFEQ0E5N0ZE
MDAxNEY5RkUgLyogRnVuY3Rpb25Db2RlQmxvY2suY3BwICovLAogCQkJCTE0QUQ5MTA3MURDQTky
OTQwMDE0RjlGRSAvKiBGdW5jdGlvbkNvZGVCbG9jay5oICovLAogCQkJCTE0OThDQUQ1MjE0QkYz
NkQwMDcxMDg3OSAvKiBHZXRCeUlkTWV0YWRhdGEuaCAqLywKLQkJCQkwRjAzMzJDMTE4QjAxNzYz
MDA1Rjk3OUEgLyogR2V0QnlJZFZhcmlhbnQuY3BwICovLAotCQkJCTBGMDMzMkMyMThCMDE3NjMw
MDVGOTc5QSAvKiBHZXRCeUlkVmFyaWFudC5oICovLAogCQkJCTBGOTMzMjk1MTRDQTdEQzEwMDg1
RjNDNiAvKiBHZXRCeVN0YXR1cy5jcHAgKi8sCiAJCQkJMEY5MzMyOTYxNENBN0RDMTAwODVGM0M2
IC8qIEdldEJ5U3RhdHVzLmggKi8sCiAJCQkJNTIwRDk5RjAyMzg4Q0M3ODAwMDUwOUEzIC8qIEdl
dEJ5VmFsSGlzdG9yeS5oICovLAorCQkJCTBGMDMzMkMxMThCMDE3NjMwMDVGOTc5QSAvKiBHZXRC
eVZhcmlhbnQuY3BwICovLAorCQkJCTBGMDMzMkMyMThCMDE3NjMwMDVGOTc5QSAvKiBHZXRCeVZh
cmlhbnQuaCAqLywKIAkJCQkxNEFEOTEwODFEQ0E5Mjk0MDAxNEY5RkUgLyogR2xvYmFsQ29kZUJs
b2NrLmggKi8sCiAJCQkJMEYwQjgzQTgxNEJDRjU1RTAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmgg
Ki8sCiAJCQkJMEY0NEE3QUIyMEJGNjg1RTAwMjJCMTcxIC8qIElDU3RhdHVzTWFwLmNwcCAqLywK
IAkJCQkwRjQ0QTdBRjIwQkY2ODVGMDAyMkIxNzEgLyogSUNTdGF0dXNNYXAuaCAqLywKIAkJCQkw
RjQ0QTdCNTIwQzBCRTNGMDAyMkIxNzEgLyogSUNTdGF0dXNVdGlscy5jcHAgKi8sCiAJCQkJMEZC
Mzk5QkQyMEFGNkIzODAwMTdFMjEzIC8qIElDU3RhdHVzVXRpbHMuaCAqLywKLQkJCQlFMzMwNUZC
MDIwQjBGNzg3MDBDRUI4MkIgLyogSW5CeUlkVmFyaWFudC5jcHAgKi8sCi0JCQkJRTMzMDVGQjEy
MEIwRjc4ODAwQ0VCODJCIC8qIEluQnlJZFZhcmlhbnQuaCAqLywKIAkJCQlBMzhENUJGOTI2NjZE
M0RBMDBBMTA5QTYgLyogSW5CeVN0YXR1cy5jcHAgKi8sCiAJCQkJQTM4RDVCRkEyNjY2RDNEQTAw
QTEwOUE2IC8qIEluQnlTdGF0dXMuaCAqLywKKwkJCQlFMzMwNUZCMDIwQjBGNzg3MDBDRUI4MkIg
LyogSW5CeVZhcmlhbnQuY3BwICovLAorCQkJCUUzMzA1RkIxMjBCMEY3ODgwMENFQjgyQiAvKiBJ
bkJ5VmFyaWFudC5oICovLAogCQkJCTc5MDVCQjY2MUQxMjA1MEUwMDE5RkU1NyAvKiBJbmxpbmVB
Y2Nlc3MuY3BwICovLAogCQkJCTc5MDVCQjY3MUQxMjA1MEUwMDE5RkU1NyAvKiBJbmxpbmVBY2Nl
c3MuaCAqLywKIAkJCQkxNDhBN0JFRDFCODI5NzVBMDAyRDkxNTcgLyogSW5saW5lQ2FsbEZyYW1l
LmNwcCAqLywKQEAgLTk1MjgsOCArOTUyOCw4IEBACiAJCQkJRkU5RjNGQzgyNjE2M0NBOTAwNjlF
ODlGIC8qIERlZmVyVGVybWluYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ3M0RBNEE0NzY0
QzQ1RkU4NzFCMDQ4NSAvKiBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGQkI3M0JCMURFRjg2NDUwMDJDMDA5RSAvKiBEZWxldGVBbGxDb2RlRWZmb3J0Lmgg
aW4gSGVhZGVycyAqLywKLQkJCQk3MzExRkEzMjI0MERCMUQzMDAzRDQ4REIgLyogRGVsZXRlQnlJ
ZFZhcmlhbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTczQUQwNjI5MjNGRjY2MjYwMEY1MzU5MyAv
KiBEZWxldGVCeVN0YXR1cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzMxMUZBMzIyNDBEQjFEMzAw
M0Q0OERCIC8qIERlbGV0ZUJ5VmFyaWFudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzM0QjY1NTUy
M0Y1QzEwNDAwQTA2OUQxIC8qIERlbGV0ZVByb3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY5NjMwM0MxRDQxOTJDRDAwNTYwOUQ5IC8qIERlc3RydWN0aW9uTW9kZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTc3QTQyM0UxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Fic3RyYWN0SGVhcC5o
IGluIEhlYWRlcnMgKi8sCkBAIC05ODgwLDkgKzk4ODAsOSBAQAogCQkJCTBGMkI2NkUwMTdCNkI1
QUIwMEE3QUUzRiAvKiBHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMkI2NkUxMTdCNkI1QUIwMEE3QUUzRiAvKiBHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDk4Q0FENjIxNEJGMzZEMDA3MTA4NzkgLyogR2V0QnlJ
ZE1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjAzMzJDNDE4QjAxNzYzMDA1Rjk3OUEg
LyogR2V0QnlJZFZhcmlhbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTMzMkEwMTRDQTdEQ0Qw
MDg1RjNDNiAvKiBHZXRCeVN0YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTIwRDk5RjEyMzg4
Q0M4MTAwMDUwOUEzIC8qIEdldEJ5VmFsSGlzdG9yeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYw
MzMyQzQxOEIwMTc2MzAwNUY5NzlBIC8qIEdldEJ5VmFyaWFudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNzk2NDY1NkExQjk1MkZGMDAwMzA1OUVFIC8qIEdldFB1dEluZm8uaCBpbiBIZWFkZXJzICov
LAogCQkJCTg0MzIzRTdBMjVENUVDM0IwMEY5Nzc3NiAvKiBHZXR0ZXJTZXR0ZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUzNEUwMzU4MUU1M0JGMkYwMDIxM0Y2NCAvKiBHZXR0ZXJTZXR0ZXJBY2Nl
c3NDYXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTk5MjEsOCArOTkyMSw4IEBACiAJCQkJQkMxOEM0
MEYwRTE2RjVDRDAwQjM0NDYwIC8qIElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2
MDZEREVBMThEQTQ0QUIwMEEzODNEMCAvKiBJZGVudGlmaWVySW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTVGRDAwNzYxODlCMDM4QzAwNjMzMjMxIC8qIElkZW50aWZpZXJzRmFjdG9yeS5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJQTM4MkM1MzEyNjY3MTExRDAwNDJDRDk5IC8qIEluQnlJZFZh
cmlhbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUEzOEQ1QkZDMjY2NkQzREEwMEExMDlBNiAvKiBJ
bkJ5U3RhdHVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMzgyQzUzMTI2NjcxMTFEMDA0MkNEOTkg
LyogSW5CeVZhcmlhbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyNUY4QkNFMTU3NTQ0QTkwMDI0
NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzk5
MTVFRDhFNDYwMEYxNjdCMiAvKiBJbmRleGluZ0hlYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZCN0YzOUExNUVEOEU0NjAwRjE2N0IyIC8qIEluZGV4aW5nSGVhZGVySW5saW5lcy5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggODg0YjhmOWU4YWQ5Li40
MDI3MjJjYTRkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4
dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTIyMyw3ICsyMjMs
NyBAQCBieXRlY29kZS9EYXRhRm9ybWF0LmNwcAogYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlv
bkNhbGxiYWNrLmNwcAogYnl0ZWNvZGUvRGVmZXJyZWRTb3VyY2VEdW1wLmNwcAogYnl0ZWNvZGUv
RGVsZXRlQnlTdGF0dXMuY3BwCi1ieXRlY29kZS9EZWxldGVCeUlkVmFyaWFudC5jcHAKK2J5dGVj
b2RlL0RlbGV0ZUJ5VmFyaWFudC5jcHAKIGJ5dGVjb2RlL0RpcmVjdEV2YWxDb2RlQ2FjaGUuY3Bw
CiBieXRlY29kZS9FdmFsQ29kZUJsb2NrLmNwcAogYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZS5jcHAKQEAgLTIzNSwxMiArMjM1LDEyIEBAIGJ5dGVjb2RlL0V4aXRpbmdKSVRUeXBl
LmNwcAogYnl0ZWNvZGUvRnVsbENvZGVPcmlnaW4uY3BwCiBieXRlY29kZS9GdW5jdGlvbkNvZGVC
bG9jay5jcHAKIGJ5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcAotYnl0ZWNvZGUvR2V0QnlJZFZhcmlh
bnQuY3BwCitieXRlY29kZS9HZXRCeVZhcmlhbnQuY3BwCiBieXRlY29kZS9HZXR0ZXJTZXR0ZXJB
Y2Nlc3NDYXNlLmNwcAogYnl0ZWNvZGUvSUNTdGF0dXNNYXAuY3BwCiBieXRlY29kZS9JQ1N0YXR1
c1V0aWxzLmNwcAogYnl0ZWNvZGUvSW5CeVN0YXR1cy5jcHAKLWJ5dGVjb2RlL0luQnlJZFZhcmlh
bnQuY3BwCitieXRlY29kZS9JbkJ5VmFyaWFudC5jcHAKIGJ5dGVjb2RlL0lubGluZUFjY2Vzcy5j
cHAKIGJ5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5jcHAKIGJ5dGVjb2RlL0lubGluZUNhbGxGcmFt
ZVNldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxl
dGVCeVN0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlT
dGF0dXMuY3BwCmluZGV4IDcyMTZmNGE0MGIyMC4uZTFiODQzY2I1OTVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeVN0YXR1cy5jcHAKQEAgLTM1LDcg
KzM1LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWJvb2wgRGVsZXRlQnlTdGF0dXM6OmFwcGVu
ZFZhcmlhbnQoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIHZhcmlhbnQpCitib29sIERlbGV0ZUJ5
U3RhdHVzOjphcHBlbmRWYXJpYW50KGNvbnN0IERlbGV0ZUJ5VmFyaWFudCYgdmFyaWFudCkKIHsK
ICAgICByZXR1cm4gYXBwZW5kSUNTdGF0dXNWYXJpYW50KG1fdmFyaWFudHMsIHZhcmlhbnQpOwog
fQpAQCAtMTExLDcgKzExMSw3IEBAIERlbGV0ZUJ5U3RhdHVzIERlbGV0ZUJ5U3RhdHVzOjpjb21w
dXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjaygKICAgICAgICAgICAgIHN3aXRj
aCAoYWNjZXNzLnR5cGUoKSkgewogICAgICAgICAgICAgY2FzZSBBY2Nlc3NDYXNlOjpEZWxldGVN
aXNzOgogICAgICAgICAgICAgY2FzZSBBY2Nlc3NDYXNlOjpEZWxldGVOb25Db25maWd1cmFibGU6
IHsKLSAgICAgICAgICAgICAgICBEZWxldGVCeUlkVmFyaWFudCB2YXJpYW50KGFjY2Vzcy5pZGVu
dGlmaWVyKCksIGFjY2Vzcy50eXBlKCkgPT0gQWNjZXNzQ2FzZTo6RGVsZXRlTWlzcyA/IHRydWUg
OiBmYWxzZSwgc3RydWN0dXJlLCBudWxscHRyLCBpbnZhbGlkT2Zmc2V0KTsKKyAgICAgICAgICAg
ICAgICBEZWxldGVCeVZhcmlhbnQgdmFyaWFudChhY2Nlc3MuaWRlbnRpZmllcigpLCBhY2Nlc3Mu
dHlwZSgpID09IEFjY2Vzc0Nhc2U6OkRlbGV0ZU1pc3MgPyB0cnVlIDogZmFsc2UsIHN0cnVjdHVy
ZSwgbnVsbHB0ciwgaW52YWxpZE9mZnNldCk7CiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQu
YXBwZW5kVmFyaWFudCh2YXJpYW50KSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERlbGV0
ZUJ5U3RhdHVzKEpTQzo6c2xvd1ZlcnNpb24oc3VtbWFyeSksICpzdHViSW5mbyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CkBAIC0xMjIsNyArMTIyLDcgQEAgRGVsZXRlQnlTdGF0dXMgRGVsZXRl
QnlTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKAogICAg
ICAgICAgICAgICAgIGlmICghbmV3U3RydWN0dXJlKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gRGVsZXRlQnlTdGF0dXMoSlNDOjpzbG93VmVyc2lvbihzdW1tYXJ5KSwgKnN0dWJJbmZvKTsK
ICAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKG9mZnNldCwgb2Zmc2V0ID09IGFjY2Vzcy5v
ZmZzZXQoKSk7ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIERlbGV0ZUJ5SWRWYXJp
YW50IHZhcmlhbnQoYWNjZXNzLmlkZW50aWZpZXIoKSwgdHJ1ZSwgc3RydWN0dXJlLCBuZXdTdHJ1
Y3R1cmUsIGFjY2Vzcy5vZmZzZXQoKSk7CisgICAgICAgICAgICAgICAgRGVsZXRlQnlWYXJpYW50
IHZhcmlhbnQoYWNjZXNzLmlkZW50aWZpZXIoKSwgdHJ1ZSwgc3RydWN0dXJlLCBuZXdTdHJ1Y3R1
cmUsIGFjY2Vzcy5vZmZzZXQoKSk7CiAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5hcHBl
bmRWYXJpYW50KHZhcmlhbnQpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gRGVsZXRlQnlT
dGF0dXMoSlNDOjpzbG93VmVyc2lvbihzdW1tYXJ5KSwgKnN0dWJJbmZvKTsKQEAgLTI1MSw3ICsy
NTEsNyBAQCBDYWNoZWFibGVJZGVudGlmaWVyIERlbGV0ZUJ5U3RhdHVzOjpzaW5nbGVJZGVudGlm
aWVyKCkgY29uc3QKIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+CiB2b2lkIERlbGV0ZUJ5U3Rh
dHVzOjp2aXNpdEFnZ3JlZ2F0ZUltcGwoVmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBmb3IgKERl
bGV0ZUJ5SWRWYXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykKKyAgICBmb3IgKERlbGV0ZUJ5
VmFyaWFudCYgdmFyaWFudCA6IG1fdmFyaWFudHMpCiAgICAgICAgIHZhcmlhbnQudmlzaXRBZ2dy
ZWdhdGUodmlzaXRvcik7CiB9CiAKQEAgLTI2MCw3ICsyNjAsNyBAQCBERUZJTkVfVklTSVRfQUdH
UkVHQVRFKERlbGV0ZUJ5U3RhdHVzKTsKIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+CiB2b2lk
IERlbGV0ZUJ5U3RhdHVzOjptYXJrSWZDaGVhcChWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIGZv
ciAoRGVsZXRlQnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKQorICAgIGZvciAoRGVs
ZXRlQnlWYXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykKICAgICAgICAgdmFyaWFudC5tYXJr
SWZDaGVhcCh2aXNpdG9yKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvRGVsZXRlQnlTdGF0dXMuaAppbmRleCA1YmE4MDNhYTk3N2YuLjM4OGFkYmQyN2I3MiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmgKQEAg
LTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgogI2luY2x1ZGUgIkNv
ZGVPcmlnaW4uaCIKICNpbmNsdWRlICJDb25jdXJyZW50SlNMb2NrLmgiCi0jaW5jbHVkZSAiRGVs
ZXRlQnlJZFZhcmlhbnQuaCIKKyNpbmNsdWRlICJEZWxldGVCeVZhcmlhbnQuaCIKICNpbmNsdWRl
ICJFeGl0RmxhZy5oIgogI2luY2x1ZGUgIklDU3RhdHVzTWFwLmgiCiAjaW5jbHVkZSAiU3R1Yklu
Zm9TdW1tYXJ5LmgiCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICBib29sIG9wZXJhdG9y
ISgpIGNvbnN0IHsgcmV0dXJuICFpc1NldCgpOyB9CiAgICAgYm9vbCBvYnNlcnZlZFNsb3dQYXRo
KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBPYnNlcnZlZFRha2VzU2xvd1BhdGg7IH0KICAg
ICBib29sIGlzU2ltcGxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBTaW1wbGU7IH0KLSAg
ICBjb25zdCBWZWN0b3I8RGVsZXRlQnlJZFZhcmlhbnQsIDE+JiB2YXJpYW50cygpIHsgcmV0dXJu
IG1fdmFyaWFudHM7IH0KKyAgICBjb25zdCBWZWN0b3I8RGVsZXRlQnlWYXJpYW50LCAxPiYgdmFy
aWFudHMoKSB7IHJldHVybiBtX3ZhcmlhbnRzOyB9CiAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBz
aW5nbGVJZGVudGlmaWVyKCkgY29uc3Q7CiAKICAgICBEZWxldGVCeVN0YXR1cyBzbG93VmVyc2lv
bigpIGNvbnN0OwpAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVmlzaXRvcj4gdm9pZCBtYXJrSWZDaGVhcChWaXNpdG9yJik7CiAgICAgYm9vbCBmaW5hbGl6
ZShWTSYpOwogCi0gICAgYm9vbCBhcHBlbmRWYXJpYW50KGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50
Jik7CisgICAgYm9vbCBhcHBlbmRWYXJpYW50KGNvbnN0IERlbGV0ZUJ5VmFyaWFudCYpOwogICAg
IHZvaWQgc2hyaW5rVG9GaXQoKTsKIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0
OwpAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNvbnN0IENvbmN1cnJlbnRK
U0xvY2tlciYsIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qKTsK
ICNlbmRpZgogCi0gICAgVmVjdG9yPERlbGV0ZUJ5SWRWYXJpYW50LCAxPiBtX3ZhcmlhbnRzOwor
ICAgIFZlY3RvcjxEZWxldGVCeVZhcmlhbnQsIDE+IG1fdmFyaWFudHM7CiAgICAgU3RhdGUgbV9z
dGF0ZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9E
ZWxldGVCeUlkVmFyaWFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVs
ZXRlQnlWYXJpYW50LmNwcApzaW1pbGFyaXR5IGluZGV4IDc2JQpyZW5hbWUgZnJvbSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlJZFZhcmlhbnQuY3BwCnJlbmFtZSB0byBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlWYXJpYW50LmNwcAppbmRleCBj
NmVjYzM5MGRjNjQuLmFkNWU0YmExZGFmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0RlbGV0ZUJ5SWRWYXJpYW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlWYXJpYW50LmNwcApAQCAtMjQsMTQgKzI0LDEzIEBACiAg
Ki8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRlbGV0ZUJ5SWRWYXJpYW50Lmgi
CisjaW5jbHVkZSAiRGVsZXRlQnlWYXJpYW50LmgiCiAKICNpbmNsdWRlICJDYWNoZWFibGVJZGVu
dGlmaWVySW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAotRGVsZXRlQnlJZFZhcmlhbnQ6
OkRlbGV0ZUJ5SWRWYXJpYW50KENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCBy
ZXN1bHQsCi0gICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0
dXJlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCitEZWxldGVCeVZhcmlhbnQ6OkRlbGV0ZUJ5VmFy
aWFudChDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgcmVzdWx0LCBTdHJ1Y3R1
cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCkKICAgICA6IG1fcmVzdWx0KHJlc3VsdCkKICAgICAsIG1fb2xkU3RydWN0dXJlKG9s
ZFN0cnVjdHVyZSkKICAgICAsIG1fbmV3U3RydWN0dXJlKG5ld1N0cnVjdHVyZSkKQEAgLTQ1LDE0
ICs0NCwxNCBAQCBEZWxldGVCeUlkVmFyaWFudDo6RGVsZXRlQnlJZFZhcmlhbnQoQ2FjaGVhYmxl
SWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIHJlc3VsdAogICAgICAgICBBU1NFUlQobmV3U3Ry
dWN0dXJlKTsKIH0KIAotRGVsZXRlQnlJZFZhcmlhbnQ6On5EZWxldGVCeUlkVmFyaWFudCgpIHsg
fQorRGVsZXRlQnlWYXJpYW50Ojp+RGVsZXRlQnlWYXJpYW50KCkgeyB9CiAKLURlbGV0ZUJ5SWRW
YXJpYW50OjpEZWxldGVCeUlkVmFyaWFudChjb25zdCBEZWxldGVCeUlkVmFyaWFudCYgb3RoZXIp
CitEZWxldGVCeVZhcmlhbnQ6OkRlbGV0ZUJ5VmFyaWFudChjb25zdCBEZWxldGVCeVZhcmlhbnQm
IG90aGVyKQogewogICAgICp0aGlzID0gb3RoZXI7CiB9CiAKLURlbGV0ZUJ5SWRWYXJpYW50JiBE
ZWxldGVCeUlkVmFyaWFudDo6b3BlcmF0b3I9KGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50JiBvdGhl
cikKK0RlbGV0ZUJ5VmFyaWFudCYgRGVsZXRlQnlWYXJpYW50OjpvcGVyYXRvcj0oY29uc3QgRGVs
ZXRlQnlWYXJpYW50JiBvdGhlcikKIHsKICAgICBtX2lkZW50aWZpZXIgPSBvdGhlci5tX2lkZW50
aWZpZXI7CiAgICAgbV9yZXN1bHQgPSBvdGhlci5tX3Jlc3VsdDsKQEAgLTYyLDcgKzYxLDcgQEAg
RGVsZXRlQnlJZFZhcmlhbnQmIERlbGV0ZUJ5SWRWYXJpYW50OjpvcGVyYXRvcj0oY29uc3QgRGVs
ZXRlQnlJZFZhcmlhbnQmIG90aGVyKQogICAgIHJldHVybiAqdGhpczsKIH0KIAotYm9vbCBEZWxl
dGVCeUlkVmFyaWFudDo6YXR0ZW1wdFRvTWVyZ2UoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIG90
aGVyKQorYm9vbCBEZWxldGVCeVZhcmlhbnQ6OmF0dGVtcHRUb01lcmdlKGNvbnN0IERlbGV0ZUJ5
VmFyaWFudCYgb3RoZXIpCiB7CiAgICAgaWYgKCEhbV9pZGVudGlmaWVyICE9ICEhb3RoZXIubV9p
ZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC04MywyMSArODIsMjEgQEAgYm9v
bCBEZWxldGVCeUlkVmFyaWFudDo6YXR0ZW1wdFRvTWVyZ2UoY29uc3QgRGVsZXRlQnlJZFZhcmlh
bnQmIG90aGVyKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIERlbGV0ZUJ5SWRWYXJpYW50
Ojp3cml0ZXNTdHJ1Y3R1cmVzKCkgY29uc3QKK2Jvb2wgRGVsZXRlQnlWYXJpYW50Ojp3cml0ZXNT
dHJ1Y3R1cmVzKCkgY29uc3QKIHsKICAgICByZXR1cm4gISFuZXdTdHJ1Y3R1cmUoKTsKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KLXZvaWQgRGVsZXRlQnlJZFZhcmlhbnQ6OnZpc2l0
QWdncmVnYXRlSW1wbChWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBEZWxldGVCeVZhcmlhbnQ6OnZp
c2l0QWdncmVnYXRlSW1wbChWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIG1faWRlbnRpZmllci52
aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKIH0KIAotREVGSU5FX1ZJU0lUX0FHR1JFR0FURShEZWxl
dGVCeUlkVmFyaWFudCk7CitERUZJTkVfVklTSVRfQUdHUkVHQVRFKERlbGV0ZUJ5VmFyaWFudCk7
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+Ci12b2lkIERlbGV0ZUJ5SWRWYXJpYW50Ojpt
YXJrSWZDaGVhcChWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBEZWxldGVCeVZhcmlhbnQ6Om1hcmtJ
ZkNoZWFwKFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgaWYgKG1fb2xkU3RydWN0dXJlKQogICAg
ICAgICBtX29sZFN0cnVjdHVyZS0+bWFya0lmQ2hlYXAodmlzaXRvcik7CkBAIC0xMDUsMTUgKzEw
NCwxNSBAQCB2b2lkIERlbGV0ZUJ5SWRWYXJpYW50OjptYXJrSWZDaGVhcChWaXNpdG9yJiB2aXNp
dG9yKQogICAgICAgICBtX25ld1N0cnVjdHVyZS0+bWFya0lmQ2hlYXAodmlzaXRvcik7CiB9CiAK
LXRlbXBsYXRlIHZvaWQgRGVsZXRlQnlJZFZhcmlhbnQ6Om1hcmtJZkNoZWFwKEFic3RyYWN0U2xv
dFZpc2l0b3ImKTsKLXRlbXBsYXRlIHZvaWQgRGVsZXRlQnlJZFZhcmlhbnQ6Om1hcmtJZkNoZWFw
KFNsb3RWaXNpdG9yJik7Cit0ZW1wbGF0ZSB2b2lkIERlbGV0ZUJ5VmFyaWFudDo6bWFya0lmQ2hl
YXAoQWJzdHJhY3RTbG90VmlzaXRvciYpOwordGVtcGxhdGUgdm9pZCBEZWxldGVCeVZhcmlhbnQ6
Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7CiAKLXZvaWQgRGVsZXRlQnlJZFZhcmlhbnQ6OmR1
bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3ZvaWQgRGVsZXRlQnlWYXJpYW50OjpkdW1wKFBy
aW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgZHVtcEluQ29udGV4dChvdXQsIG51bGxwdHIp
OwogfQogCi1ib29sIERlbGV0ZUJ5SWRWYXJpYW50OjpmaW5hbGl6ZShWTSYgdm0pCitib29sIERl
bGV0ZUJ5VmFyaWFudDo6ZmluYWxpemUoVk0mIHZtKQogewogICAgIGlmICghdm0uaGVhcC5pc01h
cmtlZChtX29sZFN0cnVjdHVyZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEyMiw3ICsx
MjEsNyBAQCBib29sIERlbGV0ZUJ5SWRWYXJpYW50OjpmaW5hbGl6ZShWTSYgdm0pCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgRGVsZXRlQnlJZFZhcmlhbnQ6OmR1bXBJbkNvbnRleHQoUHJp
bnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqKSBjb25zdAordm9pZCBEZWxldGVCeVZhcmlhbnQ6
OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqKSBjb25zdAogewog
ICAgIG91dC5wcmludCgiPCIpOwogICAgIG91dC5wcmludCgiaWQ9JyIsIG1faWRlbnRpZmllciwg
IicsIHJlc3VsdD0iLCBtX3Jlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvRGVsZXRlQnlJZFZhcmlhbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9EZWxldGVCeVZhcmlhbnQuaApzaW1pbGFyaXR5IGluZGV4IDkwJQpyZW5hbWUgZnJv
bSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlJZFZhcmlhbnQuaApyZW5h
bWUgdG8gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5VmFyaWFudC5oCmlu
ZGV4IDA4Njc3NTQ2OWRjYS4uZTIzNjQ5MjIwZTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlJZFZhcmlhbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlWYXJpYW50LmgKQEAgLTM4LDE3ICszOCwxNyBAQCBj
bGFzcyBDYWxsTGlua1N0YXR1czsKIGNsYXNzIERlbGV0ZUJ5U3RhdHVzOwogc3RydWN0IER1bXBD
b250ZXh0OwogCi1jbGFzcyBEZWxldGVCeUlkVmFyaWFudCB7CitjbGFzcyBEZWxldGVCeVZhcmlh
bnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIERlbGV0ZUJ5
SWRWYXJpYW50KAorICAgIERlbGV0ZUJ5VmFyaWFudCgKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRp
ZmllciwgYm9vbCByZXN1bHQsCiAgICAgICAgIFN0cnVjdHVyZSogb2xkU3RydWN1dHJlLCBTdHJ1
Y3R1cmUqIG5ld1N0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQpOwogCi0gICAgfkRlbGV0ZUJ5SWRW
YXJpYW50KCk7CisgICAgfkRlbGV0ZUJ5VmFyaWFudCgpOwogCi0gICAgRGVsZXRlQnlJZFZhcmlh
bnQoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmKTsKLSAgICBEZWxldGVCeUlkVmFyaWFudCYgb3Bl
cmF0b3I9KGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50Jik7CisgICAgRGVsZXRlQnlWYXJpYW50KGNv
bnN0IERlbGV0ZUJ5VmFyaWFudCYpOworICAgIERlbGV0ZUJ5VmFyaWFudCYgb3BlcmF0b3I9KGNv
bnN0IERlbGV0ZUJ5VmFyaWFudCYpOwogCiAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX29sZFN0cnVjdHVyZTsgfQogICAgIFN0cnVjdHVyZSogbmV3U3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9uZXdTdHJ1Y3R1cmU7IH0KQEAgLTU5LDcgKzU5LDcgQEAg
cHVibGljOgogCiAgICAgYm9vbCBpc1Byb3BlcnR5VW5zZXQoKSBjb25zdCB7IHJldHVybiBvZmZz
ZXQoKSA9PSBpbnZhbGlkT2Zmc2V0OyB9CiAKLSAgICBib29sIGF0dGVtcHRUb01lcmdlKGNvbnN0
IERlbGV0ZUJ5SWRWYXJpYW50JiBvdGhlcik7CisgICAgYm9vbCBhdHRlbXB0VG9NZXJnZShjb25z
dCBEZWxldGVCeVZhcmlhbnQmIG90aGVyKTsKIAogICAgIERFQ0xBUkVfVklTSVRfQUdHUkVHQVRF
OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+IHZvaWQgbWFya0lmQ2hlYXAoVmlzaXRv
ciYpOwpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAKICAgICBDYWNoZWFibGVJZGVudGlmaWVy
IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KIAotICAgIGJvb2wg
b3ZlcmxhcHMoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIG90aGVyKQorICAgIGJvb2wgb3Zlcmxh
cHMoY29uc3QgRGVsZXRlQnlWYXJpYW50JiBvdGhlcikKICAgICB7CiAgICAgICAgIGlmICghIW1f
aWRlbnRpZmllciAhPSAhIW90aGVyLm1faWRlbnRpZmllcikKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3Rh
dHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAK
aW5kZXggZmFlYjM4YzFhZTFhLi4yYTI0NGU1YzAxYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcApAQCAtNDAsNyArNDAsNyBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAotYm9vbCBHZXRCeVN0YXR1czo6YXBwZW5kVmFyaWFudChjb25zdCBHZXRC
eUlkVmFyaWFudCYgdmFyaWFudCkKK2Jvb2wgR2V0QnlTdGF0dXM6OmFwcGVuZFZhcmlhbnQoY29u
c3QgR2V0QnlWYXJpYW50JiB2YXJpYW50KQogewogICAgIHJldHVybiBhcHBlbmRJQ1N0YXR1c1Zh
cmlhbnQobV92YXJpYW50cywgdmFyaWFudCk7CiB9CkBAIC0xNDAsNyArMTQwLDcgQEAgR2V0QnlT
dGF0dXMgR2V0QnlTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJs
b2NrLCBCeXRlY29kZUluZGUKICAgICAgICAgcmV0dXJuIEdldEJ5U3RhdHVzKE5vSW5mb3JtYXRp
b24sIGZhbHNlKTsKIAogICAgIEdldEJ5U3RhdHVzIHJlc3VsdChTaW1wbGUsIGZhbHNlKTsKLSAg
ICByZXN1bHQuYXBwZW5kVmFyaWFudChHZXRCeUlkVmFyaWFudChudWxscHRyLCBTdHJ1Y3R1cmVT
ZXQoc3RydWN0dXJlKSwgb2Zmc2V0KSk7CisgICAgcmVzdWx0LmFwcGVuZFZhcmlhbnQoR2V0QnlW
YXJpYW50KG51bGxwdHIsIFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpLCBvZmZzZXQpKTsKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yMTksNyArMjE5LDcgQEAgR2V0QnlTdGF0dXMgR2V0QnlT
dGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKAogICAgICAg
ICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBzdHViSW5mby0+aWRlbnRpZmllcigp
OwogICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gaWRlbnRpZmllci51aWQoKTsKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQodWlkKTsKLSAgICAgICAgR2V0QnlJZFZhcmlhbnQgdmFyaWFu
dChXVEZNb3ZlKGlkZW50aWZpZXIpKTsKKyAgICAgICAgR2V0QnlWYXJpYW50IHZhcmlhbnQoV1RG
TW92ZShpZGVudGlmaWVyKSk7CiAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgICAg
IHZhcmlhbnQubV9vZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSh1aWQsIGF0dHJp
YnV0ZXMpOwogICAgICAgICBpZiAoIWlzVmFsaWRPZmZzZXQodmFyaWFudC5tX29mZnNldCkpCkBA
IC0yNjMsNyArMjYzLDcgQEAgR2V0QnlTdGF0dXMgR2V0QnlTdGF0dXM6OmNvbXB1dGVGb3JTdHVi
SW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKAogICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBhY2Nlc3Muc3RydWN0dXJlKCk7CiAgICAgICAgICAgICBpZiAoIXN0cnVjdHVyZSkg
ewogICAgICAgICAgICAgICAgIC8vIFRoZSBudWxsIHN0cnVjdHVyZSBjYXNlcyBhcmlzZSBkdWUg
dG8gYXJyYXkubGVuZ3RoIGFuZCBzdHJpbmcubGVuZ3RoLiBXZSBoYXZlIG5vIHdheQotICAgICAg
ICAgICAgICAgIC8vIG9mIGNyZWF0aW5nIGEgR2V0QnlJZFZhcmlhbnQgZm9yIHRob3NlLCBhbmQg
d2UgZG9uJ3QgcmVhbGx5IGhhdmUgdG8gc2luY2UgdGhlIERGRworICAgICAgICAgICAgICAgIC8v
IG9mIGNyZWF0aW5nIGEgR2V0QnlWYXJpYW50IGZvciB0aG9zZSwgYW5kIHdlIGRvbid0IHJlYWxs
eSBoYXZlIHRvIHNpbmNlIHRoZSBERkcKICAgICAgICAgICAgICAgICAvLyBoYW5kbGVzIHRob3Nl
IGNhc2VzIGluIEZpeHVwUGhhc2UgdXNpbmcgdmFsdWUgcHJvZmlsaW5nLiBUaGF0J3MgYSBiaXQg
YXdrd2FyZCAtIHdlCiAgICAgICAgICAgICAgICAgLy8gc2hvdWxkbid0IGhhdmUgdG8gdXNlIHZh
bHVlIHByb2ZpbGluZyB0byBkaXNjb3ZlciBzb21ldGhpbmcgdGhhdCB0aGUgQWNjZXNzQ2FzZQog
ICAgICAgICAgICAgICAgIC8vIGNvdWxkIGhhdmUgdG9sZCB1cy4gQnV0LCBpdCB3b3JrcyB3ZWxs
IGVub3VnaC4gU28sIG91ciBvbmx5IGNvbmNlcm4gaGVyZSBpcyB0byBub3QKQEAgLTMyMiw3ICsz
MjIsNyBAQCBHZXRCeVN0YXR1cyBHZXRCeVN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91
dEV4aXRTaXRlRmVlZGJhY2soCiAgICAgICAgICAgICAgICAgfSB9CiAKICAgICAgICAgICAgICAg
ICBBU1NFUlQoKEFjY2Vzc0Nhc2U6Ok1pc3MgPT0gYWNjZXNzLnR5cGUoKSB8fCBhY2Nlc3MuaXND
dXN0b20oKSkgPT0gKGFjY2Vzcy5vZmZzZXQoKSA9PSBpbnZhbGlkT2Zmc2V0KSk7Ci0gICAgICAg
ICAgICAgICAgR2V0QnlJZFZhcmlhbnQgdmFyaWFudChhY2Nlc3MuaWRlbnRpZmllcigpLCBTdHJ1
Y3R1cmVTZXQoc3RydWN0dXJlKSwgY29tcGxleEdldFN0YXR1cy5vZmZzZXQoKSwKKyAgICAgICAg
ICAgICAgICBHZXRCeVZhcmlhbnQgdmFyaWFudChhY2Nlc3MuaWRlbnRpZmllcigpLCBTdHJ1Y3R1
cmVTZXQoc3RydWN0dXJlKSwgY29tcGxleEdldFN0YXR1cy5vZmZzZXQoKSwKICAgICAgICAgICAg
ICAgICAgICAgY29tcGxleEdldFN0YXR1cy5jb25kaXRpb25TZXQoKSwgV1RGTW92ZShjYWxsTGlu
a1N0YXR1cyksCiAgICAgICAgICAgICAgICAgICAgIGludHJpbnNpY0Z1bmN0aW9uLAogICAgICAg
ICAgICAgICAgICAgICBjdXN0b21BY2Nlc3NvckdldHRlciwKQEAgLTQzNSw3ICs0MzUsNyBAQCBH
ZXRCeVN0YXR1cyBHZXRCeVN0YXR1czo6Y29tcHV0ZUZvcihjb25zdCBTdHJ1Y3R1cmVTZXQmIHNl
dCwgVW5pcXVlZFN0cmluZ0ltcGwqCiAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yT3JWYWx1ZSkKICAgICAgICAgICAgIHJldHVybiBHZXRC
eVN0YXR1cyhMaWtlbHlUYWtlc1Nsb3dQYXRoKTsKICAgICAgICAgCi0gICAgICAgIGlmICghcmVz
dWx0LmFwcGVuZFZhcmlhbnQoR2V0QnlJZFZhcmlhbnQobnVsbHB0ciwgc3RydWN0dXJlLCBvZmZz
ZXQpKSkKKyAgICAgICAgaWYgKCFyZXN1bHQuYXBwZW5kVmFyaWFudChHZXRCeVZhcmlhbnQobnVs
bHB0ciwgc3RydWN0dXJlLCBvZmZzZXQpKSkKICAgICAgICAgICAgIHJldHVybiBHZXRCeVN0YXR1
cyhMaWtlbHlUYWtlc1Nsb3dQYXRoKTsKICAgICB9CiAgICAgCkBAIC00OTcsNyArNDk3LDcgQEAg
dm9pZCBHZXRCeVN0YXR1czo6bWVyZ2UoY29uc3QgR2V0QnlTdGF0dXMmIG90aGVyKQogICAgICAg
ICBpZiAobV9zdGF0ZSAhPSBvdGhlci5tX3N0YXRlKQogICAgICAgICAgICAgcmV0dXJuIG1lcmdl
U2xvdygpOwogICAgICAgICAKLSAgICAgICAgZm9yIChjb25zdCBHZXRCeUlkVmFyaWFudCYgb3Ro
ZXJWYXJpYW50IDogb3RoZXIubV92YXJpYW50cykgeworICAgICAgICBmb3IgKGNvbnN0IEdldEJ5
VmFyaWFudCYgb3RoZXJWYXJpYW50IDogb3RoZXIubV92YXJpYW50cykgewogICAgICAgICAgICAg
aWYgKCFhcHBlbmRWYXJpYW50KG90aGVyVmFyaWFudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IG1lcmdlU2xvdygpOwogICAgICAgICB9CkBAIC01NDMsNyArNTQzLDcgQEAgdm9pZCBHZXRCeVN0
YXR1czo6dmlzaXRBZ2dyZWdhdGVJbXBsKFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgaWYgKGlz
TW9kdWxlTmFtZXNwYWNlKCkpCiAgICAgICAgIG1fbW9kdWxlTmFtZXNwYWNlRGF0YS0+bV9pZGVu
dGlmaWVyLnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOwotICAgIGZvciAoR2V0QnlJZFZhcmlhbnQm
IHZhcmlhbnQgOiBtX3ZhcmlhbnRzKQorICAgIGZvciAoR2V0QnlWYXJpYW50JiB2YXJpYW50IDog
bV92YXJpYW50cykKICAgICAgICAgdmFyaWFudC52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKIH0K
IApAQCAtNTUyLDcgKzU1Miw3IEBAIERFRklORV9WSVNJVF9BR0dSRUdBVEUoR2V0QnlTdGF0dXMp
OwogdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KIHZvaWQgR2V0QnlTdGF0dXM6Om1hcmtJZkNo
ZWFwKFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgZm9yIChHZXRCeUlkVmFyaWFudCYgdmFyaWFu
dCA6IG1fdmFyaWFudHMpCisgICAgZm9yIChHZXRCeVZhcmlhbnQmIHZhcmlhbnQgOiBtX3Zhcmlh
bnRzKQogICAgICAgICB2YXJpYW50Lm1hcmtJZkNoZWFwKHZpc2l0b3IpOwogfQogCkBAIC01NjEs
NyArNTYxLDcgQEAgdGVtcGxhdGUgdm9pZCBHZXRCeVN0YXR1czo6bWFya0lmQ2hlYXAoU2xvdFZp
c2l0b3ImKTsKIAogYm9vbCBHZXRCeVN0YXR1czo6ZmluYWxpemUoVk0mIHZtKQogewotICAgIGZv
ciAoR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKSB7CisgICAgZm9yIChHZXRC
eVZhcmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKSB7CiAgICAgICAgIGlmICghdmFyaWFudC5m
aW5hbGl6ZSh2bSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuaAppbmRleCAyNDM3MzBmZGUzM2Eu
LjM2NjkyZDljMDg0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0dldEJ5U3RhdHVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5
U3RhdHVzLmgKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCiAjaW5j
bHVkZSAiQ29uY3VycmVudEpTTG9jay5oIgogI2luY2x1ZGUgIkV4aXRGbGFnLmgiCi0jaW5jbHVk
ZSAiR2V0QnlJZFZhcmlhbnQuaCIKKyNpbmNsdWRlICJHZXRCeVZhcmlhbnQuaCIKICNpbmNsdWRl
ICJJQ1N0YXR1c01hcC5oIgogI2luY2x1ZGUgIlNjb3BlT2Zmc2V0LmgiCiAjaW5jbHVkZSAiU3R1
YkluZm9TdW1tYXJ5LmgiCkBAIC05OSw5ICs5OSw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzTW9k
dWxlTmFtZXNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBNb2R1bGVOYW1lc3BhY2U7
IH0KIAogICAgIHNpemVfdCBudW1WYXJpYW50cygpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFudHMu
c2l6ZSgpOyB9Ci0gICAgY29uc3QgVmVjdG9yPEdldEJ5SWRWYXJpYW50LCAxPiYgdmFyaWFudHMo
KSBjb25zdCB7IHJldHVybiBtX3ZhcmlhbnRzOyB9Ci0gICAgY29uc3QgR2V0QnlJZFZhcmlhbnQm
IGF0KHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV92YXJpYW50c1tpbmRleF07IH0KLSAg
ICBjb25zdCBHZXRCeUlkVmFyaWFudCYgb3BlcmF0b3JbXShzaXplX3QgaW5kZXgpIGNvbnN0IHsg
cmV0dXJuIGF0KGluZGV4KTsgfQorICAgIGNvbnN0IFZlY3RvcjxHZXRCeVZhcmlhbnQsIDE+JiB2
YXJpYW50cygpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFudHM7IH0KKyAgICBjb25zdCBHZXRCeVZh
cmlhbnQmIGF0KHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV92YXJpYW50c1tpbmRleF07
IH0KKyAgICBjb25zdCBHZXRCeVZhcmlhbnQmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KSBjb25z
dCB7IHJldHVybiBhdChpbmRleCk7IH0KIAogICAgIGJvb2wgdGFrZXNTbG93UGF0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RhdGUgPT0gTGlrZWx5VGFrZXNTbG93UGF0aCB8fCBtX3N0YXRlID09IE9i
c2VydmVkVGFrZXNTbG93UGF0aCB8fCBtX3N0YXRlID09IE1ha2VzQ2FsbHMgfHwgbV9zdGF0ZSA9
PSBPYnNlcnZlZFNsb3dQYXRoQW5kTWFrZXNDYWxscyB8fCBtX3N0YXRlID09IEN1c3RvbSB8fCBt
X3N0YXRlID09IE1vZHVsZU5hbWVzcGFjZTsgfQogICAgIGJvb2wgb2JzZXJ2ZWRTdHJ1Y3R1cmVT
dHViSW5mb1Nsb3dQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBPYnNlcnZlZFRha2Vz
U2xvd1BhdGggfHwgbV9zdGF0ZSA9PSBPYnNlcnZlZFNsb3dQYXRoQW5kTWFrZXNDYWxsczsgfQpA
QCAtMTIyLDcgKzEyMiw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9y
PiB2b2lkIG1hcmtJZkNoZWFwKFZpc2l0b3ImKTsKICAgICBib29sIGZpbmFsaXplKFZNJik7IC8v
IFJldHVybiB0cnVlIGlmIHRoaXMgZ2V0cyB0byBsaXZlLgogCi0gICAgYm9vbCBhcHBlbmRWYXJp
YW50KGNvbnN0IEdldEJ5SWRWYXJpYW50Jik7CisgICAgYm9vbCBhcHBlbmRWYXJpYW50KGNvbnN0
IEdldEJ5VmFyaWFudCYpOwogICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsKIAogICAgIHZvaWQgZHVt
cChQcmludFN0cmVhbSYpIGNvbnN0OwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIENhY2hlYWJsZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIH07CiAKLSAgICBWZWN0
b3I8R2V0QnlJZFZhcmlhbnQsIDE+IG1fdmFyaWFudHM7CisgICAgVmVjdG9yPEdldEJ5VmFyaWFu
dCwgMT4gbV92YXJpYW50czsKICAgICBCb3g8TW9kdWxlTmFtZXNwYWNlRGF0YT4gbV9tb2R1bGVO
YW1lc3BhY2VEYXRhOwogICAgIFN0YXRlIG1fc3RhdGU7CiAgICAgYm9vbCBtX3dhc1NlZW5JbkpJ
VCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0QnlJZFZhcmlhbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5
VmFyaWFudC5jcHAKc2ltaWxhcml0eSBpbmRleCA4MyUKcmVuYW1lIGZyb20gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNwcApyZW5hbWUgdG8gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5VmFyaWFudC5jcHAKaW5kZXggN2M3OWJhMTFhOGQ3
Li42NzY1ZjU1YmZhYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9HZXRCeUlkVmFyaWFudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0dldEJ5VmFyaWFudC5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiR2V0QnlJZFZhcmlhbnQuaCIKKyNpbmNsdWRlICJHZXRCeVZhcmlh
bnQuaCIKIAogI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiQ2FsbExpbmtTdGF0dXMuaCIKQEAgLTMyLDE0ICszMiw3IEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCi1HZXRCeUlkVmFyaWFudDo6R2V0QnlJZFZhcmlhbnQoCi0gICAgQ2FjaGVhYmxlSWRlbnRp
ZmllciBpZGVudGlmaWVyLAotICAgIGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0LCBQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQsCi0gICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25T
ZXQmIGNvbmRpdGlvblNldCwKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbExpbmtTdGF0dXM+IGNh
bGxMaW5rU3RhdHVzLAotICAgIEpTRnVuY3Rpb24qIGludHJpbnNpY0Z1bmN0aW9uLAotICAgIEZ1
bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPiBjdXN0b21BY2Nlc3NvckdldHRlciwKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4gZG9tQXR0cmlidXRlKQor
R2V0QnlWYXJpYW50OjpHZXRCeVZhcmlhbnQoQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVy
LCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0
LCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBzdGQ6OnVu
aXF1ZV9wdHI8Q2FsbExpbmtTdGF0dXM+IGNhbGxMaW5rU3RhdHVzLCBKU0Z1bmN0aW9uKiBpbnRy
aW5zaWNGdW5jdGlvbiwgRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1c3RvbUFj
Y2Vzc29yR2V0dGVyLCBzdGQ6OnVuaXF1ZV9wdHI8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4gZG9t
QXR0cmlidXRlKQogICAgIDogbV9zdHJ1Y3R1cmVTZXQoc3RydWN0dXJlU2V0KQogICAgICwgbV9j
b25kaXRpb25TZXQoY29uZGl0aW9uU2V0KQogICAgICwgbV9vZmZzZXQob2Zmc2V0KQpAQCAtNTYs
MTYgKzQ5LDE2IEBAIEdldEJ5SWRWYXJpYW50OjpHZXRCeUlkVmFyaWFudCgKICAgICBpZiAoaW50
cmluc2ljRnVuY3Rpb24pCiAgICAgICAgIEFTU0VSVChpbnRyaW5zaWMoKSAhPSBOb0ludHJpbnNp
Yyk7CiB9Ci0gICAgICAgICAgICAgICAgICAgICAKLUdldEJ5SWRWYXJpYW50Ojp+R2V0QnlJZFZh
cmlhbnQoKSB7IH0KIAotR2V0QnlJZFZhcmlhbnQ6OkdldEJ5SWRWYXJpYW50KGNvbnN0IEdldEJ5
SWRWYXJpYW50JiBvdGhlcikKLSAgICA6IEdldEJ5SWRWYXJpYW50KG90aGVyLm1faWRlbnRpZmll
cikKK0dldEJ5VmFyaWFudDo6fkdldEJ5VmFyaWFudCgpIHsgfQorCitHZXRCeVZhcmlhbnQ6Okdl
dEJ5VmFyaWFudChjb25zdCBHZXRCeVZhcmlhbnQmIG90aGVyKQorICAgIDogR2V0QnlWYXJpYW50
KG90aGVyLm1faWRlbnRpZmllcikKIHsKICAgICAqdGhpcyA9IG90aGVyOwogfQogCi1HZXRCeUlk
VmFyaWFudCYgR2V0QnlJZFZhcmlhbnQ6Om9wZXJhdG9yPShjb25zdCBHZXRCeUlkVmFyaWFudCYg
b3RoZXIpCitHZXRCeVZhcmlhbnQmIEdldEJ5VmFyaWFudDo6b3BlcmF0b3I9KGNvbnN0IEdldEJ5
VmFyaWFudCYgb3RoZXIpCiB7CiAgICAgbV9pZGVudGlmaWVyID0gb3RoZXIubV9pZGVudGlmaWVy
OwogICAgIG1fc3RydWN0dXJlU2V0ID0gb3RoZXIubV9zdHJ1Y3R1cmVTZXQ7CkBAIC04NCw3ICs3
Nyw3IEBAIEdldEJ5SWRWYXJpYW50JiBHZXRCeUlkVmFyaWFudDo6b3BlcmF0b3I9KGNvbnN0IEdl
dEJ5SWRWYXJpYW50JiBvdGhlcikKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKLWlubGluZSBib29s
IEdldEJ5SWRWYXJpYW50OjpjYW5NZXJnZUludHJpbnNpY1N0cnVjdHVyZXMoY29uc3QgR2V0QnlJ
ZFZhcmlhbnQmIG90aGVyKSBjb25zdAoraW5saW5lIGJvb2wgR2V0QnlWYXJpYW50OjpjYW5NZXJn
ZUludHJpbnNpY1N0cnVjdHVyZXMoY29uc3QgR2V0QnlWYXJpYW50JiBvdGhlcikgY29uc3QKIHsK
ICAgICBpZiAobV9pbnRyaW5zaWNGdW5jdGlvbiAhPSBvdGhlci5tX2ludHJpbnNpY0Z1bmN0aW9u
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDUsNyArOTgsNyBAQCBpbmxpbmUgYm9vbCBH
ZXRCeUlkVmFyaWFudDo6Y2FuTWVyZ2VJbnRyaW5zaWNTdHJ1Y3R1cmVzKGNvbnN0IEdldEJ5SWRW
YXJpYW50JiBvdAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLWJvb2wg
R2V0QnlJZFZhcmlhbnQ6OmF0dGVtcHRUb01lcmdlKGNvbnN0IEdldEJ5SWRWYXJpYW50JiBvdGhl
cikKK2Jvb2wgR2V0QnlWYXJpYW50OjphdHRlbXB0VG9NZXJnZShjb25zdCBHZXRCeVZhcmlhbnQm
IG90aGVyKQogewogICAgIGlmICghIW1faWRlbnRpZmllciAhPSAhIW90aGVyLm1faWRlbnRpZmll
cikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTU3LDIzICsxNTAsMjMgQEAgYm9vbCBHZXRC
eUlkVmFyaWFudDo6YXR0ZW1wdFRvTWVyZ2UoY29uc3QgR2V0QnlJZFZhcmlhbnQmIG90aGVyKQog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgotdm9pZCBHZXRCeUlkVmFyaWFudDo6dmlz
aXRBZ2dyZWdhdGVJbXBsKFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEdldEJ5VmFyaWFudDo6dmlz
aXRBZ2dyZWdhdGVJbXBsKFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgbV9pZGVudGlmaWVyLnZp
c2l0QWdncmVnYXRlKHZpc2l0b3IpOwogfQogCi1ERUZJTkVfVklTSVRfQUdHUkVHQVRFKEdldEJ5
SWRWYXJpYW50KTsKK0RFRklORV9WSVNJVF9BR0dSRUdBVEUoR2V0QnlWYXJpYW50KTsKIAogdGVt
cGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KLXZvaWQgR2V0QnlJZFZhcmlhbnQ6Om1hcmtJZkNoZWFw
KFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEdldEJ5VmFyaWFudDo6bWFya0lmQ2hlYXAoVmlzaXRv
ciYgdmlzaXRvcikKIHsKICAgICBtX3N0cnVjdHVyZVNldC5tYXJrSWZDaGVhcCh2aXNpdG9yKTsK
IH0KIAotdGVtcGxhdGUgdm9pZCBHZXRCeUlkVmFyaWFudDo6bWFya0lmQ2hlYXAoQWJzdHJhY3RT
bG90VmlzaXRvciYpOwotdGVtcGxhdGUgdm9pZCBHZXRCeUlkVmFyaWFudDo6bWFya0lmQ2hlYXAo
U2xvdFZpc2l0b3ImKTsKK3RlbXBsYXRlIHZvaWQgR2V0QnlWYXJpYW50OjptYXJrSWZDaGVhcChB
YnN0cmFjdFNsb3RWaXNpdG9yJik7Cit0ZW1wbGF0ZSB2b2lkIEdldEJ5VmFyaWFudDo6bWFya0lm
Q2hlYXAoU2xvdFZpc2l0b3ImKTsKIAotYm9vbCBHZXRCeUlkVmFyaWFudDo6ZmluYWxpemUoVk0m
IHZtKQorYm9vbCBHZXRCeVZhcmlhbnQ6OmZpbmFsaXplKFZNJiB2bSkKIHsKICAgICBpZiAoIW1f
c3RydWN0dXJlU2V0LmlzU3RpbGxBbGl2ZSh2bSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTE4NiwxMiArMTc5LDEyIEBAIGJvb2wgR2V0QnlJZFZhcmlhbnQ6OmZpbmFsaXplKFZNJiB2bSkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBHZXRCeUlkVmFyaWFudDo6ZHVtcChQcmludFN0
cmVhbSYgb3V0KSBjb25zdAordm9pZCBHZXRCeVZhcmlhbnQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91
dCkgY29uc3QKIHsKICAgICBkdW1wSW5Db250ZXh0KG91dCwgbnVsbHB0cik7CiB9CiAKLXZvaWQg
R2V0QnlJZFZhcmlhbnQ6OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRl
eHQqIGNvbnRleHQpIGNvbnN0Cit2b2lkIEdldEJ5VmFyaWFudDo6ZHVtcEluQ29udGV4dChQcmlu
dFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3QKIHsKICAgICBvdXQucHJp
bnQoIjwiKTsKICAgICBvdXQucHJpbnQoImlkPSciLCBtX2lkZW50aWZpZXIsICInLCAiKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5VmFyaWFudC5oCnNpbWlsYXJp
dHkgaW5kZXggOTAlCnJlbmFtZSBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9H
ZXRCeUlkVmFyaWFudC5oCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0QnlWYXJpYW50LmgKaW5kZXggNzlmYzIyNGZmZWJiLi4wOTlhZWQ3NzM2MzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVZhcmlhbnQuaApAQCAtNDEsMjIg
KzQxLDIyIEBAIGNsYXNzIENhbGxMaW5rU3RhdHVzOwogY2xhc3MgR2V0QnlTdGF0dXM7CiBzdHJ1
Y3QgRHVtcENvbnRleHQ7CiAKLWNsYXNzIEdldEJ5SWRWYXJpYW50IHsKK2NsYXNzIEdldEJ5VmFy
aWFudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgR2V0QnlJ
ZFZhcmlhbnQoCisgICAgR2V0QnlWYXJpYW50KAogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVy
LAotICAgICAgICBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCA9IFN0cnVjdHVyZVNl
dCgpLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0LAorICAgICAgICBjb25z
dCBTdHJ1Y3R1cmVTZXQmID0gU3RydWN0dXJlU2V0KCksIFByb3BlcnR5T2Zmc2V0ID0gaW52YWxp
ZE9mZnNldCwKICAgICAgICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmID0gT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQoKSwKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENhbGxM
aW5rU3RhdHVzPiA9IG51bGxwdHIsCiAgICAgICAgIEpTRnVuY3Rpb24qID0gbnVsbHB0ciwKICAg
ICAgICAgRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1c3RvbUFjY2Vzc29yR2V0
dGVyID0gbnVsbHB0ciwKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPERPTUF0dHJpYnV0ZUFubm90
YXRpb24+ID0gbnVsbHB0cik7CiAKLSAgICB+R2V0QnlJZFZhcmlhbnQoKTsKKyAgICB+R2V0QnlW
YXJpYW50KCk7CiAgICAgCi0gICAgR2V0QnlJZFZhcmlhbnQoY29uc3QgR2V0QnlJZFZhcmlhbnQm
KTsKLSAgICBHZXRCeUlkVmFyaWFudCYgb3BlcmF0b3I9KGNvbnN0IEdldEJ5SWRWYXJpYW50Jik7
CisgICAgR2V0QnlWYXJpYW50KGNvbnN0IEdldEJ5VmFyaWFudCYpOworICAgIEdldEJ5VmFyaWFu
dCYgb3BlcmF0b3I9KGNvbnN0IEdldEJ5VmFyaWFudCYpOwogICAgIAogICAgIGJvb2wgaXNTZXQo
KSBjb25zdCB7IHJldHVybiAhIW1fc3RydWN0dXJlU2V0LnNpemUoKTsgfQogICAgIGV4cGxpY2l0
IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBpc1NldCgpOyB9CkBAIC03NSw3ICs3NSw3
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNQcm9wZXJ0eVVuc2V0KCkgY29uc3QgeyByZXR1cm4g
b2Zmc2V0KCkgPT0gaW52YWxpZE9mZnNldDsgfQogCi0gICAgYm9vbCBhdHRlbXB0VG9NZXJnZShj
b25zdCBHZXRCeUlkVmFyaWFudCYgb3RoZXIpOworICAgIGJvb2wgYXR0ZW1wdFRvTWVyZ2UoY29u
c3QgR2V0QnlWYXJpYW50JiBvdGhlcik7CiAgICAgCiAgICAgREVDTEFSRV9WSVNJVF9BR0dSRUdB
VEU7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4gdm9pZCBtYXJrSWZDaGVhcChWaXNp
dG9yJik7CkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKIAogICAgIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCi0gICAgYm9v
bCBvdmVybGFwcyhjb25zdCBHZXRCeUlkVmFyaWFudCYgb3RoZXIpCisgICAgYm9vbCBvdmVybGFw
cyhjb25zdCBHZXRCeVZhcmlhbnQmIG90aGVyKQogICAgIHsKICAgICAgICAgaWYgKCEhbV9pZGVu
dGlmaWVyICE9ICEhb3RoZXIubV9pZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CkBAIC0xMDAsNyArMTAwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3Mg
R2V0QnlTdGF0dXM7CiAKLSAgICBib29sIGNhbk1lcmdlSW50cmluc2ljU3RydWN0dXJlcyhjb25z
dCBHZXRCeUlkVmFyaWFudCYpIGNvbnN0OworICAgIGJvb2wgY2FuTWVyZ2VJbnRyaW5zaWNTdHJ1
Y3R1cmVzKGNvbnN0IEdldEJ5VmFyaWFudCYpIGNvbnN0OwogICAgIAogICAgIFN0cnVjdHVyZVNl
dCBtX3N0cnVjdHVyZVNldDsKICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBtX2NvbmRp
dGlvblNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5
U3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5U3RhdHVzLmNw
cAppbmRleCA4YTZjYzYwZjRjNmYuLmYyYzc5Nzk5YWQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbkJ5U3RhdHVzLmNwcApAQCAtMzcsNyArMzcsNyBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAotYm9vbCBJbkJ5U3RhdHVzOjphcHBlbmRWYXJpYW50KGNvbnN0IEluQnlJ
ZFZhcmlhbnQmIHZhcmlhbnQpCitib29sIEluQnlTdGF0dXM6OmFwcGVuZFZhcmlhbnQoY29uc3Qg
SW5CeVZhcmlhbnQmIHZhcmlhbnQpCiB7CiAgICAgcmV0dXJuIGFwcGVuZElDU3RhdHVzVmFyaWFu
dChtX3ZhcmlhbnRzLCB2YXJpYW50KTsKIH0KQEAgLTE0NSw3ICsxNDUsNyBAQCBJbkJ5U3RhdHVz
IEluQnlTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKGNv
bnN0IENvbmN1cnJlbgogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBz
dHViSW5mby0+aWRlbnRpZmllcigpOwogICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0g
aWRlbnRpZmllci51aWQoKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQodWlkKTsKLSAgICAgICAg
SW5CeUlkVmFyaWFudCB2YXJpYW50KFdURk1vdmUoaWRlbnRpZmllcikpOworICAgICAgICBJbkJ5
VmFyaWFudCB2YXJpYW50KFdURk1vdmUoaWRlbnRpZmllcikpOwogICAgICAgICB1bnNpZ25lZCBh
dHRyaWJ1dGVzOwogICAgICAgICB2YXJpYW50Lm1fb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXRDb25j
dXJyZW50bHkodWlkLCBhdHRyaWJ1dGVzKTsKICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KHZh
cmlhbnQubV9vZmZzZXQpKQpAQCAtMTcyLDcgKzE3Miw3IEBAIEluQnlTdGF0dXMgSW5CeVN0YXR1
czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soY29uc3QgQ29uY3Vy
cmVuCiAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGFjY2Vzcy5zdHJ1Y3R1cmUo
KTsKICAgICAgICAgICAgIGlmICghc3RydWN0dXJlKSB7CiAgICAgICAgICAgICAgICAgLy8gVGhl
IG51bGwgc3RydWN0dXJlIGNhc2VzIGFyaXNlIGR1ZSB0byBhcnJheS5sZW5ndGguIFdlIGhhdmUg
bm8gd2F5IG9mIGNyZWF0aW5nIGEKLSAgICAgICAgICAgICAgICAvLyBJbkJ5SWRWYXJpYW50IGZv
ciB0aG9zZSwgYW5kIHdlIGRvbid0IHJlYWxseSBoYXZlIHRvIHNpbmNlIHRoZSBERkcgaGFuZGxl
cyB0aG9zZQorICAgICAgICAgICAgICAgIC8vIEluQnlWYXJpYW50IGZvciB0aG9zZSwgYW5kIHdl
IGRvbid0IHJlYWxseSBoYXZlIHRvIHNpbmNlIHRoZSBERkcgaGFuZGxlcyB0aG9zZQogICAgICAg
ICAgICAgICAgIC8vIGNhc2VzIGluIEZpeHVwUGhhc2UgdXNpbmcgdmFsdWUgcHJvZmlsaW5nLiBU
aGF0J3MgYSBiaXQgYXdrd2FyZCAtIHdlIHNob3VsZG4ndAogICAgICAgICAgICAgICAgIC8vIGhh
dmUgdG8gdXNlIHZhbHVlIHByb2ZpbGluZyB0byBkaXNjb3ZlciBzb21ldGhpbmcgdGhhdCB0aGUg
QWNjZXNzQ2FzZSBjb3VsZCBoYXZlCiAgICAgICAgICAgICAgICAgLy8gdG9sZCB1cy4gQnV0LCBp
dCB3b3JrcyB3ZWxsIGVub3VnaC4gU28sIG91ciBvbmx5IGNvbmNlcm4gaGVyZSBpcyB0byBub3QK
QEAgLTE5Nyw3ICsxOTcsNyBAQCBJbkJ5U3RhdHVzIEluQnlTdGF0dXM6OmNvbXB1dGVGb3JTdHVi
SW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKGNvbnN0IENvbmN1cnJlbgogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gSW5CeVN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKICAgICAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgICAgICBJbkJ5SWRWYXJpYW50IHZhcmlhbnQoCisgICAgICAgICAg
ICAgICAgSW5CeVZhcmlhbnQgdmFyaWFudCgKICAgICAgICAgICAgICAgICAgICAgYWNjZXNzLmlk
ZW50aWZpZXIoKSwgU3RydWN0dXJlU2V0KHN0cnVjdHVyZSksIGNvbXBsZXhHZXRTdGF0dXMub2Zm
c2V0KCksCiAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXhHZXRTdGF0dXMuY29uZGl0aW9uU2V0
KCkpOwogCkBAIC0yMzYsNyArMjM2LDcgQEAgdm9pZCBJbkJ5U3RhdHVzOjptZXJnZShjb25zdCBJ
bkJ5U3RhdHVzJiBvdGhlcikKICAgICAgICAgICAgICp0aGlzID0gSW5CeVN0YXR1cyhUYWtlc1Ns
b3dQYXRoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBmb3IgKGNv
bnN0IEluQnlJZFZhcmlhbnQmIG90aGVyVmFyaWFudCA6IG90aGVyLm1fdmFyaWFudHMpIHsKKyAg
ICAgICAgZm9yIChjb25zdCBJbkJ5VmFyaWFudCYgb3RoZXJWYXJpYW50IDogb3RoZXIubV92YXJp
YW50cykgewogICAgICAgICAgICAgaWYgKCFhcHBlbmRWYXJpYW50KG90aGVyVmFyaWFudCkpIHsK
ICAgICAgICAgICAgICAgICAqdGhpcyA9IEluQnlTdGF0dXMoVGFrZXNTbG93UGF0aCk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjY0LDcgKzI2NCw3IEBAIHZvaWQgSW5CeVN0YXR1czo6
ZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0KQogdGVtcGxhdGU8dHlwZW5h
bWUgVmlzaXRvcj4KIHZvaWQgSW5CeVN0YXR1czo6bWFya0lmQ2hlYXAoVmlzaXRvciYgdmlzaXRv
cikKIHsKLSAgICBmb3IgKEluQnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKQorICAg
IGZvciAoSW5CeVZhcmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKQogICAgICAgICB2YXJpYW50
Lm1hcmtJZkNoZWFwKHZpc2l0b3IpOwogfQogCkBAIC0yNzMsNyArMjczLDcgQEAgdGVtcGxhdGUg
dm9pZCBJbkJ5U3RhdHVzOjptYXJrSWZDaGVhcChTbG90VmlzaXRvciYpOwogCiBib29sIEluQnlT
dGF0dXM6OmZpbmFsaXplKFZNJiB2bSkKIHsKLSAgICBmb3IgKEluQnlJZFZhcmlhbnQmIHZhcmlh
bnQgOiBtX3ZhcmlhbnRzKSB7CisgICAgZm9yIChJbkJ5VmFyaWFudCYgdmFyaWFudCA6IG1fdmFy
aWFudHMpIHsKICAgICAgICAgaWYgKCF2YXJpYW50LmZpbmFsaXplKHZtKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSW5CeVN0YXR1cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
QnlTdGF0dXMuaAppbmRleCA1YTM0MGI0OTNhMzQuLjM4NDY4ZDUyYWNmOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlTdGF0dXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeVN0YXR1cy5oCkBAIC0zMCw3ICszMCw3IEBACiAj
aW5jbHVkZSAiQ29kZU9yaWdpbi5oIgogI2luY2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIKICNp
bmNsdWRlICJJQ1N0YXR1c01hcC5oIgotI2luY2x1ZGUgIkluQnlJZFZhcmlhbnQuaCIKKyNpbmNs
dWRlICJJbkJ5VmFyaWFudC5oIgogI2luY2x1ZGUgIlN0dWJJbmZvU3VtbWFyeS5oIgogCiBuYW1l
c3BhY2UgSlNDIHsKQEAgLTkzLDkgKzkzLDkgQEAgcHVibGljOgogICAgIGJvb2wgaXNTaW1wbGUo
KSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFNpbXBsZTsgfQogCiAgICAgc2l6ZV90IG51bVZh
cmlhbnRzKCkgY29uc3QgeyByZXR1cm4gbV92YXJpYW50cy5zaXplKCk7IH0KLSAgICBjb25zdCBW
ZWN0b3I8SW5CeUlkVmFyaWFudCwgMT4mIHZhcmlhbnRzKCkgY29uc3QgeyByZXR1cm4gbV92YXJp
YW50czsgfQotICAgIGNvbnN0IEluQnlJZFZhcmlhbnQmIGF0KHNpemVfdCBpbmRleCkgY29uc3Qg
eyByZXR1cm4gbV92YXJpYW50c1tpbmRleF07IH0KLSAgICBjb25zdCBJbkJ5SWRWYXJpYW50JiBv
cGVyYXRvcltdKHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gYXQoaW5kZXgpOyB9CisgICAg
Y29uc3QgVmVjdG9yPEluQnlWYXJpYW50LCAxPiYgdmFyaWFudHMoKSBjb25zdCB7IHJldHVybiBt
X3ZhcmlhbnRzOyB9CisgICAgY29uc3QgSW5CeVZhcmlhbnQmIGF0KHNpemVfdCBpbmRleCkgY29u
c3QgeyByZXR1cm4gbV92YXJpYW50c1tpbmRleF07IH0KKyAgICBjb25zdCBJbkJ5VmFyaWFudCYg
b3BlcmF0b3JbXShzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGF0KGluZGV4KTsgfQogCiAg
ICAgYm9vbCB0YWtlc1Nsb3dQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBUYWtlc1Ns
b3dQYXRoOyB9CiAgICAgCkBAIC0xMTUsMTEgKzExNSwxMSBAQCBwcml2YXRlOgogI2lmIEVOQUJM
RShERkdfSklUKQogICAgIHN0YXRpYyBJbkJ5U3RhdHVzIGNvbXB1dGVGb3JTdHViSW5mb1dpdGhv
dXRFeGl0U2l0ZUZlZWRiYWNrKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFZNJiwgU3RydWN0
dXJlU3R1YkluZm8qKTsKICNlbmRpZgotICAgIGJvb2wgYXBwZW5kVmFyaWFudChjb25zdCBJbkJ5
SWRWYXJpYW50Jik7CisgICAgYm9vbCBhcHBlbmRWYXJpYW50KGNvbnN0IEluQnlWYXJpYW50Jik7
CiAgICAgdm9pZCBzaHJpbmtUb0ZpdCgpOwogCiAgICAgU3RhdGUgbV9zdGF0ZSB7IE5vSW5mb3Jt
YXRpb24gfTsKLSAgICBWZWN0b3I8SW5CeUlkVmFyaWFudCwgMT4gbV92YXJpYW50czsKKyAgICBW
ZWN0b3I8SW5CeVZhcmlhbnQsIDE+IG1fdmFyaWFudHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRWYXJp
YW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5VmFyaWFudC5jcHAK
c2ltaWxhcml0eSBpbmRleCA4NCUKcmVuYW1lIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0luQnlJZFZhcmlhbnQuY3BwCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSW5CeVZhcmlhbnQuY3BwCmluZGV4IGY0OTRiZmJkYjRhZS4uNzA2OTE0ZTM2YzAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlkVmFyaWFu
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlWYXJpYW50LmNw
cApAQCAtMjUsMTMgKzI1LDEzIEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkluQnlJZFZhcmlhbnQuaCIKKyNpbmNsdWRlICJJbkJ5VmFyaWFudC5oIgogCiAjaW5jbHVk
ZSAiQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUlu
QnlJZFZhcmlhbnQ6OkluQnlJZFZhcmlhbnQoQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVy
LCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0
LCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0KQorSW5CeVZh
cmlhbnQ6OkluQnlWYXJpYW50KENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3Qg
U3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgY29uc3Qg
T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCkKICAgICA6IG1fc3RydWN0
dXJlU2V0KHN0cnVjdHVyZVNldCkKICAgICAsIG1fY29uZGl0aW9uU2V0KGNvbmRpdGlvblNldCkK
ICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKQEAgLTQzLDcgKzQzLDcgQEAgSW5CeUlkVmFyaWFudDo6
SW5CeUlkVmFyaWFudChDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cnVj
dHVyZVNldCYKICAgICB9CiB9CiAKLWJvb2wgSW5CeUlkVmFyaWFudDo6YXR0ZW1wdFRvTWVyZ2Uo
Y29uc3QgSW5CeUlkVmFyaWFudCYgb3RoZXIpCitib29sIEluQnlWYXJpYW50OjphdHRlbXB0VG9N
ZXJnZShjb25zdCBJbkJ5VmFyaWFudCYgb3RoZXIpCiB7CiAgICAgaWYgKCEhbV9pZGVudGlmaWVy
ICE9ICEhb3RoZXIubV9pZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03NCwx
NSArNzQsMTUgQEAgYm9vbCBJbkJ5SWRWYXJpYW50OjphdHRlbXB0VG9NZXJnZShjb25zdCBJbkJ5
SWRWYXJpYW50JiBvdGhlcikKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KLXZvaWQg
SW5CeUlkVmFyaWFudDo6bWFya0lmQ2hlYXAoVmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSW5CeVZh
cmlhbnQ6Om1hcmtJZkNoZWFwKFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgbV9zdHJ1Y3R1cmVT
ZXQubWFya0lmQ2hlYXAodmlzaXRvcik7CiB9CiAKLXRlbXBsYXRlIHZvaWQgSW5CeUlkVmFyaWFu
dDo6bWFya0lmQ2hlYXAoQWJzdHJhY3RTbG90VmlzaXRvciYpOwotdGVtcGxhdGUgdm9pZCBJbkJ5
SWRWYXJpYW50OjptYXJrSWZDaGVhcChTbG90VmlzaXRvciYpOwordGVtcGxhdGUgdm9pZCBJbkJ5
VmFyaWFudDo6bWFya0lmQ2hlYXAoQWJzdHJhY3RTbG90VmlzaXRvciYpOwordGVtcGxhdGUgdm9p
ZCBJbkJ5VmFyaWFudDo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKTsKIAotYm9vbCBJbkJ5SWRW
YXJpYW50OjpmaW5hbGl6ZShWTSYgdm0pCitib29sIEluQnlWYXJpYW50OjpmaW5hbGl6ZShWTSYg
dm0pCiB7CiAgICAgaWYgKCFtX3N0cnVjdHVyZVNldC5pc1N0aWxsQWxpdmUodm0pKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC05MSwxMiArOTEsMTIgQEAgYm9vbCBJbkJ5SWRWYXJpYW50Ojpm
aW5hbGl6ZShWTSYgdm0pCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSW5CeUlkVmFyaWFu
dDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAordm9pZCBJbkJ5VmFyaWFudDo6ZHVtcChQ
cmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIGR1bXBJbkNvbnRleHQob3V0LCBudWxscHRy
KTsKIH0KIAotdm9pZCBJbkJ5SWRWYXJpYW50OjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBv
dXQsIER1bXBDb250ZXh0KiBjb250ZXh0KSBjb25zdAordm9pZCBJbkJ5VmFyaWFudDo6ZHVtcElu
Q29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3QKIHsK
ICAgICBvdXQucHJpbnQoIjxpZD0nIiwgbV9pZGVudGlmaWVyLCAiJywgIik7CiAgICAgaWYgKCFp
c1NldCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5C
eUlkVmFyaWFudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlWYXJpYW50
LmgKc2ltaWxhcml0eSBpbmRleCA5MCUKcmVuYW1lIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0luQnlJZFZhcmlhbnQuaApyZW5hbWUgdG8gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0luQnlWYXJpYW50LmgKaW5kZXggN2Q3MzIzOGZiZTUzLi43N2ZjYjEzYTNjMzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRWYXJpYW50
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlWYXJpYW50LmgKQEAg
LTM5LDEwICszOSwxMCBAQCBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiBjbGFzcyBJbkJ5U3RhdHVzOwog
c3RydWN0IER1bXBDb250ZXh0OwogCi1jbGFzcyBJbkJ5SWRWYXJpYW50IHsKK2NsYXNzIEluQnlW
YXJpYW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBJbkJ5
SWRWYXJpYW50KENhY2hlYWJsZUlkZW50aWZpZXIsIGNvbnN0IFN0cnVjdHVyZVNldCYgPSBTdHJ1
Y3R1cmVTZXQoKSwgUHJvcGVydHlPZmZzZXQgPSBpbnZhbGlkT2Zmc2V0LCBjb25zdCBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvblNldCYgPSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCgpKTsKKyAg
ICBJbkJ5VmFyaWFudChDYWNoZWFibGVJZGVudGlmaWVyLCBjb25zdCBTdHJ1Y3R1cmVTZXQmID0g
U3RydWN0dXJlU2V0KCksIFByb3BlcnR5T2Zmc2V0ID0gaW52YWxpZE9mZnNldCwgY29uc3QgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQmID0gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQoKSk7
CiAKICAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gISFtX3N0cnVjdHVyZVNldC5zaXpl
KCk7IH0KICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gaXNTZXQo
KTsgfQpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzSGl0KCkgY29uc3Qg
eyByZXR1cm4gb2Zmc2V0KCkgIT0gaW52YWxpZE9mZnNldDsgfQogCi0gICAgYm9vbCBhdHRlbXB0
VG9NZXJnZShjb25zdCBJbkJ5SWRWYXJpYW50JiBvdGhlcik7CisgICAgYm9vbCBhdHRlbXB0VG9N
ZXJnZShjb25zdCBJbkJ5VmFyaWFudCYgb3RoZXIpOwogICAgIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFZpc2l0b3I+IHZvaWQgbWFya0lmQ2hlYXAoVmlzaXRvciYpOwogICAgIGJvb2wgZmluYWxp
emUoVk0mKTsKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogCiAgICAgQ2FjaGVhYmxlSWRlbnRp
ZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKLSAgICBi
b29sIG92ZXJsYXBzKGNvbnN0IEluQnlJZFZhcmlhbnQmIG90aGVyKQorICAgIGJvb2wgb3Zlcmxh
cHMoY29uc3QgSW5CeVZhcmlhbnQmIG90aGVyKQogICAgIHsKICAgICAgICAgaWYgKCEhbV9pZGVu
dGlmaWVyICE9ICEhb3RoZXIubV9pZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1
YkluZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJ
bmZvLmNwcAppbmRleCBjNDU4M2QzZmY5ZjUuLjFkNzM1MGEyOTM5NCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCkBAIC0y
NTMsMTkgKzI1MywxOSBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjpyZXNldChjb25zdCBDb25j
dXJyZW50SlNMb2NrZXJCYXNlJiBsb2NrZXIsIENvZGVCbG9jayogYwogCiAgICAgc3dpdGNoIChh
Y2Nlc3NUeXBlKSB7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlkOgotICAgICAgICBy
ZXNldEdldEJ5KGNvZGVCbG9jaywgKnRoaXMsIEdldEJ5S2luZDo6VHJ5KTsKKyAgICAgICAgcmVz
ZXRHZXRCeShjb2RlQmxvY2ssICp0aGlzLCBHZXRCeUtpbmQ6OlRyeUJ5SWQpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldEJ5SWQ6Ci0gICAgICAgIHJlc2V0R2V0Qnko
Y29kZUJsb2NrLCAqdGhpcywgR2V0QnlLaW5kOjpOb3JtYWwpOworICAgICAgICByZXNldEdldEJ5
KGNvZGVCbG9jaywgKnRoaXMsIEdldEJ5S2luZDo6QnlJZCk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgQWNjZXNzVHlwZTo6R2V0QnlJZFdpdGhUaGlzOgotICAgICAgICByZXNldEdldEJ5KGNv
ZGVCbG9jaywgKnRoaXMsIEdldEJ5S2luZDo6V2l0aFRoaXMpOworICAgICAgICByZXNldEdldEJ5
KGNvZGVCbG9jaywgKnRoaXMsIEdldEJ5S2luZDo6QnlJZFdpdGhUaGlzKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXRCeUlkRGlyZWN0OgotICAgICAgICByZXNldEdl
dEJ5KGNvZGVCbG9jaywgKnRoaXMsIEdldEJ5S2luZDo6RGlyZWN0KTsKKyAgICAgICAgcmVzZXRH
ZXRCeShjb2RlQmxvY2ssICp0aGlzLCBHZXRCeUtpbmQ6OkJ5SWREaXJlY3QpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldEJ5VmFsOgotICAgICAgICByZXNldEdldEJ5
KGNvZGVCbG9jaywgKnRoaXMsIEdldEJ5S2luZDo6Tm9ybWFsQnlWYWwpOworICAgICAgICByZXNl
dEdldEJ5KGNvZGVCbG9jaywgKnRoaXMsIEdldEJ5S2luZDo6QnlWYWwpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lOgogICAgICAgICByZXNldEdl
dEJ5KGNvZGVCbG9jaywgKnRoaXMsIEdldEJ5S2luZDo6UHJpdmF0ZU5hbWUpOwpAQCAtMjc0LDE5
ICsyNzQsMTkgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6cmVzZXQoY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyQmFzZSYgbG9ja2VyLCBDb2RlQmxvY2sqIGMKICAgICAgICAgcmVzZXRQdXRCeUlE
KGNvZGVCbG9jaywgKnRoaXMpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6
OkluQnlJZDoKLSAgICAgICAgcmVzZXRJbkJ5KGNvZGVCbG9jaywgKnRoaXMsIEluQnlLaW5kOjpO
b3JtYWwpOworICAgICAgICByZXNldEluQnkoY29kZUJsb2NrLCAqdGhpcywgSW5CeUtpbmQ6OkJ5
SWQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkluQnlWYWw6Ci0gICAg
ICAgIHJlc2V0SW5CeShjb2RlQmxvY2ssICp0aGlzLCBJbkJ5S2luZDo6Tm9ybWFsQnlWYWwpOwor
ICAgICAgICByZXNldEluQnkoY29kZUJsb2NrLCAqdGhpcywgSW5CeUtpbmQ6OkJ5VmFsKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mOgogICAgICAgICBy
ZXNldEluc3RhbmNlT2YoY29kZUJsb2NrLCAqdGhpcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQWNjZXNzVHlwZTo6RGVsZXRlQnlJRDoKLSAgICAgICAgcmVzZXREZWxCeShjb2RlQmxvY2ss
ICp0aGlzLCBEZWxCeUtpbmQ6Ok5vcm1hbCk7CisgICAgICAgIHJlc2V0RGVsQnkoY29kZUJsb2Nr
LCAqdGhpcywgRGVsQnlLaW5kOjpCeUlkKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nl
c3NUeXBlOjpEZWxldGVCeVZhbDoKLSAgICAgICAgcmVzZXREZWxCeShjb2RlQmxvY2ssICp0aGlz
LCBEZWxCeUtpbmQ6Ok5vcm1hbEJ5VmFsKTsKKyAgICAgICAgcmVzZXREZWxCeShjb2RlQmxvY2ss
ICp0aGlzLCBEZWxCeUtpbmQ6OkJ5VmFsKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nl
c3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZDoKICAgICAgICAgcmVzZXRDaGVja1ByaXZhdGVCcmFu
ZChjb2RlQmxvY2ssICp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCAzYjYxYTVmZDE5ODku
LmUzNDMzZjRhZWE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtNDAxMSw3ICs0MDExLDcgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVj
dHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgICAgIGRpZEZvbGRDbG9iYmVyU3RydWN0
dXJlcygpOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG5vZGUtPm11bHRpRGVsZXRlQnlP
ZmZzZXREYXRhKCkudmFyaWFudHMuc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgICAgICBjb25zdCBE
ZWxldGVCeUlkVmFyaWFudCYgdmFyaWFudCA9IG5vZGUtPm11bHRpRGVsZXRlQnlPZmZzZXREYXRh
KCkudmFyaWFudHNbaV07CisgICAgICAgICAgICBjb25zdCBEZWxldGVCeVZhcmlhbnQmIHZhcmlh
bnQgPSBub2RlLT5tdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YSgpLnZhcmlhbnRzW2ldOwogICAgICAg
ICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCB0aGlzU2V0ID0gKm1fZ3JhcGguYWRkU3RydWN0
dXJlU2V0KHZhcmlhbnQub2xkU3RydWN0dXJlKCkpOwogICAgICAgICAgICAgdGhpc1NldC5maWx0
ZXIoYmFzZSk7CiAgICAgICAgICAgICBpZiAodGhpc1NldC5pc0VtcHR5KCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGY4MDIzN2Nj
ODM0My4uYTVmNTJhMDVhZmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMjA1LDE0ICsyMDUsMTQgQEAgcHJpdmF0ZToKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgogICAgIGJvb2wgaGFuZGxlRE9NSklUQ2Fs
bChOb2RlKiBjYWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSos
IGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVj
dWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3Mp
OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci0gICAgYm9vbCBoYW5kbGVJ
bnRyaW5zaWNHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24s
IGNvbnN0IEdldEJ5SWRWYXJpYW50JiBpbnRyaW5zaWNWYXJpYW50LCBOb2RlKiB0aGlzTm9kZSwg
Y29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKKyAgICBib29sIGhhbmRsZUludHJp
bnNpY0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29u
c3QgR2V0QnlWYXJpYW50JiBpbnRyaW5zaWNWYXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgY29uc3Qg
Q2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVj
a3NGdW5jdG9yPgogICAgIGJvb2wgaGFuZGxlVHlwZWRBcnJheUNvbnN0cnVjdG9yKE9wZXJhbmQg
cmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIFR5cGVkQXJyYXlUeXBlLCBjb25zdCBDaGVja3NGdW5jdG9y
JiBpbnNlcnRDaGVja3MpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+CiAg
ICAgYm9vbCBoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oTm9kZSogY2FsbFRhcmdldE5v
ZGUsIE9wZXJhbmQgcmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0
LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQs
IFNwZWN1bGF0ZWRUeXBlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOwogICAg
IE5vZGUqIGhhbmRsZVB1dEJ5T2Zmc2V0KE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXIs
IFByb3BlcnR5T2Zmc2V0LCBOb2RlKiB2YWx1ZSk7CiAgICAgTm9kZSogaGFuZGxlR2V0QnlPZmZz
ZXQoU3BlY3VsYXRlZFR5cGUsIE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIs
IFByb3BlcnR5T2Zmc2V0LCBOb2RlVHlwZSA9IEdldEJ5T2Zmc2V0KTsKLSAgICBib29sIGhhbmRs
ZURPTUpJVEdldHRlcihPcGVyYW5kIHJlc3VsdCwgY29uc3QgR2V0QnlJZFZhcmlhbnQmLCBOb2Rl
KiB0aGlzTm9kZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgU3BlY3VsYXRlZFR5cGUgcHJl
ZGljdGlvbik7CisgICAgYm9vbCBoYW5kbGVET01KSVRHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIGNv
bnN0IEdldEJ5VmFyaWFudCYsIE5vZGUqIHRoaXNOb2RlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVt
YmVyLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKTsKICAgICBib29sIGhhbmRsZU1vZHVsZU5h
bWVzcGFjZUxvYWQoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUsIE5vZGUq
IGJhc2UsIEdldEJ5U3RhdHVzKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlPgpA
QCAtMjM5LDcgKzIzOSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjaGVja1ByZXNlbmNlKEpTT2Jq
ZWN0KiBrbm93bkJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiwgUHJvcGVydHlPZmZzZXQsIGNvbnN0
IFN0cnVjdHVyZVNldCYpOwogICAgIHZvaWQgY2hlY2tQcmVzZW5jZUZvclJlcGxhY2UoTm9kZSog
YmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqLCBQcm9wZXJ0eU9mZnNldCwgY29uc3QgU3RydWN0dXJl
U2V0Jik7CiAgICAgCi0gICAgLy8gV29ya3Mgd2l0aCBib3RoIEdldEJ5SWRWYXJpYW50IGFuZCB0
aGUgc2V0dGVyIGZvcm0gb2YgUHV0QnlJZFZhcmlhbnQuCisgICAgLy8gV29ya3Mgd2l0aCBib3Ro
IEdldEJ5VmFyaWFudCBhbmQgdGhlIHNldHRlciBmb3JtIG9mIFB1dEJ5SWRWYXJpYW50LgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFZhcmlhbnRUeXBlPgogICAgIE5vZGUqIGxvYWQoU3BlY3VsYXRl
ZFR5cGUsIE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIGNvbnN0IFZhcmlh
bnRUeXBlJik7CiAKQEAgLTM3ODYsNyArMzc4Niw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZURPTUpJVENhbGwoTm9kZSogY2FsbFRhcmdldCwgT3BlcmFuZCByZXN1bHQsIGNvbnN0IERP
CiAKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLWJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUg
cHJlZGljdGlvbiwgY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQsIE5vZGUqIHRoaXNOb2Rl
LCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCitib29sIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHBy
ZWRpY3Rpb24sIGNvbnN0IEdldEJ5VmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNv
bnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBzd2l0Y2ggKHZhcmlhbnQu
aW50cmluc2ljKCkpIHsKICAgICBjYXNlIFR5cGVkQXJyYXlCeXRlTGVuZ3RoSW50cmluc2ljOiB7
CkBAIC0zOTAyLDcgKzM5MDIsNyBAQCBzdGF0aWMgdm9pZCBibGVzc0NhbGxET01HZXR0ZXIoTm9k
ZSogbm9kZSkKICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKIH0K
IAotYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKE9wZXJhbmQgcmVzdWx0
LCBjb25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIHVuc2lnbmVk
IGlkZW50aWZpZXJOdW1iZXIsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCitib29sIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVET01KSVRHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIGNvbnN0IEdldEJ5
VmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1i
ZXIsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiB7CiAgICAgaWYgKCF2YXJpYW50LmRvbUF0
dHJpYnV0ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00NjI4LDcgKzQ2MjgsNyBAQCB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgIGlmIChPcHRpb25zOjp1c2VE
T01KSVQoKSAmJiBnZXRCeVN0YXR1cy5pc0N1c3RvbSgpKSB7CiAgICAgICAgIEFTU0VSVChnZXRC
eVN0YXR1cy5udW1WYXJpYW50cygpID09IDEpOwogICAgICAgICBBU1NFUlQoIWdldEJ5U3RhdHVz
Lm1ha2VzQ2FsbHMoKSk7Ci0gICAgICAgIEdldEJ5SWRWYXJpYW50IHZhcmlhbnQgPSBnZXRCeVN0
YXR1c1swXTsKKyAgICAgICAgR2V0QnlWYXJpYW50IHZhcmlhbnQgPSBnZXRCeVN0YXR1c1swXTsK
ICAgICAgICAgQVNTRVJUKHZhcmlhbnQuZG9tQXR0cmlidXRlKCkpOwogICAgICAgICBpZiAoaGFu
ZGxlRE9NSklUR2V0dGVyKGRlc3RpbmF0aW9uLCB2YXJpYW50LCBiYXNlLCBpZGVudGlmaWVyTnVt
YmVyLCBwcmVkaWN0aW9uKSkgewogICAgICAgICAgICAgaWYgKFVOTElLRUxZKG1fZ3JhcGguY29t
cGlsYXRpb24oKSkpCkBAIC00NjY0LDcgKzQ2NjQsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVHZXRCeUlkKAogICAgICAgICAvLyAxKSBFbWl0IHByb3RvdHlwZSBzdHJ1Y3R1cmUgY2hl
Y2tzIGZvciBhbGwgY2hhaW5zLiBUaGlzIGNvdWxkIHNvcnQgb2YgbWF5YmUgbm90IGJlCiAgICAg
ICAgIC8vICAgIG9wdGltYWwsIGlmIHRoZXJlIGlzIHNvbWUgcmFyZWx5IGV4ZWN1dGVkIGNhc2Ug
aW4gdGhlIGNoYWluIHRoYXQgcmVxdWlyZXMgYSBsb3QKICAgICAgICAgLy8gICAgb2YgY2hlY2tz
IGFuZCB0aG9zZSBjaGVja3MgYXJlIG5vdCB3YXRjaHBvaW50YWJsZS4KLSAgICAgICAgZm9yIChj
b25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IGdldEJ5U3RhdHVzLnZhcmlhbnRzKCkpIHsK
KyAgICAgICAgZm9yIChjb25zdCBHZXRCeVZhcmlhbnQmIHZhcmlhbnQgOiBnZXRCeVN0YXR1cy52
YXJpYW50cygpKSB7CiAgICAgICAgICAgICBpZiAodmFyaWFudC5pbnRyaW5zaWMoKSAhPSBOb0lu
dHJpbnNpYykgewogICAgICAgICAgICAgICAgIHNldChkZXN0aW5hdGlvbiwKICAgICAgICAgICAg
ICAgICAgICAgYWRkVG9HcmFwaChnZXRCeUlkLCBPcEluZm8oaWRlbnRpZmllciksIE9wSW5mbyhw
cmVkaWN0aW9uKSwgYmFzZSkpOwpAQCAtNDcwNCw3ICs0NzA0LDcgQEAgdm9pZCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlR2V0QnlJZCgKICAgICBhZGRUb0dyYXBoKEZpbHRlckdldEJ5U3RhdHVzLCBP
cEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFkZEdldEJ5U3RhdHVzKGN1
cnJlbnRDb2RlT3JpZ2luKCksIGdldEJ5U3RhdHVzKSksIGJhc2UpOwogCiAgICAgQVNTRVJUKGdl
dEJ5U3RhdHVzLm51bVZhcmlhbnRzKCkgPT0gMSk7Ci0gICAgR2V0QnlJZFZhcmlhbnQgdmFyaWFu
dCA9IGdldEJ5U3RhdHVzWzBdOworICAgIEdldEJ5VmFyaWFudCB2YXJpYW50ID0gZ2V0QnlTdGF0
dXNbMF07CiAgICAgCiAgICAgTm9kZSogbG9hZGVkVmFsdWUgPSBsb2FkKHByZWRpY3Rpb24sIGJh
c2UsIGlkZW50aWZpZXJOdW1iZXIsIHZhcmlhbnQpOwogICAgIGlmICghbG9hZGVkVmFsdWUpIHsK
QEAgLTQ4MDAsNyArNDgwMCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldFByaXZh
dGVOYW1lQnlJZCgKIAogICAgICAgICBWZWN0b3I8TXVsdGlHZXRCeU9mZnNldENhc2UsIDI+IGNh
c2VzOwogCi0gICAgICAgIGZvciAoY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBnZXRC
eVN0YXR1cy52YXJpYW50cygpKSB7CisgICAgICAgIGZvciAoY29uc3QgR2V0QnlWYXJpYW50JiB2
YXJpYW50IDogZ2V0QnlTdGF0dXMudmFyaWFudHMoKSkgewogICAgICAgICAgICAgQVNTRVJUKHZh
cmlhbnQuaW50cmluc2ljKCkgPT0gTm9JbnRyaW5zaWMpOwogICAgICAgICAgICAgQVNTRVJUKHZh
cmlhbnQuY29uZGl0aW9uU2V0KCkuaXNFbXB0eSgpKTsKIApAQCAtNDgyNiw3ICs0ODI2LDcgQEAg
dm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0UHJpdmF0ZU5hbWVCeUlkKAogICAgIGFkZFRv
R3JhcGgoRmlsdGVyR2V0QnlTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0
YXR1c2VzKCkuYWRkR2V0QnlTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgZ2V0QnlTdGF0dXMp
KSwgYmFzZSk7CiAKICAgICBBU1NFUlQoZ2V0QnlTdGF0dXMubnVtVmFyaWFudHMoKSA9PSAxKTsK
LSAgICBHZXRCeUlkVmFyaWFudCB2YXJpYW50ID0gZ2V0QnlTdGF0dXNbMF07CisgICAgR2V0QnlW
YXJpYW50IHZhcmlhbnQgPSBnZXRCeVN0YXR1c1swXTsKIAogICAgIE5vZGUqIGxvYWRlZFZhbHVl
ID0gbG9hZChwcmVkaWN0aW9uLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YXJpYW50KTsKICAg
ICBpZiAoIWxvYWRlZFZhbHVlKSB7CkBAIC00ODY4LDcgKzQ4NjgsNyBAQCB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVEZWxldGVCeUlkKAogICAgICAgICBib29sIGhhc01pc3MgPSBmYWxzZTsK
ICAgICAgICAgYm9vbCBoYXNNaXNzTm9uY29uZmlndXJhYmxlID0gZmFsc2U7CiAKLSAgICAgICAg
Zm9yIChjb25zdCBEZWxldGVCeUlkVmFyaWFudCYgdmFyaWFudCA6IGRlbGV0ZUJ5U3RhdHVzLnZh
cmlhbnRzKCkpIHsKKyAgICAgICAgZm9yIChjb25zdCBEZWxldGVCeVZhcmlhbnQmIHZhcmlhbnQg
OiBkZWxldGVCeVN0YXR1cy52YXJpYW50cygpKSB7CiAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lz
dGVyU3RydWN0dXJlKHZhcmlhbnQub2xkU3RydWN0dXJlKCkpOwogICAgICAgICAgICAgaWYgKHZh
cmlhbnQubmV3U3RydWN0dXJlKCkpIHsKICAgICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVy
U3RydWN0dXJlKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpOwpAQCAtNDg4Myw3ICs0ODgzLDcgQEAg
dm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRGVsZXRlQnlJZCgKICAgICAgICAgICAgIGlmICgo
aGFzTWlzcyAmJiAhaGFzTWlzc05vbmNvbmZpZ3VyYWJsZSkgfHwgKCFoYXNNaXNzICYmIGhhc01p
c3NOb25jb25maWd1cmFibGUpKSB7CiAgICAgICAgICAgICAgICAgU3RydWN0dXJlU2V0IGJhc2VT
ZXQ7CiAKLSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50JiB2YXJp
YW50IDogZGVsZXRlQnlTdGF0dXMudmFyaWFudHMoKSkKKyAgICAgICAgICAgICAgICBmb3IgKGNv
bnN0IERlbGV0ZUJ5VmFyaWFudCYgdmFyaWFudCA6IGRlbGV0ZUJ5U3RhdHVzLnZhcmlhbnRzKCkp
CiAgICAgICAgICAgICAgICAgICAgIGJhc2VTZXQuYWRkKHZhcmlhbnQub2xkU3RydWN0dXJlKCkp
OwogCiAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1f
Z3JhcGguYWRkU3RydWN0dXJlU2V0KGJhc2VTZXQpKSwgYmFzZSk7CkBAIC00OTAxLDcgKzQ5MDEs
NyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVEZWxldGVCeUlkKAogICAgIH0KIAogICAg
IEFTU0VSVChkZWxldGVCeVN0YXR1cy52YXJpYW50cygpLnNpemUoKSA9PSAxKTsKLSAgICBEZWxl
dGVCeUlkVmFyaWFudCB2YXJpYW50ID0gZGVsZXRlQnlTdGF0dXMudmFyaWFudHMoKVswXTsKKyAg
ICBEZWxldGVCeVZhcmlhbnQgdmFyaWFudCA9IGRlbGV0ZUJ5U3RhdHVzLnZhcmlhbnRzKClbMF07
CiAKICAgICBpZiAoIXZhcmlhbnQubmV3U3RydWN0dXJlKCkpIHsKICAgICAgICAgYWRkVG9HcmFw
aChGaWx0ZXJEZWxldGVCeVN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3Rh
dHVzZXMoKS5hZGREZWxldGVCeVN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBkZWxldGVCeVN0
YXR1cykpLCBiYXNlKTsKQEAgLTQ5NDYsNyArNDk0Niw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUluQnlJZChWaXJ0dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24sIE5vZGUqIGJhc2UsIENh
Y2hlCiAgICAgaWYgKHN0YXR1cy5pc1NpbXBsZSgpICYmIE9wdGlvbnM6OnVzZUFjY2Vzc0lubGlu
aW5nKCkpIHsKICAgICAgICAgYm9vbCBhbGxPSyA9IHRydWU7CiAgICAgICAgIE1hdGNoU3RydWN0
dXJlRGF0YSogZGF0YSA9IG1fZ3JhcGgubV9tYXRjaFN0cnVjdHVyZURhdGEuYWRkKCk7Ci0gICAg
ICAgIGZvciAoY29uc3QgSW5CeUlkVmFyaWFudCYgdmFyaWFudCA6IHN0YXR1cy52YXJpYW50cygp
KSB7CisgICAgICAgIGZvciAoY29uc3QgSW5CeVZhcmlhbnQmIHZhcmlhbnQgOiBzdGF0dXMudmFy
aWFudHMoKSkgewogICAgICAgICAgICAgaWYgKCFjaGVjayh2YXJpYW50LmNvbmRpdGlvblNldCgp
KSkgewogICAgICAgICAgICAgICAgIGFsbE9LID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CkBAIC02MzQwLDE1ICs2MzQwLDE1IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBOb2RlKiBicmFuZCA9IGdldChieXRlY29k
ZS5tX2JyYW5kKTsKICAgICAgICAgICAgIGJvb2wgY29tcGlsZWRBc0NoZWNrU3RydWN0dXJlID0g
ZmFsc2U7CiAKLSAgICAgICAgICAgIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzIGNoZWNrU3RhdHVz
ID0gQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6OmNvbXB1dGVGb3IoCi0gICAgICAgICAgICAgICAg
bV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLAotICAgICAgICAgICAgICAgIG1faW5s
aW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ssCi0gICAgICAgICAg
ICAgICAgY3VycmVudENvZGVPcmlnaW4oKSk7Ci0KICAgICAgICAgICAgIGlmICghbV9pbmxpbmVT
dGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkSWRl
bnQpCiAgICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUu
aGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZFR5cGUpCiAgICAgICAgICAgICAgICAgJiYg
IW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5k
ZXgsIEJhZENvbnN0YW50VmFsdWUpKSB7CiAKKyAgICAgICAgICAgICAgICBDaGVja1ByaXZhdGVC
cmFuZFN0YXR1cyBjaGVja1N0YXR1cyA9IENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOjpjb21wdXRl
Rm9yKAorICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxv
Y2ssCisgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAs
IG1faWNDb250ZXh0U3RhY2ssCisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2lu
KCkpOworCiAgICAgICAgICAgICAgICAgaWYgKENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmll
ciA9IGNoZWNrU3RhdHVzLnNpbmdsZUlkZW50aWZpZXIoKSkgewogICAgICAgICAgICAgICAgICAg
ICBtX2dyYXBoLmlkZW50aWZpZXJzKCkuZW5zdXJlKGlkZW50aWZpZXIudWlkKCkpOwogICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQoaWRlbnRpZmllci5pc1N5bWJvbCgpKTsKQEAgLTYzNzcsMTcg
KzYzNzcsMTcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1p
dCkKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
U2V0UHJpdmF0ZUJyYW5kPigpOwogICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29k
ZS5tX2Jhc2UpOwogICAgICAgICAgICAgTm9kZSogYnJhbmQgPSBnZXQoYnl0ZWNvZGUubV9icmFu
ZCk7Ci0KICAgICAgICAgICAgIGJvb2wgaW5saW5lZFNldFByaXZhdGVCcmFuZCA9IGZhbHNlOwot
ICAgICAgICAgICAgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzIHNldFN0YXR1cyA9IFNldFByaXZhdGVC
cmFuZFN0YXR1czo6Y29tcHV0ZUZvcigKLSAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9w
LT5tX3Byb2ZpbGVkQmxvY2ssCi0gICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9i
YXNlbGluZU1hcCwgbV9pY0NvbnRleHRTdGFjaywKLSAgICAgICAgICAgICAgICBjdXJyZW50Q29k
ZU9yaWdpbigpKTsKIAogICAgICAgICAgICAgaWYgKCFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQ
cm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRJZGVudCkKICAgICAgICAgICAg
ICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1
cnJlbnRJbmRleCwgQmFkVHlwZSkKICAgICAgICAgICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1Rv
cC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ29uc3RhbnRW
YWx1ZSkpIHsKIAorICAgICAgICAgICAgICAgIFNldFByaXZhdGVCcmFuZFN0YXR1cyBzZXRTdGF0
dXMgPSBTZXRQcml2YXRlQnJhbmRTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAgICAgICAgICAgICAg
ICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKKyAgICAgICAgICAgICAgICAg
ICAgbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwgbV9pY0NvbnRleHRTdGFjaywKKyAg
ICAgICAgICAgICAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSk7CisKICAgICAgICAgICAgICAg
ICBpZiAoQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gc2V0U3RhdHVzLnNpbmdsZUlk
ZW50aWZpZXIoKSkgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaWRlbnRpZmllci5pc1N5
bWJvbCgpKTsKICAgICAgICAgICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plbiA9IG1fZ3Jh
cGguZnJlZXplU3Ryb25nKGlkZW50aWZpZXIuY2VsbCgpKTsKQEAgLTY2NDAsMTUgKzY2NDAsMTYg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAg
ICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKICAgICAgICAgICAgIE5v
ZGUqIHByb3BlcnR5ID0gZ2V0KGJ5dGVjb2RlLm1fcHJvcGVydHkpOwogICAgICAgICAgICAgYm9v
bCBzaG91bGRDb21waWxlQXNEZWxldGVCeUlkID0gZmFsc2U7Ci0gICAgICAgICAgICBEZWxldGVC
eVN0YXR1cyBkZWxldGVCeVN0YXR1cyA9IERlbGV0ZUJ5U3RhdHVzOjpjb21wdXRlRm9yKAotICAg
ICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKLSAgICAgICAg
ICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNr
LAotICAgICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCkpOwogCiAgICAgICAgICAgICBp
ZiAoIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50
SW5kZXgsIEJhZElkZW50KQogICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5t
X2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRUeXBlKQogICAgICAg
ICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRl
KG1fY3VycmVudEluZGV4LCBCYWRDb25zdGFudFZhbHVlKSkgewogCisgICAgICAgICAgICAgICAg
RGVsZXRlQnlTdGF0dXMgZGVsZXRlQnlTdGF0dXMgPSBEZWxldGVCeVN0YXR1czo6Y29tcHV0ZUZv
cigKKyAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2Nr
LAorICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBt
X2ljQ29udGV4dFN0YWNrLAorICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q29kZU9yaWdpbigp
KTsKKwogICAgICAgICAgICAgICAgIGlmIChDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIg
PSBkZWxldGVCeVN0YXR1cy5zaW5nbGVJZGVudGlmaWVyKCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IGlkZW50aWZpZXIudWlkKCk7CiAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2dyYXBoLmlkZW50aWZpZXJz
KCkuZW5zdXJlKGlkZW50aWZpZXIudWlkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRleCBjNDdkNDkzMDgzMjUu
LmVhZWFmODVlYTI1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
b25zdGFudEZvbGRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKQEAgLTU0Miw3ICs1NDIsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIGFscmVhZHlIYW5kbGVkID0gdHJ1ZTsgLy8gRG9uJ3QgYWxsb3cgdGhl
IGRlZmF1bHQgY29uc3RhbnQgZm9sZGVyIHRvIGRvIHRoaW5ncyB0byB0aGlzLgogCiAgICAgICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRhdGEudmFyaWFudHMuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgICAgICAgICAgICAgRGVsZXRlQnlJZFZhcmlhbnQmIHZhcmlhbnQgPSBk
YXRhLnZhcmlhbnRzW2ldOworICAgICAgICAgICAgICAgICAgICBEZWxldGVCeVZhcmlhbnQmIHZh
cmlhbnQgPSBkYXRhLnZhcmlhbnRzW2ldOwogCiAgICAgICAgICAgICAgICAgICAgIGlmICghYmFz
ZVZhbHVlLmNvbnRhaW5zKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1
Y3R1cmUoKSkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnZhcmlhbnRzW2ktLV0g
PSBkYXRhLnZhcmlhbnRzLmxhc3QoKTsKQEAgLTY1MCw3ICs2NTAsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2dyYXBoLmlkZW50aWZp
ZXJzKCkuZW5zdXJlKHVpZCk7CiAgICAgICAgICAgICAgICAgYWRkRmlsdGVyU3RhdHVzKCk7CiAg
ICAgICAgICAgICAgICAgTXVsdGlHZXRCeU9mZnNldERhdGEqIGRhdGEgPSBtX2dyYXBoLm1fbXVs
dGlHZXRCeU9mZnNldERhdGEuYWRkKCk7Ci0gICAgICAgICAgICAgICAgZm9yIChjb25zdCBHZXRC
eUlkVmFyaWFudCYgdmFyaWFudCA6IHN0YXR1cy52YXJpYW50cygpKSB7CisgICAgICAgICAgICAg
ICAgZm9yIChjb25zdCBHZXRCeVZhcmlhbnQmIHZhcmlhbnQgOiBzdGF0dXMudmFyaWFudHMoKSkg
ewogICAgICAgICAgICAgICAgICAgICBkYXRhLT5jYXNlcy5hcHBlbmQoCiAgICAgICAgICAgICAg
ICAgICAgICAgICBNdWx0aUdldEJ5T2Zmc2V0Q2FzZSgKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqbV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5zdHJ1Y3R1cmVTZXQoKSksCkBA
IC0xMTc0LDcgKzExNzQsNyBAQCBwcml2YXRlOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGVtaXRHZXRCeU9mZnNldCh1bnNpZ25l
ZCBpbmRleEluQmxvY2ssIE5vZGUqIG5vZGUsIGNvbnN0IEFic3RyYWN0VmFsdWUmIGJhc2VWYWx1
ZSwgY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1i
ZXIpCisgICAgdm9pZCBlbWl0R2V0QnlPZmZzZXQodW5zaWduZWQgaW5kZXhJbkJsb2NrLCBOb2Rl
KiBub2RlLCBjb25zdCBBYnN0cmFjdFZhbHVlJiBiYXNlVmFsdWUsIGNvbnN0IEdldEJ5VmFyaWFu
dCYgdmFyaWFudCwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlcikKICAgICB7CiAgICAgICAgIEVk
Z2UgY2hpbGRFZGdlID0gbm9kZS0+Y2hpbGQxKCk7CiAKQEAgLTEyODUsNyArMTI4NSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB2b2lkIGVtaXREZWxldGVCeU9mZnNldCh1
bnNpZ25lZCBpbmRleEluQmxvY2ssIE5vZGUqIG5vZGUsIGNvbnN0IEFic3RyYWN0VmFsdWUmIGJh
c2VWYWx1ZSwgY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIHZhcmlhbnQsIHVuc2lnbmVkIGlkZW50
aWZpZXJOdW1iZXIpCisgICAgdm9pZCBlbWl0RGVsZXRlQnlPZmZzZXQodW5zaWduZWQgaW5kZXhJ
bkJsb2NrLCBOb2RlKiBub2RlLCBjb25zdCBBYnN0cmFjdFZhbHVlJiBiYXNlVmFsdWUsIGNvbnN0
IERlbGV0ZUJ5VmFyaWFudCYgdmFyaWFudCwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlcikKICAg
ICB7CiAgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gbm9kZS0+b3JpZ2luOwogICAgICAgICBE
RkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGUsIG9yaWdpbi5leGl0T0spOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaAppbmRleCAzNWNkNTRjOGEyMWUuLjY5MTYyYmNmZjRmZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTQ5LDggKzQ5LDggQEAKICNpbmNsdWRlICJERkdV
c2VLaW5kLmgiCiAjaW5jbHVkZSAiREZHVmFyaWFibGVBY2Nlc3NEYXRhLmgiCiAjaW5jbHVkZSAi
RE9NSklUU2lnbmF0dXJlLmgiCi0jaW5jbHVkZSAiRGVsZXRlQnlJZFZhcmlhbnQuaCIKLSNpbmNs
dWRlICJHZXRCeUlkVmFyaWFudC5oIgorI2luY2x1ZGUgIkRlbGV0ZUJ5VmFyaWFudC5oIgorI2lu
Y2x1ZGUgIkdldEJ5VmFyaWFudC5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRl
ICJPcGVyYW5kcy5oIgogI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKQEAgLTk5LDcg
Kzk5LDcgQEAgc3RydWN0IE11bHRpUHV0QnlPZmZzZXREYXRhIHsKIAogc3RydWN0IE11bHRpRGVs
ZXRlQnlPZmZzZXREYXRhIHsKICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyOwotICAgIFZl
Y3RvcjxEZWxldGVCeUlkVmFyaWFudCwgMj4gdmFyaWFudHM7CisgICAgVmVjdG9yPERlbGV0ZUJ5
VmFyaWFudCwgMj4gdmFyaWFudHM7CiAKICAgICBib29sIHdyaXRlc1N0cnVjdHVyZXMoKSBjb25z
dDsKICAgICBib29sIGFsbFZhcmlhbnRzU3RvcmVFbXB0eSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAppbmRleCBjNTliNjllMmQ1N2QuLjU0MTBkOTA4
OTZkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKQEAgLTMy
MCw3ICszMjAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgIGNhc2UgTXVsdGlEZWxldGVCeU9mZnNldDoKICAgICAgICAgICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gbm9kZS0+bXVsdGlEZWxldGVCeU9mZnNldERhdGEoKS52YXJpYW50
cy5zaXplKCk7IGktLTspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IERlbGV0ZUJ5
SWRWYXJpYW50JiB2YXJpYW50ID0gbm9kZS0+bXVsdGlEZWxldGVCeU9mZnNldERhdGEoKS52YXJp
YW50c1tpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IERlbGV0ZUJ5VmFyaWFudCYg
dmFyaWFudCA9IG5vZGUtPm11bHRpRGVsZXRlQnlPZmZzZXREYXRhKCkudmFyaWFudHNbaV07CiAg
ICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICF2YXJpYW50Lm5ld1N0cnVj
dHVyZSgpIHx8ICF2YXJpYW50Lm9sZFN0cnVjdHVyZSgpLT5kZmdTaG91bGRXYXRjaCgpKTsKICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA0Zjk3NzBhZDRm
ZmEuLjdmMzAzZjMzMTU4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcApAQCAtNTg5Miw3ICs1ODkyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNv
bXBpbGVEZWxCeShMVmFsdWUgYmFzZSwgU3Vic2NyaXB0S2luZCBzdWJzY3JpcHRWYWx1ZSkKICAg
ICB7CiAgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludDsKLSAgICAgICAgaWYgY29u
c3RleHByIChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKSB7CisgICAgICAgIGlmIGNvbnN0ZXhw
ciAoa2luZCA9PSBEZWxCeUtpbmQ6OkJ5SWQpIHsKICAgICAgICAgICAgIHBhdGNocG9pbnQgPSBt
X291dC5wYXRjaHBvaW50KEludDY0KTsKICAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChD
b25zdHJhaW5lZFZhbHVlKGJhc2UsIFZhbHVlUmVwOjpTb21lTGF0ZVJlZ2lzdGVyKSk7CiAgICAg
ICAgIH0gZWxzZSB7CkBAIC01OTMzLDE0ICs1OTMzLDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoaml0LmJyYW5jaElmTm90Q2VsbChiYXNlKSk7CiAK
ICAgICAgICAgICAgICAgICBjb25zdGV4cHIgYXV0byBvcHRpbWl6YXRpb25GdW5jdGlvbiA9IFsm
XSAoKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBEZWxCeUtp
bmQ6Ok5vcm1hbCkKKyAgICAgICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChraW5kID09IERl
bEJ5S2luZDo6QnlJZCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25E
ZWxldGVCeUlkT3B0aW1pemU7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplOwogICAgICAg
ICAgICAgICAgIH0oKTsKIAogICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8gc3Vic2NyaXB0ID0g
WyZdIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChraW5kID09IERlbEJ5S2lu
ZDo6Tm9ybWFsKQorICAgICAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gRGVs
QnlLaW5kOjpCeUlkKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihzdWJzY3JpcHRWYWx1ZS5yYXdCaXRzKCkpOwogICAgICAgICAgICAg
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzY3JhdGNoR1BS
ICE9IHBhcmFtc1syXS5ncHIoKSk7CkBAIC01OTUxLDcgKzU5NTEsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIH0oKTsKIAogICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8gZ2VuZXJhdG9y
ID0gWyZdIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChraW5kID09IERlbEJ5
S2luZDo6Tm9ybWFsKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9
PSBEZWxCeUtpbmQ6OkJ5SWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb3g8
SklURGVsQnlJZEdlbmVyYXRvcj46OmNyZWF0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGlj
LCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2
YWlsYWJsZVJlZ2lzdGVycygpLCBzdWJzY3JpcHRWYWx1ZSwgYmFzZSwKQEAgLTYwMTIsNyArNjAx
Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIHN3aXRjaCAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5k
KCkpIHsKICAgICAgICAgY2FzZSBDZWxsVXNlOiB7CiAgICAgICAgICAgICBMVmFsdWUgYmFzZSA9
IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBjb21waWxlRGVsQnk8RGVs
QnlLaW5kOjpOb3JtYWw+KGJhc2UsIG1fbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpKTsKKyAg
ICAgICAgICAgIGNvbXBpbGVEZWxCeTxEZWxCeUtpbmQ6OkJ5SWQ+KGJhc2UsIG1fbm9kZS0+Y2Fj
aGVhYmxlSWRlbnRpZmllcigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAg
LTYwNTIsNyArNjA1Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgREZHX0NSQVNIKG1f
Z3JhcGgsIG1fbm9kZSwgIkJhZCB1c2Uga2luZCIpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvbXBpbGVEZWxCeTxEZWxCeUtpbmQ6Ok5vcm1h
bEJ5VmFsPihiYXNlLCBzdWJzY3JpcHQpOworICAgICAgICAgICAgY29tcGlsZURlbEJ5PERlbEJ5
S2luZDo6QnlWYWw+KGJhc2UsIHN1YnNjcmlwdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIApAQCAtODk5OSw3ICs4OTk5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgdW5zaWduZWQg
bWlzc05vbmNvbmZpZ3VyYWJsZSA9IDA7CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0
YS52YXJpYW50cy5zaXplKCk7IGktLTspIHsKLSAgICAgICAgICAgIERlbGV0ZUJ5SWRWYXJpYW50
IHZhcmlhbnQgPSBkYXRhLnZhcmlhbnRzW2ldOworICAgICAgICAgICAgRGVsZXRlQnlWYXJpYW50
IHZhcmlhbnQgPSBkYXRhLnZhcmlhbnRzW2ldOwogICAgICAgICAgICAgaWYgKCF2YXJpYW50Lm5l
d1N0cnVjdHVyZSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHZhcmlhbnQucmVzdWx0KCkpCiAg
ICAgICAgICAgICAgICAgICAgICsrbWlzc0NvbmZpZ3VyYWJsZTsKQEAgLTkwMjUsNyArOTAyNSw3
IEBAIHByaXZhdGU6CiAgICAgICAgIFZlY3RvcjxTd2l0Y2hDYXNlLCAyPiBjYXNlczsKICAgICAg
ICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBiYXNlU2V0OwogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBkYXRhLnZhcmlhbnRzLnNpemUoKSwgYmxvY2sgPSAwOyBpLS07KSB7Ci0gICAgICAgICAg
ICBEZWxldGVCeUlkVmFyaWFudCB2YXJpYW50ID0gZGF0YS52YXJpYW50c1tpXTsKKyAgICAgICAg
ICAgIERlbGV0ZUJ5VmFyaWFudCB2YXJpYW50ID0gZGF0YS52YXJpYW50c1tpXTsKICAgICAgICAg
ICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVj
dHVyZSh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKTsKICAgICAgICAgICAgIGJhc2VTZXQuYWRkKHN0
cnVjdHVyZSk7CiAgICAgICAgICAgICBpZiAodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSkKQEAgLTkw
NDEsNyArOTA0MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIFZlY3RvcjxWYWx1ZUZyb21CbG9jaywg
Mj4gcmVzdWx0czsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLnZhcmlhbnRzLnNp
emUoKSwgYmxvY2sgPSAwOyBpLS07KSB7Ci0gICAgICAgICAgICBEZWxldGVCeUlkVmFyaWFudCB2
YXJpYW50ID0gZGF0YS52YXJpYW50c1tpXTsKKyAgICAgICAgICAgIERlbGV0ZUJ5VmFyaWFudCB2
YXJpYW50ID0gZGF0YS52YXJpYW50c1tpXTsKICAgICAgICAgICAgIGlmICghdmFyaWFudC5uZXdT
dHJ1Y3R1cmUoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIApAQCAtMTIzNjgsNyArMTIz
NjgsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBv
aW50ID0gbV9vdXQucGF0Y2hwb2ludChJbnQ2NCk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVu
ZFNvbWVSZWdpc3RlcihiYXNlKTsKLSAgICAgICAgaWYgY29uc3RleHByIChraW5kICE9IEluQnlL
aW5kOjpOb3JtYWwpCisgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCAhPSBJbkJ5S2luZDo6QnlJ
ZCkKICAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihzdWJzY3JpcHRW
YWx1ZSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJl
cDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNo
cG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVt
YmVyVGFnUmVnaXN0ZXIpKTsKQEAgLTEyMzkzLDE0ICsxMjM5MywxNCBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIGF1dG8gYmFzZSA9IEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSk7CiAK
ICAgICAgICAgICAgICAgICBjb25zdCBhdXRvIHN1YnNjcmlwdCA9IFsmXSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBJbkJ5S2luZDo6Tm9ybWFsKQorICAgICAg
ICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gSW5CeUtpbmQ6OkJ5SWQpCiAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN1
YnNjcmlwdFZhbHVlLnJhd0JpdHMoKSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkpOwog
ICAgICAgICAgICAgICAgIH0oKTsKIAogICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8gZ2VuZXJh
dG9yID0gWyZdIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChraW5kID09IElu
QnlLaW5kOjpOb3JtYWwpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChraW5k
ID09IEluQnlLaW5kOjpCeUlkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQm94
PEpJVEluQnlJZEdlbmVyYXRvcj46OmNyZWF0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGlj
LCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2
YWlsYWJsZVJlZ2lzdGVycygpLCBzdWJzY3JpcHRWYWx1ZSwgYmFzZSwKQEAgLTEyNDE1LDcgKzEy
NDE1LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExp
c3Qgc2xvd0Nhc2VzOwogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0
aChqaXQpOwotICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBJbkJ5S2luZDo6
Tm9ybWFsKQorICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBJbkJ5S2luZDo6
QnlJZCkKICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW5lcmF0b3ItPnNs
b3dQYXRoSnVtcCgpKTsKICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6RlRMSklUKSkKQEAgLTEyNDMwLDcg
KzEyNDMwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5s
aW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBz
bG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
Y29uc3RleHByIChraW5kID09IEluQnlLaW5kOjpOb3JtYWwpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBJbkJ5S2luZDo6QnlJZCkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6RlRMSklU
KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1f
c2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkluQnlJZE9wdGltaXplOwpAQCAtMTI0ODEsMTIgKzEy
NDgxLDEyIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNvbXBpbGVJbkJ5SWQoKQogICAgIHsKLSAg
ICAgICAgY29tcGlsZUluQnk8SW5CeUtpbmQ6Ok5vcm1hbD4obG93Q2VsbChtX25vZGUtPmNoaWxk
MSgpKSwgbV9ub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkpOworICAgICAgICBjb21waWxlSW5C
eTxJbkJ5S2luZDo6QnlJZD4obG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9ub2RlLT5jYWNo
ZWFibGVJZGVudGlmaWVyKCkpOwogICAgIH0KIAogICAgIHZvaWQgY29tcGlsZUluQnlWYWwoKQog
ICAgIHsKLSAgICAgICAgY29tcGlsZUluQnk8SW5CeUtpbmQ6Ok5vcm1hbEJ5VmFsPihsb3dDZWxs
KG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpKTsKKyAgICAg
ICAgY29tcGlsZUluQnk8SW5CeUtpbmQ6OkJ5VmFsPihsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkp
LCBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpKTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBp
bGVIYXNPd25Qcm9wZXJ0eSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAppbmRleCBkZTRmZWI5NTVjZGIuLmViODkwMmFhNWNhZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0yMDcsNyArMjA3LDcgQEAgSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZSwgRW5jb2Rl
ZEpTVmFsdWUsIChKU0dsb2JhbE8KIAogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZy
YW1lLT5jb2RlQmxvY2soKTsKICAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZ0J5KHZt
LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwodm0pLCBpZGVudGlmaWVyKSAm
JiAhc2xvdC5pc1RhaW50ZWRCeU9wYXF1ZU9iamVjdCgpICYmIChzbG90LmlzQ2FjaGVhYmxlVmFs
dWUoKSB8fCBzbG90LmlzQ2FjaGVhYmxlR2V0dGVyKCkgfHwgc2xvdC5pc1Vuc2V0KCkpKQotICAg
ICAgICByZXBhdGNoR2V0QnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgaWRl
bnRpZmllciwgc2xvdCwgKnN0dWJJbmZvLCBHZXRCeUtpbmQ6OlRyeSk7CisgICAgICAgIHJlcGF0
Y2hHZXRCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBpZGVudGlmaWVyLCBz
bG90LCAqc3R1YkluZm8sIEdldEJ5S2luZDo6VHJ5QnlJZCk7CiAKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHNsb3QuZ2V0UHVyZVJlc3VsdCgpKTsKIH0KQEAgLTI2Niw3ICsyNjYsNyBAQCBK
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0QnlJZERpcmVjdE9wdGltaXplLCBF
bmNvZGVkSlNWYWx1ZSwgKEpTR2xvYgogCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxs
RnJhbWUtPmNvZGVCbG9jaygpOwogICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nQnko
dm0sIGNvZGVCbG9jaywgYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCh2bSksIGlkZW50aWZpZXIp
KQotICAgICAgICByZXBhdGNoR2V0QnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1
ZSwgaWRlbnRpZmllciwgc2xvdCwgKnN0dWJJbmZvLCBHZXRCeUtpbmQ6OkRpcmVjdCk7CisgICAg
ICAgIHJlcGF0Y2hHZXRCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBpZGVu
dGlmaWVyLCBzbG90LCAqc3R1YkluZm8sIEdldEJ5S2luZDo6QnlJZERpcmVjdCk7CiAKICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShmb3VuZCA/IHNsb3QuZ2V0
VmFsdWUoZ2xvYmFsT2JqZWN0LCBpZGVudCkgOiBqc1VuZGVmaW5lZCgpKSk7CiB9CkBAIC0zMjks
NyArMzI5LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldEJ5SWRPcHRp
bWl6ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamUKICAgICAgICAgCiAgICAgICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKICAgICAgICAgaWYg
KHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeSh2bSwgY29kZUJsb2NrLCBiYXNlVmFsdWUuc3Ry
dWN0dXJlT3JOdWxsKHZtKSwgaWRlbnRpZmllcikpCi0gICAgICAgICAgICByZXBhdGNoR2V0Qnko
Z2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgaWRlbnRpZmllciwgc2xvdCwgKnN0
dWJJbmZvLCBHZXRCeUtpbmQ6Ok5vcm1hbCk7CisgICAgICAgICAgICByZXBhdGNoR2V0QnkoZ2xv
YmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgaWRlbnRpZmllciwgc2xvdCwgKnN0dWJJ
bmZvLCBHZXRCeUtpbmQ6OkJ5SWQpOwogICAgICAgICByZXR1cm4gZm91bmQgPyBzbG90LmdldFZh
bHVlKGdsb2JhbE9iamVjdCwgaWRlbnQpIDoganNVbmRlZmluZWQoKTsKICAgICB9KSk7CiB9CkBA
IC0zODksNyArMzg5LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldEJ5
SWRXaXRoVGhpc09wdGltaXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2wKICAgICAgICAgCiAgICAg
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKICAgICAg
ICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeSh2bSwgY29kZUJsb2NrLCBiYXNlVmFs
dWUuc3RydWN0dXJlT3JOdWxsKHZtKSwgaWRlbnRpZmllcikpCi0gICAgICAgICAgICByZXBhdGNo
R2V0QnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgaWRlbnRpZmllciwgc2xv
dCwgKnN0dWJJbmZvLCBHZXRCeUtpbmQ6OldpdGhUaGlzKTsKKyAgICAgICAgICAgIHJlcGF0Y2hH
ZXRCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBpZGVudGlmaWVyLCBzbG90
LCAqc3R1YkluZm8sIEdldEJ5S2luZDo6QnlJZFdpdGhUaGlzKTsKICAgICAgICAgcmV0dXJuIGZv
dW5kID8gc2xvdC5nZXRWYWx1ZShnbG9iYWxPYmplY3QsIGlkZW50KSA6IGpzVW5kZWZpbmVkKCk7
CiAgICAgfSkpOwogfQpAQCAtNDQ4LDcgKzQ0OCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVj
CiAgICAgYm9vbCBmb3VuZCA9IGJhc2VPYmplY3QtPmdldFByb3BlcnR5U2xvdChnbG9iYWxPYmpl
Y3QsIGlkZW50LCBzbG90KTsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+
Y29kZUJsb2NrKCk7CiAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeSh2bSwgY29k
ZUJsb2NrLCBiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLCBpZGVudGlmaWVyKSkKLSAgICAgICAg
cmVwYXRjaEluQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIGlkZW50aWZp
ZXIsIGZvdW5kLCBzbG90LCAqc3R1YkluZm8sIEluQnlLaW5kOjpOb3JtYWwpOworICAgICAgICBy
ZXBhdGNoSW5CeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgaWRlbnRpZmll
ciwgZm91bmQsIHNsb3QsICpzdHViSW5mbywgSW5CeUtpbmQ6OkJ5SWQpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZvdW5kKSk7CiB9CiAKQEAgLTQ5MCw3ICs0OTAsNyBA
QCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5CeVZhbE9wdGltaXplLCBFbmNv
ZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZQogICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRl
bnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21DZWxsKGtleS5hc0NlbGwo
KSk7CiAgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nQnkodm0sIGNvZGVCbG9j
aywgYmFzZU9iamVjdC0+c3RydWN0dXJlKHZtKSwgaWRlbnRpZmllcikpCi0gICAgICAgICAgICBy
ZXBhdGNoSW5CeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgaWRlbnRpZmll
ciwgZm91bmQsIHNsb3QsICpzdHViSW5mbywgSW5CeUtpbmQ6Ok5vcm1hbEJ5VmFsKTsKKyAgICAg
ICAgICAgIHJlcGF0Y2hJbkJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBp
ZGVudGlmaWVyLCBmb3VuZCwgc2xvdCwgKnN0dWJJbmZvLCBJbkJ5S2luZDo6QnlWYWwpOwogICAg
IH0KIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZvdW5kKSk7CkBAIC0y
MzgxLDcgKzIzODEsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0QnlW
YWxPcHRpbWl6ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iagogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENhY2hl
YWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21DZWxsKHN1YnNjcmlwdC5hc0NlbGwoKSk7CiAgICAg
ICAgICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeSh2bSwgY29kZUJsb2Nr
LCBiYXNlVmFsdWUuc3RydWN0dXJlT3JOdWxsKHZtKSwgaWRlbnRpZmllcikpCi0gICAgICAgICAg
ICAgICAgICAgIHJlcGF0Y2hHZXRCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVl
LCBpZGVudGlmaWVyLCBzbG90LCAqc3R1YkluZm8sIEdldEJ5S2luZDo6Tm9ybWFsQnlWYWwpOwor
ICAgICAgICAgICAgICAgICAgICByZXBhdGNoR2V0QnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ss
IGJhc2VWYWx1ZSwgaWRlbnRpZmllciwgc2xvdCwgKnN0dWJJbmZvLCBHZXRCeUtpbmQ6OkJ5VmFs
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gZm91bmQgPyBzbG90LmdldFZhbHVlKGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lKSA6IGpzVW5kZWZpbmVkKCk7CiAgICAgICAgICAgICB9KSk7CiAg
ICAgICAgIH0KQEAgLTI2OTUsNyArMjY5NSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsIHNpemVfdCwgKEpTR2xvYmFsT2JqZWN0KiBnCiAg
ICAgICAgIGlmICghcGFyc2VJbmRleChpZGVudCkpIHsKICAgICAgICAgICAgIENvZGVCbG9jayog
Y29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKICAgICAgICAgICAgIGlmIChzdHVi
SW5mby0+Y29uc2lkZXJDYWNoaW5nQnkodm0sIGNvZGVCbG9jaywgYmFzZVZhbHVlLnN0cnVjdHVy
ZU9yTnVsbCh2bSksIGlkZW50aWZpZXIpKQotICAgICAgICAgICAgICAgIHJlcGF0Y2hEZWxldGVC
eShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgc2xvdCwgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUs
IGlkZW50aWZpZXIsICpzdHViSW5mbywgRGVsQnlLaW5kOjpOb3JtYWwsIGVjbWFNb2RlKTsKKyAg
ICAgICAgICAgICAgICByZXBhdGNoRGVsZXRlQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHNs
b3QsIGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBpZGVudGlmaWVyLCAqc3R1YkluZm8sIERlbEJ5
S2luZDo6QnlJZCwgZWNtYU1vZGUpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yNzYwLDcgKzI3
NjAsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRp
bWl6ZSwgc2l6ZV90LCAoSlNHbG9iYWxPYmplY3QqCiAgICAgICAgICAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CiAgICAgICAgICAgICBDYWNoZWFibGVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tQ2Vs
bChzdWJzY3JpcHQuYXNDZWxsKCkpOwogICAgICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRl
ckNhY2hpbmdCeSh2bSwgY29kZUJsb2NrLCBiYXNlVmFsdWUuc3RydWN0dXJlT3JOdWxsKHZtKSwg
aWRlbnRpZmllcikpCi0gICAgICAgICAgICAgICAgcmVwYXRjaERlbGV0ZUJ5KGdsb2JhbE9iamVj
dCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVyZSwgaWRlbnRpZmllciwg
KnN0dWJJbmZvLCBEZWxCeUtpbmQ6Ok5vcm1hbEJ5VmFsLCBlY21hTW9kZSk7CisgICAgICAgICAg
ICAgICAgcmVwYXRjaERlbGV0ZUJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNl
VmFsdWUsIG9sZFN0cnVjdHVyZSwgaWRlbnRpZmllciwgKnN0dWJJbmZvLCBEZWxCeUtpbmQ6OkJ5
VmFsLCBlY21hTW9kZSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guY3BwCmluZGV4IGI1YWE3Mjc1ZDMxMi4uZGViMWFkODA5MzgzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTE2NSwxNSArMTY1LDE1IEBAIEFMV0FZU19J
TkxJTkUgc3RhdGljIHZvaWQgZmlyZVdhdGNocG9pbnRzQW5kQ2xlYXJTdHViSWZOZWVkZWQoVk0m
IHZtLCBTdHJ1Y3R1cmVTCiBpbmxpbmUgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBhcHBy
b3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0aW9uKEdldEJ5S2luZCBraW5kKQogewogICAgIHN3
aXRjaCAoa2luZCkgewotICAgIGNhc2UgR2V0QnlLaW5kOjpOb3JtYWw6CisgICAgY2FzZSBHZXRC
eUtpbmQ6OkJ5SWQ6CiAgICAgICAgIHJldHVybiBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemU7Ci0g
ICAgY2FzZSBHZXRCeUtpbmQ6OldpdGhUaGlzOgorICAgIGNhc2UgR2V0QnlLaW5kOjpCeUlkV2l0
aFRoaXM6CiAgICAgICAgIHJldHVybiBvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZTsK
LSAgICBjYXNlIEdldEJ5S2luZDo6VHJ5OgorICAgIGNhc2UgR2V0QnlLaW5kOjpUcnlCeUlkOgog
ICAgICAgICByZXR1cm4gb3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplOwotICAgIGNhc2UgR2V0
QnlLaW5kOjpEaXJlY3Q6CisgICAgY2FzZSBHZXRCeUtpbmQ6OkJ5SWREaXJlY3Q6CiAgICAgICAg
IHJldHVybiBvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemU7Ci0gICAgY2FzZSBHZXRCeUtp
bmQ6Ok5vcm1hbEJ5VmFsOgorICAgIGNhc2UgR2V0QnlLaW5kOjpCeVZhbDoKICAgICAgICAgcmV0
dXJuIG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemU7CiAgICAgY2FzZSBHZXRCeUtpbmQ6OlByaXZh
dGVOYW1lOgogICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZTsK
QEAgLTE4NiwxNSArMTg2LDE1IEBAIGlubGluZSBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+
IGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24oR2V0QnlLaW5kCiBpbmxpbmUgRnVu
Y3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBhcHByb3ByaWF0ZUdldEJ5RnVuY3Rpb24oR2V0QnlL
aW5kIGtpbmQpCiB7CiAgICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBHZXRCeUtpbmQ6Ok5v
cm1hbDoKKyAgICBjYXNlIEdldEJ5S2luZDo6QnlJZDoKICAgICAgICAgcmV0dXJuIG9wZXJhdGlv
bkdldEJ5SWQ7Ci0gICAgY2FzZSBHZXRCeUtpbmQ6OldpdGhUaGlzOgorICAgIGNhc2UgR2V0QnlL
aW5kOjpCeUlkV2l0aFRoaXM6CiAgICAgICAgIHJldHVybiBvcGVyYXRpb25HZXRCeUlkV2l0aFRo
aXM7Ci0gICAgY2FzZSBHZXRCeUtpbmQ6OlRyeToKKyAgICBjYXNlIEdldEJ5S2luZDo6VHJ5QnlJ
ZDoKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblRyeUdldEJ5SWQ7Ci0gICAgY2FzZSBHZXRCeUtp
bmQ6OkRpcmVjdDoKKyAgICBjYXNlIEdldEJ5S2luZDo6QnlJZERpcmVjdDoKICAgICAgICAgcmV0
dXJuIG9wZXJhdGlvbkdldEJ5SWREaXJlY3Q7Ci0gICAgY2FzZSBHZXRCeUtpbmQ6Ok5vcm1hbEJ5
VmFsOgorICAgIGNhc2UgR2V0QnlLaW5kOjpCeVZhbDoKICAgICAgICAgcmV0dXJuIG9wZXJhdGlv
bkdldEJ5VmFsR2VuZXJpYzsKICAgICBjYXNlIEdldEJ5S2luZDo6UHJpdmF0ZU5hbWU6CiAgICAg
ICAgIHJldHVybiBvcGVyYXRpb25HZXRQcml2YXRlTmFtZTsKQEAgLTMzMiw5ICszMzIsOSBAQCBz
dGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDb2RlQmxvY2sqCiAgICAgICAgICAgICAgICAgaWYgKHNsb3QuaXNVbnNldCgp
ICYmIHN0cnVjdHVyZS0+dHlwZUluZm8oKS5nZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclBy
b3BlcnR5QWJzZW5jZSgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNo
ZTsKIAotICAgICAgICAgICAgICAgIC8vIElmIGEga2luZCBpcyBHZXRCeUtpbmQ6OkRpcmVjdCBv
ciBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lLCB3ZSBkbyBub3QgbmVlZCB0byBpbnZlc3RpZ2F0ZSBw
cm90b3R5cGUgY2hhaW5zIGZ1cnRoZXIuCisgICAgICAgICAgICAgICAgLy8gSWYgYSBraW5kIGlz
IEdldEJ5S2luZDo6QnlJZERpcmVjdCBvciBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lLCB3ZSBkbyBu
b3QgbmVlZCB0byBpbnZlc3RpZ2F0ZSBwcm90b3R5cGUgY2hhaW5zIGZ1cnRoZXIuCiAgICAgICAg
ICAgICAgICAgLy8gQ2FjaGVhYmlsaXR5IGp1c3QgZGVwZW5kcyBvbiB0aGUgaGVhZCBzdHJ1Y3R1
cmUuCi0gICAgICAgICAgICAgICAgaWYgKGtpbmQgIT0gR2V0QnlLaW5kOjpEaXJlY3QgJiYgIWlz
UHJpdmF0ZSkgeworICAgICAgICAgICAgICAgIGlmIChraW5kICE9IEdldEJ5S2luZDo6QnlJZERp
cmVjdCAmJiAhaXNQcml2YXRlKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gY2FjaGVTdGF0
dXMgPSBwcmVwYXJlQ2hhaW5Gb3JDYWNoaW5nKGdsb2JhbE9iamVjdCwgYmFzZUNlbGwsIHNsb3Qp
OwogICAgICAgICAgICAgICAgICAgICBpZiAoIWNhY2hlU3RhdHVzKQogICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CkBAIC0zODMsNyArMzgzLDcgQEAgc3RhdGlj
IElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ29kZUJsb2NrKgogICAgICAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVDdXN0b20o
KSAmJiBzbG90LmRvbUF0dHJpYnV0ZSgpKQogICAgICAgICAgICAgICAgIGRvbUF0dHJpYnV0ZSA9
IHNsb3QuZG9tQXR0cmlidXRlKCk7CiAKLSAgICAgICAgICAgIGlmIChraW5kID09IEdldEJ5S2lu
ZDo6VHJ5KSB7CisgICAgICAgICAgICBpZiAoa2luZCA9PSBHZXRCeUtpbmQ6OlRyeUJ5SWQpIHsK
ICAgICAgICAgICAgICAgICBBY2Nlc3NDYXNlOjpBY2Nlc3NUeXBlIHR5cGU7CiAgICAgICAgICAg
ICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpKQogICAgICAgICAgICAgICAgICAgICB0
eXBlID0gQWNjZXNzQ2FzZTo6TG9hZDsKQEAgLTQxNyw3ICs0MTcsNyBAQCBzdGF0aWMgSW5saW5l
Q2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
b2RlQmxvY2sqCiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAg
ICAgIHR5cGUgPSBBY2Nlc3NDYXNlOjpDdXN0b21WYWx1ZUdldHRlcjsKIAotICAgICAgICAgICAg
ICAgICAgICBpZiAoa2luZCA9PSBHZXRCeUtpbmQ6OldpdGhUaGlzICYmIHR5cGUgPT0gQWNjZXNz
Q2FzZTo6Q3VzdG9tQWNjZXNzb3JHZXR0ZXIgJiYgZG9tQXR0cmlidXRlKQorICAgICAgICAgICAg
ICAgICAgICBpZiAoa2luZCA9PSBHZXRCeUtpbmQ6OkJ5SWRXaXRoVGhpcyAmJiB0eXBlID09IEFj
Y2Vzc0Nhc2U6OkN1c3RvbUFjY2Vzc29yR2V0dGVyICYmIGRvbUF0dHJpYnV0ZSkKICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogCiAgICAgICAgICAgICAgICAg
ICAgIG5ld0Nhc2UgPSBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUoCkBAIC00MzgsMTQg
KzQzOCwxNCBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqCiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwogICAgICAgICAgICAgc3dpdGNoIChr
aW5kKSB7Ci0gICAgICAgICAgICBjYXNlIEdldEJ5S2luZDo6Tm9ybWFsOgotICAgICAgICAgICAg
Y2FzZSBHZXRCeUtpbmQ6OldpdGhUaGlzOgotICAgICAgICAgICAgY2FzZSBHZXRCeUtpbmQ6OlRy
eToKLSAgICAgICAgICAgIGNhc2UgR2V0QnlLaW5kOjpEaXJlY3Q6CisgICAgICAgICAgICBjYXNl
IEdldEJ5S2luZDo6QnlJZDoKKyAgICAgICAgICAgIGNhc2UgR2V0QnlLaW5kOjpCeUlkV2l0aFRo
aXM6CisgICAgICAgICAgICBjYXNlIEdldEJ5S2luZDo6VHJ5QnlJZDoKKyAgICAgICAgICAgIGNh
c2UgR2V0QnlLaW5kOjpCeUlkRGlyZWN0OgogICAgICAgICAgICAgY2FzZSBHZXRCeUtpbmQ6OlBy
aXZhdGVOYW1lQnlJZDoKICAgICAgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJB
c0p1bXBJbkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRT
dHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSBHZXRCeUtpbmQ6Ok5vcm1hbEJ5VmFsOgorICAgICAgICAgICAg
Y2FzZSBHZXRCeUtpbmQ6OkJ5VmFsOgogICAgICAgICAgICAgY2FzZSBHZXRCeUtpbmQ6OlByaXZh
dGVOYW1lOgogICAgICAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcElu
QWNjZXNzTm90VXNpbmdJbmxpbmVBY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0
aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKQEAgLTkxNSw3ICs5MTUsNyBAQCB2b2lkIHJlcGF0Y2hEZWxldGVCeShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgRGVsZXRl
UAogCiAgICAgaWYgKHRyeUNhY2hlRGVsZXRlQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHNs
b3QsIGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHN0dWJJbmZvLCBraW5k
LCBlY21hTW9kZSkgPT0gR2l2ZVVwT25DYWNoZSkgewogICAgICAgICBMT0dfSUMoKElDRXZlbnQ6
OkRlbEJ5UmVwbGFjZVdpdGhHZW5lcmljLCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKGdsb2Jh
bE9iamVjdC0+dm0oKSksIElkZW50aWZpZXI6OmZyb21VaWQodm0sIHByb3BlcnR5TmFtZS51aWQo
KSkpKTsKLSAgICAgICAgaWYgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCisgICAgICAgIGlm
IChraW5kID09IERlbEJ5S2luZDo6QnlJZCkKICAgICAgICAgICAgIHJlcGF0Y2hTbG93UGF0aENh
bGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1
YkluZm8sIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYyk7CkBAIC0xMDIwLDEwICsxMDIwLDEw
IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluQnkoCiAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKIAogICAgICAgICAgICAgc3dpdGNoIChraW5k
KSB7Ci0gICAgICAgICAgICBjYXNlIEluQnlLaW5kOjpOb3JtYWw6CisgICAgICAgICAgICBjYXNl
IEluQnlLaW5kOjpCeUlkOgogICAgICAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1
YkFzSnVtcEluQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJ
VFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBjYXNlIEluQnlLaW5kOjpOb3JtYWxCeVZhbDoKKyAgICAgICAgICAg
IGNhc2UgSW5CeUtpbmQ6OkJ5VmFsOgogICAgICAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3
aXJlU3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVBY2Nlc3MoY29kZUJsb2NrLCBzdHVi
SW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2Rl
KCkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTEwNDIsNyAr
MTA0Miw3IEBAIHZvaWQgcmVwYXRjaEluQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTT2JqZWN0KiBiCiAKICAgICBpZiAodHJ5Q2FjaGVJbkJ5
KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHdhc0Zv
dW5kLCBzbG90LCBzdHViSW5mbywga2luZCkgPT0gR2l2ZVVwT25DYWNoZSkgewogICAgICAgICBM
T0dfSUMoKElDRXZlbnQ6OkluUmVwbGFjZVdpdGhHZW5lcmljLCBiYXNlT2JqZWN0LT5jbGFzc0lu
Zm8oZ2xvYmFsT2JqZWN0LT52bSgpKSwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgcHJvcGVydHlO
YW1lLnVpZCgpKSkpOwotICAgICAgICBpZiAoa2luZCA9PSBJbkJ5S2luZDo6Tm9ybWFsKQorICAg
ICAgICBpZiAoa2luZCA9PSBJbkJ5S2luZDo6QnlJZCkKICAgICAgICAgICAgIHJlcGF0Y2hTbG93
UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uSW5CeUlkR2VuZXJpYyk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBz
dHViSW5mbywgb3BlcmF0aW9uSW5CeVZhbEdlbmVyaWMpOwpAQCAtMTY3OSwxNCArMTY3OSwxNCBA
QCB2b2lkIHJlc2V0R2V0QnkoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZv
JiBzdHViSW5mbywgR2V0QnlLaW5kIGtpbgogewogICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29k
ZUJsb2NrLCBzdHViSW5mbywgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5k
KSk7CiAgICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBHZXRCeUtpbmQ6Ok5vcm1hbDoKLSAg
ICBjYXNlIEdldEJ5S2luZDo6V2l0aFRoaXM6Ci0gICAgY2FzZSBHZXRCeUtpbmQ6OlRyeToKLSAg
ICBjYXNlIEdldEJ5S2luZDo6RGlyZWN0OgorICAgIGNhc2UgR2V0QnlLaW5kOjpCeUlkOgorICAg
IGNhc2UgR2V0QnlLaW5kOjpCeUlkV2l0aFRoaXM6CisgICAgY2FzZSBHZXRCeUtpbmQ6OlRyeUJ5
SWQ6CisgICAgY2FzZSBHZXRCeUtpbmQ6OkJ5SWREaXJlY3Q6CiAgICAgY2FzZSBHZXRCeUtpbmQ6
OlByaXZhdGVOYW1lQnlJZDoKICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJ
bkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBH
ZXRCeUtpbmQ6Ok5vcm1hbEJ5VmFsOgorICAgIGNhc2UgR2V0QnlLaW5kOjpCeVZhbDoKICAgICBj
YXNlIEdldEJ5S2luZDo6UHJpdmF0ZU5hbWU6CiAgICAgICAgIElubGluZUFjY2Vzczo6cmVzZXRT
dHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZv
KTsKICAgICAgICAgYnJlYWs7CkBAIC0xNzE5LDcgKzE3MTksNyBAQCB2b2lkIHJlc2V0UHV0QnlJ
RChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogCiB2
b2lkIHJlc2V0RGVsQnkoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBz
dHViSW5mbywgRGVsQnlLaW5kIGtpbmQpCiB7Ci0gICAgaWYgKGtpbmQgPT0gRGVsQnlLaW5kOjpO
b3JtYWwpCisgICAgaWYgKGtpbmQgPT0gRGVsQnlLaW5kOjpCeUlkKQogICAgICAgICByZXBhdGNo
U2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRp
bWl6ZSk7CiAgICAgZWxzZQogICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywg
c3R1YkluZm8sIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpOwpAQCAtMTcyOSwxMSArMTcy
OSwxMSBAQCB2b2lkIHJlc2V0RGVsQnkoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0
dWJJbmZvJiBzdHViSW5mbywgRGVsQnlLaW5kIGtpbgogdm9pZCByZXNldEluQnkoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgSW5CeUtpbmQga2luZCkK
IHsKICAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICBjYXNlIEluQnlLaW5kOjpOb3JtYWw6CisgICAg
Y2FzZSBJbkJ5S2luZDo6QnlJZDoKICAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxv
Y2ssIHN0dWJJbmZvLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7CiAgICAgICAgIElubGluZUFj
Y2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbyk7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgSW5CeUtpbmQ6Ok5vcm1hbEJ5VmFsOgorICAgIGNhc2UgSW5C
eUtpbmQ6OkJ5VmFsOgogICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1
YkluZm8sIG9wZXJhdGlvbkluQnlWYWxPcHRpbWl6ZSk7CiAgICAgICAgIElubGluZUFjY2Vzczo6
cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUFjY2Vzcyhjb2RlQmxvY2ssIHN0
dWJJbmZvKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlcGF0Y2guaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCmlu
ZGV4IDU5YTE1YjkwZWM5NC4uNzJjNjZiMjg5MTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlcGF0Y2guaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Jl
cGF0Y2guaApAQCAtMzQsMjMgKzM0LDIzIEBACiBuYW1lc3BhY2UgSlNDIHsKIAogZW51bSBjbGFz
cyBHZXRCeUtpbmQgewotICAgIE5vcm1hbCwKLSAgICBOb3JtYWxCeVZhbCwKLSAgICBUcnksCi0g
ICAgV2l0aFRoaXMsCi0gICAgRGlyZWN0LAorICAgIEJ5SWQsCisgICAgQnlWYWwsCisgICAgVHJ5
QnlJZCwKKyAgICBCeUlkV2l0aFRoaXMsCisgICAgQnlJZERpcmVjdCwKICAgICBQcml2YXRlTmFt
ZSwKICAgICBQcml2YXRlTmFtZUJ5SWQsCiB9OwogCiBlbnVtIGNsYXNzIERlbEJ5S2luZCB7Ci0g
ICAgTm9ybWFsLAotICAgIE5vcm1hbEJ5VmFsCisgICAgQnlJZCwKKyAgICBCeVZhbAogfTsKIAog
ZW51bSBjbGFzcyBJbkJ5S2luZCB7Ci0gICAgTm9ybWFsLAotICAgIE5vcm1hbEJ5VmFsCisgICAg
QnlJZCwKKyAgICBCeVZhbAogfTsKIAogdm9pZCByZXBhdGNoQXJyYXlHZXRCeVZhbChKU0dsb2Jh
bE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBpbmRleCwgU3RydWN0
dXJlU3R1YkluZm8mKTsK
</data>
<flag name="commit-queue"
          id="452689"
          type_id="3"
          status="+"
          setter="ross.kirsling"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431046</attachid>
            <date>2021-06-09 20:56:07 -0700</date>
            <delta_ts>2021-06-09 23:26:22 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>226750.diff</filename>
            <type>text/plain</type>
            <size>93039</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA2NTNjNWYzMzgxMWEuLjM1NjZj
YTQ4NTllMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTQ4LDggKzU0
OCw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
Ynl0ZWNvZGUvQ29kZVR5cGUuaAogICAgIGJ5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgKICAgICBi
eXRlY29kZS9EYXRhRm9ybWF0LmgKLSAgICBieXRlY29kZS9EZWxldGVCeUlkVmFyaWFudC5oCi0g
ICAgYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuaAogICAgIGJ5dGVjb2RlL0RpcmVjdEV2YWxDb2Rl
Q2FjaGUuaAogICAgIGJ5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKICAgICBieXRlY29kZS9FeGVj
dXRhYmxlVG9Db2RlQmxvY2tFZGdlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGNhZWRl
YTA2ZjEyZC4uNjllMzA5ZGI2MTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMTggQEAKKzIwMjEtMDYtMDkgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnku
Y29tPgorCisgICAgICAgIFtKU0NdIFJlbmFtZSAqQnlJZFZhcmlhbnQgdG8gKkJ5VmFyaWFudCBh
bmQgKkJ5S2luZDo6Tm9ybWFsIHRvICpCeUtpbmQ6OkJ5SWQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjc1MAorCisgICAgICAgIFJldmlld2VkIGJ5
IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgQ2xlYW51cCBwYXRjaCBmb2xsb3dpbmcgcjI3ODQ0
NS4KKworICAgICAgICAxLiB7R2V0LCBEZWxldGUsIElufUJ5U3RhdHVzIChidXQgbm90IGBQdXRg
KSBoYXZlIGhhZCBgSWRgIHJlbW92ZWQgZnJvbSB0aGVpciBuYW1lczsgbGlrZXdpc2UsIHJlbW92
ZSBgSWRgCisgICAgICAgICAgIGZyb20gdGhlIG5hbWVzIG9mIHtHZXQsIERlbGV0ZSwgSW59QnlJ
ZFZhcmlhbnQuIFRoZXNlIGFyZSB1c2VkICpiZWZvcmUqIEJ5VmFsIGhhcyBiZWVuIGNvbnZlcnRl
ZCB0byBCeUlkLgorCisgICAgICAgIDIuIFRoZSB7R2V0LCBEZWwsIElufUJ5S2luZCBlbnVtIGNs
YXNzZXMgc2hvdWxkbid0IHJlYWxseSBjYWxsIEJ5SWQgYE5vcm1hbGAgLS0gbGV0J3Mgc2F5IGBC
eUlkYCBleHBsaWNpdGx5LgorCisgICAgICAgIDMuIEJvbnVzOiBJbiBERkdCeXRlY29kZVBhcnNl
ciwgbW92ZSBzb21lICpTdGF0dXM6OmNvbXB1dGVGb3IgY2FsbHMgaW5zaWRlIHRoZSBjb25kaXRp
b25hbCB0aGF0IHVzZXMgdGhlbS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
U291cmNlcy50eHQ6CisgICAgICAgICogYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3BwOgorICAg
ICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6YXBwZW5kVmFyaWFudCk6CisgICAgICAgIChKU0M6
OkRlbGV0ZUJ5U3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFj
ayk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjp2aXNpdEFnZ3JlZ2F0ZUltcGwpOgor
ICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6bWFya0lmQ2hlYXApOgorICAgICAgICAqIGJ5
dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvRGVsZXRlQnlWYXJp
YW50LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxl
dGVCeUlkVmFyaWFudC5jcHAuCisgICAgICAgIChKU0M6OkRlbGV0ZUJ5VmFyaWFudDo6RGVsZXRl
QnlWYXJpYW50KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlWYXJpYW50Ojp+RGVsZXRlQnlWYXJp
YW50KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlWYXJpYW50OjpvcGVyYXRvcj0pOgorICAgICAg
ICAoSlNDOjpEZWxldGVCeVZhcmlhbnQ6OmF0dGVtcHRUb01lcmdlKToKKyAgICAgICAgKEpTQzo6
RGVsZXRlQnlWYXJpYW50Ojp3cml0ZXNTdHJ1Y3R1cmVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
RGVsZXRlQnlWYXJpYW50Ojp2aXNpdEFnZ3JlZ2F0ZUltcGwpOgorICAgICAgICAoSlNDOjpEZWxl
dGVCeVZhcmlhbnQ6Om1hcmtJZkNoZWFwKToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlWYXJpYW50
OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlWYXJpYW50OjpmaW5hbGl6ZSk6
CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5VmFyaWFudDo6ZHVtcEluQ29udGV4dCBjb25zdCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvRGVsZXRlQnlWYXJpYW50Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlJZFZhcmlhbnQuaC4KKyAgICAgICAgKEpT
Qzo6RGVsZXRlQnlWYXJpYW50OjpvdmVybGFwcyk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlT
dGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeVN0YXR1czo6YXBwZW5kVmFyaWFudCk6Cisg
ICAgICAgIChKU0M6OkdldEJ5U3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpT
Qzo6R2V0QnlTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNr
KToKKyAgICAgICAgKEpTQzo6R2V0QnlTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAoSlND
OjpHZXRCeVN0YXR1czo6bWVyZ2UpOgorICAgICAgICAoSlNDOjpHZXRCeVN0YXR1czo6dmlzaXRB
Z2dyZWdhdGVJbXBsKToKKyAgICAgICAgKEpTQzo6R2V0QnlTdGF0dXM6Om1hcmtJZkNoZWFwKToK
KyAgICAgICAgKEpTQzo6R2V0QnlTdGF0dXM6OmZpbmFsaXplKToKKyAgICAgICAgKiBieXRlY29k
ZS9HZXRCeVN0YXR1cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5VmFyaWFudC5jcHA6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQu
Y3BwLgorICAgICAgICAoSlNDOjpHZXRCeVZhcmlhbnQ6OkdldEJ5VmFyaWFudCk6CisgICAgICAg
IChKU0M6OkdldEJ5VmFyaWFudDo6fkdldEJ5VmFyaWFudCk6CisgICAgICAgIChKU0M6OkdldEJ5
VmFyaWFudDo6b3BlcmF0b3I9KToKKyAgICAgICAgKEpTQzo6R2V0QnlWYXJpYW50OjpjYW5NZXJn
ZUludHJpbnNpY1N0cnVjdHVyZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpHZXRCeVZhcmlhbnQ6
OmF0dGVtcHRUb01lcmdlKToKKyAgICAgICAgKEpTQzo6R2V0QnlWYXJpYW50Ojp2aXNpdEFnZ3Jl
Z2F0ZUltcGwpOgorICAgICAgICAoSlNDOjpHZXRCeVZhcmlhbnQ6Om1hcmtJZkNoZWFwKToKKyAg
ICAgICAgKEpTQzo6R2V0QnlWYXJpYW50OjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkdldEJ5
VmFyaWFudDo6ZHVtcCBjb25zdCk6CisgICAgICAgIChKU0M6OkdldEJ5VmFyaWFudDo6ZHVtcElu
Q29udGV4dCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlWYXJpYW50Lmg6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuaC4K
KyAgICAgICAgKEpTQzo6R2V0QnlWYXJpYW50OjpvdmVybGFwcyk6CisgICAgICAgICogYnl0ZWNv
ZGUvSW5CeVN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkluQnlTdGF0dXM6OmFwcGVuZFZhcmlh
bnQpOgorICAgICAgICAoSlNDOjpJbkJ5U3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0
RXhpdFNpdGVGZWVkYmFjayk6CisgICAgICAgIChKU0M6OkluQnlTdGF0dXM6Om1lcmdlKToKKyAg
ICAgICAgKEpTQzo6SW5CeVN0YXR1czo6bWFya0lmQ2hlYXApOgorICAgICAgICAoSlNDOjpJbkJ5
U3RhdHVzOjpmaW5hbGl6ZSk6CisgICAgICAgICogYnl0ZWNvZGUvSW5CeVN0YXR1cy5oOgorICAg
ICAgICAqIGJ5dGVjb2RlL0luQnlWYXJpYW50LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRWYXJpYW50LmNwcC4KKyAgICAgICAgKEpTQzo6SW5C
eVZhcmlhbnQ6OkluQnlWYXJpYW50KToKKyAgICAgICAgKEpTQzo6SW5CeVZhcmlhbnQ6OmF0dGVt
cHRUb01lcmdlKToKKyAgICAgICAgKEpTQzo6SW5CeVZhcmlhbnQ6Om1hcmtJZkNoZWFwKToKKyAg
ICAgICAgKEpTQzo6SW5CeVZhcmlhbnQ6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SW5CeVZh
cmlhbnQ6OmR1bXAgY29uc3QpOgorICAgICAgICAoSlNDOjpJbkJ5VmFyaWFudDo6ZHVtcEluQ29u
dGV4dCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvSW5CeVZhcmlhbnQuaDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRWYXJpYW50LmguCisgICAg
ICAgIChKU0M6OkluQnlWYXJpYW50OjpvdmVybGFwcyk6CisgICAgICAgICogYnl0ZWNvZGUvU3Ry
dWN0dXJlU3R1YkluZm8uY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6cmVz
ZXQpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAg
ICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0dGVyKToK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKToK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldFByaXZhdGVOYW1lQnlJZCk6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURlbGV0ZUJ5SWQpOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbkJ5SWQpOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcv
REZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50
Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFu
dEZvbGRpbmdQaGFzZTo6ZW1pdEdldEJ5T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpDb25z
dGFudEZvbGRpbmdQaGFzZTo6ZW1pdERlbGV0ZUJ5T2Zmc2V0KToKKyAgICAgICAgKiBkZmcvREZH
Tm9kZS5oOgorICAgICAgICAqIGRmZy9ERkdWYWxpZGF0ZS5jcHA6CisgICAgICAgICogZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVEZWxCeSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVEZWxldGVCeUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZURlbGV0ZUJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZU11bHRpRGVsZXRlQnlPZmZzZXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAgICAgKiBqaXQvSklU
T3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6
CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjphcHByb3ByaWF0ZU9w
dGltaXppbmdHZXRCeUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6YXBwcm9wcmlhdGVHZXRCeUZ1
bmN0aW9uKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVHZXRCeSk6CisgICAgICAgIChKU0M6OnJl
cGF0Y2hEZWxldGVCeSk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlSW5CeSk6CisgICAgICAgIChK
U0M6OnJlcGF0Y2hJbkJ5KToKKyAgICAgICAgKEpTQzo6cmVzZXRHZXRCeSk6CisgICAgICAgIChK
U0M6OnJlc2V0RGVsQnkpOgorICAgICAgICAoSlNDOjpyZXNldEluQnkpOgorICAgICAgICAqIGpp
dC9SZXBhdGNoLmg6CisKIDIwMjEtMDYtMDkgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29t
PgogCiAgICAgICAgIFNwZWN1bGF0aXZlIGJ1aWxkIGZpeCBmb3IgV2luMzIuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDJkZWMyNGM4YmI2Yi4uNTcxNGQ0NjA1N2NjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI3LDcgKzEyNyw3IEBACiAKIC8qIEJlZ2luIFBC
WEJ1aWxkRmlsZSBzZWN0aW9uICovCiAJCTBGMDEyMzMzMTk0NEVBMUIwMDg0M0EwQyAvKiBERkdW
YWx1ZVN0cmVuZ3RoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjAxMjMzMTE5NDRFQTFCMDA4NDNBMEMgLyogREZHVmFsdWVTdHJlbmd0aC5oICovOyB9
OwotCQkwRjAzMzJDNDE4QjAxNzYzMDA1Rjk3OUEgLyogR2V0QnlJZFZhcmlhbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMDMzMkMyMThCMDE3NjMw
MDVGOTc5QSAvKiBHZXRCeUlkVmFyaWFudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGMDMzMkM0MThCMDE3NjMwMDVGOTc5QSAvKiBHZXRCeVZh
cmlhbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MDMzMkMyMThCMDE3NjMwMDVGOTc5QSAvKiBHZXRCeVZhcmlhbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjAzMzJDNjE4QjUzRkE5MDA1Rjk3
OUEgLyogRlRMV2VpZ2h0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjAzMzJDNTE4QjUzRkE5MDA1Rjk3OUEgLyogRlRMV2VpZ2h0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwMzMyQzgxOEI1NDZF
QzAwNUY5NzlBIC8qIEZUTFdlaWdodGVkVGFyZ2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjAzMzJDNzE4QjU0NkVDMDA1Rjk3OUEgLyogRlRMV2Vp
Z2h0ZWRUYXJnZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRjA0Mzk2RTFCMDNEQzBCMDA5NTk4QjcgLyogREZHQ29tYmluZWRMaXZlbmVzcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwNDM5NkMx
QjAzREMwQjAwOTU5OEI3IC8qIERGR0NvbWJpbmVkTGl2ZW5lc3MuaCAqLzsgfTsKQEAgLTExODIs
NyArMTE4Miw3IEBACiAJCTcyNkI5MUIzMjY1ODE2NTMwMDhFNkY4MiAvKiBKSVRDb21waWxhdGlv
bk1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcy
NkI5MUFCMjY1ODE2NTMwMDhFNkY4MiAvKiBKSVRDb21waWxhdGlvbk1vZGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjZCOTFCNzI2NTgxNjUz
MDA4RTZGODIgLyogSklUUGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzI2QjkxQUYyNjU4MTY1MzAwOEU2RjgyIC8qIEpJVFBsYW4uaCAqLzsgfTsK
IAkJNzI2QjkxQkEyNjU4MjYzRDAwOEU2RjgyIC8qIEpJVENvbXBpbGF0aW9uS2V5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjZCOTFCODI2NTgyNjND
MDA4RTZGODIgLyogSklUQ29tcGlsYXRpb25LZXkuaCAqLzsgfTsKLQkJNzMxMUZBMzIyNDBEQjFE
MzAwM0Q0OERCIC8qIERlbGV0ZUJ5SWRWYXJpYW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MzExRkEzMTI0MERCMUQzMDAzRDQ4REIgLyogRGVsZXRl
QnlJZFZhcmlhbnQuaCAqLzsgfTsKKwkJNzMxMUZBMzIyNDBEQjFEMzAwM0Q0OERCIC8qIERlbGV0
ZUJ5VmFyaWFudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzMxMUZBMzEyNDBEQjFEMzAwM0Q0OERCIC8qIERlbGV0ZUJ5VmFyaWFudC5oICovOyB9Owog
CQk3MzRCNjU1NTIzRjVDMTA0MDBBMDY5RDEgLyogRGVsZXRlUHJvcGVydHlTbG90LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MzRCNjU1NDIzRjRBMzMx
MDBBMDY5RDEgLyogRGVsZXRlUHJvcGVydHlTbG90LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzNBRDA2MjkyM0ZGNjYyNjAwRjUzNTkzIC8qIERl
bGV0ZUJ5U3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3M0FEMDYyODIzRkY2NjI2MDBGNTM1OTMgLyogRGVsZXRlQnlTdGF0dXMuaCAqLzsgfTsK
IAkJNzNFMzc5OTQyMkUwRUY2NTAwOTMzNTY1IC8qIEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3M0UzNzk5MzIyRTBF
RjRGMDA5MzM1NjUgLyogQjNSZWR1Y2VMb29wU3RyZW5ndGguaCAqLzsgfTsKQEAgLTE0MDEsNyAr
MTQwMSw3IEBACiAJCUExRDc5MkZGMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0
Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExRDc5MkY5MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0
b3IuaCAqLzsgfTsKIAkJQTFENzkzMDExQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3Jt
YXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExRDc5MkZCMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
LmggKi87IH07CiAJCUEzMjFBQTZEMjYyNjM1OUIwMDIzQURBMiAvKiBJbnRsV29ya2Fyb3VuZC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMyMUFBNkMy
NjI2MzU5QjAwMjNBREEyIC8qIEludGxXb3JrYXJvdW5kLmggKi87IH07Ci0JCUEzODJDNTMxMjY2
NzExMUQwMDQyQ0Q5OSAvKiBJbkJ5SWRWYXJpYW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzMwNUZCMTIwQjBGNzg4MDBDRUI4MkIgLyogSW5CeUlk
VmFyaWFudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUEzODJDNTMxMjY2NzExMUQwMDQyQ0Q5OSAvKiBJbkJ5VmFyaWFudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzMDVGQjEyMEIwRjc4ODAwQ0VC
ODJCIC8qIEluQnlWYXJpYW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQTM4RDI1MEUyNTgwMEQ0NDAwNDJCRkREIC8qIEpTQXJyYXlCdWZmZXJQ
cm90b3R5cGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMzhEMjUwRDI1ODAwRDQzMDA0MkJGREQgLyogSlNBcnJheUJ1ZmZlclByb3RvdHlw
ZUlubGluZXMuaCAqLzsgfTsKIAkJQTM4RDVCRkMyNjY2RDNEQTAwQTEwOUE2IC8qIEluQnlTdGF0
dXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzOEQ1
QkZBMjY2NkQzREEwMEExMDlBNiAvKiBJbkJ5U3RhdHVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTNFRTg1NDMyNjI1MTRCMDAwRkM5QjhEIC8q
IEludGxXb3JrYXJvdW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEEzNzYxOTQwMjYyNTEyN0MwMENCQ0JBOSAvKiBJbnRsV29ya2Fyb3VuZC5jcHAg
Ki87IH07CkBAIC0yMzA1LDggKzIzMDUsOCBAQAogCQkwRjAxMjMzMDE5NDRFQTFCMDA4NDNBMEMg
LyogREZHVmFsdWVTdHJlbmd0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBERkdWYWx1ZVN0cmVuZ3RoLmNwcDsgcGF0aCA9IGRmZy9ERkdWYWx1ZVN0cmVuZ3RoLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwMTIzMzExOTQ0RUExQjAwODQzQTBD
IC8qIERGR1ZhbHVlU3RyZW5ndGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
REZHVmFsdWVTdHJlbmd0aC5oOyBwYXRoID0gZGZnL0RGR1ZhbHVlU3RyZW5ndGguaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwMzMyQkYxOEFERkFFMTAwNUY5NzlBIC8qIEV4aXRp
bmdKSVRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4aXRp
bmdKSVRUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEYwMzMyQzExOEIw
MTc2MzAwNUY5NzlBIC8qIEdldEJ5SWRWYXJpYW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEdldEJ5SWRWYXJpYW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMEYwMzMyQzIxOEIwMTc2MzAwNUY5NzlBIC8qIEdldEJ5SWRWYXJpYW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdldEJ5SWRWYXJpYW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMDMzMkMxMThCMDE3NjMwMDVGOTc5QSAvKiBHZXRCeVZh
cmlhbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2V0QnlWYXJp
YW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwMzMyQzIxOEIwMTc2MzAw
NUY5NzlBIC8qIEdldEJ5VmFyaWFudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHZXRCeVZhcmlhbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwMzMyQzUx
OEI1M0ZBOTAwNUY5NzlBIC8qIEZUTFdlaWdodC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBGVExXZWlnaHQuaDsgcGF0aCA9IGZ0bC9GVExXZWlnaHQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEYwMzMyQzcxOEI1NDZFQzAwNUY5NzlBIC8qIEZUTFdlaWdodGVk
VGFyZ2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTFdlaWdodGVkVGFy
Z2V0Lmg7IHBhdGggPSBmdGwvRlRMV2VpZ2h0ZWRUYXJnZXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEYwNDM5NkIxQjAzREMwQjAwOTU5OEI3IC8qIERGR0NvbWJpbmVkTGl2ZW5l
c3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQ29tYmluZWRM
aXZlbmVzcy5jcHA7IHBhdGggPSBkZmcvREZHQ29tYmluZWRMaXZlbmVzcy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MDYyLDggKzQwNjIsOCBAQAogCQk3MjZCOTFBRjI2NTgx
NjUzMDA4RTZGODIgLyogSklUUGxhbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKSVRQbGFuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNkI5MUI4MjY1ODI2
M0MwMDhFNkY4MiAvKiBKSVRDb21waWxhdGlvbktleS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKSVRDb21waWxhdGlvbktleS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MjZCOTFCOTI2NTgyNjNDMDA4RTZGODIgLyogSklUQ29tcGlsYXRpb25LZXkuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUQ29tcGlsYXRpb25LZXkuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MzExRkEzMTI0MERCMUQzMDAzRDQ4REIg
LyogRGVsZXRlQnlJZFZhcmlhbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVsZXRlQnlJZFZhcmlhbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzMxMUZBMzMyNDBEQjI0OTAwM0Q0OERC
IC8qIERlbGV0ZUJ5SWRWYXJpYW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlbGV0ZUJ5SWRW
YXJpYW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzMxMUZBMzEyNDBEQjFE
MzAwM0Q0OERCIC8qIERlbGV0ZUJ5VmFyaWFudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWxldGVCeVZh
cmlhbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzMxMUZBMzMyNDBEQjI0OTAw
M0Q0OERCIC8qIERlbGV0ZUJ5VmFyaWFudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWxldGVC
eVZhcmlhbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MzE5MEQ5NjI0MDA5
MzQ5MDBGODkxQzkgLyogRGVsZXRlQnlTdGF0dXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVs
ZXRlQnlTdGF0dXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MzRCNjU1NDIz
RjRBMzMxMDBBMDY5RDEgLyogRGVsZXRlUHJvcGVydHlTbG90LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERlbGV0ZVByb3BlcnR5U2xvdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3M0FEMDYyODIzRkY2NjI2MDBGNTM1OTMgLyogRGVsZXRlQnlTdGF0dXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRGVsZXRlQnlTdGF0dXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTUwNjIsOCArNTA2Miw4IEBACiAJCUUzMjgyQkI5MUZFOTMwQTMwMEVEQUY3MSAvKiBZ
YXJyRXJyb3JDb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFlh
cnJFcnJvckNvZGUuY3BwOyBwYXRoID0geWFyci9ZYXJyRXJyb3JDb2RlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMyODJCQkExRkU5MzBBNDAwRURBRjcxIC8qIFlhcnJFcnJv
ckNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyckVycm9yQ29kZS5o
OyBwYXRoID0geWFyci9ZYXJyRXJyb3JDb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzMkMzQzY4MjNFOTRDMUUwMEJDOTdDMCAvKiBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmxpbmtlZENvZGVCbG9ja0dl
bmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMzMwNUZCMDIwQjBGNzg3
MDBDRUI4MkIgLyogSW5CeUlkVmFyaWFudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbkJ5SWRWYXJpYW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRTMzMDVGQjEyMEIwRjc4ODAwQ0VCODJCIC8qIEluQnlJZFZhcmlhbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5CeUlkVmFyaWFudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFMzMwNUZCMDIwQjBGNzg3MDBDRUI4MkIgLyogSW5CeVZhcmlhbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5CeVZhcmlhbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzMwNUZCMTIwQjBGNzg4MDBDRUI4MkIgLyog
SW5CeVZhcmlhbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5CeVZhcmlh
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzMDk1REMyMzIxMEExNDAwRUI3
ODU2IC8qIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJbnRl
cm5hbEZpZWxkT2JqZWN0SW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzM0
Q0JCMjIxRkQ5NkE4MDAwRUIxNzggLyogUmVnRXhwR2xvYmFsRGF0YS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBHbG9iYWxEYXRhLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzNENCQjMyMUZEOTZBOTAwMEVCMTc4IC8qIFJlZ0V4cEds
b2JhbERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwR2xvYmFs
RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODUzNywxMCArODUzNywxMCBA
QAogCQkJCTBGQzcxMkREMTdDRDg3NzgwMDhDQzkzQyAvKiBEZWZlcnJlZENvbXBpbGF0aW9uQ2Fs
bGJhY2suaCAqLywKIAkJCQlGRTUwNjg2NjFBRTI1RTI4MDAwOURBQjcgLyogRGVmZXJyZWRTb3Vy
Y2VEdW1wLmNwcCAqLywKIAkJCQlGRTUwNjg2NDFBRTI0NjM5MDAwOURBQjcgLyogRGVmZXJyZWRT
b3VyY2VEdW1wLmggKi8sCi0JCQkJNzMxMUZBMzMyNDBEQjI0OTAwM0Q0OERCIC8qIERlbGV0ZUJ5
SWRWYXJpYW50LmNwcCAqLywKLQkJCQk3MzExRkEzMTI0MERCMUQzMDAzRDQ4REIgLyogRGVsZXRl
QnlJZFZhcmlhbnQuaCAqLywKIAkJCQk3MzE5MEQ5NjI0MDA5MzQ5MDBGODkxQzkgLyogRGVsZXRl
QnlTdGF0dXMuY3BwICovLAogCQkJCTczQUQwNjI4MjNGRjY2MjYwMEY1MzU5MyAvKiBEZWxldGVC
eVN0YXR1cy5oICovLAorCQkJCTczMTFGQTMzMjQwREIyNDkwMDNENDhEQiAvKiBEZWxldGVCeVZh
cmlhbnQuY3BwICovLAorCQkJCTczMTFGQTMxMjQwREIxRDMwMDNENDhEQiAvKiBEZWxldGVCeVZh
cmlhbnQuaCAqLywKIAkJCQkwRkJDMEFFNDE0OTZDN0MxMDBENEZCREQgLyogREZHRXhpdFByb2Zp
bGUuY3BwICovLAogCQkJCTBGQkMwQUU1MTQ5NkM3QzEwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmls
ZS5oICovLAogCQkJCTBGMkVCQkFBMURFREY5NEUwMDk5MDM2OSAvKiBEaXJlY3RFdmFsQ29kZUNh
Y2hlLmNwcCAqLywKQEAgLTg1NjgsMjEgKzg1NjgsMjEgQEAKIAkJCQkxNEFEOTExNjFEQ0E5N0ZE
MDAxNEY5RkUgLyogRnVuY3Rpb25Db2RlQmxvY2suY3BwICovLAogCQkJCTE0QUQ5MTA3MURDQTky
OTQwMDE0RjlGRSAvKiBGdW5jdGlvbkNvZGVCbG9jay5oICovLAogCQkJCTE0OThDQUQ1MjE0QkYz
NkQwMDcxMDg3OSAvKiBHZXRCeUlkTWV0YWRhdGEuaCAqLywKLQkJCQkwRjAzMzJDMTE4QjAxNzYz
MDA1Rjk3OUEgLyogR2V0QnlJZFZhcmlhbnQuY3BwICovLAotCQkJCTBGMDMzMkMyMThCMDE3NjMw
MDVGOTc5QSAvKiBHZXRCeUlkVmFyaWFudC5oICovLAogCQkJCTBGOTMzMjk1MTRDQTdEQzEwMDg1
RjNDNiAvKiBHZXRCeVN0YXR1cy5jcHAgKi8sCiAJCQkJMEY5MzMyOTYxNENBN0RDMTAwODVGM0M2
IC8qIEdldEJ5U3RhdHVzLmggKi8sCiAJCQkJNTIwRDk5RjAyMzg4Q0M3ODAwMDUwOUEzIC8qIEdl
dEJ5VmFsSGlzdG9yeS5oICovLAorCQkJCTBGMDMzMkMxMThCMDE3NjMwMDVGOTc5QSAvKiBHZXRC
eVZhcmlhbnQuY3BwICovLAorCQkJCTBGMDMzMkMyMThCMDE3NjMwMDVGOTc5QSAvKiBHZXRCeVZh
cmlhbnQuaCAqLywKIAkJCQkxNEFEOTEwODFEQ0E5Mjk0MDAxNEY5RkUgLyogR2xvYmFsQ29kZUJs
b2NrLmggKi8sCiAJCQkJMEYwQjgzQTgxNEJDRjU1RTAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmgg
Ki8sCiAJCQkJMEY0NEE3QUIyMEJGNjg1RTAwMjJCMTcxIC8qIElDU3RhdHVzTWFwLmNwcCAqLywK
IAkJCQkwRjQ0QTdBRjIwQkY2ODVGMDAyMkIxNzEgLyogSUNTdGF0dXNNYXAuaCAqLywKIAkJCQkw
RjQ0QTdCNTIwQzBCRTNGMDAyMkIxNzEgLyogSUNTdGF0dXNVdGlscy5jcHAgKi8sCiAJCQkJMEZC
Mzk5QkQyMEFGNkIzODAwMTdFMjEzIC8qIElDU3RhdHVzVXRpbHMuaCAqLywKLQkJCQlFMzMwNUZC
MDIwQjBGNzg3MDBDRUI4MkIgLyogSW5CeUlkVmFyaWFudC5jcHAgKi8sCi0JCQkJRTMzMDVGQjEy
MEIwRjc4ODAwQ0VCODJCIC8qIEluQnlJZFZhcmlhbnQuaCAqLywKIAkJCQlBMzhENUJGOTI2NjZE
M0RBMDBBMTA5QTYgLyogSW5CeVN0YXR1cy5jcHAgKi8sCiAJCQkJQTM4RDVCRkEyNjY2RDNEQTAw
QTEwOUE2IC8qIEluQnlTdGF0dXMuaCAqLywKKwkJCQlFMzMwNUZCMDIwQjBGNzg3MDBDRUI4MkIg
LyogSW5CeVZhcmlhbnQuY3BwICovLAorCQkJCUUzMzA1RkIxMjBCMEY3ODgwMENFQjgyQiAvKiBJ
bkJ5VmFyaWFudC5oICovLAogCQkJCTc5MDVCQjY2MUQxMjA1MEUwMDE5RkU1NyAvKiBJbmxpbmVB
Y2Nlc3MuY3BwICovLAogCQkJCTc5MDVCQjY3MUQxMjA1MEUwMDE5RkU1NyAvKiBJbmxpbmVBY2Nl
c3MuaCAqLywKIAkJCQkxNDhBN0JFRDFCODI5NzVBMDAyRDkxNTcgLyogSW5saW5lQ2FsbEZyYW1l
LmNwcCAqLywKQEAgLTk1MjgsOCArOTUyOCw4IEBACiAJCQkJRkU5RjNGQzgyNjE2M0NBOTAwNjlF
ODlGIC8qIERlZmVyVGVybWluYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ3M0RBNEE0NzY0
QzQ1RkU4NzFCMDQ4NSAvKiBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGQkI3M0JCMURFRjg2NDUwMDJDMDA5RSAvKiBEZWxldGVBbGxDb2RlRWZmb3J0Lmgg
aW4gSGVhZGVycyAqLywKLQkJCQk3MzExRkEzMjI0MERCMUQzMDAzRDQ4REIgLyogRGVsZXRlQnlJ
ZFZhcmlhbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTczQUQwNjI5MjNGRjY2MjYwMEY1MzU5MyAv
KiBEZWxldGVCeVN0YXR1cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzMxMUZBMzIyNDBEQjFEMzAw
M0Q0OERCIC8qIERlbGV0ZUJ5VmFyaWFudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzM0QjY1NTUy
M0Y1QzEwNDAwQTA2OUQxIC8qIERlbGV0ZVByb3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY5NjMwM0MxRDQxOTJDRDAwNTYwOUQ5IC8qIERlc3RydWN0aW9uTW9kZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTc3QTQyM0UxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Fic3RyYWN0SGVhcC5o
IGluIEhlYWRlcnMgKi8sCkBAIC05ODgwLDkgKzk4ODAsOSBAQAogCQkJCTBGMkI2NkUwMTdCNkI1
QUIwMEE3QUUzRiAvKiBHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMkI2NkUxMTdCNkI1QUIwMEE3QUUzRiAvKiBHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDk4Q0FENjIxNEJGMzZEMDA3MTA4NzkgLyogR2V0QnlJ
ZE1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjAzMzJDNDE4QjAxNzYzMDA1Rjk3OUEg
LyogR2V0QnlJZFZhcmlhbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTMzMkEwMTRDQTdEQ0Qw
MDg1RjNDNiAvKiBHZXRCeVN0YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTIwRDk5RjEyMzg4
Q0M4MTAwMDUwOUEzIC8qIEdldEJ5VmFsSGlzdG9yeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYw
MzMyQzQxOEIwMTc2MzAwNUY5NzlBIC8qIEdldEJ5VmFyaWFudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNzk2NDY1NkExQjk1MkZGMDAwMzA1OUVFIC8qIEdldFB1dEluZm8uaCBpbiBIZWFkZXJzICov
LAogCQkJCTg0MzIzRTdBMjVENUVDM0IwMEY5Nzc3NiAvKiBHZXR0ZXJTZXR0ZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUzNEUwMzU4MUU1M0JGMkYwMDIxM0Y2NCAvKiBHZXR0ZXJTZXR0ZXJBY2Nl
c3NDYXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTk5MjEsOCArOTkyMSw4IEBACiAJCQkJQkMxOEM0
MEYwRTE2RjVDRDAwQjM0NDYwIC8qIElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2
MDZEREVBMThEQTQ0QUIwMEEzODNEMCAvKiBJZGVudGlmaWVySW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTVGRDAwNzYxODlCMDM4QzAwNjMzMjMxIC8qIElkZW50aWZpZXJzRmFjdG9yeS5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJQTM4MkM1MzEyNjY3MTExRDAwNDJDRDk5IC8qIEluQnlJZFZh
cmlhbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUEzOEQ1QkZDMjY2NkQzREEwMEExMDlBNiAvKiBJ
bkJ5U3RhdHVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMzgyQzUzMTI2NjcxMTFEMDA0MkNEOTkg
LyogSW5CeVZhcmlhbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyNUY4QkNFMTU3NTQ0QTkwMDI0
NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzk5
MTVFRDhFNDYwMEYxNjdCMiAvKiBJbmRleGluZ0hlYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZCN0YzOUExNUVEOEU0NjAwRjE2N0IyIC8qIEluZGV4aW5nSGVhZGVySW5saW5lcy5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggODg0YjhmOWU4YWQ5Li40
MDI3MjJjYTRkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4
dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTIyMyw3ICsyMjMs
NyBAQCBieXRlY29kZS9EYXRhRm9ybWF0LmNwcAogYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlv
bkNhbGxiYWNrLmNwcAogYnl0ZWNvZGUvRGVmZXJyZWRTb3VyY2VEdW1wLmNwcAogYnl0ZWNvZGUv
RGVsZXRlQnlTdGF0dXMuY3BwCi1ieXRlY29kZS9EZWxldGVCeUlkVmFyaWFudC5jcHAKK2J5dGVj
b2RlL0RlbGV0ZUJ5VmFyaWFudC5jcHAKIGJ5dGVjb2RlL0RpcmVjdEV2YWxDb2RlQ2FjaGUuY3Bw
CiBieXRlY29kZS9FdmFsQ29kZUJsb2NrLmNwcAogYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZS5jcHAKQEAgLTIzNSwxMiArMjM1LDEyIEBAIGJ5dGVjb2RlL0V4aXRpbmdKSVRUeXBl
LmNwcAogYnl0ZWNvZGUvRnVsbENvZGVPcmlnaW4uY3BwCiBieXRlY29kZS9GdW5jdGlvbkNvZGVC
bG9jay5jcHAKIGJ5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcAotYnl0ZWNvZGUvR2V0QnlJZFZhcmlh
bnQuY3BwCitieXRlY29kZS9HZXRCeVZhcmlhbnQuY3BwCiBieXRlY29kZS9HZXR0ZXJTZXR0ZXJB
Y2Nlc3NDYXNlLmNwcAogYnl0ZWNvZGUvSUNTdGF0dXNNYXAuY3BwCiBieXRlY29kZS9JQ1N0YXR1
c1V0aWxzLmNwcAogYnl0ZWNvZGUvSW5CeVN0YXR1cy5jcHAKLWJ5dGVjb2RlL0luQnlJZFZhcmlh
bnQuY3BwCitieXRlY29kZS9JbkJ5VmFyaWFudC5jcHAKIGJ5dGVjb2RlL0lubGluZUFjY2Vzcy5j
cHAKIGJ5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5jcHAKIGJ5dGVjb2RlL0lubGluZUNhbGxGcmFt
ZVNldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxl
dGVCeVN0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlT
dGF0dXMuY3BwCmluZGV4IDcyMTZmNGE0MGIyMC4uZTFiODQzY2I1OTVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeVN0YXR1cy5jcHAKQEAgLTM1LDcg
KzM1LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWJvb2wgRGVsZXRlQnlTdGF0dXM6OmFwcGVu
ZFZhcmlhbnQoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIHZhcmlhbnQpCitib29sIERlbGV0ZUJ5
U3RhdHVzOjphcHBlbmRWYXJpYW50KGNvbnN0IERlbGV0ZUJ5VmFyaWFudCYgdmFyaWFudCkKIHsK
ICAgICByZXR1cm4gYXBwZW5kSUNTdGF0dXNWYXJpYW50KG1fdmFyaWFudHMsIHZhcmlhbnQpOwog
fQpAQCAtMTExLDcgKzExMSw3IEBAIERlbGV0ZUJ5U3RhdHVzIERlbGV0ZUJ5U3RhdHVzOjpjb21w
dXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjaygKICAgICAgICAgICAgIHN3aXRj
aCAoYWNjZXNzLnR5cGUoKSkgewogICAgICAgICAgICAgY2FzZSBBY2Nlc3NDYXNlOjpEZWxldGVN
aXNzOgogICAgICAgICAgICAgY2FzZSBBY2Nlc3NDYXNlOjpEZWxldGVOb25Db25maWd1cmFibGU6
IHsKLSAgICAgICAgICAgICAgICBEZWxldGVCeUlkVmFyaWFudCB2YXJpYW50KGFjY2Vzcy5pZGVu
dGlmaWVyKCksIGFjY2Vzcy50eXBlKCkgPT0gQWNjZXNzQ2FzZTo6RGVsZXRlTWlzcyA/IHRydWUg
OiBmYWxzZSwgc3RydWN0dXJlLCBudWxscHRyLCBpbnZhbGlkT2Zmc2V0KTsKKyAgICAgICAgICAg
ICAgICBEZWxldGVCeVZhcmlhbnQgdmFyaWFudChhY2Nlc3MuaWRlbnRpZmllcigpLCBhY2Nlc3Mu
dHlwZSgpID09IEFjY2Vzc0Nhc2U6OkRlbGV0ZU1pc3MgPyB0cnVlIDogZmFsc2UsIHN0cnVjdHVy
ZSwgbnVsbHB0ciwgaW52YWxpZE9mZnNldCk7CiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQu
YXBwZW5kVmFyaWFudCh2YXJpYW50KSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERlbGV0
ZUJ5U3RhdHVzKEpTQzo6c2xvd1ZlcnNpb24oc3VtbWFyeSksICpzdHViSW5mbyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CkBAIC0xMjIsNyArMTIyLDcgQEAgRGVsZXRlQnlTdGF0dXMgRGVsZXRl
QnlTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKAogICAg
ICAgICAgICAgICAgIGlmICghbmV3U3RydWN0dXJlKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gRGVsZXRlQnlTdGF0dXMoSlNDOjpzbG93VmVyc2lvbihzdW1tYXJ5KSwgKnN0dWJJbmZvKTsK
ICAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKG9mZnNldCwgb2Zmc2V0ID09IGFjY2Vzcy5v
ZmZzZXQoKSk7ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIERlbGV0ZUJ5SWRWYXJp
YW50IHZhcmlhbnQoYWNjZXNzLmlkZW50aWZpZXIoKSwgdHJ1ZSwgc3RydWN0dXJlLCBuZXdTdHJ1
Y3R1cmUsIGFjY2Vzcy5vZmZzZXQoKSk7CisgICAgICAgICAgICAgICAgRGVsZXRlQnlWYXJpYW50
IHZhcmlhbnQoYWNjZXNzLmlkZW50aWZpZXIoKSwgdHJ1ZSwgc3RydWN0dXJlLCBuZXdTdHJ1Y3R1
cmUsIGFjY2Vzcy5vZmZzZXQoKSk7CiAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5hcHBl
bmRWYXJpYW50KHZhcmlhbnQpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gRGVsZXRlQnlT
dGF0dXMoSlNDOjpzbG93VmVyc2lvbihzdW1tYXJ5KSwgKnN0dWJJbmZvKTsKQEAgLTI1MSw3ICsy
NTEsNyBAQCBDYWNoZWFibGVJZGVudGlmaWVyIERlbGV0ZUJ5U3RhdHVzOjpzaW5nbGVJZGVudGlm
aWVyKCkgY29uc3QKIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+CiB2b2lkIERlbGV0ZUJ5U3Rh
dHVzOjp2aXNpdEFnZ3JlZ2F0ZUltcGwoVmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBmb3IgKERl
bGV0ZUJ5SWRWYXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykKKyAgICBmb3IgKERlbGV0ZUJ5
VmFyaWFudCYgdmFyaWFudCA6IG1fdmFyaWFudHMpCiAgICAgICAgIHZhcmlhbnQudmlzaXRBZ2dy
ZWdhdGUodmlzaXRvcik7CiB9CiAKQEAgLTI2MCw3ICsyNjAsNyBAQCBERUZJTkVfVklTSVRfQUdH
UkVHQVRFKERlbGV0ZUJ5U3RhdHVzKTsKIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+CiB2b2lk
IERlbGV0ZUJ5U3RhdHVzOjptYXJrSWZDaGVhcChWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIGZv
ciAoRGVsZXRlQnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKQorICAgIGZvciAoRGVs
ZXRlQnlWYXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykKICAgICAgICAgdmFyaWFudC5tYXJr
SWZDaGVhcCh2aXNpdG9yKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvRGVsZXRlQnlTdGF0dXMuaAppbmRleCA1YmE4MDNhYTk3N2YuLjM4OGFkYmQyN2I3MiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmgKQEAg
LTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgogI2luY2x1ZGUgIkNv
ZGVPcmlnaW4uaCIKICNpbmNsdWRlICJDb25jdXJyZW50SlNMb2NrLmgiCi0jaW5jbHVkZSAiRGVs
ZXRlQnlJZFZhcmlhbnQuaCIKKyNpbmNsdWRlICJEZWxldGVCeVZhcmlhbnQuaCIKICNpbmNsdWRl
ICJFeGl0RmxhZy5oIgogI2luY2x1ZGUgIklDU3RhdHVzTWFwLmgiCiAjaW5jbHVkZSAiU3R1Yklu
Zm9TdW1tYXJ5LmgiCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICBib29sIG9wZXJhdG9y
ISgpIGNvbnN0IHsgcmV0dXJuICFpc1NldCgpOyB9CiAgICAgYm9vbCBvYnNlcnZlZFNsb3dQYXRo
KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBPYnNlcnZlZFRha2VzU2xvd1BhdGg7IH0KICAg
ICBib29sIGlzU2ltcGxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBTaW1wbGU7IH0KLSAg
ICBjb25zdCBWZWN0b3I8RGVsZXRlQnlJZFZhcmlhbnQsIDE+JiB2YXJpYW50cygpIHsgcmV0dXJu
IG1fdmFyaWFudHM7IH0KKyAgICBjb25zdCBWZWN0b3I8RGVsZXRlQnlWYXJpYW50LCAxPiYgdmFy
aWFudHMoKSB7IHJldHVybiBtX3ZhcmlhbnRzOyB9CiAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBz
aW5nbGVJZGVudGlmaWVyKCkgY29uc3Q7CiAKICAgICBEZWxldGVCeVN0YXR1cyBzbG93VmVyc2lv
bigpIGNvbnN0OwpAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVmlzaXRvcj4gdm9pZCBtYXJrSWZDaGVhcChWaXNpdG9yJik7CiAgICAgYm9vbCBmaW5hbGl6
ZShWTSYpOwogCi0gICAgYm9vbCBhcHBlbmRWYXJpYW50KGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50
Jik7CisgICAgYm9vbCBhcHBlbmRWYXJpYW50KGNvbnN0IERlbGV0ZUJ5VmFyaWFudCYpOwogICAg
IHZvaWQgc2hyaW5rVG9GaXQoKTsKIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0
OwpAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNvbnN0IENvbmN1cnJlbnRK
U0xvY2tlciYsIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qKTsK
ICNlbmRpZgogCi0gICAgVmVjdG9yPERlbGV0ZUJ5SWRWYXJpYW50LCAxPiBtX3ZhcmlhbnRzOwor
ICAgIFZlY3RvcjxEZWxldGVCeVZhcmlhbnQsIDE+IG1fdmFyaWFudHM7CiAgICAgU3RhdGUgbV9z
dGF0ZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9E
ZWxldGVCeUlkVmFyaWFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVs
ZXRlQnlWYXJpYW50LmNwcApzaW1pbGFyaXR5IGluZGV4IDc2JQpyZW5hbWUgZnJvbSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlJZFZhcmlhbnQuY3BwCnJlbmFtZSB0byBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlWYXJpYW50LmNwcAppbmRleCBj
NmVjYzM5MGRjNjQuLmFkNWU0YmExZGFmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0RlbGV0ZUJ5SWRWYXJpYW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlWYXJpYW50LmNwcApAQCAtMjQsMTQgKzI0LDEzIEBACiAg
Ki8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRlbGV0ZUJ5SWRWYXJpYW50Lmgi
CisjaW5jbHVkZSAiRGVsZXRlQnlWYXJpYW50LmgiCiAKICNpbmNsdWRlICJDYWNoZWFibGVJZGVu
dGlmaWVySW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAotRGVsZXRlQnlJZFZhcmlhbnQ6
OkRlbGV0ZUJ5SWRWYXJpYW50KENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCBy
ZXN1bHQsCi0gICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0
dXJlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCitEZWxldGVCeVZhcmlhbnQ6OkRlbGV0ZUJ5VmFy
aWFudChDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgcmVzdWx0LCBTdHJ1Y3R1
cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCkKICAgICA6IG1fcmVzdWx0KHJlc3VsdCkKICAgICAsIG1fb2xkU3RydWN0dXJlKG9s
ZFN0cnVjdHVyZSkKICAgICAsIG1fbmV3U3RydWN0dXJlKG5ld1N0cnVjdHVyZSkKQEAgLTQ1LDE0
ICs0NCwxNCBAQCBEZWxldGVCeUlkVmFyaWFudDo6RGVsZXRlQnlJZFZhcmlhbnQoQ2FjaGVhYmxl
SWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIHJlc3VsdAogICAgICAgICBBU1NFUlQobmV3U3Ry
dWN0dXJlKTsKIH0KIAotRGVsZXRlQnlJZFZhcmlhbnQ6On5EZWxldGVCeUlkVmFyaWFudCgpIHsg
fQorRGVsZXRlQnlWYXJpYW50Ojp+RGVsZXRlQnlWYXJpYW50KCkgeyB9CiAKLURlbGV0ZUJ5SWRW
YXJpYW50OjpEZWxldGVCeUlkVmFyaWFudChjb25zdCBEZWxldGVCeUlkVmFyaWFudCYgb3RoZXIp
CitEZWxldGVCeVZhcmlhbnQ6OkRlbGV0ZUJ5VmFyaWFudChjb25zdCBEZWxldGVCeVZhcmlhbnQm
IG90aGVyKQogewogICAgICp0aGlzID0gb3RoZXI7CiB9CiAKLURlbGV0ZUJ5SWRWYXJpYW50JiBE
ZWxldGVCeUlkVmFyaWFudDo6b3BlcmF0b3I9KGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50JiBvdGhl
cikKK0RlbGV0ZUJ5VmFyaWFudCYgRGVsZXRlQnlWYXJpYW50OjpvcGVyYXRvcj0oY29uc3QgRGVs
ZXRlQnlWYXJpYW50JiBvdGhlcikKIHsKICAgICBtX2lkZW50aWZpZXIgPSBvdGhlci5tX2lkZW50
aWZpZXI7CiAgICAgbV9yZXN1bHQgPSBvdGhlci5tX3Jlc3VsdDsKQEAgLTYyLDcgKzYxLDcgQEAg
RGVsZXRlQnlJZFZhcmlhbnQmIERlbGV0ZUJ5SWRWYXJpYW50OjpvcGVyYXRvcj0oY29uc3QgRGVs
ZXRlQnlJZFZhcmlhbnQmIG90aGVyKQogICAgIHJldHVybiAqdGhpczsKIH0KIAotYm9vbCBEZWxl
dGVCeUlkVmFyaWFudDo6YXR0ZW1wdFRvTWVyZ2UoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIG90
aGVyKQorYm9vbCBEZWxldGVCeVZhcmlhbnQ6OmF0dGVtcHRUb01lcmdlKGNvbnN0IERlbGV0ZUJ5
VmFyaWFudCYgb3RoZXIpCiB7CiAgICAgaWYgKCEhbV9pZGVudGlmaWVyICE9ICEhb3RoZXIubV9p
ZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC04MywyMSArODIsMjEgQEAgYm9v
bCBEZWxldGVCeUlkVmFyaWFudDo6YXR0ZW1wdFRvTWVyZ2UoY29uc3QgRGVsZXRlQnlJZFZhcmlh
bnQmIG90aGVyKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIERlbGV0ZUJ5SWRWYXJpYW50
Ojp3cml0ZXNTdHJ1Y3R1cmVzKCkgY29uc3QKK2Jvb2wgRGVsZXRlQnlWYXJpYW50Ojp3cml0ZXNT
dHJ1Y3R1cmVzKCkgY29uc3QKIHsKICAgICByZXR1cm4gISFuZXdTdHJ1Y3R1cmUoKTsKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KLXZvaWQgRGVsZXRlQnlJZFZhcmlhbnQ6OnZpc2l0
QWdncmVnYXRlSW1wbChWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBEZWxldGVCeVZhcmlhbnQ6OnZp
c2l0QWdncmVnYXRlSW1wbChWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIG1faWRlbnRpZmllci52
aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKIH0KIAotREVGSU5FX1ZJU0lUX0FHR1JFR0FURShEZWxl
dGVCeUlkVmFyaWFudCk7CitERUZJTkVfVklTSVRfQUdHUkVHQVRFKERlbGV0ZUJ5VmFyaWFudCk7
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+Ci12b2lkIERlbGV0ZUJ5SWRWYXJpYW50Ojpt
YXJrSWZDaGVhcChWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBEZWxldGVCeVZhcmlhbnQ6Om1hcmtJ
ZkNoZWFwKFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgaWYgKG1fb2xkU3RydWN0dXJlKQogICAg
ICAgICBtX29sZFN0cnVjdHVyZS0+bWFya0lmQ2hlYXAodmlzaXRvcik7CkBAIC0xMDUsMTUgKzEw
NCwxNSBAQCB2b2lkIERlbGV0ZUJ5SWRWYXJpYW50OjptYXJrSWZDaGVhcChWaXNpdG9yJiB2aXNp
dG9yKQogICAgICAgICBtX25ld1N0cnVjdHVyZS0+bWFya0lmQ2hlYXAodmlzaXRvcik7CiB9CiAK
LXRlbXBsYXRlIHZvaWQgRGVsZXRlQnlJZFZhcmlhbnQ6Om1hcmtJZkNoZWFwKEFic3RyYWN0U2xv
dFZpc2l0b3ImKTsKLXRlbXBsYXRlIHZvaWQgRGVsZXRlQnlJZFZhcmlhbnQ6Om1hcmtJZkNoZWFw
KFNsb3RWaXNpdG9yJik7Cit0ZW1wbGF0ZSB2b2lkIERlbGV0ZUJ5VmFyaWFudDo6bWFya0lmQ2hl
YXAoQWJzdHJhY3RTbG90VmlzaXRvciYpOwordGVtcGxhdGUgdm9pZCBEZWxldGVCeVZhcmlhbnQ6
Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7CiAKLXZvaWQgRGVsZXRlQnlJZFZhcmlhbnQ6OmR1
bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3ZvaWQgRGVsZXRlQnlWYXJpYW50OjpkdW1wKFBy
aW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgZHVtcEluQ29udGV4dChvdXQsIG51bGxwdHIp
OwogfQogCi1ib29sIERlbGV0ZUJ5SWRWYXJpYW50OjpmaW5hbGl6ZShWTSYgdm0pCitib29sIERl
bGV0ZUJ5VmFyaWFudDo6ZmluYWxpemUoVk0mIHZtKQogewogICAgIGlmICghdm0uaGVhcC5pc01h
cmtlZChtX29sZFN0cnVjdHVyZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEyMiw3ICsx
MjEsNyBAQCBib29sIERlbGV0ZUJ5SWRWYXJpYW50OjpmaW5hbGl6ZShWTSYgdm0pCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgRGVsZXRlQnlJZFZhcmlhbnQ6OmR1bXBJbkNvbnRleHQoUHJp
bnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqKSBjb25zdAordm9pZCBEZWxldGVCeVZhcmlhbnQ6
OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqKSBjb25zdAogewog
ICAgIG91dC5wcmludCgiPCIpOwogICAgIG91dC5wcmludCgiaWQ9JyIsIG1faWRlbnRpZmllciwg
IicsIHJlc3VsdD0iLCBtX3Jlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvRGVsZXRlQnlJZFZhcmlhbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9EZWxldGVCeVZhcmlhbnQuaApzaW1pbGFyaXR5IGluZGV4IDkwJQpyZW5hbWUgZnJv
bSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlJZFZhcmlhbnQuaApyZW5h
bWUgdG8gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5VmFyaWFudC5oCmlu
ZGV4IDA4Njc3NTQ2OWRjYS4uZTIzNjQ5MjIwZTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlJZFZhcmlhbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlWYXJpYW50LmgKQEAgLTM4LDE3ICszOCwxNyBAQCBj
bGFzcyBDYWxsTGlua1N0YXR1czsKIGNsYXNzIERlbGV0ZUJ5U3RhdHVzOwogc3RydWN0IER1bXBD
b250ZXh0OwogCi1jbGFzcyBEZWxldGVCeUlkVmFyaWFudCB7CitjbGFzcyBEZWxldGVCeVZhcmlh
bnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIERlbGV0ZUJ5
SWRWYXJpYW50KAorICAgIERlbGV0ZUJ5VmFyaWFudCgKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRp
ZmllciwgYm9vbCByZXN1bHQsCiAgICAgICAgIFN0cnVjdHVyZSogb2xkU3RydWN1dHJlLCBTdHJ1
Y3R1cmUqIG5ld1N0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQpOwogCi0gICAgfkRlbGV0ZUJ5SWRW
YXJpYW50KCk7CisgICAgfkRlbGV0ZUJ5VmFyaWFudCgpOwogCi0gICAgRGVsZXRlQnlJZFZhcmlh
bnQoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmKTsKLSAgICBEZWxldGVCeUlkVmFyaWFudCYgb3Bl
cmF0b3I9KGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50Jik7CisgICAgRGVsZXRlQnlWYXJpYW50KGNv
bnN0IERlbGV0ZUJ5VmFyaWFudCYpOworICAgIERlbGV0ZUJ5VmFyaWFudCYgb3BlcmF0b3I9KGNv
bnN0IERlbGV0ZUJ5VmFyaWFudCYpOwogCiAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX29sZFN0cnVjdHVyZTsgfQogICAgIFN0cnVjdHVyZSogbmV3U3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9uZXdTdHJ1Y3R1cmU7IH0KQEAgLTU5LDcgKzU5LDcgQEAg
cHVibGljOgogCiAgICAgYm9vbCBpc1Byb3BlcnR5VW5zZXQoKSBjb25zdCB7IHJldHVybiBvZmZz
ZXQoKSA9PSBpbnZhbGlkT2Zmc2V0OyB9CiAKLSAgICBib29sIGF0dGVtcHRUb01lcmdlKGNvbnN0
IERlbGV0ZUJ5SWRWYXJpYW50JiBvdGhlcik7CisgICAgYm9vbCBhdHRlbXB0VG9NZXJnZShjb25z
dCBEZWxldGVCeVZhcmlhbnQmIG90aGVyKTsKIAogICAgIERFQ0xBUkVfVklTSVRfQUdHUkVHQVRF
OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+IHZvaWQgbWFya0lmQ2hlYXAoVmlzaXRv
ciYpOwpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAKICAgICBDYWNoZWFibGVJZGVudGlmaWVy
IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KIAotICAgIGJvb2wg
b3ZlcmxhcHMoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIG90aGVyKQorICAgIGJvb2wgb3Zlcmxh
cHMoY29uc3QgRGVsZXRlQnlWYXJpYW50JiBvdGhlcikKICAgICB7CiAgICAgICAgIGlmICghIW1f
aWRlbnRpZmllciAhPSAhIW90aGVyLm1faWRlbnRpZmllcikKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3Rh
dHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAK
aW5kZXggZmFlYjM4YzFhZTFhLi4yYTI0NGU1YzAxYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcApAQCAtNDAsNyArNDAsNyBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAotYm9vbCBHZXRCeVN0YXR1czo6YXBwZW5kVmFyaWFudChjb25zdCBHZXRC
eUlkVmFyaWFudCYgdmFyaWFudCkKK2Jvb2wgR2V0QnlTdGF0dXM6OmFwcGVuZFZhcmlhbnQoY29u
c3QgR2V0QnlWYXJpYW50JiB2YXJpYW50KQogewogICAgIHJldHVybiBhcHBlbmRJQ1N0YXR1c1Zh
cmlhbnQobV92YXJpYW50cywgdmFyaWFudCk7CiB9CkBAIC0xNDAsNyArMTQwLDcgQEAgR2V0QnlT
dGF0dXMgR2V0QnlTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJs
b2NrLCBCeXRlY29kZUluZGUKICAgICAgICAgcmV0dXJuIEdldEJ5U3RhdHVzKE5vSW5mb3JtYXRp
b24sIGZhbHNlKTsKIAogICAgIEdldEJ5U3RhdHVzIHJlc3VsdChTaW1wbGUsIGZhbHNlKTsKLSAg
ICByZXN1bHQuYXBwZW5kVmFyaWFudChHZXRCeUlkVmFyaWFudChudWxscHRyLCBTdHJ1Y3R1cmVT
ZXQoc3RydWN0dXJlKSwgb2Zmc2V0KSk7CisgICAgcmVzdWx0LmFwcGVuZFZhcmlhbnQoR2V0QnlW
YXJpYW50KG51bGxwdHIsIFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpLCBvZmZzZXQpKTsKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yMTksNyArMjE5LDcgQEAgR2V0QnlTdGF0dXMgR2V0QnlT
dGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKAogICAgICAg
ICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBzdHViSW5mby0+aWRlbnRpZmllcigp
OwogICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gaWRlbnRpZmllci51aWQoKTsKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQodWlkKTsKLSAgICAgICAgR2V0QnlJZFZhcmlhbnQgdmFyaWFu
dChXVEZNb3ZlKGlkZW50aWZpZXIpKTsKKyAgICAgICAgR2V0QnlWYXJpYW50IHZhcmlhbnQoV1RG
TW92ZShpZGVudGlmaWVyKSk7CiAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgICAg
IHZhcmlhbnQubV9vZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSh1aWQsIGF0dHJp
YnV0ZXMpOwogICAgICAgICBpZiAoIWlzVmFsaWRPZmZzZXQodmFyaWFudC5tX29mZnNldCkpCkBA
IC0yNjMsNyArMjYzLDcgQEAgR2V0QnlTdGF0dXMgR2V0QnlTdGF0dXM6OmNvbXB1dGVGb3JTdHVi
SW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKAogICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBhY2Nlc3Muc3RydWN0dXJlKCk7CiAgICAgICAgICAgICBpZiAoIXN0cnVjdHVyZSkg
ewogICAgICAgICAgICAgICAgIC8vIFRoZSBudWxsIHN0cnVjdHVyZSBjYXNlcyBhcmlzZSBkdWUg
dG8gYXJyYXkubGVuZ3RoIGFuZCBzdHJpbmcubGVuZ3RoLiBXZSBoYXZlIG5vIHdheQotICAgICAg
ICAgICAgICAgIC8vIG9mIGNyZWF0aW5nIGEgR2V0QnlJZFZhcmlhbnQgZm9yIHRob3NlLCBhbmQg
d2UgZG9uJ3QgcmVhbGx5IGhhdmUgdG8gc2luY2UgdGhlIERGRworICAgICAgICAgICAgICAgIC8v
IG9mIGNyZWF0aW5nIGEgR2V0QnlWYXJpYW50IGZvciB0aG9zZSwgYW5kIHdlIGRvbid0IHJlYWxs
eSBoYXZlIHRvIHNpbmNlIHRoZSBERkcKICAgICAgICAgICAgICAgICAvLyBoYW5kbGVzIHRob3Nl
IGNhc2VzIGluIEZpeHVwUGhhc2UgdXNpbmcgdmFsdWUgcHJvZmlsaW5nLiBUaGF0J3MgYSBiaXQg
YXdrd2FyZCAtIHdlCiAgICAgICAgICAgICAgICAgLy8gc2hvdWxkbid0IGhhdmUgdG8gdXNlIHZh
bHVlIHByb2ZpbGluZyB0byBkaXNjb3ZlciBzb21ldGhpbmcgdGhhdCB0aGUgQWNjZXNzQ2FzZQog
ICAgICAgICAgICAgICAgIC8vIGNvdWxkIGhhdmUgdG9sZCB1cy4gQnV0LCBpdCB3b3JrcyB3ZWxs
IGVub3VnaC4gU28sIG91ciBvbmx5IGNvbmNlcm4gaGVyZSBpcyB0byBub3QKQEAgLTMyMiw3ICsz
MjIsNyBAQCBHZXRCeVN0YXR1cyBHZXRCeVN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91
dEV4aXRTaXRlRmVlZGJhY2soCiAgICAgICAgICAgICAgICAgfSB9CiAKICAgICAgICAgICAgICAg
ICBBU1NFUlQoKEFjY2Vzc0Nhc2U6Ok1pc3MgPT0gYWNjZXNzLnR5cGUoKSB8fCBhY2Nlc3MuaXND
dXN0b20oKSkgPT0gKGFjY2Vzcy5vZmZzZXQoKSA9PSBpbnZhbGlkT2Zmc2V0KSk7Ci0gICAgICAg
ICAgICAgICAgR2V0QnlJZFZhcmlhbnQgdmFyaWFudChhY2Nlc3MuaWRlbnRpZmllcigpLCBTdHJ1
Y3R1cmVTZXQoc3RydWN0dXJlKSwgY29tcGxleEdldFN0YXR1cy5vZmZzZXQoKSwKKyAgICAgICAg
ICAgICAgICBHZXRCeVZhcmlhbnQgdmFyaWFudChhY2Nlc3MuaWRlbnRpZmllcigpLCBTdHJ1Y3R1
cmVTZXQoc3RydWN0dXJlKSwgY29tcGxleEdldFN0YXR1cy5vZmZzZXQoKSwKICAgICAgICAgICAg
ICAgICAgICAgY29tcGxleEdldFN0YXR1cy5jb25kaXRpb25TZXQoKSwgV1RGTW92ZShjYWxsTGlu
a1N0YXR1cyksCiAgICAgICAgICAgICAgICAgICAgIGludHJpbnNpY0Z1bmN0aW9uLAogICAgICAg
ICAgICAgICAgICAgICBjdXN0b21BY2Nlc3NvckdldHRlciwKQEAgLTQzNSw3ICs0MzUsNyBAQCBH
ZXRCeVN0YXR1cyBHZXRCeVN0YXR1czo6Y29tcHV0ZUZvcihjb25zdCBTdHJ1Y3R1cmVTZXQmIHNl
dCwgVW5pcXVlZFN0cmluZ0ltcGwqCiAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yT3JWYWx1ZSkKICAgICAgICAgICAgIHJldHVybiBHZXRC
eVN0YXR1cyhMaWtlbHlUYWtlc1Nsb3dQYXRoKTsKICAgICAgICAgCi0gICAgICAgIGlmICghcmVz
dWx0LmFwcGVuZFZhcmlhbnQoR2V0QnlJZFZhcmlhbnQobnVsbHB0ciwgc3RydWN0dXJlLCBvZmZz
ZXQpKSkKKyAgICAgICAgaWYgKCFyZXN1bHQuYXBwZW5kVmFyaWFudChHZXRCeVZhcmlhbnQobnVs
bHB0ciwgc3RydWN0dXJlLCBvZmZzZXQpKSkKICAgICAgICAgICAgIHJldHVybiBHZXRCeVN0YXR1
cyhMaWtlbHlUYWtlc1Nsb3dQYXRoKTsKICAgICB9CiAgICAgCkBAIC00OTcsNyArNDk3LDcgQEAg
dm9pZCBHZXRCeVN0YXR1czo6bWVyZ2UoY29uc3QgR2V0QnlTdGF0dXMmIG90aGVyKQogICAgICAg
ICBpZiAobV9zdGF0ZSAhPSBvdGhlci5tX3N0YXRlKQogICAgICAgICAgICAgcmV0dXJuIG1lcmdl
U2xvdygpOwogICAgICAgICAKLSAgICAgICAgZm9yIChjb25zdCBHZXRCeUlkVmFyaWFudCYgb3Ro
ZXJWYXJpYW50IDogb3RoZXIubV92YXJpYW50cykgeworICAgICAgICBmb3IgKGNvbnN0IEdldEJ5
VmFyaWFudCYgb3RoZXJWYXJpYW50IDogb3RoZXIubV92YXJpYW50cykgewogICAgICAgICAgICAg
aWYgKCFhcHBlbmRWYXJpYW50KG90aGVyVmFyaWFudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IG1lcmdlU2xvdygpOwogICAgICAgICB9CkBAIC01NDMsNyArNTQzLDcgQEAgdm9pZCBHZXRCeVN0
YXR1czo6dmlzaXRBZ2dyZWdhdGVJbXBsKFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgaWYgKGlz
TW9kdWxlTmFtZXNwYWNlKCkpCiAgICAgICAgIG1fbW9kdWxlTmFtZXNwYWNlRGF0YS0+bV9pZGVu
dGlmaWVyLnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOwotICAgIGZvciAoR2V0QnlJZFZhcmlhbnQm
IHZhcmlhbnQgOiBtX3ZhcmlhbnRzKQorICAgIGZvciAoR2V0QnlWYXJpYW50JiB2YXJpYW50IDog
bV92YXJpYW50cykKICAgICAgICAgdmFyaWFudC52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKIH0K
IApAQCAtNTUyLDcgKzU1Miw3IEBAIERFRklORV9WSVNJVF9BR0dSRUdBVEUoR2V0QnlTdGF0dXMp
OwogdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KIHZvaWQgR2V0QnlTdGF0dXM6Om1hcmtJZkNo
ZWFwKFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgZm9yIChHZXRCeUlkVmFyaWFudCYgdmFyaWFu
dCA6IG1fdmFyaWFudHMpCisgICAgZm9yIChHZXRCeVZhcmlhbnQmIHZhcmlhbnQgOiBtX3Zhcmlh
bnRzKQogICAgICAgICB2YXJpYW50Lm1hcmtJZkNoZWFwKHZpc2l0b3IpOwogfQogCkBAIC01NjEs
NyArNTYxLDcgQEAgdGVtcGxhdGUgdm9pZCBHZXRCeVN0YXR1czo6bWFya0lmQ2hlYXAoU2xvdFZp
c2l0b3ImKTsKIAogYm9vbCBHZXRCeVN0YXR1czo6ZmluYWxpemUoVk0mIHZtKQogewotICAgIGZv
ciAoR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKSB7CisgICAgZm9yIChHZXRC
eVZhcmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKSB7CiAgICAgICAgIGlmICghdmFyaWFudC5m
aW5hbGl6ZSh2bSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuaAppbmRleCAyNDM3MzBmZGUzM2Eu
LjM2NjkyZDljMDg0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0dldEJ5U3RhdHVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5
U3RhdHVzLmgKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCiAjaW5j
bHVkZSAiQ29uY3VycmVudEpTTG9jay5oIgogI2luY2x1ZGUgIkV4aXRGbGFnLmgiCi0jaW5jbHVk
ZSAiR2V0QnlJZFZhcmlhbnQuaCIKKyNpbmNsdWRlICJHZXRCeVZhcmlhbnQuaCIKICNpbmNsdWRl
ICJJQ1N0YXR1c01hcC5oIgogI2luY2x1ZGUgIlNjb3BlT2Zmc2V0LmgiCiAjaW5jbHVkZSAiU3R1
YkluZm9TdW1tYXJ5LmgiCkBAIC05OSw5ICs5OSw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzTW9k
dWxlTmFtZXNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBNb2R1bGVOYW1lc3BhY2U7
IH0KIAogICAgIHNpemVfdCBudW1WYXJpYW50cygpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFudHMu
c2l6ZSgpOyB9Ci0gICAgY29uc3QgVmVjdG9yPEdldEJ5SWRWYXJpYW50LCAxPiYgdmFyaWFudHMo
KSBjb25zdCB7IHJldHVybiBtX3ZhcmlhbnRzOyB9Ci0gICAgY29uc3QgR2V0QnlJZFZhcmlhbnQm
IGF0KHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV92YXJpYW50c1tpbmRleF07IH0KLSAg
ICBjb25zdCBHZXRCeUlkVmFyaWFudCYgb3BlcmF0b3JbXShzaXplX3QgaW5kZXgpIGNvbnN0IHsg
cmV0dXJuIGF0KGluZGV4KTsgfQorICAgIGNvbnN0IFZlY3RvcjxHZXRCeVZhcmlhbnQsIDE+JiB2
YXJpYW50cygpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFudHM7IH0KKyAgICBjb25zdCBHZXRCeVZh
cmlhbnQmIGF0KHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV92YXJpYW50c1tpbmRleF07
IH0KKyAgICBjb25zdCBHZXRCeVZhcmlhbnQmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KSBjb25z
dCB7IHJldHVybiBhdChpbmRleCk7IH0KIAogICAgIGJvb2wgdGFrZXNTbG93UGF0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RhdGUgPT0gTGlrZWx5VGFrZXNTbG93UGF0aCB8fCBtX3N0YXRlID09IE9i
c2VydmVkVGFrZXNTbG93UGF0aCB8fCBtX3N0YXRlID09IE1ha2VzQ2FsbHMgfHwgbV9zdGF0ZSA9
PSBPYnNlcnZlZFNsb3dQYXRoQW5kTWFrZXNDYWxscyB8fCBtX3N0YXRlID09IEN1c3RvbSB8fCBt
X3N0YXRlID09IE1vZHVsZU5hbWVzcGFjZTsgfQogICAgIGJvb2wgb2JzZXJ2ZWRTdHJ1Y3R1cmVT
dHViSW5mb1Nsb3dQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBPYnNlcnZlZFRha2Vz
U2xvd1BhdGggfHwgbV9zdGF0ZSA9PSBPYnNlcnZlZFNsb3dQYXRoQW5kTWFrZXNDYWxsczsgfQpA
QCAtMTIyLDcgKzEyMiw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9y
PiB2b2lkIG1hcmtJZkNoZWFwKFZpc2l0b3ImKTsKICAgICBib29sIGZpbmFsaXplKFZNJik7IC8v
IFJldHVybiB0cnVlIGlmIHRoaXMgZ2V0cyB0byBsaXZlLgogCi0gICAgYm9vbCBhcHBlbmRWYXJp
YW50KGNvbnN0IEdldEJ5SWRWYXJpYW50Jik7CisgICAgYm9vbCBhcHBlbmRWYXJpYW50KGNvbnN0
IEdldEJ5VmFyaWFudCYpOwogICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsKIAogICAgIHZvaWQgZHVt
cChQcmludFN0cmVhbSYpIGNvbnN0OwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIENhY2hlYWJsZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIH07CiAKLSAgICBWZWN0
b3I8R2V0QnlJZFZhcmlhbnQsIDE+IG1fdmFyaWFudHM7CisgICAgVmVjdG9yPEdldEJ5VmFyaWFu
dCwgMT4gbV92YXJpYW50czsKICAgICBCb3g8TW9kdWxlTmFtZXNwYWNlRGF0YT4gbV9tb2R1bGVO
YW1lc3BhY2VEYXRhOwogICAgIFN0YXRlIG1fc3RhdGU7CiAgICAgYm9vbCBtX3dhc1NlZW5JbkpJ
VCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0QnlJZFZhcmlhbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5
VmFyaWFudC5jcHAKc2ltaWxhcml0eSBpbmRleCA4MyUKcmVuYW1lIGZyb20gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNwcApyZW5hbWUgdG8gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5VmFyaWFudC5jcHAKaW5kZXggN2M3OWJhMTFhOGQ3
Li42NzY1ZjU1YmZhYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9HZXRCeUlkVmFyaWFudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0dldEJ5VmFyaWFudC5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiR2V0QnlJZFZhcmlhbnQuaCIKKyNpbmNsdWRlICJHZXRCeVZhcmlh
bnQuaCIKIAogI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiQ2FsbExpbmtTdGF0dXMuaCIKQEAgLTMyLDE0ICszMiw3IEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCi1HZXRCeUlkVmFyaWFudDo6R2V0QnlJZFZhcmlhbnQoCi0gICAgQ2FjaGVhYmxlSWRlbnRp
ZmllciBpZGVudGlmaWVyLAotICAgIGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0LCBQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQsCi0gICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25T
ZXQmIGNvbmRpdGlvblNldCwKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbExpbmtTdGF0dXM+IGNh
bGxMaW5rU3RhdHVzLAotICAgIEpTRnVuY3Rpb24qIGludHJpbnNpY0Z1bmN0aW9uLAotICAgIEZ1
bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPiBjdXN0b21BY2Nlc3NvckdldHRlciwKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4gZG9tQXR0cmlidXRlKQor
R2V0QnlWYXJpYW50OjpHZXRCeVZhcmlhbnQoQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVy
LCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0
LCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0LCBzdGQ6OnVu
aXF1ZV9wdHI8Q2FsbExpbmtTdGF0dXM+IGNhbGxMaW5rU3RhdHVzLCBKU0Z1bmN0aW9uKiBpbnRy
aW5zaWNGdW5jdGlvbiwgRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1c3RvbUFj
Y2Vzc29yR2V0dGVyLCBzdGQ6OnVuaXF1ZV9wdHI8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4gZG9t
QXR0cmlidXRlKQogICAgIDogbV9zdHJ1Y3R1cmVTZXQoc3RydWN0dXJlU2V0KQogICAgICwgbV9j
b25kaXRpb25TZXQoY29uZGl0aW9uU2V0KQogICAgICwgbV9vZmZzZXQob2Zmc2V0KQpAQCAtNTYs
MTYgKzQ5LDE2IEBAIEdldEJ5SWRWYXJpYW50OjpHZXRCeUlkVmFyaWFudCgKICAgICBpZiAoaW50
cmluc2ljRnVuY3Rpb24pCiAgICAgICAgIEFTU0VSVChpbnRyaW5zaWMoKSAhPSBOb0ludHJpbnNp
Yyk7CiB9Ci0gICAgICAgICAgICAgICAgICAgICAKLUdldEJ5SWRWYXJpYW50Ojp+R2V0QnlJZFZh
cmlhbnQoKSB7IH0KIAotR2V0QnlJZFZhcmlhbnQ6OkdldEJ5SWRWYXJpYW50KGNvbnN0IEdldEJ5
SWRWYXJpYW50JiBvdGhlcikKLSAgICA6IEdldEJ5SWRWYXJpYW50KG90aGVyLm1faWRlbnRpZmll
cikKK0dldEJ5VmFyaWFudDo6fkdldEJ5VmFyaWFudCgpIHsgfQorCitHZXRCeVZhcmlhbnQ6Okdl
dEJ5VmFyaWFudChjb25zdCBHZXRCeVZhcmlhbnQmIG90aGVyKQorICAgIDogR2V0QnlWYXJpYW50
KG90aGVyLm1faWRlbnRpZmllcikKIHsKICAgICAqdGhpcyA9IG90aGVyOwogfQogCi1HZXRCeUlk
VmFyaWFudCYgR2V0QnlJZFZhcmlhbnQ6Om9wZXJhdG9yPShjb25zdCBHZXRCeUlkVmFyaWFudCYg
b3RoZXIpCitHZXRCeVZhcmlhbnQmIEdldEJ5VmFyaWFudDo6b3BlcmF0b3I9KGNvbnN0IEdldEJ5
VmFyaWFudCYgb3RoZXIpCiB7CiAgICAgbV9pZGVudGlmaWVyID0gb3RoZXIubV9pZGVudGlmaWVy
OwogICAgIG1fc3RydWN0dXJlU2V0ID0gb3RoZXIubV9zdHJ1Y3R1cmVTZXQ7CkBAIC04NCw3ICs3
Nyw3IEBAIEdldEJ5SWRWYXJpYW50JiBHZXRCeUlkVmFyaWFudDo6b3BlcmF0b3I9KGNvbnN0IEdl
dEJ5SWRWYXJpYW50JiBvdGhlcikKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKLWlubGluZSBib29s
IEdldEJ5SWRWYXJpYW50OjpjYW5NZXJnZUludHJpbnNpY1N0cnVjdHVyZXMoY29uc3QgR2V0QnlJ
ZFZhcmlhbnQmIG90aGVyKSBjb25zdAoraW5saW5lIGJvb2wgR2V0QnlWYXJpYW50OjpjYW5NZXJn
ZUludHJpbnNpY1N0cnVjdHVyZXMoY29uc3QgR2V0QnlWYXJpYW50JiBvdGhlcikgY29uc3QKIHsK
ICAgICBpZiAobV9pbnRyaW5zaWNGdW5jdGlvbiAhPSBvdGhlci5tX2ludHJpbnNpY0Z1bmN0aW9u
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDUsNyArOTgsNyBAQCBpbmxpbmUgYm9vbCBH
ZXRCeUlkVmFyaWFudDo6Y2FuTWVyZ2VJbnRyaW5zaWNTdHJ1Y3R1cmVzKGNvbnN0IEdldEJ5SWRW
YXJpYW50JiBvdAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLWJvb2wg
R2V0QnlJZFZhcmlhbnQ6OmF0dGVtcHRUb01lcmdlKGNvbnN0IEdldEJ5SWRWYXJpYW50JiBvdGhl
cikKK2Jvb2wgR2V0QnlWYXJpYW50OjphdHRlbXB0VG9NZXJnZShjb25zdCBHZXRCeVZhcmlhbnQm
IG90aGVyKQogewogICAgIGlmICghIW1faWRlbnRpZmllciAhPSAhIW90aGVyLm1faWRlbnRpZmll
cikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTU3LDIzICsxNTAsMjMgQEAgYm9vbCBHZXRC
eUlkVmFyaWFudDo6YXR0ZW1wdFRvTWVyZ2UoY29uc3QgR2V0QnlJZFZhcmlhbnQmIG90aGVyKQog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgotdm9pZCBHZXRCeUlkVmFyaWFudDo6dmlz
aXRBZ2dyZWdhdGVJbXBsKFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEdldEJ5VmFyaWFudDo6dmlz
aXRBZ2dyZWdhdGVJbXBsKFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgbV9pZGVudGlmaWVyLnZp
c2l0QWdncmVnYXRlKHZpc2l0b3IpOwogfQogCi1ERUZJTkVfVklTSVRfQUdHUkVHQVRFKEdldEJ5
SWRWYXJpYW50KTsKK0RFRklORV9WSVNJVF9BR0dSRUdBVEUoR2V0QnlWYXJpYW50KTsKIAogdGVt
cGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KLXZvaWQgR2V0QnlJZFZhcmlhbnQ6Om1hcmtJZkNoZWFw
KFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEdldEJ5VmFyaWFudDo6bWFya0lmQ2hlYXAoVmlzaXRv
ciYgdmlzaXRvcikKIHsKICAgICBtX3N0cnVjdHVyZVNldC5tYXJrSWZDaGVhcCh2aXNpdG9yKTsK
IH0KIAotdGVtcGxhdGUgdm9pZCBHZXRCeUlkVmFyaWFudDo6bWFya0lmQ2hlYXAoQWJzdHJhY3RT
bG90VmlzaXRvciYpOwotdGVtcGxhdGUgdm9pZCBHZXRCeUlkVmFyaWFudDo6bWFya0lmQ2hlYXAo
U2xvdFZpc2l0b3ImKTsKK3RlbXBsYXRlIHZvaWQgR2V0QnlWYXJpYW50OjptYXJrSWZDaGVhcChB
YnN0cmFjdFNsb3RWaXNpdG9yJik7Cit0ZW1wbGF0ZSB2b2lkIEdldEJ5VmFyaWFudDo6bWFya0lm
Q2hlYXAoU2xvdFZpc2l0b3ImKTsKIAotYm9vbCBHZXRCeUlkVmFyaWFudDo6ZmluYWxpemUoVk0m
IHZtKQorYm9vbCBHZXRCeVZhcmlhbnQ6OmZpbmFsaXplKFZNJiB2bSkKIHsKICAgICBpZiAoIW1f
c3RydWN0dXJlU2V0LmlzU3RpbGxBbGl2ZSh2bSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTE4NiwxMiArMTc5LDEyIEBAIGJvb2wgR2V0QnlJZFZhcmlhbnQ6OmZpbmFsaXplKFZNJiB2bSkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBHZXRCeUlkVmFyaWFudDo6ZHVtcChQcmludFN0
cmVhbSYgb3V0KSBjb25zdAordm9pZCBHZXRCeVZhcmlhbnQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91
dCkgY29uc3QKIHsKICAgICBkdW1wSW5Db250ZXh0KG91dCwgbnVsbHB0cik7CiB9CiAKLXZvaWQg
R2V0QnlJZFZhcmlhbnQ6OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRl
eHQqIGNvbnRleHQpIGNvbnN0Cit2b2lkIEdldEJ5VmFyaWFudDo6ZHVtcEluQ29udGV4dChQcmlu
dFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3QKIHsKICAgICBvdXQucHJp
bnQoIjwiKTsKICAgICBvdXQucHJpbnQoImlkPSciLCBtX2lkZW50aWZpZXIsICInLCAiKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5VmFyaWFudC5oCnNpbWlsYXJp
dHkgaW5kZXggOTAlCnJlbmFtZSBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9H
ZXRCeUlkVmFyaWFudC5oCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0QnlWYXJpYW50LmgKaW5kZXggNzlmYzIyNGZmZWJiLi4wOTlhZWQ3NzM2MzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVZhcmlhbnQuaApAQCAtNDEsMjIg
KzQxLDIyIEBAIGNsYXNzIENhbGxMaW5rU3RhdHVzOwogY2xhc3MgR2V0QnlTdGF0dXM7CiBzdHJ1
Y3QgRHVtcENvbnRleHQ7CiAKLWNsYXNzIEdldEJ5SWRWYXJpYW50IHsKK2NsYXNzIEdldEJ5VmFy
aWFudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgR2V0QnlJ
ZFZhcmlhbnQoCisgICAgR2V0QnlWYXJpYW50KAogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVy
LAotICAgICAgICBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCA9IFN0cnVjdHVyZVNl
dCgpLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0LAorICAgICAgICBjb25z
dCBTdHJ1Y3R1cmVTZXQmID0gU3RydWN0dXJlU2V0KCksIFByb3BlcnR5T2Zmc2V0ID0gaW52YWxp
ZE9mZnNldCwKICAgICAgICAgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmID0gT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQoKSwKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENhbGxM
aW5rU3RhdHVzPiA9IG51bGxwdHIsCiAgICAgICAgIEpTRnVuY3Rpb24qID0gbnVsbHB0ciwKICAg
ICAgICAgRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1c3RvbUFjY2Vzc29yR2V0
dGVyID0gbnVsbHB0ciwKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPERPTUF0dHJpYnV0ZUFubm90
YXRpb24+ID0gbnVsbHB0cik7CiAKLSAgICB+R2V0QnlJZFZhcmlhbnQoKTsKKyAgICB+R2V0QnlW
YXJpYW50KCk7CiAgICAgCi0gICAgR2V0QnlJZFZhcmlhbnQoY29uc3QgR2V0QnlJZFZhcmlhbnQm
KTsKLSAgICBHZXRCeUlkVmFyaWFudCYgb3BlcmF0b3I9KGNvbnN0IEdldEJ5SWRWYXJpYW50Jik7
CisgICAgR2V0QnlWYXJpYW50KGNvbnN0IEdldEJ5VmFyaWFudCYpOworICAgIEdldEJ5VmFyaWFu
dCYgb3BlcmF0b3I9KGNvbnN0IEdldEJ5VmFyaWFudCYpOwogICAgIAogICAgIGJvb2wgaXNTZXQo
KSBjb25zdCB7IHJldHVybiAhIW1fc3RydWN0dXJlU2V0LnNpemUoKTsgfQogICAgIGV4cGxpY2l0
IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBpc1NldCgpOyB9CkBAIC03NSw3ICs3NSw3
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNQcm9wZXJ0eVVuc2V0KCkgY29uc3QgeyByZXR1cm4g
b2Zmc2V0KCkgPT0gaW52YWxpZE9mZnNldDsgfQogCi0gICAgYm9vbCBhdHRlbXB0VG9NZXJnZShj
b25zdCBHZXRCeUlkVmFyaWFudCYgb3RoZXIpOworICAgIGJvb2wgYXR0ZW1wdFRvTWVyZ2UoY29u
c3QgR2V0QnlWYXJpYW50JiBvdGhlcik7CiAgICAgCiAgICAgREVDTEFSRV9WSVNJVF9BR0dSRUdB
VEU7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4gdm9pZCBtYXJrSWZDaGVhcChWaXNp
dG9yJik7CkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKIAogICAgIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCi0gICAgYm9v
bCBvdmVybGFwcyhjb25zdCBHZXRCeUlkVmFyaWFudCYgb3RoZXIpCisgICAgYm9vbCBvdmVybGFw
cyhjb25zdCBHZXRCeVZhcmlhbnQmIG90aGVyKQogICAgIHsKICAgICAgICAgaWYgKCEhbV9pZGVu
dGlmaWVyICE9ICEhb3RoZXIubV9pZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CkBAIC0xMDAsNyArMTAwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3Mg
R2V0QnlTdGF0dXM7CiAKLSAgICBib29sIGNhbk1lcmdlSW50cmluc2ljU3RydWN0dXJlcyhjb25z
dCBHZXRCeUlkVmFyaWFudCYpIGNvbnN0OworICAgIGJvb2wgY2FuTWVyZ2VJbnRyaW5zaWNTdHJ1
Y3R1cmVzKGNvbnN0IEdldEJ5VmFyaWFudCYpIGNvbnN0OwogICAgIAogICAgIFN0cnVjdHVyZVNl
dCBtX3N0cnVjdHVyZVNldDsKICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBtX2NvbmRp
dGlvblNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5
U3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5U3RhdHVzLmNw
cAppbmRleCA4YTZjYzYwZjRjNmYuLmYyYzc5Nzk5YWQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbkJ5U3RhdHVzLmNwcApAQCAtMzcsNyArMzcsNyBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAotYm9vbCBJbkJ5U3RhdHVzOjphcHBlbmRWYXJpYW50KGNvbnN0IEluQnlJ
ZFZhcmlhbnQmIHZhcmlhbnQpCitib29sIEluQnlTdGF0dXM6OmFwcGVuZFZhcmlhbnQoY29uc3Qg
SW5CeVZhcmlhbnQmIHZhcmlhbnQpCiB7CiAgICAgcmV0dXJuIGFwcGVuZElDU3RhdHVzVmFyaWFu
dChtX3ZhcmlhbnRzLCB2YXJpYW50KTsKIH0KQEAgLTE0NSw3ICsxNDUsNyBAQCBJbkJ5U3RhdHVz
IEluQnlTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKGNv
bnN0IENvbmN1cnJlbgogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBz
dHViSW5mby0+aWRlbnRpZmllcigpOwogICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0g
aWRlbnRpZmllci51aWQoKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQodWlkKTsKLSAgICAgICAg
SW5CeUlkVmFyaWFudCB2YXJpYW50KFdURk1vdmUoaWRlbnRpZmllcikpOworICAgICAgICBJbkJ5
VmFyaWFudCB2YXJpYW50KFdURk1vdmUoaWRlbnRpZmllcikpOwogICAgICAgICB1bnNpZ25lZCBh
dHRyaWJ1dGVzOwogICAgICAgICB2YXJpYW50Lm1fb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXRDb25j
dXJyZW50bHkodWlkLCBhdHRyaWJ1dGVzKTsKICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KHZh
cmlhbnQubV9vZmZzZXQpKQpAQCAtMTcyLDcgKzE3Miw3IEBAIEluQnlTdGF0dXMgSW5CeVN0YXR1
czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soY29uc3QgQ29uY3Vy
cmVuCiAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGFjY2Vzcy5zdHJ1Y3R1cmUo
KTsKICAgICAgICAgICAgIGlmICghc3RydWN0dXJlKSB7CiAgICAgICAgICAgICAgICAgLy8gVGhl
IG51bGwgc3RydWN0dXJlIGNhc2VzIGFyaXNlIGR1ZSB0byBhcnJheS5sZW5ndGguIFdlIGhhdmUg
bm8gd2F5IG9mIGNyZWF0aW5nIGEKLSAgICAgICAgICAgICAgICAvLyBJbkJ5SWRWYXJpYW50IGZv
ciB0aG9zZSwgYW5kIHdlIGRvbid0IHJlYWxseSBoYXZlIHRvIHNpbmNlIHRoZSBERkcgaGFuZGxl
cyB0aG9zZQorICAgICAgICAgICAgICAgIC8vIEluQnlWYXJpYW50IGZvciB0aG9zZSwgYW5kIHdl
IGRvbid0IHJlYWxseSBoYXZlIHRvIHNpbmNlIHRoZSBERkcgaGFuZGxlcyB0aG9zZQogICAgICAg
ICAgICAgICAgIC8vIGNhc2VzIGluIEZpeHVwUGhhc2UgdXNpbmcgdmFsdWUgcHJvZmlsaW5nLiBU
aGF0J3MgYSBiaXQgYXdrd2FyZCAtIHdlIHNob3VsZG4ndAogICAgICAgICAgICAgICAgIC8vIGhh
dmUgdG8gdXNlIHZhbHVlIHByb2ZpbGluZyB0byBkaXNjb3ZlciBzb21ldGhpbmcgdGhhdCB0aGUg
QWNjZXNzQ2FzZSBjb3VsZCBoYXZlCiAgICAgICAgICAgICAgICAgLy8gdG9sZCB1cy4gQnV0LCBp
dCB3b3JrcyB3ZWxsIGVub3VnaC4gU28sIG91ciBvbmx5IGNvbmNlcm4gaGVyZSBpcyB0byBub3QK
QEAgLTE5Nyw3ICsxOTcsNyBAQCBJbkJ5U3RhdHVzIEluQnlTdGF0dXM6OmNvbXB1dGVGb3JTdHVi
SW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKGNvbnN0IENvbmN1cnJlbgogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gSW5CeVN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKICAgICAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgICAgICBJbkJ5SWRWYXJpYW50IHZhcmlhbnQoCisgICAgICAgICAg
ICAgICAgSW5CeVZhcmlhbnQgdmFyaWFudCgKICAgICAgICAgICAgICAgICAgICAgYWNjZXNzLmlk
ZW50aWZpZXIoKSwgU3RydWN0dXJlU2V0KHN0cnVjdHVyZSksIGNvbXBsZXhHZXRTdGF0dXMub2Zm
c2V0KCksCiAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXhHZXRTdGF0dXMuY29uZGl0aW9uU2V0
KCkpOwogCkBAIC0yMzYsNyArMjM2LDcgQEAgdm9pZCBJbkJ5U3RhdHVzOjptZXJnZShjb25zdCBJ
bkJ5U3RhdHVzJiBvdGhlcikKICAgICAgICAgICAgICp0aGlzID0gSW5CeVN0YXR1cyhUYWtlc1Ns
b3dQYXRoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBmb3IgKGNv
bnN0IEluQnlJZFZhcmlhbnQmIG90aGVyVmFyaWFudCA6IG90aGVyLm1fdmFyaWFudHMpIHsKKyAg
ICAgICAgZm9yIChjb25zdCBJbkJ5VmFyaWFudCYgb3RoZXJWYXJpYW50IDogb3RoZXIubV92YXJp
YW50cykgewogICAgICAgICAgICAgaWYgKCFhcHBlbmRWYXJpYW50KG90aGVyVmFyaWFudCkpIHsK
ICAgICAgICAgICAgICAgICAqdGhpcyA9IEluQnlTdGF0dXMoVGFrZXNTbG93UGF0aCk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjY0LDcgKzI2NCw3IEBAIHZvaWQgSW5CeVN0YXR1czo6
ZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0KQogdGVtcGxhdGU8dHlwZW5h
bWUgVmlzaXRvcj4KIHZvaWQgSW5CeVN0YXR1czo6bWFya0lmQ2hlYXAoVmlzaXRvciYgdmlzaXRv
cikKIHsKLSAgICBmb3IgKEluQnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKQorICAg
IGZvciAoSW5CeVZhcmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKQogICAgICAgICB2YXJpYW50
Lm1hcmtJZkNoZWFwKHZpc2l0b3IpOwogfQogCkBAIC0yNzMsNyArMjczLDcgQEAgdGVtcGxhdGUg
dm9pZCBJbkJ5U3RhdHVzOjptYXJrSWZDaGVhcChTbG90VmlzaXRvciYpOwogCiBib29sIEluQnlT
dGF0dXM6OmZpbmFsaXplKFZNJiB2bSkKIHsKLSAgICBmb3IgKEluQnlJZFZhcmlhbnQmIHZhcmlh
bnQgOiBtX3ZhcmlhbnRzKSB7CisgICAgZm9yIChJbkJ5VmFyaWFudCYgdmFyaWFudCA6IG1fdmFy
aWFudHMpIHsKICAgICAgICAgaWYgKCF2YXJpYW50LmZpbmFsaXplKHZtKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSW5CeVN0YXR1cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
QnlTdGF0dXMuaAppbmRleCA1YTM0MGI0OTNhMzQuLjM4NDY4ZDUyYWNmOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlTdGF0dXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeVN0YXR1cy5oCkBAIC0zMCw3ICszMCw3IEBACiAj
aW5jbHVkZSAiQ29kZU9yaWdpbi5oIgogI2luY2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIKICNp
bmNsdWRlICJJQ1N0YXR1c01hcC5oIgotI2luY2x1ZGUgIkluQnlJZFZhcmlhbnQuaCIKKyNpbmNs
dWRlICJJbkJ5VmFyaWFudC5oIgogI2luY2x1ZGUgIlN0dWJJbmZvU3VtbWFyeS5oIgogCiBuYW1l
c3BhY2UgSlNDIHsKQEAgLTkzLDkgKzkzLDkgQEAgcHVibGljOgogICAgIGJvb2wgaXNTaW1wbGUo
KSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFNpbXBsZTsgfQogCiAgICAgc2l6ZV90IG51bVZh
cmlhbnRzKCkgY29uc3QgeyByZXR1cm4gbV92YXJpYW50cy5zaXplKCk7IH0KLSAgICBjb25zdCBW
ZWN0b3I8SW5CeUlkVmFyaWFudCwgMT4mIHZhcmlhbnRzKCkgY29uc3QgeyByZXR1cm4gbV92YXJp
YW50czsgfQotICAgIGNvbnN0IEluQnlJZFZhcmlhbnQmIGF0KHNpemVfdCBpbmRleCkgY29uc3Qg
eyByZXR1cm4gbV92YXJpYW50c1tpbmRleF07IH0KLSAgICBjb25zdCBJbkJ5SWRWYXJpYW50JiBv
cGVyYXRvcltdKHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gYXQoaW5kZXgpOyB9CisgICAg
Y29uc3QgVmVjdG9yPEluQnlWYXJpYW50LCAxPiYgdmFyaWFudHMoKSBjb25zdCB7IHJldHVybiBt
X3ZhcmlhbnRzOyB9CisgICAgY29uc3QgSW5CeVZhcmlhbnQmIGF0KHNpemVfdCBpbmRleCkgY29u
c3QgeyByZXR1cm4gbV92YXJpYW50c1tpbmRleF07IH0KKyAgICBjb25zdCBJbkJ5VmFyaWFudCYg
b3BlcmF0b3JbXShzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGF0KGluZGV4KTsgfQogCiAg
ICAgYm9vbCB0YWtlc1Nsb3dQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBUYWtlc1Ns
b3dQYXRoOyB9CiAgICAgCkBAIC0xMTUsMTEgKzExNSwxMSBAQCBwcml2YXRlOgogI2lmIEVOQUJM
RShERkdfSklUKQogICAgIHN0YXRpYyBJbkJ5U3RhdHVzIGNvbXB1dGVGb3JTdHViSW5mb1dpdGhv
dXRFeGl0U2l0ZUZlZWRiYWNrKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFZNJiwgU3RydWN0
dXJlU3R1YkluZm8qKTsKICNlbmRpZgotICAgIGJvb2wgYXBwZW5kVmFyaWFudChjb25zdCBJbkJ5
SWRWYXJpYW50Jik7CisgICAgYm9vbCBhcHBlbmRWYXJpYW50KGNvbnN0IEluQnlWYXJpYW50Jik7
CiAgICAgdm9pZCBzaHJpbmtUb0ZpdCgpOwogCiAgICAgU3RhdGUgbV9zdGF0ZSB7IE5vSW5mb3Jt
YXRpb24gfTsKLSAgICBWZWN0b3I8SW5CeUlkVmFyaWFudCwgMT4gbV92YXJpYW50czsKKyAgICBW
ZWN0b3I8SW5CeVZhcmlhbnQsIDE+IG1fdmFyaWFudHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRWYXJp
YW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5VmFyaWFudC5jcHAK
c2ltaWxhcml0eSBpbmRleCA4NCUKcmVuYW1lIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0luQnlJZFZhcmlhbnQuY3BwCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSW5CeVZhcmlhbnQuY3BwCmluZGV4IGY0OTRiZmJkYjRhZS4uNzA2OTE0ZTM2YzAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlkVmFyaWFu
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlWYXJpYW50LmNw
cApAQCAtMjUsMTMgKzI1LDEzIEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkluQnlJZFZhcmlhbnQuaCIKKyNpbmNsdWRlICJJbkJ5VmFyaWFudC5oIgogCiAjaW5jbHVk
ZSAiQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUlu
QnlJZFZhcmlhbnQ6OkluQnlJZFZhcmlhbnQoQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVy
LCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0
LCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0aW9uU2V0KQorSW5CeVZh
cmlhbnQ6OkluQnlWYXJpYW50KENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3Qg
U3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgY29uc3Qg
T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCkKICAgICA6IG1fc3RydWN0
dXJlU2V0KHN0cnVjdHVyZVNldCkKICAgICAsIG1fY29uZGl0aW9uU2V0KGNvbmRpdGlvblNldCkK
ICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKQEAgLTQzLDcgKzQzLDcgQEAgSW5CeUlkVmFyaWFudDo6
SW5CeUlkVmFyaWFudChDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cnVj
dHVyZVNldCYKICAgICB9CiB9CiAKLWJvb2wgSW5CeUlkVmFyaWFudDo6YXR0ZW1wdFRvTWVyZ2Uo
Y29uc3QgSW5CeUlkVmFyaWFudCYgb3RoZXIpCitib29sIEluQnlWYXJpYW50OjphdHRlbXB0VG9N
ZXJnZShjb25zdCBJbkJ5VmFyaWFudCYgb3RoZXIpCiB7CiAgICAgaWYgKCEhbV9pZGVudGlmaWVy
ICE9ICEhb3RoZXIubV9pZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03NCwx
NSArNzQsMTUgQEAgYm9vbCBJbkJ5SWRWYXJpYW50OjphdHRlbXB0VG9NZXJnZShjb25zdCBJbkJ5
SWRWYXJpYW50JiBvdGhlcikKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KLXZvaWQg
SW5CeUlkVmFyaWFudDo6bWFya0lmQ2hlYXAoVmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgSW5CeVZh
cmlhbnQ6Om1hcmtJZkNoZWFwKFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgbV9zdHJ1Y3R1cmVT
ZXQubWFya0lmQ2hlYXAodmlzaXRvcik7CiB9CiAKLXRlbXBsYXRlIHZvaWQgSW5CeUlkVmFyaWFu
dDo6bWFya0lmQ2hlYXAoQWJzdHJhY3RTbG90VmlzaXRvciYpOwotdGVtcGxhdGUgdm9pZCBJbkJ5
SWRWYXJpYW50OjptYXJrSWZDaGVhcChTbG90VmlzaXRvciYpOwordGVtcGxhdGUgdm9pZCBJbkJ5
VmFyaWFudDo6bWFya0lmQ2hlYXAoQWJzdHJhY3RTbG90VmlzaXRvciYpOwordGVtcGxhdGUgdm9p
ZCBJbkJ5VmFyaWFudDo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKTsKIAotYm9vbCBJbkJ5SWRW
YXJpYW50OjpmaW5hbGl6ZShWTSYgdm0pCitib29sIEluQnlWYXJpYW50OjpmaW5hbGl6ZShWTSYg
dm0pCiB7CiAgICAgaWYgKCFtX3N0cnVjdHVyZVNldC5pc1N0aWxsQWxpdmUodm0pKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC05MSwxMiArOTEsMTIgQEAgYm9vbCBJbkJ5SWRWYXJpYW50Ojpm
aW5hbGl6ZShWTSYgdm0pCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSW5CeUlkVmFyaWFu
dDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAordm9pZCBJbkJ5VmFyaWFudDo6ZHVtcChQ
cmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIGR1bXBJbkNvbnRleHQob3V0LCBudWxscHRy
KTsKIH0KIAotdm9pZCBJbkJ5SWRWYXJpYW50OjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBv
dXQsIER1bXBDb250ZXh0KiBjb250ZXh0KSBjb25zdAordm9pZCBJbkJ5VmFyaWFudDo6ZHVtcElu
Q29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3QKIHsK
ICAgICBvdXQucHJpbnQoIjxpZD0nIiwgbV9pZGVudGlmaWVyLCAiJywgIik7CiAgICAgaWYgKCFp
c1NldCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5C
eUlkVmFyaWFudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlWYXJpYW50
LmgKc2ltaWxhcml0eSBpbmRleCA5MCUKcmVuYW1lIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0luQnlJZFZhcmlhbnQuaApyZW5hbWUgdG8gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0luQnlWYXJpYW50LmgKaW5kZXggN2Q3MzIzOGZiZTUzLi43N2ZjYjEzYTNjMzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRWYXJpYW50
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlWYXJpYW50LmgKQEAg
LTM5LDEwICszOSwxMCBAQCBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiBjbGFzcyBJbkJ5U3RhdHVzOwog
c3RydWN0IER1bXBDb250ZXh0OwogCi1jbGFzcyBJbkJ5SWRWYXJpYW50IHsKK2NsYXNzIEluQnlW
YXJpYW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBJbkJ5
SWRWYXJpYW50KENhY2hlYWJsZUlkZW50aWZpZXIsIGNvbnN0IFN0cnVjdHVyZVNldCYgPSBTdHJ1
Y3R1cmVTZXQoKSwgUHJvcGVydHlPZmZzZXQgPSBpbnZhbGlkT2Zmc2V0LCBjb25zdCBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvblNldCYgPSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCgpKTsKKyAg
ICBJbkJ5VmFyaWFudChDYWNoZWFibGVJZGVudGlmaWVyLCBjb25zdCBTdHJ1Y3R1cmVTZXQmID0g
U3RydWN0dXJlU2V0KCksIFByb3BlcnR5T2Zmc2V0ID0gaW52YWxpZE9mZnNldCwgY29uc3QgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQmID0gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQoKSk7
CiAKICAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gISFtX3N0cnVjdHVyZVNldC5zaXpl
KCk7IH0KICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gaXNTZXQo
KTsgfQpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzSGl0KCkgY29uc3Qg
eyByZXR1cm4gb2Zmc2V0KCkgIT0gaW52YWxpZE9mZnNldDsgfQogCi0gICAgYm9vbCBhdHRlbXB0
VG9NZXJnZShjb25zdCBJbkJ5SWRWYXJpYW50JiBvdGhlcik7CisgICAgYm9vbCBhdHRlbXB0VG9N
ZXJnZShjb25zdCBJbkJ5VmFyaWFudCYgb3RoZXIpOwogICAgIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFZpc2l0b3I+IHZvaWQgbWFya0lmQ2hlYXAoVmlzaXRvciYpOwogICAgIGJvb2wgZmluYWxp
emUoVk0mKTsKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogCiAgICAgQ2FjaGVhYmxlSWRlbnRp
ZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKLSAgICBi
b29sIG92ZXJsYXBzKGNvbnN0IEluQnlJZFZhcmlhbnQmIG90aGVyKQorICAgIGJvb2wgb3Zlcmxh
cHMoY29uc3QgSW5CeVZhcmlhbnQmIG90aGVyKQogICAgIHsKICAgICAgICAgaWYgKCEhbV9pZGVu
dGlmaWVyICE9ICEhb3RoZXIubV9pZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1
YkluZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJ
bmZvLmNwcAppbmRleCBjNDU4M2QzZmY5ZjUuLjFkNzM1MGEyOTM5NCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCkBAIC0y
NTMsMTkgKzI1MywxOSBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjpyZXNldChjb25zdCBDb25j
dXJyZW50SlNMb2NrZXJCYXNlJiBsb2NrZXIsIENvZGVCbG9jayogYwogCiAgICAgc3dpdGNoIChh
Y2Nlc3NUeXBlKSB7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlkOgotICAgICAgICBy
ZXNldEdldEJ5KGNvZGVCbG9jaywgKnRoaXMsIEdldEJ5S2luZDo6VHJ5KTsKKyAgICAgICAgcmVz
ZXRHZXRCeShjb2RlQmxvY2ssICp0aGlzLCBHZXRCeUtpbmQ6OlRyeUJ5SWQpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldEJ5SWQ6Ci0gICAgICAgIHJlc2V0R2V0Qnko
Y29kZUJsb2NrLCAqdGhpcywgR2V0QnlLaW5kOjpOb3JtYWwpOworICAgICAgICByZXNldEdldEJ5
KGNvZGVCbG9jaywgKnRoaXMsIEdldEJ5S2luZDo6QnlJZCk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgQWNjZXNzVHlwZTo6R2V0QnlJZFdpdGhUaGlzOgotICAgICAgICByZXNldEdldEJ5KGNv
ZGVCbG9jaywgKnRoaXMsIEdldEJ5S2luZDo6V2l0aFRoaXMpOworICAgICAgICByZXNldEdldEJ5
KGNvZGVCbG9jaywgKnRoaXMsIEdldEJ5S2luZDo6QnlJZFdpdGhUaGlzKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXRCeUlkRGlyZWN0OgotICAgICAgICByZXNldEdl
dEJ5KGNvZGVCbG9jaywgKnRoaXMsIEdldEJ5S2luZDo6RGlyZWN0KTsKKyAgICAgICAgcmVzZXRH
ZXRCeShjb2RlQmxvY2ssICp0aGlzLCBHZXRCeUtpbmQ6OkJ5SWREaXJlY3QpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldEJ5VmFsOgotICAgICAgICByZXNldEdldEJ5
KGNvZGVCbG9jaywgKnRoaXMsIEdldEJ5S2luZDo6Tm9ybWFsQnlWYWwpOworICAgICAgICByZXNl
dEdldEJ5KGNvZGVCbG9jaywgKnRoaXMsIEdldEJ5S2luZDo6QnlWYWwpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldFByaXZhdGVOYW1lOgogICAgICAgICByZXNldEdl
dEJ5KGNvZGVCbG9jaywgKnRoaXMsIEdldEJ5S2luZDo6UHJpdmF0ZU5hbWUpOwpAQCAtMjc0LDE5
ICsyNzQsMTkgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6cmVzZXQoY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyQmFzZSYgbG9ja2VyLCBDb2RlQmxvY2sqIGMKICAgICAgICAgcmVzZXRQdXRCeUlE
KGNvZGVCbG9jaywgKnRoaXMpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6
OkluQnlJZDoKLSAgICAgICAgcmVzZXRJbkJ5KGNvZGVCbG9jaywgKnRoaXMsIEluQnlLaW5kOjpO
b3JtYWwpOworICAgICAgICByZXNldEluQnkoY29kZUJsb2NrLCAqdGhpcywgSW5CeUtpbmQ6OkJ5
SWQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkluQnlWYWw6Ci0gICAg
ICAgIHJlc2V0SW5CeShjb2RlQmxvY2ssICp0aGlzLCBJbkJ5S2luZDo6Tm9ybWFsQnlWYWwpOwor
ICAgICAgICByZXNldEluQnkoY29kZUJsb2NrLCAqdGhpcywgSW5CeUtpbmQ6OkJ5VmFsKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mOgogICAgICAgICBy
ZXNldEluc3RhbmNlT2YoY29kZUJsb2NrLCAqdGhpcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQWNjZXNzVHlwZTo6RGVsZXRlQnlJRDoKLSAgICAgICAgcmVzZXREZWxCeShjb2RlQmxvY2ss
ICp0aGlzLCBEZWxCeUtpbmQ6Ok5vcm1hbCk7CisgICAgICAgIHJlc2V0RGVsQnkoY29kZUJsb2Nr
LCAqdGhpcywgRGVsQnlLaW5kOjpCeUlkKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nl
c3NUeXBlOjpEZWxldGVCeVZhbDoKLSAgICAgICAgcmVzZXREZWxCeShjb2RlQmxvY2ssICp0aGlz
LCBEZWxCeUtpbmQ6Ok5vcm1hbEJ5VmFsKTsKKyAgICAgICAgcmVzZXREZWxCeShjb2RlQmxvY2ss
ICp0aGlzLCBEZWxCeUtpbmQ6OkJ5VmFsKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nl
c3NUeXBlOjpDaGVja1ByaXZhdGVCcmFuZDoKICAgICAgICAgcmVzZXRDaGVja1ByaXZhdGVCcmFu
ZChjb2RlQmxvY2ssICp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCAzYjYxYTVmZDE5ODku
LmUzNDMzZjRhZWE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtNDAxMSw3ICs0MDExLDcgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVj
dHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgICAgIGRpZEZvbGRDbG9iYmVyU3RydWN0
dXJlcygpOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG5vZGUtPm11bHRpRGVsZXRlQnlP
ZmZzZXREYXRhKCkudmFyaWFudHMuc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgICAgICBjb25zdCBE
ZWxldGVCeUlkVmFyaWFudCYgdmFyaWFudCA9IG5vZGUtPm11bHRpRGVsZXRlQnlPZmZzZXREYXRh
KCkudmFyaWFudHNbaV07CisgICAgICAgICAgICBjb25zdCBEZWxldGVCeVZhcmlhbnQmIHZhcmlh
bnQgPSBub2RlLT5tdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YSgpLnZhcmlhbnRzW2ldOwogICAgICAg
ICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCB0aGlzU2V0ID0gKm1fZ3JhcGguYWRkU3RydWN0
dXJlU2V0KHZhcmlhbnQub2xkU3RydWN0dXJlKCkpOwogICAgICAgICAgICAgdGhpc1NldC5maWx0
ZXIoYmFzZSk7CiAgICAgICAgICAgICBpZiAodGhpc1NldC5pc0VtcHR5KCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGY4MDIzN2Nj
ODM0My4uYTVmNTJhMDVhZmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMjA1LDE0ICsyMDUsMTQgQEAgcHJpdmF0ZToKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgogICAgIGJvb2wgaGFuZGxlRE9NSklUQ2Fs
bChOb2RlKiBjYWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSos
IGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVj
dWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3Mp
OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci0gICAgYm9vbCBoYW5kbGVJ
bnRyaW5zaWNHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24s
IGNvbnN0IEdldEJ5SWRWYXJpYW50JiBpbnRyaW5zaWNWYXJpYW50LCBOb2RlKiB0aGlzTm9kZSwg
Y29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKKyAgICBib29sIGhhbmRsZUludHJp
bnNpY0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29u
c3QgR2V0QnlWYXJpYW50JiBpbnRyaW5zaWNWYXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgY29uc3Qg
Q2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVj
a3NGdW5jdG9yPgogICAgIGJvb2wgaGFuZGxlVHlwZWRBcnJheUNvbnN0cnVjdG9yKE9wZXJhbmQg
cmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIFR5cGVkQXJyYXlUeXBlLCBjb25zdCBDaGVja3NGdW5jdG9y
JiBpbnNlcnRDaGVja3MpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+CiAg
ICAgYm9vbCBoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24oTm9kZSogY2FsbFRhcmdldE5v
ZGUsIE9wZXJhbmQgcmVzdWx0LCBJbnRlcm5hbEZ1bmN0aW9uKiwgaW50IHJlZ2lzdGVyT2Zmc2V0
LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQs
IFNwZWN1bGF0ZWRUeXBlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOwogICAg
IE5vZGUqIGhhbmRsZVB1dEJ5T2Zmc2V0KE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXIs
IFByb3BlcnR5T2Zmc2V0LCBOb2RlKiB2YWx1ZSk7CiAgICAgTm9kZSogaGFuZGxlR2V0QnlPZmZz
ZXQoU3BlY3VsYXRlZFR5cGUsIE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIs
IFByb3BlcnR5T2Zmc2V0LCBOb2RlVHlwZSA9IEdldEJ5T2Zmc2V0KTsKLSAgICBib29sIGhhbmRs
ZURPTUpJVEdldHRlcihPcGVyYW5kIHJlc3VsdCwgY29uc3QgR2V0QnlJZFZhcmlhbnQmLCBOb2Rl
KiB0aGlzTm9kZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgU3BlY3VsYXRlZFR5cGUgcHJl
ZGljdGlvbik7CisgICAgYm9vbCBoYW5kbGVET01KSVRHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIGNv
bnN0IEdldEJ5VmFyaWFudCYsIE5vZGUqIHRoaXNOb2RlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVt
YmVyLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKTsKICAgICBib29sIGhhbmRsZU1vZHVsZU5h
bWVzcGFjZUxvYWQoVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUsIE5vZGUq
IGJhc2UsIEdldEJ5U3RhdHVzKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlPgpA
QCAtMjM5LDcgKzIzOSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjaGVja1ByZXNlbmNlKEpTT2Jq
ZWN0KiBrbm93bkJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiwgUHJvcGVydHlPZmZzZXQsIGNvbnN0
IFN0cnVjdHVyZVNldCYpOwogICAgIHZvaWQgY2hlY2tQcmVzZW5jZUZvclJlcGxhY2UoTm9kZSog
YmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqLCBQcm9wZXJ0eU9mZnNldCwgY29uc3QgU3RydWN0dXJl
U2V0Jik7CiAgICAgCi0gICAgLy8gV29ya3Mgd2l0aCBib3RoIEdldEJ5SWRWYXJpYW50IGFuZCB0
aGUgc2V0dGVyIGZvcm0gb2YgUHV0QnlJZFZhcmlhbnQuCisgICAgLy8gV29ya3Mgd2l0aCBib3Ro
IEdldEJ5VmFyaWFudCBhbmQgdGhlIHNldHRlciBmb3JtIG9mIFB1dEJ5SWRWYXJpYW50LgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFZhcmlhbnRUeXBlPgogICAgIE5vZGUqIGxvYWQoU3BlY3VsYXRl
ZFR5cGUsIE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIGNvbnN0IFZhcmlh
bnRUeXBlJik7CiAKQEAgLTM3ODYsNyArMzc4Niw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZURPTUpJVENhbGwoTm9kZSogY2FsbFRhcmdldCwgT3BlcmFuZCByZXN1bHQsIGNvbnN0IERP
CiAKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLWJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihPcGVyYW5kIHJlc3VsdCwgU3BlY3VsYXRlZFR5cGUg
cHJlZGljdGlvbiwgY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQsIE5vZGUqIHRoaXNOb2Rl
LCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCitib29sIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIFNwZWN1bGF0ZWRUeXBlIHBy
ZWRpY3Rpb24sIGNvbnN0IEdldEJ5VmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNv
bnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBzd2l0Y2ggKHZhcmlhbnQu
aW50cmluc2ljKCkpIHsKICAgICBjYXNlIFR5cGVkQXJyYXlCeXRlTGVuZ3RoSW50cmluc2ljOiB7
CkBAIC0zOTAyLDcgKzM5MDIsNyBAQCBzdGF0aWMgdm9pZCBibGVzc0NhbGxET01HZXR0ZXIoTm9k
ZSogbm9kZSkKICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKIH0K
IAotYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKE9wZXJhbmQgcmVzdWx0
LCBjb25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIHVuc2lnbmVk
IGlkZW50aWZpZXJOdW1iZXIsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCitib29sIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVET01KSVRHZXR0ZXIoT3BlcmFuZCByZXN1bHQsIGNvbnN0IEdldEJ5
VmFyaWFudCYgdmFyaWFudCwgTm9kZSogdGhpc05vZGUsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1i
ZXIsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiB7CiAgICAgaWYgKCF2YXJpYW50LmRvbUF0
dHJpYnV0ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00NjI4LDcgKzQ2MjgsNyBAQCB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgIGlmIChPcHRpb25zOjp1c2VE
T01KSVQoKSAmJiBnZXRCeVN0YXR1cy5pc0N1c3RvbSgpKSB7CiAgICAgICAgIEFTU0VSVChnZXRC
eVN0YXR1cy5udW1WYXJpYW50cygpID09IDEpOwogICAgICAgICBBU1NFUlQoIWdldEJ5U3RhdHVz
Lm1ha2VzQ2FsbHMoKSk7Ci0gICAgICAgIEdldEJ5SWRWYXJpYW50IHZhcmlhbnQgPSBnZXRCeVN0
YXR1c1swXTsKKyAgICAgICAgR2V0QnlWYXJpYW50IHZhcmlhbnQgPSBnZXRCeVN0YXR1c1swXTsK
ICAgICAgICAgQVNTRVJUKHZhcmlhbnQuZG9tQXR0cmlidXRlKCkpOwogICAgICAgICBpZiAoaGFu
ZGxlRE9NSklUR2V0dGVyKGRlc3RpbmF0aW9uLCB2YXJpYW50LCBiYXNlLCBpZGVudGlmaWVyTnVt
YmVyLCBwcmVkaWN0aW9uKSkgewogICAgICAgICAgICAgaWYgKFVOTElLRUxZKG1fZ3JhcGguY29t
cGlsYXRpb24oKSkpCkBAIC00NjY0LDcgKzQ2NjQsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVHZXRCeUlkKAogICAgICAgICAvLyAxKSBFbWl0IHByb3RvdHlwZSBzdHJ1Y3R1cmUgY2hl
Y2tzIGZvciBhbGwgY2hhaW5zLiBUaGlzIGNvdWxkIHNvcnQgb2YgbWF5YmUgbm90IGJlCiAgICAg
ICAgIC8vICAgIG9wdGltYWwsIGlmIHRoZXJlIGlzIHNvbWUgcmFyZWx5IGV4ZWN1dGVkIGNhc2Ug
aW4gdGhlIGNoYWluIHRoYXQgcmVxdWlyZXMgYSBsb3QKICAgICAgICAgLy8gICAgb2YgY2hlY2tz
IGFuZCB0aG9zZSBjaGVja3MgYXJlIG5vdCB3YXRjaHBvaW50YWJsZS4KLSAgICAgICAgZm9yIChj
b25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IGdldEJ5U3RhdHVzLnZhcmlhbnRzKCkpIHsK
KyAgICAgICAgZm9yIChjb25zdCBHZXRCeVZhcmlhbnQmIHZhcmlhbnQgOiBnZXRCeVN0YXR1cy52
YXJpYW50cygpKSB7CiAgICAgICAgICAgICBpZiAodmFyaWFudC5pbnRyaW5zaWMoKSAhPSBOb0lu
dHJpbnNpYykgewogICAgICAgICAgICAgICAgIHNldChkZXN0aW5hdGlvbiwKICAgICAgICAgICAg
ICAgICAgICAgYWRkVG9HcmFwaChnZXRCeUlkLCBPcEluZm8oaWRlbnRpZmllciksIE9wSW5mbyhw
cmVkaWN0aW9uKSwgYmFzZSkpOwpAQCAtNDcwNCw3ICs0NzA0LDcgQEAgdm9pZCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlR2V0QnlJZCgKICAgICBhZGRUb0dyYXBoKEZpbHRlckdldEJ5U3RhdHVzLCBP
cEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFkZEdldEJ5U3RhdHVzKGN1
cnJlbnRDb2RlT3JpZ2luKCksIGdldEJ5U3RhdHVzKSksIGJhc2UpOwogCiAgICAgQVNTRVJUKGdl
dEJ5U3RhdHVzLm51bVZhcmlhbnRzKCkgPT0gMSk7Ci0gICAgR2V0QnlJZFZhcmlhbnQgdmFyaWFu
dCA9IGdldEJ5U3RhdHVzWzBdOworICAgIEdldEJ5VmFyaWFudCB2YXJpYW50ID0gZ2V0QnlTdGF0
dXNbMF07CiAgICAgCiAgICAgTm9kZSogbG9hZGVkVmFsdWUgPSBsb2FkKHByZWRpY3Rpb24sIGJh
c2UsIGlkZW50aWZpZXJOdW1iZXIsIHZhcmlhbnQpOwogICAgIGlmICghbG9hZGVkVmFsdWUpIHsK
QEAgLTQ4MDAsNyArNDgwMCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldFByaXZh
dGVOYW1lQnlJZCgKIAogICAgICAgICBWZWN0b3I8TXVsdGlHZXRCeU9mZnNldENhc2UsIDI+IGNh
c2VzOwogCi0gICAgICAgIGZvciAoY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBnZXRC
eVN0YXR1cy52YXJpYW50cygpKSB7CisgICAgICAgIGZvciAoY29uc3QgR2V0QnlWYXJpYW50JiB2
YXJpYW50IDogZ2V0QnlTdGF0dXMudmFyaWFudHMoKSkgewogICAgICAgICAgICAgQVNTRVJUKHZh
cmlhbnQuaW50cmluc2ljKCkgPT0gTm9JbnRyaW5zaWMpOwogICAgICAgICAgICAgQVNTRVJUKHZh
cmlhbnQuY29uZGl0aW9uU2V0KCkuaXNFbXB0eSgpKTsKIApAQCAtNDgyNiw3ICs0ODI2LDcgQEAg
dm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0UHJpdmF0ZU5hbWVCeUlkKAogICAgIGFkZFRv
R3JhcGgoRmlsdGVyR2V0QnlTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0
YXR1c2VzKCkuYWRkR2V0QnlTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgZ2V0QnlTdGF0dXMp
KSwgYmFzZSk7CiAKICAgICBBU1NFUlQoZ2V0QnlTdGF0dXMubnVtVmFyaWFudHMoKSA9PSAxKTsK
LSAgICBHZXRCeUlkVmFyaWFudCB2YXJpYW50ID0gZ2V0QnlTdGF0dXNbMF07CisgICAgR2V0QnlW
YXJpYW50IHZhcmlhbnQgPSBnZXRCeVN0YXR1c1swXTsKIAogICAgIE5vZGUqIGxvYWRlZFZhbHVl
ID0gbG9hZChwcmVkaWN0aW9uLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YXJpYW50KTsKICAg
ICBpZiAoIWxvYWRlZFZhbHVlKSB7CkBAIC00ODY4LDcgKzQ4NjgsNyBAQCB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVEZWxldGVCeUlkKAogICAgICAgICBib29sIGhhc01pc3MgPSBmYWxzZTsK
ICAgICAgICAgYm9vbCBoYXNNaXNzTm9uY29uZmlndXJhYmxlID0gZmFsc2U7CiAKLSAgICAgICAg
Zm9yIChjb25zdCBEZWxldGVCeUlkVmFyaWFudCYgdmFyaWFudCA6IGRlbGV0ZUJ5U3RhdHVzLnZh
cmlhbnRzKCkpIHsKKyAgICAgICAgZm9yIChjb25zdCBEZWxldGVCeVZhcmlhbnQmIHZhcmlhbnQg
OiBkZWxldGVCeVN0YXR1cy52YXJpYW50cygpKSB7CiAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lz
dGVyU3RydWN0dXJlKHZhcmlhbnQub2xkU3RydWN0dXJlKCkpOwogICAgICAgICAgICAgaWYgKHZh
cmlhbnQubmV3U3RydWN0dXJlKCkpIHsKICAgICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVy
U3RydWN0dXJlKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpOwpAQCAtNDg4Myw3ICs0ODgzLDcgQEAg
dm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRGVsZXRlQnlJZCgKICAgICAgICAgICAgIGlmICgo
aGFzTWlzcyAmJiAhaGFzTWlzc05vbmNvbmZpZ3VyYWJsZSkgfHwgKCFoYXNNaXNzICYmIGhhc01p
c3NOb25jb25maWd1cmFibGUpKSB7CiAgICAgICAgICAgICAgICAgU3RydWN0dXJlU2V0IGJhc2VT
ZXQ7CiAKLSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50JiB2YXJp
YW50IDogZGVsZXRlQnlTdGF0dXMudmFyaWFudHMoKSkKKyAgICAgICAgICAgICAgICBmb3IgKGNv
bnN0IERlbGV0ZUJ5VmFyaWFudCYgdmFyaWFudCA6IGRlbGV0ZUJ5U3RhdHVzLnZhcmlhbnRzKCkp
CiAgICAgICAgICAgICAgICAgICAgIGJhc2VTZXQuYWRkKHZhcmlhbnQub2xkU3RydWN0dXJlKCkp
OwogCiAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1f
Z3JhcGguYWRkU3RydWN0dXJlU2V0KGJhc2VTZXQpKSwgYmFzZSk7CkBAIC00OTAxLDcgKzQ5MDEs
NyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVEZWxldGVCeUlkKAogICAgIH0KIAogICAg
IEFTU0VSVChkZWxldGVCeVN0YXR1cy52YXJpYW50cygpLnNpemUoKSA9PSAxKTsKLSAgICBEZWxl
dGVCeUlkVmFyaWFudCB2YXJpYW50ID0gZGVsZXRlQnlTdGF0dXMudmFyaWFudHMoKVswXTsKKyAg
ICBEZWxldGVCeVZhcmlhbnQgdmFyaWFudCA9IGRlbGV0ZUJ5U3RhdHVzLnZhcmlhbnRzKClbMF07
CiAKICAgICBpZiAoIXZhcmlhbnQubmV3U3RydWN0dXJlKCkpIHsKICAgICAgICAgYWRkVG9HcmFw
aChGaWx0ZXJEZWxldGVCeVN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3Rh
dHVzZXMoKS5hZGREZWxldGVCeVN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBkZWxldGVCeVN0
YXR1cykpLCBiYXNlKTsKQEAgLTQ5NDYsNyArNDk0Niw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUluQnlJZChWaXJ0dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24sIE5vZGUqIGJhc2UsIENh
Y2hlCiAgICAgaWYgKHN0YXR1cy5pc1NpbXBsZSgpICYmIE9wdGlvbnM6OnVzZUFjY2Vzc0lubGlu
aW5nKCkpIHsKICAgICAgICAgYm9vbCBhbGxPSyA9IHRydWU7CiAgICAgICAgIE1hdGNoU3RydWN0
dXJlRGF0YSogZGF0YSA9IG1fZ3JhcGgubV9tYXRjaFN0cnVjdHVyZURhdGEuYWRkKCk7Ci0gICAg
ICAgIGZvciAoY29uc3QgSW5CeUlkVmFyaWFudCYgdmFyaWFudCA6IHN0YXR1cy52YXJpYW50cygp
KSB7CisgICAgICAgIGZvciAoY29uc3QgSW5CeVZhcmlhbnQmIHZhcmlhbnQgOiBzdGF0dXMudmFy
aWFudHMoKSkgewogICAgICAgICAgICAgaWYgKCFjaGVjayh2YXJpYW50LmNvbmRpdGlvblNldCgp
KSkgewogICAgICAgICAgICAgICAgIGFsbE9LID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CkBAIC02MzQwLDE1ICs2MzQwLDE1IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBOb2RlKiBicmFuZCA9IGdldChieXRlY29k
ZS5tX2JyYW5kKTsKICAgICAgICAgICAgIGJvb2wgY29tcGlsZWRBc0NoZWNrU3RydWN0dXJlID0g
ZmFsc2U7CiAKLSAgICAgICAgICAgIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzIGNoZWNrU3RhdHVz
ID0gQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6OmNvbXB1dGVGb3IoCi0gICAgICAgICAgICAgICAg
bV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLAotICAgICAgICAgICAgICAgIG1faW5s
aW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ssCi0gICAgICAgICAg
ICAgICAgY3VycmVudENvZGVPcmlnaW4oKSk7Ci0KICAgICAgICAgICAgIGlmICghbV9pbmxpbmVT
dGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkSWRl
bnQpCiAgICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUu
aGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZFR5cGUpCiAgICAgICAgICAgICAgICAgJiYg
IW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5k
ZXgsIEJhZENvbnN0YW50VmFsdWUpKSB7CiAKKyAgICAgICAgICAgICAgICBDaGVja1ByaXZhdGVC
cmFuZFN0YXR1cyBjaGVja1N0YXR1cyA9IENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOjpjb21wdXRl
Rm9yKAorICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxv
Y2ssCisgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAs
IG1faWNDb250ZXh0U3RhY2ssCisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2lu
KCkpOworCiAgICAgICAgICAgICAgICAgaWYgKENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmll
ciA9IGNoZWNrU3RhdHVzLnNpbmdsZUlkZW50aWZpZXIoKSkgewogICAgICAgICAgICAgICAgICAg
ICBtX2dyYXBoLmlkZW50aWZpZXJzKCkuZW5zdXJlKGlkZW50aWZpZXIudWlkKCkpOwogICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQoaWRlbnRpZmllci5pc1N5bWJvbCgpKTsKQEAgLTYzNzcsMTcg
KzYzNzcsMTcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1p
dCkKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
U2V0UHJpdmF0ZUJyYW5kPigpOwogICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29k
ZS5tX2Jhc2UpOwogICAgICAgICAgICAgTm9kZSogYnJhbmQgPSBnZXQoYnl0ZWNvZGUubV9icmFu
ZCk7Ci0KICAgICAgICAgICAgIGJvb2wgaW5saW5lZFNldFByaXZhdGVCcmFuZCA9IGZhbHNlOwot
ICAgICAgICAgICAgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzIHNldFN0YXR1cyA9IFNldFByaXZhdGVC
cmFuZFN0YXR1czo6Y29tcHV0ZUZvcigKLSAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9w
LT5tX3Byb2ZpbGVkQmxvY2ssCi0gICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9i
YXNlbGluZU1hcCwgbV9pY0NvbnRleHRTdGFjaywKLSAgICAgICAgICAgICAgICBjdXJyZW50Q29k
ZU9yaWdpbigpKTsKIAogICAgICAgICAgICAgaWYgKCFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQ
cm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRJZGVudCkKICAgICAgICAgICAg
ICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1
cnJlbnRJbmRleCwgQmFkVHlwZSkKICAgICAgICAgICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1Rv
cC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ29uc3RhbnRW
YWx1ZSkpIHsKIAorICAgICAgICAgICAgICAgIFNldFByaXZhdGVCcmFuZFN0YXR1cyBzZXRTdGF0
dXMgPSBTZXRQcml2YXRlQnJhbmRTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAgICAgICAgICAgICAg
ICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKKyAgICAgICAgICAgICAgICAg
ICAgbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwgbV9pY0NvbnRleHRTdGFjaywKKyAg
ICAgICAgICAgICAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSk7CisKICAgICAgICAgICAgICAg
ICBpZiAoQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gc2V0U3RhdHVzLnNpbmdsZUlk
ZW50aWZpZXIoKSkgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaWRlbnRpZmllci5pc1N5
bWJvbCgpKTsKICAgICAgICAgICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plbiA9IG1fZ3Jh
cGguZnJlZXplU3Ryb25nKGlkZW50aWZpZXIuY2VsbCgpKTsKQEAgLTY2NDAsMTUgKzY2NDAsMTYg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAg
ICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKICAgICAgICAgICAgIE5v
ZGUqIHByb3BlcnR5ID0gZ2V0KGJ5dGVjb2RlLm1fcHJvcGVydHkpOwogICAgICAgICAgICAgYm9v
bCBzaG91bGRDb21waWxlQXNEZWxldGVCeUlkID0gZmFsc2U7Ci0gICAgICAgICAgICBEZWxldGVC
eVN0YXR1cyBkZWxldGVCeVN0YXR1cyA9IERlbGV0ZUJ5U3RhdHVzOjpjb21wdXRlRm9yKAotICAg
ICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKLSAgICAgICAg
ICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNr
LAotICAgICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCkpOwogCiAgICAgICAgICAgICBp
ZiAoIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50
SW5kZXgsIEJhZElkZW50KQogICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5t
X2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRUeXBlKQogICAgICAg
ICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRl
KG1fY3VycmVudEluZGV4LCBCYWRDb25zdGFudFZhbHVlKSkgewogCisgICAgICAgICAgICAgICAg
RGVsZXRlQnlTdGF0dXMgZGVsZXRlQnlTdGF0dXMgPSBEZWxldGVCeVN0YXR1czo6Y29tcHV0ZUZv
cigKKyAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2Nr
LAorICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBt
X2ljQ29udGV4dFN0YWNrLAorICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q29kZU9yaWdpbigp
KTsKKwogICAgICAgICAgICAgICAgIGlmIChDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIg
PSBkZWxldGVCeVN0YXR1cy5zaW5nbGVJZGVudGlmaWVyKCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IGlkZW50aWZpZXIudWlkKCk7CiAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2dyYXBoLmlkZW50aWZpZXJz
KCkuZW5zdXJlKGlkZW50aWZpZXIudWlkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRleCBjNDdkNDkzMDgzMjUu
LmVhZWFmODVlYTI1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
b25zdGFudEZvbGRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKQEAgLTU0Miw3ICs1NDIsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIGFscmVhZHlIYW5kbGVkID0gdHJ1ZTsgLy8gRG9uJ3QgYWxsb3cgdGhl
IGRlZmF1bHQgY29uc3RhbnQgZm9sZGVyIHRvIGRvIHRoaW5ncyB0byB0aGlzLgogCiAgICAgICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRhdGEudmFyaWFudHMuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgICAgICAgICAgICAgRGVsZXRlQnlJZFZhcmlhbnQmIHZhcmlhbnQgPSBk
YXRhLnZhcmlhbnRzW2ldOworICAgICAgICAgICAgICAgICAgICBEZWxldGVCeVZhcmlhbnQmIHZh
cmlhbnQgPSBkYXRhLnZhcmlhbnRzW2ldOwogCiAgICAgICAgICAgICAgICAgICAgIGlmICghYmFz
ZVZhbHVlLmNvbnRhaW5zKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1
Y3R1cmUoKSkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnZhcmlhbnRzW2ktLV0g
PSBkYXRhLnZhcmlhbnRzLmxhc3QoKTsKQEAgLTY1MCw3ICs2NTAsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2dyYXBoLmlkZW50aWZp
ZXJzKCkuZW5zdXJlKHVpZCk7CiAgICAgICAgICAgICAgICAgYWRkRmlsdGVyU3RhdHVzKCk7CiAg
ICAgICAgICAgICAgICAgTXVsdGlHZXRCeU9mZnNldERhdGEqIGRhdGEgPSBtX2dyYXBoLm1fbXVs
dGlHZXRCeU9mZnNldERhdGEuYWRkKCk7Ci0gICAgICAgICAgICAgICAgZm9yIChjb25zdCBHZXRC
eUlkVmFyaWFudCYgdmFyaWFudCA6IHN0YXR1cy52YXJpYW50cygpKSB7CisgICAgICAgICAgICAg
ICAgZm9yIChjb25zdCBHZXRCeVZhcmlhbnQmIHZhcmlhbnQgOiBzdGF0dXMudmFyaWFudHMoKSkg
ewogICAgICAgICAgICAgICAgICAgICBkYXRhLT5jYXNlcy5hcHBlbmQoCiAgICAgICAgICAgICAg
ICAgICAgICAgICBNdWx0aUdldEJ5T2Zmc2V0Q2FzZSgKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqbV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5zdHJ1Y3R1cmVTZXQoKSksCkBA
IC0xMTc0LDcgKzExNzQsNyBAQCBwcml2YXRlOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGVtaXRHZXRCeU9mZnNldCh1bnNpZ25l
ZCBpbmRleEluQmxvY2ssIE5vZGUqIG5vZGUsIGNvbnN0IEFic3RyYWN0VmFsdWUmIGJhc2VWYWx1
ZSwgY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1i
ZXIpCisgICAgdm9pZCBlbWl0R2V0QnlPZmZzZXQodW5zaWduZWQgaW5kZXhJbkJsb2NrLCBOb2Rl
KiBub2RlLCBjb25zdCBBYnN0cmFjdFZhbHVlJiBiYXNlVmFsdWUsIGNvbnN0IEdldEJ5VmFyaWFu
dCYgdmFyaWFudCwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlcikKICAgICB7CiAgICAgICAgIEVk
Z2UgY2hpbGRFZGdlID0gbm9kZS0+Y2hpbGQxKCk7CiAKQEAgLTEyODUsNyArMTI4NSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB2b2lkIGVtaXREZWxldGVCeU9mZnNldCh1
bnNpZ25lZCBpbmRleEluQmxvY2ssIE5vZGUqIG5vZGUsIGNvbnN0IEFic3RyYWN0VmFsdWUmIGJh
c2VWYWx1ZSwgY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIHZhcmlhbnQsIHVuc2lnbmVkIGlkZW50
aWZpZXJOdW1iZXIpCisgICAgdm9pZCBlbWl0RGVsZXRlQnlPZmZzZXQodW5zaWduZWQgaW5kZXhJ
bkJsb2NrLCBOb2RlKiBub2RlLCBjb25zdCBBYnN0cmFjdFZhbHVlJiBiYXNlVmFsdWUsIGNvbnN0
IERlbGV0ZUJ5VmFyaWFudCYgdmFyaWFudCwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlcikKICAg
ICB7CiAgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gbm9kZS0+b3JpZ2luOwogICAgICAgICBE
RkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGUsIG9yaWdpbi5leGl0T0spOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaAppbmRleCAzNWNkNTRjOGEyMWUuLjY5MTYyYmNmZjRmZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTQ5LDggKzQ5LDggQEAKICNpbmNsdWRlICJERkdV
c2VLaW5kLmgiCiAjaW5jbHVkZSAiREZHVmFyaWFibGVBY2Nlc3NEYXRhLmgiCiAjaW5jbHVkZSAi
RE9NSklUU2lnbmF0dXJlLmgiCi0jaW5jbHVkZSAiRGVsZXRlQnlJZFZhcmlhbnQuaCIKLSNpbmNs
dWRlICJHZXRCeUlkVmFyaWFudC5oIgorI2luY2x1ZGUgIkRlbGV0ZUJ5VmFyaWFudC5oIgorI2lu
Y2x1ZGUgIkdldEJ5VmFyaWFudC5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRl
ICJPcGVyYW5kcy5oIgogI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKQEAgLTk5LDcg
Kzk5LDcgQEAgc3RydWN0IE11bHRpUHV0QnlPZmZzZXREYXRhIHsKIAogc3RydWN0IE11bHRpRGVs
ZXRlQnlPZmZzZXREYXRhIHsKICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyOwotICAgIFZl
Y3RvcjxEZWxldGVCeUlkVmFyaWFudCwgMj4gdmFyaWFudHM7CisgICAgVmVjdG9yPERlbGV0ZUJ5
VmFyaWFudCwgMj4gdmFyaWFudHM7CiAKICAgICBib29sIHdyaXRlc1N0cnVjdHVyZXMoKSBjb25z
dDsKICAgICBib29sIGFsbFZhcmlhbnRzU3RvcmVFbXB0eSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAppbmRleCBjNTliNjllMmQ1N2QuLjU0MTBkOTA4
OTZkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKQEAgLTMy
MCw3ICszMjAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgIGNhc2UgTXVsdGlEZWxldGVCeU9mZnNldDoKICAgICAgICAgICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gbm9kZS0+bXVsdGlEZWxldGVCeU9mZnNldERhdGEoKS52YXJpYW50
cy5zaXplKCk7IGktLTspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IERlbGV0ZUJ5
SWRWYXJpYW50JiB2YXJpYW50ID0gbm9kZS0+bXVsdGlEZWxldGVCeU9mZnNldERhdGEoKS52YXJp
YW50c1tpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IERlbGV0ZUJ5VmFyaWFudCYg
dmFyaWFudCA9IG5vZGUtPm11bHRpRGVsZXRlQnlPZmZzZXREYXRhKCkudmFyaWFudHNbaV07CiAg
ICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICF2YXJpYW50Lm5ld1N0cnVj
dHVyZSgpIHx8ICF2YXJpYW50Lm9sZFN0cnVjdHVyZSgpLT5kZmdTaG91bGRXYXRjaCgpKTsKICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA0Zjk3NzBhZDRm
ZmEuLjdmMzAzZjMzMTU4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcApAQCAtNTg5Miw3ICs1ODkyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNv
bXBpbGVEZWxCeShMVmFsdWUgYmFzZSwgU3Vic2NyaXB0S2luZCBzdWJzY3JpcHRWYWx1ZSkKICAg
ICB7CiAgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludDsKLSAgICAgICAgaWYgY29u
c3RleHByIChraW5kID09IERlbEJ5S2luZDo6Tm9ybWFsKSB7CisgICAgICAgIGlmIGNvbnN0ZXhw
ciAoa2luZCA9PSBEZWxCeUtpbmQ6OkJ5SWQpIHsKICAgICAgICAgICAgIHBhdGNocG9pbnQgPSBt
X291dC5wYXRjaHBvaW50KEludDY0KTsKICAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChD
b25zdHJhaW5lZFZhbHVlKGJhc2UsIFZhbHVlUmVwOjpTb21lTGF0ZVJlZ2lzdGVyKSk7CiAgICAg
ICAgIH0gZWxzZSB7CkBAIC01OTMzLDE0ICs1OTMzLDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoaml0LmJyYW5jaElmTm90Q2VsbChiYXNlKSk7CiAK
ICAgICAgICAgICAgICAgICBjb25zdGV4cHIgYXV0byBvcHRpbWl6YXRpb25GdW5jdGlvbiA9IFsm
XSAoKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBEZWxCeUtp
bmQ6Ok5vcm1hbCkKKyAgICAgICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChraW5kID09IERl
bEJ5S2luZDo6QnlJZCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25E
ZWxldGVCeUlkT3B0aW1pemU7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplOwogICAgICAg
ICAgICAgICAgIH0oKTsKIAogICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8gc3Vic2NyaXB0ID0g
WyZdIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChraW5kID09IERlbEJ5S2lu
ZDo6Tm9ybWFsKQorICAgICAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gRGVs
QnlLaW5kOjpCeUlkKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihzdWJzY3JpcHRWYWx1ZS5yYXdCaXRzKCkpOwogICAgICAgICAgICAg
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzY3JhdGNoR1BS
ICE9IHBhcmFtc1syXS5ncHIoKSk7CkBAIC01OTUxLDcgKzU5NTEsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIH0oKTsKIAogICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8gZ2VuZXJhdG9y
ID0gWyZdIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChraW5kID09IERlbEJ5
S2luZDo6Tm9ybWFsKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9
PSBEZWxCeUtpbmQ6OkJ5SWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb3g8
SklURGVsQnlJZEdlbmVyYXRvcj46OmNyZWF0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGlj
LCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2
YWlsYWJsZVJlZ2lzdGVycygpLCBzdWJzY3JpcHRWYWx1ZSwgYmFzZSwKQEAgLTYwMTIsNyArNjAx
Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIHN3aXRjaCAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5k
KCkpIHsKICAgICAgICAgY2FzZSBDZWxsVXNlOiB7CiAgICAgICAgICAgICBMVmFsdWUgYmFzZSA9
IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBjb21waWxlRGVsQnk8RGVs
QnlLaW5kOjpOb3JtYWw+KGJhc2UsIG1fbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpKTsKKyAg
ICAgICAgICAgIGNvbXBpbGVEZWxCeTxEZWxCeUtpbmQ6OkJ5SWQ+KGJhc2UsIG1fbm9kZS0+Y2Fj
aGVhYmxlSWRlbnRpZmllcigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAg
LTYwNTIsNyArNjA1Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgREZHX0NSQVNIKG1f
Z3JhcGgsIG1fbm9kZSwgIkJhZCB1c2Uga2luZCIpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvbXBpbGVEZWxCeTxEZWxCeUtpbmQ6Ok5vcm1h
bEJ5VmFsPihiYXNlLCBzdWJzY3JpcHQpOworICAgICAgICAgICAgY29tcGlsZURlbEJ5PERlbEJ5
S2luZDo6QnlWYWw+KGJhc2UsIHN1YnNjcmlwdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIApAQCAtODk5OSw3ICs4OTk5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgdW5zaWduZWQg
bWlzc05vbmNvbmZpZ3VyYWJsZSA9IDA7CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0
YS52YXJpYW50cy5zaXplKCk7IGktLTspIHsKLSAgICAgICAgICAgIERlbGV0ZUJ5SWRWYXJpYW50
IHZhcmlhbnQgPSBkYXRhLnZhcmlhbnRzW2ldOworICAgICAgICAgICAgRGVsZXRlQnlWYXJpYW50
IHZhcmlhbnQgPSBkYXRhLnZhcmlhbnRzW2ldOwogICAgICAgICAgICAgaWYgKCF2YXJpYW50Lm5l
d1N0cnVjdHVyZSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHZhcmlhbnQucmVzdWx0KCkpCiAg
ICAgICAgICAgICAgICAgICAgICsrbWlzc0NvbmZpZ3VyYWJsZTsKQEAgLTkwMjUsNyArOTAyNSw3
IEBAIHByaXZhdGU6CiAgICAgICAgIFZlY3RvcjxTd2l0Y2hDYXNlLCAyPiBjYXNlczsKICAgICAg
ICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBiYXNlU2V0OwogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBkYXRhLnZhcmlhbnRzLnNpemUoKSwgYmxvY2sgPSAwOyBpLS07KSB7Ci0gICAgICAgICAg
ICBEZWxldGVCeUlkVmFyaWFudCB2YXJpYW50ID0gZGF0YS52YXJpYW50c1tpXTsKKyAgICAgICAg
ICAgIERlbGV0ZUJ5VmFyaWFudCB2YXJpYW50ID0gZGF0YS52YXJpYW50c1tpXTsKICAgICAgICAg
ICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVj
dHVyZSh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKTsKICAgICAgICAgICAgIGJhc2VTZXQuYWRkKHN0
cnVjdHVyZSk7CiAgICAgICAgICAgICBpZiAodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSkKQEAgLTkw
NDEsNyArOTA0MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIFZlY3RvcjxWYWx1ZUZyb21CbG9jaywg
Mj4gcmVzdWx0czsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLnZhcmlhbnRzLnNp
emUoKSwgYmxvY2sgPSAwOyBpLS07KSB7Ci0gICAgICAgICAgICBEZWxldGVCeUlkVmFyaWFudCB2
YXJpYW50ID0gZGF0YS52YXJpYW50c1tpXTsKKyAgICAgICAgICAgIERlbGV0ZUJ5VmFyaWFudCB2
YXJpYW50ID0gZGF0YS52YXJpYW50c1tpXTsKICAgICAgICAgICAgIGlmICghdmFyaWFudC5uZXdT
dHJ1Y3R1cmUoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIApAQCAtMTIzNjgsNyArMTIz
NjgsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBv
aW50ID0gbV9vdXQucGF0Y2hwb2ludChJbnQ2NCk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVu
ZFNvbWVSZWdpc3RlcihiYXNlKTsKLSAgICAgICAgaWYgY29uc3RleHByIChraW5kICE9IEluQnlL
aW5kOjpOb3JtYWwpCisgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCAhPSBJbkJ5S2luZDo6QnlJ
ZCkKICAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihzdWJzY3JpcHRW
YWx1ZSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJl
cDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNo
cG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVt
YmVyVGFnUmVnaXN0ZXIpKTsKQEAgLTEyMzkzLDE0ICsxMjM5MywxNCBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIGF1dG8gYmFzZSA9IEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSk7CiAK
ICAgICAgICAgICAgICAgICBjb25zdCBhdXRvIHN1YnNjcmlwdCA9IFsmXSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBJbkJ5S2luZDo6Tm9ybWFsKQorICAgICAg
ICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gSW5CeUtpbmQ6OkJ5SWQpCiAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN1
YnNjcmlwdFZhbHVlLnJhd0JpdHMoKSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkpOwog
ICAgICAgICAgICAgICAgIH0oKTsKIAogICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8gZ2VuZXJh
dG9yID0gWyZdIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChraW5kID09IElu
QnlLaW5kOjpOb3JtYWwpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChraW5k
ID09IEluQnlLaW5kOjpCeUlkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQm94
PEpJVEluQnlJZEdlbmVyYXRvcj46OmNyZWF0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBqaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkZUTEpJVCwgbm9kZS0+b3JpZ2luLnNlbWFudGlj
LCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2
YWlsYWJsZVJlZ2lzdGVycygpLCBzdWJzY3JpcHRWYWx1ZSwgYmFzZSwKQEAgLTEyNDE1LDcgKzEy
NDE1LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExp
c3Qgc2xvd0Nhc2VzOwogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0
aChqaXQpOwotICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBJbkJ5S2luZDo6
Tm9ybWFsKQorICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBJbkJ5S2luZDo6
QnlJZCkKICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW5lcmF0b3ItPnNs
b3dQYXRoSnVtcCgpKTsKICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6RlRMSklUKSkKQEAgLTEyNDMwLDcg
KzEyNDMwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5s
aW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBz
bG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
Y29uc3RleHByIChraW5kID09IEluQnlLaW5kOjpOb3JtYWwpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBJbkJ5S2luZDo6QnlJZCkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6RlRMSklU
KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1f
c2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbkluQnlJZE9wdGltaXplOwpAQCAtMTI0ODEsMTIgKzEy
NDgxLDEyIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNvbXBpbGVJbkJ5SWQoKQogICAgIHsKLSAg
ICAgICAgY29tcGlsZUluQnk8SW5CeUtpbmQ6Ok5vcm1hbD4obG93Q2VsbChtX25vZGUtPmNoaWxk
MSgpKSwgbV9ub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkpOworICAgICAgICBjb21waWxlSW5C
eTxJbkJ5S2luZDo6QnlJZD4obG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9ub2RlLT5jYWNo
ZWFibGVJZGVudGlmaWVyKCkpOwogICAgIH0KIAogICAgIHZvaWQgY29tcGlsZUluQnlWYWwoKQog
ICAgIHsKLSAgICAgICAgY29tcGlsZUluQnk8SW5CeUtpbmQ6Ok5vcm1hbEJ5VmFsPihsb3dDZWxs
KG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpKTsKKyAgICAg
ICAgY29tcGlsZUluQnk8SW5CeUtpbmQ6OkJ5VmFsPihsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkp
LCBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpKTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBp
bGVIYXNPd25Qcm9wZXJ0eSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAppbmRleCBkZTRmZWI5NTVjZGIuLmViODkwMmFhNWNhZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0yMDcsNyArMjA3LDcgQEAgSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZSwgRW5jb2Rl
ZEpTVmFsdWUsIChKU0dsb2JhbE8KIAogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZy
YW1lLT5jb2RlQmxvY2soKTsKICAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZ0J5KHZt
LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwodm0pLCBpZGVudGlmaWVyKSAm
JiAhc2xvdC5pc1RhaW50ZWRCeU9wYXF1ZU9iamVjdCgpICYmIChzbG90LmlzQ2FjaGVhYmxlVmFs
dWUoKSB8fCBzbG90LmlzQ2FjaGVhYmxlR2V0dGVyKCkgfHwgc2xvdC5pc1Vuc2V0KCkpKQotICAg
ICAgICByZXBhdGNoR2V0QnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgaWRl
bnRpZmllciwgc2xvdCwgKnN0dWJJbmZvLCBHZXRCeUtpbmQ6OlRyeSk7CisgICAgICAgIHJlcGF0
Y2hHZXRCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBpZGVudGlmaWVyLCBz
bG90LCAqc3R1YkluZm8sIEdldEJ5S2luZDo6VHJ5QnlJZCk7CiAKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHNsb3QuZ2V0UHVyZVJlc3VsdCgpKTsKIH0KQEAgLTI2Niw3ICsyNjYsNyBAQCBK
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0QnlJZERpcmVjdE9wdGltaXplLCBF
bmNvZGVkSlNWYWx1ZSwgKEpTR2xvYgogCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxs
RnJhbWUtPmNvZGVCbG9jaygpOwogICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nQnko
dm0sIGNvZGVCbG9jaywgYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCh2bSksIGlkZW50aWZpZXIp
KQotICAgICAgICByZXBhdGNoR2V0QnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1
ZSwgaWRlbnRpZmllciwgc2xvdCwgKnN0dWJJbmZvLCBHZXRCeUtpbmQ6OkRpcmVjdCk7CisgICAg
ICAgIHJlcGF0Y2hHZXRCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBpZGVu
dGlmaWVyLCBzbG90LCAqc3R1YkluZm8sIEdldEJ5S2luZDo6QnlJZERpcmVjdCk7CiAKICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShmb3VuZCA/IHNsb3QuZ2V0
VmFsdWUoZ2xvYmFsT2JqZWN0LCBpZGVudCkgOiBqc1VuZGVmaW5lZCgpKSk7CiB9CkBAIC0zMjks
NyArMzI5LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldEJ5SWRPcHRp
bWl6ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamUKICAgICAgICAgCiAgICAgICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKICAgICAgICAgaWYg
KHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeSh2bSwgY29kZUJsb2NrLCBiYXNlVmFsdWUuc3Ry
dWN0dXJlT3JOdWxsKHZtKSwgaWRlbnRpZmllcikpCi0gICAgICAgICAgICByZXBhdGNoR2V0Qnko
Z2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgaWRlbnRpZmllciwgc2xvdCwgKnN0
dWJJbmZvLCBHZXRCeUtpbmQ6Ok5vcm1hbCk7CisgICAgICAgICAgICByZXBhdGNoR2V0QnkoZ2xv
YmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgaWRlbnRpZmllciwgc2xvdCwgKnN0dWJJ
bmZvLCBHZXRCeUtpbmQ6OkJ5SWQpOwogICAgICAgICByZXR1cm4gZm91bmQgPyBzbG90LmdldFZh
bHVlKGdsb2JhbE9iamVjdCwgaWRlbnQpIDoganNVbmRlZmluZWQoKTsKICAgICB9KSk7CiB9CkBA
IC0zODksNyArMzg5LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldEJ5
SWRXaXRoVGhpc09wdGltaXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2wKICAgICAgICAgCiAgICAg
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKICAgICAg
ICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeSh2bSwgY29kZUJsb2NrLCBiYXNlVmFs
dWUuc3RydWN0dXJlT3JOdWxsKHZtKSwgaWRlbnRpZmllcikpCi0gICAgICAgICAgICByZXBhdGNo
R2V0QnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgaWRlbnRpZmllciwgc2xv
dCwgKnN0dWJJbmZvLCBHZXRCeUtpbmQ6OldpdGhUaGlzKTsKKyAgICAgICAgICAgIHJlcGF0Y2hH
ZXRCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBpZGVudGlmaWVyLCBzbG90
LCAqc3R1YkluZm8sIEdldEJ5S2luZDo6QnlJZFdpdGhUaGlzKTsKICAgICAgICAgcmV0dXJuIGZv
dW5kID8gc2xvdC5nZXRWYWx1ZShnbG9iYWxPYmplY3QsIGlkZW50KSA6IGpzVW5kZWZpbmVkKCk7
CiAgICAgfSkpOwogfQpAQCAtNDQ4LDcgKzQ0OCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVj
CiAgICAgYm9vbCBmb3VuZCA9IGJhc2VPYmplY3QtPmdldFByb3BlcnR5U2xvdChnbG9iYWxPYmpl
Y3QsIGlkZW50LCBzbG90KTsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+
Y29kZUJsb2NrKCk7CiAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeSh2bSwgY29k
ZUJsb2NrLCBiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLCBpZGVudGlmaWVyKSkKLSAgICAgICAg
cmVwYXRjaEluQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIGlkZW50aWZp
ZXIsIGZvdW5kLCBzbG90LCAqc3R1YkluZm8sIEluQnlLaW5kOjpOb3JtYWwpOworICAgICAgICBy
ZXBhdGNoSW5CeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgaWRlbnRpZmll
ciwgZm91bmQsIHNsb3QsICpzdHViSW5mbywgSW5CeUtpbmQ6OkJ5SWQpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZvdW5kKSk7CiB9CiAKQEAgLTQ5MCw3ICs0OTAsNyBA
QCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5CeVZhbE9wdGltaXplLCBFbmNv
ZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZQogICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRl
bnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21DZWxsKGtleS5hc0NlbGwo
KSk7CiAgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nQnkodm0sIGNvZGVCbG9j
aywgYmFzZU9iamVjdC0+c3RydWN0dXJlKHZtKSwgaWRlbnRpZmllcikpCi0gICAgICAgICAgICBy
ZXBhdGNoSW5CeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgaWRlbnRpZmll
ciwgZm91bmQsIHNsb3QsICpzdHViSW5mbywgSW5CeUtpbmQ6Ok5vcm1hbEJ5VmFsKTsKKyAgICAg
ICAgICAgIHJlcGF0Y2hJbkJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBp
ZGVudGlmaWVyLCBmb3VuZCwgc2xvdCwgKnN0dWJJbmZvLCBJbkJ5S2luZDo6QnlWYWwpOwogICAg
IH0KIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZvdW5kKSk7CkBAIC0y
MzgxLDcgKzIzODEsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0QnlW
YWxPcHRpbWl6ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iagogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENhY2hl
YWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21DZWxsKHN1YnNjcmlwdC5hc0NlbGwoKSk7CiAgICAg
ICAgICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeSh2bSwgY29kZUJsb2Nr
LCBiYXNlVmFsdWUuc3RydWN0dXJlT3JOdWxsKHZtKSwgaWRlbnRpZmllcikpCi0gICAgICAgICAg
ICAgICAgICAgIHJlcGF0Y2hHZXRCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVl
LCBpZGVudGlmaWVyLCBzbG90LCAqc3R1YkluZm8sIEdldEJ5S2luZDo6Tm9ybWFsQnlWYWwpOwor
ICAgICAgICAgICAgICAgICAgICByZXBhdGNoR2V0QnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ss
IGJhc2VWYWx1ZSwgaWRlbnRpZmllciwgc2xvdCwgKnN0dWJJbmZvLCBHZXRCeUtpbmQ6OkJ5VmFs
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gZm91bmQgPyBzbG90LmdldFZhbHVlKGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lKSA6IGpzVW5kZWZpbmVkKCk7CiAgICAgICAgICAgICB9KSk7CiAg
ICAgICAgIH0KQEAgLTI2OTUsNyArMjY5NSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsIHNpemVfdCwgKEpTR2xvYmFsT2JqZWN0KiBnCiAg
ICAgICAgIGlmICghcGFyc2VJbmRleChpZGVudCkpIHsKICAgICAgICAgICAgIENvZGVCbG9jayog
Y29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKICAgICAgICAgICAgIGlmIChzdHVi
SW5mby0+Y29uc2lkZXJDYWNoaW5nQnkodm0sIGNvZGVCbG9jaywgYmFzZVZhbHVlLnN0cnVjdHVy
ZU9yTnVsbCh2bSksIGlkZW50aWZpZXIpKQotICAgICAgICAgICAgICAgIHJlcGF0Y2hEZWxldGVC
eShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgc2xvdCwgYmFzZVZhbHVlLCBvbGRTdHJ1Y3R1cmUs
IGlkZW50aWZpZXIsICpzdHViSW5mbywgRGVsQnlLaW5kOjpOb3JtYWwsIGVjbWFNb2RlKTsKKyAg
ICAgICAgICAgICAgICByZXBhdGNoRGVsZXRlQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHNs
b3QsIGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBpZGVudGlmaWVyLCAqc3R1YkluZm8sIERlbEJ5
S2luZDo6QnlJZCwgZWNtYU1vZGUpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yNzYwLDcgKzI3
NjAsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRp
bWl6ZSwgc2l6ZV90LCAoSlNHbG9iYWxPYmplY3QqCiAgICAgICAgICAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CiAgICAgICAgICAgICBDYWNoZWFibGVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tQ2Vs
bChzdWJzY3JpcHQuYXNDZWxsKCkpOwogICAgICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRl
ckNhY2hpbmdCeSh2bSwgY29kZUJsb2NrLCBiYXNlVmFsdWUuc3RydWN0dXJlT3JOdWxsKHZtKSwg
aWRlbnRpZmllcikpCi0gICAgICAgICAgICAgICAgcmVwYXRjaERlbGV0ZUJ5KGdsb2JhbE9iamVj
dCwgY29kZUJsb2NrLCBzbG90LCBiYXNlVmFsdWUsIG9sZFN0cnVjdHVyZSwgaWRlbnRpZmllciwg
KnN0dWJJbmZvLCBEZWxCeUtpbmQ6Ok5vcm1hbEJ5VmFsLCBlY21hTW9kZSk7CisgICAgICAgICAg
ICAgICAgcmVwYXRjaERlbGV0ZUJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBzbG90LCBiYXNl
VmFsdWUsIG9sZFN0cnVjdHVyZSwgaWRlbnRpZmllciwgKnN0dWJJbmZvLCBEZWxCeUtpbmQ6OkJ5
VmFsLCBlY21hTW9kZSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guY3BwCmluZGV4IGI1YWE3Mjc1ZDMxMi4uZGViMWFkODA5MzgzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTE2NSwxNSArMTY1LDE1IEBAIEFMV0FZU19J
TkxJTkUgc3RhdGljIHZvaWQgZmlyZVdhdGNocG9pbnRzQW5kQ2xlYXJTdHViSWZOZWVkZWQoVk0m
IHZtLCBTdHJ1Y3R1cmVTCiBpbmxpbmUgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBhcHBy
b3ByaWF0ZU9wdGltaXppbmdHZXRCeUZ1bmN0aW9uKEdldEJ5S2luZCBraW5kKQogewogICAgIHN3
aXRjaCAoa2luZCkgewotICAgIGNhc2UgR2V0QnlLaW5kOjpOb3JtYWw6CisgICAgY2FzZSBHZXRC
eUtpbmQ6OkJ5SWQ6CiAgICAgICAgIHJldHVybiBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemU7Ci0g
ICAgY2FzZSBHZXRCeUtpbmQ6OldpdGhUaGlzOgorICAgIGNhc2UgR2V0QnlLaW5kOjpCeUlkV2l0
aFRoaXM6CiAgICAgICAgIHJldHVybiBvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZTsK
LSAgICBjYXNlIEdldEJ5S2luZDo6VHJ5OgorICAgIGNhc2UgR2V0QnlLaW5kOjpUcnlCeUlkOgog
ICAgICAgICByZXR1cm4gb3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplOwotICAgIGNhc2UgR2V0
QnlLaW5kOjpEaXJlY3Q6CisgICAgY2FzZSBHZXRCeUtpbmQ6OkJ5SWREaXJlY3Q6CiAgICAgICAg
IHJldHVybiBvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemU7Ci0gICAgY2FzZSBHZXRCeUtp
bmQ6Ok5vcm1hbEJ5VmFsOgorICAgIGNhc2UgR2V0QnlLaW5kOjpCeVZhbDoKICAgICAgICAgcmV0
dXJuIG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemU7CiAgICAgY2FzZSBHZXRCeUtpbmQ6OlByaXZh
dGVOYW1lOgogICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZTsK
QEAgLTE4NiwxNSArMTg2LDE1IEBAIGlubGluZSBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+
IGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5RnVuY3Rpb24oR2V0QnlLaW5kCiBpbmxpbmUgRnVu
Y3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBhcHByb3ByaWF0ZUdldEJ5RnVuY3Rpb24oR2V0QnlL
aW5kIGtpbmQpCiB7CiAgICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBHZXRCeUtpbmQ6Ok5v
cm1hbDoKKyAgICBjYXNlIEdldEJ5S2luZDo6QnlJZDoKICAgICAgICAgcmV0dXJuIG9wZXJhdGlv
bkdldEJ5SWQ7Ci0gICAgY2FzZSBHZXRCeUtpbmQ6OldpdGhUaGlzOgorICAgIGNhc2UgR2V0QnlL
aW5kOjpCeUlkV2l0aFRoaXM6CiAgICAgICAgIHJldHVybiBvcGVyYXRpb25HZXRCeUlkV2l0aFRo
aXM7Ci0gICAgY2FzZSBHZXRCeUtpbmQ6OlRyeToKKyAgICBjYXNlIEdldEJ5S2luZDo6VHJ5QnlJ
ZDoKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblRyeUdldEJ5SWQ7Ci0gICAgY2FzZSBHZXRCeUtp
bmQ6OkRpcmVjdDoKKyAgICBjYXNlIEdldEJ5S2luZDo6QnlJZERpcmVjdDoKICAgICAgICAgcmV0
dXJuIG9wZXJhdGlvbkdldEJ5SWREaXJlY3Q7Ci0gICAgY2FzZSBHZXRCeUtpbmQ6Ok5vcm1hbEJ5
VmFsOgorICAgIGNhc2UgR2V0QnlLaW5kOjpCeVZhbDoKICAgICAgICAgcmV0dXJuIG9wZXJhdGlv
bkdldEJ5VmFsR2VuZXJpYzsKICAgICBjYXNlIEdldEJ5S2luZDo6UHJpdmF0ZU5hbWU6CiAgICAg
ICAgIHJldHVybiBvcGVyYXRpb25HZXRQcml2YXRlTmFtZTsKQEAgLTMzMiw5ICszMzIsOSBAQCBz
dGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDb2RlQmxvY2sqCiAgICAgICAgICAgICAgICAgaWYgKHNsb3QuaXNVbnNldCgp
ICYmIHN0cnVjdHVyZS0+dHlwZUluZm8oKS5nZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclBy
b3BlcnR5QWJzZW5jZSgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNo
ZTsKIAotICAgICAgICAgICAgICAgIC8vIElmIGEga2luZCBpcyBHZXRCeUtpbmQ6OkRpcmVjdCBv
ciBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lLCB3ZSBkbyBub3QgbmVlZCB0byBpbnZlc3RpZ2F0ZSBw
cm90b3R5cGUgY2hhaW5zIGZ1cnRoZXIuCisgICAgICAgICAgICAgICAgLy8gSWYgYSBraW5kIGlz
IEdldEJ5S2luZDo6QnlJZERpcmVjdCBvciBHZXRCeUtpbmQ6OlByaXZhdGVOYW1lLCB3ZSBkbyBu
b3QgbmVlZCB0byBpbnZlc3RpZ2F0ZSBwcm90b3R5cGUgY2hhaW5zIGZ1cnRoZXIuCiAgICAgICAg
ICAgICAgICAgLy8gQ2FjaGVhYmlsaXR5IGp1c3QgZGVwZW5kcyBvbiB0aGUgaGVhZCBzdHJ1Y3R1
cmUuCi0gICAgICAgICAgICAgICAgaWYgKGtpbmQgIT0gR2V0QnlLaW5kOjpEaXJlY3QgJiYgIWlz
UHJpdmF0ZSkgeworICAgICAgICAgICAgICAgIGlmIChraW5kICE9IEdldEJ5S2luZDo6QnlJZERp
cmVjdCAmJiAhaXNQcml2YXRlKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gY2FjaGVTdGF0
dXMgPSBwcmVwYXJlQ2hhaW5Gb3JDYWNoaW5nKGdsb2JhbE9iamVjdCwgYmFzZUNlbGwsIHNsb3Qp
OwogICAgICAgICAgICAgICAgICAgICBpZiAoIWNhY2hlU3RhdHVzKQogICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CkBAIC0zODMsNyArMzgzLDcgQEAgc3RhdGlj
IElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ29kZUJsb2NrKgogICAgICAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVDdXN0b20o
KSAmJiBzbG90LmRvbUF0dHJpYnV0ZSgpKQogICAgICAgICAgICAgICAgIGRvbUF0dHJpYnV0ZSA9
IHNsb3QuZG9tQXR0cmlidXRlKCk7CiAKLSAgICAgICAgICAgIGlmIChraW5kID09IEdldEJ5S2lu
ZDo6VHJ5KSB7CisgICAgICAgICAgICBpZiAoa2luZCA9PSBHZXRCeUtpbmQ6OlRyeUJ5SWQpIHsK
ICAgICAgICAgICAgICAgICBBY2Nlc3NDYXNlOjpBY2Nlc3NUeXBlIHR5cGU7CiAgICAgICAgICAg
ICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpKQogICAgICAgICAgICAgICAgICAgICB0
eXBlID0gQWNjZXNzQ2FzZTo6TG9hZDsKQEAgLTQxNyw3ICs0MTcsNyBAQCBzdGF0aWMgSW5saW5l
Q2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
b2RlQmxvY2sqCiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAg
ICAgIHR5cGUgPSBBY2Nlc3NDYXNlOjpDdXN0b21WYWx1ZUdldHRlcjsKIAotICAgICAgICAgICAg
ICAgICAgICBpZiAoa2luZCA9PSBHZXRCeUtpbmQ6OldpdGhUaGlzICYmIHR5cGUgPT0gQWNjZXNz
Q2FzZTo6Q3VzdG9tQWNjZXNzb3JHZXR0ZXIgJiYgZG9tQXR0cmlidXRlKQorICAgICAgICAgICAg
ICAgICAgICBpZiAoa2luZCA9PSBHZXRCeUtpbmQ6OkJ5SWRXaXRoVGhpcyAmJiB0eXBlID09IEFj
Y2Vzc0Nhc2U6OkN1c3RvbUFjY2Vzc29yR2V0dGVyICYmIGRvbUF0dHJpYnV0ZSkKICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogCiAgICAgICAgICAgICAgICAg
ICAgIG5ld0Nhc2UgPSBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUoCkBAIC00MzgsMTQg
KzQzOCwxNCBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqCiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwogICAgICAgICAgICAgc3dpdGNoIChr
aW5kKSB7Ci0gICAgICAgICAgICBjYXNlIEdldEJ5S2luZDo6Tm9ybWFsOgotICAgICAgICAgICAg
Y2FzZSBHZXRCeUtpbmQ6OldpdGhUaGlzOgotICAgICAgICAgICAgY2FzZSBHZXRCeUtpbmQ6OlRy
eToKLSAgICAgICAgICAgIGNhc2UgR2V0QnlLaW5kOjpEaXJlY3Q6CisgICAgICAgICAgICBjYXNl
IEdldEJ5S2luZDo6QnlJZDoKKyAgICAgICAgICAgIGNhc2UgR2V0QnlLaW5kOjpCeUlkV2l0aFRo
aXM6CisgICAgICAgICAgICBjYXNlIEdldEJ5S2luZDo6VHJ5QnlJZDoKKyAgICAgICAgICAgIGNh
c2UgR2V0QnlLaW5kOjpCeUlkRGlyZWN0OgogICAgICAgICAgICAgY2FzZSBHZXRCeUtpbmQ6OlBy
aXZhdGVOYW1lQnlJZDoKICAgICAgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJB
c0p1bXBJbkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRT
dHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSBHZXRCeUtpbmQ6Ok5vcm1hbEJ5VmFsOgorICAgICAgICAgICAg
Y2FzZSBHZXRCeUtpbmQ6OkJ5VmFsOgogICAgICAgICAgICAgY2FzZSBHZXRCeUtpbmQ6OlByaXZh
dGVOYW1lOgogICAgICAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcElu
QWNjZXNzTm90VXNpbmdJbmxpbmVBY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbywgQ29kZUxvY2F0
aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2RlKCkpKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKQEAgLTkxNSw3ICs5MTUsNyBAQCB2b2lkIHJlcGF0Y2hEZWxldGVCeShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgRGVsZXRl
UAogCiAgICAgaWYgKHRyeUNhY2hlRGVsZXRlQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIHNs
b3QsIGJhc2VWYWx1ZSwgb2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHN0dWJJbmZvLCBraW5k
LCBlY21hTW9kZSkgPT0gR2l2ZVVwT25DYWNoZSkgewogICAgICAgICBMT0dfSUMoKElDRXZlbnQ6
OkRlbEJ5UmVwbGFjZVdpdGhHZW5lcmljLCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKGdsb2Jh
bE9iamVjdC0+dm0oKSksIElkZW50aWZpZXI6OmZyb21VaWQodm0sIHByb3BlcnR5TmFtZS51aWQo
KSkpKTsKLSAgICAgICAgaWYgKGtpbmQgPT0gRGVsQnlLaW5kOjpOb3JtYWwpCisgICAgICAgIGlm
IChraW5kID09IERlbEJ5S2luZDo6QnlJZCkKICAgICAgICAgICAgIHJlcGF0Y2hTbG93UGF0aENh
bGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1
YkluZm8sIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYyk7CkBAIC0xMDIwLDEwICsxMDIwLDEw
IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluQnkoCiAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChyZXN1bHQuY29kZSgpKTsKIAogICAgICAgICAgICAgc3dpdGNoIChraW5k
KSB7Ci0gICAgICAgICAgICBjYXNlIEluQnlLaW5kOjpOb3JtYWw6CisgICAgICAgICAgICBjYXNl
IEluQnlLaW5kOjpCeUlkOgogICAgICAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1
YkFzSnVtcEluQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJ
VFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBjYXNlIEluQnlLaW5kOjpOb3JtYWxCeVZhbDoKKyAgICAgICAgICAg
IGNhc2UgSW5CeUtpbmQ6OkJ5VmFsOgogICAgICAgICAgICAgICAgIElubGluZUFjY2Vzczo6cmV3
aXJlU3R1YkFzSnVtcEluQWNjZXNzTm90VXNpbmdJbmxpbmVBY2Nlc3MoY29kZUJsb2NrLCBzdHVi
SW5mbywgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+KHJlc3VsdC5jb2Rl
KCkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTEwNDIsNyAr
MTA0Miw3IEBAIHZvaWQgcmVwYXRjaEluQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTT2JqZWN0KiBiCiAKICAgICBpZiAodHJ5Q2FjaGVJbkJ5
KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHdhc0Zv
dW5kLCBzbG90LCBzdHViSW5mbywga2luZCkgPT0gR2l2ZVVwT25DYWNoZSkgewogICAgICAgICBM
T0dfSUMoKElDRXZlbnQ6OkluUmVwbGFjZVdpdGhHZW5lcmljLCBiYXNlT2JqZWN0LT5jbGFzc0lu
Zm8oZ2xvYmFsT2JqZWN0LT52bSgpKSwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgcHJvcGVydHlO
YW1lLnVpZCgpKSkpOwotICAgICAgICBpZiAoa2luZCA9PSBJbkJ5S2luZDo6Tm9ybWFsKQorICAg
ICAgICBpZiAoa2luZCA9PSBJbkJ5S2luZDo6QnlJZCkKICAgICAgICAgICAgIHJlcGF0Y2hTbG93
UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3BlcmF0aW9uSW5CeUlkR2VuZXJpYyk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29kZUJsb2NrLCBz
dHViSW5mbywgb3BlcmF0aW9uSW5CeVZhbEdlbmVyaWMpOwpAQCAtMTY3OSwxNCArMTY3OSwxNCBA
QCB2b2lkIHJlc2V0R2V0QnkoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZv
JiBzdHViSW5mbywgR2V0QnlLaW5kIGtpbgogewogICAgIHJlcGF0Y2hTbG93UGF0aENhbGwoY29k
ZUJsb2NrLCBzdHViSW5mbywgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlGdW5jdGlvbihraW5k
KSk7CiAgICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBHZXRCeUtpbmQ6Ok5vcm1hbDoKLSAg
ICBjYXNlIEdldEJ5S2luZDo6V2l0aFRoaXM6Ci0gICAgY2FzZSBHZXRCeUtpbmQ6OlRyeToKLSAg
ICBjYXNlIEdldEJ5S2luZDo6RGlyZWN0OgorICAgIGNhc2UgR2V0QnlLaW5kOjpCeUlkOgorICAg
IGNhc2UgR2V0QnlLaW5kOjpCeUlkV2l0aFRoaXM6CisgICAgY2FzZSBHZXRCeUtpbmQ6OlRyeUJ5
SWQ6CisgICAgY2FzZSBHZXRCeUtpbmQ6OkJ5SWREaXJlY3Q6CiAgICAgY2FzZSBHZXRCeUtpbmQ6
OlByaXZhdGVOYW1lQnlJZDoKICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJ
bkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBH
ZXRCeUtpbmQ6Ok5vcm1hbEJ5VmFsOgorICAgIGNhc2UgR2V0QnlLaW5kOjpCeVZhbDoKICAgICBj
YXNlIEdldEJ5S2luZDo6UHJpdmF0ZU5hbWU6CiAgICAgICAgIElubGluZUFjY2Vzczo6cmVzZXRT
dHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZv
KTsKICAgICAgICAgYnJlYWs7CkBAIC0xNzE5LDcgKzE3MTksNyBAQCB2b2lkIHJlc2V0UHV0QnlJ
RChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQogCiB2
b2lkIHJlc2V0RGVsQnkoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBz
dHViSW5mbywgRGVsQnlLaW5kIGtpbmQpCiB7Ci0gICAgaWYgKGtpbmQgPT0gRGVsQnlLaW5kOjpO
b3JtYWwpCisgICAgaWYgKGtpbmQgPT0gRGVsQnlLaW5kOjpCeUlkKQogICAgICAgICByZXBhdGNo
U2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8sIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRp
bWl6ZSk7CiAgICAgZWxzZQogICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywg
c3R1YkluZm8sIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUpOwpAQCAtMTcyOSwxMSArMTcy
OSwxMSBAQCB2b2lkIHJlc2V0RGVsQnkoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0
dWJJbmZvJiBzdHViSW5mbywgRGVsQnlLaW5kIGtpbgogdm9pZCByZXNldEluQnkoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgSW5CeUtpbmQga2luZCkK
IHsKICAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICBjYXNlIEluQnlLaW5kOjpOb3JtYWw6CisgICAg
Y2FzZSBJbkJ5S2luZDo6QnlJZDoKICAgICAgICAgcmVwYXRjaFNsb3dQYXRoQ2FsbChjb2RlQmxv
Y2ssIHN0dWJJbmZvLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7CiAgICAgICAgIElubGluZUFj
Y2Vzczo6cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbyk7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgSW5CeUtpbmQ6Ok5vcm1hbEJ5VmFsOgorICAgIGNhc2UgSW5C
eUtpbmQ6OkJ5VmFsOgogICAgICAgICByZXBhdGNoU2xvd1BhdGhDYWxsKGNvZGVCbG9jaywgc3R1
YkluZm8sIG9wZXJhdGlvbkluQnlWYWxPcHRpbWl6ZSk7CiAgICAgICAgIElubGluZUFjY2Vzczo6
cmVzZXRTdHViQXNKdW1wSW5BY2Nlc3NOb3RVc2luZ0lubGluZUFjY2Vzcyhjb2RlQmxvY2ssIHN0
dWJJbmZvKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlcGF0Y2guaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCmlu
ZGV4IDU5YTE1YjkwZWM5NC4uNzJjNjZiMjg5MTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlcGF0Y2guaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Jl
cGF0Y2guaApAQCAtMzQsMjMgKzM0LDIzIEBACiBuYW1lc3BhY2UgSlNDIHsKIAogZW51bSBjbGFz
cyBHZXRCeUtpbmQgewotICAgIE5vcm1hbCwKLSAgICBOb3JtYWxCeVZhbCwKLSAgICBUcnksCi0g
ICAgV2l0aFRoaXMsCi0gICAgRGlyZWN0LAorICAgIEJ5SWQsCisgICAgQnlWYWwsCisgICAgVHJ5
QnlJZCwKKyAgICBCeUlkV2l0aFRoaXMsCisgICAgQnlJZERpcmVjdCwKICAgICBQcml2YXRlTmFt
ZSwKICAgICBQcml2YXRlTmFtZUJ5SWQsCiB9OwogCiBlbnVtIGNsYXNzIERlbEJ5S2luZCB7Ci0g
ICAgTm9ybWFsLAotICAgIE5vcm1hbEJ5VmFsCisgICAgQnlJZCwKKyAgICBCeVZhbAogfTsKIAog
ZW51bSBjbGFzcyBJbkJ5S2luZCB7Ci0gICAgTm9ybWFsLAotICAgIE5vcm1hbEJ5VmFsCisgICAg
QnlJZCwKKyAgICBCeVZhbAogfTsKIAogdm9pZCByZXBhdGNoQXJyYXlHZXRCeVZhbChKU0dsb2Jh
bE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBpbmRleCwgU3RydWN0
dXJlU3R1YkluZm8mKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>