<?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>80625</bug_id>
          
          <creation_ts>2012-03-08 12:08:48 -0800</creation_ts>
          <short_desc>Move DirectoryEntry and DirectoryReader to new Modules/filesystem/ directory</short_desc>
          <delta_ts>2012-03-13 12:12:33 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (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>
          <dependson>80908</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Pilgrim (Google)">pilgrim</reporter>
          <assigned_to name="Mark Pilgrim (Google)">pilgrim</assigned_to>
          <cc>abarth</cc>
    
    <cc>ericu</cc>
    
    <cc>fishd</cc>
    
    <cc>haraken</cc>
    
    <cc>ojan</cc>
    
    <cc>rakuco</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>574056</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-03-08 12:08:48 -0800</bug_when>
    <thetext>Move DirectoryEntry and DirectoryReader to new Modules/filesystem/ directory</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574058</commentid>
    <comment_count>1</comment_count>
      <attachid>130872</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-03-08 12:09:56 -0800</bug_when>
    <thetext>Created attachment 130872
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574059</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-03-08 12:11:08 -0800</bug_when>
    <thetext>This creates the new Modules/filesystem/ subdirectory and moves DirectoryEntry and DirectoryReader files to it, and updates all build systems accordingly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574266</commentid>
    <comment_count>3</comment_count>
      <attachid>130872</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-08 15:01:34 -0800</bug_when>
    <thetext>Comment on attachment 130872
Patch

This looks fine.  It&apos;s slightly hard to tell how you&apos;re changing the xcodeproj file.

It looks like the bots are having trouble applying your patch.  Are you synced to top-of-tree?  For a patch like this, it&apos;s important to run it through the EWS bots so that we can have some confidence that we&apos;re not going to break a bunch of builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576464</commentid>
    <comment_count>4</comment_count>
      <attachid>131395</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-03-12 13:34:27 -0700</bug_when>
    <thetext>Created attachment 131395
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576466</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-03-12 13:35:00 -0700</bug_when>
    <thetext>Updated patch from ToT, submitted to EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576470</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-12 13:38:27 -0700</bug_when>
    <thetext>Attachment 131395 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
Source/WebCore/Modules/filesystem/DirectoryEntrySync.h:38:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/Modules/filesystem/DirectoryEntry.h:38:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 25 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>576607</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-12 15:20:38 -0700</bug_when>
    <thetext>Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576709</commentid>
    <comment_count>8</comment_count>
      <attachid>131395</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-12 16:38:51 -0700</bug_when>
    <thetext>Comment on attachment 131395
Patch

Clearing flags on attachment: 131395

Committed r110501: &lt;http://trac.webkit.org/changeset/110501&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576710</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-12 16:38:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576778</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-12 17:26:58 -0700</bug_when>
    <thetext>I rolled this patch out because it broke the Apple Windows build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576812</commentid>
    <comment_count>11</comment_count>
      <attachid>131475</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-03-12 17:49:42 -0700</bug_when>
    <thetext>Created attachment 131475
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576814</commentid>
    <comment_count>12</comment_count>
      <attachid>131475</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-12 17:51:59 -0700</bug_when>
    <thetext>Comment on attachment 131475
Patch

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

&gt; Source/WebCore/WebCore.vcproj/WebCore.vcproj:56861
&gt; -				RelativePath=&quot;..\fileapi\DirectoryEntry.cpp&quot;
&gt; +				RelativePath=&quot;..\Modules\filesystem\DirectoryEntry.cpp&quot;

Please move these up higher in the file to their alphabetical place.  Note: You&apos;ll want to create a filter for filesystem, like the other modules have.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576816</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-12 17:53:32 -0700</bug_when>
    <thetext>Attachment 131475 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
Source/WebCore/Modules/filesystem/DirectoryEntrySync.h:38:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/Modules/filesystem/DirectoryEntry.h:38:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 25 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>576951</commentid>
    <comment_count>14</comment_count>
      <attachid>131500</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-03-12 20:04:53 -0700</bug_when>
    <thetext>Created attachment 131500
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576952</commentid>
    <comment_count>15</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-03-12 20:05:21 -0700</bug_when>
    <thetext>Now with filter for filesystem in vcproj.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576956</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-12 20:08:19 -0700</bug_when>
    <thetext>Attachment 131500 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
Source/WebCore/Modules/filesystem/DirectoryEntrySync.h:38:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/Modules/filesystem/DirectoryEntry.h:38:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 25 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>577040</commentid>
    <comment_count>17</comment_count>
      <attachid>131500</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-12 22:31:37 -0700</bug_when>
    <thetext>Comment on attachment 131500
Patch

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

&gt; Source/WebCore/DerivedSources.make:202
&gt; +    $(WebCore)/Modules/filesystem/DirectoryEntry.idl \
&gt; +    $(WebCore)/Modules/filesystem/DirectoryEntrySync.idl \
&gt; +    $(WebCore)/Modules/filesystem/DirectoryReader.idl \
&gt; +    $(WebCore)/Modules/filesystem/DirectoryReaderSync.idl \

Really all of these lists should be alphabetical...  Maybe you want to do that in a follow-up patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577229</commentid>
    <comment_count>18</comment_count>
      <attachid>131500</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-03-13 04:29:31 -0700</bug_when>
    <thetext>Comment on attachment 131500
Patch

OK, I&apos;ll do a followup patch for style cleanup after all the files are moved successfully.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577527</commentid>
    <comment_count>19</comment_count>
      <attachid>131500</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-13 10:43:59 -0700</bug_when>
    <thetext>Comment on attachment 131500
Patch

The EWS bots predict success!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577542</commentid>
    <comment_count>20</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-03-13 10:55:40 -0700</bug_when>
    <thetext>So does my astrologist!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577644</commentid>
    <comment_count>21</comment_count>
      <attachid>131500</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-13 12:12:21 -0700</bug_when>
    <thetext>Comment on attachment 131500
Patch

Clearing flags on attachment: 131500

Committed r110589: &lt;http://trac.webkit.org/changeset/110589&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577645</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-13 12:12:33 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130872</attachid>
            <date>2012-03-08 12:09:56 -0800</date>
            <delta_ts>2012-03-12 13:34:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80625-20120308150951.patch</filename>
            <type>text/plain</type>
            <size>103830</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMDE4NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDEyLTAzLTA4ICBNYXJrIFBp
bGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBNb3ZlIERpcmVjdG9yeUVu
dHJ5IGFuZCBEaXJlY3RvcnlSZWFkZXIgdG8gbmV3IE1vZHVsZXMvZmlsZXN5c3RlbS8gZGlyZWN0
b3J5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDYy
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cywgYWxsIGV4aXN0aW5nIHRlc3RzIHBhc3MuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLnByaToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5saXN0LmFtOgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbTogQWRkZWQuCisgICAg
ICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmNwcDogQ29waWVkIGZyb20g
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5jcHAuCisgICAgICAgICogTW9k
dWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRGlyZWN0b3J5RW50cnkuaC4KKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0
ZW0vRGlyZWN0b3J5RW50cnkuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0RpcmVjdG9yeUVudHJ5LmlkbC4KKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0
b3J5RW50cnlTeW5jLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJl
Y3RvcnlFbnRyeVN5bmMuY3BwLgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3Rv
cnlFbnRyeVN5bmMuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3Rv
cnlFbnRyeVN5bmMuaC4KKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50
cnlTeW5jLmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlF
bnRyeVN5bmMuaWRsLgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFk
ZXIuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRl
ci5jcHAuCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlci5oLgorICAg
ICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXIuaWRsOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlci5pZGwuCisgICAgICAgICog
TW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlckJhc2UuaDogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJCYXNlLmguCisgICAgICAgICogTW9k
dWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuY3BwOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuY3BwLgorICAgICAgICAqIE1v
ZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyU3luYy5oLgorICAgICAgICAqIE1vZHVs
ZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmlkbDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJTeW5jLmlkbC4KKyAgICAgICAgKiBUYXJn
ZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwOgorICAgICAgICAqIFdl
YkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnByaToKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZmlsZWFwaS9EaXJlY3RvcnlFbnRy
eS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5oOiBSZW1v
dmVkLgorICAgICAgICAqIGZpbGVhcGkvRGlyZWN0b3J5RW50cnkuaWRsOiBSZW1vdmVkLgorICAg
ICAgICAqIGZpbGVhcGkvRGlyZWN0b3J5RW50cnlTeW5jLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBmaWxlYXBpL0RpcmVjdG9yeUVudHJ5U3luYy5oOiBSZW1vdmVkLgorICAgICAgICAqIGZpbGVh
cGkvRGlyZWN0b3J5RW50cnlTeW5jLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmaWxlYXBpL0Rp
cmVjdG9yeVJlYWRlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogZmlsZWFwaS9EaXJlY3RvcnlS
ZWFkZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBmaWxlYXBpL0RpcmVjdG9yeVJlYWRlci5pZGw6
IFJlbW92ZWQuCisgICAgICAgICogZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJCYXNlLmg6IFJlbW92
ZWQuCisgICAgICAgICogZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJTeW5jLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBmaWxlYXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBmaWxlYXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuaWRsOiBSZW1vdmVkLgorCiAyMDEyLTAz
LTA4ICBTY290dCBCeWVyICA8c2NvdHRieWVyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBIYXZl
IFNjcm9sbEFuaW1hdG9yTm9uZSB1c2UgcmVxdWVzdEFuaW1hdGlvbkZyYW1lCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTEwMTQ3KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiBTRVQoV2ViQ29yZV9JTkNM
VURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9IgorICAgICIke1dFQkNPUkVfRElS
fS9Nb2R1bGVzL2ZpbGVzeXN0ZW0iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvZ2VvbG9j
YXRpb24iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvaW5kZXhlZGRiIgogICAgICIke1dF
QkNPUkVfRElSfS9Nb2R1bGVzL3dlYmRhdGFiYXNlIgpAQCAtOTIsNiArOTMsNyBAQCBTRVQoV2Vi
Q29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiApCiAKIFNFVChXZWJDb3JlX0lETF9JTkNMVURFUwor
ICAgIE1vZHVsZXMvZmlsZXN5c3RlbQogICAgIE1vZHVsZXMvZ2VvbG9jYXRpb24KICAgICBNb2R1
bGVzL2luZGV4ZWRkYgogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UKQEAgLTE2MzMsMTAgKzE2MzUs
MTAgQEAgRU5ESUYgKCkKIAogaWYgKEVOQUJMRV9GSUxFX1NZU1RFTSkKICAgICBMSVNUKEFQUEVO
RCBXZWJDb3JlX1NPVVJDRVMKLSAgICAgICAgZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5jcHAKLSAg
ICAgICAgZmlsZWFwaS9EaXJlY3RvcnlFbnRyeVN5bmMuY3BwCi0gICAgICAgIGZpbGVhcGkvRGly
ZWN0b3J5UmVhZGVyLmNwcAotICAgICAgICBmaWxlYXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuY3Bw
CisgICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5jcHAKKyAgICAgICAg
TW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5jcHAKKyAgICAgICAgTW9kdWxl
cy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5jcHAKKyAgICAgICAgTW9kdWxlcy9maWxlc3lz
dGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuY3BwCiAgICAgICAgIGZpbGVhcGkvRE9NRmlsZVBhdGgu
Y3BwCiAgICAgICAgIGZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHAKICAgICAgICAgZmlsZWFwaS9E
T01GaWxlU3lzdGVtQmFzZS5jcHAKQEAgLTE2NTgsMTAgKzE2NjAsMTAgQEAgaWYgKEVOQUJMRV9G
SUxFX1NZU1RFTSkKICAgICAgICAgcGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtLmNwcAogICAgICkK
ICAgICBMSVNUKEFQUEVORCBXZWJDb3JlX0lETF9GSUxFUwotICAgICAgICBmaWxlYXBpL0RpcmVj
dG9yeUVudHJ5LmlkbAotICAgICAgICBmaWxlYXBpL0RpcmVjdG9yeUVudHJ5U3luYy5pZGwKLSAg
ICAgICAgZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXIuaWRsCi0gICAgICAgIGZpbGVhcGkvRGlyZWN0
b3J5UmVhZGVyU3luYy5pZGwKKyAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVu
dHJ5LmlkbAorICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmlk
bAorICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmlkbAorICAgICAg
ICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyU3luYy5pZGwKICAgICAgICAgZmls
ZWFwaS9ET01GaWxlU3lzdGVtLmlkbAogICAgICAgICBmaWxlYXBpL0RPTUZpbGVTeXN0ZW1TeW5j
LmlkbAogICAgICAgICBmaWxlYXBpL0RPTVdpbmRvd0ZpbGVTeXN0ZW0uaWRsCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDExMDE0NykKKysrIFNvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAK
IAogVlBBVEggPSBcCiAgICAgJChXZWJDb3JlKSBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9nZW9sb2NhdGlvbiBcCiAgICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL2luZGV4ZWRkYiBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmRh
dGFiYXNlIFwKQEAgLTE5NSwxMCArMTk2LDEwIEBAIEJJTkRJTkdfSURMUyA9IFwKICAgICAkKFdl
YkNvcmUpL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5pZGwgXAogICAgICQoV2ViQ29yZSkvZmlsZWFw
aS9ET01GaWxlU3lzdGVtU3luYy5pZGwgXAogICAgICQoV2ViQ29yZSkvZmlsZWFwaS9ET01XaW5k
b3dGaWxlU3lzdGVtLmlkbCBcCi0gICAgJChXZWJDb3JlKS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5
LmlkbCBcCi0gICAgJChXZWJDb3JlKS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5U3luYy5pZGwgXAot
ICAgICQoV2ViQ29yZSkvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXIuaWRsIFwKLSAgICAkKFdlYkNv
cmUpL2ZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyU3luYy5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9k
dWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmlkbCBcCisgICAgJChXZWJDb3JlKS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmlkbCBcCisgICAgJChXZWJDb3JlKS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyU3luYy5pZGwgXAogICAgICQoV2ViQ29y
ZSkvZmlsZWFwaS9FbnRyaWVzQ2FsbGJhY2suaWRsIFwKICAgICAkKFdlYkNvcmUpL2ZpbGVhcGkv
RW50cnkuaWRsIFwKICAgICAkKFdlYkNvcmUpL2ZpbGVhcGkvRW50cnlBcnJheS5pZGwgXApJbmRl
eDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQkocmV2aXNpb24gMTEwMTQ3KQorKysgU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0yMTYsMTAgKzIx
NiwxMCBAQCBJRExfQklORElOR1MgKz0gXAogICAgICQkUFdEL2RvbS9XZWJLaXRUcmFuc2l0aW9u
RXZlbnQuaWRsIFwKICAgICAkJFBXRC9kb20vV2hlZWxFdmVudC5pZGwgXAogICAgICQkUFdEL2Zp
bGVhcGkvQmxvYi5pZGwgXAotICAgICQkUFdEL2ZpbGVhcGkvRGlyZWN0b3J5RW50cnkuaWRsIFwK
LSAgICAkJFBXRC9maWxlYXBpL0RpcmVjdG9yeUVudHJ5U3luYy5pZGwgXAotICAgICQkUFdEL2Zp
bGVhcGkvRGlyZWN0b3J5UmVhZGVyLmlkbCBcCi0gICAgJCRQV0QvZmlsZWFwaS9EaXJlY3RvcnlS
ZWFkZXJTeW5jLmlkbCBcCisgICAgJCRQV0QvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVu
dHJ5LmlkbCBcCisgICAgJCRQV0QvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3lu
Yy5pZGwgXAorICAgICQkUFdEL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXIuaWRs
IFwKKyAgICAkJFBXRC9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyU3luYy5pZGwg
XAogICAgICQkUFdEL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5pZGwgXAogICAgICQkUFdEL2ZpbGVh
cGkvRE9NRmlsZVN5c3RlbVN5bmMuaWRsIFwKICAgICAkJFBXRC9maWxlYXBpL0RPTVdpbmRvd0Zp
bGVTeXN0ZW0uaWRsIFwKQEAgLTY5MSw2ICs2OTEsNyBAQCBlbHNlOiBnZW5lcmF0b3IgPSBKUwog
Z2VuZXJhdGVCaW5kaW5ncy5jb21tYW5kcyA9IHBlcmwgLUkkJFBXRC9iaW5kaW5ncy9zY3JpcHRz
ICQkZ2VuZXJhdGVCaW5kaW5ncy5zY3JpcHQgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC0tZGVmaW5lcyBcIiQke0ZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBUfVwiIFwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAtLWdlbmVyYXRvciAkJGdlbmVyYXRvciBcCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLS1pbmNsdWRlICQkUFdEL01vZHVsZXMvZmlsZXN5c3RlbSBcCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1pbmNsdWRlICQkUFdEL01vZHVsZXMvZ2VvbG9j
YXRpb24gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0taW5jbHVkZSAkJFBXRC9Nb2R1
bGVzL2luZGV4ZWRkYiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1pbmNsdWRlICQk
UFdEL01vZHVsZXMvd2ViZGF0YWJhc2UgXApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlz
aW9uIDExMDE0NykKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNv
cHkpCkBAIC0xMSw2ICsxMSw3IEBAIHdlYmNvcmVfY3BwZmxhZ3MgKz0gXAogCS1JJChzcmNkaXIp
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xTTEFORyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dl
YkNvcmUgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbSBc
CiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbiBcCiAJLUkk
KHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIgXAogCS1JJChzcmNkaXIp
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0gXApAQCAtNDczLDcgKzQ3NCw3IEBA
IEZFQVRVUkVfREVGSU5FUyArPSBFTkFCTEVfTUFUSE1MPTEKIHdlYmNvcmVfY3BwZmxhZ3MgKz0g
LURFTkFCTEVfTUFUSE1MPTEKIGVuZGlmICMgRU5EIEVOQUJMRV9NQVRITUwKIAotIyBNYXRoTUwg
dGFnIGFuZCBhdHRyaWJ1dGUgbmFtZXMsIGFuZCBlbGVtZW50IGZhY3RvcnkgCisjIE1hdGhNTCB0
YWcgYW5kIGF0dHJpYnV0ZSBuYW1lcywgYW5kIGVsZW1lbnQgZmFjdG9yeQogRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9NYXRoTUxFbGVtZW50RmFjdG9yeS5oOiBEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L01hdGhNTEVsZW1lbnRGYWN0b3J5LmNwcAogRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9NYXRoTUxO
YW1lcy5oOiBEZXJpdmVkU291cmNlcy9XZWJDb3JlL01hdGhNTE5hbWVzLmNwcAogRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9NYXRoTUxFbGVtZW50RmFjdG9yeS5jcHAgRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9NYXRoTUxOYW1lcy5jcHA6ICQoV2ViQ29yZSkvZG9tL21ha2VfbmFtZXMucGwgJChXZWJD
b3JlKS9tYXRobWwvbWF0aHRhZ3MuaW4gJChXZWJDb3JlKS9tYXRobWwvbWF0aGF0dHJzLmluCkBA
IC00OTUsNyArNDk2LDcgQEAgZW5kaWYgIyBFTkQgRU5BQkxFX05PVElGSUNBVElPTlMKIGlmIEVO
QUJMRV9TVkcKIEZFQVRVUkVfREVGSU5FUyArPSBFTkFCTEVfU1ZHPTEKIHdlYmNvcmVfY3BwZmxh
Z3MgKz0gLURFTkFCTEVfU1ZHPTEKLVdFQkNPUkVfQ1NTX1BST1BFUlRZX05BTUVTICs9ICQoV2Vi
Q29yZSkvY3NzL1NWR0NTU1Byb3BlcnR5TmFtZXMuaW4gCitXRUJDT1JFX0NTU19QUk9QRVJUWV9O
QU1FUyArPSAkKFdlYkNvcmUpL2Nzcy9TVkdDU1NQcm9wZXJ0eU5hbWVzLmluCiBXRUJDT1JFX0NT
U19WQUxVRV9LRVlXT1JEUyArPSAkKFdlYkNvcmUpL2Nzcy9TVkdDU1NWYWx1ZUtleXdvcmRzLmlu
CiAKICMgU1ZHIEZlYXR1cmVzCkBAIC03NzgsNiArNzc5LDcgQEAgRGVyaXZlZFNvdXJjZXMvQU5H
TEUvZ2xzbGFuZ190YWIuY3BwOiBTbwogRGVyaXZlZFNvdXJjZXMvQU5HTEUvZ2xzbGFuZ190YWIu
aDogRGVyaXZlZFNvdXJjZXMvQU5HTEUvZ2xzbGFuZ190YWIuY3BwCiAKIElETF9QQVRIIDo9IFwK
KyAgICAkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL2dlb2xvY2F0aW9uIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvaW5kZXhlZGRiIFwKICAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0gXApAQCAtODI3LDcgKzgyOSw3IEBAIERl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlMlLmg6ICUuaWRsICQoU0MKIAkkKEFNX1ZfR0VOKSQoUEVS
TCkgLUkkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMgJChXZWJDb3JlKS9iaW5kaW5ncy9zY3Jp
cHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsICQoSURMX1BBVEg6JT0tLWluY2x1ZGUgIiUiKSAtLW91
dHB1dERpciAiJChHRU5TT1VSQ0VTX1dFQkNPUkUpIiAtLWRlZmluZXMgIkxBTkdVQUdFX0pBVkFT
Q1JJUFQ9MSAkKEZFQVRVUkVfREVGSU5FUykiIC0tZ2VuZXJhdG9yIEpTIC0tc3VwcGxlbWVudGFs
RGVwZW5kZW5jeUZpbGUgJChzdXBwbGVtZW50YWxfZGVwZW5kZW5jeV9maWxlKSAkPAogCiAjIFNl
ZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYzODgKLSMgV2UgbmVl
ZCB0byBpbnRyb2R1Y2UgYSBtYW51YWwgZGVwZW5kZW5jeSB0byBwcmV2ZW50IG5vbi1nZW5lcmF0
ZWQgc291cmNlcyBmcm9tIAorIyBXZSBuZWVkIHRvIGludHJvZHVjZSBhIG1hbnVhbCBkZXBlbmRl
bmN5IHRvIHByZXZlbnQgbm9uLWdlbmVyYXRlZCBzb3VyY2VzIGZyb20KICMgdHJ5aW5nIHRvIGJ1
aWxkIGJlZm9yZSB0aGUgZ2VuZXJhdGVkIG9uZXMuIFRoaXMgY2FuIGhhcHBlbiBpZiB0aGUgc3Vw
cGxlbWVudGFsCiAjIElETCBnZW5lcmF0aW9uIHRha2VzIGEgbG9uZyB0aW1lLiBUaGUgcGlwZSBy
ZXByZXNlbnRzIGFuIG9yZGVyLW9ubHkgZGVwZW5kZW5jeSwKICMgd2hpY2ggbWVhbnMgdGhhdCBH
TlVtYWtlIHdpbGwgb25seSB0cnkgdG8gYnVpbGQgdGhlIGRlcGVuZGVuY2llcyBmaXJzdCwgYnV0
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDExMDE0NykKKysr
IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTIw
MzksMTQgKzIwMzksMTQgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0Jsb2IuaCBcCiAJU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmggXAotCVNvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRGlyZWN0b3J5RW50cnkuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9y
eUVudHJ5LmggXAotCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5RW50cnlTeW5jLmNw
cCBcCi0JU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlFbnRyeVN5bmMuaCBcCi0JU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXIuY3BwIFwKLQlTb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlci5oIFwKLQlTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Rp
cmVjdG9yeVJlYWRlclN5bmMuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9y
eVJlYWRlclN5bmMuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVj
dG9yeUVudHJ5LmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVj
dG9yeUVudHJ5LmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3Rv
cnlFbnRyeVN5bmMuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGly
ZWN0b3J5RW50cnlTeW5jLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9E
aXJlY3RvcnlSZWFkZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RGlyZWN0b3J5UmVhZGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9E
aXJlY3RvcnlSZWFkZXJTeW5jLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuaCBcCiAJU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01G
aWxlUGF0aC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVBhdGguaCBcCiAJ
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcCBcCkBAIC00ODczLDEwICs0
ODczLDEwIEBAIGRvbV9iaW5kaW5nX2lkbHMgKz0gXAogCSQoV2ViQ29yZSkvZmlsZWFwaS9ET01G
aWxlU3lzdGVtLmlkbCBcCiAJJChXZWJDb3JlKS9maWxlYXBpL0RPTUZpbGVTeXN0ZW1TeW5jLmlk
bCBcCiAJJChXZWJDb3JlKS9maWxlYXBpL0RPTVdpbmRvd0ZpbGVTeXN0ZW0uaWRsIFwKLQkkKFdl
YkNvcmUpL2ZpbGVhcGkvRGlyZWN0b3J5RW50cnkuaWRsIFwKLQkkKFdlYkNvcmUpL2ZpbGVhcGkv
RGlyZWN0b3J5RW50cnlTeW5jLmlkbCBcCi0JJChXZWJDb3JlKS9maWxlYXBpL0RpcmVjdG9yeVJl
YWRlci5pZGwgXAotCSQoV2ViQ29yZSkvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJTeW5jLmlkbCBc
CisJJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnkuaWRsIFwKKwkk
KFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5bmMuaWRsIFwKKwkk
KFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXIuaWRsIFwKKwkkKFdl
YkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmlkbCBcCiAJJChX
ZWJDb3JlKS9maWxlYXBpL0VudHJpZXNDYWxsYmFjay5pZGwgXAogCSQoV2ViQ29yZSkvZmlsZWFw
aS9FbnRyeS5pZGwgXAogCSQoV2ViQ29yZSkvZmlsZWFwaS9FbnRyeUFycmF5LmlkbCBcCkBAIC01
ODI0LDcgKzU4MjQsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyTGF5ZXIuaCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmggCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgKIHdlYmNvcmVndGtfc291
cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vVGV4dHVy
ZU1hcHBlckNhaXJvLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vVGV4dHVyZU1hcHBlckNhaXJvLmgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTEwMTQ3
KQorKysgU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtNjY5LDEw
ICs2NjksMTAgQEAgU09VUkNFUyArPSBcCiAgICAgZmlsZWFwaS9ET01GaWxlU3lzdGVtQmFzZS5j
cHAgXAogICAgIGZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuY3BwIFwKICAgICBmaWxlYXBpL0RP
TVdpbmRvd0ZpbGVTeXN0ZW0uY3BwIFwKLSAgICBmaWxlYXBpL0RpcmVjdG9yeUVudHJ5LmNwcCBc
Ci0gICAgZmlsZWFwaS9EaXJlY3RvcnlFbnRyeVN5bmMuY3BwIFwKLSAgICBmaWxlYXBpL0RpcmVj
dG9yeVJlYWRlci5jcHAgXAotICAgIGZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyU3luYy5jcHAgXAor
ICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5jcHAgXAorICAgIE1vZHVsZXMv
ZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5bmMuY3BwIFwKKyAgICBNb2R1bGVzL2ZpbGVzeXN0
ZW0vRGlyZWN0b3J5UmVhZGVyLmNwcCBcCisgICAgTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9y
eVJlYWRlclN5bmMuY3BwIFwKICAgICBmaWxlYXBpL0VudHJ5LmNwcCBcCiAgICAgZmlsZWFwaS9F
bnRyeUFycmF5LmNwcCBcCiAgICAgZmlsZWFwaS9FbnRyeUFycmF5U3luYy5jcHAgXApAQCAtMzA1
OCwxMSArMzA1OCwxMSBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfREFUQV9UUkFOU0ZFUl9J
CiBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfRklMRV9TWVNURU09MSkgewogICAgIEhFQURFUlMg
Kz0gXAogICAgICAgICBmaWxlYXBpL0FzeW5jRmlsZVdyaXRlci5oIFwKLSAgICAgICAgZmlsZWFw
aS9EaXJlY3RvcnlFbnRyeS5oIFwKLSAgICAgICAgZmlsZWFwaS9EaXJlY3RvcnlFbnRyeVN5bmMu
aCBcCi0gICAgICAgIGZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyLmggXAotICAgICAgICBmaWxlYXBp
L0RpcmVjdG9yeVJlYWRlckJhc2UuaCBcCi0gICAgICAgIGZpbGVhcGkvRGlyZWN0b3J5UmVhZGVy
U3luYy5oIFwKKyAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmggXAor
ICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmggXAorICAgICAg
ICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmggXAorICAgICAgICBNb2R1bGVz
L2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyQmFzZS5oIFwKKyAgICAgICAgTW9kdWxlcy9maWxl
c3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuaCBcCiAgICAgICAgIGZpbGVhcGkvRE9NRmlsZVBh
dGguaCBcCiAgICAgICAgIGZpbGVhcGkvRE9NRmlsZVN5c3RlbS5oIFwKICAgICAgICAgZmlsZWFw
aS9ET01GaWxlU3lzdGVtQmFzZS5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEx
MDE0NykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAt
ODc4LDEwICs4NzgsMTAgQEAKICAgICAgICAgICAgICdkb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50
LmlkbCcsCiAgICAgICAgICAgICAnZG9tL1doZWVsRXZlbnQuaWRsJywKICAgICAgICAgICAgICdm
aWxlYXBpL0Jsb2IuaWRsJywKLSAgICAgICAgICAgICdmaWxlYXBpL0RpcmVjdG9yeUVudHJ5Lmlk
bCcsCi0gICAgICAgICAgICAnZmlsZWFwaS9EaXJlY3RvcnlFbnRyeVN5bmMuaWRsJywKLSAgICAg
ICAgICAgICdmaWxlYXBpL0RpcmVjdG9yeVJlYWRlci5pZGwnLAotICAgICAgICAgICAgJ2ZpbGVh
cGkvRGlyZWN0b3J5UmVhZGVyU3luYy5pZGwnLAorICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5
c3RlbS9EaXJlY3RvcnlFbnRyeS5pZGwnLAorICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3Rl
bS9EaXJlY3RvcnlFbnRyeVN5bmMuaWRsJywKKyAgICAgICAgICAgICdNb2R1bGVzL2ZpbGVzeXN0
ZW0vRGlyZWN0b3J5UmVhZGVyLmlkbCcsCisgICAgICAgICAgICAnTW9kdWxlcy9maWxlc3lzdGVt
L0RpcmVjdG9yeVJlYWRlclN5bmMuaWRsJywKICAgICAgICAgICAgICdmaWxlYXBpL0RPTUZpbGVT
eXN0ZW0uaWRsJywKICAgICAgICAgICAgICdmaWxlYXBpL0RPTUZpbGVTeXN0ZW1TeW5jLmlkbCcs
CiAgICAgICAgICAgICAnZmlsZWFwaS9ET01XaW5kb3dGaWxlU3lzdGVtLmlkbCcsCkBAIC0yNDIx
LDE1ICsyNDIxLDE1IEBACiAgICAgICAgICAgICAnZmlsZWFwaS9ET01GaWxlU3lzdGVtU3luYy5o
JywKICAgICAgICAgICAgICdmaWxlYXBpL0RPTVdpbmRvd0ZpbGVTeXN0ZW0uY3BwJywKICAgICAg
ICAgICAgICdmaWxlYXBpL0RPTVdpbmRvd0ZpbGVTeXN0ZW0uaCcsCi0gICAgICAgICAgICAnZmls
ZWFwaS9EaXJlY3RvcnlFbnRyeS5jcHAnLAotICAgICAgICAgICAgJ2ZpbGVhcGkvRGlyZWN0b3J5
RW50cnkuaCcsCi0gICAgICAgICAgICAnZmlsZWFwaS9EaXJlY3RvcnlFbnRyeVN5bmMuY3BwJywK
LSAgICAgICAgICAgICdmaWxlYXBpL0RpcmVjdG9yeUVudHJ5U3luYy5oJywKLSAgICAgICAgICAg
ICdmaWxlYXBpL0RpcmVjdG9yeVJlYWRlci5jcHAnLAotICAgICAgICAgICAgJ2ZpbGVhcGkvRGly
ZWN0b3J5UmVhZGVyLmgnLAotICAgICAgICAgICAgJ2ZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyQmFz
ZS5oJywKLSAgICAgICAgICAgICdmaWxlYXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuY3BwJywKLSAg
ICAgICAgICAgICdmaWxlYXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuaCcsCisgICAgICAgICAgICAn
TW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmNwcCcsCisgICAgICAgICAgICAnTW9k
dWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmgnLAorICAgICAgICAgICAgJ01vZHVsZXMv
ZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5bmMuY3BwJywKKyAgICAgICAgICAgICdNb2R1bGVz
L2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMv
ZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXIuY3BwJywKKyAgICAgICAgICAgICdNb2R1bGVzL2Zp
bGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5
c3RlbS9EaXJlY3RvcnlSZWFkZXJCYXNlLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5
c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy9maWxl
c3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuaCcsCiAgICAgICAgICAgICAnZmlsZWFwaS9FbnRy
aWVzQ2FsbGJhY2suaCcsCiAgICAgICAgICAgICAnZmlsZWFwaS9FbnRyeS5jcHAnLAogICAgICAg
ICAgICAgJ2ZpbGVhcGkvRW50cnkuaCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBy
aQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnByaQkocmV2aXNpb24gMTEw
MTQ3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTE4
LDYgKzE4LDcgQEAgV0VCQ09SRV9HRU5FUkFURURfU09VUkNFU19ESVIgPSAkJHtST09UXwogCiBJ
TkNMVURFUEFUSCArPSBcCiAgICAgJCRTT1VSQ0VfRElSIFwKKyAgICAkJFNPVVJDRV9ESVIvTW9k
dWxlcy9maWxlc3lzdGVtIFwKICAgICAkJFNPVVJDRV9ESVIvTW9kdWxlcy9nZW9sb2NhdGlvbiBc
CiAgICAgJCRTT1VSQ0VfRElSL01vZHVsZXMvaW5kZXhlZGRiIFwKICAgICAkJFNPVVJDRV9ESVIv
TW9kdWxlcy93ZWJkYXRhYmFzZSBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRGlyZWN0b3J5RW50cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5jcHAJKHJldmlzaW9uIDExMDE0NykJKGZy
b20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5jcHA6MTEwMTQ3KQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkRpcmVjdG9yeUVudHJ5LmgiCisKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisKKyNpbmNsdWRl
ICJEaXJlY3RvcnlSZWFkZXIuaCIKKyNpbmNsdWRlICJFbnRyeUNhbGxiYWNrLmgiCisjaW5jbHVk
ZSAiRXJyb3JDYWxsYmFjay5oIgorI2luY2x1ZGUgIkZpbGVFcnJvci5oIgorI2luY2x1ZGUgIlZv
aWRDYWxsYmFjay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0RpcmVjdG9yeUVudHJ5OjpE
aXJlY3RvcnlFbnRyeShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBmaWxlU3lzdGVtLCBj
b25zdCBTdHJpbmcmIGZ1bGxQYXRoKQorICAgIDogRW50cnkoZmlsZVN5c3RlbSwgZnVsbFBhdGgp
Cit7Cit9CisKK1Bhc3NSZWZQdHI8RGlyZWN0b3J5UmVhZGVyPiBEaXJlY3RvcnlFbnRyeTo6Y3Jl
YXRlUmVhZGVyKCkKK3sKKyAgICByZXR1cm4gRGlyZWN0b3J5UmVhZGVyOjpjcmVhdGUobV9maWxl
U3lzdGVtLCBtX2Z1bGxQYXRoKTsKK30KKwordm9pZCBEaXJlY3RvcnlFbnRyeTo6Z2V0RmlsZShj
b25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8V2ViS2l0RmxhZ3M+IGZsYWdzLCBQYXNzUmVm
UHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxi
YWNrPiBlcnJvckNhbGxiYWNrUmVmKQoreworICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJv
ckNhbGxiYWNrKGVycm9yQ2FsbGJhY2tSZWYpOworICAgIGlmICghbV9maWxlU3lzdGVtLT5nZXRG
aWxlKHRoaXMsIHBhdGgsIGZsYWdzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKQor
ICAgICAgICBmaWxlc3lzdGVtKCktPnNjaGVkdWxlQ2FsbGJhY2soZXJyb3JDYWxsYmFjay5yZWxl
YXNlKCksIEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6SU5WQUxJRF9NT0RJRklDQVRJT05f
RVJSKSk7Cit9CisKK3ZvaWQgRGlyZWN0b3J5RW50cnk6OmdldERpcmVjdG9yeShjb25zdCBTdHJp
bmcmIHBhdGgsIFBhc3NSZWZQdHI8V2ViS2l0RmxhZ3M+IGZsYWdzLCBQYXNzUmVmUHRyPEVudHJ5
Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJv
ckNhbGxiYWNrUmVmKQoreworICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNr
KGVycm9yQ2FsbGJhY2tSZWYpOworICAgIGlmICghbV9maWxlU3lzdGVtLT5nZXREaXJlY3Rvcnko
dGhpcywgcGF0aCwgZmxhZ3MsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpCisgICAg
ICAgIGZpbGVzeXN0ZW0oKS0+c2NoZWR1bGVDYWxsYmFjayhlcnJvckNhbGxiYWNrLnJlbGVhc2Uo
KSwgRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlIp
KTsKK30KKwordm9pZCBEaXJlY3RvcnlFbnRyeTo6cmVtb3ZlUmVjdXJzaXZlbHkoUGFzc1JlZlB0
cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNr
PiBlcnJvckNhbGxiYWNrUmVmKSBjb25zdAoreworICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBl
cnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2tSZWYpOworICAgIGlmICghbV9maWxlU3lzdGVtLT5y
ZW1vdmVSZWN1cnNpdmVseSh0aGlzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKQor
ICAgICAgICBmaWxlc3lzdGVtKCktPnNjaGVkdWxlQ2FsbGJhY2soZXJyb3JDYWxsYmFjay5yZWxl
YXNlKCksIEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6SU5WQUxJRF9NT0RJRklDQVRJT05f
RVJSKSk7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5o
CShyZXZpc2lvbiAxMTAxNDcpCShmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5
RW50cnkuaDoxMTAxNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGly
ZWN0b3J5RW50cnkuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBEaXJl
Y3RvcnlFbnRyeV9oCisjZGVmaW5lIERpcmVjdG9yeUVudHJ5X2gKKworI2lmIEVOQUJMRShGSUxF
X1NZU1RFTSkKKworI2luY2x1ZGUgIkVudHJ5LmgiCisjaW5jbHVkZSAiV2ViS2l0RmxhZ3MuaCIK
KyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBET01GaWxlU3lzdGVtQmFzZTsKK2NsYXNzIERpcmVjdG9yeVJlYWRlcjsKK2NsYXNzIEVu
dHJ5Q2FsbGJhY2s7CitjbGFzcyBFcnJvckNhbGxiYWNrOworY2xhc3MgVm9pZENhbGxiYWNrOwor
CitjbGFzcyBEaXJlY3RvcnlFbnRyeSA6IHB1YmxpYyBFbnRyeSB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnk+IGNyZWF0ZShQYXNzUmVmUHRyPERPTUZpbGVT
eXN0ZW1CYXNlPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEaXJlY3RvcnlFbnRyeShmaWxlU3lzdGVtLCBmdWxs
UGF0aCkpOworICAgIH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNEaXJlY3RvcnkoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9CisKKyAgICBQYXNzUmVmUHRyPERpcmVjdG9yeVJlYWRlcj4gY3JlYXRlUmVh
ZGVyKCk7CisgICAgdm9pZCBnZXRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxX
ZWJLaXRGbGFncz4gPSAwLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+ID0gMCwgUGFzc1JlZlB0
cjxFcnJvckNhbGxiYWNrPiA9IDApOworICAgIHZvaWQgZ2V0RGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYgcGF0aCwgUGFzc1JlZlB0cjxXZWJLaXRGbGFncz4gPSAwLCBQYXNzUmVmUHRyPEVudHJ5Q2Fs
bGJhY2s+ID0gMCwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiA9IDApOworICAgIHZvaWQgcmVt
b3ZlUmVjdXJzaXZlbHkoUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9
IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gPSAwKSBjb25zdDsKKworcHJpdmF0ZToKKyAg
ICBEaXJlY3RvcnlFbnRyeShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiwgY29uc3QgU3Ry
aW5nJiBmdWxsUGF0aCk7Cit9OworCit9IC8vIG5hbWVzcGFjZQorCisjZW5kaWYgLy8gRU5BQkxF
KEZJTEVfU1lTVEVNKQorCisjZW5kaWYgLy8gRGlyZWN0b3J5RW50cnlfaApJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5
RW50cnkuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsOCBAQAogI2lmIEVOQUJMRShGSUxF
X1NZU1RFTSkKIAogI2luY2x1ZGUgIkVudHJ5LmgiCi0jaW5jbHVkZSAiV2ViS2l0RmxhZ3MuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIldlYktpdEZsYWdzLmgiCiAj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnku
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJl
Y3RvcnlFbnRyeS5pZGwJKHJldmlzaW9uIDExMDE0NykJKGZyb20gU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9EaXJlY3RvcnlFbnRyeS5pZGw6MTEwMTQ3KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworbW9kdWxlIHN0b3JhZ2UgeworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlv
bmFsPUZJTEVfU1lTVEVNLAorICAgICAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCisgICAg
ICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAorICAgICAgICBKU05vU3RhdGljVGFibGVzCisgICAg
XSBEaXJlY3RvcnlFbnRyeSA6IEVudHJ5IHsKKyAgICAgICAgRGlyZWN0b3J5UmVhZGVyIGNyZWF0
ZVJlYWRlcigpOworICAgICAgICBbQ3VzdG9tXSB2b2lkIGdldEZpbGUoaW4gW1RyZWF0TnVsbEFz
PU51bGxTdHJpbmcsIFRyZWF0VW5kZWZpbmVkQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIHBhdGgs
IGluIFtPcHRpb25hbF0gV2ViS2l0RmxhZ3MgZmxhZ3MsIGluIFtPcHRpb25hbCwgQ2FsbGJhY2td
IEVudHJ5Q2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBpbiBbT3B0aW9uYWwsIENhbGxiYWNrXSBF
cnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOworICAgICAgICBbQ3VzdG9tXSB2b2lkIGdldERp
cmVjdG9yeShpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxs
U3RyaW5nXSBET01TdHJpbmcgcGF0aCwgaW4gW09wdGlvbmFsXSBXZWJLaXRGbGFncyBmbGFncywg
aW4gW09wdGlvbmFsLCBDYWxsYmFja10gRW50cnlDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIGlu
IFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7CisgICAg
ICAgIHZvaWQgcmVtb3ZlUmVjdXJzaXZlbHkoaW4gW0NhbGxiYWNrXSBWb2lkQ2FsbGJhY2sgc3Vj
Y2Vzc0NhbGxiYWNrLCBpbiBbT3B0aW9uYWwsIENhbGxiYWNrXSBFcnJvckNhbGxiYWNrIGVycm9y
Q2FsbGJhY2spOworICAgIH07Cit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmNwcAkocmV2aXNpb24gMTEw
MTQ3KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5U3luYy5jcHA6
MTEwMTQ3KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVu
dHJ5U3luYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeVN5bmMuaCIKKworI2lmIEVOQUJMRShGSUxF
X1NZU1RFTSkKKworI2luY2x1ZGUgIkRpcmVjdG9yeVJlYWRlclN5bmMuaCIKKyNpbmNsdWRlICJF
bnRyeVN5bmMuaCIKKyNpbmNsdWRlICJGaWxlRW50cnlTeW5jLmgiCisjaW5jbHVkZSAiRmlsZUV4
Y2VwdGlvbi5oIgorI2luY2x1ZGUgIlN5bmNDYWxsYmFja0hlbHBlci5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK0RpcmVjdG9yeUVudHJ5U3luYzo6RGlyZWN0b3J5RW50cnlTeW5jKFBhc3NS
ZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBh
dGgpCisgICAgOiBFbnRyeVN5bmMoZmlsZVN5c3RlbSwgZnVsbFBhdGgpCit7Cit9CisKK1Bhc3NS
ZWZQdHI8RGlyZWN0b3J5UmVhZGVyU3luYz4gRGlyZWN0b3J5RW50cnlTeW5jOjpjcmVhdGVSZWFk
ZXIoRXhjZXB0aW9uQ29kZSYpCit7CisgICAgcmV0dXJuIERpcmVjdG9yeVJlYWRlclN5bmM6OmNy
ZWF0ZShtX2ZpbGVTeXN0ZW0sIG1fZnVsbFBhdGgpOworfQorCitQYXNzUmVmUHRyPEZpbGVFbnRy
eVN5bmM+IERpcmVjdG9yeUVudHJ5U3luYzo6Z2V0RmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIFBh
c3NSZWZQdHI8V2ViS2l0RmxhZ3M+IGZsYWdzLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBl
YyA9IDA7CisgICAgRW50cnlTeW5jQ2FsbGJhY2tIZWxwZXIgaGVscGVyKG1fZmlsZVN5c3RlbS0+
YXN5bmNGaWxlU3lzdGVtKCkpOworICAgIGlmICghbV9maWxlU3lzdGVtLT5nZXRGaWxlKHRoaXMs
IHBhdGgsIGZsYWdzLCBoZWxwZXIuc3VjY2Vzc0NhbGxiYWNrKCksIGhlbHBlci5lcnJvckNhbGxi
YWNrKCkpKSB7CisgICAgICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6SU5WQUxJRF9NT0RJRklDQVRJ
T05fRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIHN0YXRpY19wb2lu
dGVyX2Nhc3Q8RmlsZUVudHJ5U3luYz4oaGVscGVyLmdldFJlc3VsdChlYykpOworfQorCitQYXNz
UmVmUHRyPERpcmVjdG9yeUVudHJ5U3luYz4gRGlyZWN0b3J5RW50cnlTeW5jOjpnZXREaXJlY3Rv
cnkoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPFdlYktpdEZsYWdzPiBmbGFncywgRXhj
ZXB0aW9uQ29kZSYgZWMpCit7CisgICAgZWMgPSAwOworICAgIEVudHJ5U3luY0NhbGxiYWNrSGVs
cGVyIGhlbHBlcihtX2ZpbGVTeXN0ZW0tPmFzeW5jRmlsZVN5c3RlbSgpKTsKKyAgICBpZiAoIW1f
ZmlsZVN5c3RlbS0+Z2V0RGlyZWN0b3J5KHRoaXMsIHBhdGgsIGZsYWdzLCBoZWxwZXIuc3VjY2Vz
c0NhbGxiYWNrKCksIGhlbHBlci5lcnJvckNhbGxiYWNrKCkpKSB7CisgICAgICAgIGVjID0gRmls
ZUV4Y2VwdGlvbjo6SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSOworICAgICAgICByZXR1cm4gMDsK
KyAgICB9CisgICAgcmV0dXJuIHN0YXRpY19wb2ludGVyX2Nhc3Q8RGlyZWN0b3J5RW50cnlTeW5j
PihoZWxwZXIuZ2V0UmVzdWx0KGVjKSk7Cit9CisKK3ZvaWQgRGlyZWN0b3J5RW50cnlTeW5jOjpy
ZW1vdmVSZWN1cnNpdmVseShFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBlYyA9IDA7CisgICAg
Vm9pZFN5bmNDYWxsYmFja0hlbHBlciBoZWxwZXIobV9maWxlU3lzdGVtLT5hc3luY0ZpbGVTeXN0
ZW0oKSk7CisgICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPnJlbW92ZVJlY3Vyc2l2ZWx5KHRoaXMsIGhl
bHBlci5zdWNjZXNzQ2FsbGJhY2soKSwgaGVscGVyLmVycm9yQ2FsbGJhY2soKSkpIHsKKyAgICAg
ICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlI7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgaGVscGVyLmdldFJlc3VsdChlYyk7Cit9CisKK30KKworI2Vu
ZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5bmMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmgJKHJldmlzaW9uIDEx
MDE0NykJKGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlFbnRyeVN5bmMuaDox
MTAxNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50
cnlTeW5jLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRGlyZWN0b3J5
RW50cnlTeW5jX2gKKyNkZWZpbmUgRGlyZWN0b3J5RW50cnlTeW5jX2gKKworI2lmIEVOQUJMRShG
SUxFX1NZU1RFTSkKKworI2luY2x1ZGUgIkVudHJ5U3luYy5oIgorI2luY2x1ZGUgIldlYktpdEZs
YWdzLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgRGlyZWN0b3J5UmVhZGVyU3luYzsKK2NsYXNzIEZpbGVFbnRyeVN5bmM7CisK
K2NsYXNzIERpcmVjdG9yeUVudHJ5U3luYyA6IHB1YmxpYyBFbnRyeVN5bmMgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5U3luYz4gY3JlYXRlKFBhc3NSZWZQ
dHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERpcmVjdG9yeUVudHJ5U3luYyhm
aWxlU3lzdGVtLCBmdWxsUGF0aCkpOworICAgIH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNEaXJlY3Rv
cnkoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKKyAgICBQYXNzUmVmUHRyPERpcmVjdG9yeVJl
YWRlclN5bmM+IGNyZWF0ZVJlYWRlcihFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxG
aWxlRW50cnlTeW5jPiBnZXRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxXZWJL
aXRGbGFncz4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5
U3luYz4gZ2V0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxXZWJLaXRG
bGFncz4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHJlbW92ZVJlY3Vyc2l2ZWx5KEV4Y2Vw
dGlvbkNvZGUmKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgRW50cnlTeW5jOworICAg
IERpcmVjdG9yeUVudHJ5U3luYyhQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiwgY29uc3Qg
U3RyaW5nJiBmdWxsUGF0aCk7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNU
RU0pCisKKyNlbmRpZiAvLyBEaXJlY3RvcnlFbnRyeVN5bmNfaApJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5bmMuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3Rv
cnlFbnRyeVN5bmMuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsOCBAQAogI2lmIEVOQUJM
RShGSUxFX1NZU1RFTSkKIAogI2luY2x1ZGUgIkVudHJ5U3luYy5oIgotI2luY2x1ZGUgIldlYktp
dEZsYWdzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJLaXRG
bGFncy5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVj
dG9yeUVudHJ5U3luYy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5pZGwJKHJldmlzaW9uIDExMDE0NykJKGZyb20g
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlFbnRyeVN5bmMuaWRsOjExMDE0NykKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5bmMuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgc3RvcmFnZSB7CisgICAgaW50
ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0sCisgICAgICAgIEpTR2Vu
ZXJhdGVUb05hdGl2ZU9iamVjdCwKKyAgICAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCisgICAg
ICAgIEpTTm9TdGF0aWNUYWJsZXMKKyAgICBdIERpcmVjdG9yeUVudHJ5U3luYyA6IEVudHJ5U3lu
YyB7CisgICAgICAgIERpcmVjdG9yeVJlYWRlclN5bmMgY3JlYXRlUmVhZGVyKCkgcmFpc2VzIChG
aWxlRXhjZXB0aW9uKTsKKyAgICAgICAgW0N1c3RvbV0gRmlsZUVudHJ5U3luYyBnZXRGaWxlKGlu
IFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBUcmVhdFVuZGVmaW5lZEFzPU51bGxTdHJpbmddIERP
TVN0cmluZyBwYXRoLCBpbiBXZWJLaXRGbGFncyBmbGFncykgcmFpc2VzIChGaWxlRXhjZXB0aW9u
KTsKKyAgICAgICAgW0N1c3RvbV0gRGlyZWN0b3J5RW50cnlTeW5jIGdldERpcmVjdG9yeShpbiBb
VHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3RyaW5nXSBET01T
dHJpbmcgcGF0aCwgaW4gV2ViS2l0RmxhZ3MgZmxhZ3MpIHJhaXNlcyAoRmlsZUV4Y2VwdGlvbik7
CisgICAgICAgIHZvaWQgcmVtb3ZlUmVjdXJzaXZlbHkoKSByYWlzZXMgKEZpbGVFeGNlcHRpb24p
OworICAgIH07Cit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGly
ZWN0b3J5UmVhZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmNwcAkocmV2aXNpb24gMTEwMTQ3KQkoZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlci5jcHA6MTEwMTQ3KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEaXJl
Y3RvcnlSZWFkZXIuaCIKKworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKworI2luY2x1ZGUgIkVu
dHJpZXNDYWxsYmFjay5oIgorI2luY2x1ZGUgIkVudHJ5QXJyYXkuaCIKKyNpbmNsdWRlICJFcnJv
ckNhbGxiYWNrLmgiCisjaW5jbHVkZSAiRmlsZUVycm9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworRGlyZWN0b3J5UmVhZGVyOjpEaXJlY3RvcnlSZWFkZXIoUGFzc1JlZlB0cjxET01GaWxl
U3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKKyAgICA6IERp
cmVjdG9yeVJlYWRlckJhc2UoZmlsZVN5c3RlbSwgZnVsbFBhdGgpCit7Cit9CisKK3ZvaWQgRGly
ZWN0b3J5UmVhZGVyOjpyZWFkRW50cmllcyhQYXNzUmVmUHRyPEVudHJpZXNDYWxsYmFjaz4gZW50
cmllc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCit7
CisgICAgaWYgKCFtX2hhc01vcmVFbnRyaWVzKSB7CisgICAgICAgIGZpbGVzeXN0ZW0oKS0+c2No
ZWR1bGVDYWxsYmFjayhlbnRyaWVzQ2FsbGJhY2ssIEVudHJ5QXJyYXk6OmNyZWF0ZSgpKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBmaWxlc3lzdGVtKCktPnJlYWREaXJlY3RvcnkodGhp
cywgbV9mdWxsUGF0aCwgZW50cmllc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKK30KKworfQor
CisjZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXIuaAkocmV2aXNpb24gMTEw
MTQ3KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlci5oOjExMDE0
NykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBEaXJlY3RvcnlSZWFkZXJf
aAorI2RlZmluZSBEaXJlY3RvcnlSZWFkZXJfaAorCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQor
CisjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIkRpcmVjdG9yeVJlYWRlckJh
c2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBFbnRyaWVzQ2FsbGJhY2s7CitjbGFzcyBFbnRyaWVzQ2FsbGJhY2tzOworY2xh
c3MgRXJyb3JDYWxsYmFjazsKKworY2xhc3MgRGlyZWN0b3J5UmVhZGVyIDogcHVibGljIERpcmVj
dG9yeVJlYWRlckJhc2UgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERpcmVjdG9y
eVJlYWRlcj4gY3JlYXRlKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0s
IGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IERpcmVjdG9yeVJlYWRlcihmaWxlU3lzdGVtLCBmdWxsUGF0aCkpOworICAgIH0KKworICAg
IHZvaWQgcmVhZEVudHJpZXMoUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+LCBQYXNzUmVmUHRy
PEVycm9yQ2FsbGJhY2s+ID0gMCk7CisKKyAgICBET01GaWxlU3lzdGVtKiBmaWxlc3lzdGVtKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRmlsZVN5c3RlbSo+KG1fZmlsZVN5c3RlbS5n
ZXQoKSk7IH0KKworcHJpdmF0ZToKKyAgICBEaXJlY3RvcnlSZWFkZXIoUGFzc1JlZlB0cjxET01G
aWxlU3lzdGVtQmFzZT4sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpOworfTsKKworfQorCisjZW5k
aWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjZW5kaWYgLy8gRGlyZWN0b3J5UmVhZGVyX2gK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXIu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJl
Y3RvcnlSZWFkZXIuaWRsCShyZXZpc2lvbiAxMTAxNDcpCShmcm9tIFNvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRGlyZWN0b3J5UmVhZGVyLmlkbDoxMTAxNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworbW9kdWxlIHN0b3JhZ2UgeworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRp
dGlvbmFsPUZJTEVfU1lTVEVNLAorICAgICAgICBKU05vU3RhdGljVGFibGVzCisgICAgXSBEaXJl
Y3RvcnlSZWFkZXIgeworICAgICAgICB2b2lkIHJlYWRFbnRyaWVzKGluIFtDYWxsYmFja10gRW50
cmllc0NhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4gW09wdGlvbmFsLCBDYWxsYmFja10gRXJy
b3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKTsKKyAgICB9OworfQpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlckJhc2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyQmFzZS5o
CShyZXZpc2lvbiAxMTAxNDcpCShmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5
UmVhZGVyQmFzZS5oOjExMDE0NykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9EaXJlY3RvcnlSZWFkZXJCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgRGlyZWN0b3J5UmVhZGVyQmFzZV9oCisjZGVmaW5lIERpcmVjdG9yeVJlYWRlckJhc2Vf
aAorCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbUJh
c2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBEaXJlY3RvcnlSZWFkZXJCYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8RGlyZWN0
b3J5UmVhZGVyQmFzZT4geworcHVibGljOgorICAgIERPTUZpbGVTeXN0ZW1CYXNlKiBmaWxlc3lz
dGVtKCkgY29uc3QgeyByZXR1cm4gbV9maWxlU3lzdGVtLmdldCgpOyB9CisgICAgdm9pZCBzZXRI
YXNNb3JlRW50cmllcyhib29sIGhhc01vcmVFbnRyaWVzKSB7IG1faGFzTW9yZUVudHJpZXMgPSBo
YXNNb3JlRW50cmllczsgfQorCitwcm90ZWN0ZWQ6CisgICAgRGlyZWN0b3J5UmVhZGVyQmFzZShQ
YXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1
bGxQYXRoKQorICAgICAgICA6IG1fZmlsZVN5c3RlbShmaWxlU3lzdGVtKQorICAgICAgICAsIG1f
ZnVsbFBhdGgoZnVsbFBhdGgpCisgICAgICAgICwgbV9oYXNNb3JlRW50cmllcyh0cnVlKQorICAg
IHsKKyAgICB9CisKKyAgICBSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IG1fZmlsZVN5c3RlbTsK
KworICAgIC8vIFRoaXMgaXMgYSB2aXJ0dWFsIHBhdGguCisgICAgU3RyaW5nIG1fZnVsbFBhdGg7
CisKKyAgICBib29sIG1faGFzTW9yZUVudHJpZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCisKKyNlbmRpZiAvLyBEaXJlY3Rv
cnlSZWFkZXJCYXNlX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9E
aXJlY3RvcnlSZWFkZXJTeW5jLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyU3luYy5jcHAJKHJldmlzaW9uIDExMDE0NykJ
KGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJTeW5jLmNwcDoxMTAx
NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVy
U3luYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJEaXJlY3RvcnlSZWFkZXJTeW5jLmgiCisKKyNpZiBFTkFCTEUoRklMRV9T
WVNURU0pCisKKyNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeS5oIgorI2luY2x1ZGUgIkRpcmVjdG9y
eUVudHJ5U3luYy5oIgorI2luY2x1ZGUgIkVudHJ5QXJyYXlTeW5jLmgiCisjaW5jbHVkZSAiRW50
cnlTeW5jLmgiCisjaW5jbHVkZSAiRmlsZUVudHJ5U3luYy5oIgorI2luY2x1ZGUgIkZpbGVFeGNl
cHRpb24uaCIKKyNpbmNsdWRlICJTeW5jQ2FsbGJhY2tIZWxwZXIuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitEaXJlY3RvcnlSZWFkZXJTeW5jOjpEaXJlY3RvcnlSZWFkZXJTeW5jKFBhc3NS
ZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBh
dGgpCisgICAgOiBEaXJlY3RvcnlSZWFkZXJCYXNlKGZpbGVTeXN0ZW0sIGZ1bGxQYXRoKQorewor
fQorCitQYXNzUmVmUHRyPEVudHJ5QXJyYXlTeW5jPiBEaXJlY3RvcnlSZWFkZXJTeW5jOjpyZWFk
RW50cmllcyhFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBlYyA9IDA7CisgICAgaWYgKCFtX2hh
c01vcmVFbnRyaWVzKQorICAgICAgICByZXR1cm4gRW50cnlBcnJheVN5bmM6OmNyZWF0ZSgpOwor
CisgICAgRW50cmllc1N5bmNDYWxsYmFja0hlbHBlciBoZWxwZXIobV9maWxlU3lzdGVtLT5hc3lu
Y0ZpbGVTeXN0ZW0oKSk7CisgICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPnJlYWREaXJlY3RvcnkodGhp
cywgbV9mdWxsUGF0aCwgaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIuZXJyb3JDYWxs
YmFjaygpKSkgeworICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246OklOVkFMSURfTU9ESUZJQ0FU
SU9OX0VSUjsKKyAgICAgICAgc2V0SGFzTW9yZUVudHJpZXMoZmFsc2UpOworICAgICAgICByZXR1
cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIGhlbHBlci5nZXRSZXN1bHQoZWMpOworfQorCit9IC8v
IG5hbWVzcGFjZQorCisjZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVy
U3luYy5oCShyZXZpc2lvbiAxMTAxNDcpCShmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGly
ZWN0b3J5UmVhZGVyU3luYy5oOjExMDE0NykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgRGlyZWN0b3J5UmVhZGVyU3luY19oCisjZGVmaW5lIERpcmVjdG9yeVJlYWRl
clN5bmNfaAorCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjaW5jbHVkZSAiRGlyZWN0b3J5
UmVhZGVyQmFzZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEVudHJ5QXJyYXlTeW5jOworCit0eXBlZGVmIGludCBFeGNlcHRp
b25Db2RlOworCitjbGFzcyBEaXJlY3RvcnlSZWFkZXJTeW5jIDogcHVibGljIERpcmVjdG9yeVJl
YWRlckJhc2UgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERpcmVjdG9yeVJlYWRl
clN5bmM+IGNyZWF0ZShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBmaWxlU3lzdGVtLCBj
b25zdCBTdHJpbmcmIGZ1bGxQYXRoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBEaXJlY3RvcnlSZWFkZXJTeW5jKGZpbGVTeXN0ZW0sIGZ1bGxQYXRoKSk7CisgICAgfQorCisg
ICAgUGFzc1JlZlB0cjxFbnRyeUFycmF5U3luYz4gcmVhZEVudHJpZXMoRXhjZXB0aW9uQ29kZSYp
OworCitwcml2YXRlOgorICAgIERpcmVjdG9yeVJlYWRlclN5bmMoUGFzc1JlZlB0cjxET01GaWxl
U3lzdGVtQmFzZT4sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UKKworI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKKworI2VuZGlmIC8vIERpcmVjdG9y
eVJlYWRlclN5bmNfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0Rp
cmVjdG9yeVJlYWRlclN5bmMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmlkbAkocmV2aXNpb24gMTEwMTQ3KQko
ZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuaWRsOjExMDE0
NykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJT
eW5jLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIHN0b3JhZ2Ugewor
ICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPUZJTEVfU1lTVEVNLAorICAgICAg
ICBKU05vU3RhdGljVGFibGVzCisgICAgXSBEaXJlY3RvcnlSZWFkZXJTeW5jIHsKKyAgICAgICAg
RW50cnlBcnJheVN5bmMgcmVhZEVudHJpZXMoKSByYWlzZXMgKEZpbGVFeGNlcHRpb24pOworICAg
IH07Cit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAkocmV2aXNp
b24gMTEwMTQ3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAJKHdv
cmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAKICAgICAnd2ViY29yZV9pbmNsdWRlX2RpcnMn
OiBbCiAgICAgICAnLi4vJywKICAgICAgICcuLi8uLicsCisgICAgICAnLi4vTW9kdWxlcy9maWxl
c3lzdGVtJywKICAgICAgICcuLi9Nb2R1bGVzL2dhbWVwYWQnLAogICAgICAgJy4uL01vZHVsZXMv
Z2VvbG9jYXRpb24nLAogICAgICAgJy4uL01vZHVsZXMvaW50ZW50cycsCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAxMTAxNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTk3NTQsNyArOTc1NCw3IEBACiAJCTg2MUMyRUE1MTNG
QjRGRkYwMDA2MkFCQiAvKiBSZXNvdXJjZUxvYWRUaW1pbmcuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VMb2FkVGltaW5nLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODYyNDNEMDAxMUJDMzFGNzAwQ0MwMDZBIC8qIEpTQXJyYXlCdWZm
ZXJWaWV3SGVscGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXJyYXlC
dWZmZXJWaWV3SGVscGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2RDk4MkY2
MTI1QzE1NDAwMEFEOUUzRCAvKiBEb2N1bWVudFRpbWluZy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBEb2N1bWVudFRpbWluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk4OTBBRTBFMDEyNTZBMDc5MDBGNTk2OEMgLyogRGlyZWN0b3J5UmVhZGVyQmFzZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEaXJlY3RvcnlSZWFkZXJCYXNlLmg7IHBh
dGggPSBmaWxlYXBpL0RpcmVjdG9yeVJlYWRlckJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJODkwQUUwRTAxMjU2QTA3OTAwRjU5NjhDIC8qIERpcmVjdG9yeVJlYWRlckJhc2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGlyZWN0b3J5UmVhZGVyQmFzZS5o
OyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlckJhc2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODkyQ0YxOEQxMzRDNjIwRDAwQUFFREExIC8qIFN0b3Jh
Z2VJbmZvRXJyb3JDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
dG9yYWdlSW5mb0Vycm9yQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODkyQ0YxOEUxMzRDNjIwRDAwQUFFREExIC8qIFN0b3JhZ2VJbmZvUXVvdGFDYWxsYmFjay5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlSW5mb1F1b3RhQ2FsbGJhY2su
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODkyQ0YxOEYxMzRDNjIwRDAwQUFFREEx
IC8qIFN0b3JhZ2VJbmZvVXNhZ2VDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTdG9yYWdlSW5mb1VzYWdlQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTk3NzUsMTAgKzk3NzUsMTAgQEAKIAkJODkzQzQ3QkExMjM4QTBBOTAwMkIzRDg2
IC8qIEpTRmlsZVdyaXRlckNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTRmlsZVdyaXRlckNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTg5M0M0N0NBMTIzRUVCQTIwMDJCM0Q4NiAvKiBKU0VudHJ5Q3VzdG9tLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRW50cnlDdXN0b20uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4OTNDNDdERTEyM0VGNEE5MDAyQjNEODYgLyogSlNEaXJlY3Rv
cnlFbnRyeUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0RpcmVjdG9yeUVudHJ5Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
ODkzQzQ3RjAxMjQ4QkQzOTAwMkIzRDg2IC8qIERpcmVjdG9yeUVudHJ5U3luYy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEaXJlY3RvcnlFbnRyeVN5bmMuY3BwOyBw
YXRoID0gZmlsZWFwaS9EaXJlY3RvcnlFbnRyeVN5bmMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk4OTNDNDdGMTEyNDhCRDM5MDAyQjNEODYgLyogRGlyZWN0b3J5RW50cnlTeW5j
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERpcmVjdG9yeUVudHJ5U3luYy5o
OyBwYXRoID0gZmlsZWFwaS9EaXJlY3RvcnlFbnRyeVN5bmMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJODkzQzQ3RjIxMjQ4QkQzOTAwMkIzRDg2IC8qIERpcmVjdG9yeVJlYWRlclN5
bmMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRGlyZWN0b3J5UmVh
ZGVyU3luYy5jcHA7IHBhdGggPSBmaWxlYXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4OTNDNDdGMzEyNDhCRDM5MDAyQjNEODYgLyogRGly
ZWN0b3J5UmVhZGVyU3luYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEaXJl
Y3RvcnlSZWFkZXJTeW5jLmg7IHBhdGggPSBmaWxlYXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODkzQzQ3RjAxMjQ4QkQzOTAwMkIzRDg2IC8q
IERpcmVjdG9yeUVudHJ5U3luYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBEaXJlY3RvcnlFbnRyeVN5bmMuY3BwOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0Rp
cmVjdG9yeUVudHJ5U3luYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg5M0M0
N0YxMTI0OEJEMzkwMDJCM0Q4NiAvKiBEaXJlY3RvcnlFbnRyeVN5bmMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gRGlyZWN0b3J5RW50cnlTeW5jLmg7IHBhdGggPSBNb2R1bGVz
L2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTg5M0M0N0YyMTI0OEJEMzkwMDJCM0Q4NiAvKiBEaXJlY3RvcnlSZWFkZXJTeW5jLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERpcmVjdG9yeVJlYWRlclN5
bmMuY3BwOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4OTNDNDdGMzEyNDhCRDM5MDAyQjNEODYg
LyogRGlyZWN0b3J5UmVhZGVyU3luYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBEaXJlY3RvcnlSZWFkZXJTeW5jLmg7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0
b3J5UmVhZGVyU3luYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4OTNDNDdGNDEy
NDhCRDM5MDAyQjNEODYgLyogRE9NRmlsZVN5c3RlbUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gRE9NRmlsZVN5c3RlbUJhc2UuY3BwOyBwYXRoID0gZmlsZWFw
aS9ET01GaWxlU3lzdGVtQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5
M0M0N0Y1MTI0OEJEMzkwMDJCM0Q4NiAvKiBET01GaWxlU3lzdGVtQmFzZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBET01GaWxlU3lzdGVtQmFzZS5oOyBwYXRoID0gZmlsZWFw
aS9ET01GaWxlU3lzdGVtQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4OTND
NDdGNjEyNDhCRDM5MDAyQjNEODYgLyogRE9NRmlsZVN5c3RlbVN5bmMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRE9NRmlsZVN5c3RlbVN5bmMuY3BwOyBwYXRoID0g
ZmlsZWFwaS9ET01GaWxlU3lzdGVtU3luYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC05ODA0LDEwICs5ODA0LDEwIEBACiAJCTg5M0M0ODMwMTI0OTU0NzIwMDJCM0Q4NiAvKiBK
U0ZpbGVFbnRyeVN5bmMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNGaWxlRW50cnlTeW5jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODkzQzQ4
MzExMjQ5NTQ3MjAwMkIzRDg2IC8qIEpTRmlsZUVudHJ5U3luYy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0ZpbGVFbnRyeVN5bmMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODkzQzQ4NTIxMjQ5OUIwNjAwMkIzRDg2IC8qIEpTRW50cnlTeW5jQ3VzdG9tLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRW50cnlTeW5jQ3VzdG9t
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODk4Nzg1MzkxMjJDQTA2NDAwM0FB
QkRBIC8qIERpcmVjdG9yeUVudHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IERpcmVjdG9yeUVudHJ5LmNwcDsgcGF0aCA9IGZpbGVhcGkvRGlyZWN0b3J5RW50cnku
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4OTg3ODUzQTEyMkNBMDY0MDAzQUFC
REEgLyogRGlyZWN0b3J5RW50cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
RGlyZWN0b3J5RW50cnkuaDsgcGF0aCA9IGZpbGVhcGkvRGlyZWN0b3J5RW50cnkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODk4Nzg1M0IxMjJDQTA2NDAwM0FBQkRBIC8qIERpcmVj
dG9yeVJlYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEaXJl
Y3RvcnlSZWFkZXIuY3BwOyBwYXRoID0gZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4OTg3ODUzQzEyMkNBMDY0MDAzQUFCREEgLyogRGly
ZWN0b3J5UmVhZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERpcmVjdG9y
eVJlYWRlci5oOyBwYXRoID0gZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJODk4Nzg1MzkxMjJDQTA2NDAwM0FBQkRBIC8qIERpcmVjdG9yeUVu
dHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERpcmVjdG9yeUVu
dHJ5LmNwcDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg5ODc4NTNBMTIyQ0EwNjQwMDNBQUJEQSAvKiBE
aXJlY3RvcnlFbnRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEaXJlY3Rv
cnlFbnRyeS5oOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg5ODc4NTNCMTIyQ0EwNjQwMDNBQUJEQSAvKiBE
aXJlY3RvcnlSZWFkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
RGlyZWN0b3J5UmVhZGVyLmNwcDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlS
ZWFkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4OTg3ODUzQzEyMkNBMDY0
MDAzQUFCREEgLyogRGlyZWN0b3J5UmVhZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IERpcmVjdG9yeVJlYWRlci5oOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVj
dG9yeVJlYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4OTg3ODUzRDEyMkNB
MDY0MDAzQUFCREEgLyogRE9NRmlsZVBhdGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gRE9NRmlsZVBhdGguY3BwOyBwYXRoID0gZmlsZWFwaS9ET01GaWxlUGF0aC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5ODc4NTNFMTIyQ0EwNjQwMDNBQUJE
QSAvKiBET01GaWxlUGF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBET01G
aWxlUGF0aC5oOyBwYXRoID0gZmlsZWFwaS9ET01GaWxlUGF0aC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4OTg3ODUzRjEyMkNBMDY0MDAzQUFCREEgLyogRE9NRmlsZVN5c3RlbS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBET01GaWxlU3lzdGVtLmNw
cDsgcGF0aCA9IGZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xMjg4MywxMCArMTI4ODMsMTAgQEAKIAkJRTFBNjQzRjEwRUMwOTcyNTAwNzc5
NjY4IC8qIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV29ya2VyU2NyaXB0Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMUE2NDNGQzBFQzA5N0EwMDA3Nzk2NjggLyogV29ya2VyU2NyaXB0Q29udHJvbGxl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrZXJTY3JpcHRD
b250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBQjFFQTgxNEU5
RTI3RDAwNDQ5RTEzIC8qIEZpbGVMaXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBGaWxl
TGlzdC5pZGw7IHBhdGggPSBmaWxlYXBpL0ZpbGVMaXN0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRTFBQjFFQUIxNEU5RTJFRjAwNDQ5RTEzIC8qIERpcmVjdG9yeUVudHJ5Lmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IG5hbWUgPSBEaXJlY3RvcnlFbnRyeS5pZGw7IHBhdGggPSBmaWxlYXBpL0RpcmVjdG9yeUVudHJ5
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFBQjFFQUMxNEU5RTJGODAwNDQ5
RTEzIC8qIERpcmVjdG9yeUVudHJ5U3luYy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRGlyZWN0b3J5RW50cnlTeW5jLmlk
bDsgcGF0aCA9IGZpbGVhcGkvRGlyZWN0b3J5RW50cnlTeW5jLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJRTFBQjFFQUQxNEU5RTMwNTAwNDQ5RTEzIC8qIERpcmVjdG9yeVJlYWRl
ci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBuYW1lID0gRGlyZWN0b3J5UmVhZGVyLmlkbDsgcGF0aCA9IGZpbGVhcGkvRGlyZWN0b3J5
UmVhZGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFBQjFFQUUxNEU5RTMw
QjAwNDQ5RTEzIC8qIERpcmVjdG9yeVJlYWRlclN5bmMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IERpcmVjdG9yeVJlYWRl
clN5bmMuaWRsOyBwYXRoID0gZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJTeW5jLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTFBQjFFQUIxNEU5RTJFRjAwNDQ5RTEzIC8qIERpcmVj
dG9yeUVudHJ5LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IG5hbWUgPSBEaXJlY3RvcnlFbnRyeS5pZGw7IHBhdGggPSBNb2R1bGVzL2Zp
bGVzeXN0ZW0vRGlyZWN0b3J5RW50cnkuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFMUFCMUVBQzE0RTlFMkY4MDA0NDlFMTMgLyogRGlyZWN0b3J5RW50cnlTeW5jLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUg
PSBEaXJlY3RvcnlFbnRyeVN5bmMuaWRsOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVj
dG9yeUVudHJ5U3luYy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxQUIxRUFE
MTRFOUUzMDUwMDQ0OUUxMyAvKiBEaXJlY3RvcnlSZWFkZXIuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IERpcmVjdG9yeVJl
YWRlci5pZGw7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTFBQjFFQUUxNEU5RTMwQjAwNDQ5RTEzIC8q
IERpcmVjdG9yeVJlYWRlclN5bmMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IERpcmVjdG9yeVJlYWRlclN5bmMuaWRsOyBw
YXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMUFCMUVBRjE0RTlFMzE3MDA0NDlFMTMgLyogRE9NRmls
ZVN5c3RlbVN5bmMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgbmFtZSA9IERPTUZpbGVTeXN0ZW1TeW5jLmlkbDsgcGF0aCA9IGZpbGVh
cGkvRE9NRmlsZVN5c3RlbVN5bmMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MUFCMUVCMDE0RTlFMzIzMDA0NDlFMTMgLyogRW50cmllc0NhbGxiYWNrLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBFbnRy
aWVzQ2FsbGJhY2suaWRsOyBwYXRoID0gZmlsZWFwaS9FbnRyaWVzQ2FsbGJhY2suaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUFCMUVCMTE0RTlFMzJBMDA0NDlFMTMgLyogRW50
cnkuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgbmFtZSA9IEVudHJ5LmlkbDsgcGF0aCA9IGZpbGVhcGkvRW50cnkuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3Rv
cnlFbnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3Rv
cnlFbnRyeS5jcHAJKHJldmlzaW9uIDExMDE0NykKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
RGlyZWN0b3J5RW50cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDc3ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlz
dHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRGlyZWN0b3J5RW50cnkuaCIKLQotI2lmIEVOQUJMRShG
SUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkRpcmVjdG9yeVJlYWRlci5oIgotI2luY2x1ZGUgIkVu
dHJ5Q2FsbGJhY2suaCIKLSNpbmNsdWRlICJFcnJvckNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRmls
ZUVycm9yLmgiCi0jaW5jbHVkZSAiVm9pZENhbGxiYWNrLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotRGlyZWN0b3J5RW50cnk6OkRpcmVjdG9yeUVudHJ5KFBhc3NSZWZQdHI8RE9NRmlsZVN5
c3RlbUJhc2U+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCi0gICAgOiBFbnRy
eShmaWxlU3lzdGVtLCBmdWxsUGF0aCkKLXsKLX0KLQotUGFzc1JlZlB0cjxEaXJlY3RvcnlSZWFk
ZXI+IERpcmVjdG9yeUVudHJ5OjpjcmVhdGVSZWFkZXIoKQotewotICAgIHJldHVybiBEaXJlY3Rv
cnlSZWFkZXI6OmNyZWF0ZShtX2ZpbGVTeXN0ZW0sIG1fZnVsbFBhdGgpOwotfQotCi12b2lkIERp
cmVjdG9yeUVudHJ5OjpnZXRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxXZWJL
aXRGbGFncz4gZmxhZ3MsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNr
LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2tSZWYpCi17Ci0gICAgUmVm
UHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2soZXJyb3JDYWxsYmFja1JlZik7Ci0gICAg
aWYgKCFtX2ZpbGVTeXN0ZW0tPmdldEZpbGUodGhpcywgcGF0aCwgZmxhZ3MsIHN1Y2Nlc3NDYWxs
YmFjaywgZXJyb3JDYWxsYmFjaykpCi0gICAgICAgIGZpbGVzeXN0ZW0oKS0+c2NoZWR1bGVDYWxs
YmFjayhlcnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9y
OjpJTlZBTElEX01PRElGSUNBVElPTl9FUlIpKTsKLX0KLQotdm9pZCBEaXJlY3RvcnlFbnRyeTo6
Z2V0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxXZWJLaXRGbGFncz4g
ZmxhZ3MsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVm
UHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2tSZWYpCi17Ci0gICAgUmVmUHRyPEVycm9y
Q2FsbGJhY2s+IGVycm9yQ2FsbGJhY2soZXJyb3JDYWxsYmFja1JlZik7Ci0gICAgaWYgKCFtX2Zp
bGVTeXN0ZW0tPmdldERpcmVjdG9yeSh0aGlzLCBwYXRoLCBmbGFncywgc3VjY2Vzc0NhbGxiYWNr
LCBlcnJvckNhbGxiYWNrKSkKLSAgICAgICAgZmlsZXN5c3RlbSgpLT5zY2hlZHVsZUNhbGxiYWNr
KGVycm9yQ2FsbGJhY2sucmVsZWFzZSgpLCBGaWxlRXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6OklO
VkFMSURfTU9ESUZJQ0FUSU9OX0VSUikpOwotfQotCi12b2lkIERpcmVjdG9yeUVudHJ5OjpyZW1v
dmVSZWN1cnNpdmVseShQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQ
YXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2tSZWYpIGNvbnN0Ci17Ci0gICAg
UmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2soZXJyb3JDYWxsYmFja1JlZik7Ci0g
ICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPnJlbW92ZVJlY3Vyc2l2ZWx5KHRoaXMsIHN1Y2Nlc3NDYWxs
YmFjaywgZXJyb3JDYWxsYmFjaykpCi0gICAgICAgIGZpbGVzeXN0ZW0oKS0+c2NoZWR1bGVDYWxs
YmFjayhlcnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9y
OjpJTlZBTElEX01PRElGSUNBVElPTl9FUlIpKTsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxF
KEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlFbnRy
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5RW50cnku
aAkocmV2aXNpb24gMTEwMTQ3KQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlF
bnRyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgot
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIERpcmVjdG9yeUVu
dHJ5X2gKLSNkZWZpbmUgRGlyZWN0b3J5RW50cnlfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVN
KQotCi0jaW5jbHVkZSAiRW50cnkuaCIKLSNpbmNsdWRlICJXZWJLaXRGbGFncy5oIgotI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERP
TUZpbGVTeXN0ZW1CYXNlOwotY2xhc3MgRGlyZWN0b3J5UmVhZGVyOwotY2xhc3MgRW50cnlDYWxs
YmFjazsKLWNsYXNzIEVycm9yQ2FsbGJhY2s7Ci1jbGFzcyBWb2lkQ2FsbGJhY2s7Ci0KLWNsYXNz
IERpcmVjdG9yeUVudHJ5IDogcHVibGljIEVudHJ5IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxEaXJlY3RvcnlFbnRyeT4gY3JlYXRlKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJh
c2U+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCi0gICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IERpcmVjdG9yeUVudHJ5KGZpbGVTeXN0ZW0sIGZ1bGxQYXRoKSk7
Ci0gICAgfQotICAgIHZpcnR1YWwgYm9vbCBpc0RpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KLQotICAgIFBhc3NSZWZQdHI8RGlyZWN0b3J5UmVhZGVyPiBjcmVhdGVSZWFkZXIoKTsK
LSAgICB2b2lkIGdldEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPFdlYktpdEZs
YWdzPiA9IDAsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gPSAwLCBQYXNzUmVmUHRyPEVycm9y
Q2FsbGJhY2s+ID0gMCk7Ci0gICAgdm9pZCBnZXREaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRo
LCBQYXNzUmVmUHRyPFdlYktpdEZsYWdzPiA9IDAsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4g
PSAwLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+ID0gMCk7Ci0gICAgdm9pZCByZW1vdmVSZWN1
cnNpdmVseShQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gMCwgUGFz
c1JlZlB0cjxFcnJvckNhbGxiYWNrPiA9IDApIGNvbnN0OwotCi1wcml2YXRlOgotICAgIERpcmVj
dG9yeUVudHJ5KFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+LCBjb25zdCBTdHJpbmcmIGZ1
bGxQYXRoKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9T
WVNURU0pCi0KLSNlbmRpZiAvLyBEaXJlY3RvcnlFbnRyeV9oCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5LmlkbAkocmV2aXNpb24gMTEwMTQ3KQorKysgU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEs
NDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0
OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLW1vZHVsZSBzdG9yYWdlIHsKLSAgICBpbnRlcmZhY2UgWwotICAgICAgICBDb25k
aXRpb25hbD1GSUxFX1NZU1RFTSwKLSAgICAgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAot
ICAgICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKLSAgICAgICAgSlNOb1N0YXRpY1RhYmxlcwot
ICAgIF0gRGlyZWN0b3J5RW50cnkgOiBFbnRyeSB7Ci0gICAgICAgIERpcmVjdG9yeVJlYWRlciBj
cmVhdGVSZWFkZXIoKTsKLSAgICAgICAgW0N1c3RvbV0gdm9pZCBnZXRGaWxlKGluIFtUcmVhdE51
bGxBcz1OdWxsU3RyaW5nLCBUcmVhdFVuZGVmaW5lZEFzPU51bGxTdHJpbmddIERPTVN0cmluZyBw
YXRoLCBpbiBbT3B0aW9uYWxdIFdlYktpdEZsYWdzIGZsYWdzLCBpbiBbT3B0aW9uYWwsIENhbGxi
YWNrXSBFbnRyeUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4gW09wdGlvbmFsLCBDYWxsYmFj
a10gRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKTsKLSAgICAgICAgW0N1c3RvbV0gdm9pZCBn
ZXREaXJlY3RvcnkoaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5kZWZpbmVkQXM9
TnVsbFN0cmluZ10gRE9NU3RyaW5nIHBhdGgsIGluIFtPcHRpb25hbF0gV2ViS2l0RmxhZ3MgZmxh
Z3MsIGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVudHJ5Q2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNr
LCBpbiBbT3B0aW9uYWwsIENhbGxiYWNrXSBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOwot
ICAgICAgICB2b2lkIHJlbW92ZVJlY3Vyc2l2ZWx5KGluIFtDYWxsYmFja10gVm9pZENhbGxiYWNr
IHN1Y2Nlc3NDYWxsYmFjaywgaW4gW09wdGlvbmFsLCBDYWxsYmFja10gRXJyb3JDYWxsYmFjayBl
cnJvckNhbGxiYWNrKTsKLSAgICB9OwotfQpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9E
aXJlY3RvcnlFbnRyeVN5bmMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRGlyZWN0b3J5RW50cnlTeW5jLmNwcAkocmV2aXNpb24gMTEwMTQ3KQorKysgU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlFbnRyeVN5bmMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDg5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1l
dDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRGlyZWN0b3J5RW50cnlT
eW5jLmgiCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJEaXJlY3RvcnlS
ZWFkZXJTeW5jLmgiCi0jaW5jbHVkZSAiRW50cnlTeW5jLmgiCi0jaW5jbHVkZSAiRmlsZUVudHJ5
U3luYy5oIgotI2luY2x1ZGUgIkZpbGVFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJTeW5jQ2FsbGJh
Y2tIZWxwZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1EaXJlY3RvcnlFbnRyeVN5bmM6
OkRpcmVjdG9yeUVudHJ5U3luYyhQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBmaWxlU3lz
dGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQotICAgIDogRW50cnlTeW5jKGZpbGVTeXN0ZW0s
IGZ1bGxQYXRoKQotewotfQotCi1QYXNzUmVmUHRyPERpcmVjdG9yeVJlYWRlclN5bmM+IERpcmVj
dG9yeUVudHJ5U3luYzo6Y3JlYXRlUmVhZGVyKEV4Y2VwdGlvbkNvZGUmKQotewotICAgIHJldHVy
biBEaXJlY3RvcnlSZWFkZXJTeW5jOjpjcmVhdGUobV9maWxlU3lzdGVtLCBtX2Z1bGxQYXRoKTsK
LX0KLQotUGFzc1JlZlB0cjxGaWxlRW50cnlTeW5jPiBEaXJlY3RvcnlFbnRyeVN5bmM6OmdldEZp
bGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPFdlYktpdEZsYWdzPiBmbGFncywgRXhj
ZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgZWMgPSAwOwotICAgIEVudHJ5U3luY0NhbGxiYWNrSGVs
cGVyIGhlbHBlcihtX2ZpbGVTeXN0ZW0tPmFzeW5jRmlsZVN5c3RlbSgpKTsKLSAgICBpZiAoIW1f
ZmlsZVN5c3RlbS0+Z2V0RmlsZSh0aGlzLCBwYXRoLCBmbGFncywgaGVscGVyLnN1Y2Nlc3NDYWxs
YmFjaygpLCBoZWxwZXIuZXJyb3JDYWxsYmFjaygpKSkgewotICAgICAgICBlYyA9IEZpbGVFeGNl
cHRpb246OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAg
fQotICAgIHJldHVybiBzdGF0aWNfcG9pbnRlcl9jYXN0PEZpbGVFbnRyeVN5bmM+KGhlbHBlci5n
ZXRSZXN1bHQoZWMpKTsKLX0KLQotUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeVN5bmM+IERpcmVj
dG9yeUVudHJ5U3luYzo6Z2V0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0
cjxXZWJLaXRGbGFncz4gZmxhZ3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGVjID0gMDsK
LSAgICBFbnRyeVN5bmNDYWxsYmFja0hlbHBlciBoZWxwZXIobV9maWxlU3lzdGVtLT5hc3luY0Zp
bGVTeXN0ZW0oKSk7Ci0gICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPmdldERpcmVjdG9yeSh0aGlzLCBw
YXRoLCBmbGFncywgaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIuZXJyb3JDYWxsYmFj
aygpKSkgewotICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246OklOVkFMSURfTU9ESUZJQ0FUSU9O
X0VSUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiBzdGF0aWNfcG9pbnRl
cl9jYXN0PERpcmVjdG9yeUVudHJ5U3luYz4oaGVscGVyLmdldFJlc3VsdChlYykpOwotfQotCi12
b2lkIERpcmVjdG9yeUVudHJ5U3luYzo6cmVtb3ZlUmVjdXJzaXZlbHkoRXhjZXB0aW9uQ29kZSYg
ZWMpCi17Ci0gICAgZWMgPSAwOwotICAgIFZvaWRTeW5jQ2FsbGJhY2tIZWxwZXIgaGVscGVyKG1f
ZmlsZVN5c3RlbS0+YXN5bmNGaWxlU3lzdGVtKCkpOwotICAgIGlmICghbV9maWxlU3lzdGVtLT5y
ZW1vdmVSZWN1cnNpdmVseSh0aGlzLCBoZWxwZXIuc3VjY2Vzc0NhbGxiYWNrKCksIGhlbHBlci5l
cnJvckNhbGxiYWNrKCkpKSB7Ci0gICAgICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6SU5WQUxJRF9N
T0RJRklDQVRJT05fRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGhlbHBlci5nZXRS
ZXN1bHQoZWMpOwotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5U3luYy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5RW50cnlTeW5jLmgJKHJldmlzaW9u
IDExMDE0NykKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5RW50cnlTeW5jLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0g
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRGlyZWN0b3J5RW50cnlTeW5j
X2gKLSNkZWZpbmUgRGlyZWN0b3J5RW50cnlTeW5jX2gKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RF
TSkKLQotI2luY2x1ZGUgIkVudHJ5U3luYy5oIgotI2luY2x1ZGUgIldlYktpdEZsYWdzLmgiCi0j
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgot
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgRGlyZWN0b3J5UmVhZGVyU3luYzsKLWNsYXNzIEZpbGVFbnRyeVN5bmM7Ci0KLWNsYXNzIERp
cmVjdG9yeUVudHJ5U3luYyA6IHB1YmxpYyBFbnRyeVN5bmMgewotcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5U3luYz4gY3JlYXRlKFBhc3NSZWZQdHI8RE9NRmls
ZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCi0gICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERpcmVjdG9yeUVudHJ5U3luYyhmaWxlU3lzdGVt
LCBmdWxsUGF0aCkpOwotICAgIH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNEaXJlY3RvcnkoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICBQYXNzUmVmUHRyPERpcmVjdG9yeVJlYWRlclN5bmM+
IGNyZWF0ZVJlYWRlcihFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxGaWxlRW50cnlT
eW5jPiBnZXRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxXZWJLaXRGbGFncz4s
IEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5U3luYz4gZ2V0
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxXZWJLaXRGbGFncz4sIEV4
Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHJlbW92ZVJlY3Vyc2l2ZWx5KEV4Y2VwdGlvbkNvZGUm
KTsKLQotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgRW50cnlTeW5jOwotICAgIERpcmVjdG9y
eUVudHJ5U3luYyhQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiwgY29uc3QgU3RyaW5nJiBm
dWxsUGF0aCk7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNl
bmRpZiAvLyBEaXJlY3RvcnlFbnRyeVN5bmNfaApJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9EaXJlY3RvcnlFbnRyeVN5bmMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRGlyZWN0b3J5RW50cnlTeW5jLmlkbAkocmV2aXNpb24gMTEwMTQ3KQorKysgU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlFbnRyeVN5bmMuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAq
IG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0g
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi1tb2R1bGUgc3RvcmFnZSB7Ci0gICAgaW50ZXJmYWNlIFsKLSAgICAgICAg
Q29uZGl0aW9uYWw9RklMRV9TWVNURU0sCi0gICAgICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVj
dCwKLSAgICAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCi0gICAgICAgIEpTTm9TdGF0aWNUYWJs
ZXMKLSAgICBdIERpcmVjdG9yeUVudHJ5U3luYyA6IEVudHJ5U3luYyB7Ci0gICAgICAgIERpcmVj
dG9yeVJlYWRlclN5bmMgY3JlYXRlUmVhZGVyKCkgcmFpc2VzIChGaWxlRXhjZXB0aW9uKTsKLSAg
ICAgICAgW0N1c3RvbV0gRmlsZUVudHJ5U3luYyBnZXRGaWxlKGluIFtUcmVhdE51bGxBcz1OdWxs
U3RyaW5nLCBUcmVhdFVuZGVmaW5lZEFzPU51bGxTdHJpbmddIERPTVN0cmluZyBwYXRoLCBpbiBX
ZWJLaXRGbGFncyBmbGFncykgcmFpc2VzIChGaWxlRXhjZXB0aW9uKTsKLSAgICAgICAgW0N1c3Rv
bV0gRGlyZWN0b3J5RW50cnlTeW5jIGdldERpcmVjdG9yeShpbiBbVHJlYXROdWxsQXM9TnVsbFN0
cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3RyaW5nXSBET01TdHJpbmcgcGF0aCwgaW4gV2Vi
S2l0RmxhZ3MgZmxhZ3MpIHJhaXNlcyAoRmlsZUV4Y2VwdGlvbik7Ci0gICAgICAgIHZvaWQgcmVt
b3ZlUmVjdXJzaXZlbHkoKSByYWlzZXMgKEZpbGVFeGNlcHRpb24pOwotICAgIH07Ci19CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXIuY3BwCShyZXZpc2lvbiAx
MTAxNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJEaXJlY3RvcnlSZWFkZXIuaCIKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1
ZGUgIkVudHJpZXNDYWxsYmFjay5oIgotI2luY2x1ZGUgIkVudHJ5QXJyYXkuaCIKLSNpbmNsdWRl
ICJFcnJvckNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRmlsZUVycm9yLmgiCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotRGlyZWN0b3J5UmVhZGVyOjpEaXJlY3RvcnlSZWFkZXIoUGFzc1JlZlB0cjxE
T01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKLSAg
ICA6IERpcmVjdG9yeVJlYWRlckJhc2UoZmlsZVN5c3RlbSwgZnVsbFBhdGgpCi17Ci19Ci0KLXZv
aWQgRGlyZWN0b3J5UmVhZGVyOjpyZWFkRW50cmllcyhQYXNzUmVmUHRyPEVudHJpZXNDYWxsYmFj
az4gZW50cmllc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJh
Y2spCi17Ci0gICAgaWYgKCFtX2hhc01vcmVFbnRyaWVzKSB7Ci0gICAgICAgIGZpbGVzeXN0ZW0o
KS0+c2NoZWR1bGVDYWxsYmFjayhlbnRyaWVzQ2FsbGJhY2ssIEVudHJ5QXJyYXk6OmNyZWF0ZSgp
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBmaWxlc3lzdGVtKCktPnJlYWREaXJlY3Rv
cnkodGhpcywgbV9mdWxsUGF0aCwgZW50cmllc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLX0K
LQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlci5oCShyZXZpc2lvbiAxMTAxNDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY3
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoK
LSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaWZuZGVmIERpcmVjdG9yeVJlYWRlcl9oCi0jZGVmaW5lIERpcmVjdG9yeVJlYWRl
cl9oCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJET01GaWxlU3lzdGVt
LmgiCi0jaW5jbHVkZSAiRGlyZWN0b3J5UmVhZGVyQmFzZS5oIgotI2luY2x1ZGUgIlBsYXRmb3Jt
U3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEVudHJpZXNDYWxsYmFj
azsKLWNsYXNzIEVudHJpZXNDYWxsYmFja3M7Ci1jbGFzcyBFcnJvckNhbGxiYWNrOwotCi1jbGFz
cyBEaXJlY3RvcnlSZWFkZXIgOiBwdWJsaWMgRGlyZWN0b3J5UmVhZGVyQmFzZSB7Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RGlyZWN0b3J5UmVhZGVyPiBjcmVhdGUoUGFzc1JlZlB0
cjxET01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGlyZWN0b3J5UmVhZGVyKGZpbGVT
eXN0ZW0sIGZ1bGxQYXRoKSk7Ci0gICAgfQotCi0gICAgdm9pZCByZWFkRW50cmllcyhQYXNzUmVm
UHRyPEVudHJpZXNDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gPSAwKTsKLQot
ICAgIERPTUZpbGVTeXN0ZW0qIGZpbGVzeXN0ZW0oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxET01GaWxlU3lzdGVtKj4obV9maWxlU3lzdGVtLmdldCgpKTsgfQotCi1wcml2YXRlOgotICAg
IERpcmVjdG9yeVJlYWRlcihQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiwgY29uc3QgU3Ry
aW5nJiBmdWxsUGF0aCk7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0p
Ci0KLSNlbmRpZiAvLyBEaXJlY3RvcnlSZWFkZXJfaApJbmRleDogU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9EaXJlY3RvcnlSZWFkZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRGlyZWN0b3J5UmVhZGVyLmlkbAkocmV2aXNpb24gMTEwMTQ3KQorKysgU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM4
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoK
LSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi1tb2R1bGUgc3RvcmFnZSB7Ci0gICAgaW50ZXJmYWNlIFsKLSAgICAgICAgQ29uZGl0
aW9uYWw9RklMRV9TWVNURU0sCi0gICAgICAgIEpTTm9TdGF0aWNUYWJsZXMKLSAgICBdIERpcmVj
dG9yeVJlYWRlciB7Ci0gICAgICAgIHZvaWQgcmVhZEVudHJpZXMoaW4gW0NhbGxiYWNrXSBFbnRy
aWVzQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBpbiBbT3B0aW9uYWwsIENhbGxiYWNrXSBFcnJv
ckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOwotICAgIH07Ci19CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlckJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlckJhc2UuaAkocmV2aXNpb24gMTEwMTQ3KQorKysg
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJCYXNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNjggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0g
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRGlyZWN0b3J5UmVhZGVyQmFzZV9oCi0jZGVmaW5l
IERpcmVjdG9yeVJlYWRlckJhc2VfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5j
bHVkZSAiRE9NRmlsZVN5c3RlbUJhc2UuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgot
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBEaXJlY3RvcnlSZWFkZXJCYXNlIDogcHVi
bGljIFJlZkNvdW50ZWQ8RGlyZWN0b3J5UmVhZGVyQmFzZT4gewotcHVibGljOgotICAgIERPTUZp
bGVTeXN0ZW1CYXNlKiBmaWxlc3lzdGVtKCkgY29uc3QgeyByZXR1cm4gbV9maWxlU3lzdGVtLmdl
dCgpOyB9Ci0gICAgdm9pZCBzZXRIYXNNb3JlRW50cmllcyhib29sIGhhc01vcmVFbnRyaWVzKSB7
IG1faGFzTW9yZUVudHJpZXMgPSBoYXNNb3JlRW50cmllczsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAg
RGlyZWN0b3J5UmVhZGVyQmFzZShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBmaWxlU3lz
dGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQotICAgICAgICA6IG1fZmlsZVN5c3RlbShmaWxl
U3lzdGVtKQotICAgICAgICAsIG1fZnVsbFBhdGgoZnVsbFBhdGgpCi0gICAgICAgICwgbV9oYXNN
b3JlRW50cmllcyh0cnVlKQotICAgIHsKLSAgICB9Ci0KLSAgICBSZWZQdHI8RE9NRmlsZVN5c3Rl
bUJhc2U+IG1fZmlsZVN5c3RlbTsKLQotICAgIC8vIFRoaXMgaXMgYSB2aXJ0dWFsIHBhdGguCi0g
ICAgU3RyaW5nIG1fZnVsbFBhdGg7Ci0KLSAgICBib29sIG1faGFzTW9yZUVudHJpZXM7Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0p
Ci0KLSNlbmRpZiAvLyBEaXJlY3RvcnlSZWFkZXJCYXNlX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyU3luYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJTeW5jLmNwcAkocmV2aXNpb24gMTEwMTQ3KQor
KysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJTeW5jLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw2OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRp
cmVjdG9yeVJlYWRlclN5bmMuaCIKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1
ZGUgIkRpcmVjdG9yeUVudHJ5LmgiCi0jaW5jbHVkZSAiRGlyZWN0b3J5RW50cnlTeW5jLmgiCi0j
aW5jbHVkZSAiRW50cnlBcnJheVN5bmMuaCIKLSNpbmNsdWRlICJFbnRyeVN5bmMuaCIKLSNpbmNs
dWRlICJGaWxlRW50cnlTeW5jLmgiCi0jaW5jbHVkZSAiRmlsZUV4Y2VwdGlvbi5oIgotI2luY2x1
ZGUgIlN5bmNDYWxsYmFja0hlbHBlci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLURpcmVj
dG9yeVJlYWRlclN5bmM6OkRpcmVjdG9yeVJlYWRlclN5bmMoUGFzc1JlZlB0cjxET01GaWxlU3lz
dGVtQmFzZT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKLSAgICA6IERpcmVj
dG9yeVJlYWRlckJhc2UoZmlsZVN5c3RlbSwgZnVsbFBhdGgpCi17Ci19Ci0KLVBhc3NSZWZQdHI8
RW50cnlBcnJheVN5bmM+IERpcmVjdG9yeVJlYWRlclN5bmM6OnJlYWRFbnRyaWVzKEV4Y2VwdGlv
bkNvZGUmIGVjKQotewotICAgIGVjID0gMDsKLSAgICBpZiAoIW1faGFzTW9yZUVudHJpZXMpCi0g
ICAgICAgIHJldHVybiBFbnRyeUFycmF5U3luYzo6Y3JlYXRlKCk7Ci0KLSAgICBFbnRyaWVzU3lu
Y0NhbGxiYWNrSGVscGVyIGhlbHBlcihtX2ZpbGVTeXN0ZW0tPmFzeW5jRmlsZVN5c3RlbSgpKTsK
LSAgICBpZiAoIW1fZmlsZVN5c3RlbS0+cmVhZERpcmVjdG9yeSh0aGlzLCBtX2Z1bGxQYXRoLCBo
ZWxwZXIuc3VjY2Vzc0NhbGxiYWNrKCksIGhlbHBlci5lcnJvckNhbGxiYWNrKCkpKSB7Ci0gICAg
ICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSOwotICAgICAg
ICBzZXRIYXNNb3JlRW50cmllcyhmYWxzZSk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAg
ICByZXR1cm4gaGVscGVyLmdldFJlc3VsdChlYyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0RpcmVjdG9yeVJlYWRlclN5bmMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuaAkocmV2aXNpb24gMTEwMTQ3KQorKysgU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJTeW5jLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0
OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpZm5kZWYgRGlyZWN0b3J5UmVhZGVyU3luY19oCi0jZGVmaW5lIERpcmVjdG9y
eVJlYWRlclN5bmNfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiRGly
ZWN0b3J5UmVhZGVyQmFzZS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEVudHJ5QXJyYXlTeW5jOwotCi10eXBlZGVmIGludCBF
eGNlcHRpb25Db2RlOwotCi1jbGFzcyBEaXJlY3RvcnlSZWFkZXJTeW5jIDogcHVibGljIERpcmVj
dG9yeVJlYWRlckJhc2UgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERpcmVjdG9y
eVJlYWRlclN5bmM+IGNyZWF0ZShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBmaWxlU3lz
dGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBEaXJlY3RvcnlSZWFkZXJTeW5jKGZpbGVTeXN0ZW0sIGZ1bGxQYXRoKSk7Ci0gICAg
fQotCi0gICAgUGFzc1JlZlB0cjxFbnRyeUFycmF5U3luYz4gcmVhZEVudHJpZXMoRXhjZXB0aW9u
Q29kZSYpOwotCi1wcml2YXRlOgotICAgIERpcmVjdG9yeVJlYWRlclN5bmMoUGFzc1JlZlB0cjxE
T01GaWxlU3lzdGVtQmFzZT4sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2VuZGlmIC8vIERp
cmVjdG9yeVJlYWRlclN5bmNfaApJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3Rv
cnlSZWFkZXJTeW5jLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Rp
cmVjdG9yeVJlYWRlclN5bmMuaWRsCShyZXZpc2lvbiAxMTAxNDcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM4
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoK
LSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi1tb2R1bGUgc3RvcmFnZSB7Ci0gICAgaW50ZXJmYWNlIFsKLSAgICAgICAgQ29uZGl0
aW9uYWw9RklMRV9TWVNURU0sCi0gICAgICAgIEpTTm9TdGF0aWNUYWJsZXMKLSAgICBdIERpcmVj
dG9yeVJlYWRlclN5bmMgewotICAgICAgICBFbnRyeUFycmF5U3luYyByZWFkRW50cmllcygpIHJh
aXNlcyAoRmlsZUV4Y2VwdGlvbik7Ci0gICAgfTsKLX0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131395</attachid>
            <date>2012-03-12 13:34:27 -0700</date>
            <delta_ts>2012-03-12 17:49:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80625-20120312163413.patch</filename>
            <type>text/plain</type>
            <size>102895</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMDQ2OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDEyLTAzLTEyICBNYXJrIFBp
bGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBNb3ZlIERpcmVjdG9yeUVu
dHJ5IGFuZCBEaXJlY3RvcnlSZWFkZXIgdG8gbmV3IE1vZHVsZXMvZmlsZXN5c3RlbS8gZGlyZWN0
b3J5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDYy
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cywgYWxsIGV4aXN0aW5nIHRlc3RzIHBhc3MuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLnByaToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5saXN0LmFtOgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbTogQWRkZWQuCisgICAg
ICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmNwcDogQ29waWVkIGZyb20g
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5jcHAuCisgICAgICAgICogTW9k
dWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRGlyZWN0b3J5RW50cnkuaC4KKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0
ZW0vRGlyZWN0b3J5RW50cnkuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0RpcmVjdG9yeUVudHJ5LmlkbC4KKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0
b3J5RW50cnlTeW5jLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJl
Y3RvcnlFbnRyeVN5bmMuY3BwLgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3Rv
cnlFbnRyeVN5bmMuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3Rv
cnlFbnRyeVN5bmMuaC4KKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50
cnlTeW5jLmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlF
bnRyeVN5bmMuaWRsLgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFk
ZXIuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRl
ci5jcHAuCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlci5oLgorICAg
ICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXIuaWRsOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlci5pZGwuCisgICAgICAgICog
TW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlckJhc2UuaDogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJCYXNlLmguCisgICAgICAgICogTW9k
dWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuY3BwOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuY3BwLgorICAgICAgICAqIE1v
ZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyU3luYy5oLgorICAgICAgICAqIE1vZHVs
ZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmlkbDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJTeW5jLmlkbC4KKyAgICAgICAgKiBUYXJn
ZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwOgorICAgICAgICAqIFdl
YkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnByaToKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZmlsZWFwaS9EaXJlY3RvcnlFbnRy
eS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5oOiBSZW1v
dmVkLgorICAgICAgICAqIGZpbGVhcGkvRGlyZWN0b3J5RW50cnkuaWRsOiBSZW1vdmVkLgorICAg
ICAgICAqIGZpbGVhcGkvRGlyZWN0b3J5RW50cnlTeW5jLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBmaWxlYXBpL0RpcmVjdG9yeUVudHJ5U3luYy5oOiBSZW1vdmVkLgorICAgICAgICAqIGZpbGVh
cGkvRGlyZWN0b3J5RW50cnlTeW5jLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmaWxlYXBpL0Rp
cmVjdG9yeVJlYWRlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogZmlsZWFwaS9EaXJlY3RvcnlS
ZWFkZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBmaWxlYXBpL0RpcmVjdG9yeVJlYWRlci5pZGw6
IFJlbW92ZWQuCisgICAgICAgICogZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJCYXNlLmg6IFJlbW92
ZWQuCisgICAgICAgICogZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJTeW5jLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBmaWxlYXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBmaWxlYXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuaWRsOiBSZW1vdmVkLgorCiAyMDEyLTAz
LTEyICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIElu
ZmluaXRlIHJlcGFpbnQgbG9vcCB3aXRoIFNWR0ltYWdlQ2FjaGUgYW5kIGRlZmVycmVkIHJlcGFp
bnQgdGltZXJzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTEwNDY1KQorKysg
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2
IEBACiBTRVQoV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9
IgorICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL2ZpbGVzeXN0ZW0iCiAgICAgIiR7V0VCQ09S
RV9ESVJ9L01vZHVsZXMvZ2VvbG9jYXRpb24iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMv
aW5kZXhlZGRiIgogICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL3dlYmRhdGFiYXNlIgpAQCAt
OTIsNiArOTMsNyBAQCBTRVQoV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiApCiAKIFNFVChX
ZWJDb3JlX0lETF9JTkNMVURFUworICAgIE1vZHVsZXMvZmlsZXN5c3RlbQogICAgIE1vZHVsZXMv
Z2VvbG9jYXRpb24KICAgICBNb2R1bGVzL2luZGV4ZWRkYgogICAgIE1vZHVsZXMvd2ViZGF0YWJh
c2UKQEAgLTE2MzYsMTAgKzE2MzgsMTAgQEAgRU5ESUYgKCkKIAogaWYgKEVOQUJMRV9GSUxFX1NZ
U1RFTSkKICAgICBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKLSAgICAgICAgZmlsZWFwaS9E
aXJlY3RvcnlFbnRyeS5jcHAKLSAgICAgICAgZmlsZWFwaS9EaXJlY3RvcnlFbnRyeVN5bmMuY3Bw
Ci0gICAgICAgIGZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyLmNwcAotICAgICAgICBmaWxlYXBpL0Rp
cmVjdG9yeVJlYWRlclN5bmMuY3BwCisgICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3Rv
cnlFbnRyeS5jcHAKKyAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3lu
Yy5jcHAKKyAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5jcHAKKyAg
ICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuY3BwCiAgICAgICAg
IGZpbGVhcGkvRE9NRmlsZVBhdGguY3BwCiAgICAgICAgIGZpbGVhcGkvRE9NRmlsZVN5c3RlbS5j
cHAKICAgICAgICAgZmlsZWFwaS9ET01GaWxlU3lzdGVtQmFzZS5jcHAKQEAgLTE2NjEsMTAgKzE2
NjMsMTAgQEAgaWYgKEVOQUJMRV9GSUxFX1NZU1RFTSkKICAgICAgICAgcGxhdGZvcm0vQXN5bmNG
aWxlU3lzdGVtLmNwcAogICAgICkKICAgICBMSVNUKEFQUEVORCBXZWJDb3JlX0lETF9GSUxFUwot
ICAgICAgICBmaWxlYXBpL0RpcmVjdG9yeUVudHJ5LmlkbAotICAgICAgICBmaWxlYXBpL0RpcmVj
dG9yeUVudHJ5U3luYy5pZGwKLSAgICAgICAgZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXIuaWRsCi0g
ICAgICAgIGZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyU3luYy5pZGwKKyAgICAgICAgTW9kdWxlcy9m
aWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmlkbAorICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0v
RGlyZWN0b3J5RW50cnlTeW5jLmlkbAorICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0
b3J5UmVhZGVyLmlkbAorICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVy
U3luYy5pZGwKICAgICAgICAgZmlsZWFwaS9ET01GaWxlU3lzdGVtLmlkbAogICAgICAgICBmaWxl
YXBpL0RPTUZpbGVTeXN0ZW1TeW5jLmlkbAogICAgICAgICBmaWxlYXBpL0RPTVdpbmRvd0ZpbGVT
eXN0ZW0uaWRsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDEx
MDQ2NSkKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogVlBBVEggPSBcCiAgICAgJChXZWJDb3JlKSBcCisgICAg
JChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9n
ZW9sb2NhdGlvbiBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2luZGV4ZWRkYiBcCiAgICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL3dlYmRhdGFiYXNlIFwKQEAgLTE5NSwxMCArMTk2LDEwIEBAIEJJTkRJ
TkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5pZGwgXAog
ICAgICQoV2ViQ29yZSkvZmlsZWFwaS9ET01GaWxlU3lzdGVtU3luYy5pZGwgXAogICAgICQoV2Vi
Q29yZSkvZmlsZWFwaS9ET01XaW5kb3dGaWxlU3lzdGVtLmlkbCBcCi0gICAgJChXZWJDb3JlKS9m
aWxlYXBpL0RpcmVjdG9yeUVudHJ5LmlkbCBcCi0gICAgJChXZWJDb3JlKS9maWxlYXBpL0RpcmVj
dG9yeUVudHJ5U3luYy5pZGwgXAotICAgICQoV2ViQ29yZSkvZmlsZWFwaS9EaXJlY3RvcnlSZWFk
ZXIuaWRsIFwKLSAgICAkKFdlYkNvcmUpL2ZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyU3luYy5pZGwg
XAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmlkbCBc
CisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmlk
bCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmlk
bCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyU3lu
Yy5pZGwgXAogICAgICQoV2ViQ29yZSkvZmlsZWFwaS9FbnRyaWVzQ2FsbGJhY2suaWRsIFwKICAg
ICAkKFdlYkNvcmUpL2ZpbGVhcGkvRW50cnkuaWRsIFwKICAgICAkKFdlYkNvcmUpL2ZpbGVhcGkv
RW50cnlBcnJheS5pZGwgXApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJp
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQkocmV2aXNp
b24gMTEwNDY1KQorKysgU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCSh3b3JraW5n
IGNvcHkpCkBAIC0yMTYsMTAgKzIxNiwxMCBAQCBJRExfQklORElOR1MgKz0gXAogICAgICQkUFdE
L2RvbS9XZWJLaXRUcmFuc2l0aW9uRXZlbnQuaWRsIFwKICAgICAkJFBXRC9kb20vV2hlZWxFdmVu
dC5pZGwgXAogICAgICQkUFdEL2ZpbGVhcGkvQmxvYi5pZGwgXAotICAgICQkUFdEL2ZpbGVhcGkv
RGlyZWN0b3J5RW50cnkuaWRsIFwKLSAgICAkJFBXRC9maWxlYXBpL0RpcmVjdG9yeUVudHJ5U3lu
Yy5pZGwgXAotICAgICQkUFdEL2ZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyLmlkbCBcCi0gICAgJCRQ
V0QvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJTeW5jLmlkbCBcCisgICAgJCRQV0QvTW9kdWxlcy9m
aWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmlkbCBcCisgICAgJCRQV0QvTW9kdWxlcy9maWxlc3lz
dGVtL0RpcmVjdG9yeUVudHJ5U3luYy5pZGwgXAorICAgICQkUFdEL01vZHVsZXMvZmlsZXN5c3Rl
bS9EaXJlY3RvcnlSZWFkZXIuaWRsIFwKKyAgICAkJFBXRC9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGly
ZWN0b3J5UmVhZGVyU3luYy5pZGwgXAogICAgICQkUFdEL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5p
ZGwgXAogICAgICQkUFdEL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuaWRsIFwKICAgICAkJFBX
RC9maWxlYXBpL0RPTVdpbmRvd0ZpbGVTeXN0ZW0uaWRsIFwKQEAgLTY5Niw2ICs2OTYsNyBAQCBl
bHNlOiBnZW5lcmF0b3IgPSBKUwogZ2VuZXJhdGVCaW5kaW5ncy5jb21tYW5kcyA9IHBlcmwgLUkk
JFBXRC9iaW5kaW5ncy9zY3JpcHRzICQkZ2VuZXJhdGVCaW5kaW5ncy5zY3JpcHQgXAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC0tZGVmaW5lcyBcIiQke0ZFQVRVUkVfREVGSU5FU19KQVZB
U0NSSVBUfVwiIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWdlbmVyYXRvciAkJGdl
bmVyYXRvciBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1pbmNsdWRlICQkUFdEL01v
ZHVsZXMvZmlsZXN5c3RlbSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1pbmNsdWRl
ICQkUFdEL01vZHVsZXMvZ2VvbG9jYXRpb24gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC0taW5jbHVkZSAkJFBXRC9Nb2R1bGVzL2luZGV4ZWRkYiBcCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLS1pbmNsdWRlICQkUFdEL01vZHVsZXMvd2ViZGF0YWJhc2UgXApJbmRleDogU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDExMDQ2NSkKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xMSw2ICsxMSw3IEBAIHdlYmNvcmVfY3BwZmxh
Z3MgKz0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUgXAog
CS1JJChzcmNkaXIpL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xTTEFORyBcCiAJ
LUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbSBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9nZW9sb2NhdGlvbiBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0g
XApAQCAtNDczLDcgKzQ3NCw3IEBAIEZFQVRVUkVfREVGSU5FUyArPSBFTkFCTEVfTUFUSE1MPTEK
IHdlYmNvcmVfY3BwZmxhZ3MgKz0gLURFTkFCTEVfTUFUSE1MPTEKIGVuZGlmICMgRU5EIEVOQUJM
RV9NQVRITUwKIAotIyBNYXRoTUwgdGFnIGFuZCBhdHRyaWJ1dGUgbmFtZXMsIGFuZCBlbGVtZW50
IGZhY3RvcnkgCisjIE1hdGhNTCB0YWcgYW5kIGF0dHJpYnV0ZSBuYW1lcywgYW5kIGVsZW1lbnQg
ZmFjdG9yeQogRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9NYXRoTUxFbGVtZW50RmFjdG9yeS5oOiBE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL01hdGhNTEVsZW1lbnRGYWN0b3J5LmNwcAogRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9NYXRoTUxOYW1lcy5oOiBEZXJpdmVkU291cmNlcy9XZWJDb3JlL01hdGhN
TE5hbWVzLmNwcAogRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9NYXRoTUxFbGVtZW50RmFjdG9yeS5j
cHAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9NYXRoTUxOYW1lcy5jcHA6ICQoV2ViQ29yZSkvZG9t
L21ha2VfbmFtZXMucGwgJChXZWJDb3JlKS9tYXRobWwvbWF0aHRhZ3MuaW4gJChXZWJDb3JlKS9t
YXRobWwvbWF0aGF0dHJzLmluCkBAIC00OTUsNyArNDk2LDcgQEAgZW5kaWYgIyBFTkQgRU5BQkxF
X05PVElGSUNBVElPTlMKIGlmIEVOQUJMRV9TVkcKIEZFQVRVUkVfREVGSU5FUyArPSBFTkFCTEVf
U1ZHPTEKIHdlYmNvcmVfY3BwZmxhZ3MgKz0gLURFTkFCTEVfU1ZHPTEKLVdFQkNPUkVfQ1NTX1BS
T1BFUlRZX05BTUVTICs9ICQoV2ViQ29yZSkvY3NzL1NWR0NTU1Byb3BlcnR5TmFtZXMuaW4gCitX
RUJDT1JFX0NTU19QUk9QRVJUWV9OQU1FUyArPSAkKFdlYkNvcmUpL2Nzcy9TVkdDU1NQcm9wZXJ0
eU5hbWVzLmluCiBXRUJDT1JFX0NTU19WQUxVRV9LRVlXT1JEUyArPSAkKFdlYkNvcmUpL2Nzcy9T
VkdDU1NWYWx1ZUtleXdvcmRzLmluCiAKICMgU1ZHIEZlYXR1cmVzCkBAIC03NzgsNiArNzc5LDcg
QEAgRGVyaXZlZFNvdXJjZXMvQU5HTEUvZ2xzbGFuZ190YWIuY3BwOiBTbwogRGVyaXZlZFNvdXJj
ZXMvQU5HTEUvZ2xzbGFuZ190YWIuaDogRGVyaXZlZFNvdXJjZXMvQU5HTEUvZ2xzbGFuZ190YWIu
Y3BwCiAKIElETF9QQVRIIDo9IFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbSBc
CiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2dlb2xvY2F0aW9uIFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvaW5kZXhlZGRiIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0gXApA
QCAtODI3LDcgKzgyOSw3IEBAIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlMlLmg6ICUuaWRsICQo
U0MKIAkkKEFNX1ZfR0VOKSQoUEVSTCkgLUkkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMgJChX
ZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsICQoSURMX1BBVEg6
JT0tLWluY2x1ZGUgIiUiKSAtLW91dHB1dERpciAiJChHRU5TT1VSQ0VTX1dFQkNPUkUpIiAtLWRl
ZmluZXMgIkxBTkdVQUdFX0pBVkFTQ1JJUFQ9MSAkKEZFQVRVUkVfREVGSU5FUykiIC0tZ2VuZXJh
dG9yIEpTIC0tc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGUgJChzdXBwbGVtZW50YWxfZGVwZW5k
ZW5jeV9maWxlKSAkPAogCiAjIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzYzODgKLSMgV2UgbmVlZCB0byBpbnRyb2R1Y2UgYSBtYW51YWwgZGVwZW5kZW5jeSB0
byBwcmV2ZW50IG5vbi1nZW5lcmF0ZWQgc291cmNlcyBmcm9tIAorIyBXZSBuZWVkIHRvIGludHJv
ZHVjZSBhIG1hbnVhbCBkZXBlbmRlbmN5IHRvIHByZXZlbnQgbm9uLWdlbmVyYXRlZCBzb3VyY2Vz
IGZyb20KICMgdHJ5aW5nIHRvIGJ1aWxkIGJlZm9yZSB0aGUgZ2VuZXJhdGVkIG9uZXMuIFRoaXMg
Y2FuIGhhcHBlbiBpZiB0aGUgc3VwcGxlbWVudGFsCiAjIElETCBnZW5lcmF0aW9uIHRha2VzIGEg
bG9uZyB0aW1lLiBUaGUgcGlwZSByZXByZXNlbnRzIGFuIG9yZGVyLW9ubHkgZGVwZW5kZW5jeSwK
ICMgd2hpY2ggbWVhbnMgdGhhdCBHTlVtYWtlIHdpbGwgb25seSB0cnkgdG8gYnVpbGQgdGhlIGRl
cGVuZGVuY2llcyBmaXJzdCwgYnV0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0J
KHJldmlzaW9uIDExMDQ2NSkKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0J
KHdvcmtpbmcgY29weSkKQEAgLTIwMzksMTQgKzIwMzksMTQgQEAgd2ViY29yZV9zb3VyY2VzICs9
IFwKIAlTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaCBcCiAJU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9CbG9iVVJMLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmggXAot
CVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5RW50cnkuY3BwIFwKLQlTb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5LmggXAotCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
RGlyZWN0b3J5RW50cnlTeW5jLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3Rv
cnlFbnRyeVN5bmMuaCBcCi0JU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXIu
Y3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlci5oIFwKLQlTb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuY3BwIFwKLQlTb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuaCBcCisJU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5bmMuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmggXAorCVNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmggXAorCVNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmNwcCBcCisJU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuaCBcCiAJU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlUGF0aC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRE9NRmlsZVBhdGguaCBcCiAJU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVt
LmNwcCBcCkBAIC00ODc1LDEwICs0ODc1LDEwIEBAIGRvbV9iaW5kaW5nX2lkbHMgKz0gXAogCSQo
V2ViQ29yZSkvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmlkbCBcCiAJJChXZWJDb3JlKS9maWxlYXBp
L0RPTUZpbGVTeXN0ZW1TeW5jLmlkbCBcCiAJJChXZWJDb3JlKS9maWxlYXBpL0RPTVdpbmRvd0Zp
bGVTeXN0ZW0uaWRsIFwKLQkkKFdlYkNvcmUpL2ZpbGVhcGkvRGlyZWN0b3J5RW50cnkuaWRsIFwK
LQkkKFdlYkNvcmUpL2ZpbGVhcGkvRGlyZWN0b3J5RW50cnlTeW5jLmlkbCBcCi0JJChXZWJDb3Jl
KS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlci5pZGwgXAotCSQoV2ViQ29yZSkvZmlsZWFwaS9EaXJl
Y3RvcnlSZWFkZXJTeW5jLmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGly
ZWN0b3J5RW50cnkuaWRsIFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3Rv
cnlFbnRyeVN5bmMuaWRsIFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3Rv
cnlSZWFkZXIuaWRsIFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlS
ZWFkZXJTeW5jLmlkbCBcCiAJJChXZWJDb3JlKS9maWxlYXBpL0VudHJpZXNDYWxsYmFjay5pZGwg
XAogCSQoV2ViQ29yZSkvZmlsZWFwaS9FbnRyeS5pZGwgXAogCSQoV2ViQ29yZSkvZmlsZWFwaS9F
bnRyeUFycmF5LmlkbCBcCkBAIC01ODI2LDcgKzU4MjYsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0g
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
SW1hZ2VCdWZmZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJMYXllci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmggCisJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyLmgKIHdlYmNvcmVndGtfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vVGV4dHVyZU1hcHBlckNhaXJvLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vVGV4dHVyZU1hcHBlckNhaXJvLmgKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQkocmV2aXNpb24gMTEwNDY1KQorKysgU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkod29y
a2luZyBjb3B5KQpAQCAtNjY5LDEwICs2NjksMTAgQEAgU09VUkNFUyArPSBcCiAgICAgZmlsZWFw
aS9ET01GaWxlU3lzdGVtQmFzZS5jcHAgXAogICAgIGZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMu
Y3BwIFwKICAgICBmaWxlYXBpL0RPTVdpbmRvd0ZpbGVTeXN0ZW0uY3BwIFwKLSAgICBmaWxlYXBp
L0RpcmVjdG9yeUVudHJ5LmNwcCBcCi0gICAgZmlsZWFwaS9EaXJlY3RvcnlFbnRyeVN5bmMuY3Bw
IFwKLSAgICBmaWxlYXBpL0RpcmVjdG9yeVJlYWRlci5jcHAgXAotICAgIGZpbGVhcGkvRGlyZWN0
b3J5UmVhZGVyU3luYy5jcHAgXAorICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRy
eS5jcHAgXAorICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5bmMuY3BwIFwK
KyAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmNwcCBcCisgICAgTW9kdWxl
cy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuY3BwIFwKICAgICBmaWxlYXBpL0VudHJ5
LmNwcCBcCiAgICAgZmlsZWFwaS9FbnRyeUFycmF5LmNwcCBcCiAgICAgZmlsZWFwaS9FbnRyeUFy
cmF5U3luYy5jcHAgXApAQCAtMzA2MCwxMSArMzA2MCwxMSBAQCBjb250YWlucyhERUZJTkVTLCBF
TkFCTEVfREFUQV9UUkFOU0ZFUl9JCiBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfRklMRV9TWVNU
RU09MSkgewogICAgIEhFQURFUlMgKz0gXAogICAgICAgICBmaWxlYXBpL0FzeW5jRmlsZVdyaXRl
ci5oIFwKLSAgICAgICAgZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5oIFwKLSAgICAgICAgZmlsZWFw
aS9EaXJlY3RvcnlFbnRyeVN5bmMuaCBcCi0gICAgICAgIGZpbGVhcGkvRGlyZWN0b3J5UmVhZGVy
LmggXAotICAgICAgICBmaWxlYXBpL0RpcmVjdG9yeVJlYWRlckJhc2UuaCBcCi0gICAgICAgIGZp
bGVhcGkvRGlyZWN0b3J5UmVhZGVyU3luYy5oIFwKKyAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVt
L0RpcmVjdG9yeUVudHJ5LmggXAorICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5
RW50cnlTeW5jLmggXAorICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVy
LmggXAorICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyQmFzZS5oIFwK
KyAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuaCBcCiAgICAg
ICAgIGZpbGVhcGkvRE9NRmlsZVBhdGguaCBcCiAgICAgICAgIGZpbGVhcGkvRE9NRmlsZVN5c3Rl
bS5oIFwKICAgICAgICAgZmlsZWFwaS9ET01GaWxlU3lzdGVtQmFzZS5oIFwKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkJKHJldmlzaW9uIDExMDQ2NSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQkod29ya2luZyBjb3B5KQpAQCAtODg2LDEwICs4ODYsMTAgQEAKICAgICAgICAgICAgICdkb20v
V2ViS2l0VHJhbnNpdGlvbkV2ZW50LmlkbCcsCiAgICAgICAgICAgICAnZG9tL1doZWVsRXZlbnQu
aWRsJywKICAgICAgICAgICAgICdmaWxlYXBpL0Jsb2IuaWRsJywKLSAgICAgICAgICAgICdmaWxl
YXBpL0RpcmVjdG9yeUVudHJ5LmlkbCcsCi0gICAgICAgICAgICAnZmlsZWFwaS9EaXJlY3RvcnlF
bnRyeVN5bmMuaWRsJywKLSAgICAgICAgICAgICdmaWxlYXBpL0RpcmVjdG9yeVJlYWRlci5pZGwn
LAotICAgICAgICAgICAgJ2ZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyU3luYy5pZGwnLAorICAgICAg
ICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5pZGwnLAorICAgICAgICAg
ICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5bmMuaWRsJywKKyAgICAgICAg
ICAgICdNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmlkbCcsCisgICAgICAgICAg
ICAnTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuaWRsJywKICAgICAgICAg
ICAgICdmaWxlYXBpL0RPTUZpbGVTeXN0ZW0uaWRsJywKICAgICAgICAgICAgICdmaWxlYXBpL0RP
TUZpbGVTeXN0ZW1TeW5jLmlkbCcsCiAgICAgICAgICAgICAnZmlsZWFwaS9ET01XaW5kb3dGaWxl
U3lzdGVtLmlkbCcsCkBAIC0yNDQxLDE1ICsyNDQxLDE1IEBACiAgICAgICAgICAgICAnZmlsZWFw
aS9ET01GaWxlU3lzdGVtU3luYy5oJywKICAgICAgICAgICAgICdmaWxlYXBpL0RPTVdpbmRvd0Zp
bGVTeXN0ZW0uY3BwJywKICAgICAgICAgICAgICdmaWxlYXBpL0RPTVdpbmRvd0ZpbGVTeXN0ZW0u
aCcsCi0gICAgICAgICAgICAnZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5jcHAnLAotICAgICAgICAg
ICAgJ2ZpbGVhcGkvRGlyZWN0b3J5RW50cnkuaCcsCi0gICAgICAgICAgICAnZmlsZWFwaS9EaXJl
Y3RvcnlFbnRyeVN5bmMuY3BwJywKLSAgICAgICAgICAgICdmaWxlYXBpL0RpcmVjdG9yeUVudHJ5
U3luYy5oJywKLSAgICAgICAgICAgICdmaWxlYXBpL0RpcmVjdG9yeVJlYWRlci5jcHAnLAotICAg
ICAgICAgICAgJ2ZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyLmgnLAotICAgICAgICAgICAgJ2ZpbGVh
cGkvRGlyZWN0b3J5UmVhZGVyQmFzZS5oJywKLSAgICAgICAgICAgICdmaWxlYXBpL0RpcmVjdG9y
eVJlYWRlclN5bmMuY3BwJywKLSAgICAgICAgICAgICdmaWxlYXBpL0RpcmVjdG9yeVJlYWRlclN5
bmMuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmNw
cCcsCisgICAgICAgICAgICAnTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmgnLAor
ICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5bmMuY3BwJywK
KyAgICAgICAgICAgICdNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmgnLAor
ICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXIuY3BwJywKKyAg
ICAgICAgICAgICdNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmgnLAorICAgICAg
ICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJCYXNlLmgnLAorICAgICAg
ICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmNwcCcsCisgICAg
ICAgICAgICAnTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuaCcsCiAgICAg
ICAgICAgICAnZmlsZWFwaS9FbnRyaWVzQ2FsbGJhY2suaCcsCiAgICAgICAgICAgICAnZmlsZWFw
aS9FbnRyeS5jcHAnLAogICAgICAgICAgICAgJ2ZpbGVhcGkvRW50cnkuaCcsCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnByaQkocmV2aXNpb24gMTEwNDY1KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkJ
KHdvcmtpbmcgY29weSkKQEAgLTE4LDYgKzE4LDcgQEAgV0VCQ09SRV9HRU5FUkFURURfU09VUkNF
U19ESVIgPSAkJHtST09UXwogCiBJTkNMVURFUEFUSCArPSBcCiAgICAgJCRTT1VSQ0VfRElSIFwK
KyAgICAkJFNPVVJDRV9ESVIvTW9kdWxlcy9maWxlc3lzdGVtIFwKICAgICAkJFNPVVJDRV9ESVIv
TW9kdWxlcy9nZW9sb2NhdGlvbiBcCiAgICAgJCRTT1VSQ0VfRElSL01vZHVsZXMvaW5kZXhlZGRi
IFwKICAgICAkJFNPVVJDRV9ESVIvTW9kdWxlcy93ZWJkYXRhYmFzZSBcCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5jcHAJ
KHJldmlzaW9uIDExMDQ2NSkJKGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlF
bnRyeS5jcHA6MTEwNDY1KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0Rp
cmVjdG9yeUVudHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkRpcmVjdG9yeUVudHJ5LmgiCisKKyNpZiBFTkFCTEUoRklM
RV9TWVNURU0pCisKKyNpbmNsdWRlICJEaXJlY3RvcnlSZWFkZXIuaCIKKyNpbmNsdWRlICJFbnRy
eUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgorI2luY2x1ZGUgIkZpbGVF
cnJvci5oIgorI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK0RpcmVjdG9yeUVudHJ5OjpEaXJlY3RvcnlFbnRyeShQYXNzUmVmUHRyPERPTUZpbGVTeXN0
ZW1CYXNlPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQorICAgIDogRW50cnko
ZmlsZVN5c3RlbSwgZnVsbFBhdGgpCit7Cit9CisKK1Bhc3NSZWZQdHI8RGlyZWN0b3J5UmVhZGVy
PiBEaXJlY3RvcnlFbnRyeTo6Y3JlYXRlUmVhZGVyKCkKK3sKKyAgICByZXR1cm4gRGlyZWN0b3J5
UmVhZGVyOjpjcmVhdGUobV9maWxlU3lzdGVtLCBtX2Z1bGxQYXRoKTsKK30KKwordm9pZCBEaXJl
Y3RvcnlFbnRyeTo6Z2V0RmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8V2ViS2l0
RmxhZ3M+IGZsYWdzLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywg
UGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrUmVmKQoreworICAgIFJlZlB0
cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2tSZWYpOworICAgIGlm
ICghbV9maWxlU3lzdGVtLT5nZXRGaWxlKHRoaXMsIHBhdGgsIGZsYWdzLCBzdWNjZXNzQ2FsbGJh
Y2ssIGVycm9yQ2FsbGJhY2spKQorICAgICAgICBmaWxlc3lzdGVtKCktPnNjaGVkdWxlQ2FsbGJh
Y2soZXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6
SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKSk7Cit9CisKK3ZvaWQgRGlyZWN0b3J5RW50cnk6Omdl
dERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8V2ViS2l0RmxhZ3M+IGZs
YWdzLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0
cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrUmVmKQoreworICAgIFJlZlB0cjxFcnJvckNh
bGxiYWNrPiBlcnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2tSZWYpOworICAgIGlmICghbV9maWxl
U3lzdGVtLT5nZXREaXJlY3RvcnkodGhpcywgcGF0aCwgZmxhZ3MsIHN1Y2Nlc3NDYWxsYmFjaywg
ZXJyb3JDYWxsYmFjaykpCisgICAgICAgIGZpbGVzeXN0ZW0oKS0+c2NoZWR1bGVDYWxsYmFjayhl
cnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpJTlZB
TElEX01PRElGSUNBVElPTl9FUlIpKTsKK30KKwordm9pZCBEaXJlY3RvcnlFbnRyeTo6cmVtb3Zl
UmVjdXJzaXZlbHkoUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFz
c1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrUmVmKSBjb25zdAoreworICAgIFJl
ZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2tSZWYpOworICAg
IGlmICghbV9maWxlU3lzdGVtLT5yZW1vdmVSZWN1cnNpdmVseSh0aGlzLCBzdWNjZXNzQ2FsbGJh
Y2ssIGVycm9yQ2FsbGJhY2spKQorICAgICAgICBmaWxlc3lzdGVtKCktPnNjaGVkdWxlQ2FsbGJh
Y2soZXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6
SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKSk7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShG
SUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJl
Y3RvcnlFbnRyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbS9EaXJlY3RvcnlFbnRyeS5oCShyZXZpc2lvbiAxMTA0NjUpCShmcm9tIFNvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRGlyZWN0b3J5RW50cnkuaDoxMTA0NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnkuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBEaXJlY3RvcnlFbnRyeV9oCisjZGVmaW5lIERpcmVjdG9yeUVudHJ5
X2gKKworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKworI2luY2x1ZGUgIkVudHJ5LmgiCisjaW5j
bHVkZSAiV2ViS2l0RmxhZ3MuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBET01GaWxlU3lzdGVtQmFzZTsKK2NsYXNzIERpcmVj
dG9yeVJlYWRlcjsKK2NsYXNzIEVudHJ5Q2FsbGJhY2s7CitjbGFzcyBFcnJvckNhbGxiYWNrOwor
Y2xhc3MgVm9pZENhbGxiYWNrOworCitjbGFzcyBEaXJlY3RvcnlFbnRyeSA6IHB1YmxpYyBFbnRy
eSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnk+IGNyZWF0
ZShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcm
IGZ1bGxQYXRoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEaXJlY3RvcnlF
bnRyeShmaWxlU3lzdGVtLCBmdWxsUGF0aCkpOworICAgIH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNE
aXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKKyAgICBQYXNzUmVmUHRyPERpcmVj
dG9yeVJlYWRlcj4gY3JlYXRlUmVhZGVyKCk7CisgICAgdm9pZCBnZXRGaWxlKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgUGFzc1JlZlB0cjxXZWJLaXRGbGFncz4gPSAwLCBQYXNzUmVmUHRyPEVudHJ5Q2Fs
bGJhY2s+ID0gMCwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiA9IDApOworICAgIHZvaWQgZ2V0
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxXZWJLaXRGbGFncz4gPSAw
LCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+ID0gMCwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNr
PiA9IDApOworICAgIHZvaWQgcmVtb3ZlUmVjdXJzaXZlbHkoUGFzc1JlZlB0cjxWb2lkQ2FsbGJh
Y2s+IHN1Y2Nlc3NDYWxsYmFjayA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gPSAwKSBj
b25zdDsKKworcHJpdmF0ZToKKyAgICBEaXJlY3RvcnlFbnRyeShQYXNzUmVmUHRyPERPTUZpbGVT
eXN0ZW1CYXNlPiwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCk7Cit9OworCit9IC8vIG5hbWVzcGFj
ZQorCisjZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjZW5kaWYgLy8gRGlyZWN0b3J5
RW50cnlfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9y
eUVudHJ5LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRGlyZWN0b3J5RW50cnkuaWRsCShyZXZpc2lvbiAxMTA0NjUpCShmcm9tIFNvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRGlyZWN0b3J5RW50cnkuaWRsOjExMDQ2NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKK21vZHVsZSBzdG9yYWdlIHsKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBD
b25kaXRpb25hbD1GSUxFX1NZU1RFTSwKKyAgICAgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0
LAorICAgICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKKyAgICAgICAgSlNOb1N0YXRpY1RhYmxl
cworICAgIF0gRGlyZWN0b3J5RW50cnkgOiBFbnRyeSB7CisgICAgICAgIERpcmVjdG9yeVJlYWRl
ciBjcmVhdGVSZWFkZXIoKTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCBnZXRGaWxlKGluIFtUcmVh
dE51bGxBcz1OdWxsU3RyaW5nLCBUcmVhdFVuZGVmaW5lZEFzPU51bGxTdHJpbmddIERPTVN0cmlu
ZyBwYXRoLCBpbiBbT3B0aW9uYWxdIFdlYktpdEZsYWdzIGZsYWdzLCBpbiBbT3B0aW9uYWwsIENh
bGxiYWNrXSBFbnRyeUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4gW09wdGlvbmFsLCBDYWxs
YmFja10gRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKTsKKyAgICAgICAgW0N1c3RvbV0gdm9p
ZCBnZXREaXJlY3RvcnkoaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5kZWZpbmVk
QXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIHBhdGgsIGluIFtPcHRpb25hbF0gV2ViS2l0RmxhZ3Mg
ZmxhZ3MsIGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVudHJ5Q2FsbGJhY2sgc3VjY2Vzc0NhbGxi
YWNrLCBpbiBbT3B0aW9uYWwsIENhbGxiYWNrXSBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2sp
OworICAgICAgICB2b2lkIHJlbW92ZVJlY3Vyc2l2ZWx5KGluIFtDYWxsYmFja10gVm9pZENhbGxi
YWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4gW09wdGlvbmFsLCBDYWxsYmFja10gRXJyb3JDYWxsYmFj
ayBlcnJvckNhbGxiYWNrKTsKKyAgICB9OworfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5jcHAJKHJldmlz
aW9uIDExMDQ2NSkJKGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlFbnRyeVN5
bmMuY3BwOjExMDQ2NSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJl
Y3RvcnlFbnRyeVN5bmMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGlyZWN0b3J5RW50cnlTeW5jLmgiCisKKyNpZiBFTkFC
TEUoRklMRV9TWVNURU0pCisKKyNpbmNsdWRlICJEaXJlY3RvcnlSZWFkZXJTeW5jLmgiCisjaW5j
bHVkZSAiRW50cnlTeW5jLmgiCisjaW5jbHVkZSAiRmlsZUVudHJ5U3luYy5oIgorI2luY2x1ZGUg
IkZpbGVFeGNlcHRpb24uaCIKKyNpbmNsdWRlICJTeW5jQ2FsbGJhY2tIZWxwZXIuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitEaXJlY3RvcnlFbnRyeVN5bmM6OkRpcmVjdG9yeUVudHJ5U3lu
YyhQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcm
IGZ1bGxQYXRoKQorICAgIDogRW50cnlTeW5jKGZpbGVTeXN0ZW0sIGZ1bGxQYXRoKQoreworfQor
CitQYXNzUmVmUHRyPERpcmVjdG9yeVJlYWRlclN5bmM+IERpcmVjdG9yeUVudHJ5U3luYzo6Y3Jl
YXRlUmVhZGVyKEV4Y2VwdGlvbkNvZGUmKQoreworICAgIHJldHVybiBEaXJlY3RvcnlSZWFkZXJT
eW5jOjpjcmVhdGUobV9maWxlU3lzdGVtLCBtX2Z1bGxQYXRoKTsKK30KKworUGFzc1JlZlB0cjxG
aWxlRW50cnlTeW5jPiBEaXJlY3RvcnlFbnRyeVN5bmM6OmdldEZpbGUoY29uc3QgU3RyaW5nJiBw
YXRoLCBQYXNzUmVmUHRyPFdlYktpdEZsYWdzPiBmbGFncywgRXhjZXB0aW9uQ29kZSYgZWMpCit7
CisgICAgZWMgPSAwOworICAgIEVudHJ5U3luY0NhbGxiYWNrSGVscGVyIGhlbHBlcihtX2ZpbGVT
eXN0ZW0tPmFzeW5jRmlsZVN5c3RlbSgpKTsKKyAgICBpZiAoIW1fZmlsZVN5c3RlbS0+Z2V0Rmls
ZSh0aGlzLCBwYXRoLCBmbGFncywgaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIuZXJy
b3JDYWxsYmFjaygpKSkgeworICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246OklOVkFMSURfTU9E
SUZJQ0FUSU9OX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBzdGF0
aWNfcG9pbnRlcl9jYXN0PEZpbGVFbnRyeVN5bmM+KGhlbHBlci5nZXRSZXN1bHQoZWMpKTsKK30K
KworUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeVN5bmM+IERpcmVjdG9yeUVudHJ5U3luYzo6Z2V0
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxXZWJLaXRGbGFncz4gZmxh
Z3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGVjID0gMDsKKyAgICBFbnRyeVN5bmNDYWxs
YmFja0hlbHBlciBoZWxwZXIobV9maWxlU3lzdGVtLT5hc3luY0ZpbGVTeXN0ZW0oKSk7CisgICAg
aWYgKCFtX2ZpbGVTeXN0ZW0tPmdldERpcmVjdG9yeSh0aGlzLCBwYXRoLCBmbGFncywgaGVscGVy
LnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIuZXJyb3JDYWxsYmFjaygpKSkgeworICAgICAgICBl
YyA9IEZpbGVFeGNlcHRpb246OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorICAgIHJldHVybiBzdGF0aWNfcG9pbnRlcl9jYXN0PERpcmVjdG9yeUVu
dHJ5U3luYz4oaGVscGVyLmdldFJlc3VsdChlYykpOworfQorCit2b2lkIERpcmVjdG9yeUVudHJ5
U3luYzo6cmVtb3ZlUmVjdXJzaXZlbHkoRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgZWMgPSAw
OworICAgIFZvaWRTeW5jQ2FsbGJhY2tIZWxwZXIgaGVscGVyKG1fZmlsZVN5c3RlbS0+YXN5bmNG
aWxlU3lzdGVtKCkpOworICAgIGlmICghbV9maWxlU3lzdGVtLT5yZW1vdmVSZWN1cnNpdmVseSh0
aGlzLCBoZWxwZXIuc3VjY2Vzc0NhbGxiYWNrKCksIGhlbHBlci5lcnJvckNhbGxiYWNrKCkpKSB7
CisgICAgICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGhlbHBlci5nZXRSZXN1bHQoZWMpOworfQorCit9
CisKKyNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5oCShyZXZp
c2lvbiAxMTA0NjUpCShmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5RW50cnlT
eW5jLmg6MTEwNDY1KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVj
dG9yeUVudHJ5U3luYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIERp
cmVjdG9yeUVudHJ5U3luY19oCisjZGVmaW5lIERpcmVjdG9yeUVudHJ5U3luY19oCisKKyNpZiBF
TkFCTEUoRklMRV9TWVNURU0pCisKKyNpbmNsdWRlICJFbnRyeVN5bmMuaCIKKyNpbmNsdWRlICJX
ZWJLaXRGbGFncy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIERpcmVjdG9yeVJlYWRlclN5bmM7CitjbGFzcyBGaWxlRW50cnlT
eW5jOworCitjbGFzcyBEaXJlY3RvcnlFbnRyeVN5bmMgOiBwdWJsaWMgRW50cnlTeW5jIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeVN5bmM+IGNyZWF0ZShQ
YXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1
bGxQYXRoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEaXJlY3RvcnlFbnRy
eVN5bmMoZmlsZVN5c3RlbSwgZnVsbFBhdGgpKTsKKyAgICB9CisgICAgdmlydHVhbCBib29sIGlz
RGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgUGFzc1JlZlB0cjxEaXJl
Y3RvcnlSZWFkZXJTeW5jPiBjcmVhdGVSZWFkZXIoRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NS
ZWZQdHI8RmlsZUVudHJ5U3luYz4gZ2V0RmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQ
dHI8V2ViS2l0RmxhZ3M+LCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxEaXJlY3Rv
cnlFbnRyeVN5bmM+IGdldERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8
V2ViS2l0RmxhZ3M+LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCByZW1vdmVSZWN1cnNpdmVs
eShFeGNlcHRpb25Db2RlJik7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEVudHJ5U3lu
YzsKKyAgICBEaXJlY3RvcnlFbnRyeVN5bmMoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4s
IGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEZJ
TEVfU1lTVEVNKQorCisjZW5kaWYgLy8gRGlyZWN0b3J5RW50cnlTeW5jX2gKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5bmMuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRy
eVN5bmMuaWRsCShyZXZpc2lvbiAxMTA0NjUpCShmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
RGlyZWN0b3J5RW50cnlTeW5jLmlkbDoxMTA0NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworbW9kdWxlIHN0b3JhZ2UgeworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRp
dGlvbmFsPUZJTEVfU1lTVEVNLAorICAgICAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCisg
ICAgICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAorICAgICAgICBKU05vU3RhdGljVGFibGVzCisg
ICAgXSBEaXJlY3RvcnlFbnRyeVN5bmMgOiBFbnRyeVN5bmMgeworICAgICAgICBEaXJlY3RvcnlS
ZWFkZXJTeW5jIGNyZWF0ZVJlYWRlcigpIHJhaXNlcyAoRmlsZUV4Y2VwdGlvbik7CisgICAgICAg
IFtDdXN0b21dIEZpbGVFbnRyeVN5bmMgZ2V0RmlsZShpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmlu
ZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3RyaW5nXSBET01TdHJpbmcgcGF0aCwgaW4gV2ViS2l0
RmxhZ3MgZmxhZ3MpIHJhaXNlcyAoRmlsZUV4Y2VwdGlvbik7CisgICAgICAgIFtDdXN0b21dIERp
cmVjdG9yeUVudHJ5U3luYyBnZXREaXJlY3RvcnkoaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcs
IFRyZWF0VW5kZWZpbmVkQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIHBhdGgsIGluIFdlYktpdEZs
YWdzIGZsYWdzKSByYWlzZXMgKEZpbGVFeGNlcHRpb24pOworICAgICAgICB2b2lkIHJlbW92ZVJl
Y3Vyc2l2ZWx5KCkgcmFpc2VzIChGaWxlRXhjZXB0aW9uKTsKKyAgICB9OworfQpJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRl
ci5jcHAJKHJldmlzaW9uIDExMDQ2NSkJKGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJl
Y3RvcnlSZWFkZXIuY3BwOjExMDQ2NSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbS9EaXJlY3RvcnlSZWFkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGlyZWN0b3J5UmVhZGVyLmgiCisKKyNpZiBF
TkFCTEUoRklMRV9TWVNURU0pCisKKyNpbmNsdWRlICJFbnRyaWVzQ2FsbGJhY2suaCIKKyNpbmNs
dWRlICJFbnRyeUFycmF5LmgiCisjaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgorI2luY2x1ZGUg
IkZpbGVFcnJvci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0RpcmVjdG9yeVJlYWRlcjo6
RGlyZWN0b3J5UmVhZGVyKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0s
IGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCisgICAgOiBEaXJlY3RvcnlSZWFkZXJCYXNlKGZpbGVT
eXN0ZW0sIGZ1bGxQYXRoKQoreworfQorCit2b2lkIERpcmVjdG9yeVJlYWRlcjo6cmVhZEVudHJp
ZXMoUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+IGVudHJpZXNDYWxsYmFjaywgUGFzc1JlZlB0
cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQoreworICAgIGlmICghbV9oYXNNb3JlRW50
cmllcykgeworICAgICAgICBmaWxlc3lzdGVtKCktPnNjaGVkdWxlQ2FsbGJhY2soZW50cmllc0Nh
bGxiYWNrLCBFbnRyeUFycmF5OjpjcmVhdGUoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgZmlsZXN5c3RlbSgpLT5yZWFkRGlyZWN0b3J5KHRoaXMsIG1fZnVsbFBhdGgsIGVudHJpZXND
YWxsYmFjaywgZXJyb3JDYWxsYmFjayk7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShGSUxF
X1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3Rv
cnlSZWFkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRGlyZWN0b3J5UmVhZGVyLmgJKHJldmlzaW9uIDExMDQ2NSkJKGZyb20gU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXIuaDoxMTA0NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgRGlyZWN0b3J5UmVhZGVyX2gKKyNkZWZpbmUgRGlyZWN0b3J5UmVh
ZGVyX2gKKworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKworI2luY2x1ZGUgIkRPTUZpbGVTeXN0
ZW0uaCIKKyNpbmNsdWRlICJEaXJlY3RvcnlSZWFkZXJCYXNlLmgiCisjaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRW50cmllc0NhbGxi
YWNrOworY2xhc3MgRW50cmllc0NhbGxiYWNrczsKK2NsYXNzIEVycm9yQ2FsbGJhY2s7CisKK2Ns
YXNzIERpcmVjdG9yeVJlYWRlciA6IHB1YmxpYyBEaXJlY3RvcnlSZWFkZXJCYXNlIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEaXJlY3RvcnlSZWFkZXI+IGNyZWF0ZShQYXNzUmVm
UHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEaXJlY3RvcnlSZWFkZXIoZmls
ZVN5c3RlbSwgZnVsbFBhdGgpKTsKKyAgICB9CisKKyAgICB2b2lkIHJlYWRFbnRyaWVzKFBhc3NS
ZWZQdHI8RW50cmllc0NhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiA9IDApOwor
CisgICAgRE9NRmlsZVN5c3RlbSogZmlsZXN5c3RlbSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PERPTUZpbGVTeXN0ZW0qPihtX2ZpbGVTeXN0ZW0uZ2V0KCkpOyB9CisKK3ByaXZhdGU6Cisg
ICAgRGlyZWN0b3J5UmVhZGVyKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+LCBjb25zdCBT
dHJpbmcmIGZ1bGxQYXRoKTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RF
TSkKKworI2VuZGlmIC8vIERpcmVjdG9yeVJlYWRlcl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmlkbAkocmV2aXNp
b24gMTEwNDY1KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlci5p
ZGw6MTEwNDY1KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9y
eVJlYWRlci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBzdG9yYWdl
IHsKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1GSUxFX1NZU1RFTSwKKyAg
ICAgICAgSlNOb1N0YXRpY1RhYmxlcworICAgIF0gRGlyZWN0b3J5UmVhZGVyIHsKKyAgICAgICAg
dm9pZCByZWFkRW50cmllcyhpbiBbQ2FsbGJhY2tdIEVudHJpZXNDYWxsYmFjayBzdWNjZXNzQ2Fs
bGJhY2ssIGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFj
ayk7CisgICAgfTsKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9E
aXJlY3RvcnlSZWFkZXJCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlckJhc2UuaAkocmV2aXNpb24gMTEwNDY1KQkoZnJv
bSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlckJhc2UuaDoxMTA0NjUpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyQmFzZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIERpcmVjdG9yeVJlYWRlckJh
c2VfaAorI2RlZmluZSBEaXJlY3RvcnlSZWFkZXJCYXNlX2gKKworI2lmIEVOQUJMRShGSUxFX1NZ
U1RFTSkKKworI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW1CYXNlLmgiCisjaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRGlyZWN0b3J5UmVh
ZGVyQmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPERpcmVjdG9yeVJlYWRlckJhc2U+IHsKK3B1Ymxp
YzoKKyAgICBET01GaWxlU3lzdGVtQmFzZSogZmlsZXN5c3RlbSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZmlsZVN5c3RlbS5nZXQoKTsgfQorICAgIHZvaWQgc2V0SGFzTW9yZUVudHJpZXMoYm9vbCBoYXNN
b3JlRW50cmllcykgeyBtX2hhc01vcmVFbnRyaWVzID0gaGFzTW9yZUVudHJpZXM7IH0KKworcHJv
dGVjdGVkOgorICAgIERpcmVjdG9yeVJlYWRlckJhc2UoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVt
QmFzZT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKKyAgICAgICAgOiBtX2Zp
bGVTeXN0ZW0oZmlsZVN5c3RlbSkKKyAgICAgICAgLCBtX2Z1bGxQYXRoKGZ1bGxQYXRoKQorICAg
ICAgICAsIG1faGFzTW9yZUVudHJpZXModHJ1ZSkKKyAgICB7CisgICAgfQorCisgICAgUmVmUHRy
PERPTUZpbGVTeXN0ZW1CYXNlPiBtX2ZpbGVTeXN0ZW07CisKKyAgICAvLyBUaGlzIGlzIGEgdmly
dHVhbCBwYXRoLgorICAgIFN0cmluZyBtX2Z1bGxQYXRoOworCisgICAgYm9vbCBtX2hhc01vcmVF
bnRyaWVzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KEZJTEVfU1lTVEVNKQorCisjZW5kaWYgLy8gRGlyZWN0b3J5UmVhZGVyQmFzZV9oCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyU3luYy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9y
eVJlYWRlclN5bmMuY3BwCShyZXZpc2lvbiAxMTA0NjUpCShmcm9tIFNvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRGlyZWN0b3J5UmVhZGVyU3luYy5jcHA6MTEwNDY1KQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGlyZWN0b3J5
UmVhZGVyU3luYy5oIgorCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjaW5jbHVkZSAiRGly
ZWN0b3J5RW50cnkuaCIKKyNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeVN5bmMuaCIKKyNpbmNsdWRl
ICJFbnRyeUFycmF5U3luYy5oIgorI2luY2x1ZGUgIkVudHJ5U3luYy5oIgorI2luY2x1ZGUgIkZp
bGVFbnRyeVN5bmMuaCIKKyNpbmNsdWRlICJGaWxlRXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiU3lu
Y0NhbGxiYWNrSGVscGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRGlyZWN0b3J5UmVh
ZGVyU3luYzo6RGlyZWN0b3J5UmVhZGVyU3luYyhQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNl
PiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQorICAgIDogRGlyZWN0b3J5UmVh
ZGVyQmFzZShmaWxlU3lzdGVtLCBmdWxsUGF0aCkKK3sKK30KKworUGFzc1JlZlB0cjxFbnRyeUFy
cmF5U3luYz4gRGlyZWN0b3J5UmVhZGVyU3luYzo6cmVhZEVudHJpZXMoRXhjZXB0aW9uQ29kZSYg
ZWMpCit7CisgICAgZWMgPSAwOworICAgIGlmICghbV9oYXNNb3JlRW50cmllcykKKyAgICAgICAg
cmV0dXJuIEVudHJ5QXJyYXlTeW5jOjpjcmVhdGUoKTsKKworICAgIEVudHJpZXNTeW5jQ2FsbGJh
Y2tIZWxwZXIgaGVscGVyKG1fZmlsZVN5c3RlbS0+YXN5bmNGaWxlU3lzdGVtKCkpOworICAgIGlm
ICghbV9maWxlU3lzdGVtLT5yZWFkRGlyZWN0b3J5KHRoaXMsIG1fZnVsbFBhdGgsIGhlbHBlci5z
dWNjZXNzQ2FsbGJhY2soKSwgaGVscGVyLmVycm9yQ2FsbGJhY2soKSkpIHsKKyAgICAgICAgZWMg
PSBGaWxlRXhjZXB0aW9uOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlI7CisgICAgICAgIHNldEhh
c01vcmVFbnRyaWVzKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVy
biBoZWxwZXIuZ2V0UmVzdWx0KGVjKTsKK30KKworfSAvLyBuYW1lc3BhY2UKKworI2VuZGlmIC8v
IEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuaAkocmV2aXNpb24gMTEwNDY1
KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuaDoxMTA0
NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVy
U3luYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIERpcmVjdG9yeVJl
YWRlclN5bmNfaAorI2RlZmluZSBEaXJlY3RvcnlSZWFkZXJTeW5jX2gKKworI2lmIEVOQUJMRShG
SUxFX1NZU1RFTSkKKworI2luY2x1ZGUgIkRpcmVjdG9yeVJlYWRlckJhc2UuaCIKKyNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBFbnRy
eUFycmF5U3luYzsKKwordHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKKworY2xhc3MgRGlyZWN0
b3J5UmVhZGVyU3luYyA6IHB1YmxpYyBEaXJlY3RvcnlSZWFkZXJCYXNlIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxEaXJlY3RvcnlSZWFkZXJTeW5jPiBjcmVhdGUoUGFzc1JlZlB0
cjxET01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGlyZWN0b3J5UmVhZGVyU3luYyhm
aWxlU3lzdGVtLCBmdWxsUGF0aCkpOworICAgIH0KKworICAgIFBhc3NSZWZQdHI8RW50cnlBcnJh
eVN5bmM+IHJlYWRFbnRyaWVzKEV4Y2VwdGlvbkNvZGUmKTsKKworcHJpdmF0ZToKKyAgICBEaXJl
Y3RvcnlSZWFkZXJTeW5jKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+LCBjb25zdCBTdHJp
bmcmIGZ1bGxQYXRoKTsKK307CisKK30gLy8gbmFtZXNwYWNlCisKKyNlbmRpZiAvLyBFTkFCTEUo
RklMRV9TWVNURU0pCisKKyNlbmRpZiAvLyBEaXJlY3RvcnlSZWFkZXJTeW5jX2gKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5
UmVhZGVyU3luYy5pZGwJKHJldmlzaW9uIDExMDQ2NSkJKGZyb20gU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9EaXJlY3RvcnlSZWFkZXJTeW5jLmlkbDoxMTA0NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyU3luYy5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKK21vZHVsZSBzdG9yYWdlIHsKKyAgICBpbnRlcmZhY2UgWworICAgICAg
ICBDb25kaXRpb25hbD1GSUxFX1NZU1RFTSwKKyAgICAgICAgSlNOb1N0YXRpY1RhYmxlcworICAg
IF0gRGlyZWN0b3J5UmVhZGVyU3luYyB7CisgICAgICAgIEVudHJ5QXJyYXlTeW5jIHJlYWRFbnRy
aWVzKCkgcmFpc2VzIChGaWxlRXhjZXB0aW9uKTsKKyAgICB9OworfQpJbmRleDogU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAJKHJldmlzaW9uIDExMDQ2NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1
MSw3IEBACiAgICAgJ3dlYmNvcmVfaW5jbHVkZV9kaXJzJzogWwogICAgICAgJy4uLycsCiAgICAg
ICAnLi4vLi4nLAorICAgICAgJy4uL01vZHVsZXMvZmlsZXN5c3RlbScsCiAgICAgICAnLi4vTW9k
dWxlcy9nYW1lcGFkJywKICAgICAgICcuLi9Nb2R1bGVzL2dlb2xvY2F0aW9uJywKICAgICAgICcu
Li9Nb2R1bGVzL2ludGVudHMnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTEwNDY1KQorKysgU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC05NzY0LDcgKzk3NjQsNyBAQAogCQk4NjFDMkVBNTEzRkI0RkZGMDAwNjJBQkIgLyogUmVzb3Vy
Y2VMb2FkVGltaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
c291cmNlTG9hZFRpbWluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2MjQz
RDAwMTFCQzMxRjcwMENDMDA2QSAvKiBKU0FycmF5QnVmZmVyVmlld0hlbHBlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0FycmF5QnVmZmVyVmlld0hlbHBlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkQ5ODJGNjEyNUMxNTQwMDBBRDlFM0QgLyogRG9j
dW1lbnRUaW1pbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG9jdW1lbnRU
aW1pbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODkwQUUwRTAxMjU2QTA3OTAw
RjU5NjhDIC8qIERpcmVjdG9yeVJlYWRlckJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gRGlyZWN0b3J5UmVhZGVyQmFzZS5oOyBwYXRoID0gZmlsZWFwaS9EaXJlY3RvcnlS
ZWFkZXJCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg5MEFFMEUwMTI1NkEw
NzkwMEY1OTY4QyAvKiBEaXJlY3RvcnlSZWFkZXJCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IERpcmVjdG9yeVJlYWRlckJhc2UuaDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5
c3RlbS9EaXJlY3RvcnlSZWFkZXJCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTg5MkNGMThEMTM0QzYyMEQwMEFBRURBMSAvKiBTdG9yYWdlSW5mb0Vycm9yQ2FsbGJhY2suaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZUluZm9FcnJvckNhbGxiYWNr
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5MkNGMThFMTM0QzYyMEQwMEFBRURB
MSAvKiBTdG9yYWdlSW5mb1F1b3RhQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU3RvcmFnZUluZm9RdW90YUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg5MkNGMThGMTM0QzYyMEQwMEFBRURBMSAvKiBTdG9yYWdlSW5mb1VzYWdlQ2Fs
bGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZUluZm9Vc2Fn
ZUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05Nzg1LDEwICs5Nzg1
LDEwIEBACiAJCTg5M0M0N0JBMTIzOEEwQTkwMDJCM0Q4NiAvKiBKU0ZpbGVXcml0ZXJDYWxsYmFj
ay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ZpbGVXcml0ZXJDYWxsYmFj
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4OTNDNDdDQTEyM0VFQkEyMDAyQjNE
ODYgLyogSlNFbnRyeUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0VudHJ5Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODkz
QzQ3REUxMjNFRjRBOTAwMkIzRDg2IC8qIEpTRGlyZWN0b3J5RW50cnlDdXN0b20uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEaXJlY3RvcnlFbnRyeUN1c3RvbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5M0M0N0YwMTI0OEJEMzkwMDJCM0Q4
NiAvKiBEaXJlY3RvcnlFbnRyeVN5bmMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gRGlyZWN0b3J5RW50cnlTeW5jLmNwcDsgcGF0aCA9IGZpbGVhcGkvRGlyZWN0b3J5
RW50cnlTeW5jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODkzQzQ3RjExMjQ4
QkQzOTAwMkIzRDg2IC8qIERpcmVjdG9yeUVudHJ5U3luYy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBEaXJlY3RvcnlFbnRyeVN5bmMuaDsgcGF0aCA9IGZpbGVhcGkvRGlyZWN0
b3J5RW50cnlTeW5jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5M0M0N0YyMTI0
OEJEMzkwMDJCM0Q4NiAvKiBEaXJlY3RvcnlSZWFkZXJTeW5jLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERpcmVjdG9yeVJlYWRlclN5bmMuY3BwOyBwYXRoID0gZmls
ZWFwaS9EaXJlY3RvcnlSZWFkZXJTeW5jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJODkzQzQ3RjMxMjQ4QkQzOTAwMkIzRDg2IC8qIERpcmVjdG9yeVJlYWRlclN5bmMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGlyZWN0b3J5UmVhZGVyU3luYy5oOyBwYXRo
ID0gZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJTeW5jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTg5M0M0N0YwMTI0OEJEMzkwMDJCM0Q4NiAvKiBEaXJlY3RvcnlFbnRyeVN5bmMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRGlyZWN0b3J5RW50cnlTeW5j
LmNwcDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5bmMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4OTNDNDdGMTEyNDhCRDM5MDAyQjNEODYgLyog
RGlyZWN0b3J5RW50cnlTeW5jLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERp
cmVjdG9yeUVudHJ5U3luYy5oOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVu
dHJ5U3luYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4OTNDNDdGMjEyNDhCRDM5
MDAyQjNEODYgLyogRGlyZWN0b3J5UmVhZGVyU3luYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBEaXJlY3RvcnlSZWFkZXJTeW5jLmNwcDsgcGF0aCA9IE1vZHVsZXMv
ZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJODkzQzQ3RjMxMjQ4QkQzOTAwMkIzRDg2IC8qIERpcmVjdG9yeVJlYWRlclN5bmMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGlyZWN0b3J5UmVhZGVyU3luYy5o
OyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODkzQzQ3RjQxMjQ4QkQzOTAwMkIzRDg2IC8qIERPTUZp
bGVTeXN0ZW1CYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERP
TUZpbGVTeXN0ZW1CYXNlLmNwcDsgcGF0aCA9IGZpbGVhcGkvRE9NRmlsZVN5c3RlbUJhc2UuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4OTNDNDdGNTEyNDhCRDM5MDAyQjNEODYg
LyogRE9NRmlsZVN5c3RlbUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
RE9NRmlsZVN5c3RlbUJhc2UuaDsgcGF0aCA9IGZpbGVhcGkvRE9NRmlsZVN5c3RlbUJhc2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODkzQzQ3RjYxMjQ4QkQzOTAwMkIzRDg2IC8q
IERPTUZpbGVTeXN0ZW1TeW5jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IERPTUZpbGVTeXN0ZW1TeW5jLmNwcDsgcGF0aCA9IGZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5
bmMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTgxNCwxMCArOTgxNCwxMCBA
QAogCQk4OTNDNDgzMDEyNDk1NDcyMDAyQjNEODYgLyogSlNGaWxlRW50cnlTeW5jLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmlsZUVudHJ5U3luYy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5M0M0ODMxMTI0OTU0NzIwMDJCM0Q4NiAvKiBK
U0ZpbGVFbnRyeVN5bmMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNGaWxl
RW50cnlTeW5jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5M0M0ODUyMTI0OTlC
MDYwMDJCM0Q4NiAvKiBKU0VudHJ5U3luY0N1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0VudHJ5U3luY0N1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTg5ODc4NTM5MTIyQ0EwNjQwMDNBQUJEQSAvKiBEaXJlY3RvcnlFbnRyeS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEaXJlY3RvcnlFbnRyeS5j
cHA7IHBhdGggPSBmaWxlYXBpL0RpcmVjdG9yeUVudHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJODk4Nzg1M0ExMjJDQTA2NDAwM0FBQkRBIC8qIERpcmVjdG9yeUVudHJ5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERpcmVjdG9yeUVudHJ5Lmg7IHBhdGgg
PSBmaWxlYXBpL0RpcmVjdG9yeUVudHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTg5ODc4NTNCMTIyQ0EwNjQwMDNBQUJEQSAvKiBEaXJlY3RvcnlSZWFkZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRGlyZWN0b3J5UmVhZGVyLmNwcDsgcGF0aCA9
IGZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJODk4Nzg1M0MxMjJDQTA2NDAwM0FBQkRBIC8qIERpcmVjdG9yeVJlYWRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEaXJlY3RvcnlSZWFkZXIuaDsgcGF0aCA9IGZpbGVh
cGkvRGlyZWN0b3J5UmVhZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg5ODc4
NTM5MTIyQ0EwNjQwMDNBQUJEQSAvKiBEaXJlY3RvcnlFbnRyeS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEaXJlY3RvcnlFbnRyeS5jcHA7IHBhdGggPSBNb2R1bGVz
L2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4OTg3ODUzQTEyMkNBMDY0MDAzQUFCREEgLyogRGlyZWN0b3J5RW50cnkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGlyZWN0b3J5RW50cnkuaDsgcGF0aCA9IE1vZHVs
ZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4OTg3ODUzQjEyMkNBMDY0MDAzQUFCREEgLyogRGlyZWN0b3J5UmVhZGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERpcmVjdG9yeVJlYWRlci5jcHA7IHBh
dGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJODk4Nzg1M0MxMjJDQTA2NDAwM0FBQkRBIC8qIERpcmVjdG9yeVJl
YWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEaXJlY3RvcnlSZWFkZXIu
aDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODk4Nzg1M0QxMjJDQTA2NDAwM0FBQkRBIC8qIERPTUZpbGVQ
YXRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERPTUZpbGVQYXRo
LmNwcDsgcGF0aCA9IGZpbGVhcGkvRE9NRmlsZVBhdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4OTg3ODUzRTEyMkNBMDY0MDAzQUFCREEgLyogRE9NRmlsZVBhdGguaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRE9NRmlsZVBhdGguaDsgcGF0aCA9IGZpbGVh
cGkvRE9NRmlsZVBhdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODk4Nzg1M0Yx
MjJDQTA2NDAwM0FBQkRBIC8qIERPTUZpbGVTeXN0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gRE9NRmlsZVN5c3RlbS5jcHA7IHBhdGggPSBmaWxlYXBpL0RPTUZp
bGVTeXN0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI4OTcsMTAgKzEy
ODk3LDEwIEBACiAJCUUxQTY0M0YxMEVDMDk3MjUwMDc3OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250
cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlclNjcmlwdENv
bnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBNjQzRkMwRUMwOTdB
MDAwNzc5NjY4IC8qIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQUIxRUE4MTRFOUUyN0QwMDQ0OUUxMyAvKiBGaWxlTGlz
dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRmlsZUxpc3QuaWRsOyBwYXRoID0gZmlsZWFw
aS9GaWxlTGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxQUIxRUFCMTRF
OUUyRUYwMDQ0OUUxMyAvKiBEaXJlY3RvcnlFbnRyeS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRGlyZWN0b3J5RW50cnku
aWRsOyBwYXRoID0gZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUUxQUIxRUFDMTRFOUUyRjgwMDQ0OUUxMyAvKiBEaXJlY3RvcnlFbnRyeVN5
bmMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgbmFtZSA9IERpcmVjdG9yeUVudHJ5U3luYy5pZGw7IHBhdGggPSBmaWxlYXBpL0RpcmVj
dG9yeUVudHJ5U3luYy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxQUIxRUFE
MTRFOUUzMDUwMDQ0OUUxMyAvKiBEaXJlY3RvcnlSZWFkZXIuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IERpcmVjdG9yeVJl
YWRlci5pZGw7IHBhdGggPSBmaWxlYXBpL0RpcmVjdG9yeVJlYWRlci5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUUxQUIxRUFFMTRFOUUzMEIwMDQ0OUUxMyAvKiBEaXJlY3RvcnlS
ZWFkZXJTeW5jLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IG5hbWUgPSBEaXJlY3RvcnlSZWFkZXJTeW5jLmlkbDsgcGF0aCA9IGZpbGVh
cGkvRGlyZWN0b3J5UmVhZGVyU3luYy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUUxQUIxRUFCMTRFOUUyRUYwMDQ0OUUxMyAvKiBEaXJlY3RvcnlFbnRyeS5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRGly
ZWN0b3J5RW50cnkuaWRsOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTFBQjFFQUMxNEU5RTJGODAwNDQ5
RTEzIC8qIERpcmVjdG9yeUVudHJ5U3luYy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRGlyZWN0b3J5RW50cnlTeW5jLmlk
bDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5bmMuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMUFCMUVBRDE0RTlFMzA1MDA0NDlFMTMgLyogRGly
ZWN0b3J5UmVhZGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBEaXJlY3RvcnlSZWFkZXIuaWRsOyBwYXRoID0gTW9kdWxl
cy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUUxQUIxRUFFMTRFOUUzMEIwMDQ0OUUxMyAvKiBEaXJlY3RvcnlSZWFkZXJTeW5jLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IG5hbWUgPSBEaXJlY3RvcnlSZWFkZXJTeW5jLmlkbDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3Rl
bS9EaXJlY3RvcnlSZWFkZXJTeW5jLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTFBQjFFQUYxNEU5RTMxNzAwNDQ5RTEzIC8qIERPTUZpbGVTeXN0ZW1TeW5jLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBE
T01GaWxlU3lzdGVtU3luYy5pZGw7IHBhdGggPSBmaWxlYXBpL0RPTUZpbGVTeXN0ZW1TeW5jLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBQjFFQjAxNEU5RTMyMzAwNDQ5RTEz
IC8qIEVudHJpZXNDYWxsYmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRW50cmllc0NhbGxiYWNrLmlkbDsgcGF0aCA9
IGZpbGVhcGkvRW50cmllc0NhbGxiYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTFBQjFFQjExNEU5RTMyQTAwNDQ5RTEzIC8qIEVudHJ5LmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBFbnRyeS5pZGw7
IHBhdGggPSBmaWxlYXBpL0VudHJ5LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5RW50cnkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5RW50cnkuY3BwCShyZXZpc2lvbiAx
MTA0NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw3NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IkRpcmVjdG9yeUVudHJ5LmgiCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRl
ICJEaXJlY3RvcnlSZWFkZXIuaCIKLSNpbmNsdWRlICJFbnRyeUNhbGxiYWNrLmgiCi0jaW5jbHVk
ZSAiRXJyb3JDYWxsYmFjay5oIgotI2luY2x1ZGUgIkZpbGVFcnJvci5oIgotI2luY2x1ZGUgIlZv
aWRDYWxsYmFjay5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLURpcmVjdG9yeUVudHJ5OjpE
aXJlY3RvcnlFbnRyeShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBmaWxlU3lzdGVtLCBj
b25zdCBTdHJpbmcmIGZ1bGxQYXRoKQotICAgIDogRW50cnkoZmlsZVN5c3RlbSwgZnVsbFBhdGgp
Ci17Ci19Ci0KLVBhc3NSZWZQdHI8RGlyZWN0b3J5UmVhZGVyPiBEaXJlY3RvcnlFbnRyeTo6Y3Jl
YXRlUmVhZGVyKCkKLXsKLSAgICByZXR1cm4gRGlyZWN0b3J5UmVhZGVyOjpjcmVhdGUobV9maWxl
U3lzdGVtLCBtX2Z1bGxQYXRoKTsKLX0KLQotdm9pZCBEaXJlY3RvcnlFbnRyeTo6Z2V0RmlsZShj
b25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8V2ViS2l0RmxhZ3M+IGZsYWdzLCBQYXNzUmVm
UHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxi
YWNrPiBlcnJvckNhbGxiYWNrUmVmKQotewotICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJv
ckNhbGxiYWNrKGVycm9yQ2FsbGJhY2tSZWYpOwotICAgIGlmICghbV9maWxlU3lzdGVtLT5nZXRG
aWxlKHRoaXMsIHBhdGgsIGZsYWdzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKQot
ICAgICAgICBmaWxlc3lzdGVtKCktPnNjaGVkdWxlQ2FsbGJhY2soZXJyb3JDYWxsYmFjay5yZWxl
YXNlKCksIEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6SU5WQUxJRF9NT0RJRklDQVRJT05f
RVJSKSk7Ci19Ci0KLXZvaWQgRGlyZWN0b3J5RW50cnk6OmdldERpcmVjdG9yeShjb25zdCBTdHJp
bmcmIHBhdGgsIFBhc3NSZWZQdHI8V2ViS2l0RmxhZ3M+IGZsYWdzLCBQYXNzUmVmUHRyPEVudHJ5
Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJv
ckNhbGxiYWNrUmVmKQotewotICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNr
KGVycm9yQ2FsbGJhY2tSZWYpOwotICAgIGlmICghbV9maWxlU3lzdGVtLT5nZXREaXJlY3Rvcnko
dGhpcywgcGF0aCwgZmxhZ3MsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpCi0gICAg
ICAgIGZpbGVzeXN0ZW0oKS0+c2NoZWR1bGVDYWxsYmFjayhlcnJvckNhbGxiYWNrLnJlbGVhc2Uo
KSwgRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlIp
KTsKLX0KLQotdm9pZCBEaXJlY3RvcnlFbnRyeTo6cmVtb3ZlUmVjdXJzaXZlbHkoUGFzc1JlZlB0
cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNr
PiBlcnJvckNhbGxiYWNrUmVmKSBjb25zdAotewotICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBl
cnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2tSZWYpOwotICAgIGlmICghbV9maWxlU3lzdGVtLT5y
ZW1vdmVSZWN1cnNpdmVseSh0aGlzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKQot
ICAgICAgICBmaWxlc3lzdGVtKCktPnNjaGVkdWxlQ2FsbGJhY2soZXJyb3JDYWxsYmFjay5yZWxl
YXNlKCksIEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6SU5WQUxJRF9NT0RJRklDQVRJT05f
RVJSKSk7Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5RW50cnkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5LmgJKHJldmlzaW9uIDExMDQ2NSkKKysr
IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5RW50cnkuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0g
KiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0g
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2lmbmRlZiBEaXJlY3RvcnlFbnRyeV9oCi0jZGVmaW5lIERpcmVjdG9y
eUVudHJ5X2gKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkVudHJ5Lmgi
Ci0jaW5jbHVkZSAiV2ViS2l0RmxhZ3MuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgot
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBET01GaWxlU3lzdGVtQmFzZTsKLWNsYXNz
IERpcmVjdG9yeVJlYWRlcjsKLWNsYXNzIEVudHJ5Q2FsbGJhY2s7Ci1jbGFzcyBFcnJvckNhbGxi
YWNrOwotY2xhc3MgVm9pZENhbGxiYWNrOwotCi1jbGFzcyBEaXJlY3RvcnlFbnRyeSA6IHB1Ymxp
YyBFbnRyeSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnk+
IGNyZWF0ZShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBmaWxlU3lzdGVtLCBjb25zdCBT
dHJpbmcmIGZ1bGxQYXRoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEaXJl
Y3RvcnlFbnRyeShmaWxlU3lzdGVtLCBmdWxsUGF0aCkpOwotICAgIH0KLSAgICB2aXJ0dWFsIGJv
b2wgaXNEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICBQYXNzUmVmUHRy
PERpcmVjdG9yeVJlYWRlcj4gY3JlYXRlUmVhZGVyKCk7Ci0gICAgdm9pZCBnZXRGaWxlKGNvbnN0
IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxXZWJLaXRGbGFncz4gPSAwLCBQYXNzUmVmUHRyPEVu
dHJ5Q2FsbGJhY2s+ID0gMCwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiA9IDApOwotICAgIHZv
aWQgZ2V0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxXZWJLaXRGbGFn
cz4gPSAwLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+ID0gMCwgUGFzc1JlZlB0cjxFcnJvckNh
bGxiYWNrPiA9IDApOwotICAgIHZvaWQgcmVtb3ZlUmVjdXJzaXZlbHkoUGFzc1JlZlB0cjxWb2lk
Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4g
PSAwKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBEaXJlY3RvcnlFbnRyeShQYXNzUmVmUHRyPERP
TUZpbGVTeXN0ZW1CYXNlPiwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCk7Ci19OwotCi19IC8vIG5h
bWVzcGFjZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gRGly
ZWN0b3J5RW50cnlfaApJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlFbnRy
eS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlFbnRy
eS5pZGwJKHJldmlzaW9uIDExMDQ2NSkKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0
b3J5RW50cnkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0
aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1tb2R1bGUgc3RvcmFn
ZSB7Ci0gICAgaW50ZXJmYWNlIFsKLSAgICAgICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0sCi0g
ICAgICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCwKLSAgICAgICAgSlNHZW5lcmF0ZVRvSlNP
YmplY3QsCi0gICAgICAgIEpTTm9TdGF0aWNUYWJsZXMKLSAgICBdIERpcmVjdG9yeUVudHJ5IDog
RW50cnkgewotICAgICAgICBEaXJlY3RvcnlSZWFkZXIgY3JlYXRlUmVhZGVyKCk7Ci0gICAgICAg
IFtDdXN0b21dIHZvaWQgZ2V0RmlsZShpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRV
bmRlZmluZWRBcz1OdWxsU3RyaW5nXSBET01TdHJpbmcgcGF0aCwgaW4gW09wdGlvbmFsXSBXZWJL
aXRGbGFncyBmbGFncywgaW4gW09wdGlvbmFsLCBDYWxsYmFja10gRW50cnlDYWxsYmFjayBzdWNj
ZXNzQ2FsbGJhY2ssIGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVycm9yQ2FsbGJhY2sgZXJyb3JD
YWxsYmFjayk7Ci0gICAgICAgIFtDdXN0b21dIHZvaWQgZ2V0RGlyZWN0b3J5KGluIFtUcmVhdE51
bGxBcz1OdWxsU3RyaW5nLCBUcmVhdFVuZGVmaW5lZEFzPU51bGxTdHJpbmddIERPTVN0cmluZyBw
YXRoLCBpbiBbT3B0aW9uYWxdIFdlYktpdEZsYWdzIGZsYWdzLCBpbiBbT3B0aW9uYWwsIENhbGxi
YWNrXSBFbnRyeUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4gW09wdGlvbmFsLCBDYWxsYmFj
a10gRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKTsKLSAgICAgICAgdm9pZCByZW1vdmVSZWN1
cnNpdmVseShpbiBbQ2FsbGJhY2tdIFZvaWRDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIGluIFtP
cHRpb25hbCwgQ2FsbGJhY2tdIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7Ci0gICAgfTsK
LX0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5RW50cnlTeW5jLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5U3luYy5j
cHAJKHJldmlzaW9uIDExMDQ2NSkKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5
RW50cnlTeW5jLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw4OSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1
dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkRpcmVjdG9yeUVudHJ5U3luYy5oIgotCi0jaWYgRU5BQkxFKEZJ
TEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiRGlyZWN0b3J5UmVhZGVyU3luYy5oIgotI2luY2x1ZGUg
IkVudHJ5U3luYy5oIgotI2luY2x1ZGUgIkZpbGVFbnRyeVN5bmMuaCIKLSNpbmNsdWRlICJGaWxl
RXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiU3luY0NhbGxiYWNrSGVscGVyLmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotRGlyZWN0b3J5RW50cnlTeW5jOjpEaXJlY3RvcnlFbnRyeVN5bmMoUGFz
c1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxs
UGF0aCkKLSAgICA6IEVudHJ5U3luYyhmaWxlU3lzdGVtLCBmdWxsUGF0aCkKLXsKLX0KLQotUGFz
c1JlZlB0cjxEaXJlY3RvcnlSZWFkZXJTeW5jPiBEaXJlY3RvcnlFbnRyeVN5bmM6OmNyZWF0ZVJl
YWRlcihFeGNlcHRpb25Db2RlJikKLXsKLSAgICByZXR1cm4gRGlyZWN0b3J5UmVhZGVyU3luYzo6
Y3JlYXRlKG1fZmlsZVN5c3RlbSwgbV9mdWxsUGF0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8RmlsZUVu
dHJ5U3luYz4gRGlyZWN0b3J5RW50cnlTeW5jOjpnZXRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwg
UGFzc1JlZlB0cjxXZWJLaXRGbGFncz4gZmxhZ3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAg
IGVjID0gMDsKLSAgICBFbnRyeVN5bmNDYWxsYmFja0hlbHBlciBoZWxwZXIobV9maWxlU3lzdGVt
LT5hc3luY0ZpbGVTeXN0ZW0oKSk7Ci0gICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPmdldEZpbGUodGhp
cywgcGF0aCwgZmxhZ3MsIGhlbHBlci5zdWNjZXNzQ2FsbGJhY2soKSwgaGVscGVyLmVycm9yQ2Fs
bGJhY2soKSkpIHsKLSAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpJTlZBTElEX01PRElGSUNB
VElPTl9FUlI7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gc3RhdGljX3Bv
aW50ZXJfY2FzdDxGaWxlRW50cnlTeW5jPihoZWxwZXIuZ2V0UmVzdWx0KGVjKSk7Ci19Ci0KLVBh
c3NSZWZQdHI8RGlyZWN0b3J5RW50cnlTeW5jPiBEaXJlY3RvcnlFbnRyeVN5bmM6OmdldERpcmVj
dG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8V2ViS2l0RmxhZ3M+IGZsYWdzLCBF
eGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBlYyA9IDA7Ci0gICAgRW50cnlTeW5jQ2FsbGJhY2tI
ZWxwZXIgaGVscGVyKG1fZmlsZVN5c3RlbS0+YXN5bmNGaWxlU3lzdGVtKCkpOwotICAgIGlmICgh
bV9maWxlU3lzdGVtLT5nZXREaXJlY3RvcnkodGhpcywgcGF0aCwgZmxhZ3MsIGhlbHBlci5zdWNj
ZXNzQ2FsbGJhY2soKSwgaGVscGVyLmVycm9yQ2FsbGJhY2soKSkpIHsKLSAgICAgICAgZWMgPSBG
aWxlRXhjZXB0aW9uOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlI7Ci0gICAgICAgIHJldHVybiAw
OwotICAgIH0KLSAgICByZXR1cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxEaXJlY3RvcnlFbnRyeVN5
bmM+KGhlbHBlci5nZXRSZXN1bHQoZWMpKTsKLX0KLQotdm9pZCBEaXJlY3RvcnlFbnRyeVN5bmM6
OnJlbW92ZVJlY3Vyc2l2ZWx5KEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGVjID0gMDsKLSAg
ICBWb2lkU3luY0NhbGxiYWNrSGVscGVyIGhlbHBlcihtX2ZpbGVTeXN0ZW0tPmFzeW5jRmlsZVN5
c3RlbSgpKTsKLSAgICBpZiAoIW1fZmlsZVN5c3RlbS0+cmVtb3ZlUmVjdXJzaXZlbHkodGhpcywg
aGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIuZXJyb3JDYWxsYmFjaygpKSkgewotICAg
ICAgICBlYyA9IEZpbGVFeGNlcHRpb246OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBoZWxwZXIuZ2V0UmVzdWx0KGVjKTsKLX0KLQotfQotCi0j
ZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9EaXJlY3RvcnlFbnRyeVN5bmMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0RpcmVjdG9yeUVudHJ5U3luYy5oCShyZXZpc2lvbiAxMTA0NjUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5U3luYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY5
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoK
LSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaWZuZGVmIERpcmVjdG9yeUVudHJ5U3luY19oCi0jZGVmaW5lIERpcmVjdG9yeUVu
dHJ5U3luY19oCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJFbnRyeVN5
bmMuaCIKLSNpbmNsdWRlICJXZWJLaXRGbGFncy5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5n
LmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERpcmVjdG9yeVJlYWRlclN5bmM7
Ci1jbGFzcyBGaWxlRW50cnlTeW5jOwotCi1jbGFzcyBEaXJlY3RvcnlFbnRyeVN5bmMgOiBwdWJs
aWMgRW50cnlTeW5jIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEaXJlY3RvcnlF
bnRyeVN5bmM+IGNyZWF0ZShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBmaWxlU3lzdGVt
LCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBEaXJlY3RvcnlFbnRyeVN5bmMoZmlsZVN5c3RlbSwgZnVsbFBhdGgpKTsKLSAgICB9Ci0g
ICAgdmlydHVhbCBib29sIGlzRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotCi0g
ICAgUGFzc1JlZlB0cjxEaXJlY3RvcnlSZWFkZXJTeW5jPiBjcmVhdGVSZWFkZXIoRXhjZXB0aW9u
Q29kZSYpOwotICAgIFBhc3NSZWZQdHI8RmlsZUVudHJ5U3luYz4gZ2V0RmlsZShjb25zdCBTdHJp
bmcmIHBhdGgsIFBhc3NSZWZQdHI8V2ViS2l0RmxhZ3M+LCBFeGNlcHRpb25Db2RlJik7Ci0gICAg
UGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeVN5bmM+IGdldERpcmVjdG9yeShjb25zdCBTdHJpbmcm
IHBhdGgsIFBhc3NSZWZQdHI8V2ViS2l0RmxhZ3M+LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9p
ZCByZW1vdmVSZWN1cnNpdmVseShFeGNlcHRpb25Db2RlJik7Ci0KLXByaXZhdGU6Ci0gICAgZnJp
ZW5kIGNsYXNzIEVudHJ5U3luYzsKLSAgICBEaXJlY3RvcnlFbnRyeVN5bmMoUGFzc1JlZlB0cjxE
T01GaWxlU3lzdGVtQmFzZT4sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpOwotfTsKLQotfQotCi0j
ZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gRGlyZWN0b3J5RW50cnlT
eW5jX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5RW50cnlTeW5jLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5U3lu
Yy5pZGwJKHJldmlzaW9uIDExMDQ2NSkKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0
b3J5RW50cnlTeW5jLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw0MyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3Ry
aWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotbW9kdWxlIHN0
b3JhZ2UgewotICAgIGludGVyZmFjZSBbCi0gICAgICAgIENvbmRpdGlvbmFsPUZJTEVfU1lTVEVN
LAotICAgICAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCi0gICAgICAgIEpTR2VuZXJhdGVU
b0pTT2JqZWN0LAotICAgICAgICBKU05vU3RhdGljVGFibGVzCi0gICAgXSBEaXJlY3RvcnlFbnRy
eVN5bmMgOiBFbnRyeVN5bmMgewotICAgICAgICBEaXJlY3RvcnlSZWFkZXJTeW5jIGNyZWF0ZVJl
YWRlcigpIHJhaXNlcyAoRmlsZUV4Y2VwdGlvbik7Ci0gICAgICAgIFtDdXN0b21dIEZpbGVFbnRy
eVN5bmMgZ2V0RmlsZShpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRB
cz1OdWxsU3RyaW5nXSBET01TdHJpbmcgcGF0aCwgaW4gV2ViS2l0RmxhZ3MgZmxhZ3MpIHJhaXNl
cyAoRmlsZUV4Y2VwdGlvbik7Ci0gICAgICAgIFtDdXN0b21dIERpcmVjdG9yeUVudHJ5U3luYyBn
ZXREaXJlY3RvcnkoaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5kZWZpbmVkQXM9
TnVsbFN0cmluZ10gRE9NU3RyaW5nIHBhdGgsIGluIFdlYktpdEZsYWdzIGZsYWdzKSByYWlzZXMg
KEZpbGVFeGNlcHRpb24pOwotICAgICAgICB2b2lkIHJlbW92ZVJlY3Vyc2l2ZWx5KCkgcmFpc2Vz
IChGaWxlRXhjZXB0aW9uKTsKLSAgICB9OwotfQpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9EaXJlY3RvcnlSZWFkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRGlyZWN0b3J5UmVhZGVyLmNwcAkocmV2aXNpb24gMTEwNDY1KQorKysgU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDU5ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAq
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRGlyZWN0b3J5UmVhZGVyLmgiCi0K
LSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJFbnRyaWVzQ2FsbGJhY2suaCIK
LSNpbmNsdWRlICJFbnRyeUFycmF5LmgiCi0jaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgotI2lu
Y2x1ZGUgIkZpbGVFcnJvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLURpcmVjdG9yeVJl
YWRlcjo6RGlyZWN0b3J5UmVhZGVyKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZpbGVT
eXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCi0gICAgOiBEaXJlY3RvcnlSZWFkZXJCYXNl
KGZpbGVTeXN0ZW0sIGZ1bGxQYXRoKQotewotfQotCi12b2lkIERpcmVjdG9yeVJlYWRlcjo6cmVh
ZEVudHJpZXMoUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+IGVudHJpZXNDYWxsYmFjaywgUGFz
c1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQotewotICAgIGlmICghbV9oYXNN
b3JlRW50cmllcykgewotICAgICAgICBmaWxlc3lzdGVtKCktPnNjaGVkdWxlQ2FsbGJhY2soZW50
cmllc0NhbGxiYWNrLCBFbnRyeUFycmF5OjpjcmVhdGUoKSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgZmlsZXN5c3RlbSgpLT5yZWFkRGlyZWN0b3J5KHRoaXMsIG1fZnVsbFBhdGgsIGVu
dHJpZXNDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJM
RShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5UmVh
ZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFk
ZXIuaAkocmV2aXNpb24gMTEwNDY1KQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3Rv
cnlSZWFkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2NyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlv
bi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBEaXJlY3Rv
cnlSZWFkZXJfaAotI2RlZmluZSBEaXJlY3RvcnlSZWFkZXJfaAotCi0jaWYgRU5BQkxFKEZJTEVf
U1lTVEVNKQotCi0jaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIkRpcmVjdG9y
eVJlYWRlckJhc2UuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBFbnRyaWVzQ2FsbGJhY2s7Ci1jbGFzcyBFbnRyaWVzQ2FsbGJh
Y2tzOwotY2xhc3MgRXJyb3JDYWxsYmFjazsKLQotY2xhc3MgRGlyZWN0b3J5UmVhZGVyIDogcHVi
bGljIERpcmVjdG9yeVJlYWRlckJhc2UgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PERpcmVjdG9yeVJlYWRlcj4gY3JlYXRlKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZp
bGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCi0gICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IERpcmVjdG9yeVJlYWRlcihmaWxlU3lzdGVtLCBmdWxsUGF0aCkpOwotICAg
IH0KLQotICAgIHZvaWQgcmVhZEVudHJpZXMoUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+LCBQ
YXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+ID0gMCk7Ci0KLSAgICBET01GaWxlU3lzdGVtKiBmaWxl
c3lzdGVtKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRmlsZVN5c3RlbSo+KG1fZmls
ZVN5c3RlbS5nZXQoKSk7IH0KLQotcHJpdmF0ZToKLSAgICBEaXJlY3RvcnlSZWFkZXIoUGFzc1Jl
ZlB0cjxET01GaWxlU3lzdGVtQmFzZT4sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpOwotfTsKLQot
fQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gRGlyZWN0b3J5
UmVhZGVyX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlci5p
ZGwJKHJldmlzaW9uIDExMDQ2NSkKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5
UmVhZGVyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlv
bi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotbW9kdWxlIHN0b3JhZ2Ug
ewotICAgIGludGVyZmFjZSBbCi0gICAgICAgIENvbmRpdGlvbmFsPUZJTEVfU1lTVEVNLAotICAg
ICAgICBKU05vU3RhdGljVGFibGVzCi0gICAgXSBEaXJlY3RvcnlSZWFkZXIgewotICAgICAgICB2
b2lkIHJlYWRFbnRyaWVzKGluIFtDYWxsYmFja10gRW50cmllc0NhbGxiYWNrIHN1Y2Nlc3NDYWxs
YmFjaywgaW4gW09wdGlvbmFsLCBDYWxsYmFja10gRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNr
KTsKLSAgICB9OwotfQpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFk
ZXJCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlS
ZWFkZXJCYXNlLmgJKHJldmlzaW9uIDExMDQ2NSkKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
RGlyZWN0b3J5UmVhZGVyQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY4ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICog
ZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZu
ZGVmIERpcmVjdG9yeVJlYWRlckJhc2VfaAotI2RlZmluZSBEaXJlY3RvcnlSZWFkZXJCYXNlX2gK
LQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW1CYXNl
LmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotY2xhc3MgRGlyZWN0b3J5UmVhZGVyQmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPERpcmVjdG9y
eVJlYWRlckJhc2U+IHsKLXB1YmxpYzoKLSAgICBET01GaWxlU3lzdGVtQmFzZSogZmlsZXN5c3Rl
bSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZVN5c3RlbS5nZXQoKTsgfQotICAgIHZvaWQgc2V0SGFz
TW9yZUVudHJpZXMoYm9vbCBoYXNNb3JlRW50cmllcykgeyBtX2hhc01vcmVFbnRyaWVzID0gaGFz
TW9yZUVudHJpZXM7IH0KLQotcHJvdGVjdGVkOgotICAgIERpcmVjdG9yeVJlYWRlckJhc2UoUGFz
c1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxs
UGF0aCkKLSAgICAgICAgOiBtX2ZpbGVTeXN0ZW0oZmlsZVN5c3RlbSkKLSAgICAgICAgLCBtX2Z1
bGxQYXRoKGZ1bGxQYXRoKQotICAgICAgICAsIG1faGFzTW9yZUVudHJpZXModHJ1ZSkKLSAgICB7
Ci0gICAgfQotCi0gICAgUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBtX2ZpbGVTeXN0ZW07Ci0K
LSAgICAvLyBUaGlzIGlzIGEgdmlydHVhbCBwYXRoLgotICAgIFN0cmluZyBtX2Z1bGxQYXRoOwot
Ci0gICAgYm9vbCBtX2hhc01vcmVFbnRyaWVzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gRGlyZWN0b3J5
UmVhZGVyQmFzZV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRl
clN5bmMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5
UmVhZGVyU3luYy5jcHAJKHJldmlzaW9uIDExMDQ2NSkKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRGlyZWN0b3J5UmVhZGVyU3luYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNjggKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJEaXJlY3RvcnlSZWFkZXJTeW5jLmgiCi0K
LSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeS5oIgot
I2luY2x1ZGUgIkRpcmVjdG9yeUVudHJ5U3luYy5oIgotI2luY2x1ZGUgIkVudHJ5QXJyYXlTeW5j
LmgiCi0jaW5jbHVkZSAiRW50cnlTeW5jLmgiCi0jaW5jbHVkZSAiRmlsZUVudHJ5U3luYy5oIgot
I2luY2x1ZGUgIkZpbGVFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJTeW5jQ2FsbGJhY2tIZWxwZXIu
aCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1EaXJlY3RvcnlSZWFkZXJTeW5jOjpEaXJlY3Rv
cnlSZWFkZXJTeW5jKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0sIGNv
bnN0IFN0cmluZyYgZnVsbFBhdGgpCi0gICAgOiBEaXJlY3RvcnlSZWFkZXJCYXNlKGZpbGVTeXN0
ZW0sIGZ1bGxQYXRoKQotewotfQotCi1QYXNzUmVmUHRyPEVudHJ5QXJyYXlTeW5jPiBEaXJlY3Rv
cnlSZWFkZXJTeW5jOjpyZWFkRW50cmllcyhFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBlYyA9
IDA7Ci0gICAgaWYgKCFtX2hhc01vcmVFbnRyaWVzKQotICAgICAgICByZXR1cm4gRW50cnlBcnJh
eVN5bmM6OmNyZWF0ZSgpOwotCi0gICAgRW50cmllc1N5bmNDYWxsYmFja0hlbHBlciBoZWxwZXIo
bV9maWxlU3lzdGVtLT5hc3luY0ZpbGVTeXN0ZW0oKSk7Ci0gICAgaWYgKCFtX2ZpbGVTeXN0ZW0t
PnJlYWREaXJlY3RvcnkodGhpcywgbV9mdWxsUGF0aCwgaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygp
LCBoZWxwZXIuZXJyb3JDYWxsYmFjaygpKSkgewotICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246
OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsKLSAgICAgICAgc2V0SGFzTW9yZUVudHJpZXMoZmFs
c2UpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIGhlbHBlci5nZXRSZXN1
bHQoZWMpOwotfQotCi19IC8vIG5hbWVzcGFjZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lT
VEVNKQpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJTeW5jLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJTeW5j
LmgJKHJldmlzaW9uIDExMDQ2NSkKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5
UmVhZGVyU3luYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0
aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIERpcmVj
dG9yeVJlYWRlclN5bmNfaAotI2RlZmluZSBEaXJlY3RvcnlSZWFkZXJTeW5jX2gKLQotI2lmIEVO
QUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkRpcmVjdG9yeVJlYWRlckJhc2UuaCIKLSNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0j
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFz
cyBFbnRyeUFycmF5U3luYzsKLQotdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKLQotY2xhc3Mg
RGlyZWN0b3J5UmVhZGVyU3luYyA6IHB1YmxpYyBEaXJlY3RvcnlSZWFkZXJCYXNlIHsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEaXJlY3RvcnlSZWFkZXJTeW5jPiBjcmVhdGUoUGFz
c1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxs
UGF0aCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGlyZWN0b3J5UmVhZGVy
U3luYyhmaWxlU3lzdGVtLCBmdWxsUGF0aCkpOwotICAgIH0KLQotICAgIFBhc3NSZWZQdHI8RW50
cnlBcnJheVN5bmM+IHJlYWRFbnRyaWVzKEV4Y2VwdGlvbkNvZGUmKTsKLQotcHJpdmF0ZToKLSAg
ICBEaXJlY3RvcnlSZWFkZXJTeW5jKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+LCBjb25z
dCBTdHJpbmcmIGZ1bGxQYXRoKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBEaXJlY3RvcnlSZWFkZXJTeW5jX2gKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyU3luYy5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJTeW5jLmlkbAko
cmV2aXNpb24gMTEwNDY1KQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFk
ZXJTeW5jLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlv
bi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotbW9kdWxlIHN0b3JhZ2Ug
ewotICAgIGludGVyZmFjZSBbCi0gICAgICAgIENvbmRpdGlvbmFsPUZJTEVfU1lTVEVNLAotICAg
ICAgICBKU05vU3RhdGljVGFibGVzCi0gICAgXSBEaXJlY3RvcnlSZWFkZXJTeW5jIHsKLSAgICAg
ICAgRW50cnlBcnJheVN5bmMgcmVhZEVudHJpZXMoKSByYWlzZXMgKEZpbGVFeGNlcHRpb24pOwot
ICAgIH07Ci19Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131475</attachid>
            <date>2012-03-12 17:49:42 -0700</date>
            <delta_ts>2012-03-12 20:04:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80625-20120312204929.patch</filename>
            <type>text/plain</type>
            <size>104501</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMDUxMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDEyLTAzLTEyICBNYXJrIFBp
bGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBNb3ZlIERpcmVjdG9yeUVu
dHJ5IGFuZCBEaXJlY3RvcnlSZWFkZXIgdG8gbmV3IE1vZHVsZXMvZmlsZXN5c3RlbS8gZGlyZWN0
b3J5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDYy
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cywgYWxsIGV4aXN0aW5nIHRlc3RzIHBhc3MuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLnByaToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5saXN0LmFtOgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbTogQWRkZWQuCisgICAg
ICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmNwcDogQ29waWVkIGZyb20g
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5jcHAuCisgICAgICAgICogTW9k
dWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRGlyZWN0b3J5RW50cnkuaC4KKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0
ZW0vRGlyZWN0b3J5RW50cnkuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0RpcmVjdG9yeUVudHJ5LmlkbC4KKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0
b3J5RW50cnlTeW5jLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJl
Y3RvcnlFbnRyeVN5bmMuY3BwLgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3Rv
cnlFbnRyeVN5bmMuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3Rv
cnlFbnRyeVN5bmMuaC4KKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50
cnlTeW5jLmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlF
bnRyeVN5bmMuaWRsLgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFk
ZXIuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRl
ci5jcHAuCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlci5oLgorICAg
ICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXIuaWRsOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlci5pZGwuCisgICAgICAgICog
TW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlckJhc2UuaDogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJCYXNlLmguCisgICAgICAgICogTW9k
dWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuY3BwOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuY3BwLgorICAgICAgICAqIE1v
ZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyU3luYy5oLgorICAgICAgICAqIE1vZHVs
ZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmlkbDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJTeW5jLmlkbC4KKyAgICAgICAgKiBUYXJn
ZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwOgorICAgICAgICAqIFdl
YkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnByaToKKyAgICAgICAgKiBXZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5oOiBSZW1vdmVkLgorICAgICAgICAq
IGZpbGVhcGkvRGlyZWN0b3J5RW50cnkuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIGZpbGVhcGkv
RGlyZWN0b3J5RW50cnlTeW5jLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBmaWxlYXBpL0RpcmVj
dG9yeUVudHJ5U3luYy5oOiBSZW1vdmVkLgorICAgICAgICAqIGZpbGVhcGkvRGlyZWN0b3J5RW50
cnlTeW5jLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmaWxlYXBpL0RpcmVjdG9yeVJlYWRlci5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXIuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBmaWxlYXBpL0RpcmVjdG9yeVJlYWRlci5pZGw6IFJlbW92ZWQuCisgICAg
ICAgICogZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJCYXNlLmg6IFJlbW92ZWQuCisgICAgICAgICog
ZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJTeW5jLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBmaWxl
YXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBmaWxlYXBpL0Rp
cmVjdG9yeVJlYWRlclN5bmMuaWRsOiBSZW1vdmVkLgorCiAyMDEyLTAzLTEyICBTaGVyaWZmIEJv
dCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBy
b2xsaW5nIG91dCByMTEwNTAxLgpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEx
MDQ2NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNiBAQAogU0VUKFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dF
QkNPUkVfRElSfSIKKyAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9maWxlc3lzdGVtIgogICAg
ICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL2dlb2xvY2F0aW9uIgogICAgICIke1dFQkNPUkVfRElS
fS9Nb2R1bGVzL2luZGV4ZWRkYiIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy93ZWJkYXRh
YmFzZSIKQEAgLTkyLDYgKzkzLDcgQEAgU0VUKFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwog
KQogCiBTRVQoV2ViQ29yZV9JRExfSU5DTFVERVMKKyAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0KICAg
ICBNb2R1bGVzL2dlb2xvY2F0aW9uCiAgICAgTW9kdWxlcy9pbmRleGVkZGIKICAgICBNb2R1bGVz
L3dlYmRhdGFiYXNlCkBAIC0xNjM2LDEwICsxNjM4LDEwIEBAIEVORElGICgpCiAKIGlmIChFTkFC
TEVfRklMRV9TWVNURU0pCiAgICAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCi0gICAgICAg
IGZpbGVhcGkvRGlyZWN0b3J5RW50cnkuY3BwCi0gICAgICAgIGZpbGVhcGkvRGlyZWN0b3J5RW50
cnlTeW5jLmNwcAotICAgICAgICBmaWxlYXBpL0RpcmVjdG9yeVJlYWRlci5jcHAKLSAgICAgICAg
ZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJTeW5jLmNwcAorICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0
ZW0vRGlyZWN0b3J5RW50cnkuY3BwCisgICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3Rv
cnlFbnRyeVN5bmMuY3BwCisgICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFk
ZXIuY3BwCisgICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmNw
cAogICAgICAgICBmaWxlYXBpL0RPTUZpbGVQYXRoLmNwcAogICAgICAgICBmaWxlYXBpL0RPTUZp
bGVTeXN0ZW0uY3BwCiAgICAgICAgIGZpbGVhcGkvRE9NRmlsZVN5c3RlbUJhc2UuY3BwCkBAIC0x
NjYxLDEwICsxNjYzLDEwIEBAIGlmIChFTkFCTEVfRklMRV9TWVNURU0pCiAgICAgICAgIHBsYXRm
b3JtL0FzeW5jRmlsZVN5c3RlbS5jcHAKICAgICApCiAgICAgTElTVChBUFBFTkQgV2ViQ29yZV9J
RExfRklMRVMKLSAgICAgICAgZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5pZGwKLSAgICAgICAgZmls
ZWFwaS9EaXJlY3RvcnlFbnRyeVN5bmMuaWRsCi0gICAgICAgIGZpbGVhcGkvRGlyZWN0b3J5UmVh
ZGVyLmlkbAotICAgICAgICBmaWxlYXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuaWRsCisgICAgICAg
IE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5pZGwKKyAgICAgICAgTW9kdWxlcy9m
aWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5pZGwKKyAgICAgICAgTW9kdWxlcy9maWxlc3lz
dGVtL0RpcmVjdG9yeVJlYWRlci5pZGwKKyAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVj
dG9yeVJlYWRlclN5bmMuaWRsCiAgICAgICAgIGZpbGVhcGkvRE9NRmlsZVN5c3RlbS5pZGwKICAg
ICAgICAgZmlsZWFwaS9ET01GaWxlU3lzdGVtU3luYy5pZGwKICAgICAgICAgZmlsZWFwaS9ET01X
aW5kb3dGaWxlU3lzdGVtLmlkbApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShy
ZXZpc2lvbiAxMTA0NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKIFZQQVRIID0gXAogICAgICQoV2ViQ29y
ZSkgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtIFwKICAgICAkKFdlYkNvcmUp
L01vZHVsZXMvZ2VvbG9jYXRpb24gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9pbmRleGVkZGIg
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJkYXRhYmFzZSBcCkBAIC0xOTUsMTAgKzE5Niwx
MCBAQCBCSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9maWxlYXBpL0RPTUZpbGVTeXN0
ZW0uaWRsIFwKICAgICAkKFdlYkNvcmUpL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuaWRsIFwK
ICAgICAkKFdlYkNvcmUpL2ZpbGVhcGkvRE9NV2luZG93RmlsZVN5c3RlbS5pZGwgXAotICAgICQo
V2ViQ29yZSkvZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5pZGwgXAotICAgICQoV2ViQ29yZSkvZmls
ZWFwaS9EaXJlY3RvcnlFbnRyeVN5bmMuaWRsIFwKLSAgICAkKFdlYkNvcmUpL2ZpbGVhcGkvRGly
ZWN0b3J5UmVhZGVyLmlkbCBcCi0gICAgJChXZWJDb3JlKS9maWxlYXBpL0RpcmVjdG9yeVJlYWRl
clN5bmMuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlF
bnRyeS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVu
dHJ5U3luYy5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9y
eVJlYWRlci5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9y
eVJlYWRlclN5bmMuaWRsIFwKICAgICAkKFdlYkNvcmUpL2ZpbGVhcGkvRW50cmllc0NhbGxiYWNr
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9maWxlYXBpL0VudHJ5LmlkbCBcCiAgICAgJChXZWJDb3Jl
KS9maWxlYXBpL0VudHJ5QXJyYXkuaWRsIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5w
cmkJKHJldmlzaW9uIDExMDQ2NSkKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnBy
aQkod29ya2luZyBjb3B5KQpAQCAtMjE2LDEwICsyMTYsMTAgQEAgSURMX0JJTkRJTkdTICs9IFwK
ICAgICAkJFBXRC9kb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmlkbCBcCiAgICAgJCRQV0QvZG9t
L1doZWVsRXZlbnQuaWRsIFwKICAgICAkJFBXRC9maWxlYXBpL0Jsb2IuaWRsIFwKLSAgICAkJFBX
RC9maWxlYXBpL0RpcmVjdG9yeUVudHJ5LmlkbCBcCi0gICAgJCRQV0QvZmlsZWFwaS9EaXJlY3Rv
cnlFbnRyeVN5bmMuaWRsIFwKLSAgICAkJFBXRC9maWxlYXBpL0RpcmVjdG9yeVJlYWRlci5pZGwg
XAotICAgICQkUFdEL2ZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyU3luYy5pZGwgXAorICAgICQkUFdE
L01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5pZGwgXAorICAgICQkUFdEL01vZHVs
ZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5bmMuaWRsIFwKKyAgICAkJFBXRC9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmlkbCBcCisgICAgJCRQV0QvTW9kdWxlcy9maWxl
c3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuaWRsIFwKICAgICAkJFBXRC9maWxlYXBpL0RPTUZp
bGVTeXN0ZW0uaWRsIFwKICAgICAkJFBXRC9maWxlYXBpL0RPTUZpbGVTeXN0ZW1TeW5jLmlkbCBc
CiAgICAgJCRQV0QvZmlsZWFwaS9ET01XaW5kb3dGaWxlU3lzdGVtLmlkbCBcCkBAIC02OTYsNiAr
Njk2LDcgQEAgZWxzZTogZ2VuZXJhdG9yID0gSlMKIGdlbmVyYXRlQmluZGluZ3MuY29tbWFuZHMg
PSBwZXJsIC1JJCRQV0QvYmluZGluZ3Mvc2NyaXB0cyAkJGdlbmVyYXRlQmluZGluZ3Muc2NyaXB0
IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWRlZmluZXMgXCIkJHtGRUFUVVJFX0RF
RklORVNfSkFWQVNDUklQVH1cIiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1nZW5l
cmF0b3IgJCRnZW5lcmF0b3IgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0taW5jbHVk
ZSAkJFBXRC9Nb2R1bGVzL2ZpbGVzeXN0ZW0gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC0taW5jbHVkZSAkJFBXRC9Nb2R1bGVzL2dlb2xvY2F0aW9uIFwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAtLWluY2x1ZGUgJCRQV0QvTW9kdWxlcy9pbmRleGVkZGIgXAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC0taW5jbHVkZSAkJFBXRC9Nb2R1bGVzL3dlYmRhdGFiYXNlIFwK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiAxMTA0NjUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMTEsNiArMTEsNyBAQCB3ZWJj
b3JlX2NwcGZsYWdzICs9IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9p
bmNsdWRlIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dM
U0xBTkcgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlIFwKKwktSSQoc3JjZGlyKS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtIFwKQEAgLTQ3Myw3ICs0NzQsNyBAQCBGRUFUVVJFX0RFRklORVMgKz0gRU5BQkxF
X01BVEhNTD0xCiB3ZWJjb3JlX2NwcGZsYWdzICs9IC1ERU5BQkxFX01BVEhNTD0xCiBlbmRpZiAj
IEVORCBFTkFCTEVfTUFUSE1MCiAKLSMgTWF0aE1MIHRhZyBhbmQgYXR0cmlidXRlIG5hbWVzLCBh
bmQgZWxlbWVudCBmYWN0b3J5IAorIyBNYXRoTUwgdGFnIGFuZCBhdHRyaWJ1dGUgbmFtZXMsIGFu
ZCBlbGVtZW50IGZhY3RvcnkKIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvTWF0aE1MRWxlbWVudEZh
Y3RvcnkuaDogRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9NYXRoTUxFbGVtZW50RmFjdG9yeS5jcHAK
IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvTWF0aE1MTmFtZXMuaDogRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9NYXRoTUxOYW1lcy5jcHAKIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvTWF0aE1MRWxlbWVu
dEZhY3RvcnkuY3BwIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvTWF0aE1MTmFtZXMuY3BwOiAkKFdl
YkNvcmUpL2RvbS9tYWtlX25hbWVzLnBsICQoV2ViQ29yZSkvbWF0aG1sL21hdGh0YWdzLmluICQo
V2ViQ29yZSkvbWF0aG1sL21hdGhhdHRycy5pbgpAQCAtNDk1LDcgKzQ5Niw3IEBAIGVuZGlmICMg
RU5EIEVOQUJMRV9OT1RJRklDQVRJT05TCiBpZiBFTkFCTEVfU1ZHCiBGRUFUVVJFX0RFRklORVMg
Kz0gRU5BQkxFX1NWRz0xCiB3ZWJjb3JlX2NwcGZsYWdzICs9IC1ERU5BQkxFX1NWRz0xCi1XRUJD
T1JFX0NTU19QUk9QRVJUWV9OQU1FUyArPSAkKFdlYkNvcmUpL2Nzcy9TVkdDU1NQcm9wZXJ0eU5h
bWVzLmluIAorV0VCQ09SRV9DU1NfUFJPUEVSVFlfTkFNRVMgKz0gJChXZWJDb3JlKS9jc3MvU1ZH
Q1NTUHJvcGVydHlOYW1lcy5pbgogV0VCQ09SRV9DU1NfVkFMVUVfS0VZV09SRFMgKz0gJChXZWJD
b3JlKS9jc3MvU1ZHQ1NTVmFsdWVLZXl3b3Jkcy5pbgogCiAjIFNWRyBGZWF0dXJlcwpAQCAtNzc4
LDYgKzc3OSw3IEBAIERlcml2ZWRTb3VyY2VzL0FOR0xFL2dsc2xhbmdfdGFiLmNwcDogU28KIERl
cml2ZWRTb3VyY2VzL0FOR0xFL2dsc2xhbmdfdGFiLmg6IERlcml2ZWRTb3VyY2VzL0FOR0xFL2ds
c2xhbmdfdGFiLmNwcAogCiBJRExfUEFUSCA6PSBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9nZW9sb2NhdGlvbiBcCiAgICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL2luZGV4ZWRkYiBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlh
c3RyZWFtIFwKQEAgLTgyNyw3ICs4MjksNyBAQCBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTJS5o
OiAlLmlkbCAkKFNDCiAJJChBTV9WX0dFTikkKFBFUkwpIC1JJChXZWJDb3JlKS9iaW5kaW5ncy9z
Y3JpcHRzICQoV2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbCAk
KElETF9QQVRIOiU9LS1pbmNsdWRlICIlIikgLS1vdXRwdXREaXIgIiQoR0VOU09VUkNFU19XRUJD
T1JFKSIgLS1kZWZpbmVzICJMQU5HVUFHRV9KQVZBU0NSSVBUPTEgJChGRUFUVVJFX0RFRklORVMp
IiAtLWdlbmVyYXRvciBKUyAtLXN1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlICQoc3VwcGxlbWVu
dGFsX2RlcGVuZGVuY3lfZmlsZSkgJDwKIAogIyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc2Mzg4Ci0jIFdlIG5lZWQgdG8gaW50cm9kdWNlIGEgbWFudWFsIGRl
cGVuZGVuY3kgdG8gcHJldmVudCBub24tZ2VuZXJhdGVkIHNvdXJjZXMgZnJvbSAKKyMgV2UgbmVl
ZCB0byBpbnRyb2R1Y2UgYSBtYW51YWwgZGVwZW5kZW5jeSB0byBwcmV2ZW50IG5vbi1nZW5lcmF0
ZWQgc291cmNlcyBmcm9tCiAjIHRyeWluZyB0byBidWlsZCBiZWZvcmUgdGhlIGdlbmVyYXRlZCBv
bmVzLiBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlIHN1cHBsZW1lbnRhbAogIyBJREwgZ2VuZXJhdGlv
biB0YWtlcyBhIGxvbmcgdGltZS4gVGhlIHBpcGUgcmVwcmVzZW50cyBhbiBvcmRlci1vbmx5IGRl
cGVuZGVuY3ksCiAjIHdoaWNoIG1lYW5zIHRoYXQgR05VbWFrZSB3aWxsIG9ubHkgdHJ5IHRvIGJ1
aWxkIHRoZSBkZXBlbmRlbmNpZXMgZmlyc3QsIGJ1dApJbmRleDogU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCShyZXZpc2lvbiAxMTA0NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yMDM5LDE0ICsyMDM5LDE0IEBAIHdlYmNvcmVf
c291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmggXAogCVNvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvQmxvYlVSTC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxv
YlVSTC5oIFwKLQlTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5LmNwcCBcCi0J
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5oIFwKLQlTb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5U3luYy5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRGlyZWN0b3J5RW50cnlTeW5jLmggXAotCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0
b3J5UmVhZGVyLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXIu
aCBcCi0JU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJTeW5jLmNwcCBcCi0J
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJTeW5jLmggXAorCVNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5jcHAgXAorCVNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmNwcCBcCisJU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5oIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmNwcCBcCisJU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5oIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyU3luYy5jcHAgXAor
CVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmgg
XAogCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVBhdGguY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0RPTUZpbGVQYXRoLmggXAogCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9N
RmlsZVN5c3RlbS5jcHAgXApAQCAtNDg3NSwxMCArNDg3NSwxMCBAQCBkb21fYmluZGluZ19pZGxz
ICs9IFwKIAkkKFdlYkNvcmUpL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5pZGwgXAogCSQoV2ViQ29y
ZSkvZmlsZWFwaS9ET01GaWxlU3lzdGVtU3luYy5pZGwgXAogCSQoV2ViQ29yZSkvZmlsZWFwaS9E
T01XaW5kb3dGaWxlU3lzdGVtLmlkbCBcCi0JJChXZWJDb3JlKS9maWxlYXBpL0RpcmVjdG9yeUVu
dHJ5LmlkbCBcCi0JJChXZWJDb3JlKS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5U3luYy5pZGwgXAot
CSQoV2ViQ29yZSkvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXIuaWRsIFwKLQkkKFdlYkNvcmUpL2Zp
bGVhcGkvRGlyZWN0b3J5UmVhZGVyU3luYy5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9maWxl
c3lzdGVtL0RpcmVjdG9yeUVudHJ5LmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRGlyZWN0b3J5UmVhZGVyLmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RGlyZWN0b3J5UmVhZGVyU3luYy5pZGwgXAogCSQoV2ViQ29yZSkvZmlsZWFwaS9FbnRyaWVzQ2Fs
bGJhY2suaWRsIFwKIAkkKFdlYkNvcmUpL2ZpbGVhcGkvRW50cnkuaWRsIFwKIAkkKFdlYkNvcmUp
L2ZpbGVhcGkvRW50cnlBcnJheS5pZGwgXApAQCAtNTgyNiw3ICs1ODI2LDcgQEAgd2ViY29yZV9z
b3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckltYWdlQnVmZmVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmggXAotCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5o
IAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllci5oCiB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1RleHR1cmVNYXBwZXJDYWlyby5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1RleHR1cmVNYXBwZXJDYWlyby5oCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDExMDQ2NSkKKysrIFNvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTY2OSwxMCArNjY5LDEwIEBAIFNPVVJDRVMgKz0gXAog
ICAgIGZpbGVhcGkvRE9NRmlsZVN5c3RlbUJhc2UuY3BwIFwKICAgICBmaWxlYXBpL0RPTUZpbGVT
eXN0ZW1TeW5jLmNwcCBcCiAgICAgZmlsZWFwaS9ET01XaW5kb3dGaWxlU3lzdGVtLmNwcCBcCi0g
ICAgZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5jcHAgXAotICAgIGZpbGVhcGkvRGlyZWN0b3J5RW50
cnlTeW5jLmNwcCBcCi0gICAgZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXIuY3BwIFwKLSAgICBmaWxl
YXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuY3BwIFwKKyAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGly
ZWN0b3J5RW50cnkuY3BwIFwKKyAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlT
eW5jLmNwcCBcCisgICAgTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5jcHAgXAor
ICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmNwcCBcCiAgICAgZmls
ZWFwaS9FbnRyeS5jcHAgXAogICAgIGZpbGVhcGkvRW50cnlBcnJheS5jcHAgXAogICAgIGZpbGVh
cGkvRW50cnlBcnJheVN5bmMuY3BwIFwKQEAgLTMwNjAsMTEgKzMwNjAsMTEgQEAgY29udGFpbnMo
REVGSU5FUywgRU5BQkxFX0RBVEFfVFJBTlNGRVJfSQogY29udGFpbnMoREVGSU5FUywgRU5BQkxF
X0ZJTEVfU1lTVEVNPTEpIHsKICAgICBIRUFERVJTICs9IFwKICAgICAgICAgZmlsZWFwaS9Bc3lu
Y0ZpbGVXcml0ZXIuaCBcCi0gICAgICAgIGZpbGVhcGkvRGlyZWN0b3J5RW50cnkuaCBcCi0gICAg
ICAgIGZpbGVhcGkvRGlyZWN0b3J5RW50cnlTeW5jLmggXAotICAgICAgICBmaWxlYXBpL0RpcmVj
dG9yeVJlYWRlci5oIFwKLSAgICAgICAgZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJCYXNlLmggXAot
ICAgICAgICBmaWxlYXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuaCBcCisgICAgICAgIE1vZHVsZXMv
ZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5oIFwKKyAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVt
L0RpcmVjdG9yeUVudHJ5U3luYy5oIFwKKyAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVj
dG9yeVJlYWRlci5oIFwKKyAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRl
ckJhc2UuaCBcCisgICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5j
LmggXAogICAgICAgICBmaWxlYXBpL0RPTUZpbGVQYXRoLmggXAogICAgICAgICBmaWxlYXBpL0RP
TUZpbGVTeXN0ZW0uaCBcCiAgICAgICAgIGZpbGVhcGkvRE9NRmlsZVN5c3RlbUJhc2UuaCBcCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxMTA0NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTg4NiwxMCArODg2LDEwIEBACiAgICAgICAg
ICAgICAnZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5pZGwnLAogICAgICAgICAgICAgJ2RvbS9X
aGVlbEV2ZW50LmlkbCcsCiAgICAgICAgICAgICAnZmlsZWFwaS9CbG9iLmlkbCcsCi0gICAgICAg
ICAgICAnZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5pZGwnLAotICAgICAgICAgICAgJ2ZpbGVhcGkv
RGlyZWN0b3J5RW50cnlTeW5jLmlkbCcsCi0gICAgICAgICAgICAnZmlsZWFwaS9EaXJlY3RvcnlS
ZWFkZXIuaWRsJywKLSAgICAgICAgICAgICdmaWxlYXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuaWRs
JywKKyAgICAgICAgICAgICdNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnkuaWRsJywK
KyAgICAgICAgICAgICdNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmlkbCcs
CisgICAgICAgICAgICAnTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5pZGwnLAor
ICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmlkbCcs
CiAgICAgICAgICAgICAnZmlsZWFwaS9ET01GaWxlU3lzdGVtLmlkbCcsCiAgICAgICAgICAgICAn
ZmlsZWFwaS9ET01GaWxlU3lzdGVtU3luYy5pZGwnLAogICAgICAgICAgICAgJ2ZpbGVhcGkvRE9N
V2luZG93RmlsZVN5c3RlbS5pZGwnLApAQCAtMjQ0MSwxNSArMjQ0MSwxNSBAQAogICAgICAgICAg
ICAgJ2ZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuaCcsCiAgICAgICAgICAgICAnZmlsZWFwaS9E
T01XaW5kb3dGaWxlU3lzdGVtLmNwcCcsCiAgICAgICAgICAgICAnZmlsZWFwaS9ET01XaW5kb3dG
aWxlU3lzdGVtLmgnLAotICAgICAgICAgICAgJ2ZpbGVhcGkvRGlyZWN0b3J5RW50cnkuY3BwJywK
LSAgICAgICAgICAgICdmaWxlYXBpL0RpcmVjdG9yeUVudHJ5LmgnLAotICAgICAgICAgICAgJ2Zp
bGVhcGkvRGlyZWN0b3J5RW50cnlTeW5jLmNwcCcsCi0gICAgICAgICAgICAnZmlsZWFwaS9EaXJl
Y3RvcnlFbnRyeVN5bmMuaCcsCi0gICAgICAgICAgICAnZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXIu
Y3BwJywKLSAgICAgICAgICAgICdmaWxlYXBpL0RpcmVjdG9yeVJlYWRlci5oJywKLSAgICAgICAg
ICAgICdmaWxlYXBpL0RpcmVjdG9yeVJlYWRlckJhc2UuaCcsCi0gICAgICAgICAgICAnZmlsZWFw
aS9EaXJlY3RvcnlSZWFkZXJTeW5jLmNwcCcsCi0gICAgICAgICAgICAnZmlsZWFwaS9EaXJlY3Rv
cnlSZWFkZXJTeW5jLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3Rv
cnlFbnRyeS5jcHAnLAorICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlF
bnRyeS5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlT
eW5jLmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5
U3luYy5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVy
LmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5o
JywKKyAgICAgICAgICAgICdNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyQmFzZS5o
JywKKyAgICAgICAgICAgICdNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyU3luYy5j
cHAnLAorICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5j
LmgnLAogICAgICAgICAgICAgJ2ZpbGVhcGkvRW50cmllc0NhbGxiYWNrLmgnLAogICAgICAgICAg
ICAgJ2ZpbGVhcGkvRW50cnkuY3BwJywKICAgICAgICAgICAgICdmaWxlYXBpL0VudHJ5LmgnLApJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5wcmkJKHJldmlzaW9uIDExMDQ2NSkKKysrIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xOCw2ICsxOCw3IEBAIFdFQkNPUkVfR0VORVJB
VEVEX1NPVVJDRVNfRElSID0gJCR7Uk9PVF8KIAogSU5DTFVERVBBVEggKz0gXAogICAgICQkU09V
UkNFX0RJUiBcCisgICAgJCRTT1VSQ0VfRElSL01vZHVsZXMvZmlsZXN5c3RlbSBcCiAgICAgJCRT
T1VSQ0VfRElSL01vZHVsZXMvZ2VvbG9jYXRpb24gXAogICAgICQkU09VUkNFX0RJUi9Nb2R1bGVz
L2luZGV4ZWRkYiBcCiAgICAgJCRTT1VSQ0VfRElSL01vZHVsZXMvd2ViZGF0YWJhc2UgXApJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5
RW50cnkuY3BwCShyZXZpc2lvbiAxMTA0NjUpCShmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
RGlyZWN0b3J5RW50cnkuY3BwOjExMDQ2NSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeS5oIgorCisjaWYg
RU5BQkxFKEZJTEVfU1lTVEVNKQorCisjaW5jbHVkZSAiRGlyZWN0b3J5UmVhZGVyLmgiCisjaW5j
bHVkZSAiRW50cnlDYWxsYmFjay5oIgorI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2suaCIKKyNpbmNs
dWRlICJGaWxlRXJyb3IuaCIKKyNpbmNsdWRlICJWb2lkQ2FsbGJhY2suaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitEaXJlY3RvcnlFbnRyeTo6RGlyZWN0b3J5RW50cnkoUGFzc1JlZlB0cjxE
T01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKKyAg
ICA6IEVudHJ5KGZpbGVTeXN0ZW0sIGZ1bGxQYXRoKQoreworfQorCitQYXNzUmVmUHRyPERpcmVj
dG9yeVJlYWRlcj4gRGlyZWN0b3J5RW50cnk6OmNyZWF0ZVJlYWRlcigpCit7CisgICAgcmV0dXJu
IERpcmVjdG9yeVJlYWRlcjo6Y3JlYXRlKG1fZmlsZVN5c3RlbSwgbV9mdWxsUGF0aCk7Cit9CisK
K3ZvaWQgRGlyZWN0b3J5RW50cnk6OmdldEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVm
UHRyPFdlYktpdEZsYWdzPiBmbGFncywgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNz
Q2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFja1JlZikKK3sK
KyAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayhlcnJvckNhbGxiYWNrUmVm
KTsKKyAgICBpZiAoIW1fZmlsZVN5c3RlbS0+Z2V0RmlsZSh0aGlzLCBwYXRoLCBmbGFncywgc3Vj
Y2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSkKKyAgICAgICAgZmlsZXN5c3RlbSgpLT5zY2hl
ZHVsZUNhbGxiYWNrKGVycm9yQ2FsbGJhY2sucmVsZWFzZSgpLCBGaWxlRXJyb3I6OmNyZWF0ZShG
aWxlRXJyb3I6OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUikpOworfQorCit2b2lkIERpcmVjdG9y
eUVudHJ5OjpnZXREaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPFdlYktp
dEZsYWdzPiBmbGFncywgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ss
IFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFja1JlZikKK3sKKyAgICBSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayhlcnJvckNhbGxiYWNrUmVmKTsKKyAgICBp
ZiAoIW1fZmlsZVN5c3RlbS0+Z2V0RGlyZWN0b3J5KHRoaXMsIHBhdGgsIGZsYWdzLCBzdWNjZXNz
Q2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKQorICAgICAgICBmaWxlc3lzdGVtKCktPnNjaGVkdWxl
Q2FsbGJhY2soZXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVF
cnJvcjo6SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKSk7Cit9CisKK3ZvaWQgRGlyZWN0b3J5RW50
cnk6OnJlbW92ZVJlY3Vyc2l2ZWx5KFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2Fs
bGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFja1JlZikgY29uc3QK
K3sKKyAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayhlcnJvckNhbGxiYWNr
UmVmKTsKKyAgICBpZiAoIW1fZmlsZVN5c3RlbS0+cmVtb3ZlUmVjdXJzaXZlbHkodGhpcywgc3Vj
Y2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSkKKyAgICAgICAgZmlsZXN5c3RlbSgpLT5zY2hl
ZHVsZUNhbGxiYWNrKGVycm9yQ2FsbGJhY2sucmVsZWFzZSgpLCBGaWxlRXJyb3I6OmNyZWF0ZShG
aWxlRXJyb3I6OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUikpOworfQorCit9CisKKyNlbmRpZiAv
LyBFTkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRGlyZWN0b3J5RW50cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnkuaAkocmV2aXNpb24gMTEwNDY1KQkoZnJvbSBT
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5Lmg6MTEwNDY1KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRGlyZWN0b3J5RW50cnlfaAorI2RlZmluZSBEaXJl
Y3RvcnlFbnRyeV9oCisKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisKKyNpbmNsdWRlICJFbnRy
eS5oIgorI2luY2x1ZGUgIldlYktpdEZsYWdzLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRE9NRmlsZVN5c3RlbUJhc2U7Citj
bGFzcyBEaXJlY3RvcnlSZWFkZXI7CitjbGFzcyBFbnRyeUNhbGxiYWNrOworY2xhc3MgRXJyb3JD
YWxsYmFjazsKK2NsYXNzIFZvaWRDYWxsYmFjazsKKworY2xhc3MgRGlyZWN0b3J5RW50cnkgOiBw
dWJsaWMgRW50cnkgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERpcmVjdG9yeUVu
dHJ5PiBjcmVhdGUoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29u
c3QgU3RyaW5nJiBmdWxsUGF0aCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
RGlyZWN0b3J5RW50cnkoZmlsZVN5c3RlbSwgZnVsbFBhdGgpKTsKKyAgICB9CisgICAgdmlydHVh
bCBib29sIGlzRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgUGFzc1Jl
ZlB0cjxEaXJlY3RvcnlSZWFkZXI+IGNyZWF0ZVJlYWRlcigpOworICAgIHZvaWQgZ2V0RmlsZShj
b25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8V2ViS2l0RmxhZ3M+ID0gMCwgUGFzc1JlZlB0
cjxFbnRyeUNhbGxiYWNrPiA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gPSAwKTsKKyAg
ICB2b2lkIGdldERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8V2ViS2l0
RmxhZ3M+ID0gMCwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiA9IDAsIFBhc3NSZWZQdHI8RXJy
b3JDYWxsYmFjaz4gPSAwKTsKKyAgICB2b2lkIHJlbW92ZVJlY3Vyc2l2ZWx5KFBhc3NSZWZQdHI8
Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSAwLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJh
Y2s+ID0gMCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgRGlyZWN0b3J5RW50cnkoUGFzc1JlZlB0
cjxET01GaWxlU3lzdGVtQmFzZT4sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpOworfTsKKworfSAv
LyBuYW1lc3BhY2UKKworI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKKworI2VuZGlmIC8v
IERpcmVjdG9yeUVudHJ5X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9EaXJlY3RvcnlFbnRyeS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmlkbAkocmV2aXNpb24gMTEwNDY1KQkoZnJvbSBT
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5LmlkbDoxMTA0NjUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnkuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgc3RvcmFnZSB7CisgICAgaW50ZXJmYWNlIFsK
KyAgICAgICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0sCisgICAgICAgIEpTR2VuZXJhdGVUb05h
dGl2ZU9iamVjdCwKKyAgICAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCisgICAgICAgIEpTTm9T
dGF0aWNUYWJsZXMKKyAgICBdIERpcmVjdG9yeUVudHJ5IDogRW50cnkgeworICAgICAgICBEaXJl
Y3RvcnlSZWFkZXIgY3JlYXRlUmVhZGVyKCk7CisgICAgICAgIFtDdXN0b21dIHZvaWQgZ2V0Rmls
ZShpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3RyaW5n
XSBET01TdHJpbmcgcGF0aCwgaW4gW09wdGlvbmFsXSBXZWJLaXRGbGFncyBmbGFncywgaW4gW09w
dGlvbmFsLCBDYWxsYmFja10gRW50cnlDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIGluIFtPcHRp
b25hbCwgQ2FsbGJhY2tdIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7CisgICAgICAgIFtD
dXN0b21dIHZvaWQgZ2V0RGlyZWN0b3J5KGluIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBUcmVh
dFVuZGVmaW5lZEFzPU51bGxTdHJpbmddIERPTVN0cmluZyBwYXRoLCBpbiBbT3B0aW9uYWxdIFdl
YktpdEZsYWdzIGZsYWdzLCBpbiBbT3B0aW9uYWwsIENhbGxiYWNrXSBFbnRyeUNhbGxiYWNrIHN1
Y2Nlc3NDYWxsYmFjaywgaW4gW09wdGlvbmFsLCBDYWxsYmFja10gRXJyb3JDYWxsYmFjayBlcnJv
ckNhbGxiYWNrKTsKKyAgICAgICAgdm9pZCByZW1vdmVSZWN1cnNpdmVseShpbiBbQ2FsbGJhY2td
IFZvaWRDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVy
cm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7CisgICAgfTsKK30KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5bmMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5bmMu
Y3BwCShyZXZpc2lvbiAxMTA0NjUpCShmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0
b3J5RW50cnlTeW5jLmNwcDoxMTA0NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRpcmVjdG9yeUVudHJ5U3luYy5oIgor
CisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjaW5jbHVkZSAiRGlyZWN0b3J5UmVhZGVyU3lu
Yy5oIgorI2luY2x1ZGUgIkVudHJ5U3luYy5oIgorI2luY2x1ZGUgIkZpbGVFbnRyeVN5bmMuaCIK
KyNpbmNsdWRlICJGaWxlRXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiU3luY0NhbGxiYWNrSGVscGVy
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRGlyZWN0b3J5RW50cnlTeW5jOjpEaXJlY3Rv
cnlFbnRyeVN5bmMoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29u
c3QgU3RyaW5nJiBmdWxsUGF0aCkKKyAgICA6IEVudHJ5U3luYyhmaWxlU3lzdGVtLCBmdWxsUGF0
aCkKK3sKK30KKworUGFzc1JlZlB0cjxEaXJlY3RvcnlSZWFkZXJTeW5jPiBEaXJlY3RvcnlFbnRy
eVN5bmM6OmNyZWF0ZVJlYWRlcihFeGNlcHRpb25Db2RlJikKK3sKKyAgICByZXR1cm4gRGlyZWN0
b3J5UmVhZGVyU3luYzo6Y3JlYXRlKG1fZmlsZVN5c3RlbSwgbV9mdWxsUGF0aCk7Cit9CisKK1Bh
c3NSZWZQdHI8RmlsZUVudHJ5U3luYz4gRGlyZWN0b3J5RW50cnlTeW5jOjpnZXRGaWxlKGNvbnN0
IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxXZWJLaXRGbGFncz4gZmxhZ3MsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQoreworICAgIGVjID0gMDsKKyAgICBFbnRyeVN5bmNDYWxsYmFja0hlbHBlciBoZWxw
ZXIobV9maWxlU3lzdGVtLT5hc3luY0ZpbGVTeXN0ZW0oKSk7CisgICAgaWYgKCFtX2ZpbGVTeXN0
ZW0tPmdldEZpbGUodGhpcywgcGF0aCwgZmxhZ3MsIGhlbHBlci5zdWNjZXNzQ2FsbGJhY2soKSwg
aGVscGVyLmVycm9yQ2FsbGJhY2soKSkpIHsKKyAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpJ
TlZBTElEX01PRElGSUNBVElPTl9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBy
ZXR1cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxGaWxlRW50cnlTeW5jPihoZWxwZXIuZ2V0UmVzdWx0
KGVjKSk7Cit9CisKK1Bhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnlTeW5jPiBEaXJlY3RvcnlFbnRy
eVN5bmM6OmdldERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8V2ViS2l0
RmxhZ3M+IGZsYWdzLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBlYyA9IDA7CisgICAgRW50
cnlTeW5jQ2FsbGJhY2tIZWxwZXIgaGVscGVyKG1fZmlsZVN5c3RlbS0+YXN5bmNGaWxlU3lzdGVt
KCkpOworICAgIGlmICghbV9maWxlU3lzdGVtLT5nZXREaXJlY3RvcnkodGhpcywgcGF0aCwgZmxh
Z3MsIGhlbHBlci5zdWNjZXNzQ2FsbGJhY2soKSwgaGVscGVyLmVycm9yQ2FsbGJhY2soKSkpIHsK
KyAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlI7Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxE
aXJlY3RvcnlFbnRyeVN5bmM+KGhlbHBlci5nZXRSZXN1bHQoZWMpKTsKK30KKwordm9pZCBEaXJl
Y3RvcnlFbnRyeVN5bmM6OnJlbW92ZVJlY3Vyc2l2ZWx5KEV4Y2VwdGlvbkNvZGUmIGVjKQorewor
ICAgIGVjID0gMDsKKyAgICBWb2lkU3luY0NhbGxiYWNrSGVscGVyIGhlbHBlcihtX2ZpbGVTeXN0
ZW0tPmFzeW5jRmlsZVN5c3RlbSgpKTsKKyAgICBpZiAoIW1fZmlsZVN5c3RlbS0+cmVtb3ZlUmVj
dXJzaXZlbHkodGhpcywgaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIuZXJyb3JDYWxs
YmFjaygpKSkgeworICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246OklOVkFMSURfTU9ESUZJQ0FU
SU9OX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBoZWxwZXIuZ2V0UmVzdWx0KGVj
KTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5
bmMuaAkocmV2aXNpb24gMTEwNDY1KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVj
dG9yeUVudHJ5U3luYy5oOjExMDQ2NSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbS9EaXJlY3RvcnlFbnRyeVN5bmMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBEaXJlY3RvcnlFbnRyeVN5bmNfaAorI2RlZmluZSBEaXJlY3RvcnlFbnRyeVN5bmNf
aAorCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjaW5jbHVkZSAiRW50cnlTeW5jLmgiCisj
aW5jbHVkZSAiV2ViS2l0RmxhZ3MuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEaXJlY3RvcnlSZWFkZXJTeW5jOworY2xhc3Mg
RmlsZUVudHJ5U3luYzsKKworY2xhc3MgRGlyZWN0b3J5RW50cnlTeW5jIDogcHVibGljIEVudHJ5
U3luYyB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnlTeW5j
PiBjcmVhdGUoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29uc3Qg
U3RyaW5nJiBmdWxsUGF0aCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGly
ZWN0b3J5RW50cnlTeW5jKGZpbGVTeXN0ZW0sIGZ1bGxQYXRoKSk7CisgICAgfQorICAgIHZpcnR1
YWwgYm9vbCBpc0RpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKworICAgIFBhc3NS
ZWZQdHI8RGlyZWN0b3J5UmVhZGVyU3luYz4gY3JlYXRlUmVhZGVyKEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICBQYXNzUmVmUHRyPEZpbGVFbnRyeVN5bmM+IGdldEZpbGUoY29uc3QgU3RyaW5nJiBwYXRo
LCBQYXNzUmVmUHRyPFdlYktpdEZsYWdzPiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQ
dHI8RGlyZWN0b3J5RW50cnlTeW5jPiBnZXREaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBQ
YXNzUmVmUHRyPFdlYktpdEZsYWdzPiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcmVtb3Zl
UmVjdXJzaXZlbHkoRXhjZXB0aW9uQ29kZSYpOworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFz
cyBFbnRyeVN5bmM7CisgICAgRGlyZWN0b3J5RW50cnlTeW5jKFBhc3NSZWZQdHI8RE9NRmlsZVN5
c3RlbUJhc2U+LCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKTsKK307CisKK30KKworI2VuZGlmIC8v
IEVOQUJMRShGSUxFX1NZU1RFTSkKKworI2VuZGlmIC8vIERpcmVjdG9yeUVudHJ5U3luY19oCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5j
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGly
ZWN0b3J5RW50cnlTeW5jLmlkbAkocmV2aXNpb24gMTEwNDY1KQkoZnJvbSBTb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5U3luYy5pZGw6MTEwNDY1KQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKK21vZHVsZSBzdG9yYWdlIHsKKyAgICBpbnRlcmZhY2UgWworICAg
ICAgICBDb25kaXRpb25hbD1GSUxFX1NZU1RFTSwKKyAgICAgICAgSlNHZW5lcmF0ZVRvTmF0aXZl
T2JqZWN0LAorICAgICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKKyAgICAgICAgSlNOb1N0YXRp
Y1RhYmxlcworICAgIF0gRGlyZWN0b3J5RW50cnlTeW5jIDogRW50cnlTeW5jIHsKKyAgICAgICAg
RGlyZWN0b3J5UmVhZGVyU3luYyBjcmVhdGVSZWFkZXIoKSByYWlzZXMgKEZpbGVFeGNlcHRpb24p
OworICAgICAgICBbQ3VzdG9tXSBGaWxlRW50cnlTeW5jIGdldEZpbGUoaW4gW1RyZWF0TnVsbEFz
PU51bGxTdHJpbmcsIFRyZWF0VW5kZWZpbmVkQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIHBhdGgs
IGluIFdlYktpdEZsYWdzIGZsYWdzKSByYWlzZXMgKEZpbGVFeGNlcHRpb24pOworICAgICAgICBb
Q3VzdG9tXSBEaXJlY3RvcnlFbnRyeVN5bmMgZ2V0RGlyZWN0b3J5KGluIFtUcmVhdE51bGxBcz1O
dWxsU3RyaW5nLCBUcmVhdFVuZGVmaW5lZEFzPU51bGxTdHJpbmddIERPTVN0cmluZyBwYXRoLCBp
biBXZWJLaXRGbGFncyBmbGFncykgcmFpc2VzIChGaWxlRXhjZXB0aW9uKTsKKyAgICAgICAgdm9p
ZCByZW1vdmVSZWN1cnNpdmVseSgpIHJhaXNlcyAoRmlsZUV4Y2VwdGlvbik7CisgICAgfTsKK30K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJl
Y3RvcnlSZWFkZXIuY3BwCShyZXZpc2lvbiAxMTA0NjUpCShmcm9tIFNvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRGlyZWN0b3J5UmVhZGVyLmNwcDoxMTA0NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRpcmVjdG9yeVJlYWRlci5o
IgorCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjaW5jbHVkZSAiRW50cmllc0NhbGxiYWNr
LmgiCisjaW5jbHVkZSAiRW50cnlBcnJheS5oIgorI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2suaCIK
KyNpbmNsdWRlICJGaWxlRXJyb3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitEaXJlY3Rv
cnlSZWFkZXI6OkRpcmVjdG9yeVJlYWRlcihQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBm
aWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQorICAgIDogRGlyZWN0b3J5UmVhZGVy
QmFzZShmaWxlU3lzdGVtLCBmdWxsUGF0aCkKK3sKK30KKwordm9pZCBEaXJlY3RvcnlSZWFkZXI6
OnJlYWRFbnRyaWVzKFBhc3NSZWZQdHI8RW50cmllc0NhbGxiYWNrPiBlbnRyaWVzQ2FsbGJhY2ss
IFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKK3sKKyAgICBpZiAoIW1f
aGFzTW9yZUVudHJpZXMpIHsKKyAgICAgICAgZmlsZXN5c3RlbSgpLT5zY2hlZHVsZUNhbGxiYWNr
KGVudHJpZXNDYWxsYmFjaywgRW50cnlBcnJheTo6Y3JlYXRlKCkpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIGZpbGVzeXN0ZW0oKS0+cmVhZERpcmVjdG9yeSh0aGlzLCBtX2Z1bGxQYXRo
LCBlbnRyaWVzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOworfQorCit9CisKKyNlbmRpZiAvLyBF
TkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRGlyZWN0b3J5UmVhZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5oCShyZXZpc2lvbiAxMTA0NjUpCShmcm9tIFNv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyLmg6MTEwNDY1KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIERpcmVjdG9yeVJlYWRlcl9oCisjZGVmaW5lIERp
cmVjdG9yeVJlYWRlcl9oCisKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisKKyNpbmNsdWRlICJE
T01GaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiRGlyZWN0b3J5UmVhZGVyQmFzZS5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEVu
dHJpZXNDYWxsYmFjazsKK2NsYXNzIEVudHJpZXNDYWxsYmFja3M7CitjbGFzcyBFcnJvckNhbGxi
YWNrOworCitjbGFzcyBEaXJlY3RvcnlSZWFkZXIgOiBwdWJsaWMgRGlyZWN0b3J5UmVhZGVyQmFz
ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RGlyZWN0b3J5UmVhZGVyPiBjcmVh
dGUoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5n
JiBmdWxsUGF0aCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGlyZWN0b3J5
UmVhZGVyKGZpbGVTeXN0ZW0sIGZ1bGxQYXRoKSk7CisgICAgfQorCisgICAgdm9pZCByZWFkRW50
cmllcyhQYXNzUmVmUHRyPEVudHJpZXNDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFj
az4gPSAwKTsKKworICAgIERPTUZpbGVTeXN0ZW0qIGZpbGVzeXN0ZW0oKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxET01GaWxlU3lzdGVtKj4obV9maWxlU3lzdGVtLmdldCgpKTsgfQorCitw
cml2YXRlOgorICAgIERpcmVjdG9yeVJlYWRlcihQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNl
PiwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCk7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUo
RklMRV9TWVNURU0pCisKKyNlbmRpZiAvLyBEaXJlY3RvcnlSZWFkZXJfaApJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5p
ZGwJKHJldmlzaW9uIDExMDQ2NSkJKGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3Rv
cnlSZWFkZXIuaWRsOjExMDQ2NSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9EaXJlY3RvcnlSZWFkZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1
bGUgc3RvcmFnZSB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9RklMRV9T
WVNURU0sCisgICAgICAgIEpTTm9TdGF0aWNUYWJsZXMKKyAgICBdIERpcmVjdG9yeVJlYWRlciB7
CisgICAgICAgIHZvaWQgcmVhZEVudHJpZXMoaW4gW0NhbGxiYWNrXSBFbnRyaWVzQ2FsbGJhY2sg
c3VjY2Vzc0NhbGxiYWNrLCBpbiBbT3B0aW9uYWwsIENhbGxiYWNrXSBFcnJvckNhbGxiYWNrIGVy
cm9yQ2FsbGJhY2spOworICAgIH07Cit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJCYXNlLmgJKHJldmlzaW9uIDEx
MDQ2NSkJKGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJCYXNlLmg6
MTEwNDY1KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJl
YWRlckJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBEaXJlY3Rv
cnlSZWFkZXJCYXNlX2gKKyNkZWZpbmUgRGlyZWN0b3J5UmVhZGVyQmFzZV9oCisKKyNpZiBFTkFC
TEUoRklMRV9TWVNURU0pCisKKyNpbmNsdWRlICJET01GaWxlU3lzdGVtQmFzZS5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERp
cmVjdG9yeVJlYWRlckJhc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxEaXJlY3RvcnlSZWFkZXJCYXNl
PiB7CitwdWJsaWM6CisgICAgRE9NRmlsZVN5c3RlbUJhc2UqIGZpbGVzeXN0ZW0oKSBjb25zdCB7
IHJldHVybiBtX2ZpbGVTeXN0ZW0uZ2V0KCk7IH0KKyAgICB2b2lkIHNldEhhc01vcmVFbnRyaWVz
KGJvb2wgaGFzTW9yZUVudHJpZXMpIHsgbV9oYXNNb3JlRW50cmllcyA9IGhhc01vcmVFbnRyaWVz
OyB9CisKK3Byb3RlY3RlZDoKKyAgICBEaXJlY3RvcnlSZWFkZXJCYXNlKFBhc3NSZWZQdHI8RE9N
RmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCisgICAg
ICAgIDogbV9maWxlU3lzdGVtKGZpbGVTeXN0ZW0pCisgICAgICAgICwgbV9mdWxsUGF0aChmdWxs
UGF0aCkKKyAgICAgICAgLCBtX2hhc01vcmVFbnRyaWVzKHRydWUpCisgICAgeworICAgIH0KKwor
ICAgIFJlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gbV9maWxlU3lzdGVtOworCisgICAgLy8gVGhp
cyBpcyBhIHZpcnR1YWwgcGF0aC4KKyAgICBTdHJpbmcgbV9mdWxsUGF0aDsKKworICAgIGJvb2wg
bV9oYXNNb3JlRW50cmllczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKKworI2VuZGlmIC8vIERpcmVjdG9yeVJlYWRlckJhc2Vf
aApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRl
clN5bmMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9EaXJlY3RvcnlSZWFkZXJTeW5jLmNwcAkocmV2aXNpb24gMTEwNDY1KQkoZnJvbSBTb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuY3BwOjExMDQ2NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkRpcmVjdG9yeVJlYWRlclN5bmMuaCIKKworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKworI2lu
Y2x1ZGUgIkRpcmVjdG9yeUVudHJ5LmgiCisjaW5jbHVkZSAiRGlyZWN0b3J5RW50cnlTeW5jLmgi
CisjaW5jbHVkZSAiRW50cnlBcnJheVN5bmMuaCIKKyNpbmNsdWRlICJFbnRyeVN5bmMuaCIKKyNp
bmNsdWRlICJGaWxlRW50cnlTeW5jLmgiCisjaW5jbHVkZSAiRmlsZUV4Y2VwdGlvbi5oIgorI2lu
Y2x1ZGUgIlN5bmNDYWxsYmFja0hlbHBlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0Rp
cmVjdG9yeVJlYWRlclN5bmM6OkRpcmVjdG9yeVJlYWRlclN5bmMoUGFzc1JlZlB0cjxET01GaWxl
U3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKKyAgICA6IERp
cmVjdG9yeVJlYWRlckJhc2UoZmlsZVN5c3RlbSwgZnVsbFBhdGgpCit7Cit9CisKK1Bhc3NSZWZQ
dHI8RW50cnlBcnJheVN5bmM+IERpcmVjdG9yeVJlYWRlclN5bmM6OnJlYWRFbnRyaWVzKEV4Y2Vw
dGlvbkNvZGUmIGVjKQoreworICAgIGVjID0gMDsKKyAgICBpZiAoIW1faGFzTW9yZUVudHJpZXMp
CisgICAgICAgIHJldHVybiBFbnRyeUFycmF5U3luYzo6Y3JlYXRlKCk7CisKKyAgICBFbnRyaWVz
U3luY0NhbGxiYWNrSGVscGVyIGhlbHBlcihtX2ZpbGVTeXN0ZW0tPmFzeW5jRmlsZVN5c3RlbSgp
KTsKKyAgICBpZiAoIW1fZmlsZVN5c3RlbS0+cmVhZERpcmVjdG9yeSh0aGlzLCBtX2Z1bGxQYXRo
LCBoZWxwZXIuc3VjY2Vzc0NhbGxiYWNrKCksIGhlbHBlci5lcnJvckNhbGxiYWNrKCkpKSB7Cisg
ICAgICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSOworICAg
ICAgICBzZXRIYXNNb3JlRW50cmllcyhmYWxzZSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0K
KyAgICByZXR1cm4gaGVscGVyLmdldFJlc3VsdChlYyk7Cit9CisKK30gLy8gbmFtZXNwYWNlCisK
KyNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyU3luYy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmgJKHJldmlz
aW9uIDExMDQ2NSkJKGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJT
eW5jLmg6MTEwNDY1KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVj
dG9yeVJlYWRlclN5bmMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBE
aXJlY3RvcnlSZWFkZXJTeW5jX2gKKyNkZWZpbmUgRGlyZWN0b3J5UmVhZGVyU3luY19oCisKKyNp
ZiBFTkFCTEUoRklMRV9TWVNURU0pCisKKyNpbmNsdWRlICJEaXJlY3RvcnlSZWFkZXJCYXNlLmgi
CisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgRW50cnlBcnJheVN5bmM7CisKK3R5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CisKK2Ns
YXNzIERpcmVjdG9yeVJlYWRlclN5bmMgOiBwdWJsaWMgRGlyZWN0b3J5UmVhZGVyQmFzZSB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RGlyZWN0b3J5UmVhZGVyU3luYz4gY3JlYXRl
KFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYg
ZnVsbFBhdGgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERpcmVjdG9yeVJl
YWRlclN5bmMoZmlsZVN5c3RlbSwgZnVsbFBhdGgpKTsKKyAgICB9CisKKyAgICBQYXNzUmVmUHRy
PEVudHJ5QXJyYXlTeW5jPiByZWFkRW50cmllcyhFeGNlcHRpb25Db2RlJik7CisKK3ByaXZhdGU6
CisgICAgRGlyZWN0b3J5UmVhZGVyU3luYyhQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiwg
Y29uc3QgU3RyaW5nJiBmdWxsUGF0aCk7Cit9OworCit9IC8vIG5hbWVzcGFjZQorCisjZW5kaWYg
Ly8gRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjZW5kaWYgLy8gRGlyZWN0b3J5UmVhZGVyU3luY19o
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVy
U3luYy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
L0RpcmVjdG9yeVJlYWRlclN5bmMuaWRsCShyZXZpc2lvbiAxMTA0NjUpCShmcm9tIFNvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyU3luYy5pZGw6MTEwNDY1KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgc3RvcmFnZSB7CisgICAgaW50ZXJmYWNl
IFsKKyAgICAgICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0sCisgICAgICAgIEpTTm9TdGF0aWNU
YWJsZXMKKyAgICBdIERpcmVjdG9yeVJlYWRlclN5bmMgeworICAgICAgICBFbnRyeUFycmF5U3lu
YyByZWFkRW50cmllcygpIHJhaXNlcyAoRmlsZUV4Y2VwdGlvbik7CisgICAgfTsKK30KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCShyZXZpc2lvbiAxMTA0NjUpCisr
KyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAkod29ya2luZyBjb3B5KQpA
QCAtNTEsNiArNTEsNyBAQAogICAgICd3ZWJjb3JlX2luY2x1ZGVfZGlycyc6IFsKICAgICAgICcu
Li8nLAogICAgICAgJy4uLy4uJywKKyAgICAgICcuLi9Nb2R1bGVzL2ZpbGVzeXN0ZW0nLAogICAg
ICAgJy4uL01vZHVsZXMvZ2FtZXBhZCcsCiAgICAgICAnLi4vTW9kdWxlcy9nZW9sb2NhdGlvbics
CiAgICAgICAnLi4vTW9kdWxlcy9pbnRlbnRzJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAxMTA0NjUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAt
NTY4NTgsMzkgKzU2ODU4LDM5IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKLQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGZpbGVhcGlcRGlyZWN0b3J5RW50cnkuY3BwIgorCQkJCVJlbGF0aXZl
UGF0aD0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXERpcmVjdG9yeUVudHJ5LmNwcCIKIAkJCQk+CiAJ
CQk8L0ZpbGU+CiAJCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cZmlsZWFwaVxEaXJlY3Rv
cnlFbnRyeS5oIgorCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXERpcmVj
dG9yeUVudHJ5LmgiCiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGZpbGVhcGlcRGlyZWN0b3J5RW50cnlTeW5jLmNwcCIKKwkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxEaXJlY3RvcnlFbnRyeVN5bmMuY3BwIgogCQkJCT4KIAkJ
CTwvRmlsZT4KIAkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxmaWxlYXBpXERpcmVjdG9y
eUVudHJ5U3luYy5oIgorCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXERp
cmVjdG9yeUVudHJ5U3luYy5oIgogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCi0JCQkJUmVs
YXRpdmVQYXRoPSIuLlxmaWxlYXBpXERpcmVjdG9yeVJlYWRlci5jcHAiCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRGlyZWN0b3J5UmVhZGVyLmNwcCIKIAkJCQk+CiAJ
CQk8L0ZpbGU+CiAJCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cZmlsZWFwaVxEaXJlY3Rv
cnlSZWFkZXIuaCIKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxEaXJl
Y3RvcnlSZWFkZXIuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQotCQkJCVJlbGF0aXZl
UGF0aD0iLi5cZmlsZWFwaVxEaXJlY3RvcnlSZWFkZXJCYXNlLmgiCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRGlyZWN0b3J5UmVhZGVyQmFzZS5oIgogCQkJCT4KIAkJ
CTwvRmlsZT4KIAkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxmaWxlYXBpXERpcmVjdG9y
eVJlYWRlclN5bmMuY3BwIgorCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xmaWxlc3lzdGVt
XERpcmVjdG9yeVJlYWRlclN5bmMuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCi0J
CQkJUmVsYXRpdmVQYXRoPSIuLlxmaWxlYXBpXERpcmVjdG9yeVJlYWRlclN5bmMuaCIKKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxEaXJlY3RvcnlSZWFkZXJTeW5jLmgi
CiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDExMDQ2NSkKKysr
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtOTc2NCw3ICs5NzY0LDcgQEAKIAkJODYxQzJFQTUxM0ZCNEZGRjAwMDYyQUJC
IC8qIFJlc291cmNlTG9hZFRpbWluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZXNvdXJjZUxvYWRUaW1pbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4NjI0M0QwMDExQkMzMUY3MDBDQzAwNkEgLyogSlNBcnJheUJ1ZmZlclZpZXdIZWxwZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBcnJheUJ1ZmZlclZpZXdIZWxw
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZEOTgyRjYxMjVDMTU0MDAwQUQ5
RTNEIC8qIERvY3VtZW50VGltaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERvY3VtZW50VGltaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5MEFFMEUw
MTI1NkEwNzkwMEY1OTY4QyAvKiBEaXJlY3RvcnlSZWFkZXJCYXNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IERpcmVjdG9yeVJlYWRlckJhc2UuaDsgcGF0aCA9IGZpbGVhcGkv
RGlyZWN0b3J5UmVhZGVyQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4OTBB
RTBFMDEyNTZBMDc5MDBGNTk2OEMgLyogRGlyZWN0b3J5UmVhZGVyQmFzZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBEaXJlY3RvcnlSZWFkZXJCYXNlLmg7IHBhdGggPSBNb2R1
bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4OTJDRjE4RDEzNEM2MjBEMDBBQUVEQTEgLyogU3RvcmFnZUluZm9FcnJvckNh
bGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VJbmZvRXJy
b3JDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4OTJDRjE4RTEzNEM2
MjBEMDBBQUVEQTEgLyogU3RvcmFnZUluZm9RdW90YUNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VJbmZvUXVvdGFDYWxsYmFjay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4OTJDRjE4RjEzNEM2MjBEMDBBQUVEQTEgLyogU3RvcmFnZUlu
Zm9Vc2FnZUNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3Jh
Z2VJbmZvVXNhZ2VDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTc4
NSwxMCArOTc4NSwxMCBAQAogCQk4OTNDNDdCQTEyMzhBMEE5MDAyQjNEODYgLyogSlNGaWxlV3Jp
dGVyQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNGaWxlV3Jp
dGVyQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODkzQzQ3Q0ExMjNF
RUJBMjAwMkIzRDg2IC8qIEpTRW50cnlDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNFbnRyeUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg5M0M0N0RFMTIzRUY0QTkwMDJCM0Q4NiAvKiBKU0RpcmVjdG9yeUVudHJ5Q3VzdG9t
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRGlyZWN0b3J5RW50
cnlDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4OTNDNDdGMDEyNDhC
RDM5MDAyQjNEODYgLyogRGlyZWN0b3J5RW50cnlTeW5jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IERpcmVjdG9yeUVudHJ5U3luYy5jcHA7IHBhdGggPSBmaWxlYXBp
L0RpcmVjdG9yeUVudHJ5U3luYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5
M0M0N0YxMTI0OEJEMzkwMDJCM0Q4NiAvKiBEaXJlY3RvcnlFbnRyeVN5bmMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGlyZWN0b3J5RW50cnlTeW5jLmg7IHBhdGggPSBmaWxl
YXBpL0RpcmVjdG9yeUVudHJ5U3luYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4
OTNDNDdGMjEyNDhCRDM5MDAyQjNEODYgLyogRGlyZWN0b3J5UmVhZGVyU3luYy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEaXJlY3RvcnlSZWFkZXJTeW5jLmNwcDsg
cGF0aCA9IGZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyU3luYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTg5M0M0N0YzMTI0OEJEMzkwMDJCM0Q4NiAvKiBEaXJlY3RvcnlSZWFkZXJT
eW5jLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERpcmVjdG9yeVJlYWRlclN5
bmMuaDsgcGF0aCA9IGZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyU3luYy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4OTNDNDdGMDEyNDhCRDM5MDAyQjNEODYgLyogRGlyZWN0b3J5RW50
cnlTeW5jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERpcmVjdG9y
eUVudHJ5U3luYy5jcHA7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlT
eW5jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODkzQzQ3RjExMjQ4QkQzOTAw
MkIzRDg2IC8qIERpcmVjdG9yeUVudHJ5U3luYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBEaXJlY3RvcnlFbnRyeVN5bmMuaDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9E
aXJlY3RvcnlFbnRyeVN5bmMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODkzQzQ3
RjIxMjQ4QkQzOTAwMkIzRDg2IC8qIERpcmVjdG9yeVJlYWRlclN5bmMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRGlyZWN0b3J5UmVhZGVyU3luYy5jcHA7IHBhdGgg
PSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyU3luYy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTg5M0M0N0YzMTI0OEJEMzkwMDJCM0Q4NiAvKiBEaXJlY3RvcnlS
ZWFkZXJTeW5jLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERpcmVjdG9yeVJl
YWRlclN5bmMuaDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5j
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5M0M0N0Y0MTI0OEJEMzkwMDJCM0Q4
NiAvKiBET01GaWxlU3lzdGVtQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBET01GaWxlU3lzdGVtQmFzZS5jcHA7IHBhdGggPSBmaWxlYXBpL0RPTUZpbGVTeXN0
ZW1CYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODkzQzQ3RjUxMjQ4QkQz
OTAwMkIzRDg2IC8qIERPTUZpbGVTeXN0ZW1CYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IERPTUZpbGVTeXN0ZW1CYXNlLmg7IHBhdGggPSBmaWxlYXBpL0RPTUZpbGVTeXN0
ZW1CYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5M0M0N0Y2MTI0OEJEMzkw
MDJCM0Q4NiAvKiBET01GaWxlU3lzdGVtU3luYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBET01GaWxlU3lzdGVtU3luYy5jcHA7IHBhdGggPSBmaWxlYXBpL0RPTUZp
bGVTeXN0ZW1TeW5jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk4MTQsMTAg
Kzk4MTQsMTAgQEAKIAkJODkzQzQ4MzAxMjQ5NTQ3MjAwMkIzRDg2IC8qIEpTRmlsZUVudHJ5U3lu
Yy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ZpbGVFbnRyeVN5
bmMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4OTNDNDgzMTEyNDk1NDcyMDAy
QjNEODYgLyogSlNGaWxlRW50cnlTeW5jLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTRmlsZUVudHJ5U3luYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4OTND
NDg1MjEyNDk5QjA2MDAyQjNEODYgLyogSlNFbnRyeVN5bmNDdXN0b20uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFbnRyeVN5bmNDdXN0b20uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk4OTg3ODUzOTEyMkNBMDY0MDAzQUFCREEgLyogRGlyZWN0
b3J5RW50cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRGlyZWN0
b3J5RW50cnkuY3BwOyBwYXRoID0gZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5ODc4NTNBMTIyQ0EwNjQwMDNBQUJEQSAvKiBEaXJlY3Rv
cnlFbnRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEaXJlY3RvcnlFbnRy
eS5oOyBwYXRoID0gZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk4OTg3ODUzQjEyMkNBMDY0MDAzQUFCREEgLyogRGlyZWN0b3J5UmVhZGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERpcmVjdG9yeVJlYWRlci5j
cHA7IHBhdGggPSBmaWxlYXBpL0RpcmVjdG9yeVJlYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTg5ODc4NTNDMTIyQ0EwNjQwMDNBQUJEQSAvKiBEaXJlY3RvcnlSZWFkZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGlyZWN0b3J5UmVhZGVyLmg7IHBh
dGggPSBmaWxlYXBpL0RpcmVjdG9yeVJlYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4OTg3ODUzOTEyMkNBMDY0MDAzQUFCREEgLyogRGlyZWN0b3J5RW50cnkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRGlyZWN0b3J5RW50cnkuY3BwOyBwYXRo
ID0gTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJODk4Nzg1M0ExMjJDQTA2NDAwM0FBQkRBIC8qIERpcmVjdG9yeUVudHJ5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERpcmVjdG9yeUVudHJ5Lmg7IHBh
dGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJODk4Nzg1M0IxMjJDQTA2NDAwM0FBQkRBIC8qIERpcmVjdG9yeVJlYWRl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEaXJlY3RvcnlSZWFk
ZXIuY3BwOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg5ODc4NTNDMTIyQ0EwNjQwMDNBQUJEQSAvKiBE
aXJlY3RvcnlSZWFkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGlyZWN0
b3J5UmVhZGVyLmg7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5ODc4NTNEMTIyQ0EwNjQwMDNBQUJEQSAv
KiBET01GaWxlUGF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBE
T01GaWxlUGF0aC5jcHA7IHBhdGggPSBmaWxlYXBpL0RPTUZpbGVQYXRoLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODk4Nzg1M0UxMjJDQTA2NDAwM0FBQkRBIC8qIERPTUZpbGVQ
YXRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERPTUZpbGVQYXRoLmg7IHBh
dGggPSBmaWxlYXBpL0RPTUZpbGVQYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTg5ODc4NTNGMTIyQ0EwNjQwMDNBQUJEQSAvKiBET01GaWxlU3lzdGVtLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERPTUZpbGVTeXN0ZW0uY3BwOyBwYXRoID0gZmls
ZWFwaS9ET01GaWxlU3lzdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEy
ODk3LDEwICsxMjg5NywxMCBAQAogCQlFMUE2NDNGMTBFQzA5NzI1MDA3Nzk2NjggLyogV29ya2Vy
U2NyaXB0Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3Jr
ZXJTY3JpcHRDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQTY0
M0ZDMEVDMDk3QTAwMDc3OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtlclNjcmlwdENvbnRyb2xsZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUFCMUVBODE0RTlFMjdEMDA0NDlFMTMg
LyogRmlsZUxpc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IEZpbGVMaXN0LmlkbDsgcGF0
aCA9IGZpbGVhcGkvRmlsZUxpc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlF
MUFCMUVBQjE0RTlFMkVGMDA0NDlFMTMgLyogRGlyZWN0b3J5RW50cnkuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IERpcmVj
dG9yeUVudHJ5LmlkbDsgcGF0aCA9IGZpbGVhcGkvRGlyZWN0b3J5RW50cnkuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlFMUFCMUVBQzE0RTlFMkY4MDA0NDlFMTMgLyogRGlyZWN0
b3J5RW50cnlTeW5jLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBEaXJlY3RvcnlFbnRyeVN5bmMuaWRsOyBwYXRoID0gZmls
ZWFwaS9EaXJlY3RvcnlFbnRyeVN5bmMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlFMUFCMUVBRDE0RTlFMzA1MDA0NDlFMTMgLyogRGlyZWN0b3J5UmVhZGVyLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBE
aXJlY3RvcnlSZWFkZXIuaWRsOyBwYXRoID0gZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXIuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMUFCMUVBRTE0RTlFMzBCMDA0NDlFMTMgLyog
RGlyZWN0b3J5UmVhZGVyU3luYy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRGlyZWN0b3J5UmVhZGVyU3luYy5pZGw7IHBh
dGggPSBmaWxlYXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFMUFCMUVBQjE0RTlFMkVGMDA0NDlFMTMgLyogRGlyZWN0b3J5RW50cnkuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
bmFtZSA9IERpcmVjdG9yeUVudHJ5LmlkbDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJl
Y3RvcnlFbnRyeS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxQUIxRUFDMTRF
OUUyRjgwMDQ0OUUxMyAvKiBEaXJlY3RvcnlFbnRyeVN5bmMuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IERpcmVjdG9yeUVu
dHJ5U3luYy5pZGw7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5j
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTFBQjFFQUQxNEU5RTMwNTAwNDQ5
RTEzIC8qIERpcmVjdG9yeVJlYWRlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRGlyZWN0b3J5UmVhZGVyLmlkbDsgcGF0
aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXIuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFMUFCMUVBRTE0RTlFMzBCMDA0NDlFMTMgLyogRGlyZWN0b3J5UmVh
ZGVyU3luYy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBuYW1lID0gRGlyZWN0b3J5UmVhZGVyU3luYy5pZGw7IHBhdGggPSBNb2R1bGVz
L2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyU3luYy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUxQUIxRUFGMTRFOUUzMTcwMDQ0OUUxMyAvKiBET01GaWxlU3lzdGVtU3luYy5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBuYW1lID0gRE9NRmlsZVN5c3RlbVN5bmMuaWRsOyBwYXRoID0gZmlsZWFwaS9ET01GaWxlU3lz
dGVtU3luYy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQUIxRUIwMTRFOUUz
MjMwMDQ0OUUxMyAvKiBFbnRyaWVzQ2FsbGJhY2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IEVudHJpZXNDYWxsYmFjay5p
ZGw7IHBhdGggPSBmaWxlYXBpL0VudHJpZXNDYWxsYmFjay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUxQUIxRUIxMTRFOUUzMkEwMDQ0OUUxMyAvKiBFbnRyeS5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0g
RW50cnkuaWRsOyBwYXRoID0gZmlsZWFwaS9FbnRyeS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5LmNwcAko
cmV2aXNpb24gMTEwNDY1KQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlFbnRy
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0g
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeS5oIgotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQot
Ci0jaW5jbHVkZSAiRGlyZWN0b3J5UmVhZGVyLmgiCi0jaW5jbHVkZSAiRW50cnlDYWxsYmFjay5o
IgotI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJGaWxlRXJyb3IuaCIKLSNp
bmNsdWRlICJWb2lkQ2FsbGJhY2suaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1EaXJlY3Rv
cnlFbnRyeTo6RGlyZWN0b3J5RW50cnkoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gZmls
ZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKLSAgICA6IEVudHJ5KGZpbGVTeXN0ZW0s
IGZ1bGxQYXRoKQotewotfQotCi1QYXNzUmVmUHRyPERpcmVjdG9yeVJlYWRlcj4gRGlyZWN0b3J5
RW50cnk6OmNyZWF0ZVJlYWRlcigpCi17Ci0gICAgcmV0dXJuIERpcmVjdG9yeVJlYWRlcjo6Y3Jl
YXRlKG1fZmlsZVN5c3RlbSwgbV9mdWxsUGF0aCk7Ci19Ci0KLXZvaWQgRGlyZWN0b3J5RW50cnk6
OmdldEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPFdlYktpdEZsYWdzPiBmbGFn
cywgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8
RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFja1JlZikKLXsKLSAgICBSZWZQdHI8RXJyb3JDYWxs
YmFjaz4gZXJyb3JDYWxsYmFjayhlcnJvckNhbGxiYWNrUmVmKTsKLSAgICBpZiAoIW1fZmlsZVN5
c3RlbS0+Z2V0RmlsZSh0aGlzLCBwYXRoLCBmbGFncywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNh
bGxiYWNrKSkKLSAgICAgICAgZmlsZXN5c3RlbSgpLT5zY2hlZHVsZUNhbGxiYWNrKGVycm9yQ2Fs
bGJhY2sucmVsZWFzZSgpLCBGaWxlRXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6OklOVkFMSURfTU9E
SUZJQ0FUSU9OX0VSUikpOwotfQotCi12b2lkIERpcmVjdG9yeUVudHJ5OjpnZXREaXJlY3Rvcnko
Y29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPFdlYktpdEZsYWdzPiBmbGFncywgUGFzc1Jl
ZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxs
YmFjaz4gZXJyb3JDYWxsYmFja1JlZikKLXsKLSAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJy
b3JDYWxsYmFjayhlcnJvckNhbGxiYWNrUmVmKTsKLSAgICBpZiAoIW1fZmlsZVN5c3RlbS0+Z2V0
RGlyZWN0b3J5KHRoaXMsIHBhdGgsIGZsYWdzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJh
Y2spKQotICAgICAgICBmaWxlc3lzdGVtKCktPnNjaGVkdWxlQ2FsbGJhY2soZXJyb3JDYWxsYmFj
ay5yZWxlYXNlKCksIEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6SU5WQUxJRF9NT0RJRklD
QVRJT05fRVJSKSk7Ci19Ci0KLXZvaWQgRGlyZWN0b3J5RW50cnk6OnJlbW92ZVJlY3Vyc2l2ZWx5
KFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJy
b3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFja1JlZikgY29uc3QKLXsKLSAgICBSZWZQdHI8RXJyb3JD
YWxsYmFjaz4gZXJyb3JDYWxsYmFjayhlcnJvckNhbGxiYWNrUmVmKTsKLSAgICBpZiAoIW1fZmls
ZVN5c3RlbS0+cmVtb3ZlUmVjdXJzaXZlbHkodGhpcywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNh
bGxiYWNrKSkKLSAgICAgICAgZmlsZXN5c3RlbSgpLT5zY2hlZHVsZUNhbGxiYWNrKGVycm9yQ2Fs
bGJhY2sucmVsZWFzZSgpLCBGaWxlRXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6OklOVkFMSURfTU9E
SUZJQ0FUSU9OX0VSUikpOwotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0p
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5oCShyZXZpc2lvbiAx
MTA0NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0g
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRGlyZWN0b3J5RW50cnlfaAotI2RlZmlu
ZSBEaXJlY3RvcnlFbnRyeV9oCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRl
ICJFbnRyeS5oIgotI2luY2x1ZGUgIldlYktpdEZsYWdzLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRE9NRmlsZVN5c3RlbUJh
c2U7Ci1jbGFzcyBEaXJlY3RvcnlSZWFkZXI7Ci1jbGFzcyBFbnRyeUNhbGxiYWNrOwotY2xhc3Mg
RXJyb3JDYWxsYmFjazsKLWNsYXNzIFZvaWRDYWxsYmFjazsKLQotY2xhc3MgRGlyZWN0b3J5RW50
cnkgOiBwdWJsaWMgRW50cnkgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERpcmVj
dG9yeUVudHJ5PiBjcmVhdGUoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3Rl
bSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgRGlyZWN0b3J5RW50cnkoZmlsZVN5c3RlbSwgZnVsbFBhdGgpKTsKLSAgICB9Ci0gICAg
dmlydHVhbCBib29sIGlzRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAg
UGFzc1JlZlB0cjxEaXJlY3RvcnlSZWFkZXI+IGNyZWF0ZVJlYWRlcigpOwotICAgIHZvaWQgZ2V0
RmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8V2ViS2l0RmxhZ3M+ID0gMCwgUGFz
c1JlZlB0cjxFbnRyeUNhbGxiYWNrPiA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gPSAw
KTsKLSAgICB2b2lkIGdldERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8
V2ViS2l0RmxhZ3M+ID0gMCwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiA9IDAsIFBhc3NSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4gPSAwKTsKLSAgICB2b2lkIHJlbW92ZVJlY3Vyc2l2ZWx5KFBhc3NS
ZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSAwLCBQYXNzUmVmUHRyPEVycm9y
Q2FsbGJhY2s+ID0gMCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgRGlyZWN0b3J5RW50cnkoUGFz
c1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2Vu
ZGlmIC8vIERpcmVjdG9yeUVudHJ5X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGly
ZWN0b3J5RW50cnkuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGly
ZWN0b3J5RW50cnkuaWRsCShyZXZpc2lvbiAxMTA0NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0RpcmVjdG9yeUVudHJ5LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw0MyArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAq
IGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0g
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotbW9k
dWxlIHN0b3JhZ2UgewotICAgIGludGVyZmFjZSBbCi0gICAgICAgIENvbmRpdGlvbmFsPUZJTEVf
U1lTVEVNLAotICAgICAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCi0gICAgICAgIEpTR2Vu
ZXJhdGVUb0pTT2JqZWN0LAotICAgICAgICBKU05vU3RhdGljVGFibGVzCi0gICAgXSBEaXJlY3Rv
cnlFbnRyeSA6IEVudHJ5IHsKLSAgICAgICAgRGlyZWN0b3J5UmVhZGVyIGNyZWF0ZVJlYWRlcigp
OwotICAgICAgICBbQ3VzdG9tXSB2b2lkIGdldEZpbGUoaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJp
bmcsIFRyZWF0VW5kZWZpbmVkQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIHBhdGgsIGluIFtPcHRp
b25hbF0gV2ViS2l0RmxhZ3MgZmxhZ3MsIGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVudHJ5Q2Fs
bGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBpbiBbT3B0aW9uYWwsIENhbGxiYWNrXSBFcnJvckNhbGxi
YWNrIGVycm9yQ2FsbGJhY2spOwotICAgICAgICBbQ3VzdG9tXSB2b2lkIGdldERpcmVjdG9yeShp
biBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3RyaW5nXSBE
T01TdHJpbmcgcGF0aCwgaW4gW09wdGlvbmFsXSBXZWJLaXRGbGFncyBmbGFncywgaW4gW09wdGlv
bmFsLCBDYWxsYmFja10gRW50cnlDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIGluIFtPcHRpb25h
bCwgQ2FsbGJhY2tdIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7Ci0gICAgICAgIHZvaWQg
cmVtb3ZlUmVjdXJzaXZlbHkoaW4gW0NhbGxiYWNrXSBWb2lkQ2FsbGJhY2sgc3VjY2Vzc0NhbGxi
YWNrLCBpbiBbT3B0aW9uYWwsIENhbGxiYWNrXSBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2sp
OwotICAgIH07Ci19CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5
U3luYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlF
bnRyeVN5bmMuY3BwCShyZXZpc2lvbiAxMTA0NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0RpcmVjdG9yeUVudHJ5U3luYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsODkgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0g
KiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeVN5bmMuaCIKLQotI2lm
IEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkRpcmVjdG9yeVJlYWRlclN5bmMuaCIK
LSNpbmNsdWRlICJFbnRyeVN5bmMuaCIKLSNpbmNsdWRlICJGaWxlRW50cnlTeW5jLmgiCi0jaW5j
bHVkZSAiRmlsZUV4Y2VwdGlvbi5oIgotI2luY2x1ZGUgIlN5bmNDYWxsYmFja0hlbHBlci5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLURpcmVjdG9yeUVudHJ5U3luYzo6RGlyZWN0b3J5RW50
cnlTeW5jKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0
cmluZyYgZnVsbFBhdGgpCi0gICAgOiBFbnRyeVN5bmMoZmlsZVN5c3RlbSwgZnVsbFBhdGgpCi17
Ci19Ci0KLVBhc3NSZWZQdHI8RGlyZWN0b3J5UmVhZGVyU3luYz4gRGlyZWN0b3J5RW50cnlTeW5j
OjpjcmVhdGVSZWFkZXIoRXhjZXB0aW9uQ29kZSYpCi17Ci0gICAgcmV0dXJuIERpcmVjdG9yeVJl
YWRlclN5bmM6OmNyZWF0ZShtX2ZpbGVTeXN0ZW0sIG1fZnVsbFBhdGgpOwotfQotCi1QYXNzUmVm
UHRyPEZpbGVFbnRyeVN5bmM+IERpcmVjdG9yeUVudHJ5U3luYzo6Z2V0RmlsZShjb25zdCBTdHJp
bmcmIHBhdGgsIFBhc3NSZWZQdHI8V2ViS2l0RmxhZ3M+IGZsYWdzLCBFeGNlcHRpb25Db2RlJiBl
YykKLXsKLSAgICBlYyA9IDA7Ci0gICAgRW50cnlTeW5jQ2FsbGJhY2tIZWxwZXIgaGVscGVyKG1f
ZmlsZVN5c3RlbS0+YXN5bmNGaWxlU3lzdGVtKCkpOwotICAgIGlmICghbV9maWxlU3lzdGVtLT5n
ZXRGaWxlKHRoaXMsIHBhdGgsIGZsYWdzLCBoZWxwZXIuc3VjY2Vzc0NhbGxiYWNrKCksIGhlbHBl
ci5lcnJvckNhbGxiYWNrKCkpKSB7Ci0gICAgICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6SU5WQUxJ
RF9NT0RJRklDQVRJT05fRVJSOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJu
IHN0YXRpY19wb2ludGVyX2Nhc3Q8RmlsZUVudHJ5U3luYz4oaGVscGVyLmdldFJlc3VsdChlYykp
OwotfQotCi1QYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5U3luYz4gRGlyZWN0b3J5RW50cnlTeW5j
OjpnZXREaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPFdlYktpdEZsYWdz
PiBmbGFncywgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgZWMgPSAwOwotICAgIEVudHJ5U3lu
Y0NhbGxiYWNrSGVscGVyIGhlbHBlcihtX2ZpbGVTeXN0ZW0tPmFzeW5jRmlsZVN5c3RlbSgpKTsK
LSAgICBpZiAoIW1fZmlsZVN5c3RlbS0+Z2V0RGlyZWN0b3J5KHRoaXMsIHBhdGgsIGZsYWdzLCBo
ZWxwZXIuc3VjY2Vzc0NhbGxiYWNrKCksIGhlbHBlci5lcnJvckNhbGxiYWNrKCkpKSB7Ci0gICAg
ICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSOwotICAgICAg
ICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIHN0YXRpY19wb2ludGVyX2Nhc3Q8RGlyZWN0
b3J5RW50cnlTeW5jPihoZWxwZXIuZ2V0UmVzdWx0KGVjKSk7Ci19Ci0KLXZvaWQgRGlyZWN0b3J5
RW50cnlTeW5jOjpyZW1vdmVSZWN1cnNpdmVseShFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBl
YyA9IDA7Ci0gICAgVm9pZFN5bmNDYWxsYmFja0hlbHBlciBoZWxwZXIobV9maWxlU3lzdGVtLT5h
c3luY0ZpbGVTeXN0ZW0oKSk7Ci0gICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPnJlbW92ZVJlY3Vyc2l2
ZWx5KHRoaXMsIGhlbHBlci5zdWNjZXNzQ2FsbGJhY2soKSwgaGVscGVyLmVycm9yQ2FsbGJhY2so
KSkpIHsKLSAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpJTlZBTElEX01PRElGSUNBVElPTl9F
UlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaGVscGVyLmdldFJlc3VsdChlYyk7Ci19
Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRGlyZWN0b3J5RW50cnlTeW5jLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlFbnRyeVN5bmMuaAkocmV2aXNpb24gMTEwNDY1KQorKysg
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlFbnRyeVN5bmMuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw2OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
Ci0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBEaXJlY3RvcnlFbnRyeVN5bmNfaAotI2RlZmluZSBE
aXJlY3RvcnlFbnRyeVN5bmNfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVk
ZSAiRW50cnlTeW5jLmgiCi0jaW5jbHVkZSAiV2ViS2l0RmxhZ3MuaCIKLSNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBEaXJlY3RvcnlS
ZWFkZXJTeW5jOwotY2xhc3MgRmlsZUVudHJ5U3luYzsKLQotY2xhc3MgRGlyZWN0b3J5RW50cnlT
eW5jIDogcHVibGljIEVudHJ5U3luYyB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
RGlyZWN0b3J5RW50cnlTeW5jPiBjcmVhdGUoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4g
ZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgRGlyZWN0b3J5RW50cnlTeW5jKGZpbGVTeXN0ZW0sIGZ1bGxQYXRoKSk7
Ci0gICAgfQotICAgIHZpcnR1YWwgYm9vbCBpc0RpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KLQotICAgIFBhc3NSZWZQdHI8RGlyZWN0b3J5UmVhZGVyU3luYz4gY3JlYXRlUmVhZGVy
KEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPEZpbGVFbnRyeVN5bmM+IGdldEZpbGUo
Y29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPFdlYktpdEZsYWdzPiwgRXhjZXB0aW9uQ29k
ZSYpOwotICAgIFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnlTeW5jPiBnZXREaXJlY3RvcnkoY29u
c3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPFdlYktpdEZsYWdzPiwgRXhjZXB0aW9uQ29kZSYp
OwotICAgIHZvaWQgcmVtb3ZlUmVjdXJzaXZlbHkoRXhjZXB0aW9uQ29kZSYpOwotCi1wcml2YXRl
OgotICAgIGZyaWVuZCBjbGFzcyBFbnRyeVN5bmM7Ci0gICAgRGlyZWN0b3J5RW50cnlTeW5jKFBh
c3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+LCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKTsKLX07
Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2VuZGlmIC8vIERpcmVj
dG9yeUVudHJ5U3luY19oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeUVu
dHJ5U3luYy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3Rv
cnlFbnRyeVN5bmMuaWRsCShyZXZpc2lvbiAxMTA0NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0RpcmVjdG9yeUVudHJ5U3luYy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsNDMgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LW1vZHVsZSBzdG9yYWdlIHsKLSAgICBpbnRlcmZhY2UgWwotICAgICAgICBDb25kaXRpb25hbD1G
SUxFX1NZU1RFTSwKLSAgICAgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAotICAgICAgICBK
U0dlbmVyYXRlVG9KU09iamVjdCwKLSAgICAgICAgSlNOb1N0YXRpY1RhYmxlcwotICAgIF0gRGly
ZWN0b3J5RW50cnlTeW5jIDogRW50cnlTeW5jIHsKLSAgICAgICAgRGlyZWN0b3J5UmVhZGVyU3lu
YyBjcmVhdGVSZWFkZXIoKSByYWlzZXMgKEZpbGVFeGNlcHRpb24pOwotICAgICAgICBbQ3VzdG9t
XSBGaWxlRW50cnlTeW5jIGdldEZpbGUoaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0
VW5kZWZpbmVkQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIHBhdGgsIGluIFdlYktpdEZsYWdzIGZs
YWdzKSByYWlzZXMgKEZpbGVFeGNlcHRpb24pOwotICAgICAgICBbQ3VzdG9tXSBEaXJlY3RvcnlF
bnRyeVN5bmMgZ2V0RGlyZWN0b3J5KGluIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBUcmVhdFVu
ZGVmaW5lZEFzPU51bGxTdHJpbmddIERPTVN0cmluZyBwYXRoLCBpbiBXZWJLaXRGbGFncyBmbGFn
cykgcmFpc2VzIChGaWxlRXhjZXB0aW9uKTsKLSAgICAgICAgdm9pZCByZW1vdmVSZWN1cnNpdmVs
eSgpIHJhaXNlcyAoRmlsZUV4Y2VwdGlvbik7Ci0gICAgfTsKLX0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlci5jcHAJKHJldmlzaW9uIDExMDQ2NSkKKysrIFNv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0g
KiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0g
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRpcmVjdG9yeVJl
YWRlci5oIgotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiRW50cmllc0Nh
bGxiYWNrLmgiCi0jaW5jbHVkZSAiRW50cnlBcnJheS5oIgotI2luY2x1ZGUgIkVycm9yQ2FsbGJh
Y2suaCIKLSNpbmNsdWRlICJGaWxlRXJyb3IuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1E
aXJlY3RvcnlSZWFkZXI6OkRpcmVjdG9yeVJlYWRlcihQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1C
YXNlPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQotICAgIDogRGlyZWN0b3J5
UmVhZGVyQmFzZShmaWxlU3lzdGVtLCBmdWxsUGF0aCkKLXsKLX0KLQotdm9pZCBEaXJlY3RvcnlS
ZWFkZXI6OnJlYWRFbnRyaWVzKFBhc3NSZWZQdHI8RW50cmllc0NhbGxiYWNrPiBlbnRyaWVzQ2Fs
bGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKLXsKLSAgICBp
ZiAoIW1faGFzTW9yZUVudHJpZXMpIHsKLSAgICAgICAgZmlsZXN5c3RlbSgpLT5zY2hlZHVsZUNh
bGxiYWNrKGVudHJpZXNDYWxsYmFjaywgRW50cnlBcnJheTo6Y3JlYXRlKCkpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIGZpbGVzeXN0ZW0oKS0+cmVhZERpcmVjdG9yeSh0aGlzLCBtX2Z1
bGxQYXRoLCBlbnRyaWVzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwotfQotCi19Ci0KLSNlbmRp
ZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Rp
cmVjdG9yeVJlYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGly
ZWN0b3J5UmVhZGVyLmgJKHJldmlzaW9uIDExMDQ2NSkKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRGlyZWN0b3J5UmVhZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNjcgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBk
aXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5k
ZWYgRGlyZWN0b3J5UmVhZGVyX2gKLSNkZWZpbmUgRGlyZWN0b3J5UmVhZGVyX2gKLQotI2lmIEVO
QUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRl
ICJEaXJlY3RvcnlSZWFkZXJCYXNlLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRW50cmllc0NhbGxiYWNrOwotY2xhc3MgRW50
cmllc0NhbGxiYWNrczsKLWNsYXNzIEVycm9yQ2FsbGJhY2s7Ci0KLWNsYXNzIERpcmVjdG9yeVJl
YWRlciA6IHB1YmxpYyBEaXJlY3RvcnlSZWFkZXJCYXNlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxEaXJlY3RvcnlSZWFkZXI+IGNyZWF0ZShQYXNzUmVmUHRyPERPTUZpbGVTeXN0
ZW1CYXNlPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEaXJlY3RvcnlSZWFkZXIoZmlsZVN5c3RlbSwgZnVsbFBh
dGgpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHJlYWRFbnRyaWVzKFBhc3NSZWZQdHI8RW50cmllc0Nh
bGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiA9IDApOwotCi0gICAgRE9NRmlsZVN5
c3RlbSogZmlsZXN5c3RlbSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PERPTUZpbGVTeXN0
ZW0qPihtX2ZpbGVTeXN0ZW0uZ2V0KCkpOyB9Ci0KLXByaXZhdGU6Ci0gICAgRGlyZWN0b3J5UmVh
ZGVyKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+LCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRo
KTsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2VuZGlmIC8v
IERpcmVjdG9yeVJlYWRlcl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9y
eVJlYWRlci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3Rv
cnlSZWFkZXIuaWRsCShyZXZpc2lvbiAxMTA0NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0RpcmVjdG9yeVJlYWRlci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsMzggKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBk
aXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLW1vZHVs
ZSBzdG9yYWdlIHsKLSAgICBpbnRlcmZhY2UgWwotICAgICAgICBDb25kaXRpb25hbD1GSUxFX1NZ
U1RFTSwKLSAgICAgICAgSlNOb1N0YXRpY1RhYmxlcwotICAgIF0gRGlyZWN0b3J5UmVhZGVyIHsK
LSAgICAgICAgdm9pZCByZWFkRW50cmllcyhpbiBbQ2FsbGJhY2tdIEVudHJpZXNDYWxsYmFjayBz
dWNjZXNzQ2FsbGJhY2ssIGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVycm9yQ2FsbGJhY2sgZXJy
b3JDYWxsYmFjayk7Ci0gICAgfTsKLX0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGly
ZWN0b3J5UmVhZGVyQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
RGlyZWN0b3J5UmVhZGVyQmFzZS5oCShyZXZpc2lvbiAxMTA0NjUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlckJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2OCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0g
KgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2lmbmRlZiBEaXJlY3RvcnlSZWFkZXJCYXNlX2gKLSNkZWZpbmUgRGlyZWN0b3J5UmVh
ZGVyQmFzZV9oCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJET01GaWxl
U3lzdGVtQmFzZS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIERpcmVjdG9yeVJlYWRlckJhc2UgOiBwdWJsaWMgUmVmQ291bnRl
ZDxEaXJlY3RvcnlSZWFkZXJCYXNlPiB7Ci1wdWJsaWM6Ci0gICAgRE9NRmlsZVN5c3RlbUJhc2Uq
IGZpbGVzeXN0ZW0oKSBjb25zdCB7IHJldHVybiBtX2ZpbGVTeXN0ZW0uZ2V0KCk7IH0KLSAgICB2
b2lkIHNldEhhc01vcmVFbnRyaWVzKGJvb2wgaGFzTW9yZUVudHJpZXMpIHsgbV9oYXNNb3JlRW50
cmllcyA9IGhhc01vcmVFbnRyaWVzOyB9Ci0KLXByb3RlY3RlZDoKLSAgICBEaXJlY3RvcnlSZWFk
ZXJCYXNlKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0
cmluZyYgZnVsbFBhdGgpCi0gICAgICAgIDogbV9maWxlU3lzdGVtKGZpbGVTeXN0ZW0pCi0gICAg
ICAgICwgbV9mdWxsUGF0aChmdWxsUGF0aCkKLSAgICAgICAgLCBtX2hhc01vcmVFbnRyaWVzKHRy
dWUpCi0gICAgewotICAgIH0KLQotICAgIFJlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gbV9maWxl
U3lzdGVtOwotCi0gICAgLy8gVGhpcyBpcyBhIHZpcnR1YWwgcGF0aC4KLSAgICBTdHJpbmcgbV9m
dWxsUGF0aDsKLQotICAgIGJvb2wgbV9oYXNNb3JlRW50cmllczsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2VuZGlmIC8v
IERpcmVjdG9yeVJlYWRlckJhc2VfaApJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJl
Y3RvcnlSZWFkZXJTeW5jLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0RpcmVjdG9yeVJlYWRlclN5bmMuY3BwCShyZXZpc2lvbiAxMTA0NjUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDY4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1l
dDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRGlyZWN0b3J5UmVhZGVy
U3luYy5oIgotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiRGlyZWN0b3J5
RW50cnkuaCIKLSNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeVN5bmMuaCIKLSNpbmNsdWRlICJFbnRy
eUFycmF5U3luYy5oIgotI2luY2x1ZGUgIkVudHJ5U3luYy5oIgotI2luY2x1ZGUgIkZpbGVFbnRy
eVN5bmMuaCIKLSNpbmNsdWRlICJGaWxlRXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiU3luY0NhbGxi
YWNrSGVscGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotRGlyZWN0b3J5UmVhZGVyU3lu
Yzo6RGlyZWN0b3J5UmVhZGVyU3luYyhQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBmaWxl
U3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQotICAgIDogRGlyZWN0b3J5UmVhZGVyQmFz
ZShmaWxlU3lzdGVtLCBmdWxsUGF0aCkKLXsKLX0KLQotUGFzc1JlZlB0cjxFbnRyeUFycmF5U3lu
Yz4gRGlyZWN0b3J5UmVhZGVyU3luYzo6cmVhZEVudHJpZXMoRXhjZXB0aW9uQ29kZSYgZWMpCi17
Ci0gICAgZWMgPSAwOwotICAgIGlmICghbV9oYXNNb3JlRW50cmllcykKLSAgICAgICAgcmV0dXJu
IEVudHJ5QXJyYXlTeW5jOjpjcmVhdGUoKTsKLQotICAgIEVudHJpZXNTeW5jQ2FsbGJhY2tIZWxw
ZXIgaGVscGVyKG1fZmlsZVN5c3RlbS0+YXN5bmNGaWxlU3lzdGVtKCkpOwotICAgIGlmICghbV9m
aWxlU3lzdGVtLT5yZWFkRGlyZWN0b3J5KHRoaXMsIG1fZnVsbFBhdGgsIGhlbHBlci5zdWNjZXNz
Q2FsbGJhY2soKSwgaGVscGVyLmVycm9yQ2FsbGJhY2soKSkpIHsKLSAgICAgICAgZWMgPSBGaWxl
RXhjZXB0aW9uOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlI7Ci0gICAgICAgIHNldEhhc01vcmVF
bnRyaWVzKGZhbHNlKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiBoZWxw
ZXIuZ2V0UmVzdWx0KGVjKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UKLQotI2VuZGlmIC8vIEVOQUJM
RShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5UmVh
ZGVyU3luYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5
UmVhZGVyU3luYy5oCShyZXZpc2lvbiAxMTA0NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0RpcmVjdG9yeVJlYWRlclN5bmMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2NCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAq
IGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0g
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lm
bmRlZiBEaXJlY3RvcnlSZWFkZXJTeW5jX2gKLSNkZWZpbmUgRGlyZWN0b3J5UmVhZGVyU3luY19o
Ci0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJEaXJlY3RvcnlSZWFkZXJC
YXNlLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY2xhc3MgRW50cnlBcnJheVN5bmM7Ci0KLXR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7
Ci0KLWNsYXNzIERpcmVjdG9yeVJlYWRlclN5bmMgOiBwdWJsaWMgRGlyZWN0b3J5UmVhZGVyQmFz
ZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RGlyZWN0b3J5UmVhZGVyU3luYz4g
Y3JlYXRlKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0
cmluZyYgZnVsbFBhdGgpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERpcmVj
dG9yeVJlYWRlclN5bmMoZmlsZVN5c3RlbSwgZnVsbFBhdGgpKTsKLSAgICB9Ci0KLSAgICBQYXNz
UmVmUHRyPEVudHJ5QXJyYXlTeW5jPiByZWFkRW50cmllcyhFeGNlcHRpb25Db2RlJik7Ci0KLXBy
aXZhdGU6Ci0gICAgRGlyZWN0b3J5UmVhZGVyU3luYyhQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1C
YXNlPiwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCk7Ci19OwotCi19IC8vIG5hbWVzcGFjZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gRGlyZWN0b3J5UmVhZGVy
U3luY19oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlclN5bmMu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5UmVhZGVy
U3luYy5pZGwJKHJldmlzaW9uIDExMDQ2NSkKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGly
ZWN0b3J5UmVhZGVyU3luYy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsMzggKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBk
aXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLW1vZHVs
ZSBzdG9yYWdlIHsKLSAgICBpbnRlcmZhY2UgWwotICAgICAgICBDb25kaXRpb25hbD1GSUxFX1NZ
U1RFTSwKLSAgICAgICAgSlNOb1N0YXRpY1RhYmxlcwotICAgIF0gRGlyZWN0b3J5UmVhZGVyU3lu
YyB7Ci0gICAgICAgIEVudHJ5QXJyYXlTeW5jIHJlYWRFbnRyaWVzKCkgcmFpc2VzIChGaWxlRXhj
ZXB0aW9uKTsKLSAgICB9OwotfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131500</attachid>
            <date>2012-03-12 20:04:53 -0700</date>
            <delta_ts>2012-03-13 12:12:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80625-20120312230440.patch</filename>
            <type>text/plain</type>
            <size>105394</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMDUxMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDEyLTAzLTEyICBNYXJrIFBp
bGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBNb3ZlIERpcmVjdG9yeUVu
dHJ5IGFuZCBEaXJlY3RvcnlSZWFkZXIgdG8gbmV3IE1vZHVsZXMvZmlsZXN5c3RlbS8gZGlyZWN0
b3J5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDYy
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cywgYWxsIGV4aXN0aW5nIHRlc3RzIHBhc3MuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLnByaToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5saXN0LmFtOgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbTogQWRkZWQuCisgICAg
ICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmNwcDogQ29waWVkIGZyb20g
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5jcHAuCisgICAgICAgICogTW9k
dWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRGlyZWN0b3J5RW50cnkuaC4KKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0
ZW0vRGlyZWN0b3J5RW50cnkuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0RpcmVjdG9yeUVudHJ5LmlkbC4KKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0
b3J5RW50cnlTeW5jLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJl
Y3RvcnlFbnRyeVN5bmMuY3BwLgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3Rv
cnlFbnRyeVN5bmMuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3Rv
cnlFbnRyeVN5bmMuaC4KKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50
cnlTeW5jLmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlF
bnRyeVN5bmMuaWRsLgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFk
ZXIuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRl
ci5jcHAuCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlci5oLgorICAg
ICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXIuaWRsOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlci5pZGwuCisgICAgICAgICog
TW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlckJhc2UuaDogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJCYXNlLmguCisgICAgICAgICogTW9k
dWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuY3BwOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuY3BwLgorICAgICAgICAqIE1v
ZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyU3luYy5oLgorICAgICAgICAqIE1vZHVs
ZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmlkbDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJTeW5jLmlkbC4KKyAgICAgICAgKiBUYXJn
ZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwOgorICAgICAgICAqIFdl
YkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnByaToKKyAgICAgICAgKiBXZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5oOiBSZW1vdmVkLgorICAgICAgICAq
IGZpbGVhcGkvRGlyZWN0b3J5RW50cnkuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIGZpbGVhcGkv
RGlyZWN0b3J5RW50cnlTeW5jLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBmaWxlYXBpL0RpcmVj
dG9yeUVudHJ5U3luYy5oOiBSZW1vdmVkLgorICAgICAgICAqIGZpbGVhcGkvRGlyZWN0b3J5RW50
cnlTeW5jLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmaWxlYXBpL0RpcmVjdG9yeVJlYWRlci5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXIuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBmaWxlYXBpL0RpcmVjdG9yeVJlYWRlci5pZGw6IFJlbW92ZWQuCisgICAg
ICAgICogZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJCYXNlLmg6IFJlbW92ZWQuCisgICAgICAgICog
ZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJTeW5jLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBmaWxl
YXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBmaWxlYXBpL0Rp
cmVjdG9yeVJlYWRlclN5bmMuaWRsOiBSZW1vdmVkLgorCiAyMDEyLTAzLTEyICBTaGVyaWZmIEJv
dCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBy
b2xsaW5nIG91dCByMTEwNTAxLgpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEx
MDQ2NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNiBAQAogU0VUKFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dF
QkNPUkVfRElSfSIKKyAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9maWxlc3lzdGVtIgogICAg
ICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL2dlb2xvY2F0aW9uIgogICAgICIke1dFQkNPUkVfRElS
fS9Nb2R1bGVzL2luZGV4ZWRkYiIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy93ZWJkYXRh
YmFzZSIKQEAgLTkyLDYgKzkzLDcgQEAgU0VUKFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwog
KQogCiBTRVQoV2ViQ29yZV9JRExfSU5DTFVERVMKKyAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0KICAg
ICBNb2R1bGVzL2dlb2xvY2F0aW9uCiAgICAgTW9kdWxlcy9pbmRleGVkZGIKICAgICBNb2R1bGVz
L3dlYmRhdGFiYXNlCkBAIC0xNjM2LDEwICsxNjM4LDEwIEBAIEVORElGICgpCiAKIGlmIChFTkFC
TEVfRklMRV9TWVNURU0pCiAgICAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCi0gICAgICAg
IGZpbGVhcGkvRGlyZWN0b3J5RW50cnkuY3BwCi0gICAgICAgIGZpbGVhcGkvRGlyZWN0b3J5RW50
cnlTeW5jLmNwcAotICAgICAgICBmaWxlYXBpL0RpcmVjdG9yeVJlYWRlci5jcHAKLSAgICAgICAg
ZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJTeW5jLmNwcAorICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0
ZW0vRGlyZWN0b3J5RW50cnkuY3BwCisgICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3Rv
cnlFbnRyeVN5bmMuY3BwCisgICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFk
ZXIuY3BwCisgICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmNw
cAogICAgICAgICBmaWxlYXBpL0RPTUZpbGVQYXRoLmNwcAogICAgICAgICBmaWxlYXBpL0RPTUZp
bGVTeXN0ZW0uY3BwCiAgICAgICAgIGZpbGVhcGkvRE9NRmlsZVN5c3RlbUJhc2UuY3BwCkBAIC0x
NjYxLDEwICsxNjYzLDEwIEBAIGlmIChFTkFCTEVfRklMRV9TWVNURU0pCiAgICAgICAgIHBsYXRm
b3JtL0FzeW5jRmlsZVN5c3RlbS5jcHAKICAgICApCiAgICAgTElTVChBUFBFTkQgV2ViQ29yZV9J
RExfRklMRVMKLSAgICAgICAgZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5pZGwKLSAgICAgICAgZmls
ZWFwaS9EaXJlY3RvcnlFbnRyeVN5bmMuaWRsCi0gICAgICAgIGZpbGVhcGkvRGlyZWN0b3J5UmVh
ZGVyLmlkbAotICAgICAgICBmaWxlYXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuaWRsCisgICAgICAg
IE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5pZGwKKyAgICAgICAgTW9kdWxlcy9m
aWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5pZGwKKyAgICAgICAgTW9kdWxlcy9maWxlc3lz
dGVtL0RpcmVjdG9yeVJlYWRlci5pZGwKKyAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVj
dG9yeVJlYWRlclN5bmMuaWRsCiAgICAgICAgIGZpbGVhcGkvRE9NRmlsZVN5c3RlbS5pZGwKICAg
ICAgICAgZmlsZWFwaS9ET01GaWxlU3lzdGVtU3luYy5pZGwKICAgICAgICAgZmlsZWFwaS9ET01X
aW5kb3dGaWxlU3lzdGVtLmlkbApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShy
ZXZpc2lvbiAxMTA0NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKIFZQQVRIID0gXAogICAgICQoV2ViQ29y
ZSkgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtIFwKICAgICAkKFdlYkNvcmUp
L01vZHVsZXMvZ2VvbG9jYXRpb24gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9pbmRleGVkZGIg
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJkYXRhYmFzZSBcCkBAIC0xOTUsMTAgKzE5Niwx
MCBAQCBCSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9maWxlYXBpL0RPTUZpbGVTeXN0
ZW0uaWRsIFwKICAgICAkKFdlYkNvcmUpL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuaWRsIFwK
ICAgICAkKFdlYkNvcmUpL2ZpbGVhcGkvRE9NV2luZG93RmlsZVN5c3RlbS5pZGwgXAotICAgICQo
V2ViQ29yZSkvZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5pZGwgXAotICAgICQoV2ViQ29yZSkvZmls
ZWFwaS9EaXJlY3RvcnlFbnRyeVN5bmMuaWRsIFwKLSAgICAkKFdlYkNvcmUpL2ZpbGVhcGkvRGly
ZWN0b3J5UmVhZGVyLmlkbCBcCi0gICAgJChXZWJDb3JlKS9maWxlYXBpL0RpcmVjdG9yeVJlYWRl
clN5bmMuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlF
bnRyeS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVu
dHJ5U3luYy5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9y
eVJlYWRlci5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9y
eVJlYWRlclN5bmMuaWRsIFwKICAgICAkKFdlYkNvcmUpL2ZpbGVhcGkvRW50cmllc0NhbGxiYWNr
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9maWxlYXBpL0VudHJ5LmlkbCBcCiAgICAgJChXZWJDb3Jl
KS9maWxlYXBpL0VudHJ5QXJyYXkuaWRsIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5w
cmkJKHJldmlzaW9uIDExMDQ2NSkKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnBy
aQkod29ya2luZyBjb3B5KQpAQCAtMjE2LDEwICsyMTYsMTAgQEAgSURMX0JJTkRJTkdTICs9IFwK
ICAgICAkJFBXRC9kb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmlkbCBcCiAgICAgJCRQV0QvZG9t
L1doZWVsRXZlbnQuaWRsIFwKICAgICAkJFBXRC9maWxlYXBpL0Jsb2IuaWRsIFwKLSAgICAkJFBX
RC9maWxlYXBpL0RpcmVjdG9yeUVudHJ5LmlkbCBcCi0gICAgJCRQV0QvZmlsZWFwaS9EaXJlY3Rv
cnlFbnRyeVN5bmMuaWRsIFwKLSAgICAkJFBXRC9maWxlYXBpL0RpcmVjdG9yeVJlYWRlci5pZGwg
XAotICAgICQkUFdEL2ZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyU3luYy5pZGwgXAorICAgICQkUFdE
L01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5pZGwgXAorICAgICQkUFdEL01vZHVs
ZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5bmMuaWRsIFwKKyAgICAkJFBXRC9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmlkbCBcCisgICAgJCRQV0QvTW9kdWxlcy9maWxl
c3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuaWRsIFwKICAgICAkJFBXRC9maWxlYXBpL0RPTUZp
bGVTeXN0ZW0uaWRsIFwKICAgICAkJFBXRC9maWxlYXBpL0RPTUZpbGVTeXN0ZW1TeW5jLmlkbCBc
CiAgICAgJCRQV0QvZmlsZWFwaS9ET01XaW5kb3dGaWxlU3lzdGVtLmlkbCBcCkBAIC02OTYsNiAr
Njk2LDcgQEAgZWxzZTogZ2VuZXJhdG9yID0gSlMKIGdlbmVyYXRlQmluZGluZ3MuY29tbWFuZHMg
PSBwZXJsIC1JJCRQV0QvYmluZGluZ3Mvc2NyaXB0cyAkJGdlbmVyYXRlQmluZGluZ3Muc2NyaXB0
IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWRlZmluZXMgXCIkJHtGRUFUVVJFX0RF
RklORVNfSkFWQVNDUklQVH1cIiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1nZW5l
cmF0b3IgJCRnZW5lcmF0b3IgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0taW5jbHVk
ZSAkJFBXRC9Nb2R1bGVzL2ZpbGVzeXN0ZW0gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC0taW5jbHVkZSAkJFBXRC9Nb2R1bGVzL2dlb2xvY2F0aW9uIFwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAtLWluY2x1ZGUgJCRQV0QvTW9kdWxlcy9pbmRleGVkZGIgXAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC0taW5jbHVkZSAkJFBXRC9Nb2R1bGVzL3dlYmRhdGFiYXNlIFwK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiAxMTA0NjUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMTEsNiArMTEsNyBAQCB3ZWJj
b3JlX2NwcGZsYWdzICs9IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9p
bmNsdWRlIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dM
U0xBTkcgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlIFwKKwktSSQoc3JjZGlyKS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtIFwKQEAgLTQ3Myw3ICs0NzQsNyBAQCBGRUFUVVJFX0RFRklORVMgKz0gRU5BQkxF
X01BVEhNTD0xCiB3ZWJjb3JlX2NwcGZsYWdzICs9IC1ERU5BQkxFX01BVEhNTD0xCiBlbmRpZiAj
IEVORCBFTkFCTEVfTUFUSE1MCiAKLSMgTWF0aE1MIHRhZyBhbmQgYXR0cmlidXRlIG5hbWVzLCBh
bmQgZWxlbWVudCBmYWN0b3J5IAorIyBNYXRoTUwgdGFnIGFuZCBhdHRyaWJ1dGUgbmFtZXMsIGFu
ZCBlbGVtZW50IGZhY3RvcnkKIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvTWF0aE1MRWxlbWVudEZh
Y3RvcnkuaDogRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9NYXRoTUxFbGVtZW50RmFjdG9yeS5jcHAK
IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvTWF0aE1MTmFtZXMuaDogRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9NYXRoTUxOYW1lcy5jcHAKIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvTWF0aE1MRWxlbWVu
dEZhY3RvcnkuY3BwIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvTWF0aE1MTmFtZXMuY3BwOiAkKFdl
YkNvcmUpL2RvbS9tYWtlX25hbWVzLnBsICQoV2ViQ29yZSkvbWF0aG1sL21hdGh0YWdzLmluICQo
V2ViQ29yZSkvbWF0aG1sL21hdGhhdHRycy5pbgpAQCAtNDk1LDcgKzQ5Niw3IEBAIGVuZGlmICMg
RU5EIEVOQUJMRV9OT1RJRklDQVRJT05TCiBpZiBFTkFCTEVfU1ZHCiBGRUFUVVJFX0RFRklORVMg
Kz0gRU5BQkxFX1NWRz0xCiB3ZWJjb3JlX2NwcGZsYWdzICs9IC1ERU5BQkxFX1NWRz0xCi1XRUJD
T1JFX0NTU19QUk9QRVJUWV9OQU1FUyArPSAkKFdlYkNvcmUpL2Nzcy9TVkdDU1NQcm9wZXJ0eU5h
bWVzLmluIAorV0VCQ09SRV9DU1NfUFJPUEVSVFlfTkFNRVMgKz0gJChXZWJDb3JlKS9jc3MvU1ZH
Q1NTUHJvcGVydHlOYW1lcy5pbgogV0VCQ09SRV9DU1NfVkFMVUVfS0VZV09SRFMgKz0gJChXZWJD
b3JlKS9jc3MvU1ZHQ1NTVmFsdWVLZXl3b3Jkcy5pbgogCiAjIFNWRyBGZWF0dXJlcwpAQCAtNzc4
LDYgKzc3OSw3IEBAIERlcml2ZWRTb3VyY2VzL0FOR0xFL2dsc2xhbmdfdGFiLmNwcDogU28KIERl
cml2ZWRTb3VyY2VzL0FOR0xFL2dsc2xhbmdfdGFiLmg6IERlcml2ZWRTb3VyY2VzL0FOR0xFL2ds
c2xhbmdfdGFiLmNwcAogCiBJRExfUEFUSCA6PSBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9nZW9sb2NhdGlvbiBcCiAgICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL2luZGV4ZWRkYiBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlh
c3RyZWFtIFwKQEAgLTgyNyw3ICs4MjksNyBAQCBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTJS5o
OiAlLmlkbCAkKFNDCiAJJChBTV9WX0dFTikkKFBFUkwpIC1JJChXZWJDb3JlKS9iaW5kaW5ncy9z
Y3JpcHRzICQoV2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbCAk
KElETF9QQVRIOiU9LS1pbmNsdWRlICIlIikgLS1vdXRwdXREaXIgIiQoR0VOU09VUkNFU19XRUJD
T1JFKSIgLS1kZWZpbmVzICJMQU5HVUFHRV9KQVZBU0NSSVBUPTEgJChGRUFUVVJFX0RFRklORVMp
IiAtLWdlbmVyYXRvciBKUyAtLXN1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlICQoc3VwcGxlbWVu
dGFsX2RlcGVuZGVuY3lfZmlsZSkgJDwKIAogIyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc2Mzg4Ci0jIFdlIG5lZWQgdG8gaW50cm9kdWNlIGEgbWFudWFsIGRl
cGVuZGVuY3kgdG8gcHJldmVudCBub24tZ2VuZXJhdGVkIHNvdXJjZXMgZnJvbSAKKyMgV2UgbmVl
ZCB0byBpbnRyb2R1Y2UgYSBtYW51YWwgZGVwZW5kZW5jeSB0byBwcmV2ZW50IG5vbi1nZW5lcmF0
ZWQgc291cmNlcyBmcm9tCiAjIHRyeWluZyB0byBidWlsZCBiZWZvcmUgdGhlIGdlbmVyYXRlZCBv
bmVzLiBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlIHN1cHBsZW1lbnRhbAogIyBJREwgZ2VuZXJhdGlv
biB0YWtlcyBhIGxvbmcgdGltZS4gVGhlIHBpcGUgcmVwcmVzZW50cyBhbiBvcmRlci1vbmx5IGRl
cGVuZGVuY3ksCiAjIHdoaWNoIG1lYW5zIHRoYXQgR05VbWFrZSB3aWxsIG9ubHkgdHJ5IHRvIGJ1
aWxkIHRoZSBkZXBlbmRlbmNpZXMgZmlyc3QsIGJ1dApJbmRleDogU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCShyZXZpc2lvbiAxMTA0NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yMDM5LDE0ICsyMDM5LDE0IEBAIHdlYmNvcmVf
c291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmggXAogCVNvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvQmxvYlVSTC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxv
YlVSTC5oIFwKLQlTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5LmNwcCBcCi0J
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5oIFwKLQlTb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5U3luYy5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRGlyZWN0b3J5RW50cnlTeW5jLmggXAotCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0
b3J5UmVhZGVyLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXIu
aCBcCi0JU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJTeW5jLmNwcCBcCi0J
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJTeW5jLmggXAorCVNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5jcHAgXAorCVNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmNwcCBcCisJU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5oIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmNwcCBcCisJU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5oIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyU3luYy5jcHAgXAor
CVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmgg
XAogCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVBhdGguY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0RPTUZpbGVQYXRoLmggXAogCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9N
RmlsZVN5c3RlbS5jcHAgXApAQCAtNDg3NSwxMCArNDg3NSwxMCBAQCBkb21fYmluZGluZ19pZGxz
ICs9IFwKIAkkKFdlYkNvcmUpL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5pZGwgXAogCSQoV2ViQ29y
ZSkvZmlsZWFwaS9ET01GaWxlU3lzdGVtU3luYy5pZGwgXAogCSQoV2ViQ29yZSkvZmlsZWFwaS9E
T01XaW5kb3dGaWxlU3lzdGVtLmlkbCBcCi0JJChXZWJDb3JlKS9maWxlYXBpL0RpcmVjdG9yeUVu
dHJ5LmlkbCBcCi0JJChXZWJDb3JlKS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5U3luYy5pZGwgXAot
CSQoV2ViQ29yZSkvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXIuaWRsIFwKLQkkKFdlYkNvcmUpL2Zp
bGVhcGkvRGlyZWN0b3J5UmVhZGVyU3luYy5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9maWxl
c3lzdGVtL0RpcmVjdG9yeUVudHJ5LmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRGlyZWN0b3J5UmVhZGVyLmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RGlyZWN0b3J5UmVhZGVyU3luYy5pZGwgXAogCSQoV2ViQ29yZSkvZmlsZWFwaS9FbnRyaWVzQ2Fs
bGJhY2suaWRsIFwKIAkkKFdlYkNvcmUpL2ZpbGVhcGkvRW50cnkuaWRsIFwKIAkkKFdlYkNvcmUp
L2ZpbGVhcGkvRW50cnlBcnJheS5pZGwgXApAQCAtNTgyNiw3ICs1ODI2LDcgQEAgd2ViY29yZV9z
b3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckltYWdlQnVmZmVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmggXAotCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5o
IAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllci5oCiB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1RleHR1cmVNYXBwZXJDYWlyby5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1RleHR1cmVNYXBwZXJDYWlyby5oCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDExMDQ2NSkKKysrIFNvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTY2OSwxMCArNjY5LDEwIEBAIFNPVVJDRVMgKz0gXAog
ICAgIGZpbGVhcGkvRE9NRmlsZVN5c3RlbUJhc2UuY3BwIFwKICAgICBmaWxlYXBpL0RPTUZpbGVT
eXN0ZW1TeW5jLmNwcCBcCiAgICAgZmlsZWFwaS9ET01XaW5kb3dGaWxlU3lzdGVtLmNwcCBcCi0g
ICAgZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5jcHAgXAotICAgIGZpbGVhcGkvRGlyZWN0b3J5RW50
cnlTeW5jLmNwcCBcCi0gICAgZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXIuY3BwIFwKLSAgICBmaWxl
YXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuY3BwIFwKKyAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGly
ZWN0b3J5RW50cnkuY3BwIFwKKyAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlT
eW5jLmNwcCBcCisgICAgTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5jcHAgXAor
ICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmNwcCBcCiAgICAgZmls
ZWFwaS9FbnRyeS5jcHAgXAogICAgIGZpbGVhcGkvRW50cnlBcnJheS5jcHAgXAogICAgIGZpbGVh
cGkvRW50cnlBcnJheVN5bmMuY3BwIFwKQEAgLTMwNjAsMTEgKzMwNjAsMTEgQEAgY29udGFpbnMo
REVGSU5FUywgRU5BQkxFX0RBVEFfVFJBTlNGRVJfSQogY29udGFpbnMoREVGSU5FUywgRU5BQkxF
X0ZJTEVfU1lTVEVNPTEpIHsKICAgICBIRUFERVJTICs9IFwKICAgICAgICAgZmlsZWFwaS9Bc3lu
Y0ZpbGVXcml0ZXIuaCBcCi0gICAgICAgIGZpbGVhcGkvRGlyZWN0b3J5RW50cnkuaCBcCi0gICAg
ICAgIGZpbGVhcGkvRGlyZWN0b3J5RW50cnlTeW5jLmggXAotICAgICAgICBmaWxlYXBpL0RpcmVj
dG9yeVJlYWRlci5oIFwKLSAgICAgICAgZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJCYXNlLmggXAot
ICAgICAgICBmaWxlYXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuaCBcCisgICAgICAgIE1vZHVsZXMv
ZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5oIFwKKyAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVt
L0RpcmVjdG9yeUVudHJ5U3luYy5oIFwKKyAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVj
dG9yeVJlYWRlci5oIFwKKyAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRl
ckJhc2UuaCBcCisgICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5j
LmggXAogICAgICAgICBmaWxlYXBpL0RPTUZpbGVQYXRoLmggXAogICAgICAgICBmaWxlYXBpL0RP
TUZpbGVTeXN0ZW0uaCBcCiAgICAgICAgIGZpbGVhcGkvRE9NRmlsZVN5c3RlbUJhc2UuaCBcCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxMTA0NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTg4NiwxMCArODg2LDEwIEBACiAgICAgICAg
ICAgICAnZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5pZGwnLAogICAgICAgICAgICAgJ2RvbS9X
aGVlbEV2ZW50LmlkbCcsCiAgICAgICAgICAgICAnZmlsZWFwaS9CbG9iLmlkbCcsCi0gICAgICAg
ICAgICAnZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5pZGwnLAotICAgICAgICAgICAgJ2ZpbGVhcGkv
RGlyZWN0b3J5RW50cnlTeW5jLmlkbCcsCi0gICAgICAgICAgICAnZmlsZWFwaS9EaXJlY3RvcnlS
ZWFkZXIuaWRsJywKLSAgICAgICAgICAgICdmaWxlYXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuaWRs
JywKKyAgICAgICAgICAgICdNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnkuaWRsJywK
KyAgICAgICAgICAgICdNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmlkbCcs
CisgICAgICAgICAgICAnTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5pZGwnLAor
ICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmlkbCcs
CiAgICAgICAgICAgICAnZmlsZWFwaS9ET01GaWxlU3lzdGVtLmlkbCcsCiAgICAgICAgICAgICAn
ZmlsZWFwaS9ET01GaWxlU3lzdGVtU3luYy5pZGwnLAogICAgICAgICAgICAgJ2ZpbGVhcGkvRE9N
V2luZG93RmlsZVN5c3RlbS5pZGwnLApAQCAtMjQ0MSwxNSArMjQ0MSwxNSBAQAogICAgICAgICAg
ICAgJ2ZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuaCcsCiAgICAgICAgICAgICAnZmlsZWFwaS9E
T01XaW5kb3dGaWxlU3lzdGVtLmNwcCcsCiAgICAgICAgICAgICAnZmlsZWFwaS9ET01XaW5kb3dG
aWxlU3lzdGVtLmgnLAotICAgICAgICAgICAgJ2ZpbGVhcGkvRGlyZWN0b3J5RW50cnkuY3BwJywK
LSAgICAgICAgICAgICdmaWxlYXBpL0RpcmVjdG9yeUVudHJ5LmgnLAotICAgICAgICAgICAgJ2Zp
bGVhcGkvRGlyZWN0b3J5RW50cnlTeW5jLmNwcCcsCi0gICAgICAgICAgICAnZmlsZWFwaS9EaXJl
Y3RvcnlFbnRyeVN5bmMuaCcsCi0gICAgICAgICAgICAnZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXIu
Y3BwJywKLSAgICAgICAgICAgICdmaWxlYXBpL0RpcmVjdG9yeVJlYWRlci5oJywKLSAgICAgICAg
ICAgICdmaWxlYXBpL0RpcmVjdG9yeVJlYWRlckJhc2UuaCcsCi0gICAgICAgICAgICAnZmlsZWFw
aS9EaXJlY3RvcnlSZWFkZXJTeW5jLmNwcCcsCi0gICAgICAgICAgICAnZmlsZWFwaS9EaXJlY3Rv
cnlSZWFkZXJTeW5jLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3Rv
cnlFbnRyeS5jcHAnLAorICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlF
bnRyeS5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlT
eW5jLmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5
U3luYy5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVy
LmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5o
JywKKyAgICAgICAgICAgICdNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyQmFzZS5o
JywKKyAgICAgICAgICAgICdNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyU3luYy5j
cHAnLAorICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5j
LmgnLAogICAgICAgICAgICAgJ2ZpbGVhcGkvRW50cmllc0NhbGxiYWNrLmgnLAogICAgICAgICAg
ICAgJ2ZpbGVhcGkvRW50cnkuY3BwJywKICAgICAgICAgICAgICdmaWxlYXBpL0VudHJ5LmgnLApJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5wcmkJKHJldmlzaW9uIDExMDQ2NSkKKysrIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xOCw2ICsxOCw3IEBAIFdFQkNPUkVfR0VORVJB
VEVEX1NPVVJDRVNfRElSID0gJCR7Uk9PVF8KIAogSU5DTFVERVBBVEggKz0gXAogICAgICQkU09V
UkNFX0RJUiBcCisgICAgJCRTT1VSQ0VfRElSL01vZHVsZXMvZmlsZXN5c3RlbSBcCiAgICAgJCRT
T1VSQ0VfRElSL01vZHVsZXMvZ2VvbG9jYXRpb24gXAogICAgICQkU09VUkNFX0RJUi9Nb2R1bGVz
L2luZGV4ZWRkYiBcCiAgICAgJCRTT1VSQ0VfRElSL01vZHVsZXMvd2ViZGF0YWJhc2UgXApJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5
RW50cnkuY3BwCShyZXZpc2lvbiAxMTA0NjUpCShmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
RGlyZWN0b3J5RW50cnkuY3BwOjExMDQ2NSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeS5oIgorCisjaWYg
RU5BQkxFKEZJTEVfU1lTVEVNKQorCisjaW5jbHVkZSAiRGlyZWN0b3J5UmVhZGVyLmgiCisjaW5j
bHVkZSAiRW50cnlDYWxsYmFjay5oIgorI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2suaCIKKyNpbmNs
dWRlICJGaWxlRXJyb3IuaCIKKyNpbmNsdWRlICJWb2lkQ2FsbGJhY2suaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitEaXJlY3RvcnlFbnRyeTo6RGlyZWN0b3J5RW50cnkoUGFzc1JlZlB0cjxE
T01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKKyAg
ICA6IEVudHJ5KGZpbGVTeXN0ZW0sIGZ1bGxQYXRoKQoreworfQorCitQYXNzUmVmUHRyPERpcmVj
dG9yeVJlYWRlcj4gRGlyZWN0b3J5RW50cnk6OmNyZWF0ZVJlYWRlcigpCit7CisgICAgcmV0dXJu
IERpcmVjdG9yeVJlYWRlcjo6Y3JlYXRlKG1fZmlsZVN5c3RlbSwgbV9mdWxsUGF0aCk7Cit9CisK
K3ZvaWQgRGlyZWN0b3J5RW50cnk6OmdldEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVm
UHRyPFdlYktpdEZsYWdzPiBmbGFncywgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNz
Q2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFja1JlZikKK3sK
KyAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayhlcnJvckNhbGxiYWNrUmVm
KTsKKyAgICBpZiAoIW1fZmlsZVN5c3RlbS0+Z2V0RmlsZSh0aGlzLCBwYXRoLCBmbGFncywgc3Vj
Y2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSkKKyAgICAgICAgZmlsZXN5c3RlbSgpLT5zY2hl
ZHVsZUNhbGxiYWNrKGVycm9yQ2FsbGJhY2sucmVsZWFzZSgpLCBGaWxlRXJyb3I6OmNyZWF0ZShG
aWxlRXJyb3I6OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUikpOworfQorCit2b2lkIERpcmVjdG9y
eUVudHJ5OjpnZXREaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPFdlYktp
dEZsYWdzPiBmbGFncywgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ss
IFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFja1JlZikKK3sKKyAgICBSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayhlcnJvckNhbGxiYWNrUmVmKTsKKyAgICBp
ZiAoIW1fZmlsZVN5c3RlbS0+Z2V0RGlyZWN0b3J5KHRoaXMsIHBhdGgsIGZsYWdzLCBzdWNjZXNz
Q2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKQorICAgICAgICBmaWxlc3lzdGVtKCktPnNjaGVkdWxl
Q2FsbGJhY2soZXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVF
cnJvcjo6SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKSk7Cit9CisKK3ZvaWQgRGlyZWN0b3J5RW50
cnk6OnJlbW92ZVJlY3Vyc2l2ZWx5KFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2Fs
bGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFja1JlZikgY29uc3QK
K3sKKyAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayhlcnJvckNhbGxiYWNr
UmVmKTsKKyAgICBpZiAoIW1fZmlsZVN5c3RlbS0+cmVtb3ZlUmVjdXJzaXZlbHkodGhpcywgc3Vj
Y2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSkKKyAgICAgICAgZmlsZXN5c3RlbSgpLT5zY2hl
ZHVsZUNhbGxiYWNrKGVycm9yQ2FsbGJhY2sucmVsZWFzZSgpLCBGaWxlRXJyb3I6OmNyZWF0ZShG
aWxlRXJyb3I6OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUikpOworfQorCit9CisKKyNlbmRpZiAv
LyBFTkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRGlyZWN0b3J5RW50cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnkuaAkocmV2aXNpb24gMTEwNDY1KQkoZnJvbSBT
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5Lmg6MTEwNDY1KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRGlyZWN0b3J5RW50cnlfaAorI2RlZmluZSBEaXJl
Y3RvcnlFbnRyeV9oCisKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisKKyNpbmNsdWRlICJFbnRy
eS5oIgorI2luY2x1ZGUgIldlYktpdEZsYWdzLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRE9NRmlsZVN5c3RlbUJhc2U7Citj
bGFzcyBEaXJlY3RvcnlSZWFkZXI7CitjbGFzcyBFbnRyeUNhbGxiYWNrOworY2xhc3MgRXJyb3JD
YWxsYmFjazsKK2NsYXNzIFZvaWRDYWxsYmFjazsKKworY2xhc3MgRGlyZWN0b3J5RW50cnkgOiBw
dWJsaWMgRW50cnkgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERpcmVjdG9yeUVu
dHJ5PiBjcmVhdGUoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29u
c3QgU3RyaW5nJiBmdWxsUGF0aCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
RGlyZWN0b3J5RW50cnkoZmlsZVN5c3RlbSwgZnVsbFBhdGgpKTsKKyAgICB9CisgICAgdmlydHVh
bCBib29sIGlzRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgUGFzc1Jl
ZlB0cjxEaXJlY3RvcnlSZWFkZXI+IGNyZWF0ZVJlYWRlcigpOworICAgIHZvaWQgZ2V0RmlsZShj
b25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8V2ViS2l0RmxhZ3M+ID0gMCwgUGFzc1JlZlB0
cjxFbnRyeUNhbGxiYWNrPiA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gPSAwKTsKKyAg
ICB2b2lkIGdldERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8V2ViS2l0
RmxhZ3M+ID0gMCwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiA9IDAsIFBhc3NSZWZQdHI8RXJy
b3JDYWxsYmFjaz4gPSAwKTsKKyAgICB2b2lkIHJlbW92ZVJlY3Vyc2l2ZWx5KFBhc3NSZWZQdHI8
Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSAwLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJh
Y2s+ID0gMCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgRGlyZWN0b3J5RW50cnkoUGFzc1JlZlB0
cjxET01GaWxlU3lzdGVtQmFzZT4sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpOworfTsKKworfSAv
LyBuYW1lc3BhY2UKKworI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKKworI2VuZGlmIC8v
IERpcmVjdG9yeUVudHJ5X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9EaXJlY3RvcnlFbnRyeS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmlkbAkocmV2aXNpb24gMTEwNDY1KQkoZnJvbSBT
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5LmlkbDoxMTA0NjUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnkuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgc3RvcmFnZSB7CisgICAgaW50ZXJmYWNlIFsK
KyAgICAgICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0sCisgICAgICAgIEpTR2VuZXJhdGVUb05h
dGl2ZU9iamVjdCwKKyAgICAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCisgICAgICAgIEpTTm9T
dGF0aWNUYWJsZXMKKyAgICBdIERpcmVjdG9yeUVudHJ5IDogRW50cnkgeworICAgICAgICBEaXJl
Y3RvcnlSZWFkZXIgY3JlYXRlUmVhZGVyKCk7CisgICAgICAgIFtDdXN0b21dIHZvaWQgZ2V0Rmls
ZShpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3RyaW5n
XSBET01TdHJpbmcgcGF0aCwgaW4gW09wdGlvbmFsXSBXZWJLaXRGbGFncyBmbGFncywgaW4gW09w
dGlvbmFsLCBDYWxsYmFja10gRW50cnlDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIGluIFtPcHRp
b25hbCwgQ2FsbGJhY2tdIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7CisgICAgICAgIFtD
dXN0b21dIHZvaWQgZ2V0RGlyZWN0b3J5KGluIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBUcmVh
dFVuZGVmaW5lZEFzPU51bGxTdHJpbmddIERPTVN0cmluZyBwYXRoLCBpbiBbT3B0aW9uYWxdIFdl
YktpdEZsYWdzIGZsYWdzLCBpbiBbT3B0aW9uYWwsIENhbGxiYWNrXSBFbnRyeUNhbGxiYWNrIHN1
Y2Nlc3NDYWxsYmFjaywgaW4gW09wdGlvbmFsLCBDYWxsYmFja10gRXJyb3JDYWxsYmFjayBlcnJv
ckNhbGxiYWNrKTsKKyAgICAgICAgdm9pZCByZW1vdmVSZWN1cnNpdmVseShpbiBbQ2FsbGJhY2td
IFZvaWRDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVy
cm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7CisgICAgfTsKK30KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5bmMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5bmMu
Y3BwCShyZXZpc2lvbiAxMTA0NjUpCShmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0
b3J5RW50cnlTeW5jLmNwcDoxMTA0NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRpcmVjdG9yeUVudHJ5U3luYy5oIgor
CisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjaW5jbHVkZSAiRGlyZWN0b3J5UmVhZGVyU3lu
Yy5oIgorI2luY2x1ZGUgIkVudHJ5U3luYy5oIgorI2luY2x1ZGUgIkZpbGVFbnRyeVN5bmMuaCIK
KyNpbmNsdWRlICJGaWxlRXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiU3luY0NhbGxiYWNrSGVscGVy
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRGlyZWN0b3J5RW50cnlTeW5jOjpEaXJlY3Rv
cnlFbnRyeVN5bmMoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29u
c3QgU3RyaW5nJiBmdWxsUGF0aCkKKyAgICA6IEVudHJ5U3luYyhmaWxlU3lzdGVtLCBmdWxsUGF0
aCkKK3sKK30KKworUGFzc1JlZlB0cjxEaXJlY3RvcnlSZWFkZXJTeW5jPiBEaXJlY3RvcnlFbnRy
eVN5bmM6OmNyZWF0ZVJlYWRlcihFeGNlcHRpb25Db2RlJikKK3sKKyAgICByZXR1cm4gRGlyZWN0
b3J5UmVhZGVyU3luYzo6Y3JlYXRlKG1fZmlsZVN5c3RlbSwgbV9mdWxsUGF0aCk7Cit9CisKK1Bh
c3NSZWZQdHI8RmlsZUVudHJ5U3luYz4gRGlyZWN0b3J5RW50cnlTeW5jOjpnZXRGaWxlKGNvbnN0
IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxXZWJLaXRGbGFncz4gZmxhZ3MsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQoreworICAgIGVjID0gMDsKKyAgICBFbnRyeVN5bmNDYWxsYmFja0hlbHBlciBoZWxw
ZXIobV9maWxlU3lzdGVtLT5hc3luY0ZpbGVTeXN0ZW0oKSk7CisgICAgaWYgKCFtX2ZpbGVTeXN0
ZW0tPmdldEZpbGUodGhpcywgcGF0aCwgZmxhZ3MsIGhlbHBlci5zdWNjZXNzQ2FsbGJhY2soKSwg
aGVscGVyLmVycm9yQ2FsbGJhY2soKSkpIHsKKyAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpJ
TlZBTElEX01PRElGSUNBVElPTl9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBy
ZXR1cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxGaWxlRW50cnlTeW5jPihoZWxwZXIuZ2V0UmVzdWx0
KGVjKSk7Cit9CisKK1Bhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnlTeW5jPiBEaXJlY3RvcnlFbnRy
eVN5bmM6OmdldERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8V2ViS2l0
RmxhZ3M+IGZsYWdzLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBlYyA9IDA7CisgICAgRW50
cnlTeW5jQ2FsbGJhY2tIZWxwZXIgaGVscGVyKG1fZmlsZVN5c3RlbS0+YXN5bmNGaWxlU3lzdGVt
KCkpOworICAgIGlmICghbV9maWxlU3lzdGVtLT5nZXREaXJlY3RvcnkodGhpcywgcGF0aCwgZmxh
Z3MsIGhlbHBlci5zdWNjZXNzQ2FsbGJhY2soKSwgaGVscGVyLmVycm9yQ2FsbGJhY2soKSkpIHsK
KyAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlI7Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxE
aXJlY3RvcnlFbnRyeVN5bmM+KGhlbHBlci5nZXRSZXN1bHQoZWMpKTsKK30KKwordm9pZCBEaXJl
Y3RvcnlFbnRyeVN5bmM6OnJlbW92ZVJlY3Vyc2l2ZWx5KEV4Y2VwdGlvbkNvZGUmIGVjKQorewor
ICAgIGVjID0gMDsKKyAgICBWb2lkU3luY0NhbGxiYWNrSGVscGVyIGhlbHBlcihtX2ZpbGVTeXN0
ZW0tPmFzeW5jRmlsZVN5c3RlbSgpKTsKKyAgICBpZiAoIW1fZmlsZVN5c3RlbS0+cmVtb3ZlUmVj
dXJzaXZlbHkodGhpcywgaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIuZXJyb3JDYWxs
YmFjaygpKSkgeworICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246OklOVkFMSURfTU9ESUZJQ0FU
SU9OX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBoZWxwZXIuZ2V0UmVzdWx0KGVj
KTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5
bmMuaAkocmV2aXNpb24gMTEwNDY1KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVj
dG9yeUVudHJ5U3luYy5oOjExMDQ2NSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbS9EaXJlY3RvcnlFbnRyeVN5bmMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBEaXJlY3RvcnlFbnRyeVN5bmNfaAorI2RlZmluZSBEaXJlY3RvcnlFbnRyeVN5bmNf
aAorCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjaW5jbHVkZSAiRW50cnlTeW5jLmgiCisj
aW5jbHVkZSAiV2ViS2l0RmxhZ3MuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEaXJlY3RvcnlSZWFkZXJTeW5jOworY2xhc3Mg
RmlsZUVudHJ5U3luYzsKKworY2xhc3MgRGlyZWN0b3J5RW50cnlTeW5jIDogcHVibGljIEVudHJ5
U3luYyB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnlTeW5j
PiBjcmVhdGUoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29uc3Qg
U3RyaW5nJiBmdWxsUGF0aCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGly
ZWN0b3J5RW50cnlTeW5jKGZpbGVTeXN0ZW0sIGZ1bGxQYXRoKSk7CisgICAgfQorICAgIHZpcnR1
YWwgYm9vbCBpc0RpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKworICAgIFBhc3NS
ZWZQdHI8RGlyZWN0b3J5UmVhZGVyU3luYz4gY3JlYXRlUmVhZGVyKEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICBQYXNzUmVmUHRyPEZpbGVFbnRyeVN5bmM+IGdldEZpbGUoY29uc3QgU3RyaW5nJiBwYXRo
LCBQYXNzUmVmUHRyPFdlYktpdEZsYWdzPiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQ
dHI8RGlyZWN0b3J5RW50cnlTeW5jPiBnZXREaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBQ
YXNzUmVmUHRyPFdlYktpdEZsYWdzPiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcmVtb3Zl
UmVjdXJzaXZlbHkoRXhjZXB0aW9uQ29kZSYpOworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFz
cyBFbnRyeVN5bmM7CisgICAgRGlyZWN0b3J5RW50cnlTeW5jKFBhc3NSZWZQdHI8RE9NRmlsZVN5
c3RlbUJhc2U+LCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKTsKK307CisKK30KKworI2VuZGlmIC8v
IEVOQUJMRShGSUxFX1NZU1RFTSkKKworI2VuZGlmIC8vIERpcmVjdG9yeUVudHJ5U3luY19oCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5j
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGly
ZWN0b3J5RW50cnlTeW5jLmlkbAkocmV2aXNpb24gMTEwNDY1KQkoZnJvbSBTb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5U3luYy5pZGw6MTEwNDY1KQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKK21vZHVsZSBzdG9yYWdlIHsKKyAgICBpbnRlcmZhY2UgWworICAg
ICAgICBDb25kaXRpb25hbD1GSUxFX1NZU1RFTSwKKyAgICAgICAgSlNHZW5lcmF0ZVRvTmF0aXZl
T2JqZWN0LAorICAgICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKKyAgICAgICAgSlNOb1N0YXRp
Y1RhYmxlcworICAgIF0gRGlyZWN0b3J5RW50cnlTeW5jIDogRW50cnlTeW5jIHsKKyAgICAgICAg
RGlyZWN0b3J5UmVhZGVyU3luYyBjcmVhdGVSZWFkZXIoKSByYWlzZXMgKEZpbGVFeGNlcHRpb24p
OworICAgICAgICBbQ3VzdG9tXSBGaWxlRW50cnlTeW5jIGdldEZpbGUoaW4gW1RyZWF0TnVsbEFz
PU51bGxTdHJpbmcsIFRyZWF0VW5kZWZpbmVkQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIHBhdGgs
IGluIFdlYktpdEZsYWdzIGZsYWdzKSByYWlzZXMgKEZpbGVFeGNlcHRpb24pOworICAgICAgICBb
Q3VzdG9tXSBEaXJlY3RvcnlFbnRyeVN5bmMgZ2V0RGlyZWN0b3J5KGluIFtUcmVhdE51bGxBcz1O
dWxsU3RyaW5nLCBUcmVhdFVuZGVmaW5lZEFzPU51bGxTdHJpbmddIERPTVN0cmluZyBwYXRoLCBp
biBXZWJLaXRGbGFncyBmbGFncykgcmFpc2VzIChGaWxlRXhjZXB0aW9uKTsKKyAgICAgICAgdm9p
ZCByZW1vdmVSZWN1cnNpdmVseSgpIHJhaXNlcyAoRmlsZUV4Y2VwdGlvbik7CisgICAgfTsKK30K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJl
Y3RvcnlSZWFkZXIuY3BwCShyZXZpc2lvbiAxMTA0NjUpCShmcm9tIFNvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRGlyZWN0b3J5UmVhZGVyLmNwcDoxMTA0NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRpcmVjdG9yeVJlYWRlci5o
IgorCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjaW5jbHVkZSAiRW50cmllc0NhbGxiYWNr
LmgiCisjaW5jbHVkZSAiRW50cnlBcnJheS5oIgorI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2suaCIK
KyNpbmNsdWRlICJGaWxlRXJyb3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitEaXJlY3Rv
cnlSZWFkZXI6OkRpcmVjdG9yeVJlYWRlcihQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBm
aWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQorICAgIDogRGlyZWN0b3J5UmVhZGVy
QmFzZShmaWxlU3lzdGVtLCBmdWxsUGF0aCkKK3sKK30KKwordm9pZCBEaXJlY3RvcnlSZWFkZXI6
OnJlYWRFbnRyaWVzKFBhc3NSZWZQdHI8RW50cmllc0NhbGxiYWNrPiBlbnRyaWVzQ2FsbGJhY2ss
IFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKK3sKKyAgICBpZiAoIW1f
aGFzTW9yZUVudHJpZXMpIHsKKyAgICAgICAgZmlsZXN5c3RlbSgpLT5zY2hlZHVsZUNhbGxiYWNr
KGVudHJpZXNDYWxsYmFjaywgRW50cnlBcnJheTo6Y3JlYXRlKCkpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIGZpbGVzeXN0ZW0oKS0+cmVhZERpcmVjdG9yeSh0aGlzLCBtX2Z1bGxQYXRo
LCBlbnRyaWVzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOworfQorCit9CisKKyNlbmRpZiAvLyBF
TkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRGlyZWN0b3J5UmVhZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5oCShyZXZpc2lvbiAxMTA0NjUpCShmcm9tIFNv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyLmg6MTEwNDY1KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIERpcmVjdG9yeVJlYWRlcl9oCisjZGVmaW5lIERp
cmVjdG9yeVJlYWRlcl9oCisKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisKKyNpbmNsdWRlICJE
T01GaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiRGlyZWN0b3J5UmVhZGVyQmFzZS5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEVu
dHJpZXNDYWxsYmFjazsKK2NsYXNzIEVudHJpZXNDYWxsYmFja3M7CitjbGFzcyBFcnJvckNhbGxi
YWNrOworCitjbGFzcyBEaXJlY3RvcnlSZWFkZXIgOiBwdWJsaWMgRGlyZWN0b3J5UmVhZGVyQmFz
ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RGlyZWN0b3J5UmVhZGVyPiBjcmVh
dGUoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5n
JiBmdWxsUGF0aCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGlyZWN0b3J5
UmVhZGVyKGZpbGVTeXN0ZW0sIGZ1bGxQYXRoKSk7CisgICAgfQorCisgICAgdm9pZCByZWFkRW50
cmllcyhQYXNzUmVmUHRyPEVudHJpZXNDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFj
az4gPSAwKTsKKworICAgIERPTUZpbGVTeXN0ZW0qIGZpbGVzeXN0ZW0oKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxET01GaWxlU3lzdGVtKj4obV9maWxlU3lzdGVtLmdldCgpKTsgfQorCitw
cml2YXRlOgorICAgIERpcmVjdG9yeVJlYWRlcihQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNl
PiwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCk7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUo
RklMRV9TWVNURU0pCisKKyNlbmRpZiAvLyBEaXJlY3RvcnlSZWFkZXJfaApJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5p
ZGwJKHJldmlzaW9uIDExMDQ2NSkJKGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3Rv
cnlSZWFkZXIuaWRsOjExMDQ2NSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9EaXJlY3RvcnlSZWFkZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1
bGUgc3RvcmFnZSB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9RklMRV9T
WVNURU0sCisgICAgICAgIEpTTm9TdGF0aWNUYWJsZXMKKyAgICBdIERpcmVjdG9yeVJlYWRlciB7
CisgICAgICAgIHZvaWQgcmVhZEVudHJpZXMoaW4gW0NhbGxiYWNrXSBFbnRyaWVzQ2FsbGJhY2sg
c3VjY2Vzc0NhbGxiYWNrLCBpbiBbT3B0aW9uYWwsIENhbGxiYWNrXSBFcnJvckNhbGxiYWNrIGVy
cm9yQ2FsbGJhY2spOworICAgIH07Cit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJCYXNlLmgJKHJldmlzaW9uIDEx
MDQ2NSkJKGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJCYXNlLmg6
MTEwNDY1KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJl
YWRlckJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBEaXJlY3Rv
cnlSZWFkZXJCYXNlX2gKKyNkZWZpbmUgRGlyZWN0b3J5UmVhZGVyQmFzZV9oCisKKyNpZiBFTkFC
TEUoRklMRV9TWVNURU0pCisKKyNpbmNsdWRlICJET01GaWxlU3lzdGVtQmFzZS5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERp
cmVjdG9yeVJlYWRlckJhc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxEaXJlY3RvcnlSZWFkZXJCYXNl
PiB7CitwdWJsaWM6CisgICAgRE9NRmlsZVN5c3RlbUJhc2UqIGZpbGVzeXN0ZW0oKSBjb25zdCB7
IHJldHVybiBtX2ZpbGVTeXN0ZW0uZ2V0KCk7IH0KKyAgICB2b2lkIHNldEhhc01vcmVFbnRyaWVz
KGJvb2wgaGFzTW9yZUVudHJpZXMpIHsgbV9oYXNNb3JlRW50cmllcyA9IGhhc01vcmVFbnRyaWVz
OyB9CisKK3Byb3RlY3RlZDoKKyAgICBEaXJlY3RvcnlSZWFkZXJCYXNlKFBhc3NSZWZQdHI8RE9N
RmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCisgICAg
ICAgIDogbV9maWxlU3lzdGVtKGZpbGVTeXN0ZW0pCisgICAgICAgICwgbV9mdWxsUGF0aChmdWxs
UGF0aCkKKyAgICAgICAgLCBtX2hhc01vcmVFbnRyaWVzKHRydWUpCisgICAgeworICAgIH0KKwor
ICAgIFJlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gbV9maWxlU3lzdGVtOworCisgICAgLy8gVGhp
cyBpcyBhIHZpcnR1YWwgcGF0aC4KKyAgICBTdHJpbmcgbV9mdWxsUGF0aDsKKworICAgIGJvb2wg
bV9oYXNNb3JlRW50cmllczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKKworI2VuZGlmIC8vIERpcmVjdG9yeVJlYWRlckJhc2Vf
aApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRl
clN5bmMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9EaXJlY3RvcnlSZWFkZXJTeW5jLmNwcAkocmV2aXNpb24gMTEwNDY1KQkoZnJvbSBTb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuY3BwOjExMDQ2NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkRpcmVjdG9yeVJlYWRlclN5bmMuaCIKKworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKworI2lu
Y2x1ZGUgIkRpcmVjdG9yeUVudHJ5LmgiCisjaW5jbHVkZSAiRGlyZWN0b3J5RW50cnlTeW5jLmgi
CisjaW5jbHVkZSAiRW50cnlBcnJheVN5bmMuaCIKKyNpbmNsdWRlICJFbnRyeVN5bmMuaCIKKyNp
bmNsdWRlICJGaWxlRW50cnlTeW5jLmgiCisjaW5jbHVkZSAiRmlsZUV4Y2VwdGlvbi5oIgorI2lu
Y2x1ZGUgIlN5bmNDYWxsYmFja0hlbHBlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0Rp
cmVjdG9yeVJlYWRlclN5bmM6OkRpcmVjdG9yeVJlYWRlclN5bmMoUGFzc1JlZlB0cjxET01GaWxl
U3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKKyAgICA6IERp
cmVjdG9yeVJlYWRlckJhc2UoZmlsZVN5c3RlbSwgZnVsbFBhdGgpCit7Cit9CisKK1Bhc3NSZWZQ
dHI8RW50cnlBcnJheVN5bmM+IERpcmVjdG9yeVJlYWRlclN5bmM6OnJlYWRFbnRyaWVzKEV4Y2Vw
dGlvbkNvZGUmIGVjKQoreworICAgIGVjID0gMDsKKyAgICBpZiAoIW1faGFzTW9yZUVudHJpZXMp
CisgICAgICAgIHJldHVybiBFbnRyeUFycmF5U3luYzo6Y3JlYXRlKCk7CisKKyAgICBFbnRyaWVz
U3luY0NhbGxiYWNrSGVscGVyIGhlbHBlcihtX2ZpbGVTeXN0ZW0tPmFzeW5jRmlsZVN5c3RlbSgp
KTsKKyAgICBpZiAoIW1fZmlsZVN5c3RlbS0+cmVhZERpcmVjdG9yeSh0aGlzLCBtX2Z1bGxQYXRo
LCBoZWxwZXIuc3VjY2Vzc0NhbGxiYWNrKCksIGhlbHBlci5lcnJvckNhbGxiYWNrKCkpKSB7Cisg
ICAgICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSOworICAg
ICAgICBzZXRIYXNNb3JlRW50cmllcyhmYWxzZSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0K
KyAgICByZXR1cm4gaGVscGVyLmdldFJlc3VsdChlYyk7Cit9CisKK30gLy8gbmFtZXNwYWNlCisK
KyNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyU3luYy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmgJKHJldmlz
aW9uIDExMDQ2NSkJKGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJT
eW5jLmg6MTEwNDY1KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVj
dG9yeVJlYWRlclN5bmMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBE
aXJlY3RvcnlSZWFkZXJTeW5jX2gKKyNkZWZpbmUgRGlyZWN0b3J5UmVhZGVyU3luY19oCisKKyNp
ZiBFTkFCTEUoRklMRV9TWVNURU0pCisKKyNpbmNsdWRlICJEaXJlY3RvcnlSZWFkZXJCYXNlLmgi
CisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgRW50cnlBcnJheVN5bmM7CisKK3R5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CisKK2Ns
YXNzIERpcmVjdG9yeVJlYWRlclN5bmMgOiBwdWJsaWMgRGlyZWN0b3J5UmVhZGVyQmFzZSB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RGlyZWN0b3J5UmVhZGVyU3luYz4gY3JlYXRl
KFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYg
ZnVsbFBhdGgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERpcmVjdG9yeVJl
YWRlclN5bmMoZmlsZVN5c3RlbSwgZnVsbFBhdGgpKTsKKyAgICB9CisKKyAgICBQYXNzUmVmUHRy
PEVudHJ5QXJyYXlTeW5jPiByZWFkRW50cmllcyhFeGNlcHRpb25Db2RlJik7CisKK3ByaXZhdGU6
CisgICAgRGlyZWN0b3J5UmVhZGVyU3luYyhQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiwg
Y29uc3QgU3RyaW5nJiBmdWxsUGF0aCk7Cit9OworCit9IC8vIG5hbWVzcGFjZQorCisjZW5kaWYg
Ly8gRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjZW5kaWYgLy8gRGlyZWN0b3J5UmVhZGVyU3luY19o
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVy
U3luYy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
L0RpcmVjdG9yeVJlYWRlclN5bmMuaWRsCShyZXZpc2lvbiAxMTA0NjUpCShmcm9tIFNvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyU3luYy5pZGw6MTEwNDY1KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgc3RvcmFnZSB7CisgICAgaW50ZXJmYWNl
IFsKKyAgICAgICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0sCisgICAgICAgIEpTTm9TdGF0aWNU
YWJsZXMKKyAgICBdIERpcmVjdG9yeVJlYWRlclN5bmMgeworICAgICAgICBFbnRyeUFycmF5U3lu
YyByZWFkRW50cmllcygpIHJhaXNlcyAoRmlsZUV4Y2VwdGlvbik7CisgICAgfTsKK30KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCShyZXZpc2lvbiAxMTA0NjUpCisr
KyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAkod29ya2luZyBjb3B5KQpA
QCAtNTEsNiArNTEsNyBAQAogICAgICd3ZWJjb3JlX2luY2x1ZGVfZGlycyc6IFsKICAgICAgICcu
Li8nLAogICAgICAgJy4uLy4uJywKKyAgICAgICcuLi9Nb2R1bGVzL2ZpbGVzeXN0ZW0nLAogICAg
ICAgJy4uL01vZHVsZXMvZ2FtZXBhZCcsCiAgICAgICAnLi4vTW9kdWxlcy9nZW9sb2NhdGlvbics
CiAgICAgICAnLi4vTW9kdWxlcy9pbnRlbnRzJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAxMTA0NjUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAt
MjQwNTMsNiArMjQwNTMsNDYgQEAKIAkJPEZpbHRlcgogCQkJTmFtZT0iTW9kdWxlcyIKIAkJCT4K
KyAgICAgICAgICAgICAgICAgICAgICAgIDxGaWx0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTmFtZT0iZmlsZXN5c3RlbSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPgorICAgICAgICAJCSAgICAgICAgPEZpbGUKKyAgICAgICAgCQkJICAgICAgICBSZWxhdGl2
ZVBhdGg9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxEaXJlY3RvcnlFbnRyeS5jcHAiCisJICAgICAg
ICAJCSAgICAgICAgPgorCQkJICAgICAgICA8L0ZpbGU+CisJCQkgICAgICAgIDxGaWxlCisJCQkJ
ICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxEaXJlY3RvcnlFbnRy
eS5oIgorCQkJCSAgICAgICAgPgorCQkJICAgICAgICA8L0ZpbGU+CisJCQkgICAgICAgIDxGaWxl
CisJCQkJICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxEaXJlY3Rv
cnlFbnRyeVN5bmMuY3BwIgorCQkJCSAgICAgICAgPgorCQkJICAgICAgICA8L0ZpbGU+CisJCQkg
ICAgICAgIDxGaWxlCisJCQkJICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZmlsZXN5
c3RlbVxEaXJlY3RvcnlFbnRyeVN5bmMuaCIKKwkJCQkgICAgICAgID4KKwkJCSAgICAgICAgPC9G
aWxlPgorCQkJICAgICAgICA8RmlsZQorCQkJCSAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxNb2R1
bGVzXGZpbGVzeXN0ZW1cRGlyZWN0b3J5UmVhZGVyLmNwcCIKKwkJCQkgICAgICAgID4KKwkJCSAg
ICAgICAgPC9GaWxlPgorCQkJICAgICAgICA8RmlsZQorCQkJCSAgICAgICAgUmVsYXRpdmVQYXRo
PSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRGlyZWN0b3J5UmVhZGVyLmgiCisJCQkJICAgICAgICA+
CisJCQkgICAgICAgIDwvRmlsZT4KKwkJCSAgICAgICAgPEZpbGUKKwkJCQkgICAgICAgIFJlbGF0
aXZlUGF0aD0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXERpcmVjdG9yeVJlYWRlckJhc2UuaCIKKwkJ
CQkgICAgICAgID4KKwkJCSAgICAgICAgPC9GaWxlPgorCQkJICAgICAgICA8RmlsZQorCQkJCSAg
ICAgICAgUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRGlyZWN0b3J5UmVhZGVy
U3luYy5jcHAiCisJCQkJICAgICAgICA+CisJCQkgICAgICAgIDwvRmlsZT4KKwkJCSAgICAgICAg
PEZpbGUKKwkJCQkgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXERp
cmVjdG9yeVJlYWRlclN5bmMuaCIKKwkJCQkgICAgICAgID4KKwkJCSAgICAgICAgPC9GaWxlPgor
ICAgICAgICAgICAgICAgICAgICAgICAgPC9GaWx0ZXI+CiAJCQk8RmlsdGVyCiAJCQkJTmFtZT0i
Z2VvbG9jYXRpb24iCiAJCQkJPgpAQCAtNTY4NTgsNDIgKzU2ODk4LDYgQEAKIAkJCQk+CiAJCQk8
L0ZpbGU+CiAJCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cZmlsZWFwaVxEaXJlY3RvcnlF
bnRyeS5jcHAiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGZpbGVhcGlcRGlyZWN0b3J5RW50cnkuaCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8Rmls
ZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cZmlsZWFwaVxEaXJlY3RvcnlFbnRyeVN5bmMuY3BwIgot
CQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxmaWxlYXBp
XERpcmVjdG9yeUVudHJ5U3luYy5oIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJ
UmVsYXRpdmVQYXRoPSIuLlxmaWxlYXBpXERpcmVjdG9yeVJlYWRlci5jcHAiCi0JCQkJPgotCQkJ
PC9GaWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGZpbGVhcGlcRGlyZWN0b3J5
UmVhZGVyLmgiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGZpbGVhcGlcRGlyZWN0b3J5UmVhZGVyQmFzZS5oIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJ
CTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxmaWxlYXBpXERpcmVjdG9yeVJlYWRlclN5bmMu
Y3BwIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxm
aWxlYXBpXERpcmVjdG9yeVJlYWRlclN5bmMuaCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8Rmls
ZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZmlsZWFwaVxET01GaWxlUGF0aC5jcHAiCiAJCQkJPgog
CQkJPC9GaWxlPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTEwNDY1KQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC05NzY0LDcg
Kzk3NjQsNyBAQAogCQk4NjFDMkVBNTEzRkI0RkZGMDAwNjJBQkIgLyogUmVzb3VyY2VMb2FkVGlt
aW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlTG9h
ZFRpbWluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2MjQzRDAwMTFCQzMx
RjcwMENDMDA2QSAvKiBKU0FycmF5QnVmZmVyVmlld0hlbHBlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0FycmF5QnVmZmVyVmlld0hlbHBlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4NkQ5ODJGNjEyNUMxNTQwMDBBRDlFM0QgLyogRG9jdW1lbnRUaW1p
bmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG9jdW1lbnRUaW1pbmcuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODkwQUUwRTAxMjU2QTA3OTAwRjU5NjhDIC8q
IERpcmVjdG9yeVJlYWRlckJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
RGlyZWN0b3J5UmVhZGVyQmFzZS5oOyBwYXRoID0gZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJCYXNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg5MEFFMEUwMTI1NkEwNzkwMEY1OTY4
QyAvKiBEaXJlY3RvcnlSZWFkZXJCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERpcmVjdG9yeVJlYWRlckJhc2UuaDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJl
Y3RvcnlSZWFkZXJCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5MkNGMThE
MTM0QzYyMEQwMEFBRURBMSAvKiBTdG9yYWdlSW5mb0Vycm9yQ2FsbGJhY2suaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZUluZm9FcnJvckNhbGxiYWNrLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5MkNGMThFMTM0QzYyMEQwMEFBRURBMSAvKiBTdG9y
YWdlSW5mb1F1b3RhQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U3RvcmFnZUluZm9RdW90YUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTg5MkNGMThGMTM0QzYyMEQwMEFBRURBMSAvKiBTdG9yYWdlSW5mb1VzYWdlQ2FsbGJhY2suaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZUluZm9Vc2FnZUNhbGxiYWNr
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05Nzg1LDEwICs5Nzg1LDEwIEBACiAJ
CTg5M0M0N0JBMTIzOEEwQTkwMDJCM0Q4NiAvKiBKU0ZpbGVXcml0ZXJDYWxsYmFjay5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ZpbGVXcml0ZXJDYWxsYmFjay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4OTNDNDdDQTEyM0VFQkEyMDAyQjNEODYgLyogSlNF
bnRyeUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Vu
dHJ5Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODkzQzQ3REUxMjNF
RjRBOTAwMkIzRDg2IC8qIEpTRGlyZWN0b3J5RW50cnlDdXN0b20uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEaXJlY3RvcnlFbnRyeUN1c3RvbS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5M0M0N0YwMTI0OEJEMzkwMDJCM0Q4NiAvKiBEaXJl
Y3RvcnlFbnRyeVN5bmMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
RGlyZWN0b3J5RW50cnlTeW5jLmNwcDsgcGF0aCA9IGZpbGVhcGkvRGlyZWN0b3J5RW50cnlTeW5j
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODkzQzQ3RjExMjQ4QkQzOTAwMkIz
RDg2IC8qIERpcmVjdG9yeUVudHJ5U3luYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBEaXJlY3RvcnlFbnRyeVN5bmMuaDsgcGF0aCA9IGZpbGVhcGkvRGlyZWN0b3J5RW50cnlT
eW5jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5M0M0N0YyMTI0OEJEMzkwMDJC
M0Q4NiAvKiBEaXJlY3RvcnlSZWFkZXJTeW5jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERpcmVjdG9yeVJlYWRlclN5bmMuY3BwOyBwYXRoID0gZmlsZWFwaS9EaXJl
Y3RvcnlSZWFkZXJTeW5jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODkzQzQ3
RjMxMjQ4QkQzOTAwMkIzRDg2IC8qIERpcmVjdG9yeVJlYWRlclN5bmMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gRGlyZWN0b3J5UmVhZGVyU3luYy5oOyBwYXRoID0gZmlsZWFw
aS9EaXJlY3RvcnlSZWFkZXJTeW5jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg5
M0M0N0YwMTI0OEJEMzkwMDJCM0Q4NiAvKiBEaXJlY3RvcnlFbnRyeVN5bmMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRGlyZWN0b3J5RW50cnlTeW5jLmNwcDsgcGF0
aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5bmMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk4OTNDNDdGMTEyNDhCRDM5MDAyQjNEODYgLyogRGlyZWN0b3J5
RW50cnlTeW5jLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERpcmVjdG9yeUVu
dHJ5U3luYy5oOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4OTNDNDdGMjEyNDhCRDM5MDAyQjNEODYg
LyogRGlyZWN0b3J5UmVhZGVyU3luYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBEaXJlY3RvcnlSZWFkZXJTeW5jLmNwcDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3Rl
bS9EaXJlY3RvcnlSZWFkZXJTeW5jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODkzQzQ3RjMxMjQ4QkQzOTAwMkIzRDg2IC8qIERpcmVjdG9yeVJlYWRlclN5bmMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGlyZWN0b3J5UmVhZGVyU3luYy5oOyBwYXRoID0g
TW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODkzQzQ3RjQxMjQ4QkQzOTAwMkIzRDg2IC8qIERPTUZpbGVTeXN0ZW1C
YXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERPTUZpbGVTeXN0
ZW1CYXNlLmNwcDsgcGF0aCA9IGZpbGVhcGkvRE9NRmlsZVN5c3RlbUJhc2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4OTNDNDdGNTEyNDhCRDM5MDAyQjNEODYgLyogRE9NRmls
ZVN5c3RlbUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRE9NRmlsZVN5
c3RlbUJhc2UuaDsgcGF0aCA9IGZpbGVhcGkvRE9NRmlsZVN5c3RlbUJhc2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODkzQzQ3RjYxMjQ4QkQzOTAwMkIzRDg2IC8qIERPTUZpbGVT
eXN0ZW1TeW5jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERPTUZp
bGVTeXN0ZW1TeW5jLmNwcDsgcGF0aCA9IGZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTgxNCwxMCArOTgxNCwxMCBAQAogCQk4OTND
NDgzMDEyNDk1NDcyMDAyQjNEODYgLyogSlNGaWxlRW50cnlTeW5jLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmlsZUVudHJ5U3luYy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTg5M0M0ODMxMTI0OTU0NzIwMDJCM0Q4NiAvKiBKU0ZpbGVFbnRy
eVN5bmMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNGaWxlRW50cnlTeW5j
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5M0M0ODUyMTI0OTlCMDYwMDJCM0Q4
NiAvKiBKU0VudHJ5U3luY0N1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0VudHJ5U3luY0N1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTg5ODc4NTM5MTIyQ0EwNjQwMDNBQUJEQSAvKiBEaXJlY3RvcnlFbnRyeS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEaXJlY3RvcnlFbnRyeS5jcHA7IHBhdGgg
PSBmaWxlYXBpL0RpcmVjdG9yeUVudHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJODk4Nzg1M0ExMjJDQTA2NDAwM0FBQkRBIC8qIERpcmVjdG9yeUVudHJ5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERpcmVjdG9yeUVudHJ5Lmg7IHBhdGggPSBmaWxlYXBp
L0RpcmVjdG9yeUVudHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5ODc4NTNC
MTIyQ0EwNjQwMDNBQUJEQSAvKiBEaXJlY3RvcnlSZWFkZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gRGlyZWN0b3J5UmVhZGVyLmNwcDsgcGF0aCA9IGZpbGVhcGkv
RGlyZWN0b3J5UmVhZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODk4Nzg1
M0MxMjJDQTA2NDAwM0FBQkRBIC8qIERpcmVjdG9yeVJlYWRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBEaXJlY3RvcnlSZWFkZXIuaDsgcGF0aCA9IGZpbGVhcGkvRGlyZWN0
b3J5UmVhZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg5ODc4NTM5MTIyQ0Ew
NjQwMDNBQUJEQSAvKiBEaXJlY3RvcnlFbnRyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBEaXJlY3RvcnlFbnRyeS5jcHA7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0
ZW0vRGlyZWN0b3J5RW50cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4OTg3
ODUzQTEyMkNBMDY0MDAzQUFCREEgLyogRGlyZWN0b3J5RW50cnkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gRGlyZWN0b3J5RW50cnkuaDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5
c3RlbS9EaXJlY3RvcnlFbnRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4OTg3
ODUzQjEyMkNBMDY0MDAzQUFCREEgLyogRGlyZWN0b3J5UmVhZGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERpcmVjdG9yeVJlYWRlci5jcHA7IHBhdGggPSBNb2R1
bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJODk4Nzg1M0MxMjJDQTA2NDAwM0FBQkRBIC8qIERpcmVjdG9yeVJlYWRlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEaXJlY3RvcnlSZWFkZXIuaDsgcGF0aCA9
IE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODk4Nzg1M0QxMjJDQTA2NDAwM0FBQkRBIC8qIERPTUZpbGVQYXRoLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERPTUZpbGVQYXRoLmNwcDsgcGF0
aCA9IGZpbGVhcGkvRE9NRmlsZVBhdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4OTg3ODUzRTEyMkNBMDY0MDAzQUFCREEgLyogRE9NRmlsZVBhdGguaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gRE9NRmlsZVBhdGguaDsgcGF0aCA9IGZpbGVhcGkvRE9NRmls
ZVBhdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODk4Nzg1M0YxMjJDQTA2NDAw
M0FBQkRBIC8qIERPTUZpbGVTeXN0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gRE9NRmlsZVN5c3RlbS5jcHA7IHBhdGggPSBmaWxlYXBpL0RPTUZpbGVTeXN0ZW0u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI4OTcsMTAgKzEyODk3LDEwIEBA
CiAJCUUxQTY0M0YxMEVDMDk3MjUwMDc3OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlclNjcmlwdENvbnRyb2xsZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBNjQzRkMwRUMwOTdBMDAwNzc5NjY4
IC8qIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUxQUIxRUE4MTRFOUUyN0QwMDQ0OUUxMyAvKiBGaWxlTGlzdC5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBuYW1lID0gRmlsZUxpc3QuaWRsOyBwYXRoID0gZmlsZWFwaS9GaWxlTGlz
dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxQUIxRUFCMTRFOUUyRUYwMDQ0
OUUxMyAvKiBEaXJlY3RvcnlFbnRyeS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRGlyZWN0b3J5RW50cnkuaWRsOyBwYXRo
ID0gZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUUxQUIxRUFDMTRFOUUyRjgwMDQ0OUUxMyAvKiBEaXJlY3RvcnlFbnRyeVN5bmMuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFt
ZSA9IERpcmVjdG9yeUVudHJ5U3luYy5pZGw7IHBhdGggPSBmaWxlYXBpL0RpcmVjdG9yeUVudHJ5
U3luYy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxQUIxRUFEMTRFOUUzMDUw
MDQ0OUUxMyAvKiBEaXJlY3RvcnlSZWFkZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IERpcmVjdG9yeVJlYWRlci5pZGw7
IHBhdGggPSBmaWxlYXBpL0RpcmVjdG9yeVJlYWRlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUUxQUIxRUFFMTRFOUUzMEIwMDQ0OUUxMyAvKiBEaXJlY3RvcnlSZWFkZXJTeW5j
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IG5hbWUgPSBEaXJlY3RvcnlSZWFkZXJTeW5jLmlkbDsgcGF0aCA9IGZpbGVhcGkvRGlyZWN0
b3J5UmVhZGVyU3luYy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxQUIxRUFC
MTRFOUUyRUYwMDQ0OUUxMyAvKiBEaXJlY3RvcnlFbnRyeS5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRGlyZWN0b3J5RW50
cnkuaWRsOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTFBQjFFQUMxNEU5RTJGODAwNDQ5RTEzIC8qIERp
cmVjdG9yeUVudHJ5U3luYy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRGlyZWN0b3J5RW50cnlTeW5jLmlkbDsgcGF0aCA9
IE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5bmMuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFMUFCMUVBRDE0RTlFMzA1MDA0NDlFMTMgLyogRGlyZWN0b3J5UmVh
ZGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IG5hbWUgPSBEaXJlY3RvcnlSZWFkZXIuaWRsOyBwYXRoID0gTW9kdWxlcy9maWxlc3lz
dGVtL0RpcmVjdG9yeVJlYWRlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUx
QUIxRUFFMTRFOUUzMEIwMDQ0OUUxMyAvKiBEaXJlY3RvcnlSZWFkZXJTeW5jLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBE
aXJlY3RvcnlSZWFkZXJTeW5jLmlkbDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3Rv
cnlSZWFkZXJTeW5jLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBQjFFQUYx
NEU5RTMxNzAwNDQ5RTEzIC8qIERPTUZpbGVTeXN0ZW1TeW5jLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBET01GaWxlU3lz
dGVtU3luYy5pZGw7IHBhdGggPSBmaWxlYXBpL0RPTUZpbGVTeXN0ZW1TeW5jLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBQjFFQjAxNEU5RTMyMzAwNDQ5RTEzIC8qIEVudHJp
ZXNDYWxsYmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBuYW1lID0gRW50cmllc0NhbGxiYWNrLmlkbDsgcGF0aCA9IGZpbGVhcGkv
RW50cmllc0NhbGxiYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBQjFF
QjExNEU5RTMyQTAwNDQ5RTEzIC8qIEVudHJ5LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBFbnRyeS5pZGw7IHBhdGggPSBm
aWxlYXBpL0VudHJ5LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5RW50cnkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5RW50cnkuY3BwCShyZXZpc2lvbiAxMTA0NjUpCisr
KyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw3NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
Ci0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRpcmVjdG9y
eUVudHJ5LmgiCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJEaXJlY3Rv
cnlSZWFkZXIuaCIKLSNpbmNsdWRlICJFbnRyeUNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRXJyb3JD
YWxsYmFjay5oIgotI2luY2x1ZGUgIkZpbGVFcnJvci5oIgotI2luY2x1ZGUgIlZvaWRDYWxsYmFj
ay5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLURpcmVjdG9yeUVudHJ5OjpEaXJlY3RvcnlF
bnRyeShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJp
bmcmIGZ1bGxQYXRoKQotICAgIDogRW50cnkoZmlsZVN5c3RlbSwgZnVsbFBhdGgpCi17Ci19Ci0K
LVBhc3NSZWZQdHI8RGlyZWN0b3J5UmVhZGVyPiBEaXJlY3RvcnlFbnRyeTo6Y3JlYXRlUmVhZGVy
KCkKLXsKLSAgICByZXR1cm4gRGlyZWN0b3J5UmVhZGVyOjpjcmVhdGUobV9maWxlU3lzdGVtLCBt
X2Z1bGxQYXRoKTsKLX0KLQotdm9pZCBEaXJlY3RvcnlFbnRyeTo6Z2V0RmlsZShjb25zdCBTdHJp
bmcmIHBhdGgsIFBhc3NSZWZQdHI8V2ViS2l0RmxhZ3M+IGZsYWdzLCBQYXNzUmVmUHRyPEVudHJ5
Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJv
ckNhbGxiYWNrUmVmKQotewotICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNr
KGVycm9yQ2FsbGJhY2tSZWYpOwotICAgIGlmICghbV9maWxlU3lzdGVtLT5nZXRGaWxlKHRoaXMs
IHBhdGgsIGZsYWdzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKQotICAgICAgICBm
aWxlc3lzdGVtKCktPnNjaGVkdWxlQ2FsbGJhY2soZXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIEZp
bGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKSk7Ci19
Ci0KLXZvaWQgRGlyZWN0b3J5RW50cnk6OmdldERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgs
IFBhc3NSZWZQdHI8V2ViS2l0RmxhZ3M+IGZsYWdzLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+
IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNr
UmVmKQotewotICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKGVycm9yQ2Fs
bGJhY2tSZWYpOwotICAgIGlmICghbV9maWxlU3lzdGVtLT5nZXREaXJlY3RvcnkodGhpcywgcGF0
aCwgZmxhZ3MsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpCi0gICAgICAgIGZpbGVz
eXN0ZW0oKS0+c2NoZWR1bGVDYWxsYmFjayhlcnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgRmlsZUVy
cm9yOjpjcmVhdGUoRmlsZUVycm9yOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlIpKTsKLX0KLQot
dm9pZCBEaXJlY3RvcnlFbnRyeTo6cmVtb3ZlUmVjdXJzaXZlbHkoUGFzc1JlZlB0cjxWb2lkQ2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNh
bGxiYWNrUmVmKSBjb25zdAotewotICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxi
YWNrKGVycm9yQ2FsbGJhY2tSZWYpOwotICAgIGlmICghbV9maWxlU3lzdGVtLT5yZW1vdmVSZWN1
cnNpdmVseSh0aGlzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKQotICAgICAgICBm
aWxlc3lzdGVtKCktPnNjaGVkdWxlQ2FsbGJhY2soZXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIEZp
bGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKSk7Ci19
Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRGlyZWN0b3J5RW50cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5LmgJKHJldmlzaW9uIDExMDQ2NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5RW50cnkuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3MSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0g
KgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2lmbmRlZiBEaXJlY3RvcnlFbnRyeV9oCi0jZGVmaW5lIERpcmVjdG9yeUVudHJ5X2gK
LQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkVudHJ5LmgiCi0jaW5jbHVk
ZSAiV2ViS2l0RmxhZ3MuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBET01GaWxlU3lzdGVtQmFzZTsKLWNsYXNzIERpcmVjdG9y
eVJlYWRlcjsKLWNsYXNzIEVudHJ5Q2FsbGJhY2s7Ci1jbGFzcyBFcnJvckNhbGxiYWNrOwotY2xh
c3MgVm9pZENhbGxiYWNrOwotCi1jbGFzcyBEaXJlY3RvcnlFbnRyeSA6IHB1YmxpYyBFbnRyeSB7
Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnk+IGNyZWF0ZShQ
YXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1
bGxQYXRoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEaXJlY3RvcnlFbnRy
eShmaWxlU3lzdGVtLCBmdWxsUGF0aCkpOwotICAgIH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNEaXJl
Y3RvcnkoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICBQYXNzUmVmUHRyPERpcmVjdG9y
eVJlYWRlcj4gY3JlYXRlUmVhZGVyKCk7Ci0gICAgdm9pZCBnZXRGaWxlKGNvbnN0IFN0cmluZyYg
cGF0aCwgUGFzc1JlZlB0cjxXZWJLaXRGbGFncz4gPSAwLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJh
Y2s+ID0gMCwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiA9IDApOwotICAgIHZvaWQgZ2V0RGly
ZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxXZWJLaXRGbGFncz4gPSAwLCBQ
YXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+ID0gMCwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiA9
IDApOwotICAgIHZvaWQgcmVtb3ZlUmVjdXJzaXZlbHkoUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+
IHN1Y2Nlc3NDYWxsYmFjayA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gPSAwKSBjb25z
dDsKLQotcHJpdmF0ZToKLSAgICBEaXJlY3RvcnlFbnRyeShQYXNzUmVmUHRyPERPTUZpbGVTeXN0
ZW1CYXNlPiwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCk7Ci19OwotCi19IC8vIG5hbWVzcGFjZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gRGlyZWN0b3J5RW50
cnlfaApJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5pZGwJKHJl
dmlzaW9uIDExMDQ2NSkKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5RW50cnku
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1tb2R1bGUgc3RvcmFnZSB7Ci0gICAg
aW50ZXJmYWNlIFsKLSAgICAgICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0sCi0gICAgICAgIEpT
R2VuZXJhdGVUb05hdGl2ZU9iamVjdCwKLSAgICAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCi0g
ICAgICAgIEpTTm9TdGF0aWNUYWJsZXMKLSAgICBdIERpcmVjdG9yeUVudHJ5IDogRW50cnkgewot
ICAgICAgICBEaXJlY3RvcnlSZWFkZXIgY3JlYXRlUmVhZGVyKCk7Ci0gICAgICAgIFtDdXN0b21d
IHZvaWQgZ2V0RmlsZShpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRB
cz1OdWxsU3RyaW5nXSBET01TdHJpbmcgcGF0aCwgaW4gW09wdGlvbmFsXSBXZWJLaXRGbGFncyBm
bGFncywgaW4gW09wdGlvbmFsLCBDYWxsYmFja10gRW50cnlDYWxsYmFjayBzdWNjZXNzQ2FsbGJh
Y2ssIGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7
Ci0gICAgICAgIFtDdXN0b21dIHZvaWQgZ2V0RGlyZWN0b3J5KGluIFtUcmVhdE51bGxBcz1OdWxs
U3RyaW5nLCBUcmVhdFVuZGVmaW5lZEFzPU51bGxTdHJpbmddIERPTVN0cmluZyBwYXRoLCBpbiBb
T3B0aW9uYWxdIFdlYktpdEZsYWdzIGZsYWdzLCBpbiBbT3B0aW9uYWwsIENhbGxiYWNrXSBFbnRy
eUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4gW09wdGlvbmFsLCBDYWxsYmFja10gRXJyb3JD
YWxsYmFjayBlcnJvckNhbGxiYWNrKTsKLSAgICAgICAgdm9pZCByZW1vdmVSZWN1cnNpdmVseShp
biBbQ2FsbGJhY2tdIFZvaWRDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIGluIFtPcHRpb25hbCwg
Q2FsbGJhY2tdIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7Ci0gICAgfTsKLX0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5RW50cnlTeW5jLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5U3luYy5jcHAJKHJldmlz
aW9uIDExMDQ2NSkKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5RW50cnlTeW5j
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw4OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIkRpcmVjdG9yeUVudHJ5U3luYy5oIgotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVN
KQotCi0jaW5jbHVkZSAiRGlyZWN0b3J5UmVhZGVyU3luYy5oIgotI2luY2x1ZGUgIkVudHJ5U3lu
Yy5oIgotI2luY2x1ZGUgIkZpbGVFbnRyeVN5bmMuaCIKLSNpbmNsdWRlICJGaWxlRXhjZXB0aW9u
LmgiCi0jaW5jbHVkZSAiU3luY0NhbGxiYWNrSGVscGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotRGlyZWN0b3J5RW50cnlTeW5jOjpEaXJlY3RvcnlFbnRyeVN5bmMoUGFzc1JlZlB0cjxE
T01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKLSAg
ICA6IEVudHJ5U3luYyhmaWxlU3lzdGVtLCBmdWxsUGF0aCkKLXsKLX0KLQotUGFzc1JlZlB0cjxE
aXJlY3RvcnlSZWFkZXJTeW5jPiBEaXJlY3RvcnlFbnRyeVN5bmM6OmNyZWF0ZVJlYWRlcihFeGNl
cHRpb25Db2RlJikKLXsKLSAgICByZXR1cm4gRGlyZWN0b3J5UmVhZGVyU3luYzo6Y3JlYXRlKG1f
ZmlsZVN5c3RlbSwgbV9mdWxsUGF0aCk7Ci19Ci0KLVBhc3NSZWZQdHI8RmlsZUVudHJ5U3luYz4g
RGlyZWN0b3J5RW50cnlTeW5jOjpnZXRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0
cjxXZWJLaXRGbGFncz4gZmxhZ3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGVjID0gMDsK
LSAgICBFbnRyeVN5bmNDYWxsYmFja0hlbHBlciBoZWxwZXIobV9maWxlU3lzdGVtLT5hc3luY0Zp
bGVTeXN0ZW0oKSk7Ci0gICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPmdldEZpbGUodGhpcywgcGF0aCwg
ZmxhZ3MsIGhlbHBlci5zdWNjZXNzQ2FsbGJhY2soKSwgaGVscGVyLmVycm9yQ2FsbGJhY2soKSkp
IHsKLSAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlI7
Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gc3RhdGljX3BvaW50ZXJfY2Fz
dDxGaWxlRW50cnlTeW5jPihoZWxwZXIuZ2V0UmVzdWx0KGVjKSk7Ci19Ci0KLVBhc3NSZWZQdHI8
RGlyZWN0b3J5RW50cnlTeW5jPiBEaXJlY3RvcnlFbnRyeVN5bmM6OmdldERpcmVjdG9yeShjb25z
dCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8V2ViS2l0RmxhZ3M+IGZsYWdzLCBFeGNlcHRpb25D
b2RlJiBlYykKLXsKLSAgICBlYyA9IDA7Ci0gICAgRW50cnlTeW5jQ2FsbGJhY2tIZWxwZXIgaGVs
cGVyKG1fZmlsZVN5c3RlbS0+YXN5bmNGaWxlU3lzdGVtKCkpOwotICAgIGlmICghbV9maWxlU3lz
dGVtLT5nZXREaXJlY3RvcnkodGhpcywgcGF0aCwgZmxhZ3MsIGhlbHBlci5zdWNjZXNzQ2FsbGJh
Y2soKSwgaGVscGVyLmVycm9yQ2FsbGJhY2soKSkpIHsKLSAgICAgICAgZWMgPSBGaWxlRXhjZXB0
aW9uOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlI7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0K
LSAgICByZXR1cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxEaXJlY3RvcnlFbnRyeVN5bmM+KGhlbHBl
ci5nZXRSZXN1bHQoZWMpKTsKLX0KLQotdm9pZCBEaXJlY3RvcnlFbnRyeVN5bmM6OnJlbW92ZVJl
Y3Vyc2l2ZWx5KEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGVjID0gMDsKLSAgICBWb2lkU3lu
Y0NhbGxiYWNrSGVscGVyIGhlbHBlcihtX2ZpbGVTeXN0ZW0tPmFzeW5jRmlsZVN5c3RlbSgpKTsK
LSAgICBpZiAoIW1fZmlsZVN5c3RlbS0+cmVtb3ZlUmVjdXJzaXZlbHkodGhpcywgaGVscGVyLnN1
Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIuZXJyb3JDYWxsYmFjaygpKSkgewotICAgICAgICBlYyA9
IEZpbGVFeGNlcHRpb246OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBoZWxwZXIuZ2V0UmVzdWx0KGVjKTsKLX0KLQotfQotCi0jZW5kaWYgLy8g
RU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3Rv
cnlFbnRyeVN5bmMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVj
dG9yeUVudHJ5U3luYy5oCShyZXZpc2lvbiAxMTA0NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0RpcmVjdG9yeUVudHJ5U3luYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY5ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
ICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aWZuZGVmIERpcmVjdG9yeUVudHJ5U3luY19oCi0jZGVmaW5lIERpcmVjdG9yeUVudHJ5U3luY19o
Ci0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJFbnRyeVN5bmMuaCIKLSNp
bmNsdWRlICJXZWJLaXRGbGFncy5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERpcmVjdG9yeVJlYWRlclN5bmM7Ci1jbGFzcyBG
aWxlRW50cnlTeW5jOwotCi1jbGFzcyBEaXJlY3RvcnlFbnRyeVN5bmMgOiBwdWJsaWMgRW50cnlT
eW5jIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeVN5bmM+
IGNyZWF0ZShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBmaWxlU3lzdGVtLCBjb25zdCBT
dHJpbmcmIGZ1bGxQYXRoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEaXJl
Y3RvcnlFbnRyeVN5bmMoZmlsZVN5c3RlbSwgZnVsbFBhdGgpKTsKLSAgICB9Ci0gICAgdmlydHVh
bCBib29sIGlzRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgUGFzc1Jl
ZlB0cjxEaXJlY3RvcnlSZWFkZXJTeW5jPiBjcmVhdGVSZWFkZXIoRXhjZXB0aW9uQ29kZSYpOwot
ICAgIFBhc3NSZWZQdHI8RmlsZUVudHJ5U3luYz4gZ2V0RmlsZShjb25zdCBTdHJpbmcmIHBhdGgs
IFBhc3NSZWZQdHI8V2ViS2l0RmxhZ3M+LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0
cjxEaXJlY3RvcnlFbnRyeVN5bmM+IGdldERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFBh
c3NSZWZQdHI8V2ViS2l0RmxhZ3M+LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCByZW1vdmVS
ZWN1cnNpdmVseShFeGNlcHRpb25Db2RlJik7Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNz
IEVudHJ5U3luYzsKLSAgICBEaXJlY3RvcnlFbnRyeVN5bmMoUGFzc1JlZlB0cjxET01GaWxlU3lz
dGVtQmFzZT4sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpOwotfTsKLQotfQotCi0jZW5kaWYgLy8g
RU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gRGlyZWN0b3J5RW50cnlTeW5jX2gKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5RW50cnlTeW5jLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5U3luYy5pZGwJKHJl
dmlzaW9uIDExMDQ2NSkKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5RW50cnlT
eW5jLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4K
LSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotbW9kdWxlIHN0b3JhZ2Ugewot
ICAgIGludGVyZmFjZSBbCi0gICAgICAgIENvbmRpdGlvbmFsPUZJTEVfU1lTVEVNLAotICAgICAg
ICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCi0gICAgICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0
LAotICAgICAgICBKU05vU3RhdGljVGFibGVzCi0gICAgXSBEaXJlY3RvcnlFbnRyeVN5bmMgOiBF
bnRyeVN5bmMgewotICAgICAgICBEaXJlY3RvcnlSZWFkZXJTeW5jIGNyZWF0ZVJlYWRlcigpIHJh
aXNlcyAoRmlsZUV4Y2VwdGlvbik7Ci0gICAgICAgIFtDdXN0b21dIEZpbGVFbnRyeVN5bmMgZ2V0
RmlsZShpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3Ry
aW5nXSBET01TdHJpbmcgcGF0aCwgaW4gV2ViS2l0RmxhZ3MgZmxhZ3MpIHJhaXNlcyAoRmlsZUV4
Y2VwdGlvbik7Ci0gICAgICAgIFtDdXN0b21dIERpcmVjdG9yeUVudHJ5U3luYyBnZXREaXJlY3Rv
cnkoaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5kZWZpbmVkQXM9TnVsbFN0cmlu
Z10gRE9NU3RyaW5nIHBhdGgsIGluIFdlYktpdEZsYWdzIGZsYWdzKSByYWlzZXMgKEZpbGVFeGNl
cHRpb24pOwotICAgICAgICB2b2lkIHJlbW92ZVJlY3Vyc2l2ZWx5KCkgcmFpc2VzIChGaWxlRXhj
ZXB0aW9uKTsKLSAgICB9OwotfQpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3Rv
cnlSZWFkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0
b3J5UmVhZGVyLmNwcAkocmV2aXNpb24gMTEwNDY1KQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9EaXJlY3RvcnlSZWFkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDU5ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICog
ZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRGlyZWN0b3J5UmVhZGVyLmgiCi0KLSNpZiBFTkFC
TEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJFbnRyaWVzQ2FsbGJhY2suaCIKLSNpbmNsdWRl
ICJFbnRyeUFycmF5LmgiCi0jaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgotI2luY2x1ZGUgIkZp
bGVFcnJvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLURpcmVjdG9yeVJlYWRlcjo6RGly
ZWN0b3J5UmVhZGVyKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0sIGNv
bnN0IFN0cmluZyYgZnVsbFBhdGgpCi0gICAgOiBEaXJlY3RvcnlSZWFkZXJCYXNlKGZpbGVTeXN0
ZW0sIGZ1bGxQYXRoKQotewotfQotCi12b2lkIERpcmVjdG9yeVJlYWRlcjo6cmVhZEVudHJpZXMo
UGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+IGVudHJpZXNDYWxsYmFjaywgUGFzc1JlZlB0cjxF
cnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQotewotICAgIGlmICghbV9oYXNNb3JlRW50cmll
cykgewotICAgICAgICBmaWxlc3lzdGVtKCktPnNjaGVkdWxlQ2FsbGJhY2soZW50cmllc0NhbGxi
YWNrLCBFbnRyeUFycmF5OjpjcmVhdGUoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
ZmlsZXN5c3RlbSgpLT5yZWFkRGlyZWN0b3J5KHRoaXMsIG1fZnVsbFBhdGgsIGVudHJpZXNDYWxs
YmFjaywgZXJyb3JDYWxsYmFjayk7Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZ
U1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXIuaAkocmV2
aXNpb24gMTEwNDY1KQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw2NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBEaXJlY3RvcnlSZWFkZXJf
aAotI2RlZmluZSBEaXJlY3RvcnlSZWFkZXJfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQot
Ci0jaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIkRpcmVjdG9yeVJlYWRlckJh
c2UuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBFbnRyaWVzQ2FsbGJhY2s7Ci1jbGFzcyBFbnRyaWVzQ2FsbGJhY2tzOwotY2xh
c3MgRXJyb3JDYWxsYmFjazsKLQotY2xhc3MgRGlyZWN0b3J5UmVhZGVyIDogcHVibGljIERpcmVj
dG9yeVJlYWRlckJhc2UgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERpcmVjdG9y
eVJlYWRlcj4gY3JlYXRlKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0s
IGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IERpcmVjdG9yeVJlYWRlcihmaWxlU3lzdGVtLCBmdWxsUGF0aCkpOwotICAgIH0KLQotICAg
IHZvaWQgcmVhZEVudHJpZXMoUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+LCBQYXNzUmVmUHRy
PEVycm9yQ2FsbGJhY2s+ID0gMCk7Ci0KLSAgICBET01GaWxlU3lzdGVtKiBmaWxlc3lzdGVtKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRmlsZVN5c3RlbSo+KG1fZmlsZVN5c3RlbS5n
ZXQoKSk7IH0KLQotcHJpdmF0ZToKLSAgICBEaXJlY3RvcnlSZWFkZXIoUGFzc1JlZlB0cjxET01G
aWxlU3lzdGVtQmFzZT4sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpOwotfTsKLQotfQotCi0jZW5k
aWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gRGlyZWN0b3J5UmVhZGVyX2gK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlci5pZGwJKHJldmlz
aW9uIDExMDQ2NSkKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotbW9kdWxlIHN0b3JhZ2UgewotICAgIGlu
dGVyZmFjZSBbCi0gICAgICAgIENvbmRpdGlvbmFsPUZJTEVfU1lTVEVNLAotICAgICAgICBKU05v
U3RhdGljVGFibGVzCi0gICAgXSBEaXJlY3RvcnlSZWFkZXIgewotICAgICAgICB2b2lkIHJlYWRF
bnRyaWVzKGluIFtDYWxsYmFja10gRW50cmllc0NhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4g
W09wdGlvbmFsLCBDYWxsYmFja10gRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKTsKLSAgICB9
OwotfQpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJCYXNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJCYXNl
LmgJKHJldmlzaW9uIDExMDQ2NSkKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5
UmVhZGVyQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY4ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0
aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIERpcmVj
dG9yeVJlYWRlckJhc2VfaAotI2RlZmluZSBEaXJlY3RvcnlSZWFkZXJCYXNlX2gKLQotI2lmIEVO
QUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW1CYXNlLmgiCi0jaW5j
bHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
RGlyZWN0b3J5UmVhZGVyQmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPERpcmVjdG9yeVJlYWRlckJh
c2U+IHsKLXB1YmxpYzoKLSAgICBET01GaWxlU3lzdGVtQmFzZSogZmlsZXN5c3RlbSgpIGNvbnN0
IHsgcmV0dXJuIG1fZmlsZVN5c3RlbS5nZXQoKTsgfQotICAgIHZvaWQgc2V0SGFzTW9yZUVudHJp
ZXMoYm9vbCBoYXNNb3JlRW50cmllcykgeyBtX2hhc01vcmVFbnRyaWVzID0gaGFzTW9yZUVudHJp
ZXM7IH0KLQotcHJvdGVjdGVkOgotICAgIERpcmVjdG9yeVJlYWRlckJhc2UoUGFzc1JlZlB0cjxE
T01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKLSAg
ICAgICAgOiBtX2ZpbGVTeXN0ZW0oZmlsZVN5c3RlbSkKLSAgICAgICAgLCBtX2Z1bGxQYXRoKGZ1
bGxQYXRoKQotICAgICAgICAsIG1faGFzTW9yZUVudHJpZXModHJ1ZSkKLSAgICB7Ci0gICAgfQot
Ci0gICAgUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBtX2ZpbGVTeXN0ZW07Ci0KLSAgICAvLyBU
aGlzIGlzIGEgdmlydHVhbCBwYXRoLgotICAgIFN0cmluZyBtX2Z1bGxQYXRoOwotCi0gICAgYm9v
bCBtX2hhc01vcmVFbnRyaWVzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gRGlyZWN0b3J5UmVhZGVyQmFz
ZV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyU3lu
Yy5jcHAJKHJldmlzaW9uIDExMDQ2NSkKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0
b3J5UmVhZGVyU3luYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNjggKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0
cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0g
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJEaXJlY3RvcnlSZWFkZXJTeW5jLmgiCi0KLSNpZiBFTkFC
TEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeS5oIgotI2luY2x1ZGUg
IkRpcmVjdG9yeUVudHJ5U3luYy5oIgotI2luY2x1ZGUgIkVudHJ5QXJyYXlTeW5jLmgiCi0jaW5j
bHVkZSAiRW50cnlTeW5jLmgiCi0jaW5jbHVkZSAiRmlsZUVudHJ5U3luYy5oIgotI2luY2x1ZGUg
IkZpbGVFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJTeW5jQ2FsbGJhY2tIZWxwZXIuaCIKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1EaXJlY3RvcnlSZWFkZXJTeW5jOjpEaXJlY3RvcnlSZWFkZXJT
eW5jKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmlu
ZyYgZnVsbFBhdGgpCi0gICAgOiBEaXJlY3RvcnlSZWFkZXJCYXNlKGZpbGVTeXN0ZW0sIGZ1bGxQ
YXRoKQotewotfQotCi1QYXNzUmVmUHRyPEVudHJ5QXJyYXlTeW5jPiBEaXJlY3RvcnlSZWFkZXJT
eW5jOjpyZWFkRW50cmllcyhFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBlYyA9IDA7Ci0gICAg
aWYgKCFtX2hhc01vcmVFbnRyaWVzKQotICAgICAgICByZXR1cm4gRW50cnlBcnJheVN5bmM6OmNy
ZWF0ZSgpOwotCi0gICAgRW50cmllc1N5bmNDYWxsYmFja0hlbHBlciBoZWxwZXIobV9maWxlU3lz
dGVtLT5hc3luY0ZpbGVTeXN0ZW0oKSk7Ci0gICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPnJlYWREaXJl
Y3RvcnkodGhpcywgbV9mdWxsUGF0aCwgaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIu
ZXJyb3JDYWxsYmFjaygpKSkgewotICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246OklOVkFMSURf
TU9ESUZJQ0FUSU9OX0VSUjsKLSAgICAgICAgc2V0SGFzTW9yZUVudHJpZXMoZmFsc2UpOwotICAg
ICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIGhlbHBlci5nZXRSZXN1bHQoZWMpOwot
fQotCi19IC8vIG5hbWVzcGFjZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJTeW5jLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJTeW5jLmgJKHJldmlz
aW9uIDExMDQ2NSkKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyU3lu
Yy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIERpcmVjdG9yeVJlYWRl
clN5bmNfaAotI2RlZmluZSBEaXJlY3RvcnlSZWFkZXJTeW5jX2gKLQotI2lmIEVOQUJMRShGSUxF
X1NZU1RFTSkKLQotI2luY2x1ZGUgIkRpcmVjdG9yeVJlYWRlckJhc2UuaCIKLSNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBFbnRyeUFy
cmF5U3luYzsKLQotdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKLQotY2xhc3MgRGlyZWN0b3J5
UmVhZGVyU3luYyA6IHB1YmxpYyBEaXJlY3RvcnlSZWFkZXJCYXNlIHsKLXB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxEaXJlY3RvcnlSZWFkZXJTeW5jPiBjcmVhdGUoUGFzc1JlZlB0cjxE
T01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGlyZWN0b3J5UmVhZGVyU3luYyhmaWxl
U3lzdGVtLCBmdWxsUGF0aCkpOwotICAgIH0KLQotICAgIFBhc3NSZWZQdHI8RW50cnlBcnJheVN5
bmM+IHJlYWRFbnRyaWVzKEV4Y2VwdGlvbkNvZGUmKTsKLQotcHJpdmF0ZToKLSAgICBEaXJlY3Rv
cnlSZWFkZXJTeW5jKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+LCBjb25zdCBTdHJpbmcm
IGZ1bGxQYXRoKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklM
RV9TWVNURU0pCi0KLSNlbmRpZiAvLyBEaXJlY3RvcnlSZWFkZXJTeW5jX2gKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyU3luYy5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJTeW5jLmlkbAkocmV2aXNpb24g
MTEwNDY1KQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJTeW5jLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotbW9kdWxlIHN0b3JhZ2UgewotICAgIGlu
dGVyZmFjZSBbCi0gICAgICAgIENvbmRpdGlvbmFsPUZJTEVfU1lTVEVNLAotICAgICAgICBKU05v
U3RhdGljVGFibGVzCi0gICAgXSBEaXJlY3RvcnlSZWFkZXJTeW5jIHsKLSAgICAgICAgRW50cnlB
cnJheVN5bmMgcmVhZEVudHJpZXMoKSByYWlzZXMgKEZpbGVFeGNlcHRpb24pOwotICAgIH07Ci19
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>