<?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>11794</bug_id>
          
          <creation_ts>2006-12-09 14:39:28 -0800</creation_ts>
          <short_desc>fix lifetime problems affecting Frame&apos;s ownerElement pointer</short_desc>
          <delta_ts>2006-12-11 22:30:51 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>ddkilzer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>42557</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-12-09 14:39:28 -0800</bug_when>
    <thetext>Brady ran into some crashes while doing his history work. At the bottom are problems with the lifetime of the Frame&apos;s ownerElement pointer. I have a patch to address this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42558</commentid>
    <comment_count>1</comment_count>
      <attachid>11792</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-12-09 14:40:05 -0800</bug_when>
    <thetext>Created attachment 11792
patch, no change log yet</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42640</commentid>
    <comment_count>2</comment_count>
      <attachid>11810</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-12-11 15:18:51 -0800</bug_when>
    <thetext>Created attachment 11810
patch with change log</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42642</commentid>
    <comment_count>3</comment_count>
      <attachid>11810</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2006-12-11 15:52:55 -0800</bug_when>
    <thetext>Comment on attachment 11810
patch with change log

Fix the ChangeLog merging madness, and r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42643</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-12-11 15:53:40 -0800</bug_when>
    <thetext>Committed revision 18163.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42646</commentid>
    <comment_count>5</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-12-11 16:45:40 -0800</bug_when>
    <thetext>It appears that this change caused a layout test regression:

fast/frames/iframe-option-crash

http://build.webkit.org/results/post-commit-powerpc-mac-os-x/4654/
http://build.webkit.org/post-commit-powerpc-mac-os-x/builds/4654/step-layout-test/0
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42648</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-12-11 17:27:50 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; It appears that this change caused a layout test regression:
&gt; 
&gt; fast/frames/iframe-option-crash
&gt; 
&gt; http://build.webkit.org/results/post-commit-powerpc-mac-os-x/4654/
&gt; http://build.webkit.org/post-commit-powerpc-mac-os-x/builds/4654/step-layout-test/0

Darn.

I don&apos;t think this is a real regression -- I think I just need to update this test result. The point of the test is to check if you crash.

I&apos;ll try to get to this tonight.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42537</commentid>
    <comment_count>7</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-12-11 22:30:51 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; I don&apos;t think this is a real regression -- I think I just need to update this
&gt; test result. The point of the test is to check if you crash. 

Layout test results fixed in r18167.

</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11792</attachid>
            <date>2006-12-09 14:40:05 -0800</date>
            <delta_ts>2006-12-09 14:40:05 -0800</delta_ts>
            <desc>patch, no change log yet</desc>
            <filename>FrameOwnerPointerPatch.txt</filename>
            <type>text/plain</type>
            <size>57667</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTgxMDYpCisrKyBKYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjY3LDE2ICsxMjY3LDExIEBACiAJCTA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9q
