<?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>203795</bug_id>
          
          <creation_ts>2019-11-02 21:37:50 -0700</creation_ts>
          <short_desc>[JSC] Use LinkTimeConstants and make some properties lazy</short_desc>
          <delta_ts>2019-11-08 13:12:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</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>
          <dependson>153792</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</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>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1586799</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-02 21:37:50 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588081</commentid>
    <comment_count>1</comment_count>
      <attachid>383009</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-06 19:18:14 -0800</bug_when>
    <thetext>Created attachment 383009
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588526</commentid>
    <comment_count>2</comment_count>
      <attachid>383098</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-07 17:53:06 -0800</bug_when>
    <thetext>Created attachment 383098
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588527</commentid>
    <comment_count>3</comment_count>
      <attachid>383099</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-07 17:56:11 -0800</bug_when>
    <thetext>Created attachment 383099
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588532</commentid>
    <comment_count>4</comment_count>
      <attachid>383099</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-11-07 18:20:02 -0800</bug_when>
    <thetext>Comment on attachment 383099
Patch

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

r=me with comments.

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:2015
&gt; +    if (m_mapIteratorProtocolWatchpointSet.isStillValid()) {

Can&apos;t this be an ASSERT? How can this not be valid if you haven&apos;t initialized Map.prototype? I don&apos;t think it&apos;s possible to access the Map iterator prototype object without first creating a Map.

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:2030
&gt; +    if (m_setIteratorProtocolWatchpointSet.isStillValid()) {

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588544</commentid>
    <comment_count>5</comment_count>
      <attachid>383099</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-07 18:47:10 -0800</bug_when>
    <thetext>Comment on attachment 383099
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:2015
&gt;&gt; +    if (m_mapIteratorProtocolWatchpointSet.isStillValid()) {
&gt; 
&gt; Can&apos;t this be an ASSERT? How can this not be valid if you haven&apos;t initialized Map.prototype? I don&apos;t think it&apos;s possible to access the Map iterator prototype object without first creating a Map.

This can be invalid because m_mapIteratorProtocolWatchpointSet is also checked by mapIteratorPrototype&apos;s change.

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:2020
&gt; +    if (m_mapSetWatchpointSet.isStillValid()) {

On the other hand, this is only used here. So we can convert it to ASSERT. Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:2030
&gt;&gt; +    if (m_setIteratorProtocolWatchpointSet.isStillValid()) {
&gt; 
&gt; ditto.

Ditto. This can be invalid if setIteratorPrototype is changed.

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:2035
&gt; +    if (m_setAddWatchpointSet.isStillValid()) {

Ditto. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588786</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-08 13:11:37 -0800</bug_when>
    <thetext>Committed r252256: &lt;https://trac.webkit.org/changeset/252256&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588787</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-11-08 13:12:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/57031944&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383009</attachid>
            <date>2019-11-06 19:18:14 -0800</date>
            <delta_ts>2019-11-07 17:53:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203795-20191106191813.patch</filename>
            <type>text/plain</type>
            <size>28665</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyMTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
ODE1MmM4NzEwN2NlZGQyY2YzMTRlZWVkNjQwNzlkMjhmZTg0N2Q3Li4xMDhkZDNiMjdjYzhmODRk
NTdiODhiOGZlMGY3MmY5Yjk4ZTViZDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNCBAQAorMjAxOS0xMS0wNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVzZSBMaW5rVGltZUNvbnN0YW50cyBhbmQgbWFrZSBzb21lIHBy
b3BlcnRpZXMgbGF6eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjAzNzk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6c3BlY2ll
c1dhdGNocG9pbnRJc1ZhbGlkKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cDoKKyAgICAgICAgKEpTQzo6c2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQpOgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2
aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnRyeUluc3RhbGxB
cnJheVNwZWNpZXNXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Omlu
c3RhbGxOdW1iZXJQcm90b3R5cGVXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6Omluc3RhbGxNYXBQcm90b3R5cGVXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6Omluc3RhbGxTZXRQcm90b3R5cGVXYXRjaHBvaW50KToKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpu
dW1iZXJQcm90b1RvU3RyaW5nRnVuY3Rpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6bWFwUHJvdG90eXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OmpzU2V0UHJvdG90eXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
Om51bWJlck9iamVjdFN0cnVjdHVyZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjptYXBTdHJ1Y3R1cmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvTWFw
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6TWFwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgICogcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpOdW1iZXJQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL051
bWJlclByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU2V0UHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6U2V0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisKIDIwMTktMTEtMDYg
IFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkFzc2Vt
Ymx5XSBCQlFQbGFuIHNob3VsZCByZXRhaW4gV2FzbTo6Q29kZUJsb2NrIHdoZW4gY29tcGlsaW5n
IGEgc2luZ2xlIGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheVByb3RvdHlwZS5jcHAKaW5kZXggMmU3ZTZhM2E1MzY4MzVkMjI5YzY2ZWFkYTI5ZTYwZjFj
NTE1ODg1Mi4uY2I3NzNkNDM0Y2ZiNTQ5MzA4ZGE5ZWZjMzQwZmU3ODQzMmFkMzgzMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAt
MTk5LDcgKzE5OSw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBzcGVjaWVzV2F0Y2hwb2ludElzVmFs
aWQoVk0mIHZtLCBKU09iamVjdCogdGhpc09iamVjdCkKIAogICAgIGlmIChnbG9iYWxPYmplY3Qt
PmFycmF5U3BlY2llc1dhdGNocG9pbnRTZXQoKS5zdGF0ZU9uSlNUaHJlYWQoKSA9PSBDbGVhcldh
dGNocG9pbnQpIHsKICAgICAgICAgZGF0YUxvZ0xuSWYoQXJyYXlQcm90b3R5cGVJbnRlcm5hbDo6
dmVyYm9zZSwgIkluaXRpYWxpemluZyBBcnJheSBzcGVjaWVzIHdhdGNocG9pbnRzIGZvciBBcnJh
eS5wcm90b3R5cGU6ICIsIHBvaW50ZXJEdW1wKGFycmF5UHJvdG90eXBlKSwgIiB3aXRoIHN0cnVj
dHVyZTogIiwgcG9pbnRlckR1bXAoYXJyYXlQcm90b3R5cGUtPnN0cnVjdHVyZSh2bSkpLCAiXG5h
bmQgQXJyYXk6ICIsIHBvaW50ZXJEdW1wKGdsb2JhbE9iamVjdC0+YXJyYXlDb25zdHJ1Y3Rvcigp
KSwgIiB3aXRoIHN0cnVjdHVyZTogIiwgcG9pbnRlckR1bXAoZ2xvYmFsT2JqZWN0LT5hcnJheUNv
bnN0cnVjdG9yKCktPnN0cnVjdHVyZSh2bSkpKTsKLSAgICAgICAgZ2xvYmFsT2JqZWN0LT50cnlJ
bnN0YWxsQXJyYXlTcGVjaWVzV2F0Y2hwb2ludChnbG9iYWxPYmplY3QpOworICAgICAgICBnbG9i
YWxPYmplY3QtPnRyeUluc3RhbGxBcnJheVNwZWNpZXNXYXRjaHBvaW50KCk7CiAgICAgICAgIEFT
U0VSVChnbG9iYWxPYmplY3QtPmFycmF5U3BlY2llc1dhdGNocG9pbnRTZXQoKS5zdGF0ZU9uSlNU
aHJlYWQoKSAhPSBDbGVhcldhdGNocG9pbnQpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGE5ZGQ5MTExMjYwYmIy
ZDJkMDJjNGUxYTEyMDBlNTg0Yjc2NTEwOTUuLjEwYzhkNWRmMDQzYjA0MWQzOWU3NDQ1NDAzZmUy
ZGYzMDI0ZmRiOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKQEAgLTQ2MCw2ICs0NjAsMjkgQEAgc3RhdGljIEdldHRlclNldHRlciog
Z2V0R2V0dGVyQnlJZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogYmFz
ZSwKICAgICByZXR1cm4ganNDYXN0PEdldHRlclNldHRlcio+KHNsb3QuZ2V0UHVyZVJlc3VsdCgp
KTsKIH0KIAorc3RhdGljIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIHNldHVwQWRhcHRpdmVXYXRj
aHBvaW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBiYXNlLCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyAgICAvLyBQZXJmb3JtaW5nIHRoZXNlIGdldHMgc2hv
dWxkIG5vdCB0aHJvdy4KKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0
byBjYXRjaFNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisgICAgUHJvcGVydHlTbG90
IHNsb3QoYmFzZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7CisgICAg
Ym9vbCByZXN1bHQgPSBiYXNlLT5nZXRPd25Qcm9wZXJ0eVNsb3QoYmFzZSwgZ2xvYmFsT2JqZWN0
LCBpZGVudCwgc2xvdCk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAg
Y2F0Y2hTY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworICAgIFJFTEVBU0VfQVNTRVJUKHNsb3Qu
aXNDYWNoZWFibGVWYWx1ZSgpKTsKKyAgICBKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUgPSBzbG90Lmdl
dFZhbHVlKGdsb2JhbE9iamVjdCwgaWRlbnQpOworICAgIGNhdGNoU2NvcGUuYXNzZXJ0Tm9FeGNl
cHRpb24oKTsKKyAgICBBU1NFUlQoanNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0sIGZ1bmN0
aW9uVmFsdWUpKTsKKworICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IGdl
bmVyYXRlQ29uZGl0aW9uRm9yU2VsZkVxdWl2YWxlbmNlKHZtLCBudWxscHRyLCBiYXNlLCBpZGVu
dC5pbXBsKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKGNvbmRpdGlvbi5yZXF1aXJlZFZhbHVlKCkg
PT0gZnVuY3Rpb25WYWx1ZSk7CisKKyAgICBib29sIGlzV2F0Y2hhYmxlID0gY29uZGl0aW9uLmlz
V2F0Y2hhYmxlKFByb3BlcnR5Q29uZGl0aW9uOjpFbnN1cmVXYXRjaGFiaWxpdHkpOworICAgIFJF
TEVBU0VfQVNTRVJUKGlzV2F0Y2hhYmxlKTsgLy8gV2UgYWxsb3cgdGhpcyB0byBpbnN0YWxsIHRo
ZSBuZWNlc3Nhcnkgd2F0Y2hwb2ludHMuCisKKyAgICByZXR1cm4gY29uZGl0aW9uOworfQorCiB0
ZW1wbGF0ZTxFcnJvclR5cGUgZXJyb3JUeXBlPgogdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdGlh
bGl6ZUVycm9yQ29uc3RydWN0b3IoTGF6eUNsYXNzU3RydWN0dXJlOjpJbml0aWFsaXplciYgaW5p
dCkKIHsKQEAgLTU0Myw2ICs1NjYsMTEgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYg
dm0pCiAgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwgcHJv
bWlzZUNvbnN0cnVjdG9yUmVzb2x2ZUNvZGVHZW5lcmF0b3IoaW5pdC52bSksIGluaXQub3duZXIp
KTsKICAgICAgICAgfSk7CiAKKyAgICBtX251bWJlclByb3RvVG9TdHJpbmdGdW5jdGlvbi5pbml0
TGF0ZXIoCisgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxKU0Z1bmN0aW9uPiYgaW5pdCkg
eworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2Fz
dDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAxLCBpbml0LnZtLnByb3BlcnR5TmFtZXMt
PnRvU3RyaW5nLnN0cmluZygpLCBudW1iZXJQcm90b0Z1bmNUb1N0cmluZywgTnVtYmVyUHJvdG90
eXBlVG9TdHJpbmdJbnRyaW5zaWMpKTsKKyAgICAgICAgfSk7CisKICAgICBtX2Z1bmN0aW9uUHJv
dG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uLnNldCh2bSwgdGhpcywgaGFzSW5zdGFuY2VTeW1i
b2xGdW5jdGlvbik7CiAgICAgbV90aHJvd1R5cGVFcnJvckdldHRlclNldHRlci5pbml0TGF0ZXIo
CiAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxHZXR0ZXJTZXR0ZXI+JiBpbml0KSB7CkBA
IC05NDYsNyArOTc0LDYgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAj
IyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICBtX2xpbmtUaW1l
Q29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpyZWdFeHBC
dWlsdGluRXhlYyldLnNldCh2bSwgdGhpcywganNDYXN0PEpTRnVuY3Rpb24qPihtX3JlZ0V4cFBy
b3RvdHlwZS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5leGVjKSkpOwogICAgIG1f
bGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6
OnJlZ0V4cFByb3RvdHlwZVN5bWJvbFJlcGxhY2UpXS5zZXQodm0sIHRoaXMsIG1fcmVnRXhwUHJv
dG90eXBlLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnJlcGxhY2VTeW1ib2wpLmFz
Q2VsbCgpKTsKIAotICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KExpbmtUaW1lQ29uc3RhbnQ6OlNldCldLnNldCh2bSwgdGhpcywgc2V0Q29uc3RydWN0b3IpOwog
ICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29u
c3RhbnQ6OmlzQXJyYXkpXS5zZXQodm0sIHRoaXMsIGFycmF5Q29uc3RydWN0b3ItPmdldERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXNBcnJheSkuYXNDZWxsKCkpOwogICAgIG1fbGlua1Rp
bWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmNhbGxG
dW5jdGlvbildLnNldCh2bSwgdGhpcywgY2FsbEZ1bmN0aW9uKTsKICAgICBtX2xpbmtUaW1lQ29u
c3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjphcHBseUZ1bmN0
aW9uKV0uc2V0KHZtLCB0aGlzLCBhcHBseUZ1bmN0aW9uKTsKQEAgLTk3Nyw2ICsxMDA0LDkgQEAg
Y2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZl
YXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICBqc0Nhc3Q8SlNPYmplY3QqPihsaW5rVGltZUNv
bnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OlNldEl0ZXJhdG9yKSktPnB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBzZXRJdGVyYXRvclByb3RvdHlwZSk7CiAKICAgICAv
LyBNYXAgYW5kIFNldCBoZWxwZXJzLgorICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlNldCldLmluaXRMYXRlcihbXSAoY29uc3Qg
SW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoanNDYXN0
PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciktPnNldENvbnN0cnVjdG9yKCkpOworICAgICAg
ICB9KTsKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5r
VGltZUNvbnN0YW50OjptYXBCdWNrZXRIZWFkKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFs
aXplcjxKU0NlbGw+JiBpbml0KSB7CiAgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpj
cmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0
cmluZygpLCBtYXBQcml2YXRlRnVuY01hcEJ1Y2tldEhlYWQsIEpTTWFwQnVja2V0SGVhZEludHJp
bnNpYykpOwogICAgICAgICB9KTsKQEAgLTExODYsOTcgKzEyMTYsNDggQEAgY2FwaXRhbE5hbWUg
IyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8g
Y2FwaXRhbE5hbWUKIAogI3VuZGVmIENSRUFURV9QUk9UT1RZUEVfRk9SX0xBWllfVFlQRQogCi0g
ICAgYXV0byBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludCA9IFsmXSAoSlNPYmplY3QqIGJhc2UsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50KSAtPiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiB7Ci0gICAg
ICAgIC8vIFBlcmZvcm1pbmcgdGhlc2UgZ2V0cyBzaG91bGQgbm90IHRocm93LgotICAgICAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdChiYXNlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
R2V0KTsKLSAgICAgICAgYm9vbCByZXN1bHQgPSBiYXNlLT5nZXRPd25Qcm9wZXJ0eVNsb3QoYmFz
ZSwgdGhpcywgaWRlbnQsIHNsb3QpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVz
dWx0KTsKLSAgICAgICAgY2F0Y2hTY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwotICAgICAgICBS
RUxFQVNFX0FTU0VSVChzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKSk7Ci0gICAgICAgIEpTVmFsdWUg
ZnVuY3Rpb25WYWx1ZSA9IHNsb3QuZ2V0VmFsdWUodGhpcywgaWRlbnQpOwotICAgICAgICBjYXRj
aFNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAgICAgIEFTU0VSVChqc0R5bmFtaWNDYXN0
PEpTRnVuY3Rpb24qPih2bSwgZnVuY3Rpb25WYWx1ZSkpOwotCi0gICAgICAgIE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IGdlbmVyYXRlQ29uZGl0aW9uRm9yU2VsZkVxdWl2YWxl
bmNlKHZtLCBudWxscHRyLCBiYXNlLCBpZGVudC5pbXBsKCkpOwotICAgICAgICBSRUxFQVNFX0FT
U0VSVChjb25kaXRpb24ucmVxdWlyZWRWYWx1ZSgpID09IGZ1bmN0aW9uVmFsdWUpOwotCi0gICAg
ICAgIGJvb2wgaXNXYXRjaGFibGUgPSBjb25kaXRpb24uaXNXYXRjaGFibGUoUHJvcGVydHlDb25k
aXRpb246OkVuc3VyZVdhdGNoYWJpbGl0eSk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzV2F0
Y2hhYmxlKTsgLy8gV2UgYWxsb3cgdGhpcyB0byBpbnN0YWxsIHRoZSBuZWNlc3Nhcnkgd2F0Y2hw
b2ludHMuCi0KLSAgICAgICAgcmV0dXJuIGNvbmRpdGlvbjsKLSAgICB9OwotCiAgICAgewotICAg
ICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0
Y2hwb2ludChhcnJheUl0ZXJhdG9yUHJvdG90eXBlLCB2bS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsK
KyAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2
ZVdhdGNocG9pbnQodGhpcywgYXJyYXlJdGVyYXRvclByb3RvdHlwZSwgdm0ucHJvcGVydHlOYW1l
cy0+bmV4dCk7CiAgICAgICAgIG1fYXJyYXlJdGVyYXRvclByb3RvdHlwZU5leHQgPSBtYWtlVW5p
cXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9p
bnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2lu
dFNldCk7CiAgICAgICAgIG1fYXJyYXlJdGVyYXRvclByb3RvdHlwZU5leHQtPmluc3RhbGwodm0p
OwogICAgIH0KICAgICB7Ci0gICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlv
biA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KHRoaXMtPmFycmF5UHJvdG90eXBlKCksIHZtLnBy
b3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsKKyAgICAgICAgT2JqZWN0UHJvcGVydHlDb25k
aXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQodGhpcywgdGhpcy0+YXJy
YXlQcm90b3R5cGUoKSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpOwogICAgICAg
ICBtX2FycmF5UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxP
YmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0
Pj4odGhpcywgY29uZGl0aW9uLCBtX2FycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQp
OwogICAgICAgICBtX2FycmF5UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50LT5pbnN0
YWxsKHZtKTsKICAgICB9CiAgICAgewotICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBj
b25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludCh0aGlzLT5hcnJheVByb3RvdHlwZSgp
LCB2bS5wcm9wZXJ0eU5hbWVzLT5qb2luKTsKKyAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRp
b24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQodGhpcywgdGhpcy0+YXJyYXlQ
cm90b3R5cGUoKSwgdm0ucHJvcGVydHlOYW1lcy0+am9pbik7CiAgICAgICAgIG1fYXJyYXlQcm90
b3R5cGVKb2luV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFw
dGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9h
cnJheUpvaW5XYXRjaHBvaW50U2V0KTsKICAgICAgICAgbV9hcnJheVByb3RvdHlwZUpvaW5XYXRj
aHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAKICAgICB7Ci0gICAgICAgIE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1hcEl0ZXJh
dG9yUHJvdG90eXBlLCB2bS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKKyAgICAgICAgT2JqZWN0UHJv
cGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQodGhpcywg
bWFwSXRlcmF0b3JQcm90b3R5cGUsIHZtLnByb3BlcnR5TmFtZXMtPm5leHQpOwogICAgICAgICBt
X21hcEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFBy
b3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlz
LCBjb25kaXRpb24sIG1fbWFwSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQpOwogICAgICAg
ICBtX21hcEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAg
IH0KICAgICB7Ci0gICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNl
dHVwQWRhcHRpdmVXYXRjaHBvaW50KG1fbWFwUHJvdG90eXBlLmdldCgpLCB2bS5wcm9wZXJ0eU5h
bWVzLT5pdGVyYXRvclN5bWJvbCk7Ci0gICAgICAgIG1fbWFwUHJvdG90eXBlU3ltYm9sSXRlcmF0
b3JXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0
Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX21hcEl0ZXJh
dG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KTsKLSAgICAgICAgbV9tYXBQcm90b3R5cGVTeW1ib2xJ
dGVyYXRvcldhdGNocG9pbnQtPmluc3RhbGwodm0pOwotICAgIH0KLQotICAgIHsKLSAgICAgICAg
T2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9p
bnQoc2V0SXRlcmF0b3JQcm90b3R5cGUsIHZtLnByb3BlcnR5TmFtZXMtPm5leHQpOworICAgICAg
ICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hw
b2ludCh0aGlzLCBzZXRJdGVyYXRvclByb3RvdHlwZSwgdm0ucHJvcGVydHlOYW1lcy0+bmV4dCk7
CiAgICAgICAgIG1fc2V0SXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9IG1ha2VVbmlx
dWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2lu
dFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNl
dCk7CiAgICAgICAgIG1fc2V0SXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludC0+aW5zdGFs
bCh2bSk7CiAgICAgfQogICAgIHsKLSAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29u
ZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobV9zZXRQcm90b3R5cGUuZ2V0KCksIHZt
LnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsKLSAgICAgICAgbV9zZXRQcm90b3R5cGVT
eW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdl
QWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24s
IG1fc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQpOwotICAgICAgICBtX3NldFByb3Rv
dHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7Ci0gICAgfQotCi0gICAg
ewotICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0
aXZlV2F0Y2hwb2ludChtX3N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmdldCgpLCB2bS5wcm9wZXJ0
eU5hbWVzLT5uZXh0KTsKKyAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9u
ID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQodGhpcywgbV9zdHJpbmdJdGVyYXRvclByb3RvdHlw
ZS5nZXQoKSwgdm0ucHJvcGVydHlOYW1lcy0+bmV4dCk7CiAgICAgICAgIG1fc3RyaW5nSXRlcmF0
b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFu
Z2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlv
biwgbV9zdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCk7CiAgICAgICAgIG1fc3Ry
aW5nSXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQog
ICAgIHsKLSAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBB
ZGFwdGl2ZVdhdGNocG9pbnQobV9zdHJpbmdQcm90b3R5cGUuZ2V0KCksIHZtLnByb3BlcnR5TmFt
ZXMtPml0ZXJhdG9yU3ltYm9sKTsKKyAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29u
ZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQodGhpcywgbV9zdHJpbmdQcm90b3R5cGUu
Z2V0KCksIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsKICAgICAgICAgbV9zdHJp
bmdQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFBy
b3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlz
LCBjb25kaXRpb24sIG1fc3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQpOwogICAg
ICAgICBtX3N0cmluZ1Byb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludC0+aW5zdGFsbCh2
bSk7CiAgICAgfQogCi0gICAgewotICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25k
aXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX21hcFByb3RvdHlwZS5nZXQoKSwgdm0u
cHJvcGVydHlOYW1lcy0+c2V0KTsKLSAgICAgICAgbV9tYXBQcm90b3R5cGVTZXRXYXRjaHBvaW50
ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxp
bmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX21hcFNldFdhdGNocG9pbnRTZXQp
OwotICAgICAgICBtX21hcFByb3RvdHlwZVNldFdhdGNocG9pbnQtPmluc3RhbGwodm0pOwotICAg
IH0KLQotICAgIHsKLSAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0g
c2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobV9zZXRQcm90b3R5cGUuZ2V0KCksIHZtLnByb3BlcnR5
TmFtZXMtPmFkZCk7Ci0gICAgICAgIG1fc2V0UHJvdG90eXBlQWRkV2F0Y2hwb2ludCA9IG1ha2VV
bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hw
b2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zZXRBZGRXYXRjaHBvaW50U2V0KTsKLSAgICAg
ICAgbV9zZXRQcm90b3R5cGVBZGRXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKLSAgICB9Ci0KICAg
ICAvLyBVbmZvcnR1bmF0ZWx5LCB0aGUgcHJvdG90eXBlIG9iamVjdHMgb2YgdGhlIGJ1aWx0aW4g
b2JqZWN0cyBjYW4gYmUgdG91Y2hlZCBmcm9tIGNvbmN1cnJlbnQgY29tcGlsZXJzLiBTbyBlYWdl
cmx5IGluaXRpYWxpemUgdGhlbSBvbmx5IGlmIHdlIHVzZSBKSVQuCiAgICAgaWYgKFZNOjpjYW5V
c2VKSVQoKSkgewogICAgICAgICB0aGlzLT5ib29sZWFuUHJvdG90eXBlKCk7Ci0gICAgICAgIGF1
dG8qIG51bWJlclByb3RvdHlwZSA9IHRoaXMtPm51bWJlclByb3RvdHlwZSgpOworICAgICAgICB0
aGlzLT5udW1iZXJQcm90b3R5cGUoKTsKICAgICAgICAgdGhpcy0+c3ltYm9sUHJvdG90eXBlKCk7
Ci0KLSAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFw
dGl2ZVdhdGNocG9pbnQobnVtYmVyUHJvdG90eXBlLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmlu
Zyk7Ci0gICAgICAgIG1fbnVtYmVyUHJvdG90eXBlVG9TdHJpbmdXYXRjaHBvaW50ID0gbWFrZVVu
aXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBv
aW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX251bWJlclRvU3RyaW5nV2F0Y2hwb2ludFNldCk7
Ci0gICAgICAgIG1fbnVtYmVyUHJvdG90eXBlVG9TdHJpbmdXYXRjaHBvaW50LT5pbnN0YWxsKHZt
KTsKLSAgICAgICAgbV9udW1iZXJQcm90b1RvU3RyaW5nRnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBq
c0Nhc3Q8SlNGdW5jdGlvbio+KG51bWJlclByb3RvdHlwZS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT50b1N0cmluZykpKTsKICAgICB9CiAKICAgICBmaXh1cFByb3RvdHlwZUNoYWlu
V2l0aE9iamVjdFByb3RvdHlwZSh2bSk7CkBAIC0xNzcwLDcgKzE3NTEsNyBAQCB2b2lkIEpTR2xv
YmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiAgICAgdGhpc09iamVjdC0+bV9pdGVyYXRvclByb3RvY29sRnVuY3Rpb24udmlzaXQodmlz
aXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9wcm9taXNlUmVzb2x2ZUZ1bmN0aW9uLnZpc2l0KHZp
c2l0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fb2JqZWN0UHJvdG9WYWx1
ZU9mRnVuY3Rpb24pOwotICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbnVtYmVyUHJv
dG9Ub1N0cmluZ0Z1bmN0aW9uKTsKKyAgICB0aGlzT2JqZWN0LT5tX251bWJlclByb3RvVG9TdHJp
bmdGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0
LT5tX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKTsKICAgICB0aGlzT2Jq
ZWN0LT5tX3Rocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyLnZpc2l0KHZpc2l0b3IpOwogICAgIHZp
c2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcmVnRXhwUHJvdG9TeW1ib2xSZXBsYWNlKTsKQEAg
LTE5NDUsMTIgKzE5MjYsMTIgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6Y2xlYXJSYXJlRGF0YShK
U0NlbGwqIGNlbGwpCiAgICAganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oY2VsbCktPm1fcmFyZURh
dGEgPSBudWxscHRyOwogfQogCi12b2lkIEpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlT
cGVjaWVzV2F0Y2hwb2ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQordm9pZCBKU0ds
b2JhbE9iamVjdDo6dHJ5SW5zdGFsbEFycmF5U3BlY2llc1dhdGNocG9pbnQoKQogewogICAgIFJF
TEVBU0VfQVNTRVJUKCFtX2FycmF5UHJvdG90eXBlQ29uc3RydWN0b3JXYXRjaHBvaW50KTsKICAg
ICBSRUxFQVNFX0FTU0VSVCghbV9hcnJheUNvbnN0cnVjdG9yU3BlY2llc1dhdGNocG9pbnQpOwog
Ci0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIFZNJiB2bSA9IHRoaXMtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8g
Rmlyc3Qgd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgQXJyYXkucHJvdG90eXBlLmNvbnN0
cnVjdG9yIHByb3BlcnR5IHBvaW50cyB0byBBcnJheQpAQCAtMTk3MCwxMSArMTk1MSwxMSBAQCB2
b2lkIEpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlTcGVjaWVzV2F0Y2hwb2ludChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZQogICAgIH07CiAKICAgICBQcm9wZXJ0eVNsb3QgY29uc3Ry
dWN0b3JTbG90KGFycmF5UHJvdG90eXBlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlw
ZTo6Vk1JbnF1aXJ5KTsKLSAgICBhcnJheVByb3RvdHlwZS0+Z2V0T3duUHJvcGVydHlTbG90KGFy
cmF5UHJvdG90eXBlLCBnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9y
LCBjb25zdHJ1Y3RvclNsb3QpOworICAgIGFycmF5UHJvdG90eXBlLT5nZXRPd25Qcm9wZXJ0eVNs
b3QoYXJyYXlQcm90b3R5cGUsIHRoaXMsIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBj
b25zdHJ1Y3RvclNsb3QpOwogICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAgaWYg
KGNvbnN0cnVjdG9yU2xvdC5zbG90QmFzZSgpICE9IGFycmF5UHJvdG90eXBlCiAgICAgICAgIHx8
ICFjb25zdHJ1Y3RvclNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpCi0gICAgICAgIHx8IGNvbnN0cnVj
dG9yU2xvdC5nZXRWYWx1ZShnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVj
dG9yKSAhPSBhcnJheUNvbnN0cnVjdG9yKSB7CisgICAgICAgIHx8IGNvbnN0cnVjdG9yU2xvdC5n
ZXRWYWx1ZSh0aGlzLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvcikgIT0gYXJyYXlDb25z
dHJ1Y3RvcikgewogICAgICAgICBpbnZhbGlkYXRlV2F0Y2hwb2ludCgpOwogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtMTk4NCw3ICsxOTY1LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dHJ5
SW5zdGFsbEFycmF5U3BlY2llc1dhdGNocG9pbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUK
ICAgICAgICAgY29uc3RydWN0b3JTdHJ1Y3R1cmUgPSBjb25zdHJ1Y3RvclN0cnVjdHVyZS0+Zmxh
dHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUodm0sIGFycmF5Q29uc3RydWN0b3IpOwogCiAgICAgUHJv
cGVydHlTbG90IHNwZWNpZXNTbG90KGFycmF5Q29uc3RydWN0b3IsIFByb3BlcnR5U2xvdDo6SW50
ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOwotICAgIGFycmF5Q29uc3RydWN0b3ItPmdldE93
blByb3BlcnR5U2xvdChhcnJheUNvbnN0cnVjdG9yLCBnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5
TmFtZXMtPnNwZWNpZXNTeW1ib2wsIHNwZWNpZXNTbG90KTsKKyAgICBhcnJheUNvbnN0cnVjdG9y
LT5nZXRPd25Qcm9wZXJ0eVNsb3QoYXJyYXlDb25zdHJ1Y3RvciwgdGhpcywgdm0ucHJvcGVydHlO
YW1lcy0+c3BlY2llc1N5bWJvbCwgc3BlY2llc1Nsb3QpOwogICAgIHNjb3BlLmFzc2VydE5vRXhj
ZXB0aW9uKCk7CiAgICAgaWYgKHNwZWNpZXNTbG90LnNsb3RCYXNlKCkgIT0gYXJyYXlDb25zdHJ1
Y3RvcgogICAgICAgICB8fCAhc3BlY2llc1Nsb3QuaXNDYWNoZWFibGVHZXR0ZXIoKQpAQCAtMjAx
Niw2ICsxOTk3LDQ2IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnRyeUluc3RhbGxBcnJheVNwZWNp
ZXNXYXRjaHBvaW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAgbV9hcnJheUNvbnN0
cnVjdG9yU3BlY2llc1dhdGNocG9pbnQtPmluc3RhbGwodm0pOwogfQogCit2b2lkIEpTR2xvYmFs
T2JqZWN0OjppbnN0YWxsTnVtYmVyUHJvdG90eXBlV2F0Y2hwb2ludChOdW1iZXJQcm90b3R5cGUq
IG51bWJlclByb3RvdHlwZSkKK3sKKyAgICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAgIGlmICht
X251bWJlclRvU3RyaW5nV2F0Y2hwb2ludFNldC5pc1N0aWxsVmFsaWQoKSkgeworICAgICAgICBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2lu
dCh0aGlzLCBudW1iZXJQcm90b3R5cGUsIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nKTsKKyAg
ICAgICAgbV9udW1iZXJQcm90b3R5cGVUb1N0cmluZ1dhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9i
amVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+
Pih0aGlzLCBjb25kaXRpb24sIG1fbnVtYmVyVG9TdHJpbmdXYXRjaHBvaW50U2V0KTsKKyAgICAg
ICAgbV9udW1iZXJQcm90b3R5cGVUb1N0cmluZ1dhdGNocG9pbnQtPmluc3RhbGwodm0pOworICAg
IH0KK30KKwordm9pZCBKU0dsb2JhbE9iamVjdDo6aW5zdGFsbE1hcFByb3RvdHlwZVdhdGNocG9p
bnQoTWFwUHJvdG90eXBlKiBtYXBQcm90b3R5cGUpCit7CisgICAgVk0mIHZtID0gdGhpcy0+dm0o
KTsKKyAgICBpZiAobV9tYXBJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldC5pc1N0aWxsVmFs
aWQoKSkgeworICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1
cEFkYXB0aXZlV2F0Y2hwb2ludCh0aGlzLCBtYXBQcm90b3R5cGUsIHZtLnByb3BlcnR5TmFtZXMt
Pml0ZXJhdG9yU3ltYm9sKTsKKyAgICAgICAgbV9tYXBQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldh
dGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBv
aW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fbWFwSXRlcmF0b3JQ
cm90b2NvbFdhdGNocG9pbnRTZXQpOworICAgICAgICBtX21hcFByb3RvdHlwZVN5bWJvbEl0ZXJh
dG9yV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CisgICAgfQorICAgIGlmIChtX21hcFNldFdhdGNo
cG9pbnRTZXQuaXNTdGlsbFZhbGlkKCkpIHsKKyAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRp
b24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQodGhpcywgbWFwUHJvdG90eXBl
LCB2bS5wcm9wZXJ0eU5hbWVzLT5zZXQpOworICAgICAgICBtX21hcFByb3RvdHlwZVNldFdhdGNo
cG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50
PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fbWFwU2V0V2F0Y2hwb2lu
dFNldCk7CisgICAgICAgIG1fbWFwUHJvdG90eXBlU2V0V2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7
CisgICAgfQorfQorCit2b2lkIEpTR2xvYmFsT2JqZWN0OjppbnN0YWxsU2V0UHJvdG90eXBlV2F0
Y2hwb2ludChTZXRQcm90b3R5cGUqIHNldFByb3RvdHlwZSkKK3sKKyAgICBWTSYgdm0gPSB0aGlz
LT52bSgpOworICAgIGlmIChtX3NldEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0LmlzU3Rp
bGxWYWxpZCgpKSB7CisgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9
IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KHRoaXMsIHNldFByb3RvdHlwZSwgdm0ucHJvcGVydHlO
YW1lcy0+aXRlcmF0b3JTeW1ib2wpOworICAgICAgICBtX3NldFByb3RvdHlwZVN5bWJvbEl0ZXJh
dG9yV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdh
dGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zZXRJdGVy
YXRvclByb3RvY29sV2F0Y2hwb2ludFNldCk7CisgICAgICAgIG1fc2V0UHJvdG90eXBlU3ltYm9s
SXRlcmF0b3JXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKKyAgICB9CisgICAgaWYgKG1fc2V0QWRk
V2F0Y2hwb2ludFNldC5pc1N0aWxsVmFsaWQoKSkgeworICAgICAgICBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludCh0aGlzLCBzZXRQcm90
b3R5cGUsIHZtLnByb3BlcnR5TmFtZXMtPmFkZCk7CisgICAgICAgIG1fc2V0UHJvdG90eXBlQWRk
V2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNo
cG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zZXRBZGRXYXRj
aHBvaW50U2V0KTsKKyAgICAgICAgbV9zZXRQcm90b3R5cGVBZGRXYXRjaHBvaW50LT5pbnN0YWxs
KHZtKTsKKyAgICB9Cit9CisKIHZvaWQgc2xvd1ZhbGlkYXRlQ2VsbChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogewogICAgIFJFTEVBU0VfQVNTRVJUKGdsb2JhbE9iamVjdC0+aXNHbG9i
YWxPYmplY3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaAppbmRleCBmZjFlMWIyMDExMzQ4Y2UwZTgwOTY1NTE5ZmZiYjEyZDNjZTBkMTliLi45
NzFiZDk2MzhiMTJiODQyNDk0OGUyYTkwYWQwNDE2Y2FiNDJkMzM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTEzMiw4ICsxMzIsNiBA
QCBjb25zdGV4cHIgYm9vbCB0eXBlRXhwb3NlZEJ5RGVmYXVsdCA9IHRydWU7CiAKICNkZWZpbmUg
Rk9SX0VBQ0hfU0lNUExFX0JVSUxUSU5fVFlQRV9XSVRIX0NPTlNUUlVDVE9SKG1hY3JvKSBcCiAg
ICAgbWFjcm8oU3RyaW5nLCBzdHJpbmcsIHN0cmluZ09iamVjdCwgU3RyaW5nT2JqZWN0LCBTdHJp
bmcsIG9iamVjdCwgdHlwZUV4cG9zZWRCeURlZmF1bHQpIFwKLSAgICBtYWNybyhNYXAsIG1hcCwg
bWFwLCBKU01hcCwgTWFwLCBvYmplY3QsIHR5cGVFeHBvc2VkQnlEZWZhdWx0KSBcCi0gICAgbWFj
cm8oU2V0LCBzZXQsIHNldCwgSlNTZXQsIFNldCwgb2JqZWN0LCB0eXBlRXhwb3NlZEJ5RGVmYXVs
dCkgXAogICAgIG1hY3JvKEpTUHJvbWlzZSwgcHJvbWlzZSwgcHJvbWlzZSwgSlNQcm9taXNlLCBQ
cm9taXNlLCBvYmplY3QsIHR5cGVFeHBvc2VkQnlEZWZhdWx0KSBcCiAgICAgbWFjcm8oQmlnSW50
LCBiaWdJbnQsIGJpZ0ludE9iamVjdCwgQmlnSW50T2JqZWN0LCBCaWdJbnQsIG9iamVjdCwgT3B0
aW9uczo6dXNlQmlnSW50KCkpIFwKICAgICBtYWNybyhXZWFrT2JqZWN0UmVmLCB3ZWFrT2JqZWN0
UmVmLCB3ZWFrT2JqZWN0UmVmLCBKU1dlYWtPYmplY3RSZWYsIFdlYWtSZWYsIG9iamVjdCwgT3B0
aW9uczo6dXNlV2Vha1JlZnMoKSkgXApAQCAtMTQ5LDcgKzE0Nyw5IEBAIGNvbnN0ZXhwciBib29s
IHR5cGVFeHBvc2VkQnlEZWZhdWx0ID0gdHJ1ZTsKICAgICBtYWNybyhCb29sZWFuLCBib29sZWFu
LCBib29sZWFuT2JqZWN0LCBCb29sZWFuT2JqZWN0LCBCb29sZWFuLCBvYmplY3QsIHR5cGVFeHBv
c2VkQnlEZWZhdWx0KSBcCiAgICAgbWFjcm8oRGF0ZSwgZGF0ZSwgZGF0ZSwgRGF0ZUluc3RhbmNl
LCBEYXRlLCBvYmplY3QsIHR5cGVFeHBvc2VkQnlEZWZhdWx0KSBcCiAgICAgbWFjcm8oRXJyb3Is
IGVycm9yLCBlcnJvciwgRXJyb3JJbnN0YW5jZSwgRXJyb3IsIG9iamVjdCwgdHlwZUV4cG9zZWRC
eURlZmF1bHQpIFwKKyAgICBtYWNybyhNYXAsIG1hcCwgbWFwLCBKU01hcCwgTWFwLCBvYmplY3Qs
IHR5cGVFeHBvc2VkQnlEZWZhdWx0KSBcCiAgICAgbWFjcm8oTnVtYmVyLCBudW1iZXIsIG51bWJl
ck9iamVjdCwgTnVtYmVyT2JqZWN0LCBOdW1iZXIsIG9iamVjdCwgdHlwZUV4cG9zZWRCeURlZmF1
bHQpIFwKKyAgICBtYWNybyhTZXQsIHNldCwgc2V0LCBKU1NldCwgU2V0LCBvYmplY3QsIHR5cGVF
eHBvc2VkQnlEZWZhdWx0KSBcCiAgICAgbWFjcm8oU3ltYm9sLCBzeW1ib2wsIHN5bWJvbE9iamVj
dCwgU3ltYm9sT2JqZWN0LCBTeW1ib2wsIG9iamVjdCwgdHlwZUV4cG9zZWRCeURlZmF1bHQpIFwK
ICAgICBERUZJTkVfU1RBTkRBUkRfQlVJTFRJTihtYWNybywgV2Vha01hcCwgd2Vha01hcCkgXAog
ICAgIERFRklORV9TVEFOREFSRF9CVUlMVElOKG1hY3JvLCBXZWFrU2V0LCB3ZWFrU2V0KSBcCkBA
IC0zMDIsOCArMzAyLDggQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50
ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1
bmN0aW9uPiBtX2V2YWxGdW5jdGlvbjsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3Qs
IEpTRnVuY3Rpb24+IG1faXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0
eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9wcm9taXNlUmVzb2x2ZUZ1bmN0aW9uOwor
ICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9udW1iZXJQcm90
b1RvU3RyaW5nRnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fb2JqZWN0
UHJvdG9WYWx1ZU9mRnVuY3Rpb247Ci0gICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fbnVt
YmVyUHJvdG9Ub1N0cmluZ0Z1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBt
X2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0
eTxKU0dsb2JhbE9iamVjdCwgR2V0dGVyU2V0dGVyPiBtX3Rocm93VHlwZUVycm9yR2V0dGVyU2V0
dGVyOwogICAgIFdyaXRlQmFycmllcjxKU09iamVjdD4gbV9yZWdFeHBQcm90b1N5bWJvbFJlcGxh
Y2U7CkBAIC02MTUsNyArNjE1LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNT
ZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgSlNGdW5jdGlvbiogcmVqZWN0UHJvbWlzZUZ1
bmN0aW9uKCkgY29uc3Q7CiAgICAgSlNGdW5jdGlvbiogcHJvbWlzZVByb3RvVGhlbkZ1bmN0aW9u
KCkgY29uc3Q7CiAgICAgSlNGdW5jdGlvbiogb2JqZWN0UHJvdG9WYWx1ZU9mRnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX29iamVjdFByb3RvVmFsdWVPZkZ1bmN0aW9uLmdldCgpOyB9Ci0gICAg
SlNGdW5jdGlvbiogbnVtYmVyUHJvdG9Ub1N0cmluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9udW1iZXJQcm90b1RvU3RyaW5nRnVuY3Rpb24uZ2V0KCk7IH0KKyAgICBKU0Z1bmN0aW9uKiBu
dW1iZXJQcm90b1RvU3RyaW5nRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX251bWJlclByb3Rv
VG9TdHJpbmdGdW5jdGlvbi5nZXQodGhpcyk7IH0KICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvblBy
b3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25Q
cm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24uZ2V0KCk7IH0KICAgICBKU0Z1bmN0aW9uKiBy
ZWdFeHBQcm90b0V4ZWNGdW5jdGlvbigpIGNvbnN0OwogICAgIEpTT2JqZWN0KiByZWdFeHBQcm90
b1N5bWJvbFJlcGxhY2VGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwUHJvdG9TeW1i
b2xSZXBsYWNlLmdldCgpOyB9CkBAIC02NDQsOSArNjQ0LDkgQEAgY2xhc3MgSlNHbG9iYWxPYmpl
Y3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUqIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKCkgY29uc3QgeyByZXR1
cm4gbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKTsgfQogICAgIEdlbmVyYXRvclBy
b3RvdHlwZSogZ2VuZXJhdG9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JQ
cm90b3R5cGUuZ2V0KCk7IH0KICAgICBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKiBhc3luY0Z1bmN0
aW9uUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9hc3luY0Z1bmN0aW9uUHJvdG90eXBlLmdl
dCgpOyB9Ci0gICAgTWFwUHJvdG90eXBlKiBtYXBQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBt
X21hcFByb3RvdHlwZS5nZXQoKTsgfQorICAgIEpTT2JqZWN0KiBtYXBQcm90b3R5cGUoKSBjb25z
dCB7IHJldHVybiBtX21hcFN0cnVjdHVyZS5wcm90b3R5cGUodGhpcyk7IH0KICAgICAvLyBXb3Jr
YXJvdW5kIGZvciB0aGUgbmFtZSBjb25mbGljdCBiZXR3ZWVuIEpTQ2VsbDo6c2V0UHJvdG90eXBl
LgotICAgIFNldFByb3RvdHlwZSoganNTZXRQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3Nl
dFByb3RvdHlwZS5nZXQoKTsgfQorICAgIEpTT2JqZWN0KiBqc1NldFByb3RvdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2V0U3RydWN0dXJlLnByb3RvdHlwZSh0aGlzKTsgfQogICAgIEpTUHJvbWlz
ZVByb3RvdHlwZSogcHJvbWlzZVByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZVBy
b3RvdHlwZS5nZXQoKTsgfQogICAgIEFzeW5jR2VuZXJhdG9yUHJvdG90eXBlKiBhc3luY0dlbmVy
YXRvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXN5bmNHZW5lcmF0b3JQcm90b3R5cGUu
Z2V0KCk7IH0KICAgICBBc3luY0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBhc3luY0dlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9hc3luY0dlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlLmdldCgpOyB9CkBAIC03NDUsNyArNzQ1LDYgQEAgY2xhc3MgSlNHbG9i
YWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgU3RydWN0
dXJlKiBuYXRpdmVTdGRGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZl
U3RkRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgUHJvcGVydHlPZmZzZXQgZnVu
Y3Rpb25OYW1lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbk5hbWVPZmZzZXQ7IH0K
ICAgICBTdHJ1Y3R1cmUqIG51bWJlck9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bnVtYmVyT2JqZWN0U3RydWN0dXJlLmdldCh0aGlzKTsgfQotICAgIFN0cnVjdHVyZSogbWFwU3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tYXBTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1
Y3R1cmUqIHJlZ0V4cFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwU3RydWN0dXJl
LmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBnZW5lcmF0b3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX2dlbmVyYXRvclN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogYXN5bmNH
ZW5lcmF0b3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2FzeW5jR2VuZXJhdG9yU3RydWN0
dXJlLmdldCgpOyB9CkBAIC0xMDEyLDcgKzEwMTEsMTAgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Qg
OiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgdm9pZCBzZXRXcmFwcGVy
TWFwKHN0ZDo6dW5pcXVlX3B0cjxXcmFwcGVyTWFwPiYmKTsKICNlbmRpZgogCi0gICAgdm9pZCB0
cnlJbnN0YWxsQXJyYXlTcGVjaWVzV2F0Y2hwb2ludChKU0dsb2JhbE9iamVjdCopOworICAgIHZv
aWQgdHJ5SW5zdGFsbEFycmF5U3BlY2llc1dhdGNocG9pbnQoKTsKKyAgICB2b2lkIGluc3RhbGxO
dW1iZXJQcm90b3R5cGVXYXRjaHBvaW50KE51bWJlclByb3RvdHlwZSopOworICAgIHZvaWQgaW5z
dGFsbE1hcFByb3RvdHlwZVdhdGNocG9pbnQoTWFwUHJvdG90eXBlKik7CisgICAgdm9pZCBpbnN0
YWxsU2V0UHJvdG90eXBlV2F0Y2hwb2ludChTZXRQcm90b3R5cGUqKTsKIAogcHJvdGVjdGVkOgog
ICAgIHN0cnVjdCBHbG9iYWxQcm9wZXJ0eUluZm8gewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKaW5kZXggYTU3Njg4OTNkN2Q2MDA2OTgxYzkyMGUz
ODhhZGQwMTY5MWU1MGQ2Yy4uMWI1OWQ5ODhhMGFhOTg1ZDA5ZjY5NWE4NzQ4MTM2ZjZhNDVhYmE0
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3Bw
CkBAIC03Niw2ICs3Niw4IEBAIHZvaWQgTWFwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc1N0cmlu
Zyh2bSwgIk1hcCIpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpOwogCiAgICAgSlNDX05BVElWRV9HRVRURVJfV0lUSE9VVF9UUkFOU0lU
SU9OKHZtLnByb3BlcnR5TmFtZXMtPnNpemUsIG1hcFByb3RvRnVuY1NpemUsIFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nvcik7CisKKyAgICBn
bG9iYWxPYmplY3QtPmluc3RhbGxNYXBQcm90b3R5cGVXYXRjaHBvaW50KHRoaXMpOwogfQogCiBB
TFdBWVNfSU5MSU5FIHN0YXRpYyBKU01hcCogZ2V0TWFwKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgdGhpc1ZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKaW5kZXggNmYyYjVmZjYyOGFiZTA4ZGJjYTRiN2Ni
NjIyZTI3NDY0ZmFjNThhZC4uOWFhM2RiMjQ2YjgzYTlhY2FhNjEzODE4NGI4MzIxNTE3YTVjZmUx
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5
cGUuY3BwCkBAIC00NCw3ICs0NCw2IEBAIHR5cGVkZWYgV1RGOjpkb3VibGVfY29udmVyc2lvbjo6
U3RyaW5nQnVpbGRlciBEb3VibGVDb252ZXJzaW9uU3RyaW5nQnVpbGRlcjsKIAogbmFtZXNwYWNl
IEpTQyB7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3Rv
RnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9GaXhlZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Owogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9F
eHBvbmVudGlhbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwpAQCAtNzksOSArNzgsOSBA
QCB2b2lkIE51bWJlclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAg
ICBzZXRJbnRlcm5hbFZhbHVlKHZtLCBqc051bWJlcigwKSk7Ci0KLSAgICBKU0NfTkFUSVZFX0lO
VFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+dG9T
dHJpbmcsIG51bWJlclByb3RvRnVuY1RvU3RyaW5nLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSwgTnVtYmVyUHJvdG90eXBlVG9TdHJpbmdJbnRy
aW5zaWMpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT50b1N0cmluZywgZ2xvYmFsT2JqZWN0LT5udW1iZXJQcm90b1RvU3RyaW5nRnVuY3Rpb24o
KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwog
ICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisgICAgZ2xvYmFsT2JqZWN0LT5pbnN0
YWxsTnVtYmVyUHJvdG90eXBlV2F0Y2hwb2ludCh0aGlzKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlw
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmgKaW5k
ZXggZjU0NGFkYzliYjJiNmQ2NmFmZDc4MmUxNDIxMDk5YThlZmZiNGYwMS4uMDc4YTgyZWQ3ZTAy
Y2ExNWViYWZkZjJmNzk0OTM5MGYxYTcwYWYwNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmgKQEAgLTUxLDYgKzUxLDcgQEAgY2xhc3MgTnVt
YmVyUHJvdG90eXBlIGZpbmFsIDogcHVibGljIE51bWJlck9iamVjdCB7CiB9OwogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1ZhbHVlT2YoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJv
dG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIEpTU3RyaW5nKiBp
bnQzMlRvU3RyaW5nKFZNJiwgaW50MzJfdCB2YWx1ZSwgaW50MzJfdCByYWRpeCk7CiBKU1N0cmlu
ZyogaW50NTJUb1N0cmluZyhWTSYsIGludDY0X3QgdmFsdWUsIGludDMyX3QgcmFkaXgpOwogSlNT
dHJpbmcqIG51bWJlclRvU3RyaW5nKFZNJiwgZG91YmxlIHZhbHVlLCBpbnQzMl90IHJhZGl4KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCmluZGV4
IDUzMGFiMGE5ZjkyZjg4NDAyZDUzYzkxOGM3MGMxNWEyZTU3ZGQ1YjkuLmUxOTc0MzNmMzBjMTlk
NzI0ZGM4Mzg4ZDA5ZjQ1MWRkMzAyZmU4NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcApAQCAtNzQsNiArNzQsOCBAQCB2b2lkIFNldFByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50
b1N0cmluZ1RhZ1N5bWJvbCwganNTdHJpbmcodm0sICJTZXQiKSwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKIAogICAgIEpTQ19OQVRJ
VkVfR0VUVEVSX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5zaXplLCBzZXRQ
cm90b0Z1bmNTaXplLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6QWNjZXNzb3IpOworCisgICAgZ2xvYmFsT2JqZWN0LT5pbnN0YWxsU2V0UHJvdG90eXBl
V2F0Y2hwb2ludCh0aGlzKTsKIH0KIAogQUxXQVlTX0lOTElORSBzdGF0aWMgSlNTZXQqIGdldFNl
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRoaXNWYWx1ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383098</attachid>
            <date>2019-11-07 17:53:06 -0800</date>
            <delta_ts>2019-11-07 17:56:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203795-20191107175306.patch</filename>
            <type>text/plain</type>
            <size>30228</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyMjI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
NjcwZDY2YzI4ODMxZDBmZWIxNDZjZjFjODllNThhZjViNzMyMjQzLi43MzBjOTY4ZTc0NDQ1Y2Vj
NTQ4YzZmZTdkYTY3MmEzOWE3YzI0MDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAxOS0xMS0wNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVzZSBMaW5rVGltZUNvbnN0YW50cyBhbmQgbWFrZSBzb21lIHBy
b3BlcnRpZXMgbGF6eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjAzNzk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBtYWtlcyBNYXAgYW5kIFNldCBsYXppbHkgaW5pdGlhbGl6ZWQgaW4g
SlNHbG9iYWxPYmplY3QgYnkgbGV2ZXJhZ2luZyBsaW5rLXRpbWUtY29uc3RhbnQuIEBTZXQgd2Fz
IGFjY2Vzc2VkIGZyb20KKyAgICAgICAgYnVpbHRpbi1KUy4gU28gd2UgY2Fubm90IG1ha2UgaXQg
bGF6aWx5LWFsbG9jYXRlZC4gQnV0IG5vdyB3ZSBoYXZlIGxpbmstdGltZS1jb25zdGFudCBtZWNo
YW5pc20gdGhhdCBtYWtlcyBzdWNoIGFjY2Vzc2VzCisgICAgICAgIGxhemlseS1pbml0aWFsaXpl
ZC4gV2UgdXNlIHRoaXMgdG8gbWFrZSBTZXQgbGF6aWx5LWFsbG9jYXRlZC4KKworICAgICAgICBB
bmQsIGluc3RlYWQgb2YgSlNHbG9iYWxPYmplY3QncyBsYXN0IHNlcXVlbmNlIG9mIGluaXRpYWxp
emF0aW9uLCB3ZSBpbml0aWFsaXplIHdhdGNocG9pbnQgaW4gTWFwUHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbgorICAgICAgICBhbmQgU2V0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbi4gVGhpcyBh
bGxvd3MgdXMgdG8gbWFrZSBNYXAgYW5kIFNldCBsYXppbHktYWxsb2NhdGVkLiBXZSBhbHNvIHJl
ZmFjdG9yIE51bWJlclByb3RvdHlwZSB0bworICAgICAgICBhbGlnbiB0byB0aGlzIG1vZGVsLgor
CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnNw
ZWNpZXNXYXRjaHBvaW50SXNWYWxpZCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHA6CisgICAgICAgIChKU0M6OnNldHVwQWRhcHRpdmVXYXRjaHBvaW50KToKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0
YWxsQXJyYXlTcGVjaWVzV2F0Y2hwb2ludCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
OjppbnN0YWxsTnVtYmVyUHJvdG90eXBlV2F0Y2hwb2ludCk6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0OjppbnN0YWxsTWFwUHJvdG90eXBlV2F0Y2hwb2ludCk6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0OjppbnN0YWxsU2V0UHJvdG90eXBlV2F0Y2hwb2ludCk6CisgICAgICAg
ICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6bnVtYmVyUHJvdG9Ub1N0cmluZ0Z1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6Om1hcFByb3RvdHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
T2JqZWN0Ojpqc1NldFByb3RvdHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjpudW1iZXJPYmplY3RTdHJ1Y3R1cmUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6bWFwU3RydWN0dXJlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1l
L01hcFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Ok1hcFByb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6TnVtYmVyUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGlt
ZS9OdW1iZXJQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL1NldFByb3RvdHlwZS5jcHA6
CisgICAgICAgIChKU0M6OlNldFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorCiAyMDE5LTEx
LTA3ICBUYWRldSBaYWdhbGxvICA8dHphZ2FsbG9AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJB
c3NlbWJseV0gSW5zcGVjdG9yJ3MgRGVidWdnZXJDYWxsRnJhbWUgc2hvdWxkIGJlIGF3YXJlIG9m
IFdhc20gZnJhbWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVBy
b3RvdHlwZS5jcHAKaW5kZXggMmU3ZTZhM2E1MzY4MzVkMjI5YzY2ZWFkYTI5ZTYwZjFjNTE1ODg1
Mi4uY2I3NzNkNDM0Y2ZiNTQ5MzA4ZGE5ZWZjMzQwZmU3ODQzMmFkMzgzMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAtMTk5LDcg
KzE5OSw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBzcGVjaWVzV2F0Y2hwb2ludElzVmFsaWQoVk0m
IHZtLCBKU09iamVjdCogdGhpc09iamVjdCkKIAogICAgIGlmIChnbG9iYWxPYmplY3QtPmFycmF5
U3BlY2llc1dhdGNocG9pbnRTZXQoKS5zdGF0ZU9uSlNUaHJlYWQoKSA9PSBDbGVhcldhdGNocG9p
bnQpIHsKICAgICAgICAgZGF0YUxvZ0xuSWYoQXJyYXlQcm90b3R5cGVJbnRlcm5hbDo6dmVyYm9z
ZSwgIkluaXRpYWxpemluZyBBcnJheSBzcGVjaWVzIHdhdGNocG9pbnRzIGZvciBBcnJheS5wcm90
b3R5cGU6ICIsIHBvaW50ZXJEdW1wKGFycmF5UHJvdG90eXBlKSwgIiB3aXRoIHN0cnVjdHVyZTog
IiwgcG9pbnRlckR1bXAoYXJyYXlQcm90b3R5cGUtPnN0cnVjdHVyZSh2bSkpLCAiXG5hbmQgQXJy
YXk6ICIsIHBvaW50ZXJEdW1wKGdsb2JhbE9iamVjdC0+YXJyYXlDb25zdHJ1Y3RvcigpKSwgIiB3
aXRoIHN0cnVjdHVyZTogIiwgcG9pbnRlckR1bXAoZ2xvYmFsT2JqZWN0LT5hcnJheUNvbnN0cnVj
dG9yKCktPnN0cnVjdHVyZSh2bSkpKTsKLSAgICAgICAgZ2xvYmFsT2JqZWN0LT50cnlJbnN0YWxs
QXJyYXlTcGVjaWVzV2F0Y2hwb2ludChnbG9iYWxPYmplY3QpOworICAgICAgICBnbG9iYWxPYmpl
Y3QtPnRyeUluc3RhbGxBcnJheVNwZWNpZXNXYXRjaHBvaW50KCk7CiAgICAgICAgIEFTU0VSVChn
bG9iYWxPYmplY3QtPmFycmF5U3BlY2llc1dhdGNocG9pbnRTZXQoKS5zdGF0ZU9uSlNUaHJlYWQo
KSAhPSBDbGVhcldhdGNocG9pbnQpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGE5ZGQ5MTExMjYwYmIyZDJkMDJj
NGUxYTEyMDBlNTg0Yjc2NTEwOTUuLjlhZWMwODhmOTZhMzI4MzNkNWE0NWRjNDBkNTg2ODg1ODAx
ODljNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKQEAgLTM4OCw3ICszODgsOSBAQCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJs
ZSBKU0dsb2JhbE9iamVjdDo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsKICAgRGF0ZSAg
ICAgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0OjptX2RhdGVTdHJ1Y3R1cmUgICAgICAgICAg
ICAgIERvbnRFbnVtfENsYXNzU3RydWN0dXJlCiAgIEVycm9yICAgICAgICAgICAgICAgICBKU0ds
b2JhbE9iamVjdDo6bV9lcnJvclN0cnVjdHVyZSAgICAgICAgICAgICBEb250RW51bXxDbGFzc1N0
cnVjdHVyZQogICBCb29sZWFuICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3Q6Om1fYm9vbGVh
bk9iamVjdFN0cnVjdHVyZSAgICAgRG9udEVudW18Q2xhc3NTdHJ1Y3R1cmUKKyAgTWFwICAgICAg
ICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0OjptX21hcFN0cnVjdHVyZSAgICAgICAgICAgICAg
IERvbnRFbnVtfENsYXNzU3RydWN0dXJlCiAgIE51bWJlciAgICAgICAgICAgICAgICBKU0dsb2Jh
bE9iamVjdDo6bV9udW1iZXJPYmplY3RTdHJ1Y3R1cmUgICAgICBEb250RW51bXxDbGFzc1N0cnVj
dHVyZQorICBTZXQgICAgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3Q6Om1fc2V0U3RydWN0
dXJlICAgICAgICAgICAgICAgRG9udEVudW18Q2xhc3NTdHJ1Y3R1cmUKICAgU3ltYm9sICAgICAg
ICAgICAgICAgIEpTR2xvYmFsT2JqZWN0OjptX3N5bWJvbE9iamVjdFN0cnVjdHVyZSAgICAgIERv
bnRFbnVtfENsYXNzU3RydWN0dXJlCiAgIFdlYWtNYXAgICAgICAgICAgICAgICBKU0dsb2JhbE9i
amVjdDo6bV93ZWFrTWFwU3RydWN0dXJlICAgICAgICAgICBEb250RW51bXxDbGFzc1N0cnVjdHVy
ZQogICBXZWFrU2V0ICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3Q6Om1fd2Vha1NldFN0cnVj
dHVyZSAgICAgICAgICAgRG9udEVudW18Q2xhc3NTdHJ1Y3R1cmUKQEAgLTQ2MCw2ICs0NjIsMjkg
QEAgc3RhdGljIEdldHRlclNldHRlciogZ2V0R2V0dGVyQnlJZChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU09iamVjdCogYmFzZSwKICAgICByZXR1cm4ganNDYXN0PEdldHRlclNldHRl
cio+KHNsb3QuZ2V0UHVyZVJlc3VsdCgpKTsKIH0KIAorc3RhdGljIE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uIHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTT2JqZWN0KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyAgICAvLyBQ
ZXJmb3JtaW5nIHRoZXNlIGdldHMgc2hvdWxkIG5vdCB0aHJvdy4KKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBjYXRjaFNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09Q
RSh2bSk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZSwgUHJvcGVydHlTbG90OjpJbnRlcm5h
bE1ldGhvZFR5cGU6OkdldCk7CisgICAgYm9vbCByZXN1bHQgPSBiYXNlLT5nZXRPd25Qcm9wZXJ0
eVNsb3QoYmFzZSwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCk7CisgICAgQVNTRVJUX1VOVVNF
RChyZXN1bHQsIHJlc3VsdCk7CisgICAgY2F0Y2hTY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpKTsKKyAgICBKU1ZhbHVl
IGZ1bmN0aW9uVmFsdWUgPSBzbG90LmdldFZhbHVlKGdsb2JhbE9iamVjdCwgaWRlbnQpOworICAg
IGNhdGNoU2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKKyAgICBBU1NFUlQoanNEeW5hbWljQ2Fz
dDxKU0Z1bmN0aW9uKj4odm0sIGZ1bmN0aW9uVmFsdWUpKTsKKworICAgIE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uIGNvbmRpdGlvbiA9IGdlbmVyYXRlQ29uZGl0aW9uRm9yU2VsZkVxdWl2YWxlbmNl
KHZtLCBudWxscHRyLCBiYXNlLCBpZGVudC5pbXBsKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKGNv
bmRpdGlvbi5yZXF1aXJlZFZhbHVlKCkgPT0gZnVuY3Rpb25WYWx1ZSk7CisKKyAgICBib29sIGlz
V2F0Y2hhYmxlID0gY29uZGl0aW9uLmlzV2F0Y2hhYmxlKFByb3BlcnR5Q29uZGl0aW9uOjpFbnN1
cmVXYXRjaGFiaWxpdHkpOworICAgIFJFTEVBU0VfQVNTRVJUKGlzV2F0Y2hhYmxlKTsgLy8gV2Ug
YWxsb3cgdGhpcyB0byBpbnN0YWxsIHRoZSBuZWNlc3Nhcnkgd2F0Y2hwb2ludHMuCisKKyAgICBy
ZXR1cm4gY29uZGl0aW9uOworfQorCiB0ZW1wbGF0ZTxFcnJvclR5cGUgZXJyb3JUeXBlPgogdm9p
ZCBKU0dsb2JhbE9iamVjdDo6aW5pdGlhbGl6ZUVycm9yQ29uc3RydWN0b3IoTGF6eUNsYXNzU3Ry
dWN0dXJlOjpJbml0aWFsaXplciYgaW5pdCkKIHsKQEAgLTU0Myw2ICs1NjgsMTEgQEAgdm9pZCBK
U0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0
aW9uOjpjcmVhdGUoaW5pdC52bSwgcHJvbWlzZUNvbnN0cnVjdG9yUmVzb2x2ZUNvZGVHZW5lcmF0
b3IoaW5pdC52bSksIGluaXQub3duZXIpKTsKICAgICAgICAgfSk7CiAKKyAgICBtX251bWJlclBy
b3RvVG9TdHJpbmdGdW5jdGlvbi5pbml0TGF0ZXIoCisgICAgICAgIFtdIChjb25zdCBJbml0aWFs
aXplcjxKU0Z1bmN0aW9uPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlv
bjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAx
LCBpbml0LnZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nLnN0cmluZygpLCBudW1iZXJQcm90b0Z1
bmNUb1N0cmluZywgTnVtYmVyUHJvdG90eXBlVG9TdHJpbmdJbnRyaW5zaWMpKTsKKyAgICAgICAg
fSk7CisKICAgICBtX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uLnNldCh2
bSwgdGhpcywgaGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbik7CiAgICAgbV90aHJvd1R5cGVFcnJv
ckdldHRlclNldHRlci5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxH
ZXR0ZXJTZXR0ZXI+JiBpbml0KSB7CkBAIC05NDYsNyArOTc2LDYgQEAgY2FwaXRhbE5hbWUgIyMg
Q29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2Fw
aXRhbE5hbWUKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihM
aW5rVGltZUNvbnN0YW50OjpyZWdFeHBCdWlsdGluRXhlYyldLnNldCh2bSwgdGhpcywganNDYXN0
PEpTRnVuY3Rpb24qPihtX3JlZ0V4cFByb3RvdHlwZS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5leGVjKSkpOwogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cFByb3RvdHlwZVN5bWJvbFJlcGxhY2UpXS5z
ZXQodm0sIHRoaXMsIG1fcmVnRXhwUHJvdG90eXBlLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPnJlcGxhY2VTeW1ib2wpLmFzQ2VsbCgpKTsKIAotICAgIG1fbGlua1RpbWVDb25zdGFu
dHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlNldCldLnNldCh2bSwg
dGhpcywgc2V0Q29uc3RydWN0b3IpOwogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmlzQXJyYXkpXS5zZXQodm0sIHRoaXMsIGFy
cmF5Q29uc3RydWN0b3ItPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXNBcnJheSku
YXNDZWxsKCkpOwogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KExpbmtUaW1lQ29uc3RhbnQ6OmNhbGxGdW5jdGlvbildLnNldCh2bSwgdGhpcywgY2FsbEZ1bmN0
aW9uKTsKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5r
VGltZUNvbnN0YW50OjphcHBseUZ1bmN0aW9uKV0uc2V0KHZtLCB0aGlzLCBhcHBseUZ1bmN0aW9u
KTsKQEAgLTk3Nyw2ICsxMDA2LDkgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2Vy
TmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICBqc0Nh
c3Q8SlNPYmplY3QqPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OlNldEl0ZXJh
dG9yKSktPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBzZXRJdGVy
YXRvclByb3RvdHlwZSk7CiAKICAgICAvLyBNYXAgYW5kIFNldCBoZWxwZXJzLgorICAgIG1fbGlu
a1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlNl
dCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAg
ICAgICAgICAgaW5pdC5zZXQoanNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciktPnNl
dENvbnN0cnVjdG9yKCkpOworICAgICAgICB9KTsKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0
YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjptYXBCdWNrZXRIZWFkKV0uaW5p
dExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CiAgICAgICAgICAg
ICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2Jq
ZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBtYXBQcml2YXRlRnVuY01hcEJ1Y2tldEhl
YWQsIEpTTWFwQnVja2V0SGVhZEludHJpbnNpYykpOwogICAgICAgICB9KTsKQEAgLTExODYsOTcg
KzEyMTgsNDggQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25z
dHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKIAogI3VuZGVmIENSRUFURV9QUk9U
T1RZUEVfRk9SX0xBWllfVFlQRQogCi0gICAgYXV0byBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludCA9
IFsmXSAoSlNPYmplY3QqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KSAtPiBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvbiB7Ci0gICAgICAgIC8vIFBlcmZvcm1pbmcgdGhlc2UgZ2V0cyBzaG91
bGQgbm90IHRocm93LgotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlLCBQcm9wZXJ0eVNs
b3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKLSAgICAgICAgYm9vbCByZXN1bHQgPSBiYXNl
LT5nZXRPd25Qcm9wZXJ0eVNsb3QoYmFzZSwgdGhpcywgaWRlbnQsIHNsb3QpOwotICAgICAgICBB
U1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKLSAgICAgICAgY2F0Y2hTY29wZS5hc3NlcnRO
b0V4Y2VwdGlvbigpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChzbG90LmlzQ2FjaGVhYmxlVmFs
dWUoKSk7Ci0gICAgICAgIEpTVmFsdWUgZnVuY3Rpb25WYWx1ZSA9IHNsb3QuZ2V0VmFsdWUodGhp
cywgaWRlbnQpOwotICAgICAgICBjYXRjaFNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAg
ICAgIEFTU0VSVChqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgZnVuY3Rpb25WYWx1ZSkp
OwotCi0gICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IGdlbmVyYXRl
Q29uZGl0aW9uRm9yU2VsZkVxdWl2YWxlbmNlKHZtLCBudWxscHRyLCBiYXNlLCBpZGVudC5pbXBs
KCkpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChjb25kaXRpb24ucmVxdWlyZWRWYWx1ZSgpID09
IGZ1bmN0aW9uVmFsdWUpOwotCi0gICAgICAgIGJvb2wgaXNXYXRjaGFibGUgPSBjb25kaXRpb24u
aXNXYXRjaGFibGUoUHJvcGVydHlDb25kaXRpb246OkVuc3VyZVdhdGNoYWJpbGl0eSk7Ci0gICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGlzV2F0Y2hhYmxlKTsgLy8gV2UgYWxsb3cgdGhpcyB0byBpbnN0
YWxsIHRoZSBuZWNlc3Nhcnkgd2F0Y2hwb2ludHMuCi0KLSAgICAgICAgcmV0dXJuIGNvbmRpdGlv
bjsKLSAgICB9OwotCiAgICAgewotICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25k
aXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChhcnJheUl0ZXJhdG9yUHJvdG90eXBlLCB2
bS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKKyAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24g
Y29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQodGhpcywgYXJyYXlJdGVyYXRvclBy
b3RvdHlwZSwgdm0ucHJvcGVydHlOYW1lcy0+bmV4dCk7CiAgICAgICAgIG1fYXJyYXlJdGVyYXRv
clByb3RvdHlwZU5leHQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVX
YXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fYXJyYXlJ
dGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCk7CiAgICAgICAgIG1fYXJyYXlJdGVyYXRvclBy
b3RvdHlwZU5leHQtPmluc3RhbGwodm0pOwogICAgIH0KICAgICB7Ci0gICAgICAgIE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KHRoaXMt
PmFycmF5UHJvdG90eXBlKCksIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsKKyAg
ICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdh
dGNocG9pbnQodGhpcywgdGhpcy0+YXJyYXlQcm90b3R5cGUoKSwgdm0ucHJvcGVydHlOYW1lcy0+
aXRlcmF0b3JTeW1ib2wpOwogICAgICAgICBtX2FycmF5UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JX
YXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hw
b2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX2FycmF5SXRlcmF0
b3JQcm90b2NvbFdhdGNocG9pbnRTZXQpOwogICAgICAgICBtX2FycmF5UHJvdG90eXBlU3ltYm9s
SXRlcmF0b3JXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAgICAgewotICAgICAgICBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2lu
dCh0aGlzLT5hcnJheVByb3RvdHlwZSgpLCB2bS5wcm9wZXJ0eU5hbWVzLT5qb2luKTsKKyAgICAg
ICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNo
cG9pbnQodGhpcywgdGhpcy0+YXJyYXlQcm90b3R5cGUoKSwgdm0ucHJvcGVydHlOYW1lcy0+am9p
bik7CiAgICAgICAgIG1fYXJyYXlQcm90b3R5cGVKb2luV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8
T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNl
dD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9hcnJheUpvaW5XYXRjaHBvaW50U2V0KTsKICAgICAgICAg
bV9hcnJheVByb3RvdHlwZUpvaW5XYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAKICAg
ICB7Ci0gICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRh
cHRpdmVXYXRjaHBvaW50KG1hcEl0ZXJhdG9yUHJvdG90eXBlLCB2bS5wcm9wZXJ0eU5hbWVzLT5u
ZXh0KTsKKyAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBB
ZGFwdGl2ZVdhdGNocG9pbnQodGhpcywgbWFwSXRlcmF0b3JQcm90b3R5cGUsIHZtLnByb3BlcnR5
TmFtZXMtPm5leHQpOwogICAgICAgICBtX21hcEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9p
bnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElu
bGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fbWFwSXRlcmF0b3JQcm90b2Nv
bFdhdGNocG9pbnRTZXQpOwogICAgICAgICBtX21hcEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNo
cG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KICAgICB7Ci0gICAgICAgIE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1fbWFwUHJvdG90
eXBlLmdldCgpLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7Ci0gICAgICAgIG1f
bWFwUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQ
cm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhp
cywgY29uZGl0aW9uLCBtX21hcEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KTsKLSAgICAg
ICAgbV9tYXBQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQtPmluc3RhbGwodm0pOwot
ICAgIH0KLQotICAgIHsKLSAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9u
ID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQoc2V0SXRlcmF0b3JQcm90b3R5cGUsIHZtLnByb3Bl
cnR5TmFtZXMtPm5leHQpOworICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRp
b24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludCh0aGlzLCBzZXRJdGVyYXRvclByb3RvdHlwZSwg
dm0ucHJvcGVydHlOYW1lcy0+bmV4dCk7CiAgICAgICAgIG1fc2V0SXRlcmF0b3JQcm90b3R5cGVO
ZXh0V2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdh
dGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zZXRJdGVy
YXRvclByb3RvY29sV2F0Y2hwb2ludFNldCk7CiAgICAgICAgIG1fc2V0SXRlcmF0b3JQcm90b3R5
cGVOZXh0V2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogICAgIHsKLSAgICAgICAgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQo
bV9zZXRQcm90b3R5cGUuZ2V0KCksIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsK
LSAgICAgICAgbV9zZXRQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBtYWtlVW5p
cXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9p
bnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRT
ZXQpOwotICAgICAgICBtX3NldFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludC0+aW5z
dGFsbCh2bSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
biBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX3N0cmluZ0l0ZXJhdG9yUHJv
dG90eXBlLmdldCgpLCB2bS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKKyAgICAgICAgT2JqZWN0UHJv
cGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQodGhpcywg
bV9zdHJpbmdJdGVyYXRvclByb3RvdHlwZS5nZXQoKSwgdm0ucHJvcGVydHlOYW1lcy0+bmV4dCk7
CiAgICAgICAgIG1fc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9IG1ha2VV
bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hw
b2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hw
b2ludFNldCk7CiAgICAgICAgIG1fc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2lu
dC0+aW5zdGFsbCh2bSk7CiAgICAgfQogICAgIHsKLSAgICAgICAgT2JqZWN0UHJvcGVydHlDb25k
aXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobV9zdHJpbmdQcm90b3R5
cGUuZ2V0KCksIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsKKyAgICAgICAgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQo
dGhpcywgbV9zdHJpbmdQcm90b3R5cGUuZ2V0KCksIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9y
U3ltYm9sKTsKICAgICAgICAgbV9zdHJpbmdQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9p
bnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElu
bGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fc3RyaW5nSXRlcmF0b3JQcm90
b2NvbFdhdGNocG9pbnRTZXQpOwogICAgICAgICBtX3N0cmluZ1Byb3RvdHlwZVN5bWJvbEl0ZXJh
dG9yV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogCi0gICAgewotICAgICAgICBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludCht
X21hcFByb3RvdHlwZS5nZXQoKSwgdm0ucHJvcGVydHlOYW1lcy0+c2V0KTsKLSAgICAgICAgbV9t
YXBQcm90b3R5cGVTZXRXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5n
ZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9u
LCBtX21hcFNldFdhdGNocG9pbnRTZXQpOwotICAgICAgICBtX21hcFByb3RvdHlwZVNldFdhdGNo
cG9pbnQtPmluc3RhbGwodm0pOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgT2JqZWN0UHJvcGVy
dHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobV9zZXRQcm90
b3R5cGUuZ2V0KCksIHZtLnByb3BlcnR5TmFtZXMtPmFkZCk7Ci0gICAgICAgIG1fc2V0UHJvdG90
eXBlQWRkV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2
ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zZXRB
ZGRXYXRjaHBvaW50U2V0KTsKLSAgICAgICAgbV9zZXRQcm90b3R5cGVBZGRXYXRjaHBvaW50LT5p
bnN0YWxsKHZtKTsKLSAgICB9Ci0KICAgICAvLyBVbmZvcnR1bmF0ZWx5LCB0aGUgcHJvdG90eXBl
IG9iamVjdHMgb2YgdGhlIGJ1aWx0aW4gb2JqZWN0cyBjYW4gYmUgdG91Y2hlZCBmcm9tIGNvbmN1
cnJlbnQgY29tcGlsZXJzLiBTbyBlYWdlcmx5IGluaXRpYWxpemUgdGhlbSBvbmx5IGlmIHdlIHVz
ZSBKSVQuCiAgICAgaWYgKFZNOjpjYW5Vc2VKSVQoKSkgewogICAgICAgICB0aGlzLT5ib29sZWFu
UHJvdG90eXBlKCk7Ci0gICAgICAgIGF1dG8qIG51bWJlclByb3RvdHlwZSA9IHRoaXMtPm51bWJl
clByb3RvdHlwZSgpOworICAgICAgICB0aGlzLT5udW1iZXJQcm90b3R5cGUoKTsKICAgICAgICAg
dGhpcy0+c3ltYm9sUHJvdG90eXBlKCk7Ci0KLSAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRp
b24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobnVtYmVyUHJvdG90eXBlLCB2
bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZyk7Ci0gICAgICAgIG1fbnVtYmVyUHJvdG90eXBlVG9T
dHJpbmdXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZl
V2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX251bWJl
clRvU3RyaW5nV2F0Y2hwb2ludFNldCk7Ci0gICAgICAgIG1fbnVtYmVyUHJvdG90eXBlVG9TdHJp
bmdXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKLSAgICAgICAgbV9udW1iZXJQcm90b1RvU3RyaW5n
RnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBqc0Nhc3Q8SlNGdW5jdGlvbio+KG51bWJlclByb3RvdHlw
ZS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZykpKTsKICAgICB9CiAK
ICAgICBmaXh1cFByb3RvdHlwZUNoYWluV2l0aE9iamVjdFByb3RvdHlwZSh2bSk7CkBAIC0xNzcw
LDcgKzE3NTMsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdGhpc09iamVjdC0+bV9pdGVyYXRvclBy
b3RvY29sRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9wcm9taXNl
UmVzb2x2ZUZ1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNP
YmplY3QtPm1fb2JqZWN0UHJvdG9WYWx1ZU9mRnVuY3Rpb24pOwotICAgIHZpc2l0b3IuYXBwZW5k
KHRoaXNPYmplY3QtPm1fbnVtYmVyUHJvdG9Ub1N0cmluZ0Z1bmN0aW9uKTsKKyAgICB0aGlzT2Jq
ZWN0LT5tX251bWJlclByb3RvVG9TdHJpbmdGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKICAgICB2
aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJv
bEZ1bmN0aW9uKTsKICAgICB0aGlzT2JqZWN0LT5tX3Rocm93VHlwZUVycm9yR2V0dGVyU2V0dGVy
LnZpc2l0KHZpc2l0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcmVnRXhw
UHJvdG9TeW1ib2xSZXBsYWNlKTsKQEAgLTE5NDUsMTIgKzE5MjgsMTIgQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdDo6Y2xlYXJSYXJlRGF0YShKU0NlbGwqIGNlbGwpCiAgICAganNDYXN0PEpTR2xvYmFs
T2JqZWN0Kj4oY2VsbCktPm1fcmFyZURhdGEgPSBudWxscHRyOwogfQogCi12b2lkIEpTR2xvYmFs
T2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlTcGVjaWVzV2F0Y2hwb2ludChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQordm9pZCBKU0dsb2JhbE9iamVjdDo6dHJ5SW5zdGFsbEFycmF5U3BlY2ll
c1dhdGNocG9pbnQoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKCFtX2FycmF5UHJvdG90eXBlQ29u
c3RydWN0b3JXYXRjaHBvaW50KTsKICAgICBSRUxFQVNFX0FTU0VSVCghbV9hcnJheUNvbnN0cnVj
dG9yU3BlY2llc1dhdGNocG9pbnQpOwogCi0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCiAgICAgLy8gRmlyc3Qgd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0
aGUgQXJyYXkucHJvdG90eXBlLmNvbnN0cnVjdG9yIHByb3BlcnR5IHBvaW50cyB0byBBcnJheQpA
QCAtMTk3MCwxMSArMTk1MywxMSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJy
YXlTcGVjaWVzV2F0Y2hwb2ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogICAgIH07CiAK
ICAgICBQcm9wZXJ0eVNsb3QgY29uc3RydWN0b3JTbG90KGFycmF5UHJvdG90eXBlLCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKLSAgICBhcnJheVByb3RvdHlw
ZS0+Z2V0T3duUHJvcGVydHlTbG90KGFycmF5UHJvdG90eXBlLCBnbG9iYWxPYmplY3QsIHZtLnBy
b3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBjb25zdHJ1Y3RvclNsb3QpOworICAgIGFycmF5UHJv
dG90eXBlLT5nZXRPd25Qcm9wZXJ0eVNsb3QoYXJyYXlQcm90b3R5cGUsIHRoaXMsIHZtLnByb3Bl
cnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBjb25zdHJ1Y3RvclNsb3QpOwogICAgIHNjb3BlLmFzc2Vy
dE5vRXhjZXB0aW9uKCk7CiAgICAgaWYgKGNvbnN0cnVjdG9yU2xvdC5zbG90QmFzZSgpICE9IGFy
cmF5UHJvdG90eXBlCiAgICAgICAgIHx8ICFjb25zdHJ1Y3RvclNsb3QuaXNDYWNoZWFibGVWYWx1
ZSgpCi0gICAgICAgIHx8IGNvbnN0cnVjdG9yU2xvdC5nZXRWYWx1ZShnbG9iYWxPYmplY3QsIHZt
LnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yKSAhPSBhcnJheUNvbnN0cnVjdG9yKSB7CisgICAg
ICAgIHx8IGNvbnN0cnVjdG9yU2xvdC5nZXRWYWx1ZSh0aGlzLCB2bS5wcm9wZXJ0eU5hbWVzLT5j
b25zdHJ1Y3RvcikgIT0gYXJyYXlDb25zdHJ1Y3RvcikgewogICAgICAgICBpbnZhbGlkYXRlV2F0
Y2hwb2ludCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTk4NCw3ICsxOTY3LDcgQEAg
dm9pZCBKU0dsb2JhbE9iamVjdDo6dHJ5SW5zdGFsbEFycmF5U3BlY2llc1dhdGNocG9pbnQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamUKICAgICAgICAgY29uc3RydWN0b3JTdHJ1Y3R1cmUgPSBj
b25zdHJ1Y3RvclN0cnVjdHVyZS0+ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUodm0sIGFycmF5
Q29uc3RydWN0b3IpOwogCiAgICAgUHJvcGVydHlTbG90IHNwZWNpZXNTbG90KGFycmF5Q29uc3Ry
dWN0b3IsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOwotICAg
IGFycmF5Q29uc3RydWN0b3ItPmdldE93blByb3BlcnR5U2xvdChhcnJheUNvbnN0cnVjdG9yLCBn
bG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnNwZWNpZXNTeW1ib2wsIHNwZWNpZXNTbG90
KTsKKyAgICBhcnJheUNvbnN0cnVjdG9yLT5nZXRPd25Qcm9wZXJ0eVNsb3QoYXJyYXlDb25zdHJ1
Y3RvciwgdGhpcywgdm0ucHJvcGVydHlOYW1lcy0+c3BlY2llc1N5bWJvbCwgc3BlY2llc1Nsb3Qp
OwogICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAgaWYgKHNwZWNpZXNTbG90LnNs
b3RCYXNlKCkgIT0gYXJyYXlDb25zdHJ1Y3RvcgogICAgICAgICB8fCAhc3BlY2llc1Nsb3QuaXND
YWNoZWFibGVHZXR0ZXIoKQpAQCAtMjAxNiw2ICsxOTk5LDQ2IEBAIHZvaWQgSlNHbG9iYWxPYmpl
Y3Q6OnRyeUluc3RhbGxBcnJheVNwZWNpZXNXYXRjaHBvaW50KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplCiAgICAgbV9hcnJheUNvbnN0cnVjdG9yU3BlY2llc1dhdGNocG9pbnQtPmluc3RhbGwo
dm0pOwogfQogCit2b2lkIEpTR2xvYmFsT2JqZWN0OjppbnN0YWxsTnVtYmVyUHJvdG90eXBlV2F0
Y2hwb2ludChOdW1iZXJQcm90b3R5cGUqIG51bWJlclByb3RvdHlwZSkKK3sKKyAgICBWTSYgdm0g
PSB0aGlzLT52bSgpOworICAgIGlmIChtX251bWJlclRvU3RyaW5nV2F0Y2hwb2ludFNldC5pc1N0
aWxsVmFsaWQoKSkgeworICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24g
PSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludCh0aGlzLCBudW1iZXJQcm90b3R5cGUsIHZtLnByb3Bl
cnR5TmFtZXMtPnRvU3RyaW5nKTsKKyAgICAgICAgbV9udW1iZXJQcm90b3R5cGVUb1N0cmluZ1dh
dGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBv
aW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fbnVtYmVyVG9TdHJp
bmdXYXRjaHBvaW50U2V0KTsKKyAgICAgICAgbV9udW1iZXJQcm90b3R5cGVUb1N0cmluZ1dhdGNo
cG9pbnQtPmluc3RhbGwodm0pOworICAgIH0KK30KKwordm9pZCBKU0dsb2JhbE9iamVjdDo6aW5z
dGFsbE1hcFByb3RvdHlwZVdhdGNocG9pbnQoTWFwUHJvdG90eXBlKiBtYXBQcm90b3R5cGUpCit7
CisgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICBpZiAobV9tYXBJdGVyYXRvclByb3RvY29s
V2F0Y2hwb2ludFNldC5pc1N0aWxsVmFsaWQoKSkgeworICAgICAgICBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludCh0aGlzLCBtYXBQcm90
b3R5cGUsIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsKKyAgICAgICAgbV9tYXBQ
cm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3Bl
cnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBj
b25kaXRpb24sIG1fbWFwSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQpOworICAgICAgICBt
X21hcFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CisgICAg
fQorICAgIGlmIChtX21hcFNldFdhdGNocG9pbnRTZXQuaXNTdGlsbFZhbGlkKCkpIHsKKyAgICAg
ICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNo
cG9pbnQodGhpcywgbWFwUHJvdG90eXBlLCB2bS5wcm9wZXJ0eU5hbWVzLT5zZXQpOworICAgICAg
ICBtX21hcFByb3RvdHlwZVNldFdhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5
Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25k
aXRpb24sIG1fbWFwU2V0V2F0Y2hwb2ludFNldCk7CisgICAgICAgIG1fbWFwUHJvdG90eXBlU2V0
V2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CisgICAgfQorfQorCit2b2lkIEpTR2xvYmFsT2JqZWN0
OjppbnN0YWxsU2V0UHJvdG90eXBlV2F0Y2hwb2ludChTZXRQcm90b3R5cGUqIHNldFByb3RvdHlw
ZSkKK3sKKyAgICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAgIGlmIChtX3NldEl0ZXJhdG9yUHJv
dG9jb2xXYXRjaHBvaW50U2V0LmlzU3RpbGxWYWxpZCgpKSB7CisgICAgICAgIE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KHRoaXMsIHNl
dFByb3RvdHlwZSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpOworICAgICAgICBt
X3NldFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0
UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRo
aXMsIGNvbmRpdGlvbiwgbV9zZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCk7CisgICAg
ICAgIG1fc2V0UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsK
KyAgICB9CisgICAgaWYgKG1fc2V0QWRkV2F0Y2hwb2ludFNldC5pc1N0aWxsVmFsaWQoKSkgewor
ICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZl
V2F0Y2hwb2ludCh0aGlzLCBzZXRQcm90b3R5cGUsIHZtLnByb3BlcnR5TmFtZXMtPmFkZCk7Cisg
ICAgICAgIG1fc2V0UHJvdG90eXBlQWRkV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJv
cGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMs
IGNvbmRpdGlvbiwgbV9zZXRBZGRXYXRjaHBvaW50U2V0KTsKKyAgICAgICAgbV9zZXRQcm90b3R5
cGVBZGRXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKKyAgICB9Cit9CisKIHZvaWQgc2xvd1ZhbGlk
YXRlQ2VsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIFJFTEVBU0VfQVNT
RVJUKGdsb2JhbE9iamVjdC0+aXNHbG9iYWxPYmplY3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBmZjFlMWIyMDExMzQ4Y2UwZTgw
OTY1NTE5ZmZiYjEyZDNjZTBkMTliLi45NzFiZDk2MzhiMTJiODQyNDk0OGUyYTkwYWQwNDE2Y2Fi
NDJkMzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgKQEAgLTEzMiw4ICsxMzIsNiBAQCBjb25zdGV4cHIgYm9vbCB0eXBlRXhwb3NlZEJ5RGVm
YXVsdCA9IHRydWU7CiAKICNkZWZpbmUgRk9SX0VBQ0hfU0lNUExFX0JVSUxUSU5fVFlQRV9XSVRI
X0NPTlNUUlVDVE9SKG1hY3JvKSBcCiAgICAgbWFjcm8oU3RyaW5nLCBzdHJpbmcsIHN0cmluZ09i
amVjdCwgU3RyaW5nT2JqZWN0LCBTdHJpbmcsIG9iamVjdCwgdHlwZUV4cG9zZWRCeURlZmF1bHQp
IFwKLSAgICBtYWNybyhNYXAsIG1hcCwgbWFwLCBKU01hcCwgTWFwLCBvYmplY3QsIHR5cGVFeHBv
c2VkQnlEZWZhdWx0KSBcCi0gICAgbWFjcm8oU2V0LCBzZXQsIHNldCwgSlNTZXQsIFNldCwgb2Jq
ZWN0LCB0eXBlRXhwb3NlZEJ5RGVmYXVsdCkgXAogICAgIG1hY3JvKEpTUHJvbWlzZSwgcHJvbWlz
ZSwgcHJvbWlzZSwgSlNQcm9taXNlLCBQcm9taXNlLCBvYmplY3QsIHR5cGVFeHBvc2VkQnlEZWZh
dWx0KSBcCiAgICAgbWFjcm8oQmlnSW50LCBiaWdJbnQsIGJpZ0ludE9iamVjdCwgQmlnSW50T2Jq
ZWN0LCBCaWdJbnQsIG9iamVjdCwgT3B0aW9uczo6dXNlQmlnSW50KCkpIFwKICAgICBtYWNybyhX
ZWFrT2JqZWN0UmVmLCB3ZWFrT2JqZWN0UmVmLCB3ZWFrT2JqZWN0UmVmLCBKU1dlYWtPYmplY3RS
ZWYsIFdlYWtSZWYsIG9iamVjdCwgT3B0aW9uczo6dXNlV2Vha1JlZnMoKSkgXApAQCAtMTQ5LDcg
KzE0Nyw5IEBAIGNvbnN0ZXhwciBib29sIHR5cGVFeHBvc2VkQnlEZWZhdWx0ID0gdHJ1ZTsKICAg
ICBtYWNybyhCb29sZWFuLCBib29sZWFuLCBib29sZWFuT2JqZWN0LCBCb29sZWFuT2JqZWN0LCBC
b29sZWFuLCBvYmplY3QsIHR5cGVFeHBvc2VkQnlEZWZhdWx0KSBcCiAgICAgbWFjcm8oRGF0ZSwg
ZGF0ZSwgZGF0ZSwgRGF0ZUluc3RhbmNlLCBEYXRlLCBvYmplY3QsIHR5cGVFeHBvc2VkQnlEZWZh
dWx0KSBcCiAgICAgbWFjcm8oRXJyb3IsIGVycm9yLCBlcnJvciwgRXJyb3JJbnN0YW5jZSwgRXJy
b3IsIG9iamVjdCwgdHlwZUV4cG9zZWRCeURlZmF1bHQpIFwKKyAgICBtYWNybyhNYXAsIG1hcCwg
bWFwLCBKU01hcCwgTWFwLCBvYmplY3QsIHR5cGVFeHBvc2VkQnlEZWZhdWx0KSBcCiAgICAgbWFj
cm8oTnVtYmVyLCBudW1iZXIsIG51bWJlck9iamVjdCwgTnVtYmVyT2JqZWN0LCBOdW1iZXIsIG9i
amVjdCwgdHlwZUV4cG9zZWRCeURlZmF1bHQpIFwKKyAgICBtYWNybyhTZXQsIHNldCwgc2V0LCBK
U1NldCwgU2V0LCBvYmplY3QsIHR5cGVFeHBvc2VkQnlEZWZhdWx0KSBcCiAgICAgbWFjcm8oU3lt
Ym9sLCBzeW1ib2wsIHN5bWJvbE9iamVjdCwgU3ltYm9sT2JqZWN0LCBTeW1ib2wsIG9iamVjdCwg
dHlwZUV4cG9zZWRCeURlZmF1bHQpIFwKICAgICBERUZJTkVfU1RBTkRBUkRfQlVJTFRJTihtYWNy
bywgV2Vha01hcCwgd2Vha01hcCkgXAogICAgIERFRklORV9TVEFOREFSRF9CVUlMVElOKG1hY3Jv
LCBXZWFrU2V0LCB3ZWFrU2V0KSBcCkBAIC0zMDIsOCArMzAyLDggQEAgY2xhc3MgSlNHbG9iYWxP
YmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgTGF6eVByb3Bl
cnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2V2YWxGdW5jdGlvbjsKICAgICBMYXp5
UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1faXRlcmF0b3JQcm90b2NvbEZ1
bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9w
cm9taXNlUmVzb2x2ZUZ1bmN0aW9uOworICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwg
SlNGdW5jdGlvbj4gbV9udW1iZXJQcm90b1RvU3RyaW5nRnVuY3Rpb247CiAgICAgV3JpdGVCYXJy
aWVyPEpTRnVuY3Rpb24+IG1fb2JqZWN0UHJvdG9WYWx1ZU9mRnVuY3Rpb247Ci0gICAgV3JpdGVC
YXJyaWVyPEpTRnVuY3Rpb24+IG1fbnVtYmVyUHJvdG9Ub1N0cmluZ0Z1bmN0aW9uOwogICAgIFdy
aXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1
bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgR2V0dGVyU2V0dGVyPiBt
X3Rocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyOwogICAgIFdyaXRlQmFycmllcjxKU09iamVjdD4g
bV9yZWdFeHBQcm90b1N5bWJvbFJlcGxhY2U7CkBAIC02MTUsNyArNjE1LDcgQEAgY2xhc3MgSlNH
bG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgSlNG
dW5jdGlvbiogcmVqZWN0UHJvbWlzZUZ1bmN0aW9uKCkgY29uc3Q7CiAgICAgSlNGdW5jdGlvbiog
cHJvbWlzZVByb3RvVGhlbkZ1bmN0aW9uKCkgY29uc3Q7CiAgICAgSlNGdW5jdGlvbiogb2JqZWN0
UHJvdG9WYWx1ZU9mRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX29iamVjdFByb3RvVmFsdWVP
ZkZ1bmN0aW9uLmdldCgpOyB9Ci0gICAgSlNGdW5jdGlvbiogbnVtYmVyUHJvdG9Ub1N0cmluZ0Z1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJQcm90b1RvU3RyaW5nRnVuY3Rpb24uZ2V0
KCk7IH0KKyAgICBKU0Z1bmN0aW9uKiBudW1iZXJQcm90b1RvU3RyaW5nRnVuY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX251bWJlclByb3RvVG9TdHJpbmdGdW5jdGlvbi5nZXQodGhpcyk7IH0KICAg
ICBKU0Z1bmN0aW9uKiBmdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24uZ2V0
KCk7IH0KICAgICBKU0Z1bmN0aW9uKiByZWdFeHBQcm90b0V4ZWNGdW5jdGlvbigpIGNvbnN0Owog
ICAgIEpTT2JqZWN0KiByZWdFeHBQcm90b1N5bWJvbFJlcGxhY2VGdW5jdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fcmVnRXhwUHJvdG9TeW1ib2xSZXBsYWNlLmdldCgpOyB9CkBAIC02NDQsOSArNjQ0
LDkgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9i
amVjdCB7CiAgICAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGdlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5n
ZXQoKTsgfQogICAgIEdlbmVyYXRvclByb3RvdHlwZSogZ2VuZXJhdG9yUHJvdG90eXBlKCkgY29u
c3QgeyByZXR1cm4gbV9nZW5lcmF0b3JQcm90b3R5cGUuZ2V0KCk7IH0KICAgICBBc3luY0Z1bmN0
aW9uUHJvdG90eXBlKiBhc3luY0Z1bmN0aW9uUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9h
c3luY0Z1bmN0aW9uUHJvdG90eXBlLmdldCgpOyB9Ci0gICAgTWFwUHJvdG90eXBlKiBtYXBQcm90
b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX21hcFByb3RvdHlwZS5nZXQoKTsgfQorICAgIEpTT2Jq
ZWN0KiBtYXBQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX21hcFN0cnVjdHVyZS5wcm90b3R5
cGUodGhpcyk7IH0KICAgICAvLyBXb3JrYXJvdW5kIGZvciB0aGUgbmFtZSBjb25mbGljdCBiZXR3
ZWVuIEpTQ2VsbDo6c2V0UHJvdG90eXBlLgotICAgIFNldFByb3RvdHlwZSoganNTZXRQcm90b3R5
cGUoKSBjb25zdCB7IHJldHVybiBtX3NldFByb3RvdHlwZS5nZXQoKTsgfQorICAgIEpTT2JqZWN0
KiBqc1NldFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2V0U3RydWN0dXJlLnByb3RvdHlw
ZSh0aGlzKTsgfQogICAgIEpTUHJvbWlzZVByb3RvdHlwZSogcHJvbWlzZVByb3RvdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcHJvbWlzZVByb3RvdHlwZS5nZXQoKTsgfQogICAgIEFzeW5jR2VuZXJh
dG9yUHJvdG90eXBlKiBhc3luY0dlbmVyYXRvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YXN5bmNHZW5lcmF0b3JQcm90b3R5cGUuZ2V0KCk7IH0KICAgICBBc3luY0dlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlKiBhc3luY0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV9hc3luY0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmdldCgpOyB9CkBAIC03NDUs
NyArNzQ1LDYgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJp
YWJsZU9iamVjdCB7CiAgICAgU3RydWN0dXJlKiBuYXRpdmVTdGRGdW5jdGlvblN0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlU3RkRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9
CiAgICAgUHJvcGVydHlPZmZzZXQgZnVuY3Rpb25OYW1lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4g
bV9mdW5jdGlvbk5hbWVPZmZzZXQ7IH0KICAgICBTdHJ1Y3R1cmUqIG51bWJlck9iamVjdFN0cnVj
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyT2JqZWN0U3RydWN0dXJlLmdldCh0aGlzKTsg
fQotICAgIFN0cnVjdHVyZSogbWFwU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tYXBTdHJ1
Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHJlZ0V4cFN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVnRXhwU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBnZW5lcmF0
b3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvclN0cnVjdHVyZS5nZXQoKTsg
fQogICAgIFN0cnVjdHVyZSogYXN5bmNHZW5lcmF0b3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX2FzeW5jR2VuZXJhdG9yU3RydWN0dXJlLmdldCgpOyB9CkBAIC0xMDEyLDcgKzEwMTEsMTAg
QEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVj
dCB7CiAgICAgdm9pZCBzZXRXcmFwcGVyTWFwKHN0ZDo6dW5pcXVlX3B0cjxXcmFwcGVyTWFwPiYm
KTsKICNlbmRpZgogCi0gICAgdm9pZCB0cnlJbnN0YWxsQXJyYXlTcGVjaWVzV2F0Y2hwb2ludChK
U0dsb2JhbE9iamVjdCopOworICAgIHZvaWQgdHJ5SW5zdGFsbEFycmF5U3BlY2llc1dhdGNocG9p
bnQoKTsKKyAgICB2b2lkIGluc3RhbGxOdW1iZXJQcm90b3R5cGVXYXRjaHBvaW50KE51bWJlclBy
b3RvdHlwZSopOworICAgIHZvaWQgaW5zdGFsbE1hcFByb3RvdHlwZVdhdGNocG9pbnQoTWFwUHJv
dG90eXBlKik7CisgICAgdm9pZCBpbnN0YWxsU2V0UHJvdG90eXBlV2F0Y2hwb2ludChTZXRQcm90
b3R5cGUqKTsKIAogcHJvdGVjdGVkOgogICAgIHN0cnVjdCBHbG9iYWxQcm9wZXJ0eUluZm8gewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKaW5kZXgg
YTU3Njg4OTNkN2Q2MDA2OTgxYzkyMGUzODhhZGQwMTY5MWU1MGQ2Yy4uMWI1OWQ5ODhhMGFhOTg1
ZDA5ZjY5NWE4NzQ4MTM2ZjZhNDVhYmE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9NYXBQcm90b3R5cGUuY3BwCkBAIC03Niw2ICs3Niw4IEBAIHZvaWQgTWFwUHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRv
U3RyaW5nVGFnU3ltYm9sLCBqc1N0cmluZyh2bSwgIk1hcCIpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogCiAgICAgSlNDX05BVElW
RV9HRVRURVJfV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPnNpemUsIG1hcFBy
b3RvRnVuY1NpemUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmli
dXRlOjpBY2Nlc3Nvcik7CisKKyAgICBnbG9iYWxPYmplY3QtPmluc3RhbGxNYXBQcm90b3R5cGVX
YXRjaHBvaW50KHRoaXMpOwogfQogCiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU01hcCogZ2V0TWFw
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdGhpc1ZhbHVlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKaW5kZXgg
NmYyYjVmZjYyOGFiZTA4ZGJjYTRiN2NiNjIyZTI3NDY0ZmFjNThhZC4uOWFhM2RiMjQ2YjgzYTlh
Y2FhNjEzODE4NGI4MzIxNTE3YTVjZmUxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCkBAIC00NCw3ICs0NCw2IEBAIHR5cGVkZWYg
V1RGOjpkb3VibGVfY29udmVyc2lvbjo6U3RyaW5nQnVpbGRlciBEb3VibGVDb252ZXJzaW9uU3Ry
aW5nQnVpbGRlcjsKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90
b0Z1bmNUb0xvY2FsZVN0cmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9GaXhlZChKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9FeHBvbmVudGlhbChKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOwpAQCAtNzksOSArNzgsOSBAQCB2b2lkIE51bWJlclByb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBzZXRJbnRlcm5hbFZhbHVlKHZtLCBqc051bWJlcigw
KSk7Ci0KLSAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJ
T04odm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmcsIG51bWJlclByb3RvRnVuY1RvU3RyaW5nLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSwgTnVt
YmVyUHJvdG90eXBlVG9TdHJpbmdJbnRyaW5zaWMpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZywgZ2xvYmFsT2JqZWN0LT5udW1i
ZXJQcm90b1RvU3RyaW5nRnVuY3Rpb24oKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7
CisgICAgZ2xvYmFsT2JqZWN0LT5pbnN0YWxsTnVtYmVyUHJvdG90eXBlV2F0Y2hwb2ludCh0aGlz
KTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTnVtYmVyUHJvdG90eXBlLmgKaW5kZXggZjU0NGFkYzliYjJiNmQ2NmFmZDc4MmUxNDIxMDk5
YThlZmZiNGYwMS4uMDc4YTgyZWQ3ZTAyY2ExNWViYWZkZjJmNzk0OTM5MGYxYTcwYWYwNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmgKQEAg
LTUxLDYgKzUxLDcgQEAgY2xhc3MgTnVtYmVyUHJvdG90eXBlIGZpbmFsIDogcHVibGljIE51bWJl
ck9iamVjdCB7CiB9OwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3Rv
RnVuY1ZhbHVlT2YoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKIEpTU3RyaW5nKiBpbnQzMlRvU3RyaW5nKFZNJiwgaW50MzJfdCB2YWx1ZSwg
aW50MzJfdCByYWRpeCk7CiBKU1N0cmluZyogaW50NTJUb1N0cmluZyhWTSYsIGludDY0X3QgdmFs
dWUsIGludDMyX3QgcmFkaXgpOwogSlNTdHJpbmcqIG51bWJlclRvU3RyaW5nKFZNJiwgZG91Ymxl
IHZhbHVlLCBpbnQzMl90IHJhZGl4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TZXRQcm90b3R5cGUuY3BwCmluZGV4IDUzMGFiMGE5ZjkyZjg4NDAyZDUzYzkxOGM3MGMxNWEy
ZTU3ZGQ1YjkuLmUxOTc0MzNmMzBjMTlkNzI0ZGM4Mzg4ZDA5ZjQ1MWRkMzAyZmU4NzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcApAQCAtNzQs
NiArNzQsOCBAQCB2b2lkIFNldFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNTdHJpbmcodm0sICJT
ZXQiKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5KTsKIAogICAgIEpTQ19OQVRJVkVfR0VUVEVSX1dJVEhPVVRfVFJBTlNJVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT5zaXplLCBzZXRQcm90b0Z1bmNTaXplLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOworCisgICAgZ2xvYmFsT2Jq
ZWN0LT5pbnN0YWxsU2V0UHJvdG90eXBlV2F0Y2hwb2ludCh0aGlzKTsKIH0KIAogQUxXQVlTX0lO
TElORSBzdGF0aWMgSlNTZXQqIGdldFNldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHRoaXNWYWx1ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383099</attachid>
            <date>2019-11-07 17:56:11 -0800</date>
            <delta_ts>2019-11-07 18:20:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203795-20191107175611.patch</filename>
            <type>text/plain</type>
            <size>30251</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyMjI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
NjcwZDY2YzI4ODMxZDBmZWIxNDZjZjFjODllNThhZjViNzMyMjQzLi43MzBjOTY4ZTc0NDQ1Y2Vj
NTQ4YzZmZTdkYTY3MmEzOWE3YzI0MDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAxOS0xMS0wNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVzZSBMaW5rVGltZUNvbnN0YW50cyBhbmQgbWFrZSBzb21lIHBy
b3BlcnRpZXMgbGF6eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjAzNzk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBtYWtlcyBNYXAgYW5kIFNldCBsYXppbHkgaW5pdGlhbGl6ZWQgaW4g
SlNHbG9iYWxPYmplY3QgYnkgbGV2ZXJhZ2luZyBsaW5rLXRpbWUtY29uc3RhbnQuIEBTZXQgd2Fz
IGFjY2Vzc2VkIGZyb20KKyAgICAgICAgYnVpbHRpbi1KUy4gU28gd2UgY2Fubm90IG1ha2UgaXQg
bGF6aWx5LWFsbG9jYXRlZC4gQnV0IG5vdyB3ZSBoYXZlIGxpbmstdGltZS1jb25zdGFudCBtZWNo
YW5pc20gdGhhdCBtYWtlcyBzdWNoIGFjY2Vzc2VzCisgICAgICAgIGxhemlseS1pbml0aWFsaXpl
ZC4gV2UgdXNlIHRoaXMgdG8gbWFrZSBTZXQgbGF6aWx5LWFsbG9jYXRlZC4KKworICAgICAgICBB
bmQsIGluc3RlYWQgb2YgSlNHbG9iYWxPYmplY3QncyBsYXN0IHNlcXVlbmNlIG9mIGluaXRpYWxp
emF0aW9uLCB3ZSBpbml0aWFsaXplIHdhdGNocG9pbnQgaW4gTWFwUHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbgorICAgICAgICBhbmQgU2V0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbi4gVGhpcyBh
bGxvd3MgdXMgdG8gbWFrZSBNYXAgYW5kIFNldCBsYXppbHktYWxsb2NhdGVkLiBXZSBhbHNvIHJl
ZmFjdG9yIE51bWJlclByb3RvdHlwZSB0bworICAgICAgICBhbGlnbiB0byB0aGlzIG1vZGVsLgor
CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnNw
ZWNpZXNXYXRjaHBvaW50SXNWYWxpZCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHA6CisgICAgICAgIChKU0M6OnNldHVwQWRhcHRpdmVXYXRjaHBvaW50KToKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0
YWxsQXJyYXlTcGVjaWVzV2F0Y2hwb2ludCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
OjppbnN0YWxsTnVtYmVyUHJvdG90eXBlV2F0Y2hwb2ludCk6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0OjppbnN0YWxsTWFwUHJvdG90eXBlV2F0Y2hwb2ludCk6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0OjppbnN0YWxsU2V0UHJvdG90eXBlV2F0Y2hwb2ludCk6CisgICAgICAg
ICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6bnVtYmVyUHJvdG9Ub1N0cmluZ0Z1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6Om1hcFByb3RvdHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
T2JqZWN0Ojpqc1NldFByb3RvdHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjpudW1iZXJPYmplY3RTdHJ1Y3R1cmUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6bWFwU3RydWN0dXJlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1l
L01hcFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Ok1hcFByb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6TnVtYmVyUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGlt
ZS9OdW1iZXJQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL1NldFByb3RvdHlwZS5jcHA6
CisgICAgICAgIChKU0M6OlNldFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorCiAyMDE5LTEx
LTA3ICBUYWRldSBaYWdhbGxvICA8dHphZ2FsbG9AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJB
c3NlbWJseV0gSW5zcGVjdG9yJ3MgRGVidWdnZXJDYWxsRnJhbWUgc2hvdWxkIGJlIGF3YXJlIG9m
IFdhc20gZnJhbWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVBy
b3RvdHlwZS5jcHAKaW5kZXggMmU3ZTZhM2E1MzY4MzVkMjI5YzY2ZWFkYTI5ZTYwZjFjNTE1ODg1
Mi4uY2I3NzNkNDM0Y2ZiNTQ5MzA4ZGE5ZWZjMzQwZmU3ODQzMmFkMzgzMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAtMTk5LDcg
KzE5OSw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBzcGVjaWVzV2F0Y2hwb2ludElzVmFsaWQoVk0m
IHZtLCBKU09iamVjdCogdGhpc09iamVjdCkKIAogICAgIGlmIChnbG9iYWxPYmplY3QtPmFycmF5
U3BlY2llc1dhdGNocG9pbnRTZXQoKS5zdGF0ZU9uSlNUaHJlYWQoKSA9PSBDbGVhcldhdGNocG9p
bnQpIHsKICAgICAgICAgZGF0YUxvZ0xuSWYoQXJyYXlQcm90b3R5cGVJbnRlcm5hbDo6dmVyYm9z
ZSwgIkluaXRpYWxpemluZyBBcnJheSBzcGVjaWVzIHdhdGNocG9pbnRzIGZvciBBcnJheS5wcm90
b3R5cGU6ICIsIHBvaW50ZXJEdW1wKGFycmF5UHJvdG90eXBlKSwgIiB3aXRoIHN0cnVjdHVyZTog
IiwgcG9pbnRlckR1bXAoYXJyYXlQcm90b3R5cGUtPnN0cnVjdHVyZSh2bSkpLCAiXG5hbmQgQXJy
YXk6ICIsIHBvaW50ZXJEdW1wKGdsb2JhbE9iamVjdC0+YXJyYXlDb25zdHJ1Y3RvcigpKSwgIiB3
aXRoIHN0cnVjdHVyZTogIiwgcG9pbnRlckR1bXAoZ2xvYmFsT2JqZWN0LT5hcnJheUNvbnN0cnVj
dG9yKCktPnN0cnVjdHVyZSh2bSkpKTsKLSAgICAgICAgZ2xvYmFsT2JqZWN0LT50cnlJbnN0YWxs
QXJyYXlTcGVjaWVzV2F0Y2hwb2ludChnbG9iYWxPYmplY3QpOworICAgICAgICBnbG9iYWxPYmpl
Y3QtPnRyeUluc3RhbGxBcnJheVNwZWNpZXNXYXRjaHBvaW50KCk7CiAgICAgICAgIEFTU0VSVChn
bG9iYWxPYmplY3QtPmFycmF5U3BlY2llc1dhdGNocG9pbnRTZXQoKS5zdGF0ZU9uSlNUaHJlYWQo
KSAhPSBDbGVhcldhdGNocG9pbnQpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGE5ZGQ5MTExMjYwYmIyZDJkMDJj
NGUxYTEyMDBlNTg0Yjc2NTEwOTUuLjlhZWMwODhmOTZhMzI4MzNkNWE0NWRjNDBkNTg2ODg1ODAx
ODljNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKQEAgLTM4OCw3ICszODgsOSBAQCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJs
ZSBKU0dsb2JhbE9iamVjdDo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsKICAgRGF0ZSAg
ICAgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0OjptX2RhdGVTdHJ1Y3R1cmUgICAgICAgICAg
ICAgIERvbnRFbnVtfENsYXNzU3RydWN0dXJlCiAgIEVycm9yICAgICAgICAgICAgICAgICBKU0ds
b2JhbE9iamVjdDo6bV9lcnJvclN0cnVjdHVyZSAgICAgICAgICAgICBEb250RW51bXxDbGFzc1N0
cnVjdHVyZQogICBCb29sZWFuICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3Q6Om1fYm9vbGVh
bk9iamVjdFN0cnVjdHVyZSAgICAgRG9udEVudW18Q2xhc3NTdHJ1Y3R1cmUKKyAgTWFwICAgICAg
ICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0OjptX21hcFN0cnVjdHVyZSAgICAgICAgICAgICAg
IERvbnRFbnVtfENsYXNzU3RydWN0dXJlCiAgIE51bWJlciAgICAgICAgICAgICAgICBKU0dsb2Jh
bE9iamVjdDo6bV9udW1iZXJPYmplY3RTdHJ1Y3R1cmUgICAgICBEb250RW51bXxDbGFzc1N0cnVj
dHVyZQorICBTZXQgICAgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3Q6Om1fc2V0U3RydWN0
dXJlICAgICAgICAgICAgICAgRG9udEVudW18Q2xhc3NTdHJ1Y3R1cmUKICAgU3ltYm9sICAgICAg
ICAgICAgICAgIEpTR2xvYmFsT2JqZWN0OjptX3N5bWJvbE9iamVjdFN0cnVjdHVyZSAgICAgIERv
bnRFbnVtfENsYXNzU3RydWN0dXJlCiAgIFdlYWtNYXAgICAgICAgICAgICAgICBKU0dsb2JhbE9i
amVjdDo6bV93ZWFrTWFwU3RydWN0dXJlICAgICAgICAgICBEb250RW51bXxDbGFzc1N0cnVjdHVy
ZQogICBXZWFrU2V0ICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3Q6Om1fd2Vha1NldFN0cnVj
dHVyZSAgICAgICAgICAgRG9udEVudW18Q2xhc3NTdHJ1Y3R1cmUKQEAgLTQ2MCw2ICs0NjIsMjkg
QEAgc3RhdGljIEdldHRlclNldHRlciogZ2V0R2V0dGVyQnlJZChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU09iamVjdCogYmFzZSwKICAgICByZXR1cm4ganNDYXN0PEdldHRlclNldHRl
cio+KHNsb3QuZ2V0UHVyZVJlc3VsdCgpKTsKIH0KIAorc3RhdGljIE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uIHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTT2JqZWN0KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyAgICAvLyBQ
ZXJmb3JtaW5nIHRoZXNlIGdldHMgc2hvdWxkIG5vdCB0aHJvdy4KKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBjYXRjaFNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09Q
RSh2bSk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZSwgUHJvcGVydHlTbG90OjpJbnRlcm5h
bE1ldGhvZFR5cGU6OkdldCk7CisgICAgYm9vbCByZXN1bHQgPSBiYXNlLT5nZXRPd25Qcm9wZXJ0
eVNsb3QoYmFzZSwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCk7CisgICAgQVNTRVJUX1VOVVNF
RChyZXN1bHQsIHJlc3VsdCk7CisgICAgY2F0Y2hTY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpKTsKKyAgICBKU1ZhbHVl
IGZ1bmN0aW9uVmFsdWUgPSBzbG90LmdldFZhbHVlKGdsb2JhbE9iamVjdCwgaWRlbnQpOworICAg
IGNhdGNoU2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKKyAgICBBU1NFUlQoanNEeW5hbWljQ2Fz
dDxKU0Z1bmN0aW9uKj4odm0sIGZ1bmN0aW9uVmFsdWUpKTsKKworICAgIE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uIGNvbmRpdGlvbiA9IGdlbmVyYXRlQ29uZGl0aW9uRm9yU2VsZkVxdWl2YWxlbmNl
KHZtLCBudWxscHRyLCBiYXNlLCBpZGVudC5pbXBsKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKGNv
bmRpdGlvbi5yZXF1aXJlZFZhbHVlKCkgPT0gZnVuY3Rpb25WYWx1ZSk7CisKKyAgICBib29sIGlz
V2F0Y2hhYmxlID0gY29uZGl0aW9uLmlzV2F0Y2hhYmxlKFByb3BlcnR5Q29uZGl0aW9uOjpFbnN1
cmVXYXRjaGFiaWxpdHkpOworICAgIFJFTEVBU0VfQVNTRVJUKGlzV2F0Y2hhYmxlKTsgLy8gV2Ug
YWxsb3cgdGhpcyB0byBpbnN0YWxsIHRoZSBuZWNlc3Nhcnkgd2F0Y2hwb2ludHMuCisKKyAgICBy
ZXR1cm4gY29uZGl0aW9uOworfQorCiB0ZW1wbGF0ZTxFcnJvclR5cGUgZXJyb3JUeXBlPgogdm9p
ZCBKU0dsb2JhbE9iamVjdDo6aW5pdGlhbGl6ZUVycm9yQ29uc3RydWN0b3IoTGF6eUNsYXNzU3Ry
dWN0dXJlOjpJbml0aWFsaXplciYgaW5pdCkKIHsKQEAgLTU0Myw2ICs1NjgsMTEgQEAgdm9pZCBK
U0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0
aW9uOjpjcmVhdGUoaW5pdC52bSwgcHJvbWlzZUNvbnN0cnVjdG9yUmVzb2x2ZUNvZGVHZW5lcmF0
b3IoaW5pdC52bSksIGluaXQub3duZXIpKTsKICAgICAgICAgfSk7CiAKKyAgICBtX251bWJlclBy
b3RvVG9TdHJpbmdGdW5jdGlvbi5pbml0TGF0ZXIoCisgICAgICAgIFtdIChjb25zdCBJbml0aWFs
aXplcjxKU0Z1bmN0aW9uPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlv
bjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAx
LCBpbml0LnZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nLnN0cmluZygpLCBudW1iZXJQcm90b0Z1
bmNUb1N0cmluZywgTnVtYmVyUHJvdG90eXBlVG9TdHJpbmdJbnRyaW5zaWMpKTsKKyAgICAgICAg
fSk7CisKICAgICBtX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uLnNldCh2
bSwgdGhpcywgaGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbik7CiAgICAgbV90aHJvd1R5cGVFcnJv
ckdldHRlclNldHRlci5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxH
ZXR0ZXJTZXR0ZXI+JiBpbml0KSB7CkBAIC05NDYsNyArOTc2LDYgQEAgY2FwaXRhbE5hbWUgIyMg
Q29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2Fw
aXRhbE5hbWUKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihM
aW5rVGltZUNvbnN0YW50OjpyZWdFeHBCdWlsdGluRXhlYyldLnNldCh2bSwgdGhpcywganNDYXN0
PEpTRnVuY3Rpb24qPihtX3JlZ0V4cFByb3RvdHlwZS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5leGVjKSkpOwogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OnJlZ0V4cFByb3RvdHlwZVN5bWJvbFJlcGxhY2UpXS5z
ZXQodm0sIHRoaXMsIG1fcmVnRXhwUHJvdG90eXBlLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPnJlcGxhY2VTeW1ib2wpLmFzQ2VsbCgpKTsKIAotICAgIG1fbGlua1RpbWVDb25zdGFu
dHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlNldCldLnNldCh2bSwg
dGhpcywgc2V0Q29uc3RydWN0b3IpOwogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmlzQXJyYXkpXS5zZXQodm0sIHRoaXMsIGFy
cmF5Q29uc3RydWN0b3ItPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXNBcnJheSku
YXNDZWxsKCkpOwogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KExpbmtUaW1lQ29uc3RhbnQ6OmNhbGxGdW5jdGlvbildLnNldCh2bSwgdGhpcywgY2FsbEZ1bmN0
aW9uKTsKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5r
VGltZUNvbnN0YW50OjphcHBseUZ1bmN0aW9uKV0uc2V0KHZtLCB0aGlzLCBhcHBseUZ1bmN0aW9u
KTsKQEAgLTk3Nyw2ICsxMDA2LDkgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2Vy
TmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICBqc0Nh
c3Q8SlNPYmplY3QqPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OlNldEl0ZXJh
dG9yKSktPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBzZXRJdGVy
YXRvclByb3RvdHlwZSk7CiAKICAgICAvLyBNYXAgYW5kIFNldCBoZWxwZXJzLgorICAgIG1fbGlu
a1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlNl
dCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAg
ICAgICAgICAgaW5pdC5zZXQoanNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciktPnNl
dENvbnN0cnVjdG9yKCkpOworICAgICAgICB9KTsKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0
YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjptYXBCdWNrZXRIZWFkKV0uaW5p
dExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CiAgICAgICAgICAg
ICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2Jq
ZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBtYXBQcml2YXRlRnVuY01hcEJ1Y2tldEhl
YWQsIEpTTWFwQnVja2V0SGVhZEludHJpbnNpYykpOwogICAgICAgICB9KTsKQEAgLTExODYsOTcg
KzEyMTgsNDggQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25z
dHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKIAogI3VuZGVmIENSRUFURV9QUk9U
T1RZUEVfRk9SX0xBWllfVFlQRQogCi0gICAgYXV0byBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludCA9
IFsmXSAoSlNPYmplY3QqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KSAtPiBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvbiB7Ci0gICAgICAgIC8vIFBlcmZvcm1pbmcgdGhlc2UgZ2V0cyBzaG91
bGQgbm90IHRocm93LgotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlLCBQcm9wZXJ0eVNs
b3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKLSAgICAgICAgYm9vbCByZXN1bHQgPSBiYXNl
LT5nZXRPd25Qcm9wZXJ0eVNsb3QoYmFzZSwgdGhpcywgaWRlbnQsIHNsb3QpOwotICAgICAgICBB
U1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKLSAgICAgICAgY2F0Y2hTY29wZS5hc3NlcnRO
b0V4Y2VwdGlvbigpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChzbG90LmlzQ2FjaGVhYmxlVmFs
dWUoKSk7Ci0gICAgICAgIEpTVmFsdWUgZnVuY3Rpb25WYWx1ZSA9IHNsb3QuZ2V0VmFsdWUodGhp
cywgaWRlbnQpOwotICAgICAgICBjYXRjaFNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAg
ICAgIEFTU0VSVChqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgZnVuY3Rpb25WYWx1ZSkp
OwotCi0gICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IGdlbmVyYXRl
Q29uZGl0aW9uRm9yU2VsZkVxdWl2YWxlbmNlKHZtLCBudWxscHRyLCBiYXNlLCBpZGVudC5pbXBs
KCkpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChjb25kaXRpb24ucmVxdWlyZWRWYWx1ZSgpID09
IGZ1bmN0aW9uVmFsdWUpOwotCi0gICAgICAgIGJvb2wgaXNXYXRjaGFibGUgPSBjb25kaXRpb24u
aXNXYXRjaGFibGUoUHJvcGVydHlDb25kaXRpb246OkVuc3VyZVdhdGNoYWJpbGl0eSk7Ci0gICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGlzV2F0Y2hhYmxlKTsgLy8gV2UgYWxsb3cgdGhpcyB0byBpbnN0
YWxsIHRoZSBuZWNlc3Nhcnkgd2F0Y2hwb2ludHMuCi0KLSAgICAgICAgcmV0dXJuIGNvbmRpdGlv
bjsKLSAgICB9OwotCiAgICAgewotICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25k
aXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChhcnJheUl0ZXJhdG9yUHJvdG90eXBlLCB2
bS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKKyAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24g
Y29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQodGhpcywgYXJyYXlJdGVyYXRvclBy
b3RvdHlwZSwgdm0ucHJvcGVydHlOYW1lcy0+bmV4dCk7CiAgICAgICAgIG1fYXJyYXlJdGVyYXRv
clByb3RvdHlwZU5leHQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVX
YXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fYXJyYXlJ
dGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCk7CiAgICAgICAgIG1fYXJyYXlJdGVyYXRvclBy
b3RvdHlwZU5leHQtPmluc3RhbGwodm0pOwogICAgIH0KICAgICB7Ci0gICAgICAgIE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KHRoaXMt
PmFycmF5UHJvdG90eXBlKCksIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsKKyAg
ICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdh
dGNocG9pbnQodGhpcywgdGhpcy0+YXJyYXlQcm90b3R5cGUoKSwgdm0ucHJvcGVydHlOYW1lcy0+
aXRlcmF0b3JTeW1ib2wpOwogICAgICAgICBtX2FycmF5UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JX
YXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hw
b2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX2FycmF5SXRlcmF0
b3JQcm90b2NvbFdhdGNocG9pbnRTZXQpOwogICAgICAgICBtX2FycmF5UHJvdG90eXBlU3ltYm9s
SXRlcmF0b3JXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAgICAgewotICAgICAgICBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2lu
dCh0aGlzLT5hcnJheVByb3RvdHlwZSgpLCB2bS5wcm9wZXJ0eU5hbWVzLT5qb2luKTsKKyAgICAg
ICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNo
cG9pbnQodGhpcywgdGhpcy0+YXJyYXlQcm90b3R5cGUoKSwgdm0ucHJvcGVydHlOYW1lcy0+am9p
bik7CiAgICAgICAgIG1fYXJyYXlQcm90b3R5cGVKb2luV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8
T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNl
dD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9hcnJheUpvaW5XYXRjaHBvaW50U2V0KTsKICAgICAgICAg
bV9hcnJheVByb3RvdHlwZUpvaW5XYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAKICAg
ICB7Ci0gICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRh
cHRpdmVXYXRjaHBvaW50KG1hcEl0ZXJhdG9yUHJvdG90eXBlLCB2bS5wcm9wZXJ0eU5hbWVzLT5u
ZXh0KTsKKyAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBB
ZGFwdGl2ZVdhdGNocG9pbnQodGhpcywgbWFwSXRlcmF0b3JQcm90b3R5cGUsIHZtLnByb3BlcnR5
TmFtZXMtPm5leHQpOwogICAgICAgICBtX21hcEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9p
bnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElu
bGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fbWFwSXRlcmF0b3JQcm90b2Nv
bFdhdGNocG9pbnRTZXQpOwogICAgICAgICBtX21hcEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNo
cG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KICAgICB7Ci0gICAgICAgIE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1fbWFwUHJvdG90
eXBlLmdldCgpLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7Ci0gICAgICAgIG1f
bWFwUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQ
cm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhp
cywgY29uZGl0aW9uLCBtX21hcEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KTsKLSAgICAg
ICAgbV9tYXBQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQtPmluc3RhbGwodm0pOwot
ICAgIH0KLQotICAgIHsKLSAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9u
ID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQoc2V0SXRlcmF0b3JQcm90b3R5cGUsIHZtLnByb3Bl
cnR5TmFtZXMtPm5leHQpOworICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRp
b24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludCh0aGlzLCBzZXRJdGVyYXRvclByb3RvdHlwZSwg
dm0ucHJvcGVydHlOYW1lcy0+bmV4dCk7CiAgICAgICAgIG1fc2V0SXRlcmF0b3JQcm90b3R5cGVO
ZXh0V2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdh
dGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zZXRJdGVy
YXRvclByb3RvY29sV2F0Y2hwb2ludFNldCk7CiAgICAgICAgIG1fc2V0SXRlcmF0b3JQcm90b3R5
cGVOZXh0V2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogICAgIHsKLSAgICAgICAgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQo
bV9zZXRQcm90b3R5cGUuZ2V0KCksIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsK
LSAgICAgICAgbV9zZXRQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBtYWtlVW5p
cXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9p
bnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRT
ZXQpOwotICAgICAgICBtX3NldFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludC0+aW5z
dGFsbCh2bSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
biBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX3N0cmluZ0l0ZXJhdG9yUHJv
dG90eXBlLmdldCgpLCB2bS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKKyAgICAgICAgT2JqZWN0UHJv
cGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQodGhpcywg
bV9zdHJpbmdJdGVyYXRvclByb3RvdHlwZS5nZXQoKSwgdm0ucHJvcGVydHlOYW1lcy0+bmV4dCk7
CiAgICAgICAgIG1fc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9IG1ha2VV
bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hw
b2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hw
b2ludFNldCk7CiAgICAgICAgIG1fc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2lu
dC0+aW5zdGFsbCh2bSk7CiAgICAgfQogICAgIHsKLSAgICAgICAgT2JqZWN0UHJvcGVydHlDb25k
aXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobV9zdHJpbmdQcm90b3R5
cGUuZ2V0KCksIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsKKyAgICAgICAgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQo
dGhpcywgbV9zdHJpbmdQcm90b3R5cGUuZ2V0KCksIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9y
U3ltYm9sKTsKICAgICAgICAgbV9zdHJpbmdQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9p
bnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElu
bGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fc3RyaW5nSXRlcmF0b3JQcm90
b2NvbFdhdGNocG9pbnRTZXQpOwogICAgICAgICBtX3N0cmluZ1Byb3RvdHlwZVN5bWJvbEl0ZXJh
dG9yV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogCi0gICAgewotICAgICAgICBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludCht
X21hcFByb3RvdHlwZS5nZXQoKSwgdm0ucHJvcGVydHlOYW1lcy0+c2V0KTsKLSAgICAgICAgbV9t
YXBQcm90b3R5cGVTZXRXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5n
ZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9u
LCBtX21hcFNldFdhdGNocG9pbnRTZXQpOwotICAgICAgICBtX21hcFByb3RvdHlwZVNldFdhdGNo
cG9pbnQtPmluc3RhbGwodm0pOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgT2JqZWN0UHJvcGVy
dHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobV9zZXRQcm90
b3R5cGUuZ2V0KCksIHZtLnByb3BlcnR5TmFtZXMtPmFkZCk7Ci0gICAgICAgIG1fc2V0UHJvdG90
eXBlQWRkV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2
ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zZXRB
ZGRXYXRjaHBvaW50U2V0KTsKLSAgICAgICAgbV9zZXRQcm90b3R5cGVBZGRXYXRjaHBvaW50LT5p
bnN0YWxsKHZtKTsKLSAgICB9Ci0KICAgICAvLyBVbmZvcnR1bmF0ZWx5LCB0aGUgcHJvdG90eXBl
IG9iamVjdHMgb2YgdGhlIGJ1aWx0aW4gb2JqZWN0cyBjYW4gYmUgdG91Y2hlZCBmcm9tIGNvbmN1
cnJlbnQgY29tcGlsZXJzLiBTbyBlYWdlcmx5IGluaXRpYWxpemUgdGhlbSBvbmx5IGlmIHdlIHVz
ZSBKSVQuCiAgICAgaWYgKFZNOjpjYW5Vc2VKSVQoKSkgewogICAgICAgICB0aGlzLT5ib29sZWFu
UHJvdG90eXBlKCk7Ci0gICAgICAgIGF1dG8qIG51bWJlclByb3RvdHlwZSA9IHRoaXMtPm51bWJl
clByb3RvdHlwZSgpOworICAgICAgICB0aGlzLT5udW1iZXJQcm90b3R5cGUoKTsKICAgICAgICAg
dGhpcy0+c3ltYm9sUHJvdG90eXBlKCk7Ci0KLSAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRp
b24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobnVtYmVyUHJvdG90eXBlLCB2
bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZyk7Ci0gICAgICAgIG1fbnVtYmVyUHJvdG90eXBlVG9T
dHJpbmdXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZl
V2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX251bWJl
clRvU3RyaW5nV2F0Y2hwb2ludFNldCk7Ci0gICAgICAgIG1fbnVtYmVyUHJvdG90eXBlVG9TdHJp
bmdXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKLSAgICAgICAgbV9udW1iZXJQcm90b1RvU3RyaW5n
RnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBqc0Nhc3Q8SlNGdW5jdGlvbio+KG51bWJlclByb3RvdHlw
ZS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZykpKTsKICAgICB9CiAK
ICAgICBmaXh1cFByb3RvdHlwZUNoYWluV2l0aE9iamVjdFByb3RvdHlwZSh2bSk7CkBAIC0xNzcw
LDcgKzE3NTMsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdGhpc09iamVjdC0+bV9pdGVyYXRvclBy
b3RvY29sRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9wcm9taXNl
UmVzb2x2ZUZ1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNP
YmplY3QtPm1fb2JqZWN0UHJvdG9WYWx1ZU9mRnVuY3Rpb24pOwotICAgIHZpc2l0b3IuYXBwZW5k
KHRoaXNPYmplY3QtPm1fbnVtYmVyUHJvdG9Ub1N0cmluZ0Z1bmN0aW9uKTsKKyAgICB0aGlzT2Jq
ZWN0LT5tX251bWJlclByb3RvVG9TdHJpbmdGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKICAgICB2
aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJv
bEZ1bmN0aW9uKTsKICAgICB0aGlzT2JqZWN0LT5tX3Rocm93VHlwZUVycm9yR2V0dGVyU2V0dGVy
LnZpc2l0KHZpc2l0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcmVnRXhw
UHJvdG9TeW1ib2xSZXBsYWNlKTsKQEAgLTE5NDUsMTIgKzE5MjgsMTIgQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdDo6Y2xlYXJSYXJlRGF0YShKU0NlbGwqIGNlbGwpCiAgICAganNDYXN0PEpTR2xvYmFs
T2JqZWN0Kj4oY2VsbCktPm1fcmFyZURhdGEgPSBudWxscHRyOwogfQogCi12b2lkIEpTR2xvYmFs
T2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlTcGVjaWVzV2F0Y2hwb2ludChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQordm9pZCBKU0dsb2JhbE9iamVjdDo6dHJ5SW5zdGFsbEFycmF5U3BlY2ll
c1dhdGNocG9pbnQoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKCFtX2FycmF5UHJvdG90eXBlQ29u
c3RydWN0b3JXYXRjaHBvaW50KTsKICAgICBSRUxFQVNFX0FTU0VSVCghbV9hcnJheUNvbnN0cnVj
dG9yU3BlY2llc1dhdGNocG9pbnQpOwogCi0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCiAgICAgLy8gRmlyc3Qgd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0
aGUgQXJyYXkucHJvdG90eXBlLmNvbnN0cnVjdG9yIHByb3BlcnR5IHBvaW50cyB0byBBcnJheQpA
QCAtMTk3MCwxMSArMTk1MywxMSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJy
YXlTcGVjaWVzV2F0Y2hwb2ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogICAgIH07CiAK
ICAgICBQcm9wZXJ0eVNsb3QgY29uc3RydWN0b3JTbG90KGFycmF5UHJvdG90eXBlLCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKLSAgICBhcnJheVByb3RvdHlw
ZS0+Z2V0T3duUHJvcGVydHlTbG90KGFycmF5UHJvdG90eXBlLCBnbG9iYWxPYmplY3QsIHZtLnBy
b3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBjb25zdHJ1Y3RvclNsb3QpOworICAgIGFycmF5UHJv
dG90eXBlLT5nZXRPd25Qcm9wZXJ0eVNsb3QoYXJyYXlQcm90b3R5cGUsIHRoaXMsIHZtLnByb3Bl
cnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBjb25zdHJ1Y3RvclNsb3QpOwogICAgIHNjb3BlLmFzc2Vy
dE5vRXhjZXB0aW9uKCk7CiAgICAgaWYgKGNvbnN0cnVjdG9yU2xvdC5zbG90QmFzZSgpICE9IGFy
cmF5UHJvdG90eXBlCiAgICAgICAgIHx8ICFjb25zdHJ1Y3RvclNsb3QuaXNDYWNoZWFibGVWYWx1
ZSgpCi0gICAgICAgIHx8IGNvbnN0cnVjdG9yU2xvdC5nZXRWYWx1ZShnbG9iYWxPYmplY3QsIHZt
LnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yKSAhPSBhcnJheUNvbnN0cnVjdG9yKSB7CisgICAg
ICAgIHx8IGNvbnN0cnVjdG9yU2xvdC5nZXRWYWx1ZSh0aGlzLCB2bS5wcm9wZXJ0eU5hbWVzLT5j
b25zdHJ1Y3RvcikgIT0gYXJyYXlDb25zdHJ1Y3RvcikgewogICAgICAgICBpbnZhbGlkYXRlV2F0
Y2hwb2ludCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTk4NCw3ICsxOTY3LDcgQEAg
dm9pZCBKU0dsb2JhbE9iamVjdDo6dHJ5SW5zdGFsbEFycmF5U3BlY2llc1dhdGNocG9pbnQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamUKICAgICAgICAgY29uc3RydWN0b3JTdHJ1Y3R1cmUgPSBj
b25zdHJ1Y3RvclN0cnVjdHVyZS0+ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUodm0sIGFycmF5
Q29uc3RydWN0b3IpOwogCiAgICAgUHJvcGVydHlTbG90IHNwZWNpZXNTbG90KGFycmF5Q29uc3Ry
dWN0b3IsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOwotICAg
IGFycmF5Q29uc3RydWN0b3ItPmdldE93blByb3BlcnR5U2xvdChhcnJheUNvbnN0cnVjdG9yLCBn
bG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnNwZWNpZXNTeW1ib2wsIHNwZWNpZXNTbG90
KTsKKyAgICBhcnJheUNvbnN0cnVjdG9yLT5nZXRPd25Qcm9wZXJ0eVNsb3QoYXJyYXlDb25zdHJ1
Y3RvciwgdGhpcywgdm0ucHJvcGVydHlOYW1lcy0+c3BlY2llc1N5bWJvbCwgc3BlY2llc1Nsb3Qp
OwogICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAgaWYgKHNwZWNpZXNTbG90LnNs
b3RCYXNlKCkgIT0gYXJyYXlDb25zdHJ1Y3RvcgogICAgICAgICB8fCAhc3BlY2llc1Nsb3QuaXND
YWNoZWFibGVHZXR0ZXIoKQpAQCAtMjAxNiw2ICsxOTk5LDQ2IEBAIHZvaWQgSlNHbG9iYWxPYmpl
Y3Q6OnRyeUluc3RhbGxBcnJheVNwZWNpZXNXYXRjaHBvaW50KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplCiAgICAgbV9hcnJheUNvbnN0cnVjdG9yU3BlY2llc1dhdGNocG9pbnQtPmluc3RhbGwo
dm0pOwogfQogCit2b2lkIEpTR2xvYmFsT2JqZWN0OjppbnN0YWxsTnVtYmVyUHJvdG90eXBlV2F0
Y2hwb2ludChOdW1iZXJQcm90b3R5cGUqIG51bWJlclByb3RvdHlwZSkKK3sKKyAgICBWTSYgdm0g
PSB0aGlzLT52bSgpOworICAgIGlmIChtX251bWJlclRvU3RyaW5nV2F0Y2hwb2ludFNldC5pc1N0
aWxsVmFsaWQoKSkgeworICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24g
PSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludCh0aGlzLCBudW1iZXJQcm90b3R5cGUsIHZtLnByb3Bl
cnR5TmFtZXMtPnRvU3RyaW5nKTsKKyAgICAgICAgbV9udW1iZXJQcm90b3R5cGVUb1N0cmluZ1dh
dGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBv
aW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fbnVtYmVyVG9TdHJp
bmdXYXRjaHBvaW50U2V0KTsKKyAgICAgICAgbV9udW1iZXJQcm90b3R5cGVUb1N0cmluZ1dhdGNo
cG9pbnQtPmluc3RhbGwodm0pOworICAgIH0KK30KKwordm9pZCBKU0dsb2JhbE9iamVjdDo6aW5z
dGFsbE1hcFByb3RvdHlwZVdhdGNocG9pbnQoTWFwUHJvdG90eXBlKiBtYXBQcm90b3R5cGUpCit7
CisgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICBpZiAobV9tYXBJdGVyYXRvclByb3RvY29s
V2F0Y2hwb2ludFNldC5pc1N0aWxsVmFsaWQoKSkgeworICAgICAgICBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludCh0aGlzLCBtYXBQcm90
b3R5cGUsIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsKKyAgICAgICAgbV9tYXBQ
cm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3Bl
cnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBj
b25kaXRpb24sIG1fbWFwSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRTZXQpOworICAgICAgICBt
X21hcFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CisgICAg
fQorICAgIGlmIChtX21hcFNldFdhdGNocG9pbnRTZXQuaXNTdGlsbFZhbGlkKCkpIHsKKyAgICAg
ICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNo
cG9pbnQodGhpcywgbWFwUHJvdG90eXBlLCB2bS5wcm9wZXJ0eU5hbWVzLT5zZXQpOworICAgICAg
ICBtX21hcFByb3RvdHlwZVNldFdhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5
Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25k
aXRpb24sIG1fbWFwU2V0V2F0Y2hwb2ludFNldCk7CisgICAgICAgIG1fbWFwUHJvdG90eXBlU2V0
V2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CisgICAgfQorfQorCit2b2lkIEpTR2xvYmFsT2JqZWN0
OjppbnN0YWxsU2V0UHJvdG90eXBlV2F0Y2hwb2ludChTZXRQcm90b3R5cGUqIHNldFByb3RvdHlw
ZSkKK3sKKyAgICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAgIGlmIChtX3NldEl0ZXJhdG9yUHJv
dG9jb2xXYXRjaHBvaW50U2V0LmlzU3RpbGxWYWxpZCgpKSB7CisgICAgICAgIE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KHRoaXMsIHNl
dFByb3RvdHlwZSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpOworICAgICAgICBt
X3NldFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0
UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRo
aXMsIGNvbmRpdGlvbiwgbV9zZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldCk7CisgICAg
ICAgIG1fc2V0UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsK
KyAgICB9CisgICAgaWYgKG1fc2V0QWRkV2F0Y2hwb2ludFNldC5pc1N0aWxsVmFsaWQoKSkgewor
ICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZl
V2F0Y2hwb2ludCh0aGlzLCBzZXRQcm90b3R5cGUsIHZtLnByb3BlcnR5TmFtZXMtPmFkZCk7Cisg
ICAgICAgIG1fc2V0UHJvdG90eXBlQWRkV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJv
cGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMs
IGNvbmRpdGlvbiwgbV9zZXRBZGRXYXRjaHBvaW50U2V0KTsKKyAgICAgICAgbV9zZXRQcm90b3R5
cGVBZGRXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKKyAgICB9Cit9CisKIHZvaWQgc2xvd1ZhbGlk
YXRlQ2VsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIFJFTEVBU0VfQVNT
RVJUKGdsb2JhbE9iamVjdC0+aXNHbG9iYWxPYmplY3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBmZjFlMWIyMDExMzQ4Y2UwZTgw
OTY1NTE5ZmZiYjEyZDNjZTBkMTliLi4xZWZkZjdmNTQxMGM4ODRlNmUyYzRkNjE5YWFkMjFmMjE2
ZWFlZTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgKQEAgLTEzMiw4ICsxMzIsNiBAQCBjb25zdGV4cHIgYm9vbCB0eXBlRXhwb3NlZEJ5RGVm
YXVsdCA9IHRydWU7CiAKICNkZWZpbmUgRk9SX0VBQ0hfU0lNUExFX0JVSUxUSU5fVFlQRV9XSVRI
X0NPTlNUUlVDVE9SKG1hY3JvKSBcCiAgICAgbWFjcm8oU3RyaW5nLCBzdHJpbmcsIHN0cmluZ09i
amVjdCwgU3RyaW5nT2JqZWN0LCBTdHJpbmcsIG9iamVjdCwgdHlwZUV4cG9zZWRCeURlZmF1bHQp
IFwKLSAgICBtYWNybyhNYXAsIG1hcCwgbWFwLCBKU01hcCwgTWFwLCBvYmplY3QsIHR5cGVFeHBv
c2VkQnlEZWZhdWx0KSBcCi0gICAgbWFjcm8oU2V0LCBzZXQsIHNldCwgSlNTZXQsIFNldCwgb2Jq
ZWN0LCB0eXBlRXhwb3NlZEJ5RGVmYXVsdCkgXAogICAgIG1hY3JvKEpTUHJvbWlzZSwgcHJvbWlz
ZSwgcHJvbWlzZSwgSlNQcm9taXNlLCBQcm9taXNlLCBvYmplY3QsIHR5cGVFeHBvc2VkQnlEZWZh
dWx0KSBcCiAgICAgbWFjcm8oQmlnSW50LCBiaWdJbnQsIGJpZ0ludE9iamVjdCwgQmlnSW50T2Jq
ZWN0LCBCaWdJbnQsIG9iamVjdCwgT3B0aW9uczo6dXNlQmlnSW50KCkpIFwKICAgICBtYWNybyhX
ZWFrT2JqZWN0UmVmLCB3ZWFrT2JqZWN0UmVmLCB3ZWFrT2JqZWN0UmVmLCBKU1dlYWtPYmplY3RS
ZWYsIFdlYWtSZWYsIG9iamVjdCwgT3B0aW9uczo6dXNlV2Vha1JlZnMoKSkgXApAQCAtMTQ5LDcg
KzE0Nyw5IEBAIGNvbnN0ZXhwciBib29sIHR5cGVFeHBvc2VkQnlEZWZhdWx0ID0gdHJ1ZTsKICAg
ICBtYWNybyhCb29sZWFuLCBib29sZWFuLCBib29sZWFuT2JqZWN0LCBCb29sZWFuT2JqZWN0LCBC
b29sZWFuLCBvYmplY3QsIHR5cGVFeHBvc2VkQnlEZWZhdWx0KSBcCiAgICAgbWFjcm8oRGF0ZSwg
ZGF0ZSwgZGF0ZSwgRGF0ZUluc3RhbmNlLCBEYXRlLCBvYmplY3QsIHR5cGVFeHBvc2VkQnlEZWZh
dWx0KSBcCiAgICAgbWFjcm8oRXJyb3IsIGVycm9yLCBlcnJvciwgRXJyb3JJbnN0YW5jZSwgRXJy
b3IsIG9iamVjdCwgdHlwZUV4cG9zZWRCeURlZmF1bHQpIFwKKyAgICBtYWNybyhNYXAsIG1hcCwg
bWFwLCBKU01hcCwgTWFwLCBvYmplY3QsIHR5cGVFeHBvc2VkQnlEZWZhdWx0KSBcCiAgICAgbWFj
cm8oTnVtYmVyLCBudW1iZXIsIG51bWJlck9iamVjdCwgTnVtYmVyT2JqZWN0LCBOdW1iZXIsIG9i
amVjdCwgdHlwZUV4cG9zZWRCeURlZmF1bHQpIFwKKyAgICBtYWNybyhTZXQsIHNldCwgc2V0LCBK
U1NldCwgU2V0LCBvYmplY3QsIHR5cGVFeHBvc2VkQnlEZWZhdWx0KSBcCiAgICAgbWFjcm8oU3lt
Ym9sLCBzeW1ib2wsIHN5bWJvbE9iamVjdCwgU3ltYm9sT2JqZWN0LCBTeW1ib2wsIG9iamVjdCwg
dHlwZUV4cG9zZWRCeURlZmF1bHQpIFwKICAgICBERUZJTkVfU1RBTkRBUkRfQlVJTFRJTihtYWNy
bywgV2Vha01hcCwgd2Vha01hcCkgXAogICAgIERFRklORV9TVEFOREFSRF9CVUlMVElOKG1hY3Jv
LCBXZWFrU2V0LCB3ZWFrU2V0KSBcCkBAIC0zMDIsOCArMzAyLDggQEAgY2xhc3MgSlNHbG9iYWxP
YmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgTGF6eVByb3Bl
cnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2V2YWxGdW5jdGlvbjsKICAgICBMYXp5
UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1faXRlcmF0b3JQcm90b2NvbEZ1
bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9w
cm9taXNlUmVzb2x2ZUZ1bmN0aW9uOworICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwg
SlNGdW5jdGlvbj4gbV9udW1iZXJQcm90b1RvU3RyaW5nRnVuY3Rpb247CiAgICAgV3JpdGVCYXJy
aWVyPEpTRnVuY3Rpb24+IG1fb2JqZWN0UHJvdG9WYWx1ZU9mRnVuY3Rpb247Ci0gICAgV3JpdGVC
YXJyaWVyPEpTRnVuY3Rpb24+IG1fbnVtYmVyUHJvdG9Ub1N0cmluZ0Z1bmN0aW9uOwogICAgIFdy
aXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1
bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgR2V0dGVyU2V0dGVyPiBt
X3Rocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyOwogICAgIFdyaXRlQmFycmllcjxKU09iamVjdD4g
bV9yZWdFeHBQcm90b1N5bWJvbFJlcGxhY2U7CkBAIC02MTUsNyArNjE1LDcgQEAgY2xhc3MgSlNH
bG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgSlNG
dW5jdGlvbiogcmVqZWN0UHJvbWlzZUZ1bmN0aW9uKCkgY29uc3Q7CiAgICAgSlNGdW5jdGlvbiog
cHJvbWlzZVByb3RvVGhlbkZ1bmN0aW9uKCkgY29uc3Q7CiAgICAgSlNGdW5jdGlvbiogb2JqZWN0
UHJvdG9WYWx1ZU9mRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX29iamVjdFByb3RvVmFsdWVP
ZkZ1bmN0aW9uLmdldCgpOyB9Ci0gICAgSlNGdW5jdGlvbiogbnVtYmVyUHJvdG9Ub1N0cmluZ0Z1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJQcm90b1RvU3RyaW5nRnVuY3Rpb24uZ2V0
KCk7IH0KKyAgICBKU0Z1bmN0aW9uKiBudW1iZXJQcm90b1RvU3RyaW5nRnVuY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX251bWJlclByb3RvVG9TdHJpbmdGdW5jdGlvbi5nZXRJbml0aWFsaXplZE9u
TWFpblRocmVhZCh0aGlzKTsgfQogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uUHJvdG9IYXNJbnN0
YW5jZVN5bWJvbEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvblByb3RvSGFzSW5z
dGFuY2VTeW1ib2xGdW5jdGlvbi5nZXQoKTsgfQogICAgIEpTRnVuY3Rpb24qIHJlZ0V4cFByb3Rv
RXhlY0Z1bmN0aW9uKCkgY29uc3Q7CiAgICAgSlNPYmplY3QqIHJlZ0V4cFByb3RvU3ltYm9sUmVw
bGFjZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBQcm90b1N5bWJvbFJlcGxhY2Uu
Z2V0KCk7IH0KQEAgLTY0NCw5ICs2NDQsOSBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1Ymxp
YyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBHZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZSogZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlLmdldCgpOyB9CiAgICAgR2VuZXJhdG9yUHJvdG90eXBlKiBn
ZW5lcmF0b3JQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvclByb3RvdHlwZS5n
ZXQoKTsgfQogICAgIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUqIGFzeW5jRnVuY3Rpb25Qcm90b3R5
cGUoKSBjb25zdCB7IHJldHVybiBtX2FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCk7IH0KLSAg
ICBNYXBQcm90b3R5cGUqIG1hcFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwUHJvdG90
eXBlLmdldCgpOyB9CisgICAgSlNPYmplY3QqIG1hcFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWFwU3RydWN0dXJlLnByb3RvdHlwZSh0aGlzKTsgfQogICAgIC8vIFdvcmthcm91bmQgZm9y
IHRoZSBuYW1lIGNvbmZsaWN0IGJldHdlZW4gSlNDZWxsOjpzZXRQcm90b3R5cGUuCi0gICAgU2V0
UHJvdG90eXBlKiBqc1NldFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2V0UHJvdG90eXBl
LmdldCgpOyB9CisgICAgSlNPYmplY3QqIGpzU2V0UHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4g
bV9zZXRTdHJ1Y3R1cmUucHJvdG90eXBlKHRoaXMpOyB9CiAgICAgSlNQcm9taXNlUHJvdG90eXBl
KiBwcm9taXNlUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9taXNlUHJvdG90eXBlLmdl
dCgpOyB9CiAgICAgQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUqIGFzeW5jR2VuZXJhdG9yUHJvdG90
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9hc3luY0dlbmVyYXRvclByb3RvdHlwZS5nZXQoKTsgfQog
ICAgIEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGFzeW5jR2VuZXJhdG9yRnVuY3Rp
b25Qcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUuZ2V0KCk7IH0KQEAgLTc0NSw3ICs3NDUsNiBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6
IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1cmUqIG5hdGl2
ZVN0ZEZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVTdGRGdW5jdGlv
blN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBQcm9wZXJ0eU9mZnNldCBmdW5jdGlvbk5hbWVP
ZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uTmFtZU9mZnNldDsgfQogICAgIFN0cnVj
dHVyZSogbnVtYmVyT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPYmpl
Y3RTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9Ci0gICAgU3RydWN0dXJlKiBtYXBTdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX21hcFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogcmVn
RXhwU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBTdHJ1Y3R1cmUuZ2V0KCk7IH0K
ICAgICBTdHJ1Y3R1cmUqIGdlbmVyYXRvclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2Vu
ZXJhdG9yU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBhc3luY0dlbmVyYXRvclN0
cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXN5bmNHZW5lcmF0b3JTdHJ1Y3R1cmUuZ2V0KCk7
IH0KQEAgLTEwMTIsNyArMTAxMSwxMCBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBK
U1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICB2b2lkIHNldFdyYXBwZXJNYXAoc3RkOjp1
bmlxdWVfcHRyPFdyYXBwZXJNYXA+JiYpOwogI2VuZGlmCiAKLSAgICB2b2lkIHRyeUluc3RhbGxB
cnJheVNwZWNpZXNXYXRjaHBvaW50KEpTR2xvYmFsT2JqZWN0Kik7CisgICAgdm9pZCB0cnlJbnN0
YWxsQXJyYXlTcGVjaWVzV2F0Y2hwb2ludCgpOworICAgIHZvaWQgaW5zdGFsbE51bWJlclByb3Rv
dHlwZVdhdGNocG9pbnQoTnVtYmVyUHJvdG90eXBlKik7CisgICAgdm9pZCBpbnN0YWxsTWFwUHJv
dG90eXBlV2F0Y2hwb2ludChNYXBQcm90b3R5cGUqKTsKKyAgICB2b2lkIGluc3RhbGxTZXRQcm90
b3R5cGVXYXRjaHBvaW50KFNldFByb3RvdHlwZSopOwogCiBwcm90ZWN0ZWQ6CiAgICAgc3RydWN0
IEdsb2JhbFByb3BlcnR5SW5mbyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9NYXBQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWFwUHJvdG90eXBlLmNwcAppbmRleCBhNTc2ODg5M2Q3ZDYwMDY5ODFjOTIwZTM4OGFkZDAxNjkx
ZTUwZDZjLi4xYjU5ZDk4OGEwYWE5ODVkMDlmNjk1YTg3NDgxMzZmNmE0NWFiYTRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKQEAgLTc2LDYg
Kzc2LDggQEAgdm9pZCBNYXBQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzU3RyaW5nKHZtLCAiTWFw
IiksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSk7CiAKICAgICBKU0NfTkFUSVZFX0dFVFRFUl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJv
cGVydHlOYW1lcy0+c2l6ZSwgbWFwUHJvdG9GdW5jU2l6ZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKTsKKworICAgIGdsb2JhbE9iamVj
dC0+aW5zdGFsbE1hcFByb3RvdHlwZVdhdGNocG9pbnQodGhpcyk7CiB9CiAKIEFMV0FZU19JTkxJ
TkUgc3RhdGljIEpTTWFwKiBnZXRNYXAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSB0aGlzVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OdW1iZXJQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVt
YmVyUHJvdG90eXBlLmNwcAppbmRleCA2ZjJiNWZmNjI4YWJlMDhkYmNhNGI3Y2I2MjJlMjc0NjRm
YWM1OGFkLi45YWEzZGIyNDZiODNhOWFjYWE2MTM4MTg0YjgzMjE1MTdhNWNmZTFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKQEAg
LTQ0LDcgKzQ0LDYgQEAgdHlwZWRlZiBXVEY6OmRvdWJsZV9jb252ZXJzaW9uOjpTdHJpbmdCdWls
ZGVyIERvdWJsZUNvbnZlcnNpb25TdHJpbmdCdWlsZGVyOwogCiBuYW1lc3BhY2UgSlNDIHsKIAot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9TdHJp
bmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1i
ZXJQcm90b0Z1bmNUb0ZpeGVkKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0V4cG9uZW50aWFs
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CkBAIC03OSw5ICs3OCw5IEBAIHZvaWQgTnVt
YmVyUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHNldEludGVy
bmFsVmFsdWUodm0sIGpzTnVtYmVyKDApKTsKLQotICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZV
TkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZywgbnVt
YmVyUHJvdG9GdW5jVG9TdHJpbmcsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pLCAxLCBOdW1iZXJQcm90b3R5cGVUb1N0cmluZ0ludHJpbnNpYyk7Cisg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3Ry
aW5nLCBnbG9iYWxPYmplY3QtPm51bWJlclByb3RvVG9TdHJpbmdGdW5jdGlvbigpLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgQVNTRVJU
KGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKyAgICBnbG9iYWxPYmplY3QtPmluc3RhbGxOdW1iZXJQ
cm90b3R5cGVXYXRjaHBvaW50KHRoaXMpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuaAppbmRleCBmNTQ0YWRj
OWJiMmI2ZDY2YWZkNzgyZTE0MjEwOTlhOGVmZmI0ZjAxLi4wNzhhODJlZDdlMDJjYTE1ZWJhZmRm
MmY3OTQ5MzkwZjFhNzBhZjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OdW1iZXJQcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OdW1iZXJQcm90b3R5cGUuaApAQCAtNTEsNiArNTEsNyBAQCBjbGFzcyBOdW1iZXJQcm90b3R5
cGUgZmluYWwgOiBwdWJsaWMgTnVtYmVyT2JqZWN0IHsKIH07CiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVmFsdWVPZihKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb1N0
cmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogSlNTdHJpbmcqIGludDMyVG9TdHJp
bmcoVk0mLCBpbnQzMl90IHZhbHVlLCBpbnQzMl90IHJhZGl4KTsKIEpTU3RyaW5nKiBpbnQ1MlRv
U3RyaW5nKFZNJiwgaW50NjRfdCB2YWx1ZSwgaW50MzJfdCByYWRpeCk7CiBKU1N0cmluZyogbnVt
YmVyVG9TdHJpbmcoVk0mLCBkb3VibGUgdmFsdWUsIGludDMyX3QgcmFkaXgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKaW5kZXggNTMwYWIwYTlm
OTJmODg0MDJkNTNjOTE4YzcwYzE1YTJlNTdkZDViOS4uZTE5NzQzM2YzMGMxOWQ3MjRkYzgzODhk
MDlmNDUxZGQzMDJmZTg3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2V0UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
ZXRQcm90b3R5cGUuY3BwCkBAIC03NCw2ICs3NCw4IEBAIHZvaWQgU2V0UHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFn
U3ltYm9sLCBqc1N0cmluZyh2bSwgIlNldCIpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogCiAgICAgSlNDX05BVElWRV9HRVRURVJf
V0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPnNpemUsIHNldFByb3RvRnVuY1Np
emUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpBY2Nl
c3Nvcik7CisKKyAgICBnbG9iYWxPYmplY3QtPmluc3RhbGxTZXRQcm90b3R5cGVXYXRjaHBvaW50
KHRoaXMpOwogfQogCiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1NldCogZ2V0U2V0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdGhpc1ZhbHVlKQo=
</data>
<flag name="review"
          id="398856"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
      

    </bug>

</bugzilla>