<?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>232052</bug_id>
          
          <creation_ts>2021-10-20 15:29:18 -0700</creation_ts>
          <short_desc>[JSC][32bit] Re-enable compileEnumeratorGetByVal fast path</short_desc>
          <delta_ts>2021-10-23 12:20:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mikhail R. Gadelha">mikhail</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1806890</commentid>
    <comment_count>0</comment_count>
    <who name="Mikhail R. Gadelha">mikhail</who>
    <bug_when>2021-10-20 15:29:18 -0700</bug_when>
    <thetext>[JSC][32bit] Re-enable compileEnumeratorGetByVal fast path</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806892</commentid>
    <comment_count>1</comment_count>
      <attachid>441949</attachid>
    <who name="Mikhail R. Gadelha">mikhail</who>
    <bug_when>2021-10-20 15:33:13 -0700</bug_when>
    <thetext>Created attachment 441949
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807110</commentid>
    <comment_count>2</comment_count>
      <attachid>442013</attachid>
    <who name="Mikhail R. Gadelha">mikhail</who>
    <bug_when>2021-10-21 06:18:27 -0700</bug_when>
    <thetext>Created attachment 442013
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807123</commentid>
    <comment_count>3</comment_count>
      <attachid>442016</attachid>
    <who name="Mikhail R. Gadelha">mikhail</who>
    <bug_when>2021-10-21 07:11:05 -0700</bug_when>
    <thetext>Created attachment 442016
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807414</commentid>
    <comment_count>4</comment_count>
      <attachid>442016</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-21 16:05:09 -0700</bug_when>
    <thetext>Comment on attachment 442016
Patch

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

r- since the new code is not great compared to the current 64bit implementation.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:15891
&gt; +            flushRegisters();
&gt; +

This is regressing 64bit implementation from the current one.
Can you remove it?
If this is necessary for 32bit implementation, so please keep 32bit and 64bit implementations separated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807651</commentid>
    <comment_count>5</comment_count>
      <attachid>442158</attachid>
    <who name="Mikhail R. Gadelha">mikhail</who>
    <bug_when>2021-10-22 06:21:35 -0700</bug_when>
    <thetext>Created attachment 442158
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807777</commentid>
    <comment_count>6</comment_count>
      <attachid>442158</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-22 11:16:14 -0700</bug_when>
    <thetext>Comment on attachment 442158
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807796</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-22 11:31:57 -0700</bug_when>
    <thetext>Committed r284700 (243417@main): &lt;https://commits.webkit.org/243417@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 442158.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807797</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-22 11:32:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/84557181&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808104</commentid>
    <comment_count>9</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2021-10-23 12:20:49 -0700</bug_when>
    <thetext>*** Bug 230189 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441949</attachid>
            <date>2021-10-20 15:33:13 -0700</date>
            <delta_ts>2021-10-21 06:18:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232052-20211020223311.patch</filename>
            <type>text/plain</type>
            <size>25168</size>
            <attacher name="Mikhail R. Gadelha">mikhail</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MzcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
NzY0YmM5OTc5NDVmYWY5YWE5N2IxZDNlNDZhOTgwOWQyNTMzNmY4Li41NzQwODU5YTgzMzQ3MmUw
Y2VjNmQxOGIwOTI4YWMxN2VjNDc0Yjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAyMS0xMC0yMCAgTWlraGFpbCBSLiBHYWRlbGhhICA8bWlraGFpbEBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtKU0NdWzMyYml0XSBSZS1lbmFibGUgY29tcGlsZUVudW1lcmF0
b3JHZXRCeVZhbCBmYXN0IHBhdGgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMjA1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
Mjk1NDMsIHRoZSBjb21waWxlRW51bWVyYXRvckdldEJ5VmFsCisgICAgICAgIGZhc3QgcGF0aCBo
YWQgdG8gYmUgZGlzYWJsZWQgaW4gMzIgYml0cyBkdWUgdG8gbm90IGhhdmluZyBlbm91Z2ggcmVn
aXN0ZXJzLgorICAgICAgICBUaGVyZSBhcmUgZW5vdWdoIHJlZ2lzdGVycyBhdmFpbGFibGUgbm93
LCBzbyB3ZSBjYW4gcmUtZW5hYmxlIHRoZSBmYXN0IHBhdGguCisKKyAgICAgICAgKiBkZmcvREZH
Rml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2Rl
KToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5o
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVFbnVtZXJhdG9yR2V0QnlWYWwpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbCk6IERlbGV0ZWQuCisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlRW51bWVyYXRvckdldEJ5VmFsKTogRGVsZXRlZC4KKwogMjAyMS0xMC0x
OCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFVz
ZSBVU0UoTEFSR0VfVFlQRURfQVJSQVkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcAppbmRleCA1NjZmNTM5ZGUxYTQ2MzRkZjZlOTUzZjdlMWVkMjJjMTRiOWFj
ZDNlLi5lMGRmZGQ1Nzc5MDMyMGZkMTg0MmI4OWMwZjZlZDNjOTU0MzEwYTg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTExMjQsOSArMTEyNCw2
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KLSNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAw
KSk7IC8vIFNwZWN1bGF0aW5nIGNlbGwgZHVlIHRvIHJlZ2lzdGVyIHByZXNzdXJlIG9uIDMyLWJp
dC4KLSNlbmRpZgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBBcnJh
eTo6Rm9yY2VFeGl0OgogICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggOTQ1MzUzNTZkZTk5YjQwMjQxYWY5ZTc2
MTBmNTU0NTQ3OTViMzljZS4uMDliZjA5NjY2YjY3M2E0ODc1NWY5NDkzMjMwMzkyY2IxZmM0NGM1
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0y
NTA3LDcgKzI1MDcsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRW51bWVy
YXRvck5leHRVcGRhdGVQcm9wZXJ0eU5hbWUsIEpTU3RyaW5nKiwgKAogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25FbnVtZXJhdG9yUmVj
b3Zlck5hbWVBbmRHZXRCeVZhbCwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0NlbGwqIGJhc2UsIHVpbnQzMl90IGluZGV4LCBKU1Byb3BlcnR5TmFtZUVu
dW1lcmF0b3IqIGVudW1lcmF0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bkVudW1lcmF0b3JSZWNvdmVyTmFtZUFuZEdldEJ5VmFsLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGJhc2VWYWx1ZSwgdWludDMy
X3QgaW5kZXgsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogZW51bWVyYXRvcikpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTI1MTgsNyArMjUxOCw4IEBAIEpTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25FbnVtZXJhdG9yUmVjb3Zlck5hbWVBbmRHZXRCeVZhbCwg
RW5jb2RlZEpTVmFsCiAgICAgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSA9IHN0cmluZy0+dG9J
ZGVudGlmaWVyKGdsb2JhbE9iamVjdCk7CiAgICAgLy8gVGhpcyBzaG91bGQgb25seSByZWFsbHkg
cmV0dXJuIGZvciBUZXJtaW5hdGlvbkV4Y2VwdGlvbiBzaW5jZSB3ZSBrbm93IHN0cmluZyBpcyBi
YWNrZWQgYnkgYSBVVUlELgogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0g
ICAgSlNPYmplY3QqIG9iamVjdCA9IGJhc2UtPnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAg
SlNWYWx1ZSBiYXNlID0gSlNWYWx1ZTo6ZGVjb2RlKGJhc2VWYWx1ZSk7CisgICAgSlNPYmplY3Qq
IG9iamVjdCA9IGJhc2UudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUob2JqZWN0LT5nZXQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCmluZGV4IDRmZDU3OTVkMmQy
YWU1MDQ3YmYxODhlNGNiMzcyMDhiZWU0YTFkYjMuLjY1ZjA0MDAzYzEwZDNiNDg0MDAxNmFkZjE4
YWQzODRhMjVhNDRmNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5oCkBAIC0xMTEsNyArMTExLDcgQEAgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25FbnVtZXJhdG9yTmV4dFVwZGF0ZUluZGV4QW5kTW9kZSwgRW5jb2RlZEpTVmEKIEpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRW51bWVyYXRvck5leHRVcGRhdGVQcm9wZXJ0eU5h
bWUsIEpTU3RyaW5nKiwgKEpTR2xvYmFsT2JqZWN0KiwgdWludDMyX3QsIGludDMyX3QsIEpTUHJv
cGVydHlOYW1lRW51bWVyYXRvciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uRW51bWVyYXRvckluQnlWYWwsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBF
bmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIHVpbnQzMl90LCBpbnQzMl90KSk7CiBKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkVudW1lcmF0b3JIYXNPd25Qcm9wZXJ0eSwg
RW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSwgdWludDMyX3QsIGludDMyX3QpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uRW51bWVyYXRvclJlY292ZXJOYW1lQW5kR2V0QnlWYWwsIEVuY29kZWRKU1ZhbHVl
LCAoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqLCB1aW50MzJfdCwgSlNQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25FbnVtZXJhdG9y
UmVjb3Zlck5hbWVBbmRHZXRCeVZhbCwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCos
IEVuY29kZWRKU1ZhbHVlLCB1aW50MzJfdCwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKikpOwog
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25FbnVtZXJhdG9yR2V0QnlWYWxHZW5l
cmljLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlLCB1aW50MzJfdCwgaW50MzJfdCwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
KikpOwogCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1JlZ2V4cFdpdGhM
YXN0SW5kZXgsIEpTQ2VsbCosIChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCosIEVuY29kZWRKU1Zh
bHVlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCmluZGV4IDc0OWVmNTQ2YWJmOWNkZmU3MDA1NDI3ODdlMDY1ZmU2NTE5NDlkOGUuLmM3Y2Jh
NjAzNzFjNzgwNGVhOThjMTc2YTA3NmE2OTE1MTliNzNhNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xNTg1NCw2ICsxNTg1NCwx
MjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1ha2VSb3BlKE5vZGUqIG5vZGUpCiAj
ZW5kaWYKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JHZXRCeVZh
bChOb2RlKiBub2RlKQoreworICAgIEVkZ2UgYmFzZUVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxk
KG5vZGUsIDApOworICAgIGF1dG8gZ2VuZXJhdGUgPSBbJl0gKEpTVmFsdWVSZWdzIGJhc2VSZWdz
KSB7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBkb25lQ2FzZXM7CisgICAgICAg
IEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdDsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0
UmVnczsKKyAgICAgICAgR1BSUmVnIGluZGV4R1BSOworICAgICAgICBHUFJSZWcgZW51bWVyYXRv
ckdQUjsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgYmFkU3RydWN0dXJlU2xvd1BhdGg7
CisKKyAgICAgICAgY29tcGlsZUdldEJ5VmFsKG5vZGUsIHNjb3BlZExhbWJkYTxzdGQ6OnR1cGxl
PEpTVmFsdWVSZWdzLCBEYXRhRm9ybWF0PihEYXRhRm9ybWF0KT4oWyZdIChEYXRhRm9ybWF0KSB7
CisgICAgICAgICAgICBFZGdlIHN0b3JhZ2VFZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChub2Rl
LCAyKTsKKyAgICAgICAgICAgIFN0b3JhZ2VPcGVyYW5kIHN0b3JhZ2U7CisgICAgICAgICAgICBp
ZiAoc3RvcmFnZUVkZ2UpCisgICAgICAgICAgICAgICAgc3RvcmFnZS5lbXBsYWNlKHRoaXMsIHN0
b3JhZ2VFZGdlKTsKKyAgICAgICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBpbmRl
eCh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDMpKTsKKyAgICAgICAgICAgIFNwZWN1
bGF0ZVN0cmljdEludDMyT3BlcmFuZCBtb2RlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9k
ZSwgNCkpOworICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZW51bWVyYXRvcih0aGlz
LCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDUpKTsKKworICAgICAgICAgICAgR1BSUmVnIG1v
ZGVHUFIgPSBtb2RlLmdwcigpOworICAgICAgICAgICAgaW5kZXhHUFIgPSBpbmRleC5ncHIoKTsK
KyAgICAgICAgICAgIGVudW1lcmF0b3JHUFIgPSBlbnVtZXJhdG9yLmdwcigpOworCisgICAgICAg
ICAgICBib29sIGhhdmVTdG9yYWdlID0gISFzdG9yYWdlRWRnZTsKKyAgICAgICAgICAgIEdQUlRl
bXBvcmFyeSBzdG9yYWdlVGVtcG9yYXJ5OworICAgICAgICAgICAgR1BSUmVnIHN0b3JhZ2VHUFI7
CisgICAgICAgICAgICBpZiAoIWhhdmVTdG9yYWdlKSB7CisgICAgICAgICAgICAgICAgc3RvcmFn
ZVRlbXBvcmFyeSA9IEdQUlRlbXBvcmFyeSh0aGlzLCBSZXVzZSwgZW51bWVyYXRvcik7CisgICAg
ICAgICAgICAgICAgc3RvcmFnZUdQUiA9IHN0b3JhZ2VUZW1wb3JhcnkuZ3ByKCk7CisgICAgICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsK
KworICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKworICAgICAgICAgICAgcmVzdWx0ID0g
SlNWYWx1ZVJlZ3NUZW1wb3JhcnkodGhpcyk7CisgICAgICAgICAgICByZXN1bHRSZWdzID0gcmVz
dWx0LnJlZ3MoKTsKKyAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gcmVzdWx0UmVncy5w
YXlsb2FkR1BSKCk7CisKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBub3RG
YXN0TmFtZWRDYXNlczsKKworICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBnZW5l
cmF0ZSB0aGlzIGNvZGUgaWYgd2Uga25vdyBiYXNlIGlzIG5vdCBhbiBvYmplY3QuCisgICAgICAg
ICAgICBub3RGYXN0TmFtZWRDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNz
ZW1ibGVyOjpOb25aZXJvLCBtb2RlR1BSLCBUcnVzdGVkSW1tMzIoSlNQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yOjpJbmRleGVkTW9kZSB8IEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6R2VuZXJpY01v
ZGUpKSk7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKCFtX3N0YXRlLmZvck5v
ZGUoYmFzZUVkZ2UpLmlzVHlwZShTcGVjQ2VsbCkpCisgICAgICAgICAgICAgICAgICAgIG5vdEZh
c3ROYW1lZENhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZVJlZ3MpKTsKKwor
ICAgICAgICAgICAgICAgIC8vIENoZWNrIHRoZSBzdHJ1Y3R1cmUKKyAgICAgICAgICAgICAgICAv
LyBGSVhNRTogSWYgd2Uga25vdyB0aGVyZSdzIG9ubHkgb25lIHN0cnVjdHVyZSBmb3IgYmFzZSB3
ZSBjYW4ganVzdCBlbWJlZCBpdCBoZXJlLgorICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVncy5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6c3Ry
dWN0dXJlSURPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOworCisgICAgICAgICAgICAgICAgYXV0byBi
YWRTdHJ1Y3R1cmUgPSBtX2ppdC5icmFuY2gzMigKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLAorICAgICAgICAgICAgICAgICAgICBzY3JhdGNoR1BSLAorICAg
ICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcygKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGVudW1lcmF0b3JHUFIsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y2FjaGVk
U3RydWN0dXJlSURPZmZzZXQoKSkpOworCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IE1heWJl
IHdlIHNob3VsZCBoYXZlIGEgYmV0dGVyIHdheSB0byByZXByZXNlbnQgSW5kZXhlZCtOYW1lZD8K
KyAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKS5ub2RlKCkg
PT0gbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAzKS5ub2RlKCkpCisgICAgICAgICAgICAgICAg
ICAgIGJhZFN0cnVjdHVyZVNsb3dQYXRoID0gYmFkU3RydWN0dXJlOworICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbm90RmFzdE5hbWVkQ2FzZXMuYXBwZW5kKGJhZFN0
cnVjdHVyZSk7CisKKyAgICAgICAgICAgICAgICAvLyBDb21wdXRlIHRoZSBvZmZzZXQKKyAgICAg
ICAgICAgICAgICAvLyBJZiBpbmRleCBpcyBsZXNzIHRoYW4gdGhlIGVudW1lcmF0b3IncyBjYWNo
ZWQgaW5saW5lIHN0b3JhZ2UsIHRoZW4gaXQncyBhbiBpbmxpbmUgYWNjZXNzCisgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgb3V0T2ZMaW5lQWNjZXNzID0gbV9qaXQuYnJhbmNo
MzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwKKyAgICAgICAgICAgICAgICAgICAgaW5k
ZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGVudW1lcmF0b3JHUFIsIEpTUHJvcGVydHlO
YW1lRW51bWVyYXRvcjo6Y2FjaGVkSW5saW5lQ2FwYWNpdHlPZmZzZXQoKSkpOworCisgICAgICAg
ICAgICAgICAgbV9qaXQubG9hZFZhbHVlKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoYmFzZVJl
Z3MucGF5bG9hZEdQUigpLCBpbmRleEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQsIEpT
T2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSksIHJlc3VsdFJlZ3MpOworCisgICAgICAg
ICAgICAgICAgZG9uZUNhc2VzLmFwcGVuZChtX2ppdC5qdW1wKCkpOworCisgICAgICAgICAgICAg
ICAgLy8gT3RoZXJ3aXNlIGl0J3Mgb3V0IG9mIGxpbmUKKyAgICAgICAgICAgICAgICBvdXRPZkxp
bmVBY2Nlc3MubGluaygmbV9qaXQpOworICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoaW5kZXhH
UFIsIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgICAgIG1faml0LnN1YjMyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGVudW1lcmF0b3JHUFIsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y2Fj
aGVkSW5saW5lQ2FwYWNpdHlPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgICAg
IG1faml0Lm5lZzMyKHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgICAgIG1faml0LnNpZ25FeHRl
bmQzMlRvUHRyKHNjcmF0Y2hHUFIsIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgICAgIGlmICgh
aGF2ZVN0b3JhZ2UpCisgICAgICAgICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoYmFzZVJlZ3MucGF5bG9hZEdQUigpLCBKU09iamVjdDo6YnV0dGVyZmx5
T2Zmc2V0KCkpLCBzdG9yYWdlR1BSKTsKKyAgICAgICAgICAgICAgICBjb25zdGV4cHIgaW50cHRy
X3Qgb2Zmc2V0T2ZGaXJzdFByb3BlcnR5ID0gb2Zmc2V0SW5CdXR0ZXJmbHkoZmlyc3RPdXRPZkxp
bmVPZmZzZXQpICogc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHNpemVvZihFbmNvZGVkSlNWYWx1ZSkp
OworICAgICAgICAgICAgICAgIG1faml0LmxvYWRWYWx1ZShNYWNyb0Fzc2VtYmxlcjo6QmFzZUlu
ZGV4KHN0b3JhZ2VHUFIsIHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBv
ZmZzZXRPZkZpcnN0UHJvcGVydHkpLCByZXN1bHRSZWdzKTsKKyAgICAgICAgICAgICAgICBkb25l
Q2FzZXMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IG5vdEZhc3ROYW1lZENhc2VzLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfcGFpcihyZXN1bHRSZWdzLCBEYXRhRm9ybWF0SlMpOworICAgICAgICB9KSk7CisKKyAg
ICAgICAgLy8gV2UgcmVseSBvbiBjb21waWxlR2V0QnlWYWwgdG8gY2FsbCBqc1ZhbHVlUmVzdWx0
IGZvciB1cy4KKyAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMga2luZGEgaGFja3kuLi4KKyAgICAg
ICAgQVNTRVJUKGdlbmVyYXRpb25JbmZvKG5vZGUpLmpzVmFsdWVSZWdzKCkgPT0gcmVzdWx0UmVn
cyAmJiBnZW5lcmF0aW9uSW5mbyhub2RlKS5yZWdpc3RlckZvcm1hdCgpID09IERhdGFGb3JtYXRK
Uyk7CisKKyAgICAgICAgaWYgKGJhZFN0cnVjdHVyZVNsb3dQYXRoLmlzU2V0KCkpIHsKKyAgICAg
ICAgICAgIGlmIChiYXNlUmVncy50YWdHUFIoKSA9PSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAg
ICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChiYWRTdHJ1Y3R1cmVTbG93
UGF0aCwgdGhpcywgb3BlcmF0aW9uRW51bWVyYXRvclJlY292ZXJOYW1lQW5kR2V0QnlWYWwsIHJl
c3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBDQ2FsbEhlbHBlcnM6OkNlbGxW
YWx1ZShiYXNlUmVncy5wYXlsb2FkR1BSKCkpLCBpbmRleEdQUiwgZW51bWVyYXRvckdQUikpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNs
b3dQYXRoQ2FsbChiYWRTdHJ1Y3R1cmVTbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uRW51bWVyYXRv
clJlY292ZXJOYW1lQW5kR2V0QnlWYWwsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBiYXNlUmVncywgaW5kZXhHUFIsIGVudW1lcmF0b3JHUFIpKTsKKyAgICAgICAgfQor
CisgICAgICAgIGRvbmVDYXNlcy5saW5rKCZtX2ppdCk7CisgICAgfTsKKworICAgIGlmIChpc0Nl
bGwoYmFzZUVkZ2UudXNlS2luZCgpKSkgeworICAgICAgICAvLyBVc2UgbWFudWFsIG9wZXJhbmQg
c3BlY3VsYXRpb24gc2luY2UgRml4dXAgbWF5IGhhdmUgcGlja2VkIGEgVXNlS2luZCBtb3JlIHJl
c3RyaWN0aXZlIHRoYW4gQ2VsbFVzZS4KKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFz
ZSh0aGlzLCBiYXNlRWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgc3Bl
Y3VsYXRlKG5vZGUsIGJhc2VFZGdlKTsKKyAgICAgICAgZ2VuZXJhdGUoSlNWYWx1ZVJlZ3M6OnBh
eWxvYWRPbmx5KGJhc2UuZ3ByKCkpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBKU1ZhbHVlT3Bl
cmFuZCBiYXNlKHRoaXMsIGJhc2VFZGdlKTsKKyAgICAgICAgZ2VuZXJhdGUoYmFzZS5yZWdzKCkp
OworICAgIH0KK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
CmluZGV4IDRkM2FjOGEyYjMzNWY3OGJjNTRkODUwYzhkMzAzZDE0NTI1N2E3YmQuLjM0Y2QwMTIz
Zjg5MDE5NTFhYjUzNDE5M2I4NmJmOThmODBiYTYzNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMTg3MSw0OSAr
MTg3MSw2MyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWwoTm9kZSogbm9k
ZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SgogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KIAotICAgICAgICBzcGVjdWxhdGUobm9kZSwgbV9ncmFwaC52YXJBcmdDaGlsZChu
b2RlLCAwKSk7Ci0gICAgICAgIHNwZWN1bGF0ZShub2RlLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5v
ZGUsIDEpKTsKLQotICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGgudmFy
QXJnQ2hpbGQobm9kZSwgMCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CiAgICAgICAgIEpT
VmFsdWVPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSks
IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7Ci0KLSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJl
Z3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHByb3BlcnR5UmVn
cyA9IHByb3BlcnR5LmpzVmFsdWVSZWdzKCk7CisgICAgICAgIHNwZWN1bGF0ZShub2RlLCBtX2dy
YXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKIAotICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRS
ZWdzOwotICAgICAgICBzdGQ6OnRpZShyZXN1bHRSZWdzLCBzdGQ6Omlnbm9yZSkgPSBwcmVmaXgo
RGF0YUZvcm1hdEpTKTsKKyAgICAgICAgYXV0byBnZW5lcmF0ZSA9IFsmXSAoSlNWYWx1ZVJlZ3Mg
YmFzZVJlZ3MpIHsKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3M7CisgICAgICAg
ICAgICBzdGQ6OnRpZShyZXN1bHRSZWdzLCBzdGQ6Omlnbm9yZSkgPSBwcmVmaXgoRGF0YUZvcm1h
dEpTKTsKIAotICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2Vt
YW50aWM7Ci0gICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxs
U2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdp
biwgbV9zdHJlYW0tPnNpemUoKSk7Ci0gICAgICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMg
PSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CisgICAgICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmln
aW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CisgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNh
bGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5n
T1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOworICAgICAgICAg
ICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKIAot
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwotICAgICAgICBpZiAoIW1f
c3RhdGUuZm9yTm9kZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKS5pc1R5cGUoU3BlY0Nl
bGwpKQotICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwo
YmFzZVJlZ3MudGFnR1BSKCkpKTsKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBz
bG93Q2FzZXM7CisgICAgICAgICAgICBpZiAoIW1fc3RhdGUuZm9yTm9kZShtX2dyYXBoLnZhckFy
Z0NoaWxkKG5vZGUsIDApKS5pc1R5cGUoU3BlY0NlbGwpKQorICAgICAgICAgICAgICAgIHNsb3dD
YXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzLnRhZ0dQUigpKSk7CiAK
LSAgICAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IgZ2VuKAotICAgICAgICAgICAgbV9qaXQuY29k
ZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5
cGU6OkdldEJ5VmFsLCB1c2VkUmVnaXN0ZXJzLAotICAgICAgICAgICAgYmFzZVJlZ3MsIHByb3Bl
cnR5UmVncywgcmVzdWx0UmVncywgSW52YWxpZEdQUlJlZyk7CisgICAgICAgICAgICBKSVRHZXRC
eVZhbEdlbmVyYXRvciBnZW4oCisgICAgICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJ
VFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkdldEJ5VmFs
LCB1c2VkUmVnaXN0ZXJzLAorICAgICAgICAgICAgICAgIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3Ms
IHJlc3VsdFJlZ3MsIEludmFsaWRHUFJSZWcpOwogCi0gICAgICAgIGlmIChtX3N0YXRlLmZvck5v
ZGUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSkuaXNUeXBlKFNwZWNTdHJpbmcpKQotICAg
ICAgICAgICAgZ2VuLnN0dWJJbmZvKCktPnByb3BlcnR5SXNTdHJpbmcgPSB0cnVlOwotICAgICAg
ICBlbHNlIGlmIChtX3N0YXRlLmZvck5vZGUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSku
aXNUeXBlKFNwZWNJbnQzMk9ubHkpKQotICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCktPnByb3Bl
cnR5SXNJbnQzMiA9IHRydWU7Ci0gICAgICAgIGVsc2UgaWYgKG1fc3RhdGUuZm9yTm9kZShtX2dy
YXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKS5pc1R5cGUoU3BlY1N5bWJvbCkpCi0gICAgICAgICAg
ICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJc1N5bWJvbCA9IHRydWU7CisgICAgICAgICAgICBp
ZiAobV9zdGF0ZS5mb3JOb2RlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpLmlzVHlwZShT
cGVjU3RyaW5nKSkKKyAgICAgICAgICAgICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJc1N0
cmluZyA9IHRydWU7CisgICAgICAgICAgICBlbHNlIGlmIChtX3N0YXRlLmZvck5vZGUobV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAxKSkuaXNUeXBlKFNwZWNJbnQzMk9ubHkpKQorICAgICAgICAg
ICAgICAgIGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzSW50MzIgPSB0cnVlOworICAgICAgICAg
ICAgZWxzZSBpZiAobV9zdGF0ZS5mb3JOb2RlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkp
LmlzVHlwZShTcGVjU3ltYm9sKSkKKyAgICAgICAgICAgICAgICBnZW4uc3R1YkluZm8oKS0+cHJv
cGVydHlJc1N5bWJvbCA9IHRydWU7CiAKLSAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9q
aXQpOworICAgICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogCi0gICAgICAg
IHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgICAgIHNsb3dD
YXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKworICAgICAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKKyAgICAgICAgICAgIGlmIChiYXNl
UmVncy50YWdHUFIoKSA9PSBJbnZhbGlkR1BSUmVnKSB7CisgICAgICAgICAgICAgICAgc2xvd1Bh
dGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywg
b3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmVn
cywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgbnVsbHB0ciwgQ0NhbGxIZWxwZXJz
OjpDZWxsVmFsdWUoYmFzZVJlZ3MucGF5bG9hZEdQUigpKSwgcHJvcGVydHlSZWdzKTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwo
CisgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlWYWxP
cHRpbWl6ZSwKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikp
LCBnZW4uc3R1YkluZm8oKSwgbnVsbHB0ciwgYmFzZVJlZ3MsIHByb3BlcnR5UmVncyk7CisgICAg
ICAgICAgICB9CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBz
bG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3Bl
cmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwKLSAgICAgICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVP
cmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIG51bGxwdHIsIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3Mp
OworICAgICAgICAgICAgbV9qaXQuYWRkR2V0QnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7Cisg
ICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CiAKLSAg
ICAgICAgbV9qaXQuYWRkR2V0QnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7Ci0gICAgICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKKyAgICAgICAgICAgIGpzVmFs
dWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CisgICAgICAgIH07CiAKLSAgICAgICAganNWYWx1
ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKKyAgICAgICAgaWYgKGlzQ2VsbChtX2dyYXBoLnZh
ckFyZ0NoaWxkKG5vZGUsIDApLnVzZUtpbmQoKSkpIHsKKyAgICAgICAgICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIGJhc2UodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSwgTWFudWFs
T3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZShub2RlLCBtX2dyYXBo
LnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKKyAgICAgICAgICAgIGdlbmVyYXRlKEpTVmFsdWVSZWdz
OjpwYXlsb2FkT25seShiYXNlLmdwcigpKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCks
IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgICAgICBzcGVjdWxhdGUobm9kZSwg
bV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7CisgICAgICAgICAgICBnZW5lcmF0ZShiYXNl
LmpzVmFsdWVSZWdzKCkpOworICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBj
YXNlIEFycmF5OjpJbnQzMjoKQEAgLTQ0OTgsNDMgKzQ1MTIsNiBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlQXJpdGhSYW5kb20oTm9kZSogbm9kZSkKICAgICBkb3VibGVSZXN1bHQocmVz
dWx0LmZwcigpLCBub2RlKTsKIH0KIAotLy8gRklYTUU6IHdlIGFyZSBhbHdheXMgdGFraW5nIHRo
ZSBzbG93IHBhdGggaGVyZSwgd2Ugc2hvdWxkIGJlIGFibGUgdG8gZG8gdGhlIGVxdWl2YWxlbnQg
dG8gdGhlIDY0Yml0IHZlcnNpb24gaWYgd2UgYWRkIG1vcmUgYXZhaWxhYmxlIChjYWxsZWUtc2F2
ZSByZWdpc3RlcnMpIHRvIEFSTXY3IGFuZC9vciBpZiB3ZSByZWR1Y2UgdGhlIG51bWJlciBvZiBy
ZWdpc3RlcnMgY29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbCB1c2VzLiBTZWUgYnVnICMyMzAxODku
Ci12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRW51bWVyYXRvckdldEJ5VmFsKE5vZGUqIG5v
ZGUpCi17Ci0gICAgRWRnZSBiYXNlRWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCk7
Ci0gICAgYXV0byBnZW5lcmF0ZSA9IFsmXSAoSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MpIHsKLSAgICAg
ICAgSlNWYWx1ZU9wZXJhbmQgcHJvcGVydHkodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2Rl
LCAxKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKLSAgICAgICAgU3BlY3VsYXRlU3RyaWN0
SW50MzJPcGVyYW5kIGluZGV4KHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMykpOwot
ICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgbW9kZSh0aGlzLCBtX2dyYXBoLnZh
ckFyZ0NoaWxkKG5vZGUsIDQpKTsKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZW51bWVy
YXRvcih0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDUpKTsKLSAgICAgICAgSlNWYWx1
ZVJlZ3MgcHJvcGVydHlSZWdzID0gcHJvcGVydHkuanNWYWx1ZVJlZ3MoKTsKLSAgICAgICAgR1BS
UmVnIGluZGV4R1BSID0gaW5kZXguZ3ByKCk7Ci0gICAgICAgIEdQUlJlZyBtb2RlR1BSID0gbW9k
ZS5ncHIoKTsKLSAgICAgICAgR1BSUmVnIGVudW1lcmF0b3JHUFIgPSBlbnVtZXJhdG9yLmdwcigp
OwotCi0gICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0KLSAgICAgICAgSlNWYWx1ZVJlZ3NGbHVz
aGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJl
Z3MgPSByZXN1bHQucmVncygpOwotCi0gICAgICAgIGlmIChiYXNlUmVncy50YWdHUFIoKSA9PSBJ
bnZhbGlkR1BSUmVnKQotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25FbnVtZXJh
dG9yR2V0QnlWYWxHZW5lcmljLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZVJlZ3MucGF5bG9hZEdQUigpKSwgcHJvcGVy
dHlSZWdzLCBpbmRleEdQUiwgbW9kZUdQUiwgZW51bWVyYXRvckdQUik7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRW51bWVyYXRvckdldEJ5VmFsR2Vu
ZXJpYywgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdzLCBw
cm9wZXJ0eVJlZ3MsIGluZGV4R1BSLCBtb2RlR1BSLCBlbnVtZXJhdG9yR1BSKTsKLSAgICAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKLSAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdz
LCBub2RlKTsKLSAgICB9OwotCi0gICAgaWYgKGlzQ2VsbChiYXNlRWRnZS51c2VLaW5kKCkpKSB7
Ci0gICAgICAgIC8vIFVzZSBtYW51YWwgb3BlcmFuZCBzcGVjdWxhdGlvbiBzaW5jZSBGaXh1cCBt
YXkgaGF2ZSBwaWNrZWQgYSBVc2VLaW5kIG1vcmUgcmVzdHJpY3RpdmUgdGhhbiBDZWxsVXNlLgot
ICAgICAgICBzcGVjdWxhdGUobm9kZSwgYmFzZUVkZ2UpOwotICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBiYXNlKHRoaXMsIGJhc2VFZGdlLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwot
ICAgICAgICBnZW5lcmF0ZShKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZS5ncHIoKSkpOwot
ICAgIH0gZWxzZSB7Ci0gICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgYmFzZUVkZ2Up
OwotICAgICAgICBnZW5lcmF0ZShiYXNlLnJlZ3MoKSk7Ci0gICAgfQotfQogI2VuZGlmCiAKIH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGE2MWZhNWU0MjNlMzgzYzc5NDhmMTgxNTdl
ODBjZTUxZjcwMTYwZmUuLjE0YTUwNzYxZmQ5YTY1MmMzZjBlMzkxMGFhNjllZWUxMTNmZjEzZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcApAQCAtNjQ2NiwxMTQgKzY0NjYsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
RGF0ZUdldChOb2RlKiBub2RlKQogICAgIH0KIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUVudW1lcmF0b3JHZXRCeVZhbChOb2RlKiBub2RlKQotewotICAgIEVkZ2UgYmFzZUVkZ2Ug
PSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApOwotICAgIGF1dG8gZ2VuZXJhdGUgPSBbJl0g
KEdQUlJlZyBiYXNlQ2VsbEdQUikgewotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qg
ZG9uZUNhc2VzOwotICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQ7Ci0gICAgICAg
IEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3M7Ci0gICAgICAgIEdQUlJlZyBpbmRleEdQUjsKLSAgICAg
ICAgR1BSUmVnIGVudW1lcmF0b3JHUFI7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGJh
ZFN0cnVjdHVyZVNsb3dQYXRoOwotCi0gICAgICAgIGNvbXBpbGVHZXRCeVZhbChub2RlLCBzY29w
ZWRMYW1iZGE8c3RkOjp0dXBsZTxKU1ZhbHVlUmVncywgRGF0YUZvcm1hdD4oRGF0YUZvcm1hdCk+
KFsmXSAoRGF0YUZvcm1hdCkgewotICAgICAgICAgICAgRWRnZSBzdG9yYWdlRWRnZSA9IG1fZ3Jh
cGgudmFyQXJnQ2hpbGQobm9kZSwgMik7Ci0gICAgICAgICAgICBTdG9yYWdlT3BlcmFuZCBzdG9y
YWdlOwotICAgICAgICAgICAgaWYgKHN0b3JhZ2VFZGdlKQotICAgICAgICAgICAgICAgIHN0b3Jh
Z2UuZW1wbGFjZSh0aGlzLCBzdG9yYWdlRWRnZSk7Ci0gICAgICAgICAgICBTcGVjdWxhdGVTdHJp
Y3RJbnQzMk9wZXJhbmQgaW5kZXgodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAzKSk7
Ci0gICAgICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgbW9kZSh0aGlzLCBtX2dy
YXBoLnZhckFyZ0NoaWxkKG5vZGUsIDQpKTsKLSAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIGVudW1lcmF0b3IodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCA1KSk7Ci0KLSAg
ICAgICAgICAgIEdQUlJlZyBtb2RlR1BSID0gbW9kZS5ncHIoKTsKLSAgICAgICAgICAgIGluZGV4
R1BSID0gaW5kZXguZ3ByKCk7Ci0gICAgICAgICAgICBlbnVtZXJhdG9yR1BSID0gZW51bWVyYXRv
ci5ncHIoKTsKLQotICAgICAgICAgICAgcmVzdWx0ID0gSlNWYWx1ZVJlZ3NUZW1wb3JhcnkodGhp
cyk7Ci0gICAgICAgICAgICByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICAgICAgICAg
IEdQUlJlZyBzY3JhdGNoR1BSID0gcmVzdWx0UmVncy5wYXlsb2FkR1BSKCk7Ci0KLSAgICAgICAg
ICAgIGJvb2wgaGF2ZVN0b3JhZ2UgPSAhIXN0b3JhZ2VFZGdlOwotICAgICAgICAgICAgR1BSVGVt
cG9yYXJ5IHN0b3JhZ2VUZW1wb3Jhcnk7Ci0gICAgICAgICAgICBHUFJSZWcgc3RvcmFnZUdQUjsK
LSAgICAgICAgICAgIGlmICghaGF2ZVN0b3JhZ2UpIHsKLSAgICAgICAgICAgICAgICBzdG9yYWdl
VGVtcG9yYXJ5ID0gR1BSVGVtcG9yYXJ5KHRoaXMsIFJldXNlLCBlbnVtZXJhdG9yKTsKLSAgICAg
ICAgICAgICAgICBzdG9yYWdlR1BSID0gc3RvcmFnZVRlbXBvcmFyeS5ncHIoKTsKLSAgICAgICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHN0b3JhZ2VHUFIgPSBzdG9yYWdlLmdwcigpOwot
Ci0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgbm90RmFzdE5hbWVkQ2FzZXM7
Ci0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgZ2VuZXJhdGUgdGhpcyBjb2Rl
IGlmIHdlIGtub3cgYmFzZSBpcyBub3QgYW4gb2JqZWN0LgotICAgICAgICAgICAgbm90RmFzdE5h
bWVkQ2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVy
bywgbW9kZUdQUiwgVHJ1c3RlZEltbTMyKEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6SW5kZXhl
ZE1vZGUgfCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OkdlbmVyaWNNb2RlKSkpOwotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKGJhc2VFZGdlKS5p
c1R5cGUoU3BlY0NlbGwpKQotICAgICAgICAgICAgICAgICAgICBub3RGYXN0TmFtZWRDYXNlcy5h
cHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VDZWxsR1BSKSk7Ci0KLSAgICAgICAgICAg
ICAgICAvLyBDaGVjayB0aGUgc3RydWN0dXJlCi0gICAgICAgICAgICAgICAgLy8gRklYTUU6IElm
IHdlIGtub3cgdGhlcmUncyBvbmx5IG9uZSBzdHJ1Y3R1cmUgZm9yIGJhc2Ugd2UgY2FuIGp1c3Qg
ZW1iZWQgaXQgaGVyZS4KLSAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZUNlbGxHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHNj
cmF0Y2hHUFIpOwotCi0gICAgICAgICAgICAgICAgYXV0byBiYWRTdHJ1Y3R1cmUgPSBtX2ppdC5i
cmFuY2gzMigKLSAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAot
ICAgICAgICAgICAgICAgICAgICBzY3JhdGNoR1BSLAotICAgICAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcygKLSAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmF0b3JH
UFIsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y2FjaGVkU3RydWN0dXJlSURPZmZzZXQoKSkp
OwotCi0gICAgICAgICAgICAgICAgLy8gRklYTUU6IE1heWJlIHdlIHNob3VsZCBoYXZlIGEgYmV0
dGVyIHdheSB0byByZXByZXNlbnQgSW5kZXhlZCtOYW1lZD8KLSAgICAgICAgICAgICAgICBpZiAo
bV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKS5ub2RlKCkgPT0gbV9ncmFwaC52YXJBcmdDaGls
ZChub2RlLCAzKS5ub2RlKCkpCi0gICAgICAgICAgICAgICAgICAgIGJhZFN0cnVjdHVyZVNsb3dQ
YXRoID0gYmFkU3RydWN0dXJlOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICAgICAgbm90RmFzdE5hbWVkQ2FzZXMuYXBwZW5kKGJhZFN0cnVjdHVyZSk7Ci0KLSAgICAgICAg
ICAgICAgICAvLyBDb21wdXRlIHRoZSBvZmZzZXQKLSAgICAgICAgICAgICAgICAvLyBJZiBpbmRl
eCBpcyBsZXNzIHRoYW4gdGhlIGVudW1lcmF0b3IncyBjYWNoZWQgaW5saW5lIHN0b3JhZ2UsIHRo
ZW4gaXQncyBhbiBpbmxpbmUgYWNjZXNzCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
Okp1bXAgb3V0T2ZMaW5lQWNjZXNzID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFi
b3ZlT3JFcXVhbCwKLSAgICAgICAgICAgICAgICAgICAgaW5kZXhHUFIsIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGVudW1lcmF0b3JHUFIsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y2FjaGVk
SW5saW5lQ2FwYWNpdHlPZmZzZXQoKSkpOwotCi0gICAgICAgICAgICAgICAgbV9qaXQubG9hZFZh
bHVlKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoYmFzZUNlbGxHUFIsIGluZGV4R1BSLCBNYWNy
b0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgp
KSwgcmVzdWx0UmVncyk7Ci0KLSAgICAgICAgICAgICAgICBkb25lQ2FzZXMuYXBwZW5kKG1faml0
Lmp1bXAoKSk7Ci0KLSAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UgaXQncyBvdXQgb2YgbGlu
ZQotICAgICAgICAgICAgICAgIG91dE9mTGluZUFjY2Vzcy5saW5rKCZtX2ppdCk7Ci0gICAgICAg
ICAgICAgICAgbV9qaXQubW92ZShpbmRleEdQUiwgc2NyYXRjaEdQUik7Ci0gICAgICAgICAgICAg
ICAgbV9qaXQuc3ViMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZW51bWVyYXRvckdQUiwgSlNQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpjYWNoZWRJbmxpbmVDYXBhY2l0eU9mZnNldCgpKSwgc2Ny
YXRjaEdQUik7Ci0gICAgICAgICAgICAgICAgbV9qaXQubmVnMzIoc2NyYXRjaEdQUik7Ci0gICAg
ICAgICAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIoc2NyYXRjaEdQUiwgc2NyYXRjaEdQ
Uik7Ci0gICAgICAgICAgICAgICAgaWYgKCFoYXZlU3RvcmFnZSkKLSAgICAgICAgICAgICAgICAg
ICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlQ2VsbEdQUiwgSlNP
YmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgc3RvcmFnZUdQUik7Ci0gICAgICAgICAgICAgICAg
Y29uc3RleHByIGludHB0cl90IG9mZnNldE9mRmlyc3RQcm9wZXJ0eSA9IG9mZnNldEluQnV0dGVy
Zmx5KGZpcnN0T3V0T2ZMaW5lT2Zmc2V0KSAqIHN0YXRpY19jYXN0PGludHB0cl90PihzaXplb2Yo
RW5jb2RlZEpTVmFsdWUpKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5sb2FkVmFsdWUoTWFjcm9B
c3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlR1BSLCBzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxl
cjo6VGltZXNFaWdodCwgb2Zmc2V0T2ZGaXJzdFByb3BlcnR5KSwgcmVzdWx0UmVncyk7Ci0gICAg
ICAgICAgICAgICAgZG9uZUNhc2VzLmFwcGVuZChtX2ppdC5qdW1wKCkpOwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICBub3RGYXN0TmFtZWRDYXNlcy5saW5rKCZtX2ppdCk7Ci0gICAgICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIocmVzdWx0UmVncywgRGF0YUZvcm1hdEpTKTsKLSAg
ICAgICAgfSkpOwotCi0gICAgICAgIC8vIFdlIHJlbHkgb24gY29tcGlsZUdldEJ5VmFsIHRvIGNh
bGwganNWYWx1ZVJlc3VsdCBmb3IgdXMuCi0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGtpbmRh
IGhhY2t5Li4uCi0gICAgICAgIEFTU0VSVChnZW5lcmF0aW9uSW5mbyhub2RlKS5qc1ZhbHVlUmVn
cygpID09IHJlc3VsdFJlZ3MgJiYgZ2VuZXJhdGlvbkluZm8obm9kZSkucmVnaXN0ZXJGb3JtYXQo
KSA9PSBEYXRhRm9ybWF0SlMpOwotCi0gICAgICAgIGlmIChiYWRTdHJ1Y3R1cmVTbG93UGF0aC5p
c1NldCgpKQotICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKGJh
ZFN0cnVjdHVyZVNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25FbnVtZXJhdG9yUmVjb3Zlck5hbWVB
bmRHZXRCeVZhbCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VD
ZWxsR1BSLCBpbmRleEdQUiwgZW51bWVyYXRvckdQUikpOwotCi0gICAgICAgIGRvbmVDYXNlcy5s
aW5rKCZtX2ppdCk7Ci0gICAgfTsKLQotICAgIGlmIChpc0NlbGwoYmFzZUVkZ2UudXNlS2luZCgp
KSkgewotICAgICAgICAvLyBVc2UgbWFudWFsIG9wZXJhbmQgc3BlY3VsYXRpb24gc2luY2UgRml4
dXAgbWF5IGhhdmUgcGlja2VkIGEgVXNlS2luZCBtb3JlIHJlc3RyaWN0aXZlIHRoYW4gQ2VsbFVz
ZS4KLSAgICAgICAgc3BlY3VsYXRlKG5vZGUsIGJhc2VFZGdlKTsKLSAgICAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgYmFzZU9wZXJhbmQodGhpcywgYmFzZUVkZ2UsIE1hbnVhbE9wZXJhbmRTcGVj
dWxhdGlvbik7Ci0gICAgICAgIGdlbmVyYXRlKGJhc2VPcGVyYW5kLmdwcigpKTsKLSAgICB9IGVs
c2UgewotICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlT3BlcmFuZCh0aGlzLCBiYXNlRWRnZSk7
Ci0gICAgICAgIGdlbmVyYXRlKGJhc2VPcGVyYW5kLmdwcigpKTsKLSAgICB9Ci19Ci0KICNlbmRp
ZgogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442013</attachid>
            <date>2021-10-21 06:18:27 -0700</date>
            <delta_ts>2021-10-21 07:10:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232052-20211021131825.patch</filename>
            <type>text/plain</type>
            <size>40420</size>
            <attacher name="Mikhail R. Gadelha">mikhail</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MzcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
