<?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>151728</bug_id>
          
          <creation_ts>2015-12-01 16:18:34 -0800</creation_ts>
          <short_desc>[MediaStream] Update MediaStreamTrack.getCapabilities</short_desc>
          <delta_ts>2015-12-03 16:35:50 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1145441</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-12-01 16:18:34 -0800</bug_when>
    <thetext>Update MediaStreamTrack.getCapabilities to current spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145987</commentid>
    <comment_count>1</comment_count>
      <attachid>266540</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-12-03 11:47:17 -0800</bug_when>
    <thetext>Created attachment 266540
Patch for the bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145990</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-03 11:50:22 -0800</bug_when>
    <thetext>Attachment 266540 did not pass style-queue:


ERROR: Source/WebCore/platform/mediastream/mac/AVMediaCaptureSource.mm:32:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/platform/mediastream/RealtimeMediaSourceCapabilities.h:169:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 2 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146008</commentid>
    <comment_count>3</comment_count>
      <attachid>266543</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-12-03 12:14:10 -0800</bug_when>
    <thetext>Created attachment 266543
Updated patch for the bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146054</commentid>
    <comment_count>4</comment_count>
      <attachid>266543</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-12-03 14:26:42 -0800</bug_when>
    <thetext>Comment on attachment 266543
Updated patch for the bots.

-376 LOC! Nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146127</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-12-03 16:35:50 -0800</bug_when>
    <thetext>Committed r193389: http://trac.webkit.org/changeset/193389</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266540</attachid>
            <date>2015-12-03 11:47:17 -0800</date>
            <delta_ts>2015-12-03 12:14:10 -0800</delta_ts>
            <desc>Patch for the bots.</desc>
            <filename>track_capabilities_patch_11.txt</filename>
            <type>text/plain</type>
            <size>95223</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MzM1NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyNyBAQAorMjAxNS0xMi0wMyAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW1d
