<?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>230320</bug_id>
          
          <creation_ts>2021-09-15 14:40:11 -0700</creation_ts>
          <short_desc>[webkitcorepy] Move FileLock from webkitpy</short_desc>
          <delta_ts>2022-12-19 13:50:32 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</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="Jonathan Bedard">jbedard</reporter>
          <assigned_to name="Jonathan Bedard">jbedard</assigned_to>
          <cc>dewei_zhu</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>glenn</cc>
    
    <cc>slewis</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1793854</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-09-15 14:40:11 -0700</bug_when>
    <thetext>The mechanics of our webkitpy FileLock are good, but the API is not. Move webkitpy&apos;s FileLock into webkitcorepy and clarify the API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793856</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-15 14:40:45 -0700</bug_when>
    <thetext>&lt;rdar://problem/83168826&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793860</commentid>
    <comment_count>2</comment_count>
      <attachid>438292</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-09-15 14:43:04 -0700</bug_when>
    <thetext>Created attachment 438292
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795143</commentid>
    <comment_count>3</comment_count>
      <attachid>438292</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2021-09-20 10:28:54 -0700</bug_when>
    <thetext>Comment on attachment 438292
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795180</commentid>
    <comment_count>4</comment_count>
      <attachid>438703</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-09-20 11:31:46 -0700</bug_when>
    <thetext>Created attachment 438703
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795217</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-20 12:52:41 -0700</bug_when>
    <thetext>Committed r282770 (241905@main): &lt;https://commits.webkit.org/241905@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 438703.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1920567</commentid>
    <comment_count>6</comment_count>
      <attachid>438703</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2022-12-19 13:50:32 -0800</bug_when>
    <thetext>Comment on attachment 438703
Patch for landing

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

&gt; Tools/Scripts/libraries/webkitcorepy/webkitcorepy/tests/file_lock_unittest.py:95
&gt; +                    self.assertEqual(start_time + 30, int(time.time()))

This check is too strict.
 Bug 249608 – webkitcorepy.tests.file_lock_unittest.FileLockTestCase.test_locked_timeout is randomly failing</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438292</attachid>
            <date>2021-09-15 14:43:04 -0700</date>
            <delta_ts>2021-09-20 11:31:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230320-20210915144303.patch</filename>
            <type>text/plain</type>
            <size>25242</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNDcyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjIzZjQwY2JhNjhjZTEwYzgyNzlkOGY0NDkzMDBlMmQy