NzY0YmM5OTc5NDVmYWY5YWE5N2IxZDNlNDZhOTgwOWQyNTMzNmY4Li41NzQwODU5YTgzMzQ3MmUw
Y2VjNmQxOGIwOTI4YWMxN2VjNDc0Yjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAyMS0xMC0yMCAgTWlraGFpbCBSLiBHYWRlbGhhICA8bWlraGFpbEBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtKU0NdWzMyYml0XSBSZS1lbmFibGUgY29tcGlsZUVudW1lcmF0
b3JHZXRCeVZhbCBmYXN0IHBhdGgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMjA1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
Mjk1NDMsIHRoZSBjb21waWxlRW51bWVyYXRvckdldEJ5VmFsCisgICAgICAgIGZhc3QgcGF0aCBo
YWQgdG8gYmUgZGlzYWJsZWQgaW4gMzIgYml0cyBkdWUgdG8gbm90IGhhdmluZyBlbm91Z2ggcmVn
aXN0ZXJzLgorICAgICAgICBUaGVyZSBhcmUgZW5vdWdoIHJlZ2lzdGVycyBhdmFpbGFibGUgbm93
LCBzbyB3ZSBjYW4gcmUtZW5hYmxlIHRoZSBmYXN0IHBhdGguCisKKyAgICAgICAgKiBkZmcvREZH
Rml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2Rl
KToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5o
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVFbnVtZXJhdG9yR2V0QnlWYWwpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbCk6IERlbGV0ZWQuCisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlRW51bWVyYXRvckdldEJ5VmFsKTogRGVsZXRlZC4KKwogMjAyMS0xMC0x
OCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFVz
ZSBVU0UoTEFSR0VfVFlQRURfQVJSQVkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcAppbmRleCA1NjZmNTM5ZGUxYTQ2MzRkZjZlOTUzZjdlMWVkMjJjMTRiOWFj
ZDNlLi5lMGRmZGQ1Nzc5MDMyMGZkMTg0MmI4OWMwZjZlZDNjOTU0MzEwYTg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTExMjQsOSArMTEyNCw2
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KLSNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAw
KSk7IC8vIFNwZWN1bGF0aW5nIGNlbGwgZHVlIHRvIHJlZ2lzdGVyIHByZXNzdXJlIG9uIDMyLWJp
dC4KLSNlbmRpZgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBBcnJh
eTo6Rm9yY2VFeGl0OgogICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggOTQ1MzUzNTZkZTk5YjQwMjQxYWY5ZTc2
MTBmNTU0NTQ3OTViMzljZS4uMTM3YWI1NTE5MTRlZDM2ZTM3ZWUxZWY0NjgyZGJhMjQ2YTJhMGU5
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC03
NDksMzUgKzc0OSw2IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Bcml0aFRy
dW5jLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc051bWJlcih0cnVuY2F0ZWRWYWx1ZU9mQXJndW1lbnQpKTsKIH0KIAotSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldEJ5VmFsQ2VsbCwgRW5jb2RlZEpTVmFs
dWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGJhc2UsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSkpCi17Ci0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwotICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
LSAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotCi0gICAg
SlNWYWx1ZSBwcm9wZXJ0eSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkUHJvcGVydHkpOwotCi0g
ICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcHJvcGVydHkudHJ5R2V0QXNV
aW50MzJJbmRleCgpKQotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGdldEJ5VmFs
V2l0aEluZGV4KGdsb2JhbE9iamVjdCwgYmFzZSwgKmluZGV4KSk7Ci0KLSAgICBpZiAocHJvcGVy
dHkuaXNTdHJpbmcoKSkgewotICAgICAgICBTdHJ1Y3R1cmUmIHN0cnVjdHVyZSA9ICpiYXNlLT5z
dHJ1Y3R1cmUodm0pOwotICAgICAgICBpZiAoSlNDZWxsOjpjYW5Vc2VGYXN0R2V0T3duUHJvcGVy
dHkoc3RydWN0dXJlKSkgewotICAgICAgICAgICAgUmVmUHRyPEF0b21TdHJpbmdJbXBsPiBleGlz
dGluZ0F0b21TdHJpbmcgPSBhc1N0cmluZyhwcm9wZXJ0eSktPnRvRXhpc3RpbmdBdG9tU3RyaW5n
KGdsb2JhbE9iamVjdCk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICAgICAgICAgIGlmIChleGlzdGluZ0F0b21TdHJpbmcpIHsK
LSAgICAgICAgICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBiYXNlLT5mYXN0R2V0T3duUHJv
cGVydHkodm0sIHN0cnVjdHVyZSwgZXhpc3RpbmdBdG9tU3RyaW5nLmdldCgpKSkKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgfQotCi0gICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eS50
b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUoSlNWYWx1ZShiYXNlKS5nZXQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUp
KSk7Ci19Ci0KIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgZ2V0QnlWYWxDZWxsSW50KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgSlNDZWxsKiBiYXNlLCBpbnQzMl90
IGluZGV4KQogewogICAgIGlmIChpbmRleCA8IDApIHsKQEAgLTI1MDcsNyArMjQ3OCw3IEBAIEpT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25FbnVtZXJhdG9yTmV4dFVwZGF0ZVByb3Bl
cnR5TmFtZSwgSlNTdHJpbmcqLCAoCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkVudW1lcmF0b3JSZWNvdmVyTmFtZUFuZEdldEJ5VmFs
LCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCog
YmFzZSwgdWludDMyX3QgaW5kZXgsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogZW51bWVyYXRv
cikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRW51bWVyYXRvclJlY292ZXJO
YW1lQW5kR2V0QnlWYWwsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgYmFzZVZhbHVlLCB1aW50MzJfdCBpbmRleCwgSlNQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yKiBlbnVtZXJhdG9yKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOwpAQCAtMjUxOCw3ICsyNDg5LDggQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbkVudW1lcmF0b3JSZWNvdmVyTmFtZUFuZEdldEJ5VmFsLCBFbmNvZGVkSlNWYWwKICAgICBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lID0gc3RyaW5nLT50b0lkZW50aWZpZXIoZ2xvYmFsT2Jq
ZWN0KTsKICAgICAvLyBUaGlzIHNob3VsZCBvbmx5IHJlYWxseSByZXR1cm4gZm9yIFRlcm1pbmF0
aW9uRXhjZXB0aW9uIHNpbmNlIHdlIGtub3cgc3RyaW5nIGlzIGJhY2tlZCBieSBhIFVVSUQuCiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICBKU09iamVjdCogb2JqZWN0
ID0gYmFzZS0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU1ZhbHVlIGJhc2UgPSBKU1Zh
bHVlOjpkZWNvZGUoYmFzZVZhbHVlKTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gYmFzZS50b09i
amVjdChnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShvYmplY3Qt
PmdldChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSkpKTsKQEAgLTI1MzksMTkgKzI1MTEsNiBA
QCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRW51bWVyYXRvckluQnlWYWwsIEVu
Y29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYgogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9wSW5CeVZhbChnbG9i
YWxPYmplY3QsIGJhc2UsIHByb3BlcnR5TmFtZSkpKSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25FbnVtZXJhdG9yR2V0QnlWYWxHZW5lcmljLCBFbmNvZGVkSlNWYWx1
ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGJhc2VWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgcHJvcGVydHlOYW1lVmFsdWUsIHVpbnQzMl90IGluZGV4LCBpbnQz
Ml90IG1vZGVOdW1iZXIsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogZW51bWVyYXRvcikpCi17
Ci0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotCi0gICAgSlNWYWx1ZSBwcm9wZXJ0eSA9IEpTVmFsdWU6
OmRlY29kZShwcm9wZXJ0eU5hbWVWYWx1ZSk7Ci0gICAgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
OjpGbGFnIG1vZGUgPSBzdGF0aWNfY2FzdDxKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OkZsYWc+
KG1vZGVOdW1iZXIpOwotICAgIEpTVmFsdWUgYmFzZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlVmFs
dWUpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKENvbW1v
blNsb3dQYXRoczo6b3BFbnVtZXJhdG9yR2V0QnlWYWwoZ2xvYmFsT2JqZWN0LCBiYXNlLCBwcm9w
ZXJ0eSwgaW5kZXgsIG1vZGUsIGVudW1lcmF0b3IpKSk7Ci19Ci0KIEpTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25FbnVtZXJhdG9ySGFzT3duUHJvcGVydHksIEVuY29kZWRKU1ZhbHVl
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgYmFzZVZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBwcm9wZXJ0eU5hbWVWYWx1ZSwgdWludDMyX3QgaW5kZXgsIGludDMy
X3QgbW9kZU51bWJlcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCA0ZmQ1Nzk1ZDJkMmFl
NTA0N2JmMTg4ZTRjYjM3MjA4YmVlNGExZGIzLi5jMjJhYmE3NzBmYzk5Y2M2NGJjNWI5ZTdkOGQ4
ZDFiNWJlMjU4YjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
aApAQCAtOTAsNyArOTAsNiBAQCBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkFy
aXRoUm91bmQsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLAogSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25Bcml0aEZsb29yLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xv
YmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uQXJpdGhDZWlsLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQXJpdGhU
cnVuYywgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlKSk7
Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldEJ5VmFsQ2VsbCwgRW5jb2Rl
ZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRQcm9wZXJ0eSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRCeVZh
bE9iamVjdEludCwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0Kiwg
aW50MzJfdCkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRCeVZhbFN0
cmluZ0ludCwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIEpTU3RyaW5nKiwgaW50
MzJfdCkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRCeVZhbE9iamVj
dFN0cmluZywgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCosIEpTQ2Vs
bCogc3RyaW5nKSk7CkBAIC0xMTEsOCArMTEwLDcgQEAgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25FbnVtZXJhdG9yTmV4dFVwZGF0ZUluZGV4QW5kTW9kZSwgRW5jb2RlZEpTVmEK
IEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRW51bWVyYXRvck5leHRVcGRhdGVQ
cm9wZXJ0eU5hbWUsIEpTU3RyaW5nKiwgKEpTR2xvYmFsT2JqZWN0KiwgdWludDMyX3QsIGludDMy
X3QsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uRW51bWVyYXRvckluQnlWYWwsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxP
YmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIHVpbnQzMl90LCBpbnQzMl90
KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkVudW1lcmF0b3JIYXNPd25Q
cm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSwgdWludDMyX3QsIGludDMyX3QpKTsKLUpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uRW51bWVyYXRvclJlY292ZXJOYW1lQW5kR2V0QnlWYWwsIEVuY29k
ZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqLCB1aW50MzJfdCwgSlNQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yKikpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25F
bnVtZXJhdG9yR2V0QnlWYWxHZW5lcmljLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0
KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCB1aW50MzJfdCwgaW50MzJfdCwgSlNQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25FbnVtZXJhdG9yUmVjb3Zlck5hbWVBbmRHZXRCeVZhbCwgRW5jb2RlZEpTVmFsdWUsIChK
U0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCB1aW50MzJfdCwgSlNQcm9wZXJ0eU5hbWVF
bnVtZXJhdG9yKikpOwogCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1Jl
Z2V4cFdpdGhMYXN0SW5kZXgsIEpTQ2VsbCosIChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCosIEVu
Y29kZWRKU1ZhbHVlKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Fy
cmF5LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdm9pZCosIHNpemVfdCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApp
bmRleCA3NDllZjU0NmFiZjljZGZlNzAwNTQyNzg3ZTA2NWZlNjUxOTQ5ZDhlLi5jN2NiYTYwMzcx
Yzc4MDRlYTk4YzE3NmEwNzZhNjkxNTE5YjczYTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTU4NTQsNiArMTU4NTQsMTIwIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYWtlUm9wZShOb2RlKiBub2RlKQogI2VuZGlm
CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVFbnVtZXJhdG9yR2V0QnlWYWwoTm9k
ZSogbm9kZSkKK3sKKyAgICBFZGdlIGJhc2VFZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChub2Rl
LCAwKTsKKyAgICBhdXRvIGdlbmVyYXRlID0gWyZdIChKU1ZhbHVlUmVncyBiYXNlUmVncykgewor
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZG9uZUNhc2VzOworICAgICAgICBKU1Zh
bHVlUmVnc1RlbXBvcmFyeSByZXN1bHQ7CisgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3M7
CisgICAgICAgIEdQUlJlZyBpbmRleEdQUjsKKyAgICAgICAgR1BSUmVnIGVudW1lcmF0b3JHUFI7
CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGJhZFN0cnVjdHVyZVNsb3dQYXRoOworCisg
ICAgICAgIGNvbXBpbGVHZXRCeVZhbChub2RlLCBzY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKU1Zh
bHVlUmVncywgRGF0YUZvcm1hdD4oRGF0YUZvcm1hdCk+KFsmXSAoRGF0YUZvcm1hdCkgeworICAg
ICAgICAgICAgRWRnZSBzdG9yYWdlRWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMik7
CisgICAgICAgICAgICBTdG9yYWdlT3BlcmFuZCBzdG9yYWdlOworICAgICAgICAgICAgaWYgKHN0
b3JhZ2VFZGdlKQorICAgICAgICAgICAgICAgIHN0b3JhZ2UuZW1wbGFjZSh0aGlzLCBzdG9yYWdl
RWRnZSk7CisgICAgICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgaW5kZXgodGhp
cywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAzKSk7CisgICAgICAgICAgICBTcGVjdWxhdGVT
dHJpY3RJbnQzMk9wZXJhbmQgbW9kZSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDQp
KTsKKyAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGVudW1lcmF0b3IodGhpcywgbV9n
cmFwaC52YXJBcmdDaGlsZChub2RlLCA1KSk7CisKKyAgICAgICAgICAgIEdQUlJlZyBtb2RlR1BS
ID0gbW9kZS5ncHIoKTsKKyAgICAgICAgICAgIGluZGV4R1BSID0gaW5kZXguZ3ByKCk7CisgICAg
ICAgICAgICBlbnVtZXJhdG9yR1BSID0gZW51bWVyYXRvci5ncHIoKTsKKworICAgICAgICAgICAg
Ym9vbCBoYXZlU3RvcmFnZSA9ICEhc3RvcmFnZUVkZ2U7CisgICAgICAgICAgICBHUFJUZW1wb3Jh
cnkgc3RvcmFnZVRlbXBvcmFyeTsKKyAgICAgICAgICAgIEdQUlJlZyBzdG9yYWdlR1BSOworICAg
ICAgICAgICAgaWYgKCFoYXZlU3RvcmFnZSkgeworICAgICAgICAgICAgICAgIHN0b3JhZ2VUZW1w
b3JhcnkgPSBHUFJUZW1wb3JhcnkodGhpcywgUmV1c2UsIGVudW1lcmF0b3IpOworICAgICAgICAg
ICAgICAgIHN0b3JhZ2VHUFIgPSBzdG9yYWdlVGVtcG9yYXJ5LmdwcigpOworICAgICAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICAgICAgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7CisKKyAg
ICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisKKyAgICAgICAgICAgIHJlc3VsdCA9IEpTVmFs
dWVSZWdzVGVtcG9yYXJ5KHRoaXMpOworICAgICAgICAgICAgcmVzdWx0UmVncyA9IHJlc3VsdC5y
ZWdzKCk7CisgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHJlc3VsdFJlZ3MucGF5bG9h
ZEdQUigpOworCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgbm90RmFzdE5h
bWVkQ2FzZXM7CisKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgZ2VuZXJhdGUg
dGhpcyBjb2RlIGlmIHdlIGtub3cgYmFzZSBpcyBub3QgYW4gb2JqZWN0LgorICAgICAgICAgICAg
bm90RmFzdE5hbWVkQ2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxl
cjo6Tm9uWmVybywgbW9kZUdQUiwgVHJ1c3RlZEltbTMyKEpTUHJvcGVydHlOYW1lRW51bWVyYXRv
cjo6SW5kZXhlZE1vZGUgfCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OkdlbmVyaWNNb2RlKSkp
OworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKGJh
c2VFZGdlKS5pc1R5cGUoU3BlY0NlbGwpKQorICAgICAgICAgICAgICAgICAgICBub3RGYXN0TmFt
ZWRDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzKSk7CisKKyAgICAg
ICAgICAgICAgICAvLyBDaGVjayB0aGUgc3RydWN0dXJlCisgICAgICAgICAgICAgICAgLy8gRklY
TUU6IElmIHdlIGtub3cgdGhlcmUncyBvbmx5IG9uZSBzdHJ1Y3R1cmUgZm9yIGJhc2Ugd2UgY2Fu
IGp1c3QgZW1iZWQgaXQgaGVyZS4KKyAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZ3MucGF5bG9hZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVy
ZUlET2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKKworICAgICAgICAgICAgICAgIGF1dG8gYmFkU3Ry
dWN0dXJlID0gbV9qaXQuYnJhbmNoMzIoCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwKKyAgICAgICAgICAgICAgICAgICAgc2NyYXRjaEdQUiwKKyAgICAgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoCisgICAgICAgICAgICAgICAgICAg
ICAgICBlbnVtZXJhdG9yR1BSLCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmNhY2hlZFN0cnVj
dHVyZUlET2Zmc2V0KCkpKTsKKworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBNYXliZSB3ZSBz
aG91bGQgaGF2ZSBhIGJldHRlciB3YXkgdG8gcmVwcmVzZW50IEluZGV4ZWQrTmFtZWQ/CisgICAg
ICAgICAgICAgICAgaWYgKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkubm9kZSgpID09IG1f
Z3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMykubm9kZSgpKQorICAgICAgICAgICAgICAgICAgICBi
YWRTdHJ1Y3R1cmVTbG93UGF0aCA9IGJhZFN0cnVjdHVyZTsKKyAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgIG5vdEZhc3ROYW1lZENhc2VzLmFwcGVuZChiYWRTdHJ1Y3R1
cmUpOworCisgICAgICAgICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgb2Zmc2V0CisgICAgICAgICAg
ICAgICAgLy8gSWYgaW5kZXggaXMgbGVzcyB0aGFuIHRoZSBlbnVtZXJhdG9yJ3MgY2FjaGVkIGlu
bGluZSBzdG9yYWdlLCB0aGVuIGl0J3MgYW4gaW5saW5lIGFjY2VzcworICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpKdW1wIG91dE9mTGluZUFjY2VzcyA9IG1faml0LmJyYW5jaDMyKE1h
Y3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsCisgICAgICAgICAgICAgICAgICAgIGluZGV4R1BS
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhlbnVtZXJhdG9yR1BSLCBKU1Byb3BlcnR5TmFtZUVu
dW1lcmF0b3I6OmNhY2hlZElubGluZUNhcGFjaXR5T2Zmc2V0KCkpKTsKKworICAgICAgICAgICAg
ICAgIG1faml0LmxvYWRWYWx1ZShNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KGJhc2VSZWdzLnBh
eWxvYWRHUFIoKSwgaW5kZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBKU09iamVj
dDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkpLCByZXN1bHRSZWdzKTsKKworICAgICAgICAgICAg
ICAgIGRvbmVDYXNlcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKKworICAgICAgICAgICAgICAgIC8v
IE90aGVyd2lzZSBpdCdzIG91dCBvZiBsaW5lCisgICAgICAgICAgICAgICAgb3V0T2ZMaW5lQWNj
ZXNzLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKGluZGV4R1BSLCBz
Y3JhdGNoR1BSKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5zdWIzMihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhlbnVtZXJhdG9yR1BSLCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmNhY2hlZElu
bGluZUNhcGFjaXR5T2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgICAgICBtX2pp
dC5uZWczMihzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJU
b1B0cihzY3JhdGNoR1BSLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgICAgICBpZiAoIWhhdmVT
dG9yYWdlKQorICAgICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VSZWdzLnBheWxvYWRHUFIoKSwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNl
dCgpKSwgc3RvcmFnZUdQUik7CisgICAgICAgICAgICAgICAgY29uc3RleHByIGludHB0cl90IG9m
ZnNldE9mRmlyc3RQcm9wZXJ0eSA9IG9mZnNldEluQnV0dGVyZmx5KGZpcnN0T3V0T2ZMaW5lT2Zm
c2V0KSAqIHN0YXRpY19jYXN0PGludHB0cl90PihzaXplb2YoRW5jb2RlZEpTVmFsdWUpKTsKKyAg
ICAgICAgICAgICAgICBtX2ppdC5sb2FkVmFsdWUoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChz
dG9yYWdlR1BSLCBzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgb2Zmc2V0
T2ZGaXJzdFByb3BlcnR5KSwgcmVzdWx0UmVncyk7CisgICAgICAgICAgICAgICAgZG9uZUNhc2Vz
LmFwcGVuZChtX2ppdC5qdW1wKCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBub3RG
YXN0TmFtZWRDYXNlcy5saW5rKCZtX2ppdCk7CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3BhaXIocmVzdWx0UmVncywgRGF0YUZvcm1hdEpTKTsKKyAgICAgICAgfSkpOworCisgICAgICAg
IC8vIFdlIHJlbHkgb24gY29tcGlsZUdldEJ5VmFsIHRvIGNhbGwganNWYWx1ZVJlc3VsdCBmb3Ig
dXMuCisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGtpbmRhIGhhY2t5Li4uCisgICAgICAgIEFT
U0VSVChnZW5lcmF0aW9uSW5mbyhub2RlKS5qc1ZhbHVlUmVncygpID09IHJlc3VsdFJlZ3MgJiYg
Z2VuZXJhdGlvbkluZm8obm9kZSkucmVnaXN0ZXJGb3JtYXQoKSA9PSBEYXRhRm9ybWF0SlMpOwor
CisgICAgICAgIGlmIChiYWRTdHJ1Y3R1cmVTbG93UGF0aC5pc1NldCgpKSB7CisgICAgICAgICAg
ICBpZiAoYmFzZVJlZ3MudGFnR1BSKCkgPT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgICAg
ICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoYmFkU3RydWN0dXJlU2xvd1BhdGgs
IHRoaXMsIG9wZXJhdGlvbkVudW1lcmF0b3JSZWNvdmVyTmFtZUFuZEdldEJ5VmFsLCByZXN1bHRS
ZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUo
YmFzZVJlZ3MucGF5bG9hZEdQUigpKSwgaW5kZXhHUFIsIGVudW1lcmF0b3JHUFIpKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0
aENhbGwoYmFkU3RydWN0dXJlU2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbkVudW1lcmF0b3JSZWNv
dmVyTmFtZUFuZEdldEJ5VmFsLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgYmFzZVJlZ3MsIGluZGV4R1BSLCBlbnVtZXJhdG9yR1BSKSk7CisgICAgICAgIH0KKworICAg
ICAgICBkb25lQ2FzZXMubGluaygmbV9qaXQpOworICAgIH07CisKKyAgICBpZiAoaXNDZWxsKGJh
c2VFZGdlLnVzZUtpbmQoKSkpIHsKKyAgICAgICAgLy8gVXNlIG1hbnVhbCBvcGVyYW5kIHNwZWN1
bGF0aW9uIHNpbmNlIEZpeHVwIG1heSBoYXZlIHBpY2tlZCBhIFVzZUtpbmQgbW9yZSByZXN0cmlj
dGl2ZSB0aGFuIENlbGxVc2UuCisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhp
cywgYmFzZUVkZ2UsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1bGF0
ZShub2RlLCBiYXNlRWRnZSk7CisgICAgICAgIGdlbmVyYXRlKEpTVmFsdWVSZWdzOjpwYXlsb2Fk
T25seShiYXNlLmdwcigpKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQg
YmFzZSh0aGlzLCBiYXNlRWRnZSk7CisgICAgICAgIGdlbmVyYXRlKGJhc2UucmVncygpKTsKKyAg
ICB9Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRl
eCA0ZDNhYzhhMmIzMzVmNzhiYzU0ZDg1MGM4ZDMwM2QxNDUyNTdhN2JkLi45OTQ2MWM3ZWM2ODUz
Nzg3MWJmMGQzMTJkMTNmZTg5ZTE2OTZhYWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTE4MTgsMTIgKzE4MTgs
MTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNvbnRpZ3VvdXNQdXRCeVZhbChOb2Rl
KiBub2RlLCBCYXNlT3BlcmFuZFR5cGUmIGJhc2UKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVHZXRCeVZhbChOb2RlKiBub2RlLCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKU1Zh
bHVlUmVncywgRGF0YUZvcm1hdD4oRGF0YUZvcm1hdCBwcmVmZXJyZWRGb3JtYXQpPiYgcHJlZml4
KQogewogICAgIHN3aXRjaCAobm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpKSB7Ci0gICAgY2FzZSBB
cnJheTo6U2VsZWN0VXNpbmdQcmVkaWN0aW9uczoKKyAgICBjYXNlIEFycmF5OjpBbnlUeXBlZEFy
cmF5OgogICAgIGNhc2UgQXJyYXk6OkZvcmNlRXhpdDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSNpZiBDT01QSUxFUl9RVUlSSyhDT05TSURFUlNfVU5SRUFDSEFCTEVf
Q09ERSkKLSAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oSW5hZGVxdWF0ZUNv
dmVyYWdlLCBKU1ZhbHVlUmVncygpLCAwKTsKLSNlbmRpZgorICAgIGNhc2UgQXJyYXk6OlNlbGVj
dFVzaW5nQXJndW1lbnRzOgorICAgIGNhc2UgQXJyYXk6OlNlbGVjdFVzaW5nUHJlZGljdGlvbnM6
CisgICAgY2FzZSBBcnJheTo6VW5wcm9maWxlZDoKKyAgICBjYXNlIEFycmF5OjpCaWdJbnQ2NEFy
cmF5OgorICAgIGNhc2UgQXJyYXk6OkJpZ1VpbnQ2NEFycmF5OgorICAgICAgICBERkdfQ1JBU0go
bV9qaXQuZ3JhcGgoKSwgbm9kZSwgIkJhZCBhcnJheSBtb2RlIHR5cGUiKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBBcnJheTo6VW5kZWNpZGVkOiB7CiAgICAgICAgIFNwZWN1bGF0ZVN0cmlj
dEludDMyT3BlcmFuZCBpbmRleCh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsK
QEAgLTE4NDYsNzQgKzE4NDgsODggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5
VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoKICAgICAgICAg
ICAgIGlmIChtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApLnVzZUtpbmQoKSA9PSBPYmplY3RV
c2UpIHsKICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKS51
c2VLaW5kKCkgPT0gU3RyaW5nVXNlKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGVHZXRC
eVZhbEZvck9iamVjdFdpdGhTdHJpbmcobm9kZSwgcHJlZml4KTsKLSAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKS51c2VL
aW5kKCkgPT0gU3ltYm9sVXNlKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGVHZXRCeVZh
bEZvck9iamVjdFdpdGhTeW1ib2wobm9kZSwgcHJlZml4KTsKLSAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhp
cywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7IC8vIFNhdmUgYSByZWdpc3Rlciwgc3Bl
Y3VsYXRlIGNlbGwuIFdlJ2xsIHByb2JhYmx5IGJlIHJpZ2h0LgorICAgICAgICAgICAgSlNWYWx1
ZU9wZXJhbmQgYmFzZSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKICAgICAg
ICAgICAgIEpTVmFsdWVPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bm9kZSwgMSkpOwotICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAg
ICAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZUdQUiA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKICAgICAg
ICAgICAgIEpTVmFsdWVSZWdzIHByb3BlcnR5UmVncyA9IHByb3BlcnR5LmpzVmFsdWVSZWdzKCk7
CiAKICAgICAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3M7CiAgICAgICAgICAgICBzdGQ6
OnRpZShyZXN1bHRSZWdzLCBzdGQ6Omlnbm9yZSkgPSBwcmVmaXgoRGF0YUZvcm1hdEpTKTsKIAog
ICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uR2V0QnlWYWxDZWxsLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgYmFzZUdQUiwgcHJvcGVydHlSZWdzKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uR2V0QnlWYWwsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBiYXNlR1BSLCBwcm9wZXJ0eVJlZ3MpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKIAogICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKLSAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAg
ICAgc3BlY3VsYXRlKG5vZGUsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOwotICAgICAg
ICBzcGVjdWxhdGUobm9kZSwgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7Ci0KLSAgICAg
ICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDAp
LCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBwcm9w
ZXJ0eSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpLCBNYW51YWxPcGVyYW5kU3Bl
Y3VsYXRpb24pOwotCi0gICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gYmFzZS5qc1ZhbHVl
UmVncygpOwogICAgICAgICBKU1ZhbHVlUmVncyBwcm9wZXJ0eVJlZ3MgPSBwcm9wZXJ0eS5qc1Zh
bHVlUmVncygpOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgbV9ncmFwaC52YXJBcmdDaGlsZChu
b2RlLCAxKSk7CiAKLSAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVnczsKLSAgICAgICAgc3Rk
Ojp0aWUocmVzdWx0UmVncywgc3RkOjppZ25vcmUpID0gcHJlZml4KERhdGFGb3JtYXRKUyk7Cisg
ICAgICAgIGF1dG8gZ2VuZXJhdGUgPSBbJl0gKEpTVmFsdWVSZWdzIGJhc2VSZWdzKSB7CisgICAg
ICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzOworICAgICAgICAgICAgc3RkOjp0aWUocmVz
dWx0UmVncywgc3RkOjppZ25vcmUpID0gcHJlZml4KERhdGFGb3JtYXRKUyk7CiAKLSAgICAgICAg
Q29kZU9yaWdpbiBjb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOwotICAgICAgICBD
YWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4
Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXpl
KCkpOwotICAgICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lz
dGVycygpOworICAgICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2lu
LnNlbWFudGljOworICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJl
Y29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChj
b2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIFJlZ2lzdGVyU2V0IHVz
ZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CiAKLSAgICAgICAgSklUQ29tcGls
ZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKLSAgICAgICAgaWYgKCFtX3N0YXRlLmZvck5vZGUobV9n
cmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSkuaXNUeXBlKFNwZWNDZWxsKSkKLSAgICAgICAgICAg
IHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzLnRhZ0dQUigp
KSk7CisgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOworICAgICAg
ICAgICAgaWYgKCFtX3N0YXRlLmZvck5vZGUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSku
aXNUeXBlKFNwZWNDZWxsKSkKKyAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0
LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncykpOwogCi0gICAgICAgIEpJVEdldEJ5VmFsR2VuZXJh
dG9yIGdlbigKLSAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQs
IGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwgdXNlZFJlZ2lzdGVy
cywKLSAgICAgICAgICAgIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHJlc3VsdFJlZ3MsIEludmFs
aWRHUFJSZWcpOworICAgICAgICAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IgZ2VuKAorICAgICAg
ICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4s
IGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpHZXRCeVZhbCwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAg
ICAgICAgICBiYXNlUmVncywgcHJvcGVydHlSZWdzLCByZXN1bHRSZWdzLCBJbnZhbGlkR1BSUmVn
KTsKIAotICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9k
ZSwgMSkpLmlzVHlwZShTcGVjU3RyaW5nKSkKLSAgICAgICAgICAgIGdlbi5zdHViSW5mbygpLT5w
cm9wZXJ0eUlzU3RyaW5nID0gdHJ1ZTsKLSAgICAgICAgZWxzZSBpZiAobV9zdGF0ZS5mb3JOb2Rl
KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpLmlzVHlwZShTcGVjSW50MzJPbmx5KSkKLSAg
ICAgICAgICAgIGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzSW50MzIgPSB0cnVlOwotICAgICAg
ICBlbHNlIGlmIChtX3N0YXRlLmZvck5vZGUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSku
aXNUeXBlKFNwZWNTeW1ib2wpKQotICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCktPnByb3BlcnR5
SXNTeW1ib2wgPSB0cnVlOworICAgICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShtX2dyYXBo
LnZhckFyZ0NoaWxkKG5vZGUsIDEpKS5pc1R5cGUoU3BlY1N0cmluZykpCisgICAgICAgICAgICAg
ICAgZ2VuLnN0dWJJbmZvKCktPnByb3BlcnR5SXNTdHJpbmcgPSB0cnVlOworICAgICAgICAgICAg
ZWxzZSBpZiAobV9zdGF0ZS5mb3JOb2RlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpLmlz
VHlwZShTcGVjSW50MzJPbmx5KSkKKyAgICAgICAgICAgICAgICBnZW4uc3R1YkluZm8oKS0+cHJv
cGVydHlJc0ludDMyID0gdHJ1ZTsKKyAgICAgICAgICAgIGVsc2UgaWYgKG1fc3RhdGUuZm9yTm9k
ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKS5pc1R5cGUoU3BlY1N5bWJvbCkpCisgICAg
ICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCktPnByb3BlcnR5SXNTeW1ib2wgPSB0cnVlOwogCi0g
ICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKKyAgICAgICAgICAgIGdlbi5nZW5l
cmF0ZUZhc3RQYXRoKG1faml0KTsKIAotICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93
UGF0aEp1bXAoKSk7CisgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1
bXAoKSk7CisKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4g
c2xvd1BhdGg7CisgICAgICAgICAgICBpZiAoYmFzZVJlZ3MudGFnR1BSKCkgPT0gSW52YWxpZEdQ
UlJlZykgeworICAgICAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAg
ICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUs
CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0
dWJJbmZvKCksIG51bGxwdHIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VSZWdzLnBheWxv
YWRHUFIoKSksIHByb3BlcnR5UmVncyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgICAgICAgICBzbG93
Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUsCisgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIG51bGxwdHIs
IGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MpOworICAgICAgICAgICAgfQogCi0gICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0g
ICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUsCi0g
ICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBu
dWxscHRyLCBiYXNlUmVncywgcHJvcGVydHlSZWdzKTsKKyAgICAgICAgICAgIG1faml0LmFkZEdl
dEJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkpOworICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwogCi0gICAgICAgIG1faml0LmFkZEdldEJ5VmFsKGdl
biwgc2xvd1BhdGguZ2V0KCkpOwotICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3Zl
KHNsb3dQYXRoKSk7CisgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUp
OworICAgICAgICB9OwogCi0gICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7
CisgICAgICAgIGlmIChpc0NlbGwobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKS51c2VLaW5k
KCkpKSB7CisgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3Jh
cGgudmFyQXJnQ2hpbGQobm9kZSwgMCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAg
ICAgICAgICBzcGVjdWxhdGUobm9kZSwgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7Cisg
ICAgICAgICAgICBnZW5lcmF0ZShKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZS5ncHIoKSkp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlz
LCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24p
OworICAgICAgICAgICAgc3BlY3VsYXRlKG5vZGUsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwg
MCkpOworICAgICAgICAgICAgZ2VuZXJhdGUoYmFzZS5qc1ZhbHVlUmVncygpKTsKKyAgICAgICAg
fQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBBcnJheTo6SW50MzI6CkBAIC0xOTMy
LDcgKzE5NDgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWwoTm9kZSog
bm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SgogICAgICAgICAgICAgRGF0YUZv
cm1hdCBmb3JtYXQ7CiAgICAgICAgICAgICBzdGQ6OnRpZShyZXN1bHRSZWdzLCBmb3JtYXQpID0g
cHJlZml4KG5vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSA9PSBBcnJheTo6SW50MzIgPyBEYXRhRm9y
bWF0SW50MzIgOiBEYXRhRm9ybWF0SlMpOwogCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2Vt
Ymxlcjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
c3RvcmFnZVJlZywgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSkpOworICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0
ciwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlS
ZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VSZWcsIEJ1dHRlcmZseTo6b2Zmc2V0
T2ZQdWJsaWNMZW5ndGgoKSkpKTsKIAogICAgICAgICAgICAgaWYgKGZvcm1hdCA9PSBEYXRhRm9y
bWF0SW50MzIpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoIW5vZGUtPmFycmF5TW9kZSgpLmlz
SW5Cb3VuZHNTYW5lQ2hhaW4oKSk7CkBAIC0xOTk0LDggKzIwMTAsOCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlR2V0QnlWYWwoTm9kZSogbm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0
ZDo6dHVwbGU8SgogICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaDMyKE1hY3Jv
QXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhzdG9yYWdlUmVnLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKSk7CiAK
ICAgICAgICAgbV9qaXQubG9hZFZhbHVlKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFn
ZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0KSwgcmVzdWx0UmVn
cyk7Ci0gICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZFbXB0eShyZXN1bHRS
ZWdzLnRhZ0dQUigpKSk7CiAKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJ
ZkVtcHR5KHJlc3VsdFJlZ3MudGFnR1BSKCkpKTsKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3IoCiAgICAgICAgICAgICBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2Vz
LCB0aGlzLCBvcGVyYXRpb25HZXRCeVZhbE9iamVjdEludCwKQEAgLTIwMTYsMjIgKzIwMzIsMjMg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0
IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgICAgICBGUFJSZWcg
cmVzdWx0UmVnID0gcmVzdWx0LmZwcigpOwogCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyByZXN1
bHRSZWdzOwogICAgICAgICAgICAgRGF0YUZvcm1hdCBmb3JtYXQ7CiAgICAgICAgICAgICBzdGQ6
OnRpZShyZXN1bHRSZWdzLCBmb3JtYXQpID0gcHJlZml4KERhdGFGb3JtYXREb3VibGUpOwogCi0g
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCAw
LCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJl
ZywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlZywgQnV0dGVyZmx5OjpvZmZzZXRP
ZlB1YmxpY0xlbmd0aCgpKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJv
dW5kcywgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJs
ZXI6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0
b3JhZ2VSZWcsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpKTsKIAotICAgICAg
ICAgICAgbV9qaXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VS
ZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCksIHJlc3VsdC5mcHIo
KSk7CisgICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5k
ZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0KSwg
cmVzdWx0UmVnKTsKICAgICAgICAgICAgIGlmICghbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5k
c1NhbmVDaGFpbigpKQotICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soTG9hZEZyb21I
b2xlLCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2hJZk5hTihyZXN1bHQuZnByKCkpKTsK
KyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKExvYWRGcm9tSG9sZSwgSlNWYWx1ZVJl
Z3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoSWZOYU4ocmVzdWx0UmVnKSk7CiAgICAgICAgICAg
ICBpZiAoZm9ybWF0ID09IERhdGFGb3JtYXRKUykgewotICAgICAgICAgICAgICAgIGJveERvdWJs
ZShyZXN1bHQuZnByKCksIHJlc3VsdFJlZ3MpOworICAgICAgICAgICAgICAgIGJveERvdWJsZShy
ZXN1bHRSZWcsIHJlc3VsdFJlZ3MpOwogICAgICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVz
dWx0UmVncywgbm9kZSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIEFT
U0VSVChmb3JtYXQgPT0gRGF0YUZvcm1hdERvdWJsZSAmJiAhcmVzdWx0UmVncyk7Ci0gICAgICAg
ICAgICAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbm9kZSk7CisgICAgICAgICAgICAg
ICAgZG91YmxlUmVzdWx0KHJlc3VsdFJlZywgbm9kZSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjA4Myw3ICsyMTAwLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxz
dGQ6OnR1cGxlPEoKICAgICAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3M7CiAgICAgICAg
ICAgICBzdGQ6OnRpZShyZXN1bHRSZWdzLCBzdGQ6Omlnbm9yZSkgPSBwcmVmaXgoRGF0YUZvcm1h
dEpTKTsKIAotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1
ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwg
cHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VSZWcsIEFycmF5U3Rv
cmFnZTo6dmVjdG9yTGVuZ3RoT2Zmc2V0KCkpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBudWxscHRyLCBtX2ppdC5icmFuY2gzMihN
YWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Moc3RvcmFnZVJlZywgQXJyYXlTdG9yYWdlOjp2ZWN0b3JMZW5ndGhPZmZzZXQoKSkp
KTsKIAogICAgICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgo
c3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBBcnJh
eVN0b3JhZ2U6OnZlY3Rvck9mZnNldCgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNC
aXRzLnRhZykpLCByZXN1bHRSZWdzLnRhZ0dQUigpKTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soTG9hZEZyb21Ib2xlLCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2hJZkVtcHR5
KHJlc3VsdFJlZ3MudGFnR1BSKCkpKTsKQEAgLTIwOTYsOSArMjExMywxMCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWwoTm9kZSogbm9kZSwgY29uc3QgU2NvcGVkTGFtYmRh
PHN0ZDo6dHVwbGU8SgogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1f
Z3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOwogICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQz
Mk9wZXJhbmQgcHJvcGVydHkodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CiAg
ICAgICAgIFN0b3JhZ2VPcGVyYW5kIHN0b3JhZ2UodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChu
b2RlLCAyKSk7CisKKyAgICAgICAgR1BSUmVnIGJhc2VSZWcgPSBiYXNlLmdwcigpOwogICAgICAg
ICBHUFJSZWcgcHJvcGVydHlSZWcgPSBwcm9wZXJ0eS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHN0
b3JhZ2VSZWcgPSBzdG9yYWdlLmdwcigpOwotICAgICAgICBHUFJSZWcgYmFzZVJlZyA9IGJhc2Uu
Z3ByKCk7CiAKICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtMjEyMCw4ICsyMTM4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5
VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoKICAgICAgICAg
YWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgICAgICBzbG93UGF0aENhbGwoCiAgICAgICAg
ICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeVZhbE9iamVjdEludCwKLSAg
ICAgICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwKLSAg
ICAgICAgICAgICAgICBiYXNlUmVnLCBwcm9wZXJ0eVJlZykpOworICAgICAgICAgICAgICAgIHJl
c3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJl
ZykpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CiAgICAgICAg
IGJyZWFrOwpAQCAtMjEzNSw4ICsyMTUyLDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVHZXRCeVZhbChOb2RlKiBub2RlLCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAg
ICAgY2FzZSBBcnJheTo6U2NvcGVkQXJndW1lbnRzOgogICAgICAgICBjb21waWxlR2V0QnlWYWxP
blNjb3BlZEFyZ3VtZW50cyhub2RlLCBwcmVmaXgpOwogICAgICAgICBicmVhazsKLSAgICBkZWZh
dWx0OiB7Ci0gICAgICAgIEFTU0VSVChub2RlLT5hcnJheU1vZGUoKS5pc1NvbWVUeXBlZEFycmF5
VmlldygpKTsKKyAgICBjYXNlIEFycmF5OjpJbnQ4QXJyYXk6CisgICAgY2FzZSBBcnJheTo6SW50
MTZBcnJheToKKyAgICBjYXNlIEFycmF5OjpJbnQzMkFycmF5OgorICAgIGNhc2UgQXJyYXk6OlVp
bnQ4QXJyYXk6CisgICAgY2FzZSBBcnJheTo6VWludDhDbGFtcGVkQXJyYXk6CisgICAgY2FzZSBB
cnJheTo6VWludDE2QXJyYXk6CisgICAgY2FzZSBBcnJheTo6VWludDMyQXJyYXk6CisgICAgY2Fz
ZSBBcnJheTo6RmxvYXQzMkFycmF5OgorICAgIGNhc2UgQXJyYXk6OkZsb2F0NjRBcnJheTogewog
ICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gbm9kZS0+YXJyYXlNb2RlKCkudHlwZWRBcnJh
eVR5cGUoKTsKICAgICAgICAgaWYgKGlzSW50KHR5cGUpKQogICAgICAgICAgICAgY29tcGlsZUdl
dEJ5VmFsT25JbnRUeXBlZEFycmF5KG5vZGUsIHR5cGUsIHByZWZpeCk7CkBAIC0yNTcwLDcgKzI1
OTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2Fz
ZSBTdHJpbmdDaGFyQXQ6IHsKICAgICAgICAgLy8gUmVsaWVzIG9uIFN0cmluZ0NoYXJBdCBub2Rl
IGhhdmluZyBzYW1lIGJhc2ljIGxheW91dCBhcyBHZXRCeVZhbAogICAgICAgICBKU1ZhbHVlUmVn
c1RlbXBvcmFyeSByZXN1bHQ7Ci0gICAgICAgIGNvbXBpbGVHZXRCeVZhbE9uU3RyaW5nKG5vZGUs
IHNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEpTVmFsdWVSZWdzLCBEYXRhRm9ybWF0PihEYXRhRm9y
bWF0IHByZWZlcnJlZEZvcm1hdCk+KFsmXSAoRGF0YUZvcm1hdCBwcmVmZXJyZWRGb3JtYXQpIHsK
KyAgICAgICAgY29tcGlsZUdldEJ5VmFsKG5vZGUsIHNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEpT
VmFsdWVSZWdzLCBEYXRhRm9ybWF0PihEYXRhRm9ybWF0IHByZWZlcnJlZEZvcm1hdCk+KFsmXSAo
RGF0YUZvcm1hdCBwcmVmZXJyZWRGb3JtYXQpIHsKICAgICAgICAgICAgIHJlc3VsdCA9IEpTVmFs
dWVSZWdzVGVtcG9yYXJ5KHRoaXMpOwogICAgICAgICAgICAgQVNTRVJUKHByZWZlcnJlZEZvcm1h
dCA9PSBEYXRhRm9ybWF0SlMgfHwgcHJlZmVycmVkRm9ybWF0ID09IERhdGFGb3JtYXRDZWxsKTsK
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihyZXN1bHQucmVncygpLCBwcmVmZXJy
ZWRGb3JtYXQpOwpAQCAtNDQ5OCw0MyArNDUyMiw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVBcml0aFJhbmRvbShOb2RlKiBub2RlKQogICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnBy
KCksIG5vZGUpOwogfQogCi0vLyBGSVhNRTogd2UgYXJlIGFsd2F5cyB0YWtpbmcgdGhlIHNsb3cg
cGF0aCBoZXJlLCB3ZSBzaG91bGQgYmUgYWJsZSB0byBkbyB0aGUgZXF1aXZhbGVudCB0byB0aGUg
NjRiaXQgdmVyc2lvbiBpZiB3ZSBhZGQgbW9yZSBhdmFpbGFibGUgKGNhbGxlZS1zYXZlIHJlZ2lz
dGVycykgdG8gQVJNdjcgYW5kL29yIGlmIHdlIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHJlZ2lzdGVy
cyBjb21waWxlRW51bWVyYXRvckdldEJ5VmFsIHVzZXMuIFNlZSBidWcgIzIzMDE4OS4KLXZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVFbnVtZXJhdG9yR2V0QnlWYWwoTm9kZSogbm9kZSkKLXsK
LSAgICBFZGdlIGJhc2VFZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKTsKLSAgICBh
dXRvIGdlbmVyYXRlID0gWyZdIChKU1ZhbHVlUmVncyBiYXNlUmVncykgewotICAgICAgICBKU1Zh
bHVlT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpLCBN
YW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwotICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9w
ZXJhbmQgaW5kZXgodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAzKSk7Ci0gICAgICAg
IFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBtb2RlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hp
bGQobm9kZSwgNCkpOwotICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBlbnVtZXJhdG9yKHRo
aXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgNSkpOwotICAgICAgICBKU1ZhbHVlUmVncyBw
cm9wZXJ0eVJlZ3MgPSBwcm9wZXJ0eS5qc1ZhbHVlUmVncygpOwotICAgICAgICBHUFJSZWcgaW5k
ZXhHUFIgPSBpbmRleC5ncHIoKTsKLSAgICAgICAgR1BSUmVnIG1vZGVHUFIgPSBtb2RlLmdwcigp
OwotICAgICAgICBHUFJSZWcgZW51bWVyYXRvckdQUiA9IGVudW1lcmF0b3IuZ3ByKCk7Ci0KLSAg
ICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLQotICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxs
UmVzdWx0IHJlc3VsdCh0aGlzKTsKLSAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJl
c3VsdC5yZWdzKCk7Ci0KLSAgICAgICAgaWYgKGJhc2VSZWdzLnRhZ0dQUigpID09IEludmFsaWRH
UFJSZWcpCi0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkVudW1lcmF0b3JHZXRC
eVZhbEdlbmVyaWMsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBDQ2Fs
bEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlUmVncy5wYXlsb2FkR1BSKCkpLCBwcm9wZXJ0eVJlZ3Ms
IGluZGV4R1BSLCBtb2RlR1BSLCBlbnVtZXJhdG9yR1BSKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25FbnVtZXJhdG9yR2V0QnlWYWxHZW5lcmljLCBy
ZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIHByb3BlcnR5
UmVncywgaW5kZXhHUFIsIG1vZGVHUFIsIGVudW1lcmF0b3JHUFIpOwotICAgICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwotICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUp
OwotICAgIH07Ci0KLSAgICBpZiAoaXNDZWxsKGJhc2VFZGdlLnVzZUtpbmQoKSkpIHsKLSAgICAg
ICAgLy8gVXNlIG1hbnVhbCBvcGVyYW5kIHNwZWN1bGF0aW9uIHNpbmNlIEZpeHVwIG1heSBoYXZl
IHBpY2tlZCBhIFVzZUtpbmQgbW9yZSByZXN0cmljdGl2ZSB0aGFuIENlbGxVc2UuCi0gICAgICAg
IHNwZWN1bGF0ZShub2RlLCBiYXNlRWRnZSk7Ci0gICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IGJhc2UodGhpcywgYmFzZUVkZ2UsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7Ci0gICAgICAg
IGdlbmVyYXRlKEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlLmdwcigpKSk7Ci0gICAgfSBl
bHNlIHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBiYXNlRWRnZSk7Ci0gICAg
ICAgIGdlbmVyYXRlKGJhc2UucmVncygpKTsKLSAgICB9Ci19CiAjZW5kaWYKIAogfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkRGRwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggYTYxZmE1ZTQyM2UzODNjNzk0OGYxODE1N2U4MGNlNTFm
NzAxNjBmZS4uNjAyOTdmOTczY2RlNjkzZDAzNjc2NjRkYWQ1YmNiM2NmMGJhZTdiZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBA
IC0zMjQyLDcgKzMyNDIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6IHsKICAgICAgICAgLy8gUmVsaWVzIG9uIFN0cmlu
Z0NoYXJBdCBub2RlIGhhdmluZyBzYW1lIGJhc2ljIGxheW91dCBhcyBHZXRCeVZhbAogICAgICAg
ICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQ7Ci0gICAgICAgIGNvbXBpbGVHZXRCeVZhbE9u
U3RyaW5nKG5vZGUsIHNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEpTVmFsdWVSZWdzLCBEYXRhRm9y
bWF0PihEYXRhRm9ybWF0IHByZWZlcnJlZEZvcm1hdCk+KFsmXSAoRGF0YUZvcm1hdCBwcmVmZXJy
ZWRGb3JtYXQpIHsKKyAgICAgICAgY29tcGlsZUdldEJ5VmFsKG5vZGUsIHNjb3BlZExhbWJkYTxz
dGQ6OnR1cGxlPEpTVmFsdWVSZWdzLCBEYXRhRm9ybWF0PihEYXRhRm9ybWF0IHByZWZlcnJlZEZv
cm1hdCk+KFsmXSAoRGF0YUZvcm1hdCBwcmVmZXJyZWRGb3JtYXQpIHsKICAgICAgICAgICAgIHJl
c3VsdCA9IEpTVmFsdWVSZWdzVGVtcG9yYXJ5KHRoaXMpOwogICAgICAgICAgICAgQVNTRVJUKHBy
ZWZlcnJlZEZvcm1hdCA9PSBEYXRhRm9ybWF0SlMgfHwgcHJlZmVycmVkRm9ybWF0ID09IERhdGFG
b3JtYXRDZWxsKTsKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihyZXN1bHQucmVn
cygpLCBwcmVmZXJyZWRGb3JtYXQpOwpAQCAtNjQ2NiwxMTQgKzY0NjYsNiBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlRGF0ZUdldChOb2RlKiBub2RlKQogICAgIH0KIH0KIAotdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbChOb2RlKiBub2RlKQotewot
ICAgIEVkZ2UgYmFzZUVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApOwotICAgIGF1
dG8gZ2VuZXJhdGUgPSBbJl0gKEdQUlJlZyBiYXNlQ2VsbEdQUikgewotICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcExpc3QgZG9uZUNhc2VzOwotICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFy
eSByZXN1bHQ7Ci0gICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3M7Ci0gICAgICAgIEdQUlJl
ZyBpbmRleEdQUjsKLSAgICAgICAgR1BSUmVnIGVudW1lcmF0b3JHUFI7Ci0gICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIGJhZFN0cnVjdHVyZVNsb3dQYXRoOwotCi0gICAgICAgIGNvbXBpbGVH
ZXRCeVZhbChub2RlLCBzY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKU1ZhbHVlUmVncywgRGF0YUZv
cm1hdD4oRGF0YUZvcm1hdCk+KFsmXSAoRGF0YUZvcm1hdCkgewotICAgICAgICAgICAgRWRnZSBz
dG9yYWdlRWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMik7Ci0gICAgICAgICAgICBT
dG9yYWdlT3BlcmFuZCBzdG9yYWdlOwotICAgICAgICAgICAgaWYgKHN0b3JhZ2VFZGdlKQotICAg
ICAgICAgICAgICAgIHN0b3JhZ2UuZW1wbGFjZSh0aGlzLCBzdG9yYWdlRWRnZSk7Ci0gICAgICAg
ICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgaW5kZXgodGhpcywgbV9ncmFwaC52YXJB
cmdDaGlsZChub2RlLCAzKSk7Ci0gICAgICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJh
bmQgbW9kZSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDQpKTsKLSAgICAgICAgICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGVudW1lcmF0b3IodGhpcywgbV9ncmFwaC52YXJBcmdDaGls
ZChub2RlLCA1KSk7Ci0KLSAgICAgICAgICAgIEdQUlJlZyBtb2RlR1BSID0gbW9kZS5ncHIoKTsK
LSAgICAgICAgICAgIGluZGV4R1BSID0gaW5kZXguZ3ByKCk7Ci0gICAgICAgICAgICBlbnVtZXJh
dG9yR1BSID0gZW51bWVyYXRvci5ncHIoKTsKLQotICAgICAgICAgICAgcmVzdWx0ID0gSlNWYWx1
ZVJlZ3NUZW1wb3JhcnkodGhpcyk7Ci0gICAgICAgICAgICByZXN1bHRSZWdzID0gcmVzdWx0LnJl
Z3MoKTsKLSAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gcmVzdWx0UmVncy5wYXlsb2Fk
R1BSKCk7Ci0KLSAgICAgICAgICAgIGJvb2wgaGF2ZVN0b3JhZ2UgPSAhIXN0b3JhZ2VFZGdlOwot
ICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0b3JhZ2VUZW1wb3Jhcnk7Ci0gICAgICAgICAgICBH
UFJSZWcgc3RvcmFnZUdQUjsKLSAgICAgICAgICAgIGlmICghaGF2ZVN0b3JhZ2UpIHsKLSAgICAg
ICAgICAgICAgICBzdG9yYWdlVGVtcG9yYXJ5ID0gR1BSVGVtcG9yYXJ5KHRoaXMsIFJldXNlLCBl
bnVtZXJhdG9yKTsKLSAgICAgICAgICAgICAgICBzdG9yYWdlR1BSID0gc3RvcmFnZVRlbXBvcmFy
eS5ncHIoKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHN0b3JhZ2VHUFIg
PSBzdG9yYWdlLmdwcigpOwotCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qg
bm90RmFzdE5hbWVkQ2FzZXM7Ci0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3Qg
Z2VuZXJhdGUgdGhpcyBjb2RlIGlmIHdlIGtub3cgYmFzZSBpcyBub3QgYW4gb2JqZWN0LgotICAg
ICAgICAgICAgbm90RmFzdE5hbWVkQ2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFRlc3QzMihNYWNy
b0Fzc2VtYmxlcjo6Tm9uWmVybywgbW9kZUdQUiwgVHJ1c3RlZEltbTMyKEpTUHJvcGVydHlOYW1l
RW51bWVyYXRvcjo6SW5kZXhlZE1vZGUgfCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OkdlbmVy
aWNNb2RlKSkpOwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICghbV9zdGF0ZS5m
b3JOb2RlKGJhc2VFZGdlKS5pc1R5cGUoU3BlY0NlbGwpKQotICAgICAgICAgICAgICAgICAgICBu
b3RGYXN0TmFtZWRDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VDZWxsR1BS
KSk7Ci0KLSAgICAgICAgICAgICAgICAvLyBDaGVjayB0aGUgc3RydWN0dXJlCi0gICAgICAgICAg
ICAgICAgLy8gRklYTUU6IElmIHdlIGtub3cgdGhlcmUncyBvbmx5IG9uZSBzdHJ1Y3R1cmUgZm9y
IGJhc2Ugd2UgY2FuIGp1c3QgZW1iZWQgaXQgaGVyZS4KLSAgICAgICAgICAgICAgICBtX2ppdC5s
b2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUNlbGxHUFIsIEpTQ2VsbDo6c3RydWN0
dXJlSURPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwotCi0gICAgICAgICAgICAgICAgYXV0byBiYWRT
dHJ1Y3R1cmUgPSBtX2ppdC5icmFuY2gzMigKLSAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgICAgICAgICBzY3JhdGNoR1BSLAotICAgICAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcygKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGVudW1lcmF0b3JHUFIsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y2FjaGVkU3Ry
dWN0dXJlSURPZmZzZXQoKSkpOwotCi0gICAgICAgICAgICAgICAgLy8gRklYTUU6IE1heWJlIHdl
IHNob3VsZCBoYXZlIGEgYmV0dGVyIHdheSB0byByZXByZXNlbnQgSW5kZXhlZCtOYW1lZD8KLSAg
ICAgICAgICAgICAgICBpZiAobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKS5ub2RlKCkgPT0g
bV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAzKS5ub2RlKCkpCi0gICAgICAgICAgICAgICAgICAg
IGJhZFN0cnVjdHVyZVNsb3dQYXRoID0gYmFkU3RydWN0dXJlOwotICAgICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICAgICAgbm90RmFzdE5hbWVkQ2FzZXMuYXBwZW5kKGJhZFN0cnVj
dHVyZSk7Ci0KLSAgICAgICAgICAgICAgICAvLyBDb21wdXRlIHRoZSBvZmZzZXQKLSAgICAgICAg
ICAgICAgICAvLyBJZiBpbmRleCBpcyBsZXNzIHRoYW4gdGhlIGVudW1lcmF0b3IncyBjYWNoZWQg
aW5saW5lIHN0b3JhZ2UsIHRoZW4gaXQncyBhbiBpbmxpbmUgYWNjZXNzCi0gICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgb3V0T2ZMaW5lQWNjZXNzID0gbV9qaXQuYnJhbmNoMzIo
TWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwKLSAgICAgICAgICAgICAgICAgICAgaW5kZXhH
UFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGVudW1lcmF0b3JHUFIsIEpTUHJvcGVydHlOYW1l
RW51bWVyYXRvcjo6Y2FjaGVkSW5saW5lQ2FwYWNpdHlPZmZzZXQoKSkpOwotCi0gICAgICAgICAg
ICAgICAgbV9qaXQubG9hZFZhbHVlKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoYmFzZUNlbGxH
UFIsIGluZGV4R1BSLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgSlNPYmplY3Q6Om9mZnNl
dE9mSW5saW5lU3RvcmFnZSgpKSwgcmVzdWx0UmVncyk7Ci0KLSAgICAgICAgICAgICAgICBkb25l
Q2FzZXMuYXBwZW5kKG1faml0Lmp1bXAoKSk7Ci0KLSAgICAgICAgICAgICAgICAvLyBPdGhlcndp
c2UgaXQncyBvdXQgb2YgbGluZQotICAgICAgICAgICAgICAgIG91dE9mTGluZUFjY2Vzcy5saW5r
KCZtX2ppdCk7Ci0gICAgICAgICAgICAgICAgbV9qaXQubW92ZShpbmRleEdQUiwgc2NyYXRjaEdQ
Uik7Ci0gICAgICAgICAgICAgICAgbV9qaXQuc3ViMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
ZW51bWVyYXRvckdQUiwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpjYWNoZWRJbmxpbmVDYXBh
Y2l0eU9mZnNldCgpKSwgc2NyYXRjaEdQUik7Ci0gICAgICAgICAgICAgICAgbV9qaXQubmVnMzIo
c2NyYXRjaEdQUik7Ci0gICAgICAgICAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIoc2Ny
YXRjaEdQUiwgc2NyYXRjaEdQUik7Ci0gICAgICAgICAgICAgICAgaWYgKCFoYXZlU3RvcmFnZSkK
LSAgICAgICAgICAgICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlQ2VsbEdQUiwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgc3RvcmFnZUdQUik7
Ci0gICAgICAgICAgICAgICAgY29uc3RleHByIGludHB0cl90IG9mZnNldE9mRmlyc3RQcm9wZXJ0
eSA9IG9mZnNldEluQnV0dGVyZmx5KGZpcnN0T3V0T2ZMaW5lT2Zmc2V0KSAqIHN0YXRpY19jYXN0
PGludHB0cl90PihzaXplb2YoRW5jb2RlZEpTVmFsdWUpKTsKLSAgICAgICAgICAgICAgICBtX2pp
dC5sb2FkVmFsdWUoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlR1BSLCBzY3JhdGNo
R1BSLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgb2Zmc2V0T2ZGaXJzdFByb3BlcnR5KSwg
cmVzdWx0UmVncyk7Ci0gICAgICAgICAgICAgICAgZG9uZUNhc2VzLmFwcGVuZChtX2ppdC5qdW1w
KCkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBub3RGYXN0TmFtZWRDYXNlcy5saW5r
KCZtX2ppdCk7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIocmVzdWx0UmVncywg
RGF0YUZvcm1hdEpTKTsKLSAgICAgICAgfSkpOwotCi0gICAgICAgIC8vIFdlIHJlbHkgb24gY29t
cGlsZUdldEJ5VmFsIHRvIGNhbGwganNWYWx1ZVJlc3VsdCBmb3IgdXMuCi0gICAgICAgIC8vIEZJ
WE1FOiBUaGlzIGlzIGtpbmRhIGhhY2t5Li4uCi0gICAgICAgIEFTU0VSVChnZW5lcmF0aW9uSW5m
byhub2RlKS5qc1ZhbHVlUmVncygpID09IHJlc3VsdFJlZ3MgJiYgZ2VuZXJhdGlvbkluZm8obm9k
ZSkucmVnaXN0ZXJGb3JtYXQoKSA9PSBEYXRhRm9ybWF0SlMpOwotCi0gICAgICAgIGlmIChiYWRT
dHJ1Y3R1cmVTbG93UGF0aC5pc1NldCgpKQotICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3Ioc2xvd1BhdGhDYWxsKGJhZFN0cnVjdHVyZVNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25FbnVt
ZXJhdG9yUmVjb3Zlck5hbWVBbmRHZXRCeVZhbCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGJhc2VDZWxsR1BSLCBpbmRleEdQUiwgZW51bWVyYXRvckdQUikpOwotCi0g
ICAgICAgIGRvbmVDYXNlcy5saW5rKCZtX2ppdCk7Ci0gICAgfTsKLQotICAgIGlmIChpc0NlbGwo
YmFzZUVkZ2UudXNlS2luZCgpKSkgewotICAgICAgICAvLyBVc2UgbWFudWFsIG9wZXJhbmQgc3Bl
Y3VsYXRpb24gc2luY2UgRml4dXAgbWF5IGhhdmUgcGlja2VkIGEgVXNlS2luZCBtb3JlIHJlc3Ry
aWN0aXZlIHRoYW4gQ2VsbFVzZS4KLSAgICAgICAgc3BlY3VsYXRlKG5vZGUsIGJhc2VFZGdlKTsK
LSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZU9wZXJhbmQodGhpcywgYmFzZUVkZ2Us
IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7Ci0gICAgICAgIGdlbmVyYXRlKGJhc2VPcGVyYW5k
LmdwcigpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlT3BlcmFu
ZCh0aGlzLCBiYXNlRWRnZSk7Ci0gICAgICAgIGdlbmVyYXRlKGJhc2VPcGVyYW5kLmdwcigpKTsK
LSAgICB9Ci19Ci0KICNlbmRpZgogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IDYzYjQ1
NGY4Y2Q3ZmY1N2FhMzkyNGUzODQ2ZDBhMGQ0MjA3MjA4YjIuLmRiNTJjMDU2YzAxMDE3ZjVjNjJj
YmMxYjVmZTEzNzNhMDdhN2I0ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0xMTgsMjEgKzExOCw2IEBAIGlubGluZSBKU1ZhbHVl
IG9wRW51bWVyYXRvckdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgYmFzZVZhCiAgICAgY2FzZSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OkdlbmVyaWNNb2Rl
OiB7CiAgICAgICAgIGlmIChhcnJheVByb2ZpbGUgJiYgYmFzZVZhbHVlLmlzQ2VsbCgpICYmIG1v
ZGUgIT0gSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpPd25TdHJ1Y3R1cmVNb2RlKQogICAgICAg
ICAgICAgYXJyYXlQcm9maWxlLT5vYnNlcnZlU3RydWN0dXJlSUQoYmFzZVZhbHVlLmFzQ2VsbCgp
LT5zdHJ1Y3R1cmVJRCgpKTsKLSNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICBpZiAoIXBy
b3BlcnR5TmFtZVZhbHVlLmlzQ2VsbCgpKSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGJyYW5jaCBp
cyBvbmx5IG5lZWRlZCBiZWNhdXNlIHdlIHVzZSB0aGlzIG1ldGhvZAotICAgICAgICAgICAgLy8g
Ym90aCBhcyBhIHNsb3dfcGF0aCBhbmQgYXMgYSBERkcgY2FsbCBvcC4gV2UnbGwgZW5kIHVwCi0g
ICAgICAgICAgICAvLyBoZXJlIGlmIHByb3BlcnR5TmFtZSBpcyBub3QgYSBjZWxsIHRoZW4gd2Ug
YXJlIGluCi0gICAgICAgICAgICAvLyBpbmRleCtuYW1lZCBtb2RlLCBzbyBkbyB3aGF0IFJlY292
ZXJOYW1lQW5kR2V0VmFsCi0gICAgICAgICAgICAvLyBkb2VzLiBUaGlzIGNhbiBwcm9iYWJseSBi
ZSByZW1vdmVkIGlmIHdlIHJlLWVuYWJsZSB0aGUKLSAgICAgICAgICAgIC8vIG9wdGltaXphdGlv
bnMgZm9yIGVudW1lcmF0b3JHZXRCeVZhbCBpbiBERkcsIHNlZSBidWcKLSAgICAgICAgICAgIC8v
ICMyMzAxODkuCi0gICAgICAgICAgICBKU1N0cmluZyogc3RyaW5nID0gZW51bWVyYXRvci0+cHJv
cGVydHlOYW1lQXRJbmRleChpbmRleCk7Ci0gICAgICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9
IHN0cmluZy0+dG9JZGVudGlmaWVyKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKSk7Ci0gICAg
ICAgIH0KLSNlbmRpZgogICAgICAgICBKU1N0cmluZyogc3RyaW5nID0gYXNTdHJpbmcocHJvcGVy
dHlOYW1lVmFsdWUpOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IHN0cmluZy0+dG9JZGVu
dGlmaWVyKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442016</attachid>
            <date>2021-10-21 07:11:05 -0700</date>
            <delta_ts>2021-10-22 06:21:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232052-20211021141103.patch</filename>
            <type>text/plain</type>
            <size>47539</size>
            <attacher name="Mikhail R. Gadelha">mikhail</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MzcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
