<?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>130543</bug_id>
          
          <creation_ts>2014-03-20 15:59:57 -0700</creation_ts>
          <short_desc>Rename TextTrackRegion/TextTrackRegionList to VTTRegion/VTTRegionList</short_desc>
          <delta_ts>2014-03-20 16:47:53 -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>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>992775</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-03-20 15:59:57 -0700</bug_when>
    <thetext>Merge the following Blink patch, as it puts us in compliance with the WebVTT JS API specification

http://dev.w3.org/html5/webvtt/#vttregion-interface
http://dev.w3.org/html5/webvtt/#vttregionlist-interface

Blink Patch:

Rename TextTrackRegion/TextTrackRegionList to VTTRegion/VTTRegionList
	69ee6d3399d64163e4936ac1bde222036c54c4b8
	https://codereview.chromium.org/55653003
	
	philipj@opera.com</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992777</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-03-20 16:01:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/16385216&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992795</commentid>
    <comment_count>2</comment_count>
      <attachid>227353</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-03-20 16:37:21 -0700</bug_when>
    <thetext>Created attachment 227353
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992797</commentid>
    <comment_count>3</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-03-20 16:47:53 -0700</bug_when>
    <thetext>Committed r166022: &lt;http://trac.webkit.org/changeset/166022&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227353</attachid>
            <date>2014-03-20 16:37:21 -0700</date>
            <delta_ts>2014-03-20 16:43:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130543-20140320163659.patch</filename>
            <type>text/plain</type>
            <size>186476</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NjAwOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk2IEBACisyMDE0LTAzLTIwICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBUZXh0VHJhY2tS
ZWdpb24vVGV4dFRyYWNrUmVnaW9uTGlzdCB0byBWVFRSZWdpb24vVlRUUmVnaW9uTGlzdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwNTQzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWVyZ2VkIGZyb20g
QmxpbmsgKHBhdGNoIGJ5IHBoaWxpcGpAb3BlcmEuY29tKToKKyAgICAgICAgaHR0cHM6Ly9jaHJv
bWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL2JsaW5rLysvNjllZTZkMzM5OWQ2NDE2M2U0
OTM2YWMxYmRlMjIyMDM2YzU0YzRiOAorICAgICAgICBodHRwOi8vY3JidWcuY29tLzU1NjUzMDAz
CisKKyAgICAgICAgVGVzdHM6IG1lZGlhL3RyYWNrL3JlZ2lvbnMtd2VidnR0L3Z0dC1yZWdpb24t
Y29uc3RydWN0b3IuaHRtbAorICAgICAgICAgICAgICAgbWVkaWEvdHJhY2svcmVnaW9ucy13ZWJ2
dHQvdnR0LXJlZ2lvbi1kaXNwbGF5Lmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL3RyYWNrL3Jl
Z2lvbnMtd2VidnR0L3Z0dC1yZWdpb24tZG9tLWxheW91dC5odG1sCisgICAgICAgICAgICAgICBt
ZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0dC92dHQtcmVnaW9uLWxpc3QuaHRtbAorICAgICAgICAg
ICAgICAgbWVkaWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQvdnR0LXJlZ2lvbi1wYXJzZXIuaHRtbAor
CisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisgICAg
ICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVu
dHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVy
RWxlbWVudDo6dXBkYXRlRGlzcGxheSk6CisgICAgICAgICogaHRtbC90cmFjay9Mb2FkYWJsZVRl
eHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6bmV3UmVn
aW9uc0F2YWlsYWJsZSk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2suY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjplbnN1cmVWVFRSZWdpb25MaXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRUcmFjazo6cmVnaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJh
Y2s6OmFkZFJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnJlbW92ZVJlZ2lv
bik6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2suaDoKKyAgICAgICAgKiBodG1sL3Ry
YWNrL1RleHRUcmFjay5pZGw6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3Bw
OgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uLmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja1JlZ2lvbi5oOiBSZW1vdmVkLgorICAgICAgICAq
IGh0bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBodG1s
L3RyYWNrL1RleHRUcmFja1JlZ2lvbkxpc3QuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGh0bWwv
dHJhY2svVGV4dFRyYWNrUmVnaW9uTGlzdC5oOiBSZW1vdmVkLgorICAgICAgICAqIGh0bWwvdHJh
Y2svVGV4dFRyYWNrUmVnaW9uTGlzdC5pZGw6IFJlbW92ZWQuCisgICAgICAgICogaHRtbC90cmFj
ay9WVFRDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VlRUQ3VlOjpyZW1vdmVEaXNwbGF5VHJl
ZSk6CisgICAgICAgICogaHRtbC90cmFjay9WVFRSZWdpb24uY3BwOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja1JlZ2lvbi5jcHAuCisgICAgICAgIChXZWJD
b3JlOjpWVFRSZWdpb246OlZUVFJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpWVFRSZWdpb246
On5WVFRSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6VlRUUmVnaW9uOjpzZXRUcmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpWVFRSZWdpb246OnNldElkKToKKyAgICAgICAgKFdlYkNvcmU6OlZU
VFJlZ2lvbjo6c2V0V2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6VlRUUmVnaW9uOjpzZXRIZWln
aHQpOgorICAgICAgICAoV2ViQ29yZTo6VlRUUmVnaW9uOjpzZXRSZWdpb25BbmNob3JYKToKKyAg
ICAgICAgKFdlYkNvcmU6OlZUVFJlZ2lvbjo6c2V0UmVnaW9uQW5jaG9yWSk6CisgICAgICAgIChX
ZWJDb3JlOjpWVFRSZWdpb246OnNldFZpZXdwb3J0QW5jaG9yWCk6CisgICAgICAgIChXZWJDb3Jl
OjpWVFRSZWdpb246OnNldFZpZXdwb3J0QW5jaG9yWSk6CisgICAgICAgIChXZWJDb3JlOjpWVFRS
ZWdpb246OnNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpWVFRSZWdpb246OnNldFNjcm9sbCk6
CisgICAgICAgIChXZWJDb3JlOjpWVFRSZWdpb246OnVwZGF0ZVBhcmFtZXRlcnNGcm9tUmVnaW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlZUVFJlZ2lvbjo6c2V0UmVnaW9uU2V0dGluZ3MpOgorICAg
ICAgICAoV2ViQ29yZTo6VlRUUmVnaW9uOjpnZXRTZXR0aW5nRnJvbVN0cmluZyk6CisgICAgICAg
IChXZWJDb3JlOjpWVFRSZWdpb246OnBhcnNlU2V0dGluZ1ZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OlZUVFJlZ2lvbjo6cGFyc2VTZXR0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlZUVFJlZ2lv
bjo6dGV4dFRyYWNrQ3VlQ29udGFpbmVyU2Nyb2xsaW5nQ2xhc3MpOgorICAgICAgICAoV2ViQ29y
ZTo6VlRUUmVnaW9uOjp0ZXh0VHJhY2tDdWVDb250YWluZXJTaGFkb3dQc2V1ZG9JZCk6CisgICAg
ICAgIChXZWJDb3JlOjpWVFRSZWdpb246OnRleHRUcmFja1JlZ2lvblNoYWRvd1BzZXVkb0lkKToK
KyAgICAgICAgKFdlYkNvcmU6OlZUVFJlZ2lvbjo6YXBwZW5kVGV4dFRyYWNrQ3VlQm94KToKKyAg
ICAgICAgKFdlYkNvcmU6OlZUVFJlZ2lvbjo6ZGlzcGxheUxhc3RUZXh0VHJhY2tDdWVCb3gpOgor
ICAgICAgICAoV2ViQ29yZTo6VlRUUmVnaW9uOjp3aWxsUmVtb3ZlVGV4dFRyYWNrQ3VlQm94KToK
KyAgICAgICAgKFdlYkNvcmU6OlZUVFJlZ2lvbjo6Z2V0RGlzcGxheVRyZWUpOgorICAgICAgICAo
V2ViQ29yZTo6VlRUUmVnaW9uOjpwcmVwYXJlUmVnaW9uRGlzcGxheVRyZWUpOgorICAgICAgICAo
V2ViQ29yZTo6VlRUUmVnaW9uOjpzdGFydFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlZUVFJl
Z2lvbjo6c3RvcFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlZUVFJlZ2lvbjo6c2Nyb2xsVGlt
ZXJGaXJlZCk6CisgICAgICAgICogaHRtbC90cmFjay9WVFRSZWdpb24uaDogQ29waWVkIGZyb20g
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tSZWdpb24uaC4KKyAgICAgICAgKFdl
YkNvcmU6OlZUVFJlZ2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZUVFJlZ2lv
bi5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrUmVn
aW9uLmlkbC4KKyAgICAgICAgKiBodG1sL3RyYWNrL1ZUVFJlZ2lvbkxpc3QuY3BwOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja1JlZ2lvbkxpc3QuY3BwLgor
ICAgICAgICAoV2ViQ29yZTo6VlRUUmVnaW9uTGlzdDo6VlRUUmVnaW9uTGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpWVFRSZWdpb25MaXN0OjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6VlRU
UmVnaW9uTGlzdDo6aXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpWVFRSZWdpb25MaXN0OjpnZXRS
ZWdpb25CeUlkKToKKyAgICAgICAgKFdlYkNvcmU6OlZUVFJlZ2lvbkxpc3Q6OmFkZCk6CisgICAg
ICAgIChXZWJDb3JlOjpWVFRSZWdpb25MaXN0OjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6
VlRUUmVnaW9uTGlzdDo6Y2xlYXIpOgorICAgICAgICAqIGh0bWwvdHJhY2svVlRUUmVnaW9uTGlz
dC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja1JlZ2lv
bkxpc3QuaC4KKyAgICAgICAgKFdlYkNvcmU6OlZUVFJlZ2lvbkxpc3Q6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpWVFRSZWdpb25MaXN0Ojp+VlRUUmVnaW9uTGlzdCk6CisgICAgICAgICog
aHRtbC90cmFjay9WVFRSZWdpb25MaXN0LmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2tSZWdpb25MaXN0LmlkbC4KKyAgICAgICAgKiBodG1sL3RyYWNr
L1dlYlZUVFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRQYXJzZXI6OnBhcnNl
RmxvYXRQZXJjZW50YWdlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRUUGFyc2VyOjpn
ZXROZXdSZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlZUVFBhcnNlcjo6Y3JlYXRlTmV3
UmVnaW9uKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5oOgorICAgICAgICAq
IGxvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNr
TG9hZGVyOjpnZXROZXdSZWdpb25zKToKKyAgICAgICAgKiBsb2FkZXIvVGV4dFRyYWNrTG9hZGVy
Lmg6CisKIDIwMTQtMDMtMjAgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+
CiAKICAgICAgICAgRml4IHRoZSBNb3VudGFpbiBMaW9uIGJ1aWxkLgpJbmRleDogU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAxNjYwMDkpCisrKyBTb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC00NTAsOCArNDUwLDggQEAgTk9O
X1NWR19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9odG1sL3RyYWNrL1RleHRUcmFj
a0N1ZS5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVMaXN0Lmlk
bCBcCiAgICAgJChXZWJDb3JlKS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsIFwKLSAgICAk
KFdlYkNvcmUpL2h0bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uLmlkbCBcCi0gICAgJChXZWJDb3Jl
KS9odG1sL3RyYWNrL1RleHRUcmFja1JlZ2lvbkxpc3QuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0
bWwvdHJhY2svVlRUUmVnaW9uLmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL3RyYWNrL1ZUVFJl
Z2lvbkxpc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvdHJhY2svVHJhY2tFdmVudC5pZGwg
XAogICAgICQoV2ViQ29yZSkvaHRtbC90cmFjay9WaWRlb1RyYWNrLmlkbCBcCiAgICAgJChXZWJD
b3JlKS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmlkbCBcCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjYw
MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTIzMDMsMTQgKzIzMDMsMTQgQEAKIAkJN0FDRDg4RDMxNEMwOEJE
NjAwODRFREQyIC8qIEluc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBQ0Q4OEQxMTRDMDhCRDYwMDg0RUREMiAv
KiBJbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgKi87IH07CiAJCTdBQ0Q4OEQ0MTRDMDhCRDYw
MDg0RUREMiAvKiBJbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FDRDg4RDIxNEMwOEJENjAwODRFREQyIC8qIElu
c3BlY3RvckluZGV4ZWREQkFnZW50LmggKi87IH07CiAJCTdBREU3MjI2MTBDQkJCOUIwMDZCM0Iz
QSAvKiBDb250ZXh0TWVudVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QURFNzIyNTEwQ0JCQjlCMDA2QjNCM0EgLyogQ29udGV4dE1lbnVQ
cm92aWRlci5oICovOyB9OwotCQk3QUY5QjIwMjE4Q0ZCMkRGMDBDNjRCRUYgLyogVGV4dFRyYWNr
UmVnaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdBRjlCMUZDMThDRkIyREYwMEM2NEJFRiAvKiBUZXh0VHJhY2tSZWdpb24uY3BwICovOyB9Owot
CQk3QUY5QjIwMzE4Q0ZCMkRGMDBDNjRCRUYgLyogVGV4dFRyYWNrUmVnaW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjFGRDE4Q0ZCMkRGMDBD
NjRCRUYgLyogVGV4dFRyYWNrUmVnaW9uLmggKi87IH07Ci0JCTdBRjlCMjA1MThDRkIyREYwMEM2
NEJFRiAvKiBUZXh0VHJhY2tSZWdpb25MaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRjlCMUZGMThDRkIyREYwMEM2NEJFRiAvKiBUZXh0VHJh
Y2tSZWdpb25MaXN0LmNwcCAqLzsgfTsKLQkJN0FGOUIyMDYxOENGQjJERjAwQzY0QkVGIC8qIFRl
eHRUcmFja1JlZ2lvbkxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdBRjlCMjAwMThDRkIyREYwMEM2NEJFRiAvKiBUZXh0VHJhY2tSZWdpb25MaXN0
LmggKi87IH07Ci0JCTdBRjlCMjBDMThDRkI1RjQwMEM2NEJFRiAvKiBKU1RleHRUcmFja1JlZ2lv
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUY5
QjIwODE4Q0ZCNUYyMDBDNjRCRUYgLyogSlNUZXh0VHJhY2tSZWdpb24uY3BwICovOyB9OwotCQk3
QUY5QjIwRDE4Q0ZCNUY0MDBDNjRCRUYgLyogSlNUZXh0VHJhY2tSZWdpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRjlCMjA5MThDRkI1RjIwMEM2
NEJFRiAvKiBKU1RleHRUcmFja1JlZ2lvbi5oICovOyB9OwotCQk3QUY5QjIwRTE4Q0ZCNUY0MDBD
NjRCRUYgLyogSlNUZXh0VHJhY2tSZWdpb25MaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRjlCMjBBMThDRkI1RjMwMEM2NEJFRiAvKiBKU1Rl
eHRUcmFja1JlZ2lvbkxpc3QuY3BwICovOyB9OwotCQk3QUY5QjIwRjE4Q0ZCNUY0MDBDNjRCRUYg
LyogSlNUZXh0VHJhY2tSZWdpb25MaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QUY5QjIwQjE4Q0ZCNUYzMDBDNjRCRUYgLyogSlNUZXh0VHJhY2tS
ZWdpb25MaXN0LmggKi87IH07CisJCTdBRjlCMjAyMThDRkIyREYwMEM2NEJFRiAvKiBWVFRSZWdp
b24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FG
OUIxRkMxOENGQjJERjAwQzY0QkVGIC8qIFZUVFJlZ2lvbi5jcHAgKi87IH07CisJCTdBRjlCMjAz
MThDRkIyREYwMEM2NEJFRiAvKiBWVFRSZWdpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRjlCMUZEMThDRkIyREYwMEM2NEJFRiAvKiBWVFRSZWdp
b24uaCAqLzsgfTsKKwkJN0FGOUIyMDUxOENGQjJERjAwQzY0QkVGIC8qIFZUVFJlZ2lvbkxpc3Qu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIx
RkYxOENGQjJERjAwQzY0QkVGIC8qIFZUVFJlZ2lvbkxpc3QuY3BwICovOyB9OworCQk3QUY5QjIw
NjE4Q0ZCMkRGMDBDNjRCRUYgLyogVlRUUmVnaW9uTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIyMDAxOENGQjJERjAwQzY0QkVGIC8qIFZU
VFJlZ2lvbkxpc3QuaCAqLzsgfTsKKwkJN0FGOUIyMEMxOENGQjVGNDAwQzY0QkVGIC8qIEpTVlRU
UmVnaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdBRjlCMjA4MThDRkI1RjIwMEM2NEJFRiAvKiBKU1ZUVFJlZ2lvbi5jcHAgKi87IH07CisJCTdB
RjlCMjBEMThDRkI1RjQwMEM2NEJFRiAvKiBKU1ZUVFJlZ2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGOUIyMDkxOENGQjVGMjAwQzY0QkVGIC8q
IEpTVlRUUmVnaW9uLmggKi87IH07CisJCTdBRjlCMjBFMThDRkI1RjQwMEM2NEJFRiAvKiBKU1ZU
VFJlZ2lvbkxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0FGOUIyMEExOENGQjVGMzAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5jcHAgKi87
IH07CisJCTdBRjlCMjBGMThDRkI1RjQwMEM2NEJFRiAvKiBKU1ZUVFJlZ2lvbkxpc3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRjlCMjBCMThDRkI1
RjMwMEM2NEJFRiAvKiBKU1ZUVFJlZ2lvbkxpc3QuaCAqLzsgfTsKIAkJN0JFNzQyNzM4MUZBOTA2
RkJCNEYwRjJDIC8qIEpTU1ZHR3JhcGhpY3NFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTBDNEMwMkJFRDg5MzZGODE4RTJGOTkgLyogSlNT
VkdHcmFwaGljc0VsZW1lbnQuaCAqLzsgfTsKIAkJN0MyQkREM0QxN0M3Rjk4QzAwMzhGRjE1IC8q
IEpTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QzJCREQzQjE3QzdGOThCMDAzOEZGMTUgLyogSlNET01HbG9iYWxP
YmplY3RUYXNrLmNwcCAqLzsgfTsKIAkJN0MyQkREM0UxN0M3Rjk4QzAwMzhGRjE1IC8qIEpTRE9N
R2xvYmFsT2JqZWN0VGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0MyQkREM0MxN0M3Rjk4QjAwMzhGRjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0VGFz
ay5oICovOyB9OwpAQCAtOTMwOCwxNiArOTMwOCwxNiBAQAogCQk3QUNEODhEMTE0QzA4QkQ2MDA4
NEVERDIgLyogSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QUNEODhEMjE0QzA4QkQ2MDA4NEVERDIgLyogSW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVj
dG9ySW5kZXhlZERCQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FERTcy
MjUxMENCQkI5QjAwNkIzQjNBIC8qIENvbnRleHRNZW51UHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGV4dE1lbnVQcm92aWRlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk3QUY5QjFGQzE4Q0ZCMkRGMDBDNjRCRUYgLyogVGV4dFRyYWNrUmVn
aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRUcmFja1Jl
Z2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdBRjlCMUZEMThDRkIyREYw
MEM2NEJFRiAvKiBUZXh0VHJhY2tSZWdpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVGV4dFRyYWNrUmVnaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdB
RjlCMUZFMThDRkIyREYwMEM2NEJFRiAvKiBUZXh0VHJhY2tSZWdpb24uaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFRleHRUcmFja1JlZ2lvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTdBRjlCMUZGMThDRkIyREYwMEM2NEJFRiAvKiBUZXh0VHJhY2tSZWdpb25MaXN0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRUcmFja1JlZ2lvbkxp
c3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QUY5QjIwMDE4Q0ZCMkRGMDBD
NjRCRUYgLyogVGV4dFRyYWNrUmVnaW9uTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUZXh0VHJhY2tSZWdpb25MaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTdBRjlCMjAxMThDRkIyREYwMEM2NEJFRiAvKiBUZXh0VHJhY2tSZWdpb25MaXN0LmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBUZXh0VHJhY2tSZWdpb25MaXN0LmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0FGOUIyMDgxOENGQjVGMjAwQzY0QkVGIC8qIEpTVGV4dFRy
YWNrUmVnaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVGV4
dFRyYWNrUmVnaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0FGOUIyMDkx
OENGQjVGMjAwQzY0QkVGIC8qIEpTVGV4dFRyYWNrUmVnaW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTVGV4dFRyYWNrUmVnaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTdBRjlCMjBBMThDRkI1RjMwMEM2NEJFRiAvKiBKU1RleHRUcmFja1JlZ2lvbkxp
c3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUZXh0VHJhY2tS
ZWdpb25MaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0FGOUIyMEIxOENG
QjVGMzAwQzY0QkVGIC8qIEpTVGV4dFRyYWNrUmVnaW9uTGlzdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU1RleHRUcmFja1JlZ2lvbkxpc3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJN0FGOUIxRkMxOENGQjJERjAwQzY0QkVGIC8qIFZUVFJlZ2lvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWVFRSZWdpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QUY5QjFGRDE4Q0ZCMkRGMDBDNjRCRUYgLyogVlRU
UmVnaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZUVFJlZ2lvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QUY5QjFGRTE4Q0ZCMkRGMDBDNjRCRUYgLyog
VlRUUmVnaW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBWVFRSZWdpb24uaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QUY5QjFGRjE4Q0ZCMkRGMDBDNjRCRUYgLyogVlRU
UmVnaW9uTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWVFRS
ZWdpb25MaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0FGOUIyMDAxOENG
QjJERjAwQzY0QkVGIC8qIFZUVFJlZ2lvbkxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVlRUUmVnaW9uTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
QUY5QjIwMTE4Q0ZCMkRGMDBDNjRCRUYgLyogVlRUUmVnaW9uTGlzdC5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gVlRUUmVnaW9uTGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdBRjlCMjA4MThDRkI1RjIwMEM2NEJFRiAvKiBKU1ZUVFJlZ2lvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1ZUVFJlZ2lvbi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTdBRjlCMjA5MThDRkI1RjIwMEM2NEJFRiAvKiBKU1ZUVFJlZ2lv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1ZUVFJlZ2lvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QUY5QjIwQTE4Q0ZCNUYzMDBDNjRCRUYgLyogSlNW
VFRSZWdpb25MaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
VlRUUmVnaW9uTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBRjlCMjBC
MThDRkI1RjMwMEM2NEJFRiAvKiBKU1ZUVFJlZ2lvbkxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNWVFRSZWdpb25MaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdDMkJERDNCMTdDN0Y5OEIwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVjdFRhc2su
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01HbG9iYWxPYmpl
Y3RUYXNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MyQkREM0MxN0M3Rjk4
QjAwMzhGRjE1IC8qIEpTRE9NR2xvYmFsT2JqZWN0VGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0RPTUdsb2JhbE9iamVjdFRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0M1MjJENDkxNUI0NzdFODAwOUI3Qzk1IC8qIEluc3BlY3Rvck92ZXJsYXku
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yT3Zlcmxh
eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODQwOSwxMCArMTg0MDksMTAg
QEAKIAkJCQkwNzA3NTZEQTE0MjM5QjRFMDA0MTQxNjEgLyogSlNUZXh0VHJhY2tDdWVMaXN0Lmgg
Ki8sCiAJCQkJMDdCNUEyRDkxNDY0MzIwQTAwQTgxRUNFIC8qIEpTVGV4dFRyYWNrTGlzdC5jcHAg
Ki8sCiAJCQkJMDdCNUEyREExNDY0MzIwQTAwQTgxRUNFIC8qIEpTVGV4dFRyYWNrTGlzdC5oICov
LAotCQkJCTdBRjlCMjA4MThDRkI1RjIwMEM2NEJFRiAvKiBKU1RleHRUcmFja1JlZ2lvbi5jcHAg
Ki8sCi0JCQkJN0FGOUIyMDkxOENGQjVGMjAwQzY0QkVGIC8qIEpTVGV4dFRyYWNrUmVnaW9uLmgg
Ki8sCi0JCQkJN0FGOUIyMEExOENGQjVGMzAwQzY0QkVGIC8qIEpTVGV4dFRyYWNrUmVnaW9uTGlz
dC5jcHAgKi8sCi0JCQkJN0FGOUIyMEIxOENGQjVGMzAwQzY0QkVGIC8qIEpTVGV4dFRyYWNrUmVn
aW9uTGlzdC5oICovLAorCQkJCTdBRjlCMjA4MThDRkI1RjIwMEM2NEJFRiAvKiBKU1ZUVFJlZ2lv
bi5jcHAgKi8sCisJCQkJN0FGOUIyMDkxOENGQjVGMjAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uLmgg
Ki8sCisJCQkJN0FGOUIyMEExOENGQjVGMzAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5jcHAg
Ki8sCisJCQkJN0FGOUIyMEIxOENGQjVGMzAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5oICov
LAogCQkJCUU0NDYxNDEyMENENjgyNjkwMEZBREE3NSAvKiBKU1RpbWVSYW5nZXMuY3BwICovLAog
CQkJCUU0NDYxNDEzMENENjgyNjkwMEZBREE3NSAvKiBKU1RpbWVSYW5nZXMuaCAqLywKIAkJCQkw
Nzg0NjM0MDE0NUIxNTFBMDBBNThERjEgLyogSlNUcmFja0V2ZW50LmNwcCAqLywKQEAgLTE5Mjg1
LDEyICsxOTI4NSwxMiBAQAogCQkJCTA3Njk3MDg0MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJh
Y2tMaXN0LmNwcCAqLywKIAkJCQkwNzY5NzA4NTE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNr
TGlzdC5oICovLAogCQkJCTA3QjVBMzA2MTQ2ODUzNzEwMEE4MUVDRSAvKiBUZXh0VHJhY2tMaXN0
LmlkbCAqLywKLQkJCQk3QUY5QjFGQzE4Q0ZCMkRGMDBDNjRCRUYgLyogVGV4dFRyYWNrUmVnaW9u
LmNwcCAqLywKLQkJCQk3QUY5QjFGRDE4Q0ZCMkRGMDBDNjRCRUYgLyogVGV4dFRyYWNrUmVnaW9u
LmggKi8sCi0JCQkJN0FGOUIxRkUxOENGQjJERjAwQzY0QkVGIC8qIFRleHRUcmFja1JlZ2lvbi5p
ZGwgKi8sCi0JCQkJN0FGOUIxRkYxOENGQjJERjAwQzY0QkVGIC8qIFRleHRUcmFja1JlZ2lvbkxp
c3QuY3BwICovLAotCQkJCTdBRjlCMjAwMThDRkIyREYwMEM2NEJFRiAvKiBUZXh0VHJhY2tSZWdp
b25MaXN0LmggKi8sCi0JCQkJN0FGOUIyMDExOENGQjJERjAwQzY0QkVGIC8qIFRleHRUcmFja1Jl
Z2lvbkxpc3QuaWRsICovLAorCQkJCTdBRjlCMUZDMThDRkIyREYwMEM2NEJFRiAvKiBWVFRSZWdp
b24uY3BwICovLAorCQkJCTdBRjlCMUZEMThDRkIyREYwMEM2NEJFRiAvKiBWVFRSZWdpb24uaCAq
LywKKwkJCQk3QUY5QjFGRTE4Q0ZCMkRGMDBDNjRCRUYgLyogVlRUUmVnaW9uLmlkbCAqLywKKwkJ
CQk3QUY5QjFGRjE4Q0ZCMkRGMDBDNjRCRUYgLyogVlRUUmVnaW9uTGlzdC5jcHAgKi8sCisJCQkJ
N0FGOUIyMDAxOENGQjJERjAwQzY0QkVGIC8qIFZUVFJlZ2lvbkxpc3QuaCAqLywKKwkJCQk3QUY5
QjIwMTE4Q0ZCMkRGMDBDNjRCRUYgLyogVlRUUmVnaW9uTGlzdC5pZGwgKi8sCiAJCQkJMDcwMzM0
RDgxNDVBMDA2RjAwOEQ4RDQ1IC8qIFRyYWNrQmFzZS5jcHAgKi8sCiAJCQkJMDcwMzM0RDYxNDU5
RkZENTAwOEQ4RDQ1IC8qIFRyYWNrQmFzZS5oICovLAogCQkJCTA3MDMzNEQwMTQ1OUZGQUMwMDhE
OEQ0NSAvKiBUcmFja0V2ZW50LmNwcCAqLywKQEAgLTIzMTUxLDcgKzIzMTUxLDcgQEAKIAkJCQlC
QzY0QjREQzBDQjQyOThBMDA1RjJCNjIgLyogQ1NTRm9udFNlbGVjdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBODBFNkNFRDBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTRm9udFZhbHVlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzAyQTYzQzBFMDlBOUNGMDA0QjZEMkIgLyogQ1NTRnVuY3Rpb25WYWx1
ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJN0FGOUIyMDMxOENGQjJERjAwQzY0QkVGIC8qIFRleHRU
cmFja1JlZ2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0FGOUIyMDMxOENGQjJERjAwQzY0QkVG
IC8qIFZUVFJlZ2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1M0M2OTIwREE1OTExNDAwMjFF
QjVEIC8qIENTU0dyYWRpZW50VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1MEY1M0RDMDlE
MTVEREEwMEM5QjBDOCAvKiBDU1NHcmFtbWFyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDNFMjUy
NDE4MDQ2QkNEMDBFMjdGNTYgLyogQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZS5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yMzU4MSw3ICsyMzU4MSw3IEBACiAJCQkJODVFNzExRDcwQUM1RDUzNTAwNTMy
NzBGIC8qIERPTVN0eWxlU2hlZXRMaXN0SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
MUEzN0JEMDk3QzcxNUYwMDE5RjNEOCAvKiBET01TdHlsZXNoZWV0cy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODVBQ0E5OUMwQTlCNTc1OTAwNjcxRTkwIC8qIERPTVRleHQuaCBpbiBIZWFkZXJzICov
LAotCQkJCTdBRjlCMjA2MThDRkIyREYwMEM2NEJFRiAvKiBUZXh0VHJhY2tSZWdpb25MaXN0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk3QUY5QjIwNjE4Q0ZCMkRGMDBDNjRCRUYgLyogVlRUUmVnaW9u
TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRERFNjNFRDUwQjdENDVBODAwMjI2OTk4IC8qIERP
TVRleHRFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVFNzExRDkwQUM1RDUzNTAwNTMyNzBG
IC8qIERPTVRleHRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTg4NjA0QjQwRjJFNjU0
QTAwMEI2NDQzIC8qIERPTVRpbWVyLmggaW4gSGVhZGVycyAqLywKQEAgLTI0NjQ4LDggKzI0NjQ4
LDggQEAKIAkJCQkwNzA3NTZERTE0MjM5QjRFMDA0MTQxNjEgLyogSlNUZXh0VHJhY2tDdWUuaCBp
biBIZWFkZXJzICovLAogCQkJCTA3MDc1NkUwMTQyMzlCNEUwMDQxNDE2MSAvKiBKU1RleHRUcmFj
a0N1ZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3QjVBMkRDMTQ2NDMyMEEwMEE4MUVDRSAv
KiBKU1RleHRUcmFja0xpc3QuaCBpbiBIZWFkZXJzICovLAotCQkJCTdBRjlCMjBEMThDRkI1RjQw
MEM2NEJFRiAvKiBKU1RleHRUcmFja1JlZ2lvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJN0FGOUIy
MEYxOENGQjVGNDAwQzY0QkVGIC8qIEpTVGV4dFRyYWNrUmVnaW9uTGlzdC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJN0FGOUIyMEQxOENGQjVGNDAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk3QUY5QjIwRjE4Q0ZCNUY0MDBDNjRCRUYgLyogSlNWVFRSZWdpb25MaXN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDQ2MTQxQjBDRDY4MjY5MDBGQURBNzUgLyogSlNUaW1l
UmFuZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkRBN0MxNzE4ODMyMkVCMDBDOTU0QjUgLyog
SlNUb3VjaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEQTdDMTkxODgzMjJFQjAwQzk1NEI1IC8q
IEpTVG91Y2hFdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzA1OCw3ICsyNzA1OCw3IEBACiAJ
CQkJMEY1NERDRDYxODgwRjg2NzAwM0VFREJCIC8qIERPTVRvdWNoLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEY1NERDRDgxODgwRjg2NzAwM0VFREJCIC8qIERPTVRvdWNoRXZlbnQubW0gaW4gU291
cmNlcyAqLywKIAkJCQkwRjU0RENEQzE4ODBGODY3MDAzRUVEQkIgLyogRE9NVG91Y2hMaXN0Lm1t
IGluIFNvdXJjZXMgKi8sCi0JCQkJN0FGOUIyMDUxOENGQjJERjAwQzY0QkVGIC8qIFRleHRUcmFj
a1JlZ2lvbkxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0FGOUIyMDUxOENGQjJERjAwQzY0
QkVGIC8qIFZUVFJlZ2lvbkxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE0NTM0OTgxNkE5
QkI2QTAwMEY2RkQyIC8qIERPTVRyYW5zaXRpb25FdmVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTg1NTI2Q0QzMEFCMEI3REEwMDAzMDJFQSAvKiBET01UcmVlV2Fsa2VyLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODVDN0Y0OTIwQUFGNzlEQzAwNDAxNEREIC8qIERPTVVJRXZlbnQubW0gaW4gU291
cmNlcyAqLywKQEAgLTI4MTE2LDggKzI4MTE2LDggQEAKIAkJCQkwN0UxMTZCMTE0ODlDOUExMDBF
QzVBQ0UgLyogSlNUZXh0VHJhY2tDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDdCNUEy
REIxNDY0MzIwQTAwQTgxRUNFIC8qIEpTVGV4dFRyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwN0I1QTMwRDE0Njg3RDcxMDBBODFFQ0UgLyogSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCTdBRjlCMjBDMThDRkI1RjQwMEM2NEJFRiAvKiBKU1RleHRU
cmFja1JlZ2lvbi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk3QUY5QjIwRTE4Q0ZCNUY0MDBDNjRC
RUYgLyogSlNUZXh0VHJhY2tSZWdpb25MaXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdBRjlC
MjBDMThDRkI1RjQwMEM2NEJFRiAvKiBKU1ZUVFJlZ2lvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk3QUY5QjIwRTE4Q0ZCNUY0MDBDNjRCRUYgLyogSlNWVFRSZWdpb25MaXN0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUU0NDYxNDFBMENENjgyNjkwMEZBREE3NSAvKiBKU1RpbWVSYW5nZXMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEQTdDMTYxODgzMjJFQjAwQzk1NEI1IC8qIEpTVG91Y2gu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEQTdDMTgxODgzMjJFQjAwQzk1NEI1IC8qIEpTVG91
Y2hFdmVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5MzQ4LDcgKzI5MzQ4LDcgQEAKIAkJCQlB
MTM2QTAwQzExMzREQkQyMDBDQzhENTAgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50VGhy
b3R0bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNERkQ0OEYwRTMwNTI5MDAwOUQxMEFEIC8q
IFhNTEh0dHBSZXF1ZXN0VXBsb2FkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MzNDODBDMEEy
Q0YyNTYwMEQ1NzY2NCAvKiBYTUxOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk3QUY5QjIw
MjE4Q0ZCMkRGMDBDNjRCRUYgLyogVGV4dFRyYWNrUmVnaW9uLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTdBRjlCMjAyMThDRkIyREYwMEM2NEJFRiAvKiBWVFRSZWdpb24uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRTE1QTM2RDkxMTA0NTcyNzAwQjdCNjM5IC8qIFhNTE5TTmFtZXMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUFDRTUzRUEwQThEMThFNzAwMjI5NDdEIC8qIFhNTFNlcmlhbGl6ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTkwNUFEQkYxMzAyRjNDRTAwRjExNkRGIC8qIFhNTFRy
ZWVWaWV3ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCShyZXZpc2lvbiAxNjYwMDkp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdF
QlZUVF9SRUdJT05TKQotI2luY2x1ZGUgIlRleHRUcmFja1JlZ2lvbkxpc3QuaCIKKyNpbmNsdWRl
ICJWVFRSZWdpb25MaXN0LmgiCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTMw
MCw3ICsxMzAwLDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZQog
ICAgICAgICBpZiAoY3VlLT50cmFjaygpLT5tb2RlKCkgPT0gVGV4dFRyYWNrOjpkaXNhYmxlZEtl
eXdvcmQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIFRleHRUcmFja1JlZ2lv
biogcmVnaW9uID0gY3VlLT50cmFjaygpLT5yZWdpb25zKCktPmdldFJlZ2lvbkJ5SWQoY3VlLT5y
ZWdpb25JZCgpKTsKKyAgICAgICAgVlRUUmVnaW9uKiByZWdpb24gPSBjdWUtPnRyYWNrKCktPnJl
Z2lvbnMoKS0+Z2V0UmVnaW9uQnlJZChjdWUtPnJlZ2lvbklkKCkpOwogICAgICAgICBpZiAoIXJl
Z2lvbikgewogICAgICAgICAgICAgLy8gSWYgY3VlIGhhcyBhbiBlbXB0eSB0ZXh0IHRyYWNrIGN1
ZSByZWdpb24gaWRlbnRpZmllciBvciB0aGVyZSBpcyBubwogICAgICAgICAgICAgLy8gV2ViVlRU
IHJlZ2lvbiB3aG9zZSByZWdpb24gaWRlbnRpZmllciBpcyBpZGVudGljYWwgdG8gY3VlJ3MgdGV4
dApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFj
ay5jcHAJKHJldmlzaW9uIDE2NjAwOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9h
ZGFibGVUZXh0VHJhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAjaW5j
bHVkZSAiVGV4dFRyYWNrQ3VlTGlzdC5oIgogCiAjaWYgRU5BQkxFKFdFQlZUVF9SRUdJT05TKQot
I2luY2x1ZGUgIlRleHRUcmFja1JlZ2lvbkxpc3QuaCIKKyNpbmNsdWRlICJWVFRSZWdpb25MaXN0
LmgiCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTM3LDcgKzEzNyw3IEBAIHZv
aWQgTG9hZGFibGVUZXh0VHJhY2s6Om5ld1JlZ2lvbnNBdmFpbGEKIHsKICAgICBBU1NFUlRfVU5V
U0VEKGxvYWRlciwgbV9sb2FkZXIuZ2V0KCkgPT0gbG9hZGVyKTsKIAotICAgIFZlY3RvcjxSZWZQ
dHI8VGV4dFRyYWNrUmVnaW9uPj4gbmV3UmVnaW9uczsKKyAgICBWZWN0b3I8UmVmUHRyPFZUVFJl
Z2lvbj4+IG5ld1JlZ2lvbnM7CiAgICAgbV9sb2FkZXItPmdldE5ld1JlZ2lvbnMobmV3UmVnaW9u
cyk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5ld1JlZ2lvbnMuc2l6ZSgpOyArK2kp
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAJKHJldmlzaW9u
IDE2NjAwOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDAsNyArNDAsOCBAQAogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlci5oIgog
I2luY2x1ZGUgIlRleHRUcmFja0N1ZUxpc3QuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tMaXN0Lmgi
Ci0jaW5jbHVkZSAiVGV4dFRyYWNrUmVnaW9uTGlzdC5oIgorI2luY2x1ZGUgIlZUVFJlZ2lvbi5o
IgorI2luY2x1ZGUgIlZUVFJlZ2lvbkxpc3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC0zNDMsMzUgKzM0NCwzNSBAQCB2b2lkIFRleHRUcmFjazo6cmVtb3ZlQ3VlKFRleHRUcmFja0N1
ZSogCiB9CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYmIEVOQUJMRShXRUJWVFRfUkVHSU9O
UykKLVRleHRUcmFja1JlZ2lvbkxpc3QqIFRleHRUcmFjazo6ZW5zdXJlVGV4dFRyYWNrUmVnaW9u
TGlzdCgpCitWVFRSZWdpb25MaXN0KiBUZXh0VHJhY2s6OmVuc3VyZVZUVFJlZ2lvbkxpc3QoKQog
ewogICAgIGlmICghbV9yZWdpb25zKQotICAgICAgICBtX3JlZ2lvbnMgPSBUZXh0VHJhY2tSZWdp
b25MaXN0OjpjcmVhdGUoKTsKKyAgICAgICAgbV9yZWdpb25zID0gVlRUUmVnaW9uTGlzdDo6Y3Jl
YXRlKCk7CiAKICAgICByZXR1cm4gbV9yZWdpb25zLmdldCgpOwogfQogCi1UZXh0VHJhY2tSZWdp
b25MaXN0KiBUZXh0VHJhY2s6OnJlZ2lvbnMoKQorVlRUUmVnaW9uTGlzdCogVGV4dFRyYWNrOjpy
ZWdpb25zKCkKIHsKICAgICAvLyBJZiB0aGUgdGV4dCB0cmFjayBtb2RlIG9mIHRoZSB0ZXh0IHRy
YWNrIHRoYXQgdGhlIFRleHRUcmFjayBvYmplY3QKICAgICAvLyByZXByZXNlbnRzIGlzIG5vdCB0
aGUgdGV4dCB0cmFjayBkaXNhYmxlZCBtb2RlLCB0aGVuIHRoZSByZWdpb25zCi0gICAgLy8gYXR0
cmlidXRlIG11c3QgcmV0dXJuIGEgbGl2ZSBUZXh0VHJhY2tSZWdpb25MaXN0IG9iamVjdCB0aGF0
IHJlcHJlc2VudHMKKyAgICAvLyBhdHRyaWJ1dGUgbXVzdCByZXR1cm4gYSBsaXZlIFZUVFJlZ2lv
bkxpc3Qgb2JqZWN0IHRoYXQgcmVwcmVzZW50cwogICAgIC8vIHRoZSB0ZXh0IHRyYWNrIGxpc3Qg
b2YgcmVnaW9ucyBvZiB0aGUgdGV4dCB0cmFjay4gT3RoZXJ3aXNlLCBpdCBtdXN0CiAgICAgLy8g
cmV0dXJuIG51bGwuIFdoZW4gYW4gb2JqZWN0IGlzIHJldHVybmVkLCB0aGUgc2FtZSBvYmplY3Qg
bXVzdCBiZSByZXR1cm5lZAogICAgIC8vIGVhY2ggdGltZS4KICAgICBpZiAobV9tb2RlICE9IGRp
c2FibGVkS2V5d29yZCgpKQotICAgICAgICByZXR1cm4gZW5zdXJlVGV4dFRyYWNrUmVnaW9uTGlz
dCgpOworICAgICAgICByZXR1cm4gZW5zdXJlVlRUUmVnaW9uTGlzdCgpOwogCiAgICAgcmV0dXJu
IDA7CiB9CiAKLXZvaWQgVGV4dFRyYWNrOjphZGRSZWdpb24oUGFzc1JlZlB0cjxUZXh0VHJhY2tS
ZWdpb24+IHBycFJlZ2lvbikKK3ZvaWQgVGV4dFRyYWNrOjphZGRSZWdpb24oUGFzc1JlZlB0cjxW
VFRSZWdpb24+IHBycFJlZ2lvbikKIHsKICAgICBpZiAoIXBycFJlZ2lvbikKICAgICAgICAgcmV0
dXJuOwogCi0gICAgUmVmUHRyPFRleHRUcmFja1JlZ2lvbj4gcmVnaW9uID0gcHJwUmVnaW9uOwot
ICAgIFRleHRUcmFja1JlZ2lvbkxpc3QqIHJlZ2lvbkxpc3QgPSBlbnN1cmVUZXh0VHJhY2tSZWdp
b25MaXN0KCk7CisgICAgUmVmUHRyPFZUVFJlZ2lvbj4gcmVnaW9uID0gcHJwUmVnaW9uOworICAg
IFZUVFJlZ2lvbkxpc3QqIHJlZ2lvbkxpc3QgPSBlbnN1cmVWVFRSZWdpb25MaXN0KCk7CiAKICAg
ICAvLyAxLiBJZiB0aGUgZ2l2ZW4gcmVnaW9uIGlzIGluIGEgdGV4dCB0cmFjayBsaXN0IG9mIHJl
Z2lvbnMsIHRoZW4gcmVtb3ZlCiAgICAgLy8gcmVnaW9uIGZyb20gdGhhdCB0ZXh0IHRyYWNrIGxp
c3Qgb2YgcmVnaW9ucy4KQEAgLTM4Myw3ICszODQsNyBAQCB2b2lkIFRleHRUcmFjazo6YWRkUmVn
aW9uKFBhc3NSZWZQdHI8VGV4CiAgICAgLy8gYSByZWdpb24gd2l0aCB0aGUgc2FtZSBpZGVudGlm
aWVyIGFzIHJlZ2lvbiByZXBsYWNlIHRoZSB2YWx1ZXMgb2YgdGhhdAogICAgIC8vIHJlZ2lvbidz
IHdpZHRoLCBoZWlnaHQsIGFuY2hvciBwb2ludCwgdmlld3BvcnQgYW5jaG9yIHBvaW50IGFuZCBz
Y3JvbGwKICAgICAvLyBhdHRyaWJ1dGVzIHdpdGggdGhvc2Ugb2YgcmVnaW9uLgotICAgIFRleHRU
cmFja1JlZ2lvbiogZXhpc3RpbmdSZWdpb24gPSByZWdpb25MaXN0LT5nZXRSZWdpb25CeUlkKHJl
Z2lvbi0+aWQoKSk7CisgICAgVlRUUmVnaW9uKiBleGlzdGluZ1JlZ2lvbiA9IHJlZ2lvbkxpc3Qt
PmdldFJlZ2lvbkJ5SWQocmVnaW9uLT5pZCgpKTsKICAgICBpZiAoZXhpc3RpbmdSZWdpb24pIHsK
ICAgICAgICAgZXhpc3RpbmdSZWdpb24tPnVwZGF0ZVBhcmFtZXRlcnNGcm9tUmVnaW9uKHJlZ2lv
bi5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTM5NSw3ICszOTYsNyBAQCB2b2lkIFRleHRU
cmFjazo6YWRkUmVnaW9uKFBhc3NSZWZQdHI8VGV4CiAgICAgcmVnaW9uTGlzdC0+YWRkKHJlZ2lv
bik7CiB9CiAKLXZvaWQgVGV4dFRyYWNrOjpyZW1vdmVSZWdpb24oVGV4dFRyYWNrUmVnaW9uKiBy
ZWdpb24sIEV4Y2VwdGlvbkNvZGUgJmVjKQordm9pZCBUZXh0VHJhY2s6OnJlbW92ZVJlZ2lvbihW
VFRSZWdpb24qIHJlZ2lvbiwgRXhjZXB0aW9uQ29kZSAmZWMpCiB7CiAgICAgaWYgKCFyZWdpb24p
CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRy
YWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2su
aAkocmV2aXNpb24gMTY2MDA5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2suaAkod29ya2luZyBjb3B5KQpAQCAtNDYsOCArNDYsOCBAQCBjbGFzcyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OwogY2xhc3MgVGV4dFRyYWNrOwogY2xhc3MgVGV4dFRyYWNrQ3VlTGlzdDsKICNp
ZiBFTkFCTEUoV0VCVlRUX1JFR0lPTlMpCi1jbGFzcyBUZXh0VHJhY2tSZWdpb247Ci1jbGFzcyBU
ZXh0VHJhY2tSZWdpb25MaXN0OworY2xhc3MgVlRUUmVnaW9uOworY2xhc3MgVlRUUmVnaW9uTGlz
dDsKICNlbmRpZgogCiBjbGFzcyBUZXh0VHJhY2tDbGllbnQgewpAQCAtMTEzLDkgKzExMyw5IEBA
IHB1YmxpYzoKICAgICBib29sIGhhc0N1ZShWVFRDdWUqLCBWVFRDdWU6OkN1ZU1hdGNoUnVsZXMg
PSBWVFRDdWU6Ok1hdGNoQWxsRmllbGRzKTsKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYg
RU5BQkxFKFdFQlZUVF9SRUdJT05TKQotICAgIFRleHRUcmFja1JlZ2lvbkxpc3QqIHJlZ2lvbnMo
KTsKLSAgICB2b2lkIGFkZFJlZ2lvbihQYXNzUmVmUHRyPFRleHRUcmFja1JlZ2lvbj4pOwotICAg
IHZvaWQgcmVtb3ZlUmVnaW9uKFRleHRUcmFja1JlZ2lvbiosIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICBWVFRSZWdpb25MaXN0KiByZWdpb25zKCk7CisgICAgdm9pZCBhZGRSZWdpb24oUGFzc1JlZlB0
cjxWVFRSZWdpb24+KTsKKyAgICB2b2lkIHJlbW92ZVJlZ2lvbihWVFRSZWdpb24qLCBFeGNlcHRp
b25Db2RlJik7CiAjZW5kaWYKIAogICAgIHZvaWQgY3VlV2lsbENoYW5nZShUZXh0VHJhY2tDdWUq
KTsKQEAgLTE3MSw4ICsxNzEsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2
ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgZmluYWwgeyBkZXJlZigpOyB9CiAKICNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spICYmIEVOQUJMRShXRUJWVFRfUkVHSU9OUykKLSAgICBUZXh0VHJhY2tSZWdpb25M
aXN0KiBlbnN1cmVUZXh0VHJhY2tSZWdpb25MaXN0KCk7Ci0gICAgUmVmUHRyPFRleHRUcmFja1Jl
Z2lvbkxpc3Q+IG1fcmVnaW9uczsKKyAgICBWVFRSZWdpb25MaXN0KiBlbnN1cmVWVFRSZWdpb25M
aXN0KCk7CisgICAgUmVmUHRyPFZUVFJlZ2lvbkxpc3Q+IG1fcmVnaW9uczsKICNlbmRpZgogCiAj
aWYgVVNFKFBMQVRGT1JNX1RFWFRfVFJBQ0tfTUVOVSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVGV4dFRyYWNrLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1RleHRUcmFjay5pZGwJKHJldmlzaW9uIDE2NjAwOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDUsOSArNDUsOSBA
QAogICAgIFtSYWlzZXNFeGNlcHRpb25dIHZvaWQgcmVtb3ZlQ3VlKFRleHRUcmFja0N1ZSBjdWUp
OwogCiAjaWYgZGVmaW5lZChFTkFCTEVfV0VCVlRUX1JFR0lPTlMpICYmIEVOQUJMRV9XRUJWVFRf
UkVHSU9OUwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBUZXh0VHJhY2tSZWdpb25MaXN0IHJlZ2lv
bnM7Ci0gICAgdm9pZCBhZGRSZWdpb24oVGV4dFRyYWNrUmVnaW9uIHJlZ2lvbik7Ci0gICAgW1Jh
aXNlc0V4Y2VwdGlvbl0gdm9pZCByZW1vdmVSZWdpb24oVGV4dFRyYWNrUmVnaW9uIHJlZ2lvbik7
CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFZUVFJlZ2lvbkxpc3QgcmVnaW9uczsKKyAgICB2b2lk
IGFkZFJlZ2lvbihWVFRSZWdpb24gcmVnaW9uKTsKKyAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lk
IHJlbW92ZVJlZ2lvbihWVFRSZWdpb24gcmVnaW9uKTsKICNlbmRpZgogCiAgICAgLy8gRXZlbnRU
YXJnZXQgaW50ZXJmYWNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFj
a0N1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2tDdWUuY3BwCShyZXZpc2lvbiAxNjYwMDkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RleHRUcmFja0N1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAKICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKICNpZiBFTkFCTEUoV0VCVlRUX1JFR0lP
TlMpCi0jaW5jbHVkZSAiVGV4dFRyYWNrUmVnaW9uTGlzdC5oIgorI2luY2x1ZGUgIlZUVFJlZ2lv
bkxpc3QuaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFja1JlZ2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tSZWdpb24uY3BwCShyZXZpc2lvbiAxNjYwMDkp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja1JlZ2lvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNDgyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29v
Z2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFC
TEUoVklERU9fVFJBQ0spICYmIEVOQUJMRShXRUJWVFRfUkVHSU9OUykKLQotI2luY2x1ZGUgIlRl
eHRUcmFja1JlZ2lvbi5oIgotCi0jaW5jbHVkZSAiQ2xpZW50UmVjdC5oIgotI2luY2x1ZGUgIkRP
TVRva2VuTGlzdC5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgotI2lu
Y2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUg
IlJlbmRlckVsZW1lbnQuaCIKLSNpbmNsdWRlICJWVFRDdWUuaCIKLSNpbmNsdWRlICJXZWJWVFRQ
YXJzZXIuaCIKLSNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLS8vIFRoZSBmb2xsb3dpbmcgdmFsdWVzIGRlZmF1bHQgdmFsdWVzIGFyZSBkZWZpbmVk
IHdpdGhpbiB0aGUgV2ViVlRUIFJlZ2lvbnMgU3BlYy4KLS8vIGh0dHBzOi8vZHZjcy53My5vcmcv
aGcvdGV4dC10cmFja3MvcmF3LWZpbGUvZGVmYXVsdC82MDh0b1ZUVC9yZWdpb24uaHRtbAotCi0v
LyBUaGUgcmVnaW9uIG9jY3VwaWVzIGJ5IGRlZmF1bHQgMTAwJSBvZiB0aGUgd2lkdGggb2YgdGhl
IHZpZGVvIHZpZXdwb3J0Lgotc3RhdGljIGNvbnN0IGZsb2F0IGRlZmF1bHRXaWR0aCA9IDEwMDsK
LQotLy8gVGhlIHJlZ2lvbiBoYXMsIGJ5IGRlZmF1bHQsIDMgbGluZXMgb2YgdGV4dC4KLXN0YXRp
YyBjb25zdCBsb25nIGRlZmF1bHRIZWlnaHRJbkxpbmVzID0gMzsKLQotLy8gVGhlIHJlZ2lvbiBh
bmQgdmlld3BvcnQgYXJlIGFuY2hvcmVkIGluIHRoZSBib3R0b20gbGVmdCBjb3JuZXIuCi1zdGF0
aWMgY29uc3QgZmxvYXQgZGVmYXVsdEFuY2hvclBvaW50WCA9IDA7Ci1zdGF0aWMgY29uc3QgZmxv
YXQgZGVmYXVsdEFuY2hvclBvaW50WSA9IDEwMDsKLQotLy8gVGhlIHJlZ2lvbiBkb2Vzbid0IGhh
dmUgc2Nyb2xsaW5nIHRleHQsIGJ5IGRlZmF1bHQuCi1zdGF0aWMgY29uc3QgYm9vbCBkZWZhdWx0
U2Nyb2xsID0gZmFsc2U7Ci0KLS8vIERlZmF1bHQgcmVnaW9uIGxpbmUtaGVpZ2h0ICh2aCB1bml0
cykKLXN0YXRpYyBjb25zdCBmbG9hdCBsaW5lSGVpZ2h0ID0gNS4zMzsKLQotLy8gRGVmYXVsdCBz
Y3JvbGxpbmcgYW5pbWF0aW9uIHRpbWUgcGVyaW9kIChzKS4KLXN0YXRpYyBjb25zdCBmbG9hdCBz
Y3JvbGxUaW1lID0gMC40MzM7Ci0KLVRleHRUcmFja1JlZ2lvbjo6VGV4dFRyYWNrUmVnaW9uKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCi0gICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25P
YnNlcnZlcigmY29udGV4dCkKLSAgICAsIG1faWQoZW1wdHlTdHJpbmcoKSkKLSAgICAsIG1fd2lk
dGgoZGVmYXVsdFdpZHRoKQotICAgICwgbV9oZWlnaHRJbkxpbmVzKGRlZmF1bHRIZWlnaHRJbkxp
bmVzKQotICAgICwgbV9yZWdpb25BbmNob3IoRmxvYXRQb2ludChkZWZhdWx0QW5jaG9yUG9pbnRY
LCBkZWZhdWx0QW5jaG9yUG9pbnRZKSkKLSAgICAsIG1fdmlld3BvcnRBbmNob3IoRmxvYXRQb2lu
dChkZWZhdWx0QW5jaG9yUG9pbnRYLCBkZWZhdWx0QW5jaG9yUG9pbnRZKSkKLSAgICAsIG1fc2Ny
b2xsKGRlZmF1bHRTY3JvbGwpCi0gICAgLCBtX2N1ZUNvbnRhaW5lcihudWxscHRyKQotICAgICwg
bV9yZWdpb25EaXNwbGF5VHJlZShudWxscHRyKQotICAgICwgbV90cmFjayhudWxscHRyKQotICAg
ICwgbV9jdXJyZW50VG9wKDApCi0gICAgLCBtX3Njcm9sbFRpbWVyKHRoaXMsICZUZXh0VHJhY2tS
ZWdpb246OnNjcm9sbFRpbWVyRmlyZWQpCi17Ci19Ci0KLVRleHRUcmFja1JlZ2lvbjo6flRleHRU
cmFja1JlZ2lvbigpCi17Ci19Ci0KLXZvaWQgVGV4dFRyYWNrUmVnaW9uOjpzZXRUcmFjayhUZXh0
VHJhY2sqIHRyYWNrKQotewotICAgIG1fdHJhY2sgPSB0cmFjazsKLX0KLQotdm9pZCBUZXh0VHJh
Y2tSZWdpb246OnNldElkKGNvbnN0IFN0cmluZyYgaWQpCi17Ci0gICAgbV9pZCA9IGlkOwotfQot
Ci12b2lkIFRleHRUcmFja1JlZ2lvbjo6c2V0V2lkdGgoZG91YmxlIHZhbHVlLCBFeGNlcHRpb25D
b2RlJiBlYykKLXsKLSAgICBpZiAoc3RkOjppc2luZih2YWx1ZSkgfHwgc3RkOjppc25hbih2YWx1
ZSkpIHsKLSAgICAgICAgZWMgPSBUeXBlRXJyb3I7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAodmFsdWUgPCAwIHx8IHZhbHVlID4gMTAwKSB7Ci0gICAgICAgIGVjID0gSU5ERVhf
U0laRV9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX3dpZHRoID0gdmFsdWU7
Ci19Ci0KLXZvaWQgVGV4dFRyYWNrUmVnaW9uOjpzZXRIZWlnaHQobG9uZyB2YWx1ZSwgRXhjZXB0
aW9uQ29kZSYgZWMpCi17Ci0gICAgaWYgKHZhbHVlIDwgMCkgewotICAgICAgICBlYyA9IElOREVY
X1NJWkVfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9oZWlnaHRJbkxpbmVz
ID0gdmFsdWU7Ci19Ci0KLXZvaWQgVGV4dFRyYWNrUmVnaW9uOjpzZXRSZWdpb25BbmNob3JYKGRv
dWJsZSB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgaWYgKHN0ZDo6aXNpbmYodmFs
dWUpIHx8IHN0ZDo6aXNuYW4odmFsdWUpKSB7Ci0gICAgICAgIGVjID0gVHlwZUVycm9yOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKHZhbHVlIDwgMCB8fCB2YWx1ZSA+IDEwMCkg
ewotICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgbV9yZWdpb25BbmNob3Iuc2V0WCh2YWx1ZSk7Ci19Ci0KLXZvaWQgVGV4dFRyYWNrUmVn
aW9uOjpzZXRSZWdpb25BbmNob3JZKGRvdWJsZSB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCi17
Ci0gICAgaWYgKHN0ZDo6aXNpbmYodmFsdWUpIHx8IHN0ZDo6aXNuYW4odmFsdWUpKSB7Ci0gICAg
ICAgIGVjID0gVHlwZUVycm9yOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKHZh
bHVlIDwgMCB8fCB2YWx1ZSA+IDEwMCkgewotICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9yZWdpb25BbmNob3Iuc2V0WSh2YWx1ZSk7
Ci19Ci0KLXZvaWQgVGV4dFRyYWNrUmVnaW9uOjpzZXRWaWV3cG9ydEFuY2hvclgoZG91YmxlIHZh
bHVlLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBpZiAoc3RkOjppc2luZih2YWx1ZSkgfHwg
c3RkOjppc25hbih2YWx1ZSkpIHsKLSAgICAgICAgZWMgPSBUeXBlRXJyb3I7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAodmFsdWUgPCAwIHx8IHZhbHVlID4gMTAwKSB7Ci0gICAg
ICAgIGVjID0gSU5ERVhfU0laRV9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBt
X3ZpZXdwb3J0QW5jaG9yLnNldFgodmFsdWUpOwotfQotCi12b2lkIFRleHRUcmFja1JlZ2lvbjo6
c2V0Vmlld3BvcnRBbmNob3JZKGRvdWJsZSB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0g
ICAgaWYgKHN0ZDo6aXNpbmYodmFsdWUpIHx8IHN0ZDo6aXNuYW4odmFsdWUpKSB7Ci0gICAgICAg
IGVjID0gVHlwZUVycm9yOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKHZhbHVl
IDwgMCB8fCB2YWx1ZSA+IDEwMCkgewotICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV92aWV3cG9ydEFuY2hvci5zZXRZKHZhbHVlKTsK
LX0KLQotY29uc3QgQXRvbWljU3RyaW5nIFRleHRUcmFja1JlZ2lvbjo6c2Nyb2xsKCkgY29uc3QK
LXsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5n
LCB1cFNjcm9sbFZhbHVlS2V5d29yZCwgKCJ1cCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpKTsKLQotICAgIGlmIChtX3Njcm9sbCkKLSAgICAgICAgcmV0dXJuIHVwU2Nyb2xs
VmFsdWVLZXl3b3JkOwotCi0gICAgcmV0dXJuICIiOwotfQotCi12b2lkIFRleHRUcmFja1JlZ2lv
bjo6c2V0U2Nyb2xsKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVj
KQotewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJp
bmcsIHVwU2Nyb2xsVmFsdWVLZXl3b3JkLCAoInVwIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOwotCi0gICAgaWYgKHZhbHVlICE9IGVtcHR5U3RyaW5nKCkgJiYgdmFsdWUg
IT0gdXBTY3JvbGxWYWx1ZUtleXdvcmQpIHsKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9zY3JvbGwgPSB2YWx1ZSA9PSB1cFNjcm9sbFZh
bHVlS2V5d29yZDsKLX0KLQotdm9pZCBUZXh0VHJhY2tSZWdpb246OnVwZGF0ZVBhcmFtZXRlcnNG
cm9tUmVnaW9uKFRleHRUcmFja1JlZ2lvbiogcmVnaW9uKQotewotICAgIG1faGVpZ2h0SW5MaW5l
cyA9IHJlZ2lvbi0+aGVpZ2h0KCk7Ci0gICAgbV93aWR0aCA9IHJlZ2lvbi0+d2lkdGgoKTsKLQot
ICAgIG1fcmVnaW9uQW5jaG9yID0gRmxvYXRQb2ludChyZWdpb24tPnJlZ2lvbkFuY2hvclgoKSwg
cmVnaW9uLT5yZWdpb25BbmNob3JZKCkpOwotICAgIG1fdmlld3BvcnRBbmNob3IgPSBGbG9hdFBv
aW50KHJlZ2lvbi0+dmlld3BvcnRBbmNob3JYKCksIHJlZ2lvbi0+dmlld3BvcnRBbmNob3JZKCkp
OwotCi0gICAgc2V0U2Nyb2xsKHJlZ2lvbi0+c2Nyb2xsKCksIEFTU0VSVF9OT19FWENFUFRJT04p
OwotfQotCi12b2lkIFRleHRUcmFja1JlZ2lvbjo6c2V0UmVnaW9uU2V0dGluZ3MoY29uc3QgU3Ry
aW5nJiBpbnB1dCkKLXsKLSAgICBtX3NldHRpbmdzID0gaW5wdXQ7Ci0gICAgdW5zaWduZWQgcG9z
aXRpb24gPSAwOwotCi0gICAgd2hpbGUgKHBvc2l0aW9uIDwgaW5wdXQubGVuZ3RoKCkpIHsKLSAg
ICAgICAgd2hpbGUgKHBvc2l0aW9uIDwgaW5wdXQubGVuZ3RoKCkgJiYgV2ViVlRUUGFyc2VyOjpp
c1ZhbGlkU2V0dGluZ0RlbGltaXRlcihpbnB1dFtwb3NpdGlvbl0pKQotICAgICAgICAgICAgcG9z
aXRpb24rKzsKLQotICAgICAgICBpZiAocG9zaXRpb24gPj0gaW5wdXQubGVuZ3RoKCkpCi0gICAg
ICAgICAgICBicmVhazsKLQotICAgICAgICBwYXJzZVNldHRpbmcoaW5wdXQsICZwb3NpdGlvbik7
Ci0gICAgfQotfQotCi1UZXh0VHJhY2tSZWdpb246OlJlZ2lvblNldHRpbmcgVGV4dFRyYWNrUmVn
aW9uOjpnZXRTZXR0aW5nRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHNldHRpbmcpCi17Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgaWRLZXl3
b3JkLCAoImlkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGhlaWdodEtl
eXdvcmQsICgiaGVpZ2h0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHdp
ZHRoS2V5d29yZCwgKCJ3aWR0aCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
KTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5n
LCByZWdpb25BbmNob3JLZXl3b3JkLCAoInJlZ2lvbmFuY2hvciIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
Y29uc3QgQXRvbWljU3RyaW5nLCB2aWV3cG9ydEFuY2hvcktleXdvcmQsICgidmlld3BvcnRhbmNo
b3IiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgc2Nyb2xsS2V5d29yZCwg
KCJzY3JvbGwiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0KLSAgICBp
ZiAoc2V0dGluZyA9PSBpZEtleXdvcmQpCi0gICAgICAgIHJldHVybiBJZDsKLSAgICBpZiAoc2V0
dGluZyA9PSBoZWlnaHRLZXl3b3JkKQotICAgICAgICByZXR1cm4gSGVpZ2h0OwotICAgIGlmIChz
ZXR0aW5nID09IHdpZHRoS2V5d29yZCkKLSAgICAgICAgcmV0dXJuIFdpZHRoOwotICAgIGlmIChz
ZXR0aW5nID09IHZpZXdwb3J0QW5jaG9yS2V5d29yZCkKLSAgICAgICAgcmV0dXJuIFZpZXdwb3J0
QW5jaG9yOwotICAgIGlmIChzZXR0aW5nID09IHJlZ2lvbkFuY2hvcktleXdvcmQpCi0gICAgICAg
IHJldHVybiBSZWdpb25BbmNob3I7Ci0gICAgaWYgKHNldHRpbmcgPT0gc2Nyb2xsS2V5d29yZCkK
LSAgICAgICAgcmV0dXJuIFNjcm9sbDsKLQotICAgIHJldHVybiBOb25lOwotfQotCi12b2lkIFRl
eHRUcmFja1JlZ2lvbjo6cGFyc2VTZXR0aW5nVmFsdWUoUmVnaW9uU2V0dGluZyBzZXR0aW5nLCBj
b25zdCBTdHJpbmcmIHZhbHVlKQotewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBBdG9taWNTdHJpbmcsIHNjcm9sbFVwVmFsdWVLZXl3b3JkLCAoInVwIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotCi0gICAgc3dpdGNoIChzZXR0aW5nKSB7
Ci0gICAgY2FzZSBJZDoKLSAgICAgICAgaWYgKHZhbHVlLmZpbmQoIi0tPiIpID09IG5vdEZvdW5k
KQotICAgICAgICAgICAgbV9pZCA9IHZhbHVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFdp
ZHRoOiB7Ci0gICAgICAgIGZsb2F0IGZsb2F0V2lkdGg7Ci0gICAgICAgIGlmIChXZWJWVFRQYXJz
ZXI6OnBhcnNlRmxvYXRQZXJjZW50YWdlVmFsdWUodmFsdWUsIGZsb2F0V2lkdGgpKQotICAgICAg
ICAgICAgbV93aWR0aCA9IGZsb2F0V2lkdGg7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIExP
RyhNZWRpYSwgIlRleHRUcmFja1JlZ2lvbjo6cGFyc2VTZXR0aW5nVmFsdWUsIGludmFsaWQgV2lk
dGgiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgSGVpZ2h0OiB7Ci0gICAgICAg
IHVuc2lnbmVkIHBvc2l0aW9uID0gMDsKLSAgICAgICAgaW50IG51bWJlcjsKLSAgICAgICAgaWYg
KFdlYlZUVFBhcnNlcjo6Y29sbGVjdERpZ2l0c1RvSW50KHZhbHVlLCAmcG9zaXRpb24sIG51bWJl
cikgJiYgcG9zaXRpb24gPT0gdmFsdWUubGVuZ3RoKCkpCi0gICAgICAgICAgICBtX2hlaWdodElu
TGluZXMgPSBudW1iZXI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIExPRyhNZWRpYSwgIlRl
eHRUcmFja1JlZ2lvbjo6cGFyc2VTZXR0aW5nVmFsdWUsIGludmFsaWQgSGVpZ2h0Iik7Ci0gICAg
ICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIFJlZ2lvbkFuY2hvcjoKLSAgICAgICAgaWYgKCFX
ZWJWVFRQYXJzZXI6OnBhcnNlRmxvYXRQZXJjZW50YWdlVmFsdWVQYWlyKHZhbHVlLCAnLCcsIG1f
cmVnaW9uQW5jaG9yKSkKLSAgICAgICAgICAgIExPRyhNZWRpYSwgIlRleHRUcmFja1JlZ2lvbjo6
cGFyc2VTZXR0aW5nVmFsdWUsIGludmFsaWQgUmVnaW9uQW5jaG9yIik7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgVmlld3BvcnRBbmNob3I6Ci0gICAgICAgIGlmICghV2ViVlRUUGFyc2VyOjpw
YXJzZUZsb2F0UGVyY2VudGFnZVZhbHVlUGFpcih2YWx1ZSwgJywnLCBtX3ZpZXdwb3J0QW5jaG9y
KSkKLSAgICAgICAgICAgIExPRyhNZWRpYSwgIlRleHRUcmFja1JlZ2lvbjo6cGFyc2VTZXR0aW5n
VmFsdWUsIGludmFsaWQgVmlld3BvcnRBbmNob3IiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBTY3JvbGw6Ci0gICAgICAgIGlmICh2YWx1ZSA9PSBzY3JvbGxVcFZhbHVlS2V5d29yZCkKLSAg
ICAgICAgICAgIG1fc2Nyb2xsID0gdHJ1ZTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgTE9H
KE1lZGlhLCAiVGV4dFRyYWNrUmVnaW9uOjpwYXJzZVNldHRpbmdWYWx1ZSwgaW52YWxpZCBTY3Jv
bGwiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBOb25lOgotICAgICAgICBicmVhazsKLSAg
ICB9Ci19Ci0KLXZvaWQgVGV4dFRyYWNrUmVnaW9uOjpwYXJzZVNldHRpbmcoY29uc3QgU3RyaW5n
JiBpbnB1dCwgdW5zaWduZWQqIHBvc2l0aW9uKQotewotICAgIFN0cmluZyBzZXR0aW5nID0gV2Vi
VlRUUGFyc2VyOjpjb2xsZWN0V29yZChpbnB1dCwgcG9zaXRpb24pOwotCi0gICAgc2l6ZV90IGVx
dWFsT2Zmc2V0ID0gc2V0dGluZy5maW5kKCc9JywgMSk7Ci0gICAgaWYgKGVxdWFsT2Zmc2V0ID09
IG5vdEZvdW5kIHx8ICFlcXVhbE9mZnNldCB8fCBlcXVhbE9mZnNldCA9PSBzZXR0aW5nLmxlbmd0
aCgpIC0gMSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUmVnaW9uU2V0dGluZyBuYW1lID0gZ2V0
U2V0dGluZ0Zyb21TdHJpbmcoc2V0dGluZy5zdWJzdHJpbmcoMCwgZXF1YWxPZmZzZXQpKTsKLSAg
ICBTdHJpbmcgdmFsdWUgPSBzZXR0aW5nLnN1YnN0cmluZyhlcXVhbE9mZnNldCArIDEsIHNldHRp
bmcubGVuZ3RoKCkgLSAxKTsKLQotICAgIHBhcnNlU2V0dGluZ1ZhbHVlKG5hbWUsIHZhbHVlKTsK
LX0KLSAgICAKLWNvbnN0IEF0b21pY1N0cmluZyYgVGV4dFRyYWNrUmVnaW9uOjp0ZXh0VHJhY2tD
dWVDb250YWluZXJTY3JvbGxpbmdDbGFzcygpCi17Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgdHJhY2tSZWdpb25DdWVDb250YWluZXJTY3Jv
bGxpbmdDbGFzcywgKCJzY3JvbGxpbmciLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7Ci0KLSAgICByZXR1cm4gdHJhY2tSZWdpb25DdWVDb250YWluZXJTY3JvbGxpbmdDbGFz
czsKLX0KLQotY29uc3QgQXRvbWljU3RyaW5nJiBUZXh0VHJhY2tSZWdpb246OnRleHRUcmFja0N1
ZUNvbnRhaW5lclNoYWRvd1BzZXVkb0lkKCkKLXsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCB0cmFja1JlZ2lvbkN1ZUNvbnRhaW5lclBzZXVk
b0lkLAotICAgICAgICAoIi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1yZWdpb24tY29udGFpbmVy
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotCi0gICAgcmV0dXJuIHRy
YWNrUmVnaW9uQ3VlQ29udGFpbmVyUHNldWRvSWQ7Ci19Ci0KLWNvbnN0IEF0b21pY1N0cmluZyYg
VGV4dFRyYWNrUmVnaW9uOjp0ZXh0VHJhY2tSZWdpb25TaGFkb3dQc2V1ZG9JZCgpCi17Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgdHJhY2tS
ZWdpb25TaGFkb3dQc2V1ZG9JZCwKLSAgICAgICAgKCItd2Via2l0LW1lZGlhLXRleHQtdHJhY2st
cmVnaW9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotCi0gICAgcmV0
dXJuIHRyYWNrUmVnaW9uU2hhZG93UHNldWRvSWQ7Ci19Ci0KLXZvaWQgVGV4dFRyYWNrUmVnaW9u
OjphcHBlbmRUZXh0VHJhY2tDdWVCb3goUGFzc1JlZlB0cjxWVFRDdWVCb3g+IGRpc3BsYXlCb3gp
Ci17Ci0gICAgQVNTRVJUKG1fY3VlQ29udGFpbmVyKTsKLQotICAgIGlmIChtX2N1ZUNvbnRhaW5l
ci0+Y29udGFpbnMoZGlzcGxheUJveC5nZXQoKSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1f
Y3VlQ29udGFpbmVyLT5hcHBlbmRDaGlsZChkaXNwbGF5Qm94LCBBU1NFUlRfTk9fRVhDRVBUSU9O
KTsKLSAgICBkaXNwbGF5TGFzdFRleHRUcmFja0N1ZUJveCgpOwotfQotCi12b2lkIFRleHRUcmFj
a1JlZ2lvbjo6ZGlzcGxheUxhc3RUZXh0VHJhY2tDdWVCb3goKQotewotICAgIEFTU0VSVChtX2N1
ZUNvbnRhaW5lcik7Ci0KLSAgICAvLyBUaGUgY29udGFpbmVyIG5lZWRzIHRvIGJlIHJlbmRlcmVk
LCBpZiBpdCBpcyBub3QgZW1wdHkgYW5kIHRoZSByZWdpb24gaXMgbm90IGN1cnJlbnRseSBzY3Jv
bGxpbmcuCi0gICAgaWYgKCFtX2N1ZUNvbnRhaW5lci0+cmVuZGVyZXIoKSB8fCAhbV9jdWVDb250
YWluZXItPmNoaWxkTm9kZUNvdW50KCkgfHwgbV9zY3JvbGxUaW1lci5pc0FjdGl2ZSgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICAvLyBJZiBpdCdzIGEgc2Nyb2xsaW5nIHJlZ2lvbiwgYWRkIHRo
ZSBzY3JvbGxpbmcgY2xhc3MuCi0gICAgaWYgKGlzU2Nyb2xsaW5nUmVnaW9uKCkpCi0gICAgICAg
IG1fY3VlQ29udGFpbmVyLT5jbGFzc0xpc3QoKS0+YWRkKHRleHRUcmFja0N1ZUNvbnRhaW5lclNj
cm9sbGluZ0NsYXNzKCksIElHTk9SRV9FWENFUFRJT04pOwotCi0gICAgZmxvYXQgcmVnaW9uQm90
dG9tID0gbV9yZWdpb25EaXNwbGF5VHJlZS0+Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCktPmJvdHRv
bSgpOwotCi0gICAgLy8gRmluZCBmaXJzdCBjdWUgdGhhdCBpcyBub3QgZW50aXJlbHkgZGlzcGxh
eWVkIGFuZCBzY3JvbGwgaXQgdXB3YXJkcy4KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1f
Y3VlQ29udGFpbmVyLT5jaGlsZE5vZGVDb3VudCgpICYmICFtX3Njcm9sbFRpbWVyLmlzQWN0aXZl
KCk7ICsraSkgewotICAgICAgICBmbG9hdCBjaGlsZFRvcCA9IHN0YXRpY19jYXN0PEhUTUxEaXZF
bGVtZW50Kj4obV9jdWVDb250YWluZXItPmNoaWxkTm9kZShpKSktPmdldEJvdW5kaW5nQ2xpZW50
UmVjdCgpLT50b3AoKTsKLSAgICAgICAgZmxvYXQgY2hpbGRCb3R0b20gPSBzdGF0aWNfY2FzdDxI
VE1MRGl2RWxlbWVudCo+KG1fY3VlQ29udGFpbmVyLT5jaGlsZE5vZGUoaSkpLT5nZXRCb3VuZGlu
Z0NsaWVudFJlY3QoKS0+Ym90dG9tKCk7Ci0KLSAgICAgICAgaWYgKHJlZ2lvbkJvdHRvbSA+PSBj
aGlsZEJvdHRvbSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGZsb2F0IGhlaWdo
dCA9IGNoaWxkQm90dG9tIC0gY2hpbGRUb3A7Ci0KLSAgICAgICAgbV9jdXJyZW50VG9wIC09IHN0
ZDo6bWluKGhlaWdodCwgY2hpbGRCb3R0b20gLSByZWdpb25Cb3R0b20pOwotICAgICAgICBtX2N1
ZUNvbnRhaW5lci0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRvcCwgbV9jdXJy
ZW50VG9wLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKLQotICAgICAgICBzdGFydFRpbWVy
KCk7Ci0gICAgfQotfQotCi12b2lkIFRleHRUcmFja1JlZ2lvbjo6d2lsbFJlbW92ZVRleHRUcmFj
a0N1ZUJveChWVFRDdWVCb3gqIGJveCkKLXsKLSAgICBMT0coTWVkaWEsICJUZXh0VHJhY2tSZWdp
b246OndpbGxSZW1vdmVUZXh0VHJhY2tDdWVCb3giKTsKLSAgICBBU1NFUlQobV9jdWVDb250YWlu
ZXItPmNvbnRhaW5zKGJveCkpOwotCi0gICAgZG91YmxlIGJveEhlaWdodCA9IGJveC0+Z2V0Qm91
bmRpbmdDbGllbnRSZWN0KCktPmJvdHRvbSgpIC0gYm94LT5nZXRCb3VuZGluZ0NsaWVudFJlY3Qo
KS0+dG9wKCk7Ci0KLSAgICBtX2N1ZUNvbnRhaW5lci0+Y2xhc3NMaXN0KCktPnJlbW92ZSh0ZXh0
VHJhY2tDdWVDb250YWluZXJTY3JvbGxpbmdDbGFzcygpLCBJR05PUkVfRVhDRVBUSU9OKTsKLQot
ICAgIG1fY3VycmVudFRvcCArPSBib3hIZWlnaHQ7Ci0gICAgbV9jdWVDb250YWluZXItPnNldElu
bGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUb3AsIG1fY3VycmVudFRvcCwgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19QWCk7Ci19Ci0KLVBhc3NSZWZQdHI8SFRNTERpdkVsZW1lbnQ+IFRleHRU
cmFja1JlZ2lvbjo6Z2V0RGlzcGxheVRyZWUoKQotewotICAgIGlmICghbV9yZWdpb25EaXNwbGF5
VHJlZSkgewotICAgICAgICBtX3JlZ2lvbkRpc3BsYXlUcmVlID0gSFRNTERpdkVsZW1lbnQ6OmNy
ZWF0ZSgqb3duZXJEb2N1bWVudCgpKTsKLSAgICAgICAgcHJlcGFyZVJlZ2lvbkRpc3BsYXlUcmVl
KCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIG1fcmVnaW9uRGlzcGxheVRyZWU7Ci19Ci0KLXZvaWQg
VGV4dFRyYWNrUmVnaW9uOjpwcmVwYXJlUmVnaW9uRGlzcGxheVRyZWUoKQotewotICAgIEFTU0VS
VChtX3JlZ2lvbkRpc3BsYXlUcmVlKTsKLQotICAgIC8vIDcuMiBQcmVwYXJlIHJlZ2lvbiBDU1Mg
Ym94ZXMKLQotICAgIC8vIEZJWE1FOiBDaGFuZ2UgdGhlIGNvZGUgYmVsb3cgdG8gdXNlIHZpZXdw
b3J0IHVuaXRzIHdoZW4KLSAgICAvLyBodHRwOi8vY3JidWcvMjQ0NjE4IGlzIGZpeGVkLgotCi0g
ICAgLy8gTGV0IHJlZ2lvbldpZHRoIGJlIHRoZSB0ZXh0IHRyYWNrIHJlZ2lvbiB3aWR0aC4KLSAg
ICAvLyBMZXQgd2lkdGggYmUgJ3JlZ2lvbldpZHRoIHZ3JyAoJ3Z3JyBpcyBhIENTUyB1bml0KQot
ICAgIG1fcmVnaW9uRGlzcGxheVRyZWUtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVy
dHlXaWR0aCwgbV93aWR0aCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKTsKLQot
ICAgIC8vIExldCBsaW5lSGVpZ2h0IGJlICcwLjA1MzN2aCcgKCd2aCcgaXMgYSBDU1MgdW5pdCkg
YW5kIHJlZ2lvbkhlaWdodCBiZQotICAgIC8vIHRoZSB0ZXh0IHRyYWNrIHJlZ2lvbiBoZWlnaHQu
IExldCBoZWlnaHQgYmUgJ2xpbmVIZWlnaHQnIG11bHRpcGxpZWQKLSAgICAvLyBieSByZWdpb25I
ZWlnaHQuCi0gICAgZG91YmxlIGhlaWdodCA9IGxpbmVIZWlnaHQgKiBtX2hlaWdodEluTGluZXM7
Ci0gICAgbV9yZWdpb25EaXNwbGF5VHJlZS0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUhlaWdodCwgaGVpZ2h0LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1ZIKTsKLQotICAgIC8v
IExldCB2aWV3cG9ydEFuY2hvclggYmUgdGhlIHggZGltZW5zaW9uIG9mIHRoZSB0ZXh0IHRyYWNr
IHJlZ2lvbiB2aWV3cG9ydAotICAgIC8vIGFuY2hvciBhbmQgcmVnaW9uQW5jaG9yWCBiZSB0aGUg
eCBkaW1lbnNpb24gb2YgdGhlIHRleHQgdHJhY2sgcmVnaW9uCi0gICAgLy8gYW5jaG9yLiBMZXQg
bGVmdE9mZnNldCBiZSByZWdpb25BbmNob3JYIG11bHRpcGxpZWQgYnkgd2lkdGggZGl2aWRlZCBi
eQotICAgIC8vIDEwMC4wLiBMZXQgbGVmdCBiZSBsZWZ0T2Zmc2V0IHN1YnRyYWN0ZWQgZnJvbSAn
dmlld3BvcnRBbmNob3JYIHZ3Jy4KLSAgICBkb3VibGUgbGVmdE9mZnNldCA9IG1fcmVnaW9uQW5j
aG9yLngoKSAqIG1fd2lkdGggLyAxMDA7Ci0gICAgbV9yZWdpb25EaXNwbGF5VHJlZS0+c2V0SW5s
aW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUxlZnQsIG1fdmlld3BvcnRBbmNob3IueCgpIC0g
bGVmdE9mZnNldCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKTsKLQotICAgIC8v
IExldCB2aWV3cG9ydEFuY2hvclkgYmUgdGhlIHkgZGltZW5zaW9uIG9mIHRoZSB0ZXh0IHRyYWNr
IHJlZ2lvbiB2aWV3cG9ydAotICAgIC8vIGFuY2hvciBhbmQgcmVnaW9uQW5jaG9yWSBiZSB0aGUg
eSBkaW1lbnNpb24gb2YgdGhlIHRleHQgdHJhY2sgcmVnaW9uCi0gICAgLy8gYW5jaG9yLiBMZXQg
dG9wT2Zmc2V0IGJlIHJlZ2lvbkFuY2hvclkgbXVsdGlwbGllZCBieSBoZWlnaHQgZGl2aWRlZCBi
eQotICAgIC8vIDEwMC4wLiBMZXQgdG9wIGJlIHRvcE9mZnNldCBzdWJ0cmFjdGVkIGZyb20gJ3Zp
ZXdwb3J0QW5jaG9yWSB2aCcuCi0gICAgZG91YmxlIHRvcE9mZnNldCA9IG1fcmVnaW9uQW5jaG9y
LnkoKSAqIGhlaWdodCAvIDEwMDsKLSAgICBtX3JlZ2lvbkRpc3BsYXlUcmVlLT5zZXRJbmxpbmVT
dHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VG9wLCBtX3ZpZXdwb3J0QW5jaG9yLnkoKSAtIHRvcE9m
ZnNldCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKTsKLQotICAgIC8vIFRoZSBj
dWUgY29udGFpbmVyIGlzIHVzZWQgdG8gd3JhcCB0aGUgY3VlcyBhbmQgaXQgaXMgdGhlIG9iamVj
dCB3aGljaCBpcwotICAgIC8vIGdyYWR1YWxseSBzY3JvbGxlZCBvdXQgYXMgbXVsdGlwbGUgY3Vl
cyBhcmUgYXBwZW5kZWQgdG8gdGhlIHJlZ2lvbi4KLSAgICBtX2N1ZUNvbnRhaW5lciA9IEhUTUxE
aXZFbGVtZW50OjpjcmVhdGUoKm93bmVyRG9jdW1lbnQoKSk7Ci0gICAgbV9jdWVDb250YWluZXIt
PnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUb3AsIDAuMGYsIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfUFgpOwotCi0gICAgbV9jdWVDb250YWluZXItPnNldFBzZXVkbyh0ZXh0VHJh
Y2tDdWVDb250YWluZXJTaGFkb3dQc2V1ZG9JZCgpKTsKLSAgICBtX3JlZ2lvbkRpc3BsYXlUcmVl
LT5hcHBlbmRDaGlsZChtX2N1ZUNvbnRhaW5lcik7Ci0KLSAgICAvLyA3LjUgRXZlcnkgV2ViVlRU
IHJlZ2lvbiBvYmplY3QgaXMgaW5pdGlhbGlzZWQgd2l0aCB0aGUgZm9sbG93aW5nIENTUwotICAg
IG1fcmVnaW9uRGlzcGxheVRyZWUtPnNldFBzZXVkbyh0ZXh0VHJhY2tSZWdpb25TaGFkb3dQc2V1
ZG9JZCgpKTsKLX0KLQotdm9pZCBUZXh0VHJhY2tSZWdpb246OnN0YXJ0VGltZXIoKQotewotICAg
IExPRyhNZWRpYSwgIlRleHRUcmFja1JlZ2lvbjo6c3RhcnRUaW1lciIpOwotCi0gICAgaWYgKG1f
c2Nyb2xsVGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZG91YmxlIGR1
cmF0aW9uID0gaXNTY3JvbGxpbmdSZWdpb24oKSA/IHNjcm9sbFRpbWUgOiAwOwotICAgIG1fc2Ny
b2xsVGltZXIuc3RhcnRPbmVTaG90KGR1cmF0aW9uKTsKLX0KLQotdm9pZCBUZXh0VHJhY2tSZWdp
b246OnN0b3BUaW1lcigpCi17Ci0gICAgTE9HKE1lZGlhLCAiVGV4dFRyYWNrUmVnaW9uOjpzdG9w
VGltZXIiKTsKLQotICAgIGlmIChtX3Njcm9sbFRpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1f
c2Nyb2xsVGltZXIuc3RvcCgpOwotfQotCi12b2lkIFRleHRUcmFja1JlZ2lvbjo6c2Nyb2xsVGlt
ZXJGaXJlZChUaW1lcjxUZXh0VHJhY2tSZWdpb24+KikKLXsKLSAgICBMT0coTWVkaWEsICJUZXh0
VHJhY2tSZWdpb246OnNjcm9sbFRpbWVyRmlyZWQiKTsKLQotICAgIHN0b3BUaW1lcigpOwotICAg
IGRpc3BsYXlMYXN0VGV4dFRyYWNrQ3VlQm94KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja1Jl
Z2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
UmVnaW9uLmgJKHJldmlzaW9uIDE2NjAwOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrUmVnaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTY0ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlz
dHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVm
IFRleHRUcmFja1JlZ2lvbl9oCi0jZGVmaW5lIFRleHRUcmFja1JlZ2lvbl9oCi0KLSNpZiBFTkFC
TEUoVklERU9fVFJBQ0spICYmIEVOQUJMRShXRUJWVFRfUkVHSU9OUykKLQotI2luY2x1ZGUgIkNv
bnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgiCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNs
dWRlICJGbG9hdFBvaW50LmgiCi0jaW5jbHVkZSAiVGV4dFRyYWNrLmgiCi0jaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBIVE1MRGl2RWxl
bWVudDsKLWNsYXNzIFZUVEN1ZUJveDsKLQotY2xhc3MgVGV4dFRyYWNrUmVnaW9uIDogcHVibGlj
IFJlZkNvdW50ZWQ8VGV4dFRyYWNrUmVnaW9uPiwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9i
c2VydmVyIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0VHJhY2tSZWdpb24+
IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0VHJhY2tSZWdpb24oY29udGV4dCkpOwotICAgIH0KLQot
ICAgIHZpcnR1YWwgflRleHRUcmFja1JlZ2lvbigpOwotCi0gICAgVGV4dFRyYWNrKiB0cmFjaygp
IGNvbnN0IHsgcmV0dXJuIG1fdHJhY2s7IH0KLSAgICB2b2lkIHNldFRyYWNrKFRleHRUcmFjayop
OwotCi0gICAgY29uc3QgU3RyaW5nJiBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KLSAgICB2
b2lkIHNldElkKGNvbnN0IFN0cmluZyYpOwotCi0gICAgZG91YmxlIHdpZHRoKCkgY29uc3QgeyBy
ZXR1cm4gbV93aWR0aDsgfQotICAgIHZvaWQgc2V0V2lkdGgoZG91YmxlLCBFeGNlcHRpb25Db2Rl
Jik7Ci0KLSAgICBsb25nIGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faGVpZ2h0SW5MaW5lczsg
fQotICAgIHZvaWQgc2V0SGVpZ2h0KGxvbmcsIEV4Y2VwdGlvbkNvZGUmKTsKLQotICAgIGRvdWJs
ZSByZWdpb25BbmNob3JYKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpb25BbmNob3IueCgpOyB9Ci0g
ICAgdm9pZCBzZXRSZWdpb25BbmNob3JYKGRvdWJsZSwgRXhjZXB0aW9uQ29kZSYpOwotCi0gICAg
ZG91YmxlIHJlZ2lvbkFuY2hvclkoKSBjb25zdCB7IHJldHVybiBtX3JlZ2lvbkFuY2hvci55KCk7
IH0KLSAgICB2b2lkIHNldFJlZ2lvbkFuY2hvclkoZG91YmxlLCBFeGNlcHRpb25Db2RlJik7Ci0K
LSAgICBkb3VibGUgdmlld3BvcnRBbmNob3JYKCkgY29uc3QgeyByZXR1cm4gbV92aWV3cG9ydEFu
Y2hvci54KCk7IH0KLSAgICB2b2lkIHNldFZpZXdwb3J0QW5jaG9yWChkb3VibGUsIEV4Y2VwdGlv
bkNvZGUmKTsKLQotICAgIGRvdWJsZSB2aWV3cG9ydEFuY2hvclkoKSBjb25zdCB7IHJldHVybiBt
X3ZpZXdwb3J0QW5jaG9yLnkoKTsgfQotICAgIHZvaWQgc2V0Vmlld3BvcnRBbmNob3JZKGRvdWJs
ZSwgRXhjZXB0aW9uQ29kZSYpOwotCi0gICAgY29uc3QgQXRvbWljU3RyaW5nIHNjcm9sbCgpIGNv
bnN0OwotICAgIHZvaWQgc2V0U2Nyb2xsKGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNv
ZGUmKTsKLQotICAgIHZvaWQgdXBkYXRlUGFyYW1ldGVyc0Zyb21SZWdpb24oVGV4dFRyYWNrUmVn
aW9uKik7Ci0KLSAgICBjb25zdCBTdHJpbmcmIHJlZ2lvblNldHRpbmdzKCkgY29uc3QgeyByZXR1
cm4gbV9zZXR0aW5nczsgfQotICAgIHZvaWQgc2V0UmVnaW9uU2V0dGluZ3MoY29uc3QgU3RyaW5n
Jik7Ci0KLSAgICBib29sIGlzU2Nyb2xsaW5nUmVnaW9uKCkgeyByZXR1cm4gbV9zY3JvbGw7IH0K
LQotICAgIFBhc3NSZWZQdHI8SFRNTERpdkVsZW1lbnQ+IGdldERpc3BsYXlUcmVlKCk7Ci0gICAg
Ci0gICAgdm9pZCBhcHBlbmRUZXh0VHJhY2tDdWVCb3goUGFzc1JlZlB0cjxWVFRDdWVCb3g+KTsK
LSAgICB2b2lkIGRpc3BsYXlMYXN0VGV4dFRyYWNrQ3VlQm94KCk7Ci0gICAgdm9pZCB3aWxsUmVt
b3ZlVGV4dFRyYWNrQ3VlQm94KFZUVEN1ZUJveCopOwotCi1wcml2YXRlOgotICAgIFRleHRUcmFj
a1JlZ2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7Ci0KLSAgICBEb2N1bWVudCogb3duZXJE
b2N1bWVudCgpIHsgcmV0dXJuIHRvRG9jdW1lbnQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsg
fQotCi0gICAgdm9pZCBwcmVwYXJlUmVnaW9uRGlzcGxheVRyZWUoKTsKLQotICAgIC8vIFRoZSB0
aW1lciBpcyBuZWVkZWQgdG8gY29udGludWUgcHJvY2Vzc2luZyB3aGVuIGN1ZSBzY3JvbGxpbmcg
ZW5kZWQuCi0gICAgdm9pZCBzdGFydFRpbWVyKCk7Ci0gICAgdm9pZCBzdG9wVGltZXIoKTsKLSAg
ICB2b2lkIHNjcm9sbFRpbWVyRmlyZWQoVGltZXI8VGV4dFRyYWNrUmVnaW9uPiopOwotCi0gICAg
ZW51bSBSZWdpb25TZXR0aW5nIHsKLSAgICAgICAgTm9uZSwKLSAgICAgICAgSWQsCi0gICAgICAg
IFdpZHRoLAotICAgICAgICBIZWlnaHQsCi0gICAgICAgIFJlZ2lvbkFuY2hvciwKLSAgICAgICAg
Vmlld3BvcnRBbmNob3IsCi0gICAgICAgIFNjcm9sbAotICAgIH07Ci0KLSAgICBSZWdpb25TZXR0
aW5nIGdldFNldHRpbmdGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOwotCi0gICAgdm9pZCBwYXJz
ZVNldHRpbmdWYWx1ZShSZWdpb25TZXR0aW5nLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHBh
cnNlU2V0dGluZyhjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCopOwotCi0gICAgc3RhdGljIGNvbnN0
IEF0b21pY1N0cmluZyYgdGV4dFRyYWNrQ3VlQ29udGFpbmVyU2hhZG93UHNldWRvSWQoKTsKLSAg
ICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB0ZXh0VHJhY2tDdWVDb250YWluZXJTY3JvbGxp
bmdDbGFzcygpOwotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHRleHRUcmFja1JlZ2lv
blNoYWRvd1BzZXVkb0lkKCk7Ci0KLSAgICBTdHJpbmcgbV9pZDsKLSAgICBTdHJpbmcgbV9zZXR0
aW5nczsKLQotICAgIGRvdWJsZSBtX3dpZHRoOwotICAgIHVuc2lnbmVkIG1faGVpZ2h0SW5MaW5l
czsKLQotICAgIEZsb2F0UG9pbnQgbV9yZWdpb25BbmNob3I7Ci0gICAgRmxvYXRQb2ludCBtX3Zp
ZXdwb3J0QW5jaG9yOwotCi0gICAgYm9vbCBtX3Njcm9sbDsKLQotICAgIC8vIFRoZSBjdWUgY29u
dGFpbmVyIGlzIHRoZSBjb250YWluZXIgdGhhdCBpcyBzY3JvbGxlZCB1cCB0byBvYnRhaW4gdGhl
Ci0gICAgLy8gZWZmZWN0IG9mIHNjcm9sbGluZyBjdWVzIHdoZW4gdGhpcyBpcyBlbmFibGVkIGZv
ciB0aGUgcmVnaW9ucy4KLSAgICBSZWZQdHI8SFRNTERpdkVsZW1lbnQ+IG1fY3VlQ29udGFpbmVy
OwotICAgIFJlZlB0cjxIVE1MRGl2RWxlbWVudD4gbV9yZWdpb25EaXNwbGF5VHJlZTsKLQotICAg
IC8vIFRoZSBtZW1iZXIgdmFyaWFibGUgdHJhY2sgY2FuIGJlIGEgcmF3IHBvaW50ZXIgYXMgaXQg
d2lsbCBuZXZlcgotICAgIC8vIHJlZmVyZW5jZSBhIGRlc3Ryb3llZCBUZXh0VHJhY2ssIGFzIHRo
aXMgbWVtYmVyIHZhcmlhYmxlCi0gICAgLy8gaXMgY2xlYXJlZCBpbiB0aGUgVGV4dFRyYWNrIGRl
c3RydWN0b3IgYW5kIGl0IGlzIGdlbmVyYWxseQotICAgIC8vIHNldC9yZXNldCB3aXRoaW4gdGhl
IGFkZFJlZ2lvbiBhbmQgcmVtb3ZlUmVnaW9uIG1ldGhvZHMuCi0gICAgVGV4dFRyYWNrKiBtX3Ry
YWNrOwotCi0gICAgLy8gS2VlcCB0cmFjayBvZiB0aGUgY3VycmVudCBudW1lcmljIHZhbHVlIG9m
IHRoZSBjc3MgInRvcCIgcHJvcGVydHkuCi0gICAgZG91YmxlIG1fY3VycmVudFRvcDsKLQotICAg
IC8vIFRoZSB0aW1lciBpcyB1c2VkIHRvIGRpc3BsYXkgdGhlIG5leHQgY3VlIGxpbmUgYWZ0ZXIg
dGhlIGN1cnJlbnQgb25lIGhhcwotICAgIC8vIGJlZW4gZGlzcGxheWVkLiBJdCdzIG1haW4gdXNl
IGlzIGZvciBzY3JvbGxpbmcgcmVnaW9ucyBhbmQgaXQgdHJpZ2dlcnMgYXMKLSAgICAvLyBzb29u
IGFzIHRoZSBhbmltYXRpb24gZm9yIHJvbGxpbmcgb3V0IG9uZSBsaW5lIGhhcyBmaW5pc2hlZCwg
YnV0Ci0gICAgLy8gY3VycmVudGx5IGl0IGlzIHVzZWQgYWxzbyBmb3Igbm9uLXNjcm9sbGluZyBy
ZWdpb25zIHRvIHVzZSBhIHNpbmdsZQotICAgIC8vIGNvZGUgcGF0aC4KLSAgICBUaW1lcjxUZXh0
VHJhY2tSZWdpb24+IG1fc2Nyb2xsVGltZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZgotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFja1JlZ2lvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2tSZWdpb24uaWRsCShyZXZpc2lvbiAxNjYwMDkpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RleHRUcmFja1JlZ2lvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsNDQgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotWwot
ICAgIENvbmRpdGlvbmFsPVZJREVPX1RSQUNLICYgV0VCVlRUX1JFR0lPTlMsCi0gICAgSlNHZW5l
cmF0ZVRvTmF0aXZlT2JqZWN0LAotICAgIENvbnN0cnVjdG9yKCksCi0gICAgQ29uc3RydWN0b3JD
YWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0Ci1dIGludGVyZmFjZSBUZXh0VHJhY2tSZWdp
b24gewotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBUZXh0VHJhY2sgdHJhY2s7Ci0KLSAgICBhdHRy
aWJ1dGUgRE9NU3RyaW5nIGlkOwotICAgIFtTZXR0ZXJSYWlzZXNFeGNlcHRpb25dIGF0dHJpYnV0
ZSBkb3VibGUgd2lkdGg7Ci0gICAgW1NldHRlclJhaXNlc0V4Y2VwdGlvbl0gYXR0cmlidXRlIGxv
bmcgaGVpZ2h0OwotICAgIFtTZXR0ZXJSYWlzZXNFeGNlcHRpb25dIGF0dHJpYnV0ZSBkb3VibGUg
cmVnaW9uQW5jaG9yWDsKLSAgICBbU2V0dGVyUmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgZG91
YmxlIHJlZ2lvbkFuY2hvclk7Ci0gICAgW1NldHRlclJhaXNlc0V4Y2VwdGlvbl0gYXR0cmlidXRl
IGRvdWJsZSB2aWV3cG9ydEFuY2hvclg7Ci0gICAgW1NldHRlclJhaXNlc0V4Y2VwdGlvbl0gYXR0
cmlidXRlIGRvdWJsZSB2aWV3cG9ydEFuY2hvclk7Ci0gICAgW1NldHRlclJhaXNlc0V4Y2VwdGlv
bl0gYXR0cmlidXRlIERPTVN0cmluZyBzY3JvbGw7Ci19OwotCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFja1JlZ2lvbkxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uTGlzdC5jcHAJKHJldmlzaW9uIDE2
NjAwOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uTGlzdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsODcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAy
MDE0IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJM
RShWSURFT19UUkFDSykgJiYgRU5BQkxFKFdFQlZUVF9SRUdJT05TKQotCi0jaW5jbHVkZSAiVGV4
dFRyYWNrUmVnaW9uTGlzdC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVRleHRUcmFja1Jl
Z2lvbkxpc3Q6OlRleHRUcmFja1JlZ2lvbkxpc3QoKQotewotfQotCi11bnNpZ25lZCBsb25nIFRl
eHRUcmFja1JlZ2lvbkxpc3Q6Omxlbmd0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbGlzdC5z
aXplKCk7Ci19Ci0KLVRleHRUcmFja1JlZ2lvbiogVGV4dFRyYWNrUmVnaW9uTGlzdDo6aXRlbSh1
bnNpZ25lZCBpbmRleCkgY29uc3QKLXsKLSAgICBpZiAoaW5kZXggPCBtX2xpc3Quc2l6ZSgpKQot
ICAgICAgICByZXR1cm4gbV9saXN0W2luZGV4XS5nZXQoKTsKLQotICAgIHJldHVybiAwOwotfQot
Ci1UZXh0VHJhY2tSZWdpb24qIFRleHRUcmFja1JlZ2lvbkxpc3Q6OmdldFJlZ2lvbkJ5SWQoY29u
c3QgU3RyaW5nJiBpZCkgY29uc3QKLXsKLSAgICBpZiAoaWQuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gMDsKLQotICAgIGZvciAoY29uc3QgYXV0byYgcmVnaW9uIDogbV9saXN0KSB7Ci0gICAg
ICAgIGlmIChyZWdpb24tPmlkKCkgPT0gaWQpCi0gICAgICAgICAgICByZXR1cm4gcmVnaW9uLmdl
dCgpOwotICAgIH0KLQotICAgIHJldHVybiAwOwotfQotCi12b2lkIFRleHRUcmFja1JlZ2lvbkxp
c3Q6OmFkZChQYXNzUmVmUHRyPFRleHRUcmFja1JlZ2lvbj4gcmVnaW9uKQotewotICAgIG1fbGlz
dC5hcHBlbmQocmVnaW9uKTsKLX0KLQotYm9vbCBUZXh0VHJhY2tSZWdpb25MaXN0OjpyZW1vdmUo
VGV4dFRyYWNrUmVnaW9uKiByZWdpb24pCi17Ci0gICAgc2l6ZV90IGluZGV4ID0gbV9saXN0LmZp
bmQocmVnaW9uKTsKLSAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIG1fbGlzdC5yZW1vdmUoaW5kZXgpOwotICAgIHJldHVybiB0cnVlOwotfQot
Ci12b2lkIFRleHRUcmFja1JlZ2lvbkxpc3Q6OmNsZWFyKCkKLXsKLSAgICBtX2xpc3QuY2xlYXIo
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uTGlzdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uTGlzdC5oCShyZXZpc2lvbiAx
NjYwMDkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja1JlZ2lvbkxpc3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw2NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgVGV4dFRyYWNrUmVnaW9uTGlzdF9oCi0j
ZGVmaW5lIFRleHRUcmFja1JlZ2lvbkxpc3RfaAotCi0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAm
JiBFTkFCTEUoV0VCVlRUX1JFR0lPTlMpCi0KLSNpbmNsdWRlICJUZXh0VHJhY2tSZWdpb24uaCIK
LSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IFRleHRUcmFja1JlZ2lvbkxpc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxUZXh0VHJhY2tSZWdpb25M
aXN0PiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dFRyYWNrUmVnaW9uTGlz
dD4gY3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4dFRyYWNr
UmVnaW9uTGlzdCgpKTsKLSAgICB9Ci0KLSAgICB+VGV4dFRyYWNrUmVnaW9uTGlzdCgpIHsgfQot
Ci0gICAgdW5zaWduZWQgbG9uZyBsZW5ndGgoKSBjb25zdDsKLQotICAgIFRleHRUcmFja1JlZ2lv
biogaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7Ci0gICAgVGV4dFRyYWNrUmVnaW9uKiBnZXRS
ZWdpb25CeUlkKGNvbnN0IFN0cmluZyYpIGNvbnN0OwotCi0gICAgdm9pZCBhZGQoUGFzc1JlZlB0
cjxUZXh0VHJhY2tSZWdpb24+KTsKLSAgICBib29sIHJlbW92ZShUZXh0VHJhY2tSZWdpb24qKTsK
LQotcHJpdmF0ZToKLSAgICBUZXh0VHJhY2tSZWdpb25MaXN0KCk7Ci0gICAgdm9pZCBjbGVhcigp
OwotCi0gICAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2tSZWdpb24+ID4gbV9saXN0OwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKLSNlbmRpZgpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tSZWdpb25MaXN0LmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja1JlZ2lvbkxpc3QuaWRsCShyZXZpc2lv
biAxNjYwMDkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja1JlZ2lvbkxp
c3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi1bCi0gICAgTm9JbnRlcmZhY2VPYmplY3Qs
Ci0gICAgQ29uZGl0aW9uYWw9VklERU9fVFJBQ0sgJiBXRUJWVFRfUkVHSU9OUywKLSAgICBJbXBs
ZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotXSBpbnRlcmZhY2UgVGV4dFRyYWNrUmVnaW9uTGlzdCB7
Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwotICAgIGdldHRl
ciBUZXh0VHJhY2tSZWdpb24gaXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBUZXh0VHJh
Y2tSZWdpb24gZ2V0UmVnaW9uQnlJZChET01TdHJpbmcgaWQpOwotfTsKLQpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcAkocmV2aXNpb24gMTY2MDA5KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3
IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiAjaWYgRU5BQkxFKFdF
QlZUVF9SRUdJT05TKQotI2luY2x1ZGUgIlRleHRUcmFja1JlZ2lvbkxpc3QuaCIKKyNpbmNsdWRl
ICJWVFRSZWdpb25MaXN0LmgiCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzgy
LDggKzc4Miw4IEBAIHZvaWQgVlRUQ3VlOjpyZW1vdmVEaXNwbGF5VHJlZSgpCiAjaWYgRU5BQkxF
KFdFQlZUVF9SRUdJT05TKQogICAgIC8vIFRoZSByZWdpb24gbmVlZHMgdG8gYmUgaW5mb3JtZWQg
YWJvdXQgdGhlIGN1ZSByZW1vdmFsLgogICAgIGlmIChtX25vdGlmeVJlZ2lvbiAmJiB0cmFjaygp
KSB7Ci0gICAgICAgIGlmIChUZXh0VHJhY2tSZWdpb25MaXN0KiByZWdpb25zID0gdHJhY2soKS0+
cmVnaW9ucygpKSB7Ci0gICAgICAgICAgICBpZiAoVGV4dFRyYWNrUmVnaW9uKiByZWdpb24gPSBy
ZWdpb25zLT5nZXRSZWdpb25CeUlkKG1fcmVnaW9uSWQpKQorICAgICAgICBpZiAoVlRUUmVnaW9u
TGlzdCogcmVnaW9ucyA9IHRyYWNrKCktPnJlZ2lvbnMoKSkgeworICAgICAgICAgICAgaWYgKFZU
VFJlZ2lvbiogcmVnaW9uID0gcmVnaW9ucy0+Z2V0UmVnaW9uQnlJZChtX3JlZ2lvbklkKSkKICAg
ICAgICAgICAgICAgICByZWdpb24tPndpbGxSZW1vdmVUZXh0VHJhY2tDdWVCb3gobV9kaXNwbGF5
VHJlZS5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1ZUVFJlZ2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9WVFRSZWdpb24uY3BwCShyZXZpc2lvbiAxNjU5OTcpCShmcm9tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uLmNwcDoxNjU5OTcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0ODIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYmIEVOQUJM
RShXRUJWVFRfUkVHSU9OUykKKworI2luY2x1ZGUgIlRleHRUcmFja1JlZ2lvbi5oIgorCisjaW5j
bHVkZSAiQ2xpZW50UmVjdC5oIgorI2luY2x1ZGUgIkRPTVRva2VuTGlzdC5oIgorI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgorI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50Lmgi
CisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKKyNpbmNs
dWRlICJWVFRDdWUuaCIKKyNpbmNsdWRlICJXZWJWVFRQYXJzZXIuaCIKKyNpbmNsdWRlIDx3dGYv
TWF0aEV4dHJhcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIFRoZSBmb2xsb3dpbmcg
dmFsdWVzIGRlZmF1bHQgdmFsdWVzIGFyZSBkZWZpbmVkIHdpdGhpbiB0aGUgV2ViVlRUIFJlZ2lv
bnMgU3BlYy4KKy8vIGh0dHBzOi8vZHZjcy53My5vcmcvaGcvdGV4dC10cmFja3MvcmF3LWZpbGUv
ZGVmYXVsdC82MDh0b1ZUVC9yZWdpb24uaHRtbAorCisvLyBUaGUgcmVnaW9uIG9jY3VwaWVzIGJ5
IGRlZmF1bHQgMTAwJSBvZiB0aGUgd2lkdGggb2YgdGhlIHZpZGVvIHZpZXdwb3J0Lgorc3RhdGlj
IGNvbnN0IGZsb2F0IGRlZmF1bHRXaWR0aCA9IDEwMDsKKworLy8gVGhlIHJlZ2lvbiBoYXMsIGJ5
IGRlZmF1bHQsIDMgbGluZXMgb2YgdGV4dC4KK3N0YXRpYyBjb25zdCBsb25nIGRlZmF1bHRIZWln
aHRJbkxpbmVzID0gMzsKKworLy8gVGhlIHJlZ2lvbiBhbmQgdmlld3BvcnQgYXJlIGFuY2hvcmVk
IGluIHRoZSBib3R0b20gbGVmdCBjb3JuZXIuCitzdGF0aWMgY29uc3QgZmxvYXQgZGVmYXVsdEFu
Y2hvclBvaW50WCA9IDA7CitzdGF0aWMgY29uc3QgZmxvYXQgZGVmYXVsdEFuY2hvclBvaW50WSA9
IDEwMDsKKworLy8gVGhlIHJlZ2lvbiBkb2Vzbid0IGhhdmUgc2Nyb2xsaW5nIHRleHQsIGJ5IGRl
ZmF1bHQuCitzdGF0aWMgY29uc3QgYm9vbCBkZWZhdWx0U2Nyb2xsID0gZmFsc2U7CisKKy8vIERl
ZmF1bHQgcmVnaW9uIGxpbmUtaGVpZ2h0ICh2aCB1bml0cykKK3N0YXRpYyBjb25zdCBmbG9hdCBs
aW5lSGVpZ2h0ID0gNS4zMzsKKworLy8gRGVmYXVsdCBzY3JvbGxpbmcgYW5pbWF0aW9uIHRpbWUg
cGVyaW9kIChzKS4KK3N0YXRpYyBjb25zdCBmbG9hdCBzY3JvbGxUaW1lID0gMC40MzM7CisKK1Rl
eHRUcmFja1JlZ2lvbjo6VGV4dFRyYWNrUmVnaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpCisgICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcigmY29udGV4dCkKKyAgICAs
IG1faWQoZW1wdHlTdHJpbmcoKSkKKyAgICAsIG1fd2lkdGgoZGVmYXVsdFdpZHRoKQorICAgICwg
bV9oZWlnaHRJbkxpbmVzKGRlZmF1bHRIZWlnaHRJbkxpbmVzKQorICAgICwgbV9yZWdpb25BbmNo
b3IoRmxvYXRQb2ludChkZWZhdWx0QW5jaG9yUG9pbnRYLCBkZWZhdWx0QW5jaG9yUG9pbnRZKSkK
KyAgICAsIG1fdmlld3BvcnRBbmNob3IoRmxvYXRQb2ludChkZWZhdWx0QW5jaG9yUG9pbnRYLCBk
ZWZhdWx0QW5jaG9yUG9pbnRZKSkKKyAgICAsIG1fc2Nyb2xsKGRlZmF1bHRTY3JvbGwpCisgICAg
LCBtX2N1ZUNvbnRhaW5lcihudWxscHRyKQorICAgICwgbV9yZWdpb25EaXNwbGF5VHJlZShudWxs
cHRyKQorICAgICwgbV90cmFjayhudWxscHRyKQorICAgICwgbV9jdXJyZW50VG9wKDApCisgICAg
LCBtX3Njcm9sbFRpbWVyKHRoaXMsICZUZXh0VHJhY2tSZWdpb246OnNjcm9sbFRpbWVyRmlyZWQp
Cit7Cit9CisKK1RleHRUcmFja1JlZ2lvbjo6flRleHRUcmFja1JlZ2lvbigpCit7Cit9CisKK3Zv
aWQgVGV4dFRyYWNrUmVnaW9uOjpzZXRUcmFjayhUZXh0VHJhY2sqIHRyYWNrKQoreworICAgIG1f
dHJhY2sgPSB0cmFjazsKK30KKwordm9pZCBUZXh0VHJhY2tSZWdpb246OnNldElkKGNvbnN0IFN0
cmluZyYgaWQpCit7CisgICAgbV9pZCA9IGlkOworfQorCit2b2lkIFRleHRUcmFja1JlZ2lvbjo6
c2V0V2lkdGgoZG91YmxlIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoc3Rk
Ojppc2luZih2YWx1ZSkgfHwgc3RkOjppc25hbih2YWx1ZSkpIHsKKyAgICAgICAgZWMgPSBUeXBl
RXJyb3I7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAodmFsdWUgPCAwIHx8IHZh
bHVlID4gMTAwKSB7CisgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBtX3dpZHRoID0gdmFsdWU7Cit9CisKK3ZvaWQgVGV4dFRyYWNrUmVn
aW9uOjpzZXRIZWlnaHQobG9uZyB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYg
KHZhbHVlIDwgMCkgeworICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgbV9oZWlnaHRJbkxpbmVzID0gdmFsdWU7Cit9CisKK3ZvaWQgVGV4
dFRyYWNrUmVnaW9uOjpzZXRSZWdpb25BbmNob3JYKGRvdWJsZSB2YWx1ZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCit7CisgICAgaWYgKHN0ZDo6aXNpbmYodmFsdWUpIHx8IHN0ZDo6aXNuYW4odmFsdWUp
KSB7CisgICAgICAgIGVjID0gVHlwZUVycm9yOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKHZhbHVlIDwgMCB8fCB2YWx1ZSA+IDEwMCkgeworICAgICAgICBlYyA9IElOREVYX1NJ
WkVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9yZWdpb25BbmNob3Iuc2V0
WCh2YWx1ZSk7Cit9CisKK3ZvaWQgVGV4dFRyYWNrUmVnaW9uOjpzZXRSZWdpb25BbmNob3JZKGRv
dWJsZSB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKHN0ZDo6aXNpbmYodmFs
dWUpIHx8IHN0ZDo6aXNuYW4odmFsdWUpKSB7CisgICAgICAgIGVjID0gVHlwZUVycm9yOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHZhbHVlIDwgMCB8fCB2YWx1ZSA+IDEwMCkg
eworICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgbV9yZWdpb25BbmNob3Iuc2V0WSh2YWx1ZSk7Cit9CisKK3ZvaWQgVGV4dFRyYWNrUmVn
aW9uOjpzZXRWaWV3cG9ydEFuY2hvclgoZG91YmxlIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykK
K3sKKyAgICBpZiAoc3RkOjppc2luZih2YWx1ZSkgfHwgc3RkOjppc25hbih2YWx1ZSkpIHsKKyAg
ICAgICAgZWMgPSBUeXBlRXJyb3I7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAo
dmFsdWUgPCAwIHx8IHZhbHVlID4gMTAwKSB7CisgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3ZpZXdwb3J0QW5jaG9yLnNldFgodmFs
dWUpOworfQorCit2b2lkIFRleHRUcmFja1JlZ2lvbjo6c2V0Vmlld3BvcnRBbmNob3JZKGRvdWJs
ZSB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKHN0ZDo6aXNpbmYodmFsdWUp
IHx8IHN0ZDo6aXNuYW4odmFsdWUpKSB7CisgICAgICAgIGVjID0gVHlwZUVycm9yOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHZhbHVlIDwgMCB8fCB2YWx1ZSA+IDEwMCkgewor
ICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgbV92aWV3cG9ydEFuY2hvci5zZXRZKHZhbHVlKTsKK30KKworY29uc3QgQXRvbWljU3RyaW5n
IFRleHRUcmFja1JlZ2lvbjo6c2Nyb2xsKCkgY29uc3QKK3sKKyAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCB1cFNjcm9sbFZhbHVlS2V5d29yZCwg
KCJ1cCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKworICAgIGlmICht
X3Njcm9sbCkKKyAgICAgICAgcmV0dXJuIHVwU2Nyb2xsVmFsdWVLZXl3b3JkOworCisgICAgcmV0
dXJuICIiOworfQorCit2b2lkIFRleHRUcmFja1JlZ2lvbjo6c2V0U2Nyb2xsKGNvbnN0IEF0b21p
Y1N0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIERFUFJFQ0FURURfREVG
SU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHVwU2Nyb2xsVmFsdWVLZXl3b3Jk
LCAoInVwIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworCisgICAgaWYg
KHZhbHVlICE9IGVtcHR5U3RyaW5nKCkgJiYgdmFsdWUgIT0gdXBTY3JvbGxWYWx1ZUtleXdvcmQp
IHsKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgbV9zY3JvbGwgPSB2YWx1ZSA9PSB1cFNjcm9sbFZhbHVlS2V5d29yZDsKK30KKwordm9pZCBU
ZXh0VHJhY2tSZWdpb246OnVwZGF0ZVBhcmFtZXRlcnNGcm9tUmVnaW9uKFRleHRUcmFja1JlZ2lv
biogcmVnaW9uKQoreworICAgIG1faGVpZ2h0SW5MaW5lcyA9IHJlZ2lvbi0+aGVpZ2h0KCk7Cisg
ICAgbV93aWR0aCA9IHJlZ2lvbi0+d2lkdGgoKTsKKworICAgIG1fcmVnaW9uQW5jaG9yID0gRmxv
YXRQb2ludChyZWdpb24tPnJlZ2lvbkFuY2hvclgoKSwgcmVnaW9uLT5yZWdpb25BbmNob3JZKCkp
OworICAgIG1fdmlld3BvcnRBbmNob3IgPSBGbG9hdFBvaW50KHJlZ2lvbi0+dmlld3BvcnRBbmNo
b3JYKCksIHJlZ2lvbi0+dmlld3BvcnRBbmNob3JZKCkpOworCisgICAgc2V0U2Nyb2xsKHJlZ2lv
bi0+c2Nyb2xsKCksIEFTU0VSVF9OT19FWENFUFRJT04pOworfQorCit2b2lkIFRleHRUcmFja1Jl
Z2lvbjo6c2V0UmVnaW9uU2V0dGluZ3MoY29uc3QgU3RyaW5nJiBpbnB1dCkKK3sKKyAgICBtX3Nl
dHRpbmdzID0gaW5wdXQ7CisgICAgdW5zaWduZWQgcG9zaXRpb24gPSAwOworCisgICAgd2hpbGUg
KHBvc2l0aW9uIDwgaW5wdXQubGVuZ3RoKCkpIHsKKyAgICAgICAgd2hpbGUgKHBvc2l0aW9uIDwg
aW5wdXQubGVuZ3RoKCkgJiYgV2ViVlRUUGFyc2VyOjppc1ZhbGlkU2V0dGluZ0RlbGltaXRlcihp
bnB1dFtwb3NpdGlvbl0pKQorICAgICAgICAgICAgcG9zaXRpb24rKzsKKworICAgICAgICBpZiAo
cG9zaXRpb24gPj0gaW5wdXQubGVuZ3RoKCkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICBwYXJzZVNldHRpbmcoaW5wdXQsICZwb3NpdGlvbik7CisgICAgfQorfQorCitUZXh0VHJhY2tS
ZWdpb246OlJlZ2lvblNldHRpbmcgVGV4dFRyYWNrUmVnaW9uOjpnZXRTZXR0aW5nRnJvbVN0cmlu
Zyhjb25zdCBTdHJpbmcmIHNldHRpbmcpCit7CisgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgaWRLZXl3b3JkLCAoImlkIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGhlaWdodEtleXdvcmQsICgiaGVpZ2h0IiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHdpZHRoS2V5d29yZCwgKCJ3aWR0aCIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCByZWdpb25BbmNob3JLZXl3b3JkLCAo
InJlZ2lvbmFuY2hvciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCB2aWV3
cG9ydEFuY2hvcktleXdvcmQsICgidmlld3BvcnRhbmNob3IiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSk7CisgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNv
bnN0IEF0b21pY1N0cmluZywgc2Nyb2xsS2V5d29yZCwgKCJzY3JvbGwiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisKKyAgICBpZiAoc2V0dGluZyA9PSBpZEtleXdvcmQp
CisgICAgICAgIHJldHVybiBJZDsKKyAgICBpZiAoc2V0dGluZyA9PSBoZWlnaHRLZXl3b3JkKQor
ICAgICAgICByZXR1cm4gSGVpZ2h0OworICAgIGlmIChzZXR0aW5nID09IHdpZHRoS2V5d29yZCkK
KyAgICAgICAgcmV0dXJuIFdpZHRoOworICAgIGlmIChzZXR0aW5nID09IHZpZXdwb3J0QW5jaG9y
S2V5d29yZCkKKyAgICAgICAgcmV0dXJuIFZpZXdwb3J0QW5jaG9yOworICAgIGlmIChzZXR0aW5n
ID09IHJlZ2lvbkFuY2hvcktleXdvcmQpCisgICAgICAgIHJldHVybiBSZWdpb25BbmNob3I7Cisg
ICAgaWYgKHNldHRpbmcgPT0gc2Nyb2xsS2V5d29yZCkKKyAgICAgICAgcmV0dXJuIFNjcm9sbDsK
KworICAgIHJldHVybiBOb25lOworfQorCit2b2lkIFRleHRUcmFja1JlZ2lvbjo6cGFyc2VTZXR0
aW5nVmFsdWUoUmVnaW9uU2V0dGluZyBzZXR0aW5nLCBjb25zdCBTdHJpbmcmIHZhbHVlKQorewor
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHNj
cm9sbFVwVmFsdWVLZXl3b3JkLCAoInVwIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOworCisgICAgc3dpdGNoIChzZXR0aW5nKSB7CisgICAgY2FzZSBJZDoKKyAgICAgICAg
aWYgKHZhbHVlLmZpbmQoIi0tPiIpID09IG5vdEZvdW5kKQorICAgICAgICAgICAgbV9pZCA9IHZh
bHVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdpZHRoOiB7CisgICAgICAgIGZsb2F0IGZs
b2F0V2lkdGg7CisgICAgICAgIGlmIChXZWJWVFRQYXJzZXI6OnBhcnNlRmxvYXRQZXJjZW50YWdl
VmFsdWUodmFsdWUsIGZsb2F0V2lkdGgpKQorICAgICAgICAgICAgbV93aWR0aCA9IGZsb2F0V2lk
dGg7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIExPRyhNZWRpYSwgIlRleHRUcmFja1JlZ2lv
bjo6cGFyc2VTZXR0aW5nVmFsdWUsIGludmFsaWQgV2lkdGgiKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGNhc2UgSGVpZ2h0OiB7CisgICAgICAgIHVuc2lnbmVkIHBvc2l0aW9uID0gMDsK
KyAgICAgICAgaW50IG51bWJlcjsKKyAgICAgICAgaWYgKFdlYlZUVFBhcnNlcjo6Y29sbGVjdERp
Z2l0c1RvSW50KHZhbHVlLCAmcG9zaXRpb24sIG51bWJlcikgJiYgcG9zaXRpb24gPT0gdmFsdWUu
bGVuZ3RoKCkpCisgICAgICAgICAgICBtX2hlaWdodEluTGluZXMgPSBudW1iZXI7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIExPRyhNZWRpYSwgIlRleHRUcmFja1JlZ2lvbjo6cGFyc2VTZXR0
aW5nVmFsdWUsIGludmFsaWQgSGVpZ2h0Iik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBj
YXNlIFJlZ2lvbkFuY2hvcjoKKyAgICAgICAgaWYgKCFXZWJWVFRQYXJzZXI6OnBhcnNlRmxvYXRQ
ZXJjZW50YWdlVmFsdWVQYWlyKHZhbHVlLCAnLCcsIG1fcmVnaW9uQW5jaG9yKSkKKyAgICAgICAg
ICAgIExPRyhNZWRpYSwgIlRleHRUcmFja1JlZ2lvbjo6cGFyc2VTZXR0aW5nVmFsdWUsIGludmFs
aWQgUmVnaW9uQW5jaG9yIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVmlld3BvcnRBbmNo
b3I6CisgICAgICAgIGlmICghV2ViVlRUUGFyc2VyOjpwYXJzZUZsb2F0UGVyY2VudGFnZVZhbHVl
UGFpcih2YWx1ZSwgJywnLCBtX3ZpZXdwb3J0QW5jaG9yKSkKKyAgICAgICAgICAgIExPRyhNZWRp
YSwgIlRleHRUcmFja1JlZ2lvbjo6cGFyc2VTZXR0aW5nVmFsdWUsIGludmFsaWQgVmlld3BvcnRB
bmNob3IiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTY3JvbGw6CisgICAgICAgIGlmICh2
YWx1ZSA9PSBzY3JvbGxVcFZhbHVlS2V5d29yZCkKKyAgICAgICAgICAgIG1fc2Nyb2xsID0gdHJ1
ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgTE9HKE1lZGlhLCAiVGV4dFRyYWNrUmVnaW9u
OjpwYXJzZVNldHRpbmdWYWx1ZSwgaW52YWxpZCBTY3JvbGwiKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBOb25lOgorICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgVGV4dFRyYWNr
UmVnaW9uOjpwYXJzZVNldHRpbmcoY29uc3QgU3RyaW5nJiBpbnB1dCwgdW5zaWduZWQqIHBvc2l0
aW9uKQoreworICAgIFN0cmluZyBzZXR0aW5nID0gV2ViVlRUUGFyc2VyOjpjb2xsZWN0V29yZChp
bnB1dCwgcG9zaXRpb24pOworCisgICAgc2l6ZV90IGVxdWFsT2Zmc2V0ID0gc2V0dGluZy5maW5k
KCc9JywgMSk7CisgICAgaWYgKGVxdWFsT2Zmc2V0ID09IG5vdEZvdW5kIHx8ICFlcXVhbE9mZnNl
dCB8fCBlcXVhbE9mZnNldCA9PSBzZXR0aW5nLmxlbmd0aCgpIC0gMSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgUmVnaW9uU2V0dGluZyBuYW1lID0gZ2V0U2V0dGluZ0Zyb21TdHJpbmcoc2V0dGlu
Zy5zdWJzdHJpbmcoMCwgZXF1YWxPZmZzZXQpKTsKKyAgICBTdHJpbmcgdmFsdWUgPSBzZXR0aW5n
LnN1YnN0cmluZyhlcXVhbE9mZnNldCArIDEsIHNldHRpbmcubGVuZ3RoKCkgLSAxKTsKKworICAg
IHBhcnNlU2V0dGluZ1ZhbHVlKG5hbWUsIHZhbHVlKTsKK30KKyAgICAKK2NvbnN0IEF0b21pY1N0
cmluZyYgVGV4dFRyYWNrUmVnaW9uOjp0ZXh0VHJhY2tDdWVDb250YWluZXJTY3JvbGxpbmdDbGFz
cygpCit7CisgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0
cmluZywgdHJhY2tSZWdpb25DdWVDb250YWluZXJTY3JvbGxpbmdDbGFzcywgKCJzY3JvbGxpbmci
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisKKyAgICByZXR1cm4gdHJh
Y2tSZWdpb25DdWVDb250YWluZXJTY3JvbGxpbmdDbGFzczsKK30KKworY29uc3QgQXRvbWljU3Ry
aW5nJiBUZXh0VHJhY2tSZWdpb246OnRleHRUcmFja0N1ZUNvbnRhaW5lclNoYWRvd1BzZXVkb0lk
KCkKK3sKKyAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3Ry
aW5nLCB0cmFja1JlZ2lvbkN1ZUNvbnRhaW5lclBzZXVkb0lkLAorICAgICAgICAoIi13ZWJraXQt
bWVkaWEtdGV4dC10cmFjay1yZWdpb24tY29udGFpbmVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOworCisgICAgcmV0dXJuIHRyYWNrUmVnaW9uQ3VlQ29udGFpbmVyUHNl
dWRvSWQ7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgVGV4dFRyYWNrUmVnaW9uOjp0ZXh0VHJh
Y2tSZWdpb25TaGFkb3dQc2V1ZG9JZCgpCit7CisgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgdHJhY2tSZWdpb25TaGFkb3dQc2V1ZG9JZCwKKyAg
ICAgICAgKCItd2Via2l0LW1lZGlhLXRleHQtdHJhY2stcmVnaW9uIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworCisgICAgcmV0dXJuIHRyYWNrUmVnaW9uU2hhZG93UHNl
dWRvSWQ7Cit9CisKK3ZvaWQgVGV4dFRyYWNrUmVnaW9uOjphcHBlbmRUZXh0VHJhY2tDdWVCb3go
UGFzc1JlZlB0cjxWVFRDdWVCb3g+IGRpc3BsYXlCb3gpCit7CisgICAgQVNTRVJUKG1fY3VlQ29u
dGFpbmVyKTsKKworICAgIGlmIChtX2N1ZUNvbnRhaW5lci0+Y29udGFpbnMoZGlzcGxheUJveC5n
ZXQoKSkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY3VlQ29udGFpbmVyLT5hcHBlbmRDaGls
ZChkaXNwbGF5Qm94LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICBkaXNwbGF5TGFzdFRleHRU
cmFja0N1ZUJveCgpOworfQorCit2b2lkIFRleHRUcmFja1JlZ2lvbjo6ZGlzcGxheUxhc3RUZXh0
VHJhY2tDdWVCb3goKQoreworICAgIEFTU0VSVChtX2N1ZUNvbnRhaW5lcik7CisKKyAgICAvLyBU
aGUgY29udGFpbmVyIG5lZWRzIHRvIGJlIHJlbmRlcmVkLCBpZiBpdCBpcyBub3QgZW1wdHkgYW5k
IHRoZSByZWdpb24gaXMgbm90IGN1cnJlbnRseSBzY3JvbGxpbmcuCisgICAgaWYgKCFtX2N1ZUNv
bnRhaW5lci0+cmVuZGVyZXIoKSB8fCAhbV9jdWVDb250YWluZXItPmNoaWxkTm9kZUNvdW50KCkg
fHwgbV9zY3JvbGxUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBJ
ZiBpdCdzIGEgc2Nyb2xsaW5nIHJlZ2lvbiwgYWRkIHRoZSBzY3JvbGxpbmcgY2xhc3MuCisgICAg
aWYgKGlzU2Nyb2xsaW5nUmVnaW9uKCkpCisgICAgICAgIG1fY3VlQ29udGFpbmVyLT5jbGFzc0xp
c3QoKS0+YWRkKHRleHRUcmFja0N1ZUNvbnRhaW5lclNjcm9sbGluZ0NsYXNzKCksIElHTk9SRV9F
WENFUFRJT04pOworCisgICAgZmxvYXQgcmVnaW9uQm90dG9tID0gbV9yZWdpb25EaXNwbGF5VHJl
ZS0+Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCktPmJvdHRvbSgpOworCisgICAgLy8gRmluZCBmaXJz
dCBjdWUgdGhhdCBpcyBub3QgZW50aXJlbHkgZGlzcGxheWVkIGFuZCBzY3JvbGwgaXQgdXB3YXJk
cy4KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY3VlQ29udGFpbmVyLT5jaGlsZE5vZGVD
b3VudCgpICYmICFtX3Njcm9sbFRpbWVyLmlzQWN0aXZlKCk7ICsraSkgeworICAgICAgICBmbG9h
dCBjaGlsZFRvcCA9IHN0YXRpY19jYXN0PEhUTUxEaXZFbGVtZW50Kj4obV9jdWVDb250YWluZXIt
PmNoaWxkTm9kZShpKSktPmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLT50b3AoKTsKKyAgICAgICAg
ZmxvYXQgY2hpbGRCb3R0b20gPSBzdGF0aWNfY2FzdDxIVE1MRGl2RWxlbWVudCo+KG1fY3VlQ29u
dGFpbmVyLT5jaGlsZE5vZGUoaSkpLT5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS0+Ym90dG9tKCk7
CisKKyAgICAgICAgaWYgKHJlZ2lvbkJvdHRvbSA+PSBjaGlsZEJvdHRvbSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIGZsb2F0IGhlaWdodCA9IGNoaWxkQm90dG9tIC0gY2hpbGRU
b3A7CisKKyAgICAgICAgbV9jdXJyZW50VG9wIC09IHN0ZDo6bWluKGhlaWdodCwgY2hpbGRCb3R0
b20gLSByZWdpb25Cb3R0b20pOworICAgICAgICBtX2N1ZUNvbnRhaW5lci0+c2V0SW5saW5lU3R5
bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRvcCwgbV9jdXJyZW50VG9wLCBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1BYKTsKKworICAgICAgICBzdGFydFRpbWVyKCk7CisgICAgfQorfQorCit2b2lkIFRl
eHRUcmFja1JlZ2lvbjo6d2lsbFJlbW92ZVRleHRUcmFja0N1ZUJveChWVFRDdWVCb3gqIGJveCkK
K3sKKyAgICBMT0coTWVkaWEsICJUZXh0VHJhY2tSZWdpb246OndpbGxSZW1vdmVUZXh0VHJhY2tD
dWVCb3giKTsKKyAgICBBU1NFUlQobV9jdWVDb250YWluZXItPmNvbnRhaW5zKGJveCkpOworCisg
ICAgZG91YmxlIGJveEhlaWdodCA9IGJveC0+Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCktPmJvdHRv
bSgpIC0gYm94LT5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS0+dG9wKCk7CisKKyAgICBtX2N1ZUNv
bnRhaW5lci0+Y2xhc3NMaXN0KCktPnJlbW92ZSh0ZXh0VHJhY2tDdWVDb250YWluZXJTY3JvbGxp
bmdDbGFzcygpLCBJR05PUkVfRVhDRVBUSU9OKTsKKworICAgIG1fY3VycmVudFRvcCArPSBib3hI
ZWlnaHQ7CisgICAgbV9jdWVDb250YWluZXItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJv
cGVydHlUb3AsIG1fY3VycmVudFRvcCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7Cit9CisK
K1Bhc3NSZWZQdHI8SFRNTERpdkVsZW1lbnQ+IFRleHRUcmFja1JlZ2lvbjo6Z2V0RGlzcGxheVRy
ZWUoKQoreworICAgIGlmICghbV9yZWdpb25EaXNwbGF5VHJlZSkgeworICAgICAgICBtX3JlZ2lv
bkRpc3BsYXlUcmVlID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZSgqb3duZXJEb2N1bWVudCgpKTsK
KyAgICAgICAgcHJlcGFyZVJlZ2lvbkRpc3BsYXlUcmVlKCk7CisgICAgfQorCisgICAgcmV0dXJu
IG1fcmVnaW9uRGlzcGxheVRyZWU7Cit9CisKK3ZvaWQgVGV4dFRyYWNrUmVnaW9uOjpwcmVwYXJl
UmVnaW9uRGlzcGxheVRyZWUoKQoreworICAgIEFTU0VSVChtX3JlZ2lvbkRpc3BsYXlUcmVlKTsK
KworICAgIC8vIDcuMiBQcmVwYXJlIHJlZ2lvbiBDU1MgYm94ZXMKKworICAgIC8vIEZJWE1FOiBD
aGFuZ2UgdGhlIGNvZGUgYmVsb3cgdG8gdXNlIHZpZXdwb3J0IHVuaXRzIHdoZW4KKyAgICAvLyBo
dHRwOi8vY3JidWcvMjQ0NjE4IGlzIGZpeGVkLgorCisgICAgLy8gTGV0IHJlZ2lvbldpZHRoIGJl
IHRoZSB0ZXh0IHRyYWNrIHJlZ2lvbiB3aWR0aC4KKyAgICAvLyBMZXQgd2lkdGggYmUgJ3JlZ2lv
bldpZHRoIHZ3JyAoJ3Z3JyBpcyBhIENTUyB1bml0KQorICAgIG1fcmVnaW9uRGlzcGxheVRyZWUt
PnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXaWR0aCwgbV93aWR0aCwgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKTsKKworICAgIC8vIExldCBsaW5lSGVpZ2h0IGJl
ICcwLjA1MzN2aCcgKCd2aCcgaXMgYSBDU1MgdW5pdCkgYW5kIHJlZ2lvbkhlaWdodCBiZQorICAg
IC8vIHRoZSB0ZXh0IHRyYWNrIHJlZ2lvbiBoZWlnaHQuIExldCBoZWlnaHQgYmUgJ2xpbmVIZWln
aHQnIG11bHRpcGxpZWQKKyAgICAvLyBieSByZWdpb25IZWlnaHQuCisgICAgZG91YmxlIGhlaWdo
dCA9IGxpbmVIZWlnaHQgKiBtX2hlaWdodEluTGluZXM7CisgICAgbV9yZWdpb25EaXNwbGF5VHJl
ZS0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCwgaGVpZ2h0LCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1ZIKTsKKworICAgIC8vIExldCB2aWV3cG9ydEFuY2hvclggYmUg
dGhlIHggZGltZW5zaW9uIG9mIHRoZSB0ZXh0IHRyYWNrIHJlZ2lvbiB2aWV3cG9ydAorICAgIC8v
IGFuY2hvciBhbmQgcmVnaW9uQW5jaG9yWCBiZSB0aGUgeCBkaW1lbnNpb24gb2YgdGhlIHRleHQg
dHJhY2sgcmVnaW9uCisgICAgLy8gYW5jaG9yLiBMZXQgbGVmdE9mZnNldCBiZSByZWdpb25BbmNo
b3JYIG11bHRpcGxpZWQgYnkgd2lkdGggZGl2aWRlZCBieQorICAgIC8vIDEwMC4wLiBMZXQgbGVm
dCBiZSBsZWZ0T2Zmc2V0IHN1YnRyYWN0ZWQgZnJvbSAndmlld3BvcnRBbmNob3JYIHZ3Jy4KKyAg
ICBkb3VibGUgbGVmdE9mZnNldCA9IG1fcmVnaW9uQW5jaG9yLngoKSAqIG1fd2lkdGggLyAxMDA7
CisgICAgbV9yZWdpb25EaXNwbGF5VHJlZS0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUxlZnQsIG1fdmlld3BvcnRBbmNob3IueCgpIC0gbGVmdE9mZnNldCwgQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19QRVJDRU5UQUdFKTsKKworICAgIC8vIExldCB2aWV3cG9ydEFuY2hvclkgYmUg
dGhlIHkgZGltZW5zaW9uIG9mIHRoZSB0ZXh0IHRyYWNrIHJlZ2lvbiB2aWV3cG9ydAorICAgIC8v
IGFuY2hvciBhbmQgcmVnaW9uQW5jaG9yWSBiZSB0aGUgeSBkaW1lbnNpb24gb2YgdGhlIHRleHQg
dHJhY2sgcmVnaW9uCisgICAgLy8gYW5jaG9yLiBMZXQgdG9wT2Zmc2V0IGJlIHJlZ2lvbkFuY2hv
clkgbXVsdGlwbGllZCBieSBoZWlnaHQgZGl2aWRlZCBieQorICAgIC8vIDEwMC4wLiBMZXQgdG9w
IGJlIHRvcE9mZnNldCBzdWJ0cmFjdGVkIGZyb20gJ3ZpZXdwb3J0QW5jaG9yWSB2aCcuCisgICAg
ZG91YmxlIHRvcE9mZnNldCA9IG1fcmVnaW9uQW5jaG9yLnkoKSAqIGhlaWdodCAvIDEwMDsKKyAg
ICBtX3JlZ2lvbkRpc3BsYXlUcmVlLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5
VG9wLCBtX3ZpZXdwb3J0QW5jaG9yLnkoKSAtIHRvcE9mZnNldCwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19QRVJDRU5UQUdFKTsKKworICAgIC8vIFRoZSBjdWUgY29udGFpbmVyIGlzIHVzZWQgdG8g
d3JhcCB0aGUgY3VlcyBhbmQgaXQgaXMgdGhlIG9iamVjdCB3aGljaCBpcworICAgIC8vIGdyYWR1
YWxseSBzY3JvbGxlZCBvdXQgYXMgbXVsdGlwbGUgY3VlcyBhcmUgYXBwZW5kZWQgdG8gdGhlIHJl
Z2lvbi4KKyAgICBtX2N1ZUNvbnRhaW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoKm93bmVy
RG9jdW1lbnQoKSk7CisgICAgbV9jdWVDb250YWluZXItPnNldElubGluZVN0eWxlUHJvcGVydHko
Q1NTUHJvcGVydHlUb3AsIDAuMGYsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworCisgICAg
bV9jdWVDb250YWluZXItPnNldFBzZXVkbyh0ZXh0VHJhY2tDdWVDb250YWluZXJTaGFkb3dQc2V1
ZG9JZCgpKTsKKyAgICBtX3JlZ2lvbkRpc3BsYXlUcmVlLT5hcHBlbmRDaGlsZChtX2N1ZUNvbnRh
aW5lcik7CisKKyAgICAvLyA3LjUgRXZlcnkgV2ViVlRUIHJlZ2lvbiBvYmplY3QgaXMgaW5pdGlh
bGlzZWQgd2l0aCB0aGUgZm9sbG93aW5nIENTUworICAgIG1fcmVnaW9uRGlzcGxheVRyZWUtPnNl
dFBzZXVkbyh0ZXh0VHJhY2tSZWdpb25TaGFkb3dQc2V1ZG9JZCgpKTsKK30KKwordm9pZCBUZXh0
VHJhY2tSZWdpb246OnN0YXJ0VGltZXIoKQoreworICAgIExPRyhNZWRpYSwgIlRleHRUcmFja1Jl
Z2lvbjo6c3RhcnRUaW1lciIpOworCisgICAgaWYgKG1fc2Nyb2xsVGltZXIuaXNBY3RpdmUoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgZG91YmxlIGR1cmF0aW9uID0gaXNTY3JvbGxpbmdSZWdp
b24oKSA/IHNjcm9sbFRpbWUgOiAwOworICAgIG1fc2Nyb2xsVGltZXIuc3RhcnRPbmVTaG90KGR1
cmF0aW9uKTsKK30KKwordm9pZCBUZXh0VHJhY2tSZWdpb246OnN0b3BUaW1lcigpCit7CisgICAg
TE9HKE1lZGlhLCAiVGV4dFRyYWNrUmVnaW9uOjpzdG9wVGltZXIiKTsKKworICAgIGlmIChtX3Nj
cm9sbFRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fc2Nyb2xsVGltZXIuc3RvcCgpOworfQor
Cit2b2lkIFRleHRUcmFja1JlZ2lvbjo6c2Nyb2xsVGltZXJGaXJlZChUaW1lcjxUZXh0VHJhY2tS
ZWdpb24+KikKK3sKKyAgICBMT0coTWVkaWEsICJUZXh0VHJhY2tSZWdpb246OnNjcm9sbFRpbWVy
RmlyZWQiKTsKKworICAgIHN0b3BUaW1lcigpOworICAgIGRpc3BsYXlMYXN0VGV4dFRyYWNrQ3Vl
Qm94KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb24uY3BwCSh3b3JraW5nIGNvcHkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDExICszMCwxMCBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWVFRS
ZWdpb24uaCIKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxFKFdFQlZUVF9SRUdJ
T05TKQogCi0jaW5jbHVkZSAiVGV4dFRyYWNrUmVnaW9uLmgiCi0KICNpbmNsdWRlICJDbGllbnRS
ZWN0LmgiCiAjaW5jbHVkZSAiRE9NVG9rZW5MaXN0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29k
ZVBsYWNlaG9sZGVyLmgiCkBAIC02OSw3ICs2OCw3IEBAIHN0YXRpYyBjb25zdCBmbG9hdCBsaW5l
SGVpZ2h0ID0gNS4zMzsKIC8vIERlZmF1bHQgc2Nyb2xsaW5nIGFuaW1hdGlvbiB0aW1lIHBlcmlv
ZCAocykuCiBzdGF0aWMgY29uc3QgZmxvYXQgc2Nyb2xsVGltZSA9IDAuNDMzOwogCi1UZXh0VHJh
Y2tSZWdpb246OlRleHRUcmFja1JlZ2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KQorVlRUUmVnaW9uOjpWVFRSZWdpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkK
ICAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKCZjb250ZXh0KQogICAgICwgbV9pZChl
bXB0eVN0cmluZygpKQogICAgICwgbV93aWR0aChkZWZhdWx0V2lkdGgpCkBAIC04MSwyNSArODAs
MjUgQEAgVGV4dFRyYWNrUmVnaW9uOjpUZXh0VHJhY2tSZWdpb24oU2NyaXB0RQogICAgICwgbV9y
ZWdpb25EaXNwbGF5VHJlZShudWxscHRyKQogICAgICwgbV90cmFjayhudWxscHRyKQogICAgICwg
bV9jdXJyZW50VG9wKDApCi0gICAgLCBtX3Njcm9sbFRpbWVyKHRoaXMsICZUZXh0VHJhY2tSZWdp
b246OnNjcm9sbFRpbWVyRmlyZWQpCisgICAgLCBtX3Njcm9sbFRpbWVyKHRoaXMsICZWVFRSZWdp
b246OnNjcm9sbFRpbWVyRmlyZWQpCiB7CiB9CiAKLVRleHRUcmFja1JlZ2lvbjo6flRleHRUcmFj
a1JlZ2lvbigpCitWVFRSZWdpb246On5WVFRSZWdpb24oKQogewogfQogCi12b2lkIFRleHRUcmFj
a1JlZ2lvbjo6c2V0VHJhY2soVGV4dFRyYWNrKiB0cmFjaykKK3ZvaWQgVlRUUmVnaW9uOjpzZXRU
cmFjayhUZXh0VHJhY2sqIHRyYWNrKQogewogICAgIG1fdHJhY2sgPSB0cmFjazsKIH0KIAotdm9p
ZCBUZXh0VHJhY2tSZWdpb246OnNldElkKGNvbnN0IFN0cmluZyYgaWQpCit2b2lkIFZUVFJlZ2lv
bjo6c2V0SWQoY29uc3QgU3RyaW5nJiBpZCkKIHsKICAgICBtX2lkID0gaWQ7CiB9CiAKLXZvaWQg
VGV4dFRyYWNrUmVnaW9uOjpzZXRXaWR0aChkb3VibGUgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVj
KQordm9pZCBWVFRSZWdpb246OnNldFdpZHRoKGRvdWJsZSB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CiAgICAgaWYgKHN0ZDo6aXNpbmYodmFsdWUpIHx8IHN0ZDo6aXNuYW4odmFsdWUpKSB7
CiAgICAgICAgIGVjID0gVHlwZUVycm9yOwpAQCAtMTE0LDcgKzExMyw3IEBAIHZvaWQgVGV4dFRy
YWNrUmVnaW9uOjpzZXRXaWR0aChkb3VibGUgdmEKICAgICBtX3dpZHRoID0gdmFsdWU7CiB9CiAK
LXZvaWQgVGV4dFRyYWNrUmVnaW9uOjpzZXRIZWlnaHQobG9uZyB2YWx1ZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCit2b2lkIFZUVFJlZ2lvbjo6c2V0SGVpZ2h0KGxvbmcgdmFsdWUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogewogICAgIGlmICh2YWx1ZSA8IDApIHsKICAgICAgICAgZWMgPSBJTkRFWF9TSVpF
X0VSUjsKQEAgLTEyNCw3ICsxMjMsNyBAQCB2b2lkIFRleHRUcmFja1JlZ2lvbjo6c2V0SGVpZ2h0
KGxvbmcgdmFsCiAgICAgbV9oZWlnaHRJbkxpbmVzID0gdmFsdWU7CiB9CiAKLXZvaWQgVGV4dFRy
YWNrUmVnaW9uOjpzZXRSZWdpb25BbmNob3JYKGRvdWJsZSB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCit2b2lkIFZUVFJlZ2lvbjo6c2V0UmVnaW9uQW5jaG9yWChkb3VibGUgdmFsdWUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIGlmIChzdGQ6OmlzaW5mKHZhbHVlKSB8fCBzdGQ6OmlzbmFu
KHZhbHVlKSkgewogICAgICAgICBlYyA9IFR5cGVFcnJvcjsKQEAgLTEzOSw3ICsxMzgsNyBAQCB2
b2lkIFRleHRUcmFja1JlZ2lvbjo6c2V0UmVnaW9uQW5jaG9yWChkCiAgICAgbV9yZWdpb25BbmNo
b3Iuc2V0WCh2YWx1ZSk7CiB9CiAKLXZvaWQgVGV4dFRyYWNrUmVnaW9uOjpzZXRSZWdpb25BbmNo
b3JZKGRvdWJsZSB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIFZUVFJlZ2lvbjo6c2V0
UmVnaW9uQW5jaG9yWShkb3VibGUgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlm
IChzdGQ6OmlzaW5mKHZhbHVlKSB8fCBzdGQ6OmlzbmFuKHZhbHVlKSkgewogICAgICAgICBlYyA9
IFR5cGVFcnJvcjsKQEAgLTE1NCw3ICsxNTMsNyBAQCB2b2lkIFRleHRUcmFja1JlZ2lvbjo6c2V0
UmVnaW9uQW5jaG9yWShkCiAgICAgbV9yZWdpb25BbmNob3Iuc2V0WSh2YWx1ZSk7CiB9CiAKLXZv
aWQgVGV4dFRyYWNrUmVnaW9uOjpzZXRWaWV3cG9ydEFuY2hvclgoZG91YmxlIHZhbHVlLCBFeGNl
cHRpb25Db2RlJiBlYykKK3ZvaWQgVlRUUmVnaW9uOjpzZXRWaWV3cG9ydEFuY2hvclgoZG91Ymxl
IHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoc3RkOjppc2luZih2YWx1ZSkg
fHwgc3RkOjppc25hbih2YWx1ZSkpIHsKICAgICAgICAgZWMgPSBUeXBlRXJyb3I7CkBAIC0xNjks
NyArMTY4LDcgQEAgdm9pZCBUZXh0VHJhY2tSZWdpb246OnNldFZpZXdwb3J0QW5jaG9yWAogICAg
IG1fdmlld3BvcnRBbmNob3Iuc2V0WCh2YWx1ZSk7CiB9CiAKLXZvaWQgVGV4dFRyYWNrUmVnaW9u
OjpzZXRWaWV3cG9ydEFuY2hvclkoZG91YmxlIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKK3Zv
aWQgVlRUUmVnaW9uOjpzZXRWaWV3cG9ydEFuY2hvclkoZG91YmxlIHZhbHVlLCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKICAgICBpZiAoc3RkOjppc2luZih2YWx1ZSkgfHwgc3RkOjppc25hbih2YWx1
ZSkpIHsKICAgICAgICAgZWMgPSBUeXBlRXJyb3I7CkBAIC0xODQsNyArMTgzLDcgQEAgdm9pZCBU
ZXh0VHJhY2tSZWdpb246OnNldFZpZXdwb3J0QW5jaG9yWQogICAgIG1fdmlld3BvcnRBbmNob3Iu
c2V0WSh2YWx1ZSk7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyBUZXh0VHJhY2tSZWdpb246OnNj
cm9sbCgpIGNvbnN0Citjb25zdCBBdG9taWNTdHJpbmcgVlRUUmVnaW9uOjpzY3JvbGwoKSBjb25z
dAogewogICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJp
bmcsIHVwU2Nyb2xsVmFsdWVLZXl3b3JkLCAoInVwIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOwogCkBAIC0xOTQsNyArMTkzLDcgQEAgY29uc3QgQXRvbWljU3RyaW5nIFRl
eHRUcmFja1JlZ2lvbjo6c2NybwogICAgIHJldHVybiAiIjsKIH0KIAotdm9pZCBUZXh0VHJhY2tS
ZWdpb246OnNldFNjcm9sbChjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2Rl
JiBlYykKK3ZvaWQgVlRUUmVnaW9uOjpzZXRTY3JvbGwoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKGNvbnN0IEF0b21pY1N0cmluZywgdXBTY3JvbGxWYWx1ZUtleXdvcmQsICgidXAiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAKQEAgLTIwNiw3ICsyMDUsNyBAQCB2
b2lkIFRleHRUcmFja1JlZ2lvbjo6c2V0U2Nyb2xsKGNvbnN0IEF0CiAgICAgbV9zY3JvbGwgPSB2
YWx1ZSA9PSB1cFNjcm9sbFZhbHVlS2V5d29yZDsKIH0KIAotdm9pZCBUZXh0VHJhY2tSZWdpb246
OnVwZGF0ZVBhcmFtZXRlcnNGcm9tUmVnaW9uKFRleHRUcmFja1JlZ2lvbiogcmVnaW9uKQordm9p
ZCBWVFRSZWdpb246OnVwZGF0ZVBhcmFtZXRlcnNGcm9tUmVnaW9uKFZUVFJlZ2lvbiogcmVnaW9u
KQogewogICAgIG1faGVpZ2h0SW5MaW5lcyA9IHJlZ2lvbi0+aGVpZ2h0KCk7CiAgICAgbV93aWR0
aCA9IHJlZ2lvbi0+d2lkdGgoKTsKQEAgLTIxNyw3ICsyMTYsNyBAQCB2b2lkIFRleHRUcmFja1Jl
Z2lvbjo6dXBkYXRlUGFyYW1ldGVyc0ZyCiAgICAgc2V0U2Nyb2xsKHJlZ2lvbi0+c2Nyb2xsKCks
IEFTU0VSVF9OT19FWENFUFRJT04pOwogfQogCi12b2lkIFRleHRUcmFja1JlZ2lvbjo6c2V0UmVn
aW9uU2V0dGluZ3MoY29uc3QgU3RyaW5nJiBpbnB1dCkKK3ZvaWQgVlRUUmVnaW9uOjpzZXRSZWdp
b25TZXR0aW5ncyhjb25zdCBTdHJpbmcmIGlucHV0KQogewogICAgIG1fc2V0dGluZ3MgPSBpbnB1
dDsKICAgICB1bnNpZ25lZCBwb3NpdGlvbiA9IDA7CkBAIC0yMzMsNyArMjMyLDcgQEAgdm9pZCBU
ZXh0VHJhY2tSZWdpb246OnNldFJlZ2lvblNldHRpbmdzKAogICAgIH0KIH0KIAotVGV4dFRyYWNr
UmVnaW9uOjpSZWdpb25TZXR0aW5nIFRleHRUcmFja1JlZ2lvbjo6Z2V0U2V0dGluZ0Zyb21TdHJp
bmcoY29uc3QgU3RyaW5nJiBzZXR0aW5nKQorVlRUUmVnaW9uOjpSZWdpb25TZXR0aW5nIFZUVFJl
Z2lvbjo6Z2V0U2V0dGluZ0Zyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzZXR0aW5nKQogewogICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGlkS2V5
d29yZCwgKCJpZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBoZWlnaHRL
ZXl3b3JkLCAoImhlaWdodCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
QEAgLTI1OCw3ICsyNTcsNyBAQCBUZXh0VHJhY2tSZWdpb246OlJlZ2lvblNldHRpbmcgVGV4dFRy
YWNrCiAgICAgcmV0dXJuIE5vbmU7CiB9CiAKLXZvaWQgVGV4dFRyYWNrUmVnaW9uOjpwYXJzZVNl
dHRpbmdWYWx1ZShSZWdpb25TZXR0aW5nIHNldHRpbmcsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit2
b2lkIFZUVFJlZ2lvbjo6cGFyc2VTZXR0aW5nVmFsdWUoUmVnaW9uU2V0dGluZyBzZXR0aW5nLCBj
b25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBBdG9taWNTdHJpbmcsIHNjcm9sbFVwVmFsdWVLZXl3b3JkLCAoInVwIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogCkBAIC0yNzIsMzggKzI3MSwzOCBAQCB2
b2lkIFRleHRUcmFja1JlZ2lvbjo6cGFyc2VTZXR0aW5nVmFsdWUoCiAgICAgICAgIGlmIChXZWJW
VFRQYXJzZXI6OnBhcnNlRmxvYXRQZXJjZW50YWdlVmFsdWUodmFsdWUsIGZsb2F0V2lkdGgpKQog
ICAgICAgICAgICAgbV93aWR0aCA9IGZsb2F0V2lkdGg7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIExPRyhNZWRpYSwgIlRleHRUcmFja1JlZ2lvbjo6cGFyc2VTZXR0aW5nVmFsdWUsIGludmFs
aWQgV2lkdGgiKTsKKyAgICAgICAgICAgIExPRyhNZWRpYSwgIlZUVFJlZ2lvbjo6cGFyc2VTZXR0
aW5nVmFsdWUsIGludmFsaWQgV2lkdGgiKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNh
c2UgSGVpZ2h0OiB7CiAgICAgICAgIHVuc2lnbmVkIHBvc2l0aW9uID0gMDsKICAgICAgICAgaW50
IG51bWJlcjsKLSAgICAgICAgaWYgKFdlYlZUVFBhcnNlcjo6Y29sbGVjdERpZ2l0c1RvSW50KHZh
bHVlLCAmcG9zaXRpb24sIG51bWJlcikgJiYgcG9zaXRpb24gPT0gdmFsdWUubGVuZ3RoKCkpCisg
ICAgICAgIGlmIChXZWJWVFRQYXJzZXI6OmNvbGxlY3REaWdpdHNUb0ludCh2YWx1ZSwgcG9zaXRp
b24sIG51bWJlcikgJiYgcG9zaXRpb24gPT0gdmFsdWUubGVuZ3RoKCkpCiAgICAgICAgICAgICBt
X2hlaWdodEluTGluZXMgPSBudW1iZXI7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIExPRyhN
ZWRpYSwgIlRleHRUcmFja1JlZ2lvbjo6cGFyc2VTZXR0aW5nVmFsdWUsIGludmFsaWQgSGVpZ2h0
Iik7CisgICAgICAgICAgICBMT0coTWVkaWEsICJWVFRSZWdpb246OnBhcnNlU2V0dGluZ1ZhbHVl
LCBpbnZhbGlkIEhlaWdodCIpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBSZWdp
b25BbmNob3I6CiAgICAgICAgIGlmICghV2ViVlRUUGFyc2VyOjpwYXJzZUZsb2F0UGVyY2VudGFn
ZVZhbHVlUGFpcih2YWx1ZSwgJywnLCBtX3JlZ2lvbkFuY2hvcikpCi0gICAgICAgICAgICBMT0co
TWVkaWEsICJUZXh0VHJhY2tSZWdpb246OnBhcnNlU2V0dGluZ1ZhbHVlLCBpbnZhbGlkIFJlZ2lv
bkFuY2hvciIpOworICAgICAgICAgICAgTE9HKE1lZGlhLCAiVlRUUmVnaW9uOjpwYXJzZVNldHRp
bmdWYWx1ZSwgaW52YWxpZCBSZWdpb25BbmNob3IiKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBWaWV3cG9ydEFuY2hvcjoKICAgICAgICAgaWYgKCFXZWJWVFRQYXJzZXI6OnBhcnNlRmxvYXRQ
ZXJjZW50YWdlVmFsdWVQYWlyKHZhbHVlLCAnLCcsIG1fdmlld3BvcnRBbmNob3IpKQotICAgICAg
ICAgICAgTE9HKE1lZGlhLCAiVGV4dFRyYWNrUmVnaW9uOjpwYXJzZVNldHRpbmdWYWx1ZSwgaW52
YWxpZCBWaWV3cG9ydEFuY2hvciIpOworICAgICAgICAgICAgTE9HKE1lZGlhLCAiVlRUUmVnaW9u
OjpwYXJzZVNldHRpbmdWYWx1ZSwgaW52YWxpZCBWaWV3cG9ydEFuY2hvciIpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIFNjcm9sbDoKICAgICAgICAgaWYgKHZhbHVlID09IHNjcm9sbFVwVmFs
dWVLZXl3b3JkKQogICAgICAgICAgICAgbV9zY3JvbGwgPSB0cnVlOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBMT0coTWVkaWEsICJUZXh0VHJhY2tSZWdpb246OnBhcnNlU2V0dGluZ1ZhbHVl
LCBpbnZhbGlkIFNjcm9sbCIpOworICAgICAgICAgICAgTE9HKE1lZGlhLCAiVlRUUmVnaW9uOjpw
YXJzZVNldHRpbmdWYWx1ZSwgaW52YWxpZCBTY3JvbGwiKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBOb25lOgogICAgICAgICBicmVhazsKICAgICB9CiB9CiAKLXZvaWQgVGV4dFRyYWNrUmVn
aW9uOjpwYXJzZVNldHRpbmcoY29uc3QgU3RyaW5nJiBpbnB1dCwgdW5zaWduZWQqIHBvc2l0aW9u
KQordm9pZCBWVFRSZWdpb246OnBhcnNlU2V0dGluZyhjb25zdCBTdHJpbmcmIGlucHV0LCB1bnNp
Z25lZCogcG9zaXRpb24pCiB7CiAgICAgU3RyaW5nIHNldHRpbmcgPSBXZWJWVFRQYXJzZXI6OmNv
bGxlY3RXb3JkKGlucHV0LCBwb3NpdGlvbik7CiAKQEAgLTMxNywxNCArMzE2LDE0IEBAIHZvaWQg
VGV4dFRyYWNrUmVnaW9uOjpwYXJzZVNldHRpbmcoY29uc3QKICAgICBwYXJzZVNldHRpbmdWYWx1
ZShuYW1lLCB2YWx1ZSk7CiB9CiAgICAgCi1jb25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFja1Jl
Z2lvbjo6dGV4dFRyYWNrQ3VlQ29udGFpbmVyU2Nyb2xsaW5nQ2xhc3MoKQorY29uc3QgQXRvbWlj
U3RyaW5nJiBWVFRSZWdpb246OnRleHRUcmFja0N1ZUNvbnRhaW5lclNjcm9sbGluZ0NsYXNzKCkK
IHsKICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5n
LCB0cmFja1JlZ2lvbkN1ZUNvbnRhaW5lclNjcm9sbGluZ0NsYXNzLCAoInNjcm9sbGluZyIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKIAogICAgIHJldHVybiB0cmFja1Jl
Z2lvbkN1ZUNvbnRhaW5lclNjcm9sbGluZ0NsYXNzOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcm
IFRleHRUcmFja1JlZ2lvbjo6dGV4dFRyYWNrQ3VlQ29udGFpbmVyU2hhZG93UHNldWRvSWQoKQor
Y29uc3QgQXRvbWljU3RyaW5nJiBWVFRSZWdpb246OnRleHRUcmFja0N1ZUNvbnRhaW5lclNoYWRv
d1BzZXVkb0lkKCkKIHsKICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3Qg
QXRvbWljU3RyaW5nLCB0cmFja1JlZ2lvbkN1ZUNvbnRhaW5lclBzZXVkb0lkLAogICAgICAgICAo
Ii13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1yZWdpb24tY29udGFpbmVyIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwpAQCAtMzMyLDcgKzMzMSw3IEBAIGNvbnN0IEF0b21p
Y1N0cmluZyYgVGV4dFRyYWNrUmVnaW9uOjp0ZXgKICAgICByZXR1cm4gdHJhY2tSZWdpb25DdWVD
b250YWluZXJQc2V1ZG9JZDsKIH0KIAotY29uc3QgQXRvbWljU3RyaW5nJiBUZXh0VHJhY2tSZWdp
b246OnRleHRUcmFja1JlZ2lvblNoYWRvd1BzZXVkb0lkKCkKK2NvbnN0IEF0b21pY1N0cmluZyYg
VlRUUmVnaW9uOjp0ZXh0VHJhY2tSZWdpb25TaGFkb3dQc2V1ZG9JZCgpCiB7CiAgICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgdHJhY2tSZWdpb25T
aGFkb3dQc2V1ZG9JZCwKICAgICAgICAgKCItd2Via2l0LW1lZGlhLXRleHQtdHJhY2stcmVnaW9u
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwpAQCAtMzQwLDcgKzMzOSw3
IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgVGV4dFRyYWNrUmVnaW9uOjp0ZXgKICAgICByZXR1cm4g
dHJhY2tSZWdpb25TaGFkb3dQc2V1ZG9JZDsKIH0KIAotdm9pZCBUZXh0VHJhY2tSZWdpb246OmFw
cGVuZFRleHRUcmFja0N1ZUJveChQYXNzUmVmUHRyPFZUVEN1ZUJveD4gZGlzcGxheUJveCkKK3Zv
aWQgVlRUUmVnaW9uOjphcHBlbmRUZXh0VHJhY2tDdWVCb3goUGFzc1JlZlB0cjxWVFRDdWVCb3g+
IGRpc3BsYXlCb3gpCiB7CiAgICAgQVNTRVJUKG1fY3VlQ29udGFpbmVyKTsKIApAQCAtMzUxLDcg
KzM1MCw3IEBAIHZvaWQgVGV4dFRyYWNrUmVnaW9uOjphcHBlbmRUZXh0VHJhY2tDdWUKICAgICBk
aXNwbGF5TGFzdFRleHRUcmFja0N1ZUJveCgpOwogfQogCi12b2lkIFRleHRUcmFja1JlZ2lvbjo6
ZGlzcGxheUxhc3RUZXh0VHJhY2tDdWVCb3goKQordm9pZCBWVFRSZWdpb246OmRpc3BsYXlMYXN0
VGV4dFRyYWNrQ3VlQm94KCkKIHsKICAgICBBU1NFUlQobV9jdWVDb250YWluZXIpOwogCkBAIC0z
ODIsOSArMzgxLDkgQEAgdm9pZCBUZXh0VHJhY2tSZWdpb246OmRpc3BsYXlMYXN0VGV4dFRyYQog
ICAgIH0KIH0KIAotdm9pZCBUZXh0VHJhY2tSZWdpb246OndpbGxSZW1vdmVUZXh0VHJhY2tDdWVC
b3goVlRUQ3VlQm94KiBib3gpCit2b2lkIFZUVFJlZ2lvbjo6d2lsbFJlbW92ZVRleHRUcmFja0N1
ZUJveChWVFRDdWVCb3gqIGJveCkKIHsKLSAgICBMT0coTWVkaWEsICJUZXh0VHJhY2tSZWdpb246
OndpbGxSZW1vdmVUZXh0VHJhY2tDdWVCb3giKTsKKyAgICBMT0coTWVkaWEsICJWVFRSZWdpb246
OndpbGxSZW1vdmVUZXh0VHJhY2tDdWVCb3giKTsKICAgICBBU1NFUlQobV9jdWVDb250YWluZXIt
PmNvbnRhaW5zKGJveCkpOwogCiAgICAgZG91YmxlIGJveEhlaWdodCA9IGJveC0+Z2V0Qm91bmRp
bmdDbGllbnRSZWN0KCktPmJvdHRvbSgpIC0gYm94LT5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS0+
dG9wKCk7CkBAIC0zOTUsNyArMzk0LDcgQEAgdm9pZCBUZXh0VHJhY2tSZWdpb246OndpbGxSZW1v
dmVUZXh0VHJhYwogICAgIG1fY3VlQ29udGFpbmVyLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENT
U1Byb3BlcnR5VG9wLCBtX2N1cnJlbnRUb3AsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOwog
fQogCi1QYXNzUmVmUHRyPEhUTUxEaXZFbGVtZW50PiBUZXh0VHJhY2tSZWdpb246OmdldERpc3Bs
YXlUcmVlKCkKK1Bhc3NSZWZQdHI8SFRNTERpdkVsZW1lbnQ+IFZUVFJlZ2lvbjo6Z2V0RGlzcGxh
eVRyZWUoKQogewogICAgIGlmICghbV9yZWdpb25EaXNwbGF5VHJlZSkgewogICAgICAgICBtX3Jl
Z2lvbkRpc3BsYXlUcmVlID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZSgqb3duZXJEb2N1bWVudCgp
KTsKQEAgLTQwNSw3ICs0MDQsNyBAQCBQYXNzUmVmUHRyPEhUTUxEaXZFbGVtZW50PiBUZXh0VHJh
Y2tSZWdpCiAgICAgcmV0dXJuIG1fcmVnaW9uRGlzcGxheVRyZWU7CiB9CiAKLXZvaWQgVGV4dFRy
YWNrUmVnaW9uOjpwcmVwYXJlUmVnaW9uRGlzcGxheVRyZWUoKQordm9pZCBWVFRSZWdpb246OnBy
ZXBhcmVSZWdpb25EaXNwbGF5VHJlZSgpCiB7CiAgICAgQVNTRVJUKG1fcmVnaW9uRGlzcGxheVRy
ZWUpOwogCkBAIC00NTAsOSArNDQ5LDkgQEAgdm9pZCBUZXh0VHJhY2tSZWdpb246OnByZXBhcmVS
ZWdpb25EaXNwbAogICAgIG1fcmVnaW9uRGlzcGxheVRyZWUtPnNldFBzZXVkbyh0ZXh0VHJhY2tS
ZWdpb25TaGFkb3dQc2V1ZG9JZCgpKTsKIH0KIAotdm9pZCBUZXh0VHJhY2tSZWdpb246OnN0YXJ0
VGltZXIoKQordm9pZCBWVFRSZWdpb246OnN0YXJ0VGltZXIoKQogewotICAgIExPRyhNZWRpYSwg
IlRleHRUcmFja1JlZ2lvbjo6c3RhcnRUaW1lciIpOworICAgIExPRyhNZWRpYSwgIlZUVFJlZ2lv
bjo6c3RhcnRUaW1lciIpOwogCiAgICAgaWYgKG1fc2Nyb2xsVGltZXIuaXNBY3RpdmUoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtNDYxLDE3ICs0NjAsMTcgQEAgdm9pZCBUZXh0VHJhY2tSZWdpb246
OnN0YXJ0VGltZXIoKQogICAgIG1fc2Nyb2xsVGltZXIuc3RhcnRPbmVTaG90KGR1cmF0aW9uKTsK
IH0KIAotdm9pZCBUZXh0VHJhY2tSZWdpb246OnN0b3BUaW1lcigpCit2b2lkIFZUVFJlZ2lvbjo6
c3RvcFRpbWVyKCkKIHsKLSAgICBMT0coTWVkaWEsICJUZXh0VHJhY2tSZWdpb246OnN0b3BUaW1l
ciIpOworICAgIExPRyhNZWRpYSwgIlZUVFJlZ2lvbjo6c3RvcFRpbWVyIik7CiAKICAgICBpZiAo
bV9zY3JvbGxUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX3Njcm9sbFRpbWVyLnN0b3AoKTsK
IH0KIAotdm9pZCBUZXh0VHJhY2tSZWdpb246OnNjcm9sbFRpbWVyRmlyZWQoVGltZXI8VGV4dFRy
YWNrUmVnaW9uPiopCit2b2lkIFZUVFJlZ2lvbjo6c2Nyb2xsVGltZXJGaXJlZChUaW1lcjxWVFRS
ZWdpb24+KikKIHsKLSAgICBMT0coTWVkaWEsICJUZXh0VHJhY2tSZWdpb246OnNjcm9sbFRpbWVy
RmlyZWQiKTsKKyAgICBMT0coTWVkaWEsICJWVFRSZWdpb246OnNjcm9sbFRpbWVyRmlyZWQiKTsK
IAogICAgIHN0b3BUaW1lcigpOwogICAgIGRpc3BsYXlMYXN0VGV4dFRyYWNrQ3VlQm94KCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUUmVnaW9uLmgJKHJldmlzaW9uIDE2NTk5NikJ
KGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tSZWdpb24uaDoxNjU5OTYp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBUZXh0VHJhY2tSZWdpb25faAorI2RlZmluZSBUZXh0
VHJhY2tSZWdpb25faAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBFTkFCTEUoV0VCVlRU
X1JFR0lPTlMpCisKKyNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgorI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIlRl
eHRUcmFjay5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgSFRNTERpdkVsZW1lbnQ7CitjbGFzcyBWVFRDdWVCb3g7CisKK2NsYXNz
IFRleHRUcmFja1JlZ2lvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFRleHRUcmFja1JlZ2lvbj4sIHB1
YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8VGV4dFRyYWNrUmVnaW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4dFRyYWNrUmVn
aW9uKGNvbnRleHQpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5UZXh0VHJhY2tSZWdpb24oKTsK
KworICAgIFRleHRUcmFjayogdHJhY2soKSBjb25zdCB7IHJldHVybiBtX3RyYWNrOyB9CisgICAg
dm9pZCBzZXRUcmFjayhUZXh0VHJhY2sqKTsKKworICAgIGNvbnN0IFN0cmluZyYgaWQoKSBjb25z
dCB7IHJldHVybiBtX2lkOyB9CisgICAgdm9pZCBzZXRJZChjb25zdCBTdHJpbmcmKTsKKworICAg
IGRvdWJsZSB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KKyAgICB2b2lkIHNldFdp
ZHRoKGRvdWJsZSwgRXhjZXB0aW9uQ29kZSYpOworCisgICAgbG9uZyBoZWlnaHQoKSBjb25zdCB7
IHJldHVybiBtX2hlaWdodEluTGluZXM7IH0KKyAgICB2b2lkIHNldEhlaWdodChsb25nLCBFeGNl
cHRpb25Db2RlJik7CisKKyAgICBkb3VibGUgcmVnaW9uQW5jaG9yWCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVnaW9uQW5jaG9yLngoKTsgfQorICAgIHZvaWQgc2V0UmVnaW9uQW5jaG9yWChkb3VibGUs
IEV4Y2VwdGlvbkNvZGUmKTsKKworICAgIGRvdWJsZSByZWdpb25BbmNob3JZKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZWdpb25BbmNob3IueSgpOyB9CisgICAgdm9pZCBzZXRSZWdpb25BbmNob3JZKGRv
dWJsZSwgRXhjZXB0aW9uQ29kZSYpOworCisgICAgZG91YmxlIHZpZXdwb3J0QW5jaG9yWCgpIGNv
bnN0IHsgcmV0dXJuIG1fdmlld3BvcnRBbmNob3IueCgpOyB9CisgICAgdm9pZCBzZXRWaWV3cG9y
dEFuY2hvclgoZG91YmxlLCBFeGNlcHRpb25Db2RlJik7CisKKyAgICBkb3VibGUgdmlld3BvcnRB
bmNob3JZKCkgY29uc3QgeyByZXR1cm4gbV92aWV3cG9ydEFuY2hvci55KCk7IH0KKyAgICB2b2lk
IHNldFZpZXdwb3J0QW5jaG9yWShkb3VibGUsIEV4Y2VwdGlvbkNvZGUmKTsKKworICAgIGNvbnN0
IEF0b21pY1N0cmluZyBzY3JvbGwoKSBjb25zdDsKKyAgICB2b2lkIHNldFNjcm9sbChjb25zdCBB
dG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CisKKyAgICB2b2lkIHVwZGF0ZVBhcmFtZXRl
cnNGcm9tUmVnaW9uKFRleHRUcmFja1JlZ2lvbiopOworCisgICAgY29uc3QgU3RyaW5nJiByZWdp
b25TZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fc2V0dGluZ3M7IH0KKyAgICB2b2lkIHNldFJl
Z2lvblNldHRpbmdzKGNvbnN0IFN0cmluZyYpOworCisgICAgYm9vbCBpc1Njcm9sbGluZ1JlZ2lv
bigpIHsgcmV0dXJuIG1fc2Nyb2xsOyB9CisKKyAgICBQYXNzUmVmUHRyPEhUTUxEaXZFbGVtZW50
PiBnZXREaXNwbGF5VHJlZSgpOworICAgIAorICAgIHZvaWQgYXBwZW5kVGV4dFRyYWNrQ3VlQm94
KFBhc3NSZWZQdHI8VlRUQ3VlQm94Pik7CisgICAgdm9pZCBkaXNwbGF5TGFzdFRleHRUcmFja0N1
ZUJveCgpOworICAgIHZvaWQgd2lsbFJlbW92ZVRleHRUcmFja0N1ZUJveChWVFRDdWVCb3gqKTsK
KworcHJpdmF0ZToKKyAgICBUZXh0VHJhY2tSZWdpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYp
OworCisgICAgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQoKSB7IHJldHVybiB0b0RvY3VtZW50KG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7IH0KKworICAgIHZvaWQgcHJlcGFyZVJlZ2lvbkRpc3Bs
YXlUcmVlKCk7CisKKyAgICAvLyBUaGUgdGltZXIgaXMgbmVlZGVkIHRvIGNvbnRpbnVlIHByb2Nl
c3Npbmcgd2hlbiBjdWUgc2Nyb2xsaW5nIGVuZGVkLgorICAgIHZvaWQgc3RhcnRUaW1lcigpOwor
ICAgIHZvaWQgc3RvcFRpbWVyKCk7CisgICAgdm9pZCBzY3JvbGxUaW1lckZpcmVkKFRpbWVyPFRl
eHRUcmFja1JlZ2lvbj4qKTsKKworICAgIGVudW0gUmVnaW9uU2V0dGluZyB7CisgICAgICAgIE5v
bmUsCisgICAgICAgIElkLAorICAgICAgICBXaWR0aCwKKyAgICAgICAgSGVpZ2h0LAorICAgICAg
ICBSZWdpb25BbmNob3IsCisgICAgICAgIFZpZXdwb3J0QW5jaG9yLAorICAgICAgICBTY3JvbGwK
KyAgICB9OworCisgICAgUmVnaW9uU2V0dGluZyBnZXRTZXR0aW5nRnJvbVN0cmluZyhjb25zdCBT
dHJpbmcmKTsKKworICAgIHZvaWQgcGFyc2VTZXR0aW5nVmFsdWUoUmVnaW9uU2V0dGluZywgY29u
c3QgU3RyaW5nJik7CisgICAgdm9pZCBwYXJzZVNldHRpbmcoY29uc3QgU3RyaW5nJiwgdW5zaWdu
ZWQqKTsKKworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHRleHRUcmFja0N1ZUNvbnRh
aW5lclNoYWRvd1BzZXVkb0lkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgdGV4
dFRyYWNrQ3VlQ29udGFpbmVyU2Nyb2xsaW5nQ2xhc3MoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nJiB0ZXh0VHJhY2tSZWdpb25TaGFkb3dQc2V1ZG9JZCgpOworCisgICAgU3RyaW5n
IG1faWQ7CisgICAgU3RyaW5nIG1fc2V0dGluZ3M7CisKKyAgICBkb3VibGUgbV93aWR0aDsKKyAg
ICB1bnNpZ25lZCBtX2hlaWdodEluTGluZXM7CisKKyAgICBGbG9hdFBvaW50IG1fcmVnaW9uQW5j
aG9yOworICAgIEZsb2F0UG9pbnQgbV92aWV3cG9ydEFuY2hvcjsKKworICAgIGJvb2wgbV9zY3Jv
bGw7CisKKyAgICAvLyBUaGUgY3VlIGNvbnRhaW5lciBpcyB0aGUgY29udGFpbmVyIHRoYXQgaXMg
c2Nyb2xsZWQgdXAgdG8gb2J0YWluIHRoZQorICAgIC8vIGVmZmVjdCBvZiBzY3JvbGxpbmcgY3Vl
cyB3aGVuIHRoaXMgaXMgZW5hYmxlZCBmb3IgdGhlIHJlZ2lvbnMuCisgICAgUmVmUHRyPEhUTUxE
aXZFbGVtZW50PiBtX2N1ZUNvbnRhaW5lcjsKKyAgICBSZWZQdHI8SFRNTERpdkVsZW1lbnQ+IG1f
cmVnaW9uRGlzcGxheVRyZWU7CisKKyAgICAvLyBUaGUgbWVtYmVyIHZhcmlhYmxlIHRyYWNrIGNh
biBiZSBhIHJhdyBwb2ludGVyIGFzIGl0IHdpbGwgbmV2ZXIKKyAgICAvLyByZWZlcmVuY2UgYSBk
ZXN0cm95ZWQgVGV4dFRyYWNrLCBhcyB0aGlzIG1lbWJlciB2YXJpYWJsZQorICAgIC8vIGlzIGNs
ZWFyZWQgaW4gdGhlIFRleHRUcmFjayBkZXN0cnVjdG9yIGFuZCBpdCBpcyBnZW5lcmFsbHkKKyAg
ICAvLyBzZXQvcmVzZXQgd2l0aGluIHRoZSBhZGRSZWdpb24gYW5kIHJlbW92ZVJlZ2lvbiBtZXRo
b2RzLgorICAgIFRleHRUcmFjayogbV90cmFjazsKKworICAgIC8vIEtlZXAgdHJhY2sgb2YgdGhl
IGN1cnJlbnQgbnVtZXJpYyB2YWx1ZSBvZiB0aGUgY3NzICJ0b3AiIHByb3BlcnR5LgorICAgIGRv
dWJsZSBtX2N1cnJlbnRUb3A7CisKKyAgICAvLyBUaGUgdGltZXIgaXMgdXNlZCB0byBkaXNwbGF5
IHRoZSBuZXh0IGN1ZSBsaW5lIGFmdGVyIHRoZSBjdXJyZW50IG9uZSBoYXMKKyAgICAvLyBiZWVu
IGRpc3BsYXllZC4gSXQncyBtYWluIHVzZSBpcyBmb3Igc2Nyb2xsaW5nIHJlZ2lvbnMgYW5kIGl0
IHRyaWdnZXJzIGFzCisgICAgLy8gc29vbiBhcyB0aGUgYW5pbWF0aW9uIGZvciByb2xsaW5nIG91
dCBvbmUgbGluZSBoYXMgZmluaXNoZWQsIGJ1dAorICAgIC8vIGN1cnJlbnRseSBpdCBpcyB1c2Vk
IGFsc28gZm9yIG5vbi1zY3JvbGxpbmcgcmVnaW9ucyB0byB1c2UgYSBzaW5nbGUKKyAgICAvLyBj
b2RlIHBhdGguCisgICAgVGltZXI8VGV4dFRyYWNrUmVnaW9uPiBtX3Njcm9sbFRpbWVyOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbi5oCSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw4ICsyOSw4
IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgVGV4dFRyYWNrUmVnaW9uX2gKLSNk
ZWZpbmUgVGV4dFRyYWNrUmVnaW9uX2gKKyNpZm5kZWYgVlRUUmVnaW9uX2gKKyNkZWZpbmUgVlRU
UmVnaW9uX2gKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxFKFdFQlZUVF9SRUdJ
T05TKQogCkBAIC00NSwxNCArNDUsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSFRN
TERpdkVsZW1lbnQ7CiBjbGFzcyBWVFRDdWVCb3g7CiAKLWNsYXNzIFRleHRUcmFja1JlZ2lvbiA6
IHB1YmxpYyBSZWZDb3VudGVkPFRleHRUcmFja1JlZ2lvbj4sIHB1YmxpYyBDb250ZXh0RGVzdHJ1
Y3Rpb25PYnNlcnZlciB7CitjbGFzcyBWVFRSZWdpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxWVFRS
ZWdpb24+LCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFRleHRUcmFja1JlZ2lvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8VlRUUmVnaW9uPiBjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgVGV4dFRyYWNrUmVnaW9uKGNvbnRleHQpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBWVFRSZWdpb24oY29udGV4dCkpOwogICAgIH0KIAotICAgIHZpcnR1YWwg
flRleHRUcmFja1JlZ2lvbigpOworICAgIHZpcnR1YWwgflZUVFJlZ2lvbigpOwogCiAgICAgVGV4
dFRyYWNrKiB0cmFjaygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhY2s7IH0KICAgICB2b2lkIHNldFRy
YWNrKFRleHRUcmFjayopOwpAQCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgQXRv
bWljU3RyaW5nIHNjcm9sbCgpIGNvbnN0OwogICAgIHZvaWQgc2V0U2Nyb2xsKGNvbnN0IEF0b21p
Y1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIHZvaWQgdXBkYXRlUGFyYW1ldGVyc0Zy
b21SZWdpb24oVGV4dFRyYWNrUmVnaW9uKik7CisgICAgdm9pZCB1cGRhdGVQYXJhbWV0ZXJzRnJv
bVJlZ2lvbihWVFRSZWdpb24qKTsKIAogICAgIGNvbnN0IFN0cmluZyYgcmVnaW9uU2V0dGluZ3Mo
KSBjb25zdCB7IHJldHVybiBtX3NldHRpbmdzOyB9CiAgICAgdm9pZCBzZXRSZWdpb25TZXR0aW5n
cyhjb25zdCBTdHJpbmcmKTsKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgIHZvaWQgd2ls
bFJlbW92ZVRleHRUcmFja0N1ZUJveChWVFRDdWVCb3gqKTsKIAogcHJpdmF0ZToKLSAgICBUZXh0
VHJhY2tSZWdpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOworICAgIFZUVFJlZ2lvbihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Jik7CiAKICAgICBEb2N1bWVudCogb3duZXJEb2N1bWVudCgpIHsg
cmV0dXJuIHRvRG9jdW1lbnQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsgfQogCkBAIC0xMDQs
NyArMTA0LDcgQEAgcHJpdmF0ZToKICAgICAvLyBUaGUgdGltZXIgaXMgbmVlZGVkIHRvIGNvbnRp
bnVlIHByb2Nlc3Npbmcgd2hlbiBjdWUgc2Nyb2xsaW5nIGVuZGVkLgogICAgIHZvaWQgc3RhcnRU
aW1lcigpOwogICAgIHZvaWQgc3RvcFRpbWVyKCk7Ci0gICAgdm9pZCBzY3JvbGxUaW1lckZpcmVk
KFRpbWVyPFRleHRUcmFja1JlZ2lvbj4qKTsKKyAgICB2b2lkIHNjcm9sbFRpbWVyRmlyZWQoVGlt
ZXI8VlRUUmVnaW9uPiopOwogCiAgICAgZW51bSBSZWdpb25TZXR0aW5nIHsKICAgICAgICAgTm9u
ZSwKQEAgLTE1NSw3ICsxNTUsNyBAQCBwcml2YXRlOgogICAgIC8vIHNvb24gYXMgdGhlIGFuaW1h
dGlvbiBmb3Igcm9sbGluZyBvdXQgb25lIGxpbmUgaGFzIGZpbmlzaGVkLCBidXQKICAgICAvLyBj
dXJyZW50bHkgaXQgaXMgdXNlZCBhbHNvIGZvciBub24tc2Nyb2xsaW5nIHJlZ2lvbnMgdG8gdXNl
IGEgc2luZ2xlCiAgICAgLy8gY29kZSBwYXRoLgotICAgIFRpbWVyPFRleHRUcmFja1JlZ2lvbj4g
bV9zY3JvbGxUaW1lcjsKKyAgICBUaW1lcjxWVFRSZWdpb24+IG1fc2Nyb2xsVGltZXI7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1ZUVFJlZ2lvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9W
VFRSZWdpb24uaWRsCShyZXZpc2lvbiAxNjU5OTYpCShmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVGV4dFRyYWNrUmVnaW9uLmlkbDoxNjU5OTYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1ZUVFJlZ2lvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworWworICAgIENvbmRp
dGlvbmFsPVZJREVPX1RSQUNLICYgV0VCVlRUX1JFR0lPTlMsCisgICAgSlNHZW5lcmF0ZVRvTmF0
aXZlT2JqZWN0LAorICAgIENvbnN0cnVjdG9yKCksCisgICAgQ29uc3RydWN0b3JDYWxsV2l0aD1T
Y3JpcHRFeGVjdXRpb25Db250ZXh0CitdIGludGVyZmFjZSBUZXh0VHJhY2tSZWdpb24geworICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBUZXh0VHJhY2sgdHJhY2s7CisKKyAgICBhdHRyaWJ1dGUgRE9N
U3RyaW5nIGlkOworICAgIFtTZXR0ZXJSYWlzZXNFeGNlcHRpb25dIGF0dHJpYnV0ZSBkb3VibGUg
d2lkdGg7CisgICAgW1NldHRlclJhaXNlc0V4Y2VwdGlvbl0gYXR0cmlidXRlIGxvbmcgaGVpZ2h0
OworICAgIFtTZXR0ZXJSYWlzZXNFeGNlcHRpb25dIGF0dHJpYnV0ZSBkb3VibGUgcmVnaW9uQW5j
aG9yWDsKKyAgICBbU2V0dGVyUmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgZG91YmxlIHJlZ2lv
bkFuY2hvclk7CisgICAgW1NldHRlclJhaXNlc0V4Y2VwdGlvbl0gYXR0cmlidXRlIGRvdWJsZSB2
aWV3cG9ydEFuY2hvclg7CisgICAgW1NldHRlclJhaXNlc0V4Y2VwdGlvbl0gYXR0cmlidXRlIGRv
dWJsZSB2aWV3cG9ydEFuY2hvclk7CisgICAgW1NldHRlclJhaXNlc0V4Y2VwdGlvbl0gYXR0cmli
dXRlIERPTVN0cmluZyBzY3JvbGw7Cit9OworCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1ZUVFJlZ2lvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9WVFRSZWdpb24uaWRsCSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1ZUVFJlZ2lvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICAgICBK
U0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCiAgICAgQ29uc3RydWN0b3IoKSwKICAgICBDb25zdHJ1
Y3RvckNhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKLV0gaW50ZXJmYWNlIFRleHRUcmFj
a1JlZ2lvbiB7CitdIGludGVyZmFjZSBWVFRSZWdpb24gewogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBUZXh0VHJhY2sgdHJhY2s7CiAKICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlkOwpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb25MaXN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbkxpc3QuY3BwCShyZXZpc2lvbiAx
NjU5OTYpCShmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uTGlz
dC5jcHA6MTY1OTk2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb25MaXN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKSAmJiBFTkFCTEUoV0VCVlRUX1JFR0lPTlMpCisKKyNpbmNsdWRlICJU
ZXh0VHJhY2tSZWdpb25MaXN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVGV4dFRyYWNr
UmVnaW9uTGlzdDo6VGV4dFRyYWNrUmVnaW9uTGlzdCgpCit7Cit9CisKK3Vuc2lnbmVkIGxvbmcg
VGV4dFRyYWNrUmVnaW9uTGlzdDo6bGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9saXN0
LnNpemUoKTsKK30KKworVGV4dFRyYWNrUmVnaW9uKiBUZXh0VHJhY2tSZWdpb25MaXN0OjppdGVt
KHVuc2lnbmVkIGluZGV4KSBjb25zdAoreworICAgIGlmIChpbmRleCA8IG1fbGlzdC5zaXplKCkp
CisgICAgICAgIHJldHVybiBtX2xpc3RbaW5kZXhdLmdldCgpOworCisgICAgcmV0dXJuIDA7Cit9
CisKK1RleHRUcmFja1JlZ2lvbiogVGV4dFRyYWNrUmVnaW9uTGlzdDo6Z2V0UmVnaW9uQnlJZChj
b25zdCBTdHJpbmcmIGlkKSBjb25zdAoreworICAgIGlmIChpZC5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybiAwOworCisgICAgZm9yIChjb25zdCBhdXRvJiByZWdpb24gOiBtX2xpc3QpIHsKKyAg
ICAgICAgaWYgKHJlZ2lvbi0+aWQoKSA9PSBpZCkKKyAgICAgICAgICAgIHJldHVybiByZWdpb24u
Z2V0KCk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgVGV4dFRyYWNrUmVnaW9u
TGlzdDo6YWRkKFBhc3NSZWZQdHI8VGV4dFRyYWNrUmVnaW9uPiByZWdpb24pCit7CisgICAgbV9s
aXN0LmFwcGVuZChyZWdpb24pOworfQorCitib29sIFRleHRUcmFja1JlZ2lvbkxpc3Q6OnJlbW92
ZShUZXh0VHJhY2tSZWdpb24qIHJlZ2lvbikKK3sKKyAgICBzaXplX3QgaW5kZXggPSBtX2xpc3Qu
ZmluZChyZWdpb24pOworICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgbV9saXN0LnJlbW92ZShpbmRleCk7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK3ZvaWQgVGV4dFRyYWNrUmVnaW9uTGlzdDo6Y2xlYXIoKQoreworICAgIG1fbGlzdC5jbGVh
cigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb25MaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbkxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbkxpc3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNSwyMyArMjUsMjMgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiVlRUUmVnaW9uTGlzdC5oIgogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBFTkFC
TEUoV0VCVlRUX1JFR0lPTlMpCiAKLSNpbmNsdWRlICJUZXh0VHJhY2tSZWdpb25MaXN0LmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotVGV4dFRyYWNrUmVnaW9uTGlzdDo6VGV4dFRyYWNrUmVn
aW9uTGlzdCgpCitWVFRSZWdpb25MaXN0OjpWVFRSZWdpb25MaXN0KCkKIHsKIH0KIAotdW5zaWdu
ZWQgbG9uZyBUZXh0VHJhY2tSZWdpb25MaXN0OjpsZW5ndGgoKSBjb25zdAordW5zaWduZWQgbG9u
ZyBWVFRSZWdpb25MaXN0OjpsZW5ndGgoKSBjb25zdAogewogICAgIHJldHVybiBtX2xpc3Quc2l6
ZSgpOwogfQogCi1UZXh0VHJhY2tSZWdpb24qIFRleHRUcmFja1JlZ2lvbkxpc3Q6Oml0ZW0odW5z
aWduZWQgaW5kZXgpIGNvbnN0CitWVFRSZWdpb24qIFZUVFJlZ2lvbkxpc3Q6Oml0ZW0odW5zaWdu
ZWQgaW5kZXgpIGNvbnN0CiB7CiAgICAgaWYgKGluZGV4IDwgbV9saXN0LnNpemUoKSkKICAgICAg
ICAgcmV0dXJuIG1fbGlzdFtpbmRleF0uZ2V0KCk7CkBAIC00OSw3ICs0OSw3IEBAIFRleHRUcmFj
a1JlZ2lvbiogVGV4dFRyYWNrUmVnaW9uTGlzdDo6aXQKICAgICByZXR1cm4gMDsKIH0KIAotVGV4
dFRyYWNrUmVnaW9uKiBUZXh0VHJhY2tSZWdpb25MaXN0OjpnZXRSZWdpb25CeUlkKGNvbnN0IFN0
cmluZyYgaWQpIGNvbnN0CitWVFRSZWdpb24qIFZUVFJlZ2lvbkxpc3Q6OmdldFJlZ2lvbkJ5SWQo
Y29uc3QgU3RyaW5nJiBpZCkgY29uc3QKIHsKICAgICBpZiAoaWQuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gMDsKQEAgLTYyLDEyICs2MiwxMiBAQCBUZXh0VHJhY2tSZWdpb24qIFRleHRUcmFj
a1JlZ2lvbkxpc3Q6OmdlCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgVGV4dFRyYWNrUmVnaW9u
TGlzdDo6YWRkKFBhc3NSZWZQdHI8VGV4dFRyYWNrUmVnaW9uPiByZWdpb24pCit2b2lkIFZUVFJl
Z2lvbkxpc3Q6OmFkZChQYXNzUmVmUHRyPFZUVFJlZ2lvbj4gcmVnaW9uKQogewogICAgIG1fbGlz
dC5hcHBlbmQocmVnaW9uKTsKIH0KIAotYm9vbCBUZXh0VHJhY2tSZWdpb25MaXN0OjpyZW1vdmUo
VGV4dFRyYWNrUmVnaW9uKiByZWdpb24pCitib29sIFZUVFJlZ2lvbkxpc3Q6OnJlbW92ZShWVFRS
ZWdpb24qIHJlZ2lvbikKIHsKICAgICBzaXplX3QgaW5kZXggPSBtX2xpc3QuZmluZChyZWdpb24p
OwogICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKQEAgLTc3LDcgKzc3LDcgQEAgYm9vbCBUZXh0
VHJhY2tSZWdpb25MaXN0OjpyZW1vdmUoVGV4dFRyYQogICAgIHJldHVybiB0cnVlOwogfQogCi12
b2lkIFRleHRUcmFja1JlZ2lvbkxpc3Q6OmNsZWFyKCkKK3ZvaWQgVlRUUmVnaW9uTGlzdDo6Y2xl
YXIoKQogewogICAgIG1fbGlzdC5jbGVhcigpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9WVFRSZWdpb25MaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9WVFRSZWdpb25MaXN0LmgJKHJldmlzaW9uIDE2NTk5NikJKGZyb20gU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tSZWdpb25MaXN0Lmg6MTY1OTk2KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb25MaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFRleHRUcmFja1JlZ2lvbkxpc3RfaAorI2RlZmluZSBUZXh0VHJhY2tSZWdpb25M
aXN0X2gKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxFKFdFQlZUVF9SRUdJT05T
KQorCisjaW5jbHVkZSAiVGV4dFRyYWNrUmVnaW9uLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUZXh0VHJhY2tSZWdpb25MaXN0IDog
cHVibGljIFJlZkNvdW50ZWQ8VGV4dFRyYWNrUmVnaW9uTGlzdD4geworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFRleHRUcmFja1JlZ2lvbkxpc3Q+IGNyZWF0ZSgpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHRUcmFja1JlZ2lvbkxpc3QoKSk7CisgICAgfQor
CisgICAgflRleHRUcmFja1JlZ2lvbkxpc3QoKSB7IH0KKworICAgIHVuc2lnbmVkIGxvbmcgbGVu
Z3RoKCkgY29uc3Q7CisKKyAgICBUZXh0VHJhY2tSZWdpb24qIGl0ZW0odW5zaWduZWQgaW5kZXgp
IGNvbnN0OworICAgIFRleHRUcmFja1JlZ2lvbiogZ2V0UmVnaW9uQnlJZChjb25zdCBTdHJpbmcm
KSBjb25zdDsKKworICAgIHZvaWQgYWRkKFBhc3NSZWZQdHI8VGV4dFRyYWNrUmVnaW9uPik7Cisg
ICAgYm9vbCByZW1vdmUoVGV4dFRyYWNrUmVnaW9uKik7CisKK3ByaXZhdGU6CisgICAgVGV4dFRy
YWNrUmVnaW9uTGlzdCgpOworICAgIHZvaWQgY2xlYXIoKTsKKworICAgIFZlY3RvcjxSZWZQdHI8
VGV4dFRyYWNrUmVnaW9uPiA+IG1fbGlzdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUUmVn
aW9uTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUUmVn
aW9uTGlzdC5oCSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZU
VFJlZ2lvbkxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw0MCArMjQsNDAgQEAKICAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotI2lmbmRlZiBUZXh0VHJhY2tSZWdpb25MaXN0X2gKLSNkZWZpbmUgVGV4dFRyYWNr
UmVnaW9uTGlzdF9oCisjaWZuZGVmIFZUVFJlZ2lvbkxpc3RfaAorI2RlZmluZSBWVFRSZWdpb25M
aXN0X2gKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxFKFdFQlZUVF9SRUdJT05T
KQogCi0jaW5jbHVkZSAiVGV4dFRyYWNrUmVnaW9uLmgiCisjaW5jbHVkZSAiVlRUUmVnaW9uLmgi
CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBUZXh0VHJhY2tSZWdpb25MaXN0IDogcHVibGljIFJlZkNvdW50ZWQ8VGV4dFRyYWNrUmVnaW9u
TGlzdD4geworY2xhc3MgVlRUUmVnaW9uTGlzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFZUVFJlZ2lv
bkxpc3Q+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0VHJhY2tSZWdpb25M
aXN0PiBjcmVhdGUoKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFZUVFJlZ2lvbkxpc3Q+IGNyZWF0
ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHRUcmFja1JlZ2lvbkxp
c3QoKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVlRUUmVnaW9uTGlzdCgpKTsKICAg
ICB9CiAKLSAgICB+VGV4dFRyYWNrUmVnaW9uTGlzdCgpIHsgfQorICAgIH5WVFRSZWdpb25MaXN0
KCkgeyB9CiAKICAgICB1bnNpZ25lZCBsb25nIGxlbmd0aCgpIGNvbnN0OwogCi0gICAgVGV4dFRy
YWNrUmVnaW9uKiBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKLSAgICBUZXh0VHJhY2tSZWdp
b24qIGdldFJlZ2lvbkJ5SWQoY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgVlRUUmVnaW9uKiBp
dGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKKyAgICBWVFRSZWdpb24qIGdldFJlZ2lvbkJ5SWQo
Y29uc3QgU3RyaW5nJikgY29uc3Q7CiAKLSAgICB2b2lkIGFkZChQYXNzUmVmUHRyPFRleHRUcmFj
a1JlZ2lvbj4pOwotICAgIGJvb2wgcmVtb3ZlKFRleHRUcmFja1JlZ2lvbiopOworICAgIHZvaWQg
YWRkKFBhc3NSZWZQdHI8VlRUUmVnaW9uPik7CisgICAgYm9vbCByZW1vdmUoVlRUUmVnaW9uKik7
CiAKIHByaXZhdGU6Ci0gICAgVGV4dFRyYWNrUmVnaW9uTGlzdCgpOworICAgIFZUVFJlZ2lvbkxp
c3QoKTsKICAgICB2b2lkIGNsZWFyKCk7CiAKLSAgICBWZWN0b3I8UmVmUHRyPFRleHRUcmFja1Jl
Z2lvbj4gPiBtX2xpc3Q7CisgICAgVmVjdG9yPFJlZlB0cjxWVFRSZWdpb24+ID4gbV9saXN0Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9WVFRSZWdpb25MaXN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1ZUVFJlZ2lvbkxpc3QuaWRsCShyZXZpc2lvbiAxNjU5OTYpCShmcm9tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uTGlzdC5pZGw6MTY1OTk2KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb25MaXN0LmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworWworICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIENvbmRpdGlvbmFsPVZJREVP
X1RSQUNLICYgV0VCVlRUX1JFR0lPTlMsCisgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwK
K10gaW50ZXJmYWNlIFRleHRUcmFja1JlZ2lvbkxpc3QgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKKyAgICBnZXR0ZXIgVGV4dFRyYWNrUmVnaW9uIGl0ZW0o
dW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgVGV4dFRyYWNrUmVnaW9uIGdldFJlZ2lvbkJ5SWQo
RE9NU3RyaW5nIGlkKTsKK307CisKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRU
UmVnaW9uTGlzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9W
VFRSZWdpb25MaXN0LmlkbAkod29ya2luZyBjb3B5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9WVFRSZWdpb25MaXN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjcsOSArMjcsOSBAQAog
ICAgIE5vSW50ZXJmYWNlT2JqZWN0LAogICAgIENvbmRpdGlvbmFsPVZJREVPX1RSQUNLICYgV0VC
VlRUX1JFR0lPTlMsCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKLV0gaW50ZXJmYWNl
IFRleHRUcmFja1JlZ2lvbkxpc3QgeworXSBpbnRlcmZhY2UgVlRUUmVnaW9uTGlzdCB7CiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwotICAgIGdldHRlciBUZXh0
VHJhY2tSZWdpb24gaXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBUZXh0VHJhY2tSZWdp
b24gZ2V0UmVnaW9uQnlJZChET01TdHJpbmcgaWQpOworICAgIGdldHRlciBWVFRSZWdpb24gaXRl
bSh1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBWVFRSZWdpb24gZ2V0UmVnaW9uQnlJZChET01T
dHJpbmcgaWQpOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQ
YXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRU
UGFyc2VyLmNwcAkocmV2aXNpb24gMTY2MDA5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9XZWJWVFRQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NiwxMiArOTYsMTIgQEAgYm9v
bCBXZWJWVFRQYXJzZXI6OnBhcnNlRmxvYXRQZXJjZW50YWdlVgogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICB1bnNpZ25lZCBwb3NpdGlvbiA9IDA7Ci0gICAgdW5zaWduZWQgZGlnaXRzQmVm
b3JlRG90ID0gc2NhbkRpZ2l0cyh2YWx1ZSwgJnBvc2l0aW9uKTsKKyAgICB1bnNpZ25lZCBkaWdp
dHNCZWZvcmVEb3QgPSBzY2FuRGlnaXRzKHZhbHVlLCBwb3NpdGlvbik7CiAgICAgdW5zaWduZWQg
ZGlnaXRzQWZ0ZXJEb3QgPSAwOwogICAgIGlmICh2YWx1ZVtwb3NpdGlvbl0gPT0gJy4nKSB7CiAg
ICAgICAgIHBvc2l0aW9uKys7CiAKLSAgICAgICAgZGlnaXRzQWZ0ZXJEb3QgPSBzY2FuRGlnaXRz
KHZhbHVlLCAmcG9zaXRpb24pOworICAgICAgICBkaWdpdHNBZnRlckRvdCA9IHNjYW5EaWdpdHMo
dmFsdWUsIHBvc2l0aW9uKTsKICAgICB9CiAKICAgICAvLyBBdCBsZWFzdCBvbmUgZGlnaXQgaXMg
cmVxdWlyZWQKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIFdlYlZUVFBhcnNlcjo6Z2V0TmV3Q3Vl
cyhWZWN0b3I8UmVmCiB9CiAKICNpZiBFTkFCTEUoV0VCVlRUX1JFR0lPTlMpCi12b2lkIFdlYlZU
VFBhcnNlcjo6Z2V0TmV3UmVnaW9ucyhWZWN0b3I8UmVmUHRyPFRleHRUcmFja1JlZ2lvbj4+JiBv
dXRwdXRSZWdpb25zKQordm9pZCBXZWJWVFRQYXJzZXI6OmdldE5ld1JlZ2lvbnMoVmVjdG9yPFJl
ZlB0cjxWVFRSZWdpb24+PiYgb3V0cHV0UmVnaW9ucykKIHsKICAgICBvdXRwdXRSZWdpb25zID0g
bV9yZWdpb25MaXN0OwogICAgIG1fcmVnaW9uTGlzdC5jbGVhcigpOwpAQCAtNDUxLDcgKzQ1MSw3
IEBAIHZvaWQgV2ViVlRUUGFyc2VyOjpjcmVhdGVOZXdSZWdpb24oY29uc3QKICAgICAgICAgcmV0
dXJuOwogCiAgICAgLy8gU3RlcHMgMTIuNS4xIC0gMTIuNS45IC0gQ29uc3RydWN0IGFuZCBpbml0
aWFsaXplIGEgV2ViVlRUIFJlZ2lvbiBvYmplY3QuCi0gICAgUmVmUHRyPFRleHRUcmFja1JlZ2lv
bj4gcmVnaW9uID0gVGV4dFRyYWNrUmVnaW9uOjpjcmVhdGUoKm1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCk7CisgICAgUmVmUHRyPFZUVFJlZ2lvbj4gcmVnaW9uID0gVlRUUmVnaW9uOjpjcmVhdGUo
Km1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAgICAgcmVnaW9uLT5zZXRSZWdpb25TZXR0aW5n
cyhoZWFkZXJWYWx1ZSk7CiAKICAgICAvLyBTdGVwIDEyLjUuMTAgSWYgdGhlIHRleHQgdHJhY2sg
bGlzdCBvZiByZWdpb25zIHJlZ2lvbnMgY29udGFpbnMgYSByZWdpb24KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuaAkocmV2aXNpb24gMTY2MDA5KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MzksNyArMzksNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCi0jaW5jbHVkZSAi
VGV4dFRyYWNrUmVnaW9uLmgiCisjaW5jbHVkZSAiVlRUUmVnaW9uLmgiCiAjaW5jbHVkZSAiV2Vi
VlRUVG9rZW5pemVyLmgiCiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KQEAgLTE0OCw3ICsxNDgsNyBAQCBwdWJsaWM6CiAgICAgLy8gVHJhbnNm
ZXJzIG93bmVyc2hpcCBvZiBsYXN0IHBhcnNlZCBjdWVzIHRvIGNhbGxlci4KICAgICB2b2lkIGdl
dE5ld0N1ZXMoVmVjdG9yPFJlZlB0cjxXZWJWVFRDdWVEYXRhPj4mKTsKICNpZiBFTkFCTEUoV0VC
VlRUX1JFR0lPTlMpCi0gICAgdm9pZCBnZXROZXdSZWdpb25zKFZlY3RvcjxSZWZQdHI8VGV4dFRy
YWNrUmVnaW9uPj4mKTsKKyAgICB2b2lkIGdldE5ld1JlZ2lvbnMoVmVjdG9yPFJlZlB0cjxWVFRS
ZWdpb24+PiYpOwogI2VuZGlmCiAKICAgICAvLyBDcmVhdGUgdGhlIERvY3VtZW50RnJhZ21lbnQg
cmVwcmVzZW50YXRpb24gb2YgdGhlIFdlYlZUVCBjdWUgdGV4dC4KQEAgLTE5MCw3ICsxOTAsNyBA
QCBwcml2YXRlOgogICAgIFZlY3RvcjxSZWZQdHI8V2ViVlRUQ3VlRGF0YT4+IG1fY3VlbGlzdDsK
IAogI2lmIEVOQUJMRShXRUJWVFRfUkVHSU9OUykKLSAgICBWZWN0b3I8UmVmUHRyPFRleHRUcmFj
a1JlZ2lvbj4+IG1fcmVnaW9uTGlzdDsKKyAgICBWZWN0b3I8UmVmUHRyPFZUVFJlZ2lvbj4+IG1f
cmVnaW9uTGlzdDsKICNlbmRpZgogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Rl
eHRUcmFja0xvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Rl
eHRUcmFja0xvYWRlci5jcHAJKHJldmlzaW9uIDE2NjAwOSkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIyNSw3ICsyMjYsNyBAQCB2b2lk
IFRleHRUcmFja0xvYWRlcjo6Z2V0TmV3Q3VlcyhWZWN0b3I8CiB9CiAKICNpZiBFTkFCTEUoV0VC
VlRUX1JFR0lPTlMpCi12b2lkIFRleHRUcmFja0xvYWRlcjo6Z2V0TmV3UmVnaW9ucyhWZWN0b3I8
UmVmUHRyPFRleHRUcmFja1JlZ2lvbj4+JiBvdXRwdXRSZWdpb25zKQordm9pZCBUZXh0VHJhY2tM
b2FkZXI6OmdldE5ld1JlZ2lvbnMoVmVjdG9yPFJlZlB0cjxWVFRSZWdpb24+PiYgb3V0cHV0UmVn
aW9ucykKIHsKICAgICBBU1NFUlQobV9jdWVQYXJzZXIpOwogICAgIGlmIChtX2N1ZVBhcnNlcikK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmgJKHJldmlzaW9uIDE2
NjAwOSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYW5jZWxMb2FkKCk7CiAg
ICAgdm9pZCBnZXROZXdDdWVzKFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrQ3VlPj4mIG91dHB1dEN1
ZXMpOwogI2lmIEVOQUJMRShXRUJWVFRfUkVHSU9OUykKLSAgICB2b2lkIGdldE5ld1JlZ2lvbnMo
VmVjdG9yPFJlZlB0cjxUZXh0VHJhY2tSZWdpb24+PiYgb3V0cHV0UmVnaW9ucyk7CisgICAgdm9p
ZCBnZXROZXdSZWdpb25zKFZlY3RvcjxSZWZQdHI8VlRUUmVnaW9uPj4mIG91dHB1dFJlZ2lvbnMp
OwogI2VuZGlmCiBwcml2YXRlOgogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjYwMDkpCisrKyBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNiBAQAorMjAxNC0w
My0yMCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5h
bWUgVGV4dFRyYWNrUmVnaW9uL1RleHRUcmFja1JlZ2lvbkxpc3QgdG8gVlRUUmVnaW9uL1ZUVFJl
Z2lvbkxpc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzMDU0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1lcmdlZCBmcm9tIEJsaW5rIChwYXRjaCBieSBwaGlsaXBqQG9wZXJhLmNvbSk6CisgICAgICAg
IGh0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9ibGluay8rLzY5ZWU2
ZDMzOTlkNjQxNjNlNDkzNmFjMWJkZTIyMjAzNmM1NGM0YjgKKyAgICAgICAgaHR0cDovL2NyYnVn
LmNvbS81NTY1MzAwMworCisgICAgICAgICogbWVkaWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQvdGV4
dC10cmFjay1jdWUtcmVnaW9uLWF0dHJpYnV0ZS5odG1sOgorICAgICAgICAqIG1lZGlhL3RyYWNr
L3JlZ2lvbnMtd2VidnR0L3RleHQtdHJhY2stcmVnaW9uLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4
dDogUmVtb3ZlZC4KKyAgICAgICAgKiBtZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0dC90ZXh0LXRy
YWNrLXJlZ2lvbi1jb25zdHJ1Y3Rvci5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIG1lZGlhL3Ry
YWNrL3JlZ2lvbnMtd2VidnR0L3RleHQtdHJhY2stcmVnaW9uLWRpc3BsYXktZXhwZWN0ZWQudHh0
OiBSZW1vdmVkLgorICAgICAgICAqIG1lZGlhL3RyYWNrL3JlZ2lvbnMtd2VidnR0L3RleHQtdHJh
Y2stcmVnaW9uLWRpc3BsYXkuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBtZWRpYS90cmFjay9y
ZWdpb25zLXdlYnZ0dC90ZXh0LXRyYWNrLXJlZ2lvbi1kb20tbGF5b3V0LWV4cGVjdGVkLnR4dDog
UmVtb3ZlZC4KKyAgICAgICAgKiBtZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0dC90ZXh0LXRyYWNr
LXJlZ2lvbi1kb20tbGF5b3V0Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogbWVkaWEvdHJhY2sv
cmVnaW9ucy13ZWJ2dHQvdGV4dC10cmFjay1yZWdpb24tbGlzdC1leHBlY3RlZC50eHQ6IFJlbW92
ZWQuCisgICAgICAgICogbWVkaWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQvdGV4dC10cmFjay1yZWdp
b24tbGlzdC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIG1lZGlhL3RyYWNrL3JlZ2lvbnMtd2Vi
dnR0L3RleHQtdHJhY2stcmVnaW9uLXBhcnNlci1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAg
ICAgICogbWVkaWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQvdGV4dC10cmFjay1yZWdpb24tcGFyc2Vy
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogbWVkaWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQvdnR0
LXJlZ2lvbi1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQ6IENvcGllZCBmcm9tIExheW91dFRlc3Rz
L21lZGlhL3RyYWNrL3JlZ2lvbnMtd2VidnR0L3RleHQtdHJhY2stcmVnaW9uLWNvbnN0cnVjdG9y
LWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBtZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0dC92dHQt
cmVnaW9uLWNvbnN0cnVjdG9yLmh0bWw6IENvcGllZCBmcm9tIExheW91dFRlc3RzL21lZGlhL3Ry
YWNrL3JlZ2lvbnMtd2VidnR0L3RleHQtdHJhY2stcmVnaW9uLWNvbnN0cnVjdG9yLmh0bWwuCisg
ICAgICAgICogbWVkaWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQvdnR0LXJlZ2lvbi1kaXNwbGF5LWV4
cGVjdGVkLnR4dDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svcmVnaW9ucy13
ZWJ2dHQvdGV4dC10cmFjay1yZWdpb24tZGlzcGxheS1leHBlY3RlZC50eHQuCisgICAgICAgICog
bWVkaWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQvdnR0LXJlZ2lvbi1kaXNwbGF5Lmh0bWw6IENvcGll
ZCBmcm9tIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3JlZ2lvbnMtd2VidnR0L3RleHQtdHJhY2st
cmVnaW9uLWRpc3BsYXkuaHRtbC4KKyAgICAgICAgKiBtZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0
dC92dHQtcmVnaW9uLWRvbS1sYXlvdXQtZXhwZWN0ZWQudHh0OiBDb3BpZWQgZnJvbSBMYXlvdXRU
ZXN0cy9tZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0dC90ZXh0LXRyYWNrLXJlZ2lvbi1kb20tbGF5
b3V0LWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBtZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0dC92
dHQtcmVnaW9uLWRvbS1sYXlvdXQuaHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvbWVkaWEv
dHJhY2svcmVnaW9ucy13ZWJ2dHQvdGV4dC10cmFjay1yZWdpb24tZG9tLWxheW91dC5odG1sLgor
ICAgICAgICAqIG1lZGlhL3RyYWNrL3JlZ2lvbnMtd2VidnR0L3Z0dC1yZWdpb24tbGlzdC1leHBl
Y3RlZC50eHQ6IENvcGllZCBmcm9tIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3JlZ2lvbnMtd2Vi
dnR0L3RleHQtdHJhY2stcmVnaW9uLWxpc3QtZXhwZWN0ZWQudHh0LgorICAgICAgICAqIG1lZGlh
L3RyYWNrL3JlZ2lvbnMtd2VidnR0L3Z0dC1yZWdpb24tbGlzdC5odG1sOiBDb3BpZWQgZnJvbSBM
YXlvdXRUZXN0cy9tZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0dC90ZXh0LXRyYWNrLXJlZ2lvbi1s
aXN0Lmh0bWwuCisgICAgICAgICogbWVkaWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQvdnR0LXJlZ2lv
bi1wYXJzZXItZXhwZWN0ZWQudHh0OiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9tZWRpYS90cmFj
ay9yZWdpb25zLXdlYnZ0dC90ZXh0LXRyYWNrLXJlZ2lvbi1wYXJzZXItZXhwZWN0ZWQudHh0Lgor
ICAgICAgICAqIG1lZGlhL3RyYWNrL3JlZ2lvbnMtd2VidnR0L3Z0dC1yZWdpb24tcGFyc2VyLmh0
bWw6IENvcGllZCBmcm9tIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3JlZ2lvbnMtd2VidnR0L3Rl
eHQtdHJhY2stcmVnaW9uLXBhcnNlci5odG1sLgorCiAyMDE0LTAzLTIwICBCcmVudCBGdWxnaGFt
ICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhIGZsdXNoaW5nIG1lY2hhbmlz
bSBmb3IgdGhlIFdlYlZUVFBhcnNlcgpJbmRleDogTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9u
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAx
NjYwMDkpCisrKyBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBA
IC0xMiw3ICsxMiw3IEBAIHdlYmtpdC5vcmcvYi8xMDk5NTQgY3NzMy9saW5lLWJyZWFrIFsgU2sK
IHdlYmtpdC5vcmcvYi8xMjk1NTMgY3NzMy9maWx0ZXJzL2h1Z2UtcmVnaW9uLmh0bWwgWyBTa2lw
IF0KIAogIyBwZW5kaW5nIGltcGxlbWVudGF0aW9uIGNvbXBsZXRpb24gYW5kIGZlYXR1cmUgZW5h
YmxpbmcKLXdlYmtpdC5vcmcvYi8xMDk1NzAgbWVkaWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQgWyBT
a2lwIF0KKyN3ZWJraXQub3JnL2IvMTA5NTcwIG1lZGlhL3RyYWNrL3JlZ2lvbnMtd2VidnR0IFsg
U2tpcCBdCiAKICMgbWVkaWEvdmlkZW8tc2Vlay1hZnRlci1lbmQuaHRtbCBpcyBmbGFreQogd2Vi
a2l0Lm9yZy9iLzExNjI5MyBtZWRpYS92aWRlby1zZWVrLWFmdGVyLWVuZC5odG1sIFsgUGFzcyBG
YWlsdXJlIF0KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3RyYWNrL3JlZ2lvbnMtd2VidnR0L3Rl
eHQtdHJhY2stY3VlLXJlZ2lvbi1hdHRyaWJ1dGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9tZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0dC90ZXh0LXRyYWNrLWN1ZS1yZWdpb24tYXR0
cmlidXRlLmh0bWwJKHJldmlzaW9uIDE2NjAwOSkKKysrIExheW91dFRlc3RzL21lZGlhL3RyYWNr
L3JlZ2lvbnMtd2VidnR0L3RleHQtdHJhY2stY3VlLXJlZ2lvbi1hdHRyaWJ1dGUuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMTAsNyArMTAsNyBAQAogCiAgICAgICAgICAgICBmdW5jdGlvbiBzdGFy
dFRlc3QoKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICghd2luZG93LlRleHRU
cmFja1JlZ2lvbikgeworICAgICAgICAgICAgICAgIGlmICghd2luZG93LlZUVFJlZ2lvbikgewog
ICAgICAgICAgICAgICAgICAgICBmYWlsVGVzdCgpOwogICAgICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICAgICAgfQpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svcmVn
aW9ucy13ZWJ2dHQvdGV4dC10cmFjay1yZWdpb24tY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3JlZ2lvbnMtd2VidnR0L3RleHQt
dHJhY2stcmVnaW9uLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTY2MDA5KQor
KysgTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQvdGV4dC10cmFjay1yZWdp
b24tY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyMCArMCww
IEBACi1UZXN0cyB0aGUgY29uc3RydWN0b3IgYW5kIG11dGF0aW9uIG9mIFRleHRUcmFja1JlZ2lv
bi4KLQotKiogVGVzdCB0aGUgZGVmYXVsdCBpbmRleHMgb2YgYSByZWdpb24uICoqCi1FWFBFQ1RF
RCAocmVnaW9uLnRyYWNrID09ICdudWxsJykgT0sKLUVYUEVDVEVEIChyZWdpb24uc2Nyb2xsID09
ICcnKSBPSwotRVhQRUNURUQgKHJlZ2lvbi52aWV3cG9ydEFuY2hvclggPT0gJzAnKSBPSwotRVhQ
RUNURUQgKHJlZ2lvbi52aWV3cG9ydEFuY2hvclkgPT0gJzEwMCcpIE9LCi1FWFBFQ1RFRCAocmVn
aW9uLnJlZ2lvbkFuY2hvclggPT0gJzAnKSBPSwotRVhQRUNURUQgKHJlZ2lvbi5yZWdpb25BbmNo
b3JZID09ICcxMDAnKSBPSwotRVhQRUNURUQgKHJlZ2lvbi5oZWlnaHQgPT0gJzMnKSBPSwotRVhQ
RUNURUQgKHJlZ2lvbi53aWR0aCA9PSAnMTAwJykgT0sKLQotKiogVGVzdCB0aGF0IGluY29ycmVj
dCBtdXRhdGlvbiBrZWVwcyBwcmV2aW91cyB2YWxpZCB2YWx1ZXMuICoqCi1SVU4ocmVnaW9uLnNj
cm9sbCA9ICdpbnZhbGlkLXNjcm9sbC12YWx1ZScpCi1FcnJvcjogU3ludGF4RXJyb3I6IERPTSBF
eGNlcHRpb24gMTIKLUVYUEVDVEVEIChyZWdpb24uc2Nyb2xsID09ICcnKSBPSwotCi1JbnZhbGlk
IHBlcmNlbnRhZ2UgdmFsdWU6IC0xCi1SVU4ocmVnaW9uLnZpZXdwb3J0QW5jaG9yWCA9IGludmFs
aWRQZXJjZW50YWdlVmFsdWVzW2luZGV4XSkKLUVycm9yOiBJbmRleFNpemVFcnJvcjogRE9NIEV4
Y2VwdGlvbiAxCi1FWFBFQ1RFRCAocmVnaW9uLnZpZXdwb3J0QW5jaG9yWCA9PSAnMCcpIE9LCi1S
VU4ocmVnaW9uLnZpZXdwb3J0QW5jaG9yWSA9IGludmFsaWRQZXJjZW50YWdlVmFsdWVzW2luZGV4
XSkKLUVycm9yOiBJbmRleFNpemVFcnJvcjogRE9NIEV4Y2VwdGlvbiAxCi1FWFBFQ1RFRCAocmVn
aW9uLnZpZXdwb3J0QW5jaG9yWSA9PSAnMTAwJykgT0sKLVJVTihyZWdpb24ucmVnaW9uQW5jaG9y
WCA9IGludmFsaWRQZXJjZW50YWdlVmFsdWVzW2luZGV4XSkKLUVycm9yOiBJbmRleFNpemVFcnJv
cjogRE9NIEV4Y2VwdGlvbiAxCi1FWFBFQ1RFRCAocmVnaW9uLnJlZ2lvbkFuY2hvclggPT0gJzAn
KSBPSwotUlVOKHJlZ2lvbi5yZWdpb25BbmNob3JZID0gaW52YWxpZFBlcmNlbnRhZ2VWYWx1ZXNb
aW5kZXhdKQotRXJyb3I6IEluZGV4U2l6ZUVycm9yOiBET00gRXhjZXB0aW9uIDEKLUVYUEVDVEVE
IChyZWdpb24ucmVnaW9uQW5jaG9yWSA9PSAnMTAwJykgT0sKLVJVTihyZWdpb24ud2lkdGggPSBp
bnZhbGlkUGVyY2VudGFnZVZhbHVlc1tpbmRleF0pCi1FcnJvcjogSW5kZXhTaXplRXJyb3I6IERP
TSBFeGNlcHRpb24gMQotRVhQRUNURUQgKHJlZ2lvbi53aWR0aCA9PSAnMTAwJykgT0sKLQotSW52
YWxpZCBwZXJjZW50YWdlIHZhbHVlOiAxMDEKLVJVTihyZWdpb24udmlld3BvcnRBbmNob3JYID0g
aW52YWxpZFBlcmNlbnRhZ2VWYWx1ZXNbaW5kZXhdKQotRXJyb3I6IEluZGV4U2l6ZUVycm9yOiBE
T00gRXhjZXB0aW9uIDEKLUVYUEVDVEVEIChyZWdpb24udmlld3BvcnRBbmNob3JYID09ICcwJykg
T0sKLVJVTihyZWdpb24udmlld3BvcnRBbmNob3JZID0gaW52YWxpZFBlcmNlbnRhZ2VWYWx1ZXNb
aW5kZXhdKQotRXJyb3I6IEluZGV4U2l6ZUVycm9yOiBET00gRXhjZXB0aW9uIDEKLUVYUEVDVEVE
IChyZWdpb24udmlld3BvcnRBbmNob3JZID09ICcxMDAnKSBPSwotUlVOKHJlZ2lvbi5yZWdpb25B
bmNob3JYID0gaW52YWxpZFBlcmNlbnRhZ2VWYWx1ZXNbaW5kZXhdKQotRXJyb3I6IEluZGV4U2l6
ZUVycm9yOiBET00gRXhjZXB0aW9uIDEKLUVYUEVDVEVEIChyZWdpb24ucmVnaW9uQW5jaG9yWCA9
PSAnMCcpIE9LCi1SVU4ocmVnaW9uLnJlZ2lvbkFuY2hvclkgPSBpbnZhbGlkUGVyY2VudGFnZVZh
bHVlc1tpbmRleF0pCi1FcnJvcjogSW5kZXhTaXplRXJyb3I6IERPTSBFeGNlcHRpb24gMQotRVhQ
RUNURUQgKHJlZ2lvbi5yZWdpb25BbmNob3JZID09ICcxMDAnKSBPSwotUlVOKHJlZ2lvbi53aWR0
aCA9IGludmFsaWRQZXJjZW50YWdlVmFsdWVzW2luZGV4XSkKLUVycm9yOiBJbmRleFNpemVFcnJv
cjogRE9NIEV4Y2VwdGlvbiAxCi1FWFBFQ1RFRCAocmVnaW9uLndpZHRoID09ICcxMDAnKSBPSwot
Ci1JbnZhbGlkIHBlcmNlbnRhZ2UgdmFsdWU6IC1JbmZpbml0eQotUlVOKHJlZ2lvbi52aWV3cG9y
dEFuY2hvclggPSBpbnZhbGlkUGVyY2VudGFnZVZhbHVlc1tpbmRleF0pCi1UeXBlRXJyb3I6IFR5
cGUgZXJyb3IKLUVYUEVDVEVEIChyZWdpb24udmlld3BvcnRBbmNob3JYID09ICcwJykgT0sKLVJV
TihyZWdpb24udmlld3BvcnRBbmNob3JZID0gaW52YWxpZFBlcmNlbnRhZ2VWYWx1ZXNbaW5kZXhd
KQotVHlwZUVycm9yOiBUeXBlIGVycm9yCi1FWFBFQ1RFRCAocmVnaW9uLnZpZXdwb3J0QW5jaG9y
WSA9PSAnMTAwJykgT0sKLVJVTihyZWdpb24ucmVnaW9uQW5jaG9yWCA9IGludmFsaWRQZXJjZW50
YWdlVmFsdWVzW2luZGV4XSkKLVR5cGVFcnJvcjogVHlwZSBlcnJvcgotRVhQRUNURUQgKHJlZ2lv
bi5yZWdpb25BbmNob3JYID09ICcwJykgT0sKLVJVTihyZWdpb24ucmVnaW9uQW5jaG9yWSA9IGlu
dmFsaWRQZXJjZW50YWdlVmFsdWVzW2luZGV4XSkKLVR5cGVFcnJvcjogVHlwZSBlcnJvcgotRVhQ
RUNURUQgKHJlZ2lvbi5yZWdpb25BbmNob3JZID09ICcxMDAnKSBPSwotUlVOKHJlZ2lvbi53aWR0
aCA9IGludmFsaWRQZXJjZW50YWdlVmFsdWVzW2luZGV4XSkKLVR5cGVFcnJvcjogVHlwZSBlcnJv
cgotRVhQRUNURUQgKHJlZ2lvbi53aWR0aCA9PSAnMTAwJykgT0sKLQotSW52YWxpZCBwZXJjZW50
YWdlIHZhbHVlOiBJbmZpbml0eQotUlVOKHJlZ2lvbi52aWV3cG9ydEFuY2hvclggPSBpbnZhbGlk
UGVyY2VudGFnZVZhbHVlc1tpbmRleF0pCi1UeXBlRXJyb3I6IFR5cGUgZXJyb3IKLUVYUEVDVEVE
IChyZWdpb24udmlld3BvcnRBbmNob3JYID09ICcwJykgT0sKLVJVTihyZWdpb24udmlld3BvcnRB
bmNob3JZID0gaW52YWxpZFBlcmNlbnRhZ2VWYWx1ZXNbaW5kZXhdKQotVHlwZUVycm9yOiBUeXBl
IGVycm9yCi1FWFBFQ1RFRCAocmVnaW9uLnZpZXdwb3J0QW5jaG9yWSA9PSAnMTAwJykgT0sKLVJV
TihyZWdpb24ucmVnaW9uQW5jaG9yWCA9IGludmFsaWRQZXJjZW50YWdlVmFsdWVzW2luZGV4XSkK
LVR5cGVFcnJvcjogVHlwZSBlcnJvcgotRVhQRUNURUQgKHJlZ2lvbi5yZWdpb25BbmNob3JYID09
ICcwJykgT0sKLVJVTihyZWdpb24ucmVnaW9uQW5jaG9yWSA9IGludmFsaWRQZXJjZW50YWdlVmFs
dWVzW2luZGV4XSkKLVR5cGVFcnJvcjogVHlwZSBlcnJvcgotRVhQRUNURUQgKHJlZ2lvbi5yZWdp
b25BbmNob3JZID09ICcxMDAnKSBPSwotUlVOKHJlZ2lvbi53aWR0aCA9IGludmFsaWRQZXJjZW50
YWdlVmFsdWVzW2luZGV4XSkKLVR5cGVFcnJvcjogVHlwZSBlcnJvcgotRVhQRUNURUQgKHJlZ2lv
bi53aWR0aCA9PSAnMTAwJykgT0sKLQotSW52YWxpZCBwZXJjZW50YWdlIHZhbHVlOiBOYU4KLVJV
TihyZWdpb24udmlld3BvcnRBbmNob3JYID0gaW52YWxpZFBlcmNlbnRhZ2VWYWx1ZXNbaW5kZXhd
KQotVHlwZUVycm9yOiBUeXBlIGVycm9yCi1FWFBFQ1RFRCAocmVnaW9uLnZpZXdwb3J0QW5jaG9y
WCA9PSAnMCcpIE9LCi1SVU4ocmVnaW9uLnZpZXdwb3J0QW5jaG9yWSA9IGludmFsaWRQZXJjZW50
YWdlVmFsdWVzW2luZGV4XSkKLVR5cGVFcnJvcjogVHlwZSBlcnJvcgotRVhQRUNURUQgKHJlZ2lv
bi52aWV3cG9ydEFuY2hvclkgPT0gJzEwMCcpIE9LCi1SVU4ocmVnaW9uLnJlZ2lvbkFuY2hvclgg
PSBpbnZhbGlkUGVyY2VudGFnZVZhbHVlc1tpbmRleF0pCi1UeXBlRXJyb3I6IFR5cGUgZXJyb3IK
LUVYUEVDVEVEIChyZWdpb24ucmVnaW9uQW5jaG9yWCA9PSAnMCcpIE9LCi1SVU4ocmVnaW9uLnJl
Z2lvbkFuY2hvclkgPSBpbnZhbGlkUGVyY2VudGFnZVZhbHVlc1tpbmRleF0pCi1UeXBlRXJyb3I6
IFR5cGUgZXJyb3IKLUVYUEVDVEVEIChyZWdpb24ucmVnaW9uQW5jaG9yWSA9PSAnMTAwJykgT0sK
LVJVTihyZWdpb24ud2lkdGggPSBpbnZhbGlkUGVyY2VudGFnZVZhbHVlc1tpbmRleF0pCi1UeXBl
RXJyb3I6IFR5cGUgZXJyb3IKLUVYUEVDVEVEIChyZWdpb24ud2lkdGggPT0gJzEwMCcpIE9LCi1S
VU4ocmVnaW9uLmhlaWdodCA9IC0xKQotRXJyb3I6IEluZGV4U2l6ZUVycm9yOiBET00gRXhjZXB0
aW9uIDEKLUVYUEVDVEVEIChyZWdpb24uaGVpZ2h0ID09ICczJykgT0sKLQotKiogVGVzdCB0aGF0
IHByb3BlciBtdXRhdGlvbiBrZWVwcyBhc3NpZ25lZCB2YWx1ZS4gKioKLVJVTihyZWdpb24uaGVp
Z2h0ID0gMTMwKQotRVhQRUNURUQgKHJlZ2lvbi5oZWlnaHQgPT0gJzEzMCcpIE9LCi1SVU4ocmVn
aW9uLnZpZXdwb3J0QW5jaG9yWCA9IDY0KQotRVhQRUNURUQgKHJlZ2lvbi52aWV3cG9ydEFuY2hv
clggPT0gJzY0JykgT0sKLVJVTihyZWdpb24udmlld3BvcnRBbmNob3JZID0gMzIpCi1FWFBFQ1RF
RCAocmVnaW9uLnZpZXdwb3J0QW5jaG9yWSA9PSAnMzInKSBPSwotUlVOKHJlZ2lvbi5yZWdpb25B
bmNob3JYID0gMTYpCi1FWFBFQ1RFRCAocmVnaW9uLnJlZ2lvbkFuY2hvclggPT0gJzE2JykgT0sK
LVJVTihyZWdpb24ucmVnaW9uQW5jaG9yWSA9IDgpCi1FWFBFQ1RFRCAocmVnaW9uLnJlZ2lvbkFu
Y2hvclkgPT0gJzgnKSBPSwotUlVOKHJlZ2lvbi53aWR0aCA9IDQyKQotRVhQRUNURUQgKHJlZ2lv
bi53aWR0aCA9PSAnNDInKSBPSwotRU5EIE9GIFRFU1QKLQpJbmRleDogTGF5b3V0VGVzdHMvbWVk
aWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQvdGV4dC10cmFjay1yZWdpb24tY29uc3RydWN0b3IuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0dC90
ZXh0LXRyYWNrLXJlZ2lvbi1jb25zdHJ1Y3Rvci5odG1sCShyZXZpc2lvbiAxNjYwMDkpCisrKyBM
YXlvdXRUZXN0cy9tZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0dC90ZXh0LXRyYWNrLXJlZ2lvbi1j
b25zdHJ1Y3Rvci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDc3ICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPGh0bWw+Ci0gICAgPGhlYWQ+Ci0gICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNv
bnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiAvPgotCi0gICAg
ICAgIDxzY3JpcHQgc3JjPS4uLy4uL21lZGlhLWZpbGUuanM+PC9zY3JpcHQ+Ci0gICAgICAgIDxz
Y3JpcHQgc3JjPS4uLy4uL3ZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+Ci0gICAgICAgIDxzY3JpcHQ+
Ci0gICAgICAgICAgICB2YXIgcmVnaW9uOwotICAgICAgICAgICAgdmFyIGludmFsaWRQZXJjZW50
YWdlVmFsdWVzOwotCi0gICAgICAgICAgICBmdW5jdGlvbiBzdGFydFRlc3QoKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIGlmICghd2luZG93LlRleHRUcmFja1JlZ2lvbikgewotICAg
ICAgICAgICAgICAgICAgICBmYWlsVGVzdCgpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgcmVnaW9uID0gbmV3IFRleHRU
cmFja1JlZ2lvbigpOwotCi0gICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIqKiBUZXN0IHRo
ZSBkZWZhdWx0IGluZGV4cyBvZiBhIHJlZ2lvbi4gKioiKTsKLSAgICAgICAgICAgICAgICB0ZXN0
RXhwZWN0ZWQoInJlZ2lvbi50cmFjayIsIG51bGwpOwotICAgICAgICAgICAgICAgIHRlc3RFeHBl
Y3RlZCgicmVnaW9uLnNjcm9sbCIsICIiKTsKLSAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQo
InJlZ2lvbi52aWV3cG9ydEFuY2hvclgiLCAwKTsKLSAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoInJlZ2lvbi52aWV3cG9ydEFuY2hvclkiLCAxMDApOwotICAgICAgICAgICAgICAgIHRlc3RF
eHBlY3RlZCgicmVnaW9uLnJlZ2lvbkFuY2hvclgiLCAwKTsKLSAgICAgICAgICAgICAgICB0ZXN0
RXhwZWN0ZWQoInJlZ2lvbi5yZWdpb25BbmNob3JZIiwgMTAwKTsKLSAgICAgICAgICAgICAgICB0
ZXN0RXhwZWN0ZWQoInJlZ2lvbi5oZWlnaHQiLCAzKTsKLSAgICAgICAgICAgICAgICB0ZXN0RXhw
ZWN0ZWQoInJlZ2lvbi53aWR0aCIsIDEwMCk7Ci0KLSAgICAgICAgICAgICAgICBjb25zb2xlV3Jp
dGUoIjxicj4qKiBUZXN0IHRoYXQgaW5jb3JyZWN0IG11dGF0aW9uIGtlZXBzIHByZXZpb3VzIHZh
bGlkIHZhbHVlcy4gKioiKTsKLSAgICAgICAgICAgICAgICBydW4oInJlZ2lvbi5zY3JvbGwgPSAn
aW52YWxpZC1zY3JvbGwtdmFsdWUnIik7Ci0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJy
ZWdpb24uc2Nyb2xsIiwgIiIpOwotCi0gICAgICAgICAgICAgICAgaW52YWxpZFBlcmNlbnRhZ2VW
YWx1ZXMgPSBbLTEsIDEwMSwgLUluZmluaXR5LCBJbmZpbml0eSwgTmFOXTsKLSAgICAgICAgICAg
ICAgICBmb3IgKGluZGV4IGluIGludmFsaWRQZXJjZW50YWdlVmFsdWVzKSB7Ci0gICAgICAgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoIjxicj5JbnZhbGlkIHBlcmNlbnRhZ2UgdmFsdWU6ICIgKyBp
bnZhbGlkUGVyY2VudGFnZVZhbHVlc1tpbmRleF0pOwotICAgICAgICAgICAgICAgICAgcnVuKCJy
ZWdpb24udmlld3BvcnRBbmNob3JYID0gaW52YWxpZFBlcmNlbnRhZ2VWYWx1ZXNbaW5kZXhdIik7
Ci0gICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbi52aWV3cG9ydEFuY2hvclgi
LCAwKTsKLSAgICAgICAgICAgICAgICAgIHJ1bigicmVnaW9uLnZpZXdwb3J0QW5jaG9yWSA9IGlu
dmFsaWRQZXJjZW50YWdlVmFsdWVzW2luZGV4XSIpOwotICAgICAgICAgICAgICAgICAgdGVzdEV4
cGVjdGVkKCJyZWdpb24udmlld3BvcnRBbmNob3JZIiwgMTAwKTsKLSAgICAgICAgICAgICAgICAg
IHJ1bigicmVnaW9uLnJlZ2lvbkFuY2hvclggPSBpbnZhbGlkUGVyY2VudGFnZVZhbHVlc1tpbmRl
eF0iKTsKLSAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVnaW9uLnJlZ2lvbkFuY2hv
clgiLCAwKTsKLSAgICAgICAgICAgICAgICAgIHJ1bigicmVnaW9uLnJlZ2lvbkFuY2hvclkgPSBp
bnZhbGlkUGVyY2VudGFnZVZhbHVlc1tpbmRleF0iKTsKLSAgICAgICAgICAgICAgICAgIHRlc3RF
eHBlY3RlZCgicmVnaW9uLnJlZ2lvbkFuY2hvclkiLCAxMDApOwotICAgICAgICAgICAgICAgICAg
cnVuKCJyZWdpb24ud2lkdGggPSBpbnZhbGlkUGVyY2VudGFnZVZhbHVlc1tpbmRleF0iKTsKLSAg
ICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVnaW9uLndpZHRoIiwgMTAwKTsKLSAgICAg
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBydW4oInJlZ2lvbi5oZWlnaHQgPSAtMSIp
OwotICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVnaW9uLmhlaWdodCIsIDMpOwotCi0g
ICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+KiogVGVzdCB0aGF0IHByb3BlciBtdXRh
dGlvbiBrZWVwcyBhc3NpZ25lZCB2YWx1ZS4gKioiKTsKLSAgICAgICAgICAgICAgICBydW4oInJl
Z2lvbi5oZWlnaHQgPSAxMzAiKTsKLSAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lv
bi5oZWlnaHQiLCAxMzApOwotCi0gICAgICAgICAgICAgICAgcnVuKCJyZWdpb24udmlld3BvcnRB
bmNob3JYID0gNjQiKTsKLSAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbi52aWV3
cG9ydEFuY2hvclgiLCA2NCk7Ci0gICAgICAgICAgICAgICAgcnVuKCJyZWdpb24udmlld3BvcnRB
bmNob3JZID0gMzIiKTsKLSAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbi52aWV3
cG9ydEFuY2hvclkiLCAzMik7Ci0gICAgICAgICAgICAgICAgcnVuKCJyZWdpb24ucmVnaW9uQW5j
aG9yWCA9IDE2Iik7Ci0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWdpb24ucmVnaW9u
QW5jaG9yWCIsIDE2KTsKLSAgICAgICAgICAgICAgICBydW4oInJlZ2lvbi5yZWdpb25BbmNob3JZ
ID0gOCIpOwotICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVnaW9uLnJlZ2lvbkFuY2hv
clkiLCA4KTsKLQotICAgICAgICAgICAgICAgIHJ1bigicmVnaW9uLndpZHRoID0gNDIiKTsKLSAg
ICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbi53aWR0aCIsIDQyKTsKLQotICAgICAg
ICAgICAgICAgIGVuZFRlc3QoKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICA8L3NjcmlwdD4K
LSAgICA8L2hlYWQ+Ci0gICAgPGJvZHkgb25sb2FkPSJzdGFydFRlc3QoKSI+Ci0gICAgICAgIDxw
PlRlc3RzIHRoZSBjb25zdHJ1Y3RvciBhbmQgbXV0YXRpb24gb2YgVGV4dFRyYWNrUmVnaW9uLjwv
cD4KLSAgICA8L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay9y
ZWdpb25zLXdlYnZ0dC90ZXh0LXRyYWNrLXJlZ2lvbi1kaXNwbGF5LWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0dC90ZXh0LXRy
YWNrLXJlZ2lvbi1kaXNwbGF5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTY2MDA5KQorKysgTGF5
b3V0VGVzdHMvbWVkaWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQvdGV4dC10cmFjay1yZWdpb24tZGlz
cGxheS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNTMgKzAsMCBAQAotVGVzdHMg
ZGVmYXVsdCByZW5kZXJpbmcgZm9yIFRleHRUcmFja0N1ZXMgdGhhdCBiZWxvbmcgdG8gYSBUZXh0
VHJhY2tSZWdpb24uCi0KLQotRVZFTlQoY2FucGxheXRocm91Z2gpCi0qKiBUaGUgdGV4dCB0cmFj
ayBoYXMgb25seSBvbmUgcmVnaW9uICoqCi1FWFBFQ1RFRCAodGVzdFRyYWNrLnJlZ2lvbnMubGVu
Z3RoID09ICcxJykgT0sKLQotKiogSW5zcGVjdGluZyBjdWVzIGRpc3BsYXllZCB3aXRoaW4gcmVn
aW9uKioKLQotUlVOKHZpZGVvLmN1cnJlbnRUaW1lID0gMC4yKQotRVZFTlQoc2Vla2VkKQotVG90
YWwgY3VlcyBpbiByZWdpb246IDEKLUN1ZSBjb250ZW50IGlzOiBXZSBhcmUgaW4gTmV3IFlvcmsg
Q2l0eQotQ3VlIGxpbmVzIHZpc2libGUgZnJvbSB0aGlzIGN1ZTogMQotRVhQRUNURUQgKHRvdGFs
VmlzaWJsZUxpbmVzIDw9IHRlc3RUcmFjay5yZWdpb25zWzBdLmhlaWdodCA9PSAndHJ1ZScpIE9L
Ci0KLVJVTih2aWRlby5jdXJyZW50VGltZSA9IDAuNSkKLUVWRU5UKHNlZWtlZCkKLVRvdGFsIGN1
ZXMgaW4gcmVnaW9uOiAyCi1DdWUgY29udGVudCBpczogV2UgYXJlIGluIE5ldyBZb3JrIENpdHkK
LUN1ZSBsaW5lcyB2aXNpYmxlIGZyb20gdGhpcyBjdWU6IDEKLUN1ZSBjb250ZW50IGlzOiBTZWNv
bmQgY3VlCi1DdWUgbGluZXMgdmlzaWJsZSBmcm9tIHRoaXMgY3VlOiAxCi1FWFBFQ1RFRCAodG90
YWxWaXNpYmxlTGluZXMgPD0gdGVzdFRyYWNrLnJlZ2lvbnNbMF0uaGVpZ2h0ID09ICd0cnVlJykg
T0sKLQotUlVOKHZpZGVvLmN1cnJlbnRUaW1lID0gMSkKLUVWRU5UKHNlZWtlZCkKLVRvdGFsIGN1
ZXMgaW4gcmVnaW9uOiAzCi1DdWUgY29udGVudCBpczogV2UgYXJlIGluIE5ldyBZb3JrIENpdHkK
LUN1ZSBsaW5lcyB2aXNpYmxlIGZyb20gdGhpcyBjdWU6IDEKLUN1ZSBjb250ZW50IGlzOiBTZWNv
bmQgY3VlCi1DdWUgbGluZXMgdmlzaWJsZSBmcm9tIHRoaXMgY3VlOiAxCi1DdWUgY29udGVudCBp
czogTXVsdGlsaW5lIEN1ZQotQ3VlIGxpbmVzIHZpc2libGUgZnJvbSB0aGlzIGN1ZTogMAotRVhQ
RUNURUQgKHRvdGFsVmlzaWJsZUxpbmVzIDw9IHRlc3RUcmFjay5yZWdpb25zWzBdLmhlaWdodCA9
PSAndHJ1ZScpIE9LCi0KLVJVTih2aWRlby5jdXJyZW50VGltZSA9IDIuMykKLUVWRU5UKHNlZWtl
ZCkKLVRvdGFsIGN1ZXMgaW4gcmVnaW9uOiAyCi1DdWUgY29udGVudCBpczogTXVsdGlsaW5lIEN1
ZQotQ3VlIGxpbmVzIHZpc2libGUgZnJvbSB0aGlzIGN1ZTogMgotQ3VlIGNvbnRlbnQgaXM6IEZv
dXJ0aCBjdWUhCi1DdWUgbGluZXMgdmlzaWJsZSBmcm9tIHRoaXMgY3VlOiAwCi1FWFBFQ1RFRCAo
dG90YWxWaXNpYmxlTGluZXMgPD0gdGVzdFRyYWNrLnJlZ2lvbnNbMF0uaGVpZ2h0ID09ICd0cnVl
JykgT0sKLQotUlVOKHZpZGVvLmN1cnJlbnRUaW1lID0gMykKLUVWRU5UKHNlZWtlZCkKLVRvdGFs
IGN1ZXMgaW4gcmVnaW9uOiAxCi1DdWUgY29udGVudCBpczogRm91cnRoIGN1ZSEKLUN1ZSBsaW5l
cyB2aXNpYmxlIGZyb20gdGhpcyBjdWU6IDEKLUVYUEVDVEVEICh0b3RhbFZpc2libGVMaW5lcyA8
PSB0ZXN0VHJhY2sucmVnaW9uc1swXS5oZWlnaHQgPT0gJ3RydWUnKSBPSwotRU5EIE9GIFRFU1QK
LQpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQvdGV4dC10cmFj
ay1yZWdpb24tZGlzcGxheS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Ry
YWNrL3JlZ2lvbnMtd2VidnR0L3RleHQtdHJhY2stcmVnaW9uLWRpc3BsYXkuaHRtbAkocmV2aXNp
b24gMTY2MDA5KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQvdGV4
dC10cmFjay1yZWdpb24tZGlzcGxheS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwOCArMCww
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotICAgIDxoZWFkPgotICAgICAgICA8bWV0YSBo
dHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYt
OCIgLz4KLQotICAgICAgICA8c2NyaXB0IHNyYz0uLi8uLi9tZWRpYS1jb250cm9scy5qcz48L3Nj
cmlwdD4KLSAgICAgICAgPHNjcmlwdCBzcmM9Li4vLi4vbWVkaWEtZmlsZS5qcz48L3NjcmlwdD4K
LSAgICAgICAgPHNjcmlwdCBzcmM9Li4vLi4vdmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KLSAgICAg
ICAgPHNjcmlwdD4KLSAgICAgICAgdmFyIHRlc3RUcmFjazsKLSAgICAgICAgdmFyIHJlZ2lvbjsK
LSAgICAgICAgdmFyIGNvbnRhaW5lcjsKLSAgICAgICAgdmFyIHRvdGFsVmlzaWJsZUxpbmVzOwot
Ci0gICAgICAgIHZhciBzZWVrVGltZXMgPSBbMC4yLCAwLjUsIDEuMCwgMi4zLCAzLjBdOwotICAg
ICAgICB2YXIgY3J0U2Vla1RpbWUgPSAwOwotCi0gICAgICAgIGZ1bmN0aW9uIGNvdW50VmlzaWJs
ZUxpbmVzKGN1ZUVsZW1lbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZhciBjdWVSZWN0ID0g
Y3VlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKLSAgICAgICAgICAgIHZhciByZWdp
b25SZWN0ID0gcmVnaW9uLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwotCi0gICAgICAgICAgICB2
YXIgbGluZXNNYXRjaCA9IGN1ZUVsZW1lbnQudGV4dENvbnRlbnQubWF0Y2goL1xuL2cpOwotICAg
ICAgICAgICAgdmFyIGxpbmVzQ291bnQgPSAxICsgKGxpbmVzTWF0Y2ggPT0gbnVsbCA/IDAgOiBs
aW5lc01hdGNoLmxlbmd0aCk7Ci0gICAgICAgICAgICB2YXIgbGluZUhlaWdodCA9IGN1ZVJlY3Qu
aGVpZ2h0IC8gbGluZXNDb3VudDsKLQotICAgICAgICAgICAgdmFyIHZpc2libGVMaW5lcyA9IDA7
Ci0gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGluZXNDb3VudDsgKytpKSB7Ci0gICAgICAg
ICAgICAgIHZhciBsaW5lVG9wID0gY3VlUmVjdC50b3AgKyBpICogbGluZUhlaWdodDsKLSAgICAg
ICAgICAgICAgdmFyIGxpbmVCb3R0b20gPSBjdWVSZWN0LnRvcCArIChpKzEpICogbGluZUhlaWdo
dDsKLQotICAgICAgICAgICAgICBpZiAobGluZVRvcCA+PSByZWdpb25SZWN0LnRvcCAmJiBsaW5l
Qm90dG9tIDw9IHJlZ2lvblJlY3QuYm90dG9tKQotICAgICAgICAgICAgICAgIHZpc2libGVMaW5l
cysrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4gdmlzaWJsZUxpbmVzOwot
ICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gdGVzdFJlZ2lvbnNEaXNwbGF5KCkKLSAgICAg
ICAgewotICAgICAgICAgICAgdGVzdFRyYWNrID0gdmlkZW8udGV4dFRyYWNrc1swXTsKLQotICAg
ICAgICAgICAgY29uc29sZVdyaXRlKCIqKiBUaGUgdGV4dCB0cmFjayBoYXMgb25seSBvbmUgcmVn
aW9uICoqIik7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInRlc3RUcmFjay5yZWdpb25zLmxl
bmd0aCIsIDEpOwotCi0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICByZWdpb24gPSB0
ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ3JlZ2lvbicpOwotICAgICAgICAgICAgICBj
b250YWluZXIgPSB0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ3JlZ2lvbi1jb250YWlu
ZXInKTsKLSAgICAgICAgICAgIH0gY2F0Y2goZSkgewotICAgICAgICAgICAgICBjb25zb2xlV3Jp
dGUoZSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPioq
IEluc3BlY3RpbmcgY3VlcyBkaXNwbGF5ZWQgd2l0aGluIHJlZ2lvbioqIik7Ci0KLSAgICAgICAg
ICAgIHdhaXRGb3JFdmVudCgic2Vla2VkIiwgaW5zcGVjdFJlZ2lvblRyZWUpOwotICAgICAgICAg
ICAgc2Vla1ZpZGVvKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBzZWVrVmlkZW8o
KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOwotICAgICAgICAgICAg
cnVuKCJ2aWRlby5jdXJyZW50VGltZSA9ICIgKyBzZWVrVGltZXNbY3J0U2Vla1RpbWUrK10pOwot
ICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gaW5zcGVjdFJlZ2lvblRyZWUoKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRvdGFsIGN1ZXMgaW4gcmVnaW9uOiAiICsg
Y29udGFpbmVyLmNoaWxkcmVuLmxlbmd0aCk7Ci0gICAgICAgICAgICB0b3RhbFZpc2libGVMaW5l
cyA9IDA7Ci0KLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29udGFpbmVyLmNoaWxk
cmVuLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGN1ZSA9IGNvbnRhaW5lci5j
aGlsZHJlbltpXTsKLSAgICAgICAgICAgICAgICB2YXIgY3VlVmlzaWJsZUxpbmVzID0gY291bnRW
aXNpYmxlTGluZXMoY3VlKTsKLSAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIkN1ZSBjb250
ZW50IGlzOiAiICsgY3VlLnRleHRDb250ZW50KTsKLSAgICAgICAgICAgICAgICBjb25zb2xlV3Jp
dGUoIkN1ZSBsaW5lcyB2aXNpYmxlIGZyb20gdGhpcyBjdWU6ICIgKyBjdWVWaXNpYmxlTGluZXMp
OwotCi0gICAgICAgICAgICAgICAgdG90YWxWaXNpYmxlTGluZXMgKz0gY3VlVmlzaWJsZUxpbmVz
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInRvdGFsVmlzaWJs
ZUxpbmVzIDw9IHRlc3RUcmFjay5yZWdpb25zWzBdLmhlaWdodCIsIHRydWUpOwotCi0gICAgICAg
ICAgICBpZiAoY3J0U2Vla1RpbWUgPT0gc2Vla1RpbWVzLmxlbmd0aCkKLSAgICAgICAgICAgICAg
ICBlbmRUZXN0KCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc2Vla1ZpZGVv
KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBzdGFydFRlc3QoKQotICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAoIXdpbmRvdy5UZXh0VHJhY2tSZWdpb24pIHsKLSAgICAgICAgICAg
ICAgICBmYWlsVGVzdCgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOwotCi0gICAgICAgICAgICB2aWRlby5z
cmMgPSBmaW5kTWVkaWFGaWxlKCd2aWRlbycsICcuLi8uLi9jb250ZW50L3Rlc3QnKTsKLSAgICAg
ICAgICAgIHdhaXRGb3JFdmVudCgnY2FucGxheXRocm91Z2gnLCB0ZXN0UmVnaW9uc0Rpc3BsYXkp
OwotICAgICAgICB9Ci0KLSAgICAgICAgPC9zY3JpcHQ+Ci0gICAgPC9oZWFkPgotICAgIDxib2R5
PgotICAgICAgICA8cD5UZXN0cyBkZWZhdWx0IHJlbmRlcmluZyBmb3IgVGV4dFRyYWNrQ3VlcyB0
aGF0IGJlbG9uZyB0byBhIFRleHRUcmFja1JlZ2lvbi48L3A+Ci0gICAgICAgIDx2aWRlbyBjb250
cm9scz4KLSAgICAgICAgICAgIDx0cmFjayBzcmM9Ii4uL2NhcHRpb25zLXdlYnZ0dC9jYXB0aW9u
cy1yZWdpb25zLnZ0dCIga2luZD0iY2FwdGlvbnMiIGRlZmF1bHQgb25sb2FkPSJzdGFydFRlc3Qo
KSI+Ci0gICAgICAgIDwvdmlkZW8+Ci0gICAgPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3RyYWNrL3JlZ2lvbnMtd2Vi
dnR0L3RleHQtdHJhY2stcmVnaW9uLWRvbS1sYXlvdXQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3JlZ2lvbnMtd2VidnR0L3RleHQtdHJhY2stcmVn
aW9uLWRvbS1sYXlvdXQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNjYwMDkpCisrKyBMYXlvdXRU
ZXN0cy9tZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0dC90ZXh0LXRyYWNrLXJlZ2lvbi1kb20tbGF5
b3V0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwyMCArMCwwIEBACi1UZXN0cyBk
ZWZhdWx0IERPTSBsYXlvdXQgc3RydWN0dXJlIGZvciBhIFRleHRUcmFja1JlZ2lvbi4KLQotCi1F
VkVOVChjYW5wbGF5dGhyb3VnaCkKLSoqIFRoZSB0ZXh0IHRyYWNrIGhhcyBvbmx5IG9uZSByZWdp
b24gKioKLUVYUEVDVEVEICh0ZXN0VHJhY2sucmVnaW9ucy5sZW5ndGggPT0gJzEnKSBPSwotCi0q
KiBJbnNwZWN0aW5nIHRoZSBkZWZhdWx0IERPTSBsYXlvdXQgdXNlZCBmb3IgcmVnaW9ucyBkaXNw
bGF5ICoqCi0KLSoqIE9ubHkgb25lIHJlZ2lvbiBzaG91bGQgYmUgZGlzcGxheWVkICoqCi1FWFBF
Q1RFRCAocmVnaW9uLmNoaWxkcmVuLmxlbmd0aCA9PSAnMScpIE9LCi0KLSoqIFRoZSBjaGlsZCBv
ZiB0aGUgcmVnaW9uIHNob3VsZCBiZSB0aGUgY29udGFpbmVyICoqCi1FWFBFQ1RFRCAocmVnaW9u
LmNoaWxkcmVuWzBdID09IGNvbnRhaW5lciA9PSAndHJ1ZScpIE9LCi0KLSoqIERlZmF1bHQgcHNl
dWRvIElEcyBzaG91bGQgYmUgc2V0IHByb3Blcmx5Ci1FWFBFQ1RFRCAocmVnaW9uLmdldEF0dHJp
YnV0ZSgncHNldWRvJykgPT0gJy13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1yZWdpb24nKSBPSwot
RVhQRUNURUQgKGNvbnRhaW5lci5nZXRBdHRyaWJ1dGUoJ3BzZXVkbycpID09ICctd2Via2l0LW1l
ZGlhLXRleHQtdHJhY2stcmVnaW9uLWNvbnRhaW5lcicpIE9LCi1FTkQgT0YgVEVTVAotCkluZGV4
OiBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0dC90ZXh0LXRyYWNrLXJlZ2lv
bi1kb20tbGF5b3V0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2sv
cmVnaW9ucy13ZWJ2dHQvdGV4dC10cmFjay1yZWdpb24tZG9tLWxheW91dC5odG1sCShyZXZpc2lv
biAxNjYwMDkpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0dC90ZXh0
LXRyYWNrLXJlZ2lvbi1kb20tbGF5b3V0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNjQgKzAs
MCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLSAgICA8aGVhZD4KLSAgICAgICAgPG1ldGEg
aHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRm
LTgiIC8+Ci0KLSAgICAgICAgPHNjcmlwdCBzcmM9Li4vLi4vbWVkaWEtY29udHJvbHMuanM+PC9z
Y3JpcHQ+Ci0gICAgICAgIDxzY3JpcHQgc3JjPS4uLy4uL21lZGlhLWZpbGUuanM+PC9zY3JpcHQ+
Ci0gICAgICAgIDxzY3JpcHQgc3JjPS4uLy4uL3ZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+Ci0gICAg
ICAgIDxzY3JpcHQ+Ci0gICAgICAgIHZhciB0ZXN0VHJhY2s7Ci0gICAgICAgIHZhciByZWdpb247
Ci0gICAgICAgIHZhciBjb250YWluZXI7Ci0KLSAgICAgICAgZnVuY3Rpb24gdGVzdFJlZ2lvbnNE
aXNwbGF5KCkKLSAgICAgICAgewotICAgICAgICAgICAgdGVzdFRyYWNrID0gdmlkZW8udGV4dFRy
YWNrc1swXTsKLQotICAgICAgICAgICAgY29uc29sZVdyaXRlKCIqKiBUaGUgdGV4dCB0cmFjayBo
YXMgb25seSBvbmUgcmVnaW9uICoqIik7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInRlc3RU
cmFjay5yZWdpb25zLmxlbmd0aCIsIDEpOwotCi0gICAgICAgICAgICB0cnkgewotICAgICAgICAg
ICAgICByZWdpb24gPSB0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ3JlZ2lvbicpOwot
ICAgICAgICAgICAgICBjb250YWluZXIgPSB0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywg
J3JlZ2lvbi1jb250YWluZXInKTsKLSAgICAgICAgICAgIH0gY2F0Y2goZSkgewotICAgICAgICAg
ICAgICBjb25zb2xlV3JpdGUoZSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGNvbnNv
bGVXcml0ZSgiPGJyPioqIEluc3BlY3RpbmcgdGhlIGRlZmF1bHQgRE9NIGxheW91dCB1c2VkIGZv
ciByZWdpb25zIGRpc3BsYXkgKioiKTsKLQotICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+
KiogT25seSBvbmUgcmVnaW9uIHNob3VsZCBiZSBkaXNwbGF5ZWQgKioiKTsKLSAgICAgICAgICAg
IHRlc3RFeHBlY3RlZCgicmVnaW9uLmNoaWxkcmVuLmxlbmd0aCIsIDEpOwotCi0gICAgICAgICAg
ICBjb25zb2xlV3JpdGUoIjxicj4qKiBUaGUgY2hpbGQgb2YgdGhlIHJlZ2lvbiBzaG91bGQgYmUg
dGhlIGNvbnRhaW5lciAqKiIpOwotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWdpb24uY2hp
bGRyZW5bMF0gPT0gY29udGFpbmVyIiwgdHJ1ZSk7Ci0KLSAgICAgICAgICAgIGNvbnNvbGVXcml0
ZSgiPGJyPioqIERlZmF1bHQgcHNldWRvIElEcyBzaG91bGQgYmUgc2V0IHByb3Blcmx5Iik7Ci0g
ICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbi5nZXRBdHRyaWJ1dGUoJ3BzZXVkbycpIiwg
Ii13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1yZWdpb24iKTsKLSAgICAgICAgICAgIHRlc3RFeHBl
Y3RlZCgiY29udGFpbmVyLmdldEF0dHJpYnV0ZSgncHNldWRvJykiLCAiLXdlYmtpdC1tZWRpYS10
ZXh0LXRyYWNrLXJlZ2lvbi1jb250YWluZXIiKTsKLQotICAgICAgICAgICAgZW5kVGVzdCgpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gc3RhcnRUZXN0KCkKLSAgICAgICAgewotICAg
ICAgICAgICAgaWYgKCF3aW5kb3cuVGV4dFRyYWNrUmVnaW9uKSB7Ci0gICAgICAgICAgICAgICAg
ZmFpbFRlc3QoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKLQotICAgICAgICAgICAgdmlkZW8uc3JjID0g
ZmluZE1lZGlhRmlsZSgndmlkZW8nLCAnLi4vLi4vY29udGVudC90ZXN0Jyk7Ci0gICAgICAgICAg
ICB3YWl0Rm9yRXZlbnQoJ2NhbnBsYXl0aHJvdWdoJywgdGVzdFJlZ2lvbnNEaXNwbGF5KTsKLSAg
ICAgICAgfQotCi0gICAgICAgIDwvc2NyaXB0PgotICAgIDwvaGVhZD4KLSAgICA8Ym9keT4KLSAg
ICAgICAgPHA+VGVzdHMgZGVmYXVsdCBET00gbGF5b3V0IHN0cnVjdHVyZSBmb3IgYSBUZXh0VHJh
Y2tSZWdpb24uPC9wPgotICAgICAgICA8dmlkZW8gY29udHJvbHM+Ci0gICAgICAgICAgICA8dHJh
Y2sgc3JjPSIuLi9jYXB0aW9ucy13ZWJ2dHQvY2FwdGlvbnMtcmVnaW9ucy52dHQiIGtpbmQ9ImNh
cHRpb25zIiBkZWZhdWx0IG9ubG9hZD0ic3RhcnRUZXN0KCkiPgotICAgICAgICA8L3ZpZGVvPgot
ICAgIDwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBM
YXlvdXRUZXN0cy9tZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0dC90ZXh0LXRyYWNrLXJlZ2lvbi1s
aXN0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay9y
ZWdpb25zLXdlYnZ0dC90ZXh0LXRyYWNrLXJlZ2lvbi1saXN0LWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMTY2MDA5KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQvdGV4
dC10cmFjay1yZWdpb24tbGlzdC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNDIg
KzAsMCBAQAotVGVzdHMgVGV4dFRyYWNrUmVnaW9uTGlzdCBmdW5jdGlvbmFsaXR5OiBsZW5ndGgs
IG9wZXJhdG9yW10sIGFuZCBnZXRSZWdpb25CeUlkKCkKLQotCi0KLSoqIEltcGxpY2l0IG1vZGUg
ZGlzYWJsZWQgYW5kIHRoZSByZWdpb25zIGF0dHJpYnV0ZSBpcyBudWxsICoqCi1FWFBFQ1RFRCAo
dGVzdFRyYWNrLnRyYWNrLm1vZGUgPT0gJ2Rpc2FibGVkJykgT0sKLUVYUEVDVEVEICh0ZXN0VHJh
Y2sudHJhY2sucmVnaW9ucyA9PSAnbnVsbCcpIE9LCi0KLSoqIFRoZSByZWdpb25zIGF0dHJpYnV0
ZSBzaG91bGQgYmUgYW4gZW1wdHkgVGV4dFRyYWNrUmVnaW9uTGlzdCAqKgotRVhQRUNURUQgKHJl
Z2lvbnMgIT0gbnVsbCA9PSAndHJ1ZScpIE9LCi1FWFBFQ1RFRCAocmVnaW9ucy5sZW5ndGggPT0g
JzAnKSBPSwotCi0qKiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgdHJhY2sgYXR0cmlidXRlIG9m
IHRoZSByZWdpb24gaXMgbnVsbCoqCi1FWFBFQ1RFRCAocmVnaW9uLnRyYWNrID09ICdudWxsJykg
T0sKLQotKiogVGhlIGFkZFJlZ2lvbigpIG1ldGhvZCBwcm9wZXJseSB1cGRhdGVzIHRoZSBUZXh0
VHJhY2tSZWdpb25MaXN0IG9iamVjdCAqKgotRVhQRUNURUQgKHJlZ2lvbnMubGVuZ3RoID09ICcx
JykgT0sKLUVYUEVDVEVEIChyZWdpb25zWzBdID09IHJlZ2lvbiA9PSAndHJ1ZScpIE9LCi1FWFBF
Q1RFRCAocmVnaW9uc1swXS50cmFjayA9PSB0ZXN0VHJhY2sudHJhY2sgPT0gJ3RydWUnKSBPSwot
Ci0qKiBUaGUgdHJhY2sgYXR0cmlidXRlIHNob3VsZCBjb3JyZWN0bHkgcmVmbGVjdCB0aGUgdHJh
Y2sgdG8gd2hpY2ggdGhlIHJlZ2lvbiB3YXMgYWRkZWQgdG8qKgotRVhQRUNURUQgKHJlZ2lvbi50
cmFjayA9PSB0ZXN0VHJhY2sudHJhY2sgPT0gJ3RydWUnKSBPSwotCi0qKiBBZGRpbmcgYSByZWdp
b24gd2l0aCBhbiBleGlzdGluZyBpZCBzaG91bGQgdXBkYXRlIHRoZSBleGlzdGluZyByZWdpb24g
KioKLUVYUEVDVEVEIChyZWdpb25zWzBdLnZpZXdwb3J0QW5jaG9yWCA9PSAnNTknKSBPSwotRVhQ
RUNURUQgKHJlZ2lvbnNbMF0udmlld3BvcnRBbmNob3JZID09ICc2OCcpIE9LCi1FWFBFQ1RFRCAo
cmVnaW9uc1swXS5yZWdpb25BbmNob3JYID09ICcyMCcpIE9LCi1FWFBFQ1RFRCAocmVnaW9uc1sw
XS5yZWdpb25BbmNob3JZID09ICczMCcpIE9LCi1FWFBFQ1RFRCAocmVnaW9uc1swXS5oZWlnaHQg
PT0gJzUnKSBPSwotRVhQRUNURUQgKHJlZ2lvbnNbMF0ud2lkdGggPT0gJzg3JykgT0sKLUVYUEVD
VEVEIChyZWdpb25zWzBdLnNjcm9sbCA9PSAndXAnKSBPSwotRVhQRUNURUQgKHJlZ2lvbnNbMF0g
IT0gdXBkYXRlZFJlZ2lvbiA9PSAndHJ1ZScpIE9LCi0KLSoqIEFkZCB0aGUgcmVnaW9uIGJhY2sg
YW5kIGNoZWNrIGlmIHJlbW92ZVJlZ2lvbigpIHJlbW92ZXMgaXQgcHJvcGVybHkgKioKLUVYUEVD
VEVEIChyZWdpb25zLmxlbmd0aCA9PSAnMScpIE9LCi1FWFBFQ1RFRCAocmVnaW9ucy5sZW5ndGgg
PT0gJzAnKSBPSwotCi0qKiBJbiBjYXNlIHRoZSByZWdpb24gaXMgbm90IGZvdW5kLCBOb3RGb3Vu
ZEVycm9yIHNob3VsZCBiZSB0aHJvd24gKioKLUVycm9yOiBOb3RGb3VuZEVycm9yOiBET00gRXhj
ZXB0aW9uIDgKLQotRU5EIE9GIFRFU1QKLQpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2sv
cmVnaW9ucy13ZWJ2dHQvdGV4dC10cmFjay1yZWdpb24tbGlzdC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL21lZGlhL3RyYWNrL3JlZ2lvbnMtd2VidnR0L3RleHQtdHJhY2stcmVnaW9u
LWxpc3QuaHRtbAkocmV2aXNpb24gMTY2MDA5KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2sv
cmVnaW9ucy13ZWJ2dHQvdGV4dC10cmFjay1yZWdpb24tbGlzdC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDk4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci0gICAgPGhlYWQ+Ci0g
ICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1s
OyBjaGFyc2V0PXV0Zi04IiAvPgotCi0gICAgICAgIDxzY3JpcHQgc3JjPS4uLy4uL21lZGlhLWZp
bGUuanM+PC9zY3JpcHQ+Ci0gICAgICAgIDxzY3JpcHQgc3JjPS4uLy4uL3ZpZGVvLXRlc3QuanM+
PC9zY3JpcHQ+Ci0gICAgICAgIDxzY3JpcHQ+Ci0gICAgICAgIHZhciB0ZXN0VHJhY2s7Ci0gICAg
ICAgIHZhciByZWdpb247Ci0gICAgICAgIHZhciByZWdpb25zOwotICAgICAgICB2YXIgdXBkYXRl
ZFJlZ2lvbjsKLQotICAgICAgICBmdW5jdGlvbiBzdGFydFRlc3QoKQotICAgICAgICB7Ci0gICAg
ICAgICAgICB0ZXN0VHJhY2sgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndHJhY2sn
KVswXTsKLQotICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+KiogSW1wbGljaXQgbW9kZSBk
aXNhYmxlZCBhbmQgdGhlIHJlZ2lvbnMgYXR0cmlidXRlIGlzIG51bGwgKioiKTsKLSAgICAgICAg
ICAgIHRlc3RFeHBlY3RlZCgidGVzdFRyYWNrLnRyYWNrLm1vZGUiLCAiZGlzYWJsZWQiKTsKLSAg
ICAgICAgICAgIHRlc3RFeHBlY3RlZCgidGVzdFRyYWNrLnRyYWNrLnJlZ2lvbnMiLCBudWxsKTsK
LQotICAgICAgICAgICAgdGVzdFRyYWNrLnRyYWNrLm1vZGUgPSAiaGlkZGVuIjsKLSAgICAgICAg
ICAgIHJlZ2lvbnMgPSB0ZXN0VHJhY2sudHJhY2sucmVnaW9uczsKLQotICAgICAgICAgICAgY29u
c29sZVdyaXRlKCI8YnI+KiogVGhlIHJlZ2lvbnMgYXR0cmlidXRlIHNob3VsZCBiZSBhbiBlbXB0
eSBUZXh0VHJhY2tSZWdpb25MaXN0ICoqIik7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJl
Z2lvbnMgIT0gbnVsbCIsIHRydWUpOwotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWdpb25z
Lmxlbmd0aCIsIDApOwotCi0gICAgICAgICAgICByZWdpb24gPSBuZXcgVGV4dFRyYWNrUmVnaW9u
KCk7Ci0gICAgICAgICAgICByZWdpb24uaWQgPSAiVGVzdElkIjsKLQotICAgICAgICAgICAgY29u
c29sZVdyaXRlKCI8YnI+KiogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlIHRyYWNrIGF0dHJpYnV0
ZSBvZiB0aGUgcmVnaW9uIGlzIG51bGwqKiIpOwotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJy
ZWdpb24udHJhY2siLCBudWxsKTsKLQotICAgICAgICAgICAgdGVzdFRyYWNrLnRyYWNrLmFkZFJl
Z2lvbihyZWdpb24pOwotCi0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxicj4qKiBUaGUgYWRk
UmVnaW9uKCkgbWV0aG9kIHByb3Blcmx5IHVwZGF0ZXMgdGhlIFRleHRUcmFja1JlZ2lvbkxpc3Qg
b2JqZWN0ICoqIik7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbnMubGVuZ3RoIiwg
MSk7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbnNbMF0gPT0gcmVnaW9uIiwgdHJ1
ZSk7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbnNbMF0udHJhY2sgPT0gdGVzdFRy
YWNrLnRyYWNrIiwgdHJ1ZSk7Ci0KLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPioqIFRo
ZSB0cmFjayBhdHRyaWJ1dGUgc2hvdWxkIGNvcnJlY3RseSByZWZsZWN0IHRoZSB0cmFjayB0byB3
aGljaCB0aGUgcmVnaW9uIHdhcyBhZGRlZCB0byoqIik7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoInJlZ2lvbi50cmFjayA9PSB0ZXN0VHJhY2sudHJhY2siLCB0cnVlKTsKLQotICAgICAgICAg
ICAgdXBkYXRlZFJlZ2lvbiA9IG5ldyBUZXh0VHJhY2tSZWdpb24oKTsKLSAgICAgICAgICAgIHVw
ZGF0ZWRSZWdpb24uaWQgPSByZWdpb24uaWQ7Ci0gICAgICAgICAgICB1cGRhdGVkUmVnaW9uLnZp
ZXdwb3J0QW5jaG9yWCA9IDU5OwotICAgICAgICAgICAgdXBkYXRlZFJlZ2lvbi52aWV3cG9ydEFu
Y2hvclkgPSA2ODsKLSAgICAgICAgICAgIHVwZGF0ZWRSZWdpb24ucmVnaW9uQW5jaG9yWCA9IDIw
OwotICAgICAgICAgICAgdXBkYXRlZFJlZ2lvbi5yZWdpb25BbmNob3JZID0gMzA7Ci0gICAgICAg
ICAgICB1cGRhdGVkUmVnaW9uLmhlaWdodCA9IDU7Ci0gICAgICAgICAgICB1cGRhdGVkUmVnaW9u
LndpZHRoID0gODc7Ci0gICAgICAgICAgICB1cGRhdGVkUmVnaW9uLnNjcm9sbCA9ICJ1cCI7Ci0K
LSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPioqIEFkZGluZyBhIHJlZ2lvbiB3aXRoIGFu
IGV4aXN0aW5nIGlkIHNob3VsZCB1cGRhdGUgdGhlIGV4aXN0aW5nIHJlZ2lvbiAqKiIpOwotICAg
ICAgICAgICAgdGVzdFRyYWNrLnRyYWNrLmFkZFJlZ2lvbih1cGRhdGVkUmVnaW9uKTsKLSAgICAg
ICAgICAgIHRlc3RFeHBlY3RlZCgicmVnaW9uc1swXS52aWV3cG9ydEFuY2hvclgiLCB1cGRhdGVk
UmVnaW9uLnZpZXdwb3J0QW5jaG9yWCk7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lv
bnNbMF0udmlld3BvcnRBbmNob3JZIiwgdXBkYXRlZFJlZ2lvbi52aWV3cG9ydEFuY2hvclkpOwot
ICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWdpb25zWzBdLnJlZ2lvbkFuY2hvclgiLCB1cGRh
dGVkUmVnaW9uLnJlZ2lvbkFuY2hvclgpOwotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWdp
b25zWzBdLnJlZ2lvbkFuY2hvclkiLCB1cGRhdGVkUmVnaW9uLnJlZ2lvbkFuY2hvclkpOwotICAg
ICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWdpb25zWzBdLmhlaWdodCIsIHVwZGF0ZWRSZWdpb24u
aGVpZ2h0KTsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVnaW9uc1swXS53aWR0aCIsIHVw
ZGF0ZWRSZWdpb24ud2lkdGgpOwotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWdpb25zWzBd
LnNjcm9sbCIsIHVwZGF0ZWRSZWdpb24uc2Nyb2xsKTsKLQotICAgICAgICAgICAgdGVzdEV4cGVj
dGVkKCJyZWdpb25zWzBdICE9IHVwZGF0ZWRSZWdpb24iLCB0cnVlKTsKLQotICAgICAgICAgICAg
Y29uc29sZVdyaXRlKCI8YnI+KiogQWRkIHRoZSByZWdpb24gYmFjayBhbmQgY2hlY2sgaWYgcmVt
b3ZlUmVnaW9uKCkgcmVtb3ZlcyBpdCBwcm9wZXJseSAqKiIpOwotICAgICAgICAgICAgdGVzdFRy
YWNrLnRyYWNrLmFkZFJlZ2lvbihyZWdpb24pOwotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJy
ZWdpb25zLmxlbmd0aCIsIDEpOwotICAgICAgICAgICAgdGVzdFRyYWNrLnRyYWNrLnJlbW92ZVJl
Z2lvbihyZWdpb24pOwotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWdpb25zLmxlbmd0aCIs
IDApOwotCi0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxicj4qKiBJbiBjYXNlIHRoZSByZWdp
b24gaXMgbm90IGZvdW5kLCBOb3RGb3VuZEVycm9yIHNob3VsZCBiZSB0aHJvd24gKioiKTsKLSAg
ICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgIHRlc3RUcmFjay50cmFjay5yZW1vdmVSZWdp
b24ocmVnaW9uKTsKLSAgICAgICAgICAgIH0gY2F0Y2goZSkgewotICAgICAgICAgICAgICBjb25z
b2xlV3JpdGUoZSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIEZJWE1FKDEwOTgx
OCk6IFVwZGF0ZSB0ZXN0IGZvciBtdWx0aXBsZSBpbml0aWFsIHJlZ2lvbnMgKGFmdGVyIHBhcnNp
bmcgaXMgc3VwcG9ydGVkKS4KLQotICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKLSAgICAg
ICAgICAgIGVuZFRlc3QoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHN0YXJ0VGVz
dFdpdGhEZWxheSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNldFRpbWVvdXQoc3RhcnRUZXN0
LCAxMDApOwotICAgICAgICB9Ci0gICAgICAgIDwvc2NyaXB0PgotICAgIDwvaGVhZD4KLSAgICA8
Ym9keSBvbmxvYWQ9InN0YXJ0VGVzdFdpdGhEZWxheSgpIj4KLSAgICAgICAgPHA+VGVzdHMgVGV4
dFRyYWNrUmVnaW9uTGlzdCBmdW5jdGlvbmFsaXR5OiBsZW5ndGgsIG9wZXJhdG9yW10sIGFuZCBn
ZXRSZWdpb25CeUlkKCk8L3A+Ci0gICAgICAgIDx2aWRlbz4KLSAgICAgICAgICAgIDx0cmFjayBp
ZD0idGVzdFRyYWNrIiBzcmM9ImNhcHRpb25zLXdlYnZ0dC9jYXB0aW9ucy1mYXN0LnZ0dCI+Ci0g
ICAgICAgIDwvdmlkZW8+Ci0gICAgPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
bWVkaWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQvdGV4dC10cmFjay1yZWdpb24tcGFyc2VyLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay9yZWdpb25zLXdl
YnZ0dC90ZXh0LXRyYWNrLXJlZ2lvbi1wYXJzZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNjYw
MDkpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0dC90ZXh0LXRyYWNr
LXJlZ2lvbi1wYXJzZXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDI5ICswLDAg
QEAKLVRlc3RzIHByb3BlciBwYXJzaW5nIG9mIHZhcmlvdXMgcmVnaW9ucyBwcmVzZW50IGluIFdl
YlZUVCBoZWFkZXIgYXJlYS4KLQotCi1FWFBFQ1RFRCAodmlkZW8udGV4dFRyYWNrc1swXS5yZWdp
b25zLmxlbmd0aCA9PSAnNScpIE9LCi0KLUVYUEVDVEVEIChyZWdpb24uaWQgPT0gJ3JlZ2lvbl93
aXRob3V0X3NldHRpbmdzJykgT0sKLQotRVhQRUNURUQgKHJlZ2lvbi5pZCA9PSAncmVnaW9uX3dp
dGhfYWxsX3NldHRpbmdzJykgT0sKLUVYUEVDVEVEIChyZWdpb24ud2lkdGggPT0gJzMyJykgT0sK
LUVYUEVDVEVEIChyZWdpb24uaGVpZ2h0ID09ICc1JykgT0sKLUVYUEVDVEVEIChyZWdpb24ucmVn
aW9uQW5jaG9yWCA9PSAnNDEnKSBPSwotRVhQRUNURUQgKHJlZ2lvbi5yZWdpb25BbmNob3JZID09
ICcyMCcpIE9LCi1FWFBFQ1RFRCAocmVnaW9uLnZpZXdwb3J0QW5jaG9yWCA9PSAnMzEnKSBPSwot
RVhQRUNURUQgKHJlZ2lvbi52aWV3cG9ydEFuY2hvclkgPT0gJzg0JykgT0sKLUVYUEVDVEVEIChy
ZWdpb24uc2Nyb2xsID09ICd1cCcpIE9LCi0KLUVYUEVDVEVEIChyZWdpb24uaWQgPT0gJ3JlZ2lv
bl9mbG9hdGluZ19wb2ludF9hbmNob3InKSBPSwotRVhQRUNURUQgKE1hdGgucm91bmQocmVnaW9u
LnJlZ2lvbkFuY2hvclggKiAxMDAwKSA9PSAnNDExMzMnKSBPSwotRVhQRUNURUQgKE1hdGgucm91
bmQocmVnaW9uLnJlZ2lvbkFuY2hvclkgKiAxMDAwKSA9PSAnMjA0MjAnKSBPSwotRVhQRUNURUQg
KE1hdGgucm91bmQocmVnaW9uLnZpZXdwb3J0QW5jaG9yWCAqIDEwMDApID09ICczMjMzMCcpIE9L
Ci1FWFBFQ1RFRCAoTWF0aC5yb3VuZChyZWdpb24udmlld3BvcnRBbmNob3JZICogMTAwMCkgPT0g
JzMyNDQwJykgT0sKLQotRVhQRUNURUQgKHJlZ2lvbi5pZCA9PSAnbm90X3VuaXF1ZV9pZCcpIE9L
Ci1FWFBFQ1RFRCAocmVnaW9uLndpZHRoID09ICc2NycpIE9LCi0KLUVYUEVDVEVEIChyZWdpb24u
aWQgPT0gJycpIE9LCi0KLUVORCBPRiBURVNUCi0KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Ry
YWNrL3JlZ2lvbnMtd2VidnR0L3RleHQtdHJhY2stcmVnaW9uLXBhcnNlci5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3JlZ2lvbnMtd2VidnR0L3RleHQtdHJhY2st
cmVnaW9uLXBhcnNlci5odG1sCShyZXZpc2lvbiAxNjYwMDkpCisrKyBMYXlvdXRUZXN0cy9tZWRp
YS90cmFjay9yZWdpb25zLXdlYnZ0dC90ZXh0LXRyYWNrLXJlZ2lvbi1wYXJzZXIuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMSw2NyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotICAg
IDxoZWFkPgotICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9
InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgLz4KLQotICAgICAgICA8c2NyaXB0IHNyYz0uLi8u
Li9tZWRpYS1maWxlLmpzPjwvc2NyaXB0PgotICAgICAgICA8c2NyaXB0IHNyYz0uLi8uLi92aWRl
by10ZXN0LmpzPjwvc2NyaXB0PgotICAgICAgICA8c2NyaXB0PgotICAgICAgICB2YXIgcmVnaW9u
OwotCi0gICAgICAgIGZ1bmN0aW9uIHN0YXJ0VGVzdCgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghd2luZG93LlRleHRUcmFja1JlZ2lvbikgewotICAgICAgICAgICAgICAgIGZhaWxUZXN0
KCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICBmaW5kTWVkaWFFbGVtZW50KCk7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnRl
eHRUcmFja3NbMF0ucmVnaW9ucy5sZW5ndGgiLCA1KTsKLQotICAgICAgICAgICAgY29uc29sZVdy
aXRlKCIiKTsKLSAgICAgICAgICAgIHJlZ2lvbiA9IHZpZGVvLnRleHRUcmFja3NbMF0ucmVnaW9u
c1swXTsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVnaW9uLmlkIiwgInJlZ2lvbl93aXRo
b3V0X3NldHRpbmdzIik7Ci0KLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7Ci0gICAgICAg
ICAgICByZWdpb24gPSB2aWRlby50ZXh0VHJhY2tzWzBdLnJlZ2lvbnNbMV07Ci0gICAgICAgICAg
ICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbi5pZCIsICJyZWdpb25fd2l0aF9hbGxfc2V0dGluZ3MiKTsK
LSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVnaW9uLndpZHRoIiwgMzIpOwotICAgICAgICAg
ICAgdGVzdEV4cGVjdGVkKCJyZWdpb24uaGVpZ2h0IiwgNSk7Ci0gICAgICAgICAgICB0ZXN0RXhw
ZWN0ZWQoInJlZ2lvbi5yZWdpb25BbmNob3JYIiwgNDEpOwotICAgICAgICAgICAgdGVzdEV4cGVj
dGVkKCJyZWdpb24ucmVnaW9uQW5jaG9yWSIsIDIwKTsKLSAgICAgICAgICAgIHRlc3RFeHBlY3Rl
ZCgicmVnaW9uLnZpZXdwb3J0QW5jaG9yWCIsIDMxKTsKLSAgICAgICAgICAgIHRlc3RFeHBlY3Rl
ZCgicmVnaW9uLnZpZXdwb3J0QW5jaG9yWSIsIDg0KTsKLSAgICAgICAgICAgIHRlc3RFeHBlY3Rl
ZCgicmVnaW9uLnNjcm9sbCIsICJ1cCIpOwotCi0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIp
OwotICAgICAgICAgICAgcmVnaW9uID0gdmlkZW8udGV4dFRyYWNrc1swXS5yZWdpb25zWzJdOwot
ICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWdpb24uaWQiLCAicmVnaW9uX2Zsb2F0aW5nX3Bv
aW50X2FuY2hvciIpOwotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJNYXRoLnJvdW5kKHJlZ2lv
bi5yZWdpb25BbmNob3JYICogMTAwMCkiLCA0MTEzMyk7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoIk1hdGgucm91bmQocmVnaW9uLnJlZ2lvbkFuY2hvclkgKiAxMDAwKSIsIDIwNDIwKTsKLSAg
ICAgICAgICAgIHRlc3RFeHBlY3RlZCgiTWF0aC5yb3VuZChyZWdpb24udmlld3BvcnRBbmNob3JY
ICogMTAwMCkiLCAzMjMzMCk7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoIk1hdGgucm91bmQo
cmVnaW9uLnZpZXdwb3J0QW5jaG9yWSAqIDEwMDApIiwgMzI0NDApOwotCi0gICAgICAgICAgICBj
b25zb2xlV3JpdGUoIiIpOwotICAgICAgICAgICAgcmVnaW9uID0gdmlkZW8udGV4dFRyYWNrc1sw
XS5yZWdpb25zWzNdOwotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWdpb24uaWQiLCAibm90
X3VuaXF1ZV9pZCIpOwotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWdpb24ud2lkdGgiLCA2
Nyk7Ci0KLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7Ci0gICAgICAgICAgICByZWdpb24g
PSB2aWRlby50ZXh0VHJhY2tzWzBdLnJlZ2lvbnNbNF07Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoInJlZ2lvbi5pZCIsICIiKTsKLQotICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKLSAg
ICAgICAgICAgIGVuZFRlc3QoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHNldENhcHRpb25EaXNw
bGF5TW9kZSgnQXV0b21hdGljJyk7Ci0gICAgICAgIDwvc2NyaXB0PgotICAgIDwvaGVhZD4KLSAg
ICA8Ym9keT4KLSAgICAgICAgPHA+VGVzdHMgcHJvcGVyIHBhcnNpbmcgb2YgdmFyaW91cyByZWdp
b25zIHByZXNlbnQgaW4gV2ViVlRUIGhlYWRlciBhcmVhLjwvcD4KLSAgICAgICAgPHZpZGVvIGNv
bnRyb2xzPgotICAgICAgICAgICAgPHRyYWNrIHNyYz0iLi4vY2FwdGlvbnMtd2VidnR0L2hlYWRl
ci1yZWdpb25zLnZ0dCIga2luZD0iY2FwdGlvbnMiIGRlZmF1bHQgb25sb2FkPSJzdGFydFRlc3Qo
KSI+Ci0gICAgICAgIDwvdmlkZW8+Ci0KLSAgICA8L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9tZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0dC92dHQtcmVnaW9uLWNvbnN0cnVjdG9y
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay9yZWdp
b25zLXdlYnZ0dC92dHQtcmVnaW9uLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MTY1OTk2KQkoZnJvbSBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0dC90ZXh0
LXRyYWNrLXJlZ2lvbi1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQ6MTY1OTk2KQorKysgTGF5b3V0
VGVzdHMvbWVkaWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQvdnR0LXJlZ2lvbi1jb25zdHJ1Y3Rvci1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMjAgQEAKK1Rlc3RzIHRoZSBj
b25zdHJ1Y3RvciBhbmQgbXV0YXRpb24gb2YgVGV4dFRyYWNrUmVnaW9uLgorCisqKiBUZXN0IHRo
ZSBkZWZhdWx0IGluZGV4cyBvZiBhIHJlZ2lvbi4gKioKK0VYUEVDVEVEIChyZWdpb24udHJhY2sg
PT0gJ251bGwnKSBPSworRVhQRUNURUQgKHJlZ2lvbi5zY3JvbGwgPT0gJycpIE9LCitFWFBFQ1RF
RCAocmVnaW9uLnZpZXdwb3J0QW5jaG9yWCA9PSAnMCcpIE9LCitFWFBFQ1RFRCAocmVnaW9uLnZp
ZXdwb3J0QW5jaG9yWSA9PSAnMTAwJykgT0sKK0VYUEVDVEVEIChyZWdpb24ucmVnaW9uQW5jaG9y
WCA9PSAnMCcpIE9LCitFWFBFQ1RFRCAocmVnaW9uLnJlZ2lvbkFuY2hvclkgPT0gJzEwMCcpIE9L
CitFWFBFQ1RFRCAocmVnaW9uLmhlaWdodCA9PSAnMycpIE9LCitFWFBFQ1RFRCAocmVnaW9uLndp
ZHRoID09ICcxMDAnKSBPSworCisqKiBUZXN0IHRoYXQgaW5jb3JyZWN0IG11dGF0aW9uIGtlZXBz
IHByZXZpb3VzIHZhbGlkIHZhbHVlcy4gKioKK1JVTihyZWdpb24uc2Nyb2xsID0gJ2ludmFsaWQt
c2Nyb2xsLXZhbHVlJykKK0Vycm9yOiBTeW50YXhFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMgorRVhQ
RUNURUQgKHJlZ2lvbi5zY3JvbGwgPT0gJycpIE9LCisKK0ludmFsaWQgcGVyY2VudGFnZSB2YWx1
ZTogLTEKK1JVTihyZWdpb24udmlld3BvcnRBbmNob3JYID0gaW52YWxpZFBlcmNlbnRhZ2VWYWx1
ZXNbaW5kZXhdKQorRXJyb3I6IEluZGV4U2l6ZUVycm9yOiBET00gRXhjZXB0aW9uIDEKK0VYUEVD
VEVEIChyZWdpb24udmlld3BvcnRBbmNob3JYID09ICcwJykgT0sKK1JVTihyZWdpb24udmlld3Bv
cnRBbmNob3JZID0gaW52YWxpZFBlcmNlbnRhZ2VWYWx1ZXNbaW5kZXhdKQorRXJyb3I6IEluZGV4
U2l6ZUVycm9yOiBET00gRXhjZXB0aW9uIDEKK0VYUEVDVEVEIChyZWdpb24udmlld3BvcnRBbmNo
b3JZID09ICcxMDAnKSBPSworUlVOKHJlZ2lvbi5yZWdpb25BbmNob3JYID0gaW52YWxpZFBlcmNl
bnRhZ2VWYWx1ZXNbaW5kZXhdKQorRXJyb3I6IEluZGV4U2l6ZUVycm9yOiBET00gRXhjZXB0aW9u
IDEKK0VYUEVDVEVEIChyZWdpb24ucmVnaW9uQW5jaG9yWCA9PSAnMCcpIE9LCitSVU4ocmVnaW9u
LnJlZ2lvbkFuY2hvclkgPSBpbnZhbGlkUGVyY2VudGFnZVZhbHVlc1tpbmRleF0pCitFcnJvcjog
SW5kZXhTaXplRXJyb3I6IERPTSBFeGNlcHRpb24gMQorRVhQRUNURUQgKHJlZ2lvbi5yZWdpb25B
bmNob3JZID09ICcxMDAnKSBPSworUlVOKHJlZ2lvbi53aWR0aCA9IGludmFsaWRQZXJjZW50YWdl
VmFsdWVzW2luZGV4XSkKK0Vycm9yOiBJbmRleFNpemVFcnJvcjogRE9NIEV4Y2VwdGlvbiAxCitF
WFBFQ1RFRCAocmVnaW9uLndpZHRoID09ICcxMDAnKSBPSworCitJbnZhbGlkIHBlcmNlbnRhZ2Ug
dmFsdWU6IDEwMQorUlVOKHJlZ2lvbi52aWV3cG9ydEFuY2hvclggPSBpbnZhbGlkUGVyY2VudGFn
ZVZhbHVlc1tpbmRleF0pCitFcnJvcjogSW5kZXhTaXplRXJyb3I6IERPTSBFeGNlcHRpb24gMQor
RVhQRUNURUQgKHJlZ2lvbi52aWV3cG9ydEFuY2hvclggPT0gJzAnKSBPSworUlVOKHJlZ2lvbi52
aWV3cG9ydEFuY2hvclkgPSBpbnZhbGlkUGVyY2VudGFnZVZhbHVlc1tpbmRleF0pCitFcnJvcjog
SW5kZXhTaXplRXJyb3I6IERPTSBFeGNlcHRpb24gMQorRVhQRUNURUQgKHJlZ2lvbi52aWV3cG9y
dEFuY2hvclkgPT0gJzEwMCcpIE9LCitSVU4ocmVnaW9uLnJlZ2lvbkFuY2hvclggPSBpbnZhbGlk
UGVyY2VudGFnZVZhbHVlc1tpbmRleF0pCitFcnJvcjogSW5kZXhTaXplRXJyb3I6IERPTSBFeGNl
cHRpb24gMQorRVhQRUNURUQgKHJlZ2lvbi5yZWdpb25BbmNob3JYID09ICcwJykgT0sKK1JVTihy
ZWdpb24ucmVnaW9uQW5jaG9yWSA9IGludmFsaWRQZXJjZW50YWdlVmFsdWVzW2luZGV4XSkKK0Vy
cm9yOiBJbmRleFNpemVFcnJvcjogRE9NIEV4Y2VwdGlvbiAxCitFWFBFQ1RFRCAocmVnaW9uLnJl
Z2lvbkFuY2hvclkgPT0gJzEwMCcpIE9LCitSVU4ocmVnaW9uLndpZHRoID0gaW52YWxpZFBlcmNl
bnRhZ2VWYWx1ZXNbaW5kZXhdKQorRXJyb3I6IEluZGV4U2l6ZUVycm9yOiBET00gRXhjZXB0aW9u
IDEKK0VYUEVDVEVEIChyZWdpb24ud2lkdGggPT0gJzEwMCcpIE9LCisKK0ludmFsaWQgcGVyY2Vu
dGFnZSB2YWx1ZTogLUluZmluaXR5CitSVU4ocmVnaW9uLnZpZXdwb3J0QW5jaG9yWCA9IGludmFs
aWRQZXJjZW50YWdlVmFsdWVzW2luZGV4XSkKK1R5cGVFcnJvcjogVHlwZSBlcnJvcgorRVhQRUNU
RUQgKHJlZ2lvbi52aWV3cG9ydEFuY2hvclggPT0gJzAnKSBPSworUlVOKHJlZ2lvbi52aWV3cG9y
dEFuY2hvclkgPSBpbnZhbGlkUGVyY2VudGFnZVZhbHVlc1tpbmRleF0pCitUeXBlRXJyb3I6IFR5
cGUgZXJyb3IKK0VYUEVDVEVEIChyZWdpb24udmlld3BvcnRBbmNob3JZID09ICcxMDAnKSBPSwor
UlVOKHJlZ2lvbi5yZWdpb25BbmNob3JYID0gaW52YWxpZFBlcmNlbnRhZ2VWYWx1ZXNbaW5kZXhd
KQorVHlwZUVycm9yOiBUeXBlIGVycm9yCitFWFBFQ1RFRCAocmVnaW9uLnJlZ2lvbkFuY2hvclgg
PT0gJzAnKSBPSworUlVOKHJlZ2lvbi5yZWdpb25BbmNob3JZID0gaW52YWxpZFBlcmNlbnRhZ2VW
YWx1ZXNbaW5kZXhdKQorVHlwZUVycm9yOiBUeXBlIGVycm9yCitFWFBFQ1RFRCAocmVnaW9uLnJl
Z2lvbkFuY2hvclkgPT0gJzEwMCcpIE9LCitSVU4ocmVnaW9uLndpZHRoID0gaW52YWxpZFBlcmNl
bnRhZ2VWYWx1ZXNbaW5kZXhdKQorVHlwZUVycm9yOiBUeXBlIGVycm9yCitFWFBFQ1RFRCAocmVn
aW9uLndpZHRoID09ICcxMDAnKSBPSworCitJbnZhbGlkIHBlcmNlbnRhZ2UgdmFsdWU6IEluZmlu
aXR5CitSVU4ocmVnaW9uLnZpZXdwb3J0QW5jaG9yWCA9IGludmFsaWRQZXJjZW50YWdlVmFsdWVz
W2luZGV4XSkKK1R5cGVFcnJvcjogVHlwZSBlcnJvcgorRVhQRUNURUQgKHJlZ2lvbi52aWV3cG9y
dEFuY2hvclggPT0gJzAnKSBPSworUlVOKHJlZ2lvbi52aWV3cG9ydEFuY2hvclkgPSBpbnZhbGlk
UGVyY2VudGFnZVZhbHVlc1tpbmRleF0pCitUeXBlRXJyb3I6IFR5cGUgZXJyb3IKK0VYUEVDVEVE
IChyZWdpb24udmlld3BvcnRBbmNob3JZID09ICcxMDAnKSBPSworUlVOKHJlZ2lvbi5yZWdpb25B
bmNob3JYID0gaW52YWxpZFBlcmNlbnRhZ2VWYWx1ZXNbaW5kZXhdKQorVHlwZUVycm9yOiBUeXBl
IGVycm9yCitFWFBFQ1RFRCAocmVnaW9uLnJlZ2lvbkFuY2hvclggPT0gJzAnKSBPSworUlVOKHJl
Z2lvbi5yZWdpb25BbmNob3JZID0gaW52YWxpZFBlcmNlbnRhZ2VWYWx1ZXNbaW5kZXhdKQorVHlw
ZUVycm9yOiBUeXBlIGVycm9yCitFWFBFQ1RFRCAocmVnaW9uLnJlZ2lvbkFuY2hvclkgPT0gJzEw
MCcpIE9LCitSVU4ocmVnaW9uLndpZHRoID0gaW52YWxpZFBlcmNlbnRhZ2VWYWx1ZXNbaW5kZXhd
KQorVHlwZUVycm9yOiBUeXBlIGVycm9yCitFWFBFQ1RFRCAocmVnaW9uLndpZHRoID09ICcxMDAn
KSBPSworCitJbnZhbGlkIHBlcmNlbnRhZ2UgdmFsdWU6IE5hTgorUlVOKHJlZ2lvbi52aWV3cG9y
dEFuY2hvclggPSBpbnZhbGlkUGVyY2VudGFnZVZhbHVlc1tpbmRleF0pCitUeXBlRXJyb3I6IFR5
cGUgZXJyb3IKK0VYUEVDVEVEIChyZWdpb24udmlld3BvcnRBbmNob3JYID09ICcwJykgT0sKK1JV
TihyZWdpb24udmlld3BvcnRBbmNob3JZID0gaW52YWxpZFBlcmNlbnRhZ2VWYWx1ZXNbaW5kZXhd
KQorVHlwZUVycm9yOiBUeXBlIGVycm9yCitFWFBFQ1RFRCAocmVnaW9uLnZpZXdwb3J0QW5jaG9y
WSA9PSAnMTAwJykgT0sKK1JVTihyZWdpb24ucmVnaW9uQW5jaG9yWCA9IGludmFsaWRQZXJjZW50
YWdlVmFsdWVzW2luZGV4XSkKK1R5cGVFcnJvcjogVHlwZSBlcnJvcgorRVhQRUNURUQgKHJlZ2lv
bi5yZWdpb25BbmNob3JYID09ICcwJykgT0sKK1JVTihyZWdpb24ucmVnaW9uQW5jaG9yWSA9IGlu
dmFsaWRQZXJjZW50YWdlVmFsdWVzW2luZGV4XSkKK1R5cGVFcnJvcjogVHlwZSBlcnJvcgorRVhQ
RUNURUQgKHJlZ2lvbi5yZWdpb25BbmNob3JZID09ICcxMDAnKSBPSworUlVOKHJlZ2lvbi53aWR0
aCA9IGludmFsaWRQZXJjZW50YWdlVmFsdWVzW2luZGV4XSkKK1R5cGVFcnJvcjogVHlwZSBlcnJv
cgorRVhQRUNURUQgKHJlZ2lvbi53aWR0aCA9PSAnMTAwJykgT0sKK1JVTihyZWdpb24uaGVpZ2h0
ID0gLTEpCitFcnJvcjogSW5kZXhTaXplRXJyb3I6IERPTSBFeGNlcHRpb24gMQorRVhQRUNURUQg
KHJlZ2lvbi5oZWlnaHQgPT0gJzMnKSBPSworCisqKiBUZXN0IHRoYXQgcHJvcGVyIG11dGF0aW9u
IGtlZXBzIGFzc2lnbmVkIHZhbHVlLiAqKgorUlVOKHJlZ2lvbi5oZWlnaHQgPSAxMzApCitFWFBF
Q1RFRCAocmVnaW9uLmhlaWdodCA9PSAnMTMwJykgT0sKK1JVTihyZWdpb24udmlld3BvcnRBbmNo
b3JYID0gNjQpCitFWFBFQ1RFRCAocmVnaW9uLnZpZXdwb3J0QW5jaG9yWCA9PSAnNjQnKSBPSwor
UlVOKHJlZ2lvbi52aWV3cG9ydEFuY2hvclkgPSAzMikKK0VYUEVDVEVEIChyZWdpb24udmlld3Bv
cnRBbmNob3JZID09ICczMicpIE9LCitSVU4ocmVnaW9uLnJlZ2lvbkFuY2hvclggPSAxNikKK0VY
UEVDVEVEIChyZWdpb24ucmVnaW9uQW5jaG9yWCA9PSAnMTYnKSBPSworUlVOKHJlZ2lvbi5yZWdp
b25BbmNob3JZID0gOCkKK0VYUEVDVEVEIChyZWdpb24ucmVnaW9uQW5jaG9yWSA9PSAnOCcpIE9L
CitSVU4ocmVnaW9uLndpZHRoID0gNDIpCitFWFBFQ1RFRCAocmVnaW9uLndpZHRoID09ICc0Micp
IE9LCitFTkQgT0YgVEVTVAorCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay9yZWdpb25z
LXdlYnZ0dC92dHQtcmVnaW9uLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0dC92dHQtcmVnaW9uLWNvbnN0
cnVjdG9yLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQorKysgTGF5b3V0VGVzdHMvbWVkaWEv
dHJhY2svcmVnaW9ucy13ZWJ2dHQvdnR0LXJlZ2lvbi1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw3IEBACi1UZXN0cyB0aGUgY29uc3RydWN0b3IgYW5k
IG11dGF0aW9uIG9mIFRleHRUcmFja1JlZ2lvbi4KK1Rlc3RzIHRoZSBjb25zdHJ1Y3RvciBhbmQg
bXV0YXRpb24gb2YgVlRUUmVnaW9uLgogCisqKiBUZXN0IGluc3RhbmNlb2YgVlRUUmVnaW9uLiAq
KgorRVhQRUNURUQgKHJlZ2lvbiBpbnN0YW5jZW9mIFZUVFJlZ2lvbiA9PSAndHJ1ZScpIE9LCiAq
KiBUZXN0IHRoZSBkZWZhdWx0IGluZGV4cyBvZiBhIHJlZ2lvbi4gKioKIEVYUEVDVEVEIChyZWdp
b24udHJhY2sgPT0gJ251bGwnKSBPSwogRVhQRUNURUQgKHJlZ2lvbi5zY3JvbGwgPT0gJycpIE9L
CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0dC92dHQtcmVnaW9u
LWNvbnN0cnVjdG9yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2sv
cmVnaW9ucy13ZWJ2dHQvdnR0LXJlZ2lvbi1jb25zdHJ1Y3Rvci5odG1sCShyZXZpc2lvbiAxNjU5
OTYpCShmcm9tIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3JlZ2lvbnMtd2VidnR0L3RleHQtdHJh
Y2stcmVnaW9uLWNvbnN0cnVjdG9yLmh0bWw6MTY1OTk2KQorKysgTGF5b3V0VGVzdHMvbWVkaWEv
dHJhY2svcmVnaW9ucy13ZWJ2dHQvdnR0LXJlZ2lvbi1jb25zdHJ1Y3Rvci5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNzcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhl
YWQ+CisgICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4
dC9odG1sOyBjaGFyc2V0PXV0Zi04IiAvPgorCisgICAgICAgIDxzY3JpcHQgc3JjPS4uLy4uL21l
ZGlhLWZpbGUuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPS4uLy4uL3ZpZGVvLXRl
c3QuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICB2YXIgcmVnaW9u
OworICAgICAgICAgICAgdmFyIGludmFsaWRQZXJjZW50YWdlVmFsdWVzOworCisgICAgICAgICAg
ICBmdW5jdGlvbiBzdGFydFRlc3QoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlm
ICghd2luZG93LlRleHRUcmFja1JlZ2lvbikgeworICAgICAgICAgICAgICAgICAgICBmYWlsVGVz
dCgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgcmVnaW9uID0gbmV3IFRleHRUcmFja1JlZ2lvbigpOworCisgICAgICAg
ICAgICAgICAgY29uc29sZVdyaXRlKCIqKiBUZXN0IHRoZSBkZWZhdWx0IGluZGV4cyBvZiBhIHJl
Z2lvbi4gKioiKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbi50cmFjayIs
IG51bGwpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVnaW9uLnNjcm9sbCIsICIi
KTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbi52aWV3cG9ydEFuY2hvclgi
LCAwKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbi52aWV3cG9ydEFuY2hv
clkiLCAxMDApOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVnaW9uLnJlZ2lvbkFu
Y2hvclgiLCAwKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbi5yZWdpb25B
bmNob3JZIiwgMTAwKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbi5oZWln
aHQiLCAzKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbi53aWR0aCIsIDEw
MCk7CisKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxicj4qKiBUZXN0IHRoYXQgaW5j
b3JyZWN0IG11dGF0aW9uIGtlZXBzIHByZXZpb3VzIHZhbGlkIHZhbHVlcy4gKioiKTsKKyAgICAg
ICAgICAgICAgICBydW4oInJlZ2lvbi5zY3JvbGwgPSAnaW52YWxpZC1zY3JvbGwtdmFsdWUnIik7
CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWdpb24uc2Nyb2xsIiwgIiIpOworCisg
ICAgICAgICAgICAgICAgaW52YWxpZFBlcmNlbnRhZ2VWYWx1ZXMgPSBbLTEsIDEwMSwgLUluZmlu
aXR5LCBJbmZpbml0eSwgTmFOXTsKKyAgICAgICAgICAgICAgICBmb3IgKGluZGV4IGluIGludmFs
aWRQZXJjZW50YWdlVmFsdWVzKSB7CisgICAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxi
cj5JbnZhbGlkIHBlcmNlbnRhZ2UgdmFsdWU6ICIgKyBpbnZhbGlkUGVyY2VudGFnZVZhbHVlc1tp
bmRleF0pOworICAgICAgICAgICAgICAgICAgcnVuKCJyZWdpb24udmlld3BvcnRBbmNob3JYID0g
aW52YWxpZFBlcmNlbnRhZ2VWYWx1ZXNbaW5kZXhdIik7CisgICAgICAgICAgICAgICAgICB0ZXN0
RXhwZWN0ZWQoInJlZ2lvbi52aWV3cG9ydEFuY2hvclgiLCAwKTsKKyAgICAgICAgICAgICAgICAg
IHJ1bigicmVnaW9uLnZpZXdwb3J0QW5jaG9yWSA9IGludmFsaWRQZXJjZW50YWdlVmFsdWVzW2lu
ZGV4XSIpOworICAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWdpb24udmlld3BvcnRB
bmNob3JZIiwgMTAwKTsKKyAgICAgICAgICAgICAgICAgIHJ1bigicmVnaW9uLnJlZ2lvbkFuY2hv
clggPSBpbnZhbGlkUGVyY2VudGFnZVZhbHVlc1tpbmRleF0iKTsKKyAgICAgICAgICAgICAgICAg
IHRlc3RFeHBlY3RlZCgicmVnaW9uLnJlZ2lvbkFuY2hvclgiLCAwKTsKKyAgICAgICAgICAgICAg
ICAgIHJ1bigicmVnaW9uLnJlZ2lvbkFuY2hvclkgPSBpbnZhbGlkUGVyY2VudGFnZVZhbHVlc1tp
bmRleF0iKTsKKyAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVnaW9uLnJlZ2lvbkFu
Y2hvclkiLCAxMDApOworICAgICAgICAgICAgICAgICAgcnVuKCJyZWdpb24ud2lkdGggPSBpbnZh
bGlkUGVyY2VudGFnZVZhbHVlc1tpbmRleF0iKTsKKyAgICAgICAgICAgICAgICAgIHRlc3RFeHBl
Y3RlZCgicmVnaW9uLndpZHRoIiwgMTAwKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICBydW4oInJlZ2lvbi5oZWlnaHQgPSAtMSIpOworICAgICAgICAgICAgICAgIHRlc3RF
eHBlY3RlZCgicmVnaW9uLmhlaWdodCIsIDMpOworCisgICAgICAgICAgICAgICAgY29uc29sZVdy
aXRlKCI8YnI+KiogVGVzdCB0aGF0IHByb3BlciBtdXRhdGlvbiBrZWVwcyBhc3NpZ25lZCB2YWx1
ZS4gKioiKTsKKyAgICAgICAgICAgICAgICBydW4oInJlZ2lvbi5oZWlnaHQgPSAxMzAiKTsKKyAg
ICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbi5oZWlnaHQiLCAxMzApOworCisgICAg
ICAgICAgICAgICAgcnVuKCJyZWdpb24udmlld3BvcnRBbmNob3JYID0gNjQiKTsKKyAgICAgICAg
ICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbi52aWV3cG9ydEFuY2hvclgiLCA2NCk7CisgICAg
ICAgICAgICAgICAgcnVuKCJyZWdpb24udmlld3BvcnRBbmNob3JZID0gMzIiKTsKKyAgICAgICAg
ICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbi52aWV3cG9ydEFuY2hvclkiLCAzMik7CisgICAg
ICAgICAgICAgICAgcnVuKCJyZWdpb24ucmVnaW9uQW5jaG9yWCA9IDE2Iik7CisgICAgICAgICAg
ICAgICAgdGVzdEV4cGVjdGVkKCJyZWdpb24ucmVnaW9uQW5jaG9yWCIsIDE2KTsKKyAgICAgICAg
ICAgICAgICBydW4oInJlZ2lvbi5yZWdpb25BbmNob3JZID0gOCIpOworICAgICAgICAgICAgICAg
IHRlc3RFeHBlY3RlZCgicmVnaW9uLnJlZ2lvbkFuY2hvclkiLCA4KTsKKworICAgICAgICAgICAg
ICAgIHJ1bigicmVnaW9uLndpZHRoID0gNDIiKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoInJlZ2lvbi53aWR0aCIsIDQyKTsKKworICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkg
b25sb2FkPSJzdGFydFRlc3QoKSI+CisgICAgICAgIDxwPlRlc3RzIHRoZSBjb25zdHJ1Y3RvciBh
bmQgbXV0YXRpb24gb2YgVGV4dFRyYWNrUmVnaW9uLjwvcD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0dC92dHQtcmVnaW9u
LWNvbnN0cnVjdG9yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2sv
cmVnaW9ucy13ZWJ2dHQvdnR0LXJlZ2lvbi1jb25zdHJ1Y3Rvci5odG1sCSh3b3JraW5nIGNvcHkp
CisrKyBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0dC92dHQtcmVnaW9uLWNv
bnN0cnVjdG9yLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTExLDEyICsxMSwxNCBAQAogCiAgICAg
ICAgICAgICBmdW5jdGlvbiBzdGFydFRlc3QoKQogICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGlmICghd2luZG93LlRleHRUcmFja1JlZ2lvbikgeworICAgICAgICAgICAgICAgIGlmICgh
d2luZG93LlZUVFJlZ2lvbikgewogICAgICAgICAgICAgICAgICAgICBmYWlsVGVzdCgpOwogICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICAgICAgcmVnaW9uID0gbmV3IFRleHRUcmFja1JlZ2lvbigpOworICAgICAgICAgICAgICAgIHJl
Z2lvbiA9IG5ldyBWVFRSZWdpb24oKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIioq
IFRlc3QgaW5zdGFuY2VvZiBWVFRSZWdpb24uICoqIik7CisgICAgICAgICAgICAgICAgdGVzdEV4
cGVjdGVkKCJyZWdpb24gaW5zdGFuY2VvZiBWVFRSZWdpb24iLCB0cnVlKTsKIAogICAgICAgICAg
ICAgICAgIGNvbnNvbGVXcml0ZSgiKiogVGVzdCB0aGUgZGVmYXVsdCBpbmRleHMgb2YgYSByZWdp
b24uICoqIik7CiAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWdpb24udHJhY2siLCBu
dWxsKTsKQEAgLTcyLDYgKzc0LDYgQEAKICAgICAgICAgPC9zY3JpcHQ+CiAgICAgPC9oZWFkPgog
ICAgIDxib2R5IG9ubG9hZD0ic3RhcnRUZXN0KCkiPgotICAgICAgICA8cD5UZXN0cyB0aGUgY29u
c3RydWN0b3IgYW5kIG11dGF0aW9uIG9mIFRleHRUcmFja1JlZ2lvbi48L3A+CisgICAgICAgIDxw
PlRlc3RzIHRoZSBjb25zdHJ1Y3RvciBhbmQgbXV0YXRpb24gb2YgVlRUUmVnaW9uLjwvcD4KICAg
ICA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay9yZWdpb25z
LXdlYnZ0dC92dHQtcmVnaW9uLWRpc3BsYXktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL21lZGlhL3RyYWNrL3JlZ2lvbnMtd2VidnR0L3Z0dC1yZWdpb24tZGlzcGxheS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDE2NTk5NikJKGZyb20gTGF5b3V0VGVzdHMvbWVkaWEvdHJh
Y2svcmVnaW9ucy13ZWJ2dHQvdGV4dC10cmFjay1yZWdpb24tZGlzcGxheS1leHBlY3RlZC50eHQ6
MTY1OTk2KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQvdnR0LXJl
Z2lvbi1kaXNwbGF5LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUzIEBA
CitUZXN0cyBkZWZhdWx0IHJlbmRlcmluZyBmb3IgVGV4dFRyYWNrQ3VlcyB0aGF0IGJlbG9uZyB0
byBhIFRleHRUcmFja1JlZ2lvbi4KKworCitFVkVOVChjYW5wbGF5dGhyb3VnaCkKKyoqIFRoZSB0
ZXh0IHRyYWNrIGhhcyBvbmx5IG9uZSByZWdpb24gKioKK0VYUEVDVEVEICh0ZXN0VHJhY2sucmVn
aW9ucy5sZW5ndGggPT0gJzEnKSBPSworCisqKiBJbnNwZWN0aW5nIGN1ZXMgZGlzcGxheWVkIHdp
dGhpbiByZWdpb24qKgorCitSVU4odmlkZW8uY3VycmVudFRpbWUgPSAwLjIpCitFVkVOVChzZWVr
ZWQpCitUb3RhbCBjdWVzIGluIHJlZ2lvbjogMQorQ3VlIGNvbnRlbnQgaXM6IFdlIGFyZSBpbiBO
ZXcgWW9yayBDaXR5CitDdWUgbGluZXMgdmlzaWJsZSBmcm9tIHRoaXMgY3VlOiAxCitFWFBFQ1RF
RCAodG90YWxWaXNpYmxlTGluZXMgPD0gdGVzdFRyYWNrLnJlZ2lvbnNbMF0uaGVpZ2h0ID09ICd0
cnVlJykgT0sKKworUlVOKHZpZGVvLmN1cnJlbnRUaW1lID0gMC41KQorRVZFTlQoc2Vla2VkKQor
VG90YWwgY3VlcyBpbiByZWdpb246IDIKK0N1ZSBjb250ZW50IGlzOiBXZSBhcmUgaW4gTmV3IFlv
cmsgQ2l0eQorQ3VlIGxpbmVzIHZpc2libGUgZnJvbSB0aGlzIGN1ZTogMQorQ3VlIGNvbnRlbnQg
aXM6IFNlY29uZCBjdWUKK0N1ZSBsaW5lcyB2aXNpYmxlIGZyb20gdGhpcyBjdWU6IDEKK0VYUEVD
VEVEICh0b3RhbFZpc2libGVMaW5lcyA8PSB0ZXN0VHJhY2sucmVnaW9uc1swXS5oZWlnaHQgPT0g
J3RydWUnKSBPSworCitSVU4odmlkZW8uY3VycmVudFRpbWUgPSAxKQorRVZFTlQoc2Vla2VkKQor
VG90YWwgY3VlcyBpbiByZWdpb246IDMKK0N1ZSBjb250ZW50IGlzOiBXZSBhcmUgaW4gTmV3IFlv
cmsgQ2l0eQorQ3VlIGxpbmVzIHZpc2libGUgZnJvbSB0aGlzIGN1ZTogMQorQ3VlIGNvbnRlbnQg
aXM6IFNlY29uZCBjdWUKK0N1ZSBsaW5lcyB2aXNpYmxlIGZyb20gdGhpcyBjdWU6IDEKK0N1ZSBj
b250ZW50IGlzOiBNdWx0aWxpbmUgQ3VlCitDdWUgbGluZXMgdmlzaWJsZSBmcm9tIHRoaXMgY3Vl
OiAwCitFWFBFQ1RFRCAodG90YWxWaXNpYmxlTGluZXMgPD0gdGVzdFRyYWNrLnJlZ2lvbnNbMF0u
aGVpZ2h0ID09ICd0cnVlJykgT0sKKworUlVOKHZpZGVvLmN1cnJlbnRUaW1lID0gMi4zKQorRVZF
TlQoc2Vla2VkKQorVG90YWwgY3VlcyBpbiByZWdpb246IDIKK0N1ZSBjb250ZW50IGlzOiBNdWx0
aWxpbmUgQ3VlCitDdWUgbGluZXMgdmlzaWJsZSBmcm9tIHRoaXMgY3VlOiAyCitDdWUgY29udGVu
dCBpczogRm91cnRoIGN1ZSEKK0N1ZSBsaW5lcyB2aXNpYmxlIGZyb20gdGhpcyBjdWU6IDAKK0VY
UEVDVEVEICh0b3RhbFZpc2libGVMaW5lcyA8PSB0ZXN0VHJhY2sucmVnaW9uc1swXS5oZWlnaHQg
PT0gJ3RydWUnKSBPSworCitSVU4odmlkZW8uY3VycmVudFRpbWUgPSAzKQorRVZFTlQoc2Vla2Vk
KQorVG90YWwgY3VlcyBpbiByZWdpb246IDEKK0N1ZSBjb250ZW50IGlzOiBGb3VydGggY3VlIQor
Q3VlIGxpbmVzIHZpc2libGUgZnJvbSB0aGlzIGN1ZTogMQorRVhQRUNURUQgKHRvdGFsVmlzaWJs
ZUxpbmVzIDw9IHRlc3RUcmFjay5yZWdpb25zWzBdLmhlaWdodCA9PSAndHJ1ZScpIE9LCitFTkQg
T0YgVEVTVAorCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0dC92
dHQtcmVnaW9uLWRpc3BsYXktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L21lZGlhL3RyYWNrL3JlZ2lvbnMtd2VidnR0L3Z0dC1yZWdpb24tZGlzcGxheS1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKKysrIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3JlZ2lvbnMtd2Vi
dnR0L3Z0dC1yZWdpb24tZGlzcGxheS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEs
NCArMSw0IEBACi1UZXN0cyBkZWZhdWx0IHJlbmRlcmluZyBmb3IgVGV4dFRyYWNrQ3VlcyB0aGF0
IGJlbG9uZyB0byBhIFRleHRUcmFja1JlZ2lvbi4KK1Rlc3RzIGRlZmF1bHQgcmVuZGVyaW5nIGZv
ciBUZXh0VHJhY2tDdWVzIHRoYXQgYmVsb25nIHRvIGEgVlRUUmVnaW9uLgogCiAKIEVWRU5UKGNh
bnBsYXl0aHJvdWdoKQpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svcmVnaW9ucy13ZWJ2
dHQvdnR0LXJlZ2lvbi1kaXNwbGF5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVk
aWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQvdnR0LXJlZ2lvbi1kaXNwbGF5Lmh0bWwJKHJldmlzaW9u
IDE2NTk5NikJKGZyb20gTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQvdGV4
dC10cmFjay1yZWdpb24tZGlzcGxheS5odG1sOjE2NTk5NikKKysrIExheW91dFRlc3RzL21lZGlh
L3RyYWNrL3JlZ2lvbnMtd2VidnR0L3Z0dC1yZWdpb24tZGlzcGxheS5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTA4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFk
PgorICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQv
aHRtbDsgY2hhcnNldD11dGYtOCIgLz4KKworICAgICAgICA8c2NyaXB0IHNyYz0uLi8uLi9tZWRp
YS1jb250cm9scy5qcz48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Li4vLi4vbWVkaWEt
ZmlsZS5qcz48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Li4vLi4vdmlkZW8tdGVzdC5q
cz48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgdmFyIHRlc3RUcmFjazsKKyAg
ICAgICAgdmFyIHJlZ2lvbjsKKyAgICAgICAgdmFyIGNvbnRhaW5lcjsKKyAgICAgICAgdmFyIHRv
dGFsVmlzaWJsZUxpbmVzOworCisgICAgICAgIHZhciBzZWVrVGltZXMgPSBbMC4yLCAwLjUsIDEu
MCwgMi4zLCAzLjBdOworICAgICAgICB2YXIgY3J0U2Vla1RpbWUgPSAwOworCisgICAgICAgIGZ1
bmN0aW9uIGNvdW50VmlzaWJsZUxpbmVzKGN1ZUVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBjdWVSZWN0ID0gY3VlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKyAg
ICAgICAgICAgIHZhciByZWdpb25SZWN0ID0gcmVnaW9uLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgp
OworCisgICAgICAgICAgICB2YXIgbGluZXNNYXRjaCA9IGN1ZUVsZW1lbnQudGV4dENvbnRlbnQu
bWF0Y2goL1xuL2cpOworICAgICAgICAgICAgdmFyIGxpbmVzQ291bnQgPSAxICsgKGxpbmVzTWF0
Y2ggPT0gbnVsbCA/IDAgOiBsaW5lc01hdGNoLmxlbmd0aCk7CisgICAgICAgICAgICB2YXIgbGlu
ZUhlaWdodCA9IGN1ZVJlY3QuaGVpZ2h0IC8gbGluZXNDb3VudDsKKworICAgICAgICAgICAgdmFy
IHZpc2libGVMaW5lcyA9IDA7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGluZXNDb3Vu
dDsgKytpKSB7CisgICAgICAgICAgICAgIHZhciBsaW5lVG9wID0gY3VlUmVjdC50b3AgKyBpICog
bGluZUhlaWdodDsKKyAgICAgICAgICAgICAgdmFyIGxpbmVCb3R0b20gPSBjdWVSZWN0LnRvcCAr
IChpKzEpICogbGluZUhlaWdodDsKKworICAgICAgICAgICAgICBpZiAobGluZVRvcCA+PSByZWdp
b25SZWN0LnRvcCAmJiBsaW5lQm90dG9tIDw9IHJlZ2lvblJlY3QuYm90dG9tKQorICAgICAgICAg
ICAgICAgIHZpc2libGVMaW5lcysrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1
cm4gdmlzaWJsZUxpbmVzOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gdGVzdFJlZ2lv
bnNEaXNwbGF5KCkKKyAgICAgICAgeworICAgICAgICAgICAgdGVzdFRyYWNrID0gdmlkZW8udGV4
dFRyYWNrc1swXTsKKworICAgICAgICAgICAgY29uc29sZVdyaXRlKCIqKiBUaGUgdGV4dCB0cmFj
ayBoYXMgb25seSBvbmUgcmVnaW9uICoqIik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInRl
c3RUcmFjay5yZWdpb25zLmxlbmd0aCIsIDEpOworCisgICAgICAgICAgICB0cnkgeworICAgICAg
ICAgICAgICByZWdpb24gPSB0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ3JlZ2lvbicp
OworICAgICAgICAgICAgICBjb250YWluZXIgPSB0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRl
bywgJ3JlZ2lvbi1jb250YWluZXInKTsKKyAgICAgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNv
bnNvbGVXcml0ZSgiPGJyPioqIEluc3BlY3RpbmcgY3VlcyBkaXNwbGF5ZWQgd2l0aGluIHJlZ2lv
bioqIik7CisKKyAgICAgICAgICAgIHdhaXRGb3JFdmVudCgic2Vla2VkIiwgaW5zcGVjdFJlZ2lv
blRyZWUpOworICAgICAgICAgICAgc2Vla1ZpZGVvKCk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBzZWVrVmlkZW8oKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUo
IiIpOworICAgICAgICAgICAgcnVuKCJ2aWRlby5jdXJyZW50VGltZSA9ICIgKyBzZWVrVGltZXNb
Y3J0U2Vla1RpbWUrK10pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gaW5zcGVjdFJl
Z2lvblRyZWUoKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRvdGFsIGN1
ZXMgaW4gcmVnaW9uOiAiICsgY29udGFpbmVyLmNoaWxkcmVuLmxlbmd0aCk7CisgICAgICAgICAg
ICB0b3RhbFZpc2libGVMaW5lcyA9IDA7CisKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgY29udGFpbmVyLmNoaWxkcmVuLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgdmFy
IGN1ZSA9IGNvbnRhaW5lci5jaGlsZHJlbltpXTsKKyAgICAgICAgICAgICAgICB2YXIgY3VlVmlz
aWJsZUxpbmVzID0gY291bnRWaXNpYmxlTGluZXMoY3VlKTsKKyAgICAgICAgICAgICAgICBjb25z
b2xlV3JpdGUoIkN1ZSBjb250ZW50IGlzOiAiICsgY3VlLnRleHRDb250ZW50KTsKKyAgICAgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoIkN1ZSBsaW5lcyB2aXNpYmxlIGZyb20gdGhpcyBjdWU6ICIg
KyBjdWVWaXNpYmxlTGluZXMpOworCisgICAgICAgICAgICAgICAgdG90YWxWaXNpYmxlTGluZXMg
Kz0gY3VlVmlzaWJsZUxpbmVzOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0ZXN0RXhw
ZWN0ZWQoInRvdGFsVmlzaWJsZUxpbmVzIDw9IHRlc3RUcmFjay5yZWdpb25zWzBdLmhlaWdodCIs
IHRydWUpOworCisgICAgICAgICAgICBpZiAoY3J0U2Vla1RpbWUgPT0gc2Vla1RpbWVzLmxlbmd0
aCkKKyAgICAgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgc2Vla1ZpZGVvKCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzdGFy
dFRlc3QoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIXdpbmRvdy5UZXh0VHJhY2tSZWdp
b24pIHsKKyAgICAgICAgICAgICAgICBmYWlsVGVzdCgpOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOworCisg
ICAgICAgICAgICB2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCd2aWRlbycsICcuLi8uLi9jb250
ZW50L3Rlc3QnKTsKKyAgICAgICAgICAgIHdhaXRGb3JFdmVudCgnY2FucGxheXRocm91Z2gnLCB0
ZXN0UmVnaW9uc0Rpc3BsYXkpOworICAgICAgICB9CisKKyAgICAgICAgPC9zY3JpcHQ+CisgICAg
PC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8cD5UZXN0cyBkZWZhdWx0IHJlbmRlcmluZyBm
b3IgVGV4dFRyYWNrQ3VlcyB0aGF0IGJlbG9uZyB0byBhIFRleHRUcmFja1JlZ2lvbi48L3A+Cisg
ICAgICAgIDx2aWRlbyBjb250cm9scz4KKyAgICAgICAgICAgIDx0cmFjayBzcmM9Ii4uL2NhcHRp
b25zLXdlYnZ0dC9jYXB0aW9ucy1yZWdpb25zLnZ0dCIga2luZD0iY2FwdGlvbnMiIGRlZmF1bHQg
b25sb2FkPSJzdGFydFRlc3QoKSI+CisgICAgICAgIDwvdmlkZW8+CisgICAgPC9ib2R5PgorPC9o
dG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL21lZGlh
L3RyYWNrL3JlZ2lvbnMtd2VidnR0L3Z0dC1yZWdpb24tZGlzcGxheS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3JlZ2lvbnMtd2VidnR0L3Z0dC1yZWdpb24tZGlz
cGxheS5odG1sCSh3b3JraW5nIGNvcHkpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay9yZWdp
b25zLXdlYnZ0dC92dHQtcmVnaW9uLWRpc3BsYXkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtODYs
NyArODYsNyBAQAogCiAgICAgICAgIGZ1bmN0aW9uIHN0YXJ0VGVzdCgpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGlmICghd2luZG93LlRleHRUcmFja1JlZ2lvbikgeworICAgICAgICAgICAgaWYg
KCF3aW5kb3cuVlRUUmVnaW9uKSB7CiAgICAgICAgICAgICAgICAgZmFpbFRlc3QoKTsKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC0xMDAsNyArMTAwLDcgQEAKICAg
ICAgICAgPC9zY3JpcHQ+CiAgICAgPC9oZWFkPgogICAgIDxib2R5PgotICAgICAgICA8cD5UZXN0
cyBkZWZhdWx0IHJlbmRlcmluZyBmb3IgVGV4dFRyYWNrQ3VlcyB0aGF0IGJlbG9uZyB0byBhIFRl
eHRUcmFja1JlZ2lvbi48L3A+CisgICAgICAgIDxwPlRlc3RzIGRlZmF1bHQgcmVuZGVyaW5nIGZv
ciBUZXh0VHJhY2tDdWVzIHRoYXQgYmVsb25nIHRvIGEgVlRUUmVnaW9uLjwvcD4KICAgICAgICAg
PHZpZGVvIGNvbnRyb2xzPgogICAgICAgICAgICAgPHRyYWNrIHNyYz0iLi4vY2FwdGlvbnMtd2Vi
dnR0L2NhcHRpb25zLXJlZ2lvbnMudnR0IiBraW5kPSJjYXB0aW9ucyIgZGVmYXVsdCBvbmxvYWQ9
InN0YXJ0VGVzdCgpIj4KICAgICAgICAgPC92aWRlbz4KSW5kZXg6IExheW91dFRlc3RzL21lZGlh
L3RyYWNrL3JlZ2lvbnMtd2VidnR0L3Z0dC1yZWdpb24tZG9tLWxheW91dC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQvdnR0
LXJlZ2lvbi1kb20tbGF5b3V0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTY1OTk2KQkoZnJvbSBM
YXlvdXRUZXN0cy9tZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0dC90ZXh0LXRyYWNrLXJlZ2lvbi1k
b20tbGF5b3V0LWV4cGVjdGVkLnR4dDoxNjU5OTYpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS90cmFj
ay9yZWdpb25zLXdlYnZ0dC92dHQtcmVnaW9uLWRvbS1sYXlvdXQtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMjAgQEAKK1Rlc3RzIGRlZmF1bHQgRE9NIGxheW91dCBzdHJ1
Y3R1cmUgZm9yIGEgVGV4dFRyYWNrUmVnaW9uLgorCisKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQor
KiogVGhlIHRleHQgdHJhY2sgaGFzIG9ubHkgb25lIHJlZ2lvbiAqKgorRVhQRUNURUQgKHRlc3RU
cmFjay5yZWdpb25zLmxlbmd0aCA9PSAnMScpIE9LCisKKyoqIEluc3BlY3RpbmcgdGhlIGRlZmF1
bHQgRE9NIGxheW91dCB1c2VkIGZvciByZWdpb25zIGRpc3BsYXkgKioKKworKiogT25seSBvbmUg
cmVnaW9uIHNob3VsZCBiZSBkaXNwbGF5ZWQgKioKK0VYUEVDVEVEIChyZWdpb24uY2hpbGRyZW4u
bGVuZ3RoID09ICcxJykgT0sKKworKiogVGhlIGNoaWxkIG9mIHRoZSByZWdpb24gc2hvdWxkIGJl
IHRoZSBjb250YWluZXIgKioKK0VYUEVDVEVEIChyZWdpb24uY2hpbGRyZW5bMF0gPT0gY29udGFp
bmVyID09ICd0cnVlJykgT0sKKworKiogRGVmYXVsdCBwc2V1ZG8gSURzIHNob3VsZCBiZSBzZXQg
cHJvcGVybHkKK0VYUEVDVEVEIChyZWdpb24uZ2V0QXR0cmlidXRlKCdwc2V1ZG8nKSA9PSAnLXdl
YmtpdC1tZWRpYS10ZXh0LXRyYWNrLXJlZ2lvbicpIE9LCitFWFBFQ1RFRCAoY29udGFpbmVyLmdl
dEF0dHJpYnV0ZSgncHNldWRvJykgPT0gJy13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1yZWdpb24t
Y29udGFpbmVyJykgT0sKK0VORCBPRiBURVNUCisKSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Ry
YWNrL3JlZ2lvbnMtd2VidnR0L3Z0dC1yZWdpb24tZG9tLWxheW91dC1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQvdnR0LXJl
Z2lvbi1kb20tbGF5b3V0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQorKysgTGF5b3V0VGVz
dHMvbWVkaWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQvdnR0LXJlZ2lvbi1kb20tbGF5b3V0LWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLVRlc3RzIGRlZmF1bHQgRE9N
IGxheW91dCBzdHJ1Y3R1cmUgZm9yIGEgVGV4dFRyYWNrUmVnaW9uLgorVGVzdHMgZGVmYXVsdCBE
T00gbGF5b3V0IHN0cnVjdHVyZSBmb3IgYSBWVFRSZWdpb24uCiAKIAogRVZFTlQoY2FucGxheXRo
cm91Z2gpCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0dC92dHQt
cmVnaW9uLWRvbS1sYXlvdXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS90
cmFjay9yZWdpb25zLXdlYnZ0dC92dHQtcmVnaW9uLWRvbS1sYXlvdXQuaHRtbAkocmV2aXNpb24g
MTY1OTk2KQkoZnJvbSBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0dC90ZXh0
LXRyYWNrLXJlZ2lvbi1kb20tbGF5b3V0Lmh0bWw6MTY1OTk2KQorKysgTGF5b3V0VGVzdHMvbWVk
aWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQvdnR0LXJlZ2lvbi1kb20tbGF5b3V0Lmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw2NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8
aGVhZD4KKyAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0
ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIC8+CisKKyAgICAgICAgPHNjcmlwdCBzcmM9Li4vLi4v
bWVkaWEtY29udHJvbHMuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPS4uLy4uL21l
ZGlhLWZpbGUuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPS4uLy4uL3ZpZGVvLXRl
c3QuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHZhciB0ZXN0VHJhY2s7
CisgICAgICAgIHZhciByZWdpb247CisgICAgICAgIHZhciBjb250YWluZXI7CisKKyAgICAgICAg
ZnVuY3Rpb24gdGVzdFJlZ2lvbnNEaXNwbGF5KCkKKyAgICAgICAgeworICAgICAgICAgICAgdGVz
dFRyYWNrID0gdmlkZW8udGV4dFRyYWNrc1swXTsKKworICAgICAgICAgICAgY29uc29sZVdyaXRl
KCIqKiBUaGUgdGV4dCB0cmFjayBoYXMgb25seSBvbmUgcmVnaW9uICoqIik7CisgICAgICAgICAg
ICB0ZXN0RXhwZWN0ZWQoInRlc3RUcmFjay5yZWdpb25zLmxlbmd0aCIsIDEpOworCisgICAgICAg
ICAgICB0cnkgeworICAgICAgICAgICAgICByZWdpb24gPSB0ZXh0VHJhY2tEaXNwbGF5RWxlbWVu
dCh2aWRlbywgJ3JlZ2lvbicpOworICAgICAgICAgICAgICBjb250YWluZXIgPSB0ZXh0VHJhY2tE
aXNwbGF5RWxlbWVudCh2aWRlbywgJ3JlZ2lvbi1jb250YWluZXInKTsKKyAgICAgICAgICAgIH0g
Y2F0Y2goZSkgeworICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoZSk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPioqIEluc3BlY3RpbmcgdGhlIGRlZmF1
bHQgRE9NIGxheW91dCB1c2VkIGZvciByZWdpb25zIGRpc3BsYXkgKioiKTsKKworICAgICAgICAg
ICAgY29uc29sZVdyaXRlKCI8YnI+KiogT25seSBvbmUgcmVnaW9uIHNob3VsZCBiZSBkaXNwbGF5
ZWQgKioiKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVnaW9uLmNoaWxkcmVuLmxlbmd0
aCIsIDEpOworCisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxicj4qKiBUaGUgY2hpbGQgb2Yg
dGhlIHJlZ2lvbiBzaG91bGQgYmUgdGhlIGNvbnRhaW5lciAqKiIpOworICAgICAgICAgICAgdGVz
dEV4cGVjdGVkKCJyZWdpb24uY2hpbGRyZW5bMF0gPT0gY29udGFpbmVyIiwgdHJ1ZSk7CisKKyAg
ICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPioqIERlZmF1bHQgcHNldWRvIElEcyBzaG91bGQg
YmUgc2V0IHByb3Blcmx5Iik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbi5nZXRB
dHRyaWJ1dGUoJ3BzZXVkbycpIiwgIi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1yZWdpb24iKTsK
KyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiY29udGFpbmVyLmdldEF0dHJpYnV0ZSgncHNldWRv
JykiLCAiLXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLXJlZ2lvbi1jb250YWluZXIiKTsKKworICAg
ICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc3RhcnRU
ZXN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCF3aW5kb3cuVGV4dFRyYWNrUmVnaW9u
KSB7CisgICAgICAgICAgICAgICAgZmFpbFRlc3QoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKworICAg
ICAgICAgICAgdmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgndmlkZW8nLCAnLi4vLi4vY29udGVu
dC90ZXN0Jyk7CisgICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ2NhbnBsYXl0aHJvdWdoJywgdGVz
dFJlZ2lvbnNEaXNwbGF5KTsKKyAgICAgICAgfQorCisgICAgICAgIDwvc2NyaXB0PgorICAgIDwv
aGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHA+VGVzdHMgZGVmYXVsdCBET00gbGF5b3V0IHN0
cnVjdHVyZSBmb3IgYSBUZXh0VHJhY2tSZWdpb24uPC9wPgorICAgICAgICA8dmlkZW8gY29udHJv
bHM+CisgICAgICAgICAgICA8dHJhY2sgc3JjPSIuLi9jYXB0aW9ucy13ZWJ2dHQvY2FwdGlvbnMt
cmVnaW9ucy52dHQiIGtpbmQ9ImNhcHRpb25zIiBkZWZhdWx0IG9ubG9hZD0ic3RhcnRUZXN0KCki
PgorICAgICAgICA8L3ZpZGVvPgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0
dC92dHQtcmVnaW9uLWRvbS1sYXlvdXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9t
ZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0dC92dHQtcmVnaW9uLWRvbS1sYXlvdXQuaHRtbAkod29y
a2luZyBjb3B5KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQvdnR0
LXJlZ2lvbi1kb20tbGF5b3V0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAK
IAogICAgICAgICBmdW5jdGlvbiBzdGFydFRlc3QoKQogICAgICAgICB7Ci0gICAgICAgICAgICBp
ZiAoIXdpbmRvdy5UZXh0VHJhY2tSZWdpb24pIHsKKyAgICAgICAgICAgIGlmICghd2luZG93LlZU
VFJlZ2lvbikgewogICAgICAgICAgICAgICAgIGZhaWxUZXN0KCk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtNTYsNyArNTYsNyBAQAogICAgICAgICA8L3Njcmlw
dD4KICAgICA8L2hlYWQ+CiAgICAgPGJvZHk+Ci0gICAgICAgIDxwPlRlc3RzIGRlZmF1bHQgRE9N
IGxheW91dCBzdHJ1Y3R1cmUgZm9yIGEgVGV4dFRyYWNrUmVnaW9uLjwvcD4KKyAgICAgICAgPHA+
VGVzdHMgZGVmYXVsdCBET00gbGF5b3V0IHN0cnVjdHVyZSBmb3IgYSBWVFRSZWdpb24uPC9wPgog
ICAgICAgICA8dmlkZW8gY29udHJvbHM+CiAgICAgICAgICAgICA8dHJhY2sgc3JjPSIuLi9jYXB0
aW9ucy13ZWJ2dHQvY2FwdGlvbnMtcmVnaW9ucy52dHQiIGtpbmQ9ImNhcHRpb25zIiBkZWZhdWx0
IG9ubG9hZD0ic3RhcnRUZXN0KCkiPgogICAgICAgICA8L3ZpZGVvPgpJbmRleDogTGF5b3V0VGVz
dHMvbWVkaWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQvdnR0LXJlZ2lvbi1saXN0LWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0dC92
dHQtcmVnaW9uLWxpc3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNjU5OTYpCShmcm9tIExheW91
dFRlc3RzL21lZGlhL3RyYWNrL3JlZ2lvbnMtd2VidnR0L3RleHQtdHJhY2stcmVnaW9uLWxpc3Qt
ZXhwZWN0ZWQudHh0OjE2NTk5NikKKysrIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3JlZ2lvbnMt
d2VidnR0L3Z0dC1yZWdpb24tbGlzdC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw0MiBAQAorVGVzdHMgVGV4dFRyYWNrUmVnaW9uTGlzdCBmdW5jdGlvbmFsaXR5OiBsZW5n
dGgsIG9wZXJhdG9yW10sIGFuZCBnZXRSZWdpb25CeUlkKCkKKworCisKKyoqIEltcGxpY2l0IG1v
ZGUgZGlzYWJsZWQgYW5kIHRoZSByZWdpb25zIGF0dHJpYnV0ZSBpcyBudWxsICoqCitFWFBFQ1RF
RCAodGVzdFRyYWNrLnRyYWNrLm1vZGUgPT0gJ2Rpc2FibGVkJykgT0sKK0VYUEVDVEVEICh0ZXN0
VHJhY2sudHJhY2sucmVnaW9ucyA9PSAnbnVsbCcpIE9LCisKKyoqIFRoZSByZWdpb25zIGF0dHJp
YnV0ZSBzaG91bGQgYmUgYW4gZW1wdHkgVGV4dFRyYWNrUmVnaW9uTGlzdCAqKgorRVhQRUNURUQg
KHJlZ2lvbnMgIT0gbnVsbCA9PSAndHJ1ZScpIE9LCitFWFBFQ1RFRCAocmVnaW9ucy5sZW5ndGgg
PT0gJzAnKSBPSworCisqKiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgdHJhY2sgYXR0cmlidXRl
IG9mIHRoZSByZWdpb24gaXMgbnVsbCoqCitFWFBFQ1RFRCAocmVnaW9uLnRyYWNrID09ICdudWxs
JykgT0sKKworKiogVGhlIGFkZFJlZ2lvbigpIG1ldGhvZCBwcm9wZXJseSB1cGRhdGVzIHRoZSBU
ZXh0VHJhY2tSZWdpb25MaXN0IG9iamVjdCAqKgorRVhQRUNURUQgKHJlZ2lvbnMubGVuZ3RoID09
ICcxJykgT0sKK0VYUEVDVEVEIChyZWdpb25zWzBdID09IHJlZ2lvbiA9PSAndHJ1ZScpIE9LCitF
WFBFQ1RFRCAocmVnaW9uc1swXS50cmFjayA9PSB0ZXN0VHJhY2sudHJhY2sgPT0gJ3RydWUnKSBP
SworCisqKiBUaGUgdHJhY2sgYXR0cmlidXRlIHNob3VsZCBjb3JyZWN0bHkgcmVmbGVjdCB0aGUg
dHJhY2sgdG8gd2hpY2ggdGhlIHJlZ2lvbiB3YXMgYWRkZWQgdG8qKgorRVhQRUNURUQgKHJlZ2lv
bi50cmFjayA9PSB0ZXN0VHJhY2sudHJhY2sgPT0gJ3RydWUnKSBPSworCisqKiBBZGRpbmcgYSBy
ZWdpb24gd2l0aCBhbiBleGlzdGluZyBpZCBzaG91bGQgdXBkYXRlIHRoZSBleGlzdGluZyByZWdp
b24gKioKK0VYUEVDVEVEIChyZWdpb25zWzBdLnZpZXdwb3J0QW5jaG9yWCA9PSAnNTknKSBPSwor
RVhQRUNURUQgKHJlZ2lvbnNbMF0udmlld3BvcnRBbmNob3JZID09ICc2OCcpIE9LCitFWFBFQ1RF
RCAocmVnaW9uc1swXS5yZWdpb25BbmNob3JYID09ICcyMCcpIE9LCitFWFBFQ1RFRCAocmVnaW9u
c1swXS5yZWdpb25BbmNob3JZID09ICczMCcpIE9LCitFWFBFQ1RFRCAocmVnaW9uc1swXS5oZWln
aHQgPT0gJzUnKSBPSworRVhQRUNURUQgKHJlZ2lvbnNbMF0ud2lkdGggPT0gJzg3JykgT0sKK0VY
UEVDVEVEIChyZWdpb25zWzBdLnNjcm9sbCA9PSAndXAnKSBPSworRVhQRUNURUQgKHJlZ2lvbnNb
MF0gIT0gdXBkYXRlZFJlZ2lvbiA9PSAndHJ1ZScpIE9LCisKKyoqIEFkZCB0aGUgcmVnaW9uIGJh
Y2sgYW5kIGNoZWNrIGlmIHJlbW92ZVJlZ2lvbigpIHJlbW92ZXMgaXQgcHJvcGVybHkgKioKK0VY
UEVDVEVEIChyZWdpb25zLmxlbmd0aCA9PSAnMScpIE9LCitFWFBFQ1RFRCAocmVnaW9ucy5sZW5n
dGggPT0gJzAnKSBPSworCisqKiBJbiBjYXNlIHRoZSByZWdpb24gaXMgbm90IGZvdW5kLCBOb3RG
b3VuZEVycm9yIHNob3VsZCBiZSB0aHJvd24gKioKK0Vycm9yOiBOb3RGb3VuZEVycm9yOiBET00g
RXhjZXB0aW9uIDgKKworRU5EIE9GIFRFU1QKKwpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdHJh
Y2svcmVnaW9ucy13ZWJ2dHQvdnR0LXJlZ2lvbi1saXN0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0dC92dHQtcmVnaW9uLWxp
c3QtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCisrKyBMYXlvdXRUZXN0cy9tZWRpYS90cmFj
ay9yZWdpb25zLXdlYnZ0dC92dHQtcmVnaW9uLWxpc3QtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xLDQgKzEsNCBAQAotVGVzdHMgVGV4dFRyYWNrUmVnaW9uTGlzdCBmdW5jdGlvbmFs
aXR5OiBsZW5ndGgsIG9wZXJhdG9yW10sIGFuZCBnZXRSZWdpb25CeUlkKCkKK1Rlc3RzIFZUVFJl
Z2lvbkxpc3QgZnVuY3Rpb25hbGl0eTogbGVuZ3RoLCBvcGVyYXRvcltdLCBhbmQgZ2V0UmVnaW9u
QnlJZCgpCiAKIAogCkBAIC02LDE0ICs2LDE0IEBAIFRlc3RzIFRleHRUcmFja1JlZ2lvbkxpc3Qg
ZnVuY3Rpb25hbGl0eToKIEVYUEVDVEVEICh0ZXN0VHJhY2sudHJhY2subW9kZSA9PSAnZGlzYWJs
ZWQnKSBPSwogRVhQRUNURUQgKHRlc3RUcmFjay50cmFjay5yZWdpb25zID09ICdudWxsJykgT0sK
IAotKiogVGhlIHJlZ2lvbnMgYXR0cmlidXRlIHNob3VsZCBiZSBhbiBlbXB0eSBUZXh0VHJhY2tS
ZWdpb25MaXN0ICoqCisqKiBUaGUgcmVnaW9ucyBhdHRyaWJ1dGUgc2hvdWxkIGJlIGFuIGVtcHR5
IFZUVFJlZ2lvbkxpc3QgKioKIEVYUEVDVEVEIChyZWdpb25zICE9IG51bGwgPT0gJ3RydWUnKSBP
SwogRVhQRUNURUQgKHJlZ2lvbnMubGVuZ3RoID09ICcwJykgT0sKIAogKiogVGhlIGRlZmF1bHQg
dmFsdWUgb2YgdGhlIHRyYWNrIGF0dHJpYnV0ZSBvZiB0aGUgcmVnaW9uIGlzIG51bGwqKgogRVhQ
RUNURUQgKHJlZ2lvbi50cmFjayA9PSAnbnVsbCcpIE9LCiAKLSoqIFRoZSBhZGRSZWdpb24oKSBt
ZXRob2QgcHJvcGVybHkgdXBkYXRlcyB0aGUgVGV4dFRyYWNrUmVnaW9uTGlzdCBvYmplY3QgKioK
KyoqIFRoZSBhZGRSZWdpb24oKSBtZXRob2QgcHJvcGVybHkgdXBkYXRlcyB0aGUgVlRUUmVnaW9u
TGlzdCBvYmplY3QgKioKIEVYUEVDVEVEIChyZWdpb25zLmxlbmd0aCA9PSAnMScpIE9LCiBFWFBF
Q1RFRCAocmVnaW9uc1swXSA9PSByZWdpb24gPT0gJ3RydWUnKSBPSwogRVhQRUNURUQgKHJlZ2lv
bnNbMF0udHJhY2sgPT0gdGVzdFRyYWNrLnRyYWNrID09ICd0cnVlJykgT0sKSW5kZXg6IExheW91
dFRlc3RzL21lZGlhL3RyYWNrL3JlZ2lvbnMtd2VidnR0L3Z0dC1yZWdpb24tbGlzdC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3JlZ2lvbnMtd2VidnR0L3Z0dC1y
ZWdpb24tbGlzdC5odG1sCShyZXZpc2lvbiAxNjU5OTYpCShmcm9tIExheW91dFRlc3RzL21lZGlh
L3RyYWNrL3JlZ2lvbnMtd2VidnR0L3RleHQtdHJhY2stcmVnaW9uLWxpc3QuaHRtbDoxNjU5OTYp
CisrKyBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0dC92dHQtcmVnaW9uLWxp
c3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDk4IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5
cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgLz4KKworICAgICAgICA8c2Ny
aXB0IHNyYz0uLi8uLi9tZWRpYS1maWxlLmpzPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNy
Yz0uLi8uLi92aWRlby10ZXN0LmpzPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAg
ICB2YXIgdGVzdFRyYWNrOworICAgICAgICB2YXIgcmVnaW9uOworICAgICAgICB2YXIgcmVnaW9u
czsKKyAgICAgICAgdmFyIHVwZGF0ZWRSZWdpb247CisKKyAgICAgICAgZnVuY3Rpb24gc3RhcnRU
ZXN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgdGVzdFRyYWNrID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoJ3RyYWNrJylbMF07CisKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgi
PGJyPioqIEltcGxpY2l0IG1vZGUgZGlzYWJsZWQgYW5kIHRoZSByZWdpb25zIGF0dHJpYnV0ZSBp
cyBudWxsICoqIik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInRlc3RUcmFjay50cmFjay5t
b2RlIiwgImRpc2FibGVkIik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInRlc3RUcmFjay50
cmFjay5yZWdpb25zIiwgbnVsbCk7CisKKyAgICAgICAgICAgIHRlc3RUcmFjay50cmFjay5tb2Rl
ID0gImhpZGRlbiI7CisgICAgICAgICAgICByZWdpb25zID0gdGVzdFRyYWNrLnRyYWNrLnJlZ2lv
bnM7CisKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPioqIFRoZSByZWdpb25zIGF0dHJp
YnV0ZSBzaG91bGQgYmUgYW4gZW1wdHkgVGV4dFRyYWNrUmVnaW9uTGlzdCAqKiIpOworICAgICAg
ICAgICAgdGVzdEV4cGVjdGVkKCJyZWdpb25zICE9IG51bGwiLCB0cnVlKTsKKyAgICAgICAgICAg
IHRlc3RFeHBlY3RlZCgicmVnaW9ucy5sZW5ndGgiLCAwKTsKKworICAgICAgICAgICAgcmVnaW9u
ID0gbmV3IFRleHRUcmFja1JlZ2lvbigpOworICAgICAgICAgICAgcmVnaW9uLmlkID0gIlRlc3RJ
ZCI7CisKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPioqIFRoZSBkZWZhdWx0IHZhbHVl
IG9mIHRoZSB0cmFjayBhdHRyaWJ1dGUgb2YgdGhlIHJlZ2lvbiBpcyBudWxsKioiKTsKKyAgICAg
ICAgICAgIHRlc3RFeHBlY3RlZCgicmVnaW9uLnRyYWNrIiwgbnVsbCk7CisKKyAgICAgICAgICAg
IHRlc3RUcmFjay50cmFjay5hZGRSZWdpb24ocmVnaW9uKTsKKworICAgICAgICAgICAgY29uc29s
ZVdyaXRlKCI8YnI+KiogVGhlIGFkZFJlZ2lvbigpIG1ldGhvZCBwcm9wZXJseSB1cGRhdGVzIHRo
ZSBUZXh0VHJhY2tSZWdpb25MaXN0IG9iamVjdCAqKiIpOworICAgICAgICAgICAgdGVzdEV4cGVj
dGVkKCJyZWdpb25zLmxlbmd0aCIsIDEpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWdp
b25zWzBdID09IHJlZ2lvbiIsIHRydWUpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWdp
b25zWzBdLnRyYWNrID09IHRlc3RUcmFjay50cmFjayIsIHRydWUpOworCisgICAgICAgICAgICBj
b25zb2xlV3JpdGUoIjxicj4qKiBUaGUgdHJhY2sgYXR0cmlidXRlIHNob3VsZCBjb3JyZWN0bHkg
cmVmbGVjdCB0aGUgdHJhY2sgdG8gd2hpY2ggdGhlIHJlZ2lvbiB3YXMgYWRkZWQgdG8qKiIpOwor
ICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWdpb24udHJhY2sgPT0gdGVzdFRyYWNrLnRyYWNr
IiwgdHJ1ZSk7CisKKyAgICAgICAgICAgIHVwZGF0ZWRSZWdpb24gPSBuZXcgVGV4dFRyYWNrUmVn
aW9uKCk7CisgICAgICAgICAgICB1cGRhdGVkUmVnaW9uLmlkID0gcmVnaW9uLmlkOworICAgICAg
ICAgICAgdXBkYXRlZFJlZ2lvbi52aWV3cG9ydEFuY2hvclggPSA1OTsKKyAgICAgICAgICAgIHVw
ZGF0ZWRSZWdpb24udmlld3BvcnRBbmNob3JZID0gNjg7CisgICAgICAgICAgICB1cGRhdGVkUmVn
aW9uLnJlZ2lvbkFuY2hvclggPSAyMDsKKyAgICAgICAgICAgIHVwZGF0ZWRSZWdpb24ucmVnaW9u
QW5jaG9yWSA9IDMwOworICAgICAgICAgICAgdXBkYXRlZFJlZ2lvbi5oZWlnaHQgPSA1OworICAg
ICAgICAgICAgdXBkYXRlZFJlZ2lvbi53aWR0aCA9IDg3OworICAgICAgICAgICAgdXBkYXRlZFJl
Z2lvbi5zY3JvbGwgPSAidXAiOworCisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxicj4qKiBB
ZGRpbmcgYSByZWdpb24gd2l0aCBhbiBleGlzdGluZyBpZCBzaG91bGQgdXBkYXRlIHRoZSBleGlz
dGluZyByZWdpb24gKioiKTsKKyAgICAgICAgICAgIHRlc3RUcmFjay50cmFjay5hZGRSZWdpb24o
dXBkYXRlZFJlZ2lvbik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbnNbMF0udmll
d3BvcnRBbmNob3JYIiwgdXBkYXRlZFJlZ2lvbi52aWV3cG9ydEFuY2hvclgpOworICAgICAgICAg
ICAgdGVzdEV4cGVjdGVkKCJyZWdpb25zWzBdLnZpZXdwb3J0QW5jaG9yWSIsIHVwZGF0ZWRSZWdp
b24udmlld3BvcnRBbmNob3JZKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVnaW9uc1sw
XS5yZWdpb25BbmNob3JYIiwgdXBkYXRlZFJlZ2lvbi5yZWdpb25BbmNob3JYKTsKKyAgICAgICAg
ICAgIHRlc3RFeHBlY3RlZCgicmVnaW9uc1swXS5yZWdpb25BbmNob3JZIiwgdXBkYXRlZFJlZ2lv
bi5yZWdpb25BbmNob3JZKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVnaW9uc1swXS5o
ZWlnaHQiLCB1cGRhdGVkUmVnaW9uLmhlaWdodCk7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQo
InJlZ2lvbnNbMF0ud2lkdGgiLCB1cGRhdGVkUmVnaW9uLndpZHRoKTsKKyAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgicmVnaW9uc1swXS5zY3JvbGwiLCB1cGRhdGVkUmVnaW9uLnNjcm9sbCk7CisK
KyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVnaW9uc1swXSAhPSB1cGRhdGVkUmVnaW9uIiwg
dHJ1ZSk7CisKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPioqIEFkZCB0aGUgcmVnaW9u
IGJhY2sgYW5kIGNoZWNrIGlmIHJlbW92ZVJlZ2lvbigpIHJlbW92ZXMgaXQgcHJvcGVybHkgKioi
KTsKKyAgICAgICAgICAgIHRlc3RUcmFjay50cmFjay5hZGRSZWdpb24ocmVnaW9uKTsKKyAgICAg
ICAgICAgIHRlc3RFeHBlY3RlZCgicmVnaW9ucy5sZW5ndGgiLCAxKTsKKyAgICAgICAgICAgIHRl
c3RUcmFjay50cmFjay5yZW1vdmVSZWdpb24ocmVnaW9uKTsKKyAgICAgICAgICAgIHRlc3RFeHBl
Y3RlZCgicmVnaW9ucy5sZW5ndGgiLCAwKTsKKworICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8
YnI+KiogSW4gY2FzZSB0aGUgcmVnaW9uIGlzIG5vdCBmb3VuZCwgTm90Rm91bmRFcnJvciBzaG91
bGQgYmUgdGhyb3duICoqIik7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICB0ZXN0
VHJhY2sudHJhY2sucmVtb3ZlUmVnaW9uKHJlZ2lvbik7CisgICAgICAgICAgICB9IGNhdGNoKGUp
IHsKKyAgICAgICAgICAgICAgY29uc29sZVdyaXRlKGUpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAvLyBGSVhNRSgxMDk4MTgpOiBVcGRhdGUgdGVzdCBmb3IgbXVsdGlwbGUgaW5pdGlh
bCByZWdpb25zIChhZnRlciBwYXJzaW5nIGlzIHN1cHBvcnRlZCkuCisKKyAgICAgICAgICAgIGNv
bnNvbGVXcml0ZSgiIik7CisgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBzdGFydFRlc3RXaXRoRGVsYXkoKQorICAgICAgICB7CisgICAgICAgICAg
ICBzZXRUaW1lb3V0KHN0YXJ0VGVzdCwgMTAwKTsKKyAgICAgICAgfQorICAgICAgICA8L3Njcmlw
dD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJzdGFydFRlc3RXaXRoRGVsYXkoKSI+
CisgICAgICAgIDxwPlRlc3RzIFRleHRUcmFja1JlZ2lvbkxpc3QgZnVuY3Rpb25hbGl0eTogbGVu
Z3RoLCBvcGVyYXRvcltdLCBhbmQgZ2V0UmVnaW9uQnlJZCgpPC9wPgorICAgICAgICA8dmlkZW8+
CisgICAgICAgICAgICA8dHJhY2sgaWQ9InRlc3RUcmFjayIgc3JjPSJjYXB0aW9ucy13ZWJ2dHQv
Y2FwdGlvbnMtZmFzdC52dHQiPgorICAgICAgICA8L3ZpZGVvPgorICAgIDwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3RyYWNrL3JlZ2lvbnMtd2VidnR0L3Z0dC1yZWdp
b24tbGlzdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3JlZ2lv
bnMtd2VidnR0L3Z0dC1yZWdpb24tbGlzdC5odG1sCSh3b3JraW5nIGNvcHkpCisrKyBMYXlvdXRU
ZXN0cy9tZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0dC92dHQtcmVnaW9uLWxpc3QuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMjIsMTEgKzIyLDExIEBACiAgICAgICAgICAgICB0ZXN0VHJhY2sudHJh
Y2subW9kZSA9ICJoaWRkZW4iOwogICAgICAgICAgICAgcmVnaW9ucyA9IHRlc3RUcmFjay50cmFj
ay5yZWdpb25zOwogCi0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxicj4qKiBUaGUgcmVnaW9u
cyBhdHRyaWJ1dGUgc2hvdWxkIGJlIGFuIGVtcHR5IFRleHRUcmFja1JlZ2lvbkxpc3QgKioiKTsK
KyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPioqIFRoZSByZWdpb25zIGF0dHJpYnV0ZSBz
aG91bGQgYmUgYW4gZW1wdHkgVlRUUmVnaW9uTGlzdCAqKiIpOwogICAgICAgICAgICAgdGVzdEV4
cGVjdGVkKCJyZWdpb25zICE9IG51bGwiLCB0cnVlKTsKICAgICAgICAgICAgIHRlc3RFeHBlY3Rl
ZCgicmVnaW9ucy5sZW5ndGgiLCAwKTsKIAotICAgICAgICAgICAgcmVnaW9uID0gbmV3IFRleHRU
cmFja1JlZ2lvbigpOworICAgICAgICAgICAgcmVnaW9uID0gbmV3IFZUVFJlZ2lvbigpOwogICAg
ICAgICAgICAgcmVnaW9uLmlkID0gIlRlc3RJZCI7CiAKICAgICAgICAgICAgIGNvbnNvbGVXcml0
ZSgiPGJyPioqIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSB0cmFjayBhdHRyaWJ1dGUgb2YgdGhl
IHJlZ2lvbiBpcyBudWxsKioiKTsKQEAgLTM0LDcgKzM0LDcgQEAKIAogICAgICAgICAgICAgdGVz
dFRyYWNrLnRyYWNrLmFkZFJlZ2lvbihyZWdpb24pOwogCi0gICAgICAgICAgICBjb25zb2xlV3Jp
dGUoIjxicj4qKiBUaGUgYWRkUmVnaW9uKCkgbWV0aG9kIHByb3Blcmx5IHVwZGF0ZXMgdGhlIFRl
eHRUcmFja1JlZ2lvbkxpc3Qgb2JqZWN0ICoqIik7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUo
Ijxicj4qKiBUaGUgYWRkUmVnaW9uKCkgbWV0aG9kIHByb3Blcmx5IHVwZGF0ZXMgdGhlIFZUVFJl
Z2lvbkxpc3Qgb2JqZWN0ICoqIik7CiAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbnMu
bGVuZ3RoIiwgMSk7CiAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbnNbMF0gPT0gcmVn
aW9uIiwgdHJ1ZSk7CiAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbnNbMF0udHJhY2sg
PT0gdGVzdFRyYWNrLnRyYWNrIiwgdHJ1ZSk7CkBAIC00Miw3ICs0Miw3IEBACiAgICAgICAgICAg
ICBjb25zb2xlV3JpdGUoIjxicj4qKiBUaGUgdHJhY2sgYXR0cmlidXRlIHNob3VsZCBjb3JyZWN0
bHkgcmVmbGVjdCB0aGUgdHJhY2sgdG8gd2hpY2ggdGhlIHJlZ2lvbiB3YXMgYWRkZWQgdG8qKiIp
OwogICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWdpb24udHJhY2sgPT0gdGVzdFRyYWNrLnRy
YWNrIiwgdHJ1ZSk7CiAKLSAgICAgICAgICAgIHVwZGF0ZWRSZWdpb24gPSBuZXcgVGV4dFRyYWNr
UmVnaW9uKCk7CisgICAgICAgICAgICB1cGRhdGVkUmVnaW9uID0gbmV3IFZUVFJlZ2lvbigpOwog
ICAgICAgICAgICAgdXBkYXRlZFJlZ2lvbi5pZCA9IHJlZ2lvbi5pZDsKICAgICAgICAgICAgIHVw
ZGF0ZWRSZWdpb24udmlld3BvcnRBbmNob3JYID0gNTk7CiAgICAgICAgICAgICB1cGRhdGVkUmVn
aW9uLnZpZXdwb3J0QW5jaG9yWSA9IDY4OwpAQCAtOTAsOSArOTAsOSBAQAogICAgICAgICA8L3Nj
cmlwdD4KICAgICA8L2hlYWQ+CiAgICAgPGJvZHkgb25sb2FkPSJzdGFydFRlc3RXaXRoRGVsYXko
KSI+Ci0gICAgICAgIDxwPlRlc3RzIFRleHRUcmFja1JlZ2lvbkxpc3QgZnVuY3Rpb25hbGl0eTog
bGVuZ3RoLCBvcGVyYXRvcltdLCBhbmQgZ2V0UmVnaW9uQnlJZCgpPC9wPgorICAgICAgICA8cD5U
ZXN0cyBWVFRSZWdpb25MaXN0IGZ1bmN0aW9uYWxpdHk6IGxlbmd0aCwgb3BlcmF0b3JbXSwgYW5k
IGdldFJlZ2lvbkJ5SWQoKTwvcD4KICAgICAgICAgPHZpZGVvPgotICAgICAgICAgICAgPHRyYWNr
IGlkPSJ0ZXN0VHJhY2siIHNyYz0iY2FwdGlvbnMtd2VidnR0L2NhcHRpb25zLWZhc3QudnR0Ij4K
KyAgICAgICAgICAgIDx0cmFjayBpZD0idGVzdFRyYWNrIiBzcmM9Ii4uL2NhcHRpb25zLXdlYnZ0
dC9jYXB0aW9ucy1mYXN0LnZ0dCI+CiAgICAgICAgIDwvdmlkZW8+CiAgICAgPC9ib2R5PgogPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQvdnR0LXJl
Z2lvbi1wYXJzZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlh
L3RyYWNrL3JlZ2lvbnMtd2VidnR0L3Z0dC1yZWdpb24tcGFyc2VyLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMTY1OTk2KQkoZnJvbSBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0
dC90ZXh0LXRyYWNrLXJlZ2lvbi1wYXJzZXItZXhwZWN0ZWQudHh0OjE2NTk5NikKKysrIExheW91
dFRlc3RzL21lZGlhL3RyYWNrL3JlZ2lvbnMtd2VidnR0L3Z0dC1yZWdpb24tcGFyc2VyLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI5IEBACitUZXN0cyBwcm9wZXIgcGFy
c2luZyBvZiB2YXJpb3VzIHJlZ2lvbnMgcHJlc2VudCBpbiBXZWJWVFQgaGVhZGVyIGFyZWEuCisK
KworRVhQRUNURUQgKHZpZGVvLnRleHRUcmFja3NbMF0ucmVnaW9ucy5sZW5ndGggPT0gJzUnKSBP
SworCitFWFBFQ1RFRCAocmVnaW9uLmlkID09ICdyZWdpb25fd2l0aG91dF9zZXR0aW5ncycpIE9L
CisKK0VYUEVDVEVEIChyZWdpb24uaWQgPT0gJ3JlZ2lvbl93aXRoX2FsbF9zZXR0aW5ncycpIE9L
CitFWFBFQ1RFRCAocmVnaW9uLndpZHRoID09ICczMicpIE9LCitFWFBFQ1RFRCAocmVnaW9uLmhl
aWdodCA9PSAnNScpIE9LCitFWFBFQ1RFRCAocmVnaW9uLnJlZ2lvbkFuY2hvclggPT0gJzQxJykg
T0sKK0VYUEVDVEVEIChyZWdpb24ucmVnaW9uQW5jaG9yWSA9PSAnMjAnKSBPSworRVhQRUNURUQg
KHJlZ2lvbi52aWV3cG9ydEFuY2hvclggPT0gJzMxJykgT0sKK0VYUEVDVEVEIChyZWdpb24udmll
d3BvcnRBbmNob3JZID09ICc4NCcpIE9LCitFWFBFQ1RFRCAocmVnaW9uLnNjcm9sbCA9PSAndXAn
KSBPSworCitFWFBFQ1RFRCAocmVnaW9uLmlkID09ICdyZWdpb25fZmxvYXRpbmdfcG9pbnRfYW5j
aG9yJykgT0sKK0VYUEVDVEVEIChNYXRoLnJvdW5kKHJlZ2lvbi5yZWdpb25BbmNob3JYICogMTAw
MCkgPT0gJzQxMTMzJykgT0sKK0VYUEVDVEVEIChNYXRoLnJvdW5kKHJlZ2lvbi5yZWdpb25BbmNo
b3JZICogMTAwMCkgPT0gJzIwNDIwJykgT0sKK0VYUEVDVEVEIChNYXRoLnJvdW5kKHJlZ2lvbi52
aWV3cG9ydEFuY2hvclggKiAxMDAwKSA9PSAnMzIzMzAnKSBPSworRVhQRUNURUQgKE1hdGgucm91
bmQocmVnaW9uLnZpZXdwb3J0QW5jaG9yWSAqIDEwMDApID09ICczMjQ0MCcpIE9LCisKK0VYUEVD
VEVEIChyZWdpb24uaWQgPT0gJ25vdF91bmlxdWVfaWQnKSBPSworRVhQRUNURUQgKHJlZ2lvbi53
aWR0aCA9PSAnNjcnKSBPSworCitFWFBFQ1RFRCAocmVnaW9uLmlkID09ICcnKSBPSworCitFTkQg
T0YgVEVTVAorCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0dC92
dHQtcmVnaW9uLXBhcnNlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Ry
YWNrL3JlZ2lvbnMtd2VidnR0L3Z0dC1yZWdpb24tcGFyc2VyLmh0bWwJKHJldmlzaW9uIDE2NTk5
NikJKGZyb20gTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQvdGV4dC10cmFj
ay1yZWdpb24tcGFyc2VyLmh0bWw6MTY1OTk2KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2sv
cmVnaW9ucy13ZWJ2dHQvdnR0LXJlZ2lvbi1wYXJzZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDY3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAg
ICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hh
cnNldD11dGYtOCIgLz4KKworICAgICAgICA8c2NyaXB0IHNyYz0uLi8uLi9tZWRpYS1maWxlLmpz
Pjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0uLi8uLi92aWRlby10ZXN0LmpzPjwvc2Ny
aXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB2YXIgcmVnaW9uOworCisgICAgICAgIGZ1
bmN0aW9uIHN0YXJ0VGVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghd2luZG93LlRl
eHRUcmFja1JlZ2lvbikgeworICAgICAgICAgICAgICAgIGZhaWxUZXN0KCk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmaW5kTWVkaWFFbGVt
ZW50KCk7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnRleHRUcmFja3NbMF0ucmVn
aW9ucy5sZW5ndGgiLCA1KTsKKworICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAg
ICAgICAgIHJlZ2lvbiA9IHZpZGVvLnRleHRUcmFja3NbMF0ucmVnaW9uc1swXTsKKyAgICAgICAg
ICAgIHRlc3RFeHBlY3RlZCgicmVnaW9uLmlkIiwgInJlZ2lvbl93aXRob3V0X3NldHRpbmdzIik7
CisKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgICAgICByZWdpb24gPSB2
aWRlby50ZXh0VHJhY2tzWzBdLnJlZ2lvbnNbMV07CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQo
InJlZ2lvbi5pZCIsICJyZWdpb25fd2l0aF9hbGxfc2V0dGluZ3MiKTsKKyAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgicmVnaW9uLndpZHRoIiwgMzIpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVk
KCJyZWdpb24uaGVpZ2h0IiwgNSk7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbi5y
ZWdpb25BbmNob3JYIiwgNDEpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWdpb24ucmVn
aW9uQW5jaG9yWSIsIDIwKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVnaW9uLnZpZXdw
b3J0QW5jaG9yWCIsIDMxKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVnaW9uLnZpZXdw
b3J0QW5jaG9yWSIsIDg0KTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVnaW9uLnNjcm9s
bCIsICJ1cCIpOworCisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAgICAg
cmVnaW9uID0gdmlkZW8udGV4dFRyYWNrc1swXS5yZWdpb25zWzJdOworICAgICAgICAgICAgdGVz
dEV4cGVjdGVkKCJyZWdpb24uaWQiLCAicmVnaW9uX2Zsb2F0aW5nX3BvaW50X2FuY2hvciIpOwor
ICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJNYXRoLnJvdW5kKHJlZ2lvbi5yZWdpb25BbmNob3JY
ICogMTAwMCkiLCA0MTEzMyk7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoIk1hdGgucm91bmQo
cmVnaW9uLnJlZ2lvbkFuY2hvclkgKiAxMDAwKSIsIDIwNDIwKTsKKyAgICAgICAgICAgIHRlc3RF
eHBlY3RlZCgiTWF0aC5yb3VuZChyZWdpb24udmlld3BvcnRBbmNob3JYICogMTAwMCkiLCAzMjMz
MCk7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoIk1hdGgucm91bmQocmVnaW9uLnZpZXdwb3J0
QW5jaG9yWSAqIDEwMDApIiwgMzI0NDApOworCisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIp
OworICAgICAgICAgICAgcmVnaW9uID0gdmlkZW8udGV4dFRyYWNrc1swXS5yZWdpb25zWzNdOwor
ICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWdpb24uaWQiLCAibm90X3VuaXF1ZV9pZCIpOwor
ICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWdpb24ud2lkdGgiLCA2Nyk7CisKKyAgICAgICAg
ICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgICAgICByZWdpb24gPSB2aWRlby50ZXh0VHJh
Y2tzWzBdLnJlZ2lvbnNbNF07CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbi5pZCIs
ICIiKTsKKworICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAgIGVuZFRl
c3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIHNldENhcHRpb25EaXNwbGF5TW9kZSgnQXV0b21h
dGljJyk7CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAg
ICAgPHA+VGVzdHMgcHJvcGVyIHBhcnNpbmcgb2YgdmFyaW91cyByZWdpb25zIHByZXNlbnQgaW4g
V2ViVlRUIGhlYWRlciBhcmVhLjwvcD4KKyAgICAgICAgPHZpZGVvIGNvbnRyb2xzPgorICAgICAg
ICAgICAgPHRyYWNrIHNyYz0iLi4vY2FwdGlvbnMtd2VidnR0L2hlYWRlci1yZWdpb25zLnZ0dCIg
a2luZD0iY2FwdGlvbnMiIGRlZmF1bHQgb25sb2FkPSJzdGFydFRlc3QoKSI+CisgICAgICAgIDwv
dmlkZW8+CisKKyAgICA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS90
cmFjay9yZWdpb25zLXdlYnZ0dC92dHQtcmVnaW9uLXBhcnNlci5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL21lZGlhL3RyYWNrL3JlZ2lvbnMtd2VidnR0L3Z0dC1yZWdpb24tcGFyc2Vy
Lmh0bWwJKHdvcmtpbmcgY29weSkKKysrIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3JlZ2lvbnMt
d2VidnR0L3Z0dC1yZWdpb24tcGFyc2VyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDcgKzEw
LDcgQEAKIAogICAgICAgICBmdW5jdGlvbiBzdGFydFRlc3QoKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAoIXdpbmRvdy5UZXh0VHJhY2tSZWdpb24pIHsKKyAgICAgICAgICAgIGlmICghd2lu
ZG93LlZUVFJlZ2lvbikgewogICAgICAgICAgICAgICAgIGZhaWxUZXN0KCk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQo=
</data>
<flag name="review"
          id="251608"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>