YzkxYzI2MS4uZDE0ZTFhNTMxODQyMzU1NmFkMWFlMmNhZmUxZmQ0NjFkZDNmZGNlMyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0
IEBACisyMDIxLTA5LTE1ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbd2Via2l0Y29yZXB5XSBNb3ZlIEZpbGVMb2NrIGZyb20gd2Via2l0cHkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDMyMAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vODMxNjg4MjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTW92ZSBGaWxlTG9jayBmcm9tIHdlYmtpdHB5IGludG8gd2Vi
a2l0Y29yZXB5LCBpbXBsZW1lbnQgRmlsZUxvY2sgYXMgYSBtb3JlCisgICAgICAgIG1vZGVybiBQ
eXRob24gQVBJLgorCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dl
YmtpdGNvcmVweS9fX2luaXRfXy5weToKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRjb3JlcHkvd2Via2l0Y29yZXB5L2ZpbGVfbG9jay5weTogQWRkZWQuCisgICAgICAgIChGaWxl
TG9jayk6CisgICAgICAgIChGaWxlTG9jay5fX2luaXRfXyk6CisgICAgICAgIChGaWxlTG9jay5h
Y3F1aXJlZCk6IENoZWNrIGlmIHRoZSBjdXJyZW50IHByb2Nlc3MgaGFzIGFjcXVpcmVkIHRoZSBs
b2NrLgorICAgICAgICAoRmlsZUxvY2suYWNxdWlyZSk6IEF0dGVtcHQgdG8gYWNxdWlyZSBsb2Nr
ZmlsZS4KKyAgICAgICAgKEZpbGVMb2NrLnJlbGVhc2UpOiBSZWxlYXNlIGxvY2tmaWxlLCBpZiB0
aGlzIHByb2Nlc3Mgb3ducyB0aGUgbG9jay4KKyAgICAgICAgKEZpbGVMb2NrLl9fZW50ZXJfXyk6
IEludm9rZSBhY3F1aXJlLgorICAgICAgICAoRmlsZUxvY2suX19leGl0X18pOiBJbnZva2UgcmVs
ZWFzZS4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29y
ZXB5L21vY2tzL19faW5pdF9fLnB5OgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtp
dGNvcmVweS93ZWJraXRjb3JlcHkvbW9ja3MvZmlsZV9sb2NrLnB5OiBDb3BpZWQgZnJvbSBUb29s
cy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L21vY2tzL19faW5p
dF9fLnB5LgorICAgICAgICAoRmlsZUxvY2spOiBTaW5nbGUtdGhyZWFkIHN0dWIgaW1wbGVtZW50
YXRpb24gb2YgRmlsZUxvY2sgZm9yIHRlc3Rpbmcgd2l0aG91dCBhIGZpbGVzeXN0ZW0uCisgICAg
ICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS90ZXN0cy9m
aWxlX2xvY2tfdW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAoRmlsZUxvY2tUZXN0Q2FzZSk6
CisgICAgICAgIChGaWxlTG9ja1Rlc3RDYXNlLl9faW5pdF9fKToKKyAgICAgICAgKEZpbGVMb2Nr
VGVzdENhc2Uuc2V0VXApOgorICAgICAgICAoRmlsZUxvY2tUZXN0Q2FzZS50ZWFyRG93bik6Cisg
ICAgICAgIChGaWxlTG9ja1Rlc3RDYXNlLnRlc3RfYmFzaWMpOgorICAgICAgICAoRmlsZUxvY2tU
ZXN0Q2FzZS50ZXN0X2xvY2tlZCk6CisgICAgICAgIChGaWxlTG9ja1Rlc3RDYXNlLnRlc3RfbG9j
a2VkX3RpbWVvdXQpOgorICAgICAgICAoRmlsZUxvY2tUZXN0Q2FzZS50ZXN0X2RvdWJsZSk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVfbG9jay5weTogUmVt
b3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZV9sb2Nr
X2ludGVncmF0aW9udGVzdC5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weToKKyAgICAgICAgKFN5c3RlbUhvc3QubWFrZV9m
aWxlX2xvY2spOiBVc2Ugd2Via2l0Y29yZXB5J3MgRmlsZUxvY2suCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3N5c3RlbWhvc3RfbW9jay5weToKKyAgICAgICAgKE1v
Y2tTeXN0ZW1Ib3N0Lm1ha2VfZmlsZV9sb2NrKTogVXNlIHdlYmtpdGNvcmVweSdzIG1vY2tzLkZp
bGVMb2NrLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2Vs
aW5lLnB5OgorICAgICAgICAoUmViYXNlbGluZVRlc3QuX3VwZGF0ZV9leHBlY3RhdGlvbnNfZmls
ZSk6IFVzZSB3ZWJraXRjb3JlcHkncyBGaWxlTG9jay4KKwogMjAyMS0wOS0xNSAgR2V6YSBMb3Jl
ICA8Z2V6YWxvcmVAZ21haWwuY29tPgogCiAgICAgICAgIENhY2hlIHJlc291cmNlIHBhdGhzIGlu
IHJ1bi1qc2Mtc3RyZXNzLXRlc3RzIGZvciBzcGVlZHVwCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L19faW5pdF9fLnB5IGIvVG9v
bHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9fX2luaXRfXy5w
eQppbmRleCAxNDgzMWI1YzY5MjRlNmU1MWY2Mjc0NWFkZGRhOGNkZTdjMjE2MzQyLi40ZWM4YWE4
OWIwODE5NDdmNTVmMWFlMzE5NWM0YjBlNDY1NTU5NTA5IDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L19faW5pdF9fLnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19pbml0
X18ucHkKQEAgLTQxLDYgKzQxLDcgQEAgZnJvbSB3ZWJraXRjb3JlcHkubWVhc3VyZV90aW1lIGlt
cG9ydCBNZWFzdXJlVGltZQogZnJvbSB3ZWJraXRjb3JlcHkubmVzdGVkX2Z1enp5X2RpY3QgaW1w
b3J0IE5lc3RlZEZ1enp5RGljdAogZnJvbSB3ZWJraXRjb3JlcHkuY2FsbF9ieV9uZWVkIGltcG9y
dCBDYWxsQnlOZWVkCiBmcm9tIHdlYmtpdGNvcmVweS5lZGl0b3IgaW1wb3J0IEVkaXRvcgorZnJv
bSB3ZWJraXRjb3JlcHkuZmlsZV9sb2NrIGltcG9ydCBGaWxlTG9jawogCiB2ZXJzaW9uID0gVmVy
c2lvbigwLCAxMCwgMykKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0Y29yZXB5L3dlYmtpdGNvcmVweS9maWxlX2xvY2sucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L2ZpbGVfbG9jay5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
MmNlYjA4NTVmZGM1NzI4NTg4MDM1YmMxZTc3YjkyYzdhMWM0ZWI0Ci0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9maWxl
X2xvY2sucHkKQEAgLTAsMCArMSw4NSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTAgR2Fib3IgUmFw
Y3NhbnlpIChyZ2Fib3JAaW5mLnUtc3plZ2VkLmh1KSwgVW5pdmVyc2l0eSBvZiBTemVnZWQKKyMg
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworIyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorIyBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworIyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IG9zCitpbXBvcnQgc3lz
CitpbXBvcnQgdGltZQorCitpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyk6CisgICAg
aW1wb3J0IG1zdmNydAorZWxzZToKKyAgICBpbXBvcnQgZmNudGwKKworCitjbGFzcyBGaWxlTG9j
ayhvYmplY3QpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgsIHRpbWVvdXQ9MjApOgor
ICAgICAgICBzZWxmLnBhdGggPSBwYXRoCisgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQK
KyAgICAgICAgc2VsZi5fZGVzY3JpcHRvciA9IE5vbmUKKworICAgIEBwcm9wZXJ0eQorICAgIGRl
ZiBhY3F1aXJlZChzZWxmKToKKyAgICAgICAgcmV0dXJuIGJvb2woc2VsZi5fZGVzY3JpcHRvcikK
KworICAgIGRlZiBhY3F1aXJlKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9kZXNjcmlwdG9yOgor
ICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICBkZXNjcmlwdG9yID0gb3Mub3Blbihz
ZWxmLnBhdGgsIG9zLk9fVFJVTkMgfCBvcy5PX0NSRUFUKQorICAgICAgICBzdGFydF90aW1lID0g
dGltZS50aW1lKCkKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIHRyeToKKyAgICAg
ICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyk6CisgICAgICAgICAg
ICAgICAgICAgIG1zdmNydC5sb2NraW5nKGRlc2NyaXB0b3IsIG1zdmNydC5MS19OQkxDSywgMzIp
CisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZmNudGwuZmxvY2so
ZGVzY3JpcHRvciwgZmNudGwuTE9DS19FWCB8IGZjbnRsLkxPQ0tfTkIpCisgICAgICAgICAgICAg
ICAgc2VsZi5fZGVzY3JpcHRvciA9IGRlc2NyaXB0b3IKKyAgICAgICAgICAgICAgICByZXR1cm4g
VHJ1ZQorCisgICAgICAgICAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgICAgICAgICBpZiB0
aW1lLnRpbWUoKSAtIHN0YXJ0X3RpbWUgPiBzZWxmLnRpbWVvdXQ6CisgICAgICAgICAgICAgICAg
ICAgIG9zLmNsb3NlKGRlc2NyaXB0b3IpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Rlc2Ny
aXB0b3IgPSBOb25lCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAg
ICAgICAgIHRpbWUuc2xlZXAoMC4wMSkKKworICAgIGRlZiByZWxlYXNlKHNlbGYpOgorICAgICAg
ICB0cnk6CisgICAgICAgICAgICBpZiBzZWxmLl9kZXNjcmlwdG9yOgorICAgICAgICAgICAgICAg
IGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKKyAgICAgICAgICAgICAgICAgICAg
bXN2Y3J0LmxvY2tpbmcoc2VsZi5fZGVzY3JpcHRvciwgbXN2Y3J0LkxLX1VOTENLLCAzMikKKyAg
ICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBmY250bC5mbG9jayhzZWxm
Ll9kZXNjcmlwdG9yLCBmY250bC5MT0NLX1VOKQorICAgICAgICAgICAgICAgIG9zLmNsb3NlKHNl
bGYuX2Rlc2NyaXB0b3IpCisgICAgICAgICAgICAgICAgc2VsZi5fZGVzY3JpcHRvciA9IE5vbmUK
KyAgICAgICAgICAgIG9zLnVubGluayhzZWxmLnBhdGgpCisgICAgICAgIGV4Y2VwdCAoSU9FcnJv
ciwgT1NFcnJvcik6CisgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYp
OgorICAgICAgICBzZWxmLmFjcXVpcmUoKQorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVm
IF9fZXhpdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYucmVsZWFzZSgp
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0
Y29yZXB5L21vY2tzL19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0
Y29yZXB5L3dlYmtpdGNvcmVweS9tb2Nrcy9fX2luaXRfXy5weQppbmRleCAwZmQwZGZhZWI4N2I2
ODgxMjFhNzZjZjVmZDJhODA1MDBkYjFhODkwLi5jMjA1ZWY1ZDVlNzAzZWMyNTlkYmRjYWFhMmI2
ODRjODdjYjhmYTkwIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRj
b3JlcHkvd2Via2l0Y29yZXB5L21vY2tzL19faW5pdF9fLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvbW9ja3MvX19pbml0X18ucHkKQEAg
LTI2LDMgKzI2LDQgQEAgZnJvbSB3ZWJraXRjb3JlcHkubW9ja3Muc3VicHJvY2VzcyBpbXBvcnQg
UHJvY2Vzc0NvbXBsZXRpb24sIFN1YnByb2Nlc3MKIAogZnJvbSB3ZWJraXRjb3JlcHkubW9ja3Mu
cmVxdWVzdHNfIGltcG9ydCBSZXNwb25zZSwgUmVxdWVzdHMKIGZyb20gd2Via2l0Y29yZXB5Lm1v
Y2tzLnRlcm1pbmFsIGltcG9ydCBUZXJtaW5hbAorZnJvbSB3ZWJraXRjb3JlcHkubW9ja3MuZmls
ZV9sb2NrIGltcG9ydCBGaWxlTG9jawpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9tb2Nrcy9maWxlX2xvY2sucHkgYi9Ub29scy9T
Y3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L21vY2tzL2ZpbGVfbG9j
ay5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42NzQzZTU0ZjRkMDk1NzZlNjNkYjEwY2YwMDlmZWExMThjZmZlODhk
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5
L3dlYmtpdGNvcmVweS9tb2Nrcy9maWxlX2xvY2sucHkKQEAgLTAsMCArMSw0NiBAQAorIyBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisjIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTCisjIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2NsYXNzIEZpbGVMb2NrKG9iamVjdCk6
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgsIHRpbWVvdXQ9MjApOgorICAgICAgICBzZWxm
LnBhdGggPSBwYXRoCisgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKKyAgICAgICAgc2Vs
Zi5fYWNxdWlyZWQgPSBGYWxzZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGFjcXVpcmVkKHNl
bGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fYWNxdWlyZWQKKworICAgIGRlZiBhY3F1aXJlKHNl
bGYpOgorICAgICAgICBzZWxmLl9hY3F1aXJlZCA9IFRydWUKKyAgICAgICAgcmV0dXJuIFRydWUK
KworICAgIGRlZiByZWxlYXNlKHNlbGYpOgorICAgICAgICBzZWxmLl9hY3F1aXJlZCA9IEZhbHNl
CisKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICBzZWxmLmFjcXVpcmUoKQorICAg
ICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzLCAqKmt3YXJn
cyk6CisgICAgICAgIHNlbGYucmVsZWFzZSgpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xp
YnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L3Rlc3RzL2ZpbGVfbG9ja191bml0dGVz
dC5weSBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkv
dGVzdHMvZmlsZV9sb2NrX3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhYWE3MmYzYmY5NWUzM2Iy
NTBhOTU4NTVhZDMxMjdmY2ZhM2M5MjAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRz
L2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L3Rlc3RzL2ZpbGVfbG9ja191bml0
dGVzdC5weQpAQCAtMCwwICsxLDExNSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorIyBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OCisjIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisj
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCitpbXBvcnQgb3MKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0
IHRpbWUKK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgRmlsZUxv
Y2ssIG1vY2tzCisKKworY2xhc3MgRmlsZUxvY2tUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6
CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc3Vw
ZXIoRmlsZUxvY2tUZXN0Q2FzZSwgc2VsZikuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorICAg
ICAgICBzZWxmLnBhdGggPSBOb25lCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNl
bGYucGF0aCA9IHRlbXBmaWxlLm1rZHRlbXAoKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgor
ICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYucGF0aCwgaWdub3JlX2Vycm9ycz1UcnVlKQorCisg
ICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oc2Vs
Zi5wYXRoLCAnZXhhbXBsZS17fS5sb2NrJy5mb3JtYXQob3MuZ2V0cGlkKCkpKQorICAgICAgICBs
b2NrID0gRmlsZUxvY2socGF0aCwgdGltZW91dD0wKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UobG9jay5hY3F1aXJlZCkKKyAgICAgICAgd2l0aCBsb2NrOgorICAgICAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKGxvY2suYWNxdWlyZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobG9jay5h
Y3F1aXJlZCkKKworICAgICAgICB3aXRoIGxvY2s6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRy
dWUobG9jay5hY3F1aXJlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsb2NrLmFjcXVpcmVk
KQorCisgICAgZGVmIHRlc3RfbG9ja2VkKHNlbGYpOgorICAgICAgICBwYXRoID0gb3MucGF0aC5q
b2luKHNlbGYucGF0aCwgJ2V4YW1wbGUte30ubG9jaycuZm9ybWF0KG9zLmdldHBpZCgpKSkKKyAg
ICAgICAgbG9ja19hID0gRmlsZUxvY2socGF0aCwgdGltZW91dD0wKQorICAgICAgICBsb2NrX2Ig
PSBGaWxlTG9jayhwYXRoLCB0aW1lb3V0PTApCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShs
b2NrX2EuYWNxdWlyZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobG9ja19iLmFjcXVpcmVk
KQorCisgICAgICAgIHdpdGggbG9ja19hOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxv
Y2tfYS5hY3F1aXJlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobG9ja19iLmFjcXVp
cmVkKQorCisgICAgICAgICAgICB3aXRoIGxvY2tfYjoKKyAgICAgICAgICAgICAgICBzZWxmLmFz
c2VydFRydWUobG9ja19hLmFjcXVpcmVkKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UobG9ja19iLmFjcXVpcmVkKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobG9ja19h
LmFjcXVpcmVkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsb2NrX2IuYWNxdWlyZWQp
CisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsb2NrX2EuYWNxdWlyZWQpCisgICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2UobG9ja19iLmFjcXVpcmVkKQorCisgICAgZGVmIHRlc3RfbG9ja2VkX3Rp
bWVvdXQoc2VsZik6CisgICAgICAgIHdpdGggbW9ja3MuVGltZToKKyAgICAgICAgICAgIHBhdGgg
PSBvcy5wYXRoLmpvaW4oc2VsZi5wYXRoLCAnZXhhbXBsZS17fS5sb2NrJy5mb3JtYXQob3MuZ2V0
cGlkKCkpKQorICAgICAgICAgICAgbG9ja19hID0gRmlsZUxvY2socGF0aCwgdGltZW91dD0wKQor
ICAgICAgICAgICAgbG9ja19iID0gRmlsZUxvY2socGF0aCwgdGltZW91dD0zMCkKKworICAgICAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZShsb2NrX2EuYWNxdWlyZWQpCisgICAgICAgICAgICBzZWxm
LmFzc2VydEZhbHNlKGxvY2tfYi5hY3F1aXJlZCkKKworICAgICAgICAgICAgc3RhcnRfdGltZSA9
IGludCh0aW1lLnRpbWUoKSkKKyAgICAgICAgICAgIHdpdGggbG9ja19hOgorICAgICAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhcnRfdGltZSwgaW50KHRpbWUudGltZSgpKSkKKyAgICAg
ICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobG9ja19hLmFjcXVpcmVkKQorICAgICAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RmFsc2UobG9ja19iLmFjcXVpcmVkKQorCisgICAgICAgICAgICAgICAg
d2l0aCBsb2NrX2I6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhcnRf
dGltZSArIDMwLCBpbnQodGltZS50aW1lKCkpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFz
c2VydFRydWUobG9ja19hLmFjcXVpcmVkKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2Vy
dEZhbHNlKGxvY2tfYi5hY3F1aXJlZCkKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShsb2NrX2EuYWNxdWlyZWQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsb2Nr
X2IuYWNxdWlyZWQpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobG9ja19hLmFjcXVp
cmVkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsb2NrX2IuYWNxdWlyZWQpCisKKyAg
ICBkZWYgdGVzdF9kb3VibGUoc2VsZik6CisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oc2Vs
Zi5wYXRoLCAnZXhhbXBsZS17fS5sb2NrJy5mb3JtYXQob3MuZ2V0cGlkKCkpKQorICAgICAgICBs
b2NrID0gRmlsZUxvY2socGF0aCwgdGltZW91dD0wKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UobG9jay5hY3F1aXJlZCkKKyAgICAgICAgd2l0aCBsb2NrOgorICAgICAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKGxvY2suYWNxdWlyZWQpCisgICAgICAgICAgICB3aXRoIGxvY2s6CisgICAgICAg
ICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxvY2suYWNxdWlyZWQpCisgICAgICAgICAgICBzZWxm
LmFzc2VydEZhbHNlKGxvY2suYWNxdWlyZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobG9j
ay5hY3F1aXJlZCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5
c3RlbS9maWxlX2xvY2sucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0v
ZmlsZV9sb2NrLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjY2YTBhNzFhNzZi
MDRkN2I1Mzk5ODVmZTU3ZThiZTYxZTcyZjA4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9m
aWxlX2xvY2sucHkKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi0jIENvcHlyaWdodCAo
QykgMjAxMCBHYWJvciBSYXBjc2FueWkgKHJnYWJvckBpbmYudS1zemVnZWQuaHUpLCBVbml2ZXJz
aXR5IG9mIFN6ZWdlZAotIwotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFVOSVZFUlNJVFkgT0YgU1pFR0VEIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0jIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0jIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgVU5JVkVSU0lUWSBPRiBTWkVHRUQgT1IKLSMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0j
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSMgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0jIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSMgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJUaGlzIGNsYXNzIGhlbHBzIHRvIGxvY2sgZmlsZXMg
ZXhjbHVzaXZlbHkgYWNyb3NzIHByb2Nlc3Nlcy4iIiIKLQotaW1wb3J0IGxvZ2dpbmcKLWltcG9y
dCBvcwotaW1wb3J0IHN5cwotaW1wb3J0IHRpbWUKLQotCi1fbG9nID0gbG9nZ2luZy5nZXRMb2dn
ZXIoX19uYW1lX18pCi0KLQotY2xhc3MgRmlsZUxvY2sob2JqZWN0KToKLQotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBsb2NrX2ZpbGVfcGF0aCwgbWF4X3dhaXRfdGltZV9zZWM9MjApOgotICAgICAg
ICBzZWxmLl9sb2NrX2ZpbGVfcGF0aCA9IGxvY2tfZmlsZV9wYXRoCi0gICAgICAgIHNlbGYuX2xv
Y2tfZmlsZV9kZXNjcmlwdG9yID0gTm9uZQotICAgICAgICBzZWxmLl9tYXhfd2FpdF90aW1lX3Nl
YyA9IG1heF93YWl0X3RpbWVfc2VjCi0KLSAgICBkZWYgX2NyZWF0ZV9sb2NrKHNlbGYpOgotICAg
ICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyk6Ci0gICAgICAgICAgICBpbXBv
cnQgbXN2Y3J0Ci0gICAgICAgICAgICBtc3ZjcnQubG9ja2luZyhzZWxmLl9sb2NrX2ZpbGVfZGVz
Y3JpcHRvciwgbXN2Y3J0LkxLX05CTENLLCAzMikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IGltcG9ydCBmY250bAotICAgICAgICAgICAgZmNudGwuZmxvY2soc2VsZi5fbG9ja19maWxlX2Rl
c2NyaXB0b3IsIGZjbnRsLkxPQ0tfRVggfCBmY250bC5MT0NLX05CKQotCi0gICAgZGVmIF9yZW1v
dmVfbG9jayhzZWxmKToKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicp
OgotICAgICAgICAgICAgaW1wb3J0IG1zdmNydAotICAgICAgICAgICAgbXN2Y3J0LmxvY2tpbmco
c2VsZi5fbG9ja19maWxlX2Rlc2NyaXB0b3IsIG1zdmNydC5MS19VTkxDSywgMzIpCi0gICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICBpbXBvcnQgZmNudGwKLSAgICAgICAgICAgIGZjbnRsLmZsb2Nr
KHNlbGYuX2xvY2tfZmlsZV9kZXNjcmlwdG9yLCBmY250bC5MT0NLX1VOKQotCi0gICAgZGVmIGFj
cXVpcmVfbG9jayhzZWxmKToKLSAgICAgICAgc2VsZi5fbG9ja19maWxlX2Rlc2NyaXB0b3IgPSBv
cy5vcGVuKHNlbGYuX2xvY2tfZmlsZV9wYXRoLCBvcy5PX1RSVU5DIHwgb3MuT19DUkVBVCkKLSAg
ICAgICAgc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAg
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fY3JlYXRlX2xvY2soKQotICAgICAg
ICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgICAgICBleGNlcHQgSU9FcnJvcjoKLSAgICAg
ICAgICAgICAgICBpZiB0aW1lLnRpbWUoKSAtIHN0YXJ0X3RpbWUgPiBzZWxmLl9tYXhfd2FpdF90
aW1lX3NlYzoKLSAgICAgICAgICAgICAgICAgICAgX2xvZy5kZWJ1ZygiRmlsZSBsb2NraW5nIGZh
aWxlZDogJXMiICUgc3RyKHN5cy5leGNfaW5mbygpKSkKLSAgICAgICAgICAgICAgICAgICAgb3Mu
Y2xvc2Uoc2VsZi5fbG9ja19maWxlX2Rlc2NyaXB0b3IpCi0gICAgICAgICAgICAgICAgICAgIHNl
bGYuX2xvY2tfZmlsZV9kZXNjcmlwdG9yID0gTm9uZQotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gRmFsc2UKLSAgICAgICAgICAgICAgICAjIFRoZXJlJ3Mgbm8gY29tcGVsbGluZyByZWFzb24g
dG8gc3BpbiBoYXJkIGhlcmUsIHNvIHNsZWVwIGZvciBhIGJpdC4KLSAgICAgICAgICAgICAgICB0
aW1lLnNsZWVwKDAuMDEpCi0KLSAgICBkZWYgcmVsZWFzZV9sb2NrKHNlbGYpOgotICAgICAgICB0
cnk6Ci0gICAgICAgICAgICBpZiBzZWxmLl9sb2NrX2ZpbGVfZGVzY3JpcHRvcjoKLSAgICAgICAg
ICAgICAgICBzZWxmLl9yZW1vdmVfbG9jaygpCi0gICAgICAgICAgICAgICAgb3MuY2xvc2Uoc2Vs
Zi5fbG9ja19maWxlX2Rlc2NyaXB0b3IpCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9ja19maWxl
X2Rlc2NyaXB0b3IgPSBOb25lCi0gICAgICAgICAgICBvcy51bmxpbmsoc2VsZi5fbG9ja19maWxl
X3BhdGgpCi0gICAgICAgIGV4Y2VwdCAoSU9FcnJvciwgT1NFcnJvcik6Ci0gICAgICAgICAgICBf
bG9nLmRlYnVnKCJXYXJuaW5nIGluIHJlbGVhc2UgbG9jazogJXMiICUgc3RyKHN5cy5leGNfaW5m
bygpKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9m
aWxlX2xvY2tfaW50ZWdyYXRpb250ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vc3lzdGVtL2ZpbGVfbG9ja19pbnRlZ3JhdGlvbnRlc3QucHkKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGI2NjFhMDFmMjkyNmEwYTQ2M2YwMjc3NGJjOTA3ODRmZTg3MzE1MjYuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVfbG9ja19pbnRlZ3JhdGlvbnRlc3QucHkKKysr
IC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxMCBHYWJvciBS
YXBjc2FueWkgKHJnYWJvckBpbmYudS1zemVnZWQuaHUpLCBVbml2ZXJzaXR5IG9mIFN6ZWdlZAot
IwotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0j
IGFyZSBtZXQ6Ci0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFVOSVZFUlNJVFkgT0YgU1pFR0VEIGBgQVMgSVMnJyBBTkQgQU5ZCi0jIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0j
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
VU5JVkVSU0lUWSBPRiBTWkVHRUQgT1IKLSMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0jIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSMg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0jIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSMgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotCi1pbXBvcnQgb3MKLWltcG9ydCB0ZW1wZmlsZQotaW1wb3J0IHVuaXR0ZXN0Ci0KLWZy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlX2xvY2sgaW1wb3J0IEZpbGVMb2NrCi0KLQot
Y2xhc3MgRmlsZUxvY2tUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLQotICAgIGRlZiBzZXRVcChz
ZWxmKToKLSAgICAgICAgc2VsZi5fbG9ja19uYW1lID0gIlRlc3RXZWJLaXQiICsgc3RyKG9zLmdl
dHBpZCgpKSArICIubG9jayIKLSAgICAgICAgc2VsZi5fbG9ja19wYXRoID0gb3MucGF0aC5qb2lu
KHRlbXBmaWxlLmdldHRlbXBkaXIoKSwgc2VsZi5fbG9ja19uYW1lKQotICAgICAgICBzZWxmLl9m
aWxlX2xvY2sxID0gRmlsZUxvY2soc2VsZi5fbG9ja19wYXRoLCAwLjEpCi0gICAgICAgIHNlbGYu
X2ZpbGVfbG9jazIgPSBGaWxlTG9jayhzZWxmLl9sb2NrX3BhdGgsIDAuMSkKLQotICAgIGRlZiB0
ZWFyRG93bihzZWxmKToKLSAgICAgICAgc2VsZi5fZmlsZV9sb2NrMS5yZWxlYXNlX2xvY2soKQot
ICAgICAgICBzZWxmLl9maWxlX2xvY2syLnJlbGVhc2VfbG9jaygpCi0KLSAgICBkZWYgdGVzdF9s
b2NrX2xpZmVjeWNsZShzZWxmKToKLSAgICAgICAgIyBDcmVhdGUgdGhlIGxvY2suCi0gICAgICAg
IHNlbGYuX2ZpbGVfbG9jazEuYWNxdWlyZV9sb2NrKCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KG9zLnBhdGguZXhpc3RzKHNlbGYuX2xvY2tfcGF0aCkpCi0KLSAgICAgICAgIyBUcnkgdG8gbG9j
ayBhZ2Fpbi4KLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLl9maWxlX2xvY2syLmFjcXVp
cmVfbG9jaygpKQotCi0gICAgICAgICMgUmVsZWFzZSB0aGUgbG9jay4KLSAgICAgICAgc2VsZi5f
ZmlsZV9sb2NrMS5yZWxlYXNlX2xvY2soKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBh
dGguZXhpc3RzKHNlbGYuX2xvY2tfcGF0aCkpCi0KLSAgICBkZWYgdGVzdF9zdHVja19sb2NrKHNl
bGYpOgotICAgICAgICBvcGVuKHNlbGYuX2xvY2tfcGF0aCwgJ3cnKS5jbG9zZSgpCi0gICAgICAg
IHNlbGYuX2ZpbGVfbG9jazEuYWNxdWlyZV9sb2NrKCkKLSAgICAgICAgc2VsZi5fZmlsZV9sb2Nr
MS5yZWxlYXNlX2xvY2soKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vc3lzdGVtL3N5c3RlbWhvc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9z
eXN0ZW0vc3lzdGVtaG9zdC5weQppbmRleCAxOTZhMjFkZGI1NzIwOGUwYWY5MzRiYWY5MDUwYTIy
NmQ1MjNhMmIxLi4wMmFlZmRhMmI4MjQ4NTQxMDE4ODQ3NDczNmI2YTQyMzUxMmQwYTk0IDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5w
eQpAQCAtMzEsNyArMzEsOCBAQCBpbXBvcnQgb3MKIGltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IHN5
cwogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGVudmlyb25tZW50LCBleGVj
dXRpdmUsIGZpbGVfbG9jaywgZmlsZXN5c3RlbSwgcGxhdGZvcm1pbmZvLCB1c2VyLCB3b3Jrc3Bh
Y2UKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgZW52aXJvbm1lbnQsIGV4ZWN1
dGl2ZSwgZmlsZXN5c3RlbSwgcGxhdGZvcm1pbmZvLCB1c2VyLCB3b3Jrc3BhY2UKK2Zyb20gd2Vi
a2l0Y29yZXB5IGltcG9ydCBGaWxlTG9jawogCiAKIGNsYXNzIFN5c3RlbUhvc3Qob2JqZWN0KToK
QEAgLTQ2LDcgKzQ3LDcgQEAgY2xhc3MgU3lzdGVtSG9zdChvYmplY3QpOgogICAgICAgICByZXR1
cm4gZW52aXJvbm1lbnQuRW52aXJvbm1lbnQob3MuZW52aXJvbi5jb3B5KCkpCiAKICAgICBkZWYg
bWFrZV9maWxlX2xvY2soc2VsZiwgcGF0aCk6Ci0gICAgICAgIHJldHVybiBmaWxlX2xvY2suRmls
ZUxvY2socGF0aCkKKyAgICAgICAgcmV0dXJuIEZpbGVMb2NrKHBhdGgpCiAKICAgICBkZWYgc3lt
Ym9saWNhdGVfY3Jhc2hfbG9nX2lmX25lZWRlZChzZWxmLCBwYXRoKToKICAgICAgICAgcmV0dXJu
IHNlbGYuZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZShwYXRoKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3N5c3RlbWhvc3RfbW9jay5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9zeXN0ZW1ob3N0X21vY2sucHkKaW5kZXgg
YzUyZmI0YWVjNWM1YzlmYTQwYzUyYzFkOTQwNjRmZmQ2NzNiZjllMS4uYmU5ZGYyMWFmYWVmN2Qz
ODA1MmJkZmExZmEzZmY3ZTc5MWFjMjA4ZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vc3lzdGVtL3N5c3RlbWhvc3RfbW9jay5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9zdF9tb2NrLnB5CkBAIC0xLDUgKzEsNSBA
QAogIyBDb3B5cmlnaHQgKGMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMg
Q29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
IwogIyAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTMwLDExICszMCwxMiBAQAogZnJv
bSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmVudmlyb25tZW50IGltcG9ydCBFbnZpcm9ubWVudAog
ZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhl
Y3V0aXZlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9y
dCBNb2NrRmlsZVN5c3RlbQotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVfbG9ja19t
b2NrIGltcG9ydCBNb2NrRmlsZUxvY2sKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5wbGF0
Zm9ybWluZm9fbW9jayBpbXBvcnQgTW9ja1BsYXRmb3JtSW5mbwogZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLnVzZXJfbW9jayBpbXBvcnQgTW9ja1VzZXIKIGZyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbS53b3Jrc3BhY2VfbW9jayBpbXBvcnQgTW9ja1dvcmtzcGFjZQogCitmcm9tIHdlYmtp
dGNvcmVweSBpbXBvcnQgbW9ja3MKKwogCiBjbGFzcyBNb2NrU3lzdGVtSG9zdChvYmplY3QpOgog
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dfZXhlY3V0aXZlPUZhbHNlLCBleGVjdXRpdmVfdGhy
b3dzX3doZW5fcnVuPU5vbmUsIG9zX25hbWU9Tm9uZSwgb3NfdmVyc2lvbj1Ob25lLCBleGVjdXRp
dmU9Tm9uZSwgZmlsZXN5c3RlbT1Ob25lKToKQEAgLTU0LDcgKzU1LDcgQEAgY2xhc3MgTW9ja1N5
c3RlbUhvc3Qob2JqZWN0KToKICAgICAgICAgcmV0dXJuIEVudmlyb25tZW50KHsiTU9DS19FTlZJ
Uk9OX0NPUFkiOiAnMSd9KQogCiAgICAgZGVmIG1ha2VfZmlsZV9sb2NrKHNlbGYsIHBhdGgpOgot
ICAgICAgICByZXR1cm4gTW9ja0ZpbGVMb2NrKHBhdGgpCisgICAgICAgIHJldHVybiBtb2Nrcy5G
aWxlTG9jayhwYXRoKQogCiAgICAgZGVmIHN5bWJvbGljYXRlX2NyYXNoX2xvZ19pZl9uZWVkZWQo
c2VsZiwgcGF0aCk6CiAgICAgICAgIHJldHVybiBzZWxmLmZpbGVzeXN0ZW0ucmVhZF90ZXh0X2Zp
bGUocGF0aCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5k
cy9yZWJhc2VsaW5lLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3Jl
YmFzZWxpbmUucHkKaW5kZXggNjdiZDk3YzI3ZjAwNjgzZTI4MzBjMzc4NjUxNmQ2Yjc4ZjJmNWQ2
YS4uMmYyZmE3NGM0NDQ3MGQzODQ1ODRmZTUxNTkzZmIyMTdhMGI0NzdiOSAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmUucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmUucHkKQEAgLTE1
NCwxMCArMTU0LDExIEBAIGNsYXNzIFJlYmFzZWxpbmVUZXN0KEFic3RyYWN0UmViYXNlbGluaW5n
Q29tbWFuZCk6CiAgICAgICAgICMgY29uY3VycmVudGx5IGFzIHdlbGwuCiAgICAgICAgICMgRklY
TUU6IFdlIHNob3VsZCByZXdvcmsgdGhlIGNvZGUgdG8gbm90IG5lZWQgdGhpczsgbWF5YmUganVz
dCBkb3dubG9hZAogICAgICAgICAjIHRoZSBmaWxlcyBpbiBwYXJhbGxlbCBhbmQgcmViYXNlbGlu
ZSBsb2NhbCBmaWxlcyBzZXJpYWxseT8KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcGF0aCA9
IHBvcnQucGF0aF90b190ZXN0X2V4cGVjdGF0aW9uc19maWxlKCkKLSAgICAgICAgICAgIGxvY2sg
PSBzZWxmLl90b29sLm1ha2VfZmlsZV9sb2NrKHBhdGggKyAnLmxvY2snKQotICAgICAgICAgICAg
bG9jay5hY3F1aXJlX2xvY2soKQorICAgICAgICBwYXRoID0gcG9ydC5wYXRoX3RvX3Rlc3RfZXhw
ZWN0YXRpb25zX2ZpbGUoKQorICAgICAgICB3aXRoIHNlbGYuX3Rvb2wubWFrZV9maWxlX2xvY2so
cGF0aCArICcubG9jaycpIGFzIGxvY2s6CisgICAgICAgICAgICBpZiBub3QgbG9jay5hY3F1aXJl
ZDoKKyAgICAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCdGYWlsZWQgdG8gYXF1aXJlIHJlYmFz
ZWxpbmUgbG9jayBmb3Ige30nLmZvcm1hdChwYXRoKSkKKwogICAgICAgICAgICAgZXhwZWN0YXRp
b25zID0gVGVzdEV4cGVjdGF0aW9ucyhwb3J0LCBpbmNsdWRlX2dlbmVyaWM9RmFsc2UsIGluY2x1
ZGVfb3ZlcnJpZGVzPUZhbHNlKQogICAgICAgICAgICAgZXhwZWN0YXRpb25zLnBhcnNlX2FsbF9l
eHBlY3RhdGlvbnMoKQogICAgICAgICAgICAgZm9yIHRlc3RfY29uZmlndXJhdGlvbiBpbiBwb3J0
LmFsbF90ZXN0X2NvbmZpZ3VyYXRpb25zKCk6CkBAIC0xNjUsOCArMTY2LDYgQEAgY2xhc3MgUmVi
YXNlbGluZVRlc3QoQWJzdHJhY3RSZWJhc2VsaW5pbmdDb21tYW5kKToKICAgICAgICAgICAgICAg
ICAgICAgZXhwZWN0YXRpb25zU3RyaW5nID0gZXhwZWN0YXRpb25zLnJlbW92ZV9jb25maWd1cmF0
aW9uX2Zyb21fdGVzdCh0ZXN0X25hbWUsIHRlc3RfY29uZmlndXJhdGlvbikKIAogICAgICAgICAg
ICAgc2VsZi5fdG9vbC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShwYXRoLCBleHBlY3RhdGlv
bnNTdHJpbmcpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBsb2NrLnJlbGVhc2VfbG9j
aygpCiAKICAgICBkZWYgX3Rlc3Rfcm9vdChzZWxmLCB0ZXN0X25hbWUpOgogICAgICAgICByZXR1
cm4gc2VsZi5fdG9vbC5maWxlc3lzdGVtLnNwbGl0ZXh0KHRlc3RfbmFtZSlbMF0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438703</attachid>
            <date>2021-09-20 11:31:46 -0700</date>
            <delta_ts>2021-09-20 12:52:41 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-230320-20210920113145.patch</filename>
            <type>text/plain</type>
            <size>25968</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNzY0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjZjMDE0MzBiMzlhYmIzNDk0ZDRiZWZmYWQ0YTgwZTBl
