<?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>143938</bug_id>
          
          <creation_ts>2015-04-19 15:52:50 -0700</creation_ts>
          <short_desc>Make WTF Logging runtime switchable, starting with WebCore&apos;s Network channel</short_desc>
          <delta_ts>2017-02-10 17:29:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          <cc>aestes</cc>
    
    <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1086685</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2015-04-19 15:52:50 -0700</bug_when>
    <thetext>Currently WTF logging only works in debug builds; it would be useful if it could be enabled in release builds.

Logging should also support severity levels to enable different granularities (with the potential to vary default verbosity by system capabilities and build style).

Adding new logging macro to support level &amp; moving channels incrementally, since some logging may be expensive even when disabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086692</commentid>
    <comment_count>1</comment_count>
      <attachid>251137</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2015-04-19 16:47:39 -0700</bug_when>
    <thetext>Created attachment 251137
Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086693</commentid>
    <comment_count>2</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2015-04-19 16:49:15 -0700</bug_when>
    <thetext>With the attached patch, Network logging can be enabled in a release build using:

    defaults write com.apple.WebKit.Networking.Development WebCoreLogging &apos;Network&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086694</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-19 16:49:58 -0700</bug_when>
    <thetext>Attachment 251137 did not pass style-queue:


ERROR: Source/WebKit2/Platform/Logging.cpp:35:  JOIN_LOG_CHANNEL_WITH_PREFIX is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/platform/Logging.cpp:36:  JOIN_LOG_CHANNEL_WITH_PREFIX is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 2 in 27 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086870</commentid>
    <comment_count>4</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2015-04-20 12:19:53 -0700</bug_when>
    <thetext>Per conversation with Geoff, Geoff likes log level names &quot;Always&quot;, &quot;Customer&quot;, &quot;Debug&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144233</commentid>
    <comment_count>5</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-11-23 15:17:23 -0800</bug_when>
    <thetext>If you rebase this, I&apos;ll review it!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1275663</commentid>
    <comment_count>6</comment_count>
      <attachid>251137</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-02-10 17:29:24 -0800</bug_when>
    <thetext>Comment on attachment 251137
Fix

Clearing r?, this patch is rotted.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251137</attachid>
            <date>2015-04-19 16:47:39 -0700</date>
            <delta_ts>2017-02-10 17:29:24 -0800</delta_ts>
            <desc>Fix</desc>
            <filename>143938.1.patch</filename>
            <type>text/plain</type>
            <size>98974</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxODI5OTUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDE1LTA0LTE5ICBHYXZpbiBCYXJyYWNsb3VnaCAg
PGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIFdURiBMb2dnaW5nIHJ1bnRp
bWUgc3dpdGNoYWJsZSwgc3RhcnRpbmcgd2l0aCBXZWJDb3JlJ3MgTmV0d29yayBjaGFubmVsCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM5MzgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHkg
V1RGIGxvZ2dpbmcgb25seSB3b3JrcyBpbiBkZWJ1ZyBidWlsZHM7IGl0IHdvdWxkIGJlIHVzZWZ1
bCBpZiBpdCBjb3VsZCBiZSBlbmFibGVkIGluCisgICAgICAgIHJlbGVhc2UgYnVpbGRzLiBMb2dn
aW5nIHNob3VsZCBhbHNvIHN1cHBvcnQgc2V2ZXJpdHkgbGV2ZWxzIHRvIGVuYWJsZSBkaWZmZXJl
bnQgZ3JhbnVsYXJpdGllcworICAgICAgICAod2l0aCB0aGUgcG90ZW50aWFsIHRvIHZhcnkgZGVm
YXVsdCB2ZXJib3NpdHkgYnkgc3lzdGVtIGNhcGFiaWxpdGllcyBhbmQgYnVpbGQgc3R5bGUpLiBB
ZGRpbmcKKyAgICAgICAgbmV3IGxvZ2dpbmcgbWFjcm8gdG8gc3VwcG9ydCBsZXZlbCAmIG1vdmlu
ZyBjaGFubmVscyBpbmNyZW1lbnRhbGx5LCBzaW5jZSBzb21lIGxvZ2dpbmcgbWF5IGJlCisgICAg
ICAgIGV4cGVuc2l2ZSBldmVuIHdoZW4gZGlzYWJsZWQuCisKKyAgICAgICAgQ2hhbmdlcyBpbiBX
VEY6CisgICAgICAgICAgICAtIFRoZSBXVEZMb2dDaGFubmVsU3RhdGUgZW51bSAod2hpY2ggaGFk
IE9mZi9PbiBzdGF0ZXMpIGhhcyBiZWVuIHJlcGxhY2VkIHdpdGggV1RGTG9nTGV2ZWwuCisgICAg
ICAgICAgICAgIFRoaXMgc3VwcG9ydHMgMyAnb24nIGxldmVscyAtIE9mZi9Dcml0aWNhbC9Ob3Jt
YWwvVmVyYm9zZS4KKyAgICAgICAgICAgIC0gV1RGTG9nVmVyYm9zZS9MT0dfVkVSQk9TRSB3ZXJl
IG5vdCB2ZXJ5IGRlc2NyaXB0aXZlLCBhbmQgY29uZmxpY3RlZCB3aXRoIHVzZSBvZiB2ZXJib3Nl
CisgICAgICAgICAgICAgIGFzIGEgbG9nIGxldmVsLiBSZW5hbWVkIHRvIFdURkxvZ1dpdGhMaW5l
TnVtYmVyL0xPR19XSVRIX0xJTkVfTlVNQkVSLgorICAgICAgICAgICAgLSBBZGRlZCBXVEZDaGVj
a0xvZ0xldmVsIHRvIGNoZWNrIHdoZXRoZXIgbG9nZ2luZyBvZiBtZXNzYWdlcyBhdCB0aGUgcHJv
dmlkZWQgbGV2ZWwgaXMKKyAgICAgICAgICAgICAgY3VycmVudGx5IGVuYWJsZWQgb24gdGhlIGdp
dmVuIGNoYW5uZWwsIHdpdGggY29udmVuaWVuY2Ugd3JhcHBlciBMT0dfTEVWRUxfRU5BQkxFRC4K
KyAgICAgICAgICAgIC0gQWRkZWQgTE9HX1dJVEhfTEVWRUwuIEVxdWl2YWxuZXQgdG8gdGhlIGV4
aXN0aW5nIExPRyBtYWNybywgYnV0IChhKSBhbHdheXMgYnVpbHQtaW4sIGFuZAorICAgICAgICAg
ICAgICAoYikgdGFrZXMgYSBsb2cgbGV2ZWwgaW5kaWNhdGluZyB0aGUgaW1wb3J0YW5jZSBvZiB0
aGUgbWVzc2FnZS4gVGhlIG1lc3NhZ2Ugd2lsbCBvbmx5IGJlCisgICAgICAgICAgICAgIGxvZ2dl
ZCBpZiB0aGUgY2hhbm5lbCBoYXMgbG9nZ2luZyBvZiBtZXNzYWdlcyBvZiB0aGF0IGltcG9ydGFu
Y2UgZW5hYmxlZC4gTWVzc2dhZXMgaGF2ZQorICAgICAgICAgICAgICBhbiBpbXBvcnRhbmNlIGxl
dmVsIG9mIENyaXRpY2FsL05vcm1hbC9WZXJib3NlLiBDdXJyZW50bHkgaXQgaXMgb25seSBwb3Nz
aWJsZSB0byBzZXQKKyAgICAgICAgICAgICAgY2hhbm5lbHMgdG8gbG9nZ2luZyBsZXZlbHMgT2Zm
L1ZlcmJvc2UuIFdoZW4gdGhlIGNoYW5uZWwgbGV2ZWwgaWYgT2ZmLCBubyBtZXNzYWdlcyB3aWxs
CisgICAgICAgICAgICAgIGJlIGxvZ2dlZCwgYW5kIHdoZW4gdGhlIGNoYW5uZWwgbGV2ZWwgaXMg
VmVyYm9zZSBhbGwgdGhyZWUgbGV2ZWwgd2lsbCBwYXNzIHRoZSB0ZXN0LgorCisgICAgICAgICog
d3RmL0Fzc2VydGlvbnMuY3BwOgorICAgICAgICAgICAgV1RGTG9nQ2hhbm5lbE9uL1dURkxvZ0No
YW5uZWxPZmYgcmVuYW1lZC4KKyAgICAgICAgKiB3dGYvQXNzZXJ0aW9ucy5oOgorICAgICAgICAg
ICAgLSBXVEZMb2dDaGFubmVsU3RhdGUgLT4gV1RGTG9nTGV2ZWwKKyAgICAgICAgICAgIC0gV1RG
TG9nVmVyYm9zZSAtPiBXVEZMb2dXaXRoTGluZU51bWJlcgorICAgICAgICAgICAgLSBMT0dfVkVS
Qk9TRSAtPiBMT0dfV0lUSF9MSU5FX05VTUJFUgorICAgICAgICAgICAgLSBtYWRlIEpPSU5fTE9H
X0NIQU5ORUxfV0lUSF9QUkVGSVggYXZhaWxhYmxlIHdoZW4gTE9HX0RJU0FCTEVECisgICAgICAg
ICAgICAtIGFkZGVkIFdURkNoZWNrTG9nTGV2ZWwsIExPR19MRVZFTF9FTkFCTEVELCBMT0dfV0lU
SF9MRVZFTAorICAgICAgICAqIHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuY3BwOgorICAgICAg
ICAgICAgV1RGTG9nQ2hhbm5lbE9uL1dURkxvZ0NoYW5uZWxPZmYgcmVuYW1lZC4KKwogMjAxNS0w
NC0xNyAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2Ug
QVNhbiBwb2lzb25pbmcgdG8gdGFpbnQgbW92ZWQtb3V0LW9mIFJlZnMKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL0Fzc2VydGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0Fzc2Vy
dGlvbnMuY3BwCShyZXZpc2lvbiAxODI4NzQpCisrKyBTb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25z
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgV1RGUmVwb3J0RXJy
b3IoY29uc3QgY2hhciogZmlsZSwgaW4KIAogdm9pZCBXVEZMb2coV1RGTG9nQ2hhbm5lbCogY2hh
bm5lbCwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pCiB7Ci0gICAgaWYgKGNoYW5uZWwtPnN0YXRl
ICE9IFdURkxvZ0NoYW5uZWxPbikKKyAgICBpZiAoY2hhbm5lbC0+c3RhdGUgPT0gV1RGTG9nTGV2
ZWxPZmYpCiAgICAgICAgIHJldHVybjsKIAogICAgIHZhX2xpc3QgYXJnczsKQEAgLTQyMiw5ICs0
MjIsOSBAQCB2b2lkIFdURkxvZyhXVEZMb2dDaGFubmVsKiBjaGFubmVsLCBjb25zCiAgICAgdmFf
ZW5kKGFyZ3MpOwogfQogCi12b2lkIFdURkxvZ1ZlcmJvc2UoY29uc3QgY2hhciogZmlsZSwgaW50
IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBXVEZMb2dDaGFubmVsKiBjaGFubmVsLCBjb25z
dCBjaGFyKiBmb3JtYXQsIC4uLikKK3ZvaWQgV1RGTG9nV2l0aExpbmVOdW1iZXIoY29uc3QgY2hh
ciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBXVEZMb2dDaGFubmVsKiBj
aGFubmVsLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikKIHsKLSAgICBpZiAoY2hhbm5lbC0+c3Rh
dGUgIT0gV1RGTG9nQ2hhbm5lbE9uKQorICAgIGlmIChjaGFubmVsLT5zdGF0ZSA9PSBXVEZMb2dM
ZXZlbE9mZikKICAgICAgICAgcmV0dXJuOwogCiAgICAgdmFfbGlzdCBhcmdzOwpAQCAtNDY4LDcg
KzQ2OCw3IEBAIFdURkxvZ0NoYW5uZWwqIFdURkxvZ0NoYW5uZWxCeU5hbWUoV1RGTG8KICAgICBy
ZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQgc2V0U3RhdGVPZkFsbENoYW5uZWxzKFdURkxvZ0No
YW5uZWwqIGNoYW5uZWxzW10sIHNpemVfdCBjaGFubmVsQ291bnQsIFdURkxvZ0NoYW5uZWxTdGF0
ZSBzdGF0ZSkKK3N0YXRpYyB2b2lkIHNldFN0YXRlT2ZBbGxDaGFubmVscyhXVEZMb2dDaGFubmVs
KiBjaGFubmVsc1tdLCBzaXplX3QgY2hhbm5lbENvdW50LCBXVEZMb2dMZXZlbCBzdGF0ZSkKIHsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNoYW5uZWxDb3VudDsgKytpKQogICAgICAgICBj
aGFubmVsc1tpXS0+c3RhdGUgPSBzdGF0ZTsKQEAgLTQ4Myw5ICs0ODMsOSBAQCB2b2lkIFdURklu
aXRpYWxpemVMb2dDaGFubmVsU3RhdGVzRnJvbVN0CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBjb21wb25lbnRzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFN0cmluZyBjb21wb25lbnQgPSBj
b21wb25lbnRzW2ldOwogCi0gICAgICAgIFdURkxvZ0NoYW5uZWxTdGF0ZSBsb2dDaGFubmVsU3Rh
dGUgPSBXVEZMb2dDaGFubmVsT247CisgICAgICAgIFdURkxvZ0xldmVsIGxvZ0NoYW5uZWxTdGF0
ZSA9IFdURkxvZ0xldmVsVmVyYm9zZTsKICAgICAgICAgaWYgKGNvbXBvbmVudC5zdGFydHNXaXRo
KCctJykpIHsKLSAgICAgICAgICAgIGxvZ0NoYW5uZWxTdGF0ZSA9IFdURkxvZ0NoYW5uZWxPZmY7
CisgICAgICAgICAgICBsb2dDaGFubmVsU3RhdGUgPSBXVEZMb2dMZXZlbE9mZjsKICAgICAgICAg
ICAgIGNvbXBvbmVudCA9IGNvbXBvbmVudC5zdWJzdHJpbmcoMSk7CiAgICAgICAgIH0KIApJbmRl
eDogU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL0Fzc2VydGlvbnMuaAkocmV2aXNpb24gMTgyODc0KQorKysgU291cmNlL1dURi93dGYvQXNz
ZXJ0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsMTAgKzExOCwxMCBAQCBleHRlcm4gIkMi
IHsKICNkZWZpbmUgTk9fUkVUVVJOX0RVRV9UT19DUkFTSAogI2VuZGlmCiAKLXR5cGVkZWYgZW51
bSB7IFdURkxvZ0NoYW5uZWxPZmYsIFdURkxvZ0NoYW5uZWxPbiB9IFdURkxvZ0NoYW5uZWxTdGF0
ZTsKK3R5cGVkZWYgZW51bSB7IFdURkxvZ0xldmVsT2ZmLCBXVEZMb2dMZXZlbENyaXRpY2FsLCBX
VEZMb2dMZXZlbE5vcm1hbCwgV1RGTG9nTGV2ZWxWZXJib3NlIH0gV1RGTG9nTGV2ZWw7CiAKIHR5
cGVkZWYgc3RydWN0IHsKLSAgICBXVEZMb2dDaGFubmVsU3RhdGUgc3RhdGU7CisgICAgV1RGTG9n
TGV2ZWwgc3RhdGU7CiAgICAgY29uc3QgY2hhciogbmFtZTsKIH0gV1RGTG9nQ2hhbm5lbDsKIApA
QCAtMTMxLDcgKzEzMSw3IEBAIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIFdURlJlcG9ydEFyZ3Vt
ZW4KIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIFdURlJlcG9ydEZhdGFsRXJyb3IoY29uc3QgY2hh
ciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBmb3Jt
YXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoNCwgNSk7CiBXVEZfRVhQT1JUX1BSSVZBVEUg
dm9pZCBXVEZSZXBvcnRFcnJvcihjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hh
ciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSBXVEZfQVRUUklCVVRFX1BSSU5U
Rig0LCA1KTsKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIFdURkxvZyhXVEZMb2dDaGFubmVsKiwg
Y29uc3QgY2hhciogZm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDIsIDMpOwotV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgV1RGTG9nVmVyYm9zZShjb25zdCBjaGFyKiBmaWxlLCBpbnQg
bGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIFdURkxvZ0NoYW5uZWwqLCBjb25zdCBjaGFyKiBm
b3JtYXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoNSwgNik7CitXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCBXVEZMb2dXaXRoTGluZU51bWJlcihjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwg
Y29uc3QgY2hhciogZnVuY3Rpb24sIFdURkxvZ0NoYW5uZWwqLCBjb25zdCBjaGFyKiBmb3JtYXQs
IC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoNSwgNik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBXVEZMb2dBbHdheXNWKGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCk7CiBXVEZfRVhQT1JU
X1BSSVZBVEUgdm9pZCBXVEZMb2dBbHdheXMoY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIFdURl9B
VFRSSUJVVEVfUFJJTlRGKDEsIDIpOwogV1RGX0VYUE9SVF9QUklWQVRFIE5PX1JFVFVSTl9EVUVf
VE9fQ1JBU0ggdm9pZCBXVEZMb2dBbHdheXNBbmRDcmFzaChjb25zdCBjaGFyKiBmb3JtYXQsIC4u
LikgV1RGX0FUVFJJQlVURV9QUklOVEYoMSwgMik7CkBAIC0xNDgsNiArMTQ4LDggQEAgV1RGX0VY
UE9SVF9QUklWQVRFIHZvaWQgV1RGSW5zdGFsbFJlcG9ydAogCiBXVEZfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBXVEZJc0RlYnVnZ2VyQXR0YWNoZWQoKTsKIAoraW5saW5lIGJvb2wgV1RGQ2hlY2tMb2dM
ZXZlbChXVEZMb2dDaGFubmVsKiBjaGFubmVsLCBXVEZMb2dMZXZlbCBtZXNzYWdlTG9nTGV2ZWwp
IHsgcmV0dXJuIGNoYW5uZWwtPnN0YXRlID49IG1lc3NhZ2VMb2dMZXZlbDsgfQorCiAjaWZkZWYg
X19jcGx1c3BsdXMKIH0KICNlbmRpZgpAQCAtMTc2LDYgKzE3OCwxMSBAQCBleHRlcm4gIkMiIHsK
IH0KICNlbmRpZgogCisjaWZuZGVmIEpPSU5fTE9HX0NIQU5ORUxfV0lUSF9QUkVGSVgKKyNkZWZp
bmUgSk9JTl9MT0dfQ0hBTk5FTF9XSVRIX1BSRUZJWChwcmVmaXgsIGNoYW5uZWwpIEpPSU5fTE9H
X0NIQU5ORUxfV0lUSF9QUkVGSVhfTEVWRUxfMihwcmVmaXgsIGNoYW5uZWwpCisjZGVmaW5lIEpP
SU5fTE9HX0NIQU5ORUxfV0lUSF9QUkVGSVhfTEVWRUxfMihwcmVmaXgsIGNoYW5uZWwpIHByZWZp
eCAjIyBjaGFubmVsCisjZW5kaWYKKwogLyogQkFDS1RSQUNFCiAKICAgUHJpbnQgYSBiYWNrdHJh
Y2UgdG8gdGhlIHNhbWUgbG9jYXRpb24gYXMgQVNTRVJUIG1lc3NhZ2VzLgpAQCAtMzQ0LDE2ICsz
NTEsMjIgQEAgd2hpbGUgKDApCiAjZGVmaW5lIExPRyhjaGFubmVsLCAuLi4pICgodm9pZCkwKQog
I2Vsc2UKICNkZWZpbmUgTE9HKGNoYW5uZWwsIC4uLikgV1RGTG9nKCZKT0lOX0xPR19DSEFOTkVM
X1dJVEhfUFJFRklYKExPR19DSEFOTkVMX1BSRUZJWCwgY2hhbm5lbCksIF9fVkFfQVJHU19fKQot
I2RlZmluZSBKT0lOX0xPR19DSEFOTkVMX1dJVEhfUFJFRklYKHByZWZpeCwgY2hhbm5lbCkgSk9J
Tl9MT0dfQ0hBTk5FTF9XSVRIX1BSRUZJWF9MRVZFTF8yKHByZWZpeCwgY2hhbm5lbCkKLSNkZWZp
bmUgSk9JTl9MT0dfQ0hBTk5FTF9XSVRIX1BSRUZJWF9MRVZFTF8yKHByZWZpeCwgY2hhbm5lbCkg
cHJlZml4ICMjIGNoYW5uZWwKICNlbmRpZgogCisvKiBMT0dfV0lUSF9MRVZFTCAqLworCisjZGVm
aW5lIExPR19MRVZFTF9FTkFCTEVEKGNoYW5uZWwsIGxldmVsKSBXVEZDaGVja0xvZ0xldmVsKCZK
T0lOX0xPR19DSEFOTkVMX1dJVEhfUFJFRklYKExPR19DSEFOTkVMX1BSRUZJWCwgY2hhbm5lbCks
IGxldmVsKQorI2RlZmluZSBMT0dfV0lUSF9MRVZFTChjaGFubmVsLCBsZXZlbCwgLi4uKSBcCisg
ICAgZG8geyBpZiAoTE9HX0xFVkVMX0VOQUJMRUQoY2hhbm5lbCwgbGV2ZWwpKSB7IFwKKyAgICBX
VEZMb2coJkpPSU5fTE9HX0NIQU5ORUxfV0lUSF9QUkVGSVgoTE9HX0NIQU5ORUxfUFJFRklYLCBj
aGFubmVsKSwgX19WQV9BUkdTX18pOyBcCisgICAgfSB9IHdoaWxlICgwKQorCiAvKiBMT0dfVkVS
Qk9TRSAqLwogCiAjaWYgTE9HX0RJU0FCTEVECi0jZGVmaW5lIExPR19WRVJCT1NFKGNoYW5uZWws
IC4uLikgKCh2b2lkKTApCisjZGVmaW5lIExPR19XSVRIX0xJTkVfTlVNQkVSKGNoYW5uZWwsIC4u
LikgKCh2b2lkKTApCiAjZWxzZQotI2RlZmluZSBMT0dfVkVSQk9TRShjaGFubmVsLCAuLi4pIFdU
RkxvZ1ZlcmJvc2UoX19GSUxFX18sIF9fTElORV9fLCBXVEZfUFJFVFRZX0ZVTkNUSU9OLCAmSk9J
Tl9MT0dfQ0hBTk5FTF9XSVRIX1BSRUZJWChMT0dfQ0hBTk5FTF9QUkVGSVgsIGNoYW5uZWwpLCBf
X1ZBX0FSR1NfXykKKyNkZWZpbmUgTE9HX1dJVEhfTElORV9OVU1CRVIoY2hhbm5lbCwgLi4uKSBX
VEZMb2dXaXRoTGluZU51bWJlcihfX0ZJTEVfXywgX19MSU5FX18sIFdURl9QUkVUVFlfRlVOQ1RJ
T04sICZKT0lOX0xPR19DSEFOTkVMX1dJVEhfUFJFRklYKExPR19DSEFOTkVMX1BSRUZJWCwgY2hh
bm5lbCksIF9fVkFfQVJHU19fKQogI2VuZGlmCiAKIC8qIFJFTEVBU0VfQVNTRVJUICovCkluZGV4
OiBTb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5jcHAJKHJldmlzaW9uIDE4Mjg3
NCkKKysrIFNvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM5LDcgKzM5LDcgQEAgdm9pZCBSZWZDb3VudGVkTGVha0NvdW50ZXI6OmRlY3Jl
bWVudCgpIAogI2Vsc2UKIAogI2RlZmluZSBMT0dfQ0hBTk5FTF9QUkVGSVggTG9nCi1zdGF0aWMg
V1RGTG9nQ2hhbm5lbCBMb2dSZWZDb3VudGVkTGVha3MgPSB7IFdURkxvZ0NoYW5uZWxPbiwgIlJl
ZkNvdW50ZWRMZWFrcyIgfTsKK3N0YXRpYyBXVEZMb2dDaGFubmVsIExvZ1JlZkNvdW50ZWRMZWFr
cyA9IHsgV1RGTG9nTGV2ZWxWZXJib3NlLCAiUmVmQ291bnRlZExlYWtzIiB9OwogCiB0eXBlZGVm
IEhhc2hDb3VudGVkU2V0PGNvbnN0IGNoYXIqLCBQdHJIYXNoPGNvbnN0IGNoYXIqPj4gUmVhc29u
U2V0Owogc3RhdGljIFJlYXNvblNldCogbGVha01lc3NhZ2VTdXBwcmVzc2lvblJlYXNvbnM7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODI5OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxODQgQEAKKzIwMTUtMDQtMTkgIEdhdmluIEJh
cnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgV1RGIExv
Z2dpbmcgcnVudGltZSBzd2l0Y2hhYmxlLCBzdGFydGluZyB3aXRoIFdlYkNvcmUncyBOZXR3b3Jr
IGNoYW5uZWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0MzkzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEN1cnJlbnRseSBXVEYgbG9nZ2luZyBvbmx5IHdvcmtzIGluIGRlYnVnIGJ1aWxkczsgaXQgd291
bGQgYmUgdXNlZnVsIGlmIGl0IGNvdWxkIGJlIGVuYWJsZWQgaW4KKyAgICAgICAgcmVsZWFzZSBi
dWlsZHMuIExvZ2dpbmcgc2hvdWxkIGFsc28gc3VwcG9ydCBzZXZlcml0eSBsZXZlbHMgdG8gZW5h
YmxlIGRpZmZlcmVudCBncmFudWxhcml0aWVzCisgICAgICAgICh3aXRoIHRoZSBwb3RlbnRpYWwg
dG8gdmFyeSBkZWZhdWx0IHZlcmJvc2l0eSBieSBzeXN0ZW0gY2FwYWJpbGl0aWVzIGFuZCBidWls
ZCBzdHlsZSkuIEFkZGluZworICAgICAgICBuZXcgbG9nZ2luZyBtYWNybyB0byBzdXBwb3J0IGxl
dmVsICYgbW92aW5nIGNoYW5uZWxzIGluY3JlbWVudGFsbHksIHNpbmNlIHNvbWUgbG9nZ2luZyBt
YXkgYmUKKyAgICAgICAgZXhwZW5zaXZlIGV2ZW4gd2hlbiBkaXNhYmxlZC4KKworICAgICAgICBX
ZWJDb3JlIGNoYW5nZXM6CisgICAgICAgICAgICAtIGxvZ2dpbmcgY2hhbm5lbHMgc2hvdWxkIGJl
IGVuYWJsZWQgaW4gYWxsIGJ1aWxkcy4KKyAgICAgICAgICAgIC0gU3dpdGNoIGFsbCBsb2dnaW5n
IHRvIHRoZSBOZXR3b3JrIGNoYW5uZWwgdG8gdXNlIExPR19XSVRIX0xFVkVMLiBJbml0aWFsbHkg
YWxsIGxvZ2dpbmcKKyAgICAgICAgICAgICAgaXMgYXQgV1RGTG9nTGV2ZWxWZXJib3NlLCB3ZSBz
aG91bGQgbW92ZSBzb21lIHRvIGxvd2VyIGxldmVscyBvbiBhIGNhc2UtYnktY2FzZSBiYXNpcy4K
KworICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViU29ja2V0Ojpjb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tl
dDo6c2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmNsb3NlKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldDo6Y29udGV4dERlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJTb2NrZXQ6OmRpZENvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Ojpk
aWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpZFJlY2Vp
dmVCaW5hcnlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZGlkUmVjZWl2ZU1l
c3NhZ2VFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpZFVwZGF0ZUJ1ZmZl
cmVkQW1vdW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZGlkU3RhcnRDbG9zaW5n
SGFuZHNoYWtlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZGlkQ2xvc2UpOgorICAg
ICAgICAgICAgLSAiTE9HKE5ldHdvcmsuLi4iIC0+ICJMT0dfV0lUSF9MRVZFTChOZXR3b3JrLCBX
VEZMb2dMZXZlbFZlcmJvc2UuLi4iCisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6V2Vi
U29ja2V0Q2hhbm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjp+V2Vi
U29ja2V0Q2hhbm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpjb25u
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnN1YnByb3RvY29sKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmV4dGVuc2lvbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6c2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTb2NrZXRDaGFubmVsOjpidWZmZXJlZEFtb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXRDaGFubmVsOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVs
OjpmYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmRpc2Nvbm5lY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6d2lsbE9wZW5Tb2NrZXRTdHJl
YW0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlkT3BlblNvY2tldFN0
cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpkaWRDbG9zZVNvY2tl
dFN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpkaWRSZWNlaXZl
U29ja2V0U3RyZWFtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpk
aWRGYWlsU29ja2V0U3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6
OmRpZFN0YXJ0TG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpk
aWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpkaWRG
aW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmRpZEZh
aWwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6YXBwZW5kVG9CdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0J1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpzdGFydENsb3NpbmdIYW5kc2hha2Up
OgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6Y2xvc2luZ1RpbWVyRmlyZWQp
OgorICAgICAgICAgICAgLSAiTE9HKE5ldHdvcmsuLi4iIC0+ICJMT0dfV0lUSF9MRVZFTChOZXR3
b3JrLCBXVEZMb2dMZXZlbFZlcmJvc2UuLi4iCisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldERlZmxhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxh
dGVyOjp+V2ViU29ja2V0RGVmbGF0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SW5m
bGF0ZXI6On5XZWJTb2NrZXRJbmZsYXRlcik6CisgICAgICAgICAgICAtICJMT0coTmV0d29yay4u
LiIgLT4gIkxPR19XSVRIX0xFVkVMKE5ldHdvcmssIFdURkxvZ0xldmVsVmVyYm9zZS4uLiIKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZTo6cmVhZFNlcnZlckhhbmRzaGFrZSk6Cisg
ICAgICAgICAgICAtICJMT0coTmV0d29yay4uLiIgLT4gIkxPR19XSVRIX0xFVkVMKE5ldHdvcmss
IFdURkxvZ0xldmVsVmVyYm9zZS4uLiIKKyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZUUERpcmVjdG9yeURvY3VtZW50OjpGVFBEaXJl
Y3RvcnlEb2N1bWVudCk6CisgICAgICAgICAgICAtIFdURkxvZ0NoYW5uZWxPbi9XVEZMb2dDaGFu
bmVsT2ZmIHJlbmFtZWQuCisgICAgICAgICogcGxhdGZvcm0vTG9nZ2luZy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjppc0xvZ0NoYW5uZWxFbmFibGVkKToKKyAgICAgICAgICAgIC0gcmVtb3ZlZCBM
T0dfRElTQUJMRUQgLSBsb2dnaW5nIGNoYW5uZWxzIHNob3VsZCBiZSBlbmFibGVkIGluIGFsbCBi
dWlsZHMuCisgICAgICAgICAgICAtIFdURkxvZ0NoYW5uZWxPbi9XVEZMb2dDaGFubmVsT2ZmIHJl
bmFtZWQuCisgICAgICAgICogcGxhdGZvcm0vTG9nZ2luZy5oOgorICAgICAgICAgICAgLSByZW1v
dmVkIExPR19ESVNBQkxFRCAtIGxvZ2dpbmcgY2hhbm5lbHMgc2hvdWxkIGJlIGVuYWJsZWQgaW4g
YWxsIGJ1aWxkcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9Ob3RJbXBsZW1lbnRlZC5oOgorICAgICAg
ICAgICAgLSBXVEZMb2dWZXJib3NlIC0+IFdURkxvZ1dpdGhMaW5lTnVtYmVyCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5oOgorICAgICAg
ICAgICAgLSBMT0dfVkVSQk9TRSAtPiBMT0dfV0lUSF9MSU5FX05VTUJFUgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9Mb2dnaW5nTWFjLm1tOgorICAgICAgICAgICAgLSByZW1vdmVkIExPR19ESVNB
QkxFRCAtIGxvZ2dpbmcgY2hhbm5lbHMgc2hvdWxkIGJlIGVuYWJsZWQgaW4gYWxsIGJ1aWxkcy4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzZXREZWZlcnNMb2FkaW5nKToKKyAgICAgICAgICAg
IC0gIkxPRyhOZXR3b3JrLi4uIiAtPiAiTE9HX1dJVEhfTEVWRUwoTmV0d29yaywgV1RGTG9nTGV2
ZWxWZXJib3NlLi4uIgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUHJveHlTZXJ2ZXJD
Rk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcm94eUF1dG9Db25maWd1cmF0aW9uUmVzdWx0
Q2FsbGJhY2spOgorICAgICAgICAgICAgLSAiTE9HKE5ldHdvcmsuLi4iIC0+ICJMT0dfV0lUSF9M
RVZFTChOZXR3b3JrLCBXVEZMb2dMZXZlbFZlcmJvc2UuLi4iCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlSW50ZXJuYWw6On5SZXNvdXJjZUhhbmRsZUludGVybmFsKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjp+UmVzb3VyY2VIYW5kbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGU6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlOjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRo
b3V0Q3JlZGVudGlhbCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6cmVjZWl2
ZWRDYW5jZWxsYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2Vp
dmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1bHRIYW5kbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDaGFsbGVuZ2VSZWplY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlbGVhc2VDb25uZWN0aW9uRm9yRG93bmxvYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtTG9hZFJlc291cmNlU3luY2hy
b25vdXNseSk6CisgICAgICAgICAgICAtICJMT0coTmV0d29yay4uLiIgLT4gIkxPR19XSVRIX0xF
VkVMKE5ldHdvcmssIFdURkxvZ0xldmVsVmVyYm9zZS4uLiIKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0
aW9uUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3Bl
cmF0aW9uUXVldWU6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3Bl
cmF0aW9uUXVldWU6OmRpZEZhaWwpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6d2lsbENhY2hlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZUNoYWxsZW5nZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlv
blF1ZXVlOjpkaWRTZW5kQm9keURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6Y2FuUmVzcG9uZFRv
UHJvdGVjdGlvblNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVEYXRhQXJyYXkp
OgorICAgICAgICAgICAgLSAiTE9HKE5ldHdvcmsuLi4iIC0+ICJMT0dfV0lUSF9MRVZFTChOZXR3
b3JrLCBXVEZMb2dMZXZlbFZlcmJvc2UuLi4iCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
Zi9Tb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRT
dHJlYW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpTb2Nr
ZXRTdHJlYW1IYW5kbGU6On5Tb2NrZXRTdHJlYW1IYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6
U29ja2V0U3RyZWFtSGFuZGxlOjpwbGF0Zm9ybUNsb3NlKToKKyAgICAgICAgICAgIC0gIkxPRyhO
ZXR3b3JrLi4uIiAtPiAiTE9HX1dJVEhfTEVWRUwoTmV0d29yaywgV1RGTG9nTGV2ZWxWZXJib3Nl
Li4uIgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvU3luY2hyb25vdXNSZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN5bmNo
cm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6d2lsbFNlbmRSZXF1
ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OlN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlk
RmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpzaG91
bGRVc2VDcmVkZW50aWFsU3RvcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmNhblJlc3BvbmRUb1Byb3RlY3Rp
b25TcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVEYXRhQXJyYXkpOgorICAgICAgICAgICAg
LSAiTE9HKE5ldHdvcmsuLi4iIC0+ICJMT0dfV0lUSF9MRVZFTChOZXR3b3JrLCBXVEZMb2dMZXZl
bFZlcmJvc2UuLi4iCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1t
OgorICAgICAgICAoLVtXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIGNvbm5lY3Rpb246ZGlk
UmVjZWl2ZURhdGFBcnJheTpdKToKKyAgICAgICAgKC1bV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxl
Z2F0ZSBjb25uZWN0aW9uOmRpZFJlY2VpdmVEYXRhOmxlbmd0aFJlY2VpdmVkOl0pOgorICAgICAg
ICAoLVtXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIGNvbm5lY3Rpb25EaWRGaW5pc2hMb2Fk
aW5nOl0pOgorICAgICAgICAoLVtXZWJRdWlja0xvb2tIYW5kbGVBc0RlbGVnYXRlIGNvbm5lY3Rp
b246ZGlkRmFpbFdpdGhFcnJvcjpdKToKKyAgICAgICAgKFdlYkNvcmU6OlF1aWNrTG9va0hhbmRs
ZTo6UXVpY2tMb29rSGFuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlF1aWNrTG9va0hhbmRsZTo6
ZGlkUmVjZWl2ZURhdGFBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpRdWlja0xvb2tIYW5kbGU6
OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UXVpY2tMb29rSGFuZGxlOjpk
aWRGYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OlF1aWNrTG9va0hhbmRsZTo6flF1aWNrTG9va0hh
bmRsZSk6CisgICAgICAgICAgICAtICJMT0coTmV0d29yay4uLiIgLT4gIkxPR19XSVRIX0xFVkVM
KE5ldHdvcmssIFdURkxvZ0xldmVsVmVyYm9zZS4uLiIKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlOjp+UmVzb3VyY2VIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5k
bGU6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpjYW5jZWwpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtTG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRD
cmVkZW50aWFsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpyZWNlaXZlZFJl
cXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlOjpyZWNlaXZlZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFuZGxpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0
aW9uKToKKyAgICAgICAgICAgIC0gIkxPRyhOZXR3b3JrLi4uIiAtPiAiTE9HX1dJVEhfTEVWRUwo
TmV0d29yaywgV1RGTG9nTGV2ZWxWZXJib3NlLi4uIgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUubW06CisgICAgICAgICgtW1dl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvbjp3aWxsU2VuZFJlcXVlc3Q6
cmVkaXJlY3RSZXNwb25zZTpdKToKKyAgICAgICAgKC1bV2ViQ29yZVJlc291cmNlSGFuZGxlQXNE
ZWxlZ2F0ZSBjb25uZWN0aW9uU2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2U6XSk6CisgICAgICAg
ICgtW1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6XSk6CisgICAgICAgICgtW1dlYkNvcmVSZXNvdXJjZUhh
bmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTpdKToKKyAgICAgICAgKC1bV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZSBjb25uZWN0
aW9uOmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2U6XSk6CisgICAgICAgICgt
W1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlUmVz
cG9uc2U6XSk6CisgICAgICAgICgtW1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUgY29u
bmVjdGlvbjpkaWRSZWNlaXZlRGF0YUFycmF5Ol0pOgorICAgICAgICAoLVtXZWJDb3JlUmVzb3Vy
Y2VIYW5kbGVBc0RlbGVnYXRlIGNvbm5lY3Rpb246ZGlkUmVjZWl2ZURhdGE6bGVuZ3RoUmVjZWl2
ZWQ6XSk6CisgICAgICAgICgtW1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUgY29ubmVj
dGlvbjpkaWRTZW5kQm9keURhdGE6dG90YWxCeXRlc1dyaXR0ZW46dG90YWxCeXRlc0V4cGVjdGVk
VG9Xcml0ZTpdKToKKyAgICAgICAgKC1bV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZSBj
b25uZWN0aW9uRGlkRmluaXNoTG9hZGluZzpdKToKKyAgICAgICAgKC1bV2ViQ29yZVJlc291cmNl
SGFuZGxlQXNEZWxlZ2F0ZSBjb25uZWN0aW9uOmRpZEZhaWxXaXRoRXJyb3I6XSk6CisgICAgICAg
ICgtW1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvbjp3aWxsQ2FjaGVS
ZXNwb25zZTpdKToKKyAgICAgICAgICAgIC0gIUxPR19ESVNBQkxFRCAtPiBMT0dfTEVWRUxfRU5B
QkxFRChOZXR3b3JrLCBXVEZMb2dMZXZlbFZlcmJvc2UpCisgICAgICAgICAgICAtICJMT0coTmV0
d29yay4uLiIgLT4gIkxPR19XSVRIX0xFVkVMKE5ldHdvcmssIFdURkxvZ0xldmVsVmVyYm9zZS4u
LiIKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW06CisgICAgICAgICgtW1dlYkNvcmVSZXNvdXJjZUhh
bmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZSBjb25uZWN0aW9uOndpbGxTZW5kUmVxdWVzdDpy
ZWRpcmVjdFJlc3BvbnNlOl0pOgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09w
ZXJhdGlvblF1ZXVlRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2U6XSk6CisgICAgICAgICgtW1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9u
UXVldWVEZWxlZ2F0ZSBjb25uZWN0aW9uOmRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Ol0pOgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVs
ZWdhdGUgY29ubmVjdGlvbjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlOl0p
OgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdh
dGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlUmVzcG9uc2U6XSk6CisgICAgICAgICgtW1dlYkNvcmVS
ZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZSBjb25uZWN0aW9uOmRpZFJlY2Vp
dmVEYXRhQXJyYXk6XSk6CisgICAgICAgICgtW1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0
aW9uUXVldWVEZWxlZ2F0ZSBjb25uZWN0aW9uOmRpZFJlY2VpdmVEYXRhOmxlbmd0aFJlY2VpdmVk
Ol0pOgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVs
ZWdhdGUgY29ubmVjdGlvbjpkaWRTZW5kQm9keURhdGE6dG90YWxCeXRlc1dyaXR0ZW46dG90YWxC
eXRlc0V4cGVjdGVkVG9Xcml0ZTpdKToKKyAgICAgICAgKC1bV2ViQ29yZVJlc291cmNlSGFuZGxl
QXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlIGNvbm5lY3Rpb25EaWRGaW5pc2hMb2FkaW5nOl0pOgor
ICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUg
Y29ubmVjdGlvbjpkaWRGYWlsV2l0aEVycm9yOl0pOgorICAgICAgICAoLVtXZWJDb3JlUmVzb3Vy
Y2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUgY29ubmVjdGlvbjp3aWxsQ2FjaGVSZXNw
b25zZTpdKToKKyAgICAgICAgICAgIC0gIUxPR19ESVNBQkxFRCAtPiBMT0dfTEVWRUxfRU5BQkxF
RChOZXR3b3JrLCBXVEZMb2dMZXZlbFZlcmJvc2UpCisgICAgICAgICAgICAtICJMT0coTmV0d29y
ay4uLiIgLT4gIkxPR19XSVRIX0xFVkVMKE5ldHdvcmssIFdURkxvZ0xldmVsVmVyYm9zZS4uLiIK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNvbXBvc2l0aW5nTG9nRW5hYmxlZCk6CisgICAgICAgICAgICAtIFdURkxvZ0No
YW5uZWxPbi9XVEZMb2dDaGFubmVsT2ZmIHJlbmFtZWQuCisKIDIwMTUtMDQtMTggIEpvbiBMZWUg
IDxqb25sZWVAYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNdIFRpbWUgZWxhcHNlZCBzaG91bGQg
YmUgcmlnaHQtYWxpZ25lZApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldC5jcHAJKHJldmlzaW9uIDE4Mjg3NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDgs
NyArMjA4LDcgQEAgdm9pZCBXZWJTb2NrZXQ6OmNvbm5lY3QoY29uc3QgU3RyaW5nJiB1cgogCiB2
b2lkIFdlYlNvY2tldDo6Y29ubmVjdChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHByb3RvY29scywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgTE9HKE5ldHdvcmss
ICJXZWJTb2NrZXQgJXAgY29ubmVjdCgpIHVybD0nJXMnIiwgdGhpcywgdXJsLnV0ZjgoKS5kYXRh
KCkpOworICAgIExPR19XSVRIX0xFVkVMKE5ldHdvcmssIFdURkxvZ0xldmVsVmVyYm9zZSwgIldl
YlNvY2tldCAlcCBjb25uZWN0KCkgdXJsPSclcyciLCB0aGlzLCB1cmwudXRmOCgpLmRhdGEoKSk7
CiAgICAgbV91cmwgPSBVUkwoVVJMKCksIHVybCk7CiAKICAgICBpZiAoIW1fdXJsLmlzVmFsaWQo
KSkgewpAQCAtMjg4LDcgKzI4OCw3IEBAIHZvaWQgV2ViU29ja2V0Ojpjb25uZWN0KGNvbnN0IFN0
cmluZyYgdXIKIAogdm9pZCBXZWJTb2NrZXQ6OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBzZW5k
KCkgU2VuZGluZyBTdHJpbmcgJyVzJyIsIHRoaXMsIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7Cisg
ICAgTE9HX1dJVEhfTEVWRUwoTmV0d29yaywgV1RGTG9nTGV2ZWxWZXJib3NlLCAiV2ViU29ja2V0
ICVwIHNlbmQoKSBTZW5kaW5nIFN0cmluZyAnJXMnIiwgdGhpcywgbWVzc2FnZS51dGY4KCkuZGF0
YSgpKTsKICAgICBpZiAobV9zdGF0ZSA9PSBDT05ORUNUSU5HKSB7CiAgICAgICAgIGVjID0gSU5W
QUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybjsKQEAgLTMxMSw3ICszMTEsNyBAQCB2b2lk
IFdlYlNvY2tldDo6c2VuZChjb25zdCBTdHJpbmcmIG1lc3NhCiAKIHZvaWQgV2ViU29ja2V0Ojpz
ZW5kKEFycmF5QnVmZmVyKiBiaW5hcnlEYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBM
T0coTmV0d29yaywgIldlYlNvY2tldCAlcCBzZW5kKCkgU2VuZGluZyBBcnJheUJ1ZmZlciAlcCIs
IHRoaXMsIGJpbmFyeURhdGEpOworICAgIExPR19XSVRIX0xFVkVMKE5ldHdvcmssIFdURkxvZ0xl
dmVsVmVyYm9zZSwgIldlYlNvY2tldCAlcCBzZW5kKCkgU2VuZGluZyBBcnJheUJ1ZmZlciAlcCIs
IHRoaXMsIGJpbmFyeURhdGEpOwogICAgIEFTU0VSVChiaW5hcnlEYXRhKTsKICAgICBpZiAobV9z
dGF0ZSA9PSBDT05ORUNUSU5HKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CkBA
IC0zMjksNyArMzI5LDcgQEAgdm9pZCBXZWJTb2NrZXQ6OnNlbmQoQXJyYXlCdWZmZXIqIGJpbmFy
eQogCiB2b2lkIFdlYlNvY2tldDo6c2VuZChBcnJheUJ1ZmZlclZpZXcqIGFycmF5QnVmZmVyVmll
dywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAg
c2VuZCgpIFNlbmRpbmcgQXJyYXlCdWZmZXJWaWV3ICVwIiwgdGhpcywgYXJyYXlCdWZmZXJWaWV3
KTsKKyAgICBMT0dfV0lUSF9MRVZFTChOZXR3b3JrLCBXVEZMb2dMZXZlbFZlcmJvc2UsICJXZWJT
b2NrZXQgJXAgc2VuZCgpIFNlbmRpbmcgQXJyYXlCdWZmZXJWaWV3ICVwIiwgdGhpcywgYXJyYXlC
dWZmZXJWaWV3KTsKICAgICBBU1NFUlQoYXJyYXlCdWZmZXJWaWV3KTsKICAgICBpZiAobV9zdGF0
ZSA9PSBDT05ORUNUSU5HKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CkBAIC0z
NDgsNyArMzQ4LDcgQEAgdm9pZCBXZWJTb2NrZXQ6OnNlbmQoQXJyYXlCdWZmZXJWaWV3KiBhcgog
CiB2b2lkIFdlYlNvY2tldDo6c2VuZChCbG9iKiBiaW5hcnlEYXRhLCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBzZW5kKCkgU2VuZGluZyBCbG9i
ICclcyciLCB0aGlzLCBiaW5hcnlEYXRhLT51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9M
ZW5ndGgoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBMT0dfV0lUSF9MRVZFTChOZXR3b3JrLCBXVEZM
b2dMZXZlbFZlcmJvc2UsICJXZWJTb2NrZXQgJXAgc2VuZCgpIFNlbmRpbmcgQmxvYiAnJXMnIiwg
dGhpcywgYmluYXJ5RGF0YS0+dXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCku
dXRmOCgpLmRhdGEoKSk7CiAgICAgaWYgKG1fc3RhdGUgPT0gQ09OTkVDVElORykgewogICAgICAg
ICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm47CkBAIC0zNjYsOSArMzY2
LDkgQEAgdm9pZCBXZWJTb2NrZXQ6OnNlbmQoQmxvYiogYmluYXJ5RGF0YSwgRQogdm9pZCBXZWJT
b2NrZXQ6OmNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbiwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7CiAgICAgaWYgKGNvZGUgPT0gV2ViU29ja2V0Q2hhbm5lbDo6Q2xvc2VFdmVudENv
ZGVOb3RTcGVjaWZpZWQpCi0gICAgICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGNsb3Nl
KCkgd2l0aG91dCBjb2RlIGFuZCByZWFzb24iLCB0aGlzKTsKKyAgICAgICAgTE9HX1dJVEhfTEVW
RUwoTmV0d29yaywgV1RGTG9nTGV2ZWxWZXJib3NlLCAiV2ViU29ja2V0ICVwIGNsb3NlKCkgd2l0
aG91dCBjb2RlIGFuZCByZWFzb24iLCB0aGlzKTsKICAgICBlbHNlIHsKLSAgICAgICAgTE9HKE5l
dHdvcmssICJXZWJTb2NrZXQgJXAgY2xvc2UoKSBjb2RlPSVkIHJlYXNvbj0nJXMnIiwgdGhpcywg
Y29kZSwgcmVhc29uLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBMT0dfV0lUSF9MRVZFTChOZXR3
b3JrLCBXVEZMb2dMZXZlbFZlcmJvc2UsICJXZWJTb2NrZXQgJXAgY2xvc2UoKSBjb2RlPSVkIHJl
YXNvbj0nJXMnIiwgdGhpcywgY29kZSwgcmVhc29uLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBp
ZiAoIShjb2RlID09IFdlYlNvY2tldENoYW5uZWw6OkNsb3NlRXZlbnRDb2RlTm9ybWFsQ2xvc3Vy
ZSB8fCAoV2ViU29ja2V0Q2hhbm5lbDo6Q2xvc2VFdmVudENvZGVNaW5pbXVtVXNlckRlZmluZWQg
PD0gY29kZSAmJiBjb2RlIDw9IFdlYlNvY2tldENoYW5uZWw6OkNsb3NlRXZlbnRDb2RlTWF4aW11
bVVzZXJEZWZpbmVkKSkpIHsKICAgICAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDU1LDcgKzQ1NSw3IEBAIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIFdlYlNvY2tldDo6c2NyaXAKIAogdm9pZCBXZWJTb2NrZXQ6OmNvbnRleHREZXN0cm95
ZWQoKQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGNvbnRleHREZXN0cm95ZWQo
KSIsIHRoaXMpOworICAgIExPR19XSVRIX0xFVkVMKE5ldHdvcmssIFdURkxvZ0xldmVsVmVyYm9z
ZSwgIldlYlNvY2tldCAlcCBjb250ZXh0RGVzdHJveWVkKCkiLCB0aGlzKTsKICAgICBBU1NFUlQo
IW1fY2hhbm5lbCk7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gQ0xPU0VEKTsKICAgICBBY3RpdmVE
T01PYmplY3Q6OmNvbnRleHREZXN0cm95ZWQoKTsKQEAgLTUxNyw3ICs1MTcsNyBAQCBjb25zdCBj
aGFyKiBXZWJTb2NrZXQ6OmFjdGl2ZURPTU9iamVjdE5hCiAKIHZvaWQgV2ViU29ja2V0OjpkaWRD
b25uZWN0KCkKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBkaWRDb25uZWN0KCki
LCB0aGlzKTsKKyAgICBMT0dfV0lUSF9MRVZFTChOZXR3b3JrLCBXVEZMb2dMZXZlbFZlcmJvc2Us
ICJXZWJTb2NrZXQgJXAgZGlkQ29ubmVjdCgpIiwgdGhpcyk7CiAgICAgaWYgKG1fc3RhdGUgIT0g
Q09OTkVDVElORykgewogICAgICAgICBkaWRDbG9zZSgwLCBDbG9zaW5nSGFuZHNoYWtlSW5jb21w
bGV0ZSwgV2ViU29ja2V0Q2hhbm5lbDo6Q2xvc2VFdmVudENvZGVBYm5vcm1hbENsb3N1cmUsICIi
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtNTMxLDcgKzUzMSw3IEBAIHZvaWQgV2ViU29ja2V0Ojpk
aWRDb25uZWN0KCkKIAogdm9pZCBXZWJTb2NrZXQ6OmRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0
cmluZyYgbXNnKQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGRpZFJlY2VpdmVN
ZXNzYWdlKCkgVGV4dCBtZXNzYWdlICclcyciLCB0aGlzLCBtc2cudXRmOCgpLmRhdGEoKSk7Cisg
ICAgTE9HX1dJVEhfTEVWRUwoTmV0d29yaywgV1RGTG9nTGV2ZWxWZXJib3NlLCAiV2ViU29ja2V0
ICVwIGRpZFJlY2VpdmVNZXNzYWdlKCkgVGV4dCBtZXNzYWdlICclcyciLCB0aGlzLCBtc2cudXRm
OCgpLmRhdGEoKSk7CiAgICAgaWYgKG1fc3RhdGUgIT0gT1BFTikKICAgICAgICAgcmV0dXJuOwog
ICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwpAQCAtNTQwLDcgKzU0MCw3IEBA
IHZvaWQgV2ViU29ja2V0OjpkaWRSZWNlaXZlTWVzc2FnZShjb25zdCAKIAogdm9pZCBXZWJTb2Nr
ZXQ6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKFBhc3NPd25QdHI8VmVjdG9yPGNoYXI+PiBiaW5hcnlE
YXRhKQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGRpZFJlY2VpdmVCaW5hcnlE
YXRhKCkgJWx1IGJ5dGUgYmluYXJ5IG1lc3NhZ2UiLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBsb25nPihiaW5hcnlEYXRhLT5zaXplKCkpKTsKKyAgICBMT0dfV0lUSF9MRVZFTChOZXR3b3Jr
LCBXVEZMb2dMZXZlbFZlcmJvc2UsICJXZWJTb2NrZXQgJXAgZGlkUmVjZWl2ZUJpbmFyeURhdGEo
KSAlbHUgYnl0ZSBiaW5hcnkgbWVzc2FnZSIsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxv
bmc+KGJpbmFyeURhdGEtPnNpemUoKSkpOwogICAgIHN3aXRjaCAobV9iaW5hcnlUeXBlKSB7CiAg
ICAgY2FzZSBCaW5hcnlUeXBlQmxvYjogewogICAgICAgICAvLyBGSVhNRTogV2UganVzdCByZWNl
aXZlZCB0aGUgZGF0YSBmcm9tIE5ldHdvcmtQcm9jZXNzLCBhbmQgYXJlIHNlbmRpbmcgaXQgYmFj
ay4gVGhpcyBpcyBpbmVmZmljaWVudC4KQEAgLTU1Nyw3ICs1NTcsNyBAQCB2b2lkIFdlYlNvY2tl
dDo6ZGlkUmVjZWl2ZUJpbmFyeURhdGEoUGFzCiAKIHZvaWQgV2ViU29ja2V0OjpkaWRSZWNlaXZl
TWVzc2FnZUVycm9yKCkKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBkaWRSZWNl
aXZlRXJyb3JNZXNzYWdlKCkiLCB0aGlzKTsKKyAgICBMT0dfV0lUSF9MRVZFTChOZXR3b3JrLCBX
VEZMb2dMZXZlbFZlcmJvc2UsICJXZWJTb2NrZXQgJXAgZGlkUmVjZWl2ZUVycm9yTWVzc2FnZSgp
IiwgdGhpcyk7CiAgICAgbV9zdGF0ZSA9IENMT1NFRDsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKTsKICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLmVycm9yRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwpAQCAtNTY1LDcgKzU2NSw3IEBAIHZvaWQg
V2ViU29ja2V0OjpkaWRSZWNlaXZlTWVzc2FnZUVycm9yKCkKIAogdm9pZCBXZWJTb2NrZXQ6OmRp
ZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQpCiB7Ci0g
ICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQoKSBO
ZXcgYnVmZmVyZWRBbW91bnQgaXMgJWx1IiwgdGhpcywgYnVmZmVyZWRBbW91bnQpOworICAgIExP
R19XSVRIX0xFVkVMKE5ldHdvcmssIFdURkxvZ0xldmVsVmVyYm9zZSwgIldlYlNvY2tldCAlcCBk
aWRVcGRhdGVCdWZmZXJlZEFtb3VudCgpIE5ldyBidWZmZXJlZEFtb3VudCBpcyAlbHUiLCB0aGlz
LCBidWZmZXJlZEFtb3VudCk7CiAgICAgaWYgKG1fc3RhdGUgPT0gQ0xPU0VEKQogICAgICAgICBy
ZXR1cm47CiAgICAgbV9idWZmZXJlZEFtb3VudCA9IGJ1ZmZlcmVkQW1vdW50OwpAQCAtNTczLDEz
ICs1NzMsMTMgQEAgdm9pZCBXZWJTb2NrZXQ6OmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KAogCiB2
b2lkIFdlYlNvY2tldDo6ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKCkKIHsKLSAgICBMT0coTmV0
d29yaywgIldlYlNvY2tldCAlcCBkaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKSIsIHRoaXMpOwor
ICAgIExPR19XSVRIX0xFVkVMKE5ldHdvcmssIFdURkxvZ0xldmVsVmVyYm9zZSwgIldlYlNvY2tl
dCAlcCBkaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKSIsIHRoaXMpOwogICAgIG1fc3RhdGUgPSBD
TE9TSU5HOwogfQogCiB2b2lkIFdlYlNvY2tldDo6ZGlkQ2xvc2UodW5zaWduZWQgbG9uZyB1bmhh
bmRsZWRCdWZmZXJlZEFtb3VudCwgQ2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0dXMgY2xv
c2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIHVuc2lnbmVkIHNob3J0IGNvZGUsIGNvbnN0IFN0cmlu
ZyYgcmVhc29uKQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGRpZENsb3NlKCki
LCB0aGlzKTsKKyAgICBMT0dfV0lUSF9MRVZFTChOZXR3b3JrLCBXVEZMb2dMZXZlbFZlcmJvc2Us
ICJXZWJTb2NrZXQgJXAgZGlkQ2xvc2UoKSIsIHRoaXMpOwogICAgIGlmICghbV9jaGFubmVsKQog
ICAgICAgICByZXR1cm47CiAgICAgYm9vbCB3YXNDbGVhbiA9IG1fc3RhdGUgPT0gQ0xPU0lORyAm
JiAhdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQgJiYgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24g
PT0gQ2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRlICYmIGNvZGUgIT0gV2ViU29ja2V0Q2hhbm5lbDo6
Q2xvc2VFdmVudENvZGVBYm5vcm1hbENsb3N1cmU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCShyZXZpc2lv
biAxODI4NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
Q2hhbm5lbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDE3ICs4NCwxNyBAQCBXZWJTb2NrZXRD
aGFubmVsOjpXZWJTb2NrZXRDaGFubmVsKERvY3VtCiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2Rv
Y3VtZW50LT5wYWdlKCkpCiAgICAgICAgIG1faWRlbnRpZmllciA9IHBhZ2UtPnByb2dyZXNzKCku
Y3JlYXRlVW5pcXVlSWRlbnRpZmllcigpOwogCi0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRD
aGFubmVsICVwIGN0b3IsIGlkZW50aWZpZXIgJWx1IiwgdGhpcywgbV9pZGVudGlmaWVyKTsKKyAg
ICBMT0dfV0lUSF9MRVZFTChOZXR3b3JrLCBXVEZMb2dMZXZlbFZlcmJvc2UsICJXZWJTb2NrZXRD
aGFubmVsICVwIGN0b3IsIGlkZW50aWZpZXIgJWx1IiwgdGhpcywgbV9pZGVudGlmaWVyKTsKIH0K
IAogV2ViU29ja2V0Q2hhbm5lbDo6fldlYlNvY2tldENoYW5uZWwoKQogewotICAgIExPRyhOZXR3
b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBkdG9yIiwgdGhpcyk7CisgICAgTE9HX1dJVEhfTEVW
RUwoTmV0d29yaywgV1RGTG9nTGV2ZWxWZXJib3NlLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBkdG9y
IiwgdGhpcyk7CiB9CiAKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6Y29ubmVjdChjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNv
Y2tldENoYW5uZWwgJXAgY29ubmVjdCgpIiwgdGhpcyk7CisgICAgTE9HX1dJVEhfTEVWRUwoTmV0
d29yaywgV1RGTG9nTGV2ZWxWZXJib3NlLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBjb25uZWN0KCki
LCB0aGlzKTsKICAgICBBU1NFUlQoIW1faGFuZGxlKTsKICAgICBBU1NFUlQoIW1fc3VzcGVuZGVk
KTsKICAgICBtX2hhbmRzaGFrZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViU29ja2V0SGFuZHNoYWtl
Pih1cmwsIHByb3RvY29sLCBtX2RvY3VtZW50KTsKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFdl
YlNvY2tldENoYW5uZWw6OmNvbm5lY3QoY29uc3QgVVJMCiAKIFN0cmluZyBXZWJTb2NrZXRDaGFu
bmVsOjpzdWJwcm90b2NvbCgpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVs
ICVwIHN1YnByb3RvY29sKCkiLCB0aGlzKTsKKyAgICBMT0dfV0lUSF9MRVZFTChOZXR3b3JrLCBX
VEZMb2dMZXZlbFZlcmJvc2UsICJXZWJTb2NrZXRDaGFubmVsICVwIHN1YnByb3RvY29sKCkiLCB0
aGlzKTsKICAgICBpZiAoIW1faGFuZHNoYWtlIHx8IG1faGFuZHNoYWtlLT5tb2RlKCkgIT0gV2Vi
U29ja2V0SGFuZHNoYWtlOjpDb25uZWN0ZWQpCiAgICAgICAgIHJldHVybiAiIjsKICAgICBTdHJp
bmcgc2VydmVyUHJvdG9jb2wgPSBtX2hhbmRzaGFrZS0+c2VydmVyV2ViU29ja2V0UHJvdG9jb2wo
KTsKQEAgLTEyMCw3ICsxMjAsNyBAQCBTdHJpbmcgV2ViU29ja2V0Q2hhbm5lbDo6c3VicHJvdG9j
b2woKQogCiBTdHJpbmcgV2ViU29ja2V0Q2hhbm5lbDo6ZXh0ZW5zaW9ucygpCiB7Ci0gICAgTE9H
KE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGV4dGVuc2lvbnMoKSIsIHRoaXMpOworICAg
IExPR19XSVRIX0xFVkVMKE5ldHdvcmssIFdURkxvZ0xldmVsVmVyYm9zZSwgIldlYlNvY2tldENo
YW5uZWwgJXAgZXh0ZW5zaW9ucygpIiwgdGhpcyk7CiAgICAgaWYgKCFtX2hhbmRzaGFrZSB8fCBt
X2hhbmRzaGFrZS0+bW9kZSgpICE9IFdlYlNvY2tldEhhbmRzaGFrZTo6Q29ubmVjdGVkKQogICAg
ICAgICByZXR1cm4gIiI7CiAgICAgU3RyaW5nIGV4dGVuc2lvbnMgPSBtX2hhbmRzaGFrZS0+YWNj
ZXB0ZWRFeHRlbnNpb25zKCk7CkBAIC0xMzEsNyArMTMxLDcgQEAgU3RyaW5nIFdlYlNvY2tldENo
YW5uZWw6OmV4dGVuc2lvbnMoKQogCiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJl
c3VsdCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAg
ICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgc2VuZCgpIFNlbmRpbmcgU3RyaW5n
ICclcyciLCB0aGlzLCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOworICAgIExPR19XSVRIX0xFVkVM
KE5ldHdvcmssIFdURkxvZ0xldmVsVmVyYm9zZSwgIldlYlNvY2tldENoYW5uZWwgJXAgc2VuZCgp
IFNlbmRpbmcgU3RyaW5nICclcyciLCB0aGlzLCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOwogICAg
IENTdHJpbmcgdXRmOCA9IG1lc3NhZ2UudXRmOChTdHJpY3RDb252ZXJzaW9uUmVwbGFjaW5nVW5w
YWlyZWRTdXJyb2dhdGVzV2l0aEZGRkQpOwogICAgIGVucXVldWVUZXh0RnJhbWUodXRmOCk7CiAg
ICAgcHJvY2Vzc091dGdvaW5nRnJhbWVRdWV1ZSgpOwpAQCAtMTQ2LDcgKzE0Niw3IEBAIFRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFcKIAogVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OlNlbmRSZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBBcnJheUJ1
ZmZlciYgYmluYXJ5RGF0YSwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0
aCkKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgc2VuZCgpIFNlbmRp
bmcgQXJyYXlCdWZmZXIgJXAgYnl0ZU9mZnNldD0ldSBieXRlTGVuZ3RoPSV1IiwgdGhpcywgJmJp
bmFyeURhdGEsIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpOworICAgIExPR19XSVRIX0xFVkVMKE5l
dHdvcmssIFdURkxvZ0xldmVsVmVyYm9zZSwgIldlYlNvY2tldENoYW5uZWwgJXAgc2VuZCgpIFNl
bmRpbmcgQXJyYXlCdWZmZXIgJXAgYnl0ZU9mZnNldD0ldSBieXRlTGVuZ3RoPSV1IiwgdGhpcywg
JmJpbmFyeURhdGEsIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpOwogICAgIGVucXVldWVSYXdGcmFt
ZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlQmluYXJ5LCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4o
YmluYXJ5RGF0YS5kYXRhKCkpICsgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCk7CiAgICAgcHJvY2Vz
c091dGdvaW5nRnJhbWVRdWV1ZSgpOwogICAgIHJldHVybiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6U2VuZFN1Y2Nlc3M7CkBAIC0xNTQsNyArMTU0LDcgQEAgVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OlNlbmRSZXN1bHQgVwogCiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2Vu
ZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKEJsb2ImIGJpbmFyeURhdGEpCiB7Ci0gICAg
TE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIHNlbmQoKSBTZW5kaW5nIEJsb2IgJyVz
JyIsIHRoaXMsIGJpbmFyeURhdGEudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
TE9HX1dJVEhfTEVWRUwoTmV0d29yaywgV1RGTG9nTGV2ZWxWZXJib3NlLCAiV2ViU29ja2V0Q2hh
bm5lbCAlcCBzZW5kKCkgU2VuZGluZyBCbG9iICclcyciLCB0aGlzLCBiaW5hcnlEYXRhLnVybCgp
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIGVucXVldWVCbG9iRnJhbWUoV2ViU29ja2V0
RnJhbWU6Ok9wQ29kZUJpbmFyeSwgYmluYXJ5RGF0YSk7CiAgICAgcHJvY2Vzc091dGdvaW5nRnJh
bWVRdWV1ZSgpOwogICAgIHJldHVybiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFN1
Y2Nlc3M7CkBAIC0xNjIsNyArMTYyLDcgQEAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNl
bmRSZXN1bHQgVwogCiBib29sIFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgY2hhciogZGF0
YSwgaW50IGxlbmd0aCkKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAg
c2VuZCgpIFNlbmRpbmcgY2hhciogZGF0YT0lcCBsZW5ndGg9JWQiLCB0aGlzLCBkYXRhLCBsZW5n
dGgpOworICAgIExPR19XSVRIX0xFVkVMKE5ldHdvcmssIFdURkxvZ0xldmVsVmVyYm9zZSwgIldl
YlNvY2tldENoYW5uZWwgJXAgc2VuZCgpIFNlbmRpbmcgY2hhciogZGF0YT0lcCBsZW5ndGg9JWQi
LCB0aGlzLCBkYXRhLCBsZW5ndGgpOwogICAgIGVucXVldWVSYXdGcmFtZShXZWJTb2NrZXRGcmFt
ZTo6T3BDb2RlQmluYXJ5LCBkYXRhLCBsZW5ndGgpOwogICAgIHByb2Nlc3NPdXRnb2luZ0ZyYW1l
UXVldWUoKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE3MCw3ICsxNzAsNyBAQCBib29sIFdlYlNv
Y2tldENoYW5uZWw6OnNlbmQoY29uc3QgY2hhciogCiAKIHVuc2lnbmVkIGxvbmcgV2ViU29ja2V0
Q2hhbm5lbDo6YnVmZmVyZWRBbW91bnQoKSBjb25zdAogewotICAgIExPRyhOZXR3b3JrLCAiV2Vi
U29ja2V0Q2hhbm5lbCAlcCBidWZmZXJlZEFtb3VudCgpIiwgdGhpcyk7CisgICAgTE9HX1dJVEhf
TEVWRUwoTmV0d29yaywgV1RGTG9nTGV2ZWxWZXJib3NlLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBi
dWZmZXJlZEFtb3VudCgpIiwgdGhpcyk7CiAgICAgQVNTRVJUKG1faGFuZGxlKTsKICAgICBBU1NF
UlQoIW1fc3VzcGVuZGVkKTsKICAgICByZXR1cm4gbV9oYW5kbGUtPmJ1ZmZlcmVkQW1vdW50KCk7
CkBAIC0xNzgsNyArMTc4LDcgQEAgdW5zaWduZWQgbG9uZyBXZWJTb2NrZXRDaGFubmVsOjpidWZm
ZXJlZAogCiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJp
bmcmIHJlYXNvbikKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgY2xv
c2UoKSBjb2RlPSVkIHJlYXNvbj0nJXMnIiwgdGhpcywgY29kZSwgcmVhc29uLnV0ZjgoKS5kYXRh
KCkpOworICAgIExPR19XSVRIX0xFVkVMKE5ldHdvcmssIFdURkxvZ0xldmVsVmVyYm9zZSwgIldl
YlNvY2tldENoYW5uZWwgJXAgY2xvc2UoKSBjb2RlPSVkIHJlYXNvbj0nJXMnIiwgdGhpcywgY29k
ZSwgcmVhc29uLnV0ZjgoKS5kYXRhKCkpOwogICAgIEFTU0VSVCghbV9zdXNwZW5kZWQpOwogICAg
IGlmICghbV9oYW5kbGUpCiAgICAgICAgIHJldHVybjsKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lk
IFdlYlNvY2tldENoYW5uZWw6OmNsb3NlKGludCBjb2RlLCBjCiAKIHZvaWQgV2ViU29ja2V0Q2hh
bm5lbDo6ZmFpbChjb25zdCBTdHJpbmcmIHJlYXNvbikKIHsKLSAgICBMT0coTmV0d29yaywgIldl
YlNvY2tldENoYW5uZWwgJXAgZmFpbCgpIHJlYXNvbj0nJXMnIiwgdGhpcywgcmVhc29uLnV0Zjgo
KS5kYXRhKCkpOworICAgIExPR19XSVRIX0xFVkVMKE5ldHdvcmssIFdURkxvZ0xldmVsVmVyYm9z
ZSwgIldlYlNvY2tldENoYW5uZWwgJXAgZmFpbCgpIHJlYXNvbj0nJXMnIiwgdGhpcywgcmVhc29u
LnV0ZjgoKS5kYXRhKCkpOwogICAgIEFTU0VSVCghbV9zdXNwZW5kZWQpOwogICAgIGlmIChtX2Rv
Y3VtZW50KSB7CiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVdl
YlNvY2tldEZyYW1lRXJyb3IobV9kb2N1bWVudCwgbV9pZGVudGlmaWVyLCByZWFzb24pOwpAQCAt
MjE2LDcgKzIxNiw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZmFpbChjb25zdCBTdHJpbmcK
IAogdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaXNjb25uZWN0KCkKIHsKLSAgICBMT0coTmV0d29y
aywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlzY29ubmVjdCgpIiwgdGhpcyk7CisgICAgTE9HX1dJ
VEhfTEVWRUwoTmV0d29yaywgV1RGTG9nTGV2ZWxWZXJib3NlLCAiV2ViU29ja2V0Q2hhbm5lbCAl
cCBkaXNjb25uZWN0KCkiLCB0aGlzKTsKICAgICBpZiAobV9pZGVudGlmaWVyICYmIG1fZG9jdW1l
bnQpCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2xvc2VXZWJTb2NrZXQo
bV9kb2N1bWVudCwgbV9pZGVudGlmaWVyKTsKICAgICBpZiAobV9oYW5kc2hha2UpCkBAIC0yNDEs
MTIgKzI0MSwxMiBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OnJlc3VtZSgpCiAKIHZvaWQgV2Vi
U29ja2V0Q2hhbm5lbDo6d2lsbE9wZW5Tb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlKikK
IHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgd2lsbE9wZW5Tb2NrZXRT
dHJlYW0oKSIsIHRoaXMpOworICAgIExPR19XSVRIX0xFVkVMKE5ldHdvcmssIFdURkxvZ0xldmVs
VmVyYm9zZSwgIldlYlNvY2tldENoYW5uZWwgJXAgd2lsbE9wZW5Tb2NrZXRTdHJlYW0oKSIsIHRo
aXMpOwogfQogCiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZE9wZW5Tb2NrZXRTdHJlYW0oU29j
a2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRD
aGFubmVsICVwIGRpZE9wZW5Tb2NrZXRTdHJlYW0oKSIsIHRoaXMpOworICAgIExPR19XSVRIX0xF
VkVMKE5ldHdvcmssIFdURkxvZ0xldmVsVmVyYm9zZSwgIldlYlNvY2tldENoYW5uZWwgJXAgZGlk
T3BlblNvY2tldFN0cmVhbSgpIiwgdGhpcyk7CiAgICAgQVNTRVJUKGhhbmRsZSA9PSBtX2hhbmRs
ZSk7CiAgICAgaWYgKCFtX2RvY3VtZW50KQogICAgICAgICByZXR1cm47CkBAIC0yNTksNyArMjU5
LDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRPcGVuU29ja2V0U3RyZQogCiB2b2lkIFdl
YlNvY2tldENoYW5uZWw6OmRpZENsb3NlU29ja2V0U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZSog
aGFuZGxlKQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBkaWRDbG9z
ZVNvY2tldFN0cmVhbSgpIiwgdGhpcyk7CisgICAgTE9HX1dJVEhfTEVWRUwoTmV0d29yaywgV1RG
TG9nTGV2ZWxWZXJib3NlLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBkaWRDbG9zZVNvY2tldFN0cmVh
bSgpIiwgdGhpcyk7CiAgICAgaWYgKG1faWRlbnRpZmllciAmJiBtX2RvY3VtZW50KQogICAgICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENsb3NlV2ViU29ja2V0KG1fZG9jdW1lbnQs
IG1faWRlbnRpZmllcik7CiAgICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hh
bmRsZSB8fCAhbV9oYW5kbGUpOwpAQCAtMjg0LDcgKzI4NCw3IEBAIHZvaWQgV2ViU29ja2V0Q2hh
bm5lbDo6ZGlkQ2xvc2VTb2NrZXRTdHIKIAogdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRSZWNl
aXZlU29ja2V0U3RyZWFtRGF0YShTb2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSwgY29uc3QgY2hh
ciogZGF0YSwgaW50IGxlbikKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwg
JXAgZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoKSBSZWNlaXZlZCAlZCBieXRlcyIsIHRoaXMs
IGxlbik7CisgICAgTE9HX1dJVEhfTEVWRUwoTmV0d29yaywgV1RGTG9nTGV2ZWxWZXJib3NlLCAi
V2ViU29ja2V0Q2hhbm5lbCAlcCBkaWRSZWNlaXZlU29ja2V0U3RyZWFtRGF0YSgpIFJlY2VpdmVk
ICVkIGJ5dGVzIiwgdGhpcywgbGVuKTsKICAgICBSZWY8V2ViU29ja2V0Q2hhbm5lbD4gcHJvdGVj
dCgqdGhpcyk7IC8vIFRoZSBjbGllbnQgY2FuIGNsb3NlIHRoZSBjaGFubmVsLCBwb3RlbnRpYWxs
eSByZW1vdmluZyB0aGUgbGFzdCByZWZlcmVuY2UuCiAgICAgQVNTRVJUKGhhbmRsZSA9PSBtX2hh
bmRsZSk7CiAgICAgaWYgKCFtX2RvY3VtZW50KSB7CkBAIC0zMTksNyArMzE5LDcgQEAgdm9pZCBX
ZWJTb2NrZXRDaGFubmVsOjpkaWRVcGRhdGVCdWZmZXJlZAogCiB2b2lkIFdlYlNvY2tldENoYW5u
ZWw6OmRpZEZhaWxTb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUsIGNvbnN0
IFNvY2tldFN0cmVhbUVycm9yJiBlcnJvcikKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tl
dENoYW5uZWwgJXAgZGlkRmFpbFNvY2tldFN0cmVhbSgpIiwgdGhpcyk7CisgICAgTE9HX1dJVEhf
TEVWRUwoTmV0d29yaywgV1RGTG9nTGV2ZWxWZXJib3NlLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBk
aWRGYWlsU29ja2V0U3RyZWFtKCkiLCB0aGlzKTsKICAgICBBU1NFUlQoaGFuZGxlID09IG1faGFu
ZGxlIHx8ICFtX2hhbmRsZSk7CiAgICAgaWYgKG1fZG9jdW1lbnQpIHsKICAgICAgICAgU3RyaW5n
IG1lc3NhZ2U7CkBAIC0zNDYsMjEgKzM0NiwyMSBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRp
ZENhbmNlbEF1dGhlbnRpCiAKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkU3RhcnRMb2FkaW5n
KCkKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlkU3RhcnRMb2Fk
aW5nKCkiLCB0aGlzKTsKKyAgICBMT0dfV0lUSF9MRVZFTChOZXR3b3JrLCBXVEZMb2dMZXZlbFZl
cmJvc2UsICJXZWJTb2NrZXRDaGFubmVsICVwIGRpZFN0YXJ0TG9hZGluZygpIiwgdGhpcyk7CiAg
ICAgQVNTRVJUKG1fYmxvYkxvYWRlcik7CiAgICAgQVNTRVJUKG1fYmxvYkxvYWRlclN0YXR1cyA9
PSBCbG9iTG9hZGVyU3RhcnRlZCk7CiB9CiAKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVj
ZWl2ZURhdGEoKQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBkaWRS
ZWNlaXZlRGF0YSgpIiwgdGhpcyk7CisgICAgTE9HX1dJVEhfTEVWRUwoTmV0d29yaywgV1RGTG9n
TGV2ZWxWZXJib3NlLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBkaWRSZWNlaXZlRGF0YSgpIiwgdGhp
cyk7CiAgICAgQVNTRVJUKG1fYmxvYkxvYWRlcik7CiAgICAgQVNTRVJUKG1fYmxvYkxvYWRlclN0
YXR1cyA9PSBCbG9iTG9hZGVyU3RhcnRlZCk7CiB9CiAKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6
ZGlkRmluaXNoTG9hZGluZygpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVs
ICVwIGRpZEZpbmlzaExvYWRpbmcoKSIsIHRoaXMpOworICAgIExPR19XSVRIX0xFVkVMKE5ldHdv
cmssIFdURkxvZ0xldmVsVmVyYm9zZSwgIldlYlNvY2tldENoYW5uZWwgJXAgZGlkRmluaXNoTG9h
ZGluZygpIiwgdGhpcyk7CiAgICAgQVNTRVJUKG1fYmxvYkxvYWRlcik7CiAgICAgQVNTRVJUKG1f
YmxvYkxvYWRlclN0YXR1cyA9PSBCbG9iTG9hZGVyU3RhcnRlZCk7CiAgICAgbV9ibG9iTG9hZGVy
U3RhdHVzID0gQmxvYkxvYWRlckZpbmlzaGVkOwpAQCAtMzcwLDcgKzM3MCw3IEBAIHZvaWQgV2Vi
U29ja2V0Q2hhbm5lbDo6ZGlkRmluaXNoTG9hZGluZygKIAogdm9pZCBXZWJTb2NrZXRDaGFubmVs
OjpkaWRGYWlsKGludCBlcnJvckNvZGUpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRD
aGFubmVsICVwIGRpZEZhaWwoKSBlcnJvckNvZGU9JWQiLCB0aGlzLCBlcnJvckNvZGUpOworICAg
IExPR19XSVRIX0xFVkVMKE5ldHdvcmssIFdURkxvZ0xldmVsVmVyYm9zZSwgIldlYlNvY2tldENo
YW5uZWwgJXAgZGlkRmFpbCgpIGVycm9yQ29kZT0lZCIsIHRoaXMsIGVycm9yQ29kZSk7CiAgICAg
QVNTRVJUKG1fYmxvYkxvYWRlcik7CiAgICAgQVNTRVJUKG1fYmxvYkxvYWRlclN0YXR1cyA9PSBC
bG9iTG9hZGVyU3RhcnRlZCk7CiAgICAgbV9ibG9iTG9hZGVyID0gbnVsbHB0cjsKQEAgLTM4Myw3
ICszODMsNyBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OmFwcGVuZFRvQnVmZmVyKGNvCiB7CiAg
ICAgc2l6ZV90IG5ld0J1ZmZlclNpemUgPSBtX2J1ZmZlci5zaXplKCkgKyBsZW47CiAgICAgaWYg
KG5ld0J1ZmZlclNpemUgPCBtX2J1ZmZlci5zaXplKCkpIHsKLSAgICAgICAgTE9HKE5ldHdvcmss
ICJXZWJTb2NrZXRDaGFubmVsICVwIGFwcGVuZFRvQnVmZmVyKCkgQnVmZmVyIG92ZXJmbG93ICgl
bHUgYnl0ZXMgYWxyZWFkeSBpbiByZWNlaXZlIGJ1ZmZlciBhbmQgYXBwZW5kaW5nICVsdSBieXRl
cykiLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihtX2J1ZmZlci5zaXplKCkpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihsZW4pKTsKKyAgICAgICAgTE9HX1dJVEhfTEVWRUwo
TmV0d29yaywgV1RGTG9nTGV2ZWxWZXJib3NlLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBhcHBlbmRU
b0J1ZmZlcigpIEJ1ZmZlciBvdmVyZmxvdyAoJWx1IGJ5dGVzIGFscmVhZHkgaW4gcmVjZWl2ZSBi
dWZmZXIgYW5kIGFwcGVuZGluZyAlbHUgYnl0ZXMpIiwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgbG9uZz4obV9idWZmZXIuc2l6ZSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4obGVu
KSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgbV9idWZmZXIuYXBwZW5kKGRh
dGEsIGxlbik7CkBAIC00MDIsNyArNDAyLDcgQEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpwcm9j
ZXNzQnVmZmVyKCkKICAgICBBU1NFUlQoIW1fc3VzcGVuZGVkKTsKICAgICBBU1NFUlQobV9jbGll
bnQpOwogICAgIEFTU0VSVCghbV9idWZmZXIuaXNFbXB0eSgpKTsKLSAgICBMT0coTmV0d29yaywg
IldlYlNvY2tldENoYW5uZWwgJXAgcHJvY2Vzc0J1ZmZlcigpIFJlY2VpdmUgYnVmZmVyIGhhcyAl
bHUgYnl0ZXMiLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihtX2J1ZmZlci5zaXpl
KCkpKTsKKyAgICBMT0dfV0lUSF9MRVZFTChOZXR3b3JrLCBXVEZMb2dMZXZlbFZlcmJvc2UsICJX
ZWJTb2NrZXRDaGFubmVsICVwIHByb2Nlc3NCdWZmZXIoKSBSZWNlaXZlIGJ1ZmZlciBoYXMgJWx1
IGJ5dGVzIiwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4obV9idWZmZXIuc2l6ZSgp
KSk7CiAKICAgICBpZiAobV9zaG91bGREaXNjYXJkUmVjZWl2ZWREYXRhKQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC00MjgsMTQgKzQyOCwxNCBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnBy
b2Nlc3NCdWZmZXIoKQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIC8vIEZJWE1FOiBoYW5kbGUgc2V0LWNvb2tpZTIuCi0gICAgICAgICAgICBMT0coTmV0d29y
aywgIldlYlNvY2tldENoYW5uZWwgJXAgQ29ubmVjdGVkIiwgdGhpcyk7CisgICAgICAgICAgICBM
T0dfV0lUSF9MRVZFTChOZXR3b3JrLCBXVEZMb2dMZXZlbFZlcmJvc2UsICJXZWJTb2NrZXRDaGFu
bmVsICVwIENvbm5lY3RlZCIsIHRoaXMpOwogICAgICAgICAgICAgc2tpcEJ1ZmZlcihoZWFkZXJM
ZW5ndGgpOwogICAgICAgICAgICAgbV9jbGllbnQtPmRpZENvbm5lY3QoKTsKLSAgICAgICAgICAg
IExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCAlbHUgYnl0ZXMgcmVtYWluaW5nIGlu
IG1fYnVmZmVyIiwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4obV9idWZmZXIuc2l6
ZSgpKSk7CisgICAgICAgICAgICBMT0dfV0lUSF9MRVZFTChOZXR3b3JrLCBXVEZMb2dMZXZlbFZl
cmJvc2UsICJXZWJTb2NrZXRDaGFubmVsICVwICVsdSBieXRlcyByZW1haW5pbmcgaW4gbV9idWZm
ZXIiLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihtX2J1ZmZlci5zaXplKCkpKTsK
ICAgICAgICAgICAgIHJldHVybiAhbV9idWZmZXIuaXNFbXB0eSgpOwogICAgICAgICB9CiAgICAg
ICAgIEFTU0VSVChtX2hhbmRzaGFrZS0+bW9kZSgpID09IFdlYlNvY2tldEhhbmRzaGFrZTo6RmFp
bGVkKTsKLSAgICAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIENvbm5lY3Rp
b24gZmFpbGVkIiwgdGhpcyk7CisgICAgICAgIExPR19XSVRIX0xFVkVMKE5ldHdvcmssIFdURkxv
Z0xldmVsVmVyYm9zZSwgIldlYlNvY2tldENoYW5uZWwgJXAgQ29ubmVjdGlvbiBmYWlsZWQiLCB0
aGlzKTsKICAgICAgICAgc2tpcEJ1ZmZlcihoZWFkZXJMZW5ndGgpOwogICAgICAgICBtX3Nob3Vs
ZERpc2NhcmRSZWNlaXZlZERhdGEgPSB0cnVlOwogICAgICAgICBmYWlsKG1faGFuZHNoYWtlLT5m
YWlsdXJlUmVhc29uKCkpOwpAQCAtNDU5LDcgKzQ1OSw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5l
bDo6cmVzdW1lVGltZXJGaXJlZCgKIAogdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpzdGFydENsb3Np
bmdIYW5kc2hha2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKQogewotICAgIExPRyhO
ZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBzdGFydENsb3NpbmdIYW5kc2hha2UoKSBjb2Rl
PSVkIG1fcmVjZWl2ZWRDbG9zaW5nSGFuZHNoYWtlPSVkIiwgdGhpcywgbV9jbG9zaW5nLCBtX3Jl
Y2VpdmVkQ2xvc2luZ0hhbmRzaGFrZSk7CisgICAgTE9HX1dJVEhfTEVWRUwoTmV0d29yaywgV1RG
TG9nTGV2ZWxWZXJib3NlLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBzdGFydENsb3NpbmdIYW5kc2hh
a2UoKSBjb2RlPSVkIG1fcmVjZWl2ZWRDbG9zaW5nSGFuZHNoYWtlPSVkIiwgdGhpcywgbV9jbG9z
aW5nLCBtX3JlY2VpdmVkQ2xvc2luZ0hhbmRzaGFrZSk7CiAgICAgQVNTRVJUKCFtX2Nsb3NlZCk7
CiAgICAgaWYgKG1fY2xvc2luZykKICAgICAgICAgcmV0dXJuOwpAQCAtNDg5LDcgKzQ4OSw3IEBA
IHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6c3RhcnRDbG9zaW5nSGFuZHMKIAogdm9pZCBXZWJTb2Nr
ZXRDaGFubmVsOjpjbG9zaW5nVGltZXJGaXJlZCgpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJT
b2NrZXRDaGFubmVsICVwIGNsb3NpbmdUaW1lckZpcmVkKCkiLCB0aGlzKTsKKyAgICBMT0dfV0lU
SF9MRVZFTChOZXR3b3JrLCBXVEZMb2dMZXZlbFZlcmJvc2UsICJXZWJTb2NrZXRDaGFubmVsICVw
IGNsb3NpbmdUaW1lckZpcmVkKCkiLCB0aGlzKTsKICAgICBpZiAobV9oYW5kbGUpCiAgICAgICAg
IG1faGFuZGxlLT5kaXNjb25uZWN0KCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAJKHJldmlzaW9u
IDE4Mjg3NCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRE
ZWZsYXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgV2ViU29ja2V0RGVm
bGF0ZXI6On5XZWJTb2NrZXREZWZsYXRlcigpCiB7CiAgICAgaW50IHJlc3VsdCA9IGRlZmxhdGVF
bmQobV9zdHJlYW0uZ2V0KCkpOwogICAgIGlmIChyZXN1bHQgIT0gWl9PSykKLSAgICAgICAgTE9H
KE5ldHdvcmssICJXZWJTb2NrZXREZWZsYXRlciAlcCBEZXN0cnVjdG9yIGRlZmxhdGVFbmQoKSBm
YWlsZWQ6ICVkIGlzIHJldHVybmVkIiwgdGhpcywgcmVzdWx0KTsKKyAgICAgICAgTE9HX1dJVEhf
TEVWRUwoTmV0d29yaywgV1RGTG9nTGV2ZWxWZXJib3NlLCAiV2ViU29ja2V0RGVmbGF0ZXIgJXAg
RGVzdHJ1Y3RvciBkZWZsYXRlRW5kKCkgZmFpbGVkOiAlZCBpcyByZXR1cm5lZCIsIHRoaXMsIHJl
c3VsdCk7CiB9CiAKIHN0YXRpYyB2b2lkIHNldFN0cmVhbVBhcmFtZXRlcih6X3N0cmVhbSogc3Ry
ZWFtLCBjb25zdCBjaGFyKiBpbnB1dERhdGEsIHNpemVfdCBpbnB1dExlbmd0aCwgY2hhciogb3V0
cHV0RGF0YSwgc2l6ZV90IG91dHB1dExlbmd0aCkKQEAgLTEzOCw3ICsxMzgsNyBAQCBXZWJTb2Nr
ZXRJbmZsYXRlcjo6fldlYlNvY2tldEluZmxhdGVyKCkKIHsKICAgICBpbnQgcmVzdWx0ID0gaW5m
bGF0ZUVuZChtX3N0cmVhbS5nZXQoKSk7CiAgICAgaWYgKHJlc3VsdCAhPSBaX09LKQotICAgICAg
ICBMT0coTmV0d29yaywgIldlYlNvY2tldEluZmxhdGVyICVwIERlc3RydWN0b3IgaW5mbGF0ZUVu
ZCgpIGZhaWxlZDogJWQgaXMgcmV0dXJuZWQiLCB0aGlzLCByZXN1bHQpOworICAgICAgICBMT0df
V0lUSF9MRVZFTChOZXR3b3JrLCBXVEZMb2dMZXZlbFZlcmJvc2UsICJXZWJTb2NrZXRJbmZsYXRl
ciAlcCBEZXN0cnVjdG9yIGluZmxhdGVFbmQoKSBmYWlsZWQ6ICVkIGlzIHJldHVybmVkIiwgdGhp
cywgcmVzdWx0KTsKIH0KIAogYm9vbCBXZWJTb2NrZXRJbmZsYXRlcjo6YWRkQnl0ZXMoY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCShyZXZpc2lv
biAxODI4NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
SGFuZHNoYWtlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkzLDcgKzI5Myw3IEBAIGludCBXZWJT
b2NrZXRIYW5kc2hha2U6OnJlYWRTZXJ2ZXJIYW5kc2gKICAgICAgICAgbV9tb2RlID0gRmFpbGVk
OyAvLyBtX2ZhaWx1cmVSZWFzb24gaXMgc2V0IGluc2lkZSByZWFkU3RhdHVzTGluZSgpLgogICAg
ICAgICByZXR1cm4gbGVuOwogICAgIH0KLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldEhhbmRz
aGFrZSAlcCByZWFkU2VydmVySGFuZHNoYWtlKCkgU3RhdHVzIGNvZGUgaXMgJWQiLCB0aGlzLCBz
dGF0dXNDb2RlKTsKKyAgICBMT0dfV0lUSF9MRVZFTChOZXR3b3JrLCBXVEZMb2dMZXZlbFZlcmJv
c2UsICJXZWJTb2NrZXRIYW5kc2hha2UgJXAgcmVhZFNlcnZlckhhbmRzaGFrZSgpIFN0YXR1cyBj
b2RlIGlzICVkIiwgdGhpcywgc3RhdHVzQ29kZSk7CiAKICAgICBtX3NlcnZlckhhbmRzaGFrZVJl
c3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZSgpOwogICAgIG1fc2VydmVySGFuZHNoYWtlUmVzcG9u
c2Uuc2V0SFRUUFN0YXR1c0NvZGUoc3RhdHVzQ29kZSk7CkBAIC0zMTIsMTIgKzMxMiwxMiBAQCBp
bnQgV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU2VydmVySGFuZHNoCiAgICAgfQogICAgIGNvbnN0
IGNoYXIqIHAgPSByZWFkSFRUUEhlYWRlcnMoaGVhZGVyICsgbGluZUxlbmd0aCwgaGVhZGVyICsg
bGVuKTsKICAgICBpZiAoIXApIHsKLSAgICAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRIYW5k
c2hha2UgJXAgcmVhZFNlcnZlckhhbmRzaGFrZSgpIHJlYWRIVFRQSGVhZGVycygpIGZhaWxlZCIs
IHRoaXMpOworICAgICAgICBMT0dfV0lUSF9MRVZFTChOZXR3b3JrLCBXVEZMb2dMZXZlbFZlcmJv
c2UsICJXZWJTb2NrZXRIYW5kc2hha2UgJXAgcmVhZFNlcnZlckhhbmRzaGFrZSgpIHJlYWRIVFRQ
SGVhZGVycygpIGZhaWxlZCIsIHRoaXMpOwogICAgICAgICBtX21vZGUgPSBGYWlsZWQ7IC8vIG1f
ZmFpbHVyZVJlYXNvbiBpcyBzZXQgaW5zaWRlIHJlYWRIVFRQSGVhZGVycygpLgogICAgICAgICBy
ZXR1cm4gbGVuOwogICAgIH0KICAgICBpZiAoIWNoZWNrUmVzcG9uc2VIZWFkZXJzKCkpIHsKLSAg
ICAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRIYW5kc2hha2UgJXAgcmVhZFNlcnZlckhhbmRz
aGFrZSgpIGNoZWNrUmVzcG9uc2VIZWFkZXJzKCkgZmFpbGVkIiwgdGhpcyk7CisgICAgICAgIExP
R19XSVRIX0xFVkVMKE5ldHdvcmssIFdURkxvZ0xldmVsVmVyYm9zZSwgIldlYlNvY2tldEhhbmRz
aGFrZSAlcCByZWFkU2VydmVySGFuZHNoYWtlKCkgY2hlY2tSZXNwb25zZUhlYWRlcnMoKSBmYWls
ZWQiLCB0aGlzKTsKICAgICAgICAgbV9tb2RlID0gRmFpbGVkOwogICAgICAgICByZXR1cm4gcCAt
IGhlYWRlcjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURv
Y3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9y
eURvY3VtZW50LmNwcAkocmV2aXNpb24gMTgyODc0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9G
VFBEaXJlY3RvcnlEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyMSw3ICs0MjEsNyBA
QCBGVFBEaXJlY3RvcnlEb2N1bWVudDo6RlRQRGlyZWN0b3J5RG9jdW1lCiAgICAgOiBIVE1MRG9j
dW1lbnQoZnJhbWUsIHVybCkKIHsKICNpZiAhTE9HX0RJU0FCTEVECi0gICAgTG9nRlRQLnN0YXRl
ID0gV1RGTG9nQ2hhbm5lbE9uOworICAgIExvZ0ZUUC5zdGF0ZSA9IFdURkxvZ0xldmVsVmVyYm9z
ZTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmNwcAkocmV2
aXNpb24gMTgyODc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDEyICszMCwxMCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmICFMT0dfRElTQUJM
RUQKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjZGVmaW5lIERFRklORV9MT0dfQ0hBTk5FTChu
YW1lKSBcCi0gICAgV1RGTG9nQ2hhbm5lbCBKT0lOX0xPR19DSEFOTkVMX1dJVEhfUFJFRklYKExP
R19DSEFOTkVMX1BSRUZJWCwgbmFtZSkgPSB7IFdURkxvZ0NoYW5uZWxPZmYsICNuYW1lIH07Cisg
ICAgV1RGTG9nQ2hhbm5lbCBKT0lOX0xPR19DSEFOTkVMX1dJVEhfUFJFRklYKExPR19DSEFOTkVM
X1BSRUZJWCwgbmFtZSkgPSB7IFdURkxvZ0xldmVsT2ZmLCAjbmFtZSB9OwogV0VCQ09SRV9MT0df
Q0hBTk5FTFMoREVGSU5FX0xPR19DSEFOTkVMKQogCiAjZGVmaW5lIExPR19DSEFOTkVMX0FERFJF
U1MobmFtZSkgICZKT0lOX0xPR19DSEFOTkVMX1dJVEhfUFJFRklYKExPR19DSEFOTkVMX1BSRUZJ
WCwgbmFtZSksCkBAIC01MCw3ICs0OCw3IEBAIGJvb2wgaXNMb2dDaGFubmVsRW5hYmxlZChjb25z
dCBTdHJpbmcmIG4KICAgICBXVEZMb2dDaGFubmVsKiBjaGFubmVsID0gV1RGTG9nQ2hhbm5lbEJ5
TmFtZShsb2dDaGFubmVscywgbG9nQ2hhbm5lbENvdW50LCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwog
ICAgIGlmICghY2hhbm5lbCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBjaGFu
bmVsLT5zdGF0ZSAhPSBXVEZMb2dDaGFubmVsT2ZmOworICAgIHJldHVybiBjaGFubmVsLT5zdGF0
ZSAhPSBXVEZMb2dMZXZlbE9mZjsKIH0KIAogdm9pZCBpbml0aWFsaXplTG9nZ2luZ0NoYW5uZWxz
SWZOZWNlc3NhcnkoKQpAQCAtNjQsNSArNjIsMyBAQCB2b2lkIGluaXRpYWxpemVMb2dnaW5nQ2hh
bm5lbHNJZk5lY2Vzc2FyCiB9CiAKIH0KLQotI2VuZGlmIC8vICFMT0dfRElTQUJMRUQKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgJKHJldmlzaW9uIDE4Mjg3NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMjksOCArMjksNiBA
QAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
IAotI2lmICFMT0dfRElTQUJMRUQKLQogI2lmbmRlZiBMT0dfQ0hBTk5FTF9QUkVGSVgKICNkZWZp
bmUgTE9HX0NIQU5ORUxfUFJFRklYIExvZwogI2VuZGlmCkBAIC04OSw2ICs4Nyw0IEBAIFdFQkNP
UkVfTE9HX0NIQU5ORUxTKERFQ0xBUkVfTE9HX0NIQU5ORUwKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGluaXRpYWxpemVMb2dnaW5nQ2hhbm5lbHNJZk5lY2Vzc2FyeSgpOwogfQogCi0jZW5kaWYg
Ly8gIUxPR19ESVNBQkxFRAotCiAjZW5kaWYgLy8gTG9nZ2luZ19oCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Ob3RJbXBsZW1lbnRlZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL05vdEltcGxlbWVudGVkLmgJKHJldmlzaW9uIDE4Mjg3NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL05vdEltcGxlbWVudGVkLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1
LDcgKzQ1LDcgQEAgV0VCQ09SRV9FWFBPUlQgV1RGTG9nQ2hhbm5lbCogbm90SW1wbGVtZQogI2Rl
ZmluZSBub3RJbXBsZW1lbnRlZCgpIGRvIHsgXAogICAgICAgICBzdGF0aWMgYm9vbCBoYXZlUHJp
bnRlZCA9IGZhbHNlOyBcCiAgICAgICAgIGlmICghaGF2ZVByaW50ZWQgJiYgIXN1cHJlc3NOb3RJ
bXBsZW1lbnRlZFdhcm5pbmcoKSkgeyBcCi0gICAgICAgICAgICBXVEZMb2dWZXJib3NlKF9fRklM
RV9fLCBfX0xJTkVfXywgV1RGX1BSRVRUWV9GVU5DVElPTiwgV2ViQ29yZTo6bm90SW1wbGVtZW50
ZWRMb2dnaW5nQ2hhbm5lbCgpLCAiVU5JTVBMRU1FTlRFRDogIik7IFwKKyAgICAgICAgICAgIFdU
RkxvZ1dpdGhMaW5lTnVtYmVyKF9fRklMRV9fLCBfX0xJTkVfXywgV1RGX1BSRVRUWV9GVU5DVElP
TiwgV2ViQ29yZTo6bm90SW1wbGVtZW50ZWRMb2dnaW5nQ2hhbm5lbCgpLCAiVU5JTVBMRU1FTlRF
RDogIik7IFwKICAgICAgICAgICAgIGhhdmVQcmludGVkID0gdHJ1ZTsgXAogICAgICAgICB9IFwK
ICAgICB9IHdoaWxlICgwKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuaAkocmV2
aXNpb24gMTgyODc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dTdHJlYW1lclV0aWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxOSArMjMsMTkg
QEAKIAogI2RlZmluZSBMT0dfTUVESUFfTUVTU0FHRSguLi4pIGRvIHsgXAogICAgIEdTVF9ERUJV
RyhfX1ZBX0FSR1NfXyk7IFwKLSAgICBMT0dfVkVSQk9TRShNZWRpYSwgX19WQV9BUkdTX18pOyB9
IHdoaWxlICgwKQorICAgIExPR19XSVRIX0xJTkVfTlVNQkVSKE1lZGlhLCBfX1ZBX0FSR1NfXyk7
IH0gd2hpbGUgKDApCiAKICNkZWZpbmUgRVJST1JfTUVESUFfTUVTU0FHRSguLi4pIGRvIHsgXAog
ICAgIEdTVF9FUlJPUihfX1ZBX0FSR1NfXyk7IFwKLSAgICBMT0dfVkVSQk9TRShNZWRpYSwgX19W
QV9BUkdTX18pOyB9IHdoaWxlICgwKQorICAgIExPR19XSVRIX0xJTkVfTlVNQkVSKE1lZGlhLCBf
X1ZBX0FSR1NfXyk7IH0gd2hpbGUgKDApCiAKICNkZWZpbmUgSU5GT19NRURJQV9NRVNTQUdFKC4u
LikgZG8geyBcCiAgICAgR1NUX0lORk8oX19WQV9BUkdTX18pOyBcCi0gICAgTE9HX1ZFUkJPU0Uo
TWVkaWEsIF9fVkFfQVJHU19fKTsgfSB3aGlsZSAoMCkKKyAgICBMT0dfV0lUSF9MSU5FX05VTUJF
UihNZWRpYSwgX19WQV9BUkdTX18pOyB9IHdoaWxlICgwKQogCiAjZGVmaW5lIFdBUk5fTUVESUFf
TUVTU0FHRSguLi4pIGRvIHsgXAogICAgIEdTVF9XQVJOSU5HKF9fVkFfQVJHU19fKTsgXAotICAg
IExPR19WRVJCT1NFKE1lZGlhLCBfX1ZBX0FSR1NfXyk7IH0gd2hpbGUgKDApCisgICAgTE9HX1dJ
VEhfTElORV9OVU1CRVIoTWVkaWEsIF9fVkFfQVJHU19fKTsgfSB3aGlsZSAoMCkKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9nZ2lu
Z01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9nZ2lu
Z01hYy5tbQkocmV2aXNpb24gMTgyODc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0xvZ2dpbmdNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDggKzI4LDYgQEAKIAogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgIUxPR19ESVNBQkxFRAotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGRlZmF1bHRzRG9tYWluID0g
QCJXZWJDb3JlTG9nZ2luZyI7CkBAIC00MCw1ICszOCwzIEBAIFN0cmluZyBsb2dMZXZlbFN0cmlu
ZygpCiB9CiAKIH0KLQotI2VuZGlmIC8vICFMT0dfRElTQUJMRUQKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCShyZXZpc2lv
biAxODI4NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgUmVzb3VyY2VI
YW5kbGU6OmZvcmNlQ29udGVudFNuaWZmaW4KIAogdm9pZCBSZXNvdXJjZUhhbmRsZTo6c2V0RGVm
ZXJzTG9hZGluZyhib29sIGRlZmVycykKIHsKLSAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCBz
ZXREZWZlcnNMb2FkaW5nKCVzKSIsIHRoaXMsIGRlZmVycyA/ICJ0cnVlIiA6ICJmYWxzZSIpOwor
ICAgIExPR19XSVRIX0xFVkVMKE5ldHdvcmssIFdURkxvZ0xldmVsVmVyYm9zZSwgIkhhbmRsZSAl
cCBzZXREZWZlcnNMb2FkaW5nKCVzKSIsIHRoaXMsIGRlZmVycyA/ICJ0cnVlIiA6ICJmYWxzZSIp
OwogCiAgICAgQVNTRVJUKGQtPm1fZGVmZXJzTG9hZGluZyAhPSBkZWZlcnMpOyAvLyBEZWZlcnJp
bmcgaXMgbm90IGNvdW50ZWQsIHNvIGNhbGxpbmcgc2V0RGVmZXJzTG9hZGluZygpIHJlcGVhdGVk
bHkgaXMgbGlrZWx5IHRvIGJlIGluIGVycm9yLgogICAgIGQtPm1fZGVmZXJzTG9hZGluZyA9IGRl
ZmVyczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJveHlTZXJ2
ZXJDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcAkocmV2aXNpb24gMTgyODc0KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgdm9pZCBwcm94eUF1dG9Db25maWd1cmF0aW9u
UmVzdWx0CiAgICAgICAgIEFTU0VSVChlcnJvcik7CiAgICAgICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gZXJyb3JEZXNjcmlwdGlvbkNGID0gYWRvcHRDRihDRkVycm9yQ29weURlc2NyaXB0aW9u
KGVycm9yKSk7CiAgICAgICAgIFN0cmluZyBlcnJvckRlc2NyaXB0aW9uKGVycm9yRGVzY3JpcHRp
b25DRi5nZXQoKSk7Ci0gICAgICAgIExPRyhOZXR3b3JrLCAiRmFpbGVkIHRvIHByb2Nlc3MgcHJv
eHkgYXV0by1jb25maWd1cmF0aW9uIGZpbGUgd2l0aCBlcnJvcjogJXMiLCBlcnJvckRlc2NyaXB0
aW9uLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBMT0dfV0lUSF9MRVZFTChOZXR3b3JrLCBXVEZM
b2dMZXZlbFZlcmJvc2UsICJGYWlsZWQgdG8gcHJvY2VzcyBwcm94eSBhdXRvLWNvbmZpZ3VyYXRp
b24gZmlsZSB3aXRoIGVycm9yOiAlcyIsIGVycm9yRGVzY3JpcHRpb24udXRmOCgpLmRhdGEoKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAkocmV2
aXNpb24gMTgyODc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUhhbmRsZUNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDE0ICsxMDYsMTQgQEAg
UmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6flJlc291cmNlSGFuZGxlSQogICAgICAgICBtX2Nvbm5l
Y3Rpb25EZWxlZ2F0ZS0+cmVsZWFzZUhhbmRsZSgpOwogCiAgICAgaWYgKG1fY29ubmVjdGlvbikg
ewotICAgICAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gQ2FuY2VsbGluZyBjb25uZWN0aW9uICVw
ICglcykiLCBtX2Nvbm5lY3Rpb24uZ2V0KCksIG1fZmlyc3RSZXF1ZXN0LnVybCgpLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBMT0dfV0lUSF9MRVZFTChOZXR3b3JrLCBXVEZMb2dM
ZXZlbFZlcmJvc2UsICJDRk5ldCAtIENhbmNlbGxpbmcgY29ubmVjdGlvbiAlcCAoJXMpIiwgbV9j
b25uZWN0aW9uLmdldCgpLCBtX2ZpcnN0UmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uQ2FuY2VsKG1fY29ubmVjdGlvbi5nZXQoKSk7
CiAgICAgfQogfQogCiBSZXNvdXJjZUhhbmRsZTo6flJlc291cmNlSGFuZGxlKCkKIHsKLSAgICBM
T0coTmV0d29yaywgIkNGTmV0IC0gRGVzdHJveWluZyBqb2IgJXAgKCVzKSIsIHRoaXMsIGQtPm1f
Zmlyc3RSZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIExPR19XSVRI
X0xFVkVMKE5ldHdvcmssIFdURkxvZ0xldmVsVmVyYm9zZSwgIkNGTmV0IC0gRGVzdHJveWluZyBq
b2IgJXAgKCVzKSIsIHRoaXMsIGQtPm1fZmlyc3RSZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwogfQogCiB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5lY3Rp
b24oYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSwgYm9vbCBzaG91bGRDb250ZW50U25p
ZmYsIFNjaGVkdWxpbmdCZWhhdmlvciBzY2hlZHVsaW5nQmVoYXZpb3IsIENGRGljdGlvbmFyeVJl
ZiBjbGllbnRQcm9wZXJ0aWVzKQpAQCAtMjU0LDcgKzI1NCw3IEBAIGJvb2wgUmVzb3VyY2VIYW5k
bGU6OnN0YXJ0KCkKICAgICBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+c2V0dXBDb25uZWN0aW9u
U2NoZWR1bGluZyhkLT5tX2Nvbm5lY3Rpb24uZ2V0KCkpOwogICAgIENGVVJMQ29ubmVjdGlvblN0
YXJ0KGQtPm1fY29ubmVjdGlvbi5nZXQoKSk7CiAKLSAgICBMT0coTmV0d29yaywgIkNGTmV0IC0g
U3RhcnRpbmcgVVJMICVzIChoYW5kbGU9JXAsIGNvbm49JXApIiwgZmlyc3RSZXF1ZXN0KCkudXJs
KCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgdGhpcywgZC0+bV9jb25uZWN0aW9uLmdldCgpKTsK
KyAgICBMT0dfV0lUSF9MRVZFTChOZXR3b3JrLCBXVEZMb2dMZXZlbFZlcmJvc2UsICJDRk5ldCAt
IFN0YXJ0aW5nIFVSTCAlcyAoaGFuZGxlPSVwLCBjb25uPSVwKSIsIGZpcnN0UmVxdWVzdCgpLnVy
bCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHRoaXMsIGQtPm1fY29ubmVjdGlvbi5nZXQoKSk7
CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0zMTAsNyArMzEwLDcgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlcwogCiBib29sIFJlc291cmNlSGFuZGxlOjpz
aG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJDRk5ldCAt
IHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKCkiKTsKKyAgICBMT0dfV0lUSF9MRVZFTChOZXR3
b3JrLCBXVEZMb2dMZXZlbFZlcmJvc2UsICJDRk5ldCAtIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9y
YWdlKCkiKTsKICAgICBpZiAoUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCA9IHRoaXMtPmNs
aWVudCgpKSB7CiAgICAgICAgIEFTU0VSVCghY2xpZW50LT51c2VzQXN5bmNDYWxsYmFja3MoKSk7
CiAgICAgICAgIHJldHVybiBjbGllbnQtPnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKHRoaXMp
OwpAQCAtMzIwLDcgKzMyMCw3IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnNob3VsZFVzZUNyZWRl
bnRpYWwKIAogdm9pZCBSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCiB7Ci0gICAg
TE9HKE5ldHdvcmssICJDRk5ldCAtIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgp
Iik7CisgICAgTE9HX1dJVEhfTEVWRUwoTmV0d29yaywgV1RGTG9nTGV2ZWxWZXJib3NlLCAiQ0ZO
ZXQgLSBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSIpOwogICAgIEFTU0VSVChk
LT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2UuaXNOdWxsKCkpOwogICAgIC8vIFNpbmNlIENGVVJMQ29u
bmVjdGlvbiBuZXR3b3JraW5nIHJlbGllcyBvbiBrZWVwaW5nIGEgcmVmZXJlbmNlIHRvIHRoZSBv
cmlnaW5hbCBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYsCiAgICAgLy8gd2UgbWFrZSBzdXJlIHRoYXQg
aXMgYWN0dWFsbHkgcHJlc2VudApAQCAtNDA1LDcgKzQwNSw3IEBAIGJvb2wgUmVzb3VyY2VIYW5k
bGU6OmNhbkF1dGhlbnRpY2F0ZUFnYWkKIAogdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRD
cmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsIGNvbnN0
IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIHJl
Y2VpdmVkQ3JlZGVudGlhbCgpIik7CisgICAgTE9HX1dJVEhfTEVWRUwoTmV0d29yaywgV1RGTG9n
TGV2ZWxWZXJib3NlLCAiQ0ZOZXQgLSByZWNlaXZlZENyZWRlbnRpYWwoKSIpOwogICAgIEFTU0VS
VCghY2hhbGxlbmdlLmlzTnVsbCgpKTsKICAgICBBU1NFUlQoY2hhbGxlbmdlLmNmVVJMQXV0aENo
YWxsZW5nZVJlZigpKTsKICAgICBpZiAoY2hhbGxlbmdlICE9IGQtPm1fY3VycmVudFdlYkNoYWxs
ZW5nZSkKQEAgLTQ0OSw3ICs0NDksNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENy
ZWRlbnRpYWwoCiAKIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkUmVxdWVzdFRvQ29udGlu
dWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxl
bmdlKQogewotICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSByZWNlaXZlZFJlcXVlc3RUb0NvbnRp
bnVlV2l0aG91dENyZWRlbnRpYWwoKSIpOworICAgIExPR19XSVRIX0xFVkVMKE5ldHdvcmssIFdU
RkxvZ0xldmVsVmVyYm9zZSwgIkNGTmV0IC0gcmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhv
dXRDcmVkZW50aWFsKCkiKTsKICAgICBBU1NFUlQoIWNoYWxsZW5nZS5pc051bGwoKSk7CiAgICAg
QVNTRVJUKGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7CiAgICAgaWYgKGNoYWxs
ZW5nZSAhPSBkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2UpCkBAIC00NjMsNyArNDYzLDcgQEAgdm9p
ZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9DbwogCiB2b2lkIFJlc291cmNlSGFu
ZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYg
Y2hhbGxlbmdlKQogewotICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSByZWNlaXZlZENhbmNlbGxh
dGlvbigpIik7CisgICAgTE9HX1dJVEhfTEVWRUwoTmV0d29yaywgV1RGTG9nTGV2ZWxWZXJib3Nl
LCAiQ0ZOZXQgLSByZWNlaXZlZENhbmNlbGxhdGlvbigpIik7CiAgICAgaWYgKGNoYWxsZW5nZSAh
PSBkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2UpCiAgICAgICAgIHJldHVybjsKIApAQCAtNDczLDcg
KzQ3Myw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2FuY2VsbGF0aW8KIAogdm9p
ZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVsdEhhbmRsaW5n
KGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCiB7Ci0gICAgTE9HKE5l
dHdvcmssICJDRk5ldCAtIHJlY2VpdmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1bHRIYW5kbGluZygp
Iik7CisgICAgTE9HX1dJVEhfTEVWRUwoTmV0d29yaywgV1RGTG9nTGV2ZWxWZXJib3NlLCAiQ0ZO
ZXQgLSByZWNlaXZlZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFuZGxpbmcoKSIpOwogICAgIEFT
U0VSVCghY2hhbGxlbmdlLmlzTnVsbCgpKTsKICAgICBBU1NFUlQoY2hhbGxlbmdlLmNmVVJMQXV0
aENoYWxsZW5nZVJlZigpKTsKICAgICBpZiAoY2hhbGxlbmdlICE9IGQtPm1fY3VycmVudFdlYkNo
YWxsZW5nZSkKQEAgLTQ4Nyw3ICs0ODcsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZl
ZFJlcXVlc3RUb1BlCiAKIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2hhbGxlbmdlUmVq
ZWN0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCiB7Ci0gICAg
TE9HKE5ldHdvcmssICJDRk5ldCAtIHJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKCkiKTsKKyAg
ICBMT0dfV0lUSF9MRVZFTChOZXR3b3JrLCBXVEZMb2dMZXZlbFZlcmJvc2UsICJDRk5ldCAtIHJl
Y2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKCkiKTsKICAgICBBU1NFUlQoIWNoYWxsZW5nZS5pc051
bGwoKSk7CiAgICAgQVNTRVJUKGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7CiAg
ICAgaWYgKGNoYWxsZW5nZSAhPSBkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2UpCkBAIC01MTEsNyAr
NTExLDcgQEAgQ0ZVUkxDb25uZWN0aW9uUmVmIFJlc291cmNlSGFuZGxlOjpjb25uZQogCiBSZXRh
aW5QdHI8Q0ZVUkxDb25uZWN0aW9uUmVmPiBSZXNvdXJjZUhhbmRsZTo6cmVsZWFzZUNvbm5lY3Rp
b25Gb3JEb3dubG9hZCgpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIEpvYiAlcCByZWxl
YXNpbmcgY29ubmVjdGlvbiAlcCBmb3IgZG93bmxvYWQiLCB0aGlzLCBkLT5tX2Nvbm5lY3Rpb24u
Z2V0KCkpOworICAgIExPR19XSVRIX0xFVkVMKE5ldHdvcmssIFdURkxvZ0xldmVsVmVyYm9zZSwg
IkNGTmV0IC0gSm9iICVwIHJlbGVhc2luZyBjb25uZWN0aW9uICVwIGZvciBkb3dubG9hZCIsIHRo
aXMsIGQtPm1fY29ubmVjdGlvbi5nZXQoKSk7CiAgICAgcmV0dXJuIFdURjo6bW92ZShkLT5tX2Nv
bm5lY3Rpb24pOwogfQogCkBAIC01MjIsNyArNTIyLDcgQEAgQ0ZTdHJpbmdSZWYgUmVzb3VyY2VI
YW5kbGU6OnN5bmNocm9ub3VzTAogCiB2b2lkIFJlc291cmNlSGFuZGxlOjpwbGF0Zm9ybUxvYWRS
ZXNvdXJjZVN5bmNocm9ub3VzbHkoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU3RvcmVkQ3JlZGVudGlhbHMgc3RvcmVkQ3JlZGVudGlh
bHMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgVmVj
dG9yPGNoYXI+JiBkYXRhKQogewotICAgIExPRyhOZXR3b3JrLCAiUmVzb3VyY2VIYW5kbGU6OnBs
YXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25vdXNseTolcyBhbGxvd1N0b3JlZENyZWRlbnRpYWxz
OiV1IiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBzdG9yZWRDcmVkZW50
aWFscyk7CisgICAgTE9HX1dJVEhfTEVWRUwoTmV0d29yaywgV1RGTG9nTGV2ZWxWZXJib3NlLCAi
UmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25vdXNseTolcyBhbGxv
d1N0b3JlZENyZWRlbnRpYWxzOiV1IiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpLCBzdG9yZWRDcmVkZW50aWFscyk7CiAKICAgICBBU1NFUlQoIXJlcXVlc3QuaXNFbXB0eSgp
KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCShyZXZpc2lvbiAx
ODI4NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTEsNyArMTExLDcgQEAgQ0ZVUkxSZXF1ZXN0UmVmIFJlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgTE9H
KE5ldHdvcmssICJDRk5ldCAtIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVX
aXRoT3BlcmF0aW9uUXVldWU6OndpbGxTZW5kUmVxdWVzdChoYW5kbGU9JXApICglcykiLCBtX2hh
bmRsZSwgbV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOworICAgICAgICBMT0dfV0lUSF9MRVZFTChOZXR3b3JrLCBXVEZMb2dMZXZlbFZlcmJvc2Us
ICJDRk5ldCAtIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0
aW9uUXVldWU6OndpbGxTZW5kUmVxdWVzdChoYW5kbGU9JXApICglcykiLCBtX2hhbmRsZSwgbV9o
YW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAg
ICAgICAgIFJldGFpblB0cjxDRlVSTFJlc3BvbnNlUmVmPiByZWRpcmVjdFJlc3BvbnNlID0gc3lu
dGhlc2l6ZVJlZGlyZWN0UmVzcG9uc2VJZk5lY2Vzc2FyeShjZlJlcXVlc3QsIG9yaWdpbmFsUmVk
aXJlY3RSZXNwb25zZSk7CiAgICAgICAgIEFTU0VSVChyZWRpcmVjdFJlc3BvbnNlKTsKQEAgLTEz
Nyw3ICsxMzcsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBMT0coTmV0d29yaywgIkNG
TmV0IC0gUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25R
dWV1ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGhhbmRsZT0lcCkgKCVzKSIsIG1faGFuZGxlLCBtX2hh
bmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgIExPR19XSVRIX0xFVkVMKE5ldHdvcmssIFdURkxvZ0xldmVsVmVyYm9zZSwgIkNGTmV0IC0g
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKGhhbmRsZT0lcCkgKCVzKSIsIG1faGFuZGxlLCBtX2hhbmRsZS0+
Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICAgICAg
Ly8gQXZvaWQgTUlNRSB0eXBlIHNuaWZmaW5nIGlmIHRoZSByZXNwb25zZSBjb21lcyBiYWNrIGFz
IDMwNCBOb3QgTW9kaWZpZWQuCiAgICAgICAgIENGSFRUUE1lc3NhZ2VSZWYgbXNnID0gd2tHZXRD
RlVSTFJlc3BvbnNlSFRUUFJlc3BvbnNlKGNmUmVzcG9uc2UpOwpAQCAtMTcyLDcgKzE3Miw3IEBA
IHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2EKIAogICAgIGRpc3BhdGNo
X2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CiAgICAgICAgIGlmIChwcm90ZWN0
b3ItPmhhc0hhbmRsZSgpKSB7Ci0gICAgICAgICAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlk
UmVjZWl2ZURhdGEoaGFuZGxlPSVwKSAoJXMpIiwgbV9oYW5kbGUsIG1faGFuZGxlLT5maXJzdFJl
cXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIExPR19X
SVRIX0xFVkVMKE5ldHdvcmssIFdURkxvZ0xldmVsVmVyYm9zZSwgIkNGTmV0IC0gUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2
ZURhdGEoaGFuZGxlPSVwKSAoJXMpIiwgbV9oYW5kbGUsIG1faGFuZGxlLT5maXJzdFJlcXVlc3Qo
KS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgICAgICAgICAgbV9oYW5kbGUt
PmNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKG1faGFuZGxlLCBTaGFyZWRCdWZmZXI6OndyYXBD
RkRhdGEoZGF0YSksIG9yaWdpbmFsTGVuZ3RoKTsKICAgICAgICAgfQpAQCAtMTkwLDcgKzE5MCw3
IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2EKICAgICAgICAgaWYg
KCFwcm90ZWN0b3ItPmhhc0hhbmRsZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRGaW5pc2hMb2FkaW5nKGhhbmRsZT0lcCkgKCVzKSIs
IG1faGFuZGxlLCBtX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CisgICAgICAgIExPR19XSVRIX0xFVkVMKE5ldHdvcmssIFdURkxvZ0xldmVsVmVy
Ym9zZSwgIkNGTmV0IC0gUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhP
cGVyYXRpb25RdWV1ZTo6ZGlkRmluaXNoTG9hZGluZyhoYW5kbGU9JXApICglcykiLCBtX2hhbmRs
ZSwgbV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwogCiAgICAgICAgIG1faGFuZGxlLT5jbGllbnQoKS0+ZGlkRmluaXNoTG9hZGluZyhtX2hhbmRs
ZSwgMCk7CiAgICAgfSk7CkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYQogICAgIENGUmV0YWluKGVycm9yKTsKICAgICBkaXNwYXRjaF9h
c3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewogICAgICAgICBpZiAocHJvdGVjdG9y
LT5oYXNIYW5kbGUoKSkgewotICAgICAgICAgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIFJlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZEZh
aWwoaGFuZGxlPSVwKSAoJXMpIiwgbV9oYW5kbGUsIG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS51
cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIExPR19XSVRIX0xFVkVM
KE5ldHdvcmssIFdURkxvZ0xldmVsVmVyYm9zZSwgIkNGTmV0IC0gUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkRmFpbChoYW5kbGU9JXAp
ICglcykiLCBtX2hhbmRsZSwgbV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgICAgICAgICBtX2hhbmRsZS0+Y2xpZW50KCktPmRpZEZh
aWwobV9oYW5kbGUsIFJlc291cmNlRXJyb3IoZXJyb3IpKTsKICAgICAgICAgfQpAQCAtMjI1LDcg
KzIyNSw3IEBAIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgUmVzb3VyY2VIYW5kbGVDRlUKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQg
LSBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVl
Ojp3aWxsQ2FjaGVSZXNwb25zZShoYW5kbGU9JXApICglcykiLCBtX2hhbmRsZSwgbV9oYW5kbGUt
PmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBM
T0dfV0lUSF9MRVZFTChOZXR3b3JrLCBXVEZMb2dMZXZlbFZlcmJvc2UsICJDRk5ldCAtIFJlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OndpbGxD
YWNoZVJlc3BvbnNlKGhhbmRsZT0lcCkgKCVzKSIsIG1faGFuZGxlLCBtX2hhbmRsZS0+Zmlyc3RS
ZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICAgICAgbV9oYW5k
bGUtPmNsaWVudCgpLT53aWxsQ2FjaGVSZXNwb25zZUFzeW5jKG1faGFuZGxlLCBjYWNoZWRSZXNw
b25zZSk7CiAgICAgfSk7CkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYQogICAgIENGUmV0YWluKGNoYWxsZW5nZSk7CiAgICAgZGlzcGF0
Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKICAgICAgICAgaWYgKHByb3Rl
Y3Rvci0+aGFzSGFuZGxlKCkpIHsKLSAgICAgICAgICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpk
aWRSZWNlaXZlQ2hhbGxlbmdlKGhhbmRsZT0lcCkgKCVzKSIsIG1faGFuZGxlLCBtX2hhbmRsZS0+
Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAg
ICBMT0dfV0lUSF9MRVZFTChOZXR3b3JrLCBXVEZMb2dMZXZlbFZlcmJvc2UsICJDRk5ldCAtIFJl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRp
ZFJlY2VpdmVDaGFsbGVuZ2UoaGFuZGxlPSVwKSAoJXMpIiwgbV9oYW5kbGUsIG1faGFuZGxlLT5m
aXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgICAgICAg
ICAgbV9oYW5kbGUtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShjaGFsbGVuZ2UsIG1faGFuZGxlKSk7CiAgICAgICAgIH0KQEAgLTI1OSw3
ICsyNTksNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhCiAgICAg
ICAgIGlmICghcHJvdGVjdG9yLT5oYXNIYW5kbGUoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkU2VuZEJvZHlEYXRhKGhhbmRsZT0lcCkg
KCVzKSIsIG1faGFuZGxlLCBtX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgIExPR19XSVRIX0xFVkVMKE5ldHdvcmssIFdURkxvZ0xl
dmVsVmVyYm9zZSwgIkNGTmV0IC0gUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkU2VuZEJvZHlEYXRhKGhhbmRsZT0lcCkgKCVzKSIsIG1f
aGFuZGxlLCBtX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiAKICAgICAgICAgbV9oYW5kbGUtPmNsaWVudCgpLT5kaWRTZW5kRGF0YShtX2hhbmRs
ZSwgdG90YWxCeXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpOwogICAgIH0p
OwpAQCAtMjgzLDcgKzI4Myw3IEBAIEJvb2xlYW4gUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWwKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIExPRyhOZXR3
b3JrLCAiQ0ZOZXQgLSBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9w
ZXJhdGlvblF1ZXVlOjpjYW5SZXNwb25kVG9Qcm90ZWN0aW9uU3BhY2UoaGFuZGxlPSVwKSAoJXMp
IiwgbV9oYW5kbGUsIG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKKyAgICAgICAgTE9HX1dJVEhfTEVWRUwoTmV0d29yaywgV1RGTG9nTGV2ZWxW
ZXJib3NlLCAiQ0ZOZXQgLSBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0
aE9wZXJhdGlvblF1ZXVlOjpjYW5SZXNwb25kVG9Qcm90ZWN0aW9uU3BhY2UoaGFuZGxlPSVwKSAo
JXMpIiwgbV9oYW5kbGUsIG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKIAogICAgICAgICBQcm90ZWN0aW9uU3BhY2UgY29yZVByb3RlY3Rpb25T
cGFjZSA9IFByb3RlY3Rpb25TcGFjZShwcm90ZWN0aW9uU3BhY2UpOwogI2lmIFBMQVRGT1JNKElP
UykKQEAgLTMwOSw3ICszMDksNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhCiAgICAgQ0ZSZXRhaW4oZGF0YUFycmF5KTsKICAgICBkaXNwYXRjaF9hc3luYyhkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewogICAgICAgICBpZiAocHJvdGVjdG9yLT5oYXNIYW5k
bGUoKSkgewotICAgICAgICAgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIFJlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFNlbmRCb2R5RGF0
YShoYW5kbGU9JXApICglcykiLCBtX2hhbmRsZSwgbV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVy
bCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgTE9HX1dJVEhfTEVWRUwo
TmV0d29yaywgV1RGTG9nTGV2ZWxWZXJib3NlLCAiQ0ZOZXQgLSBSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRTZW5kQm9keURhdGEoaGFu
ZGxlPSVwKSAoJXMpIiwgbV9oYW5kbGUsIG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgICAgICAgICAgbV9oYW5kbGUtPmNsaWVudCgp
LT5kaWRSZWNlaXZlQnVmZmVyKG1faGFuZGxlLCBTaGFyZWRCdWZmZXI6OndyYXBDRkRhdGFBcnJh
eShkYXRhQXJyYXkpLCAtMSk7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZO
ZXQuY3BwCShyZXZpc2lvbiAxODI4NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcs
NyArNjcsNyBAQCBTb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRsZShjCiAgICAg
LCBtX2Nvbm5lY3Rpb25UeXBlKFVua25vd24pCiAgICAgLCBtX3NlbnRTdG9yZWRDcmVkZW50aWFs
cyhmYWxzZSkKIHsKLSAgICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBuZXcg
Y2xpZW50ICVwIiwgdGhpcywgbV9jbGllbnQpOworICAgIExPR19XSVRIX0xFVkVMKE5ldHdvcmss
IFdURkxvZ0xldmVsVmVyYm9zZSwgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBuZXcgY2xpZW50ICVw
IiwgdGhpcywgbV9jbGllbnQpOwogCiAgICAgQVNTRVJUKHVybC5wcm90b2NvbElzKCJ3cyIpIHx8
IHVybC5wcm90b2NvbElzKCJ3c3MiKSk7CiAKQEAgLTYxNSw3ICs2MTUsNyBAQCB2b2lkIFNvY2tl
dFN0cmVhbUhhbmRsZTo6cmVwb3J0RXJyb3JUb0NsCiAKIFNvY2tldFN0cmVhbUhhbmRsZTo6flNv
Y2tldFN0cmVhbUhhbmRsZSgpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5k
bGUgJXAgZHRvciIsIHRoaXMpOworICAgIExPR19XSVRIX0xFVkVMKE5ldHdvcmssIFdURkxvZ0xl
dmVsVmVyYm9zZSwgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBkdG9yIiwgdGhpcyk7CiAKICAgICBB
U1NFUlQoIW1fcGFjUnVuTG9vcFNvdXJjZSk7CiB9CkBAIC02MzAsNyArNjMwLDcgQEAgaW50IFNv
Y2tldFN0cmVhbUhhbmRsZTo6cGxhdGZvcm1TZW5kKGNvbgogCiB2b2lkIFNvY2tldFN0cmVhbUhh
bmRsZTo6cGxhdGZvcm1DbG9zZSgpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1I
YW5kbGUgJXAgcGxhdGZvcm1DbG9zZSIsIHRoaXMpOworICAgIExPR19XSVRIX0xFVkVMKE5ldHdv
cmssIFdURkxvZ0xldmVsVmVyYm9zZSwgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBwbGF0Zm9ybUNs
b3NlIiwgdGhpcyk7CiAKICAgICBpZiAobV9wYWNSdW5Mb29wU291cmNlKSAKICAgICAgICAgcmVt
b3ZlUEFDUnVuTG9vcFNvdXJjZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9TeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU3lu
Y2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmNwcAkocmV2aXNp
b24gMTgyODc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJv
bm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04OCw3ICs4OCw3IEBAIENGVVJMUmVxdWVzdFJlZiBTeW5jaHJvbm91c1Jlc291cmNl
SGFuZGwKICAgICAgICAgcmV0dXJuIGNmUmVxdWVzdDsKICAgICB9CiAKLSAgICBMT0coTmV0d29y
aywgIkNGTmV0IC0gU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlOjp3aWxsU2VuZFJlcXVlc3QoaGFuZGxlPSVwKSAoJXMpIiwgbV9oYW5kbGUsIG1faGFuZGxl
LT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBMT0df
V0lUSF9MRVZFTChOZXR3b3JrLCBXVEZMb2dMZXZlbFZlcmJvc2UsICJDRk5ldCAtIFN5bmNocm9u
b3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6d2lsbFNlbmRSZXF1ZXN0
KGhhbmRsZT0lcCkgKCVzKSIsIG1faGFuZGxlLCBtX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJs
KCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dCA9IGNyZWF0ZVJlc291cmNlUmVxdWVzdChjZlJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UuZ2V0
KCkpOwogICAgIG1faGFuZGxlLT53aWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNw
b25zZS5nZXQoKSk7CkBAIC0xMTMsNyArMTEzLDcgQEAgc3RhdGljIHZvaWQgc2V0RGVmYXVsdE1J
TUVUeXBlKENGVVJMUmVzcAogCiB2b2lkIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKENGVVJMQ29ubmVjdGlvblJlZiBj
b25uZWN0aW9uLCBDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UpCiB7Ci0gICAgTE9HKE5ldHdv
cmssICJDRk5ldCAtIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGhhbmRsZT0lcCkgKCVzKSIsIG1faGFuZGxlLCBtX2hh
bmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
TE9HX1dJVEhfTEVWRUwoTmV0d29yaywgV1RGTG9nTGV2ZWxWZXJib3NlLCAiQ0ZOZXQgLSBTeW5j
aHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVS
ZXNwb25zZShoYW5kbGU9JXApICglcykiLCBtX2hhbmRsZSwgbV9oYW5kbGUtPmZpcnN0UmVxdWVz
dCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgaWYgKCFtX2hhbmRsZS0+
Y2xpZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIFN5bmNo
cm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lCiAKIHZvaWQgU3luY2hyb25vdXNSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlRGF0YShDRkRhdGFSZWYg
ZGF0YSwgQ0ZJbmRleCBvcmlnaW5hbExlbmd0aCkKIHsKLSAgICBMT0coTmV0d29yaywgIkNGTmV0
IC0gU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRS
ZWNlaXZlRGF0YShoYW5kbGU9JXAsIGJ5dGVzPSVsZCkgKCVzKSIsIG1faGFuZGxlLCBDRkRhdGFH
ZXRMZW5ndGgoZGF0YSksIG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKKyAgICBMT0dfV0lUSF9MRVZFTChOZXR3b3JrLCBXVEZMb2dMZXZlbFZl
cmJvc2UsICJDRk5ldCAtIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZTo6ZGlkUmVjZWl2ZURhdGEoaGFuZGxlPSVwLCBieXRlcz0lbGQpICglcykiLCBtX2hh
bmRsZSwgQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEpLCBtX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJs
KCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICBp
ZiAobV9oYW5kbGUtPnF1aWNrTG9va0hhbmRsZSgpICYmIG1faGFuZGxlLT5xdWlja0xvb2tIYW5k
bGUoKS0+ZGlkUmVjZWl2ZURhdGEoZGF0YSkpCkBAIC0xNjksNyArMTY5LDcgQEAgdm9pZCBTeW5j
aHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZQogCiB2b2lkIFN5bmNocm9ub3VzUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkRmluaXNoTG9hZGluZygpCiB7Ci0g
ICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkRmluaXNoTG9hZGluZyhoYW5kbGU9JXApICglcykiLCBtX2hh
bmRsZSwgbV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOworICAgIExPR19XSVRIX0xFVkVMKE5ldHdvcmssIFdURkxvZ0xldmVsVmVyYm9zZSwgIkNG
TmV0IC0gU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpk
aWRGaW5pc2hMb2FkaW5nKGhhbmRsZT0lcCkgKCVzKSIsIG1faGFuZGxlLCBtX2hhbmRsZS0+Zmly
c3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICNpZiBVU0UoUVVJ
Q0tfTE9PSykKICAgICBpZiAobV9oYW5kbGUtPnF1aWNrTG9va0hhbmRsZSgpICYmIG1faGFuZGxl
LT5xdWlja0xvb2tIYW5kbGUoKS0+ZGlkRmluaXNoTG9hZGluZygpKQpAQCAtMTgyLDcgKzE4Miw3
IEBAIHZvaWQgU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmUKIAogdm9pZCBTeW5j
aHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGU6OmRpZEZhaWwoQ0ZF
cnJvclJlZiBlcnJvcikKIHsKLSAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gU3luY2hyb25vdXNS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRGYWlsKGhhbmRsZT0lcCwg
ZXJyb3IgPSAlcCkgKCVzKSIsIG1faGFuZGxlLCBlcnJvciwgbV9oYW5kbGUtPmZpcnN0UmVxdWVz
dCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIExPR19XSVRIX0xFVkVMKE5l
dHdvcmssIFdURkxvZ0xldmVsVmVyYm9zZSwgIkNGTmV0IC0gU3luY2hyb25vdXNSZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRGYWlsKGhhbmRsZT0lcCwgZXJyb3IgPSAl
cCkgKCVzKSIsIG1faGFuZGxlLCBlcnJvciwgbV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgp
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgaWYg
KFF1aWNrTG9va0hhbmRsZSogcXVpY2tMb29rSGFuZGxlID0gbV9oYW5kbGUtPnF1aWNrTG9va0hh
bmRsZSgpKQpAQCAtMjIyLDcgKzIyMiw3IEBAIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgU3luY2hy
b25vdXNSZXNvdXIKIAogdm9pZCBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGU6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNo
YWxsZW5nZSkKIHsKLSAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gU3luY2hyb25vdXNSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKGhhbmRs
ZT0lcCAoJXMpIiwgbV9oYW5kbGUsIG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBMT0dfV0lUSF9MRVZFTChOZXR3b3JrLCBXVEZMb2dM
ZXZlbFZlcmJvc2UsICJDRk5ldCAtIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZTo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShoYW5kbGU9JXAgKCVzKSIsIG1faGFu
ZGxlLCBtX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CiAKICAgICBtX2hhbmRsZS0+ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNoYWxsZW5nZSwgbV9oYW5kbGUpKTsKIH0KQEAgLTIzNiw3
ICsyMzYsNyBAQCB2b2lkIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lCiAKIEJv
b2xlYW4gU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpz
aG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJDRk5ldCAt
IFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6c2hvdWxk
VXNlQ3JlZGVudGlhbFN0b3JhZ2UoaGFuZGxlPSVwKSAoJXMpIiwgbV9oYW5kbGUsIG1faGFuZGxl
LT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBMT0df
V0lUSF9MRVZFTChOZXR3b3JrLCBXVEZMb2dMZXZlbFZlcmJvc2UsICJDRk5ldCAtIFN5bmNocm9u
b3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6c2hvdWxkVXNlQ3JlZGVu
dGlhbFN0b3JhZ2UoaGFuZGxlPSVwKSAoJXMpIiwgbV9oYW5kbGUsIG1faGFuZGxlLT5maXJzdFJl
cXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIGlmICghbV9oYW5k
bGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI0OSw3ICsyNDksNyBAQCBCb29sZWFuIFN5
bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvCiB7CiAgICAgQVNTRVJUKG1faGFuZGxlKTsK
IAotICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGU6OmNhblJlc3BvbmRUb1Byb3RlY3Rpb25TcGFjZShoYW5kbGU9
JXAgKCVzKSIsIG1faGFuZGxlLCBtX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CisgICAgTE9HX1dJVEhfTEVWRUwoTmV0d29yaywgV1RGTG9nTGV2
ZWxWZXJib3NlLCAiQ0ZOZXQgLSBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGU6OmNhblJlc3BvbmRUb1Byb3RlY3Rpb25TcGFjZShoYW5kbGU9JXAgKCVzKSIs
IG1faGFuZGxlLCBtX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgUHJvdGVjdGlvblNwYWNlIGNvcmVQ
cm90ZWN0aW9uU3BhY2UgPSBQcm90ZWN0aW9uU3BhY2UocHJvdGVjdGlvblNwYWNlKTsKQEAgLTI2
OCw3ICsyNjgsNyBAQCB2b2lkIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lCiAg
ICAgaWYgKCFtX2hhbmRsZS0+Y2xpZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIExPRyhO
ZXR3b3JrLCAiQ0ZOZXQgLSBTeW5jaHJvbm91c1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGU6OmRpZFJlY2VpdmVEYXRhQXJyYXkoaGFuZGxlPSVwLCBhcnJheUxlbmd0aD0lbGQp
ICglcykiLCBtX2hhbmRsZSwgQ0ZBcnJheUdldENvdW50KGRhdGFBcnJheSksIG1faGFuZGxlLT5m
aXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBMT0dfV0lU
SF9MRVZFTChOZXR3b3JrLCBXVEZMb2dMZXZlbFZlcmJvc2UsICJDRk5ldCAtIFN5bmNocm9ub3Vz
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZTo6ZGlkUmVjZWl2ZURhdGFBcnJh
eShoYW5kbGU9JXAsIGFycmF5TGVuZ3RoPSVsZCkgKCVzKSIsIG1faGFuZGxlLCBDRkFycmF5R2V0
Q291bnQoZGF0YUFycmF5KSwgbV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgaWYgKG1faGFuZGxl
LT5xdWlja0xvb2tIYW5kbGUoKSAmJiBtX2hhbmRsZS0+cXVpY2tMb29rSGFuZGxlKCktPmRpZFJl
Y2VpdmVEYXRhQXJyYXkoZGF0YUFycmF5KSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2subW0JKHJldmlzaW9uIDE4Mjg3NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjc3LDcgKzI3Nyw3IEBAIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0
aW9uICopY28KICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAgICAgaWYgKCFtX2Nvbm5l
Y3Rpb25EZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwotICAgIExPRyhOZXR3b3JrLCAiV2ViUXVp
Y2tMb29rSGFuZGxlQXNEZWxlZ2F0ZTo6ZGlkUmVjZWl2ZURhdGFBcnJheSgpIik7CisgICAgTE9H
X1dJVEhfTEVWRUwoTmV0d29yaywgV1RGTG9nTGV2ZWxWZXJib3NlLCAiV2ViUXVpY2tMb29rSGFu
ZGxlQXNEZWxlZ2F0ZTo6ZGlkUmVjZWl2ZURhdGFBcnJheSgpIik7CiAgICAgbV9jb25uZWN0aW9u
RGVsZWdhdGUtPmRpZFJlY2VpdmVEYXRhQXJyYXkocmVpbnRlcnByZXRfY2FzdDxDRkFycmF5UmVm
PihkYXRhQXJyYXkpKTsKIH0KIApAQCAtMjg2LDcgKzI4Niw3IEBAIC0gKHZvaWQpY29ubmVjdGlv
bjooTlNVUkxDb25uZWN0aW9uICopY28KICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAg
ICAgaWYgKCFtX2Nvbm5lY3Rpb25EZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwotICAgIExPRyhO
ZXR3b3JrLCAiV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZTo6ZGlkUmVjZWl2ZURhdGEoKSAt
IGRhdGEgbGVuZ3RoID0gJWxkIiwgKGxvbmcpW2RhdGEgbGVuZ3RoXSk7CisgICAgTE9HX1dJVEhf
TEVWRUwoTmV0d29yaywgV1RGTG9nTGV2ZWxWZXJib3NlLCAiV2ViUXVpY2tMb29rSGFuZGxlQXNE
ZWxlZ2F0ZTo6ZGlkUmVjZWl2ZURhdGEoKSAtIGRhdGEgbGVuZ3RoID0gJWxkIiwgKGxvbmcpW2Rh
dGEgbGVuZ3RoXSk7CiAKICAgICAvLyBRdWlja0xvb2sgY29kZSBzZW5kcyB1cyBhIG5pbCBkYXRh
IGF0IHRpbWVzLiBUaGUgY2hlY2sgYmVsb3cgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSBpbgogICAg
IC8vIFJlc291cmNlSGFuZGxlTWFjLmNwcCBhZGRlZCBmb3IgYSBkaWZmZXJlbnQgYnVnLgpAQCAt
MzAwLDcgKzMwMCw3IEBAIC0gKHZvaWQpY29ubmVjdGlvbkRpZEZpbmlzaExvYWRpbmc6KE5TVVIK
ICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb25EZWxl
Z2F0ZSkKICAgICAgICAgcmV0dXJuOwotICAgIExPRyhOZXR3b3JrLCAiV2ViUXVpY2tMb29rSGFu
ZGxlQXNEZWxlZ2F0ZTo6ZGlkRmluaXNoTG9hZGluZygpIik7CisgICAgTE9HX1dJVEhfTEVWRUwo
TmV0d29yaywgV1RGTG9nTGV2ZWxWZXJib3NlLCAiV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0
ZTo6ZGlkRmluaXNoTG9hZGluZygpIik7CiAgICAgbV9jb25uZWN0aW9uRGVsZWdhdGUtPmRpZEZp
bmlzaExvYWRpbmcoKTsKIH0KIApAQCAtMzA5LDcgKzMwOSw3IEBAIC0gKHZvaWQpY29ubmVjdGlv
bjooTlNVUkxDb25uZWN0aW9uICopY28KICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAg
ICAgaWYgKCFtX2Nvbm5lY3Rpb25EZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwotICAgIExPRyhO
ZXR3b3JrLCAiV2ViUXVpY2tMb29rSGFuZGxlQXNEZWxlZ2F0ZTo6ZGlkRmFpbCgpIik7CisgICAg
TE9HX1dJVEhfTEVWRUwoTmV0d29yaywgV1RGTG9nTGV2ZWxWZXJib3NlLCAiV2ViUXVpY2tMb29r
SGFuZGxlQXNEZWxlZ2F0ZTo6ZGlkRmFpbCgpIik7CiAgICAgbV9jb25uZWN0aW9uRGVsZWdhdGUt
PmRpZEZhaWwocmVpbnRlcnByZXRfY2FzdDxDRkVycm9yUmVmPihlcnJvcikpOwogfQogCkBAIC00
NTMsNyArNDUzLDcgQEAgUXVpY2tMb29rSGFuZGxlOjpRdWlja0xvb2tIYW5kbGUoTlNVUkwgKgog
ICAgICwgbV9uc1Jlc3BvbnNlKFttX2NvbnZlcnRlciBwcmV2aWV3UmVzcG9uc2VdKQogICAgICwg
bV9jbGllbnQoZW1wdHlDbGllbnQoKSkKIHsKLSAgICBMT0coTmV0d29yaywgIlF1aWNrTG9va0hh
bmRsZTo6UXVpY2tMb29rSGFuZGxlKCkgLSBwcmV2aWV3RmlsZU5hbWU6ICVzIiwgW21fY29udmVy
dGVyIHByZXZpZXdGaWxlTmFtZV0pOworICAgIExPR19XSVRIX0xFVkVMKE5ldHdvcmssIFdURkxv
Z0xldmVsVmVyYm9zZSwgIlF1aWNrTG9va0hhbmRsZTo6UXVpY2tMb29rSGFuZGxlKCkgLSBwcmV2
aWV3RmlsZU5hbWU6ICVzIiwgW21fY29udmVydGVyIHByZXZpZXdGaWxlTmFtZV0pOwogfQogCiBz
dGQ6OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBRdWlja0xvb2tIYW5kbGU6OmNyZWF0ZShS
ZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBOU1VSTENvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIE5TVVJM
UmVzcG9uc2UgKm5zUmVzcG9uc2UsIGlkIGRlbGVnYXRlKQpAQCAtNTEzLDcgKzUxMyw3IEBAIGJv
b2wgUXVpY2tMb29rSGFuZGxlOjpkaWRSZWNlaXZlRGF0YUFycmEKICAgICBpZiAobV9maW5pc2hl
ZExvYWRpbmdEYXRhSW50b0NvbnZlcnRlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
TE9HKE5ldHdvcmssICJRdWlja0xvb2tIYW5kbGU6OmRpZFJlY2VpdmVEYXRhQXJyYXkoKSIpOwor
ICAgIExPR19XSVRIX0xFVkVMKE5ldHdvcmssIFdURkxvZ0xldmVsVmVyYm9zZSwgIlF1aWNrTG9v
a0hhbmRsZTo6ZGlkUmVjZWl2ZURhdGFBcnJheSgpIik7CiAgICAgW21fY29udmVydGVyIGFwcGVu
ZERhdGFBcnJheTooTlNBcnJheSAqKWNmRGF0YUFycmF5XTsKICAgICBtX2NsaWVudC0+ZGlkUmVj
ZWl2ZURhdGFBcnJheShjZkRhdGFBcnJheSk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC01MzIsNyAr
NTMyLDcgQEAgYm9vbCBRdWlja0xvb2tIYW5kbGU6OmRpZEZpbmlzaExvYWRpbmcoKQogICAgIGlm
IChtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29udmVydGVyKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBMT0coTmV0d29yaywgIlF1aWNrTG9va0hhbmRsZTo6ZGlkRmluaXNoTG9hZGlu
ZygpIik7CisgICAgTE9HX1dJVEhfTEVWRUwoTmV0d29yaywgV1RGTG9nTGV2ZWxWZXJib3NlLCAi
UXVpY2tMb29rSGFuZGxlOjpkaWRGaW5pc2hMb2FkaW5nKCkiKTsKICAgICBtX2ZpbmlzaGVkTG9h
ZGluZ0RhdGFJbnRvQ29udmVydGVyID0gWUVTOwogICAgIFttX2NvbnZlcnRlciBmaW5pc2hlZEFw
cGVuZGluZ0RhdGFdOwogICAgIG1fY2xpZW50LT5kaWRGaW5pc2hMb2FkaW5nKCk7CkBAIC01NDEs
NyArNTQxLDcgQEAgYm9vbCBRdWlja0xvb2tIYW5kbGU6OmRpZEZpbmlzaExvYWRpbmcoKQogCiB2
b2lkIFF1aWNrTG9va0hhbmRsZTo6ZGlkRmFpbCgpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJRdWlj
a0xvb2tIYW5kbGU6OmRpZEZhaWwoKSIpOworICAgIExPR19XSVRIX0xFVkVMKE5ldHdvcmssIFdU
RkxvZ0xldmVsVmVyYm9zZSwgIlF1aWNrTG9va0hhbmRsZTo6ZGlkRmFpbCgpIik7CiAgICAgbV9j
bGllbnQtPmRpZEZhaWwoKTsKICAgICBbbV9jb252ZXJ0ZXIgZmluaXNoQ29udmVydGluZ107CiAg
ICAgbV9jb252ZXJ0ZXIgPSBudWxscHRyOwpAQCAtNTQ5LDcgKzU0OSw3IEBAIHZvaWQgUXVpY2tM
b29rSGFuZGxlOjpkaWRGYWlsKCkKIAogUXVpY2tMb29rSGFuZGxlOjp+UXVpY2tMb29rSGFuZGxl
KCkKIHsKLSAgICBMT0coTmV0d29yaywgIlF1aWNrTG9va0hhbmRsZTo6flF1aWNrTG9va0hhbmRs
ZSgpIik7CisgICAgTE9HX1dJVEhfTEVWRUwoTmV0d29yaywgV1RGTG9nTGV2ZWxWZXJib3NlLCAi
UXVpY2tMb29rSGFuZGxlOjp+UXVpY2tMb29rSGFuZGxlKCkiKTsKICAgICBtX2NvbnZlcnRlciA9
IG51bGxwdHI7CiAKICAgICBbbV9kZWxlZ2F0ZSBjbGVhckhhbmRsZV07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRs
ZU1hYy5tbQkocmV2aXNpb24gMTgyODc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyNSw3ICsx
MjUsNyBAQCBSZXNvdXJjZUhhbmRsZTo6flJlc291cmNlSGFuZGxlKCkKICAgICByZWxlYXNlRGVs
ZWdhdGUoKTsKICAgICBkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2Uuc2V0QXV0aGVudGljYXRpb25D
bGllbnQoMCk7CiAKLSAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCBkZXN0cm95ZWQiLCB0aGlz
KTsKKyAgICBMT0dfV0lUSF9MRVZFTChOZXR3b3JrLCBXVEZMb2dMZXZlbFZlcmJvc2UsICJIYW5k
bGUgJXAgZGVzdHJveWVkIiwgdGhpcyk7CiB9CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC0yODUs
NyArMjg1LDcgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQoKQogICAgIGVsc2UKICAgICAg
ICAgZC0+bV9zdGFydFdoZW5TY2hlZHVsZWQgPSB0cnVlOwogCi0gICAgTE9HKE5ldHdvcmssICJI
YW5kbGUgJXAgc3RhcnRpbmcgY29ubmVjdGlvbiAlcCBmb3IgJUAiLCB0aGlzLCBjb25uZWN0aW9u
KCksIGZpcnN0UmVxdWVzdCgpLm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KSk7Cisg
ICAgTE9HX1dJVEhfTEVWRUwoTmV0d29yaywgV1RGTG9nTGV2ZWxWZXJib3NlLCAiSGFuZGxlICVw
IHN0YXJ0aW5nIGNvbm5lY3Rpb24gJXAgZm9yICVAIiwgdGhpcywgY29ubmVjdGlvbigpLCBmaXJz
dFJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSkpOwogICAgIAogICAg
IGlmIChkLT5tX2Nvbm5lY3Rpb24pIHsKICAgICAgICAgaWYgKGQtPm1fZGVmZXJzTG9hZGluZykK
QEAgLTMwMSw3ICszMDEsNyBAQCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFydCgpCiAKIHZvaWQg
UmVzb3VyY2VIYW5kbGU6OmNhbmNlbCgpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAg
Y2FuY2VsIGNvbm5lY3Rpb24gJXAiLCB0aGlzLCBkLT5tX2Nvbm5lY3Rpb24uZ2V0KCkpOworICAg
IExPR19XSVRIX0xFVkVMKE5ldHdvcmssIFdURkxvZ0xldmVsVmVyYm9zZSwgIkhhbmRsZSAlcCBj
YW5jZWwgY29ubmVjdGlvbiAlcCIsIHRoaXMsIGQtPm1fY29ubmVjdGlvbi5nZXQoKSk7CiAKICAg
ICAvLyBMZWFrcyB3ZXJlIHNlZW4gb24gSFRUUCB0ZXN0cyB3aXRob3V0IHRoaXM7IGNhbiBiZSBy
ZW1vdmVkIG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzY4ODY5Mzc+IGlzIGZpeGVkLgogICAgIGlmIChk
LT5tX2N1cnJlbnRNYWNDaGFsbGVuZ2UpCkBAIC0zODQsNyArMzg0LDcgQEAgQ0ZTdHJpbmdSZWYg
UmVzb3VyY2VIYW5kbGU6OnN5bmNocm9ub3VzTAogCiB2b2lkIFJlc291cmNlSGFuZGxlOjpwbGF0
Zm9ybUxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU3RvcmVkQ3JlZGVudGlhbHMgc3RvcmVk
Q3JlZGVudGlhbHMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgVmVjdG9yPGNoYXI+JiBkYXRhKQogewotICAgIExPRyhOZXR3b3JrLCAiUmVzb3VyY2VI
YW5kbGU6OnBsYXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25vdXNseTolQCBhbGxvd1N0b3JlZENy
ZWRlbnRpYWxzOiV1IiwgcmVxdWVzdC5uc1VSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSks
IHN0b3JlZENyZWRlbnRpYWxzKTsKKyAgICBMT0dfV0lUSF9MRVZFTChOZXR3b3JrLCBXVEZMb2dM
ZXZlbFZlcmJvc2UsICJSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJv
bm91c2x5OiVAIGFsbG93U3RvcmVkQ3JlZGVudGlhbHM6JXUiLCByZXF1ZXN0Lm5zVVJMUmVxdWVz
dChEb05vdFVwZGF0ZUhUVFBCb2R5KSwgc3RvcmVkQ3JlZGVudGlhbHMpOwogCiAgICAgQVNTRVJU
KCFyZXF1ZXN0LmlzRW1wdHkoKSk7CiAgICAgCkBAIC02MjksNyArNjI5LDcgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZTo6Y29udGludWVDYW5BdXRoZW50aQogCiB2b2lkIFJlc291cmNlSGFuZGxlOjpy
ZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5n
ZSwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKIHsKLSAgICBMT0coTmV0d29yaywgIkhh
bmRsZSAlcCByZWNlaXZlZENyZWRlbnRpYWwiLCB0aGlzKTsKKyAgICBMT0dfV0lUSF9MRVZFTChO
ZXR3b3JrLCBXVEZMb2dMZXZlbFZlcmJvc2UsICJIYW5kbGUgJXAgcmVjZWl2ZWRDcmVkZW50aWFs
IiwgdGhpcyk7CiAKICAgICBBU1NFUlQoIWNoYWxsZW5nZS5pc051bGwoKSk7CiAgICAgaWYgKGNo
YWxsZW5nZSAhPSBkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2UpCkBAIC02NTgsNyArNjU4LDcgQEAg
dm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKAogCiB2b2lkIFJlc291cmNl
SGFuZGxlOjpyZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKIHsKLSAgICBMT0coTmV0d29yaywg
IkhhbmRsZSAlcCByZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwiLCB0
aGlzKTsKKyAgICBMT0dfV0lUSF9MRVZFTChOZXR3b3JrLCBXVEZMb2dMZXZlbFZlcmJvc2UsICJI
YW5kbGUgJXAgcmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsIiwgdGhp
cyk7CiAKICAgICBBU1NFUlQoIWNoYWxsZW5nZS5pc051bGwoKSk7CiAgICAgaWYgKGNoYWxsZW5n
ZSAhPSBkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2UpCkBAIC02NzEsNyArNjcxLDcgQEAgdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9DbwogCiB2b2lkIFJlc291cmNlSGFuZGxl
OjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hh
bGxlbmdlKQogewotICAgIExPRyhOZXR3b3JrLCAiSGFuZGxlICVwIHJlY2VpdmVkQ2FuY2VsbGF0
aW9uIiwgdGhpcyk7CisgICAgTE9HX1dJVEhfTEVWRUwoTmV0d29yaywgV1RGTG9nTGV2ZWxWZXJi
b3NlLCAiSGFuZGxlICVwIHJlY2VpdmVkQ2FuY2VsbGF0aW9uIiwgdGhpcyk7CiAKICAgICBpZiAo
Y2hhbGxlbmdlICE9IGQtPm1fY3VycmVudFdlYkNoYWxsZW5nZSkKICAgICAgICAgcmV0dXJuOwpA
QCAtNjgyLDcgKzY4Miw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2FuY2VsbGF0
aW8KIAogdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVs
dEhhbmRsaW5nKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCiB7Ci0g
ICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAgcmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVs
dEhhbmRsaW5nIiwgdGhpcyk7CisgICAgTE9HX1dJVEhfTEVWRUwoTmV0d29yaywgV1RGTG9nTGV2
ZWxWZXJib3NlLCAiSGFuZGxlICVwIHJlY2VpdmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1bHRIYW5k
bGluZyIsIHRoaXMpOwogCiAgICAgQVNTRVJUKCFjaGFsbGVuZ2UuaXNOdWxsKCkpOwogICAgIGlm
IChjaGFsbGVuZ2UgIT0gZC0+bV9jdXJyZW50V2ViQ2hhbGxlbmdlKQpAQCAtNjk1LDcgKzY5NSw3
IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkUmVxdWVzdFRvUGUKIAogdm9pZCBSZXNv
dXJjZUhhbmRsZTo6cmVjZWl2ZWRDaGFsbGVuZ2VSZWplY3Rpb24oY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKIHsKLSAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCBy
ZWNlaXZlZENoYWxsZW5nZVJlamVjdGlvbiIsIHRoaXMpOworICAgIExPR19XSVRIX0xFVkVMKE5l
dHdvcmssIFdURkxvZ0xldmVsVmVyYm9zZSwgIkhhbmRsZSAlcCByZWNlaXZlZENoYWxsZW5nZVJl
amVjdGlvbiIsIHRoaXMpOwogCiAgICAgQVNTRVJUKCFjaGFsbGVuZ2UuaXNOdWxsKCkpOwogICAg
IGlmIChjaGFsbGVuZ2UgIT0gZC0+bV9jdXJyZW50V2ViQ2hhbGxlbmdlKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxl
Z2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlLm1tCShyZXZpc2lvbiAxODI4NzQpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5k
bGVBc0RlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03MywxMiArNzMsMTIgQEAgLSAoTlNV
UkxSZXF1ZXN0ICopY29ubmVjdGlvbjooTlNVUkxDb25uZQogICAgIGlmICghcmVkaXJlY3RSZXNw
b25zZSkKICAgICAgICAgcmV0dXJuIG5ld1JlcXVlc3Q7CiAKLSNpZiAhTE9HX0RJU0FCTEVECi0g
ICAgaWYgKFtyZWRpcmVjdFJlc3BvbnNlIGlzS2luZE9mQ2xhc3M6W05TSFRUUFVSTFJlc3BvbnNl
IGNsYXNzXV0pCi0gICAgICAgIExPRyhOZXR3b3JrLCAiSGFuZGxlICVwIGRlbGVnYXRlIGNvbm5l
Y3Rpb246JXAgd2lsbFNlbmRSZXF1ZXN0OiVAIHJlZGlyZWN0UmVzcG9uc2U6JWQsIExvY2F0aW9u
OjwlQD4iLCBtX2hhbmRsZSwgY29ubmVjdGlvbiwgW25ld1JlcXVlc3QgZGVzY3JpcHRpb25dLCBz
dGF0aWNfY2FzdDxpbnQ+KFsoaWQpcmVkaXJlY3RSZXNwb25zZSBzdGF0dXNDb2RlXSksIFtbKGlk
KXJlZGlyZWN0UmVzcG9uc2UgYWxsSGVhZGVyRmllbGRzXSBvYmplY3RGb3JLZXk6QCJMb2NhdGlv
biJdKTsKLSAgICBlbHNlCi0gICAgICAgIExPRyhOZXR3b3JrLCAiSGFuZGxlICVwIGRlbGVnYXRl
IGNvbm5lY3Rpb246JXAgd2lsbFNlbmRSZXF1ZXN0OiVAIHJlZGlyZWN0UmVzcG9uc2U6bm9uLUhU
VFAiLCBtX2hhbmRsZSwgY29ubmVjdGlvbiwgW25ld1JlcXVlc3QgZGVzY3JpcHRpb25dKTsgCi0j
ZW5kaWYKKyAgICBpZiAoTE9HX0xFVkVMX0VOQUJMRUQoTmV0d29yaywgV1RGTG9nTGV2ZWxWZXJi
b3NlKSkgeworICAgICAgICBpZiAoW3JlZGlyZWN0UmVzcG9uc2UgaXNLaW5kT2ZDbGFzczpbTlNI
VFRQVVJMUmVzcG9uc2UgY2xhc3NdXSkKKyAgICAgICAgICAgIExPR19XSVRIX0xFVkVMKE5ldHdv
cmssIFdURkxvZ0xldmVsVmVyYm9zZSwgIkhhbmRsZSAlcCBkZWxlZ2F0ZSBjb25uZWN0aW9uOiVw
IHdpbGxTZW5kUmVxdWVzdDolQCByZWRpcmVjdFJlc3BvbnNlOiVkLCBMb2NhdGlvbjo8JUA+Iiwg
bV9oYW5kbGUsIGNvbm5lY3Rpb24sIFtuZXdSZXF1ZXN0IGRlc2NyaXB0aW9uXSwgc3RhdGljX2Nh
c3Q8aW50PihbKGlkKXJlZGlyZWN0UmVzcG9uc2Ugc3RhdHVzQ29kZV0pLCBbWyhpZClyZWRpcmVj
dFJlc3BvbnNlIGFsbEhlYWRlckZpZWxkc10gb2JqZWN0Rm9yS2V5OkAiTG9jYXRpb24iXSk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIExPR19XSVRIX0xFVkVMKE5ldHdvcmssIFdURkxvZ0xl
dmVsVmVyYm9zZSwgIkhhbmRsZSAlcCBkZWxlZ2F0ZSBjb25uZWN0aW9uOiVwIHdpbGxTZW5kUmVx
dWVzdDolQCByZWRpcmVjdFJlc3BvbnNlOm5vbi1IVFRQIiwgbV9oYW5kbGUsIGNvbm5lY3Rpb24s
IFtuZXdSZXF1ZXN0IGRlc2NyaXB0aW9uXSk7CisgICAgfQogCiAgICAgUmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QgPSBuZXdSZXF1ZXN0OwogCkBAIC05MSw3ICs5MSw3IEBAIC0gKEJPT0wpY29ubmVj
dGlvblNob3VsZFVzZUNyZWRlbnRpYWxTdG8KIHsKICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlv
bik7CiAKLSAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCBkZWxlZ2F0ZSBjb25uZWN0aW9uU2hv
dWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2U6JXAiLCBtX2hhbmRsZSwgY29ubmVjdGlvbik7CisgICAg
TE9HX1dJVEhfTEVWRUwoTmV0d29yaywgV1RGTG9nTGV2ZWxWZXJib3NlLCAiSGFuZGxlICVwIGRl
bGVnYXRlIGNvbm5lY3Rpb25TaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZTolcCIsIG1faGFuZGxl
LCBjb25uZWN0aW9uKTsKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICByZXR1cm4gTk87CkBAIC0x
MDcsNyArMTA3LDcgQEAgLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljbwog
ewogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKIAotICAgIExPRyhOZXR3b3JrLCAiSGFu
ZGxlICVwIGRlbGVnYXRlIGNvbm5lY3Rpb246JXAgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOiVwIiwgbV9oYW5kbGUsIGNvbm5lY3Rpb24sIGNoYWxsZW5nZSk7CisgICAgTE9HX1dJ
VEhfTEVWRUwoTmV0d29yaywgV1RGTG9nTGV2ZWxWZXJib3NlLCAiSGFuZGxlICVwIGRlbGVnYXRl
IGNvbm5lY3Rpb246JXAgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOiVwIiwgbV9o
YW5kbGUsIGNvbm5lY3Rpb24sIGNoYWxsZW5nZSk7CiAKICAgICBpZiAoIW1faGFuZGxlKSB7CiAg
ICAgICAgIFtbY2hhbGxlbmdlIHNlbmRlcl0gY2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
Y2hhbGxlbmdlXTsKQEAgLTEyMiw3ICsxMjIsNyBAQCAtICh2b2lkKWNvbm5lY3Rpb246KE5TVVJM
Q29ubmVjdGlvbiAqKWNvCiAKICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAKLSAgICBM
T0coTmV0d29yaywgIkhhbmRsZSAlcCBkZWxlZ2F0ZSBjb25uZWN0aW9uOiVwIGRpZENhbmNlbEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOiVwIiwgbV9oYW5kbGUsIGNvbm5lY3Rpb24sIGNoYWxsZW5n
ZSk7CisgICAgTE9HX1dJVEhfTEVWRUwoTmV0d29yaywgV1RGTG9nTGV2ZWxWZXJib3NlLCAiSGFu
ZGxlICVwIGRlbGVnYXRlIGNvbm5lY3Rpb246JXAgZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6JXAiLCBtX2hhbmRsZSwgY29ubmVjdGlvbiwgY2hhbGxlbmdlKTsKIAogICAgIGlmICgh
bV9oYW5kbGUpCiAgICAgICAgIHJldHVybjsKQEAgLTEzNCw3ICsxMzQsNyBAQCAtIChCT09MKWNv
bm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvCiB7CiAgICAgVU5VU0VEX1BBUkFNKGNvbm5l
Y3Rpb24pOwogCi0gICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAgZGVsZWdhdGUgY29ubmVjdGlv
bjolcCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlOiVAOi8vJUA6JXUgcmVh
bG06JUAgbWV0aG9kOiVAICVAJUAiLCBtX2hhbmRsZSwgY29ubmVjdGlvbiwgW3Byb3RlY3Rpb25T
cGFjZSBwcm90b2NvbF0sIFtwcm90ZWN0aW9uU3BhY2UgaG9zdF0sIFtwcm90ZWN0aW9uU3BhY2Ug
cG9ydF0sIFtwcm90ZWN0aW9uU3BhY2UgcmVhbG1dLCBbcHJvdGVjdGlvblNwYWNlIGF1dGhlbnRp
Y2F0aW9uTWV0aG9kXSwgW3Byb3RlY3Rpb25TcGFjZSBpc1Byb3h5XSA/IEAicHJveHk6IiA6IEAi
IiwgW3Byb3RlY3Rpb25TcGFjZSBpc1Byb3h5XSA/IFtwcm90ZWN0aW9uU3BhY2UgcHJveHlUeXBl
XSA6IEAiIik7CisgICAgTE9HX1dJVEhfTEVWRUwoTmV0d29yaywgV1RGTG9nTGV2ZWxWZXJib3Nl
LCAiSGFuZGxlICVwIGRlbGVnYXRlIGNvbm5lY3Rpb246JXAgY2FuQXV0aGVudGljYXRlQWdhaW5z
dFByb3RlY3Rpb25TcGFjZTolQDovLyVAOiV1IHJlYWxtOiVAIG1ldGhvZDolQCAlQCVAIiwgbV9o
YW5kbGUsIGNvbm5lY3Rpb24sIFtwcm90ZWN0aW9uU3BhY2UgcHJvdG9jb2xdLCBbcHJvdGVjdGlv
blNwYWNlIGhvc3RdLCBbcHJvdGVjdGlvblNwYWNlIHBvcnRdLCBbcHJvdGVjdGlvblNwYWNlIHJl
YWxtXSwgW3Byb3RlY3Rpb25TcGFjZSBhdXRoZW50aWNhdGlvbk1ldGhvZF0sIFtwcm90ZWN0aW9u
U3BhY2UgaXNQcm94eV0gPyBAInByb3h5OiIgOiBAIiIsIFtwcm90ZWN0aW9uU3BhY2UgaXNQcm94
eV0gPyBbcHJvdGVjdGlvblNwYWNlIHByb3h5VHlwZV0gOiBAIiIpOwogCiAgICAgaWYgKCFtX2hh
bmRsZSkKICAgICAgICAgcmV0dXJuIE5POwpAQCAtMTQ5LDcgKzE0OSw3IEBAIC0gKHZvaWQpY29u
bmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY28KICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlv
bik7CiAjZW5kaWYKIAotICAgIExPRyhOZXR3b3JrLCAiSGFuZGxlICVwIGRlbGVnYXRlIGNvbm5l
Y3Rpb246JXAgZGlkUmVjZWl2ZVJlc3BvbnNlOiVwIChIVFRQIHN0YXR1cyAlZCwgcmVwb3J0ZWQg
TUlNRVR5cGUgJyVzJykiLCBtX2hhbmRsZSwgY29ubmVjdGlvbiwgciwgW3IgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihzdGF0dXNDb2RlKV0gPyBbKGlkKXIgc3RhdHVzQ29kZV0gOiAwLCBb
W3IgTUlNRVR5cGVdIFVURjhTdHJpbmddKTsKKyAgICBMT0dfV0lUSF9MRVZFTChOZXR3b3JrLCBX
VEZMb2dMZXZlbFZlcmJvc2UsICJIYW5kbGUgJXAgZGVsZWdhdGUgY29ubmVjdGlvbjolcCBkaWRS
ZWNlaXZlUmVzcG9uc2U6JXAgKEhUVFAgc3RhdHVzICVkLCByZXBvcnRlZCBNSU1FVHlwZSAnJXMn
KSIsIG1faGFuZGxlLCBjb25uZWN0aW9uLCByLCBbciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKHN0YXR1c0NvZGUpXSA/IFsoaWQpciBzdGF0dXNDb2RlXSA6IDAsIFtbciBNSU1FVHlwZV0g
VVRGOFN0cmluZ10pOwogCiAgICAgaWYgKCFtX2hhbmRsZSB8fCAhbV9oYW5kbGUtPmNsaWVudCgp
KQogICAgICAgICByZXR1cm47CkBAIC0xODQsNyArMTg0LDcgQEAgLSAodm9pZCljb25uZWN0aW9u
OihOU1VSTENvbm5lY3Rpb24gKiljbwogLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rp
b24gKiljb25uZWN0aW9uIGRpZFJlY2VpdmVEYXRhQXJyYXk6KE5TQXJyYXkgKilkYXRhQXJyYXkK
IHsKICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7Ci0gICAgTE9HKE5ldHdvcmssICJIYW5k
bGUgJXAgZGVsZWdhdGUgY29ubmVjdGlvbjolcCBkaWRSZWNlaXZlRGF0YUFycmF5OiVwIGFycmF5
U2l6ZTolZCIsIG1faGFuZGxlLCBjb25uZWN0aW9uLCBkYXRhQXJyYXksIFtkYXRhQXJyYXkgY291
bnRdKTsKKyAgICBMT0dfV0lUSF9MRVZFTChOZXR3b3JrLCBXVEZMb2dMZXZlbFZlcmJvc2UsICJI
YW5kbGUgJXAgZGVsZWdhdGUgY29ubmVjdGlvbjolcCBkaWRSZWNlaXZlRGF0YUFycmF5OiVwIGFy
cmF5U2l6ZTolZCIsIG1faGFuZGxlLCBjb25uZWN0aW9uLCBkYXRhQXJyYXksIFtkYXRhQXJyYXkg
Y291bnRdKTsKIAogICAgIGlmICghZGF0YUFycmF5KQogICAgICAgICByZXR1cm47CkBAIC0yMDcs
NyArMjA3LDcgQEAgLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljbwogICAg
IFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKICAgICBVTlVTRURfUEFSQU0obGVuZ3RoUmVjZWl2
ZWQpOwogCi0gICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAgZGVsZWdhdGUgY29ubmVjdGlvbjol
cCBkaWRSZWNlaXZlRGF0YTolcCBsZW5ndGhSZWNlaXZlZDolbGxkIiwgbV9oYW5kbGUsIGNvbm5l
Y3Rpb24sIGRhdGEsIGxlbmd0aFJlY2VpdmVkKTsKKyAgICBMT0dfV0lUSF9MRVZFTChOZXR3b3Jr
LCBXVEZMb2dMZXZlbFZlcmJvc2UsICJIYW5kbGUgJXAgZGVsZWdhdGUgY29ubmVjdGlvbjolcCBk
aWRSZWNlaXZlRGF0YTolcCBsZW5ndGhSZWNlaXZlZDolbGxkIiwgbV9oYW5kbGUsIGNvbm5lY3Rp
b24sIGRhdGEsIGxlbmd0aFJlY2VpdmVkKTsKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBpZiAo
W2RhdGEgbGVuZ3RoXSA9PSAwKSAvLyA8cmRhcjovL3Byb2JsZW0vNTUzMjkzMT4KQEAgLTIzNiw3
ICsyMzYsNyBAQCAtICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvCiAgICAg
VU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwogICAgIFVOVVNFRF9QQVJBTShieXRlc1dyaXR0ZW4p
OwogCi0gICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAgZGVsZWdhdGUgY29ubmVjdGlvbjolcCBk
aWRTZW5kQm9keURhdGE6JWQgdG90YWxCeXRlc1dyaXR0ZW46JWQgdG90YWxCeXRlc0V4cGVjdGVk
VG9Xcml0ZTolZCIsIG1faGFuZGxlLCBjb25uZWN0aW9uLCBieXRlc1dyaXR0ZW4sIHRvdGFsQnl0
ZXNXcml0dGVuLCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKTsKKyAgICBMT0dfV0lUSF9MRVZF
TChOZXR3b3JrLCBXVEZMb2dMZXZlbFZlcmJvc2UsICJIYW5kbGUgJXAgZGVsZWdhdGUgY29ubmVj
dGlvbjolcCBkaWRTZW5kQm9keURhdGE6JWQgdG90YWxCeXRlc1dyaXR0ZW46JWQgdG90YWxCeXRl
c0V4cGVjdGVkVG9Xcml0ZTolZCIsIG1faGFuZGxlLCBjb25uZWN0aW9uLCBieXRlc1dyaXR0ZW4s
IHRvdGFsQnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKTsKIAogICAgIGlm
ICghbV9oYW5kbGUgfHwgIW1faGFuZGxlLT5jbGllbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MjQ3LDcgKzI0Nyw3IEBAIC0gKHZvaWQpY29ubmVjdGlvbkRpZEZpbmlzaExvYWRpbmc6KE5TVVIK
IHsKICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAKLSAgICBMT0coTmV0d29yaywgIkhh
bmRsZSAlcCBkZWxlZ2F0ZSBjb25uZWN0aW9uRGlkRmluaXNoTG9hZGluZzolcCIsIG1faGFuZGxl
LCBjb25uZWN0aW9uKTsKKyAgICBMT0dfV0lUSF9MRVZFTChOZXR3b3JrLCBXVEZMb2dMZXZlbFZl
cmJvc2UsICJIYW5kbGUgJXAgZGVsZWdhdGUgY29ubmVjdGlvbkRpZEZpbmlzaExvYWRpbmc6JXAi
LCBtX2hhbmRsZSwgY29ubmVjdGlvbik7CiAKICAgICBpZiAoIW1faGFuZGxlIHx8ICFtX2hhbmRs
ZS0+Y2xpZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI2NCw3ICsyNjQsNyBAQCAtICh2b2lk
KWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvCiB7CiAgICAgVU5VU0VEX1BBUkFNKGNv
bm5lY3Rpb24pOwogCi0gICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAgZGVsZWdhdGUgY29ubmVj
dGlvbjolcCBkaWRGYWlsV2l0aEVycm9yOiVAIiwgbV9oYW5kbGUsIGNvbm5lY3Rpb24sIGVycm9y
KTsKKyAgICBMT0dfV0lUSF9MRVZFTChOZXR3b3JrLCBXVEZMb2dMZXZlbFZlcmJvc2UsICJIYW5k
bGUgJXAgZGVsZWdhdGUgY29ubmVjdGlvbjolcCBkaWRGYWlsV2l0aEVycm9yOiVAIiwgbV9oYW5k
bGUsIGNvbm5lY3Rpb24sIGVycm9yKTsKIAogICAgIGlmICghbV9oYW5kbGUgfHwgIW1faGFuZGxl
LT5jbGllbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjgwLDcgKzI4MCw3IEBAIC0gKHZvaWQp
Y29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY28KIAogLSAoTlNDYWNoZWRVUkxSZXNwb25z
ZSAqKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gd2lsbENhY2hlUmVz
cG9uc2U6KE5TQ2FjaGVkVVJMUmVzcG9uc2UgKiljYWNoZWRSZXNwb25zZQogewotICAgIExPRyhO
ZXR3b3JrLCAiSGFuZGxlICVwIGRlbGVnYXRlIGNvbm5lY3Rpb246JXAgd2lsbENhY2hlUmVzcG9u
c2U6JXAiLCBtX2hhbmRsZSwgY29ubmVjdGlvbiwgY2FjaGVkUmVzcG9uc2UpOworICAgIExPR19X
SVRIX0xFVkVMKE5ldHdvcmssIFdURkxvZ0xldmVsVmVyYm9zZSwgIkhhbmRsZSAlcCBkZWxlZ2F0
ZSBjb25uZWN0aW9uOiVwIHdpbGxDYWNoZVJlc3BvbnNlOiVwIiwgbV9oYW5kbGUsIGNvbm5lY3Rp
b24sIGNhY2hlZFJlc3BvbnNlKTsKIAogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNl
SGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0
aW9uUXVldWVEZWxlZ2F0ZS5tbQkocmV2aXNpb24gMTgyODc0KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1
ZURlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksMTIgKzEwOSwxMiBAQCAtIChOU1VS
TFJlcXVlc3QgKiljb25uZWN0aW9uOihOU1VSTENvbm5lCiAgICAgaWYgKCFyZWRpcmVjdFJlc3Bv
bnNlKQogICAgICAgICByZXR1cm4gbmV3UmVxdWVzdDsKIAotI2lmICFMT0dfRElTQUJMRUQKLSAg
ICBpZiAoW3JlZGlyZWN0UmVzcG9uc2UgaXNLaW5kT2ZDbGFzczpbTlNIVFRQVVJMUmVzcG9uc2Ug
Y2xhc3NdXSkKLSAgICAgICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAgZGVsZWdhdGUgY29ubmVj
dGlvbjolcCB3aWxsU2VuZFJlcXVlc3Q6JUAgcmVkaXJlY3RSZXNwb25zZTolZCwgTG9jYXRpb246
PCVAPiIsIG1faGFuZGxlLCBjb25uZWN0aW9uLCBbbmV3UmVxdWVzdCBkZXNjcmlwdGlvbl0sIHN0
YXRpY19jYXN0PGludD4oWyhpZClyZWRpcmVjdFJlc3BvbnNlIHN0YXR1c0NvZGVdKSwgW1soaWQp
cmVkaXJlY3RSZXNwb25zZSBhbGxIZWFkZXJGaWVsZHNdIG9iamVjdEZvcktleTpAIkxvY2F0aW9u
Il0pOwotICAgIGVsc2UKLSAgICAgICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAgZGVsZWdhdGUg
Y29ubmVjdGlvbjolcCB3aWxsU2VuZFJlcXVlc3Q6JUAgcmVkaXJlY3RSZXNwb25zZTpub24tSFRU
UCIsIG1faGFuZGxlLCBjb25uZWN0aW9uLCBbbmV3UmVxdWVzdCBkZXNjcmlwdGlvbl0pOyAKLSNl
bmRpZgorICAgIGlmIChMT0dfTEVWRUxfRU5BQkxFRChOZXR3b3JrLCBXVEZMb2dMZXZlbFZlcmJv
c2UpKSB7CisgICAgICAgIGlmIChbcmVkaXJlY3RSZXNwb25zZSBpc0tpbmRPZkNsYXNzOltOU0hU
VFBVUkxSZXNwb25zZSBjbGFzc11dKQorICAgICAgICAgICAgTE9HX1dJVEhfTEVWRUwoTmV0d29y
aywgV1RGTG9nTGV2ZWxWZXJib3NlLCAiSGFuZGxlICVwIGRlbGVnYXRlIGNvbm5lY3Rpb246JXAg
d2lsbFNlbmRSZXF1ZXN0OiVAIHJlZGlyZWN0UmVzcG9uc2U6JWQsIExvY2F0aW9uOjwlQD4iLCBt
X2hhbmRsZSwgY29ubmVjdGlvbiwgW25ld1JlcXVlc3QgZGVzY3JpcHRpb25dLCBzdGF0aWNfY2Fz
dDxpbnQ+KFsoaWQpcmVkaXJlY3RSZXNwb25zZSBzdGF0dXNDb2RlXSksIFtbKGlkKXJlZGlyZWN0
UmVzcG9uc2UgYWxsSGVhZGVyRmllbGRzXSBvYmplY3RGb3JLZXk6QCJMb2NhdGlvbiJdKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgTE9HX1dJVEhfTEVWRUwoTmV0d29yaywgV1RGTG9nTGV2
ZWxWZXJib3NlLCAiSGFuZGxlICVwIGRlbGVnYXRlIGNvbm5lY3Rpb246JXAgd2lsbFNlbmRSZXF1
ZXN0OiVAIHJlZGlyZWN0UmVzcG9uc2U6bm9uLUhUVFAiLCBtX2hhbmRsZSwgY29ubmVjdGlvbiwg
W25ld1JlcXVlc3QgZGVzY3JpcHRpb25dKTsKKyAgICB9CiAKICAgICBSZXRhaW5QdHI8aWQ+IHBy
b3RlY3RvcihzZWxmKTsKIApAQCAtMTM5LDcgKzEzOSw3IEBAIC0gKHZvaWQpY29ubmVjdGlvbjoo
TlNVUkxDb25uZWN0aW9uICopY28KICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBV
TlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAKLSAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCBk
ZWxlZ2F0ZSBjb25uZWN0aW9uOiVwIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTol
cCIsIG1faGFuZGxlLCBjb25uZWN0aW9uLCBjaGFsbGVuZ2UpOworICAgIExPR19XSVRIX0xFVkVM
KE5ldHdvcmssIFdURkxvZ0xldmVsVmVyYm9zZSwgIkhhbmRsZSAlcCBkZWxlZ2F0ZSBjb25uZWN0
aW9uOiVwIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTolcCIsIG1faGFuZGxlLCBj
b25uZWN0aW9uLCBjaGFsbGVuZ2UpOwogCiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSwgXnsKICAgICAgICAgaWYgKCFtX2hhbmRsZSkgewpAQCAtMTU3LDcgKzE1
Nyw3IEBAIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY28KICAgICBBU1NF
UlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAKLSAg
ICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCBkZWxlZ2F0ZSBjb25uZWN0aW9uOiVwIGRpZENhbmNl
bEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOiVwIiwgbV9oYW5kbGUsIGNvbm5lY3Rpb24sIGNoYWxs
ZW5nZSk7CisgICAgTE9HX1dJVEhfTEVWRUwoTmV0d29yaywgV1RGTG9nTGV2ZWxWZXJib3NlLCAi
SGFuZGxlICVwIGRlbGVnYXRlIGNvbm5lY3Rpb246JXAgZGlkQ2FuY2VsQXV0aGVudGljYXRpb25D
aGFsbGVuZ2U6JXAiLCBtX2hhbmRsZSwgY29ubmVjdGlvbiwgY2hhbGxlbmdlKTsKIAogICAgIGRp
c3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CiAgICAgICAgIGlmICgh
bV9oYW5kbGUpCkBAIC0xNzIsNyArMTcyLDcgQEAgLSAoQk9PTCljb25uZWN0aW9uOihOU1VSTENv
bm5lY3Rpb24gKiljbwogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIFVOVVNFRF9Q
QVJBTShjb25uZWN0aW9uKTsKIAotICAgIExPRyhOZXR3b3JrLCAiSGFuZGxlICVwIGRlbGVnYXRl
IGNvbm5lY3Rpb246JXAgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZTolQDov
LyVAOiV1IHJlYWxtOiVAIG1ldGhvZDolQCAlQCVAIiwgbV9oYW5kbGUsIGNvbm5lY3Rpb24sIFtw
cm90ZWN0aW9uU3BhY2UgcHJvdG9jb2xdLCBbcHJvdGVjdGlvblNwYWNlIGhvc3RdLCBbcHJvdGVj
dGlvblNwYWNlIHBvcnRdLCBbcHJvdGVjdGlvblNwYWNlIHJlYWxtXSwgW3Byb3RlY3Rpb25TcGFj
ZSBhdXRoZW50aWNhdGlvbk1ldGhvZF0sIFtwcm90ZWN0aW9uU3BhY2UgaXNQcm94eV0gPyBAInBy
b3h5OiIgOiBAIiIsIFtwcm90ZWN0aW9uU3BhY2UgaXNQcm94eV0gPyBbcHJvdGVjdGlvblNwYWNl
IHByb3h5VHlwZV0gOiBAIiIpOworICAgIExPR19XSVRIX0xFVkVMKE5ldHdvcmssIFdURkxvZ0xl
dmVsVmVyYm9zZSwgIkhhbmRsZSAlcCBkZWxlZ2F0ZSBjb25uZWN0aW9uOiVwIGNhbkF1dGhlbnRp
Y2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2U6JUA6Ly8lQDoldSByZWFsbTolQCBtZXRob2Q6JUAg
JUAlQCIsIG1faGFuZGxlLCBjb25uZWN0aW9uLCBbcHJvdGVjdGlvblNwYWNlIHByb3RvY29sXSwg
W3Byb3RlY3Rpb25TcGFjZSBob3N0XSwgW3Byb3RlY3Rpb25TcGFjZSBwb3J0XSwgW3Byb3RlY3Rp
b25TcGFjZSByZWFsbV0sIFtwcm90ZWN0aW9uU3BhY2UgYXV0aGVudGljYXRpb25NZXRob2RdLCBb
cHJvdGVjdGlvblNwYWNlIGlzUHJveHldID8gQCJwcm94eToiIDogQCIiLCBbcHJvdGVjdGlvblNw
YWNlIGlzUHJveHldID8gW3Byb3RlY3Rpb25TcGFjZSBwcm94eVR5cGVdIDogQCIiKTsKIAogICAg
IFJldGFpblB0cjxpZD4gcHJvdGVjdG9yKHNlbGYpOwogCkBAIC0xOTQsNyArMTk0LDcgQEAgLSAo
dm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljbwogewogICAgIEFTU0VSVCghaXNN
YWluVGhyZWFkKCkpOwogCi0gICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAgZGVsZWdhdGUgY29u
bmVjdGlvbjolcCBkaWRSZWNlaXZlUmVzcG9uc2U6JXAgKEhUVFAgc3RhdHVzICVkLCByZXBvcnRl
ZCBNSU1FVHlwZSAnJXMnKSIsIG1faGFuZGxlLCBjb25uZWN0aW9uLCByLCBbciByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKHN0YXR1c0NvZGUpXSA/IFsoaWQpciBzdGF0dXNDb2RlXSA6IDAs
IFtbciBNSU1FVHlwZV0gVVRGOFN0cmluZ10pOworICAgIExPR19XSVRIX0xFVkVMKE5ldHdvcmss
IFdURkxvZ0xldmVsVmVyYm9zZSwgIkhhbmRsZSAlcCBkZWxlZ2F0ZSBjb25uZWN0aW9uOiVwIGRp
ZFJlY2VpdmVSZXNwb25zZTolcCAoSFRUUCBzdGF0dXMgJWQsIHJlcG9ydGVkIE1JTUVUeXBlICcl
cycpIiwgbV9oYW5kbGUsIGNvbm5lY3Rpb24sIHIsIFtyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3Ioc3RhdHVzQ29kZSldID8gWyhpZClyIHN0YXR1c0NvZGVdIDogMCwgW1tyIE1JTUVUeXBl
XSBVVEY4U3RyaW5nXSk7CiAKICAgICBSZXRhaW5QdHI8aWQ+IHByb3RlY3RvcihzZWxmKTsKIApA
QCAtMjMwLDcgKzIzMCw3IEBAIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICop
Y28KICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBVTlVTRURfUEFSQU0oY29ubmVj
dGlvbik7CiAKLSAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCBkZWxlZ2F0ZSBjb25uZWN0aW9u
OiVwIGRpZFJlY2VpdmVEYXRhQXJyYXk6JXAgYXJyYXlTaXplOiVkIiwgbV9oYW5kbGUsIGNvbm5l
Y3Rpb24sIGRhdGFBcnJheSwgW2RhdGFBcnJheSBjb3VudF0pOworICAgIExPR19XSVRIX0xFVkVM
KE5ldHdvcmssIFdURkxvZ0xldmVsVmVyYm9zZSwgIkhhbmRsZSAlcCBkZWxlZ2F0ZSBjb25uZWN0
aW9uOiVwIGRpZFJlY2VpdmVEYXRhQXJyYXk6JXAgYXJyYXlTaXplOiVkIiwgbV9oYW5kbGUsIGNv
bm5lY3Rpb24sIGRhdGFBcnJheSwgW2RhdGFBcnJheSBjb3VudF0pOwogCiAgICAgZGlzcGF0Y2hf
YXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKICAgICAgICAgaWYgKCFkYXRhQXJy
YXkpCkBAIC0yNTEsNyArMjUxLDcgQEAgLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rp
b24gKiljbwogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKICAgICBVTlVTRURfUEFSQU0o
bGVuZ3RoUmVjZWl2ZWQpOwogCi0gICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAgZGVsZWdhdGUg
Y29ubmVjdGlvbjolcCBkaWRSZWNlaXZlRGF0YTolcCBsZW5ndGhSZWNlaXZlZDolbGxkIiwgbV9o
YW5kbGUsIGNvbm5lY3Rpb24sIGRhdGEsIGxlbmd0aFJlY2VpdmVkKTsKKyAgICBMT0dfV0lUSF9M
RVZFTChOZXR3b3JrLCBXVEZMb2dMZXZlbFZlcmJvc2UsICJIYW5kbGUgJXAgZGVsZWdhdGUgY29u
bmVjdGlvbjolcCBkaWRSZWNlaXZlRGF0YTolcCBsZW5ndGhSZWNlaXZlZDolbGxkIiwgbV9oYW5k
bGUsIGNvbm5lY3Rpb24sIGRhdGEsIGxlbmd0aFJlY2VpdmVkKTsKIAogICAgIGRpc3BhdGNoX2Fz
eW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CiAgICAgICAgIGlmICghbV9oYW5kbGUg
fHwgIW1faGFuZGxlLT5jbGllbnQoKSkKQEAgLTI3Myw3ICsyNzMsNyBAQCAtICh2b2lkKWNvbm5l
Y3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvCiAgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24p
OwogICAgIFVOVVNFRF9QQVJBTShieXRlc1dyaXR0ZW4pOwogCi0gICAgTE9HKE5ldHdvcmssICJI
YW5kbGUgJXAgZGVsZWdhdGUgY29ubmVjdGlvbjolcCBkaWRTZW5kQm9keURhdGE6JWQgdG90YWxC
eXRlc1dyaXR0ZW46JWQgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTolZCIsIG1faGFuZGxlLCBj
b25uZWN0aW9uLCBieXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzRXhw
ZWN0ZWRUb1dyaXRlKTsKKyAgICBMT0dfV0lUSF9MRVZFTChOZXR3b3JrLCBXVEZMb2dMZXZlbFZl
cmJvc2UsICJIYW5kbGUgJXAgZGVsZWdhdGUgY29ubmVjdGlvbjolcCBkaWRTZW5kQm9keURhdGE6
JWQgdG90YWxCeXRlc1dyaXR0ZW46JWQgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTolZCIsIG1f
aGFuZGxlLCBjb25uZWN0aW9uLCBieXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNXcml0dGVuLCB0b3Rh
bEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKTsKIAogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCksIF57CiAgICAgICAgIGlmICghbV9oYW5kbGUgfHwgIW1faGFuZGxlLT5j
bGllbnQoKSkKQEAgLTI4Nyw3ICsyODcsNyBAQCAtICh2b2lkKWNvbm5lY3Rpb25EaWRGaW5pc2hM
b2FkaW5nOihOU1VSCiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgVU5VU0VEX1BB
UkFNKGNvbm5lY3Rpb24pOwogCi0gICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAgZGVsZWdhdGUg
Y29ubmVjdGlvbkRpZEZpbmlzaExvYWRpbmc6JXAiLCBtX2hhbmRsZSwgY29ubmVjdGlvbik7Cisg
ICAgTE9HX1dJVEhfTEVWRUwoTmV0d29yaywgV1RGTG9nTGV2ZWxWZXJib3NlLCAiSGFuZGxlICVw
IGRlbGVnYXRlIGNvbm5lY3Rpb25EaWRGaW5pc2hMb2FkaW5nOiVwIiwgbV9oYW5kbGUsIGNvbm5l
Y3Rpb24pOwogCiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
XnsKICAgICAgICAgaWYgKCFtX2hhbmRsZSB8fCAhbV9oYW5kbGUtPmNsaWVudCgpKQpAQCAtMzAy
LDcgKzMwMiw3IEBAIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY28KICAg
ICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7
CiAKLSAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCBkZWxlZ2F0ZSBjb25uZWN0aW9uOiVwIGRp
ZEZhaWxXaXRoRXJyb3I6JUAiLCBtX2hhbmRsZSwgY29ubmVjdGlvbiwgZXJyb3IpOworICAgIExP
R19XSVRIX0xFVkVMKE5ldHdvcmssIFdURkxvZ0xldmVsVmVyYm9zZSwgIkhhbmRsZSAlcCBkZWxl
Z2F0ZSBjb25uZWN0aW9uOiVwIGRpZEZhaWxXaXRoRXJyb3I6JUAiLCBtX2hhbmRsZSwgY29ubmVj
dGlvbiwgZXJyb3IpOwogCiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSwgXnsKICAgICAgICAgaWYgKCFtX2hhbmRsZSB8fCAhbV9oYW5kbGUtPmNsaWVudCgpKQpA
QCAtMzE4LDcgKzMxOCw3IEBAIC0gKE5TQ2FjaGVkVVJMUmVzcG9uc2UgKiljb25uZWN0aW9uOihO
U1UKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBVTlVTRURfUEFSQU0oY29ubmVj
dGlvbik7CiAKLSAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCBkZWxlZ2F0ZSBjb25uZWN0aW9u
OiVwIHdpbGxDYWNoZVJlc3BvbnNlOiVwIiwgbV9oYW5kbGUsIGNvbm5lY3Rpb24sIGNhY2hlZFJl
c3BvbnNlKTsKKyAgICBMT0dfV0lUSF9MRVZFTChOZXR3b3JrLCBXVEZMb2dMZXZlbFZlcmJvc2Us
ICJIYW5kbGUgJXAgZGVsZWdhdGUgY29ubmVjdGlvbjolcCB3aWxsQ2FjaGVSZXNwb25zZTolcCIs
IG1faGFuZGxlLCBjb25uZWN0aW9uLCBjYWNoZWRSZXNwb25zZSk7CiAKICAgICBSZXRhaW5QdHI8
aWQ+IHByb3RlY3RvcihzZWxmKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAJKHJldmlzaW9uIDE4Mjg3NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNzEsNyArMjcxLDcgQEAgc3RydWN0IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6
T3ZlcmxhcEV4dAogI2lmICFMT0dfRElTQUJMRUQKIHN0YXRpYyBpbmxpbmUgYm9vbCBjb21wb3Np
dGluZ0xvZ0VuYWJsZWQoKQogewotICAgIHJldHVybiBMb2dDb21wb3NpdGluZy5zdGF0ZSA9PSBX
VEZMb2dDaGFubmVsT247CisgICAgcmV0dXJuIExvZ0NvbXBvc2l0aW5nLnN0YXRlICE9IFdURkxv
Z0xldmVsT2ZmOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4Mjk5NSkK
KysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMw
IEBACisyMDE1LTA0LTE5ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNv
bT4KKworICAgICAgICBNYWtlIFdURiBMb2dnaW5nIHJ1bnRpbWUgc3dpdGNoYWJsZSwgc3RhcnRp
bmcgd2l0aCBXZWJDb3JlJ3MgTmV0d29yayBjaGFubmVsCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM5MzgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHkgV1RGIGxvZ2dpbmcgb25seSB3b3Jr
cyBpbiBkZWJ1ZyBidWlsZHM7IGl0IHdvdWxkIGJlIHVzZWZ1bCBpZiBpdCBjb3VsZCBiZSBlbmFi
bGVkIGluCisgICAgICAgIHJlbGVhc2UgYnVpbGRzLiBMb2dnaW5nIHNob3VsZCBhbHNvIHN1cHBv
cnQgc2V2ZXJpdHkgbGV2ZWxzIHRvIGVuYWJsZSBkaWZmZXJlbnQgZ3JhbnVsYXJpdGllcworICAg
ICAgICAod2l0aCB0aGUgcG90ZW50aWFsIHRvIHZhcnkgZGVmYXVsdCB2ZXJib3NpdHkgYnkgc3lz
dGVtIGNhcGFiaWxpdGllcyBhbmQgYnVpbGQgc3R5bGUpLiBBZGRpbmcKKyAgICAgICAgbmV3IGxv
Z2dpbmcgbWFjcm8gdG8gc3VwcG9ydCBsZXZlbCAmIG1vdmluZyBjaGFubmVscyBpbmNyZW1lbnRh
bGx5LCBzaW5jZSBzb21lIGxvZ2dpbmcgbWF5IGJlCisgICAgICAgIGV4cGVuc2l2ZSBldmVuIHdo
ZW4gZGlzYWJsZWQuCisKKyAgICAgICAgV2ViS2l0MiBjaGFuZ2VzOgorICAgICAgICAgICAgLSBs
b2dnaW5nIGNoYW5uZWxzIHNob3VsZCBiZSBlbmFibGVkIGluIGFsbCBidWlsZHMuCisKKyAgICAg
ICAgKiBQbGF0Zm9ybS9Mb2dnaW5nLmNwcDoKKyAgICAgICAgICAgIC0gcmVtb3ZlZCBMT0dfRElT
QUJMRUQgLSBsb2dnaW5nIGNoYW5uZWxzIHNob3VsZCBiZSBlbmFibGVkIGluIGFsbCBidWlsZHMu
CisgICAgICAgICAgICAtIFdURkxvZ0NoYW5uZWxPbi9XVEZMb2dDaGFubmVsT2ZmIHJlbmFtZWQu
CisgICAgICAgICogUGxhdGZvcm0vTG9nZ2luZy5oOgorICAgICAgICAgICAgLSByZW1vdmVkIExP
R19ESVNBQkxFRCAtIGxvZ2dpbmcgY2hhbm5lbHMgc2hvdWxkIGJlIGVuYWJsZWQgaW4gYWxsIGJ1
aWxkcy4KKyAgICAgICAgKiBQbGF0Zm9ybS9mb3VuZGF0aW9uL0xvZ2dpbmdGb3VuZGF0aW9uLm1t
OgorICAgICAgICAgICAgLSByZW1vdmVkIExPR19ESVNBQkxFRCAtIGxvZ2dpbmcgY2hhbm5lbHMg
c2hvdWxkIGJlIGVuYWJsZWQgaW4gYWxsIGJ1aWxkcy4KKyAgICAgICAgKiBTaGFyZWQvV2ViS2l0
MkluaXRpYWxpemUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbml0aWFsaXplV2ViS2l0Mik6Cisg
ICAgICAgICAgICAtIHJlbW92ZWQgTE9HX0RJU0FCTEVEIC0gbG9nZ2luZyBjaGFubmVscyBzaG91
bGQgYmUgZW5hYmxlZCBpbiBhbGwgYnVpbGRzLgorCiAyMDE1LTA0LTE4ICBTaW1vbiBGcmFzZXIg
IDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxODE2NTYp
OiBBbmltYXRlZCB0aWxlZCBsYXllcnMgYXJlIG1pc3NpbmcgY29udGVudApJbmRleDogU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vTG9nZ2luZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vTG9nZ2luZy5jcHAJKHJldmlzaW9uIDE4Mjg3NCkKKysrIFNvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0xvZ2dpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMiArMjksMTAg
QEAKIAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmICFMT0dfRElTQUJMRUQK
LQogbmFtZXNwYWNlIFdlYktpdCB7CiAKICNkZWZpbmUgREVGSU5FX0xPR19DSEFOTkVMKG5hbWUp
IFwKLSAgICBXVEZMb2dDaGFubmVsIEpPSU5fTE9HX0NIQU5ORUxfV0lUSF9QUkVGSVgoTE9HX0NI
QU5ORUxfUFJFRklYLCBuYW1lKSA9IHsgV1RGTG9nQ2hhbm5lbE9mZiwgI25hbWUgfTsKKyAgICBX
VEZMb2dDaGFubmVsIEpPSU5fTE9HX0NIQU5ORUxfV0lUSF9QUkVGSVgoTE9HX0NIQU5ORUxfUFJF
RklYLCBuYW1lKSA9IHsgV1RGTG9nTGV2ZWxPZmYsICNuYW1lIH07CiBXRUJLSVQyX0xPR19DSEFO
TkVMUyhERUZJTkVfTE9HX0NIQU5ORUwpCiAKICNkZWZpbmUgTE9HX0NIQU5ORUxfQUREUkVTUyhu
YW1lKSAgJkpPSU5fTE9HX0NIQU5ORUxfV0lUSF9QUkVGSVgoTE9HX0NIQU5ORUxfUFJFRklYLCBu
YW1lKSwKQEAgLTYwLDUgKzU4LDMgQEAgdm9pZCBpbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vz
c2FyeSgpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gIUxPR19ESVNB
QkxFRApJbmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm0vTG9nZ2luZy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0xvZ2dpbmcuaAkocmV2aXNpb24gMTgyODc0KQor
KysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0vTG9nZ2luZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw4ICsyOSw2IEBACiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmICFMT0dfRElTQUJMRUQKLQogI2lmbmRlZiBMT0dfQ0hB
Tk5FTF9QUkVGSVgKICNkZWZpbmUgTE9HX0NIQU5ORUxfUFJFRklYIFdlYktpdDJMb2cKICNlbmRp
ZgpAQCAtNjYsNiArNjQsNCBAQCBTdHJpbmcgbG9nTGV2ZWxTdHJpbmcoKTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyAhTE9HX0RJU0FCTEVECi0KICNlbmRpZiAvLyBMb2dn
aW5nX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2ZvdW5kYXRpb24vTG9nZ2luZ0Zv
dW5kYXRpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvUGxhdGZvcm0vZm91bmRh
dGlvbi9Mb2dnaW5nRm91bmRhdGlvbi5tbQkocmV2aXNpb24gMTgyODc0KQorKysgU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vZm91bmRhdGlvbi9Mb2dnaW5nRm91bmRhdGlvbi5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjgsOCArMjgsNiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotI2lmICFMT0df
RElTQUJMRUQKLQogc3RhdGljIE5TU3RyaW5nICogY29uc3QgZGVmYXVsdHNEb21haW4gPSBAIldl
YktpdDJMb2dnaW5nIjsKIAogU3RyaW5nIGxvZ0xldmVsU3RyaW5nKCkKQEAgLTM3LDYgKzM1LDQg
QEAgU3RyaW5nIGxvZ0xldmVsU3RyaW5nKCkKICAgICByZXR1cm4gW1tOU1VzZXJEZWZhdWx0cyBz
dGFuZGFyZFVzZXJEZWZhdWx0c10gc3RyaW5nRm9yS2V5OmRlZmF1bHRzRG9tYWluXTsKIH0KIAot
I2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYktpdDJJbml0aWFsaXplLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViS2l0MkluaXRpYWxpemUuY3BwCShyZXZpc2lvbiAxODI4NzQpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViS2l0MkluaXRpYWxpemUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
NCwxMCArNTQsOCBAQCB2b2lkIEluaXRpYWxpemVXZWJLaXQyKCkKICAgICBXVEY6OmluaXRpYWxp
emVNYWluVGhyZWFkKCk7CiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CiAK
LSNpZiAhTE9HX0RJU0FCTEVECiAgICAgV2ViQ29yZTo6aW5pdGlhbGl6ZUxvZ2dpbmdDaGFubmVs
c0lmTmVjZXNzYXJ5KCk7CiAgICAgV2ViS2l0Ojppbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vz
c2FyeSgpOwotI2VuZGlmIC8vICFMT0dfRElTQUJMRUQKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpbkRlYnVnLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5EZWJ1Zy5oCShyZXZpc2lv
biAxODI4NzQpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpbkRlYnVnLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDggKzMwLDggQEAKICNpbmNsdWRlICJucHJ1bnRpbWVfaW50ZXJu
YWwuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKLSNkZWZpbmUgTE9HX05QRVJS
T1IoZXJyKSBpZiAoZXJyICE9IE5QRVJSX05PX0VSUk9SKSBMT0dfVkVSQk9TRShQbHVnaW5zLCAi
JXNcbiIsIHByZXR0eU5hbWVGb3JOUEVycm9yKGVycikpCi0jZGVmaW5lIExPR19QTFVHSU5fTkVU
X0VSUk9SKCkgTE9HX1ZFUkJPU0UoUGx1Z2lucywgIlN0cmVhbSBmYWlsZWQgZHVlIHRvIHByb2Js
ZW1zIHdpdGggbmV0d29yaywgZGlzayBJL08sIGxhY2sgb2YgbWVtb3J5LCBvciBvdGhlciBwcm9i
bGVtcy5cbiIpCisjZGVmaW5lIExPR19OUEVSUk9SKGVycikgaWYgKGVyciAhPSBOUEVSUl9OT19F
UlJPUikgTE9HX1dJVEhfTElORV9OVU1CRVIoUGx1Z2lucywgIiVzXG4iLCBwcmV0dHlOYW1lRm9y
TlBFcnJvcihlcnIpKQorI2RlZmluZSBMT0dfUExVR0lOX05FVF9FUlJPUigpIExPR19XSVRIX0xJ
TkVfTlVNQkVSKFBsdWdpbnMsICJTdHJlYW0gZmFpbGVkIGR1ZSB0byBwcm9ibGVtcyB3aXRoIG5l
dHdvcmssIGRpc2sgSS9PLCBsYWNrIG9mIG1lbW9yeSwgb3Igb3RoZXIgcHJvYmxlbXMuXG4iKQog
CiAjaWYgIUxPR19ESVNBQkxFRAogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>