<?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>121915</bug_id>
          
          <creation_ts>2013-09-25 09:59:26 -0700</creation_ts>
          <short_desc>Reduce repetitive EventTarget subclassing.</short_desc>
          <delta_ts>2013-09-25 11:51:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>UI Events</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>philn</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>933057</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-09-25 09:59:26 -0700</bug_when>
    <thetext>Reduce repetitive EventTarget subclassing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933059</commentid>
    <comment_count>1</comment_count>
      <attachid>212594</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-09-25 09:59:53 -0700</bug_when>
    <thetext>Created attachment 212594
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933060</commentid>
    <comment_count>2</comment_count>
      <attachid>212594</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-25 10:01:29 -0700</bug_when>
    <thetext>Comment on attachment 212594
Patch

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

&gt; Source/WebCore/dom/EventTarget.h:166
&gt; +    private:

Newline before private.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933122</commentid>
    <comment_count>3</comment_count>
      <attachid>212609</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-09-25 11:22:20 -0700</bug_when>
    <thetext>Created attachment 212609
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933139</commentid>
    <comment_count>4</comment_count>
      <attachid>212609</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-25 11:51:43 -0700</bug_when>
    <thetext>Comment on attachment 212609
Patch for landing

Clearing flags on attachment: 212609

Committed r156413: &lt;http://trac.webkit.org/changeset/156413&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933140</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-25 11:51:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212594</attachid>
            <date>2013-09-25 09:59:53 -0700</date>
            <delta_ts>2013-09-25 11:22:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121915.diff</filename>
            <type>text/plain</type>
            <size>102095</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NzUxY2NiLi4wY2NhMTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQg
QEAKKzIwMTMtMDktMjUgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAg
ICAgIFJlZHVjZSByZXBldGl0aXZlIEV2ZW50VGFyZ2V0IHN1YmNsYXNzaW5nLgorICAgICAgICA8
aHR0cHM6Ly93ZWJraXQub3JnL2IvMTIxOTE1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIEV2ZW50VGFyZ2V0V2l0aERhdGEgaGVscGVyIGNs
YXNzIHRvIEV2ZW50VGFyZ2V0LmguCisgICAgICAgIEl0J3MgYSBzaW1wbGUgc3ViY2xhc3Mgd2l0
aCBhbiBFdmVudFRhcmdldERhdGEgbWVtYmVyIGFuZCBGSU5BTAorICAgICAgICBldmVudFRhcmdl
dERhdGEoKS9lbnN1cmVFdmVudFRhcmdldERhdGEoKSBvdmVycmlkZXMuCisKKyAgICAgICAgVHVy
bnMgb3V0IHRoYXQgdGhpcyBmaXRzIGFsbW9zdCBldmVyeSB1c2UgY2FzZSBleGNlcHQgTm9kZSBh
bmQKKyAgICAgICAgU1ZHRWxlbWVudEluc3RhbmNlLgorCisgICAgICAgIElubGluZWQgbW9zdCBv
ZiB0aGUgRklOQUwgRXZlbnRUYXJnZXQgb3ZlcnJpZGVzIHNpbmNlIHRoZXkgd2lsbAorICAgICAg
ICBiZSBjYWxsZWQgb24gdGlnaHQgcG9pbnRlcnMgYnkgZ2VuZXJhdGVkIGJpbmRpbmdzIGNvZGUg
YW5kIHRoaXMKKyAgICAgICAgcmVtb3ZlcyB0aGUgbmVlZCBmb3IgdmlydHVhbCBkaXNwYXRjaC4K
KworICAgICAgICBTcGFtbWVkIE9WRVJSSURFIEZJTkFMIGFzIGFwcHJvcHJpYXRlLCB3ZSBjYW4n
dCBtYWtlIHRoZSB3aG9sZQorICAgICAgICBjbGFzc2VzIEZJTkFMIHVudGlsIGJ1ZyAxMjE3NDcg
aXMgZml4ZWQsIHNvIGFkZGVkIEZJWE1Fcy4KKwogMjAxMy0wOS0yNSAgQWxsYW4gU2FuZGZlbGQg
SmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KIAogICAgICAgICBbUXRdIEZpeCBidWls
ZCB3aXRoICFFTkFCTEUoQkxPQikgYWZ0ZXIgcjE1NjMzMApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCmluZGV4
IDdkNDZhMTUuLmE0YjYyMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKQEAgLTIxOSwxNiArMjE5LDYg
QEAgdm9pZCBNZWRpYUtleVNlc3Npb246OmFkZEtleVRpbWVyRmlyZWQoVGltZXI8TWVkaWFLZXlT
ZXNzaW9uPiopCiAgICAgfQogfQogCi1FdmVudFRhcmdldEludGVyZmFjZSBNZWRpYUtleVNlc3Np
b246OmV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gTWVkaWFLZXlT
ZXNzaW9uRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOwotfQotCi1TY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBNZWRpYUtleVNlc3Npb246OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAotewot
ICAgIHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOwotfQotCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKaW5kZXggOWVlNDMyNi4uZjZk
MjI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U2Vzc2lvbi5oCkBAIC00NSw3ICs0NSw4IEBAIGNsYXNzIE1lZGlhS2V5RXJy
b3I7CiBjbGFzcyBNZWRpYUtleXM7CiBjbGFzcyBDRE1TZXNzaW9uOwogCi1jbGFzcyBNZWRpYUtl
eVNlc3Npb24gOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYUtleVNlc3Npb24+LCBwdWJsaWMgRXZl
bnRUYXJnZXQsIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CisvLyBGSVhNRTog
VGhpcyBjbGFzcyBzaG91bGQgYmUgbWFya2VkIEZJTkFMIG9uY2UgPGh0dHA6Ly93ZWJraXQub3Jn
L2IvMTIxNzQ3PiBpcyBmaXhlZC4KK2NsYXNzIE1lZGlhS2V5U2Vzc2lvbiA6IHB1YmxpYyBSZWZD
b3VudGVkPE1lZGlhS2V5U2Vzc2lvbj4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhEYXRhLCBwdWJs
aWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPE1lZGlhS2V5U2Vzc2lvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBN
ZWRpYUtleXMqLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7CiAgICAgfk1lZGlhS2V5U2Vzc2lv
bigpOwpAQCAtNzIsOCArNzMsOCBAQCBwdWJsaWM6CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVO
VF9MSVNURU5FUih3ZWJraXRrZXllcnJvcik7CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9M
SVNURU5FUih3ZWJraXRrZXltZXNzYWdlKTsKIAotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRl
cmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50
ZXJmYWNlKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gTWVkaWFLZXlTZXNzaW9uRXZl
bnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1
cm4gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsg
fQogCiBwcm90ZWN0ZWQ6CiAgICAgTWVkaWFLZXlTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBNZWRpYUtleXMqLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7CkBAIC0xMDEsMTEgKzEw
Miw2IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFy
Z2V0KCkgT1ZFUlJJREUgeyByZWYoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFy
Z2V0KCkgT1ZFUlJJREUgeyBkZXJlZigpOyB9Ci0KLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0
YSogZXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREUgeyByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRh
OyB9Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEmIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgp
IE9WRVJSSURFIHsgcmV0dXJuIG1fZXZlbnRUYXJnZXREYXRhOyB9Ci0KLSAgICBFdmVudFRhcmdl
dERhdGEgbV9ldmVudFRhcmdldERhdGE7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlci5jcHAKaW5kZXggNTM3MjIzNy4uNTU3YmM2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyLmNw
cApAQCAtNzUsMTEgKzc1LDYgQEAgRmlsZVdyaXRlcjo6fkZpbGVXcml0ZXIoKQogICAgICAgICBz
dG9wKCk7CiB9CiAKLUV2ZW50VGFyZ2V0SW50ZXJmYWNlIEZpbGVXcml0ZXI6OmV2ZW50VGFyZ2V0
SW50ZXJmYWNlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gRmlsZVdyaXRlckV2ZW50VGFyZ2V0SW50
ZXJmYWNlVHlwZTsKLX0KLQogYm9vbCBGaWxlV3JpdGVyOjpjYW5TdXNwZW5kKCkgY29uc3QKIHsK
ICAgICAvLyBGSVhNRTogSXQgaXMgbm90IGN1cnJlbnRseSBwb3NzaWJsZSB0byBzdXNwZW5kIGEg
RmlsZVdyaXRlciwgc28gcGFnZXMgd2l0aCBGaWxlV3JpdGVyIGNhbiBub3QgZ28gaW50byBwYWdl
IGNhY2hlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0Zp
bGVXcml0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVy
LmgKaW5kZXggZGMyMGQzNS4uZWY5MTk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vRmlsZVdyaXRlci5oCkBAIC00Niw3ICs0Niw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIEJsb2I7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCi1jbGFz
cyBGaWxlV3JpdGVyIDogcHVibGljIEZpbGVXcml0ZXJCYXNlLCBwdWJsaWMgQWN0aXZlRE9NT2Jq
ZWN0LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBBc3luY0ZpbGVXcml0ZXJDbGllbnQgewor
Ly8gRklYTUU6IFRoaXMgY2xhc3Mgc2hvdWxkIGJlIG1hcmtlZCBGSU5BTCBvbmNlIDxodHRwOi8v
d2Via2l0Lm9yZy9iLzEyMTc0Nz4gaXMgZml4ZWQuCitjbGFzcyBGaWxlV3JpdGVyIDogcHVibGlj
IEZpbGVXcml0ZXJCYXNlLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRUYXJn
ZXRXaXRoRGF0YSwgcHVibGljIEFzeW5jRmlsZVdyaXRlckNsaWVudCB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8RmlsZVdyaXRlcj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqKTsKIApAQCAtNjksOCArNzAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRGYWlsKEZpbGVF
cnJvcjo6RXJyb3JDb2RlKTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCBFdmVu
dFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0OwotICAgIHZpcnR1
YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0
IHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9Cisg
ICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNv
bnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIEZpbGVXcml0ZXJFdmVudFRhcmdldEludGVyZmFj
ZVR5cGU7IH0KKyAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBBY3RpdmVET01PYmpl
Y3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogCiAgICAgdXNpbmcgUmVmQ291bnRlZDxG
aWxlV3JpdGVyQmFzZT46OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkPEZpbGVXcml0ZXJCYXNl
Pjo6ZGVyZWY7CkBAIC05OSwxMCArMTAwLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
c3RvcCgpIE9WRVJSSURFOwogCiAgICAgLy8gRXZlbnRUYXJnZXQKLSAgICB2aXJ0dWFsIHZvaWQg
cmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IHJlZigpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRl
cmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IGRlcmVmKCk7IH0KLSAgICB2aXJ0dWFsIEV2ZW50
VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREUgeyByZXR1cm4gJm1fZXZlbnRU
YXJnZXREYXRhOyB9Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEmIGVuc3VyZUV2ZW50VGFy
Z2V0RGF0YSgpIE9WRVJSSURFIHsgcmV0dXJuIG1fZXZlbnRUYXJnZXREYXRhOyB9CisgICAgdmly
dHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgRklOQUwgeyByZWYoKTsgfQorICAg
IHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgRklOQUwgeyBkZXJlZigp
OyB9CiAKICAgICB2b2lkIGNvbXBsZXRlQWJvcnQoKTsKIApAQCAtMTE1LDcgKzExNCw2IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzZXRFcnJvcihGaWxlRXJyb3I6OkVycm9yQ29kZSwgRXhjZXB0aW9u
Q29kZSYpOwogCiAgICAgUmVmUHRyPEZpbGVFcnJvcj4gbV9lcnJvcjsKLSAgICBFdmVudFRhcmdl
dERhdGEgbV9ldmVudFRhcmdldERhdGE7CiAgICAgUmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7CiAg
ICAgT3BlcmF0aW9uIG1fb3BlcmF0aW9uSW5Qcm9ncmVzczsKICAgICBPcGVyYXRpb24gbV9xdWV1
ZWRPcGVyYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZS5jcHAKaW5kZXggMDk4ZDA2Ni4uNzY3NmMxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcApAQCAtMzYyLDI2ICszNjIsNiBA
QCB2b2lkIElEQkRhdGFiYXNlOjpzdG9wKCkKICAgICBtX2NvbnRleHRTdG9wcGVkID0gdHJ1ZTsK
IH0KIAotRXZlbnRUYXJnZXRJbnRlcmZhY2UgSURCRGF0YWJhc2U6OmV2ZW50VGFyZ2V0SW50ZXJm
YWNlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gSURCRGF0YWJhc2VFdmVudFRhcmdldEludGVyZmFj
ZVR5cGU7Ci19Ci0KLVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIElEQkRhdGFiYXNlOjpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gQWN0aXZlRE9NT2JqZWN0Ojpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci19Ci0KLUV2ZW50VGFyZ2V0RGF0YSogSURCRGF0YWJh
c2U6OmV2ZW50VGFyZ2V0RGF0YSgpCi17Ci0gICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsK
LX0KLQotRXZlbnRUYXJnZXREYXRhJiBJREJEYXRhYmFzZTo6ZW5zdXJlRXZlbnRUYXJnZXREYXRh
KCkKLXsKLSAgICByZXR1cm4gbV9ldmVudFRhcmdldERhdGE7Ci19Ci0KIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKaW5kZXggMmExMTkyNS4u
NzE4MzgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZS5oCkBAIC00OSw3ICs0OSw4IEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAK
IHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKLWNsYXNzIElEQkRhdGFiYXNlIDogcHVibGlj
IFJlZkNvdW50ZWQ8SURCRGF0YWJhc2U+LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMg
RXZlbnRUYXJnZXQsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgeworLy8gRklYTUU6IFRoaXMgY2xh
c3Mgc2hvdWxkIGJlIG1hcmtlZCBGSU5BTCBvbmNlIDxodHRwOi8vd2Via2l0Lm9yZy9iLzEyMTc0
Nz4gaXMgZml4ZWQuCitjbGFzcyBJREJEYXRhYmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPElEQkRh
dGFiYXNlPiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aERh
dGEsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPElEQkRhdGFiYXNlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQ
dHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNh
bGxiYWNrcz4pOwogICAgIH5JREJEYXRhYmFzZSgpOwpAQCAtODQsOCArODUsOCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IE9WRVJSSURFOwog
CiAgICAgLy8gRXZlbnRUYXJnZXQKLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2
ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CisgICAgdmlydHVhbCBFdmVu
dFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IE9WRVJSSURFIEZJ
TkFMIHsgcmV0dXJuIElEQkRhdGFiYXNlRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CisgICAg
dmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
Y29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7IH0KIAogICAgIGJvb2wgaXNDbG9zZVBlbmRpbmcoKSBjb25zdCB7IHJl
dHVybiBtX2Nsb3NlUGVuZGluZzsgfQogICAgIHZvaWQgZm9yY2VDbG9zZSgpOwpAQCAtMTE1LDEw
ICsxMTYsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7CiAK
ICAgICAvLyBFdmVudFRhcmdldAotICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9W
RVJSSURFIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9W
RVJSSURFIHsgZGVyZWYoKTsgfQotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRh
cmdldERhdGEoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSYgZW5zdXJl
RXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFy
Z2V0KCkgT1ZFUlJJREUgRklOQUwgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2
ZW50VGFyZ2V0KCkgT1ZFUlJJREUgRklOQUwgeyBkZXJlZigpOyB9CiAKICAgICB2b2lkIGNsb3Nl
Q29ubmVjdGlvbigpOwogCkBAIC0xMzEsOCArMTMwLDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
Y2xvc2VQZW5kaW5nOwogICAgIGJvb2wgbV9jb250ZXh0U3RvcHBlZDsKIAotICAgIEV2ZW50VGFy
Z2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKLQogICAgIC8vIEtlZXAgdHJhY2sgb2YgdGhlIHZl
cnNpb25jaGFuZ2UgZXZlbnRzIHdhaXRpbmcgdG8gYmUgZmlyZWQgb24gdGhpcwogICAgIC8vIGRh
dGFiYXNlIHNvIHRoYXQgd2UgY2FuIGNhbmNlbCB0aGVtIGlmIHRoZSBkYXRhYmFzZSBjbG9zZXMu
CiAgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPiBtX2VucXVldWVkRXZlbnRzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAppbmRleCA4MDAwZGY4
Li40N2Y1NWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJS
ZXF1ZXN0LmNwcApAQCAtNDM5LDExICs0MzksNiBAQCBFdmVudFRhcmdldEludGVyZmFjZSBJREJS
ZXF1ZXN0OjpldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0CiAgICAgcmV0dXJuIElEQlJlcXVl
c3RFdmVudFRhcmdldEludGVyZmFjZVR5cGU7CiB9CiAKLVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IElEQlJlcXVlc3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAotewotICAgIHJldHVy
biBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLX0KLQogYm9vbCBJ
REJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogewogICAg
IElEQl9UUkFDRSgiSURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudCIpOwpAQCAtNTU4LDE2ICs1NTMs
NiBAQCB2b2lkIElEQlJlcXVlc3Q6OmVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVu
dCkKICAgICAgICAgbV9lbnF1ZXVlZEV2ZW50cy5hcHBlbmQoZXZlbnQpOwogfQogCi1FdmVudFRh
cmdldERhdGEqIElEQlJlcXVlc3Q6OmV2ZW50VGFyZ2V0RGF0YSgpCi17Ci0gICAgcmV0dXJuICZt
X2V2ZW50VGFyZ2V0RGF0YTsKLX0KLQotRXZlbnRUYXJnZXREYXRhJiBJREJSZXF1ZXN0OjplbnN1
cmVFdmVudFRhcmdldERhdGEoKQotewotICAgIHJldHVybiBtX2V2ZW50VGFyZ2V0RGF0YTsKLX0K
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAppbmRleCA5YzE5N2Y4Li4yYmJiYzM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCkBAIC01MCw3
ICs1MCw3IEBAIGNsYXNzIElEQlRyYW5zYWN0aW9uOwogCiB0eXBlZGVmIGludCBFeGNlcHRpb25D
b2RlOwogCi1jbGFzcyBJREJSZXF1ZXN0IDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGlj
IElEQkNhbGxiYWNrcywgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0
IHsKK2NsYXNzIElEQlJlcXVlc3QgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgSURC
Q2FsbGJhY2tzLCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoRGF0YSwgcHVibGljIEFjdGl2ZURPTU9i
amVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gY3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBJREJU
cmFuc2FjdGlvbiopOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwgSURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSwgSURCVHJhbnNhY3Rpb24qKTsKQEAgLTk4
LDkgKzk4LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHko
KSBjb25zdCBPVkVSUklERTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCBFdmVu
dFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0OwotICAgIHZpcnR1
YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0
OwotICAgIHZpcnR1YWwgdm9pZCB1bmNhdWdodEV4Y2VwdGlvbkluRXZlbnRIYW5kbGVyKCk7Cisg
ICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIEFjdGl2ZURP
TU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CisgICAgdmlydHVhbCB2b2lkIHVu
Y2F1Z2h0RXhjZXB0aW9uSW5FdmVudEhhbmRsZXIoKSBPVkVSUklERSBGSU5BTDsKIAogICAgIHVz
aW5nIEV2ZW50VGFyZ2V0OjpkaXNwYXRjaEV2ZW50OwogICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRj
aEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KSBPVkVSUklERTsKQEAgLTEzNSwxMCArMTM1LDggQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIE9WRVJSSURFOwogCiAgICAgLy8gRXZl
bnRUYXJnZXQKLSAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IHJl
ZigpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IGRl
cmVmKCk7IH0KLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEmIGVuc3VyZUV2ZW50VGFyZ2V0
RGF0YSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJS
SURFIEZJTkFMIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgp
IE9WRVJSSURFIEZJTkFMIHsgZGVyZWYoKTsgfQogCiAgICAgUGFzc1JlZlB0cjxJREJDdXJzb3I+
IGdldFJlc3VsdEN1cnNvcigpOwogICAgIHZvaWQgc2V0UmVzdWx0Q3Vyc29yKFBhc3NSZWZQdHI8
SURCQ3Vyc29yPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFy
eUtleSwgY29uc3QgU2NyaXB0VmFsdWUmKTsKQEAgLTE2MCw3ICsxNTgsNiBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9kaWRGaXJlVXBncmFkZU5lZWRlZEV2ZW50OwogICAgIGJvb2wgbV9wcmV2ZW50
UHJvcGFnYXRpb247CiAKLSAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CiAg
ICAgRE9NUmVxdWVzdFN0YXRlIG1fcmVxdWVzdFN0YXRlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IGZhODQ1
OWUuLjAwYmRhNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTM2OCwxNiArMzY4LDYgQEAgY29uc3QgQXRvbWljU3Ry
aW5nJiBJREJUcmFuc2FjdGlvbjo6bW9kZVRvU3RyaW5nKEluZGV4ZWREQjo6VHJhbnNhY3Rpb25N
b2RlIG1vZGUKICAgICByZXR1cm4gSURCVHJhbnNhY3Rpb246Om1vZGVSZWFkT25seSgpOwogfQog
Ci1FdmVudFRhcmdldEludGVyZmFjZSBJREJUcmFuc2FjdGlvbjo6ZXZlbnRUYXJnZXRJbnRlcmZh
Y2UoKSBjb25zdAotewotICAgIHJldHVybiBJREJUcmFuc2FjdGlvbkV2ZW50VGFyZ2V0SW50ZXJm
YWNlVHlwZTsKLX0KLQotU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogSURCVHJhbnNhY3Rpb246OnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAotewotICAgIHJldHVybiBBY3RpdmVET01PYmpl
Y3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLX0KLQogYm9vbCBJREJUcmFuc2FjdGlvbjo6
ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKIHsKICAgICBJREJfVFJBQ0Uo
IklEQlRyYW5zYWN0aW9uOjpkaXNwYXRjaEV2ZW50Iik7CkBAIC00MzYsMTYgKzQyNiw2IEBAIHZv
aWQgSURCVHJhbnNhY3Rpb246OmVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkK
ICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmV2ZW50UXVldWUoKS5lbnF1ZXVlRXZlbnQo
ZXZlbnQpOwogfQogCi1FdmVudFRhcmdldERhdGEqIElEQlRyYW5zYWN0aW9uOjpldmVudFRhcmdl
dERhdGEoKQotewotICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7Ci19Ci0KLUV2ZW50VGFy
Z2V0RGF0YSYgSURCVHJhbnNhY3Rpb246OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCi17Ci0gICAg
cmV0dXJuIG1fZXZlbnRUYXJnZXREYXRhOwotfQotCiBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZh
Y2UqIElEQlRyYW5zYWN0aW9uOjpiYWNrZW5kREIoKSBjb25zdAogewogICAgIHJldHVybiBkYigp
LT5iYWNrZW5kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb24uaAppbmRleCA4ZjFkMmFiLi5iM2M3MmQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKQEAgLTUwLDcgKzUwLDgg
QEAgY2xhc3MgSURCT2JqZWN0U3RvcmU7CiBjbGFzcyBJREJPcGVuREJSZXF1ZXN0Owogc3RydWN0
IElEQk9iamVjdFN0b3JlTWV0YWRhdGE7CiAKLWNsYXNzIElEQlRyYW5zYWN0aW9uIDogcHVibGlj
IFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8SURCVHJhbnNhY3Rpb24+LCBwdWJs
aWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgeworLy8gRklYTUU6IFRoaXMg
Y2xhc3Mgc2hvdWxkIGJlIG1hcmtlZCBGSU5BTCBvbmNlIDxodHRwOi8vd2Via2l0Lm9yZy9iLzEy
MTc0Nz4gaXMgZml4ZWQuCitjbGFzcyBJREJUcmFuc2FjdGlvbiA6IHB1YmxpYyBTY3JpcHRXcmFw
cGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPElEQlRyYW5zYWN0aW9uPiwgcHVibGljIEV2ZW50VGFy
Z2V0V2l0aERhdGEsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGludDY0X3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvYmplY3RTdG9yZU5hbWVzLCBJbmRl
eGVkREI6OlRyYW5zYWN0aW9uTW9kZSwgSURCRGF0YWJhc2UqKTsKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxJREJUcmFuc2FjdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBpbnQ2
NF90LCBJREJEYXRhYmFzZSosIElEQk9wZW5EQlJlcXVlc3QqLCBjb25zdCBJREJEYXRhYmFzZU1l
dGFkYXRhJiBwcmV2aW91c01ldGFkYXRhKTsKQEAgLTEwNiwxMSArMTA3LDExIEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgb25Db21wbGV0ZSgpOwogCiAgICAgLy8gRXZlbnRUYXJnZXQKLSAg
ICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29u
c3Q7Ci0gICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgY29uc3Q7CisgICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRh
cmdldEludGVyZmFjZSgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIElEQlRyYW5zYWN0
aW9uRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREUgRklOQUwg
eyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KIAog
ICAgIHVzaW5nIEV2ZW50VGFyZ2V0OjpkaXNwYXRjaEV2ZW50OwotICAgIHZpcnR1YWwgYm9vbCBk
aXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJv
b2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PikgT1ZFUlJJREUgRklOQUw7CiAKICAg
ICAvLyBBY3RpdmVET01PYmplY3QKICAgICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5
KCkgY29uc3QgT1ZFUlJJREU7CkBAIC0xMzIsMTAgKzEzMyw4IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIHN0b3AoKSBPVkVSUklERTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmly
dHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyByZWYoKTsgfQotICAgIHZpcnR1
YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyBkZXJlZigpOyB9Ci0gICAgdmly
dHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURFOwotICAgIHZp
cnR1YWwgRXZlbnRUYXJnZXREYXRhJiBlbnN1cmVFdmVudFRhcmdldERhdGEoKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7IHJlZigp
OyB9CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7
IGRlcmVmKCk7IH0KIAogICAgIGVudW0gU3RhdGUgewogICAgICAgICBJbmFjdGl2ZSwgLy8gQ3Jl
YXRlZCBvciBzdGFydGVkLCBidXQgbm90IGluIGFuIGV2ZW50IGNhbGxiYWNrCkBAIC0xNjgsOCAr
MTY3LDYgQEAgcHJpdmF0ZToKICAgICBJREJEYXRhYmFzZU1ldGFkYXRhIG1fcHJldmlvdXNNZXRh
ZGF0YTsKIAogICAgIEhhc2hTZXQ8SURCQ3Vyc29yKj4gbV9vcGVuQ3Vyc29yczsKLQotICAgIEV2
ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVk
aWFTb3VyY2VCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVk
aWFTb3VyY2VCYXNlLmNwcAppbmRleCBjYTZiNThlLi5mMTUwMGZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlQmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZUJhc2UuY3BwCkBA
IC0yOTYsMTYgKzI5Niw2IEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIE1lZGlhU291cmNlQmFz
ZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIEFjdGl2ZURPTU9i
amVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogfQogCi1FdmVudFRhcmdldERhdGEqIE1l
ZGlhU291cmNlQmFzZTo6ZXZlbnRUYXJnZXREYXRhKCkKLXsKLSAgICByZXR1cm4gJm1fZXZlbnRU
YXJnZXREYXRhOwotfQotCi1FdmVudFRhcmdldERhdGEmIE1lZGlhU291cmNlQmFzZTo6ZW5zdXJl
RXZlbnRUYXJnZXREYXRhKCkKLXsKLSAgICByZXR1cm4gbV9ldmVudFRhcmdldERhdGE7Ci19Ci0K
IFVSTFJlZ2lzdHJ5JiBNZWRpYVNvdXJjZUJhc2U6OnJlZ2lzdHJ5KCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gTWVkaWFTb3VyY2VSZWdpc3RyeTo6cmVnaXN0cnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VCYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlQmFzZS5oCmluZGV4IDFiOThh
MTMuLmY4YjQ5ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvTWVkaWFTb3VyY2VCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9NZWRpYVNvdXJjZUJhc2UuaApAQCAtNDcsNyArNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEdlbmVyaWNFdmVudFF1ZXVlOwogCi1jbGFzcyBNZWRpYVNvdXJjZUJhc2Ug
OiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVNvdXJjZUJhc2U+LCBwdWJsaWMgSFRNTE1lZGlhU291
cmNlLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRUYXJnZXQgeworY2xhc3Mg
TWVkaWFTb3VyY2VCYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTb3VyY2VCYXNlPiwgcHVi
bGljIEhUTUxNZWRpYVNvdXJjZSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50
VGFyZ2V0V2l0aERhdGEgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcm
IG9wZW5LZXl3b3JkKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgY2xvc2VkS2V5
d29yZCgpOwpAQCAtODEsMTEgKzgxLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdG9w
KCkgT1ZFUlJJREU7CiAKICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKLSAgICB2aXJ0dWFs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEmIGVuc3VyZUV2ZW50VGFyZ2V0
RGF0YSgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJS
SURFIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJS
SURFIHsgZGVyZWYoKTsgfQorICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFIEZJTkFMOworICAgIHZpcnR1YWwg
dm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgcmVmKCk7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgZGVyZWYoKTsgfQog
CiAgICAgLy8gVVJMUmVnaXN0cmFibGUgaW50ZXJmYWNlCiAgICAgdmlydHVhbCBVUkxSZWdpc3Ry
eSYgcmVnaXN0cnkoKSBjb25zdCBPVkVSUklERTsKQEAgLTEwNSw3ICsxMDMsNiBAQCBwcm90ZWN0
ZWQ6CiAKIHByaXZhdGU6CiAgICAgT3duUHRyPE1lZGlhU291cmNlUHJpdmF0ZT4gbV9wcml2YXRl
OwotICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKICAgICBBdG9taWNTdHJp
bmcgbV9yZWFkeVN0YXRlOwogICAgIEdlbmVyaWNFdmVudFF1ZXVlIG1fYXN5bmNFdmVudFF1ZXVl
OwogICAgIGJvb2wgbV9hdHRhY2hlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAppbmRleCA3ZmI0Y2YyLi4zY2E4NzJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIu
Y3BwCkBAIC0yMDksMjYgKzIwOSw2IEBAIHZvaWQgU291cmNlQnVmZmVyOjpzdG9wKCkKICAgICBt
X2FwcGVuZEJ1ZmZlclRpbWVyLnN0b3AoKTsKIH0KIAotU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
U291cmNlQnVmZmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKLXsKLSAgICByZXR1
cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci19Ci0KLUV2ZW50
VGFyZ2V0SW50ZXJmYWNlIFNvdXJjZUJ1ZmZlcjo6ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25z
dAotewotICAgIHJldHVybiBTb3VyY2VCdWZmZXJFdmVudFRhcmdldEludGVyZmFjZVR5cGU7Ci19
Ci0KLUV2ZW50VGFyZ2V0RGF0YSogU291cmNlQnVmZmVyOjpldmVudFRhcmdldERhdGEoKQotewot
ICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7Ci19Ci0KLUV2ZW50VGFyZ2V0RGF0YSYgU291
cmNlQnVmZmVyOjplbnN1cmVFdmVudFRhcmdldERhdGEoKQotewotICAgIHJldHVybiBtX2V2ZW50
VGFyZ2V0RGF0YTsKLX0KLQogYm9vbCBTb3VyY2VCdWZmZXI6OmlzUmVtb3ZlZCgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuICFtX3NvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCmluZGV4IDFkZDc5MzYuLjkyMGM1MjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaApAQCAt
NDksNyArNDksOCBAQCBjbGFzcyBNZWRpYVNvdXJjZTsKIGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZh
dGU7CiBjbGFzcyBUaW1lUmFuZ2VzOwogCi1jbGFzcyBTb3VyY2VCdWZmZXIgOiBwdWJsaWMgUmVm
Q291bnRlZDxTb3VyY2VCdWZmZXI+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZl
bnRUYXJnZXQsIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUgeworLy8gRklYTUU6IFRoaXMgY2xhc3Mg
c2hvdWxkIGJlIG1hcmtlZCBGSU5BTCBvbmNlIDxodHRwOi8vd2Via2l0Lm9yZy9iLzEyMTc0Nz4g
aXMgZml4ZWQuCitjbGFzcyBTb3VyY2VCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTb3VyY2VC
dWZmZXI+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoRGF0
YSwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U291cmNlQnVmZmVyPiBjcmVhdGUoUGFzc093blB0cjxTb3VyY2VCdWZmZXJQcml2YXRlPiwg
TWVkaWFTb3VyY2UqKTsKIApAQCAtNzIsMTggKzczLDE2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgc3RvcCgpIE9WRVJSSURFOwogCiAgICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCi0g
ICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVu
dFRhcmdldEludGVyZmFjZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFIEZJ
TkFMIHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9
CisgICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgp
IGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIFNvdXJjZUJ1ZmZlckV2ZW50VGFyZ2V0SW50
ZXJmYWNlVHlwZTsgfQogCiAgICAgdXNpbmcgUmVmQ291bnRlZDxTb3VyY2VCdWZmZXI+OjpyZWY7
CiAgICAgdXNpbmcgUmVmQ291bnRlZDxTb3VyY2VCdWZmZXI+OjpkZXJlZjsKIAogcHJvdGVjdGVk
OgogICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRE
YXRhKiBldmVudFRhcmdldERhdGEoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0
RGF0YSYgZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lk
IHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyByZWYoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBk
ZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyBkZXJlZigpOyB9CisgICAgdmlydHVhbCB2b2lk
IHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgRklOQUwgeyByZWYoKTsgfQorICAgIHZpcnR1YWwg
dm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgRklOQUwgeyBkZXJlZigpOyB9CiAKIHBy
aXZhdGU6CiAgICAgU291cmNlQnVmZmVyKFBhc3NPd25QdHI8U291cmNlQnVmZmVyUHJpdmF0ZT4s
IE1lZGlhU291cmNlKik7CkBAIC05Nyw3ICs5Niw2IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFNv
dXJjZUJ1ZmZlclByaXZhdGU+IG1fcHJpdmF0ZTsKICAgICBNZWRpYVNvdXJjZSogbV9zb3VyY2U7
CiAgICAgR2VuZXJpY0V2ZW50UXVldWUgbV9hc3luY0V2ZW50UXVldWU7Ci0gICAgRXZlbnRUYXJn
ZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwogCiAgICAgYm9vbCBtX3VwZGF0aW5nOwogICAgIGRv
dWJsZSBtX3RpbWVzdGFtcE9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuY3BwCmluZGV4IGQyNThhMGYuLjJkZDdi
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNl
QnVmZmVyTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9T
b3VyY2VCdWZmZXJMaXN0LmNwcApAQCAtNzgsMjUgKzc4LDYgQEAgdm9pZCBTb3VyY2VCdWZmZXJM
aXN0OjpzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKQogICAgIG1f
YXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChldmVudC5yZWxlYXNlKCkpOwogfQogCi1FdmVu
dFRhcmdldEludGVyZmFjZSBTb3VyY2VCdWZmZXJMaXN0OjpldmVudFRhcmdldEludGVyZmFjZSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIFNvdXJjZUJ1ZmZlckxpc3RFdmVudFRhcmdldEludGVyZmFj
ZVR5cGU7Ci19Ci0KLVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFNvdXJjZUJ1ZmZlckxpc3Q6OnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAotewotICAgIHJldHVybiBtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ7Ci19Ci0KLUV2ZW50VGFyZ2V0RGF0YSogU291cmNlQnVmZmVyTGlzdDo6ZXZl
bnRUYXJnZXREYXRhKCkKLXsKLSAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOwotfQotCi1F
dmVudFRhcmdldERhdGEmIFNvdXJjZUJ1ZmZlckxpc3Q6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgp
Ci17Ci0gICAgcmV0dXJuIG1fZXZlbnRUYXJnZXREYXRhOwotfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2Uv
U291cmNlQnVmZmVyTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9T
b3VyY2VCdWZmZXJMaXN0LmgKaW5kZXggODAxMjMyNC4uYzhkMzljYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0LmgKQEAg
LTQzLDcgKzQzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTb3VyY2VCdWZmZXI7
CiAKLWNsYXNzIFNvdXJjZUJ1ZmZlckxpc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxTb3VyY2VCdWZm
ZXJMaXN0PiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIEV2ZW50VGFyZ2V0IHsKKy8v
IEZJWE1FOiBUaGlzIGNsYXNzIHNob3VsZCBiZSBtYXJrZWQgRklOQUwgb25jZSA8aHR0cDovL3dl
YmtpdC5vcmcvYi8xMjE3NDc+IGlzIGZpeGVkLgorY2xhc3MgU291cmNlQnVmZmVyTGlzdCA6IHB1
YmxpYyBSZWZDb3VudGVkPFNvdXJjZUJ1ZmZlckxpc3Q+LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxl
LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoRGF0YSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U291cmNlQnVmZmVyTGlzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQpCiAgICAgewpAQCAtNjAsMjUgKzYxLDIwIEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFy
KCk7CiAKICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKLSAgICB2aXJ0dWFsIEV2ZW50VGFy
Z2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRh
cmdldEludGVyZmFjZSgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIFNvdXJjZUJ1ZmZl
ckxpc3RFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KKyAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERSBGSU5B
TCB7IHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7IH0KIAogICAgIHVzaW5nIFJlZkNv
dW50ZWQ8U291cmNlQnVmZmVyTGlzdD46OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkPFNvdXJj
ZUJ1ZmZlckxpc3Q+OjpkZXJlZjsKIAotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgRXZlbnRUYXJn
ZXREYXRhKiBldmVudFRhcmdldERhdGEoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIEV2ZW50VGFy
Z2V0RGF0YSYgZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREU7Ci0KIHByaXZhdGU6CiAg
ICAgU291cmNlQnVmZmVyTGlzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKICAgICB2b2lk
IHNjaGVkdWxlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
cmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IHJlZigpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRl
cmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IGRlcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
cmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7IHJlZigpOyB9CisgICAgdmlydHVhbCB2
b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7IGRlcmVmKCk7IH0KIAotICAg
IEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKICAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAgICAgR2VuZXJpY0V2ZW50UXVldWUg
bV9hc3luY0V2ZW50UXVldWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvV2ViS2l0U291cmNlQnVmZmVyTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc291cmNlL1dlYktpdFNvdXJjZUJ1ZmZlckxpc3QuY3BwCmluZGV4IDA3YjZm
YWUuLjM1ZjFkOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvV2ViS2l0U291cmNlQnVmZmVyTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9XZWJLaXRTb3VyY2VCdWZmZXJMaXN0LmNwcApAQCAtOTMsMjYgKzkzLDYg
QEAgdm9pZCBXZWJLaXRTb3VyY2VCdWZmZXJMaXN0OjpjcmVhdGVBbmRGaXJlRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudE5hbWUpCiAgICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2
ZW50KGV2ZW50LnJlbGVhc2UoKSk7CiB9CiAKLUV2ZW50VGFyZ2V0SW50ZXJmYWNlIFdlYktpdFNv
dXJjZUJ1ZmZlckxpc3Q6OmV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gV2ViS2l0U291cmNlQnVmZmVyTGlzdEV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsKLX0KLQot
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogV2ViS2l0U291cmNlQnVmZmVyTGlzdDo6c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKLX0KLQotRXZlbnRUYXJnZXREYXRhKiBXZWJLaXRTb3VyY2VCdWZmZXJMaXN0OjpldmVu
dFRhcmdldERhdGEoKQotewotICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7Ci19Ci0KLUV2
ZW50VGFyZ2V0RGF0YSYgV2ViS2l0U291cmNlQnVmZmVyTGlzdDo6ZW5zdXJlRXZlbnRUYXJnZXRE
YXRhKCkKLXsKLSAgICByZXR1cm4gbV9ldmVudFRhcmdldERhdGE7Ci19Ci0KIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc291cmNlL1dlYktpdFNvdXJjZUJ1ZmZlckxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzb3VyY2UvV2ViS2l0U291cmNlQnVmZmVyTGlzdC5oCmluZGV4IDkxM2JkNTgu
LmM2YjMxM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2Uv
V2ViS2l0U291cmNlQnVmZmVyTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzb3VyY2UvV2ViS2l0U291cmNlQnVmZmVyTGlzdC5oCkBAIC00NCw3ICs0NCw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIFdlYktpdFNvdXJjZUJ1ZmZlcjsKIGNsYXNzIEdlbmVyaWNF
dmVudFF1ZXVlOwogCi1jbGFzcyBXZWJLaXRTb3VyY2VCdWZmZXJMaXN0IDogcHVibGljIFJlZkNv
dW50ZWQ8V2ViS2l0U291cmNlQnVmZmVyTGlzdD4sIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1
YmxpYyBFdmVudFRhcmdldCB7CisvLyBGSVhNRTogVGhpcyBjbGFzcyBzaG91bGQgYmUgbWFya2Vk
IEZJTkFMIG9uY2UgPGh0dHA6Ly93ZWJraXQub3JnL2IvMTIxNzQ3PiBpcyBmaXhlZC4KK2NsYXNz
IFdlYktpdFNvdXJjZUJ1ZmZlckxpc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJLaXRTb3VyY2VC
dWZmZXJMaXN0PiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIEV2ZW50VGFyZ2V0V2l0
aERhdGEgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYktpdFNvdXJjZUJ1ZmZl
ckxpc3Q+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIHsKQEAg
LTYwLDI1ICs2MSwyMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhcigpOwogCiAgICAgLy8gRXZl
bnRUYXJnZXQgaW50ZXJmYWNlCi0gICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVu
dFRhcmdldEludGVyZmFjZSgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBj
b25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBXZWJLaXRTb3VyY2VCdWZmZXJMaXN0RXZlbnRU
YXJnZXRJbnRlcmZhY2VUeXBlOyB9CisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4g
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OyB9CiAKICAgICB1c2luZyBSZWZDb3VudGVkPFdlYktp
dFNvdXJjZUJ1ZmZlckxpc3Q+OjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDxXZWJLaXRTb3Vy
Y2VCdWZmZXJMaXN0Pjo6ZGVyZWY7CiAKLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIEV2ZW50VGFy
Z2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBFdmVudFRh
cmdldERhdGEmIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURFOwotCiBwcml2YXRlOgog
ICAgIFdlYktpdFNvdXJjZUJ1ZmZlckxpc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCiAg
ICAgdm9pZCBjcmVhdGVBbmRGaXJlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJik7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IHJlZigpOyB9Ci0gICAgdmly
dHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IGRlcmVmKCk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7IHJlZigpOyB9Cisg
ICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7IGRlcmVm
KCk7IH0KIAotICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKICAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAgICAgR2VuZXJp
Y0V2ZW50UXVldWUgbV9hc3luY0V2ZW50UXVldWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKaW5kZXggOWRlY2E0NS4uMWFiMjRm
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbS5jcHAKQEAgLTI1NywyNiArMjU3LDYgQEAgdm9pZCBNZWRpYVN0cmVhbTo6Y29udGV4dERl
c3Ryb3llZCgpCiAgICAgbV9zdG9wcGVkID0gdHJ1ZTsKIH0KIAotRXZlbnRUYXJnZXRJbnRlcmZh
Y2UgTWVkaWFTdHJlYW06OmV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gTWVkaWFTdHJlYW1FdmVudFRhcmdldEludGVyZmFjZVR5cGU7Ci19Ci0KLVNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIE1lZGlhU3RyZWFtOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QK
LXsKLSAgICByZXR1cm4gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKLX0KLQotRXZlbnRUYXJnZXREYXRhKiBNZWRpYVN0cmVhbTo6ZXZlbnRUYXJn
ZXREYXRhKCkKLXsKLSAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOwotfQotCi1FdmVudFRh
cmdldERhdGEmIE1lZGlhU3RyZWFtOjplbnN1cmVFdmVudFRhcmdldERhdGEoKQotewotICAgIHJl
dHVybiBtX2V2ZW50VGFyZ2V0RGF0YTsKLX0KLQogdm9pZCBNZWRpYVN0cmVhbTo6YWRkUmVtb3Rl
VHJhY2soTWVkaWFTdHJlYW1Db21wb25lbnQqIGNvbXBvbmVudCkKIHsKICAgICBBU1NFUlQoY29t
cG9uZW50ICYmICFjb21wb25lbnQtPnN0cmVhbSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaAppbmRleCA4YWQwMmJjLi5lMDgwZDE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5o
CkBAIC00MSw3ICs0MSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgTWVkaWFT
dHJlYW0gOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVN0cmVhbT4sIHB1YmxpYyBVUkxSZWdpc3Ry
YWJsZSwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIE1lZGlhU3RyZWFtRGVzY3JpcHRv
ckNsaWVudCwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2Jz
ZXJ2ZXIgeworLy8gRklYTUU6IFRoaXMgY2xhc3Mgc2hvdWxkIGJlIG1hcmtlZCBGSU5BTCBvbmNl
IDxodHRwOi8vd2Via2l0Lm9yZy9iLzEyMTc0Nz4gaXMgZml4ZWQuCitjbGFzcyBNZWRpYVN0cmVh
bSA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtPiwgcHVibGljIFVSTFJlZ2lzdHJhYmxl
LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgTWVkaWFTdHJlYW1EZXNjcmlwdG9yQ2xp
ZW50LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoRGF0YSwgcHVibGljIENvbnRleHREZXN0cnVjdGlv
bk9ic2VydmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4g
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxN
ZWRpYVN0cmVhbT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtPik7CkBAIC03Miw4ICs3Myw4IEBAIHB1YmxpYzoKICAgICBNZWRpYVN0cmVhbURl
c2NyaXB0b3IqIGRlc2NyaXB0b3IoKSBjb25zdCB7IHJldHVybiBtX2Rlc2NyaXB0b3IuZ2V0KCk7
IH0KIAogICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFj
ZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJS
SURFOworICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZh
Y2UoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBNZWRpYVN0cmVhbUV2ZW50VGFyZ2V0
SW50ZXJmYWNlVHlwZTsgfQorICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIENvbnRl
eHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KIAogICAg
IHVzaW5nIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW0+OjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRl
ZDxNZWRpYVN0cmVhbT46OmRlcmVmOwpAQCAtODQsMTcgKzg1LDEzIEBAIHB1YmxpYzoKIHByb3Rl
Y3RlZDoKICAgICBNZWRpYVN0cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0
cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+KTsKIAotICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmly
dHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURFOwotICAgIHZp
cnR1YWwgRXZlbnRUYXJnZXREYXRhJiBlbnN1cmVFdmVudFRhcmdldERhdGEoKSBPVkVSUklERTsK
LQogICAgIC8vIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyCiAgICAgdmlydHVhbCB2b2lkIGNv
bnRleHREZXN0cm95ZWQoKTsKIAogcHJpdmF0ZToKICAgICAvLyBFdmVudFRhcmdldAotICAgIHZp
cnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgcmVmKCk7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgZGVyZWYoKTsgfQorICAgIHZp
cnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgcmVmKCk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgZGVyZWYo
KTsgfQogCiAgICAgLy8gTWVkaWFTdHJlYW1EZXNjcmlwdG9yQ2xpZW50CiAgICAgdmlydHVhbCB2
b2lkIGFkZFJlbW90ZVRyYWNrKE1lZGlhU3RyZWFtQ29tcG9uZW50KikgT1ZFUlJJREU7CkBAIC0x
MDUsOCArMTAyLDYgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9zdG9wcGVkOwogCi0gICAgRXZl
bnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwotCiAgICAgTWVkaWFTdHJlYW1UcmFja1Zl
Y3RvciBtX2F1ZGlvVHJhY2tzOwogICAgIE1lZGlhU3RyZWFtVHJhY2tWZWN0b3IgbV92aWRlb1Ry
YWNrczsKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiBtX2Rlc2NyaXB0b3I7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bVRyYWNrLmNwcAppbmRleCBjNmIzOGFmLi40MDMwZDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKQEAgLTE3
NCwyNiArMTc0LDYgQEAgdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpzdG9wKCkKICAgICBtX3N0b3Bw
ZWQgPSB0cnVlOwogfQogCi1FdmVudFRhcmdldEludGVyZmFjZSBNZWRpYVN0cmVhbVRyYWNrOjpl
dmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIE1lZGlhU3RyZWFtVHJh
Y2tFdmVudFRhcmdldEludGVyZmFjZVR5cGU7Ci19Ci0KLVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IE1lZGlhU3RyZWFtVHJhY2s6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAotewotICAg
IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLX0KLQot
RXZlbnRUYXJnZXREYXRhKiBNZWRpYVN0cmVhbVRyYWNrOjpldmVudFRhcmdldERhdGEoKQotewot
ICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7Ci19Ci0KLUV2ZW50VGFyZ2V0RGF0YSYgTWVk
aWFTdHJlYW1UcmFjazo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkKLXsKLSAgICByZXR1cm4gbV9l
dmVudFRhcmdldERhdGE7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCmluZGV4IGMwZjVjYWQuLjg4NTBmOWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1UcmFjay5oCkBAIC00Myw3ICs0Myw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1l
ZGlhU3RyZWFtQ29tcG9uZW50OwogY2xhc3MgTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFj
azsKIAotY2xhc3MgTWVkaWFTdHJlYW1UcmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3Ry
ZWFtVHJhY2s+LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0
LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBNZWRpYVN0cmVhbVNvdXJjZTo6T2JzZXJ2ZXIg
eworLy8gRklYTUU6IFRoaXMgY2xhc3Mgc2hvdWxkIGJlIG1hcmtlZCBGSU5BTCBvbmNlIDxodHRw
Oi8vd2Via2l0Lm9yZy9iLzEyMTc0Nz4gaXMgZml4ZWQuCitjbGFzcyBNZWRpYVN0cmVhbVRyYWNr
IDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1UcmFjaz4sIHB1YmxpYyBTY3JpcHRXcmFw
cGFibGUsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhEYXRh
LCBwdWJsaWMgTWVkaWFTdHJlYW1Tb3VyY2U6Ok9ic2VydmVyIHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIE1lZGlhU3RyZWFtQ29tcG9uZW50Kik7CiAgICAgdmlydHVhbCB+TWVkaWFTdHJlYW1U
cmFjaygpOwpAQCAtNjksOCArNzAsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBlbmRlZCgpIGNvbnN0
OwogCiAgICAgLy8gRXZlbnRUYXJnZXQKLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNl
IGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFj
ZSgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIE1lZGlhU3RyZWFtVHJhY2tFdmVudFRh
cmdldEludGVyZmFjZVR5cGU7IH0KKyAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBB
Y3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogCiAgICAgLy8gQWN0
aXZlRE9NT2JqZWN0CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKSBPVkVSUklERTsKQEAgLTgyLDEx
ICs4Myw4IEBAIHByaXZhdGU6CiAgICAgTWVkaWFTdHJlYW1UcmFjayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgTWVkaWFTdHJlYW1Db21wb25lbnQqKTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0Ci0g
ICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhJiBlbnN1cmVFdmVudFRhcmdldERhdGEoKSBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IHJlZigp
OyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IGRlcmVm
KCk7IH0KLSAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CisgICAgdmlydHVh
bCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgRklOQUwgeyByZWYoKTsgfQorICAgIHZp
cnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgRklOQUwgeyBkZXJlZigpOyB9
CiAKICAgICAvLyBNZWRpYVN0cmVhbVNvdXJjZU9ic2VydmVyCiAgICAgdmlydHVhbCB2b2lkIHNv
dXJjZUNoYW5nZWRTdGF0ZSgpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5jcHAKaW5kZXggZjYwOTRlNi4uNDVlNGU5
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1G
U2VuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RU
TUZTZW5kZXIuY3BwCkBAIC0xMjgsMzIgKzEyOCwxMiBAQCB2b2lkIFJUQ0RUTUZTZW5kZXI6OmRp
ZFBsYXlUb25lKGNvbnN0IFN0cmluZyYgdG9uZSkKICAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQo
UlRDRFRNRlRvbmVDaGFuZ2VFdmVudDo6Y3JlYXRlKHRvbmUpKTsKIH0KIAotRXZlbnRUYXJnZXRJ
bnRlcmZhY2UgUlRDRFRNRlNlbmRlcjo6ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdAotewot
ICAgIHJldHVybiBSVENEVE1GU2VuZGVyRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOwotfQotCi1T
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBSVENEVE1GU2VuZGVyOjpzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7Ci19Ci0KIHZvaWQgUlRDRFRNRlNlbmRlcjo6c3RvcCgpCiB7CiAgICAgbV9z
dG9wcGVkID0gdHJ1ZTsKICAgICBtX2hhbmRsZXItPnNldENsaWVudCgwKTsKIH0KIAotRXZlbnRU
YXJnZXREYXRhKiBSVENEVE1GU2VuZGVyOjpldmVudFRhcmdldERhdGEoKQotewotICAgIHJldHVy
biAmbV9ldmVudFRhcmdldERhdGE7Ci19Ci0KLUV2ZW50VGFyZ2V0RGF0YSYgUlRDRFRNRlNlbmRl
cjo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkKLXsKLSAgICByZXR1cm4gbV9ldmVudFRhcmdldERh
dGE7Ci19Ci0KIHZvaWQgUlRDRFRNRlNlbmRlcjo6c2NoZWR1bGVEaXNwYXRjaEV2ZW50KFBhc3NS
ZWZQdHI8RXZlbnQ+IGV2ZW50KQogewogICAgIG1fc2NoZWR1bGVkRXZlbnRzLmFwcGVuZChldmVu
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RU
TUZTZW5kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNl
bmRlci5oCmluZGV4IDdiZGFkYzYuLjJlNDIyNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5oCkBAIC00MSw3ICs0MSw4IEBAIGNs
YXNzIE1lZGlhU3RyZWFtVHJhY2s7CiBjbGFzcyBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI7CiBj
bGFzcyBSVENEVE1GU2VuZGVySGFuZGxlcjsKIAotY2xhc3MgUlRDRFRNRlNlbmRlciA6IHB1Ymxp
YyBSZWZDb3VudGVkPFJUQ0RUTUZTZW5kZXI+LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJs
aWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBSVENEVE1GU2VuZGVySGFuZGxlckNsaWVudCwgcHVibGlj
IEFjdGl2ZURPTU9iamVjdCB7CisvLyBGSVhNRTogVGhpcyBjbGFzcyBzaG91bGQgYmUgbWFya2Vk
IEZJTkFMIG9uY2UgPGh0dHA6Ly93ZWJraXQub3JnL2IvMTIxNzQ3PiBpcyBmaXhlZC4KK2NsYXNz
IFJUQ0RUTUZTZW5kZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxSVENEVE1GU2VuZGVyPiwgcHVibGlj
IFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aERhdGEsIHB1YmxpYyBSVENE
VE1GU2VuZGVySGFuZGxlckNsaWVudCwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UlRDRFRNRlNlbmRlcj4gY3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqLCBQYXNzUmVmUHRyPE1lZGlh
U3RyZWFtVHJhY2s+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgflJUQ0RUTUZTZW5kZXIoKTsKQEAg
LTU5LDggKzYwLDggQEAgcHVibGljOgogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVO
RVIodG9uZWNoYW5nZSk7CiAKICAgICAvLyBFdmVudFRhcmdldAotICAgIHZpcnR1YWwgRXZlbnRU
YXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50
VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gUlRDRFRNRlNl
bmRlckV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQorICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFIEZJTkFM
IHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAK
ICAgICAvLyBBY3RpdmVET01PYmplY3QKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIE9WRVJSSURF
OwpAQCAtNzUsMTEgKzc2LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHNjaGVkdWxlZEV2ZW50VGlt
ZXJGaXJlZChUaW1lcjxSVENEVE1GU2VuZGVyPiopOwogCiAgICAgLy8gRXZlbnRUYXJnZXQKLSAg
ICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEmIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpIE9WRVJS
SURFOwotICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgcmVmKCk7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgZGVyZWYo
KTsgfQotICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7IHJlZigpOyB9CisgICAgdmly
dHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7IGRlcmVmKCk7IH0K
IAogICAgIC8vIFJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFBsYXlUb25lKGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcAppbmRleCA3ZGVjODEx
Li45N2M2NDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RhdGFDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0RhdGFDaGFubmVsLmNwcApAQCAtMjg1LDE2ICsyODUsNiBAQCB2b2lkIFJUQ0RhdGFD
aGFubmVsOjpkaWREZXRlY3RFcnJvcigpCiAgICAgc2NoZWR1bGVEaXNwYXRjaEV2ZW50KEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwogfQogCi1F
dmVudFRhcmdldEludGVyZmFjZSBSVENEYXRhQ2hhbm5lbDo6ZXZlbnRUYXJnZXRJbnRlcmZhY2Uo
KSBjb25zdAotewotICAgIHJldHVybiBSVENEYXRhQ2hhbm5lbEV2ZW50VGFyZ2V0SW50ZXJmYWNl
VHlwZTsKLX0KLQotU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogUlRDRGF0YUNoYW5uZWw6OnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAotewotICAgIHJldHVybiBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7Ci19Ci0KIHZvaWQgUlRDRGF0YUNoYW5uZWw6OnN0b3AoKQogewogICAgIG1fc3Rv
cHBlZCA9IHRydWU7CkBAIC0zMDMsMTYgKzI5Myw2IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWw6OnN0
b3AoKQogICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IDA7CiB9CiAKLUV2ZW50VGFyZ2V0
RGF0YSogUlRDRGF0YUNoYW5uZWw6OmV2ZW50VGFyZ2V0RGF0YSgpCi17Ci0gICAgcmV0dXJuICZt
X2V2ZW50VGFyZ2V0RGF0YTsKLX0KLQotRXZlbnRUYXJnZXREYXRhJiBSVENEYXRhQ2hhbm5lbDo6
ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkKLXsKLSAgICByZXR1cm4gbV9ldmVudFRhcmdldERhdGE7
Ci19Ci0KIHZvaWQgUlRDRGF0YUNoYW5uZWw6OnNjaGVkdWxlRGlzcGF0Y2hFdmVudChQYXNzUmVm
UHRyPEV2ZW50PiBldmVudCkKIHsKICAgICBtX3NjaGVkdWxlZEV2ZW50cy5hcHBlbmQoZXZlbnQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbC5oCmluZGV4IDMwNDkxZDYuLjdlNWM0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgKQEAgLTQ1LDcgKzQ1LDggQEAg
Y2xhc3MgRGljdGlvbmFyeTsKIGNsYXNzIFJUQ0RhdGFDaGFubmVsSGFuZGxlcjsKIGNsYXNzIFJU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlcjsKIAotY2xhc3MgUlRDRGF0YUNoYW5uZWwgOiBwdWJsaWMg
UmVmQ291bnRlZDxSVENEYXRhQ2hhbm5lbD4sIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1Ymxp
YyBFdmVudFRhcmdldCwgcHVibGljIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCB7CisvLyBG
SVhNRTogVGhpcyBjbGFzcyBzaG91bGQgYmUgbWFya2VkIEZJTkFMIG9uY2UgPGh0dHA6Ly93ZWJr
aXQub3JnL2IvMTIxNzQ3PiBpcyBmaXhlZC4KK2NsYXNzIFJUQ0RhdGFDaGFubmVsIDogcHVibGlj
IFJlZkNvdW50ZWQ8UlRDRGF0YUNoYW5uZWw+LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJs
aWMgRXZlbnRUYXJnZXRXaXRoRGF0YSwgcHVibGljIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVu
dCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWw+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc093blB0cjxSVENEYXRhQ2hhbm5lbEhhbmRs
ZXI+KTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbD4gY3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqLCBjb25zdCBTdHJp
bmcmICwgY29uc3QgRGljdGlvbmFyeSYsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTc5LDggKzgwLDgg
QEAgcHVibGljOgogICAgIHZvaWQgc3RvcCgpOwogCiAgICAgLy8gRXZlbnRUYXJnZXQKLSAgICB2
aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBFdmVudFRhcmdldElu
dGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0
dXJuIFJUQ0RhdGFDaGFubmVsRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CisgICAgdmlydHVh
bCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Qg
T1ZFUlJJREUgRklOQUwgeyByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OyB9CiAKICAg
ICB1c2luZyBSZWZDb3VudGVkPFJUQ0RhdGFDaGFubmVsPjo6cmVmOwogICAgIHVzaW5nIFJlZkNv
dW50ZWQ8UlRDRGF0YUNoYW5uZWw+OjpkZXJlZjsKQEAgLTkyLDEyICs5Myw5IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzY2hlZHVsZWRFdmVudFRpbWVyRmlyZWQoVGltZXI8UlRDRGF0YUNoYW5uZWw+
Kik7CiAKICAgICAvLyBFdmVudFRhcmdldAotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBl
dmVudFRhcmdldERhdGEoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSYg
ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHJlZkV2
ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyByZWYoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2
ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyBkZXJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIHJlZkV2
ZW50VGFyZ2V0KCkgT1ZFUlJJREUgRklOQUwgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBk
ZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgRklOQUwgeyBkZXJlZigpOyB9CiAKLSAgICBFdmVu
dFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCiAgICAgLy8gUlRDRGF0YUNoYW5uZWxIYW5k
bGVyQ2xpZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1BlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCmluZGV4IDlhYjE4NDguLjg1ZDRhYTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5l
Y3Rpb24uY3BwCkBAIC01ODUsMTYgKzU4NSw2IEBAIHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OmRp
ZEFkZFJlbW90ZURhdGFDaGFubmVsKFBhc3NPd25QdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyCiAg
ICAgc2NoZWR1bGVEaXNwYXRjaEV2ZW50KFJUQ0RhdGFDaGFubmVsRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkuZGF0YWNoYW5uZWxFdmVudCwgZmFsc2UsIGZhbHNlLCBjaGFubmVsLnJlbGVhc2Uo
KSkpOwogfQogCi1FdmVudFRhcmdldEludGVyZmFjZSBSVENQZWVyQ29ubmVjdGlvbjo6ZXZlbnRU
YXJnZXRJbnRlcmZhY2UoKSBjb25zdAotewotICAgIHJldHVybiBSVENQZWVyQ29ubmVjdGlvbkV2
ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsKLX0KLQotU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogUlRD
UGVlckNvbm5lY3Rpb246OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAotewotICAgIHJl
dHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLX0KLQogdm9p
ZCBSVENQZWVyQ29ubmVjdGlvbjo6c3RvcCgpCiB7CiAgICAgaWYgKG1fc3RvcHBlZCkKQEAgLTYw
OSwxNiArNTk5LDYgQEAgdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6c3RvcCgpCiAgICAgICAgICgq
aSktPnN0b3AoKTsKIH0KIAotRXZlbnRUYXJnZXREYXRhKiBSVENQZWVyQ29ubmVjdGlvbjo6ZXZl
bnRUYXJnZXREYXRhKCkKLXsKLSAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOwotfQotCi1F
dmVudFRhcmdldERhdGEmIFJUQ1BlZXJDb25uZWN0aW9uOjplbnN1cmVFdmVudFRhcmdldERhdGEo
KQotewotICAgIHJldHVybiBtX2V2ZW50VGFyZ2V0RGF0YTsKLX0KLQogdm9pZCBSVENQZWVyQ29u
bmVjdGlvbjo6Y2hhbmdlU2lnbmFsaW5nU3RhdGUoU2lnbmFsaW5nU3RhdGUgc2lnbmFsaW5nU3Rh
dGUpCiB7CiAgICAgaWYgKG1fc2lnbmFsaW5nU3RhdGUgIT0gU2lnbmFsaW5nU3RhdGVDbG9zZWQg
JiYgbV9zaWduYWxpbmdTdGF0ZSAhPSBzaWduYWxpbmdTdGF0ZSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCmluZGV4
IDY1NDU2ODAuLjU0ZDc4YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKQEAgLTU4LDcgKzU4LDggQEAgY2xhc3Mg
UlRDU2Vzc2lvbkRlc2NyaXB0aW9uQ2FsbGJhY2s7CiBjbGFzcyBSVENTdGF0c0NhbGxiYWNrOwog
Y2xhc3MgVm9pZENhbGxiYWNrOwogCi1jbGFzcyBSVENQZWVyQ29ubmVjdGlvbiA6IHB1YmxpYyBS
ZWZDb3VudGVkPFJUQ1BlZXJDb25uZWN0aW9uPiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVi
bGljIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCwgcHVibGljIEV2ZW50VGFyZ2V0LCBw
dWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKKy8vIEZJWE1FOiBUaGlzIGNsYXNzIHNob3VsZCBiZSBt
YXJrZWQgRklOQUwgb25jZSA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMjE3NDc+IGlzIGZpeGVkLgor
Y2xhc3MgUlRDUGVlckNvbm5lY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxSVENQZWVyQ29ubmVj
dGlvbj4sIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXJDbGllbnQsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhEYXRhLCBwdWJsaWMgQWN0aXZlRE9N
T2JqZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSVENQZWVyQ29ubmVjdGlv
bj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEaWN0aW9uYXJ5JiBydGND
b25maWd1cmF0aW9uLCBjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYUNvbnN0cmFpbnRzLCBFeGNlcHRp
b25Db2RlJik7CiAgICAgflJUQ1BlZXJDb25uZWN0aW9uKCk7CkBAIC0xMjAsOCArMTIxLDggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRSZW1vdGVEYXRhQ2hhbm5lbChQYXNzT3du
UHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4pIE9WRVJSSURFOwogCiAgICAgLy8gRXZlbnRUYXJn
ZXQKLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNl
KCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBFdmVu
dFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IE9WRVJSSURFIEZJ
TkFMIHsgcmV0dXJuIFJUQ1BlZXJDb25uZWN0aW9uRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9
CisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7IH0KIAogICAgIC8vIEFjdGl2ZURPTU9iamVjdAogICAgIHZp
cnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7CkBAIC0xMzgsMTEgKzEzOSw4IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBoYXNMb2NhbFN0cmVhbVdpdGhUcmFja0lkKGNvbnN0IFN0cmluZyYgdHJhY2tJ
ZCk7CiAKICAgICAvLyBFdmVudFRhcmdldCBpbXBsZW1lbnRhdGlvbi4KLSAgICB2aXJ0dWFsIEV2
ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBF
dmVudFRhcmdldERhdGEmIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURFOwotICAgIHZp
cnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgcmVmKCk7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgZGVyZWYoKTsgfQotICAgIEV2
ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVmRXZl
bnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7IHJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIGRl
cmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7IGRlcmVmKCk7IH0KIAogICAgIHZvaWQg
Y2hhbmdlU2lnbmFsaW5nU3RhdGUoU2lnbmFsaW5nU3RhdGUpOwogICAgIHZvaWQgY2hhbmdlSWNl
R2F0aGVyaW5nU3RhdGUoSWNlR2F0aGVyaW5nU3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAppbmRleCA1M2ZhNmYx
Li5hYWI1NjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uLmNwcApAQCAtMTMwLDExICsxMzAsNiBAQCBQYXNzUmVmUHRyPE5v
dGlmaWNhdGlvbj4gTm90aWZpY2F0aW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgYwogfQogI2VuZGlmCiAKLUV2ZW50VGFyZ2V0SW50ZXJmYWNlIE5vdGlmaWNhdGlv
bjo6ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdAotewotICAgIHJldHVybiBOb3RpZmljYXRp
b25FdmVudFRhcmdldEludGVyZmFjZVR5cGU7Ci19Ci0KIHZvaWQgTm90aWZpY2F0aW9uOjpzaG93
KCkgCiB7CiAgICAgLy8gcHJldmVudCBkb3VibGUtc2hvd2luZwpAQCAtMTY4LDE2ICsxNjMsNiBA
QCB2b2lkIE5vdGlmaWNhdGlvbjo6Y2xvc2UoKQogICAgIH0KIH0KIAotRXZlbnRUYXJnZXREYXRh
KiBOb3RpZmljYXRpb246OmV2ZW50VGFyZ2V0RGF0YSgpCi17Ci0gICAgcmV0dXJuICZtX2V2ZW50
VGFyZ2V0RGF0YTsKLX0KLQotRXZlbnRUYXJnZXREYXRhJiBOb3RpZmljYXRpb246OmVuc3VyZUV2
ZW50VGFyZ2V0RGF0YSgpCi17Ci0gICAgcmV0dXJuIG1fZXZlbnRUYXJnZXREYXRhOwotfQotCiB2
b2lkIE5vdGlmaWNhdGlvbjo6Y29udGV4dERlc3Ryb3llZCgpCiB7CiAgICAgQWN0aXZlRE9NT2Jq
ZWN0Ojpjb250ZXh0RGVzdHJveWVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKaW5kZXggYTlkYzYwMi4uZjFiMzdjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b24uaApAQCAtNjMsNyArNjMsOCBAQCBjbGFzcyBUaHJlYWRhYmxlTG9hZGVyOwogCiB0eXBlZGVm
IGludCBFeGNlcHRpb25Db2RlOwogCi1jbGFzcyBOb3RpZmljYXRpb24gOiBwdWJsaWMgUmVmQ291
bnRlZDxOb3RpZmljYXRpb24+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRU
YXJnZXQgeworLy8gRklYTUU6IFRoaXMgY2xhc3Mgc2hvdWxkIGJlIG1hcmtlZCBGSU5BTCBvbmNl
IDxodHRwOi8vd2Via2l0Lm9yZy9iLzEyMTc0Nz4gaXMgZml4ZWQuCitjbGFzcyBOb3RpZmljYXRp
b24gOiBwdWJsaWMgUmVmQ291bnRlZDxOb3RpZmljYXRpb24+LCBwdWJsaWMgQWN0aXZlRE9NT2Jq
ZWN0LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoRGF0YSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgTm90aWZpY2F0aW9uKCk7CkBAIC0xMjIsOCArMTIzLDggQEAg
cHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ8Tm90aWZpY2F0aW9uPjo6ZGVyZWY7CiAKICAg
ICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJm
YWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gQWN0
aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KKyAgICB2aXJ0dWFsIEV2
ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgT1ZFUlJJREUg
RklOQUwgeyByZXR1cm4gTm90aWZpY2F0aW9uRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9Cisg
ICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7IH0KIAogICAgIHZvaWQgc3RvcExvYWRpbmdJY29uKCk7CiAKQEAg
LTE1MiwxMCArMTUzLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ry
b3llZCgpIE9WRVJSSURFOwogCiAgICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCi0gICAgdmly
dHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyByZWYoKTsgfQotICAgIHZpcnR1
YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyBkZXJlZigpOyB9Ci0gICAgdmly
dHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURFOwotICAgIHZp
cnR1YWwgRXZlbnRUYXJnZXREYXRhJiBlbnN1cmVFdmVudFRhcmdldERhdGEoKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7IHJlZigp
OyB9CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7
IGRlcmVmKCk7IH0KIAogICAgIHZvaWQgc3RhcnRMb2FkaW5nSWNvbigpOwogICAgIHZvaWQgZmlu
aXNoTG9hZGluZ0ljb24oKTsKQEAgLTE4MSw4ICsxODAsNiBAQCBwcml2YXRlOgogICAgIE5vdGlm
aWNhdGlvblN0YXRlIG1fc3RhdGU7CiAKICAgICBSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBt
X25vdGlmaWNhdGlvbkNlbnRlcjsKLSAgICAKLSAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRh
cmdldERhdGE7CiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICBPd25QdHI8VGltZXI8
Tm90aWZpY2F0aW9uPiA+IG1fdGFza1RpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAKaW5kZXggMjkz
MDNjOC4uMTg2ZDQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwCkBAIC00NiwxNiArNDYsNiBAQCBT
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6On5TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoKQogewog
ICAgIG1fcGxhdGZvcm1VdHRlcmFuY2UtPnNldENsaWVudCgwKTsKIH0KLSAgICAKLVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVy
OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci19ICAgIAotICAgIAotRXZlbnRUYXJnZXRJbnRl
cmZhY2UgU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpldmVudFRhcmdldEludGVyZmFjZSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUV2ZW50VGFyZ2V0SW50
ZXJmYWNlVHlwZTsKLX0KIAogU3BlZWNoU3ludGhlc2lzVm9pY2UqIFNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZTo6dm9pY2UoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaAppbmRleCAzZDI1MDRjLi5i
OWViYzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaApAQCAtMzYsOCArMzYsOSBAQAogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLWNsYXNzIFNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZSA6IHB1YmxpYyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZUNsaWVudCwgcHVibGljIFJlZkNvdW50ZWQ8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiwg
cHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLCBwdWJsaWMgRXZlbnRUYXJnZXQgewor
CisvLyBGSVhNRTogVGhpcyBjbGFzcyBzaG91bGQgYmUgbWFya2VkIEZJTkFMIG9uY2UgPGh0dHA6
Ly93ZWJraXQub3JnL2IvMTIxNzQ3PiBpcyBmaXhlZC4KK2NsYXNzIFNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZSA6IHB1YmxpYyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUNsaWVudCwg
cHVibGljIFJlZkNvdW50ZWQ8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiwgcHVibGljIENvbnRl
eHREZXN0cnVjdGlvbk9ic2VydmVyLCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoRGF0YSB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYpOwogICAgIApAQCAtNzUs
NyArNzYsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDxTcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2U+OjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDxTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2U+OjpkZXJlZjsKIAotICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OworICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsg
cmV0dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7IH0KIAogICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiBwbGF0Zm9ybVV0
dGVyYW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2UuZ2V0KCk7IH0KIApA
QCAtODMsMTUgKzg0LDEwIEBAIHByaXZhdGU6CiAgICAgU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmKTsKICAgICBSZWZQdHI8UGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IG1fcGxhdGZvcm1VdHRlcmFuY2U7CiAgICAg
UmVmUHRyPFNwZWVjaFN5bnRoZXNpc1ZvaWNlPiBtX3ZvaWNlOwotICAgIAotICAgIC8vIEV2ZW50
VGFyZ2V0Ci0gICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwotCi0gICAgdmly
dHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IE9W
RVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgcmVm
KCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgZGVy
ZWYoKTsgfQotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKSBP
VkVSUklERSB7IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7IH0KLSAgICB2aXJ0dWFsIEV2ZW50
VGFyZ2V0RGF0YSYgZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREUgeyByZXR1cm4gbV9l
dmVudFRhcmdldERhdGE7IH0KKworICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZl
bnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBTcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2VFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7IHJlZigpOyB9CisgICAgdmly
dHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7IGRlcmVmKCk7IH0K
IH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggYmQ4YTc1Ny4uYTJlM2UyMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNw
cApAQCAtOTUwLDExICs5NTAsNiBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6cHJvY2Vzc0F1dG9tYXRp
Y1B1bGxOb2RlcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogICAgICAgICBtX3JlbmRlcmluZ0F1
dG9tYXRpY1B1bGxOb2Rlc1tpXS0+cHJvY2Vzc0lmTmVjZXNzYXJ5KGZyYW1lc1RvUHJvY2Vzcyk7
CiB9CiAKLUV2ZW50VGFyZ2V0SW50ZXJmYWNlIEF1ZGlvQ29udGV4dDo6ZXZlbnRUYXJnZXRJbnRl
cmZhY2UoKSBjb25zdAotewotICAgIHJldHVybiBBdWRpb0NvbnRleHRFdmVudFRhcmdldEludGVy
ZmFjZVR5cGU7Ci19Ci0KIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEF1ZGlvQ29udGV4dDo6c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faXNTdG9wU2NoZWR1
bGVkID8gMCA6IEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKaW5kZXggMWRi
OTZhMi4uZGI2OWY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5oCkBAIC03Myw3ICs3Myw3IEBAIGNsYXNzIFBlcmlvZGljV2F2ZTsKIC8vIEF1
ZGlvQ29udGV4dCBpcyB0aGUgY29ybmVyc3RvbmUgb2YgdGhlIHdlYiBhdWRpbyBBUEkgYW5kIGFs
bCBBdWRpb05vZGVzIGFyZSBjcmVhdGVkIGZyb20gaXQuCiAvLyBGb3IgdGhyZWFkIHNhZmV0eSBi
ZXR3ZWVuIHRoZSBhdWRpbyB0aHJlYWQgYW5kIHRoZSBtYWluIHRocmVhZCwgaXQgaGFzIGEgcmVu
ZGVyaW5nIGdyYXBoIGxvY2tpbmcgbWVjaGFuaXNtLiAKIAotY2xhc3MgQXVkaW9Db250ZXh0IDog
cHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEF1ZGlv
Q29udGV4dD4sIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIE1lZGlhQ2FuU3RhcnRMaXN0ZW5l
ciB7CitjbGFzcyBBdWRpb0NvbnRleHQgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8QXVkaW9Db250ZXh0PiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0
aERhdGEsIHB1YmxpYyBNZWRpYUNhblN0YXJ0TGlzdGVuZXIgewogcHVibGljOgogICAgIC8vIENy
ZWF0ZSBhbiBBdWRpb0NvbnRleHQgZm9yIHJlbmRlcmluZyB0byB0aGUgYXVkaW8gaGFyZHdhcmUu
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QXVkaW9Db250ZXh0PiBjcmVhdGUoRG9jdW1lbnQqLCBF
eGNlcHRpb25Db2RlJik7CkBAIC0yMzUsMTAgKzIzNSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJl
bW92ZU1hcmtlZFN1bW1pbmdKdW5jdGlvbihBdWRpb1N1bW1pbmdKdW5jdGlvbiopOwogCiAgICAg
Ly8gRXZlbnRUYXJnZXQKLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFy
Z2V0SW50ZXJmYWNlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBFdmVudFRhcmdl
dERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpIHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQot
ICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhJiBlbnN1cmVFdmVudFRhcmdldERhdGEoKSB7IHJl
dHVybiBtX2V2ZW50VGFyZ2V0RGF0YTsgfQorICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZh
Y2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBB
dWRpb0NvbnRleHRFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KKyAgICB2aXJ0dWFsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklE
RSBGSU5BTDsKIAogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY29tcGxldGUp
OwogCkBAIC0zNTQsNyArMzUyLDYgQEAgcHJpdmF0ZToKICAgICAvLyBFdmVudFRhcmdldAogICAg
IHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0KICAgICB2aXJ0dWFsIHZv
aWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQotICAgIEV2ZW50VGFyZ2V0RGF0YSBt
X2V2ZW50VGFyZ2V0RGF0YTsKIAogICAgIFJlZlB0cjxBdWRpb0J1ZmZlcj4gbV9yZW5kZXJUYXJn
ZXQ7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaApp
bmRleCAyYTAwZDYzLi44MDIyYjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Ob2RlLmgKQEAgLTUwLDcgKzUwLDcgQEAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29k
ZTsKIC8vIEFuIEF1ZGlvRGVzdGluYXRpb25Ob2RlIGhhcyBvbmUgaW5wdXQgYW5kIG5vIG91dHB1
dHMgYW5kIHJlcHJlc2VudHMgdGhlIGZpbmFsIGRlc3RpbmF0aW9uIHRvIHRoZSBhdWRpbyBoYXJk
d2FyZS4KIC8vIE1vc3QgcHJvY2Vzc2luZyBub2RlcyBzdWNoIGFzIGZpbHRlcnMgd2lsbCBoYXZl
IG9uZSBpbnB1dCBhbmQgb25lIG91dHB1dCwgYWx0aG91Z2ggbXVsdGlwbGUgaW5wdXRzIGFuZCBv
dXRwdXRzIGFyZSBwb3NzaWJsZS4KIAotY2xhc3MgQXVkaW9Ob2RlIDogcHVibGljIEV2ZW50VGFy
Z2V0IHsKK2NsYXNzIEF1ZGlvTm9kZSA6IHB1YmxpYyBFdmVudFRhcmdldFdpdGhEYXRhIHsKIHB1
YmxpYzoKICAgICBlbnVtIHsgUHJvY2Vzc2luZ1NpemVJbkZyYW1lcyA9IDEyOCB9OwogCkBAIC0x
ODEsOSArMTgxLDcgQEAgcHVibGljOgogCiAgICAgLy8gRXZlbnRUYXJnZXQKICAgICB2aXJ0dWFs
IEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2
ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURFIHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQot
ICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhJiBlbnN1cmVFdmVudFRhcmdldERhdGEoKSBPVkVS
UklERSB7IHJldHVybiBtX2V2ZW50VGFyZ2V0RGF0YTsgfQorICAgIHZpcnR1YWwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFIEZJ
TkFMOwogCiBwcm90ZWN0ZWQ6CiAgICAgLy8gSW5wdXRzIGFuZCBvdXRwdXRzIG11c3QgYmUgY3Jl
YXRlZCBiZWZvcmUgdGhlIEF1ZGlvTm9kZSBpcyBpbml0aWFsaXplZC4KQEAgLTIwNiw4ICsyMDQs
NiBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxPd25QdHI8QXVkaW9Ob2RlSW5wdXQ+ID4gbV9pbnB1
dHM7CiAgICAgVmVjdG9yPE93blB0cjxBdWRpb05vZGVPdXRwdXQ+ID4gbV9vdXRwdXRzOwogCi0g
ICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwotCiAgICAgZG91YmxlIG1fbGFz
dFByb2Nlc3NpbmdUaW1lOwogICAgIGRvdWJsZSBtX2xhc3ROb25TaWxlbnRUaW1lOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IGM2
ZTBiZWYuLmQ5NjA2NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXQuY3BwCkBAIC01NzksMTYgKzU3OSw2IEBAIHZvaWQgV2ViU29ja2V0OjpkaWRD
bG9zZSh1bnNpZ25lZCBsb25nIHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBDbG9zaW5nSGFuZHNo
YWtlCiAgICAgICAgIEFjdGl2ZURPTU9iamVjdDo6dW5zZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7
CiB9CiAKLUV2ZW50VGFyZ2V0RGF0YSogV2ViU29ja2V0OjpldmVudFRhcmdldERhdGEoKQotewot
ICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7Ci19Ci0KLUV2ZW50VGFyZ2V0RGF0YSYgV2Vi
U29ja2V0OjplbnN1cmVFdmVudFRhcmdldERhdGEoKQotewotICAgIHJldHVybiBtX2V2ZW50VGFy
Z2V0RGF0YTsKLX0KLQogc2l6ZV90IFdlYlNvY2tldDo6Z2V0RnJhbWluZ092ZXJoZWFkKHNpemVf
dCBwYXlsb2FkU2l6ZSkKIHsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGh5YmlCYXNlRnJhbWlu
Z092ZXJoZWFkID0gMjsgLy8gRXZlcnkgZnJhbWUgaGFzIGF0IGxlYXN0IHR3by1ieXRlIGhlYWRl
ci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAppbmRl
eCBmNTY1YTY1Li5lMmFmZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5oCkBAIC01MCw3ICs1MCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEJsb2I7CiBjbGFzcyBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDsKIAotY2xhc3MgV2Vi
U29ja2V0IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViU29ja2V0PiwgcHVibGljIEV2ZW50VGFyZ2V0
LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgV2ViU29ja2V0Q2hhbm5lbENsaWVudCB7
CisvLyBGSVhNRTogVGhpcyBjbGFzcyBzaG91bGQgYmUgbWFya2VkIEZJTkFMIG9uY2UgPGh0dHA6
Ly93ZWJraXQub3JnL2IvMTIxNzQ3PiBpcyBmaXhlZC4KK2NsYXNzIFdlYlNvY2tldCA6IHB1Ymxp
YyBSZWZDb3VudGVkPFdlYlNvY2tldD4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhEYXRhLCBwdWJs
aWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgV2ViU29ja2V0Q2hhbm5lbENsaWVudCB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIHZvaWQgc2V0SXNBdmFpbGFibGUoYm9vbCk7CiAgICAgc3RhdGljIGJv
b2wgaXNBdmFpbGFibGUoKTsKQEAgLTk3LDggKzk4LDggQEAgcHVibGljOgogICAgIERFRklORV9B
VFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY2xvc2UpOwogCiAgICAgLy8gRXZlbnRUYXJnZXQgZnVu
Y3Rpb25zLgotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRl
cmZhY2UoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgT1ZFUlJJ
REUgRklOQUw7CisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREUgRklOQUw7CiAKICAgICB1c2luZyBSZWZDb3Vu
dGVkPFdlYlNvY2tldD46OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkPFdlYlNvY2tldD46OmRl
cmVmOwpAQCAtMTIyLDEwICsxMjMsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCByZXN1
bWUoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIE9WRVJSSURFOwogCi0gICAg
dmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyByZWYoKTsgfQotICAgIHZp
cnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyBkZXJlZigpOyB9Ci0gICAg
dmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURFOwotICAg
IHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhJiBlbnN1cmVFdmVudFRhcmdldERhdGEoKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7IHJl
ZigpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5B
TCB7IGRlcmVmKCk7IH0KIAogICAgIHNpemVfdCBnZXRGcmFtaW5nT3ZlcmhlYWQoc2l6ZV90IHBh
eWxvYWRTaXplKTsKIApAQCAtMTM4LDcgKzEzNyw2IEBAIHByaXZhdGU6CiAKICAgICBTdGF0ZSBt
X3N0YXRlOwogICAgIEtVUkwgbV91cmw7Ci0gICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJn
ZXREYXRhOwogICAgIHVuc2lnbmVkIGxvbmcgbV9idWZmZXJlZEFtb3VudDsKICAgICB1bnNpZ25l
ZCBsb25nIG1fYnVmZmVyZWRBbW91bnRBZnRlckNsb3NlOwogICAgIEJpbmFyeVR5cGUgbV9iaW5h
cnlUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAppbmRleCA3MjUzODBhLi42YjVkN2Y5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaApAQCAtMTU5LDYgKzE1OSwxNCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBFdmVudExpc3RlbmVySXRlcmF0b3I7CiAg
ICAgfTsKIAorICAgIGNsYXNzIEV2ZW50VGFyZ2V0V2l0aERhdGEgOiBwdWJsaWMgRXZlbnRUYXJn
ZXQgeworICAgIHByb3RlY3RlZDoKKyAgICAgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2
ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0
YTsgfQorICAgICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSYgZW5zdXJlRXZlbnRUYXJnZXRE
YXRhKCkgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gbV9ldmVudFRhcmdldERhdGE7IH0KKyAgICBw
cml2YXRlOgorICAgICAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CisgICAg
fTsKKwogICAgIC8vIEZJWE1FOiBUaGVzZSBtYWNyb3Mgc2hvdWxkIGJlIHNwbGl0IGludG8gc2Vw
YXJhdGUgREVGSU5FIGFuZCBERUNMQVJFCiAgICAgLy8gbWFjcm9zIHRvIGF2b2lkIGNhdXNpbmcg
c28gbWFueSBoZWFkZXIgaW5jbHVkZXMuCiAgICAgI2RlZmluZSBERUZJTkVfQVRUUklCVVRFX0VW
RU5UX0xJU1RFTkVSKGF0dHJpYnV0ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L01lc3NhZ2VQb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKaW5k
ZXggZjZlZDhmYS4uZGMwNDE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VQb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCkBAIC0x
NTEsMTYgKzE1MSw2IEBAIHZvaWQgTWVzc2FnZVBvcnQ6OmNvbnRleHREZXN0cm95ZWQoKQogICAg
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IDA7CiB9CiAKLUV2ZW50VGFyZ2V0SW50ZXJmYWNl
IE1lc3NhZ2VQb3J0OjpldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IE1lc3NhZ2VQb3J0RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOwotfQotCi1TY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBNZXNzYWdlUG9ydDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLX0KLQogdm9pZCBNZXNzYWdl
UG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcygpCiB7CiAgICAgLy8gTWVzc2FnZXMgZm9yIGNvbnRleHRz
IHRoYXQgYXJlIG5vdCBmdWxseSBhY3RpdmUgZ2V0IGRpc3BhdGNoZWQgdG9vLCBidXQgSlNBYnN0
cmFjdEV2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KCkgZG9lc24ndCBjYWxsIGhhbmRsZXJzIGZv
ciB0aGVzZS4KQEAgLTI0MSwxNCArMjMxLDQgQEAgUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5
PiBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JgogICAg
IHJldHVybiBwb3J0QXJyYXkucmVsZWFzZSgpOwogfQogCi1FdmVudFRhcmdldERhdGEqIE1lc3Nh
Z2VQb3J0OjpldmVudFRhcmdldERhdGEoKQotewotICAgIHJldHVybiAmbV9ldmVudFRhcmdldERh
dGE7Ci19Ci0KLUV2ZW50VGFyZ2V0RGF0YSYgTWVzc2FnZVBvcnQ6OmVuc3VyZUV2ZW50VGFyZ2V0
RGF0YSgpCi17Ci0gICAgcmV0dXJuIG1fZXZlbnRUYXJnZXREYXRhOwotfQotCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oCmluZGV4IGY2MzQyMjQuLjBiNTg3
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oCkBAIC00Nyw3ICs0Nyw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAvLyBUaGUgb3ZlcndoZWxtaW5nbHkgY29tbW9uIGNhc2UgaXMgc2Vu
ZGluZyBhIHNpbmdsZSBwb3J0LCBzbyBoYW5kbGUgdGhhdCBlZmZpY2llbnRseSB3aXRoIGFuIGlu
bGluZSBidWZmZXIgb2Ygc2l6ZSAxLgogICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxNZXNzYWdl
UG9ydD4sIDE+IE1lc3NhZ2VQb3J0QXJyYXk7CiAKLSAgICBjbGFzcyBNZXNzYWdlUG9ydCA6IHB1
YmxpYyBSZWZDb3VudGVkPE1lc3NhZ2VQb3J0PiwgcHVibGljIEV2ZW50VGFyZ2V0IHsKKyAgICAv
LyBGSVhNRTogVGhpcyBjbGFzcyBzaG91bGQgYmUgbWFya2VkIEZJTkFMIG9uY2UgPGh0dHA6Ly93
ZWJraXQub3JnL2IvMTIxNzQ3PiBpcyBmaXhlZC4KKyAgICBjbGFzcyBNZXNzYWdlUG9ydCA6IHB1
YmxpYyBSZWZDb3VudGVkPE1lc3NhZ2VQb3J0PiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aERhdGEg
ewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVzc2FnZVBvcnQ+IGNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KSB7IHJl
dHVybiBhZG9wdFJlZihuZXcgTWVzc2FnZVBvcnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOyB9
CiAgICAgICAgIHZpcnR1YWwgfk1lc3NhZ2VQb3J0KCk7CkBAIC03Myw4ICs3NCw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIGNvbnRleHREZXN0cm95ZWQoKTsKIAotICAg
ICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkg
Y29uc3QgT1ZFUlJJREU7Ci0gICAgICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFOworICAgICAgICB2aXJ0dWFs
IEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgT1ZFUlJJ
REUgRklOQUwgeyByZXR1cm4gTWVzc2FnZVBvcnRFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0K
KyAgICAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0OyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc01lc3NhZ2VQb3J0KCkgY29uc3QgT1ZF
UlJJREUgRklOQUwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgICAgIHZvaWQgZGlzcGF0Y2hNZXNz
YWdlcygpOwpAQCAtMTA1LDEwICsxMDYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHJp
dmF0ZToKICAgICAgICAgZXhwbGljaXQgTWVzc2FnZVBvcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsg
cmVmKCk7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklE
RSB7IGRlcmVmKCk7IH0KLSAgICAgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFy
Z2V0RGF0YSgpIE9WRVJSSURFOwotICAgICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSYgZW5z
dXJlRXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREU7CisgICAgICAgIHZpcnR1YWwgdm9pZCByZWZF
dmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgcmVmKCk7IH0KKyAgICAgICAgdmlydHVhbCB2
b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7IGRlcmVmKCk7IH0KIAogICAg
ICAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBtX2VudGFuZ2xlZENoYW5uZWw7CiAKQEAg
LTExNiw3ICsxMTUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9jbG9z
ZWQ7CiAKICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0OwotICAgICAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CiAgICAg
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1dlYktpdE5hbWVkRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFtZWRG
bG93LmNwcAppbmRleCBlNDk3OTRiLi5mN2VlOTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vV2ViS2l0TmFtZWRGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0
TmFtZWRGbG93LmNwcApAQCAtMjA3LDE2ICsyMDcsNiBAQCB2b2lkIFdlYktpdE5hbWVkRmxvdzo6
c2V0UmVuZGVyZXIoUmVuZGVyTmFtZWRGbG93VGhyZWFkKiBwYXJlbnRGbG93VGhyZWFkKQogICAg
IG1fcGFyZW50Rmxvd1RocmVhZCA9IHBhcmVudEZsb3dUaHJlYWQ7CiB9CiAKLUV2ZW50VGFyZ2V0
RGF0YSogV2ViS2l0TmFtZWRGbG93OjpldmVudFRhcmdldERhdGEoKQotewotICAgIHJldHVybiAm
bV9ldmVudFRhcmdldERhdGE7Ci19Ci0KLUV2ZW50VGFyZ2V0RGF0YSYgV2ViS2l0TmFtZWRGbG93
OjplbnN1cmVFdmVudFRhcmdldERhdGEoKQotewotICAgIHJldHVybiBtX2V2ZW50VGFyZ2V0RGF0
YTsKLX0KLQogdm9pZCBXZWJLaXROYW1lZEZsb3c6OmRpc3BhdGNoUmVnaW9uTGF5b3V0VXBkYXRl
RXZlbnQoKQogewogICAgIEFTU0VSVCghTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOjppc0V2ZW50
RGlzcGF0Y2hGb3JiaWRkZW4oKSk7CkBAIC0yMzksMTEgKzIyOSw2IEBAIHZvaWQgV2ViS2l0TmFt
ZWRGbG93OjpkaXNwYXRjaFJlZ2lvbk92ZXJzZXRDaGFuZ2VFdmVudCgpCiAgICAgZGlzcGF0Y2hF
dmVudChVSUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdHJlZ2lvbm92ZXJzZXRjaGFu
Z2VFdmVudCwgZmFsc2UsIGZhbHNlLCBtX2Zsb3dNYW5hZ2VyLT5kb2N1bWVudCgpLT5kZWZhdWx0
VmlldygpLCAwKSk7CiB9CiAKLUV2ZW50VGFyZ2V0SW50ZXJmYWNlIFdlYktpdE5hbWVkRmxvdzo6
ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdAotewotICAgIHJldHVybiBXZWJLaXROYW1lZEZs
b3dFdmVudFRhcmdldEludGVyZmFjZVR5cGU7Ci19Ci0KIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IFdlYktpdE5hbWVkRmxvdzo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1fZmxvd01hbmFnZXItPmRvY3VtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vV2ViS2l0TmFtZWRGbG93LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFt
ZWRGbG93LmgKaW5kZXggNjFkYTExOS4uYmZkMmJkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1dlYktpdE5hbWVkRmxvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRO
YW1lZEZsb3cuaApAQCAtNDYsNyArNDYsOCBAQCBjbGFzcyBOb2RlTGlzdDsKIGNsYXNzIFJlbmRl
ck5hbWVkRmxvd1RocmVhZDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKLWNsYXNz
IFdlYktpdE5hbWVkRmxvdyA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYktpdE5hbWVkRmxvdz4sIHB1
YmxpYyBFdmVudFRhcmdldCB7CisvLyBGSVhNRTogVGhpcyBjbGFzcyBzaG91bGQgYmUgbWFya2Vk
IEZJTkFMIG9uY2UgPGh0dHA6Ly93ZWJraXQub3JnL2IvMTIxNzQ3PiBpcyBmaXhlZC4KK2NsYXNz
IFdlYktpdE5hbWVkRmxvdyA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYktpdE5hbWVkRmxvdz4sIHB1
YmxpYyBFdmVudFRhcmdldFdpdGhEYXRhIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxXZWJLaXROYW1lZEZsb3c+IGNyZWF0ZShQYXNzUmVmUHRyPE5hbWVkRmxvd0NvbGxlY3Rpb24+
IG1hbmFnZXIsIGNvbnN0IEF0b21pY1N0cmluZyYgZmxvd1RocmVhZE5hbWUpOwogCkBAIC02Miw4
ICs2Myw4IEBAIHB1YmxpYzoKICAgICB1c2luZyBSZWZDb3VudGVkPFdlYktpdE5hbWVkRmxvdz46
OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkPFdlYktpdE5hbWVkRmxvdz46OmRlcmVmOwogCi0g
ICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNv
bnN0OwotICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpIGNvbnN0OworICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRU
YXJnZXRJbnRlcmZhY2UoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBXZWJLaXROYW1l
ZEZsb3dFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KKyAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERSBGSU5B
TDsKIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gdGhlIEpTIGJpbmRpbmcg
Y29kZSB0byBkZXRlcm1pbmUgaWYgdGhlIE5hbWVkRmxvdyBvYmplY3QgaXMgcmVhY2hhYmxlIG9y
IG5vdC4KICAgICAvLyBJZiB0aGUgb2JqZWN0IGhhcyBsaXN0ZW5lcnMsIHRoZSBvYmplY3Qgc2hv
dWxkIG9ubHkgYmUgZGlzY2FyZGVkIGlmIHRoZSBwYXJlbnQgRG9jdW1lbnQgaXMgbm90IHJlYWNo
YWJsZS4KQEAgLTg1LDE5ICs4NiwxNCBAQCBwcml2YXRlOgogICAgIFdlYktpdE5hbWVkRmxvdyhQ
YXNzUmVmUHRyPE5hbWVkRmxvd0NvbGxlY3Rpb24+LCBjb25zdCBBdG9taWNTdHJpbmcmKTsKIAog
ICAgIC8vIEV2ZW50VGFyZ2V0IGltcGxlbWVudGF0aW9uLgotICAgIHZpcnR1YWwgdm9pZCByZWZF
dmVudFRhcmdldCgpIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdl
dCgpIHsgZGVyZWYoKTsgfQotCi0gICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFy
Z2V0RGF0YSgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhJiBlbnN1cmVF
dmVudFRhcmdldERhdGEoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJn
ZXQoKSBPVkVSUklERSBGSU5BTCB7IHJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZl
bnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7IGRlcmVmKCk7IH0KIAogICAgIC8vIFRoZSBuYW1l
IG9mIHRoZSBmbG93IHRocmVhZCBhcyBzcGVjaWZpZWQgaW4gQ1NTLgogICAgIEF0b21pY1N0cmlu
ZyBtX2Zsb3dUaHJlYWROYW1lOwogCiAgICAgUmVmUHRyPE5hbWVkRmxvd0NvbGxlY3Rpb24+IG1f
Zmxvd01hbmFnZXI7CiAgICAgUmVuZGVyTmFtZWRGbG93VGhyZWFkKiBtX3BhcmVudEZsb3dUaHJl
YWQ7Ci0KLSAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CiB9OwogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAppbmRleCBkMjViNTNiLi43OTg5NjI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAKQEAgLTY5LDExICs2OSw2IEBAIEZp
bGVSZWFkZXI6On5GaWxlUmVhZGVyKCkKICAgICB0ZXJtaW5hdGUoKTsKIH0KIAotRXZlbnRUYXJn
ZXRJbnRlcmZhY2UgRmlsZVJlYWRlcjo6ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdAotewot
ICAgIHJldHVybiBGaWxlUmVhZGVyRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOwotfQotCiBib29s
IEZpbGVSZWFkZXI6OmNhblN1c3BlbmQoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBJdCBpcyBu
b3QgY3VycmVudGx5IHBvc3NpYmxlIHRvIHN1c3BlbmQgYSBGaWxlUmVhZGVyLCBzbyBwYWdlcyB3
aXRoIEZpbGVSZWFkZXIgY2FuIG5vdCBnbyBpbnRvIHBhZ2UgY2FjaGUuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRmlsZVJlYWRlci5oCmluZGV4IGU2YjE2NjYuLjZhMTE2NmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRmlsZVJlYWRlci5oCkBAIC01Myw3ICs1Myw4IEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKLWNsYXNzIEZpbGVSZWFkZXIg
OiBwdWJsaWMgUmVmQ291bnRlZDxGaWxlUmVhZGVyPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwg
cHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgRmlsZVJlYWRlckxvYWRlckNsaWVudCB7CisvLyBG
SVhNRTogVGhpcyBjbGFzcyBzaG91bGQgYmUgbWFya2VkIEZJTkFMIG9uY2UgPGh0dHA6Ly93ZWJr
aXQub3JnL2IvMTIxNzQ3PiBpcyBmaXhlZC4KK2NsYXNzIEZpbGVSZWFkZXIgOiBwdWJsaWMgUmVm
Q291bnRlZDxGaWxlUmVhZGVyPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50
VGFyZ2V0V2l0aERhdGEsIHB1YmxpYyBGaWxlUmVhZGVyTG9hZGVyQ2xpZW50IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlUmVhZGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopOwogCkBAIC04MSw4ICs4Miw4IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgc3RyaW5n
UmVzdWx0KCk7CiAKICAgICAvLyBFdmVudFRhcmdldAotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJ
bnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVy
biBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQorICAgIHZpcnR1
YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBPVkVS
UklERSBGSU5BTCB7IHJldHVybiBGaWxlUmVhZGVyRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9
CisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7IH0KIAogICAgIC8vIEZpbGVSZWFkZXJMb2FkZXJDbGllbnQK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRMb2FkaW5nKCk7CkBAIC0xMDgsMTAgKzEwOSw4IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKSBPVkVSUklERTsKIAogICAgIC8vIEV2
ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyBy
ZWYoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyBk
ZXJlZigpOyB9Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgp
IE9WRVJSSURFIHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQotICAgIHZpcnR1YWwgRXZl
bnRUYXJnZXREYXRhJiBlbnN1cmVFdmVudFRhcmdldERhdGEoKSBPVkVSUklERSB7IHJldHVybiBt
X2V2ZW50VGFyZ2V0RGF0YTsgfQorICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9W
RVJSSURFIEZJTkFMIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdl
dCgpIE9WRVJSSURFIEZJTkFMIHsgZGVyZWYoKTsgfQogCiAgICAgdm9pZCB0ZXJtaW5hdGUoKTsK
ICAgICB2b2lkIHJlYWRJbnRlcm5hbChCbG9iKiwgRmlsZVJlYWRlckxvYWRlcjo6UmVhZFR5cGUs
IEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTEyMCwxMiArMTE5LDkgQEAgcHJpdmF0ZToKIAogICAgIFJl
YWR5U3RhdGUgbV9zdGF0ZTsKICAgICBib29sIG1fYWJvcnRpbmc7Ci0gICAgRXZlbnRUYXJnZXRE
YXRhIG1fZXZlbnRUYXJnZXREYXRhOwotCiAgICAgUmVmUHRyPEJsb2I+IG1fYmxvYjsKICAgICBG
aWxlUmVhZGVyTG9hZGVyOjpSZWFkVHlwZSBtX3JlYWRUeXBlOwogICAgIFN0cmluZyBtX2VuY29k
aW5nOwotCiAgICAgT3duUHRyPEZpbGVSZWFkZXJMb2FkZXI+IG1fbG9hZGVyOwogICAgIFJlZlB0
cjxGaWxlRXJyb3I+IG1fZXJyb3I7CiAgICAgZG91YmxlIG1fbGFzdFByb2dyZXNzTm90aWZpY2F0
aW9uVGltZU1TOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwCmluZGV4IDFj
YzQ5NTcuLjM3YzBlNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5jcHAK
QEAgLTY0OSwxMSArNjQ5LDYgQEAgdm9pZCBNZWRpYUNvbnRyb2xsZXI6OnJldHVyblRvUmVhbHRp
bWUoKQogICAgICAgICBtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5yZXR1cm5Ub1JlYWx0aW1lKCk7
CiB9CiAKLUV2ZW50VGFyZ2V0SW50ZXJmYWNlIE1lZGlhQ29udHJvbGxlcjo6ZXZlbnRUYXJnZXRJ
bnRlcmZhY2UoKSBjb25zdAotewotICAgIHJldHVybiBNZWRpYUNvbnRyb2xsZXJFdmVudFRhcmdl
dEludGVyZmFjZVR5cGU7Ci19Ci0KIC8vIFRoZSBzcGVjIHNheXMgdG8gZmlyZSBwZXJpb2RpYyB0
aW1ldXBkYXRlIGV2ZW50cyAodGhvc2Ugc2VudCB3aGlsZSBwbGF5aW5nKSBldmVyeQogLy8gIjE1
IHRvIDI1MG1zIiwgd2UgY2hvb3NlIHRoZSBzbG93ZXN0IGZyZXF1ZW5jeQogc3RhdGljIGNvbnN0
IGRvdWJsZSBtYXhUaW1ldXBkYXRlRXZlbnRGcmVxdWVuY3kgPSAwLjI1OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFDb250cm9sbGVyLmgKaW5kZXggZmNkNjY0MS4uM2M2MWVlNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL01lZGlhQ29udHJvbGxlci5oCkBAIC00Myw3ICs0Myw4IEBAIGNsYXNzIEhUTUxNZWRp
YUVsZW1lbnQ7CiBjbGFzcyBFdmVudDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAK
LWNsYXNzIE1lZGlhQ29udHJvbGxlciA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhQ29udHJvbGxl
cj4sIHB1YmxpYyBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UsIHB1YmxpYyBFdmVudFRhcmdldCB7
CisvLyBGSVhNRTogVGhpcyBjbGFzcyBzaG91bGQgYmUgbWFya2VkIEZJTkFMIG9uY2UgPGh0dHA6
Ly93ZWJraXQub3JnL2IvMTIxNzQ3PiBpcyBmaXhlZC4KK2NsYXNzIE1lZGlhQ29udHJvbGxlciA6
IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhQ29udHJvbGxlcj4sIHB1YmxpYyBNZWRpYUNvbnRyb2xs
ZXJJbnRlcmZhY2UsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhEYXRhIHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xsZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0Kik7CiAgICAgdmlydHVhbCB+TWVkaWFDb250cm9sbGVyKCk7CkBAIC0xMjksMTMgKzEz
MCwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRUaW1ldXBkYXRlVGltZXIoKTsKIAogICAg
IC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJ
REUgeyByZWYoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJ
REUgeyBkZXJlZigpOyB9Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRh
cmdldEludGVyZmFjZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsgfTsKLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXRE
YXRhKCkgT1ZFUlJJREUgeyByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOyB9Ci0gICAgdmlydHVh
bCBFdmVudFRhcmdldERhdGEmIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURFIHsgcmV0
dXJuIG1fZXZlbnRUYXJnZXREYXRhOyB9Ci0gICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJn
ZXREYXRhOworICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFM
IHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURF
IEZJTkFMIHsgZGVyZWYoKTsgfQorICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZl
bnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBNZWRpYUNv
bnRyb2xsZXJFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KKyAgICB2aXJ0dWFsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERSBG
SU5BTCB7IHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7IH07CiAKICAgICBmcmllbmQg
Y2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKICAgICBmcmllbmQgY2xhc3MgTWVkaWFDb250cm9sbGVy
RXZlbnRMaXN0ZW5lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAppbmRl
eCA2MTM5YmViLi4zMDlmMjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2su
Y3BwCkBAIC0xNDcsMjYgKzE0Nyw2IEBAIFRleHRUcmFjazo6flRleHRUcmFjaygpCiAgICAgY2xl
YXJDbGllbnQoKTsKIH0KIAotRXZlbnRUYXJnZXRJbnRlcmZhY2UgVGV4dFRyYWNrOjpldmVudFRh
cmdldEludGVyZmFjZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFRleHRUcmFja0V2ZW50VGFyZ2V0
SW50ZXJmYWNlVHlwZTsKLX0KLQotU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogVGV4dFRyYWNrOjpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0OwotfQotCi1FdmVudFRhcmdldERhdGEqIFRleHRUcmFjazo6ZXZlbnRUYXJn
ZXREYXRhKCkKLXsKLSAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOwotfQotCi1FdmVudFRh
cmdldERhdGEmIFRleHRUcmFjazo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkKLXsKLSAgICByZXR1
cm4gbV9ldmVudFRhcmdldERhdGE7Ci19Ci0KIGJvb2wgVGV4dFRyYWNrOjppc1ZhbGlkS2luZChj
b25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKSBjb25zdAogewogICAgIHJldHVybiBUZXh0VHJhY2s6
OmlzVmFsaWRLaW5kS2V5d29yZCh2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RleHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2suaAppbmRleCBmMThhZTMyLi44ZmYzOGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0ZXh0
VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrKiwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+KSA9IDA7
CiB9OwogCi1jbGFzcyBUZXh0VHJhY2sgOiBwdWJsaWMgVHJhY2tCYXNlLCBwdWJsaWMgRXZlbnRU
YXJnZXQKK2NsYXNzIFRleHRUcmFjayA6IHB1YmxpYyBUcmFja0Jhc2UsIHB1YmxpYyBFdmVudFRh
cmdldFdpdGhEYXRhCiAjaWYgVVNFKFBMQVRGT1JNX1RFWFRfVFJBQ0tfTUVOVSkKICAgICAsIHB1
YmxpYyBQbGF0Zm9ybVRleHRUcmFja0NsaWVudAogI2VuZGlmCkBAIC03Myw4ICs3Myw4IEBAIHB1
YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+VGV4dFRyYWNrKCk7CiAKLSAgICB2aXJ0dWFsIEV2
ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Q7Ci0gICAgdmly
dHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29u
c3Q7CisgICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFj
ZSgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIFRleHRUcmFja0V2ZW50VGFyZ2V0SW50
ZXJmYWNlVHlwZTsgfQorICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsgfQogCiAgICAgc3RhdGljIFRleHRUcmFjayogY2FwdGlvbk1lbnVP
ZmZJdGVtKCk7CiAgICAgc3RhdGljIFRleHRUcmFjayogY2FwdGlvbk1lbnVBdXRvbWF0aWNJdGVt
KCk7CkBAIC0xNTksMTYgKzE1OSwxMyBAQCBwcm90ZWN0ZWQ6CiAgICAgVGV4dFRyYWNrUmVnaW9u
TGlzdCogcmVnaW9uTGlzdCgpOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0
YSogZXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldERh
dGEmIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURFOwotCiAgICAgUmVmUHRyPFRleHRU
cmFja0N1ZUxpc3Q+IG1fY3VlczsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxp
ZEtpbmQoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IHJlZigpOyB9Ci0gICAgdmlydHVhbCB2
b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IGRlcmVmKCk7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7IHJlZigpOyB9CisgICAgdmly
dHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7IGRlcmVmKCk7IH0K
IAogI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxFKFdFQlZUVF9SRUdJT05TKQogICAg
IFRleHRUcmFja1JlZ2lvbkxpc3QqIGVuc3VyZVRleHRUcmFja1JlZ2lvbkxpc3QoKTsKQEAgLTE4
NCw3ICsxODEsNiBAQCBwcml2YXRlOgogICAgIFRleHRUcmFja0N1ZUxpc3QqIGVuc3VyZVRleHRU
cmFja0N1ZUxpc3QoKTsKIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDsKLSAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CiAg
ICAgQXRvbWljU3RyaW5nIG1fbW9kZTsKICAgICBUZXh0VHJhY2tDbGllbnQqIG1fY2xpZW50Owog
ICAgIFRleHRUcmFja1R5cGUgbV90cmFja1R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RleHRUcmFja0N1ZS5jcHAKaW5kZXggNzhlNjA4NS4uY2YwMGZlZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcApAQCAtMTE1NCwyNiArMTE1NCw2IEBAIHN0
ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4gVGV4dFRyYWNrQ3VlOjpnZXRDU1NQb3NpdGlvbigpIGNv
bnN0CiAgICAgcmV0dXJuIG1fZGlzcGxheVBvc2l0aW9uOwogfQogCi1FdmVudFRhcmdldEludGVy
ZmFjZSBUZXh0VHJhY2tDdWU6OmV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gVGV4dFRyYWNrQ3VlRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOwotfQotCi1TY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBUZXh0VHJhY2tDdWU6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdAotewotICAgIHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci19Ci0KLUV2ZW50
VGFyZ2V0RGF0YSogVGV4dFRyYWNrQ3VlOjpldmVudFRhcmdldERhdGEoKQotewotICAgIHJldHVy
biAmbV9ldmVudFRhcmdldERhdGE7Ci19Ci0KLUV2ZW50VGFyZ2V0RGF0YSYgVGV4dFRyYWNrQ3Vl
OjplbnN1cmVFdmVudFRhcmdldERhdGEoKQotewotICAgIHJldHVybiBtX2V2ZW50VGFyZ2V0RGF0
YTsKLX0KLQogYm9vbCBUZXh0VHJhY2tDdWU6OmlzRXF1YWwoY29uc3QgVGV4dFRyYWNrQ3VlJiBj
dWUsIEN1ZU1hdGNoUnVsZXMgbWF0Y2gpIGNvbnN0CiB7CiAgICAgaWYgKGN1ZVR5cGUoKSAhPSBj
dWUuY3VlVHlwZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2tDdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgKaW5k
ZXggMWNmOTYyNi4uOTI4YWRmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UZXh0VHJhY2tDdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFj
a0N1ZS5oCkBAIC03MSw3ICs3MSw3IEBAIHByb3RlY3RlZDoKIAogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogCi1jbGFzcyBUZXh0VHJhY2tDdWUgOiBwdWJsaWMgUmVmQ291bnRlZDxU
ZXh0VHJhY2tDdWU+LCBwdWJsaWMgRXZlbnRUYXJnZXQgeworY2xhc3MgVGV4dFRyYWNrQ3VlIDog
cHVibGljIFJlZkNvdW50ZWQ8VGV4dFRyYWNrQ3VlPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aERh
dGEgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4gY3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGRvdWJsZSBzdGFydCwgZG91YmxlIGVu
ZCwgY29uc3QgU3RyaW5nJiBjb250ZW50KQogICAgIHsKQEAgLTE1Myw4ICsxNTMsOCBAQCBwdWJs
aWM6CiAgICAgaW50IGNhbGN1bGF0ZUNvbXB1dGVkTGluZVBvc2l0aW9uKCk7CiAgICAgc3RkOjpw
YWlyPGRvdWJsZSwgZG91YmxlPiBnZXRQb3NpdGlvbkNvb3JkaW5hdGVzKCkgY29uc3Q7CiAKLSAg
ICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29u
c3Q7Ci0gICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgY29uc3Q7CisgICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRh
cmdldEludGVyZmFjZSgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIFRleHRUcmFja0N1
ZUV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQorICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsg
cmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsgfQogCiAgICAgc3RkOjpwYWlyPGRvdWJs
ZSwgZG91YmxlPiBnZXRDU1NQb3NpdGlvbigpIGNvbnN0OwogCkBAIC0yMDMsOSArMjAzLDYgQEAg
cHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ8VGV4dFRyYWNrQ3VlPjo6ZGVyZWY7CiAKIHBy
b3RlY3RlZDoKLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEmIGVuc3VyZUV2ZW50VGFyZ2V0
RGF0YSgpIE9WRVJSSURFOwotCiAgICAgVGV4dFRyYWNrQ3VlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQsIGNvbnN0IFN0cmluZyYgY29udGVudCk7CiAK
ICAgICBEb2N1bWVudCYgb3duZXJEb2N1bWVudCgpIHsgcmV0dXJuICp0b0RvY3VtZW50KG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCk7IH0KQEAgLTIyMiw4ICsyMTksOCBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGV0ZXJtaW5lVGV4dERpcmVjdGlvbigpOwogICAgIHZvaWQgY2FsY3VsYXRlRGlzcGxh
eVBhcmFtZXRlcnMoKTsKIAotICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVm
KCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQor
ICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgcmVmKCk7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsg
ZGVyZWYoKTsgfQogCiAgICAgZW51bSBDdWVTZXR0aW5nIHsKICAgICAgICAgTm9uZSwKQEAgLTI1
Nyw3ICsyNTQsNiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBtX3dl
YlZUVE5vZGVUcmVlOwogICAgIFRleHRUcmFjayogbV90cmFjazsKIAotICAgIEV2ZW50VGFyZ2V0
RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKICAgICBib29sIG1faXNBY3RpdmU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oCmluZGV4IDNjZGEzZmIuLmMzMTk2NzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oCkBAIC00MSw3ICs0MSw3
IEBAIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgVHJhY2tC
YXNlOwogCi1jbGFzcyBUcmFja0xpc3RCYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8VHJhY2tMaXN0
QmFzZT4sIHB1YmxpYyBFdmVudFRhcmdldCB7CitjbGFzcyBUcmFja0xpc3RCYXNlIDogcHVibGlj
IFJlZkNvdW50ZWQ8VHJhY2tMaXN0QmFzZT4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhEYXRhIHsK
IHB1YmxpYzoKICAgICB+VHJhY2tMaXN0QmFzZSgpOwogCkBAIC01Myw3ICs1Myw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNl
KCkgY29uc3QgPSAwOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8VHJhY2tMaXN0QmFzZT46OnJlZjsK
ICAgICB1c2luZyBSZWZDb3VudGVkPFRyYWNrTGlzdEJhc2U+OjpkZXJlZjsKLSAgICB2aXJ0dWFs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7
IHJldHVybiBtX2NvbnRleHQ7IH0KKyAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBt
X2NvbnRleHQ7IH0KIAogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYWRkdHJh
Y2spOwogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY2hhbmdlKTsKQEAgLTc5
LDEwICs3OSw4IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAKICAgICAvLyBFdmVudFRhcmdldAot
ICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgcmVmKCk7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgZGVyZWYoKTsgfQot
ICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKSBPVkVSUklERSB7
IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7IH0KLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0
YSYgZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREUgeyByZXR1cm4gbV9ldmVudFRhcmdl
dERhdGE7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5B
TCB7IHJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklE
RSBGSU5BTCB7IGRlcmVmKCk7IH0KIAogICAgIHZvaWQgYXN5bmNFdmVudFRpbWVyRmlyZWQoVGlt
ZXI8VHJhY2tMaXN0QmFzZT4qKTsKIApAQCAtOTIsOCArOTAsNiBAQCBwcml2YXRlOgogICAgIFZl
Y3RvcjxSZWZQdHI8RXZlbnQ+ID4gbV9wZW5kaW5nRXZlbnRzOwogICAgIFRpbWVyPFRyYWNrTGlz
dEJhc2U+IG1fcGVuZGluZ0V2ZW50VGltZXI7CiAKLSAgICBFdmVudFRhcmdldERhdGEgbV9ldmVu
dFRhcmdldERhdGE7Ci0KICAgICBpbnQgbV9kaXNwYXRjaGluZ0V2ZW50czsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hl
LmNwcAppbmRleCBjNTM5OGYxLi41NjQzN2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuY3BwCkBAIC0xMDQsMTEgKzEw
NCw2IEBAIHZvaWQgRE9NQXBwbGljYXRpb25DYWNoZTo6YWJvcnQoKQogICAgICAgICBjYWNoZUhv
c3QtPmFib3J0KCk7CiB9CiAKLUV2ZW50VGFyZ2V0SW50ZXJmYWNlIERPTUFwcGxpY2F0aW9uQ2Fj
aGU6OmV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gRE9NQXBwbGlj
YXRpb25DYWNoZUV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsKLX0KLQogU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogRE9NQXBwbGljYXRpb25DYWNoZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNv
bnN0CiB7CiAgICAgaWYgKG1fZnJhbWUpCkBAIC0xNDAsMTQgKzEzNSw0IEBAIGNvbnN0IEF0b21p
Y1N0cmluZyYgRE9NQXBwbGljYXRpb25DYWNoZTo6dG9FdmVudFR5cGUoQXBwbGljYXRpb25DYWNo
ZUhvc3Q6OkV2ZW50CiAgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50OwogfQogCi1F
dmVudFRhcmdldERhdGEqIERPTUFwcGxpY2F0aW9uQ2FjaGU6OmV2ZW50VGFyZ2V0RGF0YSgpCi17
Ci0gICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKLX0KLQotRXZlbnRUYXJnZXREYXRhJiBE
T01BcHBsaWNhdGlvbkNhY2hlOjplbnN1cmVFdmVudFRhcmdldERhdGEoKQotewotICAgIHJldHVy
biBtX2V2ZW50VGFyZ2V0RGF0YTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmgK
aW5kZXggNzk4YzU2NS4uN2FiNzU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5oCkBAIC00Myw3ICs0Myw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZyYW1lOwogY2xhc3MgS1VSTDsKIAotY2xhc3MgRE9NQXBw
bGljYXRpb25DYWNoZSA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVk
PERPTUFwcGxpY2F0aW9uQ2FjaGU+LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBET01XaW5k
b3dQcm9wZXJ0eSB7CisvLyBGSVhNRTogVGhpcyBjbGFzcyBzaG91bGQgYmUgbWFya2VkIEZJTkFM
IG9uY2UgPGh0dHA6Ly93ZWJraXQub3JnL2IvMTIxNzQ3PiBpcyBmaXhlZC4KK2NsYXNzIERPTUFw
cGxpY2F0aW9uQ2FjaGUgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291bnRl
ZDxET01BcHBsaWNhdGlvbkNhY2hlPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aERhdGEsIHB1Ymxp
YyBET01XaW5kb3dQcm9wZXJ0eSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RE9N
QXBwbGljYXRpb25DYWNoZT4gY3JlYXRlKEZyYW1lKiBmcmFtZSkgeyByZXR1cm4gYWRvcHRSZWYo
bmV3IERPTUFwcGxpY2F0aW9uQ2FjaGUoZnJhbWUpKTsgfQogICAgIH5ET01BcHBsaWNhdGlvbkNh
Y2hlKCkgeyBBU1NFUlQoIW1fZnJhbWUpOyB9CkBAIC01Nyw4ICs1OCw2IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHN3YXBDYWNoZShFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBhYm9ydCgpOwogCi0g
ICAgLy8gRXZlbnRUYXJnZXQgaW1wbAotCiAgICAgdXNpbmcgUmVmQ291bnRlZDxET01BcHBsaWNh
dGlvbkNhY2hlPjo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8RE9NQXBwbGljYXRpb25DYWNo
ZT46OmRlcmVmOwogCkBAIC03MywyMiArNzIsMTggQEAgcHVibGljOgogICAgIERFRklORV9BVFRS
SUJVVEVfRVZFTlRfTElTVEVORVIoY2FjaGVkKTsKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5U
X0xJU1RFTkVSKG9ic29sZXRlKTsKIAotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2Ug
ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEV2
ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgT1ZFUlJJREUg
RklOQUwgeyByZXR1cm4gRE9NQXBwbGljYXRpb25DYWNoZUV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlw
ZTsgfQorICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpIGNvbnN0IE9WRVJSSURFIEZJTkFMOwogCiAgICAgc3RhdGljIGNvbnN0IEF0b21p
Y1N0cmluZyYgdG9FdmVudFR5cGUoQXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQgaWQpOwog
CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IERPTUFwcGxpY2F0aW9uQ2FjaGUoRnJhbWUqKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQotICAgIHZpcnR1YWwgRXZlbnRU
YXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIEV2ZW50
VGFyZ2V0RGF0YSYgZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgRklOQUwgeyByZWYoKTsgfQorICAgIHZp
cnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgRklOQUwgeyBkZXJlZigpOyB9
CiAKICAgICBBcHBsaWNhdGlvbkNhY2hlSG9zdCogYXBwbGljYXRpb25DYWNoZUhvc3QoKSBjb25z
dDsKLQotICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCAzZTVjOWYy
Li5hYjBiZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC00MjQsMTYgKzQyNCw2
IEBAIERPTVdpbmRvdzo6fkRPTVdpbmRvdygpCiAgICAgcmVtb3ZlQWxsQmVmb3JlVW5sb2FkRXZl
bnRMaXN0ZW5lcnModGhpcyk7CiB9CiAKLUV2ZW50VGFyZ2V0SW50ZXJmYWNlIERPTVdpbmRvdzo6
ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdAotewotICAgIHJldHVybiBET01XaW5kb3dFdmVu
dFRhcmdldEludGVyZmFjZVR5cGU7Ci19Ci0KLVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIERPTVdp
bmRvdzo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIENvbnRl
eHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci19Ci0KIERP
TVdpbmRvdyogRE9NV2luZG93Ojp0b0RPTVdpbmRvdygpCiB7CiAgICAgcmV0dXJuIHRoaXM7CkBA
IC0xNzYzLDE2ICsxNzUzLDYgQEAgdm9pZCBET01XaW5kb3c6OmZpbmlzaGVkTG9hZGluZygpCiAg
ICAgfQogfQogCi1FdmVudFRhcmdldERhdGEqIERPTVdpbmRvdzo6ZXZlbnRUYXJnZXREYXRhKCkK
LXsKLSAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOwotfQotCi1FdmVudFRhcmdldERhdGEm
IERPTVdpbmRvdzo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkKLXsKLSAgICByZXR1cm4gbV9ldmVu
dFRhcmdldERhdGE7Ci19Ci0KIHZvaWQgRE9NV2luZG93OjpzZXRMb2NhdGlvbihjb25zdCBTdHJp
bmcmIHVybFN0cmluZywgRE9NV2luZG93KiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyogZmlyc3RX
aW5kb3csIFNldExvY2F0aW9uTG9ja2luZyBsb2NraW5nKQogewogICAgIGlmICghaXNDdXJyZW50
bHlEaXNwbGF5ZWRJbkZyYW1lKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAppbmRleCA2Mjc2YzUw
Li40MDk3ODVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKQEAgLTg1LDExICs4NSwxMiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgZW51bSBTZXRMb2NhdGlvbkxvY2tpbmcgeyBMb2NrSGlz
dG9yeUJhc2VkT25HZXN0dXJlU3RhdGUsIExvY2tIaXN0b3J5QW5kQmFja0ZvcndhcmRMaXN0IH07
CiAKICAgICAvLyBGSVhNRTogRE9NV2luZG93IHNob3VsZG4ndCBzdWJjbGFzcyBGcmFtZURlc3Ry
dWN0aW9uT2JzZXJ2ZXIgYW5kIGluc3RlYWQgc2hvdWxkIGdldCB0byBGcmFtZSB2aWEgaXRzIERv
Y3VtZW50LgotICAgIGNsYXNzIERPTVdpbmRvdyA6IHB1YmxpYyBSZWZDb3VudGVkPERPTVdpbmRv
dz4KLSAgICAgICAgICAgICAgICAgICAgLCBwdWJsaWMgRXZlbnRUYXJnZXQKLSAgICAgICAgICAg
ICAgICAgICAgLCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIKLSAgICAgICAgICAg
ICAgICAgICAgLCBwdWJsaWMgRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyCi0gICAgICAgICAgICAg
ICAgICAgICwgcHVibGljIFN1cHBsZW1lbnRhYmxlPERPTVdpbmRvdz4geworICAgIGNsYXNzIERP
TVdpbmRvdyBGSU5BTAorICAgICAgICA6IHB1YmxpYyBSZWZDb3VudGVkPERPTVdpbmRvdz4KKyAg
ICAgICAgLCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoRGF0YQorICAgICAgICAsIHB1YmxpYyBDb250
ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcgorICAgICAgICAsIHB1YmxpYyBGcmFtZURlc3RydWN0aW9u
T2JzZXJ2ZXIKKyAgICAgICAgLCBwdWJsaWMgU3VwcGxlbWVudGFibGU8RE9NV2luZG93PiB7CiAg
ICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01XaW5kb3c+IGNyZWF0ZShE
b2N1bWVudCogZG9jdW1lbnQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBET01XaW5kb3coZG9jdW1l
bnQpKTsgfQogICAgICAgICB2aXJ0dWFsIH5ET01XaW5kb3coKTsKQEAgLTEwMyw4ICsxMDQsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIHRoZSBuZXR3b3JrIGxvYWQuIFNlZSBh
bHNvIFNlY3VyaXR5Q29udGV4dDo6aXNTZWN1cmVUcmFuc2l0aW9uVG8uCiAgICAgICAgIHZvaWQg
ZGlkU2VjdXJlVHJhbnNpdGlvblRvKERvY3VtZW50Kik7CiAKLSAgICAgICAgdmlydHVhbCBFdmVu
dFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0OwotICAgICAgICB2
aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdDsKKyAgICAgICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldElu
dGVyZmFjZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIERPTVdpbmRvd0V2ZW50VGFyZ2V0SW50
ZXJmYWNlVHlwZTsgfQorICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBDb250ZXh0RGVz
dHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAKICAgICAgICAg
dmlydHVhbCBET01XaW5kb3cqIHRvRE9NV2luZG93KCk7CiAKQEAgLTQyNSwxMCArNDI2LDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVEZXN0cm95ZWQo
KSBPVkVSUklERTsKICAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXRhY2hQYWdlKCkgT1ZFUlJJ
REU7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQot
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQotICAg
ICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREU7
Ci0gICAgICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhJiBlbnN1cmVFdmVudFRhcmdldERhdGEo
KSBPVkVSUklERTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJ
REUgeyByZWYoKTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9W
RVJSSURFIHsgZGVyZWYoKTsgfQogCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZyYW1lPiBj
cmVhdGVXaW5kb3coY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEF0b21pY1N0cmluZyYg
ZnJhbWVOYW1lLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYsCiAgICAgICAgICAgICBET01XaW5kb3cq
IGFjdGl2ZVdpbmRvdywgRnJhbWUqIGZpcnN0RnJhbWUsIEZyYW1lKiBvcGVuZXJGcmFtZSwKQEAg
LTQ1OSw4ICs0NTgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIG11dGFibGUgUmVm
UHRyPExvY2F0aW9uPiBtX2xvY2F0aW9uOwogICAgICAgICBtdXRhYmxlIFJlZlB0cjxTdHlsZU1l
ZGlhPiBtX21lZGlhOwogCi0gICAgICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0
YTsKLQogICAgICAgICBTdHJpbmcgbV9zdGF0dXM7CiAgICAgICAgIFN0cmluZyBtX2RlZmF1bHRT
dGF0dXM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKaW5kZXggYzEwOTEyYy4uYWRl
NWZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKQEAgLTIwOSwxNiArMjA5LDYg
QEAgdm9pZCBFdmVudFNvdXJjZTo6Y2xvc2UoKQogICAgIH0KIH0KIAotRXZlbnRUYXJnZXRJbnRl
cmZhY2UgRXZlbnRTb3VyY2U6OmV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gRXZlbnRTb3VyY2VFdmVudFRhcmdldEludGVyZmFjZVR5cGU7Ci19Ci0KLVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIEV2ZW50U291cmNlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29u
c3QKLXsKLSAgICByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7Ci19Ci0KIHZvaWQgRXZlbnRTb3VyY2U6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBs
b25nLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBBU1NFUlQobV9z
dGF0ZSA9PSBDT05ORUNUSU5HKTsKQEAgLTQzMSwxNCArNDIxLDQgQEAgUGFzc1JlZlB0cjxNZXNz
YWdlRXZlbnQ+IEV2ZW50U291cmNlOjpjcmVhdGVNZXNzYWdlRXZlbnQoKQogICAgIHJldHVybiBl
dmVudC5yZWxlYXNlKCk7CiB9CiAKLUV2ZW50VGFyZ2V0RGF0YSogRXZlbnRTb3VyY2U6OmV2ZW50
VGFyZ2V0RGF0YSgpCi17Ci0gICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKLX0KLQotRXZl
bnRUYXJnZXREYXRhJiBFdmVudFNvdXJjZTo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkKLXsKLSAg
ICByZXR1cm4gbV9ldmVudFRhcmdldERhdGE7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaAppbmRleCBlNDJhOGUzLi43ZWRhZDkyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudFNvdXJjZS5oCkBAIC00OCw3ICs0OCw4IEBAIGNsYXNzIFJlc291cmNlUmVz
cG9uc2U7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogY2xhc3MgVGhyZWFkYWJsZUxvYWRl
cjsKIAotY2xhc3MgRXZlbnRTb3VyY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxFdmVudFNvdXJjZT4s
IHB1YmxpYyBFdmVudFRhcmdldCwgcHJpdmF0ZSBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LCBwdWJs
aWMgQWN0aXZlRE9NT2JqZWN0IHsKKy8vIEZJWE1FOiBUaGlzIGNsYXNzIHNob3VsZCBiZSBtYXJr
ZWQgRklOQUwgb25jZSA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMjE3NDc+IGlzIGZpeGVkLgorY2xh
c3MgRXZlbnRTb3VyY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxFdmVudFNvdXJjZT4sIHB1YmxpYyBF
dmVudFRhcmdldFdpdGhEYXRhLCBwcml2YXRlIFRocmVhZGFibGVMb2FkZXJDbGllbnQsIHB1Ymxp
YyBBY3RpdmVET01PYmplY3QgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV2ZW50U291cmNlPiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBEaWN0aW9uYXJ5JiwgRXhjZXB0
aW9uQ29kZSYpOwpAQCAtNzUsMTYgKzc2LDE0IEBAIHB1YmxpYzoKICAgICB1c2luZyBSZWZDb3Vu
dGVkPEV2ZW50U291cmNlPjo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8RXZlbnRTb3VyY2U+
OjpkZXJlZjsKIAotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJ
bnRlcmZhY2UoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50
ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1
cm4gRXZlbnRTb3VyY2VFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KKyAgICB2aXJ0dWFsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVS
UklERSBGSU5BTCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsgfQogCiBwcml2YXRlOgogICAgIEV2ZW50U291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBjb25zdCBLVVJMJiwgY29uc3QgRGljdGlvbmFyeSYpOwogCi0gICAgdmlydHVhbCB2b2lk
IHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyByZWYoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBk
ZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyBkZXJlZigpOyB9Ci0gICAgdmlydHVhbCBFdmVu
dFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgRXZl
bnRUYXJnZXREYXRhJiBlbnN1cmVFdmVudFRhcmdldERhdGEoKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7IHJlZigpOyB9CisgICAg
dmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7IGRlcmVmKCk7
IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZywg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0
YShjb25zdCBjaGFyKiwgaW50KTsKQEAgLTEyMiw4ICsxMjEsNiBAQCBwcml2YXRlOgogICAgIFN0
cmluZyBtX2xhc3RFdmVudElkOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBtX3JlY29ubmVjdERl
bGF5OwogICAgIFN0cmluZyBtX2V2ZW50U3RyZWFtT3JpZ2luOwotCi0gICAgRXZlbnRUYXJnZXRE
YXRhIG1fZXZlbnRUYXJnZXREYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAppbmRleCBkZjMyM2M2Li4xODBiZDhjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcApAQCAtNjcsMTEgKzY3LDYgQEAgUGVyZm9ybWFuY2U6
On5QZXJmb3JtYW5jZSgpCiB7CiB9CiAKLUV2ZW50VGFyZ2V0SW50ZXJmYWNlIFBlcmZvcm1hbmNl
OjpldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFBlcmZvcm1hbmNl
RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOwotfQotCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBQ
ZXJmb3JtYW5jZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiB7CiAgICAgaWYgKCFm
cmFtZSgpKQpAQCAtMTk4LDE2ICsxOTMsNiBAQCBib29sIFBlcmZvcm1hbmNlOjppc1Jlc291cmNl
VGltaW5nQnVmZmVyRnVsbCgpCiAKICNlbmRpZiAvLyBFTkFCTEUoUkVTT1VSQ0VfVElNSU5HKQog
Ci1FdmVudFRhcmdldERhdGEqIFBlcmZvcm1hbmNlOjpldmVudFRhcmdldERhdGEoKQotewotICAg
IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7Ci19Ci0KLUV2ZW50VGFyZ2V0RGF0YSYgUGVyZm9y
bWFuY2U6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCi17Ci0gICAgcmV0dXJuIG1fZXZlbnRUYXJn
ZXREYXRhOwotfQotCiAjaWYgRU5BQkxFKFVTRVJfVElNSU5HKQogdm9pZCBQZXJmb3JtYW5jZTo6
d2Via2l0TWFyayhjb25zdCBTdHJpbmcmIG1hcmtOYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuaAppbmRleCAwYjcwZDc3Li43OGU1MjI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QZXJmb3JtYW5jZS5oCkBAIC01MiwxMyArNTIsMTQgQEAgY2xhc3MgUmVzb3VyY2VS
ZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFVzZXJUaW1pbmc7CiAKLWNs
YXNzIFBlcmZvcm1hbmNlIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50
ZWQ8UGVyZm9ybWFuY2U+LCBwdWJsaWMgRE9NV2luZG93UHJvcGVydHksIHB1YmxpYyBFdmVudFRh
cmdldCB7CisvLyBGSVhNRTogVGhpcyBjbGFzcyBzaG91bGQgYmUgbWFya2VkIEZJTkFMIG9uY2Ug
PGh0dHA6Ly93ZWJraXQub3JnL2IvMTIxNzQ3PiBpcyBmaXhlZC4KK2NsYXNzIFBlcmZvcm1hbmNl
IDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8UGVyZm9ybWFuY2U+
LCBwdWJsaWMgRE9NV2luZG93UHJvcGVydHksIHB1YmxpYyBFdmVudFRhcmdldFdpdGhEYXRhIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQZXJmb3JtYW5jZT4gY3JlYXRlKEZyYW1l
KiBmcmFtZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFBlcmZvcm1hbmNlKGZyYW1lKSk7IH0KICAg
ICB+UGVyZm9ybWFuY2UoKTsKIAotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZl
bnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEV2ZW50
VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgT1ZFUlJJREUgRklO
QUwgeyByZXR1cm4gUGVyZm9ybWFuY2VFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KKyAgICB2
aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdCBPVkVSUklERSBGSU5BTDsKIAogICAgIFBlcmZvcm1hbmNlTmF2aWdhdGlvbiogbmF2aWdh
dGlvbigpIGNvbnN0OwogICAgIFBlcmZvcm1hbmNlVGltaW5nKiB0aW1pbmcoKSBjb25zdDsKQEAg
LTkzLDE0ICs5NCwxMCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFBlcmZvcm1h
bmNlKEZyYW1lKik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklE
RSB7IHJlZigpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklE
RSB7IGRlcmVmKCk7IH0KLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXRE
YXRhKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEmIGVuc3VyZUV2ZW50
VGFyZ2V0RGF0YSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgp
IE9WRVJSSURFIEZJTkFMIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRh
cmdldCgpIE9WRVJSSURFIEZJTkFMIHsgZGVyZWYoKTsgfQogICAgIGJvb2wgaXNSZXNvdXJjZVRp
bWluZ0J1ZmZlckZ1bGwoKTsKIAotICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0
YTsKLQogICAgIG11dGFibGUgUmVmUHRyPFBlcmZvcm1hbmNlTmF2aWdhdGlvbj4gbV9uYXZpZ2F0
aW9uOwogICAgIG11dGFibGUgUmVmUHRyPFBlcmZvcm1hbmNlVGltaW5nPiBtX3RpbWluZzsKICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5jcHAKaW5kZXggZGM2MzE5
Ni4uNjQ3MmVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdv
cmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5jcHAK
QEAgLTg3LDE2ICs4Nyw2IEBAIEtVUkwgQWJzdHJhY3RXb3JrZXI6OnJlc29sdmVVUkwoY29uc3Qg
U3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIHJldHVybiBzY3JpcHRVUkw7CiB9
CiAKLUV2ZW50VGFyZ2V0RGF0YSogQWJzdHJhY3RXb3JrZXI6OmV2ZW50VGFyZ2V0RGF0YSgpCi17
Ci0gICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKLX0KLQotRXZlbnRUYXJnZXREYXRhJiBB
YnN0cmFjdFdvcmtlcjo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkKLXsKLSAgICByZXR1cm4gbV9l
dmVudFRhcmdldERhdGE7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEVOQUJMRShXT1JLRVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9BYnN0
cmFjdFdvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5oCmlu
ZGV4IDI3OGRhZTkuLjlmMWI1YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
QWJzdHJhY3RXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29y
a2VyLmgKQEAgLTQ3LDEwICs0NywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3Mg
S1VSTDsKICAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCi0gICAgY2xhc3MgQWJz
dHJhY3RXb3JrZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxBYnN0cmFjdFdvcmtlcj4sIHB1YmxpYyBB
Y3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdldCB7CisgICAgY2xhc3MgQWJzdHJhY3RX
b3JrZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxBYnN0cmFjdFdvcmtlcj4sIHB1YmxpYyBBY3RpdmVE
T01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhEYXRhIHsKICAgICBwdWJsaWM6CiAgICAg
ICAgIC8vIEV2ZW50VGFyZ2V0IEFQSXMKLSAgICAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4g
QWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KKyAgICAgICAgdmly
dHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29u
c3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7IH0KIAogICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVS
KGVycm9yKTsKIApAQCAtNjYsMTQgKzY2LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgaW50cHRyX3QgYXNJRCgpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRy
X3Q+KHRoaXMpOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVmRXZl
bnRUYXJnZXQoKSBPVkVSUklERSB7IHJlZigpOyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkZXJl
ZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyBkZXJlZigpOyB9Ci0gICAgICAgIHZpcnR1YWwgRXZl
bnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKSBPVkVSUklERTsKLSAgICAgICAgdmlydHVh
bCBFdmVudFRhcmdldERhdGEmIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURFOwotICAg
ICAgICAKLSAgICAgICAgdmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKSBPVkVSUklERTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgRklOQUwgeyBy
ZWYoKTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURF
IEZJTkFMIHsgZGVyZWYoKTsgfQogCi0gICAgICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFy
Z2V0RGF0YTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKSBPVkVSUklE
RTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIu
aAppbmRleCA2ZDViMjAzLi5iMTNkMDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgKQEAgLTc3
LDkgKzc3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpIE9WRVJSSURFOwogICAgICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQo
KSBPVkVSUklERTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVS
UklERSB7IHJlZigpOyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkg
T1ZFUlJJREUgeyBkZXJlZigpOyB9Ci0KICAgICAgICAgZnJpZW5kIHZvaWQgbmV0d29ya1N0YXRl
Q2hhbmdlZChib29sIGlzT25MaW5lKTsKIAogICAgICAgICBSZWZQdHI8V29ya2VyU2NyaXB0TG9h
ZGVyPiBtX3NjcmlwdExvYWRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5jcHAKaW5kZXggZDQxZjY2Yy4uYTgzNDZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTExNywxMSArMTE3LDYgQEAgdm9pZCBX
b3JrZXJHbG9iYWxTY29wZTo6YXBwbHlDb250ZW50U2VjdXJpdHlQb2xpY3lGcm9tU3RyaW5nKGNv
bnN0IFN0cmluZyYgcG9saWMKICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3koKS0+ZGlkUmVjZWl2
ZUhlYWRlcihwb2xpY3ksIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUpOwogfQogCi1TY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBXb3JrZXJHbG9iYWxTY29wZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8V29ya2VyR2xvYmFsU2NvcGUqPih0
aGlzKTsKLX0KLQogS1VSTCBXb3JrZXJHbG9iYWxTY29wZTo6Y29tcGxldGVVUkwoY29uc3QgU3Ry
aW5nJiB1cmwpIGNvbnN0CiB7CiAgICAgLy8gQWx3YXlzIHJldHVybiBhIG51bGwgVVJMIHdoZW4g
cGFzc2VkIGEgbnVsbCBzdHJpbmcuCkBAIC0zMDgsMTYgKzMwMyw2IEBAIGJvb2wgV29ya2VyR2xv
YmFsU2NvcGU6OmlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSBjb25zdAogICAgIHJldHVybiBtX3Nj
cmlwdC0+aXNFeGVjdXRpb25Gb3JiaWRkZW4oKTsKIH0KIAotRXZlbnRUYXJnZXREYXRhKiBXb3Jr
ZXJHbG9iYWxTY29wZTo6ZXZlbnRUYXJnZXREYXRhKCkKLXsKLSAgICByZXR1cm4gJm1fZXZlbnRU
YXJnZXREYXRhOwotfQotCi1FdmVudFRhcmdldERhdGEmIFdvcmtlckdsb2JhbFNjb3BlOjplbnN1
cmVFdmVudFRhcmdldERhdGEoKQotewotICAgIHJldHVybiBtX2V2ZW50VGFyZ2V0RGF0YTsKLX0K
LQogV29ya2VyR2xvYmFsU2NvcGU6Ok9ic2VydmVyOjpPYnNlcnZlcihXb3JrZXJHbG9iYWxTY29w
ZSogY29udGV4dCkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IDMyMzg5ZTUuLmEyMGNmN2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTU0LDEzICs1NCwx
MyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgV29ya2VyTmF2aWdhdG9yOwogICAg
IGNsYXNzIFdvcmtlclRocmVhZDsKIAotICAgIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlIDogcHVi
bGljIFJlZkNvdW50ZWQ8V29ya2VyR2xvYmFsU2NvcGU+LCBwdWJsaWMgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgcHVibGljIEV2ZW50VGFyZ2V0IHsKKyAgICBjbGFzcyBXb3JrZXJHbG9iYWxTY29w
ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdvcmtlckdsb2JhbFNjb3BlPiwgcHVibGljIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhEYXRhIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIHZpcnR1YWwgfldvcmtlckdsb2JhbFNjb3BlKCk7CiAKICAgICAgICAgdmlydHVh
bCBib29sIGlzV29ya2VyR2xvYmFsU2NvcGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVl
OyB9CiAKLSAgICAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREU7CisgICAgICAgIHZpcnR1YWwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFIEZJ
TkFMIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8V29ya2VyR2xvYmFsU2NvcGUqPih0aGlzKTsgfQogCiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBpc1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzRGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMTQ5LDEwICsxNDksOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWZTY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkgT1ZFUlJJREUgeyByZWYoKTsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGVy
ZWZTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgT1ZFUlJJREUgeyBkZXJlZigpOyB9CiAKLSAgICAg
ICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyByZWYoKTsgfQotICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgZGVyZWYoKTsg
fQotICAgICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkgT1ZF
UlJJREU7Ci0gICAgICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhJiBlbnN1cmVFdmVudFRhcmdl
dERhdGEoKSBPVkVSUklERTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkg
T1ZFUlJJREUgRklOQUwgeyByZWYoKTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVu
dFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgZGVyZWYoKTsgfQogCiAgICAgICAgIHZpcnR1YWwg
dm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgdW5zaWduZWQgbGluZU51bWJlciwg
dW5zaWduZWQgY29sdW1uTnVtYmVyLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4sIEpTQzo6
RXhlY1N0YXRlKiA9IDAsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIgPSAwKSBPVkVS
UklERTsKICAgICAgICAgdmlydHVhbCB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsb25nIHJl
cXVlc3RJZGVudGlmaWVyID0gMCkgT1ZFUlJJREU7CkBAIC0xNzUsNyArMTczLDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBPd25QdHI8V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcj4g
bV93b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOwogI2VuZGlmCiAgICAgICAgIGJvb2wgbV9jbG9z
aW5nOwotICAgICAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CiAKICAgICAg
ICAgSGFzaFNldDxPYnNlcnZlcio+IG1fd29ya2VyT2JzZXJ2ZXJzOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCA2MGRkNWY3Li4xOWIxOTk0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTEzMDUsMjQgKzEzMDUsNCBAQCB2b2lkIFhNTEh0
dHBSZXF1ZXN0Ojpjb250ZXh0RGVzdHJveWVkKCkKICAgICBBY3RpdmVET01PYmplY3Q6OmNvbnRl
eHREZXN0cm95ZWQoKTsKIH0KIAotRXZlbnRUYXJnZXRJbnRlcmZhY2UgWE1MSHR0cFJlcXVlc3Q6
OmV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gWE1MSHR0cFJlcXVl
c3RFdmVudFRhcmdldEludGVyZmFjZVR5cGU7Ci19Ci0KLVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IFhNTEh0dHBSZXF1ZXN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci19Ci0KLUV2
ZW50VGFyZ2V0RGF0YSogWE1MSHR0cFJlcXVlc3Q6OmV2ZW50VGFyZ2V0RGF0YSgpCi17Ci0gICAg
cmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKLX0KLQotRXZlbnRUYXJnZXREYXRhJiBYTUxIdHRw
UmVxdWVzdDo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkKLXsKLSAgICByZXR1cm4gbV9ldmVudFRh
cmdldERhdGE7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmgKaW5kZXggZGZhYTk5Ni4uNWQ5ZGM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmgKQEAgLTUxLDcgKzUxLDggQEAgY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3Mg
VGV4dFJlc291cmNlRGVjb2RlcjsKIGNsYXNzIFRocmVhZGFibGVMb2FkZXI7CiAKLWNsYXNzIFhN
TEh0dHBSZXF1ZXN0IDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8
WE1MSHR0cFJlcXVlc3Q+LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHByaXZhdGUgVGhyZWFkYWJsZUxv
YWRlckNsaWVudCwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CisvLyBGSVhNRTogVGhpcyBjbGFz
cyBzaG91bGQgYmUgbWFya2VkIEZJTkFMIG9uY2UgPGh0dHA6Ly93ZWJraXQub3JnL2IvMTIxNzQ3
PiBpcyBmaXhlZC4KK2NsYXNzIFhNTEh0dHBSZXF1ZXN0IDogcHVibGljIFNjcmlwdFdyYXBwYWJs
ZSwgcHVibGljIFJlZkNvdW50ZWQ8WE1MSHR0cFJlcXVlc3Q+LCBwdWJsaWMgRXZlbnRUYXJnZXRX
aXRoRGF0YSwgcHJpdmF0ZSBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LCBwdWJsaWMgQWN0aXZlRE9N
T2JqZWN0IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxYTUxIdHRwUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqKTsKQEAgLTgyLDggKzgzLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRUaW1l
b3V0KCk7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRU
YXJnZXRJbnRlcmZhY2UoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEV2ZW50VGFy
Z2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgT1ZFUlJJREUgRklOQUwg
eyByZXR1cm4gWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KKyAgICB2
aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsgfQogCiAgICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4g
bV91cmw7IH0KICAgICBTdHJpbmcgc3RhdHVzVGV4dChFeGNlcHRpb25Db2RlJikgY29uc3Q7CkBA
IC0xNjcsMTAgKzE2OCw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZSgpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IHJlZigpOyB9Ci0gICAgdmlydHVhbCB2
b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IGRlcmVmKCk7IH0KLSAgICB2aXJ0dWFs
IEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCBFdmVudFRhcmdldERhdGEmIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgcmVmKCk7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgZGVy
ZWYoKTsgfQogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7CiAgICAgU2VjdXJpdHlP
cmlnaW4qIHNlY3VyaXR5T3JpZ2luKCkgY29uc3Q7CkBAIC0yNTQsOCArMjUzLDYgQEAgcHJpdmF0
ZToKICAgICBTdHJpbmcgbV9sYXN0U2VuZFVSTDsKICAgICBFeGNlcHRpb25Db2RlIG1fZXhjZXB0
aW9uQ29kZTsKIAotICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKLQogICAg
IFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxlIG1fcHJvZ3Jlc3NFdmVudFRocm90
dGxlOwogCiAgICAgLy8gQW4gZW51bSBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbGxvd2VkIHN0cmlu
ZyB2YWx1ZXMgZm9yIHRoZSByZXNwb25zZVR5cGUgYXR0cmlidXRlLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0VXBsb2FkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdFVwbG9hZC5jcHAKaW5kZXggM2EyNzY2NS4uMThjOTk0YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0VXBsb2FkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RVcGxvYWQuY3BwCkBAIC00MSwyNiAr
NDEsNiBAQCBYTUxIdHRwUmVxdWVzdFVwbG9hZDo6WE1MSHR0cFJlcXVlc3RVcGxvYWQoWE1MSHR0
cFJlcXVlc3QqIHhtbEh0dHBSZXF1ZXN0KQogewogfQogCi1FdmVudFRhcmdldEludGVyZmFjZSBY
TUxIdHRwUmVxdWVzdFVwbG9hZDo6ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdAotewotICAg
IHJldHVybiBYTUxIdHRwUmVxdWVzdFVwbG9hZEV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsKLX0K
LQotU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogWE1MSHR0cFJlcXVlc3RVcGxvYWQ6OnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdAotewotICAgIHJldHVybiBtX3htbEh0dHBSZXF1ZXN0LT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci19Ci0KLUV2ZW50VGFyZ2V0RGF0YSogWE1MSHR0cFJl
cXVlc3RVcGxvYWQ6OmV2ZW50VGFyZ2V0RGF0YSgpCi17Ci0gICAgcmV0dXJuICZtX2V2ZW50VGFy
Z2V0RGF0YTsKLX0KLQotRXZlbnRUYXJnZXREYXRhJiBYTUxIdHRwUmVxdWVzdFVwbG9hZDo6ZW5z
dXJlRXZlbnRUYXJnZXREYXRhKCkKLXsKLSAgICByZXR1cm4gbV9ldmVudFRhcmdldERhdGE7Ci19
Ci0KIHZvaWQgWE1MSHR0cFJlcXVlc3RVcGxvYWQ6OmRpc3BhdGNoRXZlbnRBbmRMb2FkRW5kKFBh
c3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogewogICAgIEFTU0VSVChldmVudC0+dHlwZSgpID09IGV2
ZW50TmFtZXMoKS5sb2FkRXZlbnQgfHwgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuYWJv
cnRFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50IHx8IGV2
ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLnRpbWVvdXRFdmVudCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RVcGxvYWQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdFVwbG9hZC5oCmluZGV4IDNhMjUzODEuLjY4MDE3MDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdFVwbG9hZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdFVwbG9hZC5oCkBAIC00Myw3ICs0Myw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owog
ICAgIGNsYXNzIFhNTEh0dHBSZXF1ZXN0OwogCi0gICAgY2xhc3MgWE1MSHR0cFJlcXVlc3RVcGxv
YWQgOiBwdWJsaWMgRXZlbnRUYXJnZXQgeworICAgIC8vIEZJWE1FOiBUaGlzIGNsYXNzIHNob3Vs
ZCBiZSBtYXJrZWQgRklOQUwgb25jZSA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMjE3NDc+IGlzIGZp
eGVkLgorICAgIGNsYXNzIFhNTEh0dHBSZXF1ZXN0VXBsb2FkIDogcHVibGljIEV2ZW50VGFyZ2V0
V2l0aERhdGEgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8WE1MSHR0
cFJlcXVlc3RVcGxvYWQ+IGNyZWF0ZShYTUxIdHRwUmVxdWVzdCogeG1sSHR0cFJlcXVlc3QpCiAg
ICAgICAgIHsKQEAgLTU0LDggKzU1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
b2lkIGRlcmVmKCkgeyBtX3htbEh0dHBSZXF1ZXN0LT5kZXJlZigpOyB9CiAgICAgICAgIFhNTEh0
dHBSZXF1ZXN0KiB4bWxIdHRwUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1feG1sSHR0cFJlcXVl
c3Q7IH0KIAotICAgICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0
SW50ZXJmYWNlKCkgY29uc3Q7Ci0gICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBFdmVudFRhcmdldElu
dGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0
dXJuIFhNTEh0dHBSZXF1ZXN0VXBsb2FkRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CisgICAg
ICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIG1feG1sSHR0cFJlcXVlc3QtPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogCiAgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRf
TElTVEVORVIoYWJvcnQpOwogICAgICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVS
KGVycm9yKTsKQEAgLTY5LDEzICs3MCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHJp
dmF0ZToKICAgICAgICAgZXhwbGljaXQgWE1MSHR0cFJlcXVlc3RVcGxvYWQoWE1MSHR0cFJlcXVl
c3QqKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7
IHJlZigpOyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJ
REUgeyBkZXJlZigpOyB9Ci0gICAgICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRh
cmdldERhdGEoKSBPVkVSUklERTsKLSAgICAgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEmIGVu
c3VyZUV2ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURFOworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVm
RXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7IHJlZigpOyB9CisgICAgICAgIHZpcnR1YWwg
dm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgRklOQUwgeyBkZXJlZigpOyB9CiAKICAg
ICAgICAgWE1MSHR0cFJlcXVlc3QqIG1feG1sSHR0cFJlcXVlc3Q7Ci0gICAgICAgIEV2ZW50VGFy
Z2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKICAgICB9OwogICAgIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQo=
</data>
<flag name="review"
          id="234831"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212609</attachid>
            <date>2013-09-25 11:22:20 -0700</date>
            <delta_ts>2013-09-25 11:51:43 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>land-121915.diff</filename>
            <type>text/plain</type>
            <size>102955</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NzUxY2NiLi5jYTdkOTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQg
QEAKKzIwMTMtMDktMjUgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAg
ICAgIFJlZHVjZSByZXBldGl0aXZlIEV2ZW50VGFyZ2V0IHN1YmNsYXNzaW5nLgorICAgICAgICA8
aHR0cHM6Ly93ZWJraXQub3JnL2IvMTIxOTE1PgorCisgICAgICAgIFJldmlld2VkIGJ5IEFudHRp
IEtvaXZpc3RvLgorCisgICAgICAgIEFkZCBhIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEgaGVs
cGVyIGNsYXNzIHRvIEV2ZW50VGFyZ2V0LmguCisgICAgICAgIEl0J3MgYSBzaW1wbGUgc3ViY2xh
c3Mgd2l0aCBhbiBFdmVudFRhcmdldERhdGEgbWVtYmVyIGFuZCBGSU5BTAorICAgICAgICBldmVu
dFRhcmdldERhdGEoKS9lbnN1cmVFdmVudFRhcmdldERhdGEoKSBvdmVycmlkZXMuCisKKyAgICAg
ICAgVHVybnMgb3V0IHRoYXQgdGhpcyBmaXRzIGFsbW9zdCBldmVyeSB1c2UgY2FzZSBleGNlcHQg
Tm9kZSBhbmQKKyAgICAgICAgU1ZHRWxlbWVudEluc3RhbmNlLgorCisgICAgICAgIElubGluZWQg
bW9zdCBvZiB0aGUgRklOQUwgRXZlbnRUYXJnZXQgb3ZlcnJpZGVzIHNpbmNlIHRoZXkgd2lsbAor
ICAgICAgICBiZSBjYWxsZWQgb24gdGlnaHQgcG9pbnRlcnMgYnkgZ2VuZXJhdGVkIGJpbmRpbmdz
IGNvZGUgYW5kIHRoaXMKKyAgICAgICAgcmVtb3ZlcyB0aGUgbmVlZCBmb3IgdmlydHVhbCBkaXNw
YXRjaC4KKworICAgICAgICBTcGFtbWVkIE9WRVJSSURFIEZJTkFMIGFzIGFwcHJvcHJpYXRlLCB3
ZSBjYW4ndCBtYWtlIHRoZSB3aG9sZQorICAgICAgICBjbGFzc2VzIEZJTkFMIHVudGlsIGJ1ZyAx
MjE3NDcgaXMgZml4ZWQsIHNvIGFkZGVkIEZJWE1Fcy4KKwogMjAxMy0wOS0yNSAgQWxsYW4gU2Fu
ZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KIAogICAgICAgICBbUXRdIEZp
eCBidWlsZCB3aXRoICFFTkFCTEUoQkxPQikgYWZ0ZXIgcjE1NjMzMApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3Bw
CmluZGV4IDdkNDZhMTUuLmE0YjYyMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKQEAgLTIxOSwxNiAr
MjE5LDYgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OmFkZEtleVRpbWVyRmlyZWQoVGltZXI8TWVk
aWFLZXlTZXNzaW9uPiopCiAgICAgfQogfQogCi1FdmVudFRhcmdldEludGVyZmFjZSBNZWRpYUtl
eVNlc3Npb246OmV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gTWVk
aWFLZXlTZXNzaW9uRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOwotfQotCi1TY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBNZWRpYUtleVNlc3Npb246OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25z
dAotewotICAgIHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOwotfQotCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKaW5kZXggOWVlNDMy
Ni4uMGRmZDM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCkBAIC00NSw3ICs0NSw4IEBAIGNsYXNzIE1lZGlh
S2V5RXJyb3I7CiBjbGFzcyBNZWRpYUtleXM7CiBjbGFzcyBDRE1TZXNzaW9uOwogCi1jbGFzcyBN
ZWRpYUtleVNlc3Npb24gOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYUtleVNlc3Npb24+LCBwdWJs
aWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CisvLyBG
SVhNRTogVGhpcyBjbGFzcyBzaG91bGQgYmUgbWFya2VkIEZJTkFMIG9uY2UgPGh0dHA6Ly93ZWJr
aXQub3JnL2IvMTIxNzQ3PiBpcyBmaXhlZC4KK2NsYXNzIE1lZGlhS2V5U2Vzc2lvbiA6IHB1Ymxp
YyBSZWZDb3VudGVkPE1lZGlhS2V5U2Vzc2lvbj4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxp
bmVEYXRhLCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgogICAg
IHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhS2V5U2Vzc2lvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBNZWRpYUtleXMqLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7CiAgICAgfk1l
ZGlhS2V5U2Vzc2lvbigpOwpAQCAtNzIsOCArNzMsOCBAQCBwdWJsaWM6CiAgICAgREVGSU5FX0FU
VFJJQlVURV9FVkVOVF9MSVNURU5FUih3ZWJraXRrZXllcnJvcik7CiAgICAgREVGSU5FX0FUVFJJ
QlVURV9FVkVOVF9MSVNURU5FUih3ZWJraXRrZXltZXNzYWdlKTsKIAotICAgIHZpcnR1YWwgRXZl
bnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2
ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gTWVkaWFL
ZXlTZXNzaW9uRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CisgICAgdmlydHVhbCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREUg
RklOQUwgeyByZXR1cm4gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgTWVkaWFLZXlTZXNzaW9uKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBNZWRpYUtleXMqLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7CkBA
IC05OSwxMyArMTAwLDggQEAgcHJvdGVjdGVkOgogICAgIFRpbWVyPE1lZGlhS2V5U2Vzc2lvbj4g
bV9hZGRLZXlUaW1lcjsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJn
ZXQoKSBPVkVSUklERSB7IHJlZigpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJn
ZXQoKSBPVkVSUklERSB7IGRlcmVmKCk7IH0KLQotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRh
KiBldmVudFRhcmdldERhdGEoKSBPVkVSUklERSB7IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7
IH0KLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSYgZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkg
T1ZFUlJJREUgeyByZXR1cm4gbV9ldmVudFRhcmdldERhdGE7IH0KLQotICAgIEV2ZW50VGFyZ2V0
RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQo
KSBPVkVSUklERSBGSU5BTCB7IHJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRU
YXJnZXQoKSBPVkVSUklERSBGSU5BTCB7IGRlcmVmKCk7IH0KIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyLmNwcAppbmRleCA1MzcyMjM3
Li41NTdiYzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RmlsZVdyaXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0Zp
bGVXcml0ZXIuY3BwCkBAIC03NSwxMSArNzUsNiBAQCBGaWxlV3JpdGVyOjp+RmlsZVdyaXRlcigp
CiAgICAgICAgIHN0b3AoKTsKIH0KIAotRXZlbnRUYXJnZXRJbnRlcmZhY2UgRmlsZVdyaXRlcjo6
ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdAotewotICAgIHJldHVybiBGaWxlV3JpdGVyRXZl
bnRUYXJnZXRJbnRlcmZhY2VUeXBlOwotfQotCiBib29sIEZpbGVXcml0ZXI6OmNhblN1c3BlbmQo
KSBjb25zdAogewogICAgIC8vIEZJWE1FOiBJdCBpcyBub3QgY3VycmVudGx5IHBvc3NpYmxlIHRv
IHN1c3BlbmQgYSBGaWxlV3JpdGVyLCBzbyBwYWdlcyB3aXRoIEZpbGVXcml0ZXIgY2FuIG5vdCBn
byBpbnRvIHBhZ2UgY2FjaGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vRmlsZVdyaXRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
L0ZpbGVXcml0ZXIuaAppbmRleCBkYzIwZDM1Li4zZWEwN2QwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyLmgKQEAgLTQ2LDcgKzQ2LDggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYjsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ7CiAKLWNsYXNzIEZpbGVXcml0ZXIgOiBwdWJsaWMgRmlsZVdyaXRlckJhc2UsIHB1YmxpYyBB
Y3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIEFzeW5jRmlsZVdyaXRl
ckNsaWVudCB7CisvLyBGSVhNRTogVGhpcyBjbGFzcyBzaG91bGQgYmUgbWFya2VkIEZJTkFMIG9u
Y2UgPGh0dHA6Ly93ZWJraXQub3JnL2IvMTIxNzQ3PiBpcyBmaXhlZC4KK2NsYXNzIEZpbGVXcml0
ZXIgOiBwdWJsaWMgRmlsZVdyaXRlckJhc2UsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1Ymxp
YyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQXN5bmNGaWxlV3JpdGVyQ2xpZW50
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlV3JpdGVyPiBjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopOwogCkBAIC02OSw4ICs3MCw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRpZEZhaWwoRmlsZUVycm9yOjpFcnJvckNvZGUpOwogCiAgICAgLy8gRXZlbnRUYXJnZXQK
LSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7IH0KKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFy
Z2V0SW50ZXJmYWNlKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gRmlsZVdyaXRlckV2
ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQorICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0
dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAKICAgICB1
c2luZyBSZWZDb3VudGVkPEZpbGVXcml0ZXJCYXNlPjo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50
ZWQ8RmlsZVdyaXRlckJhc2U+OjpkZXJlZjsKQEAgLTk5LDEwICsxMDAsOCBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7CiAKICAgICAvLyBFdmVudFRhcmdldAot
ICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgcmVmKCk7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgZGVyZWYoKTsgfQot
ICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKSBPVkVSUklERSB7
IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7IH0KLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0
YSYgZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREUgeyByZXR1cm4gbV9ldmVudFRhcmdl
dERhdGE7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5B
TCB7IHJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklE
RSBGSU5BTCB7IGRlcmVmKCk7IH0KIAogICAgIHZvaWQgY29tcGxldGVBYm9ydCgpOwogCkBAIC0x
MTUsNyArMTE0LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVycm9yKEZpbGVFcnJvcjo6RXJy
b3JDb2RlLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBSZWZQdHI8RmlsZUVycm9yPiBtX2Vycm9y
OwotICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKICAgICBSZWFkeVN0YXRl
IG1fcmVhZHlTdGF0ZTsKICAgICBPcGVyYXRpb24gbV9vcGVyYXRpb25JblByb2dyZXNzOwogICAg
IE9wZXJhdGlvbiBtX3F1ZXVlZE9wZXJhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAppbmRleCAwOThkMDY2Li45NDhmZDEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCkBA
IC0zNTEsNyArMzUxLDcgQEAgYm9vbCBJREJEYXRhYmFzZTo6aGFzUGVuZGluZ0FjdGl2aXR5KCkg
Y29uc3QKIHsKICAgICAvLyBUaGUgc2NyaXB0IHdyYXBwZXIgbXVzdCBub3QgYmUgY29sbGVjdGVk
IGJlZm9yZSB0aGUgb2JqZWN0IGlzIGNsb3NlZCBvcgogICAgIC8vIHdlIGNhbid0IGZpcmUgYSAi
dmVyc2lvbmNoYW5nZSIgZXZlbnQgdG8gbGV0IHNjcmlwdCBtYW51YWxseSBjbG9zZSB0aGUgY29u
bmVjdGlvbi4KLSAgICByZXR1cm4gIW1fY2xvc2VQZW5kaW5nICYmICFtX2V2ZW50VGFyZ2V0RGF0
YS5ldmVudExpc3RlbmVyTWFwLmlzRW1wdHkoKSAmJiAhbV9jb250ZXh0U3RvcHBlZDsKKyAgICBy
ZXR1cm4gIW1fY2xvc2VQZW5kaW5nICYmICFlbnN1cmVFdmVudFRhcmdldERhdGEoKS5ldmVudExp
c3RlbmVyTWFwLmlzRW1wdHkoKSAmJiAhbV9jb250ZXh0U3RvcHBlZDsKIH0KIAogdm9pZCBJREJE
YXRhYmFzZTo6c3RvcCgpCkBAIC0zNjIsMjYgKzM2Miw2IEBAIHZvaWQgSURCRGF0YWJhc2U6OnN0
b3AoKQogICAgIG1fY29udGV4dFN0b3BwZWQgPSB0cnVlOwogfQogCi1FdmVudFRhcmdldEludGVy
ZmFjZSBJREJEYXRhYmFzZTo6ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdAotewotICAgIHJl
dHVybiBJREJEYXRhYmFzZUV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsKLX0KLQotU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogSURCRGF0YWJhc2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25z
dAotewotICAgIHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKLX0KLQotRXZlbnRUYXJnZXREYXRhKiBJREJEYXRhYmFzZTo6ZXZlbnRUYXJnZXREYXRhKCkK
LXsKLSAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOwotfQotCi1FdmVudFRhcmdldERhdGEm
IElEQkRhdGFiYXNlOjplbnN1cmVFdmVudFRhcmdldERhdGEoKQotewotICAgIHJldHVybiBtX2V2
ZW50VGFyZ2V0RGF0YTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2UuaAppbmRleCAyYTExOTI1Li45NmQ1YmViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKQEAgLTQ5LDcgKzQ5LDgg
QEAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAogdHlwZWRlZiBpbnQgRXhjZXB0aW9u
Q29kZTsKIAotY2xhc3MgSURCRGF0YWJhc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxJREJEYXRhYmFz
ZT4sIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIEFj
dGl2ZURPTU9iamVjdCB7CisvLyBGSVhNRTogVGhpcyBjbGFzcyBzaG91bGQgYmUgbWFya2VkIEZJ
TkFMIG9uY2UgPGh0dHA6Ly93ZWJraXQub3JnL2IvMTIxNzQ3PiBpcyBmaXhlZC4KK2NsYXNzIElE
QkRhdGFiYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8SURCRGF0YWJhc2U+LCBwdWJsaWMgU2NyaXB0
V3JhcHBhYmxlLCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIEFjdGl2
ZURPTU9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCRGF0YWJhc2U+
IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJh
Y2tlbmRJbnRlcmZhY2U+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPik7CiAgICAg
fklEQkRhdGFiYXNlKCk7CkBAIC04NCw4ICs4NSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv
b2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICAvLyBFdmVudFRh
cmdldAotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZh
Y2UoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNl
IGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gSURC
RGF0YWJhc2VFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KKyAgICB2aXJ0dWFsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERSBG
SU5BTCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsg
fQogCiAgICAgYm9vbCBpc0Nsb3NlUGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY2xvc2VQZW5k
aW5nOyB9CiAgICAgdm9pZCBmb3JjZUNsb3NlKCk7CkBAIC0xMTUsMTAgKzExNiw4IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKSBPVkVSUklERTsKIAogICAgIC8vIEV2ZW50VGFy
Z2V0Ci0gICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyByZWYoKTsg
fQotICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyBkZXJlZigp
OyB9Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpIE9WRVJS
SURFOwotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhJiBlbnN1cmVFdmVudFRhcmdldERhdGEo
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBG
SU5BTCB7IHJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVS
UklERSBGSU5BTCB7IGRlcmVmKCk7IH0KIAogICAgIHZvaWQgY2xvc2VDb25uZWN0aW9uKCk7CiAK
QEAgLTEzMSw4ICsxMzAsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9jbG9zZVBlbmRpbmc7CiAg
ICAgYm9vbCBtX2NvbnRleHRTdG9wcGVkOwogCi0gICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRU
YXJnZXREYXRhOwotCiAgICAgLy8gS2VlcCB0cmFjayBvZiB0aGUgdmVyc2lvbmNoYW5nZSBldmVu
dHMgd2FpdGluZyB0byBiZSBmaXJlZCBvbiB0aGlzCiAgICAgLy8gZGF0YWJhc2Ugc28gdGhhdCB3
ZSBjYW4gY2FuY2VsIHRoZW0gaWYgdGhlIGRhdGFiYXNlIGNsb3Nlcy4KICAgICBWZWN0b3I8UmVm
UHRyPEV2ZW50PiA+IG1fZW5xdWV1ZWRFdmVudHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCmluZGV4IDgwMDBkZjguLjQ3ZjU1ZmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCkBAIC00
MzksMTEgKzQzOSw2IEBAIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIElEQlJlcXVlc3Q6OmV2ZW50VGFy
Z2V0SW50ZXJmYWNlKCkgY29uc3QKICAgICByZXR1cm4gSURCUmVxdWVzdEV2ZW50VGFyZ2V0SW50
ZXJmYWNlVHlwZTsKIH0KIAotU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogSURCUmVxdWVzdDo6c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEFjdGl2ZURPTU9iamVj
dDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotfQotCiBib29sIElEQlJlcXVlc3Q6OmRpc3Bh
dGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiB7CiAgICAgSURCX1RSQUNFKCJJREJS
ZXF1ZXN0OjpkaXNwYXRjaEV2ZW50Iik7CkBAIC01NTgsMTYgKzU1Myw2IEBAIHZvaWQgSURCUmVx
dWVzdDo6ZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogICAgICAgICBtX2Vu
cXVldWVkRXZlbnRzLmFwcGVuZChldmVudCk7CiB9CiAKLUV2ZW50VGFyZ2V0RGF0YSogSURCUmVx
dWVzdDo6ZXZlbnRUYXJnZXREYXRhKCkKLXsKLSAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRh
OwotfQotCi1FdmVudFRhcmdldERhdGEmIElEQlJlcXVlc3Q6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0
YSgpCi17Ci0gICAgcmV0dXJuIG1fZXZlbnRUYXJnZXREYXRhOwotfQotCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCUmVxdWVzdC5oCmluZGV4IDljMTk3ZjguLmU1Y2NjYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3Mg
SURCVHJhbnNhY3Rpb247CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKLWNsYXNzIElE
QlJlcXVlc3QgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgSURCQ2FsbGJhY2tzLCBw
dWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgeworY2xhc3MgSURCUmVx
dWVzdCA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBJREJDYWxsYmFja3MsIHB1Ymxp
YyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIElEQlRyYW5zYWN0aW9u
Kik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBJREJEYXRhYmFzZUJhY2tl
bmRJbnRlcmZhY2U6OlRhc2tUeXBlLCBJREJUcmFuc2FjdGlvbiopOwpAQCAtOTgsOSArOTgsOSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IE9W
RVJSSURFOwogCiAgICAgLy8gRXZlbnRUYXJnZXQKLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50
ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7Ci0gICAgdmly
dHVhbCB2b2lkIHVuY2F1Z2h0RXhjZXB0aW9uSW5FdmVudEhhbmRsZXIoKTsKKyAgICB2aXJ0dWFs
IEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0Ojpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdW5jYXVnaHRFeGNl
cHRpb25JbkV2ZW50SGFuZGxlcigpIE9WRVJSSURFIEZJTkFMOwogCiAgICAgdXNpbmcgRXZlbnRU
YXJnZXQ6OmRpc3BhdGNoRXZlbnQ7CiAgICAgdmlydHVhbCBib29sIGRpc3BhdGNoRXZlbnQoUGFz
c1JlZlB0cjxFdmVudD4pIE9WRVJSSURFOwpAQCAtMTM1LDEwICsxMzUsOCBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7CiAKICAgICAvLyBFdmVudFRhcmdldAot
ICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgcmVmKCk7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgZGVyZWYoKTsgfQot
ICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSYgZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgRklOQUwg
eyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUg
RklOQUwgeyBkZXJlZigpOyB9CiAKICAgICBQYXNzUmVmUHRyPElEQkN1cnNvcj4gZ2V0UmVzdWx0
Q3Vyc29yKCk7CiAgICAgdm9pZCBzZXRSZXN1bHRDdXJzb3IoUGFzc1JlZlB0cjxJREJDdXJzb3I+
LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBjb25z
dCBTY3JpcHRWYWx1ZSYpOwpAQCAtMTYwLDcgKzE1OCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2RpZEZpcmVVcGdyYWRlTmVlZGVkRXZlbnQ7CiAgICAgYm9vbCBtX3ByZXZlbnRQcm9wYWdhdGlv
bjsKIAotICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKICAgICBET01SZXF1
ZXN0U3RhdGUgbV9yZXF1ZXN0U3RhdGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggZmE4NDU5ZS4uMDBiZGE0
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmNwcApAQCAtMzY4LDE2ICszNjgsNiBAQCBjb25zdCBBdG9taWNTdHJpbmcmIElEQlRy
YW5zYWN0aW9uOjptb2RlVG9TdHJpbmcoSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUgbW9kZQog
ICAgIHJldHVybiBJREJUcmFuc2FjdGlvbjo6bW9kZVJlYWRPbmx5KCk7CiB9CiAKLUV2ZW50VGFy
Z2V0SW50ZXJmYWNlIElEQlRyYW5zYWN0aW9uOjpldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIElEQlRyYW5zYWN0aW9uRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOwot
fQotCi1TY3JpcHRFeGVjdXRpb25Db250ZXh0KiBJREJUcmFuc2FjdGlvbjo6c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOwotfQotCiBib29sIElEQlRyYW5zYWN0aW9uOjpkaXNwYXRjaEV2
ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogewogICAgIElEQl9UUkFDRSgiSURCVHJhbnNh
Y3Rpb246OmRpc3BhdGNoRXZlbnQiKTsKQEAgLTQzNiwxNiArNDI2LDYgQEAgdm9pZCBJREJUcmFu
c2FjdGlvbjo6ZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogICAgIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKS0+ZXZlbnRRdWV1ZSgpLmVucXVldWVFdmVudChldmVudCk7CiB9
CiAKLUV2ZW50VGFyZ2V0RGF0YSogSURCVHJhbnNhY3Rpb246OmV2ZW50VGFyZ2V0RGF0YSgpCi17
Ci0gICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKLX0KLQotRXZlbnRUYXJnZXREYXRhJiBJ
REJUcmFuc2FjdGlvbjo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkKLXsKLSAgICByZXR1cm4gbV9l
dmVudFRhcmdldERhdGE7Ci19Ci0KIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZSogSURCVHJh
bnNhY3Rpb246OmJhY2tlbmREQigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGRiKCktPmJhY2tlbmQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bi5oCmluZGV4IDhmMWQyYWIuLjg5NzAxNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaApAQCAtNTAsNyArNTAsOCBAQCBjbGFzcyBJ
REJPYmplY3RTdG9yZTsKIGNsYXNzIElEQk9wZW5EQlJlcXVlc3Q7CiBzdHJ1Y3QgSURCT2JqZWN0
U3RvcmVNZXRhZGF0YTsKIAotY2xhc3MgSURCVHJhbnNhY3Rpb24gOiBwdWJsaWMgU2NyaXB0V3Jh
cHBhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxJREJUcmFuc2FjdGlvbj4sIHB1YmxpYyBFdmVudFRh
cmdldCwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CisvLyBGSVhNRTogVGhpcyBjbGFzcyBzaG91
bGQgYmUgbWFya2VkIEZJTkFMIG9uY2UgPGh0dHA6Ly93ZWJraXQub3JnL2IvMTIxNzQ3PiBpcyBm
aXhlZC4KK2NsYXNzIElEQlRyYW5zYWN0aW9uIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVi
bGljIFJlZkNvdW50ZWQ8SURCVHJhbnNhY3Rpb24+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5s
aW5lRGF0YSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
aW50NjRfdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIG9iamVjdFN0b3JlTmFtZXMsIEluZGV4ZWRE
Qjo6VHJhbnNhY3Rpb25Nb2RlLCBJREJEYXRhYmFzZSopOwogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PElEQlRyYW5zYWN0aW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGludDY0X3Qs
IElEQkRhdGFiYXNlKiwgSURCT3BlbkRCUmVxdWVzdCosIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRh
dGEmIHByZXZpb3VzTWV0YWRhdGEpOwpAQCAtMTA2LDExICsxMDcsMTEgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBvbkNvbXBsZXRlKCk7CiAKICAgICAvLyBFdmVudFRhcmdldAotICAgIHZp
cnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdDsK
LSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0
SW50ZXJmYWNlKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gSURCVHJhbnNhY3Rpb25F
dmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KKyAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJl
dHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogCiAgICAg
dXNpbmcgRXZlbnRUYXJnZXQ6OmRpc3BhdGNoRXZlbnQ7Ci0gICAgdmlydHVhbCBib29sIGRpc3Bh
dGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBk
aXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KSBPVkVSUklERSBGSU5BTDsKIAogICAgIC8v
IEFjdGl2ZURPTU9iamVjdAogICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBj
b25zdCBPVkVSUklERTsKQEAgLTEzMiwxMCArMTMzLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgc3RvcCgpIE9WRVJSSURFOwogCiAgICAgLy8gRXZlbnRUYXJnZXQKLSAgICB2aXJ0dWFs
IHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IHJlZigpOyB9Ci0gICAgdmlydHVhbCB2
b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IGRlcmVmKCk7IH0KLSAgICB2aXJ0dWFs
IEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCBFdmVudFRhcmdldERhdGEmIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgcmVmKCk7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgZGVy
ZWYoKTsgfQogCiAgICAgZW51bSBTdGF0ZSB7CiAgICAgICAgIEluYWN0aXZlLCAvLyBDcmVhdGVk
IG9yIHN0YXJ0ZWQsIGJ1dCBub3QgaW4gYW4gZXZlbnQgY2FsbGJhY2sKQEAgLTE2OCw4ICsxNjcs
NiBAQCBwcml2YXRlOgogICAgIElEQkRhdGFiYXNlTWV0YWRhdGEgbV9wcmV2aW91c01ldGFkYXRh
OwogCiAgICAgSGFzaFNldDxJREJDdXJzb3IqPiBtX29wZW5DdXJzb3JzOwotCi0gICAgRXZlbnRU
YXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNv
dXJjZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNv
dXJjZUJhc2UuY3BwCmluZGV4IGNhNmI1OGUuLmYxNTAwZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VCYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlQmFzZS5jcHAKQEAgLTI5
NiwxNiArMjk2LDYgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogTWVkaWFTb3VyY2VCYXNlOjpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKICAgICByZXR1cm4gQWN0aXZlRE9NT2JqZWN0
OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiB9CiAKLUV2ZW50VGFyZ2V0RGF0YSogTWVkaWFT
b3VyY2VCYXNlOjpldmVudFRhcmdldERhdGEoKQotewotICAgIHJldHVybiAmbV9ldmVudFRhcmdl
dERhdGE7Ci19Ci0KLUV2ZW50VGFyZ2V0RGF0YSYgTWVkaWFTb3VyY2VCYXNlOjplbnN1cmVFdmVu
dFRhcmdldERhdGEoKQotewotICAgIHJldHVybiBtX2V2ZW50VGFyZ2V0RGF0YTsKLX0KLQogVVJM
UmVnaXN0cnkmIE1lZGlhU291cmNlQmFzZTo6cmVnaXN0cnkoKSBjb25zdAogewogICAgIHJldHVy
biBNZWRpYVNvdXJjZVJlZ2lzdHJ5OjpyZWdpc3RyeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZUJhc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VCYXNlLmgKaW5kZXggMWI5OGExMy4u
NWJlNWM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9N
ZWRpYVNvdXJjZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNl
L01lZGlhU291cmNlQmFzZS5oCkBAIC00Nyw3ICs0Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgR2VuZXJpY0V2ZW50UXVldWU7CiAKLWNsYXNzIE1lZGlhU291cmNlQmFzZSA6IHB1
YmxpYyBSZWZDb3VudGVkPE1lZGlhU291cmNlQmFzZT4sIHB1YmxpYyBIVE1MTWVkaWFTb3VyY2Us
IHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdldCB7CitjbGFzcyBNZWRp
YVNvdXJjZUJhc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVNvdXJjZUJhc2U+LCBwdWJsaWMg
SFRNTE1lZGlhU291cmNlLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRUYXJn
ZXRXaXRoSW5saW5lRGF0YSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmlu
ZyYgb3BlbktleXdvcmQoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBjbG9zZWRL
ZXl3b3JkKCk7CkBAIC04MSwxMSArODEsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN0
b3AoKSBPVkVSUklERTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQotICAgIHZpcnR1
YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEo
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSYgZW5zdXJlRXZlbnRUYXJn
ZXREYXRhKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZF
UlJJREUgeyByZWYoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZF
UlJJREUgeyBkZXJlZigpOyB9CisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREUgRklOQUw7CisgICAgdmlydHVh
bCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgRklOQUwgeyByZWYoKTsgfQorICAgIHZp
cnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgRklOQUwgeyBkZXJlZigpOyB9
CiAKICAgICAvLyBVUkxSZWdpc3RyYWJsZSBpbnRlcmZhY2UKICAgICB2aXJ0dWFsIFVSTFJlZ2lz
dHJ5JiByZWdpc3RyeSgpIGNvbnN0IE9WRVJSSURFOwpAQCAtMTA1LDcgKzEwMyw2IEBAIHByb3Rl
Y3RlZDoKIAogcHJpdmF0ZToKICAgICBPd25QdHI8TWVkaWFTb3VyY2VQcml2YXRlPiBtX3ByaXZh
dGU7Ci0gICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwogICAgIEF0b21pY1N0
cmluZyBtX3JlYWR5U3RhdGU7CiAgICAgR2VuZXJpY0V2ZW50UXVldWUgbV9hc3luY0V2ZW50UXVl
dWU7CiAgICAgYm9vbCBtX2F0dGFjaGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCmluZGV4IDdmYjRjZjIuLjNjYTg3MmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZl
ci5jcHAKQEAgLTIwOSwyNiArMjA5LDYgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnN0b3AoKQogICAg
IG1fYXBwZW5kQnVmZmVyVGltZXIuc3RvcCgpOwogfQogCi1TY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBTb3VyY2VCdWZmZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAotewotICAgIHJl
dHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLX0KLQotRXZl
bnRUYXJnZXRJbnRlcmZhY2UgU291cmNlQnVmZmVyOjpldmVudFRhcmdldEludGVyZmFjZSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIFNvdXJjZUJ1ZmZlckV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsK
LX0KLQotRXZlbnRUYXJnZXREYXRhKiBTb3VyY2VCdWZmZXI6OmV2ZW50VGFyZ2V0RGF0YSgpCi17
Ci0gICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKLX0KLQotRXZlbnRUYXJnZXREYXRhJiBT
b3VyY2VCdWZmZXI6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCi17Ci0gICAgcmV0dXJuIG1fZXZl
bnRUYXJnZXREYXRhOwotfQotCiBib29sIFNvdXJjZUJ1ZmZlcjo6aXNSZW1vdmVkKCkgY29uc3QK
IHsKICAgICByZXR1cm4gIW1fc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKaW5kZXggMWRkNzkzNi4uMjUyMzM2MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCkBA
IC00OSw3ICs0OSw4IEBAIGNsYXNzIE1lZGlhU291cmNlOwogY2xhc3MgU291cmNlQnVmZmVyUHJp
dmF0ZTsKIGNsYXNzIFRpbWVSYW5nZXM7CiAKLWNsYXNzIFNvdXJjZUJ1ZmZlciA6IHB1YmxpYyBS
ZWZDb3VudGVkPFNvdXJjZUJ1ZmZlcj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBF
dmVudFRhcmdldCwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7CisvLyBGSVhNRTogVGhpcyBjbGFz
cyBzaG91bGQgYmUgbWFya2VkIEZJTkFMIG9uY2UgPGh0dHA6Ly93ZWJraXQub3JnL2IvMTIxNzQ3
PiBpcyBmaXhlZC4KK2NsYXNzIFNvdXJjZUJ1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPFNvdXJj
ZUJ1ZmZlcj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJ
bmxpbmVEYXRhLCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTb3VyY2VCdWZmZXI+IGNyZWF0ZShQYXNzT3duUHRyPFNvdXJjZUJ1ZmZlclBy
aXZhdGU+LCBNZWRpYVNvdXJjZSopOwogCkBAIC03MiwxOCArNzMsMTYgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7CiAKICAgICAvLyBFdmVudFRhcmdldCBpbnRl
cmZhY2UKLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJm
YWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZF
UlJJREUgRklOQUwgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7IH0KKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50
ZXJmYWNlKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gU291cmNlQnVmZmVyRXZlbnRU
YXJnZXRJbnRlcmZhY2VUeXBlOyB9CiAKICAgICB1c2luZyBSZWZDb3VudGVkPFNvdXJjZUJ1ZmZl
cj46OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkPFNvdXJjZUJ1ZmZlcj46OmRlcmVmOwogCiBw
cm90ZWN0ZWQ6CiAgICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCi0gICAgdmlydHVhbCBFdmVu
dFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgRXZl
bnRUYXJnZXREYXRhJiBlbnN1cmVFdmVudFRhcmdldERhdGEoKSBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IHJlZigpOyB9Ci0gICAgdmlydHVh
bCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IGRlcmVmKCk7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7IHJlZigpOyB9CisgICAg
dmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7IGRlcmVmKCk7
IH0KIAogcHJpdmF0ZToKICAgICBTb3VyY2VCdWZmZXIoUGFzc093blB0cjxTb3VyY2VCdWZmZXJQ
cml2YXRlPiwgTWVkaWFTb3VyY2UqKTsKQEAgLTk3LDcgKzk2LDYgQEAgcHJpdmF0ZToKICAgICBP
d25QdHI8U291cmNlQnVmZmVyUHJpdmF0ZT4gbV9wcml2YXRlOwogICAgIE1lZGlhU291cmNlKiBt
X3NvdXJjZTsKICAgICBHZW5lcmljRXZlbnRRdWV1ZSBtX2FzeW5jRXZlbnRRdWV1ZTsKLSAgICBF
dmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CiAKICAgICBib29sIG1fdXBkYXRpbmc7
CiAgICAgZG91YmxlIG1fdGltZXN0YW1wT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyTGlzdC5jcHAKaW5kZXggZDI1OGEw
Zi4uMmRkN2I4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJj
ZS9Tb3VyY2VCdWZmZXJMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuY3BwCkBAIC03OCwyNSArNzgsNiBAQCB2b2lkIFNvdXJj
ZUJ1ZmZlckxpc3Q6OnNjaGVkdWxlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUp
CiAgICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KGV2ZW50LnJlbGVhc2UoKSk7CiB9
CiAKLUV2ZW50VGFyZ2V0SW50ZXJmYWNlIFNvdXJjZUJ1ZmZlckxpc3Q6OmV2ZW50VGFyZ2V0SW50
ZXJmYWNlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gU291cmNlQnVmZmVyTGlzdEV2ZW50VGFyZ2V0
SW50ZXJmYWNlVHlwZTsKLX0KLQotU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogU291cmNlQnVmZmVy
TGlzdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDsKLX0KLQotRXZlbnRUYXJnZXREYXRhKiBTb3VyY2VCdWZmZXJM
aXN0OjpldmVudFRhcmdldERhdGEoKQotewotICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7
Ci19Ci0KLUV2ZW50VGFyZ2V0RGF0YSYgU291cmNlQnVmZmVyTGlzdDo6ZW5zdXJlRXZlbnRUYXJn
ZXREYXRhKCkKLXsKLSAgICByZXR1cm4gbV9ldmVudFRhcmdldERhdGE7Ci19CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuaAppbmRleCA4MDEyMzI0Li4zZTA1Njk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxp
c3QuaApAQCAtNDMsNyArNDMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNvdXJj
ZUJ1ZmZlcjsKIAotY2xhc3MgU291cmNlQnVmZmVyTGlzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFNv
dXJjZUJ1ZmZlckxpc3Q+LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgRXZlbnRUYXJn
ZXQgeworLy8gRklYTUU6IFRoaXMgY2xhc3Mgc2hvdWxkIGJlIG1hcmtlZCBGSU5BTCBvbmNlIDxo
dHRwOi8vd2Via2l0Lm9yZy9iLzEyMTc0Nz4gaXMgZml4ZWQuCitjbGFzcyBTb3VyY2VCdWZmZXJM
aXN0IDogcHVibGljIFJlZkNvdW50ZWQ8U291cmNlQnVmZmVyTGlzdD4sIHB1YmxpYyBTY3JpcHRX
cmFwcGFibGUsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTb3VyY2VCdWZmZXJMaXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKICAgICB7CkBAIC02MCwyNSArNjEsMjAgQEAgcHVibGljOgog
ICAgIHZvaWQgY2xlYXIoKTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQotICAgIHZp
cnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50
ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1
cm4gU291cmNlQnVmZmVyTGlzdEV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQorICAgIHZpcnR1
YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0
IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsgfQogCiAg
ICAgdXNpbmcgUmVmQ291bnRlZDxTb3VyY2VCdWZmZXJMaXN0Pjo6cmVmOwogICAgIHVzaW5nIFJl
ZkNvdW50ZWQ8U291cmNlQnVmZmVyTGlzdD46OmRlcmVmOwogCi1wcm90ZWN0ZWQ6Ci0gICAgdmly
dHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURFOwotICAgIHZp
cnR1YWwgRXZlbnRUYXJnZXREYXRhJiBlbnN1cmVFdmVudFRhcmdldERhdGEoKSBPVkVSUklERTsK
LQogcHJpdmF0ZToKICAgICBTb3VyY2VCdWZmZXJMaXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
KTsKIAogICAgIHZvaWQgc2NoZWR1bGVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmKTsKIAotICAg
IHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgcmVmKCk7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgZGVyZWYoKTsgfQorICAg
IHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgcmVmKCk7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgZGVy
ZWYoKTsgfQogCi0gICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwogICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKICAgICBHZW5l
cmljRXZlbnRRdWV1ZSBtX2FzeW5jRXZlbnRRdWV1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9XZWJLaXRTb3VyY2VCdWZmZXJMaXN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvV2ViS2l0U291cmNlQnVmZmVyTGlzdC5j
cHAKaW5kZXggMDdiNmZhZS4uMzVmMWQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNvdXJjZS9XZWJLaXRTb3VyY2VCdWZmZXJMaXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1dlYktpdFNvdXJjZUJ1ZmZlckxpc3QuY3BwCkBA
IC05MywyNiArOTMsNiBAQCB2b2lkIFdlYktpdFNvdXJjZUJ1ZmZlckxpc3Q6OmNyZWF0ZUFuZEZp
cmVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSkKICAgICBtX2FzeW5jRXZlbnRR
dWV1ZS5lbnF1ZXVlRXZlbnQoZXZlbnQucmVsZWFzZSgpKTsKIH0KIAotRXZlbnRUYXJnZXRJbnRl
cmZhY2UgV2ViS2l0U291cmNlQnVmZmVyTGlzdDo6ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25z
dAotewotICAgIHJldHVybiBXZWJLaXRTb3VyY2VCdWZmZXJMaXN0RXZlbnRUYXJnZXRJbnRlcmZh
Y2VUeXBlOwotfQotCi1TY3JpcHRFeGVjdXRpb25Db250ZXh0KiBXZWJLaXRTb3VyY2VCdWZmZXJM
aXN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0OwotfQotCi1FdmVudFRhcmdldERhdGEqIFdlYktpdFNvdXJjZUJ1
ZmZlckxpc3Q6OmV2ZW50VGFyZ2V0RGF0YSgpCi17Ci0gICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0
RGF0YTsKLX0KLQotRXZlbnRUYXJnZXREYXRhJiBXZWJLaXRTb3VyY2VCdWZmZXJMaXN0OjplbnN1
cmVFdmVudFRhcmdldERhdGEoKQotewotICAgIHJldHVybiBtX2V2ZW50VGFyZ2V0RGF0YTsKLX0K
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvV2ViS2l0U291cmNlQnVmZmVyTGlzdC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9XZWJLaXRTb3VyY2VCdWZmZXJMaXN0LmgK
aW5kZXggOTEzYmQ1OC4uNzYwN2YyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9XZWJLaXRTb3VyY2VCdWZmZXJMaXN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9XZWJLaXRTb3VyY2VCdWZmZXJMaXN0LmgKQEAgLTQ0LDcg
KzQ0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgV2ViS2l0U291cmNlQnVmZmVyOwog
Y2xhc3MgR2VuZXJpY0V2ZW50UXVldWU7CiAKLWNsYXNzIFdlYktpdFNvdXJjZUJ1ZmZlckxpc3Qg
OiBwdWJsaWMgUmVmQ291bnRlZDxXZWJLaXRTb3VyY2VCdWZmZXJMaXN0PiwgcHVibGljIFNjcmlw
dFdyYXBwYWJsZSwgcHVibGljIEV2ZW50VGFyZ2V0IHsKKy8vIEZJWE1FOiBUaGlzIGNsYXNzIHNo
b3VsZCBiZSBtYXJrZWQgRklOQUwgb25jZSA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMjE3NDc+IGlz
IGZpeGVkLgorY2xhc3MgV2ViS2l0U291cmNlQnVmZmVyTGlzdCA6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYktpdFNvdXJjZUJ1ZmZlckxpc3Q+LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMg
RXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8V2ViS2l0U291cmNlQnVmZmVyTGlzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQpCiAgICAgewpAQCAtNjAsMjUgKzYxLDIwIEBAIHB1YmxpYzoKICAgICB2b2lkIGNs
ZWFyKCk7CiAKICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKLSAgICB2aXJ0dWFsIEV2ZW50
VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVu
dFRhcmdldEludGVyZmFjZSgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIFdlYktpdFNv
dXJjZUJ1ZmZlckxpc3RFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KKyAgICB2aXJ0dWFsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVS
UklERSBGSU5BTCB7IHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7IH0KIAogICAgIHVz
aW5nIFJlZkNvdW50ZWQ8V2ViS2l0U291cmNlQnVmZmVyTGlzdD46OnJlZjsKICAgICB1c2luZyBS
ZWZDb3VudGVkPFdlYktpdFNvdXJjZUJ1ZmZlckxpc3Q+OjpkZXJlZjsKIAotcHJvdGVjdGVkOgot
ICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSYgZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgT1ZF
UlJJREU7Ci0KIHByaXZhdGU6CiAgICAgV2ViS2l0U291cmNlQnVmZmVyTGlzdChTY3JpcHRFeGVj
dXRpb25Db250ZXh0Kik7CiAKICAgICB2b2lkIGNyZWF0ZUFuZEZpcmVFdmVudChjb25zdCBBdG9t
aWNTdHJpbmcmKTsKIAotICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURF
IHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURF
IHsgZGVyZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURF
IEZJTkFMIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9W
RVJSSURFIEZJTkFMIHsgZGVyZWYoKTsgfQogCi0gICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRU
YXJnZXREYXRhOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKICAgICBHZW5lcmljRXZlbnRRdWV1ZSBtX2FzeW5jRXZlbnRRdWV1ZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcApp
bmRleCA5ZGVjYTQ1Li4xYWIyNGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcApAQCAtMjU3LDI2ICsyNTcsNiBAQCB2b2lkIE1l
ZGlhU3RyZWFtOjpjb250ZXh0RGVzdHJveWVkKCkKICAgICBtX3N0b3BwZWQgPSB0cnVlOwogfQog
Ci1FdmVudFRhcmdldEludGVyZmFjZSBNZWRpYVN0cmVhbTo6ZXZlbnRUYXJnZXRJbnRlcmZhY2Uo
KSBjb25zdAotewotICAgIHJldHVybiBNZWRpYVN0cmVhbUV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlw
ZTsKLX0KLQotU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogTWVkaWFTdHJlYW06OnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdAotewotICAgIHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNl
cnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotfQotCi1FdmVudFRhcmdldERhdGEqIE1l
ZGlhU3RyZWFtOjpldmVudFRhcmdldERhdGEoKQotewotICAgIHJldHVybiAmbV9ldmVudFRhcmdl
dERhdGE7Ci19Ci0KLUV2ZW50VGFyZ2V0RGF0YSYgTWVkaWFTdHJlYW06OmVuc3VyZUV2ZW50VGFy
Z2V0RGF0YSgpCi17Ci0gICAgcmV0dXJuIG1fZXZlbnRUYXJnZXREYXRhOwotfQotCiB2b2lkIE1l
ZGlhU3RyZWFtOjphZGRSZW1vdGVUcmFjayhNZWRpYVN0cmVhbUNvbXBvbmVudCogY29tcG9uZW50
KQogewogICAgIEFTU0VSVChjb21wb25lbnQgJiYgIWNvbXBvbmVudC0+c3RyZWFtKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oCmluZGV4
IDhhZDAyYmMuLjlmN2MzNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtLmgKQEAgLTQxLDcgKzQxLDggQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBNZWRpYVN0cmVhbSA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFt
PiwgcHVibGljIFVSTFJlZ2lzdHJhYmxlLCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMg
TWVkaWFTdHJlYW1EZXNjcmlwdG9yQ2xpZW50LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBD
b250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CisvLyBGSVhNRTogVGhpcyBjbGFzcyBzaG91bGQg
YmUgbWFya2VkIEZJTkFMIG9uY2UgPGh0dHA6Ly93ZWJraXQub3JnL2IvMTIxNzQ3PiBpcyBmaXhl
ZC4KK2NsYXNzIE1lZGlhU3RyZWFtIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW0+LCBw
dWJsaWMgVVJMUmVnaXN0cmFibGUsIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBNZWRp
YVN0cmVhbURlc2NyaXB0b3JDbGllbnQsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRh
LCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCop
OwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+KTsKQEAgLTcyLDggKzczLDggQEAg
cHVibGljOgogICAgIE1lZGlhU3RyZWFtRGVzY3JpcHRvciogZGVzY3JpcHRvcigpIGNvbnN0IHsg
cmV0dXJuIG1fZGVzY3JpcHRvci5nZXQoKTsgfQogCiAgICAgLy8gRXZlbnRUYXJnZXQKLSAgICB2
aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBFdmVudFRhcmdldElu
dGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0
dXJuIE1lZGlhU3RyZWFtRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CisgICAgdmlydHVhbCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZF
UlJJREUgRklOQUwgeyByZXR1cm4gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsgfQogCiAgICAgdXNpbmcgUmVmQ291bnRlZDxNZWRpYVN0cmVhbT46
OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtPjo6ZGVyZWY7CkBAIC04NCwx
NyArODUsMTMgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIE1lZGlhU3RyZWFtKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4pOwogCi0g
ICAgLy8gRXZlbnRUYXJnZXQKLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJn
ZXREYXRhKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEmIGVuc3VyZUV2
ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURFOwotCiAgICAgLy8gQ29udGV4dERlc3RydWN0aW9uT2Jz
ZXJ2ZXIKICAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpOwogCiBwcml2YXRlOgog
ICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZF
UlJJREUgeyByZWYoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZF
UlJJREUgeyBkZXJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZF
UlJJREUgRklOQUwgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0
KCkgT1ZFUlJJREUgRklOQUwgeyBkZXJlZigpOyB9CiAKICAgICAvLyBNZWRpYVN0cmVhbURlc2Ny
aXB0b3JDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgYWRkUmVtb3RlVHJhY2soTWVkaWFTdHJlYW1D
b21wb25lbnQqKSBPVkVSUklERTsKQEAgLTEwNSw4ICsxMDIsNiBAQCBwcml2YXRlOgogCiAgICAg
Ym9vbCBtX3N0b3BwZWQ7CiAKLSAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7
Ci0KICAgICBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yIG1fYXVkaW9UcmFja3M7CiAgICAgTWVkaWFT
dHJlYW1UcmFja1ZlY3RvciBtX3ZpZGVvVHJhY2tzOwogICAgIFJlZlB0cjxNZWRpYVN0cmVhbURl
c2NyaXB0b3I+IG1fZGVzY3JpcHRvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCmluZGV4IGM2YjM4YWYuLjQwMzBk
MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1UcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrLmNwcApAQCAtMTc0LDI2ICsxNzQsNiBAQCB2b2lkIE1lZGlhU3RyZWFt
VHJhY2s6OnN0b3AoKQogICAgIG1fc3RvcHBlZCA9IHRydWU7CiB9CiAKLUV2ZW50VGFyZ2V0SW50
ZXJmYWNlIE1lZGlhU3RyZWFtVHJhY2s6OmV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gTWVkaWFTdHJlYW1UcmFja0V2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsKLX0K
LQotU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogTWVkaWFTdHJlYW1UcmFjazo6c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOwotfQotCi1FdmVudFRhcmdldERhdGEqIE1lZGlhU3RyZWFtVHJh
Y2s6OmV2ZW50VGFyZ2V0RGF0YSgpCi17Ci0gICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsK
LX0KLQotRXZlbnRUYXJnZXREYXRhJiBNZWRpYVN0cmVhbVRyYWNrOjplbnN1cmVFdmVudFRhcmdl
dERhdGEoKQotewotICAgIHJldHVybiBtX2V2ZW50VGFyZ2V0RGF0YTsKLX0KLQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgK
aW5kZXggYzBmNWNhZC4uOTY2N2Y5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgKQEAgLTQzLDcgKzQzLDggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTWVkaWFTdHJlYW1Db21wb25lbnQ7CiBjbGFzcyBNZWRp
YVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrOwogCi1jbGFzcyBNZWRpYVN0cmVhbVRyYWNrIDog
cHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1UcmFjaz4sIHB1YmxpYyBTY3JpcHRXcmFwcGFi
bGUsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIE1l
ZGlhU3RyZWFtU291cmNlOjpPYnNlcnZlciB7CisvLyBGSVhNRTogVGhpcyBjbGFzcyBzaG91bGQg
YmUgbWFya2VkIEZJTkFMIG9uY2UgPGh0dHA6Ly93ZWJraXQub3JnL2IvMTIxNzQ3PiBpcyBmaXhl
ZC4KK2NsYXNzIE1lZGlhU3RyZWFtVHJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVN0cmVh
bVRyYWNrPiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwg
cHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBNZWRpYVN0cmVhbVNvdXJj
ZTo6T2JzZXJ2ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
VHJhY2s+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTWVkaWFTdHJlYW1Db21wb25l
bnQqKTsKICAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbVRyYWNrKCk7CkBAIC02OSw4ICs3MCw4IEBA
IHB1YmxpYzoKICAgICBib29sIGVuZGVkKCkgY29uc3Q7CiAKICAgICAvLyBFdmVudFRhcmdldAot
ICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBj
b25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEV2ZW50VGFy
Z2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgT1ZFUlJJREUgRklOQUwg
eyByZXR1cm4gTWVkaWFTdHJlYW1UcmFja0V2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQorICAg
IHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
IGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOyB9CiAKICAgICAvLyBBY3RpdmVET01PYmplY3QKICAgICB2aXJ0dWFs
IHZvaWQgc3RvcCgpIE9WRVJSSURFOwpAQCAtODIsMTEgKzgzLDggQEAgcHJpdmF0ZToKICAgICBN
ZWRpYVN0cmVhbVRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNZWRpYVN0cmVhbUNvbXBv
bmVudCopOwogCiAgICAgLy8gRXZlbnRUYXJnZXQKLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0
YSogZXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldERh
dGEmIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBy
ZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVy
ZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgZGVyZWYoKTsgfQotICAgIEV2ZW50VGFyZ2V0RGF0
YSBtX2V2ZW50VGFyZ2V0RGF0YTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBP
VkVSUklERSBGSU5BTCB7IHJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJn
ZXQoKSBPVkVSUklERSBGSU5BTCB7IGRlcmVmKCk7IH0KIAogICAgIC8vIE1lZGlhU3RyZWFtU291
cmNlT2JzZXJ2ZXIKICAgICB2aXJ0dWFsIHZvaWQgc291cmNlQ2hhbmdlZFN0YXRlKCkgT1ZFUlJJ
REU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RU
TUZTZW5kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1G
U2VuZGVyLmNwcAppbmRleCBmNjA5NGU2Li40NWU0ZTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5jcHAKQEAgLTEyOCwzMiAr
MTI4LDEyIEBAIHZvaWQgUlRDRFRNRlNlbmRlcjo6ZGlkUGxheVRvbmUoY29uc3QgU3RyaW5nJiB0
b25lKQogICAgIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChSVENEVE1GVG9uZUNoYW5nZUV2ZW50Ojpj
cmVhdGUodG9uZSkpOwogfQogCi1FdmVudFRhcmdldEludGVyZmFjZSBSVENEVE1GU2VuZGVyOjpl
dmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFJUQ0RUTUZTZW5kZXJF
dmVudFRhcmdldEludGVyZmFjZVR5cGU7Ci19Ci0KLVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFJU
Q0RUTUZTZW5kZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAotewotICAgIHJldHVy
biBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLX0KLQogdm9pZCBS
VENEVE1GU2VuZGVyOjpzdG9wKCkKIHsKICAgICBtX3N0b3BwZWQgPSB0cnVlOwogICAgIG1faGFu
ZGxlci0+c2V0Q2xpZW50KDApOwogfQogCi1FdmVudFRhcmdldERhdGEqIFJUQ0RUTUZTZW5kZXI6
OmV2ZW50VGFyZ2V0RGF0YSgpCi17Ci0gICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKLX0K
LQotRXZlbnRUYXJnZXREYXRhJiBSVENEVE1GU2VuZGVyOjplbnN1cmVFdmVudFRhcmdldERhdGEo
KQotewotICAgIHJldHVybiBtX2V2ZW50VGFyZ2V0RGF0YTsKLX0KLQogdm9pZCBSVENEVE1GU2Vu
ZGVyOjpzY2hlZHVsZURpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiB7CiAg
ICAgbV9zY2hlZHVsZWRFdmVudHMuYXBwZW5kKGV2ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmgKaW5kZXggN2JkYWRjNi4uNmIx
OGMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENE
VE1GU2VuZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENE
VE1GU2VuZGVyLmgKQEAgLTQxLDcgKzQxLDggQEAgY2xhc3MgTWVkaWFTdHJlYW1UcmFjazsKIGNs
YXNzIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjsKIGNsYXNzIFJUQ0RUTUZTZW5kZXJIYW5kbGVy
OwogCi1jbGFzcyBSVENEVE1GU2VuZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8UlRDRFRNRlNlbmRl
cj4sIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIFJU
Q0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKKy8vIEZJ
WE1FOiBUaGlzIGNsYXNzIHNob3VsZCBiZSBtYXJrZWQgRklOQUwgb25jZSA8aHR0cDovL3dlYmtp
dC5vcmcvYi8xMjE3NDc+IGlzIGZpeGVkLgorY2xhc3MgUlRDRFRNRlNlbmRlciA6IHB1YmxpYyBS
ZWZDb3VudGVkPFJUQ0RUTUZTZW5kZXI+LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMg
RXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIFJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xp
ZW50LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxSVENEVE1GU2VuZGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFJUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlciosIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4sIEV4Y2Vw
dGlvbkNvZGUmKTsKICAgICB+UlRDRFRNRlNlbmRlcigpOwpAQCAtNTksOCArNjAsOCBAQCBwdWJs
aWM6CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih0b25lY2hhbmdlKTsKIAog
ICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVu
dFRhcmdldEludGVyZmFjZSgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBj
b25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBSVENEVE1GU2VuZGVyRXZlbnRUYXJnZXRJbnRl
cmZhY2VUeXBlOyB9CisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gQWN0aXZlRE9N
T2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KIAogICAgIC8vIEFjdGl2ZURPTU9i
amVjdAogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7CkBAIC03NSwxMSArNzYsOCBA
QCBwcml2YXRlOgogICAgIHZvaWQgc2NoZWR1bGVkRXZlbnRUaW1lckZpcmVkKFRpbWVyPFJUQ0RU
TUZTZW5kZXI+Kik7CiAKICAgICAvLyBFdmVudFRhcmdldAotICAgIHZpcnR1YWwgRXZlbnRUYXJn
ZXREYXRhKiBldmVudFRhcmdldERhdGEoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIEV2ZW50VGFy
Z2V0RGF0YSYgZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2
b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyByZWYoKTsgfQotICAgIHZpcnR1YWwgdm9p
ZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyBkZXJlZigpOyB9Ci0gICAgRXZlbnRUYXJn
ZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOworICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdl
dCgpIE9WRVJSSURFIEZJTkFMIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVu
dFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgZGVyZWYoKTsgfQogCiAgICAgLy8gUlRDRFRNRlNl
bmRlckhhbmRsZXJDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgZGlkUGxheVRvbmUoY29uc3QgU3Ry
aW5nJikgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwCmluZGV4IDdkZWM4MTEuLjk3YzY0MTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwu
Y3BwCkBAIC0yODUsMTYgKzI4NSw2IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWw6OmRpZERldGVjdEVy
cm9yKCkKICAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkuZXJyb3JFdmVudCwgZmFsc2UsIGZhbHNlKSk7CiB9CiAKLUV2ZW50VGFyZ2V0SW50ZXJmYWNl
IFJUQ0RhdGFDaGFubmVsOjpldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIFJUQ0RhdGFDaGFubmVsRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOwotfQotCi1TY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBSVENEYXRhQ2hhbm5lbDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLX0KLQogdm9p
ZCBSVENEYXRhQ2hhbm5lbDo6c3RvcCgpCiB7CiAgICAgbV9zdG9wcGVkID0gdHJ1ZTsKQEAgLTMw
MywxNiArMjkzLDYgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbDo6c3RvcCgpCiAgICAgbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0ID0gMDsKIH0KIAotRXZlbnRUYXJnZXREYXRhKiBSVENEYXRhQ2hhbm5l
bDo6ZXZlbnRUYXJnZXREYXRhKCkKLXsKLSAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOwot
fQotCi1FdmVudFRhcmdldERhdGEmIFJUQ0RhdGFDaGFubmVsOjplbnN1cmVFdmVudFRhcmdldERh
dGEoKQotewotICAgIHJldHVybiBtX2V2ZW50VGFyZ2V0RGF0YTsKLX0KLQogdm9pZCBSVENEYXRh
Q2hhbm5lbDo6c2NoZWR1bGVEaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQog
ewogICAgIG1fc2NoZWR1bGVkRXZlbnRzLmFwcGVuZChldmVudCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgKaW5kZXggMzA0OTFk
Ni4uNDlhZGNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWwuaApAQCAtNDUsNyArNDUsOCBAQCBjbGFzcyBEaWN0aW9uYXJ5Owog
Y2xhc3MgUlRDRGF0YUNoYW5uZWxIYW5kbGVyOwogY2xhc3MgUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyOwogCi1jbGFzcyBSVENEYXRhQ2hhbm5lbCA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ0RhdGFD
aGFubmVsPiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJs
aWMgUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50IHsKKy8vIEZJWE1FOiBUaGlzIGNsYXNzIHNo
b3VsZCBiZSBtYXJrZWQgRklOQUwgb25jZSA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMjE3NDc+IGlz
IGZpeGVkLgorY2xhc3MgUlRDRGF0YUNoYW5uZWwgOiBwdWJsaWMgUmVmQ291bnRlZDxSVENEYXRh
Q2hhbm5lbD4sIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJ
bmxpbmVEYXRhLCBwdWJsaWMgUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbD4gY3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzT3duUHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4pOwogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciosIGNvbnN0IFN0cmluZyYgLCBjb25zdCBE
aWN0aW9uYXJ5JiwgRXhjZXB0aW9uQ29kZSYpOwpAQCAtNzksOCArODAsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzdG9wKCk7CiAKICAgICAvLyBFdmVudFRhcmdldAotICAgIHZpcnR1YWwgRXZlbnRU
YXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50
VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gUlRDRGF0YUNo
YW5uZWxFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KKyAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERSBGSU5B
TCB7IHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7IH0KIAogICAgIHVzaW5nIFJlZkNv
dW50ZWQ8UlRDRGF0YUNoYW5uZWw+OjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDxSVENEYXRh
Q2hhbm5lbD46OmRlcmVmOwpAQCAtOTIsMTIgKzkzLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNj
aGVkdWxlZEV2ZW50VGltZXJGaXJlZChUaW1lcjxSVENEYXRhQ2hhbm5lbD4qKTsKIAogICAgIC8v
IEV2ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0
YSgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhJiBlbnN1cmVFdmVudFRh
cmdldERhdGEoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBP
VkVSUklERSB7IHJlZigpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBP
VkVSUklERSB7IGRlcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBP
VkVSUklERSBGSU5BTCB7IHJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJn
ZXQoKSBPVkVSUklERSBGSU5BTCB7IGRlcmVmKCk7IH0KIAotICAgIEV2ZW50VGFyZ2V0RGF0YSBt
X2V2ZW50VGFyZ2V0RGF0YTsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7CiAKICAgICAvLyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29u
bmVjdGlvbi5jcHAKaW5kZXggOWFiMTg0OC4uODVkNGFhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKQEAg
LTU4NSwxNiArNTg1LDYgQEAgdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6ZGlkQWRkUmVtb3RlRGF0
YUNoYW5uZWwoUGFzc093blB0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXIKICAgICBzY2hlZHVsZURp
c3BhdGNoRXZlbnQoUlRDRGF0YUNoYW5uZWxFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5kYXRh
Y2hhbm5lbEV2ZW50LCBmYWxzZSwgZmFsc2UsIGNoYW5uZWwucmVsZWFzZSgpKSk7CiB9CiAKLUV2
ZW50VGFyZ2V0SW50ZXJmYWNlIFJUQ1BlZXJDb25uZWN0aW9uOjpldmVudFRhcmdldEludGVyZmFj
ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFJUQ1BlZXJDb25uZWN0aW9uRXZlbnRUYXJnZXRJbnRl
cmZhY2VUeXBlOwotfQotCi1TY3JpcHRFeGVjdXRpb25Db250ZXh0KiBSVENQZWVyQ29ubmVjdGlv
bjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEFjdGl2ZURP
TU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotfQotCiB2b2lkIFJUQ1BlZXJDb25u
ZWN0aW9uOjpzdG9wKCkKIHsKICAgICBpZiAobV9zdG9wcGVkKQpAQCAtNjA5LDE2ICs1OTksNiBA
QCB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpzdG9wKCkKICAgICAgICAgKCppKS0+c3RvcCgpOwog
fQogCi1FdmVudFRhcmdldERhdGEqIFJUQ1BlZXJDb25uZWN0aW9uOjpldmVudFRhcmdldERhdGEo
KQotewotICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7Ci19Ci0KLUV2ZW50VGFyZ2V0RGF0
YSYgUlRDUGVlckNvbm5lY3Rpb246OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCi17Ci0gICAgcmV0
dXJuIG1fZXZlbnRUYXJnZXREYXRhOwotfQotCiB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpjaGFu
Z2VTaWduYWxpbmdTdGF0ZShTaWduYWxpbmdTdGF0ZSBzaWduYWxpbmdTdGF0ZSkKIHsKICAgICBp
ZiAobV9zaWduYWxpbmdTdGF0ZSAhPSBTaWduYWxpbmdTdGF0ZUNsb3NlZCAmJiBtX3NpZ25hbGlu
Z1N0YXRlICE9IHNpZ25hbGluZ1N0YXRlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKaW5kZXggNjU0NTY4MC4uYzdm
OTk5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUGVlckNvbm5lY3Rpb24uaApAQCAtNTgsNyArNTgsOCBAQCBjbGFzcyBSVENTZXNzaW9uRGVz
Y3JpcHRpb25DYWxsYmFjazsKIGNsYXNzIFJUQ1N0YXRzQ2FsbGJhY2s7CiBjbGFzcyBWb2lkQ2Fs
bGJhY2s7CiAKLWNsYXNzIFJUQ1BlZXJDb25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8UlRD
UGVlckNvbm5lY3Rpb24+LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyQ2xpZW50LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBBY3RpdmVE
T01PYmplY3QgeworLy8gRklYTUU6IFRoaXMgY2xhc3Mgc2hvdWxkIGJlIG1hcmtlZCBGSU5BTCBv
bmNlIDxodHRwOi8vd2Via2l0Lm9yZy9iLzEyMTc0Nz4gaXMgZml4ZWQuCitjbGFzcyBSVENQZWVy
Q29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ1BlZXJDb25uZWN0aW9uPiwgcHVibGlj
IFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCwg
cHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBBY3RpdmVET01PYmplY3Qg
ewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJUQ1BlZXJDb25uZWN0aW9uPiBjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERpY3Rpb25hcnkmIHJ0Y0NvbmZpZ3Vy
YXRpb24sIGNvbnN0IERpY3Rpb25hcnkmIG1lZGlhQ29uc3RyYWludHMsIEV4Y2VwdGlvbkNvZGUm
KTsKICAgICB+UlRDUGVlckNvbm5lY3Rpb24oKTsKQEAgLTEyMCw4ICsxMjEsOCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRpZEFkZFJlbW90ZURhdGFDaGFubmVsKFBhc3NPd25QdHI8UlRD
RGF0YUNoYW5uZWxIYW5kbGVyPikgT1ZFUlJJREU7CiAKICAgICAvLyBFdmVudFRhcmdldAotICAg
IHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25z
dCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0
SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyBy
ZXR1cm4gUlRDUGVlckNvbm5lY3Rpb25FdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KKyAgICB2
aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsgfQogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0CiAgICAgdmlydHVhbCB2
b2lkIHN0b3AoKSBPVkVSUklERTsKQEAgLTEzOCwxMSArMTM5LDggQEAgcHJpdmF0ZToKICAgICBi
b29sIGhhc0xvY2FsU3RyZWFtV2l0aFRyYWNrSWQoY29uc3QgU3RyaW5nJiB0cmFja0lkKTsKIAog
ICAgIC8vIEV2ZW50VGFyZ2V0IGltcGxlbWVudGF0aW9uLgotICAgIHZpcnR1YWwgRXZlbnRUYXJn
ZXREYXRhKiBldmVudFRhcmdldERhdGEoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIEV2ZW50VGFy
Z2V0RGF0YSYgZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2
b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyByZWYoKTsgfQotICAgIHZpcnR1YWwgdm9p
ZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyBkZXJlZigpOyB9Ci0gICAgRXZlbnRUYXJn
ZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOworICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdl
dCgpIE9WRVJSSURFIEZJTkFMIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVu
dFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgZGVyZWYoKTsgfQogCiAgICAgdm9pZCBjaGFuZ2VT
aWduYWxpbmdTdGF0ZShTaWduYWxpbmdTdGF0ZSk7CiAgICAgdm9pZCBjaGFuZ2VJY2VHYXRoZXJp
bmdTdGF0ZShJY2VHYXRoZXJpbmdTdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCmluZGV4IDUzZmE2ZjEuLmFhYjU2
NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb24uY3BwCkBAIC0xMzAsMTEgKzEzMCw2IEBAIFBhc3NSZWZQdHI8Tm90aWZpY2F0
aW9uPiBOb3RpZmljYXRpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBjCiB9CiAjZW5kaWYKIAotRXZlbnRUYXJnZXRJbnRlcmZhY2UgTm90aWZpY2F0aW9uOjpldmVu
dFRhcmdldEludGVyZmFjZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIE5vdGlmaWNhdGlvbkV2ZW50
VGFyZ2V0SW50ZXJmYWNlVHlwZTsKLX0KLQogdm9pZCBOb3RpZmljYXRpb246OnNob3coKSAKIHsK
ICAgICAvLyBwcmV2ZW50IGRvdWJsZS1zaG93aW5nCkBAIC0xNjgsMTYgKzE2Myw2IEBAIHZvaWQg
Tm90aWZpY2F0aW9uOjpjbG9zZSgpCiAgICAgfQogfQogCi1FdmVudFRhcmdldERhdGEqIE5vdGlm
aWNhdGlvbjo6ZXZlbnRUYXJnZXREYXRhKCkKLXsKLSAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXRE
YXRhOwotfQotCi1FdmVudFRhcmdldERhdGEmIE5vdGlmaWNhdGlvbjo6ZW5zdXJlRXZlbnRUYXJn
ZXREYXRhKCkKLXsKLSAgICByZXR1cm4gbV9ldmVudFRhcmdldERhdGE7Ci19Ci0KIHZvaWQgTm90
aWZpY2F0aW9uOjpjb250ZXh0RGVzdHJveWVkKCkKIHsKICAgICBBY3RpdmVET01PYmplY3Q6OmNv
bnRleHREZXN0cm95ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb24uaAppbmRleCBhOWRjNjAyLi41MDdhN2ZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCkBA
IC02Myw3ICs2Myw4IEBAIGNsYXNzIFRocmVhZGFibGVMb2FkZXI7CiAKIHR5cGVkZWYgaW50IEV4
Y2VwdGlvbkNvZGU7CiAKLWNsYXNzIE5vdGlmaWNhdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPE5v
dGlmaWNhdGlvbj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdldCB7
CisvLyBGSVhNRTogVGhpcyBjbGFzcyBzaG91bGQgYmUgbWFya2VkIEZJTkFMIG9uY2UgPGh0dHA6
Ly93ZWJraXQub3JnL2IvMTIxNzQ3PiBpcyBmaXhlZC4KK2NsYXNzIE5vdGlmaWNhdGlvbiA6IHB1
YmxpYyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvbj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1
YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBOb3RpZmljYXRpb24oKTsKQEAgLTEyMiw4ICsxMjMsOCBAQCBw
dWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDxOb3RpZmljYXRpb24+OjpkZXJlZjsKIAogICAg
IC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZh
Y2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBBY3Rp
dmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQorICAgIHZpcnR1YWwgRXZl
bnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBPVkVSUklERSBG
SU5BTCB7IHJldHVybiBOb3RpZmljYXRpb25FdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KKyAg
ICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsgfQogCiAgICAgdm9pZCBzdG9wTG9hZGluZ0ljb24oKTsKIApAQCAt
MTUyLDEwICsxNTMsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0RGVzdHJv
eWVkKCkgT1ZFUlJJREU7CiAKICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKLSAgICB2aXJ0
dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IHJlZigpOyB9Ci0gICAgdmlydHVh
bCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IGRlcmVmKCk7IH0KLSAgICB2aXJ0
dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREU7Ci0gICAgdmly
dHVhbCBFdmVudFRhcmdldERhdGEmIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgcmVmKCk7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsg
ZGVyZWYoKTsgfQogCiAgICAgdm9pZCBzdGFydExvYWRpbmdJY29uKCk7CiAgICAgdm9pZCBmaW5p
c2hMb2FkaW5nSWNvbigpOwpAQCAtMTgxLDggKzE4MCw2IEBAIHByaXZhdGU6CiAgICAgTm90aWZp
Y2F0aW9uU3RhdGUgbV9zdGF0ZTsKIAogICAgIFJlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IG1f
bm90aWZpY2F0aW9uQ2VudGVyOwotICAgIAotICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFy
Z2V0RGF0YTsKIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgIE93blB0cjxUaW1lcjxO
b3RpZmljYXRpb24+ID4gbV90YXNrVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcAppbmRleCAyOTMw
M2M4Li4xODZkNDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAKQEAgLTQ2LDE2ICs0Niw2IEBAIFNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6flNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSgpCiB7CiAg
ICAgbV9wbGF0Zm9ybVV0dGVyYW5jZS0+c2V0Q2xpZW50KDApOwogfQotICAgIAotU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6
OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLX0gICAgCi0gICAgCi1FdmVudFRhcmdldEludGVy
ZmFjZSBTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OmV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlRXZlbnRUYXJnZXRJbnRl
cmZhY2VUeXBlOwotfQogCiBTcGVlY2hTeW50aGVzaXNWb2ljZSogU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlOjp2b2ljZSgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oCmluZGV4IDNkMjUwNGMuLjE4
NGIxZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1Nw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oCkBAIC0zNiw4ICszNiw5IEBACiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAotY2xhc3MgU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlIDogcHVibGljIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlQ2xpZW50LCBwdWJsaWMgUmVmQ291bnRlZDxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+LCBw
dWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIsIHB1YmxpYyBFdmVudFRhcmdldCB7CisK
Ky8vIEZJWE1FOiBUaGlzIGNsYXNzIHNob3VsZCBiZSBtYXJrZWQgRklOQUwgb25jZSA8aHR0cDov
L3dlYmtpdC5vcmcvYi8xMjE3NDc+IGlzIGZpeGVkLgorY2xhc3MgU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlIDogcHVibGljIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50LCBw
dWJsaWMgUmVmQ291bnRlZDxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+LCBwdWJsaWMgQ29udGV4
dERlc3RydWN0aW9uT2JzZXJ2ZXIsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+
IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJik7CiAgICAgCkBA
IC03NSw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBSZWZDb3VudGVkPFNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZT46OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkPFNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZT46OmRlcmVmOwogCi0gICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CisgICAgdmlydHVhbCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREUgRklO
QUwgeyByZXR1cm4gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsgfQogCiAgICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHBsYXRm
b3JtVXR0ZXJhbmNlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5jZS5nZXQoKTsg
fQogCkBAIC04MywxNSArODQsMTAgQEAgcHJpdmF0ZToKICAgICBTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYpOwogICAgIFJlZlB0
cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gbV9wbGF0Zm9ybVV0dGVyYW5jZTsK
ICAgICBSZWZQdHI8U3BlZWNoU3ludGhlc2lzVm9pY2U+IG1fdm9pY2U7Ci0gICAgCi0gICAgLy8g
RXZlbnRUYXJnZXQKLSAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7Ci0KLSAg
ICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29u
c3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUg
eyByZWYoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUg
eyBkZXJlZigpOyB9Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0
YSgpIE9WRVJSSURFIHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQotICAgIHZpcnR1YWwg
RXZlbnRUYXJnZXREYXRhJiBlbnN1cmVFdmVudFRhcmdldERhdGEoKSBPVkVSUklERSB7IHJldHVy
biBtX2V2ZW50VGFyZ2V0RGF0YTsgfQorCisgICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFj
ZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIFNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQorICAgIHZp
cnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgcmVmKCk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgZGVyZWYo
KTsgfQogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCBiZDhhNzU3Li5hMmUz
ZTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRl
eHQuY3BwCkBAIC05NTAsMTEgKzk1MCw2IEBAIHZvaWQgQXVkaW9Db250ZXh0Ojpwcm9jZXNzQXV0
b21hdGljUHVsbE5vZGVzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiAgICAgICAgIG1fcmVuZGVy
aW5nQXV0b21hdGljUHVsbE5vZGVzW2ldLT5wcm9jZXNzSWZOZWNlc3NhcnkoZnJhbWVzVG9Qcm9j
ZXNzKTsKIH0KIAotRXZlbnRUYXJnZXRJbnRlcmZhY2UgQXVkaW9Db250ZXh0OjpldmVudFRhcmdl
dEludGVyZmFjZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEF1ZGlvQ29udGV4dEV2ZW50VGFyZ2V0
SW50ZXJmYWNlVHlwZTsKLX0KLQogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogQXVkaW9Db250ZXh0
OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pc1N0b3BT
Y2hlZHVsZWQgPyAwIDogQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4
dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAppbmRl
eCAxZGI5NmEyLi5lMmY2YjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmgKQEAgLTczLDcgKzczLDcgQEAgY2xhc3MgUGVyaW9kaWNXYXZlOwog
Ly8gQXVkaW9Db250ZXh0IGlzIHRoZSBjb3JuZXJzdG9uZSBvZiB0aGUgd2ViIGF1ZGlvIEFQSSBh
bmQgYWxsIEF1ZGlvTm9kZXMgYXJlIGNyZWF0ZWQgZnJvbSBpdC4KIC8vIEZvciB0aHJlYWQgc2Fm
ZXR5IGJldHdlZW4gdGhlIGF1ZGlvIHRocmVhZCBhbmQgdGhlIG1haW4gdGhyZWFkLCBpdCBoYXMg
YSByZW5kZXJpbmcgZ3JhcGggbG9ja2luZyBtZWNoYW5pc20uIAogCi1jbGFzcyBBdWRpb0NvbnRl
eHQgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
QXVkaW9Db250ZXh0PiwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgTWVkaWFDYW5TdGFydExp
c3RlbmVyIHsKK2NsYXNzIEF1ZGlvQ29udGV4dCA6IHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBdWRpb0NvbnRleHQ+LCBwdWJsaWMgRXZlbnRUYXJn
ZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciB7CiBwdWJsaWM6
CiAgICAgLy8gQ3JlYXRlIGFuIEF1ZGlvQ29udGV4dCBmb3IgcmVuZGVyaW5nIHRvIHRoZSBhdWRp
byBoYXJkd2FyZS4KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdWRpb0NvbnRleHQ+IGNyZWF0ZShE
b2N1bWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTIzNSwxMCArMjM1LDggQEAgcHVibGljOgog
ICAgIHZvaWQgcmVtb3ZlTWFya2VkU3VtbWluZ0p1bmN0aW9uKEF1ZGlvU3VtbWluZ0p1bmN0aW9u
Kik7CiAKICAgICAvLyBFdmVudFRhcmdldAotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZh
Y2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKLSAgICB2aXJ0dWFs
IEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkgeyByZXR1cm4gJm1fZXZlbnRUYXJn
ZXREYXRhOyB9Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEmIGVuc3VyZUV2ZW50VGFyZ2V0
RGF0YSgpIHsgcmV0dXJuIG1fZXZlbnRUYXJnZXREYXRhOyB9CisgICAgdmlydHVhbCBFdmVudFRh
cmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IE9WRVJSSURFIEZJTkFM
IHsgcmV0dXJuIEF1ZGlvQ29udGV4dEV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQorICAgIHZp
cnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNv
bnN0IE9WRVJSSURFIEZJTkFMOwogCiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5F
Uihjb21wbGV0ZSk7CiAKQEAgLTM1NCw3ICszNTIsNiBAQCBwcml2YXRlOgogICAgIC8vIEV2ZW50
VGFyZ2V0CiAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQogICAg
IHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9Ci0gICAgRXZlbnRU
YXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwogCiAgICAgUmVmUHRyPEF1ZGlvQnVmZmVyPiBt
X3JlbmRlclRhcmdldDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvTm9kZS5oCmluZGV4IDJhMDBkNjMuLjY0ZWFlMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaApAQCAtNTAsNyArNTAsNyBAQCB0eXBlZGVmIGludCBF
eGNlcHRpb25Db2RlOwogLy8gQW4gQXVkaW9EZXN0aW5hdGlvbk5vZGUgaGFzIG9uZSBpbnB1dCBh
bmQgbm8gb3V0cHV0cyBhbmQgcmVwcmVzZW50cyB0aGUgZmluYWwgZGVzdGluYXRpb24gdG8gdGhl
IGF1ZGlvIGhhcmR3YXJlLgogLy8gTW9zdCBwcm9jZXNzaW5nIG5vZGVzIHN1Y2ggYXMgZmlsdGVy
cyB3aWxsIGhhdmUgb25lIGlucHV0IGFuZCBvbmUgb3V0cHV0LCBhbHRob3VnaCBtdWx0aXBsZSBp
bnB1dHMgYW5kIG91dHB1dHMgYXJlIHBvc3NpYmxlLgogCi1jbGFzcyBBdWRpb05vZGUgOiBwdWJs
aWMgRXZlbnRUYXJnZXQgeworY2xhc3MgQXVkaW9Ob2RlIDogcHVibGljIEV2ZW50VGFyZ2V0V2l0
aElubGluZURhdGEgewogcHVibGljOgogICAgIGVudW0geyBQcm9jZXNzaW5nU2l6ZUluRnJhbWVz
ID0gMTI4IH07CiAKQEAgLTE4MSw5ICsxODEsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBFdmVudFRh
cmdldAogICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZh
Y2UoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIEV2
ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREUgeyByZXR1cm4gJm1fZXZl
bnRUYXJnZXREYXRhOyB9Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEmIGVuc3VyZUV2ZW50
VGFyZ2V0RGF0YSgpIE9WRVJSSURFIHsgcmV0dXJuIG1fZXZlbnRUYXJnZXREYXRhOyB9CisgICAg
dmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
Y29uc3QgT1ZFUlJJREUgRklOQUw7CiAKIHByb3RlY3RlZDoKICAgICAvLyBJbnB1dHMgYW5kIG91
dHB1dHMgbXVzdCBiZSBjcmVhdGVkIGJlZm9yZSB0aGUgQXVkaW9Ob2RlIGlzIGluaXRpYWxpemVk
LgpAQCAtMjA2LDggKzIwNCw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPE93blB0cjxBdWRpb05v
ZGVJbnB1dD4gPiBtX2lucHV0czsKICAgICBWZWN0b3I8T3duUHRyPEF1ZGlvTm9kZU91dHB1dD4g
PiBtX291dHB1dHM7CiAKLSAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7Ci0K
ICAgICBkb3VibGUgbV9sYXN0UHJvY2Vzc2luZ1RpbWU7CiAgICAgZG91YmxlIG1fbGFzdE5vblNp
bGVudFRpbWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldC5jcHAKaW5kZXggYzZlMGJlZi4uZDk2MDY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKQEAgLTU3OSwxNiArNTc5LDYgQEAgdm9p
ZCBXZWJTb2NrZXQ6OmRpZENsb3NlKHVuc2lnbmVkIGxvbmcgdW5oYW5kbGVkQnVmZmVyZWRBbW91
bnQsIENsb3NpbmdIYW5kc2hha2UKICAgICAgICAgQWN0aXZlRE9NT2JqZWN0Ojp1bnNldFBlbmRp
bmdBY3Rpdml0eSh0aGlzKTsKIH0KIAotRXZlbnRUYXJnZXREYXRhKiBXZWJTb2NrZXQ6OmV2ZW50
VGFyZ2V0RGF0YSgpCi17Ci0gICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKLX0KLQotRXZl
bnRUYXJnZXREYXRhJiBXZWJTb2NrZXQ6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCi17Ci0gICAg
cmV0dXJuIG1fZXZlbnRUYXJnZXREYXRhOwotfQotCiBzaXplX3QgV2ViU29ja2V0OjpnZXRGcmFt
aW5nT3ZlcmhlYWQoc2l6ZV90IHBheWxvYWRTaXplKQogewogICAgIHN0YXRpYyBjb25zdCBzaXpl
X3QgaHliaUJhc2VGcmFtaW5nT3ZlcmhlYWQgPSAyOyAvLyBFdmVyeSBmcmFtZSBoYXMgYXQgbGVh
c3QgdHdvLWJ5dGUgaGVhZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldC5oCmluZGV4IGY1NjVhNjUuLmQ2N2M1NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKQEAgLTUwLDcgKzUwLDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYjsKIGNsYXNzIFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOwogCi1jbGFzcyBXZWJTb2NrZXQgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJTb2NrZXQ+LCBw
dWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50IHsKKy8vIEZJWE1FOiBUaGlzIGNsYXNzIHNob3VsZCBiZSBtYXJrZWQg
RklOQUwgb25jZSA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMjE3NDc+IGlzIGZpeGVkLgorY2xhc3Mg
V2ViU29ja2V0IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViU29ja2V0PiwgcHVibGljIEV2ZW50VGFy
Z2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzZXRJc0F2YWlsYWJs
ZShib29sKTsKICAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwpAQCAtOTcsOCArOTgsOCBA
QCBwdWJsaWM6CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjbG9zZSk7CiAK
ICAgICAvLyBFdmVudFRhcmdldCBmdW5jdGlvbnMuCi0gICAgdmlydHVhbCBFdmVudFRhcmdldElu
dGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1
YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJ
bnRlcmZhY2UoKSBjb25zdCBPVkVSUklERSBGSU5BTDsKKyAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERSBGSU5B
TDsKIAogICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViU29ja2V0Pjo6cmVmOwogICAgIHVzaW5nIFJl
ZkNvdW50ZWQ8V2ViU29ja2V0Pjo6ZGVyZWY7CkBAIC0xMjIsMTAgKzEyMyw4IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBz
dG9wKCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVS
UklERSB7IHJlZigpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVS
UklERSB7IGRlcmVmKCk7IH0KLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJn
ZXREYXRhKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEmIGVuc3VyZUV2
ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdl
dCgpIE9WRVJSSURFIEZJTkFMIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVu
dFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgZGVyZWYoKTsgfQogCiAgICAgc2l6ZV90IGdldEZy
YW1pbmdPdmVyaGVhZChzaXplX3QgcGF5bG9hZFNpemUpOwogCkBAIC0xMzgsNyArMTM3LDYgQEAg
cHJpdmF0ZToKIAogICAgIFN0YXRlIG1fc3RhdGU7CiAgICAgS1VSTCBtX3VybDsKLSAgICBFdmVu
dFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CiAgICAgdW5zaWduZWQgbG9uZyBtX2J1ZmZl
cmVkQW1vdW50OwogICAgIHVuc2lnbmVkIGxvbmcgbV9idWZmZXJlZEFtb3VudEFmdGVyQ2xvc2U7
CiAgICAgQmluYXJ5VHlwZSBtX2JpbmFyeVR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRUYXJnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCmlu
ZGV4IDcyNTM4MGEuLmViYWY2ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCkBAIC0xNTks
NiArMTU5LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEV2
ZW50TGlzdGVuZXJJdGVyYXRvcjsKICAgICB9OwogCisgICAgY2xhc3MgRXZlbnRUYXJnZXRXaXRo
SW5saW5lRGF0YSA6IHB1YmxpYyBFdmVudFRhcmdldCB7CisgICAgcHJvdGVjdGVkOgorICAgICAg
ICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREUgRklO
QUwgeyByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOyB9CisgICAgICAgIHZpcnR1YWwgRXZlbnRU
YXJnZXREYXRhJiBlbnN1cmVFdmVudFRhcmdldERhdGEoKSBPVkVSUklERSBGSU5BTCB7IHJldHVy
biBtX2V2ZW50VGFyZ2V0RGF0YTsgfQorICAgIHByaXZhdGU6CisgICAgICAgIEV2ZW50VGFyZ2V0
RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKKyAgICB9OworCiAgICAgLy8gRklYTUU6IFRoZXNlIG1h
Y3JvcyBzaG91bGQgYmUgc3BsaXQgaW50byBzZXBhcmF0ZSBERUZJTkUgYW5kIERFQ0xBUkUKICAg
ICAvLyBtYWNyb3MgdG8gYXZvaWQgY2F1c2luZyBzbyBtYW55IGhlYWRlciBpbmNsdWRlcy4KICAg
ICAjZGVmaW5lIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYXR0cmlidXRlKSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAppbmRleCBmNmVkOGZhLi5kYzA0MThjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKQEAgLTE1MSwxNiArMTUxLDYgQEAgdm9pZCBNZXNzYWdl
UG9ydDo6Y29udGV4dERlc3Ryb3llZCgpCiAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0ID0g
MDsKIH0KIAotRXZlbnRUYXJnZXRJbnRlcmZhY2UgTWVzc2FnZVBvcnQ6OmV2ZW50VGFyZ2V0SW50
ZXJmYWNlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gTWVzc2FnZVBvcnRFdmVudFRhcmdldEludGVy
ZmFjZVR5cGU7Ci19Ci0KLVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIE1lc3NhZ2VQb3J0OjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0OwotfQotCiB2b2lkIE1lc3NhZ2VQb3J0OjpkaXNwYXRjaE1lc3NhZ2VzKCkKIHsK
ICAgICAvLyBNZXNzYWdlcyBmb3IgY29udGV4dHMgdGhhdCBhcmUgbm90IGZ1bGx5IGFjdGl2ZSBn
ZXQgZGlzcGF0Y2hlZCB0b28sIGJ1dCBKU0Fic3RyYWN0RXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZl
bnQoKSBkb2Vzbid0IGNhbGwgaGFuZGxlcnMgZm9yIHRoZXNlLgpAQCAtMjQxLDE0ICsyMzEsNCBA
QCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRz
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmCiAgICAgcmV0dXJuIHBvcnRBcnJheS5yZWxlYXNlKCk7
CiB9CiAKLUV2ZW50VGFyZ2V0RGF0YSogTWVzc2FnZVBvcnQ6OmV2ZW50VGFyZ2V0RGF0YSgpCi17
Ci0gICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKLX0KLQotRXZlbnRUYXJnZXREYXRhJiBN
ZXNzYWdlUG9ydDo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkKLXsKLSAgICByZXR1cm4gbV9ldmVu
dFRhcmdldERhdGE7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VQb3J0LmgKaW5kZXggZjYzNDIyNC4uNzg5MzIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL01lc3NhZ2VQb3J0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0
LmgKQEAgLTQ3LDcgKzQ3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIC8vIFRoZSBvdmVy
d2hlbG1pbmdseSBjb21tb24gY2FzZSBpcyBzZW5kaW5nIGEgc2luZ2xlIHBvcnQsIHNvIGhhbmRs
ZSB0aGF0IGVmZmljaWVudGx5IHdpdGggYW4gaW5saW5lIGJ1ZmZlciBvZiBzaXplIDEuCiAgICAg
dHlwZWRlZiBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0PiwgMT4gTWVzc2FnZVBvcnRBcnJheTsK
IAotICAgIGNsYXNzIE1lc3NhZ2VQb3J0IDogcHVibGljIFJlZkNvdW50ZWQ8TWVzc2FnZVBvcnQ+
LCBwdWJsaWMgRXZlbnRUYXJnZXQgeworICAgIC8vIEZJWE1FOiBUaGlzIGNsYXNzIHNob3VsZCBi
ZSBtYXJrZWQgRklOQUwgb25jZSA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMjE3NDc+IGlzIGZpeGVk
LgorICAgIGNsYXNzIE1lc3NhZ2VQb3J0IDogcHVibGljIFJlZkNvdW50ZWQ8TWVzc2FnZVBvcnQ+
LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSB7CiAgICAgcHVibGljOgogICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxNZXNzYWdlUG9ydD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZXNz
YWdlUG9ydChzY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7IH0KICAgICAgICAgdmlydHVhbCB+TWVz
c2FnZVBvcnQoKTsKQEAgLTczLDggKzc0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
ICAgIHZvaWQgY29udGV4dERlc3Ryb3llZCgpOwogCi0gICAgICAgIHZpcnR1YWwgRXZlbnRUYXJn
ZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBPVkVSUklERTsKLSAgICAg
ICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgY29uc3QgT1ZFUlJJREU7CisgICAgICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2Ug
ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBNZXNz
YWdlUG9ydEV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQorICAgICAgICB2aXJ0dWFsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklE
RSBGSU5BTCB7IHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7IH0KICAgICAgICAgdmly
dHVhbCBib29sIGlzTWVzc2FnZVBvcnQoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiB0
cnVlOyB9CiAKICAgICAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VzKCk7CkBAIC0xMDUsMTAgKzEw
Niw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwcml2YXRlOgogICAgICAgICBleHBsaWNp
dCBNZXNzYWdlUG9ydChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAKLSAgICAgICAgdmlydHVh
bCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyByZWYoKTsgfQotICAgICAgICB2aXJ0
dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgZGVyZWYoKTsgfQotICAgICAg
ICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREU7Ci0g
ICAgICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhJiBlbnN1cmVFdmVudFRhcmdldERhdGEoKSBP
VkVSUklERTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUg
RklOQUwgeyByZWYoKTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgp
IE9WRVJSSURFIEZJTkFMIHsgZGVyZWYoKTsgfQogCiAgICAgICAgIE93blB0cjxNZXNzYWdlUG9y
dENoYW5uZWw+IG1fZW50YW5nbGVkQ2hhbm5lbDsKIApAQCAtMTE2LDcgKzExNSw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX2Nsb3NlZDsKIAogICAgICAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci0gICAgICAgIEV2ZW50
VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFtZWRGbG93LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXROYW1lZEZsb3cuY3BwCmluZGV4IGU0OTc5NGIu
LmY3ZWU5NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXROYW1lZEZsb3cu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXROYW1lZEZsb3cuY3BwCkBAIC0yMDcs
MTYgKzIwNyw2IEBAIHZvaWQgV2ViS2l0TmFtZWRGbG93OjpzZXRSZW5kZXJlcihSZW5kZXJOYW1l
ZEZsb3dUaHJlYWQqIHBhcmVudEZsb3dUaHJlYWQpCiAgICAgbV9wYXJlbnRGbG93VGhyZWFkID0g
cGFyZW50Rmxvd1RocmVhZDsKIH0KIAotRXZlbnRUYXJnZXREYXRhKiBXZWJLaXROYW1lZEZsb3c6
OmV2ZW50VGFyZ2V0RGF0YSgpCi17Ci0gICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKLX0K
LQotRXZlbnRUYXJnZXREYXRhJiBXZWJLaXROYW1lZEZsb3c6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0
YSgpCi17Ci0gICAgcmV0dXJuIG1fZXZlbnRUYXJnZXREYXRhOwotfQotCiB2b2lkIFdlYktpdE5h
bWVkRmxvdzo6ZGlzcGF0Y2hSZWdpb25MYXlvdXRVcGRhdGVFdmVudCgpCiB7CiAgICAgQVNTRVJU
KCFOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb246OmlzRXZlbnREaXNwYXRjaEZvcmJpZGRlbigpKTsK
QEAgLTIzOSwxMSArMjI5LDYgQEAgdm9pZCBXZWJLaXROYW1lZEZsb3c6OmRpc3BhdGNoUmVnaW9u
T3ZlcnNldENoYW5nZUV2ZW50KCkKICAgICBkaXNwYXRjaEV2ZW50KFVJRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkud2Via2l0cmVnaW9ub3ZlcnNldGNoYW5nZUV2ZW50LCBmYWxzZSwgZmFsc2Us
IG1fZmxvd01hbmFnZXItPmRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCksIDApKTsKIH0KIAotRXZl
bnRUYXJnZXRJbnRlcmZhY2UgV2ViS2l0TmFtZWRGbG93OjpldmVudFRhcmdldEludGVyZmFjZSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdlYktpdE5hbWVkRmxvd0V2ZW50VGFyZ2V0SW50ZXJmYWNl
VHlwZTsKLX0KLQogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogV2ViS2l0TmFtZWRGbG93OjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9mbG93TWFuYWdlci0+
ZG9jdW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXROYW1lZEZs
b3cuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXROYW1lZEZsb3cuaAppbmRleCA2MWRhMTE5
Li5jZjQ0NDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFtZWRGbG93
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE5hbWVkRmxvdy5oCkBAIC00Niw3ICs0
Niw4IEBAIGNsYXNzIE5vZGVMaXN0OwogY2xhc3MgUmVuZGVyTmFtZWRGbG93VGhyZWFkOwogY2xh
c3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAotY2xhc3MgV2ViS2l0TmFtZWRGbG93IDogcHVi
bGljIFJlZkNvdW50ZWQ8V2ViS2l0TmFtZWRGbG93PiwgcHVibGljIEV2ZW50VGFyZ2V0IHsKKy8v
IEZJWE1FOiBUaGlzIGNsYXNzIHNob3VsZCBiZSBtYXJrZWQgRklOQUwgb25jZSA8aHR0cDovL3dl
YmtpdC5vcmcvYi8xMjE3NDc+IGlzIGZpeGVkLgorY2xhc3MgV2ViS2l0TmFtZWRGbG93IDogcHVi
bGljIFJlZkNvdW50ZWQ8V2ViS2l0TmFtZWRGbG93PiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElu
bGluZURhdGEgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYktpdE5hbWVkRmxv
dz4gY3JlYXRlKFBhc3NSZWZQdHI8TmFtZWRGbG93Q29sbGVjdGlvbj4gbWFuYWdlciwgY29uc3Qg
QXRvbWljU3RyaW5nJiBmbG93VGhyZWFkTmFtZSk7CiAKQEAgLTYyLDggKzYzLDggQEAgcHVibGlj
OgogICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViS2l0TmFtZWRGbG93Pjo6cmVmOwogICAgIHVzaW5n
IFJlZkNvdW50ZWQ8V2ViS2l0TmFtZWRGbG93Pjo6ZGVyZWY7CiAKLSAgICB2aXJ0dWFsIEV2ZW50
VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Q7Ci0gICAgdmlydHVh
bCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7
CisgICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgp
IGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIFdlYktpdE5hbWVkRmxvd0V2ZW50VGFyZ2V0
SW50ZXJmYWNlVHlwZTsgfQorICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFIEZJTkFMOwogCiAgICAgLy8gVGhp
cyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSB0aGUgSlMgYmluZGluZyBjb2RlIHRvIGRldGVybWlu
ZSBpZiB0aGUgTmFtZWRGbG93IG9iamVjdCBpcyByZWFjaGFibGUgb3Igbm90LgogICAgIC8vIElm
IHRoZSBvYmplY3QgaGFzIGxpc3RlbmVycywgdGhlIG9iamVjdCBzaG91bGQgb25seSBiZSBkaXNj
YXJkZWQgaWYgdGhlIHBhcmVudCBEb2N1bWVudCBpcyBub3QgcmVhY2hhYmxlLgpAQCAtODUsMTkg
Kzg2LDE0IEBAIHByaXZhdGU6CiAgICAgV2ViS2l0TmFtZWRGbG93KFBhc3NSZWZQdHI8TmFtZWRG
bG93Q29sbGVjdGlvbj4sIGNvbnN0IEF0b21pY1N0cmluZyYpOwogCiAgICAgLy8gRXZlbnRUYXJn
ZXQgaW1wbGVtZW50YXRpb24uCi0gICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyBy
ZWYoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9
Ci0KLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEmIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJ
TkFMIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJS
SURFIEZJTkFMIHsgZGVyZWYoKTsgfQogCiAgICAgLy8gVGhlIG5hbWUgb2YgdGhlIGZsb3cgdGhy
ZWFkIGFzIHNwZWNpZmllZCBpbiBDU1MuCiAgICAgQXRvbWljU3RyaW5nIG1fZmxvd1RocmVhZE5h
bWU7CiAKICAgICBSZWZQdHI8TmFtZWRGbG93Q29sbGVjdGlvbj4gbV9mbG93TWFuYWdlcjsKICAg
ICBSZW5kZXJOYW1lZEZsb3dUaHJlYWQqIG1fcGFyZW50Rmxvd1RocmVhZDsKLQotICAgIEV2ZW50
VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVSZWFkZXIuY3BwCmluZGV4IGQyNWI1M2IuLjc5ODk2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlUmVhZGVyLmNwcApAQCAtNjksMTEgKzY5LDYgQEAgRmlsZVJlYWRlcjo6fkZpbGVS
ZWFkZXIoKQogICAgIHRlcm1pbmF0ZSgpOwogfQogCi1FdmVudFRhcmdldEludGVyZmFjZSBGaWxl
UmVhZGVyOjpldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEZpbGVS
ZWFkZXJFdmVudFRhcmdldEludGVyZmFjZVR5cGU7Ci19Ci0KIGJvb2wgRmlsZVJlYWRlcjo6Y2Fu
U3VzcGVuZCgpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IEl0IGlzIG5vdCBjdXJyZW50bHkgcG9z
c2libGUgdG8gc3VzcGVuZCBhIEZpbGVSZWFkZXIsIHNvIHBhZ2VzIHdpdGggRmlsZVJlYWRlciBj
YW4gbm90IGdvIGludG8gcGFnZSBjYWNoZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmgK
aW5kZXggZTZiMTY2Ni4uZjllMTk2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmgK
QEAgLTUzLDcgKzUzLDggQEAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAogdHlwZWRl
ZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAotY2xhc3MgRmlsZVJlYWRlciA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEZpbGVSZWFkZXI+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRUYXJn
ZXQsIHB1YmxpYyBGaWxlUmVhZGVyTG9hZGVyQ2xpZW50IHsKKy8vIEZJWE1FOiBUaGlzIGNsYXNz
IHNob3VsZCBiZSBtYXJrZWQgRklOQUwgb25jZSA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMjE3NDc+
IGlzIGZpeGVkLgorY2xhc3MgRmlsZVJlYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPEZpbGVSZWFk
ZXI+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5l
RGF0YSwgcHVibGljIEZpbGVSZWFkZXJMb2FkZXJDbGllbnQgewogcHVibGljOgogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEZpbGVSZWFkZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7
CiAKQEAgLTgxLDggKzgyLDggQEAgcHVibGljOgogICAgIFN0cmluZyBzdHJpbmdSZXN1bHQoKTsK
IAogICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBl
dmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIEFjdGl2ZURP
TU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CisgICAgdmlydHVhbCBFdmVudFRh
cmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IE9WRVJSSURFIEZJTkFM
IHsgcmV0dXJuIEZpbGVSZWFkZXJFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KKyAgICB2aXJ0
dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25z
dCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsgfQogCiAgICAgLy8gRmlsZVJlYWRlckxvYWRlckNsaWVudAogICAgIHZpcnR1
YWwgdm9pZCBkaWRTdGFydExvYWRpbmcoKTsKQEAgLTEwOCwxMCArMTA5LDggQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIE9WRVJSSURFOwogCiAgICAgLy8gRXZlbnRUYXJnZXQK
LSAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IHJlZigpOyB9Ci0g
ICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IGRlcmVmKCk7IH0K
LSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREUg
eyByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOyB9Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldERh
dGEmIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURFIHsgcmV0dXJuIG1fZXZlbnRUYXJn
ZXREYXRhOyB9CisgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgRklO
QUwgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJ
REUgRklOQUwgeyBkZXJlZigpOyB9CiAKICAgICB2b2lkIHRlcm1pbmF0ZSgpOwogICAgIHZvaWQg
cmVhZEludGVybmFsKEJsb2IqLCBGaWxlUmVhZGVyTG9hZGVyOjpSZWFkVHlwZSwgRXhjZXB0aW9u
Q29kZSYpOwpAQCAtMTIwLDEyICsxMTksOSBAQCBwcml2YXRlOgogCiAgICAgUmVhZHlTdGF0ZSBt
X3N0YXRlOwogICAgIGJvb2wgbV9hYm9ydGluZzsKLSAgICBFdmVudFRhcmdldERhdGEgbV9ldmVu
dFRhcmdldERhdGE7Ci0KICAgICBSZWZQdHI8QmxvYj4gbV9ibG9iOwogICAgIEZpbGVSZWFkZXJM
b2FkZXI6OlJlYWRUeXBlIG1fcmVhZFR5cGU7CiAgICAgU3RyaW5nIG1fZW5jb2Rpbmc7Ci0KICAg
ICBPd25QdHI8RmlsZVJlYWRlckxvYWRlcj4gbV9sb2FkZXI7CiAgICAgUmVmUHRyPEZpbGVFcnJv
cj4gbV9lcnJvcjsKICAgICBkb3VibGUgbV9sYXN0UHJvZ3Jlc3NOb3RpZmljYXRpb25UaW1lTVM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5jcHAKaW5kZXggMWNjNDk1Ny4uMzdj
MGU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcApAQCAtNjQ5LDEx
ICs2NDksNiBAQCB2b2lkIE1lZGlhQ29udHJvbGxlcjo6cmV0dXJuVG9SZWFsdGltZSgpCiAgICAg
ICAgIG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPnJldHVyblRvUmVhbHRpbWUoKTsKIH0KIAotRXZl
bnRUYXJnZXRJbnRlcmZhY2UgTWVkaWFDb250cm9sbGVyOjpldmVudFRhcmdldEludGVyZmFjZSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIE1lZGlhQ29udHJvbGxlckV2ZW50VGFyZ2V0SW50ZXJmYWNl
VHlwZTsKLX0KLQogLy8gVGhlIHNwZWMgc2F5cyB0byBmaXJlIHBlcmlvZGljIHRpbWV1cGRhdGUg
ZXZlbnRzICh0aG9zZSBzZW50IHdoaWxlIHBsYXlpbmcpIGV2ZXJ5CiAvLyAiMTUgdG8gMjUwbXMi
LCB3ZSBjaG9vc2UgdGhlIHNsb3dlc3QgZnJlcXVlbmN5CiBzdGF0aWMgY29uc3QgZG91YmxlIG1h
eFRpbWV1cGRhdGVFdmVudEZyZXF1ZW5jeSA9IDAuMjU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNv
bnRyb2xsZXIuaAppbmRleCBmY2Q2NjQxLi4yMmYzOWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVk
aWFDb250cm9sbGVyLmgKQEAgLTQzLDcgKzQzLDggQEAgY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsK
IGNsYXNzIEV2ZW50OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAotY2xhc3MgTWVk
aWFDb250cm9sbGVyIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFDb250cm9sbGVyPiwgcHVibGlj
IE1lZGlhQ29udHJvbGxlckludGVyZmFjZSwgcHVibGljIEV2ZW50VGFyZ2V0IHsKKy8vIEZJWE1F
OiBUaGlzIGNsYXNzIHNob3VsZCBiZSBtYXJrZWQgRklOQUwgb25jZSA8aHR0cDovL3dlYmtpdC5v
cmcvYi8xMjE3NDc+IGlzIGZpeGVkLgorY2xhc3MgTWVkaWFDb250cm9sbGVyIDogcHVibGljIFJl
ZkNvdW50ZWQ8TWVkaWFDb250cm9sbGVyPiwgcHVibGljIE1lZGlhQ29udHJvbGxlckludGVyZmFj
ZSwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEgewogcHVibGljOgogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbGxlcj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqKTsKICAgICB2aXJ0dWFsIH5NZWRpYUNvbnRyb2xsZXIoKTsKQEAgLTEyOSwxMyArMTMwLDEw
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFRpbWV1cGRhdGVUaW1lcigpOwogCiAgICAgLy8g
RXZlbnRUYXJnZXQKLSAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7
IHJlZigpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7
IGRlcmVmKCk7IH0KLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0
SW50ZXJmYWNlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0OyB9OwotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEo
KSBPVkVSUklERSB7IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7IH0KLSAgICB2aXJ0dWFsIEV2
ZW50VGFyZ2V0RGF0YSYgZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREUgeyByZXR1cm4g
bV9ldmVudFRhcmdldERhdGE7IH0KLSAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERh
dGE7CisgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgRklOQUwgeyBy
ZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgRklO
QUwgeyBkZXJlZigpOyB9CisgICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRh
cmdldEludGVyZmFjZSgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIE1lZGlhQ29udHJv
bGxlckV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQorICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFIEZJTkFM
IHsgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsgfTsKIAogICAgIGZyaWVuZCBjbGFz
cyBIVE1MTWVkaWFFbGVtZW50OwogICAgIGZyaWVuZCBjbGFzcyBNZWRpYUNvbnRyb2xsZXJFdmVu
dExpc3RlbmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCmluZGV4IDYx
MzliZWIuLjMwOWYyODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAK
QEAgLTE0NywyNiArMTQ3LDYgQEAgVGV4dFRyYWNrOjp+VGV4dFRyYWNrKCkKICAgICBjbGVhckNs
aWVudCgpOwogfQogCi1FdmVudFRhcmdldEludGVyZmFjZSBUZXh0VHJhY2s6OmV2ZW50VGFyZ2V0
SW50ZXJmYWNlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gVGV4dFRyYWNrRXZlbnRUYXJnZXRJbnRl
cmZhY2VUeXBlOwotfQotCi1TY3JpcHRFeGVjdXRpb25Db250ZXh0KiBUZXh0VHJhY2s6OnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAotewotICAgIHJldHVybiBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7Ci19Ci0KLUV2ZW50VGFyZ2V0RGF0YSogVGV4dFRyYWNrOjpldmVudFRhcmdldERh
dGEoKQotewotICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7Ci19Ci0KLUV2ZW50VGFyZ2V0
RGF0YSYgVGV4dFRyYWNrOjplbnN1cmVFdmVudFRhcmdldERhdGEoKQotewotICAgIHJldHVybiBt
X2V2ZW50VGFyZ2V0RGF0YTsKLX0KLQogYm9vbCBUZXh0VHJhY2s6OmlzVmFsaWRLaW5kKGNvbnN0
IEF0b21pY1N0cmluZyYgdmFsdWUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFRleHRUcmFjazo6aXNW
YWxpZEtpbmRLZXl3b3JkKHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5o
CmluZGV4IGYxOGFlMzIuLjk4NTJlYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2suaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHRleHRUcmFj
a1JlbW92ZUN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4pID0gMDsKIH07
CiAKLWNsYXNzIFRleHRUcmFjayA6IHB1YmxpYyBUcmFja0Jhc2UsIHB1YmxpYyBFdmVudFRhcmdl
dAorY2xhc3MgVGV4dFRyYWNrIDogcHVibGljIFRyYWNrQmFzZSwgcHVibGljIEV2ZW50VGFyZ2V0
V2l0aElubGluZURhdGEKICNpZiBVU0UoUExBVEZPUk1fVEVYVF9UUkFDS19NRU5VKQogICAgICwg
cHVibGljIFBsYXRmb3JtVGV4dFRyYWNrQ2xpZW50CiAjZW5kaWYKQEAgLTczLDggKzczLDggQEAg
cHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5UZXh0VHJhY2soKTsKIAotICAgIHZpcnR1YWwg
RXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdDsKLSAgICB2
aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJm
YWNlKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gVGV4dFRyYWNrRXZlbnRUYXJnZXRJ
bnRlcmZhY2VUeXBlOyB9CisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0OyB9CiAKICAgICBzdGF0aWMgVGV4dFRyYWNrKiBjYXB0aW9uTWVu
dU9mZkl0ZW0oKTsKICAgICBzdGF0aWMgVGV4dFRyYWNrKiBjYXB0aW9uTWVudUF1dG9tYXRpY0l0
ZW0oKTsKQEAgLTE1OSwxNiArMTU5LDEzIEBAIHByb3RlY3RlZDoKICAgICBUZXh0VHJhY2tSZWdp
b25MaXN0KiByZWdpb25MaXN0KCk7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRE
YXRhKiBldmVudFRhcmdldERhdGEoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0
RGF0YSYgZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREU7Ci0KICAgICBSZWZQdHI8VGV4
dFRyYWNrQ3VlTGlzdD4gbV9jdWVzOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1Zh
bGlkS2luZChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdCBPVkVSUklERTsKIAotICAgIHZpcnR1
YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgZGVyZWYoKTsgfQorICAgIHZpcnR1
YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgcmVmKCk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgZGVyZWYoKTsg
fQogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBFTkFCTEUoV0VCVlRUX1JFR0lPTlMpCiAg
ICAgVGV4dFRyYWNrUmVnaW9uTGlzdCogZW5zdXJlVGV4dFRyYWNrUmVnaW9uTGlzdCgpOwpAQCAt
MTg0LDcgKzE4MSw2IEBAIHByaXZhdGU6CiAgICAgVGV4dFRyYWNrQ3VlTGlzdCogZW5zdXJlVGV4
dFRyYWNrQ3VlTGlzdCgpOwogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0OwotICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsK
ICAgICBBdG9taWNTdHJpbmcgbV9tb2RlOwogICAgIFRleHRUcmFja0NsaWVudCogbV9jbGllbnQ7
CiAgICAgVGV4dFRyYWNrVHlwZSBtX3RyYWNrVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrQ3VlLmNwcAppbmRleCA3OGU2MDg1Li5jZjAwZmVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCkBAIC0xMTU0LDI2ICsxMTU0LDYgQEAg
c3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPiBUZXh0VHJhY2tDdWU6OmdldENTU1Bvc2l0aW9uKCkg
Y29uc3QKICAgICByZXR1cm4gbV9kaXNwbGF5UG9zaXRpb247CiB9CiAKLUV2ZW50VGFyZ2V0SW50
ZXJmYWNlIFRleHRUcmFja0N1ZTo6ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdAotewotICAg
IHJldHVybiBUZXh0VHJhY2tDdWVFdmVudFRhcmdldEludGVyZmFjZVR5cGU7Ci19Ci0KLVNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIFRleHRUcmFja0N1ZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLX0KLQotRXZl
bnRUYXJnZXREYXRhKiBUZXh0VHJhY2tDdWU6OmV2ZW50VGFyZ2V0RGF0YSgpCi17Ci0gICAgcmV0
dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKLX0KLQotRXZlbnRUYXJnZXREYXRhJiBUZXh0VHJhY2tD
dWU6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCi17Ci0gICAgcmV0dXJuIG1fZXZlbnRUYXJnZXRE
YXRhOwotfQotCiBib29sIFRleHRUcmFja0N1ZTo6aXNFcXVhbChjb25zdCBUZXh0VHJhY2tDdWUm
IGN1ZSwgQ3VlTWF0Y2hSdWxlcyBtYXRjaCkgY29uc3QKIHsKICAgICBpZiAoY3VlVHlwZSgpICE9
IGN1ZS5jdWVUeXBlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFja0N1ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaApp
bmRleCAxY2Y5NjI2Li4wOWE3M2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RleHRUcmFja0N1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRy
YWNrQ3VlLmgKQEAgLTcxLDcgKzcxLDcgQEAgcHJvdGVjdGVkOgogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKLWNsYXNzIFRleHRUcmFja0N1ZSA6IHB1YmxpYyBSZWZDb3VudGVk
PFRleHRUcmFja0N1ZT4sIHB1YmxpYyBFdmVudFRhcmdldCB7CitjbGFzcyBUZXh0VHJhY2tDdWUg
OiBwdWJsaWMgUmVmQ291bnRlZDxUZXh0VHJhY2tDdWU+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRo
SW5saW5lRGF0YSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3Vl
PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgZG91YmxlIHN0YXJ0LCBk
b3VibGUgZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCiAgICAgewpAQCAtMTUzLDggKzE1Myw4
IEBAIHB1YmxpYzoKICAgICBpbnQgY2FsY3VsYXRlQ29tcHV0ZWRMaW5lUG9zaXRpb24oKTsKICAg
ICBzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+IGdldFBvc2l0aW9uQ29vcmRpbmF0ZXMoKSBjb25z
dDsKIAotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZh
Y2UoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNl
IGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gVGV4
dFRyYWNrQ3VlRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CisgICAgdmlydHVhbCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREUg
RklOQUwgeyByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OyB9CiAKICAgICBzdGQ6OnBh
aXI8ZG91YmxlLCBkb3VibGU+IGdldENTU1Bvc2l0aW9uKCkgY29uc3Q7CiAKQEAgLTIwMyw5ICsy
MDMsNiBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDxUZXh0VHJhY2tDdWU+OjpkZXJl
ZjsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdl
dERhdGEoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSYgZW5zdXJlRXZl
bnRUYXJnZXREYXRhKCkgT1ZFUlJJREU7Ci0KICAgICBUZXh0VHJhY2tDdWUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCwgY29uc3QgU3RyaW5nJiBjb250
ZW50KTsKIAogICAgIERvY3VtZW50JiBvd25lckRvY3VtZW50KCkgeyByZXR1cm4gKnRvRG9jdW1l
bnQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsgfQpAQCAtMjIyLDggKzIxOSw4IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkZXRlcm1pbmVUZXh0RGlyZWN0aW9uKCk7CiAgICAgdm9pZCBjYWxjdWxh
dGVEaXNwbGF5UGFyYW1ldGVycygpOwogCi0gICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0
KCkgeyByZWYoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJl
ZigpOyB9CisgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgRklOQUwg
eyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUg
RklOQUwgeyBkZXJlZigpOyB9CiAKICAgICBlbnVtIEN1ZVNldHRpbmcgewogICAgICAgICBOb25l
LApAQCAtMjU3LDcgKzI1NCw2IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IG1fd2ViVlRUTm9kZVRyZWU7CiAgICAgVGV4dFRyYWNrKiBtX3RyYWNrOwogCi0gICAgRXZl
bnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAogICAgIGJvb2wgbV9pc0FjdGl2ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmgKaW5kZXggM2NkYTNmYi4uN2Rk
ZTYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmgKQEAgLTQx
LDcgKzQxLDcgQEAgY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFz
cyBUcmFja0Jhc2U7CiAKLWNsYXNzIFRyYWNrTGlzdEJhc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxU
cmFja0xpc3RCYXNlPiwgcHVibGljIEV2ZW50VGFyZ2V0IHsKK2NsYXNzIFRyYWNrTGlzdEJhc2Ug
OiBwdWJsaWMgUmVmQ291bnRlZDxUcmFja0xpc3RCYXNlPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0
aElubGluZURhdGEgewogcHVibGljOgogICAgIH5UcmFja0xpc3RCYXNlKCk7CiAKQEAgLTUzLDcg
KzUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRU
YXJnZXRJbnRlcmZhY2UoKSBjb25zdCA9IDA7CiAgICAgdXNpbmcgUmVmQ291bnRlZDxUcmFja0xp
c3RCYXNlPjo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8VHJhY2tMaXN0QmFzZT46OmRlcmVm
OwotICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dDsgfQorICAgIHZpcnR1YWwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFIEZJ
TkFMIHsgcmV0dXJuIG1fY29udGV4dDsgfQogCiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9M
SVNURU5FUihhZGR0cmFjayk7CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihj
aGFuZ2UpOwpAQCAtNzksMTAgKzc5LDggQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKIAogICAgIC8v
IEV2ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUg
eyByZWYoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUg
eyBkZXJlZigpOyB9Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0
YSgpIE9WRVJSSURFIHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQotICAgIHZpcnR1YWwg
RXZlbnRUYXJnZXREYXRhJiBlbnN1cmVFdmVudFRhcmdldERhdGEoKSBPVkVSUklERSB7IHJldHVy
biBtX2V2ZW50VGFyZ2V0RGF0YTsgfQorICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgp
IE9WRVJSSURFIEZJTkFMIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRh
cmdldCgpIE9WRVJSSURFIEZJTkFMIHsgZGVyZWYoKTsgfQogCiAgICAgdm9pZCBhc3luY0V2ZW50
VGltZXJGaXJlZChUaW1lcjxUcmFja0xpc3RCYXNlPiopOwogCkBAIC05Miw4ICs5MCw2IEBAIHBy
aXZhdGU6CiAgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPiBtX3BlbmRpbmdFdmVudHM7CiAgICAg
VGltZXI8VHJhY2tMaXN0QmFzZT4gbV9wZW5kaW5nRXZlbnRUaW1lcjsKIAotICAgIEV2ZW50VGFy
Z2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKLQogICAgIGludCBtX2Rpc3BhdGNoaW5nRXZlbnRz
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFw
cGxpY2F0aW9uQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFw
cGxpY2F0aW9uQ2FjaGUuY3BwCmluZGV4IGM1Mzk4ZjEuLjU2NDM3YTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5jcHAK
QEAgLTEwNCwxMSArMTA0LDYgQEAgdm9pZCBET01BcHBsaWNhdGlvbkNhY2hlOjphYm9ydCgpCiAg
ICAgICAgIGNhY2hlSG9zdC0+YWJvcnQoKTsKIH0KIAotRXZlbnRUYXJnZXRJbnRlcmZhY2UgRE9N
QXBwbGljYXRpb25DYWNoZTo6ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdAotewotICAgIHJl
dHVybiBET01BcHBsaWNhdGlvbkNhY2hlRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOwotfQotCiBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBET01BcHBsaWNhdGlvbkNhY2hlOjpzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkgY29uc3QKIHsKICAgICBpZiAobV9mcmFtZSkKQEAgLTE0MCwxNCArMTM1LDQg
QEAgY29uc3QgQXRvbWljU3RyaW5nJiBET01BcHBsaWNhdGlvbkNhY2hlOjp0b0V2ZW50VHlwZShB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6RXZlbnQKICAgICByZXR1cm4gZXZlbnROYW1lcygpLmVycm9y
RXZlbnQ7CiB9CiAKLUV2ZW50VGFyZ2V0RGF0YSogRE9NQXBwbGljYXRpb25DYWNoZTo6ZXZlbnRU
YXJnZXREYXRhKCkKLXsKLSAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOwotfQotCi1FdmVu
dFRhcmdldERhdGEmIERPTUFwcGxpY2F0aW9uQ2FjaGU6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgp
Ci17Ci0gICAgcmV0dXJuIG1fZXZlbnRUYXJnZXREYXRhOwotfQotCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBw
bGljYXRpb25DYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxp
Y2F0aW9uQ2FjaGUuaAppbmRleCA3OThjNTY1Li45NTg3MTBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmgKQEAgLTQzLDcg
KzQzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRnJhbWU7CiBjbGFzcyBLVVJMOwog
Ci1jbGFzcyBET01BcHBsaWNhdGlvbkNhY2hlIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVi
bGljIFJlZkNvdW50ZWQ8RE9NQXBwbGljYXRpb25DYWNoZT4sIHB1YmxpYyBFdmVudFRhcmdldCwg
cHVibGljIERPTVdpbmRvd1Byb3BlcnR5IHsKKy8vIEZJWE1FOiBUaGlzIGNsYXNzIHNob3VsZCBi
ZSBtYXJrZWQgRklOQUwgb25jZSA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMjE3NDc+IGlzIGZpeGVk
LgorY2xhc3MgRE9NQXBwbGljYXRpb25DYWNoZSA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1
YmxpYyBSZWZDb3VudGVkPERPTUFwcGxpY2F0aW9uQ2FjaGU+LCBwdWJsaWMgRXZlbnRUYXJnZXRX
aXRoSW5saW5lRGF0YSwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxET01BcHBsaWNhdGlvbkNhY2hlPiBjcmVhdGUoRnJhbWUqIGZyYW1l
KSB7IHJldHVybiBhZG9wdFJlZihuZXcgRE9NQXBwbGljYXRpb25DYWNoZShmcmFtZSkpOyB9CiAg
ICAgfkRPTUFwcGxpY2F0aW9uQ2FjaGUoKSB7IEFTU0VSVCghbV9mcmFtZSk7IH0KQEAgLTU3LDgg
KzU4LDYgQEAgcHVibGljOgogICAgIHZvaWQgc3dhcENhY2hlKEV4Y2VwdGlvbkNvZGUmKTsKICAg
ICB2b2lkIGFib3J0KCk7CiAKLSAgICAvLyBFdmVudFRhcmdldCBpbXBsCi0KICAgICB1c2luZyBS
ZWZDb3VudGVkPERPTUFwcGxpY2F0aW9uQ2FjaGU+OjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRl
ZDxET01BcHBsaWNhdGlvbkNhY2hlPjo6ZGVyZWY7CiAKQEAgLTczLDIyICs3MiwxOCBAQCBwdWJs
aWM6CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjYWNoZWQpOwogICAgIERF
RklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIob2Jzb2xldGUpOwogCi0gICAgdmlydHVhbCBF
dmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0OwotICAgIHZp
cnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNv
bnN0OworICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZh
Y2UoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBET01BcHBsaWNhdGlvbkNhY2hlRXZl
bnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREUgRklOQUw7CiAKICAg
ICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB0b0V2ZW50VHlwZShBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6RXZlbnRJRCBpZCk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRE9NQXBwbGljYXRp
b25DYWNoZShGcmFtZSopOwogCi0gICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyBy
ZWYoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9
Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURF
OwotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhJiBlbnN1cmVFdmVudFRhcmdldERhdGEoKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5B
TCB7IHJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklE
RSBGSU5BTCB7IGRlcmVmKCk7IH0KIAogICAgIEFwcGxpY2F0aW9uQ2FjaGVIb3N0KiBhcHBsaWNh
dGlvbkNhY2hlSG9zdCgpIGNvbnN0OwotCi0gICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJn
ZXREYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuY3BwCmluZGV4IDNlNWM5ZjIuLmFiMGJmNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAKQEAgLTQyNCwxNiArNDI0LDYgQEAgRE9NV2luZG93Ojp+RE9NV2luZG93KCkKICAgICByZW1v
dmVBbGxCZWZvcmVVbmxvYWRFdmVudExpc3RlbmVycyh0aGlzKTsKIH0KIAotRXZlbnRUYXJnZXRJ
bnRlcmZhY2UgRE9NV2luZG93OjpldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIERPTVdpbmRvd0V2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsKLX0KLQotU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogRE9NV2luZG93OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QK
LXsKLSAgICByZXR1cm4gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKLX0KLQogRE9NV2luZG93KiBET01XaW5kb3c6OnRvRE9NV2luZG93KCkKIHsK
ICAgICByZXR1cm4gdGhpczsKQEAgLTE3NjMsMTYgKzE3NTMsNiBAQCB2b2lkIERPTVdpbmRvdzo6
ZmluaXNoZWRMb2FkaW5nKCkKICAgICB9CiB9CiAKLUV2ZW50VGFyZ2V0RGF0YSogRE9NV2luZG93
OjpldmVudFRhcmdldERhdGEoKQotewotICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7Ci19
Ci0KLUV2ZW50VGFyZ2V0RGF0YSYgRE9NV2luZG93OjplbnN1cmVFdmVudFRhcmdldERhdGEoKQot
ewotICAgIHJldHVybiBtX2V2ZW50VGFyZ2V0RGF0YTsKLX0KLQogdm9pZCBET01XaW5kb3c6OnNl
dExvY2F0aW9uKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBET01XaW5kb3cqIGFjdGl2ZVdpbmRv
dywgRE9NV2luZG93KiBmaXJzdFdpbmRvdywgU2V0TG9jYXRpb25Mb2NraW5nIGxvY2tpbmcpCiB7
CiAgICAgaWYgKCFpc0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5oCmluZGV4IDYyNzZjNTAuLjRkZWExOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaApA
QCAtODUsMTEgKzg1LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBlbnVtIFNldExvY2F0
aW9uTG9ja2luZyB7IExvY2tIaXN0b3J5QmFzZWRPbkdlc3R1cmVTdGF0ZSwgTG9ja0hpc3RvcnlB
bmRCYWNrRm9yd2FyZExpc3QgfTsKIAogICAgIC8vIEZJWE1FOiBET01XaW5kb3cgc2hvdWxkbid0
IHN1YmNsYXNzIEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlciBhbmQgaW5zdGVhZCBzaG91bGQgZ2V0
IHRvIEZyYW1lIHZpYSBpdHMgRG9jdW1lbnQuCi0gICAgY2xhc3MgRE9NV2luZG93IDogcHVibGlj
IFJlZkNvdW50ZWQ8RE9NV2luZG93PgotICAgICAgICAgICAgICAgICAgICAsIHB1YmxpYyBFdmVu
dFRhcmdldAotICAgICAgICAgICAgICAgICAgICAsIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25P
YnNlcnZlcgotICAgICAgICAgICAgICAgICAgICAsIHB1YmxpYyBGcmFtZURlc3RydWN0aW9uT2Jz
ZXJ2ZXIKLSAgICAgICAgICAgICAgICAgICAgLCBwdWJsaWMgU3VwcGxlbWVudGFibGU8RE9NV2lu
ZG93PiB7CisgICAgY2xhc3MgRE9NV2luZG93IEZJTkFMCisgICAgICAgIDogcHVibGljIFJlZkNv
dW50ZWQ8RE9NV2luZG93PgorICAgICAgICAsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVE
YXRhCisgICAgICAgICwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyCisgICAgICAg
ICwgcHVibGljIEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcgorICAgICAgICAsIHB1YmxpYyBTdXBw
bGVtZW50YWJsZTxET01XaW5kb3c+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPERPTVdpbmRvdz4gY3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkgeyByZXR1cm4gYWRv
cHRSZWYobmV3IERPTVdpbmRvdyhkb2N1bWVudCkpOyB9CiAgICAgICAgIHZpcnR1YWwgfkRPTVdp
bmRvdygpOwpAQCAtMTAzLDggKzEwNCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
Ly8gdGhlIG5ldHdvcmsgbG9hZC4gU2VlIGFsc28gU2VjdXJpdHlDb250ZXh0Ojppc1NlY3VyZVRy
YW5zaXRpb25Uby4KICAgICAgICAgdm9pZCBkaWRTZWN1cmVUcmFuc2l0aW9uVG8oRG9jdW1lbnQq
KTsKIAotICAgICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50
ZXJmYWNlKCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIEV2ZW50VGFy
Z2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gRE9NV2luZG93RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CisgICAgICAgIHZpcnR1YWwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7IH0KIAogICAgICAgICB2aXJ0dWFsIERPTVdpbmRvdyogdG9ET01XaW5kb3co
KTsKIApAQCAtNDI1LDEwICs0MjYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBmcmFtZURlc3Ryb3llZCgpIE9WRVJSSURFOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgd2lsbERldGFjaFBhZ2UoKSBPVkVSUklERTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVm
RXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50
VGFyZ2V0KCkgeyBkZXJlZigpOyB9Ci0gICAgICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBl
dmVudFRhcmdldERhdGEoKSBPVkVSUklERTsKLSAgICAgICAgdmlydHVhbCBFdmVudFRhcmdldERh
dGEmIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURFOworICAgICAgICB2aXJ0dWFsIHZv
aWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IHJlZigpOyB9CisgICAgICAgIHZpcnR1YWwg
dm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyBkZXJlZigpOyB9CiAKICAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZVdpbmRvdyhjb25zdCBTdHJpbmcmIHVybFN0
cmluZywgY29uc3QgQXRvbWljU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFdpbmRvd0ZlYXR1cmVz
JiwKICAgICAgICAgICAgIERPTVdpbmRvdyogYWN0aXZlV2luZG93LCBGcmFtZSogZmlyc3RGcmFt
ZSwgRnJhbWUqIG9wZW5lckZyYW1lLApAQCAtNDU5LDggKzQ1OCw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8TG9jYXRpb24+IG1fbG9jYXRpb247CiAgICAg
ICAgIG11dGFibGUgUmVmUHRyPFN0eWxlTWVkaWE+IG1fbWVkaWE7CiAKLSAgICAgICAgRXZlbnRU
YXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwotCiAgICAgICAgIFN0cmluZyBtX3N0YXR1czsK
ICAgICAgICAgU3RyaW5nIG1fZGVmYXVsdFN0YXR1czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291
cmNlLmNwcAppbmRleCBjMTA5MTJjLi5hZGU1ZmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291
cmNlLmNwcApAQCAtMjA5LDE2ICsyMDksNiBAQCB2b2lkIEV2ZW50U291cmNlOjpjbG9zZSgpCiAg
ICAgfQogfQogCi1FdmVudFRhcmdldEludGVyZmFjZSBFdmVudFNvdXJjZTo6ZXZlbnRUYXJnZXRJ
bnRlcmZhY2UoKSBjb25zdAotewotICAgIHJldHVybiBFdmVudFNvdXJjZUV2ZW50VGFyZ2V0SW50
ZXJmYWNlVHlwZTsKLX0KLQotU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogRXZlbnRTb3VyY2U6OnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAotewotICAgIHJldHVybiBBY3RpdmVET01PYmpl
Y3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLX0KLQogdm9pZCBFdmVudFNvdXJjZTo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKQogewogICAgIEFTU0VSVChtX3N0YXRlID09IENPTk5FQ1RJTkcpOwpAQCAtNDMxLDE0
ICs0MjEsNCBAQCBQYXNzUmVmUHRyPE1lc3NhZ2VFdmVudD4gRXZlbnRTb3VyY2U6OmNyZWF0ZU1l
c3NhZ2VFdmVudCgpCiAgICAgcmV0dXJuIGV2ZW50LnJlbGVhc2UoKTsKIH0KIAotRXZlbnRUYXJn
ZXREYXRhKiBFdmVudFNvdXJjZTo6ZXZlbnRUYXJnZXREYXRhKCkKLXsKLSAgICByZXR1cm4gJm1f
ZXZlbnRUYXJnZXREYXRhOwotfQotCi1FdmVudFRhcmdldERhdGEmIEV2ZW50U291cmNlOjplbnN1
cmVFdmVudFRhcmdldERhdGEoKQotewotICAgIHJldHVybiBtX2V2ZW50VGFyZ2V0RGF0YTsKLX0K
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudFNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCmluZGV4
IGU0MmE4ZTMuLjk3ZTdjMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRT
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmgKQEAgLTQ4LDcg
KzQ4LDggQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29k
ZXI7CiBjbGFzcyBUaHJlYWRhYmxlTG9hZGVyOwogCi1jbGFzcyBFdmVudFNvdXJjZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPEV2ZW50U291cmNlPiwgcHVibGljIEV2ZW50VGFyZ2V0LCBwcml2YXRlIFRo
cmVhZGFibGVMb2FkZXJDbGllbnQsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgeworLy8gRklYTUU6
IFRoaXMgY2xhc3Mgc2hvdWxkIGJlIG1hcmtlZCBGSU5BTCBvbmNlIDxodHRwOi8vd2Via2l0Lm9y
Zy9iLzEyMTc0Nz4gaXMgZml4ZWQuCitjbGFzcyBFdmVudFNvdXJjZSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEV2ZW50U291cmNlPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHByaXZh
dGUgVGhyZWFkYWJsZUxvYWRlckNsaWVudCwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
RXZlbnRTb3VyY2U+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5n
JiB1cmwsIGNvbnN0IERpY3Rpb25hcnkmLCBFeGNlcHRpb25Db2RlJik7CkBAIC03NSwxNiArNzYs
MTQgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ8RXZlbnRTb3VyY2U+OjpyZWY7CiAg
ICAgdXNpbmcgUmVmQ291bnRlZDxFdmVudFNvdXJjZT46OmRlcmVmOwogCi0gICAgdmlydHVhbCBF
dmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0OwotICAgIHZp
cnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNv
bnN0OworICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZh
Y2UoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBFdmVudFNvdXJjZUV2ZW50VGFyZ2V0
SW50ZXJmYWNlVHlwZTsgfQorICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIEFjdGl2
ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAKIHByaXZhdGU6CiAgICAg
RXZlbnRTb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IEtVUkwmLCBjb25zdCBE
aWN0aW9uYXJ5Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklE
RSB7IHJlZigpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklE
RSB7IGRlcmVmKCk7IH0KLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXRE
YXRhKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEmIGVuc3VyZUV2ZW50
VGFyZ2V0RGF0YSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgp
IE9WRVJSSURFIEZJTkFMIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRh
cmdldCgpIE9WRVJSSURFIEZJTkFMIHsgZGVyZWYoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7
CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBpbnQpOwpAQCAt
MTIyLDggKzEyMSw2IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fbGFzdEV2ZW50SWQ7CiAgICAg
dW5zaWduZWQgbG9uZyBsb25nIG1fcmVjb25uZWN0RGVsYXk7CiAgICAgU3RyaW5nIG1fZXZlbnRT
dHJlYW1PcmlnaW47Ci0KLSAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BlcmZvcm1hbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3Bw
CmluZGV4IGRmMzIzYzYuLjE4MGJkOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGVyZm9ybWFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3Bw
CkBAIC02NywxMSArNjcsNiBAQCBQZXJmb3JtYW5jZTo6flBlcmZvcm1hbmNlKCkKIHsKIH0KIAot
RXZlbnRUYXJnZXRJbnRlcmZhY2UgUGVyZm9ybWFuY2U6OmV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gUGVyZm9ybWFuY2VFdmVudFRhcmdldEludGVyZmFjZVR5cGU7
Ci19Ci0KIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFBlcmZvcm1hbmNlOjpzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkgY29uc3QKIHsKICAgICBpZiAoIWZyYW1lKCkpCkBAIC0xOTgsMTYgKzE5Myw2
IEBAIGJvb2wgUGVyZm9ybWFuY2U6OmlzUmVzb3VyY2VUaW1pbmdCdWZmZXJGdWxsKCkKIAogI2Vu
ZGlmIC8vIEVOQUJMRShSRVNPVVJDRV9USU1JTkcpCiAKLUV2ZW50VGFyZ2V0RGF0YSogUGVyZm9y
bWFuY2U6OmV2ZW50VGFyZ2V0RGF0YSgpCi17Ci0gICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0
YTsKLX0KLQotRXZlbnRUYXJnZXREYXRhJiBQZXJmb3JtYW5jZTo6ZW5zdXJlRXZlbnRUYXJnZXRE
YXRhKCkKLXsKLSAgICByZXR1cm4gbV9ldmVudFRhcmdldERhdGE7Ci19Ci0KICNpZiBFTkFCTEUo
VVNFUl9USU1JTkcpCiB2b2lkIFBlcmZvcm1hbmNlOjp3ZWJraXRNYXJrKGNvbnN0IFN0cmluZyYg
bWFya05hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QZXJmb3JtYW5jZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5o
CmluZGV4IDBiNzBkNzcuLjYyN2Y1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGVyZm9ybWFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmgKQEAg
LTUyLDEzICs1MiwxNCBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJl
c3BvbnNlOwogY2xhc3MgVXNlclRpbWluZzsKIAotY2xhc3MgUGVyZm9ybWFuY2UgOiBwdWJsaWMg
U2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxQZXJmb3JtYW5jZT4sIHB1YmxpYyBE
T01XaW5kb3dQcm9wZXJ0eSwgcHVibGljIEV2ZW50VGFyZ2V0IHsKKy8vIEZJWE1FOiBUaGlzIGNs
YXNzIHNob3VsZCBiZSBtYXJrZWQgRklOQUwgb25jZSA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMjE3
NDc+IGlzIGZpeGVkLgorY2xhc3MgUGVyZm9ybWFuY2UgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxl
LCBwdWJsaWMgUmVmQ291bnRlZDxQZXJmb3JtYW5jZT4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0
eSwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEgewogcHVibGljOgogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFBlcmZvcm1hbmNlPiBjcmVhdGUoRnJhbWUqIGZyYW1lKSB7IHJldHVybiBh
ZG9wdFJlZihuZXcgUGVyZm9ybWFuY2UoZnJhbWUpKTsgfQogICAgIH5QZXJmb3JtYW5jZSgpOwog
Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgp
IGNvbnN0OwotICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpIGNvbnN0OworICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZl
bnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBQZXJmb3Jt
YW5jZUV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQorICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFIEZJTkFM
OwogCiAgICAgUGVyZm9ybWFuY2VOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uKCkgY29uc3Q7CiAgICAg
UGVyZm9ybWFuY2VUaW1pbmcqIHRpbWluZygpIGNvbnN0OwpAQCAtOTMsMTQgKzk0LDEwIEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgUGVyZm9ybWFuY2UoRnJhbWUqKTsKIAotICAg
IHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgcmVmKCk7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgZGVyZWYoKTsgfQotICAg
IHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKSBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSYgZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgRklOQUwgeyBy
ZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgRklO
QUwgeyBkZXJlZigpOyB9CiAgICAgYm9vbCBpc1Jlc291cmNlVGltaW5nQnVmZmVyRnVsbCgpOwog
Ci0gICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwotCiAgICAgbXV0YWJsZSBS
ZWZQdHI8UGVyZm9ybWFuY2VOYXZpZ2F0aW9uPiBtX25hdmlnYXRpb247CiAgICAgbXV0YWJsZSBS
ZWZQdHI8UGVyZm9ybWFuY2VUaW1pbmc+IG1fdGltaW5nOwogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL0Fic3RyYWN0V29ya2VyLmNwcAppbmRleCBkYzYzMTk2Li42NDcyZWQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmNwcApAQCAtODcsMTYgKzg3LDYgQEAg
S1VSTCBBYnN0cmFjdFdvcmtlcjo6cmVzb2x2ZVVSTChjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0
aW9uQ29kZSYgZWMpCiAgICAgcmV0dXJuIHNjcmlwdFVSTDsKIH0KIAotRXZlbnRUYXJnZXREYXRh
KiBBYnN0cmFjdFdvcmtlcjo6ZXZlbnRUYXJnZXREYXRhKCkKLXsKLSAgICByZXR1cm4gJm1fZXZl
bnRUYXJnZXREYXRhOwotfQotCi1FdmVudFRhcmdldERhdGEmIEFic3RyYWN0V29ya2VyOjplbnN1
cmVFdmVudFRhcmdldERhdGEoKQotewotICAgIHJldHVybiBtX2V2ZW50VGFyZ2V0RGF0YTsKLX0K
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdPUktFUlMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmgKaW5kZXggMjc4ZGFlOS4uNGVhYzMy
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaApAQCAtNDcsMTAgKzQ3
LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBLVVJMOwogICAgIGNsYXNzIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKLSAgICBjbGFzcyBBYnN0cmFjdFdvcmtlciA6IHB1Ymxp
YyBSZWZDb3VudGVkPEFic3RyYWN0V29ya2VyPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVi
bGljIEV2ZW50VGFyZ2V0IHsKKyAgICBjbGFzcyBBYnN0cmFjdFdvcmtlciA6IHB1YmxpYyBSZWZD
b3VudGVkPEFic3RyYWN0V29ya2VyPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2
ZW50VGFyZ2V0V2l0aElubGluZURhdGEgewogICAgIHB1YmxpYzoKICAgICAgICAgLy8gRXZlbnRU
YXJnZXQgQVBJcwotICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBBY3RpdmVET01PYmpl
Y3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQorICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERSBG
SU5BTCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsg
fQogCiAgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZXJyb3IpOwogCkBA
IC02NiwxNCArNjYsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBpbnRwdHJfdCBh
c0lEKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4odGhpcyk7IH0K
IAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9W
RVJSSURFIHsgcmVmKCk7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQo
KSBPVkVSUklERSB7IGRlcmVmKCk7IH0KLSAgICAgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEq
IGV2ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURFOwotICAgICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0
RGF0YSYgZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREU7Ci0gICAgICAgIAotICAgICAg
ICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpIE9WRVJSSURFOworICAgICAgICB2aXJ0
dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7IHJlZigpOyB9CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgRklOQUwgeyBkZXJl
ZigpOyB9CiAKLSAgICAgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpIE9WRVJSSURFOwogICAgIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCmluZGV4IDZkNWIy
MDMuLmIxM2QwNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaApAQCAtNzcsOSArNzcsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgT1ZF
UlJJREU7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZCgpIE9WRVJSSURFOwog
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgcmVmKCk7
IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IGRl
cmVmKCk7IH0KLQogICAgICAgICBmcmllbmQgdm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2VkKGJvb2wg
aXNPbkxpbmUpOwogCiAgICAgICAgIFJlZlB0cjxXb3JrZXJTY3JpcHRMb2FkZXI+IG1fc2NyaXB0
TG9hZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxT
Y29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcApp
bmRleCBkNDFmNjZjLi5hODM0NmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckdsb2JhbFNjb3BlLmNwcApAQCAtMTE3LDExICsxMTcsNiBAQCB2b2lkIFdvcmtlckdsb2JhbFNj
b3BlOjphcHBseUNvbnRlbnRTZWN1cml0eVBvbGljeUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBw
b2xpYwogICAgIGNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5kaWRSZWNlaXZlSGVhZGVyKHBvbGlj
eSwgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSk7CiB9CiAKLVNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIFdvcmtlckdsb2JhbFNjb3BlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKLXsK
LSAgICByZXR1cm4gY29uc3RfY2FzdDxXb3JrZXJHbG9iYWxTY29wZSo+KHRoaXMpOwotfQotCiBL
VVJMIFdvcmtlckdsb2JhbFNjb3BlOjpjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCkgY29u
c3QKIHsKICAgICAvLyBBbHdheXMgcmV0dXJuIGEgbnVsbCBVUkwgd2hlbiBwYXNzZWQgYSBudWxs
IHN0cmluZy4KQEAgLTMwOCwxNiArMzAzLDYgQEAgYm9vbCBXb3JrZXJHbG9iYWxTY29wZTo6aXNK
U0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2NyaXB0LT5pc0V4ZWN1
dGlvbkZvcmJpZGRlbigpOwogfQogCi1FdmVudFRhcmdldERhdGEqIFdvcmtlckdsb2JhbFNjb3Bl
OjpldmVudFRhcmdldERhdGEoKQotewotICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7Ci19
Ci0KLUV2ZW50VGFyZ2V0RGF0YSYgV29ya2VyR2xvYmFsU2NvcGU6OmVuc3VyZUV2ZW50VGFyZ2V0
RGF0YSgpCi17Ci0gICAgcmV0dXJuIG1fZXZlbnRUYXJnZXREYXRhOwotfQotCiBXb3JrZXJHbG9i
YWxTY29wZTo6T2JzZXJ2ZXI6Ok9ic2VydmVyKFdvcmtlckdsb2JhbFNjb3BlKiBjb250ZXh0KQog
ICAgIDogbV9jb250ZXh0KGNvbnRleHQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckdsb2JhbFNjb3BlLmgKaW5kZXggMzIzODllNS4uNzI0YjQwZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaApAQCAtNTQsMTMgKzU0LDEzIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBjbGFzcyBXb3JrZXJOYXZpZ2F0b3I7CiAgICAgY2xhc3MgV29ya2Vy
VGhyZWFkOwogCi0gICAgY2xhc3MgV29ya2VyR2xvYmFsU2NvcGUgOiBwdWJsaWMgUmVmQ291bnRl
ZDxXb3JrZXJHbG9iYWxTY29wZT4sIHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0LCBwdWJs
aWMgRXZlbnRUYXJnZXQgeworICAgIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlIDogcHVibGljIFJl
ZkNvdW50ZWQ8V29ya2VyR2xvYmFsU2NvcGU+LCBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEgewogICAgIHB1YmxpYzoKICAgICAg
ICAgdmlydHVhbCB+V29ya2VyR2xvYmFsU2NvcGUoKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNXb3JrZXJHbG9iYWxTY29wZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAot
ICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSBjb25zdCBPVkVSUklERTsKKyAgICAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyBy
ZXR1cm4gY29uc3RfY2FzdDxXb3JrZXJHbG9iYWxTY29wZSo+KHRoaXMpOyB9CiAKICAgICAgICAg
dmlydHVhbCBib29sIGlzU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xNDksMTAgKzE0OSw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSBPVkVSUklERSB7IHJlZigpOyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkZXJlZlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBPVkVSUklERSB7IGRlcmVmKCk7IH0KIAotICAgICAgICB2aXJ0
dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IHJlZigpOyB9Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyBkZXJlZigpOyB9Ci0gICAg
ICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKSBPVkVSUklERTsK
LSAgICAgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEmIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgp
IE9WRVJSSURFOworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklE
RSBGSU5BTCB7IHJlZigpOyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0
KCkgT1ZFUlJJREUgRklOQUwgeyBkZXJlZigpOyB9CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGFk
ZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25l
ZCBjb2x1bW5OdW1iZXIsIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiwgSlNDOjpFeGVjU3Rh
dGUqID0gMCwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciA9IDApIE9WRVJSSURFOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVz
c2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElk
ZW50aWZpZXIgPSAwKSBPVkVSUklERTsKQEAgLTE3NSw3ICsxNzMsNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIE93blB0cjxXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyPiBtX3dvcmtl
ckluc3BlY3RvckNvbnRyb2xsZXI7CiAjZW5kaWYKICAgICAgICAgYm9vbCBtX2Nsb3Npbmc7Ci0g
ICAgICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKIAogICAgICAgICBIYXNo
U2V0PE9ic2VydmVyKj4gbV93b3JrZXJPYnNlcnZlcnM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwCmluZGV4IDYwZGQ1ZjcuLjE5YjE5OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcApAQCAtMTMwNSwyNCArMTMwNSw0IEBAIHZvaWQgWE1MSHR0cFJlcXVl
c3Q6OmNvbnRleHREZXN0cm95ZWQoKQogICAgIEFjdGl2ZURPTU9iamVjdDo6Y29udGV4dERlc3Ry
b3llZCgpOwogfQogCi1FdmVudFRhcmdldEludGVyZmFjZSBYTUxIdHRwUmVxdWVzdDo6ZXZlbnRU
YXJnZXRJbnRlcmZhY2UoKSBjb25zdAotewotICAgIHJldHVybiBYTUxIdHRwUmVxdWVzdEV2ZW50
VGFyZ2V0SW50ZXJmYWNlVHlwZTsKLX0KLQotU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogWE1MSHR0
cFJlcXVlc3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAotewotICAgIHJldHVybiBB
Y3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLX0KLQotRXZlbnRUYXJn
ZXREYXRhKiBYTUxIdHRwUmVxdWVzdDo6ZXZlbnRUYXJnZXREYXRhKCkKLXsKLSAgICByZXR1cm4g
Jm1fZXZlbnRUYXJnZXREYXRhOwotfQotCi1FdmVudFRhcmdldERhdGEmIFhNTEh0dHBSZXF1ZXN0
OjplbnN1cmVFdmVudFRhcmdldERhdGEoKQotewotICAgIHJldHVybiBtX2V2ZW50VGFyZ2V0RGF0
YTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuaAppbmRleCBkZmFhOTk2Li4yNDFlYTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuaApAQCAtNTEsNyArNTEsOCBAQCBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUZXh0UmVz
b3VyY2VEZWNvZGVyOwogY2xhc3MgVGhyZWFkYWJsZUxvYWRlcjsKIAotY2xhc3MgWE1MSHR0cFJl
cXVlc3QgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxYTUxIdHRw
UmVxdWVzdD4sIHB1YmxpYyBFdmVudFRhcmdldCwgcHJpdmF0ZSBUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKKy8vIEZJWE1FOiBUaGlzIGNsYXNzIHNob3Vs
ZCBiZSBtYXJrZWQgRklOQUwgb25jZSA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMjE3NDc+IGlzIGZp
eGVkLgorY2xhc3MgWE1MSHR0cFJlcXVlc3QgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJs
aWMgUmVmQ291bnRlZDxYTUxIdHRwUmVxdWVzdD4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxp
bmVEYXRhLCBwcml2YXRlIFRocmVhZGFibGVMb2FkZXJDbGllbnQsIHB1YmxpYyBBY3RpdmVET01P
YmplY3QgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFhNTEh0dHBSZXF1ZXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCopOwpAQCAtODIsOCArODMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFRpbWVv
dXQoKTsKICNlbmRpZgogCi0gICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRh
cmdldEludGVyZmFjZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OworICAgIHZpcnR1YWwgRXZlbnRUYXJn
ZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7
IHJldHVybiBYTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQorICAgIHZp
cnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNv
bnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOyB9CiAKICAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBt
X3VybDsgfQogICAgIFN0cmluZyBzdGF0dXNUZXh0KEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKQEAg
LTE2NywxMCArMTY4LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKCkgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwg
dm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgZGVyZWYoKTsgfQotICAgIHZpcnR1YWwg
RXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFs
IEV2ZW50VGFyZ2V0RGF0YSYgZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgRklOQUwgeyByZWYoKTsgfQor
ICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgRklOQUwgeyBkZXJl
ZigpOyB9CiAKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKICAgICBTZWN1cml0eU9y
aWdpbiogc2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKQEAgLTI1NCw4ICsyNTMsNiBAQCBwcml2YXRl
OgogICAgIFN0cmluZyBtX2xhc3RTZW5kVVJMOwogICAgIEV4Y2VwdGlvbkNvZGUgbV9leGNlcHRp
b25Db2RlOwogCi0gICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwotCiAgICAg
WE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50VGhyb3R0bGUgbV9wcm9ncmVzc0V2ZW50VGhyb3R0
bGU7CiAKICAgICAvLyBBbiBlbnVtIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFsbG93ZWQgc3RyaW5n
IHZhbHVlcyBmb3IgdGhlIHJlc3BvbnNlVHlwZSBhdHRyaWJ1dGUuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RVcGxvYWQuY3BwIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0VXBsb2FkLmNwcAppbmRleCAzYTI3NjY1Li4xOGM5OTRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RVcGxvYWQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdFVwbG9hZC5jcHAKQEAgLTQxLDI2ICs0
MSw2IEBAIFhNTEh0dHBSZXF1ZXN0VXBsb2FkOjpYTUxIdHRwUmVxdWVzdFVwbG9hZChYTUxIdHRw
UmVxdWVzdCogeG1sSHR0cFJlcXVlc3QpCiB7CiB9CiAKLUV2ZW50VGFyZ2V0SW50ZXJmYWNlIFhN
TEh0dHBSZXF1ZXN0VXBsb2FkOjpldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIFhNTEh0dHBSZXF1ZXN0VXBsb2FkRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOwotfQot
Ci1TY3JpcHRFeGVjdXRpb25Db250ZXh0KiBYTUxIdHRwUmVxdWVzdFVwbG9hZDo6c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1feG1sSHR0cFJlcXVlc3QtPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLX0KLQotRXZlbnRUYXJnZXREYXRhKiBYTUxIdHRwUmVx
dWVzdFVwbG9hZDo6ZXZlbnRUYXJnZXREYXRhKCkKLXsKLSAgICByZXR1cm4gJm1fZXZlbnRUYXJn
ZXREYXRhOwotfQotCi1FdmVudFRhcmdldERhdGEmIFhNTEh0dHBSZXF1ZXN0VXBsb2FkOjplbnN1
cmVFdmVudFRhcmdldERhdGEoKQotewotICAgIHJldHVybiBtX2V2ZW50VGFyZ2V0RGF0YTsKLX0K
LQogdm9pZCBYTUxIdHRwUmVxdWVzdFVwbG9hZDo6ZGlzcGF0Y2hFdmVudEFuZExvYWRFbmQoUGFz
c1JlZlB0cjxFdmVudD4gZXZlbnQpCiB7CiAgICAgQVNTRVJUKGV2ZW50LT50eXBlKCkgPT0gZXZl
bnROYW1lcygpLmxvYWRFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5hYm9y
dEV2ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmVycm9yRXZlbnQgfHwgZXZl
bnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkudGltZW91dEV2ZW50KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdFVwbG9hZC5oIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0VXBsb2FkLmgKaW5kZXggM2EyNTM4MS4uNDcxNGU5ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0VXBsb2FkLmgKKysrIGIvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0VXBsb2FkLmgKQEAgLTQzLDcgKzQzLDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAg
ICAgY2xhc3MgWE1MSHR0cFJlcXVlc3Q7CiAKLSAgICBjbGFzcyBYTUxIdHRwUmVxdWVzdFVwbG9h
ZCA6IHB1YmxpYyBFdmVudFRhcmdldCB7CisgICAgLy8gRklYTUU6IFRoaXMgY2xhc3Mgc2hvdWxk
IGJlIG1hcmtlZCBGSU5BTCBvbmNlIDxodHRwOi8vd2Via2l0Lm9yZy9iLzEyMTc0Nz4gaXMgZml4
ZWQuCisgICAgY2xhc3MgWE1MSHR0cFJlcXVlc3RVcGxvYWQgOiBwdWJsaWMgRXZlbnRUYXJnZXRX
aXRoSW5saW5lRGF0YSB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc093blB0cjxY
TUxIdHRwUmVxdWVzdFVwbG9hZD4gY3JlYXRlKFhNTEh0dHBSZXF1ZXN0KiB4bWxIdHRwUmVxdWVz
dCkKICAgICAgICAgewpAQCAtNTQsOCArNTUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZvaWQgZGVyZWYoKSB7IG1feG1sSHR0cFJlcXVlc3QtPmRlcmVmKCk7IH0KICAgICAgICAg
WE1MSHR0cFJlcXVlc3QqIHhtbEh0dHBSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV94bWxIdHRw
UmVxdWVzdDsgfQogCi0gICAgICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRU
YXJnZXRJbnRlcmZhY2UoKSBjb25zdDsKLSAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIEV2ZW50VGFy
Z2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgT1ZFUlJJREUgRklOQUwg
eyByZXR1cm4gWE1MSHR0cFJlcXVlc3RVcGxvYWRFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0K
KyAgICAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gbV94bWxIdHRwUmVxdWVzdC0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAKICAgICAgICAgREVGSU5FX0FUVFJJQlVURV9F
VkVOVF9MSVNURU5FUihhYm9ydCk7CiAgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElT
VEVORVIoZXJyb3IpOwpAQCAtNjksMTMgKzcwLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBwcml2YXRlOgogICAgICAgICBleHBsaWNpdCBYTUxIdHRwUmVxdWVzdFVwbG9hZChYTUxIdHRw
UmVxdWVzdCopOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJS
SURFIHsgcmVmKCk7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBP
VkVSUklERSB7IGRlcmVmKCk7IH0KLSAgICAgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2
ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURFOwotICAgICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0
YSYgZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREU7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgcmVmKCk7IH0KKyAgICAgICAgdmly
dHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7IGRlcmVmKCk7IH0K
IAogICAgICAgICBYTUxIdHRwUmVxdWVzdCogbV94bWxIdHRwUmVxdWVzdDsKLSAgICAgICAgRXZl
bnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwogICAgIH07CiAgICAgCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>