NTdmMjJhZC4uYmYyMWViOTNlNmMyZjMwNjNhZTlmYTY5NzJkNjI4ZTJhMmNlODk5MyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1
IEBACisyMDIxLTA5LTIwICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbd2Via2l0Y29yZXB5XSBNb3ZlIEZpbGVMb2NrIGZyb20gd2Via2l0cHkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDMyMAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vODMxNjg4MjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV3ZWkg
Wmh1LgorCisgICAgICAgIE1vdmUgRmlsZUxvY2sgZnJvbSB3ZWJraXRweSBpbnRvIHdlYmtpdGNv
cmVweSwgaW1wbGVtZW50IEZpbGVMb2NrIGFzIGEgbW9yZQorICAgICAgICBtb2Rlcm4gUHl0aG9u
IEFQSS4KKworICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS9zZXR1cC5w
eTogQnVtcCB2ZXJzaW9uLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVw
eS93ZWJraXRjb3JlcHkvX19pbml0X18ucHk6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvZmlsZV9sb2NrLnB5OiBBZGRlZC4KKyAg
ICAgICAgKEZpbGVMb2NrKToKKyAgICAgICAgKEZpbGVMb2NrLl9faW5pdF9fKToKKyAgICAgICAg
KEZpbGVMb2NrLmFjcXVpcmVkKTogQ2hlY2sgaWYgdGhlIGN1cnJlbnQgcHJvY2VzcyBoYXMgYWNx
dWlyZWQgdGhlIGxvY2suCisgICAgICAgIChGaWxlTG9jay5hY3F1aXJlKTogQXR0ZW1wdCB0byBh
Y3F1aXJlIGxvY2tmaWxlLgorICAgICAgICAoRmlsZUxvY2sucmVsZWFzZSk6IFJlbGVhc2UgbG9j
a2ZpbGUsIGlmIHRoaXMgcHJvY2VzcyBvd25zIHRoZSBsb2NrLgorICAgICAgICAoRmlsZUxvY2su
X19lbnRlcl9fKTogSW52b2tlIGFjcXVpcmUuCisgICAgICAgIChGaWxlTG9jay5fX2V4aXRfXyk6
IEludm9rZSByZWxlYXNlLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVw
eS93ZWJraXRjb3JlcHkvbW9ja3MvX19pbml0X18ucHk6CisgICAgICAgICogU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9tb2Nrcy9maWxlX2xvY2sucHk6IENvcGll
ZCBmcm9tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkv
bW9ja3MvX19pbml0X18ucHkuCisgICAgICAgIChGaWxlTG9jayk6IFNpbmdsZS10aHJlYWQgc3R1
YiBpbXBsZW1lbnRhdGlvbiBvZiBGaWxlTG9jayBmb3IgdGVzdGluZyB3aXRob3V0IGEgZmlsZXN5
c3RlbS4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29y
ZXB5L3Rlc3RzL2ZpbGVfbG9ja191bml0dGVzdC5weTogQWRkZWQuCisgICAgICAgIChGaWxlTG9j
a1Rlc3RDYXNlKToKKyAgICAgICAgKEZpbGVMb2NrVGVzdENhc2UuX19pbml0X18pOgorICAgICAg
ICAoRmlsZUxvY2tUZXN0Q2FzZS5zZXRVcCk6CisgICAgICAgIChGaWxlTG9ja1Rlc3RDYXNlLnRl
YXJEb3duKToKKyAgICAgICAgKEZpbGVMb2NrVGVzdENhc2UudGVzdF9iYXNpYyk6CisgICAgICAg
IChGaWxlTG9ja1Rlc3RDYXNlLnRlc3RfbG9ja2VkKToKKyAgICAgICAgKEZpbGVMb2NrVGVzdENh
c2UudGVzdF9sb2NrZWRfdGltZW91dCk6CisgICAgICAgIChGaWxlTG9ja1Rlc3RDYXNlLnRlc3Rf
ZG91YmxlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZV9s
b2NrLnB5OiBSZW1vdmVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3Rl
bS9maWxlX2xvY2tfaW50ZWdyYXRpb250ZXN0LnB5OiBSZW1vdmVkLgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9zeXN0ZW1ob3N0LnB5OgorICAgICAgICAoU3lzdGVt
SG9zdC5tYWtlX2ZpbGVfbG9jayk6IFVzZSB3ZWJraXRjb3JlcHkncyBGaWxlTG9jay4KKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9zdF9tb2NrLnB5Ogor
ICAgICAgICAoTW9ja1N5c3RlbUhvc3QubWFrZV9maWxlX2xvY2spOiBVc2Ugd2Via2l0Y29yZXB5
J3MgbW9ja3MuRmlsZUxvY2suCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1h
bmRzL3JlYmFzZWxpbmUucHk6CisgICAgICAgIChSZWJhc2VsaW5lVGVzdC5fdXBkYXRlX2V4cGVj
dGF0aW9uc19maWxlKTogVXNlIHdlYmtpdGNvcmVweSdzIEZpbGVMb2NrLgorCiAyMDIxLTA5LTIw
ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJbnRl
Z3JhdGlvbl0gRW5hYmxlIHNlbGVjdGlvbnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdGNvcmVweS9zZXR1cC5weSBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dl
YmtpdGNvcmVweS9zZXR1cC5weQppbmRleCAzMDc5OWZiNDZjNjVkN2M1MDI2NmQ0OWZmZjIyNjg2
ZmZjNDNhNjY5Li5iMjA0NjU3MDA3OGU3ZmIzNDYxM2FhYjI0ODdhZTJhN2I4NjgxMDVhIDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvc2V0dXAucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3NldHVwLnB5CkBAIC0zMCw3
ICszMCw3IEBAIGRlZiByZWFkbWUoKToKIAogc2V0dXAoCiAgICAgbmFtZT0nd2Via2l0Y29yZXB5
JywKLSAgICB2ZXJzaW9uPScwLjEwLjMnLAorICAgIHZlcnNpb249JzAuMTEuMCcsCiAgICAgZGVz
Y3JpcHRpb249J0xpYnJhcnkgY29udGFpbmluZyB2YXJpb3VzIFB5dGhvbiBzdXBwb3J0IGNsYXNz
ZXMgYW5kIGZ1bmN0aW9ucy4nLAogICAgIGxvbmdfZGVzY3JpcHRpb249cmVhZG1lKCksCiAgICAg
Y2xhc3NpZmllcnM9WwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0
Y29yZXB5L3dlYmtpdGNvcmVweS9fX2luaXRfXy5weSBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19pbml0X18ucHkKaW5kZXggMTQ4MzFiNWM2OTI0
ZTZlNTFmNjI3NDVhZGRkYThjZGU3YzIxNjM0Mi4uMGI1NjRjODBjZWUwYTA3YWM2NjAwNWUwMzMw
OTU5ZTNlMjA1ZjZjNCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0
Y29yZXB5L3dlYmtpdGNvcmVweS9fX2luaXRfXy5weQorKysgYi9Ub29scy9TY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L19faW5pdF9fLnB5CkBAIC00MSw4ICs0MSw5
IEBAIGZyb20gd2Via2l0Y29yZXB5Lm1lYXN1cmVfdGltZSBpbXBvcnQgTWVhc3VyZVRpbWUKIGZy
b20gd2Via2l0Y29yZXB5Lm5lc3RlZF9mdXp6eV9kaWN0IGltcG9ydCBOZXN0ZWRGdXp6eURpY3QK
IGZyb20gd2Via2l0Y29yZXB5LmNhbGxfYnlfbmVlZCBpbXBvcnQgQ2FsbEJ5TmVlZAogZnJvbSB3
ZWJraXRjb3JlcHkuZWRpdG9yIGltcG9ydCBFZGl0b3IKK2Zyb20gd2Via2l0Y29yZXB5LmZpbGVf
bG9jayBpbXBvcnQgRmlsZUxvY2sKIAotdmVyc2lvbiA9IFZlcnNpb24oMCwgMTAsIDMpCit2ZXJz
aW9uID0gVmVyc2lvbigwLCAxMSwgMCkKIAogZnJvbSB3ZWJraXRjb3JlcHkuYXV0b2luc3RhbGwg
aW1wb3J0IFBhY2thZ2UsIEF1dG9JbnN0YWxsCiBpZiBzeXMudmVyc2lvbl9pbmZvID4gKDMsIDAp
OgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtp
dGNvcmVweS9maWxlX2xvY2sucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3Jl
cHkvd2Via2l0Y29yZXB5L2ZpbGVfbG9jay5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMmNlYjA4NTVmZGM1NzI4
NTg4MDM1YmMxZTc3YjkyYzdhMWM0ZWI0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0
cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9maWxlX2xvY2sucHkKQEAgLTAs
MCArMSw4NSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTAgR2Fib3IgUmFwY3NhbnlpIChyZ2Fib3JA
aW5mLnUtc3plZ2VkLmh1KSwgVW5pdmVyc2l0eSBvZiBTemVnZWQKKyMgQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworIyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisjIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorIyBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUworIyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgdGltZQor
CitpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyk6CisgICAgaW1wb3J0IG1zdmNydAor
ZWxzZToKKyAgICBpbXBvcnQgZmNudGwKKworCitjbGFzcyBGaWxlTG9jayhvYmplY3QpOgorCisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgsIHRpbWVvdXQ9MjApOgorICAgICAgICBzZWxmLnBh
dGggPSBwYXRoCisgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKKyAgICAgICAgc2VsZi5f
ZGVzY3JpcHRvciA9IE5vbmUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhY3F1aXJlZChzZWxm
KToKKyAgICAgICAgcmV0dXJuIGJvb2woc2VsZi5fZGVzY3JpcHRvcikKKworICAgIGRlZiBhY3F1
aXJlKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9kZXNjcmlwdG9yOgorICAgICAgICAgICAgcmV0
dXJuIFRydWUKKworICAgICAgICBkZXNjcmlwdG9yID0gb3Mub3BlbihzZWxmLnBhdGgsIG9zLk9f
VFJVTkMgfCBvcy5PX0NSRUFUKQorICAgICAgICBzdGFydF90aW1lID0gdGltZS50aW1lKCkKKyAg
ICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBz
eXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyk6CisgICAgICAgICAgICAgICAgICAgIG1zdmNy
dC5sb2NraW5nKGRlc2NyaXB0b3IsIG1zdmNydC5MS19OQkxDSywgMzIpCisgICAgICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZmNudGwuZmxvY2soZGVzY3JpcHRvciwgZmNu
dGwuTE9DS19FWCB8IGZjbnRsLkxPQ0tfTkIpCisgICAgICAgICAgICAgICAgc2VsZi5fZGVzY3Jp
cHRvciA9IGRlc2NyaXB0b3IKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAg
ICAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgICAgICAgICBpZiB0aW1lLnRpbWUoKSAtIHN0
YXJ0X3RpbWUgPiBzZWxmLnRpbWVvdXQ6CisgICAgICAgICAgICAgICAgICAgIG9zLmNsb3NlKGRl
c2NyaXB0b3IpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Rlc2NyaXB0b3IgPSBOb25lCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgICAgIHRpbWUuc2xl
ZXAoMC4wMSkKKworICAgIGRlZiByZWxlYXNlKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAg
ICAgICBpZiBzZWxmLl9kZXNjcmlwdG9yOgorICAgICAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9y
bS5zdGFydHN3aXRoKCd3aW4nKToKKyAgICAgICAgICAgICAgICAgICAgbXN2Y3J0LmxvY2tpbmco
c2VsZi5fZGVzY3JpcHRvciwgbXN2Y3J0LkxLX1VOTENLLCAzMikKKyAgICAgICAgICAgICAgICBl
bHNlOgorICAgICAgICAgICAgICAgICAgICBmY250bC5mbG9jayhzZWxmLl9kZXNjcmlwdG9yLCBm
Y250bC5MT0NLX1VOKQorICAgICAgICAgICAgICAgIG9zLmNsb3NlKHNlbGYuX2Rlc2NyaXB0b3Ip
CisgICAgICAgICAgICAgICAgc2VsZi5fZGVzY3JpcHRvciA9IE5vbmUKKyAgICAgICAgICAgIG9z
LnVubGluayhzZWxmLnBhdGgpCisgICAgICAgIGV4Y2VwdCAoSU9FcnJvciwgT1NFcnJvcik6Cisg
ICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICBzZWxm
LmFjcXVpcmUoKQorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9fZXhpdF9fKHNlbGYs
ICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYucmVsZWFzZSgpCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L21vY2tzL19f
aW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNv
cmVweS9tb2Nrcy9fX2luaXRfXy5weQppbmRleCAwZmQwZGZhZWI4N2I2ODgxMjFhNzZjZjVmZDJh
ODA1MDBkYjFhODkwLi5jMjA1ZWY1ZDVlNzAzZWMyNTlkYmRjYWFhMmI2ODRjODdjYjhmYTkwIDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29y
ZXB5L21vY2tzL19faW5pdF9fLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtp
dGNvcmVweS93ZWJraXRjb3JlcHkvbW9ja3MvX19pbml0X18ucHkKQEAgLTI2LDMgKzI2LDQgQEAg
ZnJvbSB3ZWJraXRjb3JlcHkubW9ja3Muc3VicHJvY2VzcyBpbXBvcnQgUHJvY2Vzc0NvbXBsZXRp
b24sIFN1YnByb2Nlc3MKIAogZnJvbSB3ZWJraXRjb3JlcHkubW9ja3MucmVxdWVzdHNfIGltcG9y
dCBSZXNwb25zZSwgUmVxdWVzdHMKIGZyb20gd2Via2l0Y29yZXB5Lm1vY2tzLnRlcm1pbmFsIGlt
cG9ydCBUZXJtaW5hbAorZnJvbSB3ZWJraXRjb3JlcHkubW9ja3MuZmlsZV9sb2NrIGltcG9ydCBG
aWxlTG9jawpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5
L3dlYmtpdGNvcmVweS9tb2Nrcy9maWxlX2xvY2sucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmll
cy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L21vY2tzL2ZpbGVfbG9jay5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42NzQzZTU0ZjRkMDk1NzZlNjNkYjEwY2YwMDlmZWExMThjZmZlODhkCi0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9t
b2Nrcy9maWxlX2xvY2sucHkKQEAgLTAsMCArMSw0NiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
IEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OCisjIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTCisjIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisKK2NsYXNzIEZpbGVMb2NrKG9iamVjdCk6CisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHBhdGgsIHRpbWVvdXQ9MjApOgorICAgICAgICBzZWxmLnBhdGggPSBwYXRoCisg
ICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKKyAgICAgICAgc2VsZi5fYWNxdWlyZWQgPSBG
YWxzZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGFjcXVpcmVkKHNlbGYpOgorICAgICAgICBy
ZXR1cm4gc2VsZi5fYWNxdWlyZWQKKworICAgIGRlZiBhY3F1aXJlKHNlbGYpOgorICAgICAgICBz
ZWxmLl9hY3F1aXJlZCA9IFRydWUKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiByZWxl
YXNlKHNlbGYpOgorICAgICAgICBzZWxmLl9hY3F1aXJlZCA9IEZhbHNlCisKKyAgICBkZWYgX19l
bnRlcl9fKHNlbGYpOgorICAgICAgICBzZWxmLmFjcXVpcmUoKQorICAgICAgICByZXR1cm4gc2Vs
ZgorCisgICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHNl
bGYucmVsZWFzZSgpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRj
b3JlcHkvd2Via2l0Y29yZXB5L3Rlc3RzL2ZpbGVfbG9ja191bml0dGVzdC5weSBiL1Rvb2xzL1Nj
cmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVzdHMvZmlsZV9sb2Nr
X3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhYWE3MmYzYmY5NWUzM2IyNTBhOTU4NTVhZDMxMjdm
Y2ZhM2M5MjAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRjb3JlcHkvd2Via2l0Y29yZXB5L3Rlc3RzL2ZpbGVfbG9ja191bml0dGVzdC5weQpAQCAtMCww
ICsxLDExNSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisj
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisjIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQg
b3MKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IHRpbWUKK2ltcG9ydCB1
bml0dGVzdAorCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgRmlsZUxvY2ssIG1vY2tzCisKKwor
Y2xhc3MgRmlsZUxvY2tUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc3VwZXIoRmlsZUxvY2tUZXN0
Q2FzZSwgc2VsZikuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBzZWxmLnBhdGgg
PSBOb25lCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYucGF0aCA9IHRlbXBm
aWxlLm1rZHRlbXAoKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBzaHV0aWwu
cm10cmVlKHNlbGYucGF0aCwgaWdub3JlX2Vycm9ycz1UcnVlKQorCisgICAgZGVmIHRlc3RfYmFz
aWMoc2VsZik6CisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5wYXRoLCAnZXhhbXBs
ZS17fS5sb2NrJy5mb3JtYXQob3MuZ2V0cGlkKCkpKQorICAgICAgICBsb2NrID0gRmlsZUxvY2so
cGF0aCwgdGltZW91dD0wKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobG9jay5hY3F1aXJl
ZCkKKyAgICAgICAgd2l0aCBsb2NrOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxvY2su
YWNxdWlyZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobG9jay5hY3F1aXJlZCkKKworICAg
ICAgICB3aXRoIGxvY2s6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobG9jay5hY3F1aXJl
ZCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsb2NrLmFjcXVpcmVkKQorCisgICAgZGVmIHRl
c3RfbG9ja2VkKHNlbGYpOgorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHNlbGYucGF0aCwg
J2V4YW1wbGUte30ubG9jaycuZm9ybWF0KG9zLmdldHBpZCgpKSkKKyAgICAgICAgbG9ja19hID0g
RmlsZUxvY2socGF0aCwgdGltZW91dD0wKQorICAgICAgICBsb2NrX2IgPSBGaWxlTG9jayhwYXRo
LCB0aW1lb3V0PTApCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsb2NrX2EuYWNxdWlyZWQp
CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobG9ja19iLmFjcXVpcmVkKQorCisgICAgICAgIHdp
dGggbG9ja19hOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxvY2tfYS5hY3F1aXJlZCkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobG9ja19iLmFjcXVpcmVkKQorCisgICAgICAg
ICAgICB3aXRoIGxvY2tfYjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobG9ja19h
LmFjcXVpcmVkKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobG9ja19iLmFjcXVp
cmVkKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobG9ja19hLmFjcXVpcmVkKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsb2NrX2IuYWNxdWlyZWQpCisKKyAgICAgICAgc2Vs
Zi5hc3NlcnRGYWxzZShsb2NrX2EuYWNxdWlyZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
bG9ja19iLmFjcXVpcmVkKQorCisgICAgZGVmIHRlc3RfbG9ja2VkX3RpbWVvdXQoc2VsZik6Cisg
ICAgICAgIHdpdGggbW9ja3MuVGltZToKKyAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4o
c2VsZi5wYXRoLCAnZXhhbXBsZS17fS5sb2NrJy5mb3JtYXQob3MuZ2V0cGlkKCkpKQorICAgICAg
ICAgICAgbG9ja19hID0gRmlsZUxvY2socGF0aCwgdGltZW91dD0wKQorICAgICAgICAgICAgbG9j
a19iID0gRmlsZUxvY2socGF0aCwgdGltZW91dD0zMCkKKworICAgICAgICAgICAgc2VsZi5hc3Nl
cnRGYWxzZShsb2NrX2EuYWNxdWlyZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGxv
Y2tfYi5hY3F1aXJlZCkKKworICAgICAgICAgICAgc3RhcnRfdGltZSA9IGludCh0aW1lLnRpbWUo
KSkKKyAgICAgICAgICAgIHdpdGggbG9ja19hOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc3RhcnRfdGltZSwgaW50KHRpbWUudGltZSgpKSkKKyAgICAgICAgICAgICAgICBzZWxm
LmFzc2VydFRydWUobG9ja19hLmFjcXVpcmVkKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RmFsc2UobG9ja19iLmFjcXVpcmVkKQorCisgICAgICAgICAgICAgICAgd2l0aCBsb2NrX2I6Cisg
ICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhcnRfdGltZSArIDMwLCBpbnQo
dGltZS50aW1lKCkpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobG9ja19h
LmFjcXVpcmVkKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGxvY2tfYi5h
Y3F1aXJlZCkKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2NrX2EuYWNxdWly
ZWQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsb2NrX2IuYWNxdWlyZWQpCisK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobG9ja19hLmFjcXVpcmVkKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRGYWxzZShsb2NrX2IuYWNxdWlyZWQpCisKKyAgICBkZWYgdGVzdF9kb3Vi
bGUoc2VsZik6CisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5wYXRoLCAnZXhhbXBs
ZS17fS5sb2NrJy5mb3JtYXQob3MuZ2V0cGlkKCkpKQorICAgICAgICBsb2NrID0gRmlsZUxvY2so
cGF0aCwgdGltZW91dD0wKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobG9jay5hY3F1aXJl
ZCkKKyAgICAgICAgd2l0aCBsb2NrOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxvY2su
YWNxdWlyZWQpCisgICAgICAgICAgICB3aXRoIGxvY2s6CisgICAgICAgICAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKGxvY2suYWNxdWlyZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGxv
Y2suYWNxdWlyZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobG9jay5hY3F1aXJlZCkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlX2xvY2su
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZV9sb2NrLnB5CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjY2YTBhNzFhNzZiMDRkN2I1Mzk5ODVmZTU3
ZThiZTYxZTcyZjA4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlX2xvY2sucHkKKysr
IC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxMCBHYWJvciBS
YXBjc2FueWkgKHJnYWJvckBpbmYudS1zemVnZWQuaHUpLCBVbml2ZXJzaXR5IG9mIFN6ZWdlZAot
IwotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0j
IGFyZSBtZXQ6Ci0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFVOSVZFUlNJVFkgT0YgU1pFR0VEIGBgQVMgSVMnJyBBTkQgQU5ZCi0jIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0j
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
VU5JVkVSU0lUWSBPRiBTWkVHRUQgT1IKLSMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0jIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSMg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0jIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSMgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotCi0iIiJUaGlzIGNsYXNzIGhlbHBzIHRvIGxvY2sgZmlsZXMgZXhjbHVzaXZlbHkgYWNy
b3NzIHByb2Nlc3Nlcy4iIiIKLQotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBvcwotaW1wb3J0IHN5
cwotaW1wb3J0IHRpbWUKLQotCi1fbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCi0K
LQotY2xhc3MgRmlsZUxvY2sob2JqZWN0KToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2Nr
X2ZpbGVfcGF0aCwgbWF4X3dhaXRfdGltZV9zZWM9MjApOgotICAgICAgICBzZWxmLl9sb2NrX2Zp
bGVfcGF0aCA9IGxvY2tfZmlsZV9wYXRoCi0gICAgICAgIHNlbGYuX2xvY2tfZmlsZV9kZXNjcmlw
dG9yID0gTm9uZQotICAgICAgICBzZWxmLl9tYXhfd2FpdF90aW1lX3NlYyA9IG1heF93YWl0X3Rp
bWVfc2VjCi0KLSAgICBkZWYgX2NyZWF0ZV9sb2NrKHNlbGYpOgotICAgICAgICBpZiBzeXMucGxh
dGZvcm0uc3RhcnRzd2l0aCgnd2luJyk6Ci0gICAgICAgICAgICBpbXBvcnQgbXN2Y3J0Ci0gICAg
ICAgICAgICBtc3ZjcnQubG9ja2luZyhzZWxmLl9sb2NrX2ZpbGVfZGVzY3JpcHRvciwgbXN2Y3J0
LkxLX05CTENLLCAzMikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGltcG9ydCBmY250bAot
ICAgICAgICAgICAgZmNudGwuZmxvY2soc2VsZi5fbG9ja19maWxlX2Rlc2NyaXB0b3IsIGZjbnRs
LkxPQ0tfRVggfCBmY250bC5MT0NLX05CKQotCi0gICAgZGVmIF9yZW1vdmVfbG9jayhzZWxmKToK
LSAgICAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpOgotICAgICAgICAgICAg
aW1wb3J0IG1zdmNydAotICAgICAgICAgICAgbXN2Y3J0LmxvY2tpbmcoc2VsZi5fbG9ja19maWxl
X2Rlc2NyaXB0b3IsIG1zdmNydC5MS19VTkxDSywgMzIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICBpbXBvcnQgZmNudGwKLSAgICAgICAgICAgIGZjbnRsLmZsb2NrKHNlbGYuX2xvY2tfZmls
ZV9kZXNjcmlwdG9yLCBmY250bC5MT0NLX1VOKQotCi0gICAgZGVmIGFjcXVpcmVfbG9jayhzZWxm
KToKLSAgICAgICAgc2VsZi5fbG9ja19maWxlX2Rlc2NyaXB0b3IgPSBvcy5vcGVuKHNlbGYuX2xv
Y2tfZmlsZV9wYXRoLCBvcy5PX1RSVU5DIHwgb3MuT19DUkVBVCkKLSAgICAgICAgc3RhcnRfdGlt
ZSA9IHRpbWUudGltZSgpCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICB0cnk6Ci0g
ICAgICAgICAgICAgICAgc2VsZi5fY3JlYXRlX2xvY2soKQotICAgICAgICAgICAgICAgIHJldHVy
biBUcnVlCi0gICAgICAgICAgICBleGNlcHQgSU9FcnJvcjoKLSAgICAgICAgICAgICAgICBpZiB0
aW1lLnRpbWUoKSAtIHN0YXJ0X3RpbWUgPiBzZWxmLl9tYXhfd2FpdF90aW1lX3NlYzoKLSAgICAg
ICAgICAgICAgICAgICAgX2xvZy5kZWJ1ZygiRmlsZSBsb2NraW5nIGZhaWxlZDogJXMiICUgc3Ry
KHN5cy5leGNfaW5mbygpKSkKLSAgICAgICAgICAgICAgICAgICAgb3MuY2xvc2Uoc2VsZi5fbG9j
a19maWxlX2Rlc2NyaXB0b3IpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvY2tfZmlsZV9k
ZXNjcmlwdG9yID0gTm9uZQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAg
ICAgICAgICAgICAjIFRoZXJlJ3Mgbm8gY29tcGVsbGluZyByZWFzb24gdG8gc3BpbiBoYXJkIGhl
cmUsIHNvIHNsZWVwIGZvciBhIGJpdC4KLSAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMDEp
Ci0KLSAgICBkZWYgcmVsZWFzZV9sb2NrKHNlbGYpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICBpZiBzZWxmLl9sb2NrX2ZpbGVfZGVzY3JpcHRvcjoKLSAgICAgICAgICAgICAgICBzZWxmLl9y
ZW1vdmVfbG9jaygpCi0gICAgICAgICAgICAgICAgb3MuY2xvc2Uoc2VsZi5fbG9ja19maWxlX2Rl
c2NyaXB0b3IpCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9ja19maWxlX2Rlc2NyaXB0b3IgPSBO
b25lCi0gICAgICAgICAgICBvcy51bmxpbmsoc2VsZi5fbG9ja19maWxlX3BhdGgpCi0gICAgICAg
IGV4Y2VwdCAoSU9FcnJvciwgT1NFcnJvcik6Ci0gICAgICAgICAgICBfbG9nLmRlYnVnKCJXYXJu
aW5nIGluIHJlbGVhc2UgbG9jazogJXMiICUgc3RyKHN5cy5leGNfaW5mbygpKSkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlX2xvY2tfaW50ZWdy
YXRpb250ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVf
bG9ja19pbnRlZ3JhdGlvbnRlc3QucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2
NjFhMDFmMjkyNmEwYTQ2M2YwMjc3NGJjOTA3ODRmZTg3MzE1MjYuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vc3lzdGVtL2ZpbGVfbG9ja19pbnRlZ3JhdGlvbnRlc3QucHkKKysrIC9kZXYvbnVsbApAQCAt
MSw2MCArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxMCBHYWJvciBSYXBjc2FueWkgKHJnYWJv
ckBpbmYudS1zemVnZWQuaHUpLCBVbml2ZXJzaXR5IG9mIFN6ZWdlZAotIwotIyBBbGwgcmlnaHRz
IHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFVOSVZFUlNJVFkg
T0YgU1pFR0VEIGBgQVMgSVMnJyBBTkQgQU5ZCi0jIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0jIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotIyBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVU5JVkVSU0lUWSBPRiBT
WkVHRUQgT1IKLSMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0jIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSMgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0jIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSMgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQg
b3MKLWltcG9ydCB0ZW1wZmlsZQotaW1wb3J0IHVuaXR0ZXN0Ci0KLWZyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbS5maWxlX2xvY2sgaW1wb3J0IEZpbGVMb2NrCi0KLQotY2xhc3MgRmlsZUxvY2tU
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLQotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAg
c2VsZi5fbG9ja19uYW1lID0gIlRlc3RXZWJLaXQiICsgc3RyKG9zLmdldHBpZCgpKSArICIubG9j
ayIKLSAgICAgICAgc2VsZi5fbG9ja19wYXRoID0gb3MucGF0aC5qb2luKHRlbXBmaWxlLmdldHRl
bXBkaXIoKSwgc2VsZi5fbG9ja19uYW1lKQotICAgICAgICBzZWxmLl9maWxlX2xvY2sxID0gRmls
ZUxvY2soc2VsZi5fbG9ja19wYXRoLCAwLjEpCi0gICAgICAgIHNlbGYuX2ZpbGVfbG9jazIgPSBG
aWxlTG9jayhzZWxmLl9sb2NrX3BhdGgsIDAuMSkKLQotICAgIGRlZiB0ZWFyRG93bihzZWxmKToK
LSAgICAgICAgc2VsZi5fZmlsZV9sb2NrMS5yZWxlYXNlX2xvY2soKQotICAgICAgICBzZWxmLl9m
aWxlX2xvY2syLnJlbGVhc2VfbG9jaygpCi0KLSAgICBkZWYgdGVzdF9sb2NrX2xpZmVjeWNsZShz
ZWxmKToKLSAgICAgICAgIyBDcmVhdGUgdGhlIGxvY2suCi0gICAgICAgIHNlbGYuX2ZpbGVfbG9j
azEuYWNxdWlyZV9sb2NrKCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3Rz
KHNlbGYuX2xvY2tfcGF0aCkpCi0KLSAgICAgICAgIyBUcnkgdG8gbG9jayBhZ2Fpbi4KLSAgICAg
ICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLl9maWxlX2xvY2syLmFjcXVpcmVfbG9jaygpKQotCi0g
ICAgICAgICMgUmVsZWFzZSB0aGUgbG9jay4KLSAgICAgICAgc2VsZi5fZmlsZV9sb2NrMS5yZWxl
YXNlX2xvY2soKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKHNlbGYu
X2xvY2tfcGF0aCkpCi0KLSAgICBkZWYgdGVzdF9zdHVja19sb2NrKHNlbGYpOgotICAgICAgICBv
cGVuKHNlbGYuX2xvY2tfcGF0aCwgJ3cnKS5jbG9zZSgpCi0gICAgICAgIHNlbGYuX2ZpbGVfbG9j
azEuYWNxdWlyZV9sb2NrKCkKLSAgICAgICAgc2VsZi5fZmlsZV9sb2NrMS5yZWxlYXNlX2xvY2so
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3N5c3Rl
bWhvc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9z
dC5weQppbmRleCAxOTZhMjFkZGI1NzIwOGUwYWY5MzRiYWY5MDUwYTIyNmQ1MjNhMmIxLi4wMmFl
ZmRhMmI4MjQ4NTQxMDE4ODQ3NDczNmI2YTQyMzUxMmQwYTk0IDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weQpAQCAtMzEsNyArMzEs
OCBAQCBpbXBvcnQgb3MKIGltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IHN5cwogCi1mcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGVudmlyb25tZW50LCBleGVjdXRpdmUsIGZpbGVfbG9j
aywgZmlsZXN5c3RlbSwgcGxhdGZvcm1pbmZvLCB1c2VyLCB3b3Jrc3BhY2UKK2Zyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgZW52aXJvbm1lbnQsIGV4ZWN1dGl2ZSwgZmlsZXN5c3Rl
bSwgcGxhdGZvcm1pbmZvLCB1c2VyLCB3b3Jrc3BhY2UKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9y
dCBGaWxlTG9jawogCiAKIGNsYXNzIFN5c3RlbUhvc3Qob2JqZWN0KToKQEAgLTQ2LDcgKzQ3LDcg
QEAgY2xhc3MgU3lzdGVtSG9zdChvYmplY3QpOgogICAgICAgICByZXR1cm4gZW52aXJvbm1lbnQu
RW52aXJvbm1lbnQob3MuZW52aXJvbi5jb3B5KCkpCiAKICAgICBkZWYgbWFrZV9maWxlX2xvY2so
c2VsZiwgcGF0aCk6Ci0gICAgICAgIHJldHVybiBmaWxlX2xvY2suRmlsZUxvY2socGF0aCkKKyAg
ICAgICAgcmV0dXJuIEZpbGVMb2NrKHBhdGgpCiAKICAgICBkZWYgc3ltYm9saWNhdGVfY3Jhc2hf
bG9nX2lmX25lZWRlZChzZWxmLCBwYXRoKToKICAgICAgICAgcmV0dXJuIHNlbGYuZmlsZXN5c3Rl
bS5yZWFkX3RleHRfZmlsZShwYXRoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vc3lzdGVtL3N5c3RlbWhvc3RfbW9jay5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL3N5c3RlbS9zeXN0ZW1ob3N0X21vY2sucHkKaW5kZXggYzUyZmI0YWVjNWM1Yzlm
YTQwYzUyYzFkOTQwNjRmZmQ2NzNiZjllMS4uYmU5ZGYyMWFmYWVmN2QzODA1MmJkZmExZmEzZmY3
ZTc5MWFjMjA4ZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lz
dGVtL3N5c3RlbWhvc3RfbW9jay5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9zeXN0ZW0vc3lzdGVtaG9zdF9tb2NrLnB5CkBAIC0xLDUgKzEsNSBAQAogIyBDb3B5cmlnaHQg
KGMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMgQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAy
MDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyAgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKQEAgLTMwLDExICszMCwxMiBAQAogZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLmVudmlyb25tZW50IGltcG9ydCBFbnZpcm9ubWVudAogZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZlCiBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmlsZVN5c3Rl
bQotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVfbG9ja19tb2NrIGltcG9ydCBNb2Nr
RmlsZUxvY2sKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5wbGF0Zm9ybWluZm9fbW9jayBp
bXBvcnQgTW9ja1BsYXRmb3JtSW5mbwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnVzZXJf
bW9jayBpbXBvcnQgTW9ja1VzZXIKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS53b3Jrc3Bh
Y2VfbW9jayBpbXBvcnQgTW9ja1dvcmtzcGFjZQogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQg
bW9ja3MKKwogCiBjbGFzcyBNb2NrU3lzdGVtSG9zdChvYmplY3QpOgogICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBsb2dfZXhlY3V0aXZlPUZhbHNlLCBleGVjdXRpdmVfdGhyb3dzX3doZW5fcnVuPU5v
bmUsIG9zX25hbWU9Tm9uZSwgb3NfdmVyc2lvbj1Ob25lLCBleGVjdXRpdmU9Tm9uZSwgZmlsZXN5
c3RlbT1Ob25lKToKQEAgLTU0LDcgKzU1LDcgQEAgY2xhc3MgTW9ja1N5c3RlbUhvc3Qob2JqZWN0
KToKICAgICAgICAgcmV0dXJuIEVudmlyb25tZW50KHsiTU9DS19FTlZJUk9OX0NPUFkiOiAnMSd9
KQogCiAgICAgZGVmIG1ha2VfZmlsZV9sb2NrKHNlbGYsIHBhdGgpOgotICAgICAgICByZXR1cm4g
TW9ja0ZpbGVMb2NrKHBhdGgpCisgICAgICAgIHJldHVybiBtb2Nrcy5GaWxlTG9jayhwYXRoKQog
CiAgICAgZGVmIHN5bWJvbGljYXRlX2NyYXNoX2xvZ19pZl9uZWVkZWQoc2VsZiwgcGF0aCk6CiAg
ICAgICAgIHJldHVybiBzZWxmLmZpbGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUocGF0aCkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lLnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmUucHkKaW5k
ZXggNjdiZDk3YzI3ZjAwNjgzZTI4MzBjMzc4NjUxNmQ2Yjc4ZjJmNWQ2YS4uMmYyZmE3NGM0NDQ3
MGQzODQ1ODRmZTUxNTkzZmIyMTdhMGI0NzdiOSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmUucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmUucHkKQEAgLTE1NCwxMCArMTU0LDExIEBA
IGNsYXNzIFJlYmFzZWxpbmVUZXN0KEFic3RyYWN0UmViYXNlbGluaW5nQ29tbWFuZCk6CiAgICAg
ICAgICMgY29uY3VycmVudGx5IGFzIHdlbGwuCiAgICAgICAgICMgRklYTUU6IFdlIHNob3VsZCBy
ZXdvcmsgdGhlIGNvZGUgdG8gbm90IG5lZWQgdGhpczsgbWF5YmUganVzdCBkb3dubG9hZAogICAg
ICAgICAjIHRoZSBmaWxlcyBpbiBwYXJhbGxlbCBhbmQgcmViYXNlbGluZSBsb2NhbCBmaWxlcyBz
ZXJpYWxseT8KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcGF0aCA9IHBvcnQucGF0aF90b190
ZXN0X2V4cGVjdGF0aW9uc19maWxlKCkKLSAgICAgICAgICAgIGxvY2sgPSBzZWxmLl90b29sLm1h
a2VfZmlsZV9sb2NrKHBhdGggKyAnLmxvY2snKQotICAgICAgICAgICAgbG9jay5hY3F1aXJlX2xv
Y2soKQorICAgICAgICBwYXRoID0gcG9ydC5wYXRoX3RvX3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUo
KQorICAgICAgICB3aXRoIHNlbGYuX3Rvb2wubWFrZV9maWxlX2xvY2socGF0aCArICcubG9jaycp
IGFzIGxvY2s6CisgICAgICAgICAgICBpZiBub3QgbG9jay5hY3F1aXJlZDoKKyAgICAgICAgICAg
ICAgICByYWlzZSBPU0Vycm9yKCdGYWlsZWQgdG8gYXF1aXJlIHJlYmFzZWxpbmUgbG9jayBmb3Ig
e30nLmZvcm1hdChwYXRoKSkKKwogICAgICAgICAgICAgZXhwZWN0YXRpb25zID0gVGVzdEV4cGVj
dGF0aW9ucyhwb3J0LCBpbmNsdWRlX2dlbmVyaWM9RmFsc2UsIGluY2x1ZGVfb3ZlcnJpZGVzPUZh
bHNlKQogICAgICAgICAgICAgZXhwZWN0YXRpb25zLnBhcnNlX2FsbF9leHBlY3RhdGlvbnMoKQog
ICAgICAgICAgICAgZm9yIHRlc3RfY29uZmlndXJhdGlvbiBpbiBwb3J0LmFsbF90ZXN0X2NvbmZp
Z3VyYXRpb25zKCk6CkBAIC0xNjUsOCArMTY2LDYgQEAgY2xhc3MgUmViYXNlbGluZVRlc3QoQWJz
dHJhY3RSZWJhc2VsaW5pbmdDb21tYW5kKToKICAgICAgICAgICAgICAgICAgICAgZXhwZWN0YXRp
b25zU3RyaW5nID0gZXhwZWN0YXRpb25zLnJlbW92ZV9jb25maWd1cmF0aW9uX2Zyb21fdGVzdCh0
ZXN0X25hbWUsIHRlc3RfY29uZmlndXJhdGlvbikKIAogICAgICAgICAgICAgc2VsZi5fdG9vbC5m
aWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShwYXRoLCBleHBlY3RhdGlvbnNTdHJpbmcpCi0gICAg
ICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBsb2NrLnJlbGVhc2VfbG9jaygpCiAKICAgICBkZWYg
X3Rlc3Rfcm9vdChzZWxmLCB0ZXN0X25hbWUpOgogICAgICAgICByZXR1cm4gc2VsZi5fdG9vbC5m
aWxlc3lzdGVtLnNwbGl0ZXh0KHRlc3RfbmFtZSlbMF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>