<?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>225917</bug_id>
          
          <creation_ts>2021-05-18 07:56:37 -0700</creation_ts>
          <short_desc>Temporarily revert r276592 as it breaks some native apps</short_desc>
          <delta_ts>2021-05-18 11:02:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>cdumez</cc>
    
    <cc>clopez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1761152</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-05-18 07:56:37 -0700</bug_when>
    <thetext>Temporarily revert r276592 as it breaks some native apps</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761153</commentid>
    <comment_count>1</comment_count>
      <attachid>428938</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-05-18 07:57:15 -0700</bug_when>
    <thetext>Created attachment 428938
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761197</commentid>
    <comment_count>2</comment_count>
      <attachid>428951</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-05-18 10:12:58 -0700</bug_when>
    <thetext>Created attachment 428951
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761198</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-05-18 10:13:54 -0700</bug_when>
    <thetext>This patch modifies the imported WPT tests. Please ensure that any changes on the tests (not coming from a WPT import) are exported to WPT. Please see https://trac.webkit.org/wiki/WPTExportProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761214</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-18 11:01:54 -0700</bug_when>
    <thetext>Committed r277665 (237867@main): &lt;https://commits.webkit.org/237867@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 428951.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761215</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-18 11:02:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/78163558&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428938</attachid>
            <date>2021-05-18 07:57:15 -0700</date>
            <delta_ts>2021-05-18 10:12:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225917-20210518105713.patch</filename>
            <type>text/plain</type>
            <size>184720</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MDRiNWVjODVjNWFjMjA3MDI1YzA1NWVhN2RmOGQzYzFkZmZjY2ZmLi5mY2Y2ZWU3N2NhNDAwODM0
ZDQ0ZjM1NTYwOGY3YzZjNTQ1NmJhNTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDMgQEAKKzIwMjEtMDUtMTggIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgVGVtcG9yYXJpbHkgcmV2ZXJ0IHIyNzY1OTIgYXMgaXQgYnJlYWtz
IHNvbWUgbmF0aXZlIGFwcHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyNTkxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAgKiBBUEkvSlNDYWxs
YmFja09iamVjdEZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBh
cmVudD46OnB1dCk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJTY29wZS5oOgorICAgICAg
ICAqIHJ1bnRpbWUvQ2xhc3NJbmZvLmg6CisgICAgICAgICogcnVudGltZS9DbG9uZWRBcmd1bWVu
dHMuaDoKKyAgICAgICAgKiBydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5jcHA6CisgICAgICAg
IChKU0M6OmNhbGxDdXN0b21TZXR0ZXIpOgorICAgICAgICAqIHJ1bnRpbWUvQ3VzdG9tR2V0dGVy
U2V0dGVyLmg6CisgICAgICAgICogcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmg6CisgICAgICAg
ICogcnVudGltZS9FcnJvckluc3RhbmNlLmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmljQXJn
dW1lbnRzLmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpwdXQpOgorICAgICAgICAqIHJ1
bnRpbWUvR2V0dGVyU2V0dGVyLmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5LmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNBcnJheTo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcDoKKyAgICAgICAgKEpTQzo6
SlNBcnJheUJ1ZmZlclZpZXc6OnB1dCk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVy
Vmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6
OkpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6
CisgICAgICAgIChKU0M6OkpTQ2VsbDo6ZG9QdXRQcm9wZXJ0eVNlY3VyaXR5Q2hlY2spOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pT
RnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Lmg6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAg
ICogcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNN
b2R1bGVFbnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VP
YmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OmRvUHV0UHJvcGVydHlTZWN1cml0eUNoZWNrKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OnB1dElubGluZVNsb3cpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHJvdG90eXBl
Q2hhaW5NYXlJbnRlcmNlcHRTdG9yZVRvKToKKyAgICAgICAgKEpTQzo6ZGVmaW5lUHJvcGVydHlP
blJlY2VpdmVyU2xvdyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWZpbmVQ
cm9wZXJ0eU9uUmVjZWl2ZXIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0
SW5saW5lRmFzdFJlcGxhY2luZ1N0YXRpY1Byb3BlcnR5SWZOZWVkZWQpOiBEZWxldGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dEJ5
SW5kZXhJbmxpbmUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZG9QdXRQcm9wZXJ0eVNlY3Vy
aXR5Q2hlY2spOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aGFzTm9uUmVpZmllZFN0YXRpY1By
b3BlcnRpZXMpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpjYW5QZXJmb3JtRmFzdFB1dElubGluZUV4Y2x1ZGlu
Z1Byb3RvKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dElubGluZUZvckpTT2JqZWN0KToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnB1dElubGluZUZhc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUv
SlNQcm94eS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlSW5mby5oOgorICAgICAgICAoSlND
OjpUeXBlSW5mbzo6b3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IGNvbnN0KToKKyAgICAgICAg
KEpTQzo6VHlwZUluZm86Om92ZXJyaWRlc0FueUZvcm1PZkdldE93blByb3BlcnR5TmFtZXMgY29u
c3QpOgorICAgICAgICAoSlNDOjpUeXBlSW5mbzo6aGFzUHV0UHJvcGVydHlTZWN1cml0eUNoZWNr
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6VHlwZUluZm86Omhhc1N0YXRpY1Byb3BlcnR5VGFibGUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpUeXBlSW5mbzo6b3ZlcnJpZGVzUHV0IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOgorICAgICAgICAoSlND
OjpwdXRFbnRyeSk6CisgICAgICAgIChKU0M6Omxvb2t1cFB1dCk6CisgICAgICAgICogcnVudGlt
ZS9Qcm9wZXJ0eVNsb3QuaDoKKyAgICAgICAgKiBydW50aW1lL1Byb3h5T2JqZWN0LmNwcDoKKyAg
ICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnB1dCk6CisgICAgICAgICogcnVudGltZS9Qcm94eU9i
amVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUHV0UHJvcGVydHlTbG90Lmg6CisgICAgICAgIChK
U0M6OlB1dFByb3BlcnR5U2xvdDo6UHV0UHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6UHV0
UHJvcGVydHlTbG90Ojpjb250ZXh0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHV0UHJvcGVydHlT
bG90Ojp0eXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHV0UHJvcGVydHlTbG90Ojppc0luaXRp
YWxpemF0aW9uIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHV0UHJvcGVydHlTbG90Ojppc1RhaW50
ZWRCeU9wYXF1ZU9iamVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlB1dFByb3Bl
cnR5U2xvdDo6c2V0SXNUYWludGVkQnlPcGFxdWVPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAq
IHJ1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9SZWdFeHBPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpSZWdFeHBPYmplY3Q6OnB1dCk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBPYmpl
Y3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ09iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OlN0cmluZ09iamVjdDo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ09iamVjdC5oOgor
ICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6U3Ry
aW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OlN0cmluZ1Byb3Rv
dHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp2
YWxpZGF0ZUZsYWdzKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmU6OnRha2VzU2xvd1BhdGhJbkRGR0ZvckltcHVyZVByb3BlcnR5KToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlOjpoYXNOb25SZWlmaWVkU3RhdGljUHJvcGVydGllcyBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogdG9vbHMvSlNEb2xsYXJWTS5jcHA6CisKIDIwMjEtMDUt
MTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgRmls
ZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZSgpIHRvIEZpbGVTeXN0ZW06OnBhcmVudFBhdGgoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDAxZjBlN2E1OWRmMDA1MGE5NTNmMWEzMTQwMDNlZTg3OWI5MjRkOTUuLjJlZWY4
NTA3YWU3NzkxNDcxZTlkMzk1NmVjNjI5MWE3ZTE3MzUyZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw3MyBAQAorMjAyMS0wNS0xOCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNv
bT4KKworICAgICAgICBUZW1wb3JhcmlseSByZXZlcnQgcjI3NjU5MiBhcyBpdCBicmVha3Mgc29t
ZSBuYXRpdmUgYXBwcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI1OTE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6ZG9QdXRQ
cm9wZXJ0eVNlY3VyaXR5Q2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnB1
dCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU0xvY2F0aW9uOjpkb1B1dFByb3BlcnR5U2VjdXJpdHlDaGVjayk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNSZW1vdGVET01XaW5kb3c6OnB1dCk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZVB1dCk6CisgICAgICAg
IChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdERvbWFpblNlY3VyaXR5Lmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcjo6cHV0KToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5oOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW5kZXhlZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uOjpwdXQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uaDoKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6
cHV0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNl
dHRlcldpdGhJZGVudGlmaWVyLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEludGVyZmFjZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyOjpwdXQpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJOb0lkZW50aWZpZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OnB1
dCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlm
aWVyOjpwdXQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcjo6cHV0KToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRl
clRocm93aW5nRXhjZXB0aW9uOjpwdXQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmg6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6cHV0
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSWRlbnRpZmllci5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6OnB1dCk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuaDoK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
SW5kZXhlZEdldHRlckFuZFNldHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyOjpwdXQpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5k
U2V0dGVyLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6cHV0KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
T3ZlcnJpZGVCdWlsdElucy5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzOjpwdXQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuaDoKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3Jn
ZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNB
bmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpwdXQpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RQbHVnaW5JbnRlcmZhY2U6OnB1dCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVyZmFjZS5oOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29i
amNfcnVudGltZS5oOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5Lmg6CisgICAgICAg
ICogYnJpZGdlL3J1bnRpbWVfb2JqZWN0Lmg6CisKIDIwMjEtMDUtMTMgIFNhbSBXZWluaWcgIDx3
ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFNwbGl0IHBpeGVsIGJ1ZmZlciBmb3JtYXQgZGF0
YSBvdXQgaW50byBhIG5ldyBQaXhlbEJ1ZmZlckZvcm1hdCBzdHJ1Y3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTc3
Yjg0N2U4YzU1OTNkYzBjNjM1ODc1YzUxMjFmZGNiZjk5YmZlMC4uMzk0MjIxNjNkMzlmZGUzMzQ2
YWYxMmIwZGJjODhiZTMxY2UyNjg3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0w
NS0xOCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKworICAgICAgICBU
ZW1wb3JhcmlseSByZXZlcnQgcjI3NjU5MiBhcyBpdCBicmVha3Mgc29tZSBuYXRpdmUgYXBwcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1OTE3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oOgorCiAyMDIxLTA1LTEzICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBTcGxpdCBwaXhlbCBidWZmZXIgZm9y
bWF0IGRhdGEgb3V0IGludG8gYSBuZXcgUGl4ZWxCdWZmZXJGb3JtYXQgc3RydWN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCmluZGV4IGNlNGMwOTdlYzk2
YzlhZmMzMGM3ZWY4NjliM2IyOTVkNDAyNjRhOWMuLjNkMjg1ZjNkMjI1NjJlYzA2MjljZDM2OWFh
OTEwNGFmMjFlY2I5MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
YWxsYmFja09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a09iamVjdC5oCkBAIC0xMjksNyArMTI5LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KIGNs
YXNzIEpTQ2FsbGJhY2tPYmplY3QgZmluYWwgOiBwdWJsaWMgUGFyZW50IHsKIHB1YmxpYzoKICAg
ICB1c2luZyBCYXNlID0gUGFyZW50OwotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3Bl
cnR5U2xvdCB8IE92ZXJyaWRlc0dldE93blNwZWNpYWxQcm9wZXJ0eU5hbWVzIHwgT3ZlcnJpZGVz
R2V0Q2FsbERhdGEgfCBPdmVycmlkZXNQdXQgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90
QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSW1wbGVtZW50c0hhc0luc3RhbmNlIHwg
UHJvaGliaXRzUHJvcGVydHlDYWNoaW5nIHwgR2V0T3duUHJvcGVydHlTbG90TWF5QmVXcm9uZ0Fi
b3V0RG9udEVudW07CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwg
T3ZlcnJpZGVzR2V0T3duU3BlY2lhbFByb3BlcnR5TmFtZXMgfCBPdmVycmlkZXNHZXRDYWxsRGF0
YSB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05v
dFplcm8gfCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcg
fCBHZXRPd25Qcm9wZXJ0eVNsb3RNYXlCZVdyb25nQWJvdXREb250RW51bTsKICAgICBzdGF0aWNf
YXNzZXJ0KCEoU3RydWN0dXJlRmxhZ3MgJiBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKSwg
InVzaW5nIGN1c3RvbUhhc0luc3RhbmNlIik7CiAKICAgICB+SlNDYWxsYmFja09iamVjdCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVu
Y3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5j
dGlvbnMuaAppbmRleCA4MjAyODgwNTE0YjIxZWJmN2QyYmViZTkyMDQyNTI3OTM0ZGQzNWQ1Li40
NDhhYmViYWNlNzhiMTNhNTcwMDc1YzI1OGYwNGY4ZjNlYjVkZjhmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaApAQCAt
MjcxLDkgKzI3MSw2IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQCiAgICAgSlNPYmplY3RSZWYg
dGhpc1JlZiA9IHRvUmVmKGpzQ2FzdDxKU09iamVjdCo+KHRoaXNPYmplY3QpKTsKICAgICBSZWZQ
dHI8T3BhcXVlSlNTdHJpbmc+IHByb3BlcnR5TmFtZVJlZjsKICAgICBKU1ZhbHVlUmVmIHZhbHVl
UmVmID0gdG9SZWYoZ2xvYmFsT2JqZWN0LCB2YWx1ZSk7Ci0KLSAgICBpZiAoVU5MSUtFTFkoaXNU
aGlzVmFsdWVBbHRlcmVkKHNsb3QsIHRoaXNPYmplY3QpKSkKLSAgICAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBQYXJlbnQ6OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNsb3QpKTsKICAgICAKICAgICBpZiAoU3RyaW5nSW1wbCogbmFtZSA9
IHByb3BlcnR5TmFtZS51aWQoKSkgewogICAgICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9
IHRoaXNPYmplY3QtPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJl
bnRDbGFzcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyU2NvcGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNj
b3BlLmgKaW5kZXggMmU5MDUyMDE2MjIwZjA5NjFkOTk2MGEyYzhiZjY2MzAyZDBkN2IwNS4uNjQ4
ZmZmMGEwYmVjODllMTRmYzA2MDVjYzRlMjU0NGU0ZDIxMDgwNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5oCkBAIC0zNiw3ICszNiw3IEBAIGNs
YXNzIEpTU2NvcGU7CiBjbGFzcyBEZWJ1Z2dlclNjb3BlIGZpbmFsIDogcHVibGljIEpTTm9uRmlu
YWxPYmplY3QgewogcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0Owot
ICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1
Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldE93
blByb3BlcnR5TmFtZXMgfCBPdmVycmlkZXNQdXQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlOYW1lczsKIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DbGFzc0luZm8uaAppbmRleCA2ZjkzODc1MDJiYWFkMGQ4ODEyM2VkYWYzNzYwMGVk
YTRmZGQ3YmVlLi5jNjJhYzU0NzE5MWM4YTgwMmVmNDAzZGU3YzQzMDY4NmM2NDlkNDhmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaApAQCAtNjgsNiArNjgsOSBA
QCBzdHJ1Y3QgTWV0aG9kVGFibGUgewogICAgIHVzaW5nIEdldE93blByb3BlcnR5U2xvdEJ5SW5k
ZXhGdW5jdGlvblB0ciA9IGJvb2wgKCopKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNp
Z25lZCwgUHJvcGVydHlTbG90Jik7CiAgICAgR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEZ1bmN0
aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRSWShnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KTsKIAor
ICAgIHVzaW5nIERvUHV0UHJvcGVydHlTZWN1cml0eUNoZWNrRnVuY3Rpb25QdHIgPSB2b2lkICgq
KShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQdXRQcm9wZXJ0eVNs
b3QmKTsKKyAgICBEb1B1dFByb3BlcnR5U2VjdXJpdHlDaGVja0Z1bmN0aW9uUHRyIE1FVEhPRF9U
QUJMRV9FTlRSWShkb1B1dFByb3BlcnR5U2VjdXJpdHlDaGVjayk7CisKICAgICB1c2luZyBUb1Ro
aXNGdW5jdGlvblB0ciA9IEpTVmFsdWUgKCopKEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgRUNN
QU1vZGUpOwogICAgIFRvVGhpc0Z1bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRSWSh0b1RoaXMp
OwogCkBAIC0xNTIsNiArMTU1LDcgQEAgc3RydWN0IE1ldGhvZFRhYmxlIHsKICAgICAgICAgJkNs
YXNzTmFtZTo6ZGVsZXRlUHJvcGVydHlCeUluZGV4LCBcCiAgICAgICAgICZDbGFzc05hbWU6Omdl
dE93blByb3BlcnR5U2xvdCwgXAogICAgICAgICAmQ2xhc3NOYW1lOjpnZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4LCBcCisgICAgICAgICZDbGFzc05hbWU6OmRvUHV0UHJvcGVydHlTZWN1cml0eUNo
ZWNrLCBcCiAgICAgICAgICZDbGFzc05hbWU6OnRvVGhpcywgXAogICAgICAgICAmQ2xhc3NOYW1l
OjpnZXRPd25Qcm9wZXJ0eU5hbWVzLCBcCiAgICAgICAgICZDbGFzc05hbWU6OmdldE93blNwZWNp
YWxQcm9wZXJ0eU5hbWVzLCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DbG9uZWRBcmd1bWVudHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Ns
b25lZEFyZ3VtZW50cy5oCmluZGV4IGE3OWY5Mzk2YTgwMjM0ZjRkZmQyZjMyZWRkZmNiOThjOWE2
YTZkNzUuLmIzYTU4MGFlMTViODJkNjkwYjUzNjY0MDliNWYyNDUwZWFjZDJiZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5oCkBAIC00MCw3
ICs0MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgQ2xvbmVkQXJndW1lbnRzIGZpbmFsIDog
cHVibGljIEpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU05v
bkZpbmFsT2JqZWN0OwotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8
IE92ZXJyaWRlc0dldE93blNwZWNpYWxQcm9wZXJ0eU5hbWVzIHwgT3ZlcnJpZGVzUHV0OworICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldE93blNw
ZWNpYWxQcm9wZXJ0eU5hbWVzOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1
YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihW
TSYgdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21H
ZXR0ZXJTZXR0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ3VzdG9tR2V0
dGVyU2V0dGVyLmNwcAppbmRleCA4OWE2NDFmODAwMDE1NmM0MWE3MGY2MzgxMzM3NjMyYzRlMzdi
YjNiLi5lMDRjZjIyZDBiMmQyOTJmMmE5ZjBjZjc0NWEwZTE1Mjk0M2M5OTJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5jcHAK
QEAgLTI2LDEwICsyNiwyOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkN1c3Rv
bUdldHRlclNldHRlci5oIgogCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNs
dWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorCiBuYW1lc3BhY2UgSlNDIHsKIAogU1RBVElDX0FTU0VS
VF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEN1c3RvbUdldHRlclNldHRlcik7CiAKIGNvbnN0
IENsYXNzSW5mbyBDdXN0b21HZXR0ZXJTZXR0ZXI6OnNfaW5mbyA9IHsgIkN1c3RvbUdldHRlclNl
dHRlciIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoQ3Vz
dG9tR2V0dGVyU2V0dGVyKSB9OwogCitUcmlTdGF0ZSBjYWxsQ3VzdG9tU2V0dGVyKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEN1c3RvbUdldHRlclNldHRlcjo6Q3VzdG9tU2V0dGVyIHNl
dHRlciwgYm9vbCBpc0FjY2Vzc29yLCBKU09iamVjdCogc2xvdEJhc2UsIEpTVmFsdWUgdGhpc1Zh
bHVlLCBKU1ZhbHVlIHZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQoreworICAgIGlm
IChpc0FjY2Vzc29yKSB7CisgICAgICAgIGlmICghc2V0dGVyKQorICAgICAgICAgICAgcmV0dXJu
IFRyaVN0YXRlOjpGYWxzZTsKKyAgICAgICAgc2V0dGVyKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6
ZW5jb2RlKHRoaXNWYWx1ZSksIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSksIHByb3BlcnR5TmFtZSk7
CisgICAgICAgIC8vIEFsd2F5cyByZXR1cm4gdHJ1ZSBpZiB0aGVyZSBpcyBhIHNldHRlciBhbmQg
aXQgaXMgb2JzZXJ2ZWQgYXMgYW4gYWNjZXNzb3IgdG8gdXNlcnMuCisgICAgICAgIHJldHVybiBU
cmlTdGF0ZTo6VHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoIXNldHRlcikKKyAgICAgICAgcmV0dXJu
IFRyaVN0YXRlOjpJbmRldGVybWluYXRlOworICAgIHJldHVybiB0cmlTdGF0ZShzZXR0ZXIoZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlOjplbmNvZGUoc2xvdEJhc2UpLCBKU1ZhbHVlOjplbmNvZGUodmFs
dWUpLCBwcm9wZXJ0eU5hbWUpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5oCmluZGV4IDUz
NWUwZTFjYThiNWE2NjZjMjU0NzE4MGRjOGQyNGU5MWQyNzlhYjIuLjNjNTc2MzAwODU4YTk1MDll
MzM0YmNhNWIwNTQyMTQ0OWRmZGYwNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5oCkBAIC03Niw0ICs3Niw2IEBAIHByaXZhdGU6
CiAgICAgQ3VzdG9tU2V0dGVyIG1fc2V0dGVyOwogfTsKIAorSlNfRVhQT1JUX1BSSVZBVEUgVHJp
U3RhdGUgY2FsbEN1c3RvbVNldHRlcihKU0dsb2JhbE9iamVjdCosIEN1c3RvbUdldHRlclNldHRl
cjo6Q3VzdG9tU2V0dGVyLCBib29sIGlzQWNjZXNzb3IsIEpTT2JqZWN0KiBzbG90QmFzZSwgSlNW
YWx1ZSB0aGlzVmFsdWUsIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CisKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25z
dHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rv
ci5oCmluZGV4IGM1ODE2MzVmMjFmYmRmNjY5YTMwZGRiMjdkNDZmNWJlYmMxOTY4NTQuLjZlMWJl
YWE2MTFlNzY3ZGViMzNlYjRiMWYwNjZjZWQxZWZiNWY1NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmgKQEAgLTMwLDcgKzMwLDYgQEAg
Y2xhc3MgR2V0dGVyU2V0dGVyOwogY2xhc3MgRXJyb3JDb25zdHJ1Y3RvciBmaW5hbCA6IHB1Ymxp
YyBJbnRlcm5hbEZ1bmN0aW9uIHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSW50ZXJuYWxG
dW5jdGlvbjsKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
QmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNQdXQ7CiAKICAgICBzdGF0aWMgRXJyb3JD
b25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEVycm9yUHJv
dG90eXBlKiBlcnJvclByb3RvdHlwZSwgR2V0dGVyU2V0dGVyKikKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgKaW5kZXggN2QyZTY0MzI2YTgx
ZGI2Yzc3MGE0NjNkOGY5NjM3NjczZGZiMjkzYi4uYzlhODZiMjg4YmQ3NDgxZTdjZDY1Yjc0N2Rj
Nzg1ODQ3Y2Q2NTU2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3JJbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
SW5zdGFuY2UuaApAQCAtMzAsNyArMzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEVycm9y
SW5zdGFuY2UgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNpbmcg
QmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJv
cGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0T3duU3BlY2lhbFByb3BlcnR5TmFtZXMgfCBPdmVycmlk
ZXNQdXQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJh
c2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJp
ZGVzR2V0T3duU3BlY2lhbFByb3BlcnR5TmFtZXM7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwogCiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0Nl
bGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5l
cmljQXJndW1lbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJn
dW1lbnRzLmgKaW5kZXggNzMxY2RiNzAwM2VmMTA2OGUzOWI0M2E1OWU4ZGI0YzJkYzcyNGE2NS4u
NjhlYWI2MDZiMGNmMTRjYTE2NjdlODE5ZWY5NWVkMDk0N2M5YzNmZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHMuaApAQCAtMzYsNyArMzYs
NyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgogY2xhc3MgR2VuZXJpY0FyZ3VtZW50cyA6IHB1
YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTTm9uRmluYWxP
YmplY3QgQmFzZTsKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBP
dmVycmlkZXNHZXRPd25Qcm9wZXJ0eU5hbWVzIHwgT3ZlcnJpZGVzUHV0IHwgSW50ZXJjZXB0c0dl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybzsKKyAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxh
Z3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0
eU5hbWVzIHwgSW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0
aElzTm90WmVybzsKIAogcHJvdGVjdGVkOgogICAgIEdlbmVyaWNBcmd1bWVudHMoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oCmluZGV4IGJmZmY5YjU3ZWY3MzVkOTdi
MGNmMjU3MWQzZDRmYWVlODk3N2VhMDguLjhjMjhlMzVmYTRkNmFhOWRiMTJlZTFkMmE5OTk0MjUy
NTdhOGYyNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
aWNBcmd1bWVudHNJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaApAQCAtMTM0LDggKzEzNCw4IEBAIGJvb2wgR2VuZXJp
Y0FyZ3VtZW50czxUeXBlPjo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUHJvCiAKICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3Nl
Yy1hcmd1bWVudHMtZXhvdGljLW9iamVjdHMtc2V0LXAtdi1yZWNlaXZlcgogICAgIC8vIEZhbGwg
YmFjayB0byB0aGUgT3JkaW5hcnlTZXQgd2hlbiB0aGUgcmVjZWl2ZXIgaXMgYWx0ZXJlZCBmcm9t
IHRoZSB0aGlzT2JqZWN0LgotICAgIGlmIChVTkxJS0VMWShzbG90LnRoaXNWYWx1ZSgpICE9IHRo
aXNPYmplY3QpKQotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OnB1dCh0
aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50LCB2YWx1ZSwgc2xvdCkpOworICAgIGlmIChV
TkxJS0VMWShpc1RoaXNWYWx1ZUFsdGVyZWQoc2xvdCwgdGhpc09iamVjdCkpKQorICAgICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIG9yZGluYXJ5U2V0U2xvdyhnbG9iYWxPYmplY3QsIHRo
aXNPYmplY3QsIGlkZW50LCB2YWx1ZSwgc2xvdC50aGlzVmFsdWUoKSwgc2xvdC5pc1N0cmljdE1v
ZGUoKSkpOwogICAgIAogICAgIE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgo
aWRlbnQpOwogICAgIGlmIChpbmRleCAmJiB0aGlzT2JqZWN0LT5pc01hcHBlZEFyZ3VtZW50KGlu
ZGV4LnZhbHVlKCkpKSB7CkBAIC0xNDMsNyArMTQzLDkgQEAgYm9vbCBHZW5lcmljQXJndW1lbnRz
PFR5cGU+OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQ
cm8KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBCYXNlOjpwdXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgdmFsdWUs
IHNsb3QpKTsKKyAgICBhdXRvIHJlc3VsdCA9IEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxP
YmplY3QsIGlkZW50LCB2YWx1ZSwgc2xvdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZmFsc2UpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcmVzdWx0KTsKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dldHRlclNldHRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2V0dGVyU2V0dGVyLmgKaW5kZXggNTJmZTNlZmVhZDFlMzEwNWE3ODdlMjE5ZjQyNWIwODdkZDA5
OGRhNy4uMGI0NWQ5MjhkY2Y1NmVkNTcwMTIxNWMyNjBkMGUxY2E3OGQ5NWIzYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgKQEAgLTU0LDcgKzU0LDcg
QEAgcHJpdmF0ZToKIAogcHVibGljOgogCi0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJv
cGVydHlTbG90IHwgT3ZlcnJpZGVzUHV0IHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKKyAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxh
Z3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwog
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0
YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5LmNwcAppbmRleCBjOTgwMzc0YWE2ZjA0MzhjMGVkMWVjNjk2Mjcy
MjE1Y2Q3NTQwOWNkLi5lNDJmMzljOWY4YTIxMzQxNWUwNDRhYTQ4MzUyMDMyMzIyMjk2YmVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAtMjM4LDYgKzIz
OCwxMCBAQCBib29sIEpTQXJyYXk6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNB
cnJheSo+KGNlbGwpOworCisgICAgaWYgKFVOTElLRUxZKGlzVGhpc1ZhbHVlQWx0ZXJlZChzbG90
LCB0aGlzT2JqZWN0KSkpCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgb3JkaW5h
cnlTZXRTbG93KGdsb2JhbE9iamVjdCwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
c2xvdC50aGlzVmFsdWUoKSwgc2xvdC5pc1N0cmljdE1vZGUoKSkpOworCiAgICAgdGhpc09iamVj
dC0+ZW5zdXJlV3JpdGFibGUodm0pOwogCiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9w
ZXJ0eU5hbWVzLT5sZW5ndGgpIHsKQEAgLTI0Nyw5ICsyNTEsNiBAQCBib29sIEpTQXJyYXk6OnB1
dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZSBwcm9wZQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKLSAgICAgICAg
aWYgKFVOTElLRUxZKHNsb3QudGhpc1ZhbHVlKCkgIT0gdGhpc09iamVjdCkpCi0gICAgICAgICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTT2JqZWN0OjpkZWZpbmVQcm9wZXJ0eU9uUmVj
ZWl2ZXIoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSk7Ci0KICAgICAg
ICAgdW5zaWduZWQgbmV3TGVuZ3RoID0gdmFsdWUudG9VSW50MzIoZ2xvYmFsT2JqZWN0KTsKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICBkb3VibGUg
dmFsdWVBc051bWJlciA9IHZhbHVlLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKaW5kZXggYjZhZTMyMjMyNjIyN2RhMWYyNTJhYTEw
NmQyOGU1ZTBjOTgyMDkzNC4uOGI3NDFkMzE5ODYxOWFjOGEzMWNiZDFjNmZjMGVlMTk2Y2Y3NTMw
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaApAQCAtNDAsNyArNDAs
NyBAQCBjbGFzcyBKU0FycmF5IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogCiBwdWJsaWM6
CiAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJp
ZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0T3duU3BlY2lhbFByb3BlcnR5TmFt
ZXMgfCBPdmVycmlkZXNQdXQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlT
bG90IHwgT3ZlcnJpZGVzR2V0T3duU3BlY2lhbFByb3BlcnR5TmFtZXM7CiAKICAgICBzdGF0aWMg
c2l6ZV90IGFsbG9jYXRpb25TaXplKENoZWNrZWQ8c2l6ZV90PiBpbmxpbmVDYXBhY2l0eSkKICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVm
ZmVyVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVy
Vmlldy5jcHAKaW5kZXggYjNmYzc1MTU1NjUzZmJjZjEyMWMwMDU4NGYxMmRkODY2ZWRlYWIxMC4u
Y2M5MTBmZDYzY2NmOWVlMTlhYTUxNmFmZDg0ZDY4Nzk4Y2QxYjhkMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcApAQCAtMTcy
LDYgKzE3MiwxOCBAQCB2b2lkIEpTQXJyYXlCdWZmZXJWaWV3Ojp2aXNpdENoaWxkcmVuSW1wbChK
U0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAKIERFRklORV9WSVNJVF9DSElMRFJFTihK
U0FycmF5QnVmZmVyVmlldyk7CiAKK2Jvb2wgSlNBcnJheUJ1ZmZlclZpZXc6OnB1dCgKKyAgICBK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsCisgICAgUHV0UHJvcGVydHlTbG90JiBzbG90KQor
eworICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQXJyYXlCdWZm
ZXJWaWV3Kj4oY2VsbCk7CisKKyAgICBpZiAoVU5MSUtFTFkoaXNUaGlzVmFsdWVBbHRlcmVkKHNs
b3QsIHRoaXNPYmplY3QpKSkKKyAgICAgICAgcmV0dXJuIG9yZGluYXJ5U2V0U2xvdyhnbG9iYWxP
YmplY3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QudGhpc1ZhbHVlKCks
IHNsb3QuaXNTdHJpY3RNb2RlKCkpOworICAgIAorICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09i
amVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKK30KKwogQXJy
YXlCdWZmZXIqIEpTQXJyYXlCdWZmZXJWaWV3Ojp1bnNoYXJlZEJ1ZmZlcigpCiB7CiAgICAgQXJy
YXlCdWZmZXIqIHJlc3VsdCA9IHBvc3NpYmx5U2hhcmVkQnVmZmVyKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaAppbmRleCA0YThhNGM2
NjE5ODRiNTJhYjI5MzRhNTFiYzgyNTIxZGMxY2MyNGZlLi4wY2NmNjQyMWI0NjdmOWM2MWNhZjFm
NmI0OTFmZDQ3OTliNjc5ZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5QnVmZmVyVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKQEAgLTE2OSw2ICsxNjksOCBAQCBwcm90ZWN0ZWQ6CiAg
ICAgCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNBcnJheUJ1ZmZlclZpZXcoVk0mLCBDb25zdHJ1
Y3Rpb25Db250ZXh0Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYpOworICAgIAorICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKICAgICBERUNM
QVJFX1ZJU0lUX0NISUxEUkVOOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlLmNwcAppbmRleCA1YjNiMDE2MDEyMDViYWNhNjc2YWQ2OTZkM2JiMGU3NGVl
Yzg0OGM5Li5mYmJmYTI0OGQ3MjAzZjI5MDk2OWY2YTU2MDM4YTkyNGNlMDY0NGUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcApAQCAtMjEyLDcgKzIx
Miw3IEBAIEpTT2JqZWN0KiBKU1ZhbHVlOjpzeW50aGVzaXplUHJvdG90eXBlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLS8vIGh0
dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb3JkaW5hcnlzZXQKKy8vIEVDTUEgOC43LjIKIGJv
b2wgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTIyMSwxNCAr
MjIxLDY5IEBAIGJvb2wgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5CiAgICAgaWYgKE9wdGlvbmFsPHVpbnQz
Ml90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKICAgICAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBwdXRUb1ByaW1pdGl2ZUJ5SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRl
eC52YWx1ZSgpLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSkpOwogCi0gICAgaWYgKGlzU3Ry
aW5nKCkgJiYgcHJvcGVydHlOYW1lLnVpZCgpID09IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aC5p
bXBsKCkpCi0gICAgICAgIHJldHVybiB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgc2xv
dC5pc1N0cmljdE1vZGUoKSwgUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgIC8vIENo
ZWNrIGlmIHRoZXJlIGFyZSBhbnkgc2V0dGVycyBvciBnZXR0ZXJzIGluIHRoZSBwcm90b3R5cGUg
Y2hhaW4KICAgICBKU09iamVjdCogb2JqID0gc3ludGhlc2l6ZVByb3RvdHlwZShnbG9iYWxPYmpl
Y3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhb2JqKTsK
ICAgICBpZiAoVU5MSUtFTFkoIW9iaikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIG9iai0+bWV0aG9kVGFibGUodm0pLT5wdXQob2JqLCBnbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpKTsKKyAgICBKU1ZhbHVlIHByb3Rv
dHlwZTsKKyAgICBpZiAocHJvcGVydHlOYW1lICE9IHZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2Nv
cmVQcm90bykgeworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBvYmotPnN0cnVjdHVyZSh2bSk7CisgICAgICAgICAgICBpZiAoc3RydWN0
dXJlLT5oYXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvKCkg
fHwgc3RydWN0dXJlLT50eXBlSW5mbygpLmhhc1B1dFByb3BlcnR5U2VjdXJpdHlDaGVjaygpKQor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKG9iai0+dHlwZSgpID09IFBy
b3h5T2JqZWN0VHlwZSkgeworICAgICAgICAgICAgICAgIGF1dG8qIHByb3h5ID0ganNDYXN0PFBy
b3h5T2JqZWN0Kj4ob2JqKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIHByb3h5LT5Qcm94eU9iamVjdDo6cHV0KHByb3h5LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHNsb3QpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHByb3RvdHlw
ZSA9IG9iai0+Z2V0UHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpOworICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOworCisgICAgICAgICAgICBpZiAocHJvdG90
eXBlLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgIHJldHVybiB0eXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgc2xvdC5pc1N0cmljdE1vZGUoKSwgUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJy
b3IpOworICAgICAgICAgICAgb2JqID0gYXNPYmplY3QocHJvdG90eXBlKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGZvciAoOyA7IG9iaiA9IGFzT2JqZWN0KHByb3RvdHlwZSkpIHsKKyAgICAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBvYmotPnN0cnVjdHVyZSh2bSk7CisgICAgICAgIGlm
IChVTkxJS0VMWShzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkuaGFzUHV0UHJvcGVydHlTZWN1cml0eUNo
ZWNrKCkpKSB7CisgICAgICAgICAgICBvYmotPm1ldGhvZFRhYmxlKHZtKS0+ZG9QdXRQcm9wZXJ0
eVNlY3VyaXR5Q2hlY2sob2JqLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cisg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CisgICAgICAgIH0K
KyAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zm
c2V0ID0gc3RydWN0dXJlLT5nZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7CisgICAg
ICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkgeworICAgICAgICAgICAgaWYgKGF0dHJp
YnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBzbG90LmlzU3RyaWN0TW9kZSgpLCBS
ZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisKKyAgICAgICAgICAgIEpTVmFsdWUgZ3MgPSBv
YmotPmdldERpcmVjdChvZmZzZXQpOworICAgICAgICAgICAgaWYgKGdzLmlzR2V0dGVyU2V0dGVy
KCkpCisgICAgICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjYWxsU2V0dGVy
KGdsb2JhbE9iamVjdCwgKnRoaXMsIGdzLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSA/IEVD
TUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpzbG9wcHkoKSkpOworCisgICAgICAgICAgICBp
ZiAoZ3MuaXNDdXN0b21HZXR0ZXJTZXR0ZXIoKSkgeworICAgICAgICAgICAgICAgIGF1dG8gc2V0
dGVyID0ganNDYXN0PEN1c3RvbUdldHRlclNldHRlcio+KGdzLmFzQ2VsbCgpKS0+c2V0dGVyKCk7
CisgICAgICAgICAgICAgICAgYm9vbCBpc0FjY2Vzc29yID0gYXR0cmlidXRlcyAmIFByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvcjsKKyAgICAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9
IGNhbGxDdXN0b21TZXR0ZXIoZ2xvYmFsT2JqZWN0LCBzZXR0ZXIsIGlzQWNjZXNzb3IsIG9iaiwg
c2xvdC50aGlzVmFsdWUoKSwgdmFsdWUsIHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICAgICAg
aWYgKHJlc3VsdCAhPSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkKKyAgICAgICAgICAgICAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCByZXN1bHQgPT0gVHJpU3RhdGU6OlRydWUpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBJZiB0aGVyZSdzIGFuIGV4aXN0aW5nIHBy
b3BlcnR5IG9uIHRoZSBvYmplY3Qgb3Igb25lIG9mIGl0cyAKKyAgICAgICAgICAgIC8vIHByb3Rv
dHlwZXMgaXQgc2hvdWxkIGJlIHJlcGxhY2VkLCBzbyBicmVhayBoZXJlLgorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG9iai0+dHlwZSgpID09IFByb3h5T2JqZWN0
VHlwZSkgeworICAgICAgICAgICAgYXV0byogcHJveHkgPSBqc0Nhc3Q8UHJveHlPYmplY3QqPihv
YmopOworICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBwcm94eS0+UHJveHlP
YmplY3Q6OnB1dChwcm94eSwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90
KSk7CisgICAgICAgIH0KKyAgICAgICAgcHJvdG90eXBlID0gb2JqLT5nZXRQcm90b3R5cGUodm0s
IGdsb2JhbE9iamVjdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNl
KTsKKyAgICAgICAgaWYgKHByb3RvdHlwZS5pc051bGwoKSkKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHNs
b3QuaXNTdHJpY3RNb2RlKCksIFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKIH0KIAogYm9v
bCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZUJ5SW5kZXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRo
cm93KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKaW5kZXggMTE1M2Ew
OWE5Mzg1MWY3Nzk2ODQwZDVjZDhkZjhkNjk5NGE0NTgwYi4uNmYzNWI1NzQ2Yjc4MjRhMTI0NDZh
NGMyNTFjY2FiMTZhMDZjYzg2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuY3BwCkBAIC0xOTUsNiArMTk1LDExIEBAIGJvb2wgSlNDZWxsOjpnZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgUHJvCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCit2b2lkIEpTQ2VsbDo6ZG9QdXRQcm9wZXJ0eVNlY3VyaXR5Q2hl
Y2soSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHV0UHJvcGVydHlT
bG90JikKK3sKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCiB2b2lkIEpT
Q2VsbDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lQXJyYXkmLCBEb250RW51bVByb3BlcnRpZXNNb2RlKQogewogICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5o
CmluZGV4IGFmMmE1Nzg0ODQ1NDk2NDM1NjkxZGQ5MGJlZWRhMTc2ZDJjM2U1MDMuLjMwNDRiM2Nk
YTRlYjY5MzkzNjVkNmYyNTA4NGM0NTgzMDc2OGIwNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbC5oCkBAIC0yNTYsNiArMjU2LDcgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRp
YyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwog
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBOT19SRVRVUk5fRFVF
X1RPX0NSQVNIIHZvaWQgZG9QdXRQcm9wZXJ0eVNlY3VyaXR5Q2hlY2soSlNPYmplY3QqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKIHByaXZhdGU6
CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggZTFhOTFiODQ5MzhmYWJmNDA5
NmQwNjIxNjcyZGE2YThiMjJmY2Q4Yi4uZTI3ZWMwMjM3NGFlMzIwNjVjYWVjYzIwMDY5N2YzZTFh
MjQ3OWJlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5j
cHAKQEAgLTUyMSw2ICs1MjEsMTAgQEAgYm9vbCBKU0Z1bmN0aW9uOjpwdXQoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHIKICAgICAgICAg
ICAgIHJhcmVEYXRhLT5zZXRIYXNNb2RpZmllZE5hbWVGb3JOb25Ib3N0RnVuY3Rpb24oKTsKICAg
ICB9CiAKKyAgICBpZiAoVU5MSUtFTFkoaXNUaGlzVmFsdWVBbHRlcmVkKHNsb3QsIHRoaXNPYmpl
Y3QpKSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBvcmRpbmFyeVNldFNsb3co
Z2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90LnRoaXNW
YWx1ZSgpLCBzbG90LmlzU3RyaWN0TW9kZSgpKSk7CisKKwogICAgIGlmICh0aGlzT2JqZWN0LT5p
c0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKSB7CiAgICAgICAgIFByb3BlcnR5U3RhdHVzIHByb3Bl
cnR5VHlwZSA9IHRoaXNPYmplY3QtPnJlaWZ5TGF6eVByb3BlcnR5Rm9ySG9zdE9yQnVpbHRpbklm
TmVlZGVkKHZtLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uaAppbmRleCAwZWM4MjAxYTRlNjQwNmUzNWQ5N2E4MGJiNzhjNjhlM2ZmMzIw
NjVhLi5iY2MyZTgxMGZjNmU5NjY5Mzg1ZDE4OWU1MTUxNzliMmViN2FhNGFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC03MCw3ICs3MCw3IEBAIHB1
YmxpYzoKICAgICB9CiAgICAgCiAgICAgdHlwZWRlZiBKU0NhbGxlZSBCYXNlOwotICAgIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
cyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldE93blNwZWNpYWxQ
cm9wZXJ0eU5hbWVzIHwgT3ZlcnJpZGVzR2V0Q2FsbERhdGEgfCBPdmVycmlkZXNQdXQ7CisgICAg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0T3duU3Bl
Y2lhbFByb3BlcnR5TmFtZXMgfCBPdmVycmlkZXNHZXRDYWxsRGF0YTsKIAogICAgIHN0YXRpYyBz
aXplX3QgYWxsb2NhdGlvblNpemUoQ2hlY2tlZDxzaXplX3Q+IGlubGluZUNhcGFjaXR5KQogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNU
eXBlZEFycmF5Vmlldy5oCmluZGV4IDI3MDFiNGI1NTQyYjA5ZTQzNGI4YTBkZTJhYTZmYzc1NmQ3
NTMyMzcuLmRiZTIxMWQ5NjdlYjgzNDdlNmU0NmQ0ODJjNDNmODFlMmE0YzU2NTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXcuaApAQCAtOTksNyArOTksNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgRWxlbWVudFR5cGUg
PSB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgVHlwZWRBcnJh
eUNvbnRlbnRUeXBlIGNvbnRlbnRUeXBlID0gQWRhcHRvcjo6Y29udGVudFR5cGU7CiAKLSAgICBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJl
RmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNHZXRPd25Qcm9w
ZXJ0eU5hbWVzIHwgT3ZlcnJpZGVzUHV0IHwgSW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5
SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybzsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRP
d25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eU5hbWVzIHwgSW50ZXJjZXB0
c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybzsKIAogICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oCmluZGV4IDNlNDRjM2I1MDNjNDFl
M2EyZDRiOTZkZTExNDBiYWI2NGVjZTk0NGYuLjhiZWI5ZWQzZmJmZGUwOTRiY2Q3ZjA1MzU5ZTc0
NmFkNmZiZTM3ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFz
cyBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCBmaW5hbCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZh
cmlhYmxlT2JqZWN0IHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNTZWdtZW50ZWRWYXJp
YWJsZU9iamVjdDsKIAotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8
IE92ZXJyaWRlc1B1dDsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4K
ICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAwYTYxNjcx
M2U2ZGM2Y2Q1ZWE3OThlZWM0NmQxYTU0NmM3YWUzMmE4Li5kNjExZDQ5ZGRkMTkzMTM3ZDY0NzNl
NDE1ZDc2N2QyNGNlNWFiOGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0xNDc4LDE1ICsxNDc4LDggQEAgYm9vbCBKU0dsb2Jh
bE9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UHJvcGVydHlOYW0KICAgICBKU0dsb2JhbE9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0ds
b2JhbE9iamVjdCo+KGNlbGwpOwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVh
cDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzT2JqZWN0KSk7CiAKLSAgICBpZiAoVU5M
SUtFTFkoaXNUaGlzVmFsdWVBbHRlcmVkKHNsb3QsIHRoaXNPYmplY3QpKSkgewotICAgICAgICBT
eW1ib2xUYWJsZUVudHJ5OjpGYXN0IGVudHJ5ID0gdGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+
Z2V0KHByb3BlcnR5TmFtZS51aWQoKSk7Ci0gICAgICAgIGlmICghZW50cnkuaXNOdWxsKCkpIHsK
LSAgICAgICAgICAgIGlmIChlbnRyeS5pc1JlYWRPbmx5KCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBzbG90LmlzU3RyaWN0TW9kZSgpLCBS
ZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7Ci0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTT2JqZWN0OjpkZWZpbmVQcm9wZXJ0eU9uUmVjZWl2ZXIoZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSk7Ci0gICAgICAgIH0KLSAgICAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpwdXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSk7Ci0gICAgfQorICAgIGlmIChVTkxJS0VMWShpc1Ro
aXNWYWx1ZUFsdGVyZWQoc2xvdCwgdGhpc09iamVjdCkpKQorICAgICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIG9yZGluYXJ5U2V0U2xvdyhnbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QudGhpc1ZhbHVlKCksIHNsb3QuaXNTdHJpY3RNb2RlKCkp
KTsKIAogICAgIGJvb2wgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yID0gc2xvdC5pc1N0cmljdE1v
ZGUoKTsKICAgICBib29sIGlnbm9yZVJlYWRPbmx5RXJyb3JzID0gZmFsc2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBlMmUzNWVkZTg5
Y2Y0NGY0M2QwZGVjMTBjYjhlOTY0ZTE0NDE0ZTI1Li42NDhhMzBiYjNlMjc4MzMwMDU0YWIxYjRk
MTAyOThhN2Q0M2NjZDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKQEAgLTU5Niw3ICs1OTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogcHVi
bGljOgogICAgIHVzaW5nIEJhc2UgPSBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0OwotICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVG
bGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGUgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNs
b3QgfCBPdmVycmlkZXNQdXQgfCBJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdDsKKyAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0
dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVy
dHlTbG90IHwgSXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3Q7CiAKICAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAppbmRleCAyZmU3MmJi
Y2EwNWVkZGQ1N2VhMWM1OWNjNDYwZDJiMGM5NTQ1YzlkLi45MDEyM2EyZThlNDI5ZDZiZmFiZjk2
NWU3ZThmYWIyMzI4ZTNmNTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgog
ICAgIH0KIAogICAgIHVzaW5nIEJhc2UgPSBKU1N5bWJvbFRhYmxlT2JqZWN0OwotICAgIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
cyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldE93blNwZWNpYWxQ
cm9wZXJ0eU5hbWVzIHwgT3ZlcnJpZGVzUHV0OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93
blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldE93blNwZWNpYWxQcm9wZXJ0eU5hbWVzOwogCiAg
ICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogdmFyaWFibGVzKCkKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmgKaW5k
ZXggZGUwNGU2MjllM2E2MTAyYzllNjUwNmQxMGE0NDBlMjhhYzk2NzRlMC4uNmQ3MTdiZjhkNmFl
ZTViNGQwZjgxYmFiNTJjMjQyZTFkOGVlZjdkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaApAQCAtNDAsNyArNDAsNyBAQCBj
bGFzcyBKU01vZHVsZUVudmlyb25tZW50IGZpbmFsIDogcHVibGljIEpTTGV4aWNhbEVudmlyb25t
ZW50IHsKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogcHVibGljOgog
ICAgIHVzaW5nIEJhc2UgPSBKU0xleGljYWxFbnZpcm9ubWVudDsKLSAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNHZXRPd25TcGVjaWFsUHJvcGVydHlO
YW1lcyB8IE92ZXJyaWRlc1B1dDsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0
eVNsb3QgfCBPdmVycmlkZXNHZXRPd25TcGVjaWFsUHJvcGVydHlOYW1lczsKIAogICAgIHN0YXRp
YyBKU01vZHVsZUVudmlyb25tZW50KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1Njb3BlKiBjdXJyZW50U2NvcGUsIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJs
ZSwgSlNWYWx1ZSBpbml0aWFsVmFsdWUsIEFic3RyYWN0TW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNv
cmQpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNN
b2R1bGVOYW1lc3BhY2VPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgKaW5kZXggOGZlZTg2MDE1ZTM1MDkzMWQyMzcxOGQ4NzVk
MmE3NzBlZTY5OGQ3YS4uZDkzZjlhNTMwMmZkMDM0ZjY1ZjdmMjZiODFjYzgzMTk1ZjljMGY1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3Bh
Y2VPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5h
bWVzcGFjZU9iamVjdC5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3Mg
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
IHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlO
YW1lcyB8IE92ZXJyaWRlc1B1dCB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclBy
b3BlcnR5QWJzZW5jZSB8IElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0OworICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVG
bGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldE93blByb3Bl
cnR5TmFtZXMgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVu
Z3RoSXNOb3RaZXJvIHwgR2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmVGb3JQcm9wZXJ0eUFic2Vu
Y2UgfCBJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdDsKIAogICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKICAgICBzdGF0aWMgdm9pZCBkZXN0
cm95KEpTQ2VsbCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3Bw
CmluZGV4IDk5NzdiYTcxZmU2OTFhMzY1MGRjODAwZWI1ZTQxYTRhNDY1MjMzZjcuLjNkNjNiM2Rl
MzM1OTY2N2ViYjk0OWI3ZjU2MTMwZWViNGI5YmRkMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAgLTY0Niw2ICs2NDYsMTAgQEAgYm9vbCBKU09iamVj
dDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QKIHsKICAgICByZXR1cm4gZ2V0T3duUHJvcGVydHlTbG90SW1wbChvYmplY3Qs
IGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KKwordm9pZCBKU09iamVjdDo6
ZG9QdXRQcm9wZXJ0eVNlY3VyaXR5Q2hlY2soSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSwgUHV0UHJvcGVydHlTbG90JikKK3sKK30KICNlbmRpZiAvLyBBU1NFUlRfRU5B
QkxFRAogCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vcmRpbmFyeXNl
dApAQCAtNzU0LDcgKzc1OCw3IEBAIGJvb2wgb3JkaW5hcnlTZXRTbG93KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvYmplY3QsIFByb3BlcnR5TmFtCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLS8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb3JkaW5hcnlzZXQK
Ky8vIEVDTUEgOC42LjIuMgogYm9vbCBKU09iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIHJldHVybiBwdXRJbmxpbmVG
b3JKU09iamVjdChjZWxsLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3Qp
OwpAQCAtNzYyLDk2ICs3NjYsNjkgQEAgYm9vbCBKU09iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3AKIAogYm9vbCBK
U09iamVjdDo6cHV0SW5saW5lU2xvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNs
b3QpCiB7Ci0gICAgQVNTRVJUKCFwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpOworICAgIEFTU0VS
VCghaXNUaGlzVmFsdWVBbHRlcmVkKHNsb3QsIHRoaXMpKTsKIAogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKLSAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAg
ICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci0KICAgICBKU09iamVjdCogb2JqID0gdGhpczsKICAgICBm
b3IgKDs7KSB7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gb2JqLT5zdHJ1Y3R1cmUo
dm0pOwotICAgICAgICBpZiAob2JqICE9IHRoaXMgJiYgc3RydWN0dXJlLT50eXBlSW5mbygpLm92
ZXJyaWRlc1B1dCgpKQotICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBvYmot
Pm1ldGhvZFRhYmxlKHZtKS0+cHV0KG9iaiwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzbG90KSk7Ci0KLSAgICAgICAgYm9vbCBoYXNQcm9wZXJ0eSA9IGZhbHNlOworICAgICAg
ICBpZiAoVU5MSUtFTFkoc3RydWN0dXJlLT50eXBlSW5mbygpLmhhc1B1dFByb3BlcnR5U2VjdXJp
dHlDaGVjaygpKSkgeworICAgICAgICAgICAgb2JqLT5tZXRob2RUYWJsZSh2bSktPmRvUHV0UHJv
cGVydHlTZWN1cml0eUNoZWNrKG9iaiwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOworICAgICAg
ICB9CiAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7Ci0gICAgICAgIFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jIGN1c3RvbVNldHRlciA9IG51bGxwdHI7CiAgICAgICAgIFByb3BlcnR5
T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0
ZXMpOwogICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChvZmZzZXQpKSB7Ci0gICAgICAgICAgICBo
YXNQcm9wZXJ0eSA9IHRydWU7Ci0gICAgICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvck9yVmFsdWUpCi0gICAgICAgICAgICAgICAgY3VzdG9t
U2V0dGVyID0ganNDYXN0PEN1c3RvbUdldHRlclNldHRlcio+KG9iai0+Z2V0RGlyZWN0KG9mZnNl
dCkpLT5zZXR0ZXIoKTsKLSAgICAgICAgfSBlbHNlIGlmIChzdHJ1Y3R1cmUtPmhhc05vblJlaWZp
ZWRTdGF0aWNQcm9wZXJ0aWVzKCkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIGVudHJ5ID0gc3Ry
dWN0dXJlLT5maW5kUHJvcGVydHlIYXNoRW50cnkocHJvcGVydHlOYW1lKSkgewotICAgICAgICAg
ICAgICAgIGhhc1Byb3BlcnR5ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzID0g
ZW50cnktPnZhbHVlLT5hdHRyaWJ1dGVzKCk7Ci0KLSAgICAgICAgICAgICAgICAvLyBGSVhNRTog
UmVtb3ZlIHRoaXMgYWZ0ZXIgd3JpdGFibGUgYWNjZXNzb3JzIGFyZSBpbnRyb2R1Y2VkIHRvIHN0
YXRpYyBoYXNoIHRhYmxlcy4KLSAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFByb3Bl
cnR5QXR0cmlidXRlOjpBY2Nlc3NvcikKLSAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcyB8
PSBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHk7Ci0gICAgICAgICAgICAgICAgLy8gRklYTUU6
IFJlbW92ZSB0aGlzIGFmdGVyIHdlIHN0b3AgZGVmYXVsdGluZyB0byBDdXN0b21WYWx1ZSBpbiBz
dGF0aWMgaGFzaCB0YWJsZXMuCi0gICAgICAgICAgICAgICAgaWYgKCEoYXR0cmlidXRlcyAmIChQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QnVp
bHRpbk9yRnVuY3Rpb25PckFjY2Vzc29yT3JMYXp5UHJvcGVydHlPckNvbnN0YW50KSkpCi0gICAg
ICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgfD0gUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbVZh
bHVlOwotCi0gICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3JPclZhbHVlKQotICAgICAgICAgICAgICAgICAgICBjdXN0b21TZXR0
ZXIgPSBlbnRyeS0+dmFsdWUtPnByb3BlcnR5UHV0dGVyKCk7CisgICAgICAgICAgICBpZiAoYXR0
cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkgeworICAgICAgICAgICAgICAg
IEFTU0VSVCh0aGlzLT5wcm90b3R5cGVDaGFpbk1heUludGVyY2VwdFN0b3JlVG8odm0sIHByb3Bl
cnR5TmFtZSkgfHwgb2JqID09IHRoaXMpOworICAgICAgICAgICAgICAgIHJldHVybiB0eXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgc2xvdC5pc1N0cmljdE1vZGUoKSwgUmVhZG9ubHlQcm9w
ZXJ0eVdyaXRlRXJyb3IpOwogICAgICAgICAgICAgfQotICAgICAgICB9CiAKLSAgICAgICAgaWYg
KGhhc1Byb3BlcnR5KSB7Ci0gICAgICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsIHNsb3QuaXNTdHJpY3RNb2RlKCksIFJlYWRvbmx5UHJvcGVydHlXcml0
ZUVycm9yKTsKLSAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6
OkFjY2Vzc29yKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGlzVmFsaWRPZmZzZXQob2Zmc2V0
KSk7CisgICAgICAgICAgICBKU1ZhbHVlIGdzID0gb2JqLT5nZXREaXJlY3Qob2Zmc2V0KTsKKyAg
ICAgICAgICAgIGlmIChncy5pc0dldHRlclNldHRlcigpKSB7CiAgICAgICAgICAgICAgICAgLy8g
V2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB3ZSBkZWNpZGUgdG8gY2FjaGUgdGhpcyBwcm9wZXJ0
eSBiZWZvcmUgd2UgcG90ZW50aWFsbHkgZXhlY3V0ZSBhcmliaXRyYXJ5IEpTLgogICAgICAgICAg
ICAgICAgIGlmICghdGhpcy0+c3RydWN0dXJlKHZtKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnko
KSkKICAgICAgICAgICAgICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVTZXR0ZXIob2JqLCBvZmZz
ZXQpOwotICAgICAgICAgICAgICAgIEpTVmFsdWUgZ3MgPSBvYmotPmdldERpcmVjdChvZmZzZXQp
OwotICAgICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY2FsbFNldHRlcihn
bG9iYWxPYmplY3QsIHNsb3QudGhpc1ZhbHVlKCksIGdzLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1v
ZGUoKSA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpzbG9wcHkoKSkpOworCisgICAg
ICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBjYWxsU2V0dGVyKGdsb2JhbE9iamVjdCwgc2xvdC50
aGlzVmFsdWUoKSwgZ3MsIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpID8gRUNNQU1vZGU6OnN0
cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgpKTsKKyAgICAgICAgICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yKSB7Ci0gICAgICAgICAgICAgICAgLy8gRklYTUU6IFJlbW92
ZSB0aGlzIGFmdGVyIFdlYklETCBnZW5lcmF0b3IgaXMgZml4ZWQgdG8gc2V0IFJlYWRPbmx5IGZv
ciBbUnVudGltZUNvbmRpdGlvbmFsbHlSZWFkV3JpdGVdIGF0dHJpYnV0ZXMuCi0gICAgICAgICAg
ICAgICAgaWYgKCFjdXN0b21TZXR0ZXIpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgICAgICBBU1NFUlQoY3VzdG9tU2V0dGVyKTsKKyAgICAgICAgICAgIGlm
IChncy5pc0N1c3RvbUdldHRlclNldHRlcigpKSB7CisgICAgICAgICAgICAgICAgYm9vbCBpc0Fj
Y2Vzc29yID0gYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvcjsK
KyAgICAgICAgICAgICAgICBhdXRvIHNldHRlciA9IGpzQ2FzdDxDdXN0b21HZXR0ZXJTZXR0ZXIq
Pihncy5hc0NlbGwoKSktPnNldHRlcigpOwogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgb25seSBiZSBjYWNoaW5nIHRoZXNlIGlmIHdlJ3JlIG5vdCBhbiB1bmNhY2hlYWJsZSBk
aWN0aW9uYXJ5OgogICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTUzNDcKLSAgICAgICAgICAgICAgICBzbG90LnNldEN1c3RvbUFjY2Vz
c29yKG9iaiwgY3VzdG9tU2V0dGVyKTsKLSAgICAgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7
Ci0gICAgICAgICAgICAgICAgY3VzdG9tU2V0dGVyKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZW5j
b2RlKHNsb3QudGhpc1ZhbHVlKCkpLCBKU1ZhbHVlOjplbmNvZGUodmFsdWUpLCBwcm9wZXJ0eU5h
bWUpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tVmFsdWUpIHsK
LSAgICAgICAgICAgICAgICAvLyBGSVhNRTogT25jZSBsZWdhY3kgUmVnRXhwIGZlYXR1cmVzIGFy
ZSBpbXBsZW1lbnRlZCwgdGhlcmUgd291bGQgYmUgbm8gdXNlIGNhc2UgZm9yIGNhbGxpbmcgQ3Vz
dG9tVmFsdWUgc2V0dGVyIGlmIHJlY2VpdmVyIGlzIGFsdGVyZWQuCi0gICAgICAgICAgICAgICAg
aWYgKGN1c3RvbVNldHRlciAmJiAhKGlzVGhpc1ZhbHVlQWx0ZXJlZChzbG90LCBvYmopICYmIHNs
b3QuY29udGV4dCgpID09IFB1dFByb3BlcnR5U2xvdDo6UmVmbGVjdFNldCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBvbmx5IGJlIGNhY2hpbmcgdGhlc2UgaWYg
d2UncmUgbm90IGFuIHVuY2FjaGVhYmxlIGRpY3Rpb25hcnk6Ci0gICAgICAgICAgICAgICAgICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUzNDcKLSAgICAg
ICAgICAgICAgICAgICAgc2xvdC5zZXRDdXN0b21WYWx1ZShvYmosIGN1c3RvbVNldHRlcik7Ci0g
ICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY3VzdG9tU2V0dGVy
KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZW5jb2RlKG9iaiksIEpTVmFsdWU6OmVuY29kZSh2YWx1
ZSksIHByb3BlcnR5TmFtZSkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBp
ZiAoIWlzVGhpc1ZhbHVlQWx0ZXJlZChzbG90LCBvYmopKSB7Ci0gICAgICAgICAgICAgICAgICAg
IC8vIEF2b2lkIFB1dE1vZGVQdXQgYmVjYXVzZSBpdCBmYWlscyBmb3Igbm9uLWV4dGVuc2libGUg
c3RydWN0dXJlcy4KLSAgICAgICAgICAgICAgICAgICAgb2JqLT5wdXREaXJlY3Qodm0sIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoYXR0cmlidXRlcykgJiB+UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbVZhbHVlLCBzbG90KTsKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgaWYgKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QnVpbHRpbk9yRnVuY3Rpb25P
ckxhenlQcm9wZXJ0eSkgewotICAgICAgICAgICAgICAgIGlmICghaXNUaGlzVmFsdWVBbHRlcmVk
KHNsb3QsIG9iaikpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gQXZvaWQgUHV0TW9kZVB1dCBi
ZWNhdXNlIGl0IGZhaWxzIGZvciBub24tZXh0ZW5zaWJsZSBzdHJ1Y3R1cmVzLgotICAgICAgICAg
ICAgICAgICAgICBvYmotPnB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmli
dXRlc0ZvclN0cnVjdHVyZShhdHRyaWJ1dGVzKSwgc2xvdCk7Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFdl
IG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgd2UgZGVjaWRlIHRvIGNhY2hlIHRoaXMgcHJvcGVydHkg
YmVmb3JlIHdlIHBvdGVudGlhbGx5IGV4ZWN1dGUgYXJpYml0cmFyeSBKUy4KKyAgICAgICAgICAg
ICAgICBpZiAoaXNBY2Nlc3NvcikKKyAgICAgICAgICAgICAgICAgICAgc2xvdC5zZXRDdXN0b21B
Y2Nlc3NvcihvYmosIHNldHRlcik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICBzbG90LnNldEN1c3RvbVZhbHVlKG9iaiwgc2V0dGVyKTsKKworICAgICAgICAgICAg
ICAgIGF1dG8gcmVzdWx0ID0gY2FsbEN1c3RvbVNldHRlcihnbG9iYWxPYmplY3QsIHNldHRlciwg
aXNBY2Nlc3Nvciwgb2JqLCBzbG90LnRoaXNWYWx1ZSgpLCB2YWx1ZSwgcHJvcGVydHlOYW1lKTsK
KyAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CisgICAg
ICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCA9PSBUcmlTdGF0ZTo6VHJ1ZTsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIC8vIElmIHRoZXJlJ3MgYW4gZXhpc3Rpbmcgd3JpdGFibGUgcHJv
cGVydHkgb24gdGhlIGJhc2Ugb2JqZWN0LCBvciBvbiBvbmUgb2YgaXRzIAotICAgICAgICAgICAg
Ly8gcHJvdG90eXBlcywgd2Ugc2hvdWxkIGF0dGVtcHQgdG8gc3RvcmUgdGhlIHByb3BlcnR5IG9u
IHRoZSByZWNlaXZlci4KKyAgICAgICAgICAgIEFTU0VSVCghKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0
eUF0dHJpYnV0ZTo6QWNjZXNzb3IpKTsKKworICAgICAgICAgICAgLy8gSWYgdGhlcmUncyBhbiBl
eGlzdGluZyBwcm9wZXJ0eSBvbiB0aGUgYmFzZSBvYmplY3QsIG9yIG9uIG9uZSBvZiBpdHMgCisg
ICAgICAgICAgICAvLyBwcm90b3R5cGVzLCB3ZSBzaG91bGQgc3RvcmUgdGhlIHByb3BlcnR5IG9u
IHRoZSAqYmFzZSogb2JqZWN0LgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLQorICAg
ICAgICBpZiAoIW9iai0+c3RhdGljUHJvcGVydGllc1JlaWZpZWQodm0pKSB7CisgICAgICAgICAg
ICBpZiAob2JqLT5jbGFzc0luZm8odm0pLT5oYXNTdGF0aWNTZXR0ZXJPclJlYWRvbmx5UHJvcGVy
dGllcygpKSB7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8gZW50cnkgPSBvYmotPmZpbmRQcm9w
ZXJ0eUhhc2hFbnRyeSh2bSwgcHJvcGVydHlOYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBwdXRFbnRyeShnbG9iYWxPYmplY3QsIGVudHJ5LT50YWJs
ZS0+Y2xhc3NGb3JUaGlzLCBlbnRyeS0+dmFsdWUsIG9iaiwgdGhpcywgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgc2xvdCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChvYmot
PnR5cGUoKSA9PSBQcm94eU9iamVjdFR5cGUpIHsKKyAgICAgICAgICAgIGF1dG8qIHByb3h5ID0g
anNDYXN0PFByb3h5T2JqZWN0Kj4ob2JqKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgcHJveHktPlByb3h5T2JqZWN0OjpwdXQocHJveHksIGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpOworICAgICAgICB9CiAgICAgICAgIEpTVmFsdWUgcHJv
dG90eXBlID0gb2JqLT5nZXRQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgaWYgKHByb3RvdHlwZS5p
c051bGwoKSkKQEAgLTg1OSw4MCArODM2LDkgQEAgYm9vbCBKU09iamVjdDo6cHV0SW5saW5lU2xv
dyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHkKICAg
ICAgICAgb2JqID0gYXNPYmplY3QocHJvdG90eXBlKTsKICAgICB9CiAKLSAgICBzY29wZS5yZWxl
YXNlKCk7Ci0gICAgaWYgKFVOTElLRUxZKGlzVGhpc1ZhbHVlQWx0ZXJlZChzbG90LCB0aGlzKSkp
Ci0gICAgICAgIHJldHVybiBkZWZpbmVQcm9wZXJ0eU9uUmVjZWl2ZXIoZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKLSAgICByZXR1cm4gcHV0SW5saW5lRmFzdChnbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwotfQotCi1zdGF0aWMgTkVWRVJf
SU5MSU5FIGJvb2wgZGVmaW5lUHJvcGVydHlPblJlY2VpdmVyU2xvdyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBK
U09iamVjdCogcmVjZWl2ZXIsIGJvb2wgc2hvdWxkVGhyb3cpCi17Ci0gICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKLQotICAgIFByb3BlcnR5U2xvdCBzbG90KHJlY2VpdmVyLCBQcm9wZXJ0eVNsb3Q6OkludGVy
bmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkpOwotICAgIGJvb2wgaGFzUHJvcGVydHkgPSBy
ZWNlaXZlci0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eVNsb3QocmVjZWl2ZXIsIGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBmYWxzZSk7Ci0KLSAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKLSAg
ICBpZiAoaGFzUHJvcGVydHkpIHsKLSAgICAgICAgLy8gRklYTUU6IEZvciBhbiBhY2Nlc3NvciB3
aXRoIHNldHRlciwgdGhlIGVycm9yIG1lc3NhZ2UgaXMgbWlzbGVhZGluZy4KLSAgICAgICAgaWYg
KHNsb3QuYXR0cmlidXRlcygpICYgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5T3JBY2Nlc3Nv
ck9yQ3VzdG9tQWNjZXNzb3IpCi0gICAgICAgICAgICByZXR1cm4gdHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsIHNob3VsZFRocm93LCBSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7Ci0g
ICAgICAgIGRlc2NyaXB0b3Iuc2V0VmFsdWUodmFsdWUpOwotICAgIH0gZWxzZQotICAgICAgICBk
ZXNjcmlwdG9yLnNldERlc2NyaXB0b3IodmFsdWUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Tm9uZSkpOwotCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBy
ZWNlaXZlci0+bWV0aG9kVGFibGUodm0pLT5kZWZpbmVPd25Qcm9wZXJ0eShyZWNlaXZlciwgZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KSk7Ci19Ci0K
LS8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb3JkaW5hcnlzZXQgKHN0ZXAgMykKLWJv
b2wgSlNPYmplY3Q6OmRlZmluZVByb3BlcnR5T25SZWNlaXZlcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmIHNsb3QpCi17Ci0gICAgQVNTRVJUKCFwYXJzZUluZGV4KHByb3BlcnR5TmFt
ZSkpOwotCi0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIEpTT2JqZWN0KiByZWNlaXZlciA9IHNs
b3QudGhpc1ZhbHVlKCkuZ2V0T2JqZWN0KCk7Ci0gICAgLy8gRklYTUU6IEZvciBhIGZhaWx1cmUg
ZHVlIHRvIHByaW1pdGl2ZSByZWNlaXZlciwgdGhlIGVycm9yIG1lc3NhZ2UgaXMgbWlzbGVhZGlu
Zy4KLSAgICBpZiAoIXJlY2VpdmVyKQorICAgIGlmICghcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9k
ZVB1dD4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QpKQogICAgICAgICByZXR1cm4g
dHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHNsb3QuaXNTdHJpY3RNb2RlKCksIFJlYWRv
bmx5UHJvcGVydHlXcml0ZUVycm9yKTsKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0KLSAgICBpZiAo
c2xvdC5pc1RhaW50ZWRCeU9wYXF1ZU9iamVjdCgpIHx8IHNsb3QuY29udGV4dCgpID09IFB1dFBy
b3BlcnR5U2xvdDo6UmVmbGVjdFNldCkgewotICAgICAgICBpZiAocmVjZWl2ZXItPm1ldGhvZFRh
YmxlKHZtKS0+ZGVmaW5lT3duUHJvcGVydHkgIT0gSlNPYmplY3Q6OmRlZmluZU93blByb3BlcnR5
KQotICAgICAgICAgICAgcmV0dXJuIGRlZmluZVByb3BlcnR5T25SZWNlaXZlclNsb3coZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCByZWNlaXZlciwgc2xvdC5pc1N0cmljdE1vZGUo
KSk7Ci0gICAgfQotCi0gICAgaWYgKFVOTElLRUxZKHJlY2VpdmVyLT5oYXNOb25SZWlmaWVkU3Rh
dGljUHJvcGVydGllcyh2bSkpKQotICAgICAgICByZXR1cm4gcmVjZWl2ZXItPnB1dElubGluZUZh
c3RSZXBsYWNpbmdTdGF0aWNQcm9wZXJ0eUlmTmVlZGVkKGdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2xvdCk7Ci0gICAgcmV0dXJuIHJlY2VpdmVyLT5wdXRJbmxpbmVGYXN0KGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Ci19Ci0KLWJvb2wgSlNPYmpl
Y3Q6OnB1dElubGluZUZhc3RSZXBsYWNpbmdTdGF0aWNQcm9wZXJ0eUlmTmVlZGVkKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKLXsKLSAgICBBU1NFUlQoIXBhcnNlSW5kZXgo
cHJvcGVydHlOYW1lKSk7Ci0KLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotCi0gICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmhh
c05vblJlaWZpZWRTdGF0aWNQcm9wZXJ0aWVzKCkpOwotICAgIGlmICghaXNWYWxpZE9mZnNldChz
dHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlOYW1lKSkpIHsKLSAgICAgICAgaWYgKGF1dG8gZW50
cnkgPSBzdHJ1Y3R1cmUtPmZpbmRQcm9wZXJ0eUhhc2hFbnRyeShwcm9wZXJ0eU5hbWUpKSB7Ci0g
ICAgICAgICAgICBpZiAoZW50cnktPnZhbHVlLT5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHlPckFjY2Vzc29yT3JDdXN0b21BY2Nlc3NvcikgewotICAgICAgICAgICAg
ICAgIEFTU0VSVChzbG90LmNvbnRleHQoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6OlJlZmxlY3RTZXQp
OwotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBGb3IgYW4gYWNjZXNzb3Igd2l0aCBzZXR0ZXIs
IHRoZSBlcnJvciBtZXNzYWdlIGlzIG1pc2xlYWRpbmcuCi0gICAgICAgICAgICAgICAgcmV0dXJu
IHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBzbG90LmlzU3RyaWN0TW9kZSgpLCBSZWFk
b25seVByb3BlcnR5V3JpdGVFcnJvcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBB
dm9pZCBQdXRNb2RlUHV0IGJlY2F1c2UgaXQgZmFpbHMgZm9yIG5vbi1leHRlbnNpYmxlIHN0cnVj
dHVyZXMuCi0gICAgICAgICAgICBwdXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0
dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoZW50cnktPnZhbHVlLT5hdHRyaWJ1dGVzKCkpICYgflByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21WYWx1ZSwgc2xvdCk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcHV0
SW5saW5lRmFzdChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBKU09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNl
bGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKQEAgLTM5NDEsNiArMzg0NywzMCBAQCBi
b29sIEpTT2JqZWN0OjphbnlPYmplY3RJbkNoYWluTWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2Vz
KFZNJiB2bSkgY29uc3QKICAgICB9CiB9CiAKK2Jvb2wgSlNPYmplY3Q6OnByb3RvdHlwZUNoYWlu
TWF5SW50ZXJjZXB0U3RvcmVUbyhWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCit7
CisgICAgaWYgKHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKKyAgICAgICAgcmV0dXJuIGFueU9i
amVjdEluQ2hhaW5NYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXModm0pOworICAgIAorICAgIGZv
ciAoSlNPYmplY3QqIGN1cnJlbnQgPSB0aGlzOyA7KSB7CisgICAgICAgIEpTVmFsdWUgcHJvdG90
eXBlID0gY3VycmVudC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKKyAgICAgICAgaWYgKHByb3Rv
dHlwZS5pc051bGwoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAg
ICAgIGN1cnJlbnQgPSBhc09iamVjdChwcm90b3R5cGUpOworICAgICAgICAKKyAgICAgICAgdW5z
aWduZWQgYXR0cmlidXRlczsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gY3VycmVu
dC0+c3RydWN0dXJlKHZtKS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOworICAg
ICAgICBpZiAoIUpTQzo6aXNWYWxpZE9mZnNldChvZmZzZXQpKQorICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIAorICAgICAgICBpZiAoYXR0cmlidXRlcyAmIChQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpKQorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIAorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQor
CiBib29sIEpTT2JqZWN0OjpuZWVkc1Nsb3dQdXRJbmRleGluZyhWTSYgdm0pIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGFueU9iamVjdEluQ2hhaW5NYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXModm0p
IHx8IGdsb2JhbE9iamVjdCh2bSktPmlzSGF2aW5nQUJhZFRpbWUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IDczMWY0NGRjZmQ0MzQwZDQxMzkwNmZlY2Y3
ZTU2YThhNDgzMGMyNzEuLjc2MzliZjU2Y2YzMzVkYTcyMGYzZDgzM2Y1ZTBkMTliN2JmM2ZkYTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtMTcxLDYgKzE3
MSw3IEBAIHB1YmxpYzoKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3RJbmxpbmUoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFX0lGX0FTU0VSVF9FTkFCTEVEIHN0YXRpYyB2b2lkIGRvUHV0
UHJvcGVydHlTZWN1cml0eUNoZWNrKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCiAgICAgLy8gVGhlIGtleSBkaWZmZXJlbmNlIGJl
dHdlZW4gdGhpcyBhbmQgZ2V0T3duUHJvcGVydHlTbG90IGlzIHRoYXQgZ2V0T3duUHJvcGVydHlT
bG90CiAgICAgLy8gY3VycmVudGx5IHJldHVybnMgaW5jb3JyZWN0IHJlc3VsdHMgZm9yIHRoZSBE
T00gd2luZG93ICh3aXRoIG5vbi1vd24gcHJvcGVydGllcykKQEAgLTIwMSw3ICsyMDIsNiBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIGJvb2wgcHV0SW5saW5lRm9ySlNPYmplY3QoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwog
ICAgIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0g
ICAgSlNfRVhQT1JUX1BSSVZBVEUgTkVWRVJfSU5MSU5FIHN0YXRpYyBib29sIGRlZmluZVByb3Bl
cnR5T25SZWNlaXZlcihKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7CiAgICAgLy8gcHV0QnlJbmRleCBhc3N1bWVzIHRoYXQgdGhlIHJlY2Vp
dmVyIGlzIHRoaXMgSlNDZWxsIG9iamVjdC4KICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
Ym9vbCBwdXRCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKICAgICAgICAgCkBAIC0yMTgsMTMg
KzIxOCwxMiBAQCBwdWJsaWM6CiAKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcHV0QnlJbmRleElu
bGluZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1aW50NjRfdCBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiAgICAgewotICAgICAgICBWTSYgdm0g
PSBnZXRWTShnbG9iYWxPYmplY3QpOwogICAgICAgICBpZiAoTElLRUxZKHByb3BlcnR5TmFtZSA8
PSBNQVhfQVJSQVlfSU5ERVgpKQogICAgICAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXhJbmxpbmUo
Z2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4ocHJvcGVydHlOYW1lKSwgdmFsdWUs
IHNob3VsZFRocm93KTsKIAogICAgICAgICBBU1NFUlQocHJvcGVydHlOYW1lIDw9IG1heFNhZmVJ
bnRlZ2VyKCkpOwogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzLCBzaG91bGRUaHJv
dyk7Ci0gICAgICAgIHJldHVybiBtZXRob2RUYWJsZSh2bSktPnB1dCh0aGlzLCBnbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXI6OmZyb20odm0sIHByb3BlcnR5TmFtZSksIHZhbHVlLCBzbG90KTsKKyAg
ICAgICAgcmV0dXJuIHB1dElubGluZUZvckpTT2JqZWN0KHRoaXMsIGdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbShnZXRWTShnbG9iYWxPYmplY3QpLCBwcm9wZXJ0eU5hbWUpLCB2YWx1ZSwg
c2xvdCk7CiAgICAgfQogICAgICAgICAKICAgICAvLyBUaGlzIGlzIHNpbWlsYXIgdG8gdGhlIHB1
dERpcmVjdCogbWV0aG9kczoKQEAgLTY0Myw3ICs2NDIsNiBAQCBwdWJsaWM6CiAgICAgLy8gIC0g
YXR0cmlidXRlcyB3aWxsIGJlIHJlc3BlY3RlZCAoYWZ0ZXIgdGhlIGNhbGwgdGhlIHByb3BlcnR5
IHdpbGwgZXhpc3Qgd2l0aCB0aGUgZ2l2ZW4gYXR0cmlidXRlcykKICAgICAvLyAgLSB0aGUgcHJv
cGVydHkgbmFtZSBpcyBhc3N1bWVkIHRvIG5vdCBiZSBhbiBpbmRleC4KICAgICBib29sIHB1dERp
cmVjdChWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyA9IDAp
OwotICAgIGJvb2wgcHV0RGlyZWN0KFZNJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBib29sIHB1dERpcmVjdChWTSYs
IFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgdm9pZCBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbihWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcyA9IDApOwogICAgIGJvb2wgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcihW
TSYsIFByb3BlcnR5TmFtZSwgR2V0dGVyU2V0dGVyKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CkBA
IC03NzAsMTEgKzc2OCw2IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0dldHRlclNldHRlclByb3Bl
cnRpZXMoVk0mIHZtKSB7IHJldHVybiBzdHJ1Y3R1cmUodm0pLT5oYXNHZXR0ZXJTZXR0ZXJQcm9w
ZXJ0aWVzKCk7IH0KICAgICBib29sIGhhc0N1c3RvbUdldHRlclNldHRlclByb3BlcnRpZXMoVk0m
IHZtKSB7IHJldHVybiBzdHJ1Y3R1cmUodm0pLT5oYXNDdXN0b21HZXR0ZXJTZXR0ZXJQcm9wZXJ0
aWVzKCk7IH0KIAotICAgIGJvb2wgaGFzTm9uUmVpZmllZFN0YXRpY1Byb3BlcnRpZXMoVk0mIHZt
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIFR5cGVJbmZvOjpoYXNTdGF0aWNQcm9wZXJ0eVRhYmxl
KGlubGluZVR5cGVGbGFncygpKSAmJiAhc3RydWN0dXJlKHZtKS0+c3RhdGljUHJvcGVydGllc1Jl
aWZpZWQoKTsKLSAgICB9Ci0KICAgICAvLyBwdXRPd25EYXRhUHJvcGVydHkgaGFzICdwdXQnIGxp
a2Ugc2VtYW50aWNzLCBob3dldmVyIHRoaXMgbWV0aG9kOgogICAgIC8vICAtIGFzc3VtZXMgdGhl
IG9iamVjdCBjb250YWlucyBubyBvd24gZ2V0dGVyL3NldHRlciBwcm9wZXJ0aWVzLgogICAgIC8v
ICAtIHByb3ZpZGVzIG5vIHNwZWNpYWwgaGFuZGxpbmcgZm9yIF9fcHJvdG9fXwpAQCAtODIxLDYg
KzgxNCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzRnJvemVuKFZNJiB2bSkgeyByZXR1cm4gc3Ry
dWN0dXJlKHZtKS0+aXNGcm96ZW4odm0pOyB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29s
IGFueU9iamVjdEluQ2hhaW5NYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoVk0mKSBjb25zdDsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHByb3RvdHlwZUNoYWluTWF5SW50ZXJjZXB0U3Rv
cmVUbyhWTSYsIFByb3BlcnR5TmFtZSk7CiAgICAgYm9vbCBuZWVkc1Nsb3dQdXRJbmRleGluZyhW
TSYpIGNvbnN0OwogCiBwcml2YXRlOgpAQCAtMTExMyw4ICsxMTA3LDYgQEAgcHJpdmF0ZToKICAg
ICBib29sIHB1dERpcmVjdEludGVybmFsKFZNJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNp
Z25lZCBhdHRyLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIE5F
VkVSX0lOTElORSBib29sIHB1dElubGluZVNsb3coSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIE5F
VkVSX0lOTElORSBib29sIHB1dElubGluZUZhc3RSZXBsYWNpbmdTdGF0aWNQcm9wZXJ0eUlmTmVl
ZGVkKEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmKTsKLSAgICBib29sIHB1dElubGluZUZhc3QoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCiAgICAgYm9vbCBnZXROb25JbmRleFBy
b3BlcnR5U2xvdChKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7
CiAgICAgYm9vbCBnZXRPd25Ob25JbmRleFByb3BlcnR5U2xvdChWTSYsIFN0cnVjdHVyZSosIFBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CkBAIC0xNDQ3LDYgKzE0MzksMTAgQEAgQUxXQVlT
X0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVj
dCwgSlNHbG9iYWxPYmplY3QKIHsKICAgICByZXR1cm4gZ2V0T3duUHJvcGVydHlTbG90SW1wbChv
YmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KKworQUxXQVlTX0lO
TElORSB2b2lkIEpTT2JqZWN0Ojpkb1B1dFByb3BlcnR5U2VjdXJpdHlDaGVjayhKU09iamVjdCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQdXRQcm9wZXJ0eVNsb3QmKQoreworfQog
I2VuZGlmCiAKIC8vIEl0IG1heSBzZWVtIGNyYXp5IHRvIGlubGluZSBhIGZ1bmN0aW9uIHRoaXMg
bGFyZ2UgYnV0IGl0IG1ha2VzIGEgYmlnIGRpZmZlcmVuY2UKQEAgLTE1NDIsMTMgKzE1MzgsNiBA
QCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0KFZNJiB2bSwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZQogICAgIHJldHVybiBwdXREaXJlY3RJbnRlcm5hbDxQ
dXRNb2RlRGVmaW5lT3duUHJvcGVydHk+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1
dGVzLCBzbG90KTsKIH0KIAotaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdChWTSYgdm0s
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKLXsKLSAgICBBU1NFUlQoIXZhbHVlLmlzR2V0
dGVyU2V0dGVyKCkpOwotICAgIEFTU0VSVCghdmFsdWUuaXNDdXN0b21HZXR0ZXJTZXR0ZXIoKSk7
Ci0gICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4o
dm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNsb3QpOwotfQotCiBpbmxpbmUg
Ym9vbCBKU09iamVjdDo6cHV0RGlyZWN0KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEFTU0VSVCgh
dmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0SW5saW5lcy5oCmluZGV4IGZhNDkxOWIyOGQ1YTRjNDNmZDVhYTBlYmUwODMy
MmJmN2MxZDRlOTEuLjc3MTMxMjE0ZmIwYzFhMzhhZWU2MDU3Zjc1Y2VlYWY5MDQ0OWFlNjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCkBA
IC02OSw4ICs2OSw2IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Y2FuUGVyZm9ybUZh
c3RQdXRJbmxpbmVFeGNsdWRpbmdQcm90byhWTSYgdm0pCiAgICAgICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gb2JqLT5zdHJ1Y3R1cmUodm0pOwogICAgICAgICBpZiAoc3RydWN0dXJlLT5oYXNS
ZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvKCkgfHwgc3RydWN0
dXJlLT50eXBlSW5mbygpLm92ZXJyaWRlc0dldFByb3RvdHlwZSgpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICBpZiAob2JqICE9IHRoaXMgJiYgc3RydWN0dXJlLT50eXBlSW5m
bygpLm92ZXJyaWRlc1B1dCgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAg
IHByb3RvdHlwZSA9IG9iai0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKICAgICAgICAgaWYgKHBy
b3RvdHlwZS5pc051bGwoKSkKQEAgLTI1MSw0MyArMjQ5LDMyIEBAIEFMV0FZU19JTkxJTkUgUHJv
cGVydHlPZmZzZXQgSlNPYmplY3Q6OnByZXBhcmVUb1B1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KFZNJiB2CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEy
NjIvI3NlYy1vcmRpbmFyeXNldAorLy8gRUNNQSA4LjYuMi4yCiBBTFdBWVNfSU5MSU5FIGJvb2wg
SlNPYmplY3Q6OnB1dElubGluZUZvckpTT2JqZWN0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9i
amVjdCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAg
SlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihjZWxsKTsKICAgICBBU1NF
UlQodmFsdWUpOwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2
YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzT2JqZWN0KSk7CiAKLSAgICAvLyBUcnkgaW5kZXhlZCBw
dXQgZmlyc3QuIFRoaXMgaXMgcmVxdWlyZWQgZm9yIGNvcnJlY3RuZXNzLCBzaW5jZSBsb2FkcyBv
biBwcm9wZXJ0eSBuYW1lcyB0aGF0IGFwcGVhciBsaWtlCi0gICAgLy8gdmFsaWQgaW5kaWNlcyB3
aWxsIG5ldmVyIGxvb2sgaW4gdGhlIG5hbWVkIHByb3BlcnR5IHN0b3JhZ2UuCi0gICAgaWYgKE9w
dGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewotICAg
ICAgICBpZiAoVU5MSUtFTFkoaXNUaGlzVmFsdWVBbHRlcmVkKHNsb3QsIHRoaXNPYmplY3QpKSkK
LSAgICAgICAgICAgIHJldHVybiBvcmRpbmFyeVNldFNsb3coZ2xvYmFsT2JqZWN0LCB0aGlzT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90LnRoaXNWYWx1ZSgpLCBzbG90LmlzU3RyaWN0
TW9kZSgpKTsKLSAgICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0
QnlJbmRleCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGluZGV4LnZhbHVlKCksIHZhbHVlLCBz
bG90LmlzU3RyaWN0TW9kZSgpKTsKLSAgICB9Ci0KLSAgICBpZiAoIXRoaXNPYmplY3QtPmNhblBl
cmZvcm1GYXN0UHV0SW5saW5lKHZtLCBwcm9wZXJ0eU5hbWUpKQotICAgICAgICByZXR1cm4gdGhp
c09iamVjdC0+cHV0SW5saW5lU2xvdyhnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHNsb3QpOwogICAgIGlmIChVTkxJS0VMWShpc1RoaXNWYWx1ZUFsdGVyZWQoc2xvdCwgdGhpc09i
amVjdCkpKQotICAgICAgICByZXR1cm4gZGVmaW5lUHJvcGVydHlPblJlY2VpdmVyKGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Ci0gICAgaWYgKFVOTElLRUxZKHRoaXNP
YmplY3QtPmhhc05vblJlaWZpZWRTdGF0aWNQcm9wZXJ0aWVzKHZtKSkpCi0gICAgICAgIHJldHVy
biB0aGlzT2JqZWN0LT5wdXRJbmxpbmVGYXN0UmVwbGFjaW5nU3RhdGljUHJvcGVydHlJZk5lZWRl
ZChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwotICAgIHJldHVybiB0
aGlzT2JqZWN0LT5wdXRJbmxpbmVGYXN0KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgc2xvdCk7Ci19CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgb3JkaW5hcnlT
ZXRTbG93KGdsb2JhbE9iamVjdCwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xv
dC50aGlzVmFsdWUoKSwgc2xvdC5pc1N0cmljdE1vZGUoKSkpOwogCi1BTFdBWVNfSU5MSU5FIGJv
b2wgSlNPYmplY3Q6OnB1dElubGluZUZhc3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KQotewotICAgIEFTU0VSVCghcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKTsKKyAgICAv
LyBUcnkgaW5kZXhlZCBwdXQgZmlyc3QuIFRoaXMgaXMgcmVxdWlyZWQgZm9yIGNvcnJlY3RuZXNz
LCBzaW5jZSBsb2FkcyBvbiBwcm9wZXJ0eSBuYW1lcyB0aGF0IGFwcGVhciBsaWtlCisgICAgLy8g
dmFsaWQgaW5kaWNlcyB3aWxsIG5ldmVyIGxvb2sgaW4gdGhlIG5hbWVkIHByb3BlcnR5IHN0b3Jh
Z2UuCisgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVy
dHlOYW1lKSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBwdXRCeUluZGV4KHRo
aXNPYmplY3QsIGdsb2JhbE9iamVjdCwgaW5kZXgudmFsdWUoKSwgdmFsdWUsIHNsb3QuaXNTdHJp
Y3RNb2RlKCkpKTsKIAotICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7Ci0gICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGlmICh0aGlzT2JqZWN0LT5j
YW5QZXJmb3JtRmFzdFB1dElubGluZSh2bSwgcHJvcGVydHlOYW1lKSkgeworICAgICAgICBBU1NF
UlQoIXRoaXNPYmplY3QtPnByb3RvdHlwZUNoYWluTWF5SW50ZXJjZXB0U3RvcmVUbyh2bSwgcHJv
cGVydHlOYW1lKSk7CisgICAgICAgIGlmICghdGhpc09iamVjdC0+cHV0RGlyZWN0SW50ZXJuYWw8
UHV0TW9kZVB1dD4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QpKQorICAgICAgICAg
ICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBzbG90LmlzU3RyaWN0TW9k
ZSgpLCBSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KIAotICAgIC8vIEZJWE1FOiBGb3IgYSBmYWlsdXJlIGR1ZSB0byBub24tZXh0ZW5zaWJs
ZSBzdHJ1Y3R1cmUsIHRoZSBlcnJvciBtZXNzYWdlIGlzIG1pc2xlYWRpbmcuCi0gICAgaWYgKCFw
dXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlUHV0Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwg
c2xvdCkpCi0gICAgICAgIHJldHVybiB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgc2xv
dC5pc1N0cmljdE1vZGUoKSwgUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwotICAgIHJldHVy
biB0cnVlOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgdGhpc09iamVjdC0+cHV0SW5s
aW5lU2xvdyhnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpKTsKIH0KIAog
Ly8gSGFzT3duUHJvcGVydHkoTywgUCkgZnJvbSBzZWN0aW9uIDcuMy4xMSBpbiB0aGUgc3BlYy4K
QEAgLTMzMCw3ICszMTcsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVj
dEludGVybmFsKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZQogICAgICAgICB1bnNp
Z25lZCBjdXJyZW50QXR0cmlidXRlczsKICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0g
c3RydWN0dXJlLT5nZXQodm0sIHByb3BlcnR5TmFtZSwgY3VycmVudEF0dHJpYnV0ZXMpOwogICAg
ICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpIHsKLSAgICAgICAgICAgIGlmICgobW9k
ZSA9PSBQdXRNb2RlUHV0KSAmJiBjdXJyZW50QXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seU9yQWNjZXNzb3JPckN1c3RvbUFjY2Vzc29yKQorICAgICAgICAgICAgaWYgKCht
b2RlID09IFB1dE1vZGVQdXQpICYmIGN1cnJlbnRBdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAg
ICAgcHV0RGlyZWN0KHZtLCBvZmZzZXQsIHZhbHVlKTsKQEAgLTM4OSw3ICszNzYsNyBAQCBBTFdB
WVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKFZNJiB2bSwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZQogICAgIHVuc2lnbmVkIGN1cnJlbnRBdHRyaWJ1dGVzOwogICAg
IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1
dGVzKTsKICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpIHsKLSAgICAgICAgaWYgKCht
b2RlID09IFB1dE1vZGVQdXQpICYmIGN1cnJlbnRBdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5T3JBY2Nlc3Nvck9yQ3VzdG9tQWNjZXNzb3IpCisgICAgICAgIGlmICgobW9k
ZSA9PSBQdXRNb2RlUHV0KSAmJiBjdXJyZW50QXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBzdHJ1Y3R1
cmUtPmRpZFJlcGxhY2VQcm9wZXJ0eShvZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm94eS5oCmluZGV4IDQ2M2Q0MGVhMDZkYmQwOGNlMzdmY2ZjMGUyOGQ1OTFhMjgzYjlh
NzkuLjBmMjg3MTY2MTc1N2JjMGI0YzllOTE4MDI4OGI2MjNhZTQxZTA1YTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiBjbGFzcyBKU1Byb3h5IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogcHVibGlj
OgogICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OwotICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJy
aWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5TmFtZXMgfCBP
dmVycmlkZXNQdXQgfCBPdmVycmlkZXNHZXRQcm90b3R5cGUgfCBJbnRlcmNlcHRzR2V0T3duUHJv
cGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvOworICAgIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92
ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5TmFtZXMg
fCBPdmVycmlkZXNHZXRQcm90b3R5cGUgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJ
bmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2Vs
bFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VG
b3IoVk0mIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCmlu
ZGV4IGE3N2Q3YzUxMzIyNDNiOTQ5YmE1NTM1NjJhZGQwNWFmZGY1M2UyMWUuLjAzYjVhYTk3ZjJh
MjgxNzRhNzYzZTg2YjY3ZjU5MDRjZjdkY2Y2MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1R5cGVJbmZvLmgKQEAgLTU3LDcgKzU3LDcgQEAgc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdCA9IDEgPDwgMTQ7CiBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIEdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVy
dHlBYnNlbmNlID0gMSA8PCAxNTsKIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgSW50ZXJjZXB0
c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyA9IDEgPDwg
MTY7CiBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUlzSW1tb3J0YWwgPSAxIDw8
IDE3Owotc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBPdmVycmlkZXNQdXQgPSAxIDw8IDE4Owor
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBIYXNQdXRQcm9wZXJ0eVNlY3VyaXR5Q2hlY2sgPSAx
IDw8IDE4Owogc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBPdmVycmlkZXNHZXRQcm90b3R5cGUg
PSAxIDw8IDE5Owogc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBHZXRPd25Qcm9wZXJ0eVNsb3RN
YXlCZVdyb25nQWJvdXREb250RW51bSA9IDEgPDwgMjA7CiAKQEAgLTk0LDcgKzk0LDYgQEAgcHVi
bGljOgogICAgIGJvb2wgaW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSgpIGNvbnN0IHsgcmV0
dXJuIGlzU2V0T25GbGFnczE8SW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZT4oKTsgfQogICAg
IGJvb2wgb3ZlcnJpZGVzR2V0Q2FsbERhdGEoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3Mx
PE92ZXJyaWRlc0dldENhbGxEYXRhPigpOyB9CiAgICAgYm9vbCBvdmVycmlkZXNHZXRPd25Qcm9w
ZXJ0eVNsb3QoKSBjb25zdCB7IHJldHVybiBvdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QoaW5s
aW5lVHlwZUZsYWdzKCkpOyB9Ci0gICAgYm9vbCBoYXNTdGF0aWNQcm9wZXJ0eVRhYmxlKCkgY29u
c3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMTxIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlPigpOyB9CiAg
ICAgc3RhdGljIGJvb2wgb3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90KElubGluZVR5cGVGbGFn
cyBmbGFncykgeyByZXR1cm4gZmxhZ3MgJiBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7IH0K
ICAgICBzdGF0aWMgYm9vbCBoYXNTdGF0aWNQcm9wZXJ0eVRhYmxlKElubGluZVR5cGVGbGFncyBm
bGFncykgeyByZXR1cm4gZmxhZ3MgJiBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOyB9CiAgICAgc3Rh
dGljIGJvb2wgcGVyQ2VsbEJpdChJbmxpbmVUeXBlRmxhZ3MgZmxhZ3MpIHsgcmV0dXJuIGZsYWdz
ICYgVHlwZUluZm9QZXJDZWxsQml0OyB9CkBAIC0xMDMsMTIgKzEwMiwxMiBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBvdmVycmlkZXNHZXRPd25Qcm9wZXJ0eU5hbWVzKCkgY29uc3QgeyByZXR1cm4gaXNT
ZXRPbkZsYWdzMjxPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eU5hbWVzPigpOyB9CiAgICAgYm9vbCBv
dmVycmlkZXNHZXRPd25TcGVjaWFsUHJvcGVydHlOYW1lcygpIGNvbnN0IHsgcmV0dXJuIGlzU2V0
T25GbGFnczI8T3ZlcnJpZGVzR2V0T3duU3BlY2lhbFByb3BlcnR5TmFtZXM+KCk7IH0KICAgICBi
b29sIG92ZXJyaWRlc0FueUZvcm1PZkdldE93blByb3BlcnR5TmFtZXMoKSBjb25zdCB7IHJldHVy
biBvdmVycmlkZXNHZXRPd25Qcm9wZXJ0eU5hbWVzKCkgfHwgb3ZlcnJpZGVzR2V0T3duU3BlY2lh
bFByb3BlcnR5TmFtZXMoKTsgfQotICAgIGJvb2wgb3ZlcnJpZGVzUHV0KCkgY29uc3QgeyByZXR1
cm4gaXNTZXRPbkZsYWdzMjxPdmVycmlkZXNQdXQ+KCk7IH0KICAgICBib29sIG92ZXJyaWRlc0dl
dFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczI8T3ZlcnJpZGVzR2V0UHJv
dG90eXBlPigpOyB9CiAgICAgYm9vbCBwcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcoKSBjb25zdCB7
IHJldHVybiBpc1NldE9uRmxhZ3MyPFByb2hpYml0c1Byb3BlcnR5Q2FjaGluZz4oKTsgfQogICAg
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmUoKSBjb25zdCB7IHJldHVybiBpc1NldE9u
RmxhZ3MyPEdldE93blByb3BlcnR5U2xvdElzSW1wdXJlPigpOyB9CiAgICAgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSgpIGNvbnN0IHsgcmV0dXJuIGlz
U2V0T25GbGFnczI8R2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmVGb3JQcm9wZXJ0eUFic2VuY2U+
KCk7IH0KICAgICBib29sIGdldE93blByb3BlcnR5U2xvdE1heUJlV3JvbmdBYm91dERvbnRFbnVt
KCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMjxHZXRPd25Qcm9wZXJ0eVNsb3RNYXlCZVdy
b25nQWJvdXREb250RW51bT4oKTsgfQorICAgIGJvb2wgaGFzUHV0UHJvcGVydHlTZWN1cml0eUNo
ZWNrKCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMjxIYXNQdXRQcm9wZXJ0eVNlY3VyaXR5
Q2hlY2s+KCk7IH0KICAgICBib29sIG5ld0ltcHVyZVByb3BlcnR5RmlyZXNXYXRjaHBvaW50cygp
IGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczI8TmV3SW1wdXJlUHJvcGVydHlGaXJlc1dhdGNo
cG9pbnRzPigpOyB9CiAgICAgYm9vbCBpc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdCgp
IGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczI8SXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNP
YmplY3Q+KCk7IH0KICAgICBib29sIGludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
RXZlbldoZW5MZW5ndGhJc05vdFplcm8oKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MyPElu
dGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8+
KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKaW5kZXggYjliZWIzMWQy
YTYxYmE4OTMwM2Y2OWY2ZWRiYWFkZmZlMGVlN2VjYi4uMmNkMTRlNWNlM2RiY2NmMzFkM2Y0MmFh
MGIxNjJkZWNiOTg2YWIzNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTG9va3VwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgK
QEAgLTI2Miw2ICsyNjIsNzAgQEAgaW5saW5lIGJvb2wgcmVwbGFjZVN0YXRpY1Byb3BlcnR5U2xv
dChWTSYgdm0sIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAorLy8gJ2Jhc2UnIG1lYW5zIHRoZSBvYmplY3QgaG9sZGluZyB0aGUgcHJvcGVy
dHkgKHBvc3NpYmx5IGluIHRoZSBwcm90b3R5cGUgY2hhaW4gb2YgdGhlIG9iamVjdCBwdXQgd2Fz
IGNhbGxlZCBvbikuCisvLyAndGhpc1ZhbHVlJyBpcyB0aGUgb2JqZWN0IHRoYXQgcHV0IGlzIGJl
aW5nIGFwcGxpZWQgdG8gKGluIHRoZSBjYXNlIG9mIGEgcHJveHksIHRoZSBwcm94eSB0YXJnZXQp
LgorLy8gJ3Nsb3QudGhpc1ZhbHVlKCknIGlzIHRoZSBvYmplY3QgdGhlIHB1dCB3YXMgb3JpZ2lu
YWxseSBwZXJmb3JtZWQgb24gKGluIHRoZSBjYXNlIG9mIGEgcHJveHksIHRoZSBwcm94eSBpdHNl
bGYpLgoraW5saW5lIGJvb2wgcHV0RW50cnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Y29uc3QgQ2xhc3NJbmZvKiwgY29uc3QgSGFzaFRhYmxlVmFsdWUqIGVudHJ5LCBKU09iamVjdCog
YmFzZSwgSlNPYmplY3QqIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQoreworICAgIFZNJiB2bSA9IGdldFZN
KGdsb2JhbE9iamVjdCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QnVp
bHRpbk9yRnVuY3Rpb25PckxhenlQcm9wZXJ0eSkgeworICAgICAgICBpZiAoIShlbnRyeS0+YXR0
cmlidXRlcygpICYgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSkgeworICAgICAgICAgICAg
Ly8gSWYgdGhpcyBpcyBhIGZ1bmN0aW9uIG9yIGxhenkgcHJvcGVydHkgcHV0IHRoZW4gd2UganVz
dCBkbyB0aGUgcHV0IGJlY2F1c2UKKyAgICAgICAgICAgIC8vIGxvZ2ljYWxseSB0aGUgb2JqZWN0
IGFscmVhZHkgaGFkIHRoZSBwcm9wZXJ0eSwgc28gdGhpcyBpcyBqdXN0IGEgcmVwbGFjZS4KKyAg
ICAgICAgICAgIC8vIEZJWE1FOiB0aGlzVmFsdWUgbWF5IGJlIGFuIG9iamVjdCB3aXRoIG5vbi1l
eHRlbnNpYmxlIHN0cnVjdHVyZSB3ZSBtdXN0IHRocm93IGZvci4KKyAgICAgICAgICAgIGlmIChK
U09iamVjdCogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgdGhpc1Zh
bHVlKSkKKyAgICAgICAgICAgICAgICB0aGlzT2JqZWN0LT5wdXREaXJlY3Qodm0sIHByb3BlcnR5
TmFtZSwgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBzbG90LmlzU3RyaWN0TW9k
ZSgpLCBSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgfQorCisgICAgaWYgKGVudHJ5
LT5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpCisgICAgICAgIHJl
dHVybiB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgc2xvdC5pc1N0cmljdE1vZGUoKSwg
UmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworCisgICAgaWYgKCEoZW50cnktPmF0dHJpYnV0
ZXMoKSAmIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkpIHsKKyAgICAgICAgQVNTRVJUX1dJ
VEhfTUVTU0FHRSghKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
SklUQXR0cmlidXRlKSwgIkRPTUpJVEF0dHJpYnV0ZSBzdXBwb3J0cyByZWFkb25seSBhdHRyaWJ1
dGVzIGN1cnJlbnRseS4iKTsKKyAgICAgICAgYm9vbCBpc0FjY2Vzc29yID0gZW50cnktPmF0dHJp
YnV0ZXMoKSAmIFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvcjsKKyAgICAgICAgLy8g
RklYTUU6IFdlIHNob3VsZCBvbmx5IGJlIGNhY2hpbmcgdGhlc2UgaWYgd2UncmUgbm90IGFuIHVu
Y2FjaGVhYmxlIGRpY3Rpb25hcnk6CisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTUzNDcKKyAgICAgICAgLy8gV2UgbmVlZCB0byBtYWtlIHN1cmUg
dGhhdCB3ZSBkZWNpZGUgdG8gY2FjaGUgdGhpcyBwcm9wZXJ0eSBiZWZvcmUgd2UgcG90ZW50aWFs
bHkgZXhlY3V0ZSBhcmliaXRyYXJ5IEpTLgorICAgICAgICBpZiAoaXNBY2Nlc3NvcikKKyAgICAg
ICAgICAgIHNsb3Quc2V0Q3VzdG9tQWNjZXNzb3IoYmFzZSwgZW50cnktPnByb3BlcnR5UHV0dGVy
KCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzbG90LnNldEN1c3RvbVZhbHVlKGJhc2Us
IGVudHJ5LT5wcm9wZXJ0eVB1dHRlcigpKTsKKworICAgICAgICBhdXRvIHJlc3VsdCA9IGNhbGxD
dXN0b21TZXR0ZXIoZ2xvYmFsT2JqZWN0LCBlbnRyeS0+cHJvcGVydHlQdXR0ZXIoKSwgaXNBY2Nl
c3NvciwgYmFzZSwgc2xvdC50aGlzVmFsdWUoKSwgdmFsdWUsIHByb3BlcnR5TmFtZSk7CisgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICAgICAgaWYgKHJlc3Vs
dCAhPSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQg
PT0gVHJpU3RhdGU6OlRydWU7CisKKyAgICAgICAgLy8gRklYTUU6IHRoaXNWYWx1ZSBtYXkgYmUg
YW4gb2JqZWN0IHdpdGggbm9uLWV4dGVuc2libGUgc3RydWN0dXJlIHdlIG11c3QgdGhyb3cgZm9y
LgorICAgICAgICBpZiAoSlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2Jq
ZWN0Kj4odm0sIHRoaXNWYWx1ZSkpCisgICAgICAgICAgICB0aGlzT2JqZWN0LT5wdXREaXJlY3Qo
dm0sIHByb3BlcnR5TmFtZSwgdmFsdWUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisK
KyAgICByZXR1cm4gdHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHNsb3QuaXNTdHJpY3RN
b2RlKCksIFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKK30KKworLyoqCisgKiBUaGlzIG9u
ZSBpcyBmb3IgInB1dCIuCisgKiBJdCBsb29rcyB1cCBhIGhhc2ggZW50cnkgZm9yIHRoZSBwcm9w
ZXJ0eSB0byBiZSBzZXQuICBJZiBhbiBlbnRyeQorICogaXMgZm91bmQgaXQgc2V0cyB0aGUgdmFs
dWUgYW5kIHJldHVybnMgdHJ1ZSwgZWxzZSBpdCByZXR1cm5zIGZhbHNlLgorICovCitpbmxpbmUg
Ym9vbCBsb29rdXBQdXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGJhc2UsIEpTVmFsdWUgdmFsdWUsIGNvbnN0IEhhc2hU
YWJsZSYgdGFibGUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCwgYm9vbCYgcHV0UmVzdWx0KQorewor
ICAgIGNvbnN0IEhhc2hUYWJsZVZhbHVlKiBlbnRyeSA9IHRhYmxlLmVudHJ5KHByb3BlcnR5TmFt
ZSk7CisKKyAgICBpZiAoIWVudHJ5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBwdXRS
ZXN1bHQgPSBwdXRFbnRyeShnbG9iYWxPYmplY3QsIHRhYmxlLmNsYXNzRm9yVGhpcywgZW50cnks
IGJhc2UsIGJhc2UsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIHJldHVybiB0cnVl
OworfQorCiBpbmxpbmUgdm9pZCByZWlmeVN0YXRpY1Byb3BlcnR5KFZNJiB2bSwgY29uc3QgQ2xh
c3NJbmZvKiBjbGFzc0luZm8sIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCBjb25z
dCBIYXNoVGFibGVWYWx1ZSYgdmFsdWUsIEpTT2JqZWN0JiB0aGlzT2JqKQogewogICAgIGlmICh2
YWx1ZS5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QnVpbHRpbikgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAppbmRleCA3NTVkNTVlMTBi
ZWYzMDJkMWUwYjRhMzlmODRhZDM5M2M2NWNhZmE3Li5jMTBjNjUwNzk5ZGQ2MWY3NmQ0NzM5MDIw
NmQwODMwMTEwYjFiN2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eVNsb3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eVNsb3QuaApAQCAtNDcsNyArNDcsNiBAQCBlbnVtIGNsYXNzIFByb3BlcnR5QXR0cmlidXRl
IDogdW5zaWduZWQgewogICAgIEN1c3RvbVZhbHVlICAgICAgID0gMSA8PCA2LAogICAgIEN1c3Rv
bUFjY2Vzc29yT3JWYWx1ZSA9IEN1c3RvbUFjY2Vzc29yIHwgQ3VzdG9tVmFsdWUsCiAgICAgQWNj
ZXNzb3JPckN1c3RvbUFjY2Vzc29yT3JWYWx1ZSA9IEFjY2Vzc29yIHwgQ3VzdG9tQWNjZXNzb3Ig
fCBDdXN0b21WYWx1ZSwKLSAgICBSZWFkT25seU9yQWNjZXNzb3JPckN1c3RvbUFjY2Vzc29yID0g
UmVhZE9ubHkgfCBBY2Nlc3NvciB8IEN1c3RvbUFjY2Vzc29yLAogCiAgICAgLy8gVGhpbmdzIHRo
YXQgYXJlIHVzZWQgYnkgc3RhdGljIGhhc2h0YWJsZXMgYXJlIG5vdCBpbiB0aGUgYXR0cmlidXRl
cyBieXRlIGluIFByb3BlcnR5TWFwRW50cnkuCiAgICAgRnVuY3Rpb24gICAgICAgICAgPSAxIDw8
IDgsICAvLyBwcm9wZXJ0eSBpcyBhIGZ1bmN0aW9uIC0gb25seSB1c2VkIGJ5IHN0YXRpYyBoYXNo
dGFibGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9i
amVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAK
aW5kZXggNDVmNThkOTlkMzVkNWExM2RkYjk5ZTBhNjRjZjkxZmI2NmQ5MzhkZi4uNjYwMWQ0ZGU0
MGRhM2QxM2UzNTZhYjkzNzZmMzI2MTkxYjU1MDc2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcApAQCAtNDY0LDcgKzQ2NCw2IEBAIGJvb2wgUHJv
eHlPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZSBwCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IHNsb3QuZGlzYWJsZUNhY2hpbmcoKTsKLSAgICBzbG90LnNldElzVGFpbnRlZEJ5T3BhcXVlT2Jq
ZWN0KCk7CiAKICAgICBQcm94eU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxQcm94eU9iamVj
dCo+KGNlbGwpOwogICAgIGF1dG8gcGVyZm9ybURlZmF1bHRQdXQgPSBbJl0gKCkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmgKaW5kZXggOWU2ZDIwMDc5NmQy
ZGQ0ZjczMzZiN2UzYzRmNTBlNzNiZDRhODNkYi4uMGY3ZjhiOWE3NGU3YzA1YmFmNThiMjdkZmIy
N2QwNThiNzE2YTk3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJveHlPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9i
amVjdC5oCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIFByb3h5T2JqZWN0IGZpbmFsIDogcHVibGlj
IEpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVj
dCBCYXNlOwogCi0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3Zl
cnJpZGVzR2V0T3duUHJvcGVydHlOYW1lcyB8IE92ZXJyaWRlc0dldFByb3RvdHlwZSB8IE92ZXJy
aWRlc0dldENhbGxEYXRhIHwgT3ZlcnJpZGVzUHV0IHwgSW50ZXJjZXB0c0dldE93blByb3BlcnR5
U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IFByb2hpYml0c1Byb3BlcnR5Q2Fj
aGluZzsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eU5hbWVzIHwgT3ZlcnJpZGVzR2V0UHJvdG90eXBlIHwgT3ZlcnJpZGVz
R2V0Q2FsbERhdGEgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVu
TGVuZ3RoSXNOb3RaZXJvIHwgUHJvaGliaXRzUHJvcGVydHlDYWNoaW5nOwogCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3RhdGljIElz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1B1dFByb3BlcnR5U2xvdC5oCmluZGV4IDM1NmIwNzVmMGM1Y2FjOTMyMjA2NjFj
MWI2YmViZDFkNmExYzA3NmMuLmEwZTc3NDcyZjM0ZWUyODM2ZGIyNDc1MThkMzk0OWQ4OTZiNzJm
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1dFByb3BlcnR5
U2xvdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1dFByb3BlcnR5U2xv
dC5oCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIEpTRnVuY3Rpb247CiBjbGFzcyBQdXRQcm9wZXJ0
eVNsb3QgewogcHVibGljOgogICAgIGVudW0gVHlwZSA6IHVpbnQ4X3QgeyBVbmNhY2hhYmxlLCBF
eGlzdGluZ1Byb3BlcnR5LCBOZXdQcm9wZXJ0eSwgU2V0dGVyUHJvcGVydHksIEN1c3RvbVZhbHVl
LCBDdXN0b21BY2Nlc3NvciB9OwotICAgIGVudW0gQ29udGV4dCA6IHVpbnQ4X3QgeyBVbmtub3du
Q29udGV4dCwgUHV0QnlJZCwgUHV0QnlJZEV2YWwsIFJlZmxlY3RTZXQgfTsKKyAgICBlbnVtIENv
bnRleHQgeyBVbmtub3duQ29udGV4dCwgUHV0QnlJZCwgUHV0QnlJZEV2YWwgfTsKICAgICB1c2lu
ZyBQdXRWYWx1ZUZ1bmMgPSBKU0M6OlB1dFZhbHVlRnVuYzsKICAgICB1c2luZyBQdXRWYWx1ZUZ1
bmNXaXRoUHRyID0gSlNDOjpQdXRWYWx1ZUZ1bmNXaXRoUHRyOwogCkBAIC00Nyw3ICs0Nyw2IEBA
IHB1YmxpYzoKICAgICAgICAgLCBtX29mZnNldChpbnZhbGlkT2Zmc2V0KQogICAgICAgICAsIG1f
aXNTdHJpY3RNb2RlKGlzU3RyaWN0TW9kZSkKICAgICAgICAgLCBtX2lzSW5pdGlhbGl6YXRpb24o
aXNJbml0aWFsaXphdGlvbikKLSAgICAgICAgLCBtX2lzVGFpbnRlZEJ5T3BhcXVlT2JqZWN0KGZh
bHNlKQogICAgICAgICAsIG1fdHlwZShVbmNhY2hhYmxlKQogICAgICAgICAsIG1fY29udGV4dChj
b250ZXh0KQogICAgICAgICAsIG1fY2FjaGVhYmlsaXR5KENhY2hpbmdBbGxvd2VkKQpAQCAtMTA1
LDggKzEwNCw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fcHV0RnVuY3Rpb247CiAgICAg
fQogCisgICAgQ29udGV4dCBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29u
dGV4dD4obV9jb250ZXh0KTsgfQorCiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90
eXBlOyB9Ci0gICAgQ29udGV4dCBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0OyB9
CiAgICAgSlNPYmplY3QqIGJhc2UoKSBjb25zdCB7IHJldHVybiBtX2Jhc2U7IH0KICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGhpc1ZhbHVlOyB9CiAKQEAgLTExNiw4
ICsxMTYsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0NhY2hlYWJsZUN1c3RvbSgpIGNvbnN0IHsg
cmV0dXJuIGlzQ2FjaGVhYmxlKCkgJiYgKG1fdHlwZSA9PSBDdXN0b21WYWx1ZSB8fCBtX3R5cGUg
PT0gQ3VzdG9tQWNjZXNzb3IpICYmICEhbV9wdXRGdW5jdGlvbjsgfQogICAgIGJvb2wgaXNDdXN0
b21BY2Nlc3NvcigpIGNvbnN0IHsgcmV0dXJuIGlzQ2FjaGVhYmxlKCkgJiYgbV90eXBlID09IEN1
c3RvbUFjY2Vzc29yOyB9CiAgICAgYm9vbCBpc0luaXRpYWxpemF0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9pc0luaXRpYWxpemF0aW9uOyB9Ci0gICAgYm9vbCBpc1RhaW50ZWRCeU9wYXF1ZU9iamVj
dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNUYWludGVkQnlPcGFxdWVPYmplY3Q7IH0KLSAgICB2b2lk
IHNldElzVGFpbnRlZEJ5T3BhcXVlT2JqZWN0KCkgeyBtX2lzVGFpbnRlZEJ5T3BhcXVlT2JqZWN0
ID0gdHJ1ZTsgfQogCiAgICAgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KCkgY29uc3QKICAg
ICB7CkBAIC0xMzcsOSArMTM1LDggQEAgcHJpdmF0ZToKICAgICBQcm9wZXJ0eU9mZnNldCBtX29m
ZnNldDsKICAgICBib29sIG1faXNTdHJpY3RNb2RlIDogMTsKICAgICBib29sIG1faXNJbml0aWFs
aXphdGlvbiA6IDE7Ci0gICAgYm9vbCBtX2lzVGFpbnRlZEJ5T3BhcXVlT2JqZWN0IDogMTsKICAg
ICBUeXBlIG1fdHlwZTsKLSAgICBDb250ZXh0IG1fY29udGV4dDsKKyAgICB1aW50OF90IG1fY29u
dGV4dDsKICAgICBDYWNoZWFiaWxpdHlUeXBlIG1fY2FjaGVhYmlsaXR5OwogICAgIEZ1bmN0aW9u
UHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPiBtX3B1dEZ1bmN0aW9uOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAKaW5kZXggNThjMGQzNzE0
YjhkZjFlMzg4YjcxYjlmN2YzNzRiOTc3N2UxODkzNS4uNDExOTJjY2IzN2U4MmZkZmRkZTdiNmYx
OTViNGM0MTdkNjFlMGI4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVmbGVjdE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVmbGVjdE9iamVjdC5jcHAKQEAgLTI2MCw3ICsyNjAsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04ocmVmbGVjdE9iamVjdFNldCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcgogCiAgICAgLy8gRG8gbm90IHJhaXNlIGFueSByZWFkb25seSBlcnJvcnMgdGhhdCBoYXBw
ZW4gaW4gc3RyaWN0IG1vZGUuCiAgICAgYm9vbCBzaG91bGRUaHJvd0lmQ2FudFNldCA9IGZhbHNl
OwotICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHJlY2VpdmVyLCBzaG91bGRUaHJvd0lmQ2FudFNl
dCwgUHV0UHJvcGVydHlTbG90OjpSZWZsZWN0U2V0KTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xv
dChyZWNlaXZlciwgc2hvdWxkVGhyb3dJZkNhbnRTZXQpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0YXJnZXRPYmplY3QtPm1ldGhvZFRh
YmxlKHZtKS0+cHV0KHRhcmdldE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGNh
bGxGcmFtZS0+YXJndW1lbnQoMiksIHNsb3QpKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAppbmRleCBlODIxNTkzYTk5Zjk0NzdjYmFh
ZWQwNDM4MmVlZTk4ODMwODhhODk1Li45OTM5YmEwNGFkM2IxZTliMjg5OTY2NWY3MGM3MzIxYWM2
ZGQxZWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVj
dC5jcHAKQEAgLTEzNCwyNCArMTM0LDE5IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihyZWdF
eHBPYmplY3RTZXRMYXN0SW5kZXhOb25TdHJpY3QsIChKU0dsb2JhbE9iamVjdCogZ2xvCiBib29s
IFJlZ0V4cE9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVy
dHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgUmVnRXhwT2JqZWN0KiB0
aGlzT2JqZWN0ID0ganNDYXN0PFJlZ0V4cE9iamVjdCo+KGNlbGwpOwogCi0gICAgaWYgKHByb3Bl
cnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sYXN0SW5kZXgpIHsKLSAgICAgICAgaWYgKCF0
aGlzT2JqZWN0LT5sYXN0SW5kZXhJc1dyaXRhYmxlKCkpCi0gICAgICAgICAgICByZXR1cm4gdHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHNsb3QuaXNTdHJpY3RNb2RlKCksIFJlYWRvbmx5
UHJvcGVydHlXcml0ZUVycm9yKTsKLQotICAgICAgICBpZiAoVU5MSUtFTFkoc2xvdC50aGlzVmFs
dWUoKSAhPSB0aGlzT2JqZWN0KSkKLSAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNPYmplY3Q6OmRlZmluZVByb3BlcnR5T25SZWNlaXZlcihnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNsb3QpKTsKKyAgICBpZiAoVU5MSUtFTFkoaXNUaGlzVmFsdWVBbHRl
cmVkKHNsb3QsIHRoaXNPYmplY3QpKSkKKyAgICAgICAgcmV0dXJuIG9yZGluYXJ5U2V0U2xvdyhn
bG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QudGhpc1Zh
bHVlKCksIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwogCisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2
bS5wcm9wZXJ0eU5hbWVzLT5sYXN0SW5kZXgpIHsKICAgICAgICAgYm9vbCByZXN1bHQgPSB0aGlz
T2JqZWN0LT5zZXRMYXN0SW5kZXgoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1v
ZGUoKSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAg
ICAgc2xvdC5zZXRDdXN0b21WYWx1ZSh0aGlzT2JqZWN0LCBzbG90LmlzU3RyaWN0TW9kZSgpCiAg
ICAgICAgICAgICA/IHJlZ0V4cE9iamVjdFNldExhc3RJbmRleFN0cmljdAogICAgICAgICAgICAg
OiByZWdFeHBPYmplY3RTZXRMYXN0SW5kZXhOb25TdHJpY3QpOwogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OnB1dChjZWxs
LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpKTsKKyAgICByZXR1cm4g
QmFzZTo6cHV0KGNlbGwsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7
CiB9CiAKIEpTVmFsdWUgUmVnRXhwT2JqZWN0OjpleGVjKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTU3RyaW5nKiBzdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cE9iamVjdC5oCmluZGV4IGNiMzk0NWZmYmE0ZThjODA0NjZjN2JkZjg1YzNkNzM3MTdk
OTljZGUuLmI2YzcxMDFiMjk5YzQxNmM5YTIxYjdiYTFiZGY3YTYxNzY2NGJlNzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCkBAIC0zMCw3ICszMCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgUmVnRXhwT2JqZWN0IGZpbmFsIDogcHVibGljIEpT
Tm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2Jq
ZWN0OwotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNl
OjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRl
c0dldE93blNwZWNpYWxQcm9wZXJ0eU5hbWVzIHwgT3ZlcnJpZGVzUHV0OworICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8
IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldE93blNwZWNpYWxQcm9w
ZXJ0eU5hbWVzOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNj
ZXNzIG1vZGU+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAppbmRleCA5
OTk1ODM1NjdkZjc5NWNmZjk1OTQ3NjgwYTcxMzk3ZDgwOTRjOGZiLi44NGYyYzViYmY3YzEyODZh
ZGFkZWNiYmE5M2Y4MTIzYzUxOTQ1MmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ09iamVjdC5jcHAKQEAgLTY4LDEwICs2OCwxMSBAQCBib29sIFN0cmluZ09i
amVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJv
cGVydHlOYW1lCiAKICAgICBTdHJpbmdPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8U3RyaW5n
T2JqZWN0Kj4oY2VsbCk7CiAKKyAgICBpZiAoVU5MSUtFTFkoaXNUaGlzVmFsdWVBbHRlcmVkKHNs
b3QsIHRoaXNPYmplY3QpKSkgCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgb3Jk
aW5hcnlTZXRTbG93KGdsb2JhbE9iamVjdCwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgc2xvdC50aGlzVmFsdWUoKSwgc2xvdC5pc1N0cmljdE1vZGUoKSkpOworCiAgICAgaWYgKHBy
b3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpCiAgICAgICAgIHJldHVybiB0
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgc2xvdC5pc1N0cmljdE1vZGUoKSwgUmVhZG9u
bHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwotICAgIGlmIChVTkxJS0VMWShzbG90LnRoaXNWYWx1ZSgp
ICE9IHRoaXNPYmplY3QpKQotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTT2Jq
ZWN0OjpwdXQoY2VsbCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSk7
CiAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlO
YW1lKSkgCiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcHV0QnlJbmRleChjZWxs
LCBnbG9iYWxPYmplY3QsIGluZGV4LnZhbHVlKCksIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgp
KSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU09iamVjdDo6cHV0KGNlbGwsIGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAppbmRleCAwMDM3ZjQ3MWI2Y2IzNTgzN2Uz
NzExNzc3MGJhM2Y5OTc4ODQzOWM3Li45NGJhNjcyY2MxY2RhNTI0MTgyNDJlNjQzZjZhMTY0MDk4
NTFjMTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdP
YmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3Qu
aApAQCAtMjgsNyArMjgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIFN0cmluZ09iamVjdCA6
IHB1YmxpYyBKU1dyYXBwZXJPYmplY3QgewogcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU1dy
YXBwZXJPYmplY3Q7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwg
T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlOYW1lcyB8IE92ZXJyaWRlc1B1dCB8IEludGVyY2VwdHNH
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm87CisgICAgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZs
YWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVy
dHlOYW1lcyB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5n
dGhJc05vdFplcm87CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgU3Vic3BhY2VBY2Nlc3MgbW9k
ZT4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCmluZGV4IGE5
MjM3OTI5NjQ2ZmI0ODFiMDUzNDI2M2QyMmU3ZDcwMTM5OTRjZjIuLjljZGU0NjM0MTcyM2M3ZTQy
ZjFmOTE4ZDc3OTNjNDBlYTUwOGU0ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcApAQCAtMTIxLDkgKzEyMSw5IEBAIFN0cmluZ1By
b3RvdHlwZTo6U3RyaW5nUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7
CiB9CiAKLXZvaWQgU3RyaW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit2b2lkIFN0cmluZ1Byb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1N0cmluZyogbmFt
ZUFuZE1lc3NhZ2UpCiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIGpzRW1wdHlTdHJp
bmcodm0pKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgbmFtZUFuZE1lc3NhZ2UpOwog
ICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CiAKICAgICBKU0NfTkFUSVZFX0lOVFJJ
TlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+dG9TdHJp
bmcsIHN0cmluZ1Byb3RvRnVuY1RvU3RyaW5nLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMCwgU3RyaW5nUHJvdG90eXBlVmFsdWVPZkludHJpbnNp
Yyk7CkBAIC0xNjUsMTIgKzE2NSwxNCBAQCB2b2lkIFN0cmluZ1Byb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwg
aXRlcmF0b3JGdW5jdGlvbiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSkpOwogCiAgICAgLy8gVGhlIGNvbnN0cnVjdG9yIHdpbGwgYmUgYWRkZWQgbGF0
ZXIsIGFmdGVyIFN0cmluZ0NvbnN0cnVjdG9yIGhhcyBiZWVuIGJ1aWx0CisgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIo
MCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAogU3RyaW5nUHJvdG90
eXBlKiBTdHJpbmdQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogeworICAgIEpTU3RyaW5nKiBlbXB0eSA9
IGpzRW1wdHlTdHJpbmcodm0pOwogICAgIFN0cmluZ1Byb3RvdHlwZSogcHJvdG90eXBlID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3RyaW5nUHJvdG90eXBlPih2bS5oZWFwKSkgU3RyaW5n
UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwotICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24o
dm0sIGdsb2JhbE9iamVjdCk7CisgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xv
YmFsT2JqZWN0LCBlbXB0eSk7CiAgICAgcmV0dXJuIHByb3RvdHlwZTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuaAppbmRleCBlNmUyYzNj
ZWY3YWNkYmUwOWM5NzgwNDZhZjBkN2Y5ODg5YjFhMTRkLi40Y2UzMjY5Mzg3ZmQzMmY1NzdmMzVj
MDYzYjhjYmU2YzBiOTQwODI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdQcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdQcm90b3R5cGUuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6
CiAgICAgU3RyaW5nUHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7Ci0gICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNTdHJpbmcqKTsKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShTdHJpbmdQcm90b3R5cGUsIFN0cmluZ09iamVjdCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDQ1MzA2YWExN2Fl
OTc4MGY3MTM4OTYxZDI0OTdmZjVjY2U1MWJjMTAuLjI4M2ZkZmM2ZTgwODRjMTlkNWQ4MzRiMWVl
YzczMjU3YmI2ZGM4ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmNwcApAQCAtMTkwLDYgKzE5MCwxMSBAQCB2b2lkIFN0cnVjdHVyZTo6dmFsaWRhdGVGbGFn
cygpCiAgICAgaWYgKG92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXgpCiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHR5cGVJbmZvKCkuaW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5
SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybygpKTsKIAorICAgIGJvb2wgb3ZlcnJpZGVzUHV0
UHJvcGVydHlTZWN1cml0eUNoZWNrID0KKyAgICAgICAgbWV0aG9kVGFibGUuZG9QdXRQcm9wZXJ0
eVNlY3VyaXR5Q2hlY2sgIT0gSlNPYmplY3Q6OmRvUHV0UHJvcGVydHlTZWN1cml0eUNoZWNrCisg
ICAgICAgICYmIG1ldGhvZFRhYmxlLmRvUHV0UHJvcGVydHlTZWN1cml0eUNoZWNrICE9IEpTQ2Vs
bDo6ZG9QdXRQcm9wZXJ0eVNlY3VyaXR5Q2hlY2s7CisgICAgUkVMRUFTRV9BU1NFUlQob3ZlcnJp
ZGVzUHV0UHJvcGVydHlTZWN1cml0eUNoZWNrID09IHR5cGVJbmZvKCkuaGFzUHV0UHJvcGVydHlT
ZWN1cml0eUNoZWNrKCkpOworCiAgICAgYm9vbCBvdmVycmlkZXNHZXRPd25Qcm9wZXJ0eU5hbWVz
ID0KICAgICAgICAgbWV0aG9kVGFibGUuZ2V0T3duUHJvcGVydHlOYW1lcyAhPSBKU09iamVjdDo6
Z2V0T3duUHJvcGVydHlOYW1lcwogICAgICAgICAmJiBtZXRob2RUYWJsZS5nZXRPd25Qcm9wZXJ0
eU5hbWVzICE9IEpTQ2VsbDo6Z2V0T3duUHJvcGVydHlOYW1lczsKQEAgLTIwNCwxOCArMjA5LDYg
QEAgdm9pZCBTdHJ1Y3R1cmU6OnZhbGlkYXRlRmxhZ3MoKQogICAgICAgICBtZXRob2RUYWJsZS5n
ZXRQcm90b3R5cGUgIT0gc3RhdGljX2Nhc3Q8TWV0aG9kVGFibGU6OkdldFByb3RvdHlwZUZ1bmN0
aW9uUHRyPihKU09iamVjdDo6Z2V0UHJvdG90eXBlKQogICAgICAgICAmJiBtZXRob2RUYWJsZS5n
ZXRQcm90b3R5cGUgIT0gSlNDZWxsOjpnZXRQcm90b3R5cGU7CiAgICAgUkVMRUFTRV9BU1NFUlQo
b3ZlcnJpZGVzR2V0UHJvdG90eXBlID09IHR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0UHJvdG90eXBl
KCkpOwotCi0gICAgYm9vbCBvdmVycmlkZXNQdXQgPQotICAgICAgICBtZXRob2RUYWJsZS5wdXQg
IT0gSlNPYmplY3Q6OnB1dAotICAgICAgICAmJiBtZXRob2RUYWJsZS5wdXQgIT0gSlNDZWxsOjpw
dXQ7Ci0gICAgUkVMRUFTRV9BU1NFUlQob3ZlcnJpZGVzUHV0ID09IHR5cGVJbmZvKCkub3ZlcnJp
ZGVzUHV0KCkpOwotCi0gICAgYm9vbCBvdmVycmlkZXNEZWZpbmVPd25Qcm9wZXJ0eSA9Ci0gICAg
ICAgIG1ldGhvZFRhYmxlLmRlZmluZU93blByb3BlcnR5ICE9IEpTT2JqZWN0OjpkZWZpbmVPd25Q
cm9wZXJ0eQotICAgICAgICAmJiBtZXRob2RUYWJsZS5kZWZpbmVPd25Qcm9wZXJ0eSAhPSBKU0Nl
bGw6OmRlZmluZU93blByb3BlcnR5OwotCi0gICAgaWYgKG92ZXJyaWRlc0RlZmluZU93blByb3Bl
cnR5KQotICAgICAgICBSRUxFQVNFX0FTU0VSVChvdmVycmlkZXNQdXQpOwogfQogI2Vsc2UKIGlu
bGluZSB2b2lkIFN0cnVjdHVyZTo6dmFsaWRhdGVGbGFncygpIHsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAppbmRleCA5MzBjN2MzYWNjOTI5YjhhNWVjZGRkNzY3
ZWYyOTJlMzdjNTAzZTI0Li40Nzk3MzBjNmZmN2ZhNjgxMDVhZGFmNjgwNjFmMWQ0MDFkMWJkZGYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaApAQCAtMjY4LDEx
ICsyNjgsNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gdHlwZUluZm8oKS5nZXRP
d25Qcm9wZXJ0eVNsb3RJc0ltcHVyZSgpOwogICAgIH0KLQotICAgIGJvb2wgaGFzTm9uUmVpZmll
ZFN0YXRpY1Byb3BlcnRpZXMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHR5cGVJbmZv
KCkuaGFzU3RhdGljUHJvcGVydHlUYWJsZSgpICYmICFzdGF0aWNQcm9wZXJ0aWVzUmVpZmllZCgp
OwotICAgIH0KICAgICAKICAgICAvLyBUeXBlIGFjY2Vzc29ycy4KICAgICBUeXBlSW5mbyB0eXBl
SW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fYmxvYi50eXBlSW5mbyhtX291dE9mTGluZVR5cGVGbGFn
cyk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZN
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRleCBm
ODgwYTRkNGY1YTQ1OWE1Y2Q5ZTI3ODEyOGQyZmY5MDcyMDUyZGVkLi5kNjBmZWI1MjY3Nzg2NmU4
MGQzODViOTI5YzhlNzExMTViNjNkZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xz
L0pTRG9sbGFyVk0uY3BwCkBAIC02ODksNiArNjg5LDExIEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihydW50aW1lQXJyYXlMZW5ndGhHZXR0ZXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih0aGlzT2JqZWN0LT5nZXRM
ZW5ndGgoKSkpOwogfQogCitzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggc3Rh
dGljQ3VzdG9tQWNjZXNzb3JUYWJsZUluZGV4WzJdID0geworICAgIHsgMCwgLTEgfSwKKyAgICB7
IC0xLCAtMSB9LAorfTsKKwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIodGVzdFN0
YXRpY0FjY2Vzc29yR2V0dGVyKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHRl
c3RTdGF0aWNBY2Nlc3NvclB1dHRlcik7CiAKQEAgLTcwOSwzNiArNzE0LDE5IEBAIEpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUih0ZXN0U3RhdGljQWNjZXNzb3JQdXR0ZXIsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0CiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgCi0gICAgSlNWYWx1ZSByZWNlaXZlciA9IEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gcmVj
ZWl2ZXIuaXNPYmplY3QoKSA/IGFzT2JqZWN0KHJlY2VpdmVyKSA6IHJlY2VpdmVyLnN5bnRoZXNp
emVQcm90b3R5cGUoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
SlNPYmplY3QqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIFJFTEVBU0Vf
QVNTRVJUKHRoaXNPYmplY3QpOwogCiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPnB1dERpcmVjdCh2
bSwgUHJvcGVydHlOYW1lKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0ZXN0RmllbGQiKSks
IEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkpOwogfQogCi1zdGF0aWMgY29uc3Qgc3RydWN0IENvbXBh
Y3RIYXNoSW5kZXggc3RhdGljQ3VzdG9tQWNjZXNzb3JUYWJsZUluZGV4WzldID0gewotICAgIHsg
LTEsIC0xIH0sCi0gICAgeyAtMSwgLTEgfSwKLSAgICB7IDIsIC0xIH0sCi0gICAgeyAtMSwgLTEg
fSwKLSAgICB7IDAsIDggfSwKLSAgICB7IC0xLCAtMSB9LAotICAgIHsgLTEsIC0xIH0sCi0gICAg
eyAtMSwgLTEgfSwKLSAgICB7IDEsIC0xIH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IEhh
c2hUYWJsZVZhbHVlIHN0YXRpY0N1c3RvbUFjY2Vzc29yVGFibGVWYWx1ZXNbM10gPSB7CitzdGF0
aWMgY29uc3Qgc3RydWN0IEhhc2hUYWJsZVZhbHVlIHN0YXRpY0N1c3RvbUFjY2Vzc29yVGFibGVW
YWx1ZXNbMV0gPSB7CiAgICAgeyAidGVzdFN0YXRpY0FjY2Vzc29yIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4odGVzdFN0
YXRpY0FjY2Vzc29yR2V0dGVyKSwgKGludHB0cl90KXN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPih0ZXN0U3RhdGljQWNjZXNzb3JQdXR0ZXIpIH0gfSwKLSAgICB7ICJ0
ZXN0U3RhdGljQWNjZXNzb3JEb250RW51bSIsIFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PEdldFZhbHVlRnVuYz4odGVzdFN0YXRpY0FjY2Vzc29yR2V0dGVyKSwg
KGludHB0cl90KXN0YXRpY19jYXN0PFB1dFZhbHVlRnVuYz4odGVzdFN0YXRpY0FjY2Vzc29yUHV0
dGVyKSB9IH0sCi0gICAgeyAidGVzdFN0YXRpY0FjY2Vzc29yUmVhZE9ubHkiLCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxHZXRWYWx1ZUZ1bmM+KHRlc3RTdGF0aWNBY2Nlc3NvckdldHRlciksIDAgfSB9LAog
fTsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBIYXNoVGFibGUgc3RhdGljQ3VzdG9tQWNjZXNzb3JU
YWJsZSA9Ci0gICAgeyAzLCA3LCB0cnVlLCBudWxscHRyLCBzdGF0aWNDdXN0b21BY2Nlc3NvclRh
YmxlVmFsdWVzLCBzdGF0aWNDdXN0b21BY2Nlc3NvclRhYmxlSW5kZXggfTsKKyAgICB7IDEsIDEs
IHRydWUsIG51bGxwdHIsIHN0YXRpY0N1c3RvbUFjY2Vzc29yVGFibGVWYWx1ZXMsIHN0YXRpY0N1
c3RvbUFjY2Vzc29yVGFibGVJbmRleCB9OwogCiBjbGFzcyBTdGF0aWNDdXN0b21BY2Nlc3NvciA6
IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9i
amVjdDsKQEAgLTgwMywyNSArNzkxLDE3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUih0ZXN0
U3RhdGljVmFsdWVQdXR0ZXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFCiAgICAg
cmV0dXJuIHRoaXNPYmplY3QtPnB1dERpcmVjdCh2bSwgUHJvcGVydHlOYW1lKElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJ0ZXN0U3RhdGljVmFsdWUiKSksIEpTVmFsdWU6OmRlY29kZSh2YWx1
ZSkpOwogfQogCi1zdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggc3RhdGljQ3Vz
dG9tVmFsdWVUYWJsZUluZGV4WzhdID0gewotICAgIHsgMSwgLTEgfSwKLSAgICB7IC0xLCAtMSB9
LAotICAgIHsgLTEsIC0xIH0sCi0gICAgeyAtMSwgLTEgfSwKLSAgICB7IC0xLCAtMSB9LAotICAg
IHsgMiwgLTEgfSwKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBzdGF0aWND
dXN0b21WYWx1ZVRhYmxlSW5kZXhbMl0gPSB7CiAgICAgeyAwLCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IEhhc2hUYWJsZVZhbHVlIHN0YXRpY0N1c3Rv
bVZhbHVlVGFibGVWYWx1ZXNbM10gPSB7Ci0gICAgeyAidGVzdFN0YXRpY1ZhbHVlIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21WYWx1ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxHZXRWYWx1ZUZ1bmM+KHRlc3RTdGF0aWNWYWx1
ZUdldHRlciksIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQdXRWYWx1ZUZ1bmM+KHRlc3RTdGF0aWNW
YWx1ZVB1dHRlcikgfSB9LAotICAgIHsgInRlc3RTdGF0aWNWYWx1ZU5vU2V0dGVyIiwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbVZhbHVlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8R2V0VmFsdWVGdW5jPih0ZXN0U3Rh
dGljVmFsdWVHZXR0ZXIpLCAwIH0gfSwKLSAgICB7ICJ0ZXN0U3RhdGljVmFsdWVSZWFkT25seSIs
IFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21WYWx1ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PEdldFZhbHVlRnVuYz4odGVzdFN0YXRpY1ZhbHVlR2V0dGVyKSwgMCB9
IH0sCitzdGF0aWMgY29uc3Qgc3RydWN0IEhhc2hUYWJsZVZhbHVlIHN0YXRpY0N1c3RvbVZhbHVl
VGFibGVWYWx1ZXNbMV0gPSB7CisgICAgeyAidGVzdFN0YXRpY1ZhbHVlIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4odGVz
dFN0YXRpY1ZhbHVlR2V0dGVyKSwgKGludHB0cl90KXN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPih0ZXN0U3RhdGljVmFsdWVQdXR0ZXIpIH0gfSwKIH07CiAKIHN0YXRp
YyBjb25zdCBzdHJ1Y3QgSGFzaFRhYmxlIHN0YXRpY0N1c3RvbVZhbHVlVGFibGUgPQotICAgIHsg
MywgNywgdHJ1ZSwgbnVsbHB0ciwgc3RhdGljQ3VzdG9tVmFsdWVUYWJsZVZhbHVlcywgc3RhdGlj
Q3VzdG9tVmFsdWVUYWJsZUluZGV4IH07CisgICAgeyAxLCAxLCB0cnVlLCBudWxscHRyLCBzdGF0
aWNDdXN0b21WYWx1ZVRhYmxlVmFsdWVzLCBzdGF0aWNDdXN0b21WYWx1ZVRhYmxlSW5kZXggfTsK
IAogY2xhc3MgU3RhdGljQ3VzdG9tVmFsdWUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAg
ICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CkBAIC04NTksNyArODM5LDYgQEAgcHVi
bGljOgogCiBjbGFzcyBPYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNsb3RT
dGF0dXMgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgdXNpbmcgQmFzZSA9IEpTTm9u
RmluYWxPYmplY3Q7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzUHV0OwogcHVibGljOgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29t
cGxldGVTdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDczMWU0ZGY1Njk4Zjc2MzIy
ZWY1ZGFjOTRmZmMwYzhkMGNhYTc1ZTQuLmRiYmNmMWM4ZDFkNjliNTVmMWY3ZTIxNzEzMzA1NzA3
ZWQwNTNiZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0N1c3RvbS5jcHAKQEAgLTI0OCw2ICsyNDgsMjMgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3du
UHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGUK
ICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCh0aGlzT2JqZWN0LCBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBpbmRleCwgc2xvdCk7CiB9CiAKK3ZvaWQgSlNET01XaW5kb3c6
OmRvUHV0UHJvcGVydHlTZWN1cml0eUNoZWNrKEpTT2JqZWN0KiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHV0UHJv
cGVydHlTbG90JikKK3sKKyAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihjZWxsKTsKKworICAgIFN0cmluZyBlcnJv
ck1lc3NhZ2U7CisgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9E
T01XaW5kb3coKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QtPndyYXBwZWQoKSwgZXJy
b3JNZXNzYWdlKSkgeworICAgICAgICAvLyBXZSBvbmx5IGFsbG93IHNldHRpbmcgImxvY2F0aW9u
IiBhdHRyaWJ1dGUgY3Jvc3Mtb3JpZ2luLgorICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IHN0
YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygp
LmxvY2F0aW9uUHVibGljTmFtZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aHJv
d1NlY3VyaXR5RXJyb3IoKmxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2Up
OworICAgICAgICByZXR1cm47CisgICAgfQorfQorCiBib29sIEpTRE9NV2luZG93OjpwdXQoSlND
ZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQog
ewogICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0yNTUsMTAgKzI3
MiwxNyBAQCBib29sIEpTRE9NV2luZG93OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydAogCiAgICAgYXV0byogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGNlbGwpOwogCi0gICAgaWYgKHByb3BlcnR5TmFtZSAhPSBz
dGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMo
KS5sb2NhdGlvblB1YmxpY05hbWUoKSkgeworICAgIFN0cmluZyBlcnJvck1lc3NhZ2U7CisgICAg
aWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QtPndyYXBwZWQoKSwgZXJyb3JNZXNzYWdlKSkgewog
ICAgICAgICAvLyBXZSBvbmx5IGFsbG93IHNldHRpbmcgImxvY2F0aW9uIiBhdHRyaWJ1dGUgY3Jv
c3Mtb3JpZ2luLgotICAgICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nl
c3NUb0RPTVdpbmRvdyhsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LT53cmFwcGVkKCks
IFRocm93U2VjdXJpdHlFcnJvcikpCisgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gc3RhdGlj
X2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkubG9j
YXRpb25QdWJsaWNOYW1lKCkpIHsKKyAgICAgICAgICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7
CisgICAgICAgICAgICBpZiAobG9va3VwUHV0KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgdGhpc09iamVjdCwgdmFsdWUsICpzX2luZm8uc3RhdGljUHJvcEhhc2hUYWJsZSwgc2xv
dCwgcHV0UmVzdWx0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcHV0UmVzdWx0OwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHRocm93U2VjdXJpdHlFcnJv
cigqbGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9yTWVzc2FnZSk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6
OnB1dCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBzbG90KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0
aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0
b20uY3BwCmluZGV4IDljM2Q0YmIwYmMyODk4NGFkNzI5N2FhNWRjNzRmMTdmNDI5YzZlOGIuLjdm
N2ZkZjFmYWFlNjUxM2IzN2Y4YmZlN2Y5MTU3YjFiOTAwMDRjODggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCkBAIC0xMDgsNiArMTA4LDIz
IEBAIGJvb2wgSlNMb2NhdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCog
b2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChvYmplY3QsIGxleGljYWxHbG9i
YWxPYmplY3QsIGluZGV4LCBzbG90KSk7CiB9CiAKK3ZvaWQgSlNMb2NhdGlvbjo6ZG9QdXRQcm9w
ZXJ0eVNlY3VyaXR5Q2hlY2soSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFB1dFByb3BlcnR5U2xv
dCYpCit7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0xvY2F0aW9uKj4ob2JqZWN0
KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisK
KyAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpOworCisgICAgLy8gQWx3YXlz
IGFsbG93IGFzc2lnbmluZyB0byB0aGUgd2hvbGUgbG9jYXRpb24uCisgICAgLy8gSG93ZXZlciwg
YWxsbG93aW5nIGFzc2lnbmluZyBvZiBwaWVjZXMgbWlnaHQgaW5hZHZlcnRlbnRseSBkaXNjbG9z
ZSBwYXJ0cyBvZiB0aGUgb3JpZ2luYWwgbG9jYXRpb24uCisgICAgLy8gU28gZmFsbCB0aHJvdWdo
IHRvIHRoZSBhY2Nlc3MgY2hlY2sgZm9yIHRob3NlLgorICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0g
c3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVz
KCkuaHJlZlB1YmxpY05hbWUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gQmxvY2sgYWNj
ZXNzIGFuZCB0aHJvdyBpZiB0aGVyZSBpcyBhIHNlY3VyaXR5IGVycm9yLgorICAgIEJpbmRpbmdT
ZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzT2JqZWN0LT53cmFwcGVkKCkud2luZG93KCksIFRocm93U2VjdXJpdHlFcnJvcik7Cit9
CisKIGJvb2wgSlNMb2NhdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgcHV0UHJvcGVydHlTbG90KQogewogICAgIFZNJiB2bSA9IGxl
eGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1JlbW90ZURPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggMjViNDEzMmM3OWMyNWM3
MjM1OGZmNWJhYmM0MWYxNWJlOTY3NDIzNi4uMTkyMTA1YzMxOWY1YmM5MDJlY2Q2MzRiNjI4OWI4
YzgzYzBmMzlhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1v
dGVET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
UmVtb3RlRE9NV2luZG93Q3VzdG9tLmNwcApAQCAtNjgsMTIgKzY4LDExIEBAIGJvb2wgSlNSZW1v
dGVET01XaW5kb3c6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBQCiAKICAgICAvLyBXZSBvbmx5IGFsbG93IHNldHRpbmcgImxvY2F0aW9uIiBh
dHRyaWJ1dGUgY3Jvc3Mtb3JpZ2luLgogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gc3RhdGljX2Nh
c3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkubG9jYXRp
b25QdWJsaWNOYW1lKCkpIHsKLSAgICAgICAgYXV0byogc2V0dGVyID0gc19pbmZvLnN0YXRpY1By
b3BIYXNoVGFibGUtPmVudHJ5KHByb3BlcnR5TmFtZSktPnByb3BlcnR5UHV0dGVyKCk7Ci0gICAg
ICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgc2V0dGVyKGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTVmFsdWU6OmVuY29kZShzbG90LnRoaXNWYWx1ZSgpKSwgSlNWYWx1ZTo6ZW5jb2RlKHZhbHVl
KSwgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJvb2wgcHV0
UmVzdWx0ID0gZmFsc2U7CisgICAgICAgIGlmIChsb29rdXBQdXQobGV4aWNhbEdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCB0aGlzT2JqZWN0LCB2YWx1ZSwgKnNfaW5mby5zdGF0aWNQcm9wSGFz
aFRhYmxlLCBzbG90LCBwdXRSZXN1bHQpKQorICAgICAgICAgICAgcmV0dXJuIHB1dFJlc3VsdDsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLQogICAgIHRocm93U2VjdXJpdHlFcnJvcigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9yTWVzc2FnZSk7CiAgICAgcmV0dXJuIGZh
bHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQppbmRleCAzZTI1NjFmYTNjOTZiNzI4OTFlYWIyNDIwYTYwNWY4MzQ1NmM3MGU1
Li43M2E4ZjIxOTJlYzIzODNhYmRkZDkxODE3NzY5YjU1NTcxOTFjMTM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMTE3
Myw4ICsxMTczLDYgQEAgc3ViIEdlbmVyYXRlUHV0CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
e1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8qIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8JHtjbGFzc05hbWV9Kj4oY2VsbCk7XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpO1xuXG4i
KTsKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKFVOTElLRUxZKHRoaXNPYmplY3Qg
IT0gcHV0UHJvcGVydHlTbG90LnRoaXNWYWx1ZSgpKSlcbiIpOwotICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICAgICAgcmV0dXJuIEpTT2JqZWN0OjpwdXQodGhpc09iamVjdCwgbGV4aWNhbEds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgcHV0UHJvcGVydHlTbG90KTtcbiIpOwog
CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUobGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSk7XG5cbiIpOwogCkBAIC0yOTUy
LDYgKzI5NTAsMTEgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgICRzdHJ1Y3R1cmVGbGFn
c3siSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3Ro
SXNOb3RaZXJvIn0gPSAxOwogICAgIH0KIAorICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntDaGVja1NlY3VyaXR5fSkgeworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiICAgIHN0YXRpYyB2b2lkIGRvUHV0UHJvcGVydHlTZWN1cml0eUNoZWNrKEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHV0UHJv
cGVydHlTbG90Jik7XG4iKTsKKyAgICAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6Okhhc1B1dFBy
b3BlcnR5U2VjdXJpdHlDaGVjayJ9ID0gMTsKKyAgICB9CisKICAgICBpZiAoJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UGx1Z2lufSB8fCBHZXROYW1lZFNldHRlck9wZXJhdGlvbigk
aW50ZXJmYWNlKSkgewogICAgICAgICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6UHJvaGliaXRzUHJv
cGVydHlDYWNoaW5nIn0gPSAxOwogICAgIH0KQEAgLTI5NjQsNyArMjk2Nyw2IEBAIHN1YiBHZW5l
cmF0ZUhlYWRlcgogICAgIGlmIChJbnN0YW5jZU92ZXJyaWRlc1B1dCgkaW50ZXJmYWNlKSkgewog
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIHB1dChKU0M6OkpT
Q2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1Zh
bHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6SlNH
bG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgYm9vbCBz
aG91bGRUaHJvdyk7XG4iKTsKLSAgICAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6Ok92ZXJyaWRl
c1B1dCJ9ID0gMTsKICAgICB9CiAgICAgCiAgICAgaWYgKEluc3RhbmNlT3ZlcnJpZGVzRGVmaW5l
T3duUHJvcGVydHkoJGludGVyZmFjZSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REb21haW5TZWN1cml0eS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERvbWFpblNlY3VyaXR5LmgKaW5k
ZXggYjA5Y2IxY2U1NGE0YjAyZmM1OWEzNTdiZDEzMzc1YjMyMGY2M2NlZi4uMDNjNGU0Y2JlNTMx
Zjk3ZTI1NmYxNDI5NWMzNzgyMzhlNDYxZTc4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERvbWFpblNlY3VyaXR5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERvbWFpblNlY3VyaXR5
LmgKQEAgLTM5LDYgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBj
cmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CiAgICAgc3RhdGlj
IEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsK
ICAgICBzdGF0aWMgVGVzdERvbWFpblNlY3VyaXR5KiB0b1dyYXBwZWQoSlNDOjpWTSYsIEpTQzo6
SlNWYWx1ZSk7CisgICAgc3RhdGljIHZvaWQgZG9QdXRQcm9wZXJ0eVNlY3VyaXR5Q2hlY2soSlND
OjpKU09iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlND
OjpQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxs
Kik7CiAKICAgICBERUNMQVJFX0lORk87CkBAIC01OCw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAg
ICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwog
cHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBC
YXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKyAgICBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJl
RmxhZ3MgfCBKU0M6Okhhc1B1dFByb3BlcnR5U2VjdXJpdHlDaGVjayB8IEpTQzo6SGFzU3RhdGlj
UHJvcGVydHlUYWJsZTsKIHByb3RlY3RlZDoKICAgICBKU1Rlc3REb21haW5TZWN1cml0eShKU0M6
OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3REb21haW5TZWN1cml0eT4m
Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNw
cAppbmRleCAyZmFkMWJlNjRjMzI1NTA1ZmEyOTE2MDM0MTJjMjcxMTQyNzMzMzU3Li4zYWUyNWRh
YjgyNDZjZTA2NzBlOTU5MGVkNjY4Y2JiNGNmNjMyMmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRp
Zmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCkBAIC0xOTksOCArMTk5LDYgQEAgYm9v
bCBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEcKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVz
dEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAKLSAgICBpZiAoVU5MSUtFTFkodGhpc09i
amVjdCAhPSBwdXRQcm9wZXJ0eVNsb3QudGhpc1ZhbHVlKCkpKQotICAgICAgICByZXR1cm4gSlNP
YmplY3Q6OnB1dCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBwdXRQcm9wZXJ0eVNsb3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUobGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSk7CiAKICAgICBpZiAoYXV0byBp
bmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50
aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmgKaW5kZXggNDAwZjQxNzAxOTQ5ZTc3MmU1NWZhZDk5
ZWFjY2EwMTcyYmZkYTgyZC4uNzY0YjMyYmE1MDZmZDkyMWU5Y2FiYzQzNDY4YWY3N2VjMGJlODA0
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5oCkBA
IC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChK
U0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwogcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6
SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVy
byB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlOYW1lcyB8IEpTQzo6T3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNQdXQ7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpJ
bnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJv
IHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eU5hbWVzIHwgSlNDOjpPdmVycmlkZXNHZXRP
d25Qcm9wZXJ0eVNsb3Q7CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRl
bnRpZmllcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RJbmRl
eGVkU2V0dGVyTm9JZGVudGlmaWVyPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAppbmRleCBkN2U2OTNjYjI5YzEyMWQ2
ZDdhZTZhOWRmNDNhMDdlNDYyNDU5NmNlLi40ZGI0NDg0NzNkOGM5MDNiNjczYmRlODdjN2I3ZWRm
MGZhYWVlMDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uLmNwcApAQCAtMTk5LDggKzE5OSw2IEBAIGJvb2wgSlNUZXN0SW5kZXhl
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogbGV4CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RJbmRleGVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb24qPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXNPYmplY3QsIGluZm8oKSk7CiAKLSAgICBpZiAoVU5MSUtFTFkodGhpc09iamVjdCAhPSBw
dXRQcm9wZXJ0eVNsb3QudGhpc1ZhbHVlKCkpKQotICAgICAgICByZXR1cm4gSlNPYmplY3Q6OnB1
dCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBw
dXRQcm9wZXJ0eVNsb3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUobGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSk7CiAKICAgICBpZiAoYXV0byBpbmRleCA9IHBh
cnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCmluZGV4IGIxZDdmYzE0NzE5YjRkODZiMWNhODYw
YzA4YWI2YWU5MmM3YjE4NGIuLjZjYTQ0NTU3NmI0Nzc1ZGMxM2E5NjU1YWRjNjU3Mzc0MmUwYzFm
OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhj
ZXB0aW9uLmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFu
YWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZs
YWdzIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVu
Z3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eU5hbWVzIHwgSlNDOjpP
dmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc1B1dDsKKyAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxh
Z3MgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5n
dGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5TmFtZXMgfCBKU0M6Ok92
ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKIHByb3RlY3RlZDoKICAgICBKU1Rlc3RJbmRleGVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb24oSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVj
dCYsIFJlZjxUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uPiYmKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAppbmRleCBk
NzdmMTQ2ZjgzMGM1M2VmMTk0YzNjNTgzYTZhNGEzNzNmYWQyM2Y4Li42OGIwN2Q0MGYyNzY1NDRk
YWY5OTUzODVhNGNjZjczMTUzMjk1MzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5k
ZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcApAQCAtMjA4LDggKzIwOCw2IEBAIGJvb2wgSlNU
ZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2Jh
bE9iamVjdCogbGV4aWNhCiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RJbmRl
eGVkU2V0dGVyV2l0aElkZW50aWZpZXIqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAKLSAgICBpZiAoVU5MSUtFTFkodGhpc09iamVj
dCAhPSBwdXRQcm9wZXJ0eVNsb3QudGhpc1ZhbHVlKCkpKQotICAgICAgICByZXR1cm4gSlNPYmpl
Y3Q6OnB1dCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBwdXRQcm9wZXJ0eVNsb3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUobGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSk7CiAKICAgICBpZiAoYXV0byBpbmRl
eCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRp
Zmllci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oCmluZGV4IGIxYWU5ZWU2ZTFkMGMyOTRiNGQ4MGZl
ZjdlZTM2ZDA1NzNmYTc5MGEuLjlhMmI2MzYyNGY5M2FjMDNhNjI4ZDJkMzEzM2RjY2FiM2E1NGMy
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVy
LmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVI
ZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwg
SlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNO
b3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eU5hbWVzIHwgSlNDOjpPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc1B1dDsKKyAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBK
U0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05v
dFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5TmFtZXMgfCBKU0M6Ok92ZXJyaWRl
c0dldE93blByb3BlcnR5U2xvdDsKIHByb3RlY3RlZDoKICAgICBKU1Rlc3RJbmRleGVkU2V0dGVy
V2l0aElkZW50aWZpZXIoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxU
ZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCmlu
ZGV4IDNhOTFmNDdhZTU0YzI1MmE4NjNmOWVhZGZjYzg4ZGY0MWUwN2VlZTcuLmJjNTc3Y2IwYWVh
ZjY1Y2Y1Y2ZiYjQ1OGI5OTk1MzcxMmEwN2E2ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmgKQEAgLTgz
LDggKzgzLDYgQEAgcHVibGljOgogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENv
bmRpdGlvbjEyKQogICAgIEpTQzo6SlNWYWx1ZSBzdXBwbGVtZW50YWxNZXRob2QzKEpTQzo6SlNH
bG9iYWxPYmplY3QmLCBKU0M6OkNhbGxGcmFtZSYpOwogI2VuZGlmCi1wdWJsaWM6Ci0gICAgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZs
YWdzIHwgSlNDOjpPdmVycmlkZXNQdXQ7CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0SW50ZXJmYWNl
KEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdEludGVyZmFjZT4m
Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
ck5vSWRlbnRpZmllci5jcHAKaW5kZXggYmJmMmYzMzEwMGQwNzZlNjAyMTJhZWI2ZGRlNzg0YjEw
MzdjZWM2MS4uYTdhMzE1MGI1NThkMjdmNzU1NmNjMWUzYjRhMjc5M2E0MjYyM2EwNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRp
Zmllci5jcHAKQEAgLTIyNSw4ICsyMjUsNiBAQCBib29sIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlck5vSWRlbnRpZmllcjo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqCiAgICAg
YXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lk
ZW50aWZpZXIqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmpl
Y3QsIGluZm8oKSk7CiAKLSAgICBpZiAoVU5MSUtFTFkodGhpc09iamVjdCAhPSBwdXRQcm9wZXJ0
eVNsb3QudGhpc1ZhbHVlKCkpKQotICAgICAgICByZXR1cm4gSlNPYmplY3Q6OnB1dCh0aGlzT2Jq
ZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBwdXRQcm9wZXJ0
eVNsb3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUobGV4aWNh
bEdsb2JhbE9iamVjdC0+dm0oKSk7CiAKICAgICBpZiAoYXV0byBpbmRleCA9IHBhcnNlSW5kZXgo
cHJvcGVydHlOYW1lKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlck5vSWRlbnRpZmllci5oCmluZGV4IDdhZjc3MjE4ZDgxMTY3MGMwNDg5YmY5NDc2
ZjhlODVlMGFkZDFiODEuLjg5MWM4YTFiNDEzMThmNzAwZmEyMGM3YmQxODE4NmY3ZDQ1YWQxOTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9J
ZGVudGlmaWVyLmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lk
IGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5j
ZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0
aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlOYW1lcyB8IEpTQzo6T3Zl
cnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNQdXQgfCBKU0M6OlByb2hp
Yml0c1Byb3BlcnR5Q2FjaGluZzsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xv
dElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVy
dHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRP
d25Qcm9wZXJ0eU5hbWVzIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6
OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsKIHByb3RlY3RlZDoKICAgICBKU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9i
amVjdCYsIFJlZjxUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyPiYmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbi5jcHAKaW5kZXggN2U1MmY1N2VkZmMxMTMxYjI4MjIwYjhmZGQ1OThh
ZGFmOWFmZjM4Mi4uNjU3ZmIxYjE1Zjk1OWMxNDE0NzMzMjg3NGNkOWRhMzI4MmQzN2UwMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb24uY3BwCkBAIC0yMjUsOCArMjI1LDYgQEAgYm9vbCBKU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmoKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogCi0gICAgaWYgKFVOTElLRUxZKHRoaXNP
YmplY3QgIT0gcHV0UHJvcGVydHlTbG90LnRoaXNWYWx1ZSgpKSkKLSAgICAgICAgcmV0dXJuIEpT
T2JqZWN0OjpwdXQodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgcHV0UHJvcGVydHlTbG90KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkpOwogCiAgICAgaWYgKGF1dG8g
aW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmgKaW5k
ZXggODQxYTFkZmM4YjllYjk0MDQxNmY1MDJkMWViOTkxZTNkNWNiNWM2Mi4uMTVmMWIwMGYzZWY5
NTUzMGMwM2IwYmYyOWNkMjQ1YTI0OTRjODVmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93
aW5nRXhjZXB0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmgKQEAgLTY0
LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2Vs
bCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRP
d25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50ZXJjZXB0
c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6
T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlOYW1lcyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVy
dHlTbG90IHwgSlNDOjpPdmVycmlkZXNQdXQgfCBKU0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGlu
ZzsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6
U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVy
dHlBYnNlbmNlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5X
aGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eU5hbWVzIHwg
SlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6OlByb2hpYml0c1Byb3BlcnR5
Q2FjaGluZzsKIHByb3RlY3RlZDoKICAgICBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJv
d2luZ0V4Y2VwdGlvbihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbj4mJik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZp
ZXIuY3BwCmluZGV4IDM3ZDQxZDhlMmE1MTExMWRjYjE0MTVkOTYxNzZkOWViN2E3N2U3ODMuLjll
ZjI5YjhkZjhhZGJiMTE5YWY2ZWRkODZiNzNkMzBlYmM2ZGM2YTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNw
cApAQCAtMjM2LDggKzIzNiw2IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0
aElkZW50aWZpZXI6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0CiAgICAgYXV0byog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRp
Zmllcio+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
aW5mbygpKTsKIAotICAgIGlmIChVTkxJS0VMWSh0aGlzT2JqZWN0ICE9IHB1dFByb3BlcnR5U2xv
dC50aGlzVmFsdWUoKSkpCi0gICAgICAgIHJldHVybiBKU09iamVjdDo6cHV0KHRoaXNPYmplY3Qs
IGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHB1dFByb3BlcnR5U2xv
dCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShsZXhpY2FsR2xv
YmFsT2JqZWN0LT52bSgpKTsKIAogICAgIGlmIChhdXRvIGluZGV4ID0gcGFyc2VJbmRleChwcm9w
ZXJ0eU5hbWUpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oCmluZGV4IGM4OGU5NzIyOTFkYzA2Yzg1OWQzMWM2ODAy
Y2E5NGRkNDNjMjNiMjQuLjQwYWRjMDczZWM1ZWJkM2U0NDFhMzYxYjU2ZDNjYjg0NTVkZTgxOTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllci5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlND
OjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMg
dm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwogcHVibGljOgot
ICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1
Y3R1cmVGbGFncyB8IEpTQzo6R2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmVGb3JQcm9wZXJ0eUFi
c2VuY2UgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5M
ZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5TmFtZXMgfCBKU0M6
Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6T3ZlcnJpZGVzUHV0IHwgSlNDOjpQ
cm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0
eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlOYW1lcyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwg
SlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUds
b2JhbE9iamVjdCYsIFJlZjxUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI+
JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcApp
bmRleCA3MWI3MjIzOGE3Nzk3YjA5ODUyNjg0NWM5NmZlNmE1YzRjZDM3YzU3Li4yNWY5M2U2MmNh
NTI2ZDQ0OGY1YTY3YmJmOTkwZmI3NzAyZGZiYjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlck5vSWRlbnRpZmllci5jcHAKQEAgLTIwNCw4ICsyMDQsNiBAQCBib29sIEpTVGVz
dE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsbwogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRT
ZXR0ZXJOb0lkZW50aWZpZXIqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXNPYmplY3QsIGluZm8oKSk7CiAKLSAgICBpZiAoVU5MSUtFTFkodGhpc09iamVjdCAhPSBw
dXRQcm9wZXJ0eVNsb3QudGhpc1ZhbHVlKCkpKQotICAgICAgICByZXR1cm4gSlNPYmplY3Q6OnB1
dCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBw
dXRQcm9wZXJ0eVNsb3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUobGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSk7CiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5p
c1N5bWJvbCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5o
CmluZGV4IGIzMmQwODYwOTdmZmJiNGUzYzg3N2QzZjg2ZDNmZWZhMDU3YWI2YjUuLjFhZmFjYzg0
MzdlYmE3MzhiMjQ3N2E4MDU5NmQyNjRiYTM5YzdiYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmll
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlck5vSWRlbnRpZmllci5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAg
ICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwog
cHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBC
YXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmVGb3JQ
cm9wZXJ0eUFic2VuY2UgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5TmFt
ZXMgfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6T3ZlcnJpZGVzUHV0
IHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRP
d25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50ZXJjZXB0
c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6
T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlOYW1lcyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVy
dHlTbG90IHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7CiBwcm90ZWN0ZWQ6CiAgICAg
SlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2Jh
bE9iamVjdCYsIFJlZjxUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI+JiYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKaW5kZXgg
NDcwMzk0MzhhNzIzOGE2YWUwYTE1NTQzYWE4ODI3ZDdiMzE5ZDUyYi4uNTNiZmI0OTZhYTQ2MTk2
ZjUyNWFkOGE1ZWRjMDJkMjE1ZTYyNjUyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcApAQCAtMjA0LDggKzIwNCw2IEBAIGJvb2wg
SlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGxleGljCiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RO
YW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogCi0gICAgaWYgKFVOTElLRUxZKHRoaXNP
YmplY3QgIT0gcHV0UHJvcGVydHlTbG90LnRoaXNWYWx1ZSgpKSkKLSAgICAgICAgcmV0dXJuIEpT
T2JqZWN0OjpwdXQodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgcHV0UHJvcGVydHlTbG90KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkpOwogCiAgICAgaWYgKCFwcm9w
ZXJ0eU5hbWUuaXNTeW1ib2woKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
clRocm93aW5nRXhjZXB0aW9uLmgKaW5kZXggMjAyZmI5MDdjYzE5YzkwMjMyOWNjYjliOTJhZWYy
NDg2NWY4ODNiMi4uYjhjNjdhYzY4MjFiYjVkNWZmNGM4OGIwMDI3YjQ4MWE1NTQ5NmJiOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCkBA
IC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChK
U0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwogcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6
R2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmVGb3JQcm9wZXJ0eUFic2VuY2UgfCBKU0M6OkludGVy
Y2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBK
U0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5TmFtZXMgfCBKU0M6Ok92ZXJyaWRlc0dldE93blBy
b3BlcnR5U2xvdCB8IEpTQzo6T3ZlcnJpZGVzUHV0IHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNh
Y2hpbmc7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJh
c2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclBy
b3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhF
dmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlOYW1l
cyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpQcm9oaWJpdHNQcm9w
ZXJ0eUNhY2hpbmc7CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3ROYW1l
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZp
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCmluZGV4IDk1MjMzZDczNzk0ODgzYjM3ZGYxYjli
NDE0OWQ5OWFkMmZjY2YzMzUuLjNkOWNlMWJkNDdlZDEzNzU3OWQxMmJkMDIxOTY1ZWM0YjY1YTEy
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5j
cHAKQEAgLTIxMiw4ICsyMTIsNiBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZp
ZXI6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsRwogICAgIGF1dG8q
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcio+KGNl
bGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsK
IAotICAgIGlmIChVTkxJS0VMWSh0aGlzT2JqZWN0ICE9IHB1dFByb3BlcnR5U2xvdC50aGlzVmFs
dWUoKSkpCi0gICAgICAgIHJldHVybiBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGxleGljYWxH
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHB1dFByb3BlcnR5U2xvdCk7CiAgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShsZXhpY2FsR2xvYmFsT2JqZWN0
LT52bSgpKTsKIAogICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oCmluZGV4IGI1Yjc5MWJkZWZi
ZDMzNDFlNGRiNjA1YmQ1NjY1MDUyMGZiOTJlMjEuLjk1ZmZlMTQ1NzIyZTBiYzg2M2E3NDcyNmEw
MGJkYzMwMTc0NTJjNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElk
ZW50aWZpZXIuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQg
YW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJl
RmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNl
IHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3Ro
SXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eU5hbWVzIHwgSlNDOjpPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc1B1dCB8IEpTQzo6UHJvaGli
aXRzUHJvcGVydHlDYWNoaW5nOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0T3duUHJvcGVydHlTbG90
SXNJbXB1cmVGb3JQcm9wZXJ0eUFic2VuY2UgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0
eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dldE93
blByb3BlcnR5TmFtZXMgfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6
UHJvaGliaXRzUHJvcGVydHlDYWNoaW5nOwogcHJvdGVjdGVkOgogICAgIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aElkZW50aWZpZXIoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJl
ZjxUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcj4mJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJ
bmRleGVkR2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAppbmRleCBmNTBhZDBkZjVj
MTIwMzM2YmJjNDgzNjYwYjRmY2NlMWM0ZmJhMjFiLi5lZDU2MjIzYTJjNTM1NDYzZDI0YmU1ZWM0
YTJkM2EwMGU2ZThkZjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXIuY3BwCkBAIC0yMzYsOCArMjM2LDYgQEAgYm9vbCBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVj
dCogbGV4aWMKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXIqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXNPYmplY3QsIGluZm8oKSk7CiAKLSAgICBpZiAoVU5MSUtFTFkodGhpc09iamVjdCAhPSBw
dXRQcm9wZXJ0eVNsb3QudGhpc1ZhbHVlKCkpKQotICAgICAgICByZXR1cm4gSlNPYmplY3Q6OnB1
dCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBw
dXRQcm9wZXJ0eVNsb3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUobGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSk7CiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5p
c1N5bWJvbCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4
ZWRHZXR0ZXIuaAppbmRleCBkNTEwMzE1Y2I2MzNhYjIyZTAxMTU3YzUyZmQ1YzNjMjNmYjc1ZjFh
Li4yNjg5MjdmOWM0NDA0NzE3MjQwZmE3MjBlYzBiNDc5ZWE1ODdjN2ZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmgKQEAgLTY0LDcgKzY0
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcklt
cGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpT
Qzo6SGVhcEFuYWx5emVyJik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9w
ZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93
blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJp
ZGVzR2V0T3duUHJvcGVydHlOYW1lcyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90
IHwgSlNDOjpPdmVycmlkZXNQdXQgfCBKU0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsKKyAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0
dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNl
bmNlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVu
Z3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eU5hbWVzIHwgSlNDOjpP
dmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGlu
ZzsKIHByb3RlY3RlZDoKICAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyKEpT
Qzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXI+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNl
dHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAKaW5kZXggYjk2N2VlNWNh
NTI2MWQ2ZGY2ZmY0ODI5ZTEyOGQ2MTMzZDRiZDY1Yi4uMTlmOWI5Njc3ZjA0ODVlNTQ0Y2E1YmYy
MTcwN2NlODRkZDQzZGM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcApAQCAtMjM2LDggKzIzNiw2
IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcjo6cHV0
KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplCiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyKj4oY2VsbCk7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogCi0gICAg
aWYgKFVOTElLRUxZKHRoaXNPYmplY3QgIT0gcHV0UHJvcGVydHlTbG90LnRoaXNWYWx1ZSgpKSkK
LSAgICAgICAgcmV0dXJuIEpTT2JqZWN0OjpwdXQodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgcHV0UHJvcGVydHlTbG90KTsKICAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkp
OwogCiAgICAgaWYgKGF1dG8gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRl
ckFuZFNldHRlci5oCmluZGV4IGVkNWEzZDM5YTA4NWI3ZmE4YjZiNmQzZGJkNWUzZTE3NzAwZjk3
ODMuLjVhNzIzYTFkNTBmYzcyOGIyZjc3Zjc0NjljYzczZjZlZjdjNjk1ODYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRT
ZXR0ZXIuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5h
bHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxh
Z3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlIHwg
SlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNO
b3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eU5hbWVzIHwgSlNDOjpPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc1B1dCB8IEpTQzo6UHJvaGliaXRz
UHJvcGVydHlDYWNoaW5nOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0T3duUHJvcGVydHlTbG90SXNJ
bXB1cmVGb3JQcm9wZXJ0eUFic2VuY2UgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dldE93blBy
b3BlcnR5TmFtZXMgfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6UHJv
aGliaXRzUHJvcGVydHlDYWNoaW5nOwogcHJvdGVjdGVkOgogICAgIEpTVGVzdE5hbWVkU2V0dGVy
V2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9i
amVjdCYsIFJlZjxUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcj4mJik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zLmNwcAppbmRleCBlNjE1MjMwM2ViNDVhNDRlNDY0NDI5Nzc1MWM2
YTMyNDZhOTJhYzMzLi5lNzI3Y2FmMDk1YzRlYTk4Y2FkZGIzMWZiY2IzMmFjMTg2MWVjM2M3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMuY3BwCkBAIC0yMDQsOCArMjA0LDYgQEAgYm9vbCBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamUKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAKLSAgICBpZiAoVU5MSUtFTFkodGhpc09i
amVjdCAhPSBwdXRQcm9wZXJ0eVNsb3QudGhpc1ZhbHVlKCkpKQotICAgICAgICByZXR1cm4gSlNP
YmplY3Q6OnB1dCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBwdXRQcm9wZXJ0eVNsb3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUobGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSk7CiAKICAgICBpZiAoIXByb3Bl
cnR5TmFtZS5pc1N5bWJvbCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWls
dElucy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaAppbmRleCBlY2NlNGYzN2E0OTcz
M2I3OTM3YTFlM2E4ZDc5MDcxNmI3ZWZlNDFkLi41MDk1MGJjZDYzN2U5YWI2ZTc0NzJhZTQ4M2Yx
MWE2ZjNhZWMwMTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYg
dm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5
emVyJik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0lt
cHVyZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxl
bmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlOYW1lcyB8IEpTQzo6
T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNQdXQgfCBKU0M6OlBy
b2hpYml0c1Byb3BlcnR5Q2FjaGluZzsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5
U2xvdElzSW1wdXJlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2
ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eU5hbWVz
IHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6OlByb2hpYml0c1Byb3Bl
cnR5Q2FjaGluZzsKIHByb3RlY3RlZDoKICAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+JiYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXMuY3BwCmluZGV4IGQzMDU2YzMzZWMxYTY3NDFiZDMwNmQxMjQ1YjJj
ZmY3ZDMxYzRmOWEuLmIyOWVlZmRiZDMwYjk3ZWU1MGJiMjlkNzkyNTkxYmY0ZDllYjMyYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuY3BwCkBAIC0yMzAsOCArMjMwLDYgQEAgYm9vbCBK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6OnB1dChKU0Nl
bGwqIGNlbGwsIEpTR2xvYmEKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyo+KGNlbGwpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKIAotICAgIGlmIChV
TkxJS0VMWSh0aGlzT2JqZWN0ICE9IHB1dFByb3BlcnR5U2xvdC50aGlzVmFsdWUoKSkpCi0gICAg
ICAgIHJldHVybiBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHB1dFByb3BlcnR5U2xvdCk7CiAgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRShsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpKTsKIAog
ICAgIGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXMuaAppbmRleCBjODEwY2RlZDk4Y2VhYWY2OGU5YTEzNzVlM2U1M2Y1NGI0MDFjYjJkLi5kNjI2
Yzc0ODEwMGFhZDA5NTgzZmIyNDBlODYyOTdkY2E2OGU1OTcwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVn
YWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllcy5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBh
bmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwogcHVibGljOgotICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVG
bGFncyB8IEpTQzo6R2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmVGb3JQcm9wZXJ0eUFic2VuY2Ug
fCBKU0M6Okhhc1N0YXRpY1Byb3BlcnR5VGFibGUgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dl
dE93blByb3BlcnR5TmFtZXMgfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpT
Qzo6T3ZlcnJpZGVzUHV0IHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZs
YWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSB8
IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3Bl
cnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlOYW1lcyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlND
OjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzKEpTQzo6U3RydWN0dXJlKiwgSlNE
T01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxl
UHJvcGVydGllcz4mJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAppbmRleCBhYWI3MGM3ZmY0
YWVkOWI1M2ZhYjk1NDk4MjAzMWE3NDFjNTA4NDRkLi5lODA0MGYwMjgzNDMyYzQzZjYxYjg0MjVi
ZmE1YWMyNzQyNDYyZDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCkBAIC0yMzAsOCArMjMw
LDYgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjoKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAKLSAgICBpZiAoVU5MSUtFTFkodGhpc09iamVjdCAh
PSBwdXRQcm9wZXJ0eVNsb3QudGhpc1ZhbHVlKCkpKQotICAgICAgICByZXR1cm4gSlNPYmplY3Q6
OnB1dCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBwdXRQcm9wZXJ0eVNsb3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUobGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSk7CiAKICAgICBpZiAoIXByb3BlcnR5TmFt
ZS5pc1N5bWJvbCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0
aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaAppbmRleCAyZjhlMWNhYzEzODJhMTBj
YmU4YzAzYTY5ZjIzYmM5MjEyNjkyYmU3Li5jMjI4OWI3MDYzMTY2Y2RhZjlmYzQyNmQ4Zjc1YjYy
YzRiZTkzZDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5k
TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3Bl
cnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYg
dm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5
emVyJik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0lt
cHVyZSB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93
blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJp
ZGVzR2V0T3duUHJvcGVydHlOYW1lcyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90
IHwgSlNDOjpPdmVycmlkZXNQdXQgfCBKU0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsKKyAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0
dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlIHwgSlNDOjpIYXNTdGF0
aWNQcm9wZXJ0eVRhYmxlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eU5h
bWVzIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6OlByb2hpYml0c1By
b3BlcnR5Q2FjaGluZzsKIHByb3RlY3RlZDoKICAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKEpTQzo6U3Ry
dWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+JiYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
UGx1Z2luSW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwCmluZGV4IGI5OGJmNmUzOTU1NDNjN2ZiZGVk
ZjBjZDdkMjYwNzJmM2ZiZTExOTkuLmUyODY4YmFmZTU0Yzg3ZTViZTBkODU1ZmEwNGMzOGJlNzU1
MjFmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwCkBAIC0xODEsOCArMTgx
LDYgQEAgYm9vbCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2U6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWMKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTVGVzdFBsdWdpbkludGVyZmFjZSo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKIAotICAgIGlmIChVTkxJS0VMWSh0aGlzT2Jq
ZWN0ICE9IHB1dFByb3BlcnR5U2xvdC50aGlzVmFsdWUoKSkpCi0gICAgICAgIHJldHVybiBKU09i
amVjdDo6cHV0KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHB1dFByb3BlcnR5U2xvdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRShsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpKTsKIAogICAgIGJvb2wgcHV0UmVz
dWx0ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmgKaW5kZXggYjkwZmRlNDBj
YzVmOWMwNTJjMzE0ZGY4NzZmMjNlOGQ2OGNhNDY1Zi4uYWQ1MjJkYTEzNzk2MjhjZTZjM2Y2ZTA0
NDA4MGI2NTNkMTQ0N2VkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuaApAQCAtNjcs
NyArNjcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwq
LCBKU0M6OkhlYXBBbmFseXplciYpOwogcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6SW50ZXJj
ZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpT
Qzo6T3ZlcnJpZGVzR2V0Q2FsbERhdGEgfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xv
dCB8IEpTQzo6T3ZlcnJpZGVzUHV0IHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5X
aGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRDYWxsRGF0YSB8IEpTQzo6T3Zl
cnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7
CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0UGx1Z2luSW50ZXJmYWNlKEpTQzo6U3RydWN0dXJlKiwg
SlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdFBsdWdpbkludGVyZmFjZT4mJik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgKaW5kZXggMzcxNjAyMWM2ZmRmNWZm
NmQ4YzVjMzA0MDNhM2MyMDIwOWY2ZDhhMC4uYzBmYjEzOWI2ZjkwZDg5NjgwMTUxZTkxOGU3OTU3
OGQ0Y2RjNTVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19y
dW50aW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgK
QEAgLTkxLDcgKzkxLDcgQEAgcHJpdmF0ZToKIGNsYXNzIE9iamNGYWxsYmFja09iamVjdEltcCBm
aW5hbCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNpbmcg
QmFzZSA9IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0OwotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93
blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldENhbGxEYXRhIHwgT3ZlcnJpZGVzUHV0OworICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldENhbGxE
YXRhOwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsK
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBKU0M6OlN1YnNwYWNlQWNjZXNzPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgKaW5kZXggNGE3YjJmMWNlY2E3YTM2YTA2
MzA2ZTE4MjM4ZGUxOGQyOWFkNDI3OS4uMDU0MTE0MTQ3ZjhlYmI5MGZiNDJjOTA1YjNlYjRjMTJl
NTVmZjE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCkBAIC0zNSw3ICsz
NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgUnVudGltZUFycmF5IGZpbmFsIDogcHVibGlj
IEpTQXJyYXkgewogcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0FycmF5OwotICAgIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
cyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5
TmFtZXMgfCBPdmVycmlkZXNQdXQgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blBy
b3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5TmFtZXMgfCBJbnRlcmNlcHRzR2V0
T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvOwogICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENlbGxUeXBlLCBKU0M6OlN1YnNwYWNlQWNjZXNzPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9vYmplY3QuaAppbmRleCBkMWU0ZGU0YWUxYjdjYTQ1YjM1NzgxOWI5ZjNmMWVi
NDg3YWM2YzY0Li5jYWEwMmEyYjE4ZWNhYjI1NjE2ZDc2M2Y5YTg2OTM2NjJhYzllOGEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaApAQCAtMzcsNyArMzcsNyBAQCBFeGNl
cHRpb24qIHRocm93UnVudGltZU9iamVjdEludmFsaWRBY2Nlc3NFcnJvcihKU0dsb2JhbE9iamVj
dCosIFRocm93U2NvcGUmKTsKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFJ1bnRpbWVPYmplY3QgOiBw
dWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTTm9u
RmluYWxPYmplY3Q7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwg
T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlOYW1lcyB8IE92ZXJyaWRlc0dldENhbGxEYXRhIHwgT3Zl
cnJpZGVzUHV0IHwgR2V0T3duUHJvcGVydHlTbG90TWF5QmVXcm9uZ0Fib3V0RG9udEVudW07Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0T3du
UHJvcGVydHlOYW1lcyB8IE92ZXJyaWRlc0dldENhbGxEYXRhIHwgR2V0T3duUHJvcGVydHlTbG90
TWF5QmVXcm9uZ0Fib3V0RG9udEVudW07CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRz
RGVzdHJ1Y3Rpb24gPSB0cnVlOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIEpT
Qzo6U3Vic3BhY2VBY2Nlc3M+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgKaW5kZXggZjdjNjhkODlkNjZjYzZjMDVlMGY5
ZjNlNTFkMzk0YjNhOWMxZjMxOC4uNjljYjEyNjY5YTFmZjYxNTRhMDU5OTE3MTdmZDBiNDQ1MDcx
YmQyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvSlNOUE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL0pTTlBPYmplY3QuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBOUFJ1bnRpbWVPYmpl
Y3RNYXA7CiBjbGFzcyBKU05QT2JqZWN0IGZpbmFsIDogcHVibGljIEpTQzo6SlNEZXN0cnVjdGli
bGVPYmplY3QgewogcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0OwotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBC
YXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwg
SlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eU5hbWVzIHwgSlNDOjpPdmVycmlkZXNHZXRDYWxs
RGF0YSB8IEpTQzo6T3ZlcnJpZGVzUHV0IHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RNYXlCZVdy
b25nQWJvdXREb250RW51bTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3Bl
cnR5U2xvdCB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlOYW1lcyB8IEpTQzo6T3ZlcnJp
ZGVzR2V0Q2FsbERhdGEgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdE1heUJlV3JvbmdBYm91dERv
bnRFbnVtOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIEpTQzo6U3Vic3BhY2VB
Y2Nlc3M+CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0m
IHZtKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGNmMTRlYzVhNGI5MTg0MTczN2RjYmVlNjJjMGJiYjE1NTg3YWRlOTQuLmIx
YTIwMjM2NWMzZGZkZjY0M2Q4MGQ2NGVhODAwMWJhNjk1MzM4OWQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAyMS0wNS0xOCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4K
KworICAgICAgICBUZW1wb3JhcmlseSByZXZlcnQgcjI3NjU5MiBhcyBpdCBicmVha3Mgc29tZSBu
YXRpdmUgYXBwcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI1OTE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLWZyYW1lLWFjY2Vzcy1vYmplY3QtZ2V0UHJv
dG90eXBlT2YtaW4tcHV0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3Vy
aXR5L2Nyb3NzLWZyYW1lLWFjY2Vzcy1vYmplY3QtZ2V0UHJvdG90eXBlT2YtaW4tcHV0Lmh0bWw6
CisgICAgICAgICoganMvZG9tL3JlZmxlY3Qtc2V0LW9udG8tZG9tLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBqcy9kb20vc2NyaXB0LXRlc3RzL3JlZmxlY3Qtc2V0LW9udG8tZG9tLmpzOgorCiAy
MDIxLTA1LTEzICBBbWlyIE1hcmsgSnIgIDxhbWlyX21hcmtAYXBwbGUuY29tPgogCiAgICAgICAg
IFtNYWNPUyBXazFdIG1lZGlhL3ZpZGVvLXBsYXliYWNrLXF1YWxpdHkuaHRtbCBpcyBhIGZsYWt5
IGZhaWx1cmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDU2ZDE1OTA2ZWUxZjhj
OGE3OTkxMWM1M2JjZDgxYzVjYmE2ZmY5ZWMuLmI2ZjExNDQ3Y2U2Nzc1YjEzMTllNzdiODc1MTlh
MzAzZjBiZmI0ODYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDIxLTA1LTE4ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFRlbXBvcmFyaWx5IHJldmVydCByMjc2NTkyIGFzIGl0IGJyZWFrcyBzb21lIG5h
dGl2ZSBhcHBzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjU5MTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2ludGVyZmFj
ZS1vYmplY3Qtc2V0LXJlY2VpdmVyLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiB3
ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9pbnRlcmZhY2Utb2Jq
ZWN0LXNldC1yZWNlaXZlci5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2ludGVyZmFjZS1wcm90b3R5cGUtY29uc3Ry
dWN0b3Itc2V0LXJlY2VpdmVyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0t
dGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9pbnRlcmZhY2UtcHJvdG90eXBlLWNvbnN0
cnVjdG9yLXNldC1yZWNlaXZlci5odG1sOgorCiAyMDIxLTA1LTEzICBNYXJ0aW4gUm9iaW5zb24g
IDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KIAogICAgICAgICBJbXBvcnQgbmV3IGFuZCB1cGRhdGVk
IGNzcy1zY3JvbGwtc25hcCBXUFQgdGVzdHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvY3Jvc3MtZnJhbWUtYWNjZXNzLW9iamVjdC1nZXRQcm90b3R5cGVPZi1p
bi1wdXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9z
cy1mcmFtZS1hY2Nlc3Mtb2JqZWN0LWdldFByb3RvdHlwZU9mLWluLXB1dC1leHBlY3RlZC50eHQK
aW5kZXggZWMxNGRlMmNkNjBiOGJhNTMxMmFkNzFjNzRhNzdhNjkxMzZlNzVmMy4uNmQ1YmNhMWNm
M2EzMmUyOGNhYWMwMmIzYTVmN2NmYzE4MDM1NGFjYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1mcmFtZS1hY2Nlc3Mtb2JqZWN0LWdldFByb3RvdHlw
ZU9mLWluLXB1dC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9jcm9zcy1mcmFtZS1hY2Nlc3Mtb2JqZWN0LWdldFByb3RvdHlwZU9mLWluLXB1dC1leHBl
Y3RlZC50eHQKQEAgLTEsNyArMSw1IEBACiBUaGlzIHRlc3RzIHRoYXQgeW91IGNhbid0IGdldCB0
aGUgcHJvdG90eXBlIG9mIHRoZSB3aW5kb3cgZHVyaW5nIFtbUHV0XV0gb3BlcmF0aW9uLgogCi1Q
QVNTIGFycmF5LmNvY29hID0gY29jb2FWYWx1ZSB0aHJldyBleGNlcHRpb24gU2VjdXJpdHlFcnJv
cjogQmxvY2tlZCBhIGZyYW1lIHdpdGggb3JpZ2luICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiIGZy
b20gYWNjZXNzaW5nIGEgY3Jvc3Mtb3JpZ2luIGZyYW1lLiBQcm90b2NvbHMsIGRvbWFpbnMsIGFu
ZCBwb3J0cyBtdXN0IG1hdGNoLi4KLVBBU1MgJ3N0cicuY29jb2EgPSBjb2NvYVZhbHVlIHRocmV3
IGV4Y2VwdGlvbiBTZWN1cml0eUVycm9yOiBCbG9ja2VkIGEgZnJhbWUgd2l0aCBvcmlnaW4gImh0
dHA6Ly8xMjcuMC4wLjE6ODAwMCIgZnJvbSBhY2Nlc3NpbmcgYSBjcm9zcy1vcmlnaW4gZnJhbWUu
IFByb3RvY29scywgZG9tYWlucywgYW5kIHBvcnRzIG11c3QgbWF0Y2guLgogUEFTUzogc3VjY2Vz
c2Z1bGx5UGFyc2VkIHNob3VsZCBiZSAndHJ1ZScgYW5kIGlzLgogCiBURVNUIENPTVBMRVRFCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLWZyYW1lLWFj
Y2Vzcy1vYmplY3QtZ2V0UHJvdG90eXBlT2YtaW4tcHV0Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLWZyYW1lLWFjY2Vzcy1vYmplY3QtZ2V0UHJvdG90eXBlT2Yt
aW4tcHV0Lmh0bWwKaW5kZXggMWFjZDgxY2MzN2I4YWFmMzUxNzBjOGM3YTUwMWEwNTVkZDczYmQ3
ZC4uMWRmZTEzNTQ2MGQyYmY2YzliNjdhMmUxMzczYTQwZTNiMWM3NjM1MyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1mcmFtZS1hY2Nlc3Mtb2JqZWN0
LWdldFByb3RvdHlwZU9mLWluLXB1dC5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvY3Jvc3MtZnJhbWUtYWNjZXNzLW9iamVjdC1nZXRQcm90b3R5cGVPZi1pbi1wdXQu
aHRtbApAQCAtMTUsNyArMTUsNyBAQAogICAgICAgICBkb1Rlc3QgPSBmdW5jdGlvbigpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHRhcmdldFdpbmRvdyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJ0YXJnZXQiKS5jb250ZW50V2luZG93OwotICAgICAgICAgICAgYXJyYXkgPSBbXTsKKyAgICAg
ICAgICAgIHZhciBhcnJheSA9IFtdOwogICAgICAgICAgICAgYXJyYXkuX19wcm90b19fLl9fcHJv
dG9fXyA9IHRhcmdldFdpbmRvdzsKICAgICAgICAgICAgIGFycmF5WzBdID0gMTEuMTE7CiAgICAg
ICAgICAgICBhcnJheVsyXSA9IDIyLjIyOwpAQCAtMjQsMTUgKzI0LDExIEBACiAgICAgICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoInRvU3RyaW5nIGlzIGNhbGxlZCBieSAxMDEwMTAxMCBzZXR0
ZXIiKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9OwotICAgICAgICAgICAgY29j
b2FWYWx1ZSA9IHsKKyAgICAgICAgICAgIGFycmF5WyJjb2NvYSJdID0gewogICAgICAgICAgICAg
ICAgIHRvU3RyaW5nKCkgewogICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJ0b1N0cmlu
ZyBpcyBjYWxsZWQgYnkgY29jb2Egc2V0dGVyIik7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfTsKLSAgICAgICAgICAgIHNob3VsZFRocm93RXJyb3JOYW1lKCJhcnJheS5jb2NvYSA9
IGNvY29hVmFsdWUiLCAiU2VjdXJpdHlFcnJvciIpOwotCi0gICAgICAgICAgICBPYmplY3Quc2V0
UHJvdG90eXBlT2YoU3RyaW5nLnByb3RvdHlwZSwgdGFyZ2V0V2luZG93KTsKLSAgICAgICAgICAg
IHNob3VsZFRocm93RXJyb3JOYW1lKCInc3RyJy5jb2NvYSA9IGNvY29hVmFsdWUiLCAiU2VjdXJp
dHlFcnJvciIpOwogICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CiAgICAgICAgIH0KICAgICA8
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9pbnRlcmZhY2Utb2JqZWN0LXNldC1y
ZWNlaXZlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvaW50ZXJmYWNlLW9iamVjdC1zZXQt
cmVjZWl2ZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZGZh
M2JhYWU4YWZmNzYxNzI4OGQ0MWQ4YThjZGZmMTVkZjg2YzE5Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9pbnRlcmZhY2Utb2JqZWN0
LXNldC1yZWNlaXZlci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAK
LQotUEFTUyBEaXJlY3QgW1tTZXRdXSBwcmVzZXJ2ZXMgW1tFbnVtZXJhYmxlXV06IGZhbHNlIHBy
b3BlcnR5IGF0dHJpYnV0ZQotUEFTUyBQcm90b3R5cGUgY2hhaW4gW1tTZXRdXSBjcmVhdGVzIHBy
b3BlcnR5IG9uIHJlY2VpdmVyCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9pbnRlcmZhY2Ut
b2JqZWN0LXNldC1yZWNlaXZlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2ludGVyZmFjZS1vYmplY3Qt
c2V0LXJlY2VpdmVyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0MWI1NTEw
ZmQ2MzllOWY2YzViZjI0MzBiYzVjMjIyNzdkNDk5MzEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2ludGVyZmFjZS1vYmplY3Qtc2V0
LXJlY2VpdmVyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT53aW5kb3cuSW50ZXJmYWNlIGlz
IGRlZmluZWQgb24gW1tTZXRdXSByZWNlaXZlcjwvdGl0bGU+Ci08bGluayByZWw9ImhlbHAiIGhy
ZWY9Imh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2RlZmluZS10aGUtZ2xvYmFsLXBy
b3BlcnR5LXJlZmVyZW5jZXMiPgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLSJ1c2Ugc3RyaWN0IjsKLWNvbnN0IHRlc3RWYWx1ZSA9
IE9iamVjdC5mcmVlemUoZnVuY3Rpb24oKSB7fSk7Ci0KLXRlc3QoKCkgPT4gewotICB3aW5kb3cu
V2luZG93ID0gdGVzdFZhbHVlOwotICBhc3NlcnRfZmFsc2Uod2luZG93LnByb3BlcnR5SXNFbnVt
ZXJhYmxlKCJXaW5kb3ciKSk7Ci0KLSAgd2luZG93Lkhpc3RvcnkgPSB0ZXN0VmFsdWU7Ci0gIGFz
c2VydF9mYWxzZSh3aW5kb3cucHJvcGVydHlJc0VudW1lcmFibGUoIkhpc3RvcnkiKSk7Ci0KLSAg
d2luZG93LkhUTUxEaXZFbGVtZW50ID0gdGVzdFZhbHVlOwotICBhc3NlcnRfZmFsc2Uod2luZG93
LnByb3BlcnR5SXNFbnVtZXJhYmxlKCJIVE1MRGl2RWxlbWVudCIpKQotfSwgIkRpcmVjdCBbW1Nl
dF1dIHByZXNlcnZlcyBbW0VudW1lcmFibGVdXTogZmFsc2UgcHJvcGVydHkgYXR0cmlidXRlIik7
Ci0KLXRlc3QoKCkgPT4gewotICBjb25zdCBoZWlyID0gT2JqZWN0LmNyZWF0ZSh3aW5kb3cpOwot
Ci0gIGhlaXIuTG9jYXRpb24gPSB0ZXN0VmFsdWU7Ci0gIGFzc2VydF9lcXVhbHMoaGVpci5Mb2Nh
dGlvbiwgdGVzdFZhbHVlKTsKLSAgYXNzZXJ0X25vdF9lcXVhbHMod2luZG93LkxvY2F0aW9uLCB0
ZXN0VmFsdWUpOwotCi0gIGhlaXIuSFRNTERvY3VtZW50ID0gdGVzdFZhbHVlOwotICBhc3NlcnRf
ZXF1YWxzKGhlaXIuSFRNTERvY3VtZW50LCB0ZXN0VmFsdWUpOwotICBhc3NlcnRfbm90X2VxdWFs
cyh3aW5kb3cuSFRNTERvY3VtZW50LCB0ZXN0VmFsdWUpOwotCi0gIGhlaXIuSFRNTFByZUVsZW1l
bnQgPSB0ZXN0VmFsdWU7Ci0gIGFzc2VydF9lcXVhbHMoaGVpci5IVE1MUHJlRWxlbWVudCwgdGVz
dFZhbHVlKTsKLSAgYXNzZXJ0X25vdF9lcXVhbHMod2luZG93LkhUTUxQcmVFbGVtZW50LCB0ZXN0
VmFsdWUpOwotfSwgIlByb3RvdHlwZSBjaGFpbiBbW1NldF1dIGNyZWF0ZXMgcHJvcGVydHkgb24g
cmVjZWl2ZXIiKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2ludGVyZmFj
ZS1wcm90b3R5cGUtY29uc3RydWN0b3Itc2V0LXJlY2VpdmVyLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQt
YmluZGluZy9pbnRlcmZhY2UtcHJvdG90eXBlLWNvbnN0cnVjdG9yLXNldC1yZWNlaXZlci1leHBl
Y3RlZC50eHQKaW5kZXggYmRmYTNiYWFlOGFmZjc2MTcyODhkNDFkOGE4Y2RmZjE1ZGY4NmMxOS4u
NDU2YzgxNzI1ODFjODM3ZDE0NWJiNTZkOTNjNmY4ZDk5MGM3ZWE2MiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlw
dC1iaW5kaW5nL2ludGVyZmFjZS1wcm90b3R5cGUtY29uc3RydWN0b3Itc2V0LXJlY2VpdmVyLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvaW50ZXJmYWNlLXByb3RvdHlwZS1jb25zdHJ1
Y3Rvci1zZXQtcmVjZWl2ZXItZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAogCi1QQVNTIERp
cmVjdCBbW1NldF1dIHByZXNlcnZlcyBbW0VudW1lcmFibGVdXTogZmFsc2UgcHJvcGVydHkgYXR0
cmlidXRlCi1QQVNTIFByb3RvdHlwZSBjaGFpbiBbW1NldF1dIGNyZWF0ZXMgcHJvcGVydHkgb24g
cmVjZWl2ZXIKK1BBU1MgV2luZG93LCBMb2NhdGlvbiwgTmF2aWdhdG9yLCBIVE1MRG9jdW1lbnQs
IGFuZCBIVE1MSGVhZEVsZW1lbnQKK1BBU1MgQWxsIHdpbmRvdy4qIGNvbnN0cnVjdG9ycwogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dl
YklETC9lY21hc2NyaXB0LWJpbmRpbmcvaW50ZXJmYWNlLXByb3RvdHlwZS1jb25zdHJ1Y3Rvci1z
ZXQtcmVjZWl2ZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9pbnRlcmZhY2UtcHJvdG90eXBlLWNvbnN0
cnVjdG9yLXNldC1yZWNlaXZlci5odG1sCmluZGV4IGNmMDIwZDIxMTU2YjM1NTAzNDM0MWZiMWJj
OGI4ZWJjODYxMGVlNzQuLjIwZjMzZjI0M2FiZWVmOTAxMzU3ZmIyMDI2ZjBmZTIxODIyNzc2NzMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
V2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9pbnRlcmZhY2UtcHJvdG90eXBlLWNvbnN0cnVjdG9y
LXNldC1yZWNlaXZlci5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9pbnRlcmZhY2UtcHJvdG90eXBl
LWNvbnN0cnVjdG9yLXNldC1yZWNlaXZlci5odG1sCkBAIC02LDMxICs2LDQyIEBACiA8c2NyaXB0
IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
PgogInVzZSBzdHJpY3QiOwotY29uc3QgdGVzdFZhbHVlID0gT2JqZWN0LmZyZWV6ZShmdW5jdGlv
bigpIHt9KTsKIAogdGVzdCgoKSA9PiB7Ci0gIExvY2F0aW9uLnByb3RvdHlwZS5jb25zdHJ1Y3Rv
ciA9IHRlc3RWYWx1ZTsKLSAgYXNzZXJ0X2ZhbHNlKExvY2F0aW9uLnByb3RvdHlwZS5wcm9wZXJ0
eUlzRW51bWVyYWJsZSgiY29uc3RydWN0b3IiKSk7CisgIHdpbmRvdy5jb25zdHJ1Y3RvciA9IG51
bGw7CisgIGFzc2VydF9lcXVhbHMoV2luZG93LnByb3RvdHlwZS5jb25zdHJ1Y3RvciwgV2luZG93
KTsKKworICBsb2NhdGlvbi5jb25zdHJ1Y3RvciA9IGZhbHNlOworICBhc3NlcnRfZXF1YWxzKExv
Y2F0aW9uLnByb3RvdHlwZS5jb25zdHJ1Y3RvciwgTG9jYXRpb24pOworCisgIG5hdmlnYXRvci5j
b25zdHJ1Y3RvciA9IDE7CisgIGFzc2VydF9lcXVhbHMoTmF2aWdhdG9yLnByb3RvdHlwZS5jb25z
dHJ1Y3RvciwgTmF2aWdhdG9yKTsKIAotICBIVE1MRG9jdW1lbnQucHJvdG90eXBlLmNvbnN0cnVj
dG9yID0gdGVzdFZhbHVlOwotICBhc3NlcnRfZmFsc2UoSFRNTERvY3VtZW50LnByb3RvdHlwZS5w
cm9wZXJ0eUlzRW51bWVyYWJsZSgiY29uc3RydWN0b3IiKSk7CisgIGRvY3VtZW50LmNvbnN0cnVj
dG9yID0ge307CisgIGFzc2VydF9lcXVhbHMoSFRNTERvY3VtZW50LnByb3RvdHlwZS5jb25zdHJ1
Y3RvciwgSFRNTERvY3VtZW50KTsKIAotICBIVE1MRGl2RWxlbWVudC5wcm90b3R5cGUuY29uc3Ry
dWN0b3IgPSB0ZXN0VmFsdWU7Ci0gIGFzc2VydF9mYWxzZShIVE1MRGl2RWxlbWVudC5wcm90b3R5
cGUucHJvcGVydHlJc0VudW1lcmFibGUoImNvbnN0cnVjdG9yIikpOwotfSwgIkRpcmVjdCBbW1Nl
dF1dIHByZXNlcnZlcyBbW0VudW1lcmFibGVdXTogZmFsc2UgcHJvcGVydHkgYXR0cmlidXRlIik7
CisgIGRvY3VtZW50LmhlYWQuY29uc3RydWN0b3IgPSBbXTsKKyAgYXNzZXJ0X2VxdWFscyhIVE1M
SGVhZEVsZW1lbnQucHJvdG90eXBlLmNvbnN0cnVjdG9yLCBIVE1MSGVhZEVsZW1lbnQpOworfSwg
IldpbmRvdywgTG9jYXRpb24sIE5hdmlnYXRvciwgSFRNTERvY3VtZW50LCBhbmQgSFRNTEhlYWRF
bGVtZW50Iik7CiAKIHRlc3QoKCkgPT4gewotICB3aW5kb3cuY29uc3RydWN0b3IgPSB0ZXN0VmFs
dWU7Ci0gIGFzc2VydF9lcXVhbHMod2luZG93LmNvbnN0cnVjdG9yLCB0ZXN0VmFsdWUpOwotICBh
c3NlcnRfZXF1YWxzKFdpbmRvdy5wcm90b3R5cGUuY29uc3RydWN0b3IsIFdpbmRvdyk7CisgIGZv
ciAobGV0IGtleSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh3aW5kb3cpKSB7CisgICAg
aWYgKCEvXltBLVpdLy50ZXN0KGtleSkpIGNvbnRpbnVlOwogCi0gIG5hdmlnYXRvci5jb25zdHJ1
Y3RvciA9IHRlc3RWYWx1ZTsKLSAgYXNzZXJ0X2VxdWFscyhuYXZpZ2F0b3IuY29uc3RydWN0b3Is
IHRlc3RWYWx1ZSk7Ci0gIGFzc2VydF9lcXVhbHMoTmF2aWdhdG9yLnByb3RvdHlwZS5jb25zdHJ1
Y3RvciwgTmF2aWdhdG9yKTsKKyAgICBsZXQgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3Iod2luZG93LCBrZXkpOworICAgIGlmICghZGVzYyB8fCBkZXNjLmVudW1lcmFibGUp
IGNvbnRpbnVlOworICAgIGxldCB7dmFsdWV9ID0gZGVzYzsKKyAgICBpZiAodHlwZW9mIHZhbHVl
ICE9PSAiZnVuY3Rpb24iKSBjb250aW51ZTsKKyAgICBsZXQge3Byb3RvdHlwZX0gPSB2YWx1ZTsK
KyAgICBpZiAoIXByb3RvdHlwZSkgY29udGludWU7CisKKyAgICBsZXQgaGVpciA9IE9iamVjdC5j
cmVhdGUocHJvdG90eXBlKTsKKyAgICBsZXQgbmV3Q29uc3RydWN0b3IgPSBmdW5jdGlvbigpIHt9
OworICAgIGhlaXIuY29uc3RydWN0b3IgPSBuZXdDb25zdHJ1Y3RvcjsKIAotICBjb25zdCBzcGFu
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwotICBzcGFuLmNvbnN0cnVjdG9yID0g
dGVzdFZhbHVlOwotICBhc3NlcnRfZXF1YWxzKHNwYW4uY29uc3RydWN0b3IsIHRlc3RWYWx1ZSk7
Ci0gIGFzc2VydF9lcXVhbHMoSFRNTFNwYW5FbGVtZW50LnByb3RvdHlwZS5jb25zdHJ1Y3Rvciwg
SFRNTFNwYW5FbGVtZW50KTsKLX0sICJQcm90b3R5cGUgY2hhaW4gW1tTZXRdXSBjcmVhdGVzIHBy
b3BlcnR5IG9uIHJlY2VpdmVyIik7CisgICAgYXNzZXJ0X25vdF9lcXVhbHMocHJvdG90eXBlLmNv
bnN0cnVjdG9yLCBuZXdDb25zdHJ1Y3Rvciwga2V5KTsKKyAgICBhc3NlcnRfb3duX3Byb3BlcnR5
KGhlaXIsICJjb25zdHJ1Y3RvciIsIGtleSk7CisgICAgYXNzZXJ0X2VxdWFscyhoZWlyLmNvbnN0
cnVjdG9yLCBuZXdDb25zdHJ1Y3Rvciwga2V5KTsKKyAgfQorfSwgIkFsbCB3aW5kb3cuKiBjb25z
dHJ1Y3RvcnMiKTsKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL3Jl
ZmxlY3Qtc2V0LW9udG8tZG9tLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2RvbS9yZWZs
ZWN0LXNldC1vbnRvLWRvbS1leHBlY3RlZC50eHQKaW5kZXggYTJjYjE1NTM4MWFiOTk5N2IxZjZk
ZGNmZGMxN2UzYmQyY2FjNzI4Yy4uOTM2ODZkYjMzNzFiMDllMDY1NjAyYjAyZTc0YTdmM2FiOTkx
N2U2MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvZG9tL3JlZmxlY3Qtc2V0LW9udG8tZG9t
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vcmVmbGVjdC1zZXQtb250by1k
b20tZXhwZWN0ZWQudHh0CkBAIC05MywxMyArOTMsMTMgQEAgUEFTUyBSZWZsZWN0LmdldChkb2N1
bWVudC5ib2R5LmRhdGFzZXQsICJjb2NvYSIpIGlzICJzd2VldCIKIFBBU1MgUmVmbGVjdC5zZXQo
ZG9jdW1lbnQuYm9keS5kYXRhc2V0LCAiY29jb2EtY2FwcHVjY2lubyIsICJzd2VldCIpIHRocmV3
IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVGhlIHN0cmluZyBkaWQgbm90IG1hdGNoIHRoZSBleHBl
Y3RlZCBwYXR0ZXJuLi4KIFBBU1MgUmVmbGVjdC5zZXQoZG9jdW1lbnQuYm9keS5kYXRhc2V0LCAw
LCAic3dlZXQiKSBpcyB0cnVlCiBQQVNTIFJlZmxlY3QuZ2V0KGRvY3VtZW50LmJvZHkuZGF0YXNl
dCwgMCkgaXMgInN3ZWV0IgotRE9NU3RyaW5nTWFwIGZhbGxzIGJhY2sgdG8gT3JkaW5hcnlTZXQg
aWYgcmVjZWl2ZXIgaXMgYWx0ZXJlZC4KK0RPTVN0cmluZ01hcCBpZ25vcmVzIHRoZSByZWNlaXZl
ci4gVGhlc2UgcHV0RGVsZWdhdGUgb25seSB3b3JrIHdpdGggOjpwdXQgKG5vdCA6OmRlZmluZU93
blByb3BlcnR5KS4gU28gdGhleSBiZWhhdmUgYXMgdGhlIHNwZWNpYWwgc2V0dGVyLCB3ZSBzaG91
bGQgbm90IGZhbGxiYWNrIHRvIHRoZSBPcmRpbmFyeVNldC4KIFBBU1MgUmVmbGVjdC5zZXQoZG9j
dW1lbnQuYm9keS5kYXRhc2V0LCAiY29jb2EiLCAib2siLCByZWNlaXZlcikgaXMgdHJ1ZQotUEFT
UyBSZWZsZWN0LmdldChkb2N1bWVudC5ib2R5LmRhdGFzZXQsICJjb2NvYSIpIGlzICJzd2VldCIK
LVBBU1MgUmVmbGVjdC5nZXQocmVjZWl2ZXIsICJjb2NvYSIpIGlzICJvayIKK1BBU1MgUmVmbGVj
dC5nZXQoZG9jdW1lbnQuYm9keS5kYXRhc2V0LCAiY29jb2EiKSBpcyAib2siCitQQVNTIFJlZmxl
Y3QuZ2V0KHJlY2VpdmVyLCAiY29jb2EiKSBpcyB1bmRlZmluZWQKIFBBU1MgUmVmbGVjdC5zZXQo
ZG9jdW1lbnQuYm9keS5kYXRhc2V0LCAwLCAib2siLCByZWNlaXZlcikgaXMgdHJ1ZQotUEFTUyBS
ZWZsZWN0LmdldChkb2N1bWVudC5ib2R5LmRhdGFzZXQsIDApIGlzICJzd2VldCIKLVBBU1MgUmVm
bGVjdC5nZXQocmVjZWl2ZXIsIDApIGlzICJvayIKK1BBU1MgUmVmbGVjdC5nZXQoZG9jdW1lbnQu
Ym9keS5kYXRhc2V0LCAwKSBpcyAib2siCitQQVNTIFJlZmxlY3QuZ2V0KHJlY2VpdmVyLCAwKSBp
cyB1bmRlZmluZWQKIEN1c3RvbUluZGV4ZWRTZXR0ZXIKIFBBU1MgUmVmbGVjdC5nZXQoc2VsZWN0
LCAwKS52YWx1ZSBpcyAiY29jb2EiCiBQQVNTIFJlZmxlY3QuZ2V0KHNlbGVjdCwgImxlbmd0aCIp
IGlzIDMKQEAgLTExMSwxMCArMTExLDEwIEBAIFBBU1MgUmVmbGVjdC5nZXQoc2VsZWN0LCAibGVu
Z3RoIikgaXMgNDIKIFBBU1MgUmVmbGVjdC5zZXQoc2VsZWN0LCA0NCwgb3B0aW9uMikgaXMgdHJ1
ZQogUEFTUyBSZWZsZWN0LmdldChzZWxlY3QsIDQ0KS52YWx1ZSBpcyAia2lsaW1hbmphcm8iCiBQ
QVNTIFJlZmxlY3Quc2V0KHNlbGVjdCwgMjAsICJLaWxpbWFuamFybyIpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1DdXN0b21JbmRleGVkU2V0dGVyIGZhbGxzIGJhY2sg
dG8gT3JkaW5hcnlTZXQgaWYgcmVjZWl2ZXIgaXMgYWx0ZXJlZC4KK0N1c3RvbUluZGV4ZWRTZXR0
ZXIgaWdub3JlcyB0aGUgcmVjZWl2ZXIuIFRoZXNlIG1ldGhvZHMgb25seSB3b3JrIHdpdGggOjpw
dXQgKG5vdCA6OmRlZmluZU93blByb3BlcnR5KS4gU28gdGhleSBiZWhhdmUgYXMgdGhlIHNwZWNp
YWwgc2V0dGVyLCB3ZSBzaG91bGQgbm90IGZhbGxiYWNrIHRvIHRoZSBPcmRpbmFyeVNldC4KIFBB
U1MgUmVmbGVjdC5zZXQoc2VsZWN0LCAwLCBvcHRpb24zLCByZWNlaXZlcikgaXMgdHJ1ZQotUEFT
UyBSZWZsZWN0LmdldChyZWNlaXZlciwgMCkgaXMgb3B0aW9uMwotUEFTUyBSZWZsZWN0LmdldChz
ZWxlY3QsIDApIGlzIHNlbGVjdC5jaGlsZHJlblswXQorUEFTUyBSZWZsZWN0LmdldChyZWNlaXZl
ciwgMCkgaXMgdW5kZWZpbmVkCitQQVNTIFJlZmxlY3QuZ2V0KHNlbGVjdCwgMCkgaXMgb3B0aW9u
MwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vc2NyaXB0LXRlc3RzL3JlZmxlY3Qtc2V0LW9udG8t
ZG9tLmpzIGIvTGF5b3V0VGVzdHMvanMvZG9tL3NjcmlwdC10ZXN0cy9yZWZsZWN0LXNldC1vbnRv
LWRvbS5qcwppbmRleCAwMGQ3Y2M0MjcxZDljMmQ3Y2NlYmQyMThhOTg5MWU2ZjdjNzFhYWMxLi4y
OGFiZWExNWMwM2U4Yjk1MzQzZTA0NDllMjJiYTNhYmFhZTM0YzczIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9qcy9kb20vc2NyaXB0LXRlc3RzL3JlZmxlY3Qtc2V0LW9udG8tZG9tLmpzCisrKyBi
L0xheW91dFRlc3RzL2pzL2RvbS9zY3JpcHQtdGVzdHMvcmVmbGVjdC1zZXQtb250by1kb20uanMK
QEAgLTExNiwxNSArMTE2LDE1IEBAIHNob3VsZFRocm93KGBSZWZsZWN0LnNldChkb2N1bWVudC5i
b2R5LmRhdGFzZXQsICJjb2NvYS1jYXBwdWNjaW5vIiwgInN3ZWV0IilgKTsKIHNob3VsZEJlKGBS
ZWZsZWN0LnNldChkb2N1bWVudC5ib2R5LmRhdGFzZXQsIDAsICJzd2VldCIpYCwgYHRydWVgKTsK
IHNob3VsZEJlKGBSZWZsZWN0LmdldChkb2N1bWVudC5ib2R5LmRhdGFzZXQsIDApYCwgYCJzd2Vl
dCJgKTsKIAotZGVidWcoIkRPTVN0cmluZ01hcCBmYWxscyBiYWNrIHRvIE9yZGluYXJ5U2V0IGlm
IHJlY2VpdmVyIGlzIGFsdGVyZWQuIik7CitkZWJ1ZygiRE9NU3RyaW5nTWFwIGlnbm9yZXMgdGhl
IHJlY2VpdmVyLiBUaGVzZSBwdXREZWxlZ2F0ZSBvbmx5IHdvcmsgd2l0aCA6OnB1dCAobm90IDo6
ZGVmaW5lT3duUHJvcGVydHkpLiBTbyB0aGV5IGJlaGF2ZSBhcyB0aGUgc3BlY2lhbCBzZXR0ZXIs
IHdlIHNob3VsZCBub3QgZmFsbGJhY2sgdG8gdGhlIE9yZGluYXJ5U2V0LiIpOwogdmFyIHJlY2Vp
dmVyID0ge307CiBzaG91bGRCZShgUmVmbGVjdC5zZXQoZG9jdW1lbnQuYm9keS5kYXRhc2V0LCAi
Y29jb2EiLCAib2siLCByZWNlaXZlcilgLCBgdHJ1ZWApOwotc2hvdWxkQmUoYFJlZmxlY3QuZ2V0
KGRvY3VtZW50LmJvZHkuZGF0YXNldCwgImNvY29hIilgLCBgInN3ZWV0ImApOwotc2hvdWxkQmUo
YFJlZmxlY3QuZ2V0KHJlY2VpdmVyLCAiY29jb2EiKWAsIGAib2siYCk7CitzaG91bGRCZShgUmVm
bGVjdC5nZXQoZG9jdW1lbnQuYm9keS5kYXRhc2V0LCAiY29jb2EiKWAsIGAib2siYCk7CitzaG91
bGRCZShgUmVmbGVjdC5nZXQocmVjZWl2ZXIsICJjb2NvYSIpYCwgYHVuZGVmaW5lZGApOwogdmFy
IHJlY2VpdmVyID0ge307CiBzaG91bGRCZShgUmVmbGVjdC5zZXQoZG9jdW1lbnQuYm9keS5kYXRh
c2V0LCAwLCAib2siLCByZWNlaXZlcilgLCBgdHJ1ZWApOwotc2hvdWxkQmUoYFJlZmxlY3QuZ2V0
KGRvY3VtZW50LmJvZHkuZGF0YXNldCwgMClgLCBgInN3ZWV0ImApOwotc2hvdWxkQmUoYFJlZmxl
Y3QuZ2V0KHJlY2VpdmVyLCAwKWAsIGAib2siYCk7CitzaG91bGRCZShgUmVmbGVjdC5nZXQoZG9j
dW1lbnQuYm9keS5kYXRhc2V0LCAwKWAsIGAib2siYCk7CitzaG91bGRCZShgUmVmbGVjdC5nZXQo
cmVjZWl2ZXIsIDApYCwgYHVuZGVmaW5lZGApOwogCiBkZWJ1ZygiQ3VzdG9tSW5kZXhlZFNldHRl
ciIpOwogdmFyIHNlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0U2VsZWN0Iik7
CkBAIC0xNDYsMTEgKzE0NiwxMSBAQCBzaG91bGRCZShgUmVmbGVjdC5zZXQoc2VsZWN0LCA0NCwg
b3B0aW9uMilgLCBgdHJ1ZWApOwogc2hvdWxkQmUoYFJlZmxlY3QuZ2V0KHNlbGVjdCwgNDQpLnZh
bHVlYCwgYCJraWxpbWFuamFybyJgKTsKIHNob3VsZFRocm93KGBSZWZsZWN0LnNldChzZWxlY3Qs
IDIwLCAiS2lsaW1hbmphcm8iKWApOwogCi1kZWJ1ZygiQ3VzdG9tSW5kZXhlZFNldHRlciBmYWxs
cyBiYWNrIHRvIE9yZGluYXJ5U2V0IGlmIHJlY2VpdmVyIGlzIGFsdGVyZWQuIik7CitkZWJ1Zygi
Q3VzdG9tSW5kZXhlZFNldHRlciBpZ25vcmVzIHRoZSByZWNlaXZlci4gVGhlc2UgbWV0aG9kcyBv
bmx5IHdvcmsgd2l0aCA6OnB1dCAobm90IDo6ZGVmaW5lT3duUHJvcGVydHkpLiBTbyB0aGV5IGJl
aGF2ZSBhcyB0aGUgc3BlY2lhbCBzZXR0ZXIsIHdlIHNob3VsZCBub3QgZmFsbGJhY2sgdG8gdGhl
IE9yZGluYXJ5U2V0LiIpOwogdmFyIG9wdGlvbjMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJv
cHRpb24iKTsKIG9wdGlvbjMudmFsdWUgPSAicmFiYml0IjsKIG9wdGlvbjMudGV4dENvbnRlbnQg
PSAiUmFiYml0IjsKIHZhciByZWNlaXZlciA9IHt9Owogc2hvdWxkQmUoYFJlZmxlY3Quc2V0KHNl
bGVjdCwgMCwgb3B0aW9uMywgcmVjZWl2ZXIpYCwgYHRydWVgKTsKLXNob3VsZEJlKGBSZWZsZWN0
LmdldChyZWNlaXZlciwgMClgLCBgb3B0aW9uM2ApOwotc2hvdWxkQmUoYFJlZmxlY3QuZ2V0KHNl
bGVjdCwgMClgLCBgc2VsZWN0LmNoaWxkcmVuWzBdYCk7CitzaG91bGRCZShgUmVmbGVjdC5nZXQo
cmVjZWl2ZXIsIDApYCwgYHVuZGVmaW5lZGApOworc2hvdWxkQmUoYFJlZmxlY3QuZ2V0KHNlbGVj
dCwgMClgLCBgb3B0aW9uM2ApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rl
c3RzL0NoYW5nZUxvZwppbmRleCA4ZDM5ZGIzNDYzMDBkNDdkOWM1NmY0OGRhMDc5ZjlmZjgzODRi
YTNjLi42Nzg0MWNlY2E0NTYyYzk0M2UxMGFjNTA3OGI1N2ExODU5MWYzYmYzIDEwMDY0NAotLS0g
YS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3
IEBACisyMDIxLTA1LTE4ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFRlbXBvcmFyaWx5IHJldmVydCByMjc2NTkyIGFzIGl0IGJyZWFrcyBzb21lIG5h
dGl2ZSBhcHBzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjU5MTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIG1pY3JvYmVuY2htYXJrcy9wdXQtc2xvdy1uby1jYWNoZS1hcnJheS5qczogUmVtb3ZlZC4K
KyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvcHV0LXNsb3ctbm8tY2FjaGUtZnVuY3Rpb24uanM6
IFJlbW92ZWQuCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL3B1dC1zbG93LW5vLWNhY2hlLWpz
LXByb3h5LmpzOiBSZW1vdmVkLgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9wdXQtc2xvdy1u
by1jYWNoZS1sb25nLXByb3RvdHlwZS1jaGFpbi5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBtaWNy
b2JlbmNobWFya3MvcHV0LXNsb3ctbm8tY2FjaGUuanM6IFJlbW92ZWQuCisgICAgICAgICogbWlj
cm9iZW5jaG1hcmtzL3JlZmxlY3Qtc2V0LXdpdGgtcmVjZWl2ZXIuanM6IFJlbW92ZWQuCisgICAg
ICAgICogc3RyZXNzL2N1c3RvbS1nZXQtc2V0LXByb3RvLWNoYWluLXB1dC5qczoKKyAgICAgICAg
KGdldE9iamVjdHMpOgorICAgICAgICAobGV0LmJhc2Uub2YuZ2V0QmFzZXMpOgorICAgICAgICAq
IHN0cmVzcy9tb2R1bGUtbmFtZXNwYWNlLWFjY2Vzcy1zZXQtZmFpbHMuanM6IFJlbW92ZWQuCisg
ICAgICAgICogc3RyZXNzL3B1dC1ub24tcmVpZmllZC1zdGF0aWMtYWNjZXNzb3Itb3ItY3VzdG9t
LmpzOiBSZW1vdmVkLgorICAgICAgICAqIHN0cmVzcy9wdXQtbm9uLXJlaWZpZWQtc3RhdGljLWZ1
bmN0aW9uLW9yLWN1c3RvbS5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LXRvLXBy
aW1pdGl2ZS1ub24tcmVpZmllZC1zdGF0aWMtY3VzdG9tLmpzOiBSZW1vdmVkLgorICAgICAgICAq
IHN0cmVzcy9wdXQtdG8tcHJpbWl0aXZlLmpzOiBSZW1vdmVkLgorICAgICAgICAqIHN0cmVzcy9w
dXQtdG8tcHJvdG8tY2hhaW4tb3ZlcnJpZGVzLXB1dC5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBz
dHJlc3MvdHlwZWQtYXJyYXktY2Fub25pY2FsLW51bWVyaWMtaW5kZXgtc3RyaW5nLXNldC5qczog
UmVtb3ZlZC4KKwogMjAyMS0wNS0wNyAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CiAKICAgICAgICAgW0pTQ10gRXJyb3IjY2F1c2UgbXVzdCByZWNvZ25pemUgZXhwbGlj
aXQgdW5kZWZpbmVkCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wdXQtc2xv
dy1uby1jYWNoZS1hcnJheS5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3B1dC1zbG93LW5v
LWNhY2hlLWFycmF5LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlN2E2NTg4MTBl
OTBmNGZkMDg4MTMxMGRkNTk3Yzg4Y2EzY2UwNDdiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3B1dC1zbG93LW5v
LWNhY2hlLWFycmF5LmpzCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi0oZnVuY3Rpb24o
KSB7Ci0gICAgdmFyIGFycmF5ID0gW107Ci0KLSAgICBmb3IgKHZhciBqID0gMDsgaiA8IDFlNTsg
aisrKQotICAgICAgICBhcnJheVsiZm9vIiArIGpdID0gajsKLX0pKCk7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wdXQtc2xvdy1uby1jYWNoZS1mdW5jdGlvbi5qcyBiL0pT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL3B1dC1zbG93LW5vLWNhY2hlLWZ1bmN0aW9uLmpzCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMWZmMDI0NzE2OTQ5Y2U2NzhjZWNlNWRjNGMyYmNk
ZWMwNTJkZjQ3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3B1dC1zbG93LW5vLWNhY2hlLWZ1bmN0aW9uLmpzCisr
KyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi0oZnVuY3Rpb24oKSB7Ci0gICAgY2xhc3MgQSB7
fQotICAgIGNsYXNzIEIgZXh0ZW5kcyBBIHt9Ci0gICAgY2xhc3MgQyBleHRlbmRzIEIge30KLQot
ICAgIGZvciAodmFyIGogPSAwOyBqIDwgMWU1OyBqKyspCi0gICAgICAgIENbImZvbyIgKyBqXSA9
IGo7Ci19KSgpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcHV0LXNsb3ct
bm8tY2FjaGUtanMtcHJveHkuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wdXQtc2xvdy1u
by1jYWNoZS1qcy1wcm94eS5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODM1MGZk
YWI2YTY0NTVmZTg3NzUwZjgwN2E0ZDY1M2ZkMDE4ZjA4Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wdXQtc2xv
dy1uby1jYWNoZS1qcy1wcm94eS5qcworKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotKGZ1
bmN0aW9uKCkgewotICAgIHZhciBwcm94eSA9ICR2bS5jcmVhdGVQcm94eSh7IHNldCBmb28oX3Yp
IHt9IH0pOwotCi0gICAgZm9yICh2YXIgaiA9IDA7IGogPCAxZTU7IGorKykKLSAgICAgICAgcHJv
eHlbImZvbyIgKyBqXSA9IGo7Ci19KSgpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNo
bWFya3MvcHV0LXNsb3ctbm8tY2FjaGUtbG9uZy1wcm90b3R5cGUtY2hhaW4uanMgYi9KU1Rlc3Rz
L21pY3JvYmVuY2htYXJrcy9wdXQtc2xvdy1uby1jYWNoZS1sb25nLXByb3RvdHlwZS1jaGFpbi5q
cwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTM3MjNkZTY4ZjNjZDYxN2JkYTM2ZWYz
NjQ0Zjc2ZjVkYTJlNDgxMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wdXQtc2xvdy1uby1jYWNoZS1sb25nLXBy
b3RvdHlwZS1jaGFpbi5qcworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotKGZ1bmN0aW9u
KCkgewotICAgIHZhciBiYXNlID0geyBzZXQgZm9vKF92KSB7fSB9OwotICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgMWUzOyBpKyspCi0gICAgICAgIGJhc2UgPSBPYmplY3QuY3JlYXRlKGJhc2UpOwot
Ci0gICAgZm9yICh2YXIgaiA9IDA7IGogPCAzZTM7IGorKykKLSAgICAgICAgYmFzZVsiZm9vIiAr
IGpdID0gajsKLX0pKCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wdXQt
c2xvdy1uby1jYWNoZS5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3B1dC1zbG93LW5vLWNh
Y2hlLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmVhNDZhNzdlMzQwNGFmYmFk
ODA0YjI5NGUwMjFkMWQ3MmFlYjY0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3B1dC1zbG93LW5vLWNhY2hlLmpz
CisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi0oZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGJh
c2UgPSB7IHNldCBmb28oX3YpIHt9IH07Ci0KLSAgICBmb3IgKHZhciBqID0gMDsgaiA8IDFlNTsg
aisrKQotICAgICAgICBiYXNlWyJmb28iICsgal0gPSBqOwotfSkoKTsKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL3JlZmxlY3Qtc2V0LXdpdGgtcmVjZWl2ZXIuanMgYi9KU1Rl
c3RzL21pY3JvYmVuY2htYXJrcy9yZWZsZWN0LXNldC13aXRoLXJlY2VpdmVyLmpzCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzU0ZjNhZGFhM2I5ZmRhN2IxMmI1NzIzZmVjYzM5MWNk
NDZiZjNlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0pT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL3JlZmxlY3Qtc2V0LXdpdGgtcmVjZWl2ZXIuanMKKysrIC9k
ZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLShmdW5jdGlvbigpIHsKLSAgICB2YXIgdGFyZ2V0ID0g
bmV3IChjbGFzcyB7fSk7Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgaSsrKQotICAg
ICAgICBSZWZsZWN0LnNldCh0YXJnZXQsICJmb28iLCAxLCB7fSk7Ci19KSgpOwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvY3VzdG9tLWdldC1zZXQtcHJvdG8tY2hhaW4tcHV0LmpzIGIvSlNU
ZXN0cy9zdHJlc3MvY3VzdG9tLWdldC1zZXQtcHJvdG8tY2hhaW4tcHV0LmpzCmluZGV4IDJjNmIx
NTg3YTQ0ZmYxNDI3NDU3OGE5Y2RlOTcwYmY0NmEzMmE5ZWIuLjkzODdlNzRiYTA2OGExNjNiZWE2
ZGY0NzI1ZWVmY2Y1YmIwY2ZkOTAgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2N1c3RvbS1n
ZXQtc2V0LXByb3RvLWNoYWluLXB1dC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9jdXN0b20tZ2V0
LXNldC1wcm90by1jaGFpbi1wdXQuanMKQEAgLTM3LDggKzM3LDggQEAgZnVuY3Rpb24gZ2V0T2Jq
ZWN0cygpIHsKICAgICAgICAgLi4ucHJpbWl0aXZlcy5tYXAoT2JqZWN0KSwKICAgICAgICAgT2Jq
ZWN0LmNyZWF0ZShjdXN0b21UZXN0R2V0dGVyU2V0dGVyKSwKICAgICAgICAgT2JqZWN0LmNyZWF0
ZShPYmplY3QuY3JlYXRlKGN1c3RvbVRlc3RHZXR0ZXJTZXR0ZXIpKSwKLSAgICAgICAgT2JqZWN0
LmNyZWF0ZShuZXcgUHJveHkoY3VzdG9tVGVzdEdldHRlclNldHRlciwge30pKSwKLSAgICAgICAg
T2JqZWN0LmNyZWF0ZSgkdm0uY3JlYXRlUHJveHkoY3VzdG9tVGVzdEdldHRlclNldHRlcikpLAor
ICAgICAgICAvLyBGSVhNRTogb3JkaW5hcnlTZXRTbG93KCkgc2hvdWxkIGhhbmRsZSBDdXN0b217
QWNjZXNzb3IsVmFsdWV9IGRlc2NyaXB0b3JzLgorICAgICAgICAvLyBuZXcgUHJveHkoY3VzdG9t
VGVzdEdldHRlclNldHRlciwge30pLAogICAgIF07CiB9CiAKQEAgLTg1LDEzICs4NSwxMyBAQCBm
dW5jdGlvbiBnZXRCYXNlcygpIHsKIH0pKCk7CiAKIC8vIEN1c3RvbVZhbHVlOiBzZXR0ZXIgcmV0
dXJucyB8ZmFsc2V8Ci0vLyBGSVhNRTogT25jZSBsZWdhY3kgUmVnRXhwIGZlYXR1cmVzIGFyZSBp
bXBsZW1lbnRlZCwgdGhlcmUgd291bGQgYmUgbm8gdXNlIGNhc2UgZm9yIGNhbGxpbmcgQ3VzdG9t
VmFsdWUgc2V0dGVyIGlmIHJlY2VpdmVyIGlzIGFsdGVyZWQuCiAoKCkgPT4gewogICAgIGZvciAo
bGV0IGJhc2Ugb2YgZ2V0QmFzZXMoKSkgewogICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEw
MDsgKytpKQogICAgICAgICAgICAgYmFzZS5jdXN0b21WYWx1ZSA9IDE7CisgICAgICAgIC8vIFRo
aXMgaXMgd2VpcmQsIGJ1dCBpdCBpc24ndCBleHBvc2VkIHRvIHVzZXJsYW5kIGNvZGU6CiAgICAg
ICAgIGFzc2VydCghYmFzZS5oYXNPd25Qcm9wZXJ0eSgiY3VzdG9tVmFsdWUiKSk7Ci0gICAgICAg
IGFzc2VydChSZWZsZWN0LnNldChPYmplY3QoYmFzZSksICJjdXN0b21WYWx1ZSIsIDEpKTsKKyAg
ICAgICAgYXNzZXJ0KCFSZWZsZWN0LnNldChPYmplY3QoYmFzZSksICJjdXN0b21WYWx1ZSIsIDEp
KTsKICAgICB9CiB9KSgpOwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9tb2R1bGUtbmFt
ZXNwYWNlLWFjY2Vzcy1zZXQtZmFpbHMuanMgYi9KU1Rlc3RzL3N0cmVzcy9tb2R1bGUtbmFtZXNw
YWNlLWFjY2Vzcy1zZXQtZmFpbHMuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNm
ZDliYjllMzliODdiZWY0YWI5MTM5OTA1NWI1ZTEwMjVhNzIxYzIuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvSlNUZXN0cy9zdHJlc3MvbW9kdWxlLW5hbWVz
cGFjZS1hY2Nlc3Mtc2V0LWZhaWxzLmpzCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAot
Y29uc3QgZXhpc3RpbmdLZXlzID0gWyJjb2NvYSIsICJ0ZXN0IiwgU3ltYm9sLnRvU3RyaW5nVGFn
XTsKLWNvbnN0IG5vbkV4aXN0aW5nS2V5cyA9IFsiZm9vIiwgU3ltYm9sKCJmb28iKV07Ci1jb25z
dCBhbGxLZXlzID0gWy4uLmV4aXN0aW5nS2V5cywgLi4ubm9uRXhpc3RpbmdLZXlzXTsKLWNvbnN0
IHRlc3RWYWx1ZSA9IE9iamVjdC5mcmVlemUoe30pOwotCi1mdW5jdGlvbiBhc3NlcnQoeCwga2V5
KSB7Ci0gICAgaWYgKCF4KQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEJhZCBhc3NlcnRpb24h
IEtleTogJHtTdHJpbmcoa2V5KX1gKTsKLX0KLQotZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywg
ZXJyb3JNZXNzYWdlKSB7Ci0gICAgbGV0IGVycm9yVGhyb3duID0gZmFsc2U7Ci0gICAgdHJ5IHsK
LSAgICAgICAgZnVuYygpOwotICAgIH0gY2F0Y2ggKGVycm9yKSB7Ci0gICAgICAgIGVycm9yVGhy
b3duID0gdHJ1ZTsKLSAgICAgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkK
LSAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQmFkIGVycm9yOiAke2Vycm9yfWApOwotICAg
IH0KLSAgICBpZiAoIWVycm9yVGhyb3duKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkRpZG4n
dCB0aHJvdyEiKTsKLX0KLQotZnVuY3Rpb24gdGVzdERpcmVjdFNldChucykgewotICAgIGZvciAo
Y29uc3Qga2V5IG9mIGFsbEtleXMpIHsKLSAgICAgICAgbnNba2V5XSA9IHRlc3RWYWx1ZTsKLSAg
ICAgICAgYXNzZXJ0KG5zW2tleV0gIT09IHRlc3RWYWx1ZSwga2V5KTsKLQotICAgICAgICBzaG91
bGRUaHJvdygoKSA9PiB7ICJ1c2Ugc3RyaWN0IjsgbnNba2V5XSA9IHRlc3RWYWx1ZTsgfSwgIlR5
cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS4iKTsKLSAg
ICAgICAgYXNzZXJ0KG5zW2tleV0gIT09IHRlc3RWYWx1ZSwga2V5KTsKLSAgICB9Ci19Ci0KLWZ1
bmN0aW9uIHRlc3RQcm90b3R5cGVDaGFpblNldChucykgewotICAgIGZvciAoY29uc3Qga2V5IG9m
IGFsbEtleXMpIHsKLSAgICAgICAgY29uc3QgaGVpciA9IE9iamVjdC5jcmVhdGUobnMpOwotCi0g
ICAgICAgIGhlaXJba2V5XSA9IHRlc3RWYWx1ZTsKLSAgICAgICAgYXNzZXJ0KE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoaGVpciwga2V5KSA9PT0gdW5kZWZpbmVkLCBrZXkpOwotCi0g
ICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgInVzZSBzdHJpY3QiOyBoZWlyW2tleV0gPSB0ZXN0
VmFsdWU7IH0sICJUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJv
cGVydHkuIik7Ci0gICAgICAgIGFzc2VydChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KGhlaXIsIGtleSkgPT09IHVuZGVmaW5lZCwga2V5KTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRl
c3RSZWZsZWN0U2V0KG5zKSB7Ci0gICAgInVzZSBzdHJpY3QiOwotCi0gICAgZm9yIChjb25zdCBl
eGlzdGluZ0tleSBvZiBleGlzdGluZ0tleXMpIHsKLSAgICAgICAgYXNzZXJ0KCFSZWZsZWN0LnNl
dChucywgZXhpc3RpbmdLZXksIHRlc3RWYWx1ZSksIGV4aXN0aW5nS2V5KTsKLQotICAgICAgICBj
b25zdCB0YXJnZXQgPSB7fTsKLSAgICAgICAgYXNzZXJ0KCFSZWZsZWN0LnNldCh0YXJnZXQsIGV4
aXN0aW5nS2V5LCB0ZXN0VmFsdWUsIG5zKSwgZXhpc3RpbmdLZXkpOwotCi0gICAgICAgIGNvbnN0
IGlzV3JpdGFibGUgPSBleGlzdGluZ0tleSAhPT0gU3ltYm9sLnRvU3RyaW5nVGFnOwotICAgICAg
ICBhc3NlcnQoUmVmbGVjdC5zZXQodGFyZ2V0LCBleGlzdGluZ0tleSwgbnNbZXhpc3RpbmdLZXld
LCBucykgPT09IGlzV3JpdGFibGUsIGV4aXN0aW5nS2V5KTsKLQotICAgICAgICBhc3NlcnQobnNb
ZXhpc3RpbmdLZXldICE9PSB0ZXN0VmFsdWUsIGV4aXN0aW5nS2V5KTsKLSAgICAgICAgYXNzZXJ0
KHRhcmdldFtleGlzdGluZ0tleV0gPT09IHVuZGVmaW5lZCwgZXhpc3RpbmdLZXkpOwotICAgIH0K
LQotICAgIGZvciAoY29uc3Qgbm9uRXhpc3RpbmdLZXkgb2Ygbm9uRXhpc3RpbmdLZXlzKSB7Ci0g
ICAgICAgIGFzc2VydCghUmVmbGVjdC5zZXQobnMsIG5vbkV4aXN0aW5nS2V5LCB0ZXN0VmFsdWUp
LCBub25FeGlzdGluZ0tleSk7Ci0gICAgICAgIGFzc2VydChuc1tub25FeGlzdGluZ0tleV0gPT09
IHVuZGVmaW5lZCwgbm9uRXhpc3RpbmdLZXkpOwotCi0gICAgICAgIGNvbnN0IHRhcmdldCA9IHt9
OwotICAgICAgICBhc3NlcnQoIVJlZmxlY3Quc2V0KHRhcmdldCwgbm9uRXhpc3RpbmdLZXksIHRl
c3RWYWx1ZSwgbnMpLCBub25FeGlzdGluZ0tleSk7Ci0gICAgICAgIGFzc2VydCh0YXJnZXRbbm9u
RXhpc3RpbmdLZXldID09PSB1bmRlZmluZWQsIG5vbkV4aXN0aW5nS2V5KTsKLSAgICB9Ci0KLSAg
ICBmb3IgKGNvbnN0IGtleSBvZiBhbGxLZXlzKSB7Ci0gICAgICAgIGNvbnN0IHRhcmdldCA9IE9i
amVjdC5jcmVhdGUobnMpOwotICAgICAgICBjb25zdCByZWNlaXZlciA9IHt9OwotCi0gICAgICAg
IGFzc2VydCghUmVmbGVjdC5zZXQodGFyZ2V0LCBrZXksIHRlc3RWYWx1ZSwgcmVjZWl2ZXIpLCBr
ZXkpOwotICAgICAgICBhc3NlcnQoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJn
ZXQsIGtleSkgPT09IHVuZGVmaW5lZCwga2V5KTsKLSAgICAgICAgYXNzZXJ0KE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IocmVjZWl2ZXIsIGtleSkgPT09IHVuZGVmaW5lZCwga2V5KTsK
LSAgICB9Ci19Ci0KLWltcG9ydCgiLi9yZXNvdXJjZXMvbW9kdWxlLW5hbWVzcGFjZS1hY2Nlc3Mu
anMiKS50aGVuKG5zID0+IHsKLSAgICB0ZXN0RGlyZWN0U2V0KG5zKTsKLSAgICB0ZXN0UHJvdG90
eXBlQ2hhaW5TZXQobnMpOwotICAgIHRlc3RSZWZsZWN0U2V0KG5zKTsKLX0pLmNhdGNoKGVyciA9
PiB7Ci0gICAgcHJpbnQoYCEhISAke2Vycn1cbiR7ZXJyLnN0YWNrfWApOwotICAgICR2bS5hYm9y
dCgpOwotfSk7Ci0KLWRyYWluTWljcm90YXNrcygpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvcHV0LW5vbi1yZWlmaWVkLXN0YXRpYy1hY2Nlc3Nvci1vci1jdXN0b20uanMgYi9KU1Rlc3Rz
L3N0cmVzcy9wdXQtbm9uLXJlaWZpZWQtc3RhdGljLWFjY2Vzc29yLW9yLWN1c3RvbS5qcwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDhkNTViM2IyMTNhMDI0Yzg2YjVmODJkYmI1NTY0
YmMzMzNkMjVlZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9KU1Rlc3RzL3N0cmVzcy9wdXQtbm9uLXJlaWZpZWQtc3RhdGljLWFjY2Vzc29yLW9yLWN1c3Rv
bS5qcworKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLSJ1c2Ugc3RyaWN0IjsKLWNvbnN0
IHRlc3RWYWx1ZSA9IE9iamVjdC5mcmVlemUoe30pOwotCi1mdW5jdGlvbiBhc3NlcnQoeCwga2V5
KSB7Ci0gICAgaWYgKCF4KQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEtleTogIiR7a2V5fSIu
IEJhZCBhc3NlcnRpb24hYCk7Ci19Ci0KLWZ1bmN0aW9uKiB0ZXN0Q2FzZXMoKSB7Ci0gICAgZm9y
IChjb25zdCBrZXkgb2YgWyJkZXNjcmlwdGlvbiJdKQotICAgICAgICB5aWVsZCBbJHZtLmNyZWF0
ZUdsb2JhbE9iamVjdCgpLlN5bWJvbC5wcm90b3R5cGUsIGtleV07Ci0gICAgZm9yIChjb25zdCBr
ZXkgb2YgWyJidWZmZXIiLCAiYnl0ZUxlbmd0aCIsICJieXRlT2Zmc2V0Il0pCi0gICAgICAgIHlp
ZWxkIFskdm0uY3JlYXRlR2xvYmFsT2JqZWN0KCkuRGF0YVZpZXcucHJvdG90eXBlLCBrZXldOwot
ICAgIGZvciAoY29uc3Qga2V5IG9mIFsiYmFzZU5hbWUiLCAiY2FzZUZpcnN0IiwgImhvdXJDeWNs
ZSIsICJudW1lcmljIiwgInJlZ2lvbiJdKQotICAgICAgICB5aWVsZCBbJHZtLmNyZWF0ZUdsb2Jh
bE9iamVjdCgpLkludGwuTG9jYWxlLnByb3RvdHlwZSwga2V5XTsKLQotICAgIGZvciAoY29uc3Qg
a2V5IG9mIFsidGVzdFN0YXRpY0FjY2Vzc29yRG9udEVudW0iLCAidGVzdFN0YXRpY0FjY2Vzc29y
UmVhZE9ubHkiXSkKLSAgICAgICAgeWllbGQgWyR2bS5jcmVhdGVTdGF0aWNDdXN0b21BY2Nlc3Nv
cigpLCBrZXldOwotICAgIHlpZWxkIFskdm0uY3JlYXRlU3RhdGljQ3VzdG9tVmFsdWUoKSwgInRl
c3RTdGF0aWNWYWx1ZVJlYWRPbmx5Il07Ci19Ci0KLWZvciAoY29uc3QgW29iamVjdCwga2V5XSBv
ZiB0ZXN0Q2FzZXMoKSkgewotICAgIGNvbnN0IHRhcmdldCA9IHt9OwotICAgIGFzc2VydCghUmVm
bGVjdC5zZXQodGFyZ2V0LCBrZXksIHRlc3RWYWx1ZSwgb2JqZWN0KSwga2V5KTsKLSAgICBhc3Nl
cnQoIXRhcmdldC5oYXNPd25Qcm9wZXJ0eShrZXkpLCBrZXkpOwotICAgIGFzc2VydChPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwga2V5KS52YWx1ZSAhPT0gdGVzdFZhbHVl
LCBrZXkpOwotfQotCi1mb3IgKGNvbnN0IFtvYmplY3QsIGtleV0gb2YgdGVzdENhc2VzKCkpIHsK
LSAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBrZXksIHsgdmFsdWU6IHt9LCB3cml0
YWJsZTogZmFsc2UgfSk7Ci0gICAgY29uc3QgdGFyZ2V0ID0ge307Ci0gICAgYXNzZXJ0KCFSZWZs
ZWN0LnNldCh0YXJnZXQsIGtleSwgdGVzdFZhbHVlLCBvYmplY3QpLCBrZXkpOwotICAgIGFzc2Vy
dCghdGFyZ2V0Lmhhc093blByb3BlcnR5KGtleSksIGtleSk7Ci0gICAgYXNzZXJ0KE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBrZXkpLnZhbHVlICE9PSB0ZXN0VmFsdWUs
IGtleSk7Ci19Ci0KLWZvciAoY29uc3QgW29iamVjdCwga2V5XSBvZiB0ZXN0Q2FzZXMoKSkgewot
ICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIGtleSwgeyB2YWx1ZToge30sIHdyaXRh
YmxlOiB0cnVlLCBjb25maWd1cmFibGU6IGZhbHNlIH0pOwotICAgIG9iamVjdFtrZXldID0gdGVz
dFZhbHVlOwotCi0gICAgY29uc3QgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3Iob2JqZWN0LCBrZXkpOwotICAgIGFzc2VydChkZXNjLnZhbHVlID09PSB0ZXN0VmFsdWUsIGtl
eSk7Ci0gICAgYXNzZXJ0KGRlc2Mud3JpdGFibGUsIGtleSk7Ci0gICAgYXNzZXJ0KCFkZXNjLmVu
dW1lcmFibGUsIGtleSk7Ci0gICAgYXNzZXJ0KCFkZXNjLmNvbmZpZ3VyYWJsZSwga2V5KTsKLX0K
LQotZm9yIChjb25zdCBbb2JqZWN0LCBrZXldIG9mIHRlc3RDYXNlcygpKSB7Ci0gICAgT2JqZWN0
LmRlZmluZVByb3BlcnR5KG9iamVjdCwga2V5LCB7IHZhbHVlOiB7fSwgd3JpdGFibGU6IHRydWUs
IGVudW1lcmFibGU6IHRydWUgfSk7Ci0gICAgY29uc3QgdGFyZ2V0ID0ge307Ci0gICAgYXNzZXJ0
KFJlZmxlY3Quc2V0KHRhcmdldCwga2V5LCB0ZXN0VmFsdWUsIG9iamVjdCksIGtleSk7Ci0KLSAg
ICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIGtl
eSk7Ci0gICAgYXNzZXJ0KGRlc2MudmFsdWUgPT09IHRlc3RWYWx1ZSwga2V5KTsKLSAgICBhc3Nl
cnQoZGVzYy53cml0YWJsZSwga2V5KTsKLSAgICBhc3NlcnQoZGVzYy5lbnVtZXJhYmxlLCBrZXkp
OwotICAgIGFzc2VydChkZXNjLmNvbmZpZ3VyYWJsZSwga2V5KTsKLX0KZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL3B1dC1ub24tcmVpZmllZC1zdGF0aWMtZnVuY3Rpb24tb3ItY3VzdG9tLmpz
IGIvSlNUZXN0cy9zdHJlc3MvcHV0LW5vbi1yZWlmaWVkLXN0YXRpYy1mdW5jdGlvbi1vci1jdXN0
b20uanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjMWYzYWM3NTcyNjQ5NzVkYWMz
OTUxZjQ4OTVmOWIyMjRmOTFmZDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvSlNUZXN0cy9zdHJlc3MvcHV0LW5vbi1yZWlmaWVkLXN0YXRpYy1mdW5jdGlv
bi1vci1jdXN0b20uanMKKysrIC9kZXYvbnVsbApAQCAtMSwxNDMgKzAsMCBAQAotInVzZSBzdHJp
Y3QiOwotY29uc3QgdGVzdFZhbHVlID0gT2JqZWN0LmZyZWV6ZSh7fSk7Ci0KLWZ1bmN0aW9uIGFz
c2VydCh4LCBrZXkpIHsKLSAgICBpZiAoIXgpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcihgS2V5
OiAiJHtrZXl9Ii4gQmFkIGFzc2VydGlvbiFgKTsKLX0KLQotZnVuY3Rpb24gc2hvdWxkVGhyb3co
ZnVuYywgZXJyb3JNZXNzYWdlLCBrZXkpIHsKLSAgICBsZXQgZXJyb3JUaHJvd24gPSBmYWxzZTsK
LSAgICB0cnkgewotICAgICAgICBmdW5jKCk7Ci0gICAgfSBjYXRjaCAoZXJyb3IpIHsKLSAgICAg
ICAgZXJyb3JUaHJvd24gPSB0cnVlOwotICAgICAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJy
b3JNZXNzYWdlKQotICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBLZXk6ICIke2tleX0iLiBC
YWQgZXJyb3I6ICR7ZXJyb3J9YCk7Ci0gICAgfQotICAgIGlmICghZXJyb3JUaHJvd24pCi0gICAg
ICAgIHRocm93IG5ldyBFcnJvcihgS2V5OiAiJHtrZXl9Ii4gRGlkbid0IHRocm93IWApOwotfQot
Ci1mdW5jdGlvbiogdGVzdENhc2VzKCkgewotICAgIC8vIGhhc1NldHRlck9yUmVhZG9ubHlQcm9w
ZXJ0aWVzOiBmYWxzZQotICAgIGZvciAoY29uc3Qga2V5IG9mIFsiaXNGaW5pdGUiLCAiZXZhbCIs
ICJnbG9iYWxUaGlzIiwgInBhcnNlSW50IiwgIkV2YWxFcnJvciIsICJKU09OIiwgIlVpbnQ4Q2xh
bXBlZEFycmF5IiwgIldlYWtNYXAiXSkKLSAgICAgICAgeWllbGQgWyR2bS5jcmVhdGVHbG9iYWxP
YmplY3QoKSwga2V5XTsKLSAgICBmb3IgKGNvbnN0IGtleSBvZiBbInNlYWwiLCAiaXMiLCAidmFs
dWVzIiwgImZyb21FbnRyaWVzIiwgImRlZmluZVByb3BlcnR5IiwgInNldFByb3RvdHlwZU9mIl0p
Ci0gICAgICAgIHlpZWxkIFskdm0uY3JlYXRlR2xvYmFsT2JqZWN0KCkuT2JqZWN0LCBrZXldOwot
ICAgIGZvciAoY29uc3Qga2V5IG9mIFsiYXBwbHkiLCAiY29uc3RydWN0IiwgImhhcyIsICJwcmV2
ZW50RXh0ZW5zaW9ucyIsICJnZXRQcm90b3R5cGVPZiJdKQotICAgICAgICB5aWVsZCBbJHZtLmNy
ZWF0ZUdsb2JhbE9iamVjdCgpLlJlZmxlY3QsIGtleV07Ci0gICAgZm9yIChjb25zdCBrZXkgb2Yg
WyJ0b0RhdGVTdHJpbmciLCAidG9Mb2NhbGVTdHJpbmciLCAiZ2V0VVRDTW9udGgiLCAiZ2V0RGF5
IiwgInNldFVUQ01pbnV0ZXMiLCAic2V0TW9udGgiXSkKLSAgICAgICAgeWllbGQgWyR2bS5jcmVh
dGVHbG9iYWxPYmplY3QoKS5EYXRlLnByb3RvdHlwZSwga2V5XTsKLSAgICBmb3IgKGNvbnN0IGtl
eSBvZiBbImNvbmNhdCIsICJtYXRjaCIsICJwYWRTdGFydCIsICJib2xkIiwgImZpeGVkIiwgInNt
YWxsIiwgInN1YiJdKQotICAgICAgICB5aWVsZCBbJHZtLmNyZWF0ZUdsb2JhbE9iamVjdCgpLlN0
cmluZy5wcm90b3R5cGUsIGtleV07Ci0KLSAgICAvLyBoYXNTZXR0ZXJPclJlYWRvbmx5UHJvcGVy
dGllczogdHJ1ZQotICAgIGZvciAoY29uc3Qga2V5IG9mIFsiZ2V0VWludDE2IiwgInNldEludDgi
LCAiZ2V0RmxvYXQzMiIsICJzZXRCaWdVaW50NjQiXSkKLSAgICAgICAgeWllbGQgWyR2bS5jcmVh
dGVHbG9iYWxPYmplY3QoKS5EYXRhVmlldy5wcm90b3R5cGUsIGtleV07Ci0gICAgZm9yIChjb25z
dCBrZXkgb2YgWyJ0b1N0cmluZyIsICJ2YWx1ZU9mIl0pCi0gICAgICAgIHlpZWxkIFskdm0uY3Jl
YXRlR2xvYmFsT2JqZWN0KCkuU3ltYm9sLnByb3RvdHlwZSwga2V5XTsKLSAgICBmb3IgKGNvbnN0
IGtleSBvZiBbImZvcm1hdFJhbmdlIiwgImZvcm1hdFRvUGFydHMiLCAicmVzb2x2ZWRPcHRpb25z
Il0pCi0gICAgICAgIHlpZWxkIFskdm0uY3JlYXRlR2xvYmFsT2JqZWN0KCkuSW50bC5EYXRlVGlt
ZUZvcm1hdC5wcm90b3R5cGUsIGtleV07Ci0gICAgZm9yIChjb25zdCBrZXkgb2YgWyJmb3JtYXRU
b1BhcnRzIiwgInJlc29sdmVkT3B0aW9ucyJdKQotICAgICAgICB5aWVsZCBbJHZtLmNyZWF0ZUds
b2JhbE9iamVjdCgpLkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZSwga2V5XTsKLSAgICBmb3Ig
KGNvbnN0IGtleSBvZiBbIm1heGltaXplIiwgIm1pbmltaXplIiwgInRvU3RyaW5nIl0pCi0gICAg
ICAgIHlpZWxkIFskdm0uY3JlYXRlR2xvYmFsT2JqZWN0KCkuSW50bC5Mb2NhbGUucHJvdG90eXBl
LCBrZXldOwotCi0gICAgeWllbGQgWyR2bS5jcmVhdGVTdGF0aWNDdXN0b21WYWx1ZSgpLCAidGVz
dFN0YXRpY1ZhbHVlTm9TZXR0ZXIiXTsKLX0KLQotZm9yIChjb25zdCBbb2JqZWN0LCBrZXldIG9m
IHRlc3RDYXNlcygpKSB7Ci0gICAgb2JqZWN0W2tleV0gPSB0ZXN0VmFsdWU7Ci0KLSAgICBjb25z
dCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIGtleSk7Ci0g
ICAgYXNzZXJ0KGRlc2MudmFsdWUgPT09IHRlc3RWYWx1ZSwga2V5KTsKLSAgICBhc3NlcnQoZGVz
Yy53cml0YWJsZSwga2V5KTsKLSAgICBhc3NlcnQoIWRlc2MuZW51bWVyYWJsZSwga2V5KTsKLSAg
ICBhc3NlcnQoZGVzYy5jb25maWd1cmFibGUsIGtleSk7Ci19Ci0KLWZvciAoY29uc3QgW29iamVj
dCwga2V5XSBvZiB0ZXN0Q2FzZXMoKSkgewotICAgIE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyhv
YmplY3QpOwotICAgIG9iamVjdFtrZXldID0gdGVzdFZhbHVlOwotCi0gICAgY29uc3QgZGVzYyA9
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBrZXkpOwotICAgIGFzc2Vy
dChkZXNjLnZhbHVlID09PSB0ZXN0VmFsdWUsIGtleSk7Ci0gICAgYXNzZXJ0KGRlc2Mud3JpdGFi
bGUsIGtleSk7Ci0gICAgYXNzZXJ0KCFkZXNjLmVudW1lcmFibGUsIGtleSk7Ci0gICAgYXNzZXJ0
KGRlc2MuY29uZmlndXJhYmxlLCBrZXkpOwotfQotCi1mb3IgKGNvbnN0IFtvYmplY3QsIGtleV0g
b2YgdGVzdENhc2VzKCkpIHsKLSAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBrZXks
IHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiBmYWxzZSB9KTsKLSAgICBvYmplY3Rb
a2V5XSA9IHRlc3RWYWx1ZTsKLQotICAgIGNvbnN0IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKG9iamVjdCwga2V5KTsKLSAgICBhc3NlcnQoZGVzYy52YWx1ZSA9PT0gdGVz
dFZhbHVlLCBrZXkpOwotICAgIGFzc2VydChkZXNjLndyaXRhYmxlLCBrZXkpOwotICAgIGFzc2Vy
dChkZXNjLmVudW1lcmFibGUsIGtleSk7Ci0gICAgYXNzZXJ0KCFkZXNjLmNvbmZpZ3VyYWJsZSwg
a2V5KTsKLX0KLQotZm9yIChjb25zdCBbb2JqZWN0LCBrZXldIG9mIHRlc3RDYXNlcygpKSB7Ci0g
ICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwga2V5LCB7IHdyaXRhYmxlOiBmYWxzZSB9
KTsKLSAgICBzaG91bGRUaHJvdygoKSA9PiB7IG9iamVjdFtrZXldID0gdGVzdFZhbHVlOyB9LCAi
VHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LiIsIGtl
eSk7Ci0KLSAgICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihv
YmplY3QsIGtleSk7Ci0gICAgYXNzZXJ0KGRlc2MudmFsdWUgIT09IHRlc3RWYWx1ZSwga2V5KTsK
LSAgICBhc3NlcnQoIWRlc2Mud3JpdGFibGUsIGtleSk7Ci0gICAgYXNzZXJ0KCFkZXNjLmVudW1l
cmFibGUsIGtleSk7Ci0gICAgYXNzZXJ0KGRlc2MuY29uZmlndXJhYmxlLCBrZXkpOwotfQotCi1m
b3IgKGNvbnN0IFtvYmplY3QsIGtleV0gb2YgdGVzdENhc2VzKCkpIHsKLSAgICBjb25zdCBoZWly
ID0gT2JqZWN0LmNyZWF0ZShvYmplY3QpOwotICAgIGhlaXJba2V5XSA9IHRlc3RWYWx1ZTsKLQot
ICAgIGNvbnN0IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGhlaXIsIGtl
eSk7Ci0gICAgYXNzZXJ0KGRlc2MudmFsdWUgPT09IHRlc3RWYWx1ZSwga2V5KTsKLSAgICBhc3Nl
cnQoZGVzYy53cml0YWJsZSwga2V5KTsKLSAgICBhc3NlcnQoZGVzYy5lbnVtZXJhYmxlLCBrZXkp
OwotICAgIGFzc2VydChkZXNjLmNvbmZpZ3VyYWJsZSwga2V5KTsKLSAgICBhc3NlcnQob2JqZWN0
W2tleV0gIT09IHRlc3RWYWx1ZSwga2V5KTsKLX0KLQotZm9yIChjb25zdCBbb2JqZWN0LCBrZXld
IG9mIHRlc3RDYXNlcygpKSB7Ci0gICAgY29uc3QgcHJvdG90eXBlID0gT2JqZWN0LmdldFByb3Rv
dHlwZU9mKG9iamVjdCk7Ci0gICAgaWYgKHByb3RvdHlwZSAhPT0gbnVsbCkgewotICAgICAgICBP
YmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG90eXBlLCBrZXksIHsKLSAgICAgICAgICAgIHNldCgp
IHsgdGhyb3cgbmV3IEVycm9yKGAiJHtrZXl9IiBzZXR0ZXIgc2hvdWxkIGJlIHVucmVhY2hhYmxl
IWApOyB9LAotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBjb25zdCBoZWlyID0gT2JqZWN0LmNy
ZWF0ZShvYmplY3QpOwotICAgIGhlaXJba2V5XSA9IHRlc3RWYWx1ZTsKLQotICAgIGNvbnN0IGRl
c2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGhlaXIsIGtleSk7Ci0gICAgYXNz
ZXJ0KGRlc2MudmFsdWUgPT09IHRlc3RWYWx1ZSwga2V5KTsKLSAgICBhc3NlcnQoZGVzYy53cml0
YWJsZSwga2V5KTsKLSAgICBhc3NlcnQoZGVzYy5lbnVtZXJhYmxlLCBrZXkpOwotICAgIGFzc2Vy
dChkZXNjLmNvbmZpZ3VyYWJsZSwga2V5KTsKLSAgICBhc3NlcnQob2JqZWN0W2tleV0gIT09IHRl
c3RWYWx1ZSwga2V5KTsKLX0KLQotZm9yIChjb25zdCBbb2JqZWN0LCBrZXldIG9mIHRlc3RDYXNl
cygpKSB7Ci0gICAgY29uc3QgaGVpciA9IE9iamVjdC5jcmVhdGUob2JqZWN0KTsKLSAgICBPYmpl
Y3QucHJldmVudEV4dGVuc2lvbnMoaGVpcik7Ci0KLSAgICBzaG91bGRUaHJvdygoKSA9PiB7IGhl
aXJba2V5XSA9IHRlc3RWYWx1ZTsgfSwgIlR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0
byByZWFkb25seSBwcm9wZXJ0eS4iLCBrZXkpOwotICAgIGFzc2VydChoZWlyW2tleV0gIT09IHRl
c3RWYWx1ZSwga2V5KTsKLSAgICBhc3NlcnQob2JqZWN0W2tleV0gIT09IHRlc3RWYWx1ZSwga2V5
KTsKLX0KLQotZm9yIChjb25zdCBbb2JqZWN0LCBrZXldIG9mIHRlc3RDYXNlcygpKSB7Ci0gICAg
Y29uc3QgdGFyZ2V0ID0ge307Ci0gICAgYXNzZXJ0KFJlZmxlY3Quc2V0KHRhcmdldCwga2V5LCB0
ZXN0VmFsdWUsIG9iamVjdCksIGtleSk7Ci0gICAgYXNzZXJ0KCF0YXJnZXQuaGFzT3duUHJvcGVy
dHkoa2V5KSwga2V5KTsKLQotICAgIGNvbnN0IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKG9iamVjdCwga2V5KTsKLSAgICBhc3NlcnQoZGVzYy52YWx1ZSA9PT0gdGVzdFZh
bHVlLCBrZXkpOwotICAgIGFzc2VydChkZXNjLndyaXRhYmxlLCBrZXkpOwotICAgIGFzc2VydCgh
ZGVzYy5lbnVtZXJhYmxlLCBrZXkpOwotICAgIGFzc2VydChkZXNjLmNvbmZpZ3VyYWJsZSwga2V5
KTsKLX0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC10by1wcmltaXRpdmUtbm9uLXJl
aWZpZWQtc3RhdGljLWN1c3RvbS5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC10by1wcmltaXRpdmUt
bm9uLXJlaWZpZWQtc3RhdGljLWN1c3RvbS5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZDhjZDM1MzIwYzlmMGM0M2M3MTI0ZTNiMTRhYTc3NzE0MzhjY2IwOC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9wdXQtdG8t
cHJpbWl0aXZlLW5vbi1yZWlmaWVkLXN0YXRpYy1jdXN0b20uanMKKysrIC9kZXYvbnVsbApAQCAt
MSw2NCArMCwwIEBACi0idXNlIHN0cmljdCI7Ci0KLWZ1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwg
ZXhwZWN0ZWQpIHsKLSAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKLSAgICAgICAgdGhyb3cg
bmV3IEVycm9yKGBCYWQgdmFsdWU6ICR7YWN0dWFsfSFgKTsKLX0KLQotZnVuY3Rpb24gc2hvdWxk
VGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7Ci0gICAgbGV0IGVycm9yVGhyb3duID0gZmFsc2U7
Ci0gICAgdHJ5IHsKLSAgICAgICAgZnVuYygpOwotICAgIH0gY2F0Y2ggKGVycm9yKSB7Ci0gICAg
ICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKLSAgICAgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVy
cm9yTWVzc2FnZSkKLSAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQmFkIGVycm9yOiAke2Vy
cm9yfWApOwotICAgIH0KLSAgICBpZiAoIWVycm9yVGhyb3duKQotICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIkRpZG4ndCB0aHJvdyEiKTsKLX0KLQotY29uc3QgcG9pc29uZWRTZXR0ZXIgPSB7IHNl
dCgpIHsgdGhyb3cgbmV3IEVycm9yKCJPYmplY3QucHJvdG90eXBlIHNldHRlciBzaG91bGQgYmUg
dW5yZWFjaGFibGUhIik7IH0gfTsKLWNvbnN0IHByaW1pdGl2ZXMgPSBbdHJ1ZSwgMSwgIiIsIFN5
bWJvbCgpLCAwbl07Ci0KLShmdW5jdGlvbiB0ZXN0U3RhdGljQ3VzdG9tVmFsdWUoKSB7Ci0gICAg
T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoT2JqZWN0LnByb3RvdHlwZSwgewotICAgICAgICB0ZXN0
U3RhdGljVmFsdWU6IHBvaXNvbmVkU2V0dGVyLAotICAgICAgICB0ZXN0U3RhdGljVmFsdWVOb1Nl
dHRlcjogcG9pc29uZWRTZXR0ZXIsCi0gICAgICAgIHRlc3RTdGF0aWNWYWx1ZVJlYWRPbmx5OiBw
b2lzb25lZFNldHRlciwKLSAgICB9KTsKLQotICAgIGZvciAoY29uc3QgcHJpbWl0aXZlIG9mIHBy
aW1pdGl2ZXMpIHsKLSAgICAgICAgY29uc3QgcHJpbWl0aXZlUHJvdG90eXBlID0gT2JqZWN0Lmdl
dFByb3RvdHlwZU9mKHByaW1pdGl2ZSk7Ci0gICAgICAgIGNvbnN0IHN0YXRpY0N1c3RvbVZhbHVl
ID0gJHZtLmNyZWF0ZVN0YXRpY0N1c3RvbVZhbHVlKCk7Ci0gICAgICAgIE9iamVjdC5zZXRQcm90
b3R5cGVPZihwcmltaXRpdmVQcm90b3R5cGUsIHN0YXRpY0N1c3RvbVZhbHVlKTsKLQotICAgICAg
ICBwcmltaXRpdmUudGVzdFN0YXRpY1ZhbHVlID0gMTsKLSAgICAgICAgc2hvdWxkQmUoc3RhdGlj
Q3VzdG9tVmFsdWUudGVzdFN0YXRpY1ZhbHVlLCAxKTsKLSAgICAgICAgc2hvdWxkVGhyb3coKCkg
PT4geyBwcmltaXRpdmUudGVzdFN0YXRpY1ZhbHVlID0gMTsgfSwgIlR5cGVFcnJvcjogQXR0ZW1w
dGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS4iKTsKLQotICAgICAgICBzaG91bGRU
aHJvdygoKSA9PiB7IHByaW1pdGl2ZS50ZXN0U3RhdGljVmFsdWVOb1NldHRlciA9IDE7IH0sICJU
eXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuIik7Ci0g
ICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgcHJpbWl0aXZlLnRlc3RTdGF0aWNWYWx1ZVJlYWRP
bmx5ID0gMTsgfSwgIlR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBw
cm9wZXJ0eS4iKTsKLSAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHByaW1pdGl2ZVByb3Rv
dHlwZSwgT2JqZWN0LnByb3RvdHlwZSk7Ci0gICAgfQotfSkoKTsKLQotKGZ1bmN0aW9uIHRlc3RT
dGF0aWNDdXN0b21BY2Nlc3NvcigpIHsKLSAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhPYmpl
Y3QucHJvdG90eXBlLCB7Ci0gICAgICAgIHRlc3RTdGF0aWNBY2Nlc3NvcjogcG9pc29uZWRTZXR0
ZXIsCi0gICAgICAgIHRlc3RTdGF0aWNBY2Nlc3NvclJlYWRPbmx5OiBwb2lzb25lZFNldHRlciwK
LSAgICB9KTsKLQotICAgIGZvciAoY29uc3QgcHJpbWl0aXZlIG9mIHByaW1pdGl2ZXMpIHsKLSAg
ICAgICAgY29uc3QgcHJpbWl0aXZlUHJvdG90eXBlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHBy
aW1pdGl2ZSk7Ci0gICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihwcmltaXRpdmVQcm90b3R5
cGUsICR2bS5jcmVhdGVTdGF0aWNDdXN0b21BY2Nlc3NvcigpKTsKLQotICAgICAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDEwMDA7IGkrKykgewotICAgICAgICAgICAgcHJpbWl0aXZlLnRlc3RTdGF0
aWNBY2Nlc3NvciA9IGk7Ci0gICAgICAgICAgICBzaG91bGRCZShwcmltaXRpdmVQcm90b3R5cGUu
dGVzdEZpZWxkLCBpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHNob3VsZFRocm93KCgpID0+IHsg
cHJpbWl0aXZlLnRlc3RTdGF0aWNBY2Nlc3NvclJlYWRPbmx5ID0gMTsgfSwgIlR5cGVFcnJvcjog
QXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS4iKTsKLSAgICAgICAgT2Jq
ZWN0LnNldFByb3RvdHlwZU9mKHByaW1pdGl2ZVByb3RvdHlwZSwgT2JqZWN0LnByb3RvdHlwZSk7
Ci0gICAgfQotfSkoKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC10by1wcmltaXRp
dmUuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtdG8tcHJpbWl0aXZlLmpzCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA5ZTJmMjliZmU2ZGJmYjFmZDhkMTViZGFjNzVkZWNiOWZkZDdlZjVl
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0pTVGVzdHMv
c3RyZXNzL3B1dC10by1wcmltaXRpdmUuanMKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBA
Ci1mdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7Ci0gICAgaWYgKGFjdHVhbCAh
PT0gZXhwZWN0ZWQpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcihgQmFkIHZhbHVlOiAke2FjdHVh
bH0hYCk7Ci19Ci0KLWZ1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgewot
ICAgIGxldCBlcnJvclRocm93biA9IGZhbHNlOwotICAgIHRyeSB7Ci0gICAgICAgIGZ1bmMoKTsK
LSAgICB9IGNhdGNoIChlcnJvcikgewotICAgICAgICBlcnJvclRocm93biA9IHRydWU7Ci0gICAg
ICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCi0gICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoYEJhZCBlcnJvcjogJHtlcnJvcn1gKTsKLSAgICB9Ci0gICAgaWYgKCFlcnJv
clRocm93bikKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJEaWRuJ3QgdGhyb3chIik7Ci19Ci0K
LShmdW5jdGlvbiBzdHJpbmdMZW5ndGgoKSB7Ci0gICAgbGV0IHN0ciA9ICJmb28iOwotCi0gICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7IGkrKykgewotICAgICAgICBzdHIubGVuZ3RoID0gMDsK
LSAgICAgICAgc2hvdWxkQmUoc3RyLmxlbmd0aCwgMyk7Ci0gICAgICAgIHNob3VsZFRocm93KCgp
ID0+IHsgInVzZSBzdHJpY3QiOyAiYmFyIi5sZW5ndGggPSAzOyB9LCAiVHlwZUVycm9yOiBBdHRl
bXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LiIpOwotICAgIH0KLX0pKCk7CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtdG8tcHJvdG8tY2hhaW4tb3ZlcnJpZGVzLXB1
dC5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC10by1wcm90by1jaGFpbi1vdmVycmlkZXMtcHV0Lmpz
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZTRiYjJjYzA1NWRlNzM2NmQyZDUwMzFh
NzQ4NDI3NGJhZWRhMDc2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL3B1dC10by1wcm90by1jaGFpbi1vdmVycmlkZXMtcHV0Lmpz
CisrKyAvZGV2L251bGwKQEAgLTEsMTQyICswLDAgQEAKLWNvbnN0IFRFU1RfVkFMVUUgPSAxMDYy
NjMwNzEzOyAvLyBBcnJheSdzICJsZW5ndGgiIGlzIHJlcXVpcmVkIHRvIGJlIGludDMyCi0KLXRl
c3RTZXRSZXN1bHQoWzEsIDJdLCAibGVuZ3RoIiwgdHJ1ZSk7Ci10ZXN0U2V0UmVzdWx0KAotICAg
IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgQXJyYXksICJsZW5ndGgiLCB7IHdyaXRhYmxlOiBm
YWxzZSB9KSwKLSAgICAibGVuZ3RoIiwKLSAgICBmYWxzZSwKLSk7Ci0KLXRlc3RTZXRSZXN1bHQo
bmV3IFN0cmluZywgImxlbmd0aCIsIGZhbHNlKTsKLXRlc3RTZXRSZXN1bHQobmV3IFJlZ0V4cCwg
Imxhc3RJbmRleCIsIHRydWUpOwotdGVzdFNldFJlc3VsdCgKLSAgICBPYmplY3QuZGVmaW5lUHJv
cGVydHkoLyg/OikvZywgImxhc3RJbmRleCIsIHsgd3JpdGFibGU6IGZhbHNlIH0pLAotICAgICJs
YXN0SW5kZXgiLAotICAgIGZhbHNlLAotKTsKLQotZm9yIChjb25zdCBrZXkgb2YgWyJsaW5lIiwg
ImNvbHVtbiIsICJzb3VyY2VVUkwiLCAic3RhY2siXSkKLSAgICB0ZXN0U2V0UmVzdWx0KG5ldyBF
cnJvciwga2V5LCB0cnVlKTsKLQotY29uc3QgbWFwcGVkQXJndW1lbnRzID0gKGZ1bmN0aW9uKGEs
IGIpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSkoMSwgMik7Ci10ZXN0U2V0UmVzdWx0KG1hcHBlZEFy
Z3VtZW50cywgImNhbGxlZSIsIHRydWUpOwotdGVzdFNldFJlc3VsdChtYXBwZWRBcmd1bWVudHMs
ICJsZW5ndGgiLCB0cnVlKTsKLXRlc3RTZXRSZXN1bHQobWFwcGVkQXJndW1lbnRzLCBTeW1ib2wu
aXRlcmF0b3IsIHRydWUpOwotCi1jb25zdCB1bm1hcHBlZEFyZ3VtZW50cyA9IChmdW5jdGlvbigp
IHsgInVzZSBzdHJpY3QiOyByZXR1cm4gYXJndW1lbnRzOyB9KSgpOwotdGVzdFNldFJlc3VsdCh1
bm1hcHBlZEFyZ3VtZW50cywgImxlbmd0aCIsIHRydWUpOwotdGVzdFNldFJlc3VsdCh1bm1hcHBl
ZEFyZ3VtZW50cywgU3ltYm9sLml0ZXJhdG9yLCB0cnVlKTsKLQotdmFyIGZvbzsKLWZ1bmN0aW9u
IGJhcigpIHt9Ci1mb3IgKGNvbnN0IGtleSBvZiBbImZvbyIsICJiYXIiLCAicGFyc2VJbnQiXSkK
LSAgICB0ZXN0U2V0UmVzdWx0KGdsb2JhbFRoaXMsIGtleSwgdHJ1ZSk7Ci0KLWZvciAoY29uc3Qg
a2V5IG9mIFsiSW5maW5pdHkiLCAiTmFOIiwgInVuZGVmaW5lZCJdKQotICAgIHRlc3RTZXRSZXN1
bHQoZ2xvYmFsVGhpcywga2V5LCBmYWxzZSk7Ci0KLWZvciAoY29uc3Qga2V5IG9mIFsibmFtZSIs
ICJsZW5ndGgiXSkgewotICAgIHRlc3RTZXRSZXN1bHQoZnVuY3Rpb24oKSB7fS5iaW5kKCksIGtl
eSwgZmFsc2UpOwotICAgIHRlc3RTZXRSZXN1bHQoCi0gICAgICAgIE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShmdW5jdGlvbigpIHt9LCBrZXksIHsgd3JpdGFibGU6IHRydWUgfSksCi0gICAgICAgIGtl
eSwKLSAgICAgICAgdHJ1ZSwKLSAgICApOwotCi0gICAgdGVzdFNldFJlc3VsdCgoKSA9PiB7ICJ1
c2Ugc3RyaWN0IjsgfSwga2V5LCBmYWxzZSk7Ci0gICAgdGVzdFNldFJlc3VsdCgKLSAgICAgICAg
T2JqZWN0LmRlZmluZVByb3BlcnR5KHBhcnNlRmxvYXQsIGtleSwgeyB3cml0YWJsZTogdHJ1ZSB9
KSwKLSAgICAgICAga2V5LAotICAgICAgICB0cnVlLAotICAgICk7Ci19Ci0KLXRlc3RTZXRSZXN1
bHQoZnVuY3Rpb24oKSB7ICJ1c2Ugc3RyaWN0IjsgfSwgInByb3RvdHlwZSIsIHRydWUpOwotdGVz
dFNldFJlc3VsdCgKLSAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZnVuY3Rpb24oKSB7fSwgInBy
b3RvdHlwZSIsIHsgd3JpdGFibGU6IGZhbHNlIH0pLAotICAgICJwcm90b3R5cGUiLAotICAgIGZh
bHNlLAotKTsKLQotdGVzdFNldFJlc3VsdChmdW5jdGlvbigpIHt9LCAiYXJndW1lbnRzIiwgZmFs
c2UpOwotdGVzdFNldFJlc3VsdChmdW5jdGlvbigpIHt9LCAiY2FsbGVyIiwgZmFsc2UpOwotCi0v
LyA9PT0gaGFybmVzcyA9PT0KLQotZnVuY3Rpb24gdGVzdFNldFJlc3VsdCh0YXJnZXQsIGtleSwg
ZXhwZWN0ZWRSZXN1bHQpIHsKLSAgICBsZXQgY2xlYW5VcCA9IHB1dFNldHRlck9uUHJvdG90eXBl
KHRhcmdldCwga2V5LCAoKSA9PiB7fSk7Ci0KLSAgICBmb3IgKGNvbnN0IHByaW1pdGl2ZSBvZiBb
dHJ1ZSwgMSwgImZvbyIsIFN5bWJvbCgpLCAwbl0pIHsKLSAgICAgICAgY29uc3QgcHJpbWl0aXZl
UHJvdG90eXBlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHByaW1pdGl2ZSk7Ci0gICAgICAgIE9i
amVjdC5zZXRQcm90b3R5cGVPZihwcmltaXRpdmVQcm90b3R5cGUsIHRhcmdldCk7Ci0gICAgICAg
IHRlc3RTZXRSZXN1bHRJbnRlcm5hbCh0YXJnZXQsIGtleSwgcHJpbWl0aXZlLCBmYWxzZSk7Ci0g
ICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihwcmltaXRpdmVQcm90b3R5cGUsIE9iamVjdC5w
cm90b3R5cGUpOwotICAgIH0KLQotICAgIGNsZWFuVXAoKTsKLSAgICBjbGVhblVwID0gcHV0U2V0
dGVyT25Qcm90b3R5cGUodGFyZ2V0LCBrZXksICgpID0+IHsKLSAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKGAke1N0cmluZyhrZXkpfSBzZXR0ZXIgc2hvdWxkIGJlIHVucmVhY2hhYmxlIWApOwotICAg
IH0pOwotCi0gICAgZm9yIChjb25zdCByZWNlaXZlciBvZiBbCi0gICAgICAgIE9iamVjdC5jcmVh
dGUodGFyZ2V0KSwKLSAgICAgICAgT2JqZWN0LmNyZWF0ZShPYmplY3QuY3JlYXRlKHRhcmdldCkp
LAotICAgICAgICBuZXcgUHJveHkodGFyZ2V0LCB7fSksCi0gICAgICAgIG5ldyBQcm94eSh0YXJn
ZXQsIFJlZmxlY3QpLAotICAgIF0pCi0gICAgICAgIHRlc3RTZXRSZXN1bHRJbnRlcm5hbCh0YXJn
ZXQsIGtleSwgcmVjZWl2ZXIsIGV4cGVjdGVkUmVzdWx0KTsKLQotICAgIGNsZWFuVXAoKTsKLX0K
LQotZnVuY3Rpb24gcHV0U2V0dGVyT25Qcm90b3R5cGUodGFyZ2V0LCBrZXksIHNldCkgewotICAg
IGNvbnN0IGRlc2NyaXB0b3IgPSB7IHNldCwgY29uZmlndXJhYmxlOiB0cnVlIH07Ci0gICAgY29u
c3QgY3VycmVudFByb3RvdHlwZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih0YXJnZXQpOwotICAg
IGNvbnN0IG5ld1Byb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUobnVsbCwgeyBba2V5XTogZGVzY3Jp
cHRvciB9KTsKLQotICAgIGlmIChSZWZsZWN0LnNldFByb3RvdHlwZU9mKHRhcmdldCwgbmV3UHJv
dG90eXBlKSkKLSAgICAgICAgcmV0dXJuICgpID0+IHsgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRh
cmdldCwgY3VycmVudFByb3RvdHlwZSk7IH07Ci0KLSAgICBpZiAoY3VycmVudFByb3RvdHlwZSAh
PT0gbnVsbCAmJiBSZWZsZWN0LmRlZmluZVByb3BlcnR5KGN1cnJlbnRQcm90b3R5cGUsIGtleSwg
ZGVzY3JpcHRvcikpCi0gICAgICAgIHJldHVybiAoKSA9PiB7ICJ1c2Ugc3RyaWN0IjsgZGVsZXRl
IGN1cnJlbnRQcm90b3R5cGVba2V5XTsgfTsKLQotICAgIHRocm93IG5ldyBFcnJvcigiVGhpcyBp
cyB1bnJlYWNoYWJsZTogYXQgbGVhc3Qgb25lIGFwcHJvYWNoIHNob3VsZCBzdWNjZWVkISIpOwot
fQotCi1mdW5jdGlvbiB0ZXN0U2V0UmVzdWx0SW50ZXJuYWwodGFyZ2V0LCBrZXksIHJlY2VpdmVy
LCBleHBlY3RlZFJlc3VsdCkgewotICAgIHJlY2VpdmVyW2tleV0gPSBURVNUX1ZBTFVFOwotICAg
IHNob3VsZEJlKHJlY2VpdmVyW2tleV0gPT09IFRFU1RfVkFMVUUsIGV4cGVjdGVkUmVzdWx0LCBr
ZXkpOwotCi0gICAgdGVzdFNldFJlc3VsdFN0cmljdChyZWNlaXZlciwga2V5LCBleHBlY3RlZFJl
c3VsdCk7Ci0KLSAgICBpZiAocmVjZWl2ZXIgPT09IE9iamVjdChyZWNlaXZlcikpCi0gICAgICAg
IHNob3VsZEJlKFJlZmxlY3Quc2V0KHJlY2VpdmVyLCBrZXksIFRFU1RfVkFMVUUpLCBleHBlY3Rl
ZFJlc3VsdCwga2V5KTsKLSAgICBzaG91bGRCZShSZWZsZWN0LnNldCh0YXJnZXQsIGtleSwgVEVT
VF9WQUxVRSwgcmVjZWl2ZXIpLCBleHBlY3RlZFJlc3VsdCwga2V5KTsKLX0KLQotZnVuY3Rpb24g
dGVzdFNldFJlc3VsdFN0cmljdChyZWNlaXZlciwga2V5LCBleHBlY3RlZFJlc3VsdCkgewotICAg
ICJ1c2Ugc3RyaWN0IjsKLSAgICBpZiAoZXhwZWN0ZWRSZXN1bHQpIHsKLSAgICAgICAgcmVjZWl2
ZXJba2V5XSA9IFRFU1RfVkFMVUU7Ci0gICAgICAgIHNob3VsZEJlKHJlY2VpdmVyW2tleV0sIFRF
U1RfVkFMVUUsIGtleSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHNob3VsZFRocm93VHlwZUVycm9y
KCgpID0+IHsgcmVjZWl2ZXJba2V5XSA9IFRFU1RfVkFMVUU7IH0sIGtleSk7Ci19Ci0KLWZ1bmN0
aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQsIGtleSkgewotICAgIGlmIChhY3R1YWwgIT09
IGV4cGVjdGVkKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEtleTogJHtTdHJpbmcoa2V5KX0u
ICR7YWN0dWFsfSAhPT0gJHtleHBlY3RlZH1gKTsKLX0KLQotZnVuY3Rpb24gc2hvdWxkVGhyb3dU
eXBlRXJyb3IoZnVuYywga2V5KSB7Ci0gICAgbGV0IGVycm9yVGhyb3duID0gZmFsc2U7Ci0gICAg
dHJ5IHsKLSAgICAgICAgZnVuYygpOwotICAgIH0gY2F0Y2ggKGVycm9yKSB7Ci0gICAgICAgIGVy
cm9yVGhyb3duID0gdHJ1ZTsKLSAgICAgICAgaWYgKGVycm9yLmNvbnN0cnVjdG9yICE9PSBUeXBl
RXJyb3IpCi0gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEtleTogJHtTdHJpbmcoa2V5KX0u
IEJhZCBlcnJvcjogJHtlcnJvcn1gKTsKLSAgICB9Ci0gICAgaWYgKCFlcnJvclRocm93bikKLSAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKGBLZXk6ICR7U3RyaW5nKGtleSl9LiBEaWRuJ3QgdGhyb3ch
YCk7Ci19CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1jYW5vbmljYWwt
bnVtZXJpYy1pbmRleC1zdHJpbmctc2V0LmpzIGIvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXkt
Y2Fub25pY2FsLW51bWVyaWMtaW5kZXgtc3RyaW5nLXNldC5qcwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYjI0ZjA2ODVjM2VmMTRlNzA0MTYwNGZiYjIwZWQyN2FiZjYyYzFkMS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9KU1Rlc3RzL3N0cmVz
cy90eXBlZC1hcnJheS1jYW5vbmljYWwtbnVtZXJpYy1pbmRleC1zdHJpbmctc2V0LmpzCisrKyAv
ZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotJ3VzZSBzdHJpY3QnOwotY29uc3QgVHlwZWRBcnJh
eXMgPSBbVWludDhDbGFtcGVkQXJyYXksIFVpbnQ4QXJyYXksIFVpbnQxNkFycmF5LCBVaW50MzJB
cnJheSwgSW50OEFycmF5LCBJbnQxNkFycmF5LCBJbnQzMkFycmF5LCBGbG9hdDMyQXJyYXksIEZs
b2F0NjRBcnJheV07Ci1jb25zdCBjYW5vbmljYWxOdW1lcmljSW5kZXhTdHJpbmdzID0gWyctMCcs
ICctMScsICctMy4xNCcsICdJbmZpbml0eScsICctSW5maW5pdHknLCAnTmFOJywgJzAuNScsICc0
Mjk0OTY3Mjk1JywgJzQyOTQ5NjcyOTYnXTsKLQotZnVuY3Rpb24gYXNzZXJ0KHgsIGtleSkgewot
ICAgIGlmICgheCkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBCYWQgYXNzZXJ0aW9uISBLZXk6
ICcke2tleX0nYCk7Ci19Ci0KLWZvciAoY29uc3QgVHlwZWRBcnJheSBvZiBUeXBlZEFycmF5cykg
ewotICAgIGZvciAoY29uc3Qga2V5IG9mIGNhbm9uaWNhbE51bWVyaWNJbmRleFN0cmluZ3MpIHsK
LSAgICAgICAgY29uc3QgYXNzZXJ0UHJvdG90eXBlUHJvcGVydHlJc1VucmVhY2hhYmxlID0gKCkg
PT4gewotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnN0IHRBID0gbmV3IFR5cGVk
QXJyYXk7Ci0gICAgICAgICAgICAgICAgdEFba2V5XSA9IDE7Ci0gICAgICAgICAgICAgICAgYXNz
ZXJ0KCF0QS5oYXNPd25Qcm9wZXJ0eShrZXkpLCBrZXkpOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29uc3QgdEEgPSBuZXcgVHlwZWRBcnJheTsKLSAg
ICAgICAgICAgICAgICBjb25zdCBoZWlyID0gT2JqZWN0LmNyZWF0ZSh0QSk7Ci0gICAgICAgICAg
ICAgICAgaGVpcltrZXldID0gMjsKLQotICAgICAgICAgICAgICAgIGFzc2VydCghdEEuaGFzT3du
UHJvcGVydHkoa2V5KSwga2V5KTsKLSAgICAgICAgICAgICAgICBhc3NlcnQoIWhlaXIuaGFzT3du
UHJvcGVydHkoa2V5KSwga2V5KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IHt9OwotICAgICAgICAgICAgICAgIGNvbnN0IHJl
Y2VpdmVyID0gbmV3IFR5cGVkQXJyYXk7Ci0KLSAgICAgICAgICAgICAgICBhc3NlcnQoIVJlZmxl
Y3Quc2V0KHRhcmdldCwga2V5LCAzLCByZWNlaXZlciksIGtleSk7Ci0gICAgICAgICAgICAgICAg
YXNzZXJ0KCF0YXJnZXQuaGFzT3duUHJvcGVydHkoa2V5KSwga2V5KTsKLSAgICAgICAgICAgICAg
ICBhc3NlcnQoIXJlY2VpdmVyLmhhc093blByb3BlcnR5KGtleSksIGtleSk7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb25zdCB0QSA9IG5ldyBUeXBl
ZEFycmF5OwotICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IE9iamVjdC5jcmVhdGUodEEp
OwotICAgICAgICAgICAgICAgIGNvbnN0IHJlY2VpdmVyID0ge307Ci0KLSAgICAgICAgICAgICAg
ICBhc3NlcnQoUmVmbGVjdC5zZXQodGFyZ2V0LCBrZXksIDQsIHJlY2VpdmVyKSwga2V5KTsKLSAg
ICAgICAgICAgICAgICBhc3NlcnQoIXRBLmhhc093blByb3BlcnR5KGtleSksIGtleSk7Ci0gICAg
ICAgICAgICAgICAgYXNzZXJ0KCF0YXJnZXQuaGFzT3duUHJvcGVydHkoa2V5KSwga2V5KTsKLSAg
ICAgICAgICAgICAgICBhc3NlcnQoIXJlY2VpdmVyLmhhc093blByb3BlcnR5KGtleSksIGtleSk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0KLSAgICAgICAgT2JqZWN0LmRlZmluZVByb3Bl
cnR5KFR5cGVkQXJyYXkucHJvdG90eXBlLCBrZXksIHsKLSAgICAgICAgICAgIHNldCgpIHsgdGhy
b3cgbmV3IEVycm9yKGAke1R5cGVkQXJyYXkubmFtZX0ucHJvdG90eXBlWycke2tleX0nXSBzZXR0
ZXIgc2hvdWxkIGJlIHVucmVhY2hhYmxlIWApOyB9LAotICAgICAgICAgICAgY29uZmlndXJhYmxl
OiB0cnVlLAotICAgICAgICB9KTsKLSAgICAgICAgYXNzZXJ0UHJvdG90eXBlUHJvcGVydHlJc1Vu
cmVhY2hhYmxlKCk7Ci0KLSAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFR5cGVkQXJyYXku
cHJvdG90eXBlLCBrZXksIHsgd3JpdGFibGU6IGZhbHNlIH0pOwotICAgICAgICBhc3NlcnRQcm90
b3R5cGVQcm9wZXJ0eUlzVW5yZWFjaGFibGUoKTsKLSAgICB9Ci19Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428951</attachid>
            <date>2021-05-18 10:12:58 -0700</date>
            <delta_ts>2021-05-18 11:01:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225917-20210518131256.patch</filename>
            <type>text/plain</type>
            <size>184435</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MmQ1ZWQ1NGJhNDJjZGYyYzk1NzUyYzY4NWUxMWI0OWNjN2MyMDQxLi41YWRiMTcxZDliZjFhZDg2
NWFmNjMxYjMyZjNiOGI1OGE1M2NhMDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDMgQEAKKzIwMjEtMDUtMTggIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgVGVtcG9yYXJpbHkgcmV2ZXJ0IHIyNzY1OTIgYXMgaXQgYnJlYWtz
IHNvbWUgbmF0aXZlIGFwcHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyNTkxNworCisgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydC4KKworICAgICAg
ICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmpl
Y3RGdW5jdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Ojpw
dXQpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaDoKKyAgICAgICAgKiBydW50
aW1lL0NsYXNzSW5mby5oOgorICAgICAgICAqIHJ1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmg6Cisg
ICAgICAgICogcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuY3BwOgorICAgICAgICAoSlNDOjpj
YWxsQ3VzdG9tU2V0dGVyKToKKyAgICAgICAgKiBydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5o
OgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRp
bWUvRXJyb3JJbnN0YW5jZS5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJpY0FyZ3VtZW50cy5o
OgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6R2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0dl
dHRlclNldHRlci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChK
U0M6OkpTQXJyYXk6OnB1dCk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5Lmg6CisgICAgICAg
ICogcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXlC
dWZmZXJWaWV3OjpwdXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpKU1ZhbHVl
OjpwdXRUb1ByaW1pdGl2ZSk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuY3BwOgorICAgICAg
ICAoSlNDOjpKU0NlbGw6OmRvUHV0UHJvcGVydHlTZWN1cml0eUNoZWNrKToKKyAgICAgICAgKiBy
dW50aW1lL0pTQ2VsbC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAg
ICAgIChKU0M6OkpTRnVuY3Rpb246OnB1dCk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9u
Lmg6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnB1
dCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlRW52
aXJvbm1lbnQuaDoKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Lmg6
CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
Ojpkb1B1dFByb3BlcnR5U2VjdXJpdHlDaGVjayk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpw
dXRJbmxpbmVTbG93KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnByb3RvdHlwZUNoYWluTWF5
SW50ZXJjZXB0U3RvcmVUbyk6CisgICAgICAgIChKU0M6OmRlZmluZVByb3BlcnR5T25SZWNlaXZl
clNsb3cpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVmaW5lUHJvcGVydHlP
blJlY2VpdmVyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dElubGluZUZh
c3RSZXBsYWNpbmdTdGF0aWNQcm9wZXJ0eUlmTmVlZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBy
dW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUluZGV4SW5s
aW5lKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRvUHV0UHJvcGVydHlTZWN1cml0eUNoZWNr
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Omhhc05vblJlaWZpZWRTdGF0aWNQcm9wZXJ0aWVz
KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6Y2FuUGVyZm9ybUZhc3RQdXRJbmxpbmVFeGNsdWRpbmdQcm90byk6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRJbmxpbmVGb3JKU09iamVjdCk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpwdXRJbmxpbmVGYXN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTUHJveHku
aDoKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZUluZm8uaDoKKyAgICAgICAgKEpTQzo6VHlwZUlu
Zm86Om92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCBjb25zdCk6CisgICAgICAgIChKU0M6OlR5
cGVJbmZvOjpvdmVycmlkZXNBbnlGb3JtT2ZHZXRPd25Qcm9wZXJ0eU5hbWVzIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6VHlwZUluZm86Omhhc1B1dFByb3BlcnR5U2VjdXJpdHlDaGVjayBjb25zdCk6
CisgICAgICAgIChKU0M6OlR5cGVJbmZvOjpoYXNTdGF0aWNQcm9wZXJ0eVRhYmxlIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6VHlwZUluZm86Om92ZXJyaWRlc1B1dCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogcnVudGltZS9Mb29rdXAuaDoKKyAgICAgICAgKEpTQzo6cHV0RW50
cnkpOgorICAgICAgICAoSlNDOjpsb29rdXBQdXQpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVy
dHlTbG90Lmg6CisgICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OlByb3h5T2JqZWN0OjpwdXQpOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlPYmplY3QuaDoK
KyAgICAgICAgKiBydW50aW1lL1B1dFByb3BlcnR5U2xvdC5oOgorICAgICAgICAoSlNDOjpQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OlB1dFByb3BlcnR5
U2xvdDo6Y29udGV4dCBjb25zdCk6CisgICAgICAgIChKU0M6OlB1dFByb3BlcnR5U2xvdDo6dHlw
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlB1dFByb3BlcnR5U2xvdDo6aXNJbml0aWFsaXphdGlv
biBjb25zdCk6CisgICAgICAgIChKU0M6OlB1dFByb3BlcnR5U2xvdDo6aXNUYWludGVkQnlPcGFx
dWVPYmplY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpQdXRQcm9wZXJ0eVNsb3Q6
OnNldElzVGFpbnRlZEJ5T3BhcXVlT2JqZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1l
L1JlZmxlY3RPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04pOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6
UmVnRXhwT2JqZWN0OjpwdXQpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6Cisg
ICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdP
YmplY3Q6OnB1dCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoKKyAgICAgICAg
KiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ1Byb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpTdHJpbmdQcm90b3R5cGU6OmNy
ZWF0ZSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuaDoKKyAgICAgICAgKiBy
dW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6dmFsaWRhdGVG
bGFncyk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjp0YWtlc1Nsb3dQYXRoSW5ERkdGb3JJbXB1cmVQcm9wZXJ0eSk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6aGFzTm9uUmVpZmllZFN0YXRpY1Byb3BlcnRpZXMgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorCiAyMDIxLTA1LTE4ICBBZHJp
YW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pTQ09u
bHldIE5vbiB1bmlmaWVkIGJ1aWxkIGZpeGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjhiNWExYTZhYWU3ZTY3
YTA2NGY2YTQyYjZkZjNlMjkxN2IzNGM4OC4uMTc2ZTNjNTRiNjcyMTc2NjA0NzA4MTgyMDNjMWJl
ODAyZGQ1MzM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDIxLTA1LTE4ICBLZWl0
aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIFRlbXBvcmFyaWx5
IHJldmVydCByMjc2NTkyIGFzIGl0IGJyZWFrcyBzb21lIG5hdGl2ZSBhcHBzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU5MTcKKworICAgICAgICBV
bnJldmlld2VkLCByZXZlcnQuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6ZG9QdXRQcm9wZXJ0eVNl
Y3VyaXR5Q2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnB1dCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU0xvY2F0aW9uOjpkb1B1dFByb3BlcnR5U2VjdXJpdHlDaGVjayk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNSZW1vdGVET01XaW5kb3c6OnB1dCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZVB1dCk6CisgICAgICAgIChHZW5lcmF0
ZUhlYWRlcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERvbWFp
blNlY3VyaXR5Lmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
ZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW5k
ZXhlZFNldHRlck5vSWRlbnRpZmllcjo6cHV0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5oOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhj
ZXB0aW9uOjpwdXQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6cHV0KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJ
ZGVudGlmaWVyLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
dGVyZmFjZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyOjpwdXQpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50
aWZpZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OnB1dCk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
clRocm93aW5nRXhjZXB0aW9uLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpwdXQp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcjo6cHV0KToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlclRocm93aW5n
RXhjZXB0aW9uOjpwdXQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmg6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6cHV0KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRp
Zmllci5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6OnB1dCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuaDoKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdl
dHRlckFuZFNldHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZFNldHRlcldp
dGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyOjpwdXQpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmg6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0
aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6cHV0KToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVC
dWlsdElucy5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzOjpw
dXQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zOjpwdXQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFBsdWdpbkludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RQbHVn
aW5JbnRlcmZhY2U6OnB1dCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFBsdWdpbkludGVyZmFjZS5oOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVudGlt
ZS5oOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5Lmg6CisgICAgICAgICogYnJpZGdl
L3J1bnRpbWVfb2JqZWN0Lmg6CisKIDIwMjEtMDUtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBNYWtlIHN1cmUgU1FMaXRlU3RhdGVtZW50IG9iamVjdHMgZ2V0
IGRlc3Ryb3llZCBiZWZvcmUgdGhlIGRhdGFiYXNlIGlzIGNsb3NlZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlZTYy
ZDhkMjViYzFmZDExNzU2ZGU5YTFjOThiNGY4Y2U4ZWE0NmY2Li42MjM3NTIzNmE2YzNmMDdkOThm
ZWNjYzEzYWM5Zjk2NDQ1MjRmYzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTA1
LTE4ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIFRl
bXBvcmFyaWx5IHJldmVydCByMjc2NTkyIGFzIGl0IGJyZWFrcyBzb21lIG5hdGl2ZSBhcHBzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU5MTcKKwor
ICAgICAgICBVbnJldmlld2VkLCByZXZlcnQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oOgorCiAyMDIxLTA1LTE4ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVhZE9ubHlTaGFyZWRSaW5nQnVmZmVyU3RvcmFn
ZTo6dXBkYXRlRnJhbWVCb3VuZHMoKSBzaG91bGQgdmFsaWRhdGUgYm91bmRzQnVmZmVyU2l6ZQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAppbmRleCBjZTRj
MDk3ZWM5NmM5YWZjMzBjN2VmODY5YjNiMjk1ZDQwMjY0YTljLi4zZDI4NWYzZDIyNTYyZWMwNjI5
Y2QzNjlhYTkxMDRhZjIxZWNiOTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q2FsbGJhY2tPYmplY3QuaApAQCAtMTI5LDcgKzEyOSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBQYXJl
bnQ+CiBjbGFzcyBKU0NhbGxiYWNrT2JqZWN0IGZpbmFsIDogcHVibGljIFBhcmVudCB7CiBwdWJs
aWM6CiAgICAgdXNpbmcgQmFzZSA9IFBhcmVudDsKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRP
d25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNHZXRPd25TcGVjaWFsUHJvcGVydHlOYW1lcyB8IE92
ZXJyaWRlc0dldENhbGxEYXRhIHwgT3ZlcnJpZGVzUHV0IHwgSW50ZXJjZXB0c0dldE93blByb3Bl
cnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEltcGxlbWVudHNIYXNJbnN0
YW5jZSB8IFByb2hpYml0c1Byb3BlcnR5Q2FjaGluZyB8IEdldE93blByb3BlcnR5U2xvdE1heUJl
V3JvbmdBYm91dERvbnRFbnVtOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5
U2xvdCB8IE92ZXJyaWRlc0dldE93blNwZWNpYWxQcm9wZXJ0eU5hbWVzIHwgT3ZlcnJpZGVzR2V0
Q2FsbERhdGEgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVu
Z3RoSXNOb3RaZXJvIHwgSW1wbGVtZW50c0hhc0luc3RhbmNlIHwgUHJvaGliaXRzUHJvcGVydHlD
YWNoaW5nIHwgR2V0T3duUHJvcGVydHlTbG90TWF5QmVXcm9uZ0Fib3V0RG9udEVudW07CiAgICAg
c3RhdGljX2Fzc2VydCghKFN0cnVjdHVyZUZsYWdzICYgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0
YW5jZSksICJ1c2luZyBjdXN0b21IYXNJbnN0YW5jZSIpOwogCiAgICAgfkpTQ2FsbGJhY2tPYmpl
Y3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09i
amVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2Jq
ZWN0RnVuY3Rpb25zLmgKaW5kZXggODIwMjg4MDUxNGIyMWViZjdkMmJlYmU5MjA0MjUyNzkzNGRk
MzVkNS4uNDQ4YWJlYmFjZTc4YjEzYTU3MDA3NWMyNThmMDRmOGYzZWI1ZGY4ZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25z
LmgKQEAgLTI3MSw5ICsyNzEsNiBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0
KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUAogICAgIEpTT2Jq
ZWN0UmVmIHRoaXNSZWYgPSB0b1JlZihqc0Nhc3Q8SlNPYmplY3QqPih0aGlzT2JqZWN0KSk7CiAg
ICAgUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgSlNWYWx1ZVJl
ZiB2YWx1ZVJlZiA9IHRvUmVmKGdsb2JhbE9iamVjdCwgdmFsdWUpOwotCi0gICAgaWYgKFVOTElL
RUxZKGlzVGhpc1ZhbHVlQWx0ZXJlZChzbG90LCB0aGlzT2JqZWN0KSkpCi0gICAgICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgUGFyZW50OjpwdXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSk7CiAgICAgCiAgICAgaWYgKFN0cmluZ0ltcGwq
IG5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCkpIHsKICAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpz
Q2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFz
cy0+cGFyZW50Q2xhc3MpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlclNjb3BlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJTY29wZS5oCmluZGV4IDJlOTA1MjAxNjIyMGYwOTYxZDk5NjBhMmM4YmY2NjMwMmQwZDdi
MDUuLjY0OGZmZjBhMGJlYzg5ZTE0ZmMwNjA1Y2M0ZTI1NDRlNGQyMTA4MDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaApAQCAtMzYsNyArMzYs
NyBAQCBjbGFzcyBKU1Njb3BlOwogY2xhc3MgRGVidWdnZXJTY29wZSBmaW5hbCA6IHB1YmxpYyBK
U05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9i
amVjdDsKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eU5hbWVzIHwgT3ZlcnJpZGVzUHV0OworICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJy
aWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5TmFtZXM7CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KICAg
ICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKaW5kZXggNmY5Mzg3NTAyYmFhZDBkODgxMjNlZGFm
Mzc2MDBlZGE0ZmRkN2JlZS4uYzYyYWM1NDcxOTFjOGE4MDJlZjQwM2RlN2M0MzA2ODZjNjQ5ZDQ4
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKQEAgLTY4LDYg
KzY4LDkgQEAgc3RydWN0IE1ldGhvZFRhYmxlIHsKICAgICB1c2luZyBHZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4RnVuY3Rpb25QdHIgPSBib29sICgqKShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0
KiwgdW5zaWduZWQsIFByb3BlcnR5U2xvdCYpOwogICAgIEdldE93blByb3BlcnR5U2xvdEJ5SW5k
ZXhGdW5jdGlvblB0ciBNRVRIT0RfVEFCTEVfRU5UUlkoZ2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eCk7CiAKKyAgICB1c2luZyBEb1B1dFByb3BlcnR5U2VjdXJpdHlDaGVja0Z1bmN0aW9uUHRyID0g
dm9pZCAoKikoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHV0UHJv
cGVydHlTbG90Jik7CisgICAgRG9QdXRQcm9wZXJ0eVNlY3VyaXR5Q2hlY2tGdW5jdGlvblB0ciBN
RVRIT0RfVEFCTEVfRU5UUlkoZG9QdXRQcm9wZXJ0eVNlY3VyaXR5Q2hlY2spOworCiAgICAgdXNp
bmcgVG9UaGlzRnVuY3Rpb25QdHIgPSBKU1ZhbHVlICgqKShKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCosIEVDTUFNb2RlKTsKICAgICBUb1RoaXNGdW5jdGlvblB0ciBNRVRIT0RfVEFCTEVfRU5UUlko
dG9UaGlzKTsKIApAQCAtMTUyLDYgKzE1NSw3IEBAIHN0cnVjdCBNZXRob2RUYWJsZSB7CiAgICAg
ICAgICZDbGFzc05hbWU6OmRlbGV0ZVByb3BlcnR5QnlJbmRleCwgXAogICAgICAgICAmQ2xhc3NO
YW1lOjpnZXRPd25Qcm9wZXJ0eVNsb3QsIFwKICAgICAgICAgJkNsYXNzTmFtZTo6Z2V0T3duUHJv
cGVydHlTbG90QnlJbmRleCwgXAorICAgICAgICAmQ2xhc3NOYW1lOjpkb1B1dFByb3BlcnR5U2Vj
dXJpdHlDaGVjaywgXAogICAgICAgICAmQ2xhc3NOYW1lOjp0b1RoaXMsIFwKICAgICAgICAgJkNs
YXNzTmFtZTo6Z2V0T3duUHJvcGVydHlOYW1lcywgXAogICAgICAgICAmQ2xhc3NOYW1lOjpnZXRP
d25TcGVjaWFsUHJvcGVydHlOYW1lcywgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DbG9uZWRBcmd1bWVudHMuaAppbmRleCBhNzlmOTM5NmE4MDIzNGY0ZGZkMmYzMmVkZGZj
Yjk4YzlhNmE2ZDc1Li5iM2E1ODBhZTE1YjgyZDY5MGI1MzY2NDA5YjVmMjQ1MGVhY2QyYmU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaApA
QCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIENsb25lZEFyZ3VtZW50cyBm
aW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNl
ID0gSlNOb25GaW5hbE9iamVjdDsKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0
eVNsb3QgfCBPdmVycmlkZXNHZXRPd25TcGVjaWFsUHJvcGVydHlOYW1lcyB8IE92ZXJyaWRlc1B1
dDsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6
U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNH
ZXRPd25TcGVjaWFsUHJvcGVydHlOYW1lczsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxU
eXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q3VzdG9tR2V0dGVyU2V0dGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0N1
c3RvbUdldHRlclNldHRlci5jcHAKaW5kZXggODlhNjQxZjgwMDAxNTZjNDFhNzBmNjM4MTMzNzYz
MmM0ZTM3YmIzYi4uZTA0Y2YyMmQwYjJkMjkyZjJhOWYwY2Y3NDVhMGUxNTI5NDNjOTkyYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0
ZXIuY3BwCkBAIC0yNiwxMCArMjYsMjggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJDdXN0b21HZXR0ZXJTZXR0ZXIuaCIKIAorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgi
CisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKwogbmFtZXNwYWNlIEpTQyB7CiAKIFNUQVRJ
Q19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShDdXN0b21HZXR0ZXJTZXR0ZXIpOwog
CiBjb25zdCBDbGFzc0luZm8gQ3VzdG9tR2V0dGVyU2V0dGVyOjpzX2luZm8gPSB7ICJDdXN0b21H
ZXR0ZXJTZXR0ZXIiLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEN1c3RvbUdldHRlclNldHRlcikgfTsKIAorVHJpU3RhdGUgY2FsbEN1c3RvbVNldHRlcihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDdXN0b21HZXR0ZXJTZXR0ZXI6OkN1c3RvbVNl
dHRlciBzZXR0ZXIsIGJvb2wgaXNBY2Nlc3NvciwgSlNPYmplY3QqIHNsb3RCYXNlLCBKU1ZhbHVl
IHRoaXNWYWx1ZSwgSlNWYWx1ZSB2YWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK3sK
KyAgICBpZiAoaXNBY2Nlc3NvcikgeworICAgICAgICBpZiAoIXNldHRlcikKKyAgICAgICAgICAg
IHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7CisgICAgICAgIHNldHRlcihnbG9iYWxPYmplY3QsIEpT
VmFsdWU6OmVuY29kZSh0aGlzVmFsdWUpLCBKU1ZhbHVlOjplbmNvZGUodmFsdWUpLCBwcm9wZXJ0
eU5hbWUpOworICAgICAgICAvLyBBbHdheXMgcmV0dXJuIHRydWUgaWYgdGhlcmUgaXMgYSBzZXR0
ZXIgYW5kIGl0IGlzIG9ic2VydmVkIGFzIGFuIGFjY2Vzc29yIHRvIHVzZXJzLgorICAgICAgICBy
ZXR1cm4gVHJpU3RhdGU6OlRydWU7CisgICAgfQorCisgICAgaWYgKCFzZXR0ZXIpCisgICAgICAg
IHJldHVybiBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKKyAgICByZXR1cm4gdHJpU3RhdGUoc2V0
dGVyKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZW5jb2RlKHNsb3RCYXNlKSwgSlNWYWx1ZTo6ZW5j
b2RlKHZhbHVlKSwgcHJvcGVydHlOYW1lKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuaApp
bmRleCA1MzVlMGUxY2E4YjVhNjY2YzI1NDcxODBkYzhkMjRlOTFkMjc5YWIyLi4zYzU3NjMwMDg1
OGE5NTA5ZTMzNGJjYTViMDU0MjE0NDlkZmRmMDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuaApAQCAtNzYsNCArNzYsNiBAQCBw
cml2YXRlOgogICAgIEN1c3RvbVNldHRlciBtX3NldHRlcjsKIH07CiAKK0pTX0VYUE9SVF9QUklW
QVRFIFRyaVN0YXRlIGNhbGxDdXN0b21TZXR0ZXIoSlNHbG9iYWxPYmplY3QqLCBDdXN0b21HZXR0
ZXJTZXR0ZXI6OkN1c3RvbVNldHRlciwgYm9vbCBpc0FjY2Vzc29yLCBKU09iamVjdCogc2xvdEJh
c2UsIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworCiB9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29u
c3RydWN0b3IuaAppbmRleCBjNTgxNjM1ZjIxZmJkZjY2OWEzMGRkYjI3ZDQ2ZjViZWJjMTk2ODU0
Li42ZTFiZWFhNjExZTc2N2RlYjMzZWI0YjFmMDY2Y2VkMWVmYjVmNTU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oCkBAIC0zMCw3ICsz
MCw2IEBAIGNsYXNzIEdldHRlclNldHRlcjsKIGNsYXNzIEVycm9yQ29uc3RydWN0b3IgZmluYWwg
OiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IElu
dGVybmFsRnVuY3Rpb247Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzUHV0OwogCiAgICAgc3RhdGlj
IEVycm9yQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBF
cnJvclByb3RvdHlwZSogZXJyb3JQcm90b3R5cGUsIEdldHRlclNldHRlciopCiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oCmluZGV4IDdkMmU2
NDMyNmE4MWRiNmM3NzBhNDYzZDhmOTYzNzY3M2RmYjI5M2IuLmM5YTg2YjI4OGJkNzQ4MWU3Y2Q2
NWI3NDdkYzc4NTg0N2NkNjU1NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9ySW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvckluc3RhbmNlLmgKQEAgLTMwLDcgKzMwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFz
cyBFcnJvckluc3RhbmNlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAg
IHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OwotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dl
dE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldE93blNwZWNpYWxQcm9wZXJ0eU5hbWVzIHwg
T3ZlcnJpZGVzUHV0OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8
IE92ZXJyaWRlc0dldE93blNwZWNpYWxQcm9wZXJ0eU5hbWVzOwogICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKIAogICAgIHN0YXRpYyB2b2lkIGRlc3Ry
b3koSlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJpY0FyZ3VtZW50cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2Vu
ZXJpY0FyZ3VtZW50cy5oCmluZGV4IDczMWNkYjcwMDNlZjEwNjhlMzliNDNhNTllOGRiNGMyZGM3
MjRhNjUuLjY4ZWFiNjA2YjBjZjE0Y2ExNjY3ZTgxOWVmOTVlZDA5NDdjOWMzZmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzLmgKQEAgLTM2
LDcgKzM2LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KIGNsYXNzIEdlbmVyaWNBcmd1bWVu
dHMgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU05v
bkZpbmFsT2JqZWN0IEJhc2U7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlT
bG90IHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlOYW1lcyB8IE92ZXJyaWRlc1B1dCB8IEludGVy
Y2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm87Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0T3du
UHJvcGVydHlOYW1lcyB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldo
ZW5MZW5ndGhJc05vdFplcm87CiAKIHByb3RlY3RlZDoKICAgICBHZW5lcmljQXJndW1lbnRzKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaAppbmRleCBiZmZmOWI1N2Vm
NzM1ZDk3YjBjZjI1NzFkM2Q0ZmFlZTg5NzdlYTA4Li44YzI4ZTM1ZmE0ZDZhYTlkYjEyZWUxZDJh
OTk5NDI1MjU3YThmMjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgKQEAgLTEzNCw4ICsxMzQsOCBAQCBib29s
IEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFBybwogCiAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21h
MjYyLyNzZWMtYXJndW1lbnRzLWV4b3RpYy1vYmplY3RzLXNldC1wLXYtcmVjZWl2ZXIKICAgICAv
LyBGYWxsIGJhY2sgdG8gdGhlIE9yZGluYXJ5U2V0IHdoZW4gdGhlIHJlY2VpdmVyIGlzIGFsdGVy
ZWQgZnJvbSB0aGUgdGhpc09iamVjdC4KLSAgICBpZiAoVU5MSUtFTFkoc2xvdC50aGlzVmFsdWUo
KSAhPSB0aGlzT2JqZWN0KSkKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNl
OjpwdXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgdmFsdWUsIHNsb3QpKTsKKyAg
ICBpZiAoVU5MSUtFTFkoaXNUaGlzVmFsdWVBbHRlcmVkKHNsb3QsIHRoaXNPYmplY3QpKSkKKyAg
ICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBvcmRpbmFyeVNldFNsb3coZ2xvYmFsT2Jq
ZWN0LCB0aGlzT2JqZWN0LCBpZGVudCwgdmFsdWUsIHNsb3QudGhpc1ZhbHVlKCksIHNsb3QuaXNT
dHJpY3RNb2RlKCkpKTsKICAgICAKICAgICBPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJz
ZUluZGV4KGlkZW50KTsKICAgICBpZiAoaW5kZXggJiYgdGhpc09iamVjdC0+aXNNYXBwZWRBcmd1
bWVudChpbmRleC52YWx1ZSgpKSkgewpAQCAtMTQzLDcgKzE0Myw5IEBAIGJvb2wgR2VuZXJpY0Fy
Z3VtZW50czxUeXBlPjo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUHJvCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQs
IHZhbHVlLCBzbG90KSk7CisgICAgYXV0byByZXN1bHQgPSBCYXNlOjpwdXQodGhpc09iamVjdCwg
Z2xvYmFsT2JqZWN0LCBpZGVudCwgdmFsdWUsIHNsb3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGZhbHNlKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHJlc3VsdCk7
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dldHRlclNldHRlci5oCmluZGV4IDdhNjdkOWVmOTg5ZTUzMmMyZjM2ZmQwYWUxMGM1
ZDkwN2Q3ZjYzZjQuLjU5MjFjZTliMjQwYzMyMDAyZWNhZjhjMGJjMjdjYWU2MGU1YWUxMmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCkBAIC01NCw3
ICs1NCw3IEBAIHByaXZhdGU6CiAKIHB1YmxpYzoKIAotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dl
dE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc1B1dCB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgU3RydWN0dXJlSXNJbW1v
cnRhbDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4K
ICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKaW5kZXggYzk4MDM3NGFhNmYwNDM4YzBlZDFl
YzY5NjI3MjIxNWNkNzU0MDljZC4uZTQyZjM5YzlmOGEyMTM0MTVlMDQ0YWE0ODM1MjAzMjMyMjI5
NmJlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTIz
OCw2ICsyMzgsMTAgQEAgYm9vbCBKU0FycmF5OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGUKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU0FycmF5KiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTQXJyYXkqPihjZWxsKTsKKworICAgIGlmIChVTkxJS0VMWShpc1RoaXNWYWx1ZUFsdGVy
ZWQoc2xvdCwgdGhpc09iamVjdCkpKQorICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IG9yZGluYXJ5U2V0U2xvdyhnbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNsb3QudGhpc1ZhbHVlKCksIHNsb3QuaXNTdHJpY3RNb2RlKCkpKTsKKwogICAgIHRo
aXNPYmplY3QtPmVuc3VyZVdyaXRhYmxlKHZtKTsKIAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0g
dm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKSB7CkBAIC0yNDcsOSArMjUxLDYgQEAgYm9vbCBKU0Fy
cmF5OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eU5hbWUgcHJvcGUKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCi0g
ICAgICAgIGlmIChVTkxJS0VMWShzbG90LnRoaXNWYWx1ZSgpICE9IHRoaXNPYmplY3QpKQotICAg
ICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU09iamVjdDo6ZGVmaW5lUHJvcGVy
dHlPblJlY2VpdmVyKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwot
CiAgICAgICAgIHVuc2lnbmVkIG5ld0xlbmd0aCA9IHZhbHVlLnRvVUludDMyKGdsb2JhbE9iamVj
dCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAg
ZG91YmxlIHZhbHVlQXNOdW1iZXIgPSB2YWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCmluZGV4IGI2YWUzMjIzMjYyMjdkYTFm
MjUyYWExMDZkMjhlNWUwYzk4MjA5MzQuLjhiNzQxZDMxOTg2MTlhYzhhMzFjYmQxYzZmYzBlZTE5
NmNmNzUzMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKQEAgLTQw
LDcgKzQwLDcgQEAgY2xhc3MgSlNBcnJheSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAog
cHVibGljOgogICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwotICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8
IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldE93blNwZWNpYWxQcm9w
ZXJ0eU5hbWVzIHwgT3ZlcnJpZGVzUHV0OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blBy
b3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldE93blNwZWNpYWxQcm9wZXJ0eU5hbWVzOwogCiAgICAg
c3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShDaGVja2VkPHNpemVfdD4gaW5saW5lQ2FwYWNp
dHkpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheUJ1ZmZlclZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eUJ1ZmZlclZpZXcuY3BwCmluZGV4IGIzZmM3NTE1NTY1M2ZiY2YxMjFjMDA1ODRmMTJkZDg2NmVk
ZWFiMTAuLmNjOTEwZmQ2M2NjZjllZTE5YWE1MTZhZmQ4NGQ2ODc5OGNkMWI4ZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAK
QEAgLTE3Miw2ICsxNzIsMTggQEAgdm9pZCBKU0FycmF5QnVmZmVyVmlldzo6dmlzaXRDaGlsZHJl
bkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQogCiBERUZJTkVfVklTSVRfQ0hJ
TERSRU4oSlNBcnJheUJ1ZmZlclZpZXcpOwogCitib29sIEpTQXJyYXlCdWZmZXJWaWV3OjpwdXQo
CisgICAgSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLAorICAgIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCkKK3sKKyAgICBKU0FycmF5QnVmZmVyVmlldyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Fy
cmF5QnVmZmVyVmlldyo+KGNlbGwpOworCisgICAgaWYgKFVOTElLRUxZKGlzVGhpc1ZhbHVlQWx0
ZXJlZChzbG90LCB0aGlzT2JqZWN0KSkpCisgICAgICAgIHJldHVybiBvcmRpbmFyeVNldFNsb3co
Z2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90LnRoaXNW
YWx1ZSgpLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsKKyAgICAKKyAgICByZXR1cm4gQmFzZTo6cHV0
KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Cit9
CisKIEFycmF5QnVmZmVyKiBKU0FycmF5QnVmZmVyVmlldzo6dW5zaGFyZWRCdWZmZXIoKQogewog
ICAgIEFycmF5QnVmZmVyKiByZXN1bHQgPSBwb3NzaWJseVNoYXJlZEJ1ZmZlcigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKaW5kZXgg
NGE4YTRjNjYxOTg0YjUyYWIyOTM0YTUxYmM4MjUyMWRjMWNjMjRmZS4uMGNjZjY0MjFiNDY3Zjlj
NjFjYWYxZjZiNDkxZmQ0Nzk5YjY3OWU2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCkBAIC0xNjksNiArMTY5LDggQEAgcHJvdGVj
dGVkOgogICAgIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTQXJyYXlCdWZmZXJWaWV3KFZNJiwg
Q29uc3RydWN0aW9uQ29udGV4dCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mKTsKKyAgICAKKyAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgSlNHbG9i
YWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCiAg
ICAgREVDTEFSRV9WSVNJVF9DSElMRFJFTjsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKaW5kZXggNjIyMGQxZGUzMzY5YWFkOGYxZDZkOTk4NzRh
MWJlMTc2YjBkODkwMS4uYzc1OTRhODQ5MmNlNjc0YzI0NGYxYWUyYTNhYzE0NzE1NTgzMTI1NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKQEAgLTIx
Miw3ICsyMTIsNyBAQCBKU09iamVjdCogSlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQog
Ci0vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9yZGluYXJ5c2V0CisvLyBFQ01BIDgu
Ny4yCiBib29sIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0y
MjEsMTQgKzIyMSw2OSBAQCBib29sIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eQogICAgIGlmIChPcHRpb25h
bDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCiAgICAgICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcHV0VG9QcmltaXRpdmVCeUluZGV4KGdsb2JhbE9iamVj
dCwgaW5kZXgudmFsdWUoKSwgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpKTsKIAotICAgIGlm
IChpc1N0cmluZygpICYmIHByb3BlcnR5TmFtZS51aWQoKSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5s
ZW5ndGguaW1wbCgpKQotICAgICAgICByZXR1cm4gdHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsIHNsb3QuaXNTdHJpY3RNb2RlKCksIFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKICAg
ICAvLyBDaGVjayBpZiB0aGVyZSBhcmUgYW55IHNldHRlcnMgb3IgZ2V0dGVycyBpbiB0aGUgcHJv
dG90eXBlIGNoYWluCiAgICAgSlNPYmplY3QqIG9iaiA9IHN5bnRoZXNpemVQcm90b3R5cGUoZ2xv
YmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0g
IW9iaik7CiAgICAgaWYgKFVOTElLRUxZKCFvYmopKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBvYmotPm1ldGhvZFRhYmxlKHZtKS0+cHV0KG9i
aiwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSk7CisgICAgSlNWYWx1
ZSBwcm90b3R5cGU7CisgICAgaWYgKHByb3BlcnR5TmFtZSAhPSB2bS5wcm9wZXJ0eU5hbWVzLT51
bmRlcnNjb3JlUHJvdG8pIHsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gb2JqLT5zdHJ1Y3R1cmUodm0pOworICAgICAgICAgICAgaWYg
KHN0cnVjdHVyZS0+aGFzUmVhZE9ubHlPckdldHRlclNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQ
cm90bygpIHx8IHN0cnVjdHVyZS0+dHlwZUluZm8oKS5oYXNQdXRQcm9wZXJ0eVNlY3VyaXR5Q2hl
Y2soKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmIChvYmotPnR5cGUo
KSA9PSBQcm94eU9iamVjdFR5cGUpIHsKKyAgICAgICAgICAgICAgICBhdXRvKiBwcm94eSA9IGpz
Q2FzdDxQcm94eU9iamVjdCo+KG9iaik7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBwcm94eS0+UHJveHlPYmplY3Q6OnB1dChwcm94eSwgZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBw
cm90b3R5cGUgPSBvYmotPmdldFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKworICAgICAgICAgICAgaWYg
KHByb3RvdHlwZS5pc051bGwoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsIHNsb3QuaXNTdHJpY3RNb2RlKCksIFJlYWRvbmx5UHJvcGVydHlX
cml0ZUVycm9yKTsKKyAgICAgICAgICAgIG9iaiA9IGFzT2JqZWN0KHByb3RvdHlwZSk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBmb3IgKDsgOyBvYmogPSBhc09iamVjdChwcm90b3R5cGUpKSB7
CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gb2JqLT5zdHJ1Y3R1cmUodm0pOworICAg
ICAgICBpZiAoVU5MSUtFTFkoc3RydWN0dXJlLT50eXBlSW5mbygpLmhhc1B1dFByb3BlcnR5U2Vj
dXJpdHlDaGVjaygpKSkgeworICAgICAgICAgICAgb2JqLT5tZXRob2RUYWJsZSh2bSktPmRvUHV0
UHJvcGVydHlTZWN1cml0eUNoZWNrKG9iaiwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOworICAg
ICAgICB9CisgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CisgICAgICAgIFByb3BlcnR5T2Zm
c2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMp
OworICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpIHsKKyAgICAgICAgICAgIGlm
IChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KQorICAgICAgICAgICAg
ICAgIHJldHVybiB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgc2xvdC5pc1N0cmljdE1v
ZGUoKSwgUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworCisgICAgICAgICAgICBKU1ZhbHVl
IGdzID0gb2JqLT5nZXREaXJlY3Qob2Zmc2V0KTsKKyAgICAgICAgICAgIGlmIChncy5pc0dldHRl
clNldHRlcigpKQorICAgICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwganND
YXN0PEdldHRlclNldHRlcio+KGdzKS0+Y2FsbFNldHRlcihnbG9iYWxPYmplY3QsICp0aGlzLCB2
YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSkpOworCisgICAgICAgICAgICBpZiAoZ3MuaXNDdXN0
b21HZXR0ZXJTZXR0ZXIoKSkgeworICAgICAgICAgICAgICAgIGF1dG8gc2V0dGVyID0ganNDYXN0
PEN1c3RvbUdldHRlclNldHRlcio+KGdzLmFzQ2VsbCgpKS0+c2V0dGVyKCk7CisgICAgICAgICAg
ICAgICAgYm9vbCBpc0FjY2Vzc29yID0gYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvcjsKKyAgICAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGNhbGxDdXN0b21T
ZXR0ZXIoZ2xvYmFsT2JqZWN0LCBzZXR0ZXIsIGlzQWNjZXNzb3IsIG9iaiwgc2xvdC50aGlzVmFs
dWUoKSwgdmFsdWUsIHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAh
PSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCByZXN1bHQgPT0gVHJpU3RhdGU6OlRydWUpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAvLyBJZiB0aGVyZSdzIGFuIGV4aXN0aW5nIHByb3BlcnR5IG9uIHRo
ZSBvYmplY3Qgb3Igb25lIG9mIGl0cyAKKyAgICAgICAgICAgIC8vIHByb3RvdHlwZXMgaXQgc2hv
dWxkIGJlIHJlcGxhY2VkLCBzbyBicmVhayBoZXJlLgorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKG9iai0+dHlwZSgpID09IFByb3h5T2JqZWN0VHlwZSkgeworICAg
ICAgICAgICAgYXV0byogcHJveHkgPSBqc0Nhc3Q8UHJveHlPYmplY3QqPihvYmopOworICAgICAg
ICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBwcm94eS0+UHJveHlPYmplY3Q6OnB1dChw
cm94eSwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSk7CisgICAgICAg
IH0KKyAgICAgICAgcHJvdG90eXBlID0gb2JqLT5nZXRQcm90b3R5cGUodm0sIGdsb2JhbE9iamVj
dCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICAgICAg
aWYgKHByb3RvdHlwZS5pc051bGwoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAK
KyAgICByZXR1cm4gdHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHNsb3QuaXNTdHJpY3RN
b2RlKCksIFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKIH0KIAogYm9vbCBKU1ZhbHVlOjpw
dXRUb1ByaW1pdGl2ZUJ5SW5kZXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKaW5kZXggZjIyODZlMTBlMzMwZjlhOTFh
NzI0OTkzM2IzYjQ3YzlkZmY5NDAwMi4uOWViNGVmYjVhYzRmNjAyZjI4MzBmZTFmZmUxMDk4M2Vj
OWY1ZTk1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCkBAIC0y
MDAsNiArMjAwLDExIEBAIGJvb2wgSlNDZWxsOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpT
T2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCwgUHJvCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCit2b2lkIEpTQ2VsbDo6ZG9QdXRQcm9wZXJ0eVNlY3VyaXR5Q2hlY2soSlNPYmplY3Qq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHV0UHJvcGVydHlTbG90JikKK3sKKyAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCiB2b2lkIEpTQ2VsbDo6Z2V0T3du
UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJy
YXkmLCBEb250RW51bVByb3BlcnRpZXNNb2RlKQogewogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmluZGV4IDliZDE5
NzRlZDJkYjRkMThkOTE1YTM1NDdlMzc1NmUwNzFlNjM3MzEuLjc4Y2JiZjBjZGQ2YWVlNDFhNjg1
YTRiN2RkZWFlY2MyMjU4NWNmMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bC5oCkBAIC0yNTcsNiArMjU3LDcgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBib29sIGRlZmlu
ZU93blByb3BlcnR5KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIGNv
bnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4KEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZv
aWQgZG9QdXRQcm9wZXJ0eVNlY3VyaXR5Q2hlY2soSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCos
IFByb3BlcnR5TmFtZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggODJkMzc2YTJkYzBkZThjOTkxOGU3YWRkZDVlZDI1
MDYyYjM5NGI5Ni4uZmE1YWVjZDE3YzFjZWZjOWQ2Mjk4ZGQ3MjI4MzllY2Y0NWVkZjMwYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTUyOSw2
ICs1MjksMTAgQEAgYm9vbCBKU0Z1bmN0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHIKICAgICAgICAgICAgIHJhcmVEYXRh
LT5zZXRIYXNNb2RpZmllZE5hbWVGb3JOb25Ib3N0RnVuY3Rpb24oKTsKICAgICB9CiAKKyAgICBp
ZiAoVU5MSUtFTFkoaXNUaGlzVmFsdWVBbHRlcmVkKHNsb3QsIHRoaXNPYmplY3QpKSkKKyAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBvcmRpbmFyeVNldFNsb3coZ2xvYmFsT2JqZWN0
LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90LnRoaXNWYWx1ZSgpLCBzbG90
LmlzU3RyaWN0TW9kZSgpKSk7CisKKwogICAgIGlmICh0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0
aW5GdW5jdGlvbigpKSB7CiAgICAgICAgIFByb3BlcnR5U3RhdHVzIHByb3BlcnR5VHlwZSA9IHRo
aXNPYmplY3QtPnJlaWZ5TGF6eVByb3BlcnR5Rm9ySG9zdE9yQnVpbHRpbklmTmVlZGVkKHZtLCBn
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
aAppbmRleCAwZWM4MjAxYTRlNjQwNmUzNWQ5N2E4MGJiNzhjNjhlM2ZmMzIwNjVhLi5iY2MyZTgx
MGZjNmU5NjY5Mzg1ZDE4OWU1MTUxNzliMmViN2FhNGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICB9
CiAgICAgCiAgICAgdHlwZWRlZiBKU0NhbGxlZSBCYXNlOwotICAgIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRl
c0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldE93blNwZWNpYWxQcm9wZXJ0eU5hbWVz
IHwgT3ZlcnJpZGVzR2V0Q2FsbERhdGEgfCBPdmVycmlkZXNQdXQ7CisgICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3Zl
cnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0T3duU3BlY2lhbFByb3BlcnR5
TmFtZXMgfCBPdmVycmlkZXNHZXRDYWxsRGF0YTsKIAogICAgIHN0YXRpYyBzaXplX3QgYWxsb2Nh
dGlvblNpemUoQ2hlY2tlZDxzaXplX3Q+IGlubGluZUNhcGFjaXR5KQogICAgIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
dy5oCmluZGV4IDI3MDFiNGI1NTQyYjA5ZTQzNGI4YTBkZTJhYTZmYzc1NmQ3NTMyMzcuLmRiZTIx
MWQ5NjdlYjgzNDdlNmU0NmQ0ODJjNDNmODFlMmE0YzU2NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaApAQCAt
OTksNyArOTksNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgRWxlbWVudFR5cGUgPSB0eXBlbmFtZSBB
ZGFwdG9yOjpUeXBlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgVHlwZWRBcnJheUNvbnRlbnRUeXBl
IGNvbnRlbnRUeXBlID0gQWRhcHRvcjo6Y29udGVudFR5cGU7CiAKLSAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eU5hbWVzIHwg
T3ZlcnJpZGVzUHV0IHwgSW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hl
bkxlbmd0aElzTm90WmVybzsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNs
b3QgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eU5hbWVzIHwgSW50ZXJjZXB0c0dldE93blByb3Bl
cnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybzsKIAogICAgIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
TGV4aWNhbEVudmlyb25tZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbExleGljYWxFbnZpcm9ubWVudC5oCmluZGV4IDNlNDRjM2I1MDNjNDFlM2EyZDRiOTZkZTEx
NDBiYWI2NGVjZTk0NGYuLjhiZWI5ZWQzZmJmZGUwOTRiY2Q3ZjA1MzU5ZTc0NmFkNmZiZTM3ZjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsTGV4aWNh
bEVudmlyb25tZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBKU0dsb2JhbExl
eGljYWxFbnZpcm9ubWVudCBmaW5hbCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0
IHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdDsK
IAotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpT
dHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc1B1
dDsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6
U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KICAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAxYzM3NTMyNmI5ZTQ1NDcxNDM4
NmNjMTY4YTMyMGEyMGI4YzkxZjE5Li45ZDI4MmYyMjE1YzA2NGViYTI0ODk1ZWJkNTJjYmM4YzJl
MDRhMTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCkBAIC0xNTc2LDE1ICsxNTc2LDggQEAgYm9vbCBKU0dsb2JhbE9iamVjdDo6cHV0
KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW0K
ICAgICBKU0dsb2JhbE9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+
KGNlbGwpOwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1
ZSkgPT0gSGVhcDo6aGVhcCh0aGlzT2JqZWN0KSk7CiAKLSAgICBpZiAoVU5MSUtFTFkoaXNUaGlz
VmFsdWVBbHRlcmVkKHNsb3QsIHRoaXNPYmplY3QpKSkgewotICAgICAgICBTeW1ib2xUYWJsZUVu
dHJ5OjpGYXN0IGVudHJ5ID0gdGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+Z2V0KHByb3BlcnR5
TmFtZS51aWQoKSk7Ci0gICAgICAgIGlmICghZW50cnkuaXNOdWxsKCkpIHsKLSAgICAgICAgICAg
IGlmIChlbnRyeS5pc1JlYWRPbmx5KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCBzbG90LmlzU3RyaWN0TW9kZSgpLCBSZWFkb25seVByb3Bl
cnR5V3JpdGVFcnJvcik7Ci0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
T2JqZWN0OjpkZWZpbmVQcm9wZXJ0eU9uUmVjZWl2ZXIoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBzbG90KSk7Ci0gICAgICAgIH0KLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBCYXNlOjpwdXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzbG90KSk7Ci0gICAgfQorICAgIGlmIChVTkxJS0VMWShpc1RoaXNWYWx1ZUFsdGVy
ZWQoc2xvdCwgdGhpc09iamVjdCkpKQorICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IG9yZGluYXJ5U2V0U2xvdyhnbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNsb3QudGhpc1ZhbHVlKCksIHNsb3QuaXNTdHJpY3RNb2RlKCkpKTsKIAogICAgIGJv
b2wgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yID0gc2xvdC5pc1N0cmljdE1vZGUoKTsKICAgICBi
b29sIGlnbm9yZVJlYWRPbmx5RXJyb3JzID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBlMmUzNWVkZTg5Y2Y0NGY0M2QwZGVj
MTBjYjhlOTY0ZTE0NDE0ZTI1Li42NDhhMzBiYjNlMjc4MzMwMDU0YWIxYjRkMTAyOThhN2Q0M2Nj
ZDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKQEAgLTU5Niw3ICs1OTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogcHVibGljOgogICAgIHVz
aW5nIEJhc2UgPSBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0OwotICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0
YXRpY1Byb3BlcnR5VGFibGUgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlk
ZXNQdXQgfCBJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdDsKKyAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBI
YXNTdGF0aWNQcm9wZXJ0eVRhYmxlIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSXNJ
bW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3Q7CiAKICAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5
cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAppbmRleCAyZmU3MmJiY2EwNWVkZGQ1N2Vh
MWM1OWNjNDYwZDJiMGM5NTQ1YzlkLi45MDEyM2EyZThlNDI5ZDZiZmFiZjk2NWU3ZThmYWIyMzI4
ZTNmNTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGlj
YWxFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4
aWNhbEVudmlyb25tZW50LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIH0KIAogICAg
IHVzaW5nIEJhc2UgPSBKU1N5bWJvbFRhYmxlT2JqZWN0OwotICAgIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRl
c0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldE93blNwZWNpYWxQcm9wZXJ0eU5hbWVz
IHwgT3ZlcnJpZGVzUHV0OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xv
dCB8IE92ZXJyaWRlc0dldE93blNwZWNpYWxQcm9wZXJ0eU5hbWVzOwogCiAgICAgV3JpdGVCYXJy
aWVyQmFzZTxVbmtub3duPiogdmFyaWFibGVzKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmgKaW5kZXggZGUwNGU2Mjll
M2E2MTAyYzllNjUwNmQxMGE0NDBlMjhhYzk2NzRlMC4uNmQ3MTdiZjhkNmFlZTViNGQwZjgxYmFi
NTJjMjQyZTFkOGVlZjdkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBKU01vZHVs
ZUVudmlyb25tZW50IGZpbmFsIDogcHVibGljIEpTTGV4aWNhbEVudmlyb25tZW50IHsKICAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogcHVibGljOgogICAgIHVzaW5nIEJh
c2UgPSBKU0xleGljYWxFbnZpcm9ubWVudDsKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Q
cm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNHZXRPd25TcGVjaWFsUHJvcGVydHlOYW1lcyB8IE92ZXJy
aWRlc1B1dDsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
QmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVy
cmlkZXNHZXRPd25TcGVjaWFsUHJvcGVydHlOYW1lczsKIAogICAgIHN0YXRpYyBKU01vZHVsZUVu
dmlyb25tZW50KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1Njb3BlKiBjdXJyZW50U2NvcGUsIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSwgSlNWYWx1ZSBp
bml0aWFsVmFsdWUsIEFic3RyYWN0TW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQpCiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3Bh
Y2VPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0LmgKaW5kZXggOGZlZTg2MDE1ZTM1MDkzMWQyMzcxOGQ4NzVkMmE3NzBlZTY5OGQ3
YS4uZDkzZjlhNTMwMmZkMDM0ZjY1ZjdmMjZiODFjYzgzMTk1ZjljMGY1ZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVj
dC5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSlNNb2R1bGVOYW1l
c3BhY2VPYmplY3QgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAg
ICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlOYW1lcyB8IE92ZXJy
aWRlc1B1dCB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5n
dGhJc05vdFplcm8gfCBHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5j
ZSB8IElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0OworICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJy
aWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5TmFtZXMgfCBJ
bnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJv
IHwgR2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmVGb3JQcm9wZXJ0eUFic2VuY2UgfCBJc0ltbXV0
YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdDsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBu
ZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IGUzZDVk
ZTM0NWZhOWIxZjMxNzg0ZWQyNTkxMjgxMDRlNzlkMmRjNzAuLmRmYjgxOWNjODllZDA3NDI4Zjdi
ZTk5YTU3YzFkMzhiZmZkN2RiZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAKQEAgLTY0Niw2ICs2NDYsMTAgQEAgYm9vbCBKU09iamVjdDo6Z2V0T3duUHJv
cGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QK
IHsKICAgICByZXR1cm4gZ2V0T3duUHJvcGVydHlTbG90SW1wbChvYmplY3QsIGdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KKwordm9pZCBKU09iamVjdDo6ZG9QdXRQcm9wZXJ0
eVNlY3VyaXR5Q2hlY2soSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwg
UHV0UHJvcGVydHlTbG90JikKK3sKK30KICNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCiAvLyBo
dHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vcmRpbmFyeXNldApAQCAtNzU0LDcg
Kzc1OCw3IEBAIGJvb2wgb3JkaW5hcnlTZXRTbG93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTT2JqZWN0KiBvYmplY3QsIFByb3BlcnR5TmFtCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LS8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb3JkaW5hcnlzZXQKKy8vIEVDTUEgOC42
LjIuMgogYm9vbCBKU09iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIHJldHVybiBwdXRJbmxpbmVGb3JKU09iamVjdChj
ZWxsLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwpAQCAtNzYyLDk1
ICs3NjYsNjYgQEAgYm9vbCBKU09iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3AKIAogYm9vbCBKU09iamVjdDo6cHV0
SW5saW5lU2xvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAg
QVNTRVJUKCFwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpOworICAgIEFTU0VSVCghaXNUaGlzVmFs
dWVBbHRlcmVkKHNsb3QsIHRoaXMpKTsKIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBpZiAo
VU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAgdGhyb3dTdGFj
a092ZXJmbG93RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0KICAgICBKU09iamVjdCogb2JqID0gdGhpczsKICAgICBmb3IgKDs7KSB7CiAg
ICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gb2JqLT5zdHJ1Y3R1cmUodm0pOwotICAgICAg
ICBpZiAob2JqICE9IHRoaXMgJiYgc3RydWN0dXJlLT50eXBlSW5mbygpLm92ZXJyaWRlc1B1dCgp
KQotICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBvYmotPm1ldGhvZFRhYmxl
KHZtKS0+cHV0KG9iaiwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSk7
Ci0KLSAgICAgICAgYm9vbCBoYXNQcm9wZXJ0eSA9IGZhbHNlOworICAgICAgICBpZiAoVU5MSUtF
TFkoc3RydWN0dXJlLT50eXBlSW5mbygpLmhhc1B1dFByb3BlcnR5U2VjdXJpdHlDaGVjaygpKSkg
eworICAgICAgICAgICAgb2JqLT5tZXRob2RUYWJsZSh2bSktPmRvUHV0UHJvcGVydHlTZWN1cml0
eUNoZWNrKG9iaiwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOworICAgICAgICB9CiAgICAgICAg
IHVuc2lnbmVkIGF0dHJpYnV0ZXM7Ci0gICAgICAgIFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jIGN1c3RvbVNldHRlciA9IG51bGxwdHI7CiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCA9IHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOwogICAgICAg
ICBpZiAoaXNWYWxpZE9mZnNldChvZmZzZXQpKSB7Ci0gICAgICAgICAgICBoYXNQcm9wZXJ0eSA9
IHRydWU7Ci0gICAgICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3Nvck9yVmFsdWUpCi0gICAgICAgICAgICAgICAgY3VzdG9tU2V0dGVyID0ganND
YXN0PEN1c3RvbUdldHRlclNldHRlcio+KG9iai0+Z2V0RGlyZWN0KG9mZnNldCkpLT5zZXR0ZXIo
KTsKLSAgICAgICAgfSBlbHNlIGlmIChzdHJ1Y3R1cmUtPmhhc05vblJlaWZpZWRTdGF0aWNQcm9w
ZXJ0aWVzKCkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIGVudHJ5ID0gc3RydWN0dXJlLT5maW5k
UHJvcGVydHlIYXNoRW50cnkocHJvcGVydHlOYW1lKSkgewotICAgICAgICAgICAgICAgIGhhc1By
b3BlcnR5ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzID0gZW50cnktPnZhbHVl
LT5hdHRyaWJ1dGVzKCk7Ci0KLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMg
YWZ0ZXIgd3JpdGFibGUgYWNjZXNzb3JzIGFyZSBpbnRyb2R1Y2VkIHRvIHN0YXRpYyBoYXNoIHRh
Ymxlcy4KLSAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRl
OjpBY2Nlc3NvcikKLSAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcyB8PSBQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHk7Ci0gICAgICAgICAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlz
IGFmdGVyIHdlIHN0b3AgZGVmYXVsdGluZyB0byBDdXN0b21WYWx1ZSBpbiBzdGF0aWMgaGFzaCB0
YWJsZXMuCi0gICAgICAgICAgICAgICAgaWYgKCEoYXR0cmlidXRlcyAmIChQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QnVpbHRpbk9yRnVuY3Rp
b25PckFjY2Vzc29yT3JMYXp5UHJvcGVydHlPckNvbnN0YW50KSkpCi0gICAgICAgICAgICAgICAg
ICAgIGF0dHJpYnV0ZXMgfD0gUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbVZhbHVlOwotCi0gICAg
ICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3JPclZhbHVlKQotICAgICAgICAgICAgICAgICAgICBjdXN0b21TZXR0ZXIgPSBlbnRyeS0+
dmFsdWUtPnByb3BlcnR5UHV0dGVyKCk7CisgICAgICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkgeworICAgICAgICAgICAgICAgIEFTU0VSVCh0aGlz
LT5wcm90b3R5cGVDaGFpbk1heUludGVyY2VwdFN0b3JlVG8odm0sIHByb3BlcnR5TmFtZSkgfHwg
b2JqID09IHRoaXMpOworICAgICAgICAgICAgICAgIHJldHVybiB0eXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgc2xvdC5pc1N0cmljdE1vZGUoKSwgUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJy
b3IpOwogICAgICAgICAgICAgfQotICAgICAgICB9CiAKLSAgICAgICAgaWYgKGhhc1Byb3BlcnR5
KSB7Ci0gICAgICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsIHNsb3QuaXNTdHJpY3RNb2RlKCksIFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKLSAg
ICAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKSB7
Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGlzVmFsaWRPZmZzZXQob2Zmc2V0KSk7CisgICAgICAg
ICAgICBKU1ZhbHVlIGdzID0gb2JqLT5nZXREaXJlY3Qob2Zmc2V0KTsKKyAgICAgICAgICAgIGlm
IChncy5pc0dldHRlclNldHRlcigpKSB7CiAgICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBt
YWtlIHN1cmUgdGhhdCB3ZSBkZWNpZGUgdG8gY2FjaGUgdGhpcyBwcm9wZXJ0eSBiZWZvcmUgd2Ug
cG90ZW50aWFsbHkgZXhlY3V0ZSBhcmliaXRyYXJ5IEpTLgogICAgICAgICAgICAgICAgIGlmICgh
dGhpcy0+c3RydWN0dXJlKHZtKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkKICAgICAgICAg
ICAgICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVTZXR0ZXIob2JqLCBvZmZzZXQpOwogICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwganNDYXN0PEdldHRlclNldHRlcio+
KG9iai0+Z2V0RGlyZWN0KG9mZnNldCkpLT5jYWxsU2V0dGVyKGdsb2JhbE9iamVjdCwgc2xvdC50
aGlzVmFsdWUoKSwgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpKTsKICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yKSB7Ci0gICAgICAgICAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIGFmdGVyIFdl
YklETCBnZW5lcmF0b3IgaXMgZml4ZWQgdG8gc2V0IFJlYWRPbmx5IGZvciBbUnVudGltZUNvbmRp
dGlvbmFsbHlSZWFkV3JpdGVdIGF0dHJpYnV0ZXMuCi0gICAgICAgICAgICAgICAgaWYgKCFjdXN0
b21TZXR0ZXIpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAg
ICAgICBBU1NFUlQoY3VzdG9tU2V0dGVyKTsKKyAgICAgICAgICAgIGlmIChncy5pc0N1c3RvbUdl
dHRlclNldHRlcigpKSB7CisgICAgICAgICAgICAgICAgYm9vbCBpc0FjY2Vzc29yID0gYXR0cmli
dXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvcjsKKyAgICAgICAgICAgICAg
ICBhdXRvIHNldHRlciA9IGpzQ2FzdDxDdXN0b21HZXR0ZXJTZXR0ZXIqPihncy5hc0NlbGwoKSkt
PnNldHRlcigpOwogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgb25seSBiZSBj
YWNoaW5nIHRoZXNlIGlmIHdlJ3JlIG5vdCBhbiB1bmNhY2hlYWJsZSBkaWN0aW9uYXJ5OgogICAg
ICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTUzNDcKLSAgICAgICAgICAgICAgICBzbG90LnNldEN1c3RvbUFjY2Vzc29yKG9iaiwgY3VzdG9t
U2V0dGVyKTsKLSAgICAgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICAg
ICAgY3VzdG9tU2V0dGVyKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZW5jb2RlKHNsb3QudGhpc1Zh
bHVlKCkpLCBKU1ZhbHVlOjplbmNvZGUodmFsdWUpLCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGF0dHJp
YnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tVmFsdWUpIHsKLSAgICAgICAgICAgICAg
ICAvLyBGSVhNRTogT25jZSBsZWdhY3kgUmVnRXhwIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZCwg
dGhlcmUgd291bGQgYmUgbm8gdXNlIGNhc2UgZm9yIGNhbGxpbmcgQ3VzdG9tVmFsdWUgc2V0dGVy
IGlmIHJlY2VpdmVyIGlzIGFsdGVyZWQuCi0gICAgICAgICAgICAgICAgaWYgKGN1c3RvbVNldHRl
ciAmJiAhKGlzVGhpc1ZhbHVlQWx0ZXJlZChzbG90LCBvYmopICYmIHNsb3QuY29udGV4dCgpID09
IFB1dFByb3BlcnR5U2xvdDo6UmVmbGVjdFNldCkpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8g
RklYTUU6IFdlIHNob3VsZCBvbmx5IGJlIGNhY2hpbmcgdGhlc2UgaWYgd2UncmUgbm90IGFuIHVu
Y2FjaGVhYmxlIGRpY3Rpb25hcnk6Ci0gICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUzNDcKLSAgICAgICAgICAgICAgICAgICAg
c2xvdC5zZXRDdXN0b21WYWx1ZShvYmosIGN1c3RvbVNldHRlcik7Ci0gICAgICAgICAgICAgICAg
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY3VzdG9tU2V0dGVyKGdsb2JhbE9iamVjdCwg
SlNWYWx1ZTo6ZW5jb2RlKG9iaiksIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSksIHByb3BlcnR5TmFt
ZSkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoIWlzVGhpc1ZhbHVl
QWx0ZXJlZChzbG90LCBvYmopKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEF2b2lkIFB1dE1v
ZGVQdXQgYmVjYXVzZSBpdCBmYWlscyBmb3Igbm9uLWV4dGVuc2libGUgc3RydWN0dXJlcy4KLSAg
ICAgICAgICAgICAgICAgICAgb2JqLT5wdXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwgdmFsdWUs
IGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoYXR0cmlidXRlcykgJiB+UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbVZhbHVlLCBzbG90KTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGF0dHJpYnV0
ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QnVpbHRpbk9yRnVuY3Rpb25PckxhenlQcm9wZXJ0eSkg
ewotICAgICAgICAgICAgICAgIGlmICghaXNUaGlzVmFsdWVBbHRlcmVkKHNsb3QsIG9iaikpIHsK
LSAgICAgICAgICAgICAgICAgICAgLy8gQXZvaWQgUHV0TW9kZVB1dCBiZWNhdXNlIGl0IGZhaWxz
IGZvciBub24tZXh0ZW5zaWJsZSBzdHJ1Y3R1cmVzLgotICAgICAgICAgICAgICAgICAgICBvYmot
PnB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlc0ZvclN0cnVjdHVy
ZShhdHRyaWJ1dGVzKSwgc2xvdCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gbWFrZSBz
dXJlIHRoYXQgd2UgZGVjaWRlIHRvIGNhY2hlIHRoaXMgcHJvcGVydHkgYmVmb3JlIHdlIHBvdGVu
dGlhbGx5IGV4ZWN1dGUgYXJpYml0cmFyeSBKUy4KKyAgICAgICAgICAgICAgICBpZiAoaXNBY2Nl
c3NvcikKKyAgICAgICAgICAgICAgICAgICAgc2xvdC5zZXRDdXN0b21BY2Nlc3NvcihvYmosIHNl
dHRlcik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBzbG90LnNl
dEN1c3RvbVZhbHVlKG9iaiwgc2V0dGVyKTsKKworICAgICAgICAgICAgICAgIGF1dG8gcmVzdWx0
ID0gY2FsbEN1c3RvbVNldHRlcihnbG9iYWxPYmplY3QsIHNldHRlciwgaXNBY2Nlc3Nvciwgb2Jq
LCBzbG90LnRoaXNWYWx1ZSgpLCB2YWx1ZSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgaWYg
KHJlc3VsdCAhPSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdCA9PSBUcmlTdGF0ZTo6VHJ1ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIC8vIElmIHRoZXJlJ3MgYW4gZXhpc3Rpbmcgd3JpdGFibGUgcHJvcGVydHkgb24gdGhlIGJh
c2Ugb2JqZWN0LCBvciBvbiBvbmUgb2YgaXRzIAotICAgICAgICAgICAgLy8gcHJvdG90eXBlcywg
d2Ugc2hvdWxkIGF0dGVtcHQgdG8gc3RvcmUgdGhlIHByb3BlcnR5IG9uIHRoZSByZWNlaXZlci4K
KyAgICAgICAgICAgIEFTU0VSVCghKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNj
ZXNzb3IpKTsKKworICAgICAgICAgICAgLy8gSWYgdGhlcmUncyBhbiBleGlzdGluZyBwcm9wZXJ0
eSBvbiB0aGUgYmFzZSBvYmplY3QsIG9yIG9uIG9uZSBvZiBpdHMgCisgICAgICAgICAgICAvLyBw
cm90b3R5cGVzLCB3ZSBzaG91bGQgc3RvcmUgdGhlIHByb3BlcnR5IG9uIHRoZSAqYmFzZSogb2Jq
ZWN0LgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLQorICAgICAgICBpZiAoIW9iai0+
c3RhdGljUHJvcGVydGllc1JlaWZpZWQodm0pKSB7CisgICAgICAgICAgICBpZiAob2JqLT5jbGFz
c0luZm8odm0pLT5oYXNTdGF0aWNTZXR0ZXJPclJlYWRvbmx5UHJvcGVydGllcygpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKGF1dG8gZW50cnkgPSBvYmotPmZpbmRQcm9wZXJ0eUhhc2hFbnRyeSh2
bSwgcHJvcGVydHlOYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBwdXRFbnRyeShnbG9iYWxPYmplY3QsIGVudHJ5LT50YWJsZS0+Y2xhc3NGb3JUaGlz
LCBlbnRyeS0+dmFsdWUsIG9iaiwgdGhpcywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChvYmotPnR5cGUoKSA9PSBQcm94
eU9iamVjdFR5cGUpIHsKKyAgICAgICAgICAgIGF1dG8qIHByb3h5ID0ganNDYXN0PFByb3h5T2Jq
ZWN0Kj4ob2JqKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcHJveHkt
PlByb3h5T2JqZWN0OjpwdXQocHJveHksIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgc2xvdCkpOworICAgICAgICB9CiAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gb2JqLT5n
ZXRQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgaWYgKHByb3RvdHlwZS5pc051bGwoKSkKQEAgLTg1
OCw4MCArODMzLDkgQEAgYm9vbCBKU09iamVjdDo6cHV0SW5saW5lU2xvdyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHkKICAgICAgICAgb2JqID0gYXNP
YmplY3QocHJvdG90eXBlKTsKICAgICB9CiAKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgaWYg
KFVOTElLRUxZKGlzVGhpc1ZhbHVlQWx0ZXJlZChzbG90LCB0aGlzKSkpCi0gICAgICAgIHJldHVy
biBkZWZpbmVQcm9wZXJ0eU9uUmVjZWl2ZXIoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzbG90KTsKLSAgICByZXR1cm4gcHV0SW5saW5lRmFzdChnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNsb3QpOwotfQotCi1zdGF0aWMgTkVWRVJfSU5MSU5FIGJvb2wgZGVm
aW5lUHJvcGVydHlPblJlY2VpdmVyU2xvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBKU09iamVjdCogcmVjZWl2
ZXIsIGJvb2wgc2hvdWxkVGhyb3cpCi17Ci0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIFByb3Bl
cnR5U2xvdCBzbG90KHJlY2VpdmVyLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
R2V0T3duUHJvcGVydHkpOwotICAgIGJvb2wgaGFzUHJvcGVydHkgPSByZWNlaXZlci0+bWV0aG9k
VGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eVNsb3QocmVjZWl2ZXIsIGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCBzbG90KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7
Ci0KLSAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKLSAgICBpZiAoaGFzUHJvcGVy
dHkpIHsKLSAgICAgICAgLy8gRklYTUU6IEZvciBhbiBhY2Nlc3NvciB3aXRoIHNldHRlciwgdGhl
IGVycm9yIG1lc3NhZ2UgaXMgbWlzbGVhZGluZy4KLSAgICAgICAgaWYgKHNsb3QuYXR0cmlidXRl
cygpICYgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5T3JBY2Nlc3Nvck9yQ3VzdG9tQWNjZXNz
b3IpCi0gICAgICAgICAgICByZXR1cm4gdHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHNo
b3VsZFRocm93LCBSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7Ci0gICAgICAgIGRlc2NyaXB0
b3Iuc2V0VmFsdWUodmFsdWUpOwotICAgIH0gZWxzZQotICAgICAgICBkZXNjcmlwdG9yLnNldERl
c2NyaXB0b3IodmFsdWUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6
Tm9uZSkpOwotCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCByZWNlaXZlci0+bWV0aG9k
VGFibGUodm0pLT5kZWZpbmVPd25Qcm9wZXJ0eShyZWNlaXZlciwgZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KSk7Ci19Ci0KLS8vIGh0dHBzOi8vdGMz
OS5lcy9lY21hMjYyLyNzZWMtb3JkaW5hcnlzZXQgKHN0ZXAgMykKLWJvb2wgSlNPYmplY3Q6OmRl
ZmluZVByb3BlcnR5T25SZWNlaXZlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNs
b3QpCi17Ci0gICAgQVNTRVJUKCFwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpOwotCi0gICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLQotICAgIEpTT2JqZWN0KiByZWNlaXZlciA9IHNsb3QudGhpc1ZhbHVlKCku
Z2V0T2JqZWN0KCk7Ci0gICAgLy8gRklYTUU6IEZvciBhIGZhaWx1cmUgZHVlIHRvIHByaW1pdGl2
ZSByZWNlaXZlciwgdGhlIGVycm9yIG1lc3NhZ2UgaXMgbWlzbGVhZGluZy4KLSAgICBpZiAoIXJl
Y2VpdmVyKQorICAgIGlmICghcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZVB1dD4odm0sIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QpKQogICAgICAgICByZXR1cm4gdHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsIHNsb3QuaXNTdHJpY3RNb2RlKCksIFJlYWRvbmx5UHJvcGVydHlXcml0
ZUVycm9yKTsKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0KLSAgICBpZiAoc2xvdC5pc1RhaW50ZWRC
eU9wYXF1ZU9iamVjdCgpIHx8IHNsb3QuY29udGV4dCgpID09IFB1dFByb3BlcnR5U2xvdDo6UmVm
bGVjdFNldCkgewotICAgICAgICBpZiAocmVjZWl2ZXItPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5l
T3duUHJvcGVydHkgIT0gSlNPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KQotICAgICAgICAgICAg
cmV0dXJuIGRlZmluZVByb3BlcnR5T25SZWNlaXZlclNsb3coZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCByZWNlaXZlciwgc2xvdC5pc1N0cmljdE1vZGUoKSk7Ci0gICAgfQotCi0g
ICAgaWYgKFVOTElLRUxZKHJlY2VpdmVyLT5oYXNOb25SZWlmaWVkU3RhdGljUHJvcGVydGllcyh2
bSkpKQotICAgICAgICByZXR1cm4gcmVjZWl2ZXItPnB1dElubGluZUZhc3RSZXBsYWNpbmdTdGF0
aWNQcm9wZXJ0eUlmTmVlZGVkKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xv
dCk7Ci0gICAgcmV0dXJuIHJlY2VpdmVyLT5wdXRJbmxpbmVGYXN0KGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Ci19Ci0KLWJvb2wgSlNPYmplY3Q6OnB1dElubGluZUZh
c3RSZXBsYWNpbmdTdGF0aWNQcm9wZXJ0eUlmTmVlZGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYgc2xvdCkKLXsKLSAgICBBU1NFUlQoIXBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSk7
Ci0KLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotCi0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlz
LT5zdHJ1Y3R1cmUodm0pOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmhhc05vblJlaWZpZWRTdGF0
aWNQcm9wZXJ0aWVzKCkpOwotICAgIGlmICghaXNWYWxpZE9mZnNldChzdHJ1Y3R1cmUtPmdldCh2
bSwgcHJvcGVydHlOYW1lKSkpIHsKLSAgICAgICAgaWYgKGF1dG8gZW50cnkgPSBzdHJ1Y3R1cmUt
PmZpbmRQcm9wZXJ0eUhhc2hFbnRyeShwcm9wZXJ0eU5hbWUpKSB7Ci0gICAgICAgICAgICBpZiAo
ZW50cnktPnZhbHVlLT5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHlP
ckFjY2Vzc29yT3JDdXN0b21BY2Nlc3NvcikgewotICAgICAgICAgICAgICAgIEFTU0VSVChzbG90
LmNvbnRleHQoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6OlJlZmxlY3RTZXQpOwotICAgICAgICAgICAg
ICAgIC8vIEZJWE1FOiBGb3IgYW4gYWNjZXNzb3Igd2l0aCBzZXR0ZXIsIHRoZSBlcnJvciBtZXNz
YWdlIGlzIG1pc2xlYWRpbmcuCi0gICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCBzbG90LmlzU3RyaWN0TW9kZSgpLCBSZWFkb25seVByb3BlcnR5V3Jp
dGVFcnJvcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBBdm9pZCBQdXRNb2RlUHV0
IGJlY2F1c2UgaXQgZmFpbHMgZm9yIG5vbi1leHRlbnNpYmxlIHN0cnVjdHVyZXMuCi0gICAgICAg
ICAgICBwdXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXNGb3JTdHJ1
Y3R1cmUoZW50cnktPnZhbHVlLT5hdHRyaWJ1dGVzKCkpICYgflByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21WYWx1ZSwgc2xvdCk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcHV0SW5saW5lRmFzdChnbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpKTsKKyAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogYm9vbCBKU09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
Ym9vbCBzaG91bGRUaHJvdykKQEAgLTM5NDAsNiArMzg0NCwzMCBAQCBib29sIEpTT2JqZWN0Ojph
bnlPYmplY3RJbkNoYWluTWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKFZNJiB2bSkgY29uc3QK
ICAgICB9CiB9CiAKK2Jvb2wgSlNPYmplY3Q6OnByb3RvdHlwZUNoYWluTWF5SW50ZXJjZXB0U3Rv
cmVUbyhWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCit7CisgICAgaWYgKHBhcnNl
SW5kZXgocHJvcGVydHlOYW1lKSkKKyAgICAgICAgcmV0dXJuIGFueU9iamVjdEluQ2hhaW5NYXlJ
bnRlcmNlcHRJbmRleGVkQWNjZXNzZXModm0pOworICAgIAorICAgIGZvciAoSlNPYmplY3QqIGN1
cnJlbnQgPSB0aGlzOyA7KSB7CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gY3VycmVudC0+
Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKKyAgICAgICAgaWYgKHByb3RvdHlwZS5pc051bGwoKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIGN1cnJlbnQgPSBh
c09iamVjdChwcm90b3R5cGUpOworICAgICAgICAKKyAgICAgICAgdW5zaWduZWQgYXR0cmlidXRl
czsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gY3VycmVudC0+c3RydWN0dXJlKHZt
KS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOworICAgICAgICBpZiAoIUpTQzo6
aXNWYWxpZE9mZnNldChvZmZzZXQpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAor
ICAgICAgICBpZiAoYXR0cmlidXRlcyAmIChQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIAorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCiBib29sIEpTT2JqZWN0
OjpuZWVkc1Nsb3dQdXRJbmRleGluZyhWTSYgdm0pIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFueU9i
amVjdEluQ2hhaW5NYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXModm0pIHx8IGdsb2JhbE9iamVj
dCh2bSktPmlzSGF2aW5nQUJhZFRpbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCmluZGV4IDczMWY0NGRjZmQ0MzQwZDQxMzkwNmZlY2Y3ZTU2YThhNDgzMGMyNzEu
Ljc2MzliZjU2Y2YzMzVkYTcyMGYzZDgzM2Y1ZTBkMTliN2JmM2ZkYTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtMTcxLDYgKzE3MSw3IEBAIHB1YmxpYzoK
IAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5
SW5kZXgoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90Jik7CiAgICAgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RJbmxpbmUoSlNHbG9i
YWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFX0lGX0FTU0VSVF9FTkFCTEVEIHN0YXRpYyB2b2lkIGRvUHV0UHJvcGVydHlTZWN1cml0
eUNoZWNrKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFB1dFByb3Bl
cnR5U2xvdCYpOwogCiAgICAgLy8gVGhlIGtleSBkaWZmZXJlbmNlIGJldHdlZW4gdGhpcyBhbmQg
Z2V0T3duUHJvcGVydHlTbG90IGlzIHRoYXQgZ2V0T3duUHJvcGVydHlTbG90CiAgICAgLy8gY3Vy
cmVudGx5IHJldHVybnMgaW5jb3JyZWN0IHJlc3VsdHMgZm9yIHRoZSBET00gd2luZG93ICh3aXRo
IG5vbi1vd24gcHJvcGVydGllcykKQEAgLTIwMSw3ICsyMDIsNiBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIGJvb2wgcHV0SW5saW5lRm9ySlNPYmplY3QoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIAogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgSlNfRVhQT1JUX1BS
SVZBVEUgTkVWRVJfSU5MSU5FIHN0YXRpYyBib29sIGRlZmluZVByb3BlcnR5T25SZWNlaXZlcihK
U0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7
CiAgICAgLy8gcHV0QnlJbmRleCBhc3N1bWVzIHRoYXQgdGhlIHJlY2VpdmVyIGlzIHRoaXMgSlND
ZWxsIG9iamVjdC4KICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBwdXRCeUluZGV4
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBib29sIHNob3VsZFRocm93KTsKICAgICAgICAgCkBAIC0yMTgsMTMgKzIxOCwxMiBAQCBwdWJs
aWM6CiAKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcHV0QnlJbmRleElubGluZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCB1aW50NjRfdCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IGJvb2wgc2hvdWxkVGhyb3cpCiAgICAgewotICAgICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxP
YmplY3QpOwogICAgICAgICBpZiAoTElLRUxZKHByb3BlcnR5TmFtZSA8PSBNQVhfQVJSQVlfSU5E
RVgpKQogICAgICAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXhJbmxpbmUoZ2xvYmFsT2JqZWN0LCBz
dGF0aWNfY2FzdDx1aW50MzJfdD4ocHJvcGVydHlOYW1lKSwgdmFsdWUsIHNob3VsZFRocm93KTsK
IAogICAgICAgICBBU1NFUlQocHJvcGVydHlOYW1lIDw9IG1heFNhZmVJbnRlZ2VyKCkpOwogICAg
ICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzLCBzaG91bGRUaHJvdyk7Ci0gICAgICAgIHJl
dHVybiBtZXRob2RUYWJsZSh2bSktPnB1dCh0aGlzLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6
OmZyb20odm0sIHByb3BlcnR5TmFtZSksIHZhbHVlLCBzbG90KTsKKyAgICAgICAgcmV0dXJuIHB1
dElubGluZUZvckpTT2JqZWN0KHRoaXMsIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbShn
ZXRWTShnbG9iYWxPYmplY3QpLCBwcm9wZXJ0eU5hbWUpLCB2YWx1ZSwgc2xvdCk7CiAgICAgfQog
ICAgICAgICAKICAgICAvLyBUaGlzIGlzIHNpbWlsYXIgdG8gdGhlIHB1dERpcmVjdCogbWV0aG9k
czoKQEAgLTY0Myw3ICs2NDIsNiBAQCBwdWJsaWM6CiAgICAgLy8gIC0gYXR0cmlidXRlcyB3aWxs
IGJlIHJlc3BlY3RlZCAoYWZ0ZXIgdGhlIGNhbGwgdGhlIHByb3BlcnR5IHdpbGwgZXhpc3Qgd2l0
aCB0aGUgZ2l2ZW4gYXR0cmlidXRlcykKICAgICAvLyAgLSB0aGUgcHJvcGVydHkgbmFtZSBpcyBh
c3N1bWVkIHRvIG5vdCBiZSBhbiBpbmRleC4KICAgICBib29sIHB1dERpcmVjdChWTSYsIFByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyA9IDApOwotICAgIGJvb2wgcHV0
RGlyZWN0KFZNJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKICAgICBib29sIHB1dERpcmVjdChWTSYsIFByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgdm9pZCBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbihWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyA9
IDApOwogICAgIGJvb2wgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcihWTSYsIFByb3BlcnR5TmFt
ZSwgR2V0dGVyU2V0dGVyKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CkBAIC03NzAsMTEgKzc2OCw2
IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0dldHRlclNldHRlclByb3BlcnRpZXMoVk0mIHZtKSB7
IHJldHVybiBzdHJ1Y3R1cmUodm0pLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCk7IH0KICAg
ICBib29sIGhhc0N1c3RvbUdldHRlclNldHRlclByb3BlcnRpZXMoVk0mIHZtKSB7IHJldHVybiBz
dHJ1Y3R1cmUodm0pLT5oYXNDdXN0b21HZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCk7IH0KIAotICAg
IGJvb2wgaGFzTm9uUmVpZmllZFN0YXRpY1Byb3BlcnRpZXMoVk0mIHZtKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIFR5cGVJbmZvOjpoYXNTdGF0aWNQcm9wZXJ0eVRhYmxlKGlubGluZVR5cGVGbGFn
cygpKSAmJiAhc3RydWN0dXJlKHZtKS0+c3RhdGljUHJvcGVydGllc1JlaWZpZWQoKTsKLSAgICB9
Ci0KICAgICAvLyBwdXRPd25EYXRhUHJvcGVydHkgaGFzICdwdXQnIGxpa2Ugc2VtYW50aWNzLCBo
b3dldmVyIHRoaXMgbWV0aG9kOgogICAgIC8vICAtIGFzc3VtZXMgdGhlIG9iamVjdCBjb250YWlu
cyBubyBvd24gZ2V0dGVyL3NldHRlciBwcm9wZXJ0aWVzLgogICAgIC8vICAtIHByb3ZpZGVzIG5v
IHNwZWNpYWwgaGFuZGxpbmcgZm9yIF9fcHJvdG9fXwpAQCAtODIxLDYgKzgxNCw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGlzRnJvemVuKFZNJiB2bSkgeyByZXR1cm4gc3RydWN0dXJlKHZtKS0+aXNG
cm96ZW4odm0pOyB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGFueU9iamVjdEluQ2hh
aW5NYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoVk0mKSBjb25zdDsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBib29sIHByb3RvdHlwZUNoYWluTWF5SW50ZXJjZXB0U3RvcmVUbyhWTSYsIFByb3Bl
cnR5TmFtZSk7CiAgICAgYm9vbCBuZWVkc1Nsb3dQdXRJbmRleGluZyhWTSYpIGNvbnN0OwogCiBw
cml2YXRlOgpAQCAtMTExMyw4ICsxMTA3LDYgQEAgcHJpdmF0ZToKICAgICBib29sIHB1dERpcmVj
dEludGVybmFsKFZNJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIE5FVkVSX0lOTElORSBib29s
IHB1dElubGluZVNsb3coSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIE5FVkVSX0lOTElORSBib29s
IHB1dElubGluZUZhc3RSZXBsYWNpbmdTdGF0aWNQcm9wZXJ0eUlmTmVlZGVkKEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICBib29s
IHB1dElubGluZUZhc3QoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOwogCiAgICAgYm9vbCBnZXROb25JbmRleFByb3BlcnR5U2xvdChKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgYm9vbCBnZXRP
d25Ob25JbmRleFByb3BlcnR5U2xvdChWTSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7CkBAIC0xNDQ3LDYgKzE0MzksMTAgQEAgQUxXQVlTX0lOTElORSBib29sIEpT
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmpl
Y3QKIHsKICAgICByZXR1cm4gZ2V0T3duUHJvcGVydHlTbG90SW1wbChvYmplY3QsIGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KKworQUxXQVlTX0lOTElORSB2b2lkIEpTT2Jq
ZWN0Ojpkb1B1dFByb3BlcnR5U2VjdXJpdHlDaGVjayhKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lLCBQdXRQcm9wZXJ0eVNsb3QmKQoreworfQogI2VuZGlmCiAKIC8vIEl0
IG1heSBzZWVtIGNyYXp5IHRvIGlubGluZSBhIGZ1bmN0aW9uIHRoaXMgbGFyZ2UgYnV0IGl0IG1h
a2VzIGEgYmlnIGRpZmZlcmVuY2UKQEAgLTE1NDIsMTMgKzE1MzgsNiBAQCBpbmxpbmUgYm9vbCBK
U09iamVjdDo6cHV0RGlyZWN0KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZQogICAgIHJldHVybiBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlRGVmaW5lT3du
UHJvcGVydHk+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBzbG90KTsKIH0K
IAotaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdChWTSYgdm0sIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFB1dFByb3Bl
cnR5U2xvdCYgc2xvdCkKLXsKLSAgICBBU1NFUlQoIXZhbHVlLmlzR2V0dGVyU2V0dGVyKCkpOwot
ICAgIEFTU0VSVCghdmFsdWUuaXNDdXN0b21HZXR0ZXJTZXR0ZXIoKSk7Ci0gICAgcmV0dXJuIHB1
dERpcmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4odm0sIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNsb3QpOwotfQotCiBpbmxpbmUgYm9vbCBKU09iamVjdDo6
cHV0RGlyZWN0KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEFTU0VSVCghdmFsdWUuaXNHZXR0ZXJT
ZXR0ZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5s
aW5lcy5oCmluZGV4IDBkYjMzYzM3MDhjNTA2MjdhZTViNTlhYTE2ZTc4NjljOGU4MzVkYTAuLmMw
OWFhNTE5YTI5NGNmMTJhYjhhMjI0ODI2ZTFhNWE5ZmYzM2M2YTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCkBAIC02OSw4ICs2OSw2IEBA
IEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Y2FuUGVyZm9ybUZhc3RQdXRJbmxpbmVFeGNs
dWRpbmdQcm90byhWTSYgdm0pCiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gb2JqLT5z
dHJ1Y3R1cmUodm0pOwogICAgICAgICBpZiAoc3RydWN0dXJlLT5oYXNSZWFkT25seU9yR2V0dGVy
U2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvKCkgfHwgc3RydWN0dXJlLT50eXBlSW5mbygp
Lm92ZXJyaWRlc0dldFByb3RvdHlwZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICBpZiAob2JqICE9IHRoaXMgJiYgc3RydWN0dXJlLT50eXBlSW5mbygpLm92ZXJyaWRlc1B1
dCgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIHByb3RvdHlwZSA9IG9i
ai0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKTsKICAgICAgICAgaWYgKHByb3RvdHlwZS5pc051bGwo
KSkKQEAgLTI1MSw0MyArMjQ5LDMyIEBAIEFMV0FZU19JTkxJTkUgUHJvcGVydHlPZmZzZXQgSlNP
YmplY3Q6OnByZXBhcmVUb1B1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKFZNJiB2CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vcmRpbmFy
eXNldAorLy8gRUNNQSA4LjYuMi4yCiBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OnB1dElu
bGluZUZvckpTT2JqZWN0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlT
bG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSlNPYmplY3QqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihjZWxsKTsKICAgICBBU1NFUlQodmFsdWUpOwogICAg
IEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6
aGVhcCh0aGlzT2JqZWN0KSk7CiAKLSAgICAvLyBUcnkgaW5kZXhlZCBwdXQgZmlyc3QuIFRoaXMg
aXMgcmVxdWlyZWQgZm9yIGNvcnJlY3RuZXNzLCBzaW5jZSBsb2FkcyBvbiBwcm9wZXJ0eSBuYW1l
cyB0aGF0IGFwcGVhciBsaWtlCi0gICAgLy8gdmFsaWQgaW5kaWNlcyB3aWxsIG5ldmVyIGxvb2sg
aW4gdGhlIG5hbWVkIHByb3BlcnR5IHN0b3JhZ2UuCi0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90
PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewotICAgICAgICBpZiAoVU5MSUtF
TFkoaXNUaGlzVmFsdWVBbHRlcmVkKHNsb3QsIHRoaXNPYmplY3QpKSkKLSAgICAgICAgICAgIHJl
dHVybiBvcmRpbmFyeVNldFNsb3coZ2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBzbG90LnRoaXNWYWx1ZSgpLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsKLSAgICAg
ICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleCh0aGlzT2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIGluZGV4LnZhbHVlKCksIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9k
ZSgpKTsKLSAgICB9Ci0KLSAgICBpZiAoIXRoaXNPYmplY3QtPmNhblBlcmZvcm1GYXN0UHV0SW5s
aW5lKHZtLCBwcm9wZXJ0eU5hbWUpKQotICAgICAgICByZXR1cm4gdGhpc09iamVjdC0+cHV0SW5s
aW5lU2xvdyhnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogICAgIGlm
IChVTkxJS0VMWShpc1RoaXNWYWx1ZUFsdGVyZWQoc2xvdCwgdGhpc09iamVjdCkpKQotICAgICAg
ICByZXR1cm4gZGVmaW5lUHJvcGVydHlPblJlY2VpdmVyKGdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2xvdCk7Ci0gICAgaWYgKFVOTElLRUxZKHRoaXNPYmplY3QtPmhhc05vblJl
aWZpZWRTdGF0aWNQcm9wZXJ0aWVzKHZtKSkpCi0gICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5w
dXRJbmxpbmVGYXN0UmVwbGFjaW5nU3RhdGljUHJvcGVydHlJZk5lZWRlZChnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwotICAgIHJldHVybiB0aGlzT2JqZWN0LT5wdXRJ
bmxpbmVGYXN0KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Ci19Cisg
ICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgb3JkaW5hcnlTZXRTbG93KGdsb2JhbE9i
amVjdCwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdC50aGlzVmFsdWUoKSwg
c2xvdC5pc1N0cmljdE1vZGUoKSkpOwogCi1BTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OnB1
dElubGluZUZhc3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQotewotICAg
IEFTU0VSVCghcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKTsKKyAgICAvLyBUcnkgaW5kZXhlZCBw
dXQgZmlyc3QuIFRoaXMgaXMgcmVxdWlyZWQgZm9yIGNvcnJlY3RuZXNzLCBzaW5jZSBsb2FkcyBv
biBwcm9wZXJ0eSBuYW1lcyB0aGF0IGFwcGVhciBsaWtlCisgICAgLy8gdmFsaWQgaW5kaWNlcyB3
aWxsIG5ldmVyIGxvb2sgaW4gdGhlIG5hbWVkIHByb3BlcnR5IHN0b3JhZ2UuCisgICAgaWYgKE9w
dGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKKyAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBwdXRCeUluZGV4KHRoaXNPYmplY3QsIGdsb2Jh
bE9iamVjdCwgaW5kZXgudmFsdWUoKSwgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpKTsKIAot
ICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIGlmICh0aGlzT2JqZWN0LT5jYW5QZXJmb3JtRmFzdFB1
dElubGluZSh2bSwgcHJvcGVydHlOYW1lKSkgeworICAgICAgICBBU1NFUlQoIXRoaXNPYmplY3Qt
PnByb3RvdHlwZUNoYWluTWF5SW50ZXJjZXB0U3RvcmVUbyh2bSwgcHJvcGVydHlOYW1lKSk7Cisg
ICAgICAgIGlmICghdGhpc09iamVjdC0+cHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZVB1dD4odm0s
IHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QpKQorICAgICAgICAgICAgcmV0dXJuIHR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBzbG90LmlzU3RyaWN0TW9kZSgpLCBSZWFkb25seVBy
b3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KIAotICAgIC8v
IEZJWE1FOiBGb3IgYSBmYWlsdXJlIGR1ZSB0byBub24tZXh0ZW5zaWJsZSBzdHJ1Y3R1cmUsIHRo
ZSBlcnJvciBtZXNzYWdlIGlzIG1pc2xlYWRpbmcuCi0gICAgaWYgKCFwdXREaXJlY3RJbnRlcm5h
bDxQdXRNb2RlUHV0Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCkpCi0gICAgICAg
IHJldHVybiB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgc2xvdC5pc1N0cmljdE1vZGUo
KSwgUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwotICAgIHJldHVybiB0cnVlOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgdGhpc09iamVjdC0+cHV0SW5saW5lU2xvdyhnbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpKTsKIH0KIAogLy8gSGFzT3duUHJvcGVy
dHkoTywgUCkgZnJvbSBzZWN0aW9uIDcuMy4xMSBpbiB0aGUgc3BlYy4KQEAgLTMzMCw3ICszMTcs
NyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKFZNJiB2
bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZQogICAgICAgICB1bnNpZ25lZCBjdXJyZW50QXR0
cmlidXRlczsKICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQo
dm0sIHByb3BlcnR5TmFtZSwgY3VycmVudEF0dHJpYnV0ZXMpOwogICAgICAgICBpZiAob2Zmc2V0
ICE9IGludmFsaWRPZmZzZXQpIHsKLSAgICAgICAgICAgIGlmICgobW9kZSA9PSBQdXRNb2RlUHV0
KSAmJiBjdXJyZW50QXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seU9yQWNj
ZXNzb3JPckN1c3RvbUFjY2Vzc29yKQorICAgICAgICAgICAgaWYgKChtb2RlID09IFB1dE1vZGVQ
dXQpICYmIGN1cnJlbnRBdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KQog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAgICAgcHV0RGlyZWN0KHZt
LCBvZmZzZXQsIHZhbHVlKTsKQEAgLTM4OSw3ICszNzYsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wg
SlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZQogICAgIHVuc2lnbmVkIGN1cnJlbnRBdHRyaWJ1dGVzOwogICAgIG9mZnNldCA9IHN0cnVj
dHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVzKTsKICAgICBpZiAo
b2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpIHsKLSAgICAgICAgaWYgKChtb2RlID09IFB1dE1vZGVQ
dXQpICYmIGN1cnJlbnRBdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5T3JB
Y2Nlc3Nvck9yQ3VzdG9tQWNjZXNzb3IpCisgICAgICAgIGlmICgobW9kZSA9PSBQdXRNb2RlUHV0
KSAmJiBjdXJyZW50QXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBzdHJ1Y3R1cmUtPmRpZFJlcGxhY2VQ
cm9wZXJ0eShvZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm94eS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5oCmlu
ZGV4IDQ2M2Q0MGVhMDZkYmQwOGNlMzdmY2ZjMGUyOGQ1OTFhMjgzYjlhNzkuLjBmMjg3MTY2MTc1
N2JjMGI0YzllOTE4MDI4OGI2MjNhZTQxZTA1YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJveHkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb3h5LmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBK
U1Byb3h5IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAgIHVzaW5nIEJh
c2UgPSBKU05vbkZpbmFsT2JqZWN0OwotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3Bl
cnR5U2xvdCB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5TmFtZXMgfCBPdmVycmlkZXNQdXQgfCBP
dmVycmlkZXNHZXRQcm90b3R5cGUgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blBy
b3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5TmFtZXMgfCBPdmVycmlkZXNHZXRQ
cm90b3R5cGUgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVu
Z3RoSXNOb3RaZXJvOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNl
QWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCmluZGV4IGE3N2Q3YzUxMzIy
NDNiOTQ5YmE1NTM1NjJhZGQwNWFmZGY1M2UyMWUuLjAzYjVhYTk3ZjJhMjgxNzRhNzYzZTg2YjY3
ZjU5MDRjZjdkY2Y2MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVHlwZUluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJ
bmZvLmgKQEAgLTU3LDcgKzU3LDcgQEAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBJc0ltbXV0
YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdCA9IDEgPDwgMTQ7CiBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIEdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlID0gMSA8
PCAxNTsKIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgSW50ZXJjZXB0c0dldE93blByb3BlcnR5
U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyA9IDEgPDwgMTY7CiBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUlzSW1tb3J0YWwgPSAxIDw8IDE3Owotc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBPdmVycmlkZXNQdXQgPSAxIDw8IDE4Oworc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBIYXNQdXRQcm9wZXJ0eVNlY3VyaXR5Q2hlY2sgPSAxIDw8IDE4Owogc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBPdmVycmlkZXNHZXRQcm90b3R5cGUgPSAxIDw8IDE5Owogc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBHZXRPd25Qcm9wZXJ0eVNsb3RNYXlCZVdyb25nQWJvdXRE
b250RW51bSA9IDEgPDwgMjA7CiAKQEAgLTk0LDcgKzk0LDYgQEAgcHVibGljOgogICAgIGJvb2wg
aW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSgpIGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFn
czE8SW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZT4oKTsgfQogICAgIGJvb2wgb3ZlcnJpZGVz
R2V0Q2FsbERhdGEoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MxPE92ZXJyaWRlc0dldENh
bGxEYXRhPigpOyB9CiAgICAgYm9vbCBvdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QoKSBjb25z
dCB7IHJldHVybiBvdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QoaW5saW5lVHlwZUZsYWdzKCkp
OyB9Ci0gICAgYm9vbCBoYXNTdGF0aWNQcm9wZXJ0eVRhYmxlKCkgY29uc3QgeyByZXR1cm4gaXNT
ZXRPbkZsYWdzMTxIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlPigpOyB9CiAgICAgc3RhdGljIGJvb2wg
b3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90KElubGluZVR5cGVGbGFncyBmbGFncykgeyByZXR1
cm4gZmxhZ3MgJiBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7IH0KICAgICBzdGF0aWMgYm9v
bCBoYXNTdGF0aWNQcm9wZXJ0eVRhYmxlKElubGluZVR5cGVGbGFncyBmbGFncykgeyByZXR1cm4g
ZmxhZ3MgJiBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOyB9CiAgICAgc3RhdGljIGJvb2wgcGVyQ2Vs
bEJpdChJbmxpbmVUeXBlRmxhZ3MgZmxhZ3MpIHsgcmV0dXJuIGZsYWdzICYgVHlwZUluZm9QZXJD
ZWxsQml0OyB9CkBAIC0xMDMsMTIgKzEwMiwxMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBvdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eU5hbWVzKCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMjxPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eU5hbWVzPigpOyB9CiAgICAgYm9vbCBvdmVycmlkZXNHZXRPd25T
cGVjaWFsUHJvcGVydHlOYW1lcygpIGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczI8T3ZlcnJp
ZGVzR2V0T3duU3BlY2lhbFByb3BlcnR5TmFtZXM+KCk7IH0KICAgICBib29sIG92ZXJyaWRlc0Fu
eUZvcm1PZkdldE93blByb3BlcnR5TmFtZXMoKSBjb25zdCB7IHJldHVybiBvdmVycmlkZXNHZXRP
d25Qcm9wZXJ0eU5hbWVzKCkgfHwgb3ZlcnJpZGVzR2V0T3duU3BlY2lhbFByb3BlcnR5TmFtZXMo
KTsgfQotICAgIGJvb2wgb3ZlcnJpZGVzUHV0KCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdz
MjxPdmVycmlkZXNQdXQ+KCk7IH0KICAgICBib29sIG92ZXJyaWRlc0dldFByb3RvdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczI8T3ZlcnJpZGVzR2V0UHJvdG90eXBlPigpOyB9CiAg
ICAgYm9vbCBwcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcoKSBjb25zdCB7IHJldHVybiBpc1NldE9u
RmxhZ3MyPFByb2hpYml0c1Byb3BlcnR5Q2FjaGluZz4oKTsgfQogICAgIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90SXNJbXB1cmUoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MyPEdldE93blBy
b3BlcnR5U2xvdElzSW1wdXJlPigpOyB9CiAgICAgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RJc0lt
cHVyZUZvclByb3BlcnR5QWJzZW5jZSgpIGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczI8R2V0
T3duUHJvcGVydHlTbG90SXNJbXB1cmVGb3JQcm9wZXJ0eUFic2VuY2U+KCk7IH0KICAgICBib29s
IGdldE93blByb3BlcnR5U2xvdE1heUJlV3JvbmdBYm91dERvbnRFbnVtKCkgY29uc3QgeyByZXR1
cm4gaXNTZXRPbkZsYWdzMjxHZXRPd25Qcm9wZXJ0eVNsb3RNYXlCZVdyb25nQWJvdXREb250RW51
bT4oKTsgfQorICAgIGJvb2wgaGFzUHV0UHJvcGVydHlTZWN1cml0eUNoZWNrKCkgY29uc3QgeyBy
ZXR1cm4gaXNTZXRPbkZsYWdzMjxIYXNQdXRQcm9wZXJ0eVNlY3VyaXR5Q2hlY2s+KCk7IH0KICAg
ICBib29sIG5ld0ltcHVyZVByb3BlcnR5RmlyZXNXYXRjaHBvaW50cygpIGNvbnN0IHsgcmV0dXJu
IGlzU2V0T25GbGFnczI8TmV3SW1wdXJlUHJvcGVydHlGaXJlc1dhdGNocG9pbnRzPigpOyB9CiAg
ICAgYm9vbCBpc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdCgpIGNvbnN0IHsgcmV0dXJu
IGlzU2V0T25GbGFnczI8SXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3Q+KCk7IH0KICAg
ICBib29sIGludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJ
c05vdFplcm8oKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MyPEludGVyY2VwdHNHZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8+KCk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKaW5kZXggYjliZWIzMWQyYTYxYmE4OTMwM2Y2OWY2
ZWRiYWFkZmZlMGVlN2VjYi4uMmNkMTRlNWNlM2RiY2NmMzFkM2Y0MmFhMGIxNjJkZWNiOTg2YWIz
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKQEAgLTI2Miw2ICsyNjIs
NzAgQEAgaW5saW5lIGJvb2wgcmVwbGFjZVN0YXRpY1Byb3BlcnR5U2xvdChWTSYgdm0sIEpTT2Jq
ZWN0KiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorLy8g
J2Jhc2UnIG1lYW5zIHRoZSBvYmplY3QgaG9sZGluZyB0aGUgcHJvcGVydHkgKHBvc3NpYmx5IGlu
IHRoZSBwcm90b3R5cGUgY2hhaW4gb2YgdGhlIG9iamVjdCBwdXQgd2FzIGNhbGxlZCBvbikuCisv
LyAndGhpc1ZhbHVlJyBpcyB0aGUgb2JqZWN0IHRoYXQgcHV0IGlzIGJlaW5nIGFwcGxpZWQgdG8g
KGluIHRoZSBjYXNlIG9mIGEgcHJveHksIHRoZSBwcm94eSB0YXJnZXQpLgorLy8gJ3Nsb3QudGhp
c1ZhbHVlKCknIGlzIHRoZSBvYmplY3QgdGhlIHB1dCB3YXMgb3JpZ2luYWxseSBwZXJmb3JtZWQg
b24gKGluIHRoZSBjYXNlIG9mIGEgcHJveHksIHRoZSBwcm94eSBpdHNlbGYpLgoraW5saW5lIGJv
b2wgcHV0RW50cnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQ2xhc3NJbmZv
KiwgY29uc3QgSGFzaFRhYmxlVmFsdWUqIGVudHJ5LCBKU09iamVjdCogYmFzZSwgSlNPYmplY3Qq
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KQoreworICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKGVu
dHJ5LT5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QnVpbHRpbk9yRnVuY3Rpb25P
ckxhenlQcm9wZXJ0eSkgeworICAgICAgICBpZiAoIShlbnRyeS0+YXR0cmlidXRlcygpICYgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSkgeworICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBh
IGZ1bmN0aW9uIG9yIGxhenkgcHJvcGVydHkgcHV0IHRoZW4gd2UganVzdCBkbyB0aGUgcHV0IGJl
Y2F1c2UKKyAgICAgICAgICAgIC8vIGxvZ2ljYWxseSB0aGUgb2JqZWN0IGFscmVhZHkgaGFkIHRo
ZSBwcm9wZXJ0eSwgc28gdGhpcyBpcyBqdXN0IGEgcmVwbGFjZS4KKyAgICAgICAgICAgIC8vIEZJ
WE1FOiB0aGlzVmFsdWUgbWF5IGJlIGFuIG9iamVjdCB3aXRoIG5vbi1leHRlbnNpYmxlIHN0cnVj
dHVyZSB3ZSBtdXN0IHRocm93IGZvci4KKyAgICAgICAgICAgIGlmIChKU09iamVjdCogdGhpc09i
amVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgdGhpc1ZhbHVlKSkKKyAgICAgICAg
ICAgICAgICB0aGlzT2JqZWN0LT5wdXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwgdmFsdWUpOwor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBzbG90LmlzU3RyaWN0TW9kZSgpLCBSZWFkb25seVBy
b3BlcnR5V3JpdGVFcnJvcik7CisgICAgfQorCisgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkg
JiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpCisgICAgICAgIHJldHVybiB0eXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgc2xvdC5pc1N0cmljdE1vZGUoKSwgUmVhZG9ubHlQcm9wZXJ0
eVdyaXRlRXJyb3IpOworCisgICAgaWYgKCEoZW50cnktPmF0dHJpYnV0ZXMoKSAmIFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSkpIHsKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghKGVu
dHJ5LT5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NSklUQXR0cmlidXRlKSwg
IkRPTUpJVEF0dHJpYnV0ZSBzdXBwb3J0cyByZWFkb25seSBhdHRyaWJ1dGVzIGN1cnJlbnRseS4i
KTsKKyAgICAgICAgYm9vbCBpc0FjY2Vzc29yID0gZW50cnktPmF0dHJpYnV0ZXMoKSAmIFByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvcjsKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCBvbmx5IGJlIGNhY2hpbmcgdGhlc2UgaWYgd2UncmUgbm90IGFuIHVuY2FjaGVhYmxlIGRpY3Rp
b25hcnk6CisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTUzNDcKKyAgICAgICAgLy8gV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB3ZSBkZWNpZGUg
dG8gY2FjaGUgdGhpcyBwcm9wZXJ0eSBiZWZvcmUgd2UgcG90ZW50aWFsbHkgZXhlY3V0ZSBhcmli
aXRyYXJ5IEpTLgorICAgICAgICBpZiAoaXNBY2Nlc3NvcikKKyAgICAgICAgICAgIHNsb3Quc2V0
Q3VzdG9tQWNjZXNzb3IoYmFzZSwgZW50cnktPnByb3BlcnR5UHV0dGVyKCkpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBzbG90LnNldEN1c3RvbVZhbHVlKGJhc2UsIGVudHJ5LT5wcm9wZXJ0
eVB1dHRlcigpKTsKKworICAgICAgICBhdXRvIHJlc3VsdCA9IGNhbGxDdXN0b21TZXR0ZXIoZ2xv
YmFsT2JqZWN0LCBlbnRyeS0+cHJvcGVydHlQdXR0ZXIoKSwgaXNBY2Nlc3NvciwgYmFzZSwgc2xv
dC50aGlzVmFsdWUoKSwgdmFsdWUsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGZhbHNlKTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSBUcmlTdGF0ZTo6
SW5kZXRlcm1pbmF0ZSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQgPT0gVHJpU3RhdGU6OlRy
dWU7CisKKyAgICAgICAgLy8gRklYTUU6IHRoaXNWYWx1ZSBtYXkgYmUgYW4gb2JqZWN0IHdpdGgg
bm9uLWV4dGVuc2libGUgc3RydWN0dXJlIHdlIG11c3QgdGhyb3cgZm9yLgorICAgICAgICBpZiAo
SlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIHRoaXNW
YWx1ZSkpCisgICAgICAgICAgICB0aGlzT2JqZWN0LT5wdXREaXJlY3Qodm0sIHByb3BlcnR5TmFt
ZSwgdmFsdWUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHNsb3QuaXNTdHJpY3RNb2RlKCksIFJlYWRvbmx5
UHJvcGVydHlXcml0ZUVycm9yKTsKK30KKworLyoqCisgKiBUaGlzIG9uZSBpcyBmb3IgInB1dCIu
CisgKiBJdCBsb29rcyB1cCBhIGhhc2ggZW50cnkgZm9yIHRoZSBwcm9wZXJ0eSB0byBiZSBzZXQu
ICBJZiBhbiBlbnRyeQorICogaXMgZm91bmQgaXQgc2V0cyB0aGUgdmFsdWUgYW5kIHJldHVybnMg
dHJ1ZSwgZWxzZSBpdCByZXR1cm5zIGZhbHNlLgorICovCitpbmxpbmUgYm9vbCBsb29rdXBQdXQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNPYmplY3QqIGJhc2UsIEpTVmFsdWUgdmFsdWUsIGNvbnN0IEhhc2hUYWJsZSYgdGFibGUsIFB1
dFByb3BlcnR5U2xvdCYgc2xvdCwgYm9vbCYgcHV0UmVzdWx0KQoreworICAgIGNvbnN0IEhhc2hU
YWJsZVZhbHVlKiBlbnRyeSA9IHRhYmxlLmVudHJ5KHByb3BlcnR5TmFtZSk7CisKKyAgICBpZiAo
IWVudHJ5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBwdXRSZXN1bHQgPSBwdXRFbnRy
eShnbG9iYWxPYmplY3QsIHRhYmxlLmNsYXNzRm9yVGhpcywgZW50cnksIGJhc2UsIGJhc2UsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIHJldHVybiB0cnVlOworfQorCiBpbmxpbmUg
dm9pZCByZWlmeVN0YXRpY1Byb3BlcnR5KFZNJiB2bSwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0lu
Zm8sIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCBjb25zdCBIYXNoVGFibGVWYWx1
ZSYgdmFsdWUsIEpTT2JqZWN0JiB0aGlzT2JqKQogewogICAgIGlmICh2YWx1ZS5hdHRyaWJ1dGVz
KCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QnVpbHRpbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAppbmRleCA3NTVkNTVlMTBiZWYzMDJkMWUwYjRhMzlm
ODRhZDM5M2M2NWNhZmE3Li5jMTBjNjUwNzk5ZGQ2MWY3NmQ0NzM5MDIwNmQwODMwMTEwYjFiN2U1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3Qu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaApAQCAt
NDcsNyArNDcsNiBAQCBlbnVtIGNsYXNzIFByb3BlcnR5QXR0cmlidXRlIDogdW5zaWduZWQgewog
ICAgIEN1c3RvbVZhbHVlICAgICAgID0gMSA8PCA2LAogICAgIEN1c3RvbUFjY2Vzc29yT3JWYWx1
ZSA9IEN1c3RvbUFjY2Vzc29yIHwgQ3VzdG9tVmFsdWUsCiAgICAgQWNjZXNzb3JPckN1c3RvbUFj
Y2Vzc29yT3JWYWx1ZSA9IEFjY2Vzc29yIHwgQ3VzdG9tQWNjZXNzb3IgfCBDdXN0b21WYWx1ZSwK
LSAgICBSZWFkT25seU9yQWNjZXNzb3JPckN1c3RvbUFjY2Vzc29yID0gUmVhZE9ubHkgfCBBY2Nl
c3NvciB8IEN1c3RvbUFjY2Vzc29yLAogCiAgICAgLy8gVGhpbmdzIHRoYXQgYXJlIHVzZWQgYnkg
c3RhdGljIGhhc2h0YWJsZXMgYXJlIG5vdCBpbiB0aGUgYXR0cmlidXRlcyBieXRlIGluIFByb3Bl
cnR5TWFwRW50cnkuCiAgICAgRnVuY3Rpb24gICAgICAgICAgPSAxIDw8IDgsICAvLyBwcm9wZXJ0
eSBpcyBhIGZ1bmN0aW9uIC0gb25seSB1c2VkIGJ5IHN0YXRpYyBoYXNodGFibGVzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKaW5kZXggNDVmNThkOTlk
MzVkNWExM2RkYjk5ZTBhNjRjZjkxZmI2NmQ5MzhkZi4uNjYwMWQ0ZGU0MGRhM2QxM2UzNTZhYjkz
NzZmMzI2MTkxYjU1MDc2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJveHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3h5T2JqZWN0LmNwcApAQCAtNDY0LDcgKzQ2NCw2IEBAIGJvb2wgUHJveHlPYmplY3Q6OnB1dChK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBw
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIHNsb3QuZGlzYWJsZUNh
Y2hpbmcoKTsKLSAgICBzbG90LnNldElzVGFpbnRlZEJ5T3BhcXVlT2JqZWN0KCk7CiAKICAgICBQ
cm94eU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxQcm94eU9iamVjdCo+KGNlbGwpOwogICAg
IGF1dG8gcGVyZm9ybURlZmF1bHRQdXQgPSBbJl0gKCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3h5T2JqZWN0LmgKaW5kZXggOWU2ZDIwMDc5NmQyZGQ0ZjczMzZiN2UzYzRm
NTBlNzNiZDRhODNkYi4uMGY3ZjhiOWE3NGU3YzA1YmFmNThiMjdkZmIyN2QwNThiNzE2YTk3NiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5oCkBAIC0zNCw3
ICszNCw3IEBAIGNsYXNzIFByb3h5T2JqZWN0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmpl
Y3QgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwogCi0gICAg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0T3duUHJv
cGVydHlOYW1lcyB8IE92ZXJyaWRlc0dldFByb3RvdHlwZSB8IE92ZXJyaWRlc0dldENhbGxEYXRh
IHwgT3ZlcnJpZGVzUHV0IHwgSW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVu
V2hlbkxlbmd0aElzTm90WmVybyB8IFByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsKKyAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxh
Z3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0
eU5hbWVzIHwgT3ZlcnJpZGVzR2V0UHJvdG90eXBlIHwgT3ZlcnJpZGVzR2V0Q2FsbERhdGEgfCBJ
bnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJv
IHwgUHJvaGliaXRzUHJvcGVydHlDYWNoaW5nOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2Vs
bFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9QdXRQcm9wZXJ0eVNsb3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1dFBy
b3BlcnR5U2xvdC5oCmluZGV4IDM1NmIwNzVmMGM1Y2FjOTMyMjA2NjFjMWI2YmViZDFkNmExYzA3
NmMuLmEwZTc3NDcyZjM0ZWUyODM2ZGIyNDc1MThkMzk0OWQ4OTZiNzJmMTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1dFByb3BlcnR5U2xvdC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1dFByb3BlcnR5U2xvdC5oCkBAIC0zNyw3ICsz
Nyw3IEBAIGNsYXNzIEpTRnVuY3Rpb247CiBjbGFzcyBQdXRQcm9wZXJ0eVNsb3QgewogcHVibGlj
OgogICAgIGVudW0gVHlwZSA6IHVpbnQ4X3QgeyBVbmNhY2hhYmxlLCBFeGlzdGluZ1Byb3BlcnR5
LCBOZXdQcm9wZXJ0eSwgU2V0dGVyUHJvcGVydHksIEN1c3RvbVZhbHVlLCBDdXN0b21BY2Nlc3Nv
ciB9OwotICAgIGVudW0gQ29udGV4dCA6IHVpbnQ4X3QgeyBVbmtub3duQ29udGV4dCwgUHV0QnlJ
ZCwgUHV0QnlJZEV2YWwsIFJlZmxlY3RTZXQgfTsKKyAgICBlbnVtIENvbnRleHQgeyBVbmtub3du
Q29udGV4dCwgUHV0QnlJZCwgUHV0QnlJZEV2YWwgfTsKICAgICB1c2luZyBQdXRWYWx1ZUZ1bmMg
PSBKU0M6OlB1dFZhbHVlRnVuYzsKICAgICB1c2luZyBQdXRWYWx1ZUZ1bmNXaXRoUHRyID0gSlND
OjpQdXRWYWx1ZUZ1bmNXaXRoUHRyOwogCkBAIC00Nyw3ICs0Nyw2IEBAIHB1YmxpYzoKICAgICAg
ICAgLCBtX29mZnNldChpbnZhbGlkT2Zmc2V0KQogICAgICAgICAsIG1faXNTdHJpY3RNb2RlKGlz
U3RyaWN0TW9kZSkKICAgICAgICAgLCBtX2lzSW5pdGlhbGl6YXRpb24oaXNJbml0aWFsaXphdGlv
bikKLSAgICAgICAgLCBtX2lzVGFpbnRlZEJ5T3BhcXVlT2JqZWN0KGZhbHNlKQogICAgICAgICAs
IG1fdHlwZShVbmNhY2hhYmxlKQogICAgICAgICAsIG1fY29udGV4dChjb250ZXh0KQogICAgICAg
ICAsIG1fY2FjaGVhYmlsaXR5KENhY2hpbmdBbGxvd2VkKQpAQCAtMTA1LDggKzEwNCw5IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIG1fcHV0RnVuY3Rpb247CiAgICAgfQogCisgICAgQ29udGV4
dCBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29udGV4dD4obV9jb250ZXh0
KTsgfQorCiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9Ci0gICAgQ29u
dGV4dCBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0OyB9CiAgICAgSlNPYmplY3Qq
IGJhc2UoKSBjb25zdCB7IHJldHVybiBtX2Jhc2U7IH0KICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdGhpc1ZhbHVlOyB9CiAKQEAgLTExNiw4ICsxMTYsNiBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpc0NhY2hlYWJsZUN1c3RvbSgpIGNvbnN0IHsgcmV0dXJuIGlzQ2FjaGVh
YmxlKCkgJiYgKG1fdHlwZSA9PSBDdXN0b21WYWx1ZSB8fCBtX3R5cGUgPT0gQ3VzdG9tQWNjZXNz
b3IpICYmICEhbV9wdXRGdW5jdGlvbjsgfQogICAgIGJvb2wgaXNDdXN0b21BY2Nlc3NvcigpIGNv
bnN0IHsgcmV0dXJuIGlzQ2FjaGVhYmxlKCkgJiYgbV90eXBlID09IEN1c3RvbUFjY2Vzc29yOyB9
CiAgICAgYm9vbCBpc0luaXRpYWxpemF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0luaXRpYWxp
emF0aW9uOyB9Ci0gICAgYm9vbCBpc1RhaW50ZWRCeU9wYXF1ZU9iamVjdCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNUYWludGVkQnlPcGFxdWVPYmplY3Q7IH0KLSAgICB2b2lkIHNldElzVGFpbnRlZEJ5
T3BhcXVlT2JqZWN0KCkgeyBtX2lzVGFpbnRlZEJ5T3BhcXVlT2JqZWN0ID0gdHJ1ZTsgfQogCiAg
ICAgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KCkgY29uc3QKICAgICB7CkBAIC0xMzcsOSAr
MTM1LDggQEAgcHJpdmF0ZToKICAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsKICAgICBib29s
IG1faXNTdHJpY3RNb2RlIDogMTsKICAgICBib29sIG1faXNJbml0aWFsaXphdGlvbiA6IDE7Ci0g
ICAgYm9vbCBtX2lzVGFpbnRlZEJ5T3BhcXVlT2JqZWN0IDogMTsKICAgICBUeXBlIG1fdHlwZTsK
LSAgICBDb250ZXh0IG1fY29udGV4dDsKKyAgICB1aW50OF90IG1fY29udGV4dDsKICAgICBDYWNo
ZWFiaWxpdHlUeXBlIG1fY2FjaGVhYmlsaXR5OwogICAgIEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vz
c29yUHRyVGFnPiBtX3B1dEZ1bmN0aW9uOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAKaW5kZXggNThjMGQzNzE0YjhkZjFlMzg4YjcxYjlm
N2YzNzRiOTc3N2UxODkzNS4uNDExOTJjY2IzN2U4MmZkZmRkZTdiNmYxOTViNGM0MTdkNjFlMGI4
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5j
cHAKQEAgLTI2MCw3ICsyNjAsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ocmVmbGVjdE9i
amVjdFNldCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcgogCiAgICAgLy8g
RG8gbm90IHJhaXNlIGFueSByZWFkb25seSBlcnJvcnMgdGhhdCBoYXBwZW4gaW4gc3RyaWN0IG1v
ZGUuCiAgICAgYm9vbCBzaG91bGRUaHJvd0lmQ2FudFNldCA9IGZhbHNlOwotICAgIFB1dFByb3Bl
cnR5U2xvdCBzbG90KHJlY2VpdmVyLCBzaG91bGRUaHJvd0lmQ2FudFNldCwgUHV0UHJvcGVydHlT
bG90OjpSZWZsZWN0U2V0KTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChyZWNlaXZlciwgc2hv
dWxkVGhyb3dJZkNhbnRTZXQpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKGpzQm9vbGVhbih0YXJnZXRPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0KHRh
cmdldE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGNhbGxGcmFtZS0+YXJndW1l
bnQoMiksIHNsb3QpKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwT2JqZWN0LmNwcAppbmRleCBlODIxNTkzYTk5Zjk0NzdjYmFhZWQwNDM4MmVlZTk4ODMw
ODhhODk1Li45OTM5YmEwNGFkM2IxZTliMjg5OTY2NWY3MGM3MzIxYWM2ZGQxZWY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKQEAgLTEzNCwy
NCArMTM0LDE5IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihyZWdFeHBPYmplY3RTZXRMYXN0
SW5kZXhOb25TdHJpY3QsIChKU0dsb2JhbE9iamVjdCogZ2xvCiBib29sIFJlZ0V4cE9iamVjdDo6
cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgUmVnRXhwT2JqZWN0KiB0aGlzT2JqZWN0ID0ganND
YXN0PFJlZ0V4cE9iamVjdCo+KGNlbGwpOwogCi0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5w
cm9wZXJ0eU5hbWVzLT5sYXN0SW5kZXgpIHsKLSAgICAgICAgaWYgKCF0aGlzT2JqZWN0LT5sYXN0
SW5kZXhJc1dyaXRhYmxlKCkpCi0gICAgICAgICAgICByZXR1cm4gdHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsIHNsb3QuaXNTdHJpY3RNb2RlKCksIFJlYWRvbmx5UHJvcGVydHlXcml0ZUVy
cm9yKTsKLQotICAgICAgICBpZiAoVU5MSUtFTFkoc2xvdC50aGlzVmFsdWUoKSAhPSB0aGlzT2Jq
ZWN0KSkKLSAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNPYmplY3Q6OmRl
ZmluZVByb3BlcnR5T25SZWNlaXZlcihnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHNsb3QpKTsKKyAgICBpZiAoVU5MSUtFTFkoaXNUaGlzVmFsdWVBbHRlcmVkKHNsb3QsIHRoaXNP
YmplY3QpKSkKKyAgICAgICAgcmV0dXJuIG9yZGluYXJ5U2V0U2xvdyhnbG9iYWxPYmplY3QsIHRo
aXNPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QudGhpc1ZhbHVlKCksIHNsb3QuaXNT
dHJpY3RNb2RlKCkpOwogCisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVz
LT5sYXN0SW5kZXgpIHsKICAgICAgICAgYm9vbCByZXN1bHQgPSB0aGlzT2JqZWN0LT5zZXRMYXN0
SW5kZXgoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7Ci0gICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgc2xvdC5zZXRDdXN0
b21WYWx1ZSh0aGlzT2JqZWN0LCBzbG90LmlzU3RyaWN0TW9kZSgpCiAgICAgICAgICAgICA/IHJl
Z0V4cE9iamVjdFNldExhc3RJbmRleFN0cmljdAogICAgICAgICAgICAgOiByZWdFeHBPYmplY3RT
ZXRMYXN0SW5kZXhOb25TdHJpY3QpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KLSAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OnB1dChjZWxsLCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpKTsKKyAgICByZXR1cm4gQmFzZTo6cHV0KGNlbGws
IGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKIEpTVmFsdWUg
UmVnRXhwT2JqZWN0OjpleGVjKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU3RyaW5n
KiBzdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5o
CmluZGV4IGNiMzk0NWZmYmE0ZThjODA0NjZjN2JkZjg1YzNkNzM3MTdkOTljZGUuLmI2YzcxMDFi
Mjk5YzQxNmM5YTIxYjdiYTFiZGY3YTYxNzY2NGJlNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCkBAIC0zMCw3ICszMCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogY2xhc3MgUmVnRXhwT2JqZWN0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qg
ewogcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OwotICAgIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
cyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldE93blNwZWNpYWxQ
cm9wZXJ0eU5hbWVzIHwgT3ZlcnJpZGVzUHV0OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93
blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldE93blNwZWNpYWxQcm9wZXJ0eU5hbWVzOwogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAppbmRleCA5OTk1ODM1NjdkZjc5NWNm
Zjk1OTQ3NjgwYTcxMzk3ZDgwOTRjOGZiLi44NGYyYzViYmY3YzEyODZhZGFkZWNiYmE5M2Y4MTIz
YzUxOTQ1MmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09i
amVjdC5jcHAKQEAgLTY4LDEwICs2OCwxMSBAQCBib29sIFN0cmluZ09iamVjdDo6cHV0KEpTQ2Vs
bCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lCiAKICAg
ICBTdHJpbmdPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8U3RyaW5nT2JqZWN0Kj4oY2VsbCk7
CiAKKyAgICBpZiAoVU5MSUtFTFkoaXNUaGlzVmFsdWVBbHRlcmVkKHNsb3QsIHRoaXNPYmplY3Qp
KSkgCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgb3JkaW5hcnlTZXRTbG93KGds
b2JhbE9iamVjdCwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdC50aGlzVmFs
dWUoKSwgc2xvdC5pc1N0cmljdE1vZGUoKSkpOworCiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2
bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpCiAgICAgICAgIHJldHVybiB0eXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgc2xvdC5pc1N0cmljdE1vZGUoKSwgUmVhZG9ubHlQcm9wZXJ0eVdyaXRl
RXJyb3IpOwotICAgIGlmIChVTkxJS0VMWShzbG90LnRoaXNWYWx1ZSgpICE9IHRoaXNPYmplY3Qp
KQotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTT2JqZWN0OjpwdXQoY2VsbCwg
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSk7CiAgICAgaWYgKE9wdGlv
bmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgCiAgICAgICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcHV0QnlJbmRleChjZWxsLCBnbG9iYWxPYmplY3Qs
IGluZGV4LnZhbHVlKCksIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpKSk7CiAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU09iamVjdDo6cHV0KGNlbGwsIGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdPYmplY3QuaAppbmRleCAwMDM3ZjQ3MWI2Y2IzNTgzN2UzNzExNzc3MGJhM2Y5OTc4
ODQzOWM3Li45NGJhNjcyY2MxY2RhNTI0MTgyNDJlNjQzZjZhMTY0MDk4NTFjMTViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaApAQCAtMjgsNyArMjgs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIFN0cmluZ09iamVjdCA6IHB1YmxpYyBKU1dyYXBw
ZXJPYmplY3QgewogcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU1dyYXBwZXJPYmplY3Q7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0T3du
UHJvcGVydHlOYW1lcyB8IE92ZXJyaWRlc1B1dCB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm87CisgICAgc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlOYW1lcyB8IEludGVy
Y2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm87CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KICAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCmluZGV4IGE5MjM3OTI5NjQ2ZmI0ODFi
MDUzNDI2M2QyMmU3ZDcwMTM5OTRjZjIuLjljZGU0NjM0MTcyM2M3ZTQyZjFmOTE4ZDc3OTNjNDBl
YTUwOGU0ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
UHJvdG90eXBlLmNwcApAQCAtMTIxLDkgKzEyMSw5IEBAIFN0cmluZ1Byb3RvdHlwZTo6U3RyaW5n
UHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiB9CiAKLXZvaWQgU3Ry
aW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCit2b2lkIFN0cmluZ1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1N0cmluZyogbmFtZUFuZE1lc3NhZ2UpCiB7
Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIGpzRW1wdHlTdHJpbmcodm0pKTsKKyAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgbmFtZUFuZE1lc3NhZ2UpOwogICAgIEFTU0VSVChpbmhl
cml0cyh2bSwgaW5mbygpKSk7CiAKICAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9X
SVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmcsIHN0cmluZ1Byb3Rv
RnVuY1RvU3RyaW5nLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgMCwgU3RyaW5nUHJvdG90eXBlVmFsdWVPZkludHJpbnNpYyk7CkBAIC0xNjUsMTIg
KzE2NSwxNCBAQCB2b2lkIFN0cmluZ1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgaXRlcmF0b3JGdW5jdGlv
biwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwog
CiAgICAgLy8gVGhlIGNvbnN0cnVjdG9yIHdpbGwgYmUgYWRkZWQgbGF0ZXIsIGFmdGVyIFN0cmlu
Z0NvbnN0cnVjdG9yIGhhcyBiZWVuIGJ1aWx0CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIFByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAogU3RyaW5nUHJvdG90eXBlKiBTdHJpbmdQcm90
b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlKQogeworICAgIEpTU3RyaW5nKiBlbXB0eSA9IGpzRW1wdHlTdHJpbmco
dm0pOwogICAgIFN0cmluZ1Byb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8U3RyaW5nUHJvdG90eXBlPih2bS5oZWFwKSkgU3RyaW5nUHJvdG90eXBlKHZtLCBz
dHJ1Y3R1cmUpOwotICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVj
dCk7CisgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBlbXB0
eSk7CiAgICAgcmV0dXJuIHByb3RvdHlwZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuaAppbmRleCBlNmUyYzNjZWY3YWNkYmUwOWM5Nzgw
NDZhZjBkN2Y5ODg5YjFhMTRkLi40Y2UzMjY5Mzg3ZmQzMmY1NzdmMzVjMDYzYjhjYmU2YzBiOTQw
ODI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90
b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5
cGUuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nUHJv
dG90eXBlKFZNJiwgU3RydWN0dXJlKik7Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpT
R2xvYmFsT2JqZWN0Kik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgSlNTdHJpbmcqKTsKIH07CiBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShTdHJpbmdQcm90b3R5cGUsIFN0cmluZ09iamVjdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IGRiNzZmODc2MjA5YWM0NzdiNmViNmRiYzcw
OTIyMDMyZjRiNzIzZjcuLjhjNjYxNjE5MDNmZDAwZGMzOGQ2YzMxNTYwM2JiZGQ1ODQ2YWIzOWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtMTkw
LDYgKzE5MCwxMSBAQCB2b2lkIFN0cnVjdHVyZTo6dmFsaWRhdGVGbGFncygpCiAgICAgaWYgKG92
ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXgpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KHR5cGVJbmZvKCkuaW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxl
bmd0aElzTm90WmVybygpKTsKIAorICAgIGJvb2wgb3ZlcnJpZGVzUHV0UHJvcGVydHlTZWN1cml0
eUNoZWNrID0KKyAgICAgICAgbWV0aG9kVGFibGUuZG9QdXRQcm9wZXJ0eVNlY3VyaXR5Q2hlY2sg
IT0gSlNPYmplY3Q6OmRvUHV0UHJvcGVydHlTZWN1cml0eUNoZWNrCisgICAgICAgICYmIG1ldGhv
ZFRhYmxlLmRvUHV0UHJvcGVydHlTZWN1cml0eUNoZWNrICE9IEpTQ2VsbDo6ZG9QdXRQcm9wZXJ0
eVNlY3VyaXR5Q2hlY2s7CisgICAgUkVMRUFTRV9BU1NFUlQob3ZlcnJpZGVzUHV0UHJvcGVydHlT
ZWN1cml0eUNoZWNrID09IHR5cGVJbmZvKCkuaGFzUHV0UHJvcGVydHlTZWN1cml0eUNoZWNrKCkp
OworCiAgICAgYm9vbCBvdmVycmlkZXNHZXRPd25Qcm9wZXJ0eU5hbWVzID0KICAgICAgICAgbWV0
aG9kVGFibGUuZ2V0T3duUHJvcGVydHlOYW1lcyAhPSBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlO
YW1lcwogICAgICAgICAmJiBtZXRob2RUYWJsZS5nZXRPd25Qcm9wZXJ0eU5hbWVzICE9IEpTQ2Vs
bDo6Z2V0T3duUHJvcGVydHlOYW1lczsKQEAgLTIwNCwxOCArMjA5LDYgQEAgdm9pZCBTdHJ1Y3R1
cmU6OnZhbGlkYXRlRmxhZ3MoKQogICAgICAgICBtZXRob2RUYWJsZS5nZXRQcm90b3R5cGUgIT0g
c3RhdGljX2Nhc3Q8TWV0aG9kVGFibGU6OkdldFByb3RvdHlwZUZ1bmN0aW9uUHRyPihKU09iamVj
dDo6Z2V0UHJvdG90eXBlKQogICAgICAgICAmJiBtZXRob2RUYWJsZS5nZXRQcm90b3R5cGUgIT0g
SlNDZWxsOjpnZXRQcm90b3R5cGU7CiAgICAgUkVMRUFTRV9BU1NFUlQob3ZlcnJpZGVzR2V0UHJv
dG90eXBlID09IHR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0UHJvdG90eXBlKCkpOwotCi0gICAgYm9v
bCBvdmVycmlkZXNQdXQgPQotICAgICAgICBtZXRob2RUYWJsZS5wdXQgIT0gSlNPYmplY3Q6OnB1
dAotICAgICAgICAmJiBtZXRob2RUYWJsZS5wdXQgIT0gSlNDZWxsOjpwdXQ7Ci0gICAgUkVMRUFT
RV9BU1NFUlQob3ZlcnJpZGVzUHV0ID09IHR5cGVJbmZvKCkub3ZlcnJpZGVzUHV0KCkpOwotCi0g
ICAgYm9vbCBvdmVycmlkZXNEZWZpbmVPd25Qcm9wZXJ0eSA9Ci0gICAgICAgIG1ldGhvZFRhYmxl
LmRlZmluZU93blByb3BlcnR5ICE9IEpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eQotICAgICAg
ICAmJiBtZXRob2RUYWJsZS5kZWZpbmVPd25Qcm9wZXJ0eSAhPSBKU0NlbGw6OmRlZmluZU93blBy
b3BlcnR5OwotCi0gICAgaWYgKG92ZXJyaWRlc0RlZmluZU93blByb3BlcnR5KQotICAgICAgICBS
RUxFQVNFX0FTU0VSVChvdmVycmlkZXNQdXQpOwogfQogI2Vsc2UKIGlubGluZSB2b2lkIFN0cnVj
dHVyZTo6dmFsaWRhdGVGbGFncygpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuaAppbmRleCA5MzBjN2MzYWNjOTI5YjhhNWVjZGRkNzY3ZWYyOTJlMzdjNTAzZTI0
Li40Nzk3MzBjNmZmN2ZhNjgxMDVhZGFmNjgwNjFmMWQ0MDFkMWJkZGYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaApAQCAtMjY4LDExICsyNjgsNiBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICByZXR1cm4gdHlwZUluZm8oKS5nZXRPd25Qcm9wZXJ0eVNsb3RJ
c0ltcHVyZSgpOwogICAgIH0KLQotICAgIGJvb2wgaGFzTm9uUmVpZmllZFN0YXRpY1Byb3BlcnRp
ZXMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHR5cGVJbmZvKCkuaGFzU3RhdGljUHJv
cGVydHlUYWJsZSgpICYmICFzdGF0aWNQcm9wZXJ0aWVzUmVpZmllZCgpOwotICAgIH0KICAgICAK
ICAgICAvLyBUeXBlIGFjY2Vzc29ycy4KICAgICBUeXBlSW5mbyB0eXBlSW5mbygpIGNvbnN0IHsg
cmV0dXJuIG1fYmxvYi50eXBlSW5mbyhtX291dE9mTGluZVR5cGVGbGFncyk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRleCBmODgwYTRkNGY1YTQ1OWE1
Y2Q5ZTI3ODEyOGQyZmY5MDcyMDUyZGVkLi5kNjBmZWI1MjY3Nzg2NmU4MGQzODViOTI5YzhlNzEx
MTViNjNkZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xs
YXJWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3Bw
CkBAIC02ODksNiArNjg5LDExIEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihydW50aW1lQXJy
YXlMZW5ndGhHZXR0ZXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcih0aGlzT2JqZWN0LT5nZXRMZW5ndGgoKSkpOwogfQog
CitzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggc3RhdGljQ3VzdG9tQWNjZXNz
b3JUYWJsZUluZGV4WzJdID0geworICAgIHsgMCwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorfTsK
Kwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIodGVzdFN0YXRpY0FjY2Vzc29yR2V0
dGVyKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHRlc3RTdGF0aWNBY2Nlc3Nv
clB1dHRlcik7CiAKQEAgLTcwOSwzNiArNzE0LDE5IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
Uih0ZXN0U3RhdGljQWNjZXNzb3JQdXR0ZXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
CiB7CiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgCi0gICAgSlNWYWx1ZSByZWNlaXZlciA9IEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpOwotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gcmVjZWl2ZXIuaXNPYmplY3Qo
KSA/IGFzT2JqZWN0KHJlY2VpdmVyKSA6IHJlY2VpdmVyLnN5bnRoZXNpemVQcm90b3R5cGUoZ2xv
YmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
KyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwg
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIFJFTEVBU0VfQVNTRVJUKHRoaXNPYmpl
Y3QpOwogCiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPnB1dERpcmVjdCh2bSwgUHJvcGVydHlOYW1l
KElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0ZXN0RmllbGQiKSksIEpTVmFsdWU6OmRlY29k
ZSh2YWx1ZSkpOwogfQogCi1zdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggc3Rh
dGljQ3VzdG9tQWNjZXNzb3JUYWJsZUluZGV4WzldID0gewotICAgIHsgLTEsIC0xIH0sCi0gICAg
eyAtMSwgLTEgfSwKLSAgICB7IDIsIC0xIH0sCi0gICAgeyAtMSwgLTEgfSwKLSAgICB7IDAsIDgg
fSwKLSAgICB7IC0xLCAtMSB9LAotICAgIHsgLTEsIC0xIH0sCi0gICAgeyAtMSwgLTEgfSwKLSAg
ICB7IDEsIC0xIH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IEhhc2hUYWJsZVZhbHVlIHN0
YXRpY0N1c3RvbUFjY2Vzc29yVGFibGVWYWx1ZXNbM10gPSB7CitzdGF0aWMgY29uc3Qgc3RydWN0
IEhhc2hUYWJsZVZhbHVlIHN0YXRpY0N1c3RvbUFjY2Vzc29yVGFibGVWYWx1ZXNbMV0gPSB7CiAg
ICAgeyAidGVzdFN0YXRpY0FjY2Vzc29yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4odGVzdFN0YXRpY0FjY2Vzc29yR2V0
dGVyKSwgKGludHB0cl90KXN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
Pih0ZXN0U3RhdGljQWNjZXNzb3JQdXR0ZXIpIH0gfSwKLSAgICB7ICJ0ZXN0U3RhdGljQWNjZXNz
b3JEb250RW51bSIsIFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PEdldFZhbHVlRnVuYz4odGVzdFN0YXRpY0FjY2Vzc29yR2V0dGVyKSwgKGludHB0cl90KXN0YXRp
Y19jYXN0PFB1dFZhbHVlRnVuYz4odGVzdFN0YXRpY0FjY2Vzc29yUHV0dGVyKSB9IH0sCi0gICAg
eyAidGVzdFN0YXRpY0FjY2Vzc29yUmVhZE9ubHkiLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxHZXRWYWx1
ZUZ1bmM+KHRlc3RTdGF0aWNBY2Nlc3NvckdldHRlciksIDAgfSB9LAogfTsKIAogc3RhdGljIGNv
bnN0IHN0cnVjdCBIYXNoVGFibGUgc3RhdGljQ3VzdG9tQWNjZXNzb3JUYWJsZSA9Ci0gICAgeyAz
LCA3LCB0cnVlLCBudWxscHRyLCBzdGF0aWNDdXN0b21BY2Nlc3NvclRhYmxlVmFsdWVzLCBzdGF0
aWNDdXN0b21BY2Nlc3NvclRhYmxlSW5kZXggfTsKKyAgICB7IDEsIDEsIHRydWUsIG51bGxwdHIs
IHN0YXRpY0N1c3RvbUFjY2Vzc29yVGFibGVWYWx1ZXMsIHN0YXRpY0N1c3RvbUFjY2Vzc29yVGFi
bGVJbmRleCB9OwogCiBjbGFzcyBTdGF0aWNDdXN0b21BY2Nlc3NvciA6IHB1YmxpYyBKU05vbkZp
bmFsT2JqZWN0IHsKICAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKQEAgLTgwMywy
NSArNzkxLDE3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUih0ZXN0U3RhdGljVmFsdWVQdXR0
ZXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFCiAgICAgcmV0dXJuIHRoaXNPYmpl
Y3QtPnB1dERpcmVjdCh2bSwgUHJvcGVydHlOYW1lKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJ0ZXN0U3RhdGljVmFsdWUiKSksIEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkpOwogfQogCi1zdGF0
aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggc3RhdGljQ3VzdG9tVmFsdWVUYWJsZUlu
ZGV4WzhdID0gewotICAgIHsgMSwgLTEgfSwKLSAgICB7IC0xLCAtMSB9LAotICAgIHsgLTEsIC0x
IH0sCi0gICAgeyAtMSwgLTEgfSwKLSAgICB7IC0xLCAtMSB9LAotICAgIHsgMiwgLTEgfSwKK3N0
YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBzdGF0aWNDdXN0b21WYWx1ZVRhYmxl
SW5kZXhbMl0gPSB7CiAgICAgeyAwLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiB9OwogCi1zdGF0
aWMgY29uc3Qgc3RydWN0IEhhc2hUYWJsZVZhbHVlIHN0YXRpY0N1c3RvbVZhbHVlVGFibGVWYWx1
ZXNbM10gPSB7Ci0gICAgeyAidGVzdFN0YXRpY1ZhbHVlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21WYWx1ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxHZXRWYWx1ZUZ1bmM+KHRlc3RTdGF0aWNWYWx1ZUdldHRlciksIChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQdXRWYWx1ZUZ1bmM+KHRlc3RTdGF0aWNWYWx1ZVB1dHRlcikgfSB9
LAotICAgIHsgInRlc3RTdGF0aWNWYWx1ZU5vU2V0dGVyIiwgUHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbVZhbHVlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8R2V0VmFsdWVGdW5jPih0ZXN0U3RhdGljVmFsdWVHZXR0ZXIp
LCAwIH0gfSwKLSAgICB7ICJ0ZXN0U3RhdGljVmFsdWVSZWFkT25seSIsIFByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21WYWx1ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PEdldFZhbHVlRnVuYz4odGVzdFN0YXRpY1ZhbHVlR2V0dGVyKSwgMCB9IH0sCitzdGF0aWMgY29u
c3Qgc3RydWN0IEhhc2hUYWJsZVZhbHVlIHN0YXRpY0N1c3RvbVZhbHVlVGFibGVWYWx1ZXNbMV0g
PSB7CisgICAgeyAidGVzdFN0YXRpY1ZhbHVlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4odGVzdFN0YXRpY1ZhbHVlR2V0
dGVyKSwgKGludHB0cl90KXN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
Pih0ZXN0U3RhdGljVmFsdWVQdXR0ZXIpIH0gfSwKIH07CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg
SGFzaFRhYmxlIHN0YXRpY0N1c3RvbVZhbHVlVGFibGUgPQotICAgIHsgMywgNywgdHJ1ZSwgbnVs
bHB0ciwgc3RhdGljQ3VzdG9tVmFsdWVUYWJsZVZhbHVlcywgc3RhdGljQ3VzdG9tVmFsdWVUYWJs
ZUluZGV4IH07CisgICAgeyAxLCAxLCB0cnVlLCBudWxscHRyLCBzdGF0aWNDdXN0b21WYWx1ZVRh
YmxlVmFsdWVzLCBzdGF0aWNDdXN0b21WYWx1ZVRhYmxlSW5kZXggfTsKIAogY2xhc3MgU3RhdGlj
Q3VzdG9tVmFsdWUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgdXNpbmcgQmFzZSA9
IEpTTm9uRmluYWxPYmplY3Q7CkBAIC04NTksNyArODM5LDYgQEAgcHVibGljOgogCiBjbGFzcyBP
YmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXMgOiBwdWJsaWMg
SlNOb25GaW5hbE9iamVjdCB7CiAgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgT3ZlcnJpZGVzUHV0OwogcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgQ29tcGxldGVTdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDczMWU0ZGY1Njk4Zjc2MzIyZWY1ZGFjOTRmZmMwYzhk
MGNhYTc1ZTQuLmRiYmNmMWM4ZDFkNjliNTVmMWY3ZTIxNzEzMzA1NzA3ZWQwNTNiZTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAg
LTI0OCw2ICsyNDgsMjMgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90QnlJ
bmRleChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGUKICAgICByZXR1cm4gQmFz
ZTo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBpbmRleCwgc2xvdCk7CiB9CiAKK3ZvaWQgSlNET01XaW5kb3c6OmRvUHV0UHJvcGVydHlT
ZWN1cml0eUNoZWNrKEpTT2JqZWN0KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHV0UHJvcGVydHlTbG90JikKK3sK
KyAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNET01XaW5kb3cqPihjZWxsKTsKKworICAgIFN0cmluZyBlcnJvck1lc3NhZ2U7CisgICAg
aWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QtPndyYXBwZWQoKSwgZXJyb3JNZXNzYWdlKSkgewor
ICAgICAgICAvLyBXZSBvbmx5IGFsbG93IHNldHRpbmcgImxvY2F0aW9uIiBhdHRyaWJ1dGUgY3Jv
c3Mtb3JpZ2luLgorICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IHN0YXRpY19jYXN0PEpTVk1D
bGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLmxvY2F0aW9uUHVibGlj
TmFtZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aHJvd1NlY3VyaXR5RXJyb3Io
KmxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2UpOworICAgICAgICByZXR1
cm47CisgICAgfQorfQorCiBib29sIEpTRE9NV2luZG93OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9
IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0yNTUsMTAgKzI3MiwxNyBAQCBib29sIEpT
RE9NV2luZG93OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgUHJvcGVydAogCiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdp
bmRvdyo+KGNlbGwpOwogCi0gICAgaWYgKHByb3BlcnR5TmFtZSAhPSBzdGF0aWNfY2FzdDxKU1ZN
Q2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5sb2NhdGlvblB1Ymxp
Y05hbWUoKSkgeworICAgIFN0cmluZyBlcnJvck1lc3NhZ2U7CisgICAgaWYgKCFCaW5kaW5nU2Vj
dXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNPYmplY3QtPndyYXBwZWQoKSwgZXJyb3JNZXNzYWdlKSkgewogICAgICAgICAvLyBXZSBv
bmx5IGFsbG93IHNldHRpbmcgImxvY2F0aW9uIiBhdHRyaWJ1dGUgY3Jvc3Mtb3JpZ2luLgotICAg
ICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LT53cmFwcGVkKCksIFRocm93U2VjdXJpdHlF
cnJvcikpCisgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVu
dERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkubG9jYXRpb25QdWJsaWNOYW1l
KCkpIHsKKyAgICAgICAgICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7CisgICAgICAgICAgICBp
ZiAobG9va3VwUHV0KGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdGhpc09iamVj
dCwgdmFsdWUsICpzX2luZm8uc3RhdGljUHJvcEhhc2hUYWJsZSwgc2xvdCwgcHV0UmVzdWx0KSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gcHV0UmVzdWx0OwogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9CisgICAgICAgIHRocm93U2VjdXJpdHlFcnJvcigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgc2NvcGUsIGVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OnB1dCh0aGlzT2JqZWN0
LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCmluZGV4IDlj
M2Q0YmIwYmMyODk4NGFkNzI5N2FhNWRjNzRmMTdmNDI5YzZlOGIuLjdmN2ZkZjFmYWFlNjUxM2Iz
N2Y4YmZlN2Y5MTU3YjFiOTAwMDRjODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCkBAIC0xMDgsNiArMTA4LDIzIEBAIGJvb2wgSlNMb2Nh
dGlvbjo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBKU0dsb2Jh
bE9iamVjdCogbGV4CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU09iamVjdDo6Z2V0
T3duUHJvcGVydHlTbG90QnlJbmRleChvYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIGluZGV4
LCBzbG90KSk7CiB9CiAKK3ZvaWQgSlNMb2NhdGlvbjo6ZG9QdXRQcm9wZXJ0eVNlY3VyaXR5Q2hl
Y2soSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFB1dFByb3BlcnR5U2xvdCYpCit7CisgICAgYXV0
byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0xvY2F0aW9uKj4ob2JqZWN0KTsKKyAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisKKyAgICBWTSYgdm0gPSBs
ZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpOworCisgICAgLy8gQWx3YXlzIGFsbG93IGFzc2lnbmlu
ZyB0byB0aGUgd2hvbGUgbG9jYXRpb24uCisgICAgLy8gSG93ZXZlciwgYWxsbG93aW5nIGFzc2ln
bmluZyBvZiBwaWVjZXMgbWlnaHQgaW5hZHZlcnRlbnRseSBkaXNjbG9zZSBwYXJ0cyBvZiB0aGUg
b3JpZ2luYWwgbG9jYXRpb24uCisgICAgLy8gU28gZmFsbCB0aHJvdWdoIHRvIHRoZSBhY2Nlc3Mg
Y2hlY2sgZm9yIHRob3NlLgorICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gc3RhdGljX2Nhc3Q8SlNW
TUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuaHJlZlB1YmxpY05h
bWUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gQmxvY2sgYWNjZXNzIGFuZCB0aHJvdyBp
ZiB0aGVyZSBpcyBhIHNlY3VyaXR5IGVycm9yLgorICAgIEJpbmRpbmdTZWN1cml0eTo6c2hvdWxk
QWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LT53
cmFwcGVkKCkud2luZG93KCksIFRocm93U2VjdXJpdHlFcnJvcik7Cit9CisKIGJvb2wgSlNMb2Nh
dGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYgcHV0UHJvcGVydHlTbG90KQogewogICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmpl
Y3QtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlbW90
ZURPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlbW90
ZURPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggMjViNDEzMmM3OWMyNWM3MjM1OGZmNWJhYmM0MWYx
NWJlOTY3NDIzNi4uMTkyMTA1YzMxOWY1YmM5MDJlY2Q2MzRiNjI4OWI4YzgzYzBmMzlhZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZW1vdGVET01XaW5kb3dDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVtb3RlRE9NV2luZG93
Q3VzdG9tLmNwcApAQCAtNjgsMTIgKzY4LDExIEBAIGJvb2wgSlNSZW1vdGVET01XaW5kb3c6OnB1
dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBQCiAK
ICAgICAvLyBXZSBvbmx5IGFsbG93IHNldHRpbmcgImxvY2F0aW9uIiBhdHRyaWJ1dGUgY3Jvc3Mt
b3JpZ2luLgogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERh
dGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkubG9jYXRpb25QdWJsaWNOYW1lKCkp
IHsKLSAgICAgICAgYXV0byogc2V0dGVyID0gc19pbmZvLnN0YXRpY1Byb3BIYXNoVGFibGUtPmVu
dHJ5KHByb3BlcnR5TmFtZSktPnByb3BlcnR5UHV0dGVyKCk7Ci0gICAgICAgIHNjb3BlLnJlbGVh
c2UoKTsKLSAgICAgICAgc2V0dGVyKGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWU6OmVuY29k
ZShzbG90LnRoaXNWYWx1ZSgpKSwgSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKSwgcHJvcGVydHlOYW1l
KTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7
CisgICAgICAgIGlmIChsb29rdXBQdXQobGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCB0aGlzT2JqZWN0LCB2YWx1ZSwgKnNfaW5mby5zdGF0aWNQcm9wSGFzaFRhYmxlLCBzbG90LCBw
dXRSZXN1bHQpKQorICAgICAgICAgICAgcmV0dXJuIHB1dFJlc3VsdDsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KLQogICAgIHRocm93U2VjdXJpdHlFcnJvcigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgc2NvcGUsIGVycm9yTWVzc2FnZSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0g
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRl
eCAzZTI1NjFmYTNjOTZiNzI4OTFlYWIyNDIwYTYwNWY4MzQ1NmM3MGU1Li43M2E4ZjIxOTJlYzIz
ODNhYmRkZDkxODE3NzY5YjU1NTcxOTFjMTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMTE3Myw4ICsxMTczLDYgQEAg
c3ViIEdlbmVyYXRlUHV0CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAie1xuIik7CiAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtjbGFzc05h
bWV9Kj4oY2VsbCk7XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpO1xuXG4iKTsKLSAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgaWYgKFVOTElLRUxZKHRoaXNPYmplY3QgIT0gcHV0UHJvcGVydHlT
bG90LnRoaXNWYWx1ZSgpKSlcbiIpOwotICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAg
cmV0dXJuIEpTT2JqZWN0OjpwdXQodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgcHV0UHJvcGVydHlTbG90KTtcbiIpOwogCiAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUobGV4
aWNhbEdsb2JhbE9iamVjdC0+dm0oKSk7XG5cbiIpOwogCkBAIC0yOTUyLDYgKzI5NTAsMTEgQEAg
c3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpJbnRlcmNl
cHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIn0gPSAx
OwogICAgIH0KIAorICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDaGVj
a1NlY3VyaXR5fSkgeworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2
b2lkIGRvUHV0UHJvcGVydHlTZWN1cml0eUNoZWNrKEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7XG4i
KTsKKyAgICAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6Okhhc1B1dFByb3BlcnR5U2VjdXJpdHlD
aGVjayJ9ID0gMTsKKyAgICB9CisKICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57UGx1Z2lufSB8fCBHZXROYW1lZFNldHRlck9wZXJhdGlvbigkaW50ZXJmYWNlKSkgewog
ICAgICAgICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6UHJvaGliaXRzUHJvcGVydHlDYWNoaW5nIn0g
PSAxOwogICAgIH0KQEAgLTI5NjQsNyArMjk2Nyw2IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAg
IGlmIChJbnN0YW5jZU92ZXJyaWRlc1B1dCgkaW50ZXJmYWNlKSkgewogICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIHB1dChKU0M6OkpTQ2VsbCosIEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFBy
b3BlcnR5U2xvdCYpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3Rh
dGljIGJvb2wgcHV0QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCB1
bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7XG4i
KTsKLSAgICAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6Ok92ZXJyaWRlc1B1dCJ9ID0gMTsKICAg
ICB9CiAgICAgCiAgICAgaWYgKEluc3RhbmNlT3ZlcnJpZGVzRGVmaW5lT3duUHJvcGVydHkoJGlu
dGVyZmFjZSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3REb21haW5TZWN1cml0eS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdERvbWFpblNlY3VyaXR5LmgKaW5kZXggYjA5Y2IxY2U1NGE0
YjAyZmM1OWEzNTdiZDEzMzc1YjMyMGY2M2NlZi4uMDNjNGU0Y2JlNTMxZjk3ZTI1NmYxNDI5NWMz
NzgyMzhlNDYxZTc4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdERvbWFpblNlY3VyaXR5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERvbWFpblNlY3VyaXR5LmgKQEAgLTM5LDYgKzM5
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUo
SlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3Qq
IHByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKICAgICBzdGF0aWMgVGVz
dERvbWFpblNlY3VyaXR5KiB0b1dyYXBwZWQoSlNDOjpWTSYsIEpTQzo6SlNWYWx1ZSk7CisgICAg
c3RhdGljIHZvaWQgZG9QdXRQcm9wZXJ0eVNlY3VyaXR5Q2hlY2soSlNDOjpKU09iamVjdCosIEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQdXRQcm9wZXJ0eVNs
b3QmKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAKICAgICBERUNM
QVJFX0lORk87CkBAIC01OCw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBh
bmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwogcHVibGljOgotICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVG
bGFncyB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6Okhh
c1B1dFByb3BlcnR5U2VjdXJpdHlDaGVjayB8IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZTsK
IHByb3RlY3RlZDoKICAgICBKU1Rlc3REb21haW5TZWN1cml0eShKU0M6OlN0cnVjdHVyZSosIEpT
RE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3REb21haW5TZWN1cml0eT4mJik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVk
U2V0dGVyTm9JZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAppbmRleCAyZmFkMWJl
NjRjMzI1NTA1ZmEyOTE2MDM0MTJjMjcxMTQyNzMzMzU3Li4zYWUyNWRhYjgyNDZjZTA2NzBlOTU5
MGVkNjY4Y2JiNGNmNjMyMmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0
ZXJOb0lkZW50aWZpZXIuY3BwCkBAIC0xOTksOCArMTk5LDYgQEAgYm9vbCBKU1Rlc3RJbmRleGVk
U2V0dGVyTm9JZGVudGlmaWVyOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEcKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdEluZGV4ZWRTZXR0ZXJO
b0lkZW50aWZpZXIqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsIGluZm8oKSk7CiAKLSAgICBpZiAoVU5MSUtFTFkodGhpc09iamVjdCAhPSBwdXRQcm9w
ZXJ0eVNsb3QudGhpc1ZhbHVlKCkpKQotICAgICAgICByZXR1cm4gSlNPYmplY3Q6OnB1dCh0aGlz
T2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBwdXRQcm9w
ZXJ0eVNsb3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUobGV4
aWNhbEdsb2JhbE9iamVjdC0+dm0oKSk7CiAKICAgICBpZiAoYXV0byBpbmRleCA9IHBhcnNlSW5k
ZXgocHJvcGVydHlOYW1lKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyTm9J
ZGVudGlmaWVyLmgKaW5kZXggNDAwZjQxNzAxOTQ5ZTc3MmU1NWZhZDk5ZWFjY2EwMTcyYmZkYTgy
ZC4uNzY0YjMyYmE1MDZmZDkyMWU5Y2FiYzQzNDY4YWY3N2VjMGJlODA0YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0
ZXJOb0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5oCkBAIC02NCw3ICs2NCw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpT
Qzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6Okhl
YXBBbmFseXplciYpOwogcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6SW50ZXJjZXB0c0dldE93
blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJp
ZGVzR2V0T3duUHJvcGVydHlOYW1lcyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90
IHwgSlNDOjpPdmVycmlkZXNQdXQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3du
UHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eU5hbWVzIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7
CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcihKU0M6OlN0
cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RJbmRleGVkU2V0dGVyTm9JZGVu
dGlmaWVyPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uLmNwcAppbmRleCBkN2U2OTNjYjI5YzEyMWQ2ZDdhZTZhOWRmNDNhMDdl
NDYyNDU5NmNlLi40ZGI0NDg0NzNkOGM5MDNiNjczYmRlODdjN2I3ZWRmMGZhYWVlMDhiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5k
ZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9u
LmNwcApAQCAtMTk5LDggKzE5OSw2IEBAIGJvb2wgSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5n
RXhjZXB0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4CiAgICAgYXV0
byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24qPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGlu
Zm8oKSk7CiAKLSAgICBpZiAoVU5MSUtFTFkodGhpc09iamVjdCAhPSBwdXRQcm9wZXJ0eVNsb3Qu
dGhpc1ZhbHVlKCkpKQotICAgICAgICByZXR1cm4gSlNPYmplY3Q6OnB1dCh0aGlzT2JqZWN0LCBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBwdXRQcm9wZXJ0eVNsb3Qp
OwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUobGV4aWNhbEdsb2Jh
bE9iamVjdC0+dm0oKSk7CiAKICAgICBpZiAoYXV0byBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVy
dHlOYW1lKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbi5oCmluZGV4IGIxZDdmYzE0NzE5YjRkODZiMWNhODYwYzA4YWI2YWU5MmM3YjE4
NGIuLjZjYTQ0NTU3NmI0Nzc1ZGMxM2E5NjU1YWRjNjU3Mzc0MmUwYzFmOTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmgKQEAgLTY0
LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2Vs
bCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpJbnRl
cmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwg
SlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eU5hbWVzIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Q
cm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc1B1dDsKKyAgICBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkludGVy
Y2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBK
U0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5TmFtZXMgfCBKU0M6Ok92ZXJyaWRlc0dldE93blBy
b3BlcnR5U2xvdDsKIHByb3RlY3RlZDoKICAgICBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb24oSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0SW5k
ZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRl
bnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAppbmRleCBkNzdmMTQ2ZjgzMGM1M2Vm
MTk0YzNjNTgzYTZhNGEzNzNmYWQyM2Y4Li42OGIwN2Q0MGYyNzY1NDRkYWY5OTUzODVhNGNjZjcz
MTUzMjk1MzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJ
ZGVudGlmaWVyLmNwcApAQCAtMjA4LDggKzIwOCw2IEBAIGJvb2wgSlNUZXN0SW5kZXhlZFNldHRl
cldpdGhJZGVudGlmaWVyOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNh
CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElk
ZW50aWZpZXIqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmpl
Y3QsIGluZm8oKSk7CiAKLSAgICBpZiAoVU5MSUtFTFkodGhpc09iamVjdCAhPSBwdXRQcm9wZXJ0
eVNsb3QudGhpc1ZhbHVlKCkpKQotICAgICAgICByZXR1cm4gSlNPYmplY3Q6OnB1dCh0aGlzT2Jq
ZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBwdXRQcm9wZXJ0
eVNsb3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUobGV4aWNh
bEdsb2JhbE9iamVjdC0+dm0oKSk7CiAKICAgICBpZiAoYXV0byBpbmRleCA9IHBhcnNlSW5kZXgo
cHJvcGVydHlOYW1lKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRo
SWRlbnRpZmllci5oCmluZGV4IGIxYWU5ZWU2ZTFkMGMyOTRiNGQ4MGZlZjdlZTM2ZDA1NzNmYTc5
MGEuLjlhMmI2MzYyNGY5M2FjMDNhNjI4ZDJkMzEzM2RjY2FiM2E1NGMyMDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0
dGVyV2l0aElkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmgKQEAgLTY0LDcgKzY0
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcklt
cGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpT
Qzo6SGVhcEFuYWx5emVyJik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpJbnRlcmNlcHRz
R2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpP
dmVycmlkZXNHZXRPd25Qcm9wZXJ0eU5hbWVzIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0
eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc1B1dDsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkludGVyY2VwdHNH
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92
ZXJyaWRlc0dldE93blByb3BlcnR5TmFtZXMgfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5
U2xvdDsKIHByb3RlY3RlZDoKICAgICBKU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIo
SlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0SW5kZXhlZFNldHRl
cldpdGhJZGVudGlmaWVyPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCmluZGV4IDNhOTFmNDdhZTU0
YzI1MmE4NjNmOWVhZGZjYzg4ZGY0MWUwN2VlZTcuLmJjNTc3Y2IwYWVhZjY1Y2Y1Y2ZiYjQ1OGI5
OTk1MzcxMmEwN2E2ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmgKQEAgLTgzLDggKzgzLDYgQEAgcHVi
bGljOgogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogICAg
IEpTQzo6SlNWYWx1ZSBzdXBwbGVtZW50YWxNZXRob2QzKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBK
U0M6OkNhbGxGcmFtZSYpOwogI2VuZGlmCi1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpPdmVy
cmlkZXNQdXQ7CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0SW50ZXJmYWNlKEpTQzo6U3RydWN0dXJl
KiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdEludGVyZmFjZT4mJik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5j
cHAKaW5kZXggYmJmMmYzMzEwMGQwNzZlNjAyMTJhZWI2ZGRlNzg0YjEwMzdjZWM2MS4uYTdhMzE1
MGI1NThkMjdmNzU1NmNjMWUzYjRhMjc5M2E0MjYyM2EwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
ck5vSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAKQEAgLTIy
NSw4ICsyMjUsNiBAQCBib29sIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmll
cjo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqCiAgICAgYXV0byogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIqPihjZWxs
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAK
LSAgICBpZiAoVU5MSUtFTFkodGhpc09iamVjdCAhPSBwdXRQcm9wZXJ0eVNsb3QudGhpc1ZhbHVl
KCkpKQotICAgICAgICByZXR1cm4gSlNPYmplY3Q6OnB1dCh0aGlzT2JqZWN0LCBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBwdXRQcm9wZXJ0eVNsb3QpOwogICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUobGV4aWNhbEdsb2JhbE9iamVjdC0+
dm0oKSk7CiAKICAgICBpZiAoYXV0byBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRl
bnRpZmllci5oCmluZGV4IDdhZjc3MjE4ZDgxMTY3MGMwNDg5YmY5NDc2ZjhlODVlMGFkZDFiODEu
Ljg5MWM4YTFiNDEzMThmNzAwZmEyMGM3YmQxODE4NmY3ZDQ1YWQxOTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJOb0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmgKQEAg
LTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpT
Q2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpH
ZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50ZXJj
ZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpT
Qzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlOYW1lcyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJv
cGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNQdXQgfCBKU0M6OlByb2hpYml0c1Byb3BlcnR5Q2Fj
aGluZzsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJv
cGVydHlBYnNlbmNlIHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2
ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eU5hbWVz
IHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6OlByb2hpYml0c1Byb3Bl
cnR5Q2FjaGluZzsKIHByb3RlY3RlZDoKICAgICBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJO
b0lkZW50aWZpZXIoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
bi5jcHAKaW5kZXggN2U1MmY1N2VkZmMxMTMxYjI4MjIwYjhmZGQ1OThhZGFmOWFmZjM4Mi4uNjU3
ZmIxYjE1Zjk1OWMxNDE0NzMzMjg3NGNkOWRhMzI4MmQzN2UwMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRp
b24uY3BwCkBAIC0yMjUsOCArMjI1LDYgQEAgYm9vbCBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmoKICAgICBh
dXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93
aW5nRXhjZXB0aW9uKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlz
T2JqZWN0LCBpbmZvKCkpOwogCi0gICAgaWYgKFVOTElLRUxZKHRoaXNPYmplY3QgIT0gcHV0UHJv
cGVydHlTbG90LnRoaXNWYWx1ZSgpKSkKLSAgICAgICAgcmV0dXJuIEpTT2JqZWN0OjpwdXQodGhp
c09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgcHV0UHJv
cGVydHlTbG90KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGxl
eGljYWxHbG9iYWxPYmplY3QtPnZtKCkpOwogCiAgICAgaWYgKGF1dG8gaW5kZXggPSBwYXJzZUlu
ZGV4KHByb3BlcnR5TmFtZSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmgKaW5kZXggODQxYTFkZmM4Yjll
Yjk0MDQxNmY1MDJkMWViOTkxZTNkNWNiNWM2Mi4uMTVmMWIwMGYzZWY5NTUzMGMwM2IwYmYyOWNk
MjQ1YTI0OTRjODVmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpW
TSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFu
YWx5emVyJik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJ
c0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5
U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3du
UHJvcGVydHlOYW1lcyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpP
dmVycmlkZXNQdXQgfCBKU0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsKKyAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlIHwgSlND
OjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3Ra
ZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eU5hbWVzIHwgSlNDOjpPdmVycmlkZXNH
ZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsKIHByb3Rl
Y3RlZDoKICAgICBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbihK
U0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbj4mJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCmluZGV4IDM3
ZDQxZDhlMmE1MTExMWRjYjE0MTVkOTYxNzZkOWViN2E3N2U3ODMuLjllZjI5YjhkZjhhZGJiMTE5
YWY2ZWRkODZiNzNkMzBlYmM2ZGM2YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRp
Zmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcApAQCAtMjM2LDggKzIz
Niw2IEBAIGJvb2wgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6OnB1
dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcio+KGNlbGwpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKIAotICAg
IGlmIChVTkxJS0VMWSh0aGlzT2JqZWN0ICE9IHB1dFByb3BlcnR5U2xvdC50aGlzVmFsdWUoKSkp
Ci0gICAgICAgIHJldHVybiBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHB1dFByb3BlcnR5U2xvdCk7CiAgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgp
KTsKIAogICAgIGlmIChhdXRvIGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRl
bnRpZmllci5oCmluZGV4IGM4OGU5NzIyOTFkYzA2Yzg1OWQzMWM2ODAyY2E5NGRkNDNjMjNiMjQu
LjQwYWRjMDczZWM1ZWJkM2U0NDFhMzYxYjU2ZDNjYjg0NTVkZTgxOTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5o
CkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVh
cChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwogcHVibGljOgotICAgIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpT
Qzo6R2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmVGb3JQcm9wZXJ0eUFic2VuY2UgfCBKU0M6Oklu
dGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8g
fCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5TmFtZXMgfCBKU0M6Ok92ZXJyaWRlc0dldE93
blByb3BlcnR5U2xvdCB8IEpTQzo6T3ZlcnJpZGVzUHV0IHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0
eUNhY2hpbmc7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZv
clByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5k
ZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlO
YW1lcyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpQcm9oaWJpdHNQ
cm9wZXJ0eUNhY2hpbmc7CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyV2l0aElkZW50aWZpZXIoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJl
ZjxUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI+JiYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJOb0lkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAppbmRleCA3MWI3MjIzOGE3
Nzk3YjA5ODUyNjg0NWM5NmZlNmE1YzRjZDM3YzU3Li4yNWY5M2U2MmNhNTI2ZDQ0OGY1YTY3YmJm
OTkwZmI3NzAyZGZiYjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRl
bnRpZmllci5jcHAKQEAgLTIwNCw4ICsyMDQsNiBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyTm9J
ZGVudGlmaWVyOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsbwog
ICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZp
ZXIqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGlu
Zm8oKSk7CiAKLSAgICBpZiAoVU5MSUtFTFkodGhpc09iamVjdCAhPSBwdXRQcm9wZXJ0eVNsb3Qu
dGhpc1ZhbHVlKCkpKQotICAgICAgICByZXR1cm4gSlNPYmplY3Q6OnB1dCh0aGlzT2JqZWN0LCBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBwdXRQcm9wZXJ0eVNsb3Qp
OwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUobGV4aWNhbEdsb2Jh
bE9iamVjdC0+dm0oKSk7CiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5oCmluZGV4IGIzMmQwODYw
OTdmZmJiNGUzYzg3N2QzZjg2ZDNmZWZhMDU3YWI2YjUuLjFhZmFjYzg0MzdlYmE3MzhiMjQ3N2E4
MDU5NmQyNjRiYTM5YzdiYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRl
bnRpZmllci5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBh
bmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwogcHVibGljOgotICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVG
bGFncyB8IEpTQzo6R2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmVGb3JQcm9wZXJ0eUFic2VuY2Ug
fCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJ
c05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5TmFtZXMgfCBKU0M6Ok92ZXJy
aWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6T3ZlcnJpZGVzUHV0IHwgSlNDOjpQcm9oaWJp
dHNQcm9wZXJ0eUNhY2hpbmc7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJ
c0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5
U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3du
UHJvcGVydHlOYW1lcyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpQ
cm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0TmFtZWRTZXR0
ZXJOb0lkZW50aWZpZXIoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxU
ZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXI+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKaW5kZXggNDcwMzk0MzhhNzIzOGE2
YWUwYTE1NTQzYWE4ODI3ZDdiMzE5ZDUyYi4uNTNiZmI0OTZhYTQ2MTk2ZjUyNWFkOGE1ZWRjMDJk
MjE1ZTYyNjUyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93
aW5nRXhjZXB0aW9uLmNwcApAQCAtMjA0LDggKzIwNCw2IEBAIGJvb2wgSlNUZXN0TmFtZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGxl
eGljCiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNldHRlclRocm93
aW5nRXhjZXB0aW9uKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlz
T2JqZWN0LCBpbmZvKCkpOwogCi0gICAgaWYgKFVOTElLRUxZKHRoaXNPYmplY3QgIT0gcHV0UHJv
cGVydHlTbG90LnRoaXNWYWx1ZSgpKSkKLSAgICAgICAgcmV0dXJuIEpTT2JqZWN0OjpwdXQodGhp
c09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgcHV0UHJv
cGVydHlTbG90KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGxl
eGljYWxHbG9iYWxPYmplY3QtPnZtKCkpOwogCiAgICAgaWYgKCFwcm9wZXJ0eU5hbWUuaXNTeW1i
b2woKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0
aW9uLmgKaW5kZXggMjAyZmI5MDdjYzE5YzkwMjMyOWNjYjliOTJhZWYyNDg2NWY4ODNiMi4uYjhj
NjdhYzY4MjFiYjVkNWZmNGM4OGIwMDI3YjQ4MWE1NTQ5NmJiOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCkBAIC02NCw3ICs2NCw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpT
Qzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6Okhl
YXBBbmFseXplciYpOwogcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0T3duUHJvcGVydHlT
bG90SXNJbXB1cmVGb3JQcm9wZXJ0eUFic2VuY2UgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dl
dE93blByb3BlcnR5TmFtZXMgfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpT
Qzo6T3ZlcnJpZGVzUHV0IHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZs
YWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSB8
IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElz
Tm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlOYW1lcyB8IEpTQzo6T3ZlcnJp
ZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7CiBw
cm90ZWN0ZWQ6CiAgICAgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbihKU0M6OlN0
cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3ROYW1lZFNldHRlclRocm93aW5n
RXhjZXB0aW9uPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElk
ZW50aWZpZXIuY3BwCmluZGV4IDk1MjMzZDczNzk0ODgzYjM3ZGYxYjliNDE0OWQ5OWFkMmZjY2Yz
MzUuLjNkOWNlMWJkNDdlZDEzNzU3OWQxMmJkMDIxOTY1ZWM0YjY1YTEyMWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhJZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKQEAgLTIxMiw4ICsy
MTIsNiBAQCBib29sIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI6OnB1dChKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsRwogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcio+KGNlbGwpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKIAotICAgIGlmIChVTkxJ
S0VMWSh0aGlzT2JqZWN0ICE9IHB1dFByb3BlcnR5U2xvdC50aGlzVmFsdWUoKSkpCi0gICAgICAg
IHJldHVybiBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHB1dFByb3BlcnR5U2xvdCk7CiAgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRShsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpKTsKIAogICAg
IGlmICghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlm
aWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oCmluZGV4IGI1Yjc5MWJkZWZiZDMzNDFlNGRiNjA1YmQ1
NjY1MDUyMGZiOTJlMjEuLjk1ZmZlMTQ1NzIyZTBiYzg2M2E3NDcyNmEwMGJkYzMwMTc0NTJjNmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuaApAQCAt
NjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlND
ZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6Okdl
dE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlIHwgSlNDOjpJbnRlcmNl
cHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlND
OjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eU5hbWVzIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9w
ZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc1B1dCB8IEpTQzo6UHJvaGliaXRzUHJvcGVydHlDYWNo
aW5nOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNl
OjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmVGb3JQcm9w
ZXJ0eUFic2VuY2UgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZl
bldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5TmFtZXMg
fCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6UHJvaGliaXRzUHJvcGVy
dHlDYWNoaW5nOwogcHJvdGVjdGVkOgogICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZp
ZXIoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0TmFtZWRTZXR0
ZXJXaXRoSWRlbnRpZmllcj4mJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyLmNwcAppbmRleCBmNTBhZDBkZjVjMTIwMzM2YmJjNDgzNjYw
YjRmY2NlMWM0ZmJhMjFiLi5lZDU2MjIzYTJjNTM1NDYzZDI0YmU1ZWM0YTJkM2EwMGU2ZThkZjMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXIuY3BwCkBAIC0yMzYsOCArMjM2LDYgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogbGV4aWMKICAgICBh
dXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXIqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGlu
Zm8oKSk7CiAKLSAgICBpZiAoVU5MSUtFTFkodGhpc09iamVjdCAhPSBwdXRQcm9wZXJ0eVNsb3Qu
dGhpc1ZhbHVlKCkpKQotICAgICAgICByZXR1cm4gSlNPYmplY3Q6OnB1dCh0aGlzT2JqZWN0LCBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBwdXRQcm9wZXJ0eVNsb3Qp
OwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUobGV4aWNhbEdsb2Jh
bE9iamVjdC0+dm0oKSk7CiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuaAppbmRl
eCBkNTEwMzE1Y2I2MzNhYjIyZTAxMTU3YzUyZmQ1YzNjMjNmYjc1ZjFhLi4yNjg5MjdmOWM0NDA0
NzE3MjQwZmE3MjBlYzBiNDc5ZWE1ODdjN2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0p
OwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVy
Jik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVy
ZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5
SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVy
dHlOYW1lcyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlk
ZXNQdXQgfCBKU0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6
OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlIHwgSlNDOjpJbnRl
cmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwg
SlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eU5hbWVzIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Q
cm9wZXJ0eVNsb3QgfCBKU0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsKIHByb3RlY3RlZDoK
ICAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyKEpTQzo6U3RydWN0dXJlKiwg
SlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI+
JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
SW5kZXhlZEdldHRlckFuZFNldHRlci5jcHAKaW5kZXggYjk2N2VlNWNhNTI2MWQ2ZGY2ZmY0ODI5
ZTEyOGQ2MTMzZDRiZDY1Yi4uMTlmOWI5Njc3ZjA0ODVlNTQ0Y2E1YmYyMTcwN2NlODRkZDQzZGM3
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJ
bmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcApAQCAtMjM2LDggKzIzNiw2IEBAIGJvb2wgSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcjo6cHV0KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplCiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogCi0gICAgaWYgKFVOTElLRUxZKHRo
aXNPYmplY3QgIT0gcHV0UHJvcGVydHlTbG90LnRoaXNWYWx1ZSgpKSkKLSAgICAgICAgcmV0dXJu
IEpTT2JqZWN0OjpwdXQodGhpc09iamVjdCwgbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgcHV0UHJvcGVydHlTbG90KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkpOwogCiAgICAgaWYgKGF1
dG8gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJ
bmRleGVkR2V0dGVyQW5kU2V0dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5oCmlu
ZGV4IGVkNWEzZDM5YTA4NWI3ZmE4YjZiNmQzZGJkNWUzZTE3NzAwZjk3ODMuLjVhNzIzYTFkNTBm
YzcyOGIyZjc3Zjc0NjljYzczZjZlZjdjNjk1ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyQW5kU2V0dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuaApAQCAtNjQs
NyArNjQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9ySW1wbChKU0M6OlZNJiB2bSk7CiAgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxs
KiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93
blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlIHwgSlNDOjpJbnRlcmNlcHRz
R2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpP
dmVycmlkZXNHZXRPd25Qcm9wZXJ0eU5hbWVzIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0
eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc1B1dCB8IEpTQzo6UHJvaGliaXRzUHJvcGVydHlDYWNoaW5n
OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpT
dHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmVGb3JQcm9wZXJ0
eUFic2VuY2UgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldo
ZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5TmFtZXMgfCBK
U0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6UHJvaGliaXRzUHJvcGVydHlD
YWNoaW5nOwogcHJvdGVjdGVkOgogICAgIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0
ZXJBbmRTZXR0ZXIoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlcj4mJik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zLmNwcAppbmRleCBlNjE1MjMwM2ViNDVhNDRlNDY0NDI5Nzc1MWM2YTMyNDZhOTJhYzMzLi5l
NzI3Y2FmMDk1YzRlYTk4Y2FkZGIzMWZiY2IzMmFjMTg2MWVjM2M3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnMuY3BwCkBAIC0yMDQsOCArMjA0LDYgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamUKICAgICBh
dXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnMqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsIGluZm8oKSk7CiAKLSAgICBpZiAoVU5MSUtFTFkodGhpc09iamVjdCAhPSBwdXRQcm9w
ZXJ0eVNsb3QudGhpc1ZhbHVlKCkpKQotICAgICAgICByZXR1cm4gSlNPYmplY3Q6OnB1dCh0aGlz
T2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBwdXRQcm9w
ZXJ0eVNsb3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUobGV4
aWNhbEdsb2JhbE9iamVjdC0+dm0oKSk7CiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJv
bCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMuaAppbmRleCBlY2NlNGYzN2E0OTczM2I3OTM3YTFlM2E4ZDc5
MDcxNmI3ZWZlNDFkLi41MDk1MGJjZDYzN2U5YWI2ZTc0NzJhZTQ4M2YxMWE2ZjNhZWMwMTM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zLmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRp
YyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0
cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZSB8IEpTQzo6SW50
ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8
IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlOYW1lcyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3du
UHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNQdXQgfCBKU0M6OlByb2hpYml0c1Byb3BlcnR5
Q2FjaGluZzsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
QmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlIHwg
SlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNO
b3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eU5hbWVzIHwgSlNDOjpPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsKIHBy
b3RlY3RlZDoKICAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
KEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdE5hbWVkU2V0dGVy
V2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXMuY3BwCmluZGV4IGQzMDU2YzMzZWMxYTY3NDFiZDMwNmQxMjQ1YjJjZmY3ZDMxYzRmOWEuLmIy
OWVlZmRiZDMwYjk3ZWU1MGJiMjlkNzkyNTkxYmY0ZDllYjMyYmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJs
ZVByb3BlcnRpZXMuY3BwCkBAIC0yMzAsOCArMjMwLDYgQEAgYm9vbCBKU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXM6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xv
YmEKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKIAotICAgIGlmIChVTkxJS0VMWSh0aGlzT2Jq
ZWN0ICE9IHB1dFByb3BlcnR5U2xvdC50aGlzVmFsdWUoKSkpCi0gICAgICAgIHJldHVybiBKU09i
amVjdDo6cHV0KHRoaXNPYmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHB1dFByb3BlcnR5U2xvdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRShsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpKTsKIAogICAgIGlmICghcHJvcGVy
dHlOYW1lLmlzU3ltYm9sKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuaAppbmRleCBjODEw
Y2RlZDk4Y2VhYWY2OGU5YTEzNzVlM2U1M2Y1NGI0MDFjYjJkLi5kNjI2Yzc0ODEwMGFhZDA5NTgz
ZmIyNDBlODYyOTdkY2E2OGU1OTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQ
cm9wZXJ0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5oCkBAIC02
NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0Nl
bGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwogcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6R2V0
T3duUHJvcGVydHlTbG90SXNJbXB1cmVGb3JQcm9wZXJ0eUFic2VuY2UgfCBKU0M6Okhhc1N0YXRp
Y1Byb3BlcnR5VGFibGUgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5TmFt
ZXMgfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6T3ZlcnJpZGVzUHV0
IHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRP
d25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSB8IEpTQzo6SGFzU3RhdGlj
UHJvcGVydHlUYWJsZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhF
dmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlOYW1l
cyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpQcm9oaWJpdHNQcm9w
ZXJ0eUNhY2hpbmc7CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5
VW5mb3JnZWFibGVQcm9wZXJ0aWVzKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3Qm
LCBSZWY8VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcz4mJik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmNwcAppbmRleCBhYWI3MGM3ZmY0YWVkOWI1M2ZhYjk1NDk4
MjAzMWE3NDFjNTA4NDRkLi5lODA0MGYwMjgzNDMyYzQzZjYxYjg0MjViZmE1YWMyNzQyNDYyZDhh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3Zl
cnJpZGVCdWlsdElucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0Fu
ZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCkBAIC0yMzAsOCArMjMwLDYgQEAgYm9vbCBKU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zOjoKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVp
bHRJbnMqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3Qs
IGluZm8oKSk7CiAKLSAgICBpZiAoVU5MSUtFTFkodGhpc09iamVjdCAhPSBwdXRQcm9wZXJ0eVNs
b3QudGhpc1ZhbHVlKCkpKQotICAgICAgICByZXR1cm4gSlNPYmplY3Q6OnB1dCh0aGlzT2JqZWN0
LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBwdXRQcm9wZXJ0eVNs
b3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUobGV4aWNhbEds
b2JhbE9iamVjdC0+dm0oKSk7CiAKICAgICBpZiAoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3Zl
cnJpZGVCdWlsdElucy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMuaAppbmRleCAyZjhlMWNhYzEzODJhMTBjYmU4YzAzYTY5ZjIzYmM5
MjEyNjkyYmU3Li5jMjI4OWI3MDYzMTY2Y2RhZjlmYzQyNmQ4Zjc1YjYyYzRiZTkzZDY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVC
dWlsdElucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zLmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRp
YyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0
cnVjdHVyZUZsYWdzIHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZSB8IEpTQzo6SGFz
U3RhdGljUHJvcGVydHlUYWJsZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5
SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVy
dHlOYW1lcyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlk
ZXNQdXQgfCBKU0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBKU0M6
OkdldE93blByb3BlcnR5U2xvdElzSW1wdXJlIHwgSlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxl
IHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3Ro
SXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eU5hbWVzIHwgSlNDOjpPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6OlByb2hpYml0c1Byb3BlcnR5Q2FjaGluZzsK
IHByb3RlY3RlZDoKICAgICBKU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVBy
b3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zKEpTQzo6U3RydWN0dXJlKiwgSlNET01H
bG9iYWxPYmplY3QmLCBSZWY8VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJv
cGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnM+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVn
aW5JbnRlcmZhY2UuY3BwCmluZGV4IGI5OGJmNmUzOTU1NDNjN2ZiZGVkZjBjZDdkMjYwNzJmM2Zi
ZTExOTkuLmUyODY4YmFmZTU0Yzg3ZTViZTBkODU1ZmEwNGMzOGJlNzU1MjFmODkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5J
bnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuY3BwCkBAIC0xODEsOCArMTgxLDYgQEAgYm9vbCBKU1Rl
c3RQbHVnaW5JbnRlcmZhY2U6OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWMKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdFBsdWdp
bkludGVyZmFjZSo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
amVjdCwgaW5mbygpKTsKIAotICAgIGlmIChVTkxJS0VMWSh0aGlzT2JqZWN0ICE9IHB1dFByb3Bl
cnR5U2xvdC50aGlzVmFsdWUoKSkpCi0gICAgICAgIHJldHVybiBKU09iamVjdDo6cHV0KHRoaXNP
YmplY3QsIGxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHB1dFByb3Bl
cnR5U2xvdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShsZXhp
Y2FsR2xvYmFsT2JqZWN0LT52bSgpKTsKIAogICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
UGx1Z2luSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmgKaW5kZXggYjkwZmRlNDBjYzVmOWMwNTJjMzE0ZGY4
NzZmMjNlOGQ2OGNhNDY1Zi4uYWQ1MjJkYTEzNzk2MjhjZTZjM2Y2ZTA0NDA4MGI2NTNkMTQ0N2Vk
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFBsdWdpbkludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuaApAQCAtNjcsNyArNjcsNyBAQCBwdWJs
aWM6CiAKICAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFs
eXplciYpOwogcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3Bl
cnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0
Q2FsbERhdGEgfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6T3ZlcnJp
ZGVzUHV0IHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7CisgICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSlND
OjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3Ra
ZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRDYWxsRGF0YSB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJv
cGVydHlTbG90IHwgSlNDOjpQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7CiBwcm90ZWN0ZWQ6CiAg
ICAgSlNUZXN0UGx1Z2luSW50ZXJmYWNlKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmpl
Y3QmLCBSZWY8VGVzdFBsdWdpbkludGVyZmFjZT4mJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdl
L29iamMvb2JqY19ydW50aW1lLmgKaW5kZXggMzcxNjAyMWM2ZmRmNWZmNmQ4YzVjMzA0MDNhM2My
MDIwOWY2ZDhhMC4uYzBmYjEzOWI2ZjkwZDg5NjgwMTUxZTkxOGU3OTU3OGQ0Y2RjNTVjMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgKQEAgLTkxLDcgKzkxLDcg
QEAgcHJpdmF0ZToKIGNsYXNzIE9iamNGYWxsYmFja09iamVjdEltcCBmaW5hbCA6IHB1YmxpYyBK
U0Rlc3RydWN0aWJsZU9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTRGVzdHJ1
Y3RpYmxlT2JqZWN0OwotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8
IE92ZXJyaWRlc0dldENhbGxEYXRhIHwgT3ZlcnJpZGVzUHV0OworICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJy
aWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldENhbGxEYXRhOwogICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENlbGxUeXBlLCBKU0M6OlN1YnNwYWNlQWNjZXNzPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX2FycmF5LmgKaW5kZXggNGE3YjJmMWNlY2E3YTM2YTA2MzA2ZTE4MjM4ZGUxOGQy
OWFkNDI3OS4uMDU0MTE0MTQ3ZjhlYmI5MGZiNDJjOTA1YjNlYjRjMTJlNTVmZjE3NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogY2xhc3MgUnVudGltZUFycmF5IGZpbmFsIDogcHVibGljIEpTQXJyYXkgewogcHVi
bGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0FycmF5OwotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dl
dE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5TmFtZXMgfCBPdmVycmlk
ZXNQdXQgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3Ro
SXNOb3RaZXJvOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92
ZXJyaWRlc0dldE93blByb3BlcnR5TmFtZXMgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90
QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvOwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxU
eXBlLCBKU0M6OlN1YnNwYWNlQWNjZXNzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfb2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmpl
Y3QuaAppbmRleCBkMWU0ZGU0YWUxYjdjYTQ1YjM1NzgxOWI5ZjNmMWViNDg3YWM2YzY0Li5jYWEw
MmEyYjE4ZWNhYjI1NjE2ZDc2M2Y5YTg2OTM2NjJhYzllOGEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9vYmplY3QuaApAQCAtMzcsNyArMzcsNyBAQCBFeGNlcHRpb24qIHRocm93UnVu
dGltZU9iamVjdEludmFsaWRBY2Nlc3NFcnJvcihKU0dsb2JhbE9iamVjdCosIFRocm93U2NvcGUm
KTsKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFJ1bnRpbWVPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5h
bE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0T3du
UHJvcGVydHlOYW1lcyB8IE92ZXJyaWRlc0dldENhbGxEYXRhIHwgT3ZlcnJpZGVzUHV0IHwgR2V0
T3duUHJvcGVydHlTbG90TWF5QmVXcm9uZ0Fib3V0RG9udEVudW07CisgICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3Zl
cnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlOYW1lcyB8
IE92ZXJyaWRlc0dldENhbGxEYXRhIHwgR2V0T3duUHJvcGVydHlTbG90TWF5QmVXcm9uZ0Fib3V0
RG9udEVudW07CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0
cnVlOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIEpTQzo6U3Vic3BhY2VBY2Nl
c3M+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9KU05QT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9KU05QT2JqZWN0LmgKaW5kZXggZjdjNjhkODlkNjZjYzZjMDVlMGY5ZjNlNTFkMzk0YjNhOWMx
ZjMxOC4uNjljYjEyNjY5YTFmZjYxNTRhMDU5OTE3MTdmZDBiNDQ1MDcxYmQyMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmpl
Y3QuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBOUFJ1bnRpbWVPYmplY3RNYXA7CiBjbGFzcyBK
U05QT2JqZWN0IGZpbmFsIDogcHVibGljIEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QgewogcHVi
bGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0OwotICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVG
bGFncyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpPdmVycmlkZXNH
ZXRPd25Qcm9wZXJ0eU5hbWVzIHwgSlNDOjpPdmVycmlkZXNHZXRDYWxsRGF0YSB8IEpTQzo6T3Zl
cnJpZGVzUHV0IHwgSlNDOjpHZXRPd25Qcm9wZXJ0eVNsb3RNYXlCZVdyb25nQWJvdXREb250RW51
bTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6
U3RydWN0dXJlRmxhZ3MgfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6
T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlOYW1lcyB8IEpTQzo6T3ZlcnJpZGVzR2V0Q2FsbERhdGEg
fCBKU0M6OkdldE93blByb3BlcnR5U2xvdE1heUJlV3JvbmdBYm91dERvbnRFbnVtOwogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIEpTQzo6U3Vic3BhY2VBY2Nlc3M+CiAgICAgc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDEx
NWJiNGU2MjU0MGI1OWRhNmJkYTUxN2Y0OGZhZDViMTljNWViNzQuLjA5Yjc5ZjliYjFjOTM0ZGQ4
YmIwZWJiMTk4ZWYxMjJiYjI1ZDJjNWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wNS0x
OCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKworICAgICAgICBUZW1w
b3JhcmlseSByZXZlcnQgcjI3NjU5MiBhcyBpdCBicmVha3Mgc29tZSBuYXRpdmUgYXBwcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1OTE3CisKKyAg
ICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0CisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5
L2Nyb3NzLWZyYW1lLWFjY2Vzcy1vYmplY3QtZ2V0UHJvdG90eXBlT2YtaW4tcHV0LWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLWZyYW1lLWFjY2Vzcy1v
YmplY3QtZ2V0UHJvdG90eXBlT2YtaW4tcHV0Lmh0bWw6CisgICAgICAgICoganMvZG9tL3JlZmxl
Y3Qtc2V0LW9udG8tZG9tLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9kb20vc2NyaXB0LXRl
c3RzL3JlZmxlY3Qtc2V0LW9udG8tZG9tLmpzOgorCiAyMDIxLTA1LTE4ICBEaWVnbyBQaW5vIEdh
cmNpYSAgPGRwaW5vQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dMSUJdIFVucmV2aWV3ZWQgdGVz
dCBnYXJkZW5pbmcuIFNvbWUgbWF0aG1sIHRlc3RzIGFyZSBmYWlsaW5nIGluIEVXUyBHVEstV0sy
IGJ1dCBwYXNzaW5nIGluIHBvc3QtY29tbWl0IGJvdC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdl
TG9nCmluZGV4IGVlMWY2ODkwMGRlYjQ5ODk1YjUwZmJjZGY3MzJhOTdmMmQwOTA1ODkuLjYxOGUy
ZDMyMDU5NWJmOGIwMWFmOThjNzZkM2JkOTNkNjU0MWY1M2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTA1LTE4ICBLZWl0aCBNaWxsZXIgIDxr
ZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIFRlbXBvcmFyaWx5IHJldmVydCByMjc2
NTkyIGFzIGl0IGJyZWFrcyBzb21lIG5hdGl2ZSBhcHBzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU5MTcKKworICAgICAgICBVbnJldmlld2VkLCBy
ZXZlcnQuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQt
YmluZGluZy9pbnRlcmZhY2Utb2JqZWN0LXNldC1yZWNlaXZlci1leHBlY3RlZC50eHQ6IFJlbW92
ZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRp
bmcvaW50ZXJmYWNlLW9iamVjdC1zZXQtcmVjZWl2ZXIuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9pbnRlcmZhY2Ut
cHJvdG90eXBlLWNvbnN0cnVjdG9yLXNldC1yZWNlaXZlci1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvaW50ZXJmYWNl
LXByb3RvdHlwZS1jb25zdHJ1Y3Rvci1zZXQtcmVjZWl2ZXIuaHRtbDoKKwogMjAyMS0wNS0xNiAg
Q2FtZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgTWF0
aE1MIFdQVHMgd2FpdCBmb3IgYWxsIGZvbnQgbG9hZHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3MtZnJhbWUtYWNjZXNzLW9iamVjdC1nZXRQcm90b3R5
cGVPZi1pbi1wdXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9jcm9zcy1mcmFtZS1hY2Nlc3Mtb2JqZWN0LWdldFByb3RvdHlwZU9mLWluLXB1dC1leHBlY3Rl
ZC50eHQKaW5kZXggZWMxNGRlMmNkNjBiOGJhNTMxMmFkNzFjNzRhNzdhNjkxMzZlNzVmMy4uNmQ1
YmNhMWNmM2EzMmUyOGNhYWMwMmIzYTVmN2NmYzE4MDM1NGFjYiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1mcmFtZS1hY2Nlc3Mtb2JqZWN0LWdldFBy
b3RvdHlwZU9mLWluLXB1dC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9jcm9zcy1mcmFtZS1hY2Nlc3Mtb2JqZWN0LWdldFByb3RvdHlwZU9mLWluLXB1
dC1leHBlY3RlZC50eHQKQEAgLTEsNyArMSw1IEBACiBUaGlzIHRlc3RzIHRoYXQgeW91IGNhbid0
IGdldCB0aGUgcHJvdG90eXBlIG9mIHRoZSB3aW5kb3cgZHVyaW5nIFtbUHV0XV0gb3BlcmF0aW9u
LgogCi1QQVNTIGFycmF5LmNvY29hID0gY29jb2FWYWx1ZSB0aHJldyBleGNlcHRpb24gU2VjdXJp
dHlFcnJvcjogQmxvY2tlZCBhIGZyYW1lIHdpdGggb3JpZ2luICJodHRwOi8vMTI3LjAuMC4xOjgw
MDAiIGZyb20gYWNjZXNzaW5nIGEgY3Jvc3Mtb3JpZ2luIGZyYW1lLiBQcm90b2NvbHMsIGRvbWFp
bnMsIGFuZCBwb3J0cyBtdXN0IG1hdGNoLi4KLVBBU1MgJ3N0cicuY29jb2EgPSBjb2NvYVZhbHVl
IHRocmV3IGV4Y2VwdGlvbiBTZWN1cml0eUVycm9yOiBCbG9ja2VkIGEgZnJhbWUgd2l0aCBvcmln
aW4gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIgZnJvbSBhY2Nlc3NpbmcgYSBjcm9zcy1vcmlnaW4g
ZnJhbWUuIFByb3RvY29scywgZG9tYWlucywgYW5kIHBvcnRzIG11c3QgbWF0Y2guLgogUEFTUzog
c3VjY2Vzc2Z1bGx5UGFyc2VkIHNob3VsZCBiZSAndHJ1ZScgYW5kIGlzLgogCiBURVNUIENPTVBM
RVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLWZy
YW1lLWFjY2Vzcy1vYmplY3QtZ2V0UHJvdG90eXBlT2YtaW4tcHV0Lmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLWZyYW1lLWFjY2Vzcy1vYmplY3QtZ2V0UHJvdG90
eXBlT2YtaW4tcHV0Lmh0bWwKaW5kZXggMWFjZDgxY2MzN2I4YWFmMzUxNzBjOGM3YTUwMWEwNTVk
ZDczYmQ3ZC4uMWRmZTEzNTQ2MGQyYmY2YzliNjdhMmUxMzczYTQwZTNiMWM3NjM1MyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1mcmFtZS1hY2Nlc3Mt
b2JqZWN0LWdldFByb3RvdHlwZU9mLWluLXB1dC5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvY3Jvc3MtZnJhbWUtYWNjZXNzLW9iamVjdC1nZXRQcm90b3R5cGVPZi1p
bi1wdXQuaHRtbApAQCAtMTUsNyArMTUsNyBAQAogICAgICAgICBkb1Rlc3QgPSBmdW5jdGlvbigp
CiAgICAgICAgIHsKICAgICAgICAgICAgIHRhcmdldFdpbmRvdyA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJ0YXJnZXQiKS5jb250ZW50V2luZG93OwotICAgICAgICAgICAgYXJyYXkgPSBbXTsK
KyAgICAgICAgICAgIHZhciBhcnJheSA9IFtdOwogICAgICAgICAgICAgYXJyYXkuX19wcm90b19f
Ll9fcHJvdG9fXyA9IHRhcmdldFdpbmRvdzsKICAgICAgICAgICAgIGFycmF5WzBdID0gMTEuMTE7
CiAgICAgICAgICAgICBhcnJheVsyXSA9IDIyLjIyOwpAQCAtMjQsMTUgKzI0LDExIEBACiAgICAg
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoInRvU3RyaW5nIGlzIGNhbGxlZCBieSAxMDEwMTAx
MCBzZXR0ZXIiKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9OwotICAgICAgICAg
ICAgY29jb2FWYWx1ZSA9IHsKKyAgICAgICAgICAgIGFycmF5WyJjb2NvYSJdID0gewogICAgICAg
ICAgICAgICAgIHRvU3RyaW5nKCkgewogICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJ0
b1N0cmluZyBpcyBjYWxsZWQgYnkgY29jb2Egc2V0dGVyIik7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHNob3VsZFRocm93RXJyb3JOYW1lKCJhcnJheS5j
b2NvYSA9IGNvY29hVmFsdWUiLCAiU2VjdXJpdHlFcnJvciIpOwotCi0gICAgICAgICAgICBPYmpl
Y3Quc2V0UHJvdG90eXBlT2YoU3RyaW5nLnByb3RvdHlwZSwgdGFyZ2V0V2luZG93KTsKLSAgICAg
ICAgICAgIHNob3VsZFRocm93RXJyb3JOYW1lKCInc3RyJy5jb2NvYSA9IGNvY29hVmFsdWUiLCAi
U2VjdXJpdHlFcnJvciIpOwogICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CiAgICAgICAgIH0K
ICAgICA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9pbnRlcmZhY2Utb2JqZWN0
LXNldC1yZWNlaXZlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvaW50ZXJmYWNlLW9iamVj
dC1zZXQtcmVjZWl2ZXItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBiZGZhM2JhYWU4YWZmNzYxNzI4OGQ0MWQ4YThjZGZmMTVkZjg2YzE5Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9pbnRlcmZhY2Ut
b2JqZWN0LXNldC1yZWNlaXZlci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICsw
LDAgQEAKLQotUEFTUyBEaXJlY3QgW1tTZXRdXSBwcmVzZXJ2ZXMgW1tFbnVtZXJhYmxlXV06IGZh
bHNlIHByb3BlcnR5IGF0dHJpYnV0ZQotUEFTUyBQcm90b3R5cGUgY2hhaW4gW1tTZXRdXSBjcmVh
dGVzIHByb3BlcnR5IG9uIHJlY2VpdmVyCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9pbnRl
cmZhY2Utb2JqZWN0LXNldC1yZWNlaXZlci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2ludGVyZmFjZS1v
YmplY3Qtc2V0LXJlY2VpdmVyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0
MWI1NTEwZmQ2MzllOWY2YzViZjI0MzBiYzVjMjIyNzdkNDk5MzEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2ludGVyZmFjZS1vYmpl
Y3Qtc2V0LXJlY2VpdmVyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi08IURP
Q1RZUEUgaHRtbD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRsZT53aW5kb3cuSW50ZXJm
YWNlIGlzIGRlZmluZWQgb24gW1tTZXRdXSByZWNlaXZlcjwvdGl0bGU+Ci08bGluayByZWw9Imhl
bHAiIGhyZWY9Imh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2RlZmluZS10aGUtZ2xv
YmFsLXByb3BlcnR5LXJlZmVyZW5jZXMiPgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLSJ1c2Ugc3RyaWN0IjsKLWNvbnN0IHRlc3RW
YWx1ZSA9IE9iamVjdC5mcmVlemUoZnVuY3Rpb24oKSB7fSk7Ci0KLXRlc3QoKCkgPT4gewotICB3
aW5kb3cuV2luZG93ID0gdGVzdFZhbHVlOwotICBhc3NlcnRfZmFsc2Uod2luZG93LnByb3BlcnR5
SXNFbnVtZXJhYmxlKCJXaW5kb3ciKSk7Ci0KLSAgd2luZG93Lkhpc3RvcnkgPSB0ZXN0VmFsdWU7
Ci0gIGFzc2VydF9mYWxzZSh3aW5kb3cucHJvcGVydHlJc0VudW1lcmFibGUoIkhpc3RvcnkiKSk7
Ci0KLSAgd2luZG93LkhUTUxEaXZFbGVtZW50ID0gdGVzdFZhbHVlOwotICBhc3NlcnRfZmFsc2Uo
d2luZG93LnByb3BlcnR5SXNFbnVtZXJhYmxlKCJIVE1MRGl2RWxlbWVudCIpKQotfSwgIkRpcmVj
dCBbW1NldF1dIHByZXNlcnZlcyBbW0VudW1lcmFibGVdXTogZmFsc2UgcHJvcGVydHkgYXR0cmli
dXRlIik7Ci0KLXRlc3QoKCkgPT4gewotICBjb25zdCBoZWlyID0gT2JqZWN0LmNyZWF0ZSh3aW5k
b3cpOwotCi0gIGhlaXIuTG9jYXRpb24gPSB0ZXN0VmFsdWU7Ci0gIGFzc2VydF9lcXVhbHMoaGVp
ci5Mb2NhdGlvbiwgdGVzdFZhbHVlKTsKLSAgYXNzZXJ0X25vdF9lcXVhbHMod2luZG93LkxvY2F0
aW9uLCB0ZXN0VmFsdWUpOwotCi0gIGhlaXIuSFRNTERvY3VtZW50ID0gdGVzdFZhbHVlOwotICBh
c3NlcnRfZXF1YWxzKGhlaXIuSFRNTERvY3VtZW50LCB0ZXN0VmFsdWUpOwotICBhc3NlcnRfbm90
X2VxdWFscyh3aW5kb3cuSFRNTERvY3VtZW50LCB0ZXN0VmFsdWUpOwotCi0gIGhlaXIuSFRNTFBy
ZUVsZW1lbnQgPSB0ZXN0VmFsdWU7Ci0gIGFzc2VydF9lcXVhbHMoaGVpci5IVE1MUHJlRWxlbWVu
dCwgdGVzdFZhbHVlKTsKLSAgYXNzZXJ0X25vdF9lcXVhbHMod2luZG93LkhUTUxQcmVFbGVtZW50
LCB0ZXN0VmFsdWUpOwotfSwgIlByb3RvdHlwZSBjaGFpbiBbW1NldF1dIGNyZWF0ZXMgcHJvcGVy
dHkgb24gcmVjZWl2ZXIiKTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2lu
dGVyZmFjZS1wcm90b3R5cGUtY29uc3RydWN0b3Itc2V0LXJlY2VpdmVyLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFz
Y3JpcHQtYmluZGluZy9pbnRlcmZhY2UtcHJvdG90eXBlLWNvbnN0cnVjdG9yLXNldC1yZWNlaXZl
ci1leHBlY3RlZC50eHQKaW5kZXggYmRmYTNiYWFlOGFmZjc2MTcyODhkNDFkOGE4Y2RmZjE1ZGY4
NmMxOS4uNDU2YzgxNzI1ODFjODM3ZDE0NWJiNTZkOTNjNmY4ZDk5MGM3ZWE2MiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNt
YXNjcmlwdC1iaW5kaW5nL2ludGVyZmFjZS1wcm90b3R5cGUtY29uc3RydWN0b3Itc2V0LXJlY2Vp
dmVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvaW50ZXJmYWNlLXByb3RvdHlwZS1j
b25zdHJ1Y3Rvci1zZXQtcmVjZWl2ZXItZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAogCi1Q
QVNTIERpcmVjdCBbW1NldF1dIHByZXNlcnZlcyBbW0VudW1lcmFibGVdXTogZmFsc2UgcHJvcGVy
dHkgYXR0cmlidXRlCi1QQVNTIFByb3RvdHlwZSBjaGFpbiBbW1NldF1dIGNyZWF0ZXMgcHJvcGVy
dHkgb24gcmVjZWl2ZXIKK1BBU1MgV2luZG93LCBMb2NhdGlvbiwgTmF2aWdhdG9yLCBIVE1MRG9j
dW1lbnQsIGFuZCBIVE1MSGVhZEVsZW1lbnQKK1BBU1MgQWxsIHdpbmRvdy4qIGNvbnN0cnVjdG9y
cwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvaW50ZXJmYWNlLXByb3RvdHlwZS1jb25zdHJ1
Y3Rvci1zZXQtcmVjZWl2ZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9pbnRlcmZhY2UtcHJvdG90eXBl
LWNvbnN0cnVjdG9yLXNldC1yZWNlaXZlci5odG1sCmluZGV4IGNmMDIwZDIxMTU2YjM1NTAzNDM0
MWZiMWJjOGI4ZWJjODYxMGVlNzQuLjIwZjMzZjI0M2FiZWVmOTAxMzU3ZmIyMDI2ZjBmZTIxODIy
Nzc2NzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9pbnRlcmZhY2UtcHJvdG90eXBlLWNvbnN0
cnVjdG9yLXNldC1yZWNlaXZlci5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9pbnRlcmZhY2UtcHJv
dG90eXBlLWNvbnN0cnVjdG9yLXNldC1yZWNlaXZlci5odG1sCkBAIC02LDMxICs2LDQyIEBACiA8
c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0PgogInVzZSBzdHJpY3QiOwotY29uc3QgdGVzdFZhbHVlID0gT2JqZWN0LmZyZWV6ZShm
dW5jdGlvbigpIHt9KTsKIAogdGVzdCgoKSA9PiB7Ci0gIExvY2F0aW9uLnByb3RvdHlwZS5jb25z
dHJ1Y3RvciA9IHRlc3RWYWx1ZTsKLSAgYXNzZXJ0X2ZhbHNlKExvY2F0aW9uLnByb3RvdHlwZS5w
cm9wZXJ0eUlzRW51bWVyYWJsZSgiY29uc3RydWN0b3IiKSk7CisgIHdpbmRvdy5jb25zdHJ1Y3Rv
ciA9IG51bGw7CisgIGFzc2VydF9lcXVhbHMoV2luZG93LnByb3RvdHlwZS5jb25zdHJ1Y3Rvciwg
V2luZG93KTsKKworICBsb2NhdGlvbi5jb25zdHJ1Y3RvciA9IGZhbHNlOworICBhc3NlcnRfZXF1
YWxzKExvY2F0aW9uLnByb3RvdHlwZS5jb25zdHJ1Y3RvciwgTG9jYXRpb24pOworCisgIG5hdmln
YXRvci5jb25zdHJ1Y3RvciA9IDE7CisgIGFzc2VydF9lcXVhbHMoTmF2aWdhdG9yLnByb3RvdHlw
ZS5jb25zdHJ1Y3RvciwgTmF2aWdhdG9yKTsKIAotICBIVE1MRG9jdW1lbnQucHJvdG90eXBlLmNv
bnN0cnVjdG9yID0gdGVzdFZhbHVlOwotICBhc3NlcnRfZmFsc2UoSFRNTERvY3VtZW50LnByb3Rv
dHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgiY29uc3RydWN0b3IiKSk7CisgIGRvY3VtZW50LmNv
bnN0cnVjdG9yID0ge307CisgIGFzc2VydF9lcXVhbHMoSFRNTERvY3VtZW50LnByb3RvdHlwZS5j
b25zdHJ1Y3RvciwgSFRNTERvY3VtZW50KTsKIAotICBIVE1MRGl2RWxlbWVudC5wcm90b3R5cGUu
Y29uc3RydWN0b3IgPSB0ZXN0VmFsdWU7Ci0gIGFzc2VydF9mYWxzZShIVE1MRGl2RWxlbWVudC5w
cm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUoImNvbnN0cnVjdG9yIikpOwotfSwgIkRpcmVj
dCBbW1NldF1dIHByZXNlcnZlcyBbW0VudW1lcmFibGVdXTogZmFsc2UgcHJvcGVydHkgYXR0cmli
dXRlIik7CisgIGRvY3VtZW50LmhlYWQuY29uc3RydWN0b3IgPSBbXTsKKyAgYXNzZXJ0X2VxdWFs
cyhIVE1MSGVhZEVsZW1lbnQucHJvdG90eXBlLmNvbnN0cnVjdG9yLCBIVE1MSGVhZEVsZW1lbnQp
OworfSwgIldpbmRvdywgTG9jYXRpb24sIE5hdmlnYXRvciwgSFRNTERvY3VtZW50LCBhbmQgSFRN
TEhlYWRFbGVtZW50Iik7CiAKIHRlc3QoKCkgPT4gewotICB3aW5kb3cuY29uc3RydWN0b3IgPSB0
ZXN0VmFsdWU7Ci0gIGFzc2VydF9lcXVhbHMod2luZG93LmNvbnN0cnVjdG9yLCB0ZXN0VmFsdWUp
OwotICBhc3NlcnRfZXF1YWxzKFdpbmRvdy5wcm90b3R5cGUuY29uc3RydWN0b3IsIFdpbmRvdyk7
CisgIGZvciAobGV0IGtleSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh3aW5kb3cpKSB7
CisgICAgaWYgKCEvXltBLVpdLy50ZXN0KGtleSkpIGNvbnRpbnVlOwogCi0gIG5hdmlnYXRvci5j
b25zdHJ1Y3RvciA9IHRlc3RWYWx1ZTsKLSAgYXNzZXJ0X2VxdWFscyhuYXZpZ2F0b3IuY29uc3Ry
dWN0b3IsIHRlc3RWYWx1ZSk7Ci0gIGFzc2VydF9lcXVhbHMoTmF2aWdhdG9yLnByb3RvdHlwZS5j
b25zdHJ1Y3RvciwgTmF2aWdhdG9yKTsKKyAgICBsZXQgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3Iod2luZG93LCBrZXkpOworICAgIGlmICghZGVzYyB8fCBkZXNjLmVudW1l
cmFibGUpIGNvbnRpbnVlOworICAgIGxldCB7dmFsdWV9ID0gZGVzYzsKKyAgICBpZiAodHlwZW9m
IHZhbHVlICE9PSAiZnVuY3Rpb24iKSBjb250aW51ZTsKKyAgICBsZXQge3Byb3RvdHlwZX0gPSB2
YWx1ZTsKKyAgICBpZiAoIXByb3RvdHlwZSkgY29udGludWU7CisKKyAgICBsZXQgaGVpciA9IE9i
amVjdC5jcmVhdGUocHJvdG90eXBlKTsKKyAgICBsZXQgbmV3Q29uc3RydWN0b3IgPSBmdW5jdGlv
bigpIHt9OworICAgIGhlaXIuY29uc3RydWN0b3IgPSBuZXdDb25zdHJ1Y3RvcjsKIAotICBjb25z
dCBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwotICBzcGFuLmNvbnN0cnVj
dG9yID0gdGVzdFZhbHVlOwotICBhc3NlcnRfZXF1YWxzKHNwYW4uY29uc3RydWN0b3IsIHRlc3RW
YWx1ZSk7Ci0gIGFzc2VydF9lcXVhbHMoSFRNTFNwYW5FbGVtZW50LnByb3RvdHlwZS5jb25zdHJ1
Y3RvciwgSFRNTFNwYW5FbGVtZW50KTsKLX0sICJQcm90b3R5cGUgY2hhaW4gW1tTZXRdXSBjcmVh
dGVzIHByb3BlcnR5IG9uIHJlY2VpdmVyIik7CisgICAgYXNzZXJ0X25vdF9lcXVhbHMocHJvdG90
eXBlLmNvbnN0cnVjdG9yLCBuZXdDb25zdHJ1Y3Rvciwga2V5KTsKKyAgICBhc3NlcnRfb3duX3By
b3BlcnR5KGhlaXIsICJjb25zdHJ1Y3RvciIsIGtleSk7CisgICAgYXNzZXJ0X2VxdWFscyhoZWly
LmNvbnN0cnVjdG9yLCBuZXdDb25zdHJ1Y3Rvciwga2V5KTsKKyAgfQorfSwgIkFsbCB3aW5kb3cu
KiBjb25zdHJ1Y3RvcnMiKTsKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMv
ZG9tL3JlZmxlY3Qtc2V0LW9udG8tZG9tLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2Rv
bS9yZWZsZWN0LXNldC1vbnRvLWRvbS1leHBlY3RlZC50eHQKaW5kZXggYTJjYjE1NTM4MWFiOTk5
N2IxZjZkZGNmZGMxN2UzYmQyY2FjNzI4Yy4uOTM2ODZkYjMzNzFiMDllMDY1NjAyYjAyZTc0YTdm
M2FiOTkxN2U2MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvZG9tL3JlZmxlY3Qtc2V0LW9u
dG8tZG9tLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vcmVmbGVjdC1zZXQt
b250by1kb20tZXhwZWN0ZWQudHh0CkBAIC05MywxMyArOTMsMTMgQEAgUEFTUyBSZWZsZWN0Lmdl
dChkb2N1bWVudC5ib2R5LmRhdGFzZXQsICJjb2NvYSIpIGlzICJzd2VldCIKIFBBU1MgUmVmbGVj
dC5zZXQoZG9jdW1lbnQuYm9keS5kYXRhc2V0LCAiY29jb2EtY2FwcHVjY2lubyIsICJzd2VldCIp
IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVGhlIHN0cmluZyBkaWQgbm90IG1hdGNoIHRo
ZSBleHBlY3RlZCBwYXR0ZXJuLi4KIFBBU1MgUmVmbGVjdC5zZXQoZG9jdW1lbnQuYm9keS5kYXRh
c2V0LCAwLCAic3dlZXQiKSBpcyB0cnVlCiBQQVNTIFJlZmxlY3QuZ2V0KGRvY3VtZW50LmJvZHku
ZGF0YXNldCwgMCkgaXMgInN3ZWV0IgotRE9NU3RyaW5nTWFwIGZhbGxzIGJhY2sgdG8gT3JkaW5h
cnlTZXQgaWYgcmVjZWl2ZXIgaXMgYWx0ZXJlZC4KK0RPTVN0cmluZ01hcCBpZ25vcmVzIHRoZSBy
ZWNlaXZlci4gVGhlc2UgcHV0RGVsZWdhdGUgb25seSB3b3JrIHdpdGggOjpwdXQgKG5vdCA6OmRl
ZmluZU93blByb3BlcnR5KS4gU28gdGhleSBiZWhhdmUgYXMgdGhlIHNwZWNpYWwgc2V0dGVyLCB3
ZSBzaG91bGQgbm90IGZhbGxiYWNrIHRvIHRoZSBPcmRpbmFyeVNldC4KIFBBU1MgUmVmbGVjdC5z
ZXQoZG9jdW1lbnQuYm9keS5kYXRhc2V0LCAiY29jb2EiLCAib2siLCByZWNlaXZlcikgaXMgdHJ1
ZQotUEFTUyBSZWZsZWN0LmdldChkb2N1bWVudC5ib2R5LmRhdGFzZXQsICJjb2NvYSIpIGlzICJz
d2VldCIKLVBBU1MgUmVmbGVjdC5nZXQocmVjZWl2ZXIsICJjb2NvYSIpIGlzICJvayIKK1BBU1Mg
UmVmbGVjdC5nZXQoZG9jdW1lbnQuYm9keS5kYXRhc2V0LCAiY29jb2EiKSBpcyAib2siCitQQVNT
IFJlZmxlY3QuZ2V0KHJlY2VpdmVyLCAiY29jb2EiKSBpcyB1bmRlZmluZWQKIFBBU1MgUmVmbGVj
dC5zZXQoZG9jdW1lbnQuYm9keS5kYXRhc2V0LCAwLCAib2siLCByZWNlaXZlcikgaXMgdHJ1ZQot
UEFTUyBSZWZsZWN0LmdldChkb2N1bWVudC5ib2R5LmRhdGFzZXQsIDApIGlzICJzd2VldCIKLVBB
U1MgUmVmbGVjdC5nZXQocmVjZWl2ZXIsIDApIGlzICJvayIKK1BBU1MgUmVmbGVjdC5nZXQoZG9j
dW1lbnQuYm9keS5kYXRhc2V0LCAwKSBpcyAib2siCitQQVNTIFJlZmxlY3QuZ2V0KHJlY2VpdmVy
LCAwKSBpcyB1bmRlZmluZWQKIEN1c3RvbUluZGV4ZWRTZXR0ZXIKIFBBU1MgUmVmbGVjdC5nZXQo
c2VsZWN0LCAwKS52YWx1ZSBpcyAiY29jb2EiCiBQQVNTIFJlZmxlY3QuZ2V0KHNlbGVjdCwgImxl
bmd0aCIpIGlzIDMKQEAgLTExMSwxMCArMTExLDEwIEBAIFBBU1MgUmVmbGVjdC5nZXQoc2VsZWN0
LCAibGVuZ3RoIikgaXMgNDIKIFBBU1MgUmVmbGVjdC5zZXQoc2VsZWN0LCA0NCwgb3B0aW9uMikg
aXMgdHJ1ZQogUEFTUyBSZWZsZWN0LmdldChzZWxlY3QsIDQ0KS52YWx1ZSBpcyAia2lsaW1hbmph
cm8iCiBQQVNTIFJlZmxlY3Quc2V0KHNlbGVjdCwgMjAsICJLaWxpbWFuamFybyIpIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1DdXN0b21JbmRleGVkU2V0dGVyIGZhbGxz
IGJhY2sgdG8gT3JkaW5hcnlTZXQgaWYgcmVjZWl2ZXIgaXMgYWx0ZXJlZC4KK0N1c3RvbUluZGV4
ZWRTZXR0ZXIgaWdub3JlcyB0aGUgcmVjZWl2ZXIuIFRoZXNlIG1ldGhvZHMgb25seSB3b3JrIHdp
dGggOjpwdXQgKG5vdCA6OmRlZmluZU93blByb3BlcnR5KS4gU28gdGhleSBiZWhhdmUgYXMgdGhl
IHNwZWNpYWwgc2V0dGVyLCB3ZSBzaG91bGQgbm90IGZhbGxiYWNrIHRvIHRoZSBPcmRpbmFyeVNl
dC4KIFBBU1MgUmVmbGVjdC5zZXQoc2VsZWN0LCAwLCBvcHRpb24zLCByZWNlaXZlcikgaXMgdHJ1
ZQotUEFTUyBSZWZsZWN0LmdldChyZWNlaXZlciwgMCkgaXMgb3B0aW9uMwotUEFTUyBSZWZsZWN0
LmdldChzZWxlY3QsIDApIGlzIHNlbGVjdC5jaGlsZHJlblswXQorUEFTUyBSZWZsZWN0LmdldChy
ZWNlaXZlciwgMCkgaXMgdW5kZWZpbmVkCitQQVNTIFJlZmxlY3QuZ2V0KHNlbGVjdCwgMCkgaXMg
b3B0aW9uMwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRF
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vc2NyaXB0LXRlc3RzL3JlZmxlY3Qtc2V0
LW9udG8tZG9tLmpzIGIvTGF5b3V0VGVzdHMvanMvZG9tL3NjcmlwdC10ZXN0cy9yZWZsZWN0LXNl
dC1vbnRvLWRvbS5qcwppbmRleCAwMGQ3Y2M0MjcxZDljMmQ3Y2NlYmQyMThhOTg5MWU2ZjdjNzFh
YWMxLi4yOGFiZWExNWMwM2U4Yjk1MzQzZTA0NDllMjJiYTNhYmFhZTM0YzczIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9qcy9kb20vc2NyaXB0LXRlc3RzL3JlZmxlY3Qtc2V0LW9udG8tZG9tLmpz
CisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9zY3JpcHQtdGVzdHMvcmVmbGVjdC1zZXQtb250by1k
b20uanMKQEAgLTExNiwxNSArMTE2LDE1IEBAIHNob3VsZFRocm93KGBSZWZsZWN0LnNldChkb2N1
bWVudC5ib2R5LmRhdGFzZXQsICJjb2NvYS1jYXBwdWNjaW5vIiwgInN3ZWV0IilgKTsKIHNob3Vs
ZEJlKGBSZWZsZWN0LnNldChkb2N1bWVudC5ib2R5LmRhdGFzZXQsIDAsICJzd2VldCIpYCwgYHRy
dWVgKTsKIHNob3VsZEJlKGBSZWZsZWN0LmdldChkb2N1bWVudC5ib2R5LmRhdGFzZXQsIDApYCwg
YCJzd2VldCJgKTsKIAotZGVidWcoIkRPTVN0cmluZ01hcCBmYWxscyBiYWNrIHRvIE9yZGluYXJ5
U2V0IGlmIHJlY2VpdmVyIGlzIGFsdGVyZWQuIik7CitkZWJ1ZygiRE9NU3RyaW5nTWFwIGlnbm9y
ZXMgdGhlIHJlY2VpdmVyLiBUaGVzZSBwdXREZWxlZ2F0ZSBvbmx5IHdvcmsgd2l0aCA6OnB1dCAo
bm90IDo6ZGVmaW5lT3duUHJvcGVydHkpLiBTbyB0aGV5IGJlaGF2ZSBhcyB0aGUgc3BlY2lhbCBz
ZXR0ZXIsIHdlIHNob3VsZCBub3QgZmFsbGJhY2sgdG8gdGhlIE9yZGluYXJ5U2V0LiIpOwogdmFy
IHJlY2VpdmVyID0ge307CiBzaG91bGRCZShgUmVmbGVjdC5zZXQoZG9jdW1lbnQuYm9keS5kYXRh
c2V0LCAiY29jb2EiLCAib2siLCByZWNlaXZlcilgLCBgdHJ1ZWApOwotc2hvdWxkQmUoYFJlZmxl
Y3QuZ2V0KGRvY3VtZW50LmJvZHkuZGF0YXNldCwgImNvY29hIilgLCBgInN3ZWV0ImApOwotc2hv
dWxkQmUoYFJlZmxlY3QuZ2V0KHJlY2VpdmVyLCAiY29jb2EiKWAsIGAib2siYCk7CitzaG91bGRC
ZShgUmVmbGVjdC5nZXQoZG9jdW1lbnQuYm9keS5kYXRhc2V0LCAiY29jb2EiKWAsIGAib2siYCk7
CitzaG91bGRCZShgUmVmbGVjdC5nZXQocmVjZWl2ZXIsICJjb2NvYSIpYCwgYHVuZGVmaW5lZGAp
OwogdmFyIHJlY2VpdmVyID0ge307CiBzaG91bGRCZShgUmVmbGVjdC5zZXQoZG9jdW1lbnQuYm9k
eS5kYXRhc2V0LCAwLCAib2siLCByZWNlaXZlcilgLCBgdHJ1ZWApOwotc2hvdWxkQmUoYFJlZmxl
Y3QuZ2V0KGRvY3VtZW50LmJvZHkuZGF0YXNldCwgMClgLCBgInN3ZWV0ImApOwotc2hvdWxkQmUo
YFJlZmxlY3QuZ2V0KHJlY2VpdmVyLCAwKWAsIGAib2siYCk7CitzaG91bGRCZShgUmVmbGVjdC5n
ZXQoZG9jdW1lbnQuYm9keS5kYXRhc2V0LCAwKWAsIGAib2siYCk7CitzaG91bGRCZShgUmVmbGVj
dC5nZXQocmVjZWl2ZXIsIDApYCwgYHVuZGVmaW5lZGApOwogCiBkZWJ1ZygiQ3VzdG9tSW5kZXhl
ZFNldHRlciIpOwogdmFyIHNlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0U2Vs
ZWN0Iik7CkBAIC0xNDYsMTEgKzE0NiwxMSBAQCBzaG91bGRCZShgUmVmbGVjdC5zZXQoc2VsZWN0
LCA0NCwgb3B0aW9uMilgLCBgdHJ1ZWApOwogc2hvdWxkQmUoYFJlZmxlY3QuZ2V0KHNlbGVjdCwg
NDQpLnZhbHVlYCwgYCJraWxpbWFuamFybyJgKTsKIHNob3VsZFRocm93KGBSZWZsZWN0LnNldChz
ZWxlY3QsIDIwLCAiS2lsaW1hbmphcm8iKWApOwogCi1kZWJ1ZygiQ3VzdG9tSW5kZXhlZFNldHRl
ciBmYWxscyBiYWNrIHRvIE9yZGluYXJ5U2V0IGlmIHJlY2VpdmVyIGlzIGFsdGVyZWQuIik7Citk
ZWJ1ZygiQ3VzdG9tSW5kZXhlZFNldHRlciBpZ25vcmVzIHRoZSByZWNlaXZlci4gVGhlc2UgbWV0
aG9kcyBvbmx5IHdvcmsgd2l0aCA6OnB1dCAobm90IDo6ZGVmaW5lT3duUHJvcGVydHkpLiBTbyB0
aGV5IGJlaGF2ZSBhcyB0aGUgc3BlY2lhbCBzZXR0ZXIsIHdlIHNob3VsZCBub3QgZmFsbGJhY2sg
dG8gdGhlIE9yZGluYXJ5U2V0LiIpOwogdmFyIG9wdGlvbjMgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJvcHRpb24iKTsKIG9wdGlvbjMudmFsdWUgPSAicmFiYml0IjsKIG9wdGlvbjMudGV4dENv
bnRlbnQgPSAiUmFiYml0IjsKIHZhciByZWNlaXZlciA9IHt9Owogc2hvdWxkQmUoYFJlZmxlY3Qu
c2V0KHNlbGVjdCwgMCwgb3B0aW9uMywgcmVjZWl2ZXIpYCwgYHRydWVgKTsKLXNob3VsZEJlKGBS
ZWZsZWN0LmdldChyZWNlaXZlciwgMClgLCBgb3B0aW9uM2ApOwotc2hvdWxkQmUoYFJlZmxlY3Qu
Z2V0KHNlbGVjdCwgMClgLCBgc2VsZWN0LmNoaWxkcmVuWzBdYCk7CitzaG91bGRCZShgUmVmbGVj
dC5nZXQocmVjZWl2ZXIsIDApYCwgYHVuZGVmaW5lZGApOworc2hvdWxkQmUoYFJlZmxlY3QuZ2V0
KHNlbGVjdCwgMClgLCBgb3B0aW9uM2ApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cg
Yi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBkYWQzYjUyYzYyZTBjNDZkZjc4YjQ3ZTc3NzM4YTNl
ZDI1Y2YyYzAxLi5hNDI5NTFkYzY4ZGZlNDA4NGMzNGU1YjIzMTI0NjUyMDVjYTAwMWU1IDEwMDY0
NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI3IEBACisyMDIxLTA1LTE4ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUu
Y29tPgorCisgICAgICAgIFRlbXBvcmFyaWx5IHJldmVydCByMjc2NTkyIGFzIGl0IGJyZWFrcyBz
b21lIG5hdGl2ZSBhcHBzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjU5MTcKKworICAgICAgICBVbnJldmlld2VkLCByZXZlcnQuCisKKyAgICAgICAg
KiBtaWNyb2JlbmNobWFya3MvcHV0LXNsb3ctbm8tY2FjaGUtYXJyYXkuanM6IFJlbW92ZWQuCisg
ICAgICAgICogbWljcm9iZW5jaG1hcmtzL3B1dC1zbG93LW5vLWNhY2hlLWZ1bmN0aW9uLmpzOiBS
ZW1vdmVkLgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9wdXQtc2xvdy1uby1jYWNoZS1qcy1w
cm94eS5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvcHV0LXNsb3ctbm8t
Y2FjaGUtbG9uZy1wcm90b3R5cGUtY2hhaW4uanM6IFJlbW92ZWQuCisgICAgICAgICogbWljcm9i
ZW5jaG1hcmtzL3B1dC1zbG93LW5vLWNhY2hlLmpzOiBSZW1vdmVkLgorICAgICAgICAqIG1pY3Jv
YmVuY2htYXJrcy9yZWZsZWN0LXNldC13aXRoLXJlY2VpdmVyLmpzOiBSZW1vdmVkLgorICAgICAg
ICAqIHN0cmVzcy9jdXN0b20tZ2V0LXNldC1wcm90by1jaGFpbi1wdXQuanM6CisgICAgICAgIChn
ZXRPYmplY3RzKToKKyAgICAgICAgKGxldC5iYXNlLm9mLmdldEJhc2VzKToKKyAgICAgICAgKiBz
dHJlc3MvbW9kdWxlLW5hbWVzcGFjZS1hY2Nlc3Mtc2V0LWZhaWxzLmpzOiBSZW1vdmVkLgorICAg
ICAgICAqIHN0cmVzcy9wdXQtbm9uLXJlaWZpZWQtc3RhdGljLWFjY2Vzc29yLW9yLWN1c3RvbS5q
czogUmVtb3ZlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LW5vbi1yZWlmaWVkLXN0YXRpYy1mdW5j
dGlvbi1vci1jdXN0b20uanM6IFJlbW92ZWQuCisgICAgICAgICogc3RyZXNzL3B1dC10by1wcmlt
aXRpdmUtbm9uLXJlaWZpZWQtc3RhdGljLWN1c3RvbS5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBz
dHJlc3MvcHV0LXRvLXByaW1pdGl2ZS5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0
LXRvLXByb3RvLWNoYWluLW92ZXJyaWRlcy1wdXQuanM6IFJlbW92ZWQuCisgICAgICAgICogc3Ry
ZXNzL3R5cGVkLWFycmF5LWNhbm9uaWNhbC1udW1lcmljLWluZGV4LXN0cmluZy1zZXQuanM6IFJl
bW92ZWQuCisKIDIwMjEtMDUtMTcgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwu
Y29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNzExMTkpOiBPYmplY3QgbWV0aG9kcyBkZWZp
bmVkIHdpdGggc2hvcnRoYW5kIG5vdGF0aW9uIGNhbm5vdCBhY2Nlc3MgImNhbGxlciIgaW4gbm9u
LXN0cmljdCBtb2RlCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wdXQtc2xv
dy1uby1jYWNoZS1hcnJheS5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3B1dC1zbG93LW5v
LWNhY2hlLWFycmF5LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlN2E2NTg4MTBl
OTBmNGZkMDg4MTMxMGRkNTk3Yzg4Y2EzY2UwNDdiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3B1dC1zbG93LW5v
LWNhY2hlLWFycmF5LmpzCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi0oZnVuY3Rpb24o
KSB7Ci0gICAgdmFyIGFycmF5ID0gW107Ci0KLSAgICBmb3IgKHZhciBqID0gMDsgaiA8IDFlNTsg
aisrKQotICAgICAgICBhcnJheVsiZm9vIiArIGpdID0gajsKLX0pKCk7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wdXQtc2xvdy1uby1jYWNoZS1mdW5jdGlvbi5qcyBiL0pT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL3B1dC1zbG93LW5vLWNhY2hlLWZ1bmN0aW9uLmpzCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMWZmMDI0NzE2OTQ5Y2U2NzhjZWNlNWRjNGMyYmNk
ZWMwNTJkZjQ3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3B1dC1zbG93LW5vLWNhY2hlLWZ1bmN0aW9uLmpzCisr
KyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi0oZnVuY3Rpb24oKSB7Ci0gICAgY2xhc3MgQSB7
fQotICAgIGNsYXNzIEIgZXh0ZW5kcyBBIHt9Ci0gICAgY2xhc3MgQyBleHRlbmRzIEIge30KLQot
ICAgIGZvciAodmFyIGogPSAwOyBqIDwgMWU1OyBqKyspCi0gICAgICAgIENbImZvbyIgKyBqXSA9
IGo7Ci19KSgpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcHV0LXNsb3ct
bm8tY2FjaGUtanMtcHJveHkuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wdXQtc2xvdy1u
by1jYWNoZS1qcy1wcm94eS5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODM1MGZk
YWI2YTY0NTVmZTg3NzUwZjgwN2E0ZDY1M2ZkMDE4ZjA4Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wdXQtc2xv
dy1uby1jYWNoZS1qcy1wcm94eS5qcworKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotKGZ1
bmN0aW9uKCkgewotICAgIHZhciBwcm94eSA9ICR2bS5jcmVhdGVQcm94eSh7IHNldCBmb28oX3Yp
IHt9IH0pOwotCi0gICAgZm9yICh2YXIgaiA9IDA7IGogPCAxZTU7IGorKykKLSAgICAgICAgcHJv
eHlbImZvbyIgKyBqXSA9IGo7Ci19KSgpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNo
bWFya3MvcHV0LXNsb3ctbm8tY2FjaGUtbG9uZy1wcm90b3R5cGUtY2hhaW4uanMgYi9KU1Rlc3Rz
L21pY3JvYmVuY2htYXJrcy9wdXQtc2xvdy1uby1jYWNoZS1sb25nLXByb3RvdHlwZS1jaGFpbi5q
cwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTM3MjNkZTY4ZjNjZDYxN2JkYTM2ZWYz
NjQ0Zjc2ZjVkYTJlNDgxMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wdXQtc2xvdy1uby1jYWNoZS1sb25nLXBy
b3RvdHlwZS1jaGFpbi5qcworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotKGZ1bmN0aW9u
KCkgewotICAgIHZhciBiYXNlID0geyBzZXQgZm9vKF92KSB7fSB9OwotICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgMWUzOyBpKyspCi0gICAgICAgIGJhc2UgPSBPYmplY3QuY3JlYXRlKGJhc2UpOwot
Ci0gICAgZm9yICh2YXIgaiA9IDA7IGogPCAzZTM7IGorKykKLSAgICAgICAgYmFzZVsiZm9vIiAr
IGpdID0gajsKLX0pKCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wdXQt
c2xvdy1uby1jYWNoZS5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3B1dC1zbG93LW5vLWNh
Y2hlLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmVhNDZhNzdlMzQwNGFmYmFk
ODA0YjI5NGUwMjFkMWQ3MmFlYjY0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3B1dC1zbG93LW5vLWNhY2hlLmpz
CisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi0oZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGJh
c2UgPSB7IHNldCBmb28oX3YpIHt9IH07Ci0KLSAgICBmb3IgKHZhciBqID0gMDsgaiA8IDFlNTsg
aisrKQotICAgICAgICBiYXNlWyJmb28iICsgal0gPSBqOwotfSkoKTsKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL3JlZmxlY3Qtc2V0LXdpdGgtcmVjZWl2ZXIuanMgYi9KU1Rl
c3RzL21pY3JvYmVuY2htYXJrcy9yZWZsZWN0LXNldC13aXRoLXJlY2VpdmVyLmpzCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzU0ZjNhZGFhM2I5ZmRhN2IxMmI1NzIzZmVjYzM5MWNk
NDZiZjNlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0pT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL3JlZmxlY3Qtc2V0LXdpdGgtcmVjZWl2ZXIuanMKKysrIC9k
ZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLShmdW5jdGlvbigpIHsKLSAgICB2YXIgdGFyZ2V0ID0g
bmV3IChjbGFzcyB7fSk7Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgaSsrKQotICAg
ICAgICBSZWZsZWN0LnNldCh0YXJnZXQsICJmb28iLCAxLCB7fSk7Ci19KSgpOwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvY3VzdG9tLWdldC1zZXQtcHJvdG8tY2hhaW4tcHV0LmpzIGIvSlNU
ZXN0cy9zdHJlc3MvY3VzdG9tLWdldC1zZXQtcHJvdG8tY2hhaW4tcHV0LmpzCmluZGV4IDJjNmIx
NTg3YTQ0ZmYxNDI3NDU3OGE5Y2RlOTcwYmY0NmEzMmE5ZWIuLjkzODdlNzRiYTA2OGExNjNiZWE2
ZGY0NzI1ZWVmY2Y1YmIwY2ZkOTAgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2N1c3RvbS1n
ZXQtc2V0LXByb3RvLWNoYWluLXB1dC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9jdXN0b20tZ2V0
LXNldC1wcm90by1jaGFpbi1wdXQuanMKQEAgLTM3LDggKzM3LDggQEAgZnVuY3Rpb24gZ2V0T2Jq
ZWN0cygpIHsKICAgICAgICAgLi4ucHJpbWl0aXZlcy5tYXAoT2JqZWN0KSwKICAgICAgICAgT2Jq
ZWN0LmNyZWF0ZShjdXN0b21UZXN0R2V0dGVyU2V0dGVyKSwKICAgICAgICAgT2JqZWN0LmNyZWF0
ZShPYmplY3QuY3JlYXRlKGN1c3RvbVRlc3RHZXR0ZXJTZXR0ZXIpKSwKLSAgICAgICAgT2JqZWN0
LmNyZWF0ZShuZXcgUHJveHkoY3VzdG9tVGVzdEdldHRlclNldHRlciwge30pKSwKLSAgICAgICAg
T2JqZWN0LmNyZWF0ZSgkdm0uY3JlYXRlUHJveHkoY3VzdG9tVGVzdEdldHRlclNldHRlcikpLAor
ICAgICAgICAvLyBGSVhNRTogb3JkaW5hcnlTZXRTbG93KCkgc2hvdWxkIGhhbmRsZSBDdXN0b217
QWNjZXNzb3IsVmFsdWV9IGRlc2NyaXB0b3JzLgorICAgICAgICAvLyBuZXcgUHJveHkoY3VzdG9t
VGVzdEdldHRlclNldHRlciwge30pLAogICAgIF07CiB9CiAKQEAgLTg1LDEzICs4NSwxMyBAQCBm
dW5jdGlvbiBnZXRCYXNlcygpIHsKIH0pKCk7CiAKIC8vIEN1c3RvbVZhbHVlOiBzZXR0ZXIgcmV0
dXJucyB8ZmFsc2V8Ci0vLyBGSVhNRTogT25jZSBsZWdhY3kgUmVnRXhwIGZlYXR1cmVzIGFyZSBp
bXBsZW1lbnRlZCwgdGhlcmUgd291bGQgYmUgbm8gdXNlIGNhc2UgZm9yIGNhbGxpbmcgQ3VzdG9t
VmFsdWUgc2V0dGVyIGlmIHJlY2VpdmVyIGlzIGFsdGVyZWQuCiAoKCkgPT4gewogICAgIGZvciAo
bGV0IGJhc2Ugb2YgZ2V0QmFzZXMoKSkgewogICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEw
MDsgKytpKQogICAgICAgICAgICAgYmFzZS5jdXN0b21WYWx1ZSA9IDE7CisgICAgICAgIC8vIFRo
aXMgaXMgd2VpcmQsIGJ1dCBpdCBpc24ndCBleHBvc2VkIHRvIHVzZXJsYW5kIGNvZGU6CiAgICAg
ICAgIGFzc2VydCghYmFzZS5oYXNPd25Qcm9wZXJ0eSgiY3VzdG9tVmFsdWUiKSk7Ci0gICAgICAg
IGFzc2VydChSZWZsZWN0LnNldChPYmplY3QoYmFzZSksICJjdXN0b21WYWx1ZSIsIDEpKTsKKyAg
ICAgICAgYXNzZXJ0KCFSZWZsZWN0LnNldChPYmplY3QoYmFzZSksICJjdXN0b21WYWx1ZSIsIDEp
KTsKICAgICB9CiB9KSgpOwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9tb2R1bGUtbmFt
ZXNwYWNlLWFjY2Vzcy1zZXQtZmFpbHMuanMgYi9KU1Rlc3RzL3N0cmVzcy9tb2R1bGUtbmFtZXNw
YWNlLWFjY2Vzcy1zZXQtZmFpbHMuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNm
ZDliYjllMzliODdiZWY0YWI5MTM5OTA1NWI1ZTEwMjVhNzIxYzIuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvSlNUZXN0cy9zdHJlc3MvbW9kdWxlLW5hbWVz
cGFjZS1hY2Nlc3Mtc2V0LWZhaWxzLmpzCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAot
Y29uc3QgZXhpc3RpbmdLZXlzID0gWyJjb2NvYSIsICJ0ZXN0IiwgU3ltYm9sLnRvU3RyaW5nVGFn
XTsKLWNvbnN0IG5vbkV4aXN0aW5nS2V5cyA9IFsiZm9vIiwgU3ltYm9sKCJmb28iKV07Ci1jb25z
dCBhbGxLZXlzID0gWy4uLmV4aXN0aW5nS2V5cywgLi4ubm9uRXhpc3RpbmdLZXlzXTsKLWNvbnN0
IHRlc3RWYWx1ZSA9IE9iamVjdC5mcmVlemUoe30pOwotCi1mdW5jdGlvbiBhc3NlcnQoeCwga2V5
KSB7Ci0gICAgaWYgKCF4KQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEJhZCBhc3NlcnRpb24h
IEtleTogJHtTdHJpbmcoa2V5KX1gKTsKLX0KLQotZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywg
ZXJyb3JNZXNzYWdlKSB7Ci0gICAgbGV0IGVycm9yVGhyb3duID0gZmFsc2U7Ci0gICAgdHJ5IHsK
LSAgICAgICAgZnVuYygpOwotICAgIH0gY2F0Y2ggKGVycm9yKSB7Ci0gICAgICAgIGVycm9yVGhy
b3duID0gdHJ1ZTsKLSAgICAgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkK
LSAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQmFkIGVycm9yOiAke2Vycm9yfWApOwotICAg
IH0KLSAgICBpZiAoIWVycm9yVGhyb3duKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkRpZG4n
dCB0aHJvdyEiKTsKLX0KLQotZnVuY3Rpb24gdGVzdERpcmVjdFNldChucykgewotICAgIGZvciAo
Y29uc3Qga2V5IG9mIGFsbEtleXMpIHsKLSAgICAgICAgbnNba2V5XSA9IHRlc3RWYWx1ZTsKLSAg
ICAgICAgYXNzZXJ0KG5zW2tleV0gIT09IHRlc3RWYWx1ZSwga2V5KTsKLQotICAgICAgICBzaG91
bGRUaHJvdygoKSA9PiB7ICJ1c2Ugc3RyaWN0IjsgbnNba2V5XSA9IHRlc3RWYWx1ZTsgfSwgIlR5
cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS4iKTsKLSAg
ICAgICAgYXNzZXJ0KG5zW2tleV0gIT09IHRlc3RWYWx1ZSwga2V5KTsKLSAgICB9Ci19Ci0KLWZ1
bmN0aW9uIHRlc3RQcm90b3R5cGVDaGFpblNldChucykgewotICAgIGZvciAoY29uc3Qga2V5IG9m
IGFsbEtleXMpIHsKLSAgICAgICAgY29uc3QgaGVpciA9IE9iamVjdC5jcmVhdGUobnMpOwotCi0g
ICAgICAgIGhlaXJba2V5XSA9IHRlc3RWYWx1ZTsKLSAgICAgICAgYXNzZXJ0KE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoaGVpciwga2V5KSA9PT0gdW5kZWZpbmVkLCBrZXkpOwotCi0g
ICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgInVzZSBzdHJpY3QiOyBoZWlyW2tleV0gPSB0ZXN0
VmFsdWU7IH0sICJUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJv
cGVydHkuIik7Ci0gICAgICAgIGFzc2VydChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KGhlaXIsIGtleSkgPT09IHVuZGVmaW5lZCwga2V5KTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHRl
c3RSZWZsZWN0U2V0KG5zKSB7Ci0gICAgInVzZSBzdHJpY3QiOwotCi0gICAgZm9yIChjb25zdCBl
eGlzdGluZ0tleSBvZiBleGlzdGluZ0tleXMpIHsKLSAgICAgICAgYXNzZXJ0KCFSZWZsZWN0LnNl
dChucywgZXhpc3RpbmdLZXksIHRlc3RWYWx1ZSksIGV4aXN0aW5nS2V5KTsKLQotICAgICAgICBj
b25zdCB0YXJnZXQgPSB7fTsKLSAgICAgICAgYXNzZXJ0KCFSZWZsZWN0LnNldCh0YXJnZXQsIGV4
aXN0aW5nS2V5LCB0ZXN0VmFsdWUsIG5zKSwgZXhpc3RpbmdLZXkpOwotCi0gICAgICAgIGNvbnN0
IGlzV3JpdGFibGUgPSBleGlzdGluZ0tleSAhPT0gU3ltYm9sLnRvU3RyaW5nVGFnOwotICAgICAg
ICBhc3NlcnQoUmVmbGVjdC5zZXQodGFyZ2V0LCBleGlzdGluZ0tleSwgbnNbZXhpc3RpbmdLZXld
LCBucykgPT09IGlzV3JpdGFibGUsIGV4aXN0aW5nS2V5KTsKLQotICAgICAgICBhc3NlcnQobnNb
ZXhpc3RpbmdLZXldICE9PSB0ZXN0VmFsdWUsIGV4aXN0aW5nS2V5KTsKLSAgICAgICAgYXNzZXJ0
KHRhcmdldFtleGlzdGluZ0tleV0gPT09IHVuZGVmaW5lZCwgZXhpc3RpbmdLZXkpOwotICAgIH0K
LQotICAgIGZvciAoY29uc3Qgbm9uRXhpc3RpbmdLZXkgb2Ygbm9uRXhpc3RpbmdLZXlzKSB7Ci0g
ICAgICAgIGFzc2VydCghUmVmbGVjdC5zZXQobnMsIG5vbkV4aXN0aW5nS2V5LCB0ZXN0VmFsdWUp
LCBub25FeGlzdGluZ0tleSk7Ci0gICAgICAgIGFzc2VydChuc1tub25FeGlzdGluZ0tleV0gPT09
IHVuZGVmaW5lZCwgbm9uRXhpc3RpbmdLZXkpOwotCi0gICAgICAgIGNvbnN0IHRhcmdldCA9IHt9
OwotICAgICAgICBhc3NlcnQoIVJlZmxlY3Quc2V0KHRhcmdldCwgbm9uRXhpc3RpbmdLZXksIHRl
c3RWYWx1ZSwgbnMpLCBub25FeGlzdGluZ0tleSk7Ci0gICAgICAgIGFzc2VydCh0YXJnZXRbbm9u
RXhpc3RpbmdLZXldID09PSB1bmRlZmluZWQsIG5vbkV4aXN0aW5nS2V5KTsKLSAgICB9Ci0KLSAg
ICBmb3IgKGNvbnN0IGtleSBvZiBhbGxLZXlzKSB7Ci0gICAgICAgIGNvbnN0IHRhcmdldCA9IE9i
amVjdC5jcmVhdGUobnMpOwotICAgICAgICBjb25zdCByZWNlaXZlciA9IHt9OwotCi0gICAgICAg
IGFzc2VydCghUmVmbGVjdC5zZXQodGFyZ2V0LCBrZXksIHRlc3RWYWx1ZSwgcmVjZWl2ZXIpLCBr
ZXkpOwotICAgICAgICBhc3NlcnQoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJn
ZXQsIGtleSkgPT09IHVuZGVmaW5lZCwga2V5KTsKLSAgICAgICAgYXNzZXJ0KE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IocmVjZWl2ZXIsIGtleSkgPT09IHVuZGVmaW5lZCwga2V5KTsK
LSAgICB9Ci19Ci0KLWltcG9ydCgiLi9yZXNvdXJjZXMvbW9kdWxlLW5hbWVzcGFjZS1hY2Nlc3Mu
anMiKS50aGVuKG5zID0+IHsKLSAgICB0ZXN0RGlyZWN0U2V0KG5zKTsKLSAgICB0ZXN0UHJvdG90
eXBlQ2hhaW5TZXQobnMpOwotICAgIHRlc3RSZWZsZWN0U2V0KG5zKTsKLX0pLmNhdGNoKGVyciA9
PiB7Ci0gICAgcHJpbnQoYCEhISAke2Vycn1cbiR7ZXJyLnN0YWNrfWApOwotICAgICR2bS5hYm9y
dCgpOwotfSk7Ci0KLWRyYWluTWljcm90YXNrcygpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvcHV0LW5vbi1yZWlmaWVkLXN0YXRpYy1hY2Nlc3Nvci1vci1jdXN0b20uanMgYi9KU1Rlc3Rz
L3N0cmVzcy9wdXQtbm9uLXJlaWZpZWQtc3RhdGljLWFjY2Vzc29yLW9yLWN1c3RvbS5qcwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDhkNTViM2IyMTNhMDI0Yzg2YjVmODJkYmI1NTY0
YmMzMzNkMjVlZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9KU1Rlc3RzL3N0cmVzcy9wdXQtbm9uLXJlaWZpZWQtc3RhdGljLWFjY2Vzc29yLW9yLWN1c3Rv
bS5qcworKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLSJ1c2Ugc3RyaWN0IjsKLWNvbnN0
IHRlc3RWYWx1ZSA9IE9iamVjdC5mcmVlemUoe30pOwotCi1mdW5jdGlvbiBhc3NlcnQoeCwga2V5
KSB7Ci0gICAgaWYgKCF4KQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEtleTogIiR7a2V5fSIu
IEJhZCBhc3NlcnRpb24hYCk7Ci19Ci0KLWZ1bmN0aW9uKiB0ZXN0Q2FzZXMoKSB7Ci0gICAgZm9y
IChjb25zdCBrZXkgb2YgWyJkZXNjcmlwdGlvbiJdKQotICAgICAgICB5aWVsZCBbJHZtLmNyZWF0
ZUdsb2JhbE9iamVjdCgpLlN5bWJvbC5wcm90b3R5cGUsIGtleV07Ci0gICAgZm9yIChjb25zdCBr
ZXkgb2YgWyJidWZmZXIiLCAiYnl0ZUxlbmd0aCIsICJieXRlT2Zmc2V0Il0pCi0gICAgICAgIHlp
ZWxkIFskdm0uY3JlYXRlR2xvYmFsT2JqZWN0KCkuRGF0YVZpZXcucHJvdG90eXBlLCBrZXldOwot
ICAgIGZvciAoY29uc3Qga2V5IG9mIFsiYmFzZU5hbWUiLCAiY2FzZUZpcnN0IiwgImhvdXJDeWNs
ZSIsICJudW1lcmljIiwgInJlZ2lvbiJdKQotICAgICAgICB5aWVsZCBbJHZtLmNyZWF0ZUdsb2Jh
bE9iamVjdCgpLkludGwuTG9jYWxlLnByb3RvdHlwZSwga2V5XTsKLQotICAgIGZvciAoY29uc3Qg
a2V5IG9mIFsidGVzdFN0YXRpY0FjY2Vzc29yRG9udEVudW0iLCAidGVzdFN0YXRpY0FjY2Vzc29y
UmVhZE9ubHkiXSkKLSAgICAgICAgeWllbGQgWyR2bS5jcmVhdGVTdGF0aWNDdXN0b21BY2Nlc3Nv
cigpLCBrZXldOwotICAgIHlpZWxkIFskdm0uY3JlYXRlU3RhdGljQ3VzdG9tVmFsdWUoKSwgInRl
c3RTdGF0aWNWYWx1ZVJlYWRPbmx5Il07Ci19Ci0KLWZvciAoY29uc3QgW29iamVjdCwga2V5XSBv
ZiB0ZXN0Q2FzZXMoKSkgewotICAgIGNvbnN0IHRhcmdldCA9IHt9OwotICAgIGFzc2VydCghUmVm
bGVjdC5zZXQodGFyZ2V0LCBrZXksIHRlc3RWYWx1ZSwgb2JqZWN0KSwga2V5KTsKLSAgICBhc3Nl
cnQoIXRhcmdldC5oYXNPd25Qcm9wZXJ0eShrZXkpLCBrZXkpOwotICAgIGFzc2VydChPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwga2V5KS52YWx1ZSAhPT0gdGVzdFZhbHVl
LCBrZXkpOwotfQotCi1mb3IgKGNvbnN0IFtvYmplY3QsIGtleV0gb2YgdGVzdENhc2VzKCkpIHsK
LSAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBrZXksIHsgdmFsdWU6IHt9LCB3cml0
YWJsZTogZmFsc2UgfSk7Ci0gICAgY29uc3QgdGFyZ2V0ID0ge307Ci0gICAgYXNzZXJ0KCFSZWZs
ZWN0LnNldCh0YXJnZXQsIGtleSwgdGVzdFZhbHVlLCBvYmplY3QpLCBrZXkpOwotICAgIGFzc2Vy
dCghdGFyZ2V0Lmhhc093blByb3BlcnR5KGtleSksIGtleSk7Ci0gICAgYXNzZXJ0KE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBrZXkpLnZhbHVlICE9PSB0ZXN0VmFsdWUs
IGtleSk7Ci19Ci0KLWZvciAoY29uc3QgW29iamVjdCwga2V5XSBvZiB0ZXN0Q2FzZXMoKSkgewot
ICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIGtleSwgeyB2YWx1ZToge30sIHdyaXRh
YmxlOiB0cnVlLCBjb25maWd1cmFibGU6IGZhbHNlIH0pOwotICAgIG9iamVjdFtrZXldID0gdGVz
dFZhbHVlOwotCi0gICAgY29uc3QgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3Iob2JqZWN0LCBrZXkpOwotICAgIGFzc2VydChkZXNjLnZhbHVlID09PSB0ZXN0VmFsdWUsIGtl
eSk7Ci0gICAgYXNzZXJ0KGRlc2Mud3JpdGFibGUsIGtleSk7Ci0gICAgYXNzZXJ0KCFkZXNjLmVu
dW1lcmFibGUsIGtleSk7Ci0gICAgYXNzZXJ0KCFkZXNjLmNvbmZpZ3VyYWJsZSwga2V5KTsKLX0K
LQotZm9yIChjb25zdCBbb2JqZWN0LCBrZXldIG9mIHRlc3RDYXNlcygpKSB7Ci0gICAgT2JqZWN0
LmRlZmluZVByb3BlcnR5KG9iamVjdCwga2V5LCB7IHZhbHVlOiB7fSwgd3JpdGFibGU6IHRydWUs
IGVudW1lcmFibGU6IHRydWUgfSk7Ci0gICAgY29uc3QgdGFyZ2V0ID0ge307Ci0gICAgYXNzZXJ0
KFJlZmxlY3Quc2V0KHRhcmdldCwga2V5LCB0ZXN0VmFsdWUsIG9iamVjdCksIGtleSk7Ci0KLSAg
ICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIGtl
eSk7Ci0gICAgYXNzZXJ0KGRlc2MudmFsdWUgPT09IHRlc3RWYWx1ZSwga2V5KTsKLSAgICBhc3Nl
cnQoZGVzYy53cml0YWJsZSwga2V5KTsKLSAgICBhc3NlcnQoZGVzYy5lbnVtZXJhYmxlLCBrZXkp
OwotICAgIGFzc2VydChkZXNjLmNvbmZpZ3VyYWJsZSwga2V5KTsKLX0KZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL3B1dC1ub24tcmVpZmllZC1zdGF0aWMtZnVuY3Rpb24tb3ItY3VzdG9tLmpz
IGIvSlNUZXN0cy9zdHJlc3MvcHV0LW5vbi1yZWlmaWVkLXN0YXRpYy1mdW5jdGlvbi1vci1jdXN0
b20uanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjMWYzYWM3NTcyNjQ5NzVkYWMz
OTUxZjQ4OTVmOWIyMjRmOTFmZDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvSlNUZXN0cy9zdHJlc3MvcHV0LW5vbi1yZWlmaWVkLXN0YXRpYy1mdW5jdGlv
bi1vci1jdXN0b20uanMKKysrIC9kZXYvbnVsbApAQCAtMSwxNDMgKzAsMCBAQAotInVzZSBzdHJp
Y3QiOwotY29uc3QgdGVzdFZhbHVlID0gT2JqZWN0LmZyZWV6ZSh7fSk7Ci0KLWZ1bmN0aW9uIGFz
c2VydCh4LCBrZXkpIHsKLSAgICBpZiAoIXgpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcihgS2V5
OiAiJHtrZXl9Ii4gQmFkIGFzc2VydGlvbiFgKTsKLX0KLQotZnVuY3Rpb24gc2hvdWxkVGhyb3co
ZnVuYywgZXJyb3JNZXNzYWdlLCBrZXkpIHsKLSAgICBsZXQgZXJyb3JUaHJvd24gPSBmYWxzZTsK
LSAgICB0cnkgewotICAgICAgICBmdW5jKCk7Ci0gICAgfSBjYXRjaCAoZXJyb3IpIHsKLSAgICAg
ICAgZXJyb3JUaHJvd24gPSB0cnVlOwotICAgICAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJy
b3JNZXNzYWdlKQotICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBLZXk6ICIke2tleX0iLiBC
YWQgZXJyb3I6ICR7ZXJyb3J9YCk7Ci0gICAgfQotICAgIGlmICghZXJyb3JUaHJvd24pCi0gICAg
ICAgIHRocm93IG5ldyBFcnJvcihgS2V5OiAiJHtrZXl9Ii4gRGlkbid0IHRocm93IWApOwotfQot
Ci1mdW5jdGlvbiogdGVzdENhc2VzKCkgewotICAgIC8vIGhhc1NldHRlck9yUmVhZG9ubHlQcm9w
ZXJ0aWVzOiBmYWxzZQotICAgIGZvciAoY29uc3Qga2V5IG9mIFsiaXNGaW5pdGUiLCAiZXZhbCIs
ICJnbG9iYWxUaGlzIiwgInBhcnNlSW50IiwgIkV2YWxFcnJvciIsICJKU09OIiwgIlVpbnQ4Q2xh
bXBlZEFycmF5IiwgIldlYWtNYXAiXSkKLSAgICAgICAgeWllbGQgWyR2bS5jcmVhdGVHbG9iYWxP
YmplY3QoKSwga2V5XTsKLSAgICBmb3IgKGNvbnN0IGtleSBvZiBbInNlYWwiLCAiaXMiLCAidmFs
dWVzIiwgImZyb21FbnRyaWVzIiwgImRlZmluZVByb3BlcnR5IiwgInNldFByb3RvdHlwZU9mIl0p
Ci0gICAgICAgIHlpZWxkIFskdm0uY3JlYXRlR2xvYmFsT2JqZWN0KCkuT2JqZWN0LCBrZXldOwot
ICAgIGZvciAoY29uc3Qga2V5IG9mIFsiYXBwbHkiLCAiY29uc3RydWN0IiwgImhhcyIsICJwcmV2
ZW50RXh0ZW5zaW9ucyIsICJnZXRQcm90b3R5cGVPZiJdKQotICAgICAgICB5aWVsZCBbJHZtLmNy
ZWF0ZUdsb2JhbE9iamVjdCgpLlJlZmxlY3QsIGtleV07Ci0gICAgZm9yIChjb25zdCBrZXkgb2Yg
WyJ0b0RhdGVTdHJpbmciLCAidG9Mb2NhbGVTdHJpbmciLCAiZ2V0VVRDTW9udGgiLCAiZ2V0RGF5
IiwgInNldFVUQ01pbnV0ZXMiLCAic2V0TW9udGgiXSkKLSAgICAgICAgeWllbGQgWyR2bS5jcmVh
dGVHbG9iYWxPYmplY3QoKS5EYXRlLnByb3RvdHlwZSwga2V5XTsKLSAgICBmb3IgKGNvbnN0IGtl
eSBvZiBbImNvbmNhdCIsICJtYXRjaCIsICJwYWRTdGFydCIsICJib2xkIiwgImZpeGVkIiwgInNt
YWxsIiwgInN1YiJdKQotICAgICAgICB5aWVsZCBbJHZtLmNyZWF0ZUdsb2JhbE9iamVjdCgpLlN0
cmluZy5wcm90b3R5cGUsIGtleV07Ci0KLSAgICAvLyBoYXNTZXR0ZXJPclJlYWRvbmx5UHJvcGVy
dGllczogdHJ1ZQotICAgIGZvciAoY29uc3Qga2V5IG9mIFsiZ2V0VWludDE2IiwgInNldEludDgi
LCAiZ2V0RmxvYXQzMiIsICJzZXRCaWdVaW50NjQiXSkKLSAgICAgICAgeWllbGQgWyR2bS5jcmVh
dGVHbG9iYWxPYmplY3QoKS5EYXRhVmlldy5wcm90b3R5cGUsIGtleV07Ci0gICAgZm9yIChjb25z
dCBrZXkgb2YgWyJ0b1N0cmluZyIsICJ2YWx1ZU9mIl0pCi0gICAgICAgIHlpZWxkIFskdm0uY3Jl
YXRlR2xvYmFsT2JqZWN0KCkuU3ltYm9sLnByb3RvdHlwZSwga2V5XTsKLSAgICBmb3IgKGNvbnN0
IGtleSBvZiBbImZvcm1hdFJhbmdlIiwgImZvcm1hdFRvUGFydHMiLCAicmVzb2x2ZWRPcHRpb25z
Il0pCi0gICAgICAgIHlpZWxkIFskdm0uY3JlYXRlR2xvYmFsT2JqZWN0KCkuSW50bC5EYXRlVGlt
ZUZvcm1hdC5wcm90b3R5cGUsIGtleV07Ci0gICAgZm9yIChjb25zdCBrZXkgb2YgWyJmb3JtYXRU
b1BhcnRzIiwgInJlc29sdmVkT3B0aW9ucyJdKQotICAgICAgICB5aWVsZCBbJHZtLmNyZWF0ZUds
b2JhbE9iamVjdCgpLkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZSwga2V5XTsKLSAgICBmb3Ig
KGNvbnN0IGtleSBvZiBbIm1heGltaXplIiwgIm1pbmltaXplIiwgInRvU3RyaW5nIl0pCi0gICAg
ICAgIHlpZWxkIFskdm0uY3JlYXRlR2xvYmFsT2JqZWN0KCkuSW50bC5Mb2NhbGUucHJvdG90eXBl
LCBrZXldOwotCi0gICAgeWllbGQgWyR2bS5jcmVhdGVTdGF0aWNDdXN0b21WYWx1ZSgpLCAidGVz
dFN0YXRpY1ZhbHVlTm9TZXR0ZXIiXTsKLX0KLQotZm9yIChjb25zdCBbb2JqZWN0LCBrZXldIG9m
IHRlc3RDYXNlcygpKSB7Ci0gICAgb2JqZWN0W2tleV0gPSB0ZXN0VmFsdWU7Ci0KLSAgICBjb25z
dCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIGtleSk7Ci0g
ICAgYXNzZXJ0KGRlc2MudmFsdWUgPT09IHRlc3RWYWx1ZSwga2V5KTsKLSAgICBhc3NlcnQoZGVz
Yy53cml0YWJsZSwga2V5KTsKLSAgICBhc3NlcnQoIWRlc2MuZW51bWVyYWJsZSwga2V5KTsKLSAg
ICBhc3NlcnQoZGVzYy5jb25maWd1cmFibGUsIGtleSk7Ci19Ci0KLWZvciAoY29uc3QgW29iamVj
dCwga2V5XSBvZiB0ZXN0Q2FzZXMoKSkgewotICAgIE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyhv
YmplY3QpOwotICAgIG9iamVjdFtrZXldID0gdGVzdFZhbHVlOwotCi0gICAgY29uc3QgZGVzYyA9
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBrZXkpOwotICAgIGFzc2Vy
dChkZXNjLnZhbHVlID09PSB0ZXN0VmFsdWUsIGtleSk7Ci0gICAgYXNzZXJ0KGRlc2Mud3JpdGFi
bGUsIGtleSk7Ci0gICAgYXNzZXJ0KCFkZXNjLmVudW1lcmFibGUsIGtleSk7Ci0gICAgYXNzZXJ0
KGRlc2MuY29uZmlndXJhYmxlLCBrZXkpOwotfQotCi1mb3IgKGNvbnN0IFtvYmplY3QsIGtleV0g
b2YgdGVzdENhc2VzKCkpIHsKLSAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBrZXks
IHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiBmYWxzZSB9KTsKLSAgICBvYmplY3Rb
a2V5XSA9IHRlc3RWYWx1ZTsKLQotICAgIGNvbnN0IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKG9iamVjdCwga2V5KTsKLSAgICBhc3NlcnQoZGVzYy52YWx1ZSA9PT0gdGVz
dFZhbHVlLCBrZXkpOwotICAgIGFzc2VydChkZXNjLndyaXRhYmxlLCBrZXkpOwotICAgIGFzc2Vy
dChkZXNjLmVudW1lcmFibGUsIGtleSk7Ci0gICAgYXNzZXJ0KCFkZXNjLmNvbmZpZ3VyYWJsZSwg
a2V5KTsKLX0KLQotZm9yIChjb25zdCBbb2JqZWN0LCBrZXldIG9mIHRlc3RDYXNlcygpKSB7Ci0g
ICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwga2V5LCB7IHdyaXRhYmxlOiBmYWxzZSB9
KTsKLSAgICBzaG91bGRUaHJvdygoKSA9PiB7IG9iamVjdFtrZXldID0gdGVzdFZhbHVlOyB9LCAi
VHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LiIsIGtl
eSk7Ci0KLSAgICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihv
YmplY3QsIGtleSk7Ci0gICAgYXNzZXJ0KGRlc2MudmFsdWUgIT09IHRlc3RWYWx1ZSwga2V5KTsK
LSAgICBhc3NlcnQoIWRlc2Mud3JpdGFibGUsIGtleSk7Ci0gICAgYXNzZXJ0KCFkZXNjLmVudW1l
cmFibGUsIGtleSk7Ci0gICAgYXNzZXJ0KGRlc2MuY29uZmlndXJhYmxlLCBrZXkpOwotfQotCi1m
b3IgKGNvbnN0IFtvYmplY3QsIGtleV0gb2YgdGVzdENhc2VzKCkpIHsKLSAgICBjb25zdCBoZWly
ID0gT2JqZWN0LmNyZWF0ZShvYmplY3QpOwotICAgIGhlaXJba2V5XSA9IHRlc3RWYWx1ZTsKLQot
ICAgIGNvbnN0IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGhlaXIsIGtl
eSk7Ci0gICAgYXNzZXJ0KGRlc2MudmFsdWUgPT09IHRlc3RWYWx1ZSwga2V5KTsKLSAgICBhc3Nl
cnQoZGVzYy53cml0YWJsZSwga2V5KTsKLSAgICBhc3NlcnQoZGVzYy5lbnVtZXJhYmxlLCBrZXkp
OwotICAgIGFzc2VydChkZXNjLmNvbmZpZ3VyYWJsZSwga2V5KTsKLSAgICBhc3NlcnQob2JqZWN0
W2tleV0gIT09IHRlc3RWYWx1ZSwga2V5KTsKLX0KLQotZm9yIChjb25zdCBbb2JqZWN0LCBrZXld
IG9mIHRlc3RDYXNlcygpKSB7Ci0gICAgY29uc3QgcHJvdG90eXBlID0gT2JqZWN0LmdldFByb3Rv
dHlwZU9mKG9iamVjdCk7Ci0gICAgaWYgKHByb3RvdHlwZSAhPT0gbnVsbCkgewotICAgICAgICBP
YmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG90eXBlLCBrZXksIHsKLSAgICAgICAgICAgIHNldCgp
IHsgdGhyb3cgbmV3IEVycm9yKGAiJHtrZXl9IiBzZXR0ZXIgc2hvdWxkIGJlIHVucmVhY2hhYmxl
IWApOyB9LAotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBjb25zdCBoZWlyID0gT2JqZWN0LmNy
ZWF0ZShvYmplY3QpOwotICAgIGhlaXJba2V5XSA9IHRlc3RWYWx1ZTsKLQotICAgIGNvbnN0IGRl
c2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGhlaXIsIGtleSk7Ci0gICAgYXNz
ZXJ0KGRlc2MudmFsdWUgPT09IHRlc3RWYWx1ZSwga2V5KTsKLSAgICBhc3NlcnQoZGVzYy53cml0
YWJsZSwga2V5KTsKLSAgICBhc3NlcnQoZGVzYy5lbnVtZXJhYmxlLCBrZXkpOwotICAgIGFzc2Vy
dChkZXNjLmNvbmZpZ3VyYWJsZSwga2V5KTsKLSAgICBhc3NlcnQob2JqZWN0W2tleV0gIT09IHRl
c3RWYWx1ZSwga2V5KTsKLX0KLQotZm9yIChjb25zdCBbb2JqZWN0LCBrZXldIG9mIHRlc3RDYXNl
cygpKSB7Ci0gICAgY29uc3QgaGVpciA9IE9iamVjdC5jcmVhdGUob2JqZWN0KTsKLSAgICBPYmpl
Y3QucHJldmVudEV4dGVuc2lvbnMoaGVpcik7Ci0KLSAgICBzaG91bGRUaHJvdygoKSA9PiB7IGhl
aXJba2V5XSA9IHRlc3RWYWx1ZTsgfSwgIlR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0
byByZWFkb25seSBwcm9wZXJ0eS4iLCBrZXkpOwotICAgIGFzc2VydChoZWlyW2tleV0gIT09IHRl
c3RWYWx1ZSwga2V5KTsKLSAgICBhc3NlcnQob2JqZWN0W2tleV0gIT09IHRlc3RWYWx1ZSwga2V5
KTsKLX0KLQotZm9yIChjb25zdCBbb2JqZWN0LCBrZXldIG9mIHRlc3RDYXNlcygpKSB7Ci0gICAg
Y29uc3QgdGFyZ2V0ID0ge307Ci0gICAgYXNzZXJ0KFJlZmxlY3Quc2V0KHRhcmdldCwga2V5LCB0
ZXN0VmFsdWUsIG9iamVjdCksIGtleSk7Ci0gICAgYXNzZXJ0KCF0YXJnZXQuaGFzT3duUHJvcGVy
dHkoa2V5KSwga2V5KTsKLQotICAgIGNvbnN0IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKG9iamVjdCwga2V5KTsKLSAgICBhc3NlcnQoZGVzYy52YWx1ZSA9PT0gdGVzdFZh
bHVlLCBrZXkpOwotICAgIGFzc2VydChkZXNjLndyaXRhYmxlLCBrZXkpOwotICAgIGFzc2VydCgh
ZGVzYy5lbnVtZXJhYmxlLCBrZXkpOwotICAgIGFzc2VydChkZXNjLmNvbmZpZ3VyYWJsZSwga2V5
KTsKLX0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC10by1wcmltaXRpdmUtbm9uLXJl
aWZpZWQtc3RhdGljLWN1c3RvbS5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC10by1wcmltaXRpdmUt
bm9uLXJlaWZpZWQtc3RhdGljLWN1c3RvbS5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZDhjZDM1MzIwYzlmMGM0M2M3MTI0ZTNiMTRhYTc3NzE0MzhjY2IwOC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9wdXQtdG8t
cHJpbWl0aXZlLW5vbi1yZWlmaWVkLXN0YXRpYy1jdXN0b20uanMKKysrIC9kZXYvbnVsbApAQCAt
MSw2NCArMCwwIEBACi0idXNlIHN0cmljdCI7Ci0KLWZ1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwg
ZXhwZWN0ZWQpIHsKLSAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKLSAgICAgICAgdGhyb3cg
bmV3IEVycm9yKGBCYWQgdmFsdWU6ICR7YWN0dWFsfSFgKTsKLX0KLQotZnVuY3Rpb24gc2hvdWxk
VGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7Ci0gICAgbGV0IGVycm9yVGhyb3duID0gZmFsc2U7
Ci0gICAgdHJ5IHsKLSAgICAgICAgZnVuYygpOwotICAgIH0gY2F0Y2ggKGVycm9yKSB7Ci0gICAg
ICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKLSAgICAgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVy
cm9yTWVzc2FnZSkKLSAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQmFkIGVycm9yOiAke2Vy
cm9yfWApOwotICAgIH0KLSAgICBpZiAoIWVycm9yVGhyb3duKQotICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIkRpZG4ndCB0aHJvdyEiKTsKLX0KLQotY29uc3QgcG9pc29uZWRTZXR0ZXIgPSB7IHNl
dCgpIHsgdGhyb3cgbmV3IEVycm9yKCJPYmplY3QucHJvdG90eXBlIHNldHRlciBzaG91bGQgYmUg
dW5yZWFjaGFibGUhIik7IH0gfTsKLWNvbnN0IHByaW1pdGl2ZXMgPSBbdHJ1ZSwgMSwgIiIsIFN5
bWJvbCgpLCAwbl07Ci0KLShmdW5jdGlvbiB0ZXN0U3RhdGljQ3VzdG9tVmFsdWUoKSB7Ci0gICAg
T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoT2JqZWN0LnByb3RvdHlwZSwgewotICAgICAgICB0ZXN0
U3RhdGljVmFsdWU6IHBvaXNvbmVkU2V0dGVyLAotICAgICAgICB0ZXN0U3RhdGljVmFsdWVOb1Nl
dHRlcjogcG9pc29uZWRTZXR0ZXIsCi0gICAgICAgIHRlc3RTdGF0aWNWYWx1ZVJlYWRPbmx5OiBw
b2lzb25lZFNldHRlciwKLSAgICB9KTsKLQotICAgIGZvciAoY29uc3QgcHJpbWl0aXZlIG9mIHBy
aW1pdGl2ZXMpIHsKLSAgICAgICAgY29uc3QgcHJpbWl0aXZlUHJvdG90eXBlID0gT2JqZWN0Lmdl
dFByb3RvdHlwZU9mKHByaW1pdGl2ZSk7Ci0gICAgICAgIGNvbnN0IHN0YXRpY0N1c3RvbVZhbHVl
ID0gJHZtLmNyZWF0ZVN0YXRpY0N1c3RvbVZhbHVlKCk7Ci0gICAgICAgIE9iamVjdC5zZXRQcm90
b3R5cGVPZihwcmltaXRpdmVQcm90b3R5cGUsIHN0YXRpY0N1c3RvbVZhbHVlKTsKLQotICAgICAg
ICBwcmltaXRpdmUudGVzdFN0YXRpY1ZhbHVlID0gMTsKLSAgICAgICAgc2hvdWxkQmUoc3RhdGlj
Q3VzdG9tVmFsdWUudGVzdFN0YXRpY1ZhbHVlLCAxKTsKLSAgICAgICAgc2hvdWxkVGhyb3coKCkg
PT4geyBwcmltaXRpdmUudGVzdFN0YXRpY1ZhbHVlID0gMTsgfSwgIlR5cGVFcnJvcjogQXR0ZW1w
dGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS4iKTsKLQotICAgICAgICBzaG91bGRU
aHJvdygoKSA9PiB7IHByaW1pdGl2ZS50ZXN0U3RhdGljVmFsdWVOb1NldHRlciA9IDE7IH0sICJU
eXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuIik7Ci0g
ICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgcHJpbWl0aXZlLnRlc3RTdGF0aWNWYWx1ZVJlYWRP
bmx5ID0gMTsgfSwgIlR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBw
cm9wZXJ0eS4iKTsKLSAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHByaW1pdGl2ZVByb3Rv
dHlwZSwgT2JqZWN0LnByb3RvdHlwZSk7Ci0gICAgfQotfSkoKTsKLQotKGZ1bmN0aW9uIHRlc3RT
dGF0aWNDdXN0b21BY2Nlc3NvcigpIHsKLSAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhPYmpl
Y3QucHJvdG90eXBlLCB7Ci0gICAgICAgIHRlc3RTdGF0aWNBY2Nlc3NvcjogcG9pc29uZWRTZXR0
ZXIsCi0gICAgICAgIHRlc3RTdGF0aWNBY2Nlc3NvclJlYWRPbmx5OiBwb2lzb25lZFNldHRlciwK
LSAgICB9KTsKLQotICAgIGZvciAoY29uc3QgcHJpbWl0aXZlIG9mIHByaW1pdGl2ZXMpIHsKLSAg
ICAgICAgY29uc3QgcHJpbWl0aXZlUHJvdG90eXBlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHBy
aW1pdGl2ZSk7Ci0gICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihwcmltaXRpdmVQcm90b3R5
cGUsICR2bS5jcmVhdGVTdGF0aWNDdXN0b21BY2Nlc3NvcigpKTsKLQotICAgICAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDEwMDA7IGkrKykgewotICAgICAgICAgICAgcHJpbWl0aXZlLnRlc3RTdGF0
aWNBY2Nlc3NvciA9IGk7Ci0gICAgICAgICAgICBzaG91bGRCZShwcmltaXRpdmVQcm90b3R5cGUu
dGVzdEZpZWxkLCBpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHNob3VsZFRocm93KCgpID0+IHsg
cHJpbWl0aXZlLnRlc3RTdGF0aWNBY2Nlc3NvclJlYWRPbmx5ID0gMTsgfSwgIlR5cGVFcnJvcjog
QXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS4iKTsKLSAgICAgICAgT2Jq
ZWN0LnNldFByb3RvdHlwZU9mKHByaW1pdGl2ZVByb3RvdHlwZSwgT2JqZWN0LnByb3RvdHlwZSk7
Ci0gICAgfQotfSkoKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC10by1wcmltaXRp
dmUuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtdG8tcHJpbWl0aXZlLmpzCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA5ZTJmMjliZmU2ZGJmYjFmZDhkMTViZGFjNzVkZWNiOWZkZDdlZjVl
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0pTVGVzdHMv
c3RyZXNzL3B1dC10by1wcmltaXRpdmUuanMKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBA
Ci1mdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7Ci0gICAgaWYgKGFjdHVhbCAh
PT0gZXhwZWN0ZWQpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcihgQmFkIHZhbHVlOiAke2FjdHVh
bH0hYCk7Ci19Ci0KLWZ1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgewot
ICAgIGxldCBlcnJvclRocm93biA9IGZhbHNlOwotICAgIHRyeSB7Ci0gICAgICAgIGZ1bmMoKTsK
LSAgICB9IGNhdGNoIChlcnJvcikgewotICAgICAgICBlcnJvclRocm93biA9IHRydWU7Ci0gICAg
ICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCi0gICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoYEJhZCBlcnJvcjogJHtlcnJvcn1gKTsKLSAgICB9Ci0gICAgaWYgKCFlcnJv
clRocm93bikKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJEaWRuJ3QgdGhyb3chIik7Ci19Ci0K
LShmdW5jdGlvbiBzdHJpbmdMZW5ndGgoKSB7Ci0gICAgbGV0IHN0ciA9ICJmb28iOwotCi0gICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7IGkrKykgewotICAgICAgICBzdHIubGVuZ3RoID0gMDsK
LSAgICAgICAgc2hvdWxkQmUoc3RyLmxlbmd0aCwgMyk7Ci0gICAgICAgIHNob3VsZFRocm93KCgp
ID0+IHsgInVzZSBzdHJpY3QiOyAiYmFyIi5sZW5ndGggPSAzOyB9LCAiVHlwZUVycm9yOiBBdHRl
bXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LiIpOwotICAgIH0KLX0pKCk7CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtdG8tcHJvdG8tY2hhaW4tb3ZlcnJpZGVzLXB1
dC5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC10by1wcm90by1jaGFpbi1vdmVycmlkZXMtcHV0Lmpz
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZTRiYjJjYzA1NWRlNzM2NmQyZDUwMzFh
NzQ4NDI3NGJhZWRhMDc2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL3B1dC10by1wcm90by1jaGFpbi1vdmVycmlkZXMtcHV0Lmpz
CisrKyAvZGV2L251bGwKQEAgLTEsMTQyICswLDAgQEAKLWNvbnN0IFRFU1RfVkFMVUUgPSAxMDYy
NjMwNzEzOyAvLyBBcnJheSdzICJsZW5ndGgiIGlzIHJlcXVpcmVkIHRvIGJlIGludDMyCi0KLXRl
c3RTZXRSZXN1bHQoWzEsIDJdLCAibGVuZ3RoIiwgdHJ1ZSk7Ci10ZXN0U2V0UmVzdWx0KAotICAg
IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgQXJyYXksICJsZW5ndGgiLCB7IHdyaXRhYmxlOiBm
YWxzZSB9KSwKLSAgICAibGVuZ3RoIiwKLSAgICBmYWxzZSwKLSk7Ci0KLXRlc3RTZXRSZXN1bHQo
bmV3IFN0cmluZywgImxlbmd0aCIsIGZhbHNlKTsKLXRlc3RTZXRSZXN1bHQobmV3IFJlZ0V4cCwg
Imxhc3RJbmRleCIsIHRydWUpOwotdGVzdFNldFJlc3VsdCgKLSAgICBPYmplY3QuZGVmaW5lUHJv
cGVydHkoLyg/OikvZywgImxhc3RJbmRleCIsIHsgd3JpdGFibGU6IGZhbHNlIH0pLAotICAgICJs
YXN0SW5kZXgiLAotICAgIGZhbHNlLAotKTsKLQotZm9yIChjb25zdCBrZXkgb2YgWyJsaW5lIiwg
ImNvbHVtbiIsICJzb3VyY2VVUkwiLCAic3RhY2siXSkKLSAgICB0ZXN0U2V0UmVzdWx0KG5ldyBF
cnJvciwga2V5LCB0cnVlKTsKLQotY29uc3QgbWFwcGVkQXJndW1lbnRzID0gKGZ1bmN0aW9uKGEs
IGIpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSkoMSwgMik7Ci10ZXN0U2V0UmVzdWx0KG1hcHBlZEFy
Z3VtZW50cywgImNhbGxlZSIsIHRydWUpOwotdGVzdFNldFJlc3VsdChtYXBwZWRBcmd1bWVudHMs
ICJsZW5ndGgiLCB0cnVlKTsKLXRlc3RTZXRSZXN1bHQobWFwcGVkQXJndW1lbnRzLCBTeW1ib2wu
aXRlcmF0b3IsIHRydWUpOwotCi1jb25zdCB1bm1hcHBlZEFyZ3VtZW50cyA9IChmdW5jdGlvbigp
IHsgInVzZSBzdHJpY3QiOyByZXR1cm4gYXJndW1lbnRzOyB9KSgpOwotdGVzdFNldFJlc3VsdCh1
bm1hcHBlZEFyZ3VtZW50cywgImxlbmd0aCIsIHRydWUpOwotdGVzdFNldFJlc3VsdCh1bm1hcHBl
ZEFyZ3VtZW50cywgU3ltYm9sLml0ZXJhdG9yLCB0cnVlKTsKLQotdmFyIGZvbzsKLWZ1bmN0aW9u
IGJhcigpIHt9Ci1mb3IgKGNvbnN0IGtleSBvZiBbImZvbyIsICJiYXIiLCAicGFyc2VJbnQiXSkK
LSAgICB0ZXN0U2V0UmVzdWx0KGdsb2JhbFRoaXMsIGtleSwgdHJ1ZSk7Ci0KLWZvciAoY29uc3Qg
a2V5IG9mIFsiSW5maW5pdHkiLCAiTmFOIiwgInVuZGVmaW5lZCJdKQotICAgIHRlc3RTZXRSZXN1
bHQoZ2xvYmFsVGhpcywga2V5LCBmYWxzZSk7Ci0KLWZvciAoY29uc3Qga2V5IG9mIFsibmFtZSIs
ICJsZW5ndGgiXSkgewotICAgIHRlc3RTZXRSZXN1bHQoZnVuY3Rpb24oKSB7fS5iaW5kKCksIGtl
eSwgZmFsc2UpOwotICAgIHRlc3RTZXRSZXN1bHQoCi0gICAgICAgIE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShmdW5jdGlvbigpIHt9LCBrZXksIHsgd3JpdGFibGU6IHRydWUgfSksCi0gICAgICAgIGtl
eSwKLSAgICAgICAgdHJ1ZSwKLSAgICApOwotCi0gICAgdGVzdFNldFJlc3VsdCgoKSA9PiB7ICJ1
c2Ugc3RyaWN0IjsgfSwga2V5LCBmYWxzZSk7Ci0gICAgdGVzdFNldFJlc3VsdCgKLSAgICAgICAg
T2JqZWN0LmRlZmluZVByb3BlcnR5KHBhcnNlRmxvYXQsIGtleSwgeyB3cml0YWJsZTogdHJ1ZSB9
KSwKLSAgICAgICAga2V5LAotICAgICAgICB0cnVlLAotICAgICk7Ci19Ci0KLXRlc3RTZXRSZXN1
bHQoZnVuY3Rpb24oKSB7ICJ1c2Ugc3RyaWN0IjsgfSwgInByb3RvdHlwZSIsIHRydWUpOwotdGVz
dFNldFJlc3VsdCgKLSAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZnVuY3Rpb24oKSB7fSwgInBy
b3RvdHlwZSIsIHsgd3JpdGFibGU6IGZhbHNlIH0pLAotICAgICJwcm90b3R5cGUiLAotICAgIGZh
bHNlLAotKTsKLQotdGVzdFNldFJlc3VsdChmdW5jdGlvbigpIHt9LCAiYXJndW1lbnRzIiwgZmFs
c2UpOwotdGVzdFNldFJlc3VsdChmdW5jdGlvbigpIHt9LCAiY2FsbGVyIiwgZmFsc2UpOwotCi0v
LyA9PT0gaGFybmVzcyA9PT0KLQotZnVuY3Rpb24gdGVzdFNldFJlc3VsdCh0YXJnZXQsIGtleSwg
ZXhwZWN0ZWRSZXN1bHQpIHsKLSAgICBsZXQgY2xlYW5VcCA9IHB1dFNldHRlck9uUHJvdG90eXBl
KHRhcmdldCwga2V5LCAoKSA9PiB7fSk7Ci0KLSAgICBmb3IgKGNvbnN0IHByaW1pdGl2ZSBvZiBb
dHJ1ZSwgMSwgImZvbyIsIFN5bWJvbCgpLCAwbl0pIHsKLSAgICAgICAgY29uc3QgcHJpbWl0aXZl
UHJvdG90eXBlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHByaW1pdGl2ZSk7Ci0gICAgICAgIE9i
amVjdC5zZXRQcm90b3R5cGVPZihwcmltaXRpdmVQcm90b3R5cGUsIHRhcmdldCk7Ci0gICAgICAg
IHRlc3RTZXRSZXN1bHRJbnRlcm5hbCh0YXJnZXQsIGtleSwgcHJpbWl0aXZlLCBmYWxzZSk7Ci0g
ICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihwcmltaXRpdmVQcm90b3R5cGUsIE9iamVjdC5w
cm90b3R5cGUpOwotICAgIH0KLQotICAgIGNsZWFuVXAoKTsKLSAgICBjbGVhblVwID0gcHV0U2V0
dGVyT25Qcm90b3R5cGUodGFyZ2V0LCBrZXksICgpID0+IHsKLSAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKGAke1N0cmluZyhrZXkpfSBzZXR0ZXIgc2hvdWxkIGJlIHVucmVhY2hhYmxlIWApOwotICAg
IH0pOwotCi0gICAgZm9yIChjb25zdCByZWNlaXZlciBvZiBbCi0gICAgICAgIE9iamVjdC5jcmVh
dGUodGFyZ2V0KSwKLSAgICAgICAgT2JqZWN0LmNyZWF0ZShPYmplY3QuY3JlYXRlKHRhcmdldCkp
LAotICAgICAgICBuZXcgUHJveHkodGFyZ2V0LCB7fSksCi0gICAgICAgIG5ldyBQcm94eSh0YXJn
ZXQsIFJlZmxlY3QpLAotICAgIF0pCi0gICAgICAgIHRlc3RTZXRSZXN1bHRJbnRlcm5hbCh0YXJn
ZXQsIGtleSwgcmVjZWl2ZXIsIGV4cGVjdGVkUmVzdWx0KTsKLQotICAgIGNsZWFuVXAoKTsKLX0K
LQotZnVuY3Rpb24gcHV0U2V0dGVyT25Qcm90b3R5cGUodGFyZ2V0LCBrZXksIHNldCkgewotICAg
IGNvbnN0IGRlc2NyaXB0b3IgPSB7IHNldCwgY29uZmlndXJhYmxlOiB0cnVlIH07Ci0gICAgY29u
c3QgY3VycmVudFByb3RvdHlwZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih0YXJnZXQpOwotICAg
IGNvbnN0IG5ld1Byb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUobnVsbCwgeyBba2V5XTogZGVzY3Jp
cHRvciB9KTsKLQotICAgIGlmIChSZWZsZWN0LnNldFByb3RvdHlwZU9mKHRhcmdldCwgbmV3UHJv
dG90eXBlKSkKLSAgICAgICAgcmV0dXJuICgpID0+IHsgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRh
cmdldCwgY3VycmVudFByb3RvdHlwZSk7IH07Ci0KLSAgICBpZiAoY3VycmVudFByb3RvdHlwZSAh
PT0gbnVsbCAmJiBSZWZsZWN0LmRlZmluZVByb3BlcnR5KGN1cnJlbnRQcm90b3R5cGUsIGtleSwg
ZGVzY3JpcHRvcikpCi0gICAgICAgIHJldHVybiAoKSA9PiB7ICJ1c2Ugc3RyaWN0IjsgZGVsZXRl
IGN1cnJlbnRQcm90b3R5cGVba2V5XTsgfTsKLQotICAgIHRocm93IG5ldyBFcnJvcigiVGhpcyBp
cyB1bnJlYWNoYWJsZTogYXQgbGVhc3Qgb25lIGFwcHJvYWNoIHNob3VsZCBzdWNjZWVkISIpOwot
fQotCi1mdW5jdGlvbiB0ZXN0U2V0UmVzdWx0SW50ZXJuYWwodGFyZ2V0LCBrZXksIHJlY2VpdmVy
LCBleHBlY3RlZFJlc3VsdCkgewotICAgIHJlY2VpdmVyW2tleV0gPSBURVNUX1ZBTFVFOwotICAg
IHNob3VsZEJlKHJlY2VpdmVyW2tleV0gPT09IFRFU1RfVkFMVUUsIGV4cGVjdGVkUmVzdWx0LCBr
ZXkpOwotCi0gICAgdGVzdFNldFJlc3VsdFN0cmljdChyZWNlaXZlciwga2V5LCBleHBlY3RlZFJl
c3VsdCk7Ci0KLSAgICBpZiAocmVjZWl2ZXIgPT09IE9iamVjdChyZWNlaXZlcikpCi0gICAgICAg
IHNob3VsZEJlKFJlZmxlY3Quc2V0KHJlY2VpdmVyLCBrZXksIFRFU1RfVkFMVUUpLCBleHBlY3Rl
ZFJlc3VsdCwga2V5KTsKLSAgICBzaG91bGRCZShSZWZsZWN0LnNldCh0YXJnZXQsIGtleSwgVEVT
VF9WQUxVRSwgcmVjZWl2ZXIpLCBleHBlY3RlZFJlc3VsdCwga2V5KTsKLX0KLQotZnVuY3Rpb24g
dGVzdFNldFJlc3VsdFN0cmljdChyZWNlaXZlciwga2V5LCBleHBlY3RlZFJlc3VsdCkgewotICAg
ICJ1c2Ugc3RyaWN0IjsKLSAgICBpZiAoZXhwZWN0ZWRSZXN1bHQpIHsKLSAgICAgICAgcmVjZWl2
ZXJba2V5XSA9IFRFU1RfVkFMVUU7Ci0gICAgICAgIHNob3VsZEJlKHJlY2VpdmVyW2tleV0sIFRF
U1RfVkFMVUUsIGtleSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHNob3VsZFRocm93VHlwZUVycm9y
KCgpID0+IHsgcmVjZWl2ZXJba2V5XSA9IFRFU1RfVkFMVUU7IH0sIGtleSk7Ci19Ci0KLWZ1bmN0
aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQsIGtleSkgewotICAgIGlmIChhY3R1YWwgIT09
IGV4cGVjdGVkKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEtleTogJHtTdHJpbmcoa2V5KX0u
ICR7YWN0dWFsfSAhPT0gJHtleHBlY3RlZH1gKTsKLX0KLQotZnVuY3Rpb24gc2hvdWxkVGhyb3dU
eXBlRXJyb3IoZnVuYywga2V5KSB7Ci0gICAgbGV0IGVycm9yVGhyb3duID0gZmFsc2U7Ci0gICAg
dHJ5IHsKLSAgICAgICAgZnVuYygpOwotICAgIH0gY2F0Y2ggKGVycm9yKSB7Ci0gICAgICAgIGVy
cm9yVGhyb3duID0gdHJ1ZTsKLSAgICAgICAgaWYgKGVycm9yLmNvbnN0cnVjdG9yICE9PSBUeXBl
RXJyb3IpCi0gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEtleTogJHtTdHJpbmcoa2V5KX0u
IEJhZCBlcnJvcjogJHtlcnJvcn1gKTsKLSAgICB9Ci0gICAgaWYgKCFlcnJvclRocm93bikKLSAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKGBLZXk6ICR7U3RyaW5nKGtleSl9LiBEaWRuJ3QgdGhyb3ch
YCk7Ci19CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1jYW5vbmljYWwt
bnVtZXJpYy1pbmRleC1zdHJpbmctc2V0LmpzIGIvSlNUZXN0cy9zdHJlc3MvdHlwZWQtYXJyYXkt
Y2Fub25pY2FsLW51bWVyaWMtaW5kZXgtc3RyaW5nLXNldC5qcwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYjI0ZjA2ODVjM2VmMTRlNzA0MTYwNGZiYjIwZWQyN2FiZjYyYzFkMS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9KU1Rlc3RzL3N0cmVz
cy90eXBlZC1hcnJheS1jYW5vbmljYWwtbnVtZXJpYy1pbmRleC1zdHJpbmctc2V0LmpzCisrKyAv
ZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotJ3VzZSBzdHJpY3QnOwotY29uc3QgVHlwZWRBcnJh
eXMgPSBbVWludDhDbGFtcGVkQXJyYXksIFVpbnQ4QXJyYXksIFVpbnQxNkFycmF5LCBVaW50MzJB
cnJheSwgSW50OEFycmF5LCBJbnQxNkFycmF5LCBJbnQzMkFycmF5LCBGbG9hdDMyQXJyYXksIEZs
b2F0NjRBcnJheV07Ci1jb25zdCBjYW5vbmljYWxOdW1lcmljSW5kZXhTdHJpbmdzID0gWyctMCcs
ICctMScsICctMy4xNCcsICdJbmZpbml0eScsICctSW5maW5pdHknLCAnTmFOJywgJzAuNScsICc0
Mjk0OTY3Mjk1JywgJzQyOTQ5NjcyOTYnXTsKLQotZnVuY3Rpb24gYXNzZXJ0KHgsIGtleSkgewot
ICAgIGlmICgheCkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBCYWQgYXNzZXJ0aW9uISBLZXk6
ICcke2tleX0nYCk7Ci19Ci0KLWZvciAoY29uc3QgVHlwZWRBcnJheSBvZiBUeXBlZEFycmF5cykg
ewotICAgIGZvciAoY29uc3Qga2V5IG9mIGNhbm9uaWNhbE51bWVyaWNJbmRleFN0cmluZ3MpIHsK
LSAgICAgICAgY29uc3QgYXNzZXJ0UHJvdG90eXBlUHJvcGVydHlJc1VucmVhY2hhYmxlID0gKCkg
PT4gewotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnN0IHRBID0gbmV3IFR5cGVk
QXJyYXk7Ci0gICAgICAgICAgICAgICAgdEFba2V5XSA9IDE7Ci0gICAgICAgICAgICAgICAgYXNz
ZXJ0KCF0QS5oYXNPd25Qcm9wZXJ0eShrZXkpLCBrZXkpOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29uc3QgdEEgPSBuZXcgVHlwZWRBcnJheTsKLSAg
ICAgICAgICAgICAgICBjb25zdCBoZWlyID0gT2JqZWN0LmNyZWF0ZSh0QSk7Ci0gICAgICAgICAg
ICAgICAgaGVpcltrZXldID0gMjsKLQotICAgICAgICAgICAgICAgIGFzc2VydCghdEEuaGFzT3du
UHJvcGVydHkoa2V5KSwga2V5KTsKLSAgICAgICAgICAgICAgICBhc3NlcnQoIWhlaXIuaGFzT3du
UHJvcGVydHkoa2V5KSwga2V5KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IHt9OwotICAgICAgICAgICAgICAgIGNvbnN0IHJl
Y2VpdmVyID0gbmV3IFR5cGVkQXJyYXk7Ci0KLSAgICAgICAgICAgICAgICBhc3NlcnQoIVJlZmxl
Y3Quc2V0KHRhcmdldCwga2V5LCAzLCByZWNlaXZlciksIGtleSk7Ci0gICAgICAgICAgICAgICAg
YXNzZXJ0KCF0YXJnZXQuaGFzT3duUHJvcGVydHkoa2V5KSwga2V5KTsKLSAgICAgICAgICAgICAg
ICBhc3NlcnQoIXJlY2VpdmVyLmhhc093blByb3BlcnR5KGtleSksIGtleSk7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb25zdCB0QSA9IG5ldyBUeXBl
ZEFycmF5OwotICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IE9iamVjdC5jcmVhdGUodEEp
OwotICAgICAgICAgICAgICAgIGNvbnN0IHJlY2VpdmVyID0ge307Ci0KLSAgICAgICAgICAgICAg
ICBhc3NlcnQoUmVmbGVjdC5zZXQodGFyZ2V0LCBrZXksIDQsIHJlY2VpdmVyKSwga2V5KTsKLSAg
ICAgICAgICAgICAgICBhc3NlcnQoIXRBLmhhc093blByb3BlcnR5KGtleSksIGtleSk7Ci0gICAg
ICAgICAgICAgICAgYXNzZXJ0KCF0YXJnZXQuaGFzT3duUHJvcGVydHkoa2V5KSwga2V5KTsKLSAg
ICAgICAgICAgICAgICBhc3NlcnQoIXJlY2VpdmVyLmhhc093blByb3BlcnR5KGtleSksIGtleSk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0KLSAgICAgICAgT2JqZWN0LmRlZmluZVByb3Bl
cnR5KFR5cGVkQXJyYXkucHJvdG90eXBlLCBrZXksIHsKLSAgICAgICAgICAgIHNldCgpIHsgdGhy
b3cgbmV3IEVycm9yKGAke1R5cGVkQXJyYXkubmFtZX0ucHJvdG90eXBlWycke2tleX0nXSBzZXR0
ZXIgc2hvdWxkIGJlIHVucmVhY2hhYmxlIWApOyB9LAotICAgICAgICAgICAgY29uZmlndXJhYmxl
OiB0cnVlLAotICAgICAgICB9KTsKLSAgICAgICAgYXNzZXJ0UHJvdG90eXBlUHJvcGVydHlJc1Vu
cmVhY2hhYmxlKCk7Ci0KLSAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFR5cGVkQXJyYXku
cHJvdG90eXBlLCBrZXksIHsgd3JpdGFibGU6IGZhbHNlIH0pOwotICAgICAgICBhc3NlcnRQcm90
b3R5cGVQcm9wZXJ0eUlzVW5yZWFjaGFibGUoKTsKLSAgICB9Ci19Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>