NzY0YmM5OTc5NDVmYWY5YWE5N2IxZDNlNDZhOTgwOWQyNTMzNmY4Li4yNDQ0NjdmOWY3YzIxZDFm
YWM4OGRlMGEyZjcyMmUyNjVmZjQ5YTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDUgQEAKKzIwMjEtMTAtMjAgIE1pa2hhaWwgUi4gR2FkZWxoYSAgPG1pa2hhaWxAaWdh
bGlhLmNvbT4KKworICAgICAgICBbSlNDXVszMmJpdF0gUmUtZW5hYmxlIGNvbXBpbGVFbnVtZXJh
dG9yR2V0QnlWYWwgZmFzdCBwYXRoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzIwNTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI5NTQzLCB0aGUgY29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbAorICAgICAgICBmYXN0IHBhdGgg
aGFkIHRvIGJlIGRpc2FibGVkIGluIDMyIGJpdHMgZHVlIHRvIG5vdCBoYXZpbmcgZW5vdWdoIHJl
Z2lzdGVycy4KKyAgICAgICAgVGhlcmUgYXJlIGVub3VnaCByZWdpc3RlcnMgYXZhaWxhYmxlIG5v
dywgc28gd2UgY2FuIHJlLWVuYWJsZSB0aGUgZmFzdCBwYXRoIGFuZAorICAgICAgICByZW1vdmVk
IHRoZSBzcGVjdWxhdGlvbiB0aGF0IHRoZSBiYXNlRWRnZSBvZiBib3RoIGVudW1lcmF0b3JHZXRC
eVZhbCBhbmQKKyAgICAgICAgZ2V0QnlWYWwgaXMgYSBDZWxsIGluIDMyIGJpdHMuCisKKyAgICAg
ICAgSSd2ZSBhbHNvIHVwZGF0ZWQgdGhlIDMyIGJpdHMgdmVyc2lvbiBvZiBjb21waWxlR2V0QnlW
YWwgdG8gYmUgY2xvc2VyIHRvIHRoZSA2NCAKKyAgICAgICAgYml0cyB2ZXJzaW9uOiB1c2luZyBE
RkdfQ1JBU0ggaW5zdGVhZCBvZiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCwgdXNpbmcgbnVs
bHB0cgorICAgICAgICBpbnN0ZWFkIG9mIDAsIGFuZCByZW1vdmVkIHNvbWUgd2hpdGVzcGFjZXMu
CisKKyAgICAgICAgSmV0U3RyZWFtMiByZXN1bHRzIHNob3dzIHRoYXQgcGVyZm9ybWFuY2UgaXMg
bmV1dHJhbCBmb3IgdGhpcyBwYXRjaCAoYXMgbWVhc3VyZWQgb24KKyAgICAgICAgYW4gQVJNdjgp
OgorCisgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgIHwgICAgICAgICAgc3VidGVzdCAgICAgICAgICB8
ICAgIHB0cyAgICAgIHwgICAgcHRzICAgICAgfCAgYiAvIGEgICB8IHBWYWx1ZSAoc2lnbmlmaWNh
bmNlIHVzaW5nIEZhbHNlIERpc2NvdmVyeSBSYXRlKSB8CisgICAgICAgIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAg
IHwgZ2F1c3NpYW4tYmx1ciAgICAgICAgICAgICB8MzMuNjg2OTY1ICAgIHwzMi44NzM2ODUgICAg
fDAuOTc1ODU4ICB8IDAuNjg3MzIyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8CisgICAgICAgIHwganNvbi1wYXJzZS1pbnNwZWN0b3IgICAgICB8NDkuMzQxNzc5ICAg
IHw1MC43NzQ0ODcgICAgfDEuMDI5MDM2ICB8IDAuMDI5Mzc4ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgcHJlcGFjay13dGIgICAgICAgICAgICAg
ICB8NS43NDQ0MDMgICAgIHw1Ljk5NjYxOCAgICAgfDEuMDQzOTA2ICB8IDAuMTcwMTI0ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgV1NMICAgICAg
ICAgICAgICAgICAgICAgICB8MC4yNzQyNDkgICAgIHwwLjI3NjY5MCAgICAgfDEuMDA4OTAyICB8
IDAuMjE5ODU1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAg
ICAgIHwgc3RhbmZvcmQtY3J5cHRvLXBia2RmMiAgICB8ODQuODk2OTczICAgIHw4NS42MzA2MDgg
ICAgfDEuMDA4NjQxICB8IDAuMzYxNjUxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8CisgICAgICAgIHwgY2RqcyAgICAgICAgICAgICAgICAgICAgICB8MjYuNzkxMTU4
ICAgIHwzMC4wOTY5OTkgICAgfDEuMTIzMzkzICB8IDAuMzcyMjc3ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgVW5pUG9rZXIgICAgICAgICAgICAg
ICAgICB8MzQuNzk3NTQxICAgIHwzNS4zMDA5NTAgICAgfDEuMDE0NDY3ICB8IDAuMDkxODY4ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwganNvbi1z
dHJpbmdpZnktaW5zcGVjdG9yICB8NTAuNTE0MzkyICAgIHw1NS43Mzg3MjIgICAgfDEuMTAzNDIz
ICB8IDAuMDQ0Nzk1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cisg
ICAgICAgIHwgY3J5cHRvLXNoYTEtU1AgICAgICAgICAgICB8NzguNzM4MDY1ICAgIHw3OC42Njcz
MzEgICAgfDAuOTk5MTAyICB8IDAuOTMxNTEwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8CisgICAgICAgIHwgQmFzaWMgICAgICAgICAgICAgICAgICAgICB8NzguMzI0
MzQwICAgIHw3OS4yOTcxNDYgICAgfDEuMDEyNDIwICB8IDAuNTMyMDg3ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgY2hhaS13dGIgICAgICAgICAg
ICAgICAgICB8MTMuMDkzODI4ICAgIHwxMy43MDAxNjMgICAgfDEuMDQ2MzA3ICB8IDAuMTQ2ODkz
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgY3J5
cHRvLWFlcy1TUCAgICAgICAgICAgICB8NzUuMjEwMDg1ICAgIHw3Ni41NzUwMzkgICAgfDEuMDE4
MTQ5ICB8IDAuMTE5NDkwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
CisgICAgICAgIHwgQmFieWxvbiAgICAgICAgICAgICAgICAgICB8NjUuMTYxMDM5ICAgIHw1MC4z
NDAwNDggICAgfDAuNzcyNTQ4ICB8IDAuNDM3NDk0ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8CisgICAgICAgIHwgc3RyaW5nLXVucGFjay1jb2RlLVNQICAgICB8ODMu
MDYwMjAzICAgIHw4My4yNjU4NDYgICAgfDEuMDAyNDc2ICB8IDAuNTE5ODgwICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgc3RhbmZvcmQtY3J5cHRv
LWFlcyAgICAgICB8NDkuMjUwMTM4ICAgIHw1MC4xNDM3MjQgICAgfDEuMDE4MTQ0ICB8IDAuNDQz
NDg5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwg
cmF5dHJhY2UgICAgICAgICAgICAgICAgICB8NzAuOTg0ODA5ICAgIHw3My4zNzQ5NjEgICAgfDEu
MDMzNjcxICB8IDAuMjkzMDUwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8CisgICAgICAgIHwgbXVsdGktaW5zcGVjdG9yLWNvZGUtbG9hZCB8MTE1LjI1OTI0NiAgIHwx
MTguNDQ5MzEyICAgfDEuMDI3Njc3ICB8IDAuMDQwNjkyICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgaGFzaC1tYXAgICAgICAgICAgICAgICAgICB8
ODIuNTgxMzIyICAgIHw3OS4zNTEzNDAgICAgfDAuOTYwODg3ICB8IDAuMzU2NTQ3ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgT2ZmbGluZUFzc2Vt
YmxlciAgICAgICAgICB8MjAuOTY4NjI4ICAgIHwyMS42NzQwNTcgICAgfDEuMDMzNjQyICB8IDAu
MDQ3NTE4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAg
IHwgY29mZmVlc2NyaXB0LXd0YiAgICAgICAgICB8MC4zMjE2OTEgICAgIHwwLjMyMDU5MiAgICAg
fDAuOTk2NTgxICB8IDAuNTUxNDc5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8CisgICAgICAgIHwgQm94MkQgICAgICAgICAgICAgICAgICAgICB8NDEuODk1Njg0ICAg
IHw0Mi44NjY5MzggICAgfDEuMDIzMTgzICB8IDAuNDE1OTY5ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgbGViYWItd3RiICAgICAgICAgICAgICAg
ICB8Ni4zNTI2NTAgICAgIHw2LjU2Mjg3OSAgICAgfDEuMDMzMDkzICB8IDAuMjA0NTY4ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgZGF0ZS1mb3Jt
YXQteHBhcmItU1AgICAgICB8NDUuMDI5NDk5ICAgIHw0Ny44NzYwMjAgICAgfDEuMDYzMjE1ICB8
IDAuMDc4NDUyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAg
ICAgIHwgbmF2aWVyLXN0b2tlcyAgICAgICAgICAgICB8MTc3LjQ3MjM3MSAgIHwxODEuNDg0NzIw
ICAgfDEuMDIyNjA4ICB8IDAuODI3MTU0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8CisgICAgICAgIHwganNoaW50LXd0YiAgICAgICAgICAgICAgICB8NS44OTc2OTAg
ICAgIHw1LjkxODYzMiAgICAgfDEuMDAzNTUxICB8IDAuOTIzMTgwICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgcmVnZXgtZG5hLVNQICAgICAgICAg
ICAgICB8MTUxLjI1NTUwNCAgIHwxNTIuMTk4MDYxICAgfDEuMDA2MjMyICB8IDAuMzA3ODcxICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgYXN5bmMt
ZnMgICAgICAgICAgICAgICAgICB8MjYuNzM5NDkyICAgIHwyNy4yMjMyNTUgICAgfDEuMDE4MDky
ICB8IDAuMjI0Mjg5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cisg
ICAgICAgIHwgYmFzZTY0LVNQICAgICAgICAgICAgICAgICB8MTE4LjY5MDg0NiAgIHwxMTEuMTI3
OTk1ICAgfDAuOTM2MjgxICB8IDAuMzcwOTA2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8CisgICAgICAgIHwgZmlyc3QtaW5zcGVjdG9yLWNvZGUtbG9hZCB8NjguNDcy
Mjc5ICAgIHw3Mi4yNDYyMDEgICAgfDEuMDU1MTE2ICB8IDAuMDA4NTMwICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgdHlwZXNjcmlwdCAgICAgICAg
ICAgICAgICB8Mi41ODcxOTEgICAgIHwyLjUyOTU2MyAgICAgfDAuOTc3NzI2ICB8IDAuNDk0MDMz
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgb2N0
YW5lLWNvZGUtbG9hZCAgICAgICAgICB8MjIzLjU0Nzg2NCAgIHwyNTEuNDQ1OTUxICAgfDEuMTI0
Nzk3ICB8IDAuMTQ3NjU1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
CisgICAgICAgIHwgZmxvYXQtbW0uYyAgICAgICAgICAgICAgICB8MC45NDI2MTggICAgIHwwLjkx
NzI0MyAgICAgfDAuOTczMDgwICB8IDAuMTM4MDE3ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8CisgICAgICAgIHwgQWlyICAgICAgICAgICAgICAgICAgICAgICB8NTMu
NDU1Mjg0ICAgIHw1Ni42MjQzNDggICAgfDEuMDU5Mjg0ICB8IDAuMjA0MDU1ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgc3BsYXkgICAgICAgICAg
ICAgICAgICAgICB8ODIuNjUyODQ0ICAgIHw5My41NjkwNDggICAgfDEuMTMyMDczICB8IDAuMDE4
MDM3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwg
YWktYXN0YXIgICAgICAgICAgICAgICAgICB8MTE3LjE0NDY1NyAgIHwxMjIuNTU3MDIzICAgfDEu
MDQ2MjAyICB8IDAuNDA5OTQzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8CisgICAgICAgIHwgYWNvcm4td3RiICAgICAgICAgICAgICAgICB8My41NzEwMDggICAgIHwz
LjcwMjU3NiAgICAgfDEuMDM2ODQ0ICB8IDAuNTYxNDY0ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgZ2JlbXUgICAgICAgICAgICAgICAgICAgICB8
MTkuNzE1MjYwICAgIHwxOS43OTM5NjQgICAgfDEuMDAzOTkyICB8IDAuMDczMzg3ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgcmljaGFyZHMgICAg
ICAgICAgICAgICAgICB8MTA3LjQ5MzE3OCAgIHwxMDguNDg1MDY2ICAgfDEuMDA5MjI3ICB8IDAu
MTg3NTk0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAg
IHwgM2QtY3ViZS1TUCAgICAgICAgICAgICAgICB8NzguODA3MjM0ICAgIHw4MC4zMzg5ODkgICAg
fDEuMDE5NDM3ICB8IDAuMjExMzAzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8CisgICAgICAgIHwgZXNwcmVlLXd0YiAgICAgICAgICAgICAgICB8MS44OTE0ODYgICAg
IHwxLjg4MTk3NyAgICAgfDAuOTk0OTczICB8IDAuNjQzNjIyICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgdGFnY2xvdWQtU1AgICAgICAgICAgICAg
ICB8NjIuMzIxNTE2ICAgIHw2NS43MjM1NzYgICAgfDEuMDU0NTg5ICB8IDAuMTA5MzAyICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgbWFuZHJlZWwg
ICAgICAgICAgICAgICAgICB8MTQuODUxMTU5ICAgIHwxNC44OTgyMzUgICAgfDEuMDAzMTcwICB8
IDAuMTg1Mzg0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAg
ICAgIHwgM2QtcmF5dHJhY2UtU1AgICAgICAgICAgICB8NTAuOTMxNDEwICAgIHw1Mi45MjAxNzYg
ICAgfDEuMDM5MDQ4ICB8IDAuMjM0NDM2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8CisgICAgICAgIHwgZGVsdGEtYmx1ZSAgICAgICAgICAgICAgICB8MTE1LjUzNTI3
NCAgIHwxMTguOTE4MzA0ICAgfDEuMDI5MjgxICB8IDAuMTA5MTgwICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgTUwgICAgICAgICAgICAgICAgICAg
ICAgICB8MTIuMTgzNTA3ICAgIHwxMi4zMTI1MDQgICAgfDEuMDEwNTg4ICB8IDAuMDQyMTYyICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgcmVnZXhw
ICAgICAgICAgICAgICAgICAgICB8NjcuMTQ0NDcxICAgIHw3NC4wOTEyNDEgICAgfDEuMTAzNDYw
ICB8IDAuMDc5Mjc4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cisg
ICAgICAgIHwgY3J5cHRvICAgICAgICAgICAgICAgICAgICB8MTkyLjAyNzA3MSAgIHwxOTYuOTAw
MTc2ICAgfDEuMDI1Mzc3ICB8IDAuMDY3MjI4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8CisgICAgICAgIHwgY3J5cHRvLW1kNS1TUCAgICAgICAgICAgICB8NjguNDA5
ODMwICAgIHw2OC4yMjA2NjQgICAgfDAuOTk3MjM1ICB8IDAuODMxODgzICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgZWFybGV5LWJveWVyICAgICAg
ICAgICAgICB8MTIyLjg3NzgxNCAgIHwxMjYuMDc3NjU5ICAgfDEuMDI2MDQxICB8IDAuNjE3OTU0
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgb2N0
YW5lLXpsaWIgICAgICAgICAgICAgICB8NC40NTk3MTEgICAgIHw0LjQ5Mjc4NiAgICAgfDEuMDA3
NDE3ICB8IDAuNzU2ODIxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
CisgICAgICAgIHwgZGF0ZS1mb3JtYXQtdG9mdGUtU1AgICAgICB8NDYuNDY0Mjg1ICAgIHw0Ny42
MzMxMzEgICAgfDEuMDI1MTU2ICB8IDAuMDY4NzAzICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8CisgICAgICAgIHwgbi1ib2R5LVNQICAgICAgICAgICAgICAgICB8OTcu
NTcwNDg5ICAgIHw5OC4wNTQ5MzAgICAgfDEuMDA0OTY1ICB8IDAuMDEzNDY0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgcGRmanMgICAgICAgICAg
ICAgICAgICAgICB8MzMuMzAzNTkzICAgIHwzMy44MTQyODAgICAgfDEuMDE1MzM0ICB8IDAuMzQ4
MDY2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwg
RmxpZ2h0UGxhbm5lciAgICAgICAgICAgICB8MTA1LjAzMzY2NyAgIHwxMTEuOTc1ODg5ICAgfDEu
MDY2MDk1ICB8IDAuMTA2OTExICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8CisgICAgICAgIHwgdWdsaWZ5LWpzLXd0YiAgICAgICAgICAgICB8My43MDY4NjQgICAgIHwz
LjczMzMwOSAgICAgfDEuMDA3MTM0ICB8IDAuNTEwNzk0ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgYmFieWxvbi13dGIgICAgICAgICAgICAgICB8
Ny41NjQyNDIgICAgIHw2LjEzMjYzMCAgICAgfDAuODEwNzQwICB8IDAuNDU3MTY0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIHwgc3RhbmZvcmQtY3J5
cHRvLXNoYTI1NiAgICB8ODcuNzEwNDc3ICAgIHw4OC41NzAxNTYgICAgfDEuMDA5ODAxICB8IDAu
NzIyNzA2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAg
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKKyAgICAgICAgYSBtZWFuID0gMzEuMTA0MjkKKyAgICAgICAgYiBtZWFuID0gMzEu
NDgyMDEKKyAgICAgICAgcFZhbHVlID0gMC40NDMwMjI1NTg2CisgICAgICAgIChCaWdnZXIgbWVh
bnMgYXJlIGJldHRlci4pCisgICAgICAgIDEuMDEyIHRpbWVzIGJldHRlcgorICAgICAgICBSZXN1
bHRzIEFSRSBOT1Qgc2lnbmlmaWNhbnQKKworICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAq
IGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04pOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlR2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlRW51bWVyYXRvckdldEJ5VmFsKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVFbnVtZXJhdG9yR2V0QnlWYWwpOiBEZWxldGVkLgorCiAyMDIxLTEwLTE4ICBZdXN1a2UgU3V6
dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gVXNlIFVTRShMQVJHRV9U
WVBFRF9BUlJBWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CmluZGV4IDU2NmY1MzlkZTFhNDYzNGRmNmU5NTNmN2UxZWQyMmMxNGI5YWNkM2UuLmUwZGZkZDU3
NzkwMzIwZmQxODQyYjg5YzBmNmVkM2M5NTQzMTBhODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTEyNCw5ICsxMTI0LDYgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgfQotI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgICAgICAgICAg
Zml4RWRnZTxDZWxsVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsgLy8gU3BlY3Vs
YXRpbmcgY2VsbCBkdWUgdG8gcmVnaXN0ZXIgcHJlc3N1cmUgb24gMzItYml0LgotI2VuZGlmCiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpGb3JjZUV4aXQ6
CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcAppbmRleCA5NDUzNTM1NmRlOTliNDAyNDFhZjllNzYxMGY1NTQ1NDc5NWIz
OWNlLi4xMzdhYjU1MTkxNGVkMzZlMzdlZTFlZjQ2ODJkYmEyNDZhMmEwZTk4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTc0OSwzNSArNzQ5LDYg
QEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkFyaXRoVHJ1bmMsIEVuY29kZWRK
U1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGcKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVtYmVyKHRydW5jYXRlZFZhbHVlT2ZBcmd1bWVudCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uR2V0QnlWYWxDZWxsLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogYmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFByb3BlcnR5KSkKLXsKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICBKU1ZhbHVlIHByb3Bl
cnR5ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRQcm9wZXJ0eSk7Ci0KLSAgICBpZiAoc3RkOjpv
cHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwcm9wZXJ0eS50cnlHZXRBc1VpbnQzMkluZGV4KCkp
Ci0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgZ2V0QnlWYWxXaXRoSW5kZXgoZ2xv
YmFsT2JqZWN0LCBiYXNlLCAqaW5kZXgpKTsKLQotICAgIGlmIChwcm9wZXJ0eS5pc1N0cmluZygp
KSB7Ci0gICAgICAgIFN0cnVjdHVyZSYgc3RydWN0dXJlID0gKmJhc2UtPnN0cnVjdHVyZSh2bSk7
Ci0gICAgICAgIGlmIChKU0NlbGw6OmNhblVzZUZhc3RHZXRPd25Qcm9wZXJ0eShzdHJ1Y3R1cmUp
KSB7Ci0gICAgICAgICAgICBSZWZQdHI8QXRvbVN0cmluZ0ltcGw+IGV4aXN0aW5nQXRvbVN0cmlu
ZyA9IGFzU3RyaW5nKHByb3BlcnR5KS0+dG9FeGlzdGluZ0F0b21TdHJpbmcoZ2xvYmFsT2JqZWN0
KTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwotICAgICAgICAgICAgaWYgKGV4aXN0aW5nQXRvbVN0cmluZykgewotICAgICAgICAgICAg
ICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGJhc2UtPmZhc3RHZXRPd25Qcm9wZXJ0eSh2bSwgc3Ry
dWN0dXJlLCBleGlzdGluZ0F0b21TdHJpbmcuZ2V0KCkpKQotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICBhdXRvIHByb3BlcnR5TmFtZSA9IHByb3BlcnR5LnRvUHJvcGVydHlLZXko
Z2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShK
U1ZhbHVlKGJhc2UpLmdldChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSkpKTsKLX0KLQogQUxX
QVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBnZXRCeVZhbENlbGxJbnQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgVk0mIHZtLCBKU0NlbGwqIGJhc2UsIGludDMyX3QgaW5kZXgpCiB7CiAg
ICAgaWYgKGluZGV4IDwgMCkgewpAQCAtMjUwNyw3ICsyNDc4LDcgQEAgSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbkVudW1lcmF0b3JOZXh0VXBkYXRlUHJvcGVydHlOYW1lLCBKU1N0
cmluZyosICgKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uRW51bWVyYXRvclJlY292ZXJOYW1lQW5kR2V0QnlWYWwsIEVuY29kZWRKU1Zh
bHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBiYXNlLCB1aW50MzJf
dCBpbmRleCwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBlbnVtZXJhdG9yKSkKK0pTQ19ERUZJ
TkVfSklUX09QRVJBVElPTihvcGVyYXRpb25FbnVtZXJhdG9yUmVjb3Zlck5hbWVBbmRHZXRCeVZh
bCwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSBiYXNlVmFsdWUsIHVpbnQzMl90IGluZGV4LCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3IqIGVudW1lcmF0b3IpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yNTE4
LDcgKzI0ODksOCBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRW51bWVyYXRv
clJlY292ZXJOYW1lQW5kR2V0QnlWYWwsIEVuY29kZWRKU1ZhbAogICAgIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUgPSBzdHJpbmctPnRvSWRlbnRpZmllcihnbG9iYWxPYmplY3QpOwogICAgIC8v
IFRoaXMgc2hvdWxkIG9ubHkgcmVhbGx5IHJldHVybiBmb3IgVGVybWluYXRpb25FeGNlcHRpb24g
c2luY2Ugd2Uga25vdyBzdHJpbmcgaXMgYmFja2VkIGJ5IGEgVVVJRC4KICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgIEpTT2JqZWN0KiBvYmplY3QgPSBiYXNlLT50b09i
amVjdChnbG9iYWxPYmplY3QpOworICAgIEpTVmFsdWUgYmFzZSA9IEpTVmFsdWU6OmRlY29kZShi
YXNlVmFsdWUpOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBiYXNlLnRvT2JqZWN0KGdsb2JhbE9i
amVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdC0+Z2V0KGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lKSkpOwpAQCAtMjUzOSwxOSArMjUxMSw2IEBAIEpTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25FbnVtZXJhdG9ySW5CeVZhbCwgRW5jb2RlZEpTVmFsdWUs
IChKU0dsb2JhbE9iCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUoanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbkJ5VmFsKGdsb2JhbE9iamVjdCwgYmFz
ZSwgcHJvcGVydHlOYW1lKSkpKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbkVudW1lcmF0b3JHZXRCeVZhbEdlbmVyaWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgYmFzZVZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBwcm9wZXJ0eU5hbWVWYWx1ZSwgdWludDMyX3QgaW5kZXgsIGludDMyX3QgbW9kZU51bWJl
ciwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBlbnVtZXJhdG9yKSkKLXsKLSAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJF
X0NBTExfRlJBTUUodm0pOwotICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0KLSAgICBKU1ZhbHVlIHByb3BlcnR5ID0gSlNWYWx1ZTo6ZGVjb2RlKHByb3Bl
cnR5TmFtZVZhbHVlKTsKLSAgICBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OkZsYWcgbW9kZSA9
IHN0YXRpY19jYXN0PEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6RmxhZz4obW9kZU51bWJlcik7
Ci0gICAgSlNWYWx1ZSBiYXNlID0gSlNWYWx1ZTo6ZGVjb2RlKGJhc2VWYWx1ZSk7Ci0gICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoQ29tbW9uU2xvd1BhdGhzOjpv
cEVudW1lcmF0b3JHZXRCeVZhbChnbG9iYWxPYmplY3QsIGJhc2UsIHByb3BlcnR5LCBpbmRleCwg
bW9kZSwgZW51bWVyYXRvcikpKTsKLX0KLQogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbkVudW1lcmF0b3JIYXNPd25Qcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBiYXNlVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIHByb3BlcnR5TmFtZVZhbHVlLCB1aW50MzJfdCBpbmRleCwgaW50MzJfdCBtb2RlTnVtYmVy
KSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCmluZGV4IDRmZDU3OTVkMmQyYWU1MDQ3YmYxODhlNGNi
MzcyMDhiZWU0YTFkYjMuLmMyMmFiYTc3MGZjOTljYzY0YmM1YjllN2Q4ZDhkMWI1YmUyNThiMjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCkBAIC05MCw3ICs5
MCw2IEBAIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQXJpdGhSb3VuZCwgRW5j
b2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbkFyaXRoRmxvb3IsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBF
bmNvZGVkSlNWYWx1ZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Bcml0
aENlaWwsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSkp
OwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Bcml0aFRydW5jLCBFbmNvZGVk
SlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUpKTsKLUpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0QnlWYWxDZWxsLCBFbmNvZGVkSlNWYWx1ZSwgKEpT
R2xvYmFsT2JqZWN0KiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5KSk7
CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldEJ5VmFsT2JqZWN0SW50LCBF
bmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqLCBpbnQzMl90KSk7CiBK
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldEJ5VmFsU3RyaW5nSW50LCBFbmNv
ZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgSlNTdHJpbmcqLCBpbnQzMl90KSk7CiBKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldEJ5VmFsT2JqZWN0U3RyaW5nLCBFbmNv
ZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiwgSlNDZWxsKiBzdHJpbmcpKTsK
QEAgLTExMSw4ICsxMTAsNyBAQCBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkVu
dW1lcmF0b3JOZXh0VXBkYXRlSW5kZXhBbmRNb2RlLCBFbmNvZGVkSlNWYQogSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25FbnVtZXJhdG9yTmV4dFVwZGF0ZVByb3BlcnR5TmFtZSwg
SlNTdHJpbmcqLCAoSlNHbG9iYWxPYmplY3QqLCB1aW50MzJfdCwgaW50MzJfdCwgSlNQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25F
bnVtZXJhdG9ySW5CeVZhbCwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIEVuY29k
ZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgdWludDMyX3QsIGludDMyX3QpKTsKIEpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRW51bWVyYXRvckhhc093blByb3BlcnR5LCBFbmNv
ZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1Zh
bHVlLCB1aW50MzJfdCwgaW50MzJfdCkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25FbnVtZXJhdG9yUmVjb3Zlck5hbWVBbmRHZXRCeVZhbCwgRW5jb2RlZEpTVmFsdWUsIChK
U0dsb2JhbE9iamVjdCosIEpTQ2VsbCosIHVpbnQzMl90LCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3IqKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkVudW1lcmF0b3JHZXRC
eVZhbEdlbmVyaWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUsIHVpbnQzMl90LCBpbnQzMl90LCBKU1Byb3BlcnR5TmFtZUVu
dW1lcmF0b3IqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkVudW1lcmF0
b3JSZWNvdmVyTmFtZUFuZEdldEJ5VmFsLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0
KiwgRW5jb2RlZEpTVmFsdWUsIHVpbnQzMl90LCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqKSk7
CiAKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3UmVnZXhwV2l0aExhc3RJ
bmRleCwgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUp
KTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXksIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB2b2lkKiwgc2l6ZV90KSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDc0OWVmNTQ2
YWJmOWNkZmU3MDA1NDI3ODdlMDY1ZmU2NTE5NDlkOGUuLmM3Y2JhNjAzNzFjNzgwNGVhOThjMTc2
YTA3NmE2OTE1MTliNzNhNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xNTg1NCw2ICsxNTg1NCwxMjAgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZU1ha2VSb3BlKE5vZGUqIG5vZGUpCiAjZW5kaWYKIH0KIAordm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbChOb2RlKiBub2RlKQorewor
ICAgIEVkZ2UgYmFzZUVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApOworICAgIGF1
dG8gZ2VuZXJhdGUgPSBbJl0gKEpTVmFsdWVSZWdzIGJhc2VSZWdzKSB7CisgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wTGlzdCBkb25lQ2FzZXM7CisgICAgICAgIEpTVmFsdWVSZWdzVGVtcG9y
YXJ5IHJlc3VsdDsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVnczsKKyAgICAgICAgR1BS
UmVnIGluZGV4R1BSOworICAgICAgICBHUFJSZWcgZW51bWVyYXRvckdQUjsKKyAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgYmFkU3RydWN0dXJlU2xvd1BhdGg7CisKKyAgICAgICAgY29tcGls
ZUdldEJ5VmFsKG5vZGUsIHNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEpTVmFsdWVSZWdzLCBEYXRh
Rm9ybWF0PihEYXRhRm9ybWF0KT4oWyZdIChEYXRhRm9ybWF0KSB7CisgICAgICAgICAgICBFZGdl
IHN0b3JhZ2VFZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAyKTsKKyAgICAgICAgICAg
IFN0b3JhZ2VPcGVyYW5kIHN0b3JhZ2U7CisgICAgICAgICAgICBpZiAoc3RvcmFnZUVkZ2UpCisg
ICAgICAgICAgICAgICAgc3RvcmFnZS5lbXBsYWNlKHRoaXMsIHN0b3JhZ2VFZGdlKTsKKyAgICAg
ICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBpbmRleCh0aGlzLCBtX2dyYXBoLnZh
ckFyZ0NoaWxkKG5vZGUsIDMpKTsKKyAgICAgICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3Bl
cmFuZCBtb2RlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgNCkpOworICAgICAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZW51bWVyYXRvcih0aGlzLCBtX2dyYXBoLnZhckFyZ0No
aWxkKG5vZGUsIDUpKTsKKworICAgICAgICAgICAgR1BSUmVnIG1vZGVHUFIgPSBtb2RlLmdwcigp
OworICAgICAgICAgICAgaW5kZXhHUFIgPSBpbmRleC5ncHIoKTsKKyAgICAgICAgICAgIGVudW1l
cmF0b3JHUFIgPSBlbnVtZXJhdG9yLmdwcigpOworCisgICAgICAgICAgICBib29sIGhhdmVTdG9y
YWdlID0gISFzdG9yYWdlRWRnZTsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBzdG9yYWdlVGVt
cG9yYXJ5OworICAgICAgICAgICAgR1BSUmVnIHN0b3JhZ2VHUFI7CisgICAgICAgICAgICBpZiAo
IWhhdmVTdG9yYWdlKSB7CisgICAgICAgICAgICAgICAgc3RvcmFnZVRlbXBvcmFyeSA9IEdQUlRl
bXBvcmFyeSh0aGlzLCBSZXVzZSwgZW51bWVyYXRvcik7CisgICAgICAgICAgICAgICAgc3RvcmFn
ZUdQUiA9IHN0b3JhZ2VUZW1wb3JhcnkuZ3ByKCk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgICAgICBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKKworICAgICAgICAgICAgZmx1
c2hSZWdpc3RlcnMoKTsKKworICAgICAgICAgICAgcmVzdWx0ID0gSlNWYWx1ZVJlZ3NUZW1wb3Jh
cnkodGhpcyk7CisgICAgICAgICAgICByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKKyAgICAg
ICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gcmVzdWx0UmVncy5wYXlsb2FkR1BSKCk7CisKKyAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBub3RGYXN0TmFtZWRDYXNlczsKKwor
ICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBnZW5lcmF0ZSB0aGlzIGNvZGUgaWYg
d2Uga25vdyBiYXNlIGlzIG5vdCBhbiBvYmplY3QuCisgICAgICAgICAgICBub3RGYXN0TmFtZWRD
YXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBt
b2RlR1BSLCBUcnVzdGVkSW1tMzIoSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpJbmRleGVkTW9k
ZSB8IEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6R2VuZXJpY01vZGUpKSk7CisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgaWYgKCFtX3N0YXRlLmZvck5vZGUoYmFzZUVkZ2UpLmlzVHlw
ZShTcGVjQ2VsbCkpCisgICAgICAgICAgICAgICAgICAgIG5vdEZhc3ROYW1lZENhc2VzLmFwcGVu
ZChtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZVJlZ3MpKTsKKworICAgICAgICAgICAgICAgIC8v
IENoZWNrIHRoZSBzdHJ1Y3R1cmUKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogSWYgd2Uga25v
dyB0aGVyZSdzIG9ubHkgb25lIHN0cnVjdHVyZSBmb3IgYmFzZSB3ZSBjYW4ganVzdCBlbWJlZCBp
dCBoZXJlLgorICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlUmVncy5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSks
IHNjcmF0Y2hHUFIpOworCisgICAgICAgICAgICAgICAgYXV0byBiYWRTdHJ1Y3R1cmUgPSBtX2pp
dC5icmFuY2gzMigKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LAorICAgICAgICAgICAgICAgICAgICBzY3JhdGNoR1BSLAorICAgICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcygKKyAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmF0
b3JHUFIsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y2FjaGVkU3RydWN0dXJlSURPZmZzZXQo
KSkpOworCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IE1heWJlIHdlIHNob3VsZCBoYXZlIGEg
YmV0dGVyIHdheSB0byByZXByZXNlbnQgSW5kZXhlZCtOYW1lZD8KKyAgICAgICAgICAgICAgICBp
ZiAobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKS5ub2RlKCkgPT0gbV9ncmFwaC52YXJBcmdD
aGlsZChub2RlLCAzKS5ub2RlKCkpCisgICAgICAgICAgICAgICAgICAgIGJhZFN0cnVjdHVyZVNs
b3dQYXRoID0gYmFkU3RydWN0dXJlOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgbm90RmFzdE5hbWVkQ2FzZXMuYXBwZW5kKGJhZFN0cnVjdHVyZSk7CisKKyAgICAg
ICAgICAgICAgICAvLyBDb21wdXRlIHRoZSBvZmZzZXQKKyAgICAgICAgICAgICAgICAvLyBJZiBp
bmRleCBpcyBsZXNzIHRoYW4gdGhlIGVudW1lcmF0b3IncyBjYWNoZWQgaW5saW5lIHN0b3JhZ2Us
IHRoZW4gaXQncyBhbiBpbmxpbmUgYWNjZXNzCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgb3V0T2ZMaW5lQWNjZXNzID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6
OkFib3ZlT3JFcXVhbCwKKyAgICAgICAgICAgICAgICAgICAgaW5kZXhHUFIsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGVudW1lcmF0b3JHUFIsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y2Fj
aGVkSW5saW5lQ2FwYWNpdHlPZmZzZXQoKSkpOworCisgICAgICAgICAgICAgICAgbV9qaXQubG9h
ZFZhbHVlKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoYmFzZVJlZ3MucGF5bG9hZEdQUigpLCBp
bmRleEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQsIEpTT2JqZWN0OjpvZmZzZXRPZklu
bGluZVN0b3JhZ2UoKSksIHJlc3VsdFJlZ3MpOworCisgICAgICAgICAgICAgICAgZG9uZUNhc2Vz
LmFwcGVuZChtX2ppdC5qdW1wKCkpOworCisgICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIGl0
J3Mgb3V0IG9mIGxpbmUKKyAgICAgICAgICAgICAgICBvdXRPZkxpbmVBY2Nlc3MubGluaygmbV9q
aXQpOworICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoaW5kZXhHUFIsIHNjcmF0Y2hHUFIpOwor
ICAgICAgICAgICAgICAgIG1faml0LnN1YjMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGVudW1l
cmF0b3JHUFIsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y2FjaGVkSW5saW5lQ2FwYWNpdHlP
ZmZzZXQoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgICAgIG1faml0Lm5lZzMyKHNjcmF0
Y2hHUFIpOworICAgICAgICAgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHNjcmF0Y2hH
UFIsIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgICAgIGlmICghaGF2ZVN0b3JhZ2UpCisgICAg
ICAgICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZVJlZ3MucGF5bG9hZEdQUigpLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBzdG9yYWdl
R1BSKTsKKyAgICAgICAgICAgICAgICBjb25zdGV4cHIgaW50cHRyX3Qgb2Zmc2V0T2ZGaXJzdFBy
b3BlcnR5ID0gb2Zmc2V0SW5CdXR0ZXJmbHkoZmlyc3RPdXRPZkxpbmVPZmZzZXQpICogc3RhdGlj
X2Nhc3Q8aW50cHRyX3Q+KHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpOworICAgICAgICAgICAgICAg
IG1faml0LmxvYWRWYWx1ZShNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VHUFIsIHNj
cmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBvZmZzZXRPZkZpcnN0UHJvcGVy
dHkpLCByZXN1bHRSZWdzKTsKKyAgICAgICAgICAgICAgICBkb25lQ2FzZXMuYXBwZW5kKG1faml0
Lmp1bXAoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG5vdEZhc3ROYW1lZENhc2Vz
LmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihyZXN1bHRS
ZWdzLCBEYXRhRm9ybWF0SlMpOworICAgICAgICB9KSk7CisKKyAgICAgICAgLy8gV2UgcmVseSBv
biBjb21waWxlR2V0QnlWYWwgdG8gY2FsbCBqc1ZhbHVlUmVzdWx0IGZvciB1cy4KKyAgICAgICAg
Ly8gRklYTUU6IFRoaXMgaXMga2luZGEgaGFja3kuLi4KKyAgICAgICAgQVNTRVJUKGdlbmVyYXRp
b25JbmZvKG5vZGUpLmpzVmFsdWVSZWdzKCkgPT0gcmVzdWx0UmVncyAmJiBnZW5lcmF0aW9uSW5m
byhub2RlKS5yZWdpc3RlckZvcm1hdCgpID09IERhdGFGb3JtYXRKUyk7CisKKyAgICAgICAgaWYg
KGJhZFN0cnVjdHVyZVNsb3dQYXRoLmlzU2V0KCkpIHsKKyAgICAgICAgICAgIGlmIChiYXNlUmVn
cy50YWdHUFIoKSA9PSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgICAgIGFkZFNsb3dQYXRo
R2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChiYWRTdHJ1Y3R1cmVTbG93UGF0aCwgdGhpcywgb3BlcmF0
aW9uRW51bWVyYXRvclJlY292ZXJOYW1lQW5kR2V0QnlWYWwsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlUmVncy5wYXls
b2FkR1BSKCkpLCBpbmRleEdQUiwgZW51bWVyYXRvckdQUikpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChiYWRTdHJ1
Y3R1cmVTbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uRW51bWVyYXRvclJlY292ZXJOYW1lQW5kR2V0
QnlWYWwsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywg
aW5kZXhHUFIsIGVudW1lcmF0b3JHUFIpKTsKKyAgICAgICAgfQorCisgICAgICAgIGRvbmVDYXNl
cy5saW5rKCZtX2ppdCk7CisgICAgfTsKKworICAgIGlmIChpc0NlbGwoYmFzZUVkZ2UudXNlS2lu
ZCgpKSkgeworICAgICAgICAvLyBVc2UgbWFudWFsIG9wZXJhbmQgc3BlY3VsYXRpb24gc2luY2Ug
Rml4dXAgbWF5IGhhdmUgcGlja2VkIGEgVXNlS2luZCBtb3JlIHJlc3RyaWN0aXZlIHRoYW4gQ2Vs
bFVzZS4KKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBiYXNlRWRnZSwg
TWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIGJhc2VF
ZGdlKTsKKyAgICAgICAgZ2VuZXJhdGUoSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2UuZ3By
KCkpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIGJh
c2VFZGdlKTsKKyAgICAgICAgZ2VuZXJhdGUoYmFzZS5yZWdzKCkpOworICAgIH0KK30KKwogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDRkM2FjOGEyYjMz
NWY3OGJjNTRkODUwYzhkMzAzZDE0NTI1N2E3YmQuLjIyOWIyNDliMjYxZThiNGVkNGQzOTJlNmQ5
ZGQyY2ZhOGQ5N2MxZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMTgxOCwxMiArMTgxOCwxNCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlQ29udGlndW91c1B1dEJ5VmFsKE5vZGUqIG5vZGUsIEJhc2VP
cGVyYW5kVHlwZSYgYmFzZQogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsKE5v
ZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEpTVmFsdWVSZWdzLCBEYXRh
Rm9ybWF0PihEYXRhRm9ybWF0IHByZWZlcnJlZEZvcm1hdCk+JiBwcmVmaXgpCiB7CiAgICAgc3dp
dGNoIChub2RlLT5hcnJheU1vZGUoKS50eXBlKCkpIHsKLSAgICBjYXNlIEFycmF5OjpTZWxlY3RV
c2luZ1ByZWRpY3Rpb25zOgorICAgIGNhc2UgQXJyYXk6OkFueVR5cGVkQXJyYXk6CiAgICAgY2Fz
ZSBBcnJheTo6Rm9yY2VFeGl0OgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotI2lmIENPTVBJTEVSX1FVSVJLKENPTlNJREVSU19VTlJFQUNIQUJMRV9DT0RFKQotICAgICAg
ICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihJbmFkZXF1YXRlQ292ZXJhZ2UsIEpTVmFs
dWVSZWdzKCksIDApOwotI2VuZGlmCisgICAgY2FzZSBBcnJheTo6U2VsZWN0VXNpbmdBcmd1bWVu
dHM6CisgICAgY2FzZSBBcnJheTo6U2VsZWN0VXNpbmdQcmVkaWN0aW9uczoKKyAgICBjYXNlIEFy
cmF5OjpVbnByb2ZpbGVkOgorICAgIGNhc2UgQXJyYXk6OkJpZ0ludDY0QXJyYXk6CisgICAgY2Fz
ZSBBcnJheTo6QmlnVWludDY0QXJyYXk6CisgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgp
LCBub2RlLCAiQmFkIGFycmF5IG1vZGUgdHlwZSIpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFycmF5OjpVbmRlY2lkZWQ6IHsKICAgICAgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5k
IGluZGV4KHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOwpAQCAtMTg0Niw3NCAr
MTg0OCw4OCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWwoTm9kZSogbm9k
ZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SgogICAgICAgICAgICAgaWYgKG1fZ3Jh
cGgudmFyQXJnQ2hpbGQobm9kZSwgMCkudXNlS2luZCgpID09IE9iamVjdFVzZSkgewogICAgICAg
ICAgICAgICAgIGlmIChtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpLnVzZUtpbmQoKSA9PSBT
dHJpbmdVc2UpIHsKICAgICAgICAgICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFsRm9yT2JqZWN0
V2l0aFN0cmluZyhub2RlLCBwcmVmaXgpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgICAgIGlmIChtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpLnVzZUtpbmQoKSA9PSBTeW1i
b2xVc2UpIHsKICAgICAgICAgICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFsRm9yT2JqZWN0V2l0
aFN5bWJvbChub2RlLCBwcmVmaXgpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBtX2dyYXBoLnZh
ckFyZ0NoaWxkKG5vZGUsIDApKTsgLy8gU2F2ZSBhIHJlZ2lzdGVyLCBzcGVjdWxhdGUgY2VsbC4g
V2UnbGwgcHJvYmFibHkgYmUgcmlnaHQuCisgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNl
KHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOwogICAgICAgICAgICAgSlNWYWx1
ZU9wZXJhbmQgcHJvcGVydHkodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7Ci0g
ICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisgICAgICAgICAgICBKU1Zh
bHVlUmVncyBiYXNlR1BSID0gYmFzZS5qc1ZhbHVlUmVncygpOwogICAgICAgICAgICAgSlNWYWx1
ZVJlZ3MgcHJvcGVydHlSZWdzID0gcHJvcGVydHkuanNWYWx1ZVJlZ3MoKTsKIAogICAgICAgICAg
ICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVnczsKICAgICAgICAgICAgIHN0ZDo6dGllKHJlc3VsdFJl
Z3MsIHN0ZDo6aWdub3JlKSA9IHByZWZpeChEYXRhRm9ybWF0SlMpOwogCiAgICAgICAgICAgICBm
bHVzaFJlZ2lzdGVycygpOwotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRC
eVZhbENlbGwsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BS
LCBwcm9wZXJ0eVJlZ3MpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRC
eVZhbCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIHBy
b3BlcnR5UmVncyk7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAg
ICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwotICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBzcGVjdWxhdGUo
bm9kZSwgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7Ci0gICAgICAgIHNwZWN1bGF0ZShu
b2RlLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKLQotICAgICAgICBKU1ZhbHVlT3Bl
cmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCksIE1hbnVhbE9wZXJh
bmRTcGVjdWxhdGlvbik7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG1f
Z3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7Ci0K
LSAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CiAgICAg
ICAgIEpTVmFsdWVSZWdzIHByb3BlcnR5UmVncyA9IHByb3BlcnR5LmpzVmFsdWVSZWdzKCk7Cisg
ICAgICAgIHNwZWN1bGF0ZShub2RlLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKIAot
ICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzOwotICAgICAgICBzdGQ6OnRpZShyZXN1bHRS
ZWdzLCBzdGQ6Omlnbm9yZSkgPSBwcmVmaXgoRGF0YUZvcm1hdEpTKTsKKyAgICAgICAgYXV0byBn
ZW5lcmF0ZSA9IFsmXSAoSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MpIHsKKyAgICAgICAgICAgIEpTVmFs
dWVSZWdzIHJlc3VsdFJlZ3M7CisgICAgICAgICAgICBzdGQ6OnRpZShyZXN1bHRSZWdzLCBzdGQ6
Omlnbm9yZSkgPSBwcmVmaXgoRGF0YUZvcm1hdEpTKTsKIAotICAgICAgICBDb2RlT3JpZ2luIGNv
ZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7Ci0gICAgICAgIENhbGxTaXRlSW5kZXgg
Y2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxp
bmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7Ci0gICAgICAg
IFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CisgICAg
ICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7Cisg
ICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVB
bmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1f
c3RyZWFtLT5zaXplKCkpOworICAgICAgICAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9
IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKIAotICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qg
c2xvd0Nhc2VzOwotICAgICAgICBpZiAoIW1fc3RhdGUuZm9yTm9kZShtX2dyYXBoLnZhckFyZ0No
aWxkKG5vZGUsIDApKS5pc1R5cGUoU3BlY0NlbGwpKQotICAgICAgICAgICAgc2xvd0Nhc2VzLmFw
cGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZVJlZ3MudGFnR1BSKCkpKTsKKyAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CisgICAgICAgICAgICBpZiAoIW1f
c3RhdGUuZm9yTm9kZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKS5pc1R5cGUoU3BlY0Nl
bGwpKQorICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RD
ZWxsKGJhc2VSZWdzKSk7CiAKLSAgICAgICAgSklUR2V0QnlWYWxHZW5lcmF0b3IgZ2VuKAotICAg
ICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwg
Y2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkdldEJ5VmFsLCB1c2VkUmVnaXN0ZXJzLAotICAgICAgICAg
ICAgYmFzZVJlZ3MsIHByb3BlcnR5UmVncywgcmVzdWx0UmVncywgSW52YWxpZEdQUlJlZyk7Cisg
ICAgICAgICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciBnZW4oCisgICAgICAgICAgICAgICAgbV9q
aXQuY29kZUJsb2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFj
Y2Vzc1R5cGU6OkdldEJ5VmFsLCB1c2VkUmVnaXN0ZXJzLAorICAgICAgICAgICAgICAgIGJhc2VS
ZWdzLCBwcm9wZXJ0eVJlZ3MsIHJlc3VsdFJlZ3MsIEludmFsaWRHUFJSZWcpOwogCi0gICAgICAg
IGlmIChtX3N0YXRlLmZvck5vZGUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSkuaXNUeXBl
KFNwZWNTdHJpbmcpKQotICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCktPnByb3BlcnR5SXNTdHJp
bmcgPSB0cnVlOwotICAgICAgICBlbHNlIGlmIChtX3N0YXRlLmZvck5vZGUobV9ncmFwaC52YXJB
cmdDaGlsZChub2RlLCAxKSkuaXNUeXBlKFNwZWNJbnQzMk9ubHkpKQotICAgICAgICAgICAgZ2Vu
LnN0dWJJbmZvKCktPnByb3BlcnR5SXNJbnQzMiA9IHRydWU7Ci0gICAgICAgIGVsc2UgaWYgKG1f
c3RhdGUuZm9yTm9kZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKS5pc1R5cGUoU3BlY1N5
bWJvbCkpCi0gICAgICAgICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJc1N5bWJvbCA9IHRy
dWU7CisgICAgICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bm9kZSwgMSkpLmlzVHlwZShTcGVjU3RyaW5nKSkKKyAgICAgICAgICAgICAgICBnZW4uc3R1Yklu
Zm8oKS0+cHJvcGVydHlJc1N0cmluZyA9IHRydWU7CisgICAgICAgICAgICBlbHNlIGlmIChtX3N0
YXRlLmZvck5vZGUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSkuaXNUeXBlKFNwZWNJbnQz
Mk9ubHkpKQorICAgICAgICAgICAgICAgIGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzSW50MzIg
PSB0cnVlOworICAgICAgICAgICAgZWxzZSBpZiAobV9zdGF0ZS5mb3JOb2RlKG1fZ3JhcGgudmFy
QXJnQ2hpbGQobm9kZSwgMSkpLmlzVHlwZShTcGVjU3ltYm9sKSkKKyAgICAgICAgICAgICAgICBn
ZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJc1N5bWJvbCA9IHRydWU7CiAKLSAgICAgICAgZ2VuLmdl
bmVyYXRlRmFzdFBhdGgobV9qaXQpOworICAgICAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgo
bV9qaXQpOwogCi0gICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsK
KyAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKIAotICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoID0gc2xvd1Bh
dGhDYWxsKAotICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeVZhbE9w
dGltaXplLAotICAgICAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1
YkluZm8oKSwgbnVsbHB0ciwgYmFzZVJlZ3MsIHByb3BlcnR5UmVncyk7CisgICAgICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOworICAgICAgICAgICAg
aWYgKGJhc2VSZWdzLnRhZ0dQUigpID09IEludmFsaWRHUFJSZWcpIHsKKyAgICAgICAgICAgICAg
ICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2Vz
LCB0aGlzLCBvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplLAorICAgICAgICAgICAgICAgICAgICBy
ZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBudWxscHRyLCBDQ2Fs
bEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlUmVncy5wYXlsb2FkR1BSKCkpLCBwcm9wZXJ0eVJlZ3Mp
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQ
YXRoQ2FsbCgKKyAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25H
ZXRCeVZhbE9wdGltaXplLAorICAgICAgICAgICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2Rl
T3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBudWxscHRyLCBiYXNlUmVncywgcHJvcGVydHlSZWdz
KTsKKyAgICAgICAgICAgIH0KIAotICAgICAgICBtX2ppdC5hZGRHZXRCeVZhbChnZW4sIHNsb3dQ
YXRoLmdldCgpKTsKLSAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0
aCkpOworICAgICAgICAgICAgbV9qaXQuYWRkR2V0QnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7
CisgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CiAK
LSAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKKyAgICAgICAgICAgIGpz
VmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CisgICAgICAgIH07CisKKyAgICAgICAgaWYg
KGlzQ2VsbChtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApLnVzZUtpbmQoKSkpIHsKKyAgICAg
ICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbV9ncmFwaC52YXJBcmdDaGls
ZChub2RlLCAwKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgICAgIHNwZWN1
bGF0ZShub2RlLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKKyAgICAgICAgICAgIGdl
bmVyYXRlKEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlLmdwcigpKSk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGgudmFy
QXJnQ2hpbGQobm9kZSwgMCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgICAg
ICBzcGVjdWxhdGUobm9kZSwgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7CisgICAgICAg
ICAgICBnZW5lcmF0ZShiYXNlLmpzVmFsdWVSZWdzKCkpOworICAgICAgICB9CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICBjYXNlIEFycmF5OjpJbnQzMjoKQEAgLTE5MzIsNyArMTk0OCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbChOb2RlKiBub2RlLCBjb25zdCBT
Y29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAgICAgICAgICAgICBEYXRhRm9ybWF0IGZvcm1hdDsK
ICAgICAgICAgICAgIHN0ZDo6dGllKHJlc3VsdFJlZ3MsIGZvcm1hdCkgPSBwcmVmaXgobm9kZS0+
YXJyYXlNb2RlKCkudHlwZSgpID09IEFycmF5OjpJbnQzMiA/IERhdGFGb3JtYXRJbnQzMiA6IERh
dGFGb3JtYXRKUyk7CiAKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMs
IEpTVmFsdWVSZWdzKCksIDAsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9y
RXF1YWwsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVnLCBC
dXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKSk7CisgICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBudWxscHRyLCBtX2ppdC5icmFu
Y2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlZywgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0
aCgpKSkpOwogCiAgICAgICAgICAgICBpZiAoZm9ybWF0ID09IERhdGFGb3JtYXRJbnQzMikgewog
ICAgICAgICAgICAgICAgIEFTU0VSVCghbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kc1NhbmVD
aGFpbigpKTsKQEAgLTE5OTQsOCArMjAxMCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVHZXRCeVZhbChOb2RlKiBub2RlLCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAg
ICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFi
b3ZlT3JFcXVhbCwgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VS
ZWcsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpKTsKIAogICAgICAgICBtX2pp
dC5sb2FkVmFsdWUoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0
eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQpLCByZXN1bHRSZWdzKTsKLSAgICAgICAg
c2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZkVtcHR5KHJlc3VsdFJlZ3MudGFnR1BSKCkp
KTsKIAorICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmRW1wdHkocmVzdWx0
UmVncy50YWdHUFIoKSkpOwogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAg
ICAgIHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJh
dGlvbkdldEJ5VmFsT2JqZWN0SW50LApAQCAtMjAxNiwyMiArMjAzMiwyMyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWwoTm9kZSogbm9kZSwgY29uc3QgU2NvcGVkTGFtYmRh
PHN0ZDo6dHVwbGU8SgogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgRlBS
VGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgICAgIEZQUlJlZyByZXN1bHRSZWcgPSBy
ZXN1bHQuZnByKCk7CiAKICAgICAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3M7CiAgICAg
ICAgICAgICBEYXRhRm9ybWF0IGZvcm1hdDsKICAgICAgICAgICAgIHN0ZDo6dGllKHJlc3VsdFJl
Z3MsIGZvcm1hdCkgPSBwcmVmaXgoRGF0YUZvcm1hdERvdWJsZSk7CiAKLSAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIDAsIG1faml0LmJyYW5j
aDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhzdG9yYWdlUmVnLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3Ro
KCkpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVl
UmVncygpLCBudWxscHRyLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVx
dWFsLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlZywgQnV0
dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSkpOwogCi0gICAgICAgICAgICBtX2ppdC5s
b2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHlS
ZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0KSwgcmVzdWx0LmZwcigpKTsKKyAgICAgICAg
ICAgIG1faml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVn
LCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQpLCByZXN1bHRSZWcpOwog
ICAgICAgICAgICAgaWYgKCFub2RlLT5hcnJheU1vZGUoKS5pc0luQm91bmRzU2FuZUNoYWluKCkp
Ci0gICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhMb2FkRnJvbUhvbGUsIEpTVmFsdWVS
ZWdzKCksIDAsIG1faml0LmJyYW5jaElmTmFOKHJlc3VsdC5mcHIoKSkpOworICAgICAgICAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soTG9hZEZyb21Ib2xlLCBKU1ZhbHVlUmVncygpLCBudWxscHRy
LCBtX2ppdC5icmFuY2hJZk5hTihyZXN1bHRSZWcpKTsKICAgICAgICAgICAgIGlmIChmb3JtYXQg
PT0gRGF0YUZvcm1hdEpTKSB7Ci0gICAgICAgICAgICAgICAgYm94RG91YmxlKHJlc3VsdC5mcHIo
KSwgcmVzdWx0UmVncyk7CisgICAgICAgICAgICAgICAgYm94RG91YmxlKHJlc3VsdFJlZywgcmVz
dWx0UmVncyk7CiAgICAgICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2Rl
KTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGZvcm1hdCA9
PSBEYXRhRm9ybWF0RG91YmxlICYmICFyZXN1bHRSZWdzKTsKLSAgICAgICAgICAgICAgICBkb3Vi
bGVSZXN1bHQocmVzdWx0LmZwcigpLCBub2RlKTsKKyAgICAgICAgICAgICAgICBkb3VibGVSZXN1
bHQocmVzdWx0UmVnLCBub2RlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CkBAIC0yMDgzLDcgKzIxMDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlR2V0QnlWYWwoTm9kZSogbm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8Sgog
ICAgICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVnczsKICAgICAgICAgICAgIHN0ZDo6dGll
KHJlc3VsdFJlZ3MsIHN0ZDo6aWdub3JlKSA9IHByZWZpeChEYXRhRm9ybWF0SlMpOwogCi0gICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCAwLCBt
X2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlZywgQXJyYXlTdG9yYWdlOjp2ZWN0b3JM
ZW5ndGhPZmZzZXQoKSkpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3Vu
ZHMsIEpTVmFsdWVSZWdzKCksIG51bGxwdHIsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVy
OjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9y
YWdlUmVnLCBBcnJheVN0b3JhZ2U6OnZlY3Rvckxlbmd0aE9mZnNldCgpKSkpOwogCiAgICAgICAg
ICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBw
cm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQsIEFycmF5U3RvcmFnZTo6dmVj
dG9yT2Zmc2V0KCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSksIHJl
c3VsdFJlZ3MudGFnR1BSKCkpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhMb2FkRnJv
bUhvbGUsIEpTVmFsdWVSZWdzKCksIDAsIG1faml0LmJyYW5jaElmRW1wdHkocmVzdWx0UmVncy50
YWdHUFIoKSkpOwpAQCAtMjA5Niw5ICsyMTEzLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVHZXRCeVZhbChOb2RlKiBub2RlLCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxK
CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbV9ncmFwaC52YXJBcmdD
aGlsZChub2RlLCAwKSk7CiAgICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBwcm9w
ZXJ0eSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKICAgICAgICAgU3RvcmFn
ZU9wZXJhbmQgc3RvcmFnZSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDIpKTsKKwor
ICAgICAgICBHUFJSZWcgYmFzZVJlZyA9IGJhc2UuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBwcm9w
ZXJ0eVJlZyA9IHByb3BlcnR5LmdwcigpOwogICAgICAgICBHUFJSZWcgc3RvcmFnZVJlZyA9IHN0
b3JhZ2UuZ3ByKCk7Ci0gICAgICAgIEdQUlJlZyBiYXNlUmVnID0gYmFzZS5ncHIoKTsKIAogICAg
ICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0yMTIwLDgg
KzIxMzgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWwoTm9kZSogbm9k
ZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SgogICAgICAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcigKICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICBzbG93
Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5VmFsT2JqZWN0SW50LAotICAgICAgICAgICAgICAg
IHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLAotICAgICAgICAgICAgICAg
IGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0UmVncywgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CiAKICAgICAg
ICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC0y
MTM1LDggKzIxNTIsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsKE5v
ZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoKICAgICBjYXNlIEFycmF5
OjpTY29wZWRBcmd1bWVudHM6CiAgICAgICAgIGNvbXBpbGVHZXRCeVZhbE9uU2NvcGVkQXJndW1l
bnRzKG5vZGUsIHByZWZpeCk7CiAgICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6IHsKLSAgICAg
ICAgQVNTRVJUKG5vZGUtPmFycmF5TW9kZSgpLmlzU29tZVR5cGVkQXJyYXlWaWV3KCkpOworICAg
IGNhc2UgQXJyYXk6OkludDhBcnJheToKKyAgICBjYXNlIEFycmF5OjpJbnQxNkFycmF5OgorICAg
IGNhc2UgQXJyYXk6OkludDMyQXJyYXk6CisgICAgY2FzZSBBcnJheTo6VWludDhBcnJheToKKyAg
ICBjYXNlIEFycmF5OjpVaW50OENsYW1wZWRBcnJheToKKyAgICBjYXNlIEFycmF5OjpVaW50MTZB
cnJheToKKyAgICBjYXNlIEFycmF5OjpVaW50MzJBcnJheToKKyAgICBjYXNlIEFycmF5OjpGbG9h
dDMyQXJyYXk6CisgICAgY2FzZSBBcnJheTo6RmxvYXQ2NEFycmF5OiB7CiAgICAgICAgIFR5cGVk
QXJyYXlUeXBlIHR5cGUgPSBub2RlLT5hcnJheU1vZGUoKS50eXBlZEFycmF5VHlwZSgpOwogICAg
ICAgICBpZiAoaXNJbnQodHlwZSkpCiAgICAgICAgICAgICBjb21waWxlR2V0QnlWYWxPbkludFR5
cGVkQXJyYXkobm9kZSwgdHlwZSwgcHJlZml4KTsKQEAgLTQ0OTgsNDMgKzQ1MjIsNiBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhSYW5kb20oTm9kZSogbm9kZSkKICAgICBkb3Vi
bGVSZXN1bHQocmVzdWx0LmZwcigpLCBub2RlKTsKIH0KIAotLy8gRklYTUU6IHdlIGFyZSBhbHdh
eXMgdGFraW5nIHRoZSBzbG93IHBhdGggaGVyZSwgd2Ugc2hvdWxkIGJlIGFibGUgdG8gZG8gdGhl
IGVxdWl2YWxlbnQgdG8gdGhlIDY0Yml0IHZlcnNpb24gaWYgd2UgYWRkIG1vcmUgYXZhaWxhYmxl
IChjYWxsZWUtc2F2ZSByZWdpc3RlcnMpIHRvIEFSTXY3IGFuZC9vciBpZiB3ZSByZWR1Y2UgdGhl
IG51bWJlciBvZiByZWdpc3RlcnMgY29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbCB1c2VzLiBTZWUg
YnVnICMyMzAxODkuCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRW51bWVyYXRvckdldEJ5
VmFsKE5vZGUqIG5vZGUpCi17Ci0gICAgRWRnZSBiYXNlRWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hp
bGQobm9kZSwgMCk7Ci0gICAgYXV0byBnZW5lcmF0ZSA9IFsmXSAoSlNWYWx1ZVJlZ3MgYmFzZVJl
Z3MpIHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgcHJvcGVydHkodGhpcywgbV9ncmFwaC52YXJB
cmdDaGlsZChub2RlLCAxKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKLSAgICAgICAgU3Bl
Y3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIGluZGV4KHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bm9kZSwgMykpOwotICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgbW9kZSh0aGlz
LCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDQpKTsKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgZW51bWVyYXRvcih0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDUpKTsKLSAg
ICAgICAgSlNWYWx1ZVJlZ3MgcHJvcGVydHlSZWdzID0gcHJvcGVydHkuanNWYWx1ZVJlZ3MoKTsK
LSAgICAgICAgR1BSUmVnIGluZGV4R1BSID0gaW5kZXguZ3ByKCk7Ci0gICAgICAgIEdQUlJlZyBt
b2RlR1BSID0gbW9kZS5ncHIoKTsKLSAgICAgICAgR1BSUmVnIGVudW1lcmF0b3JHUFIgPSBlbnVt
ZXJhdG9yLmdwcigpOwotCi0gICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0KLSAgICAgICAgSlNW
YWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgICAgIEpTVmFsdWVS
ZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwotCi0gICAgICAgIGlmIChiYXNlUmVncy50
YWdHUFIoKSA9PSBJbnZhbGlkR1BSUmVnKQotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25FbnVtZXJhdG9yR2V0QnlWYWxHZW5lcmljLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZVJlZ3MucGF5bG9hZEdQ
UigpKSwgcHJvcGVydHlSZWdzLCBpbmRleEdQUiwgbW9kZUdQUiwgZW51bWVyYXRvckdQUik7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRW51bWVyYXRv
ckdldEJ5VmFsR2VuZXJpYywgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIGluZGV4R1BSLCBtb2RlR1BSLCBlbnVtZXJhdG9yR1BS
KTsKLSAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKLSAgICAgICAganNWYWx1ZVJlc3Vs
dChyZXN1bHRSZWdzLCBub2RlKTsKLSAgICB9OwotCi0gICAgaWYgKGlzQ2VsbChiYXNlRWRnZS51
c2VLaW5kKCkpKSB7Ci0gICAgICAgIC8vIFVzZSBtYW51YWwgb3BlcmFuZCBzcGVjdWxhdGlvbiBz
aW5jZSBGaXh1cCBtYXkgaGF2ZSBwaWNrZWQgYSBVc2VLaW5kIG1vcmUgcmVzdHJpY3RpdmUgdGhh
biBDZWxsVXNlLgotICAgICAgICBzcGVjdWxhdGUobm9kZSwgYmFzZUVkZ2UpOwotICAgICAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIGJhc2VFZGdlLCBNYW51YWxPcGVyYW5kU3Bl
Y3VsYXRpb24pOwotICAgICAgICBnZW5lcmF0ZShKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFz
ZS5ncHIoKSkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhp
cywgYmFzZUVkZ2UpOwotICAgICAgICBnZW5lcmF0ZShiYXNlLnJlZ3MoKSk7Ci0gICAgfQotfQog
I2VuZGlmCiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGE2MWZhNWU0MjNlMzgz
Yzc5NDhmMTgxNTdlODBjZTUxZjcwMTYwZmUuLjE0YTUwNzYxZmQ5YTY1MmMzZjBlMzkxMGFhNjll
ZWUxMTNmZjEzZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcApAQCAtNjQ2NiwxMTQgKzY0NjYsNiBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlRGF0ZUdldChOb2RlKiBub2RlKQogICAgIH0KIH0KIAotdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbChOb2RlKiBub2RlKQotewotICAgIEVk
Z2UgYmFzZUVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApOwotICAgIGF1dG8gZ2Vu
ZXJhdGUgPSBbJl0gKEdQUlJlZyBiYXNlQ2VsbEdQUikgewotICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6SnVtcExpc3QgZG9uZUNhc2VzOwotICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1
bHQ7Ci0gICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3M7Ci0gICAgICAgIEdQUlJlZyBpbmRl
eEdQUjsKLSAgICAgICAgR1BSUmVnIGVudW1lcmF0b3JHUFI7Ci0gICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wIGJhZFN0cnVjdHVyZVNsb3dQYXRoOwotCi0gICAgICAgIGNvbXBpbGVHZXRCeVZh
bChub2RlLCBzY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKU1ZhbHVlUmVncywgRGF0YUZvcm1hdD4o
RGF0YUZvcm1hdCk+KFsmXSAoRGF0YUZvcm1hdCkgewotICAgICAgICAgICAgRWRnZSBzdG9yYWdl
RWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMik7Ci0gICAgICAgICAgICBTdG9yYWdl
T3BlcmFuZCBzdG9yYWdlOwotICAgICAgICAgICAgaWYgKHN0b3JhZ2VFZGdlKQotICAgICAgICAg
ICAgICAgIHN0b3JhZ2UuZW1wbGFjZSh0aGlzLCBzdG9yYWdlRWRnZSk7Ci0gICAgICAgICAgICBT
cGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgaW5kZXgodGhpcywgbV9ncmFwaC52YXJBcmdDaGls
ZChub2RlLCAzKSk7Ci0gICAgICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgbW9k
ZSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDQpKTsKLSAgICAgICAgICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIGVudW1lcmF0b3IodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2Rl
LCA1KSk7Ci0KLSAgICAgICAgICAgIEdQUlJlZyBtb2RlR1BSID0gbW9kZS5ncHIoKTsKLSAgICAg
ICAgICAgIGluZGV4R1BSID0gaW5kZXguZ3ByKCk7Ci0gICAgICAgICAgICBlbnVtZXJhdG9yR1BS
ID0gZW51bWVyYXRvci5ncHIoKTsKLQotICAgICAgICAgICAgcmVzdWx0ID0gSlNWYWx1ZVJlZ3NU
ZW1wb3JhcnkodGhpcyk7Ci0gICAgICAgICAgICByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsK
LSAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gcmVzdWx0UmVncy5wYXlsb2FkR1BSKCk7
Ci0KLSAgICAgICAgICAgIGJvb2wgaGF2ZVN0b3JhZ2UgPSAhIXN0b3JhZ2VFZGdlOwotICAgICAg
ICAgICAgR1BSVGVtcG9yYXJ5IHN0b3JhZ2VUZW1wb3Jhcnk7Ci0gICAgICAgICAgICBHUFJSZWcg
c3RvcmFnZUdQUjsKLSAgICAgICAgICAgIGlmICghaGF2ZVN0b3JhZ2UpIHsKLSAgICAgICAgICAg
ICAgICBzdG9yYWdlVGVtcG9yYXJ5ID0gR1BSVGVtcG9yYXJ5KHRoaXMsIFJldXNlLCBlbnVtZXJh
dG9yKTsKLSAgICAgICAgICAgICAgICBzdG9yYWdlR1BSID0gc3RvcmFnZVRlbXBvcmFyeS5ncHIo
KTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHN0b3JhZ2VHUFIgPSBzdG9y
YWdlLmdwcigpOwotCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgbm90RmFz
dE5hbWVkQ2FzZXM7Ci0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgZ2VuZXJh
dGUgdGhpcyBjb2RlIGlmIHdlIGtub3cgYmFzZSBpcyBub3QgYW4gb2JqZWN0LgotICAgICAgICAg
ICAgbm90RmFzdE5hbWVkQ2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2Vt
Ymxlcjo6Tm9uWmVybywgbW9kZUdQUiwgVHJ1c3RlZEltbTMyKEpTUHJvcGVydHlOYW1lRW51bWVy
YXRvcjo6SW5kZXhlZE1vZGUgfCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OkdlbmVyaWNNb2Rl
KSkpOwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICghbV9zdGF0ZS5mb3JOb2Rl
KGJhc2VFZGdlKS5pc1R5cGUoU3BlY0NlbGwpKQotICAgICAgICAgICAgICAgICAgICBub3RGYXN0
TmFtZWRDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VDZWxsR1BSKSk7Ci0K
LSAgICAgICAgICAgICAgICAvLyBDaGVjayB0aGUgc3RydWN0dXJlCi0gICAgICAgICAgICAgICAg
Ly8gRklYTUU6IElmIHdlIGtub3cgdGhlcmUncyBvbmx5IG9uZSBzdHJ1Y3R1cmUgZm9yIGJhc2Ug
d2UgY2FuIGp1c3QgZW1iZWQgaXQgaGVyZS4KLSAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUNlbGxHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURP
ZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwotCi0gICAgICAgICAgICAgICAgYXV0byBiYWRTdHJ1Y3R1
cmUgPSBtX2ppdC5icmFuY2gzMigKLSAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsLAotICAgICAgICAgICAgICAgICAgICBzY3JhdGNoR1BSLAotICAgICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcygKLSAgICAgICAgICAgICAgICAgICAgICAg
IGVudW1lcmF0b3JHUFIsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y2FjaGVkU3RydWN0dXJl
SURPZmZzZXQoKSkpOwotCi0gICAgICAgICAgICAgICAgLy8gRklYTUU6IE1heWJlIHdlIHNob3Vs
ZCBoYXZlIGEgYmV0dGVyIHdheSB0byByZXByZXNlbnQgSW5kZXhlZCtOYW1lZD8KLSAgICAgICAg
ICAgICAgICBpZiAobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKS5ub2RlKCkgPT0gbV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAzKS5ub2RlKCkpCi0gICAgICAgICAgICAgICAgICAgIGJhZFN0
cnVjdHVyZVNsb3dQYXRoID0gYmFkU3RydWN0dXJlOwotICAgICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICAgICAgbm90RmFzdE5hbWVkQ2FzZXMuYXBwZW5kKGJhZFN0cnVjdHVyZSk7
Ci0KLSAgICAgICAgICAgICAgICAvLyBDb21wdXRlIHRoZSBvZmZzZXQKLSAgICAgICAgICAgICAg
ICAvLyBJZiBpbmRleCBpcyBsZXNzIHRoYW4gdGhlIGVudW1lcmF0b3IncyBjYWNoZWQgaW5saW5l
IHN0b3JhZ2UsIHRoZW4gaXQncyBhbiBpbmxpbmUgYWNjZXNzCi0gICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgb3V0T2ZMaW5lQWNjZXNzID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9B
c3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwKLSAgICAgICAgICAgICAgICAgICAgaW5kZXhHUFIsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGVudW1lcmF0b3JHUFIsIEpTUHJvcGVydHlOYW1lRW51bWVy
YXRvcjo6Y2FjaGVkSW5saW5lQ2FwYWNpdHlPZmZzZXQoKSkpOwotCi0gICAgICAgICAgICAgICAg
bV9qaXQubG9hZFZhbHVlKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoYmFzZUNlbGxHUFIsIGlu
ZGV4R1BSLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgSlNPYmplY3Q6Om9mZnNldE9mSW5s
aW5lU3RvcmFnZSgpKSwgcmVzdWx0UmVncyk7Ci0KLSAgICAgICAgICAgICAgICBkb25lQ2FzZXMu
YXBwZW5kKG1faml0Lmp1bXAoKSk7Ci0KLSAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UgaXQn
cyBvdXQgb2YgbGluZQotICAgICAgICAgICAgICAgIG91dE9mTGluZUFjY2Vzcy5saW5rKCZtX2pp
dCk7Ci0gICAgICAgICAgICAgICAgbV9qaXQubW92ZShpbmRleEdQUiwgc2NyYXRjaEdQUik7Ci0g
ICAgICAgICAgICAgICAgbV9qaXQuc3ViMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZW51bWVy
YXRvckdQUiwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpjYWNoZWRJbmxpbmVDYXBhY2l0eU9m
ZnNldCgpKSwgc2NyYXRjaEdQUik7Ci0gICAgICAgICAgICAgICAgbV9qaXQubmVnMzIoc2NyYXRj
aEdQUik7Ci0gICAgICAgICAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIoc2NyYXRjaEdQ
Uiwgc2NyYXRjaEdQUik7Ci0gICAgICAgICAgICAgICAgaWYgKCFoYXZlU3RvcmFnZSkKLSAgICAg
ICAgICAgICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
Q2VsbEdQUiwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgc3RvcmFnZUdQUik7Ci0gICAg
ICAgICAgICAgICAgY29uc3RleHByIGludHB0cl90IG9mZnNldE9mRmlyc3RQcm9wZXJ0eSA9IG9m
ZnNldEluQnV0dGVyZmx5KGZpcnN0T3V0T2ZMaW5lT2Zmc2V0KSAqIHN0YXRpY19jYXN0PGludHB0
cl90PihzaXplb2YoRW5jb2RlZEpTVmFsdWUpKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5sb2Fk
VmFsdWUoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlR1BSLCBzY3JhdGNoR1BSLCBN
YWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgb2Zmc2V0T2ZGaXJzdFByb3BlcnR5KSwgcmVzdWx0
UmVncyk7Ci0gICAgICAgICAgICAgICAgZG9uZUNhc2VzLmFwcGVuZChtX2ppdC5qdW1wKCkpOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBub3RGYXN0TmFtZWRDYXNlcy5saW5rKCZtX2pp
dCk7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIocmVzdWx0UmVncywgRGF0YUZv
cm1hdEpTKTsKLSAgICAgICAgfSkpOwotCi0gICAgICAgIC8vIFdlIHJlbHkgb24gY29tcGlsZUdl
dEJ5VmFsIHRvIGNhbGwganNWYWx1ZVJlc3VsdCBmb3IgdXMuCi0gICAgICAgIC8vIEZJWE1FOiBU
aGlzIGlzIGtpbmRhIGhhY2t5Li4uCi0gICAgICAgIEFTU0VSVChnZW5lcmF0aW9uSW5mbyhub2Rl
KS5qc1ZhbHVlUmVncygpID09IHJlc3VsdFJlZ3MgJiYgZ2VuZXJhdGlvbkluZm8obm9kZSkucmVn
aXN0ZXJGb3JtYXQoKSA9PSBEYXRhRm9ybWF0SlMpOwotCi0gICAgICAgIGlmIChiYWRTdHJ1Y3R1
cmVTbG93UGF0aC5pc1NldCgpKQotICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xv
d1BhdGhDYWxsKGJhZFN0cnVjdHVyZVNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25FbnVtZXJhdG9y
UmVjb3Zlck5hbWVBbmRHZXRCeVZhbCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGJhc2VDZWxsR1BSLCBpbmRleEdQUiwgZW51bWVyYXRvckdQUikpOwotCi0gICAgICAg
IGRvbmVDYXNlcy5saW5rKCZtX2ppdCk7Ci0gICAgfTsKLQotICAgIGlmIChpc0NlbGwoYmFzZUVk
Z2UudXNlS2luZCgpKSkgewotICAgICAgICAvLyBVc2UgbWFudWFsIG9wZXJhbmQgc3BlY3VsYXRp
b24gc2luY2UgRml4dXAgbWF5IGhhdmUgcGlja2VkIGEgVXNlS2luZCBtb3JlIHJlc3RyaWN0aXZl
IHRoYW4gQ2VsbFVzZS4KLSAgICAgICAgc3BlY3VsYXRlKG5vZGUsIGJhc2VFZGdlKTsKLSAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZU9wZXJhbmQodGhpcywgYmFzZUVkZ2UsIE1hbnVh
bE9wZXJhbmRTcGVjdWxhdGlvbik7Ci0gICAgICAgIGdlbmVyYXRlKGJhc2VPcGVyYW5kLmdwcigp
KTsKLSAgICB9IGVsc2UgewotICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlT3BlcmFuZCh0aGlz
LCBiYXNlRWRnZSk7Ci0gICAgICAgIGdlbmVyYXRlKGJhc2VPcGVyYW5kLmdwcigpKTsKLSAgICB9
Ci19Ci0KICNlbmRpZgogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IDYzYjQ1NGY4Y2Q3
ZmY1N2FhMzkyNGUzODQ2ZDBhMGQ0MjA3MjA4YjIuLmRiNTJjMDU2YzAxMDE3ZjVjNjJjYmMxYjVm
ZTEzNzNhMDdhN2I0ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5oCkBAIC0xMTgsMjEgKzExOCw2IEBAIGlubGluZSBKU1ZhbHVlIG9wRW51
bWVyYXRvckdldEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYmFz
ZVZhCiAgICAgY2FzZSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OkdlbmVyaWNNb2RlOiB7CiAg
ICAgICAgIGlmIChhcnJheVByb2ZpbGUgJiYgYmFzZVZhbHVlLmlzQ2VsbCgpICYmIG1vZGUgIT0g
SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpPd25TdHJ1Y3R1cmVNb2RlKQogICAgICAgICAgICAg
YXJyYXlQcm9maWxlLT5vYnNlcnZlU3RydWN0dXJlSUQoYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1
Y3R1cmVJRCgpKTsKLSNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICBpZiAoIXByb3BlcnR5
TmFtZVZhbHVlLmlzQ2VsbCgpKSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGJyYW5jaCBpcyBvbmx5
IG5lZWRlZCBiZWNhdXNlIHdlIHVzZSB0aGlzIG1ldGhvZAotICAgICAgICAgICAgLy8gYm90aCBh
cyBhIHNsb3dfcGF0aCBhbmQgYXMgYSBERkcgY2FsbCBvcC4gV2UnbGwgZW5kIHVwCi0gICAgICAg
ICAgICAvLyBoZXJlIGlmIHByb3BlcnR5TmFtZSBpcyBub3QgYSBjZWxsIHRoZW4gd2UgYXJlIGlu
Ci0gICAgICAgICAgICAvLyBpbmRleCtuYW1lZCBtb2RlLCBzbyBkbyB3aGF0IFJlY292ZXJOYW1l
QW5kR2V0VmFsCi0gICAgICAgICAgICAvLyBkb2VzLiBUaGlzIGNhbiBwcm9iYWJseSBiZSByZW1v
dmVkIGlmIHdlIHJlLWVuYWJsZSB0aGUKLSAgICAgICAgICAgIC8vIG9wdGltaXphdGlvbnMgZm9y
IGVudW1lcmF0b3JHZXRCeVZhbCBpbiBERkcsIHNlZSBidWcKLSAgICAgICAgICAgIC8vICMyMzAx
ODkuCi0gICAgICAgICAgICBKU1N0cmluZyogc3RyaW5nID0gZW51bWVyYXRvci0+cHJvcGVydHlO
YW1lQXRJbmRleChpbmRleCk7Ci0gICAgICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IHN0cmlu
Zy0+dG9JZGVudGlmaWVyKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOwotICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKSk7Ci0gICAgICAgIH0K
LSNlbmRpZgogICAgICAgICBKU1N0cmluZyogc3RyaW5nID0gYXNTdHJpbmcocHJvcGVydHlOYW1l
VmFsdWUpOwogICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IHN0cmluZy0+dG9JZGVudGlmaWVy
KGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442158</attachid>
            <date>2021-10-22 06:21:35 -0700</date>
            <delta_ts>2021-10-22 11:31:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232052-20211022132133.patch</filename>
            <type>text/plain</type>
            <size>39330</size>
            <attacher name="Mikhail R. Gadelha">mikhail</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MzY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