ZWN0IG9iamVjdCAqLyA9IHsKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJCQlidWlsZENvbmZpZ3Vy
YXRpb25MaXN0ID0gMTQ5QzI3NzEwODkwMkFGRTAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRp
b24gbGlzdCBmb3IgUEJYUHJvamVjdCAiSmF2YVNjcmlwdENvcmUiICovOwotCQkJYnVpbGRTZXR0
aW5ncyA9IHsKLQkJCX07Ci0JCQlidWlsZFN0eWxlcyA9ICgKLQkJCQlCQzRDNjQ5QjBCMkEzNTk0
MDBFNTczNTIgLyogRGV2ZWxvcG1lbnQgKi8sCi0JCQkJQkM0QzY0OUMwQjJBMzU5NDAwRTU3MzUy
IC8qIERlcGxveW1lbnQgKi8sCi0JCQkpOwogCQkJaGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDE7
CiAJCQltYWluR3JvdXAgPSAwODY3RDY5MUZFODQwMjhGQzAyQUFDMDcgLyogSmF2YVNjcmlwdENv
cmUgKi87CiAJCQlwcm9kdWN0UmVmR3JvdXAgPSAwMzQ3NjhERkZGMzhBNTA0MTFEQjlDOEIgLyog
UHJvZHVjdHMgKi87CiAJCQlwcm9qZWN0RGlyUGF0aCA9ICIiOworCQkJcHJvamVjdFJvb3QgPSAi
IjsKIAkJCXRhcmdldHMgPSAoCiAJCQkJOTMyRjVCM0UwODIyQTFDNzAwNzM2OTc1IC8qIEphdmFT
Y3JpcHRDb3JlICovLAogCQkJCTkzNUY2OUY1MDgyNDRGRUEwMDNEMUE0NSAvKiBkZnRhYmxlcyAq
LywKSW5kZXg6IFdlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTgxMDYpCisrKyBXZWJDb3JlL0NNYWtlTGlzdHMudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC04NzksNiArODc5LDcgQEAgc2V0KFdlYkNvcmVfU1JDUwogICAg
IGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAogICAgIGh0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2Uu
Y3BwCiAgICAgaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNwcAorICAgIGh0bWwvSFRNTEZyYW1lT3du
ZXJFbGVtZW50LmNwcAogICAgIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKICAgICBodG1s
L0hUTUxHZW5lcmljRm9ybUVsZW1lbnQuY3BwCiAgICAgaHRtbC9IVE1MSGVhZEVsZW1lbnQuY3Bw
CkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29y
ZS5leHAJKHJldmlzaW9uIDE4MTA2KQorKysgV2ViQ29yZS9XZWJDb3JlLmV4cAkod29ya2luZyBj
b3B5KQpAQCAtMTU1LDcgKzE1NSw3IEBAIF9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXI0bG9hZEVQ
MTJOU1VSTFIKIF9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXI0bG9hZEVQTlNfMTREb2N1bWVudExv
YWRlckUKIF9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXI0bG9hZEVQTlNfMTREb2N1bWVudExvYWRl
ckVOU18xM0ZyYW1lTG9hZFR5cGVFTjNXVEYxMFBhc3NSZWZQdHJJTlNfOUZvcm1TdGF0ZUVFRQog
X19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjRsb2FkRVJLTlNfNEtVUkxFUE5TXzVFdmVudEUKLV9f
Wk43V2ViQ29yZTExRnJhbWVMb2FkZXI0bG9hZEVSS05TXzRLVVJMRVJLTlNfNlN0cmluZ0VOU18x
M0ZyYW1lTG9hZFR5cGVFUzZfUE5TXzVFdmVudEVQTlNfN0VsZW1lbnRFUktOM1dURjdIYXNoTWFw
SVM0X1M0X05TQ183U3RySGFzaElTNF9FRU5TQ18xMEhhc2hUcmFpdHNJUzRfRUVTSF9FRQorX19a
TjdXZWJDb3JlMTFGcmFtZUxvYWRlcjRsb2FkRVJLTlNfNEtVUkxFUktOU182U3RyaW5nRU5TXzEz
RnJhbWVMb2FkVHlwZUVTNl9QTlNfNUV2ZW50RVBOU18xNUhUTUxGb3JtRWxlbWVudEVSS04zV1RG
N0hhc2hNYXBJUzRfUzRfTlNDXzdTdHJIYXNoSVM0X0VFTlNDXzEwSGFzaFRyYWl0c0lTNF9FRVNI
X0VFCiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyNWNsZWFyRWIKIF9fWk43V2ViQ29yZTExRnJh
bWVMb2FkZXI2cmVsb2FkRXYKIF9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXI3Y2FuTG9hZEVQNU5T
VVJMUktOU182U3RyaW5nRVJiCkBAIC0yMzUsNyArMjM1LDYgQEAgX19aTjdXZWJDb3JlNUNhY2hl
MTFzZXREaXNhYmxlZEViCiBfX1pON1dlYkNvcmU1Q2FjaGUxM2dldFN0YXRpc3RpY3NFdgogX19a
TjdXZWJDb3JlNUNhY2hlMTRzZXRNYXhpbXVtU2l6ZUVqCiBfX1pON1dlYkNvcmU1RnJhbWUxMXNl
dFNldHRpbmdzRVBOU184U2V0dGluZ3NFCi1fX1pON1dlYkNvcmU1RnJhbWUxMm93bmVyRWxlbWVu
dEV2CiBfX1pON1dlYkNvcmU1RnJhbWUxN3NldFdpbmRvd0hhc0ZvY3VzRWIKIF9fWk43V2ViQ29y
ZTVGcmFtZTIwc2V0U2VsZWN0aW9uRnJvbU5vbmVFdgogX19aTjdXZWJDb3JlNUZyYW1lMjFzZXRQ
cm9oaWJpdHNTY3JvbGxpbmdFYgpAQCAtMjU0LDggKzI1MywxMiBAQCBfX1pON1dlYkNvcmU2RWRp
dG9yMTNjYW5ESFRNTFBhc3RlRXYKIF9fWk43V2ViQ29yZTZFZGl0b3IxM3BlcmZvcm1EZWxldGVF
dgogX19aTjdXZWJDb3JlNkVkaXRvcjEzdHJ5REhUTUxQYXN0ZUV2CiBfX1pON1dlYkNvcmU2RWRp
dG9yMjFhcHBseVN0eWxlVG9TZWxlY3Rpb25FUE5TXzE5Q1NTU3R5bGVEZWNsYXJhdGlvbkVOU18x
MEVkaXRBY3Rpb25FCitfX1pON1dlYkNvcmU2RWRpdG9yMjFpc1NlbGVjdGlvbk1pc3NwZWxsZWRF
dgorX19aTjdXZWJDb3JlNkVkaXRvcjI0YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nRWIKK19fWk43
V2ViQ29yZTZFZGl0b3IyNGlzU2VsZWN0aW9uVW5ncmFtbWF0aWNhbEV2CiBfX1pON1dlYkNvcmU2
RWRpdG9yMzBhcHBseVBhcmFncmFwaFN0eWxlVG9TZWxlY3Rpb25FUE5TXzE5Q1NTU3R5bGVEZWNs
YXJhdGlvbkVOU18xMEVkaXRBY3Rpb25FCiBfX1pON1dlYkNvcmU2RWRpdG9yMzBkZWxldGVTZWxl
Y3Rpb25XaXRoU21hcnREZWxldGVFYgorX19aTjdXZWJDb3JlNkVkaXRvcjMyZ3Vlc3Nlc0ZvclVu
Z3JhbW1hdGljYWxTZWxlY3Rpb25FdgogX19aTjdXZWJDb3JlNkVkaXRvcjNjdXRFdgogX19aTjdX
ZWJDb3JlNkVkaXRvcjRjb3B5RXYKIF9fWk43V2ViQ29yZTZFZGl0b3I1cGFzdGVFdgpAQCAtMjc1
LDcgKzI3OCw3IEBAIF9fWk43V2ViQ29yZThGcmFtZU1hYzE4d2luZG93U2NyaXB0T2JqZWMKIF9f
Wk43V2ViQ29yZThGcmFtZU1hYzIwd2luZG93U2NyaXB0TlBPYmplY3RFdgogX19aTjdXZWJDb3Jl
OEZyYW1lTWFjMjZkYXNoYm9hcmRSZWdpb25zRGljdGlvbmFyeUV2CiBfX1pON1dlYkNvcmU4RnJh
bWVNYWM5c2V0QnJpZGdlRVAxOFdlYkNvcmVGcmFtZUJyaWRnZQotX19aTjdXZWJDb3JlOEZyYW1l
TWFjQzFFUE5TXzRQYWdlRVBOU183RWxlbWVudEVQTlNfMTdGcmFtZUxvYWRlckNsaWVudEUKK19f
Wk43V2ViQ29yZThGcmFtZU1hY0MxRVBOU180UGFnZUVQTlNfMjFIVE1MRnJhbWVPd25lckVsZW1l
bnRFUE5TXzE3RnJhbWVMb2FkZXJDbGllbnRFCiBfX1pON1dlYkNvcmU4SW50UG9pbnRDMUVSSzhf
TlNQb2ludAogX19aTjdXZWJDb3JlOHBhcnNlVVJMRVJLTlNfNlN0cmluZ0UKIF9fWk43V2ViQ29y
ZTlGbG9hdFJlY3RDMUVSSzdfTlNSZWN0CkBAIC0zNzEsNiArMzc0LDcgQEAgX19aTks3V2ViQ29y
ZTRGb250MTFwcmltYXJ5Rm9udEV2CiBfX1pOSzdXZWJDb3JlNEtVUkw4Z2V0TlNVUkxFdgogX19a
Tks3V2ViQ29yZTVGcmFtZTEwaXNGcmFtZVNldEV2CiBfX1pOSzdXZWJDb3JlNUZyYW1lMTJldmVu
dEhhbmRsZXJFdgorX19aTks3V2ViQ29yZTVGcmFtZTEyb3duZXJFbGVtZW50RXYKIF9fWk5LN1dl
YkNvcmU1RnJhbWUxM3NlbGVjdGlvblJlY3RFdgogX19aTks3V2ViQ29yZTVGcmFtZTE1cmV2ZWFs
U2VsZWN0aW9uRVJLTlNfMTFSZW5kZXJMYXllcjE1U2Nyb2xsQWxpZ25tZW50RQogX19aTks3V2Vi
Q29yZTVGcmFtZTE2aW5WaWV3U291cmNlTW9kZUV2CkBAIC0zOTgsMTAgKzQwMiw2IEBAIF9fWk5L
N1dlYkNvcmU2RWRpdG9yN2NhbkNvcHlFdgogX19aTks3V2ViQ29yZTZFZGl0b3I3Y2FuRWRpdEV2
CiBfX1pOSzdXZWJDb3JlNkVkaXRvcjhjYW5QYXN0ZUV2CiBfX1pOSzdXZWJDb3JlNkVkaXRvcjlj
YW5EZWxldGVFdgotX19aTjdXZWJDb3JlNkVkaXRvcjMyZ3Vlc3Nlc0ZvclVuZ3JhbW1hdGljYWxT
ZWxlY3Rpb25FdgotX19aTjdXZWJDb3JlNkVkaXRvcjIxaXNTZWxlY3Rpb25NaXNzcGVsbGVkRXYK
LV9fWk43V2ViQ29yZTZFZGl0b3IyNGFkdmFuY2VUb05leHRNaXNzcGVsbGluZ0ViCi1fX1pON1dl
YkNvcmU2RWRpdG9yMjRpc1NlbGVjdGlvblVuZ3JhbW1hdGljYWxFdgogX19aTks3V2ViQ29yZTZT
dHJpbmcxNmRlcHJlY2F0ZWRTdHJpbmdFdgogX19aTks3V2ViQ29yZTZTdHJpbmc3aXNFbXB0eUV2
CiBfX1pOSzdXZWJDb3JlN0VsZW1lbnQxMmdldEF0dHJpYnV0ZUVSS05TXzEzUXVhbGlmaWVkTmFt
ZUUKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvV2ViQ29yZVNvdXJjZXMuYmtsCShyZXZpc2lvbiAxODEwNikKKysrIFdlYkNvcmUvV2ViQ29y
ZVNvdXJjZXMuYmtsCSh3b3JraW5nIGNvcHkpCkBAIC02MjcsNiArNjI3LDcgQEAKICAgICAgICAg
aHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCiAgICAgICAgIGh0bWwvSFRNTEZyYW1lRWxlbWVudC5j
cHAKICAgICAgICAgaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAKKyAgICAgICAgaHRtbC9I
VE1MRnJhbWVPd25lckVsZW1lbnQuY3BwCiAgICAgICAgIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVu
dC5jcHAKICAgICAgICAgaHRtbC9IVE1MR2VuZXJpY0Zvcm1FbGVtZW50LmNwcAogICAgICAgICBo
dG1sL0hUTUxIUkVsZW1lbnQuY3BwCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAxODEwNikKKysrIFdlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNDk0Myw2
ICs0OTQzLDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXC4uXGh0bWxcSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcCIKKwkJCQk+CisJCQk8L0Zp
bGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5caHRtbFxIVE1MRnJhbWVPd25l
ckVsZW1lbnQuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0
aD0iLi5cLi5caHRtbFxIVE1MRnJhbWVTZXRFbGVtZW50LmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+
CkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMTgxMDYpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMTUyNCw2ICsxNTI0LDggQEAKIAkJOTNFMjI3RTQwQUY1ODlBRDAw
RDQ4MzI0IC8qIFN1YnJlc291cmNlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTIyN0RGMEFGNTg5QUQwMEQ0ODMyNCAvKiBTdWJyZXNv
dXJjZUxvYWRlci5jcHAgKi87IH07CiAJCTkzRTIyQTZGMEFGNUU5NDEwMEQ0ODMyNCAvKiBQYWdl
U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTNFMjJBNkUwQUY1RTk0MTAwRDQ4MzI0IC8qIFBhZ2VTdGF0ZS5jcHAgKi87IH07CiAJCTkzRTIy
QTczMEFGNUU5NEMwMEQ0ODMyNCAvKiBQYWdlU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTIyQTcyMEFGNUU5NEMwMEQ0ODMyNCAvKiBQYWdl
U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk5M0UyNDFGRjBCMkI0RTQwMDBDNzMyQTEgLyogSFRNTEZyYW1lT3duZXJFbGVtZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0UyNDFGRTBCMkI0
RTQwMDBDNzMyQTEgLyogSFRNTEZyYW1lT3duZXJFbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTNFMjQyNUYwQjJCNTA5NTAwQzczMkEx
IC8qIEhUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5M0UyNDI1RTBCMkI1MDk1MDBDNzMyQTEgLyogSFRNTEZyYW1l
T3duZXJFbGVtZW50LmNwcCAqLzsgfTsKIAkJOTNFNjJEOUIwOTg1RjQxNjAwRTFCNUUzIC8qIFN5
c3RlbVRpbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzRTYyRDk5MDk4NUY0MTYwMEUxQjVFMyAvKiBTeXN0ZW1UaW1lLmggKi87IH07CiAJCTkzRUIx
Njk1MDlGODgwQjAwMDkxRjhGRiAvKiBXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFQjE2OTQwOUY4ODBCMDAw
OTFGOEZGIC8qIFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0gKi87IH07CiAJCTkzRUIxNjk3MDlG
ODgwQzAwMDkxRjhGRiAvKiBXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0VCMTY5NjA5Rjg4MEMwMDA5MUY4RkYg
LyogV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0xNzE1LDcgKzE3MTcsNyBAQAogCQlBODEzNjlDRDA5NzM3
NEY2MDBENzQ0NjMgLyogSFRNTElucHV0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODEzNjlCMTA5NzM3NEY1MDBENzQ0NjMgLyogSFRN
TElucHV0RWxlbWVudC5jcHAgKi87IH07CiAJCUE4MTM2OUNFMDk3Mzc0RjYwMEQ3NDQ2MyAvKiBI
VE1MR2VuZXJpY0Zvcm1FbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBODEzNjlCMjA5NzM3NEY1MDBENzQ0NjMgLyogSFRNTEdlbmVyaWNGb3Jt
RWxlbWVudC5oICovOyB9OwogCQlBODEzNjlDRjA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTEdlbmVy
aWNGb3JtRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBODEzNjlCMzA5NzM3NEY1MDBENzQ0NjMgLyogSFRNTEdlbmVyaWNGb3JtRWxlbWVu
dC5jcHAgKi87IH07Ci0JCUE4MTM2OUQwMDk3Mzc0RjYwMEQ3NDQ2MyAvKiBIVE1MRm9ybUVsZW1l
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTM2
OUI0MDk3Mzc0RjUwMEQ3NDQ2MyAvKiBIVE1MRm9ybUVsZW1lbnQuaCAqLzsgfTsKKwkJQTgxMzY5
RDAwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxGb3JtRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgxMzY5QjQwOTczNzRGNTAwRDc0NDYzIC8q
IEhUTUxGb3JtRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUE4MTM2OUQxMDk3Mzc0RjYwMEQ3NDQ2MyAvKiBIVE1MRm9ybUVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgxMzY5
QjUwOTczNzRGNTAwRDc0NDYzIC8qIEhUTUxGb3JtRWxlbWVudC5jcHAgKi87IH07CiAJCUE4MTM2
OUQyMDk3Mzc0RjYwMEQ3NDQ2MyAvKiBIVE1MQnV0dG9uRWxlbWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgxMzY5QjYwOTczNzRGNTAwRDc0NDYz
IC8qIEhUTUxCdXR0b25FbGVtZW50LmggKi87IH07CiAJCUE4MTM2OUQzMDk3Mzc0RjYwMEQ3NDQ2
MyAvKiBIVE1MQnV0dG9uRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBODEzNjlCNzA5NzM3NEY1MDBENzQ0NjMgLyogSFRNTEJ1dHRvbkVs
ZW1lbnQuY3BwICovOyB9OwpAQCAtNDUxOCw2ICs0NTIwLDggQEAKIAkJOTNFMjI3REYwQUY1ODlB
RDAwRDQ4MzI0IC8qIFN1YnJlc291cmNlTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFN1YnJlc291cmNlTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTNFMjJBNkUwQUY1RTk0MTAwRDQ4MzI0IC8qIFBhZ2VTdGF0ZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlU3RhdGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5M0UyMkE3MjBBRjVFOTRDMDBENDgzMjQgLyogUGFnZVN0
YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2VTdGF0ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0UyNDFGRTBCMkI0RTQwMDBDNzMyQTEgLyogSFRN
TEZyYW1lT3duZXJFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhU
TUxGcmFtZU93bmVyRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Uy
NDI1RTBCMkI1MDk1MDBDNzMyQTEgLyogSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxGcmFtZU93bmVyRWxlbWVudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRTYyRDk5MDk4NUY0MTYwMEUxQjVFMyAv
KiBTeXN0ZW1UaW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5c3RlbVRp
bWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNFQjE2OTQwOUY4ODBCMDAwOTFG
OEZGIC8qIFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5M0VCMTY5NjA5Rjg4MEMwMDA5MUY4RkYgLyogV2ViQ29yZVN5c3Rl
bUludGVyZmFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlU3lz
dGVtSW50ZXJmYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03ODEzLDYgKzc4
MTcsOCBAQAogCQkJCUE4NzFERTE3MEExNTJBQzgwMEIxMkE2OCAvKiBIVE1MRnJhbWVFbGVtZW50
LmNwcCAqLywKIAkJCQlBODcxREUxRjBBMTUyQUM4MDBCMTJBNjggLyogSFRNTEZyYW1lRWxlbWVu
dC5oICovLAogCQkJCTg1NTU0Mjk1MEFBNDkzODgwMEJBODlGMiAvKiBIVE1MRnJhbWVFbGVtZW50
LmlkbCAqLywKKwkJCQk5M0UyNDFGRTBCMkI0RTQwMDBDNzMyQTEgLyogSFRNTEZyYW1lT3duZXJF
bGVtZW50LmggKi8sCisJCQkJOTNFMjQyNUUwQjJCNTA5NTAwQzczMkExIC8qIEhUTUxGcmFtZU93
bmVyRWxlbWVudC5jcHAgKi8sCiAJCQkJQTg3MURFMjIwQTE1MkFDODAwQjEyQTY4IC8qIEhUTUxG
cmFtZVNldEVsZW1lbnQuY3BwICovLAogCQkJCUE4NzFERTFDMEExNTJBQzgwMEIxMkE2OCAvKiBI
VE1MRnJhbWVTZXRFbGVtZW50LmggKi8sCiAJCQkJODU1NTQyOTYwQUE0OTM4ODAwQkE4OUYyIC8q
IEhUTUxGcmFtZVNldEVsZW1lbnQuaWRsICovLApAQCAtMTA4MzAsNiArMTA4MzYsNyBAQAogCQkJ
CUUxRDhFMzE2MEIyOUUzOUMwMEY0QkFGNiAvKiBIVFRQUGFyc2Vycy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMxOEM1RDAwQjJBODg2RjAwMTg0NjFEIC8qIFRleHRCcmVha0l0ZXJhdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBQTRDM0E3NzBCMkIxNjc5MDAyMzM0QTIgLyogU3R5bGVFbGVtZW50
LmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0UyNDFGRjBCMkI0RTQwMDBDNzMyQTEgLyogSFRNTEZy
YW1lT3duZXJFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTEyMTQ4LDYgKzEyMTU1LDcgQEAK
IAkJCQlFMUQ4RTMxQTBCMjlFM0I2MDBGNEJBRjYgLyogSFRUUFBhcnNlcnMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkMxOEM1RDEwQjJBODg2RjAwMTg0NjFEIC8qIFRleHRCcmVha0l0ZXJhdG9y
SUNVLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFBNEMzQTc2MEIyQjE2NzkwMDIzMzRBMiAvKiBT
dHlsZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTNFMjQyNUYwQjJCNTA5NTAwQzcz
MkExIC8qIEhUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdl
YkNvcmUvYnJpZGdlL21hYy9GcmFtZU1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdl
L21hYy9GcmFtZU1hYy5oCShyZXZpc2lvbiAxODEwNikKKysrIFdlYkNvcmUvYnJpZGdlL21hYy9G
cmFtZU1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw3IEBAIGNsYXNzIEZyYW1lTWFj
IDogcHVibGljIEZyYW1lIHsKICAgICBmcmllbmQgY2xhc3MgRnJhbWU7CiAKIHB1YmxpYzoKLSAg
ICBGcmFtZU1hYyhQYWdlKiwgRWxlbWVudCosIEZyYW1lTG9hZGVyQ2xpZW50Kik7CisgICAgRnJh
bWVNYWMoUGFnZSosIEhUTUxGcmFtZU93bmVyRWxlbWVudCosIEZyYW1lTG9hZGVyQ2xpZW50Kik7
CiAgICAgfkZyYW1lTWFjKCk7CiAKICAgICB2b2lkIHNldEJyaWRnZShXZWJDb3JlRnJhbWVCcmlk
Z2UqKTsKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL21hYy9GcmFtZU1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JyaWRnZS9tYWMvRnJhbWVNYWMubW0JKHJldmlzaW9uIDE4MTA2KQorKysgV2Vi
Q29yZS9icmlkZ2UvbWFjL0ZyYW1lTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjksNyArMTI5
LDcgQEAgc3RhdGljIFNFTCBzZWxlY3RvckZvcktleUV2ZW50KEtleWJvYXJkRQogICAgIHJldHVy
biAwOwogfQogCi1GcmFtZU1hYzo6RnJhbWVNYWMoUGFnZSogcGFnZSwgRWxlbWVudCogb3duZXJF
bGVtZW50LCBGcmFtZUxvYWRlckNsaWVudCogZnJhbWVMb2FkZXJDbGllbnQpCitGcmFtZU1hYzo6
RnJhbWVNYWMoUGFnZSogcGFnZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQs
IEZyYW1lTG9hZGVyQ2xpZW50KiBmcmFtZUxvYWRlckNsaWVudCkKICAgICA6IEZyYW1lKHBhZ2Us
IG93bmVyRWxlbWVudCwgZnJhbWVMb2FkZXJDbGllbnQpCiAgICAgLCBfYnJpZGdlKG5pbCkKICAg
ICAsIF9iaW5kaW5nUm9vdCgwKQpJbmRleDogV2ViQ29yZS9icmlkZ2UvbWFjL1dlYkNvcmVGcmFt
ZUJyaWRnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL21hYy9XZWJDb3JlRnJhbWVC
cmlkZ2UuaAkocmV2aXNpb24gMTgxMDYpCisrKyBXZWJDb3JlL2JyaWRnZS9tYWMvV2ViQ29yZUZy
YW1lQnJpZGdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDI2ICszMiwxMyBAQAogI2ltcG9ydCA8
V2ViQ29yZS9UZXh0QWZmaW5pdHkuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEdyYW51bGFyaXR5
Lmg+CiAKLSNpZmRlZiBfX2NwbHVzcGx1cwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xh
c3MgRWxlbWVudDsKICAgICBjbGFzcyBGcmFtZU1hYzsKKyAgICBjbGFzcyBIVE1MRnJhbWVPd25l
ckVsZW1lbnQ7CiAgICAgY2xhc3MgUGFnZTsKICAgICBjbGFzcyBTdHJpbmc7CiB9CiAKLXR5cGVk
ZWYgV2ViQ29yZTo6RWxlbWVudCBXZWJDb3JlRWxlbWVudDsKLXR5cGVkZWYgV2ViQ29yZTo6RnJh
bWVNYWMgV2ViQ29yZUZyYW1lTWFjOwotCi0jZWxzZQotCi1AY2xhc3MgTlNNZW51OwotQGNsYXNz
IFdlYkNvcmVFbGVtZW50OwotQGNsYXNzIFdlYkNvcmVGcmFtZU1hYzsKLQotI2VuZGlmCi0KIEBj
bGFzcyBET01DU1NTdHlsZURlY2xhcmF0aW9uOwogQGNsYXNzIERPTURvY3VtZW50OwogQGNsYXNz
IERPTURvY3VtZW50RnJhZ21lbnQ7CkBAIC0xMTQsMTMgKzEwMSwxMyBAQCB0eXBlZGVmIGVudW0g
ewogQGludGVyZmFjZSBXZWJDb3JlRnJhbWVCcmlkZ2UgOiBOU09iamVjdAogewogQHB1YmxpYwot
ICAgIFdlYkNvcmVGcmFtZU1hYyogbV9mcmFtZTsKKyAgICBXZWJDb3JlOjpGcmFtZU1hYyogbV9m
cmFtZTsKIAogICAgIEJPT0wgX3Nob3VsZENyZWF0ZVJlbmRlcmVyczsKICAgICBCT09MIF9jbG9z
ZWQ7CiB9CiAKLS0gKFdlYkNvcmVGcmFtZU1hYyopX2ZyYW1lOyAvLyB1bmRlcnNjb3JlIHRvIHBy
ZXZlbnQgY29uZmxpY3Qgd2l0aCAtW05TVmlldyBmcmFtZV0KKy0gKFdlYkNvcmU6OkZyYW1lTWFj
KilfZnJhbWU7IC8vIHVuZGVyc2NvcmUgdG8gcHJldmVudCBjb25mbGljdCB3aXRoIC1bTlNWaWV3
IGZyYW1lXQogCiArIChXZWJDb3JlRnJhbWVCcmlkZ2UgKilicmlkZ2VGb3JET01Eb2N1bWVudDoo
RE9NRG9jdW1lbnQgKilkb2N1bWVudDsKIApAQCAtMjk3LDcgKzI4NCw4IEBAIHR5cGVkZWYgZW51
bSB7CiAKIC0gKHZvaWQpc2V0U3RhdHVzVGV4dDooTlNTdHJpbmcgKilzdGF0dXM7CiAKLS0gKFdl
YkNvcmVGcmFtZUJyaWRnZSAqKWNyZWF0ZUNoaWxkRnJhbWVOYW1lZDooTlNTdHJpbmcgKilmcmFt
ZU5hbWUgd2l0aFVSTDooTlNVUkwgKilVUkwgcmVmZXJyZXI6KGNvbnN0IFdlYkNvcmU6OlN0cmlu
ZyYpcmVmZXJyZXIgb3duZXJFbGVtZW50OihXZWJDb3JlRWxlbWVudCAqKW93bmVyRWxlbWVudCBh
bGxvd3NTY3JvbGxpbmc6KEJPT0wpYWxsb3dzU2Nyb2xsaW5nIG1hcmdpbldpZHRoOihpbnQpd2lk
dGggbWFyZ2luSGVpZ2h0OihpbnQpaGVpZ2h0OworLSAoV2ViQ29yZUZyYW1lQnJpZGdlICopY3Jl
YXRlQ2hpbGRGcmFtZU5hbWVkOihOU1N0cmluZyAqKWZyYW1lTmFtZSB3aXRoVVJMOihOU1VSTCAq
KVVSTCByZWZlcnJlcjooY29uc3QgV2ViQ29yZTo6U3RyaW5nJilyZWZlcnJlcgorICAgIG93bmVy
RWxlbWVudDooV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50ICopb3duZXJFbGVtZW50IGFs
bG93c1Njcm9sbGluZzooQk9PTClhbGxvd3NTY3JvbGxpbmcgbWFyZ2luV2lkdGg6KGludCl3aWR0
aCBtYXJnaW5IZWlnaHQ6KGludCloZWlnaHQ7CiAKIC0gKE5TV2luZG93ICopd2luZG93OwogCklu
ZGV4OiBXZWJDb3JlL2JyaWRnZS93aW4vRnJhbWVXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYnJpZGdlL3dpbi9GcmFtZVdpbi5jcHAJKHJldmlzaW9uIDE4MTA2KQorKysgV2ViQ29yZS9i
cmlkZ2Uvd2luL0ZyYW1lV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZyYW1lV2luOjpGcmFtZVdpbihQYWdlKiBwYWdlLCBF
bGVtZW50KiBvd25lckVsZW1lbnQsIEZyYW1lV2luQ2xpZW50KiBjbGllbnQpCitGcmFtZVdpbjo6
RnJhbWVXaW4oUGFnZSogcGFnZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQs
IEZyYW1lV2luQ2xpZW50KiBjbGllbnQpCiAgICAgOiBGcmFtZShwYWdlLCBvd25lckVsZW1lbnQs
IG5ldyBGcmFtZUxvYWRlckNsaWVudFdpbigpKQogICAgICwgbV9jbGllbnQoY2xpZW50KQogewpJ
bmRleDogV2ViQ29yZS9icmlkZ2Uvd2luL0ZyYW1lV2luLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9icmlkZ2Uvd2luL0ZyYW1lV2luLmgJKHJldmlzaW9uIDE4MTA2KQorKysgV2ViQ29yZS9icmlk
Z2Uvd2luL0ZyYW1lV2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgRnJhbWVXaW4gOiBwdWJsaWMgRnJhbWUgewogICAg
IHB1YmxpYzoKLSAgICAgICAgRnJhbWVXaW4oUGFnZSosIEVsZW1lbnQqLCBGcmFtZVdpbkNsaWVu
dCopOworICAgICAgICBGcmFtZVdpbihQYWdlKiwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgRnJh
bWVXaW5DbGllbnQqKTsKICAgICAgICAgdmlydHVhbCB+RnJhbWVXaW4oKTsKIAogICAgICAgICB2
aXJ0dWFsIEtKUzo6QmluZGluZ3M6Okluc3RhbmNlKiBnZXRFbWJlZEluc3RhbmNlRm9yV2lkZ2V0
KFdpZGdldCopOwpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMTgxMDYpCisrKyBXZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDcgQEAKICNpbmNsdWRl
ICJIVE1MQm9keUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MRWxlbWVudEZhY3RvcnkuaCIKKyNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MSW1hZ2VMb2FkZXIuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTExpbmtFbGVtZW50LmgiCkBAIC0yMzU4LDcgKzIzNTksNyBA
QCB2b2lkIERvY3VtZW50OjppbWFnZUxvYWRFdmVudFRpbWVyRmlyZWQoCiAgICAgZGlzcGF0Y2hJ
bWFnZUxvYWRFdmVudHNOb3coKTsKIH0KIAotRWxlbWVudCAqRG9jdW1lbnQ6Om93bmVyRWxlbWVu
dCgpIGNvbnN0CitFbGVtZW50KiBEb2N1bWVudDo6b3duZXJFbGVtZW50KCkgY29uc3QKIHsKICAg
ICBpZiAoIWZyYW1lKCkpCiAgICAgICAgIHJldHVybiAwOwpJbmRleDogV2ViQ29yZS9odG1sL0hU
TUxFbWJlZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRW1iZWRF
bGVtZW50LmNwcAkocmV2aXNpb24gMTgxMDYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMiwyNiArMjEyLDYgQEAgdm9pZCBIVE1MRW1i
ZWRFbGVtZW50OjpzZXRUeXBlKGNvbnN0IFN0cgogfQogCiAjaWZkZWYgU1ZHX1NVUFBPUlQKLURv
Y3VtZW50KiBIVE1MRW1iZWRFbGVtZW50Ojpjb250ZW50RG9jdW1lbnQoKSBjb25zdAotewotICAg
IC8vIEZJWE1FOiBUaGUgZnJhbWUgbG9hZGluZyBjb2RlIHNob3VsZCBiZSBtb3ZlZCBvdXQgb2Yg
dGhlIHJlbmRlciB0cmVlCi0gICAgLy8gYW5kIGludG8gdGhlIERPTS4gIE9uY2UgdGhhdCBoYXBw
ZW5zLCB0aGlzIGZ1bmN0aW9uIHNob3VsZCBsb29rIG1vcmUgbGlrZQotICAgIC8vIEhUTUxGcmFt
ZUVsZW1lbnQ6OmNvbnRlbnREb2N1bWVudCgpIGFuZCBub3QgZGVwZW5kIG9uIHRoZSByZW5kZXJl
ci4KLSAgICBSZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlbmRlcmVyKCk7Ci0gICAgaWYgKG9iamVj
dCAmJiBvYmplY3QtPmlzV2lkZ2V0KCkpIHsKLSAgICAgICAgUmVuZGVyV2lkZ2V0KiByZW5kZXJX
aWRnZXQgPSBzdGF0aWNfY2FzdDxSZW5kZXJXaWRnZXQqPihvYmplY3QpOwotICAgICAgICBpZiAo
cmVuZGVyV2lkZ2V0KSB7Ci0gICAgICAgICAgICBXaWRnZXQqIHdpZGdldCA9IHJlbmRlcldpZGdl
dC0+d2lkZ2V0KCk7Ci0gICAgICAgICAgICBpZiAod2lkZ2V0ICYmIHdpZGdldC0+aXNGcmFtZVZp
ZXcoKSkgewotICAgICAgICAgICAgICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gc3RhdGljX2Nh
c3Q8RnJhbWVWaWV3Kj4od2lkZ2V0KTsKLSAgICAgICAgICAgICAgICBpZiAoZnJhbWVWaWV3LT5m
cmFtZSgpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnJhbWVWaWV3LT5mcmFtZSgpLT5k
b2N1bWVudCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiAw
OwotfQotCiBTVkdEb2N1bWVudCogSFRNTEVtYmVkRWxlbWVudDo6Z2V0U1ZHRG9jdW1lbnQoRXhj
ZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7CiAgICAgRG9jdW1lbnQqIGRvYyA9IGNvbnRlbnREb2N1
bWVudCgpOwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5oCShyZXZpc2lvbiAxODEwNikKKysr
IFdlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDE2
ICsyOSwxMyBAQAogCiAjaWYgVVNFKEpBVkFTQ1JJUFRDT1JFX0JJTkRJTkdTKQogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL3J1bnRpbWUuaD4KLSNlbHNlCi1uYW1lc3BhY2UgS0pTIHsgbmFtZXNw
YWNlIEJpbmRpbmdzIHsgY2xhc3MgSW5zdGFuY2U7IH0gfQogI2VuZGlmCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgU1ZHRG9jdW1lbnQ7CiAKLWNsYXNzIEhUTUxFbWJlZEVsZW1lbnQg
OiBwdWJsaWMgSFRNTFBsdWdJbkVsZW1lbnQKLXsKK2NsYXNzIEhUTUxFbWJlZEVsZW1lbnQgOiBw
dWJsaWMgSFRNTFBsdWdJbkVsZW1lbnQgewogcHVibGljOgogICAgIEhUTUxFbWJlZEVsZW1lbnQo
RG9jdW1lbnQqKTsKICAgICB+SFRNTEVtYmVkRWxlbWVudCgpOwpAQCAtNjgsNyArNjUsNiBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRUeXBlKGNvbnN0IFN0cmluZyYpOwogICAgIAogI2lmZGVmIFNW
R19TVVBQT1JUCi0gICAgRG9jdW1lbnQqIGNvbnRlbnREb2N1bWVudCgpIGNvbnN0OwogICAgIFNW
R0RvY3VtZW50KiBnZXRTVkdEb2N1bWVudChFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAjZW5kaWYK
IApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNwcAkocmV2aXNpb24gMTgxMDYpCisrKyBX
ZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDYg
KzIyLDcgQEAKICAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBs
ZSBQbGFjZSAtIFN1aXRlIDMzMCwKICAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgogICov
CisKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVFbGVtZW50LmgiCiAK
QEAgLTMwLDcgKzMxLDYgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJSZW5k
ZXJGcmFtZS5oIgogCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhU
TUxOYW1lczsKQEAgLTUxLDExICs1MSwxOSBAQCBSZW5kZXJPYmplY3QqIEhUTUxGcmFtZUVsZW1l
bnQ6OmNyZWF0ZVJlCiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlckZyYW1lKHRoaXMpOwog
fQogCitzdGF0aWMgaW5saW5lIEhUTUxGcmFtZVNldEVsZW1lbnQqIGNvbnRhaW5pbmdGcmFtZVNl
dEVsZW1lbnQoTm9kZSogbm9kZSkKK3sKKyAgICB3aGlsZSAoKG5vZGUgPSBub2RlLT5wYXJlbnRO
b2RlKCkpKQorICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShmcmFtZXNldFRhZykpCisgICAg
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTEZyYW1lU2V0RWxlbWVudCo+KG5vZGUpOwor
ICAgIHJldHVybiAwOworfQorCiB2b2lkIEhUTUxGcmFtZUVsZW1lbnQ6OmF0dGFjaCgpCiB7CiAg
ICAgSFRNTEZyYW1lRWxlbWVudEJhc2U6OmF0dGFjaCgpOwogICAgIAotICAgIGlmIChIVE1MRnJh
bWVTZXRFbGVtZW50KiBmcmFtZVNldEVsZW1lbnQgPSBjb250YWluaW5nRnJhbWVTZXRFbGVtZW50
KCkpIHsKKyAgICBpZiAoSFRNTEZyYW1lU2V0RWxlbWVudCogZnJhbWVTZXRFbGVtZW50ID0gY29u
dGFpbmluZ0ZyYW1lU2V0RWxlbWVudCh0aGlzKSkgewogICAgICAgICBpZiAoIW1fZnJhbWVCb3Jk
ZXJTZXQpCiAgICAgICAgICAgICBtX2ZyYW1lQm9yZGVyID0gZnJhbWVTZXRFbGVtZW50LT5mcmFt
ZUJvcmRlcigpOwogICAgICAgICBpZiAoIW1fbm9SZXNpemUpCkluZGV4OiBXZWJDb3JlL2h0bWwv
SFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1M
RnJhbWVFbGVtZW50QmFzZS5jcHAJKHJldmlzaW9uIDE4MTA2KQorKysgV2ViQ29yZS9odG1sL0hU
TUxGcmFtZUVsZW1lbnRCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCB1
c2luZyBuYW1lc3BhY2UgRXZlbnROYW1lczsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAK
IEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpIVE1MRnJhbWVFbGVtZW50QmFzZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCAqZG9jKQotICAgIDogSFRNTEVsZW1lbnQodGFnTmFt
ZSwgZG9jKQorICAgIDogSFRNTEZyYW1lT3duZXJFbGVtZW50KHRhZ05hbWUsIGRvYykKICAgICAs
IG1fc2Nyb2xsaW5nKFNjcm9sbGJhckF1dG8pCiAgICAgLCBtX21hcmdpbldpZHRoKC0xKQogICAg
ICwgbV9tYXJnaW5IZWlnaHQoLTEpCkBAIC0yMTksMzQgKzIxOSw2IEBAIHZvaWQgSFRNTEZyYW1l
RWxlbWVudEJhc2U6OnNldEZvY3VzKGJvb2wKICAgICAgICAgcmVuZGVyRnJhbWUtPndpZGdldCgp
LT5jbGVhckZvY3VzKCk7CiB9CiAKLUZyYW1lKiBIVE1MRnJhbWVFbGVtZW50QmFzZTo6Y29udGVu
dEZyYW1lKCkgY29uc3QKLXsKLSAgICAvLyBTdGFydCB3aXRoIHRoZSBwYXJ0IHRoYXQgY29udGFp
bnMgdGhpcyBlbGVtZW50LCBvdXIgb3duZXJEb2N1bWVudC4KLSAgICBGcmFtZSogcGFyZW50RnJh
bWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpOwotICAgIGlmICghcGFyZW50RnJhbWUpCi0gICAgICAg
IHJldHVybiAwOwotCi0gICAgLy8gRmluZCB0aGUgcGFydCBmb3IgdGhlIHN1YmZyYW1lIHRoYXQg
dGhpcyBlbGVtZW50IHJlcHJlc2VudHMuCi0gICAgcmV0dXJuIHBhcmVudEZyYW1lLT50cmVlKCkt
PmNoaWxkKG1fbmFtZSk7Ci19Ci0KLURvY3VtZW50KiBIVE1MRnJhbWVFbGVtZW50QmFzZTo6Y29u
dGVudERvY3VtZW50KCkgY29uc3QKLXsKLSAgICBGcmFtZSogZnJhbWUgPSBjb250ZW50RnJhbWUo
KTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gZnJhbWUt
PmRvY3VtZW50KCk7Ci19Ci0KLUhUTUxGcmFtZVNldEVsZW1lbnQqIEhUTUxGcmFtZUVsZW1lbnRC
YXNlOjpjb250YWluaW5nRnJhbWVTZXRFbGVtZW50KCkgY29uc3QKLXsKLSAgICBmb3IgKE5vZGUq
IG5vZGUgPSBwYXJlbnROb2RlKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCkpCi0g
ICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKGZyYW1lc2V0VGFnKSkKLSAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxIVE1MRnJhbWVTZXRFbGVtZW50Kj4obm9kZSk7Ci0KLSAgICByZXR1
cm4gMDsKLX0KLQogYm9vbCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6aXNVUkxBdHRyaWJ1dGUoQXR0
cmlidXRlICphdHRyKSBjb25zdAogewogICAgIHJldHVybiBhdHRyLT5uYW1lKCkgPT0gc3JjQXR0
cjsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oCShyZXZpc2lvbiAxODEwNikK
KysrIFdlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiwyNSArMjYsMTYgQEAKICNpZm5kZWYgSFRNTEZyYW1lRWxlbWVudEJhc2VfaAogI2RlZmlu
ZSBIVE1MRnJhbWVFbGVtZW50QmFzZV9oCiAKLSNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgorI2lu
Y2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRnJhbWU7Ci1jbGFzcyBIVE1MRnJhbWVT
ZXRFbGVtZW50OwotCi1jbGFzcyBIVE1MRnJhbWVFbGVtZW50QmFzZSA6IHB1YmxpYyBIVE1MRWxl
bWVudAotewotICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJGcmFtZTsKLSAgICBmcmllbmQgY2xhc3Mg
UmVuZGVyUGFydE9iamVjdDsKLQorY2xhc3MgSFRNTEZyYW1lRWxlbWVudEJhc2UgOiBwdWJsaWMg
SFRNTEZyYW1lT3duZXJFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBIVE1MRnJhbWVFbGVtZW50QmFz
ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLQogICAgIHZpcnR1YWwgdm9pZCBw
YXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKIAotICAgIHZvaWQgaW5zZXJ0
ZWRJbnRvRG9jdW1lbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQo
KTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFJlbW92ZSgpOwogCiAgICAgdmlydHVhbCB2b2lkIGF0
dGFjaCgpOwpAQCAtNTMsMTQgKzQ0LDExIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBp
c0ZvY3VzYWJsZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzZXRGb2N1cyhib29sKTsKLQot
ICAgIEZyYW1lKiBjb250ZW50RnJhbWUoKSBjb25zdDsKLSAgICBEb2N1bWVudCogY29udGVudERv
Y3VtZW50KCkgY29uc3Q7Ci0gICAgSFRNTEZyYW1lU2V0RWxlbWVudCogY29udGFpbmluZ0ZyYW1l
U2V0RWxlbWVudCgpIGNvbnN0OwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0
ZShBdHRyaWJ1dGUqKSBjb25zdDsKIAogICAgIFNjcm9sbGJhck1vZGUgc2Nyb2xsaW5nTW9kZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsaW5nOyB9CisgICAgYm9vbCBoYXNGcmFtZUJvcmRlcigp
IGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVCb3JkZXI7IH0KICAgICBpbnQgZ2V0TWFyZ2luV2lkdGgo
KSBjb25zdCB7IHJldHVybiBtX21hcmdpbldpZHRoOyB9CiAgICAgaW50IGdldE1hcmdpbkhlaWdo
dCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFyZ2luSGVpZ2h0OyB9CiAKQEAgLTc5LDEzICs2NywxMyBA
QCBwdWJsaWM6CiAgICAgU3RyaW5nIG5hbWUoKSBjb25zdDsKICAgICB2b2lkIHNldE5hbWUoY29u
c3QgU3RyaW5nJik7CiAKKyAgICBib29sIG5vUmVzaXplKCkgY29uc3QgeyByZXR1cm4gbV9ub1Jl
c2l6ZTsgfQogICAgIHZvaWQgc2V0Tm9SZXNpemUoYm9vbCk7Ci0gICAgYm9vbCBub1Jlc2l6ZSgp
IHsgcmV0dXJuIG1fbm9SZXNpemU7IH0KIAogICAgIFN0cmluZyBzY3JvbGxpbmcoKSBjb25zdDsK
ICAgICB2b2lkIHNldFNjcm9sbGluZyhjb25zdCBTdHJpbmcmKTsKIAotICAgIHZpcnR1YWwgU3Ry
aW5nIHNyYygpIGNvbnN0OworICAgIFN0cmluZyBzcmMoKSBjb25zdDsKICAgICB2b2lkIHNldFNy
Yyhjb25zdCBTdHJpbmcmKTsKIAogICAgIGludCB3aWR0aCgpIGNvbnN0OwpAQCAtOTQsNiArODIs
OCBAQCBwdWJsaWM6CiAgICAgYm9vbCB2aWV3U291cmNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dmlld1NvdXJjZTsgfQogCiBwcm90ZWN0ZWQ6CisgICAgSFRNTEZyYW1lRWxlbWVudEJhc2UoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CisKICAgICBib29sIGlzVVJMQWxsb3dlZChj
b25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKICAgICB2b2lkIG9wZW5VUkwoKTsKIApAQCAtMTA3
LDEwICs5NywxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgaW50IG1fbWFyZ2luV2lkdGg7CiAgICAgaW50
IG1fbWFyZ2luSGVpZ2h0OwogCi0gICAgYm9vbCBtX2ZyYW1lQm9yZGVyIDogMTsKLSAgICBib29s
IG1fZnJhbWVCb3JkZXJTZXQgOiAxOwotICAgIGJvb2wgbV9ub1Jlc2l6ZSA6IDE7Ci0gICAgYm9v
bCBtX3ZpZXdTb3VyY2UgOiAxOworICAgIGJvb2wgbV9mcmFtZUJvcmRlcjsKKyAgICBib29sIG1f
ZnJhbWVCb3JkZXJTZXQ7CisgICAgYm9vbCBtX25vUmVzaXplOworICAgIGJvb2wgbV92aWV3U291
cmNlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9odG1sL0hU
TUxGcmFtZU93bmVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxG
cmFtZU93bmVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2h0bWwvSFRNTEZy
YW1lT3duZXJFbGVtZW50LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAq
IEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCisKKyNpbmNsdWRlICJGcmFt
ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0hUTUxGcmFtZU93bmVyRWxlbWVudDo6SFRN
TEZyYW1lT3duZXJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCkKKyAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQorICAgICwg
bV9jb250ZW50RnJhbWUoMCkKK3sKK30KKworSFRNTEZyYW1lT3duZXJFbGVtZW50Ojp+SFRNTEZy
YW1lT3duZXJFbGVtZW50KCkKK3sKKyAgICBpZiAobV9jb250ZW50RnJhbWUpCisgICAgICAgIG1f
Y29udGVudEZyYW1lLT5kaXNjb25uZWN0T3duZXJFbGVtZW50KCk7Cit9CisKK0RvY3VtZW50KiBI
VE1MRnJhbWVPd25lckVsZW1lbnQ6OmNvbnRlbnREb2N1bWVudCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fY29udGVudEZyYW1lID8gbV9jb250ZW50RnJhbWUtPmRvY3VtZW50KCkgOiAwOworfQor
Cit9CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVt
ZW50LmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4
OiBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3Vp
dGUgMzMwLAorICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisgKgorICovCisKKyNpZm5k
ZWYgSFRNTEZyYW1lT3duZXJFbGVtZW50X2gKKyNkZWZpbmUgSFRNTEZyYW1lT3duZXJFbGVtZW50
X2gKKworI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgRnJhbWU7CisKK2NsYXNzIEhUTUxGcmFtZU93bmVyRWxlbWVudCA6IHB1YmxpYyBIVE1M
RWxlbWVudCB7Citwcm90ZWN0ZWQ6CisgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Kik7CisKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IH5IVE1MRnJhbWVPd25lckVsZW1lbnQoKTsKKworICAgIEZyYW1lKiBjb250ZW50RnJhbWUoKSBj
b25zdCB7IHJldHVybiBtX2NvbnRlbnRGcmFtZTsgfQorICAgIERvY3VtZW50KiBjb250ZW50RG9j
dW1lbnQoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgRnJhbWU7CisgICAg
RnJhbWUqIG1fY29udGVudEZyYW1lOworfTsKKworfQorCisjZW5kaWYKClByb3BlcnR5IGNoYW5n
ZXMgb246IFdlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaApfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5h
bWU6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTE9i
amVjdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxl
bWVudC5jcHAJKHJldmlzaW9uIDE4MTA2KQorKysgV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDI2ICsxNTksNiBAQCB2b2lkIEhUTUxPYmpl
Y3RFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpCiAgICAgICAgIEhUTUxQbHVnSW5FbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAotRG9jdW1lbnQqIEhUTUxPYmplY3RFbGVt
ZW50Ojpjb250ZW50RG9jdW1lbnQoKSBjb25zdAotewotICAgIC8vIEZJWE1FOiBUaGUgZnJhbWUg
bG9hZGluZyBjb2RlIHNob3VsZCBiZSBtb3ZlZCBvdXQgb2YgdGhlIHJlbmRlciB0cmVlCi0gICAg
Ly8gYW5kIGludG8gdGhlIERPTS4gIE9uY2UgdGhhdCBoYXBwZW5zLCB0aGlzIGZ1bmN0aW9uIHNo
b3VsZCBsb29rIG1vcmUgbGlrZQotICAgIC8vIEhUTUxGcmFtZUVsZW1lbnQ6OmNvbnRlbnREb2N1
bWVudCgpIGFuZCBub3QgZGVwZW5kIG9uIHRoZSByZW5kZXJlci4KLSAgICBSZW5kZXJPYmplY3Qq
IG9iamVjdCA9IHJlbmRlcmVyKCk7Ci0gICAgaWYgKG9iamVjdCAmJiBvYmplY3QtPmlzV2lkZ2V0
KCkpIHsKLSAgICAgICAgUmVuZGVyV2lkZ2V0KiByZW5kZXJXaWRnZXQgPSBzdGF0aWNfY2FzdDxS
ZW5kZXJXaWRnZXQqPihvYmplY3QpOwotICAgICAgICBpZiAocmVuZGVyV2lkZ2V0KSB7Ci0gICAg
ICAgICAgICBXaWRnZXQqIHdpZGdldCA9IHJlbmRlcldpZGdldC0+d2lkZ2V0KCk7Ci0gICAgICAg
ICAgICBpZiAod2lkZ2V0ICYmIHdpZGdldC0+aXNGcmFtZVZpZXcoKSkgewotICAgICAgICAgICAg
ICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4od2lkZ2V0
KTsKLSAgICAgICAgICAgICAgICBpZiAoZnJhbWVWaWV3LT5mcmFtZSgpKQotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZnJhbWVWaWV3LT5mcmFtZSgpLT5kb2N1bWVudCgpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiAwOwotfQotCiBib29sIEhUTUxPYmpl
Y3RFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKICAgICBp
ZiAobV91c2VGYWxsYmFja0NvbnRlbnQgfHwgaXNJbWFnZVR5cGUoKSkKSW5kZXg6IFdlYkNvcmUv
aHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1M
T2JqZWN0RWxlbWVudC5oCShyZXZpc2lvbiAxODEwNikKKysrIFdlYkNvcmUvaHRtbC9IVE1MT2Jq
ZWN0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw4ICs4Niw2IEBAIHB1YmxpYzoKIAog
ICAgIFN0cmluZyBjb2RlVHlwZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0Q29kZVR5cGUoY29uc3Qg
U3RyaW5nJik7Ci0KLSAgICBEb2N1bWVudCogY29udGVudERvY3VtZW50KCkgY29uc3Q7CiAgICAg
CiAgICAgU3RyaW5nIGRhdGEoKSBjb25zdDsKICAgICB2b2lkIHNldERhdGEoY29uc3QgU3RyaW5n
Jik7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MTA2KQor
KysgV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDcsNyArNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOwogCiBIVE1MUGx1Z0luRWxlbWVudDo6SFRNTFBsdWdJbkVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKLSAgICA6IEhUTUxFbGVtZW50KHRhZ05h
bWUsIGRvYykKKyAgICA6IEhUTUxGcmFtZU93bmVyRWxlbWVudCh0YWdOYW1lLCBkb2MpCiAjaWYg
VVNFKE5QT0JKRUNUKQogICAgICwgbV9OUE9iamVjdCgwKQogI2VuZGlmCkluZGV4OiBXZWJDb3Jl
L2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRN
TFBsdWdJbkVsZW1lbnQuaAkocmV2aXNpb24gMTgxMDYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFBs
dWdJbkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMjAgKzI1LDIyIEBACiAjaWZuZGVm
IEhUTUxQbHVnSW5FbGVtZW50X0gKICNkZWZpbmUgSFRNTFBsdWdJbkVsZW1lbnRfSAogCi0jaW5j
bHVkZSAiSFRNTEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIK
KwogI2lmIFVTRShKQVZBU0NSSVBUQ09SRV9CSU5ESU5HUykKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9ydW50aW1lLmg+CiAjZW5kaWYKKwogI2lmIFVTRShOUE9CSkVDVCkKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9ucHJ1bnRpbWUuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIEhUTUxQbHVnSW5FbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50IHsKK2NsYXNz
IEhUTUxQbHVnSW5FbGVtZW50IDogcHVibGljIEhUTUxGcmFtZU93bmVyRWxlbWVudCB7CiBwdWJs
aWM6CiAgICAgSFRNTFBsdWdJbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqKTsKLSAgICB+SFRNTFBsdWdJbkVsZW1lbnQoKTsKKyAgICB2aXJ0dWFsIH5IVE1M
UGx1Z0luRWxlbWVudCgpOwogCiAgICAgdmlydHVhbCBib29sIG1hcFRvRW50cnkoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0
OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUq
KTsKQEAgLTY4LDYgKzcwLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIHNldEZyYW1l
TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIGZyYW1lTmFtZSkgeyBtX2ZyYW1lTmFtZSA9IGZyYW1l
TmFtZTsgfQorCiBwcml2YXRlOgogI2lmIFVTRShOUE9CSkVDVCkKICAgICBOUE9iamVjdCogY3Jl
YXRlTlBPYmplY3QoKTsKQEAgLTgxLDYgKzg0LDcgQEAgcHJvdGVjdGVkOgogI2lmIFVTRShOUE9C
SkVDVCkKICAgICBOUE9iamVjdCogbV9OUE9iamVjdDsKICNlbmRpZgorCiBwcml2YXRlOgogICAg
IEF0b21pY1N0cmluZyBtX2ZyYW1lTmFtZTsKIH07CkluZGV4OiBXZWJDb3JlL2xvYWRlci9Gb3Jt
U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0Zvcm1TdGF0ZS5jcHAJKHJl
dmlzaW9uIDE4MTA2KQorKysgV2ViQ29yZS9sb2FkZXIvRm9ybVN0YXRlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjksMTcgKzI5LDE3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
Rm9ybVN0YXRlLmgiCiAKLSNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIK
KyNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Q
YXNzUmVmUHRyPEZvcm1TdGF0ZT4gRm9ybVN0YXRlOjpjcmVhdGUoUGFzc1JlZlB0cjxFbGVtZW50
PiBmb3JtLCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgdmFsdWVzLCBQYXNzUmVmUHRy
PEZyYW1lPiBzb3VyY2VGcmFtZSkKK1Bhc3NSZWZQdHI8Rm9ybVN0YXRlPiBGb3JtU3RhdGU6OmNy
ZWF0ZShQYXNzUmVmUHRyPEhUTUxGb3JtRWxlbWVudD4gZm9ybSwgY29uc3QgSGFzaE1hcDxTdHJp
bmcsIFN0cmluZz4mIHZhbHVlcywgUGFzc1JlZlB0cjxGcmFtZT4gc291cmNlRnJhbWUpCiB7CiAg
ICAgcmV0dXJuIG5ldyBGb3JtU3RhdGUoZm9ybSwgdmFsdWVzLCBzb3VyY2VGcmFtZSk7CiB9CiAK
LUZvcm1TdGF0ZTo6Rm9ybVN0YXRlKFBhc3NSZWZQdHI8RWxlbWVudD4gZm9ybSwgY29uc3QgSGFz
aE1hcDxTdHJpbmcsIFN0cmluZz4mIHZhbHVlcywgUGFzc1JlZlB0cjxGcmFtZT4gc291cmNlRnJh
bWUpCitGb3JtU3RhdGU6OkZvcm1TdGF0ZShQYXNzUmVmUHRyPEhUTUxGb3JtRWxlbWVudD4gZm9y
bSwgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIHZhbHVlcywgUGFzc1JlZlB0cjxGcmFt
ZT4gc291cmNlRnJhbWUpCiAgICAgOiBtX2Zvcm0oZm9ybSkKICAgICAsIG1fdmFsdWVzKHZhbHVl
cykKICAgICAsIG1fc291cmNlRnJhbWUoc291cmNlRnJhbWUpCkluZGV4OiBXZWJDb3JlL2xvYWRl
ci9Gb3JtU3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9Gb3JtU3RhdGUuaAko
cmV2aXNpb24gMTgxMDYpCisrKyBXZWJDb3JlL2xvYWRlci9Gb3JtU3RhdGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMzUsMjEgKzM1LDIxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNs
YXNzIEVsZW1lbnQ7CiAgICAgY2xhc3MgRnJhbWU7CisgICAgY2xhc3MgSFRNTEZvcm1FbGVtZW50
OwogCiAgICAgY2xhc3MgRm9ybVN0YXRlIDogcHVibGljIFNoYXJlZDxGb3JtU3RhdGU+IHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gY3JlYXRlKFBh
c3NSZWZQdHI8RWxlbWVudD4gZm9ybSwgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIHZh
bHVlcywgUGFzc1JlZlB0cjxGcmFtZT4gc291cmNlRnJhbWUpOworICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxGb3JtU3RhdGU+IGNyZWF0ZShQYXNzUmVmUHRyPEhUTUxGb3JtRWxlbWVudD4gZm9y
bSwgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIHZhbHVlcywgUGFzc1JlZlB0cjxGcmFt
ZT4gc291cmNlRnJhbWUpOwogCi0gICAgICAgIEVsZW1lbnQqIGZvcm0oKSBjb25zdCB7IHJldHVy
biBtX2Zvcm0uZ2V0KCk7IH0KKyAgICAgICAgSFRNTEZvcm1FbGVtZW50KiBmb3JtKCkgY29uc3Qg
eyByZXR1cm4gbV9mb3JtLmdldCgpOyB9CiAgICAgICAgIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBT
dHJpbmc+JiB2YWx1ZXMoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlczsgfQogICAgICAgICBGcmFt
ZSogc291cmNlRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUZyYW1lLmdldCgpOyB9CiAK
ICAgICBwcml2YXRlOgotICAgICAgICBGb3JtU3RhdGUoUGFzc1JlZlB0cjxFbGVtZW50PiBmb3Jt
LCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgdmFsdWVzLCBQYXNzUmVmUHRyPEZyYW1l
PiBzb3VyY2VGcmFtZSk7CisgICAgICAgIEZvcm1TdGF0ZShQYXNzUmVmUHRyPEhUTUxGb3JtRWxl
bWVudD4gZm9ybSwgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIHZhbHVlcywgUGFzc1Jl
ZlB0cjxGcmFtZT4gc291cmNlRnJhbWUpOwogCi0gICAgICAgIFJlZlB0cjxFbGVtZW50PiBtX2Zv
cm07CisgICAgICAgIFJlZlB0cjxIVE1MRm9ybUVsZW1lbnQ+IG1fZm9ybTsKICAgICAgICAgSGFz
aE1hcDxTdHJpbmcsIFN0cmluZz4gbV92YWx1ZXM7CiAgICAgICAgIFJlZlB0cjxGcmFtZT4gbV9z
b3VyY2VGcmFtZTsKICAgICB9OwpJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24g
MTgxMDYpCisrKyBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUyLDcgKzUyLDYgQEAKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MT2JqZWN0RWxlbWVudC5oIgotI2luY2x1ZGUg
IkhUTUxQbHVnSW5FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRl
ICJJY29uRGF0YWJhc2UuaCIKICNpbmNsdWRlICJJY29uTG9hZGVyLmgiCkBAIC0zNjMsNyArMzYy
LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6dXJsU2VsZWN0ZWQoY29uc3QgUmVzbwogICAgIHVybFNl
bGVjdGVkKGZyYW1lUmVxdWVzdCwgdHJpZ2dlcmluZ0V2ZW50KTsKIH0KIAotYm9vbCBGcmFtZUxv
YWRlcjo6cmVxdWVzdEZyYW1lKEVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3QgU3RyaW5nJiB1
cmxTdHJpbmcsIGNvbnN0IEF0b21pY1N0cmluZyYgZnJhbWVOYW1lKQorYm9vbCBGcmFtZUxvYWRl
cjo6cmVxdWVzdEZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBjb25z
dCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgQXRvbWljU3RyaW5nJiBmcmFtZU5hbWUpCiB7CiAg
ICAgLy8gU3VwcG9ydCBmb3IgPGZyYW1lIHNyYz0iamF2YXNjcmlwdDpzdHJpbmciPgogICAgIEtV
Ukwgc2NyaXB0VVJMOwpAQCAtMzkxLDcgKzM5MCw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OnJlcXVl
c3RGcmFtZShFbGVtZW50KiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotRnJhbWUqIEZyYW1lTG9h
ZGVyOjpsb2FkU3ViZnJhbWUoRWxlbWVudCogb3duZXJFbGVtZW50LCBjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKK0ZyYW1lKiBGcmFt
ZUxvYWRlcjo6bG9hZFN1YmZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50
LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiByZWZl
cnJlcikKIHsKICAgICBGcmFtZSogZnJhbWUgPSBjcmVhdGVGcmFtZSh1cmwsIG5hbWUsIG93bmVy
RWxlbWVudCwgcmVmZXJyZXIpOwogICAgIGlmICghZnJhbWUpICB7CkBAIC0xMjcwLDIzICsxMjY5
LDIzIEBAIGJvb2wgRnJhbWVMb2FkZXI6OnJlcXVlc3RPYmplY3QoUmVuZGVyUGEKICAgICAgICAg
Y29tcGxldGVkVVJMID0gY29tcGxldGVVUkwodXJsKTsKIAogICAgIGJvb2wgdXNlRmFsbGJhY2s7
Ci0gICAgaWYgKHNob3VsZFVzZVBsdWdpbihyZW5kZXJlci0+ZWxlbWVudCgpLCBjb21wbGV0ZWRV
UkwsIG1pbWVUeXBlLCByZW5kZXJlci0+aGFzRmFsbGJhY2tDb250ZW50KCksIHVzZUZhbGxiYWNr
KSkgewotICAgICAgICAKKyAgICBpZiAoc2hvdWxkVXNlUGx1Z2luKGNvbXBsZXRlZFVSTCwgbWlt
ZVR5cGUsIHJlbmRlcmVyLT5oYXNGYWxsYmFja0NvbnRlbnQoKSwgdXNlRmFsbGJhY2spKSB7CiAg
ICAgICAgIGlmICghbV9mcmFtZS0+cGx1Z2luc0VuYWJsZWQoKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgCiAgICAgICAgIHJldHVybiBsb2FkUGx1Z2luKHJlbmRlcmVyLCBj
b21wbGV0ZWRVUkwsIG1pbWVUeXBlLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywgdXNlRmFsbGJh
Y2spOwogICAgIH0KIAogICAgIEFTU0VSVChyZW5kZXJlci0+bm9kZSgpLT5oYXNUYWdOYW1lKG9i
amVjdFRhZykgfHwgcmVuZGVyZXItPm5vZGUoKS0+aGFzVGFnTmFtZShlbWJlZFRhZykpOworICAg
IEhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTFBsdWdJbkVsZW1l
bnQqPihyZW5kZXJlci0+bm9kZSgpKTsKKwogICAgIEF0b21pY1N0cmluZyB1bmlxdWVGcmFtZU5h
bWUgPSBtX2ZyYW1lLT50cmVlKCktPnVuaXF1ZUNoaWxkTmFtZShmcmFtZU5hbWUpOwotICAgIHN0
YXRpY19jYXN0PEhUTUxQbHVnSW5FbGVtZW50Kj4ocmVuZGVyZXItPm5vZGUoKSktPnNldEZyYW1l
TmFtZSh1bmlxdWVGcmFtZU5hbWUpOworICAgIGVsZW1lbnQtPnNldEZyYW1lTmFtZSh1bmlxdWVG
cmFtZU5hbWUpOwogICAgIAotICAgIC8vIEZJWE1FOiBPSyB0byBhbHdheXMgbWFrZSBhIG5ldyBv
bmU/IFdoZW4gZG9lcyB0aGUgb2xkIGZyYW1lIGdldCByZW1vdmVkPwotICAgIHJldHVybiBsb2Fk
U3ViZnJhbWUoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KHJlbmRlcmVyLT5ub2RlKCkpLCBjb21wbGV0
ZWRVUkwsIHVuaXF1ZUZyYW1lTmFtZSwgbV9vdXRnb2luZ1JlZmVycmVyKTsKKyAgICAvLyBGSVhN
RTogT0sgdG8gYWx3YXlzIG1ha2UgYSBuZXcgZnJhbWU/IFdoZW4gZG9lcyB0aGUgb2xkIGZyYW1l
IGdldCByZW1vdmVkPworICAgIHJldHVybiBsb2FkU3ViZnJhbWUoZWxlbWVudCwgY29tcGxldGVk
VVJMLCB1bmlxdWVGcmFtZU5hbWUsIG1fb3V0Z29pbmdSZWZlcnJlcik7CiB9CiAKLWJvb2wgRnJh
bWVMb2FkZXI6OnNob3VsZFVzZVBsdWdpbihOb2RlKiBlbGVtZW50LCBjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgaGFzRmFsbGJhY2ssIGJvb2wmIHVzZUZhbGxi
YWNrKQorYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkVXNlUGx1Z2luKGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBoYXNGYWxsYmFjaywgYm9vbCYgdXNlRmFsbGJh
Y2spCiB7CiAgICAgT2JqZWN0Q29udGVudFR5cGUgb2JqZWN0VHlwZSA9IG9iamVjdENvbnRlbnRU
eXBlKHVybCwgbWltZVR5cGUpOwogICAgIC8vIElmIGFuIG9iamVjdCdzIGNvbnRlbnQgY2FuJ3Qg
YmUgaGFuZGxlZCBhbmQgaXQgaGFzIG5vIGZhbGxiYWNrLCBsZXQKQEAgLTEzNzAsNyArMTM2OSw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnNldE9wZW5lZEJ5SmF2YVNjcmlwdCgKIAogdm9pZCBGcmFt
ZUxvYWRlcjo6aGFuZGxlRmFsbGJhY2tDb250ZW50KCkKIHsKLSAgICBFbGVtZW50KiBvd25lciA9
IG1fZnJhbWUtPm93bmVyRWxlbWVudCgpOworICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3du
ZXIgPSBtX2ZyYW1lLT5vd25lckVsZW1lbnQoKTsKICAgICBpZiAoIW93bmVyIHx8ICFvd25lci0+
aGFzVGFnTmFtZShvYmplY3RUYWcpKQogICAgICAgICByZXR1cm47CiAgICAgc3RhdGljX2Nhc3Q8
SFRNTE9iamVjdEVsZW1lbnQqPihvd25lciktPnJlbmRlckZhbGxiYWNrQ29udGVudCgpOwpAQCAt
MTUzOCw3ICsxNTM3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c3RvcFJlZGlyZWN0aW9uVGltZXIo
KQogCiB2b2lkIEZyYW1lTG9hZGVyOjp1cGRhdGVCYXNlVVJMRm9yRW1wdHlEb2N1bWVudCgpCiB7
Ci0gICAgRWxlbWVudCogb3duZXIgPSBtX2ZyYW1lLT5vd25lckVsZW1lbnQoKTsKKyAgICBIVE1M
RnJhbWVPd25lckVsZW1lbnQqIG93bmVyID0gbV9mcmFtZS0+b3duZXJFbGVtZW50KCk7CiAgICAg
Ly8gRklYTUU6IFNob3VsZCBlbWJlZCBiZSBpbmNsdWRlZD8KICAgICBpZiAob3duZXIgJiYgKG93
bmVyLT5oYXNUYWdOYW1lKGlmcmFtZVRhZykgfHwgb3duZXItPmhhc1RhZ05hbWUob2JqZWN0VGFn
KSB8fCBvd25lci0+aGFzVGFnTmFtZShlbWJlZFRhZykpKQogICAgICAgICBtX2ZyYW1lLT5kb2N1
bWVudCgpLT5zZXRCYXNlVVJMKG1fZnJhbWUtPnRyZWUoKS0+cGFyZW50KCktPmRvY3VtZW50KCkt
PmJhc2VVUkwoKSk7CkBAIC0xOTcyLDcgKzE5NzEsNyBAQCBib29sIEZyYW1lTG9hZGVyOjppc0Fy
Y2hpdmVMb2FkUGVuZGluZyhSCiAKIGJvb2wgRnJhbWVMb2FkZXI6OmlzSG9zdGVkQnlPYmplY3RF
bGVtZW50KCkgY29uc3QKIHsKLSAgICBFbGVtZW50KiBvd25lciA9IG1fZnJhbWUtPm93bmVyRWxl
bWVudCgpOworICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXIgPSBtX2ZyYW1lLT5vd25l
ckVsZW1lbnQoKTsKICAgICByZXR1cm4gb3duZXIgJiYgb3duZXItPmhhc1RhZ05hbWUob2JqZWN0
VGFnKTsKIH0KIApJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCShyZXZpc2lvbiAxODEwNikKKysrIFdl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDYgKzg1LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEZyYW1lOwogICAgIGNsYXNzIEZyYW1l
TG9hZGVyQ2xpZW50OwogICAgIGNsYXNzIEhUTUxGb3JtRWxlbWVudDsKKyAgICBjbGFzcyBIVE1M
RnJhbWVPd25lckVsZW1lbnQ7CiAgICAgY2xhc3MgSWNvbkxvYWRlcjsKICAgICBjbGFzcyBJbnRT
aXplOwogICAgIGNsYXNzIE1haW5SZXNvdXJjZUxvYWRlcjsKQEAgLTE3MiwxMiArMTczLDEyIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBmaW5hbFNldHVwRm9yUmVwbGFjZShE
b2N1bWVudExvYWRlciopOwogICAgICAgICB2b2lkIGxvYWQoY29uc3QgS1VSTCYsIEV2ZW50Kik7
CiAgICAgICAgIHZvaWQgbG9hZChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgYm9vbCB1c2VyR2Vz
dHVyZSwKLSAgICAgICAgICAgIEV2ZW50KiwgRWxlbWVudCogZm9ybSwgY29uc3QgSGFzaE1hcDxT
dHJpbmcsIFN0cmluZz4mIGZvcm1WYWx1ZXMpOworICAgICAgICAgICAgRXZlbnQqLCBIVE1MRm9y
bUVsZW1lbnQqLCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgZm9ybVZhbHVlcyk7CiAg
ICAgICAgIHZvaWQgbG9hZChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgRnJh
bWVMb2FkVHlwZSwgY29uc3QgU3RyaW5nJiB0YXJnZXQsCi0gICAgICAgICAgICBFdmVudCosIEVs
ZW1lbnQqIGZvcm0sIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBmb3JtVmFsdWVzKTsK
KyAgICAgICAgICAgIEV2ZW50KiwgSFRNTEZvcm1FbGVtZW50KiwgY29uc3QgSGFzaE1hcDxTdHJp
bmcsIFN0cmluZz4mIGZvcm1WYWx1ZXMpOwogICAgICAgICB2b2lkIHBvc3QoY29uc3QgS1VSTCYs
IGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LAogICAgICAgICAg
ICAgUGFzc1JlZlB0cjxGb3JtRGF0YT4sIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsCi0gICAg
ICAgICAgICBFdmVudCosIEVsZW1lbnQqIGZvcm0sIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmc+JiBmb3JtVmFsdWVzKTsKKyAgICAgICAgICAgIEV2ZW50KiwgSFRNTEZvcm1FbGVtZW50Kiwg
Y29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGZvcm1WYWx1ZXMpOwogI2lmIFBMQVRGT1JN
KE1BQykKICAgICAgICAgdm9pZCBsb2FkKE5TVVJMUmVxdWVzdCAqKTsKICAgICAgICAgdm9pZCBs
b2FkKE5TVVJMUmVxdWVzdCAqLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSk7CkBAIC0zNDEsOSAr
MzQyLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHVybFNlbGVjdGVkKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBFdmVudCosIGJvb2wg
bG9ja0hpc3RvcnkgPSBmYWxzZSk7CiAgICAgICAgIHZvaWQgdXJsU2VsZWN0ZWQoY29uc3QgRnJh
bWVMb2FkUmVxdWVzdCYsIEV2ZW50Kik7CiAgICAgICAKLSAgICAgICAgYm9vbCByZXF1ZXN0RnJh
bWUoRWxlbWVudCogb3duZXJFbGVtZW50LCBjb25zdCBTdHJpbmcmIFVSTCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBmcmFtZU5hbWUpOwotICAgICAgICBGcmFtZSogY3JlYXRlRnJhbWUoY29uc3QgS1VS
TCYgVVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIEVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3Qg
U3RyaW5nJiByZWZlcnJlcik7Ci0gICAgICAgIEZyYW1lKiBsb2FkU3ViZnJhbWUoRWxlbWVudCog
b3duZXJFbGVtZW50LCBjb25zdCBLVVJMJiBVUkwsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiByZWZlcnJlcik7CisgICAgICAgIGJvb2wgcmVxdWVzdEZyYW1lKEhUTUxGcmFtZU93
bmVyRWxlbWVudCosIGNvbnN0IFN0cmluZyYgVVJMLCBjb25zdCBBdG9taWNTdHJpbmcmIGZyYW1l
TmFtZSk7CisgICAgICAgIEZyYW1lKiBjcmVhdGVGcmFtZShjb25zdCBLVVJMJiBVUkwsIGNvbnN0
IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgU3RyaW5nJiByZWZl
cnJlcik7CisgICAgICAgIEZyYW1lKiBsb2FkU3ViZnJhbWUoSFRNTEZyYW1lT3duZXJFbGVtZW50
KiwgY29uc3QgS1VSTCYgVVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgcmVm
ZXJyZXIpOwogCiAgICAgICAgIHZvaWQgc3VibWl0Rm9ybShjb25zdCBjaGFyKiBhY3Rpb24sIGNv
bnN0IFN0cmluZyYgVVJMLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiwgY29uc3QgU3RyaW5nJiB0YXJn
ZXQsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgYm91bmRhcnksIEV2
ZW50Kik7CiAgICAgICAgIHZvaWQgc3VibWl0Rm9ybUFnYWluKCk7CkBAIC00ODIsNyArNDgzLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGNvbXBsZXRlZCgpOwogICAgICAg
ICB2b2lkIHBhcmVudENvbXBsZXRlZCgpOwogCi0gICAgICAgIGJvb2wgc2hvdWxkVXNlUGx1Z2lu
KE5vZGUqIGVsZW1lbnQsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29s
IGhhc0ZhbGxiYWNrLCBib29sJiB1c2VGYWxsYmFjayk7CisgICAgICAgIGJvb2wgc2hvdWxkVXNl
UGx1Z2luKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGhhc0ZhbGxi
YWNrLCBib29sJiB1c2VGYWxsYmFjayk7CiAgICAgICAgIGJvb2wgbG9hZFBsdWdpbihSZW5kZXJQ
YXJ0KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsCiAgICAgICAgIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1W
YWx1ZXMsIGJvb2wgdXNlRmFsbGJhY2spOwogCkluZGV4OiBXZWJDb3JlL2xvYWRlci9tYWMvRnJh
bWVMb2FkZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvbWFjL0ZyYW1lTG9h
ZGVyTWFjLm1tCShyZXZpc2lvbiAxODEwNikKKysrIFdlYkNvcmUvbG9hZGVyL21hYy9GcmFtZUxv
YWRlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiB2b2lkIEZyYW1lTG9hZGVyOjps
b2FkKGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgdXNlckdlc3R1cmUsIEV2
ZW50KiBldmVudCwKLSAgICBFbGVtZW50KiBzdWJtaXRGb3JtLCBjb25zdCBIYXNoTWFwPFN0cmlu
ZywgU3RyaW5nPiYgZm9ybVZhbHVlcykKKyAgICBIVE1MRm9ybUVsZW1lbnQqIHN1Ym1pdEZvcm0s
IGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBmb3JtVmFsdWVzKQogewogICAgIFN0cmlu
ZyByZWZlcnJlcjsKICAgICBTdHJpbmcgYXJnc1JlZmVycmVyID0gcmVxdWVzdC5yZXNvdXJjZVJl
cXVlc3QoKS5odHRwUmVmZXJyZXIoKTsKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpsb2FkKGNvbnN0IEZyYW1lTG9hZFJlCiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWQo
Y29uc3QgS1VSTCYgVVJMLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBGcmFtZUxvYWRUeXBlIG5l
d0xvYWRUeXBlLAotICAgIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBFdmVudCogZXZlbnQsIEVs
ZW1lbnQqIGZvcm0sIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiB2YWx1ZXMpCisgICAg
Y29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIEV2ZW50KiBldmVudCwgSFRNTEZvcm1FbGVtZW50KiBm
b3JtLCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgdmFsdWVzKQogewogICAgIGJvb2wg
aXNGb3JtU3VibWlzc2lvbiA9ICF2YWx1ZXMuaXNFbXB0eSgpOwogICAgIApAQCAtMTEwNCw3ICsx
MTA0LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZGVkUmVzb3VyY2VGcm9tTWVtbwogfQogCiB2
b2lkIEZyYW1lTG9hZGVyOjpwb3N0KGNvbnN0IEtVUkwmIFVSTCwgY29uc3QgU3RyaW5nJiByZWZl
cnJlciwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGZvcm1E
YXRhLCAKLSAgICBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBFdmVudCogZXZlbnQsIEVsZW1l
bnQqIGZvcm0sIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBmb3JtVmFsdWVzKQorICAg
IGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIEV2ZW50KiBldmVudCwgSFRNTEZvcm1FbGVtZW50
KiBmb3JtLCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgZm9ybVZhbHVlcykKIHsKICAg
ICAvLyBXaGVuIHBvc3RpbmcsIHVzZSB0aGUgTlNVUkxSZXF1ZXN0UmVsb2FkSWdub3JpbmdDYWNo
ZURhdGEgbG9hZCBmbGFnLgogICAgIC8vIFRoaXMgcHJldmVudHMgYSBwb3RlbnRpYWwgYnVnIHdo
aWNoIG1heSBjYXVzZSBhIHBhZ2Ugd2l0aCBhIGZvcm0gdGhhdCB1c2VzIGl0c2VsZgpAQCAtMTI0
MCw3ICsxMjQwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdQog
ICAgIG1lbWNweShkYXRhLmRhdGEoKSwgW3Jlc3VsdCBieXRlc10sIFtyZXN1bHQgbGVuZ3RoXSk7
CiB9CiAKLUZyYW1lKiBGcmFtZUxvYWRlcjo6Y3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIG5hbWUsIEVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlcikKK0ZyYW1lKiBGcmFtZUxvYWRlcjo6Y3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50
LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQogewogICAgIEJPT0wgYWxsb3dzU2Nyb2xsaW5nID0g
WUVTOwogICAgIGludCBtYXJnaW5XaWR0aCA9IC0xOwpJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCShyZXZpc2lvbiAxODEw
NikKKysrIFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDggKzQz
LDggQEAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAj
aW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZy
YW1lTG9hZFJlcXVlc3QuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZy
YW1lVmlldy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkhUTUxG
b3JtRWxlbWVudC5oIgpAQCAtMTUwLDE0ICsxNTAsMTQgQEAgaW50IEZyYW1lQ291bnRlcjo6Y291
bnQgPSAwOwogc3RhdGljIEZyYW1lQ291bnRlciBmcmFtZUNvdW50ZXI7CiAjZW5kaWYKIAotc3Rh
dGljIGlubGluZSBGcmFtZSogcGFyZW50RnJvbU93bmVyRWxlbWVudChFbGVtZW50KiBvd25lckVs
ZW1lbnQpCitzdGF0aWMgaW5saW5lIEZyYW1lKiBwYXJlbnRGcm9tT3duZXJFbGVtZW50KEhUTUxG
cmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50KQogewogICAgIGlmICghb3duZXJFbGVtZW50
KQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gb3duZXJFbGVtZW50LT5kb2N1bWVudCgp
LT5mcmFtZSgpOwogfQogCi1GcmFtZTo6RnJhbWUoUGFnZSogcGFnZSwgRWxlbWVudCogb3duZXJF
bGVtZW50LCBGcmFtZUxvYWRlckNsaWVudCogZnJhbWVMb2FkZXJDbGllbnQpIAorRnJhbWU6OkZy
YW1lKFBhZ2UqIHBhZ2UsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBGcmFt
ZUxvYWRlckNsaWVudCogZnJhbWVMb2FkZXJDbGllbnQpIAogICAgIDogZChuZXcgRnJhbWVQcml2
YXRlKHBhZ2UsIHBhcmVudEZyb21Pd25lckVsZW1lbnQob3duZXJFbGVtZW50KSwgdGhpcywgb3du
ZXJFbGVtZW50LCBmcmFtZUxvYWRlckNsaWVudCkpCiB7CiAgICAgQXRvbWljU3RyaW5nOjppbml0
KCk7CkBAIC0xNzksNiArMTc5LDcgQEAgRnJhbWU6OkZyYW1lKFBhZ2UqIHBhZ2UsIEVsZW1lbnQq
IG93bmVyRQogICAgICAgICAvLyBMZWF2ZSB0aGlzIHJlZiBjYWxsIGhlcmUgdW50aWwgd2UgY2Fu
IHN0cmFpZ2h0ZW4gdGhhdCBvdXQuCiAgICAgICAgIHJlZigpOwogICAgICAgICBwYWdlLT5pbmNy
ZW1lbnRGcmFtZUNvdW50KCk7CisgICAgICAgIG93bmVyRWxlbWVudC0+bV9jb250ZW50RnJhbWUg
PSB0aGlzOwogICAgIH0KIAogI2lmbmRlZiBOREVCVUcKQEAgLTkxMywxNCArOTE0LDE0IEBAIFJl
bmRlck9iamVjdCAqRnJhbWU6OnJlbmRlcmVyKCkgY29uc3QKICAgICByZXR1cm4gZG9jID8gZG9j
LT5yZW5kZXJlcigpIDogMDsKIH0KIAotRWxlbWVudCogRnJhbWU6Om93bmVyRWxlbWVudCgpCitI
VE1MRnJhbWVPd25lckVsZW1lbnQqIEZyYW1lOjpvd25lckVsZW1lbnQoKSBjb25zdAogewogICAg
IHJldHVybiBkLT5tX293bmVyRWxlbWVudDsKIH0KIAogUmVuZGVyUGFydCogRnJhbWU6Om93bmVy
UmVuZGVyZXIoKQogewotICAgIEVsZW1lbnQqIG93bmVyRWxlbWVudCA9IGQtPm1fb3duZXJFbGVt
ZW50OworICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50ID0gZC0+bV9vd25l
ckVsZW1lbnQ7CiAgICAgaWYgKCFvd25lckVsZW1lbnQpCiAgICAgICAgIHJldHVybiAwOwogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxSZW5kZXJQYXJ0Kj4ob3duZXJFbGVtZW50LT5yZW5kZXJlcigp
KTsKQEAgLTE0NzUsOSArMTQ3NiwxMSBAQCB2b2lkIEZyYW1lOjpzZXRTdGF0dXNCYXJUZXh0KGNv
bnN0IFN0cmluCiAKIHZvaWQgRnJhbWU6OmRpc2Nvbm5lY3RPd25lckVsZW1lbnQoKQogewotICAg
IGlmIChkLT5tX293bmVyRWxlbWVudCAmJiBkLT5tX3BhZ2UpCi0gICAgICAgIGQtPm1fcGFnZS0+
ZGVjcmVtZW50RnJhbWVDb3VudCgpOwotICAgICAgICAKKyAgICBpZiAoZC0+bV9vd25lckVsZW1l
bnQpIHsKKyAgICAgICAgZC0+bV9vd25lckVsZW1lbnQtPm1fY29udGVudEZyYW1lID0gMDsKKyAg
ICAgICAgaWYgKGQtPm1fcGFnZSkKKyAgICAgICAgICAgIGQtPm1fcGFnZS0+ZGVjcmVtZW50RnJh
bWVDb3VudCgpOworICAgIH0KICAgICBkLT5tX293bmVyRWxlbWVudCA9IDA7CiB9CiAKQEAgLTE1
MDAsNyArMTUwMyw3IEBAIHZvaWQgRnJhbWU6OnNldFByb2hpYml0c1Njcm9sbGluZyhib29sIHAK
ICAgICBkLT5tX3Byb2hpYml0c1Njcm9sbGluZyA9IHByb2hpYml0OwogfQogCi1GcmFtZVByaXZh
dGU6OkZyYW1lUHJpdmF0ZShQYWdlKiBwYWdlLCBGcmFtZSogcGFyZW50LCBGcmFtZSogdGhpc0Zy
YW1lLCBFbGVtZW50KiBvd25lckVsZW1lbnQsIEZyYW1lTG9hZGVyQ2xpZW50KiBmcmFtZUxvYWRl
ckNsaWVudCkKK0ZyYW1lUHJpdmF0ZTo6RnJhbWVQcml2YXRlKFBhZ2UqIHBhZ2UsIEZyYW1lKiBw
YXJlbnQsIEZyYW1lKiB0aGlzRnJhbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVt
ZW50LCBGcmFtZUxvYWRlckNsaWVudCogZnJhbWVMb2FkZXJDbGllbnQpCiAgICAgOiBtX3BhZ2Uo
cGFnZSkKICAgICAsIG1fdHJlZU5vZGUodGhpc0ZyYW1lLCBwYXJlbnQpCiAgICAgLCBtX293bmVy
RWxlbWVudChvd25lckVsZW1lbnQpCkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWUuaAkocmV2aXNpb24gMTgxMDYpCisrKyBXZWJDb3Jl
L3BhZ2UvRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsNyBAQCBjbGFzcyBFdmVu
dEhhbmRsZXI7CiBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBGcmFtZUxvYWRlcjsKIGNsYXNzIEZy
YW1lTG9hZGVyQ2xpZW50OworY2xhc3MgSFRNTEZyYW1lT3duZXJFbGVtZW50OwogY2xhc3MgRnJh
bWVQcml2YXRlOwogY2xhc3MgRnJhbWVUcmVlOwogY2xhc3MgRnJhbWVWaWV3OwpAQCAtMTAzLDEy
ICsxMDQsMTIgQEAgc3RydWN0IE1hcmtlZFRleHRVbmRlcmxpbmUgewogCiBjbGFzcyBGcmFtZSA6
IHB1YmxpYyBTaGFyZWQ8RnJhbWU+IHsKIHB1YmxpYzoKLSAgICBGcmFtZShQYWdlKiwgRWxlbWVu
dCosIEZyYW1lTG9hZGVyQ2xpZW50Kik7CisgICAgRnJhbWUoUGFnZSosIEhUTUxGcmFtZU93bmVy
RWxlbWVudCosIEZyYW1lTG9hZGVyQ2xpZW50Kik7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZXco
RnJhbWVWaWV3Kik7CiAgICAgdmlydHVhbCB+RnJhbWUoKTsKIAogICAgIFBhZ2UqIHBhZ2UoKSBj
b25zdDsKLSAgICBFbGVtZW50KiBvd25lckVsZW1lbnQoKTsKKyAgICBIVE1MRnJhbWVPd25lckVs
ZW1lbnQqIG93bmVyRWxlbWVudCgpIGNvbnN0OwogCiAgICAgdm9pZCBwYWdlRGVzdHJveWVkKCk7
CiAgICAgdm9pZCBkaXNjb25uZWN0T3duZXJFbGVtZW50KCk7CkluZGV4OiBXZWJDb3JlL3BhZ2Uv
RnJhbWVQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lUHJpdmF0ZS5o
CShyZXZpc2lvbiAxODEwNikKKysrIFdlYkNvcmUvcGFnZS9GcmFtZVByaXZhdGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDAsMTQgKzQwLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNs
YXNzIEZyYW1lUHJpdmF0ZSB7CiAgICAgcHVibGljOgotICAgICAgICBGcmFtZVByaXZhdGUoUGFn
ZSosIEZyYW1lKiBwYXJlbnQsIEZyYW1lKiB0aGlzRnJhbWUsIEVsZW1lbnQqIG93bmVyRWxlbWVu
dCwgRnJhbWVMb2FkZXJDbGllbnQqKTsKKyAgICAgICAgRnJhbWVQcml2YXRlKFBhZ2UqLCBGcmFt
ZSogcGFyZW50LCBGcmFtZSogdGhpc0ZyYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBGcmFt
ZUxvYWRlckNsaWVudCopOwogICAgICAgICB+RnJhbWVQcml2YXRlKCk7CiAKICAgICAgICAgUGFn
ZSogbV9wYWdlOwogICAgICAgICBGcmFtZVRyZWUgbV90cmVlTm9kZTsKICAgICAgICAgUmVmUHRy
PERPTVdpbmRvdz4gbV9kb21XaW5kb3c7CiAKLSAgICAgICAgRWxlbWVudCogbV9vd25lckVsZW1l
bnQ7CisgICAgICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogbV9vd25lckVsZW1lbnQ7CiAgICAg
ICAgIFJlZlB0cjxGcmFtZVZpZXc+IG1fdmlldzsKICAgICAgICAgUmVmUHRyPERvY3VtZW50PiBt
X2RvYzsKIApJbmRleDogV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0JKHJldmlzaW9uIDE4
MTA2KQorKysgV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJGcmFtZU1hYy5oIgogI2luY2x1ZGUgIkZy
YW1lVHJlZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkhUTUxGcmFtZU93
bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZVNldEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIaXRUZXN0UmVxdWVzdC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAko
cmV2aXNpb24gMTgxMDYpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGVJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw4ICs2MSw3IEBAIGNsYXNzIE5TVVJM
Q29ubmVjdGlvbjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgUmVzb3VyY2VI
YW5kbGVJbnRlcm5hbAotICAgIHsKKyAgICBjbGFzcyBSZXNvdXJjZUhhbmRsZUludGVybmFsIDog
Tm9uY29weWFibGUgewogICAgIHB1YmxpYzoKICAgICAgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5h
bChSZXNvdXJjZUhhbmRsZSogbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IFJlc291cmNlSGFuZGxlQ2xpZW50KiBjLCBib29sIGRlZmVyc0xvYWRpbmcpCiAgICAgICAgICAg
ICA6IG1fY2xpZW50KGMpCkBAIC0xMjksNyArMTI4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBRU3RyaW5nIG1fY2hhcnNldDsKICAgICAgICAgUVN0cmluZyBtX21pbWV0eXBlOwog
I2VuZGlmCi0gICAgICAgIH07CisgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3F0L0ZyYW1lUXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vcXQvRnJhbWVRdC5jcHAJKHJldmlzaW9uIDE4MTA2KQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9xdC9GcmFtZVF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTgsMTAgKzk4LDEwIEBA
IHN0YXRpYyB2b2lkIGRvU2Nyb2xsKGNvbnN0IFJlbmRlck9iamVjdCoKIH0KICNlbmRpZgogCi1G
cmFtZVF0OjpGcmFtZVF0KFBhZ2UqIHBhZ2UsIEVsZW1lbnQqIG93bmVyRWxlbWVudCwKK0ZyYW1l
UXQ6OkZyYW1lUXQoUGFnZSogcGFnZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1l
bnQsCiAgICAgICAgICAgICAgICAgIEZyYW1lUXRDbGllbnQqIGZyYW1lQ2xpZW50LAogICAgICAg
ICAgICAgICAgICBFZGl0b3JDbGllbnQqIGVkaXRvckNsaWVudCkKLSAgICA6IEZyYW1lKHBhZ2Us
IG93bmVyRWxlbWVudCwgbmV3IEZyYW1lTG9hZGVyQ2xpZW50UXQoKSApCisgICAgOiBGcmFtZShw
YWdlLCBvd25lckVsZW1lbnQsIG5ldyBGcmFtZUxvYWRlckNsaWVudFF0KQogICAgICwgbV9iaW5k
aW5nUm9vdCgwKQogewogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IG5ldyBTZXR0aW5nczsKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vcXQvRnJhbWVRdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vcXQvRnJhbWVRdC5oCShyZXZpc2lvbiAxODEwNikKKysrIFdlYkNvcmUvcGxhdGZv
cm0vcXQvRnJhbWVRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIEVk
aXRvckNsaWVudDsKIGNsYXNzIEZyYW1lUXQgOiBwdWJsaWMgRnJhbWUgewogcHVibGljOgogICAg
IC8vIElmICdjbGllbnQnIHJlbWFpbnMgbmlsLCBhIGRlZmF1bHQgZWRpdG9yIGNsaWVudCB3aWxs
IGJlIGNvbnN0cnVjdGVkLgotICAgIEZyYW1lUXQoUGFnZSosIEVsZW1lbnQqLCBGcmFtZVF0Q2xp
ZW50KiwgRWRpdG9yQ2xpZW50KiBjbGllbnQgPSAwKTsKKyAgICBGcmFtZVF0KFBhZ2UqLCBIVE1M
RnJhbWVPd25lckVsZW1lbnQqLCBGcmFtZVF0Q2xpZW50KiwgRWRpdG9yQ2xpZW50KiBjbGllbnQg
PSAwKTsKICAgICB2aXJ0dWFsIH5GcmFtZVF0KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1
bGVDbG9zZSgpOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lLmNwcAkocmV2aXNpb24gMTgx
MDYpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ1LDkgKzQ1LDkgQEAgdm9pZCBSZW5kZXJGcmFtZTo6dmlld0NsZWFyZWQoKQogICAgIGlm
IChlbGVtZW50KCkgJiYgbV93aWRnZXQgJiYgbV93aWRnZXQtPmlzRnJhbWVWaWV3KCkpIHsKICAg
ICAgICAgRnJhbWVWaWV3KiB2aWV3ID0gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4obV93aWRnZXQp
OwogICAgICAgICBIVE1MRnJhbWVTZXRFbGVtZW50KiBmcmFtZVNldCA9IHN0YXRpY19jYXN0PEhU
TUxGcmFtZVNldEVsZW1lbnQqPihlbGVtZW50KCktPnBhcmVudE5vZGUoKSk7Ci0gICAgICAgIGJv
b2wgaGFzQm9yZGVyID0gZWxlbWVudCgpLT5tX2ZyYW1lQm9yZGVyICYmIGZyYW1lU2V0LT5mcmFt
ZUJvcmRlcigpOwotICAgICAgICBpbnQgbWFyZ2ludyA9IGVsZW1lbnQoKS0+bV9tYXJnaW5XaWR0
aDsKLSAgICAgICAgaW50IG1hcmdpbmggPSBlbGVtZW50KCktPm1fbWFyZ2luSGVpZ2h0OworICAg
ICAgICBib29sIGhhc0JvcmRlciA9IGVsZW1lbnQoKS0+aGFzRnJhbWVCb3JkZXIoKSAmJiBmcmFt
ZVNldC0+ZnJhbWVCb3JkZXIoKTsKKyAgICAgICAgaW50IG1hcmdpbncgPSBlbGVtZW50KCktPmdl
dE1hcmdpbldpZHRoKCk7CisgICAgICAgIGludCBtYXJnaW5oID0gZWxlbWVudCgpLT5nZXRNYXJn
aW5IZWlnaHQoKTsKIAogICAgICAgICB2aWV3LT5zZXRIYXNCb3JkZXIoaGFzQm9yZGVyKTsKICAg
ICAgICAgaWYgKG1hcmdpbncgIT0gLTEpCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQ
YXJ0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXJ0LmNwcAko
cmV2aXNpb24gMTgxMDYpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXJ0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVk
ZSAiRnJhbWVUcmVlLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCi0jaW5jbHVkZSAiSFRNTEVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1SZW5kZXJQYXJ0
OjpSZW5kZXJQYXJ0KEhUTUxFbGVtZW50KiBub2RlKQorUmVuZGVyUGFydDo6UmVuZGVyUGFydChI
VE1MRnJhbWVPd25lckVsZW1lbnQqIG5vZGUpCiAgICAgOiBSZW5kZXJXaWRnZXQobm9kZSkKIHsK
ICAgICAvLyBpbml0IFJlbmRlck9iamVjdCBhdHRyaWJ1dGVzCkluZGV4OiBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJQYXJ0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UGFydC5oCShyZXZpc2lvbiAxODEwNikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBhcnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTEgKzMwLDExIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEZyYW1lOwotY2xhc3MgSFRNTEVsZW1lbnQ7CitjbGFzcyBIVE1MRnJhbWVPd25l
ckVsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlclBhcnQgOiBwdWJsaWMgUmVuZGVyV2lkZ2V0IHsKIHB1
YmxpYzoKLSAgICBSZW5kZXJQYXJ0KEhUTUxFbGVtZW50Kik7CisgICAgUmVuZGVyUGFydChIVE1M
RnJhbWVPd25lckVsZW1lbnQqKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJQYXJ0KCk7CiAgICAgCiAg
ICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRl
clBhcnQiOyB9CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXJ0T2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXJ0T2JqZWN0LmNwcAkocmV2
aXNpb24gMTgxMDYpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXJ0T2JqZWN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVz
aW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVJlbmRlclBhcnRPYmplY3Q6OlJlbmRlclBhcnRP
YmplY3QoSFRNTEVsZW1lbnQqIGVsZW1lbnQpCitSZW5kZXJQYXJ0T2JqZWN0OjpSZW5kZXJQYXJ0
T2JqZWN0KEhUTUxGcmFtZU93bmVyRWxlbWVudCogZWxlbWVudCkKICAgICA6IFJlbmRlclBhcnQo
ZWxlbWVudCkKIHsKICAgICAvLyBpbml0IFJlbmRlck9iamVjdCBhdHRyaWJ1dGVzCkBAIC0yNjQs
OSArMjY0LDkgQEAgdm9pZCBSZW5kZXJQYXJ0T2JqZWN0Ojp2aWV3Q2xlYXJlZCgpCiAgICAgICAg
IGludCBtYXJnaW5oID0gLTE7CiAgICAgICAgIGlmIChlbGVtZW50KCktPmhhc1RhZ05hbWUoaWZy
YW1lVGFnKSkgewogICAgICAgICAgICAgSFRNTElGcmFtZUVsZW1lbnQqIGZyYW1lID0gc3RhdGlj
X2Nhc3Q8SFRNTElGcmFtZUVsZW1lbnQqPihlbGVtZW50KCkpOwotICAgICAgICAgICAgaGFzQm9y
ZGVyID0gZnJhbWUtPm1fZnJhbWVCb3JkZXI7Ci0gICAgICAgICAgICBtYXJnaW53ID0gZnJhbWUt
Pm1fbWFyZ2luV2lkdGg7Ci0gICAgICAgICAgICBtYXJnaW5oID0gZnJhbWUtPm1fbWFyZ2luSGVp
Z2h0OworICAgICAgICAgICAgaGFzQm9yZGVyID0gZnJhbWUtPmhhc0ZyYW1lQm9yZGVyKCk7Cisg
ICAgICAgICAgICBtYXJnaW53ID0gZnJhbWUtPmdldE1hcmdpbldpZHRoKCk7CisgICAgICAgICAg
ICBtYXJnaW5oID0gZnJhbWUtPmdldE1hcmdpbkhlaWdodCgpOwogICAgICAgICB9CiAKICAgICAg
ICAgdmlldy0+c2V0SGFzQm9yZGVyKGhhc0JvcmRlcik7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJQYXJ0T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUGFydE9iamVjdC5oCShyZXZpc2lvbiAxODEwNikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclBhcnRPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlclBhcnRPYmplY3QgOiBwdWJsaWMgUmVuZGVyUGFy
dCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyUGFydE9iamVjdChIVE1MRWxlbWVudCopOworICAgIFJl
bmRlclBhcnRPYmplY3QoSFRNTEZyYW1lT3duZXJFbGVtZW50Kik7CiAKICAgICB2aXJ0dWFsIGNv
bnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyUGFydE9iamVjdCI7
IH0KIApJbmRleDogV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lQnJpZGdlLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUJyaWRnZS5tbQkocmV2aXNp
b24gMTgxMDYpCisrKyBXZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVCcmlkZ2UubW0JKHdv
cmtpbmcgY29weSkKQEAgLTc4LDExICs3OCwxMSBAQAogI2ltcG9ydCA8V2ViQ29yZS9DYWNoZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVu
dExvYWRlci5oPgotI2ltcG9ydCA8V2ViQ29yZS9FbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0ZyYW1lTG9hZGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyQ2xpZW50Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0ZyYW1lTWFjLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVHJlZS5o
PgorI2ltcG9ydCA8V2ViQ29yZS9IVE1MRnJhbWVPd25lckVsZW1lbnQuaD4KICNpbXBvcnQgPFdl
YkNvcmUvUGFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlci5oPgogI2ltcG9y
dCA8V2ViQ29yZS9TdWJyZXNvdXJjZUxvYWRlci5oPgpAQCAtMTIxLDcgKzEyMSw3IEBAIE5TU3Ry
aW5nICpXZWJQbHVnaW5Db250YWluZXJLZXkgPSAgIEAiV2UKICAgICByZXR1cm4ga2l0KG1fZnJh
bWUtPnBhZ2UoKSk7CiB9CiAKLS0gKHZvaWQpZmluaXNoSW5pdGlhbGl6aW5nV2l0aFBhZ2U6KFdl
YkNvcmU6OlBhZ2UqKXBhZ2UgZnJhbWVOYW1lOihOU1N0cmluZyAqKW5hbWUgZnJhbWVWaWV3OihX
ZWJGcmFtZVZpZXcgKilmcmFtZVZpZXcgb3duZXJFbGVtZW50OihXZWJDb3JlRWxlbWVudCAqKW93
bmVyRWxlbWVudAorLSAodm9pZClmaW5pc2hJbml0aWFsaXppbmdXaXRoUGFnZTooV2ViQ29yZTo6
UGFnZSopcGFnZSBmcmFtZU5hbWU6KE5TU3RyaW5nICopbmFtZSBmcmFtZVZpZXc6KFdlYkZyYW1l
VmlldyAqKWZyYW1lVmlldyBvd25lckVsZW1lbnQ6KEhUTUxGcmFtZU93bmVyRWxlbWVudCAqKW93
bmVyRWxlbWVudAogewogICAgICsrV2ViQnJpZGdlQ291bnQ7CiAKQEAgLTE1Miw3ICsxNTIsNyBA
QCBOU1N0cmluZyAqV2ViUGx1Z2luQ29udGFpbmVyS2V5ID0gICBAIldlCiAgICAgcmV0dXJuIHNl
bGY7CiB9CiAKLS0gKGlkKWluaXRTdWJmcmFtZVdpdGhPd25lckVsZW1lbnQ6KFdlYkNvcmVFbGVt
ZW50ICopb3duZXJFbGVtZW50IGZyYW1lTmFtZTooTlNTdHJpbmcgKiluYW1lIGZyYW1lVmlldzoo
V2ViRnJhbWVWaWV3ICopZnJhbWVWaWV3CistIChpZClpbml0U3ViZnJhbWVXaXRoT3duZXJFbGVt
ZW50OihIVE1MRnJhbWVPd25lckVsZW1lbnQgKilvd25lckVsZW1lbnQgZnJhbWVOYW1lOihOU1N0
cmluZyAqKW5hbWUgZnJhbWVWaWV3OihXZWJGcmFtZVZpZXcgKilmcmFtZVZpZXcKIHsKICAgICBz
ZWxmID0gW3N1cGVyIGluaXRdOwogICAgIFtzZWxmIGZpbmlzaEluaXRpYWxpemluZ1dpdGhQYWdl
Om93bmVyRWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+cGFnZSgpIGZyYW1lTmFtZTpuYW1l
IGZyYW1lVmlldzpmcmFtZVZpZXcgb3duZXJFbGVtZW50Om93bmVyRWxlbWVudF07CkBAIC00MjAs
NyArNDIwLDcgQEAgTlNTdHJpbmcgKldlYlBsdWdpbkNvbnRhaW5lcktleSA9ICAgQCJXZQogLSAo
V2ViQ29yZUZyYW1lQnJpZGdlICopY3JlYXRlQ2hpbGRGcmFtZU5hbWVkOihOU1N0cmluZyAqKWZy
YW1lTmFtZSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFVSTDoo
TlNVUkwgKilVUkwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcnJl
cjooY29uc3QgU3RyaW5nJilyZWZlcnJlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvd25lckVsZW1lbnQ6KFdlYkNvcmVFbGVtZW50ICopb3duZXJFbGVtZW50CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvd25lckVsZW1lbnQ6KEhUTUxGcmFtZU93bmVyRWxl
bWVudCAqKW93bmVyRWxlbWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dz
U2Nyb2xsaW5nOihCT09MKWFsbG93c1Njcm9sbGluZyAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtYXJnaW5XaWR0aDooaW50KXdpZHRoCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtYXJnaW5IZWlnaHQ6KGludCloZWlnaHQKSW5kZXg6IFdlYktpdC9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHJldmlzaW9uIDE4MTA2KQorKysg
V2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC03Miw2ICs3Miw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVNYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVU
cmVlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0hUTUxGb3JtRWxlbWVudC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9IaXRUZXN0UmVzdWx0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ljb25EYXRhYmFzZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9Nb3VzZUV2ZW50Lmg+CkBAIC04Myw3ICs4NCw3IEBACiAjaW1wb3J0
IDxXZWJDb3JlL1dlYkNvcmVGcmFtZUJyaWRnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3Jl
UGFnZVN0YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkRhdGFQcm90b2NvbC5oPgotI2ltcG9y
dCA8V2ViS2l0L0RPTUVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYktpdC9ET01IVE1MRm9ybUVsZW1l
bnQuaD4KICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2ltcG9ydCA8d3RmL1Bh
c3NSZWZQdHIuaD4KIApJbmRleDogV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMTgxMDYpCisrKyBXZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTMwMywyMyArMzAzLDYgQEAKIAkJfTsKIC8qIEVuZCBQ
QlhCdWlsZFJ1bGUgc2VjdGlvbiAqLwogCi0vKiBCZWdpbiBQQlhCdWlsZFN0eWxlIHNlY3Rpb24g
Ki8KLQkJQkM0QzY1OUYwQjJBNDg3QjAwRTU3MzUyIC8qIERldmVsb3BtZW50ICovID0gewotCQkJ
aXNhID0gUEJYQnVpbGRTdHlsZTsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJQ09QWV9QSEFT
RV9TVFJJUCA9IE5POwotCQkJfTsKLQkJCW5hbWUgPSBEZXZlbG9wbWVudDsKLQkJfTsKLQkJQkM0
QzY1QTAwQjJBNDg3QjAwRTU3MzUyIC8qIERlcGxveW1lbnQgKi8gPSB7Ci0JCQlpc2EgPSBQQlhC
dWlsZFN0eWxlOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlDT1BZX1BIQVNFX1NUUklQID0g
WUVTOwotCQkJfTsKLQkJCW5hbWUgPSBEZXBsb3ltZW50OwotCQl9OwotLyogRW5kIFBCWEJ1aWxk
U3R5bGUgc2VjdGlvbiAqLwotCiAvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8K
IAkJMDY1QUQ1QTEwQjBDMzJDNzAwNUEyQjFEIC8qIFdlYkNvbnRleHRNZW51Q2xpZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb250ZXh0TWVudUNsaWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNjVBRDVBMjBCMEMzMkM3MDA1QTJCMUQgLyog
V2ViQ29udGV4dE1lbnVDbGllbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViQ29udGV4dE1lbnVDbGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMjc5LDEyICsxMjYyLDYgQEAKIAkJMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8q
IFByb2plY3Qgb2JqZWN0ICovID0gewogCQkJaXNhID0gUEJYUHJvamVjdDsKIAkJCWJ1aWxkQ29u
ZmlndXJhdGlvbkxpc3QgPSAxNDlDMjgzMjA4OTAyQjBGMDA4QTlFRkMgLyogQnVpbGQgY29uZmln
dXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJXZWJLaXQiICovOwotCQkJYnVpbGRTZXR0aW5n
cyA9IHsKLQkJCX07Ci0JCQlidWlsZFN0eWxlcyA9ICgKLQkJCQlCQzRDNjU5RjBCMkE0ODdCMDBF
NTczNTIgLyogRGV2ZWxvcG1lbnQgKi8sCi0JCQkJQkM0QzY1QTAwQjJBNDg3QjAwRTU3MzUyIC8q
IERlcGxveW1lbnQgKi8sCi0JCQkpOwogCQkJaGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDE7CiAJ
CQlrbm93blJlZ2lvbnMgPSAoCiAJCQkJRW5nbGlzaCwKSW5kZXg6IFdlYktpdC9XZWJWaWV3L1dl
YkZyYW1lLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJWaWV3L1dlYkZyYW1lLm1tCShyZXZp
c2lvbiAxODEwNikKKysrIFdlYktpdC9XZWJWaWV3L1dlYkZyYW1lLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC02Niw3ICs2Niw4IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0ZyYW1lTWFjLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVHJlZS5oPgot
I2ltcG9ydCA8V2ViQ29yZS9IVE1MRWxlbWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9IVE1MRm9y
bUVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvSFRNTEZyYW1lT3duZXJFbGVtZW50Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VsZWN0aW9uQ29udHJv
bGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJEYXRhUHJvdG9jb2wuaD4KQEAgLTExNzAsMTAg
KzExNzEsNyBAQCBzdGF0aWMgaW5saW5lIFdlYkRhdGFTb3VyY2UgKmRhdGFTb3VyY2UoCiAgICAg
RnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoc2VsZik7CiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgRWxlbWVudCogZWxlbWVudCA9IGNvcmVGcmFtZS0+b3duZXJF
bGVtZW50KCk7Ci0gICAgaWYgKCFlbGVtZW50LT5pc0hUTUxFbGVtZW50KCkpCi0gICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgcmV0dXJuIGtpdChzdGF0aWNfY2FzdDxIVE1MRWxlbWVudCo+KGVsZW1l
bnQpKTsKKyAgICByZXR1cm4ga2l0KGNvcmVGcmFtZS0+b3duZXJFbGVtZW50KCkpOwogfQogCiAt
IChXZWJEYXRhU291cmNlICopcHJvdmlzaW9uYWxEYXRhU291cmNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11810</attachid>
            <date>2006-12-11 15:18:51 -0800</date>
            <delta_ts>2006-12-11 15:52:55 -0800</delta_ts>
            <desc>patch with change log</desc>
            <filename>FrameOwnerPointerPatch.txt</filename>
            <type>text/plain</type>
            <size>64678</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAkocmV2aXNpb24gMTgxNTgpCisrKyBXZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC04NzksNiArODc5LDcgQEAgc2V0KFdlYkNvcmVfU1JDUwogICAgIGh0