IFVwZGF0ZSBNZWRpYVN0cmVhbVRyYWNrLmdldENhcGFiaWxpdGllcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNzI4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZmFzdC9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrLWdldENhcGFiaWxpdGllcy5odG1sCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDogUmVtb3ZlIGZpbGVzIGRlbGV0ZWQgZnJvbSB0aGUgcmVwb3NpdG9yeS4KKworICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6IERpdHRvLgorCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9BbGxBdWRpb0NhcGFiaWxpdGllcy5oOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vQWxsQXVkaW9DYXBhYmlsaXRpZXMuaWRsOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vQWxsVmlkZW9DYXBhYmlsaXRpZXMuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmlk
bDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5n
ZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5
UmFuZ2UuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxp
dHlSYW5nZS5pZGw6IFJlbW92ZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU291cmNlU2V0dGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlU2V0dGlu
Z3M6OnN1cHBvcnRzVm9sdW1lKTogVm9sdW1lIGlzIGEgZG91YmxlLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTb3VyY2VTZXR0aW5nczo6dm9sdW1lKTogRG91YmxlLgorCisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmls
aXRpZXMuaWRsOiBSZW1vdmVkLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6Omdl
dENhcGFiaWxpdGllcyk6IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzIGlzIGdvbmUsIHJldHVybiBh
IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuCisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrLmlkbDoKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajogUmVtb3ZlIGZpbGVzIGRlbGV0ZWQgZnJvbSB0aGUgcmVwb3NpdG9yeS4K
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y2FwYWJpbGl0eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVk
aWFTdHJlYW1UcmFjazo6Z2V0Q2FwYWJpbGl0aWVzKTogQ3JlYXRlIGFuZCByZXR1cm4gYSBkaWN0
aW9uYXJ5IG9mIGNhcGF0aWxpdGllcy4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
cGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwYWJpbGl0
eVZhbHVlT3JSYW5nZTo6Q2FwYWJpbGl0eVZhbHVlT3JSYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpyYW5nZU1pbik6CisgICAgICAgIChXZWJDb3JlOjpD
YXBhYmlsaXR5VmFsdWVPclJhbmdlOjpyYW5nZU1heCk6CisgICAgICAgIChXZWJDb3JlOjpDYXBh
YmlsaXR5VmFsdWVPclJhbmdlOjp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6flJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRp
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6
c3VwcG9ydHNXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2Fw
YWJpbGl0aWVzOjp3aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNl
Q2FwYWJpbGl0aWVzOjpzZXRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlh
U291cmNlQ2FwYWJpbGl0aWVzOjpzdXBwb3J0c0hlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpoZWlnaHQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6c2V0SGVpZ2h0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OnN1cHBvcnRzRnJhbWVS
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6
OmZyYW1lUmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJp
bGl0aWVzOjpzZXRGcmFtZVJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNv
dXJjZUNhcGFiaWxpdGllczo6c3VwcG9ydHNGYWNpbmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OmZhY2luZ01vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6YWRkRmFjaW5nTW9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpzdXBw
b3J0c0FzcGVjdFJhdGlvKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VD
YXBhYmlsaXRpZXM6OmFzcGVjdFJhdGlvKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVk
aWFTb3VyY2VDYXBhYmlsaXRpZXM6OnNldEFzcGVjdFJhdGlvKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OnN1cHBvcnRzVm9sdW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OnZvbHVtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpzZXRWb2x1
bWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6
c3VwcG9ydHNTYW1wbGVSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2VDYXBhYmlsaXRpZXM6OnNhbXBsZVJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVN
ZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6c2V0U2FtcGxlUmF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpzdXBwb3J0c1NhbXBsZVNpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6c2FtcGxl
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVz
OjpzZXRTYW1wbGVTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VD
YXBhYmlsaXRpZXM6OnN1cHBvcnRzRWNob0NhbmNlbGxhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjplY2hvQ2FuY2VsbGF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OnNldEVjaG9D
YW5jZWxsYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFi
aWxpdGllczo6c3VwcG9ydHNEZXZpY2VJZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpkZXZpY2VJZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFs
dGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpzZXREZXZpY2VJZCk6CisgICAgICAgIChXZWJD
b3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpzdXBwb3J0c0dyb3VwSWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6Z3JvdXBJ
ZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpz
ZXRHcm91cElkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmls
aXRpZXM6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdHlSYW5nZTo6UmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdHlSYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlQ2FwYWJpbGl0eVJhbmdlOjptaW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdHlSYW5nZTo6bWF4KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXR5UmFuZ2U6OnR5cGUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxp
dHlSYW5nZTo6c3VwcG9ydGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1l
TWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OnNvdXJjZUlkKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OnNldFNvdXJjZUlkKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6
OmZhY2luZ01vZGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFT
b3VyY2VDYXBhYmlsaXRpZXM6OnNldFdpZHRoUmFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6c2V0SGVpZ2h0UmFuZ2UpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGll
czo6c2V0RnJhbWVSYXRlUmFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6c2V0QXNwZWN0UmF0aW9SYW5nZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpzZXRW
b2x1bWVSYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291
cmNlQ2FwYWJpbGl0aWVzOjpoYXNWaWRlb1NvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpzZXRIYXNWaWRlb1NvdXJjZSk6
IERlbGV0ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5nczo6dm9sdW1lKTogVm9sdW1lIGlzIGEgZG91YmxlLgorICAgICAgICAoV2ViQ29yZTo6
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpzZXRWb2x1bWUpOiBEaXR0LgorCisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQXVkaW9DYXB0dXJlU291cmNlLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6QVZBdWRpb0NhcHR1cmVTb3VyY2U6OmluaXRpYWxpemVDYXBhYmlsaXRp
ZXMpOiBJbml0aWFsaXplIHZvbHVtZSBjYXBhYmlsaXR5LgorCisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6QVZNZWRpYUNhcHR1cmVTb3VyY2U6OmNhcGFiaWxpdGllcyk6IFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDYXBhYmlsaXRpZXMgY29uc3RydWN0b3IgdGFrZXMKKyAgICAgICAgICBzdXBwb3J0ZWRDb25z
dHJhaW50cy4gc291cmNlSWQgLT4gZGV2aWNlSWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW06CisgICAgICAgIChXZWJDb3JlOjpB
VlZpZGVvQ2FwdHVyZVNvdXJjZTo6aW5pdGlhbGl6ZUNhcGFiaWxpdGllcyk6IERldmljZUlkIGlz
IHNldCBieSB0aGUgYmFzZSBjbGFzcy4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbTogRHJpdmUtYnkgY2xlYW51cCwg
cmVtb3ZlIHVudXNlZCBjb2RlLgorCisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRp
bWVBdWRpb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVBdWRpb1Nv
dXJjZTo6aW5pdGlhbGl6ZUNhcGFiaWxpdGllcyk6IFVwZGF0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6aW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRz
KTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291
cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpjYXBh
YmlsaXRpZXMpOiBzb3VyY2VJZCAtPiBkZXZpY2VJZC4KKworICAgICAgICAqIHBsYXRmb3JtL21v
Y2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2U6OmluaXRpYWxpemVDYXBhYmlsaXRpZXMpOiBVcGRhdGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmluaXRpYWxpemVTdXBwb3J0
ZWRDb25zdHJhaW50cyk6IERpdHRvLgorCiAyMDE1LTEyLTAzICBQZXIgQXJuZSBWb2xsYW4gIDxw
ZWF2b0BvdXRsb29rLmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9dW01lZGlhRm91bmRhdGlvbl0g
TWFpbiB0aHJlYWQgY2FuIGJsb2NrIHdoZW4gc2Vzc2lvbiBpcyBkZXN0cm95ZWQuCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTkyOTU0KQorKysgU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIyMSwxNSArMjIxLDExIEBAIHNldChXZWJD
b3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZm
ZXJMaXN0LmlkbAogICAgIE1vZHVsZXMvbWVkaWFzb3VyY2UvVmlkZW9QbGF5YmFja1F1YWxpdHku
aWRsCiAKLSAgICBNb2R1bGVzL21lZGlhc3RyZWFtL0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmlkbAot
ICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vQWxsVmlkZW9DYXBhYmlsaXRpZXMuaWRsCi0gICAgTW9k
dWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0
cmVhbS9ET01VUkxNZWRpYVN0cmVhbS5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL0hUTUxN
ZWRpYUVsZW1lbnRNZWRpYVN0cmVhbS5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
RGV2aWNlSW5mby5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5pZGwK
ICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmlkbAotICAgIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbUV2ZW50LmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1UcmFjay5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tF
dmVudC5pZGwKQEAgLTk0Myw3ICs5MzksNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9k
dWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0LmNwcAogICAgIE1vZHVsZXMvbWVkaWFz
b3VyY2UvVmlkZW9QbGF5YmFja1F1YWxpdHkuY3BwCiAKLSAgICBNb2R1bGVzL21lZGlhc3RyZWFt
L0NhcGFiaWxpdHlSYW5nZS5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL0RPTVVSTE1lZGlh
U3RyZWFtLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vSFRNTE1lZGlhRWxlbWVudE1lZGlh
U3RyZWFtLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwu
Y3BwCkBAIC05NTMsNyArOTQ4LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIE1vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmNwcAogICAgIE1vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHAKICAgICBNb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLmNwcAotICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1D
YXBhYmlsaXRpZXMuY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUV2ZW50
LmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5jcHAKICAg
ICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCkBAIC0xMjA2LDcgKzEy
MDAsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNMYXp5RXZlbnRM
aXN0ZW5lci5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAogICAgIGJp
bmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5jcHAKLSAgICBiaW5kaW5ncy9qcy9KU01l
ZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTTWVkaWFT
dHJlYW1UcmFja0N1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU01lZGlhVHJhY2tTdXBwb3J0
ZWRDb25zdHJhaW50c0N1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU01lc3NhZ2VDaGFubmVs
Q3VzdG9tLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAx
OTI5NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTcsMTUgKzExNywxMSBAQCBOT05fU1ZHX0JJTkRJTkdfSURMUyA9IFwKIAkkKFdl
YkNvcmUpL01vZHVsZXMvbWVkaWFzb3VyY2UvVGV4dFRyYWNrTWVkaWFTb3VyY2UuaWRsIFwKIAkk
KFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzb3VyY2UvVmlkZW9UcmFja01lZGlhU291cmNlLmlkbCBc
CiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291cmNlL1ZpZGVvUGxheWJhY2tRdWFsaXR5Lmlk
bCBcCi0JJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL0FsbFZpZGVvQ2FwYWJpbGl0aWVz
LmlkbCBcCi0JJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL0FsbEF1ZGlvQ2FwYWJpbGl0
aWVzLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlS
YW5nZS5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9ET01VUkxNZWRpYVN0
cmVhbS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9IVE1MTWVkaWFF
bGVtZW50TWVkaWFTdHJlYW0uaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFEZXZpY2VJbmZvLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhRGV2aWNlcy5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbS5pZGwgXAotCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbUNhcGFiaWxpdGllcy5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbUV2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2suaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFja0V2ZW50LmlkbCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxBdWRpb0NhcGFiaWxpdGllcy5o
CShyZXZpc2lvbiAxOTI5NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNTkgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQWxs
QXVkaW9DYXBhYmlsaXRpZXNfaAotI2RlZmluZSBBbGxBdWRpb0NhcGFiaWxpdGllc19oCi0KLSNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi0jaW5jbHVkZSAiTWVkaWFTdHJlYW1DYXBhYmlsaXRp
ZXMuaCIKLSNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzLmgiCi0jaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgQ2FwYWJpbGl0eVJhbmdlOwotY2xhc3MgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGll
czsKLQotY2xhc3MgQWxsQXVkaW9DYXBhYmlsaXRpZXMgOiBwdWJsaWMgTWVkaWFTdHJlYW1DYXBh
YmlsaXRpZXMgewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8QWxsQXVkaW9DYXBhYmlsaXRpZXM+
IGNyZWF0ZShQYXNzUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IGNhcGFi
aWxpdGllcykKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFsbEF1ZGlvQ2Fw
YWJpbGl0aWVzKGNhcGFiaWxpdGllcykpOwotICAgIH0KLSAgICB2aXJ0dWFsIH5BbGxBdWRpb0Nh
cGFiaWxpdGllcygpIHsgfQotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IEFsbEF1ZGlvQ2FwYWJp
bGl0aWVzKFBhc3NSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gY2FwYWJp
bGl0aWVzKQotICAgICAgICA6IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzKGNhcGFiaWxpdGllcykK
LSAgICB7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
QWxsQXVkaW9DYXBhYmlsaXRpZXNfaAotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vQWxsQXVkaW9DYXBhYmlsaXRpZXMuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsQXVkaW9DYXBhYmlsaXRpZXMu
aWRsCShyZXZpc2lvbiAxOTI5NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSwzMyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLVsKLSAg
ICBOb0ludGVyZmFjZU9iamVjdCwKLSAgICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sCi0gICAg
SlNHZW5lcmF0ZVRvSlNPYmplY3QsCi1dIGludGVyZmFjZSBBbGxBdWRpb0NhcGFiaWxpdGllcyA6
IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzIHsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nW10gc291cmNlSWQ7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIENhcGFiaWxpdHlSYW5nZSB2
b2x1bWU7Ci19OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxW
aWRlb0NhcGFiaWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vQWxsVmlkZW9DYXBhYmlsaXRpZXMuaAkocmV2aXNpb24gMTkyOTU0KQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxWaWRlb0NhcGFiaWxpdGllcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEFsbFZpZGVvQ2FwYWJpbGl0aWVzX2gKLSNk
ZWZpbmUgQWxsVmlkZW9DYXBhYmlsaXRpZXNfaAotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
LQotI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmgiCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotY2xhc3MgQ2FwYWJpbGl0eVJhbmdlOwotY2xhc3MgUmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllczsKLQotY2xhc3MgQWxsVmlkZW9DYXBhYmlsaXRpZXMgOiBwdWJsaWMgTWVk
aWFTdHJlYW1DYXBhYmlsaXRpZXMgewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8QWxsVmlkZW9D
YXBhYmlsaXRpZXM+IGNyZWF0ZShQYXNzUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmls
aXRpZXM+IGNhcGFiaWxpdGllcykKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEFsbFZpZGVvQ2FwYWJpbGl0aWVzKGNhcGFiaWxpdGllcykpOwotICAgIH0KLSAgICB2aXJ0dWFs
IH5BbGxWaWRlb0NhcGFiaWxpdGllcygpIHsgfQotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IEFs
bFZpZGVvQ2FwYWJpbGl0aWVzKFBhc3NSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxp
dGllcz4gY2FwYWJpbGl0aWVzKQotICAgICAgICA6IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzKGNh
cGFiaWxpdGllcykKLSAgICB7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gQWxsVmlkZW9DYXBhYmlsaXRpZXNfaAotCi0jZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsVmlkZW9DYXBhYmlsaXRpZXMuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsVmlkZW9D
YXBhYmlsaXRpZXMuaWRsCShyZXZpc2lvbiAxOTI5NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAot
ICovCi0KLVsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKLSAgICBDb25kaXRpb25hbD1NRURJQV9T
VFJFQU0sCi0gICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCi1dIGludGVyZmFjZSBBbGxWaWRlb0Nh
cGFiaWxpdGllcyA6IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzIHsKLSAgICByZWFkb25seSBhdHRy
aWJ1dGUgRE9NU3RyaW5nW10gc291cmNlVHlwZTsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nW10gc291cmNlSWQ7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIENhcGFiaWxpdHlSYW5n
ZSB3aWR0aDsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgQ2FwYWJpbGl0eVJhbmdlIGhlaWdodDsK
LSAgICByZWFkb25seSBhdHRyaWJ1dGUgQ2FwYWJpbGl0eVJhbmdlIGZyYW1lUmF0ZTsKLSAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgQ2FwYWJpbGl0eVJhbmdlIGFzcGVjdFJhdGlvOwotICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBET01TdHJpbmdbXSAgZmFjaW5nTW9kZTsKLX07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2Uu
Y3BwCShyZXZpc2lvbiAxOTI5NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL0NhcGFiaWxpdHlSYW5nZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsOTIgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNpbmNsdWRlICJD
YXBhYmlsaXR5UmFuZ2UuaCIKLQotI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUg
Ik1lZGlhU291cmNlU2V0dGluZ3MuaCIKLSNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5o
PgotI2luY2x1ZGUgPGludGVycHJldGVyL0NhbGxGcmFtZS5oPgotI2luY2x1ZGUgPHJ1bnRpbWUv
SlNDSlNWYWx1ZS5oPgotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLVJlZjxDYXBhYmlsaXR5UmFuZ2U+IENhcGFiaWxpdHlSYW5nZTo6Y3JlYXRlKGNvbnN0
IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXR5UmFuZ2UmIHJhbmdlSW5mbykKLXsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBDYXBhYmlsaXR5UmFuZ2UocmFuZ2VJbmZvKSk7Ci19Ci0KLUNh
cGFiaWxpdHlSYW5nZTo6Q2FwYWJpbGl0eVJhbmdlKGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VD
YXBhYmlsaXR5UmFuZ2UmIHJhbmdlSW5mbykKLSAgICA6IG1fcmFuZ2VJbmZvKHJhbmdlSW5mbykK
LXsKLX0KLQotc3RhdGljIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHNjcmlwdFZhbHVlKEV4ZWNT
dGF0ZSYgc3RhdGUsIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXR5UmFuZ2U6OlZh
bHVlVW5pb24mIHZhbHVlLCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0eVJhbmdlOjpUeXBl
IHR5cGUpCi17Ci0gICAgLy8gTk9URTogdGhlIHNwZWMgc2F5czoKLSAgICAvLyAgICAgIC4uLiBh
biBpbXBsZW1lbnRhdGlvbiBzaG91bGQgbWFrZSBhIHJlYXNvbmFibGUgYXR0ZW1wdCB0byB0cmFu
c2xhdGUgYW5kIHNjYWxlIHRoZSBoYXJkd2FyZSdzIHNldHRpbmcKLSAgICAvLyAgICAgIG9udG8g
dGhlIG1hcHBpbmcgcHJvdmlkZWQgYnkgdGhpcyBzcGVjaWZpY2F0aW9uLiBJZiB0aGlzIGlzIG5v
dCBwb3NzaWJsZSBkdWUgdG8gdGhlIHVzZXIgYWdlbnQncwotICAgIC8vICAgICAgaW5hYmlsaXR5
IHRvIHJldHJpZXZlIGEgZ2l2ZW4gY2FwYWJpbGl0eSBmcm9tIGEgc291cmNlLCB0aGVuIGZvciBD
YXBhYmlsaXR5UmFuZ2UtdHlwZWQgY2FwYWJpbGl0aWVzLAotICAgIC8vICAgICAgdGhlIG1pbiBh
bmQgbWF4IGZpZWxkcyB3aWxsIG5vdCBiZSBwcmVzZW50IG9uIHRoZSByZXR1cm5lZCBkaWN0aW9u
YXJ5LCBhbmQgdGhlIHN1cHBvcnRlZCBmaWVsZCB3aWxsIGJlIGZhbHNlLgotICAgIC8vIFdlIGRv
bid0IGRvIHRoaXMgY3VycmVudGx5IGJlY2F1c2UgSSBkb24ndCBrbm93IG9mIGFuIGluc3RhbmNl
IHdoZXJlIGl0IGlzbid0IHBvc3NpYmxlIHRvIHJldHJpZXZlIGEgc291cmNlCi0gICAgLy8gY2Fw
YWJpbGl0eSwgYnV0IHdoZW4gd2UgaGF2ZSB0byBkZWFsIHdpdGggdGhpcyB3ZSB3aWxsIG5lZWQg
dG8gbWFyayBDYXBhYmlsaXR5UmFuZ2UubWluIGFuZCBDYXBhYmlsaXR5UmFuZ2UubWF4IGFzCi0g
ICAgLy8gIkN1c3RvbSIgYW5kIHJldHVybiBqc1VuZGVmaW5lZCgpIGZyb20gdGhlIGN1c3RvbSBn
ZXR0ZXIgdG8gc3VwcG9ydCBpdC4KLSAgICAKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNl
IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXR5UmFuZ2U6OkZsb2F0OgotICAgICAgICByZXR1
cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoc3RhdGUudm0oKSwgSlNWYWx1ZSh2YWx1ZS5hc0Zs
b2F0KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFi
aWxpdHlSYW5nZTo6VUxvbmc6Ci0gICAgICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZShzdGF0ZS52bSgpLCBKU1ZhbHVlKHZhbHVlLmFzVUxvbmcpKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0eVJhbmdlOjpVbmRlZmluZWQ6Ci0g
ICAgICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShzdGF0ZS52bSgpLCBqc1VuZGVm
aW5lZCgpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKHN0YXRlLnZtKCksIGpzVW5k
ZWZpbmVkKCkpOwotfQotCi1EZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBDYXBhYmlsaXR5UmFuZ2U6
Om1pbihFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAotewotICAgIHJldHVybiBzY3JpcHRWYWx1ZShz
dGF0ZSwgbV9yYW5nZUluZm8ubWluKCksIG1fcmFuZ2VJbmZvLnR5cGUoKSk7Ci19Ci0KLURlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlIENhcGFiaWxpdHlSYW5nZTo6bWF4KEV4ZWNTdGF0ZSYgc3RhdGUp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIHNjcmlwdFZhbHVlKHN0YXRlLCBtX3JhbmdlSW5mby5tYXgo
KSwgbV9yYW5nZUluZm8udHlwZSgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0
eVJhbmdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9DYXBhYmlsaXR5UmFuZ2UuaAkocmV2aXNpb24gMTkyOTU0KQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAq
Ci0gKi8KLQotI2lmbmRlZiBDYXBhYmlsaXR5UmFuZ2VfaAotI2RlZmluZSBDYXBhYmlsaXR5UmFu
Z2VfaAotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotI2luY2x1ZGUgIlJlYWx0aW1lTWVk
aWFTb3VyY2VDYXBhYmlsaXRpZXMuaCIKLSNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKLSNp
bmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgotI2luY2x1ZGUgPGludGVycHJldGVyL0Nh
bGxGcmFtZS5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotY2xhc3MgQ2FwYWJpbGl0eVJhbmdlIDogcHVibGljIFJlZkNvdW50ZWQ8Q2FwYWJp
bGl0eVJhbmdlPiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7Ci1wdWJsaWM6Ci0gICAgdmlydHVh
bCB+Q2FwYWJpbGl0eVJhbmdlKCkgeyB9Ci0KLSAgICBzdGF0aWMgUmVmPENhcGFiaWxpdHlSYW5n
ZT4gY3JlYXRlKGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXR5UmFuZ2UmKTsKLQot
ICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG1pbihKU0M6OkV4ZWNTdGF0ZSYpIGNvbnN0Owot
ICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG1heChKU0M6OkV4ZWNTdGF0ZSYpIGNvbnN0Owot
ICAgIGJvb2wgc3VwcG9ydGVkKCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZUluZm8uc3VwcG9ydGVk
KCk7IH0KLQotcHJpdmF0ZToKLSAgICBDYXBhYmlsaXR5UmFuZ2UoY29uc3QgUmVhbHRpbWVNZWRp
YVNvdXJjZUNhcGFiaWxpdHlSYW5nZSYpOwotICAgIAotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VD
YXBhYmlsaXR5UmFuZ2UgbV9yYW5nZUluZm87Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBDYXBhYmlsaXR5UmFuZ2VfaAotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5p
ZGwJKHJldmlzaW9uIDE5Mjk1NCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vQ2FwYWJpbGl0eVJhbmdlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSwzMyArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLVsKLSAgICBOb0lu
dGVyZmFjZU9iamVjdCwKLSAgICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sCi1dIGludGVyZmFj
ZSBDYXBhYmlsaXR5UmFuZ2UgewotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gcmVhZG9ubHkg
YXR0cmlidXRlIGFueSBtYXg7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSByZWFkb25seSBh
dHRyaWJ1dGUgYW55IG1pbjsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBzdXBwb3J0
ZWQ7Ci19OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNv
dXJjZVNldHRpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVNvdXJjZVNldHRpbmdzLmgJKHJldmlzaW9uIDE5Mjk1NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTZXR0aW5ncy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBBdG9taWNTdHJp
bmcmIGZhY2luZ01vZGUoKSBjb25zdDsKIAogICAgIGJvb2wgc3VwcG9ydHNWb2x1bWUoKSBjb25z
dCB7IHJldHVybiBtX3NvdXJjZVNldHRpbmdzLnN1cHBvcnRzVm9sdW1lKCk7IH0KLSAgICB1bnNp
Z25lZCBsb25nIHZvbHVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlU2V0dGluZ3Mudm9sdW1l
KCk7IH0KKyAgICBkb3VibGUgdm9sdW1lKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTZXR0aW5n
cy52b2x1bWUoKTsgfQogCiAgICAgYm9vbCBzdXBwb3J0c1NhbXBsZVJhdGUoKSBjb25zdCB7IHJl
dHVybiBtX3NvdXJjZVNldHRpbmdzLnN1cHBvcnRzU2FtcGxlUmF0ZSgpOyB9CiAgICAgdW5zaWdu
ZWQgbG9uZyBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTZXR0aW5ncy5zYW1w
bGVSYXRlKCk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAx
OTI5NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
Q2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxMjggKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNpbmNsdWRlICJNZWRpYVN0cmVhbUNh
cGFiaWxpdGllcy5oIgotCi0jaW5jbHVkZSAiQWxsQXVkaW9DYXBhYmlsaXRpZXMuaCIKLSNpbmNs
dWRlICJBbGxWaWRlb0NhcGFiaWxpdGllcy5oIgotI2luY2x1ZGUgIkNhcGFiaWxpdHlSYW5nZS5o
IgotI2luY2x1ZGUgIk1lZGlhU291cmNlU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJSZWFsdGltZU1l
ZGlhU291cmNlQ2FwYWJpbGl0aWVzLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmUHRy
PE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzPiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllczo6Y3JlYXRl
KFBhc3NSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gY2FwYWJpbGl0aWVz
KQotewotICAgIGlmIChjYXBhYmlsaXRpZXMtPmhhc1ZpZGVvU291cmNlKCkpCi0gICAgICAgIHJl
dHVybiBBbGxWaWRlb0NhcGFiaWxpdGllczo6Y3JlYXRlKGNhcGFiaWxpdGllcyk7Ci0gICAgCi0g
ICAgcmV0dXJuIEFsbEF1ZGlvQ2FwYWJpbGl0aWVzOjpjcmVhdGUoY2FwYWJpbGl0aWVzKTsKLX0K
LQotTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXM6Ok1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzKFBhc3NS
ZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gY2FwYWJpbGl0aWVzKQotICAg
IDogbV9Tb3VyY2VDYXBhYmlsaXRpZXMoY2FwYWJpbGl0aWVzKQotewotfQotCi1WZWN0b3I8U3Ry
aW5nPiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllczo6c291cmNlVHlwZSgpIGNvbnN0Ci17Ci0gICAg
Ly8gVGhpcyB3aWxsIGJlIGZpeGVkIGJ5IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTE3MjguCi0gICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7Ci19Ci0KLVZlY3Rv
cjxTdHJpbmc+IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjpzb3VyY2VJZCgpIGNvbnN0Ci17Ci0g
ICAgc2l6ZV90IGNvdW50ID0gbV9Tb3VyY2VDYXBhYmlsaXRpZXMtPnNvdXJjZUlkKCkuc2l6ZSgp
OwotICAgIGlmICghY291bnQpCi0gICAgICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOwotCi0g
ICAgVmVjdG9yPFN0cmluZz4gY2FwYWJpbGl0aWVzOwotICAgIGNhcGFiaWxpdGllcy5yZXNlcnZl
Q2FwYWNpdHkoY291bnQpOwotCi0gICAgZm9yIChhdXRvJiBpZCA6IG1fU291cmNlQ2FwYWJpbGl0
aWVzLT5zb3VyY2VJZCgpKQotICAgICAgICBjYXBhYmlsaXRpZXMuYXBwZW5kKGlkKTsKLSAgICAK
LSAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwotfQotCi1WZWN0b3I8U3RyaW5nPiBNZWRpYVN0cmVh
bUNhcGFiaWxpdGllczo6ZmFjaW5nTW9kZSgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fU291cmNl
Q2FwYWJpbGl0aWVzLT5oYXNWaWRlb1NvdXJjZSgpKTsKLSAgICAKLSAgICBzaXplX3QgY291bnQg
PSBtX1NvdXJjZUNhcGFiaWxpdGllcy0+ZmFjaW5nTW9kZXMoKS5zaXplKCk7Ci0gICAgaWYgKCFj
b3VudCkKLSAgICAgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7Ci0gICAgCi0gICAgVmVjdG9y
PFN0cmluZz4gY2FwYWJpbGl0aWVzOwotICAgIGNhcGFiaWxpdGllcy5yZXNlcnZlQ2FwYWNpdHko
Y291bnQpOwotICAgIAotICAgIGZvciAoYXV0byYgbW9kZSA6IG1fU291cmNlQ2FwYWJpbGl0aWVz
LT5mYWNpbmdNb2RlcygpKQotICAgICAgICBjYXBhYmlsaXRpZXMuYXBwZW5kKFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5nczo6ZmFjaW5nTW9kZShtb2RlKSk7Ci0gICAgCi0gICAgcmV0dXJuIGNh
cGFiaWxpdGllczsKLX0KLQotUmVmUHRyPENhcGFiaWxpdHlSYW5nZT4gTWVkaWFTdHJlYW1DYXBh
YmlsaXRpZXM6OndpZHRoKCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9Tb3VyY2VDYXBhYmlsaXRp
ZXMtPmhhc1ZpZGVvU291cmNlKCkpOwotICAgIAotICAgIHJldHVybiBDYXBhYmlsaXR5UmFuZ2U6
OmNyZWF0ZShtX1NvdXJjZUNhcGFiaWxpdGllcy0+d2lkdGgoKSk7Ci19Ci0KLVJlZlB0cjxDYXBh
YmlsaXR5UmFuZ2U+IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjpoZWlnaHQoKSBjb25zdAotewot
ICAgIEFTU0VSVChtX1NvdXJjZUNhcGFiaWxpdGllcy0+aGFzVmlkZW9Tb3VyY2UoKSk7Ci0gICAg
Ci0gICAgcmV0dXJuIENhcGFiaWxpdHlSYW5nZTo6Y3JlYXRlKG1fU291cmNlQ2FwYWJpbGl0aWVz
LT5oZWlnaHQoKSk7Ci19Ci0KLVJlZlB0cjxDYXBhYmlsaXR5UmFuZ2U+IE1lZGlhU3RyZWFtQ2Fw
YWJpbGl0aWVzOjpmcmFtZVJhdGUoKSBjb25zdAotewotICAgIEFTU0VSVChtX1NvdXJjZUNhcGFi
aWxpdGllcy0+aGFzVmlkZW9Tb3VyY2UoKSk7Ci0gICAgCi0gICAgcmV0dXJuIENhcGFiaWxpdHlS
YW5nZTo6Y3JlYXRlKG1fU291cmNlQ2FwYWJpbGl0aWVzLT5mcmFtZVJhdGUoKSk7Ci19Ci0KLVJl
ZlB0cjxDYXBhYmlsaXR5UmFuZ2U+IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjphc3BlY3RSYXRp
bygpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fU291cmNlQ2FwYWJpbGl0aWVzLT5oYXNWaWRlb1Nv
dXJjZSgpKTsKLSAgICAKLSAgICByZXR1cm4gQ2FwYWJpbGl0eVJhbmdlOjpjcmVhdGUobV9Tb3Vy
Y2VDYXBhYmlsaXRpZXMtPmFzcGVjdFJhdGlvKCkpOwotfQotCi1SZWZQdHI8Q2FwYWJpbGl0eVJh
bmdlPiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllczo6dm9sdW1lKCkgY29uc3QKLXsKLSAgICBBU1NF
UlQoIW1fU291cmNlQ2FwYWJpbGl0aWVzLT5oYXNWaWRlb1NvdXJjZSgpKTsKLSAgICAKLSAgICBy
ZXR1cm4gQ2FwYWJpbGl0eVJhbmdlOjpjcmVhdGUobV9Tb3VyY2VDYXBhYmlsaXRpZXMtPnZvbHVt
ZSgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtQ2FwYWJpbGl0aWVzLmgJKHJldmlzaW9uIDE5Mjk1NCkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw2OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmbmRlZiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllc19oCi0jZGVmaW5lIE1lZGlh
U3RyZWFtQ2FwYWJpbGl0aWVzX2gKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNpbmNs
dWRlICJNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oIgotI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFT
b3VyY2VDYXBhYmlsaXRpZXMuaCIKLSNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKLSNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBD
YXBhYmlsaXR5UmFuZ2U7Ci1jbGFzcyBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOwot
Ci1jbGFzcyBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcyA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlh
U3RyZWFtQ2FwYWJpbGl0aWVzPiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZlB0cjxNZWRpYVN0cmVhbUNhcGFiaWxpdGllcz4gY3JlYXRlKFBhc3NSZWZQ
dHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4pOwotICAgIHZpcnR1YWwgfk1lZGlh
U3RyZWFtQ2FwYWJpbGl0aWVzKCkgeyB9Ci0KLSAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHNv
dXJjZVR5cGUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHNvdXJjZUlkKCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCBSZWZQdHI8Q2FwYWJpbGl0eVJhbmdlPiB3aWR0aCgpIGNvbnN0
OwotICAgIHZpcnR1YWwgUmVmUHRyPENhcGFiaWxpdHlSYW5nZT4gaGVpZ2h0KCkgY29uc3Q7Ci0g
ICAgdmlydHVhbCBSZWZQdHI8Q2FwYWJpbGl0eVJhbmdlPiBmcmFtZVJhdGUoKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIFJlZlB0cjxDYXBhYmlsaXR5UmFuZ2U+IGFzcGVjdFJhdGlvKCkgY29uc3Q7Ci0g
ICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBmYWNpbmdNb2RlKCkgY29uc3Q7Ci0gICAgdmlydHVh
bCBSZWZQdHI8Q2FwYWJpbGl0eVJhbmdlPiB2b2x1bWUoKSBjb25zdDsKLSAgICAKLSAgICBib29s
IGhhc1ZpZGVvU291cmNlKCkgeyByZXR1cm4gbV9Tb3VyY2VDYXBhYmlsaXRpZXMtPmhhc1ZpZGVv
U291cmNlKCk7IH0KLQotcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IE1lZGlhU3RyZWFtQ2FwYWJp
bGl0aWVzKFBhc3NSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4pOwotCi0g
ICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IG1fU291cmNlQ2FwYWJp
bGl0aWVzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gTWVkaWFT
dHJlYW1DYXBhYmlsaXRpZXNfaAotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRp
ZXMuaWRsCShyZXZpc2lvbiAxOTI5NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSwz
MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0K
LVsKLSAgICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sCi0gICAgTm9JbnRlcmZhY2VPYmplY3Qs
Ci0gICAgU2tpcFZUYWJsZVZhbGlkYXRpb24sCi0gICAgQ3VzdG9tVG9KU09iamVjdCwKLV0gaW50
ZXJmYWNlIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzIHsKLX07Ci0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNw
cAkocmV2aXNpb24gMTkyOTU0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAsNiBAQAog
CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAotI2luY2x1ZGUgIkFsbEF1ZGlvQ2FwYWJpbGl0
aWVzLmgiCi0jaW5jbHVkZSAiQWxsVmlkZW9DYXBhYmlsaXRpZXMuaCIKICNpbmNsdWRlICJEaWN0
aW9uYXJ5LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgi
CkBAIC0xNjcsOSArMTY1LDkgQEAgUmVmUHRyPE1lZGlhU291cmNlU2V0dGluZ3M+IE1lZGlhU3Ry
ZWFtVAogICAgIHJldHVybiBNZWRpYVNvdXJjZVNldHRpbmdzOjpjcmVhdGUobV9wcml2YXRlLT5z
ZXR0aW5ncygpKTsKIH0KIAotUmVmUHRyPE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzPiBNZWRpYVN0
cmVhbVRyYWNrOjpnZXRDYXBhYmlsaXRpZXMoKSBjb25zdAorUmVmUHRyPFJlYWx0aW1lTWVkaWFT
b3VyY2VDYXBhYmlsaXRpZXM+IE1lZGlhU3RyZWFtVHJhY2s6OmdldENhcGFiaWxpdGllcygpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjpjcmVhdGUobV9wcml2
YXRlLT5jYXBhYmlsaXRpZXMoKSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y2FwYWJpbGl0aWVz
KCk7CiB9CiAKIHZvaWQgTWVkaWFTdHJlYW1UcmFjazo6YXBwbHlDb25zdHJhaW50cyhjb25zdCBE
aWN0aW9uYXJ5JiBjb25zdHJhaW50cykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCShyZXZpc2lvbiAxOTI5NTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2su
aAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNiBAQCBjbGFzcyBBdWRpb1NvdXJjZVByb3Zp
ZGVyOwogY2xhc3MgRGljdGlvbmFyeTsKIGNsYXNzIE1lZGlhQ29uc3RyYWludHNJbXBsOwogY2xh
c3MgTWVkaWFTb3VyY2VTZXR0aW5nczsKLWNsYXNzIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOwog
Y2xhc3MgTWVkaWFUcmFja0NvbnN0cmFpbnRzOwogCiBjbGFzcyBNZWRpYVN0cmVhbVRyYWNrIGZp
bmFsIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1UcmFjaz4sIHB1YmxpYyBTY3JpcHRX
cmFwcGFibGUsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJ
bmxpbmVEYXRhLCBwdWJsaWMgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6Ok9ic2VydmVyIHsKQEAg
LTgwLDcgKzc5LDcgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPE1lZGlhVHJhY2tDb25zdHJhaW50
cz4gZ2V0Q29uc3RyYWludHMoKSBjb25zdDsKICAgICBSZWZQdHI8TWVkaWFTb3VyY2VTZXR0aW5n
cz4gZ2V0U2V0dGluZ3MoKSBjb25zdDsKLSAgICBSZWZQdHI8TWVkaWFTdHJlYW1DYXBhYmlsaXRp
ZXM+IGdldENhcGFiaWxpdGllcygpIGNvbnN0OworICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291
cmNlQ2FwYWJpbGl0aWVzPiBnZXRDYXBhYmlsaXRpZXMoKSBjb25zdDsKICAgICB2b2lkIGFwcGx5
Q29uc3RyYWludHMoY29uc3QgRGljdGlvbmFyeSYpOwogICAgIHZvaWQgYXBwbHlDb25zdHJhaW50
cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmlkbAkocmV2aXNp
b24gMTkyOTU0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBlbnVtIE1lZGlh
U3RyZWFtVHJhY2tTdGF0ZSB7ICJuZXciLCAibGl2CiAKICAgICBNZWRpYVRyYWNrQ29uc3RyYWlu
dHMgZ2V0Q29uc3RyYWludHMoKTsKICAgICBbQ3VzdG9tXSBNZWRpYVNvdXJjZVNldHRpbmdzIGdl
dFNldHRpbmdzKCk7Ci0gICAgTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMgZ2V0Q2FwYWJpbGl0aWVz
KCk7IC8vIHJldHVybnMgZWl0aGVyIEFsbFZpZGVvQ2FwYWJpbGl0aWVzIG9yIEFsbEF1ZGlvQ2Fw
YWJpbGl0aWVzCisgICAgW0N1c3RvbV0gTWVkaWFUcmFja0NhcGFiaWxpdGllcyBnZXRDYXBhYmls
aXRpZXMoKTsKICAgICB2b2lkIGFwcGx5Q29uc3RyYWludHMoRGljdGlvbmFyeSBjb25zdHJhaW50
cyk7CiAKICAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ub3ZlcmNvbnN0cmFpbmVkOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMTkyOTU0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03OSwxNyArNzksNiBAQAogCQkwNzAz
NjNFNTE4MUExQ0RDMDBDMDc0QTUgLyogQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzAzNjNERDE4MUExQ0RDMDBD
MDc0QTUgLyogQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0gKi87IH07CiAJCTA3MDM2M0U2MTgxQTFD
REMwMEMwNzRBNSAvKiBBVlZpZGVvQ2FwdHVyZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwMzYzREUxODFBMUNEQzAwQzA3NEE1IC8qIEFW
VmlkZW9DYXB0dXJlU291cmNlLmggKi87IH07CiAJCTA3MDM2M0U3MTgxQTFDREMwMEMwNzRBNSAv
KiBBVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3MDM2M0RGMTgxQTFDREMwMEMwNzRBNSAvKiBBVlZpZGVvQ2FwdHVy
ZVNvdXJjZS5tbSAqLzsgfTsKLQkJMDcwNTg0RkYxN0Y5RjA1RTAwNUYyQkNCIC8qIENhcGFiaWxp
dHlSYW5nZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwNzA1ODRGRTE3RjlGMDVFMDA1RjJCQ0IgLyogQ2FwYWJpbGl0eVJhbmdlLmNwcCAqLzsgfTsK
LQkJMDcwNTg1MDIxN0ZBMTBEMDAwNUYyQkNCIC8qIEpTQWxsVmlkZW9DYXBhYmlsaXRpZXMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MDAx
N0ZBMTBEMDAwNUYyQkNCIC8qIEpTQWxsVmlkZW9DYXBhYmlsaXRpZXMuY3BwICovOyB9OwotCQkw
NzA1ODUwMzE3RkExMEQwMDA1RjJCQ0IgLyogSlNBbGxWaWRlb0NhcGFiaWxpdGllcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MDExN0ZBMTBE
MDAwNUYyQkNCIC8qIEpTQWxsVmlkZW9DYXBhYmlsaXRpZXMuaCAqLzsgfTsKLQkJMDcwNTg1MDgx
N0ZBNDY4OTAwNUYyQkNCIC8qIEFsbEF1ZGlvQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUwNTE3RkE0Njg5MDA1RjJCQ0Ig
LyogQWxsQXVkaW9DYXBhYmlsaXRpZXMuaCAqLzsgfTsKLQkJMDcwNTg1MEIxN0ZBNDgyNzAwNUYy
QkNCIC8qIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUwQTE3RkE0ODI3MDA1RjJCQ0IgLyogTWVkaWFT
dHJlYW1DYXBhYmlsaXRpZXMuaCAqLzsgfTsKLQkJMDcwNTg1MTIxN0ZBNzEwNzAwNUYyQkNCIC8q
IEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MTAxN0ZBNzEwNzAwNUYyQkNCIC8qIEpTTWVkaWFT
dHJlYW1DYXBhYmlsaXRpZXMuY3BwICovOyB9OwotCQkwNzA1ODUxMzE3RkE3MTA3MDA1RjJCQ0Ig
LyogSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MTExN0ZBNzEwNzAwNUYyQkNCIC8qIEpTTWVkaWFT
dHJlYW1DYXBhYmlsaXRpZXMuaCAqLzsgfTsKLQkJMDcwNTg1MTUxN0ZCMEVFQTAwNUYyQkNCIC8q
IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTE0MTdGQjBFMkMwMDVGMkJDQiAvKiBNZWRpYVN0cmVh
bUNhcGFiaWxpdGllcy5jcHAgKi87IH07Ci0JCTA3MDU4NTE3MTdGQjQwRTkwMDVGMkJDQiAvKiBK
U01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTE2MTdGQjQwRTkwMDVGMkJDQiAvKiBKU01l
ZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3VzdG9tLmNwcCAqLzsgfTsKLQkJMDcwNTg1MUExN0ZCNDRC
NDAwNUYyQkNCIC8qIEpTQWxsQXVkaW9DYXBhYmlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MTgxN0ZCNDRCNDAwNUYyQkNCIC8q
IEpTQWxsQXVkaW9DYXBhYmlsaXRpZXMuY3BwICovOyB9OwotCQkwNzA1ODUxQjE3RkI0NEI0MDA1
RjJCQ0IgLyogSlNBbGxBdWRpb0NhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MTkxN0ZCNDRCNDAwNUYyQkNCIC8qIEpTQWxs
QXVkaW9DYXBhYmlsaXRpZXMuaCAqLzsgfTsKIAkJMDcwNTg1MjExN0ZEQzE0MDAwNUYyQkNCIC8q
IE1lZGlhVHJhY2tDb25zdHJhaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwNzA1ODUxRDE3RkRDMTQwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0
cmFpbnQuaCAqLzsgfTsKIAkJMDcwNTg1MjMxN0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tD
b25zdHJhaW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwNzA1ODUxRjE3RkRDMTQwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNw
cCAqLzsgfTsKIAkJMDcwNTg1MjQxN0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJh
aW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcw
NTg1MjAxN0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50cy5oICovOyB9OwpA
QCAtMTY2LDkgKzE1NSw2IEBACiAJCTA3Mzc5NEZFMTlGNTg2NEUwMEU1QTA0NSAvKiBSVENOb3Rp
ZmllcnNNb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwNzM3OTRGODE5RjU4NjRFMDBFNUEwNDUgLyogUlRDTm90aWZpZXJzTW9jay5oICovOyB9Owog
CQkwNzM5NEVDODFCQUIyQ0NEMDBCRTk5Q0QgLyogTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzM5NEVDNzFCQUIy
Q0NEMDBCRTk5Q0QgLyogTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHAgKi87IH07CiAJCTA3Mzk0RUNB
MUJBQjJDRDcwMEJFOTlDRCAvKiBNZWRpYURldmljZXNSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzM5NEVDOTFCQUIyQ0Q3MDBCRTk5Q0Qg
LyogTWVkaWFEZXZpY2VzUmVxdWVzdC5oICovOyB9OwotCQkwNzNBQjRCMzE3RjhCQUNBMDA2RTBE
NkYgLyogQWxsVmlkZW9DYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3M0FCNEIwMTdGOEJBQ0EwMDZFMEQ2RiAvKiBBbGxWaWRlb0Nh
cGFiaWxpdGllcy5oICovOyB9OwotCQkwNzNBQjRCNzE3RjkyRUNGMDA2RTBENkYgLyogSlNDYXBh
YmlsaXR5UmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDczQUI0QjUxN0Y5MkVDRjAwNkUwRDZGIC8qIEpTQ2FwYWJpbGl0eVJhbmdlLmNwcCAq
LzsgfTsKLQkJMDczQUI0QjgxN0Y5MkVDRjAwNkUwRDZGIC8qIEpTQ2FwYWJpbGl0eVJhbmdlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNBQjRCNjE3
RjkyRUNGMDA2RTBENkYgLyogSlNDYXBhYmlsaXR5UmFuZ2UuaCAqLzsgfTsKIAkJMDczQkUzNDAx
N0QxN0UwMTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yVXNlck1lZGlhLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3M0JFMzNFMTdEMTdFMDEwMDJCRDQz
MSAvKiBKU05hdmlnYXRvclVzZXJNZWRpYS5jcHAgKi87IH07CiAJCTA3M0JFMzQxMTdEMTdFMDEw
MDJCRDQzMSAvKiBKU05hdmlnYXRvclVzZXJNZWRpYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczQkUzM0YxN0QxN0UwMTAwMkJENDMxIC8qIEpTTmF2
aWdhdG9yVXNlck1lZGlhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMDczQkUzNDgxN0QxN0U3QTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yVXNlck1l
ZGlhRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDczQkUzNDIxN0QxN0U3QTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yVXNlck1lZGlhRXJyb3Iu
Y3BwICovOyB9OwpAQCAtMzIyLDcgKzMwOCw2IEBACiAJCTA3QzU5QjY4MTdGNzg0QkEwMDBGQkNC
QiAvKiBNZWRpYVNvdXJjZVNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzU5QjY1MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJj
ZVNldHRpbmdzLmNwcCAqLzsgfTsKIAkJMDdDNTlCNjkxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1lZGlh
U291cmNlU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3QzU5QjY2MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVNldHRpbmdzLmgg
Ki87IH07CiAJCTA3QzU5QjZFMTdGNzk0RjYwMDBGQkNCQiAvKiBKU01lZGlhU3RyZWFtVHJhY2tD
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDdDNTlCNkQxN0Y3OTRGNjAwMEZCQ0JCIC8qIEpTTWVkaWFTdHJlYW1UcmFja0N1c3RvbS5jcHAg
Ki87IH07Ci0JCTA3QzU5Qjc2MTdGN0QwREIwMDBGQkNCQiAvKiBDYXBhYmlsaXR5UmFuZ2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzU5Qjc0MTdG
N0QwOUQwMDBGQkNCQiAvKiBDYXBhYmlsaXR5UmFuZ2UuaCAqLzsgfTsKIAkJMDdDQTEyMEUxODJE
NjdEODAwRDEyMTk3IC8qIEpTUlRDUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDQTEyMEQxODJENjdEODAwRDEy
MTk3IC8qIEpTUlRDUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwICovOyB9OwogCQkwN0NFNzdENTE2
NzEyQTZBMDBDNTVBNDcgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDRTc3RDQxNjcxMkE2QTAw
QzU1QTQ3IC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwN0QwN0IxNDE4MzQxNTg4MDBBQkRE
M0MgLyogSlNSVENTZXNzaW9uRGVzY3JpcHRpb25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdEMDdCMTMxODM0MTU4ODAwQUJERDNDIC8q
IEpTUlRDU2Vzc2lvbkRlc2NyaXB0aW9uQ3VzdG9tLmNwcCAqLzsgfTsKQEAgLTczMzcsMTkgKzcz
MjIsNiBAQAogCQkwNzAzNjNERDE4MUExQ0RDMDBDMDc0QTUgLyogQVZNZWRpYUNhcHR1cmVTb3Vy
Y2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBVk1lZGlhQ2Fw
dHVyZVNvdXJjZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwMzYzREUxODFB
MUNEQzAwQzA3NEE1IC8qIEFWVmlkZW9DYXB0dXJlU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFWVmlkZW9DYXB0dXJlU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTA3MDM2M0RGMTgxQTFDREMwMEMwNzRBNSAvKiBBVlZpZGVvQ2FwdHVyZVNv
dXJjZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFWVmlkZW9D
YXB0dXJlU291cmNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwNzA1ODRGRTE3
RjlGMDVFMDA1RjJCQ0IgLyogQ2FwYWJpbGl0eVJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENhcGFiaWxpdHlSYW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTA3MDU4NTAwMTdGQTEwRDAwMDVGMkJDQiAvKiBKU0FsbFZpZGVvQ2FwYWJp
bGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQWxsVmlk
ZW9DYXBhYmlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwNzA1ODUw
MTE3RkExMEQwMDA1RjJCQ0IgLyogSlNBbGxWaWRlb0NhcGFiaWxpdGllcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3MDU4NTA1MTdGQTQ2ODkwMDVGMkJDQiAvKiBBbGxBdWRp
b0NhcGFiaWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbGxBdWRp
b0NhcGFiaWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwNzA1ODUwNjE3
RkE0Njg5MDA1RjJCQ0IgLyogQWxsQXVkaW9DYXBhYmlsaXRpZXMuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IEFsbEF1ZGlvQ2FwYWJpbGl0aWVzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMDcwNTg1MEExN0ZBNDgyNzAwNUYyQkNCIC8qIE1lZGlhU3RyZWFtQ2FwYWJpbGl0
aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU3RyZWFtQ2FwYWJp
bGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3MDU4NTBFMTdGQTZGQjEw
MDVGMkJDQiAvKiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkwNzA1ODUxMDE3RkE3MTA3MDA1RjJCQ0IgLyogSlNNZWRpYVN0cmVhbUNhcGFiaWxp
dGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhU3Ry
ZWFtQ2FwYWJpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDcwNTg1
MTExN0ZBNzEwNzAwNUYyQkNCIC8qIEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwNzA1ODUxNDE3RkIwRTJDMDA1RjJCQ0IgLyog
TWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkwNzA1ODUxNjE3RkI0MEU5MDA1RjJCQ0IgLyogSlNNZWRpYVN0cmVhbUNhcGFi
aWxpdGllc0N1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMDcwNTg1MTgxN0ZCNDRCNDAwNUYyQkNCIC8qIEpTQWxsQXVkaW9DYXBhYmlsaXRp
ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBbGxBdWRpb0Nh
cGFiaWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3MDU4NTE5MTdG
QjQ0QjQwMDVGMkJDQiAvKiBKU0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTQWxsQXVkaW9DYXBhYmlsaXRpZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDcwNTg1MUMxN0ZEQjIzQzAwNUYyQkNCIC8qIE1lZGlhVHJhY2tD
b25zdHJhaW50cy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFUcmFja0NvbnN0cmFpbnRzLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwNTg1MUQxN0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJh
Y2tDb25zdHJhaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhVHJh
Y2tDb25zdHJhaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MDU4NTFFMTdG
REMxNDAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludC5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gTWVkaWFUcmFja0NvbnN0cmFpbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNzUwNyw5ICs3NDc5LDYgQEAKIAkJMDczNzk0RjgxOUY1ODY0RTAwRTVBMDQ1IC8q
IFJUQ05vdGlmaWVyc01vY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRD
Tm90aWZpZXJzTW9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzM5NEVDNzFC
QUIyQ0NEMDBCRTk5Q0QgLyogTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYURldmljZXNSZXF1ZXN0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDczOTRFQzkxQkFCMkNENzAwQkU5OUNEIC8qIE1lZGlhRGV2
aWNlc1JlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFEZXZp
Y2VzUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwNzNBQjRCMDE3RjhC
QUNBMDA2RTBENkYgLyogQWxsVmlkZW9DYXBhYmlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQWxsVmlkZW9DYXBhYmlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMDczQUI0QjUxN0Y5MkVDRjAwNkUwRDZGIC8qIEpTQ2FwYWJpbGl0eVJhbmdl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ2FwYWJpbGl0eVJh
bmdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDczQUI0QjYxN0Y5MkVDRjAw
NkUwRDZGIC8qIEpTQ2FwYWJpbGl0eVJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTQ2FwYWJpbGl0eVJhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA3M0JFMzNFMTdEMTdFMDEwMDJCRDQzMSAvKiBKU05hdmlnYXRvclVzZXJNZWRpYS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05hdmlnYXRvclVzZXJNZWRpYS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3M0JFMzNGMTdEMTdFMDEwMDJCRDQz
MSAvKiBKU05hdmlnYXRvclVzZXJNZWRpYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU05hdmlnYXRvclVzZXJNZWRpYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwNzNCRTM0MjE3RDE3RTdBMDAyQkQ0MzEgLyogSlNOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05hdmlnYXRvclVzZXJN
ZWRpYUVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc2MTgsOSArNzU4
Nyw2IEBACiAJCTA3QzU5QjY1MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVNldHRpbmdz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU291cmNlU2V0
dGluZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0M1OUI2NjE3Rjc4NEJB
MDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTZXR0aW5ncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNZWRpYVNvdXJjZVNldHRpbmdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA3QzU5QjZEMTdGNzk0RjYwMDBGQkNCQiAvKiBKU01lZGlhU3RyZWFtVHJhY2tDdXN0
b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYVN0cmVh
bVRyYWNrQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDdDNTlCNzMx
N0Y3RDA5RDAwMEZCQ0JCIC8qIEFsbFZpZGVvQ2FwYWJpbGl0aWVzLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBBbGxWaWRlb0NhcGFiaWxpdGllcy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTA3QzU5Qjc0MTdGN0QwOUQwMDBGQkNCQiAvKiBDYXBhYmlsaXR5UmFuZ2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FwYWJpbGl0eVJhbmdlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3QzU5Qjc1MTdGN0QwOUQwMDBGQkNCQiAvKiBDYXBh
YmlsaXR5UmFuZ2UuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENhcGFiaWxpdHlSYW5nZS5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3Q0ExMjBEMTgyRDY3RDgwMEQxMjE5
NyAvKiBKU1JUQ1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTUlRDUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwN0NFNzdENDE2NzEyQTZBMDBDNTVBNDcgLyogSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA3RDA3QjEzMTgzNDE1ODgwMEFCREQzQyAvKiBKU1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkN1
c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JUQ1Nlc3Np
b25EZXNjcmlwdGlvbkN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
NTE0MywxMyArMTUxMDksNiBAQAogCQkwNzIyMUI0NjE3Q0VDMzI3MDA4NDhFNTEgLyogbWVkaWFz
dHJlYW0gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTA3
MDU4NTA1MTdGQTQ2ODkwMDVGMkJDQiAvKiBBbGxBdWRpb0NhcGFiaWxpdGllcy5oICovLAotCQkJ
CTA3MDU4NTA2MTdGQTQ2ODkwMDVGMkJDQiAvKiBBbGxBdWRpb0NhcGFiaWxpdGllcy5pZGwgKi8s
Ci0JCQkJMDczQUI0QjAxN0Y4QkFDQTAwNkUwRDZGIC8qIEFsbFZpZGVvQ2FwYWJpbGl0aWVzLmgg
Ki8sCi0JCQkJMDdDNTlCNzMxN0Y3RDA5RDAwMEZCQ0JCIC8qIEFsbFZpZGVvQ2FwYWJpbGl0aWVz
LmlkbCAqLywKLQkJCQkwNzA1ODRGRTE3RjlGMDVFMDA1RjJCQ0IgLyogQ2FwYWJpbGl0eVJhbmdl
LmNwcCAqLywKLQkJCQkwN0M1OUI3NDE3RjdEMDlEMDAwRkJDQkIgLyogQ2FwYWJpbGl0eVJhbmdl
LmggKi8sCi0JCQkJMDdDNTlCNzUxN0Y3RDA5RDAwMEZCQ0JCIC8qIENhcGFiaWxpdHlSYW5nZS5p
ZGwgKi8sCiAJCQkJMkUzQzhDNjExQkZCQThEQzAwMzA5NTY2IC8qIENhcHR1cmVEZXZpY2VNYW5h
Z2VyLmggKi8sCiAJCQkJMkUzQzhDNjMxQkZCQjc1RDAwMzA5NTY2IC8qIENhcHR1cmVEZXZpY2VN
YW5hZ2VyLmNwcCAqLywKIAkJCQkyRTNDOEM2NjFCRkJGOEUxMDAzMDk1NjYgLyogQ2FwdHVyZURl
dmljZUluZm8uaCAqLywKQEAgLTE1MTc3LDkgKzE1MTM2LDYgQEAKIAkJCQkwNzIyMUI0QzE3Q0VD
MzI3MDA4NDhFNTEgLyogTWVkaWFTdHJlYW0uY3BwICovLAogCQkJCTA3MjIxQjREMTdDRUMzMjcw
MDg0OEU1MSAvKiBNZWRpYVN0cmVhbS5oICovLAogCQkJCTA3MjIxQjRFMTdDRUMzMjcwMDg0OEU1
MSAvKiBNZWRpYVN0cmVhbS5pZGwgKi8sCi0JCQkJMDcwNTg1MTQxN0ZCMEUyQzAwNUYyQkNCIC8q
IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNwcCAqLywKLQkJCQkwNzA1ODUwQTE3RkE0ODI3MDA1
RjJCQ0IgLyogTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaCAqLywKLQkJCQkwNzA1ODUwRTE3RkE2
RkIxMDA1RjJCQ0IgLyogTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaWRsICovLAogCQkJCTA3MjIx
QjRGMTdDRUMzMjcwMDg0OEU1MSAvKiBNZWRpYVN0cmVhbUV2ZW50LmNwcCAqLywKIAkJCQkwNzIy
MUI1MDE3Q0VDMzI3MDA4NDhFNTEgLyogTWVkaWFTdHJlYW1FdmVudC5oICovLAogCQkJCTA3MjIx
QjUxMTdDRUMzMjcwMDg0OEU1MSAvKiBNZWRpYVN0cmVhbUV2ZW50LmlkbCAqLywKQEAgLTE1Mzk4
LDggKzE1MzU0LDYgQEAKIAkJCQkwNzI3N0U0MTE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0
cmVhbS5oICovLAogCQkJCTA3Mjc3RTQyMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFt
QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwICovLAogCQkJCTA3Mjc3RTQzMTdEMDE4Q0MwMDE1NTM0
RCAvKiBKU01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCAqLywKLQkJCQkwNzA1ODUx
MDE3RkE3MTA3MDA1RjJCQ0IgLyogSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHAgKi8sCi0J
CQkJMDcwNTg1MTExN0ZBNzEwNzAwNUYyQkNCIC8qIEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMu
aCAqLywKIAkJCQkwNzI3N0U0NDE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbUV2ZW50
LmNwcCAqLywKIAkJCQkwNzI3N0U0NTE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbUV2
ZW50LmggKi8sCiAJCQkJMDcyNzdFNDYxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW1U
cmFjay5jcHAgKi8sCkBAIC0yMjE3NSw3ICsyMjEyOSw2IEBACiAJCQkJQUQ3MjZGRTcxNkQ5RjIw
NDAwM0E0RTZEIC8qIEpTTWVkaWFMaXN0Q3VzdG9tLmggKi8sCiAJCQkJMDc3QjY0MEUxQjhGNTM3
NTAwM0U5QUQ1IC8qIEpTTWVkaWFTZXNzaW9uQ3VzdG9tLmNwcCAqLywKIAkJCQkwN0M1OUI2RDE3
Rjc5NEY2MDAwRkJDQkIgLyogSlNNZWRpYVN0cmVhbVRyYWNrQ3VzdG9tLmNwcCAqLywKLQkJCQkw
NzA1ODUxNjE3RkI0MEU5MDA1RjJCQ0IgLyogSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllc0N1c3Rv
bS5jcHAgKi8sCiAJCQkJRTFBNUY5OUEwRTdFQUEyNTAwQUY4NUVBIC8qIEpTTWVzc2FnZUNoYW5u
ZWxDdXN0b20uY3BwICovLAogCQkJCTA3QzFDMEU2MUJGQjkwQTcwMEJEMjI1NiAvKiBKU01lZGlh
VHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50c0N1c3RvbS5jcHAgKi8sCiAJCQkJNDEwQjdFNzExMDQ1
RkFCMDAwRDgyMjRGIC8qIEpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCAqLywKQEAgLTIyNzYxLDEy
ICsyMjcxNCw2IEBACiAJCUNENjFGRTdCMTc5NENBMDIwMDQxMDFFQiAvKiBNZWRpYVNvdXJjZSAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMDcwNTg1MTgx
N0ZCNDRCNDAwNUYyQkNCIC8qIEpTQWxsQXVkaW9DYXBhYmlsaXRpZXMuY3BwICovLAotCQkJCTA3
MDU4NTE5MTdGQjQ0QjQwMDVGMkJDQiAvKiBKU0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmggKi8sCi0J
CQkJMDcwNTg1MDAxN0ZBMTBEMDAwNUYyQkNCIC8qIEpTQWxsVmlkZW9DYXBhYmlsaXRpZXMuY3Bw
ICovLAotCQkJCTA3MDU4NTAxMTdGQTEwRDAwMDVGMkJDQiAvKiBKU0FsbFZpZGVvQ2FwYWJpbGl0
aWVzLmggKi8sCi0JCQkJMDczQUI0QjUxN0Y5MkVDRjAwNkUwRDZGIC8qIEpTQ2FwYWJpbGl0eVJh
bmdlLmNwcCAqLywKLQkJCQkwNzNBQjRCNjE3RjkyRUNGMDA2RTBENkYgLyogSlNDYXBhYmlsaXR5
UmFuZ2UuaCAqLywKIAkJCQlDRDlERTE3MjE3QUFDNzRDMDBFQTM4NkQgLyogSlNNZWRpYVNvdXJj
ZS5jcHAgKi8sCiAJCQkJQ0Q5REUxNzMxN0FBQzc0QzAwRUEzODZEIC8qIEpTTWVkaWFTb3VyY2Uu
aCAqLywKIAkJCQlDRDlERTE3NjE3QUFDNzVCMDBFQTM4NkQgLyogSlNTb3VyY2VCdWZmZXIuY3Bw
ICovLApAQCAtMjQ2MjMsOSArMjQ1NzAsNyBAQAogCQkJCUUxQzRERTY5MEVBNzVDMUUwMDIzQ0NE
NiAvKiBBY3RpdmVET01PYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRjdFNDkxMTM3Q0Q3
QzcwMDFEREFFNyAvKiBBZGp1c3RWaWV3U2l6ZU9yTm90LmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NEQwQzQwNjExMTVGMUVBMDAxOEFBMzQgLyogQWZmaW5lVHJhbnNmb3JtLmggaW4gSGVhZGVycyAq
LywKLQkJCQkwNzA1ODUwODE3RkE0Njg5MDA1RjJCQ0IgLyogQWxsQXVkaW9DYXBhYmlsaXRpZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTk5Q0MwQjREMThCRTk4NDkwMDZDRUJDQyAvKiBBbGxSZXBs
YXlJbnB1dHMuaCBpbiBIZWFkZXJzICovLAotCQkJCTA3M0FCNEIzMTdGOEJBQ0EwMDZFMEQ2RiAv
KiBBbGxWaWRlb0NhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VEQTEyRDcxNTJD
QTFDQjAwRDlFMDhEIC8qIEFsdGVybmF0aXZlVGV4dENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQ0UwOEMzRDIxNTJCNTk5QTAwMjFCOEMyIC8qIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUNFN0IyREIzMTU4NkFCQUQwMDk4QjNGQSAvKiBBbHRlcm5h
dGl2ZVRleHRVSUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjQ4MTMsNyArMjQ3NTgs
NiBAQAogCQkJCTQ5QzdCOUREMTA0MkQzMkYwMDA5RDQ0NyAvKiBDYW52YXNSZW5kZXJpbmdDb250
ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTQ4NEZDQjEwMkNGMjNDMDAxODdERDMgLyogQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTQ4NEZDRTEwMkNG
MjNDMDAxODdERDMgLyogQ2FudmFzU3R5bGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTA3QzU5Qjc2
MTdGN0QwREIwMDBGQkNCQiAvKiBDYXBhYmlsaXR5UmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTA3OUQwODY4MTYyRjIwRTgwMERCODY1OCAvKiBDYXB0aW9uVXNlclByZWZlcmVuY2VzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwNzlEMDg2QjE2MkYyMUY5MDBEQjg2NTggLyogQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlc01lZGlhQUYuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5Q0MwQjRGMThCRTk4NDkw
MDZDRUJDQyAvKiBDYXB0dXJpbmdJbnB1dEN1cnNvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjA0
OCw4ICsyNTk5Miw2IEBACiAJCQkJNDRFRkY2NDMxQTZGRjkyNzAwRDQ1RUVDIC8qIElPVHlwZXNT
UEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3QUM0NzAyMTk1MjEwMjEwMEVFOTcyMyAvKiBJU09W
VFRDdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOEY4ODA1MEZGOTU3QUYwMDgwRjA0NSAvKiBK
U0Fic3RyYWN0V29ya2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQkwNzA1ODUxQjE3RkI0NEI0MDA1
RjJCQ0IgLyogSlNBbGxBdWRpb0NhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDcw
NTg1MDMxN0ZBMTBEMDAwNUYyQkNCIC8qIEpTQWxsVmlkZW9DYXBhYmlsaXRpZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZEQTE1RUNBMTJCMDNGNTAwMDNBNTgzQSAvKiBKU0FuYWx5c2VyTm9kZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMzE5ODQ4MEMxQTFFNkNFODAwQTEzMzE4IC8qIEpTQW5pbWF0
aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1REYzMURCMDlEMUMxMjMwMDBCRTMyNSAv
KiBKU0F0dHIuaCBpbiBIZWFkZXJzICovLApAQCAtMjYwNzcsNyArMjYwMTksNiBAQAogCQkJCTY1
REYzMjNDMDlEMURFNjUwMDFCRTMyNSAvKiBKU0NhbnZhc1Byb3h5LmggaW4gSGVhZGVycyAqLywK
IAkJCQk0OUVFRDE0MzEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUVFRDE0NTEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBpbiBIZWFkZXJzICovLAotCQkJCTA3M0FCNEI4MTdGOTJF
Q0YwMDZFMEQ2RiAvKiBKU0NhcGFiaWxpdHlSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNG
OUI3QTEwQkE2MDMyNjAwODU0MDY0IC8qIEpTQ0RBVEFTZWN0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGREExNUVBMjEyQjAzRUUxMDAzQTU4M0EgLyogSlNDaGFubmVsTWVyZ2VyTm9kZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkRBMTVFQTQxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQ2hhbm5lbFNw
bGl0dGVyTm9kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjMwMCw3ICsyNjI0MSw2IEBACiAJCQkJ
MDcyNzdFNEQxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW0uaCBpbiBIZWFkZXJzICov
LAogCQkJCTA3Mjc3RTRGMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtQXVkaW9EZXN0
aW5hdGlvbk5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEQkQ0ODBEMTU5QkM2ODcwMDkzRUI0
RiAvKiBKU01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmggaW4gSGVhZGVycyAqLywKLQkJCQkw
NzA1ODUxMzE3RkE3MTA3MDA1RjJCQ0IgLyogSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMDcyNzdFNTExN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJl
YW1FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcyNzdFNTMxN0QwMThDQzAwMTU1MzREIC8q
IEpTTWVkaWFTdHJlYW1UcmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcyNzdFNTUxN0QwMThD
QzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW1UcmFja0V2ZW50LmggaW4gSGVhZGVycyAqLywKQEAg
LTI2NzkyLDcgKzI2NzMyLDYgQEAKIAkJCQkwNzhFMDk0QzE3RDE3MDk2MDA0MjBBQTEgLyogTWVk
aWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc4MzIy
ODUxODAxM0VEODAwOTk5RTBDIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZENjcxQTc4MTU5QkIwNzAwMDE5NzU1OSAvKiBNZWRpYVN0cmVhbUF1ZGlvU291
cmNlTm9kZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDcwNTg1MEIxN0ZBNDgyNzAwNUYyQkNCIC8q
IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzBGNTQ5ODE3
RjEyRjZCMDAxNjlFMDQgLyogTWVkaWFTdHJlYW1Db25zdHJhaW50c1ZhbGlkYXRpb25DbGllbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTM5MTdEMTZCMkMwMDQyMEFBMSAvKiBNZWRpYVN0
cmVhbUNyZWF0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzhFMDkxNjE3RDE0RDFD
MDA0MjBBQTEgLyogTWVkaWFTdHJlYW1FdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODcxNSw3
ICsyODY1NCw2IEBACiAJCQkJNDlDN0I5REMxMDQyRDMyRjAwMDlENDQ3IC8qIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDk0ODRGQ0ExMDJDRjIzQzAwMTg3
REQzIC8qIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0
OTQ4NEZDRDEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzU3R5bGUuY3BwIGluIFNvdXJjZXMgKi8s
Ci0JCQkJMDcwNTg0RkYxN0Y5RjA1RTAwNUYyQkNCIC8qIENhcGFiaWxpdHlSYW5nZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwNzJDQTg2MTE2Q0I0REMzMDA4QUUxMzEgLyogQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzlEMDg2QzE2MkYyMUY5MDBEQjg2
NTggLyogQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTlDQzBCNEUxOEJFOTg0OTAwNkNFQkNDIC8qIENhcHR1cmluZ0lucHV0Q3Vyc29yLmNwcCBp
biBTb3VyY2VzICovLApAQCAtMjk2NTcsOCArMjk1OTUsNiBAQAogCQkJCUFEOUZGNkUxMTkwODM5
MUQwMDNCNjFFMCAvKiBJT1N1cmZhY2VQb29sQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQkw
N0FDNDcwMTE5NTIxMDIxMDBFRTk3MjMgLyogSVNPVlRUQ3VlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTQxOEY4ODA0MEZGOTU3QUUwMDgwRjA0NSAvKiBKU0Fic3RyYWN0V29ya2VyLmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCTA3MDU4NTFBMTdGQjQ0QjQwMDVGMkJDQiAvKiBKU0FsbEF1ZGlvQ2Fw
YWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTA3MDU4NTAyMTdGQTEwRDAwMDVGMkJD
QiAvKiBKU0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEQTE1
RUM5MTJCMDNGNTAwMDNBNTgzQSAvKiBKU0FuYWx5c2VyTm9kZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkzMUE3OTVDNjE4ODhCQURDMDAzODJGOTAgLyogSlNBTkdMRUluc3RhbmNlZEFycmF5cy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTk4NDgwQjFBMUU2Q0U0MDBBMTMzMTggLyogSlNBbmlt
YXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5Njk1LDcgKzI5NjMxLDYgQEAKIAkJ
CQk0OUVFRDE0NDEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFRUQxNEUxMDUxOTcxQTAwMDk5RkFCIC8qIEpTQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RUVE
MTUwMTA1MTk3MUEwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJMDczQUI0QjcxN0Y5MkVDRjAwNkUwRDZGIC8qIEpTQ2FwYWJp
bGl0eVJhbmdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzRjlCN0EwMEJBNjAzMjYwMDg1NDA2
NCAvKiBKU0NEQVRBU2VjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGREExNUVBMTEyQjAz
RUUxMDAzQTU4M0EgLyogSlNDaGFubmVsTWVyZ2VyTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlGREExNUVBMzEyQjAzRUUxMDAzQTU4M0EgLyogSlNDaGFubmVsU3BsaXR0ZXJOb2RlLmNwcCBp
biBTb3VyY2VzICovLApAQCAtMjk5ODUsOCArMjk5MjAsNiBAQAogCQkJCTA3Mjc3RTRDMTdEMDE4
Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3Mjc3
RTRFMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkRCRDQ4MEMxNTlCQzY4NzAwOTNFQjRGIC8qIEpTTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMDcwNTg1MTIx
N0ZBNzEwNzAwNUYyQkNCIC8qIEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJMDcwNTg1MTcxN0ZCNDBFOTAwNUYyQkNCIC8qIEpTTWVkaWFTdHJlYW1DYXBh
YmlsaXRpZXNDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcyNzdFNTAxN0QwMThDQzAw
MTU1MzREIC8qIEpTTWVkaWFTdHJlYW1FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzI3
N0U1MjE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbVRyYWNrLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTA3Mjc3RTU0MTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtVHJhY2tF
dmVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwNTAwLDcgKzMwNDMzLDYgQEAKIAkJCQkwNzhF
MDk0QjE3RDE3MDk2MDA0MjBBQTEgLyogTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzgzMjI4NDE4MDEzRUQ4MDA5OTlFMEMgLyogTWVkaWFT
dHJlYW1BdWRpb1NvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDY3MUE3NzE1OUJCMDcw
MDAxOTc1NTkgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwIGluIFNvdXJjZXMgKi8s
Ci0JCQkJMDcwNTg1MTUxN0ZCMEVFQTAwNUYyQkNCIC8qIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3OEUwOTAwMTdEMTRDRUUwMDQyMEFBMSAvKiBNZWRp
YVN0cmVhbUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3MTE1ODkxMTdERjZGNjYwMEVE
RkUyQiAvKiBNZWRpYVN0cmVhbVByaXZhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc4RTA5
MDExN0QxNENFRTAwNDIwQUExIC8qIE1lZGlhU3RyZWFtUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMg
Ki8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtVHJhY2tD
dXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVk
aWFTdHJlYW1UcmFja0N1c3RvbS5jcHAJKHJldmlzaW9uIDE5Mjk1NCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTdHJlYW1UcmFja0N1c3RvbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVk
ZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFTb3VyY2VTZXR0aW5ncy5oIgorI2lu
Y2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2suaCIKICNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0Lmg+
CiAjaW5jbHVkZSA8cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgogCkBAIC03NSw2ICs3Niw4
NiBAQCBKU0M6OkpTVmFsdWUgSlNNZWRpYVN0cmVhbVRyYWNrOjpnZXRTZXR0CiAgICAgcmV0dXJu
IG9iamVjdDsKIH0KIAorc3RhdGljIEpTVmFsdWUgY2FwYWJpbGl0eVZhbHVlKGNvbnN0IENhcGFi
aWxpdHlWYWx1ZU9yUmFuZ2UmIHZhbHVlLCBFeGVjU3RhdGUmIHN0YXRlKQoreworICAgIGlmICh2
YWx1ZS50eXBlKCkgPT0gQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6RG91YmxlUmFuZ2UgfHwgdmFs
dWUudHlwZSgpID09IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OlVMb25nUmFuZ2UpIHsKKyAgICAg
ICAgSlNPYmplY3QqIG9iamVjdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KCZzdGF0ZSk7CisKKyAg
ICAgICAgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6VmFsdWVVbmlvbiBtaW4gPSB2YWx1ZS5yYW5n
ZU1pbigpOworICAgICAgICBDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpWYWx1ZVVuaW9uIG1heCA9
IHZhbHVlLnJhbmdlTWF4KCk7CisgICAgICAgIGlmICh2YWx1ZS50eXBlKCkgPT0gQ2FwYWJpbGl0
eVZhbHVlT3JSYW5nZTo6RG91YmxlUmFuZ2UpIHsKKyAgICAgICAgICAgIG9iamVjdC0+cHV0RGly
ZWN0KHN0YXRlLnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAibWluIiksIGpz
TnVtYmVyKG1pbi5hc0RvdWJsZSkpOworICAgICAgICAgICAgb2JqZWN0LT5wdXREaXJlY3Qoc3Rh
dGUudm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJtYXgiKSwganNOdW1iZXIo
bWF4LmFzRG91YmxlKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBvYmplY3QtPnB1
dERpcmVjdChzdGF0ZS52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgIm1pbiIp
LCBqc051bWJlcihtaW4uYXNVTG9uZykpOworICAgICAgICAgICAgb2JqZWN0LT5wdXREaXJlY3Qo
c3RhdGUudm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJtYXgiKSwganNOdW1i
ZXIobWF4LmFzVUxvbmcpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBvYmplY3Q7Cisg
ICAgfQorCisgICAgaWYgKHZhbHVlLnR5cGUoKSA9PSBDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpE
b3VibGUpCisgICAgICAgIHJldHVybiBqc051bWJlcih2YWx1ZS52YWx1ZSgpLmFzRG91YmxlKTsK
KworICAgIHJldHVybiBqc051bWJlcih2YWx1ZS52YWx1ZSgpLmFzVUxvbmcpOworfQorCitKU0M6
OkpTVmFsdWUgSlNNZWRpYVN0cmVhbVRyYWNrOjpnZXRDYXBhYmlsaXRpZXMoRXhlY1N0YXRlJiBz
dGF0ZSkKK3sKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLnRoaXNWYWx1ZSgpOworICAg
IEpTTWVkaWFTdHJlYW1UcmFjayogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNNZWRpYVN0
cmVhbVRyYWNrKj4odGhpc1ZhbHVlKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93VGhpc1R5cGVFcnJvcihzdGF0ZSwg
Ik1lZGlhU3RyZWFtVHJhY2siLCAiZ2V0U2V0dGluZ3MiKSk7CisKKyAgICBKU09iamVjdCogb2Jq
ZWN0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoJnN0YXRlKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOworICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJp
bGl0aWVzPiBjYXBhYmlsaXRpZXMgPSBXVEY6OmdldFB0cihpbXBsLmdldENhcGFiaWxpdGllcygp
KTsKKworICAgIGlmIChjYXBhYmlsaXRpZXMtPnN1cHBvcnRzV2lkdGgoKSkKKyAgICAgICAgb2Jq
ZWN0LT5wdXREaXJlY3Qoc3RhdGUudm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUs
ICJ3aWR0aCIpLCBjYXBhYmlsaXR5VmFsdWUoY2FwYWJpbGl0aWVzLT53aWR0aCgpLCBzdGF0ZSks
IERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgaWYgKGNhcGFiaWxpdGllcy0+c3VwcG9ydHNI
ZWlnaHQoKSkKKyAgICAgICAgb2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUudm0oKSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmc3RhdGUsICJoZWlnaHQiKSwgY2FwYWJpbGl0eVZhbHVlKGNhcGFiaWxp
dGllcy0+aGVpZ2h0KCksIHN0YXRlKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICBpZiAo
Y2FwYWJpbGl0aWVzLT5zdXBwb3J0c0FzcGVjdFJhdGlvKCkpCisgICAgICAgIG9iamVjdC0+cHV0
RGlyZWN0KHN0YXRlLnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiYXNwZWN0
UmF0aW8iKSwgY2FwYWJpbGl0eVZhbHVlKGNhcGFiaWxpdGllcy0+YXNwZWN0UmF0aW8oKSwgc3Rh
dGUpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIGlmIChjYXBhYmlsaXRpZXMtPnN1cHBv
cnRzRnJhbWVSYXRlKCkpCisgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLnZtKCksIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiZnJhbWVSYXRlIiksIGNhcGFiaWxpdHlWYWx1
ZShjYXBhYmlsaXRpZXMtPmZyYW1lUmF0ZSgpLCBzdGF0ZSksIERvbnREZWxldGUgfCBSZWFkT25s
eSk7CisgICAgaWYgKGNhcGFiaWxpdGllcy0+c3VwcG9ydHNGYWNpbmdNb2RlKCkpIHsKKyAgICAg
ICAgY29uc3QgVmVjdG9yPFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdN
b2RlPiYgbW9kZXMgPSBjYXBhYmlsaXRpZXMtPmZhY2luZ01vZGUoKTsKKyAgICAgICAgVmVjdG9y
PFN0cmluZz4gZmFjaW5nTW9kZXM7CisgICAgICAgIGlmIChtb2Rlcy5zaXplKCkpIHsKKworICAg
ICAgICAgICAgZmFjaW5nTW9kZXMucmVzZXJ2ZUNhcGFjaXR5KG1vZGVzLnNpemUoKSk7CisKKyAg
ICAgICAgICAgIGZvciAoYXV0byYgbW9kZSA6IG1vZGVzKQorICAgICAgICAgICAgICAgIGZhY2lu
Z01vZGVzLmFwcGVuZChSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OmZhY2luZ01vZGUobW9k
ZSkpOworICAgICAgICB9CisKKyAgICAgICAgb2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUudm0oKSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJmYWNpbmdNb2RlIiksIGpzQXJyYXkoJnN0
YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgZmFjaW5nTW9kZXMpLCBEb250RGVsZXRl
IHwgUmVhZE9ubHkpOworICAgIH0KKyAgICBpZiAoY2FwYWJpbGl0aWVzLT5zdXBwb3J0c1ZvbHVt
ZSgpKQorICAgICAgICBvYmplY3QtPnB1dERpcmVjdChzdGF0ZS52bSgpLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZzdGF0ZSwgInZvbHVtZSIpLCBjYXBhYmlsaXR5VmFsdWUoY2FwYWJpbGl0aWVz
LT52b2x1bWUoKSwgc3RhdGUpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIGlmIChjYXBh
YmlsaXRpZXMtPnN1cHBvcnRzU2FtcGxlUmF0ZSgpKQorICAgICAgICBvYmplY3QtPnB1dERpcmVj
dChzdGF0ZS52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgInNhbXBsZVJhdGUi
KSwgY2FwYWJpbGl0eVZhbHVlKGNhcGFiaWxpdGllcy0+c2FtcGxlUmF0ZSgpLCBzdGF0ZSksIERv
bnREZWxldGUgfCBSZWFkT25seSk7CisgICAgaWYgKGNhcGFiaWxpdGllcy0+c3VwcG9ydHNTYW1w
bGVTaXplKCkpCisgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLnZtKCksIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAic2FtcGxlU2l6ZSIpLCBjYXBhYmlsaXR5VmFsdWUoY2Fw
YWJpbGl0aWVzLT5zYW1wbGVTaXplKCksIHN0YXRlKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsK
KyAgICBpZiAoY2FwYWJpbGl0aWVzLT5zdXBwb3J0c0VjaG9DYW5jZWxsYXRpb24oKSkgeworICAg
ICAgICBWZWN0b3I8U3RyaW5nPiBjYW5jZWxsYXRpb247CisgICAgICAgIGNhbmNlbGxhdGlvbi5y
ZXNlcnZlQ2FwYWNpdHkoMik7CisKKyAgICAgICAgY2FuY2VsbGF0aW9uLmFwcGVuZCgidHJ1ZSIp
OworICAgICAgICBjYW5jZWxsYXRpb24uYXBwZW5kKGNhcGFiaWxpdGllcy0+ZWNob0NhbmNlbGxh
dGlvbigpID09IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OkVjaG9DYW5jZWxsYXRp
b246OlJlYWRXcml0ZSA/ICJ0cnVlIiA6ICJmYWxzZSIpOworCisgICAgICAgIG9iamVjdC0+cHV0
RGlyZWN0KHN0YXRlLnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiZWNob0Nh
bmNlbGxhdGlvbiIpLCBqc0FycmF5KCZzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCks
IGNhbmNlbGxhdGlvbiksIERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgfQorICAgIGlmIChj
YXBhYmlsaXRpZXMtPnN1cHBvcnRzRGV2aWNlSWQoKSkKKyAgICAgICAgb2JqZWN0LT5wdXREaXJl
Y3Qoc3RhdGUudm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJkZXZpY2VJZCIp
LCBqc1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUsIGNhcGFiaWxpdGllcy0+ZGV2aWNlSWQoKSksIERv
bnREZWxldGUgfCBSZWFkT25seSk7CisgICAgaWYgKGNhcGFiaWxpdGllcy0+c3VwcG9ydHNHcm91
cElkKCkpCisgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLnZtKCksIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJnN0YXRlLCAiZ3JvdXBJZCIpLCBqc1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUs
IGNhcGFiaWxpdGllcy0+Z3JvdXBJZCgpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICAK
KworICAgIHJldHVybiBvYmplY3Q7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1l
ZGlhU291cmNlQ2FwYWJpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5oCShyZXZp
c2lvbiAxOTI5NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDEwMSAr
MzUsMTU0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgUmVhbHRpbWVNZWRpYVNv
dXJjZUNhcGFiaWxpdHlSYW5nZSB7CitjbGFzcyBDYXBhYmlsaXR5VmFsdWVPclJhbmdlIHsKIHB1
YmxpYzoKLSAgICAKLSAgICBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0eVJhbmdlKGZsb2F0
IG1pbiwgZmxvYXQgbWF4LCBib29sIHN1cHBvcnRlZCA9IHRydWUpCi0gICAgICAgIDogbV90eXBl
KEZsb2F0KQorCisgICAgZW51bSBUeXBlIHsKKyAgICAgICAgVW5kZWZpbmVkLAorICAgICAgICBE
b3VibGUsCisgICAgICAgIFVMb25nLAorICAgICAgICBEb3VibGVSYW5nZSwKKyAgICAgICAgVUxv
bmdSYW5nZSwKKyAgICB9OworICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsg
fQorCisgICAgdW5pb24gVmFsdWVVbmlvbiB7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgYXNVTG9u
ZzsKKyAgICAgICAgZG91YmxlIGFzRG91YmxlOworICAgIH07CisKKyAgICBDYXBhYmlsaXR5VmFs
dWVPclJhbmdlKCkKKyAgICAgICAgOiBtX3R5cGUoVW5kZWZpbmVkKQogICAgIHsKLSAgICAgICAg
bV9taW4uYXNGbG9hdCA9IG1pbjsKLSAgICAgICAgbV9tYXguYXNGbG9hdCA9IG1heDsKLSAgICAg
ICAgbV9zdXBwb3J0ZWQgPSBzdXBwb3J0ZWQ7CiAgICAgfQotICAgIAotICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2VDYXBhYmlsaXR5UmFuZ2UodW5zaWduZWQgbG9uZyBtaW4sIHVuc2lnbmVkIGxvbmcg
bWF4LCBib29sIHN1cHBvcnRlZCA9IHRydWUpCisKKyAgICBDYXBhYmlsaXR5VmFsdWVPclJhbmdl
KGRvdWJsZSB2YWx1ZSkKKyAgICAgICAgOiBtX3R5cGUoRG91YmxlKQorICAgIHsKKyAgICAgICAg
bV9taW5PclZhbHVlLmFzRG91YmxlID0gdmFsdWU7CisgICAgfQorCisgICAgQ2FwYWJpbGl0eVZh
bHVlT3JSYW5nZSh1bnNpZ25lZCBsb25nIHZhbHVlKQogICAgICAgICA6IG1fdHlwZShVTG9uZykK
ICAgICB7Ci0gICAgICAgIG1fbWluLmFzVUxvbmcgPSBtaW47Ci0gICAgICAgIG1fbWF4LmFzVUxv
bmcgPSBtYXg7Ci0gICAgICAgIG1fc3VwcG9ydGVkID0gc3VwcG9ydGVkOworICAgICAgICBtX21p
bk9yVmFsdWUuYXNVTG9uZyA9IHZhbHVlOwogICAgIH0KLSAgICAKLSAgICBSZWFsdGltZU1lZGlh
U291cmNlQ2FwYWJpbGl0eVJhbmdlKCkKKworICAgIENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoZG91
YmxlIG1pbiwgZG91YmxlIG1heCkKKyAgICAgICAgOiBtX3R5cGUoRG91YmxlUmFuZ2UpCiAgICAg
ewotICAgICAgICBtX3R5cGUgPSBVbmRlZmluZWQ7Ci0gICAgICAgIG1fbWluLmFzVUxvbmcgPSAw
OwotICAgICAgICBtX21heC5hc1VMb25nID0gMDsKLSAgICAgICAgbV9zdXBwb3J0ZWQgPSBmYWxz
ZTsKKyAgICAgICAgbV9taW5PclZhbHVlLmFzRG91YmxlID0gbWluOworICAgICAgICBtX21heC5h
c0RvdWJsZSA9IG1heDsKICAgICB9CiAgICAgCi0gICAgZW51bSBUeXBlIHsgVW5kZWZpbmVkLCBG
bG9hdCwgVUxvbmcgfTsKLSAgICAKLSAgICB1bmlvbiBWYWx1ZVVuaW9uIHsKLSAgICAgICAgdW5z
aWduZWQgbG9uZyBhc1VMb25nOwotICAgICAgICBmbG9hdCBhc0Zsb2F0OwotICAgIH07Ci0gICAg
Ci0gICAgY29uc3QgVmFsdWVVbmlvbiYgbWluKCkgY29uc3QgeyByZXR1cm4gbV9taW47IH0KLSAg
ICBjb25zdCBWYWx1ZVVuaW9uJiBtYXgoKSBjb25zdCB7IHJldHVybiBtX21heDsgfQotICAgIFR5
cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQotICAgIGJvb2wgc3VwcG9ydGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWQ7IH0KLSAgICAKKyAgICBDYXBhYmlsaXR5VmFsdWVP
clJhbmdlKHVuc2lnbmVkIGxvbmcgbWluLCB1bnNpZ25lZCBsb25nIG1heCkKKyAgICAgICAgOiBt
X3R5cGUoVUxvbmdSYW5nZSkKKyAgICB7CisgICAgICAgIG1fbWluT3JWYWx1ZS5hc1VMb25nID0g
bWluOworICAgICAgICBtX21heC5hc1VMb25nID0gbWF4OworICAgIH0KKworICAgIGNvbnN0IFZh
bHVlVW5pb24mIHJhbmdlTWluKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUg
PT0gRG91YmxlUmFuZ2UgfHwgbV90eXBlID09IFVMb25nUmFuZ2UpOworICAgICAgICByZXR1cm4g
bV9taW5PclZhbHVlOworICAgIH0KKworICAgIGNvbnN0IFZhbHVlVW5pb24mIHJhbmdlTWF4KCkg
Y29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gRG91YmxlUmFuZ2UgfHwgbV90
eXBlID09IFVMb25nUmFuZ2UpOworICAgICAgICByZXR1cm4gbV9tYXg7CisgICAgfQorCisgICAg
Y29uc3QgVmFsdWVVbmlvbiYgdmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1f
dHlwZSA9PSBEb3VibGUgfHwgbV90eXBlID09IFVMb25nKTsKKyAgICAgICAgcmV0dXJuIG1fbWlu
T3JWYWx1ZTsKKyAgICB9CisKIHByaXZhdGU6Ci0gICAgVmFsdWVVbmlvbiBtX21pbjsKKyAgICBW
YWx1ZVVuaW9uIG1fbWluT3JWYWx1ZTsKICAgICBWYWx1ZVVuaW9uIG1fbWF4OwogICAgIFR5cGUg
bV90eXBlOwotICAgIGJvb2wgbV9zdXBwb3J0ZWQ7CiB9OwogCiBjbGFzcyBSZWFsdGltZU1lZGlh
U291cmNlQ2FwYWJpbGl0aWVzIDogcHVibGljIFJlZkNvdW50ZWQ8UmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllcz4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlYWx0aW1l
TWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IGNyZWF0ZSgpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8
UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gY3JlYXRlKGNvbnN0IFJlYWx0aW1lTWVk
aWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMpCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmls
aXRpZXMoKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllcyhzdXBwb3J0ZWRDb25zdHJhaW50cykpOwogICAgIH0KIAogICAgIH5SZWFs
dGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzKCkgeyB9CiAKLSAgICBjb25zdCBWZWN0b3I8QXRv
bWljU3RyaW5nPiYgc291cmNlSWQoKSB7IHJldHVybiBtX3NvdXJjZUlkOyB9Ci0gICAgdm9pZCBz
ZXRTb3VyY2VJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSAgeyBtX3NvdXJjZUlkLnJlc2VydmVD
YXBhY2l0eSgxKTsgbV9zb3VyY2VJZC5pbnNlcnQoMCwgaWQpOyB9CisgICAgYm9vbCBzdXBwb3J0
c1dpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zdXBwb3J0c1dp
ZHRoKCk7IH0KKyAgICBjb25zdCBDYXBhYmlsaXR5VmFsdWVPclJhbmdlJiB3aWR0aCgpIHsgcmV0
dXJuIG1fd2lkdGg7IH0KKyAgICB2b2lkIHNldFdpZHRoKGNvbnN0IENhcGFiaWxpdHlWYWx1ZU9y
UmFuZ2UmIHdpZHRoKSB7IG1fd2lkdGggPSB3aWR0aDsgfQorCisgICAgYm9vbCBzdXBwb3J0c0hl
aWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc3VwcG9ydHNIZWln
aHQoKTsgfQorICAgIGNvbnN0IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UmIGhlaWdodCgpIHsgcmV0
dXJuIG1faGVpZ2h0OyB9CisgICAgdm9pZCBzZXRIZWlnaHQoY29uc3QgQ2FwYWJpbGl0eVZhbHVl
T3JSYW5nZSYgaGVpZ2h0KSB7IG1faGVpZ2h0ID0gaGVpZ2h0OyB9CisKKyAgICBib29sIHN1cHBv
cnRzRnJhbWVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zdXBw
b3J0c0ZyYW1lUmF0ZSgpOyB9CisgICAgY29uc3QgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSYgZnJh
bWVSYXRlKCkgeyByZXR1cm4gbV9mcmFtZVJhdGU7IH0KKyAgICB2b2lkIHNldEZyYW1lUmF0ZShj
b25zdCBDYXBhYmlsaXR5VmFsdWVPclJhbmdlJiBmcmFtZVJhdGUpIHsgbV9mcmFtZVJhdGUgPSBm
cmFtZVJhdGU7IH0KIAotICAgIGNvbnN0IFZlY3RvcjxSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3M6OlZpZGVvRmFjaW5nTW9kZT4mIGZhY2luZ01vZGVzKCkgeyByZXR1cm4gbV9mYWNpbmdNb2Rl
OyB9CisgICAgYm9vbCBzdXBwb3J0c0ZhY2luZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX3N1cHBv
cnRlZENvbnN0cmFpbnRzLnN1cHBvcnRzRmFjaW5nTW9kZSgpOyB9CisgICAgY29uc3QgVmVjdG9y
PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlPiYgZmFjaW5nTW9k
ZSgpIHsgcmV0dXJuIG1fZmFjaW5nTW9kZTsgfQogICAgIHZvaWQgYWRkRmFjaW5nTW9kZShSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSBtb2RlKSB7IG1fZmFjaW5n
TW9kZS5hcHBlbmQobW9kZSk7IH0KIAotICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBh
YmlsaXR5UmFuZ2UmIHdpZHRoKCkgeyByZXR1cm4gbV93aWR0aDsgfQotICAgIHZvaWQgc2V0V2lk
dGhSYW5nZShjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0eVJhbmdlJiB3aWR0aCkg
eyBtX3dpZHRoID0gd2lkdGg7IH0KLQotICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBh
YmlsaXR5UmFuZ2UmIGhlaWdodCgpIHsgcmV0dXJuIG1faGVpZ2h0OyB9Ci0gICAgdm9pZCBzZXRI
ZWlnaHRSYW5nZShjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0eVJhbmdlJiBoZWln
aHQpIHsgbV9oZWlnaHQgPSBoZWlnaHQ7IH0KLQotICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDYXBhYmlsaXR5UmFuZ2UmIGZyYW1lUmF0ZSgpIHsgcmV0dXJuIG1fZnJhbWVSYXRlOyB9Ci0g
ICAgdm9pZCBzZXRGcmFtZVJhdGVSYW5nZShjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJp
bGl0eVJhbmdlJiBmcmFtZVJhdGUpIHsgbV9mcmFtZVJhdGUgPSBmcmFtZVJhdGU7IH0KLQotICAg
IGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXR5UmFuZ2UmIGFzcGVjdFJhdGlvKCkg
eyByZXR1cm4gbV9hc3BlY3RSYXRpbzsgfQotICAgIHZvaWQgc2V0QXNwZWN0UmF0aW9SYW5nZShj
b25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0eVJhbmdlJiBhc3BlY3RSYXRpbykgeyBt
X2FzcGVjdFJhdGlvID0gYXNwZWN0UmF0aW87IH0KLQotICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFT
b3VyY2VDYXBhYmlsaXR5UmFuZ2UmIHZvbHVtZSgpIHsgcmV0dXJuIG1fdm9sdW1lOyB9Ci0gICAg
dm9pZCBzZXRWb2x1bWVSYW5nZShjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0eVJh
bmdlJiB2b2x1bWUpIHsgbV92b2x1bWUgPSB2b2x1bWU7IH0KLQotICAgIGJvb2wgaGFzVmlkZW9T
b3VyY2UoKSB7IHJldHVybiBtX3ZpZGVvU291cmNlOyB9Ci0gICAgdm9pZCBzZXRIYXNWaWRlb1Nv
dXJjZShib29sIGlzVmlkZW8pIHsgbV92aWRlb1NvdXJjZSA9IGlzVmlkZW87IH0KLQorICAgIGJv
b2wgc3VwcG9ydHNBc3BlY3RSYXRpbygpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkQ29uc3Ry
YWludHMuc3VwcG9ydHNBc3BlY3RSYXRpbygpOyB9CisgICAgY29uc3QgQ2FwYWJpbGl0eVZhbHVl
T3JSYW5nZSYgYXNwZWN0UmF0aW8oKSB7IHJldHVybiBtX2FzcGVjdFJhdGlvOyB9CisgICAgdm9p
ZCBzZXRBc3BlY3RSYXRpbyhjb25zdCBDYXBhYmlsaXR5VmFsdWVPclJhbmdlJiBhc3BlY3RSYXRp
bykgeyBtX2FzcGVjdFJhdGlvID0gYXNwZWN0UmF0aW87IH0KKworICAgIGJvb2wgc3VwcG9ydHNW
b2x1bWUoKSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBvcnRzVm9s
dW1lKCk7IH0KKyAgICBjb25zdCBDYXBhYmlsaXR5VmFsdWVPclJhbmdlJiB2b2x1bWUoKSB7IHJl
dHVybiBtX3ZvbHVtZTsgfQorICAgIHZvaWQgc2V0Vm9sdW1lKGNvbnN0IENhcGFiaWxpdHlWYWx1
ZU9yUmFuZ2UmIHZvbHVtZSkgeyBtX3ZvbHVtZSA9IHZvbHVtZTsgfQorCisgICAgYm9vbCBzdXBw
b3J0c1NhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnN1
cHBvcnRzU2FtcGxlUmF0ZSgpOyB9CisgICAgY29uc3QgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSYg
c2FtcGxlUmF0ZSgpIHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQorICAgIHZvaWQgc2V0U2FtcGxl
UmF0ZShjb25zdCBDYXBhYmlsaXR5VmFsdWVPclJhbmdlJiBzYW1wbGVSYXRlKSB7IG1fc2FtcGxl
UmF0ZSA9IHNhbXBsZVJhdGU7IH0KKworICAgIGJvb2wgc3VwcG9ydHNTYW1wbGVTaXplKCkgY29u
c3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zdXBwb3J0c1NhbXBsZVNpemUoKTsg
fQorICAgIGNvbnN0IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UmIHNhbXBsZVNpemUoKSB7IHJldHVy
biBtX3NhbXBsZVNpemU7IH0KKyAgICB2b2lkIHNldFNhbXBsZVNpemUoY29uc3QgQ2FwYWJpbGl0
eVZhbHVlT3JSYW5nZSYgc2FtcGxlU2l6ZSkgeyBtX3NhbXBsZVNpemUgPSBzYW1wbGVTaXplOyB9
CisKKyAgICBlbnVtIGNsYXNzIEVjaG9DYW5jZWxsYXRpb24geworICAgICAgICBSZWFkT25seSA9
IDAsCisgICAgICAgIFJlYWRXcml0ZSA9IDEsCisgICAgfTsKKyAgICBib29sIHN1cHBvcnRzRWNo
b0NhbmNlbGxhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc3Vw
cG9ydHNFY2hvQ2FuY2VsbGF0aW9uKCk7IH0KKyAgICBFY2hvQ2FuY2VsbGF0aW9uIGVjaG9DYW5j
ZWxsYXRpb24oKSB7IHJldHVybiBtX2VjaG9DYW5jZWxsYXRpb247IH0KKyAgICB2b2lkIHNldEVj
aG9DYW5jZWxsYXRpb24oRWNob0NhbmNlbGxhdGlvbiBlY2hvQ2FuY2VsbGF0aW9uKSB7IG1fZWNo
b0NhbmNlbGxhdGlvbiA9IGVjaG9DYW5jZWxsYXRpb247IH0KKworICAgIGJvb2wgc3VwcG9ydHNE
ZXZpY2VJZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc3VwcG9ydHNE
ZXZpY2VJZCgpOyB9CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBkZXZpY2VJZCgpIHsgcmV0dXJu
IG1fZGV2aWNlSWQ7IH0KKyAgICB2b2lkIHNldERldmljZUlkKGNvbnN0IEF0b21pY1N0cmluZyYg
aWQpICB7IG1fZGV2aWNlSWQgPSBpZDsgfQorCisgICAgYm9vbCBzdXBwb3J0c0dyb3VwSWQoKSBj
b25zdCB7IHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBvcnRzR3JvdXBJZCgpOyB9
CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBncm91cElkKCkgeyByZXR1cm4gbV9ncm91cElkOyB9
CisgICAgdm9pZCBzZXRHcm91cElkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpICB7IG1fZ3JvdXBJ
ZCA9IGlkOyB9CisgICAgCiBwcml2YXRlOgotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmls
aXRpZXMoKQotICAgICAgICA6IG1fdmlkZW9Tb3VyY2UoZmFsc2UpCisgICAgUmVhbHRpbWVNZWRp
YVNvdXJjZUNhcGFiaWxpdGllcyhjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29u
c3RyYWludHMmIHN1cHBvcnRlZENvbnN0cmFpbnRzKQorICAgIDogbV9zdXBwb3J0ZWRDb25zdHJh
aW50cyhzdXBwb3J0ZWRDb25zdHJhaW50cykKICAgICB7CiAgICAgfQogCi0gICAgVmVjdG9yPEF0
b21pY1N0cmluZz4gbV9zb3VyY2VJZDsKKyAgICBDYXBhYmlsaXR5VmFsdWVPclJhbmdlIG1fd2lk
dGg7CisgICAgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSBtX2hlaWdodDsKKyAgICBDYXBhYmlsaXR5
VmFsdWVPclJhbmdlIG1fYXNwZWN0UmF0aW87CisgICAgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSBt
X2ZyYW1lUmF0ZTsKICAgICBWZWN0b3I8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRl
b0ZhY2luZ01vZGU+IG1fZmFjaW5nTW9kZTsKKyAgICBDYXBhYmlsaXR5VmFsdWVPclJhbmdlIG1f
dm9sdW1lOworICAgIENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UgbV9zYW1wbGVSYXRlOworICAgIENh
cGFiaWxpdHlWYWx1ZU9yUmFuZ2UgbV9zYW1wbGVTaXplOworICAgIEVjaG9DYW5jZWxsYXRpb24g
bV9lY2hvQ2FuY2VsbGF0aW9uOworICAgIEF0b21pY1N0cmluZyBtX2RldmljZUlkOworICAgIEF0
b21pY1N0cmluZyBtX2dyb3VwSWQ7CiAKLSAgICBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0
eVJhbmdlIG1fd2lkdGg7Ci0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdHlSYW5nZSBt
X2hlaWdodDsKLSAgICBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0eVJhbmdlIG1fZnJhbWVS
YXRlOwotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXR5UmFuZ2UgbV9hc3BlY3RSYXRp
bzsKLSAgICBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0eVJhbmdlIG1fdm9sdW1lOwotCi0g
ICAgYm9vbCBtX3ZpZGVvU291cmNlOworICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBw
b3J0ZWRDb25zdHJhaW50cyYgbV9zdXBwb3J0ZWRDb25zdHJhaW50czsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oCShy
ZXZpc2lvbiAxOTI5NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsOCArNjcs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGYWNpbmdNb2RlKFZpZGVvRmFjaW5nTW9kZSBmYWNp
bmdNb2RlKSB7IG1fZmFjaW5nTW9kZSA9IGZhY2luZ01vZGU7IH0KIAogICAgIGJvb2wgc3VwcG9y
dHNWb2x1bWUoKSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBvcnRz
Vm9sdW1lKCk7IH0KLSAgICB1bnNpZ25lZCBsb25nIHZvbHVtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dm9sdW1lOyB9Ci0gICAgdm9pZCBzZXRWb2x1bWUodW5zaWduZWQgbG9uZyB2b2x1bWUpIHsgbV92
b2x1bWUgPSB2b2x1bWU7IH0KKyAgICBkb3VibGUgdm9sdW1lKCkgY29uc3QgeyByZXR1cm4gbV92
b2x1bWU7IH0KKyAgICB2b2lkIHNldFZvbHVtZShkb3VibGUgdm9sdW1lKSB7IG1fdm9sdW1lID0g
dm9sdW1lOyB9CiAKICAgICBib29sIHN1cHBvcnRzU2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc3VwcG9ydHNTYW1wbGVSYXRlKCk7IH0KICAgICB1bnNp
Z25lZCBsb25nIHNhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0KQEAg
LTk4LDcgKzk4LDcgQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX2FzcGVjdFJhdGlvIHsgMCB9Owog
ICAgIGZsb2F0IG1fZnJhbWVSYXRlIHsgMCB9OwogICAgIFZpZGVvRmFjaW5nTW9kZSBtX2ZhY2lu
Z01vZGUgeyBVbmtub3duIH07Ci0gICAgdW5zaWduZWQgbG9uZyBtX3ZvbHVtZSB7IDAgfTsKKyAg
ICBkb3VibGUgbV92b2x1bWUgeyAwIH07CiAgICAgdW5zaWduZWQgbG9uZyBtX3NhbXBsZVJhdGUg
eyAwIH07CiAgICAgdW5zaWduZWQgbG9uZyBtX3NhbXBsZVNpemUgeyAwIH07CiAgICAgYm9vbCBt
X2VjaG9DYW5jZWxsYXRpb24geyAwIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQXVkaW9DYXB0dXJlU291cmNl
Lm1tCShyZXZpc2lvbiAxOTI5NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTc3LDkg
Kzc3LDEwIEBAIEFWQXVkaW9DYXB0dXJlU291cmNlOjp+QVZBdWRpb0NhcHR1cmVTb3UKIHsKIH0K
IAotdm9pZCBBVkF1ZGlvQ2FwdHVyZVNvdXJjZTo6aW5pdGlhbGl6ZUNhcGFiaWxpdGllcyhSZWFs
dGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJikKK3ZvaWQgQVZBdWRpb0NhcHR1cmVTb3VyY2U6
OmluaXRpYWxpemVDYXBhYmlsaXRpZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYg
Y2FwYWJpbGl0aWVzKQogewogICAgIC8vIEZJWE1FOiBmaW5pc2ggdGhpcyBpbXBsZW1lbnRhdGlv
biAtIGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEyMjQzMAorICAgIGNhcGFiaWxpdGllcy5zZXRWb2x1
bWUoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSgwLCAxLjApKTsKIH0KIAogdm9pZCBBVkF1ZGlvQ2Fw
dHVyZVNvdXJjZTo6aW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFT
b3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3Vy
Y2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1tCShyZXZpc2lvbiAxOTI5NTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KSAmJiBVU0UoQVZGT1VOREFUSU9OKQogCiAjaW1wb3J0ICJBdWRpb1NvdXJjZVByb3ZpZGVyLmgi
CisjaW1wb3J0ICJBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgi
CiAjaW1wb3J0ICJNZWRpYUNvbnN0cmFpbnRzLmgiCiAjaW1wb3J0ICJSZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZ3MuaCIKQEAgLTE4OCw4ICsxODksOSBAQCBSZWFsdGltZU1lZGlhU291cmNlU3Vw
cG9ydGVkQ29uc3RyYWludHMmCiBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGll
cz4gQVZNZWRpYUNhcHR1cmVTb3VyY2U6OmNhcGFiaWxpdGllcygpCiB7CiAgICAgaWYgKCFtX2Nh
cGFiaWxpdGllcykgewotICAgICAgICBtX2NhcGFiaWxpdGllcyA9IFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDYXBhYmlsaXRpZXM6OmNyZWF0ZSgpOwotICAgICAgICBtX2NhcGFiaWxpdGllcy0+c2V0U291
cmNlSWQoaWQoKSk7CisgICAgICAgIG1fY2FwYWJpbGl0aWVzID0gUmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllczo6Y3JlYXRlKEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigp
LnN1cHBvcnRlZENvbnN0cmFpbnRzKCkpOworICAgICAgICBtX2NhcGFiaWxpdGllcy0+c2V0RGV2
aWNlSWQoaWQoKSk7CisKICAgICAgICAgaW5pdGlhbGl6ZUNhcGFiaWxpdGllcygqbV9jYXBhYmls
aXRpZXMuZ2V0KCkpOwogICAgIH0KICAgICByZXR1cm4gbV9jYXBhYmlsaXRpZXM7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3Vy
Y2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCShyZXZpc2lvbiAxOTI5NTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0J
KHdvcmtpbmcgY29weSkKQEAgLTExMSw3ICsxMTEsNiBAQCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6
fkFWVmlkZW9DYXB0dXJlU291CiB2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjppbml0aWFsaXpl
Q2FwYWJpbGl0aWVzKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGll
cykKIHsKICAgICAvLyBGSVhNRTogZmluaXNoIHRoaXMgaW1wbGVtZW50YXRpb24KLSAgICBjYXBh
YmlsaXRpZXMuc2V0U291cmNlSWQoaWQoKSk7CiB9CiAKIHZvaWQgQVZWaWRlb0NhcHR1cmVTb3Vy
Y2U6OmluaXRpYWxpemVTdXBwb3J0ZWRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlU3Vw
cG9ydGVkQ29uc3RyYWludHMmIHN1cHBvcnRlZENvbnN0cmFpbnRzKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZP
YmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQkocmV2aXNpb24gMTkyOTU0KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNl
UHJvdmlkZXJBVkZPYmpDLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMCArMzQsNyBAQAogI2lt
cG9ydCAiQ0FSaW5nQnVmZmVyLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRp
YVRpbWVBVkZvdW5kYXRpb24uaCIKLSNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkFzc2V0VHJhY2su
aD4KLSNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkF1ZGlvTWl4Lmg+Ci0jaW1wb3J0IDxBVkZvdW5k
YXRpb24vQVZNZWRpYUZvcm1hdC5oPgotI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVySXRl
bS5oPgorI2ltcG9ydCA8QXVkaW9Ub29sYm94L0F1ZGlvVG9vbGJveC5oPgogI2ltcG9ydCA8b2Jq
Yy9ydW50aW1lLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogCkBAIC00NywxMyArNDQs
OCBAQAogCiAjaW1wb3J0ICJDb3JlTWVkaWFTb2Z0TGluay5oIgogCi1TT0ZUX0xJTktfRlJBTUVX
T1JLKEFWRm91bmRhdGlvbikKIFNPRlRfTElOS19GUkFNRVdPUksoQXVkaW9Ub29sYm94KQogCi1T
T0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlBsYXllckl0ZW0pCi1TT0ZUX0xJTktfQ0xB
U1MoQVZGb3VuZGF0aW9uLCBBVk11dGFibGVBdWRpb01peCkKLVNPRlRfTElOS19DTEFTUyhBVkZv
dW5kYXRpb24sIEFWTXV0YWJsZUF1ZGlvTWl4SW5wdXRQYXJhbWV0ZXJzKQotCiBTT0ZUX0xJTkso
QXVkaW9Ub29sYm94LCBBdWRpb0NvbnZlcnRlckNvbnZlcnRDb21wbGV4QnVmZmVyLCBPU1N0YXR1
cywgKEF1ZGlvQ29udmVydGVyUmVmIGluQXVkaW9Db252ZXJ0ZXIsIFVJbnQzMiBpbk51bWJlclBD
TUZyYW1lcywgY29uc3QgQXVkaW9CdWZmZXJMaXN0KiBpbklucHV0RGF0YSwgQXVkaW9CdWZmZXJM
aXN0KiBvdXRPdXRwdXREYXRhKSwgKGluQXVkaW9Db252ZXJ0ZXIsIGluTnVtYmVyUENNRnJhbWVz
LCBpbklucHV0RGF0YSwgb3V0T3V0cHV0RGF0YSkpCiBTT0ZUX0xJTksoQXVkaW9Ub29sYm94LCBB
dWRpb0NvbnZlcnRlck5ldywgT1NTdGF0dXMsIChjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3Jp
cHRpb24qIGluU291cmNlRm9ybWF0LCBjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24q
IGluRGVzdGluYXRpb25Gb3JtYXQsIEF1ZGlvQ29udmVydGVyUmVmKiBvdXRBdWRpb0NvbnZlcnRl
ciksIChpblNvdXJjZUZvcm1hdCwgaW5EZXN0aW5hdGlvbkZvcm1hdCwgb3V0QXVkaW9Db252ZXJ0
ZXIpKQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1
ZGlvU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcAkocmV2aXNpb24gMTkyOTU0KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU3LDEyICs1NywxNCBAQCB2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNl
Ojp1cGRhdGVTZXR0CiAKIHZvaWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmluaXRpYWxpemVD
YXBhYmlsaXRpZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVz
KQogewotICAgIGNhcGFiaWxpdGllcy5zZXRWb2x1bWVSYW5nZShSZWFsdGltZU1lZGlhU291cmNl
Q2FwYWJpbGl0eVJhbmdlKDBVTCwgMTAwVUwsIHRydWUpKTsKKyAgICBjYXBhYmlsaXRpZXMuc2V0
Vm9sdW1lKENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoMCwgMS4wKSk7CisgICAgY2FwYWJpbGl0aWVz
LnNldEVjaG9DYW5jZWxsYXRpb24oUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6RWNo
b0NhbmNlbGxhdGlvbjo6UmVhZFdyaXRlKTsKIH0KIAogdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1Nv
dXJjZTo6aW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2VT
dXBwb3J0ZWRDb25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMpCiB7CiAgICAgc3VwcG9y
dGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNWb2x1bWUodHJ1ZSk7CisgICAgc3VwcG9ydGVkQ29u
c3RyYWludHMuc2V0U3VwcG9ydHNFY2hvQ2FuY2VsbGF0aW9uKHRydWUpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZU1lZGlhU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlLmNwcAkocmV2aXNpb24gMTkyOTU0KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDggKzk1LDggQEAgUmVmUHRyPFJlYWx0aW1lTWVkaWFT
b3VyY2VDYXBhYmlsaXRpZXM+IAogICAgIGlmIChtX2NhcGFiaWxpdGllcykKICAgICAgICAgcmV0
dXJuIG1fY2FwYWJpbGl0aWVzOwogCi0gICAgbV9jYXBhYmlsaXRpZXMgPSBSZWFsdGltZU1lZGlh
U291cmNlQ2FwYWJpbGl0aWVzOjpjcmVhdGUoKTsKLSAgICBtX2NhcGFiaWxpdGllcy0+c2V0U291
cmNlSWQoaWQoKSk7CisgICAgbV9jYXBhYmlsaXRpZXMgPSBSZWFsdGltZU1lZGlhU291cmNlQ2Fw
YWJpbGl0aWVzOjpjcmVhdGUoc3VwcG9ydGVkQ29uc3RyYWludHMoKSk7CisgICAgbV9jYXBhYmls
aXRpZXMtPnNldERldmljZUlkKGlkKCkpOwogICAgIGluaXRpYWxpemVDYXBhYmlsaXRpZXMoKm1f
Y2FwYWJpbGl0aWVzLmdldCgpKTsKIAogICAgIHJldHVybiBtX2NhcGFiaWxpdGllczsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2UuY3BwCShyZXZpc2lvbiAxOTI5NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTAzLDEwICsxMDMsMTAgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6aW5pdGlhbGl6
ZQogewogICAgIGNhcGFiaWxpdGllcy5hZGRGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5nczo6VXNlcik7CiAgICAgY2FwYWJpbGl0aWVzLmFkZEZhY2luZ01vZGUoUmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzOjpFbnZpcm9ubWVudCk7Ci0gICAgY2FwYWJpbGl0aWVzLnNldFdp
ZHRoUmFuZ2UoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdHlSYW5nZSgzMjBVTCwgMTkyMFVM
LCB0cnVlKSk7Ci0gICAgY2FwYWJpbGl0aWVzLnNldEhlaWdodFJhbmdlKFJlYWx0aW1lTWVkaWFT
b3VyY2VDYXBhYmlsaXR5UmFuZ2UoMjQwVUwsIDEwODBVTCwgdHJ1ZSkpOwotICAgIGNhcGFiaWxp
dGllcy5zZXRGcmFtZVJhdGVSYW5nZShSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0eVJhbmdl
KDE1LjBmLCA2MC4wZiwgdHJ1ZSkpOwotICAgIGNhcGFiaWxpdGllcy5zZXRBc3BlY3RSYXRpb1Jh
bmdlKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXR5UmFuZ2UoNCAvIDMuMGYsIDE2IC8gOS4w
ZiwgdHJ1ZSkpOworICAgIGNhcGFiaWxpdGllcy5zZXRXaWR0aChDYXBhYmlsaXR5VmFsdWVPclJh
bmdlKDMyMFVMLCAxOTIwVUwpKTsKKyAgICBjYXBhYmlsaXRpZXMuc2V0SGVpZ2h0KENhcGFiaWxp
dHlWYWx1ZU9yUmFuZ2UoMjQwVUwsIDEwODBVTCkpOworICAgIGNhcGFiaWxpdGllcy5zZXRGcmFt
ZVJhdGUoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSgxNS4wLCA2MC4wKSk7CisgICAgY2FwYWJpbGl0
aWVzLnNldEFzcGVjdFJhdGlvKENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoNCAvIDMuMCwgMTYgLyA5
LjApKTsKIH0KIAogdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6aW5pdGlhbGl6ZVN1cHBv
cnRlZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYg
c3VwcG9ydGVkQ29uc3RyYWludHMpCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTI5ODApCisrKyBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxNS0x
Mi0wMyAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBb
TWVkaWFTdHJlYW1dIFVwZGF0ZSBNZWRpYVN0cmVhbVRyYWNrLmdldENhcGFiaWxpdGllcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNzI4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtVHJhY2stZ2V0Q2FwYWJpbGl0aWVzLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWdldENhcGFi
aWxpdGllcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2stZ2V0U2V0dGluZ3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFjay1nZXRTZXR0aW5ncy5odG1sOgorCiAyMDE1LTEyLTAyICBF
cmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBmbGFr
eSB0ZXN0IGFkZGVkIHdpdGggcjE5Mjk1NC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFjay1nZXRDYXBhYmlsaXRpZXMtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1n
ZXRDYXBhYmlsaXRpZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWdldENhcGFiaWxpdGllcy1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMiBAQAorVGVzdHMgTWVkaWFTdHJlYW1U
cmFjay5nZXRDYXBhYmlsaXRpZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCit2
aWRlbyB0cmFjayBjYXBhYmlsaXRpZXM6CisgIGNhcGFiaWxpdGllcy53aWR0aCA9IHsgbWluOiAz
MjAsIG1heDogMTkyMCB9CisgIGNhcGFiaWxpdGllcy5oZWlnaHQgPSB7IG1pbjogMjQwLCBtYXg6
IDEwODAgfQorICBjYXBhYmlsaXRpZXMuYXNwZWN0UmF0aW8gPSB7IG1pbjogMS4zMzMsIG1heDog
MS43NzggfQorICBjYXBhYmlsaXRpZXMuZnJhbWVSYXRlID0geyBtaW46IDE1LCBtYXg6IDYwIH0K
KyAgY2FwYWJpbGl0aWVzLmZhY2luZ01vZGUgPSBbIHVzZXIsIGVudmlyb25tZW50IF0KKyAgY2Fw
YWJpbGl0aWVzLmRldmljZUlkID0gPFVVSUQ+CisKK2F1ZGlvIHRyYWNrIGNhcGFiaWxpdGllczoK
KyAgY2FwYWJpbGl0aWVzLnZvbHVtZSA9IHsgbWluOiAwLCBtYXg6IDEgfQorICBjYXBhYmlsaXRp
ZXMuZWNob0NhbmNlbGxhdGlvbiA9IFsgdHJ1ZSwgdHJ1ZSBdCisgIGNhcGFiaWxpdGllcy5kZXZp
Y2VJZCA9IDxVVUlEPgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bVRyYWNrLWdldENhcGFiaWxpdGllcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1nZXRDYXBhYmlsaXRpZXMuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFj
ay1nZXRDYXBhYmlsaXRpZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg1IEBACis8
IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlw
dCBzcmM9Ii4vcmVzb3VyY2VzL2dldFVzZXJNZWRpYS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAg
ICAgICA8c2NyaXB0PgorICAgICAgICAgICAgdmFyIG1lZGlhU3RyZWFtOworCisgICAgICAgICAg
ICBmdW5jdGlvbiBsaW1pdFByZWNpc2lvbih2YWx1ZSwgcHJlY2lzaW9uKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICJzdHJpbmciKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gYCIke3ZhbHVlfWA7CisKKyAgICAgICAgICAgICAgICBpZiAo
dHlwZW9mIHZhbHVlID09PSAibnVtYmVyIiAmJiB2YWx1ZSAlIDEgIT0gMCkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHZhbHVlLnRvRml4ZWQocHJlY2lzaW9uKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdmFsdWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNh
cGFiaWxpdHlSYW5nZShuYW1lLCBvYmplY3QpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgaWYgKEFycmF5LmlzQXJyYXkob2JqZWN0KSkgeworICAgICAgICAgICAgICAgICAgICBpZiAo
IW9iamVjdC5sZW5ndGgpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIlsgXSI7CisK
KyAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gIlsiOworICAgICAgICAgICAgICAgICAg
ICBmb3IgKGkgPSAwOyBpIDwgb2JqZWN0Lmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgICAgICAg
ICAgICAgdmFsdWUgKz0gYCAke29iamVjdFtpXX0sYDsKKworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdmFsdWUuc2xpY2UoMCwgLTEpICsgIiBdIjsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICB2YXIgdmFsdWUgPSAieyI7CisgICAgICAgICAgICAgICAgZm9yICh2YXIg
cHJvcGVydHkgaW4gb2JqZWN0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSArPSBg
ICR7cHJvcGVydHl9OiAke2xpbWl0UHJlY2lzaW9uKG9iamVjdFtwcm9wZXJ0eV0sIDMpfSxgOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAo
dmFsdWUubGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnNsaWNlKDAs
IC0xKTsKKworCisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlICsgIiB9IjsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gbGlzdFRyYWNrUHJvcGVydGllcyh0cmFjaykK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZWJ1ZyhgJHt0cmFjay5raW5kfSB0cmFj
ayBjYXBhYmlsaXRpZXM6YCk7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzID0gdHJhY2su
Z2V0Q2FwYWJpbGl0aWVzKCk7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgcHJvcGVydHkgaW4g
Y2FwYWJpbGl0aWVzKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChjYXBhYmlsaXRpZXMuaGFz
T3duUHJvcGVydHkocHJvcGVydHkpIHx8IGNhcGFiaWxpdGllcy5fX3Byb3RvX18uaGFzT3duUHJv
cGVydHkocHJvcGVydHkpKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5ID09
ICJkZXZpY2VJZCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSAiJmx0O1VV
SUQ+IjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBjYXBhYmlsaXRp
ZXNbcHJvcGVydHldID09PSAib2JqZWN0IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
YWx1ZSA9IGNhcGFiaWxpdHlSYW5nZShwcm9wZXJ0eSwgY2FwYWJpbGl0aWVzW3Byb3BlcnR5XSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFsdWUgPSBsaW1pdFByZWNpc2lvbihjYXBhYmlsaXRpZXNbcHJvcGVydHldLCAyKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKGAgIGNhcGFiaWxpdGllcy4ke3Byb3BlcnR5fSA9
ICR7dmFsdWV9YCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRlYnVnKCIi
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZ290U3RyZWFtKHN0cmVh
bSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtZWRpYVN0cmVhbSA9IHN0cmVhbTsK
KyAgICAgICAgICAgICAgICBsaXN0VHJhY2tQcm9wZXJ0aWVzKG1lZGlhU3RyZWFtLmdldFZpZGVv
VHJhY2tzKClbMF0pOworICAgICAgICAgICAgICAgIGxpc3RUcmFja1Byb3BlcnRpZXMobWVkaWFT
dHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXSk7CisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0
KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0YXJ0KCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbigiVGVzdHMgTWVkaWFTdHJlYW1U
cmFjay5nZXRDYXBhYmlsaXRpZXMuIik7CisgICAgICAgICAgICAgICAgZ2V0VXNlck1lZGlhKCJh
bGxvdyIsIHthdWRpbzp0cnVlLCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgICAgICAg
ICAgd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgICAgICAgIDwvc2NyaXB0Pgor
CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ic3RhcnQoKSI+CisgICAgICAgIDxwIGlk
PSJkZXNjcmlwdGlvbiI+PC9wPgorICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAg
ICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFjay1nZXRTZXR0aW5ncy1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWdldFNl
dHRpbmdzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTkyOTU0KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWdldFNldHRpbmdzLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMywxOCArMywzMCBAQCBUZXN0cyBNZWRpYVN0cmVhbVRyYWNrLmdl
dFNldHRpbmdzLgogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLXZpZGVvIHRyYWNrOgor
dmlkZW8gdHJhY2sgc2V0dGluZ3M6CiAgIHNldHRpbmdzLndpZHRoID0gNjQwCiAgIHNldHRpbmdz
LmhlaWdodCA9IDQ4MAotICBzZXR0aW5ncy5hc3BlY3RSYXRpbyA9IDEuMzMKKyAgc2V0dGluZ3Mu
YXNwZWN0UmF0aW8gPSAxLjMzMwogICBzZXR0aW5ncy5mcmFtZVJhdGUgPSAzMAogICBzZXR0aW5n
cy5mYWNpbmdNb2RlID0gdXNlcgogICBzZXR0aW5ncy5kZXZpY2VJZCA9IDxVVUlEPgogCi1hdWRp
byB0cmFjazoKK2F1ZGlvIHRyYWNrIHNldHRpbmdzOgogICBzZXR0aW5ncy52b2x1bWUgPSA1MAor
ICBzZXR0aW5ncy5lY2hvQ2FuY2VsbGF0aW9uID0gZmFsc2UKICAgc2V0dGluZ3MuZGV2aWNlSWQg
PSA8VVVJRD4KIAorQWNjb3JkaW5nIHRvIHRoZSBzcGVjOiAiW2V2ZXJ5IHNldHRpbmddIE1VU1Qg
YmUgYSBtZW1iZXIgb2YgdGhlIHNldCBkZWZpbmVkIGZvciB0aGF0IHByb3BlcnR5IGJ5IGdldENh
cGFiaWxpdGllcygpIgorCitQQVNTICJ3aWR0aCIgaW4gdHJhY2suZ2V0Q2FwYWJpbGl0aWVzKCkg
aXMgdHJ1ZQorUEFTUyAiaGVpZ2h0IiBpbiB0cmFjay5nZXRDYXBhYmlsaXRpZXMoKSBpcyB0cnVl
CitQQVNTICJhc3BlY3RSYXRpbyIgaW4gdHJhY2suZ2V0Q2FwYWJpbGl0aWVzKCkgaXMgdHJ1ZQor
UEFTUyAiZnJhbWVSYXRlIiBpbiB0cmFjay5nZXRDYXBhYmlsaXRpZXMoKSBpcyB0cnVlCitQQVNT
ICJmYWNpbmdNb2RlIiBpbiB0cmFjay5nZXRDYXBhYmlsaXRpZXMoKSBpcyB0cnVlCitQQVNTICJk
ZXZpY2VJZCIgaW4gdHJhY2suZ2V0Q2FwYWJpbGl0aWVzKCkgaXMgdHJ1ZQorUEFTUyAidm9sdW1l
IiBpbiB0cmFjay5nZXRDYXBhYmlsaXRpZXMoKSBpcyB0cnVlCitQQVNTICJlY2hvQ2FuY2VsbGF0
aW9uIiBpbiB0cmFjay5nZXRDYXBhYmlsaXRpZXMoKSBpcyB0cnVlCitQQVNTICJkZXZpY2VJZCIg
aW4gdHJhY2suZ2V0Q2FwYWJpbGl0aWVzKCkgaXMgdHJ1ZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtVHJhY2stZ2V0U2V0dGluZ3MuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2stZ2V0U2V0dGluZ3Mu
aHRtbAkocmV2aXNpb24gMTkyOTgwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrLWdldFNldHRpbmdzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsNiAr
NSw3IEBACiAgICAgICAgIDxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy9nZXRVc2VyTWVkaWEtaGVs
cGVyLmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdD4KICAgICAgICAgICAgIHZhciBtZWRp
YVN0cmVhbTsKKyAgICAgICAgICAgIHZhciB0cmFjazsKIAogICAgICAgICAgICAgZnVuY3Rpb24g
bGltaXRQcmVjaXNpb24odmFsdWUsIHByZWNpc2lvbikKICAgICAgICAgICAgIHsKQEAgLTEzLDI2
ICsxNCw0NiBAQAogICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIAotICAgICAgICAgICAgZnVuY3Rpb24gbGlzdFRyYWNrUHJvcGVydGllcyh0
cmFjaykKKyAgICAgICAgICAgIGZ1bmN0aW9uIGxpc3RUcmFja1NldHRpbmdzKHRyYWNrKQogICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIGRlYnVnKGAke3RyYWNrLmtpbmR9IHRyYWNrOmAp
OworICAgICAgICAgICAgICAgIGRlYnVnKGAke3RyYWNrLmtpbmR9IHRyYWNrIHNldHRpbmdzOmAp
OwogICAgICAgICAgICAgICAgIHNldHRpbmdzID0gdHJhY2suZ2V0U2V0dGluZ3MoKTsKICAgICAg
ICAgICAgICAgICBmb3IgKHZhciBwcm9wZXJ0eSBpbiBzZXR0aW5ncykgewotICAgICAgICAgICAg
ICAgICAgICBpZiAoc2V0dGluZ3MuaGFzT3duUHJvcGVydHkocHJvcGVydHkpIHx8IHNldHRpbmdz
Ll9fcHJvdG9fXy5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSkpCisgICAgICAgICAgICAgICAgICAg
IGlmIChzZXR0aW5ncy5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSkgfHwgc2V0dGluZ3MuX19wcm90
b19fLmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHByb3BlcnR5ID09ICJkZXZpY2VJZCIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFsdWUgPSAiJmx0O1VVSUQ+IjsKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGxpbWl0UHJlY2lzaW9uKHNldHRpbmdzW3By
b3BlcnR5XSwgMik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBsaW1pdFBy
ZWNpc2lvbihzZXR0aW5nc1twcm9wZXJ0eV0sIDMpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ZGVidWcoYCAgc2V0dGluZ3MuJHtwcm9wZXJ0eX0gPSAke3ZhbHVlfWApOworICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgZGVidWcoIiIp
OwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBmdW5jdGlvbiBjaGVja1RyYWNrU2V0dGlu
Z3ModCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0cmFjayA9IHQ7CisKKyAgICAg
ICAgICAgICAgICBjYXBhYmlsaXRpZXMgPSB0cmFjay5nZXRDYXBhYmlsaXRpZXMoKTsKKyAgICAg
ICAgICAgICAgICBzZXR0aW5ncyA9IHRyYWNrLmdldFNldHRpbmdzKCk7CisgICAgICAgICAgICAg
ICAgZm9yICh2YXIgcHJvcGVydHkgaW4gc2V0dGluZ3MpIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKHNldHRpbmdzLmhhc093blByb3BlcnR5KHByb3BlcnR5KSB8fCBzZXR0aW5ncy5fX3Byb3Rv
X18uaGFzT3duUHJvcGVydHkocHJvcGVydHkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBz
aG91bGRCZVRydWUoYCIke3Byb3BlcnR5fSIgaW4gdHJhY2suZ2V0Q2FwYWJpbGl0aWVzKClgKTsK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KwogICAgICAgICAgICAgZnVuY3Rpb24gZ290U3RyZWFtKHN0cmVhbSkKICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICBtZWRpYVN0cmVhbSA9IHN0cmVhbTsKLSAgICAgICAgICAgICAgICBs
aXN0VHJhY2tQcm9wZXJ0aWVzKG1lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0pOwotICAg
ICAgICAgICAgICAgIGxpc3RUcmFja1Byb3BlcnRpZXMobWVkaWFTdHJlYW0uZ2V0QXVkaW9UcmFj
a3MoKVswXSk7CisKKyAgICAgICAgICAgICAgICBsaXN0VHJhY2tTZXR0aW5ncyhtZWRpYVN0cmVh
bS5nZXRWaWRlb1RyYWNrcygpWzBdKTsKKyAgICAgICAgICAgICAgICBsaXN0VHJhY2tTZXR0aW5n
cyhtZWRpYVN0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBdKTsKKworICAgICAgICAgICAgICAgIGRl
YnVnKCdBY2NvcmRpbmcgdG8gdGhlIHNwZWM6ICJbZXZlcnkgc2V0dGluZ10gTVVTVCBiZSBhIG1l
bWJlciBvZiB0aGUgc2V0IGRlZmluZWQgZm9yIHRoYXQgcHJvcGVydHkgYnkgZ2V0Q2FwYWJpbGl0
aWVzKCkiPGJyPicpOworICAgICAgICAgICAgICAgIGNoZWNrVHJhY2tTZXR0aW5ncyhtZWRpYVN0
cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdKTsKKyAgICAgICAgICAgICAgICBjaGVja1RyYWNrU2V0
dGluZ3MobWVkaWFTdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXSk7CiAgICAgICAgICAgICAgICAg
ZmluaXNoSlNUZXN0KCk7CiAgICAgICAgICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266543</attachid>
            <date>2015-12-03 12:14:10 -0800</date>
            <delta_ts>2015-12-03 14:26:42 -0800</delta_ts>
            <desc>Updated patch for the bots.</desc>
            <filename>track_capabilities_patch_12.txt</filename>
            <type>text/plain</type>
            <size>95623</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MzM1NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyNyBAQAorMjAxNS0xMi0wMyAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW1d