NzY0YmM5OTc5NDVmYWY5YWE5N2IxZDNlNDZhOTgwOWQyNTMzNmY4Li5mYzNmYTdjOThjMDZkNDAz
YWQ1YjUzMWExOTVjODE2YTBmOWJkMGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAyMS0xMC0yMCAgTWlraGFpbCBSLiBHYWRlbGhhICA8bWlraGFpbEBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtKU0NdWzMyYml0XSBSZS1lbmFibGUgY29tcGlsZUVudW1lcmF0
b3JHZXRCeVZhbCBmYXN0IHBhdGgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMjA1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
Mjk1NDMsIHRoZSBjb21waWxlRW51bWVyYXRvckdldEJ5VmFsCisgICAgICAgIGZhc3QgcGF0aCBo
YWQgdG8gYmUgZGlzYWJsZWQgaW4gMzIgYml0cyBkdWUgdG8gbm90IGhhdmluZyBlbm91Z2ggcmVn
aXN0ZXJzLgorICAgICAgICBUaGVyZSBhcmUgZW5vdWdoIHJlZ2lzdGVycyBhdmFpbGFibGUgbm93
LCBzbyB3ZSBjYW4gcmUtZW5hYmxlIHRoZSBmYXN0IHBhdGggYW5kCisgICAgICAgIHJlbW92ZWQg
dGhlIHNwZWN1bGF0aW9uIHRoYXQgdGhlIGJhc2VFZGdlIG9mIGJvdGggZW51bWVyYXRvckdldEJ5
VmFsIGFuZAorICAgICAgICBnZXRCeVZhbCBpcyBhIENlbGwgaW4gMzIgYml0cy4KKworICAgICAg
ICBJJ3ZlIGFsc28gdXBkYXRlZCB0aGUgMzIgYml0cyB2ZXJzaW9uIG9mIGNvbXBpbGVHZXRCeVZh
bCB0byBiZSBjbG9zZXIgdG8gdGhlIDY0CisgICAgICAgIGJpdHMgdmVyc2lvbjogdXNpbmcgREZH
X0NSQVNIIGluc3RlYWQgb2YgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQsIHVzaW5nIG51bGxw
dHIKKyAgICAgICAgaW5zdGVhZCBvZiAwLCBhbmQgcmVtb3ZlZCBzb21lIHdoaXRlc3BhY2VzLgor
CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZp
eHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgICog
ZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRW51bWVyYXRvckdl
dEJ5VmFsKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbCk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVFbnVtZXJhdG9yR2V0QnlWYWwpOiBE
ZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbCk6IERl
bGV0ZWQuCisKIDIwMjEtMTAtMTggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4K
IAogICAgICAgICBbSlNDXSBVc2UgVVNFKExBUkdFX1RZUEVEX0FSUkFZKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggNTY2ZjUzOWRlMWE0NjM0ZGY2
ZTk1M2Y3ZTFlZDIyYzE0YjlhY2QzZS4uZTBkZmRkNTc3OTAzMjBmZDE4NDJiODljMGY2ZWQzYzk1
NDMxMGE4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CkBAIC0xMTI0LDkgKzExMjQsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9Ci0jaWYgVVNF
KEpTVkFMVUUzMl82NCkKLSAgICAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG1fZ3JhcGgu
dmFyQXJnQ2hpbGQobm9kZSwgMCkpOyAvLyBTcGVjdWxhdGluZyBjZWxsIGR1ZSB0byByZWdpc3Rl
ciBwcmVzc3VyZSBvbiAzMi1iaXQuCi0jZW5kaWYKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgQXJyYXk6OkZvcmNlRXhpdDoKICAgICAgICAgICAgICAgICBicmVhazsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IDk0NTM1
MzU2ZGU5OWI0MDI0MWFmOWU3NjEwZjU1NDU0Nzk1YjM5Y2UuLjEzN2FiNTUxOTE0ZWQzNmUzN2Vl
MWVmNDY4MmRiYTI0NmEyYTBlOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcApAQCAtNzQ5LDM1ICs3NDksNiBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uQXJpdGhUcnVuYywgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCog
ZwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodHJ1bmNhdGVkVmFsdWVPZkFy
Z3VtZW50KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRCeVZh
bENlbGwsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
ZWxsKiBiYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHkpKQotewotICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLQotICAgIEpTVmFsdWUgcHJvcGVydHkgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFByb3BlcnR5KTsKLQotICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9
IHByb3BlcnR5LnRyeUdldEFzVWludDMySW5kZXgoKSkKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBnZXRCeVZhbFdpdGhJbmRleChnbG9iYWxPYmplY3QsIGJhc2UsICppbmRleCkp
OwotCi0gICAgaWYgKHByb3BlcnR5LmlzU3RyaW5nKCkpIHsKLSAgICAgICAgU3RydWN0dXJlJiBz
dHJ1Y3R1cmUgPSAqYmFzZS0+c3RydWN0dXJlKHZtKTsKLSAgICAgICAgaWYgKEpTQ2VsbDo6Y2Fu
VXNlRmFzdEdldE93blByb3BlcnR5KHN0cnVjdHVyZSkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxB
dG9tU3RyaW5nSW1wbD4gZXhpc3RpbmdBdG9tU3RyaW5nID0gYXNTdHJpbmcocHJvcGVydHkpLT50
b0V4aXN0aW5nQXRvbVN0cmluZyhnbG9iYWxPYmplY3QpOwotICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgICAgICAgICBpZiAoZXhp
c3RpbmdBdG9tU3RyaW5nKSB7Ci0gICAgICAgICAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0g
YmFzZS0+ZmFzdEdldE93blByb3BlcnR5KHZtLCBzdHJ1Y3R1cmUsIGV4aXN0aW5nQXRvbVN0cmlu
Zy5nZXQoKSkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIGF1dG8gcHJvcGVy
dHlOYW1lID0gcHJvcGVydHkudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwotICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoYmFzZSkuZ2V0KGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lKSkpOwotfQotCiBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVl
IGdldEJ5VmFsQ2VsbEludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIEpT
Q2VsbCogYmFzZSwgaW50MzJfdCBpbmRleCkKIHsKICAgICBpZiAoaW5kZXggPCAwKSB7CkBAIC0y
NTA3LDcgKzI0NzgsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRW51bWVy
YXRvck5leHRVcGRhdGVQcm9wZXJ0eU5hbWUsIEpTU3RyaW5nKiwgKAogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25FbnVtZXJhdG9yUmVj
b3Zlck5hbWVBbmRHZXRCeVZhbCwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0NlbGwqIGJhc2UsIHVpbnQzMl90IGluZGV4LCBKU1Byb3BlcnR5TmFtZUVu
dW1lcmF0b3IqIGVudW1lcmF0b3IpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bkVudW1lcmF0b3JSZWNvdmVyTmFtZUFuZEdldEJ5VmFsLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGJhc2VWYWx1ZSwgdWludDMy
X3QgaW5kZXgsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogZW51bWVyYXRvcikpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTI1MTgsNyArMjQ4OSw4IEBAIEpTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25FbnVtZXJhdG9yUmVjb3Zlck5hbWVBbmRHZXRCeVZhbCwg
RW5jb2RlZEpTVmFsCiAgICAgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSA9IHN0cmluZy0+dG9J
ZGVudGlmaWVyKGdsb2JhbE9iamVjdCk7CiAgICAgLy8gVGhpcyBzaG91bGQgb25seSByZWFsbHkg
cmV0dXJuIGZvciBUZXJtaW5hdGlvbkV4Y2VwdGlvbiBzaW5jZSB3ZSBrbm93IHN0cmluZyBpcyBi
YWNrZWQgYnkgYSBVVUlELgogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0g
ICAgSlNPYmplY3QqIG9iamVjdCA9IGJhc2UtPnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAg
SlNWYWx1ZSBiYXNlID0gSlNWYWx1ZTo6ZGVjb2RlKGJhc2VWYWx1ZSk7CisgICAgSlNPYmplY3Qq
IG9iamVjdCA9IGJhc2UudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUob2JqZWN0LT5nZXQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKSk7CkBA
IC0yNTM5LDE5ICsyNTExLDYgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkVu
dW1lcmF0b3JJbkJ5VmFsLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2IKICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oQ29tbW9uU2xvd1Bh
dGhzOjpvcEluQnlWYWwoZ2xvYmFsT2JqZWN0LCBiYXNlLCBwcm9wZXJ0eU5hbWUpKSkpOwogfQog
Ci1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRW51bWVyYXRvckdldEJ5VmFsR2Vu
ZXJpYywgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSBiYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHByb3BlcnR5TmFtZVZhbHVlLCB1
aW50MzJfdCBpbmRleCwgaW50MzJfdCBtb2RlTnVtYmVyLCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3IqIGVudW1lcmF0b3IpKQotewotICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwot
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIEpTVmFsdWUg
cHJvcGVydHkgPSBKU1ZhbHVlOjpkZWNvZGUocHJvcGVydHlOYW1lVmFsdWUpOwotICAgIEpTUHJv
cGVydHlOYW1lRW51bWVyYXRvcjo6RmxhZyBtb2RlID0gc3RhdGljX2Nhc3Q8SlNQcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yOjpGbGFnPihtb2RlTnVtYmVyKTsKLSAgICBKU1ZhbHVlIGJhc2UgPSBKU1Zh
bHVlOjpkZWNvZGUoYmFzZVZhbHVlKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShDb21tb25TbG93UGF0aHM6Om9wRW51bWVyYXRvckdldEJ5VmFsKGdsb2Jh
bE9iamVjdCwgYmFzZSwgcHJvcGVydHksIGluZGV4LCBtb2RlLCBlbnVtZXJhdG9yKSkpOwotfQot
CiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRW51bWVyYXRvckhhc093blByb3Bl
cnR5LCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIGJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgcHJvcGVydHlOYW1lVmFsdWUsIHVp
bnQzMl90IGluZGV4LCBpbnQzMl90IG1vZGVOdW1iZXIpKQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgK
aW5kZXggNGZkNTc5NWQyZDJhZTUwNDdiZjE4OGU0Y2IzNzIwOGJlZTRhMWRiMy4uYzIyYWJhNzcw
ZmM5OWNjNjRiYzViOWU3ZDhkOGQxYjViZTI1OGIyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTkwLDcgKzkwLDYgQEAgSlNDX0RFQ0xBUkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25Bcml0aFJvdW5kLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2Jq
ZWN0KiwKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQXJpdGhGbG9vciwgRW5j
b2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlKSk7CiBKU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkFyaXRoQ2VpbCwgRW5jb2RlZEpTVmFsdWUsIChK
U0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbkFyaXRoVHJ1bmMsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3Qq
LCBFbmNvZGVkSlNWYWx1ZSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25H
ZXRCeVZhbENlbGwsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHkpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uR2V0QnlWYWxPYmplY3RJbnQsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxP
YmplY3QqLCBKU09iamVjdCosIGludDMyX3QpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uR2V0QnlWYWxTdHJpbmdJbnQsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmpl
Y3QqLCBKU1N0cmluZyosIGludDMyX3QpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uR2V0QnlWYWxPYmplY3RTdHJpbmcsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmpl
Y3QqLCBKU0NlbGwqLCBKU0NlbGwqIHN0cmluZykpOwpAQCAtMTExLDggKzExMCw3IEBAIEpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRW51bWVyYXRvck5leHRVcGRhdGVJbmRleEFu
ZE1vZGUsIEVuY29kZWRKU1ZhCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkVu
dW1lcmF0b3JOZXh0VXBkYXRlUHJvcGVydHlOYW1lLCBKU1N0cmluZyosIChKU0dsb2JhbE9iamVj
dCosIHVpbnQzMl90LCBpbnQzMl90LCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqKSk7CiBKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkVudW1lcmF0b3JJbkJ5VmFsLCBFbmNvZGVk
SlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVl
LCB1aW50MzJfdCwgaW50MzJfdCkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25FbnVtZXJhdG9ySGFzT3duUHJvcGVydHksIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmpl
Y3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIHVpbnQzMl90LCBpbnQzMl90KSk7
Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkVudW1lcmF0b3JSZWNvdmVyTmFt
ZUFuZEdldEJ5VmFsLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiwg
dWludDMyX3QsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciopKTsKLUpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uRW51bWVyYXRvckdldEJ5VmFsR2VuZXJpYywgRW5jb2RlZEpTVmFs
dWUsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgdWlu
dDMyX3QsIGludDMyX3QsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciopKTsKK0pTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRW51bWVyYXRvclJlY292ZXJOYW1lQW5kR2V0QnlWYWws
IEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgdWludDMy
X3QsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciopKTsKIAogSlNDX0RFQ0xBUkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdSZWdleHBXaXRoTGFzdEluZGV4LCBKU0NlbGwqLCAoSlNHbG9iYWxP
YmplY3QqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25OZXdBcnJheSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSosIHZvaWQqLCBzaXplX3QpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggNzQ5ZWY1NDZhYmY5Y2RmZTcwMDU0Mjc4N2UwNjVmZTY1
MTk0OWQ4ZS4uZmZjYjZlM2YwYjFkN2Y0MWRlZDBkNTcxYmY1OGNmNjkwMDg1MThlOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTE1
ODU0LDYgKzE1ODU0LDExOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWFrZVJvcGUo
Tm9kZSogbm9kZSkKICNlbmRpZgogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRW51
bWVyYXRvckdldEJ5VmFsKE5vZGUqIG5vZGUpCit7CisgICAgRWRnZSBiYXNlRWRnZSA9IG1fZ3Jh
cGgudmFyQXJnQ2hpbGQobm9kZSwgMCk7CisgICAgYXV0byBnZW5lcmF0ZSA9IFsmXSAoSlNWYWx1
ZVJlZ3MgYmFzZVJlZ3MpIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGRvbmVD
YXNlczsKKyAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0OworICAgICAgICBKU1Zh
bHVlUmVncyByZXN1bHRSZWdzOworICAgICAgICBHUFJSZWcgaW5kZXhHUFI7CisgICAgICAgIEdQ
UlJlZyBlbnVtZXJhdG9yR1BSOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBiYWRTdHJ1
Y3R1cmVTbG93UGF0aDsKKworICAgICAgICBjb21waWxlR2V0QnlWYWwobm9kZSwgc2NvcGVkTGFt
YmRhPHN0ZDo6dHVwbGU8SlNWYWx1ZVJlZ3MsIERhdGFGb3JtYXQ+KERhdGFGb3JtYXQpPihbJl0g
KERhdGFGb3JtYXQpIHsKKyAgICAgICAgICAgIEVkZ2Ugc3RvcmFnZUVkZ2UgPSBtX2dyYXBoLnZh
ckFyZ0NoaWxkKG5vZGUsIDIpOworICAgICAgICAgICAgU3RvcmFnZU9wZXJhbmQgc3RvcmFnZTsK
KyAgICAgICAgICAgIGlmIChzdG9yYWdlRWRnZSkKKyAgICAgICAgICAgICAgICBzdG9yYWdlLmVt
cGxhY2UodGhpcywgc3RvcmFnZUVkZ2UpOworICAgICAgICAgICAgU3BlY3VsYXRlU3RyaWN0SW50
MzJPcGVyYW5kIGluZGV4KHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMykpOworICAg
ICAgICAgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIG1vZGUodGhpcywgbV9ncmFwaC52
YXJBcmdDaGlsZChub2RlLCA0KSk7CisgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBl
bnVtZXJhdG9yKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgNSkpOworCisgICAgICAg
ICAgICBHUFJSZWcgbW9kZUdQUiA9IG1vZGUuZ3ByKCk7CisgICAgICAgICAgICBpbmRleEdQUiA9
IGluZGV4LmdwcigpOworICAgICAgICAgICAgZW51bWVyYXRvckdQUiA9IGVudW1lcmF0b3IuZ3By
KCk7CisKKyAgICAgICAgICAgIGJvb2wgaGF2ZVN0b3JhZ2UgPSAhIXN0b3JhZ2VFZGdlOworICAg
ICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0b3JhZ2VUZW1wb3Jhcnk7CisgICAgICAgICAgICBHUFJS
ZWcgc3RvcmFnZUdQUjsKKyAgICAgICAgICAgIGlmICghaGF2ZVN0b3JhZ2UpIHsKKyAgICAgICAg
ICAgICAgICBzdG9yYWdlVGVtcG9yYXJ5ID0gR1BSVGVtcG9yYXJ5KHRoaXMsIFJldXNlLCBlbnVt
ZXJhdG9yKTsKKyAgICAgICAgICAgICAgICBzdG9yYWdlR1BSID0gc3RvcmFnZVRlbXBvcmFyeS5n
cHIoKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHN0b3JhZ2VHUFIgPSBz
dG9yYWdlLmdwcigpOworCisgICAgICAgICAgICByZXN1bHQgPSBKU1ZhbHVlUmVnc1RlbXBvcmFy
eSh0aGlzKTsKKyAgICAgICAgICAgIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworICAgICAg
ICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSByZXN1bHRSZWdzLnBheWxvYWRHUFIoKTsKKworICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IG5vdEZhc3ROYW1lZENhc2VzOworCisg
ICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGdlbmVyYXRlIHRoaXMgY29kZSBpZiB3
ZSBrbm93IGJhc2UgaXMgbm90IGFuIG9iamVjdC4KKyAgICAgICAgICAgIG5vdEZhc3ROYW1lZENh
c2VzLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIG1v
ZGVHUFIsIFRydXN0ZWRJbW0zMihKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OkluZGV4ZWRNb2Rl
IHwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpHZW5lcmljTW9kZSkpKTsKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBpZiAoIW1fc3RhdGUuZm9yTm9kZShiYXNlRWRnZSkuaXNUeXBl
KFNwZWNDZWxsKSkKKyAgICAgICAgICAgICAgICAgICAgbm90RmFzdE5hbWVkQ2FzZXMuYXBwZW5k
KG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncykpOworCisgICAgICAgICAgICAgICAgLy8g
Q2hlY2sgdGhlIHN0cnVjdHVyZQorICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBJZiB3ZSBrbm93
IHRoZXJlJ3Mgb25seSBvbmUgc3RydWN0dXJlIGZvciBiYXNlIHdlIGNhbiBqdXN0IGVtYmVkIGl0
IGhlcmUuCisgICAgICAgICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VSZWdzLnBheWxvYWRHUFIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwg
c2NyYXRjaEdQUik7CisKKyAgICAgICAgICAgICAgICBhdXRvIGJhZFN0cnVjdHVyZSA9IG1faml0
LmJyYW5jaDMyKAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
CisgICAgICAgICAgICAgICAgICAgIHNjcmF0Y2hHUFIsCisgICAgICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKAorICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYXRv
ckdQUiwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpjYWNoZWRTdHJ1Y3R1cmVJRE9mZnNldCgp
KSk7CisKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogTWF5YmUgd2Ugc2hvdWxkIGhhdmUgYSBi
ZXR0ZXIgd2F5IHRvIHJlcHJlc2VudCBJbmRleGVkK05hbWVkPworICAgICAgICAgICAgICAgIGlm
IChtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpLm5vZGUoKSA9PSBtX2dyYXBoLnZhckFyZ0No
aWxkKG5vZGUsIDMpLm5vZGUoKSkKKyAgICAgICAgICAgICAgICAgICAgYmFkU3RydWN0dXJlU2xv
d1BhdGggPSBiYWRTdHJ1Y3R1cmU7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICBub3RGYXN0TmFtZWRDYXNlcy5hcHBlbmQoYmFkU3RydWN0dXJlKTsKKworICAgICAg
ICAgICAgICAgIC8vIENvbXB1dGUgdGhlIG9mZnNldAorICAgICAgICAgICAgICAgIC8vIElmIGlu
ZGV4IGlzIGxlc3MgdGhhbiB0aGUgZW51bWVyYXRvcidzIGNhY2hlZCBpbmxpbmUgc3RvcmFnZSwg
dGhlbiBpdCdzIGFuIGlubGluZSBhY2Nlc3MKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6SnVtcCBvdXRPZkxpbmVBY2Nlc3MgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6
QWJvdmVPckVxdWFsLAorICAgICAgICAgICAgICAgICAgICBpbmRleEdQUiwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoZW51bWVyYXRvckdQUiwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpjYWNo
ZWRJbmxpbmVDYXBhY2l0eU9mZnNldCgpKSk7CisKKyAgICAgICAgICAgICAgICBtX2ppdC5sb2Fk
VmFsdWUoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChiYXNlUmVncy5wYXlsb2FkR1BSKCksIGlu
ZGV4R1BSLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgSlNPYmplY3Q6Om9mZnNldE9mSW5s
aW5lU3RvcmFnZSgpKSwgcmVzdWx0UmVncyk7CisKKyAgICAgICAgICAgICAgICBkb25lQ2FzZXMu
YXBwZW5kKG1faml0Lmp1bXAoKSk7CisKKyAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UgaXQn
cyBvdXQgb2YgbGluZQorICAgICAgICAgICAgICAgIG91dE9mTGluZUFjY2Vzcy5saW5rKCZtX2pp
dCk7CisgICAgICAgICAgICAgICAgbV9qaXQubW92ZShpbmRleEdQUiwgc2NyYXRjaEdQUik7Cisg
ICAgICAgICAgICAgICAgbV9qaXQuc3ViMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZW51bWVy
YXRvckdQUiwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpjYWNoZWRJbmxpbmVDYXBhY2l0eU9m
ZnNldCgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgICAgICAgICAgbV9qaXQubmVnMzIoc2NyYXRj
aEdQUik7CisgICAgICAgICAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIoc2NyYXRjaEdQ
Uiwgc2NyYXRjaEdQUik7CisgICAgICAgICAgICAgICAgaWYgKCFoYXZlU3RvcmFnZSkKKyAgICAg
ICAgICAgICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
UmVncy5wYXlsb2FkR1BSKCksIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHN0b3JhZ2VH
UFIpOworICAgICAgICAgICAgICAgIGNvbnN0ZXhwciBpbnRwdHJfdCBvZmZzZXRPZkZpcnN0UHJv
cGVydHkgPSBvZmZzZXRJbkJ1dHRlcmZseShmaXJzdE91dE9mTGluZU9mZnNldCkgKiBzdGF0aWNf
Y2FzdDxpbnRwdHJfdD4oc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSk7CisgICAgICAgICAgICAgICAg
bV9qaXQubG9hZFZhbHVlKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZUdQUiwgc2Ny
YXRjaEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQsIG9mZnNldE9mRmlyc3RQcm9wZXJ0
eSksIHJlc3VsdFJlZ3MpOworICAgICAgICAgICAgICAgIGRvbmVDYXNlcy5hcHBlbmQobV9qaXQu
anVtcCgpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbm90RmFzdE5hbWVkQ2FzZXMu
bGluaygmbV9qaXQpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHJlc3VsdFJl
Z3MsIERhdGFGb3JtYXRKUyk7CisgICAgICAgIH0pKTsKKworICAgICAgICAvLyBXZSByZWx5IG9u
IGNvbXBpbGVHZXRCeVZhbCB0byBjYWxsIGpzVmFsdWVSZXN1bHQgZm9yIHVzLgorICAgICAgICAv
LyBGSVhNRTogVGhpcyBpcyBraW5kYSBoYWNreS4uLgorICAgICAgICBBU1NFUlQoZ2VuZXJhdGlv
bkluZm8obm9kZSkuanNWYWx1ZVJlZ3MoKSA9PSByZXN1bHRSZWdzICYmIGdlbmVyYXRpb25JbmZv
KG5vZGUpLnJlZ2lzdGVyRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEpTKTsKKworICAgICAgICBpZiAo
YmFkU3RydWN0dXJlU2xvd1BhdGguaXNTZXQoKSkgeworICAgICAgICAgICAgaWYgKGJhc2VSZWdz
LnRhZ0dQUigpID09IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICAgICAgYWRkU2xvd1BhdGhH
ZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKGJhZFN0cnVjdHVyZVNsb3dQYXRoLCB0aGlzLCBvcGVyYXRp
b25FbnVtZXJhdG9yUmVjb3Zlck5hbWVBbmRHZXRCeVZhbCwgcmVzdWx0UmVncywgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VSZWdzLnBheWxv
YWRHUFIoKSksIGluZGV4R1BSLCBlbnVtZXJhdG9yR1BSKSk7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKGJhZFN0cnVj
dHVyZVNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25FbnVtZXJhdG9yUmVjb3Zlck5hbWVBbmRHZXRC
eVZhbCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdzLCBp
bmRleEdQUiwgZW51bWVyYXRvckdQUikpOworICAgICAgICB9CisKKyAgICAgICAgZG9uZUNhc2Vz
LmxpbmsoJm1faml0KTsKKyAgICB9OworCisgICAgaWYgKGlzQ2VsbChiYXNlRWRnZS51c2VLaW5k
KCkpKSB7CisgICAgICAgIC8vIFVzZSBtYW51YWwgb3BlcmFuZCBzcGVjdWxhdGlvbiBzaW5jZSBG
aXh1cCBtYXkgaGF2ZSBwaWNrZWQgYSBVc2VLaW5kIG1vcmUgcmVzdHJpY3RpdmUgdGhhbiBDZWxs
VXNlLgorICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIGJhc2VFZGdlLCBN
YW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBzcGVjdWxhdGUobm9kZSwgYmFzZUVk
Z2UpOworICAgICAgICBnZW5lcmF0ZShKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZS5ncHIo
KSkpOworICAgIH0gZWxzZSB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgYmFz
ZUVkZ2UpOworICAgICAgICBnZW5lcmF0ZShiYXNlLnJlZ3MoKSk7CisgICAgfQorfQorCiB9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggNGQzYWM4YTJiMzM1
Zjc4YmM1NGQ4NTBjOGQzMDNkMTQ1MjU3YTdiZC4uMjI5YjI0OWIyNjFlOGI0ZWQ0ZDM5MmU2ZDlk
ZDJjZmE4ZDk3YzFmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0xODE4LDEyICsxODE4LDE0IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVDb250aWd1b3VzUHV0QnlWYWwoTm9kZSogbm9kZSwgQmFzZU9w
ZXJhbmRUeXBlJiBiYXNlCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWwoTm9k
ZSogbm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SlNWYWx1ZVJlZ3MsIERhdGFG
b3JtYXQ+KERhdGFGb3JtYXQgcHJlZmVycmVkRm9ybWF0KT4mIHByZWZpeCkKIHsKICAgICBzd2l0
Y2ggKG5vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkgewotICAgIGNhc2UgQXJyYXk6OlNlbGVjdFVz
aW5nUHJlZGljdGlvbnM6CisgICAgY2FzZSBBcnJheTo6QW55VHlwZWRBcnJheToKICAgICBjYXNl
IEFycmF5OjpGb3JjZUV4aXQ6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0jaWYgQ09NUElMRVJfUVVJUksoQ09OU0lERVJTX1VOUkVBQ0hBQkxFX0NPREUpCi0gICAgICAg
IHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKEluYWRlcXVhdGVDb3ZlcmFnZSwgSlNWYWx1
ZVJlZ3MoKSwgMCk7Ci0jZW5kaWYKKyAgICBjYXNlIEFycmF5OjpTZWxlY3RVc2luZ0FyZ3VtZW50
czoKKyAgICBjYXNlIEFycmF5OjpTZWxlY3RVc2luZ1ByZWRpY3Rpb25zOgorICAgIGNhc2UgQXJy
YXk6OlVucHJvZmlsZWQ6CisgICAgY2FzZSBBcnJheTo6QmlnSW50NjRBcnJheToKKyAgICBjYXNl
IEFycmF5OjpCaWdVaW50NjRBcnJheToKKyAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCks
IG5vZGUsICJCYWQgYXJyYXkgbW9kZSB0eXBlIik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
QXJyYXk6OlVuZGVjaWRlZDogewogICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQg
aW5kZXgodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CkBAIC0xODQ2LDc0ICsx
ODQ4LDg4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbChOb2RlKiBub2Rl
LCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAgICAgICAgICAgICBpZiAobV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAwKS51c2VLaW5kKCkgPT0gT2JqZWN0VXNlKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkudXNlS2luZCgpID09IFN0
cmluZ1VzZSkgewogICAgICAgICAgICAgICAgICAgICBjb21waWxlR2V0QnlWYWxGb3JPYmplY3RX
aXRoU3RyaW5nKG5vZGUsIHByZWZpeCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICAgICAgaWYgKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkudXNlS2luZCgpID09IFN5bWJv
bFVzZSkgewogICAgICAgICAgICAgICAgICAgICBjb21waWxlR2V0QnlWYWxGb3JPYmplY3RXaXRo
U3ltYm9sKG5vZGUsIHByZWZpeCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGgudmFy
QXJnQ2hpbGQobm9kZSwgMCkpOyAvLyBTYXZlIGEgcmVnaXN0ZXIsIHNwZWN1bGF0ZSBjZWxsLiBX
ZSdsbCBwcm9iYWJseSBiZSByaWdodC4KKyAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2Uo
dGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7CiAgICAgICAgICAgICBKU1ZhbHVl
T3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKLSAg
ICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICAgICAgICAgIEpTVmFs
dWVSZWdzIGJhc2VHUFIgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CiAgICAgICAgICAgICBKU1ZhbHVl
UmVncyBwcm9wZXJ0eVJlZ3MgPSBwcm9wZXJ0eS5qc1ZhbHVlUmVncygpOwogCiAgICAgICAgICAg
ICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzOwogICAgICAgICAgICAgc3RkOjp0aWUocmVzdWx0UmVn
cywgc3RkOjppZ25vcmUpID0gcHJlZml4KERhdGFGb3JtYXRKUyk7CiAKICAgICAgICAgICAgIGZs
dXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5
VmFsQ2VsbCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIs
IHByb3BlcnR5UmVncyk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5
VmFsLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgcHJv
cGVydHlSZWdzKTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAg
ICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7Ci0gICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHNwZWN1bGF0ZShu
b2RlLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKLSAgICAgICAgc3BlY3VsYXRlKG5v
ZGUsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOwotCi0gICAgICAgIEpTVmFsdWVPcGVy
YW5kIGJhc2UodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSwgTWFudWFsT3BlcmFu
ZFNwZWN1bGF0aW9uKTsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgcHJvcGVydHkodGhpcywgbV9n
cmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKLQot
ICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKICAgICAg
ICAgSlNWYWx1ZVJlZ3MgcHJvcGVydHlSZWdzID0gcHJvcGVydHkuanNWYWx1ZVJlZ3MoKTsKKyAg
ICAgICAgc3BlY3VsYXRlKG5vZGUsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOwogCi0g
ICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3M7Ci0gICAgICAgIHN0ZDo6dGllKHJlc3VsdFJl
Z3MsIHN0ZDo6aWdub3JlKSA9IHByZWZpeChEYXRhRm9ybWF0SlMpOworICAgICAgICBhdXRvIGdl
bmVyYXRlID0gWyZdIChKU1ZhbHVlUmVncyBiYXNlUmVncykgeworICAgICAgICAgICAgSlNWYWx1
ZVJlZ3MgcmVzdWx0UmVnczsKKyAgICAgICAgICAgIHN0ZDo6dGllKHJlc3VsdFJlZ3MsIHN0ZDo6
aWdub3JlKSA9IHByZWZpeChEYXRhRm9ybWF0SlMpOwogCi0gICAgICAgIENvZGVPcmlnaW4gY29k
ZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKLSAgICAgICAgQ2FsbFNpdGVJbmRleCBj
YWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGlu
Z09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKLSAgICAgICAg
UmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKKyAgICAg
ICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKKyAg
ICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFu
ZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9z
dHJlYW0tPnNpemUoKSk7CisgICAgICAgICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0g
dGhpcy0+dXNlZFJlZ2lzdGVycygpOwogCi0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBz
bG93Q2FzZXM7Ci0gICAgICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKG1fZ3JhcGgudmFyQXJnQ2hp
bGQobm9kZSwgMCkpLmlzVHlwZShTcGVjQ2VsbCkpCi0gICAgICAgICAgICBzbG93Q2FzZXMuYXBw
ZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncy50YWdHUFIoKSkpOworICAgICAgICAg
ICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKKyAgICAgICAgICAgIGlmICghbV9z
dGF0ZS5mb3JOb2RlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpLmlzVHlwZShTcGVjQ2Vs
bCkpCisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENl
bGwoYmFzZVJlZ3MpKTsKIAotICAgICAgICBKSVRHZXRCeVZhbEdlbmVyYXRvciBnZW4oCi0gICAg
ICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBj
YWxsU2l0ZSwgQWNjZXNzVHlwZTo6R2V0QnlWYWwsIHVzZWRSZWdpc3RlcnMsCi0gICAgICAgICAg
ICBiYXNlUmVncywgcHJvcGVydHlSZWdzLCByZXN1bHRSZWdzLCBJbnZhbGlkR1BSUmVnKTsKKyAg
ICAgICAgICAgIEpJVEdldEJ5VmFsR2VuZXJhdG9yIGdlbigKKyAgICAgICAgICAgICAgICBtX2pp
dC5jb2RlQmxvY2soKSwgSklUVHlwZTo6REZHSklULCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNj
ZXNzVHlwZTo6R2V0QnlWYWwsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgICAgICAgICAgYmFzZVJl
Z3MsIHByb3BlcnR5UmVncywgcmVzdWx0UmVncywgSW52YWxpZEdQUlJlZyk7CiAKLSAgICAgICAg
aWYgKG1fc3RhdGUuZm9yTm9kZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKS5pc1R5cGUo
U3BlY1N0cmluZykpCi0gICAgICAgICAgICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJc1N0cmlu
ZyA9IHRydWU7Ci0gICAgICAgIGVsc2UgaWYgKG1fc3RhdGUuZm9yTm9kZShtX2dyYXBoLnZhckFy
Z0NoaWxkKG5vZGUsIDEpKS5pc1R5cGUoU3BlY0ludDMyT25seSkpCi0gICAgICAgICAgICBnZW4u
c3R1YkluZm8oKS0+cHJvcGVydHlJc0ludDMyID0gdHJ1ZTsKLSAgICAgICAgZWxzZSBpZiAobV9z
dGF0ZS5mb3JOb2RlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpLmlzVHlwZShTcGVjU3lt
Ym9sKSkKLSAgICAgICAgICAgIGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzU3ltYm9sID0gdHJ1
ZTsKKyAgICAgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUobV9ncmFwaC52YXJBcmdDaGlsZChu
b2RlLCAxKSkuaXNUeXBlKFNwZWNTdHJpbmcpKQorICAgICAgICAgICAgICAgIGdlbi5zdHViSW5m
bygpLT5wcm9wZXJ0eUlzU3RyaW5nID0gdHJ1ZTsKKyAgICAgICAgICAgIGVsc2UgaWYgKG1fc3Rh
dGUuZm9yTm9kZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKS5pc1R5cGUoU3BlY0ludDMy
T25seSkpCisgICAgICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCktPnByb3BlcnR5SXNJbnQzMiA9
IHRydWU7CisgICAgICAgICAgICBlbHNlIGlmIChtX3N0YXRlLmZvck5vZGUobV9ncmFwaC52YXJB
cmdDaGlsZChub2RlLCAxKSkuaXNUeXBlKFNwZWNTeW1ib2wpKQorICAgICAgICAgICAgICAgIGdl
bi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzU3ltYm9sID0gdHJ1ZTsKIAotICAgICAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aChtX2ppdCk7CisgICAgICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCht
X2ppdCk7CiAKLSAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwor
ICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogCi0gICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGggPSBzbG93UGF0
aENhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5VmFsT3B0
aW1pemUsCi0gICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHVi
SW5mbygpLCBudWxscHRyLCBiYXNlUmVncywgcHJvcGVydHlSZWdzKTsKKyAgICAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgICAgICAgICBp
ZiAoYmFzZVJlZ3MudGFnR1BSKCkgPT0gSW52YWxpZEdQUlJlZykgeworICAgICAgICAgICAgICAg
IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMs
IHRoaXMsIG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUsCisgICAgICAgICAgICAgICAgICAgIHJl
c3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIG51bGxwdHIsIENDYWxs
SGVscGVyczo6Q2VsbFZhbHVlKGJhc2VSZWdzLnBheWxvYWRHUFIoKSksIHByb3BlcnR5UmVncyk7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1Bh
dGhDYWxsKAorICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdl
dEJ5VmFsT3B0aW1pemUsCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVP
cmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIG51bGxwdHIsIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3Mp
OworICAgICAgICAgICAgfQogCi0gICAgICAgIG1faml0LmFkZEdldEJ5VmFsKGdlbiwgc2xvd1Bh
dGguZ2V0KCkpOwotICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRo
KSk7CisgICAgICAgICAgICBtX2ppdC5hZGRHZXRCeVZhbChnZW4sIHNsb3dQYXRoLmdldCgpKTsK
KyAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKIAot
ICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOworICAgICAgICAgICAganNW
YWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKKyAgICAgICAgfTsKKworICAgICAgICBpZiAo
aXNDZWxsKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkudXNlS2luZCgpKSkgeworICAgICAg
ICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxk
KG5vZGUsIDApLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICAgICAgc3BlY3Vs
YXRlKG5vZGUsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOworICAgICAgICAgICAgZ2Vu
ZXJhdGUoSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2UuZ3ByKCkpKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbV9ncmFwaC52YXJB
cmdDaGlsZChub2RlLCAwKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgICAg
IHNwZWN1bGF0ZShub2RlLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKKyAgICAgICAg
ICAgIGdlbmVyYXRlKGJhc2UuanNWYWx1ZVJlZ3MoKSk7CisgICAgICAgIH0KICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIGNhc2UgQXJyYXk6OkludDMyOgpAQCAtMTkzMiw3ICsxOTQ4LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNj
b3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoKICAgICAgICAgICAgIERhdGFGb3JtYXQgZm9ybWF0Owog
ICAgICAgICAgICAgc3RkOjp0aWUocmVzdWx0UmVncywgZm9ybWF0KSA9IHByZWZpeChub2RlLT5h
cnJheU1vZGUoKS50eXBlKCkgPT0gQXJyYXk6OkludDMyID8gRGF0YUZvcm1hdEludDMyIDogRGF0
YUZvcm1hdEpTKTsKIAotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywg
SlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JF
cXVhbCwgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VSZWcsIEJ1
dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIG51bGxwdHIsIG1faml0LmJyYW5j
aDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhzdG9yYWdlUmVnLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3Ro
KCkpKSk7CiAKICAgICAgICAgICAgIGlmIChmb3JtYXQgPT0gRGF0YUZvcm1hdEludDMyKSB7CiAg
ICAgICAgICAgICAgICAgQVNTRVJUKCFub2RlLT5hcnJheU1vZGUoKS5pc0luQm91bmRzU2FuZUNo
YWluKCkpOwpAQCAtMTk5NCw4ICsyMDEwLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUdldEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoKICAg
ICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJv
dmVPckVxdWFsLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJl
ZywgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSkpOwogCiAgICAgICAgIG1faml0
LmxvYWRWYWx1ZShNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VSZWcsIHByb3BlcnR5
UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCksIHJlc3VsdFJlZ3MpOwotICAgICAgICBz
bG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmRW1wdHkocmVzdWx0UmVncy50YWdHUFIoKSkp
OwogCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZFbXB0eShyZXN1bHRS
ZWdzLnRhZ0dQUigpKSk7CiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICAg
ICAgc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0
aW9uR2V0QnlWYWxPYmplY3RJbnQsCkBAIC0yMDE2LDIyICsyMDMyLDIzIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbChOb2RlKiBub2RlLCBjb25zdCBTY29wZWRMYW1iZGE8
c3RkOjp0dXBsZTxKCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBGUFJU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICAgICAgRlBSUmVnIHJlc3VsdFJlZyA9IHJl
c3VsdC5mcHIoKTsKIAogICAgICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVnczsKICAgICAg
ICAgICAgIERhdGFGb3JtYXQgZm9ybWF0OwogICAgICAgICAgICAgc3RkOjp0aWUocmVzdWx0UmVn
cywgZm9ybWF0KSA9IHByZWZpeChEYXRhRm9ybWF0RG91YmxlKTsKIAotICAgICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNo
MzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHN0b3JhZ2VSZWcsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgo
KSkpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVS
ZWdzKCksIG51bGxwdHIsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1
YWwsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVnLCBCdXR0
ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKSk7CiAKLSAgICAgICAgICAgIG1faml0Lmxv
YWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJl
ZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQpLCByZXN1bHQuZnByKCkpOworICAgICAgICAg
ICAgbV9qaXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VSZWcs
IHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCksIHJlc3VsdFJlZyk7CiAg
ICAgICAgICAgICBpZiAoIW5vZGUtPmFycmF5TW9kZSgpLmlzSW5Cb3VuZHNTYW5lQ2hhaW4oKSkK
LSAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKExvYWRGcm9tSG9sZSwgSlNWYWx1ZVJl
Z3MoKSwgMCwgbV9qaXQuYnJhbmNoSWZOYU4ocmVzdWx0LmZwcigpKSk7CisgICAgICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhMb2FkRnJvbUhvbGUsIEpTVmFsdWVSZWdzKCksIG51bGxwdHIs
IG1faml0LmJyYW5jaElmTmFOKHJlc3VsdFJlZykpOwogICAgICAgICAgICAgaWYgKGZvcm1hdCA9
PSBEYXRhRm9ybWF0SlMpIHsKLSAgICAgICAgICAgICAgICBib3hEb3VibGUocmVzdWx0LmZwcigp
LCByZXN1bHRSZWdzKTsKKyAgICAgICAgICAgICAgICBib3hEb3VibGUocmVzdWx0UmVnLCByZXN1
bHRSZWdzKTsKICAgICAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUp
OwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoZm9ybWF0ID09
IERhdGFGb3JtYXREb3VibGUgJiYgIXJlc3VsdFJlZ3MpOwotICAgICAgICAgICAgICAgIGRvdWJs
ZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUpOworICAgICAgICAgICAgICAgIGRvdWJsZVJlc3Vs
dChyZXN1bHRSZWcsIG5vZGUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KQEAgLTIwODMsNyArMjEwMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVHZXRCeVZhbChOb2RlKiBub2RlLCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAg
ICAgICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzOwogICAgICAgICAgICAgc3RkOjp0aWUo
cmVzdWx0UmVncywgc3RkOjppZ25vcmUpID0gcHJlZml4KERhdGFGb3JtYXRKUyk7CiAKLSAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIDAsIG1f
aml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5UmVnLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVnLCBBcnJheVN0b3JhZ2U6OnZlY3Rvckxl
bmd0aE9mZnNldCgpKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5k
cywgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6
OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3Jh
Z2VSZWcsIEFycmF5U3RvcmFnZTo6dmVjdG9yTGVuZ3RoT2Zmc2V0KCkpKSk7CiAKICAgICAgICAg
ICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VSZWcsIHBy
b3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgQXJyYXlTdG9yYWdlOjp2ZWN0
b3JPZmZzZXQoKSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSwgcmVz
dWx0UmVncy50YWdHUFIoKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKExvYWRGcm9t
SG9sZSwgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNoSWZFbXB0eShyZXN1bHRSZWdzLnRh
Z0dQUigpKSk7CkBAIC0yMDk2LDkgKzIxMTMsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUdldEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoK
ICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBtX2dyYXBoLnZhckFyZ0No
aWxkKG5vZGUsIDApKTsKICAgICAgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIHByb3Bl
cnR5KHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkpOwogICAgICAgICBTdG9yYWdl
T3BlcmFuZCBzdG9yYWdlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMikpOworCisg
ICAgICAgIEdQUlJlZyBiYXNlUmVnID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHByb3Bl
cnR5UmVnID0gcHJvcGVydHkuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBzdG9yYWdlUmVnID0gc3Rv
cmFnZS5ncHIoKTsKLSAgICAgICAgR1BSUmVnIGJhc2VSZWcgPSBiYXNlLmdwcigpOwogCiAgICAg
ICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTIxMjAsOCAr
MjEzOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbChOb2RlKiBub2Rl
LCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAgICAgICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKAogICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAgIHNsb3dD
YXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlWYWxPYmplY3RJbnQsCi0gICAgICAgICAgICAgICAg
cmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksCi0gICAgICAgICAgICAgICAg
YmFzZVJlZywgcHJvcGVydHlSZWcpKTsKKyAgICAgICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcpKTsKIAogICAgICAg
ICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTIx
MzUsOCArMjE1MiwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWwoTm9k
ZSogbm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SgogICAgIGNhc2UgQXJyYXk6
OlNjb3BlZEFyZ3VtZW50czoKICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25TY29wZWRBcmd1bWVu
dHMobm9kZSwgcHJlZml4KTsKICAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDogewotICAgICAg
ICBBU1NFUlQobm9kZS0+YXJyYXlNb2RlKCkuaXNTb21lVHlwZWRBcnJheVZpZXcoKSk7CisgICAg
Y2FzZSBBcnJheTo6SW50OEFycmF5OgorICAgIGNhc2UgQXJyYXk6OkludDE2QXJyYXk6CisgICAg
Y2FzZSBBcnJheTo6SW50MzJBcnJheToKKyAgICBjYXNlIEFycmF5OjpVaW50OEFycmF5OgorICAg
IGNhc2UgQXJyYXk6OlVpbnQ4Q2xhbXBlZEFycmF5OgorICAgIGNhc2UgQXJyYXk6OlVpbnQxNkFy
cmF5OgorICAgIGNhc2UgQXJyYXk6OlVpbnQzMkFycmF5OgorICAgIGNhc2UgQXJyYXk6OkZsb2F0
MzJBcnJheToKKyAgICBjYXNlIEFycmF5OjpGbG9hdDY0QXJyYXk6IHsKICAgICAgICAgVHlwZWRB
cnJheVR5cGUgdHlwZSA9IG5vZGUtPmFycmF5TW9kZSgpLnR5cGVkQXJyYXlUeXBlKCk7CiAgICAg
ICAgIGlmIChpc0ludCh0eXBlKSkKICAgICAgICAgICAgIGNvbXBpbGVHZXRCeVZhbE9uSW50VHlw
ZWRBcnJheShub2RlLCB0eXBlLCBwcmVmaXgpOwpAQCAtNDQ5OCw0MyArNDUyMiw2IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFJhbmRvbShOb2RlKiBub2RlKQogICAgIGRvdWJs
ZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUpOwogfQogCi0vLyBGSVhNRTogd2UgYXJlIGFsd2F5
cyB0YWtpbmcgdGhlIHNsb3cgcGF0aCBoZXJlLCB3ZSBzaG91bGQgYmUgYWJsZSB0byBkbyB0aGUg
ZXF1aXZhbGVudCB0byB0aGUgNjRiaXQgdmVyc2lvbiBpZiB3ZSBhZGQgbW9yZSBhdmFpbGFibGUg
KGNhbGxlZS1zYXZlIHJlZ2lzdGVycykgdG8gQVJNdjcgYW5kL29yIGlmIHdlIHJlZHVjZSB0aGUg
bnVtYmVyIG9mIHJlZ2lzdGVycyBjb21waWxlRW51bWVyYXRvckdldEJ5VmFsIHVzZXMuIFNlZSBi
dWcgIzIzMDE4OS4KLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVFbnVtZXJhdG9yR2V0QnlW
YWwoTm9kZSogbm9kZSkKLXsKLSAgICBFZGdlIGJhc2VFZGdlID0gbV9ncmFwaC52YXJBcmdDaGls
ZChub2RlLCAwKTsKLSAgICBhdXRvIGdlbmVyYXRlID0gWyZdIChKU1ZhbHVlUmVncyBiYXNlUmVn
cykgewotICAgICAgICBKU1ZhbHVlT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBtX2dyYXBoLnZhckFy
Z0NoaWxkKG5vZGUsIDEpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwotICAgICAgICBTcGVj
dWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgaW5kZXgodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChu
b2RlLCAzKSk7Ci0gICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBtb2RlKHRoaXMs
IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgNCkpOwotICAgICAgICBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCBlbnVtZXJhdG9yKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgNSkpOwotICAg
ICAgICBKU1ZhbHVlUmVncyBwcm9wZXJ0eVJlZ3MgPSBwcm9wZXJ0eS5qc1ZhbHVlUmVncygpOwot
ICAgICAgICBHUFJSZWcgaW5kZXhHUFIgPSBpbmRleC5ncHIoKTsKLSAgICAgICAgR1BSUmVnIG1v
ZGVHUFIgPSBtb2RlLmdwcigpOwotICAgICAgICBHUFJSZWcgZW51bWVyYXRvckdQUiA9IGVudW1l
cmF0b3IuZ3ByKCk7Ci0KLSAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLQotICAgICAgICBKU1Zh
bHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKLSAgICAgICAgSlNWYWx1ZVJl
Z3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7Ci0KLSAgICAgICAgaWYgKGJhc2VSZWdzLnRh
Z0dQUigpID09IEludmFsaWRHUFJSZWcpCi0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkVudW1lcmF0b3JHZXRCeVZhbEdlbmVyaWMsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlUmVncy5wYXlsb2FkR1BS
KCkpLCBwcm9wZXJ0eVJlZ3MsIGluZGV4R1BSLCBtb2RlR1BSLCBlbnVtZXJhdG9yR1BSKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25FbnVtZXJhdG9y
R2V0QnlWYWxHZW5lcmljLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
YmFzZVJlZ3MsIHByb3BlcnR5UmVncywgaW5kZXhHUFIsIG1vZGVHUFIsIGVudW1lcmF0b3JHUFIp
OwotICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwotICAgICAgICBqc1ZhbHVlUmVzdWx0
KHJlc3VsdFJlZ3MsIG5vZGUpOwotICAgIH07Ci0KLSAgICBpZiAoaXNDZWxsKGJhc2VFZGdlLnVz
ZUtpbmQoKSkpIHsKLSAgICAgICAgLy8gVXNlIG1hbnVhbCBvcGVyYW5kIHNwZWN1bGF0aW9uIHNp
bmNlIEZpeHVwIG1heSBoYXZlIHBpY2tlZCBhIFVzZUtpbmQgbW9yZSByZXN0cmljdGl2ZSB0aGFu
IENlbGxVc2UuCi0gICAgICAgIHNwZWN1bGF0ZShub2RlLCBiYXNlRWRnZSk7Ci0gICAgICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgYmFzZUVkZ2UsIE1hbnVhbE9wZXJhbmRTcGVj
dWxhdGlvbik7Ci0gICAgICAgIGdlbmVyYXRlKEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNl
LmdwcigpKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlz
LCBiYXNlRWRnZSk7Ci0gICAgICAgIGdlbmVyYXRlKGJhc2UucmVncygpKTsKLSAgICB9Ci19CiAj
ZW5kaWYKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggYTYxZmE1ZTQyM2UzODNj
Nzk0OGYxODE1N2U4MGNlNTFmNzAxNjBmZS4uMTRhNTA3NjFmZDlhNjUyYzNmMGUzOTEwYWE2OWVl
ZTExM2ZmMTNkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwCkBAIC02NDY2LDExNCArNjQ2Niw2IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVEYXRlR2V0KE5vZGUqIG5vZGUpCiAgICAgfQogfQogCi12b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlRW51bWVyYXRvckdldEJ5VmFsKE5vZGUqIG5vZGUpCi17Ci0gICAgRWRn
ZSBiYXNlRWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCk7Ci0gICAgYXV0byBnZW5l
cmF0ZSA9IFsmXSAoR1BSUmVnIGJhc2VDZWxsR1BSKSB7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wTGlzdCBkb25lQ2FzZXM7Ci0gICAgICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3Vs
dDsKLSAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVnczsKLSAgICAgICAgR1BSUmVnIGluZGV4
R1BSOwotICAgICAgICBHUFJSZWcgZW51bWVyYXRvckdQUjsKLSAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgYmFkU3RydWN0dXJlU2xvd1BhdGg7Ci0KLSAgICAgICAgY29tcGlsZUdldEJ5VmFs
KG5vZGUsIHNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEpTVmFsdWVSZWdzLCBEYXRhRm9ybWF0PihE
YXRhRm9ybWF0KT4oWyZdIChEYXRhRm9ybWF0KSB7Ci0gICAgICAgICAgICBFZGdlIHN0b3JhZ2VF
ZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAyKTsKLSAgICAgICAgICAgIFN0b3JhZ2VP
cGVyYW5kIHN0b3JhZ2U7Ci0gICAgICAgICAgICBpZiAoc3RvcmFnZUVkZ2UpCi0gICAgICAgICAg
ICAgICAgc3RvcmFnZS5lbXBsYWNlKHRoaXMsIHN0b3JhZ2VFZGdlKTsKLSAgICAgICAgICAgIFNw
ZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBpbmRleCh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxk
KG5vZGUsIDMpKTsKLSAgICAgICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBtb2Rl
KHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgNCkpOwotICAgICAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgZW51bWVyYXRvcih0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUs
IDUpKTsKLQotICAgICAgICAgICAgR1BSUmVnIG1vZGVHUFIgPSBtb2RlLmdwcigpOwotICAgICAg
ICAgICAgaW5kZXhHUFIgPSBpbmRleC5ncHIoKTsKLSAgICAgICAgICAgIGVudW1lcmF0b3JHUFIg
PSBlbnVtZXJhdG9yLmdwcigpOwotCi0gICAgICAgICAgICByZXN1bHQgPSBKU1ZhbHVlUmVnc1Rl
bXBvcmFyeSh0aGlzKTsKLSAgICAgICAgICAgIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwot
ICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSByZXN1bHRSZWdzLnBheWxvYWRHUFIoKTsK
LQotICAgICAgICAgICAgYm9vbCBoYXZlU3RvcmFnZSA9ICEhc3RvcmFnZUVkZ2U7Ci0gICAgICAg
ICAgICBHUFJUZW1wb3Jhcnkgc3RvcmFnZVRlbXBvcmFyeTsKLSAgICAgICAgICAgIEdQUlJlZyBz
dG9yYWdlR1BSOwotICAgICAgICAgICAgaWYgKCFoYXZlU3RvcmFnZSkgewotICAgICAgICAgICAg
ICAgIHN0b3JhZ2VUZW1wb3JhcnkgPSBHUFJUZW1wb3JhcnkodGhpcywgUmV1c2UsIGVudW1lcmF0
b3IpOwotICAgICAgICAgICAgICAgIHN0b3JhZ2VHUFIgPSBzdG9yYWdlVGVtcG9yYXJ5Lmdwcigp
OwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgc3RvcmFnZUdQUiA9IHN0b3Jh
Z2UuZ3ByKCk7Ci0KLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBub3RGYXN0
TmFtZWRDYXNlczsKLQotICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBnZW5lcmF0
ZSB0aGlzIGNvZGUgaWYgd2Uga25vdyBiYXNlIGlzIG5vdCBhbiBvYmplY3QuCi0gICAgICAgICAg
ICBub3RGYXN0TmFtZWRDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1i
bGVyOjpOb25aZXJvLCBtb2RlR1BSLCBUcnVzdGVkSW1tMzIoSlNQcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yOjpJbmRleGVkTW9kZSB8IEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6R2VuZXJpY01vZGUp
KSk7Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKCFtX3N0YXRlLmZvck5vZGUo
YmFzZUVkZ2UpLmlzVHlwZShTcGVjQ2VsbCkpCi0gICAgICAgICAgICAgICAgICAgIG5vdEZhc3RO
YW1lZENhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZUNlbGxHUFIpKTsKLQot
ICAgICAgICAgICAgICAgIC8vIENoZWNrIHRoZSBzdHJ1Y3R1cmUKLSAgICAgICAgICAgICAgICAv
LyBGSVhNRTogSWYgd2Uga25vdyB0aGVyZSdzIG9ubHkgb25lIHN0cnVjdHVyZSBmb3IgYmFzZSB3
ZSBjYW4ganVzdCBlbWJlZCBpdCBoZXJlLgotICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlQ2VsbEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9m
ZnNldCgpKSwgc2NyYXRjaEdQUik7Ci0KLSAgICAgICAgICAgICAgICBhdXRvIGJhZFN0cnVjdHVy
ZSA9IG1faml0LmJyYW5jaDMyKAotICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsCi0gICAgICAgICAgICAgICAgICAgIHNjcmF0Y2hHUFIsCi0gICAgICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKAotICAgICAgICAgICAgICAgICAgICAgICAg
ZW51bWVyYXRvckdQUiwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpjYWNoZWRTdHJ1Y3R1cmVJ
RE9mZnNldCgpKSk7Ci0KLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogTWF5YmUgd2Ugc2hvdWxk
IGhhdmUgYSBiZXR0ZXIgd2F5IHRvIHJlcHJlc2VudCBJbmRleGVkK05hbWVkPwotICAgICAgICAg
ICAgICAgIGlmIChtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpLm5vZGUoKSA9PSBtX2dyYXBo
LnZhckFyZ0NoaWxkKG5vZGUsIDMpLm5vZGUoKSkKLSAgICAgICAgICAgICAgICAgICAgYmFkU3Ry
dWN0dXJlU2xvd1BhdGggPSBiYWRTdHJ1Y3R1cmU7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICBub3RGYXN0TmFtZWRDYXNlcy5hcHBlbmQoYmFkU3RydWN0dXJlKTsK
LQotICAgICAgICAgICAgICAgIC8vIENvbXB1dGUgdGhlIG9mZnNldAotICAgICAgICAgICAgICAg
IC8vIElmIGluZGV4IGlzIGxlc3MgdGhhbiB0aGUgZW51bWVyYXRvcidzIGNhY2hlZCBpbmxpbmUg
c3RvcmFnZSwgdGhlbiBpdCdzIGFuIGlubGluZSBhY2Nlc3MKLSAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBvdXRPZkxpbmVBY2Nlc3MgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fz
c2VtYmxlcjo6QWJvdmVPckVxdWFsLAotICAgICAgICAgICAgICAgICAgICBpbmRleEdQUiwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoZW51bWVyYXRvckdQUiwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yOjpjYWNoZWRJbmxpbmVDYXBhY2l0eU9mZnNldCgpKSk7Ci0KLSAgICAgICAgICAgICAgICBt
X2ppdC5sb2FkVmFsdWUoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChiYXNlQ2VsbEdQUiwgaW5k
ZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxp
bmVTdG9yYWdlKCkpLCByZXN1bHRSZWdzKTsKLQotICAgICAgICAgICAgICAgIGRvbmVDYXNlcy5h
cHBlbmQobV9qaXQuanVtcCgpKTsKLQotICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZSBpdCdz
IG91dCBvZiBsaW5lCi0gICAgICAgICAgICAgICAgb3V0T2ZMaW5lQWNjZXNzLmxpbmsoJm1faml0
KTsKLSAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKGluZGV4R1BSLCBzY3JhdGNoR1BSKTsKLSAg
ICAgICAgICAgICAgICBtX2ppdC5zdWIzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhlbnVtZXJh
dG9yR1BSLCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmNhY2hlZElubGluZUNhcGFjaXR5T2Zm
c2V0KCkpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5uZWczMihzY3JhdGNo
R1BSKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihzY3JhdGNoR1BS
LCBzY3JhdGNoR1BSKTsKLSAgICAgICAgICAgICAgICBpZiAoIWhhdmVTdG9yYWdlKQotICAgICAg
ICAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VD
ZWxsR1BSLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBzdG9yYWdlR1BSKTsKLSAgICAg
ICAgICAgICAgICBjb25zdGV4cHIgaW50cHRyX3Qgb2Zmc2V0T2ZGaXJzdFByb3BlcnR5ID0gb2Zm
c2V0SW5CdXR0ZXJmbHkoZmlyc3RPdXRPZkxpbmVPZmZzZXQpICogc3RhdGljX2Nhc3Q8aW50cHRy
X3Q+KHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpOwotICAgICAgICAgICAgICAgIG1faml0LmxvYWRW
YWx1ZShNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VHUFIsIHNjcmF0Y2hHUFIsIE1h
Y3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBvZmZzZXRPZkZpcnN0UHJvcGVydHkpLCByZXN1bHRS
ZWdzKTsKLSAgICAgICAgICAgICAgICBkb25lQ2FzZXMuYXBwZW5kKG1faml0Lmp1bXAoKSk7Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIG5vdEZhc3ROYW1lZENhc2VzLmxpbmsoJm1faml0
KTsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihyZXN1bHRSZWdzLCBEYXRhRm9y
bWF0SlMpOwotICAgICAgICB9KSk7Ci0KLSAgICAgICAgLy8gV2UgcmVseSBvbiBjb21waWxlR2V0
QnlWYWwgdG8gY2FsbCBqc1ZhbHVlUmVzdWx0IGZvciB1cy4KLSAgICAgICAgLy8gRklYTUU6IFRo
aXMgaXMga2luZGEgaGFja3kuLi4KLSAgICAgICAgQVNTRVJUKGdlbmVyYXRpb25JbmZvKG5vZGUp
LmpzVmFsdWVSZWdzKCkgPT0gcmVzdWx0UmVncyAmJiBnZW5lcmF0aW9uSW5mbyhub2RlKS5yZWdp
c3RlckZvcm1hdCgpID09IERhdGFGb3JtYXRKUyk7Ci0KLSAgICAgICAgaWYgKGJhZFN0cnVjdHVy
ZVNsb3dQYXRoLmlzU2V0KCkpCi0gICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93
UGF0aENhbGwoYmFkU3RydWN0dXJlU2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbkVudW1lcmF0b3JS
ZWNvdmVyTmFtZUFuZEdldEJ5VmFsLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgYmFzZUNlbGxHUFIsIGluZGV4R1BSLCBlbnVtZXJhdG9yR1BSKSk7Ci0KLSAgICAgICAg
ZG9uZUNhc2VzLmxpbmsoJm1faml0KTsKLSAgICB9OwotCi0gICAgaWYgKGlzQ2VsbChiYXNlRWRn
ZS51c2VLaW5kKCkpKSB7Ci0gICAgICAgIC8vIFVzZSBtYW51YWwgb3BlcmFuZCBzcGVjdWxhdGlv
biBzaW5jZSBGaXh1cCBtYXkgaGF2ZSBwaWNrZWQgYSBVc2VLaW5kIG1vcmUgcmVzdHJpY3RpdmUg
dGhhbiBDZWxsVXNlLgotICAgICAgICBzcGVjdWxhdGUobm9kZSwgYmFzZUVkZ2UpOwotICAgICAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlT3BlcmFuZCh0aGlzLCBiYXNlRWRnZSwgTWFudWFs
T3BlcmFuZFNwZWN1bGF0aW9uKTsKLSAgICAgICAgZ2VuZXJhdGUoYmFzZU9wZXJhbmQuZ3ByKCkp
OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2VPcGVyYW5kKHRoaXMs
IGJhc2VFZGdlKTsKLSAgICAgICAgZ2VuZXJhdGUoYmFzZU9wZXJhbmQuZ3ByKCkpOwotICAgIH0K
LX0KLQogI2VuZGlmCiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggNjNiNDU0ZjhjZDdm
ZjU3YWEzOTI0ZTM4NDZkMGEwZDQyMDcyMDhiMi4uZGI1MmMwNTZjMDEwMTdmNWM2MmNiYzFiNWZl
MTM3M2EwN2E3YjRlNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmgKQEAgLTExOCwyMSArMTE4LDYgQEAgaW5saW5lIEpTVmFsdWUgb3BFbnVt
ZXJhdG9yR2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNl
VmEKICAgICBjYXNlIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6R2VuZXJpY01vZGU6IHsKICAg
ICAgICAgaWYgKGFycmF5UHJvZmlsZSAmJiBiYXNlVmFsdWUuaXNDZWxsKCkgJiYgbW9kZSAhPSBK
U1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6Ok93blN0cnVjdHVyZU1vZGUpCiAgICAgICAgICAgICBh
cnJheVByb2ZpbGUtPm9ic2VydmVTdHJ1Y3R1cmVJRChiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVj
dHVyZUlEKCkpOwotI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgIGlmICghcHJvcGVydHlO
YW1lVmFsdWUuaXNDZWxsKCkpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgYnJhbmNoIGlzIG9ubHkg
bmVlZGVkIGJlY2F1c2Ugd2UgdXNlIHRoaXMgbWV0aG9kCi0gICAgICAgICAgICAvLyBib3RoIGFz
IGEgc2xvd19wYXRoIGFuZCBhcyBhIERGRyBjYWxsIG9wLiBXZSdsbCBlbmQgdXAKLSAgICAgICAg
ICAgIC8vIGhlcmUgaWYgcHJvcGVydHlOYW1lIGlzIG5vdCBhIGNlbGwgdGhlbiB3ZSBhcmUgaW4K
LSAgICAgICAgICAgIC8vIGluZGV4K25hbWVkIG1vZGUsIHNvIGRvIHdoYXQgUmVjb3Zlck5hbWVB
bmRHZXRWYWwKLSAgICAgICAgICAgIC8vIGRvZXMuIFRoaXMgY2FuIHByb2JhYmx5IGJlIHJlbW92
ZWQgaWYgd2UgcmUtZW5hYmxlIHRoZQotICAgICAgICAgICAgLy8gb3B0aW1pemF0aW9ucyBmb3Ig
ZW51bWVyYXRvckdldEJ5VmFsIGluIERGRywgc2VlIGJ1ZwotICAgICAgICAgICAgLy8gIzIzMDE4
OS4KLSAgICAgICAgICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBlbnVtZXJhdG9yLT5wcm9wZXJ0eU5h
bWVBdEluZGV4KGluZGV4KTsKLSAgICAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gc3RyaW5n
LT50b0lkZW50aWZpZXIoZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IGJhc2VWYWx1ZS5nZXQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgfQot
I2VuZGlmCiAgICAgICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBhc1N0cmluZyhwcm9wZXJ0eU5hbWVW
YWx1ZSk7CiAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gc3RyaW5nLT50b0lkZW50aWZpZXIo
Z2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>