bWwvSFRNTEZvcm1FbGVtZW50LmNwcAogICAgIGh0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3Bw
CiAgICAgaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNwcAorICAgIGh0bWwvSFRNTEZyYW1lT3duZXJF
bGVtZW50LmNwcAogICAgIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKICAgICBodG1sL0hU
TUxHZW5lcmljRm9ybUVsZW1lbnQuY3BwCiAgICAgaHRtbC9IVE1MSGVhZEVsZW1lbnQuY3BwCklu
ZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwko
cmV2aXNpb24gMTgxNjApCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDEwNyBAQAorMjAwNi0xMi0xMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBodHRw
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTc5NAorICAgICAgICAgIGZpeCBs
aWZldGltZSBwcm9ibGVtcyBhZmZlY3RpbmcgRnJhbWUncyBvd25lckVsZW1lbnQgcG9pbnRlcgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogV2ViQ29yZVNvdXJjZXMuYmtsOgorICAgICAgICBVcGRhdGVk
IGZvciBuZXcgc291cmNlIGZpbGVzLgorCisgICAgICAgICogV2ViQ29yZS5leHA6IFVwZGF0ZWQg
Zm9yIGNoYW5nZXMgdG8gZW50cnkgcG9pbnQgbmFtZXMuCisKKyAgICAgICAgKiBicmlkZ2UvbWFj
L0ZyYW1lTWFjLmg6CisgICAgICAgICogYnJpZGdlL21hYy9GcmFtZU1hYy5tbTogKFdlYkNvcmU6
OkZyYW1lTWFjOjpGcmFtZU1hYyk6CisgICAgICAgICogYnJpZGdlL3dpbi9GcmFtZVdpbi5oOgor
ICAgICAgICAqIGJyaWRnZS93aW4vRnJhbWVXaW4uY3BwOiAoV2ViQ29yZTo6RnJhbWVXaW46OkZy
YW1lV2luKToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9GcmFtZVF0Lmg6CisgICAgICAgICogcGxh
dGZvcm0vcXQvRnJhbWVRdC5jcHA6IChXZWJDb3JlOjpGcmFtZVF0OjpGcmFtZVF0KToKKyAgICAg
ICAgVXBkYXRlZCBvd25lciBlbGVtZW50IHR5cGUgdG8gSFRNTEZyYW1lT3duZXJFbGVtZW50Lgor
CisgICAgICAgICogYnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UuaDogUmVtb3ZlZCBub24t
QysrIGNhc2Ugc2luY2Ugd2UgZG9uJ3QKKyAgICAgICAgdXNlIHRoYXQgYW55IG1vcmUuIFVwZGF0
ZWQgb3duZXIgZWxlbWVudCB0eXBlIHRvIEhUTUxGcmFtZU93bmVyRWxlbWVudC4KKworICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5jcHA6IEFkZGVkIGluY2x1ZGUgc28gdGhhdCB0aGUgb3duZXJFbGVt
ZW50IGZ1bmN0aW9uIGNhbgorICAgICAgICBjb21waWxlIChzaW5jZSBpdCBkb3duY2FzdHMgYW4g
SFRNTEZyYW1lT3duZXJFbGVtZW50IHRvIGFuIEVsZW1lbnQpLgorCisgICAgICAgICogaHRtbC9I
VE1MRnJhbWVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRhaW5pbmdGcmFtZVNl
dEVsZW1lbnQpOiBNb3ZlZCB0aGlzIGZ1bmN0aW9uIGluIGhlcmU7IGl0CisgICAgICAgIGRvZXNu
J3QgbmVlZCB0byBiZSBhIG1lbWJlciBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxG
cmFtZUVsZW1lbnQ6OmF0dGFjaCk6IFVwZGF0ZWQgdG8gY2FsbCB0aGlzLgorCisgICAgICAgICog
aHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lRWxl
bWVudEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudEJhc2U6OkhU
TUxGcmFtZUVsZW1lbnRCYXNlKTogSW5oZXJpdCBmcm9tCisgICAgICAgIEhUTUxGcmFtZU93bmVy
RWxlbWVudC4gUmVtb3ZlZCBjb250ZW50RnJhbWUsIGNvbnRlbnREb2N1bWVudCwgYW5kCisgICAg
ICAgIGNvbnRhaW5pbmdGcmFtZVNldEVsZW1lbnQuIFJlbW92ZWQgZnJpZW5kIGNsYXNzZXMuCisK
KyAgICAgICAgKiBodG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oOiBBZGRlZC4KKyAgICAgICAg
KiBodG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHA6IEFkZGVkLgorCisgICAgICAgICogaHRt
bC9IVE1MRW1iZWRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNw
cDoKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9I
VE1MT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIFJlbW92ZSBub3ctdW5uZWVkZWQgY29udGVu
dERvY3VtZW50IGZ1bmN0aW9ucy4KKworICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkVsZW1lbnQu
aDoKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxQbHVnSW5FbGVtZW50OjpIVE1MUGx1Z0luRWxlbWVudCk6IEluaGVyaXQgZnJvbQor
ICAgICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQuCisKKyAgICAgICAgKiBsb2FkZXIvRm9ybVN0
YXRlLmg6CisgICAgICAgICogbG9hZGVyL0Zvcm1TdGF0ZS5jcHA6IFVzZSBIVE1MRm9ybUVsZW1l
bnQgaW5zdGVhZCBvZiBqdXN0IEVsZW1lbnQuCisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2Fk
ZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OnJlcXVlc3RGcmFtZSk6IFVzZSBIVE1MRm9ybUVsZW1lbnQuCisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFN1YmZyYW1lKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6cmVxdWVzdE9iamVjdCk6IERvbid0IHBhc3MgYW4gZWxl
bWVudCBwYXJhbWV0ZXIKKyAgICAgICAgdG8gc2hvdWxkVXNlUGx1Z2luLCBhbmQgcmVtb3ZlIG5v
dy11bm5lZWRlZCB0eXBlIGNhc3RzLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnNo
b3VsZFVzZVBsdWdpbik6IFJlbW92ZWQgdW5uZWVkZWQgZWxlbWVudCBwYXJhbWV0ZXIuCisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6aGFuZGxlRmFsbGJhY2tDb250ZW50KTogVXNlIEhU
TUxGcmFtZU93bmVyRWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjp1cGRh
dGVCYXNlVVJMRm9yRW1wdHlEb2N1bWVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6OmlzSG9zdGVkQnlPYmplY3RFbGVtZW50KTogRGl0dG8uCisgICAgICAgICogbG9h
ZGVyL21hYy9GcmFtZUxvYWRlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Ojpsb2FkKTogVXNlIEhUTUxGb3JtRWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpwb3N0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y3JlYXRl
RnJhbWUpOiBVc2UgSFRNTEZyYW1lT3duZXJFbGVtZW50LgorCisgICAgICAgICogcGFnZS9GcmFt
ZS5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVQcml2YXRlLmg6CisgICAgICAgICogcGFnZS9GcmFt
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJlbnRGcm9tT3duZXJFbGVtZW50KTogVXNlIEhU
TUxGcmFtZU93bmVyRWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpGcmFtZSk6IERp
dHRvLiBBbHNvIHNldCBtX2NvbnRlbnRGcmFtZSBvbiB0aGUgb3duZXIgZWxlbWVudC4KKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lOjpvd25lckVsZW1lbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lOjpvd25lclJlbmRlcmVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZTo6ZGlzY29ubmVjdE93bmVyRWxlbWVudCk6IENsZWFyIG1fY29udGVudEZyYW1lIG9uIHRoZSBv
d25lcgorICAgICAgICBlbGVtZW50IGJlZm9yZSBkaXNjb25uZWN0aW5nIGl0LgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVQcml2YXRlOjpGcmFtZVByaXZhdGUpOiBVc2UgSFRNTEZyYW1lT3duZXJF
bGVtZW50LgorCisgICAgICAgICogcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tOiBJbmNsdWRl
IEhUTUxGcmFtZU93bmVyRWxlbWVudC5oIHNvIHRoYXQKKyAgICAgICAgdGhlIGNvZGUgaGVyZSB3
aWxsIGNvbXBpbGUgKG5vIGNvZGUgY2hhbmdlcyBuZWVkZWQpLgorCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckZyYW1lLmNwcDogKFdlYkNvcmU6OlJlbmRlckZyYW1lOjp2aWV3Q2xlYXJlZCk6
CisgICAgICAgIFVwZGF0ZWQgc28gdGhhdCBSZW5kZXJGcmFtZSBkb2Vzbid0IG5lZWQgdG8gYmUg
YSBmcmllbmQgb2YgSFRNTEZyYW1lRWxlbWVudEJhc2UuCisKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyUGFydC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJQYXJ0LmNwcDogKFdlYkNv
cmU6OlJlbmRlclBhcnQ6OlJlbmRlclBhcnQpOgorICAgICAgICBVc2UgSFRNTEZyYW1lT3duZXJF
bGVtZW50LgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclBhcnRPYmplY3QuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyUGFydE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJQYXJ0T2JqZWN0OjpSZW5kZXJQYXJ0T2JqZWN0KTogVXNlIEhUTUxGcmFtZU93bmVyRWxl
bWVudC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclBhcnRPYmplY3Q6OnZpZXdDbGVhcmVkKTog
VXBkYXRlZCBzbyB0aGF0IFJlbmRlckZyYW1lIGRvZXNuJ3QKKyAgICAgICAgbmVlZCB0byBiZSBh
IGZyaWVuZCBvZiBIVE1MRnJhbWVFbGVtZW50QmFzZS4KKworICAgICAgICAtIG90aGVyIGNoYW5n
ZXMKKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5o
OiBBZGRlZCBOb25jb3B5YWJsZSBhbmQKKyAgICAgICAgZml4ZWQgaW5kZW50YXRpb24uCisKIDIw
MDYtMTItMTEgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEFkYW0uCkBAIC03NjEsNyArODY1LDYgQEAKICAgICAgICAgKFdlYkNvcmU6
OnNldHVwKToKICAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmg6CiAg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Z2V0SW50ZXJuYWwpOgotICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oOgogICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcDoKICAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlTWFuYWdlcjo6c2xvdERhdGEpOgogICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpyZW1vdmUpOgpAQCAtODE5LDYgKzkyMiwxMSBAQAog
ICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cGxhaW5UZXh0KToKICAgICAgICAgKFdlYkNv
cmU6OlBhc3RlYm9hcmQ6OmRvY3VtZW50RnJhZ21lbnQpOgogCisgICAgICAgIC0gb3RoZXIgY2hh
bmdlcworCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFs
Lmg6CisgICAgICAgIE1hcmsgdGhpcyBjbGFzcyBub25jb3B5YWJsZSBhbmQgZml4IGluZGVudGF0
aW9uIG9mIGEgYnJhY2UuCisKID09PSBTYWZhcmktNTIxLjMyID09PQogCiAyMDA2LTEyLTA4ICBS
b2IgQnVpcyAgPGJ1aXNAa2RlLm9yZz4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5leHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmV4cAkocmV2aXNpb24gMTgxNTgpCisrKyBXZWJDb3Jl
L1dlYkNvcmUuZXhwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsNyArMTU1LDcgQEAgX19aTjdXZWJD
b3JlMTFGcmFtZUxvYWRlcjRsb2FkRVAxMk5TVVJMUgogX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRl
cjRsb2FkRVBOU18xNERvY3VtZW50TG9hZGVyRQogX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjRs
b2FkRVBOU18xNERvY3VtZW50TG9hZGVyRU5TXzEzRnJhbWVMb2FkVHlwZUVOM1dURjEwUGFzc1Jl
ZlB0cklOU185Rm9ybVN0YXRlRUVFCiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyNGxvYWRFUktO
U180S1VSTEVQTlNfNUV2ZW50RQotX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjRsb2FkRVJLTlNf
NEtVUkxFUktOU182U3RyaW5nRU5TXzEzRnJhbWVMb2FkVHlwZUVTNl9QTlNfNUV2ZW50RVBOU183
RWxlbWVudEVSS04zV1RGN0hhc2hNYXBJUzRfUzRfTlNDXzdTdHJIYXNoSVM0X0VFTlNDXzEwSGFz
aFRyYWl0c0lTNF9FRVNIX0VFCitfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyNGxvYWRFUktOU180
S1VSTEVSS05TXzZTdHJpbmdFTlNfMTNGcmFtZUxvYWRUeXBlRVM2X1BOU181RXZlbnRFUE5TXzE1
SFRNTEZvcm1FbGVtZW50RVJLTjNXVEY3SGFzaE1hcElTNF9TNF9OU0NfN1N0ckhhc2hJUzRfRUVO
U0NfMTBIYXNoVHJhaXRzSVM0X0VFU0hfRUUKIF9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXI1Y2xl
YXJFYgogX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjZyZWxvYWRFdgogX19aTjdXZWJDb3JlMTFG
cmFtZUxvYWRlcjdjYW5Mb2FkRVA1TlNVUkxSS05TXzZTdHJpbmdFUmIKQEAgLTIzNSw3ICsyMzUs
NiBAQCBfX1pON1dlYkNvcmU1Q2FjaGUxMXNldERpc2FibGVkRWIKIF9fWk43V2ViQ29yZTVDYWNo
ZTEzZ2V0U3RhdGlzdGljc0V2CiBfX1pON1dlYkNvcmU1Q2FjaGUxNHNldE1heGltdW1TaXplRWoK
IF9fWk43V2ViQ29yZTVGcmFtZTExc2V0U2V0dGluZ3NFUE5TXzhTZXR0aW5nc0UKLV9fWk43V2Vi
Q29yZTVGcmFtZTEyb3duZXJFbGVtZW50RXYKIF9fWk43V2ViQ29yZTVGcmFtZTE3c2V0V2luZG93
SGFzRm9jdXNFYgogX19aTjdXZWJDb3JlNUZyYW1lMjBzZXRTZWxlY3Rpb25Gcm9tTm9uZUV2CiBf
X1pON1dlYkNvcmU1RnJhbWUyMXNldFByb2hpYml0c1Njcm9sbGluZ0ViCkBAIC0yNTQsOCArMjUz
LDEyIEBAIF9fWk43V2ViQ29yZTZFZGl0b3IxM2NhbkRIVE1MUGFzdGVFdgogX19aTjdXZWJDb3Jl
NkVkaXRvcjEzcGVyZm9ybURlbGV0ZUV2CiBfX1pON1dlYkNvcmU2RWRpdG9yMTN0cnlESFRNTFBh
c3RlRXYKIF9fWk43V2ViQ29yZTZFZGl0b3IyMWFwcGx5U3R5bGVUb1NlbGVjdGlvbkVQTlNfMTlD
U1NTdHlsZURlY2xhcmF0aW9uRU5TXzEwRWRpdEFjdGlvbkUKK19fWk43V2ViQ29yZTZFZGl0b3Iy
MWlzU2VsZWN0aW9uTWlzc3BlbGxlZEV2CitfX1pON1dlYkNvcmU2RWRpdG9yMjRhZHZhbmNlVG9O
ZXh0TWlzc3BlbGxpbmdFYgorX19aTjdXZWJDb3JlNkVkaXRvcjI0aXNTZWxlY3Rpb25VbmdyYW1t
YXRpY2FsRXYKIF9fWk43V2ViQ29yZTZFZGl0b3IzMGFwcGx5UGFyYWdyYXBoU3R5bGVUb1NlbGVj
dGlvbkVQTlNfMTlDU1NTdHlsZURlY2xhcmF0aW9uRU5TXzEwRWRpdEFjdGlvbkUKIF9fWk43V2Vi
Q29yZTZFZGl0b3IzMGRlbGV0ZVNlbGVjdGlvbldpdGhTbWFydERlbGV0ZUViCitfX1pON1dlYkNv
cmU2RWRpdG9yMzJndWVzc2VzRm9yVW5ncmFtbWF0aWNhbFNlbGVjdGlvbkV2CiBfX1pON1dlYkNv
cmU2RWRpdG9yM2N1dEV2CiBfX1pON1dlYkNvcmU2RWRpdG9yNGNvcHlFdgogX19aTjdXZWJDb3Jl
NkVkaXRvcjVwYXN0ZUV2CkBAIC0yNzUsNyArMjc4LDcgQEAgX19aTjdXZWJDb3JlOEZyYW1lTWFj
MTh3aW5kb3dTY3JpcHRPYmplYwogX19aTjdXZWJDb3JlOEZyYW1lTWFjMjB3aW5kb3dTY3JpcHRO
UE9iamVjdEV2CiBfX1pON1dlYkNvcmU4RnJhbWVNYWMyNmRhc2hib2FyZFJlZ2lvbnNEaWN0aW9u
YXJ5RXYKIF9fWk43V2ViQ29yZThGcmFtZU1hYzlzZXRCcmlkZ2VFUDE4V2ViQ29yZUZyYW1lQnJp
ZGdlCi1fX1pON1dlYkNvcmU4RnJhbWVNYWNDMUVQTlNfNFBhZ2VFUE5TXzdFbGVtZW50RVBOU18x
N0ZyYW1lTG9hZGVyQ2xpZW50RQorX19aTjdXZWJDb3JlOEZyYW1lTWFjQzFFUE5TXzRQYWdlRVBO
U18yMUhUTUxGcmFtZU93bmVyRWxlbWVudEVQTlNfMTdGcmFtZUxvYWRlckNsaWVudEUKIF9fWk43
V2ViQ29yZThJbnRQb2ludEMxRVJLOF9OU1BvaW50CiBfX1pON1dlYkNvcmU4cGFyc2VVUkxFUktO
U182U3RyaW5nRQogX19aTjdXZWJDb3JlOUZsb2F0UmVjdEMxRVJLN19OU1JlY3QKQEAgLTM3MSw2
ICszNzQsNyBAQCBfX1pOSzdXZWJDb3JlNEZvbnQxMXByaW1hcnlGb250RXYKIF9fWk5LN1dlYkNv
cmU0S1VSTDhnZXROU1VSTEV2CiBfX1pOSzdXZWJDb3JlNUZyYW1lMTBpc0ZyYW1lU2V0RXYKIF9f
Wk5LN1dlYkNvcmU1RnJhbWUxMmV2ZW50SGFuZGxlckV2CitfX1pOSzdXZWJDb3JlNUZyYW1lMTJv
d25lckVsZW1lbnRFdgogX19aTks3V2ViQ29yZTVGcmFtZTEzc2VsZWN0aW9uUmVjdEV2CiBfX1pO
SzdXZWJDb3JlNUZyYW1lMTVyZXZlYWxTZWxlY3Rpb25FUktOU18xMVJlbmRlckxheWVyMTVTY3Jv
bGxBbGlnbm1lbnRFCiBfX1pOSzdXZWJDb3JlNUZyYW1lMTZpblZpZXdTb3VyY2VNb2RlRXYKQEAg
LTM5OCwxMCArNDAyLDYgQEAgX19aTks3V2ViQ29yZTZFZGl0b3I3Y2FuQ29weUV2CiBfX1pOSzdX
ZWJDb3JlNkVkaXRvcjdjYW5FZGl0RXYKIF9fWk5LN1dlYkNvcmU2RWRpdG9yOGNhblBhc3RlRXYK
IF9fWk5LN1dlYkNvcmU2RWRpdG9yOWNhbkRlbGV0ZUV2Ci1fX1pON1dlYkNvcmU2RWRpdG9yMzJn
dWVzc2VzRm9yVW5ncmFtbWF0aWNhbFNlbGVjdGlvbkV2Ci1fX1pON1dlYkNvcmU2RWRpdG9yMjFp
c1NlbGVjdGlvbk1pc3NwZWxsZWRFdgotX19aTjdXZWJDb3JlNkVkaXRvcjI0YWR2YW5jZVRvTmV4
dE1pc3NwZWxsaW5nRWIKLV9fWk43V2ViQ29yZTZFZGl0b3IyNGlzU2VsZWN0aW9uVW5ncmFtbWF0
aWNhbEV2CiBfX1pOSzdXZWJDb3JlNlN0cmluZzE2ZGVwcmVjYXRlZFN0cmluZ0V2CiBfX1pOSzdX
ZWJDb3JlNlN0cmluZzdpc0VtcHR5RXYKIF9fWk5LN1dlYkNvcmU3RWxlbWVudDEyZ2V0QXR0cmli
dXRlRVJLTlNfMTNRdWFsaWZpZWROYW1lRQpJbmRleDogV2ViQ29yZS9XZWJDb3JlU291cmNlcy5i
a2wKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wJKHJldmlzaW9uIDE4
MTU4KQorKysgV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wJKHdvcmtpbmcgY29weSkKQEAgLTYy
Nyw2ICs2MjcsNyBAQAogICAgICAgICBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKICAgICAgICAg
aHRtbC9IVE1MRnJhbWVFbGVtZW50LmNwcAogICAgICAgICBodG1sL0hUTUxGcmFtZUVsZW1lbnRC
YXNlLmNwcAorICAgICAgICBodG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAKICAgICAgICAg
aHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAogICAgICAgICBodG1sL0hUTUxHZW5lcmljRm9y
bUVsZW1lbnQuY3BwCiAgICAgICAgIGh0bWwvSFRNTEhSRWxlbWVudC5jcHAKSW5kZXg6IFdlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDE4
MTU4KQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlL1dlYkNvcmUudmNwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC00OTQzLDYgKzQ5NDMsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJ
CQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5caHRtbFxIVE1MRnJhbWVPd25lckVsZW1l
bnQuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIu
LlwuLlxodG1sXEhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJ
CTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxodG1sXEhUTUxGcmFtZVNldEVsZW1lbnQu
Y3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxODE1OCkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNTI0LDYgKzE1MjQsOCBA
QAogCQk5M0UyMjdFNDBBRjU4OUFEMDBENDgzMjQgLyogU3VicmVzb3VyY2VMb2FkZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFMjI3REYwQUY1
ODlBRDAwRDQ4MzI0IC8qIFN1YnJlc291cmNlTG9hZGVyLmNwcCAqLzsgfTsKIAkJOTNFMjJBNkYw
QUY1RTk0MTAwRDQ4MzI0IC8qIFBhZ2VTdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0UyMkE2RTBBRjVFOTQxMDBENDgzMjQgLyogUGFnZVN0
YXRlLmNwcCAqLzsgfTsKIAkJOTNFMjJBNzMwQUY1RTk0QzAwRDQ4MzI0IC8qIFBhZ2VTdGF0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFMjJBNzIw
QUY1RTk0QzAwRDQ4MzI0IC8qIFBhZ2VTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTkzRTI0MUZGMEIyQjRFNDAwMEM3MzJBMSAvKiBIVE1M
RnJhbWVPd25lckVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzRTI0MUZFMEIyQjRFNDAwMEM3MzJBMSAvKiBIVE1MRnJhbWVPd25lckVsZW1l
bnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5
M0UyNDI1RjBCMkI1MDk1MDBDNzMyQTEgLyogSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTI0MjVFMEIyQjUw
OTUwMEM3MzJBMSAvKiBIVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwICovOyB9OwogCQk5M0U2MkQ5
QjA5ODVGNDE2MDBFMUI1RTMgLyogU3lzdGVtVGltZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFNjJEOTkwOTg1RjQxNjAwRTFCNUUzIC8qIFN5c3Rl
bVRpbWUuaCAqLzsgfTsKIAkJOTNFQjE2OTUwOUY4ODBCMDAwOTFGOEZGIC8qIFdlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0VCMTY5NDA5Rjg4MEIwMDA5MUY4RkYgLyogV2ViQ29yZVN5c3RlbUludGVyZmFjZS5t
bSAqLzsgfTsKIAkJOTNFQjE2OTcwOUY4ODBDMDAwOTFGOEZGIC8qIFdlYkNvcmVTeXN0ZW1JbnRl
cmZhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
RUIxNjk2MDlGODgwQzAwMDkxRjhGRiAvKiBXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE3MTUsNyArMTcx
Nyw3IEBACiAJCUE4MTM2OUNEMDk3Mzc0RjYwMEQ3NDQ2MyAvKiBIVE1MSW5wdXRFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTM2OUIx
MDk3Mzc0RjUwMEQ3NDQ2MyAvKiBIVE1MSW5wdXRFbGVtZW50LmNwcCAqLzsgfTsKIAkJQTgxMzY5
Q0UwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxHZW5lcmljRm9ybUVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTM2OUIyMDk3Mzc0RjUwMEQ3
NDQ2MyAvKiBIVE1MR2VuZXJpY0Zvcm1FbGVtZW50LmggKi87IH07CiAJCUE4MTM2OUNGMDk3Mzc0
RjYwMEQ3NDQ2MyAvKiBIVE1MR2VuZXJpY0Zvcm1FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTM2OUIzMDk3Mzc0RjUwMEQ3NDQ2MyAv
KiBIVE1MR2VuZXJpY0Zvcm1FbGVtZW50LmNwcCAqLzsgfTsKLQkJQTgxMzY5RDAwOTczNzRGNjAw
RDc0NDYzIC8qIEhUTUxGb3JtRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTgxMzY5QjQwOTczNzRGNTAwRDc0NDYzIC8qIEhUTUxGb3JtRWxl
bWVudC5oICovOyB9OworCQlBODEzNjlEMDA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTEZvcm1FbGVt
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODEz
NjlCNDA5NzM3NEY1MDBENzQ0NjMgLyogSFRNTEZvcm1FbGVtZW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTgxMzY5RDEwOTczNzRGNjAwRDc0
NDYzIC8qIEhUTUxGb3JtRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBODEzNjlCNTA5NzM3NEY1MDBENzQ0NjMgLyogSFRNTEZvcm1FbGVt
ZW50LmNwcCAqLzsgfTsKIAkJQTgxMzY5RDIwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxCdXR0b25F
bGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
ODEzNjlCNjA5NzM3NEY1MDBENzQ0NjMgLyogSFRNTEJ1dHRvbkVsZW1lbnQuaCAqLzsgfTsKIAkJ
QTgxMzY5RDMwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxCdXR0b25FbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTM2OUI3MDk3Mzc0RjUw
MEQ3NDQ2MyAvKiBIVE1MQnV0dG9uRWxlbWVudC5jcHAgKi87IH07CkBAIC00NTE4LDYgKzQ1MjAs
OCBAQAogCQk5M0UyMjdERjBBRjU4OUFEMDBENDgzMjQgLyogU3VicmVzb3VyY2VMb2FkZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3VicmVzb3VyY2VMb2FkZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0UyMkE2RTBBRjVFOTQxMDBENDgz
MjQgLyogUGFnZVN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFBhZ2VTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRTIyQTcyMEFG
NUU5NEMwMEQ0ODMyNCAvKiBQYWdlU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUGFnZVN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRTI0MUZF
MEIyQjRFNDAwMEM3MzJBMSAvKiBIVE1MRnJhbWVPd25lckVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTEZyYW1lT3duZXJFbGVtZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTkzRTI0MjVFMEIyQjUwOTUwMEM3MzJBMSAvKiBIVE1MRnJhbWVP
d25lckVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRN
TEZyYW1lT3duZXJFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNF
NjJEOTkwOTg1RjQxNjAwRTFCNUUzIC8qIFN5c3RlbVRpbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU3lzdGVtVGltZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5M0VCMTY5NDA5Rjg4MEIwMDA5MUY4RkYgLyogV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvcmVTeXN0ZW1JbnRl
cmZhY2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRUIxNjk2MDlGODgwQzAw
MDkxRjhGRiAvKiBXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTc4MTksNiArNzgyMyw4IEBACiAJCQkJQTg3MURFMTcwQTE1MkFDODAwQjEy
QTY4IC8qIEhUTUxGcmFtZUVsZW1lbnQuY3BwICovLAogCQkJCUE4NzFERTFGMEExNTJBQzgwMEIx
MkE2OCAvKiBIVE1MRnJhbWVFbGVtZW50LmggKi8sCiAJCQkJODU1NTQyOTUwQUE0OTM4ODAwQkE4
OUYyIC8qIEhUTUxGcmFtZUVsZW1lbnQuaWRsICovLAorCQkJCTkzRTI0MUZFMEIyQjRFNDAwMEM3
MzJBMSAvKiBIVE1MRnJhbWVPd25lckVsZW1lbnQuaCAqLywKKwkJCQk5M0UyNDI1RTBCMkI1MDk1
MDBDNzMyQTEgLyogSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcCAqLywKIAkJCQlBODcxREUyMjBB
MTUyQUM4MDBCMTJBNjggLyogSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAgKi8sCiAJCQkJQTg3MURF
MUMwQTE1MkFDODAwQjEyQTY4IC8qIEhUTUxGcmFtZVNldEVsZW1lbnQuaCAqLywKIAkJCQk4NTU1
NDI5NjBBQTQ5Mzg4MDBCQTg5RjIgLyogSFRNTEZyYW1lU2V0RWxlbWVudC5pZGwgKi8sCkBAIC0x
MDgzMCw2ICsxMDgzNiw3IEBACiAJCQkJRTFEOEUzMTYwQjI5RTM5QzAwRjRCQUY2IC8qIEhUVFBQ
YXJzZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzVEMDBCMkE4ODZGMDAxODQ2MUQgLyog
VGV4dEJyZWFrSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUFBNEMzQTc3MEIyQjE2Nzkw
MDIzMzRBMiAvKiBTdHlsZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzRTI0MUZGMEIy
QjRFNDAwMEM3MzJBMSAvKiBIVE1MRnJhbWVPd25lckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpA
QCAtMTIxNDgsNiArMTIxNTUsNyBAQAogCQkJCUUxRDhFMzFBMEIyOUUzQjYwMEY0QkFGNiAvKiBI
VFRQUGFyc2Vycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzE4QzVEMTBCMkE4ODZGMDAxODQ2
MUQgLyogVGV4dEJyZWFrSXRlcmF0b3JJQ1UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUE0QzNB
NzYwQjJCMTY3OTAwMjMzNEEyIC8qIFN0eWxlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk5M0UyNDI1RjBCMkI1MDk1MDBDNzMyQTEgLyogSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9icmlkZ2UvbWFjL0ZyYW1lTWFjLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9icmlkZ2UvbWFjL0ZyYW1lTWFjLmgJKHJldmlzaW9uIDE4MTU4KQor
KysgV2ViQ29yZS9icmlkZ2UvbWFjL0ZyYW1lTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTg0LDcg
Kzg0LDcgQEAgY2xhc3MgRnJhbWVNYWMgOiBwdWJsaWMgRnJhbWUgewogICAgIGZyaWVuZCBjbGFz
cyBGcmFtZTsKIAogcHVibGljOgotICAgIEZyYW1lTWFjKFBhZ2UqLCBFbGVtZW50KiwgRnJhbWVM
b2FkZXJDbGllbnQqKTsKKyAgICBGcmFtZU1hYyhQYWdlKiwgSFRNTEZyYW1lT3duZXJFbGVtZW50
KiwgRnJhbWVMb2FkZXJDbGllbnQqKTsKICAgICB+RnJhbWVNYWMoKTsKIAogICAgIHZvaWQgc2V0
QnJpZGdlKFdlYkNvcmVGcmFtZUJyaWRnZSopOwpJbmRleDogV2ViQ29yZS9icmlkZ2UvbWFjL0Zy
YW1lTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL21hYy9GcmFtZU1hYy5tbQko
cmV2aXNpb24gMTgxNTgpCisrKyBXZWJDb3JlL2JyaWRnZS9tYWMvRnJhbWVNYWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTEyOSw3ICsxMjksNyBAQCBzdGF0aWMgU0VMIHNlbGVjdG9yRm9yS2V5RXZl
bnQoS2V5Ym9hcmRFCiAgICAgcmV0dXJuIDA7CiB9CiAKLUZyYW1lTWFjOjpGcmFtZU1hYyhQYWdl
KiBwYWdlLCBFbGVtZW50KiBvd25lckVsZW1lbnQsIEZyYW1lTG9hZGVyQ2xpZW50KiBmcmFtZUxv
YWRlckNsaWVudCkKK0ZyYW1lTWFjOjpGcmFtZU1hYyhQYWdlKiBwYWdlLCBIVE1MRnJhbWVPd25l
ckVsZW1lbnQqIG93bmVyRWxlbWVudCwgRnJhbWVMb2FkZXJDbGllbnQqIGZyYW1lTG9hZGVyQ2xp
ZW50KQogICAgIDogRnJhbWUocGFnZSwgb3duZXJFbGVtZW50LCBmcmFtZUxvYWRlckNsaWVudCkK
ICAgICAsIF9icmlkZ2UobmlsKQogICAgICwgX2JpbmRpbmdSb290KDApCkluZGV4OiBXZWJDb3Jl
L2JyaWRnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
cmlkZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5oCShyZXZpc2lvbiAxODE1OCkKKysrIFdlYkNv
cmUvYnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzIs
MjYgKzMyLDEzIEBACiAjaW1wb3J0IDxXZWJDb3JlL1RleHRBZmZpbml0eS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9UZXh0R3JhbnVsYXJpdHkuaD4KIAotI2lmZGVmIF9fY3BsdXNwbHVzCi0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBFbGVtZW50OwogICAgIGNsYXNzIEZyYW1lTWFjOwor
ICAgIGNsYXNzIEhUTUxGcmFtZU93bmVyRWxlbWVudDsKICAgICBjbGFzcyBQYWdlOwogICAgIGNs
YXNzIFN0cmluZzsKIH0KIAotdHlwZWRlZiBXZWJDb3JlOjpFbGVtZW50IFdlYkNvcmVFbGVtZW50
OwotdHlwZWRlZiBXZWJDb3JlOjpGcmFtZU1hYyBXZWJDb3JlRnJhbWVNYWM7Ci0KLSNlbHNlCi0K
LUBjbGFzcyBOU01lbnU7Ci1AY2xhc3MgV2ViQ29yZUVsZW1lbnQ7Ci1AY2xhc3MgV2ViQ29yZUZy
YW1lTWFjOwotCi0jZW5kaWYKLQogQGNsYXNzIERPTUNTU1N0eWxlRGVjbGFyYXRpb247CiBAY2xh
c3MgRE9NRG9jdW1lbnQ7CiBAY2xhc3MgRE9NRG9jdW1lbnRGcmFnbWVudDsKQEAgLTExNCwxMyAr
MTAxLDEzIEBAIHR5cGVkZWYgZW51bSB7CiBAaW50ZXJmYWNlIFdlYkNvcmVGcmFtZUJyaWRnZSA6
IE5TT2JqZWN0CiB7CiBAcHVibGljCi0gICAgV2ViQ29yZUZyYW1lTWFjKiBtX2ZyYW1lOworICAg
IFdlYkNvcmU6OkZyYW1lTWFjKiBtX2ZyYW1lOwogCiAgICAgQk9PTCBfc2hvdWxkQ3JlYXRlUmVu
ZGVyZXJzOwogICAgIEJPT0wgX2Nsb3NlZDsKIH0KIAotLSAoV2ViQ29yZUZyYW1lTWFjKilfZnJh
bWU7IC8vIHVuZGVyc2NvcmUgdG8gcHJldmVudCBjb25mbGljdCB3aXRoIC1bTlNWaWV3IGZyYW1l
XQorLSAoV2ViQ29yZTo6RnJhbWVNYWMqKV9mcmFtZTsgLy8gdW5kZXJzY29yZSB0byBwcmV2ZW50
IGNvbmZsaWN0IHdpdGggLVtOU1ZpZXcgZnJhbWVdCiAKICsgKFdlYkNvcmVGcmFtZUJyaWRnZSAq
KWJyaWRnZUZvckRPTURvY3VtZW50OihET01Eb2N1bWVudCAqKWRvY3VtZW50OwogCkBAIC0yOTcs
NyArMjg0LDggQEAgdHlwZWRlZiBlbnVtIHsKIAogLSAodm9pZClzZXRTdGF0dXNUZXh0OihOU1N0
cmluZyAqKXN0YXR1czsKIAotLSAoV2ViQ29yZUZyYW1lQnJpZGdlICopY3JlYXRlQ2hpbGRGcmFt
ZU5hbWVkOihOU1N0cmluZyAqKWZyYW1lTmFtZSB3aXRoVVJMOihOU1VSTCAqKVVSTCByZWZlcnJl
cjooY29uc3QgV2ViQ29yZTo6U3RyaW5nJilyZWZlcnJlciBvd25lckVsZW1lbnQ6KFdlYkNvcmVF
bGVtZW50ICopb3duZXJFbGVtZW50IGFsbG93c1Njcm9sbGluZzooQk9PTClhbGxvd3NTY3JvbGxp
bmcgbWFyZ2luV2lkdGg6KGludCl3aWR0aCBtYXJnaW5IZWlnaHQ6KGludCloZWlnaHQ7CistIChX
ZWJDb3JlRnJhbWVCcmlkZ2UgKiljcmVhdGVDaGlsZEZyYW1lTmFtZWQ6KE5TU3RyaW5nICopZnJh
bWVOYW1lIHdpdGhVUkw6KE5TVVJMICopVVJMIHJlZmVycmVyOihjb25zdCBXZWJDb3JlOjpTdHJp
bmcmKXJlZmVycmVyCisgICAgb3duZXJFbGVtZW50OihXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVs
ZW1lbnQgKilvd25lckVsZW1lbnQgYWxsb3dzU2Nyb2xsaW5nOihCT09MKWFsbG93c1Njcm9sbGlu
ZyBtYXJnaW5XaWR0aDooaW50KXdpZHRoIG1hcmdpbkhlaWdodDooaW50KWhlaWdodDsKIAogLSAo
TlNXaW5kb3cgKil3aW5kb3c7CiAKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL3dpbi9GcmFtZVdpbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2Uvd2luL0ZyYW1lV2luLmNwcAkocmV2aXNp
b24gMTgxNTgpCisrKyBXZWJDb3JlL2JyaWRnZS93aW4vRnJhbWVXaW4uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00NCw3ICs0NCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRnJhbWVXaW46
OkZyYW1lV2luKFBhZ2UqIHBhZ2UsIEVsZW1lbnQqIG93bmVyRWxlbWVudCwgRnJhbWVXaW5DbGll
bnQqIGNsaWVudCkKK0ZyYW1lV2luOjpGcmFtZVdpbihQYWdlKiBwYWdlLCBIVE1MRnJhbWVPd25l
ckVsZW1lbnQqIG93bmVyRWxlbWVudCwgRnJhbWVXaW5DbGllbnQqIGNsaWVudCkKICAgICA6IEZy
YW1lKHBhZ2UsIG93bmVyRWxlbWVudCwgbmV3IEZyYW1lTG9hZGVyQ2xpZW50V2luKCkpCiAgICAg
LCBtX2NsaWVudChjbGllbnQpCiB7CkluZGV4OiBXZWJDb3JlL2JyaWRnZS93aW4vRnJhbWVXaW4u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JyaWRnZS93aW4vRnJhbWVXaW4uaAkocmV2aXNpb24g
MTgxNTgpCisrKyBXZWJDb3JlL2JyaWRnZS93aW4vRnJhbWVXaW4uaAkod29ya2luZyBjb3B5KQpA
QCAtNDcsNyArNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBGcmFtZVdp
biA6IHB1YmxpYyBGcmFtZSB7CiAgICAgcHVibGljOgotICAgICAgICBGcmFtZVdpbihQYWdlKiwg
RWxlbWVudCosIEZyYW1lV2luQ2xpZW50Kik7CisgICAgICAgIEZyYW1lV2luKFBhZ2UqLCBIVE1M
RnJhbWVPd25lckVsZW1lbnQqLCBGcmFtZVdpbkNsaWVudCopOwogICAgICAgICB2aXJ0dWFsIH5G
cmFtZVdpbigpOwogCiAgICAgICAgIHZpcnR1YWwgS0pTOjpCaW5kaW5nczo6SW5zdGFuY2UqIGdl
dEVtYmVkSW5zdGFuY2VGb3JXaWRnZXQoV2lkZ2V0Kik7CkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lv
biAxODE1OCkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTQsNiArNTQsNyBAQAogI2luY2x1ZGUgIkhUTUxCb2R5RWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50RmFjdG9yeS5oIgorI2luY2x1ZGUg
IkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUxvYWRlci5oIgog
I2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTGlua0VsZW1lbnQu
aCIKQEAgLTIzNTgsNyArMjM1OSw3IEBAIHZvaWQgRG9jdW1lbnQ6OmltYWdlTG9hZEV2ZW50VGlt
ZXJGaXJlZCgKICAgICBkaXNwYXRjaEltYWdlTG9hZEV2ZW50c05vdygpOwogfQogCi1FbGVtZW50
ICpEb2N1bWVudDo6b3duZXJFbGVtZW50KCkgY29uc3QKK0VsZW1lbnQqIERvY3VtZW50Ojpvd25l
ckVsZW1lbnQoKSBjb25zdAogewogICAgIGlmICghZnJhbWUoKSkKICAgICAgICAgcmV0dXJuIDA7
CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODE1OCkKKysrIFdl
YkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEyLDI2
ICsyMTIsNiBAQCB2b2lkIEhUTUxFbWJlZEVsZW1lbnQ6OnNldFR5cGUoY29uc3QgU3RyCiB9CiAK
ICNpZmRlZiBTVkdfU1VQUE9SVAotRG9jdW1lbnQqIEhUTUxFbWJlZEVsZW1lbnQ6OmNvbnRlbnRE
b2N1bWVudCgpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IFRoZSBmcmFtZSBsb2FkaW5nIGNvZGUg
c2hvdWxkIGJlIG1vdmVkIG91dCBvZiB0aGUgcmVuZGVyIHRyZWUKLSAgICAvLyBhbmQgaW50byB0
aGUgRE9NLiAgT25jZSB0aGF0IGhhcHBlbnMsIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGxvb2sgbW9y
ZSBsaWtlCi0gICAgLy8gSFRNTEZyYW1lRWxlbWVudDo6Y29udGVudERvY3VtZW50KCkgYW5kIG5v
dCBkZXBlbmQgb24gdGhlIHJlbmRlcmVyLgotICAgIFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVu
ZGVyZXIoKTsKLSAgICBpZiAob2JqZWN0ICYmIG9iamVjdC0+aXNXaWRnZXQoKSkgewotICAgICAg
ICBSZW5kZXJXaWRnZXQqIHJlbmRlcldpZGdldCA9IHN0YXRpY19jYXN0PFJlbmRlcldpZGdldCo+
KG9iamVjdCk7Ci0gICAgICAgIGlmIChyZW5kZXJXaWRnZXQpIHsKLSAgICAgICAgICAgIFdpZGdl
dCogd2lkZ2V0ID0gcmVuZGVyV2lkZ2V0LT53aWRnZXQoKTsKLSAgICAgICAgICAgIGlmICh3aWRn
ZXQgJiYgd2lkZ2V0LT5pc0ZyYW1lVmlldygpKSB7Ci0gICAgICAgICAgICAgICAgRnJhbWVWaWV3
KiBmcmFtZVZpZXcgPSBzdGF0aWNfY2FzdDxGcmFtZVZpZXcqPih3aWRnZXQpOwotICAgICAgICAg
ICAgICAgIGlmIChmcmFtZVZpZXctPmZyYW1lKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBmcmFtZVZpZXctPmZyYW1lKCktPmRvY3VtZW50KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIFNWR0RvY3VtZW50KiBIVE1MRW1iZWRFbGVt
ZW50OjpnZXRTVkdEb2N1bWVudChFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsKICAgICBEb2N1
bWVudCogZG9jID0gY29udGVudERvY3VtZW50KCk7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEVt
YmVkRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50
LmgJKHJldmlzaW9uIDE4MTU4KQorKysgV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMjksMTYgKzI5LDEzIEBACiAKICNpZiBVU0UoSkFWQVNDUklQVENP
UkVfQklORElOR1MpCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvcnVudGltZS5oPgotI2Vsc2UK
LW5hbWVzcGFjZSBLSlMgeyBuYW1lc3BhY2UgQmluZGluZ3MgeyBjbGFzcyBJbnN0YW5jZTsgfSB9
CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTVkdEb2N1bWVudDsKIAot
Y2xhc3MgSFRNTEVtYmVkRWxlbWVudCA6IHB1YmxpYyBIVE1MUGx1Z0luRWxlbWVudAoteworY2xh
c3MgSFRNTEVtYmVkRWxlbWVudCA6IHB1YmxpYyBIVE1MUGx1Z0luRWxlbWVudCB7CiBwdWJsaWM6
CiAgICAgSFRNTEVtYmVkRWxlbWVudChEb2N1bWVudCopOwogICAgIH5IVE1MRW1iZWRFbGVtZW50
KCk7CkBAIC02OCw3ICs2NSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFR5cGUoY29uc3QgU3Ry
aW5nJik7CiAgICAgCiAjaWZkZWYgU1ZHX1NVUFBPUlQKLSAgICBEb2N1bWVudCogY29udGVudERv
Y3VtZW50KCkgY29uc3Q7CiAgICAgU1ZHRG9jdW1lbnQqIGdldFNWR0RvY3VtZW50KEV4Y2VwdGlv
bkNvZGUmKSBjb25zdDsKICNlbmRpZgogCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAxODE1OCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAogICogQm9zdG9uLCBN
QSAwMjExMS0xMzA3LCBVU0EuCiAgKi8KKwogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkhUTUxGcmFtZUVsZW1lbnQuaCIKIApAQCAtMzAsNyArMzEsNiBAQAogI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgogI2luY2x1ZGUgIlJlbmRlckZyYW1lLmgiCiAKLQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtNTEsMTEgKzUxLDE5IEBAIFJlbmRl
ck9iamVjdCogSFRNTEZyYW1lRWxlbWVudDo6Y3JlYXRlUmUKICAgICByZXR1cm4gbmV3IChhcmVu
YSkgUmVuZGVyRnJhbWUodGhpcyk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgSFRNTEZyYW1lU2V0RWxl
bWVudCogY29udGFpbmluZ0ZyYW1lU2V0RWxlbWVudChOb2RlKiBub2RlKQoreworICAgIHdoaWxl
ICgobm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKSkpCisgICAgICAgIGlmIChub2RlLT5oYXNUYWdO
YW1lKGZyYW1lc2V0VGFnKSkKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MRnJh
bWVTZXRFbGVtZW50Kj4obm9kZSk7CisgICAgcmV0dXJuIDA7Cit9CisKIHZvaWQgSFRNTEZyYW1l
RWxlbWVudDo6YXR0YWNoKCkKIHsKICAgICBIVE1MRnJhbWVFbGVtZW50QmFzZTo6YXR0YWNoKCk7
CiAgICAgCi0gICAgaWYgKEhUTUxGcmFtZVNldEVsZW1lbnQqIGZyYW1lU2V0RWxlbWVudCA9IGNv
bnRhaW5pbmdGcmFtZVNldEVsZW1lbnQoKSkgeworICAgIGlmIChIVE1MRnJhbWVTZXRFbGVtZW50
KiBmcmFtZVNldEVsZW1lbnQgPSBjb250YWluaW5nRnJhbWVTZXRFbGVtZW50KHRoaXMpKSB7CiAg
ICAgICAgIGlmICghbV9mcmFtZUJvcmRlclNldCkKICAgICAgICAgICAgIG1fZnJhbWVCb3JkZXIg
PSBmcmFtZVNldEVsZW1lbnQtPmZyYW1lQm9yZGVyKCk7CiAgICAgICAgIGlmICghbV9ub1Jlc2l6
ZSkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcAkocmV2aXNpb24gMTgx
NTgpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00NCw3ICs0NCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBFdmVudE5hbWVzOwogdXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKIAogSFRNTEZyYW1lRWxlbWVudEJhc2U6OkhUTUxGcmFtZUVs
ZW1lbnRCYXNlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50ICpkb2MpCi0g
ICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2MpCisgICAgOiBIVE1MRnJhbWVPd25lckVsZW1l
bnQodGFnTmFtZSwgZG9jKQogICAgICwgbV9zY3JvbGxpbmcoU2Nyb2xsYmFyQXV0bykKICAgICAs
IG1fbWFyZ2luV2lkdGgoLTEpCiAgICAgLCBtX21hcmdpbkhlaWdodCgtMSkKQEAgLTIxOSwzNCAr
MjE5LDYgQEAgdm9pZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6c2V0Rm9jdXMoYm9vbAogICAgICAg
ICByZW5kZXJGcmFtZS0+d2lkZ2V0KCktPmNsZWFyRm9jdXMoKTsKIH0KIAotRnJhbWUqIEhUTUxG
cmFtZUVsZW1lbnRCYXNlOjpjb250ZW50RnJhbWUoKSBjb25zdAotewotICAgIC8vIFN0YXJ0IHdp
dGggdGhlIHBhcnQgdGhhdCBjb250YWlucyB0aGlzIGVsZW1lbnQsIG91ciBvd25lckRvY3VtZW50
LgotICAgIEZyYW1lKiBwYXJlbnRGcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCk7Ci0gICAgaWYg
KCFwYXJlbnRGcmFtZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAvLyBGaW5kIHRoZSBwYXJ0
IGZvciB0aGUgc3ViZnJhbWUgdGhhdCB0aGlzIGVsZW1lbnQgcmVwcmVzZW50cy4KLSAgICByZXR1
cm4gcGFyZW50RnJhbWUtPnRyZWUoKS0+Y2hpbGQobV9uYW1lKTsKLX0KLQotRG9jdW1lbnQqIEhU
TUxGcmFtZUVsZW1lbnRCYXNlOjpjb250ZW50RG9jdW1lbnQoKSBjb25zdAotewotICAgIEZyYW1l
KiBmcmFtZSA9IGNvbnRlbnRGcmFtZSgpOwotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVy
biAwOwotICAgIHJldHVybiBmcmFtZS0+ZG9jdW1lbnQoKTsKLX0KLQotSFRNTEZyYW1lU2V0RWxl
bWVudCogSFRNTEZyYW1lRWxlbWVudEJhc2U6OmNvbnRhaW5pbmdGcmFtZVNldEVsZW1lbnQoKSBj
b25zdAotewotICAgIGZvciAoTm9kZSogbm9kZSA9IHBhcmVudE5vZGUoKTsgbm9kZTsgbm9kZSA9
IG5vZGUtPnBhcmVudE5vZGUoKSkKLSAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoZnJhbWVz
ZXRUYWcpKQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxGcmFtZVNldEVsZW1l
bnQqPihub2RlKTsKLQotICAgIHJldHVybiAwOwotfQotCiBib29sIEhUTUxGcmFtZUVsZW1lbnRC
YXNlOjppc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUgKmF0dHIpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IGF0dHItPm5hbWUoKSA9PSBzcmNBdHRyOwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVs
ZW1lbnRCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRC
YXNlLmgJKHJldmlzaW9uIDE4MTU4KQorKysgV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRC
YXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDI1ICsyNiwxNiBAQAogI2lmbmRlZiBIVE1MRnJh
bWVFbGVtZW50QmFzZV9oCiAjZGVmaW5lIEhUTUxGcmFtZUVsZW1lbnRCYXNlX2gKIAotI2luY2x1
ZGUgIkhUTUxFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCiAj
aW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBG
cmFtZTsKLWNsYXNzIEhUTUxGcmFtZVNldEVsZW1lbnQ7Ci0KLWNsYXNzIEhUTUxGcmFtZUVsZW1l
bnRCYXNlIDogcHVibGljIEhUTUxFbGVtZW50Ci17Ci0gICAgZnJpZW5kIGNsYXNzIFJlbmRlckZy
YW1lOwotICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJQYXJ0T2JqZWN0OwotCitjbGFzcyBIVE1MRnJh
bWVFbGVtZW50QmFzZSA6IHB1YmxpYyBIVE1MRnJhbWVPd25lckVsZW1lbnQgewogcHVibGljOgot
ICAgIEhUTUxGcmFtZUVsZW1lbnRCYXNlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCop
OwotCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0
ZSopOwogCi0gICAgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOworICAgIHZpcnR1YWwgdm9p
ZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVtb3ZlKCk7
CiAKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CkBAIC01MywxNCArNDQsMTEgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCBib29sIGlzRm9jdXNhYmxlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2
b2lkIHNldEZvY3VzKGJvb2wpOwotCi0gICAgRnJhbWUqIGNvbnRlbnRGcmFtZSgpIGNvbnN0Owot
ICAgIERvY3VtZW50KiBjb250ZW50RG9jdW1lbnQoKSBjb25zdDsKLSAgICBIVE1MRnJhbWVTZXRF
bGVtZW50KiBjb250YWluaW5nRnJhbWVTZXRFbGVtZW50KCkgY29uc3Q7CiAgICAgCiAgICAgdmly
dHVhbCBib29sIGlzVVJMQXR0cmlidXRlKEF0dHJpYnV0ZSopIGNvbnN0OwogCiAgICAgU2Nyb2xs
YmFyTW9kZSBzY3JvbGxpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxpbmc7IH0KKyAg
ICBib29sIGhhc0ZyYW1lQm9yZGVyKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUJvcmRlcjsgfQog
ICAgIGludCBnZXRNYXJnaW5XaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFyZ2luV2lkdGg7IH0K
ICAgICBpbnQgZ2V0TWFyZ2luSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9tYXJnaW5IZWlnaHQ7
IH0KIApAQCAtNzksMTMgKzY3LDEzIEBAIHB1YmxpYzoKICAgICBTdHJpbmcgbmFtZSgpIGNvbnN0
OwogICAgIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcmKTsKIAorICAgIGJvb2wgbm9SZXNpemUo
KSBjb25zdCB7IHJldHVybiBtX25vUmVzaXplOyB9CiAgICAgdm9pZCBzZXROb1Jlc2l6ZShib29s
KTsKLSAgICBib29sIG5vUmVzaXplKCkgeyByZXR1cm4gbV9ub1Jlc2l6ZTsgfQogCiAgICAgU3Ry
aW5nIHNjcm9sbGluZygpIGNvbnN0OwogICAgIHZvaWQgc2V0U2Nyb2xsaW5nKGNvbnN0IFN0cmlu
ZyYpOwogCi0gICAgdmlydHVhbCBTdHJpbmcgc3JjKCkgY29uc3Q7CisgICAgU3RyaW5nIHNyYygp
IGNvbnN0OwogICAgIHZvaWQgc2V0U3JjKGNvbnN0IFN0cmluZyYpOwogCiAgICAgaW50IHdpZHRo
KCkgY29uc3Q7CkBAIC05NCw2ICs4Miw4IEBAIHB1YmxpYzoKICAgICBib29sIHZpZXdTb3VyY2VN
b2RlKCkgY29uc3QgeyByZXR1cm4gbV92aWV3U291cmNlOyB9CiAKIHByb3RlY3RlZDoKKyAgICBI
VE1MRnJhbWVFbGVtZW50QmFzZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKwog
ICAgIGJvb2wgaXNVUkxBbGxvd2VkKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0OwogICAgIHZv
aWQgb3BlblVSTCgpOwogCkBAIC0xMDcsMTAgKzk3LDEwIEBAIHByb3RlY3RlZDoKICAgICBpbnQg
bV9tYXJnaW5XaWR0aDsKICAgICBpbnQgbV9tYXJnaW5IZWlnaHQ7CiAKLSAgICBib29sIG1fZnJh
bWVCb3JkZXIgOiAxOwotICAgIGJvb2wgbV9mcmFtZUJvcmRlclNldCA6IDE7Ci0gICAgYm9vbCBt
X25vUmVzaXplIDogMTsKLSAgICBib29sIG1fdmlld1NvdXJjZSA6IDE7CisgICAgYm9vbCBtX2Zy
YW1lQm9yZGVyOworICAgIGJvb2wgbV9mcmFtZUJvcmRlclNldDsKKyAgICBib29sIG1fbm9SZXNp
emU7CisgICAgYm9vbCBtX3ZpZXdTb3VyY2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcAkocmV2aXNpb24gMCkK
KysrIFdlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVy
LCBJbmMuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxl
IFBsYWNlIC0gU3VpdGUgMzMwLAorICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisgKgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1l
bnQuaCIKKworI2luY2x1ZGUgIkZyYW1lLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSFRN
TEZyYW1lT3duZXJFbGVtZW50OjpIVE1MRnJhbWVPd25lckVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogSFRNTEVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpCisgICAgLCBtX2NvbnRlbnRGcmFtZSgwKQoreworfQorCitIVE1MRnJh
bWVPd25lckVsZW1lbnQ6On5IVE1MRnJhbWVPd25lckVsZW1lbnQoKQoreworICAgIGlmIChtX2Nv
bnRlbnRGcmFtZSkKKyAgICAgICAgbV9jb250ZW50RnJhbWUtPmRpc2Nvbm5lY3RPd25lckVsZW1l
bnQoKTsKK30KKworRG9jdW1lbnQqIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6Y29udGVudERvY3Vt
ZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250ZW50RnJhbWUgPyBtX2NvbnRlbnRGcmFt
ZS0+ZG9jdW1lbnQoKSA6IDA7Cit9CisKK30KClByb3BlcnR5IGNoYW5nZXMgb246IFdlYkNvcmUv
aHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmVvbC1z
dHlsZQogICArIG5hdGl2ZQoKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmgJ
KHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBw
bGUgQ29tcHV0ZXIsIEluYy4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCisgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcs
IFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBIVE1MRnJhbWVPd25lckVsZW1lbnRfaAorI2RlZmlu
ZSBIVE1MRnJhbWVPd25lckVsZW1lbnRfaAorCisjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGcmFtZTsKKworY2xhc3MgSFRNTEZyYW1lT3du
ZXJFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50IHsKK3Byb3RlY3RlZDoKKyAgICBIVE1MRnJh
bWVPd25lckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqKTsK
KworcHVibGljOgorICAgIHZpcnR1YWwgfkhUTUxGcmFtZU93bmVyRWxlbWVudCgpOworCisgICAg
RnJhbWUqIGNvbnRlbnRGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudEZyYW1lOyB9Cisg
ICAgRG9jdW1lbnQqIGNvbnRlbnREb2N1bWVudCgpIGNvbnN0OworCitwcml2YXRlOgorICAgIGZy
aWVuZCBjbGFzcyBGcmFtZTsKKyAgICBGcmFtZSogbV9jb250ZW50RnJhbWU7Cit9OworCit9CisK
KyNlbmRpZgoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVy
RWxlbWVudC5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIG5hdGl2ZQoKSW5k
ZXg6IFdlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAkocmV2aXNpb24gMTgxNTgpCisrKyBXZWJD
b3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksMjYg
KzE1OSw2IEBAIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmkKICAgICAg
ICAgSFRNTFBsdWdJbkVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQogCi1E
b2N1bWVudCogSFRNTE9iamVjdEVsZW1lbnQ6OmNvbnRlbnREb2N1bWVudCgpIGNvbnN0Ci17Ci0g
ICAgLy8gRklYTUU6IFRoZSBmcmFtZSBsb2FkaW5nIGNvZGUgc2hvdWxkIGJlIG1vdmVkIG91dCBv
ZiB0aGUgcmVuZGVyIHRyZWUKLSAgICAvLyBhbmQgaW50byB0aGUgRE9NLiAgT25jZSB0aGF0IGhh
cHBlbnMsIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGxvb2sgbW9yZSBsaWtlCi0gICAgLy8gSFRNTEZy
YW1lRWxlbWVudDo6Y29udGVudERvY3VtZW50KCkgYW5kIG5vdCBkZXBlbmQgb24gdGhlIHJlbmRl
cmVyLgotICAgIFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKTsKLSAgICBpZiAob2Jq
ZWN0ICYmIG9iamVjdC0+aXNXaWRnZXQoKSkgewotICAgICAgICBSZW5kZXJXaWRnZXQqIHJlbmRl
cldpZGdldCA9IHN0YXRpY19jYXN0PFJlbmRlcldpZGdldCo+KG9iamVjdCk7Ci0gICAgICAgIGlm
IChyZW5kZXJXaWRnZXQpIHsKLSAgICAgICAgICAgIFdpZGdldCogd2lkZ2V0ID0gcmVuZGVyV2lk
Z2V0LT53aWRnZXQoKTsKLSAgICAgICAgICAgIGlmICh3aWRnZXQgJiYgd2lkZ2V0LT5pc0ZyYW1l
VmlldygpKSB7Ci0gICAgICAgICAgICAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBzdGF0aWNf
Y2FzdDxGcmFtZVZpZXcqPih3aWRnZXQpOwotICAgICAgICAgICAgICAgIGlmIChmcmFtZVZpZXct
PmZyYW1lKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmcmFtZVZpZXctPmZyYW1lKCkt
PmRvY3VtZW50KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJu
IDA7Ci19Ci0KIGJvb2wgSFRNTE9iamVjdEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVy
U3R5bGUqIHN0eWxlKQogewogICAgIGlmIChtX3VzZUZhbGxiYWNrQ29udGVudCB8fCBpc0ltYWdl
VHlwZSgpKQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgJKHJldmlzaW9uIDE4MTU4KQor
KysgV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTg2
LDggKzg2LDYgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGNvZGVUeXBlKCkgY29uc3Q7CiAgICAg
dm9pZCBzZXRDb2RlVHlwZShjb25zdCBTdHJpbmcmKTsKLQotICAgIERvY3VtZW50KiBjb250ZW50
RG9jdW1lbnQoKSBjb25zdDsKICAgICAKICAgICBTdHJpbmcgZGF0YSgpIGNvbnN0OwogICAgIHZv
aWQgc2V0RGF0YShjb25zdCBTdHJpbmcmKTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MUGx1Z0lu
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50
LmNwcAkocmV2aXNpb24gMTgxNTgpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIEhUTUxQbHVnSW5FbGVtZW50OjpIVE1MUGx1
Z0luRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQot
ICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jKQorICAgIDogSFRNTEZyYW1lT3duZXJFbGVt
ZW50KHRhZ05hbWUsIGRvYykKICNpZiBVU0UoTlBPQkpFQ1QpCiAgICAgLCBtX05QT2JqZWN0KDAp
CiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oCShyZXZpc2lvbiAxODE1OCkK
KysrIFdlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NSwyMCArMjUsMjIgQEAKICNpZm5kZWYgSFRNTFBsdWdJbkVsZW1lbnRfSAogI2RlZmluZSBIVE1M
UGx1Z0luRWxlbWVudF9ICiAKLSNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgorI2luY2x1ZGUgIkhU
TUxGcmFtZU93bmVyRWxlbWVudC5oIgorCiAjaWYgVVNFKEpBVkFTQ1JJUFRDT1JFX0JJTkRJTkdT
KQogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL3J1bnRpbWUuaD4KICNlbmRpZgorCiAjaWYgVVNF
KE5QT0JKRUNUKQogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL25wcnVudGltZS5oPgogI2VuZGlm
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSFRNTFBsdWdJbkVsZW1lbnQgOiBwdWJs
aWMgSFRNTEVsZW1lbnQgeworY2xhc3MgSFRNTFBsdWdJbkVsZW1lbnQgOiBwdWJsaWMgSFRNTEZy
YW1lT3duZXJFbGVtZW50IHsKIHB1YmxpYzoKICAgICBIVE1MUGx1Z0luRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCopOwotICAgIH5IVE1MUGx1Z0luRWxlbWVu
dCgpOworICAgIHZpcnR1YWwgfkhUTUxQbHVnSW5FbGVtZW50KCk7CiAKICAgICB2aXJ0dWFsIGJv
b2wgbWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgTWFwcGVkQXR0cmli
dXRlRW50cnkmIHJlc3VsdCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0
cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwpAQCAtNjgsNiArNzAsNyBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogICAgIHZvaWQgc2V0RnJhbWVOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgZnJhbWVOYW1l
KSB7IG1fZnJhbWVOYW1lID0gZnJhbWVOYW1lOyB9CisKIHByaXZhdGU6CiAjaWYgVVNFKE5QT0JK
RUNUKQogICAgIE5QT2JqZWN0KiBjcmVhdGVOUE9iamVjdCgpOwpAQCAtODEsNiArODQsNyBAQCBw
cm90ZWN0ZWQ6CiAjaWYgVVNFKE5QT0JKRUNUKQogICAgIE5QT2JqZWN0KiBtX05QT2JqZWN0Owog
I2VuZGlmCisKIHByaXZhdGU6CiAgICAgQXRvbWljU3RyaW5nIG1fZnJhbWVOYW1lOwogfTsKSW5k
ZXg6IFdlYkNvcmUvbG9hZGVyL0Zvcm1TdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9s
b2FkZXIvRm9ybVN0YXRlLmNwcAkocmV2aXNpb24gMTgxNTgpCisrKyBXZWJDb3JlL2xvYWRlci9G
b3JtU3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxNyArMjksMTcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJGb3JtU3RhdGUuaCIKIAotI2luY2x1ZGUgIkVsZW1lbnQu
aCIKICNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBGb3JtU3RhdGU6OmNy
ZWF0ZShQYXNzUmVmUHRyPEVsZW1lbnQ+IGZvcm0sIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmc+JiB2YWx1ZXMsIFBhc3NSZWZQdHI8RnJhbWU+IHNvdXJjZUZyYW1lKQorUGFzc1JlZlB0cjxG
b3JtU3RhdGU+IEZvcm1TdGF0ZTo6Y3JlYXRlKFBhc3NSZWZQdHI8SFRNTEZvcm1FbGVtZW50PiBm
b3JtLCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgdmFsdWVzLCBQYXNzUmVmUHRyPEZy
YW1lPiBzb3VyY2VGcmFtZSkKIHsKICAgICByZXR1cm4gbmV3IEZvcm1TdGF0ZShmb3JtLCB2YWx1
ZXMsIHNvdXJjZUZyYW1lKTsKIH0KIAotRm9ybVN0YXRlOjpGb3JtU3RhdGUoUGFzc1JlZlB0cjxF
bGVtZW50PiBmb3JtLCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgdmFsdWVzLCBQYXNz
UmVmUHRyPEZyYW1lPiBzb3VyY2VGcmFtZSkKK0Zvcm1TdGF0ZTo6Rm9ybVN0YXRlKFBhc3NSZWZQ
dHI8SFRNTEZvcm1FbGVtZW50PiBmb3JtLCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYg
dmFsdWVzLCBQYXNzUmVmUHRyPEZyYW1lPiBzb3VyY2VGcmFtZSkKICAgICA6IG1fZm9ybShmb3Jt
KQogICAgICwgbV92YWx1ZXModmFsdWVzKQogICAgICwgbV9zb3VyY2VGcmFtZShzb3VyY2VGcmFt
ZSkKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0Zvcm1TdGF0ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvbG9hZGVyL0Zvcm1TdGF0ZS5oCShyZXZpc2lvbiAxODE1OCkKKysrIFdlYkNvcmUvbG9hZGVy
L0Zvcm1TdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwyMSArMzUsMjEgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgRWxlbWVudDsKICAgICBjbGFzcyBGcmFtZTsKKyAg
ICBjbGFzcyBIVE1MRm9ybUVsZW1lbnQ7CiAKICAgICBjbGFzcyBGb3JtU3RhdGUgOiBwdWJsaWMg
U2hhcmVkPEZvcm1TdGF0ZT4gewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8Rm9ybVN0YXRlPiBjcmVhdGUoUGFzc1JlZlB0cjxFbGVtZW50PiBmb3JtLCBjb25zdCBIYXNo
TWFwPFN0cmluZywgU3RyaW5nPiYgdmFsdWVzLCBQYXNzUmVmUHRyPEZyYW1lPiBzb3VyY2VGcmFt
ZSk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gY3JlYXRlKFBhc3NSZWZQ
dHI8SFRNTEZvcm1FbGVtZW50PiBmb3JtLCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYg
dmFsdWVzLCBQYXNzUmVmUHRyPEZyYW1lPiBzb3VyY2VGcmFtZSk7CiAKLSAgICAgICAgRWxlbWVu
dCogZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybS5nZXQoKTsgfQorICAgICAgICBIVE1MRm9y
bUVsZW1lbnQqIGZvcm0oKSBjb25zdCB7IHJldHVybiBtX2Zvcm0uZ2V0KCk7IH0KICAgICAgICAg
Y29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIHZhbHVlcygpIGNvbnN0IHsgcmV0dXJuIG1f
dmFsdWVzOyB9CiAgICAgICAgIEZyYW1lKiBzb3VyY2VGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c291cmNlRnJhbWUuZ2V0KCk7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEZvcm1TdGF0ZShQ
YXNzUmVmUHRyPEVsZW1lbnQ+IGZvcm0sIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiB2
YWx1ZXMsIFBhc3NSZWZQdHI8RnJhbWU+IHNvdXJjZUZyYW1lKTsKKyAgICAgICAgRm9ybVN0YXRl
KFBhc3NSZWZQdHI8SFRNTEZvcm1FbGVtZW50PiBmb3JtLCBjb25zdCBIYXNoTWFwPFN0cmluZywg
U3RyaW5nPiYgdmFsdWVzLCBQYXNzUmVmUHRyPEZyYW1lPiBzb3VyY2VGcmFtZSk7CiAKLSAgICAg
ICAgUmVmUHRyPEVsZW1lbnQ+IG1fZm9ybTsKKyAgICAgICAgUmVmUHRyPEhUTUxGb3JtRWxlbWVu
dD4gbV9mb3JtOwogICAgICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtX3ZhbHVlczsKICAg
ICAgICAgUmVmUHRyPEZyYW1lPiBtX3NvdXJjZUZyYW1lOwogICAgIH07CkluZGV4OiBXZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCShyZXZpc2lvbiAxODE1OCkKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNiBAQAogI2luY2x1ZGUgIkhUTUxG
b3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxPYmpl
Y3RFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTFBsdWdJbkVsZW1lbnQuaCIKICNpbmNsdWRlICJI
VFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIkljb25EYXRhYmFzZS5oIgogI2luY2x1ZGUgIkljb25M
b2FkZXIuaCIKQEAgLTM2Myw3ICszNjIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjp1cmxTZWxlY3Rl
ZChjb25zdCBSZXNvCiAgICAgdXJsU2VsZWN0ZWQoZnJhbWVSZXF1ZXN0LCB0cmlnZ2VyaW5nRXZl
bnQpOwogfQogCi1ib29sIEZyYW1lTG9hZGVyOjpyZXF1ZXN0RnJhbWUoRWxlbWVudCogb3duZXJF
bGVtZW50LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgQXRvbWljU3RyaW5nJiBmcmFt
ZU5hbWUpCitib29sIEZyYW1lTG9hZGVyOjpyZXF1ZXN0RnJhbWUoSFRNTEZyYW1lT3duZXJFbGVt
ZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBBdG9taWNT
dHJpbmcmIGZyYW1lTmFtZSkKIHsKICAgICAvLyBTdXBwb3J0IGZvciA8ZnJhbWUgc3JjPSJqYXZh
c2NyaXB0OnN0cmluZyI+CiAgICAgS1VSTCBzY3JpcHRVUkw7CkBAIC0zOTEsNyArMzkwLDcgQEAg
Ym9vbCBGcmFtZUxvYWRlcjo6cmVxdWVzdEZyYW1lKEVsZW1lbnQqIAogICAgIHJldHVybiB0cnVl
OwogfQogCi1GcmFtZSogRnJhbWVMb2FkZXI6OmxvYWRTdWJmcmFtZShFbGVtZW50KiBvd25lckVs
ZW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IHJlZmVycmVyKQorRnJhbWUqIEZyYW1lTG9hZGVyOjpsb2FkU3ViZnJhbWUoSFRNTEZyYW1lT3du
ZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQogewogICAgIEZyYW1lKiBmcmFtZSA9IGNyZWF0
ZUZyYW1lKHVybCwgbmFtZSwgb3duZXJFbGVtZW50LCByZWZlcnJlcik7CiAgICAgaWYgKCFmcmFt
ZSkgIHsKQEAgLTEyNzAsMjMgKzEyNjksMjMgQEAgYm9vbCBGcmFtZUxvYWRlcjo6cmVxdWVzdE9i
amVjdChSZW5kZXJQYQogICAgICAgICBjb21wbGV0ZWRVUkwgPSBjb21wbGV0ZVVSTCh1cmwpOwog
CiAgICAgYm9vbCB1c2VGYWxsYmFjazsKLSAgICBpZiAoc2hvdWxkVXNlUGx1Z2luKHJlbmRlcmVy
LT5lbGVtZW50KCksIGNvbXBsZXRlZFVSTCwgbWltZVR5cGUsIHJlbmRlcmVyLT5oYXNGYWxsYmFj
a0NvbnRlbnQoKSwgdXNlRmFsbGJhY2spKSB7Ci0gICAgICAgIAorICAgIGlmIChzaG91bGRVc2VQ
bHVnaW4oY29tcGxldGVkVVJMLCBtaW1lVHlwZSwgcmVuZGVyZXItPmhhc0ZhbGxiYWNrQ29udGVu
dCgpLCB1c2VGYWxsYmFjaykpIHsKICAgICAgICAgaWYgKCFtX2ZyYW1lLT5wbHVnaW5zRW5hYmxl
ZCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAKICAgICAgICAgcmV0dXJu
IGxvYWRQbHVnaW4ocmVuZGVyZXIsIGNvbXBsZXRlZFVSTCwgbWltZVR5cGUsIHBhcmFtTmFtZXMs
IHBhcmFtVmFsdWVzLCB1c2VGYWxsYmFjayk7CiAgICAgfQogCiAgICAgQVNTRVJUKHJlbmRlcmVy
LT5ub2RlKCktPmhhc1RhZ05hbWUob2JqZWN0VGFnKSB8fCByZW5kZXJlci0+bm9kZSgpLT5oYXNU
YWdOYW1lKGVtYmVkVGFnKSk7CisgICAgSFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0
aWNfY2FzdDxIVE1MUGx1Z0luRWxlbWVudCo+KHJlbmRlcmVyLT5ub2RlKCkpOworCiAgICAgQXRv
bWljU3RyaW5nIHVuaXF1ZUZyYW1lTmFtZSA9IG1fZnJhbWUtPnRyZWUoKS0+dW5pcXVlQ2hpbGRO
YW1lKGZyYW1lTmFtZSk7Ci0gICAgc3RhdGljX2Nhc3Q8SFRNTFBsdWdJbkVsZW1lbnQqPihyZW5k
ZXJlci0+bm9kZSgpKS0+c2V0RnJhbWVOYW1lKHVuaXF1ZUZyYW1lTmFtZSk7CisgICAgZWxlbWVu
dC0+c2V0RnJhbWVOYW1lKHVuaXF1ZUZyYW1lTmFtZSk7CiAgICAgCi0gICAgLy8gRklYTUU6IE9L
IHRvIGFsd2F5cyBtYWtlIGEgbmV3IG9uZT8gV2hlbiBkb2VzIHRoZSBvbGQgZnJhbWUgZ2V0IHJl
bW92ZWQ/Ci0gICAgcmV0dXJuIGxvYWRTdWJmcmFtZShzdGF0aWNfY2FzdDxFbGVtZW50Kj4ocmVu
ZGVyZXItPm5vZGUoKSksIGNvbXBsZXRlZFVSTCwgdW5pcXVlRnJhbWVOYW1lLCBtX291dGdvaW5n
UmVmZXJyZXIpOworICAgIC8vIEZJWE1FOiBPSyB0byBhbHdheXMgbWFrZSBhIG5ldyBmcmFtZT8g
V2hlbiBkb2VzIHRoZSBvbGQgZnJhbWUgZ2V0IHJlbW92ZWQ/CisgICAgcmV0dXJuIGxvYWRTdWJm
cmFtZShlbGVtZW50LCBjb21wbGV0ZWRVUkwsIHVuaXF1ZUZyYW1lTmFtZSwgbV9vdXRnb2luZ1Jl
ZmVycmVyKTsKIH0KIAotYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkVXNlUGx1Z2luKE5vZGUqIGVs
ZW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBoYXNG
YWxsYmFjaywgYm9vbCYgdXNlRmFsbGJhY2spCitib29sIEZyYW1lTG9hZGVyOjpzaG91bGRVc2VQ
bHVnaW4oY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGhhc0Zh
bGxiYWNrLCBib29sJiB1c2VGYWxsYmFjaykKIHsKICAgICBPYmplY3RDb250ZW50VHlwZSBvYmpl
Y3RUeXBlID0gb2JqZWN0Q29udGVudFR5cGUodXJsLCBtaW1lVHlwZSk7CiAgICAgLy8gSWYgYW4g
b2JqZWN0J3MgY29udGVudCBjYW4ndCBiZSBoYW5kbGVkIGFuZCBpdCBoYXMgbm8gZmFsbGJhY2ss
IGxldApAQCAtMTM3MCw3ICsxMzY5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0T3BlbmVkQnlK
YXZhU2NyaXB0KAogCiB2b2lkIEZyYW1lTG9hZGVyOjpoYW5kbGVGYWxsYmFja0NvbnRlbnQoKQog
ewotICAgIEVsZW1lbnQqIG93bmVyID0gbV9mcmFtZS0+b3duZXJFbGVtZW50KCk7CisgICAgSFRN
TEZyYW1lT3duZXJFbGVtZW50KiBvd25lciA9IG1fZnJhbWUtPm93bmVyRWxlbWVudCgpOwogICAg
IGlmICghb3duZXIgfHwgIW93bmVyLT5oYXNUYWdOYW1lKG9iamVjdFRhZykpCiAgICAgICAgIHJl
dHVybjsKICAgICBzdGF0aWNfY2FzdDxIVE1MT2JqZWN0RWxlbWVudCo+KG93bmVyKS0+cmVuZGVy
RmFsbGJhY2tDb250ZW50KCk7CkBAIC0xNTM4LDcgKzE1MzcsNyBAQCB2b2lkIEZyYW1lTG9hZGVy
OjpzdG9wUmVkaXJlY3Rpb25UaW1lcigpCiAKIHZvaWQgRnJhbWVMb2FkZXI6OnVwZGF0ZUJhc2VV
UkxGb3JFbXB0eURvY3VtZW50KCkKIHsKLSAgICBFbGVtZW50KiBvd25lciA9IG1fZnJhbWUtPm93
bmVyRWxlbWVudCgpOworICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXIgPSBtX2ZyYW1l
LT5vd25lckVsZW1lbnQoKTsKICAgICAvLyBGSVhNRTogU2hvdWxkIGVtYmVkIGJlIGluY2x1ZGVk
PwogICAgIGlmIChvd25lciAmJiAob3duZXItPmhhc1RhZ05hbWUoaWZyYW1lVGFnKSB8fCBvd25l
ci0+aGFzVGFnTmFtZShvYmplY3RUYWcpIHx8IG93bmVyLT5oYXNUYWdOYW1lKGVtYmVkVGFnKSkp
CiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnNldEJhc2VVUkwobV9mcmFtZS0+dHJlZSgp
LT5wYXJlbnQoKS0+ZG9jdW1lbnQoKS0+YmFzZVVSTCgpKTsKQEAgLTE5NzIsNyArMTk3MSw3IEBA
IGJvb2wgRnJhbWVMb2FkZXI6OmlzQXJjaGl2ZUxvYWRQZW5kaW5nKFIKIAogYm9vbCBGcmFtZUxv
YWRlcjo6aXNIb3N0ZWRCeU9iamVjdEVsZW1lbnQoKSBjb25zdAogewotICAgIEVsZW1lbnQqIG93
bmVyID0gbV9mcmFtZS0+b3duZXJFbGVtZW50KCk7CisgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50
KiBvd25lciA9IG1fZnJhbWUtPm93bmVyRWxlbWVudCgpOwogICAgIHJldHVybiBvd25lciAmJiBv
d25lci0+aGFzVGFnTmFtZShvYmplY3RUYWcpOwogfQogCkluZGV4OiBXZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJ
KHJldmlzaW9uIDE4MTU4KQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODUsNiArODUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3Mg
RnJhbWU7CiAgICAgY2xhc3MgRnJhbWVMb2FkZXJDbGllbnQ7CiAgICAgY2xhc3MgSFRNTEZvcm1F
bGVtZW50OworICAgIGNsYXNzIEhUTUxGcmFtZU93bmVyRWxlbWVudDsKICAgICBjbGFzcyBJY29u
TG9hZGVyOwogICAgIGNsYXNzIEludFNpemU7CiAgICAgY2xhc3MgTWFpblJlc291cmNlTG9hZGVy
OwpAQCAtMTcyLDEyICsxNzMsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lk
IGZpbmFsU2V0dXBGb3JSZXBsYWNlKERvY3VtZW50TG9hZGVyKik7CiAgICAgICAgIHZvaWQgbG9h
ZChjb25zdCBLVVJMJiwgRXZlbnQqKTsKICAgICAgICAgdm9pZCBsb2FkKGNvbnN0IEZyYW1lTG9h
ZFJlcXVlc3QmLCBib29sIHVzZXJHZXN0dXJlLAotICAgICAgICAgICAgRXZlbnQqLCBFbGVtZW50
KiBmb3JtLCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgZm9ybVZhbHVlcyk7CisgICAg
ICAgICAgICBFdmVudCosIEhUTUxGb3JtRWxlbWVudCosIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBT
dHJpbmc+JiBmb3JtVmFsdWVzKTsKICAgICAgICAgdm9pZCBsb2FkKGNvbnN0IEtVUkwmLCBjb25z
dCBTdHJpbmcmIHJlZmVycmVyLCBGcmFtZUxvYWRUeXBlLCBjb25zdCBTdHJpbmcmIHRhcmdldCwK
LSAgICAgICAgICAgIEV2ZW50KiwgRWxlbWVudCogZm9ybSwgY29uc3QgSGFzaE1hcDxTdHJpbmcs
IFN0cmluZz4mIGZvcm1WYWx1ZXMpOworICAgICAgICAgICAgRXZlbnQqLCBIVE1MRm9ybUVsZW1l
bnQqLCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgZm9ybVZhbHVlcyk7CiAgICAgICAg
IHZvaWQgcG9zdChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgY29uc3QgU3Ry
aW5nJiB0YXJnZXQsCiAgICAgICAgICAgICBQYXNzUmVmUHRyPEZvcm1EYXRhPiwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSwKLSAgICAgICAgICAgIEV2ZW50KiwgRWxlbWVudCogZm9ybSwgY29u
c3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGZvcm1WYWx1ZXMpOworICAgICAgICAgICAgRXZl
bnQqLCBIVE1MRm9ybUVsZW1lbnQqLCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgZm9y
bVZhbHVlcyk7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICB2b2lkIGxvYWQoTlNVUkxSZXF1
ZXN0ICopOwogICAgICAgICB2b2lkIGxvYWQoTlNVUkxSZXF1ZXN0ICosIGNvbnN0IFN0cmluZyYg
ZnJhbWVOYW1lKTsKQEAgLTM0MSw5ICszNDIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZvaWQgdXJsU2VsZWN0ZWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5n
JiB0YXJnZXQsIEV2ZW50KiwgYm9vbCBsb2NrSGlzdG9yeSA9IGZhbHNlKTsKICAgICAgICAgdm9p
ZCB1cmxTZWxlY3RlZChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgRXZlbnQqKTsKICAgICAgIAot
ICAgICAgICBib29sIHJlcXVlc3RGcmFtZShFbGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IFN0
cmluZyYgVVJMLCBjb25zdCBBdG9taWNTdHJpbmcmIGZyYW1lTmFtZSk7Ci0gICAgICAgIEZyYW1l
KiBjcmVhdGVGcmFtZShjb25zdCBLVVJMJiBVUkwsIGNvbnN0IFN0cmluZyYgbmFtZSwgRWxlbWVu
dCogb3duZXJFbGVtZW50LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKTsKLSAgICAgICAgRnJhbWUq
IGxvYWRTdWJmcmFtZShFbGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IEtVUkwmIFVSTCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKTsKKyAgICAgICAgYm9vbCBy
ZXF1ZXN0RnJhbWUoSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBVUkwsIGNv
bnN0IEF0b21pY1N0cmluZyYgZnJhbWVOYW1lKTsKKyAgICAgICAgRnJhbWUqIGNyZWF0ZUZyYW1l
KGNvbnN0IEtVUkwmIFVSTCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1l
bnQqLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKTsKKyAgICAgICAgRnJhbWUqIGxvYWRTdWJmcmFt
ZShIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBjb25zdCBLVVJMJiBVUkwsIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiByZWZlcnJlcik7CiAKICAgICAgICAgdm9pZCBzdWJtaXRGb3Jt
KGNvbnN0IGNoYXIqIGFjdGlvbiwgY29uc3QgU3RyaW5nJiBVUkwsIFBhc3NSZWZQdHI8Rm9ybURh
dGE+LCBjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29u
c3QgU3RyaW5nJiBib3VuZGFyeSwgRXZlbnQqKTsKICAgICAgICAgdm9pZCBzdWJtaXRGb3JtQWdh
aW4oKTsKQEAgLTQ4Miw3ICs0ODMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZv
aWQgY29tcGxldGVkKCk7CiAgICAgICAgIHZvaWQgcGFyZW50Q29tcGxldGVkKCk7CiAKLSAgICAg
ICAgYm9vbCBzaG91bGRVc2VQbHVnaW4oTm9kZSogZWxlbWVudCwgY29uc3QgS1VSTCYsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgaGFzRmFsbGJhY2ssIGJvb2wmIHVzZUZhbGxiYWNrKTsK
KyAgICAgICAgYm9vbCBzaG91bGRVc2VQbHVnaW4oY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGJvb2wgaGFzRmFsbGJhY2ssIGJvb2wmIHVzZUZhbGxiYWNrKTsKICAgICAgICAg
Ym9vbCBsb2FkUGx1Z2luKFJlbmRlclBhcnQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwKICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcywgYm9vbCB1c2VGYWxsYmFjayk7CiAKSW5kZXg6
IFdlYkNvcmUvbG9hZGVyL21hYy9GcmFtZUxvYWRlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2xvYWRlci9tYWMvRnJhbWVMb2FkZXJNYWMubW0JKHJldmlzaW9uIDE4MTU4KQorKysgV2Vi
Q29yZS9sb2FkZXIvbWFjL0ZyYW1lTG9hZGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3
ICs3NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7
CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWQoY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVz
dCwgYm9vbCB1c2VyR2VzdHVyZSwgRXZlbnQqIGV2ZW50LAotICAgIEVsZW1lbnQqIHN1Ym1pdEZv
cm0sIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBmb3JtVmFsdWVzKQorICAgIEhUTUxG
b3JtRWxlbWVudCogc3VibWl0Rm9ybSwgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGZv
cm1WYWx1ZXMpCiB7CiAgICAgU3RyaW5nIHJlZmVycmVyOwogICAgIFN0cmluZyBhcmdzUmVmZXJy
ZXIgPSByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLmh0dHBSZWZlcnJlcigpOwpAQCAtMTE0LDcg
KzExNCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWQoY29uc3QgRnJhbWVMb2FkUmUKIH0KIAog
dm9pZCBGcmFtZUxvYWRlcjo6bG9hZChjb25zdCBLVVJMJiBVUkwsIGNvbnN0IFN0cmluZyYgcmVm
ZXJyZXIsIEZyYW1lTG9hZFR5cGUgbmV3TG9hZFR5cGUsCi0gICAgY29uc3QgU3RyaW5nJiBmcmFt
ZU5hbWUsIEV2ZW50KiBldmVudCwgRWxlbWVudCogZm9ybSwgY29uc3QgSGFzaE1hcDxTdHJpbmcs
IFN0cmluZz4mIHZhbHVlcykKKyAgICBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgRXZlbnQqIGV2
ZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0sIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+
JiB2YWx1ZXMpCiB7CiAgICAgYm9vbCBpc0Zvcm1TdWJtaXNzaW9uID0gIXZhbHVlcy5pc0VtcHR5
KCk7CiAgICAgCkBAIC0xMTA0LDcgKzExMDQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkZWRS
ZXNvdXJjZUZyb21NZW1vCiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnBvc3QoY29uc3QgS1VSTCYg
VVJMLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgUGFz
c1JlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEsIAotICAgIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUsIEV2ZW50KiBldmVudCwgRWxlbWVudCogZm9ybSwgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0
cmluZz4mIGZvcm1WYWx1ZXMpCisgICAgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgRXZlbnQq
IGV2ZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0sIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmc+JiBmb3JtVmFsdWVzKQogewogICAgIC8vIFdoZW4gcG9zdGluZywgdXNlIHRoZSBOU1VSTFJl
cXVlc3RSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YSBsb2FkIGZsYWcuCiAgICAgLy8gVGhpcyBwcmV2
ZW50cyBhIHBvdGVudGlhbCBidWcgd2hpY2ggbWF5IGNhdXNlIGEgcGFnZSB3aXRoIGEgZm9ybSB0
aGF0IHVzZXMgaXRzZWxmCkBAIC0xMjQwLDcgKzEyNDAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjps
b2FkUmVzb3VyY2VTeW5jaHJvbm91CiAgICAgbWVtY3B5KGRhdGEuZGF0YSgpLCBbcmVzdWx0IGJ5
dGVzXSwgW3Jlc3VsdCBsZW5ndGhdKTsKIH0KIAotRnJhbWUqIEZyYW1lTG9hZGVyOjpjcmVhdGVG
cmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgRWxlbWVudCogb3duZXJF
bGVtZW50LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQorRnJhbWUqIEZyYW1lTG9hZGVyOjpjcmVh
dGVGcmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3du
ZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCiB7CiAgICAg
Qk9PTCBhbGxvd3NTY3JvbGxpbmcgPSBZRVM7CiAgICAgaW50IG1hcmdpbldpZHRoID0gLTE7Cklu
ZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9G
cmFtZS5jcHAJKHJldmlzaW9uIDE4MTU4KQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDMsOCArNDMsOCBAQAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNp
bmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIkZyYW1l
TG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkUmVxdWVzdC5oIgorI2luY2x1ZGUgIkZyYW1l
TG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0LmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCkBAIC0xNTAsMTQgKzE1MCwxNCBA
QCBpbnQgRnJhbWVDb3VudGVyOjpjb3VudCA9IDA7CiBzdGF0aWMgRnJhbWVDb3VudGVyIGZyYW1l
Q291bnRlcjsKICNlbmRpZgogCi1zdGF0aWMgaW5saW5lIEZyYW1lKiBwYXJlbnRGcm9tT3duZXJF
bGVtZW50KEVsZW1lbnQqIG93bmVyRWxlbWVudCkKK3N0YXRpYyBpbmxpbmUgRnJhbWUqIHBhcmVu
dEZyb21Pd25lckVsZW1lbnQoSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQpCiB7
CiAgICAgaWYgKCFvd25lckVsZW1lbnQpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBv
d25lckVsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCk7CiB9CiAKLUZyYW1lOjpGcmFtZShQYWdl
KiBwYWdlLCBFbGVtZW50KiBvd25lckVsZW1lbnQsIEZyYW1lTG9hZGVyQ2xpZW50KiBmcmFtZUxv
YWRlckNsaWVudCkgCitGcmFtZTo6RnJhbWUoUGFnZSogcGFnZSwgSFRNTEZyYW1lT3duZXJFbGVt
ZW50KiBvd25lckVsZW1lbnQsIEZyYW1lTG9hZGVyQ2xpZW50KiBmcmFtZUxvYWRlckNsaWVudCkg
CiAgICAgOiBkKG5ldyBGcmFtZVByaXZhdGUocGFnZSwgcGFyZW50RnJvbU93bmVyRWxlbWVudChv
d25lckVsZW1lbnQpLCB0aGlzLCBvd25lckVsZW1lbnQsIGZyYW1lTG9hZGVyQ2xpZW50KSkKIHsK
ICAgICBBdG9taWNTdHJpbmc6OmluaXQoKTsKQEAgLTE3OSw2ICsxNzksNyBAQCBGcmFtZTo6RnJh
bWUoUGFnZSogcGFnZSwgRWxlbWVudCogb3duZXJFCiAgICAgICAgIC8vIExlYXZlIHRoaXMgcmVm
IGNhbGwgaGVyZSB1bnRpbCB3ZSBjYW4gc3RyYWlnaHRlbiB0aGF0IG91dC4KICAgICAgICAgcmVm
KCk7CiAgICAgICAgIHBhZ2UtPmluY3JlbWVudEZyYW1lQ291bnQoKTsKKyAgICAgICAgb3duZXJF
bGVtZW50LT5tX2NvbnRlbnRGcmFtZSA9IHRoaXM7CiAgICAgfQogCiAjaWZuZGVmIE5ERUJVRwpA
QCAtOTEzLDE0ICs5MTQsMTQgQEAgUmVuZGVyT2JqZWN0ICpGcmFtZTo6cmVuZGVyZXIoKSBjb25z
dAogICAgIHJldHVybiBkb2MgPyBkb2MtPnJlbmRlcmVyKCkgOiAwOwogfQogCi1FbGVtZW50KiBG
cmFtZTo6b3duZXJFbGVtZW50KCkKK0hUTUxGcmFtZU93bmVyRWxlbWVudCogRnJhbWU6Om93bmVy
RWxlbWVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGQtPm1fb3duZXJFbGVtZW50OwogfQogCiBS
ZW5kZXJQYXJ0KiBGcmFtZTo6b3duZXJSZW5kZXJlcigpCiB7Ci0gICAgRWxlbWVudCogb3duZXJF
bGVtZW50ID0gZC0+bV9vd25lckVsZW1lbnQ7CisgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBv
d25lckVsZW1lbnQgPSBkLT5tX293bmVyRWxlbWVudDsKICAgICBpZiAoIW93bmVyRWxlbWVudCkK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlbmRlclBhcnQqPihv
d25lckVsZW1lbnQtPnJlbmRlcmVyKCkpOwpAQCAtMTQ3NSw5ICsxNDc2LDExIEBAIHZvaWQgRnJh
bWU6OnNldFN0YXR1c0JhclRleHQoY29uc3QgU3RyaW4KIAogdm9pZCBGcmFtZTo6ZGlzY29ubmVj
dE93bmVyRWxlbWVudCgpCiB7Ci0gICAgaWYgKGQtPm1fb3duZXJFbGVtZW50ICYmIGQtPm1fcGFn
ZSkKLSAgICAgICAgZC0+bV9wYWdlLT5kZWNyZW1lbnRGcmFtZUNvdW50KCk7Ci0gICAgICAgIAor
ICAgIGlmIChkLT5tX293bmVyRWxlbWVudCkgeworICAgICAgICBkLT5tX293bmVyRWxlbWVudC0+
bV9jb250ZW50RnJhbWUgPSAwOworICAgICAgICBpZiAoZC0+bV9wYWdlKQorICAgICAgICAgICAg
ZC0+bV9wYWdlLT5kZWNyZW1lbnRGcmFtZUNvdW50KCk7CisgICAgfQogICAgIGQtPm1fb3duZXJF
bGVtZW50ID0gMDsKIH0KIApAQCAtMTUwMCw3ICsxNTAzLDcgQEAgdm9pZCBGcmFtZTo6c2V0UHJv
aGliaXRzU2Nyb2xsaW5nKGJvb2wgcAogICAgIGQtPm1fcHJvaGliaXRzU2Nyb2xsaW5nID0gcHJv
aGliaXQ7CiB9CiAKLUZyYW1lUHJpdmF0ZTo6RnJhbWVQcml2YXRlKFBhZ2UqIHBhZ2UsIEZyYW1l
KiBwYXJlbnQsIEZyYW1lKiB0aGlzRnJhbWUsIEVsZW1lbnQqIG93bmVyRWxlbWVudCwgRnJhbWVM
b2FkZXJDbGllbnQqIGZyYW1lTG9hZGVyQ2xpZW50KQorRnJhbWVQcml2YXRlOjpGcmFtZVByaXZh
dGUoUGFnZSogcGFnZSwgRnJhbWUqIHBhcmVudCwgRnJhbWUqIHRoaXNGcmFtZSwgSFRNTEZyYW1l
T3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIEZyYW1lTG9hZGVyQ2xpZW50KiBmcmFtZUxvYWRl
ckNsaWVudCkKICAgICA6IG1fcGFnZShwYWdlKQogICAgICwgbV90cmVlTm9kZSh0aGlzRnJhbWUs
IHBhcmVudCkKICAgICAsIG1fb3duZXJFbGVtZW50KG93bmVyRWxlbWVudCkKSW5kZXg6IFdlYkNv
cmUvcGFnZS9GcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZS5oCShyZXZp
c2lvbiAxODE1OCkKKysrIFdlYkNvcmUvcGFnZS9GcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02
NCw2ICs2NCw3IEBAIGNsYXNzIEV2ZW50SGFuZGxlcjsKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNz
IEZyYW1lTG9hZGVyOwogY2xhc3MgRnJhbWVMb2FkZXJDbGllbnQ7CitjbGFzcyBIVE1MRnJhbWVP
d25lckVsZW1lbnQ7CiBjbGFzcyBGcmFtZVByaXZhdGU7CiBjbGFzcyBGcmFtZVRyZWU7CiBjbGFz
cyBGcmFtZVZpZXc7CkBAIC0xMDMsMTIgKzEwNCwxMiBAQCBzdHJ1Y3QgTWFya2VkVGV4dFVuZGVy
bGluZSB7CiAKIGNsYXNzIEZyYW1lIDogcHVibGljIFNoYXJlZDxGcmFtZT4gewogcHVibGljOgot
ICAgIEZyYW1lKFBhZ2UqLCBFbGVtZW50KiwgRnJhbWVMb2FkZXJDbGllbnQqKTsKKyAgICBGcmFt
ZShQYWdlKiwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgRnJhbWVMb2FkZXJDbGllbnQqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0VmlldyhGcmFtZVZpZXcqKTsKICAgICB2aXJ0dWFsIH5GcmFtZSgp
OwogCiAgICAgUGFnZSogcGFnZSgpIGNvbnN0OwotICAgIEVsZW1lbnQqIG93bmVyRWxlbWVudCgp
OworICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50KCkgY29uc3Q7CiAKICAg
ICB2b2lkIHBhZ2VEZXN0cm95ZWQoKTsKICAgICB2b2lkIGRpc2Nvbm5lY3RPd25lckVsZW1lbnQo
KTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFtZVByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BhZ2UvRnJhbWVQcml2YXRlLmgJKHJldmlzaW9uIDE4MTU4KQorKysgV2ViQ29yZS9wYWdl
L0ZyYW1lUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxNCArNDAsMTQgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgRnJhbWVQcml2YXRlIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIEZyYW1lUHJpdmF0ZShQYWdlKiwgRnJhbWUqIHBhcmVudCwgRnJhbWUqIHRoaXNGcmFt
ZSwgRWxlbWVudCogb3duZXJFbGVtZW50LCBGcmFtZUxvYWRlckNsaWVudCopOworICAgICAgICBG
cmFtZVByaXZhdGUoUGFnZSosIEZyYW1lKiBwYXJlbnQsIEZyYW1lKiB0aGlzRnJhbWUsIEhUTUxG
cmFtZU93bmVyRWxlbWVudCosIEZyYW1lTG9hZGVyQ2xpZW50Kik7CiAgICAgICAgIH5GcmFtZVBy
aXZhdGUoKTsKIAogICAgICAgICBQYWdlKiBtX3BhZ2U7CiAgICAgICAgIEZyYW1lVHJlZSBtX3Ry
ZWVOb2RlOwogICAgICAgICBSZWZQdHI8RE9NV2luZG93PiBtX2RvbVdpbmRvdzsKIAotICAgICAg
ICBFbGVtZW50KiBtX293bmVyRWxlbWVudDsKKyAgICAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50
KiBtX293bmVyRWxlbWVudDsKICAgICAgICAgUmVmUHRyPEZyYW1lVmlldz4gbV92aWV3OwogICAg
ICAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fZG9jOwogCkluZGV4OiBXZWJDb3JlL3BhZ2UvbWFjL0V2
ZW50SGFuZGxlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFu
ZGxlck1hYy5tbQkocmV2aXNpb24gMTgxNTgpCisrKyBXZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFu
ZGxlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkZy
YW1lTWFjLmgiCiAjaW5jbHVkZSAiRnJhbWVUcmVlLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3Lmgi
CisjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1l
U2V0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiSGl0
VGVzdFJlc3VsdC5oIgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVJbnRlcm5hbC5oCShyZXZpc2lvbiAxODE1OCkKKysrIFdlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTYx
LDggKzYxLDcgQEAgY2xhc3MgTlNVUkxDb25uZWN0aW9uOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLSAgICBjbGFzcyBSZXNvdXJjZUhhbmRsZUludGVybmFsCi0gICAgeworICAgIGNsYXNzIFJl
c291cmNlSGFuZGxlSW50ZXJuYWwgOiBOb25jb3B5YWJsZSB7CiAgICAgcHVibGljOgogICAgICAg
ICBSZXNvdXJjZUhhbmRsZUludGVybmFsKFJlc291cmNlSGFuZGxlKiBsb2FkZXIsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGMsIGJvb2wgZGVm
ZXJzTG9hZGluZykKICAgICAgICAgICAgIDogbV9jbGllbnQoYykKQEAgLTEyNSw3ICsxMjQsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgVVNFKENVUkwpCiAgICAgICAgIENVUkwqIG1faGFu
ZGxlOwogI2VuZGlmCi0gICAgICAgIH07CisgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3F0L0ZyYW1lUXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vcXQvRnJhbWVRdC5jcHAJKHJldmlzaW9uIDE4MTU4KQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9GcmFtZVF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcsOCArOTcs
OCBAQCBzdGF0aWMgdm9pZCBkb1Njcm9sbChjb25zdCBSZW5kZXJPYmplY3QqCiB9CiAjZW5kaWYK
IAotRnJhbWVRdDo6RnJhbWVRdChQYWdlKiBwYWdlLCBFbGVtZW50KiBvd25lckVsZW1lbnQsCi0g
ICAgICAgICAgICAgICAgIEZyYW1lUXRDbGllbnQqIGZyYW1lQ2xpZW50LCBGcmFtZUxvYWRlckNs
aWVudCAqZnJhbWVMb2FkZXIpCitGcmFtZVF0OjpGcmFtZVF0KFBhZ2UqIHBhZ2UsIEhUTUxGcmFt
ZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAorICAgICAgICAgICAgICAgICBGcmFtZVF0Q2xp
ZW50KiBmcmFtZUNsaWVudCwgRnJhbWVMb2FkZXJDbGllbnQqIGZyYW1lTG9hZGVyKQogICAgIDog
RnJhbWUocGFnZSwgb3duZXJFbGVtZW50LCBmcmFtZUxvYWRlcikKICAgICAsIG1fYmluZGluZ1Jv
b3QoMCkKIHsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vcXQvRnJhbWVRdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vcXQvRnJhbWVRdC5oCShyZXZpc2lvbiAxODE1OCkKKysrIFdl
YkNvcmUvcGxhdGZvcm0vcXQvRnJhbWVRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw4ICs0Niw3
IEBAIGNsYXNzIEVkaXRvckNsaWVudDsKIAogY2xhc3MgRnJhbWVRdCA6IHB1YmxpYyBGcmFtZSB7
CiBwdWJsaWM6Ci0gICAgLy8gSWYgJ2NsaWVudCcgcmVtYWlucyBuaWwsIGEgZGVmYXVsdCBlZGl0
b3IgY2xpZW50IHdpbGwgYmUgY29uc3RydWN0ZWQuCi0gICAgRnJhbWVRdChQYWdlKiwgRWxlbWVu
dCosIEZyYW1lUXRDbGllbnQqLCBGcmFtZUxvYWRlckNsaWVudCAqZnJhbWVMb2FkZXIpOworICAg
IEZyYW1lUXQoUGFnZSosIEhUTUxGcmFtZU93bmVyRWxlbWVudCosIEZyYW1lUXRDbGllbnQqLCBG
cmFtZUxvYWRlckNsaWVudCopOwogICAgIHZpcnR1YWwgfkZyYW1lUXQoKTsKIAogICAgIHZpcnR1
YWwgS0pTOjpCaW5kaW5nczo6SW5zdGFuY2UqIGdldEVtYmVkSW5zdGFuY2VGb3JXaWRnZXQoV2lk
Z2V0Kik7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWUuY3BwCShyZXZpc2lvbiAxODE1OCkK
KysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDUsOSArNDUsOSBAQCB2b2lkIFJlbmRlckZyYW1lOjp2aWV3Q2xlYXJlZCgpCiAgICAgaWYgKGVs
ZW1lbnQoKSAmJiBtX3dpZGdldCAmJiBtX3dpZGdldC0+aXNGcmFtZVZpZXcoKSkgewogICAgICAg
ICBGcmFtZVZpZXcqIHZpZXcgPSBzdGF0aWNfY2FzdDxGcmFtZVZpZXcqPihtX3dpZGdldCk7CiAg
ICAgICAgIEhUTUxGcmFtZVNldEVsZW1lbnQqIGZyYW1lU2V0ID0gc3RhdGljX2Nhc3Q8SFRNTEZy
YW1lU2V0RWxlbWVudCo+KGVsZW1lbnQoKS0+cGFyZW50Tm9kZSgpKTsKLSAgICAgICAgYm9vbCBo
YXNCb3JkZXIgPSBlbGVtZW50KCktPm1fZnJhbWVCb3JkZXIgJiYgZnJhbWVTZXQtPmZyYW1lQm9y
ZGVyKCk7Ci0gICAgICAgIGludCBtYXJnaW53ID0gZWxlbWVudCgpLT5tX21hcmdpbldpZHRoOwot
ICAgICAgICBpbnQgbWFyZ2luaCA9IGVsZW1lbnQoKS0+bV9tYXJnaW5IZWlnaHQ7CisgICAgICAg
IGJvb2wgaGFzQm9yZGVyID0gZWxlbWVudCgpLT5oYXNGcmFtZUJvcmRlcigpICYmIGZyYW1lU2V0
LT5mcmFtZUJvcmRlcigpOworICAgICAgICBpbnQgbWFyZ2ludyA9IGVsZW1lbnQoKS0+Z2V0TWFy
Z2luV2lkdGgoKTsKKyAgICAgICAgaW50IG1hcmdpbmggPSBlbGVtZW50KCktPmdldE1hcmdpbkhl
aWdodCgpOwogCiAgICAgICAgIHZpZXctPnNldEhhc0JvcmRlcihoYXNCb3JkZXIpOwogICAgICAg
ICBpZiAobWFyZ2ludyAhPSAtMSkKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBhcnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBhcnQuY3BwCShyZXZp
c2lvbiAxODE1OCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBhcnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJG
cmFtZVRyZWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKLSNpbmNsdWRlICJIVE1MRWxlbWVu
dC5oIgorI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKIApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVJlbmRlclBhcnQ6OlJl
bmRlclBhcnQoSFRNTEVsZW1lbnQqIG5vZGUpCitSZW5kZXJQYXJ0OjpSZW5kZXJQYXJ0KEhUTUxG
cmFtZU93bmVyRWxlbWVudCogbm9kZSkKICAgICA6IFJlbmRlcldpZGdldChub2RlKQogewogICAg
IC8vIGluaXQgUmVuZGVyT2JqZWN0IGF0dHJpYnV0ZXMKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclBhcnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXJ0
LmgJKHJldmlzaW9uIDE4MTU4KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUGFydC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCwxMSArMzAsMTEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRnJhbWU7Ci1jbGFzcyBIVE1MRWxlbWVudDsKK2NsYXNzIEhUTUxGcmFtZU93bmVyRWxl
bWVudDsKIAogY2xhc3MgUmVuZGVyUGFydCA6IHB1YmxpYyBSZW5kZXJXaWRnZXQgewogcHVibGlj
OgotICAgIFJlbmRlclBhcnQoSFRNTEVsZW1lbnQqKTsKKyAgICBSZW5kZXJQYXJ0KEhUTUxGcmFt
ZU93bmVyRWxlbWVudCopOwogICAgIHZpcnR1YWwgflJlbmRlclBhcnQoKTsKICAgICAKICAgICB2
aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyUGFy
dCI7IH0KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBhcnRPYmplY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBhcnRPYmplY3QuY3BwCShyZXZpc2lv
biAxODE1OCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBhcnRPYmplY3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUmVuZGVyUGFydE9iamVjdDo6UmVuZGVyUGFydE9iamVj
dChIVE1MRWxlbWVudCogZWxlbWVudCkKK1JlbmRlclBhcnRPYmplY3Q6OlJlbmRlclBhcnRPYmpl
Y3QoSFRNTEZyYW1lT3duZXJFbGVtZW50KiBlbGVtZW50KQogICAgIDogUmVuZGVyUGFydChlbGVt
ZW50KQogewogICAgIC8vIGluaXQgUmVuZGVyT2JqZWN0IGF0dHJpYnV0ZXMKQEAgLTI2NCw5ICsy
NjQsOSBAQCB2b2lkIFJlbmRlclBhcnRPYmplY3Q6OnZpZXdDbGVhcmVkKCkKICAgICAgICAgaW50
IG1hcmdpbmggPSAtMTsKICAgICAgICAgaWYgKGVsZW1lbnQoKS0+aGFzVGFnTmFtZShpZnJhbWVU
YWcpKSB7CiAgICAgICAgICAgICBIVE1MSUZyYW1lRWxlbWVudCogZnJhbWUgPSBzdGF0aWNfY2Fz
dDxIVE1MSUZyYW1lRWxlbWVudCo+KGVsZW1lbnQoKSk7Ci0gICAgICAgICAgICBoYXNCb3JkZXIg
PSBmcmFtZS0+bV9mcmFtZUJvcmRlcjsKLSAgICAgICAgICAgIG1hcmdpbncgPSBmcmFtZS0+bV9t
YXJnaW5XaWR0aDsKLSAgICAgICAgICAgIG1hcmdpbmggPSBmcmFtZS0+bV9tYXJnaW5IZWlnaHQ7
CisgICAgICAgICAgICBoYXNCb3JkZXIgPSBmcmFtZS0+aGFzRnJhbWVCb3JkZXIoKTsKKyAgICAg
ICAgICAgIG1hcmdpbncgPSBmcmFtZS0+Z2V0TWFyZ2luV2lkdGgoKTsKKyAgICAgICAgICAgIG1h
cmdpbmggPSBmcmFtZS0+Z2V0TWFyZ2luSGVpZ2h0KCk7CiAgICAgICAgIH0KIAogICAgICAgICB2
aWV3LT5zZXRIYXNCb3JkZXIoaGFzQm9yZGVyKTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclBhcnRPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQ
YXJ0T2JqZWN0LmgJKHJldmlzaW9uIDE4MTU4KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UGFydE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyUGFydE9iamVjdCA6IHB1YmxpYyBSZW5kZXJQYXJ0IHsK
IHB1YmxpYzoKLSAgICBSZW5kZXJQYXJ0T2JqZWN0KEhUTUxFbGVtZW50Kik7CisgICAgUmVuZGVy
UGFydE9iamVjdChIVE1MRnJhbWVPd25lckVsZW1lbnQqKTsKIAogICAgIHZpcnR1YWwgY29uc3Qg
Y2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJQYXJ0T2JqZWN0IjsgfQog
CkluZGV4OiBXZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDE4MTYwKQorKysgV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDI0IEBACisyMDA2LTEyLTExICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIGh0dHA6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzk0CisgICAgICAgICAgZml4IGxp
ZmV0aW1lIHByb2JsZW1zIGFmZmVjdGluZyBGcmFtZSdzIG93bmVyRWxlbWVudCBwb2ludGVyCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUJyaWRnZS5tbToKKyAgICAgICAgKC1b
V2ViRnJhbWVCcmlkZ2UgZmluaXNoSW5pdGlhbGl6aW5nV2l0aFBhZ2U6V2ViQ29yZTo6ZnJhbWVO
YW1lOmZyYW1lVmlldzpvd25lckVsZW1lbnQ6XSk6CisgICAgICAgICgtW1dlYkZyYW1lQnJpZGdl
IGluaXRTdWJmcmFtZVdpdGhPd25lckVsZW1lbnQ6ZnJhbWVOYW1lOmZyYW1lVmlldzpdKToKKyAg
ICAgICAgKC1bV2ViRnJhbWVCcmlkZ2UgY3JlYXRlQ2hpbGRGcmFtZU5hbWVkOndpdGhVUkw6cmVm
ZXJyZXI6b3duZXJFbGVtZW50OmFsbG93c1Njcm9sbGluZzptYXJnaW5XaWR0aDptYXJnaW5IZWln
aHQ6XSk6CisgICAgICAgIFVzZSBIVE1MRnJhbWVPd25lckVsZW1lbnQuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbTogSW5jbHVkZSB0aGUgcmVsZXZh
bnQgaGVhZGVycyBmb3IgdGhlCisgICAgICAgIEhUTUxGb3JtRWxlbWVudCBjbGFzcy4KKworICAg
ICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBMZXQgWGNvZGUgaGF2ZSBp
dHMgd2F5LgorCisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbTogKC1bV2ViRnJhbWUgZnJh
bWVFbGVtZW50XSk6IFVwZGF0ZSBpbmNsdWRlcyBhbmQgdHlwZXMgZm9yIHRoZQorICAgICAgICBj
aGFuZ2UgaW4gcmV0dXJuIHR5cGUgb2Ygb3duZXJFbGVtZW50LgorCiAyMDA2LTEyLTExICBEYXZp
ZCBIYXJyaXNvbiAgPGhhcnJpc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggcHJldmlvdXMg
Y2hlY2tpbiB3aGVyZSBJIGNvbW1pdHRlZCB0aGUgd3JvbmcgZmlsZS4KSW5kZXg6IFdlYktpdC9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUJyaWRnZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVCcmlkZ2UubW0JKHJldmlzaW9uIDE4MTU4KQorKysgV2ViS2l0
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lQnJpZGdlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03OCwx
MSArNzgsMTEgQEAKICNpbXBvcnQgPFdlYkNvcmUvQ2FjaGUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RG9jdW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRMb2FkZXIuaD4KLSNpbXBvcnQg
PFdlYkNvcmUvRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgogI2lt
cG9ydCA8V2ViQ29yZS9GcmFtZUxvYWRlckNsaWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFt
ZU1hYy5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVRyZWUuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
SFRNTEZyYW1lT3duZXJFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBv
cnQgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU3VicmVzb3Vy
Y2VMb2FkZXIuaD4KQEAgLTEyMSw3ICsxMjEsNyBAQCBOU1N0cmluZyAqV2ViUGx1Z2luQ29udGFp
bmVyS2V5ID0gICBAIldlCiAgICAgcmV0dXJuIGtpdChtX2ZyYW1lLT5wYWdlKCkpOwogfQogCi0t
ICh2b2lkKWZpbmlzaEluaXRpYWxpemluZ1dpdGhQYWdlOihXZWJDb3JlOjpQYWdlKilwYWdlIGZy
YW1lTmFtZTooTlNTdHJpbmcgKiluYW1lIGZyYW1lVmlldzooV2ViRnJhbWVWaWV3ICopZnJhbWVW
aWV3IG93bmVyRWxlbWVudDooV2ViQ29yZUVsZW1lbnQgKilvd25lckVsZW1lbnQKKy0gKHZvaWQp
ZmluaXNoSW5pdGlhbGl6aW5nV2l0aFBhZ2U6KFBhZ2UqKXBhZ2UgZnJhbWVOYW1lOihOU1N0cmlu
ZyAqKW5hbWUgZnJhbWVWaWV3OihXZWJGcmFtZVZpZXcgKilmcmFtZVZpZXcgb3duZXJFbGVtZW50
OihIVE1MRnJhbWVPd25lckVsZW1lbnQqKW93bmVyRWxlbWVudAogewogICAgICsrV2ViQnJpZGdl
Q291bnQ7CiAKQEAgLTE0MSwxOCArMTQxLDE4IEBAIE5TU3RyaW5nICpXZWJQbHVnaW5Db250YWlu
ZXJLZXkgPSAgIEAiV2UKICAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZE9iamVjdENhY2hlU2l6
ZTsKICAgICBpZiAoIWluaXRpYWxpemVkT2JqZWN0Q2FjaGVTaXplKSB7CiAgICAgICAgIGluaXRp
YWxpemVkT2JqZWN0Q2FjaGVTaXplID0gdHJ1ZTsKLSAgICAgICAgV2ViQ29yZTo6Y2FjaGUoKS0+
c2V0TWF4aW11bVNpemUoW3NlbGYgZ2V0T2JqZWN0Q2FjaGVTaXplXSk7CisgICAgICAgIGNhY2hl
KCktPnNldE1heGltdW1TaXplKFtzZWxmIGdldE9iamVjdENhY2hlU2l6ZV0pOwogICAgIH0KIH0K
IAotLSAoaWQpaW5pdE1haW5GcmFtZVdpdGhQYWdlOihXZWJDb3JlOjpQYWdlKilwYWdlIGZyYW1l
TmFtZTooTlNTdHJpbmcgKiluYW1lIGZyYW1lVmlldzooV2ViRnJhbWVWaWV3ICopZnJhbWVWaWV3
CistIChpZClpbml0TWFpbkZyYW1lV2l0aFBhZ2U6KFBhZ2UqKXBhZ2UgZnJhbWVOYW1lOihOU1N0
cmluZyAqKW5hbWUgZnJhbWVWaWV3OihXZWJGcmFtZVZpZXcgKilmcmFtZVZpZXcKIHsKICAgICBz
ZWxmID0gW3N1cGVyIGluaXRdOwogICAgIFtzZWxmIGZpbmlzaEluaXRpYWxpemluZ1dpdGhQYWdl
OnBhZ2UgZnJhbWVOYW1lOm5hbWUgZnJhbWVWaWV3OmZyYW1lVmlldyBvd25lckVsZW1lbnQ6MF07
CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0gKGlkKWluaXRTdWJmcmFtZVdpdGhPd25lckVsZW1l
bnQ6KFdlYkNvcmVFbGVtZW50ICopb3duZXJFbGVtZW50IGZyYW1lTmFtZTooTlNTdHJpbmcgKilu
YW1lIGZyYW1lVmlldzooV2ViRnJhbWVWaWV3ICopZnJhbWVWaWV3CistIChpZClpbml0U3ViZnJh
bWVXaXRoT3duZXJFbGVtZW50OihIVE1MRnJhbWVPd25lckVsZW1lbnQqKW93bmVyRWxlbWVudCBm
cmFtZU5hbWU6KE5TU3RyaW5nICopbmFtZSBmcmFtZVZpZXc6KFdlYkZyYW1lVmlldyAqKWZyYW1l
VmlldwogewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAgW3NlbGYgZmluaXNoSW5pdGlh
bGl6aW5nV2l0aFBhZ2U6b3duZXJFbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpLT5wYWdlKCkg
ZnJhbWVOYW1lOm5hbWUgZnJhbWVWaWV3OmZyYW1lVmlldyBvd25lckVsZW1lbnQ6b3duZXJFbGVt
ZW50XTsKQEAgLTQyMCw3ICs0MjAsNyBAQCBOU1N0cmluZyAqV2ViUGx1Z2luQ29udGFpbmVyS2V5
ID0gICBAIldlCiAtIChXZWJDb3JlRnJhbWVCcmlkZ2UgKiljcmVhdGVDaGlsZEZyYW1lTmFtZWQ6
KE5TU3RyaW5nICopZnJhbWVOYW1lIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB3aXRoVVJMOihOU1VSTCAqKVVSTAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlZmVycmVyOihjb25zdCBTdHJpbmcmKXJlZmVycmVyCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG93bmVyRWxlbWVudDooV2ViQ29yZUVsZW1lbnQgKilvd25lckVs
ZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG93bmVyRWxlbWVudDooSFRN
TEZyYW1lT3duZXJFbGVtZW50Kilvd25lckVsZW1lbnQKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFsbG93c1Njcm9sbGluZzooQk9PTClhbGxvd3NTY3JvbGxpbmcgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luV2lkdGg6KGludCl3aWR0aAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luSGVpZ2h0OihpbnQpaGVpZ2h0CkBAIC0xMDU5
LDcgKzEwNTksNyBAQCBzdGF0aWMgaWQgPFdlYkZvcm1EZWxlZ2F0ZT4gZm9ybURlbGVnYXRlCiAg
ICAgcmV0dXJuIFtbc2VsZiB3ZWJWaWV3XSBpc0VkaXRhYmxlXTsKIH0KIAotLSAoQk9PTClzaG91
bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihET01SYW5nZSAqKWN1cnJlbnRSYW5nZSB0b0RPTVJh
bmdlOihET01SYW5nZSAqKXByb3Bvc2VkUmFuZ2UgYWZmaW5pdHk6KFdlYkNvcmU6OkVBZmZpbml0
eSlzZWxlY3Rpb25BZmZpbml0eSBzdGlsbFNlbGVjdGluZzooQk9PTClmbGFnCistIChCT09MKXNo
b3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KERPTVJhbmdlICopY3VycmVudFJhbmdlIHRvRE9N
UmFuZ2U6KERPTVJhbmdlICopcHJvcG9zZWRSYW5nZSBhZmZpbml0eTooRUFmZmluaXR5KXNlbGVj
dGlvbkFmZmluaXR5IHN0aWxsU2VsZWN0aW5nOihCT09MKWZsYWcKIHsKICAgICByZXR1cm4gW1tz
ZWxmIHdlYlZpZXddIF9zaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOmN1cnJlbnRSYW5nZSB0
b0RPTVJhbmdlOnByb3Bvc2VkUmFuZ2UgYWZmaW5pdHk6a2l0KHNlbGVjdGlvbkFmZmluaXR5KSBz
dGlsbFNlbGVjdGluZzpmbGFnXTsKIH0KSW5kZXg6IFdlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHJldmlzaW9uIDE4MTU4KQorKysgV2ViS2l0L1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2
ICs3Miw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4KICNpbXBvcnQg
PFdlYkNvcmUvRnJhbWVNYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVUcmVlLmg+CisjaW1w
b3J0IDxXZWJDb3JlL0hUTUxGb3JtRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9IaXRUZXN0
UmVzdWx0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ljb25EYXRhYmFzZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9Nb3VzZUV2ZW50Lmg+CkBAIC04Myw3ICs4NCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1dl
YkNvcmVGcmFtZUJyaWRnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlUGFnZVN0YXRlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkRhdGFQcm90b2NvbC5oPgotI2ltcG9ydCA8V2ViS2l0L0RP
TUVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYktpdC9ET01IVE1MRm9ybUVsZW1lbnQuaD4KICNpbXBv
cnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2ltcG9ydCA8d3RmL1Bhc3NSZWZQdHIuaD4K
IApJbmRleDogV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MTgxNTgpCisrKyBXZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTMwMywyMyArMzAzLDYgQEAKIAkJfTsKIC8qIEVuZCBQQlhCdWlsZFJ1bGUg
c2VjdGlvbiAqLwogCi0vKiBCZWdpbiBQQlhCdWlsZFN0eWxlIHNlY3Rpb24gKi8KLQkJQkM0QzY1
OUYwQjJBNDg3QjAwRTU3MzUyIC8qIERldmVsb3BtZW50ICovID0gewotCQkJaXNhID0gUEJYQnVp
bGRTdHlsZTsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5P
OwotCQkJfTsKLQkJCW5hbWUgPSBEZXZlbG9wbWVudDsKLQkJfTsKLQkJQkM0QzY1QTAwQjJBNDg3
QjAwRTU3MzUyIC8qIERlcGxveW1lbnQgKi8gPSB7Ci0JCQlpc2EgPSBQQlhCdWlsZFN0eWxlOwot
CQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVTOwotCQkJfTsK
LQkJCW5hbWUgPSBEZXBsb3ltZW50OwotCQl9OwotLyogRW5kIFBCWEJ1aWxkU3R5bGUgc2VjdGlv
biAqLwotCiAvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAkJMDY1QUQ1QTEw
QjBDMzJDNzAwNUEyQjFEIC8qIFdlYkNvbnRleHRNZW51Q2xpZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb250ZXh0TWVudUNsaWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwNjVBRDVBMjBCMEMzMkM3MDA1QTJCMUQgLyogV2ViQ29udGV4dE1l
bnVDbGllbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2Vi
Q29udGV4dE1lbnVDbGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjc5
LDEyICsxMjYyLDYgQEAKIAkJMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2Jq
ZWN0ICovID0gewogCQkJaXNhID0gUEJYUHJvamVjdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxp
c3QgPSAxNDlDMjgzMjA4OTAyQjBGMDA4QTlFRkMgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0
IGZvciBQQlhQcm9qZWN0ICJXZWJLaXQiICovOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCX07
Ci0JCQlidWlsZFN0eWxlcyA9ICgKLQkJCQlCQzRDNjU5RjBCMkE0ODdCMDBFNTczNTIgLyogRGV2
ZWxvcG1lbnQgKi8sCi0JCQkJQkM0QzY1QTAwQjJBNDg3QjAwRTU3MzUyIC8qIERlcGxveW1lbnQg
Ki8sCi0JCQkpOwogCQkJaGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDE7CiAJCQlrbm93blJlZ2lv
bnMgPSAoCiAJCQkJRW5nbGlzaCwKSW5kZXg6IFdlYktpdC9XZWJWaWV3L1dlYkZyYW1lLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9XZWJWaWV3L1dlYkZyYW1lLm1tCShyZXZpc2lvbiAxODE1OCkK
KysrIFdlYktpdC9XZWJWaWV3L1dlYkZyYW1lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2
Niw4IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0ZyYW1lTWFjLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVHJlZS5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9IVE1MRWxlbWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9IVE1MRm9ybUVsZW1lbnQuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvSFRNTEZyYW1lT3duZXJFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VsZWN0aW9uQ29udHJvbGxlci5oPgogI2lt
cG9ydCA8V2ViQ29yZS9XZWJEYXRhUHJvdG9jb2wuaD4KQEAgLTExNzAsMTAgKzExNzEsNyBAQCBz
dGF0aWMgaW5saW5lIFdlYkRhdGFTb3VyY2UgKmRhdGFTb3VyY2UoCiAgICAgRnJhbWUqIGNvcmVG
cmFtZSA9IGNvcmUoc2VsZik7CiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBu
aWw7Ci0gICAgRWxlbWVudCogZWxlbWVudCA9IGNvcmVGcmFtZS0+b3duZXJFbGVtZW50KCk7Ci0g
ICAgaWYgKCFlbGVtZW50IHx8ICFlbGVtZW50LT5pc0hUTUxFbGVtZW50KCkpCi0gICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgcmV0dXJuIGtpdChzdGF0aWNfY2FzdDxIVE1MRWxlbWVudCo+KGVsZW1l
bnQpKTsKKyAgICByZXR1cm4ga2l0KGNvcmVGcmFtZS0+b3duZXJFbGVtZW50KCkpOwogfQogCiAt
IChXZWJEYXRhU291cmNlICopcHJvdmlzaW9uYWxEYXRhU291cmNlCg==
</data>
<flag name="review"
          id="4284"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>