IFVwZGF0ZSBNZWRpYVN0cmVhbVRyYWNrLmdldENhcGFiaWxpdGllcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNzI4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZmFzdC9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrLWdldENhcGFiaWxpdGllcy5odG1sCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDogUmVtb3ZlIGZpbGVzIGRlbGV0ZWQgZnJvbSB0aGUgcmVwb3NpdG9yeS4KKworICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6IERpdHRvLgorCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9BbGxBdWRpb0NhcGFiaWxpdGllcy5oOiBSZW1vdmVkLgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vQWxsQXVkaW9DYXBhYmlsaXRpZXMuaWRsOiBSZW1vdmVkLgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vQWxsVmlkZW9DYXBhYmlsaXRpZXMuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmlk
bDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5n
ZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5
UmFuZ2UuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxp
dHlSYW5nZS5pZGw6IFJlbW92ZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU291cmNlU2V0dGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlU2V0dGlu
Z3M6OnN1cHBvcnRzVm9sdW1lKTogVm9sdW1lIGlzIGEgZG91YmxlLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTb3VyY2VTZXR0aW5nczo6dm9sdW1lKTogRG91YmxlLgorCisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oOiBS
ZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmls
aXRpZXMuaWRsOiBSZW1vdmVkLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6Omdl
dENhcGFiaWxpdGllcyk6IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzIGlzIGdvbmUsIHJldHVybiBh
IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuCisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrLmlkbDoKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajogUmVtb3ZlIGZpbGVzIGRlbGV0ZWQgZnJvbSB0aGUgcmVwb3NpdG9yeS4K
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y2FwYWJpbGl0eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVk
aWFTdHJlYW1UcmFjazo6Z2V0Q2FwYWJpbGl0aWVzKTogQ3JlYXRlIGFuZCByZXR1cm4gYSBkaWN0
aW9uYXJ5IG9mIGNhcGF0aWxpdGllcy4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
cGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwYWJpbGl0
eVZhbHVlT3JSYW5nZTo6Q2FwYWJpbGl0eVZhbHVlT3JSYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpyYW5nZU1pbik6CisgICAgICAgIChXZWJDb3JlOjpD
YXBhYmlsaXR5VmFsdWVPclJhbmdlOjpyYW5nZU1heCk6CisgICAgICAgIChXZWJDb3JlOjpDYXBh
YmlsaXR5VmFsdWVPclJhbmdlOjp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6flJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRp
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6
c3VwcG9ydHNXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2Fw
YWJpbGl0aWVzOjp3aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNl
Q2FwYWJpbGl0aWVzOjpzZXRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlh
U291cmNlQ2FwYWJpbGl0aWVzOjpzdXBwb3J0c0hlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpoZWlnaHQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6c2V0SGVpZ2h0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OnN1cHBvcnRzRnJhbWVS
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6
OmZyYW1lUmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJp
bGl0aWVzOjpzZXRGcmFtZVJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNv
dXJjZUNhcGFiaWxpdGllczo6c3VwcG9ydHNGYWNpbmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OmZhY2luZ01vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6YWRkRmFjaW5nTW9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpzdXBw
b3J0c0FzcGVjdFJhdGlvKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VD
YXBhYmlsaXRpZXM6OmFzcGVjdFJhdGlvKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVk
aWFTb3VyY2VDYXBhYmlsaXRpZXM6OnNldEFzcGVjdFJhdGlvKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OnN1cHBvcnRzVm9sdW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OnZvbHVtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpzZXRWb2x1
bWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6
c3VwcG9ydHNTYW1wbGVSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2VDYXBhYmlsaXRpZXM6OnNhbXBsZVJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVN
ZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6c2V0U2FtcGxlUmF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpzdXBwb3J0c1NhbXBsZVNpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6c2FtcGxl
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVz
OjpzZXRTYW1wbGVTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VD
YXBhYmlsaXRpZXM6OnN1cHBvcnRzRWNob0NhbmNlbGxhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjplY2hvQ2FuY2VsbGF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OnNldEVjaG9D
YW5jZWxsYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFi
aWxpdGllczo6c3VwcG9ydHNEZXZpY2VJZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpkZXZpY2VJZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFs
dGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpzZXREZXZpY2VJZCk6CisgICAgICAgIChXZWJD
b3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpzdXBwb3J0c0dyb3VwSWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6Z3JvdXBJ
ZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpz
ZXRHcm91cElkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmls
aXRpZXM6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdHlSYW5nZTo6UmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdHlSYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlQ2FwYWJpbGl0eVJhbmdlOjptaW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdHlSYW5nZTo6bWF4KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXR5UmFuZ2U6OnR5cGUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxp
dHlSYW5nZTo6c3VwcG9ydGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1l
TWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OnNvdXJjZUlkKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OnNldFNvdXJjZUlkKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6
OmZhY2luZ01vZGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFT
b3VyY2VDYXBhYmlsaXRpZXM6OnNldFdpZHRoUmFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6c2V0SGVpZ2h0UmFuZ2UpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGll
czo6c2V0RnJhbWVSYXRlUmFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6c2V0QXNwZWN0UmF0aW9SYW5nZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpzZXRW
b2x1bWVSYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291
cmNlQ2FwYWJpbGl0aWVzOjpoYXNWaWRlb1NvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjpzZXRIYXNWaWRlb1NvdXJjZSk6
IERlbGV0ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5nczo6dm9sdW1lKTogVm9sdW1lIGlzIGEgZG91YmxlLgorICAgICAgICAoV2ViQ29yZTo6
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpzZXRWb2x1bWUpOiBEaXR0LgorCisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQXVkaW9DYXB0dXJlU291cmNlLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6QVZBdWRpb0NhcHR1cmVTb3VyY2U6OmluaXRpYWxpemVDYXBhYmlsaXRp
ZXMpOiBJbml0aWFsaXplIHZvbHVtZSBjYXBhYmlsaXR5LgorCisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6QVZNZWRpYUNhcHR1cmVTb3VyY2U6OmNhcGFiaWxpdGllcyk6IFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDYXBhYmlsaXRpZXMgY29uc3RydWN0b3IgdGFrZXMKKyAgICAgICAgICBzdXBwb3J0ZWRDb25z
dHJhaW50cy4gc291cmNlSWQgLT4gZGV2aWNlSWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW06CisgICAgICAgIChXZWJDb3JlOjpB
VlZpZGVvQ2FwdHVyZVNvdXJjZTo6aW5pdGlhbGl6ZUNhcGFiaWxpdGllcyk6IERldmljZUlkIGlz
IHNldCBieSB0aGUgYmFzZSBjbGFzcy4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbTogRHJpdmUtYnkgY2xlYW51cCwg
cmVtb3ZlIHVudXNlZCBjb2RlLgorCisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRp
bWVBdWRpb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVBdWRpb1Nv
dXJjZTo6aW5pdGlhbGl6ZUNhcGFiaWxpdGllcyk6IFVwZGF0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6aW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRz
KTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291
cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpjYXBh
YmlsaXRpZXMpOiBzb3VyY2VJZCAtPiBkZXZpY2VJZC4KKworICAgICAgICAqIHBsYXRmb3JtL21v
Y2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2U6OmluaXRpYWxpemVDYXBhYmlsaXRpZXMpOiBVcGRhdGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmluaXRpYWxpemVTdXBwb3J0
ZWRDb25zdHJhaW50cyk6IERpdHRvLgorCiAyMDE1LTEyLTAzICBQZXIgQXJuZSBWb2xsYW4gIDxw
ZWF2b0BvdXRsb29rLmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9dW01lZGlhRm91bmRhdGlvbl0g
TWFpbiB0aHJlYWQgY2FuIGJsb2NrIHdoZW4gc2Vzc2lvbiBpcyBkZXN0cm95ZWQuCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTkyOTU0KQorKysgU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIyMSwxNSArMjIxLDExIEBAIHNldChXZWJD
b3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZm
ZXJMaXN0LmlkbAogICAgIE1vZHVsZXMvbWVkaWFzb3VyY2UvVmlkZW9QbGF5YmFja1F1YWxpdHku
aWRsCiAKLSAgICBNb2R1bGVzL21lZGlhc3RyZWFtL0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmlkbAot
ICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vQWxsVmlkZW9DYXBhYmlsaXRpZXMuaWRsCi0gICAgTW9k
dWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0
cmVhbS9ET01VUkxNZWRpYVN0cmVhbS5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL0hUTUxN
ZWRpYUVsZW1lbnRNZWRpYVN0cmVhbS5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
RGV2aWNlSW5mby5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5pZGwK
ICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmlkbAotICAgIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbUV2ZW50LmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1UcmFjay5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tF
dmVudC5pZGwKQEAgLTk0Myw3ICs5MzksNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9k
dWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0LmNwcAogICAgIE1vZHVsZXMvbWVkaWFz
b3VyY2UvVmlkZW9QbGF5YmFja1F1YWxpdHkuY3BwCiAKLSAgICBNb2R1bGVzL21lZGlhc3RyZWFt
L0NhcGFiaWxpdHlSYW5nZS5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL0RPTVVSTE1lZGlh
U3RyZWFtLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vSFRNTE1lZGlhRWxlbWVudE1lZGlh
U3RyZWFtLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwu
Y3BwCkBAIC05NTMsNyArOTQ4LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIE1vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmNwcAogICAgIE1vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHAKICAgICBNb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLmNwcAotICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1D
YXBhYmlsaXRpZXMuY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUV2ZW50
LmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5jcHAKICAg
ICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCkBAIC0xMjA2LDcgKzEy
MDAsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNMYXp5RXZlbnRM
aXN0ZW5lci5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAogICAgIGJp
bmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5jcHAKLSAgICBiaW5kaW5ncy9qcy9KU01l
ZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTTWVkaWFT
dHJlYW1UcmFja0N1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU01lZGlhVHJhY2tTdXBwb3J0
ZWRDb25zdHJhaW50c0N1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU01lc3NhZ2VDaGFubmVs
Q3VzdG9tLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAx
OTI5NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTcsMTUgKzExNywxMSBAQCBOT05fU1ZHX0JJTkRJTkdfSURMUyA9IFwKIAkkKFdl
YkNvcmUpL01vZHVsZXMvbWVkaWFzb3VyY2UvVGV4dFRyYWNrTWVkaWFTb3VyY2UuaWRsIFwKIAkk
KFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzb3VyY2UvVmlkZW9UcmFja01lZGlhU291cmNlLmlkbCBc
CiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc291cmNlL1ZpZGVvUGxheWJhY2tRdWFsaXR5Lmlk
bCBcCi0JJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL0FsbFZpZGVvQ2FwYWJpbGl0aWVz
LmlkbCBcCi0JJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL0FsbEF1ZGlvQ2FwYWJpbGl0
aWVzLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlS
YW5nZS5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9ET01VUkxNZWRpYVN0
cmVhbS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9IVE1MTWVkaWFF
bGVtZW50TWVkaWFTdHJlYW0uaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFEZXZpY2VJbmZvLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhRGV2aWNlcy5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbS5pZGwgXAotCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbUNhcGFiaWxpdGllcy5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbUV2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2suaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFja0V2ZW50LmlkbCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxBdWRpb0NhcGFiaWxpdGllcy5o
CShyZXZpc2lvbiAxOTI5NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNTkgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQWxs
QXVkaW9DYXBhYmlsaXRpZXNfaAotI2RlZmluZSBBbGxBdWRpb0NhcGFiaWxpdGllc19oCi0KLSNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi0jaW5jbHVkZSAiTWVkaWFTdHJlYW1DYXBhYmlsaXRp
ZXMuaCIKLSNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzLmgiCi0jaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgQ2FwYWJpbGl0eVJhbmdlOwotY2xhc3MgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGll
czsKLQotY2xhc3MgQWxsQXVkaW9DYXBhYmlsaXRpZXMgOiBwdWJsaWMgTWVkaWFTdHJlYW1DYXBh
YmlsaXRpZXMgewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8QWxsQXVkaW9DYXBhYmlsaXRpZXM+
IGNyZWF0ZShQYXNzUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IGNhcGFi
aWxpdGllcykKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFsbEF1ZGlvQ2Fw
YWJpbGl0aWVzKGNhcGFiaWxpdGllcykpOwotICAgIH0KLSAgICB2aXJ0dWFsIH5BbGxBdWRpb0Nh
cGFiaWxpdGllcygpIHsgfQotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IEFsbEF1ZGlvQ2FwYWJp
bGl0aWVzKFBhc3NSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gY2FwYWJp
bGl0aWVzKQotICAgICAgICA6IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzKGNhcGFiaWxpdGllcykK
LSAgICB7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
QWxsQXVkaW9DYXBhYmlsaXRpZXNfaAotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vQWxsQXVkaW9DYXBhYmlsaXRpZXMuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsQXVkaW9DYXBhYmlsaXRpZXMu
aWRsCShyZXZpc2lvbiAxOTI5NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSwzMyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLVsKLSAg
ICBOb0ludGVyZmFjZU9iamVjdCwKLSAgICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sCi0gICAg
SlNHZW5lcmF0ZVRvSlNPYmplY3QsCi1dIGludGVyZmFjZSBBbGxBdWRpb0NhcGFiaWxpdGllcyA6
IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzIHsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nW10gc291cmNlSWQ7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIENhcGFiaWxpdHlSYW5nZSB2
b2x1bWU7Ci19OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxW
aWRlb0NhcGFiaWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vQWxsVmlkZW9DYXBhYmlsaXRpZXMuaAkocmV2aXNpb24gMTkyOTU0KQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BbGxWaWRlb0NhcGFiaWxpdGllcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEFsbFZpZGVvQ2FwYWJpbGl0aWVzX2gKLSNk
ZWZpbmUgQWxsVmlkZW9DYXBhYmlsaXRpZXNfaAotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
LQotI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmgiCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotY2xhc3MgQ2FwYWJpbGl0eVJhbmdlOwotY2xhc3MgUmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllczsKLQotY2xhc3MgQWxsVmlkZW9DYXBhYmlsaXRpZXMgOiBwdWJsaWMgTWVk
aWFTdHJlYW1DYXBhYmlsaXRpZXMgewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8QWxsVmlkZW9D
YXBhYmlsaXRpZXM+IGNyZWF0ZShQYXNzUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmls
aXRpZXM+IGNhcGFiaWxpdGllcykKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEFsbFZpZGVvQ2FwYWJpbGl0aWVzKGNhcGFiaWxpdGllcykpOwotICAgIH0KLSAgICB2aXJ0dWFs
IH5BbGxWaWRlb0NhcGFiaWxpdGllcygpIHsgfQotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IEFs
bFZpZGVvQ2FwYWJpbGl0aWVzKFBhc3NSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxp
dGllcz4gY2FwYWJpbGl0aWVzKQotICAgICAgICA6IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzKGNh
cGFiaWxpdGllcykKLSAgICB7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gQWxsVmlkZW9DYXBhYmlsaXRpZXNfaAotCi0jZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsVmlkZW9DYXBhYmlsaXRpZXMuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQWxsVmlkZW9D
YXBhYmlsaXRpZXMuaWRsCShyZXZpc2lvbiAxOTI5NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAot
ICovCi0KLVsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKLSAgICBDb25kaXRpb25hbD1NRURJQV9T
VFJFQU0sCi0gICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCi1dIGludGVyZmFjZSBBbGxWaWRlb0Nh
cGFiaWxpdGllcyA6IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzIHsKLSAgICByZWFkb25seSBhdHRy
aWJ1dGUgRE9NU3RyaW5nW10gc291cmNlVHlwZTsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nW10gc291cmNlSWQ7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIENhcGFiaWxpdHlSYW5n
ZSB3aWR0aDsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgQ2FwYWJpbGl0eVJhbmdlIGhlaWdodDsK
LSAgICByZWFkb25seSBhdHRyaWJ1dGUgQ2FwYWJpbGl0eVJhbmdlIGZyYW1lUmF0ZTsKLSAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgQ2FwYWJpbGl0eVJhbmdlIGFzcGVjdFJhdGlvOwotICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBET01TdHJpbmdbXSAgZmFjaW5nTW9kZTsKLX07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2Uu
Y3BwCShyZXZpc2lvbiAxOTI5NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL0NhcGFiaWxpdHlSYW5nZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsOTIgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNpbmNsdWRlICJD
YXBhYmlsaXR5UmFuZ2UuaCIKLQotI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUg
Ik1lZGlhU291cmNlU2V0dGluZ3MuaCIKLSNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5o
PgotI2luY2x1ZGUgPGludGVycHJldGVyL0NhbGxGcmFtZS5oPgotI2luY2x1ZGUgPHJ1bnRpbWUv
SlNDSlNWYWx1ZS5oPgotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLVJlZjxDYXBhYmlsaXR5UmFuZ2U+IENhcGFiaWxpdHlSYW5nZTo6Y3JlYXRlKGNvbnN0
IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXR5UmFuZ2UmIHJhbmdlSW5mbykKLXsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBDYXBhYmlsaXR5UmFuZ2UocmFuZ2VJbmZvKSk7Ci19Ci0KLUNh
cGFiaWxpdHlSYW5nZTo6Q2FwYWJpbGl0eVJhbmdlKGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VD
YXBhYmlsaXR5UmFuZ2UmIHJhbmdlSW5mbykKLSAgICA6IG1fcmFuZ2VJbmZvKHJhbmdlSW5mbykK
LXsKLX0KLQotc3RhdGljIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHNjcmlwdFZhbHVlKEV4ZWNT
dGF0ZSYgc3RhdGUsIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXR5UmFuZ2U6OlZh
bHVlVW5pb24mIHZhbHVlLCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0eVJhbmdlOjpUeXBl
IHR5cGUpCi17Ci0gICAgLy8gTk9URTogdGhlIHNwZWMgc2F5czoKLSAgICAvLyAgICAgIC4uLiBh
biBpbXBsZW1lbnRhdGlvbiBzaG91bGQgbWFrZSBhIHJlYXNvbmFibGUgYXR0ZW1wdCB0byB0cmFu
c2xhdGUgYW5kIHNjYWxlIHRoZSBoYXJkd2FyZSdzIHNldHRpbmcKLSAgICAvLyAgICAgIG9udG8g
dGhlIG1hcHBpbmcgcHJvdmlkZWQgYnkgdGhpcyBzcGVjaWZpY2F0aW9uLiBJZiB0aGlzIGlzIG5v
dCBwb3NzaWJsZSBkdWUgdG8gdGhlIHVzZXIgYWdlbnQncwotICAgIC8vICAgICAgaW5hYmlsaXR5
IHRvIHJldHJpZXZlIGEgZ2l2ZW4gY2FwYWJpbGl0eSBmcm9tIGEgc291cmNlLCB0aGVuIGZvciBD
YXBhYmlsaXR5UmFuZ2UtdHlwZWQgY2FwYWJpbGl0aWVzLAotICAgIC8vICAgICAgdGhlIG1pbiBh
bmQgbWF4IGZpZWxkcyB3aWxsIG5vdCBiZSBwcmVzZW50IG9uIHRoZSByZXR1cm5lZCBkaWN0aW9u
YXJ5LCBhbmQgdGhlIHN1cHBvcnRlZCBmaWVsZCB3aWxsIGJlIGZhbHNlLgotICAgIC8vIFdlIGRv
bid0IGRvIHRoaXMgY3VycmVudGx5IGJlY2F1c2UgSSBkb24ndCBrbm93IG9mIGFuIGluc3RhbmNl
IHdoZXJlIGl0IGlzbid0IHBvc3NpYmxlIHRvIHJldHJpZXZlIGEgc291cmNlCi0gICAgLy8gY2Fw
YWJpbGl0eSwgYnV0IHdoZW4gd2UgaGF2ZSB0byBkZWFsIHdpdGggdGhpcyB3ZSB3aWxsIG5lZWQg
dG8gbWFyayBDYXBhYmlsaXR5UmFuZ2UubWluIGFuZCBDYXBhYmlsaXR5UmFuZ2UubWF4IGFzCi0g
ICAgLy8gIkN1c3RvbSIgYW5kIHJldHVybiBqc1VuZGVmaW5lZCgpIGZyb20gdGhlIGN1c3RvbSBn
ZXR0ZXIgdG8gc3VwcG9ydCBpdC4KLSAgICAKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNl
IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXR5UmFuZ2U6OkZsb2F0OgotICAgICAgICByZXR1
cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoc3RhdGUudm0oKSwgSlNWYWx1ZSh2YWx1ZS5hc0Zs
b2F0KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFi
aWxpdHlSYW5nZTo6VUxvbmc6Ci0gICAgICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZShzdGF0ZS52bSgpLCBKU1ZhbHVlKHZhbHVlLmFzVUxvbmcpKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0eVJhbmdlOjpVbmRlZmluZWQ6Ci0g
ICAgICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShzdGF0ZS52bSgpLCBqc1VuZGVm
aW5lZCgpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKHN0YXRlLnZtKCksIGpzVW5k
ZWZpbmVkKCkpOwotfQotCi1EZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBDYXBhYmlsaXR5UmFuZ2U6
Om1pbihFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAotewotICAgIHJldHVybiBzY3JpcHRWYWx1ZShz
dGF0ZSwgbV9yYW5nZUluZm8ubWluKCksIG1fcmFuZ2VJbmZvLnR5cGUoKSk7Ci19Ci0KLURlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlIENhcGFiaWxpdHlSYW5nZTo6bWF4KEV4ZWNTdGF0ZSYgc3RhdGUp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIHNjcmlwdFZhbHVlKHN0YXRlLCBtX3JhbmdlSW5mby5tYXgo
KSwgbV9yYW5nZUluZm8udHlwZSgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0
eVJhbmdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9DYXBhYmlsaXR5UmFuZ2UuaAkocmV2aXNpb24gMTkyOTU0KQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAq
Ci0gKi8KLQotI2lmbmRlZiBDYXBhYmlsaXR5UmFuZ2VfaAotI2RlZmluZSBDYXBhYmlsaXR5UmFu
Z2VfaAotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotI2luY2x1ZGUgIlJlYWx0aW1lTWVk
aWFTb3VyY2VDYXBhYmlsaXRpZXMuaCIKLSNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKLSNp
bmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgotI2luY2x1ZGUgPGludGVycHJldGVyL0Nh
bGxGcmFtZS5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotY2xhc3MgQ2FwYWJpbGl0eVJhbmdlIDogcHVibGljIFJlZkNvdW50ZWQ8Q2FwYWJp
bGl0eVJhbmdlPiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7Ci1wdWJsaWM6Ci0gICAgdmlydHVh
bCB+Q2FwYWJpbGl0eVJhbmdlKCkgeyB9Ci0KLSAgICBzdGF0aWMgUmVmPENhcGFiaWxpdHlSYW5n
ZT4gY3JlYXRlKGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXR5UmFuZ2UmKTsKLQot
ICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG1pbihKU0M6OkV4ZWNTdGF0ZSYpIGNvbnN0Owot
ICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG1heChKU0M6OkV4ZWNTdGF0ZSYpIGNvbnN0Owot
ICAgIGJvb2wgc3VwcG9ydGVkKCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZUluZm8uc3VwcG9ydGVk
KCk7IH0KLQotcHJpdmF0ZToKLSAgICBDYXBhYmlsaXR5UmFuZ2UoY29uc3QgUmVhbHRpbWVNZWRp
YVNvdXJjZUNhcGFiaWxpdHlSYW5nZSYpOwotICAgIAotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VD
YXBhYmlsaXR5UmFuZ2UgbV9yYW5nZUluZm87Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBDYXBhYmlsaXR5UmFuZ2VfaAotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5p
ZGwJKHJldmlzaW9uIDE5Mjk1NCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vQ2FwYWJpbGl0eVJhbmdlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSwzMyArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLVsKLSAgICBOb0lu
dGVyZmFjZU9iamVjdCwKLSAgICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sCi1dIGludGVyZmFj
ZSBDYXBhYmlsaXR5UmFuZ2UgewotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gcmVhZG9ubHkg
YXR0cmlidXRlIGFueSBtYXg7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSByZWFkb25seSBh
dHRyaWJ1dGUgYW55IG1pbjsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBzdXBwb3J0
ZWQ7Ci19OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNv
dXJjZVNldHRpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVNvdXJjZVNldHRpbmdzLmgJKHJldmlzaW9uIDE5Mjk1NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTZXR0aW5ncy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBBdG9taWNTdHJp
bmcmIGZhY2luZ01vZGUoKSBjb25zdDsKIAogICAgIGJvb2wgc3VwcG9ydHNWb2x1bWUoKSBjb25z
dCB7IHJldHVybiBtX3NvdXJjZVNldHRpbmdzLnN1cHBvcnRzVm9sdW1lKCk7IH0KLSAgICB1bnNp
Z25lZCBsb25nIHZvbHVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlU2V0dGluZ3Mudm9sdW1l
KCk7IH0KKyAgICBkb3VibGUgdm9sdW1lKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTZXR0aW5n
cy52b2x1bWUoKTsgfQogCiAgICAgYm9vbCBzdXBwb3J0c1NhbXBsZVJhdGUoKSBjb25zdCB7IHJl
dHVybiBtX3NvdXJjZVNldHRpbmdzLnN1cHBvcnRzU2FtcGxlUmF0ZSgpOyB9CiAgICAgdW5zaWdu
ZWQgbG9uZyBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VTZXR0aW5ncy5zYW1w
bGVSYXRlKCk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAx
OTI5NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
Q2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxMjggKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNpbmNsdWRlICJNZWRpYVN0cmVhbUNh
cGFiaWxpdGllcy5oIgotCi0jaW5jbHVkZSAiQWxsQXVkaW9DYXBhYmlsaXRpZXMuaCIKLSNpbmNs
dWRlICJBbGxWaWRlb0NhcGFiaWxpdGllcy5oIgotI2luY2x1ZGUgIkNhcGFiaWxpdHlSYW5nZS5o
IgotI2luY2x1ZGUgIk1lZGlhU291cmNlU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJSZWFsdGltZU1l
ZGlhU291cmNlQ2FwYWJpbGl0aWVzLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmUHRy
PE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzPiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllczo6Y3JlYXRl
KFBhc3NSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gY2FwYWJpbGl0aWVz
KQotewotICAgIGlmIChjYXBhYmlsaXRpZXMtPmhhc1ZpZGVvU291cmNlKCkpCi0gICAgICAgIHJl
dHVybiBBbGxWaWRlb0NhcGFiaWxpdGllczo6Y3JlYXRlKGNhcGFiaWxpdGllcyk7Ci0gICAgCi0g
ICAgcmV0dXJuIEFsbEF1ZGlvQ2FwYWJpbGl0aWVzOjpjcmVhdGUoY2FwYWJpbGl0aWVzKTsKLX0K
LQotTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXM6Ok1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzKFBhc3NS
ZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gY2FwYWJpbGl0aWVzKQotICAg
IDogbV9Tb3VyY2VDYXBhYmlsaXRpZXMoY2FwYWJpbGl0aWVzKQotewotfQotCi1WZWN0b3I8U3Ry
aW5nPiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllczo6c291cmNlVHlwZSgpIGNvbnN0Ci17Ci0gICAg
Ly8gVGhpcyB3aWxsIGJlIGZpeGVkIGJ5IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTE3MjguCi0gICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7Ci19Ci0KLVZlY3Rv
cjxTdHJpbmc+IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjpzb3VyY2VJZCgpIGNvbnN0Ci17Ci0g
ICAgc2l6ZV90IGNvdW50ID0gbV9Tb3VyY2VDYXBhYmlsaXRpZXMtPnNvdXJjZUlkKCkuc2l6ZSgp
OwotICAgIGlmICghY291bnQpCi0gICAgICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOwotCi0g
ICAgVmVjdG9yPFN0cmluZz4gY2FwYWJpbGl0aWVzOwotICAgIGNhcGFiaWxpdGllcy5yZXNlcnZl
Q2FwYWNpdHkoY291bnQpOwotCi0gICAgZm9yIChhdXRvJiBpZCA6IG1fU291cmNlQ2FwYWJpbGl0
aWVzLT5zb3VyY2VJZCgpKQotICAgICAgICBjYXBhYmlsaXRpZXMuYXBwZW5kKGlkKTsKLSAgICAK
LSAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwotfQotCi1WZWN0b3I8U3RyaW5nPiBNZWRpYVN0cmVh
bUNhcGFiaWxpdGllczo6ZmFjaW5nTW9kZSgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fU291cmNl
Q2FwYWJpbGl0aWVzLT5oYXNWaWRlb1NvdXJjZSgpKTsKLSAgICAKLSAgICBzaXplX3QgY291bnQg
PSBtX1NvdXJjZUNhcGFiaWxpdGllcy0+ZmFjaW5nTW9kZXMoKS5zaXplKCk7Ci0gICAgaWYgKCFj
b3VudCkKLSAgICAgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7Ci0gICAgCi0gICAgVmVjdG9y
PFN0cmluZz4gY2FwYWJpbGl0aWVzOwotICAgIGNhcGFiaWxpdGllcy5yZXNlcnZlQ2FwYWNpdHko
Y291bnQpOwotICAgIAotICAgIGZvciAoYXV0byYgbW9kZSA6IG1fU291cmNlQ2FwYWJpbGl0aWVz
LT5mYWNpbmdNb2RlcygpKQotICAgICAgICBjYXBhYmlsaXRpZXMuYXBwZW5kKFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5nczo6ZmFjaW5nTW9kZShtb2RlKSk7Ci0gICAgCi0gICAgcmV0dXJuIGNh
cGFiaWxpdGllczsKLX0KLQotUmVmUHRyPENhcGFiaWxpdHlSYW5nZT4gTWVkaWFTdHJlYW1DYXBh
YmlsaXRpZXM6OndpZHRoKCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9Tb3VyY2VDYXBhYmlsaXRp
ZXMtPmhhc1ZpZGVvU291cmNlKCkpOwotICAgIAotICAgIHJldHVybiBDYXBhYmlsaXR5UmFuZ2U6
OmNyZWF0ZShtX1NvdXJjZUNhcGFiaWxpdGllcy0+d2lkdGgoKSk7Ci19Ci0KLVJlZlB0cjxDYXBh
YmlsaXR5UmFuZ2U+IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjpoZWlnaHQoKSBjb25zdAotewot
ICAgIEFTU0VSVChtX1NvdXJjZUNhcGFiaWxpdGllcy0+aGFzVmlkZW9Tb3VyY2UoKSk7Ci0gICAg
Ci0gICAgcmV0dXJuIENhcGFiaWxpdHlSYW5nZTo6Y3JlYXRlKG1fU291cmNlQ2FwYWJpbGl0aWVz
LT5oZWlnaHQoKSk7Ci19Ci0KLVJlZlB0cjxDYXBhYmlsaXR5UmFuZ2U+IE1lZGlhU3RyZWFtQ2Fw
YWJpbGl0aWVzOjpmcmFtZVJhdGUoKSBjb25zdAotewotICAgIEFTU0VSVChtX1NvdXJjZUNhcGFi
aWxpdGllcy0+aGFzVmlkZW9Tb3VyY2UoKSk7Ci0gICAgCi0gICAgcmV0dXJuIENhcGFiaWxpdHlS
YW5nZTo6Y3JlYXRlKG1fU291cmNlQ2FwYWJpbGl0aWVzLT5mcmFtZVJhdGUoKSk7Ci19Ci0KLVJl
ZlB0cjxDYXBhYmlsaXR5UmFuZ2U+IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjphc3BlY3RSYXRp
bygpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fU291cmNlQ2FwYWJpbGl0aWVzLT5oYXNWaWRlb1Nv
dXJjZSgpKTsKLSAgICAKLSAgICByZXR1cm4gQ2FwYWJpbGl0eVJhbmdlOjpjcmVhdGUobV9Tb3Vy
Y2VDYXBhYmlsaXRpZXMtPmFzcGVjdFJhdGlvKCkpOwotfQotCi1SZWZQdHI8Q2FwYWJpbGl0eVJh
bmdlPiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllczo6dm9sdW1lKCkgY29uc3QKLXsKLSAgICBBU1NF
UlQoIW1fU291cmNlQ2FwYWJpbGl0aWVzLT5oYXNWaWRlb1NvdXJjZSgpKTsKLSAgICAKLSAgICBy
ZXR1cm4gQ2FwYWJpbGl0eVJhbmdlOjpjcmVhdGUobV9Tb3VyY2VDYXBhYmlsaXRpZXMtPnZvbHVt
ZSgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtQ2FwYWJpbGl0aWVzLmgJKHJldmlzaW9uIDE5Mjk1NCkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw2OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmbmRlZiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllc19oCi0jZGVmaW5lIE1lZGlh
U3RyZWFtQ2FwYWJpbGl0aWVzX2gKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNpbmNs
dWRlICJNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oIgotI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFT
b3VyY2VDYXBhYmlsaXRpZXMuaCIKLSNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKLSNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBD
YXBhYmlsaXR5UmFuZ2U7Ci1jbGFzcyBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOwot
Ci1jbGFzcyBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcyA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlh
U3RyZWFtQ2FwYWJpbGl0aWVzPiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZlB0cjxNZWRpYVN0cmVhbUNhcGFiaWxpdGllcz4gY3JlYXRlKFBhc3NSZWZQ
dHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4pOwotICAgIHZpcnR1YWwgfk1lZGlh
U3RyZWFtQ2FwYWJpbGl0aWVzKCkgeyB9Ci0KLSAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHNv
dXJjZVR5cGUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHNvdXJjZUlkKCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCBSZWZQdHI8Q2FwYWJpbGl0eVJhbmdlPiB3aWR0aCgpIGNvbnN0
OwotICAgIHZpcnR1YWwgUmVmUHRyPENhcGFiaWxpdHlSYW5nZT4gaGVpZ2h0KCkgY29uc3Q7Ci0g
ICAgdmlydHVhbCBSZWZQdHI8Q2FwYWJpbGl0eVJhbmdlPiBmcmFtZVJhdGUoKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIFJlZlB0cjxDYXBhYmlsaXR5UmFuZ2U+IGFzcGVjdFJhdGlvKCkgY29uc3Q7Ci0g
ICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBmYWNpbmdNb2RlKCkgY29uc3Q7Ci0gICAgdmlydHVh
bCBSZWZQdHI8Q2FwYWJpbGl0eVJhbmdlPiB2b2x1bWUoKSBjb25zdDsKLSAgICAKLSAgICBib29s
IGhhc1ZpZGVvU291cmNlKCkgeyByZXR1cm4gbV9Tb3VyY2VDYXBhYmlsaXRpZXMtPmhhc1ZpZGVv
U291cmNlKCk7IH0KLQotcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IE1lZGlhU3RyZWFtQ2FwYWJp
bGl0aWVzKFBhc3NSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4pOwotCi0g
ICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IG1fU291cmNlQ2FwYWJp
bGl0aWVzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gTWVkaWFT
dHJlYW1DYXBhYmlsaXRpZXNfaAotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRp
ZXMuaWRsCShyZXZpc2lvbiAxOTI5NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSwz
MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0K
LVsKLSAgICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sCi0gICAgTm9JbnRlcmZhY2VPYmplY3Qs
Ci0gICAgU2tpcFZUYWJsZVZhbGlkYXRpb24sCi0gICAgQ3VzdG9tVG9KU09iamVjdCwKLV0gaW50
ZXJmYWNlIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzIHsKLX07Ci0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNw
cAkocmV2aXNpb24gMTkyOTU0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAsNiBAQAog
CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAotI2luY2x1ZGUgIkFsbEF1ZGlvQ2FwYWJpbGl0
aWVzLmgiCi0jaW5jbHVkZSAiQWxsVmlkZW9DYXBhYmlsaXRpZXMuaCIKICNpbmNsdWRlICJEaWN0
aW9uYXJ5LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgi
CkBAIC0xNjcsOSArMTY1LDkgQEAgUmVmUHRyPE1lZGlhU291cmNlU2V0dGluZ3M+IE1lZGlhU3Ry
ZWFtVAogICAgIHJldHVybiBNZWRpYVNvdXJjZVNldHRpbmdzOjpjcmVhdGUobV9wcml2YXRlLT5z
ZXR0aW5ncygpKTsKIH0KIAotUmVmUHRyPE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzPiBNZWRpYVN0
cmVhbVRyYWNrOjpnZXRDYXBhYmlsaXRpZXMoKSBjb25zdAorUmVmUHRyPFJlYWx0aW1lTWVkaWFT
b3VyY2VDYXBhYmlsaXRpZXM+IE1lZGlhU3RyZWFtVHJhY2s6OmdldENhcGFiaWxpdGllcygpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjpjcmVhdGUobV9wcml2
YXRlLT5jYXBhYmlsaXRpZXMoKSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y2FwYWJpbGl0aWVz
KCk7CiB9CiAKIHZvaWQgTWVkaWFTdHJlYW1UcmFjazo6YXBwbHlDb25zdHJhaW50cyhjb25zdCBE
aWN0aW9uYXJ5JiBjb25zdHJhaW50cykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCShyZXZpc2lvbiAxOTI5NTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2su
aAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNiBAQCBjbGFzcyBBdWRpb1NvdXJjZVByb3Zp
ZGVyOwogY2xhc3MgRGljdGlvbmFyeTsKIGNsYXNzIE1lZGlhQ29uc3RyYWludHNJbXBsOwogY2xh
c3MgTWVkaWFTb3VyY2VTZXR0aW5nczsKLWNsYXNzIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOwog
Y2xhc3MgTWVkaWFUcmFja0NvbnN0cmFpbnRzOwogCiBjbGFzcyBNZWRpYVN0cmVhbVRyYWNrIGZp
bmFsIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1UcmFjaz4sIHB1YmxpYyBTY3JpcHRX
cmFwcGFibGUsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJ
bmxpbmVEYXRhLCBwdWJsaWMgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6Ok9ic2VydmVyIHsKQEAg
LTgwLDcgKzc5LDcgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPE1lZGlhVHJhY2tDb25zdHJhaW50
cz4gZ2V0Q29uc3RyYWludHMoKSBjb25zdDsKICAgICBSZWZQdHI8TWVkaWFTb3VyY2VTZXR0aW5n
cz4gZ2V0U2V0dGluZ3MoKSBjb25zdDsKLSAgICBSZWZQdHI8TWVkaWFTdHJlYW1DYXBhYmlsaXRp
ZXM+IGdldENhcGFiaWxpdGllcygpIGNvbnN0OworICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291
cmNlQ2FwYWJpbGl0aWVzPiBnZXRDYXBhYmlsaXRpZXMoKSBjb25zdDsKICAgICB2b2lkIGFwcGx5
Q29uc3RyYWludHMoY29uc3QgRGljdGlvbmFyeSYpOwogICAgIHZvaWQgYXBwbHlDb25zdHJhaW50
cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmlkbAkocmV2aXNp
b24gMTkyOTU0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBlbnVtIE1lZGlh
U3RyZWFtVHJhY2tTdGF0ZSB7ICJuZXciLCAibGl2CiAKICAgICBNZWRpYVRyYWNrQ29uc3RyYWlu
dHMgZ2V0Q29uc3RyYWludHMoKTsKICAgICBbQ3VzdG9tXSBNZWRpYVNvdXJjZVNldHRpbmdzIGdl
dFNldHRpbmdzKCk7Ci0gICAgTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMgZ2V0Q2FwYWJpbGl0aWVz
KCk7IC8vIHJldHVybnMgZWl0aGVyIEFsbFZpZGVvQ2FwYWJpbGl0aWVzIG9yIEFsbEF1ZGlvQ2Fw
YWJpbGl0aWVzCisgICAgW0N1c3RvbV0gTWVkaWFUcmFja0NhcGFiaWxpdGllcyBnZXRDYXBhYmls
aXRpZXMoKTsKICAgICB2b2lkIGFwcGx5Q29uc3RyYWludHMoRGljdGlvbmFyeSBjb25zdHJhaW50
cyk7CiAKICAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ub3ZlcmNvbnN0cmFpbmVkOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMTkyOTU0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03OSwxNyArNzksNiBAQAogCQkwNzAz
NjNFNTE4MUExQ0RDMDBDMDc0QTUgLyogQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzAzNjNERDE4MUExQ0RDMDBD
MDc0QTUgLyogQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0gKi87IH07CiAJCTA3MDM2M0U2MTgxQTFD
REMwMEMwNzRBNSAvKiBBVlZpZGVvQ2FwdHVyZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwMzYzREUxODFBMUNEQzAwQzA3NEE1IC8qIEFW
VmlkZW9DYXB0dXJlU291cmNlLmggKi87IH07CiAJCTA3MDM2M0U3MTgxQTFDREMwMEMwNzRBNSAv
KiBBVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3MDM2M0RGMTgxQTFDREMwMEMwNzRBNSAvKiBBVlZpZGVvQ2FwdHVy
ZVNvdXJjZS5tbSAqLzsgfTsKLQkJMDcwNTg0RkYxN0Y5RjA1RTAwNUYyQkNCIC8qIENhcGFiaWxp
dHlSYW5nZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwNzA1ODRGRTE3RjlGMDVFMDA1RjJCQ0IgLyogQ2FwYWJpbGl0eVJhbmdlLmNwcCAqLzsgfTsK
LQkJMDcwNTg1MDIxN0ZBMTBEMDAwNUYyQkNCIC8qIEpTQWxsVmlkZW9DYXBhYmlsaXRpZXMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MDAx
N0ZBMTBEMDAwNUYyQkNCIC8qIEpTQWxsVmlkZW9DYXBhYmlsaXRpZXMuY3BwICovOyB9OwotCQkw
NzA1ODUwMzE3RkExMEQwMDA1RjJCQ0IgLyogSlNBbGxWaWRlb0NhcGFiaWxpdGllcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MDExN0ZBMTBE
MDAwNUYyQkNCIC8qIEpTQWxsVmlkZW9DYXBhYmlsaXRpZXMuaCAqLzsgfTsKLQkJMDcwNTg1MDgx
N0ZBNDY4OTAwNUYyQkNCIC8qIEFsbEF1ZGlvQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUwNTE3RkE0Njg5MDA1RjJCQ0Ig
LyogQWxsQXVkaW9DYXBhYmlsaXRpZXMuaCAqLzsgfTsKLQkJMDcwNTg1MEIxN0ZBNDgyNzAwNUYy
QkNCIC8qIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA1ODUwQTE3RkE0ODI3MDA1RjJCQ0IgLyogTWVkaWFT
dHJlYW1DYXBhYmlsaXRpZXMuaCAqLzsgfTsKLQkJMDcwNTg1MTIxN0ZBNzEwNzAwNUYyQkNCIC8q
IEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MTAxN0ZBNzEwNzAwNUYyQkNCIC8qIEpTTWVkaWFT
dHJlYW1DYXBhYmlsaXRpZXMuY3BwICovOyB9OwotCQkwNzA1ODUxMzE3RkE3MTA3MDA1RjJCQ0Ig
LyogSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MTExN0ZBNzEwNzAwNUYyQkNCIC8qIEpTTWVkaWFT
dHJlYW1DYXBhYmlsaXRpZXMuaCAqLzsgfTsKLQkJMDcwNTg1MTUxN0ZCMEVFQTAwNUYyQkNCIC8q
IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTE0MTdGQjBFMkMwMDVGMkJDQiAvKiBNZWRpYVN0cmVh
bUNhcGFiaWxpdGllcy5jcHAgKi87IH07Ci0JCTA3MDU4NTE3MTdGQjQwRTkwMDVGMkJDQiAvKiBK
U01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDU4NTE2MTdGQjQwRTkwMDVGMkJDQiAvKiBKU01l
ZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3VzdG9tLmNwcCAqLzsgfTsKLQkJMDcwNTg1MUExN0ZCNDRC
NDAwNUYyQkNCIC8qIEpTQWxsQXVkaW9DYXBhYmlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MTgxN0ZCNDRCNDAwNUYyQkNCIC8q
IEpTQWxsQXVkaW9DYXBhYmlsaXRpZXMuY3BwICovOyB9OwotCQkwNzA1ODUxQjE3RkI0NEI0MDA1
RjJCQ0IgLyogSlNBbGxBdWRpb0NhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNTg1MTkxN0ZCNDRCNDAwNUYyQkNCIC8qIEpTQWxs
QXVkaW9DYXBhYmlsaXRpZXMuaCAqLzsgfTsKIAkJMDcwNTg1MjExN0ZEQzE0MDAwNUYyQkNCIC8q
IE1lZGlhVHJhY2tDb25zdHJhaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwNzA1ODUxRDE3RkRDMTQwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0
cmFpbnQuaCAqLzsgfTsKIAkJMDcwNTg1MjMxN0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tD
b25zdHJhaW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwNzA1ODUxRjE3RkRDMTQwMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRzLmNw
cCAqLzsgfTsKIAkJMDcwNTg1MjQxN0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJh
aW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcw
NTg1MjAxN0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50cy5oICovOyB9OwpA
QCAtMTY2LDkgKzE1NSw2IEBACiAJCTA3Mzc5NEZFMTlGNTg2NEUwMEU1QTA0NSAvKiBSVENOb3Rp
ZmllcnNNb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwNzM3OTRGODE5RjU4NjRFMDBFNUEwNDUgLyogUlRDTm90aWZpZXJzTW9jay5oICovOyB9Owog
CQkwNzM5NEVDODFCQUIyQ0NEMDBCRTk5Q0QgLyogTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzM5NEVDNzFCQUIy
Q0NEMDBCRTk5Q0QgLyogTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHAgKi87IH07CiAJCTA3Mzk0RUNB
MUJBQjJDRDcwMEJFOTlDRCAvKiBNZWRpYURldmljZXNSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzM5NEVDOTFCQUIyQ0Q3MDBCRTk5Q0Qg
LyogTWVkaWFEZXZpY2VzUmVxdWVzdC5oICovOyB9OwotCQkwNzNBQjRCMzE3RjhCQUNBMDA2RTBE
NkYgLyogQWxsVmlkZW9DYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3M0FCNEIwMTdGOEJBQ0EwMDZFMEQ2RiAvKiBBbGxWaWRlb0Nh
cGFiaWxpdGllcy5oICovOyB9OwotCQkwNzNBQjRCNzE3RjkyRUNGMDA2RTBENkYgLyogSlNDYXBh
YmlsaXR5UmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDczQUI0QjUxN0Y5MkVDRjAwNkUwRDZGIC8qIEpTQ2FwYWJpbGl0eVJhbmdlLmNwcCAq
LzsgfTsKLQkJMDczQUI0QjgxN0Y5MkVDRjAwNkUwRDZGIC8qIEpTQ2FwYWJpbGl0eVJhbmdlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNBQjRCNjE3
RjkyRUNGMDA2RTBENkYgLyogSlNDYXBhYmlsaXR5UmFuZ2UuaCAqLzsgfTsKIAkJMDczQkUzNDAx
N0QxN0UwMTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yVXNlck1lZGlhLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3M0JFMzNFMTdEMTdFMDEwMDJCRDQz
MSAvKiBKU05hdmlnYXRvclVzZXJNZWRpYS5jcHAgKi87IH07CiAJCTA3M0JFMzQxMTdEMTdFMDEw
MDJCRDQzMSAvKiBKU05hdmlnYXRvclVzZXJNZWRpYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczQkUzM0YxN0QxN0UwMTAwMkJENDMxIC8qIEpTTmF2
aWdhdG9yVXNlck1lZGlhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMDczQkUzNDgxN0QxN0U3QTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yVXNlck1l
ZGlhRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDczQkUzNDIxN0QxN0U3QTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yVXNlck1lZGlhRXJyb3Iu
Y3BwICovOyB9OwpAQCAtMzIyLDcgKzMwOCw2IEBACiAJCTA3QzU5QjY4MTdGNzg0QkEwMDBGQkNC
QiAvKiBNZWRpYVNvdXJjZVNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzU5QjY1MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJj
ZVNldHRpbmdzLmNwcCAqLzsgfTsKIAkJMDdDNTlCNjkxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1lZGlh
U291cmNlU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3QzU5QjY2MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVNldHRpbmdzLmgg
Ki87IH07CiAJCTA3QzU5QjZFMTdGNzk0RjYwMDBGQkNCQiAvKiBKU01lZGlhU3RyZWFtVHJhY2tD
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDdDNTlCNkQxN0Y3OTRGNjAwMEZCQ0JCIC8qIEpTTWVkaWFTdHJlYW1UcmFja0N1c3RvbS5jcHAg
Ki87IH07Ci0JCTA3QzU5Qjc2MTdGN0QwREIwMDBGQkNCQiAvKiBDYXBhYmlsaXR5UmFuZ2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzU5Qjc0MTdG
N0QwOUQwMDBGQkNCQiAvKiBDYXBhYmlsaXR5UmFuZ2UuaCAqLzsgfTsKIAkJMDdDQTEyMEUxODJE
NjdEODAwRDEyMTk3IC8qIEpTUlRDUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDQTEyMEQxODJENjdEODAwRDEy
MTk3IC8qIEpTUlRDUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwICovOyB9OwogCQkwN0NFNzdENTE2
NzEyQTZBMDBDNTVBNDcgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDRTc3RDQxNjcxMkE2QTAw
QzU1QTQ3IC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwN0QwN0IxNDE4MzQxNTg4MDBBQkRE
M0MgLyogSlNSVENTZXNzaW9uRGVzY3JpcHRpb25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdEMDdCMTMxODM0MTU4ODAwQUJERDNDIC8q
IEpTUlRDU2Vzc2lvbkRlc2NyaXB0aW9uQ3VzdG9tLmNwcCAqLzsgfTsKQEAgLTczMzcsMTkgKzcz
MjIsNiBAQAogCQkwNzAzNjNERDE4MUExQ0RDMDBDMDc0QTUgLyogQVZNZWRpYUNhcHR1cmVTb3Vy
Y2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBVk1lZGlhQ2Fw
dHVyZVNvdXJjZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwMzYzREUxODFB
MUNEQzAwQzA3NEE1IC8qIEFWVmlkZW9DYXB0dXJlU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFWVmlkZW9DYXB0dXJlU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTA3MDM2M0RGMTgxQTFDREMwMEMwNzRBNSAvKiBBVlZpZGVvQ2FwdHVyZVNv
dXJjZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFWVmlkZW9D
YXB0dXJlU291cmNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwNzA1ODRGRTE3
RjlGMDVFMDA1RjJCQ0IgLyogQ2FwYWJpbGl0eVJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENhcGFiaWxpdHlSYW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTA3MDU4NTAwMTdGQTEwRDAwMDVGMkJDQiAvKiBKU0FsbFZpZGVvQ2FwYWJp
bGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQWxsVmlk
ZW9DYXBhYmlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwNzA1ODUw
MTE3RkExMEQwMDA1RjJCQ0IgLyogSlNBbGxWaWRlb0NhcGFiaWxpdGllcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3MDU4NTA1MTdGQTQ2ODkwMDVGMkJDQiAvKiBBbGxBdWRp
b0NhcGFiaWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbGxBdWRp
b0NhcGFiaWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwNzA1ODUwNjE3
RkE0Njg5MDA1RjJCQ0IgLyogQWxsQXVkaW9DYXBhYmlsaXRpZXMuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IEFsbEF1ZGlvQ2FwYWJpbGl0aWVzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMDcwNTg1MEExN0ZBNDgyNzAwNUYyQkNCIC8qIE1lZGlhU3RyZWFtQ2FwYWJpbGl0
aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU3RyZWFtQ2FwYWJp
bGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3MDU4NTBFMTdGQTZGQjEw
MDVGMkJDQiAvKiBNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkwNzA1ODUxMDE3RkE3MTA3MDA1RjJCQ0IgLyogSlNNZWRpYVN0cmVhbUNhcGFiaWxp
dGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhU3Ry
ZWFtQ2FwYWJpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDcwNTg1
MTExN0ZBNzEwNzAwNUYyQkNCIC8qIEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwNzA1ODUxNDE3RkIwRTJDMDA1RjJCQ0IgLyog
TWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkwNzA1ODUxNjE3RkI0MEU5MDA1RjJCQ0IgLyogSlNNZWRpYVN0cmVhbUNhcGFi
aWxpdGllc0N1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMDcwNTg1MTgxN0ZCNDRCNDAwNUYyQkNCIC8qIEpTQWxsQXVkaW9DYXBhYmlsaXRp
ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBbGxBdWRpb0Nh
cGFiaWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3MDU4NTE5MTdG
QjQ0QjQwMDVGMkJDQiAvKiBKU0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTQWxsQXVkaW9DYXBhYmlsaXRpZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDcwNTg1MUMxN0ZEQjIzQzAwNUYyQkNCIC8qIE1lZGlhVHJhY2tD
b25zdHJhaW50cy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFUcmFja0NvbnN0cmFpbnRzLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwNTg1MUQxN0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJh
Y2tDb25zdHJhaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhVHJh
Y2tDb25zdHJhaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MDU4NTFFMTdG
REMxNDAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludC5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gTWVkaWFUcmFja0NvbnN0cmFpbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNzUwNyw5ICs3NDc5LDYgQEAKIAkJMDczNzk0RjgxOUY1ODY0RTAwRTVBMDQ1IC8q
IFJUQ05vdGlmaWVyc01vY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRD
Tm90aWZpZXJzTW9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzM5NEVDNzFC
QUIyQ0NEMDBCRTk5Q0QgLyogTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYURldmljZXNSZXF1ZXN0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDczOTRFQzkxQkFCMkNENzAwQkU5OUNEIC8qIE1lZGlhRGV2
aWNlc1JlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFEZXZp
Y2VzUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwNzNBQjRCMDE3RjhC
QUNBMDA2RTBENkYgLyogQWxsVmlkZW9DYXBhYmlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQWxsVmlkZW9DYXBhYmlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMDczQUI0QjUxN0Y5MkVDRjAwNkUwRDZGIC8qIEpTQ2FwYWJpbGl0eVJhbmdl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ2FwYWJpbGl0eVJh
bmdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDczQUI0QjYxN0Y5MkVDRjAw
NkUwRDZGIC8qIEpTQ2FwYWJpbGl0eVJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTQ2FwYWJpbGl0eVJhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA3M0JFMzNFMTdEMTdFMDEwMDJCRDQzMSAvKiBKU05hdmlnYXRvclVzZXJNZWRpYS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05hdmlnYXRvclVzZXJNZWRpYS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3M0JFMzNGMTdEMTdFMDEwMDJCRDQz
MSAvKiBKU05hdmlnYXRvclVzZXJNZWRpYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU05hdmlnYXRvclVzZXJNZWRpYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwNzNCRTM0MjE3RDE3RTdBMDAyQkQ0MzEgLyogSlNOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05hdmlnYXRvclVzZXJN
ZWRpYUVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc2MTgsOSArNzU4
Nyw2IEBACiAJCTA3QzU5QjY1MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVNldHRpbmdz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU291cmNlU2V0
dGluZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0M1OUI2NjE3Rjc4NEJB
MDAwRkJDQkIgLyogTWVkaWFTb3VyY2VTZXR0aW5ncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNZWRpYVNvdXJjZVNldHRpbmdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA3QzU5QjZEMTdGNzk0RjYwMDBGQkNCQiAvKiBKU01lZGlhU3RyZWFtVHJhY2tDdXN0
b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYVN0cmVh
bVRyYWNrQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDdDNTlCNzMx
N0Y3RDA5RDAwMEZCQ0JCIC8qIEFsbFZpZGVvQ2FwYWJpbGl0aWVzLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBBbGxWaWRlb0NhcGFiaWxpdGllcy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTA3QzU5Qjc0MTdGN0QwOUQwMDBGQkNCQiAvKiBDYXBhYmlsaXR5UmFuZ2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FwYWJpbGl0eVJhbmdlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3QzU5Qjc1MTdGN0QwOUQwMDBGQkNCQiAvKiBDYXBh
YmlsaXR5UmFuZ2UuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENhcGFiaWxpdHlSYW5nZS5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3Q0ExMjBEMTgyRDY3RDgwMEQxMjE5
NyAvKiBKU1JUQ1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTUlRDUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwN0NFNzdENDE2NzEyQTZBMDBDNTVBNDcgLyogSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA3RDA3QjEzMTgzNDE1ODgwMEFCREQzQyAvKiBKU1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkN1
c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JUQ1Nlc3Np
b25EZXNjcmlwdGlvbkN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
NTE0MywxMyArMTUxMDksNiBAQAogCQkwNzIyMUI0NjE3Q0VDMzI3MDA4NDhFNTEgLyogbWVkaWFz
dHJlYW0gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTA3
MDU4NTA1MTdGQTQ2ODkwMDVGMkJDQiAvKiBBbGxBdWRpb0NhcGFiaWxpdGllcy5oICovLAotCQkJ
CTA3MDU4NTA2MTdGQTQ2ODkwMDVGMkJDQiAvKiBBbGxBdWRpb0NhcGFiaWxpdGllcy5pZGwgKi8s
Ci0JCQkJMDczQUI0QjAxN0Y4QkFDQTAwNkUwRDZGIC8qIEFsbFZpZGVvQ2FwYWJpbGl0aWVzLmgg
Ki8sCi0JCQkJMDdDNTlCNzMxN0Y3RDA5RDAwMEZCQ0JCIC8qIEFsbFZpZGVvQ2FwYWJpbGl0aWVz
LmlkbCAqLywKLQkJCQkwNzA1ODRGRTE3RjlGMDVFMDA1RjJCQ0IgLyogQ2FwYWJpbGl0eVJhbmdl
LmNwcCAqLywKLQkJCQkwN0M1OUI3NDE3RjdEMDlEMDAwRkJDQkIgLyogQ2FwYWJpbGl0eVJhbmdl
LmggKi8sCi0JCQkJMDdDNTlCNzUxN0Y3RDA5RDAwMEZCQ0JCIC8qIENhcGFiaWxpdHlSYW5nZS5p
ZGwgKi8sCiAJCQkJMkUzQzhDNjExQkZCQThEQzAwMzA5NTY2IC8qIENhcHR1cmVEZXZpY2VNYW5h
Z2VyLmggKi8sCiAJCQkJMkUzQzhDNjMxQkZCQjc1RDAwMzA5NTY2IC8qIENhcHR1cmVEZXZpY2VN
YW5hZ2VyLmNwcCAqLywKIAkJCQkyRTNDOEM2NjFCRkJGOEUxMDAzMDk1NjYgLyogQ2FwdHVyZURl
dmljZUluZm8uaCAqLywKQEAgLTE1MTc3LDkgKzE1MTM2LDYgQEAKIAkJCQkwNzIyMUI0QzE3Q0VD
MzI3MDA4NDhFNTEgLyogTWVkaWFTdHJlYW0uY3BwICovLAogCQkJCTA3MjIxQjREMTdDRUMzMjcw
MDg0OEU1MSAvKiBNZWRpYVN0cmVhbS5oICovLAogCQkJCTA3MjIxQjRFMTdDRUMzMjcwMDg0OEU1
MSAvKiBNZWRpYVN0cmVhbS5pZGwgKi8sCi0JCQkJMDcwNTg1MTQxN0ZCMEUyQzAwNUYyQkNCIC8q
IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmNwcCAqLywKLQkJCQkwNzA1ODUwQTE3RkE0ODI3MDA1
RjJCQ0IgLyogTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaCAqLywKLQkJCQkwNzA1ODUwRTE3RkE2
RkIxMDA1RjJCQ0IgLyogTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaWRsICovLAogCQkJCTA3MjIx
QjRGMTdDRUMzMjcwMDg0OEU1MSAvKiBNZWRpYVN0cmVhbUV2ZW50LmNwcCAqLywKIAkJCQkwNzIy
MUI1MDE3Q0VDMzI3MDA4NDhFNTEgLyogTWVkaWFTdHJlYW1FdmVudC5oICovLAogCQkJCTA3MjIx
QjUxMTdDRUMzMjcwMDg0OEU1MSAvKiBNZWRpYVN0cmVhbUV2ZW50LmlkbCAqLywKQEAgLTE1Mzk4
LDggKzE1MzU0LDYgQEAKIAkJCQkwNzI3N0U0MTE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0
cmVhbS5oICovLAogCQkJCTA3Mjc3RTQyMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFt
QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwICovLAogCQkJCTA3Mjc3RTQzMTdEMDE4Q0MwMDE1NTM0
RCAvKiBKU01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCAqLywKLQkJCQkwNzA1ODUx
MDE3RkE3MTA3MDA1RjJCQ0IgLyogSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5jcHAgKi8sCi0J
CQkJMDcwNTg1MTExN0ZBNzEwNzAwNUYyQkNCIC8qIEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMu
aCAqLywKIAkJCQkwNzI3N0U0NDE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbUV2ZW50
LmNwcCAqLywKIAkJCQkwNzI3N0U0NTE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbUV2
ZW50LmggKi8sCiAJCQkJMDcyNzdFNDYxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW1U
cmFjay5jcHAgKi8sCkBAIC0yMjE3NSw3ICsyMjEyOSw2IEBACiAJCQkJQUQ3MjZGRTcxNkQ5RjIw
NDAwM0E0RTZEIC8qIEpTTWVkaWFMaXN0Q3VzdG9tLmggKi8sCiAJCQkJMDc3QjY0MEUxQjhGNTM3
NTAwM0U5QUQ1IC8qIEpTTWVkaWFTZXNzaW9uQ3VzdG9tLmNwcCAqLywKIAkJCQkwN0M1OUI2RDE3
Rjc5NEY2MDAwRkJDQkIgLyogSlNNZWRpYVN0cmVhbVRyYWNrQ3VzdG9tLmNwcCAqLywKLQkJCQkw
NzA1ODUxNjE3RkI0MEU5MDA1RjJCQ0IgLyogSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllc0N1c3Rv
bS5jcHAgKi8sCiAJCQkJRTFBNUY5OUEwRTdFQUEyNTAwQUY4NUVBIC8qIEpTTWVzc2FnZUNoYW5u
ZWxDdXN0b20uY3BwICovLAogCQkJCTA3QzFDMEU2MUJGQjkwQTcwMEJEMjI1NiAvKiBKU01lZGlh
VHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50c0N1c3RvbS5jcHAgKi8sCiAJCQkJNDEwQjdFNzExMDQ1
RkFCMDAwRDgyMjRGIC8qIEpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCAqLywKQEAgLTIyNzYxLDEy
ICsyMjcxNCw2IEBACiAJCUNENjFGRTdCMTc5NENBMDIwMDQxMDFFQiAvKiBNZWRpYVNvdXJjZSAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMDcwNTg1MTgx
N0ZCNDRCNDAwNUYyQkNCIC8qIEpTQWxsQXVkaW9DYXBhYmlsaXRpZXMuY3BwICovLAotCQkJCTA3
MDU4NTE5MTdGQjQ0QjQwMDVGMkJDQiAvKiBKU0FsbEF1ZGlvQ2FwYWJpbGl0aWVzLmggKi8sCi0J
CQkJMDcwNTg1MDAxN0ZBMTBEMDAwNUYyQkNCIC8qIEpTQWxsVmlkZW9DYXBhYmlsaXRpZXMuY3Bw
ICovLAotCQkJCTA3MDU4NTAxMTdGQTEwRDAwMDVGMkJDQiAvKiBKU0FsbFZpZGVvQ2FwYWJpbGl0
aWVzLmggKi8sCi0JCQkJMDczQUI0QjUxN0Y5MkVDRjAwNkUwRDZGIC8qIEpTQ2FwYWJpbGl0eVJh
bmdlLmNwcCAqLywKLQkJCQkwNzNBQjRCNjE3RjkyRUNGMDA2RTBENkYgLyogSlNDYXBhYmlsaXR5
UmFuZ2UuaCAqLywKIAkJCQlDRDlERTE3MjE3QUFDNzRDMDBFQTM4NkQgLyogSlNNZWRpYVNvdXJj
ZS5jcHAgKi8sCiAJCQkJQ0Q5REUxNzMxN0FBQzc0QzAwRUEzODZEIC8qIEpTTWVkaWFTb3VyY2Uu
aCAqLywKIAkJCQlDRDlERTE3NjE3QUFDNzVCMDBFQTM4NkQgLyogSlNTb3VyY2VCdWZmZXIuY3Bw
ICovLApAQCAtMjQ2MjMsOSArMjQ1NzAsNyBAQAogCQkJCUUxQzRERTY5MEVBNzVDMUUwMDIzQ0NE
NiAvKiBBY3RpdmVET01PYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRjdFNDkxMTM3Q0Q3
QzcwMDFEREFFNyAvKiBBZGp1c3RWaWV3U2l6ZU9yTm90LmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NEQwQzQwNjExMTVGMUVBMDAxOEFBMzQgLyogQWZmaW5lVHJhbnNmb3JtLmggaW4gSGVhZGVycyAq
LywKLQkJCQkwNzA1ODUwODE3RkE0Njg5MDA1RjJCQ0IgLyogQWxsQXVkaW9DYXBhYmlsaXRpZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTk5Q0MwQjREMThCRTk4NDkwMDZDRUJDQyAvKiBBbGxSZXBs
YXlJbnB1dHMuaCBpbiBIZWFkZXJzICovLAotCQkJCTA3M0FCNEIzMTdGOEJBQ0EwMDZFMEQ2RiAv
KiBBbGxWaWRlb0NhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VEQTEyRDcxNTJD
QTFDQjAwRDlFMDhEIC8qIEFsdGVybmF0aXZlVGV4dENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQ0UwOEMzRDIxNTJCNTk5QTAwMjFCOEMyIC8qIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUNFN0IyREIzMTU4NkFCQUQwMDk4QjNGQSAvKiBBbHRlcm5h
dGl2ZVRleHRVSUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjQ4MTMsNyArMjQ3NTgs
NiBAQAogCQkJCTQ5QzdCOUREMTA0MkQzMkYwMDA5RDQ0NyAvKiBDYW52YXNSZW5kZXJpbmdDb250
ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTQ4NEZDQjEwMkNGMjNDMDAxODdERDMgLyogQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTQ4NEZDRTEwMkNG
MjNDMDAxODdERDMgLyogQ2FudmFzU3R5bGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTA3QzU5Qjc2
MTdGN0QwREIwMDBGQkNCQiAvKiBDYXBhYmlsaXR5UmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTA3OUQwODY4MTYyRjIwRTgwMERCODY1OCAvKiBDYXB0aW9uVXNlclByZWZlcmVuY2VzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwNzlEMDg2QjE2MkYyMUY5MDBEQjg2NTggLyogQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlc01lZGlhQUYuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5Q0MwQjRGMThCRTk4NDkw
MDZDRUJDQyAvKiBDYXB0dXJpbmdJbnB1dEN1cnNvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjA0
OCw4ICsyNTk5Miw2IEBACiAJCQkJNDRFRkY2NDMxQTZGRjkyNzAwRDQ1RUVDIC8qIElPVHlwZXNT
UEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3QUM0NzAyMTk1MjEwMjEwMEVFOTcyMyAvKiBJU09W
VFRDdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOEY4ODA1MEZGOTU3QUYwMDgwRjA0NSAvKiBK
U0Fic3RyYWN0V29ya2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQkwNzA1ODUxQjE3RkI0NEI0MDA1
RjJCQ0IgLyogSlNBbGxBdWRpb0NhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDcw
NTg1MDMxN0ZBMTBEMDAwNUYyQkNCIC8qIEpTQWxsVmlkZW9DYXBhYmlsaXRpZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZEQTE1RUNBMTJCMDNGNTAwMDNBNTgzQSAvKiBKU0FuYWx5c2VyTm9kZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMzE5ODQ4MEMxQTFFNkNFODAwQTEzMzE4IC8qIEpTQW5pbWF0
aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1REYzMURCMDlEMUMxMjMwMDBCRTMyNSAv
KiBKU0F0dHIuaCBpbiBIZWFkZXJzICovLApAQCAtMjYwNzcsNyArMjYwMTksNiBAQAogCQkJCTY1
REYzMjNDMDlEMURFNjUwMDFCRTMyNSAvKiBKU0NhbnZhc1Byb3h5LmggaW4gSGVhZGVycyAqLywK
IAkJCQk0OUVFRDE0MzEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUVFRDE0NTEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBpbiBIZWFkZXJzICovLAotCQkJCTA3M0FCNEI4MTdGOTJF
Q0YwMDZFMEQ2RiAvKiBKU0NhcGFiaWxpdHlSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNG
OUI3QTEwQkE2MDMyNjAwODU0MDY0IC8qIEpTQ0RBVEFTZWN0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGREExNUVBMjEyQjAzRUUxMDAzQTU4M0EgLyogSlNDaGFubmVsTWVyZ2VyTm9kZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkRBMTVFQTQxMkIwM0VFMTAwM0E1ODNBIC8qIEpTQ2hhbm5lbFNw
bGl0dGVyTm9kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjMwMCw3ICsyNjI0MSw2IEBACiAJCQkJ
MDcyNzdFNEQxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW0uaCBpbiBIZWFkZXJzICov
LAogCQkJCTA3Mjc3RTRGMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtQXVkaW9EZXN0
aW5hdGlvbk5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEQkQ0ODBEMTU5QkM2ODcwMDkzRUI0
RiAvKiBKU01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmggaW4gSGVhZGVycyAqLywKLQkJCQkw
NzA1ODUxMzE3RkE3MTA3MDA1RjJCQ0IgLyogSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMDcyNzdFNTExN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJl
YW1FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcyNzdFNTMxN0QwMThDQzAwMTU1MzREIC8q
IEpTTWVkaWFTdHJlYW1UcmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcyNzdFNTUxN0QwMThD
QzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW1UcmFja0V2ZW50LmggaW4gSGVhZGVycyAqLywKQEAg
LTI2NzkyLDcgKzI2NzMyLDYgQEAKIAkJCQkwNzhFMDk0QzE3RDE3MDk2MDA0MjBBQTEgLyogTWVk
aWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc4MzIy
ODUxODAxM0VEODAwOTk5RTBDIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZENjcxQTc4MTU5QkIwNzAwMDE5NzU1OSAvKiBNZWRpYVN0cmVhbUF1ZGlvU291
cmNlTm9kZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDcwNTg1MEIxN0ZBNDgyNzAwNUYyQkNCIC8q
IE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzBGNTQ5ODE3
RjEyRjZCMDAxNjlFMDQgLyogTWVkaWFTdHJlYW1Db25zdHJhaW50c1ZhbGlkYXRpb25DbGllbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTM5MTdEMTZCMkMwMDQyMEFBMSAvKiBNZWRpYVN0
cmVhbUNyZWF0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzhFMDkxNjE3RDE0RDFD
MDA0MjBBQTEgLyogTWVkaWFTdHJlYW1FdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODcxNSw3
ICsyODY1NCw2IEBACiAJCQkJNDlDN0I5REMxMDQyRDMyRjAwMDlENDQ3IC8qIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDk0ODRGQ0ExMDJDRjIzQzAwMTg3
REQzIC8qIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0
OTQ4NEZDRDEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzU3R5bGUuY3BwIGluIFNvdXJjZXMgKi8s
Ci0JCQkJMDcwNTg0RkYxN0Y5RjA1RTAwNUYyQkNCIC8qIENhcGFiaWxpdHlSYW5nZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwNzJDQTg2MTE2Q0I0REMzMDA4QUUxMzEgLyogQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzlEMDg2QzE2MkYyMUY5MDBEQjg2
NTggLyogQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTlDQzBCNEUxOEJFOTg0OTAwNkNFQkNDIC8qIENhcHR1cmluZ0lucHV0Q3Vyc29yLmNwcCBp
biBTb3VyY2VzICovLApAQCAtMjk2NTcsOCArMjk1OTUsNiBAQAogCQkJCUFEOUZGNkUxMTkwODM5
MUQwMDNCNjFFMCAvKiBJT1N1cmZhY2VQb29sQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQkw
N0FDNDcwMTE5NTIxMDIxMDBFRTk3MjMgLyogSVNPVlRUQ3VlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTQxOEY4ODA0MEZGOTU3QUUwMDgwRjA0NSAvKiBKU0Fic3RyYWN0V29ya2VyLmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCTA3MDU4NTFBMTdGQjQ0QjQwMDVGMkJDQiAvKiBKU0FsbEF1ZGlvQ2Fw
YWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTA3MDU4NTAyMTdGQTEwRDAwMDVGMkJD
QiAvKiBKU0FsbFZpZGVvQ2FwYWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEQTE1
RUM5MTJCMDNGNTAwMDNBNTgzQSAvKiBKU0FuYWx5c2VyTm9kZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkzMUE3OTVDNjE4ODhCQURDMDAzODJGOTAgLyogSlNBTkdMRUluc3RhbmNlZEFycmF5cy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTk4NDgwQjFBMUU2Q0U0MDBBMTMzMTggLyogSlNBbmlt
YXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5Njk1LDcgKzI5NjMxLDYgQEAKIAkJ
CQk0OUVFRDE0NDEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFRUQxNEUxMDUxOTcxQTAwMDk5RkFCIC8qIEpTQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RUVE
MTUwMTA1MTk3MUEwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJMDczQUI0QjcxN0Y5MkVDRjAwNkUwRDZGIC8qIEpTQ2FwYWJp
bGl0eVJhbmdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzRjlCN0EwMEJBNjAzMjYwMDg1NDA2
NCAvKiBKU0NEQVRBU2VjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGREExNUVBMTEyQjAz
RUUxMDAzQTU4M0EgLyogSlNDaGFubmVsTWVyZ2VyTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlGREExNUVBMzEyQjAzRUUxMDAzQTU4M0EgLyogSlNDaGFubmVsU3BsaXR0ZXJOb2RlLmNwcCBp
biBTb3VyY2VzICovLApAQCAtMjk5ODUsOCArMjk5MjAsNiBAQAogCQkJCTA3Mjc3RTRDMTdEMDE4
Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3Mjc3
RTRFMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkRCRDQ4MEMxNTlCQzY4NzAwOTNFQjRGIC8qIEpTTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMDcwNTg1MTIx
N0ZBNzEwNzAwNUYyQkNCIC8qIEpTTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJMDcwNTg1MTcxN0ZCNDBFOTAwNUYyQkNCIC8qIEpTTWVkaWFTdHJlYW1DYXBh
YmlsaXRpZXNDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcyNzdFNTAxN0QwMThDQzAw
MTU1MzREIC8qIEpTTWVkaWFTdHJlYW1FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzI3
N0U1MjE3RDAxOENDMDAxNTUzNEQgLyogSlNNZWRpYVN0cmVhbVRyYWNrLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTA3Mjc3RTU0MTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtVHJhY2tF
dmVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwNTAwLDcgKzMwNDMzLDYgQEAKIAkJCQkwNzhF
MDk0QjE3RDE3MDk2MDA0MjBBQTEgLyogTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzgzMjI4NDE4MDEzRUQ4MDA5OTlFMEMgLyogTWVkaWFT
dHJlYW1BdWRpb1NvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDY3MUE3NzE1OUJCMDcw
MDAxOTc1NTkgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwIGluIFNvdXJjZXMgKi8s
Ci0JCQkJMDcwNTg1MTUxN0ZCMEVFQTAwNUYyQkNCIC8qIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3OEUwOTAwMTdEMTRDRUUwMDQyMEFBMSAvKiBNZWRp
YVN0cmVhbUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3MTE1ODkxMTdERjZGNjYwMEVE
RkUyQiAvKiBNZWRpYVN0cmVhbVByaXZhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc4RTA5
MDExN0QxNENFRTAwNDIwQUExIC8qIE1lZGlhU3RyZWFtUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMg
Ki8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtVHJhY2tD
dXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVk
aWFTdHJlYW1UcmFja0N1c3RvbS5jcHAJKHJldmlzaW9uIDE5Mjk1NCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTdHJlYW1UcmFja0N1c3RvbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVk
ZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFTb3VyY2VTZXR0aW5ncy5oIgorI2lu
Y2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2suaCIKICNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0Lmg+
CiAjaW5jbHVkZSA8cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgogCkBAIC03NSw2ICs3Niw4
NiBAQCBKU0M6OkpTVmFsdWUgSlNNZWRpYVN0cmVhbVRyYWNrOjpnZXRTZXR0CiAgICAgcmV0dXJu
IG9iamVjdDsKIH0KIAorc3RhdGljIEpTVmFsdWUgY2FwYWJpbGl0eVZhbHVlKGNvbnN0IENhcGFi
aWxpdHlWYWx1ZU9yUmFuZ2UmIHZhbHVlLCBFeGVjU3RhdGUmIHN0YXRlKQoreworICAgIGlmICh2
YWx1ZS50eXBlKCkgPT0gQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6RG91YmxlUmFuZ2UgfHwgdmFs
dWUudHlwZSgpID09IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OlVMb25nUmFuZ2UpIHsKKyAgICAg
ICAgSlNPYmplY3QqIG9iamVjdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KCZzdGF0ZSk7CisKKyAg
ICAgICAgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6VmFsdWVVbmlvbiBtaW4gPSB2YWx1ZS5yYW5n
ZU1pbigpOworICAgICAgICBDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpWYWx1ZVVuaW9uIG1heCA9
IHZhbHVlLnJhbmdlTWF4KCk7CisgICAgICAgIGlmICh2YWx1ZS50eXBlKCkgPT0gQ2FwYWJpbGl0
eVZhbHVlT3JSYW5nZTo6RG91YmxlUmFuZ2UpIHsKKyAgICAgICAgICAgIG9iamVjdC0+cHV0RGly
ZWN0KHN0YXRlLnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAibWluIiksIGpz
TnVtYmVyKG1pbi5hc0RvdWJsZSkpOworICAgICAgICAgICAgb2JqZWN0LT5wdXREaXJlY3Qoc3Rh
dGUudm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJtYXgiKSwganNOdW1iZXIo
bWF4LmFzRG91YmxlKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBvYmplY3QtPnB1
dERpcmVjdChzdGF0ZS52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgIm1pbiIp
LCBqc051bWJlcihtaW4uYXNVTG9uZykpOworICAgICAgICAgICAgb2JqZWN0LT5wdXREaXJlY3Qo
c3RhdGUudm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJtYXgiKSwganNOdW1i
ZXIobWF4LmFzVUxvbmcpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBvYmplY3Q7Cisg
ICAgfQorCisgICAgaWYgKHZhbHVlLnR5cGUoKSA9PSBDYXBhYmlsaXR5VmFsdWVPclJhbmdlOjpE
b3VibGUpCisgICAgICAgIHJldHVybiBqc051bWJlcih2YWx1ZS52YWx1ZSgpLmFzRG91YmxlKTsK
KworICAgIHJldHVybiBqc051bWJlcih2YWx1ZS52YWx1ZSgpLmFzVUxvbmcpOworfQorCitKU0M6
OkpTVmFsdWUgSlNNZWRpYVN0cmVhbVRyYWNrOjpnZXRDYXBhYmlsaXRpZXMoRXhlY1N0YXRlJiBz
dGF0ZSkKK3sKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLnRoaXNWYWx1ZSgpOworICAg
IEpTTWVkaWFTdHJlYW1UcmFjayogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNNZWRpYVN0
cmVhbVRyYWNrKj4odGhpc1ZhbHVlKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93VGhpc1R5cGVFcnJvcihzdGF0ZSwg
Ik1lZGlhU3RyZWFtVHJhY2siLCAiZ2V0U2V0dGluZ3MiKSk7CisKKyAgICBKU09iamVjdCogb2Jq
ZWN0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoJnN0YXRlKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOworICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJp
bGl0aWVzPiBjYXBhYmlsaXRpZXMgPSBXVEY6OmdldFB0cihpbXBsLmdldENhcGFiaWxpdGllcygp
KTsKKworICAgIGlmIChjYXBhYmlsaXRpZXMtPnN1cHBvcnRzV2lkdGgoKSkKKyAgICAgICAgb2Jq
ZWN0LT5wdXREaXJlY3Qoc3RhdGUudm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUs
ICJ3aWR0aCIpLCBjYXBhYmlsaXR5VmFsdWUoY2FwYWJpbGl0aWVzLT53aWR0aCgpLCBzdGF0ZSks
IERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgaWYgKGNhcGFiaWxpdGllcy0+c3VwcG9ydHNI
ZWlnaHQoKSkKKyAgICAgICAgb2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUudm0oKSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmc3RhdGUsICJoZWlnaHQiKSwgY2FwYWJpbGl0eVZhbHVlKGNhcGFiaWxp
dGllcy0+aGVpZ2h0KCksIHN0YXRlKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICBpZiAo
Y2FwYWJpbGl0aWVzLT5zdXBwb3J0c0FzcGVjdFJhdGlvKCkpCisgICAgICAgIG9iamVjdC0+cHV0
RGlyZWN0KHN0YXRlLnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiYXNwZWN0
UmF0aW8iKSwgY2FwYWJpbGl0eVZhbHVlKGNhcGFiaWxpdGllcy0+YXNwZWN0UmF0aW8oKSwgc3Rh
dGUpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIGlmIChjYXBhYmlsaXRpZXMtPnN1cHBv
cnRzRnJhbWVSYXRlKCkpCisgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLnZtKCksIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiZnJhbWVSYXRlIiksIGNhcGFiaWxpdHlWYWx1
ZShjYXBhYmlsaXRpZXMtPmZyYW1lUmF0ZSgpLCBzdGF0ZSksIERvbnREZWxldGUgfCBSZWFkT25s
eSk7CisgICAgaWYgKGNhcGFiaWxpdGllcy0+c3VwcG9ydHNGYWNpbmdNb2RlKCkpIHsKKyAgICAg
ICAgY29uc3QgVmVjdG9yPFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdN
b2RlPiYgbW9kZXMgPSBjYXBhYmlsaXRpZXMtPmZhY2luZ01vZGUoKTsKKyAgICAgICAgVmVjdG9y
PFN0cmluZz4gZmFjaW5nTW9kZXM7CisgICAgICAgIGlmIChtb2Rlcy5zaXplKCkpIHsKKworICAg
ICAgICAgICAgZmFjaW5nTW9kZXMucmVzZXJ2ZUNhcGFjaXR5KG1vZGVzLnNpemUoKSk7CisKKyAg
ICAgICAgICAgIGZvciAoYXV0byYgbW9kZSA6IG1vZGVzKQorICAgICAgICAgICAgICAgIGZhY2lu
Z01vZGVzLmFwcGVuZChSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OmZhY2luZ01vZGUobW9k
ZSkpOworICAgICAgICB9CisKKyAgICAgICAgb2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUudm0oKSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJmYWNpbmdNb2RlIiksIGpzQXJyYXkoJnN0
YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgZmFjaW5nTW9kZXMpLCBEb250RGVsZXRl
IHwgUmVhZE9ubHkpOworICAgIH0KKyAgICBpZiAoY2FwYWJpbGl0aWVzLT5zdXBwb3J0c1ZvbHVt
ZSgpKQorICAgICAgICBvYmplY3QtPnB1dERpcmVjdChzdGF0ZS52bSgpLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZzdGF0ZSwgInZvbHVtZSIpLCBjYXBhYmlsaXR5VmFsdWUoY2FwYWJpbGl0aWVz
LT52b2x1bWUoKSwgc3RhdGUpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIGlmIChjYXBh
YmlsaXRpZXMtPnN1cHBvcnRzU2FtcGxlUmF0ZSgpKQorICAgICAgICBvYmplY3QtPnB1dERpcmVj
dChzdGF0ZS52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgInNhbXBsZVJhdGUi
KSwgY2FwYWJpbGl0eVZhbHVlKGNhcGFiaWxpdGllcy0+c2FtcGxlUmF0ZSgpLCBzdGF0ZSksIERv
bnREZWxldGUgfCBSZWFkT25seSk7CisgICAgaWYgKGNhcGFiaWxpdGllcy0+c3VwcG9ydHNTYW1w
bGVTaXplKCkpCisgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLnZtKCksIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAic2FtcGxlU2l6ZSIpLCBjYXBhYmlsaXR5VmFsdWUoY2Fw
YWJpbGl0aWVzLT5zYW1wbGVTaXplKCksIHN0YXRlKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsK
KyAgICBpZiAoY2FwYWJpbGl0aWVzLT5zdXBwb3J0c0VjaG9DYW5jZWxsYXRpb24oKSkgeworICAg
ICAgICBWZWN0b3I8U3RyaW5nPiBjYW5jZWxsYXRpb247CisgICAgICAgIGNhbmNlbGxhdGlvbi5y
ZXNlcnZlQ2FwYWNpdHkoMik7CisKKyAgICAgICAgY2FuY2VsbGF0aW9uLmFwcGVuZCgidHJ1ZSIp
OworICAgICAgICBjYW5jZWxsYXRpb24uYXBwZW5kKGNhcGFiaWxpdGllcy0+ZWNob0NhbmNlbGxh
dGlvbigpID09IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OkVjaG9DYW5jZWxsYXRp
b246OlJlYWRXcml0ZSA/ICJ0cnVlIiA6ICJmYWxzZSIpOworCisgICAgICAgIG9iamVjdC0+cHV0
RGlyZWN0KHN0YXRlLnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiZWNob0Nh
bmNlbGxhdGlvbiIpLCBqc0FycmF5KCZzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCks
IGNhbmNlbGxhdGlvbiksIERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgfQorICAgIGlmIChj
YXBhYmlsaXRpZXMtPnN1cHBvcnRzRGV2aWNlSWQoKSkKKyAgICAgICAgb2JqZWN0LT5wdXREaXJl
Y3Qoc3RhdGUudm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJkZXZpY2VJZCIp
LCBqc1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUsIGNhcGFiaWxpdGllcy0+ZGV2aWNlSWQoKSksIERv
bnREZWxldGUgfCBSZWFkT25seSk7CisgICAgaWYgKGNhcGFiaWxpdGllcy0+c3VwcG9ydHNHcm91
cElkKCkpCisgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLnZtKCksIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJnN0YXRlLCAiZ3JvdXBJZCIpLCBqc1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUs
IGNhcGFiaWxpdGllcy0+Z3JvdXBJZCgpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICAK
KworICAgIHJldHVybiBvYmplY3Q7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1l
ZGlhU291cmNlQ2FwYWJpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5oCShyZXZp
c2lvbiAxOTI5NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDEwMSAr
MzUsMTU0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgUmVhbHRpbWVNZWRpYVNv
dXJjZUNhcGFiaWxpdHlSYW5nZSB7CitjbGFzcyBDYXBhYmlsaXR5VmFsdWVPclJhbmdlIHsKIHB1
YmxpYzoKLSAgICAKLSAgICBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0eVJhbmdlKGZsb2F0
IG1pbiwgZmxvYXQgbWF4LCBib29sIHN1cHBvcnRlZCA9IHRydWUpCi0gICAgICAgIDogbV90eXBl
KEZsb2F0KQorCisgICAgZW51bSBUeXBlIHsKKyAgICAgICAgVW5kZWZpbmVkLAorICAgICAgICBE
b3VibGUsCisgICAgICAgIFVMb25nLAorICAgICAgICBEb3VibGVSYW5nZSwKKyAgICAgICAgVUxv
bmdSYW5nZSwKKyAgICB9OworICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsg
fQorCisgICAgdW5pb24gVmFsdWVVbmlvbiB7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgYXNVTG9u
ZzsKKyAgICAgICAgZG91YmxlIGFzRG91YmxlOworICAgIH07CisKKyAgICBDYXBhYmlsaXR5VmFs
dWVPclJhbmdlKCkKKyAgICAgICAgOiBtX3R5cGUoVW5kZWZpbmVkKQogICAgIHsKLSAgICAgICAg
bV9taW4uYXNGbG9hdCA9IG1pbjsKLSAgICAgICAgbV9tYXguYXNGbG9hdCA9IG1heDsKLSAgICAg
ICAgbV9zdXBwb3J0ZWQgPSBzdXBwb3J0ZWQ7CiAgICAgfQotICAgIAotICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2VDYXBhYmlsaXR5UmFuZ2UodW5zaWduZWQgbG9uZyBtaW4sIHVuc2lnbmVkIGxvbmcg
bWF4LCBib29sIHN1cHBvcnRlZCA9IHRydWUpCisKKyAgICBDYXBhYmlsaXR5VmFsdWVPclJhbmdl
KGRvdWJsZSB2YWx1ZSkKKyAgICAgICAgOiBtX3R5cGUoRG91YmxlKQorICAgIHsKKyAgICAgICAg
bV9taW5PclZhbHVlLmFzRG91YmxlID0gdmFsdWU7CisgICAgfQorCisgICAgQ2FwYWJpbGl0eVZh
bHVlT3JSYW5nZSh1bnNpZ25lZCBsb25nIHZhbHVlKQogICAgICAgICA6IG1fdHlwZShVTG9uZykK
ICAgICB7Ci0gICAgICAgIG1fbWluLmFzVUxvbmcgPSBtaW47Ci0gICAgICAgIG1fbWF4LmFzVUxv
bmcgPSBtYXg7Ci0gICAgICAgIG1fc3VwcG9ydGVkID0gc3VwcG9ydGVkOworICAgICAgICBtX21p
bk9yVmFsdWUuYXNVTG9uZyA9IHZhbHVlOwogICAgIH0KLSAgICAKLSAgICBSZWFsdGltZU1lZGlh
U291cmNlQ2FwYWJpbGl0eVJhbmdlKCkKKworICAgIENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoZG91
YmxlIG1pbiwgZG91YmxlIG1heCkKKyAgICAgICAgOiBtX3R5cGUoRG91YmxlUmFuZ2UpCiAgICAg
ewotICAgICAgICBtX3R5cGUgPSBVbmRlZmluZWQ7Ci0gICAgICAgIG1fbWluLmFzVUxvbmcgPSAw
OwotICAgICAgICBtX21heC5hc1VMb25nID0gMDsKLSAgICAgICAgbV9zdXBwb3J0ZWQgPSBmYWxz
ZTsKKyAgICAgICAgbV9taW5PclZhbHVlLmFzRG91YmxlID0gbWluOworICAgICAgICBtX21heC5h
c0RvdWJsZSA9IG1heDsKICAgICB9CiAgICAgCi0gICAgZW51bSBUeXBlIHsgVW5kZWZpbmVkLCBG
bG9hdCwgVUxvbmcgfTsKLSAgICAKLSAgICB1bmlvbiBWYWx1ZVVuaW9uIHsKLSAgICAgICAgdW5z
aWduZWQgbG9uZyBhc1VMb25nOwotICAgICAgICBmbG9hdCBhc0Zsb2F0OwotICAgIH07Ci0gICAg
Ci0gICAgY29uc3QgVmFsdWVVbmlvbiYgbWluKCkgY29uc3QgeyByZXR1cm4gbV9taW47IH0KLSAg
ICBjb25zdCBWYWx1ZVVuaW9uJiBtYXgoKSBjb25zdCB7IHJldHVybiBtX21heDsgfQotICAgIFR5
cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQotICAgIGJvb2wgc3VwcG9ydGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWQ7IH0KLSAgICAKKyAgICBDYXBhYmlsaXR5VmFsdWVP
clJhbmdlKHVuc2lnbmVkIGxvbmcgbWluLCB1bnNpZ25lZCBsb25nIG1heCkKKyAgICAgICAgOiBt
X3R5cGUoVUxvbmdSYW5nZSkKKyAgICB7CisgICAgICAgIG1fbWluT3JWYWx1ZS5hc1VMb25nID0g
bWluOworICAgICAgICBtX21heC5hc1VMb25nID0gbWF4OworICAgIH0KKworICAgIGNvbnN0IFZh
bHVlVW5pb24mIHJhbmdlTWluKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUg
PT0gRG91YmxlUmFuZ2UgfHwgbV90eXBlID09IFVMb25nUmFuZ2UpOworICAgICAgICByZXR1cm4g
bV9taW5PclZhbHVlOworICAgIH0KKworICAgIGNvbnN0IFZhbHVlVW5pb24mIHJhbmdlTWF4KCkg
Y29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gRG91YmxlUmFuZ2UgfHwgbV90
eXBlID09IFVMb25nUmFuZ2UpOworICAgICAgICByZXR1cm4gbV9tYXg7CisgICAgfQorCisgICAg
Y29uc3QgVmFsdWVVbmlvbiYgdmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1f
dHlwZSA9PSBEb3VibGUgfHwgbV90eXBlID09IFVMb25nKTsKKyAgICAgICAgcmV0dXJuIG1fbWlu
T3JWYWx1ZTsKKyAgICB9CisKIHByaXZhdGU6Ci0gICAgVmFsdWVVbmlvbiBtX21pbjsKKyAgICBW
YWx1ZVVuaW9uIG1fbWluT3JWYWx1ZTsKICAgICBWYWx1ZVVuaW9uIG1fbWF4OwogICAgIFR5cGUg
bV90eXBlOwotICAgIGJvb2wgbV9zdXBwb3J0ZWQ7CiB9OwogCiBjbGFzcyBSZWFsdGltZU1lZGlh
U291cmNlQ2FwYWJpbGl0aWVzIDogcHVibGljIFJlZkNvdW50ZWQ8UmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllcz4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlYWx0aW1l
TWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IGNyZWF0ZSgpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8
UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gY3JlYXRlKGNvbnN0IFJlYWx0aW1lTWVk
aWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMpCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmls
aXRpZXMoKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllcyhzdXBwb3J0ZWRDb25zdHJhaW50cykpOwogICAgIH0KIAogICAgIH5SZWFs
dGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzKCkgeyB9CiAKLSAgICBjb25zdCBWZWN0b3I8QXRv
bWljU3RyaW5nPiYgc291cmNlSWQoKSB7IHJldHVybiBtX3NvdXJjZUlkOyB9Ci0gICAgdm9pZCBz
ZXRTb3VyY2VJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSAgeyBtX3NvdXJjZUlkLnJlc2VydmVD
YXBhY2l0eSgxKTsgbV9zb3VyY2VJZC5pbnNlcnQoMCwgaWQpOyB9CisgICAgYm9vbCBzdXBwb3J0
c1dpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zdXBwb3J0c1dp
ZHRoKCk7IH0KKyAgICBjb25zdCBDYXBhYmlsaXR5VmFsdWVPclJhbmdlJiB3aWR0aCgpIHsgcmV0
dXJuIG1fd2lkdGg7IH0KKyAgICB2b2lkIHNldFdpZHRoKGNvbnN0IENhcGFiaWxpdHlWYWx1ZU9y
UmFuZ2UmIHdpZHRoKSB7IG1fd2lkdGggPSB3aWR0aDsgfQorCisgICAgYm9vbCBzdXBwb3J0c0hl
aWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc3VwcG9ydHNIZWln
aHQoKTsgfQorICAgIGNvbnN0IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UmIGhlaWdodCgpIHsgcmV0
dXJuIG1faGVpZ2h0OyB9CisgICAgdm9pZCBzZXRIZWlnaHQoY29uc3QgQ2FwYWJpbGl0eVZhbHVl
T3JSYW5nZSYgaGVpZ2h0KSB7IG1faGVpZ2h0ID0gaGVpZ2h0OyB9CisKKyAgICBib29sIHN1cHBv
cnRzRnJhbWVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zdXBw
b3J0c0ZyYW1lUmF0ZSgpOyB9CisgICAgY29uc3QgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSYgZnJh
bWVSYXRlKCkgeyByZXR1cm4gbV9mcmFtZVJhdGU7IH0KKyAgICB2b2lkIHNldEZyYW1lUmF0ZShj
b25zdCBDYXBhYmlsaXR5VmFsdWVPclJhbmdlJiBmcmFtZVJhdGUpIHsgbV9mcmFtZVJhdGUgPSBm
cmFtZVJhdGU7IH0KIAotICAgIGNvbnN0IFZlY3RvcjxSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3M6OlZpZGVvRmFjaW5nTW9kZT4mIGZhY2luZ01vZGVzKCkgeyByZXR1cm4gbV9mYWNpbmdNb2Rl
OyB9CisgICAgYm9vbCBzdXBwb3J0c0ZhY2luZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX3N1cHBv
cnRlZENvbnN0cmFpbnRzLnN1cHBvcnRzRmFjaW5nTW9kZSgpOyB9CisgICAgY29uc3QgVmVjdG9y
PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlPiYgZmFjaW5nTW9k
ZSgpIHsgcmV0dXJuIG1fZmFjaW5nTW9kZTsgfQogICAgIHZvaWQgYWRkRmFjaW5nTW9kZShSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSBtb2RlKSB7IG1fZmFjaW5n
TW9kZS5hcHBlbmQobW9kZSk7IH0KIAotICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBh
YmlsaXR5UmFuZ2UmIHdpZHRoKCkgeyByZXR1cm4gbV93aWR0aDsgfQotICAgIHZvaWQgc2V0V2lk
dGhSYW5nZShjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0eVJhbmdlJiB3aWR0aCkg
eyBtX3dpZHRoID0gd2lkdGg7IH0KLQotICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBh
YmlsaXR5UmFuZ2UmIGhlaWdodCgpIHsgcmV0dXJuIG1faGVpZ2h0OyB9Ci0gICAgdm9pZCBzZXRI
ZWlnaHRSYW5nZShjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0eVJhbmdlJiBoZWln
aHQpIHsgbV9oZWlnaHQgPSBoZWlnaHQ7IH0KLQotICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDYXBhYmlsaXR5UmFuZ2UmIGZyYW1lUmF0ZSgpIHsgcmV0dXJuIG1fZnJhbWVSYXRlOyB9Ci0g
ICAgdm9pZCBzZXRGcmFtZVJhdGVSYW5nZShjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJp
bGl0eVJhbmdlJiBmcmFtZVJhdGUpIHsgbV9mcmFtZVJhdGUgPSBmcmFtZVJhdGU7IH0KLQotICAg
IGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXR5UmFuZ2UmIGFzcGVjdFJhdGlvKCkg
eyByZXR1cm4gbV9hc3BlY3RSYXRpbzsgfQotICAgIHZvaWQgc2V0QXNwZWN0UmF0aW9SYW5nZShj
b25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0eVJhbmdlJiBhc3BlY3RSYXRpbykgeyBt
X2FzcGVjdFJhdGlvID0gYXNwZWN0UmF0aW87IH0KLQotICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFT
b3VyY2VDYXBhYmlsaXR5UmFuZ2UmIHZvbHVtZSgpIHsgcmV0dXJuIG1fdm9sdW1lOyB9Ci0gICAg
dm9pZCBzZXRWb2x1bWVSYW5nZShjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0eVJh
bmdlJiB2b2x1bWUpIHsgbV92b2x1bWUgPSB2b2x1bWU7IH0KLQotICAgIGJvb2wgaGFzVmlkZW9T
b3VyY2UoKSB7IHJldHVybiBtX3ZpZGVvU291cmNlOyB9Ci0gICAgdm9pZCBzZXRIYXNWaWRlb1Nv
dXJjZShib29sIGlzVmlkZW8pIHsgbV92aWRlb1NvdXJjZSA9IGlzVmlkZW87IH0KLQorICAgIGJv
b2wgc3VwcG9ydHNBc3BlY3RSYXRpbygpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkQ29uc3Ry
YWludHMuc3VwcG9ydHNBc3BlY3RSYXRpbygpOyB9CisgICAgY29uc3QgQ2FwYWJpbGl0eVZhbHVl
T3JSYW5nZSYgYXNwZWN0UmF0aW8oKSB7IHJldHVybiBtX2FzcGVjdFJhdGlvOyB9CisgICAgdm9p
ZCBzZXRBc3BlY3RSYXRpbyhjb25zdCBDYXBhYmlsaXR5VmFsdWVPclJhbmdlJiBhc3BlY3RSYXRp
bykgeyBtX2FzcGVjdFJhdGlvID0gYXNwZWN0UmF0aW87IH0KKworICAgIGJvb2wgc3VwcG9ydHNW
b2x1bWUoKSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBvcnRzVm9s
dW1lKCk7IH0KKyAgICBjb25zdCBDYXBhYmlsaXR5VmFsdWVPclJhbmdlJiB2b2x1bWUoKSB7IHJl
dHVybiBtX3ZvbHVtZTsgfQorICAgIHZvaWQgc2V0Vm9sdW1lKGNvbnN0IENhcGFiaWxpdHlWYWx1
ZU9yUmFuZ2UmIHZvbHVtZSkgeyBtX3ZvbHVtZSA9IHZvbHVtZTsgfQorCisgICAgYm9vbCBzdXBw
b3J0c1NhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnN1
cHBvcnRzU2FtcGxlUmF0ZSgpOyB9CisgICAgY29uc3QgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSYg
c2FtcGxlUmF0ZSgpIHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQorICAgIHZvaWQgc2V0U2FtcGxl
UmF0ZShjb25zdCBDYXBhYmlsaXR5VmFsdWVPclJhbmdlJiBzYW1wbGVSYXRlKSB7IG1fc2FtcGxl
UmF0ZSA9IHNhbXBsZVJhdGU7IH0KKworICAgIGJvb2wgc3VwcG9ydHNTYW1wbGVTaXplKCkgY29u
c3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zdXBwb3J0c1NhbXBsZVNpemUoKTsg
fQorICAgIGNvbnN0IENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UmIHNhbXBsZVNpemUoKSB7IHJldHVy
biBtX3NhbXBsZVNpemU7IH0KKyAgICB2b2lkIHNldFNhbXBsZVNpemUoY29uc3QgQ2FwYWJpbGl0
eVZhbHVlT3JSYW5nZSYgc2FtcGxlU2l6ZSkgeyBtX3NhbXBsZVNpemUgPSBzYW1wbGVTaXplOyB9
CisKKyAgICBlbnVtIGNsYXNzIEVjaG9DYW5jZWxsYXRpb24geworICAgICAgICBSZWFkT25seSA9
IDAsCisgICAgICAgIFJlYWRXcml0ZSA9IDEsCisgICAgfTsKKyAgICBib29sIHN1cHBvcnRzRWNo
b0NhbmNlbGxhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc3Vw
cG9ydHNFY2hvQ2FuY2VsbGF0aW9uKCk7IH0KKyAgICBFY2hvQ2FuY2VsbGF0aW9uIGVjaG9DYW5j
ZWxsYXRpb24oKSB7IHJldHVybiBtX2VjaG9DYW5jZWxsYXRpb247IH0KKyAgICB2b2lkIHNldEVj
aG9DYW5jZWxsYXRpb24oRWNob0NhbmNlbGxhdGlvbiBlY2hvQ2FuY2VsbGF0aW9uKSB7IG1fZWNo
b0NhbmNlbGxhdGlvbiA9IGVjaG9DYW5jZWxsYXRpb247IH0KKworICAgIGJvb2wgc3VwcG9ydHNE
ZXZpY2VJZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc3VwcG9ydHNE
ZXZpY2VJZCgpOyB9CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBkZXZpY2VJZCgpIHsgcmV0dXJu
IG1fZGV2aWNlSWQ7IH0KKyAgICB2b2lkIHNldERldmljZUlkKGNvbnN0IEF0b21pY1N0cmluZyYg
aWQpICB7IG1fZGV2aWNlSWQgPSBpZDsgfQorCisgICAgYm9vbCBzdXBwb3J0c0dyb3VwSWQoKSBj
b25zdCB7IHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBvcnRzR3JvdXBJZCgpOyB9
CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBncm91cElkKCkgeyByZXR1cm4gbV9ncm91cElkOyB9
CisgICAgdm9pZCBzZXRHcm91cElkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpICB7IG1fZ3JvdXBJ
ZCA9IGlkOyB9CisgICAgCiBwcml2YXRlOgotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmls
aXRpZXMoKQotICAgICAgICA6IG1fdmlkZW9Tb3VyY2UoZmFsc2UpCisgICAgUmVhbHRpbWVNZWRp
YVNvdXJjZUNhcGFiaWxpdGllcyhjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29u
c3RyYWludHMmIHN1cHBvcnRlZENvbnN0cmFpbnRzKQorICAgICAgICA6IG1fc3VwcG9ydGVkQ29u
c3RyYWludHMoc3VwcG9ydGVkQ29uc3RyYWludHMpCiAgICAgewogICAgIH0KIAotICAgIFZlY3Rv
cjxBdG9taWNTdHJpbmc+IG1fc291cmNlSWQ7CisgICAgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSBt
X3dpZHRoOworICAgIENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UgbV9oZWlnaHQ7CisgICAgQ2FwYWJp
bGl0eVZhbHVlT3JSYW5nZSBtX2FzcGVjdFJhdGlvOworICAgIENhcGFiaWxpdHlWYWx1ZU9yUmFu
Z2UgbV9mcmFtZVJhdGU7CiAgICAgVmVjdG9yPFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6
VmlkZW9GYWNpbmdNb2RlPiBtX2ZhY2luZ01vZGU7CisgICAgQ2FwYWJpbGl0eVZhbHVlT3JSYW5n
ZSBtX3ZvbHVtZTsKKyAgICBDYXBhYmlsaXR5VmFsdWVPclJhbmdlIG1fc2FtcGxlUmF0ZTsKKyAg
ICBDYXBhYmlsaXR5VmFsdWVPclJhbmdlIG1fc2FtcGxlU2l6ZTsKKyAgICBFY2hvQ2FuY2VsbGF0
aW9uIG1fZWNob0NhbmNlbGxhdGlvbjsKKyAgICBBdG9taWNTdHJpbmcgbV9kZXZpY2VJZDsKKyAg
ICBBdG9taWNTdHJpbmcgbV9ncm91cElkOwogCi0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFi
aWxpdHlSYW5nZSBtX3dpZHRoOwotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXR5UmFu
Z2UgbV9oZWlnaHQ7Ci0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdHlSYW5nZSBtX2Zy
YW1lUmF0ZTsKLSAgICBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0eVJhbmdlIG1fYXNwZWN0
UmF0aW87Ci0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdHlSYW5nZSBtX3ZvbHVtZTsK
LQotICAgIGJvb2wgbV92aWRlb1NvdXJjZTsKKyAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNl
U3VwcG9ydGVkQ29uc3RyYWludHMmIG1fc3VwcG9ydGVkQ29uc3RyYWludHM7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3Mu
aAkocmV2aXNpb24gMTkyOTU0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDgg
KzY3LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0RmFjaW5nTW9kZShWaWRlb0ZhY2luZ01vZGUg
ZmFjaW5nTW9kZSkgeyBtX2ZhY2luZ01vZGUgPSBmYWNpbmdNb2RlOyB9CiAKICAgICBib29sIHN1
cHBvcnRzVm9sdW1lKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zdXBw
b3J0c1ZvbHVtZSgpOyB9Ci0gICAgdW5zaWduZWQgbG9uZyB2b2x1bWUoKSBjb25zdCB7IHJldHVy
biBtX3ZvbHVtZTsgfQotICAgIHZvaWQgc2V0Vm9sdW1lKHVuc2lnbmVkIGxvbmcgdm9sdW1lKSB7
IG1fdm9sdW1lID0gdm9sdW1lOyB9CisgICAgZG91YmxlIHZvbHVtZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdm9sdW1lOyB9CisgICAgdm9pZCBzZXRWb2x1bWUoZG91YmxlIHZvbHVtZSkgeyBtX3ZvbHVt
ZSA9IHZvbHVtZTsgfQogCiAgICAgYm9vbCBzdXBwb3J0c1NhbXBsZVJhdGUoKSBjb25zdCB7IHJl
dHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBvcnRzU2FtcGxlUmF0ZSgpOyB9CiAgICAg
dW5zaWduZWQgbG9uZyBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9
CkBAIC05OCw3ICs5OCw3IEBAIHByaXZhdGU6CiAgICAgZmxvYXQgbV9hc3BlY3RSYXRpbyB7IDAg
fTsKICAgICBmbG9hdCBtX2ZyYW1lUmF0ZSB7IDAgfTsKICAgICBWaWRlb0ZhY2luZ01vZGUgbV9m
YWNpbmdNb2RlIHsgVW5rbm93biB9OwotICAgIHVuc2lnbmVkIGxvbmcgbV92b2x1bWUgeyAwIH07
CisgICAgZG91YmxlIG1fdm9sdW1lIHsgMCB9OwogICAgIHVuc2lnbmVkIGxvbmcgbV9zYW1wbGVS
YXRlIHsgMCB9OwogICAgIHVuc2lnbmVkIGxvbmcgbV9zYW1wbGVTaXplIHsgMCB9OwogICAgIGJv
b2wgbV9lY2hvQ2FuY2VsbGF0aW9uIHsgMCB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0FWQXVkaW9DYXB0dXJlU291cmNlLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNv
dXJjZS5tbQkocmV2aXNpb24gMTkyOTU0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0FWQXVkaW9DYXB0dXJlU291cmNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03
Nyw5ICs3NywxMCBAQCBBVkF1ZGlvQ2FwdHVyZVNvdXJjZTo6fkFWQXVkaW9DYXB0dXJlU291CiB7
CiB9CiAKLXZvaWQgQVZBdWRpb0NhcHR1cmVTb3VyY2U6OmluaXRpYWxpemVDYXBhYmlsaXRpZXMo
UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYpCit2b2lkIEFWQXVkaW9DYXB0dXJlU291
cmNlOjppbml0aWFsaXplQ2FwYWJpbGl0aWVzKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRp
ZXMmIGNhcGFiaWxpdGllcykKIHsKICAgICAvLyBGSVhNRTogZmluaXNoIHRoaXMgaW1wbGVtZW50
YXRpb24gLSBodHRwczovL3dlYmtpdC5vcmcvYi8xMjI0MzAKKyAgICBjYXBhYmlsaXRpZXMuc2V0
Vm9sdW1lKENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoMCwgMS4wKSk7CiB9CiAKIHZvaWQgQVZBdWRp
b0NhcHR1cmVTb3VyY2U6OmluaXRpYWxpemVTdXBwb3J0ZWRDb25zdHJhaW50cyhSZWFsdGltZU1l
ZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIHN1cHBvcnRlZENvbnN0cmFpbnRzKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJl
U291cmNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbQkocmV2aXNpb24gMTkyOTU0KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNl
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogCisjaW1wb3J0ICJBVkNhcHR1cmVEZXZpY2VN
YW5hZ2VyLmgiCiAjaW1wb3J0ICJBdWRpb1NvdXJjZVByb3ZpZGVyLmgiCisjaW1wb3J0ICJDb3Jl
TWVkaWFTb2Z0TGluay5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTWVkaWFDb25z
dHJhaW50cy5oIgogI2ltcG9ydCAiUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgiCkBAIC0z
OSw4ICs0MSw2IEBACiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CiAKLSNpbXBvcnQgIkNvcmVNZWRpYVNvZnRMaW5rLmgiCi0KIHR5cGVk
ZWYgQVZDYXB0dXJlQ29ubmVjdGlvbiBBVkNhcHR1cmVDb25uZWN0aW9uVHlwZTsKIHR5cGVkZWYg
QVZDYXB0dXJlRGV2aWNlIEFWQ2FwdHVyZURldmljZVR5cGU7CiB0eXBlZGVmIEFWQ2FwdHVyZURl
dmljZUlucHV0IEFWQ2FwdHVyZURldmljZUlucHV0VHlwZTsKQEAgLTE4OCw4ICsxODgsOSBAQCBS
ZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmCiBSZWZQdHI8UmVhbHRpbWVN
ZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gQVZNZWRpYUNhcHR1cmVTb3VyY2U6OmNhcGFiaWxpdGll
cygpCiB7CiAgICAgaWYgKCFtX2NhcGFiaWxpdGllcykgewotICAgICAgICBtX2NhcGFiaWxpdGll
cyA9IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OmNyZWF0ZSgpOwotICAgICAgICBt
X2NhcGFiaWxpdGllcy0+c2V0U291cmNlSWQoaWQoKSk7CisgICAgICAgIG1fY2FwYWJpbGl0aWVz
ID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6Y3JlYXRlKEFWQ2FwdHVyZURldmlj
ZU1hbmFnZXI6OnNpbmdsZXRvbigpLnN1cHBvcnRlZENvbnN0cmFpbnRzKCkpOworICAgICAgICBt
X2NhcGFiaWxpdGllcy0+c2V0RGV2aWNlSWQoaWQoKSk7CisKICAgICAgICAgaW5pdGlhbGl6ZUNh
cGFiaWxpdGllcygqbV9jYXBhYmlsaXRpZXMuZ2V0KCkpOwogICAgIH0KICAgICByZXR1cm4gbV9j
YXBhYmlsaXRpZXM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCShyZXZpc2lv
biAxOTI5NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZW
aWRlb0NhcHR1cmVTb3VyY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwOCwxMCArMTA4LDkgQEAg
QVZWaWRlb0NhcHR1cmVTb3VyY2U6On5BVlZpZGVvQ2FwdHVyZVNvdQogewogfQogCi12b2lkIEFW
VmlkZW9DYXB0dXJlU291cmNlOjppbml0aWFsaXplQ2FwYWJpbGl0aWVzKFJlYWx0aW1lTWVkaWFT
b3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcykKK3ZvaWQgQVZWaWRlb0NhcHR1cmVTb3Vy
Y2U6OmluaXRpYWxpemVDYXBhYmlsaXRpZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGll
cyYpCiB7CiAgICAgLy8gRklYTUU6IGZpbmlzaCB0aGlzIGltcGxlbWVudGF0aW9uCi0gICAgY2Fw
YWJpbGl0aWVzLnNldFNvdXJjZUlkKGlkKCkpOwogfQogCiB2b2lkIEFWVmlkZW9DYXB0dXJlU291
cmNlOjppbml0aWFsaXplU3VwcG9ydGVkQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZVN1
cHBvcnRlZENvbnN0cmFpbnRzJiBzdXBwb3J0ZWRDb25zdHJhaW50cykKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZG
T2JqQy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0JKHJldmlzaW9uIDE5Mjk1NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJj
ZVByb3ZpZGVyQVZGT2JqQy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzQsMTAgKzM0LDcgQEAKICNp
bXBvcnQgIkNBUmluZ0J1ZmZlci5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTWVk
aWFUaW1lQVZGb3VuZGF0aW9uLmgiCi0jaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZBc3NldFRyYWNr
Lmg+Ci0jaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZBdWRpb01peC5oPgotI2ltcG9ydCA8QVZGb3Vu
ZGF0aW9uL0FWTWVkaWFGb3JtYXQuaD4KLSNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllckl0
ZW0uaD4KKyNpbXBvcnQgPEF1ZGlvVG9vbGJveC9BdWRpb1Rvb2xib3guaD4KICNpbXBvcnQgPG9i
amMvcnVudGltZS5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KIApAQCAtNDcsMTMgKzQ0
LDggQEAKIAogI2ltcG9ydCAiQ29yZU1lZGlhU29mdExpbmsuaCIKIAotU09GVF9MSU5LX0ZSQU1F
V09SSyhBVkZvdW5kYXRpb24pCiBTT0ZUX0xJTktfRlJBTUVXT1JLKEF1ZGlvVG9vbGJveCkKIAot
U09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZQbGF5ZXJJdGVtKQotU09GVF9MSU5LX0NM
QVNTKEFWRm91bmRhdGlvbiwgQVZNdXRhYmxlQXVkaW9NaXgpCi1TT0ZUX0xJTktfQ0xBU1MoQVZG
b3VuZGF0aW9uLCBBVk11dGFibGVBdWRpb01peElucHV0UGFyYW1ldGVycykKLQogU09GVF9MSU5L
KEF1ZGlvVG9vbGJveCwgQXVkaW9Db252ZXJ0ZXJDb252ZXJ0Q29tcGxleEJ1ZmZlciwgT1NTdGF0
dXMsIChBdWRpb0NvbnZlcnRlclJlZiBpbkF1ZGlvQ29udmVydGVyLCBVSW50MzIgaW5OdW1iZXJQ
Q01GcmFtZXMsIGNvbnN0IEF1ZGlvQnVmZmVyTGlzdCogaW5JbnB1dERhdGEsIEF1ZGlvQnVmZmVy
TGlzdCogb3V0T3V0cHV0RGF0YSksIChpbkF1ZGlvQ29udmVydGVyLCBpbk51bWJlclBDTUZyYW1l
cywgaW5JbnB1dERhdGEsIG91dE91dHB1dERhdGEpKQogU09GVF9MSU5LKEF1ZGlvVG9vbGJveCwg
QXVkaW9Db252ZXJ0ZXJOZXcsIE9TU3RhdHVzLCAoY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2Ny
aXB0aW9uKiBpblNvdXJjZUZvcm1hdCwgY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9u
KiBpbkRlc3RpbmF0aW9uRm9ybWF0LCBBdWRpb0NvbnZlcnRlclJlZiogb3V0QXVkaW9Db252ZXJ0
ZXIpLCAoaW5Tb3VyY2VGb3JtYXQsIGluRGVzdGluYXRpb25Gb3JtYXQsIG91dEF1ZGlvQ29udmVy
dGVyKSkKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAJKHJldmlzaW9uIDE5Mjk1NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NywxMiArNTcsMTQgQEAgdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJj
ZTo6dXBkYXRlU2V0dAogCiB2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjppbml0aWFsaXpl
Q2FwYWJpbGl0aWVzKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGll
cykKIHsKLSAgICBjYXBhYmlsaXRpZXMuc2V0Vm9sdW1lUmFuZ2UoUmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdHlSYW5nZSgwVUwsIDEwMFVMLCB0cnVlKSk7CisgICAgY2FwYWJpbGl0aWVzLnNl
dFZvbHVtZShDYXBhYmlsaXR5VmFsdWVPclJhbmdlKDAsIDEuMCkpOworICAgIGNhcGFiaWxpdGll
cy5zZXRFY2hvQ2FuY2VsbGF0aW9uKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OkVj
aG9DYW5jZWxsYXRpb246OlJlYWRXcml0ZSk7CiB9CiAKIHZvaWQgTW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2U6OmluaXRpYWxpemVTdXBwb3J0ZWRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNl
U3VwcG9ydGVkQ29uc3RyYWludHMmIHN1cHBvcnRlZENvbnN0cmFpbnRzKQogewogICAgIHN1cHBv
cnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzVm9sdW1lKHRydWUpOworICAgIHN1cHBvcnRlZENv
bnN0cmFpbnRzLnNldFN1cHBvcnRzRWNob0NhbmNlbGxhdGlvbih0cnVlKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAJKHJldmlzaW9uIDE5Mjk1NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw4ICs5NSw4IEBAIFJlZlB0cjxSZWFsdGltZU1lZGlh
U291cmNlQ2FwYWJpbGl0aWVzPiAKICAgICBpZiAobV9jYXBhYmlsaXRpZXMpCiAgICAgICAgIHJl
dHVybiBtX2NhcGFiaWxpdGllczsKIAotICAgIG1fY2FwYWJpbGl0aWVzID0gUmVhbHRpbWVNZWRp
YVNvdXJjZUNhcGFiaWxpdGllczo6Y3JlYXRlKCk7Ci0gICAgbV9jYXBhYmlsaXRpZXMtPnNldFNv
dXJjZUlkKGlkKCkpOworICAgIG1fY2FwYWJpbGl0aWVzID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNh
cGFiaWxpdGllczo6Y3JlYXRlKHN1cHBvcnRlZENvbnN0cmFpbnRzKCkpOworICAgIG1fY2FwYWJp
bGl0aWVzLT5zZXREZXZpY2VJZChpZCgpKTsKICAgICBpbml0aWFsaXplQ2FwYWJpbGl0aWVzKCpt
X2NhcGFiaWxpdGllcy5nZXQoKSk7CiAKICAgICByZXR1cm4gbV9jYXBhYmlsaXRpZXM7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGlt
ZVZpZGVvU291cmNlLmNwcAkocmV2aXNpb24gMTkyOTU0KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwMywxMCArMTAzLDEwIEBAIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmluaXRpYWxp
emUKIHsKICAgICBjYXBhYmlsaXRpZXMuYWRkRmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3M6OlVzZXIpOwogICAgIGNhcGFiaWxpdGllcy5hZGRGYWNpbmdNb2RlKFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5nczo6RW52aXJvbm1lbnQpOwotICAgIGNhcGFiaWxpdGllcy5zZXRX
aWR0aFJhbmdlKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXR5UmFuZ2UoMzIwVUwsIDE5MjBV
TCwgdHJ1ZSkpOwotICAgIGNhcGFiaWxpdGllcy5zZXRIZWlnaHRSYW5nZShSZWFsdGltZU1lZGlh
U291cmNlQ2FwYWJpbGl0eVJhbmdlKDI0MFVMLCAxMDgwVUwsIHRydWUpKTsKLSAgICBjYXBhYmls
aXRpZXMuc2V0RnJhbWVSYXRlUmFuZ2UoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdHlSYW5n
ZSgxNS4wZiwgNjAuMGYsIHRydWUpKTsKLSAgICBjYXBhYmlsaXRpZXMuc2V0QXNwZWN0UmF0aW9S
YW5nZShSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0eVJhbmdlKDQgLyAzLjBmLCAxNiAvIDku
MGYsIHRydWUpKTsKKyAgICBjYXBhYmlsaXRpZXMuc2V0V2lkdGgoQ2FwYWJpbGl0eVZhbHVlT3JS
YW5nZSgzMjBVTCwgMTkyMFVMKSk7CisgICAgY2FwYWJpbGl0aWVzLnNldEhlaWdodChDYXBhYmls
aXR5VmFsdWVPclJhbmdlKDI0MFVMLCAxMDgwVUwpKTsKKyAgICBjYXBhYmlsaXRpZXMuc2V0RnJh
bWVSYXRlKENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoMTUuMCwgNjAuMCkpOworICAgIGNhcGFiaWxp
dGllcy5zZXRBc3BlY3RSYXRpbyhDYXBhYmlsaXR5VmFsdWVPclJhbmdlKDQgLyAzLjAsIDE2IC8g
OS4wKSk7CiB9CiAKIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmluaXRpYWxpemVTdXBw
b3J0ZWRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMm
IHN1cHBvcnRlZENvbnN0cmFpbnRzKQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTkyOTgwKQorKysgTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTUt
MTItMDMgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAg
W01lZGlhU3RyZWFtXSBVcGRhdGUgTWVkaWFTdHJlYW1UcmFjay5nZXRDYXBhYmlsaXRpZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTcyOAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWdldENhcGFiaWxpdGllcy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1nZXRDYXBh
YmlsaXRpZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrLWdldFNldHRpbmdzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtVHJhY2stZ2V0U2V0dGluZ3MuaHRtbDoKKwogMjAxNS0xMi0wMiAg
RXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggZmxh
a3kgdGVzdCBhZGRlZCB3aXRoIHIxOTI5NTQuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtVHJhY2stZ2V0Q2FwYWJpbGl0aWVzLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2st
Z2V0Q2FwYWJpbGl0aWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1nZXRDYXBhYmlsaXRpZXMtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjIgQEAKK1Rlc3RzIE1lZGlhU3RyZWFt
VHJhY2suZ2V0Q2FwYWJpbGl0aWVzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
dmlkZW8gdHJhY2sgY2FwYWJpbGl0aWVzOgorICBjYXBhYmlsaXRpZXMud2lkdGggPSB7IG1pbjog
MzIwLCBtYXg6IDE5MjAgfQorICBjYXBhYmlsaXRpZXMuaGVpZ2h0ID0geyBtaW46IDI0MCwgbWF4
OiAxMDgwIH0KKyAgY2FwYWJpbGl0aWVzLmFzcGVjdFJhdGlvID0geyBtaW46IDEuMzMzLCBtYXg6
IDEuNzc4IH0KKyAgY2FwYWJpbGl0aWVzLmZyYW1lUmF0ZSA9IHsgbWluOiAxNSwgbWF4OiA2MCB9
CisgIGNhcGFiaWxpdGllcy5mYWNpbmdNb2RlID0gWyB1c2VyLCBlbnZpcm9ubWVudCBdCisgIGNh
cGFiaWxpdGllcy5kZXZpY2VJZCA9IDxVVUlEPgorCithdWRpbyB0cmFjayBjYXBhYmlsaXRpZXM6
CisgIGNhcGFiaWxpdGllcy52b2x1bWUgPSB7IG1pbjogMCwgbWF4OiAxIH0KKyAgY2FwYWJpbGl0
aWVzLmVjaG9DYW5jZWxsYXRpb24gPSBbIHRydWUsIHRydWUgXQorICBjYXBhYmlsaXRpZXMuZGV2
aWNlSWQgPSA8VVVJRD4KKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1UcmFjay1nZXRDYXBhYmlsaXRpZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2stZ2V0Q2FwYWJpbGl0aWVzLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2stZ2V0Q2FwYWJpbGl0aWVzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NSBAQAor
PCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQgc3JjPSIuL3Jlc291cmNlcy9nZXRVc2VyTWVkaWEtaGVscGVyLmpzIj48L3NjcmlwdD4KKyAg
ICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIHZhciBtZWRpYVN0cmVhbTsKKworICAgICAgICAg
ICAgZnVuY3Rpb24gbGltaXRQcmVjaXNpb24odmFsdWUsIHByZWNpc2lvbikKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAic3RyaW5nIikKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGAiJHt2YWx1ZX1gOworCisgICAgICAgICAgICAgICAgaWYg
KHR5cGVvZiB2YWx1ZSA9PT0gIm51bWJlciIgJiYgdmFsdWUgJSAxICE9IDApCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB2YWx1ZS50b0ZpeGVkKHByZWNpc2lvbik7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHZhbHVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBj
YXBhYmlsaXR5UmFuZ2UobmFtZSwgb2JqZWN0KQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGlmIChBcnJheS5pc0FycmF5KG9iamVjdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCFvYmplY3QubGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJbIF0iOwor
CisgICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9ICJbIjsKKyAgICAgICAgICAgICAgICAg
ICAgZm9yIChpID0gMDsgaSA8IG9iamVjdC5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHZhbHVlICs9IGAgJHtvYmplY3RbaV19LGA7CisKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHZhbHVlLnNsaWNlKDAsIC0xKSArICIgXSI7CisgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gInsiOworICAgICAgICAgICAgICAgIGZvciAodmFy
IHByb3BlcnR5IGluIG9iamVjdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgKz0g
YCAke3Byb3BlcnR5fTogJHtsaW1pdFByZWNpc2lvbihvYmplY3RbcHJvcGVydHldLCAzKX0sYDsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYg
KHZhbHVlLmxlbmd0aCkKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5zbGljZSgw
LCAtMSk7CisKKworICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSArICIgfSI7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGxpc3RUcmFja1Byb3BlcnRpZXModHJhY2sp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZGVidWcoYCR7dHJhY2sua2luZH0gdHJh
Y2sgY2FwYWJpbGl0aWVzOmApOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllcyA9IHRyYWNr
LmdldENhcGFiaWxpdGllcygpOworICAgICAgICAgICAgICAgIGZvciAodmFyIHByb3BlcnR5IGlu
IGNhcGFiaWxpdGllcykgeworICAgICAgICAgICAgICAgICAgICBpZiAoY2FwYWJpbGl0aWVzLmhh
c093blByb3BlcnR5KHByb3BlcnR5KSB8fCBjYXBhYmlsaXRpZXMuX19wcm90b19fLmhhc093blBy
b3BlcnR5KHByb3BlcnR5KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0eSA9
PSAiZGV2aWNlSWQiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gIiZsdDtV
VUlEPiI7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgY2FwYWJpbGl0
aWVzW3Byb3BlcnR5XSA9PT0gIm9iamVjdCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFsdWUgPSBjYXBhYmlsaXR5UmFuZ2UocHJvcGVydHksIGNhcGFiaWxpdGllc1twcm9wZXJ0eV0p
OworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZhbHVlID0gbGltaXRQcmVjaXNpb24oY2FwYWJpbGl0aWVzW3Byb3BlcnR5XSwgMik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhgICBjYXBhYmlsaXRpZXMuJHtwcm9wZXJ0eX0g
PSAke3ZhbHVlfWApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZWJ1Zygi
Iik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGdvdFN0cmVhbShzdHJl
YW0pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbWVkaWFTdHJlYW0gPSBzdHJlYW07
CisgICAgICAgICAgICAgICAgbGlzdFRyYWNrUHJvcGVydGllcyhtZWRpYVN0cmVhbS5nZXRWaWRl
b1RyYWNrcygpWzBdKTsKKyAgICAgICAgICAgICAgICBsaXN0VHJhY2tQcm9wZXJ0aWVzKG1lZGlh
U3RyZWFtLmdldEF1ZGlvVHJhY2tzKClbMF0pOworICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGFydCgpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIE1lZGlhU3RyZWFt
VHJhY2suZ2V0Q2FwYWJpbGl0aWVzLiIpOworICAgICAgICAgICAgICAgIGdldFVzZXJNZWRpYSgi
YWxsb3ciLCB7YXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbSk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICAgICAg
ICAgIHdpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworICAgICAgICA8L3NjcmlwdD4K
KworICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9InN0YXJ0KCkiPgorICAgICAgICA8cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KKyAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cisg
ICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtVHJhY2stZ2V0U2V0dGluZ3MtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1nZXRT
ZXR0aW5ncy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE5Mjk1NCkKKysrIExheW91dFRlc3RzL2Zh
c3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1nZXRTZXR0aW5ncy1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTMsMTggKzMsMzAgQEAgVGVzdHMgTWVkaWFTdHJlYW1UcmFjay5n
ZXRTZXR0aW5ncy4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi12aWRlbyB0cmFjazoK
K3ZpZGVvIHRyYWNrIHNldHRpbmdzOgogICBzZXR0aW5ncy53aWR0aCA9IDY0MAogICBzZXR0aW5n
cy5oZWlnaHQgPSA0ODAKLSAgc2V0dGluZ3MuYXNwZWN0UmF0aW8gPSAxLjMzCisgIHNldHRpbmdz
LmFzcGVjdFJhdGlvID0gMS4zMzMKICAgc2V0dGluZ3MuZnJhbWVSYXRlID0gMzAKICAgc2V0dGlu
Z3MuZmFjaW5nTW9kZSA9IHVzZXIKICAgc2V0dGluZ3MuZGV2aWNlSWQgPSA8VVVJRD4KIAotYXVk
aW8gdHJhY2s6CithdWRpbyB0cmFjayBzZXR0aW5nczoKICAgc2V0dGluZ3Mudm9sdW1lID0gNTAK
KyAgc2V0dGluZ3MuZWNob0NhbmNlbGxhdGlvbiA9IGZhbHNlCiAgIHNldHRpbmdzLmRldmljZUlk
ID0gPFVVSUQ+CiAKK0FjY29yZGluZyB0byB0aGUgc3BlYzogIltldmVyeSBzZXR0aW5nXSBNVVNU
IGJlIGEgbWVtYmVyIG9mIHRoZSBzZXQgZGVmaW5lZCBmb3IgdGhhdCBwcm9wZXJ0eSBieSBnZXRD
YXBhYmlsaXRpZXMoKSIKKworUEFTUyAid2lkdGgiIGluIHRyYWNrLmdldENhcGFiaWxpdGllcygp
IGlzIHRydWUKK1BBU1MgImhlaWdodCIgaW4gdHJhY2suZ2V0Q2FwYWJpbGl0aWVzKCkgaXMgdHJ1
ZQorUEFTUyAiYXNwZWN0UmF0aW8iIGluIHRyYWNrLmdldENhcGFiaWxpdGllcygpIGlzIHRydWUK
K1BBU1MgImZyYW1lUmF0ZSIgaW4gdHJhY2suZ2V0Q2FwYWJpbGl0aWVzKCkgaXMgdHJ1ZQorUEFT
UyAiZmFjaW5nTW9kZSIgaW4gdHJhY2suZ2V0Q2FwYWJpbGl0aWVzKCkgaXMgdHJ1ZQorUEFTUyAi
ZGV2aWNlSWQiIGluIHRyYWNrLmdldENhcGFiaWxpdGllcygpIGlzIHRydWUKK1BBU1MgInZvbHVt
ZSIgaW4gdHJhY2suZ2V0Q2FwYWJpbGl0aWVzKCkgaXMgdHJ1ZQorUEFTUyAiZWNob0NhbmNlbGxh
dGlvbiIgaW4gdHJhY2suZ2V0Q2FwYWJpbGl0aWVzKCkgaXMgdHJ1ZQorUEFTUyAiZGV2aWNlSWQi
IGluIHRyYWNrLmdldENhcGFiaWxpdGllcygpIGlzIHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWdldFNldHRpbmdzLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWdldFNldHRpbmdz
Lmh0bWwJKHJldmlzaW9uIDE5Mjk4MCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFjay1nZXRTZXR0aW5ncy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDYg
KzUsNyBAQAogICAgICAgICA8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvZ2V0VXNlck1lZGlhLWhl
bHBlci5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxzY3JpcHQ+CiAgICAgICAgICAgICB2YXIgbWVk
aWFTdHJlYW07CisgICAgICAgICAgICB2YXIgdHJhY2s7CiAKICAgICAgICAgICAgIGZ1bmN0aW9u
IGxpbWl0UHJlY2lzaW9uKHZhbHVlLCBwcmVjaXNpb24pCiAgICAgICAgICAgICB7CkBAIC0xMywy
NiArMTQsNDYgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGZ1bmN0aW9uIGxpc3RUcmFja1Byb3BlcnRpZXMo
dHJhY2spCisgICAgICAgICAgICBmdW5jdGlvbiBsaXN0VHJhY2tTZXR0aW5ncyh0cmFjaykKICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBkZWJ1ZyhgJHt0cmFjay5raW5kfSB0cmFjazpg
KTsKKyAgICAgICAgICAgICAgICBkZWJ1ZyhgJHt0cmFjay5raW5kfSB0cmFjayBzZXR0aW5nczpg
KTsKICAgICAgICAgICAgICAgICBzZXR0aW5ncyA9IHRyYWNrLmdldFNldHRpbmdzKCk7CiAgICAg
ICAgICAgICAgICAgZm9yICh2YXIgcHJvcGVydHkgaW4gc2V0dGluZ3MpIHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKHNldHRpbmdzLmhhc093blByb3BlcnR5KHByb3BlcnR5KSB8fCBzZXR0aW5n
cy5fX3Byb3RvX18uaGFzT3duUHJvcGVydHkocHJvcGVydHkpKQorICAgICAgICAgICAgICAgICAg
ICBpZiAoc2V0dGluZ3MuaGFzT3duUHJvcGVydHkocHJvcGVydHkpIHx8IHNldHRpbmdzLl9fcHJv
dG9fXy5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChwcm9wZXJ0eSA9PSAiZGV2aWNlSWQiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZhbHVlID0gIiZsdDtVVUlEPiI7CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBsaW1pdFByZWNpc2lvbihzZXR0aW5nc1tw
cm9wZXJ0eV0sIDIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbGltaXRQ
cmVjaXNpb24oc2V0dGluZ3NbcHJvcGVydHldLCAzKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGRlYnVnKGAgIHNldHRpbmdzLiR7cHJvcGVydHl9ID0gJHt2YWx1ZX1gKTsKKyAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIGRlYnVnKCIi
KTsKICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgZnVuY3Rpb24gY2hlY2tUcmFja1NldHRp
bmdzKHQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdHJhY2sgPSB0OworCisgICAg
ICAgICAgICAgICAgY2FwYWJpbGl0aWVzID0gdHJhY2suZ2V0Q2FwYWJpbGl0aWVzKCk7CisgICAg
ICAgICAgICAgICAgc2V0dGluZ3MgPSB0cmFjay5nZXRTZXR0aW5ncygpOworICAgICAgICAgICAg
ICAgIGZvciAodmFyIHByb3BlcnR5IGluIHNldHRpbmdzKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmIChzZXR0aW5ncy5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSkgfHwgc2V0dGluZ3MuX19wcm90
b19fLmhhc093blByb3BlcnR5KHByb3BlcnR5KSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
c2hvdWxkQmVUcnVlKGAiJHtwcm9wZXJ0eX0iIGluIHRyYWNrLmdldENhcGFiaWxpdGllcygpYCk7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisKICAgICAgICAgICAgIGZ1bmN0aW9uIGdvdFN0cmVhbShzdHJlYW0pCiAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgbWVkaWFTdHJlYW0gPSBzdHJlYW07Ci0gICAgICAgICAgICAgICAg
bGlzdFRyYWNrUHJvcGVydGllcyhtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdKTsKLSAg
ICAgICAgICAgICAgICBsaXN0VHJhY2tQcm9wZXJ0aWVzKG1lZGlhU3RyZWFtLmdldEF1ZGlvVHJh
Y2tzKClbMF0pOworCisgICAgICAgICAgICAgICAgbGlzdFRyYWNrU2V0dGluZ3MobWVkaWFTdHJl
YW0uZ2V0VmlkZW9UcmFja3MoKVswXSk7CisgICAgICAgICAgICAgICAgbGlzdFRyYWNrU2V0dGlu
Z3MobWVkaWFTdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXSk7CisKKyAgICAgICAgICAgICAgICBk
ZWJ1ZygnQWNjb3JkaW5nIHRvIHRoZSBzcGVjOiAiW2V2ZXJ5IHNldHRpbmddIE1VU1QgYmUgYSBt
ZW1iZXIgb2YgdGhlIHNldCBkZWZpbmVkIGZvciB0aGF0IHByb3BlcnR5IGJ5IGdldENhcGFiaWxp
dGllcygpIjxicj4nKTsKKyAgICAgICAgICAgICAgICBjaGVja1RyYWNrU2V0dGluZ3MobWVkaWFT
dHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXSk7CisgICAgICAgICAgICAgICAgY2hlY2tUcmFja1Nl
dHRpbmdzKG1lZGlhU3RyZWFtLmdldEF1ZGlvVHJhY2tzKClbMF0pOwogICAgICAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOwogICAgICAgICAgICAgfQogCg==
</data>
<flag name="review"
          id="291558"
          type_id="1"
          status="+"
          setter="jer.noble"
    />
          </attachment>
      

    </bug>

</bugzilla>