<?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>75063</bug_id>
          
          <creation_ts>2011-12-21 21:34:33 -0800</creation_ts>
          <short_desc>Start extracting platform specific bits out of PlatformEvents</short_desc>
          <delta_ts>2011-12-23 22:35:22 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>525982</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-12-21 21:34:33 -0800</bug_when>
    <thetext>Start extracting platform specific bits out of PlatformEvents</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525983</commentid>
    <comment_count>1</comment_count>
      <attachid>120268</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-12-21 21:35:03 -0800</bug_when>
    <thetext>Created attachment 120268
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525985</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-12-21 21:39:02 -0800</bug_when>
    <thetext>This initial patch moves all the NSEvent -&gt; PlatformEvent construction into a new factory style construction model.  The long term goal is to merge the WebKit2 WebEvents with these cleaned up PlatformEvents.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526466</commentid>
    <comment_count>3</comment_count>
      <attachid>120369</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-12-22 13:16:23 -0800</bug_when>
    <thetext>Created attachment 120369
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526489</commentid>
    <comment_count>4</comment_count>
      <attachid>120369</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-22 13:46:48 -0800</bug_when>
    <thetext>Comment on attachment 120369
Patch

Attachment 120369 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11019012</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526490</commentid>
    <comment_count>5</comment_count>
      <attachid>120375</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-12-22 13:48:01 -0800</bug_when>
    <thetext>Created attachment 120375
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526496</commentid>
    <comment_count>6</comment_count>
      <attachid>120375</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-12-22 13:58:40 -0800</bug_when>
    <thetext>Comment on attachment 120375
Patch

Attachment 120375 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10955033</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526499</commentid>
    <comment_count>7</comment_count>
      <attachid>120375</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-12-22 14:09:42 -0800</bug_when>
    <thetext>Comment on attachment 120375
Patch

Attachment 120375 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11016030</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526501</commentid>
    <comment_count>8</comment_count>
      <attachid>120375</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-22 14:11:51 -0800</bug_when>
    <thetext>Comment on attachment 120375
Patch

Attachment 120375 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10939028</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526521</commentid>
    <comment_count>9</comment_count>
      <attachid>120383</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-12-22 14:37:36 -0800</bug_when>
    <thetext>Created attachment 120383
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526527</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-22 14:40:12 -0800</bug_when>
    <thetext>Attachment 120369 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/platform/mac/PlatformEventFactory.h:31:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 24 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>526537</commentid>
    <comment_count>11</comment_count>
      <attachid>120385</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-12-22 14:47:08 -0800</bug_when>
    <thetext>Created attachment 120385
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526544</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-22 14:53:53 -0800</bug_when>
    <thetext>Attachment 120385 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/platform/mac/PlatformEventFactory.h:31:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 31 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>526547</commentid>
    <comment_count>13</comment_count>
      <attachid>120385</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-12-22 14:58:07 -0800</bug_when>
    <thetext>Comment on attachment 120385
Patch

Attachment 120385 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11019054</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526556</commentid>
    <comment_count>14</comment_count>
      <attachid>120385</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-22 15:10:22 -0800</bug_when>
    <thetext>Comment on attachment 120385
Patch

Attachment 120385 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10939059</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526570</commentid>
    <comment_count>15</comment_count>
      <attachid>120385</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-12-22 15:20:48 -0800</bug_when>
    <thetext>Comment on attachment 120385
Patch

Attachment 120385 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10955074</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526711</commentid>
    <comment_count>16</comment_count>
      <attachid>120428</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-12-22 20:12:51 -0800</bug_when>
    <thetext>Created attachment 120428
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526714</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-22 20:15:34 -0800</bug_when>
    <thetext>Attachment 120428 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/platform/mac/PlatformEventFactory.h:31:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 32 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>526716</commentid>
    <comment_count>18</comment_count>
      <attachid>120428</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-12-22 20:29:06 -0800</bug_when>
    <thetext>Comment on attachment 120428
Patch

Attachment 120428 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10962149</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526717</commentid>
    <comment_count>19</comment_count>
      <attachid>120428</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-22 20:34:08 -0800</bug_when>
    <thetext>Comment on attachment 120428
Patch

Attachment 120428 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11019152</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526718</commentid>
    <comment_count>20</comment_count>
      <attachid>120431</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-12-22 20:35:45 -0800</bug_when>
    <thetext>Created attachment 120431
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526720</commentid>
    <comment_count>21</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-12-22 20:47:08 -0800</bug_when>
    <thetext>I am not sure if I like the 4 factory functions.  I might be happier exposing the interfaces for the builder classes so that the header had classes like:

    class NativePlatformMouseEvent : public PlatformMouseEvent {
    public:
        NativePlatformMouseEvent(NSEvent *event, NSView *windowView);
    };

instead of:

    static PlatformMouseEvent createPlatformMouseEvent(NSEvent *, NSView *windowView);

and call sites were:

    foo-&gt;handleMouseEvent(NativePlatformMouseEvent(cocoaEvent, view));

instead of:

    foo-&gt;handleMouseEvent(PlatformEventFactory::createPlatformMouseEvent(cocoaEvent, view));

Hrm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526936</commentid>
    <comment_count>22</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-12-23 19:46:00 -0800</bug_when>
    <thetext>Committed r103643: &lt;http://trac.webkit.org/changeset/103643&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526953</commentid>
    <comment_count>23</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-23 21:27:33 -0800</bug_when>
    <thetext>This patch appears to have broken fast/events/continuous-platform-wheelevent-in-scrolling-div.html and fast/events/platform-wheelevent-in-scrolling-div.html on Mac:

Started failing here:
http://build.webkit.org/builders/SnowLeopard%20Intel%20Release%20(Tests)/builds/35834
http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r103643%20(35834)/results.html

Didn&apos;t fail on the previous build:
http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r103641%20(35833)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526959</commentid>
    <comment_count>24</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-23 21:48:34 -0800</bug_when>
    <thetext>This patch also broke Chromium Mac builds:
http://build.webkit.org/builders/Chromium%20Mac%20Release/builds/28684/steps/compile-webkit/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526963</commentid>
    <comment_count>25</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-23 22:35:22 -0800</bug_when>
    <thetext>Fixed Chromium Mac build in http://trac.webkit.org/changeset/103652.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120268</attachid>
            <date>2011-12-21 21:35:03 -0800</date>
            <delta_ts>2011-12-22 13:16:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75063-20111221213508.patch</filename>
            <type>text/plain</type>
            <size>89437</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzMzAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODcxYTMzMGE4MDNkMzYy
NTJkMzdlM2Y2ZTc5NmQyZmYyMzg2ZTg2My4uZmRlMjJhOWE5N2I1NjhkM2U0YzM4ODU0YmUxNGFl
YjhlMWFjNjg2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDExLTEyLTIxICBTYW0g
V2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RhcnQgZXh0cmFjdGluZyBwbGF0
Zm9ybSBzcGVjaWZpYyBiaXRzIG91dCBvZiBQbGF0Zm9ybUV2ZW50cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUwNjMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKwor
ICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmtleUV2ZW50KToKKyAgICAgICAgKiBwYWdlL21hYy9F
dmVudEhhbmRsZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OndoZWVs
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjprZXlFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmN1cnJlbnRQbGF0Zm9ybU1vdXNlRXZlbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtRXZlbnQ6OnNoaWZ0S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6
OmN0cmxLZXkpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6YWx0S2V5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6Om1ldGFLZXkpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1FdmVudDo6bW9kaWZpZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
RXZlbnQ6OlBsYXRmb3JtRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtR2VzdHVy
ZUV2ZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmtleUlkZW50
aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50OjptYWNDaGFy
Q29kZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmlzU3lzdGVt
S2V5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
S2V5RXZlbnRNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0
b3J5Lmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9y
eS5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpnbG9iYWxQb2ludCk6CisgICAgICAgIChX
ZWJDb3JlOjpnbG9iYWxQb2ludEZvckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnBvaW50Rm9y
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6bW91c2VCdXR0b25Gb3JFdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjptb3VzZUV2ZW50VHlwZUZvckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNs
aWNrQ291bnRGb3JFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjptb21lbnR1bVBoYXNlRm9yRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6cGhhc2VGb3JFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpnZXN0dXJlRXZlbnRUeXBlRm9yRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6dGV4dEZyb21F
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjp1bm1vZGlmaWVkVGV4dEZyb21FdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjprZXlJZGVudGlmaWVyRm9yS2V5RXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6aXNLZXlwYWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjp3aW5kb3dzS2V5Q29kZUZvcktl
eUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmlzS2V5VXBFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjptb2RpZmllcnNGb3JFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1vdXNl
RXZlbnRCdWlsZGVyOjpQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQbGF0Zm9ybU1vdXNlRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50QnVpbGRlcjo6UGxhdGZvcm1XaGVlbEV2
ZW50QnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3Jl
YXRlUGxhdGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9h
cmRFdmVudEJ1aWxkZXI6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudEJ1aWxkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1FdmVudEZhY3Rvcnk6OmNyZWF0ZVBsYXRmb3JtS2V5Ym9hcmRFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXI6OlBsYXRm
b3JtR2VzdHVyZUV2ZW50QnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50
RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1HZXN0dXJlRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9QbGF0Zm9ybU1vdXNlRXZlbnRNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dl
YkNvcmVTeXN0ZW1JbnRlcmZhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5
c3RlbUludGVyZmFjZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2hlZWxFdmVudE1hYy5t
bToKKwogMjAxMS0xMi0xOSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAg
IEFkZCBzdXBwb3J0IGZvciBzY3JvbGxMaW5lRG93bjogYW5kIHNjcm9sbExpbmVVcDogTlNSZXNw
b25kZXIgc2VsZWN0b3JzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggODEzZTVmNzEzNTFhNDk0ZTcyNDkz
MTY1Njc4ZDdmNWIwNjNkZTQ5YS4uY2U4NjI3ZjNjODJhOTZhYjZjMTJiMWJiZTkwM2JkMDkxNmMy
MDc3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDExLTEyLTIxICBTYW0g
V2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RhcnQgZXh0cmFjdGluZyBwbGF0
Zm9ybSBzcGVjaWZpYyBiaXRzIG91dCBvZiBQbGF0Zm9ybUV2ZW50cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUwNjMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlN5c3Rl
bUludGVyZmFjZS5tbToKKyAgICAgICAgKEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKToKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZp
ZXcubW06CisgICAgICAgICgtW1dlYkhUTUxWaWV3IG1lbnVGb3JFdmVudDpdKToKKyAgICAgICAg
KC1bV2ViSFRNTFZpZXcgYWNjZXB0c0ZpcnN0TW91c2U6XSk6CisgICAgICAgICgtW1dlYkhUTUxW
aWV3IHNob3VsZERlbGF5V2luZG93T3JkZXJpbmdGb3JFdmVudDpdKToKKyAgICAgICAgKGN1cnJl
bnRLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgZmxhZ3NDaGFuZ2VkOl0p
OgorICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlldy5tbToKKyAgICAgICAgKC1bV2ViUERGVmll
dyBQREZWaWV3V2lsbENsaWNrT25MaW5rOndpdGhVUkw6XSk6CisgICAgICAgICogV2ViVmlldy9X
ZWJWaWV3Lm1tOgorCiAyMDExLTEyLTE5ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBw
bGUuY29tPgogCiAgICAgICAgIEVuYWJsZSA8dHJhY2s+IGZvciBNYWMgYnVpbGQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpp
bmRleCA3MzczOGEzM2JmZTExYjJjYjM1ZTk2Yjk5Mzg2NmNiNjc4NTYyNWY4Li45YTIyMzk5NTI0
MDMyNmZjY2QxMzAyMjM3NGM3NzNkZDkyMzc2NjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMTEtMTItMjEgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBT
dGFydCBleHRyYWN0aW5nIHBsYXRmb3JtIHNwZWNpZmljIGJpdHMgb3V0IG9mIFBsYXRmb3JtRXZl
bnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTA2
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hh
cmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYktpdDJQbGF0
Zm9ybU1vdXNlRXZlbnQ6OldlYktpdDJQbGF0Zm9ybU1vdXNlRXZlbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJLaXQyUGxhdGZvcm1XaGVlbEV2ZW50OjpXZWJLaXQyUGxhdGZvcm1XaGVlbEV2ZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0MlBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6V2ViS2l0
MlBsYXRmb3JtS2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYktpdDJQbGF0Zm9y
bUdlc3R1cmVFdmVudDo6V2ViS2l0MlBsYXRmb3JtR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdl
YktpdDo6V2ViS2l0MlBsYXRmb3JtVG91Y2hFdmVudDo6V2ViS2l0MlBsYXRmb3JtVG91Y2hFdmVu
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbToKKyAgICAg
ICAgKEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKToKKwogMjAxMS0xMi0xOSAgU2FtIFdlaW5p
ZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBzY3JvbGxMaW5l
RG93bjogYW5kIHNjcm9sbExpbmVVcDogTlNSZXNwb25kZXIgc2VsZWN0b3JzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCmluZGV4IGE0MzNmMmI3ZjQwNjRkY2U4MDI3MWVlMDk2OTM3YWZkY2IxYmRkMTMuLjUy
YjY2ZmJlMzYwNzExYTg2ZDgxNzEyNzIwMjBlNDFiMzEzOTgxOTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCkBAIC0xNTcsNiArMTU3LDcgQEAgX19aTjdXZWJDb3JlMTB0b0RvY3VtZW50RU4zSlNDN0pT
VmFsdWVFCiBfX1pON1dlYkNvcmUxMUJpdG1hcEltYWdlQzFFUDdDR0ltYWdlUE5TXzEzSW1hZ2VP
YnNlcnZlckUKIF9fWk43V2ViQ29yZTExQ2FjaGVkRnJhbWUyM2NhY2hlZEZyYW1lUGxhdGZvcm1E
YXRhRXYKIF9fWk43V2ViQ29yZTExQ2FjaGVkRnJhbWUyNnNldENhY2hlZEZyYW1lUGxhdGZvcm1E
YXRhRU4zV1RGMTBQYXNzT3duUHRySU5TXzIzQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGFFRUUKK19f
Wk43V2ViQ29yZTExQ2FjaGVkSW1hZ2U1aW1hZ2VFdgogX19aTjdXZWJDb3JlMTFGaWxlQ2hvb3Nl
cjEwY2hvb3NlRmlsZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTExRmlsZUNob29zZXIx
MWNob29zZUZpbGVzRVJLTjNXVEY2VmVjdG9ySU5TMV82U3RyaW5nRUxtMEVFRQogX19aTjdXZWJD
b3JlMTFGaWxlQ2hvb3NlckQxRXYKQEAgLTI5Miw4ICsyOTMsOCBAQCBfX1pON1dlYkNvcmUxMlNo
YXJlZEJ1ZmZlckQxRXYKIF9fWk43V2ViQ29yZTEyU3BlbGxDaGVja2VyOGRpZENoZWNrRWlSS04z
V1RGNlZlY3RvcklOU18xOFRleHRDaGVja2luZ1Jlc3VsdEVMbTBFRUUKIF9fWk43V2ViQ29yZTEy
VGV4dEVuY29kaW5nQzFFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxMlRleHRJdGVyYXRv
cjExcmFuZ2VMZW5ndGhFUEtOU181UmFuZ2VFYgotX19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3Iy
OWdldExvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlRVBOU183RWxlbWVudEVQS05TXzVSYW5nZUVS
bVM2XwogX19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3IyNnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVu
Z3RoRVBOU183RWxlbWVudEVpaWIKK19fWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yMjlnZXRMb2Nh
dGlvbkFuZExlbmd0aEZyb21SYW5nZUVQTlNfN0VsZW1lbnRFUEtOU181UmFuZ2VFUm1TNl8KIF9f
Wk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yN2FkdmFuY2VFdgogX19aTjdXZWJDb3JlMTJUZXh0SXRl
cmF0b3I4c3VicmFuZ2VFUE5TXzVSYW5nZUVpaQogX19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3JD
MUVQS05TXzVSYW5nZUVOU18yMFRleHRJdGVyYXRvckJlaGF2aW9yRQpAQCAtMzY1LDggKzM2Niw4
IEBAIF9fWk43V2ViQ29yZTE0U2NoZW1lUmVnaXN0cnkyNXJlZ2lzdGVyVVJMU2NoZW1lQXNTZWN1
cmVFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxNFNjaGVtZVJlZ2lzdHJ5MzJyZWdpc3Rl
clVSTFNjaGVtZUFzRW1wdHlEb2N1bWVudEVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE0
U2NoZW1lUmVnaXN0cnkzNHNob3VsZExvYWRVUkxTY2hlbWVBc0VtcHR5RG9jdW1lbnRFUktOM1dU
RjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxNFNjaGVtZVJlZ2lzdHJ5NDBzZXREb21haW5SZWxheGF0
aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lRWJSS04zV1RGNlN0cmluZ0UKLV9fWk43V2ViQ29yZTE0
U2NoZW1lUmVnaXN0cnk2MnJlZ2lzdGVyVVJMU2NoZW1lQXNBbGxvd2luZ0xvY2FsU3RvcmFnZUFj
Y2Vzc0luUHJpdmF0ZUJyb3dzaW5nRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTRTY2hl
bWVSZWdpc3RyeTU4cmVnaXN0ZXJVUkxTY2hlbWVBc0FsbG93aW5nRGF0YWJhc2VBY2Nlc3NJblBy
aXZhdGVCcm93c2luZ0VSS04zV1RGNlN0cmluZ0UKK19fWk43V2ViQ29yZTE0U2NoZW1lUmVnaXN0
cnk2MnJlZ2lzdGVyVVJMU2NoZW1lQXNBbGxvd2luZ0xvY2FsU3RvcmFnZUFjY2Vzc0luUHJpdmF0
ZUJyb3dzaW5nRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTRTY3JvbGxhYmxlQXJlYTE2
aGFuZGxlV2hlZWxFdmVudEVSS05TXzE4UGxhdGZvcm1XaGVlbEV2ZW50RQogX19aTjdXZWJDb3Jl
MTRTY3JvbGxhYmxlQXJlYTE3d2lsbEVuZExpdmVSZXNpemVFdgogX19aTjdXZWJDb3JlMTRTY3Jv
bGxhYmxlQXJlYTE5d2lsbFN0YXJ0TGl2ZVJlc2l6ZUV2CkBAIC0zOTIsMTUgKzM5MywxNSBAQCBf
X1pON1dlYkNvcmUxNFNlY3VyaXR5UG9saWN5MjJnZW5lcmF0ZVJlZmVycmVySGVhZGVyRU5TMF8x
NFJlZmVycmVyUG9saWN5RVJLTlNfNAogX19aTjdXZWJDb3JlMTRTZWN1cml0eVBvbGljeTI3cmVz
ZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzRXYKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlQb2xpY3ky
OWFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5RVJLTlNfMTRTZWN1cml0eU9yaWdpbkVSS04z
V1RGNlN0cmluZ0VTN19iCiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5UG9saWN5MzJyZW1vdmVPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeUVSS05TXzE0U2VjdXJpdHlPcmlnaW5FUktOM1dURjZTdHJp
bmdFUzdfYgotX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjdvcmlnaW5zRVJOM1dURjZWZWN0
b3JJTlMxXzZSZWZQdHJJTlNfMTRTZWN1cml0eU9yaWdpbkVFRUxtMEVFRQotX19aTjdXZWJDb3Jl
MTRTdG9yYWdlVHJhY2tlcjd0cmFja2VyRXYKLV9fWk43V2ViQ29yZTE0U3RvcmFnZVRyYWNrZXI5
c2V0Q2xpZW50RVBOU18yMFN0b3JhZ2VUcmFja2VyQ2xpZW50RQogX19aTjdXZWJDb3JlMTRTdG9y
YWdlVHJhY2tlcjEyZGVsZXRlT3JpZ2luRVBOU18xNFNlY3VyaXR5T3JpZ2luRQogX19aTjdXZWJD
b3JlMTRTdG9yYWdlVHJhY2tlcjE2ZGVsZXRlQWxsT3JpZ2luc0V2CiBfX1pON1dlYkNvcmUxNFN0
b3JhZ2VUcmFja2VyMTZzeW5jTG9jYWxTdG9yYWdlRXYKIF9fWk43V2ViQ29yZTE0U3RvcmFnZVRy
YWNrZXIxN2luaXRpYWxpemVUcmFja2VyRVJLTjNXVEY2U3RyaW5nRVBOU18yMFN0b3JhZ2VUcmFj
a2VyQ2xpZW50RQogX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjE4ZGlza1VzYWdlRm9yT3Jp
Z2luRVBOU18xNFNlY3VyaXR5T3JpZ2luRQogX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjMy
c3luY0ZpbGVTeXN0ZW1BbmRUcmFja2VyRGF0YWJhc2VFdgorX19aTjdXZWJDb3JlMTRTdG9yYWdl
VHJhY2tlcjdvcmlnaW5zRVJOM1dURjZWZWN0b3JJTlMxXzZSZWZQdHJJTlNfMTRTZWN1cml0eU9y
aWdpbkVFRUxtMEVFRQorX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjd0cmFja2VyRXYKK19f
Wk43V2ViQ29yZTE0U3RvcmFnZVRyYWNrZXI5c2V0Q2xpZW50RVBOU18yMFN0b3JhZ2VUcmFja2Vy
Q2xpZW50RQogX19aTjdXZWJDb3JlMTRlbmRPZlBhcmFncmFwaEVSS05TXzE1VmlzaWJsZVBvc2l0
aW9uRU5TXzI3RWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlRQogX19aTjdXZWJDb3JlMTVBZmZp
bmVUcmFuc2Zvcm01ZmxpcFlFdgogX19aTjdXZWJDb3JlMTVBZmZpbmVUcmFuc2Zvcm01c2NhbGVF
ZApAQCAtNDMyLDggKzQzMyw4IEBAIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MTFjbGVh
clNoYWRvd0V2CiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDEyc2V0RmlsbENvbG9yRVJL
TlNfNUNvbG9yRU5TXzEwQ29sb3JTcGFjZUUKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0
MTVzZXRGaWxsR3JhZGllbnRFTjNXVEYxMFBhc3NSZWZQdHJJTlNfOEdyYWRpZW50RUVFCiBfX1pO
N1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDE4c2V0U2hvdWxkQW50aWFsaWFzRWIKLV9fWk43V2Vi
Q29yZTE1R3JhcGhpY3NDb250ZXh0MjBzZXRTaG91bGRTbW9vdGhGb250c0ViCiBfX1pON1dlYkNv
cmUxNUdyYXBoaWNzQ29udGV4dDIwZW5kVHJhbnNwYXJlbmN5TGF5ZXJFdgorX19aTjdXZWJDb3Jl
MTVHcmFwaGljc0NvbnRleHQyMHNldFNob3VsZFNtb290aEZvbnRzRWIKIF9fWk43V2ViQ29yZTE1
R3JhcGhpY3NDb250ZXh0MjFzZXRDb21wb3NpdGVPcGVyYXRpb25FTlNfMTdDb21wb3NpdGVPcGVy
YXRvckUKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MjJhcHBseURldmljZVNjYWxlRmFj
dG9yRWYKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MjJiZWdpblRyYW5zcGFyZW5jeUxh
eWVyRWYKQEAgLTUzOCw3ICs1MzksNiBAQCBfX1pON1dlYkNvcmUxN1JlZ3VsYXJFeHByZXNzaW9u
QzFFUktOM1dURjZTdHJpbmdFTlMxXzE5VGV4dENhc2VTZW5zaXRpdml0eUUKIF9fWk43V2ViQ29y
ZTE3UmVndWxhckV4cHJlc3Npb25EMUV2CiBfX1pON1dlYkNvcmUxN2NhY2hlRE9NU3RydWN0dXJl
RVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOM0pTQzlTdHJ1Y3R1cmVFUEtOUzJfOUNsYXNzSW5m
b0UKIF9fWk43V2ViQ29yZTE3b3BlblRlbXBvcmFyeUZpbGVFUktOM1dURjZTdHJpbmdFUmkKLV9f
Wk43V2ViQ29yZTE4UGxhdGZvcm1Nb3VzZUV2ZW50QzFFUDdOU0V2ZW50UDZOU1ZpZXcKIF9fWk43
V2ViQ29yZTE4UGxhdGZvcm1TdHJhdGVnaWVzMjZjcmVhdGVMb2NhbGl6YXRpb25TdHJhdGVneUV2
CiBfX1pON1dlYkNvcmUxOFNlYXJjaFBvcHVwTWVudU1hY0MxRVBOU18xNVBvcHVwTWVudUNsaWVu
dEUKIF9fWk43V2ViQ29yZTE4aXNTdGFydE9mUGFyYWdyYXBoRVJLTlNfMTVWaXNpYmxlUG9zaXRp
b25FTlNfMjdFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGVFCkBAIC01ODcsNiArNTg3LDggQEAg
X19aTjdXZWJDb3JlMjBEaXNwbGF5U2xlZXBEaXNhYmxlckMxRVBLYwogX19aTjdXZWJDb3JlMjBE
aXNwbGF5U2xlZXBEaXNhYmxlckQxRXYKIF9fWk43V2ViQ29yZTIwTm9kZVJlbmRlcmluZ0NvbnRl
eHRDMUVQTlNfNE5vZGVFCiBfX1pON1dlYkNvcmUyME5vZGVSZW5kZXJpbmdDb250ZXh0RDFFdgor
X19aTjdXZWJDb3JlMjBQbGF0Zm9ybUV2ZW50RmFjdG9yeTI0Y3JlYXRlUGxhdGZvcm1Nb3VzZUV2
ZW50RVA3TlNFdmVudFA2TlNWaWV3CitfX1pON1dlYkNvcmUyMFBsYXRmb3JtRXZlbnRGYWN0b3J5
MjdjcmVhdGVQbGF0Zm9ybUtleWJvYXJkRXZlbnRFUDdOU0V2ZW50CiBfX1pON1dlYkNvcmUyMFJl
bmRlckVtYmVkZGVkT2JqZWN0MzBzZXRTaG93c0NyYXNoZWRQbHVnaW5JbmRpY2F0b3JFdgogX19a
TjdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTExc2V0TWltZVR5cGVFUktOM1dURjZTdHJp
bmdFCiBfX1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTdzZXRIVFRQU3RhdHVzQ29k
ZUVpCkBAIC02MDQsNyArNjA2LDYgQEAgX19aTjdXZWJDb3JlMjBtYWtlUkdCQTMyRnJvbUZsb2F0
c0VmZmZmCiBfX1pON1dlYkNvcmUyMHByb3RvY29sSXNKYXZhU2NyaXB0RVJLTjNXVEY2U3RyaW5n
RQogX19aTjdXZWJDb3JlMjFCYWNrRm9yd2FyZENvbnRyb2xsZXIxMWl0ZW1BdEluZGV4RWkKIF9f
Wk43V2ViQ29yZTIxTWVtb3J5UHJlc3N1cmVIYW5kbGVyN2luc3RhbGxFdgotX19aTjdXZWJDb3Jl
MjFQbGF0Zm9ybUtleWJvYXJkRXZlbnRDMUVQN05TRXZlbnQKIF9fWk43V2ViQ29yZTIxUGxhdGZv
cm1LZXlib2FyZEV2ZW50MjRkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnRFTlNfMTNQbGF0Zm9ybUV2
ZW50NFR5cGVFYgogX19aTjdXZWJDb3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVsZXIyMHNlcnZlUGVu
ZGluZ1JlcXVlc3RzRU5TXzIwUmVzb3VyY2VMb2FkUHJpb3JpdHlFCiBfX1pON1dlYkNvcmUyMVJl
c291cmNlTG9hZFNjaGVkdWxlcjI0c2NoZWR1bGVQbHVnaW5TdHJlYW1Mb2FkRVBOU181RnJhbWVF
UE5TXzMyTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnRFUktOU18xNVJlc291cmNlUmVx
dWVzdEUKQEAgLTY2MCw4ICs2NjEsNiBAQCBfX1pON1dlYkNvcmUyNVBsdWdpbk1haW5UaHJlYWRT
Y2hlZHVsZXIxNnVucmVnaXN0ZXJQbHVnaW5FUDRfTlBQCiBfX1pON1dlYkNvcmUyNVBsdWdpbk1h
aW5UaHJlYWRTY2hlZHVsZXI5c2NoZWR1bGVyRXYKIF9fWk43V2ViQ29yZTI1YWRkTGFuZ3VhZ2VD
aGFuZ2VPYnNlcnZlckVQdlBGdlMwX0UKIF9fWk43V2ViQ29yZTI1Y29tcHV0ZVZpZXdwb3J0QXR0
cmlidXRlc0VOU18xN1ZpZXdwb3J0QXJndW1lbnRzRWlpaWlOU183SW50U2l6ZUUKLV9fWk43V2Vi
Q29yZTUwcmVzdHJpY3RTY2FsZUZhY3RvclRvSW5pdGlhbFNjYWxlSWZOb3RVc2VyU2NhbGFibGVF
Uk5TXzE4Vmlld3BvcnRBdHRyaWJ1dGVzRQotX19aTjdXZWJDb3JlNDByZXN0cmljdE1pbmltdW1T
Y2FsZUZhY3RvclRvVmlld3BvcnRTaXplRVJOU18xOFZpZXdwb3J0QXR0cmlidXRlc0VOU183SW50
U2l6ZUUKIF9fWk43V2ViQ29yZTI1Y29udGV4dE1lbnVJdGVtVGFnT3V0bGluZUV2CiBfX1pON1dl
YkNvcmUyNkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uQzFFdgogX19aTjdXZWJDb3JlMjZVc2Vy
VHlwaW5nR2VzdHVyZUluZGljYXRvcjI3cHJvY2Vzc2luZ1VzZXJUeXBpbmdHZXN0dXJlRXYKQEAg
LTcxOSw2ICs3MTgsNyBAQCBfX1pON1dlYkNvcmUzN2NvbnRleHRNZW51SXRlbVRhZ1RyYW5zZm9y
bWF0aW9uc01lbnVFdgogX19aTjdXZWJDb3JlMzhjb250ZXh0TWVudUl0ZW1UYWdXcml0aW5nRGly
ZWN0aW9uTWVudUV2CiBfX1pON1dlYkNvcmUzbWFjRVJLTlNfMTBDcmVkZW50aWFsRQogX19aTjdX
ZWJDb3JlM21hY0VSS05TXzIzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VFCitfX1pON1dlYkNvcmU0
MHJlc3RyaWN0TWluaW11bVNjYWxlRmFjdG9yVG9WaWV3cG9ydFNpemVFUk5TXzE4Vmlld3BvcnRB
dHRyaWJ1dGVzRU5TXzdJbnRTaXplRQogX19aTjdXZWJDb3JlNDJjb250ZXh0TWVudUl0ZW1UYWdD
aGVja0dyYW1tYXJXaXRoU3BlbGxpbmdFdgogX19aTjdXZWJDb3JlNDJjb250ZXh0TWVudUl0ZW1U
YWdDaGVja1NwZWxsaW5nV2hpbGVUeXBpbmdFdgogX19aTjdXZWJDb3JlNDZjb250ZXh0TWVudUl0
ZW1UYWdDb3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5RXYKQEAgLTc4NSw2ICs3ODUsNyBAQCBf
X1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0
RVBOU18xMENsaWVudFJlY3RFCiBfX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBO
U18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOU18xOUNTU1N0eWxlRGVjbGFyYXRpb25FCiBfX1pON1dl
YkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOU181
UmFuZ2VFCiBfX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xv
YmFsT2JqZWN0RVBOU184Tm9kZUxpc3RFCitfX1pON1dlYkNvcmU1MHJlc3RyaWN0U2NhbGVGYWN0
b3JUb0luaXRpYWxTY2FsZUlmTm90VXNlclNjYWxhYmxlRVJOU18xOFZpZXdwb3J0QXR0cmlidXRl
c0UKIF9fWk43V2ViQ29yZTVDb2xvcjExdHJhbnNwYXJlbnRFCiBfX1pON1dlYkNvcmU1Q29sb3I1
d2hpdGVFCiBfX1pON1dlYkNvcmU1RnJhbWUxMGNyZWF0ZVZpZXdFUktOU183SW50U2l6ZUVSS05T
XzVDb2xvckViUzNfYk5TXzEzU2Nyb2xsYmFyTW9kZUViUzdfYgpAQCAtODM2LDkgKzgzNyw5IEBA
IF9fWk43V2ViQ29yZTZFZGl0b3IyMWFwcGx5U3R5bGVUb1NlbGVjdGlvbkVQTlNfMTlDU1NTdHls
ZURlY2xhcmF0aW9uRU5TXzEwRWRpdEFjCiBfX1pON1dlYkNvcmU2RWRpdG9yMjFpc1NlbGVjdGlv
bk1pc3NwZWxsZWRFdgogX19aTjdXZWJDb3JlNkVkaXRvcjIzc2V0QmFzZVdyaXRpbmdEaXJlY3Rp
b25FMTZXcml0aW5nRGlyZWN0aW9uCiBfX1pON1dlYkNvcmU2RWRpdG9yMjRhZHZhbmNlVG9OZXh0
TWlzc3BlbGxpbmdFYgotX19aTjdXZWJDb3JlNkVkaXRvcjI0cmVwbGFjZVNlbGVjdGlvbldpdGhU
ZXh0RVJLTjNXVEY2U3RyaW5nRWJiCiBfX1pON1dlYkNvcmU2RWRpdG9yMjRjb21wdXRlQW5kU2V0
VHlwaW5nU3R5bGVFUE5TXzE5Q1NTU3R5bGVEZWNsYXJhdGlvbkVOU18xMEVkaXRBY3Rpb25FCiBf
X1pON1dlYkNvcmU2RWRpdG9yMjRpc1NlbGVjdGlvblVuZ3JhbW1hdGljYWxFdgorX19aTjdXZWJD
b3JlNkVkaXRvcjI0cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0RVJLTjNXVEY2U3RyaW5nRWJiCiBf
X1pON1dlYkNvcmU2RWRpdG9yMjZkZWNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbEV2CiBfX1pON1dl
YkNvcmU2RWRpdG9yMjZpbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbEV2CiBfX1pON1dlYkNvcmU2
RWRpdG9yMjZ3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZEVSS04zV1RGNlN0cmluZ0VSS05TMV82
VmVjdG9ySVMyX0xtMEVFRQpAQCAtOTI2LDYgKzkyNyw3IEBAIF9fWk43V2ViQ29yZThJbnRQb2lu
dEMxRVJLOF9OU1BvaW50CiBfX1pON1dlYkNvcmU4UG9zaXRpb25DMUVOM1dURjEwUGFzc1JlZlB0
cklOU180Tm9kZUVFRWlOUzBfMTBBbmNob3JUeXBlRQogX19aTjdXZWJDb3JlOFNldHRpbmdzMTRz
ZXRKYXZhRW5hYmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxNXNldFdlYkdMRW5hYmxlZEVi
CitfX1pON1dlYkNvcmU4U2V0dGluZ3MxNnNldFNjcmlwdEVuYWJsZWRFYgogX19aTjdXZWJDb3Jl
OFNldHRpbmdzMTZzZXRVc2VzUGFnZUNhY2hlRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczE3c2V0
UGx1Z2luc0VuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMThzZXRET01QYXN0ZUFsbG93
ZWRFYgpAQCAtOTM4LDcgKzk0MCw2IEBAIF9fWk43V2ViQ29yZThTZXR0aW5nczE5bWluRE9NVGlt
ZXJJbnRlcnZhbEV2CiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxOXNldFNob3dEZWJ1Z0JvcmRlcnNF
YgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjBzZXRDdXJzaXZlRm9udEZhbWlseUVSS04zV1RGMTJB
dG9taWNTdHJpbmdFMTFVU2NyaXB0Q29kZQogX19aTjdXZWJDb3JlOFNldHRpbmdzMjBzZXRGYW50
YXN5Rm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdFMTFVU2NyaXB0Q29kZQotX19aTjdX
ZWJDb3JlOFNldHRpbmdzMTZzZXRTY3JpcHRFbmFibGVkRWIKIF9fWk43V2ViQ29yZThTZXR0aW5n
czIwc2V0WFNTQXVkaXRvckVuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjFzZXRTaG93
UmVwYWludENvdW50ZXJFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjFzZXRTdGFuZGFyZEZvbnRG
YW1pbHlFUktOM1dURjEyQXRvbWljU3RyaW5nRTExVVNjcmlwdENvZGUKQEAgLTEwMjUsNyArMTAy
Niw2IEBAIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcxN3NldFNjcm9sbFBvc2l0aW9uRVJLTlNfOElu
dFBvaW50RQogX19aTjdXZWJDb3JlOUZyYW1lVmlldzE3c2V0VHJhY2tzUmVwYWludHNFYgogX19a
TjdXZWJDb3JlOUZyYW1lVmlldzE4dXBkYXRlQ29udHJvbFRpbnRzRXYKIF9fWk43V2ViQ29yZTlG
cmFtZVZpZXcxOXNjcm9sbEVsZW1lbnRUb1JlY3RFUE5TXzdFbGVtZW50RVJLTlNfN0ludFJlY3RF
Ci1fX1pON1dlYkNvcmU5RnJhbWVWaWV3NDNzZXRTaG91bGRMYXlvdXRGaXhlZEVsZW1lbnRzUmVs
YXRpdmVUb0ZyYW1lRWIKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMGVudGVyQ29tcG9zaXRpbmdN
b2RlRXYKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMWZsdXNoRGVmZXJyZWRSZXBhaW50c0V2CiBf
X1pON1dlYkNvcmU5RnJhbWVWaWV3MjJzZXRCYXNlQmFja2dyb3VuZENvbG9yRVJLTlNfNUNvbG9y
RQpAQCAtMTAzNiw2ICsxMDM2LDcgQEAgX19aTjdXZWJDb3JlOUZyYW1lVmlldzI5c2V0U2hvdWxk
VXBkYXRlV2hpbGVPZmZzY3JlZW5FYgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzM3dXBkYXRlTGF5
b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZUV2CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3Mzhz
Y3JvbGxQb3NpdGlvbkNoYW5nZWRWaWFQbGF0Zm9ybVdpZGdldEV2CiBfX1pON1dlYkNvcmU5RnJh
bWVWaWV3MzhzeW5jQ29tcG9zaXRpbmdTdGF0ZUluY2x1ZGluZ1N1YmZyYW1lc0V2CitfX1pON1dl
YkNvcmU5RnJhbWVWaWV3NDNzZXRTaG91bGRMYXlvdXRGaXhlZEVsZW1lbnRzUmVsYXRpdmVUb0Zy
YW1lRWIKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXc2Y3JlYXRlRVBOU181RnJhbWVFCiBfX1pON1dl
YkNvcmU5RnJhbWVWaWV3NmNyZWF0ZUVQTlNfNUZyYW1lRVJLTlNfN0ludFNpemVFCiBfX1pON1dl
YkNvcmU5SFRNTE5hbWVzMTBsaXN0aW5nVGFnRQpAQCAtMTEzMiwxMyArMTEzMywxMiBAQCBfX1pO
SzdXZWJDb3JlMTBTY3JvbGxWaWV3MTRzY3JvbGxiYXJNb2Rlc0VSTlNfMTNTY3JvbGxiYXJNb2Rl
RVMyXwogX19aTks3V2ViQ29yZTEwU2Nyb2xsVmlldzE0dXNlRml4ZWRMYXlvdXRFdgogX19aTks3
V2ViQ29yZTEwU2Nyb2xsVmlldzE1Zml4ZWRMYXlvdXRTaXplRXYKIF9fWk5LN1dlYkNvcmUxMFNj
cm9sbFZpZXcxNmNvbnRlbnRzVG9XaW5kb3dFUktOU183SW50UmVjdEUKLV9fWk5LN1dlYkNvcmUx
MFNjcm9sbFZpZXcxNndpbmRvd1RvQ29udGVudHNFUktOU183SW50UmVjdEUKIF9fWk5LN1dlYkNv
cmUxMFNjcm9sbFZpZXcxNmNvbnRlbnRzVG9XaW5kb3dFUktOU184SW50UG9pbnRFCitfX1pOSzdX
ZWJDb3JlMTBTY3JvbGxWaWV3MTZ3aW5kb3dUb0NvbnRlbnRzRVJLTlNfN0ludFJlY3RFCiBfX1pO
SzdXZWJDb3JlMTBTY3JvbGxWaWV3MTZ3aW5kb3dUb0NvbnRlbnRzRVJLTlNfOEludFBvaW50RQot
X19aTks3V2ViQ29yZTEwU2Nyb2xsVmlldzE4dmlzaWJsZUNvbnRlbnRSZWN0RWIKIF9fWk5LN1dl
YkNvcmUxMFNjcm9sbFZpZXcxOGNvbnRlbnRzVG9Sb290Vmlld0VSS05TXzdJbnRSZWN0RQogX19a
Tks3V2ViQ29yZTEwU2Nyb2xsVmlldzE4Y29udGVudHNUb1Jvb3RWaWV3RVJLTlNfOEludFBvaW50
RQotX19aTjdXZWJDb3JlMTFDYWNoZWRJbWFnZTVpbWFnZUV2CitfX1pOSzdXZWJDb3JlMTBTY3Jv
bGxWaWV3MTh2aXNpYmxlQ29udGVudFJlY3RFYgogX19aTks3V2ViQ29yZTExRnJhbWVMb2FkZXIx
MGlzQ29tcGxldGVFdgogX19aTks3V2ViQ29yZTExRnJhbWVMb2FkZXIxNGNhbmNlbGxlZEVycm9y
RVJLTlNfMTVSZXNvdXJjZVJlcXVlc3RFCiBfX1pOSzdXZWJDb3JlMTFGcmFtZUxvYWRlcjE0ZnJh
bWVIYXNMb2FkZWRFdgpAQCAtMTE3MywxMSArMTE3MywxMSBAQCBfX1pOSzdXZWJDb3JlMTFTY3Jp
cHRWYWx1ZTlnZXRTdHJpbmdFUE4zSlNDOUV4ZWNTdGF0ZUVSTjNXVEY2U3RyaW5nRQogX19aTks3
V2ViQ29yZTEySWNvbkRhdGFiYXNlMTJkYXRhYmFzZVBhdGhFdgogX19aTks3V2ViQ29yZTEySWNv
bkRhdGFiYXNlMjRzaG91bGRTdG9wVGhyZWFkQWN0aXZpdHlFdgogX19aTks3V2ViQ29yZTEySWNv
bkRhdGFiYXNlOWlzRW5hYmxlZEV2Ci1fX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QyM2Fic29s
dXRlQm91bmRpbmdCb3hSZWN0RWIKK19fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDEzc3R5bGVJ
blJlZ2lvbkV2CiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QxNGVuY2xvc2luZ0xheWVyRXYK
IF9fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDE1bG9jYWxUb0Fic29sdXRlRVJLTlNfMTBGbG9h
dFBvaW50RWJiCitfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QyM2Fic29sdXRlQm91bmRpbmdC
b3hSZWN0RWIKIF9fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDdjaGlsZEF0RWoKLV9fWk5LN1dl
YkNvcmUxMlJlbmRlck9iamVjdDEzc3R5bGVJblJlZ2lvbkV2CiBfX1pOSzdXZWJDb3JlMTJSZW5k
ZXJXaWRnZXQxNHdpbmRvd0NsaXBSZWN0RXYKIF9fWk5LN1dlYkNvcmUxMlNoYXJlZEJ1ZmZlcjEx
Z2V0U29tZURhdGFFUlBLY2oKIF9fWk5LN1dlYkNvcmUxMlNoYXJlZEJ1ZmZlcjRkYXRhRXYKQEAg
LTE0ODUsNiArMTQ4NSw3IEBAIF93a0dldEhUVFBDb29raWVBY2NlcHRQb2xpY3kKIF93a0dldEhU
VFBQaXBlbGluaW5nUHJpb3JpdHkKIF93a0dldEh5cGhlbmF0aW9uTG9jYXRpb25CZWZvcmVJbmRl
eAogX3drR2V0TUlNRVR5cGVGb3JFeHRlbnNpb24KK193a0dldE5TRXZlbnRLZXlDaGFyCiBfd2tH
ZXROU1VSTFJlc3BvbnNlQ2FsY3VsYXRlZEV4cGlyYXRpb24KIF93a0dldE5TVVJMUmVzcG9uc2VM
YXN0TW9kaWZpZWREYXRlCiBfd2tHZXROU1VSTFJlc3BvbnNlTXVzdFJldmFsaWRhdGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAw
MDc0OTc5ZjhkMDFmZTZhNmViNjY4MmZhZGQxMTFjN2U0NWUwZWRmLi5mZTA0OWJkMDlkOWU3ZmIz
YmU5NTFmZGNmNjU0ZjM4ZDE1ZTdlZmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MjUwLDYgKzUyNTAsOCBAQAogCQlCQ0E4
QzgxRjExRTNEMzY5MDA4MTJGQjcgLyogQmFja0ZvcndhcmRDb250cm9sbGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQThDODFEMTFFM0QzNjkw
MDgxMkZCNyAvKiBCYWNrRm9yd2FyZENvbnRyb2xsZXIuY3BwICovOyB9OwogCQlCQ0E4Q0E1RjEx
RTRFNkQxMDA4MTJGQjcgLyogQmFja0ZvcndhcmRMaXN0SW1wbC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0E4Q0E1RDExRTRFNkQxMDA4MTJGQjcg
LyogQmFja0ZvcndhcmRMaXN0SW1wbC5jcHAgKi87IH07CiAJCUJDQThDQTYwMTFFNEU2RDEwMDgx
MkZCNyAvKiBCYWNrRm9yd2FyZExpc3RJbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0E4Q0E1RTExRTRFNkQxMDA4MTJGQjcgLyogQmFja0Zvcndh
cmRMaXN0SW1wbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUJDQUE0ODZGMTRBMDUyNTMwMDg4RkFDNCAvKiBQbGF0Zm9ybUV2ZW50RmFjdG9yeS5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQUE0ODZE
MTRBMDUyNTMwMDg4RkFDNCAvKiBQbGF0Zm9ybUV2ZW50RmFjdG9yeS5tbSAqLzsgfTsKKwkJQkNB
QTQ4NzAxNEEwNTI1MzAwODhGQUM0IC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0FBNDg2RTE0QTA1MjUzMDA4
OEZBQzQgLyogUGxhdGZvcm1FdmVudEZhY3RvcnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0FBOTBDMzBBN0VCQTYwMDA4QjEyMjkgLyogU2Ny
b2xsYmFyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDQUE5MEMyMEE3RUJBNjAwMDhCMTIyOSAvKiBTY3JvbGxiYXIuY3BwICovOyB9OwogCQlCQ0FC
NDE4MTEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQUI0MTdGMTNFMzU2RTgwMEQ4QUFGMyAvKiBSZWdp
b24uY3BwICovOyB9OwogCQlCQ0FCNDE4MjEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0FCNDE4MDEzRTM1
NkU4MDBEOEFBRjMgLyogUmVnaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTEyNjE2LDYgKzEyNjE4LDggQEAKIAkJQkNBOEM4MUQxMUUzRDM2
OTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBCYWNrRm9yd2FyZENvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQ0E4Q0E1RDExRTRFNkQxMDA4MTJGQjcgLyogQmFja0Zvcndh
cmRMaXN0SW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYWNr
Rm9yd2FyZExpc3RJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNBOENB
NUUxMUU0RTZEMTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkTGlzdEltcGwuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQmFja0ZvcndhcmRMaXN0SW1wbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlCQ0FBNDg2RDE0QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZvcm1FdmVu
dEZhY3RvcnkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbGF0
Zm9ybUV2ZW50RmFjdG9yeS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNBQTQ4
NkUxNEEwNTI1MzAwODhGQUM0IC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtRXZlbnRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDQUE5MEMyMEE3RUJBNjAwMDhCMTIyOSAvKiBTY3JvbGxiYXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbGJhci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQUI0MTdGMTNFMzU2RTgwMEQ4QUFGMyAv
KiBSZWdpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVnaW9u
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNBQjQxODAxM0UzNTZFODAwRDhB
QUYzIC8qIFJlZ2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NjUzLDYgKzE1NjU3LDggQEAKIAkJ
CQk5MzgwRjQ3NzA5QTExQUNDMDAxRkRCMzQgLyogV2lkZ2V0TWFjLm1tICovLAogCQkJCUNERUE3
NjJFMTQ2MDg0REUwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0EuY3BwICovLAogCQkJCUNERUE3
NjJGMTQ2MDg0RUUwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0EuaCAqLywKKwkJCQlCQ0FBNDg2
RDE0QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZvcm1FdmVudEZhY3RvcnkubW0gKi8sCisJCQkJQkNB
QTQ4NkUxNEEwNTI1MzAwODhGQUM0IC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5LmggKi8sCiAJCQkp
OwogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNDk1MCw2
ICsyNDk1Niw3IEBACiAJCQkJMUEyRjlEN0ExNDk2OEM3NDAwNjVBQzYzIC8qIFNjcm9sbGluZ0Nv
b3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUE3MTYwQjE0OUJDNERCMDAxNkVDMTkg
LyogVGlsZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMzdDREVCRDE0OUVGMjAzMDA0MjA5
MEQgLyogQ29sb3JDaG9vc2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQ0FBNDg3MDE0
QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZvcm1FdmVudEZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpA
QCAtMjc4NTQsNiArMjc4NjEsNyBAQAogCQkJCUE4MEE5NDIzMTQ5RjIyNUUwMDk4OTI5MSAvKiBK
U0RPTVdpbmRvd1dlYkF1ZGlvQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MEE5NDI1
MTQ5RjIyNzEwMDk4OTI5MSAvKiBKU0RPTVdpbmRvd1dlYlNvY2tldEN1c3RvbS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1MkY1MkUxMTE0QTAxMzRGMDBBQ0MzOTcgLyogTlNTY3JvbGxlckltcERl
dGFpbHMubW0gaW4gU291cmNlcyAqLywKKwkJCQlCQ0FBNDg2RjE0QTA1MjUzMDA4OEZBQzQgLyog
UGxhdGZvcm1FdmVudEZhY3RvcnkubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmNwcAppbmRleCBhNjc0ZGMxNDNhMzlkODA3NTE0NjJhNzRjNWU3NzgzZTJmNTY3
YThmLi5mNDk5ZWQ1ZGRlNzczYjViYTMzNGNkODRkYjkzNDY3MDlmMWE3MWI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0yNTkxLDcgKzI1OTEsNyBAQCBib29sIEV2ZW50
SGFuZGxlcjo6a2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBpbml0aWFsS2V5
RXZlbnQpCiAgICAgYm9vbCBoYW5kbGVkQnlJbnB1dE1ldGhvZCA9IGtleWRvd24tPmRlZmF1bHRI
YW5kbGVkKCk7CiAgICAgCiAgICAgaWYgKGhhbmRsZWRCeUlucHV0TWV0aG9kKSB7Ci0gICAgICAg
IGtleURvd25FdmVudC5zZXRXaW5kb3dzVmlydHVhbEtleUNvZGUoQ29tcG9zaXRpb25FdmVudEtl
eUNvZGUpOworICAgICAgICBrZXlEb3duRXZlbnQgPSBrZXlEb3duRXZlbnQuY29weUNoYW5naW5n
V2luZG93c1ZpcnR1YWxLZXlDb2RlKENvbXBvc2l0aW9uRXZlbnRLZXlDb2RlKTsKICAgICAgICAg
a2V5ZG93biA9IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShrZXlEb3duRXZlbnQsIG1fZnJhbWUtPmRv
Y3VtZW50KCktPmRlZmF1bHRWaWV3KCkpOwogICAgICAgICBrZXlkb3duLT5zZXRUYXJnZXQobm9k
ZSk7CiAgICAgICAgIGtleWRvd24tPnNldERlZmF1bHRIYW5kbGVkKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KaW5kZXggODJhYTc5ZTAzNDM3OWUxMjhjZjRi
Njc4ZGM3NTJkZDNiM2FjMWJjZS4uNWY5MTEzMjE4ODQzNGEyNjc0ZTJkMzRlODVmNzhkZjUyNGUz
MDhiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQpAQCAt
NDEsOCArNDEsNyBAQAogI2luY2x1ZGUgIk1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMuaCIK
ICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRl
ICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQu
aCIKKyNpbmNsdWRlICJQbGF0Zm9ybUV2ZW50RmFjdG9yeS5oIgogI2luY2x1ZGUgIlJlbmRlcldp
ZGdldC5oIgogI2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgogI2luY2x1ZGUg
IlNjcm9sbGJhci5oIgpAQCAtMTA0LDkgKzEwMyw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjp3aGVl
bEV2ZW50KE5TRXZlbnQgKmV2ZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBDdXJy
ZW50RXZlbnRTY29wZSBzY29wZShldmVudCk7Ci0KLSAgICBQbGF0Zm9ybVdoZWVsRXZlbnQgd2hl
ZWxFdmVudChldmVudCwgcGFnZS0+Y2hyb21lKCktPnBsYXRmb3JtUGFnZUNsaWVudCgpKTsKLSAg
ICByZXR1cm4gaGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50KTsKKyAgICByZXR1cm4gaGFuZGxl
V2hlZWxFdmVudChQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1XaGVlbEV2ZW50
KGV2ZW50LCBwYWdlLT5jaHJvbWUoKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkpKTsKIH0KIAogYm9v
bCBFdmVudEhhbmRsZXI6OmtleUV2ZW50KE5TRXZlbnQgKmV2ZW50KQpAQCAtMTE2LDcgKzExMyw3
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjprZXlFdmVudChOU0V2ZW50ICpldmVudCkKICAgICBBU1NF
UlQoW2V2ZW50IHR5cGVdID09IE5TS2V5RG93biB8fCBbZXZlbnQgdHlwZV0gPT0gTlNLZXlVcCk7
CiAKICAgICBDdXJyZW50RXZlbnRTY29wZSBzY29wZShldmVudCk7Ci0gICAgcmV0dXJuIGtleUV2
ZW50KFBsYXRmb3JtS2V5Ym9hcmRFdmVudChldmVudCkpOworICAgIHJldHVybiBrZXlFdmVudChQ
bGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1LZXlib2FyZEV2ZW50KGV2ZW50KSk7
CiAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCkBAIC02NDYsNyArNjQzLDcgQEAg
UGxhdGZvcm1Nb3VzZUV2ZW50IEV2ZW50SGFuZGxlcjo6Y3VycmVudFBsYXRmb3JtTW91c2VFdmVu
dCgpIGNvbnN0CiAgICAgTlNWaWV3ICp3aW5kb3dWaWV3ID0gbmlsOwogICAgIGlmIChQYWdlKiBw
YWdlID0gbV9mcmFtZS0+cGFnZSgpKQogICAgICAgICB3aW5kb3dWaWV3ID0gcGFnZS0+Y2hyb21l
KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpOwotICAgIHJldHVybiBQbGF0Zm9ybU1vdXNlRXZlbnQo
Y3VycmVudE5TRXZlbnQoKSwgd2luZG93Vmlldyk7CisgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnRG
YWN0b3J5OjpjcmVhdGVQbGF0Zm9ybU1vdXNlRXZlbnQoY3VycmVudE5TRXZlbnQoKSwgd2luZG93
Vmlldyk7CiB9CiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpldmVudEFjdGl2YXRlZFZpZXcoY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtRXZlbnQuaAppbmRleCBhMzJkMjgwYjJhNjMyMTFjODRlNDc2Y2I4ZDE4OGEwMTk0ZDgw
MWIyLi43N2Q0NDdlNGNlZWQxYzAxZGVjMTY3OGEwZmQ0ZGEwZTFlZTI2NGM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1FdmVudC5oCkBAIC02NSw1OSArNjUsNTkgQEAgcHVibGlj
OgogI2VuZGlmCiAgICAgfTsKIAotICAgIGVudW0gTW9kaWZpZXJLZXkgewotICAgICAgICBBbHRL
ZXkgPSAxIDw8IDAsCi0gICAgICAgIEN0cmxLZXkgPSAxIDw8IDEsCi0gICAgICAgIE1ldGFLZXkg
PSAxIDw8IDIsCi0gICAgICAgIFNoaWZ0S2V5ID0gMSA8PCAzCisgICAgZW51bSBNb2RpZmllcnMg
eworICAgICAgICBBbHRLZXkgICAgICA9IDEgPDwgMCwKKyAgICAgICAgQ3RybEtleSAgICAgPSAx
IDw8IDEsCisgICAgICAgIE1ldGFLZXkgICAgID0gMSA8PCAyLAorICAgICAgICBTaGlmdEtleSAg
ICA9IDEgPDwgMywKICAgICB9OwogCiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8VHlwZT4obV90eXBlKTsgfQogCi0gICAgYm9vbCBzaGlmdEtleSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2hpZnRLZXk7IH0KLSAgICBib29sIGN0cmxLZXkoKSBjb25zdCB7IHJldHVybiBt
X2N0cmxLZXk7IH0KLSAgICBib29sIGFsdEtleSgpIGNvbnN0IHsgcmV0dXJuIG1fYWx0S2V5OyB9
Ci0gICAgYm9vbCBtZXRhS2V5KCkgY29uc3QgeyByZXR1cm4gbV9tZXRhS2V5OyB9CisgICAgYm9v
bCBzaGlmdEtleSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kaWZpZXJzICYgU2hpZnRLZXk7IH0KKyAg
ICBib29sIGN0cmxLZXkoKSBjb25zdCB7IHJldHVybiBtX21vZGlmaWVycyAmIEN0cmxLZXk7IH0K
KyAgICBib29sIGFsdEtleSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kaWZpZXJzICYgQWx0S2V5OyB9
CisgICAgYm9vbCBtZXRhS2V5KCkgY29uc3QgeyByZXR1cm4gbV9tb2RpZmllcnMgJiBNZXRhS2V5
OyB9CiAKLSAgICB1bnNpZ25lZCBtb2RpZmllcnMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIChhbHRLZXkoKSA/IEFsdEtleSA6IDApCi0gICAgICAgICAgICB8IChjdHJsS2V5KCkgPyBD
dHJsS2V5IDogMCkKLSAgICAgICAgICAgIHwgKG1ldGFLZXkoKSA/IE1ldGFLZXkgOiAwKQotICAg
ICAgICAgICAgfCAoc2hpZnRLZXkoKSA/IFNoaWZ0S2V5IDogMCk7Ci0gICAgfQorICAgIHVuc2ln
bmVkIG1vZGlmaWVycygpIGNvbnN0IHsgcmV0dXJuIG1fbW9kaWZpZXJzOyB9CiAKICAgICBkb3Vi
bGUgdGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gbV90aW1lc3RhbXA7IH0KIAogcHJvdGVjdGVk
OgogICAgIFBsYXRmb3JtRXZlbnQoKQogICAgICAgICA6IG1fdHlwZShOb1R5cGUpCi0gICAgICAg
ICwgbV9zaGlmdEtleShmYWxzZSkKLSAgICAgICAgLCBtX2N0cmxLZXkoZmFsc2UpCi0gICAgICAg
ICwgbV9hbHRLZXkoZmFsc2UpCi0gICAgICAgICwgbV9tZXRhS2V5KGZhbHNlKQorICAgICAgICAs
IG1fbW9kaWZpZXJzKDApCiAgICAgICAgICwgbV90aW1lc3RhbXAoMCkKICAgICB7CiAgICAgfQog
CiAgICAgUGxhdGZvcm1FdmVudChUeXBlIHR5cGUpCiAgICAgICAgIDogbV90eXBlKHR5cGUpCi0g
ICAgICAgICwgbV9zaGlmdEtleShmYWxzZSkKLSAgICAgICAgLCBtX2N0cmxLZXkoZmFsc2UpCi0g
ICAgICAgICwgbV9hbHRLZXkoZmFsc2UpCi0gICAgICAgICwgbV9tZXRhS2V5KGZhbHNlKQorICAg
ICAgICAsIG1fbW9kaWZpZXJzKDApCiAgICAgICAgICwgbV90aW1lc3RhbXAoMCkKICAgICB7CiAg
ICAgfQogCisgICAgUGxhdGZvcm1FdmVudChUeXBlIHR5cGUsIE1vZGlmaWVycyBtb2RpZmllcnMs
IGRvdWJsZSB0aW1lc3RhbXApCisgICAgICAgIDogbV90eXBlKHR5cGUpCisgICAgICAgICwgbV9t
b2RpZmllcnMobW9kaWZpZXJzKQorICAgICAgICAsIG1fdGltZXN0YW1wKHRpbWVzdGFtcCkKKyAg
ICB7CisgICAgfQorCiAgICAgUGxhdGZvcm1FdmVudChUeXBlIHR5cGUsIGJvb2wgc2hpZnRLZXks
IGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgbWV0YUtleSwgZG91YmxlIHRpbWVzdGFt
cCkKICAgICAgICAgOiBtX3R5cGUodHlwZSkKLSAgICAgICAgLCBtX3NoaWZ0S2V5KHNoaWZ0S2V5
KQotICAgICAgICAsIG1fY3RybEtleShjdHJsS2V5KQotICAgICAgICAsIG1fYWx0S2V5KGFsdEtl
eSkKLSAgICAgICAgLCBtX21ldGFLZXkobWV0YUtleSkKKyAgICAgICAgLCBtX21vZGlmaWVycygw
KQogICAgICAgICAsIG1fdGltZXN0YW1wKHRpbWVzdGFtcCkKICAgICB7CisgICAgICAgIGlmIChz
aGlmdEtleSkKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IFNoaWZ0S2V5OworICAgICAgICBp
ZiAoY3RybEtleSkKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IEN0cmxLZXk7CisgICAgICAg
IGlmIChhbHRLZXkpCisgICAgICAgICAgICBtX21vZGlmaWVycyB8PSBBbHRLZXk7CisgICAgICAg
IGlmIChtZXRhS2V5KQorICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTWV0YUtleTsKICAgICB9
CiAKICAgICAvLyBFeHBsaWNpdCBwcm90ZWN0ZWQgZGVzdHJ1Y3RvciBzbyB0aGF0IHBlb3BsZSBk
b24ndCBhY2NpZGVudGFsbHkKQEAgLTEyNywxMCArMTI3LDcgQEAgcHJvdGVjdGVkOgogICAgIH0K
IAogICAgIHVuc2lnbmVkIG1fdHlwZTsKLSAgICBib29sIG1fc2hpZnRLZXk7Ci0gICAgYm9vbCBt
X2N0cmxLZXk7Ci0gICAgYm9vbCBtX2FsdEtleTsKLSAgICBib29sIG1fbWV0YUtleTsKKyAgICB1
bnNpZ25lZCBtX21vZGlmaWVyczsKICAgICBkb3VibGUgbV90aW1lc3RhbXA7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVFdmVudC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlRXZlbnQuaAppbmRleCA1NWZl
OGVmYTg2MTg5NjhjMTgwZTBmMDYzZWI5N2ZlN2Q2ZmNmN2U1Li5lMzEzYmU1MGUzOTMyZjljZTFj
YmM1NWI0MDFkYTI3NjMyYTQ1NDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybUdlc3R1cmVFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtR2VzdHVyZUV2ZW50LmgKQEAgLTYwLDcgKzYwLDYgQEAgcHVibGljOgogcHJvdGVjdGVk
OgogICAgIEludFBvaW50IG1fcG9zaXRpb247CiAgICAgSW50UG9pbnQgbV9nbG9iYWxQb3NpdGlv
bjsKLSAgICBkb3VibGUgbV90aW1lc3RhbXA7CiAgICAgZmxvYXQgbV9kZWx0YVg7CiAgICAgZmxv
YXQgbV9kZWx0YVk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxh
dGZvcm1LZXlib2FyZEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUtl
eWJvYXJkRXZlbnQuaAppbmRleCAyZWQxYTBhZjg4ZGFlYmRjNWI5NDMxNmUyZDIzYTEyYzM4ZjE0
NmY2Li5mMTU0OTY2NzMyYWQ5NDlhOGQ4YjMwMDk2MjM2NzE1Nzk3MzI4NDg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuaApAQCAtNzAsMTMg
KzcwLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFBsYXRm
b3JtS2V5Ym9hcmRFdmVudCgpCiAgICAgICAgICAgICA6IFBsYXRmb3JtRXZlbnQoUGxhdGZvcm1F
dmVudDo6S2V5RG93bikKLSAgICAgICAgICAgICwgbV9hdXRvUmVwZWF0KGZhbHNlKQogICAgICAg
ICAgICAgLCBtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSgwKQogICAgICAgICAgICAgLCBtX25hdGl2
ZVZpcnR1YWxLZXlDb2RlKDApCisgICAgICAgICAgICAsIG1fbWFjQ2hhckNvZGUoMCkKKyAgICAg
ICAgICAgICwgbV9hdXRvUmVwZWF0KGZhbHNlKQogICAgICAgICAgICAgLCBtX2lzS2V5cGFkKGZh
bHNlKQotI2lmIFBMQVRGT1JNKFdJTikgfHwgUExBVEZPUk0oQ0hST01JVU0pCiAgICAgICAgICAg
ICAsIG1faXNTeXN0ZW1LZXkoZmFsc2UpCi0jZW5kaWYKICNpZiBQTEFURk9STShHVEspCiAgICAg
ICAgICAgICAsIG1fZ2RrRXZlbnRLZXkoMCkKICNlbmRpZgpAQCAtODYsNiArODUsMjAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB7CiAgICAgICAgIH0KIAorICAgICAgICBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQoVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmlu
ZyYgdW5tb2RpZmllZFRleHQsIGNvbnN0IFN0cmluZyYga2V5SWRlbnRpZmllciwgaW50IHdpbmRv
d3NWaXJ0dWFsS2V5Q29kZSwgaW50IG5hdGl2ZVZpcnR1YWxLZXlDb2RlLCBpbnQgbWFjQ2hhckNv
ZGUsIGJvb2wgaXNBdXRvUmVwZWF0LCBib29sIGlzS2V5cGFkLCBib29sIGlzU3lzdGVtS2V5LCBN
b2RpZmllcnMgbW9kaWZpZXJzLCBkb3VibGUgdGltZXN0YW1wKQorICAgICAgICAgICAgOiBQbGF0
Zm9ybUV2ZW50KHR5cGUsIG1vZGlmaWVycywgdGltZXN0YW1wKQorICAgICAgICAgICAgLCBtX3Rl
eHQodGV4dCkKKyAgICAgICAgICAgICwgbV91bm1vZGlmaWVkVGV4dCh1bm1vZGlmaWVkVGV4dCkK
KyAgICAgICAgICAgICwgbV9rZXlJZGVudGlmaWVyKGtleUlkZW50aWZpZXIpCisgICAgICAgICAg
ICAsIG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlKHdpbmRvd3NWaXJ0dWFsS2V5Q29kZSkKKyAgICAg
ICAgICAgICwgbV9uYXRpdmVWaXJ0dWFsS2V5Q29kZShuYXRpdmVWaXJ0dWFsS2V5Q29kZSkKKyAg
ICAgICAgICAgICwgbV9tYWNDaGFyQ29kZShtYWNDaGFyQ29kZSkKKyAgICAgICAgICAgICwgbV9h
dXRvUmVwZWF0KGlzQXV0b1JlcGVhdCkKKyAgICAgICAgICAgICwgbV9pc0tleXBhZChpc0tleXBh
ZCkKKyAgICAgICAgICAgICwgbV9pc1N5c3RlbUtleShpc1N5c3RlbUtleSkKKyAgICAgICAgewor
ICAgICAgICB9CisKICAgICAgICAgdm9pZCBkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQoVHlwZSwg
Ym9vbCBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlID0gZmFsc2UpOyAvLyBPbmx5IHVzZWQgb24g
cGxhdGZvcm1zIHRoYXQgbmVlZCBpdCwgaS5lLiB0aG9zZSB0aGF0IGdlbmVyYXRlIEtleURvd24g
ZXZlbnRzLgogCiAgICAgICAgIC8vIFRleHQgYXMgYXMgZ2VuZXJhdGVkIGJ5IHByb2Nlc3Npbmcg
YSB2aXJ0dWFsIGtleSBjb2RlIHdpdGggYSBrZXlib2FyZCBsYXlvdXQKQEAgLTEwMSwyNCArMTE0
LDI0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gT3RoZXJ3aXNlLCBzYW1lIGFz
IHRleHQoKS4KICAgICAgICAgU3RyaW5nIHVubW9kaWZpZWRUZXh0KCkgY29uc3QgeyByZXR1cm4g
bV91bm1vZGlmaWVkVGV4dDsgfQogCisgICAgICAgIFN0cmluZyBrZXlJZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9rZXlJZGVudGlmaWVyOyB9CisKICAgICAgICAgLy8gTW9zdCBjb21wYXRp
YmxlIFdpbmRvd3MgdmlydHVhbCBrZXkgY29kZSBhc3NvY2lhdGVkIHdpdGggdGhlIGV2ZW50Lgog
ICAgICAgICAvLyBaZXJvIGZvciBDaGFyIGV2ZW50cy4KICAgICAgICAgaW50IHdpbmRvd3NWaXJ0
dWFsS2V5Q29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlOyB9CiAg
ICAgICAgIHZvaWQgc2V0V2luZG93c1ZpcnR1YWxLZXlDb2RlKGludCBjb2RlKSB7IG1fd2luZG93
c1ZpcnR1YWxLZXlDb2RlID0gY29kZTsgfQogCiAgICAgICAgIGludCBuYXRpdmVWaXJ0dWFsS2V5
Q29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlVmlydHVhbEtleUNvZGU7IH0KLSAgICAgICAg
dm9pZCBzZXROYXRpdmVWaXJ0dWFsS2V5Q29kZShpbnQgY29kZSkgeyBtX25hdGl2ZVZpcnR1YWxL
ZXlDb2RlID0gY29kZTsgfQorICAgICAgICBpbnQgbWFjQ2hhckNvZGUoKSBjb25zdCB7IHJldHVy
biBtX21hY0NoYXJDb2RlOyB9CiAKLSAgICAgICAgU3RyaW5nIGtleUlkZW50aWZpZXIoKSBjb25z
dCB7IHJldHVybiBtX2tleUlkZW50aWZpZXI7IH0KICAgICAgICAgYm9vbCBpc0F1dG9SZXBlYXQo
KSBjb25zdCB7IHJldHVybiBtX2F1dG9SZXBlYXQ7IH0KLSAgICAgICAgdm9pZCBzZXRJc0F1dG9S
ZXBlYXQoYm9vbCBpbikgeyBtX2F1dG9SZXBlYXQgPSBpbjsgfQogICAgICAgICBib29sIGlzS2V5
cGFkKCkgY29uc3QgeyByZXR1cm4gbV9pc0tleXBhZDsgfQorICAgICAgICBib29sIGlzU3lzdGVt
S2V5KCkgY29uc3QgeyByZXR1cm4gbV9pc1N5c3RlbUtleTsgfQogCiAgICAgICAgIHN0YXRpYyBi
b29sIGN1cnJlbnRDYXBzTG9ja1N0YXRlKCk7CiAgICAgICAgIHN0YXRpYyB2b2lkIGdldEN1cnJl
bnRNb2RpZmllclN0YXRlKGJvb2wmIHNoaWZ0S2V5LCBib29sJiBjdHJsS2V5LCBib29sJiBhbHRL
ZXksIGJvb2wmIG1ldGFLZXkpOwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgICAgICBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQoTlNFdmVudCopOwogICAgICAgICBOU0V2ZW50KiBtYWNFdmVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fbWFjRXZlbnQuZ2V0KCk7IH0KICNlbmRpZgogCkBAIC0xNDcsMTAgKzE2
MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50
KHd4S2V5RXZlbnQmKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oV0lOKSB8fCBQTEFURk9STShD
SFJPTUlVTSkKLSAgICAgICAgYm9vbCBpc1N5c3RlbUtleSgpIGNvbnN0IHsgcmV0dXJuIG1faXNT
eXN0ZW1LZXk7IH0KLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oRUZMKQogICAgICAgICBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQoY29uc3QgRXZhc19FdmVudF9LZXlfRG93biopOwogICAgICAgICBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQoY29uc3QgRXZhc19FdmVudF9LZXlfVXAqKTsKQEAgLTE2MCwxNyAr
MTY5LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU3RyaW5nIG1fdGV4dDsKICAg
ICAgICAgU3RyaW5nIG1fdW5tb2RpZmllZFRleHQ7CiAgICAgICAgIFN0cmluZyBtX2tleUlkZW50
aWZpZXI7Ci0gICAgICAgIGJvb2wgbV9hdXRvUmVwZWF0OwogICAgICAgICBpbnQgbV93aW5kb3dz
VmlydHVhbEtleUNvZGU7CiAgICAgICAgIGludCBtX25hdGl2ZVZpcnR1YWxLZXlDb2RlOworICAg
ICAgICBpbnQgbV9tYWNDaGFyQ29kZTsKKyAgICAgICAgYm9vbCBtX2F1dG9SZXBlYXQ7CiAgICAg
ICAgIGJvb2wgbV9pc0tleXBhZDsKKyAgICAgICAgYm9vbCBtX2lzU3lzdGVtS2V5OwogCiAjaWYg
UExBVEZPUk0oTUFDKQogICAgICAgICBSZXRhaW5QdHI8TlNFdmVudD4gbV9tYWNFdmVudDsKICNl
bmRpZgotI2lmIFBMQVRGT1JNKFdJTikgfHwgUExBVEZPUk0oQ0hST01JVU0pCi0gICAgICAgIGJv
b2wgbV9pc1N5c3RlbUtleTsKLSNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgR2Rr
RXZlbnRLZXkqIG1fZ2RrRXZlbnRLZXk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtTW91c2VFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1Nb3VzZUV2ZW50LmgKaW5kZXggYjNhNDA2N2Q3MTgwY2JhNDg1YWNhNjc3MDk5
NzMwY2YzNWY3ZmE5MC4uYTNkY2NlNDkwZDNmNzgwNjJkOWVjNzhiNjgxN2QzOTg4OWU0ZTRlZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Nb3VzZUV2ZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Nb3VzZUV2ZW50LmgKQEAgLTEx
OSwxMiArMTE5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICNpZiBQTEFURk9S
TShNQUMpCi0jaWYgZGVmaW5lZChfX09CSkNfXykKLSAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50
KE5TRXZlbnQgKiwgTlNWaWV3ICp3aW5kb3dWaWV3KTsKLSNlbmRpZgotICAgICAgICBQbGF0Zm9y
bU1vdXNlRXZlbnQoaW50IHgsIGludCB5LCBpbnQgZ2xvYmFsWCwgaW50IGdsb2JhbFksIE1vdXNl
QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IGNsaWNrQ291bnQsIGJvb2wgc2hpZnRLZXksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXks
IGJvb2wgbWV0YUtleSwgZG91YmxlIHRpbWVzdGFtcCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3MsIGludCBldmVudE51bWJlcik7CiAgICAgICAgIGlu
dCBldmVudE51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnROdW1iZXI7IH0KICNlbmRpZgog
CkBAIC0xNjAsMTIgKzE1NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogICAgIH07
CiAKLSNpZiBQTEFURk9STShNQUMpICYmIGRlZmluZWQoX19PQkpDX18pCi0gICAgSW50UG9pbnQg
Z2xvYmFsUG9pbnQoY29uc3QgTlNQb2ludCYgd2luZG93UG9pbnQsIE5TV2luZG93ICopOwotICAg
IEludFBvaW50IHBvaW50Rm9yRXZlbnQoTlNFdmVudCAqLCBOU1ZpZXcgKndpbmRvd1ZpZXcpOwot
ICAgIEludFBvaW50IGdsb2JhbFBvaW50Rm9yRXZlbnQoTlNFdmVudCAqKTsKLSNlbmRpZgotCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBQbGF0Zm9ybU1vdXNlRXZlbnRfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaAppbmRleCBiYTkx
MDU0ODI5YWU2ZTJmNjlkMTYwZmFiZjNkZGZlZTMzZjRiYzNlLi44ZTk5ZTQ3NjJmZDA3YjJmNWMz
ZGI4ZDFiOWE3ZDQ3NTY1NWJjZTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybVdoZWVsRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVdoZWVsRXZlbnQuaApAQCAtMTU0LDE3ICsxNTQsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVl
bCopOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCi0jaWYgZGVmaW5lZChfX09CSkNfXykK
LSAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50KE5TRXZlbnQgKiwgTlNWaWV3ICp3aW5kb3dWaWV3
KTsKLSNlbmRpZgotI2VuZGlmCi0KICNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShDSFJP
TUlVTSkgJiYgT1MoREFSV0lOKSkKICAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgcGhh
c2UoKSBjb25zdCB7IHJldHVybiBtX3BoYXNlOyB9CiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVu
dFBoYXNlIG1vbWVudHVtUGhhc2UoKSBjb25zdCB7IHJldHVybiBtX21vbWVudHVtUGhhc2U7IH0K
ICAgICAgICAgYm9vbCBoYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKCkgY29uc3QgeyByZXR1cm4g
bV9oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzOyB9Ci0gICAgICAgIGRvdWJsZSB0aW1lc3RhbXAo
KSBjb25zdCB7IHJldHVybiBtX3RpbWVzdGFtcDsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShR
VCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9LZXlFdmVudE1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9LZXlFdmVudE1hYy5tbQppbmRleCA0NGQ2
Y2MzMGMyZjg2YTI0YzI3ZGYwMDAwMmRmNGE5MzljNzMzNTdhLi40YmRmNjIwN2I2YzU1ZjEyZTI4
N2E3MTQxYTI3MGVhOTJkMjJkZTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvS2V5RXZlbnRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0tl
eUV2ZW50TWFjLm1tCkBAIC0zNywxODcgKzM3LDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdURjsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCBpc0tleXBhZEV2ZW50KE5TRXZlbnQq
IGV2ZW50KQotewotICAgIC8vIENoZWNrIHRoYXQgdGhpcyBpcyB0aGUgdHlwZSBvZiBldmVudCB0
aGF0IGhhcyBhIGtleUNvZGUuCi0gICAgc3dpdGNoIChbZXZlbnQgdHlwZV0pIHsKLSAgICAgICAg
Y2FzZSBOU0tleURvd246Ci0gICAgICAgIGNhc2UgTlNLZXlVcDoKLSAgICAgICAgY2FzZSBOU0Zs
YWdzQ2hhbmdlZDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChbZXZlbnQgbW9kaWZpZXJGbGFn
c10gJiBOU051bWVyaWNQYWRLZXlNYXNrKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIHN3
aXRjaCAoW2V2ZW50IGtleUNvZGVdKSB7Ci0gICAgICAgIGNhc2UgNzE6IC8vIENsZWFyCi0gICAg
ICAgIGNhc2UgODE6IC8vID0KLSAgICAgICAgY2FzZSA3NTogLy8gLwotICAgICAgICBjYXNlIDY3
OiAvLyAqCi0gICAgICAgIGNhc2UgNzg6IC8vIC0KLSAgICAgICAgY2FzZSA2OTogLy8gKwotICAg
ICAgICBjYXNlIDc2OiAvLyBFbnRlcgotICAgICAgICBjYXNlIDY1OiAvLyAuCi0gICAgICAgIGNh
c2UgODI6IC8vIDAKLSAgICAgICAgY2FzZSA4MzogLy8gMQotICAgICAgICBjYXNlIDg0OiAvLyAy
Ci0gICAgICAgIGNhc2UgODU6IC8vIDMKLSAgICAgICAgY2FzZSA4NjogLy8gNAotICAgICAgICBj
YXNlIDg3OiAvLyA1Ci0gICAgICAgIGNhc2UgODg6IC8vIDYKLSAgICAgICAgY2FzZSA4OTogLy8g
NwotICAgICAgICBjYXNlIDkxOiAvLyA4Ci0gICAgICAgIGNhc2UgOTI6IC8vIDkKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICB9Ci0KLSAgICAgcmV0dXJuIGZhbHNlOwotfQotCi1zdGF0
aWMgaW5saW5lIGJvb2wgaXNLZXlVcEV2ZW50KE5TRXZlbnQgKmV2ZW50KQotewotICAgIGlmIChb
ZXZlbnQgdHlwZV0gIT0gTlNGbGFnc0NoYW5nZWQpCi0gICAgICAgIHJldHVybiBbZXZlbnQgdHlw
ZV0gPT0gTlNLZXlVcDsKLSAgICAvLyBGSVhNRTogVGhpcyBsb2dpYyBmYWlscyBpZiB0aGUgdXNl
ciBwcmVzc2VzIGJvdGggU2hpZnQga2V5cyBhdCBvbmNlLCBmb3IgZXhhbXBsZToKLSAgICAvLyB3
ZSB0cmVhdCByZWxlYXNpbmcgb25lIG9mIHRoZW0gYXMga2V5RG93bi4KLSAgICBzd2l0Y2ggKFtl
dmVudCBrZXlDb2RlXSkgewotICAgICAgICBjYXNlIDU0OiAvLyBSaWdodCBDb21tYW5kCi0gICAg
ICAgIGNhc2UgNTU6IC8vIExlZnQgQ29tbWFuZAotICAgICAgICAgICAgcmV0dXJuIChbZXZlbnQg
bW9kaWZpZXJGbGFnc10gJiBOU0NvbW1hbmRLZXlNYXNrKSA9PSAwOwotCi0gICAgICAgIGNhc2Ug
NTc6IC8vIENhcHNsb2NrCi0gICAgICAgICAgICByZXR1cm4gKFtldmVudCBtb2RpZmllckZsYWdz
XSAmIE5TQWxwaGFTaGlmdEtleU1hc2spID09IDA7Ci0KLSAgICAgICAgY2FzZSA1NjogLy8gTGVm
dCBTaGlmdAotICAgICAgICBjYXNlIDYwOiAvLyBSaWdodCBTaGlmdAotICAgICAgICAgICAgcmV0
dXJuIChbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU1NoaWZ0S2V5TWFzaykgPT0gMDsKLQotICAg
ICAgICBjYXNlIDU4OiAvLyBMZWZ0IEFsdAotICAgICAgICBjYXNlIDYxOiAvLyBSaWdodCBBbHQK
LSAgICAgICAgICAgIHJldHVybiAoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNBbHRlcm5hdGVL
ZXlNYXNrKSA9PSAwOwotCi0gICAgICAgIGNhc2UgNTk6IC8vIExlZnQgQ3RybAotICAgICAgICBj
YXNlIDYyOiAvLyBSaWdodCBDdHJsCi0gICAgICAgICAgICByZXR1cm4gKFtldmVudCBtb2RpZmll
ckZsYWdzXSAmIE5TQ29udHJvbEtleU1hc2spID09IDA7Ci0KLSAgICAgICAgY2FzZSA2MzogLy8g
RnVuY3Rpb24KLSAgICAgICAgICAgIHJldHVybiAoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNG
dW5jdGlvbktleU1hc2spID09IDA7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotc3Rh
dGljIGlubGluZSBTdHJpbmcgdGV4dEZyb21FdmVudChOU0V2ZW50KiBldmVudCkKLXsKLSAgICBp
ZiAoW2V2ZW50IHR5cGVdID09IE5TRmxhZ3NDaGFuZ2VkKQotICAgICAgICByZXR1cm4gIiI7Ci0g
ICAgcmV0dXJuIFtldmVudCBjaGFyYWN0ZXJzXTsKLX0KLQotCi1zdGF0aWMgaW5saW5lIFN0cmlu
ZyB1bm1vZGlmaWVkVGV4dEZyb21FdmVudChOU0V2ZW50KiBldmVudCkKLXsKLSAgICBpZiAoW2V2
ZW50IHR5cGVdID09IE5TRmxhZ3NDaGFuZ2VkKQotICAgICAgICByZXR1cm4gIiI7Ci0gICAgcmV0
dXJuIFtldmVudCBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnNdOwotfQotCi1zdGF0aWMgU3Ry
aW5nIGtleUlkZW50aWZpZXJGb3JLZXlFdmVudChOU0V2ZW50KiBldmVudCkKLXsKLSAgICBpZiAo
W2V2ZW50IHR5cGVdID09IE5TRmxhZ3NDaGFuZ2VkKQotICAgICAgICBzd2l0Y2ggKFtldmVudCBr
ZXlDb2RlXSkgewotICAgICAgICAgICAgY2FzZSA1NDogLy8gUmlnaHQgQ29tbWFuZAotICAgICAg
ICAgICAgY2FzZSA1NTogLy8gTGVmdCBDb21tYW5kCi0gICAgICAgICAgICAgICAgcmV0dXJuICJN
ZXRhIjsKLQotICAgICAgICAgICAgY2FzZSA1NzogLy8gQ2Fwc2xvY2sKLSAgICAgICAgICAgICAg
ICByZXR1cm4gIkNhcHNMb2NrIjsKLQotICAgICAgICAgICAgY2FzZSA1NjogLy8gTGVmdCBTaGlm
dAotICAgICAgICAgICAgY2FzZSA2MDogLy8gUmlnaHQgU2hpZnQKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gIlNoaWZ0IjsKLQotICAgICAgICAgICAgY2FzZSA1ODogLy8gTGVmdCBBbHQKLSAgICAg
ICAgICAgIGNhc2UgNjE6IC8vIFJpZ2h0IEFsdAotICAgICAgICAgICAgICAgIHJldHVybiAiQWx0
IjsKLQotICAgICAgICAgICAgY2FzZSA1OTogLy8gTGVmdCBDdHJsCi0gICAgICAgICAgICBjYXNl
IDYyOiAvLyBSaWdodCBDdHJsCi0gICAgICAgICAgICAgICAgcmV0dXJuICJDb250cm9sIjsKLQot
ICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gIiI7Ci0gICAgICAgIH0KLQotICAgIE5TU3RyaW5n
ICpzID0gW2V2ZW50IGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyc107Ci0gICAgaWYgKFtzIGxl
bmd0aF0gIT0gMSkgewotICAgICAgICBMT0coRXZlbnRzLCAicmVjZWl2ZWQgYW4gdW5leHBlY3Rl
ZCBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiBrZXkgZXZlbnQ6ICV1IiwgW3MgbGVuZ3RoXSk7Ci0g
ICAgICAgIHJldHVybiAiVW5pZGVudGlmaWVkIjsKLSAgICB9Ci0gICAgcmV0dXJuIGtleUlkZW50
aWZpZXJGb3JDaGFyQ29kZShbcyBjaGFyYWN0ZXJBdEluZGV4OjBdKTsKLX0KLQotc3RhdGljIGlu
dCB3aW5kb3dzS2V5Q29kZUZvcktleUV2ZW50KE5TRXZlbnQgKmV2ZW50KQotewotICAgIGludCBj
b2RlID0gMDsKLSAgICAvLyBUaGVyZSBhcmUgc2V2ZXJhbCBraW5kcyBvZiBjaGFyYWN0ZXJzIGZv
ciB3aGljaCB3ZSBwcm9kdWNlIGtleSBjb2RlIGZyb20gY2hhciBjb2RlOgotICAgIC8vIDEuIFJv
bWFuIGxldHRlcnMuIFdpbmRvd3Mga2V5Ym9hcmQgbGF5b3V0cyBhZmZlY3QgYm90aCB2aXJ0dWFs
IGtleSBjb2RlcyBhbmQgY2hhcmFjdGVyIGNvZGVzIGZvciB0aGVzZSwKLSAgICAvLyAgICBzbyBl
LmcuICdBJyBnZXRzIHRoZSBzYW1lIGtleUNvZGUgb24gUVdFUlRZLCBBWkVSVFkgb3IgRHZvcmFr
IGxheW91dHMuCi0gICAgLy8gMi4gS2V5cyBmb3Igd2hpY2ggdGhlcmUgaXMgbm8ga25vd24gTWFj
IHZpcnR1YWwga2V5IGNvZGVzLCBsaWtlIFByaW50U2NyZWVuLgotICAgIC8vIDMuIENlcnRhaW4g
cHVuY3R1YXRpb24ga2V5cy4gT24gV2luZG93cywgdGhlc2UgYXJlIGFsc28gcmVtYXBwZWQgZGVw
ZW5kaW5nIG9uIGN1cnJlbnQga2V5Ym9hcmQgbGF5b3V0LAotICAgIC8vICAgIGJ1dCBzZWUgY29t
bWVudCBpbiB3aW5kb3dzS2V5Q29kZUZvckNoYXJDb2RlKCkuCi0gICAgaWYgKFtldmVudCB0eXBl
XSA9PSBOU0tleURvd24gfHwgW2V2ZW50IHR5cGVdID09IE5TS2V5VXApIHsKLSAgICAgICAgLy8g
Q21kIHN3aXRjaGVzIFJvbWFuIGxldHRlcnMgZm9yIER2b3Jhay1RV0VSVFkgbGF5b3V0LCBzbyB0
cnkgbW9kaWZpZWQgY2hhcmFjdGVycyBmaXJzdC4KLSAgICAgICAgTlNTdHJpbmcqIHMgPSBbZXZl
bnQgY2hhcmFjdGVyc107Ci0gICAgICAgIGNvZGUgPSBbcyBsZW5ndGhdID4gMCA/IHdpbmRvd3NL
ZXlDb2RlRm9yQ2hhckNvZGUoW3MgY2hhcmFjdGVyQXRJbmRleDowXSkgOiAwOwotICAgICAgICBp
ZiAoY29kZSkKLSAgICAgICAgICAgIHJldHVybiBjb2RlOwotCi0gICAgICAgIC8vIEN0cmwrQSBv
biBhbiBBWkVSVFkga2V5Ym9hcmQgd291bGQgZ2V0IFZLX1Ega2V5Q29kZSBpZiB3ZSByZWxpZWQg
b24gLVtOU0V2ZW50IGtleUNvZGVdIGJlbG93LgotICAgICAgICBzID0gW2V2ZW50IGNoYXJhY3Rl
cnNJZ25vcmluZ01vZGlmaWVyc107Ci0gICAgICAgIGNvZGUgPSBbcyBsZW5ndGhdID4gMCA/IHdp
bmRvd3NLZXlDb2RlRm9yQ2hhckNvZGUoW3MgY2hhcmFjdGVyQXRJbmRleDowXSkgOiAwOwotICAg
ICAgICBpZiAoY29kZSkKLSAgICAgICAgICAgIHJldHVybiBjb2RlOwotICAgIH0KLQotICAgIC8v
IE1hcCBNYWMgdmlydHVhbCBrZXkgY29kZSBkaXJlY3RseSB0byBXaW5kb3dzIG9uZSBmb3IgYW55
IGtleXMgbm90IGhhbmRsZWQgYWJvdmUuCi0gICAgLy8gRS5nLiB0aGUga2V5IG5leHQgdG8gQ2Fw
cyBMb2NrIGhhcyB0aGUgc2FtZSBFdmVudC5rZXlDb2RlIG9uIFUuUy4ga2V5Ym9hcmQgKCdBJykg
YW5kIG9uIFJ1c3NpYW4ga2V5Ym9hcmQgKENZUklMTElDIExFVFRFUiBFRikuCi0gICAgcmV0dXJu
IHdpbmRvd3NLZXlDb2RlRm9yS2V5Q29kZShbZXZlbnQga2V5Q29kZV0pOwotfQotCi1QbGF0Zm9y
bUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudChOU0V2ZW50ICpldmVudCkKLSAg
ICA6IFBsYXRmb3JtRXZlbnQoaXNLZXlVcEV2ZW50KGV2ZW50KSA/IFBsYXRmb3JtRXZlbnQ6Oktl
eVVwIDogUGxhdGZvcm1FdmVudDo6S2V5RG93biwgW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNT
aGlmdEtleU1hc2ssIFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQ29udHJvbEtleU1hc2ssIFtl
dmVudCBtb2RpZmllckZsYWdzXSAmIE5TQWx0ZXJuYXRlS2V5TWFzaywgW2V2ZW50IG1vZGlmaWVy
RmxhZ3NdICYgTlNDb21tYW5kS2V5TWFzaywgW2V2ZW50IHRpbWVzdGFtcF0pCi0gICAgLCBtX3Rl
eHQodGV4dEZyb21FdmVudChldmVudCkpCi0gICAgLCBtX3VubW9kaWZpZWRUZXh0KHVubW9kaWZp
ZWRUZXh0RnJvbUV2ZW50KGV2ZW50KSkKLSAgICAsIG1fa2V5SWRlbnRpZmllcihrZXlJZGVudGlm
aWVyRm9yS2V5RXZlbnQoZXZlbnQpKQotICAgICwgbV9hdXRvUmVwZWF0KChbZXZlbnQgdHlwZV0g
IT0gTlNGbGFnc0NoYW5nZWQpICYmIFtldmVudCBpc0FSZXBlYXRdKQotICAgICwgbV93aW5kb3dz
VmlydHVhbEtleUNvZGUod2luZG93c0tleUNvZGVGb3JLZXlFdmVudChldmVudCkpCi0gICAgLCBt
X25hdGl2ZVZpcnR1YWxLZXlDb2RlKFtldmVudCBrZXlDb2RlXSkKLSAgICAsIG1faXNLZXlwYWQo
aXNLZXlwYWRFdmVudChldmVudCkpCi0gICAgLCBtX21hY0V2ZW50KGV2ZW50KQotewotICAgIC8v
IEFsd2F5cyB1c2UgMTMgZm9yIEVudGVyL1JldHVybiAtLSB3ZSBkb24ndCB3YW50IHRvIHVzZSBB
cHBLaXQncyBkaWZmZXJlbnQgY2hhcmFjdGVyIGZvciBFbnRlci4KLSAgICBpZiAobV93aW5kb3dz
VmlydHVhbEtleUNvZGUgPT0gVktfUkVUVVJOKSB7Ci0gICAgICAgIG1fdGV4dCA9ICJcciI7Ci0g
ICAgICAgIG1fdW5tb2RpZmllZFRleHQgPSAiXHIiOwotICAgIH0KLQotICAgIC8vIEFwcEtpdCBz
ZXRzIHRleHQgdG8gIlx4N0YiIGZvciBiYWNrc3BhY2UsIGJ1dCB0aGUgY29ycmVjdCBLZXlib2Fy
ZEV2ZW50IGNoYXJhY3RlciBjb2RlIGlzIDguCi0gICAgaWYgKG1fd2luZG93c1ZpcnR1YWxLZXlD
b2RlID09IFZLX0JBQ0spIHsKLSAgICAgICAgbV90ZXh0ID0gIlx4OCI7Ci0gICAgICAgIG1fdW5t
b2RpZmllZFRleHQgPSAiXHg4IjsKLSAgICB9Ci0KLSAgICAvLyBBbHdheXMgdXNlIDkgZm9yIFRh
YiAtLSB3ZSBkb24ndCB3YW50IHRvIHVzZSBBcHBLaXQncyBkaWZmZXJlbnQgY2hhcmFjdGVyIGZv
ciBzaGlmdC10YWIuCi0gICAgaWYgKG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlID09IFZLX1RBQikg
ewotICAgICAgICBtX3RleHQgPSAiXHg5IjsKLSAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9ICJc
eDkiOwotICAgIH0KLX0KLQogdm9pZCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmRpc2FtYmlndWF0
ZUtleURvd25FdmVudChUeXBlIHR5cGUsIGJvb2wgYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSkK
IHsKICAgICAvLyBDYW4gb25seSBjaGFuZ2UgdHlwZSBmcm9tIEtleURvd24gdG8gUmF3S2V5RG93
biBvciBDaGFyLCBhcyB3ZSBsYWNrIGluZm9ybWF0aW9uIGZvciBvdGhlciBjb252ZXJzaW9ucy4K
QEAgLTI1Nyw2ICs3Niw2IEBAIHZvaWQgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpnZXRDdXJyZW50
TW9kaWZpZXJTdGF0ZShib29sJiBzaGlmdEtleSwgYm9vbCYgY3RybEtlCiAgICAgbWV0YUtleSA9
IGN1cnJlbnRNb2RpZmllcnMgJiA6OmNtZEtleTsKIH0KIAotfQorfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYTg1MjVlZjRm
NzdlNzQwODcxOGI0Y2M1M2YyNzIxNTdkZmRhNGNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5LmgKQEAgLTAsMCArMSw1
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUGxhdGZvcm1FdmVudEZhY3RvcnlfaAorI2RlZmlu
ZSBQbGF0Zm9ybUV2ZW50RmFjdG9yeV9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQu
aCIKKyNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQuaCIKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCisjaW5jbHVkZSAiUGxh
dGZvcm1HZXN0dXJlRXZlbnQuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFBsYXRmb3JtRXZlbnRGYWN0b3J5IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGxhdGZvcm1N
b3VzZUV2ZW50IGNyZWF0ZVBsYXRmb3JtTW91c2VFdmVudChOU0V2ZW50ICpldmVudCwgTlNWaWV3
ICp3aW5kb3dWaWV3KTsKKyAgICBzdGF0aWMgUGxhdGZvcm1XaGVlbEV2ZW50IGNyZWF0ZVBsYXRm
b3JtV2hlZWxFdmVudChOU0V2ZW50ICpldmVudCwgTlNWaWV3ICp3aW5kb3dWaWV3KTsKKyAgICBz
dGF0aWMgUGxhdGZvcm1LZXlib2FyZEV2ZW50IGNyZWF0ZVBsYXRmb3JtS2V5Ym9hcmRFdmVudChO
U0V2ZW50ICpldmVudCk7CisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorICAgIHN0YXRpYyBQ
bGF0Zm9ybUdlc3R1cmVFdmVudCBjcmVhdGVQbGF0Zm9ybUdlc3R1cmVFdmVudChOU0V2ZW50ICpl
dmVudCwgTlNWaWV3ICp3aW5kb3dWaWV3KTsKKyNlbmRpZgorfTsKKworLy8gRklYTUU6IFRoaXMg
ZG9lc24ndCByZWFsbHkgYmVsb25nIGhlcmUuCisKKyNpZiBQTEFURk9STShNQUMpICYmIGRlZmlu
ZWQoX19PQkpDX18pCitJbnRQb2ludCBnbG9iYWxQb2ludChjb25zdCBOU1BvaW50JiB3aW5kb3dQ
b2ludCwgTlNXaW5kb3cgKik7CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gUGxhdGZvcm1FdmVudEZhY3RvcnlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5Lm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2NzRmZDU5
NzIwZDI4Nzc3ODkxNDAzYjRhMmI5YjRmNjAyYWU2ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnkubW0KQEAgLTAsMCAr
MSw1MzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxh
dGZvcm1FdmVudEZhY3RvcnkuaCIKKworI2ltcG9ydCAiS2V5RXZlbnRDb2NvYS5oIgorI2ltcG9y
dCAiTG9nZ2luZy5oIgorI2ltcG9ydCAiUGxhdGZvcm1TY3JlZW4uaCIKKyNpbXBvcnQgIlNjcm9s
bGJhci5oIgorI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgorI2ltcG9ydCAiV2lu
ZG93c0tleWJvYXJkQ29kZXMuaCIKKyNpbXBvcnQgPHd0Zi9BU0NJSUNUeXBlLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworSW50UG9pbnQgZ2xvYmFsUG9pbnQoY29uc3QgTlNQb2ludCYgd2lu
ZG93UG9pbnQsIE5TV2luZG93ICp3aW5kb3cpCit7CisgICAgcmV0dXJuIEludFBvaW50KGZsaXBT
Y3JlZW5Qb2ludChbd2luZG93IGNvbnZlcnRCYXNlVG9TY3JlZW46d2luZG93UG9pbnRdLCBzY3Jl
ZW5Gb3JXaW5kb3cod2luZG93KSkpOworfQorCitzdGF0aWMgSW50UG9pbnQgZ2xvYmFsUG9pbnRG
b3JFdmVudChOU0V2ZW50ICpldmVudCkKK3sKKyAgICBzd2l0Y2ggKFtldmVudCB0eXBlXSkgewor
ICAgICAgICBjYXNlIE5TTGVmdE1vdXNlRG93bjoKKyAgICAgICAgY2FzZSBOU0xlZnRNb3VzZURy
YWdnZWQ6CisgICAgICAgIGNhc2UgTlNMZWZ0TW91c2VVcDoKKyAgICAgICAgY2FzZSBOU01vdXNl
RW50ZXJlZDoKKyAgICAgICAgY2FzZSBOU01vdXNlRXhpdGVkOgorICAgICAgICBjYXNlIE5TTW91
c2VNb3ZlZDoKKyAgICAgICAgY2FzZSBOU090aGVyTW91c2VEb3duOgorICAgICAgICBjYXNlIE5T
T3RoZXJNb3VzZURyYWdnZWQ6CisgICAgICAgIGNhc2UgTlNPdGhlck1vdXNlVXA6CisgICAgICAg
IGNhc2UgTlNSaWdodE1vdXNlRG93bjoKKyAgICAgICAgY2FzZSBOU1JpZ2h0TW91c2VEcmFnZ2Vk
OgorICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZVVwOgorICAgICAgICBjYXNlIE5TU2Nyb2xsV2hl
ZWw6CisgICAgICAgICAgICByZXR1cm4gZ2xvYmFsUG9pbnQoW2V2ZW50IGxvY2F0aW9uSW5XaW5k
b3ddLCBbZXZlbnQgd2luZG93XSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1
cm4gSW50UG9pbnQoKTsKKyAgICB9Cit9CisKK3N0YXRpYyBJbnRQb2ludCBwb2ludEZvckV2ZW50
KE5TRXZlbnQgKmV2ZW50LCBOU1ZpZXcgKndpbmRvd1ZpZXcpCit7CisgICAgc3dpdGNoIChbZXZl
bnQgdHlwZV0pIHsKKyAgICAgICAgY2FzZSBOU0xlZnRNb3VzZURvd246CisgICAgICAgIGNhc2Ug
TlNMZWZ0TW91c2VEcmFnZ2VkOgorICAgICAgICBjYXNlIE5TTGVmdE1vdXNlVXA6CisgICAgICAg
IGNhc2UgTlNNb3VzZUVudGVyZWQ6CisgICAgICAgIGNhc2UgTlNNb3VzZUV4aXRlZDoKKyAgICAg
ICAgY2FzZSBOU01vdXNlTW92ZWQ6CisgICAgICAgIGNhc2UgTlNPdGhlck1vdXNlRG93bjoKKyAg
ICAgICAgY2FzZSBOU090aGVyTW91c2VEcmFnZ2VkOgorICAgICAgICBjYXNlIE5TT3RoZXJNb3Vz
ZVVwOgorICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZURvd246CisgICAgICAgIGNhc2UgTlNSaWdo
dE1vdXNlRHJhZ2dlZDoKKyAgICAgICAgY2FzZSBOU1JpZ2h0TW91c2VVcDoKKyAgICAgICAgY2Fz
ZSBOU1Njcm9sbFdoZWVsOiB7CisgICAgICAgICAgICAvLyBOb3RlOiBUaGlzIHdpbGwgaGF2ZSBp
dHMgb3JpZ2luIGF0IHRoZSBib3R0b20gbGVmdCBvZiB0aGUgd2luZG93IHVubGVzcyB3aW5kb3dW
aWV3IGlzIGZsaXBwZWQuCisgICAgICAgICAgICAvLyBJbiB0aG9zZSBjYXNlcywgdGhlIFkgY29v
cmRpbmF0ZSBnZXRzIGZsaXBwZWQgYnkgV2lkZ2V0Ojpjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5k
b3cuCisgICAgICAgICAgICBOU1BvaW50IGxvY2F0aW9uID0gW2V2ZW50IGxvY2F0aW9uSW5XaW5k
b3ddOworICAgICAgICAgICAgaWYgKHdpbmRvd1ZpZXcpCisgICAgICAgICAgICAgICAgbG9jYXRp
b24gPSBbd2luZG93VmlldyBjb252ZXJ0UG9pbnQ6bG9jYXRpb24gZnJvbVZpZXc6bmlsXTsKKyAg
ICAgICAgICAgIHJldHVybiBJbnRQb2ludChsb2NhdGlvbik7CisgICAgICAgIH0KKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBJbnRQb2ludCgpOworICAgIH0KK30KKworc3Rh
dGljIE1vdXNlQnV0dG9uIG1vdXNlQnV0dG9uRm9yRXZlbnQoTlNFdmVudCAqZXZlbnQpCit7Cisg
ICAgc3dpdGNoIChbZXZlbnQgdHlwZV0pIHsKKyAgICAgICAgY2FzZSBOU0xlZnRNb3VzZURvd246
CisgICAgICAgIGNhc2UgTlNMZWZ0TW91c2VVcDoKKyAgICAgICAgY2FzZSBOU0xlZnRNb3VzZURy
YWdnZWQ6CisgICAgICAgICAgICByZXR1cm4gTGVmdEJ1dHRvbjsKKyAgICAgICAgY2FzZSBOU1Jp
Z2h0TW91c2VEb3duOgorICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZVVwOgorICAgICAgICBjYXNl
IE5TUmlnaHRNb3VzZURyYWdnZWQ6CisgICAgICAgICAgICByZXR1cm4gUmlnaHRCdXR0b247Cisg
ICAgICAgIGNhc2UgTlNPdGhlck1vdXNlRG93bjoKKyAgICAgICAgY2FzZSBOU090aGVyTW91c2VV
cDoKKyAgICAgICAgY2FzZSBOU090aGVyTW91c2VEcmFnZ2VkOgorICAgICAgICAgICAgcmV0dXJu
IE1pZGRsZUJ1dHRvbjsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBOb0J1
dHRvbjsKKyAgICB9Cit9CisKK3N0YXRpYyBQbGF0Zm9ybUV2ZW50OjpUeXBlIG1vdXNlRXZlbnRU
eXBlRm9yRXZlbnQoTlNFdmVudCogZXZlbnQpCit7CisgICAgc3dpdGNoIChbZXZlbnQgdHlwZV0p
IHsKKyAgICAgICAgY2FzZSBOU0xlZnRNb3VzZURyYWdnZWQ6CisgICAgICAgIGNhc2UgTlNNb3Vz
ZUVudGVyZWQ6CisgICAgICAgIGNhc2UgTlNNb3VzZUV4aXRlZDoKKyAgICAgICAgY2FzZSBOU01v
dXNlTW92ZWQ6CisgICAgICAgIGNhc2UgTlNPdGhlck1vdXNlRHJhZ2dlZDoKKyAgICAgICAgY2Fz
ZSBOU1JpZ2h0TW91c2VEcmFnZ2VkOgorICAgICAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6
Ok1vdXNlTW92ZWQ7CisgICAgICAgIGNhc2UgTlNMZWZ0TW91c2VEb3duOgorICAgICAgICBjYXNl
IE5TUmlnaHRNb3VzZURvd246CisgICAgICAgIGNhc2UgTlNPdGhlck1vdXNlRG93bjoKKyAgICAg
ICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQ7CisgICAgICAgIGNhc2Ug
TlNMZWZ0TW91c2VVcDoKKyAgICAgICAgY2FzZSBOU1JpZ2h0TW91c2VVcDoKKyAgICAgICAgY2Fz
ZSBOU090aGVyTW91c2VVcDoKKyAgICAgICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpNb3Vz
ZVJlbGVhc2VkOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIFBsYXRmb3Jt
RXZlbnQ6Ok1vdXNlTW92ZWQ7CisgICAgfQorfQorCitzdGF0aWMgaW50IGNsaWNrQ291bnRGb3JF
dmVudChOU0V2ZW50ICpldmVudCkKK3sKKyAgICBzd2l0Y2ggKFtldmVudCB0eXBlXSkgeworICAg
ICAgICBjYXNlIE5TTGVmdE1vdXNlRG93bjoKKyAgICAgICAgY2FzZSBOU0xlZnRNb3VzZVVwOgor
ICAgICAgICBjYXNlIE5TTGVmdE1vdXNlRHJhZ2dlZDoKKyAgICAgICAgY2FzZSBOU1JpZ2h0TW91
c2VEb3duOgorICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZVVwOgorICAgICAgICBjYXNlIE5TUmln
aHRNb3VzZURyYWdnZWQ6CisgICAgICAgIGNhc2UgTlNPdGhlck1vdXNlRG93bjoKKyAgICAgICAg
Y2FzZSBOU090aGVyTW91c2VVcDoKKyAgICAgICAgY2FzZSBOU090aGVyTW91c2VEcmFnZ2VkOgor
ICAgICAgICAgICAgcmV0dXJuIFtldmVudCBjbGlja0NvdW50XTsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworc3RhdGljIFBsYXRmb3JtV2hlZWxF
dmVudFBoYXNlIG1vbWVudHVtUGhhc2VGb3JFdmVudChOU0V2ZW50ICpldmVudCkKK3sKKyAgICB1
aW50MzJfdCBwaGFzZSA9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlTm9uZTsKKworI2lmICFkZWZp
bmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVP
UEFSRCkKKyAgICBpZiAoW2V2ZW50IG1vbWVudHVtUGhhc2VdICYgTlNFdmVudFBoYXNlQmVnYW4p
CisgICAgICAgIHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQmVnYW47CisgICAgaWYg
KFtldmVudCBtb21lbnR1bVBoYXNlXSAmIE5TRXZlbnRQaGFzZVN0YXRpb25hcnkpCisgICAgICAg
IHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlU3RhdGlvbmFyeTsKKyAgICBpZiAoW2V2
ZW50IG1vbWVudHVtUGhhc2VdICYgTlNFdmVudFBoYXNlQ2hhbmdlZCkKKyAgICAgICAgcGhhc2Ug
fD0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VDaGFuZ2VkOworICAgIGlmIChbZXZlbnQgbW9tZW50
dW1QaGFzZV0gJiBOU0V2ZW50UGhhc2VFbmRlZCkKKyAgICAgICAgcGhhc2UgfD0gUGxhdGZvcm1X
aGVlbEV2ZW50UGhhc2VFbmRlZDsKKyAgICBpZiAoW2V2ZW50IG1vbWVudHVtUGhhc2VdICYgTlNF
dmVudFBoYXNlQ2FuY2VsbGVkKQorICAgICAgICBwaGFzZSB8PSBQbGF0Zm9ybVdoZWVsRXZlbnRQ
aGFzZUNhbmNlbGxlZDsKKyNlbHNlCisgICAgc3dpdGNoICh3a0dldE5TRXZlbnRNb21lbnR1bVBo
YXNlKGV2ZW50KSkgeworICAgIGNhc2Ugd2tFdmVudFBoYXNlTm9uZToKKyAgICAgICAgcGhhc2Ug
PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
d2tFdmVudFBoYXNlQmVnYW46CisgICAgICAgIHBoYXNlID0gUGxhdGZvcm1XaGVlbEV2ZW50UGhh
c2VCZWdhbjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSB3a0V2ZW50UGhhc2VDaGFuZ2VkOgor
ICAgICAgICBwaGFzZSA9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQ2hhbmdlZDsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSB3a0V2ZW50UGhhc2VFbmRlZDoKKyAgICAgICAgcGhhc2UgPSBQbGF0
Zm9ybVdoZWVsRXZlbnRQaGFzZUVuZGVkOworICAgICAgICBicmVhazsKKyAgICB9CisjZW5kaWYK
KworICAgIHJldHVybiBzdGF0aWNfY2FzdDxQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZT4ocGhhc2Up
OworfQorCitzdGF0aWMgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgcGhhc2VGb3JFdmVudChOU0V2
ZW50ICpldmVudCkKK3sKKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVm
aW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCisgICAgdWludDMyX3QgcGhhc2UgPSBQbGF0
Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmU7IAorICAgIGlmIChbZXZlbnQgcGhhc2VdICYgTlNFdmVu
dFBoYXNlQmVnYW4pCisgICAgICAgIHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQmVn
YW47CisgICAgaWYgKFtldmVudCBwaGFzZV0gJiBOU0V2ZW50UGhhc2VTdGF0aW9uYXJ5KQorICAg
ICAgICBwaGFzZSB8PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZVN0YXRpb25hcnk7CisgICAgaWYg
KFtldmVudCBwaGFzZV0gJiBOU0V2ZW50UGhhc2VDaGFuZ2VkKQorICAgICAgICBwaGFzZSB8PSBQ
bGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUNoYW5nZWQ7CisgICAgaWYgKFtldmVudCBwaGFzZV0gJiBO
U0V2ZW50UGhhc2VFbmRlZCkKKyAgICAgICAgcGhhc2UgfD0gUGxhdGZvcm1XaGVlbEV2ZW50UGhh
c2VFbmRlZDsKKyAgICBpZiAoW2V2ZW50IHBoYXNlXSAmIE5TRXZlbnRQaGFzZUNhbmNlbGxlZCkK
KyAgICAgICAgcGhhc2UgfD0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VDYW5jZWxsZWQ7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlPihwaGFzZSk7CisjZWxz
ZQorICAgIFVOVVNFRF9QQVJBTShldmVudCk7CisgICAgcmV0dXJuIFBsYXRmb3JtV2hlZWxFdmVu
dFBoYXNlTm9uZTsKKyNlbmRpZgorfQorCisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorc3Rh
dGljIFBsYXRmb3JtRXZlbnQ6OlR5cGUgZ2VzdHVyZUV2ZW50VHlwZUZvckV2ZW50KE5TRXZlbnQg
KmV2ZW50KQoreworICAgIHN3aXRjaCAoW2V2ZW50IHR5cGVdKSB7CisgICAgY2FzZSBOU0V2ZW50
VHlwZUJlZ2luR2VzdHVyZToKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVT
Y3JvbGxCZWdpbjsKKyAgICBjYXNlIE5TRXZlbnRUeXBlRW5kR2VzdHVyZToKKyAgICAgICAgcmV0
dXJuIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpH
ZXN0dXJlU2Nyb2xsRW5kOworICAgIH0KK30KKyNlbmRpZgorCitzdGF0aWMgaW5saW5lIFN0cmlu
ZyB0ZXh0RnJvbUV2ZW50KE5TRXZlbnQqIGV2ZW50KQoreworICAgIGlmIChbZXZlbnQgdHlwZV0g
PT0gTlNGbGFnc0NoYW5nZWQpCisgICAgICAgIHJldHVybiBTdHJpbmcoIiIpOworICAgIHJldHVy
biBTdHJpbmcoW2V2ZW50IGNoYXJhY3RlcnNdKTsKK30KKworc3RhdGljIGlubGluZSBTdHJpbmcg
dW5tb2RpZmllZFRleHRGcm9tRXZlbnQoTlNFdmVudCogZXZlbnQpCit7CisgICAgaWYgKFtldmVu
dCB0eXBlXSA9PSBOU0ZsYWdzQ2hhbmdlZCkKKyAgICAgICAgcmV0dXJuIFN0cmluZygiIik7Cisg
ICAgcmV0dXJuIFN0cmluZyhbZXZlbnQgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzXSk7Cit9
CisKK3N0YXRpYyBTdHJpbmcga2V5SWRlbnRpZmllckZvcktleUV2ZW50KE5TRXZlbnQqIGV2ZW50
KQoreworICAgIGlmIChbZXZlbnQgdHlwZV0gPT0gTlNGbGFnc0NoYW5nZWQpIAorICAgICAgICBz
d2l0Y2ggKFtldmVudCBrZXlDb2RlXSkgeworICAgICAgICAgICAgY2FzZSA1NDogLy8gUmlnaHQg
Q29tbWFuZAorICAgICAgICAgICAgY2FzZSA1NTogLy8gTGVmdCBDb21tYW5kCisgICAgICAgICAg
ICAgICAgcmV0dXJuIFN0cmluZygiTWV0YSIpOworICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgY2FzZSA1NzogLy8gQ2Fwc2xvY2sKKyAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCJD
YXBzTG9jayIpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgY2FzZSA1NjogLy8gTGVm
dCBTaGlmdAorICAgICAgICAgICAgY2FzZSA2MDogLy8gUmlnaHQgU2hpZnQKKyAgICAgICAgICAg
ICAgICByZXR1cm4gU3RyaW5nKCJTaGlmdCIpOworICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgY2FzZSA1ODogLy8gTGVmdCBBbHQKKyAgICAgICAgICAgIGNhc2UgNjE6IC8vIFJpZ2h0IEFs
dAorICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoIkFsdCIpOworICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgY2FzZSA1OTogLy8gTGVmdCBDdHJsCisgICAgICAgICAgICBjYXNlIDYy
OiAvLyBSaWdodCBDdHJsCisgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZygiQ29udHJvbCIp
OworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCIi
KTsKKyAgICAgICAgfQorICAgIAorICAgIE5TU3RyaW5nICpzID0gW2V2ZW50IGNoYXJhY3RlcnNJ
Z25vcmluZ01vZGlmaWVyc107CisgICAgaWYgKFtzIGxlbmd0aF0gIT0gMSkgeworICAgICAgICBM
T0coRXZlbnRzLCAicmVjZWl2ZWQgYW4gdW5leHBlY3RlZCBudW1iZXIgb2YgY2hhcmFjdGVycyBp
biBrZXkgZXZlbnQ6ICV1IiwgW3MgbGVuZ3RoXSk7CisgICAgICAgIHJldHVybiAiVW5pZGVudGlm
aWVkIjsKKyAgICB9CisgICAgcmV0dXJuIGtleUlkZW50aWZpZXJGb3JDaGFyQ29kZShbcyBjaGFy
YWN0ZXJBdEluZGV4OjBdKTsKK30KKworc3RhdGljIGJvb2wgaXNLZXlwYWRFdmVudChOU0V2ZW50
KiBldmVudCkKK3sKKyAgICAvLyBDaGVjayB0aGF0IHRoaXMgaXMgdGhlIHR5cGUgb2YgZXZlbnQg
dGhhdCBoYXMgYSBrZXlDb2RlLgorICAgIHN3aXRjaCAoW2V2ZW50IHR5cGVdKSB7CisgICAgICAg
IGNhc2UgTlNLZXlEb3duOgorICAgICAgICBjYXNlIE5TS2V5VXA6CisgICAgICAgIGNhc2UgTlNG
bGFnc0NoYW5nZWQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoW2V2ZW50IG1vZGlmaWVyRmxh
Z3NdICYgTlNOdW1lcmljUGFkS2V5TWFzaykKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBz
d2l0Y2ggKFtldmVudCBrZXlDb2RlXSkgeworICAgICAgICBjYXNlIDcxOiAvLyBDbGVhcgorICAg
ICAgICBjYXNlIDgxOiAvLyA9CisgICAgICAgIGNhc2UgNzU6IC8vIC8KKyAgICAgICAgY2FzZSA2
NzogLy8gKgorICAgICAgICBjYXNlIDc4OiAvLyAtCisgICAgICAgIGNhc2UgNjk6IC8vICsKKyAg
ICAgICAgY2FzZSA3NjogLy8gRW50ZXIKKyAgICAgICAgY2FzZSA2NTogLy8gLgorICAgICAgICBj
YXNlIDgyOiAvLyAwCisgICAgICAgIGNhc2UgODM6IC8vIDEKKyAgICAgICAgY2FzZSA4NDogLy8g
MgorICAgICAgICBjYXNlIDg1OiAvLyAzCisgICAgICAgIGNhc2UgODY6IC8vIDQKKyAgICAgICAg
Y2FzZSA4NzogLy8gNQorICAgICAgICBjYXNlIDg4OiAvLyA2CisgICAgICAgIGNhc2UgODk6IC8v
IDcKKyAgICAgICAgY2FzZSA5MTogLy8gOAorICAgICAgICBjYXNlIDkyOiAvLyA5CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgfQorICAgICAKKyAgICAgcmV0dXJuIGZhbHNlOworfQor
CitzdGF0aWMgaW50IHdpbmRvd3NLZXlDb2RlRm9yS2V5RXZlbnQoTlNFdmVudCogZXZlbnQpCit7
CisgICAgaW50IGNvZGUgPSAwOworICAgIC8vIFRoZXJlIGFyZSBzZXZlcmFsIGtpbmRzIG9mIGNo
YXJhY3RlcnMgZm9yIHdoaWNoIHdlIHByb2R1Y2Uga2V5IGNvZGUgZnJvbSBjaGFyIGNvZGU6Cisg
ICAgLy8gMS4gUm9tYW4gbGV0dGVycy4gV2luZG93cyBrZXlib2FyZCBsYXlvdXRzIGFmZmVjdCBi
b3RoIHZpcnR1YWwga2V5IGNvZGVzIGFuZCBjaGFyYWN0ZXIgY29kZXMgZm9yIHRoZXNlLAorICAg
IC8vICAgIHNvIGUuZy4gJ0EnIGdldHMgdGhlIHNhbWUga2V5Q29kZSBvbiBRV0VSVFksIEFaRVJU
WSBvciBEdm9yYWsgbGF5b3V0cy4KKyAgICAvLyAyLiBLZXlzIGZvciB3aGljaCB0aGVyZSBpcyBu
byBrbm93biBNYWMgdmlydHVhbCBrZXkgY29kZXMsIGxpa2UgUHJpbnRTY3JlZW4uCisgICAgLy8g
My4gQ2VydGFpbiBwdW5jdHVhdGlvbiBrZXlzLiBPbiBXaW5kb3dzLCB0aGVzZSBhcmUgYWxzbyBy
ZW1hcHBlZCBkZXBlbmRpbmcgb24gY3VycmVudCBrZXlib2FyZCBsYXlvdXQsCisgICAgLy8gICAg
YnV0IHNlZSBjb21tZW50IGluIHdpbmRvd3NLZXlDb2RlRm9yQ2hhckNvZGUoKS4KKyAgICBpZiAo
W2V2ZW50IHR5cGVdID09IE5TS2V5RG93biB8fCBbZXZlbnQgdHlwZV0gPT0gTlNLZXlVcCkgewor
ICAgICAgICAvLyBDbWQgc3dpdGNoZXMgUm9tYW4gbGV0dGVycyBmb3IgRHZvcmFrLVFXRVJUWSBs
YXlvdXQsIHNvIHRyeSBtb2RpZmllZCBjaGFyYWN0ZXJzIGZpcnN0LgorICAgICAgICBOU1N0cmlu
ZyogcyA9IFtldmVudCBjaGFyYWN0ZXJzXTsKKyAgICAgICAgY29kZSA9IFtzIGxlbmd0aF0gPiAw
ID8gd2luZG93c0tleUNvZGVGb3JDaGFyQ29kZShbcyBjaGFyYWN0ZXJBdEluZGV4OjBdKSA6IDA7
CisgICAgICAgIGlmIChjb2RlKQorICAgICAgICAgICAgcmV0dXJuIGNvZGU7CisKKyAgICAgICAg
Ly8gQ3RybCtBIG9uIGFuIEFaRVJUWSBrZXlib2FyZCB3b3VsZCBnZXQgVktfUSBrZXlDb2RlIGlm
IHdlIHJlbGllZCBvbiAtW05TRXZlbnQga2V5Q29kZV0gYmVsb3cuCisgICAgICAgIHMgPSBbZXZl
bnQgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzXTsKKyAgICAgICAgY29kZSA9IFtzIGxlbmd0
aF0gPiAwID8gd2luZG93c0tleUNvZGVGb3JDaGFyQ29kZShbcyBjaGFyYWN0ZXJBdEluZGV4OjBd
KSA6IDA7CisgICAgICAgIGlmIChjb2RlKQorICAgICAgICAgICAgcmV0dXJuIGNvZGU7CisgICAg
fQorCisgICAgLy8gTWFwIE1hYyB2aXJ0dWFsIGtleSBjb2RlIGRpcmVjdGx5IHRvIFdpbmRvd3Mg
b25lIGZvciBhbnkga2V5cyBub3QgaGFuZGxlZCBhYm92ZS4KKyAgICAvLyBFLmcuIHRoZSBrZXkg
bmV4dCB0byBDYXBzIExvY2sgaGFzIHRoZSBzYW1lIEV2ZW50LmtleUNvZGUgb24gVS5TLiBrZXli
b2FyZCAoJ0EnKSBhbmQgb24gUnVzc2lhbiBrZXlib2FyZCAoQ1lSSUxMSUMgTEVUVEVSIEVGKS4K
KyAgICByZXR1cm4gd2luZG93c0tleUNvZGVGb3JLZXlDb2RlKFtldmVudCBrZXlDb2RlXSk7Cit9
CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0tleVVwRXZlbnQoTlNFdmVudCAqZXZlbnQpCit7Cisg
ICAgaWYgKFtldmVudCB0eXBlXSAhPSBOU0ZsYWdzQ2hhbmdlZCkKKyAgICAgICAgcmV0dXJuIFtl
dmVudCB0eXBlXSA9PSBOU0tleVVwOworICAgIC8vIEZJWE1FOiBUaGlzIGxvZ2ljIGZhaWxzIGlm
IHRoZSB1c2VyIHByZXNzZXMgYm90aCBTaGlmdCBrZXlzIGF0IG9uY2UsIGZvciBleGFtcGxlOgor
ICAgIC8vIHdlIHRyZWF0IHJlbGVhc2luZyBvbmUgb2YgdGhlbSBhcyBrZXlEb3duLgorICAgIHN3
aXRjaCAoW2V2ZW50IGtleUNvZGVdKSB7CisgICAgICAgIGNhc2UgNTQ6IC8vIFJpZ2h0IENvbW1h
bmQKKyAgICAgICAgY2FzZSA1NTogLy8gTGVmdCBDb21tYW5kCisgICAgICAgICAgICByZXR1cm4g
KFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQ29tbWFuZEtleU1hc2spID09IDA7CisgICAgICAg
ICAgICAKKyAgICAgICAgY2FzZSA1NzogLy8gQ2Fwc2xvY2sKKyAgICAgICAgICAgIHJldHVybiAo
W2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNBbHBoYVNoaWZ0S2V5TWFzaykgPT0gMDsKKyAgICAg
ICAgICAgIAorICAgICAgICBjYXNlIDU2OiAvLyBMZWZ0IFNoaWZ0CisgICAgICAgIGNhc2UgNjA6
IC8vIFJpZ2h0IFNoaWZ0CisgICAgICAgICAgICByZXR1cm4gKFtldmVudCBtb2RpZmllckZsYWdz
XSAmIE5TU2hpZnRLZXlNYXNrKSA9PSAwOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgNTg6
IC8vIExlZnQgQWx0CisgICAgICAgIGNhc2UgNjE6IC8vIFJpZ2h0IEFsdAorICAgICAgICAgICAg
cmV0dXJuIChbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0FsdGVybmF0ZUtleU1hc2spID09IDA7
CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSA1OTogLy8gTGVmdCBDdHJsCisgICAgICAgIGNh
c2UgNjI6IC8vIFJpZ2h0IEN0cmwKKyAgICAgICAgICAgIHJldHVybiAoW2V2ZW50IG1vZGlmaWVy
RmxhZ3NdICYgTlNDb250cm9sS2V5TWFzaykgPT0gMDsKKyAgICAgICAgICAgIAorICAgICAgICBj
YXNlIDYzOiAvLyBGdW5jdGlvbgorICAgICAgICAgICAgcmV0dXJuIChbZXZlbnQgbW9kaWZpZXJG
bGFnc10gJiBOU0Z1bmN0aW9uS2V5TWFzaykgPT0gMDsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitzdGF0aWMgaW5saW5lIFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnNG
b3JFdmVudChOU0V2ZW50ICpldmVudCkKK3sKKyAgICB1bnNpZ25lZCBtb2RpZmllcnMgPSAwOwor
ICAgIGlmIChbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0FscGhhU2hpZnRLZXlNYXNrKQorICAg
ICAgICBtb2RpZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6Q2Fwc0xvY2tLZXk7CisgICAgaWYgKFtl
dmVudCBtb2RpZmllckZsYWdzXSAmIE5TU2hpZnRLZXlNYXNrKQorICAgICAgICBtb2RpZmllcnMg
fD0gUGxhdGZvcm1FdmVudDo6U2hpZnRLZXk7CisgICAgaWYgKFtldmVudCBtb2RpZmllckZsYWdz
XSAmIE5TQ29udHJvbEtleU1hc2spCisgICAgICAgIG1vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50
OjpDdHJsS2V5OworICAgIGlmIChbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0FsdGVybmF0ZUtl
eU1hc2spCisgICAgICAgIG1vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpBbHRLZXk7CisgICAg
aWYgKFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQ29tbWFuZEtleU1hc2spCisgICAgICAgIG1v
ZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpNZXRhS2V5OworICAgIHJldHVybiAoUGxhdGZvcm1F
dmVudDo6TW9kaWZpZXJzKW1vZGlmaWVyczsKK30KKworCitjbGFzcyBQbGF0Zm9ybU1vdXNlRXZl
bnRCdWlsZGVyIDogcHVibGljIFBsYXRmb3JtTW91c2VFdmVudCB7CitwdWJsaWM6CisgICAgUGxh
dGZvcm1Nb3VzZUV2ZW50QnVpbGRlcihOU0V2ZW50ICpldmVudCwgTlNWaWV3ICp3aW5kb3dWaWV3
KQorICAgIHsKKyAgICAgICAgLy8gUGxhdGZvcm1FdmVudAorICAgICAgICBtX3R5cGUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IG1vdXNlRXZlbnRUeXBlRm9yRXZlbnQoZXZlbnQpOwor
ICAgICAgICBtX21vZGlmaWVycyAgICAgICAgICAgICAgICAgICAgICAgICA9IG1vZGlmaWVyc0Zv
ckV2ZW50KGV2ZW50KTsKKyAgICAgICAgbV90aW1lc3RhbXAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBbZXZlbnQgdGltZXN0YW1wXTsKKworICAgICAgICAvLyBQbGF0Zm9ybU1vdXNlRXZlbnQK
KyAgICAgICAgbV9wb3NpdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgPSBwb2ludEZvckV2
ZW50KGV2ZW50LCB3aW5kb3dWaWV3KTsKKyAgICAgICAgbV9nbG9iYWxQb3NpdGlvbiAgICAgICAg
ICAgICAgICAgICAgPSBnbG9iYWxQb2ludEZvckV2ZW50KGV2ZW50KTsKKyAgICAgICAgbV9idXR0
b24gICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBtb3VzZUJ1dHRvbkZvckV2ZW50KGV2ZW50
KTsKKyAgICAgICAgbV9jbGlja0NvdW50ICAgICAgICAgICAgICAgICAgICAgICAgPSBjbGlja0Nv
dW50Rm9yRXZlbnQoZXZlbnQpOworICAgICAgICAKKyAgICAgICAgLy8gTWFjIHNwZWNpZmljCisg
ICAgICAgIG1fbW9kaWZpZXJGbGFncyAgICAgICAgICAgICAgICAgICAgID0gW2V2ZW50IG1vZGlm
aWVyRmxhZ3NdOworICAgICAgICBtX2V2ZW50TnVtYmVyICAgICAgICAgICAgICAgICAgICAgICA9
IFtldmVudCBldmVudE51bWJlcl07CisgICAgfQorfTsKKworUGxhdGZvcm1Nb3VzZUV2ZW50IFBs
YXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQbGF0Zm9ybU1vdXNlRXZlbnQoTlNFdmVudCAqZXZl
bnQsIE5TVmlldyAqd2luZG93VmlldykKK3sKKyAgICByZXR1cm4gUGxhdGZvcm1Nb3VzZUV2ZW50
QnVpbGRlcihldmVudCwgd2luZG93Vmlldyk7Cit9CisKKworY2xhc3MgUGxhdGZvcm1XaGVlbEV2
ZW50QnVpbGRlciA6IHB1YmxpYyBQbGF0Zm9ybVdoZWVsRXZlbnQgeworcHVibGljOgorICAgIFBs
YXRmb3JtV2hlZWxFdmVudEJ1aWxkZXIoTlNFdmVudCAqZXZlbnQsIE5TVmlldyAqd2luZG93Vmll
dykKKyAgICB7CisgICAgICAgIC8vIFBsYXRmb3JtRXZlbnQKKyAgICAgICAgbV90eXBlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBQbGF0Zm9ybUV2ZW50OjpXaGVlbDsKKyAgICAgICAg
bV9tb2RpZmllcnMgICAgICAgICAgICAgICAgICAgICAgICAgPSBtb2RpZmllcnNGb3JFdmVudChl
dmVudCk7CisgICAgICAgIG1fdGltZXN0YW1wICAgICAgICAgICAgICAgICAgICAgICAgID0gW2V2
ZW50IHRpbWVzdGFtcF07CisKKyAgICAgICAgLy8gUGxhdGZvcm1XaGVlbEV2ZW50CisgICAgICAg
IG1fcG9zaXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgID0gcG9pbnRGb3JFdmVudChldmVu
dCwgd2luZG93Vmlldyk7CisgICAgICAgIG1fZ2xvYmFsUG9zaXRpb24gICAgICAgICAgICAgICAg
ICAgID0gZ2xvYmFsUG9pbnRGb3JFdmVudChldmVudCk7CisgICAgICAgIG1fZ3JhbnVsYXJpdHkg
ICAgICAgICAgICAgICAgICAgICAgID0gU2Nyb2xsQnlQYWdlV2hlZWxFdmVudDsKKworICAgICAg
ICBCT09MIGNvbnRpbnVvdXM7CisgICAgICAgIHdrR2V0V2hlZWxFdmVudERlbHRhcyhldmVudCwg
Jm1fZGVsdGFYLCAmbV9kZWx0YVksICZjb250aW51b3VzKTsKKyAgICAgICAgaWYgKGNvbnRpbnVv
dXMpIHsKKyAgICAgICAgICAgIG1fd2hlZWxUaWNrc1ggPSBtX2RlbHRhWCAvIHN0YXRpY19jYXN0
PGZsb2F0PihTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCkpOworICAgICAgICAgICAgbV93
aGVlbFRpY2tzWSA9IG1fZGVsdGFZIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KFNjcm9sbGJhcjo6cGl4
ZWxzUGVyTGluZVN0ZXAoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX3doZWVs
VGlja3NYID0gbV9kZWx0YVg7CisgICAgICAgICAgICBtX3doZWVsVGlja3NZID0gbV9kZWx0YVk7
CisgICAgICAgICAgICBtX2RlbHRhWCAqPSBzdGF0aWNfY2FzdDxmbG9hdD4oU2Nyb2xsYmFyOjpw
aXhlbHNQZXJMaW5lU3RlcCgpKTsKKyAgICAgICAgICAgIG1fZGVsdGFZICo9IHN0YXRpY19jYXN0
PGZsb2F0PihTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCkpOworICAgICAgICB9CisKKyAg
ICAgICAgbV9waGFzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBwaGFzZUZvckV2ZW50
KGV2ZW50KTsKKyAgICAgICAgbV9tb21lbnR1bVBoYXNlICAgICAgICAgICAgICAgICAgICAgPSBt
b21lbnR1bVBoYXNlRm9yRXZlbnQoZXZlbnQpOworICAgICAgICBtX2hhc1ByZWNpc2VTY3JvbGxp
bmdEZWx0YXMgICAgICAgICA9IGNvbnRpbnVvdXM7CisKKyNpZiBIQVZFKElOVkVSVEVEX1dIRUVM
X0VWRU5UUykKKyAgICAgICAgbV9kaXJlY3Rpb25JbnZlcnRlZEZyb21EZXZpY2UgICAgICAgPSBb
ZXZlbnQgaXNEaXJlY3Rpb25JbnZlcnRlZEZyb21EZXZpY2VdOworI2Vsc2UKKyAgICAgICAgbV9k
aXJlY3Rpb25JbnZlcnRlZEZyb21EZXZpY2UgICAgICAgPSBmYWxzZTsKKyNlbmRpZgorICAgIH0K
K307CisKK1BsYXRmb3JtV2hlZWxFdmVudCBQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRlUGxh
dGZvcm1XaGVlbEV2ZW50KE5TRXZlbnQgKmV2ZW50LCBOU1ZpZXcgKndpbmRvd1ZpZXcpCit7Cisg
ICAgcmV0dXJuIFBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXIoZXZlbnQsIHdpbmRvd1ZpZXcpOwor
fQorCisKK2NsYXNzIFBsYXRmb3JtS2V5Ym9hcmRFdmVudEJ1aWxkZXIgOiBwdWJsaWMgUGxhdGZv
cm1LZXlib2FyZEV2ZW50IHsKK3B1YmxpYzoKKyAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnRCdWls
ZGVyKE5TRXZlbnQgKmV2ZW50KQorICAgIHsKKyAgICAgICAgLy8gUGxhdGZvcm1FdmVudAorICAg
ICAgICBtX3R5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGlzS2V5VXBFdmVudChl
dmVudCkgPyBQbGF0Zm9ybUV2ZW50OjpLZXlVcCA6IFBsYXRmb3JtRXZlbnQ6OktleURvd247Cisg
ICAgICAgIG1fbW9kaWZpZXJzICAgICAgICAgICAgICAgICAgICAgICAgID0gbW9kaWZpZXJzRm9y
RXZlbnQoZXZlbnQpOworICAgICAgICBtX3RpbWVzdGFtcCAgICAgICAgICAgICAgICAgICAgICAg
ICA9IFtldmVudCB0aW1lc3RhbXBdOworCisgICAgICAgIC8vIFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dAorICAgICAgICBtX3RleHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IHRleHRGcm9t
RXZlbnQoZXZlbnQpOworICAgICAgICBtX3VubW9kaWZpZWRUZXh0ICAgICAgICAgICAgICAgICAg
ICA9IHVubW9kaWZpZWRUZXh0RnJvbUV2ZW50KGV2ZW50KTsKKyAgICAgICAgbV9rZXlJZGVudGlm
aWVyICAgICAgICAgICAgICAgICAgICAgPSBrZXlJZGVudGlmaWVyRm9yS2V5RXZlbnQoZXZlbnQp
OworICAgICAgICBtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSAgICAgICAgICAgICA9IHdpbmRvd3NL
ZXlDb2RlRm9yS2V5RXZlbnQoZXZlbnQpOworICAgICAgICBtX25hdGl2ZVZpcnR1YWxLZXlDb2Rl
ICAgICAgICAgICAgICA9IFtldmVudCBrZXlDb2RlXTsKKyAgICAgICAgbV9tYWNDaGFyQ29kZSAg
ICAgICAgICAgICAgICAgICAgICAgPSB3a0dldE5TRXZlbnRLZXlDaGFyKGV2ZW50KTsKKyAgICAg
ICAgbV9hdXRvUmVwZWF0ICAgICAgICAgICAgICAgICAgICAgICAgPSAoW2V2ZW50IHR5cGVdICE9
IE5TRmxhZ3NDaGFuZ2VkKSAmJiBbZXZlbnQgaXNBUmVwZWF0XTsKKyAgICAgICAgbV9pc0tleXBh
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgPSBpc0tleXBhZEV2ZW50KGV2ZW50KTsKKyAgICAg
ICAgbV9pc1N5c3RlbUtleSAgICAgICAgICAgICAgICAgICAgICAgPSBmYWxzZTsgLy8gU3lzdGVt
S2V5IGlzIGFsd2F5cyBmYWxzZSBvbiB0aGUgTWFjLgorCisgICAgICAgIC8vIEFsd2F5cyB1c2Ug
MTMgZm9yIEVudGVyL1JldHVybiAtLSB3ZSBkb24ndCB3YW50IHRvIHVzZSBBcHBLaXQncyBkaWZm
ZXJlbnQgY2hhcmFjdGVyIGZvciBFbnRlci4KKyAgICAgICAgaWYgKG1fd2luZG93c1ZpcnR1YWxL
ZXlDb2RlID09IFZLX1JFVFVSTikgeworICAgICAgICAgICAgbV90ZXh0ID0gIlxyIjsKKyAgICAg
ICAgICAgIG1fdW5tb2RpZmllZFRleHQgPSAiXHIiOworICAgICAgICB9CisKKyAgICAgICAgLy8g
QXBwS2l0IHNldHMgdGV4dCB0byAiXHg3RiIgZm9yIGJhY2tzcGFjZSwgYnV0IHRoZSBjb3JyZWN0
IEtleWJvYXJkRXZlbnQgY2hhcmFjdGVyIGNvZGUgaXMgOC4KKyAgICAgICAgaWYgKG1fd2luZG93
c1ZpcnR1YWxLZXlDb2RlID09IFZLX0JBQ0spIHsKKyAgICAgICAgICAgIG1fdGV4dCA9ICJceDgi
OworICAgICAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9ICJceDgiOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gQWx3YXlzIHVzZSA5IGZvciBUYWIgLS0gd2UgZG9uJ3Qgd2FudCB0byB1c2UgQXBw
S2l0J3MgZGlmZmVyZW50IGNoYXJhY3RlciBmb3Igc2hpZnQtdGFiLgorICAgICAgICBpZiAobV93
aW5kb3dzVmlydHVhbEtleUNvZGUgPT0gVktfVEFCKSB7CisgICAgICAgICAgICBtX3RleHQgPSAi
XHg5IjsKKyAgICAgICAgICAgIG1fdW5tb2RpZmllZFRleHQgPSAiXHg5IjsKKyAgICAgICAgfQor
CisgICAgICAgIC8vIE1hYyBzcGVjaWZpYy4KKyAgICAgICAgbV9tYWNFdmVudCA9IGV2ZW50Owor
ICAgIH0KK307CisKK1BsYXRmb3JtS2V5Ym9hcmRFdmVudCBQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6
Y3JlYXRlUGxhdGZvcm1LZXlib2FyZEV2ZW50KE5TRXZlbnQgKmV2ZW50KQoreworICAgIHJldHVy
biBQbGF0Zm9ybUtleWJvYXJkRXZlbnRCdWlsZGVyKGV2ZW50KTsKK30KKworI2lmIEVOQUJMRShH
RVNUVVJFX0VWRU5UUykKK2NsYXNzIFBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlciA6IHB1Ymxp
YyBQbGF0Zm9ybUdlc3R1cmVFdmVudCB7CitwdWJsaWM6CisgICAgUGxhdGZvcm1HZXN0dXJlRXZl
bnRCdWlsZGVyKE5TRXZlbnQgKmV2ZW50LCBOU1ZpZXcgKndpbmRvd1ZpZXcpCisgICAgeworICAg
ICAgICAvLyBQbGF0Zm9ybUV2ZW50CisgICAgICAgIG1fdHlwZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gZ2VzdHVyZUV2ZW50VHlwZUZvckV2ZW50KGV2ZW50KTsKKyAgICAgICAgbV9t
b2RpZmllcnMgICAgICAgICAgICAgICAgICAgICAgICAgPSBtb2RpZmllcnNGb3JFdmVudChldmVu
dCk7CisgICAgICAgIG1fdGltZXN0YW1wICAgICAgICAgICAgICAgICAgICAgICAgID0gW2V2ZW50
IHRpbWVzdGFtcF07CisKKyAgICAgICAgLy8gUGxhdGZvcm1HZXN0dXJlRXZlbnQKKyAgICAgICAg
bV9wb3NpdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgPSBwb2ludEZvckV2ZW50KGV2ZW50
LCB3aW5kb3dWaWV3KTsKKyAgICAgICAgbV9nbG9iYWxQb3NpdGlvbiAgICAgICAgICAgICAgICAg
ICAgPSBnbG9iYWxQb2ludEZvckV2ZW50KGV2ZW50KTsKKyAgICAgICAgbV9kZWx0YVggICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAwOworICAgICAgICBtX2RlbHRhWSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IDA7CisgICAgfQorfTsKKworUGxhdGZvcm1HZXN0dXJlRXZlbnQgUGxh
dGZvcm1FdmVudEZhY3Rvcnk6OmNyZWF0ZVBsYXRmb3JtR2VzdHVyZUV2ZW50KE5TRXZlbnQgKmV2
ZW50LCBOU1ZpZXcgKndpbmRvd1ZpZXcpCit7CisgICAgcmV0dXJuIFBsYXRmb3JtR2VzdHVyZUV2
ZW50QnVpbGRlcihldmVudCwgd2luZG93Vmlldyk7Cit9CisjZW5kaWYKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRm
b3JtTW91c2VFdmVudE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9y
bU1vdXNlRXZlbnRNYWMubW0KaW5kZXggYzVmNTk4OTAxMmJmNDhhNmYwZjMxMmFlMzZmN2VjMzJl
NDMzY2ZiYy4uNTc0OGU3YzY5NGE2NjJiM2JhMGI2NGQ4NzU4MGM3NjA0MjljN2JkZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtTW91c2VFdmVudE1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1Nb3VzZUV2ZW50TWFj
Lm1tCkBAIC0xLDE2OSArMSwyIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2IEFw
cGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwogCi0jaW1wb3J0
ICJjb25maWcuaCIKLSNpbXBvcnQgIlBsYXRmb3JtTW91c2VFdmVudC5oIgotCi0jaW1wb3J0ICJQ
bGF0Zm9ybVNjcmVlbi5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBNb3VzZUJ1
dHRvbiBtb3VzZUJ1dHRvbkZvckV2ZW50KE5TRXZlbnQgKmV2ZW50KQotewotICAgIHN3aXRjaCAo
W2V2ZW50IHR5cGVdKSB7Ci0gICAgICAgIGNhc2UgTlNMZWZ0TW91c2VEb3duOgotICAgICAgICBj
YXNlIE5TTGVmdE1vdXNlVXA6Ci0gICAgICAgIGNhc2UgTlNMZWZ0TW91c2VEcmFnZ2VkOgotICAg
ICAgICAgICAgcmV0dXJuIExlZnRCdXR0b247Ci0gICAgICAgIGNhc2UgTlNSaWdodE1vdXNlRG93
bjoKLSAgICAgICAgY2FzZSBOU1JpZ2h0TW91c2VVcDoKLSAgICAgICAgY2FzZSBOU1JpZ2h0TW91
c2VEcmFnZ2VkOgotICAgICAgICAgICAgcmV0dXJuIFJpZ2h0QnV0dG9uOwotICAgICAgICBjYXNl
IE5TT3RoZXJNb3VzZURvd246Ci0gICAgICAgIGNhc2UgTlNPdGhlck1vdXNlVXA6Ci0gICAgICAg
IGNhc2UgTlNPdGhlck1vdXNlRHJhZ2dlZDoKLSAgICAgICAgICAgIHJldHVybiBNaWRkbGVCdXR0
b247Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gTm9CdXR0b247Ci0gICAg
fQotfQotCi1zdGF0aWMgaW50IGNsaWNrQ291bnRGb3JFdmVudChOU0V2ZW50ICpldmVudCkKLXsK
LSAgICBzd2l0Y2ggKFtldmVudCB0eXBlXSkgewotICAgICAgICBjYXNlIE5TTGVmdE1vdXNlRG93
bjoKLSAgICAgICAgY2FzZSBOU0xlZnRNb3VzZVVwOgotICAgICAgICBjYXNlIE5TTGVmdE1vdXNl
RHJhZ2dlZDoKLSAgICAgICAgY2FzZSBOU1JpZ2h0TW91c2VEb3duOgotICAgICAgICBjYXNlIE5T
UmlnaHRNb3VzZVVwOgotICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZURyYWdnZWQ6Ci0gICAgICAg
IGNhc2UgTlNPdGhlck1vdXNlRG93bjoKLSAgICAgICAgY2FzZSBOU090aGVyTW91c2VVcDoKLSAg
ICAgICAgY2FzZSBOU090aGVyTW91c2VEcmFnZ2VkOgotICAgICAgICAgICAgcmV0dXJuIFtldmVu
dCBjbGlja0NvdW50XTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiAwOwot
ICAgIH0KLX0KLQotSW50UG9pbnQgZ2xvYmFsUG9pbnQoY29uc3QgTlNQb2ludCYgd2luZG93UG9p
bnQsIE5TV2luZG93ICp3aW5kb3cpCi17Ci0gICAgcmV0dXJuIEludFBvaW50KGZsaXBTY3JlZW5Q
b2ludChbd2luZG93IGNvbnZlcnRCYXNlVG9TY3JlZW46d2luZG93UG9pbnRdLCBzY3JlZW5Gb3JX
aW5kb3cod2luZG93KSkpOwotfQotCi1JbnRQb2ludCBwb2ludEZvckV2ZW50KE5TRXZlbnQgKmV2
ZW50LCBOU1ZpZXcgKndpbmRvd1ZpZXcpCi17Ci0gICAgc3dpdGNoIChbZXZlbnQgdHlwZV0pIHsK
LSAgICAgICAgY2FzZSBOU0xlZnRNb3VzZURvd246Ci0gICAgICAgIGNhc2UgTlNMZWZ0TW91c2VV
cDoKLSAgICAgICAgY2FzZSBOU0xlZnRNb3VzZURyYWdnZWQ6Ci0gICAgICAgIGNhc2UgTlNSaWdo
dE1vdXNlRG93bjoKLSAgICAgICAgY2FzZSBOU1JpZ2h0TW91c2VVcDoKLSAgICAgICAgY2FzZSBO
U1JpZ2h0TW91c2VEcmFnZ2VkOgotICAgICAgICBjYXNlIE5TT3RoZXJNb3VzZURvd246Ci0gICAg
ICAgIGNhc2UgTlNPdGhlck1vdXNlVXA6Ci0gICAgICAgIGNhc2UgTlNPdGhlck1vdXNlRHJhZ2dl
ZDoKLSAgICAgICAgY2FzZSBOU01vdXNlTW92ZWQ6Ci0gICAgICAgIGNhc2UgTlNTY3JvbGxXaGVl
bDogewotICAgICAgICAgICAgLy8gTm90ZTogVGhpcyB3aWxsIGhhdmUgaXRzIG9yaWdpbiBhdCB0
aGUgYm90dG9tIGxlZnQgb2YgdGhlIHdpbmRvdyB1bmxlc3Mgd2luZG93VmlldyBpcyBmbGlwcGVk
LgotICAgICAgICAgICAgLy8gSW4gdGhvc2UgY2FzZXMsIHRoZSBZIGNvb3JkaW5hdGUgZ2V0cyBm
bGlwcGVkIGJ5IFdpZGdldDo6Y29udmVydEZyb21Db250YWluaW5nV2luZG93LgotICAgICAgICAg
ICAgTlNQb2ludCBsb2NhdGlvbiA9IFtldmVudCBsb2NhdGlvbkluV2luZG93XTsKLSAgICAgICAg
ICAgIGlmICh3aW5kb3dWaWV3KQotICAgICAgICAgICAgICAgIGxvY2F0aW9uID0gW3dpbmRvd1Zp
ZXcgY29udmVydFBvaW50OmxvY2F0aW9uIGZyb21WaWV3Om5pbF07Ci0gICAgICAgICAgICByZXR1
cm4gSW50UG9pbnQobG9jYXRpb24pOwotICAgICAgICB9Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICByZXR1cm4gSW50UG9pbnQoKTsKLSAgICB9Ci19Ci0KLUludFBvaW50IGdsb2JhbFBv
aW50Rm9yRXZlbnQoTlNFdmVudCAqZXZlbnQpCi17Ci0gICAgc3dpdGNoIChbZXZlbnQgdHlwZV0p
IHsKLSAgICAgICAgY2FzZSBOU0xlZnRNb3VzZURvd246Ci0gICAgICAgIGNhc2UgTlNMZWZ0TW91
c2VVcDoKLSAgICAgICAgY2FzZSBOU0xlZnRNb3VzZURyYWdnZWQ6Ci0gICAgICAgIGNhc2UgTlNS
aWdodE1vdXNlRG93bjoKLSAgICAgICAgY2FzZSBOU1JpZ2h0TW91c2VVcDoKLSAgICAgICAgY2Fz
ZSBOU1JpZ2h0TW91c2VEcmFnZ2VkOgotICAgICAgICBjYXNlIE5TT3RoZXJNb3VzZURvd246Ci0g
ICAgICAgIGNhc2UgTlNPdGhlck1vdXNlVXA6Ci0gICAgICAgIGNhc2UgTlNPdGhlck1vdXNlRHJh
Z2dlZDoKLSAgICAgICAgY2FzZSBOU01vdXNlTW92ZWQ6Ci0gICAgICAgIGNhc2UgTlNTY3JvbGxX
aGVlbDoKLSAgICAgICAgICAgIHJldHVybiBnbG9iYWxQb2ludChbZXZlbnQgbG9jYXRpb25Jbldp
bmRvd10sIFtldmVudCB3aW5kb3ddKTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJl
dHVybiBJbnRQb2ludCgpOwotICAgIH0KLX0KLQotc3RhdGljIFBsYXRmb3JtRXZlbnQ6OlR5cGUg
bW91c2VFdmVudEZvck5TRXZlbnQoTlNFdmVudCogZXZlbnQpIAotewotICAgIHN3aXRjaCAoW2V2
ZW50IHR5cGVdKSB7Ci0gICAgY2FzZSBOU1Njcm9sbFdoZWVsOgotICAgICAgICByZXR1cm4gUGxh
dGZvcm1FdmVudDo6TW91c2VTY3JvbGw7Ci0gICAgY2FzZSBOU0xlZnRNb3VzZURyYWdnZWQ6Ci0g
ICAgY2FzZSBOU1JpZ2h0TW91c2VEcmFnZ2VkOgotICAgIGNhc2UgTlNPdGhlck1vdXNlRHJhZ2dl
ZDoKLSAgICBjYXNlIE5TTW91c2VNb3ZlZDoKLSAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6
Ok1vdXNlTW92ZWQ7Ci0gICAgY2FzZSBOU0xlZnRNb3VzZURvd246Ci0gICAgY2FzZSBOU1JpZ2h0
TW91c2VEb3duOgotICAgIGNhc2UgTlNPdGhlck1vdXNlRG93bjoKLSAgICAgICAgcmV0dXJuIFBs
YXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZDsKLSAgICBjYXNlIE5TTGVmdE1vdXNlVXA6Ci0gICAg
Y2FzZSBOU1JpZ2h0TW91c2VVcDoKLSAgICBjYXNlIE5TT3RoZXJNb3VzZVVwOgotICAgICAgICBy
ZXR1cm4gUGxhdGZvcm1FdmVudDo6TW91c2VSZWxlYXNlZDsKLSAgICBkZWZhdWx0OgotICAgICAg
ICByZXR1cm4gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZDsKLSAgICB9Ci19Ci0KLVBsYXRmb3Jt
TW91c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KE5TRXZlbnQqIGV2ZW50LCBOU1ZpZXcgKndp
bmRvd1ZpZXcpCi0gICAgOiBQbGF0Zm9ybUV2ZW50KG1vdXNlRXZlbnRGb3JOU0V2ZW50KGV2ZW50
KSwgW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNTaGlmdEtleU1hc2ssIFtldmVudCBtb2RpZmll
ckZsYWdzXSAmIE5TQ29udHJvbEtleU1hc2ssIFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQWx0
ZXJuYXRlS2V5TWFzaywgW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb21tYW5kS2V5TWFzaywg
W2V2ZW50IHRpbWVzdGFtcF0pCi0gICAgLCBtX3Bvc2l0aW9uKHBvaW50Rm9yRXZlbnQoZXZlbnQs
IHdpbmRvd1ZpZXcpKQotICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb2ludEZvckV2ZW50
KGV2ZW50KSkKLSAgICAsIG1fYnV0dG9uKG1vdXNlQnV0dG9uRm9yRXZlbnQoZXZlbnQpKQotICAg
ICwgbV9jbGlja0NvdW50KGNsaWNrQ291bnRGb3JFdmVudChldmVudCkpCi0gICAgLCBtX21vZGlm
aWVyRmxhZ3MoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdKQotICAgICwgbV9ldmVudE51bWJlcihbZXZl
bnQgZXZlbnROdW1iZXJdKQotewotfQotCi1QbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91
c2VFdmVudChpbnQgeCwgaW50IHksIGludCBnbG9iYWxYLCBpbnQgZ2xvYmFsWSwgTW91c2VCdXR0
b24gYnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpUeXBlIHR5cGUsCi0gICAgICAgICAgICAgICAgICAg
aW50IGNsaWNrQ291bnQsIGJvb2wgc2hpZnRLZXksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXks
IGJvb2wgbWV0YUtleSwgZG91YmxlIHRpbWVzdGFtcCwKLSAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBtb2RpZmllckZsYWdzLCBpbnQgZXZlbnROdW1iZXIpCi0gICAgOiBQbGF0Zm9ybUV2ZW50
KHR5cGUsIHNoaWZ0S2V5LCBjdHJsS2V5LCBhbHRLZXksIG1ldGFLZXksIHRpbWVzdGFtcCkKLSAg
ICAsIG1fcG9zaXRpb24oSW50UG9pbnQoeCwgeSkpCi0gICAgLCBtX2dsb2JhbFBvc2l0aW9uKElu
dFBvaW50KGdsb2JhbFgsIGdsb2JhbFkpKQotICAgICwgbV9idXR0b24oYnV0dG9uKQotICAgICwg
bV9jbGlja0NvdW50KGNsaWNrQ291bnQpCi0gICAgLCBtX21vZGlmaWVyRmxhZ3MobW9kaWZpZXJG
bGFncykKLSAgICAsIG1fZXZlbnROdW1iZXIoZXZlbnROdW1iZXIpCi17Ci19Ci0KLX0KKy8vIFJF
TU9WRSBUSElTIEZJTEUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9X
ZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2Vi
Q29yZVN5c3RlbUludGVyZmFjZS5oCmluZGV4IDE3NjRiNzlmNjkyNTBiZGQ5ZmEwZDAyZjYwODA4
NDRjNTg1YjZmNzUuLmJlYjM2Y2EwNmRkMzhiNTA3YTA2MGM4MDRmZWNmM2JlMzMwY2FhMGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJm
YWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRl
cmZhY2UuaApAQCAtMTcyLDYgKzE3Miw3IEBAIGV4dGVybiBkb3VibGUgKCp3a0dldE5TVVJMUmVz
cG9uc2VDYWxjdWxhdGVkRXhwaXJhdGlvbikoTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UpCiBleHRl
cm4gTlNEYXRlICooKndrR2V0TlNVUkxSZXNwb25zZUxhc3RNb2RpZmllZERhdGUpKE5TVVJMUmVz
cG9uc2UgKnJlc3BvbnNlKTsKIGV4dGVybiBCT09MICgqd2tHZXROU1VSTFJlc3BvbnNlTXVzdFJl
dmFsaWRhdGUpKE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlKTsKIGV4dGVybiB2b2lkICgqd2tHZXRX
aGVlbEV2ZW50RGVsdGFzKShOU0V2ZW50KiwgZmxvYXQqIGRlbHRhWCwgZmxvYXQqIGRlbHRhWSwg
Qk9PTCogY29udGludW91cyk7CitleHRlcm4gVUludDggKCp3a0dldE5TRXZlbnRLZXlDaGFyKShO
U0V2ZW50ICopOwogZXh0ZXJuIEJPT0wgKCp3a0hpdFRlc3RNZWRpYVVJUGFydCkoaW50IHBhcnQs
IGludCB0aGVtZVN0eWxlLCBDR1JlY3QgYm91bmRzLCBDR1BvaW50IHBvaW50KTsKIGV4dGVybiB2
b2lkICgqd2tNZWFzdXJlTWVkaWFVSVBhcnQpKGludCBwYXJ0LCBpbnQgdGhlbWVTdHlsZSwgQ0dS
ZWN0ICpib3VuZHMsIENHU2l6ZSAqbmF0dXJhbFNpemUpOwogZXh0ZXJuIE5TVmlldyAqKCp3a0Ny
ZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldykodm9pZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCmluZGV4IGNkYTA5NWJl
ZDQ3ZmZjY2ExNGYxYjEyNWVlM2JlNDkwNWYxOGM2YWMuLmI0Y2E1NDA3ZGQ1YTA1YmJjZDU4MDJk
ZGQ3YWUxMTAzZjMwYzA1NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCkBAIC02MCw2ICs2MCw3IEBAIE5TVGltZUlu
dGVydmFsICgqd2tHZXROU1VSTFJlc3BvbnNlQ2FsY3VsYXRlZEV4cGlyYXRpb24pKE5TVVJMUmVz
cG9uc2UgKnJlc3BvbnNlCiBOU0RhdGUgKigqd2tHZXROU1VSTFJlc3BvbnNlTGFzdE1vZGlmaWVk
RGF0ZSkoTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UpOwogQk9PTCAoKndrR2V0TlNVUkxSZXNwb25z
ZU11c3RSZXZhbGlkYXRlKShOU1VSTFJlc3BvbnNlICpyZXNwb25zZSk7CiB2b2lkICgqd2tHZXRX
aGVlbEV2ZW50RGVsdGFzKShOU0V2ZW50KiwgZmxvYXQqIGRlbHRhWCwgZmxvYXQqIGRlbHRhWSwg
Qk9PTCogY29udGludW91cyk7CitVSW50OCAoKndrR2V0TlNFdmVudEtleUNoYXIpKE5TRXZlbnQg
Kik7CiB2b2lkICgqd2tQb3B1cE1lbnUpKE5TTWVudSosIE5TUG9pbnQgbG9jYXRpb24sIGZsb2F0
IHdpZHRoLCBOU1ZpZXcqLCBpbnQgc2VsZWN0ZWRJdGVtLCBOU0ZvbnQqKTsKIHVuc2lnbmVkICgq
d2tRVEluY2x1ZGVPbmx5TW9kZXJuTWVkaWFGaWxlVHlwZXMpKHZvaWQpOwogaW50ICgqd2tRVE1v
dmllRGF0YVJhdGUpKFFUTW92aWUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9XaGVlbEV2ZW50TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1do
ZWVsRXZlbnRNYWMubW0KaW5kZXggODljOWZiNzdlOTkzOWE5MTQwOTI4ZjY3MDcxZmRiNjFmNjU0
Y2QyOC4uNTc0OGU3YzY5NGE2NjJiM2JhMGI2NGQ4NzU4MGM3NjA0MjljN2JkZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1doZWVsRXZlbnRNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1doZWVsRXZlbnRNYWMubW0KQEAgLTEsMTIxICsxLDIg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYsIDIwMTAsIDIwMTEgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCiAKLSNpbXBvcnQgImNvbmZp
Zy5oIgotI2ltcG9ydCAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCi0KLSNpbXBvcnQgIlBsYXRmb3Jt
TW91c2VFdmVudC5oIgotI2ltcG9ydCAiU2Nyb2xsYmFyLmgiCi0jaW1wb3J0ICJXZWJDb3JlU3lz
dGVtSW50ZXJmYWNlLmgiCi0jaW1wb3J0IDx3dGYvVW51c2VkUGFyYW0uaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1zdGF0aWMgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgbW9tZW50dW1QaGFz
ZUZvckV2ZW50KE5TRXZlbnQgKmV2ZW50KQotewotICAgIHVpbnQzMl90IHBoYXNlID0gUGxhdGZv
cm1XaGVlbEV2ZW50UGhhc2VOb25lOwotCi0jaWYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFS
RCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQotICAgIGlmIChbZXZlbnQg
bW9tZW50dW1QaGFzZV0gJiBOU0V2ZW50UGhhc2VCZWdhbikKLSAgICAgICAgcGhhc2UgfD0gUGxh
dGZvcm1XaGVlbEV2ZW50UGhhc2VCZWdhbjsKLSAgICBpZiAoW2V2ZW50IG1vbWVudHVtUGhhc2Vd
ICYgTlNFdmVudFBoYXNlU3RhdGlvbmFyeSkKLSAgICAgICAgcGhhc2UgfD0gUGxhdGZvcm1XaGVl
bEV2ZW50UGhhc2VTdGF0aW9uYXJ5OwotICAgIGlmIChbZXZlbnQgbW9tZW50dW1QaGFzZV0gJiBO
U0V2ZW50UGhhc2VDaGFuZ2VkKQotICAgICAgICBwaGFzZSB8PSBQbGF0Zm9ybVdoZWVsRXZlbnRQ
aGFzZUNoYW5nZWQ7Ci0gICAgaWYgKFtldmVudCBtb21lbnR1bVBoYXNlXSAmIE5TRXZlbnRQaGFz
ZUVuZGVkKQotICAgICAgICBwaGFzZSB8PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUVuZGVkOwot
ICAgIGlmIChbZXZlbnQgbW9tZW50dW1QaGFzZV0gJiBOU0V2ZW50UGhhc2VDYW5jZWxsZWQpCi0g
ICAgICAgIHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQ2FuY2VsbGVkOwotI2Vsc2UK
LSAgICBzd2l0Y2ggKHdrR2V0TlNFdmVudE1vbWVudHVtUGhhc2UoZXZlbnQpKSB7Ci0gICAgY2Fz
ZSB3a0V2ZW50UGhhc2VOb25lOgotICAgICAgICBwaGFzZSA9IFBsYXRmb3JtV2hlZWxFdmVudFBo
YXNlTm9uZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSB3a0V2ZW50UGhhc2VCZWdhbjoKLSAg
ICAgICAgcGhhc2UgPSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUJlZ2FuOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIHdrRXZlbnRQaGFzZUNoYW5nZWQ6Ci0gICAgICAgIHBoYXNlID0gUGxhdGZv
cm1XaGVlbEV2ZW50UGhhc2VDaGFuZ2VkOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIHdrRXZl
bnRQaGFzZUVuZGVkOgotICAgICAgICBwaGFzZSA9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlRW5k
ZWQ7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSNlbmRpZgotCi0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlPihwaGFzZSk7Ci19Ci0KLXN0YXRpYyBQbGF0Zm9y
bVdoZWVsRXZlbnRQaGFzZSBwaGFzZUZvckV2ZW50KE5TRXZlbnQgKmV2ZW50KQotewotI2lmICFk
ZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1df
TEVPUEFSRCkKLSAgICB1aW50MzJfdCBwaGFzZSA9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlTm9u
ZTsgCi0gICAgaWYgKFtldmVudCBwaGFzZV0gJiBOU0V2ZW50UGhhc2VCZWdhbikKLSAgICAgICAg
cGhhc2UgfD0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VCZWdhbjsKLSAgICBpZiAoW2V2ZW50IHBo
YXNlXSAmIE5TRXZlbnRQaGFzZVN0YXRpb25hcnkpCi0gICAgICAgIHBoYXNlIHw9IFBsYXRmb3Jt
V2hlZWxFdmVudFBoYXNlU3RhdGlvbmFyeTsKLSAgICBpZiAoW2V2ZW50IHBoYXNlXSAmIE5TRXZl
bnRQaGFzZUNoYW5nZWQpCi0gICAgICAgIHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNl
Q2hhbmdlZDsKLSAgICBpZiAoW2V2ZW50IHBoYXNlXSAmIE5TRXZlbnRQaGFzZUVuZGVkKQotICAg
ICAgICBwaGFzZSB8PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUVuZGVkOwotICAgIGlmIChbZXZl
bnQgcGhhc2VdICYgTlNFdmVudFBoYXNlQ2FuY2VsbGVkKQotICAgICAgICBwaGFzZSB8PSBQbGF0
Zm9ybVdoZWVsRXZlbnRQaGFzZUNhbmNlbGxlZDsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UGxh
dGZvcm1XaGVlbEV2ZW50UGhhc2U+KHBoYXNlKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGV2
ZW50KTsKLSAgICByZXR1cm4gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VOb25lOwotI2VuZGlmCi19
Ci0KLVBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KE5TRXZlbnQqIGV2ZW50
LCBOU1ZpZXcgKndpbmRvd1ZpZXcpCi0gICAgOiBQbGF0Zm9ybUV2ZW50KFBsYXRmb3JtRXZlbnQ6
OldoZWVsLCBbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU1NoaWZ0S2V5TWFzaywgW2V2ZW50IG1v
ZGlmaWVyRmxhZ3NdICYgTlNDb250cm9sS2V5TWFzaywgW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYg
TlNBbHRlcm5hdGVLZXlNYXNrLCBbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0NvbW1hbmRLZXlN
YXNrLCBbZXZlbnQgdGltZXN0YW1wXSkKLSAgICAsIG1fcG9zaXRpb24ocG9pbnRGb3JFdmVudChl
dmVudCwgd2luZG93VmlldykpCi0gICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvaW50Rm9y
RXZlbnQoZXZlbnQpKQotICAgICwgbV9ncmFudWxhcml0eShTY3JvbGxCeVBpeGVsV2hlZWxFdmVu
dCkKLSAgICAsIG1fcGhhc2UocGhhc2VGb3JFdmVudChldmVudCkpCi0gICAgLCBtX21vbWVudHVt
UGhhc2UobW9tZW50dW1QaGFzZUZvckV2ZW50KGV2ZW50KSkKLXsKLSAgICBCT09MIGNvbnRpbnVv
dXM7Ci0gICAgd2tHZXRXaGVlbEV2ZW50RGVsdGFzKGV2ZW50LCAmbV9kZWx0YVgsICZtX2RlbHRh
WSwgJmNvbnRpbnVvdXMpOwotICAgIGlmIChjb250aW51b3VzKSB7Ci0gICAgICAgIG1fd2hlZWxU
aWNrc1ggPSBtX2RlbHRhWCAvIHN0YXRpY19jYXN0PGZsb2F0PihTY3JvbGxiYXI6OnBpeGVsc1Bl
ckxpbmVTdGVwKCkpOwotICAgICAgICBtX3doZWVsVGlja3NZID0gbV9kZWx0YVkgLyBzdGF0aWNf
Y2FzdDxmbG9hdD4oU2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpKTsKLSAgICAgICAgbV9o
YXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzID0gdHJ1ZTsKLSAgICB9IGVsc2UgewotICAgICAgICBt
X3doZWVsVGlja3NYID0gbV9kZWx0YVg7Ci0gICAgICAgIG1fd2hlZWxUaWNrc1kgPSBtX2RlbHRh
WTsKLSAgICAgICAgbV9kZWx0YVggKj0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KFNjcm9sbGJhcjo6cGl4
ZWxzUGVyTGluZVN0ZXAoKSk7Ci0gICAgICAgIG1fZGVsdGFZICo9IHN0YXRpY19jYXN0PGZsb2F0
PihTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCkpOwotICAgICAgICBtX2hhc1ByZWNpc2VT
Y3JvbGxpbmdEZWx0YXMgPSBmYWxzZTsKLSAgICB9Ci0KLSNpZiBIQVZFKElOVkVSVEVEX1dIRUVM
X0VWRU5UUykKLSAgICBtX2RpcmVjdGlvbkludmVydGVkRnJvbURldmljZSA9IFtldmVudCBpc0Rp
cmVjdGlvbkludmVydGVkRnJvbURldmljZV07Ci0jZWxzZQotICAgIG1fZGlyZWN0aW9uSW52ZXJ0
ZWRGcm9tRGV2aWNlID0gZmFsc2U7Ci0jZW5kaWYKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorLy8gUkVNT1ZFIFRISVMgRklMRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCmluZGV4IDEzMTAxMjRkMjcyOWZiNjlj
NzVmNjNiMGY2Y2I1MDM0MzBmZGIxYTMuLmU5M2QwYzYxZWRmY2QzZThjOGI1NmJhY2MyZDA5OTMw
ZjAyMTEyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlN5c3RlbUludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KQEAgLTY3LDYgKzY3LDcgQEAgdm9pZCBJbml0V2ViQ29y
ZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAgIElOSVQoU2lnbmVkUHVibGljS2V5QW5kQ2hhbGxl
bmdlU3RyaW5nKTsKICAgICBJTklUKEdldFByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKTsK
ICAgICBJTklUKEdldFdoZWVsRXZlbnREZWx0YXMpOworICAgIElOSVQoR2V0TlNFdmVudEtleUNo
YXIpOwogICAgIElOSVQoSGl0VGVzdE1lZGlhVUlQYXJ0KTsKICAgICBJTklUKEluaXRpYWxpemVN
YXhpbXVtSFRUUENvbm5lY3Rpb25Db3VudFBlckhvc3QpOwogICAgIElOSVQoTWVhc3VyZU1lZGlh
VUlQYXJ0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUu
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IDYxYjhlODg2
ZTE0NjgzNmViZDQ3MzQ4MGRhOWNiOTQ5MzIwN2Y3NTAuLmE1YzM0MmNhM2E0NjcxNmU5M2VhZTQz
ZWE1YTBiNjdlNzYyY2FkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpA
QCAtNzYsNiArNzYsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9IaXRUZXN0UmVzdWx0Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0xlZ2FjeVdlYkFyY2hpdmUuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZS5o
PgorI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUV2ZW50RmFjdG9yeS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9QbHVnaW5EYXRhLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1ByaW50Q29udGV4dC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9SZW5kZXJMYXllci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
SFRNTFZpZXcubW0KaW5kZXggZDFlZWI2OWFiMmUyZWUxMGEyMDYzY2U4MzUwY2Y3OTQ0Mzg4YWQy
Ni4uYzRiYzJhMmUwMmQ1YmE4ODQyMjc0ZjhiNGM1M2YyMTk0M2FiMDU0NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0xMDQsNyArMTA0LDcgQEAKICNpbXBv
cnQgPFdlYkNvcmUvTGVnYWN5V2ViQXJjaGl2ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9NSU1FVHlw
ZVJlZ2lzdHJ5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KLSNpbXBvcnQgPFdlYkNvcmUv
UGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtRXZlbnRG
YWN0b3J5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JhbmdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jl
bmRlcldpZGdldC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+CkBAIC0zMTA4LDcg
KzMxMDgsNyBAQCBzdGF0aWMgdm9pZCBzZXRNZW51VGFyZ2V0cyhOU01lbnUqIG1lbnUpCiAgICAg
X3ByaXZhdGUtPmhhbmRsaW5nTW91c2VEb3duRXZlbnQgPSBZRVM7CiAgICAgcGFnZS0+Y29udGV4
dE1lbnVDb250cm9sbGVyKCktPmNsZWFyQ29udGV4dE1lbnUoKTsKICAgICBjb3JlRnJhbWUtPmV2
ZW50SGFuZGxlcigpLT5tb3VzZURvd24oZXZlbnQpOwotICAgIEJPT0wgaGFuZGxlZEV2ZW50ID0g
Y29yZUZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2VuZENvbnRleHRNZW51RXZlbnQoUGxhdGZvcm1N
b3VzZUV2ZW50KGV2ZW50LCBwYWdlLT5jaHJvbWUoKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkpKTsK
KyAgICBCT09MIGhhbmRsZWRFdmVudCA9IGNvcmVGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNlbmRD
b250ZXh0TWVudUV2ZW50KFBsYXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQbGF0Zm9ybU1vdXNl
RXZlbnQoZXZlbnQsIHBhZ2UtPmNocm9tZSgpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKSkpOwogICAg
IF9wcml2YXRlLT5oYW5kbGluZ01vdXNlRG93bkV2ZW50ID0gTk87CiAKICAgICBpZiAoIWhhbmRs
ZWRFdmVudCkKQEAgLTM0NzMsNyArMzQ3Myw3IEBAIHN0YXRpYyB2b2lkIHNldE1lbnVUYXJnZXRz
KE5TTWVudSogbWVudSkKICAgICAgICAgICAgIFtoaXRIVE1MVmlldyBfc2V0TW91c2VEb3duRXZl
bnQ6ZXZlbnRdOwogICAgICAgICAgICAgaWYgKFtoaXRIVE1MVmlldyBfaXNTZWxlY3Rpb25FdmVu
dDpldmVudF0pIHsKICAgICAgICAgICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGNvcmVGcmFtZS0+
cGFnZSgpKQotICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBjb3JlRnJhbWUtPmV2ZW50SGFu
ZGxlcigpLT5ldmVudE1heVN0YXJ0RHJhZyhQbGF0Zm9ybU1vdXNlRXZlbnQoZXZlbnQsIHBhZ2Ut
PmNocm9tZSgpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKSkpOworICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQgPSBjb3JlRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5ldmVudE1heVN0YXJ0RHJhZyhQbGF0
Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1Nb3VzZUV2ZW50KGV2ZW50LCBwYWdlLT5j
aHJvbWUoKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkpKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAo
W2hpdEhUTUxWaWV3IF9pc1Njcm9sbEJhckV2ZW50OmV2ZW50XSkKICAgICAgICAgICAgICAgICBy
ZXN1bHQgPSB0cnVlOwogICAgICAgICAgICAgW2hpdEhUTUxWaWV3IF9zZXRNb3VzZURvd25FdmVu
dDpuaWxdOwpAQCAtMzQ5OCw3ICszNDk4LDcgQEAgc3RhdGljIHZvaWQgc2V0TWVudVRhcmdldHMo
TlNNZW51KiBtZW51KQogICAgICAgICAgICAgaWYgKEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFto
aXRIVE1MVmlldyBfZnJhbWVdKSkgewogICAgICAgICAgICAgICAgIFtoaXRIVE1MVmlldyBfc2V0
TW91c2VEb3duRXZlbnQ6ZXZlbnRdOwogICAgICAgICAgICAgICAgIGlmIChQYWdlKiBwYWdlID0g
Y29yZUZyYW1lLT5wYWdlKCkpCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNvcmVGcmFt
ZS0+ZXZlbnRIYW5kbGVyKCktPmV2ZW50TWF5U3RhcnREcmFnKFBsYXRmb3JtTW91c2VFdmVudChl
dmVudCwgcGFnZS0+Y2hyb21lKCktPnBsYXRmb3JtUGFnZUNsaWVudCgpKSk7CisgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdCA9IGNvcmVGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmV2ZW50TWF5U3Rh
cnREcmFnKFBsYXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQbGF0Zm9ybU1vdXNlRXZlbnQoZXZl
bnQsIHBhZ2UtPmNocm9tZSgpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKSkpOwogICAgICAgICAgICAg
ICAgIFtoaXRIVE1MVmlldyBfc2V0TW91c2VEb3duRXZlbnQ6bmlsXTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQpAQCAtMzczOCwxMiArMzczOCwxMiBAQCBzdGF0aWMgUGFzc1JlZlB0cjxLZXli
b2FyZEV2ZW50PiBjdXJyZW50S2V5Ym9hcmRFdmVudChGcmFtZSogY29yZUZyYW1lKQogCiAgICAg
c3dpdGNoIChbZXZlbnQgdHlwZV0pIHsKICAgICBjYXNlIE5TS2V5RG93bjogewotICAgICAgICBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQgcGxhdGZvcm1FdmVudChldmVudCk7CisgICAgICAgIFBsYXRm
b3JtS2V5Ym9hcmRFdmVudCBwbGF0Zm9ybUV2ZW50ID0gUGxhdGZvcm1FdmVudEZhY3Rvcnk6OmNy
ZWF0ZVBsYXRmb3JtS2V5Ym9hcmRFdmVudChldmVudCk7CiAgICAgICAgIHBsYXRmb3JtRXZlbnQu
ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pOwogICAg
ICAgICByZXR1cm4gS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKHBsYXRmb3JtRXZlbnQsIGNvcmVGcmFt
ZS0+ZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSk7CiAgICAgfQogICAgIGNhc2UgTlNLZXlVcDoK
LSAgICAgICAgcmV0dXJuIEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShldmVudCwgY29yZUZyYW1lLT5k
b2N1bWVudCgpLT5kZWZhdWx0VmlldygpKTsKKyAgICAgICAgcmV0dXJuIEtleWJvYXJkRXZlbnQ6
OmNyZWF0ZShQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1LZXlib2FyZEV2ZW50
KGV2ZW50KSwgY29yZUZyYW1lLT5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpKTsKICAgICBkZWZh
dWx0OgogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC00MTQxLDcgKzQxNDEsNyBAQCBzdGF0
aWMgUGFzc1JlZlB0cjxLZXlib2FyZEV2ZW50PiBjdXJyZW50S2V5Ym9hcmRFdmVudChGcmFtZSog
Y29yZUZyYW1lKQogCiAgICAgLy8gRG9uJ3QgbWFrZSBhbiBldmVudCBmcm9tIHRoZSBudW0gbG9j
ayBhbmQgZnVuY3Rpb24ga2V5cy4KICAgICBpZiAoY29yZUZyYW1lICYmIGtleUNvZGUgIT0gMCAm
JiBrZXlDb2RlICE9IDEwICYmIGtleUNvZGUgIT0gNjMpIHsKLSAgICAgICAgY29yZUZyYW1lLT5l
dmVudEhhbmRsZXIoKS0+a2V5RXZlbnQoUGxhdGZvcm1LZXlib2FyZEV2ZW50KGV2ZW50KSk7Cisg
ICAgICAgIGNvcmVGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmtleUV2ZW50KFBsYXRmb3JtRXZlbnRG
YWN0b3J5OjpjcmVhdGVQbGF0Zm9ybUtleWJvYXJkRXZlbnQoZXZlbnQpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlBERlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlBERlZpZXcu
bW0KaW5kZXggOGFlMGYzY2ZkNTc4MTkxNWU5ZDE0YWQ1NjhmYzk5NzYyNDFhY2Y0My4uYzVmZTky
MTBlYzRiMTE0ZDU2Nzk3ZDMxYzYzMzlkNWFjZDU0MDM4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViUERGVmlldy5tbQpAQCAtNTgsNyArNTgsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9L
VVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KICNpbXBvcnQgPFdlYkNv
cmUvTW91c2VFdmVudC5oPgotI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1FdmVudEZhY3RvcnkuaD4KICNpbXBvcnQgPFdl
YkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYk5T
QXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KQEAg
LTk1OSw3ICs5NTksNyBAQCBzdGF0aWMgQk9PTCBpc0ZyYW1lSW5SYW5nZShXZWJGcmFtZSAqZnJh
bWUsIERPTVJhbmdlICpyYW5nZSkKICAgICAgICAgICAgIGJ1dHRvbiA9IFtuc0V2ZW50IGJ1dHRv
bk51bWJlcl07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOU0tleURvd246IHsK
LSAgICAgICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBwZShuc0V2ZW50KTsKKyAgICAgICAg
ICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBwZSA9IFBsYXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVh
dGVQbGF0Zm9ybUtleWJvYXJkRXZlbnQobnNFdmVudCk7CiAgICAgICAgICAgICBwZS5kaXNhbWJp
Z3VhdGVLZXlEb3duRXZlbnQoUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bik7CiAgICAgICAgICAg
ICBldmVudCA9IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50
LCB0cnVlLCB0cnVlLCAwLAogICAgICAgICAgICAgICAgIHBlLmtleUlkZW50aWZpZXIoKSwgcGUu
d2luZG93c1ZpcnR1YWxLZXlDb2RlKCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
aW5kZXggZDdjOWFiNGU1ZGJhMzYwMGQ5MDIzZTYxNmE2YjFkNDQwM2ZjMjk2Yi4uNmQwMTc3NzA3
MTMzMDZkNzg4NzU1YzZmMDdhMTMxZmQzNDE2ODE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQpAQCAtMTQ0LDcgKzE0NCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUGFnZUNhY2hlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2VHcm91
cC5oPgotI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybU1vdXNlRXZlbnQuaD4KKyNpbXBvcnQgPFdl
YkNvcmUvUGxhdGZvcm1FdmVudEZhY3RvcnkuaD4KICNpbXBvcnQgPFdlYkNvcmUvUHJvZ3Jlc3NU
cmFja2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlclZpZXcuaD4KICNpbXBvcnQgPFdlYkNv
cmUvUmVuZGVyV2lkZ2V0Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
RXZlbnRDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudENvbnZl
cnNpb24uY3BwCmluZGV4IGE1MzE1NzNhMzA2MTM0ZTYyNTMxZjU1YjBhMTFlNTUwZTIzNTVhOGEu
LmEyYjQxZjIzYjAwYzgzOGYyYmNkODA0Nzg0NWM0ZThkOGJmY2U4ODMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwCkBAIC00OSwxMCArNDksMTYgQEAg
cHVibGljOgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KIAot
ICAgICAgICBtX3NoaWZ0S2V5ID0gd2ViRXZlbnQuc2hpZnRLZXkoKTsKLSAgICAgICAgbV9jdHJs
S2V5ID0gd2ViRXZlbnQuY29udHJvbEtleSgpOwotICAgICAgICBtX2FsdEtleSA9IHdlYkV2ZW50
LmFsdEtleSgpOwotICAgICAgICBtX21ldGFLZXkgPSB3ZWJFdmVudC5tZXRhS2V5KCk7CisgICAg
ICAgIG1fbW9kaWZpZXJzID0gMDsKKyAgICAgICAgaWYgKHdlYkV2ZW50LnNoaWZ0S2V5KCkpCisg
ICAgICAgICAgICBtX21vZGlmaWVycyB8PSBTaGlmdEtleTsKKyAgICAgICAgaWYgKHdlYkV2ZW50
LmNvbnRyb2xLZXkoKSkKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IEN0cmxLZXk7CisgICAg
ICAgIGlmICh3ZWJFdmVudC5hbHRLZXkoKSkKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IEFs
dEtleTsKKyAgICAgICAgaWYgKHdlYkV2ZW50LmFsdEtleSgpKQorICAgICAgICAgICAgbV9tb2Rp
ZmllcnMgfD0gTWV0YUtleTsKKwogICAgICAgICBtX3RpbWVzdGFtcCA9IHdlYkV2ZW50LnRpbWVz
dGFtcCgpOwogCiAgICAgICAgIC8vIFBsYXRmb3JtTW91c2VFdmVudApAQCAtNzgsMTMgKzg0LDEz
IEBAIHB1YmxpYzoKICAgICAgICAgbV9jbGlja0NvdW50ID0gd2ViRXZlbnQuY2xpY2tDb3VudCgp
OwogCiAgICAgICAgIG1fbW9kaWZpZXJGbGFncyA9IDA7Ci0gICAgICAgIGlmIChtX3NoaWZ0S2V5
KQorICAgICAgICBpZiAod2ViRXZlbnQuc2hpZnRLZXkoKSkKICAgICAgICAgICAgIG1fbW9kaWZp
ZXJGbGFncyB8PSBXZWJFdmVudDo6U2hpZnRLZXk7Ci0gICAgICAgIGlmIChtX2N0cmxLZXkpCisg
ICAgICAgIGlmICh3ZWJFdmVudC5jb250cm9sS2V5KCkpCiAgICAgICAgICAgICBtX21vZGlmaWVy
RmxhZ3MgfD0gV2ViRXZlbnQ6OkNvbnRyb2xLZXk7Ci0gICAgICAgIGlmIChtX2FsdEtleSkKKyAg
ICAgICAgaWYgKHdlYkV2ZW50LmFsdEtleSgpKQogICAgICAgICAgICAgbV9tb2RpZmllckZsYWdz
IHw9IFdlYkV2ZW50OjpBbHRLZXk7Ci0gICAgICAgIGlmIChtX21ldGFLZXkpCisgICAgICAgIGlm
ICh3ZWJFdmVudC5hbHRLZXkoKSkKICAgICAgICAgICAgIG1fbW9kaWZpZXJGbGFncyB8PSBXZWJF
dmVudDo6TWV0YUtleTsKIAogI2lmIFBMQVRGT1JNKFdJTikKQEAgLTEwNCwxMCArMTEwLDE3IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgICAgIC8vIFBsYXRmb3JtRXZlbnQKICAgICAgICAgbV90eXBl
ID0gUGxhdGZvcm1FdmVudDo6V2hlZWw7Ci0gICAgICAgIG1fc2hpZnRLZXkgPSB3ZWJFdmVudC5z
aGlmdEtleSgpOwotICAgICAgICBtX2N0cmxLZXkgPSB3ZWJFdmVudC5jb250cm9sS2V5KCk7Ci0g
ICAgICAgIG1fYWx0S2V5ID0gd2ViRXZlbnQuYWx0S2V5KCk7Ci0gICAgICAgIG1fbWV0YUtleSA9
IHdlYkV2ZW50Lm1ldGFLZXkoKTsKKworICAgICAgICBtX21vZGlmaWVycyA9IDA7CisgICAgICAg
IGlmICh3ZWJFdmVudC5zaGlmdEtleSgpKQorICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gU2hp
ZnRLZXk7CisgICAgICAgIGlmICh3ZWJFdmVudC5jb250cm9sS2V5KCkpCisgICAgICAgICAgICBt
X21vZGlmaWVycyB8PSBDdHJsS2V5OworICAgICAgICBpZiAod2ViRXZlbnQuYWx0S2V5KCkpCisg
ICAgICAgICAgICBtX21vZGlmaWVycyB8PSBBbHRLZXk7CisgICAgICAgIGlmICh3ZWJFdmVudC5h
bHRLZXkoKSkKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1ldGFLZXk7CisKICAgICAgICAg
bV90aW1lc3RhbXAgPSB3ZWJFdmVudC50aW1lc3RhbXAoKTsKIAogICAgICAgICAvLyBQbGF0Zm9y
bVdoZWVsRXZlbnQKQEAgLTE1NCwxMCArMTY3LDE2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAKLSAgICAgICAgbV9zaGlmdEtleSA9IHdl
YkV2ZW50LnNoaWZ0S2V5KCk7Ci0gICAgICAgIG1fY3RybEtleSA9IHdlYkV2ZW50LmNvbnRyb2xL
ZXkoKTsKLSAgICAgICAgbV9hbHRLZXkgPSB3ZWJFdmVudC5hbHRLZXkoKTsKLSAgICAgICAgbV9t
ZXRhS2V5ID0gd2ViRXZlbnQubWV0YUtleSgpOworICAgICAgICBtX21vZGlmaWVycyA9IDA7Cisg
ICAgICAgIGlmICh3ZWJFdmVudC5zaGlmdEtleSgpKQorICAgICAgICAgICAgbV9tb2RpZmllcnMg
fD0gU2hpZnRLZXk7CisgICAgICAgIGlmICh3ZWJFdmVudC5jb250cm9sS2V5KCkpCisgICAgICAg
ICAgICBtX21vZGlmaWVycyB8PSBDdHJsS2V5OworICAgICAgICBpZiAod2ViRXZlbnQuYWx0S2V5
KCkpCisgICAgICAgICAgICBtX21vZGlmaWVycyB8PSBBbHRLZXk7CisgICAgICAgIGlmICh3ZWJF
dmVudC5hbHRLZXkoKSkKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1ldGFLZXk7CisKICAg
ICAgICAgbV90aW1lc3RhbXAgPSB3ZWJFdmVudC50aW1lc3RhbXAoKTsKIAogICAgICAgICAvLyBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQKQEAgLTE2NiwxNCArMTg1LDEwIEBAIHB1YmxpYzoKICAgICAg
ICAgbV9rZXlJZGVudGlmaWVyID0gd2ViRXZlbnQua2V5SWRlbnRpZmllcigpOwogICAgICAgICBt
X3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSA9IHdlYkV2ZW50LndpbmRvd3NWaXJ0dWFsS2V5Q29kZSgp
OwogICAgICAgICBtX25hdGl2ZVZpcnR1YWxLZXlDb2RlID0gd2ViRXZlbnQubmF0aXZlVmlydHVh
bEtleUNvZGUoKTsKKyAgICAgICAgbV9tYWNDaGFyQ29kZSA9IHdlYkV2ZW50Lm1hY0NoYXJDb2Rl
KCk7CiAgICAgICAgIG1fYXV0b1JlcGVhdCA9IHdlYkV2ZW50LmlzQXV0b1JlcGVhdCgpOwogICAg
ICAgICBtX2lzS2V5cGFkID0gd2ViRXZlbnQuaXNLZXlwYWQoKTsKLSAgICAgICAgCi0jaWYgUExB
VEZPUk0oV0lOKQotICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG1ha2UgbV9pc1N5c3RlbUtl
eSBhdmFpbGFibGUgKGFuZCBmYWxzZSkgb24gYWxsIHBsYXRmb3JtcwotICAgICAgICAvLyB0byBh
dm9pZCB0aGlzICNkZWZpbmUuIAogICAgICAgICBtX2lzU3lzdGVtS2V5ID0gd2ViRXZlbnQuaXNT
eXN0ZW1LZXkoKTsKLSNlbmRpZgogICAgIH0KIH07CiAKQEAgLTIwMiwxMCArMjE3LDE2IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAKLSAg
ICAgICAgbV9zaGlmdEtleSA9IHdlYkV2ZW50LnNoaWZ0S2V5KCk7Ci0gICAgICAgIG1fY3RybEtl
eSA9IHdlYkV2ZW50LmNvbnRyb2xLZXkoKTsKLSAgICAgICAgbV9hbHRLZXkgPSB3ZWJFdmVudC5h
bHRLZXkoKTsKLSAgICAgICAgbV9tZXRhS2V5ID0gd2ViRXZlbnQubWV0YUtleSgpOworICAgICAg
ICBtX21vZGlmaWVycyA9IDA7CisgICAgICAgIGlmICh3ZWJFdmVudC5zaGlmdEtleSgpKQorICAg
ICAgICAgICAgbV9tb2RpZmllcnMgfD0gU2hpZnRLZXk7CisgICAgICAgIGlmICh3ZWJFdmVudC5j
b250cm9sS2V5KCkpCisgICAgICAgICAgICBtX21vZGlmaWVycyB8PSBDdHJsS2V5OworICAgICAg
ICBpZiAod2ViRXZlbnQuYWx0S2V5KCkpCisgICAgICAgICAgICBtX21vZGlmaWVycyB8PSBBbHRL
ZXk7CisgICAgICAgIGlmICh3ZWJFdmVudC5hbHRLZXkoKSkKKyAgICAgICAgICAgIG1fbW9kaWZp
ZXJzIHw9IE1ldGFLZXk7CisKICAgICAgICAgbV90aW1lc3RhbXAgPSB3ZWJFdmVudC50aW1lc3Rh
bXAoKTsKIAogICAgICAgICAvLyBQbGF0Zm9ybUdlc3R1cmVFdmVudApAQCAtMjc0LDEwICsyOTUs
MTYgQEAgcHVibGljOgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
IH0KIAotICAgICAgICBtX2N0cmxLZXkgPSB3ZWJFdmVudC5jb250cm9sS2V5KCk7Ci0gICAgICAg
IG1fYWx0S2V5ID0gd2ViRXZlbnQuYWx0S2V5KCk7Ci0gICAgICAgIG1fc2hpZnRLZXkgPSB3ZWJF
dmVudC5zaGlmdEtleSgpOwotICAgICAgICBtX21ldGFLZXkgPSB3ZWJFdmVudC5tZXRhS2V5KCk7
CisgICAgICAgIG1fbW9kaWZpZXJzID0gMDsKKyAgICAgICAgaWYgKHdlYkV2ZW50LnNoaWZ0S2V5
KCkpCisgICAgICAgICAgICBtX21vZGlmaWVycyB8PSBTaGlmdEtleTsKKyAgICAgICAgaWYgKHdl
YkV2ZW50LmNvbnRyb2xLZXkoKSkKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IEN0cmxLZXk7
CisgICAgICAgIGlmICh3ZWJFdmVudC5hbHRLZXkoKSkKKyAgICAgICAgICAgIG1fbW9kaWZpZXJz
IHw9IEFsdEtleTsKKyAgICAgICAgaWYgKHdlYkV2ZW50LmFsdEtleSgpKQorICAgICAgICAgICAg
bV9tb2RpZmllcnMgfD0gTWV0YUtleTsKKwogICAgICAgICBtX3RpbWVzdGFtcCA9IHdlYkV2ZW50
LnRpbWVzdGFtcCgpOwogCiAgICAgICAgIC8vIFBsYXRmb3JtVG91Y2hFdmVudApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IGRjYTAxOGE0MmYxOWJhNGU0
ZTlkMzBkMzAwMDNhYTMwMTcxYTI5OWMuLjQwM2VhYmIzZWM2OTViMmRhZmYzMjRiZTZjZjhlODZh
ZDMwMTkwYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dL
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0K
QEAgLTY3LDcgKzY3LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvSW50UmVjdC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmlu
Z3MuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1Nb3VzZUV2ZW50Lmg+CisjaW1wb3J0IDxX
ZWJDb3JlL1BsYXRmb3JtRXZlbnRGYWN0b3J5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3Jt
U2NyZWVuLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlZ2lvbi5oPgogI2ltcG9ydCA8V2ViS2l0U3lz
dGVtSW50ZXJmYWNlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KaW5kZXgg
ODU4MWRmZmMyZjI5OWEzN2ZkYmRiMGZhZjkyODAwMmY3NGRhYWRlZC4uMjljNGFjM2VlMGMyMDM1
YTRhYWIzOTAzOThmNWQzNWIzMDhiM2Q1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVy
ZmFjZS5tbQpAQCAtNjUsNiArNjUsNyBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNl
KHZvaWQpCiAgICAgICAgIElOSVQoR2V0UHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUpOwog
ICAgICAgICBJTklUKEdldFVzZXJUb0Jhc2VDVE0pOwogICAgICAgICBJTklUKEdldFdoZWVsRXZl
bnREZWx0YXMpOworICAgICAgICBJTklUKEdldE5TRXZlbnRLZXlDaGFyKTsKICAgICAgICAgSU5J
VChIaXRUZXN0TWVkaWFVSVBhcnQpOwogICAgICAgICBJTklUKEluaXRpYWxpemVNYXhpbXVtSFRU
UENvbm5lY3Rpb25Db3VudFBlckhvc3QpOwogICAgICAgICBJTklUKE1lYXN1cmVNZWRpYVVJUGFy
dCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120369</attachid>
            <date>2011-12-22 13:16:23 -0800</date>
            <delta_ts>2011-12-22 13:47:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75063-20111222131626.patch</filename>
            <type>text/plain</type>
            <size>89548</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzNTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGMxN2ZlNGIyMWVkZTJm
ZWFhYzUzNWRiZjlkMjMyMzA0YzY3YmQ5MS4uNDI5ODZhNDcxMThiODAzY2M1MGJhOTFiM2FjMWYx
Y2ZiNDg3NjY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDExLTEyLTIxICBTYW0g
V2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RhcnQgZXh0cmFjdGluZyBwbGF0
Zm9ybSBzcGVjaWZpYyBiaXRzIG91dCBvZiBQbGF0Zm9ybUV2ZW50cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUwNjMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKwor
ICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmtleUV2ZW50KToKKyAgICAgICAgKiBwYWdlL21hYy9F
dmVudEhhbmRsZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OndoZWVs
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjprZXlFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmN1cnJlbnRQbGF0Zm9ybU1vdXNlRXZlbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtRXZlbnQ6OnNoaWZ0S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6
OmN0cmxLZXkpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6YWx0S2V5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6Om1ldGFLZXkpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1FdmVudDo6bW9kaWZpZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
RXZlbnQ6OlBsYXRmb3JtRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtR2VzdHVy
ZUV2ZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmtleUlkZW50
aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50OjptYWNDaGFy
Q29kZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmlzU3lzdGVt
S2V5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
S2V5RXZlbnRNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0
b3J5Lmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9y
eS5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpnbG9iYWxQb2ludCk6CisgICAgICAgIChX
ZWJDb3JlOjpnbG9iYWxQb2ludEZvckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnBvaW50Rm9y
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6bW91c2VCdXR0b25Gb3JFdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjptb3VzZUV2ZW50VHlwZUZvckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNs
aWNrQ291bnRGb3JFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjptb21lbnR1bVBoYXNlRm9yRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6cGhhc2VGb3JFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpnZXN0dXJlRXZlbnRUeXBlRm9yRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6dGV4dEZyb21F
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjp1bm1vZGlmaWVkVGV4dEZyb21FdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjprZXlJZGVudGlmaWVyRm9yS2V5RXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6aXNLZXlwYWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjp3aW5kb3dzS2V5Q29kZUZvcktl
eUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmlzS2V5VXBFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjptb2RpZmllcnNGb3JFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1vdXNl
RXZlbnRCdWlsZGVyOjpQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQbGF0Zm9ybU1vdXNlRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50QnVpbGRlcjo6UGxhdGZvcm1XaGVlbEV2
ZW50QnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3Jl
YXRlUGxhdGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9h
cmRFdmVudEJ1aWxkZXI6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudEJ1aWxkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1FdmVudEZhY3Rvcnk6OmNyZWF0ZVBsYXRmb3JtS2V5Ym9hcmRFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXI6OlBsYXRm
b3JtR2VzdHVyZUV2ZW50QnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50
RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1HZXN0dXJlRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9QbGF0Zm9ybU1vdXNlRXZlbnRNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dl
YkNvcmVTeXN0ZW1JbnRlcmZhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5
c3RlbUludGVyZmFjZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2hlZWxFdmVudE1hYy5t
bToKKwogMjAxMS0xMi0yMiAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgRml4IGRlYnVnIGJ1aWxkIHdpdGggYXNzZXJ0aW9ucyBkaXNhYmxlZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCmluZGV4IDZjN2JmMzBiNmY3ZTE4ODBmMGVmYTFkMjNhZWUzZWM4ZGNmMGNhMzYuLjA2
MmQ1NzM0ZjcwNDhiZDZiNjBlMTA0MTFhZGIxMWM4Mzk1OTdkNzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMyBAQAorMjAxMS0xMi0yMSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3Jn
PgorCisgICAgICAgIFN0YXJ0IGV4dHJhY3RpbmcgcGxhdGZvcm0gc3BlY2lmaWMgYml0cyBvdXQg
b2YgUGxhdGZvcm1FdmVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc1MDYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAg
IChJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFt
ZS5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJI
VE1MVmlldyBtZW51Rm9yRXZlbnQ6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IGFjY2VwdHNG
aXJzdE1vdXNlOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBzaG91bGREZWxheVdpbmRvd09y
ZGVyaW5nRm9yRXZlbnQ6XSk6CisgICAgICAgIChjdXJyZW50S2V5Ym9hcmRFdmVudCk6CisgICAg
ICAgICgtW1dlYkhUTUxWaWV3IGZsYWdzQ2hhbmdlZDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YlBERlZpZXcubW06CisgICAgICAgICgtW1dlYlBERlZpZXcgUERGVmlld1dpbGxDbGlja09uTGlu
azp3aXRoVVJMOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKwogMjAxMS0xMi0y
MSAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIElu
c3BlY3Rvcjogc3VwcHJlc3MgaW5jcmVtZW50YWwgcmVuZGVyaW5nIGFuZCB1c2UgYXBwbGljYXRp
b24gY2hyb21lIG1vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAwNTMzZmUwNjQ3YTI2ZGM4YWU2MDFlMWRmODc0
ZGYwMTY3NDFkMWEyLi5kMGQ4MTljZDA2Yjc3NDY0ZDI5YTliMjMyYjgzNmM3ZWFlOGI3NmEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMTItMjEgIFNhbSBXZWluaWcgIDxzYW1A
d2Via2l0Lm9yZz4KKworICAgICAgICBTdGFydCBleHRyYWN0aW5nIHBsYXRmb3JtIHNwZWNpZmlj
IGJpdHMgb3V0IG9mIFBsYXRmb3JtRXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03NTA2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYktpdDJQbGF0Zm9ybU1vdXNlRXZlbnQ6OldlYktpdDJQbGF0Zm9ybU1v
dXNlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXQyUGxhdGZvcm1XaGVlbEV2ZW50OjpX
ZWJLaXQyUGxhdGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0MlBsYXRm
b3JtS2V5Ym9hcmRFdmVudDo6V2ViS2l0MlBsYXRmb3JtS2V5Ym9hcmRFdmVudCk6CisgICAgICAg
IChXZWJLaXQ6OldlYktpdDJQbGF0Zm9ybUdlc3R1cmVFdmVudDo6V2ViS2l0MlBsYXRmb3JtR2Vz
dHVyZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0MlBsYXRmb3JtVG91Y2hFdmVudDo6
V2ViS2l0MlBsYXRmb3JtVG91Y2hFdmVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMv
V0tWaWV3Lm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5
c3RlbUludGVyZmFjZS5tbToKKyAgICAgICAgKEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKToK
KwogMjAxMS0xMi0yMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlbW92ZSB0aGUgbGFzdCBvZiB0aGUgV2ViS2l0MiBkaXNwbGF5IHRocm90dGxpbmcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KaW5kZXggZjVkYzAwMGUxZTVkYmQ3Y2Q1ZTg4OGJkZGNlZTQwNWQ3
OGVmNTkzZi4uNWVhNzFjOGNjZDBiYWNiMWUwNWU0NDc3MWU1ZmNjMDA2NmExNGY0YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4KQEAgLTE1Nyw2ICsxNTcsNyBAQCBfX1pON1dlYkNvcmUxMHRvRG9jdW1l
bnRFTjNKU0M3SlNWYWx1ZUUKIF9fWk43V2ViQ29yZTExQml0bWFwSW1hZ2VDMUVQN0NHSW1hZ2VQ
TlNfMTNJbWFnZU9ic2VydmVyRQogX19aTjdXZWJDb3JlMTFDYWNoZWRGcmFtZTIzY2FjaGVkRnJh
bWVQbGF0Zm9ybURhdGFFdgogX19aTjdXZWJDb3JlMTFDYWNoZWRGcmFtZTI2c2V0Q2FjaGVkRnJh
bWVQbGF0Zm9ybURhdGFFTjNXVEYxMFBhc3NPd25QdHJJTlNfMjNDYWNoZWRGcmFtZVBsYXRmb3Jt
RGF0YUVFRQorX19aTjdXZWJDb3JlMTFDYWNoZWRJbWFnZTVpbWFnZUV2CiBfX1pON1dlYkNvcmUx
MUZpbGVDaG9vc2VyMTBjaG9vc2VGaWxlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTFG
aWxlQ2hvb3NlcjExY2hvb3NlRmlsZXNFUktOM1dURjZWZWN0b3JJTlMxXzZTdHJpbmdFTG0wRUVF
CiBfX1pON1dlYkNvcmUxMUZpbGVDaG9vc2VyRDFFdgpAQCAtMjkyLDggKzI5Myw4IEBAIF9fWk43
V2ViQ29yZTEyU2hhcmVkQnVmZmVyRDFFdgogX19aTjdXZWJDb3JlMTJTcGVsbENoZWNrZXI4ZGlk
Q2hlY2tFaVJLTjNXVEY2VmVjdG9ySU5TXzE4VGV4dENoZWNraW5nUmVzdWx0RUxtMEVFRQogX19a
TjdXZWJDb3JlMTJUZXh0RW5jb2RpbmdDMUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTEy
VGV4dEl0ZXJhdG9yMTFyYW5nZUxlbmd0aEVQS05TXzVSYW5nZUViCi1fX1pON1dlYkNvcmUxMlRl
eHRJdGVyYXRvcjI5Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2VFUE5TXzdFbGVtZW50RVBL
TlNfNVJhbmdlRVJtUzZfCiBfX1pON1dlYkNvcmUxMlRleHRJdGVyYXRvcjI2cmFuZ2VGcm9tTG9j
YXRpb25BbmRMZW5ndGhFUE5TXzdFbGVtZW50RWlpYgorX19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0
b3IyOWdldExvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlRVBOU183RWxlbWVudEVQS05TXzVSYW5n
ZUVSbVM2XwogX19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3I3YWR2YW5jZUV2CiBfX1pON1dlYkNv
cmUxMlRleHRJdGVyYXRvcjhzdWJyYW5nZUVQTlNfNVJhbmdlRWlpCiBfX1pON1dlYkNvcmUxMlRl
eHRJdGVyYXRvckMxRVBLTlNfNVJhbmdlRU5TXzIwVGV4dEl0ZXJhdG9yQmVoYXZpb3JFCkBAIC0z
NjUsOSArMzY2LDggQEAgX19aTjdXZWJDb3JlMTRTY2hlbWVSZWdpc3RyeTI1cmVnaXN0ZXJVUkxT
Y2hlbWVBc1NlY3VyZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE0U2NoZW1lUmVnaXN0
cnkzMnJlZ2lzdGVyVVJMU2NoZW1lQXNFbXB0eURvY3VtZW50RVJLTjNXVEY2U3RyaW5nRQogX19a
TjdXZWJDb3JlMTRTY2hlbWVSZWdpc3RyeTM0c2hvdWxkTG9hZFVSTFNjaGVtZUFzRW1wdHlEb2N1
bWVudEVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE0U2NoZW1lUmVnaXN0cnk0MHNldERv
bWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWVFYlJLTjNXVEY2U3RyaW5nRQotX19a
TjdXZWJDb3JlMTRTY2hlbWVSZWdpc3RyeTYycmVnaXN0ZXJVUkxTY2hlbWVBc0FsbG93aW5nTG9j
YWxTdG9yYWdlQWNjZXNzSW5Qcml2YXRlQnJvd3NpbmdFUktOM1dURjZTdHJpbmdFCiBfX1pON1dl
YkNvcmUxNFNjaGVtZVJlZ2lzdHJ5NThyZWdpc3RlclVSTFNjaGVtZUFzQWxsb3dpbmdEYXRhYmFz
ZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nRVJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJDb3JlMTRT
Y3JvbGxhYmxlQXJlYTE1Y29udGVudHNSZXNpemVkRXYKK19fWk43V2ViQ29yZTE0U2NoZW1lUmVn
aXN0cnk2MnJlZ2lzdGVyVVJMU2NoZW1lQXNBbGxvd2luZ0xvY2FsU3RvcmFnZUFjY2Vzc0luUHJp
dmF0ZUJyb3dzaW5nRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTRTY3JvbGxhYmxlQXJl
YTE2aGFuZGxlV2hlZWxFdmVudEVSS05TXzE4UGxhdGZvcm1XaGVlbEV2ZW50RQogX19aTjdXZWJD
b3JlMTRTY3JvbGxhYmxlQXJlYTE3d2lsbEVuZExpdmVSZXNpemVFdgogX19aTjdXZWJDb3JlMTRT
Y3JvbGxhYmxlQXJlYTE5d2lsbFN0YXJ0TGl2ZVJlc2l6ZUV2CkBAIC0zOTMsMTUgKzM5MywxNSBA
QCBfX1pON1dlYkNvcmUxNFNlY3VyaXR5UG9saWN5MjJnZW5lcmF0ZVJlZmVycmVySGVhZGVyRU5T
MF8xNFJlZmVycmVyUG9saWN5RVJLTlNfNAogX19aTjdXZWJDb3JlMTRTZWN1cml0eVBvbGljeTI3
cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzRXYKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlQb2xp
Y3kyOWFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5RVJLTlNfMTRTZWN1cml0eU9yaWdpbkVS
S04zV1RGNlN0cmluZ0VTN19iCiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5UG9saWN5MzJyZW1vdmVP
cmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeUVSS05TXzE0U2VjdXJpdHlPcmlnaW5FUktOM1dURjZT
dHJpbmdFUzdfYgotX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjdvcmlnaW5zRVJOM1dURjZW
ZWN0b3JJTlMxXzZSZWZQdHJJTlNfMTRTZWN1cml0eU9yaWdpbkVFRUxtMEVFRQotX19aTjdXZWJD
b3JlMTRTdG9yYWdlVHJhY2tlcjd0cmFja2VyRXYKLV9fWk43V2ViQ29yZTE0U3RvcmFnZVRyYWNr
ZXI5c2V0Q2xpZW50RVBOU18yMFN0b3JhZ2VUcmFja2VyQ2xpZW50RQogX19aTjdXZWJDb3JlMTRT
dG9yYWdlVHJhY2tlcjEyZGVsZXRlT3JpZ2luRVBOU18xNFNlY3VyaXR5T3JpZ2luRQogX19aTjdX
ZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjE2ZGVsZXRlQWxsT3JpZ2luc0V2CiBfX1pON1dlYkNvcmUx
NFN0b3JhZ2VUcmFja2VyMTZzeW5jTG9jYWxTdG9yYWdlRXYKIF9fWk43V2ViQ29yZTE0U3RvcmFn
ZVRyYWNrZXIxN2luaXRpYWxpemVUcmFja2VyRVJLTjNXVEY2U3RyaW5nRVBOU18yMFN0b3JhZ2VU
cmFja2VyQ2xpZW50RQogX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjE4ZGlza1VzYWdlRm9y
T3JpZ2luRVBOU18xNFNlY3VyaXR5T3JpZ2luRQogX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tl
cjMyc3luY0ZpbGVTeXN0ZW1BbmRUcmFja2VyRGF0YWJhc2VFdgorX19aTjdXZWJDb3JlMTRTdG9y
YWdlVHJhY2tlcjdvcmlnaW5zRVJOM1dURjZWZWN0b3JJTlMxXzZSZWZQdHJJTlNfMTRTZWN1cml0
eU9yaWdpbkVFRUxtMEVFRQorX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjd0cmFja2VyRXYK
K19fWk43V2ViQ29yZTE0U3RvcmFnZVRyYWNrZXI5c2V0Q2xpZW50RVBOU18yMFN0b3JhZ2VUcmFj
a2VyQ2xpZW50RQogX19aTjdXZWJDb3JlMTRlbmRPZlBhcmFncmFwaEVSS05TXzE1VmlzaWJsZVBv
c2l0aW9uRU5TXzI3RWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlRQogX19aTjdXZWJDb3JlMTVB
ZmZpbmVUcmFuc2Zvcm01ZmxpcFlFdgogX19aTjdXZWJDb3JlMTVBZmZpbmVUcmFuc2Zvcm01c2Nh
bGVFZApAQCAtNDMzLDggKzQzMyw4IEBAIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MTFj
bGVhclNoYWRvd0V2CiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDEyc2V0RmlsbENvbG9y
RVJLTlNfNUNvbG9yRU5TXzEwQ29sb3JTcGFjZUUKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250
ZXh0MTVzZXRGaWxsR3JhZGllbnRFTjNXVEYxMFBhc3NSZWZQdHJJTlNfOEdyYWRpZW50RUVFCiBf
X1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDE4c2V0U2hvdWxkQW50aWFsaWFzRWIKLV9fWk43
V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MjBzZXRTaG91bGRTbW9vdGhGb250c0ViCiBfX1pON1dl
YkNvcmUxNUdyYXBoaWNzQ29udGV4dDIwZW5kVHJhbnNwYXJlbmN5TGF5ZXJFdgorX19aTjdXZWJD
b3JlMTVHcmFwaGljc0NvbnRleHQyMHNldFNob3VsZFNtb290aEZvbnRzRWIKIF9fWk43V2ViQ29y
ZTE1R3JhcGhpY3NDb250ZXh0MjFzZXRDb21wb3NpdGVPcGVyYXRpb25FTlNfMTdDb21wb3NpdGVP
cGVyYXRvckUKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MjJhcHBseURldmljZVNjYWxl
RmFjdG9yRWYKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MjJiZWdpblRyYW5zcGFyZW5j
eUxheWVyRWYKQEAgLTUzOSw3ICs1MzksNiBAQCBfX1pON1dlYkNvcmUxN1JlZ3VsYXJFeHByZXNz
aW9uQzFFUktOM1dURjZTdHJpbmdFTlMxXzE5VGV4dENhc2VTZW5zaXRpdml0eUUKIF9fWk43V2Vi
Q29yZTE3UmVndWxhckV4cHJlc3Npb25EMUV2CiBfX1pON1dlYkNvcmUxN2NhY2hlRE9NU3RydWN0
dXJlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOM0pTQzlTdHJ1Y3R1cmVFUEtOUzJfOUNsYXNz
SW5mb0UKIF9fWk43V2ViQ29yZTE3b3BlblRlbXBvcmFyeUZpbGVFUktOM1dURjZTdHJpbmdFUmkK
LV9fWk43V2ViQ29yZTE4UGxhdGZvcm1Nb3VzZUV2ZW50QzFFUDdOU0V2ZW50UDZOU1ZpZXcKIF9f
Wk43V2ViQ29yZTE4UGxhdGZvcm1TdHJhdGVnaWVzMjZjcmVhdGVMb2NhbGl6YXRpb25TdHJhdGVn
eUV2CiBfX1pON1dlYkNvcmUxOFNlYXJjaFBvcHVwTWVudU1hY0MxRVBOU18xNVBvcHVwTWVudUNs
aWVudEUKIF9fWk43V2ViQ29yZTE4aXNTdGFydE9mUGFyYWdyYXBoRVJLTlNfMTVWaXNpYmxlUG9z
aXRpb25FTlNfMjdFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGVFCkBAIC01ODgsNiArNTg3LDgg
QEAgX19aTjdXZWJDb3JlMjBEaXNwbGF5U2xlZXBEaXNhYmxlckMxRVBLYwogX19aTjdXZWJDb3Jl
MjBEaXNwbGF5U2xlZXBEaXNhYmxlckQxRXYKIF9fWk43V2ViQ29yZTIwTm9kZVJlbmRlcmluZ0Nv
bnRleHRDMUVQTlNfNE5vZGVFCiBfX1pON1dlYkNvcmUyME5vZGVSZW5kZXJpbmdDb250ZXh0RDFF
dgorX19aTjdXZWJDb3JlMjBQbGF0Zm9ybUV2ZW50RmFjdG9yeTI0Y3JlYXRlUGxhdGZvcm1Nb3Vz
ZUV2ZW50RVA3TlNFdmVudFA2TlNWaWV3CitfX1pON1dlYkNvcmUyMFBsYXRmb3JtRXZlbnRGYWN0
b3J5MjdjcmVhdGVQbGF0Zm9ybUtleWJvYXJkRXZlbnRFUDdOU0V2ZW50CiBfX1pON1dlYkNvcmUy
MFJlbmRlckVtYmVkZGVkT2JqZWN0MzBzZXRTaG93c0NyYXNoZWRQbHVnaW5JbmRpY2F0b3JFdgog
X19aTjdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTExc2V0TWltZVR5cGVFUktOM1dURjZT
dHJpbmdFCiBfX1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTdzZXRIVFRQU3RhdHVz
Q29kZUVpCkBAIC02MDUsNyArNjA2LDYgQEAgX19aTjdXZWJDb3JlMjBtYWtlUkdCQTMyRnJvbUZs
b2F0c0VmZmZmCiBfX1pON1dlYkNvcmUyMHByb3RvY29sSXNKYXZhU2NyaXB0RVJLTjNXVEY2U3Ry
aW5nRQogX19aTjdXZWJDb3JlMjFCYWNrRm9yd2FyZENvbnRyb2xsZXIxMWl0ZW1BdEluZGV4RWkK
IF9fWk43V2ViQ29yZTIxTWVtb3J5UHJlc3N1cmVIYW5kbGVyN2luc3RhbGxFdgotX19aTjdXZWJD
b3JlMjFQbGF0Zm9ybUtleWJvYXJkRXZlbnRDMUVQN05TRXZlbnQKIF9fWk43V2ViQ29yZTIxUGxh
dGZvcm1LZXlib2FyZEV2ZW50MjRkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnRFTlNfMTNQbGF0Zm9y
bUV2ZW50NFR5cGVFYgogX19aTjdXZWJDb3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVsZXIyMHNlcnZl
UGVuZGluZ1JlcXVlc3RzRU5TXzIwUmVzb3VyY2VMb2FkUHJpb3JpdHlFCiBfX1pON1dlYkNvcmUy
MVJlc291cmNlTG9hZFNjaGVkdWxlcjI0c2NoZWR1bGVQbHVnaW5TdHJlYW1Mb2FkRVBOU181RnJh
bWVFUE5TXzMyTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnRFUktOU18xNVJlc291cmNl
UmVxdWVzdEUKQEAgLTY2MSw4ICs2NjEsNiBAQCBfX1pON1dlYkNvcmUyNVBsdWdpbk1haW5UaHJl
YWRTY2hlZHVsZXIxNnVucmVnaXN0ZXJQbHVnaW5FUDRfTlBQCiBfX1pON1dlYkNvcmUyNVBsdWdp
bk1haW5UaHJlYWRTY2hlZHVsZXI5c2NoZWR1bGVyRXYKIF9fWk43V2ViQ29yZTI1YWRkTGFuZ3Vh
Z2VDaGFuZ2VPYnNlcnZlckVQdlBGdlMwX0UKIF9fWk43V2ViQ29yZTI1Y29tcHV0ZVZpZXdwb3J0
QXR0cmlidXRlc0VOU18xN1ZpZXdwb3J0QXJndW1lbnRzRWlpaWlOU183SW50U2l6ZUUKLV9fWk43
V2ViQ29yZTUwcmVzdHJpY3RTY2FsZUZhY3RvclRvSW5pdGlhbFNjYWxlSWZOb3RVc2VyU2NhbGFi
bGVFUk5TXzE4Vmlld3BvcnRBdHRyaWJ1dGVzRQotX19aTjdXZWJDb3JlNDByZXN0cmljdE1pbmlt
dW1TY2FsZUZhY3RvclRvVmlld3BvcnRTaXplRVJOU18xOFZpZXdwb3J0QXR0cmlidXRlc0VOU183
SW50U2l6ZUUKIF9fWk43V2ViQ29yZTI1Y29udGV4dE1lbnVJdGVtVGFnT3V0bGluZUV2CiBfX1pO
N1dlYkNvcmUyNkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uQzFFdgogX19aTjdXZWJDb3JlMjZV
c2VyVHlwaW5nR2VzdHVyZUluZGljYXRvcjI3cHJvY2Vzc2luZ1VzZXJUeXBpbmdHZXN0dXJlRXYK
QEAgLTcyMCw2ICs3MTgsNyBAQCBfX1pON1dlYkNvcmUzN2NvbnRleHRNZW51SXRlbVRhZ1RyYW5z
Zm9ybWF0aW9uc01lbnVFdgogX19aTjdXZWJDb3JlMzhjb250ZXh0TWVudUl0ZW1UYWdXcml0aW5n
RGlyZWN0aW9uTWVudUV2CiBfX1pON1dlYkNvcmUzbWFjRVJLTlNfMTBDcmVkZW50aWFsRQogX19a
TjdXZWJDb3JlM21hY0VSS05TXzIzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VFCitfX1pON1dlYkNv
cmU0MHJlc3RyaWN0TWluaW11bVNjYWxlRmFjdG9yVG9WaWV3cG9ydFNpemVFUk5TXzE4Vmlld3Bv
cnRBdHRyaWJ1dGVzRU5TXzdJbnRTaXplRQogX19aTjdXZWJDb3JlNDJjb250ZXh0TWVudUl0ZW1U
YWdDaGVja0dyYW1tYXJXaXRoU3BlbGxpbmdFdgogX19aTjdXZWJDb3JlNDJjb250ZXh0TWVudUl0
ZW1UYWdDaGVja1NwZWxsaW5nV2hpbGVUeXBpbmdFdgogX19aTjdXZWJDb3JlNDZjb250ZXh0TWVu
dUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5RXYKQEAgLTc4Niw2ICs3ODUsNyBA
QCBfX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2Jq
ZWN0RVBOU18xMENsaWVudFJlY3RFCiBfX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRl
RVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOU18xOUNTU1N0eWxlRGVjbGFyYXRpb25FCiBfX1pO
N1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBO
U181UmFuZ2VFCiBfX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9N
R2xvYmFsT2JqZWN0RVBOU184Tm9kZUxpc3RFCitfX1pON1dlYkNvcmU1MHJlc3RyaWN0U2NhbGVG
YWN0b3JUb0luaXRpYWxTY2FsZUlmTm90VXNlclNjYWxhYmxlRVJOU18xOFZpZXdwb3J0QXR0cmli
dXRlc0UKIF9fWk43V2ViQ29yZTVDb2xvcjExdHJhbnNwYXJlbnRFCiBfX1pON1dlYkNvcmU1Q29s
b3I1d2hpdGVFCiBfX1pON1dlYkNvcmU1RnJhbWUxMGNyZWF0ZVZpZXdFUktOU183SW50U2l6ZUVS
S05TXzVDb2xvckViUzNfYk5TXzEzU2Nyb2xsYmFyTW9kZUViUzdfYgpAQCAtODM3LDkgKzgzNyw5
IEBAIF9fWk43V2ViQ29yZTZFZGl0b3IyMWFwcGx5U3R5bGVUb1NlbGVjdGlvbkVQTlNfMTlDU1NT
dHlsZURlY2xhcmF0aW9uRU5TXzEwRWRpdEFjCiBfX1pON1dlYkNvcmU2RWRpdG9yMjFpc1NlbGVj
dGlvbk1pc3NwZWxsZWRFdgogX19aTjdXZWJDb3JlNkVkaXRvcjIzc2V0QmFzZVdyaXRpbmdEaXJl
Y3Rpb25FMTZXcml0aW5nRGlyZWN0aW9uCiBfX1pON1dlYkNvcmU2RWRpdG9yMjRhZHZhbmNlVG9O
ZXh0TWlzc3BlbGxpbmdFYgotX19aTjdXZWJDb3JlNkVkaXRvcjI0cmVwbGFjZVNlbGVjdGlvbldp
dGhUZXh0RVJLTjNXVEY2U3RyaW5nRWJiCiBfX1pON1dlYkNvcmU2RWRpdG9yMjRjb21wdXRlQW5k
U2V0VHlwaW5nU3R5bGVFUE5TXzE5Q1NTU3R5bGVEZWNsYXJhdGlvbkVOU18xMEVkaXRBY3Rpb25F
CiBfX1pON1dlYkNvcmU2RWRpdG9yMjRpc1NlbGVjdGlvblVuZ3JhbW1hdGljYWxFdgorX19aTjdX
ZWJDb3JlNkVkaXRvcjI0cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0RVJLTjNXVEY2U3RyaW5nRWJi
CiBfX1pON1dlYkNvcmU2RWRpdG9yMjZkZWNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbEV2CiBfX1pO
N1dlYkNvcmU2RWRpdG9yMjZpbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbEV2CiBfX1pON1dlYkNv
cmU2RWRpdG9yMjZ3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZEVSS04zV1RGNlN0cmluZ0VSS05T
MV82VmVjdG9ySVMyX0xtMEVFRQpAQCAtOTI3LDYgKzkyNyw3IEBAIF9fWk43V2ViQ29yZThJbnRQ
b2ludEMxRVJLOF9OU1BvaW50CiBfX1pON1dlYkNvcmU4UG9zaXRpb25DMUVOM1dURjEwUGFzc1Jl
ZlB0cklOU180Tm9kZUVFRWlOUzBfMTBBbmNob3JUeXBlRQogX19aTjdXZWJDb3JlOFNldHRpbmdz
MTRzZXRKYXZhRW5hYmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxNXNldFdlYkdMRW5hYmxl
ZEViCitfX1pON1dlYkNvcmU4U2V0dGluZ3MxNnNldFNjcmlwdEVuYWJsZWRFYgogX19aTjdXZWJD
b3JlOFNldHRpbmdzMTZzZXRVc2VzUGFnZUNhY2hlRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczE3
c2V0UGx1Z2luc0VuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMThzZXRET01QYXN0ZUFs
bG93ZWRFYgpAQCAtOTM5LDcgKzk0MCw2IEBAIF9fWk43V2ViQ29yZThTZXR0aW5nczE5bWluRE9N
VGltZXJJbnRlcnZhbEV2CiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxOXNldFNob3dEZWJ1Z0JvcmRl
cnNFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjBzZXRDdXJzaXZlRm9udEZhbWlseUVSS04zV1RG
MTJBdG9taWNTdHJpbmdFMTFVU2NyaXB0Q29kZQogX19aTjdXZWJDb3JlOFNldHRpbmdzMjBzZXRG
YW50YXN5Rm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdFMTFVU2NyaXB0Q29kZQotX19a
TjdXZWJDb3JlOFNldHRpbmdzMTZzZXRTY3JpcHRFbmFibGVkRWIKIF9fWk43V2ViQ29yZThTZXR0
aW5nczIwc2V0WFNTQXVkaXRvckVuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjFzZXRT
aG93UmVwYWludENvdW50ZXJFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjFzZXRTdGFuZGFyZEZv
bnRGYW1pbHlFUktOM1dURjEyQXRvbWljU3RyaW5nRTExVVNjcmlwdENvZGUKQEAgLTEwMjYsNyAr
MTAyNiw2IEBAIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcxN3NldFNjcm9sbFBvc2l0aW9uRVJLTlNf
OEludFBvaW50RQogX19aTjdXZWJDb3JlOUZyYW1lVmlldzE3c2V0VHJhY2tzUmVwYWludHNFYgog
X19aTjdXZWJDb3JlOUZyYW1lVmlldzE4dXBkYXRlQ29udHJvbFRpbnRzRXYKIF9fWk43V2ViQ29y
ZTlGcmFtZVZpZXcxOXNjcm9sbEVsZW1lbnRUb1JlY3RFUE5TXzdFbGVtZW50RVJLTlNfN0ludFJl
Y3RFCi1fX1pON1dlYkNvcmU5RnJhbWVWaWV3NDNzZXRTaG91bGRMYXlvdXRGaXhlZEVsZW1lbnRz
UmVsYXRpdmVUb0ZyYW1lRWIKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMGVudGVyQ29tcG9zaXRp
bmdNb2RlRXYKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMWZsdXNoRGVmZXJyZWRSZXBhaW50c0V2
CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjJzZXRCYXNlQmFja2dyb3VuZENvbG9yRVJLTlNfNUNv
bG9yRQpAQCAtMTAzNyw2ICsxMDM2LDcgQEAgX19aTjdXZWJDb3JlOUZyYW1lVmlldzI5c2V0U2hv
dWxkVXBkYXRlV2hpbGVPZmZzY3JlZW5FYgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzM3dXBkYXRl
TGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZUV2CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3
MzhzY3JvbGxQb3NpdGlvbkNoYW5nZWRWaWFQbGF0Zm9ybVdpZGdldEV2CiBfX1pON1dlYkNvcmU5
RnJhbWVWaWV3MzhzeW5jQ29tcG9zaXRpbmdTdGF0ZUluY2x1ZGluZ1N1YmZyYW1lc0V2CitfX1pO
N1dlYkNvcmU5RnJhbWVWaWV3NDNzZXRTaG91bGRMYXlvdXRGaXhlZEVsZW1lbnRzUmVsYXRpdmVU
b0ZyYW1lRWIKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXc2Y3JlYXRlRVBOU181RnJhbWVFCiBfX1pO
N1dlYkNvcmU5RnJhbWVWaWV3NmNyZWF0ZUVQTlNfNUZyYW1lRVJLTlNfN0ludFNpemVFCiBfX1pO
N1dlYkNvcmU5SFRNTE5hbWVzMTBsaXN0aW5nVGFnRQpAQCAtMTEzMywxMyArMTEzMywxMiBAQCBf
X1pOSzdXZWJDb3JlMTBTY3JvbGxWaWV3MTRzY3JvbGxiYXJNb2Rlc0VSTlNfMTNTY3JvbGxiYXJN
b2RlRVMyXwogX19aTks3V2ViQ29yZTEwU2Nyb2xsVmlldzE0dXNlRml4ZWRMYXlvdXRFdgogX19a
Tks3V2ViQ29yZTEwU2Nyb2xsVmlldzE1Zml4ZWRMYXlvdXRTaXplRXYKIF9fWk5LN1dlYkNvcmUx
MFNjcm9sbFZpZXcxNmNvbnRlbnRzVG9XaW5kb3dFUktOU183SW50UmVjdEUKLV9fWk5LN1dlYkNv
cmUxMFNjcm9sbFZpZXcxNndpbmRvd1RvQ29udGVudHNFUktOU183SW50UmVjdEUKIF9fWk5LN1dl
YkNvcmUxMFNjcm9sbFZpZXcxNmNvbnRlbnRzVG9XaW5kb3dFUktOU184SW50UG9pbnRFCitfX1pO
SzdXZWJDb3JlMTBTY3JvbGxWaWV3MTZ3aW5kb3dUb0NvbnRlbnRzRVJLTlNfN0ludFJlY3RFCiBf
X1pOSzdXZWJDb3JlMTBTY3JvbGxWaWV3MTZ3aW5kb3dUb0NvbnRlbnRzRVJLTlNfOEludFBvaW50
RQotX19aTks3V2ViQ29yZTEwU2Nyb2xsVmlldzE4dmlzaWJsZUNvbnRlbnRSZWN0RWIKIF9fWk5L
N1dlYkNvcmUxMFNjcm9sbFZpZXcxOGNvbnRlbnRzVG9Sb290Vmlld0VSS05TXzdJbnRSZWN0RQog
X19aTks3V2ViQ29yZTEwU2Nyb2xsVmlldzE4Y29udGVudHNUb1Jvb3RWaWV3RVJLTlNfOEludFBv
aW50RQotX19aTjdXZWJDb3JlMTFDYWNoZWRJbWFnZTVpbWFnZUV2CitfX1pOSzdXZWJDb3JlMTBT
Y3JvbGxWaWV3MTh2aXNpYmxlQ29udGVudFJlY3RFYgogX19aTks3V2ViQ29yZTExRnJhbWVMb2Fk
ZXIxMGlzQ29tcGxldGVFdgogX19aTks3V2ViQ29yZTExRnJhbWVMb2FkZXIxNGNhbmNlbGxlZEVy
cm9yRVJLTlNfMTVSZXNvdXJjZVJlcXVlc3RFCiBfX1pOSzdXZWJDb3JlMTFGcmFtZUxvYWRlcjE0
ZnJhbWVIYXNMb2FkZWRFdgpAQCAtMTE3NCwxMSArMTE3MywxMSBAQCBfX1pOSzdXZWJDb3JlMTFT
Y3JpcHRWYWx1ZTlnZXRTdHJpbmdFUE4zSlNDOUV4ZWNTdGF0ZUVSTjNXVEY2U3RyaW5nRQogX19a
Tks3V2ViQ29yZTEySWNvbkRhdGFiYXNlMTJkYXRhYmFzZVBhdGhFdgogX19aTks3V2ViQ29yZTEy
SWNvbkRhdGFiYXNlMjRzaG91bGRTdG9wVGhyZWFkQWN0aXZpdHlFdgogX19aTks3V2ViQ29yZTEy
SWNvbkRhdGFiYXNlOWlzRW5hYmxlZEV2Ci1fX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QyM2Fi
c29sdXRlQm91bmRpbmdCb3hSZWN0RWIKK19fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDEzc3R5
bGVJblJlZ2lvbkV2CiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QxNGVuY2xvc2luZ0xheWVy
RXYKIF9fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDE1bG9jYWxUb0Fic29sdXRlRVJLTlNfMTBG
bG9hdFBvaW50RWJiCitfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QyM2Fic29sdXRlQm91bmRp
bmdCb3hSZWN0RWIKIF9fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDdjaGlsZEF0RWoKLV9fWk5L
N1dlYkNvcmUxMlJlbmRlck9iamVjdDEzc3R5bGVJblJlZ2lvbkV2CiBfX1pOSzdXZWJDb3JlMTJS
ZW5kZXJXaWRnZXQxNHdpbmRvd0NsaXBSZWN0RXYKIF9fWk5LN1dlYkNvcmUxMlNoYXJlZEJ1ZmZl
cjExZ2V0U29tZURhdGFFUlBLY2oKIF9fWk5LN1dlYkNvcmUxMlNoYXJlZEJ1ZmZlcjRkYXRhRXYK
QEAgLTE0OTAsNiArMTQ4OSw3IEBAIF93a0dldEhUVFBDb29raWVBY2NlcHRQb2xpY3kKIF93a0dl
dEhUVFBQaXBlbGluaW5nUHJpb3JpdHkKIF93a0dldEh5cGhlbmF0aW9uTG9jYXRpb25CZWZvcmVJ
bmRleAogX3drR2V0TUlNRVR5cGVGb3JFeHRlbnNpb24KK193a0dldE5TRXZlbnRLZXlDaGFyCiBf
d2tHZXROU1VSTFJlc3BvbnNlQ2FsY3VsYXRlZEV4cGlyYXRpb24KIF93a0dldE5TVVJMUmVzcG9u
c2VMYXN0TW9kaWZpZWREYXRlCiBfd2tHZXROU1VSTFJlc3BvbnNlTXVzdFJldmFsaWRhdGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCAxODBhYTMzMDcxODE0OWEzN2MzZTkwOTI2NWQ2YTlhYzcyZjU2NTg3Li5kMjFjYmFjZGYxZjIz
MWU1MjU0ZDA3NjVmNjdiNTJiNDNjYTQyZWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MjUxLDYgKzUyNTEsOCBAQAogCQlC
Q0E4QzgxRjExRTNEMzY5MDA4MTJGQjcgLyogQmFja0ZvcndhcmRDb250cm9sbGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQThDODFEMTFFM0Qz
NjkwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZENvbnRyb2xsZXIuY3BwICovOyB9OwogCQlCQ0E4Q0E1
RjExRTRFNkQxMDA4MTJGQjcgLyogQmFja0ZvcndhcmRMaXN0SW1wbC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0E4Q0E1RDExRTRFNkQxMDA4MTJG
QjcgLyogQmFja0ZvcndhcmRMaXN0SW1wbC5jcHAgKi87IH07CiAJCUJDQThDQTYwMTFFNEU2RDEw
MDgxMkZCNyAvKiBCYWNrRm9yd2FyZExpc3RJbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0E4Q0E1RTExRTRFNkQxMDA4MTJGQjcgLyogQmFja0Zv
cndhcmRMaXN0SW1wbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCUJDQUE0ODZGMTRBMDUyNTMwMDg4RkFDNCAvKiBQbGF0Zm9ybUV2ZW50RmFjdG9y
eS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQUE0
ODZEMTRBMDUyNTMwMDg4RkFDNCAvKiBQbGF0Zm9ybUV2ZW50RmFjdG9yeS5tbSAqLzsgfTsKKwkJ
QkNBQTQ4NzAxNEEwNTI1MzAwODhGQUM0IC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0FBNDg2RTE0QTA1MjUz
MDA4OEZBQzQgLyogUGxhdGZvcm1FdmVudEZhY3RvcnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0FBOTBDMzBBN0VCQTYwMDA4QjEyMjkgLyog
U2Nyb2xsYmFyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDQUE5MEMyMEE3RUJBNjAwMDhCMTIyOSAvKiBTY3JvbGxiYXIuY3BwICovOyB9OwogCQlC
Q0FCNDE4MTEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQUI0MTdGMTNFMzU2RTgwMEQ4QUFGMyAvKiBS
ZWdpb24uY3BwICovOyB9OwogCQlCQ0FCNDE4MjEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0FCNDE4MDEz
RTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEyNjE4LDYgKzEyNjIwLDggQEAKIAkJQkNBOEM4MUQxMUUz
RDM2OTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYWNrRm9yd2FyZENvbnRyb2xsZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0E4Q0E1RDExRTRFNkQxMDA4MTJGQjcgLyogQmFja0Zv
cndhcmRMaXN0SW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBC
YWNrRm9yd2FyZExpc3RJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNB
OENBNUUxMUU0RTZEMTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkTGlzdEltcGwuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFja0ZvcndhcmRMaXN0SW1wbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlCQ0FBNDg2RDE0QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZvcm1F
dmVudEZhY3RvcnkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQ
bGF0Zm9ybUV2ZW50RmFjdG9yeS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNB
QTQ4NkUxNEEwNTI1MzAwODhGQUM0IC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtRXZlbnRGYWN0b3J5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQUE5MEMyMEE3RUJBNjAwMDhCMTIyOSAvKiBTY3JvbGxi
YXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbGJhci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQUI0MTdGMTNFMzU2RTgwMEQ4QUFG
MyAvKiBSZWdpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVn
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNBQjQxODAxM0UzNTZFODAw
RDhBQUYzIC8qIFJlZ2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NjU1LDYgKzE1NjU5LDggQEAK
IAkJCQk5MzgwRjQ3NzA5QTExQUNDMDAxRkRCMzQgLyogV2lkZ2V0TWFjLm1tICovLAogCQkJCUNE
RUE3NjJFMTQ2MDg0REUwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0EuY3BwICovLAogCQkJCUNE
RUE3NjJGMTQ2MDg0RUUwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0EuaCAqLywKKwkJCQlCQ0FB
NDg2RDE0QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZvcm1FdmVudEZhY3RvcnkubW0gKi8sCisJCQkJ
QkNBQTQ4NkUxNEEwNTI1MzAwODhGQUM0IC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5LmggKi8sCiAJ
CQkpOwogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNDk1
Myw3ICsyNDk1OSw3IEBACiAJCQkJMUEyRjlEN0ExNDk2OEM3NDAwNjVBQzYzIC8qIFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUE3MTYwQjE0OUJDNERCMDAxNkVD
MTkgLyogVGlsZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMzdDREVCRDE0OUVGMjAzMDA0
MjA5MEQgLyogQ29sb3JDaG9vc2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQkxQUM2OTI2
QTE0QTEyNTMyMDBCRDg1RjEgLyogU2Nyb2xsYWJsZUFyZWFDbGllbnQuaCBpbiBIZWFkZXJzICov
LAorCQkJCUJDQUE0ODcwMTRBMDUyNTMwMDg4RkFDNCAvKiBQbGF0Zm9ybUV2ZW50RmFjdG9yeS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkBAIC0yNzg1OCw2ICsyNzg2NCw3IEBACiAJCQkJQTgwQTk0MjMxNDlG
MjI1RTAwOTg5MjkxIC8qIEpTRE9NV2luZG93V2ViQXVkaW9DdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTgwQTk0MjUxNDlGMjI3MTAwOTg5MjkxIC8qIEpTRE9NV2luZG93V2ViU29ja2V0
Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUyRjUyRTExMTRBMDEzNEYwMEFDQzM5NyAv
KiBOU1Njcm9sbGVySW1wRGV0YWlscy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUJDQUE0ODZGMTRB
MDUyNTMwMDg4RkFDNCAvKiBQbGF0Zm9ybUV2ZW50RmFjdG9yeS5tbSBpbiBTb3VyY2VzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGMyMWViN2UyNWMxZDlkY2E0ODA2
NGQyOTgzOTViMzM0YWJlZTUyNDYuLjBjYzM5NDhjNTRmZDU1YmIzZWYzMzJhZjQzM2UyNTU1Mjky
OTQ4MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTI1OTEsNyArMjU5
MSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjprZXlFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJk
RXZlbnQmIGluaXRpYWxLZXlFdmVudCkKICAgICBib29sIGhhbmRsZWRCeUlucHV0TWV0aG9kID0g
a2V5ZG93bi0+ZGVmYXVsdEhhbmRsZWQoKTsKICAgICAKICAgICBpZiAoaGFuZGxlZEJ5SW5wdXRN
ZXRob2QpIHsKLSAgICAgICAga2V5RG93bkV2ZW50LnNldFdpbmRvd3NWaXJ0dWFsS2V5Q29kZShD
b21wb3NpdGlvbkV2ZW50S2V5Q29kZSk7CisgICAgICAgIGtleURvd25FdmVudCA9IGtleURvd25F
dmVudC5jb3B5Q2hhbmdpbmdXaW5kb3dzVmlydHVhbEtleUNvZGUoQ29tcG9zaXRpb25FdmVudEtl
eUNvZGUpOwogICAgICAgICBrZXlkb3duID0gS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKGtleURvd25F
dmVudCwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSk7CiAgICAgICAgIGtleWRv
d24tPnNldFRhcmdldChub2RlKTsKICAgICAgICAga2V5ZG93bi0+c2V0RGVmYXVsdEhhbmRsZWQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQppbmRleCA4MmFh
NzllMDM0Mzc5ZTEyOGNmNGI2NzhkYzc1MmRkM2IzYWMxYmNlLi41ZjkxMTMyMTg4NDM0YTI2NzRl
MmQzNGU4NWY3OGRmNTI0ZTMwOGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21h
Yy9FdmVudEhhbmRsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRI
YW5kbGVyTWFjLm1tCkBAIC00MSw4ICs0MSw3IEBACiAjaW5jbHVkZSAiTW91c2VFdmVudFdpdGhI
aXRUZXN0UmVzdWx0cy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgotI2luY2x1ZGUgIlBs
YXRmb3JtV2hlZWxFdmVudC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtRXZlbnRGYWN0b3J5LmgiCiAj
aW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCiAjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hl
Y2tzLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyLmgiCkBAIC0xMDQsOSArMTAzLDcgQEAgYm9vbCBF
dmVudEhhbmRsZXI6OndoZWVsRXZlbnQoTlNFdmVudCAqZXZlbnQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIEN1cnJlbnRFdmVudFNjb3BlIHNjb3BlKGV2ZW50KTsKLQotICAgIFBsYXRm
b3JtV2hlZWxFdmVudCB3aGVlbEV2ZW50KGV2ZW50LCBwYWdlLT5jaHJvbWUoKS0+cGxhdGZvcm1Q
YWdlQ2xpZW50KCkpOwotICAgIHJldHVybiBoYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQpOwor
ICAgIHJldHVybiBoYW5kbGVXaGVlbEV2ZW50KFBsYXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQ
bGF0Zm9ybVdoZWVsRXZlbnQoZXZlbnQsIHBhZ2UtPmNocm9tZSgpLT5wbGF0Zm9ybVBhZ2VDbGll
bnQoKSkpOwogfQogCiBib29sIEV2ZW50SGFuZGxlcjo6a2V5RXZlbnQoTlNFdmVudCAqZXZlbnQp
CkBAIC0xMTYsNyArMTEzLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmtleUV2ZW50KE5TRXZlbnQg
KmV2ZW50KQogICAgIEFTU0VSVChbZXZlbnQgdHlwZV0gPT0gTlNLZXlEb3duIHx8IFtldmVudCB0
eXBlXSA9PSBOU0tleVVwKTsKIAogICAgIEN1cnJlbnRFdmVudFNjb3BlIHNjb3BlKGV2ZW50KTsK
LSAgICByZXR1cm4ga2V5RXZlbnQoUGxhdGZvcm1LZXlib2FyZEV2ZW50KGV2ZW50KSk7CisgICAg
cmV0dXJuIGtleUV2ZW50KFBsYXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQbGF0Zm9ybUtleWJv
YXJkRXZlbnQoZXZlbnQpKTsKIAogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKQEAg
LTY0Niw3ICs2NDMsNyBAQCBQbGF0Zm9ybU1vdXNlRXZlbnQgRXZlbnRIYW5kbGVyOjpjdXJyZW50
UGxhdGZvcm1Nb3VzZUV2ZW50KCkgY29uc3QKICAgICBOU1ZpZXcgKndpbmRvd1ZpZXcgPSBuaWw7
CiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCiAgICAgICAgIHdpbmRvd1Zp
ZXcgPSBwYWdlLT5jaHJvbWUoKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCk7Ci0gICAgcmV0dXJuIFBs
YXRmb3JtTW91c2VFdmVudChjdXJyZW50TlNFdmVudCgpLCB3aW5kb3dWaWV3KTsKKyAgICByZXR1
cm4gUGxhdGZvcm1FdmVudEZhY3Rvcnk6OmNyZWF0ZVBsYXRmb3JtTW91c2VFdmVudChjdXJyZW50
TlNFdmVudCgpLCB3aW5kb3dWaWV3KTsKIH0KIAogYm9vbCBFdmVudEhhbmRsZXI6OmV2ZW50QWN0
aXZhdGVkVmlldyhjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1FdmVudC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1FdmVudC5oCmluZGV4IGEzMmQyODBiMmE2MzIxMWM4NGU0
NzZjYjhkMTg4YTAxOTRkODAxYjIuLjc3ZDQ0N2U0Y2VlZDFjMDFkZWMxNjc4YTBmZDRkYTBlMWVl
MjY0YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXZlbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmgKQEAgLTY1LDU5
ICs2NSw1OSBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9OwogCi0gICAgZW51bSBNb2RpZmllcktl
eSB7Ci0gICAgICAgIEFsdEtleSA9IDEgPDwgMCwKLSAgICAgICAgQ3RybEtleSA9IDEgPDwgMSwK
LSAgICAgICAgTWV0YUtleSA9IDEgPDwgMiwKLSAgICAgICAgU2hpZnRLZXkgPSAxIDw8IDMKKyAg
ICBlbnVtIE1vZGlmaWVycyB7CisgICAgICAgIEFsdEtleSAgICAgID0gMSA8PCAwLAorICAgICAg
ICBDdHJsS2V5ICAgICA9IDEgPDwgMSwKKyAgICAgICAgTWV0YUtleSAgICAgPSAxIDw8IDIsCisg
ICAgICAgIFNoaWZ0S2V5ICAgID0gMSA8PCAzLAogICAgIH07CiAKICAgICBUeXBlIHR5cGUoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUeXBlPihtX3R5cGUpOyB9CiAKLSAgICBib29sIHNo
aWZ0S2V5KCkgY29uc3QgeyByZXR1cm4gbV9zaGlmdEtleTsgfQotICAgIGJvb2wgY3RybEtleSgp
IGNvbnN0IHsgcmV0dXJuIG1fY3RybEtleTsgfQotICAgIGJvb2wgYWx0S2V5KCkgY29uc3QgeyBy
ZXR1cm4gbV9hbHRLZXk7IH0KLSAgICBib29sIG1ldGFLZXkoKSBjb25zdCB7IHJldHVybiBtX21l
dGFLZXk7IH0KKyAgICBib29sIHNoaWZ0S2V5KCkgY29uc3QgeyByZXR1cm4gbV9tb2RpZmllcnMg
JiBTaGlmdEtleTsgfQorICAgIGJvb2wgY3RybEtleSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kaWZp
ZXJzICYgQ3RybEtleTsgfQorICAgIGJvb2wgYWx0S2V5KCkgY29uc3QgeyByZXR1cm4gbV9tb2Rp
ZmllcnMgJiBBbHRLZXk7IH0KKyAgICBib29sIG1ldGFLZXkoKSBjb25zdCB7IHJldHVybiBtX21v
ZGlmaWVycyAmIE1ldGFLZXk7IH0KIAotICAgIHVuc2lnbmVkIG1vZGlmaWVycygpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gKGFsdEtleSgpID8gQWx0S2V5IDogMCkKLSAgICAgICAgICAg
IHwgKGN0cmxLZXkoKSA/IEN0cmxLZXkgOiAwKQotICAgICAgICAgICAgfCAobWV0YUtleSgpID8g
TWV0YUtleSA6IDApCi0gICAgICAgICAgICB8IChzaGlmdEtleSgpID8gU2hpZnRLZXkgOiAwKTsK
LSAgICB9CisgICAgdW5zaWduZWQgbW9kaWZpZXJzKCkgY29uc3QgeyByZXR1cm4gbV9tb2RpZmll
cnM7IH0KIAogICAgIGRvdWJsZSB0aW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX3RpbWVzdGFt
cDsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgUGxhdGZvcm1FdmVudCgpCiAgICAgICAgIDogbV90eXBl
KE5vVHlwZSkKLSAgICAgICAgLCBtX3NoaWZ0S2V5KGZhbHNlKQotICAgICAgICAsIG1fY3RybEtl
eShmYWxzZSkKLSAgICAgICAgLCBtX2FsdEtleShmYWxzZSkKLSAgICAgICAgLCBtX21ldGFLZXko
ZmFsc2UpCisgICAgICAgICwgbV9tb2RpZmllcnMoMCkKICAgICAgICAgLCBtX3RpbWVzdGFtcCgw
KQogICAgIHsKICAgICB9CiAKICAgICBQbGF0Zm9ybUV2ZW50KFR5cGUgdHlwZSkKICAgICAgICAg
OiBtX3R5cGUodHlwZSkKLSAgICAgICAgLCBtX3NoaWZ0S2V5KGZhbHNlKQotICAgICAgICAsIG1f
Y3RybEtleShmYWxzZSkKLSAgICAgICAgLCBtX2FsdEtleShmYWxzZSkKLSAgICAgICAgLCBtX21l
dGFLZXkoZmFsc2UpCisgICAgICAgICwgbV9tb2RpZmllcnMoMCkKICAgICAgICAgLCBtX3RpbWVz
dGFtcCgwKQogICAgIHsKICAgICB9CiAKKyAgICBQbGF0Zm9ybUV2ZW50KFR5cGUgdHlwZSwgTW9k
aWZpZXJzIG1vZGlmaWVycywgZG91YmxlIHRpbWVzdGFtcCkKKyAgICAgICAgOiBtX3R5cGUodHlw
ZSkKKyAgICAgICAgLCBtX21vZGlmaWVycyhtb2RpZmllcnMpCisgICAgICAgICwgbV90aW1lc3Rh
bXAodGltZXN0YW1wKQorICAgIHsKKyAgICB9CisKICAgICBQbGF0Zm9ybUV2ZW50KFR5cGUgdHlw
ZSwgYm9vbCBzaGlmdEtleSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBtZXRhS2V5
LCBkb3VibGUgdGltZXN0YW1wKQogICAgICAgICA6IG1fdHlwZSh0eXBlKQotICAgICAgICAsIG1f
c2hpZnRLZXkoc2hpZnRLZXkpCi0gICAgICAgICwgbV9jdHJsS2V5KGN0cmxLZXkpCi0gICAgICAg
ICwgbV9hbHRLZXkoYWx0S2V5KQotICAgICAgICAsIG1fbWV0YUtleShtZXRhS2V5KQorICAgICAg
ICAsIG1fbW9kaWZpZXJzKDApCiAgICAgICAgICwgbV90aW1lc3RhbXAodGltZXN0YW1wKQogICAg
IHsKKyAgICAgICAgaWYgKHNoaWZ0S2V5KQorICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gU2hp
ZnRLZXk7CisgICAgICAgIGlmIChjdHJsS2V5KQorICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0g
Q3RybEtleTsKKyAgICAgICAgaWYgKGFsdEtleSkKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9
IEFsdEtleTsKKyAgICAgICAgaWYgKG1ldGFLZXkpCisgICAgICAgICAgICBtX21vZGlmaWVycyB8
PSBNZXRhS2V5OwogICAgIH0KIAogICAgIC8vIEV4cGxpY2l0IHByb3RlY3RlZCBkZXN0cnVjdG9y
IHNvIHRoYXQgcGVvcGxlIGRvbid0IGFjY2lkZW50YWxseQpAQCAtMTI3LDEwICsxMjcsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgfQogCiAgICAgdW5zaWduZWQgbV90eXBlOwotICAgIGJvb2wgbV9zaGlm
dEtleTsKLSAgICBib29sIG1fY3RybEtleTsKLSAgICBib29sIG1fYWx0S2V5OwotICAgIGJvb2wg
bV9tZXRhS2V5OworICAgIHVuc2lnbmVkIG1fbW9kaWZpZXJzOwogICAgIGRvdWJsZSBtX3RpbWVz
dGFtcDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
R2VzdHVyZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVF
dmVudC5oCmluZGV4IDU1ZmU4ZWZhODYxODk2OGMxODBlMGYwNjNlYjk3ZmU3ZDZmY2Y3ZTUuLmUz
MTNiZTUwZTM5MzJmOWNlMWNiYzU1YjQwMWRhMjc2MzJhNDU0MzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUV2ZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlRXZlbnQuaApAQCAtNjAsNyArNjAsNiBAQCBw
dWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSW50UG9pbnQgbV9wb3NpdGlvbjsKICAgICBJbnRQb2lu
dCBtX2dsb2JhbFBvc2l0aW9uOwotICAgIGRvdWJsZSBtX3RpbWVzdGFtcDsKICAgICBmbG9hdCBt
X2RlbHRhWDsKICAgICBmbG9hdCBtX2RlbHRhWTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oCmluZGV4IDJlZDFhMGFmODhkYWViZGM1Yjk0
MzE2ZTJkMjNhMTJjMzhmMTQ2ZjYuLmYxNTQ5NjY3MzJhZDk0OWE4ZDhiMzAwOTYyMzY3MTU3OTcz
Mjg0ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtS2V5Ym9h
cmRFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtS2V5Ym9hcmRF
dmVudC5oCkBAIC03MCwxMyArNzAsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1Ymxp
YzoKICAgICAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50KCkKICAgICAgICAgICAgIDogUGxhdGZv
cm1FdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duKQotICAgICAgICAgICAgLCBtX2F1dG9SZXBl
YXQoZmFsc2UpCiAgICAgICAgICAgICAsIG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlKDApCiAgICAg
ICAgICAgICAsIG1fbmF0aXZlVmlydHVhbEtleUNvZGUoMCkKKyAgICAgICAgICAgICwgbV9tYWND
aGFyQ29kZSgwKQorICAgICAgICAgICAgLCBtX2F1dG9SZXBlYXQoZmFsc2UpCiAgICAgICAgICAg
ICAsIG1faXNLZXlwYWQoZmFsc2UpCi0jaWYgUExBVEZPUk0oV0lOKSB8fCBQTEFURk9STShDSFJP
TUlVTSkKICAgICAgICAgICAgICwgbV9pc1N5c3RlbUtleShmYWxzZSkKLSNlbmRpZgogI2lmIFBM
QVRGT1JNKEdUSykKICAgICAgICAgICAgICwgbV9nZGtFdmVudEtleSgwKQogI2VuZGlmCkBAIC04
Niw2ICs4NSwyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHsKICAgICAgICAgfQog
CisgICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudChUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYg
dGV4dCwgY29uc3QgU3RyaW5nJiB1bm1vZGlmaWVkVGV4dCwgY29uc3QgU3RyaW5nJiBrZXlJZGVu
dGlmaWVyLCBpbnQgd2luZG93c1ZpcnR1YWxLZXlDb2RlLCBpbnQgbmF0aXZlVmlydHVhbEtleUNv
ZGUsIGludCBtYWNDaGFyQ29kZSwgYm9vbCBpc0F1dG9SZXBlYXQsIGJvb2wgaXNLZXlwYWQsIGJv
b2wgaXNTeXN0ZW1LZXksIE1vZGlmaWVycyBtb2RpZmllcnMsIGRvdWJsZSB0aW1lc3RhbXApCisg
ICAgICAgICAgICA6IFBsYXRmb3JtRXZlbnQodHlwZSwgbW9kaWZpZXJzLCB0aW1lc3RhbXApCisg
ICAgICAgICAgICAsIG1fdGV4dCh0ZXh0KQorICAgICAgICAgICAgLCBtX3VubW9kaWZpZWRUZXh0
KHVubW9kaWZpZWRUZXh0KQorICAgICAgICAgICAgLCBtX2tleUlkZW50aWZpZXIoa2V5SWRlbnRp
ZmllcikKKyAgICAgICAgICAgICwgbV93aW5kb3dzVmlydHVhbEtleUNvZGUod2luZG93c1ZpcnR1
YWxLZXlDb2RlKQorICAgICAgICAgICAgLCBtX25hdGl2ZVZpcnR1YWxLZXlDb2RlKG5hdGl2ZVZp
cnR1YWxLZXlDb2RlKQorICAgICAgICAgICAgLCBtX21hY0NoYXJDb2RlKG1hY0NoYXJDb2RlKQor
ICAgICAgICAgICAgLCBtX2F1dG9SZXBlYXQoaXNBdXRvUmVwZWF0KQorICAgICAgICAgICAgLCBt
X2lzS2V5cGFkKGlzS2V5cGFkKQorICAgICAgICAgICAgLCBtX2lzU3lzdGVtS2V5KGlzU3lzdGVt
S2V5KQorICAgICAgICB7CisgICAgICAgIH0KKwogICAgICAgICB2b2lkIGRpc2FtYmlndWF0ZUtl
eURvd25FdmVudChUeXBlLCBib29sIGJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUgPSBmYWxzZSk7
IC8vIE9ubHkgdXNlZCBvbiBwbGF0Zm9ybXMgdGhhdCBuZWVkIGl0LCBpLmUuIHRob3NlIHRoYXQg
Z2VuZXJhdGUgS2V5RG93biBldmVudHMuCiAKICAgICAgICAgLy8gVGV4dCBhcyBhcyBnZW5lcmF0
ZWQgYnkgcHJvY2Vzc2luZyBhIHZpcnR1YWwga2V5IGNvZGUgd2l0aCBhIGtleWJvYXJkIGxheW91
dApAQCAtMTAxLDI0ICsxMTQsMjQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBP
dGhlcndpc2UsIHNhbWUgYXMgdGV4dCgpLgogICAgICAgICBTdHJpbmcgdW5tb2RpZmllZFRleHQo
KSBjb25zdCB7IHJldHVybiBtX3VubW9kaWZpZWRUZXh0OyB9CiAKKyAgICAgICAgU3RyaW5nIGtl
eUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2tleUlkZW50aWZpZXI7IH0KKwogICAgICAg
ICAvLyBNb3N0IGNvbXBhdGlibGUgV2luZG93cyB2aXJ0dWFsIGtleSBjb2RlIGFzc29jaWF0ZWQg
d2l0aCB0aGUgZXZlbnQuCiAgICAgICAgIC8vIFplcm8gZm9yIENoYXIgZXZlbnRzLgogICAgICAg
ICBpbnQgd2luZG93c1ZpcnR1YWxLZXlDb2RlKCkgY29uc3QgeyByZXR1cm4gbV93aW5kb3dzVmly
dHVhbEtleUNvZGU7IH0KICAgICAgICAgdm9pZCBzZXRXaW5kb3dzVmlydHVhbEtleUNvZGUoaW50
IGNvZGUpIHsgbV93aW5kb3dzVmlydHVhbEtleUNvZGUgPSBjb2RlOyB9CiAKICAgICAgICAgaW50
IG5hdGl2ZVZpcnR1YWxLZXlDb2RlKCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVWaXJ0dWFsS2V5
Q29kZTsgfQotICAgICAgICB2b2lkIHNldE5hdGl2ZVZpcnR1YWxLZXlDb2RlKGludCBjb2RlKSB7
IG1fbmF0aXZlVmlydHVhbEtleUNvZGUgPSBjb2RlOyB9CisgICAgICAgIGludCBtYWNDaGFyQ29k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFjQ2hhckNvZGU7IH0KIAotICAgICAgICBTdHJpbmcga2V5
SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fa2V5SWRlbnRpZmllcjsgfQogICAgICAgICBi
b29sIGlzQXV0b1JlcGVhdCgpIGNvbnN0IHsgcmV0dXJuIG1fYXV0b1JlcGVhdDsgfQotICAgICAg
ICB2b2lkIHNldElzQXV0b1JlcGVhdChib29sIGluKSB7IG1fYXV0b1JlcGVhdCA9IGluOyB9CiAg
ICAgICAgIGJvb2wgaXNLZXlwYWQoKSBjb25zdCB7IHJldHVybiBtX2lzS2V5cGFkOyB9CisgICAg
ICAgIGJvb2wgaXNTeXN0ZW1LZXkoKSBjb25zdCB7IHJldHVybiBtX2lzU3lzdGVtS2V5OyB9CiAK
ICAgICAgICAgc3RhdGljIGJvb2wgY3VycmVudENhcHNMb2NrU3RhdGUoKTsKICAgICAgICAgc3Rh
dGljIHZvaWQgZ2V0Q3VycmVudE1vZGlmaWVyU3RhdGUoYm9vbCYgc2hpZnRLZXksIGJvb2wmIGN0
cmxLZXksIGJvb2wmIGFsdEtleSwgYm9vbCYgbWV0YUtleSk7CiAKICNpZiBQTEFURk9STShNQUMp
Ci0gICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudChOU0V2ZW50Kik7CiAgICAgICAgIE5TRXZl
bnQqIG1hY0V2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9tYWNFdmVudC5nZXQoKTsgfQogI2VuZGlm
CiAKQEAgLTE0NywxMCArMTYwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQod3hLZXlFdmVudCYpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShX
SU4pIHx8IFBMQVRGT1JNKENIUk9NSVVNKQotICAgICAgICBib29sIGlzU3lzdGVtS2V5KCkgY29u
c3QgeyByZXR1cm4gbV9pc1N5c3RlbUtleTsgfQotI2VuZGlmCi0KICNpZiBQTEFURk9STShFRkwp
CiAgICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudChjb25zdCBFdmFzX0V2ZW50X0tleV9Eb3du
Kik7CiAgICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudChjb25zdCBFdmFzX0V2ZW50X0tleV9V
cCopOwpAQCAtMTYwLDE3ICsxNjksMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBT
dHJpbmcgbV90ZXh0OwogICAgICAgICBTdHJpbmcgbV91bm1vZGlmaWVkVGV4dDsKICAgICAgICAg
U3RyaW5nIG1fa2V5SWRlbnRpZmllcjsKLSAgICAgICAgYm9vbCBtX2F1dG9SZXBlYXQ7CiAgICAg
ICAgIGludCBtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZTsKICAgICAgICAgaW50IG1fbmF0aXZlVmly
dHVhbEtleUNvZGU7CisgICAgICAgIGludCBtX21hY0NoYXJDb2RlOworICAgICAgICBib29sIG1f
YXV0b1JlcGVhdDsKICAgICAgICAgYm9vbCBtX2lzS2V5cGFkOworICAgICAgICBib29sIG1faXNT
eXN0ZW1LZXk7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIFJldGFpblB0cjxOU0V2ZW50
PiBtX21hY0V2ZW50OwogI2VuZGlmCi0jaWYgUExBVEZPUk0oV0lOKSB8fCBQTEFURk9STShDSFJP
TUlVTSkKLSAgICAgICAgYm9vbCBtX2lzU3lzdGVtS2V5OwotI2VuZGlmCiAjaWYgUExBVEZPUk0o
R1RLKQogICAgICAgICBHZGtFdmVudEtleSogbV9nZGtFdmVudEtleTsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Nb3VzZUV2ZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaAppbmRleCBiM2E0MDY3ZDcx
ODBjYmE0ODVhY2E2NzcwOTk3MzBjZjM1ZjdmYTkwLi5hM2RjY2U0OTBkM2Y3ODA2MmQ5ZWM3OGI2
ODE3ZDM5ODg5ZTRlNGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybU1vdXNlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybU1v
dXNlRXZlbnQuaApAQCAtMTE5LDEyICsxMTksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKE1BQykKLSNpZiBkZWZpbmVkKF9fT0JKQ19fKQotICAgICAgICBQ
bGF0Zm9ybU1vdXNlRXZlbnQoTlNFdmVudCAqLCBOU1ZpZXcgKndpbmRvd1ZpZXcpOwotI2VuZGlm
Ci0gICAgICAgIFBsYXRmb3JtTW91c2VFdmVudChpbnQgeCwgaW50IHksIGludCBnbG9iYWxYLCBp
bnQgZ2xvYmFsWSwgTW91c2VCdXR0b24sIFBsYXRmb3JtRXZlbnQ6OlR5cGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgY2xpY2tDb3VudCwgYm9vbCBzaGlmdEtleSwgYm9vbCBjdHJs
S2V5LCBib29sIGFsdEtleSwgYm9vbCBtZXRhS2V5LCBkb3VibGUgdGltZXN0YW1wLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbW9kaWZpZXJGbGFncywgaW50IGV2ZW50TnVt
YmVyKTsKICAgICAgICAgaW50IGV2ZW50TnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9ldmVudE51
bWJlcjsgfQogI2VuZGlmCiAKQEAgLTE2MCwxMiArMTU0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogI2VuZGlmCiAgICAgfTsKIAotI2lmIFBMQVRGT1JNKE1BQykgJiYgZGVmaW5lZChfX09CSkNf
XykKLSAgICBJbnRQb2ludCBnbG9iYWxQb2ludChjb25zdCBOU1BvaW50JiB3aW5kb3dQb2ludCwg
TlNXaW5kb3cgKik7Ci0gICAgSW50UG9pbnQgcG9pbnRGb3JFdmVudChOU0V2ZW50ICosIE5TVmll
dyAqd2luZG93Vmlldyk7Ci0gICAgSW50UG9pbnQgZ2xvYmFsUG9pbnRGb3JFdmVudChOU0V2ZW50
ICopOwotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFBsYXRm
b3JtTW91c2VFdmVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVdoZWVsRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxF
dmVudC5oCmluZGV4IGJhOTEwNTQ4MjlhZTZlMmY2OWQxNjBmYWJmM2RkZmVlMzNmNGJjM2UuLjhl
OTllNDc2MmZkMDdiMmY1YzNkYjhkMWI5YTdkNDc1NjU1YmNlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCkBAIC0xNTQsMTcgKzE1NCwxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudChjb25zdCBFdmFz
X0V2ZW50X01vdXNlX1doZWVsKik7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykKLSNpZiBk
ZWZpbmVkKF9fT0JKQ19fKQotICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQoTlNFdmVudCAqLCBO
U1ZpZXcgKndpbmRvd1ZpZXcpOwotI2VuZGlmCi0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKE1BQykg
fHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBPUyhEQVJXSU4pKQogICAgICAgICBQbGF0Zm9ybVdo
ZWVsRXZlbnRQaGFzZSBwaGFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGhhc2U7IH0KICAgICAgICAg
UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgbW9tZW50dW1QaGFzZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bW9tZW50dW1QaGFzZTsgfQogICAgICAgICBib29sIGhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMo
KSBjb25zdCB7IHJldHVybiBtX2hhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXM7IH0KLSAgICAgICAg
ZG91YmxlIHRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZXN0YW1wOyB9CiAjZW5kaWYK
IAogI2lmIFBMQVRGT1JNKFFUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL0tleUV2ZW50TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0tleUV2ZW50
TWFjLm1tCmluZGV4IDQ0ZDZjYzMwYzJmODZhMjRjMjdkZjAwMDAyZGY0YTkzOWM3MzM1N2EuLjRi
ZGY2MjA3YjZjNTVmMTJlMjg3YTcxNDFhMjcwZWE5MmQyMmRlMmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9LZXlFdmVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvS2V5RXZlbnRNYWMubW0KQEAgLTM3LDE4NyArMzcsNiBAQCB1c2luZyBu
YW1lc3BhY2UgV1RGOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIGlzS2V5
cGFkRXZlbnQoTlNFdmVudCogZXZlbnQpCi17Ci0gICAgLy8gQ2hlY2sgdGhhdCB0aGlzIGlzIHRo
ZSB0eXBlIG9mIGV2ZW50IHRoYXQgaGFzIGEga2V5Q29kZS4KLSAgICBzd2l0Y2ggKFtldmVudCB0
eXBlXSkgewotICAgICAgICBjYXNlIE5TS2V5RG93bjoKLSAgICAgICAgY2FzZSBOU0tleVVwOgot
ICAgICAgICBjYXNlIE5TRmxhZ3NDaGFuZ2VkOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKFtl
dmVudCBtb2RpZmllckZsYWdzXSAmIE5TTnVtZXJpY1BhZEtleU1hc2spCi0gICAgICAgIHJldHVy
biB0cnVlOwotCi0gICAgc3dpdGNoIChbZXZlbnQga2V5Q29kZV0pIHsKLSAgICAgICAgY2FzZSA3
MTogLy8gQ2xlYXIKLSAgICAgICAgY2FzZSA4MTogLy8gPQotICAgICAgICBjYXNlIDc1OiAvLyAv
Ci0gICAgICAgIGNhc2UgNjc6IC8vICoKLSAgICAgICAgY2FzZSA3ODogLy8gLQotICAgICAgICBj
YXNlIDY5OiAvLyArCi0gICAgICAgIGNhc2UgNzY6IC8vIEVudGVyCi0gICAgICAgIGNhc2UgNjU6
IC8vIC4KLSAgICAgICAgY2FzZSA4MjogLy8gMAotICAgICAgICBjYXNlIDgzOiAvLyAxCi0gICAg
ICAgIGNhc2UgODQ6IC8vIDIKLSAgICAgICAgY2FzZSA4NTogLy8gMwotICAgICAgICBjYXNlIDg2
OiAvLyA0Ci0gICAgICAgIGNhc2UgODc6IC8vIDUKLSAgICAgICAgY2FzZSA4ODogLy8gNgotICAg
ICAgICBjYXNlIDg5OiAvLyA3Ci0gICAgICAgIGNhc2UgOTE6IC8vIDgKLSAgICAgICAgY2FzZSA5
MjogLy8gOQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgIH0KLQotICAgICByZXR1cm4g
ZmFsc2U7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc0tleVVwRXZlbnQoTlNFdmVudCAqZXZl
bnQpCi17Ci0gICAgaWYgKFtldmVudCB0eXBlXSAhPSBOU0ZsYWdzQ2hhbmdlZCkKLSAgICAgICAg
cmV0dXJuIFtldmVudCB0eXBlXSA9PSBOU0tleVVwOwotICAgIC8vIEZJWE1FOiBUaGlzIGxvZ2lj
IGZhaWxzIGlmIHRoZSB1c2VyIHByZXNzZXMgYm90aCBTaGlmdCBrZXlzIGF0IG9uY2UsIGZvciBl
eGFtcGxlOgotICAgIC8vIHdlIHRyZWF0IHJlbGVhc2luZyBvbmUgb2YgdGhlbSBhcyBrZXlEb3du
LgotICAgIHN3aXRjaCAoW2V2ZW50IGtleUNvZGVdKSB7Ci0gICAgICAgIGNhc2UgNTQ6IC8vIFJp
Z2h0IENvbW1hbmQKLSAgICAgICAgY2FzZSA1NTogLy8gTGVmdCBDb21tYW5kCi0gICAgICAgICAg
ICByZXR1cm4gKFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQ29tbWFuZEtleU1hc2spID09IDA7
Ci0KLSAgICAgICAgY2FzZSA1NzogLy8gQ2Fwc2xvY2sKLSAgICAgICAgICAgIHJldHVybiAoW2V2
ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNBbHBoYVNoaWZ0S2V5TWFzaykgPT0gMDsKLQotICAgICAg
ICBjYXNlIDU2OiAvLyBMZWZ0IFNoaWZ0Ci0gICAgICAgIGNhc2UgNjA6IC8vIFJpZ2h0IFNoaWZ0
Ci0gICAgICAgICAgICByZXR1cm4gKFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TU2hpZnRLZXlN
YXNrKSA9PSAwOwotCi0gICAgICAgIGNhc2UgNTg6IC8vIExlZnQgQWx0Ci0gICAgICAgIGNhc2Ug
NjE6IC8vIFJpZ2h0IEFsdAotICAgICAgICAgICAgcmV0dXJuIChbZXZlbnQgbW9kaWZpZXJGbGFn
c10gJiBOU0FsdGVybmF0ZUtleU1hc2spID09IDA7Ci0KLSAgICAgICAgY2FzZSA1OTogLy8gTGVm
dCBDdHJsCi0gICAgICAgIGNhc2UgNjI6IC8vIFJpZ2h0IEN0cmwKLSAgICAgICAgICAgIHJldHVy
biAoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb250cm9sS2V5TWFzaykgPT0gMDsKLQotICAg
ICAgICBjYXNlIDYzOiAvLyBGdW5jdGlvbgotICAgICAgICAgICAgcmV0dXJuIChbZXZlbnQgbW9k
aWZpZXJGbGFnc10gJiBOU0Z1bmN0aW9uS2V5TWFzaykgPT0gMDsKLSAgICB9Ci0gICAgcmV0dXJu
IGZhbHNlOwotfQotCi1zdGF0aWMgaW5saW5lIFN0cmluZyB0ZXh0RnJvbUV2ZW50KE5TRXZlbnQq
IGV2ZW50KQotewotICAgIGlmIChbZXZlbnQgdHlwZV0gPT0gTlNGbGFnc0NoYW5nZWQpCi0gICAg
ICAgIHJldHVybiAiIjsKLSAgICByZXR1cm4gW2V2ZW50IGNoYXJhY3RlcnNdOwotfQotCi0KLXN0
YXRpYyBpbmxpbmUgU3RyaW5nIHVubW9kaWZpZWRUZXh0RnJvbUV2ZW50KE5TRXZlbnQqIGV2ZW50
KQotewotICAgIGlmIChbZXZlbnQgdHlwZV0gPT0gTlNGbGFnc0NoYW5nZWQpCi0gICAgICAgIHJl
dHVybiAiIjsKLSAgICByZXR1cm4gW2V2ZW50IGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyc107
Ci19Ci0KLXN0YXRpYyBTdHJpbmcga2V5SWRlbnRpZmllckZvcktleUV2ZW50KE5TRXZlbnQqIGV2
ZW50KQotewotICAgIGlmIChbZXZlbnQgdHlwZV0gPT0gTlNGbGFnc0NoYW5nZWQpCi0gICAgICAg
IHN3aXRjaCAoW2V2ZW50IGtleUNvZGVdKSB7Ci0gICAgICAgICAgICBjYXNlIDU0OiAvLyBSaWdo
dCBDb21tYW5kCi0gICAgICAgICAgICBjYXNlIDU1OiAvLyBMZWZ0IENvbW1hbmQKLSAgICAgICAg
ICAgICAgICByZXR1cm4gIk1ldGEiOwotCi0gICAgICAgICAgICBjYXNlIDU3OiAvLyBDYXBzbG9j
awotICAgICAgICAgICAgICAgIHJldHVybiAiQ2Fwc0xvY2siOwotCi0gICAgICAgICAgICBjYXNl
IDU2OiAvLyBMZWZ0IFNoaWZ0Ci0gICAgICAgICAgICBjYXNlIDYwOiAvLyBSaWdodCBTaGlmdAot
ICAgICAgICAgICAgICAgIHJldHVybiAiU2hpZnQiOwotCi0gICAgICAgICAgICBjYXNlIDU4OiAv
LyBMZWZ0IEFsdAotICAgICAgICAgICAgY2FzZSA2MTogLy8gUmlnaHQgQWx0Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuICJBbHQiOwotCi0gICAgICAgICAgICBjYXNlIDU5OiAvLyBMZWZ0IEN0cmwK
LSAgICAgICAgICAgIGNhc2UgNjI6IC8vIFJpZ2h0IEN0cmwKLSAgICAgICAgICAgICAgICByZXR1
cm4gIkNvbnRyb2wiOwotCi0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgIHJldHVybiAiIjsKLSAgICAgICAg
fQotCi0gICAgTlNTdHJpbmcgKnMgPSBbZXZlbnQgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJz
XTsKLSAgICBpZiAoW3MgbGVuZ3RoXSAhPSAxKSB7Ci0gICAgICAgIExPRyhFdmVudHMsICJyZWNl
aXZlZCBhbiB1bmV4cGVjdGVkIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIGtleSBldmVudDogJXUi
LCBbcyBsZW5ndGhdKTsKLSAgICAgICAgcmV0dXJuICJVbmlkZW50aWZpZWQiOwotICAgIH0KLSAg
ICByZXR1cm4ga2V5SWRlbnRpZmllckZvckNoYXJDb2RlKFtzIGNoYXJhY3RlckF0SW5kZXg6MF0p
OwotfQotCi1zdGF0aWMgaW50IHdpbmRvd3NLZXlDb2RlRm9yS2V5RXZlbnQoTlNFdmVudCAqZXZl
bnQpCi17Ci0gICAgaW50IGNvZGUgPSAwOwotICAgIC8vIFRoZXJlIGFyZSBzZXZlcmFsIGtpbmRz
IG9mIGNoYXJhY3RlcnMgZm9yIHdoaWNoIHdlIHByb2R1Y2Uga2V5IGNvZGUgZnJvbSBjaGFyIGNv
ZGU6Ci0gICAgLy8gMS4gUm9tYW4gbGV0dGVycy4gV2luZG93cyBrZXlib2FyZCBsYXlvdXRzIGFm
ZmVjdCBib3RoIHZpcnR1YWwga2V5IGNvZGVzIGFuZCBjaGFyYWN0ZXIgY29kZXMgZm9yIHRoZXNl
LAotICAgIC8vICAgIHNvIGUuZy4gJ0EnIGdldHMgdGhlIHNhbWUga2V5Q29kZSBvbiBRV0VSVFks
IEFaRVJUWSBvciBEdm9yYWsgbGF5b3V0cy4KLSAgICAvLyAyLiBLZXlzIGZvciB3aGljaCB0aGVy
ZSBpcyBubyBrbm93biBNYWMgdmlydHVhbCBrZXkgY29kZXMsIGxpa2UgUHJpbnRTY3JlZW4uCi0g
ICAgLy8gMy4gQ2VydGFpbiBwdW5jdHVhdGlvbiBrZXlzLiBPbiBXaW5kb3dzLCB0aGVzZSBhcmUg
YWxzbyByZW1hcHBlZCBkZXBlbmRpbmcgb24gY3VycmVudCBrZXlib2FyZCBsYXlvdXQsCi0gICAg
Ly8gICAgYnV0IHNlZSBjb21tZW50IGluIHdpbmRvd3NLZXlDb2RlRm9yQ2hhckNvZGUoKS4KLSAg
ICBpZiAoW2V2ZW50IHR5cGVdID09IE5TS2V5RG93biB8fCBbZXZlbnQgdHlwZV0gPT0gTlNLZXlV
cCkgewotICAgICAgICAvLyBDbWQgc3dpdGNoZXMgUm9tYW4gbGV0dGVycyBmb3IgRHZvcmFrLVFX
RVJUWSBsYXlvdXQsIHNvIHRyeSBtb2RpZmllZCBjaGFyYWN0ZXJzIGZpcnN0LgotICAgICAgICBO
U1N0cmluZyogcyA9IFtldmVudCBjaGFyYWN0ZXJzXTsKLSAgICAgICAgY29kZSA9IFtzIGxlbmd0
aF0gPiAwID8gd2luZG93c0tleUNvZGVGb3JDaGFyQ29kZShbcyBjaGFyYWN0ZXJBdEluZGV4OjBd
KSA6IDA7Ci0gICAgICAgIGlmIChjb2RlKQotICAgICAgICAgICAgcmV0dXJuIGNvZGU7Ci0KLSAg
ICAgICAgLy8gQ3RybCtBIG9uIGFuIEFaRVJUWSBrZXlib2FyZCB3b3VsZCBnZXQgVktfUSBrZXlD
b2RlIGlmIHdlIHJlbGllZCBvbiAtW05TRXZlbnQga2V5Q29kZV0gYmVsb3cuCi0gICAgICAgIHMg
PSBbZXZlbnQgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzXTsKLSAgICAgICAgY29kZSA9IFtz
IGxlbmd0aF0gPiAwID8gd2luZG93c0tleUNvZGVGb3JDaGFyQ29kZShbcyBjaGFyYWN0ZXJBdElu
ZGV4OjBdKSA6IDA7Ci0gICAgICAgIGlmIChjb2RlKQotICAgICAgICAgICAgcmV0dXJuIGNvZGU7
Ci0gICAgfQotCi0gICAgLy8gTWFwIE1hYyB2aXJ0dWFsIGtleSBjb2RlIGRpcmVjdGx5IHRvIFdp
bmRvd3Mgb25lIGZvciBhbnkga2V5cyBub3QgaGFuZGxlZCBhYm92ZS4KLSAgICAvLyBFLmcuIHRo
ZSBrZXkgbmV4dCB0byBDYXBzIExvY2sgaGFzIHRoZSBzYW1lIEV2ZW50LmtleUNvZGUgb24gVS5T
LiBrZXlib2FyZCAoJ0EnKSBhbmQgb24gUnVzc2lhbiBrZXlib2FyZCAoQ1lSSUxMSUMgTEVUVEVS
IEVGKS4KLSAgICByZXR1cm4gd2luZG93c0tleUNvZGVGb3JLZXlDb2RlKFtldmVudCBrZXlDb2Rl
XSk7Ci19Ci0KLVBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KE5T
RXZlbnQgKmV2ZW50KQotICAgIDogUGxhdGZvcm1FdmVudChpc0tleVVwRXZlbnQoZXZlbnQpID8g
UGxhdGZvcm1FdmVudDo6S2V5VXAgOiBQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCBbZXZlbnQgbW9k
aWZpZXJGbGFnc10gJiBOU1NoaWZ0S2V5TWFzaywgW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlND
b250cm9sS2V5TWFzaywgW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNBbHRlcm5hdGVLZXlNYXNr
LCBbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0NvbW1hbmRLZXlNYXNrLCBbZXZlbnQgdGltZXN0
YW1wXSkKLSAgICAsIG1fdGV4dCh0ZXh0RnJvbUV2ZW50KGV2ZW50KSkKLSAgICAsIG1fdW5tb2Rp
ZmllZFRleHQodW5tb2RpZmllZFRleHRGcm9tRXZlbnQoZXZlbnQpKQotICAgICwgbV9rZXlJZGVu
dGlmaWVyKGtleUlkZW50aWZpZXJGb3JLZXlFdmVudChldmVudCkpCi0gICAgLCBtX2F1dG9SZXBl
YXQoKFtldmVudCB0eXBlXSAhPSBOU0ZsYWdzQ2hhbmdlZCkgJiYgW2V2ZW50IGlzQVJlcGVhdF0p
Ci0gICAgLCBtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSh3aW5kb3dzS2V5Q29kZUZvcktleUV2ZW50
KGV2ZW50KSkKLSAgICAsIG1fbmF0aXZlVmlydHVhbEtleUNvZGUoW2V2ZW50IGtleUNvZGVdKQot
ICAgICwgbV9pc0tleXBhZChpc0tleXBhZEV2ZW50KGV2ZW50KSkKLSAgICAsIG1fbWFjRXZlbnQo
ZXZlbnQpCi17Ci0gICAgLy8gQWx3YXlzIHVzZSAxMyBmb3IgRW50ZXIvUmV0dXJuIC0tIHdlIGRv
bid0IHdhbnQgdG8gdXNlIEFwcEtpdCdzIGRpZmZlcmVudCBjaGFyYWN0ZXIgZm9yIEVudGVyLgot
ICAgIGlmIChtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSA9PSBWS19SRVRVUk4pIHsKLSAgICAgICAg
bV90ZXh0ID0gIlxyIjsKLSAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9ICJcciI7Ci0gICAgfQot
Ci0gICAgLy8gQXBwS2l0IHNldHMgdGV4dCB0byAiXHg3RiIgZm9yIGJhY2tzcGFjZSwgYnV0IHRo
ZSBjb3JyZWN0IEtleWJvYXJkRXZlbnQgY2hhcmFjdGVyIGNvZGUgaXMgOC4KLSAgICBpZiAobV93
aW5kb3dzVmlydHVhbEtleUNvZGUgPT0gVktfQkFDSykgewotICAgICAgICBtX3RleHQgPSAiXHg4
IjsKLSAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9ICJceDgiOwotICAgIH0KLQotICAgIC8vIEFs
d2F5cyB1c2UgOSBmb3IgVGFiIC0tIHdlIGRvbid0IHdhbnQgdG8gdXNlIEFwcEtpdCdzIGRpZmZl
cmVudCBjaGFyYWN0ZXIgZm9yIHNoaWZ0LXRhYi4KLSAgICBpZiAobV93aW5kb3dzVmlydHVhbEtl
eUNvZGUgPT0gVktfVEFCKSB7Ci0gICAgICAgIG1fdGV4dCA9ICJceDkiOwotICAgICAgICBtX3Vu
bW9kaWZpZWRUZXh0ID0gIlx4OSI7Ci0gICAgfQotfQotCiB2b2lkIFBsYXRmb3JtS2V5Ym9hcmRF
dmVudDo6ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFR5cGUgdHlwZSwgYm9vbCBiYWNrd2FyZENv
bXBhdGliaWxpdHlNb2RlKQogewogICAgIC8vIENhbiBvbmx5IGNoYW5nZSB0eXBlIGZyb20gS2V5
RG93biB0byBSYXdLZXlEb3duIG9yIENoYXIsIGFzIHdlIGxhY2sgaW5mb3JtYXRpb24gZm9yIG90
aGVyIGNvbnZlcnNpb25zLgpAQCAtMjU3LDYgKzc2LDYgQEAgdm9pZCBQbGF0Zm9ybUtleWJvYXJk
RXZlbnQ6OmdldEN1cnJlbnRNb2RpZmllclN0YXRlKGJvb2wmIHNoaWZ0S2V5LCBib29sJiBjdHJs
S2UKICAgICBtZXRhS2V5ID0gY3VycmVudE1vZGlmaWVycyAmIDo6Y21kS2V5OwogfQogCi19Cit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnkuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY4ZDIyOGRmMTNkNzU3NGQzMTY2NTM3YWY0ZTI5YThjN2JhYjJkNjgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZhY3Rv
cnkuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQbGF0Zm9ybUV2ZW50
RmFjdG9yeV9oCisjZGVmaW5lIFBsYXRmb3JtRXZlbnRGYWN0b3J5X2gKKworI2luY2x1ZGUgIlBs
YXRmb3JtTW91c2VFdmVudC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgorI2lu
Y2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgorI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5U
UykKKyNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVFdmVudC5oIgorI2VuZGlmCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgUGxhdGZvcm1FdmVudEZhY3RvcnkgeworcHVibGljOgorICAg
IHN0YXRpYyBQbGF0Zm9ybU1vdXNlRXZlbnQgY3JlYXRlUGxhdGZvcm1Nb3VzZUV2ZW50KE5TRXZl
bnQgKiwgTlNWaWV3ICp3aW5kb3dWaWV3KTsKKyAgICBzdGF0aWMgUGxhdGZvcm1XaGVlbEV2ZW50
IGNyZWF0ZVBsYXRmb3JtV2hlZWxFdmVudChOU0V2ZW50ICosIE5TVmlldyAqd2luZG93Vmlldyk7
CisgICAgc3RhdGljIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBjcmVhdGVQbGF0Zm9ybUtleWJvYXJk
RXZlbnQoTlNFdmVudCAqKTsKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCisgICAgc3RhdGlj
IFBsYXRmb3JtR2VzdHVyZUV2ZW50IGNyZWF0ZVBsYXRmb3JtR2VzdHVyZUV2ZW50KE5TRXZlbnQg
KiwgTlNWaWV3ICp3aW5kb3dWaWV3KTsKKyNlbmRpZgorfTsKKworLy8gRklYTUU6IFRoaXMgZG9l
c24ndCByZWFsbHkgYmVsb25nIGhlcmUuCisKKyNpZiBQTEFURk9STShNQUMpICYmIGRlZmluZWQo
X19PQkpDX18pCitJbnRQb2ludCBnbG9iYWxQb2ludChjb25zdCBOU1BvaW50JiB3aW5kb3dQb2lu
dCwgTlNXaW5kb3cgKik7CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gUGxhdGZvcm1FdmVudEZhY3RvcnlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2NzRmZDU5NzIw
ZDI4Nzc3ODkxNDAzYjRhMmI5YjRmNjAyYWU2ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnkubW0KQEAgLTAsMCArMSw1
MzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZv
cm1FdmVudEZhY3RvcnkuaCIKKworI2ltcG9ydCAiS2V5RXZlbnRDb2NvYS5oIgorI2ltcG9ydCAi
TG9nZ2luZy5oIgorI2ltcG9ydCAiUGxhdGZvcm1TY3JlZW4uaCIKKyNpbXBvcnQgIlNjcm9sbGJh
ci5oIgorI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgorI2ltcG9ydCAiV2luZG93
c0tleWJvYXJkQ29kZXMuaCIKKyNpbXBvcnQgPHd0Zi9BU0NJSUNUeXBlLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworSW50UG9pbnQgZ2xvYmFsUG9pbnQoY29uc3QgTlNQb2ludCYgd2luZG93
UG9pbnQsIE5TV2luZG93ICp3aW5kb3cpCit7CisgICAgcmV0dXJuIEludFBvaW50KGZsaXBTY3Jl
ZW5Qb2ludChbd2luZG93IGNvbnZlcnRCYXNlVG9TY3JlZW46d2luZG93UG9pbnRdLCBzY3JlZW5G
b3JXaW5kb3cod2luZG93KSkpOworfQorCitzdGF0aWMgSW50UG9pbnQgZ2xvYmFsUG9pbnRGb3JF
dmVudChOU0V2ZW50ICpldmVudCkKK3sKKyAgICBzd2l0Y2ggKFtldmVudCB0eXBlXSkgeworICAg
ICAgICBjYXNlIE5TTGVmdE1vdXNlRG93bjoKKyAgICAgICAgY2FzZSBOU0xlZnRNb3VzZURyYWdn
ZWQ6CisgICAgICAgIGNhc2UgTlNMZWZ0TW91c2VVcDoKKyAgICAgICAgY2FzZSBOU01vdXNlRW50
ZXJlZDoKKyAgICAgICAgY2FzZSBOU01vdXNlRXhpdGVkOgorICAgICAgICBjYXNlIE5TTW91c2VN
b3ZlZDoKKyAgICAgICAgY2FzZSBOU090aGVyTW91c2VEb3duOgorICAgICAgICBjYXNlIE5TT3Ro
ZXJNb3VzZURyYWdnZWQ6CisgICAgICAgIGNhc2UgTlNPdGhlck1vdXNlVXA6CisgICAgICAgIGNh
c2UgTlNSaWdodE1vdXNlRG93bjoKKyAgICAgICAgY2FzZSBOU1JpZ2h0TW91c2VEcmFnZ2VkOgor
ICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZVVwOgorICAgICAgICBjYXNlIE5TU2Nyb2xsV2hlZWw6
CisgICAgICAgICAgICByZXR1cm4gZ2xvYmFsUG9pbnQoW2V2ZW50IGxvY2F0aW9uSW5XaW5kb3dd
LCBbZXZlbnQgd2luZG93XSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4g
SW50UG9pbnQoKTsKKyAgICB9Cit9CisKK3N0YXRpYyBJbnRQb2ludCBwb2ludEZvckV2ZW50KE5T
RXZlbnQgKmV2ZW50LCBOU1ZpZXcgKndpbmRvd1ZpZXcpCit7CisgICAgc3dpdGNoIChbZXZlbnQg
dHlwZV0pIHsKKyAgICAgICAgY2FzZSBOU0xlZnRNb3VzZURvd246CisgICAgICAgIGNhc2UgTlNM
ZWZ0TW91c2VEcmFnZ2VkOgorICAgICAgICBjYXNlIE5TTGVmdE1vdXNlVXA6CisgICAgICAgIGNh
c2UgTlNNb3VzZUVudGVyZWQ6CisgICAgICAgIGNhc2UgTlNNb3VzZUV4aXRlZDoKKyAgICAgICAg
Y2FzZSBOU01vdXNlTW92ZWQ6CisgICAgICAgIGNhc2UgTlNPdGhlck1vdXNlRG93bjoKKyAgICAg
ICAgY2FzZSBOU090aGVyTW91c2VEcmFnZ2VkOgorICAgICAgICBjYXNlIE5TT3RoZXJNb3VzZVVw
OgorICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZURvd246CisgICAgICAgIGNhc2UgTlNSaWdodE1v
dXNlRHJhZ2dlZDoKKyAgICAgICAgY2FzZSBOU1JpZ2h0TW91c2VVcDoKKyAgICAgICAgY2FzZSBO
U1Njcm9sbFdoZWVsOiB7CisgICAgICAgICAgICAvLyBOb3RlOiBUaGlzIHdpbGwgaGF2ZSBpdHMg
b3JpZ2luIGF0IHRoZSBib3R0b20gbGVmdCBvZiB0aGUgd2luZG93IHVubGVzcyB3aW5kb3dWaWV3
IGlzIGZsaXBwZWQuCisgICAgICAgICAgICAvLyBJbiB0aG9zZSBjYXNlcywgdGhlIFkgY29vcmRp
bmF0ZSBnZXRzIGZsaXBwZWQgYnkgV2lkZ2V0Ojpjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3cu
CisgICAgICAgICAgICBOU1BvaW50IGxvY2F0aW9uID0gW2V2ZW50IGxvY2F0aW9uSW5XaW5kb3dd
OworICAgICAgICAgICAgaWYgKHdpbmRvd1ZpZXcpCisgICAgICAgICAgICAgICAgbG9jYXRpb24g
PSBbd2luZG93VmlldyBjb252ZXJ0UG9pbnQ6bG9jYXRpb24gZnJvbVZpZXc6bmlsXTsKKyAgICAg
ICAgICAgIHJldHVybiBJbnRQb2ludChsb2NhdGlvbik7CisgICAgICAgIH0KKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIHJldHVybiBJbnRQb2ludCgpOworICAgIH0KK30KKworc3RhdGlj
IE1vdXNlQnV0dG9uIG1vdXNlQnV0dG9uRm9yRXZlbnQoTlNFdmVudCAqZXZlbnQpCit7CisgICAg
c3dpdGNoIChbZXZlbnQgdHlwZV0pIHsKKyAgICAgICAgY2FzZSBOU0xlZnRNb3VzZURvd246Cisg
ICAgICAgIGNhc2UgTlNMZWZ0TW91c2VVcDoKKyAgICAgICAgY2FzZSBOU0xlZnRNb3VzZURyYWdn
ZWQ6CisgICAgICAgICAgICByZXR1cm4gTGVmdEJ1dHRvbjsKKyAgICAgICAgY2FzZSBOU1JpZ2h0
TW91c2VEb3duOgorICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZVVwOgorICAgICAgICBjYXNlIE5T
UmlnaHRNb3VzZURyYWdnZWQ6CisgICAgICAgICAgICByZXR1cm4gUmlnaHRCdXR0b247CisgICAg
ICAgIGNhc2UgTlNPdGhlck1vdXNlRG93bjoKKyAgICAgICAgY2FzZSBOU090aGVyTW91c2VVcDoK
KyAgICAgICAgY2FzZSBOU090aGVyTW91c2VEcmFnZ2VkOgorICAgICAgICAgICAgcmV0dXJuIE1p
ZGRsZUJ1dHRvbjsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBOb0J1dHRv
bjsKKyAgICB9Cit9CisKK3N0YXRpYyBQbGF0Zm9ybUV2ZW50OjpUeXBlIG1vdXNlRXZlbnRUeXBl
Rm9yRXZlbnQoTlNFdmVudCogZXZlbnQpCit7CisgICAgc3dpdGNoIChbZXZlbnQgdHlwZV0pIHsK
KyAgICAgICAgY2FzZSBOU0xlZnRNb3VzZURyYWdnZWQ6CisgICAgICAgIGNhc2UgTlNNb3VzZUVu
dGVyZWQ6CisgICAgICAgIGNhc2UgTlNNb3VzZUV4aXRlZDoKKyAgICAgICAgY2FzZSBOU01vdXNl
TW92ZWQ6CisgICAgICAgIGNhc2UgTlNPdGhlck1vdXNlRHJhZ2dlZDoKKyAgICAgICAgY2FzZSBO
U1JpZ2h0TW91c2VEcmFnZ2VkOgorICAgICAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6Ok1v
dXNlTW92ZWQ7CisgICAgICAgIGNhc2UgTlNMZWZ0TW91c2VEb3duOgorICAgICAgICBjYXNlIE5T
UmlnaHRNb3VzZURvd246CisgICAgICAgIGNhc2UgTlNPdGhlck1vdXNlRG93bjoKKyAgICAgICAg
ICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQ7CisgICAgICAgIGNhc2UgTlNM
ZWZ0TW91c2VVcDoKKyAgICAgICAgY2FzZSBOU1JpZ2h0TW91c2VVcDoKKyAgICAgICAgY2FzZSBO
U090aGVyTW91c2VVcDoKKyAgICAgICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpNb3VzZVJl
bGVhc2VkOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZl
bnQ6Ok1vdXNlTW92ZWQ7CisgICAgfQorfQorCitzdGF0aWMgaW50IGNsaWNrQ291bnRGb3JFdmVu
dChOU0V2ZW50ICpldmVudCkKK3sKKyAgICBzd2l0Y2ggKFtldmVudCB0eXBlXSkgeworICAgICAg
ICBjYXNlIE5TTGVmdE1vdXNlRG93bjoKKyAgICAgICAgY2FzZSBOU0xlZnRNb3VzZVVwOgorICAg
ICAgICBjYXNlIE5TTGVmdE1vdXNlRHJhZ2dlZDoKKyAgICAgICAgY2FzZSBOU1JpZ2h0TW91c2VE
b3duOgorICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZVVwOgorICAgICAgICBjYXNlIE5TUmlnaHRN
b3VzZURyYWdnZWQ6CisgICAgICAgIGNhc2UgTlNPdGhlck1vdXNlRG93bjoKKyAgICAgICAgY2Fz
ZSBOU090aGVyTW91c2VVcDoKKyAgICAgICAgY2FzZSBOU090aGVyTW91c2VEcmFnZ2VkOgorICAg
ICAgICAgICAgcmV0dXJuIFtldmVudCBjbGlja0NvdW50XTsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworc3RhdGljIFBsYXRmb3JtV2hlZWxFdmVu
dFBoYXNlIG1vbWVudHVtUGhhc2VGb3JFdmVudChOU0V2ZW50ICpldmVudCkKK3sKKyAgICB1aW50
MzJfdCBwaGFzZSA9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlTm9uZTsKKworI2lmICFkZWZpbmVk
KEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFS
RCkKKyAgICBpZiAoW2V2ZW50IG1vbWVudHVtUGhhc2VdICYgTlNFdmVudFBoYXNlQmVnYW4pCisg
ICAgICAgIHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQmVnYW47CisgICAgaWYgKFtl
dmVudCBtb21lbnR1bVBoYXNlXSAmIE5TRXZlbnRQaGFzZVN0YXRpb25hcnkpCisgICAgICAgIHBo
YXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlU3RhdGlvbmFyeTsKKyAgICBpZiAoW2V2ZW50
IG1vbWVudHVtUGhhc2VdICYgTlNFdmVudFBoYXNlQ2hhbmdlZCkKKyAgICAgICAgcGhhc2UgfD0g
UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VDaGFuZ2VkOworICAgIGlmIChbZXZlbnQgbW9tZW50dW1Q
aGFzZV0gJiBOU0V2ZW50UGhhc2VFbmRlZCkKKyAgICAgICAgcGhhc2UgfD0gUGxhdGZvcm1XaGVl
bEV2ZW50UGhhc2VFbmRlZDsKKyAgICBpZiAoW2V2ZW50IG1vbWVudHVtUGhhc2VdICYgTlNFdmVu
dFBoYXNlQ2FuY2VsbGVkKQorICAgICAgICBwaGFzZSB8PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFz
ZUNhbmNlbGxlZDsKKyNlbHNlCisgICAgc3dpdGNoICh3a0dldE5TRXZlbnRNb21lbnR1bVBoYXNl
KGV2ZW50KSkgeworICAgIGNhc2Ugd2tFdmVudFBoYXNlTm9uZToKKyAgICAgICAgcGhhc2UgPSBQ
bGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ugd2tF
dmVudFBoYXNlQmVnYW46CisgICAgICAgIHBoYXNlID0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VC
ZWdhbjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSB3a0V2ZW50UGhhc2VDaGFuZ2VkOgorICAg
ICAgICBwaGFzZSA9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQ2hhbmdlZDsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSB3a0V2ZW50UGhhc2VFbmRlZDoKKyAgICAgICAgcGhhc2UgPSBQbGF0Zm9y
bVdoZWVsRXZlbnRQaGFzZUVuZGVkOworICAgICAgICBicmVhazsKKyAgICB9CisjZW5kaWYKKwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZT4ocGhhc2UpOwor
fQorCitzdGF0aWMgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgcGhhc2VGb3JFdmVudChOU0V2ZW50
ICpldmVudCkKK3sKKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5l
ZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCisgICAgdWludDMyX3QgcGhhc2UgPSBQbGF0Zm9y
bVdoZWVsRXZlbnRQaGFzZU5vbmU7IAorICAgIGlmIChbZXZlbnQgcGhhc2VdICYgTlNFdmVudFBo
YXNlQmVnYW4pCisgICAgICAgIHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQmVnYW47
CisgICAgaWYgKFtldmVudCBwaGFzZV0gJiBOU0V2ZW50UGhhc2VTdGF0aW9uYXJ5KQorICAgICAg
ICBwaGFzZSB8PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZVN0YXRpb25hcnk7CisgICAgaWYgKFtl
dmVudCBwaGFzZV0gJiBOU0V2ZW50UGhhc2VDaGFuZ2VkKQorICAgICAgICBwaGFzZSB8PSBQbGF0
Zm9ybVdoZWVsRXZlbnRQaGFzZUNoYW5nZWQ7CisgICAgaWYgKFtldmVudCBwaGFzZV0gJiBOU0V2
ZW50UGhhc2VFbmRlZCkKKyAgICAgICAgcGhhc2UgfD0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VF
bmRlZDsKKyAgICBpZiAoW2V2ZW50IHBoYXNlXSAmIE5TRXZlbnRQaGFzZUNhbmNlbGxlZCkKKyAg
ICAgICAgcGhhc2UgfD0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VDYW5jZWxsZWQ7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlPihwaGFzZSk7CisjZWxzZQor
ICAgIFVOVVNFRF9QQVJBTShldmVudCk7CisgICAgcmV0dXJuIFBsYXRmb3JtV2hlZWxFdmVudFBo
YXNlTm9uZTsKKyNlbmRpZgorfQorCisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorc3RhdGlj
IFBsYXRmb3JtRXZlbnQ6OlR5cGUgZ2VzdHVyZUV2ZW50VHlwZUZvckV2ZW50KE5TRXZlbnQgKmV2
ZW50KQoreworICAgIHN3aXRjaCAoW2V2ZW50IHR5cGVdKSB7CisgICAgY2FzZSBOU0V2ZW50VHlw
ZUJlZ2luR2VzdHVyZToKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3Jv
bGxCZWdpbjsKKyAgICBjYXNlIE5TRXZlbnRUeXBlRW5kR2VzdHVyZToKKyAgICAgICAgcmV0dXJu
IFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpHZXN0
dXJlU2Nyb2xsRW5kOworICAgIH0KK30KKyNlbmRpZgorCitzdGF0aWMgaW5saW5lIFN0cmluZyB0
ZXh0RnJvbUV2ZW50KE5TRXZlbnQqIGV2ZW50KQoreworICAgIGlmIChbZXZlbnQgdHlwZV0gPT0g
TlNGbGFnc0NoYW5nZWQpCisgICAgICAgIHJldHVybiBTdHJpbmcoIiIpOworICAgIHJldHVybiBT
dHJpbmcoW2V2ZW50IGNoYXJhY3RlcnNdKTsKK30KKworc3RhdGljIGlubGluZSBTdHJpbmcgdW5t
b2RpZmllZFRleHRGcm9tRXZlbnQoTlNFdmVudCogZXZlbnQpCit7CisgICAgaWYgKFtldmVudCB0
eXBlXSA9PSBOU0ZsYWdzQ2hhbmdlZCkKKyAgICAgICAgcmV0dXJuIFN0cmluZygiIik7CisgICAg
cmV0dXJuIFN0cmluZyhbZXZlbnQgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzXSk7Cit9CisK
K3N0YXRpYyBTdHJpbmcga2V5SWRlbnRpZmllckZvcktleUV2ZW50KE5TRXZlbnQqIGV2ZW50KQor
eworICAgIGlmIChbZXZlbnQgdHlwZV0gPT0gTlNGbGFnc0NoYW5nZWQpIAorICAgICAgICBzd2l0
Y2ggKFtldmVudCBrZXlDb2RlXSkgeworICAgICAgICAgICAgY2FzZSA1NDogLy8gUmlnaHQgQ29t
bWFuZAorICAgICAgICAgICAgY2FzZSA1NTogLy8gTGVmdCBDb21tYW5kCisgICAgICAgICAgICAg
ICAgcmV0dXJuIFN0cmluZygiTWV0YSIpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
Y2FzZSA1NzogLy8gQ2Fwc2xvY2sKKyAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCJDYXBz
TG9jayIpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgY2FzZSA1NjogLy8gTGVmdCBT
aGlmdAorICAgICAgICAgICAgY2FzZSA2MDogLy8gUmlnaHQgU2hpZnQKKyAgICAgICAgICAgICAg
ICByZXR1cm4gU3RyaW5nKCJTaGlmdCIpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
Y2FzZSA1ODogLy8gTGVmdCBBbHQKKyAgICAgICAgICAgIGNhc2UgNjE6IC8vIFJpZ2h0IEFsdAor
ICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoIkFsdCIpOworICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgY2FzZSA1OTogLy8gTGVmdCBDdHJsCisgICAgICAgICAgICBjYXNlIDYyOiAv
LyBSaWdodCBDdHJsCisgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZygiQ29udHJvbCIpOwor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCIiKTsK
KyAgICAgICAgfQorICAgIAorICAgIE5TU3RyaW5nICpzID0gW2V2ZW50IGNoYXJhY3RlcnNJZ25v
cmluZ01vZGlmaWVyc107CisgICAgaWYgKFtzIGxlbmd0aF0gIT0gMSkgeworICAgICAgICBMT0co
RXZlbnRzLCAicmVjZWl2ZWQgYW4gdW5leHBlY3RlZCBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiBr
ZXkgZXZlbnQ6ICV1IiwgW3MgbGVuZ3RoXSk7CisgICAgICAgIHJldHVybiAiVW5pZGVudGlmaWVk
IjsKKyAgICB9CisgICAgcmV0dXJuIGtleUlkZW50aWZpZXJGb3JDaGFyQ29kZShbcyBjaGFyYWN0
ZXJBdEluZGV4OjBdKTsKK30KKworc3RhdGljIGJvb2wgaXNLZXlwYWRFdmVudChOU0V2ZW50KiBl
dmVudCkKK3sKKyAgICAvLyBDaGVjayB0aGF0IHRoaXMgaXMgdGhlIHR5cGUgb2YgZXZlbnQgdGhh
dCBoYXMgYSBrZXlDb2RlLgorICAgIHN3aXRjaCAoW2V2ZW50IHR5cGVdKSB7CisgICAgICAgIGNh
c2UgTlNLZXlEb3duOgorICAgICAgICBjYXNlIE5TS2V5VXA6CisgICAgICAgIGNhc2UgTlNGbGFn
c0NoYW5nZWQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoW2V2ZW50IG1vZGlmaWVyRmxhZ3Nd
ICYgTlNOdW1lcmljUGFkS2V5TWFzaykKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBzd2l0
Y2ggKFtldmVudCBrZXlDb2RlXSkgeworICAgICAgICBjYXNlIDcxOiAvLyBDbGVhcgorICAgICAg
ICBjYXNlIDgxOiAvLyA9CisgICAgICAgIGNhc2UgNzU6IC8vIC8KKyAgICAgICAgY2FzZSA2Nzog
Ly8gKgorICAgICAgICBjYXNlIDc4OiAvLyAtCisgICAgICAgIGNhc2UgNjk6IC8vICsKKyAgICAg
ICAgY2FzZSA3NjogLy8gRW50ZXIKKyAgICAgICAgY2FzZSA2NTogLy8gLgorICAgICAgICBjYXNl
IDgyOiAvLyAwCisgICAgICAgIGNhc2UgODM6IC8vIDEKKyAgICAgICAgY2FzZSA4NDogLy8gMgor
ICAgICAgICBjYXNlIDg1OiAvLyAzCisgICAgICAgIGNhc2UgODY6IC8vIDQKKyAgICAgICAgY2Fz
ZSA4NzogLy8gNQorICAgICAgICBjYXNlIDg4OiAvLyA2CisgICAgICAgIGNhc2UgODk6IC8vIDcK
KyAgICAgICAgY2FzZSA5MTogLy8gOAorICAgICAgICBjYXNlIDkyOiAvLyA5CisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgfQorICAgICAKKyAgICAgcmV0dXJuIGZhbHNlOworfQorCitz
dGF0aWMgaW50IHdpbmRvd3NLZXlDb2RlRm9yS2V5RXZlbnQoTlNFdmVudCogZXZlbnQpCit7Cisg
ICAgaW50IGNvZGUgPSAwOworICAgIC8vIFRoZXJlIGFyZSBzZXZlcmFsIGtpbmRzIG9mIGNoYXJh
Y3RlcnMgZm9yIHdoaWNoIHdlIHByb2R1Y2Uga2V5IGNvZGUgZnJvbSBjaGFyIGNvZGU6CisgICAg
Ly8gMS4gUm9tYW4gbGV0dGVycy4gV2luZG93cyBrZXlib2FyZCBsYXlvdXRzIGFmZmVjdCBib3Ro
IHZpcnR1YWwga2V5IGNvZGVzIGFuZCBjaGFyYWN0ZXIgY29kZXMgZm9yIHRoZXNlLAorICAgIC8v
ICAgIHNvIGUuZy4gJ0EnIGdldHMgdGhlIHNhbWUga2V5Q29kZSBvbiBRV0VSVFksIEFaRVJUWSBv
ciBEdm9yYWsgbGF5b3V0cy4KKyAgICAvLyAyLiBLZXlzIGZvciB3aGljaCB0aGVyZSBpcyBubyBr
bm93biBNYWMgdmlydHVhbCBrZXkgY29kZXMsIGxpa2UgUHJpbnRTY3JlZW4uCisgICAgLy8gMy4g
Q2VydGFpbiBwdW5jdHVhdGlvbiBrZXlzLiBPbiBXaW5kb3dzLCB0aGVzZSBhcmUgYWxzbyByZW1h
cHBlZCBkZXBlbmRpbmcgb24gY3VycmVudCBrZXlib2FyZCBsYXlvdXQsCisgICAgLy8gICAgYnV0
IHNlZSBjb21tZW50IGluIHdpbmRvd3NLZXlDb2RlRm9yQ2hhckNvZGUoKS4KKyAgICBpZiAoW2V2
ZW50IHR5cGVdID09IE5TS2V5RG93biB8fCBbZXZlbnQgdHlwZV0gPT0gTlNLZXlVcCkgeworICAg
ICAgICAvLyBDbWQgc3dpdGNoZXMgUm9tYW4gbGV0dGVycyBmb3IgRHZvcmFrLVFXRVJUWSBsYXlv
dXQsIHNvIHRyeSBtb2RpZmllZCBjaGFyYWN0ZXJzIGZpcnN0LgorICAgICAgICBOU1N0cmluZyog
cyA9IFtldmVudCBjaGFyYWN0ZXJzXTsKKyAgICAgICAgY29kZSA9IFtzIGxlbmd0aF0gPiAwID8g
d2luZG93c0tleUNvZGVGb3JDaGFyQ29kZShbcyBjaGFyYWN0ZXJBdEluZGV4OjBdKSA6IDA7Cisg
ICAgICAgIGlmIChjb2RlKQorICAgICAgICAgICAgcmV0dXJuIGNvZGU7CisKKyAgICAgICAgLy8g
Q3RybCtBIG9uIGFuIEFaRVJUWSBrZXlib2FyZCB3b3VsZCBnZXQgVktfUSBrZXlDb2RlIGlmIHdl
IHJlbGllZCBvbiAtW05TRXZlbnQga2V5Q29kZV0gYmVsb3cuCisgICAgICAgIHMgPSBbZXZlbnQg
Y2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzXTsKKyAgICAgICAgY29kZSA9IFtzIGxlbmd0aF0g
PiAwID8gd2luZG93c0tleUNvZGVGb3JDaGFyQ29kZShbcyBjaGFyYWN0ZXJBdEluZGV4OjBdKSA6
IDA7CisgICAgICAgIGlmIChjb2RlKQorICAgICAgICAgICAgcmV0dXJuIGNvZGU7CisgICAgfQor
CisgICAgLy8gTWFwIE1hYyB2aXJ0dWFsIGtleSBjb2RlIGRpcmVjdGx5IHRvIFdpbmRvd3Mgb25l
IGZvciBhbnkga2V5cyBub3QgaGFuZGxlZCBhYm92ZS4KKyAgICAvLyBFLmcuIHRoZSBrZXkgbmV4
dCB0byBDYXBzIExvY2sgaGFzIHRoZSBzYW1lIEV2ZW50LmtleUNvZGUgb24gVS5TLiBrZXlib2Fy
ZCAoJ0EnKSBhbmQgb24gUnVzc2lhbiBrZXlib2FyZCAoQ1lSSUxMSUMgTEVUVEVSIEVGKS4KKyAg
ICByZXR1cm4gd2luZG93c0tleUNvZGVGb3JLZXlDb2RlKFtldmVudCBrZXlDb2RlXSk7Cit9CisK
K3N0YXRpYyBpbmxpbmUgYm9vbCBpc0tleVVwRXZlbnQoTlNFdmVudCAqZXZlbnQpCit7CisgICAg
aWYgKFtldmVudCB0eXBlXSAhPSBOU0ZsYWdzQ2hhbmdlZCkKKyAgICAgICAgcmV0dXJuIFtldmVu
dCB0eXBlXSA9PSBOU0tleVVwOworICAgIC8vIEZJWE1FOiBUaGlzIGxvZ2ljIGZhaWxzIGlmIHRo
ZSB1c2VyIHByZXNzZXMgYm90aCBTaGlmdCBrZXlzIGF0IG9uY2UsIGZvciBleGFtcGxlOgorICAg
IC8vIHdlIHRyZWF0IHJlbGVhc2luZyBvbmUgb2YgdGhlbSBhcyBrZXlEb3duLgorICAgIHN3aXRj
aCAoW2V2ZW50IGtleUNvZGVdKSB7CisgICAgICAgIGNhc2UgNTQ6IC8vIFJpZ2h0IENvbW1hbmQK
KyAgICAgICAgY2FzZSA1NTogLy8gTGVmdCBDb21tYW5kCisgICAgICAgICAgICByZXR1cm4gKFtl
dmVudCBtb2RpZmllckZsYWdzXSAmIE5TQ29tbWFuZEtleU1hc2spID09IDA7CisgICAgICAgICAg
ICAKKyAgICAgICAgY2FzZSA1NzogLy8gQ2Fwc2xvY2sKKyAgICAgICAgICAgIHJldHVybiAoW2V2
ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNBbHBoYVNoaWZ0S2V5TWFzaykgPT0gMDsKKyAgICAgICAg
ICAgIAorICAgICAgICBjYXNlIDU2OiAvLyBMZWZ0IFNoaWZ0CisgICAgICAgIGNhc2UgNjA6IC8v
IFJpZ2h0IFNoaWZ0CisgICAgICAgICAgICByZXR1cm4gKFtldmVudCBtb2RpZmllckZsYWdzXSAm
IE5TU2hpZnRLZXlNYXNrKSA9PSAwOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgNTg6IC8v
IExlZnQgQWx0CisgICAgICAgIGNhc2UgNjE6IC8vIFJpZ2h0IEFsdAorICAgICAgICAgICAgcmV0
dXJuIChbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0FsdGVybmF0ZUtleU1hc2spID09IDA7Cisg
ICAgICAgICAgICAKKyAgICAgICAgY2FzZSA1OTogLy8gTGVmdCBDdHJsCisgICAgICAgIGNhc2Ug
NjI6IC8vIFJpZ2h0IEN0cmwKKyAgICAgICAgICAgIHJldHVybiAoW2V2ZW50IG1vZGlmaWVyRmxh
Z3NdICYgTlNDb250cm9sS2V5TWFzaykgPT0gMDsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNl
IDYzOiAvLyBGdW5jdGlvbgorICAgICAgICAgICAgcmV0dXJuIChbZXZlbnQgbW9kaWZpZXJGbGFn
c10gJiBOU0Z1bmN0aW9uS2V5TWFzaykgPT0gMDsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitzdGF0aWMgaW5saW5lIFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnNGb3JF
dmVudChOU0V2ZW50ICpldmVudCkKK3sKKyAgICB1bnNpZ25lZCBtb2RpZmllcnMgPSAwOworICAg
IGlmIChbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0FscGhhU2hpZnRLZXlNYXNrKQorICAgICAg
ICBtb2RpZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6Q2Fwc0xvY2tLZXk7CisgICAgaWYgKFtldmVu
dCBtb2RpZmllckZsYWdzXSAmIE5TU2hpZnRLZXlNYXNrKQorICAgICAgICBtb2RpZmllcnMgfD0g
UGxhdGZvcm1FdmVudDo6U2hpZnRLZXk7CisgICAgaWYgKFtldmVudCBtb2RpZmllckZsYWdzXSAm
IE5TQ29udHJvbEtleU1hc2spCisgICAgICAgIG1vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpD
dHJsS2V5OworICAgIGlmIChbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0FsdGVybmF0ZUtleU1h
c2spCisgICAgICAgIG1vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpBbHRLZXk7CisgICAgaWYg
KFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQ29tbWFuZEtleU1hc2spCisgICAgICAgIG1vZGlm
aWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpNZXRhS2V5OworICAgIHJldHVybiAoUGxhdGZvcm1FdmVu
dDo6TW9kaWZpZXJzKW1vZGlmaWVyczsKK30KKworCitjbGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnRC
dWlsZGVyIDogcHVibGljIFBsYXRmb3JtTW91c2VFdmVudCB7CitwdWJsaWM6CisgICAgUGxhdGZv
cm1Nb3VzZUV2ZW50QnVpbGRlcihOU0V2ZW50ICpldmVudCwgTlNWaWV3ICp3aW5kb3dWaWV3KQor
ICAgIHsKKyAgICAgICAgLy8gUGxhdGZvcm1FdmVudAorICAgICAgICBtX3R5cGUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IG1vdXNlRXZlbnRUeXBlRm9yRXZlbnQoZXZlbnQpOworICAg
ICAgICBtX21vZGlmaWVycyAgICAgICAgICAgICAgICAgICAgICAgICA9IG1vZGlmaWVyc0ZvckV2
ZW50KGV2ZW50KTsKKyAgICAgICAgbV90aW1lc3RhbXAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBbZXZlbnQgdGltZXN0YW1wXTsKKworICAgICAgICAvLyBQbGF0Zm9ybU1vdXNlRXZlbnQKKyAg
ICAgICAgbV9wb3NpdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgPSBwb2ludEZvckV2ZW50
KGV2ZW50LCB3aW5kb3dWaWV3KTsKKyAgICAgICAgbV9nbG9iYWxQb3NpdGlvbiAgICAgICAgICAg
ICAgICAgICAgPSBnbG9iYWxQb2ludEZvckV2ZW50KGV2ZW50KTsKKyAgICAgICAgbV9idXR0b24g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBtb3VzZUJ1dHRvbkZvckV2ZW50KGV2ZW50KTsK
KyAgICAgICAgbV9jbGlja0NvdW50ICAgICAgICAgICAgICAgICAgICAgICAgPSBjbGlja0NvdW50
Rm9yRXZlbnQoZXZlbnQpOworICAgICAgICAKKyAgICAgICAgLy8gTWFjIHNwZWNpZmljCisgICAg
ICAgIG1fbW9kaWZpZXJGbGFncyAgICAgICAgICAgICAgICAgICAgID0gW2V2ZW50IG1vZGlmaWVy
RmxhZ3NdOworICAgICAgICBtX2V2ZW50TnVtYmVyICAgICAgICAgICAgICAgICAgICAgICA9IFtl
dmVudCBldmVudE51bWJlcl07CisgICAgfQorfTsKKworUGxhdGZvcm1Nb3VzZUV2ZW50IFBsYXRm
b3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQbGF0Zm9ybU1vdXNlRXZlbnQoTlNFdmVudCAqZXZlbnQs
IE5TVmlldyAqd2luZG93VmlldykKK3sKKyAgICByZXR1cm4gUGxhdGZvcm1Nb3VzZUV2ZW50QnVp
bGRlcihldmVudCwgd2luZG93Vmlldyk7Cit9CisKKworY2xhc3MgUGxhdGZvcm1XaGVlbEV2ZW50
QnVpbGRlciA6IHB1YmxpYyBQbGF0Zm9ybVdoZWVsRXZlbnQgeworcHVibGljOgorICAgIFBsYXRm
b3JtV2hlZWxFdmVudEJ1aWxkZXIoTlNFdmVudCAqZXZlbnQsIE5TVmlldyAqd2luZG93VmlldykK
KyAgICB7CisgICAgICAgIC8vIFBsYXRmb3JtRXZlbnQKKyAgICAgICAgbV90eXBlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBQbGF0Zm9ybUV2ZW50OjpXaGVlbDsKKyAgICAgICAgbV9t
b2RpZmllcnMgICAgICAgICAgICAgICAgICAgICAgICAgPSBtb2RpZmllcnNGb3JFdmVudChldmVu
dCk7CisgICAgICAgIG1fdGltZXN0YW1wICAgICAgICAgICAgICAgICAgICAgICAgID0gW2V2ZW50
IHRpbWVzdGFtcF07CisKKyAgICAgICAgLy8gUGxhdGZvcm1XaGVlbEV2ZW50CisgICAgICAgIG1f
cG9zaXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgID0gcG9pbnRGb3JFdmVudChldmVudCwg
d2luZG93Vmlldyk7CisgICAgICAgIG1fZ2xvYmFsUG9zaXRpb24gICAgICAgICAgICAgICAgICAg
ID0gZ2xvYmFsUG9pbnRGb3JFdmVudChldmVudCk7CisgICAgICAgIG1fZ3JhbnVsYXJpdHkgICAg
ICAgICAgICAgICAgICAgICAgID0gU2Nyb2xsQnlQYWdlV2hlZWxFdmVudDsKKworICAgICAgICBC
T09MIGNvbnRpbnVvdXM7CisgICAgICAgIHdrR2V0V2hlZWxFdmVudERlbHRhcyhldmVudCwgJm1f
ZGVsdGFYLCAmbV9kZWx0YVksICZjb250aW51b3VzKTsKKyAgICAgICAgaWYgKGNvbnRpbnVvdXMp
IHsKKyAgICAgICAgICAgIG1fd2hlZWxUaWNrc1ggPSBtX2RlbHRhWCAvIHN0YXRpY19jYXN0PGZs
b2F0PihTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCkpOworICAgICAgICAgICAgbV93aGVl
bFRpY2tzWSA9IG1fZGVsdGFZIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KFNjcm9sbGJhcjo6cGl4ZWxz
UGVyTGluZVN0ZXAoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX3doZWVsVGlj
a3NYID0gbV9kZWx0YVg7CisgICAgICAgICAgICBtX3doZWVsVGlja3NZID0gbV9kZWx0YVk7Cisg
ICAgICAgICAgICBtX2RlbHRhWCAqPSBzdGF0aWNfY2FzdDxmbG9hdD4oU2Nyb2xsYmFyOjpwaXhl
bHNQZXJMaW5lU3RlcCgpKTsKKyAgICAgICAgICAgIG1fZGVsdGFZICo9IHN0YXRpY19jYXN0PGZs
b2F0PihTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCkpOworICAgICAgICB9CisKKyAgICAg
ICAgbV9waGFzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBwaGFzZUZvckV2ZW50KGV2
ZW50KTsKKyAgICAgICAgbV9tb21lbnR1bVBoYXNlICAgICAgICAgICAgICAgICAgICAgPSBtb21l
bnR1bVBoYXNlRm9yRXZlbnQoZXZlbnQpOworICAgICAgICBtX2hhc1ByZWNpc2VTY3JvbGxpbmdE
ZWx0YXMgICAgICAgICA9IGNvbnRpbnVvdXM7CisKKyNpZiBIQVZFKElOVkVSVEVEX1dIRUVMX0VW
RU5UUykKKyAgICAgICAgbV9kaXJlY3Rpb25JbnZlcnRlZEZyb21EZXZpY2UgICAgICAgPSBbZXZl
bnQgaXNEaXJlY3Rpb25JbnZlcnRlZEZyb21EZXZpY2VdOworI2Vsc2UKKyAgICAgICAgbV9kaXJl
Y3Rpb25JbnZlcnRlZEZyb21EZXZpY2UgICAgICAgPSBmYWxzZTsKKyNlbmRpZgorICAgIH0KK307
CisKK1BsYXRmb3JtV2hlZWxFdmVudCBQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRlUGxhdGZv
cm1XaGVlbEV2ZW50KE5TRXZlbnQgKmV2ZW50LCBOU1ZpZXcgKndpbmRvd1ZpZXcpCit7CisgICAg
cmV0dXJuIFBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXIoZXZlbnQsIHdpbmRvd1ZpZXcpOworfQor
CisKK2NsYXNzIFBsYXRmb3JtS2V5Ym9hcmRFdmVudEJ1aWxkZXIgOiBwdWJsaWMgUGxhdGZvcm1L
ZXlib2FyZEV2ZW50IHsKK3B1YmxpYzoKKyAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnRCdWlsZGVy
KE5TRXZlbnQgKmV2ZW50KQorICAgIHsKKyAgICAgICAgLy8gUGxhdGZvcm1FdmVudAorICAgICAg
ICBtX3R5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGlzS2V5VXBFdmVudChldmVu
dCkgPyBQbGF0Zm9ybUV2ZW50OjpLZXlVcCA6IFBsYXRmb3JtRXZlbnQ6OktleURvd247CisgICAg
ICAgIG1fbW9kaWZpZXJzICAgICAgICAgICAgICAgICAgICAgICAgID0gbW9kaWZpZXJzRm9yRXZl
bnQoZXZlbnQpOworICAgICAgICBtX3RpbWVzdGFtcCAgICAgICAgICAgICAgICAgICAgICAgICA9
IFtldmVudCB0aW1lc3RhbXBdOworCisgICAgICAgIC8vIFBsYXRmb3JtS2V5Ym9hcmRFdmVudAor
ICAgICAgICBtX3RleHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IHRleHRGcm9tRXZl
bnQoZXZlbnQpOworICAgICAgICBtX3VubW9kaWZpZWRUZXh0ICAgICAgICAgICAgICAgICAgICA9
IHVubW9kaWZpZWRUZXh0RnJvbUV2ZW50KGV2ZW50KTsKKyAgICAgICAgbV9rZXlJZGVudGlmaWVy
ICAgICAgICAgICAgICAgICAgICAgPSBrZXlJZGVudGlmaWVyRm9yS2V5RXZlbnQoZXZlbnQpOwor
ICAgICAgICBtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSAgICAgICAgICAgICA9IHdpbmRvd3NLZXlD
b2RlRm9yS2V5RXZlbnQoZXZlbnQpOworICAgICAgICBtX25hdGl2ZVZpcnR1YWxLZXlDb2RlICAg
ICAgICAgICAgICA9IFtldmVudCBrZXlDb2RlXTsKKyAgICAgICAgbV9tYWNDaGFyQ29kZSAgICAg
ICAgICAgICAgICAgICAgICAgPSB3a0dldE5TRXZlbnRLZXlDaGFyKGV2ZW50KTsKKyAgICAgICAg
bV9hdXRvUmVwZWF0ICAgICAgICAgICAgICAgICAgICAgICAgPSAoW2V2ZW50IHR5cGVdICE9IE5T
RmxhZ3NDaGFuZ2VkKSAmJiBbZXZlbnQgaXNBUmVwZWF0XTsKKyAgICAgICAgbV9pc0tleXBhZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBpc0tleXBhZEV2ZW50KGV2ZW50KTsKKyAgICAgICAg
bV9pc1N5c3RlbUtleSAgICAgICAgICAgICAgICAgICAgICAgPSBmYWxzZTsgLy8gU3lzdGVtS2V5
IGlzIGFsd2F5cyBmYWxzZSBvbiB0aGUgTWFjLgorCisgICAgICAgIC8vIEFsd2F5cyB1c2UgMTMg
Zm9yIEVudGVyL1JldHVybiAtLSB3ZSBkb24ndCB3YW50IHRvIHVzZSBBcHBLaXQncyBkaWZmZXJl
bnQgY2hhcmFjdGVyIGZvciBFbnRlci4KKyAgICAgICAgaWYgKG1fd2luZG93c1ZpcnR1YWxLZXlD
b2RlID09IFZLX1JFVFVSTikgeworICAgICAgICAgICAgbV90ZXh0ID0gIlxyIjsKKyAgICAgICAg
ICAgIG1fdW5tb2RpZmllZFRleHQgPSAiXHIiOworICAgICAgICB9CisKKyAgICAgICAgLy8gQXBw
S2l0IHNldHMgdGV4dCB0byAiXHg3RiIgZm9yIGJhY2tzcGFjZSwgYnV0IHRoZSBjb3JyZWN0IEtl
eWJvYXJkRXZlbnQgY2hhcmFjdGVyIGNvZGUgaXMgOC4KKyAgICAgICAgaWYgKG1fd2luZG93c1Zp
cnR1YWxLZXlDb2RlID09IFZLX0JBQ0spIHsKKyAgICAgICAgICAgIG1fdGV4dCA9ICJceDgiOwor
ICAgICAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9ICJceDgiOworICAgICAgICB9CisKKyAgICAg
ICAgLy8gQWx3YXlzIHVzZSA5IGZvciBUYWIgLS0gd2UgZG9uJ3Qgd2FudCB0byB1c2UgQXBwS2l0
J3MgZGlmZmVyZW50IGNoYXJhY3RlciBmb3Igc2hpZnQtdGFiLgorICAgICAgICBpZiAobV93aW5k
b3dzVmlydHVhbEtleUNvZGUgPT0gVktfVEFCKSB7CisgICAgICAgICAgICBtX3RleHQgPSAiXHg5
IjsKKyAgICAgICAgICAgIG1fdW5tb2RpZmllZFRleHQgPSAiXHg5IjsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIE1hYyBzcGVjaWZpYy4KKyAgICAgICAgbV9tYWNFdmVudCA9IGV2ZW50OworICAg
IH0KK307CisKK1BsYXRmb3JtS2V5Ym9hcmRFdmVudCBQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3Jl
YXRlUGxhdGZvcm1LZXlib2FyZEV2ZW50KE5TRXZlbnQgKmV2ZW50KQoreworICAgIHJldHVybiBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnRCdWlsZGVyKGV2ZW50KTsKK30KKworI2lmIEVOQUJMRShHRVNU
VVJFX0VWRU5UUykKK2NsYXNzIFBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlciA6IHB1YmxpYyBQ
bGF0Zm9ybUdlc3R1cmVFdmVudCB7CitwdWJsaWM6CisgICAgUGxhdGZvcm1HZXN0dXJlRXZlbnRC
dWlsZGVyKE5TRXZlbnQgKmV2ZW50LCBOU1ZpZXcgKndpbmRvd1ZpZXcpCisgICAgeworICAgICAg
ICAvLyBQbGF0Zm9ybUV2ZW50CisgICAgICAgIG1fdHlwZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gZ2VzdHVyZUV2ZW50VHlwZUZvckV2ZW50KGV2ZW50KTsKKyAgICAgICAgbV9tb2Rp
ZmllcnMgICAgICAgICAgICAgICAgICAgICAgICAgPSBtb2RpZmllcnNGb3JFdmVudChldmVudCk7
CisgICAgICAgIG1fdGltZXN0YW1wICAgICAgICAgICAgICAgICAgICAgICAgID0gW2V2ZW50IHRp
bWVzdGFtcF07CisKKyAgICAgICAgLy8gUGxhdGZvcm1HZXN0dXJlRXZlbnQKKyAgICAgICAgbV9w
b3NpdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgPSBwb2ludEZvckV2ZW50KGV2ZW50LCB3
aW5kb3dWaWV3KTsKKyAgICAgICAgbV9nbG9iYWxQb3NpdGlvbiAgICAgICAgICAgICAgICAgICAg
PSBnbG9iYWxQb2ludEZvckV2ZW50KGV2ZW50KTsKKyAgICAgICAgbV9kZWx0YVggICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAwOworICAgICAgICBtX2RlbHRhWSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IDA7CisgICAgfQorfTsKKworUGxhdGZvcm1HZXN0dXJlRXZlbnQgUGxhdGZv
cm1FdmVudEZhY3Rvcnk6OmNyZWF0ZVBsYXRmb3JtR2VzdHVyZUV2ZW50KE5TRXZlbnQgKmV2ZW50
LCBOU1ZpZXcgKndpbmRvd1ZpZXcpCit7CisgICAgcmV0dXJuIFBsYXRmb3JtR2VzdHVyZUV2ZW50
QnVpbGRlcihldmVudCwgd2luZG93Vmlldyk7Cit9CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3Jt
TW91c2VFdmVudE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybU1v
dXNlRXZlbnRNYWMubW0KaW5kZXggYzVmNTk4OTAxMmJmNDhhNmYwZjMxMmFlMzZmN2VjMzJlNDMz
Y2ZiYy4uNTc0OGU3YzY5NGE2NjJiM2JhMGI2NGQ4NzU4MGM3NjA0MjljN2JkZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtTW91c2VFdmVudE1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1Nb3VzZUV2ZW50TWFjLm1t
CkBAIC0xLDE2OSArMSwyIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2IEFwcGxl
IENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwogCi0jaW1wb3J0ICJj
b25maWcuaCIKLSNpbXBvcnQgIlBsYXRmb3JtTW91c2VFdmVudC5oIgotCi0jaW1wb3J0ICJQbGF0
Zm9ybVNjcmVlbi5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBNb3VzZUJ1dHRv
biBtb3VzZUJ1dHRvbkZvckV2ZW50KE5TRXZlbnQgKmV2ZW50KQotewotICAgIHN3aXRjaCAoW2V2
ZW50IHR5cGVdKSB7Ci0gICAgICAgIGNhc2UgTlNMZWZ0TW91c2VEb3duOgotICAgICAgICBjYXNl
IE5TTGVmdE1vdXNlVXA6Ci0gICAgICAgIGNhc2UgTlNMZWZ0TW91c2VEcmFnZ2VkOgotICAgICAg
ICAgICAgcmV0dXJuIExlZnRCdXR0b247Ci0gICAgICAgIGNhc2UgTlNSaWdodE1vdXNlRG93bjoK
LSAgICAgICAgY2FzZSBOU1JpZ2h0TW91c2VVcDoKLSAgICAgICAgY2FzZSBOU1JpZ2h0TW91c2VE
cmFnZ2VkOgotICAgICAgICAgICAgcmV0dXJuIFJpZ2h0QnV0dG9uOwotICAgICAgICBjYXNlIE5T
T3RoZXJNb3VzZURvd246Ci0gICAgICAgIGNhc2UgTlNPdGhlck1vdXNlVXA6Ci0gICAgICAgIGNh
c2UgTlNPdGhlck1vdXNlRHJhZ2dlZDoKLSAgICAgICAgICAgIHJldHVybiBNaWRkbGVCdXR0b247
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gTm9CdXR0b247Ci0gICAgfQot
fQotCi1zdGF0aWMgaW50IGNsaWNrQ291bnRGb3JFdmVudChOU0V2ZW50ICpldmVudCkKLXsKLSAg
ICBzd2l0Y2ggKFtldmVudCB0eXBlXSkgewotICAgICAgICBjYXNlIE5TTGVmdE1vdXNlRG93bjoK
LSAgICAgICAgY2FzZSBOU0xlZnRNb3VzZVVwOgotICAgICAgICBjYXNlIE5TTGVmdE1vdXNlRHJh
Z2dlZDoKLSAgICAgICAgY2FzZSBOU1JpZ2h0TW91c2VEb3duOgotICAgICAgICBjYXNlIE5TUmln
aHRNb3VzZVVwOgotICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZURyYWdnZWQ6Ci0gICAgICAgIGNh
c2UgTlNPdGhlck1vdXNlRG93bjoKLSAgICAgICAgY2FzZSBOU090aGVyTW91c2VVcDoKLSAgICAg
ICAgY2FzZSBOU090aGVyTW91c2VEcmFnZ2VkOgotICAgICAgICAgICAgcmV0dXJuIFtldmVudCBj
bGlja0NvdW50XTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiAwOwotICAg
IH0KLX0KLQotSW50UG9pbnQgZ2xvYmFsUG9pbnQoY29uc3QgTlNQb2ludCYgd2luZG93UG9pbnQs
IE5TV2luZG93ICp3aW5kb3cpCi17Ci0gICAgcmV0dXJuIEludFBvaW50KGZsaXBTY3JlZW5Qb2lu
dChbd2luZG93IGNvbnZlcnRCYXNlVG9TY3JlZW46d2luZG93UG9pbnRdLCBzY3JlZW5Gb3JXaW5k
b3cod2luZG93KSkpOwotfQotCi1JbnRQb2ludCBwb2ludEZvckV2ZW50KE5TRXZlbnQgKmV2ZW50
LCBOU1ZpZXcgKndpbmRvd1ZpZXcpCi17Ci0gICAgc3dpdGNoIChbZXZlbnQgdHlwZV0pIHsKLSAg
ICAgICAgY2FzZSBOU0xlZnRNb3VzZURvd246Ci0gICAgICAgIGNhc2UgTlNMZWZ0TW91c2VVcDoK
LSAgICAgICAgY2FzZSBOU0xlZnRNb3VzZURyYWdnZWQ6Ci0gICAgICAgIGNhc2UgTlNSaWdodE1v
dXNlRG93bjoKLSAgICAgICAgY2FzZSBOU1JpZ2h0TW91c2VVcDoKLSAgICAgICAgY2FzZSBOU1Jp
Z2h0TW91c2VEcmFnZ2VkOgotICAgICAgICBjYXNlIE5TT3RoZXJNb3VzZURvd246Ci0gICAgICAg
IGNhc2UgTlNPdGhlck1vdXNlVXA6Ci0gICAgICAgIGNhc2UgTlNPdGhlck1vdXNlRHJhZ2dlZDoK
LSAgICAgICAgY2FzZSBOU01vdXNlTW92ZWQ6Ci0gICAgICAgIGNhc2UgTlNTY3JvbGxXaGVlbDog
ewotICAgICAgICAgICAgLy8gTm90ZTogVGhpcyB3aWxsIGhhdmUgaXRzIG9yaWdpbiBhdCB0aGUg
Ym90dG9tIGxlZnQgb2YgdGhlIHdpbmRvdyB1bmxlc3Mgd2luZG93VmlldyBpcyBmbGlwcGVkLgot
ICAgICAgICAgICAgLy8gSW4gdGhvc2UgY2FzZXMsIHRoZSBZIGNvb3JkaW5hdGUgZ2V0cyBmbGlw
cGVkIGJ5IFdpZGdldDo6Y29udmVydEZyb21Db250YWluaW5nV2luZG93LgotICAgICAgICAgICAg
TlNQb2ludCBsb2NhdGlvbiA9IFtldmVudCBsb2NhdGlvbkluV2luZG93XTsKLSAgICAgICAgICAg
IGlmICh3aW5kb3dWaWV3KQotICAgICAgICAgICAgICAgIGxvY2F0aW9uID0gW3dpbmRvd1ZpZXcg
Y29udmVydFBvaW50OmxvY2F0aW9uIGZyb21WaWV3Om5pbF07Ci0gICAgICAgICAgICByZXR1cm4g
SW50UG9pbnQobG9jYXRpb24pOwotICAgICAgICB9Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICByZXR1cm4gSW50UG9pbnQoKTsKLSAgICB9Ci19Ci0KLUludFBvaW50IGdsb2JhbFBvaW50
Rm9yRXZlbnQoTlNFdmVudCAqZXZlbnQpCi17Ci0gICAgc3dpdGNoIChbZXZlbnQgdHlwZV0pIHsK
LSAgICAgICAgY2FzZSBOU0xlZnRNb3VzZURvd246Ci0gICAgICAgIGNhc2UgTlNMZWZ0TW91c2VV
cDoKLSAgICAgICAgY2FzZSBOU0xlZnRNb3VzZURyYWdnZWQ6Ci0gICAgICAgIGNhc2UgTlNSaWdo
dE1vdXNlRG93bjoKLSAgICAgICAgY2FzZSBOU1JpZ2h0TW91c2VVcDoKLSAgICAgICAgY2FzZSBO
U1JpZ2h0TW91c2VEcmFnZ2VkOgotICAgICAgICBjYXNlIE5TT3RoZXJNb3VzZURvd246Ci0gICAg
ICAgIGNhc2UgTlNPdGhlck1vdXNlVXA6Ci0gICAgICAgIGNhc2UgTlNPdGhlck1vdXNlRHJhZ2dl
ZDoKLSAgICAgICAgY2FzZSBOU01vdXNlTW92ZWQ6Ci0gICAgICAgIGNhc2UgTlNTY3JvbGxXaGVl
bDoKLSAgICAgICAgICAgIHJldHVybiBnbG9iYWxQb2ludChbZXZlbnQgbG9jYXRpb25JbldpbmRv
d10sIFtldmVudCB3aW5kb3ddKTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVy
biBJbnRQb2ludCgpOwotICAgIH0KLX0KLQotc3RhdGljIFBsYXRmb3JtRXZlbnQ6OlR5cGUgbW91
c2VFdmVudEZvck5TRXZlbnQoTlNFdmVudCogZXZlbnQpIAotewotICAgIHN3aXRjaCAoW2V2ZW50
IHR5cGVdKSB7Ci0gICAgY2FzZSBOU1Njcm9sbFdoZWVsOgotICAgICAgICByZXR1cm4gUGxhdGZv
cm1FdmVudDo6TW91c2VTY3JvbGw7Ci0gICAgY2FzZSBOU0xlZnRNb3VzZURyYWdnZWQ6Ci0gICAg
Y2FzZSBOU1JpZ2h0TW91c2VEcmFnZ2VkOgotICAgIGNhc2UgTlNPdGhlck1vdXNlRHJhZ2dlZDoK
LSAgICBjYXNlIE5TTW91c2VNb3ZlZDoKLSAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6Ok1v
dXNlTW92ZWQ7Ci0gICAgY2FzZSBOU0xlZnRNb3VzZURvd246Ci0gICAgY2FzZSBOU1JpZ2h0TW91
c2VEb3duOgotICAgIGNhc2UgTlNPdGhlck1vdXNlRG93bjoKLSAgICAgICAgcmV0dXJuIFBsYXRm
b3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZDsKLSAgICBjYXNlIE5TTGVmdE1vdXNlVXA6Ci0gICAgY2Fz
ZSBOU1JpZ2h0TW91c2VVcDoKLSAgICBjYXNlIE5TT3RoZXJNb3VzZVVwOgotICAgICAgICByZXR1
cm4gUGxhdGZvcm1FdmVudDo6TW91c2VSZWxlYXNlZDsKLSAgICBkZWZhdWx0OgotICAgICAgICBy
ZXR1cm4gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZDsKLSAgICB9Ci19Ci0KLVBsYXRmb3JtTW91
c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KE5TRXZlbnQqIGV2ZW50LCBOU1ZpZXcgKndpbmRv
d1ZpZXcpCi0gICAgOiBQbGF0Zm9ybUV2ZW50KG1vdXNlRXZlbnRGb3JOU0V2ZW50KGV2ZW50KSwg
W2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNTaGlmdEtleU1hc2ssIFtldmVudCBtb2RpZmllckZs
YWdzXSAmIE5TQ29udHJvbEtleU1hc2ssIFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQWx0ZXJu
YXRlS2V5TWFzaywgW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb21tYW5kS2V5TWFzaywgW2V2
ZW50IHRpbWVzdGFtcF0pCi0gICAgLCBtX3Bvc2l0aW9uKHBvaW50Rm9yRXZlbnQoZXZlbnQsIHdp
bmRvd1ZpZXcpKQotICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb2ludEZvckV2ZW50KGV2
ZW50KSkKLSAgICAsIG1fYnV0dG9uKG1vdXNlQnV0dG9uRm9yRXZlbnQoZXZlbnQpKQotICAgICwg
bV9jbGlja0NvdW50KGNsaWNrQ291bnRGb3JFdmVudChldmVudCkpCi0gICAgLCBtX21vZGlmaWVy
RmxhZ3MoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdKQotICAgICwgbV9ldmVudE51bWJlcihbZXZlbnQg
ZXZlbnROdW1iZXJdKQotewotfQotCi1QbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VF
dmVudChpbnQgeCwgaW50IHksIGludCBnbG9iYWxYLCBpbnQgZ2xvYmFsWSwgTW91c2VCdXR0b24g
YnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpUeXBlIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgaW50
IGNsaWNrQ291bnQsIGJvb2wgc2hpZnRLZXksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJv
b2wgbWV0YUtleSwgZG91YmxlIHRpbWVzdGFtcCwKLSAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBtb2RpZmllckZsYWdzLCBpbnQgZXZlbnROdW1iZXIpCi0gICAgOiBQbGF0Zm9ybUV2ZW50KHR5
cGUsIHNoaWZ0S2V5LCBjdHJsS2V5LCBhbHRLZXksIG1ldGFLZXksIHRpbWVzdGFtcCkKLSAgICAs
IG1fcG9zaXRpb24oSW50UG9pbnQoeCwgeSkpCi0gICAgLCBtX2dsb2JhbFBvc2l0aW9uKEludFBv
aW50KGdsb2JhbFgsIGdsb2JhbFkpKQotICAgICwgbV9idXR0b24oYnV0dG9uKQotICAgICwgbV9j
bGlja0NvdW50KGNsaWNrQ291bnQpCi0gICAgLCBtX21vZGlmaWVyRmxhZ3MobW9kaWZpZXJGbGFn
cykKLSAgICAsIG1fZXZlbnROdW1iZXIoZXZlbnROdW1iZXIpCi17Ci19Ci0KLX0KKy8vIFJFTU9W
RSBUSElTIEZJTEUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJD
b3JlU3lzdGVtSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29y
ZVN5c3RlbUludGVyZmFjZS5oCmluZGV4IDE3NjRiNzlmNjkyNTBiZGQ5ZmEwZDAyZjYwODA4NDRj
NTg1YjZmNzUuLmJlYjM2Y2EwNmRkMzhiNTA3YTA2MGM4MDRmZWNmM2JlMzMwY2FhMGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZh
Y2UuaApAQCAtMTcyLDYgKzE3Miw3IEBAIGV4dGVybiBkb3VibGUgKCp3a0dldE5TVVJMUmVzcG9u
c2VDYWxjdWxhdGVkRXhwaXJhdGlvbikoTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UpCiBleHRlcm4g
TlNEYXRlICooKndrR2V0TlNVUkxSZXNwb25zZUxhc3RNb2RpZmllZERhdGUpKE5TVVJMUmVzcG9u
c2UgKnJlc3BvbnNlKTsKIGV4dGVybiBCT09MICgqd2tHZXROU1VSTFJlc3BvbnNlTXVzdFJldmFs
aWRhdGUpKE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlKTsKIGV4dGVybiB2b2lkICgqd2tHZXRXaGVl
bEV2ZW50RGVsdGFzKShOU0V2ZW50KiwgZmxvYXQqIGRlbHRhWCwgZmxvYXQqIGRlbHRhWSwgQk9P
TCogY29udGludW91cyk7CitleHRlcm4gVUludDggKCp3a0dldE5TRXZlbnRLZXlDaGFyKShOU0V2
ZW50ICopOwogZXh0ZXJuIEJPT0wgKCp3a0hpdFRlc3RNZWRpYVVJUGFydCkoaW50IHBhcnQsIGlu
dCB0aGVtZVN0eWxlLCBDR1JlY3QgYm91bmRzLCBDR1BvaW50IHBvaW50KTsKIGV4dGVybiB2b2lk
ICgqd2tNZWFzdXJlTWVkaWFVSVBhcnQpKGludCBwYXJ0LCBpbnQgdGhlbWVTdHlsZSwgQ0dSZWN0
ICpib3VuZHMsIENHU2l6ZSAqbmF0dXJhbFNpemUpOwogZXh0ZXJuIE5TVmlldyAqKCp3a0NyZWF0
ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldykodm9pZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCmluZGV4IGNkYTA5NWJlZDQ3
ZmZjY2ExNGYxYjEyNWVlM2JlNDkwNWYxOGM2YWMuLmI0Y2E1NDA3ZGQ1YTA1YmJjZDU4MDJkZGQ3
YWUxMTAzZjMwYzA1NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9X
ZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCkBAIC02MCw2ICs2MCw3IEBAIE5TVGltZUludGVy
dmFsICgqd2tHZXROU1VSTFJlc3BvbnNlQ2FsY3VsYXRlZEV4cGlyYXRpb24pKE5TVVJMUmVzcG9u
c2UgKnJlc3BvbnNlCiBOU0RhdGUgKigqd2tHZXROU1VSTFJlc3BvbnNlTGFzdE1vZGlmaWVkRGF0
ZSkoTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UpOwogQk9PTCAoKndrR2V0TlNVUkxSZXNwb25zZU11
c3RSZXZhbGlkYXRlKShOU1VSTFJlc3BvbnNlICpyZXNwb25zZSk7CiB2b2lkICgqd2tHZXRXaGVl
bEV2ZW50RGVsdGFzKShOU0V2ZW50KiwgZmxvYXQqIGRlbHRhWCwgZmxvYXQqIGRlbHRhWSwgQk9P
TCogY29udGludW91cyk7CitVSW50OCAoKndrR2V0TlNFdmVudEtleUNoYXIpKE5TRXZlbnQgKik7
CiB2b2lkICgqd2tQb3B1cE1lbnUpKE5TTWVudSosIE5TUG9pbnQgbG9jYXRpb24sIGZsb2F0IHdp
ZHRoLCBOU1ZpZXcqLCBpbnQgc2VsZWN0ZWRJdGVtLCBOU0ZvbnQqKTsKIHVuc2lnbmVkICgqd2tR
VEluY2x1ZGVPbmx5TW9kZXJuTWVkaWFGaWxlVHlwZXMpKHZvaWQpOwogaW50ICgqd2tRVE1vdmll
RGF0YVJhdGUpKFFUTW92aWUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9XaGVlbEV2ZW50TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1doZWVs
RXZlbnRNYWMubW0KaW5kZXggODljOWZiNzdlOTkzOWE5MTQwOTI4ZjY3MDcxZmRiNjFmNjU0Y2Qy
OC4uNTc0OGU3YzY5NGE2NjJiM2JhMGI2NGQ4NzU4MGM3NjA0MjljN2JkZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1doZWVsRXZlbnRNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1doZWVsRXZlbnRNYWMubW0KQEAgLTEsMTIxICsxLDIgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYsIDIwMTAsIDIwMTEgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCiAKLSNpbXBvcnQgImNvbmZpZy5o
IgotI2ltcG9ydCAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCi0KLSNpbXBvcnQgIlBsYXRmb3JtTW91
c2VFdmVudC5oIgotI2ltcG9ydCAiU2Nyb2xsYmFyLmgiCi0jaW1wb3J0ICJXZWJDb3JlU3lzdGVt
SW50ZXJmYWNlLmgiCi0jaW1wb3J0IDx3dGYvVW51c2VkUGFyYW0uaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1zdGF0aWMgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgbW9tZW50dW1QaGFzZUZv
ckV2ZW50KE5TRXZlbnQgKmV2ZW50KQotewotICAgIHVpbnQzMl90IHBoYXNlID0gUGxhdGZvcm1X
aGVlbEV2ZW50UGhhc2VOb25lOwotCi0jaWYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkg
JiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQotICAgIGlmIChbZXZlbnQgbW9t
ZW50dW1QaGFzZV0gJiBOU0V2ZW50UGhhc2VCZWdhbikKLSAgICAgICAgcGhhc2UgfD0gUGxhdGZv
cm1XaGVlbEV2ZW50UGhhc2VCZWdhbjsKLSAgICBpZiAoW2V2ZW50IG1vbWVudHVtUGhhc2VdICYg
TlNFdmVudFBoYXNlU3RhdGlvbmFyeSkKLSAgICAgICAgcGhhc2UgfD0gUGxhdGZvcm1XaGVlbEV2
ZW50UGhhc2VTdGF0aW9uYXJ5OwotICAgIGlmIChbZXZlbnQgbW9tZW50dW1QaGFzZV0gJiBOU0V2
ZW50UGhhc2VDaGFuZ2VkKQotICAgICAgICBwaGFzZSB8PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFz
ZUNoYW5nZWQ7Ci0gICAgaWYgKFtldmVudCBtb21lbnR1bVBoYXNlXSAmIE5TRXZlbnRQaGFzZUVu
ZGVkKQotICAgICAgICBwaGFzZSB8PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUVuZGVkOwotICAg
IGlmIChbZXZlbnQgbW9tZW50dW1QaGFzZV0gJiBOU0V2ZW50UGhhc2VDYW5jZWxsZWQpCi0gICAg
ICAgIHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQ2FuY2VsbGVkOwotI2Vsc2UKLSAg
ICBzd2l0Y2ggKHdrR2V0TlNFdmVudE1vbWVudHVtUGhhc2UoZXZlbnQpKSB7Ci0gICAgY2FzZSB3
a0V2ZW50UGhhc2VOb25lOgotICAgICAgICBwaGFzZSA9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNl
Tm9uZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSB3a0V2ZW50UGhhc2VCZWdhbjoKLSAgICAg
ICAgcGhhc2UgPSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUJlZ2FuOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIHdrRXZlbnRQaGFzZUNoYW5nZWQ6Ci0gICAgICAgIHBoYXNlID0gUGxhdGZvcm1X
aGVlbEV2ZW50UGhhc2VDaGFuZ2VkOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIHdrRXZlbnRQ
aGFzZUVuZGVkOgotICAgICAgICBwaGFzZSA9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlRW5kZWQ7
Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSNlbmRpZgotCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlPihwaGFzZSk7Ci19Ci0KLXN0YXRpYyBQbGF0Zm9ybVdo
ZWVsRXZlbnRQaGFzZSBwaGFzZUZvckV2ZW50KE5TRXZlbnQgKmV2ZW50KQotewotI2lmICFkZWZp
bmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVP
UEFSRCkKLSAgICB1aW50MzJfdCBwaGFzZSA9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlTm9uZTsg
Ci0gICAgaWYgKFtldmVudCBwaGFzZV0gJiBOU0V2ZW50UGhhc2VCZWdhbikKLSAgICAgICAgcGhh
c2UgfD0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VCZWdhbjsKLSAgICBpZiAoW2V2ZW50IHBoYXNl
XSAmIE5TRXZlbnRQaGFzZVN0YXRpb25hcnkpCi0gICAgICAgIHBoYXNlIHw9IFBsYXRmb3JtV2hl
ZWxFdmVudFBoYXNlU3RhdGlvbmFyeTsKLSAgICBpZiAoW2V2ZW50IHBoYXNlXSAmIE5TRXZlbnRQ
aGFzZUNoYW5nZWQpCi0gICAgICAgIHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQ2hh
bmdlZDsKLSAgICBpZiAoW2V2ZW50IHBoYXNlXSAmIE5TRXZlbnRQaGFzZUVuZGVkKQotICAgICAg
ICBwaGFzZSB8PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUVuZGVkOwotICAgIGlmIChbZXZlbnQg
cGhhc2VdICYgTlNFdmVudFBoYXNlQ2FuY2VsbGVkKQotICAgICAgICBwaGFzZSB8PSBQbGF0Zm9y
bVdoZWVsRXZlbnRQaGFzZUNhbmNlbGxlZDsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UGxhdGZv
cm1XaGVlbEV2ZW50UGhhc2U+KHBoYXNlKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGV2ZW50
KTsKLSAgICByZXR1cm4gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VOb25lOwotI2VuZGlmCi19Ci0K
LVBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KE5TRXZlbnQqIGV2ZW50LCBO
U1ZpZXcgKndpbmRvd1ZpZXcpCi0gICAgOiBQbGF0Zm9ybUV2ZW50KFBsYXRmb3JtRXZlbnQ6Oldo
ZWVsLCBbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU1NoaWZ0S2V5TWFzaywgW2V2ZW50IG1vZGlm
aWVyRmxhZ3NdICYgTlNDb250cm9sS2V5TWFzaywgW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNB
bHRlcm5hdGVLZXlNYXNrLCBbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0NvbW1hbmRLZXlNYXNr
LCBbZXZlbnQgdGltZXN0YW1wXSkKLSAgICAsIG1fcG9zaXRpb24ocG9pbnRGb3JFdmVudChldmVu
dCwgd2luZG93VmlldykpCi0gICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvaW50Rm9yRXZl
bnQoZXZlbnQpKQotICAgICwgbV9ncmFudWxhcml0eShTY3JvbGxCeVBpeGVsV2hlZWxFdmVudCkK
LSAgICAsIG1fcGhhc2UocGhhc2VGb3JFdmVudChldmVudCkpCi0gICAgLCBtX21vbWVudHVtUGhh
c2UobW9tZW50dW1QaGFzZUZvckV2ZW50KGV2ZW50KSkKLXsKLSAgICBCT09MIGNvbnRpbnVvdXM7
Ci0gICAgd2tHZXRXaGVlbEV2ZW50RGVsdGFzKGV2ZW50LCAmbV9kZWx0YVgsICZtX2RlbHRhWSwg
JmNvbnRpbnVvdXMpOwotICAgIGlmIChjb250aW51b3VzKSB7Ci0gICAgICAgIG1fd2hlZWxUaWNr
c1ggPSBtX2RlbHRhWCAvIHN0YXRpY19jYXN0PGZsb2F0PihTY3JvbGxiYXI6OnBpeGVsc1Blckxp
bmVTdGVwKCkpOwotICAgICAgICBtX3doZWVsVGlja3NZID0gbV9kZWx0YVkgLyBzdGF0aWNfY2Fz
dDxmbG9hdD4oU2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpKTsKLSAgICAgICAgbV9oYXNQ
cmVjaXNlU2Nyb2xsaW5nRGVsdGFzID0gdHJ1ZTsKLSAgICB9IGVsc2UgewotICAgICAgICBtX3do
ZWVsVGlja3NYID0gbV9kZWx0YVg7Ci0gICAgICAgIG1fd2hlZWxUaWNrc1kgPSBtX2RlbHRhWTsK
LSAgICAgICAgbV9kZWx0YVggKj0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KFNjcm9sbGJhcjo6cGl4ZWxz
UGVyTGluZVN0ZXAoKSk7Ci0gICAgICAgIG1fZGVsdGFZICo9IHN0YXRpY19jYXN0PGZsb2F0PihT
Y3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCkpOwotICAgICAgICBtX2hhc1ByZWNpc2VTY3Jv
bGxpbmdEZWx0YXMgPSBmYWxzZTsKLSAgICB9Ci0KLSNpZiBIQVZFKElOVkVSVEVEX1dIRUVMX0VW
RU5UUykKLSAgICBtX2RpcmVjdGlvbkludmVydGVkRnJvbURldmljZSA9IFtldmVudCBpc0RpcmVj
dGlvbkludmVydGVkRnJvbURldmljZV07Ci0jZWxzZQotICAgIG1fZGlyZWN0aW9uSW52ZXJ0ZWRG
cm9tRGV2aWNlID0gZmFsc2U7Ci0jZW5kaWYKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
Ly8gUkVNT1ZFIFRISVMgRklMRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCmluZGV4IDEzMTAxMjRkMjcyOWZiNjljNzVm
NjNiMGY2Y2I1MDM0MzBmZGIxYTMuLmU5M2QwYzYxZWRmY2QzZThjOGI1NmJhY2MyZDA5OTMwZjAy
MTEyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5
c3RlbUludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJTeXN0ZW1JbnRlcmZhY2UubW0KQEAgLTY3LDYgKzY3LDcgQEAgdm9pZCBJbml0V2ViQ29yZVN5
c3RlbUludGVyZmFjZSh2b2lkKQogICAgIElOSVQoU2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdl
U3RyaW5nKTsKICAgICBJTklUKEdldFByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKTsKICAg
ICBJTklUKEdldFdoZWVsRXZlbnREZWx0YXMpOworICAgIElOSVQoR2V0TlNFdmVudEtleUNoYXIp
OwogICAgIElOSVQoSGl0VGVzdE1lZGlhVUlQYXJ0KTsKICAgICBJTklUKEluaXRpYWxpemVNYXhp
bXVtSFRUUENvbm5lY3Rpb25Db3VudFBlckhvc3QpOwogICAgIElOSVQoTWVhc3VyZU1lZGlhVUlQ
YXJ0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IDYxYjhlODg2ZTE0
NjgzNmViZDQ3MzQ4MGRhOWNiOTQ5MzIwN2Y3NTAuLmE1YzM0MmNhM2E0NjcxNmU5M2VhZTQzZWE1
YTBiNjdlNzYyY2FkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAt
NzYsNiArNzYsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9IaXRUZXN0UmVzdWx0Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0xlZ2FjeVdlYkFyY2hpdmUuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZS5oPgor
I2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUV2ZW50RmFjdG9yeS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9QbHVnaW5EYXRhLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1ByaW50Q29udGV4dC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9SZW5kZXJMYXllci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRN
TFZpZXcubW0KaW5kZXggZDFlZWI2OWFiMmUyZWUxMGEyMDYzY2U4MzUwY2Y3OTQ0Mzg4YWQyNi4u
YzRiYzJhMmUwMmQ1YmE4ODQyMjc0ZjhiNGM1M2YyMTk0M2FiMDU0NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0xMDQsNyArMTA0LDcgQEAKICNpbXBvcnQg
PFdlYkNvcmUvTGVnYWN5V2ViQXJjaGl2ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9NSU1FVHlwZVJl
Z2lzdHJ5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUGxh
dGZvcm1LZXlib2FyZEV2ZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtRXZlbnRGYWN0
b3J5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JhbmdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRl
cldpZGdldC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+CkBAIC0zMTA4LDcgKzMx
MDgsNyBAQCBzdGF0aWMgdm9pZCBzZXRNZW51VGFyZ2V0cyhOU01lbnUqIG1lbnUpCiAgICAgX3By
aXZhdGUtPmhhbmRsaW5nTW91c2VEb3duRXZlbnQgPSBZRVM7CiAgICAgcGFnZS0+Y29udGV4dE1l
bnVDb250cm9sbGVyKCktPmNsZWFyQ29udGV4dE1lbnUoKTsKICAgICBjb3JlRnJhbWUtPmV2ZW50
SGFuZGxlcigpLT5tb3VzZURvd24oZXZlbnQpOwotICAgIEJPT0wgaGFuZGxlZEV2ZW50ID0gY29y
ZUZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2VuZENvbnRleHRNZW51RXZlbnQoUGxhdGZvcm1Nb3Vz
ZUV2ZW50KGV2ZW50LCBwYWdlLT5jaHJvbWUoKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkpKTsKKyAg
ICBCT09MIGhhbmRsZWRFdmVudCA9IGNvcmVGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNlbmRDb250
ZXh0TWVudUV2ZW50KFBsYXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQbGF0Zm9ybU1vdXNlRXZl
bnQoZXZlbnQsIHBhZ2UtPmNocm9tZSgpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKSkpOwogICAgIF9w
cml2YXRlLT5oYW5kbGluZ01vdXNlRG93bkV2ZW50ID0gTk87CiAKICAgICBpZiAoIWhhbmRsZWRF
dmVudCkKQEAgLTM0NzMsNyArMzQ3Myw3IEBAIHN0YXRpYyB2b2lkIHNldE1lbnVUYXJnZXRzKE5T
TWVudSogbWVudSkKICAgICAgICAgICAgIFtoaXRIVE1MVmlldyBfc2V0TW91c2VEb3duRXZlbnQ6
ZXZlbnRdOwogICAgICAgICAgICAgaWYgKFtoaXRIVE1MVmlldyBfaXNTZWxlY3Rpb25FdmVudDpl
dmVudF0pIHsKICAgICAgICAgICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGNvcmVGcmFtZS0+cGFn
ZSgpKQotICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBjb3JlRnJhbWUtPmV2ZW50SGFuZGxl
cigpLT5ldmVudE1heVN0YXJ0RHJhZyhQbGF0Zm9ybU1vdXNlRXZlbnQoZXZlbnQsIHBhZ2UtPmNo
cm9tZSgpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKSkpOworICAgICAgICAgICAgICAgICAgICByZXN1
bHQgPSBjb3JlRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5ldmVudE1heVN0YXJ0RHJhZyhQbGF0Zm9y
bUV2ZW50RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1Nb3VzZUV2ZW50KGV2ZW50LCBwYWdlLT5jaHJv
bWUoKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkpKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoW2hp
dEhUTUxWaWV3IF9pc1Njcm9sbEJhckV2ZW50OmV2ZW50XSkKICAgICAgICAgICAgICAgICByZXN1
bHQgPSB0cnVlOwogICAgICAgICAgICAgW2hpdEhUTUxWaWV3IF9zZXRNb3VzZURvd25FdmVudDpu
aWxdOwpAQCAtMzQ5OCw3ICszNDk4LDcgQEAgc3RhdGljIHZvaWQgc2V0TWVudVRhcmdldHMoTlNN
ZW51KiBtZW51KQogICAgICAgICAgICAgaWYgKEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtoaXRI
VE1MVmlldyBfZnJhbWVdKSkgewogICAgICAgICAgICAgICAgIFtoaXRIVE1MVmlldyBfc2V0TW91
c2VEb3duRXZlbnQ6ZXZlbnRdOwogICAgICAgICAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gY29y
ZUZyYW1lLT5wYWdlKCkpCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNvcmVGcmFtZS0+
ZXZlbnRIYW5kbGVyKCktPmV2ZW50TWF5U3RhcnREcmFnKFBsYXRmb3JtTW91c2VFdmVudChldmVu
dCwgcGFnZS0+Y2hyb21lKCktPnBsYXRmb3JtUGFnZUNsaWVudCgpKSk7CisgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IGNvcmVGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmV2ZW50TWF5U3RhcnRE
cmFnKFBsYXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQbGF0Zm9ybU1vdXNlRXZlbnQoZXZlbnQs
IHBhZ2UtPmNocm9tZSgpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKSkpOwogICAgICAgICAgICAgICAg
IFtoaXRIVE1MVmlldyBfc2V0TW91c2VEb3duRXZlbnQ6bmlsXTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQpAQCAtMzczOCwxMiArMzczOCwxMiBAQCBzdGF0aWMgUGFzc1JlZlB0cjxLZXlib2Fy
ZEV2ZW50PiBjdXJyZW50S2V5Ym9hcmRFdmVudChGcmFtZSogY29yZUZyYW1lKQogCiAgICAgc3dp
dGNoIChbZXZlbnQgdHlwZV0pIHsKICAgICBjYXNlIE5TS2V5RG93bjogewotICAgICAgICBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQgcGxhdGZvcm1FdmVudChldmVudCk7CisgICAgICAgIFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudCBwbGF0Zm9ybUV2ZW50ID0gUGxhdGZvcm1FdmVudEZhY3Rvcnk6OmNyZWF0
ZVBsYXRmb3JtS2V5Ym9hcmRFdmVudChldmVudCk7CiAgICAgICAgIHBsYXRmb3JtRXZlbnQuZGlz
YW1iaWd1YXRlS2V5RG93bkV2ZW50KFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pOwogICAgICAg
ICByZXR1cm4gS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKHBsYXRmb3JtRXZlbnQsIGNvcmVGcmFtZS0+
ZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSk7CiAgICAgfQogICAgIGNhc2UgTlNLZXlVcDoKLSAg
ICAgICAgcmV0dXJuIEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShldmVudCwgY29yZUZyYW1lLT5kb2N1
bWVudCgpLT5kZWZhdWx0VmlldygpKTsKKyAgICAgICAgcmV0dXJuIEtleWJvYXJkRXZlbnQ6OmNy
ZWF0ZShQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1LZXlib2FyZEV2ZW50KGV2
ZW50KSwgY29yZUZyYW1lLT5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpKTsKICAgICBkZWZhdWx0
OgogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC00MTQxLDcgKzQxNDEsNyBAQCBzdGF0aWMg
UGFzc1JlZlB0cjxLZXlib2FyZEV2ZW50PiBjdXJyZW50S2V5Ym9hcmRFdmVudChGcmFtZSogY29y
ZUZyYW1lKQogCiAgICAgLy8gRG9uJ3QgbWFrZSBhbiBldmVudCBmcm9tIHRoZSBudW0gbG9jayBh
bmQgZnVuY3Rpb24ga2V5cy4KICAgICBpZiAoY29yZUZyYW1lICYmIGtleUNvZGUgIT0gMCAmJiBr
ZXlDb2RlICE9IDEwICYmIGtleUNvZGUgIT0gNjMpIHsKLSAgICAgICAgY29yZUZyYW1lLT5ldmVu
dEhhbmRsZXIoKS0+a2V5RXZlbnQoUGxhdGZvcm1LZXlib2FyZEV2ZW50KGV2ZW50KSk7CisgICAg
ICAgIGNvcmVGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmtleUV2ZW50KFBsYXRmb3JtRXZlbnRGYWN0
b3J5OjpjcmVhdGVQbGF0Zm9ybUtleWJvYXJkRXZlbnQoZXZlbnQpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlBERlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlBERlZpZXcubW0K
aW5kZXggOGFlMGYzY2ZkNTc4MTkxNWU5ZDE0YWQ1NjhmYzk5NzYyNDFhY2Y0My4uYzVmZTkyMTBl
YzRiMTE0ZDU2Nzk3ZDMxYzYzMzlkNWFjZDU0MDM4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViUERGVmlldy5tbQpAQCAtNTgsNyArNTgsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9LVVJM
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUv
TW91c2VFdmVudC5oPgotI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1FdmVudEZhY3RvcnkuaD4KICNpbXBvcnQgPFdlYkNv
cmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYk5TQXR0
cmlidXRlZFN0cmluZ0V4dHJhcy5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KQEAgLTk1
OSw3ICs5NTksNyBAQCBzdGF0aWMgQk9PTCBpc0ZyYW1lSW5SYW5nZShXZWJGcmFtZSAqZnJhbWUs
IERPTVJhbmdlICpyYW5nZSkKICAgICAgICAgICAgIGJ1dHRvbiA9IFtuc0V2ZW50IGJ1dHRvbk51
bWJlcl07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOU0tleURvd246IHsKLSAg
ICAgICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBwZShuc0V2ZW50KTsKKyAgICAgICAgICAg
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBwZSA9IFBsYXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQobnNFdmVudCk7CiAgICAgICAgICAgICBwZS5kaXNhbWJpZ3Vh
dGVLZXlEb3duRXZlbnQoUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bik7CiAgICAgICAgICAgICBl
dmVudCA9IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50LCB0
cnVlLCB0cnVlLCAwLAogICAgICAgICAgICAgICAgIHBlLmtleUlkZW50aWZpZXIoKSwgcGUud2lu
ZG93c1ZpcnR1YWxLZXlDb2RlKCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5k
ZXggZDdjOWFiNGU1ZGJhMzYwMGQ5MDIzZTYxNmE2YjFkNDQwM2ZjMjk2Yi4uNmQwMTc3NzA3MTMz
MDZkNzg4NzU1YzZmMDdhMTMxZmQzNDE2ODE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQpAQCAtMTQ0LDcgKzE0NCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNp
bXBvcnQgPFdlYkNvcmUvUGFnZUNhY2hlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2VHcm91cC5o
PgotI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybU1vdXNlRXZlbnQuaD4KKyNpbXBvcnQgPFdlYkNv
cmUvUGxhdGZvcm1FdmVudEZhY3RvcnkuaD4KICNpbXBvcnQgPFdlYkNvcmUvUHJvZ3Jlc3NUcmFj
a2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlclZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUv
UmVuZGVyV2lkZ2V0Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViRXZl
bnRDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudENvbnZlcnNp
b24uY3BwCmluZGV4IGE1MzE1NzNhMzA2MTM0ZTYyNTMxZjU1YjBhMTFlNTUwZTIzNTVhOGEuLmEy
YjQxZjIzYjAwYzgzOGYyYmNkODA0Nzg0NWM0ZThkOGJmY2U4ODMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwCkBAIC00OSwxMCArNDksMTYgQEAgcHVi
bGljOgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KIAotICAg
ICAgICBtX3NoaWZ0S2V5ID0gd2ViRXZlbnQuc2hpZnRLZXkoKTsKLSAgICAgICAgbV9jdHJsS2V5
ID0gd2ViRXZlbnQuY29udHJvbEtleSgpOwotICAgICAgICBtX2FsdEtleSA9IHdlYkV2ZW50LmFs
dEtleSgpOwotICAgICAgICBtX21ldGFLZXkgPSB3ZWJFdmVudC5tZXRhS2V5KCk7CisgICAgICAg
IG1fbW9kaWZpZXJzID0gMDsKKyAgICAgICAgaWYgKHdlYkV2ZW50LnNoaWZ0S2V5KCkpCisgICAg
ICAgICAgICBtX21vZGlmaWVycyB8PSBTaGlmdEtleTsKKyAgICAgICAgaWYgKHdlYkV2ZW50LmNv
bnRyb2xLZXkoKSkKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IEN0cmxLZXk7CisgICAgICAg
IGlmICh3ZWJFdmVudC5hbHRLZXkoKSkKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IEFsdEtl
eTsKKyAgICAgICAgaWYgKHdlYkV2ZW50LmFsdEtleSgpKQorICAgICAgICAgICAgbV9tb2RpZmll
cnMgfD0gTWV0YUtleTsKKwogICAgICAgICBtX3RpbWVzdGFtcCA9IHdlYkV2ZW50LnRpbWVzdGFt
cCgpOwogCiAgICAgICAgIC8vIFBsYXRmb3JtTW91c2VFdmVudApAQCAtNzgsMTMgKzg0LDEzIEBA
IHB1YmxpYzoKICAgICAgICAgbV9jbGlja0NvdW50ID0gd2ViRXZlbnQuY2xpY2tDb3VudCgpOwog
CiAgICAgICAgIG1fbW9kaWZpZXJGbGFncyA9IDA7Ci0gICAgICAgIGlmIChtX3NoaWZ0S2V5KQor
ICAgICAgICBpZiAod2ViRXZlbnQuc2hpZnRLZXkoKSkKICAgICAgICAgICAgIG1fbW9kaWZpZXJG
bGFncyB8PSBXZWJFdmVudDo6U2hpZnRLZXk7Ci0gICAgICAgIGlmIChtX2N0cmxLZXkpCisgICAg
ICAgIGlmICh3ZWJFdmVudC5jb250cm9sS2V5KCkpCiAgICAgICAgICAgICBtX21vZGlmaWVyRmxh
Z3MgfD0gV2ViRXZlbnQ6OkNvbnRyb2xLZXk7Ci0gICAgICAgIGlmIChtX2FsdEtleSkKKyAgICAg
ICAgaWYgKHdlYkV2ZW50LmFsdEtleSgpKQogICAgICAgICAgICAgbV9tb2RpZmllckZsYWdzIHw9
IFdlYkV2ZW50OjpBbHRLZXk7Ci0gICAgICAgIGlmIChtX21ldGFLZXkpCisgICAgICAgIGlmICh3
ZWJFdmVudC5hbHRLZXkoKSkKICAgICAgICAgICAgIG1fbW9kaWZpZXJGbGFncyB8PSBXZWJFdmVu
dDo6TWV0YUtleTsKIAogI2lmIFBMQVRGT1JNKFdJTikKQEAgLTEwNCwxMCArMTEwLDE3IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgICAgIC8vIFBsYXRmb3JtRXZlbnQKICAgICAgICAgbV90eXBlID0g
UGxhdGZvcm1FdmVudDo6V2hlZWw7Ci0gICAgICAgIG1fc2hpZnRLZXkgPSB3ZWJFdmVudC5zaGlm
dEtleSgpOwotICAgICAgICBtX2N0cmxLZXkgPSB3ZWJFdmVudC5jb250cm9sS2V5KCk7Ci0gICAg
ICAgIG1fYWx0S2V5ID0gd2ViRXZlbnQuYWx0S2V5KCk7Ci0gICAgICAgIG1fbWV0YUtleSA9IHdl
YkV2ZW50Lm1ldGFLZXkoKTsKKworICAgICAgICBtX21vZGlmaWVycyA9IDA7CisgICAgICAgIGlm
ICh3ZWJFdmVudC5zaGlmdEtleSgpKQorICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gU2hpZnRL
ZXk7CisgICAgICAgIGlmICh3ZWJFdmVudC5jb250cm9sS2V5KCkpCisgICAgICAgICAgICBtX21v
ZGlmaWVycyB8PSBDdHJsS2V5OworICAgICAgICBpZiAod2ViRXZlbnQuYWx0S2V5KCkpCisgICAg
ICAgICAgICBtX21vZGlmaWVycyB8PSBBbHRLZXk7CisgICAgICAgIGlmICh3ZWJFdmVudC5hbHRL
ZXkoKSkKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1ldGFLZXk7CisKICAgICAgICAgbV90
aW1lc3RhbXAgPSB3ZWJFdmVudC50aW1lc3RhbXAoKTsKIAogICAgICAgICAvLyBQbGF0Zm9ybVdo
ZWVsRXZlbnQKQEAgLTE1NCwxMCArMTY3LDE2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAKLSAgICAgICAgbV9zaGlmdEtleSA9IHdlYkV2
ZW50LnNoaWZ0S2V5KCk7Ci0gICAgICAgIG1fY3RybEtleSA9IHdlYkV2ZW50LmNvbnRyb2xLZXko
KTsKLSAgICAgICAgbV9hbHRLZXkgPSB3ZWJFdmVudC5hbHRLZXkoKTsKLSAgICAgICAgbV9tZXRh
S2V5ID0gd2ViRXZlbnQubWV0YUtleSgpOworICAgICAgICBtX21vZGlmaWVycyA9IDA7CisgICAg
ICAgIGlmICh3ZWJFdmVudC5zaGlmdEtleSgpKQorICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0g
U2hpZnRLZXk7CisgICAgICAgIGlmICh3ZWJFdmVudC5jb250cm9sS2V5KCkpCisgICAgICAgICAg
ICBtX21vZGlmaWVycyB8PSBDdHJsS2V5OworICAgICAgICBpZiAod2ViRXZlbnQuYWx0S2V5KCkp
CisgICAgICAgICAgICBtX21vZGlmaWVycyB8PSBBbHRLZXk7CisgICAgICAgIGlmICh3ZWJFdmVu
dC5hbHRLZXkoKSkKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1ldGFLZXk7CisKICAgICAg
ICAgbV90aW1lc3RhbXAgPSB3ZWJFdmVudC50aW1lc3RhbXAoKTsKIAogICAgICAgICAvLyBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQKQEAgLTE2NiwxNCArMTg1LDEwIEBAIHB1YmxpYzoKICAgICAgICAg
bV9rZXlJZGVudGlmaWVyID0gd2ViRXZlbnQua2V5SWRlbnRpZmllcigpOwogICAgICAgICBtX3dp
bmRvd3NWaXJ0dWFsS2V5Q29kZSA9IHdlYkV2ZW50LndpbmRvd3NWaXJ0dWFsS2V5Q29kZSgpOwog
ICAgICAgICBtX25hdGl2ZVZpcnR1YWxLZXlDb2RlID0gd2ViRXZlbnQubmF0aXZlVmlydHVhbEtl
eUNvZGUoKTsKKyAgICAgICAgbV9tYWNDaGFyQ29kZSA9IHdlYkV2ZW50Lm1hY0NoYXJDb2RlKCk7
CiAgICAgICAgIG1fYXV0b1JlcGVhdCA9IHdlYkV2ZW50LmlzQXV0b1JlcGVhdCgpOwogICAgICAg
ICBtX2lzS2V5cGFkID0gd2ViRXZlbnQuaXNLZXlwYWQoKTsKLSAgICAgICAgCi0jaWYgUExBVEZP
Uk0oV0lOKQotICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG1ha2UgbV9pc1N5c3RlbUtleSBh
dmFpbGFibGUgKGFuZCBmYWxzZSkgb24gYWxsIHBsYXRmb3JtcwotICAgICAgICAvLyB0byBhdm9p
ZCB0aGlzICNkZWZpbmUuIAogICAgICAgICBtX2lzU3lzdGVtS2V5ID0gd2ViRXZlbnQuaXNTeXN0
ZW1LZXkoKTsKLSNlbmRpZgogICAgIH0KIH07CiAKQEAgLTIwMiwxMCArMjE3LDE2IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAKLSAgICAg
ICAgbV9zaGlmdEtleSA9IHdlYkV2ZW50LnNoaWZ0S2V5KCk7Ci0gICAgICAgIG1fY3RybEtleSA9
IHdlYkV2ZW50LmNvbnRyb2xLZXkoKTsKLSAgICAgICAgbV9hbHRLZXkgPSB3ZWJFdmVudC5hbHRL
ZXkoKTsKLSAgICAgICAgbV9tZXRhS2V5ID0gd2ViRXZlbnQubWV0YUtleSgpOworICAgICAgICBt
X21vZGlmaWVycyA9IDA7CisgICAgICAgIGlmICh3ZWJFdmVudC5zaGlmdEtleSgpKQorICAgICAg
ICAgICAgbV9tb2RpZmllcnMgfD0gU2hpZnRLZXk7CisgICAgICAgIGlmICh3ZWJFdmVudC5jb250
cm9sS2V5KCkpCisgICAgICAgICAgICBtX21vZGlmaWVycyB8PSBDdHJsS2V5OworICAgICAgICBp
ZiAod2ViRXZlbnQuYWx0S2V5KCkpCisgICAgICAgICAgICBtX21vZGlmaWVycyB8PSBBbHRLZXk7
CisgICAgICAgIGlmICh3ZWJFdmVudC5hbHRLZXkoKSkKKyAgICAgICAgICAgIG1fbW9kaWZpZXJz
IHw9IE1ldGFLZXk7CisKICAgICAgICAgbV90aW1lc3RhbXAgPSB3ZWJFdmVudC50aW1lc3RhbXAo
KTsKIAogICAgICAgICAvLyBQbGF0Zm9ybUdlc3R1cmVFdmVudApAQCAtMjc0LDEwICsyOTUsMTYg
QEAgcHVibGljOgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0K
IAotICAgICAgICBtX2N0cmxLZXkgPSB3ZWJFdmVudC5jb250cm9sS2V5KCk7Ci0gICAgICAgIG1f
YWx0S2V5ID0gd2ViRXZlbnQuYWx0S2V5KCk7Ci0gICAgICAgIG1fc2hpZnRLZXkgPSB3ZWJFdmVu
dC5zaGlmdEtleSgpOwotICAgICAgICBtX21ldGFLZXkgPSB3ZWJFdmVudC5tZXRhS2V5KCk7Cisg
ICAgICAgIG1fbW9kaWZpZXJzID0gMDsKKyAgICAgICAgaWYgKHdlYkV2ZW50LnNoaWZ0S2V5KCkp
CisgICAgICAgICAgICBtX21vZGlmaWVycyB8PSBTaGlmdEtleTsKKyAgICAgICAgaWYgKHdlYkV2
ZW50LmNvbnRyb2xLZXkoKSkKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IEN0cmxLZXk7Cisg
ICAgICAgIGlmICh3ZWJFdmVudC5hbHRLZXkoKSkKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9
IEFsdEtleTsKKyAgICAgICAgaWYgKHdlYkV2ZW50LmFsdEtleSgpKQorICAgICAgICAgICAgbV9t
b2RpZmllcnMgfD0gTWV0YUtleTsKKwogICAgICAgICBtX3RpbWVzdGFtcCA9IHdlYkV2ZW50LnRp
bWVzdGFtcCgpOwogCiAgICAgICAgIC8vIFBsYXRmb3JtVG91Y2hFdmVudApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IGRjYTAxOGE0MmYxOWJhNGU0ZTlk
MzBkMzAwMDNhYTMwMTcxYTI5OWMuLjQwM2VhYmIzZWM2OTViMmRhZmYzMjRiZTZjZjhlODZhZDMw
MTkwYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KQEAg
LTY3LDcgKzY3LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvSW50UmVjdC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9LZXlib2FyZEV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3Mu
aD4KLSNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1Nb3VzZUV2ZW50Lmg+CisjaW1wb3J0IDxXZWJD
b3JlL1BsYXRmb3JtRXZlbnRGYWN0b3J5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtU2Ny
ZWVuLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlZ2lvbi5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVt
SW50ZXJmYWNlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggODU4
MWRmZmMyZjI5OWEzN2ZkYmRiMGZhZjkyODAwMmY3NGRhYWRlZC4uMjljNGFjM2VlMGMyMDM1YTRh
YWIzOTAzOThmNWQzNWIzMDhiM2Q1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFj
ZS5tbQpAQCAtNjUsNiArNjUsNyBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZv
aWQpCiAgICAgICAgIElOSVQoR2V0UHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUpOwogICAg
ICAgICBJTklUKEdldFVzZXJUb0Jhc2VDVE0pOwogICAgICAgICBJTklUKEdldFdoZWVsRXZlbnRE
ZWx0YXMpOworICAgICAgICBJTklUKEdldE5TRXZlbnRLZXlDaGFyKTsKICAgICAgICAgSU5JVChI
aXRUZXN0TWVkaWFVSVBhcnQpOwogICAgICAgICBJTklUKEluaXRpYWxpemVNYXhpbXVtSFRUUENv
bm5lY3Rpb25Db3VudFBlckhvc3QpOwogICAgICAgICBJTklUKE1lYXN1cmVNZWRpYVVJUGFydCk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120375</attachid>
            <date>2011-12-22 13:48:01 -0800</date>
            <delta_ts>2011-12-22 14:37:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75063-20111222134805.patch</filename>
            <type>text/plain</type>
            <size>88794</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzNTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTBlNjUzMTNlODYzZWY0
MTQ3NzYwM2Q4NjUyMjRkMTMzNjhkYzcxNy4uYWJjZTM1Y2E0YzY5OGFkYzVjMzllNzQ3ZWY5NjRl
ZmVhMDFmMDg4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDExLTEyLTIxICBTYW0g
V2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RhcnQgZXh0cmFjdGluZyBwbGF0
Zm9ybSBzcGVjaWZpYyBiaXRzIG91dCBvZiBQbGF0Zm9ybUV2ZW50cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUwNjMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKwor
ICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmtleUV2ZW50KToKKyAgICAgICAgKiBwYWdlL21hYy9F
dmVudEhhbmRsZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OndoZWVs
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjprZXlFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmN1cnJlbnRQbGF0Zm9ybU1vdXNlRXZlbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtRXZlbnQ6OnNoaWZ0S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6
OmN0cmxLZXkpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6YWx0S2V5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6Om1ldGFLZXkpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1FdmVudDo6bW9kaWZpZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
RXZlbnQ6OlBsYXRmb3JtRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtR2VzdHVy
ZUV2ZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmtleUlkZW50
aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50OjptYWNDaGFy
Q29kZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmlzU3lzdGVt
S2V5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
S2V5RXZlbnRNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0
b3J5Lmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9y
eS5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpnbG9iYWxQb2ludCk6CisgICAgICAgIChX
ZWJDb3JlOjpnbG9iYWxQb2ludEZvckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnBvaW50Rm9y
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6bW91c2VCdXR0b25Gb3JFdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjptb3VzZUV2ZW50VHlwZUZvckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNs
aWNrQ291bnRGb3JFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjptb21lbnR1bVBoYXNlRm9yRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6cGhhc2VGb3JFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpnZXN0dXJlRXZlbnRUeXBlRm9yRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6dGV4dEZyb21F
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjp1bm1vZGlmaWVkVGV4dEZyb21FdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjprZXlJZGVudGlmaWVyRm9yS2V5RXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6aXNLZXlwYWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjp3aW5kb3dzS2V5Q29kZUZvcktl
eUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmlzS2V5VXBFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjptb2RpZmllcnNGb3JFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1vdXNl
RXZlbnRCdWlsZGVyOjpQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQbGF0Zm9ybU1vdXNlRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50QnVpbGRlcjo6UGxhdGZvcm1XaGVlbEV2
ZW50QnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3Jl
YXRlUGxhdGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9h
cmRFdmVudEJ1aWxkZXI6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudEJ1aWxkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1FdmVudEZhY3Rvcnk6OmNyZWF0ZVBsYXRmb3JtS2V5Ym9hcmRFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXI6OlBsYXRm
b3JtR2VzdHVyZUV2ZW50QnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50
RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1HZXN0dXJlRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9QbGF0Zm9ybU1vdXNlRXZlbnRNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dl
YkNvcmVTeXN0ZW1JbnRlcmZhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5
c3RlbUludGVyZmFjZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2hlZWxFdmVudE1hYy5t
bToKKwogMjAxMS0xMi0yMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgog
CiAgICAgICAgIFNpbXBsaWZ5IFNjcm9sbEFuaW1hdG9yTWFjIHNjcm9sbEJ5RGVsdGEgZnVuY3Rp
b25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNmM3YmYzMGI2ZjdlMTg4MGYwZWZhMWQyM2FlZTNlYzhk
Y2YwY2EzNi4uMDYyZDU3MzRmNzA0OGJkNmI2MGUxMDQxMWFkYjExYzgzOTU5N2Q3NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDExLTEyLTIxICBTYW0gV2VpbmlnICA8c2Ft
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RhcnQgZXh0cmFjdGluZyBwbGF0Zm9ybSBzcGVjaWZp
YyBiaXRzIG91dCBvZiBQbGF0Zm9ybUV2ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUwNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5t
bToKKyAgICAgICAgKEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAg
ICAgICgtW1dlYkhUTUxWaWV3IG1lbnVGb3JFdmVudDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZp
ZXcgYWNjZXB0c0ZpcnN0TW91c2U6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHNob3VsZERl
bGF5V2luZG93T3JkZXJpbmdGb3JFdmVudDpdKToKKyAgICAgICAgKGN1cnJlbnRLZXlib2FyZEV2
ZW50KToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgZmxhZ3NDaGFuZ2VkOl0pOgorICAgICAgICAq
IFdlYlZpZXcvV2ViUERGVmlldy5tbToKKyAgICAgICAgKC1bV2ViUERGVmlldyBQREZWaWV3V2ls
bENsaWNrT25MaW5rOndpdGhVUkw6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgor
CiAyMDExLTEyLTIxICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBzdXBwcmVzcyBpbmNyZW1lbnRhbCByZW5kZXJpbmcgYW5kIHVz
ZSBhcHBsaWNhdGlvbiBjaHJvbWUgbW9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDE0ZTkxNjZiYzZhMjJmZDlm
OWFlNjhhNTlhMDgzNGVhMzQ4NWUxOTAuLjdiM2JhYzliOGQ0ZmEwZDFjNzg0OWViNjU5ZTdkYzll
MTQ5Y2RhMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMS0xMi0yMSAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFN0YXJ0IGV4dHJhY3RpbmcgcGxhdGZv
cm0gc3BlY2lmaWMgYml0cyBvdXQgb2YgUGxhdGZvcm1FdmVudHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1MDYzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0MlBsYXRmb3JtTW91c2VFdmVudDo6V2ViS2l0
MlBsYXRmb3JtTW91c2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYktpdDJQbGF0Zm9ybVdo
ZWVsRXZlbnQ6OldlYktpdDJQbGF0Zm9ybVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJLaXQyUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpXZWJLaXQyUGxhdGZvcm1LZXlib2FyZEV2ZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0MlBsYXRmb3JtR2VzdHVyZUV2ZW50OjpXZWJLaXQy
UGxhdGZvcm1HZXN0dXJlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXQyUGxhdGZvcm1U
b3VjaEV2ZW50OjpXZWJLaXQyUGxhdGZvcm1Ub3VjaEV2ZW50KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tOgorICAgICAgICAoSW5pdFdlYkNvcmVTeXN0ZW1J
bnRlcmZhY2UpOgorCiAyMDExLTEyLTIyICBDYWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8g
IDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgW1F0XSBbV0syXSBVc2Ug
SGFzaE1hcCBpbnN0ZWFkIG9mIFZlY3RvciBpbiB0aGUgYnVpbHRpbiBidW5kbGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KaW5kZXggZjVkYzAwMGUxZTVkYmQ3Y2Q1ZTg4OGJkZGNlZTQwNWQ3OGVmNTkzZi4u
NWVhNzFjOGNjZDBiYWNiMWUwNWU0NDc3MWU1ZmNjMDA2NmExNGY0YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KQEAgLTE1Nyw2ICsxNTcsNyBAQCBfX1pON1dlYkNvcmUxMHRvRG9jdW1lbnRFTjNKU0M3
SlNWYWx1ZUUKIF9fWk43V2ViQ29yZTExQml0bWFwSW1hZ2VDMUVQN0NHSW1hZ2VQTlNfMTNJbWFn
ZU9ic2VydmVyRQogX19aTjdXZWJDb3JlMTFDYWNoZWRGcmFtZTIzY2FjaGVkRnJhbWVQbGF0Zm9y
bURhdGFFdgogX19aTjdXZWJDb3JlMTFDYWNoZWRGcmFtZTI2c2V0Q2FjaGVkRnJhbWVQbGF0Zm9y
bURhdGFFTjNXVEYxMFBhc3NPd25QdHJJTlNfMjNDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YUVFRQor
X19aTjdXZWJDb3JlMTFDYWNoZWRJbWFnZTVpbWFnZUV2CiBfX1pON1dlYkNvcmUxMUZpbGVDaG9v
c2VyMTBjaG9vc2VGaWxlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTFGaWxlQ2hvb3Nl
cjExY2hvb3NlRmlsZXNFUktOM1dURjZWZWN0b3JJTlMxXzZTdHJpbmdFTG0wRUVFCiBfX1pON1dl
YkNvcmUxMUZpbGVDaG9vc2VyRDFFdgpAQCAtMjkyLDggKzI5Myw4IEBAIF9fWk43V2ViQ29yZTEy
U2hhcmVkQnVmZmVyRDFFdgogX19aTjdXZWJDb3JlMTJTcGVsbENoZWNrZXI4ZGlkQ2hlY2tFaVJL
TjNXVEY2VmVjdG9ySU5TXzE4VGV4dENoZWNraW5nUmVzdWx0RUxtMEVFRQogX19aTjdXZWJDb3Jl
MTJUZXh0RW5jb2RpbmdDMUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTEyVGV4dEl0ZXJh
dG9yMTFyYW5nZUxlbmd0aEVQS05TXzVSYW5nZUViCi1fX1pON1dlYkNvcmUxMlRleHRJdGVyYXRv
cjI5Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2VFUE5TXzdFbGVtZW50RVBLTlNfNVJhbmdl
RVJtUzZfCiBfX1pON1dlYkNvcmUxMlRleHRJdGVyYXRvcjI2cmFuZ2VGcm9tTG9jYXRpb25BbmRM
ZW5ndGhFUE5TXzdFbGVtZW50RWlpYgorX19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3IyOWdldExv
Y2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlRVBOU183RWxlbWVudEVQS05TXzVSYW5nZUVSbVM2Xwog
X19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3I3YWR2YW5jZUV2CiBfX1pON1dlYkNvcmUxMlRleHRJ
dGVyYXRvcjhzdWJyYW5nZUVQTlNfNVJhbmdlRWlpCiBfX1pON1dlYkNvcmUxMlRleHRJdGVyYXRv
ckMxRVBLTlNfNVJhbmdlRU5TXzIwVGV4dEl0ZXJhdG9yQmVoYXZpb3JFCkBAIC0zNjUsOSArMzY2
LDggQEAgX19aTjdXZWJDb3JlMTRTY2hlbWVSZWdpc3RyeTI1cmVnaXN0ZXJVUkxTY2hlbWVBc1Nl
Y3VyZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE0U2NoZW1lUmVnaXN0cnkzMnJlZ2lz
dGVyVVJMU2NoZW1lQXNFbXB0eURvY3VtZW50RVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3Jl
MTRTY2hlbWVSZWdpc3RyeTM0c2hvdWxkTG9hZFVSTFNjaGVtZUFzRW1wdHlEb2N1bWVudEVSS04z
V1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE0U2NoZW1lUmVnaXN0cnk0MHNldERvbWFpblJlbGF4
YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWVFYlJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJDb3Jl
MTRTY2hlbWVSZWdpc3RyeTYycmVnaXN0ZXJVUkxTY2hlbWVBc0FsbG93aW5nTG9jYWxTdG9yYWdl
QWNjZXNzSW5Qcml2YXRlQnJvd3NpbmdFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxNFNj
aGVtZVJlZ2lzdHJ5NThyZWdpc3RlclVSTFNjaGVtZUFzQWxsb3dpbmdEYXRhYmFzZUFjY2Vzc0lu
UHJpdmF0ZUJyb3dzaW5nRVJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJDb3JlMTRTY3JvbGxhYmxl
QXJlYTE1Y29udGVudHNSZXNpemVkRXYKK19fWk43V2ViQ29yZTE0U2NoZW1lUmVnaXN0cnk2MnJl
Z2lzdGVyVVJMU2NoZW1lQXNBbGxvd2luZ0xvY2FsU3RvcmFnZUFjY2Vzc0luUHJpdmF0ZUJyb3dz
aW5nRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTRTY3JvbGxhYmxlQXJlYTE2aGFuZGxl
V2hlZWxFdmVudEVSS05TXzE4UGxhdGZvcm1XaGVlbEV2ZW50RQogX19aTjdXZWJDb3JlMTRTY3Jv
bGxhYmxlQXJlYTE3d2lsbEVuZExpdmVSZXNpemVFdgogX19aTjdXZWJDb3JlMTRTY3JvbGxhYmxl
QXJlYTE5d2lsbFN0YXJ0TGl2ZVJlc2l6ZUV2CkBAIC0zOTMsMTUgKzM5MywxNSBAQCBfX1pON1dl
YkNvcmUxNFNlY3VyaXR5UG9saWN5MjJnZW5lcmF0ZVJlZmVycmVySGVhZGVyRU5TMF8xNFJlZmVy
cmVyUG9saWN5RVJLTlNfNAogX19aTjdXZWJDb3JlMTRTZWN1cml0eVBvbGljeTI3cmVzZXRPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RzRXYKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlQb2xpY3kyOWFkZE9y
aWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5RVJLTlNfMTRTZWN1cml0eU9yaWdpbkVSS04zV1RGNlN0
cmluZ0VTN19iCiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5UG9saWN5MzJyZW1vdmVPcmlnaW5BY2Nl
c3NXaGl0ZWxpc3RFbnRyeUVSS05TXzE0U2VjdXJpdHlPcmlnaW5FUktOM1dURjZTdHJpbmdFUzdf
YgotX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjdvcmlnaW5zRVJOM1dURjZWZWN0b3JJTlMx
XzZSZWZQdHJJTlNfMTRTZWN1cml0eU9yaWdpbkVFRUxtMEVFRQotX19aTjdXZWJDb3JlMTRTdG9y
YWdlVHJhY2tlcjd0cmFja2VyRXYKLV9fWk43V2ViQ29yZTE0U3RvcmFnZVRyYWNrZXI5c2V0Q2xp
ZW50RVBOU18yMFN0b3JhZ2VUcmFja2VyQ2xpZW50RQogX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJh
Y2tlcjEyZGVsZXRlT3JpZ2luRVBOU18xNFNlY3VyaXR5T3JpZ2luRQogX19aTjdXZWJDb3JlMTRT
dG9yYWdlVHJhY2tlcjE2ZGVsZXRlQWxsT3JpZ2luc0V2CiBfX1pON1dlYkNvcmUxNFN0b3JhZ2VU
cmFja2VyMTZzeW5jTG9jYWxTdG9yYWdlRXYKIF9fWk43V2ViQ29yZTE0U3RvcmFnZVRyYWNrZXIx
N2luaXRpYWxpemVUcmFja2VyRVJLTjNXVEY2U3RyaW5nRVBOU18yMFN0b3JhZ2VUcmFja2VyQ2xp
ZW50RQogX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjE4ZGlza1VzYWdlRm9yT3JpZ2luRVBO
U18xNFNlY3VyaXR5T3JpZ2luRQogX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjMyc3luY0Zp
bGVTeXN0ZW1BbmRUcmFja2VyRGF0YWJhc2VFdgorX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tl
cjdvcmlnaW5zRVJOM1dURjZWZWN0b3JJTlMxXzZSZWZQdHJJTlNfMTRTZWN1cml0eU9yaWdpbkVF
RUxtMEVFRQorX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjd0cmFja2VyRXYKK19fWk43V2Vi
Q29yZTE0U3RvcmFnZVRyYWNrZXI5c2V0Q2xpZW50RVBOU18yMFN0b3JhZ2VUcmFja2VyQ2xpZW50
RQogX19aTjdXZWJDb3JlMTRlbmRPZlBhcmFncmFwaEVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRU5T
XzI3RWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlRQogX19aTjdXZWJDb3JlMTVBZmZpbmVUcmFu
c2Zvcm01ZmxpcFlFdgogX19aTjdXZWJDb3JlMTVBZmZpbmVUcmFuc2Zvcm01c2NhbGVFZApAQCAt
NDMzLDggKzQzMyw4IEBAIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MTFjbGVhclNoYWRv
d0V2CiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDEyc2V0RmlsbENvbG9yRVJLTlNfNUNv
bG9yRU5TXzEwQ29sb3JTcGFjZUUKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MTVzZXRG
aWxsR3JhZGllbnRFTjNXVEYxMFBhc3NSZWZQdHJJTlNfOEdyYWRpZW50RUVFCiBfX1pON1dlYkNv
cmUxNUdyYXBoaWNzQ29udGV4dDE4c2V0U2hvdWxkQW50aWFsaWFzRWIKLV9fWk43V2ViQ29yZTE1
R3JhcGhpY3NDb250ZXh0MjBzZXRTaG91bGRTbW9vdGhGb250c0ViCiBfX1pON1dlYkNvcmUxNUdy
YXBoaWNzQ29udGV4dDIwZW5kVHJhbnNwYXJlbmN5TGF5ZXJFdgorX19aTjdXZWJDb3JlMTVHcmFw
aGljc0NvbnRleHQyMHNldFNob3VsZFNtb290aEZvbnRzRWIKIF9fWk43V2ViQ29yZTE1R3JhcGhp
Y3NDb250ZXh0MjFzZXRDb21wb3NpdGVPcGVyYXRpb25FTlNfMTdDb21wb3NpdGVPcGVyYXRvckUK
IF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MjJhcHBseURldmljZVNjYWxlRmFjdG9yRWYK
IF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MjJiZWdpblRyYW5zcGFyZW5jeUxheWVyRWYK
QEAgLTUzOSw3ICs1MzksNiBAQCBfX1pON1dlYkNvcmUxN1JlZ3VsYXJFeHByZXNzaW9uQzFFUktO
M1dURjZTdHJpbmdFTlMxXzE5VGV4dENhc2VTZW5zaXRpdml0eUUKIF9fWk43V2ViQ29yZTE3UmVn
dWxhckV4cHJlc3Npb25EMUV2CiBfX1pON1dlYkNvcmUxN2NhY2hlRE9NU3RydWN0dXJlRVBOU18x
N0pTRE9NR2xvYmFsT2JqZWN0RVBOM0pTQzlTdHJ1Y3R1cmVFUEtOUzJfOUNsYXNzSW5mb0UKIF9f
Wk43V2ViQ29yZTE3b3BlblRlbXBvcmFyeUZpbGVFUktOM1dURjZTdHJpbmdFUmkKLV9fWk43V2Vi
Q29yZTE4UGxhdGZvcm1Nb3VzZUV2ZW50QzFFUDdOU0V2ZW50UDZOU1ZpZXcKIF9fWk43V2ViQ29y
ZTE4UGxhdGZvcm1TdHJhdGVnaWVzMjZjcmVhdGVMb2NhbGl6YXRpb25TdHJhdGVneUV2CiBfX1pO
N1dlYkNvcmUxOFNlYXJjaFBvcHVwTWVudU1hY0MxRVBOU18xNVBvcHVwTWVudUNsaWVudEUKIF9f
Wk43V2ViQ29yZTE4aXNTdGFydE9mUGFyYWdyYXBoRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FTlNf
MjdFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGVFCkBAIC01ODgsNiArNTg3LDggQEAgX19aTjdX
ZWJDb3JlMjBEaXNwbGF5U2xlZXBEaXNhYmxlckMxRVBLYwogX19aTjdXZWJDb3JlMjBEaXNwbGF5
U2xlZXBEaXNhYmxlckQxRXYKIF9fWk43V2ViQ29yZTIwTm9kZVJlbmRlcmluZ0NvbnRleHRDMUVQ
TlNfNE5vZGVFCiBfX1pON1dlYkNvcmUyME5vZGVSZW5kZXJpbmdDb250ZXh0RDFFdgorX19aTjdX
ZWJDb3JlMjBQbGF0Zm9ybUV2ZW50RmFjdG9yeTI0Y3JlYXRlUGxhdGZvcm1Nb3VzZUV2ZW50RVA3
TlNFdmVudFA2TlNWaWV3CitfX1pON1dlYkNvcmUyMFBsYXRmb3JtRXZlbnRGYWN0b3J5MjdjcmVh
dGVQbGF0Zm9ybUtleWJvYXJkRXZlbnRFUDdOU0V2ZW50CiBfX1pON1dlYkNvcmUyMFJlbmRlckVt
YmVkZGVkT2JqZWN0MzBzZXRTaG93c0NyYXNoZWRQbHVnaW5JbmRpY2F0b3JFdgogX19aTjdXZWJD
b3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTExc2V0TWltZVR5cGVFUktOM1dURjZTdHJpbmdFCiBf
X1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTdzZXRIVFRQU3RhdHVzQ29kZUVpCkBA
IC02MDUsNyArNjA2LDYgQEAgX19aTjdXZWJDb3JlMjBtYWtlUkdCQTMyRnJvbUZsb2F0c0VmZmZm
CiBfX1pON1dlYkNvcmUyMHByb3RvY29sSXNKYXZhU2NyaXB0RVJLTjNXVEY2U3RyaW5nRQogX19a
TjdXZWJDb3JlMjFCYWNrRm9yd2FyZENvbnRyb2xsZXIxMWl0ZW1BdEluZGV4RWkKIF9fWk43V2Vi
Q29yZTIxTWVtb3J5UHJlc3N1cmVIYW5kbGVyN2luc3RhbGxFdgotX19aTjdXZWJDb3JlMjFQbGF0
Zm9ybUtleWJvYXJkRXZlbnRDMUVQN05TRXZlbnQKIF9fWk43V2ViQ29yZTIxUGxhdGZvcm1LZXli
b2FyZEV2ZW50MjRkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnRFTlNfMTNQbGF0Zm9ybUV2ZW50NFR5
cGVFYgogX19aTjdXZWJDb3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVsZXIyMHNlcnZlUGVuZGluZ1Jl
cXVlc3RzRU5TXzIwUmVzb3VyY2VMb2FkUHJpb3JpdHlFCiBfX1pON1dlYkNvcmUyMVJlc291cmNl
TG9hZFNjaGVkdWxlcjI0c2NoZWR1bGVQbHVnaW5TdHJlYW1Mb2FkRVBOU181RnJhbWVFUE5TXzMy
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnRFUktOU18xNVJlc291cmNlUmVxdWVzdEUK
QEAgLTY2MSw4ICs2NjEsNiBAQCBfX1pON1dlYkNvcmUyNVBsdWdpbk1haW5UaHJlYWRTY2hlZHVs
ZXIxNnVucmVnaXN0ZXJQbHVnaW5FUDRfTlBQCiBfX1pON1dlYkNvcmUyNVBsdWdpbk1haW5UaHJl
YWRTY2hlZHVsZXI5c2NoZWR1bGVyRXYKIF9fWk43V2ViQ29yZTI1YWRkTGFuZ3VhZ2VDaGFuZ2VP
YnNlcnZlckVQdlBGdlMwX0UKIF9fWk43V2ViQ29yZTI1Y29tcHV0ZVZpZXdwb3J0QXR0cmlidXRl
c0VOU18xN1ZpZXdwb3J0QXJndW1lbnRzRWlpaWlOU183SW50U2l6ZUUKLV9fWk43V2ViQ29yZTUw
cmVzdHJpY3RTY2FsZUZhY3RvclRvSW5pdGlhbFNjYWxlSWZOb3RVc2VyU2NhbGFibGVFUk5TXzE4
Vmlld3BvcnRBdHRyaWJ1dGVzRQotX19aTjdXZWJDb3JlNDByZXN0cmljdE1pbmltdW1TY2FsZUZh
Y3RvclRvVmlld3BvcnRTaXplRVJOU18xOFZpZXdwb3J0QXR0cmlidXRlc0VOU183SW50U2l6ZUUK
IF9fWk43V2ViQ29yZTI1Y29udGV4dE1lbnVJdGVtVGFnT3V0bGluZUV2CiBfX1pON1dlYkNvcmUy
NkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uQzFFdgogX19aTjdXZWJDb3JlMjZVc2VyVHlwaW5n
R2VzdHVyZUluZGljYXRvcjI3cHJvY2Vzc2luZ1VzZXJUeXBpbmdHZXN0dXJlRXYKQEAgLTcyMCw2
ICs3MTgsNyBAQCBfX1pON1dlYkNvcmUzN2NvbnRleHRNZW51SXRlbVRhZ1RyYW5zZm9ybWF0aW9u
c01lbnVFdgogX19aTjdXZWJDb3JlMzhjb250ZXh0TWVudUl0ZW1UYWdXcml0aW5nRGlyZWN0aW9u
TWVudUV2CiBfX1pON1dlYkNvcmUzbWFjRVJLTlNfMTBDcmVkZW50aWFsRQogX19aTjdXZWJDb3Jl
M21hY0VSS05TXzIzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VFCitfX1pON1dlYkNvcmU0MHJlc3Ry
aWN0TWluaW11bVNjYWxlRmFjdG9yVG9WaWV3cG9ydFNpemVFUk5TXzE4Vmlld3BvcnRBdHRyaWJ1
dGVzRU5TXzdJbnRTaXplRQogX19aTjdXZWJDb3JlNDJjb250ZXh0TWVudUl0ZW1UYWdDaGVja0dy
YW1tYXJXaXRoU3BlbGxpbmdFdgogX19aTjdXZWJDb3JlNDJjb250ZXh0TWVudUl0ZW1UYWdDaGVj
a1NwZWxsaW5nV2hpbGVUeXBpbmdFdgogX19aTjdXZWJDb3JlNDZjb250ZXh0TWVudUl0ZW1UYWdD
b3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5RXYKQEAgLTc4Niw2ICs3ODUsNyBAQCBfX1pON1dl
YkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOU18x
MENsaWVudFJlY3RFCiBfX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pT
RE9NR2xvYmFsT2JqZWN0RVBOU18xOUNTU1N0eWxlRGVjbGFyYXRpb25FCiBfX1pON1dlYkNvcmU0
dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOU181UmFuZ2VF
CiBfX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2Jq
ZWN0RVBOU184Tm9kZUxpc3RFCitfX1pON1dlYkNvcmU1MHJlc3RyaWN0U2NhbGVGYWN0b3JUb0lu
aXRpYWxTY2FsZUlmTm90VXNlclNjYWxhYmxlRVJOU18xOFZpZXdwb3J0QXR0cmlidXRlc0UKIF9f
Wk43V2ViQ29yZTVDb2xvcjExdHJhbnNwYXJlbnRFCiBfX1pON1dlYkNvcmU1Q29sb3I1d2hpdGVF
CiBfX1pON1dlYkNvcmU1RnJhbWUxMGNyZWF0ZVZpZXdFUktOU183SW50U2l6ZUVSS05TXzVDb2xv
ckViUzNfYk5TXzEzU2Nyb2xsYmFyTW9kZUViUzdfYgpAQCAtODM3LDkgKzgzNyw5IEBAIF9fWk43
V2ViQ29yZTZFZGl0b3IyMWFwcGx5U3R5bGVUb1NlbGVjdGlvbkVQTlNfMTlDU1NTdHlsZURlY2xh
cmF0aW9uRU5TXzEwRWRpdEFjCiBfX1pON1dlYkNvcmU2RWRpdG9yMjFpc1NlbGVjdGlvbk1pc3Nw
ZWxsZWRFdgogX19aTjdXZWJDb3JlNkVkaXRvcjIzc2V0QmFzZVdyaXRpbmdEaXJlY3Rpb25FMTZX
cml0aW5nRGlyZWN0aW9uCiBfX1pON1dlYkNvcmU2RWRpdG9yMjRhZHZhbmNlVG9OZXh0TWlzc3Bl
bGxpbmdFYgotX19aTjdXZWJDb3JlNkVkaXRvcjI0cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0RVJL
TjNXVEY2U3RyaW5nRWJiCiBfX1pON1dlYkNvcmU2RWRpdG9yMjRjb21wdXRlQW5kU2V0VHlwaW5n
U3R5bGVFUE5TXzE5Q1NTU3R5bGVEZWNsYXJhdGlvbkVOU18xMEVkaXRBY3Rpb25FCiBfX1pON1dl
YkNvcmU2RWRpdG9yMjRpc1NlbGVjdGlvblVuZ3JhbW1hdGljYWxFdgorX19aTjdXZWJDb3JlNkVk
aXRvcjI0cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0RVJLTjNXVEY2U3RyaW5nRWJiCiBfX1pON1dl
YkNvcmU2RWRpdG9yMjZkZWNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbEV2CiBfX1pON1dlYkNvcmU2
RWRpdG9yMjZpbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbEV2CiBfX1pON1dlYkNvcmU2RWRpdG9y
MjZ3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZEVSS04zV1RGNlN0cmluZ0VSS05TMV82VmVjdG9y
SVMyX0xtMEVFRQpAQCAtOTI3LDYgKzkyNyw3IEBAIF9fWk43V2ViQ29yZThJbnRQb2ludEMxRVJL
OF9OU1BvaW50CiBfX1pON1dlYkNvcmU4UG9zaXRpb25DMUVOM1dURjEwUGFzc1JlZlB0cklOU180
Tm9kZUVFRWlOUzBfMTBBbmNob3JUeXBlRQogX19aTjdXZWJDb3JlOFNldHRpbmdzMTRzZXRKYXZh
RW5hYmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxNXNldFdlYkdMRW5hYmxlZEViCitfX1pO
N1dlYkNvcmU4U2V0dGluZ3MxNnNldFNjcmlwdEVuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRp
bmdzMTZzZXRVc2VzUGFnZUNhY2hlRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczE3c2V0UGx1Z2lu
c0VuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMThzZXRET01QYXN0ZUFsbG93ZWRFYgpA
QCAtOTM5LDcgKzk0MCw2IEBAIF9fWk43V2ViQ29yZThTZXR0aW5nczE5bWluRE9NVGltZXJJbnRl
cnZhbEV2CiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxOXNldFNob3dEZWJ1Z0JvcmRlcnNFYgogX19a
TjdXZWJDb3JlOFNldHRpbmdzMjBzZXRDdXJzaXZlRm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNT
dHJpbmdFMTFVU2NyaXB0Q29kZQogX19aTjdXZWJDb3JlOFNldHRpbmdzMjBzZXRGYW50YXN5Rm9u
dEZhbWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdFMTFVU2NyaXB0Q29kZQotX19aTjdXZWJDb3Jl
OFNldHRpbmdzMTZzZXRTY3JpcHRFbmFibGVkRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczIwc2V0
WFNTQXVkaXRvckVuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjFzZXRTaG93UmVwYWlu
dENvdW50ZXJFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjFzZXRTdGFuZGFyZEZvbnRGYW1pbHlF
UktOM1dURjEyQXRvbWljU3RyaW5nRTExVVNjcmlwdENvZGUKQEAgLTEwMjYsNyArMTAyNiw2IEBA
IF9fWk43V2ViQ29yZTlGcmFtZVZpZXcxN3NldFNjcm9sbFBvc2l0aW9uRVJLTlNfOEludFBvaW50
RQogX19aTjdXZWJDb3JlOUZyYW1lVmlldzE3c2V0VHJhY2tzUmVwYWludHNFYgogX19aTjdXZWJD
b3JlOUZyYW1lVmlldzE4dXBkYXRlQ29udHJvbFRpbnRzRXYKIF9fWk43V2ViQ29yZTlGcmFtZVZp
ZXcxOXNjcm9sbEVsZW1lbnRUb1JlY3RFUE5TXzdFbGVtZW50RVJLTlNfN0ludFJlY3RFCi1fX1pO
N1dlYkNvcmU5RnJhbWVWaWV3NDNzZXRTaG91bGRMYXlvdXRGaXhlZEVsZW1lbnRzUmVsYXRpdmVU
b0ZyYW1lRWIKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMGVudGVyQ29tcG9zaXRpbmdNb2RlRXYK
IF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMWZsdXNoRGVmZXJyZWRSZXBhaW50c0V2CiBfX1pON1dl
YkNvcmU5RnJhbWVWaWV3MjJzZXRCYXNlQmFja2dyb3VuZENvbG9yRVJLTlNfNUNvbG9yRQpAQCAt
MTAzNyw2ICsxMDM2LDcgQEAgX19aTjdXZWJDb3JlOUZyYW1lVmlldzI5c2V0U2hvdWxkVXBkYXRl
V2hpbGVPZmZzY3JlZW5FYgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzM3dXBkYXRlTGF5b3V0QW5k
U3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZUV2CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MzhzY3JvbGxQ
b3NpdGlvbkNoYW5nZWRWaWFQbGF0Zm9ybVdpZGdldEV2CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3
MzhzeW5jQ29tcG9zaXRpbmdTdGF0ZUluY2x1ZGluZ1N1YmZyYW1lc0V2CitfX1pON1dlYkNvcmU5
RnJhbWVWaWV3NDNzZXRTaG91bGRMYXlvdXRGaXhlZEVsZW1lbnRzUmVsYXRpdmVUb0ZyYW1lRWIK
IF9fWk43V2ViQ29yZTlGcmFtZVZpZXc2Y3JlYXRlRVBOU181RnJhbWVFCiBfX1pON1dlYkNvcmU5
RnJhbWVWaWV3NmNyZWF0ZUVQTlNfNUZyYW1lRVJLTlNfN0ludFNpemVFCiBfX1pON1dlYkNvcmU5
SFRNTE5hbWVzMTBsaXN0aW5nVGFnRQpAQCAtMTEzMywxMyArMTEzMywxMiBAQCBfX1pOSzdXZWJD
b3JlMTBTY3JvbGxWaWV3MTRzY3JvbGxiYXJNb2Rlc0VSTlNfMTNTY3JvbGxiYXJNb2RlRVMyXwog
X19aTks3V2ViQ29yZTEwU2Nyb2xsVmlldzE0dXNlRml4ZWRMYXlvdXRFdgogX19aTks3V2ViQ29y
ZTEwU2Nyb2xsVmlldzE1Zml4ZWRMYXlvdXRTaXplRXYKIF9fWk5LN1dlYkNvcmUxMFNjcm9sbFZp
ZXcxNmNvbnRlbnRzVG9XaW5kb3dFUktOU183SW50UmVjdEUKLV9fWk5LN1dlYkNvcmUxMFNjcm9s
bFZpZXcxNndpbmRvd1RvQ29udGVudHNFUktOU183SW50UmVjdEUKIF9fWk5LN1dlYkNvcmUxMFNj
cm9sbFZpZXcxNmNvbnRlbnRzVG9XaW5kb3dFUktOU184SW50UG9pbnRFCitfX1pOSzdXZWJDb3Jl
MTBTY3JvbGxWaWV3MTZ3aW5kb3dUb0NvbnRlbnRzRVJLTlNfN0ludFJlY3RFCiBfX1pOSzdXZWJD
b3JlMTBTY3JvbGxWaWV3MTZ3aW5kb3dUb0NvbnRlbnRzRVJLTlNfOEludFBvaW50RQotX19aTks3
V2ViQ29yZTEwU2Nyb2xsVmlldzE4dmlzaWJsZUNvbnRlbnRSZWN0RWIKIF9fWk5LN1dlYkNvcmUx
MFNjcm9sbFZpZXcxOGNvbnRlbnRzVG9Sb290Vmlld0VSS05TXzdJbnRSZWN0RQogX19aTks3V2Vi
Q29yZTEwU2Nyb2xsVmlldzE4Y29udGVudHNUb1Jvb3RWaWV3RVJLTlNfOEludFBvaW50RQotX19a
TjdXZWJDb3JlMTFDYWNoZWRJbWFnZTVpbWFnZUV2CitfX1pOSzdXZWJDb3JlMTBTY3JvbGxWaWV3
MTh2aXNpYmxlQ29udGVudFJlY3RFYgogX19aTks3V2ViQ29yZTExRnJhbWVMb2FkZXIxMGlzQ29t
cGxldGVFdgogX19aTks3V2ViQ29yZTExRnJhbWVMb2FkZXIxNGNhbmNlbGxlZEVycm9yRVJLTlNf
MTVSZXNvdXJjZVJlcXVlc3RFCiBfX1pOSzdXZWJDb3JlMTFGcmFtZUxvYWRlcjE0ZnJhbWVIYXNM
b2FkZWRFdgpAQCAtMTE3NCwxMSArMTE3MywxMSBAQCBfX1pOSzdXZWJDb3JlMTFTY3JpcHRWYWx1
ZTlnZXRTdHJpbmdFUE4zSlNDOUV4ZWNTdGF0ZUVSTjNXVEY2U3RyaW5nRQogX19aTks3V2ViQ29y
ZTEySWNvbkRhdGFiYXNlMTJkYXRhYmFzZVBhdGhFdgogX19aTks3V2ViQ29yZTEySWNvbkRhdGFi
YXNlMjRzaG91bGRTdG9wVGhyZWFkQWN0aXZpdHlFdgogX19aTks3V2ViQ29yZTEySWNvbkRhdGFi
YXNlOWlzRW5hYmxlZEV2Ci1fX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QyM2Fic29sdXRlQm91
bmRpbmdCb3hSZWN0RWIKK19fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDEzc3R5bGVJblJlZ2lv
bkV2CiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QxNGVuY2xvc2luZ0xheWVyRXYKIF9fWk5L
N1dlYkNvcmUxMlJlbmRlck9iamVjdDE1bG9jYWxUb0Fic29sdXRlRVJLTlNfMTBGbG9hdFBvaW50
RWJiCitfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QyM2Fic29sdXRlQm91bmRpbmdCb3hSZWN0
RWIKIF9fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDdjaGlsZEF0RWoKLV9fWk5LN1dlYkNvcmUx
MlJlbmRlck9iamVjdDEzc3R5bGVJblJlZ2lvbkV2CiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJXaWRn
ZXQxNHdpbmRvd0NsaXBSZWN0RXYKIF9fWk5LN1dlYkNvcmUxMlNoYXJlZEJ1ZmZlcjExZ2V0U29t
ZURhdGFFUlBLY2oKIF9fWk5LN1dlYkNvcmUxMlNoYXJlZEJ1ZmZlcjRkYXRhRXYKQEAgLTE0OTAs
NiArMTQ4OSw3IEBAIF93a0dldEhUVFBDb29raWVBY2NlcHRQb2xpY3kKIF93a0dldEhUVFBQaXBl
bGluaW5nUHJpb3JpdHkKIF93a0dldEh5cGhlbmF0aW9uTG9jYXRpb25CZWZvcmVJbmRleAogX3dr
R2V0TUlNRVR5cGVGb3JFeHRlbnNpb24KK193a0dldE5TRXZlbnRLZXlDaGFyCiBfd2tHZXROU1VS
TFJlc3BvbnNlQ2FsY3VsYXRlZEV4cGlyYXRpb24KIF93a0dldE5TVVJMUmVzcG9uc2VMYXN0TW9k
aWZpZWREYXRlCiBfd2tHZXROU1VSTFJlc3BvbnNlTXVzdFJldmFsaWRhdGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxODBhYTMz
MDcxODE0OWEzN2MzZTkwOTI2NWQ2YTlhYzcyZjU2NTg3Li5kMjFjYmFjZGYxZjIzMWU1MjU0ZDA3
NjVmNjdiNTJiNDNjYTQyZWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MjUxLDYgKzUyNTEsOCBAQAogCQlCQ0E4QzgxRjEx
RTNEMzY5MDA4MTJGQjcgLyogQmFja0ZvcndhcmRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQThDODFEMTFFM0QzNjkwMDgxMkZC
NyAvKiBCYWNrRm9yd2FyZENvbnRyb2xsZXIuY3BwICovOyB9OwogCQlCQ0E4Q0E1RjExRTRFNkQx
MDA4MTJGQjcgLyogQmFja0ZvcndhcmRMaXN0SW1wbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0E4Q0E1RDExRTRFNkQxMDA4MTJGQjcgLyogQmFj
a0ZvcndhcmRMaXN0SW1wbC5jcHAgKi87IH07CiAJCUJDQThDQTYwMTFFNEU2RDEwMDgxMkZCNyAv
KiBCYWNrRm9yd2FyZExpc3RJbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQ0E4Q0E1RTExRTRFNkQxMDA4MTJGQjcgLyogQmFja0ZvcndhcmRMaXN0
SW1wbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUJDQUE0ODZGMTRBMDUyNTMwMDg4RkFDNCAvKiBQbGF0Zm9ybUV2ZW50RmFjdG9yeS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQUE0ODZEMTRBMDUy
NTMwMDg4RkFDNCAvKiBQbGF0Zm9ybUV2ZW50RmFjdG9yeS5tbSAqLzsgfTsKKwkJQkNBQTQ4NzAx
NEEwNTI1MzAwODhGQUM0IC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0FBNDg2RTE0QTA1MjUzMDA4OEZBQzQg
LyogUGxhdGZvcm1FdmVudEZhY3RvcnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlCQ0FBOTBDMzBBN0VCQTYwMDA4QjEyMjkgLyogU2Nyb2xsYmFy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQUE5
MEMyMEE3RUJBNjAwMDhCMTIyOSAvKiBTY3JvbGxiYXIuY3BwICovOyB9OwogCQlCQ0FCNDE4MTEz
RTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDQUI0MTdGMTNFMzU2RTgwMEQ4QUFGMyAvKiBSZWdpb24uY3Bw
ICovOyB9OwogCQlCQ0FCNDE4MjEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0FCNDE4MDEzRTM1NkU4MDBE
OEFBRjMgLyogUmVnaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTEyNjE4LDYgKzEyNjIwLDggQEAKIAkJQkNBOEM4MUQxMUUzRDM2OTAwODEy
RkI3IC8qIEJhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBCYWNrRm9yd2FyZENvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQ0E4Q0E1RDExRTRFNkQxMDA4MTJGQjcgLyogQmFja0ZvcndhcmRMaXN0
SW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYWNrRm9yd2Fy
ZExpc3RJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNBOENBNUUxMUU0
RTZEMTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkTGlzdEltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQmFja0ZvcndhcmRMaXN0SW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlCQ0FBNDg2RDE0QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZvcm1FdmVudEZhY3Rv
cnkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbGF0Zm9ybUV2
ZW50RmFjdG9yeS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNBQTQ4NkUxNEEw
NTI1MzAwODhGQUM0IC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtRXZlbnRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDQUE5MEMyMEE3RUJBNjAwMDhCMTIyOSAvKiBTY3JvbGxiYXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbGJhci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQUI0MTdGMTNFMzU2RTgwMEQ4QUFGMyAvKiBSZWdp
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVnaW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNBQjQxODAxM0UzNTZFODAwRDhBQUYzIC8q
IFJlZ2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NjU1LDYgKzE1NjU5LDggQEAKIAkJCQk5Mzgw
RjQ3NzA5QTExQUNDMDAxRkRCMzQgLyogV2lkZ2V0TWFjLm1tICovLAogCQkJCUNERUE3NjJFMTQ2
MDg0REUwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0EuY3BwICovLAogCQkJCUNERUE3NjJGMTQ2
MDg0RUUwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0EuaCAqLywKKwkJCQlCQ0FBNDg2RDE0QTA1
MjUzMDA4OEZBQzQgLyogUGxhdGZvcm1FdmVudEZhY3RvcnkubW0gKi8sCisJCQkJQkNBQTQ4NkUx
NEEwNTI1MzAwODhGQUM0IC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5LmggKi8sCiAJCQkpOwogCQkJ
cGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNDk1Myw3ICsyNDk1
OSw3IEBACiAJCQkJMUEyRjlEN0ExNDk2OEM3NDAwNjVBQzYzIC8qIFNjcm9sbGluZ0Nvb3JkaW5h
dG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUE3MTYwQjE0OUJDNERCMDAxNkVDMTkgLyogVGls
ZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMzdDREVCRDE0OUVGMjAzMDA0MjA5MEQgLyog
Q29sb3JDaG9vc2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQkxQUM2OTI2QTE0QTEyNTMy
MDBCRDg1RjEgLyogU2Nyb2xsYWJsZUFyZWFDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUJD
QUE0ODcwMTRBMDUyNTMwMDg4RkFDNCAvKiBQbGF0Zm9ybUV2ZW50RmFjdG9yeS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkBAIC0yNzg1OCw2ICsyNzg2NCw3IEBACiAJCQkJQTgwQTk0MjMxNDlGMjI1RTAwOTg5
MjkxIC8qIEpTRE9NV2luZG93V2ViQXVkaW9DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTgwQTk0MjUxNDlGMjI3MTAwOTg5MjkxIC8qIEpTRE9NV2luZG93V2ViU29ja2V0Q3VzdG9tLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTUyRjUyRTExMTRBMDEzNEYwMEFDQzM5NyAvKiBOU1Njcm9s
bGVySW1wRGV0YWlscy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUJDQUE0ODZGMTRBMDUyNTMwMDg4
RkFDNCAvKiBQbGF0Zm9ybUV2ZW50RmFjdG9yeS5tbSBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCmluZGV4IDgyYWE3OWUwMzQzNzllMTI4
Y2Y0YjY3OGRjNzUyZGQzYjNhYzFiY2UuLjVmOTExMzIxODg0MzRhMjY3NGUyZDM0ZTg1Zjc4ZGY1
MjRlMzA4YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxl
ck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0K
QEAgLTQxLDggKzQxLDcgQEAKICNpbmNsdWRlICJNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRz
LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQYWdlLmgiCi0jaW5j
bHVkZSAiUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2
ZW50LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1FdmVudEZhY3RvcnkuaCIKICNpbmNsdWRlICJSZW5k
ZXJXaWRnZXQuaCIKICNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbmNs
dWRlICJTY3JvbGxiYXIuaCIKQEAgLTEwNCw5ICsxMDMsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6
d2hlZWxFdmVudChOU0V2ZW50ICpldmVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
Q3VycmVudEV2ZW50U2NvcGUgc2NvcGUoZXZlbnQpOwotCi0gICAgUGxhdGZvcm1XaGVlbEV2ZW50
IHdoZWVsRXZlbnQoZXZlbnQsIHBhZ2UtPmNocm9tZSgpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKSk7
Ci0gICAgcmV0dXJuIGhhbmRsZVdoZWVsRXZlbnQod2hlZWxFdmVudCk7CisgICAgcmV0dXJuIGhh
bmRsZVdoZWVsRXZlbnQoUGxhdGZvcm1FdmVudEZhY3Rvcnk6OmNyZWF0ZVBsYXRmb3JtV2hlZWxF
dmVudChldmVudCwgcGFnZS0+Y2hyb21lKCktPnBsYXRmb3JtUGFnZUNsaWVudCgpKSk7CiB9CiAK
IGJvb2wgRXZlbnRIYW5kbGVyOjprZXlFdmVudChOU0V2ZW50ICpldmVudCkKQEAgLTExNiw3ICsx
MTMsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6a2V5RXZlbnQoTlNFdmVudCAqZXZlbnQpCiAgICAg
QVNTRVJUKFtldmVudCB0eXBlXSA9PSBOU0tleURvd24gfHwgW2V2ZW50IHR5cGVdID09IE5TS2V5
VXApOwogCiAgICAgQ3VycmVudEV2ZW50U2NvcGUgc2NvcGUoZXZlbnQpOwotICAgIHJldHVybiBr
ZXlFdmVudChQbGF0Zm9ybUtleWJvYXJkRXZlbnQoZXZlbnQpKTsKKyAgICByZXR1cm4ga2V5RXZl
bnQoUGxhdGZvcm1FdmVudEZhY3Rvcnk6OmNyZWF0ZVBsYXRmb3JtS2V5Ym9hcmRFdmVudChldmVu
dCkpOwogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIApAQCAtNjQ2LDcgKzY0Myw3
IEBAIFBsYXRmb3JtTW91c2VFdmVudCBFdmVudEhhbmRsZXI6OmN1cnJlbnRQbGF0Zm9ybU1vdXNl
RXZlbnQoKSBjb25zdAogICAgIE5TVmlldyAqd2luZG93VmlldyA9IG5pbDsKICAgICBpZiAoUGFn
ZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgd2luZG93VmlldyA9IHBhZ2UtPmNo
cm9tZSgpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKTsKLSAgICByZXR1cm4gUGxhdGZvcm1Nb3VzZUV2
ZW50KGN1cnJlbnROU0V2ZW50KCksIHdpbmRvd1ZpZXcpOworICAgIHJldHVybiBQbGF0Zm9ybUV2
ZW50RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1Nb3VzZUV2ZW50KGN1cnJlbnROU0V2ZW50KCksIHdp
bmRvd1ZpZXcpOwogfQogCiBib29sIEV2ZW50SGFuZGxlcjo6ZXZlbnRBY3RpdmF0ZWRWaWV3KGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybUV2ZW50LmgKaW5kZXggYTMyZDI4MGIyYTYzMjExYzg0ZTQ3NmNiOGQxODhhMDE5
NGQ4MDFiMi4uNzdkNDQ3ZTRjZWVkMWMwMWRlYzE2NzhhMGZkNGRhMGUxZWUyNjRjNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1FdmVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXZlbnQuaApAQCAtNjUsNTkgKzY1LDU5IEBAIHB1
YmxpYzoKICNlbmRpZgogICAgIH07CiAKLSAgICBlbnVtIE1vZGlmaWVyS2V5IHsKLSAgICAgICAg
QWx0S2V5ID0gMSA8PCAwLAotICAgICAgICBDdHJsS2V5ID0gMSA8PCAxLAotICAgICAgICBNZXRh
S2V5ID0gMSA8PCAyLAotICAgICAgICBTaGlmdEtleSA9IDEgPDwgMworICAgIGVudW0gTW9kaWZp
ZXJzIHsKKyAgICAgICAgQWx0S2V5ICAgICAgPSAxIDw8IDAsCisgICAgICAgIEN0cmxLZXkgICAg
ID0gMSA8PCAxLAorICAgICAgICBNZXRhS2V5ICAgICA9IDEgPDwgMiwKKyAgICAgICAgU2hpZnRL
ZXkgICAgPSAxIDw8IDMsCiAgICAgfTsKIAogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PFR5cGU+KG1fdHlwZSk7IH0KIAotICAgIGJvb2wgc2hpZnRLZXkoKSBjb25z
dCB7IHJldHVybiBtX3NoaWZ0S2V5OyB9Ci0gICAgYm9vbCBjdHJsS2V5KCkgY29uc3QgeyByZXR1
cm4gbV9jdHJsS2V5OyB9Ci0gICAgYm9vbCBhbHRLZXkoKSBjb25zdCB7IHJldHVybiBtX2FsdEtl
eTsgfQotICAgIGJvb2wgbWV0YUtleSgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YUtleTsgfQorICAg
IGJvb2wgc2hpZnRLZXkoKSBjb25zdCB7IHJldHVybiBtX21vZGlmaWVycyAmIFNoaWZ0S2V5OyB9
CisgICAgYm9vbCBjdHJsS2V5KCkgY29uc3QgeyByZXR1cm4gbV9tb2RpZmllcnMgJiBDdHJsS2V5
OyB9CisgICAgYm9vbCBhbHRLZXkoKSBjb25zdCB7IHJldHVybiBtX21vZGlmaWVycyAmIEFsdEtl
eTsgfQorICAgIGJvb2wgbWV0YUtleSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kaWZpZXJzICYgTWV0
YUtleTsgfQogCi0gICAgdW5zaWduZWQgbW9kaWZpZXJzKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiAoYWx0S2V5KCkgPyBBbHRLZXkgOiAwKQotICAgICAgICAgICAgfCAoY3RybEtleSgp
ID8gQ3RybEtleSA6IDApCi0gICAgICAgICAgICB8IChtZXRhS2V5KCkgPyBNZXRhS2V5IDogMCkK
LSAgICAgICAgICAgIHwgKHNoaWZ0S2V5KCkgPyBTaGlmdEtleSA6IDApOwotICAgIH0KKyAgICB1
bnNpZ25lZCBtb2RpZmllcnMoKSBjb25zdCB7IHJldHVybiBtX21vZGlmaWVyczsgfQogCiAgICAg
ZG91YmxlIHRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZXN0YW1wOyB9CiAKIHByb3Rl
Y3RlZDoKICAgICBQbGF0Zm9ybUV2ZW50KCkKICAgICAgICAgOiBtX3R5cGUoTm9UeXBlKQotICAg
ICAgICAsIG1fc2hpZnRLZXkoZmFsc2UpCi0gICAgICAgICwgbV9jdHJsS2V5KGZhbHNlKQotICAg
ICAgICAsIG1fYWx0S2V5KGZhbHNlKQotICAgICAgICAsIG1fbWV0YUtleShmYWxzZSkKKyAgICAg
ICAgLCBtX21vZGlmaWVycygwKQogICAgICAgICAsIG1fdGltZXN0YW1wKDApCiAgICAgewogICAg
IH0KIAogICAgIFBsYXRmb3JtRXZlbnQoVHlwZSB0eXBlKQogICAgICAgICA6IG1fdHlwZSh0eXBl
KQotICAgICAgICAsIG1fc2hpZnRLZXkoZmFsc2UpCi0gICAgICAgICwgbV9jdHJsS2V5KGZhbHNl
KQotICAgICAgICAsIG1fYWx0S2V5KGZhbHNlKQotICAgICAgICAsIG1fbWV0YUtleShmYWxzZSkK
KyAgICAgICAgLCBtX21vZGlmaWVycygwKQogICAgICAgICAsIG1fdGltZXN0YW1wKDApCiAgICAg
ewogICAgIH0KIAorICAgIFBsYXRmb3JtRXZlbnQoVHlwZSB0eXBlLCBNb2RpZmllcnMgbW9kaWZp
ZXJzLCBkb3VibGUgdGltZXN0YW1wKQorICAgICAgICA6IG1fdHlwZSh0eXBlKQorICAgICAgICAs
IG1fbW9kaWZpZXJzKG1vZGlmaWVycykKKyAgICAgICAgLCBtX3RpbWVzdGFtcCh0aW1lc3RhbXAp
CisgICAgeworICAgIH0KKwogICAgIFBsYXRmb3JtRXZlbnQoVHlwZSB0eXBlLCBib29sIHNoaWZ0
S2V5LCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIG1ldGFLZXksIGRvdWJsZSB0aW1l
c3RhbXApCiAgICAgICAgIDogbV90eXBlKHR5cGUpCi0gICAgICAgICwgbV9zaGlmdEtleShzaGlm
dEtleSkKLSAgICAgICAgLCBtX2N0cmxLZXkoY3RybEtleSkKLSAgICAgICAgLCBtX2FsdEtleShh
bHRLZXkpCi0gICAgICAgICwgbV9tZXRhS2V5KG1ldGFLZXkpCisgICAgICAgICwgbV9tb2RpZmll
cnMoMCkKICAgICAgICAgLCBtX3RpbWVzdGFtcCh0aW1lc3RhbXApCiAgICAgeworICAgICAgICBp
ZiAoc2hpZnRLZXkpCisgICAgICAgICAgICBtX21vZGlmaWVycyB8PSBTaGlmdEtleTsKKyAgICAg
ICAgaWYgKGN0cmxLZXkpCisgICAgICAgICAgICBtX21vZGlmaWVycyB8PSBDdHJsS2V5OworICAg
ICAgICBpZiAoYWx0S2V5KQorICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gQWx0S2V5OworICAg
ICAgICBpZiAobWV0YUtleSkKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1ldGFLZXk7CiAg
ICAgfQogCiAgICAgLy8gRXhwbGljaXQgcHJvdGVjdGVkIGRlc3RydWN0b3Igc28gdGhhdCBwZW9w
bGUgZG9uJ3QgYWNjaWRlbnRhbGx5CkBAIC0xMjcsMTAgKzEyNyw3IEBAIHByb3RlY3RlZDoKICAg
ICB9CiAKICAgICB1bnNpZ25lZCBtX3R5cGU7Ci0gICAgYm9vbCBtX3NoaWZ0S2V5OwotICAgIGJv
b2wgbV9jdHJsS2V5OwotICAgIGJvb2wgbV9hbHRLZXk7Ci0gICAgYm9vbCBtX21ldGFLZXk7Cisg
ICAgdW5zaWduZWQgbV9tb2RpZmllcnM7CiAgICAgZG91YmxlIG1fdGltZXN0YW1wOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlRXZlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUV2ZW50LmgKaW5kZXgg
NTVmZThlZmE4NjE4OTY4YzE4MGUwZjA2M2ViOTdmZTdkNmZjZjdlNS4uZTMxM2JlNTBlMzkzMmY5
Y2UxY2JjNTViNDAxZGEyNzYzMmE0NTQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1HZXN0dXJlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybUdlc3R1cmVFdmVudC5oCkBAIC02MCw3ICs2MCw2IEBAIHB1YmxpYzoKIHByb3Rl
Y3RlZDoKICAgICBJbnRQb2ludCBtX3Bvc2l0aW9uOwogICAgIEludFBvaW50IG1fZ2xvYmFsUG9z
aXRpb247Ci0gICAgZG91YmxlIG1fdGltZXN0YW1wOwogICAgIGZsb2F0IG1fZGVsdGFYOwogICAg
IGZsb2F0IG1fZGVsdGFZOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1LZXlib2FyZEV2ZW50LmgKaW5kZXggMmVkMWEwYWY4OGRhZWJkYzViOTQzMTZlMmQyM2ExMmMz
OGYxNDZmNi4uZjE1NDk2NjczMmFkOTQ5YThkOGIzMDA5NjIzNjcxNTc5NzMyODQ4OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgKQEAgLTcw
LDEzICs3MCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgogICAgICAgICBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQoKQogICAgICAgICAgICAgOiBQbGF0Zm9ybUV2ZW50KFBsYXRm
b3JtRXZlbnQ6OktleURvd24pCi0gICAgICAgICAgICAsIG1fYXV0b1JlcGVhdChmYWxzZSkKICAg
ICAgICAgICAgICwgbV93aW5kb3dzVmlydHVhbEtleUNvZGUoMCkKICAgICAgICAgICAgICwgbV9u
YXRpdmVWaXJ0dWFsS2V5Q29kZSgwKQorICAgICAgICAgICAgLCBtX21hY0NoYXJDb2RlKDApCisg
ICAgICAgICAgICAsIG1fYXV0b1JlcGVhdChmYWxzZSkKICAgICAgICAgICAgICwgbV9pc0tleXBh
ZChmYWxzZSkKLSNpZiBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JNKENIUk9NSVVNKQogICAgICAg
ICAgICAgLCBtX2lzU3lzdGVtS2V5KGZhbHNlKQotI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQog
ICAgICAgICAgICAgLCBtX2dka0V2ZW50S2V5KDApCiAjZW5kaWYKQEAgLTg2LDYgKzg1LDIwIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgewogICAgICAgICB9CiAKKyAgICAgICAgUGxh
dGZvcm1LZXlib2FyZEV2ZW50KFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBT
dHJpbmcmIHVubW9kaWZpZWRUZXh0LCBjb25zdCBTdHJpbmcmIGtleUlkZW50aWZpZXIsIGludCB3
aW5kb3dzVmlydHVhbEtleUNvZGUsIGludCBuYXRpdmVWaXJ0dWFsS2V5Q29kZSwgaW50IG1hY0No
YXJDb2RlLCBib29sIGlzQXV0b1JlcGVhdCwgYm9vbCBpc0tleXBhZCwgYm9vbCBpc1N5c3RlbUtl
eSwgTW9kaWZpZXJzIG1vZGlmaWVycywgZG91YmxlIHRpbWVzdGFtcCkKKyAgICAgICAgICAgIDog
UGxhdGZvcm1FdmVudCh0eXBlLCBtb2RpZmllcnMsIHRpbWVzdGFtcCkKKyAgICAgICAgICAgICwg
bV90ZXh0KHRleHQpCisgICAgICAgICAgICAsIG1fdW5tb2RpZmllZFRleHQodW5tb2RpZmllZFRl
eHQpCisgICAgICAgICAgICAsIG1fa2V5SWRlbnRpZmllcihrZXlJZGVudGlmaWVyKQorICAgICAg
ICAgICAgLCBtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSh3aW5kb3dzVmlydHVhbEtleUNvZGUpCisg
ICAgICAgICAgICAsIG1fbmF0aXZlVmlydHVhbEtleUNvZGUobmF0aXZlVmlydHVhbEtleUNvZGUp
CisgICAgICAgICAgICAsIG1fbWFjQ2hhckNvZGUobWFjQ2hhckNvZGUpCisgICAgICAgICAgICAs
IG1fYXV0b1JlcGVhdChpc0F1dG9SZXBlYXQpCisgICAgICAgICAgICAsIG1faXNLZXlwYWQoaXNL
ZXlwYWQpCisgICAgICAgICAgICAsIG1faXNTeXN0ZW1LZXkoaXNTeXN0ZW1LZXkpCisgICAgICAg
IHsKKyAgICAgICAgfQorCiAgICAgICAgIHZvaWQgZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFR5
cGUsIGJvb2wgYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSA9IGZhbHNlKTsgLy8gT25seSB1c2Vk
IG9uIHBsYXRmb3JtcyB0aGF0IG5lZWQgaXQsIGkuZS4gdGhvc2UgdGhhdCBnZW5lcmF0ZSBLZXlE
b3duIGV2ZW50cy4KIAogICAgICAgICAvLyBUZXh0IGFzIGFzIGdlbmVyYXRlZCBieSBwcm9jZXNz
aW5nIGEgdmlydHVhbCBrZXkgY29kZSB3aXRoIGEga2V5Ym9hcmQgbGF5b3V0CkBAIC0xMDEsMjQg
KzExNCwyNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIE90aGVyd2lzZSwgc2Ft
ZSBhcyB0ZXh0KCkuCiAgICAgICAgIFN0cmluZyB1bm1vZGlmaWVkVGV4dCgpIGNvbnN0IHsgcmV0
dXJuIG1fdW5tb2RpZmllZFRleHQ7IH0KIAorICAgICAgICBTdHJpbmcga2V5SWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1fa2V5SWRlbnRpZmllcjsgfQorCiAgICAgICAgIC8vIE1vc3QgY29t
cGF0aWJsZSBXaW5kb3dzIHZpcnR1YWwga2V5IGNvZGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBldmVu
dC4KICAgICAgICAgLy8gWmVybyBmb3IgQ2hhciBldmVudHMuCiAgICAgICAgIGludCB3aW5kb3dz
VmlydHVhbEtleUNvZGUoKSBjb25zdCB7IHJldHVybiBtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZTsg
fQogICAgICAgICB2b2lkIHNldFdpbmRvd3NWaXJ0dWFsS2V5Q29kZShpbnQgY29kZSkgeyBtX3dp
bmRvd3NWaXJ0dWFsS2V5Q29kZSA9IGNvZGU7IH0KIAogICAgICAgICBpbnQgbmF0aXZlVmlydHVh
bEtleUNvZGUoKSBjb25zdCB7IHJldHVybiBtX25hdGl2ZVZpcnR1YWxLZXlDb2RlOyB9Ci0gICAg
ICAgIHZvaWQgc2V0TmF0aXZlVmlydHVhbEtleUNvZGUoaW50IGNvZGUpIHsgbV9uYXRpdmVWaXJ0
dWFsS2V5Q29kZSA9IGNvZGU7IH0KKyAgICAgICAgaW50IG1hY0NoYXJDb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9tYWNDaGFyQ29kZTsgfQogCi0gICAgICAgIFN0cmluZyBrZXlJZGVudGlmaWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9rZXlJZGVudGlmaWVyOyB9CiAgICAgICAgIGJvb2wgaXNBdXRvUmVw
ZWF0KCkgY29uc3QgeyByZXR1cm4gbV9hdXRvUmVwZWF0OyB9Ci0gICAgICAgIHZvaWQgc2V0SXNB
dXRvUmVwZWF0KGJvb2wgaW4pIHsgbV9hdXRvUmVwZWF0ID0gaW47IH0KICAgICAgICAgYm9vbCBp
c0tleXBhZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNLZXlwYWQ7IH0KKyAgICAgICAgYm9vbCBpc1N5
c3RlbUtleSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTeXN0ZW1LZXk7IH0KIAogICAgICAgICBzdGF0
aWMgYm9vbCBjdXJyZW50Q2Fwc0xvY2tTdGF0ZSgpOwogICAgICAgICBzdGF0aWMgdm9pZCBnZXRD
dXJyZW50TW9kaWZpZXJTdGF0ZShib29sJiBzaGlmdEtleSwgYm9vbCYgY3RybEtleSwgYm9vbCYg
YWx0S2V5LCBib29sJiBtZXRhS2V5KTsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICAgICAgUGxh
dGZvcm1LZXlib2FyZEV2ZW50KE5TRXZlbnQqKTsKICAgICAgICAgTlNFdmVudCogbWFjRXZlbnQo
KSBjb25zdCB7IHJldHVybiBtX21hY0V2ZW50LmdldCgpOyB9CiAjZW5kaWYKIApAQCAtMTQ3LDEw
ICsxNjAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRF
dmVudCh3eEtleUV2ZW50Jik7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKFdJTikgfHwgUExBVEZP
Uk0oQ0hST01JVU0pCi0gICAgICAgIGJvb2wgaXNTeXN0ZW1LZXkoKSBjb25zdCB7IHJldHVybiBt
X2lzU3lzdGVtS2V5OyB9Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKEVGTCkKICAgICAgICAgUGxh
dGZvcm1LZXlib2FyZEV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24qKTsKICAgICAgICAg
UGxhdGZvcm1LZXlib2FyZEV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfS2V5X1VwKik7CkBAIC0xNjAs
MTcgKzE2OSwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFN0cmluZyBtX3RleHQ7
CiAgICAgICAgIFN0cmluZyBtX3VubW9kaWZpZWRUZXh0OwogICAgICAgICBTdHJpbmcgbV9rZXlJ
ZGVudGlmaWVyOwotICAgICAgICBib29sIG1fYXV0b1JlcGVhdDsKICAgICAgICAgaW50IG1fd2lu
ZG93c1ZpcnR1YWxLZXlDb2RlOwogICAgICAgICBpbnQgbV9uYXRpdmVWaXJ0dWFsS2V5Q29kZTsK
KyAgICAgICAgaW50IG1fbWFjQ2hhckNvZGU7CisgICAgICAgIGJvb2wgbV9hdXRvUmVwZWF0Owog
ICAgICAgICBib29sIG1faXNLZXlwYWQ7CisgICAgICAgIGJvb2wgbV9pc1N5c3RlbUtleTsKIAog
I2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgUmV0YWluUHRyPE5TRXZlbnQ+IG1fbWFjRXZlbnQ7
CiAjZW5kaWYKLSNpZiBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JNKENIUk9NSVVNKQotICAgICAg
ICBib29sIG1faXNTeXN0ZW1LZXk7Ci0jZW5kaWYKICNpZiBQTEFURk9STShHVEspCiAgICAgICAg
IEdka0V2ZW50S2V5KiBtX2dka0V2ZW50S2V5OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtTW91c2VFdmVudC5oCmluZGV4IGIzYTQwNjdkNzE4MGNiYTQ4NWFjYTY3
NzA5OTczMGNmMzVmN2ZhOTAuLmEzZGNjZTQ5MGQzZjc4MDYyZDllYzc4YjY4MTdkMzk4ODllNGU0
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtTW91c2VFdmVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtTW91c2VFdmVudC5oCkBA
IC0xMTksMTIgKzExOSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogCiAjaWYgUExB
VEZPUk0oTUFDKQotI2lmIGRlZmluZWQoX19PQkpDX18pCi0gICAgICAgIFBsYXRmb3JtTW91c2VF
dmVudChOU0V2ZW50ICosIE5TVmlldyAqd2luZG93Vmlldyk7Ci0jZW5kaWYKLSAgICAgICAgUGxh
dGZvcm1Nb3VzZUV2ZW50KGludCB4LCBpbnQgeSwgaW50IGdsb2JhbFgsIGludCBnbG9iYWxZLCBN
b3VzZUJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6VHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBjbGlja0NvdW50LCBib29sIHNoaWZ0S2V5LCBib29sIGN0cmxLZXksIGJvb2wgYWx0
S2V5LCBib29sIG1ldGFLZXksIGRvdWJsZSB0aW1lc3RhbXAsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBtb2RpZmllckZsYWdzLCBpbnQgZXZlbnROdW1iZXIpOwogICAgICAg
ICBpbnQgZXZlbnROdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2V2ZW50TnVtYmVyOyB9CiAjZW5k
aWYKIApAQCAtMTYwLDEyICsxNTQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICAg
ICB9OwogCi0jaWYgUExBVEZPUk0oTUFDKSAmJiBkZWZpbmVkKF9fT0JKQ19fKQotICAgIEludFBv
aW50IGdsb2JhbFBvaW50KGNvbnN0IE5TUG9pbnQmIHdpbmRvd1BvaW50LCBOU1dpbmRvdyAqKTsK
LSAgICBJbnRQb2ludCBwb2ludEZvckV2ZW50KE5TRXZlbnQgKiwgTlNWaWV3ICp3aW5kb3dWaWV3
KTsKLSAgICBJbnRQb2ludCBnbG9iYWxQb2ludEZvckV2ZW50KE5TRXZlbnQgKik7Ci0jZW5kaWYK
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gUGxhdGZvcm1Nb3VzZUV2ZW50
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKaW5kZXgg
YmE5MTA1NDgyOWFlNmUyZjY5ZDE2MGZhYmYzZGRmZWUzM2Y0YmMzZS4uOGU5OWU0NzYyZmQwN2Iy
ZjVjM2RiOGQxYjlhN2Q0NzU2NTViY2U2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1XaGVlbEV2ZW50LmgKQEAgLTE1NCwxNyArMTU0LDEwIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2Vf
V2hlZWwqKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKQotI2lmIGRlZmluZWQoX19PQkpD
X18pCi0gICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudChOU0V2ZW50ICosIE5TVmlldyAqd2luZG93
Vmlldyk7Ci0jZW5kaWYKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0o
Q0hST01JVU0pICYmIE9TKERBUldJTikpCiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNl
IHBoYXNlKCkgY29uc3QgeyByZXR1cm4gbV9waGFzZTsgfQogICAgICAgICBQbGF0Zm9ybVdoZWVs
RXZlbnRQaGFzZSBtb21lbnR1bVBoYXNlKCkgY29uc3QgeyByZXR1cm4gbV9tb21lbnR1bVBoYXNl
OyB9CiAgICAgICAgIGJvb2wgaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcygpIGNvbnN0IHsgcmV0
dXJuIG1faGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhczsgfQotICAgICAgICBkb3VibGUgdGltZXN0
YW1wKCkgY29uc3QgeyByZXR1cm4gbV90aW1lc3RhbXA7IH0KICNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oUVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvS2V5RXZlbnRN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvS2V5RXZlbnRNYWMubW0KaW5kZXgg
NDRkNmNjMzBjMmY4NmEyNGMyN2RmMDAwMDJkZjRhOTM5YzczMzU3YS4uNGJkZjYyMDdiNmM1NWYx
MmUyODdhNzE0MWEyNzBlYTkyZDIyZGUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL0tleUV2ZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9LZXlFdmVudE1hYy5tbQpAQCAtMzcsMTg3ICszNyw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGJvb2wgaXNLZXlwYWRFdmVudChOU0V2
ZW50KiBldmVudCkKLXsKLSAgICAvLyBDaGVjayB0aGF0IHRoaXMgaXMgdGhlIHR5cGUgb2YgZXZl
bnQgdGhhdCBoYXMgYSBrZXlDb2RlLgotICAgIHN3aXRjaCAoW2V2ZW50IHR5cGVdKSB7Ci0gICAg
ICAgIGNhc2UgTlNLZXlEb3duOgotICAgICAgICBjYXNlIE5TS2V5VXA6Ci0gICAgICAgIGNhc2Ug
TlNGbGFnc0NoYW5nZWQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoW2V2ZW50IG1vZGlmaWVy
RmxhZ3NdICYgTlNOdW1lcmljUGFkS2V5TWFzaykKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAg
ICBzd2l0Y2ggKFtldmVudCBrZXlDb2RlXSkgewotICAgICAgICBjYXNlIDcxOiAvLyBDbGVhcgot
ICAgICAgICBjYXNlIDgxOiAvLyA9Ci0gICAgICAgIGNhc2UgNzU6IC8vIC8KLSAgICAgICAgY2Fz
ZSA2NzogLy8gKgotICAgICAgICBjYXNlIDc4OiAvLyAtCi0gICAgICAgIGNhc2UgNjk6IC8vICsK
LSAgICAgICAgY2FzZSA3NjogLy8gRW50ZXIKLSAgICAgICAgY2FzZSA2NTogLy8gLgotICAgICAg
ICBjYXNlIDgyOiAvLyAwCi0gICAgICAgIGNhc2UgODM6IC8vIDEKLSAgICAgICAgY2FzZSA4NDog
Ly8gMgotICAgICAgICBjYXNlIDg1OiAvLyAzCi0gICAgICAgIGNhc2UgODY6IC8vIDQKLSAgICAg
ICAgY2FzZSA4NzogLy8gNQotICAgICAgICBjYXNlIDg4OiAvLyA2Ci0gICAgICAgIGNhc2UgODk6
IC8vIDcKLSAgICAgICAgY2FzZSA5MTogLy8gOAotICAgICAgICBjYXNlIDkyOiAvLyA5Ci0gICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgfQotCi0gICAgIHJldHVybiBmYWxzZTsKLX0KLQot
c3RhdGljIGlubGluZSBib29sIGlzS2V5VXBFdmVudChOU0V2ZW50ICpldmVudCkKLXsKLSAgICBp
ZiAoW2V2ZW50IHR5cGVdICE9IE5TRmxhZ3NDaGFuZ2VkKQotICAgICAgICByZXR1cm4gW2V2ZW50
IHR5cGVdID09IE5TS2V5VXA7Ci0gICAgLy8gRklYTUU6IFRoaXMgbG9naWMgZmFpbHMgaWYgdGhl
IHVzZXIgcHJlc3NlcyBib3RoIFNoaWZ0IGtleXMgYXQgb25jZSwgZm9yIGV4YW1wbGU6Ci0gICAg
Ly8gd2UgdHJlYXQgcmVsZWFzaW5nIG9uZSBvZiB0aGVtIGFzIGtleURvd24uCi0gICAgc3dpdGNo
IChbZXZlbnQga2V5Q29kZV0pIHsKLSAgICAgICAgY2FzZSA1NDogLy8gUmlnaHQgQ29tbWFuZAot
ICAgICAgICBjYXNlIDU1OiAvLyBMZWZ0IENvbW1hbmQKLSAgICAgICAgICAgIHJldHVybiAoW2V2
ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb21tYW5kS2V5TWFzaykgPT0gMDsKLQotICAgICAgICBj
YXNlIDU3OiAvLyBDYXBzbG9jawotICAgICAgICAgICAgcmV0dXJuIChbZXZlbnQgbW9kaWZpZXJG
bGFnc10gJiBOU0FscGhhU2hpZnRLZXlNYXNrKSA9PSAwOwotCi0gICAgICAgIGNhc2UgNTY6IC8v
IExlZnQgU2hpZnQKLSAgICAgICAgY2FzZSA2MDogLy8gUmlnaHQgU2hpZnQKLSAgICAgICAgICAg
IHJldHVybiAoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNTaGlmdEtleU1hc2spID09IDA7Ci0K
LSAgICAgICAgY2FzZSA1ODogLy8gTGVmdCBBbHQKLSAgICAgICAgY2FzZSA2MTogLy8gUmlnaHQg
QWx0Ci0gICAgICAgICAgICByZXR1cm4gKFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQWx0ZXJu
YXRlS2V5TWFzaykgPT0gMDsKLQotICAgICAgICBjYXNlIDU5OiAvLyBMZWZ0IEN0cmwKLSAgICAg
ICAgY2FzZSA2MjogLy8gUmlnaHQgQ3RybAotICAgICAgICAgICAgcmV0dXJuIChbZXZlbnQgbW9k
aWZpZXJGbGFnc10gJiBOU0NvbnRyb2xLZXlNYXNrKSA9PSAwOwotCi0gICAgICAgIGNhc2UgNjM6
IC8vIEZ1bmN0aW9uCi0gICAgICAgICAgICByZXR1cm4gKFtldmVudCBtb2RpZmllckZsYWdzXSAm
IE5TRnVuY3Rpb25LZXlNYXNrKSA9PSAwOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
LXN0YXRpYyBpbmxpbmUgU3RyaW5nIHRleHRGcm9tRXZlbnQoTlNFdmVudCogZXZlbnQpCi17Ci0g
ICAgaWYgKFtldmVudCB0eXBlXSA9PSBOU0ZsYWdzQ2hhbmdlZCkKLSAgICAgICAgcmV0dXJuICIi
OwotICAgIHJldHVybiBbZXZlbnQgY2hhcmFjdGVyc107Ci19Ci0KLQotc3RhdGljIGlubGluZSBT
dHJpbmcgdW5tb2RpZmllZFRleHRGcm9tRXZlbnQoTlNFdmVudCogZXZlbnQpCi17Ci0gICAgaWYg
KFtldmVudCB0eXBlXSA9PSBOU0ZsYWdzQ2hhbmdlZCkKLSAgICAgICAgcmV0dXJuICIiOwotICAg
IHJldHVybiBbZXZlbnQgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzXTsKLX0KLQotc3RhdGlj
IFN0cmluZyBrZXlJZGVudGlmaWVyRm9yS2V5RXZlbnQoTlNFdmVudCogZXZlbnQpCi17Ci0gICAg
aWYgKFtldmVudCB0eXBlXSA9PSBOU0ZsYWdzQ2hhbmdlZCkKLSAgICAgICAgc3dpdGNoIChbZXZl
bnQga2V5Q29kZV0pIHsKLSAgICAgICAgICAgIGNhc2UgNTQ6IC8vIFJpZ2h0IENvbW1hbmQKLSAg
ICAgICAgICAgIGNhc2UgNTU6IC8vIExlZnQgQ29tbWFuZAotICAgICAgICAgICAgICAgIHJldHVy
biAiTWV0YSI7Ci0KLSAgICAgICAgICAgIGNhc2UgNTc6IC8vIENhcHNsb2NrCi0gICAgICAgICAg
ICAgICAgcmV0dXJuICJDYXBzTG9jayI7Ci0KLSAgICAgICAgICAgIGNhc2UgNTY6IC8vIExlZnQg
U2hpZnQKLSAgICAgICAgICAgIGNhc2UgNjA6IC8vIFJpZ2h0IFNoaWZ0Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuICJTaGlmdCI7Ci0KLSAgICAgICAgICAgIGNhc2UgNTg6IC8vIExlZnQgQWx0Ci0g
ICAgICAgICAgICBjYXNlIDYxOiAvLyBSaWdodCBBbHQKLSAgICAgICAgICAgICAgICByZXR1cm4g
IkFsdCI7Ci0KLSAgICAgICAgICAgIGNhc2UgNTk6IC8vIExlZnQgQ3RybAotICAgICAgICAgICAg
Y2FzZSA2MjogLy8gUmlnaHQgQ3RybAotICAgICAgICAgICAgICAgIHJldHVybiAiQ29udHJvbCI7
Ci0KLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICIiOwotICAgICAgICB9Ci0KLSAgICBOU1N0
cmluZyAqcyA9IFtldmVudCBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnNdOwotICAgIGlmIChb
cyBsZW5ndGhdICE9IDEpIHsKLSAgICAgICAgTE9HKEV2ZW50cywgInJlY2VpdmVkIGFuIHVuZXhw
ZWN0ZWQgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4ga2V5IGV2ZW50OiAldSIsIFtzIGxlbmd0aF0p
OwotICAgICAgICByZXR1cm4gIlVuaWRlbnRpZmllZCI7Ci0gICAgfQotICAgIHJldHVybiBrZXlJ
ZGVudGlmaWVyRm9yQ2hhckNvZGUoW3MgY2hhcmFjdGVyQXRJbmRleDowXSk7Ci19Ci0KLXN0YXRp
YyBpbnQgd2luZG93c0tleUNvZGVGb3JLZXlFdmVudChOU0V2ZW50ICpldmVudCkKLXsKLSAgICBp
bnQgY29kZSA9IDA7Ci0gICAgLy8gVGhlcmUgYXJlIHNldmVyYWwga2luZHMgb2YgY2hhcmFjdGVy
cyBmb3Igd2hpY2ggd2UgcHJvZHVjZSBrZXkgY29kZSBmcm9tIGNoYXIgY29kZToKLSAgICAvLyAx
LiBSb21hbiBsZXR0ZXJzLiBXaW5kb3dzIGtleWJvYXJkIGxheW91dHMgYWZmZWN0IGJvdGggdmly
dHVhbCBrZXkgY29kZXMgYW5kIGNoYXJhY3RlciBjb2RlcyBmb3IgdGhlc2UsCi0gICAgLy8gICAg
c28gZS5nLiAnQScgZ2V0cyB0aGUgc2FtZSBrZXlDb2RlIG9uIFFXRVJUWSwgQVpFUlRZIG9yIER2
b3JhayBsYXlvdXRzLgotICAgIC8vIDIuIEtleXMgZm9yIHdoaWNoIHRoZXJlIGlzIG5vIGtub3du
IE1hYyB2aXJ0dWFsIGtleSBjb2RlcywgbGlrZSBQcmludFNjcmVlbi4KLSAgICAvLyAzLiBDZXJ0
YWluIHB1bmN0dWF0aW9uIGtleXMuIE9uIFdpbmRvd3MsIHRoZXNlIGFyZSBhbHNvIHJlbWFwcGVk
IGRlcGVuZGluZyBvbiBjdXJyZW50IGtleWJvYXJkIGxheW91dCwKLSAgICAvLyAgICBidXQgc2Vl
IGNvbW1lbnQgaW4gd2luZG93c0tleUNvZGVGb3JDaGFyQ29kZSgpLgotICAgIGlmIChbZXZlbnQg
dHlwZV0gPT0gTlNLZXlEb3duIHx8IFtldmVudCB0eXBlXSA9PSBOU0tleVVwKSB7Ci0gICAgICAg
IC8vIENtZCBzd2l0Y2hlcyBSb21hbiBsZXR0ZXJzIGZvciBEdm9yYWstUVdFUlRZIGxheW91dCwg
c28gdHJ5IG1vZGlmaWVkIGNoYXJhY3RlcnMgZmlyc3QuCi0gICAgICAgIE5TU3RyaW5nKiBzID0g
W2V2ZW50IGNoYXJhY3RlcnNdOwotICAgICAgICBjb2RlID0gW3MgbGVuZ3RoXSA+IDAgPyB3aW5k
b3dzS2V5Q29kZUZvckNoYXJDb2RlKFtzIGNoYXJhY3RlckF0SW5kZXg6MF0pIDogMDsKLSAgICAg
ICAgaWYgKGNvZGUpCi0gICAgICAgICAgICByZXR1cm4gY29kZTsKLQotICAgICAgICAvLyBDdHJs
K0Egb24gYW4gQVpFUlRZIGtleWJvYXJkIHdvdWxkIGdldCBWS19RIGtleUNvZGUgaWYgd2UgcmVs
aWVkIG9uIC1bTlNFdmVudCBrZXlDb2RlXSBiZWxvdy4KLSAgICAgICAgcyA9IFtldmVudCBjaGFy
YWN0ZXJzSWdub3JpbmdNb2RpZmllcnNdOwotICAgICAgICBjb2RlID0gW3MgbGVuZ3RoXSA+IDAg
PyB3aW5kb3dzS2V5Q29kZUZvckNoYXJDb2RlKFtzIGNoYXJhY3RlckF0SW5kZXg6MF0pIDogMDsK
LSAgICAgICAgaWYgKGNvZGUpCi0gICAgICAgICAgICByZXR1cm4gY29kZTsKLSAgICB9Ci0KLSAg
ICAvLyBNYXAgTWFjIHZpcnR1YWwga2V5IGNvZGUgZGlyZWN0bHkgdG8gV2luZG93cyBvbmUgZm9y
IGFueSBrZXlzIG5vdCBoYW5kbGVkIGFib3ZlLgotICAgIC8vIEUuZy4gdGhlIGtleSBuZXh0IHRv
IENhcHMgTG9jayBoYXMgdGhlIHNhbWUgRXZlbnQua2V5Q29kZSBvbiBVLlMuIGtleWJvYXJkICgn
QScpIGFuZCBvbiBSdXNzaWFuIGtleWJvYXJkIChDWVJJTExJQyBMRVRURVIgRUYpLgotICAgIHJl
dHVybiB3aW5kb3dzS2V5Q29kZUZvcktleUNvZGUoW2V2ZW50IGtleUNvZGVdKTsKLX0KLQotUGxh
dGZvcm1LZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQoTlNFdmVudCAqZXZlbnQp
Ci0gICAgOiBQbGF0Zm9ybUV2ZW50KGlzS2V5VXBFdmVudChldmVudCkgPyBQbGF0Zm9ybUV2ZW50
OjpLZXlVcCA6IFBsYXRmb3JtRXZlbnQ6OktleURvd24sIFtldmVudCBtb2RpZmllckZsYWdzXSAm
IE5TU2hpZnRLZXlNYXNrLCBbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0NvbnRyb2xLZXlNYXNr
LCBbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0FsdGVybmF0ZUtleU1hc2ssIFtldmVudCBtb2Rp
ZmllckZsYWdzXSAmIE5TQ29tbWFuZEtleU1hc2ssIFtldmVudCB0aW1lc3RhbXBdKQotICAgICwg
bV90ZXh0KHRleHRGcm9tRXZlbnQoZXZlbnQpKQotICAgICwgbV91bm1vZGlmaWVkVGV4dCh1bm1v
ZGlmaWVkVGV4dEZyb21FdmVudChldmVudCkpCi0gICAgLCBtX2tleUlkZW50aWZpZXIoa2V5SWRl
bnRpZmllckZvcktleUV2ZW50KGV2ZW50KSkKLSAgICAsIG1fYXV0b1JlcGVhdCgoW2V2ZW50IHR5
cGVdICE9IE5TRmxhZ3NDaGFuZ2VkKSAmJiBbZXZlbnQgaXNBUmVwZWF0XSkKLSAgICAsIG1fd2lu
ZG93c1ZpcnR1YWxLZXlDb2RlKHdpbmRvd3NLZXlDb2RlRm9yS2V5RXZlbnQoZXZlbnQpKQotICAg
ICwgbV9uYXRpdmVWaXJ0dWFsS2V5Q29kZShbZXZlbnQga2V5Q29kZV0pCi0gICAgLCBtX2lzS2V5
cGFkKGlzS2V5cGFkRXZlbnQoZXZlbnQpKQotICAgICwgbV9tYWNFdmVudChldmVudCkKLXsKLSAg
ICAvLyBBbHdheXMgdXNlIDEzIGZvciBFbnRlci9SZXR1cm4gLS0gd2UgZG9uJ3Qgd2FudCB0byB1
c2UgQXBwS2l0J3MgZGlmZmVyZW50IGNoYXJhY3RlciBmb3IgRW50ZXIuCi0gICAgaWYgKG1fd2lu
ZG93c1ZpcnR1YWxLZXlDb2RlID09IFZLX1JFVFVSTikgewotICAgICAgICBtX3RleHQgPSAiXHIi
OwotICAgICAgICBtX3VubW9kaWZpZWRUZXh0ID0gIlxyIjsKLSAgICB9Ci0KLSAgICAvLyBBcHBL
aXQgc2V0cyB0ZXh0IHRvICJceDdGIiBmb3IgYmFja3NwYWNlLCBidXQgdGhlIGNvcnJlY3QgS2V5
Ym9hcmRFdmVudCBjaGFyYWN0ZXIgY29kZSBpcyA4LgotICAgIGlmIChtX3dpbmRvd3NWaXJ0dWFs
S2V5Q29kZSA9PSBWS19CQUNLKSB7Ci0gICAgICAgIG1fdGV4dCA9ICJceDgiOwotICAgICAgICBt
X3VubW9kaWZpZWRUZXh0ID0gIlx4OCI7Ci0gICAgfQotCi0gICAgLy8gQWx3YXlzIHVzZSA5IGZv
ciBUYWIgLS0gd2UgZG9uJ3Qgd2FudCB0byB1c2UgQXBwS2l0J3MgZGlmZmVyZW50IGNoYXJhY3Rl
ciBmb3Igc2hpZnQtdGFiLgotICAgIGlmIChtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSA9PSBWS19U
QUIpIHsKLSAgICAgICAgbV90ZXh0ID0gIlx4OSI7Ci0gICAgICAgIG1fdW5tb2RpZmllZFRleHQg
PSAiXHg5IjsKLSAgICB9Ci19Ci0KIHZvaWQgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpkaXNhbWJp
Z3VhdGVLZXlEb3duRXZlbnQoVHlwZSB0eXBlLCBib29sIGJhY2t3YXJkQ29tcGF0aWJpbGl0eU1v
ZGUpCiB7CiAgICAgLy8gQ2FuIG9ubHkgY2hhbmdlIHR5cGUgZnJvbSBLZXlEb3duIHRvIFJhd0tl
eURvd24gb3IgQ2hhciwgYXMgd2UgbGFjayBpbmZvcm1hdGlvbiBmb3Igb3RoZXIgY29udmVyc2lv
bnMuCkBAIC0yNTcsNiArNzYsNiBAQCB2b2lkIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Z2V0Q3Vy
cmVudE1vZGlmaWVyU3RhdGUoYm9vbCYgc2hpZnRLZXksIGJvb2wmIGN0cmxLZQogICAgIG1ldGFL
ZXkgPSBjdXJyZW50TW9kaWZpZXJzICYgOjpjbWRLZXk7CiB9CiAKLX0KK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjhkMjI4
ZGYxM2Q3NTc0ZDMxNjY1MzdhZjRlMjlhOGM3YmFiMmQ2OAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeS5oCkBAIC0wLDAg
KzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBsYXRmb3JtRXZlbnRGYWN0b3J5X2gKKyNk
ZWZpbmUgUGxhdGZvcm1FdmVudEZhY3RvcnlfaAorCisjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2
ZW50LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCisjaW5jbHVkZSAiUGxhdGZv
cm1LZXlib2FyZEV2ZW50LmgiCisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorI2luY2x1ZGUg
IlBsYXRmb3JtR2VzdHVyZUV2ZW50LmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBQbGF0Zm9ybUV2ZW50RmFjdG9yeSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBsYXRm
b3JtTW91c2VFdmVudCBjcmVhdGVQbGF0Zm9ybU1vdXNlRXZlbnQoTlNFdmVudCAqLCBOU1ZpZXcg
KndpbmRvd1ZpZXcpOworICAgIHN0YXRpYyBQbGF0Zm9ybVdoZWVsRXZlbnQgY3JlYXRlUGxhdGZv
cm1XaGVlbEV2ZW50KE5TRXZlbnQgKiwgTlNWaWV3ICp3aW5kb3dWaWV3KTsKKyAgICBzdGF0aWMg
UGxhdGZvcm1LZXlib2FyZEV2ZW50IGNyZWF0ZVBsYXRmb3JtS2V5Ym9hcmRFdmVudChOU0V2ZW50
ICopOworI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKKyAgICBzdGF0aWMgUGxhdGZvcm1HZXN0
dXJlRXZlbnQgY3JlYXRlUGxhdGZvcm1HZXN0dXJlRXZlbnQoTlNFdmVudCAqLCBOU1ZpZXcgKndp
bmRvd1ZpZXcpOworI2VuZGlmCit9OworCisvLyBGSVhNRTogVGhpcyBkb2Vzbid0IHJlYWxseSBi
ZWxvbmcgaGVyZS4KKworI2lmIFBMQVRGT1JNKE1BQykgJiYgZGVmaW5lZChfX09CSkNfXykKK0lu
dFBvaW50IGdsb2JhbFBvaW50KGNvbnN0IE5TUG9pbnQmIHdpbmRvd1BvaW50LCBOU1dpbmRvdyAq
KTsKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQbGF0Zm9y
bUV2ZW50RmFjdG9yeV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGxhdGZvcm1FdmVudEZhY3RvcnkubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxh
dGZvcm1FdmVudEZhY3RvcnkubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzY3NGZkNTk3MjBkMjg3Nzc4OTE0MDNi
NGEyYjliNGY2MDJhZTZmNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeS5tbQpAQCAtMCwwICsxLDUzNiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUV2ZW50RmFjdG9y
eS5oIgorCisjaW1wb3J0ICJLZXlFdmVudENvY29hLmgiCisjaW1wb3J0ICJMb2dnaW5nLmgiCisj
aW1wb3J0ICJQbGF0Zm9ybVNjcmVlbi5oIgorI2ltcG9ydCAiU2Nyb2xsYmFyLmgiCisjaW1wb3J0
ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCisjaW1wb3J0ICJXaW5kb3dzS2V5Ym9hcmRDb2Rl
cy5oIgorI2ltcG9ydCA8d3RmL0FTQ0lJQ1R5cGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitJbnRQb2ludCBnbG9iYWxQb2ludChjb25zdCBOU1BvaW50JiB3aW5kb3dQb2ludCwgTlNXaW5k
b3cgKndpbmRvdykKK3sKKyAgICByZXR1cm4gSW50UG9pbnQoZmxpcFNjcmVlblBvaW50KFt3aW5k
b3cgY29udmVydEJhc2VUb1NjcmVlbjp3aW5kb3dQb2ludF0sIHNjcmVlbkZvcldpbmRvdyh3aW5k
b3cpKSk7Cit9CisKK3N0YXRpYyBJbnRQb2ludCBnbG9iYWxQb2ludEZvckV2ZW50KE5TRXZlbnQg
KmV2ZW50KQoreworICAgIHN3aXRjaCAoW2V2ZW50IHR5cGVdKSB7CisgICAgICAgIGNhc2UgTlNM
ZWZ0TW91c2VEb3duOgorICAgICAgICBjYXNlIE5TTGVmdE1vdXNlRHJhZ2dlZDoKKyAgICAgICAg
Y2FzZSBOU0xlZnRNb3VzZVVwOgorICAgICAgICBjYXNlIE5TTW91c2VFbnRlcmVkOgorICAgICAg
ICBjYXNlIE5TTW91c2VFeGl0ZWQ6CisgICAgICAgIGNhc2UgTlNNb3VzZU1vdmVkOgorICAgICAg
ICBjYXNlIE5TT3RoZXJNb3VzZURvd246CisgICAgICAgIGNhc2UgTlNPdGhlck1vdXNlRHJhZ2dl
ZDoKKyAgICAgICAgY2FzZSBOU090aGVyTW91c2VVcDoKKyAgICAgICAgY2FzZSBOU1JpZ2h0TW91
c2VEb3duOgorICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZURyYWdnZWQ6CisgICAgICAgIGNhc2Ug
TlNSaWdodE1vdXNlVXA6CisgICAgICAgIGNhc2UgTlNTY3JvbGxXaGVlbDoKKyAgICAgICAgICAg
IHJldHVybiBnbG9iYWxQb2ludChbZXZlbnQgbG9jYXRpb25JbldpbmRvd10sIFtldmVudCB3aW5k
b3ddKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBJbnRQb2ludCgpOwor
ICAgIH0KK30KKworc3RhdGljIEludFBvaW50IHBvaW50Rm9yRXZlbnQoTlNFdmVudCAqZXZlbnQs
IE5TVmlldyAqd2luZG93VmlldykKK3sKKyAgICBzd2l0Y2ggKFtldmVudCB0eXBlXSkgeworICAg
ICAgICBjYXNlIE5TTGVmdE1vdXNlRG93bjoKKyAgICAgICAgY2FzZSBOU0xlZnRNb3VzZURyYWdn
ZWQ6CisgICAgICAgIGNhc2UgTlNMZWZ0TW91c2VVcDoKKyAgICAgICAgY2FzZSBOU01vdXNlRW50
ZXJlZDoKKyAgICAgICAgY2FzZSBOU01vdXNlRXhpdGVkOgorICAgICAgICBjYXNlIE5TTW91c2VN
b3ZlZDoKKyAgICAgICAgY2FzZSBOU090aGVyTW91c2VEb3duOgorICAgICAgICBjYXNlIE5TT3Ro
ZXJNb3VzZURyYWdnZWQ6CisgICAgICAgIGNhc2UgTlNPdGhlck1vdXNlVXA6CisgICAgICAgIGNh
c2UgTlNSaWdodE1vdXNlRG93bjoKKyAgICAgICAgY2FzZSBOU1JpZ2h0TW91c2VEcmFnZ2VkOgor
ICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZVVwOgorICAgICAgICBjYXNlIE5TU2Nyb2xsV2hlZWw6
IHsKKyAgICAgICAgICAgIC8vIE5vdGU6IFRoaXMgd2lsbCBoYXZlIGl0cyBvcmlnaW4gYXQgdGhl
IGJvdHRvbSBsZWZ0IG9mIHRoZSB3aW5kb3cgdW5sZXNzIHdpbmRvd1ZpZXcgaXMgZmxpcHBlZC4K
KyAgICAgICAgICAgIC8vIEluIHRob3NlIGNhc2VzLCB0aGUgWSBjb29yZGluYXRlIGdldHMgZmxp
cHBlZCBieSBXaWRnZXQ6OmNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdy4KKyAgICAgICAgICAg
IE5TUG9pbnQgbG9jYXRpb24gPSBbZXZlbnQgbG9jYXRpb25JbldpbmRvd107CisgICAgICAgICAg
ICBpZiAod2luZG93VmlldykKKyAgICAgICAgICAgICAgICBsb2NhdGlvbiA9IFt3aW5kb3dWaWV3
IGNvbnZlcnRQb2ludDpsb2NhdGlvbiBmcm9tVmlldzpuaWxdOworICAgICAgICAgICAgcmV0dXJu
IEludFBvaW50KGxvY2F0aW9uKTsKKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgcmV0dXJuIEludFBvaW50KCk7CisgICAgfQorfQorCitzdGF0aWMgTW91c2VCdXR0b24g
bW91c2VCdXR0b25Gb3JFdmVudChOU0V2ZW50ICpldmVudCkKK3sKKyAgICBzd2l0Y2ggKFtldmVu
dCB0eXBlXSkgeworICAgICAgICBjYXNlIE5TTGVmdE1vdXNlRG93bjoKKyAgICAgICAgY2FzZSBO
U0xlZnRNb3VzZVVwOgorICAgICAgICBjYXNlIE5TTGVmdE1vdXNlRHJhZ2dlZDoKKyAgICAgICAg
ICAgIHJldHVybiBMZWZ0QnV0dG9uOworICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZURvd246Cisg
ICAgICAgIGNhc2UgTlNSaWdodE1vdXNlVXA6CisgICAgICAgIGNhc2UgTlNSaWdodE1vdXNlRHJh
Z2dlZDoKKyAgICAgICAgICAgIHJldHVybiBSaWdodEJ1dHRvbjsKKyAgICAgICAgY2FzZSBOU090
aGVyTW91c2VEb3duOgorICAgICAgICBjYXNlIE5TT3RoZXJNb3VzZVVwOgorICAgICAgICBjYXNl
IE5TT3RoZXJNb3VzZURyYWdnZWQ6CisgICAgICAgICAgICByZXR1cm4gTWlkZGxlQnV0dG9uOwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIE5vQnV0dG9uOworICAgIH0KK30K
Kworc3RhdGljIFBsYXRmb3JtRXZlbnQ6OlR5cGUgbW91c2VFdmVudFR5cGVGb3JFdmVudChOU0V2
ZW50KiBldmVudCkKK3sKKyAgICBzd2l0Y2ggKFtldmVudCB0eXBlXSkgeworICAgICAgICBjYXNl
IE5TTGVmdE1vdXNlRHJhZ2dlZDoKKyAgICAgICAgY2FzZSBOU01vdXNlRW50ZXJlZDoKKyAgICAg
ICAgY2FzZSBOU01vdXNlRXhpdGVkOgorICAgICAgICBjYXNlIE5TTW91c2VNb3ZlZDoKKyAgICAg
ICAgY2FzZSBOU090aGVyTW91c2VEcmFnZ2VkOgorICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZURy
YWdnZWQ6CisgICAgICAgICAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZDsKKyAg
ICAgICAgY2FzZSBOU0xlZnRNb3VzZURvd246CisgICAgICAgIGNhc2UgTlNSaWdodE1vdXNlRG93
bjoKKyAgICAgICAgY2FzZSBOU090aGVyTW91c2VEb3duOgorICAgICAgICAgICAgcmV0dXJuIFBs
YXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZDsKKyAgICAgICAgY2FzZSBOU0xlZnRNb3VzZVVwOgor
ICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZVVwOgorICAgICAgICBjYXNlIE5TT3RoZXJNb3VzZVVw
OgorICAgICAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQ7CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6TW91c2VNb3Zl
ZDsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQgY2xpY2tDb3VudEZvckV2ZW50KE5TRXZlbnQgKmV2
ZW50KQoreworICAgIHN3aXRjaCAoW2V2ZW50IHR5cGVdKSB7CisgICAgICAgIGNhc2UgTlNMZWZ0
TW91c2VEb3duOgorICAgICAgICBjYXNlIE5TTGVmdE1vdXNlVXA6CisgICAgICAgIGNhc2UgTlNM
ZWZ0TW91c2VEcmFnZ2VkOgorICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZURvd246CisgICAgICAg
IGNhc2UgTlNSaWdodE1vdXNlVXA6CisgICAgICAgIGNhc2UgTlNSaWdodE1vdXNlRHJhZ2dlZDoK
KyAgICAgICAgY2FzZSBOU090aGVyTW91c2VEb3duOgorICAgICAgICBjYXNlIE5TT3RoZXJNb3Vz
ZVVwOgorICAgICAgICBjYXNlIE5TT3RoZXJNb3VzZURyYWdnZWQ6CisgICAgICAgICAgICByZXR1
cm4gW2V2ZW50IGNsaWNrQ291bnRdOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorfQorCitzdGF0aWMgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgbW9tZW50
dW1QaGFzZUZvckV2ZW50KE5TRXZlbnQgKmV2ZW50KQoreworICAgIHVpbnQzMl90IHBoYXNlID0g
UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VOb25lOworCisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05f
TEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQorICAgIGlmIChb
ZXZlbnQgbW9tZW50dW1QaGFzZV0gJiBOU0V2ZW50UGhhc2VCZWdhbikKKyAgICAgICAgcGhhc2Ug
fD0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VCZWdhbjsKKyAgICBpZiAoW2V2ZW50IG1vbWVudHVt
UGhhc2VdICYgTlNFdmVudFBoYXNlU3RhdGlvbmFyeSkKKyAgICAgICAgcGhhc2UgfD0gUGxhdGZv
cm1XaGVlbEV2ZW50UGhhc2VTdGF0aW9uYXJ5OworICAgIGlmIChbZXZlbnQgbW9tZW50dW1QaGFz
ZV0gJiBOU0V2ZW50UGhhc2VDaGFuZ2VkKQorICAgICAgICBwaGFzZSB8PSBQbGF0Zm9ybVdoZWVs
RXZlbnRQaGFzZUNoYW5nZWQ7CisgICAgaWYgKFtldmVudCBtb21lbnR1bVBoYXNlXSAmIE5TRXZl
bnRQaGFzZUVuZGVkKQorICAgICAgICBwaGFzZSB8PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUVu
ZGVkOworICAgIGlmIChbZXZlbnQgbW9tZW50dW1QaGFzZV0gJiBOU0V2ZW50UGhhc2VDYW5jZWxs
ZWQpCisgICAgICAgIHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQ2FuY2VsbGVkOwor
I2Vsc2UKKyAgICBzd2l0Y2ggKHdrR2V0TlNFdmVudE1vbWVudHVtUGhhc2UoZXZlbnQpKSB7Cisg
ICAgY2FzZSB3a0V2ZW50UGhhc2VOb25lOgorICAgICAgICBwaGFzZSA9IFBsYXRmb3JtV2hlZWxF
dmVudFBoYXNlTm9uZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSB3a0V2ZW50UGhhc2VCZWdh
bjoKKyAgICAgICAgcGhhc2UgPSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUJlZ2FuOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIHdrRXZlbnRQaGFzZUNoYW5nZWQ6CisgICAgICAgIHBoYXNlID0g
UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VDaGFuZ2VkOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IHdrRXZlbnRQaGFzZUVuZGVkOgorICAgICAgICBwaGFzZSA9IFBsYXRmb3JtV2hlZWxFdmVudFBo
YXNlRW5kZWQ7CisgICAgICAgIGJyZWFrOworICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlPihwaGFzZSk7Cit9CisKK3N0YXRpYyBQ
bGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSBwaGFzZUZvckV2ZW50KE5TRXZlbnQgKmV2ZW50KQorewor
I2lmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09O
X1NOT1dfTEVPUEFSRCkKKyAgICB1aW50MzJfdCBwaGFzZSA9IFBsYXRmb3JtV2hlZWxFdmVudFBo
YXNlTm9uZTsgCisgICAgaWYgKFtldmVudCBwaGFzZV0gJiBOU0V2ZW50UGhhc2VCZWdhbikKKyAg
ICAgICAgcGhhc2UgfD0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VCZWdhbjsKKyAgICBpZiAoW2V2
ZW50IHBoYXNlXSAmIE5TRXZlbnRQaGFzZVN0YXRpb25hcnkpCisgICAgICAgIHBoYXNlIHw9IFBs
YXRmb3JtV2hlZWxFdmVudFBoYXNlU3RhdGlvbmFyeTsKKyAgICBpZiAoW2V2ZW50IHBoYXNlXSAm
IE5TRXZlbnRQaGFzZUNoYW5nZWQpCisgICAgICAgIHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVu
dFBoYXNlQ2hhbmdlZDsKKyAgICBpZiAoW2V2ZW50IHBoYXNlXSAmIE5TRXZlbnRQaGFzZUVuZGVk
KQorICAgICAgICBwaGFzZSB8PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUVuZGVkOworICAgIGlm
IChbZXZlbnQgcGhhc2VdICYgTlNFdmVudFBoYXNlQ2FuY2VsbGVkKQorICAgICAgICBwaGFzZSB8
PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUNhbmNlbGxlZDsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U+KHBoYXNlKTsKKyNlbHNlCisgICAgVU5VU0VEX1BB
UkFNKGV2ZW50KTsKKyAgICByZXR1cm4gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VOb25lOworI2Vu
ZGlmCit9CisKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCitzdGF0aWMgUGxhdGZvcm1FdmVu
dDo6VHlwZSBnZXN0dXJlRXZlbnRUeXBlRm9yRXZlbnQoTlNFdmVudCAqZXZlbnQpCit7CisgICAg
c3dpdGNoIChbZXZlbnQgdHlwZV0pIHsKKyAgICBjYXNlIE5TRXZlbnRUeXBlQmVnaW5HZXN0dXJl
OgorICAgICAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOworICAg
IGNhc2UgTlNFdmVudFR5cGVFbmRHZXN0dXJlOgorICAgICAgICByZXR1cm4gUGxhdGZvcm1FdmVu
dDo6R2VzdHVyZVNjcm9sbEVuZDsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ7
CisgICAgfQorfQorI2VuZGlmCisKK3N0YXRpYyBpbmxpbmUgU3RyaW5nIHRleHRGcm9tRXZlbnQo
TlNFdmVudCogZXZlbnQpCit7CisgICAgaWYgKFtldmVudCB0eXBlXSA9PSBOU0ZsYWdzQ2hhbmdl
ZCkKKyAgICAgICAgcmV0dXJuIFN0cmluZygiIik7CisgICAgcmV0dXJuIFN0cmluZyhbZXZlbnQg
Y2hhcmFjdGVyc10pOworfQorCitzdGF0aWMgaW5saW5lIFN0cmluZyB1bm1vZGlmaWVkVGV4dEZy
b21FdmVudChOU0V2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoW2V2ZW50IHR5cGVdID09IE5TRmxh
Z3NDaGFuZ2VkKQorICAgICAgICByZXR1cm4gU3RyaW5nKCIiKTsKKyAgICByZXR1cm4gU3RyaW5n
KFtldmVudCBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnNdKTsKK30KKworc3RhdGljIFN0cmlu
ZyBrZXlJZGVudGlmaWVyRm9yS2V5RXZlbnQoTlNFdmVudCogZXZlbnQpCit7CisgICAgaWYgKFtl
dmVudCB0eXBlXSA9PSBOU0ZsYWdzQ2hhbmdlZCkgCisgICAgICAgIHN3aXRjaCAoW2V2ZW50IGtl
eUNvZGVdKSB7CisgICAgICAgICAgICBjYXNlIDU0OiAvLyBSaWdodCBDb21tYW5kCisgICAgICAg
ICAgICBjYXNlIDU1OiAvLyBMZWZ0IENvbW1hbmQKKyAgICAgICAgICAgICAgICByZXR1cm4gU3Ry
aW5nKCJNZXRhIik7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIDU3OiAvLyBD
YXBzbG9jaworICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoIkNhcHNMb2NrIik7CisgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIDU2OiAvLyBMZWZ0IFNoaWZ0CisgICAgICAg
ICAgICBjYXNlIDYwOiAvLyBSaWdodCBTaGlmdAorICAgICAgICAgICAgICAgIHJldHVybiBTdHJp
bmcoIlNoaWZ0Iik7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIDU4OiAvLyBM
ZWZ0IEFsdAorICAgICAgICAgICAgY2FzZSA2MTogLy8gUmlnaHQgQWx0CisgICAgICAgICAgICAg
ICAgcmV0dXJuIFN0cmluZygiQWx0Iik7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBj
YXNlIDU5OiAvLyBMZWZ0IEN0cmwKKyAgICAgICAgICAgIGNhc2UgNjI6IC8vIFJpZ2h0IEN0cmwK
KyAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCJDb250cm9sIik7CisgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoIiIpOworICAgICAgICB9Cisg
ICAgCisgICAgTlNTdHJpbmcgKnMgPSBbZXZlbnQgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJz
XTsKKyAgICBpZiAoW3MgbGVuZ3RoXSAhPSAxKSB7CisgICAgICAgIExPRyhFdmVudHMsICJyZWNl
aXZlZCBhbiB1bmV4cGVjdGVkIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIGtleSBldmVudDogJXUi
LCBbcyBsZW5ndGhdKTsKKyAgICAgICAgcmV0dXJuICJVbmlkZW50aWZpZWQiOworICAgIH0KKyAg
ICByZXR1cm4ga2V5SWRlbnRpZmllckZvckNoYXJDb2RlKFtzIGNoYXJhY3RlckF0SW5kZXg6MF0p
OworfQorCitzdGF0aWMgYm9vbCBpc0tleXBhZEV2ZW50KE5TRXZlbnQqIGV2ZW50KQoreworICAg
IC8vIENoZWNrIHRoYXQgdGhpcyBpcyB0aGUgdHlwZSBvZiBldmVudCB0aGF0IGhhcyBhIGtleUNv
ZGUuCisgICAgc3dpdGNoIChbZXZlbnQgdHlwZV0pIHsKKyAgICAgICAgY2FzZSBOU0tleURvd246
CisgICAgICAgIGNhc2UgTlNLZXlVcDoKKyAgICAgICAgY2FzZSBOU0ZsYWdzQ2hhbmdlZDoKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIGlmIChbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU051bWVyaWNQ
YWRLZXlNYXNrKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHN3aXRjaCAoW2V2ZW50IGtl
eUNvZGVdKSB7CisgICAgICAgIGNhc2UgNzE6IC8vIENsZWFyCisgICAgICAgIGNhc2UgODE6IC8v
ID0KKyAgICAgICAgY2FzZSA3NTogLy8gLworICAgICAgICBjYXNlIDY3OiAvLyAqCisgICAgICAg
IGNhc2UgNzg6IC8vIC0KKyAgICAgICAgY2FzZSA2OTogLy8gKworICAgICAgICBjYXNlIDc2OiAv
LyBFbnRlcgorICAgICAgICBjYXNlIDY1OiAvLyAuCisgICAgICAgIGNhc2UgODI6IC8vIDAKKyAg
ICAgICAgY2FzZSA4MzogLy8gMQorICAgICAgICBjYXNlIDg0OiAvLyAyCisgICAgICAgIGNhc2Ug
ODU6IC8vIDMKKyAgICAgICAgY2FzZSA4NjogLy8gNAorICAgICAgICBjYXNlIDg3OiAvLyA1Cisg
ICAgICAgIGNhc2UgODg6IC8vIDYKKyAgICAgICAgY2FzZSA4OTogLy8gNworICAgICAgICBjYXNl
IDkxOiAvLyA4CisgICAgICAgIGNhc2UgOTI6IC8vIDkKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICB9CisgICAgIAorICAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBpbnQgd2lu
ZG93c0tleUNvZGVGb3JLZXlFdmVudChOU0V2ZW50KiBldmVudCkKK3sKKyAgICBpbnQgY29kZSA9
IDA7CisgICAgLy8gVGhlcmUgYXJlIHNldmVyYWwga2luZHMgb2YgY2hhcmFjdGVycyBmb3Igd2hp
Y2ggd2UgcHJvZHVjZSBrZXkgY29kZSBmcm9tIGNoYXIgY29kZToKKyAgICAvLyAxLiBSb21hbiBs
ZXR0ZXJzLiBXaW5kb3dzIGtleWJvYXJkIGxheW91dHMgYWZmZWN0IGJvdGggdmlydHVhbCBrZXkg
Y29kZXMgYW5kIGNoYXJhY3RlciBjb2RlcyBmb3IgdGhlc2UsCisgICAgLy8gICAgc28gZS5nLiAn
QScgZ2V0cyB0aGUgc2FtZSBrZXlDb2RlIG9uIFFXRVJUWSwgQVpFUlRZIG9yIER2b3JhayBsYXlv
dXRzLgorICAgIC8vIDIuIEtleXMgZm9yIHdoaWNoIHRoZXJlIGlzIG5vIGtub3duIE1hYyB2aXJ0
dWFsIGtleSBjb2RlcywgbGlrZSBQcmludFNjcmVlbi4KKyAgICAvLyAzLiBDZXJ0YWluIHB1bmN0
dWF0aW9uIGtleXMuIE9uIFdpbmRvd3MsIHRoZXNlIGFyZSBhbHNvIHJlbWFwcGVkIGRlcGVuZGlu
ZyBvbiBjdXJyZW50IGtleWJvYXJkIGxheW91dCwKKyAgICAvLyAgICBidXQgc2VlIGNvbW1lbnQg
aW4gd2luZG93c0tleUNvZGVGb3JDaGFyQ29kZSgpLgorICAgIGlmIChbZXZlbnQgdHlwZV0gPT0g
TlNLZXlEb3duIHx8IFtldmVudCB0eXBlXSA9PSBOU0tleVVwKSB7CisgICAgICAgIC8vIENtZCBz
d2l0Y2hlcyBSb21hbiBsZXR0ZXJzIGZvciBEdm9yYWstUVdFUlRZIGxheW91dCwgc28gdHJ5IG1v
ZGlmaWVkIGNoYXJhY3RlcnMgZmlyc3QuCisgICAgICAgIE5TU3RyaW5nKiBzID0gW2V2ZW50IGNo
YXJhY3RlcnNdOworICAgICAgICBjb2RlID0gW3MgbGVuZ3RoXSA+IDAgPyB3aW5kb3dzS2V5Q29k
ZUZvckNoYXJDb2RlKFtzIGNoYXJhY3RlckF0SW5kZXg6MF0pIDogMDsKKyAgICAgICAgaWYgKGNv
ZGUpCisgICAgICAgICAgICByZXR1cm4gY29kZTsKKworICAgICAgICAvLyBDdHJsK0Egb24gYW4g
QVpFUlRZIGtleWJvYXJkIHdvdWxkIGdldCBWS19RIGtleUNvZGUgaWYgd2UgcmVsaWVkIG9uIC1b
TlNFdmVudCBrZXlDb2RlXSBiZWxvdy4KKyAgICAgICAgcyA9IFtldmVudCBjaGFyYWN0ZXJzSWdu
b3JpbmdNb2RpZmllcnNdOworICAgICAgICBjb2RlID0gW3MgbGVuZ3RoXSA+IDAgPyB3aW5kb3dz
S2V5Q29kZUZvckNoYXJDb2RlKFtzIGNoYXJhY3RlckF0SW5kZXg6MF0pIDogMDsKKyAgICAgICAg
aWYgKGNvZGUpCisgICAgICAgICAgICByZXR1cm4gY29kZTsKKyAgICB9CisKKyAgICAvLyBNYXAg
TWFjIHZpcnR1YWwga2V5IGNvZGUgZGlyZWN0bHkgdG8gV2luZG93cyBvbmUgZm9yIGFueSBrZXlz
IG5vdCBoYW5kbGVkIGFib3ZlLgorICAgIC8vIEUuZy4gdGhlIGtleSBuZXh0IHRvIENhcHMgTG9j
ayBoYXMgdGhlIHNhbWUgRXZlbnQua2V5Q29kZSBvbiBVLlMuIGtleWJvYXJkICgnQScpIGFuZCBv
biBSdXNzaWFuIGtleWJvYXJkIChDWVJJTExJQyBMRVRURVIgRUYpLgorICAgIHJldHVybiB3aW5k
b3dzS2V5Q29kZUZvcktleUNvZGUoW2V2ZW50IGtleUNvZGVdKTsKK30KKworc3RhdGljIGlubGlu
ZSBib29sIGlzS2V5VXBFdmVudChOU0V2ZW50ICpldmVudCkKK3sKKyAgICBpZiAoW2V2ZW50IHR5
cGVdICE9IE5TRmxhZ3NDaGFuZ2VkKQorICAgICAgICByZXR1cm4gW2V2ZW50IHR5cGVdID09IE5T
S2V5VXA7CisgICAgLy8gRklYTUU6IFRoaXMgbG9naWMgZmFpbHMgaWYgdGhlIHVzZXIgcHJlc3Nl
cyBib3RoIFNoaWZ0IGtleXMgYXQgb25jZSwgZm9yIGV4YW1wbGU6CisgICAgLy8gd2UgdHJlYXQg
cmVsZWFzaW5nIG9uZSBvZiB0aGVtIGFzIGtleURvd24uCisgICAgc3dpdGNoIChbZXZlbnQga2V5
Q29kZV0pIHsKKyAgICAgICAgY2FzZSA1NDogLy8gUmlnaHQgQ29tbWFuZAorICAgICAgICBjYXNl
IDU1OiAvLyBMZWZ0IENvbW1hbmQKKyAgICAgICAgICAgIHJldHVybiAoW2V2ZW50IG1vZGlmaWVy
RmxhZ3NdICYgTlNDb21tYW5kS2V5TWFzaykgPT0gMDsKKyAgICAgICAgICAgIAorICAgICAgICBj
YXNlIDU3OiAvLyBDYXBzbG9jaworICAgICAgICAgICAgcmV0dXJuIChbZXZlbnQgbW9kaWZpZXJG
bGFnc10gJiBOU0FscGhhU2hpZnRLZXlNYXNrKSA9PSAwOworICAgICAgICAgICAgCisgICAgICAg
IGNhc2UgNTY6IC8vIExlZnQgU2hpZnQKKyAgICAgICAgY2FzZSA2MDogLy8gUmlnaHQgU2hpZnQK
KyAgICAgICAgICAgIHJldHVybiAoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNTaGlmdEtleU1h
c2spID09IDA7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSA1ODogLy8gTGVmdCBBbHQKKyAg
ICAgICAgY2FzZSA2MTogLy8gUmlnaHQgQWx0CisgICAgICAgICAgICByZXR1cm4gKFtldmVudCBt
b2RpZmllckZsYWdzXSAmIE5TQWx0ZXJuYXRlS2V5TWFzaykgPT0gMDsKKyAgICAgICAgICAgIAor
ICAgICAgICBjYXNlIDU5OiAvLyBMZWZ0IEN0cmwKKyAgICAgICAgY2FzZSA2MjogLy8gUmlnaHQg
Q3RybAorICAgICAgICAgICAgcmV0dXJuIChbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0NvbnRy
b2xLZXlNYXNrKSA9PSAwOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgNjM6IC8vIEZ1bmN0
aW9uCisgICAgICAgICAgICByZXR1cm4gKFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TRnVuY3Rp
b25LZXlNYXNrKSA9PSAwOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBp
bmxpbmUgUGxhdGZvcm1FdmVudDo6TW9kaWZpZXJzIG1vZGlmaWVyc0ZvckV2ZW50KE5TRXZlbnQg
KmV2ZW50KQoreworICAgIHVuc2lnbmVkIG1vZGlmaWVycyA9IDA7CisgICAgaWYgKFtldmVudCBt
b2RpZmllckZsYWdzXSAmIE5TQWxwaGFTaGlmdEtleU1hc2spCisgICAgICAgIG1vZGlmaWVycyB8
PSBQbGF0Zm9ybUV2ZW50OjpDYXBzTG9ja0tleTsKKyAgICBpZiAoW2V2ZW50IG1vZGlmaWVyRmxh
Z3NdICYgTlNTaGlmdEtleU1hc2spCisgICAgICAgIG1vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50
OjpTaGlmdEtleTsKKyAgICBpZiAoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb250cm9sS2V5
TWFzaykKKyAgICAgICAgbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6OkN0cmxLZXk7CisgICAg
aWYgKFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQWx0ZXJuYXRlS2V5TWFzaykKKyAgICAgICAg
bW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6OkFsdEtleTsKKyAgICBpZiAoW2V2ZW50IG1vZGlm
aWVyRmxhZ3NdICYgTlNDb21tYW5kS2V5TWFzaykKKyAgICAgICAgbW9kaWZpZXJzIHw9IFBsYXRm
b3JtRXZlbnQ6Ok1ldGFLZXk7CisgICAgcmV0dXJuIChQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcnMp
bW9kaWZpZXJzOworfQorCisKK2NsYXNzIFBsYXRmb3JtTW91c2VFdmVudEJ1aWxkZXIgOiBwdWJs
aWMgUGxhdGZvcm1Nb3VzZUV2ZW50IHsKK3B1YmxpYzoKKyAgICBQbGF0Zm9ybU1vdXNlRXZlbnRC
dWlsZGVyKE5TRXZlbnQgKmV2ZW50LCBOU1ZpZXcgKndpbmRvd1ZpZXcpCisgICAgeworICAgICAg
ICAvLyBQbGF0Zm9ybUV2ZW50CisgICAgICAgIG1fdHlwZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gbW91c2VFdmVudFR5cGVGb3JFdmVudChldmVudCk7CisgICAgICAgIG1fbW9kaWZp
ZXJzICAgICAgICAgICAgICAgICAgICAgICAgID0gbW9kaWZpZXJzRm9yRXZlbnQoZXZlbnQpOwor
ICAgICAgICBtX3RpbWVzdGFtcCAgICAgICAgICAgICAgICAgICAgICAgICA9IFtldmVudCB0aW1l
c3RhbXBdOworCisgICAgICAgIC8vIFBsYXRmb3JtTW91c2VFdmVudAorICAgICAgICBtX3Bvc2l0
aW9uICAgICAgICAgICAgICAgICAgICAgICAgICA9IHBvaW50Rm9yRXZlbnQoZXZlbnQsIHdpbmRv
d1ZpZXcpOworICAgICAgICBtX2dsb2JhbFBvc2l0aW9uICAgICAgICAgICAgICAgICAgICA9IGds
b2JhbFBvaW50Rm9yRXZlbnQoZXZlbnQpOworICAgICAgICBtX2J1dHRvbiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IG1vdXNlQnV0dG9uRm9yRXZlbnQoZXZlbnQpOworICAgICAgICBtX2Ns
aWNrQ291bnQgICAgICAgICAgICAgICAgICAgICAgICA9IGNsaWNrQ291bnRGb3JFdmVudChldmVu
dCk7CisgICAgICAgIAorICAgICAgICAvLyBNYWMgc3BlY2lmaWMKKyAgICAgICAgbV9tb2RpZmll
ckZsYWdzICAgICAgICAgICAgICAgICAgICAgPSBbZXZlbnQgbW9kaWZpZXJGbGFnc107CisgICAg
ICAgIG1fZXZlbnROdW1iZXIgICAgICAgICAgICAgICAgICAgICAgID0gW2V2ZW50IGV2ZW50TnVt
YmVyXTsKKyAgICB9Cit9OworCitQbGF0Zm9ybU1vdXNlRXZlbnQgUGxhdGZvcm1FdmVudEZhY3Rv
cnk6OmNyZWF0ZVBsYXRmb3JtTW91c2VFdmVudChOU0V2ZW50ICpldmVudCwgTlNWaWV3ICp3aW5k
b3dWaWV3KQoreworICAgIHJldHVybiBQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyKGV2ZW50LCB3
aW5kb3dWaWV3KTsKK30KKworCitjbGFzcyBQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyIDogcHVi
bGljIFBsYXRmb3JtV2hlZWxFdmVudCB7CitwdWJsaWM6CisgICAgUGxhdGZvcm1XaGVlbEV2ZW50
QnVpbGRlcihOU0V2ZW50ICpldmVudCwgTlNWaWV3ICp3aW5kb3dWaWV3KQorICAgIHsKKyAgICAg
ICAgLy8gUGxhdGZvcm1FdmVudAorICAgICAgICBtX3R5cGUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IFBsYXRmb3JtRXZlbnQ6OldoZWVsOworICAgICAgICBtX21vZGlmaWVycyAgICAg
ICAgICAgICAgICAgICAgICAgICA9IG1vZGlmaWVyc0ZvckV2ZW50KGV2ZW50KTsKKyAgICAgICAg
bV90aW1lc3RhbXAgICAgICAgICAgICAgICAgICAgICAgICAgPSBbZXZlbnQgdGltZXN0YW1wXTsK
KworICAgICAgICAvLyBQbGF0Zm9ybVdoZWVsRXZlbnQKKyAgICAgICAgbV9wb3NpdGlvbiAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBwb2ludEZvckV2ZW50KGV2ZW50LCB3aW5kb3dWaWV3KTsK
KyAgICAgICAgbV9nbG9iYWxQb3NpdGlvbiAgICAgICAgICAgICAgICAgICAgPSBnbG9iYWxQb2lu
dEZvckV2ZW50KGV2ZW50KTsKKyAgICAgICAgbV9ncmFudWxhcml0eSAgICAgICAgICAgICAgICAg
ICAgICAgPSBTY3JvbGxCeVBhZ2VXaGVlbEV2ZW50OworCisgICAgICAgIEJPT0wgY29udGludW91
czsKKyAgICAgICAgd2tHZXRXaGVlbEV2ZW50RGVsdGFzKGV2ZW50LCAmbV9kZWx0YVgsICZtX2Rl
bHRhWSwgJmNvbnRpbnVvdXMpOworICAgICAgICBpZiAoY29udGludW91cykgeworICAgICAgICAg
ICAgbV93aGVlbFRpY2tzWCA9IG1fZGVsdGFYIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KFNjcm9sbGJh
cjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSk7CisgICAgICAgICAgICBtX3doZWVsVGlja3NZID0gbV9k
ZWx0YVkgLyBzdGF0aWNfY2FzdDxmbG9hdD4oU2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgp
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fd2hlZWxUaWNrc1ggPSBtX2RlbHRh
WDsKKyAgICAgICAgICAgIG1fd2hlZWxUaWNrc1kgPSBtX2RlbHRhWTsKKyAgICAgICAgICAgIG1f
ZGVsdGFYICo9IHN0YXRpY19jYXN0PGZsb2F0PihTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVw
KCkpOworICAgICAgICAgICAgbV9kZWx0YVkgKj0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KFNjcm9sbGJh
cjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSk7CisgICAgICAgIH0KKworICAgICAgICBtX3BoYXNlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IHBoYXNlRm9yRXZlbnQoZXZlbnQpOworICAgICAg
ICBtX21vbWVudHVtUGhhc2UgICAgICAgICAgICAgICAgICAgICA9IG1vbWVudHVtUGhhc2VGb3JF
dmVudChldmVudCk7CisgICAgICAgIG1faGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyAgICAgICAg
ID0gY29udGludW91czsKKworI2lmIEhBVkUoSU5WRVJURURfV0hFRUxfRVZFTlRTKQorICAgICAg
ICBtX2RpcmVjdGlvbkludmVydGVkRnJvbURldmljZSAgICAgICA9IFtldmVudCBpc0RpcmVjdGlv
bkludmVydGVkRnJvbURldmljZV07CisjZWxzZQorICAgICAgICBtX2RpcmVjdGlvbkludmVydGVk
RnJvbURldmljZSAgICAgICA9IGZhbHNlOworI2VuZGlmCisgICAgfQorfTsKKworUGxhdGZvcm1X
aGVlbEV2ZW50IFBsYXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQbGF0Zm9ybVdoZWVsRXZlbnQo
TlNFdmVudCAqZXZlbnQsIE5TVmlldyAqd2luZG93VmlldykKK3sKKyAgICByZXR1cm4gUGxhdGZv
cm1XaGVlbEV2ZW50QnVpbGRlcihldmVudCwgd2luZG93Vmlldyk7Cit9CisKKworY2xhc3MgUGxh
dGZvcm1LZXlib2FyZEV2ZW50QnVpbGRlciA6IHB1YmxpYyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQg
eworcHVibGljOgorICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudEJ1aWxkZXIoTlNFdmVudCAqZXZl
bnQpCisgICAgeworICAgICAgICAvLyBQbGF0Zm9ybUV2ZW50CisgICAgICAgIG1fdHlwZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gaXNLZXlVcEV2ZW50KGV2ZW50KSA/IFBsYXRmb3Jt
RXZlbnQ6OktleVVwIDogUGxhdGZvcm1FdmVudDo6S2V5RG93bjsKKyAgICAgICAgbV9tb2RpZmll
cnMgICAgICAgICAgICAgICAgICAgICAgICAgPSBtb2RpZmllcnNGb3JFdmVudChldmVudCk7Cisg
ICAgICAgIG1fdGltZXN0YW1wICAgICAgICAgICAgICAgICAgICAgICAgID0gW2V2ZW50IHRpbWVz
dGFtcF07CisKKyAgICAgICAgLy8gUGxhdGZvcm1LZXlib2FyZEV2ZW50CisgICAgICAgIG1fdGV4
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gdGV4dEZyb21FdmVudChldmVudCk7Cisg
ICAgICAgIG1fdW5tb2RpZmllZFRleHQgICAgICAgICAgICAgICAgICAgID0gdW5tb2RpZmllZFRl
eHRGcm9tRXZlbnQoZXZlbnQpOworICAgICAgICBtX2tleUlkZW50aWZpZXIgICAgICAgICAgICAg
ICAgICAgICA9IGtleUlkZW50aWZpZXJGb3JLZXlFdmVudChldmVudCk7CisgICAgICAgIG1fd2lu
ZG93c1ZpcnR1YWxLZXlDb2RlICAgICAgICAgICAgID0gd2luZG93c0tleUNvZGVGb3JLZXlFdmVu
dChldmVudCk7CisgICAgICAgIG1fbmF0aXZlVmlydHVhbEtleUNvZGUgICAgICAgICAgICAgID0g
W2V2ZW50IGtleUNvZGVdOworICAgICAgICBtX21hY0NoYXJDb2RlICAgICAgICAgICAgICAgICAg
ICAgICA9IHdrR2V0TlNFdmVudEtleUNoYXIoZXZlbnQpOworICAgICAgICBtX2F1dG9SZXBlYXQg
ICAgICAgICAgICAgICAgICAgICAgICA9IChbZXZlbnQgdHlwZV0gIT0gTlNGbGFnc0NoYW5nZWQp
ICYmIFtldmVudCBpc0FSZXBlYXRdOworICAgICAgICBtX2lzS2V5cGFkICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IGlzS2V5cGFkRXZlbnQoZXZlbnQpOworICAgICAgICBtX2lzU3lzdGVtS2V5
ICAgICAgICAgICAgICAgICAgICAgICA9IGZhbHNlOyAvLyBTeXN0ZW1LZXkgaXMgYWx3YXlzIGZh
bHNlIG9uIHRoZSBNYWMuCisKKyAgICAgICAgLy8gQWx3YXlzIHVzZSAxMyBmb3IgRW50ZXIvUmV0
dXJuIC0tIHdlIGRvbid0IHdhbnQgdG8gdXNlIEFwcEtpdCdzIGRpZmZlcmVudCBjaGFyYWN0ZXIg
Zm9yIEVudGVyLgorICAgICAgICBpZiAobV93aW5kb3dzVmlydHVhbEtleUNvZGUgPT0gVktfUkVU
VVJOKSB7CisgICAgICAgICAgICBtX3RleHQgPSAiXHIiOworICAgICAgICAgICAgbV91bm1vZGlm
aWVkVGV4dCA9ICJcciI7CisgICAgICAgIH0KKworICAgICAgICAvLyBBcHBLaXQgc2V0cyB0ZXh0
IHRvICJceDdGIiBmb3IgYmFja3NwYWNlLCBidXQgdGhlIGNvcnJlY3QgS2V5Ym9hcmRFdmVudCBj
aGFyYWN0ZXIgY29kZSBpcyA4LgorICAgICAgICBpZiAobV93aW5kb3dzVmlydHVhbEtleUNvZGUg
PT0gVktfQkFDSykgeworICAgICAgICAgICAgbV90ZXh0ID0gIlx4OCI7CisgICAgICAgICAgICBt
X3VubW9kaWZpZWRUZXh0ID0gIlx4OCI7CisgICAgICAgIH0KKworICAgICAgICAvLyBBbHdheXMg
dXNlIDkgZm9yIFRhYiAtLSB3ZSBkb24ndCB3YW50IHRvIHVzZSBBcHBLaXQncyBkaWZmZXJlbnQg
Y2hhcmFjdGVyIGZvciBzaGlmdC10YWIuCisgICAgICAgIGlmIChtX3dpbmRvd3NWaXJ0dWFsS2V5
Q29kZSA9PSBWS19UQUIpIHsKKyAgICAgICAgICAgIG1fdGV4dCA9ICJceDkiOworICAgICAgICAg
ICAgbV91bm1vZGlmaWVkVGV4dCA9ICJceDkiOworICAgICAgICB9CisKKyAgICAgICAgLy8gTWFj
IHNwZWNpZmljLgorICAgICAgICBtX21hY0V2ZW50ID0gZXZlbnQ7CisgICAgfQorfTsKKworUGxh
dGZvcm1LZXlib2FyZEV2ZW50IFBsYXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQoTlNFdmVudCAqZXZlbnQpCit7CisgICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9h
cmRFdmVudEJ1aWxkZXIoZXZlbnQpOworfQorCisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQor
Y2xhc3MgUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyIDogcHVibGljIFBsYXRmb3JtR2VzdHVy
ZUV2ZW50IHsKK3B1YmxpYzoKKyAgICBQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXIoTlNFdmVu
dCAqZXZlbnQsIE5TVmlldyAqd2luZG93VmlldykKKyAgICB7CisgICAgICAgIC8vIFBsYXRmb3Jt
RXZlbnQKKyAgICAgICAgbV90eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBnZXN0
dXJlRXZlbnRUeXBlRm9yRXZlbnQoZXZlbnQpOworICAgICAgICBtX21vZGlmaWVycyAgICAgICAg
ICAgICAgICAgICAgICAgICA9IG1vZGlmaWVyc0ZvckV2ZW50KGV2ZW50KTsKKyAgICAgICAgbV90
aW1lc3RhbXAgICAgICAgICAgICAgICAgICAgICAgICAgPSBbZXZlbnQgdGltZXN0YW1wXTsKKwor
ICAgICAgICAvLyBQbGF0Zm9ybUdlc3R1cmVFdmVudAorICAgICAgICBtX3Bvc2l0aW9uICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IHBvaW50Rm9yRXZlbnQoZXZlbnQsIHdpbmRvd1ZpZXcpOwor
ICAgICAgICBtX2dsb2JhbFBvc2l0aW9uICAgICAgICAgICAgICAgICAgICA9IGdsb2JhbFBvaW50
Rm9yRXZlbnQoZXZlbnQpOworICAgICAgICBtX2RlbHRhWCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IDA7CisgICAgICAgIG1fZGVsdGFZICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
MDsKKyAgICB9Cit9OworCitQbGF0Zm9ybUdlc3R1cmVFdmVudCBQbGF0Zm9ybUV2ZW50RmFjdG9y
eTo6Y3JlYXRlUGxhdGZvcm1HZXN0dXJlRXZlbnQoTlNFdmVudCAqZXZlbnQsIE5TVmlldyAqd2lu
ZG93VmlldykKK3sKKyAgICByZXR1cm4gUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyKGV2ZW50
LCB3aW5kb3dWaWV3KTsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1Nb3VzZUV2ZW50TWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtTW91c2VFdmVudE1hYy5t
bQppbmRleCBjNWY1OTg5MDEyYmY0OGE2ZjBmMzEyYWUzNmY3ZWMzMmU0MzNjZmJjLi41NzQ4ZTdj
Njk0YTY2MmIzYmEwYjY0ZDg3NTgwYzc2MDQyOWM3YmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1Nb3VzZUV2ZW50TWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybU1vdXNlRXZlbnRNYWMubW0KQEAgLTEsMTY5ICsx
LDIgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCiAKLSNpbXBvcnQgImNvbmZpZy5oIgotI2lt
cG9ydCAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCi0KLSNpbXBvcnQgIlBsYXRmb3JtU2NyZWVuLmgi
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIE1vdXNlQnV0dG9uIG1vdXNlQnV0dG9u
Rm9yRXZlbnQoTlNFdmVudCAqZXZlbnQpCi17Ci0gICAgc3dpdGNoIChbZXZlbnQgdHlwZV0pIHsK
LSAgICAgICAgY2FzZSBOU0xlZnRNb3VzZURvd246Ci0gICAgICAgIGNhc2UgTlNMZWZ0TW91c2VV
cDoKLSAgICAgICAgY2FzZSBOU0xlZnRNb3VzZURyYWdnZWQ6Ci0gICAgICAgICAgICByZXR1cm4g
TGVmdEJ1dHRvbjsKLSAgICAgICAgY2FzZSBOU1JpZ2h0TW91c2VEb3duOgotICAgICAgICBjYXNl
IE5TUmlnaHRNb3VzZVVwOgotICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZURyYWdnZWQ6Ci0gICAg
ICAgICAgICByZXR1cm4gUmlnaHRCdXR0b247Ci0gICAgICAgIGNhc2UgTlNPdGhlck1vdXNlRG93
bjoKLSAgICAgICAgY2FzZSBOU090aGVyTW91c2VVcDoKLSAgICAgICAgY2FzZSBOU090aGVyTW91
c2VEcmFnZ2VkOgotICAgICAgICAgICAgcmV0dXJuIE1pZGRsZUJ1dHRvbjsKLSAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgIHJldHVybiBOb0J1dHRvbjsKLSAgICB9Ci19Ci0KLXN0YXRpYyBp
bnQgY2xpY2tDb3VudEZvckV2ZW50KE5TRXZlbnQgKmV2ZW50KQotewotICAgIHN3aXRjaCAoW2V2
ZW50IHR5cGVdKSB7Ci0gICAgICAgIGNhc2UgTlNMZWZ0TW91c2VEb3duOgotICAgICAgICBjYXNl
IE5TTGVmdE1vdXNlVXA6Ci0gICAgICAgIGNhc2UgTlNMZWZ0TW91c2VEcmFnZ2VkOgotICAgICAg
ICBjYXNlIE5TUmlnaHRNb3VzZURvd246Ci0gICAgICAgIGNhc2UgTlNSaWdodE1vdXNlVXA6Ci0g
ICAgICAgIGNhc2UgTlNSaWdodE1vdXNlRHJhZ2dlZDoKLSAgICAgICAgY2FzZSBOU090aGVyTW91
c2VEb3duOgotICAgICAgICBjYXNlIE5TT3RoZXJNb3VzZVVwOgotICAgICAgICBjYXNlIE5TT3Ro
ZXJNb3VzZURyYWdnZWQ6Ci0gICAgICAgICAgICByZXR1cm4gW2V2ZW50IGNsaWNrQ291bnRdOwot
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotfQotCi1JbnRQ
b2ludCBnbG9iYWxQb2ludChjb25zdCBOU1BvaW50JiB3aW5kb3dQb2ludCwgTlNXaW5kb3cgKndp
bmRvdykKLXsKLSAgICByZXR1cm4gSW50UG9pbnQoZmxpcFNjcmVlblBvaW50KFt3aW5kb3cgY29u
dmVydEJhc2VUb1NjcmVlbjp3aW5kb3dQb2ludF0sIHNjcmVlbkZvcldpbmRvdyh3aW5kb3cpKSk7
Ci19Ci0KLUludFBvaW50IHBvaW50Rm9yRXZlbnQoTlNFdmVudCAqZXZlbnQsIE5TVmlldyAqd2lu
ZG93VmlldykKLXsKLSAgICBzd2l0Y2ggKFtldmVudCB0eXBlXSkgewotICAgICAgICBjYXNlIE5T
TGVmdE1vdXNlRG93bjoKLSAgICAgICAgY2FzZSBOU0xlZnRNb3VzZVVwOgotICAgICAgICBjYXNl
IE5TTGVmdE1vdXNlRHJhZ2dlZDoKLSAgICAgICAgY2FzZSBOU1JpZ2h0TW91c2VEb3duOgotICAg
ICAgICBjYXNlIE5TUmlnaHRNb3VzZVVwOgotICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZURyYWdn
ZWQ6Ci0gICAgICAgIGNhc2UgTlNPdGhlck1vdXNlRG93bjoKLSAgICAgICAgY2FzZSBOU090aGVy
TW91c2VVcDoKLSAgICAgICAgY2FzZSBOU090aGVyTW91c2VEcmFnZ2VkOgotICAgICAgICBjYXNl
IE5TTW91c2VNb3ZlZDoKLSAgICAgICAgY2FzZSBOU1Njcm9sbFdoZWVsOiB7Ci0gICAgICAgICAg
ICAvLyBOb3RlOiBUaGlzIHdpbGwgaGF2ZSBpdHMgb3JpZ2luIGF0IHRoZSBib3R0b20gbGVmdCBv
ZiB0aGUgd2luZG93IHVubGVzcyB3aW5kb3dWaWV3IGlzIGZsaXBwZWQuCi0gICAgICAgICAgICAv
LyBJbiB0aG9zZSBjYXNlcywgdGhlIFkgY29vcmRpbmF0ZSBnZXRzIGZsaXBwZWQgYnkgV2lkZ2V0
Ojpjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3cuCi0gICAgICAgICAgICBOU1BvaW50IGxvY2F0
aW9uID0gW2V2ZW50IGxvY2F0aW9uSW5XaW5kb3ddOwotICAgICAgICAgICAgaWYgKHdpbmRvd1Zp
ZXcpCi0gICAgICAgICAgICAgICAgbG9jYXRpb24gPSBbd2luZG93VmlldyBjb252ZXJ0UG9pbnQ6
bG9jYXRpb24gZnJvbVZpZXc6bmlsXTsKLSAgICAgICAgICAgIHJldHVybiBJbnRQb2ludChsb2Nh
dGlvbik7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBJ
bnRQb2ludCgpOwotICAgIH0KLX0KLQotSW50UG9pbnQgZ2xvYmFsUG9pbnRGb3JFdmVudChOU0V2
ZW50ICpldmVudCkKLXsKLSAgICBzd2l0Y2ggKFtldmVudCB0eXBlXSkgewotICAgICAgICBjYXNl
IE5TTGVmdE1vdXNlRG93bjoKLSAgICAgICAgY2FzZSBOU0xlZnRNb3VzZVVwOgotICAgICAgICBj
YXNlIE5TTGVmdE1vdXNlRHJhZ2dlZDoKLSAgICAgICAgY2FzZSBOU1JpZ2h0TW91c2VEb3duOgot
ICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZVVwOgotICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZURy
YWdnZWQ6Ci0gICAgICAgIGNhc2UgTlNPdGhlck1vdXNlRG93bjoKLSAgICAgICAgY2FzZSBOU090
aGVyTW91c2VVcDoKLSAgICAgICAgY2FzZSBOU090aGVyTW91c2VEcmFnZ2VkOgotICAgICAgICBj
YXNlIE5TTW91c2VNb3ZlZDoKLSAgICAgICAgY2FzZSBOU1Njcm9sbFdoZWVsOgotICAgICAgICAg
ICAgcmV0dXJuIGdsb2JhbFBvaW50KFtldmVudCBsb2NhdGlvbkluV2luZG93XSwgW2V2ZW50IHdp
bmRvd10pOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIEludFBvaW50KCk7
Ci0gICAgfQotfQotCi1zdGF0aWMgUGxhdGZvcm1FdmVudDo6VHlwZSBtb3VzZUV2ZW50Rm9yTlNF
dmVudChOU0V2ZW50KiBldmVudCkgCi17Ci0gICAgc3dpdGNoIChbZXZlbnQgdHlwZV0pIHsKLSAg
ICBjYXNlIE5TU2Nyb2xsV2hlZWw6Ci0gICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpNb3Vz
ZVNjcm9sbDsKLSAgICBjYXNlIE5TTGVmdE1vdXNlRHJhZ2dlZDoKLSAgICBjYXNlIE5TUmlnaHRN
b3VzZURyYWdnZWQ6Ci0gICAgY2FzZSBOU090aGVyTW91c2VEcmFnZ2VkOgotICAgIGNhc2UgTlNN
b3VzZU1vdmVkOgotICAgICAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZDsKLSAg
ICBjYXNlIE5TTGVmdE1vdXNlRG93bjoKLSAgICBjYXNlIE5TUmlnaHRNb3VzZURvd246Ci0gICAg
Y2FzZSBOU090aGVyTW91c2VEb3duOgotICAgICAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6TW91
c2VQcmVzc2VkOwotICAgIGNhc2UgTlNMZWZ0TW91c2VVcDoKLSAgICBjYXNlIE5TUmlnaHRNb3Vz
ZVVwOgotICAgIGNhc2UgTlNPdGhlck1vdXNlVXA6Ci0gICAgICAgIHJldHVybiBQbGF0Zm9ybUV2
ZW50OjpNb3VzZVJlbGVhc2VkOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBQbGF0Zm9y
bUV2ZW50OjpNb3VzZU1vdmVkOwotICAgIH0KLX0KLQotUGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0
Zm9ybU1vdXNlRXZlbnQoTlNFdmVudCogZXZlbnQsIE5TVmlldyAqd2luZG93VmlldykKLSAgICA6
IFBsYXRmb3JtRXZlbnQobW91c2VFdmVudEZvck5TRXZlbnQoZXZlbnQpLCBbZXZlbnQgbW9kaWZp
ZXJGbGFnc10gJiBOU1NoaWZ0S2V5TWFzaywgW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb250
cm9sS2V5TWFzaywgW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNBbHRlcm5hdGVLZXlNYXNrLCBb
ZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0NvbW1hbmRLZXlNYXNrLCBbZXZlbnQgdGltZXN0YW1w
XSkKLSAgICAsIG1fcG9zaXRpb24ocG9pbnRGb3JFdmVudChldmVudCwgd2luZG93VmlldykpCi0g
ICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvaW50Rm9yRXZlbnQoZXZlbnQpKQotICAgICwg
bV9idXR0b24obW91c2VCdXR0b25Gb3JFdmVudChldmVudCkpCi0gICAgLCBtX2NsaWNrQ291bnQo
Y2xpY2tDb3VudEZvckV2ZW50KGV2ZW50KSkKLSAgICAsIG1fbW9kaWZpZXJGbGFncyhbZXZlbnQg
bW9kaWZpZXJGbGFnc10pCi0gICAgLCBtX2V2ZW50TnVtYmVyKFtldmVudCBldmVudE51bWJlcl0p
Ci17Ci19Ci0KLVBsYXRmb3JtTW91c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KGludCB4LCBp
bnQgeSwgaW50IGdsb2JhbFgsIGludCBnbG9iYWxZLCBNb3VzZUJ1dHRvbiBidXR0b24sIFBsYXRm
b3JtRXZlbnQ6OlR5cGUgdHlwZSwKLSAgICAgICAgICAgICAgICAgICBpbnQgY2xpY2tDb3VudCwg
Ym9vbCBzaGlmdEtleSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBtZXRhS2V5LCBk
b3VibGUgdGltZXN0YW1wLAotICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG1vZGlmaWVyRmxh
Z3MsIGludCBldmVudE51bWJlcikKLSAgICA6IFBsYXRmb3JtRXZlbnQodHlwZSwgc2hpZnRLZXks
IGN0cmxLZXksIGFsdEtleSwgbWV0YUtleSwgdGltZXN0YW1wKQotICAgICwgbV9wb3NpdGlvbihJ
bnRQb2ludCh4LCB5KSkKLSAgICAsIG1fZ2xvYmFsUG9zaXRpb24oSW50UG9pbnQoZ2xvYmFsWCwg
Z2xvYmFsWSkpCi0gICAgLCBtX2J1dHRvbihidXR0b24pCi0gICAgLCBtX2NsaWNrQ291bnQoY2xp
Y2tDb3VudCkKLSAgICAsIG1fbW9kaWZpZXJGbGFncyhtb2RpZmllckZsYWdzKQotICAgICwgbV9l
dmVudE51bWJlcihldmVudE51bWJlcikKLXsKLX0KLQotfQorLy8gUkVNT1ZFIFRISVMgRklMRQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRl
cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJm
YWNlLmgKaW5kZXggMTc2NGI3OWY2OTI1MGJkZDlmYTBkMDJmNjA4MDg0NGM1ODViNmY3NS4uYmVi
MzZjYTA2ZGQzOGI1MDdhMDYwYzgwNGZlY2YzYmUzMzBjYWEwYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCkBAIC0xNzIs
NiArMTcyLDcgQEAgZXh0ZXJuIGRvdWJsZSAoKndrR2V0TlNVUkxSZXNwb25zZUNhbGN1bGF0ZWRF
eHBpcmF0aW9uKShOU1VSTFJlc3BvbnNlICpyZXNwb25zZSkKIGV4dGVybiBOU0RhdGUgKigqd2tH
ZXROU1VSTFJlc3BvbnNlTGFzdE1vZGlmaWVkRGF0ZSkoTlNVUkxSZXNwb25zZSAqcmVzcG9uc2Up
OwogZXh0ZXJuIEJPT0wgKCp3a0dldE5TVVJMUmVzcG9uc2VNdXN0UmV2YWxpZGF0ZSkoTlNVUkxS
ZXNwb25zZSAqcmVzcG9uc2UpOwogZXh0ZXJuIHZvaWQgKCp3a0dldFdoZWVsRXZlbnREZWx0YXMp
KE5TRXZlbnQqLCBmbG9hdCogZGVsdGFYLCBmbG9hdCogZGVsdGFZLCBCT09MKiBjb250aW51b3Vz
KTsKK2V4dGVybiBVSW50OCAoKndrR2V0TlNFdmVudEtleUNoYXIpKE5TRXZlbnQgKik7CiBleHRl
cm4gQk9PTCAoKndrSGl0VGVzdE1lZGlhVUlQYXJ0KShpbnQgcGFydCwgaW50IHRoZW1lU3R5bGUs
IENHUmVjdCBib3VuZHMsIENHUG9pbnQgcG9pbnQpOwogZXh0ZXJuIHZvaWQgKCp3a01lYXN1cmVN
ZWRpYVVJUGFydCkoaW50IHBhcnQsIGludCB0aGVtZVN0eWxlLCBDR1JlY3QgKmJvdW5kcywgQ0dT
aXplICpuYXR1cmFsU2l6ZSk7CiBleHRlcm4gTlNWaWV3ICooKndrQ3JlYXRlTWVkaWFVSUJhY2tn
cm91bmRWaWV3KSh2b2lkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggY2RhMDk1YmVkNDdmZmNjYTE0ZjFiMTI1
ZWUzYmU0OTA1ZjE4YzZhYy4uYjRjYTU0MDdkZDVhMDViYmNkNTgwMmRkZDdhZTExMDNmMzBjMDU1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1J
bnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UubW0KQEAgLTYwLDYgKzYwLDcgQEAgTlNUaW1lSW50ZXJ2YWwgKCp3a0dldE5T
VVJMUmVzcG9uc2VDYWxjdWxhdGVkRXhwaXJhdGlvbikoTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UK
IE5TRGF0ZSAqKCp3a0dldE5TVVJMUmVzcG9uc2VMYXN0TW9kaWZpZWREYXRlKShOU1VSTFJlc3Bv
bnNlICpyZXNwb25zZSk7CiBCT09MICgqd2tHZXROU1VSTFJlc3BvbnNlTXVzdFJldmFsaWRhdGUp
KE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlKTsKIHZvaWQgKCp3a0dldFdoZWVsRXZlbnREZWx0YXMp
KE5TRXZlbnQqLCBmbG9hdCogZGVsdGFYLCBmbG9hdCogZGVsdGFZLCBCT09MKiBjb250aW51b3Vz
KTsKK1VJbnQ4ICgqd2tHZXROU0V2ZW50S2V5Q2hhcikoTlNFdmVudCAqKTsKIHZvaWQgKCp3a1Bv
cHVwTWVudSkoTlNNZW51KiwgTlNQb2ludCBsb2NhdGlvbiwgZmxvYXQgd2lkdGgsIE5TVmlldyos
IGludCBzZWxlY3RlZEl0ZW0sIE5TRm9udCopOwogdW5zaWduZWQgKCp3a1FUSW5jbHVkZU9ubHlN
b2Rlcm5NZWRpYUZpbGVUeXBlcykodm9pZCk7CiBpbnQgKCp3a1FUTW92aWVEYXRhUmF0ZSkoUVRN
b3ZpZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1doZWVsRXZl
bnRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2hlZWxFdmVudE1hYy5tbQpp
bmRleCA4OWM5ZmI3N2U5OTM5YTkxNDA5MjhmNjcwNzFmZGI2MWY2NTRjZDI4Li41NzQ4ZTdjNjk0
YTY2MmIzYmEwYjY0ZDg3NTgwYzc2MDQyOWM3YmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvV2hlZWxFdmVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2hlZWxFdmVudE1hYy5tbQpAQCAtMSwxMjEgKzEsMiBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNiwgMjAxMCwgMjAxMSBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KIAotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJQ
bGF0Zm9ybVdoZWVsRXZlbnQuaCIKLQotI2ltcG9ydCAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCi0j
aW1wb3J0ICJTY3JvbGxiYXIuaCIKLSNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIK
LSNpbXBvcnQgPHd0Zi9VbnVzZWRQYXJhbS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0
YXRpYyBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSBtb21lbnR1bVBoYXNlRm9yRXZlbnQoTlNFdmVu
dCAqZXZlbnQpCi17Ci0gICAgdWludDMyX3QgcGhhc2UgPSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFz
ZU5vbmU7Ci0KLSNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChC
VUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCi0gICAgaWYgKFtldmVudCBtb21lbnR1bVBoYXNlXSAm
IE5TRXZlbnRQaGFzZUJlZ2FuKQotICAgICAgICBwaGFzZSB8PSBQbGF0Zm9ybVdoZWVsRXZlbnRQ
aGFzZUJlZ2FuOwotICAgIGlmIChbZXZlbnQgbW9tZW50dW1QaGFzZV0gJiBOU0V2ZW50UGhhc2VT
dGF0aW9uYXJ5KQotICAgICAgICBwaGFzZSB8PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZVN0YXRp
b25hcnk7Ci0gICAgaWYgKFtldmVudCBtb21lbnR1bVBoYXNlXSAmIE5TRXZlbnRQaGFzZUNoYW5n
ZWQpCi0gICAgICAgIHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQ2hhbmdlZDsKLSAg
ICBpZiAoW2V2ZW50IG1vbWVudHVtUGhhc2VdICYgTlNFdmVudFBoYXNlRW5kZWQpCi0gICAgICAg
IHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlRW5kZWQ7Ci0gICAgaWYgKFtldmVudCBt
b21lbnR1bVBoYXNlXSAmIE5TRXZlbnRQaGFzZUNhbmNlbGxlZCkKLSAgICAgICAgcGhhc2UgfD0g
UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VDYW5jZWxsZWQ7Ci0jZWxzZQotICAgIHN3aXRjaCAod2tH
ZXROU0V2ZW50TW9tZW50dW1QaGFzZShldmVudCkpIHsKLSAgICBjYXNlIHdrRXZlbnRQaGFzZU5v
bmU6Ci0gICAgICAgIHBoYXNlID0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VOb25lOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIHdrRXZlbnRQaGFzZUJlZ2FuOgotICAgICAgICBwaGFzZSA9IFBs
YXRmb3JtV2hlZWxFdmVudFBoYXNlQmVnYW47Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ugd2tF
dmVudFBoYXNlQ2hhbmdlZDoKLSAgICAgICAgcGhhc2UgPSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFz
ZUNoYW5nZWQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ugd2tFdmVudFBoYXNlRW5kZWQ6Ci0g
ICAgICAgIHBoYXNlID0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VFbmRlZDsKLSAgICAgICAgYnJl
YWs7Ci0gICAgfQotI2VuZGlmCi0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UGxhdGZvcm1XaGVl
bEV2ZW50UGhhc2U+KHBoYXNlKTsKLX0KLQotc3RhdGljIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNl
IHBoYXNlRm9yRXZlbnQoTlNFdmVudCAqZXZlbnQpCi17Ci0jaWYgIWRlZmluZWQoQlVJTERJTkdf
T05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQotICAgIHVp
bnQzMl90IHBoYXNlID0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VOb25lOyAKLSAgICBpZiAoW2V2
ZW50IHBoYXNlXSAmIE5TRXZlbnRQaGFzZUJlZ2FuKQotICAgICAgICBwaGFzZSB8PSBQbGF0Zm9y
bVdoZWVsRXZlbnRQaGFzZUJlZ2FuOwotICAgIGlmIChbZXZlbnQgcGhhc2VdICYgTlNFdmVudFBo
YXNlU3RhdGlvbmFyeSkKLSAgICAgICAgcGhhc2UgfD0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VT
dGF0aW9uYXJ5OwotICAgIGlmIChbZXZlbnQgcGhhc2VdICYgTlNFdmVudFBoYXNlQ2hhbmdlZCkK
LSAgICAgICAgcGhhc2UgfD0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VDaGFuZ2VkOwotICAgIGlm
IChbZXZlbnQgcGhhc2VdICYgTlNFdmVudFBoYXNlRW5kZWQpCi0gICAgICAgIHBoYXNlIHw9IFBs
YXRmb3JtV2hlZWxFdmVudFBoYXNlRW5kZWQ7Ci0gICAgaWYgKFtldmVudCBwaGFzZV0gJiBOU0V2
ZW50UGhhc2VDYW5jZWxsZWQpCi0gICAgICAgIHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVudFBo
YXNlQ2FuY2VsbGVkOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxQbGF0Zm9ybVdoZWVsRXZlbnRQ
aGFzZT4ocGhhc2UpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZXZlbnQpOwotICAgIHJldHVy
biBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmU7Ci0jZW5kaWYKLX0KLQotUGxhdGZvcm1XaGVl
bEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQoTlNFdmVudCogZXZlbnQsIE5TVmlldyAqd2luZG93
VmlldykKLSAgICA6IFBsYXRmb3JtRXZlbnQoUGxhdGZvcm1FdmVudDo6V2hlZWwsIFtldmVudCBt
b2RpZmllckZsYWdzXSAmIE5TU2hpZnRLZXlNYXNrLCBbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBO
U0NvbnRyb2xLZXlNYXNrLCBbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0FsdGVybmF0ZUtleU1h
c2ssIFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQ29tbWFuZEtleU1hc2ssIFtldmVudCB0aW1l
c3RhbXBdKQotICAgICwgbV9wb3NpdGlvbihwb2ludEZvckV2ZW50KGV2ZW50LCB3aW5kb3dWaWV3
KSkKLSAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9pbnRGb3JFdmVudChldmVudCkpCi0g
ICAgLCBtX2dyYW51bGFyaXR5KFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50KQotICAgICwgbV9waGFz
ZShwaGFzZUZvckV2ZW50KGV2ZW50KSkKLSAgICAsIG1fbW9tZW50dW1QaGFzZShtb21lbnR1bVBo
YXNlRm9yRXZlbnQoZXZlbnQpKQotewotICAgIEJPT0wgY29udGludW91czsKLSAgICB3a0dldFdo
ZWVsRXZlbnREZWx0YXMoZXZlbnQsICZtX2RlbHRhWCwgJm1fZGVsdGFZLCAmY29udGludW91cyk7
Ci0gICAgaWYgKGNvbnRpbnVvdXMpIHsKLSAgICAgICAgbV93aGVlbFRpY2tzWCA9IG1fZGVsdGFY
IC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSk7Ci0g
ICAgICAgIG1fd2hlZWxUaWNrc1kgPSBtX2RlbHRhWSAvIHN0YXRpY19jYXN0PGZsb2F0PihTY3Jv
bGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCkpOwotICAgICAgICBtX2hhc1ByZWNpc2VTY3JvbGxp
bmdEZWx0YXMgPSB0cnVlOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fd2hlZWxUaWNrc1ggPSBt
X2RlbHRhWDsKLSAgICAgICAgbV93aGVlbFRpY2tzWSA9IG1fZGVsdGFZOwotICAgICAgICBtX2Rl
bHRhWCAqPSBzdGF0aWNfY2FzdDxmbG9hdD4oU2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgp
KTsKLSAgICAgICAgbV9kZWx0YVkgKj0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KFNjcm9sbGJhcjo6cGl4
ZWxzUGVyTGluZVN0ZXAoKSk7Ci0gICAgICAgIG1faGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyA9
IGZhbHNlOwotICAgIH0KLQotI2lmIEhBVkUoSU5WRVJURURfV0hFRUxfRVZFTlRTKQotICAgIG1f
ZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlID0gW2V2ZW50IGlzRGlyZWN0aW9uSW52ZXJ0ZWRG
cm9tRGV2aWNlXTsKLSNlbHNlCi0gICAgbV9kaXJlY3Rpb25JbnZlcnRlZEZyb21EZXZpY2UgPSBm
YWxzZTsKLSNlbmRpZgotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisvLyBSRU1PVkUgVEhJ
UyBGSUxFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJT
eXN0ZW1JbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJT
eXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggMTMxMDEyNGQyNzI5ZmI2OWM3NWY2M2IwZjZjYjUwMzQz
MGZkYjFhMy4uZTkzZDBjNjFlZGZjZDNlOGM4YjU2YmFjYzJkMDk5MzBmMDIxMTJmNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVy
ZmFjZS5tbQpAQCAtNjcsNiArNjcsNyBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNl
KHZvaWQpCiAgICAgSU5JVChTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcpOwogICAg
IElOSVQoR2V0UHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUpOwogICAgIElOSVQoR2V0V2hl
ZWxFdmVudERlbHRhcyk7CisgICAgSU5JVChHZXROU0V2ZW50S2V5Q2hhcik7CiAgICAgSU5JVChI
aXRUZXN0TWVkaWFVSVBhcnQpOwogICAgIElOSVQoSW5pdGlhbGl6ZU1heGltdW1IVFRQQ29ubmVj
dGlvbkNvdW50UGVySG9zdCk7CiAgICAgSU5JVChNZWFzdXJlTWVkaWFVSVBhcnQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggNjFiOGU4ODZlMTQ2ODM2ZWJkNDczNDgw
ZGE5Y2I5NDkzMjA3Zjc1MC4uYTVjMzQyY2EzYTQ2NzE2ZTkzZWFlNDNlYTVhMGI2N2U3NjJjYWQ3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC03Niw2ICs3Niw3IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL0hpdFRlc3RSZXN1bHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvTGVn
YWN5V2ViQXJjaGl2ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CisjaW1wb3J0IDxXZWJD
b3JlL1BsYXRmb3JtRXZlbnRGYWN0b3J5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsdWdpbkRhdGEu
aD4KICNpbXBvcnQgPFdlYkNvcmUvUHJpbnRDb250ZXh0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jl
bmRlckxheWVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhU
TUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRl
eCBkMWVlYjY5YWIyZTJlZTEwYTIwNjNjZTgzNTBjZjc5NDQzODhhZDI2Li5jNGJjMmEyZTAyZDVi
YTg4NDIyNzRmOGI0YzUzZjIxOTQzYWIwNTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViSFRNTFZpZXcubW0KQEAgLTEwNCw3ICsxMDQsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9MZWdh
Y3lXZWJBcmNoaXZlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KICNp
bXBvcnQgPFdlYkNvcmUvUGFnZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUtleWJvYXJk
RXZlbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1FdmVudEZhY3RvcnkuaD4KICNpbXBv
cnQgPFdlYkNvcmUvUmFuZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyV2lkZ2V0Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1JlbmRlclZpZXcuaD4KQEAgLTMxMDgsNyArMzEwOCw3IEBAIHN0YXRp
YyB2b2lkIHNldE1lbnVUYXJnZXRzKE5TTWVudSogbWVudSkKICAgICBfcHJpdmF0ZS0+aGFuZGxp
bmdNb3VzZURvd25FdmVudCA9IFlFUzsKICAgICBwYWdlLT5jb250ZXh0TWVudUNvbnRyb2xsZXIo
KS0+Y2xlYXJDb250ZXh0TWVudSgpOwogICAgIGNvcmVGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPm1v
dXNlRG93bihldmVudCk7Ci0gICAgQk9PTCBoYW5kbGVkRXZlbnQgPSBjb3JlRnJhbWUtPmV2ZW50
SGFuZGxlcigpLT5zZW5kQ29udGV4dE1lbnVFdmVudChQbGF0Zm9ybU1vdXNlRXZlbnQoZXZlbnQs
IHBhZ2UtPmNocm9tZSgpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKSkpOworICAgIEJPT0wgaGFuZGxl
ZEV2ZW50ID0gY29yZUZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2VuZENvbnRleHRNZW51RXZlbnQo
UGxhdGZvcm1FdmVudEZhY3Rvcnk6OmNyZWF0ZVBsYXRmb3JtTW91c2VFdmVudChldmVudCwgcGFn
ZS0+Y2hyb21lKCktPnBsYXRmb3JtUGFnZUNsaWVudCgpKSk7CiAgICAgX3ByaXZhdGUtPmhhbmRs
aW5nTW91c2VEb3duRXZlbnQgPSBOTzsKIAogICAgIGlmICghaGFuZGxlZEV2ZW50KQpAQCAtMzQ3
Myw3ICszNDczLDcgQEAgc3RhdGljIHZvaWQgc2V0TWVudVRhcmdldHMoTlNNZW51KiBtZW51KQog
ICAgICAgICAgICAgW2hpdEhUTUxWaWV3IF9zZXRNb3VzZURvd25FdmVudDpldmVudF07CiAgICAg
ICAgICAgICBpZiAoW2hpdEhUTUxWaWV3IF9pc1NlbGVjdGlvbkV2ZW50OmV2ZW50XSkgewogICAg
ICAgICAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gY29yZUZyYW1lLT5wYWdlKCkpCi0gICAgICAg
ICAgICAgICAgICAgIHJlc3VsdCA9IGNvcmVGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmV2ZW50TWF5
U3RhcnREcmFnKFBsYXRmb3JtTW91c2VFdmVudChldmVudCwgcGFnZS0+Y2hyb21lKCktPnBsYXRm
b3JtUGFnZUNsaWVudCgpKSk7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNvcmVGcmFt
ZS0+ZXZlbnRIYW5kbGVyKCktPmV2ZW50TWF5U3RhcnREcmFnKFBsYXRmb3JtRXZlbnRGYWN0b3J5
OjpjcmVhdGVQbGF0Zm9ybU1vdXNlRXZlbnQoZXZlbnQsIHBhZ2UtPmNocm9tZSgpLT5wbGF0Zm9y
bVBhZ2VDbGllbnQoKSkpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChbaGl0SFRNTFZpZXcgX2lz
U2Nyb2xsQmFyRXZlbnQ6ZXZlbnRdKQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7CiAg
ICAgICAgICAgICBbaGl0SFRNTFZpZXcgX3NldE1vdXNlRG93bkV2ZW50Om5pbF07CkBAIC0zNDk4
LDcgKzM0OTgsNyBAQCBzdGF0aWMgdm9pZCBzZXRNZW51VGFyZ2V0cyhOU01lbnUqIG1lbnUpCiAg
ICAgICAgICAgICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW2hpdEhUTUxWaWV3IF9mcmFt
ZV0pKSB7CiAgICAgICAgICAgICAgICAgW2hpdEhUTUxWaWV3IF9zZXRNb3VzZURvd25FdmVudDpl
dmVudF07CiAgICAgICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBjb3JlRnJhbWUtPnBhZ2Uo
KSkKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gY29yZUZyYW1lLT5ldmVudEhhbmRsZXIo
KS0+ZXZlbnRNYXlTdGFydERyYWcoUGxhdGZvcm1Nb3VzZUV2ZW50KGV2ZW50LCBwYWdlLT5jaHJv
bWUoKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0
ID0gY29yZUZyYW1lLT5ldmVudEhhbmRsZXIoKS0+ZXZlbnRNYXlTdGFydERyYWcoUGxhdGZvcm1F
dmVudEZhY3Rvcnk6OmNyZWF0ZVBsYXRmb3JtTW91c2VFdmVudChldmVudCwgcGFnZS0+Y2hyb21l
KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpKSk7CiAgICAgICAgICAgICAgICAgW2hpdEhUTUxWaWV3
IF9zZXRNb3VzZURvd25FdmVudDpuaWxdOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0z
NzM4LDEyICszNzM4LDEyIEBAIHN0YXRpYyBQYXNzUmVmUHRyPEtleWJvYXJkRXZlbnQ+IGN1cnJl
bnRLZXlib2FyZEV2ZW50KEZyYW1lKiBjb3JlRnJhbWUpCiAKICAgICBzd2l0Y2ggKFtldmVudCB0
eXBlXSkgewogICAgIGNhc2UgTlNLZXlEb3duOiB7Ci0gICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRF
dmVudCBwbGF0Zm9ybUV2ZW50KGV2ZW50KTsKKyAgICAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50
IHBsYXRmb3JtRXZlbnQgPSBQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1LZXli
b2FyZEV2ZW50KGV2ZW50KTsKICAgICAgICAgcGxhdGZvcm1FdmVudC5kaXNhbWJpZ3VhdGVLZXlE
b3duRXZlbnQoUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bik7CiAgICAgICAgIHJldHVybiBLZXli
b2FyZEV2ZW50OjpjcmVhdGUocGxhdGZvcm1FdmVudCwgY29yZUZyYW1lLT5kb2N1bWVudCgpLT5k
ZWZhdWx0VmlldygpKTsKICAgICB9CiAgICAgY2FzZSBOU0tleVVwOgotICAgICAgICByZXR1cm4g
S2V5Ym9hcmRFdmVudDo6Y3JlYXRlKGV2ZW50LCBjb3JlRnJhbWUtPmRvY3VtZW50KCktPmRlZmF1
bHRWaWV3KCkpOworICAgICAgICByZXR1cm4gS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKFBsYXRmb3Jt
RXZlbnRGYWN0b3J5OjpjcmVhdGVQbGF0Zm9ybUtleWJvYXJkRXZlbnQoZXZlbnQpLCBjb3JlRnJh
bWUtPmRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCkpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KQEAgLTQxNDEsNyArNDE0MSw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEtl
eWJvYXJkRXZlbnQ+IGN1cnJlbnRLZXlib2FyZEV2ZW50KEZyYW1lKiBjb3JlRnJhbWUpCiAKICAg
ICAvLyBEb24ndCBtYWtlIGFuIGV2ZW50IGZyb20gdGhlIG51bSBsb2NrIGFuZCBmdW5jdGlvbiBr
ZXlzLgogICAgIGlmIChjb3JlRnJhbWUgJiYga2V5Q29kZSAhPSAwICYmIGtleUNvZGUgIT0gMTAg
JiYga2V5Q29kZSAhPSA2MykgewotICAgICAgICBjb3JlRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5r
ZXlFdmVudChQbGF0Zm9ybUtleWJvYXJkRXZlbnQoZXZlbnQpKTsKKyAgICAgICAgY29yZUZyYW1l
LT5ldmVudEhhbmRsZXIoKS0+a2V5RXZlbnQoUGxhdGZvcm1FdmVudEZhY3Rvcnk6OmNyZWF0ZVBs
YXRmb3JtS2V5Ym9hcmRFdmVudChldmVudCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5t
bSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbQppbmRleCA4YWUwZjNj
ZmQ1NzgxOTE1ZTlkMTRhZDU2OGZjOTk3NjI0MWFjZjQzLi5jNWZlOTIxMGVjNGIxMTRkNTY3OTdk
MzFjNjMzOWQ1YWNkNTQwMzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlBERlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQREZWaWV3
Lm1tCkBAIC01OCw3ICs1OCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0tVUkwuaD4KICNpbXBvcnQg
PFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Nb3VzZUV2ZW50Lmg+
Ci0jaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9QbGF0Zm9ybUV2ZW50RmFjdG9yeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBw
bGljYXRpb25DaGVja3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViTlNBdHRyaWJ1dGVkU3RyaW5n
RXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgpAQCAtOTU5LDcgKzk1OSw3IEBA
IHN0YXRpYyBCT09MIGlzRnJhbWVJblJhbmdlKFdlYkZyYW1lICpmcmFtZSwgRE9NUmFuZ2UgKnJh
bmdlKQogICAgICAgICAgICAgYnV0dG9uID0gW25zRXZlbnQgYnV0dG9uTnVtYmVyXTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5TS2V5RG93bjogewotICAgICAgICAgICAgUGxh
dGZvcm1LZXlib2FyZEV2ZW50IHBlKG5zRXZlbnQpOworICAgICAgICAgICAgUGxhdGZvcm1LZXli
b2FyZEV2ZW50IHBlID0gUGxhdGZvcm1FdmVudEZhY3Rvcnk6OmNyZWF0ZVBsYXRmb3JtS2V5Ym9h
cmRFdmVudChuc0V2ZW50KTsKICAgICAgICAgICAgIHBlLmRpc2FtYmlndWF0ZUtleURvd25FdmVu
dChQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKTsKICAgICAgICAgICAgIGV2ZW50ID0gS2V5Ym9h
cmRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQsIHRydWUsIHRydWUsIDAs
CiAgICAgICAgICAgICAgICAgcGUua2V5SWRlbnRpZmllcigpLCBwZS53aW5kb3dzVmlydHVhbEtl
eUNvZGUoKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBkN2M5YWI0ZTVk
YmEzNjAwZDkwMjNlNjE2YTZiMWQ0NDAzZmMyOTZiLi42ZDAxNzc3MDcxMzMwNmQ3ODg3NTVjNmYw
N2ExMzFmZDM0MTY4MTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0x
NDQsNyArMTQ0LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvUGFnZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9QYWdlQ2FjaGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZUdyb3VwLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL1BsYXRmb3JtTW91c2VFdmVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUV2
ZW50RmFjdG9yeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Qcm9ncmVzc1RyYWNrZXIuaD4KICNpbXBv
cnQgPFdlYkNvcmUvUmVuZGVyVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJXaWRnZXQu
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudENvbnZlcnNpb24u
Y3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAKaW5kZXgg
YTUzMTU3M2EzMDYxMzRlNjI1MzFmNTViMGExMWU1NTBlMjM1NWE4YS4uYTJiNDFmMjNiMDBjODM4
ZjJiY2Q4MDQ3ODQ1YzRlOGQ4YmZjZTg4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YkV2ZW50Q29udmVyc2lvbi5jcHAKQEAgLTQ5LDEwICs0OSwxNiBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogCi0gICAgICAgIG1fc2hpZnRL
ZXkgPSB3ZWJFdmVudC5zaGlmdEtleSgpOwotICAgICAgICBtX2N0cmxLZXkgPSB3ZWJFdmVudC5j
b250cm9sS2V5KCk7Ci0gICAgICAgIG1fYWx0S2V5ID0gd2ViRXZlbnQuYWx0S2V5KCk7Ci0gICAg
ICAgIG1fbWV0YUtleSA9IHdlYkV2ZW50Lm1ldGFLZXkoKTsKKyAgICAgICAgbV9tb2RpZmllcnMg
PSAwOworICAgICAgICBpZiAod2ViRXZlbnQuc2hpZnRLZXkoKSkKKyAgICAgICAgICAgIG1fbW9k
aWZpZXJzIHw9IFNoaWZ0S2V5OworICAgICAgICBpZiAod2ViRXZlbnQuY29udHJvbEtleSgpKQor
ICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gQ3RybEtleTsKKyAgICAgICAgaWYgKHdlYkV2ZW50
LmFsdEtleSgpKQorICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gQWx0S2V5OworICAgICAgICBp
ZiAod2ViRXZlbnQuYWx0S2V5KCkpCisgICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNZXRhS2V5
OworCiAgICAgICAgIG1fdGltZXN0YW1wID0gd2ViRXZlbnQudGltZXN0YW1wKCk7CiAKICAgICAg
ICAgLy8gUGxhdGZvcm1Nb3VzZUV2ZW50CkBAIC03OCwxMyArODQsMTMgQEAgcHVibGljOgogICAg
ICAgICBtX2NsaWNrQ291bnQgPSB3ZWJFdmVudC5jbGlja0NvdW50KCk7CiAKICAgICAgICAgbV9t
b2RpZmllckZsYWdzID0gMDsKLSAgICAgICAgaWYgKG1fc2hpZnRLZXkpCisgICAgICAgIGlmICh3
ZWJFdmVudC5zaGlmdEtleSgpKQogICAgICAgICAgICAgbV9tb2RpZmllckZsYWdzIHw9IFdlYkV2
ZW50OjpTaGlmdEtleTsKLSAgICAgICAgaWYgKG1fY3RybEtleSkKKyAgICAgICAgaWYgKHdlYkV2
ZW50LmNvbnRyb2xLZXkoKSkKICAgICAgICAgICAgIG1fbW9kaWZpZXJGbGFncyB8PSBXZWJFdmVu
dDo6Q29udHJvbEtleTsKLSAgICAgICAgaWYgKG1fYWx0S2V5KQorICAgICAgICBpZiAod2ViRXZl
bnQuYWx0S2V5KCkpCiAgICAgICAgICAgICBtX21vZGlmaWVyRmxhZ3MgfD0gV2ViRXZlbnQ6OkFs
dEtleTsKLSAgICAgICAgaWYgKG1fbWV0YUtleSkKKyAgICAgICAgaWYgKHdlYkV2ZW50LmFsdEtl
eSgpKQogICAgICAgICAgICAgbV9tb2RpZmllckZsYWdzIHw9IFdlYkV2ZW50OjpNZXRhS2V5Owog
CiAjaWYgUExBVEZPUk0oV0lOKQpAQCAtMTA0LDEwICsxMTAsMTcgQEAgcHVibGljOgogICAgIHsK
ICAgICAgICAgLy8gUGxhdGZvcm1FdmVudAogICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50
OjpXaGVlbDsKLSAgICAgICAgbV9zaGlmdEtleSA9IHdlYkV2ZW50LnNoaWZ0S2V5KCk7Ci0gICAg
ICAgIG1fY3RybEtleSA9IHdlYkV2ZW50LmNvbnRyb2xLZXkoKTsKLSAgICAgICAgbV9hbHRLZXkg
PSB3ZWJFdmVudC5hbHRLZXkoKTsKLSAgICAgICAgbV9tZXRhS2V5ID0gd2ViRXZlbnQubWV0YUtl
eSgpOworCisgICAgICAgIG1fbW9kaWZpZXJzID0gMDsKKyAgICAgICAgaWYgKHdlYkV2ZW50LnNo
aWZ0S2V5KCkpCisgICAgICAgICAgICBtX21vZGlmaWVycyB8PSBTaGlmdEtleTsKKyAgICAgICAg
aWYgKHdlYkV2ZW50LmNvbnRyb2xLZXkoKSkKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IEN0
cmxLZXk7CisgICAgICAgIGlmICh3ZWJFdmVudC5hbHRLZXkoKSkKKyAgICAgICAgICAgIG1fbW9k
aWZpZXJzIHw9IEFsdEtleTsKKyAgICAgICAgaWYgKHdlYkV2ZW50LmFsdEtleSgpKQorICAgICAg
ICAgICAgbV9tb2RpZmllcnMgfD0gTWV0YUtleTsKKwogICAgICAgICBtX3RpbWVzdGFtcCA9IHdl
YkV2ZW50LnRpbWVzdGFtcCgpOwogCiAgICAgICAgIC8vIFBsYXRmb3JtV2hlZWxFdmVudApAQCAt
MTU0LDEwICsxNjcsMTYgQEAgcHVibGljOgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgIH0KIAotICAgICAgICBtX3NoaWZ0S2V5ID0gd2ViRXZlbnQuc2hpZnRLZXko
KTsKLSAgICAgICAgbV9jdHJsS2V5ID0gd2ViRXZlbnQuY29udHJvbEtleSgpOwotICAgICAgICBt
X2FsdEtleSA9IHdlYkV2ZW50LmFsdEtleSgpOwotICAgICAgICBtX21ldGFLZXkgPSB3ZWJFdmVu
dC5tZXRhS2V5KCk7CisgICAgICAgIG1fbW9kaWZpZXJzID0gMDsKKyAgICAgICAgaWYgKHdlYkV2
ZW50LnNoaWZ0S2V5KCkpCisgICAgICAgICAgICBtX21vZGlmaWVycyB8PSBTaGlmdEtleTsKKyAg
ICAgICAgaWYgKHdlYkV2ZW50LmNvbnRyb2xLZXkoKSkKKyAgICAgICAgICAgIG1fbW9kaWZpZXJz
IHw9IEN0cmxLZXk7CisgICAgICAgIGlmICh3ZWJFdmVudC5hbHRLZXkoKSkKKyAgICAgICAgICAg
IG1fbW9kaWZpZXJzIHw9IEFsdEtleTsKKyAgICAgICAgaWYgKHdlYkV2ZW50LmFsdEtleSgpKQor
ICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTWV0YUtleTsKKwogICAgICAgICBtX3RpbWVzdGFt
cCA9IHdlYkV2ZW50LnRpbWVzdGFtcCgpOwogCiAgICAgICAgIC8vIFBsYXRmb3JtS2V5Ym9hcmRF
dmVudApAQCAtMTY2LDE0ICsxODUsMTAgQEAgcHVibGljOgogICAgICAgICBtX2tleUlkZW50aWZp
ZXIgPSB3ZWJFdmVudC5rZXlJZGVudGlmaWVyKCk7CiAgICAgICAgIG1fd2luZG93c1ZpcnR1YWxL
ZXlDb2RlID0gd2ViRXZlbnQud2luZG93c1ZpcnR1YWxLZXlDb2RlKCk7CiAgICAgICAgIG1fbmF0
aXZlVmlydHVhbEtleUNvZGUgPSB3ZWJFdmVudC5uYXRpdmVWaXJ0dWFsS2V5Q29kZSgpOworICAg
ICAgICBtX21hY0NoYXJDb2RlID0gd2ViRXZlbnQubWFjQ2hhckNvZGUoKTsKICAgICAgICAgbV9h
dXRvUmVwZWF0ID0gd2ViRXZlbnQuaXNBdXRvUmVwZWF0KCk7CiAgICAgICAgIG1faXNLZXlwYWQg
PSB3ZWJFdmVudC5pc0tleXBhZCgpOwotICAgICAgICAKLSNpZiBQTEFURk9STShXSU4pCi0gICAg
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbWFrZSBtX2lzU3lzdGVtS2V5IGF2YWlsYWJsZSAoYW5k
IGZhbHNlKSBvbiBhbGwgcGxhdGZvcm1zCi0gICAgICAgIC8vIHRvIGF2b2lkIHRoaXMgI2RlZmlu
ZS4gCiAgICAgICAgIG1faXNTeXN0ZW1LZXkgPSB3ZWJFdmVudC5pc1N5c3RlbUtleSgpOwotI2Vu
ZGlmCiAgICAgfQogfTsKIApAQCAtMjAyLDEwICsyMTcsMTYgQEAgcHVibGljOgogICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KIAotICAgICAgICBtX3NoaWZ0S2V5
ID0gd2ViRXZlbnQuc2hpZnRLZXkoKTsKLSAgICAgICAgbV9jdHJsS2V5ID0gd2ViRXZlbnQuY29u
dHJvbEtleSgpOwotICAgICAgICBtX2FsdEtleSA9IHdlYkV2ZW50LmFsdEtleSgpOwotICAgICAg
ICBtX21ldGFLZXkgPSB3ZWJFdmVudC5tZXRhS2V5KCk7CisgICAgICAgIG1fbW9kaWZpZXJzID0g
MDsKKyAgICAgICAgaWYgKHdlYkV2ZW50LnNoaWZ0S2V5KCkpCisgICAgICAgICAgICBtX21vZGlm
aWVycyB8PSBTaGlmdEtleTsKKyAgICAgICAgaWYgKHdlYkV2ZW50LmNvbnRyb2xLZXkoKSkKKyAg
ICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IEN0cmxLZXk7CisgICAgICAgIGlmICh3ZWJFdmVudC5h
bHRLZXkoKSkKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IEFsdEtleTsKKyAgICAgICAgaWYg
KHdlYkV2ZW50LmFsdEtleSgpKQorICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTWV0YUtleTsK
KwogICAgICAgICBtX3RpbWVzdGFtcCA9IHdlYkV2ZW50LnRpbWVzdGFtcCgpOwogCiAgICAgICAg
IC8vIFBsYXRmb3JtR2VzdHVyZUV2ZW50CkBAIC0yNzQsMTAgKzI5NSwxNiBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogCi0gICAgICAgIG1f
Y3RybEtleSA9IHdlYkV2ZW50LmNvbnRyb2xLZXkoKTsKLSAgICAgICAgbV9hbHRLZXkgPSB3ZWJF
dmVudC5hbHRLZXkoKTsKLSAgICAgICAgbV9zaGlmdEtleSA9IHdlYkV2ZW50LnNoaWZ0S2V5KCk7
Ci0gICAgICAgIG1fbWV0YUtleSA9IHdlYkV2ZW50Lm1ldGFLZXkoKTsKKyAgICAgICAgbV9tb2Rp
ZmllcnMgPSAwOworICAgICAgICBpZiAod2ViRXZlbnQuc2hpZnRLZXkoKSkKKyAgICAgICAgICAg
IG1fbW9kaWZpZXJzIHw9IFNoaWZ0S2V5OworICAgICAgICBpZiAod2ViRXZlbnQuY29udHJvbEtl
eSgpKQorICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gQ3RybEtleTsKKyAgICAgICAgaWYgKHdl
YkV2ZW50LmFsdEtleSgpKQorICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gQWx0S2V5OworICAg
ICAgICBpZiAod2ViRXZlbnQuYWx0S2V5KCkpCisgICAgICAgICAgICBtX21vZGlmaWVycyB8PSBN
ZXRhS2V5OworCiAgICAgICAgIG1fdGltZXN0YW1wID0gd2ViRXZlbnQudGltZXN0YW1wKCk7CiAK
ICAgICAgICAgLy8gUGxhdGZvcm1Ub3VjaEV2ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL21hYy9XS1ZpZXcubW0KaW5kZXggZGNhMDE4YTQyZjE5YmE0ZTRlOWQzMGQzMDAwM2FhMzAx
NzFhMjk5Yy4uNDAzZWFiYjNlYzY5NWIyZGFmZjMyNGJlNmNmOGU4NmFkMzAxOTBjMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQpAQCAtNjcsNyArNjcsNyBA
QAogI2ltcG9ydCA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0tleWJvYXJk
RXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgotI2ltcG9ydCA8
V2ViQ29yZS9QbGF0Zm9ybU1vdXNlRXZlbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1F
dmVudEZhY3RvcnkuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KICNpbXBv
cnQgPFdlYkNvcmUvUmVnaW9uLmg+CiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFj
L1dlYlN5c3RlbUludGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQppbmRleCA4NTgxZGZmYzJmMjk5YTM3
ZmRiZGIwZmFmOTI4MDAyZjc0ZGFhZGVkLi4yOWM0YWMzZWUwYzIwMzVhNGFhYjM5MDM5OGY1ZDM1
YjMwOGIzZDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCkBAIC02NSw2
ICs2NSw3IEBAIHZvaWQgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uodm9pZCkKICAgICAgICAg
SU5JVChHZXRQcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZSk7CiAgICAgICAgIElOSVQoR2V0
VXNlclRvQmFzZUNUTSk7CiAgICAgICAgIElOSVQoR2V0V2hlZWxFdmVudERlbHRhcyk7CisgICAg
ICAgIElOSVQoR2V0TlNFdmVudEtleUNoYXIpOwogICAgICAgICBJTklUKEhpdFRlc3RNZWRpYVVJ
UGFydCk7CiAgICAgICAgIElOSVQoSW5pdGlhbGl6ZU1heGltdW1IVFRQQ29ubmVjdGlvbkNvdW50
UGVySG9zdCk7CiAgICAgICAgIElOSVQoTWVhc3VyZU1lZGlhVUlQYXJ0KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120383</attachid>
            <date>2011-12-22 14:37:36 -0800</date>
            <delta_ts>2011-12-22 14:47:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75063-20111222143740.patch</filename>
            <type>text/plain</type>
            <size>99809</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzNTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTBlNjUzMTNlODYzZWY0
MTQ3NzYwM2Q4NjUyMjRkMTMzNjhkYzcxNy4uYWJjZTM1Y2E0YzY5OGFkYzVjMzllNzQ3ZWY5NjRl
ZmVhMDFmMDg4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDExLTEyLTIxICBTYW0g
V2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RhcnQgZXh0cmFjdGluZyBwbGF0
Zm9ybSBzcGVjaWZpYyBiaXRzIG91dCBvZiBQbGF0Zm9ybUV2ZW50cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUwNjMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKwor
ICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmtleUV2ZW50KToKKyAgICAgICAgKiBwYWdlL21hYy9F
dmVudEhhbmRsZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OndoZWVs
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjprZXlFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmN1cnJlbnRQbGF0Zm9ybU1vdXNlRXZlbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtRXZlbnQ6OnNoaWZ0S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6
OmN0cmxLZXkpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6YWx0S2V5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6Om1ldGFLZXkpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1FdmVudDo6bW9kaWZpZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
RXZlbnQ6OlBsYXRmb3JtRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtR2VzdHVy
ZUV2ZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmtleUlkZW50
aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50OjptYWNDaGFy
Q29kZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmlzU3lzdGVt
S2V5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
S2V5RXZlbnRNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0
b3J5Lmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9y
eS5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpnbG9iYWxQb2ludCk6CisgICAgICAgIChX
ZWJDb3JlOjpnbG9iYWxQb2ludEZvckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnBvaW50Rm9y
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6bW91c2VCdXR0b25Gb3JFdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjptb3VzZUV2ZW50VHlwZUZvckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNs
aWNrQ291bnRGb3JFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjptb21lbnR1bVBoYXNlRm9yRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6cGhhc2VGb3JFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpnZXN0dXJlRXZlbnRUeXBlRm9yRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6dGV4dEZyb21F
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjp1bm1vZGlmaWVkVGV4dEZyb21FdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjprZXlJZGVudGlmaWVyRm9yS2V5RXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6aXNLZXlwYWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjp3aW5kb3dzS2V5Q29kZUZvcktl
eUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmlzS2V5VXBFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjptb2RpZmllcnNGb3JFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1vdXNl
RXZlbnRCdWlsZGVyOjpQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQbGF0Zm9ybU1vdXNlRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50QnVpbGRlcjo6UGxhdGZvcm1XaGVlbEV2
ZW50QnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3Jl
YXRlUGxhdGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9h
cmRFdmVudEJ1aWxkZXI6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudEJ1aWxkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1FdmVudEZhY3Rvcnk6OmNyZWF0ZVBsYXRmb3JtS2V5Ym9hcmRFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXI6OlBsYXRm
b3JtR2VzdHVyZUV2ZW50QnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50
RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1HZXN0dXJlRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9QbGF0Zm9ybU1vdXNlRXZlbnRNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dl
YkNvcmVTeXN0ZW1JbnRlcmZhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5
c3RlbUludGVyZmFjZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2hlZWxFdmVudE1hYy5t
bToKKwogMjAxMS0xMi0yMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgog
CiAgICAgICAgIFNpbXBsaWZ5IFNjcm9sbEFuaW1hdG9yTWFjIHNjcm9sbEJ5RGVsdGEgZnVuY3Rp
b25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNmM3YmYzMGI2ZjdlMTg4MGYwZWZhMWQyM2FlZTNlYzhk
Y2YwY2EzNi4uMDYyZDU3MzRmNzA0OGJkNmI2MGUxMDQxMWFkYjExYzgzOTU5N2Q3NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDExLTEyLTIxICBTYW0gV2VpbmlnICA8c2Ft
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RhcnQgZXh0cmFjdGluZyBwbGF0Zm9ybSBzcGVjaWZp
YyBiaXRzIG91dCBvZiBQbGF0Zm9ybUV2ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUwNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5t
bToKKyAgICAgICAgKEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAg
ICAgICgtW1dlYkhUTUxWaWV3IG1lbnVGb3JFdmVudDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZp
ZXcgYWNjZXB0c0ZpcnN0TW91c2U6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHNob3VsZERl
bGF5V2luZG93T3JkZXJpbmdGb3JFdmVudDpdKToKKyAgICAgICAgKGN1cnJlbnRLZXlib2FyZEV2
ZW50KToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgZmxhZ3NDaGFuZ2VkOl0pOgorICAgICAgICAq
IFdlYlZpZXcvV2ViUERGVmlldy5tbToKKyAgICAgICAgKC1bV2ViUERGVmlldyBQREZWaWV3V2ls
bENsaWNrT25MaW5rOndpdGhVUkw6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgor
CiAyMDExLTEyLTIxICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBzdXBwcmVzcyBpbmNyZW1lbnRhbCByZW5kZXJpbmcgYW5kIHVz
ZSBhcHBsaWNhdGlvbiBjaHJvbWUgbW9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDE0ZTkxNjZiYzZhMjJmZDlm
OWFlNjhhNTlhMDgzNGVhMzQ4NWUxOTAuLjdiM2JhYzliOGQ0ZmEwZDFjNzg0OWViNjU5ZTdkYzll
MTQ5Y2RhMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMS0xMi0yMSAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFN0YXJ0IGV4dHJhY3RpbmcgcGxhdGZv
cm0gc3BlY2lmaWMgYml0cyBvdXQgb2YgUGxhdGZvcm1FdmVudHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1MDYzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0MlBsYXRmb3JtTW91c2VFdmVudDo6V2ViS2l0
MlBsYXRmb3JtTW91c2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYktpdDJQbGF0Zm9ybVdo
ZWVsRXZlbnQ6OldlYktpdDJQbGF0Zm9ybVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJLaXQyUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpXZWJLaXQyUGxhdGZvcm1LZXlib2FyZEV2ZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0MlBsYXRmb3JtR2VzdHVyZUV2ZW50OjpXZWJLaXQy
UGxhdGZvcm1HZXN0dXJlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXQyUGxhdGZvcm1U
b3VjaEV2ZW50OjpXZWJLaXQyUGxhdGZvcm1Ub3VjaEV2ZW50KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tOgorICAgICAgICAoSW5pdFdlYkNvcmVTeXN0ZW1J
bnRlcmZhY2UpOgorCiAyMDExLTEyLTIyICBDYWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8g
IDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgW1F0XSBbV0syXSBVc2Ug
SGFzaE1hcCBpbnN0ZWFkIG9mIFZlY3RvciBpbiB0aGUgYnVpbHRpbiBidW5kbGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KaW5kZXggZjVkYzAwMGUxZTVkYmQ3Y2Q1ZTg4OGJkZGNlZTQwNWQ3OGVmNTkzZi4u
ZGUzZTc3ZjI3NWQ4ZjQxNjkwNmE5MzhjNDAzZDk0ZWJjYmRjMTRmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KQEAgLTE1Nyw2ICsxNTcsNyBAQCBfX1pON1dlYkNvcmUxMHRvRG9jdW1lbnRFTjNKU0M3
SlNWYWx1ZUUKIF9fWk43V2ViQ29yZTExQml0bWFwSW1hZ2VDMUVQN0NHSW1hZ2VQTlNfMTNJbWFn
ZU9ic2VydmVyRQogX19aTjdXZWJDb3JlMTFDYWNoZWRGcmFtZTIzY2FjaGVkRnJhbWVQbGF0Zm9y
bURhdGFFdgogX19aTjdXZWJDb3JlMTFDYWNoZWRGcmFtZTI2c2V0Q2FjaGVkRnJhbWVQbGF0Zm9y
bURhdGFFTjNXVEYxMFBhc3NPd25QdHJJTlNfMjNDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YUVFRQor
X19aTjdXZWJDb3JlMTFDYWNoZWRJbWFnZTVpbWFnZUV2CiBfX1pON1dlYkNvcmUxMUZpbGVDaG9v
c2VyMTBjaG9vc2VGaWxlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTFGaWxlQ2hvb3Nl
cjExY2hvb3NlRmlsZXNFUktOM1dURjZWZWN0b3JJTlMxXzZTdHJpbmdFTG0wRUVFCiBfX1pON1dl
YkNvcmUxMUZpbGVDaG9vc2VyRDFFdgpAQCAtMjkyLDggKzI5Myw4IEBAIF9fWk43V2ViQ29yZTEy
U2hhcmVkQnVmZmVyRDFFdgogX19aTjdXZWJDb3JlMTJTcGVsbENoZWNrZXI4ZGlkQ2hlY2tFaVJL
TjNXVEY2VmVjdG9ySU5TXzE4VGV4dENoZWNraW5nUmVzdWx0RUxtMEVFRQogX19aTjdXZWJDb3Jl
MTJUZXh0RW5jb2RpbmdDMUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTEyVGV4dEl0ZXJh
dG9yMTFyYW5nZUxlbmd0aEVQS05TXzVSYW5nZUViCi1fX1pON1dlYkNvcmUxMlRleHRJdGVyYXRv
cjI5Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2VFUE5TXzdFbGVtZW50RVBLTlNfNVJhbmdl
RVJtUzZfCiBfX1pON1dlYkNvcmUxMlRleHRJdGVyYXRvcjI2cmFuZ2VGcm9tTG9jYXRpb25BbmRM
ZW5ndGhFUE5TXzdFbGVtZW50RWlpYgorX19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3IyOWdldExv
Y2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlRVBOU183RWxlbWVudEVQS05TXzVSYW5nZUVSbVM2Xwog
X19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3I3YWR2YW5jZUV2CiBfX1pON1dlYkNvcmUxMlRleHRJ
dGVyYXRvcjhzdWJyYW5nZUVQTlNfNVJhbmdlRWlpCiBfX1pON1dlYkNvcmUxMlRleHRJdGVyYXRv
ckMxRVBLTlNfNVJhbmdlRU5TXzIwVGV4dEl0ZXJhdG9yQmVoYXZpb3JFCkBAIC0zNjUsOCArMzY2
LDggQEAgX19aTjdXZWJDb3JlMTRTY2hlbWVSZWdpc3RyeTI1cmVnaXN0ZXJVUkxTY2hlbWVBc1Nl
Y3VyZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE0U2NoZW1lUmVnaXN0cnkzMnJlZ2lz
dGVyVVJMU2NoZW1lQXNFbXB0eURvY3VtZW50RVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3Jl
MTRTY2hlbWVSZWdpc3RyeTM0c2hvdWxkTG9hZFVSTFNjaGVtZUFzRW1wdHlEb2N1bWVudEVSS04z
V1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE0U2NoZW1lUmVnaXN0cnk0MHNldERvbWFpblJlbGF4
YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWVFYlJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJDb3Jl
MTRTY2hlbWVSZWdpc3RyeTYycmVnaXN0ZXJVUkxTY2hlbWVBc0FsbG93aW5nTG9jYWxTdG9yYWdl
QWNjZXNzSW5Qcml2YXRlQnJvd3NpbmdFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxNFNj
aGVtZVJlZ2lzdHJ5NThyZWdpc3RlclVSTFNjaGVtZUFzQWxsb3dpbmdEYXRhYmFzZUFjY2Vzc0lu
UHJpdmF0ZUJyb3dzaW5nRVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMTRTY2hlbWVSZWdp
c3RyeTYycmVnaXN0ZXJVUkxTY2hlbWVBc0FsbG93aW5nTG9jYWxTdG9yYWdlQWNjZXNzSW5Qcml2
YXRlQnJvd3NpbmdFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxNFNjcm9sbGFibGVBcmVh
MTVjb250ZW50c1Jlc2l6ZWRFdgogX19aTjdXZWJDb3JlMTRTY3JvbGxhYmxlQXJlYTE2aGFuZGxl
V2hlZWxFdmVudEVSS05TXzE4UGxhdGZvcm1XaGVlbEV2ZW50RQogX19aTjdXZWJDb3JlMTRTY3Jv
bGxhYmxlQXJlYTE3d2lsbEVuZExpdmVSZXNpemVFdgpAQCAtMzkzLDE1ICszOTQsMTUgQEAgX19a
TjdXZWJDb3JlMTRTZWN1cml0eVBvbGljeTIyZ2VuZXJhdGVSZWZlcnJlckhlYWRlckVOUzBfMTRS
ZWZlcnJlclBvbGljeUVSS05TXzQKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlQb2xpY3kyN3Jlc2V0
T3JpZ2luQWNjZXNzV2hpdGVsaXN0c0V2CiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5UG9saWN5Mjlh
ZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeUVSS05TXzE0U2VjdXJpdHlPcmlnaW5FUktOM1dU
RjZTdHJpbmdFUzdfYgogX19aTjdXZWJDb3JlMTRTZWN1cml0eVBvbGljeTMycmVtb3ZlT3JpZ2lu
QWNjZXNzV2hpdGVsaXN0RW50cnlFUktOU18xNFNlY3VyaXR5T3JpZ2luRVJLTjNXVEY2U3RyaW5n
RVM3X2IKLV9fWk43V2ViQ29yZTE0U3RvcmFnZVRyYWNrZXI3b3JpZ2luc0VSTjNXVEY2VmVjdG9y
SU5TMV82UmVmUHRySU5TXzE0U2VjdXJpdHlPcmlnaW5FRUVMbTBFRUUKLV9fWk43V2ViQ29yZTE0
U3RvcmFnZVRyYWNrZXI3dHJhY2tlckV2Ci1fX1pON1dlYkNvcmUxNFN0b3JhZ2VUcmFja2VyOXNl
dENsaWVudEVQTlNfMjBTdG9yYWdlVHJhY2tlckNsaWVudEUKIF9fWk43V2ViQ29yZTE0U3RvcmFn
ZVRyYWNrZXIxMmRlbGV0ZU9yaWdpbkVQTlNfMTRTZWN1cml0eU9yaWdpbkUKIF9fWk43V2ViQ29y
ZTE0U3RvcmFnZVRyYWNrZXIxNmRlbGV0ZUFsbE9yaWdpbnNFdgogX19aTjdXZWJDb3JlMTRTdG9y
YWdlVHJhY2tlcjE2c3luY0xvY2FsU3RvcmFnZUV2CiBfX1pON1dlYkNvcmUxNFN0b3JhZ2VUcmFj
a2VyMTdpbml0aWFsaXplVHJhY2tlckVSS04zV1RGNlN0cmluZ0VQTlNfMjBTdG9yYWdlVHJhY2tl
ckNsaWVudEUKIF9fWk43V2ViQ29yZTE0U3RvcmFnZVRyYWNrZXIxOGRpc2tVc2FnZUZvck9yaWdp
bkVQTlNfMTRTZWN1cml0eU9yaWdpbkUKIF9fWk43V2ViQ29yZTE0U3RvcmFnZVRyYWNrZXIzMnN5
bmNGaWxlU3lzdGVtQW5kVHJhY2tlckRhdGFiYXNlRXYKK19fWk43V2ViQ29yZTE0U3RvcmFnZVRy
YWNrZXI3b3JpZ2luc0VSTjNXVEY2VmVjdG9ySU5TMV82UmVmUHRySU5TXzE0U2VjdXJpdHlPcmln
aW5FRUVMbTBFRUUKK19fWk43V2ViQ29yZTE0U3RvcmFnZVRyYWNrZXI3dHJhY2tlckV2CitfX1pO
N1dlYkNvcmUxNFN0b3JhZ2VUcmFja2VyOXNldENsaWVudEVQTlNfMjBTdG9yYWdlVHJhY2tlckNs
aWVudEUKIF9fWk43V2ViQ29yZTE0ZW5kT2ZQYXJhZ3JhcGhFUktOU18xNVZpc2libGVQb3NpdGlv
bkVOU18yN0VkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZUUKIF9fWk43V2ViQ29yZTE1QWZmaW5l
VHJhbnNmb3JtNWZsaXBZRXYKIF9fWk43V2ViQ29yZTE1QWZmaW5lVHJhbnNmb3JtNXNjYWxlRWQK
QEAgLTQzMyw4ICs0MzQsOCBAQCBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDExY2xlYXJT
aGFkb3dFdgogX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQxMnNldEZpbGxDb2xvckVSS05T
XzVDb2xvckVOU18xMENvbG9yU3BhY2VFCiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDE1
c2V0RmlsbEdyYWRpZW50RU4zV1RGMTBQYXNzUmVmUHRySU5TXzhHcmFkaWVudEVFRQogX19aTjdX
ZWJDb3JlMTVHcmFwaGljc0NvbnRleHQxOHNldFNob3VsZEFudGlhbGlhc0ViCi1fX1pON1dlYkNv
cmUxNUdyYXBoaWNzQ29udGV4dDIwc2V0U2hvdWxkU21vb3RoRm9udHNFYgogX19aTjdXZWJDb3Jl
MTVHcmFwaGljc0NvbnRleHQyMGVuZFRyYW5zcGFyZW5jeUxheWVyRXYKK19fWk43V2ViQ29yZTE1
R3JhcGhpY3NDb250ZXh0MjBzZXRTaG91bGRTbW9vdGhGb250c0ViCiBfX1pON1dlYkNvcmUxNUdy
YXBoaWNzQ29udGV4dDIxc2V0Q29tcG9zaXRlT3BlcmF0aW9uRU5TXzE3Q29tcG9zaXRlT3BlcmF0
b3JFCiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDIyYXBwbHlEZXZpY2VTY2FsZUZhY3Rv
ckVmCiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDIyYmVnaW5UcmFuc3BhcmVuY3lMYXll
ckVmCkBAIC01MzksNyArNTQwLDYgQEAgX19aTjdXZWJDb3JlMTdSZWd1bGFyRXhwcmVzc2lvbkMx
RVJLTjNXVEY2U3RyaW5nRU5TMV8xOVRleHRDYXNlU2Vuc2l0aXZpdHlFCiBfX1pON1dlYkNvcmUx
N1JlZ3VsYXJFeHByZXNzaW9uRDFFdgogX19aTjdXZWJDb3JlMTdjYWNoZURPTVN0cnVjdHVyZUVQ
TlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTjNKU0M5U3RydWN0dXJlRVBLTlMyXzlDbGFzc0luZm9F
CiBfX1pON1dlYkNvcmUxN29wZW5UZW1wb3JhcnlGaWxlRVJLTjNXVEY2U3RyaW5nRVJpCi1fX1pO
N1dlYkNvcmUxOFBsYXRmb3JtTW91c2VFdmVudEMxRVA3TlNFdmVudFA2TlNWaWV3CiBfX1pON1dl
YkNvcmUxOFBsYXRmb3JtU3RyYXRlZ2llczI2Y3JlYXRlTG9jYWxpemF0aW9uU3RyYXRlZ3lFdgog
X19aTjdXZWJDb3JlMThTZWFyY2hQb3B1cE1lbnVNYWNDMUVQTlNfMTVQb3B1cE1lbnVDbGllbnRF
CiBfX1pON1dlYkNvcmUxOGlzU3RhcnRPZlBhcmFncmFwaEVSS05TXzE1VmlzaWJsZVBvc2l0aW9u
RU5TXzI3RWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlRQpAQCAtNTg4LDYgKzU4OCw4IEBAIF9f
Wk43V2ViQ29yZTIwRGlzcGxheVNsZWVwRGlzYWJsZXJDMUVQS2MKIF9fWk43V2ViQ29yZTIwRGlz
cGxheVNsZWVwRGlzYWJsZXJEMUV2CiBfX1pON1dlYkNvcmUyME5vZGVSZW5kZXJpbmdDb250ZXh0
QzFFUE5TXzROb2RlRQogX19aTjdXZWJDb3JlMjBOb2RlUmVuZGVyaW5nQ29udGV4dEQxRXYKK19f
Wk43V2ViQ29yZTIwUGxhdGZvcm1FdmVudEZhY3RvcnkyNGNyZWF0ZVBsYXRmb3JtTW91c2VFdmVu
dEVQN05TRXZlbnRQNk5TVmlldworX19aTjdXZWJDb3JlMjBQbGF0Zm9ybUV2ZW50RmFjdG9yeTI3
Y3JlYXRlUGxhdGZvcm1LZXlib2FyZEV2ZW50RVA3TlNFdmVudAogX19aTjdXZWJDb3JlMjBSZW5k
ZXJFbWJlZGRlZE9iamVjdDMwc2V0U2hvd3NDcmFzaGVkUGx1Z2luSW5kaWNhdG9yRXYKIF9fWk43
V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UxMXNldE1pbWVUeXBlRVJLTjNXVEY2U3RyaW5n
RQogX19aTjdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTE3c2V0SFRUUFN0YXR1c0NvZGVF
aQpAQCAtNjA1LDcgKzYwNyw2IEBAIF9fWk43V2ViQ29yZTIwbWFrZVJHQkEzMkZyb21GbG9hdHNF
ZmZmZgogX19aTjdXZWJDb3JlMjBwcm90b2NvbElzSmF2YVNjcmlwdEVSS04zV1RGNlN0cmluZ0UK
IF9fWk43V2ViQ29yZTIxQmFja0ZvcndhcmRDb250cm9sbGVyMTFpdGVtQXRJbmRleEVpCiBfX1pO
N1dlYkNvcmUyMU1lbW9yeVByZXNzdXJlSGFuZGxlcjdpbnN0YWxsRXYKLV9fWk43V2ViQ29yZTIx
UGxhdGZvcm1LZXlib2FyZEV2ZW50QzFFUDdOU0V2ZW50CiBfX1pON1dlYkNvcmUyMVBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDI0ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50RU5TXzEzUGxhdGZvcm1FdmVu
dDRUeXBlRWIKIF9fWk43V2ViQ29yZTIxUmVzb3VyY2VMb2FkU2NoZWR1bGVyMjBzZXJ2ZVBlbmRp
bmdSZXF1ZXN0c0VOU18yMFJlc291cmNlTG9hZFByaW9yaXR5RQogX19aTjdXZWJDb3JlMjFSZXNv
dXJjZUxvYWRTY2hlZHVsZXIyNHNjaGVkdWxlUGx1Z2luU3RyZWFtTG9hZEVQTlNfNUZyYW1lRVBO
U18zMk5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50RVJLTlNfMTVSZXNvdXJjZVJlcXVl
c3RFCkBAIC02NjEsOCArNjYyLDYgQEAgX19aTjdXZWJDb3JlMjVQbHVnaW5NYWluVGhyZWFkU2No
ZWR1bGVyMTZ1bnJlZ2lzdGVyUGx1Z2luRVA0X05QUAogX19aTjdXZWJDb3JlMjVQbHVnaW5NYWlu
VGhyZWFkU2NoZWR1bGVyOXNjaGVkdWxlckV2CiBfX1pON1dlYkNvcmUyNWFkZExhbmd1YWdlQ2hh
bmdlT2JzZXJ2ZXJFUHZQRnZTMF9FCiBfX1pON1dlYkNvcmUyNWNvbXB1dGVWaWV3cG9ydEF0dHJp
YnV0ZXNFTlNfMTdWaWV3cG9ydEFyZ3VtZW50c0VpaWlpTlNfN0ludFNpemVFCi1fX1pON1dlYkNv
cmU1MHJlc3RyaWN0U2NhbGVGYWN0b3JUb0luaXRpYWxTY2FsZUlmTm90VXNlclNjYWxhYmxlRVJO
U18xOFZpZXdwb3J0QXR0cmlidXRlc0UKLV9fWk43V2ViQ29yZTQwcmVzdHJpY3RNaW5pbXVtU2Nh
bGVGYWN0b3JUb1ZpZXdwb3J0U2l6ZUVSTlNfMThWaWV3cG9ydEF0dHJpYnV0ZXNFTlNfN0ludFNp
emVFCiBfX1pON1dlYkNvcmUyNWNvbnRleHRNZW51SXRlbVRhZ091dGxpbmVFdgogX19aTjdXZWJD
b3JlMjZDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbkMxRXYKIF9fWk43V2ViQ29yZTI2VXNlclR5
cGluZ0dlc3R1cmVJbmRpY2F0b3IyN3Byb2Nlc3NpbmdVc2VyVHlwaW5nR2VzdHVyZUV2CkBAIC03
MjAsNiArNzE5LDcgQEAgX19aTjdXZWJDb3JlMzdjb250ZXh0TWVudUl0ZW1UYWdUcmFuc2Zvcm1h
dGlvbnNNZW51RXYKIF9fWk43V2ViQ29yZTM4Y29udGV4dE1lbnVJdGVtVGFnV3JpdGluZ0RpcmVj
dGlvbk1lbnVFdgogX19aTjdXZWJDb3JlM21hY0VSS05TXzEwQ3JlZGVudGlhbEUKIF9fWk43V2Vi
Q29yZTNtYWNFUktOU18yM0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRQorX19aTjdXZWJDb3JlNDBy
ZXN0cmljdE1pbmltdW1TY2FsZUZhY3RvclRvVmlld3BvcnRTaXplRVJOU18xOFZpZXdwb3J0QXR0
cmlidXRlc0VOU183SW50U2l6ZUUKIF9fWk43V2ViQ29yZTQyY29udGV4dE1lbnVJdGVtVGFnQ2hl
Y2tHcmFtbWFyV2l0aFNwZWxsaW5nRXYKIF9fWk43V2ViQ29yZTQyY29udGV4dE1lbnVJdGVtVGFn
Q2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nRXYKIF9fWk43V2ViQ29yZTQ2Y29udGV4dE1lbnVJdGVt
VGFnQ29ycmVjdFNwZWxsaW5nQXV0b21hdGljYWxseUV2CkBAIC03ODYsNiArNzg2LDcgQEAgX19a
TjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQ
TlNfMTBDbGllbnRSZWN0RQogX19aTjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNf
MTdKU0RPTUdsb2JhbE9iamVjdEVQTlNfMTlDU1NTdHlsZURlY2xhcmF0aW9uRQogX19aTjdXZWJD
b3JlNHRvSlNFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTlNfNVJh
bmdlRQogX19aTjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2Jh
bE9iamVjdEVQTlNfOE5vZGVMaXN0RQorX19aTjdXZWJDb3JlNTByZXN0cmljdFNjYWxlRmFjdG9y
VG9Jbml0aWFsU2NhbGVJZk5vdFVzZXJTY2FsYWJsZUVSTlNfMThWaWV3cG9ydEF0dHJpYnV0ZXNF
CiBfX1pON1dlYkNvcmU1Q29sb3IxMXRyYW5zcGFyZW50RQogX19aTjdXZWJDb3JlNUNvbG9yNXdo
aXRlRQogX19aTjdXZWJDb3JlNUZyYW1lMTBjcmVhdGVWaWV3RVJLTlNfN0ludFNpemVFUktOU181
Q29sb3JFYlMzX2JOU18xM1Njcm9sbGJhck1vZGVFYlM3X2IKQEAgLTgzNyw5ICs4MzgsOSBAQCBf
X1pON1dlYkNvcmU2RWRpdG9yMjFhcHBseVN0eWxlVG9TZWxlY3Rpb25FUE5TXzE5Q1NTU3R5bGVE
ZWNsYXJhdGlvbkVOU18xMEVkaXRBYwogX19aTjdXZWJDb3JlNkVkaXRvcjIxaXNTZWxlY3Rpb25N
aXNzcGVsbGVkRXYKIF9fWk43V2ViQ29yZTZFZGl0b3IyM3NldEJhc2VXcml0aW5nRGlyZWN0aW9u
RTE2V3JpdGluZ0RpcmVjdGlvbgogX19aTjdXZWJDb3JlNkVkaXRvcjI0YWR2YW5jZVRvTmV4dE1p
c3NwZWxsaW5nRWIKLV9fWk43V2ViQ29yZTZFZGl0b3IyNHJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4
dEVSS04zV1RGNlN0cmluZ0ViYgogX19aTjdXZWJDb3JlNkVkaXRvcjI0Y29tcHV0ZUFuZFNldFR5
cGluZ1N0eWxlRVBOU18xOUNTU1N0eWxlRGVjbGFyYXRpb25FTlNfMTBFZGl0QWN0aW9uRQogX19a
TjdXZWJDb3JlNkVkaXRvcjI0aXNTZWxlY3Rpb25VbmdyYW1tYXRpY2FsRXYKK19fWk43V2ViQ29y
ZTZFZGl0b3IyNHJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dEVSS04zV1RGNlN0cmluZ0ViYgogX19a
TjdXZWJDb3JlNkVkaXRvcjI2ZGVjcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxFdgogX19aTjdXZWJD
b3JlNkVkaXRvcjI2aW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxFdgogX19aTjdXZWJDb3JlNkVk
aXRvcjI2d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmRFUktOM1dURjZTdHJpbmdFUktOUzFfNlZl
Y3RvcklTMl9MbTBFRUUKQEAgLTkyNyw2ICs5MjgsNyBAQCBfX1pON1dlYkNvcmU4SW50UG9pbnRD
MUVSSzhfTlNQb2ludAogX19aTjdXZWJDb3JlOFBvc2l0aW9uQzFFTjNXVEYxMFBhc3NSZWZQdHJJ
TlNfNE5vZGVFRUVpTlMwXzEwQW5jaG9yVHlwZUUKIF9fWk43V2ViQ29yZThTZXR0aW5nczE0c2V0
SmF2YUVuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMTVzZXRXZWJHTEVuYWJsZWRFYgor
X19aTjdXZWJDb3JlOFNldHRpbmdzMTZzZXRTY3JpcHRFbmFibGVkRWIKIF9fWk43V2ViQ29yZThT
ZXR0aW5nczE2c2V0VXNlc1BhZ2VDYWNoZUViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxN3NldFBs
dWdpbnNFbmFibGVkRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczE4c2V0RE9NUGFzdGVBbGxvd2Vk
RWIKQEAgLTkzOSw3ICs5NDEsNiBAQCBfX1pON1dlYkNvcmU4U2V0dGluZ3MxOW1pbkRPTVRpbWVy
SW50ZXJ2YWxFdgogX19aTjdXZWJDb3JlOFNldHRpbmdzMTlzZXRTaG93RGVidWdCb3JkZXJzRWIK
IF9fWk43V2ViQ29yZThTZXR0aW5nczIwc2V0Q3Vyc2l2ZUZvbnRGYW1pbHlFUktOM1dURjEyQXRv
bWljU3RyaW5nRTExVVNjcmlwdENvZGUKIF9fWk43V2ViQ29yZThTZXR0aW5nczIwc2V0RmFudGFz
eUZvbnRGYW1pbHlFUktOM1dURjEyQXRvbWljU3RyaW5nRTExVVNjcmlwdENvZGUKLV9fWk43V2Vi
Q29yZThTZXR0aW5nczE2c2V0U2NyaXB0RW5hYmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3My
MHNldFhTU0F1ZGl0b3JFbmFibGVkRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczIxc2V0U2hvd1Jl
cGFpbnRDb3VudGVyRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczIxc2V0U3RhbmRhcmRGb250RmFt
aWx5RVJLTjNXVEYxMkF0b21pY1N0cmluZ0UxMVVTY3JpcHRDb2RlCkBAIC0xMDI2LDcgKzEwMjcs
NiBAQCBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MTdzZXRTY3JvbGxQb3NpdGlvbkVSS05TXzhJbnRQ
b2ludEUKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcxN3NldFRyYWNrc1JlcGFpbnRzRWIKIF9fWk43
V2ViQ29yZTlGcmFtZVZpZXcxOHVwZGF0ZUNvbnRyb2xUaW50c0V2CiBfX1pON1dlYkNvcmU5RnJh
bWVWaWV3MTlzY3JvbGxFbGVtZW50VG9SZWN0RVBOU183RWxlbWVudEVSS05TXzdJbnRSZWN0RQot
X19aTjdXZWJDb3JlOUZyYW1lVmlldzQzc2V0U2hvdWxkTGF5b3V0Rml4ZWRFbGVtZW50c1JlbGF0
aXZlVG9GcmFtZUViCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjBlbnRlckNvbXBvc2l0aW5nTW9k
ZUV2CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjFmbHVzaERlZmVycmVkUmVwYWludHNFdgogX19a
TjdXZWJDb3JlOUZyYW1lVmlldzIyc2V0QmFzZUJhY2tncm91bmRDb2xvckVSS05TXzVDb2xvckUK
QEAgLTEwMzcsNiArMTAzNyw3IEBAIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyOXNldFNob3VsZFVw
ZGF0ZVdoaWxlT2Zmc2NyZWVuRWIKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXczN3VwZGF0ZUxheW91
dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmVFdgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzM4c2Ny
b2xsUG9zaXRpb25DaGFuZ2VkVmlhUGxhdGZvcm1XaWRnZXRFdgogX19aTjdXZWJDb3JlOUZyYW1l
VmlldzM4c3luY0NvbXBvc2l0aW5nU3RhdGVJbmNsdWRpbmdTdWJmcmFtZXNFdgorX19aTjdXZWJD
b3JlOUZyYW1lVmlldzQzc2V0U2hvdWxkTGF5b3V0Rml4ZWRFbGVtZW50c1JlbGF0aXZlVG9GcmFt
ZUViCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3NmNyZWF0ZUVQTlNfNUZyYW1lRQogX19aTjdXZWJD
b3JlOUZyYW1lVmlldzZjcmVhdGVFUE5TXzVGcmFtZUVSS05TXzdJbnRTaXplRQogX19aTjdXZWJD
b3JlOUhUTUxOYW1lczEwbGlzdGluZ1RhZ0UKQEAgLTExMzMsMTMgKzExMzQsMTIgQEAgX19aTks3
V2ViQ29yZTEwU2Nyb2xsVmlldzE0c2Nyb2xsYmFyTW9kZXNFUk5TXzEzU2Nyb2xsYmFyTW9kZUVT
Ml8KIF9fWk5LN1dlYkNvcmUxMFNjcm9sbFZpZXcxNHVzZUZpeGVkTGF5b3V0RXYKIF9fWk5LN1dl
YkNvcmUxMFNjcm9sbFZpZXcxNWZpeGVkTGF5b3V0U2l6ZUV2CiBfX1pOSzdXZWJDb3JlMTBTY3Jv
bGxWaWV3MTZjb250ZW50c1RvV2luZG93RVJLTlNfN0ludFJlY3RFCi1fX1pOSzdXZWJDb3JlMTBT
Y3JvbGxWaWV3MTZ3aW5kb3dUb0NvbnRlbnRzRVJLTlNfN0ludFJlY3RFCiBfX1pOSzdXZWJDb3Jl
MTBTY3JvbGxWaWV3MTZjb250ZW50c1RvV2luZG93RVJLTlNfOEludFBvaW50RQorX19aTks3V2Vi
Q29yZTEwU2Nyb2xsVmlldzE2d2luZG93VG9Db250ZW50c0VSS05TXzdJbnRSZWN0RQogX19aTks3
V2ViQ29yZTEwU2Nyb2xsVmlldzE2d2luZG93VG9Db250ZW50c0VSS05TXzhJbnRQb2ludEUKLV9f
Wk5LN1dlYkNvcmUxMFNjcm9sbFZpZXcxOHZpc2libGVDb250ZW50UmVjdEViCiBfX1pOSzdXZWJD
b3JlMTBTY3JvbGxWaWV3MThjb250ZW50c1RvUm9vdFZpZXdFUktOU183SW50UmVjdEUKIF9fWk5L
N1dlYkNvcmUxMFNjcm9sbFZpZXcxOGNvbnRlbnRzVG9Sb290Vmlld0VSS05TXzhJbnRQb2ludEUK
LV9fWk43V2ViQ29yZTExQ2FjaGVkSW1hZ2U1aW1hZ2VFdgorX19aTks3V2ViQ29yZTEwU2Nyb2xs
VmlldzE4dmlzaWJsZUNvbnRlbnRSZWN0RWIKIF9fWk5LN1dlYkNvcmUxMUZyYW1lTG9hZGVyMTBp
c0NvbXBsZXRlRXYKIF9fWk5LN1dlYkNvcmUxMUZyYW1lTG9hZGVyMTRjYW5jZWxsZWRFcnJvckVS
S05TXzE1UmVzb3VyY2VSZXF1ZXN0RQogX19aTks3V2ViQ29yZTExRnJhbWVMb2FkZXIxNGZyYW1l
SGFzTG9hZGVkRXYKQEAgLTExNzQsMTEgKzExNzQsMTEgQEAgX19aTks3V2ViQ29yZTExU2NyaXB0
VmFsdWU5Z2V0U3RyaW5nRVBOM0pTQzlFeGVjU3RhdGVFUk4zV1RGNlN0cmluZ0UKIF9fWk5LN1dl
YkNvcmUxMkljb25EYXRhYmFzZTEyZGF0YWJhc2VQYXRoRXYKIF9fWk5LN1dlYkNvcmUxMkljb25E
YXRhYmFzZTI0c2hvdWxkU3RvcFRocmVhZEFjdGl2aXR5RXYKIF9fWk5LN1dlYkNvcmUxMkljb25E
YXRhYmFzZTlpc0VuYWJsZWRFdgotX19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0MjNhYnNvbHV0
ZUJvdW5kaW5nQm94UmVjdEViCitfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QxM3N0eWxlSW5S
ZWdpb25FdgogX19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTRlbmNsb3NpbmdMYXllckV2CiBf
X1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3QxNWxvY2FsVG9BYnNvbHV0ZUVSS05TXzEwRmxvYXRQ
b2ludEViYgorX19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0MjNhYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdEViCiBfX1pOSzdXZWJDb3JlMTJSZW5kZXJPYmplY3Q3Y2hpbGRBdEVqCi1fX1pOSzdXZWJD
b3JlMTJSZW5kZXJPYmplY3QxM3N0eWxlSW5SZWdpb25FdgogX19aTks3V2ViQ29yZTEyUmVuZGVy
V2lkZ2V0MTR3aW5kb3dDbGlwUmVjdEV2CiBfX1pOSzdXZWJDb3JlMTJTaGFyZWRCdWZmZXIxMWdl
dFNvbWVEYXRhRVJQS2NqCiBfX1pOSzdXZWJDb3JlMTJTaGFyZWRCdWZmZXI0ZGF0YUV2CkBAIC0x
NDkwLDYgKzE0OTAsNyBAQCBfd2tHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5CiBfd2tHZXRIVFRQ
UGlwZWxpbmluZ1ByaW9yaXR5CiBfd2tHZXRIeXBoZW5hdGlvbkxvY2F0aW9uQmVmb3JlSW5kZXgK
IF93a0dldE1JTUVUeXBlRm9yRXh0ZW5zaW9uCitfd2tHZXROU0V2ZW50S2V5Q2hhcgogX3drR2V0
TlNVUkxSZXNwb25zZUNhbGN1bGF0ZWRFeHBpcmF0aW9uCiBfd2tHZXROU1VSTFJlc3BvbnNlTGFz
dE1vZGlmaWVkRGF0ZQogX3drR2V0TlNVUkxSZXNwb25zZU11c3RSZXZhbGlkYXRlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTgw
YWEzMzA3MTgxNDlhMzdjM2U5MDkyNjVkNmE5YWM3MmY1NjU4Ny4uZDIxY2JhY2RmMWYyMzFlNTI1
NGQwNzY1ZjY3YjUyYjQzY2E0MmVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTI1MSw2ICs1MjUxLDggQEAKIAkJQkNBOEM4
MUYxMUUzRDM2OTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0E4QzgxRDExRTNEMzY5MDA4
MTJGQjcgLyogQmFja0ZvcndhcmRDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJQkNBOENBNUYxMUU0
RTZEMTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkTGlzdEltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBOENBNUQxMUU0RTZEMTAwODEyRkI3IC8q
IEJhY2tGb3J3YXJkTGlzdEltcGwuY3BwICovOyB9OwogCQlCQ0E4Q0E2MDExRTRFNkQxMDA4MTJG
QjcgLyogQmFja0ZvcndhcmRMaXN0SW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkNBOENBNUUxMUU0RTZEMTAwODEyRkI3IC8qIEJhY2tGb3J3YXJk
TGlzdEltcGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlCQ0FBNDg2RjE0QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZvcm1FdmVudEZhY3RvcnkubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0FBNDg2RDE0
QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZvcm1FdmVudEZhY3RvcnkubW0gKi87IH07CisJCUJDQUE0
ODcwMTRBMDUyNTMwMDg4RkFDNCAvKiBQbGF0Zm9ybUV2ZW50RmFjdG9yeS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBQTQ4NkUxNEEwNTI1MzAwODhG
QUM0IC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNBQTkwQzMwQTdFQkE2MDAwOEIxMjI5IC8qIFNjcm9s
bGJhci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
Q0FBOTBDMjBBN0VCQTYwMDA4QjEyMjkgLyogU2Nyb2xsYmFyLmNwcCAqLzsgfTsKIAkJQkNBQjQx
ODExM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0FCNDE3RjEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9u
LmNwcCAqLzsgfTsKIAkJQkNBQjQxODIxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBQjQxODAxM0UzNTZF
ODAwRDhBQUYzIC8qIFJlZ2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0xMjYxOCw2ICsxMjYyMCw4IEBACiAJCUJDQThDODFEMTFFM0QzNjkw
MDgxMkZCNyAvKiBCYWNrRm9yd2FyZENvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQmFja0ZvcndhcmRDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQkNBOENBNUQxMUU0RTZEMTAwODEyRkI3IC8qIEJhY2tGb3J3YXJk
TGlzdEltcGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmFja0Zv
cndhcmRMaXN0SW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQThDQTVF
MTFFNEU2RDEwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZExpc3RJbXBsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEJhY2tGb3J3YXJkTGlzdEltcGwuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQkNBQTQ4NkQxNEEwNTI1MzAwODhGQUM0IC8qIFBsYXRmb3JtRXZlbnRG
YWN0b3J5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGxhdGZv
cm1FdmVudEZhY3RvcnkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDQUE0ODZF
MTRBMDUyNTMwMDg4RkFDNCAvKiBQbGF0Zm9ybUV2ZW50RmFjdG9yeS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUV2ZW50RmFjdG9yeS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCQ0FBOTBDMjBBN0VCQTYwMDA4QjEyMjkgLyogU2Nyb2xsYmFyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxiYXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0FCNDE3RjEzRTM1NkU4MDBEOEFBRjMgLyog
UmVnaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZ2lvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQUI0MTgwMTNFMzU2RTgwMEQ4QUFG
MyAvKiBSZWdpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnaW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTY1NSw2ICsxNTY1OSw4IEBACiAJCQkJ
OTM4MEY0NzcwOUExMUFDQzAwMUZEQjM0IC8qIFdpZGdldE1hYy5tbSAqLywKIAkJCQlDREVBNzYy
RTE0NjA4NERFMDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja0NBLmNwcCAqLywKIAkJCQlDREVBNzYy
RjE0NjA4NEVFMDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja0NBLmggKi8sCisJCQkJQkNBQTQ4NkQx
NEEwNTI1MzAwODhGQUM0IC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5Lm1tICovLAorCQkJCUJDQUE0
ODZFMTRBMDUyNTMwMDg4RkFDNCAvKiBQbGF0Zm9ybUV2ZW50RmFjdG9yeS5oICovLAogCQkJKTsK
IAkJCXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjQ5NTMsNyAr
MjQ5NTksNyBAQAogCQkJCTFBMkY5RDdBMTQ5NjhDNzQwMDY1QUM2MyAvKiBTY3JvbGxpbmdDb29y
ZGluYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBNzE2MEIxNDlCQzREQjAwMTZFQzE5IC8q
IFRpbGVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzM3Q0RFQkQxNDlFRjIwMzAwNDIwOTBE
IC8qIENvbG9yQ2hvb3NlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUFDNjkyNkExNEEx
MjUzMjAwQkQ4NUYxIC8qIFNjcm9sbGFibGVBcmVhQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQlCQ0FBNDg3MDE0QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZvcm1FdmVudEZhY3RvcnkuaCBpbiBI
ZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpAQCAtMjc4NTgsNiArMjc4NjQsNyBAQAogCQkJCUE4MEE5NDIzMTQ5RjIyNUUw
MDk4OTI5MSAvKiBKU0RPTVdpbmRvd1dlYkF1ZGlvQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE4MEE5NDI1MTQ5RjIyNzEwMDk4OTI5MSAvKiBKU0RPTVdpbmRvd1dlYlNvY2tldEN1c3Rv
bS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MkY1MkUxMTE0QTAxMzRGMDBBQ0MzOTcgLyogTlNT
Y3JvbGxlckltcERldGFpbHMubW0gaW4gU291cmNlcyAqLywKKwkJCQlCQ0FBNDg2RjE0QTA1MjUz
MDA4OEZBQzQgLyogUGxhdGZvcm1FdmVudEZhY3RvcnkubW0gaW4gU291cmNlcyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQppbmRleCA4MmFhNzllMDM0Mzc5
ZTEyOGNmNGI2NzhkYzc1MmRkM2IzYWMxYmNlLi41ZjkxMTMyMTg4NDM0YTI2NzRlMmQzNGU4NWY3
OGRmNTI0ZTMwOGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhh
bmRsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFj
Lm1tCkBAIC00MSw4ICs0MSw3IEBACiAjaW5jbHVkZSAiTW91c2VFdmVudFdpdGhIaXRUZXN0UmVz
dWx0cy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgot
I2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtV2hl
ZWxFdmVudC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtRXZlbnRGYWN0b3J5LmgiCiAjaW5jbHVkZSAi
UmVuZGVyV2lkZ2V0LmgiCiAjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAj
aW5jbHVkZSAiU2Nyb2xsYmFyLmgiCkBAIC0xMDQsOSArMTAzLDcgQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OndoZWVsRXZlbnQoTlNFdmVudCAqZXZlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIEN1cnJlbnRFdmVudFNjb3BlIHNjb3BlKGV2ZW50KTsKLQotICAgIFBsYXRmb3JtV2hlZWxF
dmVudCB3aGVlbEV2ZW50KGV2ZW50LCBwYWdlLT5jaHJvbWUoKS0+cGxhdGZvcm1QYWdlQ2xpZW50
KCkpOwotICAgIHJldHVybiBoYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQpOworICAgIHJldHVy
biBoYW5kbGVXaGVlbEV2ZW50KFBsYXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQbGF0Zm9ybVdo
ZWVsRXZlbnQoZXZlbnQsIHBhZ2UtPmNocm9tZSgpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKSkpOwog
fQogCiBib29sIEV2ZW50SGFuZGxlcjo6a2V5RXZlbnQoTlNFdmVudCAqZXZlbnQpCkBAIC0xMTYs
NyArMTEzLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmtleUV2ZW50KE5TRXZlbnQgKmV2ZW50KQog
ICAgIEFTU0VSVChbZXZlbnQgdHlwZV0gPT0gTlNLZXlEb3duIHx8IFtldmVudCB0eXBlXSA9PSBO
U0tleVVwKTsKIAogICAgIEN1cnJlbnRFdmVudFNjb3BlIHNjb3BlKGV2ZW50KTsKLSAgICByZXR1
cm4ga2V5RXZlbnQoUGxhdGZvcm1LZXlib2FyZEV2ZW50KGV2ZW50KSk7CisgICAgcmV0dXJuIGtl
eUV2ZW50KFBsYXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQbGF0Zm9ybUtleWJvYXJkRXZlbnQo
ZXZlbnQpKTsKIAogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKQEAgLTY0Niw3ICs2
NDMsNyBAQCBQbGF0Zm9ybU1vdXNlRXZlbnQgRXZlbnRIYW5kbGVyOjpjdXJyZW50UGxhdGZvcm1N
b3VzZUV2ZW50KCkgY29uc3QKICAgICBOU1ZpZXcgKndpbmRvd1ZpZXcgPSBuaWw7CiAgICAgaWYg
KFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCiAgICAgICAgIHdpbmRvd1ZpZXcgPSBwYWdl
LT5jaHJvbWUoKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCk7Ci0gICAgcmV0dXJuIFBsYXRmb3JtTW91
c2VFdmVudChjdXJyZW50TlNFdmVudCgpLCB3aW5kb3dWaWV3KTsKKyAgICByZXR1cm4gUGxhdGZv
cm1FdmVudEZhY3Rvcnk6OmNyZWF0ZVBsYXRmb3JtTW91c2VFdmVudChjdXJyZW50TlNFdmVudCgp
LCB3aW5kb3dWaWV3KTsKIH0KIAogYm9vbCBFdmVudEhhbmRsZXI6OmV2ZW50QWN0aXZhdGVkVmll
dyhjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1FdmVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1FdmVudC5oCmluZGV4IGEzMmQyODBiMmE2MzIxMWM4NGU0NzZjYjhkMTg4
YTAxOTRkODAxYjIuLjc3ZDQ0N2U0Y2VlZDFjMDFkZWMxNjc4YTBmZDRkYTBlMWVlMjY0YzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXZlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmgKQEAgLTY1LDU5ICs2NSw1OSBA
QCBwdWJsaWM6CiAjZW5kaWYKICAgICB9OwogCi0gICAgZW51bSBNb2RpZmllcktleSB7Ci0gICAg
ICAgIEFsdEtleSA9IDEgPDwgMCwKLSAgICAgICAgQ3RybEtleSA9IDEgPDwgMSwKLSAgICAgICAg
TWV0YUtleSA9IDEgPDwgMiwKLSAgICAgICAgU2hpZnRLZXkgPSAxIDw8IDMKKyAgICBlbnVtIE1v
ZGlmaWVycyB7CisgICAgICAgIEFsdEtleSAgICAgID0gMSA8PCAwLAorICAgICAgICBDdHJsS2V5
ICAgICA9IDEgPDwgMSwKKyAgICAgICAgTWV0YUtleSAgICAgPSAxIDw8IDIsCisgICAgICAgIFNo
aWZ0S2V5ICAgID0gMSA8PCAzLAogICAgIH07CiAKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxUeXBlPihtX3R5cGUpOyB9CiAKLSAgICBib29sIHNoaWZ0S2V5KCkg
Y29uc3QgeyByZXR1cm4gbV9zaGlmdEtleTsgfQotICAgIGJvb2wgY3RybEtleSgpIGNvbnN0IHsg
cmV0dXJuIG1fY3RybEtleTsgfQotICAgIGJvb2wgYWx0S2V5KCkgY29uc3QgeyByZXR1cm4gbV9h
bHRLZXk7IH0KLSAgICBib29sIG1ldGFLZXkoKSBjb25zdCB7IHJldHVybiBtX21ldGFLZXk7IH0K
KyAgICBib29sIHNoaWZ0S2V5KCkgY29uc3QgeyByZXR1cm4gbV9tb2RpZmllcnMgJiBTaGlmdEtl
eTsgfQorICAgIGJvb2wgY3RybEtleSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kaWZpZXJzICYgQ3Ry
bEtleTsgfQorICAgIGJvb2wgYWx0S2V5KCkgY29uc3QgeyByZXR1cm4gbV9tb2RpZmllcnMgJiBB
bHRLZXk7IH0KKyAgICBib29sIG1ldGFLZXkoKSBjb25zdCB7IHJldHVybiBtX21vZGlmaWVycyAm
IE1ldGFLZXk7IH0KIAotICAgIHVuc2lnbmVkIG1vZGlmaWVycygpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gKGFsdEtleSgpID8gQWx0S2V5IDogMCkKLSAgICAgICAgICAgIHwgKGN0cmxL
ZXkoKSA/IEN0cmxLZXkgOiAwKQotICAgICAgICAgICAgfCAobWV0YUtleSgpID8gTWV0YUtleSA6
IDApCi0gICAgICAgICAgICB8IChzaGlmdEtleSgpID8gU2hpZnRLZXkgOiAwKTsKLSAgICB9Cisg
ICAgdW5zaWduZWQgbW9kaWZpZXJzKCkgY29uc3QgeyByZXR1cm4gbV9tb2RpZmllcnM7IH0KIAog
ICAgIGRvdWJsZSB0aW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX3RpbWVzdGFtcDsgfQogCiBw
cm90ZWN0ZWQ6CiAgICAgUGxhdGZvcm1FdmVudCgpCiAgICAgICAgIDogbV90eXBlKE5vVHlwZSkK
LSAgICAgICAgLCBtX3NoaWZ0S2V5KGZhbHNlKQotICAgICAgICAsIG1fY3RybEtleShmYWxzZSkK
LSAgICAgICAgLCBtX2FsdEtleShmYWxzZSkKLSAgICAgICAgLCBtX21ldGFLZXkoZmFsc2UpCisg
ICAgICAgICwgbV9tb2RpZmllcnMoMCkKICAgICAgICAgLCBtX3RpbWVzdGFtcCgwKQogICAgIHsK
ICAgICB9CiAKICAgICBQbGF0Zm9ybUV2ZW50KFR5cGUgdHlwZSkKICAgICAgICAgOiBtX3R5cGUo
dHlwZSkKLSAgICAgICAgLCBtX3NoaWZ0S2V5KGZhbHNlKQotICAgICAgICAsIG1fY3RybEtleShm
YWxzZSkKLSAgICAgICAgLCBtX2FsdEtleShmYWxzZSkKLSAgICAgICAgLCBtX21ldGFLZXkoZmFs
c2UpCisgICAgICAgICwgbV9tb2RpZmllcnMoMCkKICAgICAgICAgLCBtX3RpbWVzdGFtcCgwKQog
ICAgIHsKICAgICB9CiAKKyAgICBQbGF0Zm9ybUV2ZW50KFR5cGUgdHlwZSwgTW9kaWZpZXJzIG1v
ZGlmaWVycywgZG91YmxlIHRpbWVzdGFtcCkKKyAgICAgICAgOiBtX3R5cGUodHlwZSkKKyAgICAg
ICAgLCBtX21vZGlmaWVycyhtb2RpZmllcnMpCisgICAgICAgICwgbV90aW1lc3RhbXAodGltZXN0
YW1wKQorICAgIHsKKyAgICB9CisKICAgICBQbGF0Zm9ybUV2ZW50KFR5cGUgdHlwZSwgYm9vbCBz
aGlmdEtleSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBtZXRhS2V5LCBkb3VibGUg
dGltZXN0YW1wKQogICAgICAgICA6IG1fdHlwZSh0eXBlKQotICAgICAgICAsIG1fc2hpZnRLZXko
c2hpZnRLZXkpCi0gICAgICAgICwgbV9jdHJsS2V5KGN0cmxLZXkpCi0gICAgICAgICwgbV9hbHRL
ZXkoYWx0S2V5KQotICAgICAgICAsIG1fbWV0YUtleShtZXRhS2V5KQorICAgICAgICAsIG1fbW9k
aWZpZXJzKDApCiAgICAgICAgICwgbV90aW1lc3RhbXAodGltZXN0YW1wKQogICAgIHsKKyAgICAg
ICAgaWYgKHNoaWZ0S2V5KQorICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gU2hpZnRLZXk7Cisg
ICAgICAgIGlmIChjdHJsS2V5KQorICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gQ3RybEtleTsK
KyAgICAgICAgaWYgKGFsdEtleSkKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IEFsdEtleTsK
KyAgICAgICAgaWYgKG1ldGFLZXkpCisgICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNZXRhS2V5
OwogICAgIH0KIAogICAgIC8vIEV4cGxpY2l0IHByb3RlY3RlZCBkZXN0cnVjdG9yIHNvIHRoYXQg
cGVvcGxlIGRvbid0IGFjY2lkZW50YWxseQpAQCAtMTI3LDEwICsxMjcsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgfQogCiAgICAgdW5zaWduZWQgbV90eXBlOwotICAgIGJvb2wgbV9zaGlmdEtleTsKLSAg
ICBib29sIG1fY3RybEtleTsKLSAgICBib29sIG1fYWx0S2V5OwotICAgIGJvb2wgbV9tZXRhS2V5
OworICAgIHVuc2lnbmVkIG1fbW9kaWZpZXJzOwogICAgIGRvdWJsZSBtX3RpbWVzdGFtcDsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUV2
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVFdmVudC5oCmlu
ZGV4IDU1ZmU4ZWZhODYxODk2OGMxODBlMGYwNjNlYjk3ZmU3ZDZmY2Y3ZTUuLmUzMTNiZTUwZTM5
MzJmOWNlMWNiYzU1YjQwMWRhMjc2MzJhNDU0MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1HZXN0dXJlRXZlbnQuaApAQCAtNjAsNyArNjAsNiBAQCBwdWJsaWM6CiBw
cm90ZWN0ZWQ6CiAgICAgSW50UG9pbnQgbV9wb3NpdGlvbjsKICAgICBJbnRQb2ludCBtX2dsb2Jh
bFBvc2l0aW9uOwotICAgIGRvdWJsZSBtX3RpbWVzdGFtcDsKICAgICBmbG9hdCBtX2RlbHRhWDsK
ICAgICBmbG9hdCBtX2RlbHRhWTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtS2V5Ym9hcmRFdmVudC5oCmluZGV4IDJlZDFhMGFmODhkYWViZGM1Yjk0MzE2ZTJkMjNh
MTJjMzhmMTQ2ZjYuLmYxNTQ5NjY3MzJhZDk0OWE4ZDhiMzAwOTYyMzY3MTU3OTczMjg0ODggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oCkBA
IC03MCwxMyArNzAsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAgICAg
ICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50KCkKICAgICAgICAgICAgIDogUGxhdGZvcm1FdmVudChQ
bGF0Zm9ybUV2ZW50OjpLZXlEb3duKQotICAgICAgICAgICAgLCBtX2F1dG9SZXBlYXQoZmFsc2Up
CiAgICAgICAgICAgICAsIG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlKDApCiAgICAgICAgICAgICAs
IG1fbmF0aXZlVmlydHVhbEtleUNvZGUoMCkKKyAgICAgICAgICAgICwgbV9tYWNDaGFyQ29kZSgw
KQorICAgICAgICAgICAgLCBtX2F1dG9SZXBlYXQoZmFsc2UpCiAgICAgICAgICAgICAsIG1faXNL
ZXlwYWQoZmFsc2UpCi0jaWYgUExBVEZPUk0oV0lOKSB8fCBQTEFURk9STShDSFJPTUlVTSkKICAg
ICAgICAgICAgICwgbV9pc1N5c3RlbUtleShmYWxzZSkKLSNlbmRpZgogI2lmIFBMQVRGT1JNKEdU
SykKICAgICAgICAgICAgICwgbV9nZGtFdmVudEtleSgwKQogI2VuZGlmCkBAIC04Niw2ICs4NSwy
MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHsKICAgICAgICAgfQogCisgICAgICAg
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29u
c3QgU3RyaW5nJiB1bm1vZGlmaWVkVGV4dCwgY29uc3QgU3RyaW5nJiBrZXlJZGVudGlmaWVyLCBp
bnQgd2luZG93c1ZpcnR1YWxLZXlDb2RlLCBpbnQgbmF0aXZlVmlydHVhbEtleUNvZGUsIGludCBt
YWNDaGFyQ29kZSwgYm9vbCBpc0F1dG9SZXBlYXQsIGJvb2wgaXNLZXlwYWQsIGJvb2wgaXNTeXN0
ZW1LZXksIE1vZGlmaWVycyBtb2RpZmllcnMsIGRvdWJsZSB0aW1lc3RhbXApCisgICAgICAgICAg
ICA6IFBsYXRmb3JtRXZlbnQodHlwZSwgbW9kaWZpZXJzLCB0aW1lc3RhbXApCisgICAgICAgICAg
ICAsIG1fdGV4dCh0ZXh0KQorICAgICAgICAgICAgLCBtX3VubW9kaWZpZWRUZXh0KHVubW9kaWZp
ZWRUZXh0KQorICAgICAgICAgICAgLCBtX2tleUlkZW50aWZpZXIoa2V5SWRlbnRpZmllcikKKyAg
ICAgICAgICAgICwgbV93aW5kb3dzVmlydHVhbEtleUNvZGUod2luZG93c1ZpcnR1YWxLZXlDb2Rl
KQorICAgICAgICAgICAgLCBtX25hdGl2ZVZpcnR1YWxLZXlDb2RlKG5hdGl2ZVZpcnR1YWxLZXlD
b2RlKQorICAgICAgICAgICAgLCBtX21hY0NoYXJDb2RlKG1hY0NoYXJDb2RlKQorICAgICAgICAg
ICAgLCBtX2F1dG9SZXBlYXQoaXNBdXRvUmVwZWF0KQorICAgICAgICAgICAgLCBtX2lzS2V5cGFk
KGlzS2V5cGFkKQorICAgICAgICAgICAgLCBtX2lzU3lzdGVtS2V5KGlzU3lzdGVtS2V5KQorICAg
ICAgICB7CisgICAgICAgIH0KKwogICAgICAgICB2b2lkIGRpc2FtYmlndWF0ZUtleURvd25FdmVu
dChUeXBlLCBib29sIGJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUgPSBmYWxzZSk7IC8vIE9ubHkg
dXNlZCBvbiBwbGF0Zm9ybXMgdGhhdCBuZWVkIGl0LCBpLmUuIHRob3NlIHRoYXQgZ2VuZXJhdGUg
S2V5RG93biBldmVudHMuCiAKICAgICAgICAgLy8gVGV4dCBhcyBhcyBnZW5lcmF0ZWQgYnkgcHJv
Y2Vzc2luZyBhIHZpcnR1YWwga2V5IGNvZGUgd2l0aCBhIGtleWJvYXJkIGxheW91dApAQCAtMTAx
LDI0ICsxMTQsMjQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBPdGhlcndpc2Us
IHNhbWUgYXMgdGV4dCgpLgogICAgICAgICBTdHJpbmcgdW5tb2RpZmllZFRleHQoKSBjb25zdCB7
IHJldHVybiBtX3VubW9kaWZpZWRUZXh0OyB9CiAKKyAgICAgICAgU3RyaW5nIGtleUlkZW50aWZp
ZXIoKSBjb25zdCB7IHJldHVybiBtX2tleUlkZW50aWZpZXI7IH0KKwogICAgICAgICAvLyBNb3N0
IGNvbXBhdGlibGUgV2luZG93cyB2aXJ0dWFsIGtleSBjb2RlIGFzc29jaWF0ZWQgd2l0aCB0aGUg
ZXZlbnQuCiAgICAgICAgIC8vIFplcm8gZm9yIENoYXIgZXZlbnRzLgogICAgICAgICBpbnQgd2lu
ZG93c1ZpcnR1YWxLZXlDb2RlKCkgY29uc3QgeyByZXR1cm4gbV93aW5kb3dzVmlydHVhbEtleUNv
ZGU7IH0KICAgICAgICAgdm9pZCBzZXRXaW5kb3dzVmlydHVhbEtleUNvZGUoaW50IGNvZGUpIHsg
bV93aW5kb3dzVmlydHVhbEtleUNvZGUgPSBjb2RlOyB9CiAKICAgICAgICAgaW50IG5hdGl2ZVZp
cnR1YWxLZXlDb2RlKCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVWaXJ0dWFsS2V5Q29kZTsgfQot
ICAgICAgICB2b2lkIHNldE5hdGl2ZVZpcnR1YWxLZXlDb2RlKGludCBjb2RlKSB7IG1fbmF0aXZl
VmlydHVhbEtleUNvZGUgPSBjb2RlOyB9CisgICAgICAgIGludCBtYWNDaGFyQ29kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbWFjQ2hhckNvZGU7IH0KIAotICAgICAgICBTdHJpbmcga2V5SWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1fa2V5SWRlbnRpZmllcjsgfQogICAgICAgICBib29sIGlzQXV0
b1JlcGVhdCgpIGNvbnN0IHsgcmV0dXJuIG1fYXV0b1JlcGVhdDsgfQotICAgICAgICB2b2lkIHNl
dElzQXV0b1JlcGVhdChib29sIGluKSB7IG1fYXV0b1JlcGVhdCA9IGluOyB9CiAgICAgICAgIGJv
b2wgaXNLZXlwYWQoKSBjb25zdCB7IHJldHVybiBtX2lzS2V5cGFkOyB9CisgICAgICAgIGJvb2wg
aXNTeXN0ZW1LZXkoKSBjb25zdCB7IHJldHVybiBtX2lzU3lzdGVtS2V5OyB9CiAKICAgICAgICAg
c3RhdGljIGJvb2wgY3VycmVudENhcHNMb2NrU3RhdGUoKTsKICAgICAgICAgc3RhdGljIHZvaWQg
Z2V0Q3VycmVudE1vZGlmaWVyU3RhdGUoYm9vbCYgc2hpZnRLZXksIGJvb2wmIGN0cmxLZXksIGJv
b2wmIGFsdEtleSwgYm9vbCYgbWV0YUtleSk7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgICAg
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChOU0V2ZW50Kik7CiAgICAgICAgIE5TRXZlbnQqIG1hY0V2
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9tYWNFdmVudC5nZXQoKTsgfQogI2VuZGlmCiAKQEAgLTE0
NywxMCArMTYwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQod3hLZXlFdmVudCYpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShXSU4pIHx8IFBM
QVRGT1JNKENIUk9NSVVNKQotICAgICAgICBib29sIGlzU3lzdGVtS2V5KCkgY29uc3QgeyByZXR1
cm4gbV9pc1N5c3RlbUtleTsgfQotI2VuZGlmCi0KICNpZiBQTEFURk9STShFRkwpCiAgICAgICAg
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChjb25zdCBFdmFzX0V2ZW50X0tleV9Eb3duKik7CiAgICAg
ICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudChjb25zdCBFdmFzX0V2ZW50X0tleV9VcCopOwpAQCAt
MTYwLDE3ICsxNjksMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTdHJpbmcgbV90
ZXh0OwogICAgICAgICBTdHJpbmcgbV91bm1vZGlmaWVkVGV4dDsKICAgICAgICAgU3RyaW5nIG1f
a2V5SWRlbnRpZmllcjsKLSAgICAgICAgYm9vbCBtX2F1dG9SZXBlYXQ7CiAgICAgICAgIGludCBt
X3dpbmRvd3NWaXJ0dWFsS2V5Q29kZTsKICAgICAgICAgaW50IG1fbmF0aXZlVmlydHVhbEtleUNv
ZGU7CisgICAgICAgIGludCBtX21hY0NoYXJDb2RlOworICAgICAgICBib29sIG1fYXV0b1JlcGVh
dDsKICAgICAgICAgYm9vbCBtX2lzS2V5cGFkOworICAgICAgICBib29sIG1faXNTeXN0ZW1LZXk7
CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIFJldGFpblB0cjxOU0V2ZW50PiBtX21hY0V2
ZW50OwogI2VuZGlmCi0jaWYgUExBVEZPUk0oV0lOKSB8fCBQTEFURk9STShDSFJPTUlVTSkKLSAg
ICAgICAgYm9vbCBtX2lzU3lzdGVtS2V5OwotI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQogICAg
ICAgICBHZGtFdmVudEtleSogbV9nZGtFdmVudEtleTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Nb3VzZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaAppbmRleCBiM2E0MDY3ZDcxODBjYmE0ODVh
Y2E2NzcwOTk3MzBjZjM1ZjdmYTkwLi5hM2RjY2U0OTBkM2Y3ODA2MmQ5ZWM3OGI2ODE3ZDM5ODg5
ZTRlNGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybU1vdXNl
RXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQu
aApAQCAtMTE5LDEyICsxMTksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAogI2lm
IFBMQVRGT1JNKE1BQykKLSNpZiBkZWZpbmVkKF9fT0JKQ19fKQotICAgICAgICBQbGF0Zm9ybU1v
dXNlRXZlbnQoTlNFdmVudCAqLCBOU1ZpZXcgKndpbmRvd1ZpZXcpOwotI2VuZGlmCi0gICAgICAg
IFBsYXRmb3JtTW91c2VFdmVudChpbnQgeCwgaW50IHksIGludCBnbG9iYWxYLCBpbnQgZ2xvYmFs
WSwgTW91c2VCdXR0b24sIFBsYXRmb3JtRXZlbnQ6OlR5cGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgY2xpY2tDb3VudCwgYm9vbCBzaGlmdEtleSwgYm9vbCBjdHJsS2V5LCBib29s
IGFsdEtleSwgYm9vbCBtZXRhS2V5LCBkb3VibGUgdGltZXN0YW1wLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgbW9kaWZpZXJGbGFncywgaW50IGV2ZW50TnVtYmVyKTsKICAg
ICAgICAgaW50IGV2ZW50TnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9ldmVudE51bWJlcjsgfQog
I2VuZGlmCiAKQEAgLTE2MCwxMiArMTU0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlm
CiAgICAgfTsKIAotI2lmIFBMQVRGT1JNKE1BQykgJiYgZGVmaW5lZChfX09CSkNfXykKLSAgICBJ
bnRQb2ludCBnbG9iYWxQb2ludChjb25zdCBOU1BvaW50JiB3aW5kb3dQb2ludCwgTlNXaW5kb3cg
Kik7Ci0gICAgSW50UG9pbnQgcG9pbnRGb3JFdmVudChOU0V2ZW50ICosIE5TVmlldyAqd2luZG93
Vmlldyk7Ci0gICAgSW50UG9pbnQgZ2xvYmFsUG9pbnRGb3JFdmVudChOU0V2ZW50ICopOwotI2Vu
ZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFBsYXRmb3JtTW91c2VF
dmVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVs
RXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCmlu
ZGV4IGJhOTEwNTQ4MjlhZTZlMmY2OWQxNjBmYWJmM2RkZmVlMzNmNGJjM2UuLjhlOTllNDc2MmZk
MDdiMmY1YzNkYjhkMWI5YTdkNDc1NjU1YmNlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCkBAIC0xNTQsMTcgKzE1NCwxMCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudChjb25zdCBFdmFzX0V2ZW50X01v
dXNlX1doZWVsKik7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykKLSNpZiBkZWZpbmVkKF9f
T0JKQ19fKQotICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQoTlNFdmVudCAqLCBOU1ZpZXcgKndp
bmRvd1ZpZXcpOwotI2VuZGlmCi0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKE1BQykgfHwgKFBMQVRG
T1JNKENIUk9NSVVNKSAmJiBPUyhEQVJXSU4pKQogICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnRQ
aGFzZSBwaGFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGhhc2U7IH0KICAgICAgICAgUGxhdGZvcm1X
aGVlbEV2ZW50UGhhc2UgbW9tZW50dW1QaGFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9tZW50dW1Q
aGFzZTsgfQogICAgICAgICBib29sIGhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoKSBjb25zdCB7
IHJldHVybiBtX2hhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXM7IH0KLSAgICAgICAgZG91YmxlIHRp
bWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZXN0YW1wOyB9CiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKFFUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRm
b3JtS2V5Ym9hcmRFdmVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxh
dGZvcm1LZXlib2FyZEV2ZW50R3RrLmNwcAppbmRleCA1M2VmNzhiZTI4MDI1YTA2YTQyNzM4YTJi
OWEwODY3YzU2ZTYzMjA1Li4zYTI0MDlkY2YwNjk2ZjY4OGUwMjE1NDNiYjFjNzgzNjNmMjVmYzdm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1L
ZXlib2FyZEV2ZW50R3RrLmNwcApAQCAtNTUyLDEwICs1NTIsMTIgQEAgUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQoR2RrRXZlbnRLZXkqIGV2ZW50KQogICAgICwg
bV90ZXh0KHNpbmdsZUNoYXJhY3RlclN0cmluZyhldmVudC0+a2V5dmFsKSkKICAgICAsIG1fdW5t
b2RpZmllZFRleHQoc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGV2ZW50LT5rZXl2YWwpKQogICAgICwg
bV9rZXlJZGVudGlmaWVyKGtleUlkZW50aWZpZXJGb3JHZGtLZXlDb2RlKGV2ZW50LT5rZXl2YWwp
KQotICAgICwgbV9hdXRvUmVwZWF0KGZhbHNlKQogICAgICwgbV93aW5kb3dzVmlydHVhbEtleUNv
ZGUod2luZG93c0tleUNvZGVGb3JHZGtLZXlDb2RlKGV2ZW50LT5rZXl2YWwpKQogICAgICwgbV9u
YXRpdmVWaXJ0dWFsS2V5Q29kZShldmVudC0+a2V5dmFsKQorICAgICwgbV9tYWNDaGFyQ29kZSgw
KQorICAgICwgbV9hdXRvUmVwZWF0KGZhbHNlKQogICAgICwgbV9pc0tleXBhZChldmVudC0+a2V5
dmFsID49IEdES19LUF9TcGFjZSAmJiBldmVudC0+a2V5dmFsIDw9IEdES19LUF85KQorICAgICwg
bV9pc1N5c3RlbUtleShmYWxzZSkKICAgICAsIG1fZ2RrRXZlbnRLZXkoZXZlbnQpCiB7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1Nb3VzZUV2ZW50
R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybU1vdXNlRXZlbnRH
dGsuY3BwCmluZGV4IDg3OWU4Y2MxNDU4ZDhmODgyZGU5MzA5NDc5N2IyYWZlNDE0MDVjNDguLjIx
ODk5MzliM2I5MzBkMDI1YTA2YjUzOGFkMGRiMDg0YzMyNmM2NjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybU1vdXNlRXZlbnRHdGsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybU1vdXNlRXZlbnRHdGsuY3BwCkBAIC00
MSwxMCArNDEsMTYgQEAgUGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQoR2Rr
RXZlbnRCdXR0b24qIGV2ZW50KQogICAgIG1fdGltZXN0YW1wID0gZXZlbnQtPnRpbWU7CiAgICAg
bV9wb3NpdGlvbiA9IEludFBvaW50KChpbnQpZXZlbnQtPngsIChpbnQpZXZlbnQtPnkpOwogICAg
IG1fZ2xvYmFsUG9zaXRpb24gPSBJbnRQb2ludCgoaW50KWV2ZW50LT54X3Jvb3QsIChpbnQpZXZl
bnQtPnlfcm9vdCk7Ci0gICAgbV9zaGlmdEtleSA9IGV2ZW50LT5zdGF0ZSAmIEdES19TSElGVF9N
QVNLOwotICAgIG1fY3RybEtleSA9IGV2ZW50LT5zdGF0ZSAmIEdES19DT05UUk9MX01BU0s7Ci0g
ICAgbV9hbHRLZXkgPSBldmVudC0+c3RhdGUgJiBHREtfTU9EMV9NQVNLOwotICAgIG1fbWV0YUtl
eSA9IGV2ZW50LT5zdGF0ZSAmIEdES19NRVRBX01BU0s7CisKKyAgICBtX21vZGlmaWVycyA9IDA7
CisgICAgaWYgKG1vdGlvbi0+c3RhdGUgJiBHREtfU0hJRlRfTUFTSykKKyAgICAgICAgbV9tb2Rp
ZmllcnMgfD0gU2hpZnRLZXk7CisgICAgaWYgKG1vdGlvbi0+c3RhdGUgJiBHREtfQ09OVFJPTF9N
QVNLKQorICAgICAgICBtX21vZGlmaWVycyB8PSBDdHJsS2V5OworICAgIGlmIChtb3Rpb24tPnN0
YXRlICYgR0RLX01PRDFfTUFTSykKKyAgICAgICAgbV9tb2RpZmllcnMgfD0gQWx0S2V5OworICAg
IGlmIChtb3Rpb24tPnN0YXRlICYgR0RLX01FVEFfTUFTSykKKyAgICAgICAgbV9tb2RpZmllcnMg
fD0gTWV0YUtleTsKIAogICAgIHN3aXRjaCAoZXZlbnQtPnR5cGUpIHsKICAgICBjYXNlIEdES19C
VVRUT05fUFJFU1M6CkBAIC04MCwxMCArODYsMTYgQEAgUGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0
Zm9ybU1vdXNlRXZlbnQoR2RrRXZlbnRNb3Rpb24qIG1vdGlvbikKICAgICBtX3RpbWVzdGFtcCA9
IG1vdGlvbi0+dGltZTsKICAgICBtX3Bvc2l0aW9uID0gSW50UG9pbnQoKGludCltb3Rpb24tPngs
IChpbnQpbW90aW9uLT55KTsKICAgICBtX2dsb2JhbFBvc2l0aW9uID0gSW50UG9pbnQoKGludClt
b3Rpb24tPnhfcm9vdCwgKGludCltb3Rpb24tPnlfcm9vdCk7Ci0gICAgbV9zaGlmdEtleSA9IG1v
dGlvbi0+c3RhdGUgJiBHREtfU0hJRlRfTUFTSzsKLSAgICBtX2N0cmxLZXkgPSBtb3Rpb24tPnN0
YXRlICYgR0RLX0NPTlRST0xfTUFTSzsKLSAgICBtX2FsdEtleSA9IG1vdGlvbi0+c3RhdGUgJiBH
REtfTU9EMV9NQVNLOwotICAgIG1fbWV0YUtleSA9IG1vdGlvbi0+c3RhdGUgJiBHREtfTUVUQV9N
QVNLOworCisgICAgbV9tb2RpZmllcnMgPSAwOworICAgIGlmIChtb3Rpb24tPnN0YXRlICYgR0RL
X1NISUZUX01BU0spCisgICAgICAgIG1fbW9kaWZpZXJzIHw9IFNoaWZ0S2V5OworICAgIGlmICht
b3Rpb24tPnN0YXRlICYgR0RLX0NPTlRST0xfTUFTSykKKyAgICAgICAgbV9tb2RpZmllcnMgfD0g
Q3RybEtleTsKKyAgICBpZiAobW90aW9uLT5zdGF0ZSAmIEdES19NT0QxX01BU0spCisgICAgICAg
IG1fbW9kaWZpZXJzIHw9IEFsdEtleTsKKyAgICBpZiAobW90aW9uLT5zdGF0ZSAmIEdES19NRVRB
X01BU0spCisgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1ldGFLZXk7CiAKICAgICBzd2l0Y2ggKG1v
dGlvbi0+dHlwZSkgewogICAgIGNhc2UgR0RLX01PVElPTl9OT1RJRlk6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1XaGVlbEV2ZW50R3RrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVdoZWVsRXZlbnRHdGsuY3BwCmluZGV4
IGNiZTA2ZGZhZjY5MjdjYzYzYTBjZTliNDNhNTFmZDMxNTcyYTdmMmYuLjQyMDVjMjEyOTI3NjI0
YTFiNTZhNGYwM2IzMzE0ZDhkZDQzM2YxZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9QbGF0Zm9ybVdoZWVsRXZlbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVdoZWVsRXZlbnRHdGsuY3BwCkBAIC00Miw2ICs0MiwxNiBA
QCBQbGF0Zm9ybVdoZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVudChHZGtFdmVudFNjcm9sbCog
ZXZlbnQpCiAgICAgbV90eXBlID0gUGxhdGZvcm1FdmVudDo6V2hlZWw7CiAgICAgbV90aW1lc3Rh
bXAgPSBjdXJyZW50VGltZSgpOwogCisgICAgbV9tb2RpZmllcnMgPSAwOworICAgIGlmIChtb3Rp
b24tPnN0YXRlICYgR0RLX1NISUZUX01BU0spCisgICAgICAgIG1fbW9kaWZpZXJzIHw9IFNoaWZ0
S2V5OworICAgIGlmIChtb3Rpb24tPnN0YXRlICYgR0RLX0NPTlRST0xfTUFTSykKKyAgICAgICAg
bV9tb2RpZmllcnMgfD0gQ3RybEtleTsKKyAgICBpZiAobW90aW9uLT5zdGF0ZSAmIEdES19NT0Qx
X01BU0spCisgICAgICAgIG1fbW9kaWZpZXJzIHw9IEFsdEtleTsKKyAgICBpZiAobW90aW9uLT5z
dGF0ZSAmIEdES19NRVRBX01BU0spCisgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1ldGFLZXk7CisK
ICAgICBtX2RlbHRhWCA9IDA7CiAgICAgbV9kZWx0YVkgPSAwOwogCkBAIC02NiwxMCArNzYsNiBA
QCBQbGF0Zm9ybVdoZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVudChHZGtFdmVudFNjcm9sbCog
ZXZlbnQpCiAgICAgbV9wb3NpdGlvbiA9IEludFBvaW50KHN0YXRpY19jYXN0PGludD4oZXZlbnQt
PngpLCBzdGF0aWNfY2FzdDxpbnQ+KGV2ZW50LT55KSk7CiAgICAgbV9nbG9iYWxQb3NpdGlvbiA9
IEludFBvaW50KHN0YXRpY19jYXN0PGludD4oZXZlbnQtPnhfcm9vdCksIHN0YXRpY19jYXN0PGlu
dD4oZXZlbnQtPnlfcm9vdCkpOwogICAgIG1fZ3JhbnVsYXJpdHkgPSBTY3JvbGxCeVBpeGVsV2hl
ZWxFdmVudDsKLSAgICBtX3NoaWZ0S2V5ID0gZXZlbnQtPnN0YXRlICYgR0RLX1NISUZUX01BU0s7
Ci0gICAgbV9jdHJsS2V5ID0gZXZlbnQtPnN0YXRlICYgR0RLX0NPTlRST0xfTUFTSzsKLSAgICBt
X2FsdEtleSA9IGV2ZW50LT5zdGF0ZSAmIEdES19NT0QxX01BU0s7Ci0gICAgbV9tZXRhS2V5ID0g
ZXZlbnQtPnN0YXRlICYgR0RLX01FVEFfTUFTSzsKICAgICBtX2RpcmVjdGlvbkludmVydGVkRnJv
bURldmljZSA9IGZhbHNlOwogCiAgICAgLy8gRklYTUU6IHJldHJpZXZlIHRoZSB1c2VyIHNldHRp
bmcgZm9yIHRoZSBudW1iZXIgb2YgbGluZXMgdG8gc2Nyb2xsIG9uIGVhY2ggd2hlZWwgZXZlbnQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9LZXlFdmVudE1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9LZXlFdmVudE1hYy5tbQppbmRleCA0NGQ2Y2Mz
MGMyZjg2YTI0YzI3ZGYwMDAwMmRmNGE5MzljNzMzNTdhLi40YmRmNjIwN2I2YzU1ZjEyZTI4N2E3
MTQxYTI3MGVhOTJkMjJkZTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvS2V5RXZlbnRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0tleUV2
ZW50TWFjLm1tCkBAIC0zNywxODcgKzM3LDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdURjsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCBpc0tleXBhZEV2ZW50KE5TRXZlbnQqIGV2
ZW50KQotewotICAgIC8vIENoZWNrIHRoYXQgdGhpcyBpcyB0aGUgdHlwZSBvZiBldmVudCB0aGF0
IGhhcyBhIGtleUNvZGUuCi0gICAgc3dpdGNoIChbZXZlbnQgdHlwZV0pIHsKLSAgICAgICAgY2Fz
ZSBOU0tleURvd246Ci0gICAgICAgIGNhc2UgTlNLZXlVcDoKLSAgICAgICAgY2FzZSBOU0ZsYWdz
Q2hhbmdlZDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChbZXZlbnQgbW9kaWZpZXJGbGFnc10g
JiBOU051bWVyaWNQYWRLZXlNYXNrKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIHN3aXRj
aCAoW2V2ZW50IGtleUNvZGVdKSB7Ci0gICAgICAgIGNhc2UgNzE6IC8vIENsZWFyCi0gICAgICAg
IGNhc2UgODE6IC8vID0KLSAgICAgICAgY2FzZSA3NTogLy8gLwotICAgICAgICBjYXNlIDY3OiAv
LyAqCi0gICAgICAgIGNhc2UgNzg6IC8vIC0KLSAgICAgICAgY2FzZSA2OTogLy8gKwotICAgICAg
ICBjYXNlIDc2OiAvLyBFbnRlcgotICAgICAgICBjYXNlIDY1OiAvLyAuCi0gICAgICAgIGNhc2Ug
ODI6IC8vIDAKLSAgICAgICAgY2FzZSA4MzogLy8gMQotICAgICAgICBjYXNlIDg0OiAvLyAyCi0g
ICAgICAgIGNhc2UgODU6IC8vIDMKLSAgICAgICAgY2FzZSA4NjogLy8gNAotICAgICAgICBjYXNl
IDg3OiAvLyA1Ci0gICAgICAgIGNhc2UgODg6IC8vIDYKLSAgICAgICAgY2FzZSA4OTogLy8gNwot
ICAgICAgICBjYXNlIDkxOiAvLyA4Ci0gICAgICAgIGNhc2UgOTI6IC8vIDkKLSAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICB9Ci0KLSAgICAgcmV0dXJuIGZhbHNlOwotfQotCi1zdGF0aWMg
aW5saW5lIGJvb2wgaXNLZXlVcEV2ZW50KE5TRXZlbnQgKmV2ZW50KQotewotICAgIGlmIChbZXZl
bnQgdHlwZV0gIT0gTlNGbGFnc0NoYW5nZWQpCi0gICAgICAgIHJldHVybiBbZXZlbnQgdHlwZV0g
PT0gTlNLZXlVcDsKLSAgICAvLyBGSVhNRTogVGhpcyBsb2dpYyBmYWlscyBpZiB0aGUgdXNlciBw
cmVzc2VzIGJvdGggU2hpZnQga2V5cyBhdCBvbmNlLCBmb3IgZXhhbXBsZToKLSAgICAvLyB3ZSB0
cmVhdCByZWxlYXNpbmcgb25lIG9mIHRoZW0gYXMga2V5RG93bi4KLSAgICBzd2l0Y2ggKFtldmVu
dCBrZXlDb2RlXSkgewotICAgICAgICBjYXNlIDU0OiAvLyBSaWdodCBDb21tYW5kCi0gICAgICAg
IGNhc2UgNTU6IC8vIExlZnQgQ29tbWFuZAotICAgICAgICAgICAgcmV0dXJuIChbZXZlbnQgbW9k
aWZpZXJGbGFnc10gJiBOU0NvbW1hbmRLZXlNYXNrKSA9PSAwOwotCi0gICAgICAgIGNhc2UgNTc6
IC8vIENhcHNsb2NrCi0gICAgICAgICAgICByZXR1cm4gKFtldmVudCBtb2RpZmllckZsYWdzXSAm
IE5TQWxwaGFTaGlmdEtleU1hc2spID09IDA7Ci0KLSAgICAgICAgY2FzZSA1NjogLy8gTGVmdCBT
aGlmdAotICAgICAgICBjYXNlIDYwOiAvLyBSaWdodCBTaGlmdAotICAgICAgICAgICAgcmV0dXJu
IChbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU1NoaWZ0S2V5TWFzaykgPT0gMDsKLQotICAgICAg
ICBjYXNlIDU4OiAvLyBMZWZ0IEFsdAotICAgICAgICBjYXNlIDYxOiAvLyBSaWdodCBBbHQKLSAg
ICAgICAgICAgIHJldHVybiAoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNBbHRlcm5hdGVLZXlN
YXNrKSA9PSAwOwotCi0gICAgICAgIGNhc2UgNTk6IC8vIExlZnQgQ3RybAotICAgICAgICBjYXNl
IDYyOiAvLyBSaWdodCBDdHJsCi0gICAgICAgICAgICByZXR1cm4gKFtldmVudCBtb2RpZmllckZs
YWdzXSAmIE5TQ29udHJvbEtleU1hc2spID09IDA7Ci0KLSAgICAgICAgY2FzZSA2MzogLy8gRnVu
Y3Rpb24KLSAgICAgICAgICAgIHJldHVybiAoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNGdW5j
dGlvbktleU1hc2spID09IDA7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotc3RhdGlj
IGlubGluZSBTdHJpbmcgdGV4dEZyb21FdmVudChOU0V2ZW50KiBldmVudCkKLXsKLSAgICBpZiAo
W2V2ZW50IHR5cGVdID09IE5TRmxhZ3NDaGFuZ2VkKQotICAgICAgICByZXR1cm4gIiI7Ci0gICAg
cmV0dXJuIFtldmVudCBjaGFyYWN0ZXJzXTsKLX0KLQotCi1zdGF0aWMgaW5saW5lIFN0cmluZyB1
bm1vZGlmaWVkVGV4dEZyb21FdmVudChOU0V2ZW50KiBldmVudCkKLXsKLSAgICBpZiAoW2V2ZW50
IHR5cGVdID09IE5TRmxhZ3NDaGFuZ2VkKQotICAgICAgICByZXR1cm4gIiI7Ci0gICAgcmV0dXJu
IFtldmVudCBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnNdOwotfQotCi1zdGF0aWMgU3RyaW5n
IGtleUlkZW50aWZpZXJGb3JLZXlFdmVudChOU0V2ZW50KiBldmVudCkKLXsKLSAgICBpZiAoW2V2
ZW50IHR5cGVdID09IE5TRmxhZ3NDaGFuZ2VkKQotICAgICAgICBzd2l0Y2ggKFtldmVudCBrZXlD
b2RlXSkgewotICAgICAgICAgICAgY2FzZSA1NDogLy8gUmlnaHQgQ29tbWFuZAotICAgICAgICAg
ICAgY2FzZSA1NTogLy8gTGVmdCBDb21tYW5kCi0gICAgICAgICAgICAgICAgcmV0dXJuICJNZXRh
IjsKLQotICAgICAgICAgICAgY2FzZSA1NzogLy8gQ2Fwc2xvY2sKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gIkNhcHNMb2NrIjsKLQotICAgICAgICAgICAgY2FzZSA1NjogLy8gTGVmdCBTaGlmdAot
ICAgICAgICAgICAgY2FzZSA2MDogLy8gUmlnaHQgU2hpZnQKLSAgICAgICAgICAgICAgICByZXR1
cm4gIlNoaWZ0IjsKLQotICAgICAgICAgICAgY2FzZSA1ODogLy8gTGVmdCBBbHQKLSAgICAgICAg
ICAgIGNhc2UgNjE6IC8vIFJpZ2h0IEFsdAotICAgICAgICAgICAgICAgIHJldHVybiAiQWx0IjsK
LQotICAgICAgICAgICAgY2FzZSA1OTogLy8gTGVmdCBDdHJsCi0gICAgICAgICAgICBjYXNlIDYy
OiAvLyBSaWdodCBDdHJsCi0gICAgICAgICAgICAgICAgcmV0dXJuICJDb250cm9sIjsKLQotICAg
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgICAgICAgICByZXR1cm4gIiI7Ci0gICAgICAgIH0KLQotICAgIE5TU3RyaW5nICpz
ID0gW2V2ZW50IGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyc107Ci0gICAgaWYgKFtzIGxlbmd0
aF0gIT0gMSkgewotICAgICAgICBMT0coRXZlbnRzLCAicmVjZWl2ZWQgYW4gdW5leHBlY3RlZCBu
dW1iZXIgb2YgY2hhcmFjdGVycyBpbiBrZXkgZXZlbnQ6ICV1IiwgW3MgbGVuZ3RoXSk7Ci0gICAg
ICAgIHJldHVybiAiVW5pZGVudGlmaWVkIjsKLSAgICB9Ci0gICAgcmV0dXJuIGtleUlkZW50aWZp
ZXJGb3JDaGFyQ29kZShbcyBjaGFyYWN0ZXJBdEluZGV4OjBdKTsKLX0KLQotc3RhdGljIGludCB3
aW5kb3dzS2V5Q29kZUZvcktleUV2ZW50KE5TRXZlbnQgKmV2ZW50KQotewotICAgIGludCBjb2Rl
ID0gMDsKLSAgICAvLyBUaGVyZSBhcmUgc2V2ZXJhbCBraW5kcyBvZiBjaGFyYWN0ZXJzIGZvciB3
aGljaCB3ZSBwcm9kdWNlIGtleSBjb2RlIGZyb20gY2hhciBjb2RlOgotICAgIC8vIDEuIFJvbWFu
IGxldHRlcnMuIFdpbmRvd3Mga2V5Ym9hcmQgbGF5b3V0cyBhZmZlY3QgYm90aCB2aXJ0dWFsIGtl
eSBjb2RlcyBhbmQgY2hhcmFjdGVyIGNvZGVzIGZvciB0aGVzZSwKLSAgICAvLyAgICBzbyBlLmcu
ICdBJyBnZXRzIHRoZSBzYW1lIGtleUNvZGUgb24gUVdFUlRZLCBBWkVSVFkgb3IgRHZvcmFrIGxh
eW91dHMuCi0gICAgLy8gMi4gS2V5cyBmb3Igd2hpY2ggdGhlcmUgaXMgbm8ga25vd24gTWFjIHZp
cnR1YWwga2V5IGNvZGVzLCBsaWtlIFByaW50U2NyZWVuLgotICAgIC8vIDMuIENlcnRhaW4gcHVu
Y3R1YXRpb24ga2V5cy4gT24gV2luZG93cywgdGhlc2UgYXJlIGFsc28gcmVtYXBwZWQgZGVwZW5k
aW5nIG9uIGN1cnJlbnQga2V5Ym9hcmQgbGF5b3V0LAotICAgIC8vICAgIGJ1dCBzZWUgY29tbWVu
dCBpbiB3aW5kb3dzS2V5Q29kZUZvckNoYXJDb2RlKCkuCi0gICAgaWYgKFtldmVudCB0eXBlXSA9
PSBOU0tleURvd24gfHwgW2V2ZW50IHR5cGVdID09IE5TS2V5VXApIHsKLSAgICAgICAgLy8gQ21k
IHN3aXRjaGVzIFJvbWFuIGxldHRlcnMgZm9yIER2b3Jhay1RV0VSVFkgbGF5b3V0LCBzbyB0cnkg
bW9kaWZpZWQgY2hhcmFjdGVycyBmaXJzdC4KLSAgICAgICAgTlNTdHJpbmcqIHMgPSBbZXZlbnQg
Y2hhcmFjdGVyc107Ci0gICAgICAgIGNvZGUgPSBbcyBsZW5ndGhdID4gMCA/IHdpbmRvd3NLZXlD
b2RlRm9yQ2hhckNvZGUoW3MgY2hhcmFjdGVyQXRJbmRleDowXSkgOiAwOwotICAgICAgICBpZiAo
Y29kZSkKLSAgICAgICAgICAgIHJldHVybiBjb2RlOwotCi0gICAgICAgIC8vIEN0cmwrQSBvbiBh
biBBWkVSVFkga2V5Ym9hcmQgd291bGQgZ2V0IFZLX1Ega2V5Q29kZSBpZiB3ZSByZWxpZWQgb24g
LVtOU0V2ZW50IGtleUNvZGVdIGJlbG93LgotICAgICAgICBzID0gW2V2ZW50IGNoYXJhY3RlcnNJ
Z25vcmluZ01vZGlmaWVyc107Ci0gICAgICAgIGNvZGUgPSBbcyBsZW5ndGhdID4gMCA/IHdpbmRv
d3NLZXlDb2RlRm9yQ2hhckNvZGUoW3MgY2hhcmFjdGVyQXRJbmRleDowXSkgOiAwOwotICAgICAg
ICBpZiAoY29kZSkKLSAgICAgICAgICAgIHJldHVybiBjb2RlOwotICAgIH0KLQotICAgIC8vIE1h
cCBNYWMgdmlydHVhbCBrZXkgY29kZSBkaXJlY3RseSB0byBXaW5kb3dzIG9uZSBmb3IgYW55IGtl
eXMgbm90IGhhbmRsZWQgYWJvdmUuCi0gICAgLy8gRS5nLiB0aGUga2V5IG5leHQgdG8gQ2FwcyBM
b2NrIGhhcyB0aGUgc2FtZSBFdmVudC5rZXlDb2RlIG9uIFUuUy4ga2V5Ym9hcmQgKCdBJykgYW5k
IG9uIFJ1c3NpYW4ga2V5Ym9hcmQgKENZUklMTElDIExFVFRFUiBFRikuCi0gICAgcmV0dXJuIHdp
bmRvd3NLZXlDb2RlRm9yS2V5Q29kZShbZXZlbnQga2V5Q29kZV0pOwotfQotCi1QbGF0Zm9ybUtl
eWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudChOU0V2ZW50ICpldmVudCkKLSAgICA6
IFBsYXRmb3JtRXZlbnQoaXNLZXlVcEV2ZW50KGV2ZW50KSA/IFBsYXRmb3JtRXZlbnQ6OktleVVw
IDogUGxhdGZvcm1FdmVudDo6S2V5RG93biwgW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNTaGlm
dEtleU1hc2ssIFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQ29udHJvbEtleU1hc2ssIFtldmVu
dCBtb2RpZmllckZsYWdzXSAmIE5TQWx0ZXJuYXRlS2V5TWFzaywgW2V2ZW50IG1vZGlmaWVyRmxh
Z3NdICYgTlNDb21tYW5kS2V5TWFzaywgW2V2ZW50IHRpbWVzdGFtcF0pCi0gICAgLCBtX3RleHQo
dGV4dEZyb21FdmVudChldmVudCkpCi0gICAgLCBtX3VubW9kaWZpZWRUZXh0KHVubW9kaWZpZWRU
ZXh0RnJvbUV2ZW50KGV2ZW50KSkKLSAgICAsIG1fa2V5SWRlbnRpZmllcihrZXlJZGVudGlmaWVy
Rm9yS2V5RXZlbnQoZXZlbnQpKQotICAgICwgbV9hdXRvUmVwZWF0KChbZXZlbnQgdHlwZV0gIT0g
TlNGbGFnc0NoYW5nZWQpICYmIFtldmVudCBpc0FSZXBlYXRdKQotICAgICwgbV93aW5kb3dzVmly
dHVhbEtleUNvZGUod2luZG93c0tleUNvZGVGb3JLZXlFdmVudChldmVudCkpCi0gICAgLCBtX25h
dGl2ZVZpcnR1YWxLZXlDb2RlKFtldmVudCBrZXlDb2RlXSkKLSAgICAsIG1faXNLZXlwYWQoaXNL
ZXlwYWRFdmVudChldmVudCkpCi0gICAgLCBtX21hY0V2ZW50KGV2ZW50KQotewotICAgIC8vIEFs
d2F5cyB1c2UgMTMgZm9yIEVudGVyL1JldHVybiAtLSB3ZSBkb24ndCB3YW50IHRvIHVzZSBBcHBL
aXQncyBkaWZmZXJlbnQgY2hhcmFjdGVyIGZvciBFbnRlci4KLSAgICBpZiAobV93aW5kb3dzVmly
dHVhbEtleUNvZGUgPT0gVktfUkVUVVJOKSB7Ci0gICAgICAgIG1fdGV4dCA9ICJcciI7Ci0gICAg
ICAgIG1fdW5tb2RpZmllZFRleHQgPSAiXHIiOwotICAgIH0KLQotICAgIC8vIEFwcEtpdCBzZXRz
IHRleHQgdG8gIlx4N0YiIGZvciBiYWNrc3BhY2UsIGJ1dCB0aGUgY29ycmVjdCBLZXlib2FyZEV2
ZW50IGNoYXJhY3RlciBjb2RlIGlzIDguCi0gICAgaWYgKG1fd2luZG93c1ZpcnR1YWxLZXlDb2Rl
ID09IFZLX0JBQ0spIHsKLSAgICAgICAgbV90ZXh0ID0gIlx4OCI7Ci0gICAgICAgIG1fdW5tb2Rp
ZmllZFRleHQgPSAiXHg4IjsKLSAgICB9Ci0KLSAgICAvLyBBbHdheXMgdXNlIDkgZm9yIFRhYiAt
LSB3ZSBkb24ndCB3YW50IHRvIHVzZSBBcHBLaXQncyBkaWZmZXJlbnQgY2hhcmFjdGVyIGZvciBz
aGlmdC10YWIuCi0gICAgaWYgKG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlID09IFZLX1RBQikgewot
ICAgICAgICBtX3RleHQgPSAiXHg5IjsKLSAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9ICJceDki
OwotICAgIH0KLX0KLQogdm9pZCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmRpc2FtYmlndWF0ZUtl
eURvd25FdmVudChUeXBlIHR5cGUsIGJvb2wgYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSkKIHsK
ICAgICAvLyBDYW4gb25seSBjaGFuZ2UgdHlwZSBmcm9tIEtleURvd24gdG8gUmF3S2V5RG93biBv
ciBDaGFyLCBhcyB3ZSBsYWNrIGluZm9ybWF0aW9uIGZvciBvdGhlciBjb252ZXJzaW9ucy4KQEAg
LTI1Nyw2ICs3Niw2IEBAIHZvaWQgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpnZXRDdXJyZW50TW9k
aWZpZXJTdGF0ZShib29sJiBzaGlmdEtleSwgYm9vbCYgY3RybEtlCiAgICAgbWV0YUtleSA9IGN1
cnJlbnRNb2RpZmllcnMgJiA6OmNtZEtleTsKIH0KIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOGQyMjhkZjEzZDc1
NzRkMzE2NjUzN2FmNGUyOWE4YzdiYWIyZDY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5LmgKQEAgLTAsMCArMSw1NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgUGxhdGZvcm1FdmVudEZhY3RvcnlfaAorI2RlZmluZSBQ
bGF0Zm9ybUV2ZW50RmFjdG9yeV9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIK
KyNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUtleWJv
YXJkRXZlbnQuaCIKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCisjaW5jbHVkZSAiUGxhdGZv
cm1HZXN0dXJlRXZlbnQuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IFBsYXRmb3JtRXZlbnRGYWN0b3J5IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGxhdGZvcm1Nb3Vz
ZUV2ZW50IGNyZWF0ZVBsYXRmb3JtTW91c2VFdmVudChOU0V2ZW50ICosIE5TVmlldyAqd2luZG93
Vmlldyk7CisgICAgc3RhdGljIFBsYXRmb3JtV2hlZWxFdmVudCBjcmVhdGVQbGF0Zm9ybVdoZWVs
RXZlbnQoTlNFdmVudCAqLCBOU1ZpZXcgKndpbmRvd1ZpZXcpOworICAgIHN0YXRpYyBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQgY3JlYXRlUGxhdGZvcm1LZXlib2FyZEV2ZW50KE5TRXZlbnQgKik7Cisj
aWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorICAgIHN0YXRpYyBQbGF0Zm9ybUdlc3R1cmVFdmVu
dCBjcmVhdGVQbGF0Zm9ybUdlc3R1cmVFdmVudChOU0V2ZW50ICosIE5TVmlldyAqd2luZG93Vmll
dyk7CisjZW5kaWYKK307CisKKy8vIEZJWE1FOiBUaGlzIGRvZXNuJ3QgcmVhbGx5IGJlbG9uZyBo
ZXJlLgorCisjaWYgUExBVEZPUk0oTUFDKSAmJiBkZWZpbmVkKF9fT0JKQ19fKQorSW50UG9pbnQg
Z2xvYmFsUG9pbnQoY29uc3QgTlNQb2ludCYgd2luZG93UG9pbnQsIE5TV2luZG93ICopOworI2Vu
ZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFBsYXRmb3JtRXZlbnRG
YWN0b3J5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9y
bUV2ZW50RmFjdG9yeS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUV2
ZW50RmFjdG9yeS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNTZiMzg4NmVjMTZjYzM1NzM2MzQ1YmI0MTQ5ZmM5
MWNhZDVjNDAyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1BsYXRmb3JtRXZlbnRGYWN0b3J5Lm1tCkBAIC0wLDAgKzEsNTM0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtRXZlbnRGYWN0b3J5LmgiCisK
KyNpbXBvcnQgIktleUV2ZW50Q29jb2EuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQg
IlBsYXRmb3JtU2NyZWVuLmgiCisjaW1wb3J0ICJTY3JvbGxiYXIuaCIKKyNpbXBvcnQgIldlYkNv
cmVTeXN0ZW1JbnRlcmZhY2UuaCIKKyNpbXBvcnQgIldpbmRvd3NLZXlib2FyZENvZGVzLmgiCisj
aW1wb3J0IDx3dGYvQVNDSUlDVHlwZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0ludFBv
aW50IGdsb2JhbFBvaW50KGNvbnN0IE5TUG9pbnQmIHdpbmRvd1BvaW50LCBOU1dpbmRvdyAqd2lu
ZG93KQoreworICAgIHJldHVybiBJbnRQb2ludChmbGlwU2NyZWVuUG9pbnQoW3dpbmRvdyBjb252
ZXJ0QmFzZVRvU2NyZWVuOndpbmRvd1BvaW50XSwgc2NyZWVuRm9yV2luZG93KHdpbmRvdykpKTsK
K30KKworc3RhdGljIEludFBvaW50IGdsb2JhbFBvaW50Rm9yRXZlbnQoTlNFdmVudCAqZXZlbnQp
Cit7CisgICAgc3dpdGNoIChbZXZlbnQgdHlwZV0pIHsKKyAgICAgICAgY2FzZSBOU0xlZnRNb3Vz
ZURvd246CisgICAgICAgIGNhc2UgTlNMZWZ0TW91c2VEcmFnZ2VkOgorICAgICAgICBjYXNlIE5T
TGVmdE1vdXNlVXA6CisgICAgICAgIGNhc2UgTlNNb3VzZUVudGVyZWQ6CisgICAgICAgIGNhc2Ug
TlNNb3VzZUV4aXRlZDoKKyAgICAgICAgY2FzZSBOU01vdXNlTW92ZWQ6CisgICAgICAgIGNhc2Ug
TlNPdGhlck1vdXNlRG93bjoKKyAgICAgICAgY2FzZSBOU090aGVyTW91c2VEcmFnZ2VkOgorICAg
ICAgICBjYXNlIE5TT3RoZXJNb3VzZVVwOgorICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZURvd246
CisgICAgICAgIGNhc2UgTlNSaWdodE1vdXNlRHJhZ2dlZDoKKyAgICAgICAgY2FzZSBOU1JpZ2h0
TW91c2VVcDoKKyAgICAgICAgY2FzZSBOU1Njcm9sbFdoZWVsOgorICAgICAgICAgICAgcmV0dXJu
IGdsb2JhbFBvaW50KFtldmVudCBsb2NhdGlvbkluV2luZG93XSwgW2V2ZW50IHdpbmRvd10pOwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIEludFBvaW50KCk7CisgICAgfQor
fQorCitzdGF0aWMgSW50UG9pbnQgcG9pbnRGb3JFdmVudChOU0V2ZW50ICpldmVudCwgTlNWaWV3
ICp3aW5kb3dWaWV3KQoreworICAgIHN3aXRjaCAoW2V2ZW50IHR5cGVdKSB7CisgICAgICAgIGNh
c2UgTlNMZWZ0TW91c2VEb3duOgorICAgICAgICBjYXNlIE5TTGVmdE1vdXNlRHJhZ2dlZDoKKyAg
ICAgICAgY2FzZSBOU0xlZnRNb3VzZVVwOgorICAgICAgICBjYXNlIE5TTW91c2VFbnRlcmVkOgor
ICAgICAgICBjYXNlIE5TTW91c2VFeGl0ZWQ6CisgICAgICAgIGNhc2UgTlNNb3VzZU1vdmVkOgor
ICAgICAgICBjYXNlIE5TT3RoZXJNb3VzZURvd246CisgICAgICAgIGNhc2UgTlNPdGhlck1vdXNl
RHJhZ2dlZDoKKyAgICAgICAgY2FzZSBOU090aGVyTW91c2VVcDoKKyAgICAgICAgY2FzZSBOU1Jp
Z2h0TW91c2VEb3duOgorICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZURyYWdnZWQ6CisgICAgICAg
IGNhc2UgTlNSaWdodE1vdXNlVXA6CisgICAgICAgIGNhc2UgTlNTY3JvbGxXaGVlbDogeworICAg
ICAgICAgICAgLy8gTm90ZTogVGhpcyB3aWxsIGhhdmUgaXRzIG9yaWdpbiBhdCB0aGUgYm90dG9t
IGxlZnQgb2YgdGhlIHdpbmRvdyB1bmxlc3Mgd2luZG93VmlldyBpcyBmbGlwcGVkLgorICAgICAg
ICAgICAgLy8gSW4gdGhvc2UgY2FzZXMsIHRoZSBZIGNvb3JkaW5hdGUgZ2V0cyBmbGlwcGVkIGJ5
IFdpZGdldDo6Y29udmVydEZyb21Db250YWluaW5nV2luZG93LgorICAgICAgICAgICAgTlNQb2lu
dCBsb2NhdGlvbiA9IFtldmVudCBsb2NhdGlvbkluV2luZG93XTsKKyAgICAgICAgICAgIGlmICh3
aW5kb3dWaWV3KQorICAgICAgICAgICAgICAgIGxvY2F0aW9uID0gW3dpbmRvd1ZpZXcgY29udmVy
dFBvaW50OmxvY2F0aW9uIGZyb21WaWV3Om5pbF07CisgICAgICAgICAgICByZXR1cm4gSW50UG9p
bnQobG9jYXRpb24pOworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBy
ZXR1cm4gSW50UG9pbnQoKTsKKyAgICB9Cit9CisKK3N0YXRpYyBNb3VzZUJ1dHRvbiBtb3VzZUJ1
dHRvbkZvckV2ZW50KE5TRXZlbnQgKmV2ZW50KQoreworICAgIHN3aXRjaCAoW2V2ZW50IHR5cGVd
KSB7CisgICAgICAgIGNhc2UgTlNMZWZ0TW91c2VEb3duOgorICAgICAgICBjYXNlIE5TTGVmdE1v
dXNlVXA6CisgICAgICAgIGNhc2UgTlNMZWZ0TW91c2VEcmFnZ2VkOgorICAgICAgICAgICAgcmV0
dXJuIExlZnRCdXR0b247CisgICAgICAgIGNhc2UgTlNSaWdodE1vdXNlRG93bjoKKyAgICAgICAg
Y2FzZSBOU1JpZ2h0TW91c2VVcDoKKyAgICAgICAgY2FzZSBOU1JpZ2h0TW91c2VEcmFnZ2VkOgor
ICAgICAgICAgICAgcmV0dXJuIFJpZ2h0QnV0dG9uOworICAgICAgICBjYXNlIE5TT3RoZXJNb3Vz
ZURvd246CisgICAgICAgIGNhc2UgTlNPdGhlck1vdXNlVXA6CisgICAgICAgIGNhc2UgTlNPdGhl
ck1vdXNlRHJhZ2dlZDoKKyAgICAgICAgICAgIHJldHVybiBNaWRkbGVCdXR0b247CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gTm9CdXR0b247CisgICAgfQorfQorCitzdGF0
aWMgUGxhdGZvcm1FdmVudDo6VHlwZSBtb3VzZUV2ZW50VHlwZUZvckV2ZW50KE5TRXZlbnQqIGV2
ZW50KQoreworICAgIHN3aXRjaCAoW2V2ZW50IHR5cGVdKSB7CisgICAgICAgIGNhc2UgTlNMZWZ0
TW91c2VEcmFnZ2VkOgorICAgICAgICBjYXNlIE5TTW91c2VFbnRlcmVkOgorICAgICAgICBjYXNl
IE5TTW91c2VFeGl0ZWQ6CisgICAgICAgIGNhc2UgTlNNb3VzZU1vdmVkOgorICAgICAgICBjYXNl
IE5TT3RoZXJNb3VzZURyYWdnZWQ6CisgICAgICAgIGNhc2UgTlNSaWdodE1vdXNlRHJhZ2dlZDoK
KyAgICAgICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkOworICAgICAgICBj
YXNlIE5TTGVmdE1vdXNlRG93bjoKKyAgICAgICAgY2FzZSBOU1JpZ2h0TW91c2VEb3duOgorICAg
ICAgICBjYXNlIE5TT3RoZXJNb3VzZURvd246CisgICAgICAgICAgICByZXR1cm4gUGxhdGZvcm1F
dmVudDo6TW91c2VQcmVzc2VkOworICAgICAgICBjYXNlIE5TTGVmdE1vdXNlVXA6CisgICAgICAg
IGNhc2UgTlNSaWdodE1vdXNlVXA6CisgICAgICAgIGNhc2UgTlNPdGhlck1vdXNlVXA6CisgICAg
ICAgICAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6TW91c2VSZWxlYXNlZDsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkOworICAg
IH0KK30KKworc3RhdGljIGludCBjbGlja0NvdW50Rm9yRXZlbnQoTlNFdmVudCAqZXZlbnQpCit7
CisgICAgc3dpdGNoIChbZXZlbnQgdHlwZV0pIHsKKyAgICAgICAgY2FzZSBOU0xlZnRNb3VzZURv
d246CisgICAgICAgIGNhc2UgTlNMZWZ0TW91c2VVcDoKKyAgICAgICAgY2FzZSBOU0xlZnRNb3Vz
ZURyYWdnZWQ6CisgICAgICAgIGNhc2UgTlNSaWdodE1vdXNlRG93bjoKKyAgICAgICAgY2FzZSBO
U1JpZ2h0TW91c2VVcDoKKyAgICAgICAgY2FzZSBOU1JpZ2h0TW91c2VEcmFnZ2VkOgorICAgICAg
ICBjYXNlIE5TT3RoZXJNb3VzZURvd246CisgICAgICAgIGNhc2UgTlNPdGhlck1vdXNlVXA6Cisg
ICAgICAgIGNhc2UgTlNPdGhlck1vdXNlRHJhZ2dlZDoKKyAgICAgICAgICAgIHJldHVybiBbZXZl
bnQgY2xpY2tDb3VudF07CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICB9Cit9CisKK3N0YXRpYyBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSBtb21lbnR1bVBoYXNl
Rm9yRXZlbnQoTlNFdmVudCAqZXZlbnQpCit7CisgICAgdWludDMyX3QgcGhhc2UgPSBQbGF0Zm9y
bVdoZWVsRXZlbnRQaGFzZU5vbmU7CisKKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJE
KSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCisgICAgaWYgKFtldmVudCBt
b21lbnR1bVBoYXNlXSAmIE5TRXZlbnRQaGFzZUJlZ2FuKQorICAgICAgICBwaGFzZSB8PSBQbGF0
Zm9ybVdoZWVsRXZlbnRQaGFzZUJlZ2FuOworICAgIGlmIChbZXZlbnQgbW9tZW50dW1QaGFzZV0g
JiBOU0V2ZW50UGhhc2VTdGF0aW9uYXJ5KQorICAgICAgICBwaGFzZSB8PSBQbGF0Zm9ybVdoZWVs
RXZlbnRQaGFzZVN0YXRpb25hcnk7CisgICAgaWYgKFtldmVudCBtb21lbnR1bVBoYXNlXSAmIE5T
RXZlbnRQaGFzZUNoYW5nZWQpCisgICAgICAgIHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVudFBo
YXNlQ2hhbmdlZDsKKyAgICBpZiAoW2V2ZW50IG1vbWVudHVtUGhhc2VdICYgTlNFdmVudFBoYXNl
RW5kZWQpCisgICAgICAgIHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlRW5kZWQ7Cisg
ICAgaWYgKFtldmVudCBtb21lbnR1bVBoYXNlXSAmIE5TRXZlbnRQaGFzZUNhbmNlbGxlZCkKKyAg
ICAgICAgcGhhc2UgfD0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VDYW5jZWxsZWQ7CisjZWxzZQor
ICAgIHN3aXRjaCAod2tHZXROU0V2ZW50TW9tZW50dW1QaGFzZShldmVudCkpIHsKKyAgICBjYXNl
IHdrRXZlbnRQaGFzZU5vbmU6CisgICAgICAgIHBoYXNlID0gUGxhdGZvcm1XaGVlbEV2ZW50UGhh
c2VOb25lOworICAgICAgICBicmVhazsKKyAgICBjYXNlIHdrRXZlbnRQaGFzZUJlZ2FuOgorICAg
ICAgICBwaGFzZSA9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQmVnYW47CisgICAgICAgIGJyZWFr
OworICAgIGNhc2Ugd2tFdmVudFBoYXNlQ2hhbmdlZDoKKyAgICAgICAgcGhhc2UgPSBQbGF0Zm9y
bVdoZWVsRXZlbnRQaGFzZUNoYW5nZWQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ugd2tFdmVu
dFBoYXNlRW5kZWQ6CisgICAgICAgIHBoYXNlID0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VFbmRl
ZDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorI2VuZGlmCisKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U+KHBoYXNlKTsKK30KKworc3RhdGljIFBsYXRmb3Jt
V2hlZWxFdmVudFBoYXNlIHBoYXNlRm9yRXZlbnQoTlNFdmVudCAqZXZlbnQpCit7CisjaWYgIWRl
ZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19M
RU9QQVJEKQorICAgIHVpbnQzMl90IHBoYXNlID0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VOb25l
OyAKKyAgICBpZiAoW2V2ZW50IHBoYXNlXSAmIE5TRXZlbnRQaGFzZUJlZ2FuKQorICAgICAgICBw
aGFzZSB8PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUJlZ2FuOworICAgIGlmIChbZXZlbnQgcGhh
c2VdICYgTlNFdmVudFBoYXNlU3RhdGlvbmFyeSkKKyAgICAgICAgcGhhc2UgfD0gUGxhdGZvcm1X
aGVlbEV2ZW50UGhhc2VTdGF0aW9uYXJ5OworICAgIGlmIChbZXZlbnQgcGhhc2VdICYgTlNFdmVu
dFBoYXNlQ2hhbmdlZCkKKyAgICAgICAgcGhhc2UgfD0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VD
aGFuZ2VkOworICAgIGlmIChbZXZlbnQgcGhhc2VdICYgTlNFdmVudFBoYXNlRW5kZWQpCisgICAg
ICAgIHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlRW5kZWQ7CisgICAgaWYgKFtldmVu
dCBwaGFzZV0gJiBOU0V2ZW50UGhhc2VDYW5jZWxsZWQpCisgICAgICAgIHBoYXNlIHw9IFBsYXRm
b3JtV2hlZWxFdmVudFBoYXNlQ2FuY2VsbGVkOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxQbGF0
Zm9ybVdoZWVsRXZlbnRQaGFzZT4ocGhhc2UpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZXZl
bnQpOworICAgIHJldHVybiBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmU7CisjZW5kaWYKK30K
KworI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKK3N0YXRpYyBQbGF0Zm9ybUV2ZW50OjpUeXBl
IGdlc3R1cmVFdmVudFR5cGVGb3JFdmVudChOU0V2ZW50ICpldmVudCkKK3sKKyAgICBzd2l0Y2gg
KFtldmVudCB0eXBlXSkgeworICAgIGNhc2UgTlNFdmVudFR5cGVCZWdpbkdlc3R1cmU6CisgICAg
ICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW47CisgICAgY2FzZSBO
U0V2ZW50VHlwZUVuZEdlc3R1cmU6CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpHZXN0
dXJlU2Nyb2xsRW5kOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbEVuZDsKKyAgICB9
Cit9CisjZW5kaWYKKworc3RhdGljIGlubGluZSBTdHJpbmcgdGV4dEZyb21FdmVudChOU0V2ZW50
KiBldmVudCkKK3sKKyAgICBpZiAoW2V2ZW50IHR5cGVdID09IE5TRmxhZ3NDaGFuZ2VkKQorICAg
ICAgICByZXR1cm4gU3RyaW5nKCIiKTsKKyAgICByZXR1cm4gU3RyaW5nKFtldmVudCBjaGFyYWN0
ZXJzXSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgU3RyaW5nIHVubW9kaWZpZWRUZXh0RnJvbUV2ZW50
KE5TRXZlbnQqIGV2ZW50KQoreworICAgIGlmIChbZXZlbnQgdHlwZV0gPT0gTlNGbGFnc0NoYW5n
ZWQpCisgICAgICAgIHJldHVybiBTdHJpbmcoIiIpOworICAgIHJldHVybiBTdHJpbmcoW2V2ZW50
IGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyc10pOworfQorCitzdGF0aWMgU3RyaW5nIGtleUlk
ZW50aWZpZXJGb3JLZXlFdmVudChOU0V2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoW2V2ZW50IHR5
cGVdID09IE5TRmxhZ3NDaGFuZ2VkKSAKKyAgICAgICAgc3dpdGNoIChbZXZlbnQga2V5Q29kZV0p
IHsKKyAgICAgICAgICAgIGNhc2UgNTQ6IC8vIFJpZ2h0IENvbW1hbmQKKyAgICAgICAgICAgIGNh
c2UgNTU6IC8vIExlZnQgQ29tbWFuZAorICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoIk1l
dGEiKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgNTc6IC8vIENhcHNsb2Nr
CisgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZygiQ2Fwc0xvY2siKTsKKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGNhc2UgNTY6IC8vIExlZnQgU2hpZnQKKyAgICAgICAgICAgIGNh
c2UgNjA6IC8vIFJpZ2h0IFNoaWZ0CisgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZygiU2hp
ZnQiKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgNTg6IC8vIExlZnQgQWx0
CisgICAgICAgICAgICBjYXNlIDYxOiAvLyBSaWdodCBBbHQKKyAgICAgICAgICAgICAgICByZXR1
cm4gU3RyaW5nKCJBbHQiKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgNTk6
IC8vIExlZnQgQ3RybAorICAgICAgICAgICAgY2FzZSA2MjogLy8gUmlnaHQgQ3RybAorICAgICAg
ICAgICAgICAgIHJldHVybiBTdHJpbmcoIkNvbnRyb2wiKTsKKyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZygiIik7CisgICAgICAgIH0KKyAgICAKKyAg
ICBOU1N0cmluZyAqcyA9IFtldmVudCBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnNdOworICAg
IGlmIChbcyBsZW5ndGhdICE9IDEpIHsKKyAgICAgICAgTE9HKEV2ZW50cywgInJlY2VpdmVkIGFu
IHVuZXhwZWN0ZWQgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4ga2V5IGV2ZW50OiAldSIsIFtzIGxl
bmd0aF0pOworICAgICAgICByZXR1cm4gIlVuaWRlbnRpZmllZCI7CisgICAgfQorICAgIHJldHVy
biBrZXlJZGVudGlmaWVyRm9yQ2hhckNvZGUoW3MgY2hhcmFjdGVyQXRJbmRleDowXSk7Cit9CisK
K3N0YXRpYyBib29sIGlzS2V5cGFkRXZlbnQoTlNFdmVudCogZXZlbnQpCit7CisgICAgLy8gQ2hl
Y2sgdGhhdCB0aGlzIGlzIHRoZSB0eXBlIG9mIGV2ZW50IHRoYXQgaGFzIGEga2V5Q29kZS4KKyAg
ICBzd2l0Y2ggKFtldmVudCB0eXBlXSkgeworICAgICAgICBjYXNlIE5TS2V5RG93bjoKKyAgICAg
ICAgY2FzZSBOU0tleVVwOgorICAgICAgICBjYXNlIE5TRmxhZ3NDaGFuZ2VkOgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgaWYgKFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TTnVtZXJpY1BhZEtleU1h
c2spCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgc3dpdGNoIChbZXZlbnQga2V5Q29kZV0p
IHsKKyAgICAgICAgY2FzZSA3MTogLy8gQ2xlYXIKKyAgICAgICAgY2FzZSA4MTogLy8gPQorICAg
ICAgICBjYXNlIDc1OiAvLyAvCisgICAgICAgIGNhc2UgNjc6IC8vICoKKyAgICAgICAgY2FzZSA3
ODogLy8gLQorICAgICAgICBjYXNlIDY5OiAvLyArCisgICAgICAgIGNhc2UgNzY6IC8vIEVudGVy
CisgICAgICAgIGNhc2UgNjU6IC8vIC4KKyAgICAgICAgY2FzZSA4MjogLy8gMAorICAgICAgICBj
YXNlIDgzOiAvLyAxCisgICAgICAgIGNhc2UgODQ6IC8vIDIKKyAgICAgICAgY2FzZSA4NTogLy8g
MworICAgICAgICBjYXNlIDg2OiAvLyA0CisgICAgICAgIGNhc2UgODc6IC8vIDUKKyAgICAgICAg
Y2FzZSA4ODogLy8gNgorICAgICAgICBjYXNlIDg5OiAvLyA3CisgICAgICAgIGNhc2UgOTE6IC8v
IDgKKyAgICAgICAgY2FzZSA5MjogLy8gOQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
IH0KKyAgICAgCisgICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIGludCB3aW5kb3dzS2V5
Q29kZUZvcktleUV2ZW50KE5TRXZlbnQqIGV2ZW50KQoreworICAgIGludCBjb2RlID0gMDsKKyAg
ICAvLyBUaGVyZSBhcmUgc2V2ZXJhbCBraW5kcyBvZiBjaGFyYWN0ZXJzIGZvciB3aGljaCB3ZSBw
cm9kdWNlIGtleSBjb2RlIGZyb20gY2hhciBjb2RlOgorICAgIC8vIDEuIFJvbWFuIGxldHRlcnMu
IFdpbmRvd3Mga2V5Ym9hcmQgbGF5b3V0cyBhZmZlY3QgYm90aCB2aXJ0dWFsIGtleSBjb2RlcyBh
bmQgY2hhcmFjdGVyIGNvZGVzIGZvciB0aGVzZSwKKyAgICAvLyAgICBzbyBlLmcuICdBJyBnZXRz
IHRoZSBzYW1lIGtleUNvZGUgb24gUVdFUlRZLCBBWkVSVFkgb3IgRHZvcmFrIGxheW91dHMuCisg
ICAgLy8gMi4gS2V5cyBmb3Igd2hpY2ggdGhlcmUgaXMgbm8ga25vd24gTWFjIHZpcnR1YWwga2V5
IGNvZGVzLCBsaWtlIFByaW50U2NyZWVuLgorICAgIC8vIDMuIENlcnRhaW4gcHVuY3R1YXRpb24g
a2V5cy4gT24gV2luZG93cywgdGhlc2UgYXJlIGFsc28gcmVtYXBwZWQgZGVwZW5kaW5nIG9uIGN1
cnJlbnQga2V5Ym9hcmQgbGF5b3V0LAorICAgIC8vICAgIGJ1dCBzZWUgY29tbWVudCBpbiB3aW5k
b3dzS2V5Q29kZUZvckNoYXJDb2RlKCkuCisgICAgaWYgKFtldmVudCB0eXBlXSA9PSBOU0tleURv
d24gfHwgW2V2ZW50IHR5cGVdID09IE5TS2V5VXApIHsKKyAgICAgICAgLy8gQ21kIHN3aXRjaGVz
IFJvbWFuIGxldHRlcnMgZm9yIER2b3Jhay1RV0VSVFkgbGF5b3V0LCBzbyB0cnkgbW9kaWZpZWQg
Y2hhcmFjdGVycyBmaXJzdC4KKyAgICAgICAgTlNTdHJpbmcqIHMgPSBbZXZlbnQgY2hhcmFjdGVy
c107CisgICAgICAgIGNvZGUgPSBbcyBsZW5ndGhdID4gMCA/IHdpbmRvd3NLZXlDb2RlRm9yQ2hh
ckNvZGUoW3MgY2hhcmFjdGVyQXRJbmRleDowXSkgOiAwOworICAgICAgICBpZiAoY29kZSkKKyAg
ICAgICAgICAgIHJldHVybiBjb2RlOworCisgICAgICAgIC8vIEN0cmwrQSBvbiBhbiBBWkVSVFkg
a2V5Ym9hcmQgd291bGQgZ2V0IFZLX1Ega2V5Q29kZSBpZiB3ZSByZWxpZWQgb24gLVtOU0V2ZW50
IGtleUNvZGVdIGJlbG93LgorICAgICAgICBzID0gW2V2ZW50IGNoYXJhY3RlcnNJZ25vcmluZ01v
ZGlmaWVyc107CisgICAgICAgIGNvZGUgPSBbcyBsZW5ndGhdID4gMCA/IHdpbmRvd3NLZXlDb2Rl
Rm9yQ2hhckNvZGUoW3MgY2hhcmFjdGVyQXRJbmRleDowXSkgOiAwOworICAgICAgICBpZiAoY29k
ZSkKKyAgICAgICAgICAgIHJldHVybiBjb2RlOworICAgIH0KKworICAgIC8vIE1hcCBNYWMgdmly
dHVhbCBrZXkgY29kZSBkaXJlY3RseSB0byBXaW5kb3dzIG9uZSBmb3IgYW55IGtleXMgbm90IGhh
bmRsZWQgYWJvdmUuCisgICAgLy8gRS5nLiB0aGUga2V5IG5leHQgdG8gQ2FwcyBMb2NrIGhhcyB0
aGUgc2FtZSBFdmVudC5rZXlDb2RlIG9uIFUuUy4ga2V5Ym9hcmQgKCdBJykgYW5kIG9uIFJ1c3Np
YW4ga2V5Ym9hcmQgKENZUklMTElDIExFVFRFUiBFRikuCisgICAgcmV0dXJuIHdpbmRvd3NLZXlD
b2RlRm9yS2V5Q29kZShbZXZlbnQga2V5Q29kZV0pOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wg
aXNLZXlVcEV2ZW50KE5TRXZlbnQgKmV2ZW50KQoreworICAgIGlmIChbZXZlbnQgdHlwZV0gIT0g
TlNGbGFnc0NoYW5nZWQpCisgICAgICAgIHJldHVybiBbZXZlbnQgdHlwZV0gPT0gTlNLZXlVcDsK
KyAgICAvLyBGSVhNRTogVGhpcyBsb2dpYyBmYWlscyBpZiB0aGUgdXNlciBwcmVzc2VzIGJvdGgg
U2hpZnQga2V5cyBhdCBvbmNlLCBmb3IgZXhhbXBsZToKKyAgICAvLyB3ZSB0cmVhdCByZWxlYXNp
bmcgb25lIG9mIHRoZW0gYXMga2V5RG93bi4KKyAgICBzd2l0Y2ggKFtldmVudCBrZXlDb2RlXSkg
eworICAgICAgICBjYXNlIDU0OiAvLyBSaWdodCBDb21tYW5kCisgICAgICAgIGNhc2UgNTU6IC8v
IExlZnQgQ29tbWFuZAorICAgICAgICAgICAgcmV0dXJuIChbZXZlbnQgbW9kaWZpZXJGbGFnc10g
JiBOU0NvbW1hbmRLZXlNYXNrKSA9PSAwOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgNTc6
IC8vIENhcHNsb2NrCisgICAgICAgICAgICByZXR1cm4gKFtldmVudCBtb2RpZmllckZsYWdzXSAm
IE5TQWxwaGFTaGlmdEtleU1hc2spID09IDA7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSA1
NjogLy8gTGVmdCBTaGlmdAorICAgICAgICBjYXNlIDYwOiAvLyBSaWdodCBTaGlmdAorICAgICAg
ICAgICAgcmV0dXJuIChbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU1NoaWZ0S2V5TWFzaykgPT0g
MDsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIDU4OiAvLyBMZWZ0IEFsdAorICAgICAgICBj
YXNlIDYxOiAvLyBSaWdodCBBbHQKKyAgICAgICAgICAgIHJldHVybiAoW2V2ZW50IG1vZGlmaWVy
RmxhZ3NdICYgTlNBbHRlcm5hdGVLZXlNYXNrKSA9PSAwOworICAgICAgICAgICAgCisgICAgICAg
IGNhc2UgNTk6IC8vIExlZnQgQ3RybAorICAgICAgICBjYXNlIDYyOiAvLyBSaWdodCBDdHJsCisg
ICAgICAgICAgICByZXR1cm4gKFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQ29udHJvbEtleU1h
c2spID09IDA7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSA2MzogLy8gRnVuY3Rpb24KKyAg
ICAgICAgICAgIHJldHVybiAoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNGdW5jdGlvbktleU1h
c2spID09IDA7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIGlubGluZSBQ
bGF0Zm9ybUV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJzRm9yRXZlbnQoTlNFdmVudCAqZXZlbnQp
Cit7CisgICAgdW5zaWduZWQgbW9kaWZpZXJzID0gMDsKKyAgICBpZiAoW2V2ZW50IG1vZGlmaWVy
RmxhZ3NdICYgTlNTaGlmdEtleU1hc2spCisgICAgICAgIG1vZGlmaWVycyB8PSBQbGF0Zm9ybUV2
ZW50OjpTaGlmdEtleTsKKyAgICBpZiAoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb250cm9s
S2V5TWFzaykKKyAgICAgICAgbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6OkN0cmxLZXk7Cisg
ICAgaWYgKFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQWx0ZXJuYXRlS2V5TWFzaykKKyAgICAg
ICAgbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6OkFsdEtleTsKKyAgICBpZiAoW2V2ZW50IG1v
ZGlmaWVyRmxhZ3NdICYgTlNDb21tYW5kS2V5TWFzaykKKyAgICAgICAgbW9kaWZpZXJzIHw9IFBs
YXRmb3JtRXZlbnQ6Ok1ldGFLZXk7CisgICAgcmV0dXJuIChQbGF0Zm9ybUV2ZW50OjpNb2RpZmll
cnMpbW9kaWZpZXJzOworfQorCisKK2NsYXNzIFBsYXRmb3JtTW91c2VFdmVudEJ1aWxkZXIgOiBw
dWJsaWMgUGxhdGZvcm1Nb3VzZUV2ZW50IHsKK3B1YmxpYzoKKyAgICBQbGF0Zm9ybU1vdXNlRXZl
bnRCdWlsZGVyKE5TRXZlbnQgKmV2ZW50LCBOU1ZpZXcgKndpbmRvd1ZpZXcpCisgICAgeworICAg
ICAgICAvLyBQbGF0Zm9ybUV2ZW50CisgICAgICAgIG1fdHlwZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gbW91c2VFdmVudFR5cGVGb3JFdmVudChldmVudCk7CisgICAgICAgIG1fbW9k
aWZpZXJzICAgICAgICAgICAgICAgICAgICAgICAgID0gbW9kaWZpZXJzRm9yRXZlbnQoZXZlbnQp
OworICAgICAgICBtX3RpbWVzdGFtcCAgICAgICAgICAgICAgICAgICAgICAgICA9IFtldmVudCB0
aW1lc3RhbXBdOworCisgICAgICAgIC8vIFBsYXRmb3JtTW91c2VFdmVudAorICAgICAgICBtX3Bv
c2l0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICA9IHBvaW50Rm9yRXZlbnQoZXZlbnQsIHdp
bmRvd1ZpZXcpOworICAgICAgICBtX2dsb2JhbFBvc2l0aW9uICAgICAgICAgICAgICAgICAgICA9
IGdsb2JhbFBvaW50Rm9yRXZlbnQoZXZlbnQpOworICAgICAgICBtX2J1dHRvbiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IG1vdXNlQnV0dG9uRm9yRXZlbnQoZXZlbnQpOworICAgICAgICBt
X2NsaWNrQ291bnQgICAgICAgICAgICAgICAgICAgICAgICA9IGNsaWNrQ291bnRGb3JFdmVudChl
dmVudCk7CisgICAgICAgIAorICAgICAgICAvLyBNYWMgc3BlY2lmaWMKKyAgICAgICAgbV9tb2Rp
ZmllckZsYWdzICAgICAgICAgICAgICAgICAgICAgPSBbZXZlbnQgbW9kaWZpZXJGbGFnc107Cisg
ICAgICAgIG1fZXZlbnROdW1iZXIgICAgICAgICAgICAgICAgICAgICAgID0gW2V2ZW50IGV2ZW50
TnVtYmVyXTsKKyAgICB9Cit9OworCitQbGF0Zm9ybU1vdXNlRXZlbnQgUGxhdGZvcm1FdmVudEZh
Y3Rvcnk6OmNyZWF0ZVBsYXRmb3JtTW91c2VFdmVudChOU0V2ZW50ICpldmVudCwgTlNWaWV3ICp3
aW5kb3dWaWV3KQoreworICAgIHJldHVybiBQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyKGV2ZW50
LCB3aW5kb3dWaWV3KTsKK30KKworCitjbGFzcyBQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyIDog
cHVibGljIFBsYXRmb3JtV2hlZWxFdmVudCB7CitwdWJsaWM6CisgICAgUGxhdGZvcm1XaGVlbEV2
ZW50QnVpbGRlcihOU0V2ZW50ICpldmVudCwgTlNWaWV3ICp3aW5kb3dWaWV3KQorICAgIHsKKyAg
ICAgICAgLy8gUGxhdGZvcm1FdmVudAorICAgICAgICBtX3R5cGUgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IFBsYXRmb3JtRXZlbnQ6OldoZWVsOworICAgICAgICBtX21vZGlmaWVycyAg
ICAgICAgICAgICAgICAgICAgICAgICA9IG1vZGlmaWVyc0ZvckV2ZW50KGV2ZW50KTsKKyAgICAg
ICAgbV90aW1lc3RhbXAgICAgICAgICAgICAgICAgICAgICAgICAgPSBbZXZlbnQgdGltZXN0YW1w
XTsKKworICAgICAgICAvLyBQbGF0Zm9ybVdoZWVsRXZlbnQKKyAgICAgICAgbV9wb3NpdGlvbiAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBwb2ludEZvckV2ZW50KGV2ZW50LCB3aW5kb3dWaWV3
KTsKKyAgICAgICAgbV9nbG9iYWxQb3NpdGlvbiAgICAgICAgICAgICAgICAgICAgPSBnbG9iYWxQ
b2ludEZvckV2ZW50KGV2ZW50KTsKKyAgICAgICAgbV9ncmFudWxhcml0eSAgICAgICAgICAgICAg
ICAgICAgICAgPSBTY3JvbGxCeVBhZ2VXaGVlbEV2ZW50OworCisgICAgICAgIEJPT0wgY29udGlu
dW91czsKKyAgICAgICAgd2tHZXRXaGVlbEV2ZW50RGVsdGFzKGV2ZW50LCAmbV9kZWx0YVgsICZt
X2RlbHRhWSwgJmNvbnRpbnVvdXMpOworICAgICAgICBpZiAoY29udGludW91cykgeworICAgICAg
ICAgICAgbV93aGVlbFRpY2tzWCA9IG1fZGVsdGFYIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KFNjcm9s
bGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSk7CisgICAgICAgICAgICBtX3doZWVsVGlja3NZID0g
bV9kZWx0YVkgLyBzdGF0aWNfY2FzdDxmbG9hdD4oU2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3Rl
cCgpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fd2hlZWxUaWNrc1ggPSBtX2Rl
bHRhWDsKKyAgICAgICAgICAgIG1fd2hlZWxUaWNrc1kgPSBtX2RlbHRhWTsKKyAgICAgICAgICAg
IG1fZGVsdGFYICo9IHN0YXRpY19jYXN0PGZsb2F0PihTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVT
dGVwKCkpOworICAgICAgICAgICAgbV9kZWx0YVkgKj0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KFNjcm9s
bGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSk7CisgICAgICAgIH0KKworICAgICAgICBtX3BoYXNl
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IHBoYXNlRm9yRXZlbnQoZXZlbnQpOworICAg
ICAgICBtX21vbWVudHVtUGhhc2UgICAgICAgICAgICAgICAgICAgICA9IG1vbWVudHVtUGhhc2VG
b3JFdmVudChldmVudCk7CisgICAgICAgIG1faGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyAgICAg
ICAgID0gY29udGludW91czsKKworI2lmIEhBVkUoSU5WRVJURURfV0hFRUxfRVZFTlRTKQorICAg
ICAgICBtX2RpcmVjdGlvbkludmVydGVkRnJvbURldmljZSAgICAgICA9IFtldmVudCBpc0RpcmVj
dGlvbkludmVydGVkRnJvbURldmljZV07CisjZWxzZQorICAgICAgICBtX2RpcmVjdGlvbkludmVy
dGVkRnJvbURldmljZSAgICAgICA9IGZhbHNlOworI2VuZGlmCisgICAgfQorfTsKKworUGxhdGZv
cm1XaGVlbEV2ZW50IFBsYXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQbGF0Zm9ybVdoZWVsRXZl
bnQoTlNFdmVudCAqZXZlbnQsIE5TVmlldyAqd2luZG93VmlldykKK3sKKyAgICByZXR1cm4gUGxh
dGZvcm1XaGVlbEV2ZW50QnVpbGRlcihldmVudCwgd2luZG93Vmlldyk7Cit9CisKKworY2xhc3Mg
UGxhdGZvcm1LZXlib2FyZEV2ZW50QnVpbGRlciA6IHB1YmxpYyBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQgeworcHVibGljOgorICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudEJ1aWxkZXIoTlNFdmVudCAq
ZXZlbnQpCisgICAgeworICAgICAgICAvLyBQbGF0Zm9ybUV2ZW50CisgICAgICAgIG1fdHlwZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gaXNLZXlVcEV2ZW50KGV2ZW50KSA/IFBsYXRm
b3JtRXZlbnQ6OktleVVwIDogUGxhdGZvcm1FdmVudDo6S2V5RG93bjsKKyAgICAgICAgbV9tb2Rp
ZmllcnMgICAgICAgICAgICAgICAgICAgICAgICAgPSBtb2RpZmllcnNGb3JFdmVudChldmVudCk7
CisgICAgICAgIG1fdGltZXN0YW1wICAgICAgICAgICAgICAgICAgICAgICAgID0gW2V2ZW50IHRp
bWVzdGFtcF07CisKKyAgICAgICAgLy8gUGxhdGZvcm1LZXlib2FyZEV2ZW50CisgICAgICAgIG1f
dGV4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gdGV4dEZyb21FdmVudChldmVudCk7
CisgICAgICAgIG1fdW5tb2RpZmllZFRleHQgICAgICAgICAgICAgICAgICAgID0gdW5tb2RpZmll
ZFRleHRGcm9tRXZlbnQoZXZlbnQpOworICAgICAgICBtX2tleUlkZW50aWZpZXIgICAgICAgICAg
ICAgICAgICAgICA9IGtleUlkZW50aWZpZXJGb3JLZXlFdmVudChldmVudCk7CisgICAgICAgIG1f
d2luZG93c1ZpcnR1YWxLZXlDb2RlICAgICAgICAgICAgID0gd2luZG93c0tleUNvZGVGb3JLZXlF
dmVudChldmVudCk7CisgICAgICAgIG1fbmF0aXZlVmlydHVhbEtleUNvZGUgICAgICAgICAgICAg
ID0gW2V2ZW50IGtleUNvZGVdOworICAgICAgICBtX21hY0NoYXJDb2RlICAgICAgICAgICAgICAg
ICAgICAgICA9IHdrR2V0TlNFdmVudEtleUNoYXIoZXZlbnQpOworICAgICAgICBtX2F1dG9SZXBl
YXQgICAgICAgICAgICAgICAgICAgICAgICA9IChbZXZlbnQgdHlwZV0gIT0gTlNGbGFnc0NoYW5n
ZWQpICYmIFtldmVudCBpc0FSZXBlYXRdOworICAgICAgICBtX2lzS2V5cGFkICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IGlzS2V5cGFkRXZlbnQoZXZlbnQpOworICAgICAgICBtX2lzU3lzdGVt
S2V5ICAgICAgICAgICAgICAgICAgICAgICA9IGZhbHNlOyAvLyBTeXN0ZW1LZXkgaXMgYWx3YXlz
IGZhbHNlIG9uIHRoZSBNYWMuCisKKyAgICAgICAgLy8gQWx3YXlzIHVzZSAxMyBmb3IgRW50ZXIv
UmV0dXJuIC0tIHdlIGRvbid0IHdhbnQgdG8gdXNlIEFwcEtpdCdzIGRpZmZlcmVudCBjaGFyYWN0
ZXIgZm9yIEVudGVyLgorICAgICAgICBpZiAobV93aW5kb3dzVmlydHVhbEtleUNvZGUgPT0gVktf
UkVUVVJOKSB7CisgICAgICAgICAgICBtX3RleHQgPSAiXHIiOworICAgICAgICAgICAgbV91bm1v
ZGlmaWVkVGV4dCA9ICJcciI7CisgICAgICAgIH0KKworICAgICAgICAvLyBBcHBLaXQgc2V0cyB0
ZXh0IHRvICJceDdGIiBmb3IgYmFja3NwYWNlLCBidXQgdGhlIGNvcnJlY3QgS2V5Ym9hcmRFdmVu
dCBjaGFyYWN0ZXIgY29kZSBpcyA4LgorICAgICAgICBpZiAobV93aW5kb3dzVmlydHVhbEtleUNv
ZGUgPT0gVktfQkFDSykgeworICAgICAgICAgICAgbV90ZXh0ID0gIlx4OCI7CisgICAgICAgICAg
ICBtX3VubW9kaWZpZWRUZXh0ID0gIlx4OCI7CisgICAgICAgIH0KKworICAgICAgICAvLyBBbHdh
eXMgdXNlIDkgZm9yIFRhYiAtLSB3ZSBkb24ndCB3YW50IHRvIHVzZSBBcHBLaXQncyBkaWZmZXJl
bnQgY2hhcmFjdGVyIGZvciBzaGlmdC10YWIuCisgICAgICAgIGlmIChtX3dpbmRvd3NWaXJ0dWFs
S2V5Q29kZSA9PSBWS19UQUIpIHsKKyAgICAgICAgICAgIG1fdGV4dCA9ICJceDkiOworICAgICAg
ICAgICAgbV91bm1vZGlmaWVkVGV4dCA9ICJceDkiOworICAgICAgICB9CisKKyAgICAgICAgLy8g
TWFjIHNwZWNpZmljLgorICAgICAgICBtX21hY0V2ZW50ID0gZXZlbnQ7CisgICAgfQorfTsKKwor
UGxhdGZvcm1LZXlib2FyZEV2ZW50IFBsYXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQbGF0Zm9y
bUtleWJvYXJkRXZlbnQoTlNFdmVudCAqZXZlbnQpCit7CisgICAgcmV0dXJuIFBsYXRmb3JtS2V5
Ym9hcmRFdmVudEJ1aWxkZXIoZXZlbnQpOworfQorCisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRT
KQorY2xhc3MgUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyIDogcHVibGljIFBsYXRmb3JtR2Vz
dHVyZUV2ZW50IHsKK3B1YmxpYzoKKyAgICBQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXIoTlNF
dmVudCAqZXZlbnQsIE5TVmlldyAqd2luZG93VmlldykKKyAgICB7CisgICAgICAgIC8vIFBsYXRm
b3JtRXZlbnQKKyAgICAgICAgbV90eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBn
ZXN0dXJlRXZlbnRUeXBlRm9yRXZlbnQoZXZlbnQpOworICAgICAgICBtX21vZGlmaWVycyAgICAg
ICAgICAgICAgICAgICAgICAgICA9IG1vZGlmaWVyc0ZvckV2ZW50KGV2ZW50KTsKKyAgICAgICAg
bV90aW1lc3RhbXAgICAgICAgICAgICAgICAgICAgICAgICAgPSBbZXZlbnQgdGltZXN0YW1wXTsK
KworICAgICAgICAvLyBQbGF0Zm9ybUdlc3R1cmVFdmVudAorICAgICAgICBtX3Bvc2l0aW9uICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IHBvaW50Rm9yRXZlbnQoZXZlbnQsIHdpbmRvd1ZpZXcp
OworICAgICAgICBtX2dsb2JhbFBvc2l0aW9uICAgICAgICAgICAgICAgICAgICA9IGdsb2JhbFBv
aW50Rm9yRXZlbnQoZXZlbnQpOworICAgICAgICBtX2RlbHRhWCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IDA7CisgICAgICAgIG1fZGVsdGFZICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gMDsKKyAgICB9Cit9OworCitQbGF0Zm9ybUdlc3R1cmVFdmVudCBQbGF0Zm9ybUV2ZW50RmFj
dG9yeTo6Y3JlYXRlUGxhdGZvcm1HZXN0dXJlRXZlbnQoTlNFdmVudCAqZXZlbnQsIE5TVmlldyAq
d2luZG93VmlldykKK3sKKyAgICByZXR1cm4gUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyKGV2
ZW50LCB3aW5kb3dWaWV3KTsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1Nb3VzZUV2ZW50
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtTW91c2VFdmVudE1h
Yy5tbQppbmRleCBjNWY1OTg5MDEyYmY0OGE2ZjBmMzEyYWUzNmY3ZWMzMmU0MzNjZmJjLi41NzQ4
ZTdjNjk0YTY2MmIzYmEwYjY0ZDg3NTgwYzc2MDQyOWM3YmRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1Nb3VzZUV2ZW50TWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybU1vdXNlRXZlbnRNYWMubW0KQEAgLTEsMTY5
ICsxLDIgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYgQXBwbGUgQ29tcHV0ZXIs
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCiAKLSNpbXBvcnQgImNvbmZpZy5oIgot
I2ltcG9ydCAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCi0KLSNpbXBvcnQgIlBsYXRmb3JtU2NyZWVu
LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIE1vdXNlQnV0dG9uIG1vdXNlQnV0
dG9uRm9yRXZlbnQoTlNFdmVudCAqZXZlbnQpCi17Ci0gICAgc3dpdGNoIChbZXZlbnQgdHlwZV0p
IHsKLSAgICAgICAgY2FzZSBOU0xlZnRNb3VzZURvd246Ci0gICAgICAgIGNhc2UgTlNMZWZ0TW91
c2VVcDoKLSAgICAgICAgY2FzZSBOU0xlZnRNb3VzZURyYWdnZWQ6Ci0gICAgICAgICAgICByZXR1
cm4gTGVmdEJ1dHRvbjsKLSAgICAgICAgY2FzZSBOU1JpZ2h0TW91c2VEb3duOgotICAgICAgICBj
YXNlIE5TUmlnaHRNb3VzZVVwOgotICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZURyYWdnZWQ6Ci0g
ICAgICAgICAgICByZXR1cm4gUmlnaHRCdXR0b247Ci0gICAgICAgIGNhc2UgTlNPdGhlck1vdXNl
RG93bjoKLSAgICAgICAgY2FzZSBOU090aGVyTW91c2VVcDoKLSAgICAgICAgY2FzZSBOU090aGVy
TW91c2VEcmFnZ2VkOgotICAgICAgICAgICAgcmV0dXJuIE1pZGRsZUJ1dHRvbjsKLSAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBOb0J1dHRvbjsKLSAgICB9Ci19Ci0KLXN0YXRp
YyBpbnQgY2xpY2tDb3VudEZvckV2ZW50KE5TRXZlbnQgKmV2ZW50KQotewotICAgIHN3aXRjaCAo
W2V2ZW50IHR5cGVdKSB7Ci0gICAgICAgIGNhc2UgTlNMZWZ0TW91c2VEb3duOgotICAgICAgICBj
YXNlIE5TTGVmdE1vdXNlVXA6Ci0gICAgICAgIGNhc2UgTlNMZWZ0TW91c2VEcmFnZ2VkOgotICAg
ICAgICBjYXNlIE5TUmlnaHRNb3VzZURvd246Ci0gICAgICAgIGNhc2UgTlNSaWdodE1vdXNlVXA6
Ci0gICAgICAgIGNhc2UgTlNSaWdodE1vdXNlRHJhZ2dlZDoKLSAgICAgICAgY2FzZSBOU090aGVy
TW91c2VEb3duOgotICAgICAgICBjYXNlIE5TT3RoZXJNb3VzZVVwOgotICAgICAgICBjYXNlIE5T
T3RoZXJNb3VzZURyYWdnZWQ6Ci0gICAgICAgICAgICByZXR1cm4gW2V2ZW50IGNsaWNrQ291bnRd
OwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotfQotCi1J
bnRQb2ludCBnbG9iYWxQb2ludChjb25zdCBOU1BvaW50JiB3aW5kb3dQb2ludCwgTlNXaW5kb3cg
KndpbmRvdykKLXsKLSAgICByZXR1cm4gSW50UG9pbnQoZmxpcFNjcmVlblBvaW50KFt3aW5kb3cg
Y29udmVydEJhc2VUb1NjcmVlbjp3aW5kb3dQb2ludF0sIHNjcmVlbkZvcldpbmRvdyh3aW5kb3cp
KSk7Ci19Ci0KLUludFBvaW50IHBvaW50Rm9yRXZlbnQoTlNFdmVudCAqZXZlbnQsIE5TVmlldyAq
d2luZG93VmlldykKLXsKLSAgICBzd2l0Y2ggKFtldmVudCB0eXBlXSkgewotICAgICAgICBjYXNl
IE5TTGVmdE1vdXNlRG93bjoKLSAgICAgICAgY2FzZSBOU0xlZnRNb3VzZVVwOgotICAgICAgICBj
YXNlIE5TTGVmdE1vdXNlRHJhZ2dlZDoKLSAgICAgICAgY2FzZSBOU1JpZ2h0TW91c2VEb3duOgot
ICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZVVwOgotICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZURy
YWdnZWQ6Ci0gICAgICAgIGNhc2UgTlNPdGhlck1vdXNlRG93bjoKLSAgICAgICAgY2FzZSBOU090
aGVyTW91c2VVcDoKLSAgICAgICAgY2FzZSBOU090aGVyTW91c2VEcmFnZ2VkOgotICAgICAgICBj
YXNlIE5TTW91c2VNb3ZlZDoKLSAgICAgICAgY2FzZSBOU1Njcm9sbFdoZWVsOiB7Ci0gICAgICAg
ICAgICAvLyBOb3RlOiBUaGlzIHdpbGwgaGF2ZSBpdHMgb3JpZ2luIGF0IHRoZSBib3R0b20gbGVm
dCBvZiB0aGUgd2luZG93IHVubGVzcyB3aW5kb3dWaWV3IGlzIGZsaXBwZWQuCi0gICAgICAgICAg
ICAvLyBJbiB0aG9zZSBjYXNlcywgdGhlIFkgY29vcmRpbmF0ZSBnZXRzIGZsaXBwZWQgYnkgV2lk
Z2V0Ojpjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3cuCi0gICAgICAgICAgICBOU1BvaW50IGxv
Y2F0aW9uID0gW2V2ZW50IGxvY2F0aW9uSW5XaW5kb3ddOwotICAgICAgICAgICAgaWYgKHdpbmRv
d1ZpZXcpCi0gICAgICAgICAgICAgICAgbG9jYXRpb24gPSBbd2luZG93VmlldyBjb252ZXJ0UG9p
bnQ6bG9jYXRpb24gZnJvbVZpZXc6bmlsXTsKLSAgICAgICAgICAgIHJldHVybiBJbnRQb2ludChs
b2NhdGlvbik7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVy
biBJbnRQb2ludCgpOwotICAgIH0KLX0KLQotSW50UG9pbnQgZ2xvYmFsUG9pbnRGb3JFdmVudChO
U0V2ZW50ICpldmVudCkKLXsKLSAgICBzd2l0Y2ggKFtldmVudCB0eXBlXSkgewotICAgICAgICBj
YXNlIE5TTGVmdE1vdXNlRG93bjoKLSAgICAgICAgY2FzZSBOU0xlZnRNb3VzZVVwOgotICAgICAg
ICBjYXNlIE5TTGVmdE1vdXNlRHJhZ2dlZDoKLSAgICAgICAgY2FzZSBOU1JpZ2h0TW91c2VEb3du
OgotICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZVVwOgotICAgICAgICBjYXNlIE5TUmlnaHRNb3Vz
ZURyYWdnZWQ6Ci0gICAgICAgIGNhc2UgTlNPdGhlck1vdXNlRG93bjoKLSAgICAgICAgY2FzZSBO
U090aGVyTW91c2VVcDoKLSAgICAgICAgY2FzZSBOU090aGVyTW91c2VEcmFnZ2VkOgotICAgICAg
ICBjYXNlIE5TTW91c2VNb3ZlZDoKLSAgICAgICAgY2FzZSBOU1Njcm9sbFdoZWVsOgotICAgICAg
ICAgICAgcmV0dXJuIGdsb2JhbFBvaW50KFtldmVudCBsb2NhdGlvbkluV2luZG93XSwgW2V2ZW50
IHdpbmRvd10pOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIEludFBvaW50
KCk7Ci0gICAgfQotfQotCi1zdGF0aWMgUGxhdGZvcm1FdmVudDo6VHlwZSBtb3VzZUV2ZW50Rm9y
TlNFdmVudChOU0V2ZW50KiBldmVudCkgCi17Ci0gICAgc3dpdGNoIChbZXZlbnQgdHlwZV0pIHsK
LSAgICBjYXNlIE5TU2Nyb2xsV2hlZWw6Ci0gICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpN
b3VzZVNjcm9sbDsKLSAgICBjYXNlIE5TTGVmdE1vdXNlRHJhZ2dlZDoKLSAgICBjYXNlIE5TUmln
aHRNb3VzZURyYWdnZWQ6Ci0gICAgY2FzZSBOU090aGVyTW91c2VEcmFnZ2VkOgotICAgIGNhc2Ug
TlNNb3VzZU1vdmVkOgotICAgICAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZDsK
LSAgICBjYXNlIE5TTGVmdE1vdXNlRG93bjoKLSAgICBjYXNlIE5TUmlnaHRNb3VzZURvd246Ci0g
ICAgY2FzZSBOU090aGVyTW91c2VEb3duOgotICAgICAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6
TW91c2VQcmVzc2VkOwotICAgIGNhc2UgTlNMZWZ0TW91c2VVcDoKLSAgICBjYXNlIE5TUmlnaHRN
b3VzZVVwOgotICAgIGNhc2UgTlNPdGhlck1vdXNlVXA6Ci0gICAgICAgIHJldHVybiBQbGF0Zm9y
bUV2ZW50OjpNb3VzZVJlbGVhc2VkOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBQbGF0
Zm9ybUV2ZW50OjpNb3VzZU1vdmVkOwotICAgIH0KLX0KLQotUGxhdGZvcm1Nb3VzZUV2ZW50OjpQ
bGF0Zm9ybU1vdXNlRXZlbnQoTlNFdmVudCogZXZlbnQsIE5TVmlldyAqd2luZG93VmlldykKLSAg
ICA6IFBsYXRmb3JtRXZlbnQobW91c2VFdmVudEZvck5TRXZlbnQoZXZlbnQpLCBbZXZlbnQgbW9k
aWZpZXJGbGFnc10gJiBOU1NoaWZ0S2V5TWFzaywgW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlND
b250cm9sS2V5TWFzaywgW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNBbHRlcm5hdGVLZXlNYXNr
LCBbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0NvbW1hbmRLZXlNYXNrLCBbZXZlbnQgdGltZXN0
YW1wXSkKLSAgICAsIG1fcG9zaXRpb24ocG9pbnRGb3JFdmVudChldmVudCwgd2luZG93Vmlldykp
Ci0gICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvaW50Rm9yRXZlbnQoZXZlbnQpKQotICAg
ICwgbV9idXR0b24obW91c2VCdXR0b25Gb3JFdmVudChldmVudCkpCi0gICAgLCBtX2NsaWNrQ291
bnQoY2xpY2tDb3VudEZvckV2ZW50KGV2ZW50KSkKLSAgICAsIG1fbW9kaWZpZXJGbGFncyhbZXZl
bnQgbW9kaWZpZXJGbGFnc10pCi0gICAgLCBtX2V2ZW50TnVtYmVyKFtldmVudCBldmVudE51bWJl
cl0pCi17Ci19Ci0KLVBsYXRmb3JtTW91c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KGludCB4
LCBpbnQgeSwgaW50IGdsb2JhbFgsIGludCBnbG9iYWxZLCBNb3VzZUJ1dHRvbiBidXR0b24sIFBs
YXRmb3JtRXZlbnQ6OlR5cGUgdHlwZSwKLSAgICAgICAgICAgICAgICAgICBpbnQgY2xpY2tDb3Vu
dCwgYm9vbCBzaGlmdEtleSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBtZXRhS2V5
LCBkb3VibGUgdGltZXN0YW1wLAotICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG1vZGlmaWVy
RmxhZ3MsIGludCBldmVudE51bWJlcikKLSAgICA6IFBsYXRmb3JtRXZlbnQodHlwZSwgc2hpZnRL
ZXksIGN0cmxLZXksIGFsdEtleSwgbWV0YUtleSwgdGltZXN0YW1wKQotICAgICwgbV9wb3NpdGlv
bihJbnRQb2ludCh4LCB5KSkKLSAgICAsIG1fZ2xvYmFsUG9zaXRpb24oSW50UG9pbnQoZ2xvYmFs
WCwgZ2xvYmFsWSkpCi0gICAgLCBtX2J1dHRvbihidXR0b24pCi0gICAgLCBtX2NsaWNrQ291bnQo
Y2xpY2tDb3VudCkKLSAgICAsIG1fbW9kaWZpZXJGbGFncyhtb2RpZmllckZsYWdzKQotICAgICwg
bV9ldmVudE51bWJlcihldmVudE51bWJlcikKLXsKLX0KLQotfQorLy8gUkVNT1ZFIFRISVMgRklM
RQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1J
bnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50
ZXJmYWNlLmgKaW5kZXggMTc2NGI3OWY2OTI1MGJkZDlmYTBkMDJmNjA4MDg0NGM1ODViNmY3NS4u
YmViMzZjYTA2ZGQzOGI1MDdhMDYwYzgwNGZlY2YzYmUzMzBjYWEwYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCkBAIC0x
NzIsNiArMTcyLDcgQEAgZXh0ZXJuIGRvdWJsZSAoKndrR2V0TlNVUkxSZXNwb25zZUNhbGN1bGF0
ZWRFeHBpcmF0aW9uKShOU1VSTFJlc3BvbnNlICpyZXNwb25zZSkKIGV4dGVybiBOU0RhdGUgKigq
d2tHZXROU1VSTFJlc3BvbnNlTGFzdE1vZGlmaWVkRGF0ZSkoTlNVUkxSZXNwb25zZSAqcmVzcG9u
c2UpOwogZXh0ZXJuIEJPT0wgKCp3a0dldE5TVVJMUmVzcG9uc2VNdXN0UmV2YWxpZGF0ZSkoTlNV
UkxSZXNwb25zZSAqcmVzcG9uc2UpOwogZXh0ZXJuIHZvaWQgKCp3a0dldFdoZWVsRXZlbnREZWx0
YXMpKE5TRXZlbnQqLCBmbG9hdCogZGVsdGFYLCBmbG9hdCogZGVsdGFZLCBCT09MKiBjb250aW51
b3VzKTsKK2V4dGVybiBVSW50OCAoKndrR2V0TlNFdmVudEtleUNoYXIpKE5TRXZlbnQgKik7CiBl
eHRlcm4gQk9PTCAoKndrSGl0VGVzdE1lZGlhVUlQYXJ0KShpbnQgcGFydCwgaW50IHRoZW1lU3R5
bGUsIENHUmVjdCBib3VuZHMsIENHUG9pbnQgcG9pbnQpOwogZXh0ZXJuIHZvaWQgKCp3a01lYXN1
cmVNZWRpYVVJUGFydCkoaW50IHBhcnQsIGludCB0aGVtZVN0eWxlLCBDR1JlY3QgKmJvdW5kcywg
Q0dTaXplICpuYXR1cmFsU2l6ZSk7CiBleHRlcm4gTlNWaWV3ICooKndrQ3JlYXRlTWVkaWFVSUJh
Y2tncm91bmRWaWV3KSh2b2lkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggY2RhMDk1YmVkNDdmZmNjYTE0ZjFi
MTI1ZWUzYmU0OTA1ZjE4YzZhYy4uYjRjYTU0MDdkZDVhMDViYmNkNTgwMmRkZDdhZTExMDNmMzBj
MDU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVT
eXN0ZW1JbnRlcmZhY2UubW0KQEAgLTYwLDYgKzYwLDcgQEAgTlNUaW1lSW50ZXJ2YWwgKCp3a0dl
dE5TVVJMUmVzcG9uc2VDYWxjdWxhdGVkRXhwaXJhdGlvbikoTlNVUkxSZXNwb25zZSAqcmVzcG9u
c2UKIE5TRGF0ZSAqKCp3a0dldE5TVVJMUmVzcG9uc2VMYXN0TW9kaWZpZWREYXRlKShOU1VSTFJl
c3BvbnNlICpyZXNwb25zZSk7CiBCT09MICgqd2tHZXROU1VSTFJlc3BvbnNlTXVzdFJldmFsaWRh
dGUpKE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlKTsKIHZvaWQgKCp3a0dldFdoZWVsRXZlbnREZWx0
YXMpKE5TRXZlbnQqLCBmbG9hdCogZGVsdGFYLCBmbG9hdCogZGVsdGFZLCBCT09MKiBjb250aW51
b3VzKTsKK1VJbnQ4ICgqd2tHZXROU0V2ZW50S2V5Q2hhcikoTlNFdmVudCAqKTsKIHZvaWQgKCp3
a1BvcHVwTWVudSkoTlNNZW51KiwgTlNQb2ludCBsb2NhdGlvbiwgZmxvYXQgd2lkdGgsIE5TVmll
dyosIGludCBzZWxlY3RlZEl0ZW0sIE5TRm9udCopOwogdW5zaWduZWQgKCp3a1FUSW5jbHVkZU9u
bHlNb2Rlcm5NZWRpYUZpbGVUeXBlcykodm9pZCk7CiBpbnQgKCp3a1FUTW92aWVEYXRhUmF0ZSko
UVRNb3ZpZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1doZWVs
RXZlbnRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2hlZWxFdmVudE1hYy5t
bQppbmRleCA4OWM5ZmI3N2U5OTM5YTkxNDA5MjhmNjcwNzFmZGI2MWY2NTRjZDI4Li41NzQ4ZTdj
Njk0YTY2MmIzYmEwYjY0ZDg3NTgwYzc2MDQyOWM3YmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvV2hlZWxFdmVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvV2hlZWxFdmVudE1hYy5tbQpAQCAtMSwxMjEgKzEsMiBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNiwgMjAxMCwgMjAxMSBBcHBsZSBDb21wdXRlciwgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KIAotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0
ICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKLQotI2ltcG9ydCAiUGxhdGZvcm1Nb3VzZUV2ZW50Lmgi
Ci0jaW1wb3J0ICJTY3JvbGxiYXIuaCIKLSNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uu
aCIKLSNpbXBvcnQgPHd0Zi9VbnVzZWRQYXJhbS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LXN0YXRpYyBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSBtb21lbnR1bVBoYXNlRm9yRXZlbnQoTlNF
dmVudCAqZXZlbnQpCi17Ci0gICAgdWludDMyX3QgcGhhc2UgPSBQbGF0Zm9ybVdoZWVsRXZlbnRQ
aGFzZU5vbmU7Ci0KLSNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5l
ZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCi0gICAgaWYgKFtldmVudCBtb21lbnR1bVBoYXNl
XSAmIE5TRXZlbnRQaGFzZUJlZ2FuKQotICAgICAgICBwaGFzZSB8PSBQbGF0Zm9ybVdoZWVsRXZl
bnRQaGFzZUJlZ2FuOwotICAgIGlmIChbZXZlbnQgbW9tZW50dW1QaGFzZV0gJiBOU0V2ZW50UGhh
c2VTdGF0aW9uYXJ5KQotICAgICAgICBwaGFzZSB8PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZVN0
YXRpb25hcnk7Ci0gICAgaWYgKFtldmVudCBtb21lbnR1bVBoYXNlXSAmIE5TRXZlbnRQaGFzZUNo
YW5nZWQpCi0gICAgICAgIHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQ2hhbmdlZDsK
LSAgICBpZiAoW2V2ZW50IG1vbWVudHVtUGhhc2VdICYgTlNFdmVudFBoYXNlRW5kZWQpCi0gICAg
ICAgIHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlRW5kZWQ7Ci0gICAgaWYgKFtldmVu
dCBtb21lbnR1bVBoYXNlXSAmIE5TRXZlbnRQaGFzZUNhbmNlbGxlZCkKLSAgICAgICAgcGhhc2Ug
fD0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VDYW5jZWxsZWQ7Ci0jZWxzZQotICAgIHN3aXRjaCAo
d2tHZXROU0V2ZW50TW9tZW50dW1QaGFzZShldmVudCkpIHsKLSAgICBjYXNlIHdrRXZlbnRQaGFz
ZU5vbmU6Ci0gICAgICAgIHBoYXNlID0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VOb25lOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIHdrRXZlbnRQaGFzZUJlZ2FuOgotICAgICAgICBwaGFzZSA9
IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQmVnYW47Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
d2tFdmVudFBoYXNlQ2hhbmdlZDoKLSAgICAgICAgcGhhc2UgPSBQbGF0Zm9ybVdoZWVsRXZlbnRQ
aGFzZUNoYW5nZWQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ugd2tFdmVudFBoYXNlRW5kZWQ6
Ci0gICAgICAgIHBoYXNlID0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VFbmRlZDsKLSAgICAgICAg
YnJlYWs7Ci0gICAgfQotI2VuZGlmCi0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UGxhdGZvcm1X
aGVlbEV2ZW50UGhhc2U+KHBoYXNlKTsKLX0KLQotc3RhdGljIFBsYXRmb3JtV2hlZWxFdmVudFBo
YXNlIHBoYXNlRm9yRXZlbnQoTlNFdmVudCAqZXZlbnQpCi17Ci0jaWYgIWRlZmluZWQoQlVJTERJ
TkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQotICAg
IHVpbnQzMl90IHBoYXNlID0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VOb25lOyAKLSAgICBpZiAo
W2V2ZW50IHBoYXNlXSAmIE5TRXZlbnRQaGFzZUJlZ2FuKQotICAgICAgICBwaGFzZSB8PSBQbGF0
Zm9ybVdoZWVsRXZlbnRQaGFzZUJlZ2FuOwotICAgIGlmIChbZXZlbnQgcGhhc2VdICYgTlNFdmVu
dFBoYXNlU3RhdGlvbmFyeSkKLSAgICAgICAgcGhhc2UgfD0gUGxhdGZvcm1XaGVlbEV2ZW50UGhh
c2VTdGF0aW9uYXJ5OwotICAgIGlmIChbZXZlbnQgcGhhc2VdICYgTlNFdmVudFBoYXNlQ2hhbmdl
ZCkKLSAgICAgICAgcGhhc2UgfD0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VDaGFuZ2VkOwotICAg
IGlmIChbZXZlbnQgcGhhc2VdICYgTlNFdmVudFBoYXNlRW5kZWQpCi0gICAgICAgIHBoYXNlIHw9
IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlRW5kZWQ7Ci0gICAgaWYgKFtldmVudCBwaGFzZV0gJiBO
U0V2ZW50UGhhc2VDYW5jZWxsZWQpCi0gICAgICAgIHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVu
dFBoYXNlQ2FuY2VsbGVkOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxQbGF0Zm9ybVdoZWVsRXZl
bnRQaGFzZT4ocGhhc2UpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZXZlbnQpOwotICAgIHJl
dHVybiBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmU7Ci0jZW5kaWYKLX0KLQotUGxhdGZvcm1X
aGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQoTlNFdmVudCogZXZlbnQsIE5TVmlldyAqd2lu
ZG93VmlldykKLSAgICA6IFBsYXRmb3JtRXZlbnQoUGxhdGZvcm1FdmVudDo6V2hlZWwsIFtldmVu
dCBtb2RpZmllckZsYWdzXSAmIE5TU2hpZnRLZXlNYXNrLCBbZXZlbnQgbW9kaWZpZXJGbGFnc10g
JiBOU0NvbnRyb2xLZXlNYXNrLCBbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0FsdGVybmF0ZUtl
eU1hc2ssIFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQ29tbWFuZEtleU1hc2ssIFtldmVudCB0
aW1lc3RhbXBdKQotICAgICwgbV9wb3NpdGlvbihwb2ludEZvckV2ZW50KGV2ZW50LCB3aW5kb3dW
aWV3KSkKLSAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9pbnRGb3JFdmVudChldmVudCkp
Ci0gICAgLCBtX2dyYW51bGFyaXR5KFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50KQotICAgICwgbV9w
aGFzZShwaGFzZUZvckV2ZW50KGV2ZW50KSkKLSAgICAsIG1fbW9tZW50dW1QaGFzZShtb21lbnR1
bVBoYXNlRm9yRXZlbnQoZXZlbnQpKQotewotICAgIEJPT0wgY29udGludW91czsKLSAgICB3a0dl
dFdoZWVsRXZlbnREZWx0YXMoZXZlbnQsICZtX2RlbHRhWCwgJm1fZGVsdGFZLCAmY29udGludW91
cyk7Ci0gICAgaWYgKGNvbnRpbnVvdXMpIHsKLSAgICAgICAgbV93aGVlbFRpY2tzWCA9IG1fZGVs
dGFYIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSk7
Ci0gICAgICAgIG1fd2hlZWxUaWNrc1kgPSBtX2RlbHRhWSAvIHN0YXRpY19jYXN0PGZsb2F0PihT
Y3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCkpOwotICAgICAgICBtX2hhc1ByZWNpc2VTY3Jv
bGxpbmdEZWx0YXMgPSB0cnVlOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fd2hlZWxUaWNrc1gg
PSBtX2RlbHRhWDsKLSAgICAgICAgbV93aGVlbFRpY2tzWSA9IG1fZGVsdGFZOwotICAgICAgICBt
X2RlbHRhWCAqPSBzdGF0aWNfY2FzdDxmbG9hdD4oU2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3Rl
cCgpKTsKLSAgICAgICAgbV9kZWx0YVkgKj0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KFNjcm9sbGJhcjo6
cGl4ZWxzUGVyTGluZVN0ZXAoKSk7Ci0gICAgICAgIG1faGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRh
cyA9IGZhbHNlOwotICAgIH0KLQotI2lmIEhBVkUoSU5WRVJURURfV0hFRUxfRVZFTlRTKQotICAg
IG1fZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlID0gW2V2ZW50IGlzRGlyZWN0aW9uSW52ZXJ0
ZWRGcm9tRGV2aWNlXTsKLSNlbHNlCi0gICAgbV9kaXJlY3Rpb25JbnZlcnRlZEZyb21EZXZpY2Ug
PSBmYWxzZTsKLSNlbmRpZgotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisvLyBSRU1PVkUg
VEhJUyBGSUxFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QbGF0Zm9y
bUtleWJvYXJkRXZlbnRRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QbGF0Zm9y
bUtleWJvYXJkRXZlbnRRdC5jcHAKaW5kZXggMzhmZThkNjdkMjY1N2Y5MWJkMmJhYmZjZTNjYTVk
ZmVkYmYyYjZkZi4uNjJkOGEyNDgyYjk5OGFhZjdlODMwNzY2NWIyNDAxMDZmMjdiYmQ3MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZvcm1LZXlib2FyZEV2ZW50
UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3JtS2V5Ym9hcmRF
dmVudFF0LmNwcApAQCAtNTk4LDE3ICs1OTgsMjYgQEAgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQoUUtleUV2ZW50KiBldmVudCkKIHsKICAgICBjb25zdCBpbnQg
c3RhdGUgPSBldmVudC0+bW9kaWZpZXJzKCk7CiAgICAgbV90eXBlID0gKGV2ZW50LT50eXBlKCkg
PT0gUUV2ZW50OjpLZXlSZWxlYXNlKSA/IFBsYXRmb3JtRXZlbnQ6OktleVVwIDogUGxhdGZvcm1F
dmVudDo6S2V5RG93bjsKKworICAgIG1fbW9kaWZpZXJzID0gMDsKKyAgICBpZiAoKHN0YXRlICYg
UXQ6OlNoaWZ0TW9kaWZpZXIpIHx8IGV2ZW50LT5rZXkoKSA9PSBRdDo6S2V5X0JhY2t0YWIpIC8v
IFNpbXVsYXRlIFNoaWZ0K1RhYiB3aXRoIEtleV9CYWNrdGFiCisgICAgICAgIG1fbW9kaWZpZXJz
IHw9IFNoaWZ0S2V5OworICAgIGlmIChzdGF0ZSAmIFF0OjpDb250cm9sTW9kaWZpZXIpCisgICAg
ICAgIG1fbW9kaWZpZXJzIHw9IEN0cmxLZXk7CisgICAgaWYgKHN0YXRlICYgUXQ6OkFsdE1vZGlm
aWVyKQorICAgICAgICBtX21vZGlmaWVycyB8PSBBbHRLZXk7CisgICAgaWYgKHN0YXRlICYgUXQ6
Ok1ldGFNb2RpZmllcikKKyAgICAgICAgbV9tb2RpZmllcnMgfD0gTWV0YUtleTsKKwogICAgIG1f
dGV4dCA9IGtleVRleHRGb3JLZXlFdmVudChldmVudCk7CiAgICAgbV91bm1vZGlmaWVkVGV4dCA9
IG1fdGV4dDsgLy8gRklYTUU6IG5vdCBjb3JyZWN0CiAgICAgbV9rZXlJZGVudGlmaWVyID0ga2V5
SWRlbnRpZmllckZvclF0S2V5Q29kZShldmVudC0+a2V5KCkpOwogICAgIG1fYXV0b1JlcGVhdCA9
IGV2ZW50LT5pc0F1dG9SZXBlYXQoKTsKLSAgICBtX2N0cmxLZXkgPSAoc3RhdGUgJiBRdDo6Q29u
dHJvbE1vZGlmaWVyKTsKLSAgICBtX2FsdEtleSA9IChzdGF0ZSAmIFF0OjpBbHRNb2RpZmllcik7
Ci0gICAgbV9tZXRhS2V5ID0gKHN0YXRlICYgUXQ6Ok1ldGFNb2RpZmllcik7CiAgICAgbV9pc0tl
eXBhZCA9IChzdGF0ZSAmIFF0OjpLZXlwYWRNb2RpZmllcik7CisgICAgbV9pc1N5c3RlbUtleSA9
IGZhbHNlOwogICAgIG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlID0gd2luZG93c0tleUNvZGVGb3JL
ZXlFdmVudChldmVudC0+a2V5KCksIG1faXNLZXlwYWQpOwogICAgIG1fbmF0aXZlVmlydHVhbEtl
eUNvZGUgPSBldmVudC0+bmF0aXZlVmlydHVhbEtleSgpOwotICAgIG1fc2hpZnRLZXkgPSAoc3Rh
dGUgJiBRdDo6U2hpZnRNb2RpZmllcikgfHwgZXZlbnQtPmtleSgpID09IFF0OjpLZXlfQmFja3Rh
YjsgLy8gU2ltdWxhdGUgU2hpZnQrVGFiIHdpdGggS2V5X0JhY2t0YWIKKyAgICBtX21hY0NoYXJD
b2RlID0gMDsKICAgICBtX3F0RXZlbnQgPSBldmVudDsKICAgICBtX3RpbWVzdGFtcCA9IFdURjo6
Y3VycmVudFRpbWUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0
L1BsYXRmb3JtTW91c2VFdmVudFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Bs
YXRmb3JtTW91c2VFdmVudFF0LmNwcAppbmRleCA5MDlkMjJjYjJmOTdlYzNiMjU4MDQyMzBjZDNh
MmRjZDUyZGMzZTdkLi4xYmQwZDk0ODBlZjQzMzYwMWQxZTQzN2Y3MWNkMGJlYTRkMjI4Y2Y5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QbGF0Zm9ybU1vdXNlRXZlbnRR
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZvcm1Nb3VzZUV2ZW50
UXQuY3BwCkBAIC0zNSwxMiArMzUsMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0
aWMgdm9pZCBtb3VzZUV2ZW50TW9kaWZpZXJzRnJvbVF0S2V5Ym9hcmRNb2RpZmllcnMoUXQ6Oktl
eWJvYXJkTW9kaWZpZXJzIGtleWJvYXJkTW9kaWZpZXJzLCBib29sJiBhbHRLZXksIGJvb2wmIGN0
cmxLZXksIGJvb2wmIG1ldGFLZXksIGJvb2wmIHNoaWZ0S2V5KQorc3RhdGljIHZvaWQgbW91c2VF
dmVudE1vZGlmaWVyc0Zyb21RdEtleWJvYXJkTW9kaWZpZXJzKFF0OjpLZXlib2FyZE1vZGlmaWVy
cyBrZXlib2FyZE1vZGlmaWVycywgdW5zaWduZWQmIG1vZGlmaWVycykKIHsKLSAgICBhbHRLZXkg
PSBrZXlib2FyZE1vZGlmaWVycyAmIFF0OjpBbHRNb2RpZmllcjsKLSAgICBjdHJsS2V5ID0ga2V5
Ym9hcmRNb2RpZmllcnMgJiBRdDo6Q29udHJvbE1vZGlmaWVyOwotICAgIG1ldGFLZXkgPSBrZXli
b2FyZE1vZGlmaWVycyAmIFF0OjpNZXRhTW9kaWZpZXI7Ci0gICAgc2hpZnRLZXkgPSBrZXlib2Fy
ZE1vZGlmaWVycyAmIFF0OjpTaGlmdE1vZGlmaWVyOworICAgIG1vZGlmaWVycyA9IDA7CisgICAg
aWYgKGtleWJvYXJkTW9kaWZpZXJzICYgUXQ6OlNoaWZ0TW9kaWZpZXIpCisgICAgICAgIG1vZGlm
aWVycyB8PSBTaGlmdEtleTsKKyAgICBpZiAoa2V5Ym9hcmRNb2RpZmllcnMgJiBRdDo6Q29udHJv
bE1vZGlmaWVyKQorICAgICAgICBtb2RpZmllcnMgfD0gQ3RybEtleTsKKyAgICBpZiAoa2V5Ym9h
cmRNb2RpZmllcnMgJiBRdDo6QWx0TW9kaWZpZXIpCisgICAgICAgIG1vZGlmaWVycyB8PSBBbHRL
ZXk7CisgICAgaWYgKGtleWJvYXJkTW9kaWZpZXJzICYgUXQ6Ok1ldGFNb2RpZmllcikKKyAgICAg
ICAgbW9kaWZpZXJzIHw9IE1ldGFLZXk7CiB9CiAKIHN0YXRpYyB2b2lkIG1vdXNlRXZlbnRUeXBl
QW5kTW91c2VCdXR0b25Gcm9tUUV2ZW50KGNvbnN0IFFFdmVudCogZXZlbnQsIFBsYXRmb3JtRXZl
bnQ6OlR5cGUmIG1vdXNlRXZlbnRUeXBlLCBNb3VzZUJ1dHRvbiYgbW91c2VCdXR0b24pCkBAIC0x
MjEsNyArMTI2LDcgQEAgUGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQoUUdy
YXBoaWNzU2NlbmVNb3VzZUV2ZW50KiBldmVudCwgaW50IGNsaWMKICAgICBtX2dsb2JhbFBvc2l0
aW9uID0gSW50UG9pbnQoZXZlbnQtPnNjcmVlblBvcygpKTsKIAogICAgIG1fY2xpY2tDb3VudCA9
IGNsaWNrQ291bnQ7Ci0gICAgbW91c2VFdmVudE1vZGlmaWVyc0Zyb21RdEtleWJvYXJkTW9kaWZp
ZXJzKGV2ZW50LT5tb2RpZmllcnMoKSwgbV9hbHRLZXksIG1fY3RybEtleSwgbV9tZXRhS2V5LCBt
X3NoaWZ0S2V5KTsKKyAgICBtb3VzZUV2ZW50TW9kaWZpZXJzRnJvbVF0S2V5Ym9hcmRNb2RpZmll
cnMoZXZlbnQtPm1vZGlmaWVycygpLCBtX21vZGlmaWVycyk7CiB9CiAjZW5kaWYgLy8gUVRfTk9f
R1JBUEhJQ1NWSUVXCiAKQEAgLTE1MSw3ICsxNTYsNyBAQCBQbGF0Zm9ybU1vdXNlRXZlbnQ6OlBs
YXRmb3JtTW91c2VFdmVudChRSW5wdXRFdmVudCogZXZlbnQsIGludCBjbGlja0NvdW50KQogICAg
IH0KIAogICAgIG1fY2xpY2tDb3VudCA9IGNsaWNrQ291bnQ7Ci0gICAgbW91c2VFdmVudE1vZGlm
aWVyc0Zyb21RdEtleWJvYXJkTW9kaWZpZXJzKGV2ZW50LT5tb2RpZmllcnMoKSwgbV9hbHRLZXks
IG1fY3RybEtleSwgbV9tZXRhS2V5LCBtX3NoaWZ0S2V5KTsKKyAgICBtb3VzZUV2ZW50TW9kaWZp
ZXJzRnJvbVF0S2V5Ym9hcmRNb2RpZmllcnMoZXZlbnQtPm1vZGlmaWVycygpLCBtX21vZGlmaWVy
cyk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRm
b3JtVG91Y2hFdmVudFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3Jt
VG91Y2hFdmVudFF0LmNwcAppbmRleCA3YzYyZGE2MjU0NjZjNGRmNjE0ODU4NjljYTNmOGUxNGFl
MzJlYTEyLi5lM2NhZThjNWExMmExNjFjN2ZiZTE2OWJiMGIyMmQxMWJmZDI3NGU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QbGF0Zm9ybVRvdWNoRXZlbnRRdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZvcm1Ub3VjaEV2ZW50UXQuY3Bw
CkBAIC00NiwxMCArNDYsMTYgQEAgUGxhdGZvcm1Ub3VjaEV2ZW50OjpQbGF0Zm9ybVRvdWNoRXZl
bnQoUVRvdWNoRXZlbnQqIGV2ZW50KQogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcG9pbnRzLmNv
dW50KCk7ICsraSkKICAgICAgICAgbV90b3VjaFBvaW50cy5hcHBlbmQoUGxhdGZvcm1Ub3VjaFBv
aW50KHBvaW50cy5hdChpKSkpOwogCi0gICAgbV9jdHJsS2V5ID0gKGV2ZW50LT5tb2RpZmllcnMo
KSAmIFF0OjpDb250cm9sTW9kaWZpZXIpOwotICAgIG1fYWx0S2V5ID0gKGV2ZW50LT5tb2RpZmll
cnMoKSAmIFF0OjpBbHRNb2RpZmllcik7Ci0gICAgbV9zaGlmdEtleSA9IChldmVudC0+bW9kaWZp
ZXJzKCkgJiBRdDo6U2hpZnRNb2RpZmllcik7Ci0gICAgbV9tZXRhS2V5ID0gKGV2ZW50LT5tb2Rp
ZmllcnMoKSAmIFF0OjpNZXRhTW9kaWZpZXIpOworICAgIG1fbW9kaWZpZXJzID0gMDsKKyAgICBp
ZiAoZXZlbnQtPm1vZGlmaWVycygpICAmIFF0OjpTaGlmdE1vZGlmaWVyKQorICAgICAgICBtX21v
ZGlmaWVycyB8PSBTaGlmdEtleTsKKyAgICBpZiAoZXZlbnQtPm1vZGlmaWVycygpICAmIFF0OjpD
b250cm9sTW9kaWZpZXIpCisgICAgICAgIG1fbW9kaWZpZXJzIHw9IEN0cmxLZXk7CisgICAgaWYg
KGV2ZW50LT5tb2RpZmllcnMoKSAgJiBRdDo6QWx0TW9kaWZpZXIpCisgICAgICAgIG1fbW9kaWZp
ZXJzIHw9IEFsdEtleTsKKyAgICBpZiAoZXZlbnQtPm1vZGlmaWVycygpICAmIFF0OjpNZXRhTW9k
aWZpZXIpCisgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1ldGFLZXk7CisKICAgICBtX3RpbWVzdGFt
cCA9IFdURjo6Y3VycmVudFRpbWUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9LZXlFdmVudFdpbi5jcHAKaW5kZXggYWQ1ODliYmY4MjEyZDUyNTc5MDdiM2E0ZDJlYjY2ZTM0
YjM3MjVkNS4uOGZkOTc3ZDJkOTcyZGJjOWY3YzZhNDk1MWFhYTg5Yzc3MjAzYTFjNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCkBAIC0xOTQsOSArMTk0
LDEwIEBAIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KEhXTkQs
IFdQQVJBTSBjb2RlLCBMUEFSQU0ga2V5RGF0YSwKICAgICAsIG1fdGV4dCgodHlwZSA9PSBQbGF0
Zm9ybUV2ZW50OjpDaGFyKSA/IHNpbmdsZUNoYXJhY3RlclN0cmluZyhjb2RlKSA6IFN0cmluZygp
KQogICAgICwgbV91bm1vZGlmaWVkVGV4dCgodHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpDaGFyKSA/
IHNpbmdsZUNoYXJhY3RlclN0cmluZyhjb2RlKSA6IFN0cmluZygpKQogICAgICwgbV9rZXlJZGVu
dGlmaWVyKCh0eXBlID09IFBsYXRmb3JtRXZlbnQ6OkNoYXIpID8gU3RyaW5nKCkgOiBrZXlJZGVu
dGlmaWVyRm9yV2luZG93c0tleUNvZGUoY29kZSkpCi0gICAgLCBtX2F1dG9SZXBlYXQoSElXT1JE
KGtleURhdGEpICYgS0ZfUkVQRUFUKQogICAgICwgbV93aW5kb3dzVmlydHVhbEtleUNvZGUoKHR5
cGUgPT0gUmF3S2V5RG93biB8fCB0eXBlID09IEtleVVwKSA/IGNvZGUgOiAwKQogICAgICwgbV9u
YXRpdmVWaXJ0dWFsS2V5Q29kZShtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSkKKyAgICAsIG1fbWFj
Q2hhckNvZGUoMCkKKyAgICAsIG1fYXV0b1JlcGVhdChISVdPUkQoa2V5RGF0YSkgJiBLRl9SRVBF
QVQpCiAgICAgLCBtX2lzS2V5cGFkKGlzS2V5cGFkRXZlbnQoY29kZSwga2V5RGF0YSwgdHlwZSkp
CiAgICAgLCBtX2lzU3lzdGVtS2V5KHN5c3RlbUtleSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9XaGVlbEV2ZW50V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9XaGVlbEV2ZW50V2luLmNwcAppbmRleCBjYjJkZGE1YzBmMGJiMjBhY2YwY2Y0
YWU0NWJmYmUzMzAxYjM2MjdlLi41MjI0Njk3MThkOWU1YjM5NDQyMTYxZGFhZjUxY2Y2MWU4MzIx
OGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2hlZWxFdmVudFdp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1doZWVsRXZlbnRXaW4uY3Bw
CkBAIC0xMTMsNyArMTEzLDcgQEAgUGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZl
bnQoSFdORCBoV25kLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtLAogICAgICAgICBtX3do
ZWVsVGlja3NYID0gMDsKICAgICAgICAgbV93aGVlbFRpY2tzWSA9IGRlbHRhOwogICAgIH0KLSAg
ICBpZiAoaXNNb3VzZUhXaGVlbCB8fCBtX3NoaWZ0S2V5KSB7CisgICAgaWYgKGlzTW91c2VIV2hl
ZWwgfHwgc2hpZnRLZXkoKSkgewogICAgICAgICBtX2RlbHRhWCA9IGRlbHRhICogc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGhvcml6b250YWxTY3JvbGxDaGFycygpKSAqIGNTY3JvbGxiYXJQaXhlbHNQZXJM
aW5lOwogICAgICAgICBtX2RlbHRhWSA9IDA7CiAgICAgICAgIG1fZ3JhbnVsYXJpdHkgPSBTY3Jv
bGxCeVBpeGVsV2hlZWxFdmVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQppbmRleCAxMzEwMTI0ZDI3MjlmYjY5Yzc1
ZjYzYjBmNmNiNTAzNDMwZmRiMWEzLi5lOTNkMGM2MWVkZmNkM2U4YzhiNTZiYWNjMmQwOTkzMGYw
MjExMmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJT
eXN0ZW1JbnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViU3lzdGVtSW50ZXJmYWNlLm1tCkBAIC02Nyw2ICs2Nyw3IEBAIHZvaWQgSW5pdFdlYkNvcmVT
eXN0ZW1JbnRlcmZhY2Uodm9pZCkKICAgICBJTklUKFNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5n
ZVN0cmluZyk7CiAgICAgSU5JVChHZXRQcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZSk7CiAg
ICAgSU5JVChHZXRXaGVlbEV2ZW50RGVsdGFzKTsKKyAgICBJTklUKEdldE5TRXZlbnRLZXlDaGFy
KTsKICAgICBJTklUKEhpdFRlc3RNZWRpYVVJUGFydCk7CiAgICAgSU5JVChJbml0aWFsaXplTWF4
aW11bUhUVFBDb25uZWN0aW9uQ291bnRQZXJIb3N0KTsKICAgICBJTklUKE1lYXN1cmVNZWRpYVVJ
UGFydCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCA2MWI4ZTg4NmUx
NDY4MzZlYmQ0NzM0ODBkYTljYjk0OTMyMDdmNzUwLi5hNWMzNDJjYTNhNDY3MTZlOTNlYWU0M2Vh
NWEwYjY3ZTc2MmNhZDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAg
LTc2LDYgKzc2LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9MZWdhY3lXZWJBcmNoaXZlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1FdmVudEZhY3RvcnkuaD4KICNpbXBvcnQgPFdlYkNv
cmUvUGx1Z2luRGF0YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QcmludENvbnRleHQuaD4KICNpbXBv
cnQgPFdlYkNvcmUvUmVuZGVyTGF5ZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhU
TUxWaWV3Lm1tCmluZGV4IGQxZWViNjlhYjJlMmVlMTBhMjA2M2NlODM1MGNmNzk0NDM4OGFkMjYu
LmM0YmMyYTJlMDJkNWJhODg0MjI3NGY4YjRjNTNmMjE5NDNhYjA1NDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtMTA0LDcgKzEwNCw3IEBACiAjaW1wb3J0
IDxXZWJDb3JlL0xlZ2FjeVdlYkFyY2hpdmUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTUlNRVR5cGVS
ZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1Bs
YXRmb3JtS2V5Ym9hcmRFdmVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUV2ZW50RmFj
dG9yeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SYW5nZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5k
ZXJXaWRnZXQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyVmlldy5oPgpAQCAtMzEwOCw3ICsz
MTA4LDcgQEAgc3RhdGljIHZvaWQgc2V0TWVudVRhcmdldHMoTlNNZW51KiBtZW51KQogICAgIF9w
cml2YXRlLT5oYW5kbGluZ01vdXNlRG93bkV2ZW50ID0gWUVTOwogICAgIHBhZ2UtPmNvbnRleHRN
ZW51Q29udHJvbGxlcigpLT5jbGVhckNvbnRleHRNZW51KCk7CiAgICAgY29yZUZyYW1lLT5ldmVu
dEhhbmRsZXIoKS0+bW91c2VEb3duKGV2ZW50KTsKLSAgICBCT09MIGhhbmRsZWRFdmVudCA9IGNv
cmVGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNlbmRDb250ZXh0TWVudUV2ZW50KFBsYXRmb3JtTW91
c2VFdmVudChldmVudCwgcGFnZS0+Y2hyb21lKCktPnBsYXRmb3JtUGFnZUNsaWVudCgpKSk7Cisg
ICAgQk9PTCBoYW5kbGVkRXZlbnQgPSBjb3JlRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zZW5kQ29u
dGV4dE1lbnVFdmVudChQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1Nb3VzZUV2
ZW50KGV2ZW50LCBwYWdlLT5jaHJvbWUoKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkpKTsKICAgICBf
cHJpdmF0ZS0+aGFuZGxpbmdNb3VzZURvd25FdmVudCA9IE5POwogCiAgICAgaWYgKCFoYW5kbGVk
RXZlbnQpCkBAIC0zNDczLDcgKzM0NzMsNyBAQCBzdGF0aWMgdm9pZCBzZXRNZW51VGFyZ2V0cyhO
U01lbnUqIG1lbnUpCiAgICAgICAgICAgICBbaGl0SFRNTFZpZXcgX3NldE1vdXNlRG93bkV2ZW50
OmV2ZW50XTsKICAgICAgICAgICAgIGlmIChbaGl0SFRNTFZpZXcgX2lzU2VsZWN0aW9uRXZlbnQ6
ZXZlbnRdKSB7CiAgICAgICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBjb3JlRnJhbWUtPnBh
Z2UoKSkKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gY29yZUZyYW1lLT5ldmVudEhhbmRs
ZXIoKS0+ZXZlbnRNYXlTdGFydERyYWcoUGxhdGZvcm1Nb3VzZUV2ZW50KGV2ZW50LCBwYWdlLT5j
aHJvbWUoKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVz
dWx0ID0gY29yZUZyYW1lLT5ldmVudEhhbmRsZXIoKS0+ZXZlbnRNYXlTdGFydERyYWcoUGxhdGZv
cm1FdmVudEZhY3Rvcnk6OmNyZWF0ZVBsYXRmb3JtTW91c2VFdmVudChldmVudCwgcGFnZS0+Y2hy
b21lKCktPnBsYXRmb3JtUGFnZUNsaWVudCgpKSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKFto
aXRIVE1MVmlldyBfaXNTY3JvbGxCYXJFdmVudDpldmVudF0pCiAgICAgICAgICAgICAgICAgcmVz
dWx0ID0gdHJ1ZTsKICAgICAgICAgICAgIFtoaXRIVE1MVmlldyBfc2V0TW91c2VEb3duRXZlbnQ6
bmlsXTsKQEAgLTM0OTgsNyArMzQ5OCw3IEBAIHN0YXRpYyB2b2lkIHNldE1lbnVUYXJnZXRzKE5T
TWVudSogbWVudSkKICAgICAgICAgICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0gY29yZShbaGl0
SFRNTFZpZXcgX2ZyYW1lXSkpIHsKICAgICAgICAgICAgICAgICBbaGl0SFRNTFZpZXcgX3NldE1v
dXNlRG93bkV2ZW50OmV2ZW50XTsKICAgICAgICAgICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGNv
cmVGcmFtZS0+cGFnZSgpKQotICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBjb3JlRnJhbWUt
PmV2ZW50SGFuZGxlcigpLT5ldmVudE1heVN0YXJ0RHJhZyhQbGF0Zm9ybU1vdXNlRXZlbnQoZXZl
bnQsIHBhZ2UtPmNocm9tZSgpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKSkpOworICAgICAgICAgICAg
ICAgICAgICByZXN1bHQgPSBjb3JlRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5ldmVudE1heVN0YXJ0
RHJhZyhQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1Nb3VzZUV2ZW50KGV2ZW50
LCBwYWdlLT5jaHJvbWUoKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkpKTsKICAgICAgICAgICAgICAg
ICBbaGl0SFRNTFZpZXcgX3NldE1vdXNlRG93bkV2ZW50Om5pbF07CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KQEAgLTM3MzgsMTIgKzM3MzgsMTIgQEAgc3RhdGljIFBhc3NSZWZQdHI8S2V5Ym9h
cmRFdmVudD4gY3VycmVudEtleWJvYXJkRXZlbnQoRnJhbWUqIGNvcmVGcmFtZSkKIAogICAgIHN3
aXRjaCAoW2V2ZW50IHR5cGVdKSB7CiAgICAgY2FzZSBOU0tleURvd246IHsKLSAgICAgICAgUGxh
dGZvcm1LZXlib2FyZEV2ZW50IHBsYXRmb3JtRXZlbnQoZXZlbnQpOworICAgICAgICBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQgcGxhdGZvcm1FdmVudCA9IFBsYXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVh
dGVQbGF0Zm9ybUtleWJvYXJkRXZlbnQoZXZlbnQpOwogICAgICAgICBwbGF0Zm9ybUV2ZW50LmRp
c2FtYmlndWF0ZUtleURvd25FdmVudChQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKTsKICAgICAg
ICAgcmV0dXJuIEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShwbGF0Zm9ybUV2ZW50LCBjb3JlRnJhbWUt
PmRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCkpOwogICAgIH0KICAgICBjYXNlIE5TS2V5VXA6Ci0g
ICAgICAgIHJldHVybiBLZXlib2FyZEV2ZW50OjpjcmVhdGUoZXZlbnQsIGNvcmVGcmFtZS0+ZG9j
dW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSk7CisgICAgICAgIHJldHVybiBLZXlib2FyZEV2ZW50Ojpj
cmVhdGUoUGxhdGZvcm1FdmVudEZhY3Rvcnk6OmNyZWF0ZVBsYXRmb3JtS2V5Ym9hcmRFdmVudChl
dmVudCksIGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSk7CiAgICAgZGVmYXVs
dDoKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtNDE0MSw3ICs0MTQxLDcgQEAgc3RhdGlj
IFBhc3NSZWZQdHI8S2V5Ym9hcmRFdmVudD4gY3VycmVudEtleWJvYXJkRXZlbnQoRnJhbWUqIGNv
cmVGcmFtZSkKIAogICAgIC8vIERvbid0IG1ha2UgYW4gZXZlbnQgZnJvbSB0aGUgbnVtIGxvY2sg
YW5kIGZ1bmN0aW9uIGtleXMuCiAgICAgaWYgKGNvcmVGcmFtZSAmJiBrZXlDb2RlICE9IDAgJiYg
a2V5Q29kZSAhPSAxMCAmJiBrZXlDb2RlICE9IDYzKSB7Ci0gICAgICAgIGNvcmVGcmFtZS0+ZXZl
bnRIYW5kbGVyKCktPmtleUV2ZW50KFBsYXRmb3JtS2V5Ym9hcmRFdmVudChldmVudCkpOworICAg
ICAgICBjb3JlRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5rZXlFdmVudChQbGF0Zm9ybUV2ZW50RmFj
dG9yeTo6Y3JlYXRlUGxhdGZvcm1LZXlib2FyZEV2ZW50KGV2ZW50KSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJQREZWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1t
CmluZGV4IDhhZTBmM2NmZDU3ODE5MTVlOWQxNGFkNTY4ZmM5OTc2MjQxYWNmNDMuLmM1ZmU5MjEw
ZWM0YjExNGQ1Njc5N2QzMWM2MzM5ZDVhY2Q1NDAzODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlBERlZpZXcubW0KQEAgLTU4LDcgKzU4LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvS1VS
TC5oPgogI2ltcG9ydCA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L01vdXNlRXZlbnQuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg+
CisjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtRXZlbnRGYWN0b3J5Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJOU0F0
dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CkBAIC05
NTksNyArOTU5LDcgQEAgc3RhdGljIEJPT0wgaXNGcmFtZUluUmFuZ2UoV2ViRnJhbWUgKmZyYW1l
LCBET01SYW5nZSAqcmFuZ2UpCiAgICAgICAgICAgICBidXR0b24gPSBbbnNFdmVudCBidXR0b25O
dW1iZXJdOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTlNLZXlEb3duOiB7Ci0g
ICAgICAgICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQgcGUobnNFdmVudCk7CisgICAgICAgICAg
ICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQgcGUgPSBQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRl
UGxhdGZvcm1LZXlib2FyZEV2ZW50KG5zRXZlbnQpOwogICAgICAgICAgICAgcGUuZGlzYW1iaWd1
YXRlS2V5RG93bkV2ZW50KFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pOwogICAgICAgICAgICAg
ZXZlbnQgPSBLZXlib2FyZEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmtleWRvd25FdmVudCwg
dHJ1ZSwgdHJ1ZSwgMCwKICAgICAgICAgICAgICAgICBwZS5rZXlJZGVudGlmaWVyKCksIHBlLndp
bmRvd3NWaXJ0dWFsS2V5Q29kZSgpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmlu
ZGV4IGQ3YzlhYjRlNWRiYTM2MDBkOTAyM2U2MTZhNmIxZDQ0MDNmYzI5NmIuLjZkMDE3NzcwNzEz
MzA2ZDc4ODc1NWM2ZjA3YTEzMWZkMzQxNjgxNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0KQEAgLTE0NCw3ICsxNDQsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1BhZ2VDYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlR3JvdXAu
aD4KLSNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1Nb3VzZUV2ZW50Lmg+CisjaW1wb3J0IDxXZWJD
b3JlL1BsYXRmb3JtRXZlbnRGYWN0b3J5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Byb2dyZXNzVHJh
Y2tlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1JlbmRlcldpZGdldC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkV2
ZW50Q29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViRXZlbnRDb252ZXJz
aW9uLmNwcAppbmRleCBhNTMxNTczYTMwNjEzNGU2MjUzMWY1NWIwYTExZTU1MGUyMzU1YThhLi5h
MmI0MWYyM2IwMGM4MzhmMmJjZDgwNDc4NDVjNGU4ZDhiZmNlODgzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcApAQCAtNDksMTAgKzQ5LDE2IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAKLSAg
ICAgICAgbV9zaGlmdEtleSA9IHdlYkV2ZW50LnNoaWZ0S2V5KCk7Ci0gICAgICAgIG1fY3RybEtl
eSA9IHdlYkV2ZW50LmNvbnRyb2xLZXkoKTsKLSAgICAgICAgbV9hbHRLZXkgPSB3ZWJFdmVudC5h
bHRLZXkoKTsKLSAgICAgICAgbV9tZXRhS2V5ID0gd2ViRXZlbnQubWV0YUtleSgpOworICAgICAg
ICBtX21vZGlmaWVycyA9IDA7CisgICAgICAgIGlmICh3ZWJFdmVudC5zaGlmdEtleSgpKQorICAg
ICAgICAgICAgbV9tb2RpZmllcnMgfD0gU2hpZnRLZXk7CisgICAgICAgIGlmICh3ZWJFdmVudC5j
b250cm9sS2V5KCkpCisgICAgICAgICAgICBtX21vZGlmaWVycyB8PSBDdHJsS2V5OworICAgICAg
ICBpZiAod2ViRXZlbnQuYWx0S2V5KCkpCisgICAgICAgICAgICBtX21vZGlmaWVycyB8PSBBbHRL
ZXk7CisgICAgICAgIGlmICh3ZWJFdmVudC5hbHRLZXkoKSkKKyAgICAgICAgICAgIG1fbW9kaWZp
ZXJzIHw9IE1ldGFLZXk7CisKICAgICAgICAgbV90aW1lc3RhbXAgPSB3ZWJFdmVudC50aW1lc3Rh
bXAoKTsKIAogICAgICAgICAvLyBQbGF0Zm9ybU1vdXNlRXZlbnQKQEAgLTc4LDEzICs4NCwxMyBA
QCBwdWJsaWM6CiAgICAgICAgIG1fY2xpY2tDb3VudCA9IHdlYkV2ZW50LmNsaWNrQ291bnQoKTsK
IAogICAgICAgICBtX21vZGlmaWVyRmxhZ3MgPSAwOwotICAgICAgICBpZiAobV9zaGlmdEtleSkK
KyAgICAgICAgaWYgKHdlYkV2ZW50LnNoaWZ0S2V5KCkpCiAgICAgICAgICAgICBtX21vZGlmaWVy
RmxhZ3MgfD0gV2ViRXZlbnQ6OlNoaWZ0S2V5OwotICAgICAgICBpZiAobV9jdHJsS2V5KQorICAg
ICAgICBpZiAod2ViRXZlbnQuY29udHJvbEtleSgpKQogICAgICAgICAgICAgbV9tb2RpZmllckZs
YWdzIHw9IFdlYkV2ZW50OjpDb250cm9sS2V5OwotICAgICAgICBpZiAobV9hbHRLZXkpCisgICAg
ICAgIGlmICh3ZWJFdmVudC5hbHRLZXkoKSkKICAgICAgICAgICAgIG1fbW9kaWZpZXJGbGFncyB8
PSBXZWJFdmVudDo6QWx0S2V5OwotICAgICAgICBpZiAobV9tZXRhS2V5KQorICAgICAgICBpZiAo
d2ViRXZlbnQuYWx0S2V5KCkpCiAgICAgICAgICAgICBtX21vZGlmaWVyRmxhZ3MgfD0gV2ViRXZl
bnQ6Ok1ldGFLZXk7CiAKICNpZiBQTEFURk9STShXSU4pCkBAIC0xMDQsMTAgKzExMCwxNyBAQCBw
dWJsaWM6CiAgICAgewogICAgICAgICAvLyBQbGF0Zm9ybUV2ZW50CiAgICAgICAgIG1fdHlwZSA9
IFBsYXRmb3JtRXZlbnQ6OldoZWVsOwotICAgICAgICBtX3NoaWZ0S2V5ID0gd2ViRXZlbnQuc2hp
ZnRLZXkoKTsKLSAgICAgICAgbV9jdHJsS2V5ID0gd2ViRXZlbnQuY29udHJvbEtleSgpOwotICAg
ICAgICBtX2FsdEtleSA9IHdlYkV2ZW50LmFsdEtleSgpOwotICAgICAgICBtX21ldGFLZXkgPSB3
ZWJFdmVudC5tZXRhS2V5KCk7CisKKyAgICAgICAgbV9tb2RpZmllcnMgPSAwOworICAgICAgICBp
ZiAod2ViRXZlbnQuc2hpZnRLZXkoKSkKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IFNoaWZ0
S2V5OworICAgICAgICBpZiAod2ViRXZlbnQuY29udHJvbEtleSgpKQorICAgICAgICAgICAgbV9t
b2RpZmllcnMgfD0gQ3RybEtleTsKKyAgICAgICAgaWYgKHdlYkV2ZW50LmFsdEtleSgpKQorICAg
ICAgICAgICAgbV9tb2RpZmllcnMgfD0gQWx0S2V5OworICAgICAgICBpZiAod2ViRXZlbnQuYWx0
S2V5KCkpCisgICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNZXRhS2V5OworCiAgICAgICAgIG1f
dGltZXN0YW1wID0gd2ViRXZlbnQudGltZXN0YW1wKCk7CiAKICAgICAgICAgLy8gUGxhdGZvcm1X
aGVlbEV2ZW50CkBAIC0xNTQsMTAgKzE2NywxNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogCi0gICAgICAgIG1fc2hpZnRLZXkgPSB3ZWJF
dmVudC5zaGlmdEtleSgpOwotICAgICAgICBtX2N0cmxLZXkgPSB3ZWJFdmVudC5jb250cm9sS2V5
KCk7Ci0gICAgICAgIG1fYWx0S2V5ID0gd2ViRXZlbnQuYWx0S2V5KCk7Ci0gICAgICAgIG1fbWV0
YUtleSA9IHdlYkV2ZW50Lm1ldGFLZXkoKTsKKyAgICAgICAgbV9tb2RpZmllcnMgPSAwOworICAg
ICAgICBpZiAod2ViRXZlbnQuc2hpZnRLZXkoKSkKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9
IFNoaWZ0S2V5OworICAgICAgICBpZiAod2ViRXZlbnQuY29udHJvbEtleSgpKQorICAgICAgICAg
ICAgbV9tb2RpZmllcnMgfD0gQ3RybEtleTsKKyAgICAgICAgaWYgKHdlYkV2ZW50LmFsdEtleSgp
KQorICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gQWx0S2V5OworICAgICAgICBpZiAod2ViRXZl
bnQuYWx0S2V5KCkpCisgICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNZXRhS2V5OworCiAgICAg
ICAgIG1fdGltZXN0YW1wID0gd2ViRXZlbnQudGltZXN0YW1wKCk7CiAKICAgICAgICAgLy8gUGxh
dGZvcm1LZXlib2FyZEV2ZW50CkBAIC0xNjYsMTQgKzE4NSwxMCBAQCBwdWJsaWM6CiAgICAgICAg
IG1fa2V5SWRlbnRpZmllciA9IHdlYkV2ZW50LmtleUlkZW50aWZpZXIoKTsKICAgICAgICAgbV93
aW5kb3dzVmlydHVhbEtleUNvZGUgPSB3ZWJFdmVudC53aW5kb3dzVmlydHVhbEtleUNvZGUoKTsK
ICAgICAgICAgbV9uYXRpdmVWaXJ0dWFsS2V5Q29kZSA9IHdlYkV2ZW50Lm5hdGl2ZVZpcnR1YWxL
ZXlDb2RlKCk7CisgICAgICAgIG1fbWFjQ2hhckNvZGUgPSB3ZWJFdmVudC5tYWNDaGFyQ29kZSgp
OwogICAgICAgICBtX2F1dG9SZXBlYXQgPSB3ZWJFdmVudC5pc0F1dG9SZXBlYXQoKTsKICAgICAg
ICAgbV9pc0tleXBhZCA9IHdlYkV2ZW50LmlzS2V5cGFkKCk7Ci0gICAgICAgIAotI2lmIFBMQVRG
T1JNKFdJTikKLSAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBtYWtlIG1faXNTeXN0ZW1LZXkg
YXZhaWxhYmxlIChhbmQgZmFsc2UpIG9uIGFsbCBwbGF0Zm9ybXMKLSAgICAgICAgLy8gdG8gYXZv
aWQgdGhpcyAjZGVmaW5lLiAKICAgICAgICAgbV9pc1N5c3RlbUtleSA9IHdlYkV2ZW50LmlzU3lz
dGVtS2V5KCk7Ci0jZW5kaWYKICAgICB9CiB9OwogCkBAIC0yMDIsMTAgKzIxNywxNiBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogCi0gICAg
ICAgIG1fc2hpZnRLZXkgPSB3ZWJFdmVudC5zaGlmdEtleSgpOwotICAgICAgICBtX2N0cmxLZXkg
PSB3ZWJFdmVudC5jb250cm9sS2V5KCk7Ci0gICAgICAgIG1fYWx0S2V5ID0gd2ViRXZlbnQuYWx0
S2V5KCk7Ci0gICAgICAgIG1fbWV0YUtleSA9IHdlYkV2ZW50Lm1ldGFLZXkoKTsKKyAgICAgICAg
bV9tb2RpZmllcnMgPSAwOworICAgICAgICBpZiAod2ViRXZlbnQuc2hpZnRLZXkoKSkKKyAgICAg
ICAgICAgIG1fbW9kaWZpZXJzIHw9IFNoaWZ0S2V5OworICAgICAgICBpZiAod2ViRXZlbnQuY29u
dHJvbEtleSgpKQorICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gQ3RybEtleTsKKyAgICAgICAg
aWYgKHdlYkV2ZW50LmFsdEtleSgpKQorICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gQWx0S2V5
OworICAgICAgICBpZiAod2ViRXZlbnQuYWx0S2V5KCkpCisgICAgICAgICAgICBtX21vZGlmaWVy
cyB8PSBNZXRhS2V5OworCiAgICAgICAgIG1fdGltZXN0YW1wID0gd2ViRXZlbnQudGltZXN0YW1w
KCk7CiAKICAgICAgICAgLy8gUGxhdGZvcm1HZXN0dXJlRXZlbnQKQEAgLTI3NCwxMCArMjk1LDE2
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9
CiAKLSAgICAgICAgbV9jdHJsS2V5ID0gd2ViRXZlbnQuY29udHJvbEtleSgpOwotICAgICAgICBt
X2FsdEtleSA9IHdlYkV2ZW50LmFsdEtleSgpOwotICAgICAgICBtX3NoaWZ0S2V5ID0gd2ViRXZl
bnQuc2hpZnRLZXkoKTsKLSAgICAgICAgbV9tZXRhS2V5ID0gd2ViRXZlbnQubWV0YUtleSgpOwor
ICAgICAgICBtX21vZGlmaWVycyA9IDA7CisgICAgICAgIGlmICh3ZWJFdmVudC5zaGlmdEtleSgp
KQorICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gU2hpZnRLZXk7CisgICAgICAgIGlmICh3ZWJF
dmVudC5jb250cm9sS2V5KCkpCisgICAgICAgICAgICBtX21vZGlmaWVycyB8PSBDdHJsS2V5Owor
ICAgICAgICBpZiAod2ViRXZlbnQuYWx0S2V5KCkpCisgICAgICAgICAgICBtX21vZGlmaWVycyB8
PSBBbHRLZXk7CisgICAgICAgIGlmICh3ZWJFdmVudC5hbHRLZXkoKSkKKyAgICAgICAgICAgIG1f
bW9kaWZpZXJzIHw9IE1ldGFLZXk7CisKICAgICAgICAgbV90aW1lc3RhbXAgPSB3ZWJFdmVudC50
aW1lc3RhbXAoKTsKIAogICAgICAgICAvLyBQbGF0Zm9ybVRvdWNoRXZlbnQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQppbmRleCBkY2EwMThhNDJmMTliYTRlNGU5
ZDMwZDMwMDAzYWEzMDE3MWEyOTljLi40MDNlYWJiM2VjNjk1YjJkYWZmMzI0YmU2Y2Y4ZTg2YWQz
MDE5MGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1Zp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBA
IC02Nyw3ICs2Nyw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbXBvcnQgPFdl
YkNvcmUvS2V5Ym9hcmRFdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdz
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtTW91c2VFdmVudC5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9QbGF0Zm9ybUV2ZW50RmFjdG9yeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybVNj
cmVlbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZWdpb24uaD4KICNpbXBvcnQgPFdlYktpdFN5c3Rl
bUludGVyZmFjZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCmluZGV4IDg1
ODFkZmZjMmYyOTlhMzdmZGJkYjBmYWY5MjgwMDJmNzRkYWFkZWQuLjI5YzRhYzNlZTBjMjAzNWE0
YWFiMzkwMzk4ZjVkMzViMzA4YjNkNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZh
Y2UubW0KQEAgLTY1LDYgKzY1LDcgQEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2
b2lkKQogICAgICAgICBJTklUKEdldFByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKTsKICAg
ICAgICAgSU5JVChHZXRVc2VyVG9CYXNlQ1RNKTsKICAgICAgICAgSU5JVChHZXRXaGVlbEV2ZW50
RGVsdGFzKTsKKyAgICAgICAgSU5JVChHZXROU0V2ZW50S2V5Q2hhcik7CiAgICAgICAgIElOSVQo
SGl0VGVzdE1lZGlhVUlQYXJ0KTsKICAgICAgICAgSU5JVChJbml0aWFsaXplTWF4aW11bUhUVFBD
b25uZWN0aW9uQ291bnRQZXJIb3N0KTsKICAgICAgICAgSU5JVChNZWFzdXJlTWVkaWFVSVBhcnQp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120385</attachid>
            <date>2011-12-22 14:47:08 -0800</date>
            <delta_ts>2011-12-22 20:12:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75063-20111222144711.patch</filename>
            <type>text/plain</type>
            <size>99935</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzNTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTIzZDAwNThmOGY4NzQz
ZTcwNWM0NjdhNDMxNWM1Zjk4MjMyZTI1Yi4uOGFjMTVjZGYyOWQ3ZDg5MTU3MjU4MGFjMTEwMzNm
OTU2MWY3YjNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDExLTEyLTIxICBTYW0g
V2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RhcnQgZXh0cmFjdGluZyBwbGF0
Zm9ybSBzcGVjaWZpYyBiaXRzIG91dCBvZiBQbGF0Zm9ybUV2ZW50cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUwNjMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKwor
ICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmtleUV2ZW50KToKKyAgICAgICAgKiBwYWdlL21hYy9F
dmVudEhhbmRsZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OndoZWVs
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjprZXlFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmN1cnJlbnRQbGF0Zm9ybU1vdXNlRXZlbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtRXZlbnQ6OnNoaWZ0S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6
OmN0cmxLZXkpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6YWx0S2V5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6Om1ldGFLZXkpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1FdmVudDo6bW9kaWZpZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
RXZlbnQ6OlBsYXRmb3JtRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtR2VzdHVy
ZUV2ZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmtleUlkZW50
aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50OjptYWNDaGFy
Q29kZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmlzU3lzdGVt
S2V5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
S2V5RXZlbnRNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0
b3J5Lmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9y
eS5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpnbG9iYWxQb2ludCk6CisgICAgICAgIChX
ZWJDb3JlOjpnbG9iYWxQb2ludEZvckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnBvaW50Rm9y
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6bW91c2VCdXR0b25Gb3JFdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjptb3VzZUV2ZW50VHlwZUZvckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNs
aWNrQ291bnRGb3JFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjptb21lbnR1bVBoYXNlRm9yRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6cGhhc2VGb3JFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpnZXN0dXJlRXZlbnRUeXBlRm9yRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6dGV4dEZyb21F
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjp1bm1vZGlmaWVkVGV4dEZyb21FdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjprZXlJZGVudGlmaWVyRm9yS2V5RXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6aXNLZXlwYWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjp3aW5kb3dzS2V5Q29kZUZvcktl
eUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmlzS2V5VXBFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjptb2RpZmllcnNGb3JFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1vdXNl
RXZlbnRCdWlsZGVyOjpQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQbGF0Zm9ybU1vdXNlRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50QnVpbGRlcjo6UGxhdGZvcm1XaGVlbEV2
ZW50QnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3Jl
YXRlUGxhdGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9h
cmRFdmVudEJ1aWxkZXI6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudEJ1aWxkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1FdmVudEZhY3Rvcnk6OmNyZWF0ZVBsYXRmb3JtS2V5Ym9hcmRFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXI6OlBsYXRm
b3JtR2VzdHVyZUV2ZW50QnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50
RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1HZXN0dXJlRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9QbGF0Zm9ybU1vdXNlRXZlbnRNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dl
YkNvcmVTeXN0ZW1JbnRlcmZhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5
c3RlbUludGVyZmFjZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2hlZWxFdmVudE1hYy5t
bToKKwogMjAxMS0xMi0yMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgog
CiAgICAgICAgIE1vcmUgU2Nyb2xsQW5pbWF0b3JNYWMgY2xlYW51cApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmlu
ZGV4IDZjN2JmMzBiNmY3ZTE4ODBmMGVmYTFkMjNhZWUzZWM4ZGNmMGNhMzYuLjA2MmQ1NzM0Zjcw
NDhiZDZiNjBlMTA0MTFhZGIxMWM4Mzk1OTdkNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMyBAQAorMjAxMS0xMi0yMSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAg
ICAgIFN0YXJ0IGV4dHJhY3RpbmcgcGxhdGZvcm0gc3BlY2lmaWMgYml0cyBvdXQgb2YgUGxhdGZv
cm1FdmVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTc1MDYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgIChJbml0V2Vi
Q29yZVN5c3RlbUludGVyZmFjZSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBt
ZW51Rm9yRXZlbnQ6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IGFjY2VwdHNGaXJzdE1vdXNl
Ol0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBzaG91bGREZWxheVdpbmRvd09yZGVyaW5nRm9y
RXZlbnQ6XSk6CisgICAgICAgIChjdXJyZW50S2V5Ym9hcmRFdmVudCk6CisgICAgICAgICgtW1dl
YkhUTUxWaWV3IGZsYWdzQ2hhbmdlZDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBERlZpZXcu
bW06CisgICAgICAgICgtW1dlYlBERlZpZXcgUERGVmlld1dpbGxDbGlja09uTGluazp3aXRoVVJM
Ol0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKwogMjAxMS0xMi0yMSAgVGltb3Ro
eSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjog
c3VwcHJlc3MgaW5jcmVtZW50YWwgcmVuZGVyaW5nIGFuZCB1c2UgYXBwbGljYXRpb24gY2hyb21l
IG1vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwppbmRleCAxNGU5MTY2YmM2YTIyZmQ5ZjlhZTY4YTU5YTA4MzRlYTM0ODVl
MTkwLi43YjNiYWM5YjhkNGZhMGQxYzc4NDllYjY1OWU3ZGM5ZTE0OWNkYTMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMTItMjEgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBTdGFydCBleHRyYWN0aW5nIHBsYXRmb3JtIHNwZWNpZmljIGJpdHMgb3V0
IG9mIFBsYXRmb3JtRXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03NTA2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYktpdDJQbGF0Zm9ybU1vdXNlRXZlbnQ6OldlYktpdDJQbGF0Zm9ybU1vdXNlRXZlbnQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJLaXQyUGxhdGZvcm1XaGVlbEV2ZW50OjpXZWJLaXQyUGxh
dGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0MlBsYXRmb3JtS2V5Ym9h
cmRFdmVudDo6V2ViS2l0MlBsYXRmb3JtS2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYktpdDJQbGF0Zm9ybUdlc3R1cmVFdmVudDo6V2ViS2l0MlBsYXRmb3JtR2VzdHVyZUV2ZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0MlBsYXRmb3JtVG91Y2hFdmVudDo6V2ViS2l0MlBs
YXRmb3JtVG91Y2hFdmVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1t
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVy
ZmFjZS5tbToKKyAgICAgICAgKEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKToKKwogMjAxMS0x
Mi0yMiAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVu
Ym9zc2Eub3JnPgogCiAgICAgICAgIFtRdF0gW1dLMl0gVXNlIEhhc2hNYXAgaW5zdGVhZCBvZiBW
ZWN0b3IgaW4gdGhlIGJ1aWx0aW4gYnVuZGxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGY1ZGMw
MDBlMWU1ZGJkN2NkNWU4ODhiZGRjZWU0MDVkNzhlZjU5M2YuLmRlM2U3N2YyNzVkOGY0MTY5MDZh
OTM4YzQwM2Q5NGViY2JkYzE0ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xNTcsNiArMTU3
LDcgQEAgX19aTjdXZWJDb3JlMTB0b0RvY3VtZW50RU4zSlNDN0pTVmFsdWVFCiBfX1pON1dlYkNv
cmUxMUJpdG1hcEltYWdlQzFFUDdDR0ltYWdlUE5TXzEzSW1hZ2VPYnNlcnZlckUKIF9fWk43V2Vi
Q29yZTExQ2FjaGVkRnJhbWUyM2NhY2hlZEZyYW1lUGxhdGZvcm1EYXRhRXYKIF9fWk43V2ViQ29y
ZTExQ2FjaGVkRnJhbWUyNnNldENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhRU4zV1RGMTBQYXNzT3du
UHRySU5TXzIzQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGFFRUUKK19fWk43V2ViQ29yZTExQ2FjaGVk
SW1hZ2U1aW1hZ2VFdgogX19aTjdXZWJDb3JlMTFGaWxlQ2hvb3NlcjEwY2hvb3NlRmlsZUVSS04z
V1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTExRmlsZUNob29zZXIxMWNob29zZUZpbGVzRVJLTjNX
VEY2VmVjdG9ySU5TMV82U3RyaW5nRUxtMEVFRQogX19aTjdXZWJDb3JlMTFGaWxlQ2hvb3NlckQx
RXYKQEAgLTI5Miw4ICsyOTMsOCBAQCBfX1pON1dlYkNvcmUxMlNoYXJlZEJ1ZmZlckQxRXYKIF9f
Wk43V2ViQ29yZTEyU3BlbGxDaGVja2VyOGRpZENoZWNrRWlSS04zV1RGNlZlY3RvcklOU18xOFRl
eHRDaGVja2luZ1Jlc3VsdEVMbTBFRUUKIF9fWk43V2ViQ29yZTEyVGV4dEVuY29kaW5nQzFFUktO
M1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxMlRleHRJdGVyYXRvcjExcmFuZ2VMZW5ndGhFUEtO
U181UmFuZ2VFYgotX19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3IyOWdldExvY2F0aW9uQW5kTGVu
Z3RoRnJvbVJhbmdlRVBOU183RWxlbWVudEVQS05TXzVSYW5nZUVSbVM2XwogX19aTjdXZWJDb3Jl
MTJUZXh0SXRlcmF0b3IyNnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoRVBOU183RWxlbWVudEVp
aWIKK19fWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yMjlnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21S
YW5nZUVQTlNfN0VsZW1lbnRFUEtOU181UmFuZ2VFUm1TNl8KIF9fWk43V2ViQ29yZTEyVGV4dEl0
ZXJhdG9yN2FkdmFuY2VFdgogX19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3I4c3VicmFuZ2VFUE5T
XzVSYW5nZUVpaQogX19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3JDMUVQS05TXzVSYW5nZUVOU18y
MFRleHRJdGVyYXRvckJlaGF2aW9yRQpAQCAtMzY1LDggKzM2Niw4IEBAIF9fWk43V2ViQ29yZTE0
U2NoZW1lUmVnaXN0cnkyNXJlZ2lzdGVyVVJMU2NoZW1lQXNTZWN1cmVFUktOM1dURjZTdHJpbmdF
CiBfX1pON1dlYkNvcmUxNFNjaGVtZVJlZ2lzdHJ5MzJyZWdpc3RlclVSTFNjaGVtZUFzRW1wdHlE
b2N1bWVudEVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE0U2NoZW1lUmVnaXN0cnkzNHNo
b3VsZExvYWRVUkxTY2hlbWVBc0VtcHR5RG9jdW1lbnRFUktOM1dURjZTdHJpbmdFCiBfX1pON1dl
YkNvcmUxNFNjaGVtZVJlZ2lzdHJ5NDBzZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJM
U2NoZW1lRWJSS04zV1RGNlN0cmluZ0UKLV9fWk43V2ViQ29yZTE0U2NoZW1lUmVnaXN0cnk2MnJl
Z2lzdGVyVVJMU2NoZW1lQXNBbGxvd2luZ0xvY2FsU3RvcmFnZUFjY2Vzc0luUHJpdmF0ZUJyb3dz
aW5nRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTRTY2hlbWVSZWdpc3RyeTU4cmVnaXN0
ZXJVUkxTY2hlbWVBc0FsbG93aW5nRGF0YWJhc2VBY2Nlc3NJblByaXZhdGVCcm93c2luZ0VSS04z
V1RGNlN0cmluZ0UKK19fWk43V2ViQ29yZTE0U2NoZW1lUmVnaXN0cnk2MnJlZ2lzdGVyVVJMU2No
ZW1lQXNBbGxvd2luZ0xvY2FsU3RvcmFnZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nRVJLTjNXVEY2
U3RyaW5nRQogX19aTjdXZWJDb3JlMTRTY3JvbGxhYmxlQXJlYTE1Y29udGVudHNSZXNpemVkRXYK
IF9fWk43V2ViQ29yZTE0U2Nyb2xsYWJsZUFyZWExNmhhbmRsZVdoZWVsRXZlbnRFUktOU18xOFBs
YXRmb3JtV2hlZWxFdmVudEUKIF9fWk43V2ViQ29yZTE0U2Nyb2xsYWJsZUFyZWExN3dpbGxFbmRM
aXZlUmVzaXplRXYKQEAgLTM5MywxNSArMzk0LDE1IEBAIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlQ
b2xpY3kyMmdlbmVyYXRlUmVmZXJyZXJIZWFkZXJFTlMwXzE0UmVmZXJyZXJQb2xpY3lFUktOU180
CiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5UG9saWN5MjdyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlz
dHNFdgogX19aTjdXZWJDb3JlMTRTZWN1cml0eVBvbGljeTI5YWRkT3JpZ2luQWNjZXNzV2hpdGVs
aXN0RW50cnlFUktOU18xNFNlY3VyaXR5T3JpZ2luRVJLTjNXVEY2U3RyaW5nRVM3X2IKIF9fWk43
V2ViQ29yZTE0U2VjdXJpdHlQb2xpY3kzMnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5
RVJLTlNfMTRTZWN1cml0eU9yaWdpbkVSS04zV1RGNlN0cmluZ0VTN19iCi1fX1pON1dlYkNvcmUx
NFN0b3JhZ2VUcmFja2VyN29yaWdpbnNFUk4zV1RGNlZlY3RvcklOUzFfNlJlZlB0cklOU18xNFNl
Y3VyaXR5T3JpZ2luRUVFTG0wRUVFCi1fX1pON1dlYkNvcmUxNFN0b3JhZ2VUcmFja2VyN3RyYWNr
ZXJFdgotX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjlzZXRDbGllbnRFUE5TXzIwU3RvcmFn
ZVRyYWNrZXJDbGllbnRFCiBfX1pON1dlYkNvcmUxNFN0b3JhZ2VUcmFja2VyMTJkZWxldGVPcmln
aW5FUE5TXzE0U2VjdXJpdHlPcmlnaW5FCiBfX1pON1dlYkNvcmUxNFN0b3JhZ2VUcmFja2VyMTZk
ZWxldGVBbGxPcmlnaW5zRXYKIF9fWk43V2ViQ29yZTE0U3RvcmFnZVRyYWNrZXIxNnN5bmNMb2Nh
bFN0b3JhZ2VFdgogX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjE3aW5pdGlhbGl6ZVRyYWNr
ZXJFUktOM1dURjZTdHJpbmdFUE5TXzIwU3RvcmFnZVRyYWNrZXJDbGllbnRFCiBfX1pON1dlYkNv
cmUxNFN0b3JhZ2VUcmFja2VyMThkaXNrVXNhZ2VGb3JPcmlnaW5FUE5TXzE0U2VjdXJpdHlPcmln
aW5FCiBfX1pON1dlYkNvcmUxNFN0b3JhZ2VUcmFja2VyMzJzeW5jRmlsZVN5c3RlbUFuZFRyYWNr
ZXJEYXRhYmFzZUV2CitfX1pON1dlYkNvcmUxNFN0b3JhZ2VUcmFja2VyN29yaWdpbnNFUk4zV1RG
NlZlY3RvcklOUzFfNlJlZlB0cklOU18xNFNlY3VyaXR5T3JpZ2luRUVFTG0wRUVFCitfX1pON1dl
YkNvcmUxNFN0b3JhZ2VUcmFja2VyN3RyYWNrZXJFdgorX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJh
Y2tlcjlzZXRDbGllbnRFUE5TXzIwU3RvcmFnZVRyYWNrZXJDbGllbnRFCiBfX1pON1dlYkNvcmUx
NGVuZE9mUGFyYWdyYXBoRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FTlNfMjdFZGl0aW5nQm91bmRh
cnlDcm9zc2luZ1J1bGVFCiBfX1pON1dlYkNvcmUxNUFmZmluZVRyYW5zZm9ybTVmbGlwWUV2CiBf
X1pON1dlYkNvcmUxNUFmZmluZVRyYW5zZm9ybTVzY2FsZUVkCkBAIC00MzMsOCArNDM0LDggQEAg
X19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQxMWNsZWFyU2hhZG93RXYKIF9fWk43V2ViQ29y
ZTE1R3JhcGhpY3NDb250ZXh0MTJzZXRGaWxsQ29sb3JFUktOU181Q29sb3JFTlNfMTBDb2xvclNw
YWNlRQogX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQxNXNldEZpbGxHcmFkaWVudEVOM1dU
RjEwUGFzc1JlZlB0cklOU184R3JhZGllbnRFRUUKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250
ZXh0MThzZXRTaG91bGRBbnRpYWxpYXNFYgotX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQy
MHNldFNob3VsZFNtb290aEZvbnRzRWIKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MjBl
bmRUcmFuc3BhcmVuY3lMYXllckV2CitfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDIwc2V0
U2hvdWxkU21vb3RoRm9udHNFYgogX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQyMXNldENv
bXBvc2l0ZU9wZXJhdGlvbkVOU18xN0NvbXBvc2l0ZU9wZXJhdG9yRQogX19aTjdXZWJDb3JlMTVH
cmFwaGljc0NvbnRleHQyMmFwcGx5RGV2aWNlU2NhbGVGYWN0b3JFZgogX19aTjdXZWJDb3JlMTVH
cmFwaGljc0NvbnRleHQyMmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJFZgpAQCAtNTM5LDcgKzU0MCw2
IEBAIF9fWk43V2ViQ29yZTE3UmVndWxhckV4cHJlc3Npb25DMUVSS04zV1RGNlN0cmluZ0VOUzFf
MTlUZXh0Q2FzZVNlbnNpdGl2aXR5RQogX19aTjdXZWJDb3JlMTdSZWd1bGFyRXhwcmVzc2lvbkQx
RXYKIF9fWk43V2ViQ29yZTE3Y2FjaGVET01TdHJ1Y3R1cmVFUE5TXzE3SlNET01HbG9iYWxPYmpl
Y3RFUE4zSlNDOVN0cnVjdHVyZUVQS05TMl85Q2xhc3NJbmZvRQogX19aTjdXZWJDb3JlMTdvcGVu
VGVtcG9yYXJ5RmlsZUVSS04zV1RGNlN0cmluZ0VSaQotX19aTjdXZWJDb3JlMThQbGF0Zm9ybU1v
dXNlRXZlbnRDMUVQN05TRXZlbnRQNk5TVmlldwogX19aTjdXZWJDb3JlMThQbGF0Zm9ybVN0cmF0
ZWdpZXMyNmNyZWF0ZUxvY2FsaXphdGlvblN0cmF0ZWd5RXYKIF9fWk43V2ViQ29yZTE4U2VhcmNo
UG9wdXBNZW51TWFjQzFFUE5TXzE1UG9wdXBNZW51Q2xpZW50RQogX19aTjdXZWJDb3JlMThpc1N0
YXJ0T2ZQYXJhZ3JhcGhFUktOU18xNVZpc2libGVQb3NpdGlvbkVOU18yN0VkaXRpbmdCb3VuZGFy
eUNyb3NzaW5nUnVsZUUKQEAgLTU4OCw2ICs1ODgsOCBAQCBfX1pON1dlYkNvcmUyMERpc3BsYXlT
bGVlcERpc2FibGVyQzFFUEtjCiBfX1pON1dlYkNvcmUyMERpc3BsYXlTbGVlcERpc2FibGVyRDFF
dgogX19aTjdXZWJDb3JlMjBOb2RlUmVuZGVyaW5nQ29udGV4dEMxRVBOU180Tm9kZUUKIF9fWk43
V2ViQ29yZTIwTm9kZVJlbmRlcmluZ0NvbnRleHREMUV2CitfX1pON1dlYkNvcmUyMFBsYXRmb3Jt
RXZlbnRGYWN0b3J5MjRjcmVhdGVQbGF0Zm9ybU1vdXNlRXZlbnRFUDdOU0V2ZW50UDZOU1ZpZXcK
K19fWk43V2ViQ29yZTIwUGxhdGZvcm1FdmVudEZhY3RvcnkyN2NyZWF0ZVBsYXRmb3JtS2V5Ym9h
cmRFdmVudEVQN05TRXZlbnQKIF9fWk43V2ViQ29yZTIwUmVuZGVyRW1iZWRkZWRPYmplY3QzMHNl
dFNob3dzQ3Jhc2hlZFBsdWdpbkluZGljYXRvckV2CiBfX1pON1dlYkNvcmUyMFJlc291cmNlUmVz
cG9uc2VCYXNlMTFzZXRNaW1lVHlwZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTIwUmVz
b3VyY2VSZXNwb25zZUJhc2UxN3NldEhUVFBTdGF0dXNDb2RlRWkKQEAgLTYwNSw3ICs2MDcsNiBA
QCBfX1pON1dlYkNvcmUyMG1ha2VSR0JBMzJGcm9tRmxvYXRzRWZmZmYKIF9fWk43V2ViQ29yZTIw
cHJvdG9jb2xJc0phdmFTY3JpcHRFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyMUJhY2tG
b3J3YXJkQ29udHJvbGxlcjExaXRlbUF0SW5kZXhFaQogX19aTjdXZWJDb3JlMjFNZW1vcnlQcmVz
c3VyZUhhbmRsZXI3aW5zdGFsbEV2Ci1fX1pON1dlYkNvcmUyMVBsYXRmb3JtS2V5Ym9hcmRFdmVu
dEMxRVA3TlNFdmVudAogX19aTjdXZWJDb3JlMjFQbGF0Zm9ybUtleWJvYXJkRXZlbnQyNGRpc2Ft
YmlndWF0ZUtleURvd25FdmVudEVOU18xM1BsYXRmb3JtRXZlbnQ0VHlwZUViCiBfX1pON1dlYkNv
cmUyMVJlc291cmNlTG9hZFNjaGVkdWxlcjIwc2VydmVQZW5kaW5nUmVxdWVzdHNFTlNfMjBSZXNv
dXJjZUxvYWRQcmlvcml0eUUKIF9fWk43V2ViQ29yZTIxUmVzb3VyY2VMb2FkU2NoZWR1bGVyMjRz
Y2hlZHVsZVBsdWdpblN0cmVhbUxvYWRFUE5TXzVGcmFtZUVQTlNfMzJOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlckNsaWVudEVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RQpAQCAtNjYxLDggKzY2Miw2
IEBAIF9fWk43V2ViQ29yZTI1UGx1Z2luTWFpblRocmVhZFNjaGVkdWxlcjE2dW5yZWdpc3RlclBs
dWdpbkVQNF9OUFAKIF9fWk43V2ViQ29yZTI1UGx1Z2luTWFpblRocmVhZFNjaGVkdWxlcjlzY2hl
ZHVsZXJFdgogX19aTjdXZWJDb3JlMjVhZGRMYW5ndWFnZUNoYW5nZU9ic2VydmVyRVB2UEZ2UzBf
RQogX19aTjdXZWJDb3JlMjVjb21wdXRlVmlld3BvcnRBdHRyaWJ1dGVzRU5TXzE3Vmlld3BvcnRB
cmd1bWVudHNFaWlpaU5TXzdJbnRTaXplRQotX19aTjdXZWJDb3JlNTByZXN0cmljdFNjYWxlRmFj
dG9yVG9Jbml0aWFsU2NhbGVJZk5vdFVzZXJTY2FsYWJsZUVSTlNfMThWaWV3cG9ydEF0dHJpYnV0
ZXNFCi1fX1pON1dlYkNvcmU0MHJlc3RyaWN0TWluaW11bVNjYWxlRmFjdG9yVG9WaWV3cG9ydFNp
emVFUk5TXzE4Vmlld3BvcnRBdHRyaWJ1dGVzRU5TXzdJbnRTaXplRQogX19aTjdXZWJDb3JlMjVj
b250ZXh0TWVudUl0ZW1UYWdPdXRsaW5lRXYKIF9fWk43V2ViQ29yZTI2Q1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb25DMUV2CiBfX1pON1dlYkNvcmUyNlVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9y
Mjdwcm9jZXNzaW5nVXNlclR5cGluZ0dlc3R1cmVFdgpAQCAtNzIwLDYgKzcxOSw3IEBAIF9fWk43
V2ViQ29yZTM3Y29udGV4dE1lbnVJdGVtVGFnVHJhbnNmb3JtYXRpb25zTWVudUV2CiBfX1pON1dl
YkNvcmUzOGNvbnRleHRNZW51SXRlbVRhZ1dyaXRpbmdEaXJlY3Rpb25NZW51RXYKIF9fWk43V2Vi
Q29yZTNtYWNFUktOU18xMENyZWRlbnRpYWxFCiBfX1pON1dlYkNvcmUzbWFjRVJLTlNfMjNBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZUUKK19fWk43V2ViQ29yZTQwcmVzdHJpY3RNaW5pbXVtU2NhbGVG
YWN0b3JUb1ZpZXdwb3J0U2l6ZUVSTlNfMThWaWV3cG9ydEF0dHJpYnV0ZXNFTlNfN0ludFNpemVF
CiBfX1pON1dlYkNvcmU0MmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrR3JhbW1hcldpdGhTcGVsbGlu
Z0V2CiBfX1pON1dlYkNvcmU0MmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5
cGluZ0V2CiBfX1pON1dlYkNvcmU0NmNvbnRleHRNZW51SXRlbVRhZ0NvcnJlY3RTcGVsbGluZ0F1
dG9tYXRpY2FsbHlFdgpAQCAtNzg2LDYgKzc4Niw3IEBAIF9fWk43V2ViQ29yZTR0b0pTRVBOM0pT
QzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzEwQ2xpZW50UmVjdEUKIF9f
Wk43V2ViQ29yZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RF
UE5TXzE5Q1NTU3R5bGVEZWNsYXJhdGlvbkUKIF9fWk43V2ViQ29yZTR0b0pTRVBOM0pTQzlFeGVj
U3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzVSYW5nZUUKIF9fWk43V2ViQ29yZTR0
b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzhOb2RlTGlz
dEUKK19fWk43V2ViQ29yZTUwcmVzdHJpY3RTY2FsZUZhY3RvclRvSW5pdGlhbFNjYWxlSWZOb3RV
c2VyU2NhbGFibGVFUk5TXzE4Vmlld3BvcnRBdHRyaWJ1dGVzRQogX19aTjdXZWJDb3JlNUNvbG9y
MTF0cmFuc3BhcmVudEUKIF9fWk43V2ViQ29yZTVDb2xvcjV3aGl0ZUUKIF9fWk43V2ViQ29yZTVG
cmFtZTEwY3JlYXRlVmlld0VSS05TXzdJbnRTaXplRVJLTlNfNUNvbG9yRWJTM19iTlNfMTNTY3Jv
bGxiYXJNb2RlRWJTN19iCkBAIC04MzcsOSArODM4LDkgQEAgX19aTjdXZWJDb3JlNkVkaXRvcjIx
YXBwbHlTdHlsZVRvU2VsZWN0aW9uRVBOU18xOUNTU1N0eWxlRGVjbGFyYXRpb25FTlNfMTBFZGl0
QWMKIF9fWk43V2ViQ29yZTZFZGl0b3IyMWlzU2VsZWN0aW9uTWlzc3BlbGxlZEV2CiBfX1pON1dl
YkNvcmU2RWRpdG9yMjNzZXRCYXNlV3JpdGluZ0RpcmVjdGlvbkUxNldyaXRpbmdEaXJlY3Rpb24K
IF9fWk43V2ViQ29yZTZFZGl0b3IyNGFkdmFuY2VUb05leHRNaXNzcGVsbGluZ0ViCi1fX1pON1dl
YkNvcmU2RWRpdG9yMjRyZXBsYWNlU2VsZWN0aW9uV2l0aFRleHRFUktOM1dURjZTdHJpbmdFYmIK
IF9fWk43V2ViQ29yZTZFZGl0b3IyNGNvbXB1dGVBbmRTZXRUeXBpbmdTdHlsZUVQTlNfMTlDU1NT
dHlsZURlY2xhcmF0aW9uRU5TXzEwRWRpdEFjdGlvbkUKIF9fWk43V2ViQ29yZTZFZGl0b3IyNGlz
U2VsZWN0aW9uVW5ncmFtbWF0aWNhbEV2CitfX1pON1dlYkNvcmU2RWRpdG9yMjRyZXBsYWNlU2Vs
ZWN0aW9uV2l0aFRleHRFUktOM1dURjZTdHJpbmdFYmIKIF9fWk43V2ViQ29yZTZFZGl0b3IyNmRl
Y3JlYXNlU2VsZWN0aW9uTGlzdExldmVsRXYKIF9fWk43V2ViQ29yZTZFZGl0b3IyNmluY3JlYXNl
U2VsZWN0aW9uTGlzdExldmVsRXYKIF9fWk43V2ViQ29yZTZFZGl0b3IyNndyaXRlU2VsZWN0aW9u
VG9QYXN0ZWJvYXJkRVJLTjNXVEY2U3RyaW5nRVJLTlMxXzZWZWN0b3JJUzJfTG0wRUVFCkBAIC05
MjcsNiArOTI4LDcgQEAgX19aTjdXZWJDb3JlOEludFBvaW50QzFFUks4X05TUG9pbnQKIF9fWk43
V2ViQ29yZThQb3NpdGlvbkMxRU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2RlRUVFaU5TMF8xMEFu
Y2hvclR5cGVFCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxNHNldEphdmFFbmFibGVkRWIKIF9fWk43
V2ViQ29yZThTZXR0aW5nczE1c2V0V2ViR0xFbmFibGVkRWIKK19fWk43V2ViQ29yZThTZXR0aW5n
czE2c2V0U2NyaXB0RW5hYmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxNnNldFVzZXNQYWdl
Q2FjaGVFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMTdzZXRQbHVnaW5zRW5hYmxlZEViCiBfX1pO
N1dlYkNvcmU4U2V0dGluZ3MxOHNldERPTVBhc3RlQWxsb3dlZEViCkBAIC05MzksNyArOTQxLDYg
QEAgX19aTjdXZWJDb3JlOFNldHRpbmdzMTltaW5ET01UaW1lckludGVydmFsRXYKIF9fWk43V2Vi
Q29yZThTZXR0aW5nczE5c2V0U2hvd0RlYnVnQm9yZGVyc0ViCiBfX1pON1dlYkNvcmU4U2V0dGlu
Z3MyMHNldEN1cnNpdmVGb250RmFtaWx5RVJLTjNXVEYxMkF0b21pY1N0cmluZ0UxMVVTY3JpcHRD
b2RlCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyMHNldEZhbnRhc3lGb250RmFtaWx5RVJLTjNXVEYx
MkF0b21pY1N0cmluZ0UxMVVTY3JpcHRDb2RlCi1fX1pON1dlYkNvcmU4U2V0dGluZ3MxNnNldFNj
cmlwdEVuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjBzZXRYU1NBdWRpdG9yRW5hYmxl
ZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyMXNldFNob3dSZXBhaW50Q291bnRlckViCiBfX1pO
N1dlYkNvcmU4U2V0dGluZ3MyMXNldFN0YW5kYXJkRm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNT
dHJpbmdFMTFVU2NyaXB0Q29kZQpAQCAtMTAyNiw3ICsxMDI3LDYgQEAgX19aTjdXZWJDb3JlOUZy
YW1lVmlldzE3c2V0U2Nyb2xsUG9zaXRpb25FUktOU184SW50UG9pbnRFCiBfX1pON1dlYkNvcmU5
RnJhbWVWaWV3MTdzZXRUcmFja3NSZXBhaW50c0ViCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MTh1
cGRhdGVDb250cm9sVGludHNFdgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzE5c2Nyb2xsRWxlbWVu
dFRvUmVjdEVQTlNfN0VsZW1lbnRFUktOU183SW50UmVjdEUKLV9fWk43V2ViQ29yZTlGcmFtZVZp
ZXc0M3NldFNob3VsZExheW91dEZpeGVkRWxlbWVudHNSZWxhdGl2ZVRvRnJhbWVFYgogX19aTjdX
ZWJDb3JlOUZyYW1lVmlldzIwZW50ZXJDb21wb3NpdGluZ01vZGVFdgogX19aTjdXZWJDb3JlOUZy
YW1lVmlldzIxZmx1c2hEZWZlcnJlZFJlcGFpbnRzRXYKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcy
MnNldEJhc2VCYWNrZ3JvdW5kQ29sb3JFUktOU181Q29sb3JFCkBAIC0xMDM3LDYgKzEwMzcsNyBA
QCBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjlzZXRTaG91bGRVcGRhdGVXaGlsZU9mZnNjcmVlbkVi
CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3Mzd1cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVkUmVj
dXJzaXZlRXYKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXczOHNjcm9sbFBvc2l0aW9uQ2hhbmdlZFZp
YVBsYXRmb3JtV2lkZ2V0RXYKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXczOHN5bmNDb21wb3NpdGlu
Z1N0YXRlSW5jbHVkaW5nU3ViZnJhbWVzRXYKK19fWk43V2ViQ29yZTlGcmFtZVZpZXc0M3NldFNo
b3VsZExheW91dEZpeGVkRWxlbWVudHNSZWxhdGl2ZVRvRnJhbWVFYgogX19aTjdXZWJDb3JlOUZy
YW1lVmlldzZjcmVhdGVFUE5TXzVGcmFtZUUKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXc2Y3JlYXRl
RVBOU181RnJhbWVFUktOU183SW50U2l6ZUUKIF9fWk43V2ViQ29yZTlIVE1MTmFtZXMxMGxpc3Rp
bmdUYWdFCkBAIC0xMTMzLDEzICsxMTM0LDEyIEBAIF9fWk5LN1dlYkNvcmUxMFNjcm9sbFZpZXcx
NHNjcm9sbGJhck1vZGVzRVJOU18xM1Njcm9sbGJhck1vZGVFUzJfCiBfX1pOSzdXZWJDb3JlMTBT
Y3JvbGxWaWV3MTR1c2VGaXhlZExheW91dEV2CiBfX1pOSzdXZWJDb3JlMTBTY3JvbGxWaWV3MTVm
aXhlZExheW91dFNpemVFdgogX19aTks3V2ViQ29yZTEwU2Nyb2xsVmlldzE2Y29udGVudHNUb1dp
bmRvd0VSS05TXzdJbnRSZWN0RQotX19aTks3V2ViQ29yZTEwU2Nyb2xsVmlldzE2d2luZG93VG9D
b250ZW50c0VSS05TXzdJbnRSZWN0RQogX19aTks3V2ViQ29yZTEwU2Nyb2xsVmlldzE2Y29udGVu
dHNUb1dpbmRvd0VSS05TXzhJbnRQb2ludEUKK19fWk5LN1dlYkNvcmUxMFNjcm9sbFZpZXcxNndp
bmRvd1RvQ29udGVudHNFUktOU183SW50UmVjdEUKIF9fWk5LN1dlYkNvcmUxMFNjcm9sbFZpZXcx
NndpbmRvd1RvQ29udGVudHNFUktOU184SW50UG9pbnRFCi1fX1pOSzdXZWJDb3JlMTBTY3JvbGxW
aWV3MTh2aXNpYmxlQ29udGVudFJlY3RFYgogX19aTks3V2ViQ29yZTEwU2Nyb2xsVmlldzE4Y29u
dGVudHNUb1Jvb3RWaWV3RVJLTlNfN0ludFJlY3RFCiBfX1pOSzdXZWJDb3JlMTBTY3JvbGxWaWV3
MThjb250ZW50c1RvUm9vdFZpZXdFUktOU184SW50UG9pbnRFCi1fX1pON1dlYkNvcmUxMUNhY2hl
ZEltYWdlNWltYWdlRXYKK19fWk5LN1dlYkNvcmUxMFNjcm9sbFZpZXcxOHZpc2libGVDb250ZW50
UmVjdEViCiBfX1pOSzdXZWJDb3JlMTFGcmFtZUxvYWRlcjEwaXNDb21wbGV0ZUV2CiBfX1pOSzdX
ZWJDb3JlMTFGcmFtZUxvYWRlcjE0Y2FuY2VsbGVkRXJyb3JFUktOU18xNVJlc291cmNlUmVxdWVz
dEUKIF9fWk5LN1dlYkNvcmUxMUZyYW1lTG9hZGVyMTRmcmFtZUhhc0xvYWRlZEV2CkBAIC0xMTc0
LDExICsxMTc0LDExIEBAIF9fWk5LN1dlYkNvcmUxMVNjcmlwdFZhbHVlOWdldFN0cmluZ0VQTjNK
U0M5RXhlY1N0YXRlRVJOM1dURjZTdHJpbmdFCiBfX1pOSzdXZWJDb3JlMTJJY29uRGF0YWJhc2Ux
MmRhdGFiYXNlUGF0aEV2CiBfX1pOSzdXZWJDb3JlMTJJY29uRGF0YWJhc2UyNHNob3VsZFN0b3BU
aHJlYWRBY3Rpdml0eUV2CiBfX1pOSzdXZWJDb3JlMTJJY29uRGF0YWJhc2U5aXNFbmFibGVkRXYK
LV9fWk5LN1dlYkNvcmUxMlJlbmRlck9iamVjdDIzYWJzb2x1dGVCb3VuZGluZ0JveFJlY3RFYgor
X19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTNzdHlsZUluUmVnaW9uRXYKIF9fWk5LN1dlYkNv
cmUxMlJlbmRlck9iamVjdDE0ZW5jbG9zaW5nTGF5ZXJFdgogX19aTks3V2ViQ29yZTEyUmVuZGVy
T2JqZWN0MTVsb2NhbFRvQWJzb2x1dGVFUktOU18xMEZsb2F0UG9pbnRFYmIKK19fWk5LN1dlYkNv
cmUxMlJlbmRlck9iamVjdDIzYWJzb2x1dGVCb3VuZGluZ0JveFJlY3RFYgogX19aTks3V2ViQ29y
ZTEyUmVuZGVyT2JqZWN0N2NoaWxkQXRFagotX19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTNz
dHlsZUluUmVnaW9uRXYKIF9fWk5LN1dlYkNvcmUxMlJlbmRlcldpZGdldDE0d2luZG93Q2xpcFJl
Y3RFdgogX19aTks3V2ViQ29yZTEyU2hhcmVkQnVmZmVyMTFnZXRTb21lRGF0YUVSUEtjagogX19a
Tks3V2ViQ29yZTEyU2hhcmVkQnVmZmVyNGRhdGFFdgpAQCAtMTQ5MCw2ICsxNDkwLDcgQEAgX3dr
R2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeQogX3drR2V0SFRUUFBpcGVsaW5pbmdQcmlvcml0eQog
X3drR2V0SHlwaGVuYXRpb25Mb2NhdGlvbkJlZm9yZUluZGV4CiBfd2tHZXRNSU1FVHlwZUZvckV4
dGVuc2lvbgorX3drR2V0TlNFdmVudEtleUNoYXIKIF93a0dldE5TVVJMUmVzcG9uc2VDYWxjdWxh
dGVkRXhwaXJhdGlvbgogX3drR2V0TlNVUkxSZXNwb25zZUxhc3RNb2RpZmllZERhdGUKIF93a0dl
dE5TVVJMUmVzcG9uc2VNdXN0UmV2YWxpZGF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNiZmI0MmRiY2Y3N2Q0ODZhNTFmYzg0
OWRkYzFmN2M0M2Y4ZWQ0ZjAuLjhkYTAwYjlkMDEwMTAyNzI1OTZhNDY4MDk5ZTE3ZDIwMTc1NGY0
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTUyNTEsNiArNTI1MSw4IEBACiAJCUJDQThDODFGMTFFM0QzNjkwMDgxMkZCNyAv
KiBCYWNrRm9yd2FyZENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkNBOEM4MUQxMUUzRDM2OTAwODEyRkI3IC8qIEJhY2tGb3J3YXJk
Q29udHJvbGxlci5jcHAgKi87IH07CiAJCUJDQThDQTVGMTFFNEU2RDEwMDgxMkZCNyAvKiBCYWNr
Rm9yd2FyZExpc3RJbXBsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDQThDQTVEMTFFNEU2RDEwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZExpc3RJbXBs
LmNwcCAqLzsgfTsKIAkJQkNBOENBNjAxMUU0RTZEMTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkTGlz
dEltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
QThDQTVFMTFFNEU2RDEwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZExpc3RJbXBsLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkNBQTQ4NkYxNEEwNTI1
MzAwODhGQUM0IC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBQTQ4NkQxNEEwNTI1MzAwODhGQUM0IC8qIFBs
YXRmb3JtRXZlbnRGYWN0b3J5Lm1tICovOyB9OworCQlCQ0FBNDg3MDE0QTA1MjUzMDA4OEZBQzQg
LyogUGxhdGZvcm1FdmVudEZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDQUE0ODZFMTRBMDUyNTMwMDg4RkFDNCAvKiBQbGF0Zm9ybUV2ZW50
RmFjdG9yeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUJDQUE5MEMzMEE3RUJBNjAwMDhCMTIyOSAvKiBTY3JvbGxiYXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBQTkwQzIwQTdFQkE2MDAwOEIx
MjI5IC8qIFNjcm9sbGJhci5jcHAgKi87IH07CiAJCUJDQUI0MTgxMTNFMzU2RTgwMEQ4QUFGMyAv
KiBSZWdpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkNBQjQxN0YxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5jcHAgKi87IH07CiAJCUJDQUI0
MTgyMTNFMzU2RTgwMEQ4QUFGMyAvKiBSZWdpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQUI0MTgwMTNFMzU2RTgwMEQ4QUFGMyAvKiBSZWdpb24u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTI2
MjAsNiArMTI2MjIsOCBAQAogCQlCQ0E4QzgxRDExRTNEMzY5MDA4MTJGQjcgLyogQmFja0Zvcndh
cmRDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJh
Y2tGb3J3YXJkQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
QThDQTVEMTFFNEU2RDEwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZExpc3RJbXBsLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhY2tGb3J3YXJkTGlzdEltcGwuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0E4Q0E1RTExRTRFNkQxMDA4MTJGQjcgLyog
QmFja0ZvcndhcmRMaXN0SW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBC
YWNrRm9yd2FyZExpc3RJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDQUE0
ODZEMTRBMDUyNTMwMDg4RkFDNCAvKiBQbGF0Zm9ybUV2ZW50RmFjdG9yeS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsYXRmb3JtRXZlbnRGYWN0b3J5Lm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0FBNDg2RTE0QTA1MjUzMDA4OEZBQzQgLyog
UGxhdGZvcm1FdmVudEZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UGxhdGZvcm1FdmVudEZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNB
QTkwQzIwQTdFQkE2MDAwOEIxMjI5IC8qIFNjcm9sbGJhci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xsYmFyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkNBQjQxN0YxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQ0FCNDE4MDEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTU2NTksNiArMTU2NjMsOCBAQAogCQkJCTkzODBGNDc3MDlBMTFBQ0MwMDFG
REIzNCAvKiBXaWRnZXRNYWMubW0gKi8sCiAJCQkJQ0RFQTc2MkUxNDYwODRERTAwOEIzMUYxIC8q
IFBsYXRmb3JtQ2xvY2tDQS5jcHAgKi8sCiAJCQkJQ0RFQTc2MkYxNDYwODRFRTAwOEIzMUYxIC8q
IFBsYXRmb3JtQ2xvY2tDQS5oICovLAorCQkJCUJDQUE0ODZEMTRBMDUyNTMwMDg4RkFDNCAvKiBQ
bGF0Zm9ybUV2ZW50RmFjdG9yeS5tbSAqLywKKwkJCQlCQ0FBNDg2RTE0QTA1MjUzMDA4OEZBQzQg
LyogUGxhdGZvcm1FdmVudEZhY3RvcnkuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWFjOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI0OTU5LDggKzI0OTY1LDcgQEAKIAkJCQkxQTJG
OUQ3QTE0OTY4Qzc0MDA2NUFDNjMgLyogU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBQTcxNjBCMTQ5QkM0REIwMDE2RUMxOSAvKiBUaWxlQ2FjaGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUMzN0NERUJEMTQ5RUYyMDMwMDQyMDkwRCAvKiBDb2xvckNob29zZXJDbGll
bnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTFBQzY5MjZBMTRBMTI1MzIwMEJEODVGMSAvKiBTY3Jv
bGxhYmxlQXJlYUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkRCMTcwMDYxNEEyQkFCMjAw
QTJCNUQ5IC8qIE11bHRpQ2hhbm5lbFJlc2FtcGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkNB
QTQ4NzAxNEEwNTI1MzAwODhGQUM0IC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5LmggaW4gSGVhZGVy
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKQEAgLTI3ODY1LDcgKzI3ODcwLDcgQEAKIAkJCQlBODBBOTQyMzE0OUYyMjVFMDA5ODky
OTEgLyogSlNET01XaW5kb3dXZWJBdWRpb0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
ODBBOTQyNTE0OUYyMjcxMDA5ODkyOTEgLyogSlNET01XaW5kb3dXZWJTb2NrZXRDdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTJGNTJFMTExNEEwMTM0RjAwQUNDMzk3IC8qIE5TU2Nyb2xs
ZXJJbXBEZXRhaWxzLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJRkRCMTcwMDUxNEEyQkFCMjAwQTJC
NUQ5IC8qIE11bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQ0FB
NDg2RjE0QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZvcm1FdmVudEZhY3RvcnkubW0gaW4gU291cmNl
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQppbmRleCA4
MmFhNzllMDM0Mzc5ZTEyOGNmNGI2NzhkYzc1MmRkM2IzYWMxYmNlLi41ZjkxMTMyMTg4NDM0YTI2
NzRlMmQzNGU4NWY3OGRmNTI0ZTMwOGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L21hYy9FdmVudEhhbmRsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZl
bnRIYW5kbGVyTWFjLm1tCkBAIC00MSw4ICs0MSw3IEBACiAjaW5jbHVkZSAiTW91c2VFdmVudFdp
dGhIaXRUZXN0UmVzdWx0cy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVk
ZSAiUGFnZS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgotI2luY2x1ZGUg
IlBsYXRmb3JtV2hlZWxFdmVudC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtRXZlbnRGYWN0b3J5Lmgi
CiAjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCiAjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9u
Q2hlY2tzLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyLmgiCkBAIC0xMDQsOSArMTAzLDcgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OndoZWVsRXZlbnQoTlNFdmVudCAqZXZlbnQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIEN1cnJlbnRFdmVudFNjb3BlIHNjb3BlKGV2ZW50KTsKLQotICAgIFBs
YXRmb3JtV2hlZWxFdmVudCB3aGVlbEV2ZW50KGV2ZW50LCBwYWdlLT5jaHJvbWUoKS0+cGxhdGZv
cm1QYWdlQ2xpZW50KCkpOwotICAgIHJldHVybiBoYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQp
OworICAgIHJldHVybiBoYW5kbGVXaGVlbEV2ZW50KFBsYXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVh
dGVQbGF0Zm9ybVdoZWVsRXZlbnQoZXZlbnQsIHBhZ2UtPmNocm9tZSgpLT5wbGF0Zm9ybVBhZ2VD
bGllbnQoKSkpOwogfQogCiBib29sIEV2ZW50SGFuZGxlcjo6a2V5RXZlbnQoTlNFdmVudCAqZXZl
bnQpCkBAIC0xMTYsNyArMTEzLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmtleUV2ZW50KE5TRXZl
bnQgKmV2ZW50KQogICAgIEFTU0VSVChbZXZlbnQgdHlwZV0gPT0gTlNLZXlEb3duIHx8IFtldmVu
dCB0eXBlXSA9PSBOU0tleVVwKTsKIAogICAgIEN1cnJlbnRFdmVudFNjb3BlIHNjb3BlKGV2ZW50
KTsKLSAgICByZXR1cm4ga2V5RXZlbnQoUGxhdGZvcm1LZXlib2FyZEV2ZW50KGV2ZW50KSk7Cisg
ICAgcmV0dXJuIGtleUV2ZW50KFBsYXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQoZXZlbnQpKTsKIAogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAK
QEAgLTY0Niw3ICs2NDMsNyBAQCBQbGF0Zm9ybU1vdXNlRXZlbnQgRXZlbnRIYW5kbGVyOjpjdXJy
ZW50UGxhdGZvcm1Nb3VzZUV2ZW50KCkgY29uc3QKICAgICBOU1ZpZXcgKndpbmRvd1ZpZXcgPSBu
aWw7CiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCiAgICAgICAgIHdpbmRv
d1ZpZXcgPSBwYWdlLT5jaHJvbWUoKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCk7Ci0gICAgcmV0dXJu
IFBsYXRmb3JtTW91c2VFdmVudChjdXJyZW50TlNFdmVudCgpLCB3aW5kb3dWaWV3KTsKKyAgICBy
ZXR1cm4gUGxhdGZvcm1FdmVudEZhY3Rvcnk6OmNyZWF0ZVBsYXRmb3JtTW91c2VFdmVudChjdXJy
ZW50TlNFdmVudCgpLCB3aW5kb3dWaWV3KTsKIH0KIAogYm9vbCBFdmVudEhhbmRsZXI6OmV2ZW50
QWN0aXZhdGVkVmlldyhjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1FdmVudC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1FdmVudC5oCmluZGV4IGEzMmQyODBiMmE2MzIxMWM4
NGU0NzZjYjhkMTg4YTAxOTRkODAxYjIuLjc3ZDQ0N2U0Y2VlZDFjMDFkZWMxNjc4YTBmZDRkYTBl
MWVlMjY0YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXZl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUV2ZW50LmgKQEAgLTY1
LDU5ICs2NSw1OSBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9OwogCi0gICAgZW51bSBNb2RpZmll
cktleSB7Ci0gICAgICAgIEFsdEtleSA9IDEgPDwgMCwKLSAgICAgICAgQ3RybEtleSA9IDEgPDwg
MSwKLSAgICAgICAgTWV0YUtleSA9IDEgPDwgMiwKLSAgICAgICAgU2hpZnRLZXkgPSAxIDw8IDMK
KyAgICBlbnVtIE1vZGlmaWVycyB7CisgICAgICAgIEFsdEtleSAgICAgID0gMSA8PCAwLAorICAg
ICAgICBDdHJsS2V5ICAgICA9IDEgPDwgMSwKKyAgICAgICAgTWV0YUtleSAgICAgPSAxIDw8IDIs
CisgICAgICAgIFNoaWZ0S2V5ICAgID0gMSA8PCAzLAogICAgIH07CiAKICAgICBUeXBlIHR5cGUo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUeXBlPihtX3R5cGUpOyB9CiAKLSAgICBib29s
IHNoaWZ0S2V5KCkgY29uc3QgeyByZXR1cm4gbV9zaGlmdEtleTsgfQotICAgIGJvb2wgY3RybEtl
eSgpIGNvbnN0IHsgcmV0dXJuIG1fY3RybEtleTsgfQotICAgIGJvb2wgYWx0S2V5KCkgY29uc3Qg
eyByZXR1cm4gbV9hbHRLZXk7IH0KLSAgICBib29sIG1ldGFLZXkoKSBjb25zdCB7IHJldHVybiBt
X21ldGFLZXk7IH0KKyAgICBib29sIHNoaWZ0S2V5KCkgY29uc3QgeyByZXR1cm4gbV9tb2RpZmll
cnMgJiBTaGlmdEtleTsgfQorICAgIGJvb2wgY3RybEtleSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9k
aWZpZXJzICYgQ3RybEtleTsgfQorICAgIGJvb2wgYWx0S2V5KCkgY29uc3QgeyByZXR1cm4gbV9t
b2RpZmllcnMgJiBBbHRLZXk7IH0KKyAgICBib29sIG1ldGFLZXkoKSBjb25zdCB7IHJldHVybiBt
X21vZGlmaWVycyAmIE1ldGFLZXk7IH0KIAotICAgIHVuc2lnbmVkIG1vZGlmaWVycygpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gKGFsdEtleSgpID8gQWx0S2V5IDogMCkKLSAgICAgICAg
ICAgIHwgKGN0cmxLZXkoKSA/IEN0cmxLZXkgOiAwKQotICAgICAgICAgICAgfCAobWV0YUtleSgp
ID8gTWV0YUtleSA6IDApCi0gICAgICAgICAgICB8IChzaGlmdEtleSgpID8gU2hpZnRLZXkgOiAw
KTsKLSAgICB9CisgICAgdW5zaWduZWQgbW9kaWZpZXJzKCkgY29uc3QgeyByZXR1cm4gbV9tb2Rp
ZmllcnM7IH0KIAogICAgIGRvdWJsZSB0aW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX3RpbWVz
dGFtcDsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgUGxhdGZvcm1FdmVudCgpCiAgICAgICAgIDogbV90
eXBlKE5vVHlwZSkKLSAgICAgICAgLCBtX3NoaWZ0S2V5KGZhbHNlKQotICAgICAgICAsIG1fY3Ry
bEtleShmYWxzZSkKLSAgICAgICAgLCBtX2FsdEtleShmYWxzZSkKLSAgICAgICAgLCBtX21ldGFL
ZXkoZmFsc2UpCisgICAgICAgICwgbV9tb2RpZmllcnMoMCkKICAgICAgICAgLCBtX3RpbWVzdGFt
cCgwKQogICAgIHsKICAgICB9CiAKICAgICBQbGF0Zm9ybUV2ZW50KFR5cGUgdHlwZSkKICAgICAg
ICAgOiBtX3R5cGUodHlwZSkKLSAgICAgICAgLCBtX3NoaWZ0S2V5KGZhbHNlKQotICAgICAgICAs
IG1fY3RybEtleShmYWxzZSkKLSAgICAgICAgLCBtX2FsdEtleShmYWxzZSkKLSAgICAgICAgLCBt
X21ldGFLZXkoZmFsc2UpCisgICAgICAgICwgbV9tb2RpZmllcnMoMCkKICAgICAgICAgLCBtX3Rp
bWVzdGFtcCgwKQogICAgIHsKICAgICB9CiAKKyAgICBQbGF0Zm9ybUV2ZW50KFR5cGUgdHlwZSwg
TW9kaWZpZXJzIG1vZGlmaWVycywgZG91YmxlIHRpbWVzdGFtcCkKKyAgICAgICAgOiBtX3R5cGUo
dHlwZSkKKyAgICAgICAgLCBtX21vZGlmaWVycyhtb2RpZmllcnMpCisgICAgICAgICwgbV90aW1l
c3RhbXAodGltZXN0YW1wKQorICAgIHsKKyAgICB9CisKICAgICBQbGF0Zm9ybUV2ZW50KFR5cGUg
dHlwZSwgYm9vbCBzaGlmdEtleSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBtZXRh
S2V5LCBkb3VibGUgdGltZXN0YW1wKQogICAgICAgICA6IG1fdHlwZSh0eXBlKQotICAgICAgICAs
IG1fc2hpZnRLZXkoc2hpZnRLZXkpCi0gICAgICAgICwgbV9jdHJsS2V5KGN0cmxLZXkpCi0gICAg
ICAgICwgbV9hbHRLZXkoYWx0S2V5KQotICAgICAgICAsIG1fbWV0YUtleShtZXRhS2V5KQorICAg
ICAgICAsIG1fbW9kaWZpZXJzKDApCiAgICAgICAgICwgbV90aW1lc3RhbXAodGltZXN0YW1wKQog
ICAgIHsKKyAgICAgICAgaWYgKHNoaWZ0S2V5KQorICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0g
U2hpZnRLZXk7CisgICAgICAgIGlmIChjdHJsS2V5KQorICAgICAgICAgICAgbV9tb2RpZmllcnMg
fD0gQ3RybEtleTsKKyAgICAgICAgaWYgKGFsdEtleSkKKyAgICAgICAgICAgIG1fbW9kaWZpZXJz
IHw9IEFsdEtleTsKKyAgICAgICAgaWYgKG1ldGFLZXkpCisgICAgICAgICAgICBtX21vZGlmaWVy
cyB8PSBNZXRhS2V5OwogICAgIH0KIAogICAgIC8vIEV4cGxpY2l0IHByb3RlY3RlZCBkZXN0cnVj
dG9yIHNvIHRoYXQgcGVvcGxlIGRvbid0IGFjY2lkZW50YWxseQpAQCAtMTI3LDEwICsxMjcsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgfQogCiAgICAgdW5zaWduZWQgbV90eXBlOwotICAgIGJvb2wgbV9z
aGlmdEtleTsKLSAgICBib29sIG1fY3RybEtleTsKLSAgICBib29sIG1fYWx0S2V5OwotICAgIGJv
b2wgbV9tZXRhS2V5OworICAgIHVuc2lnbmVkIG1fbW9kaWZpZXJzOwogICAgIGRvdWJsZSBtX3Rp
bWVzdGFtcDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtR2VzdHVyZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1
cmVFdmVudC5oCmluZGV4IDU1ZmU4ZWZhODYxODk2OGMxODBlMGYwNjNlYjk3ZmU3ZDZmY2Y3ZTUu
LmUzMTNiZTUwZTM5MzJmOWNlMWNiYzU1YjQwMWRhMjc2MzJhNDU0MzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUV2ZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlRXZlbnQuaApAQCAtNjAsNyArNjAsNiBA
QCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSW50UG9pbnQgbV9wb3NpdGlvbjsKICAgICBJbnRQ
b2ludCBtX2dsb2JhbFBvc2l0aW9uOwotICAgIGRvdWJsZSBtX3RpbWVzdGFtcDsKICAgICBmbG9h
dCBtX2RlbHRhWDsKICAgICBmbG9hdCBtX2RlbHRhWTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oCmluZGV4IDJlZDFhMGFmODhkYWViZGM1
Yjk0MzE2ZTJkMjNhMTJjMzhmMTQ2ZjYuLmYxNTQ5NjY3MzJhZDk0OWE4ZDhiMzAwOTYyMzY3MTU3
OTczMjg0ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtS2V5
Ym9hcmRFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtS2V5Ym9h
cmRFdmVudC5oCkBAIC03MCwxMyArNzAsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1
YmxpYzoKICAgICAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50KCkKICAgICAgICAgICAgIDogUGxh
dGZvcm1FdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duKQotICAgICAgICAgICAgLCBtX2F1dG9S
ZXBlYXQoZmFsc2UpCiAgICAgICAgICAgICAsIG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlKDApCiAg
ICAgICAgICAgICAsIG1fbmF0aXZlVmlydHVhbEtleUNvZGUoMCkKKyAgICAgICAgICAgICwgbV9t
YWNDaGFyQ29kZSgwKQorICAgICAgICAgICAgLCBtX2F1dG9SZXBlYXQoZmFsc2UpCiAgICAgICAg
ICAgICAsIG1faXNLZXlwYWQoZmFsc2UpCi0jaWYgUExBVEZPUk0oV0lOKSB8fCBQTEFURk9STShD
SFJPTUlVTSkKICAgICAgICAgICAgICwgbV9pc1N5c3RlbUtleShmYWxzZSkKLSNlbmRpZgogI2lm
IFBMQVRGT1JNKEdUSykKICAgICAgICAgICAgICwgbV9nZGtFdmVudEtleSgwKQogI2VuZGlmCkBA
IC04Niw2ICs4NSwyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHsKICAgICAgICAg
fQogCisgICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudChUeXBlIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgdGV4dCwgY29uc3QgU3RyaW5nJiB1bm1vZGlmaWVkVGV4dCwgY29uc3QgU3RyaW5nJiBrZXlJ
ZGVudGlmaWVyLCBpbnQgd2luZG93c1ZpcnR1YWxLZXlDb2RlLCBpbnQgbmF0aXZlVmlydHVhbEtl
eUNvZGUsIGludCBtYWNDaGFyQ29kZSwgYm9vbCBpc0F1dG9SZXBlYXQsIGJvb2wgaXNLZXlwYWQs
IGJvb2wgaXNTeXN0ZW1LZXksIE1vZGlmaWVycyBtb2RpZmllcnMsIGRvdWJsZSB0aW1lc3RhbXAp
CisgICAgICAgICAgICA6IFBsYXRmb3JtRXZlbnQodHlwZSwgbW9kaWZpZXJzLCB0aW1lc3RhbXAp
CisgICAgICAgICAgICAsIG1fdGV4dCh0ZXh0KQorICAgICAgICAgICAgLCBtX3VubW9kaWZpZWRU
ZXh0KHVubW9kaWZpZWRUZXh0KQorICAgICAgICAgICAgLCBtX2tleUlkZW50aWZpZXIoa2V5SWRl
bnRpZmllcikKKyAgICAgICAgICAgICwgbV93aW5kb3dzVmlydHVhbEtleUNvZGUod2luZG93c1Zp
cnR1YWxLZXlDb2RlKQorICAgICAgICAgICAgLCBtX25hdGl2ZVZpcnR1YWxLZXlDb2RlKG5hdGl2
ZVZpcnR1YWxLZXlDb2RlKQorICAgICAgICAgICAgLCBtX21hY0NoYXJDb2RlKG1hY0NoYXJDb2Rl
KQorICAgICAgICAgICAgLCBtX2F1dG9SZXBlYXQoaXNBdXRvUmVwZWF0KQorICAgICAgICAgICAg
LCBtX2lzS2V5cGFkKGlzS2V5cGFkKQorICAgICAgICAgICAgLCBtX2lzU3lzdGVtS2V5KGlzU3lz
dGVtS2V5KQorICAgICAgICB7CisgICAgICAgIH0KKwogICAgICAgICB2b2lkIGRpc2FtYmlndWF0
ZUtleURvd25FdmVudChUeXBlLCBib29sIGJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUgPSBmYWxz
ZSk7IC8vIE9ubHkgdXNlZCBvbiBwbGF0Zm9ybXMgdGhhdCBuZWVkIGl0LCBpLmUuIHRob3NlIHRo
YXQgZ2VuZXJhdGUgS2V5RG93biBldmVudHMuCiAKICAgICAgICAgLy8gVGV4dCBhcyBhcyBnZW5l
cmF0ZWQgYnkgcHJvY2Vzc2luZyBhIHZpcnR1YWwga2V5IGNvZGUgd2l0aCBhIGtleWJvYXJkIGxh
eW91dApAQCAtMTAxLDI0ICsxMTQsMjQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAv
LyBPdGhlcndpc2UsIHNhbWUgYXMgdGV4dCgpLgogICAgICAgICBTdHJpbmcgdW5tb2RpZmllZFRl
eHQoKSBjb25zdCB7IHJldHVybiBtX3VubW9kaWZpZWRUZXh0OyB9CiAKKyAgICAgICAgU3RyaW5n
IGtleUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2tleUlkZW50aWZpZXI7IH0KKwogICAg
ICAgICAvLyBNb3N0IGNvbXBhdGlibGUgV2luZG93cyB2aXJ0dWFsIGtleSBjb2RlIGFzc29jaWF0
ZWQgd2l0aCB0aGUgZXZlbnQuCiAgICAgICAgIC8vIFplcm8gZm9yIENoYXIgZXZlbnRzLgogICAg
ICAgICBpbnQgd2luZG93c1ZpcnR1YWxLZXlDb2RlKCkgY29uc3QgeyByZXR1cm4gbV93aW5kb3dz
VmlydHVhbEtleUNvZGU7IH0KICAgICAgICAgdm9pZCBzZXRXaW5kb3dzVmlydHVhbEtleUNvZGUo
aW50IGNvZGUpIHsgbV93aW5kb3dzVmlydHVhbEtleUNvZGUgPSBjb2RlOyB9CiAKICAgICAgICAg
aW50IG5hdGl2ZVZpcnR1YWxLZXlDb2RlKCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVWaXJ0dWFs
S2V5Q29kZTsgfQotICAgICAgICB2b2lkIHNldE5hdGl2ZVZpcnR1YWxLZXlDb2RlKGludCBjb2Rl
KSB7IG1fbmF0aXZlVmlydHVhbEtleUNvZGUgPSBjb2RlOyB9CisgICAgICAgIGludCBtYWNDaGFy
Q29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFjQ2hhckNvZGU7IH0KIAotICAgICAgICBTdHJpbmcg
a2V5SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fa2V5SWRlbnRpZmllcjsgfQogICAgICAg
ICBib29sIGlzQXV0b1JlcGVhdCgpIGNvbnN0IHsgcmV0dXJuIG1fYXV0b1JlcGVhdDsgfQotICAg
ICAgICB2b2lkIHNldElzQXV0b1JlcGVhdChib29sIGluKSB7IG1fYXV0b1JlcGVhdCA9IGluOyB9
CiAgICAgICAgIGJvb2wgaXNLZXlwYWQoKSBjb25zdCB7IHJldHVybiBtX2lzS2V5cGFkOyB9Cisg
ICAgICAgIGJvb2wgaXNTeXN0ZW1LZXkoKSBjb25zdCB7IHJldHVybiBtX2lzU3lzdGVtS2V5OyB9
CiAKICAgICAgICAgc3RhdGljIGJvb2wgY3VycmVudENhcHNMb2NrU3RhdGUoKTsKICAgICAgICAg
c3RhdGljIHZvaWQgZ2V0Q3VycmVudE1vZGlmaWVyU3RhdGUoYm9vbCYgc2hpZnRLZXksIGJvb2wm
IGN0cmxLZXksIGJvb2wmIGFsdEtleSwgYm9vbCYgbWV0YUtleSk7CiAKICNpZiBQTEFURk9STShN
QUMpCi0gICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudChOU0V2ZW50Kik7CiAgICAgICAgIE5T
RXZlbnQqIG1hY0V2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9tYWNFdmVudC5nZXQoKTsgfQogI2Vu
ZGlmCiAKQEAgLTE0NywxMCArMTYwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQod3hLZXlFdmVudCYpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9S
TShXSU4pIHx8IFBMQVRGT1JNKENIUk9NSVVNKQotICAgICAgICBib29sIGlzU3lzdGVtS2V5KCkg
Y29uc3QgeyByZXR1cm4gbV9pc1N5c3RlbUtleTsgfQotI2VuZGlmCi0KICNpZiBQTEFURk9STShF
RkwpCiAgICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudChjb25zdCBFdmFzX0V2ZW50X0tleV9E
b3duKik7CiAgICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudChjb25zdCBFdmFzX0V2ZW50X0tl
eV9VcCopOwpAQCAtMTYwLDE3ICsxNjksMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBTdHJpbmcgbV90ZXh0OwogICAgICAgICBTdHJpbmcgbV91bm1vZGlmaWVkVGV4dDsKICAgICAg
ICAgU3RyaW5nIG1fa2V5SWRlbnRpZmllcjsKLSAgICAgICAgYm9vbCBtX2F1dG9SZXBlYXQ7CiAg
ICAgICAgIGludCBtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZTsKICAgICAgICAgaW50IG1fbmF0aXZl
VmlydHVhbEtleUNvZGU7CisgICAgICAgIGludCBtX21hY0NoYXJDb2RlOworICAgICAgICBib29s
IG1fYXV0b1JlcGVhdDsKICAgICAgICAgYm9vbCBtX2lzS2V5cGFkOworICAgICAgICBib29sIG1f
aXNTeXN0ZW1LZXk7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIFJldGFpblB0cjxOU0V2
ZW50PiBtX21hY0V2ZW50OwogI2VuZGlmCi0jaWYgUExBVEZPUk0oV0lOKSB8fCBQTEFURk9STShD
SFJPTUlVTSkKLSAgICAgICAgYm9vbCBtX2lzU3lzdGVtS2V5OwotI2VuZGlmCiAjaWYgUExBVEZP
Uk0oR1RLKQogICAgICAgICBHZGtFdmVudEtleSogbV9nZGtFdmVudEtleTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Nb3VzZUV2ZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaAppbmRleCBiM2E0MDY3
ZDcxODBjYmE0ODVhY2E2NzcwOTk3MzBjZjM1ZjdmYTkwLi5hM2RjY2U0OTBkM2Y3ODA2MmQ5ZWM3
OGI2ODE3ZDM5ODg5ZTRlNGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybU1vdXNlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bU1vdXNlRXZlbnQuaApAQCAtMTE5LDEyICsxMTksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKLSNpZiBkZWZpbmVkKF9fT0JKQ19fKQotICAgICAg
ICBQbGF0Zm9ybU1vdXNlRXZlbnQoTlNFdmVudCAqLCBOU1ZpZXcgKndpbmRvd1ZpZXcpOwotI2Vu
ZGlmCi0gICAgICAgIFBsYXRmb3JtTW91c2VFdmVudChpbnQgeCwgaW50IHksIGludCBnbG9iYWxY
LCBpbnQgZ2xvYmFsWSwgTW91c2VCdXR0b24sIFBsYXRmb3JtRXZlbnQ6OlR5cGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgY2xpY2tDb3VudCwgYm9vbCBzaGlmdEtleSwgYm9vbCBj
dHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBtZXRhS2V5LCBkb3VibGUgdGltZXN0YW1wLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbW9kaWZpZXJGbGFncywgaW50IGV2ZW50
TnVtYmVyKTsKICAgICAgICAgaW50IGV2ZW50TnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9ldmVu
dE51bWJlcjsgfQogI2VuZGlmCiAKQEAgLTE2MCwxMiArMTU0LDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogI2VuZGlmCiAgICAgfTsKIAotI2lmIFBMQVRGT1JNKE1BQykgJiYgZGVmaW5lZChfX09C
SkNfXykKLSAgICBJbnRQb2ludCBnbG9iYWxQb2ludChjb25zdCBOU1BvaW50JiB3aW5kb3dQb2lu
dCwgTlNXaW5kb3cgKik7Ci0gICAgSW50UG9pbnQgcG9pbnRGb3JFdmVudChOU0V2ZW50ICosIE5T
VmlldyAqd2luZG93Vmlldyk7Ci0gICAgSW50UG9pbnQgZ2xvYmFsUG9pbnRGb3JFdmVudChOU0V2
ZW50ICopOwotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFBs
YXRmb3JtTW91c2VFdmVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybVdoZWVsRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hl
ZWxFdmVudC5oCmluZGV4IGJhOTEwNTQ4MjlhZTZlMmY2OWQxNjBmYWJmM2RkZmVlMzNmNGJjM2Uu
LjhlOTllNDc2MmZkMDdiMmY1YzNkYjhkMWI5YTdkNDc1NjU1YmNlNmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCkBAIC0xNTQsMTcgKzE1NCwxMCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudChjb25zdCBF
dmFzX0V2ZW50X01vdXNlX1doZWVsKik7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykKLSNp
ZiBkZWZpbmVkKF9fT0JKQ19fKQotICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQoTlNFdmVudCAq
LCBOU1ZpZXcgKndpbmRvd1ZpZXcpOwotI2VuZGlmCi0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKE1B
QykgfHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBPUyhEQVJXSU4pKQogICAgICAgICBQbGF0Zm9y
bVdoZWVsRXZlbnRQaGFzZSBwaGFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGhhc2U7IH0KICAgICAg
ICAgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgbW9tZW50dW1QaGFzZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbW9tZW50dW1QaGFzZTsgfQogICAgICAgICBib29sIGhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0
YXMoKSBjb25zdCB7IHJldHVybiBtX2hhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXM7IH0KLSAgICAg
ICAgZG91YmxlIHRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZXN0YW1wOyB9CiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKFFUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1BsYXRmb3JtS2V5Ym9hcmRFdmVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNwcAppbmRleCA1M2VmNzhiZTI4MDI1
YTA2YTQyNzM4YTJiOWEwODY3YzU2ZTYzMjA1Li4zYTI0MDlkY2YwNjk2ZjY4OGUwMjE1NDNiYjFj
NzgzNjNmMjVmYzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxh
dGZvcm1LZXlib2FyZEV2ZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNwcApAQCAtNTUyLDEwICs1NTIsMTIgQEAgUGxh
dGZvcm1LZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQoR2RrRXZlbnRLZXkqIGV2
ZW50KQogICAgICwgbV90ZXh0KHNpbmdsZUNoYXJhY3RlclN0cmluZyhldmVudC0+a2V5dmFsKSkK
ICAgICAsIG1fdW5tb2RpZmllZFRleHQoc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGV2ZW50LT5rZXl2
YWwpKQogICAgICwgbV9rZXlJZGVudGlmaWVyKGtleUlkZW50aWZpZXJGb3JHZGtLZXlDb2RlKGV2
ZW50LT5rZXl2YWwpKQotICAgICwgbV9hdXRvUmVwZWF0KGZhbHNlKQogICAgICwgbV93aW5kb3dz
VmlydHVhbEtleUNvZGUod2luZG93c0tleUNvZGVGb3JHZGtLZXlDb2RlKGV2ZW50LT5rZXl2YWwp
KQogICAgICwgbV9uYXRpdmVWaXJ0dWFsS2V5Q29kZShldmVudC0+a2V5dmFsKQorICAgICwgbV9t
YWNDaGFyQ29kZSgwKQorICAgICwgbV9hdXRvUmVwZWF0KGZhbHNlKQogICAgICwgbV9pc0tleXBh
ZChldmVudC0+a2V5dmFsID49IEdES19LUF9TcGFjZSAmJiBldmVudC0+a2V5dmFsIDw9IEdES19L
UF85KQorICAgICwgbV9pc1N5c3RlbUtleShmYWxzZSkKICAgICAsIG1fZ2RrRXZlbnRLZXkoZXZl
bnQpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZv
cm1Nb3VzZUV2ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9y
bU1vdXNlRXZlbnRHdGsuY3BwCmluZGV4IDg3OWU4Y2MxNDU4ZDhmODgyZGU5MzA5NDc5N2IyYWZl
NDE0MDVjNDguLjIxODk5MzliM2I5MzBkMDI1YTA2YjUzOGFkMGRiMDg0YzMyNmM2NjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybU1vdXNlRXZlbnRHdGsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybU1vdXNlRXZlbnRH
dGsuY3BwCkBAIC00MSwxMCArNDEsMTYgQEAgUGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1v
dXNlRXZlbnQoR2RrRXZlbnRCdXR0b24qIGV2ZW50KQogICAgIG1fdGltZXN0YW1wID0gZXZlbnQt
PnRpbWU7CiAgICAgbV9wb3NpdGlvbiA9IEludFBvaW50KChpbnQpZXZlbnQtPngsIChpbnQpZXZl
bnQtPnkpOwogICAgIG1fZ2xvYmFsUG9zaXRpb24gPSBJbnRQb2ludCgoaW50KWV2ZW50LT54X3Jv
b3QsIChpbnQpZXZlbnQtPnlfcm9vdCk7Ci0gICAgbV9zaGlmdEtleSA9IGV2ZW50LT5zdGF0ZSAm
IEdES19TSElGVF9NQVNLOwotICAgIG1fY3RybEtleSA9IGV2ZW50LT5zdGF0ZSAmIEdES19DT05U
Uk9MX01BU0s7Ci0gICAgbV9hbHRLZXkgPSBldmVudC0+c3RhdGUgJiBHREtfTU9EMV9NQVNLOwot
ICAgIG1fbWV0YUtleSA9IGV2ZW50LT5zdGF0ZSAmIEdES19NRVRBX01BU0s7CisKKyAgICBtX21v
ZGlmaWVycyA9IDA7CisgICAgaWYgKG1vdGlvbi0+c3RhdGUgJiBHREtfU0hJRlRfTUFTSykKKyAg
ICAgICAgbV9tb2RpZmllcnMgfD0gU2hpZnRLZXk7CisgICAgaWYgKG1vdGlvbi0+c3RhdGUgJiBH
REtfQ09OVFJPTF9NQVNLKQorICAgICAgICBtX21vZGlmaWVycyB8PSBDdHJsS2V5OworICAgIGlm
IChtb3Rpb24tPnN0YXRlICYgR0RLX01PRDFfTUFTSykKKyAgICAgICAgbV9tb2RpZmllcnMgfD0g
QWx0S2V5OworICAgIGlmIChtb3Rpb24tPnN0YXRlICYgR0RLX01FVEFfTUFTSykKKyAgICAgICAg
bV9tb2RpZmllcnMgfD0gTWV0YUtleTsKIAogICAgIHN3aXRjaCAoZXZlbnQtPnR5cGUpIHsKICAg
ICBjYXNlIEdES19CVVRUT05fUFJFU1M6CkBAIC04MCwxMCArODYsMTYgQEAgUGxhdGZvcm1Nb3Vz
ZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQoR2RrRXZlbnRNb3Rpb24qIG1vdGlvbikKICAgICBt
X3RpbWVzdGFtcCA9IG1vdGlvbi0+dGltZTsKICAgICBtX3Bvc2l0aW9uID0gSW50UG9pbnQoKGlu
dCltb3Rpb24tPngsIChpbnQpbW90aW9uLT55KTsKICAgICBtX2dsb2JhbFBvc2l0aW9uID0gSW50
UG9pbnQoKGludCltb3Rpb24tPnhfcm9vdCwgKGludCltb3Rpb24tPnlfcm9vdCk7Ci0gICAgbV9z
aGlmdEtleSA9IG1vdGlvbi0+c3RhdGUgJiBHREtfU0hJRlRfTUFTSzsKLSAgICBtX2N0cmxLZXkg
PSBtb3Rpb24tPnN0YXRlICYgR0RLX0NPTlRST0xfTUFTSzsKLSAgICBtX2FsdEtleSA9IG1vdGlv
bi0+c3RhdGUgJiBHREtfTU9EMV9NQVNLOwotICAgIG1fbWV0YUtleSA9IG1vdGlvbi0+c3RhdGUg
JiBHREtfTUVUQV9NQVNLOworCisgICAgbV9tb2RpZmllcnMgPSAwOworICAgIGlmIChtb3Rpb24t
PnN0YXRlICYgR0RLX1NISUZUX01BU0spCisgICAgICAgIG1fbW9kaWZpZXJzIHw9IFNoaWZ0S2V5
OworICAgIGlmIChtb3Rpb24tPnN0YXRlICYgR0RLX0NPTlRST0xfTUFTSykKKyAgICAgICAgbV9t
b2RpZmllcnMgfD0gQ3RybEtleTsKKyAgICBpZiAobW90aW9uLT5zdGF0ZSAmIEdES19NT0QxX01B
U0spCisgICAgICAgIG1fbW9kaWZpZXJzIHw9IEFsdEtleTsKKyAgICBpZiAobW90aW9uLT5zdGF0
ZSAmIEdES19NRVRBX01BU0spCisgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1ldGFLZXk7CiAKICAg
ICBzd2l0Y2ggKG1vdGlvbi0+dHlwZSkgewogICAgIGNhc2UgR0RLX01PVElPTl9OT1RJRlk6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1XaGVlbEV2ZW50
R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVdoZWVsRXZlbnRH
dGsuY3BwCmluZGV4IGNiZTA2ZGZhZjY5MjdjYzYzYTBjZTliNDNhNTFmZDMxNTcyYTdmMmYuLjQy
MDVjMjEyOTI3NjI0YTFiNTZhNGYwM2IzMzE0ZDhkZDQzM2YxZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVdoZWVsRXZlbnRHdGsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVdoZWVsRXZlbnRHdGsuY3BwCkBAIC00
Miw2ICs0MiwxNiBAQCBQbGF0Zm9ybVdoZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVudChHZGtF
dmVudFNjcm9sbCogZXZlbnQpCiAgICAgbV90eXBlID0gUGxhdGZvcm1FdmVudDo6V2hlZWw7CiAg
ICAgbV90aW1lc3RhbXAgPSBjdXJyZW50VGltZSgpOwogCisgICAgbV9tb2RpZmllcnMgPSAwOwor
ICAgIGlmIChtb3Rpb24tPnN0YXRlICYgR0RLX1NISUZUX01BU0spCisgICAgICAgIG1fbW9kaWZp
ZXJzIHw9IFNoaWZ0S2V5OworICAgIGlmIChtb3Rpb24tPnN0YXRlICYgR0RLX0NPTlRST0xfTUFT
SykKKyAgICAgICAgbV9tb2RpZmllcnMgfD0gQ3RybEtleTsKKyAgICBpZiAobW90aW9uLT5zdGF0
ZSAmIEdES19NT0QxX01BU0spCisgICAgICAgIG1fbW9kaWZpZXJzIHw9IEFsdEtleTsKKyAgICBp
ZiAobW90aW9uLT5zdGF0ZSAmIEdES19NRVRBX01BU0spCisgICAgICAgIG1fbW9kaWZpZXJzIHw9
IE1ldGFLZXk7CisKICAgICBtX2RlbHRhWCA9IDA7CiAgICAgbV9kZWx0YVkgPSAwOwogCkBAIC02
NiwxMCArNzYsNiBAQCBQbGF0Zm9ybVdoZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVudChHZGtF
dmVudFNjcm9sbCogZXZlbnQpCiAgICAgbV9wb3NpdGlvbiA9IEludFBvaW50KHN0YXRpY19jYXN0
PGludD4oZXZlbnQtPngpLCBzdGF0aWNfY2FzdDxpbnQ+KGV2ZW50LT55KSk7CiAgICAgbV9nbG9i
YWxQb3NpdGlvbiA9IEludFBvaW50KHN0YXRpY19jYXN0PGludD4oZXZlbnQtPnhfcm9vdCksIHN0
YXRpY19jYXN0PGludD4oZXZlbnQtPnlfcm9vdCkpOwogICAgIG1fZ3JhbnVsYXJpdHkgPSBTY3Jv
bGxCeVBpeGVsV2hlZWxFdmVudDsKLSAgICBtX3NoaWZ0S2V5ID0gZXZlbnQtPnN0YXRlICYgR0RL
X1NISUZUX01BU0s7Ci0gICAgbV9jdHJsS2V5ID0gZXZlbnQtPnN0YXRlICYgR0RLX0NPTlRST0xf
TUFTSzsKLSAgICBtX2FsdEtleSA9IGV2ZW50LT5zdGF0ZSAmIEdES19NT0QxX01BU0s7Ci0gICAg
bV9tZXRhS2V5ID0gZXZlbnQtPnN0YXRlICYgR0RLX01FVEFfTUFTSzsKICAgICBtX2RpcmVjdGlv
bkludmVydGVkRnJvbURldmljZSA9IGZhbHNlOwogCiAgICAgLy8gRklYTUU6IHJldHJpZXZlIHRo
ZSB1c2VyIHNldHRpbmcgZm9yIHRoZSBudW1iZXIgb2YgbGluZXMgdG8gc2Nyb2xsIG9uIGVhY2gg
d2hlZWwgZXZlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9LZXlF
dmVudE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9LZXlFdmVudE1hYy5tbQpp
bmRleCA0NGQ2Y2MzMGMyZjg2YTI0YzI3ZGYwMDAwMmRmNGE5MzljNzMzNTdhLi40YmRmNjIwN2I2
YzU1ZjEyZTI4N2E3MTQxYTI3MGVhOTJkMjJkZTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvS2V5RXZlbnRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL0tleUV2ZW50TWFjLm1tCkBAIC0zNywxODcgKzM3LDYgQEAgdXNpbmcgbmFtZXNwYWNl
IFdURjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCBpc0tleXBhZEV2ZW50
KE5TRXZlbnQqIGV2ZW50KQotewotICAgIC8vIENoZWNrIHRoYXQgdGhpcyBpcyB0aGUgdHlwZSBv
ZiBldmVudCB0aGF0IGhhcyBhIGtleUNvZGUuCi0gICAgc3dpdGNoIChbZXZlbnQgdHlwZV0pIHsK
LSAgICAgICAgY2FzZSBOU0tleURvd246Ci0gICAgICAgIGNhc2UgTlNLZXlVcDoKLSAgICAgICAg
Y2FzZSBOU0ZsYWdzQ2hhbmdlZDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChbZXZlbnQgbW9k
aWZpZXJGbGFnc10gJiBOU051bWVyaWNQYWRLZXlNYXNrKQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LQotICAgIHN3aXRjaCAoW2V2ZW50IGtleUNvZGVdKSB7Ci0gICAgICAgIGNhc2UgNzE6IC8vIENs
ZWFyCi0gICAgICAgIGNhc2UgODE6IC8vID0KLSAgICAgICAgY2FzZSA3NTogLy8gLwotICAgICAg
ICBjYXNlIDY3OiAvLyAqCi0gICAgICAgIGNhc2UgNzg6IC8vIC0KLSAgICAgICAgY2FzZSA2OTog
Ly8gKwotICAgICAgICBjYXNlIDc2OiAvLyBFbnRlcgotICAgICAgICBjYXNlIDY1OiAvLyAuCi0g
ICAgICAgIGNhc2UgODI6IC8vIDAKLSAgICAgICAgY2FzZSA4MzogLy8gMQotICAgICAgICBjYXNl
IDg0OiAvLyAyCi0gICAgICAgIGNhc2UgODU6IC8vIDMKLSAgICAgICAgY2FzZSA4NjogLy8gNAot
ICAgICAgICBjYXNlIDg3OiAvLyA1Ci0gICAgICAgIGNhc2UgODg6IC8vIDYKLSAgICAgICAgY2Fz
ZSA4OTogLy8gNwotICAgICAgICBjYXNlIDkxOiAvLyA4Ci0gICAgICAgIGNhc2UgOTI6IC8vIDkK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICB9Ci0KLSAgICAgcmV0dXJuIGZhbHNlOwot
fQotCi1zdGF0aWMgaW5saW5lIGJvb2wgaXNLZXlVcEV2ZW50KE5TRXZlbnQgKmV2ZW50KQotewot
ICAgIGlmIChbZXZlbnQgdHlwZV0gIT0gTlNGbGFnc0NoYW5nZWQpCi0gICAgICAgIHJldHVybiBb
ZXZlbnQgdHlwZV0gPT0gTlNLZXlVcDsKLSAgICAvLyBGSVhNRTogVGhpcyBsb2dpYyBmYWlscyBp
ZiB0aGUgdXNlciBwcmVzc2VzIGJvdGggU2hpZnQga2V5cyBhdCBvbmNlLCBmb3IgZXhhbXBsZToK
LSAgICAvLyB3ZSB0cmVhdCByZWxlYXNpbmcgb25lIG9mIHRoZW0gYXMga2V5RG93bi4KLSAgICBz
d2l0Y2ggKFtldmVudCBrZXlDb2RlXSkgewotICAgICAgICBjYXNlIDU0OiAvLyBSaWdodCBDb21t
YW5kCi0gICAgICAgIGNhc2UgNTU6IC8vIExlZnQgQ29tbWFuZAotICAgICAgICAgICAgcmV0dXJu
IChbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0NvbW1hbmRLZXlNYXNrKSA9PSAwOwotCi0gICAg
ICAgIGNhc2UgNTc6IC8vIENhcHNsb2NrCi0gICAgICAgICAgICByZXR1cm4gKFtldmVudCBtb2Rp
ZmllckZsYWdzXSAmIE5TQWxwaGFTaGlmdEtleU1hc2spID09IDA7Ci0KLSAgICAgICAgY2FzZSA1
NjogLy8gTGVmdCBTaGlmdAotICAgICAgICBjYXNlIDYwOiAvLyBSaWdodCBTaGlmdAotICAgICAg
ICAgICAgcmV0dXJuIChbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU1NoaWZ0S2V5TWFzaykgPT0g
MDsKLQotICAgICAgICBjYXNlIDU4OiAvLyBMZWZ0IEFsdAotICAgICAgICBjYXNlIDYxOiAvLyBS
aWdodCBBbHQKLSAgICAgICAgICAgIHJldHVybiAoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNB
bHRlcm5hdGVLZXlNYXNrKSA9PSAwOwotCi0gICAgICAgIGNhc2UgNTk6IC8vIExlZnQgQ3RybAot
ICAgICAgICBjYXNlIDYyOiAvLyBSaWdodCBDdHJsCi0gICAgICAgICAgICByZXR1cm4gKFtldmVu
dCBtb2RpZmllckZsYWdzXSAmIE5TQ29udHJvbEtleU1hc2spID09IDA7Ci0KLSAgICAgICAgY2Fz
ZSA2MzogLy8gRnVuY3Rpb24KLSAgICAgICAgICAgIHJldHVybiAoW2V2ZW50IG1vZGlmaWVyRmxh
Z3NdICYgTlNGdW5jdGlvbktleU1hc2spID09IDA7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsK
LX0KLQotc3RhdGljIGlubGluZSBTdHJpbmcgdGV4dEZyb21FdmVudChOU0V2ZW50KiBldmVudCkK
LXsKLSAgICBpZiAoW2V2ZW50IHR5cGVdID09IE5TRmxhZ3NDaGFuZ2VkKQotICAgICAgICByZXR1
cm4gIiI7Ci0gICAgcmV0dXJuIFtldmVudCBjaGFyYWN0ZXJzXTsKLX0KLQotCi1zdGF0aWMgaW5s
aW5lIFN0cmluZyB1bm1vZGlmaWVkVGV4dEZyb21FdmVudChOU0V2ZW50KiBldmVudCkKLXsKLSAg
ICBpZiAoW2V2ZW50IHR5cGVdID09IE5TRmxhZ3NDaGFuZ2VkKQotICAgICAgICByZXR1cm4gIiI7
Ci0gICAgcmV0dXJuIFtldmVudCBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnNdOwotfQotCi1z
dGF0aWMgU3RyaW5nIGtleUlkZW50aWZpZXJGb3JLZXlFdmVudChOU0V2ZW50KiBldmVudCkKLXsK
LSAgICBpZiAoW2V2ZW50IHR5cGVdID09IE5TRmxhZ3NDaGFuZ2VkKQotICAgICAgICBzd2l0Y2gg
KFtldmVudCBrZXlDb2RlXSkgewotICAgICAgICAgICAgY2FzZSA1NDogLy8gUmlnaHQgQ29tbWFu
ZAotICAgICAgICAgICAgY2FzZSA1NTogLy8gTGVmdCBDb21tYW5kCi0gICAgICAgICAgICAgICAg
cmV0dXJuICJNZXRhIjsKLQotICAgICAgICAgICAgY2FzZSA1NzogLy8gQ2Fwc2xvY2sKLSAgICAg
ICAgICAgICAgICByZXR1cm4gIkNhcHNMb2NrIjsKLQotICAgICAgICAgICAgY2FzZSA1NjogLy8g
TGVmdCBTaGlmdAotICAgICAgICAgICAgY2FzZSA2MDogLy8gUmlnaHQgU2hpZnQKLSAgICAgICAg
ICAgICAgICByZXR1cm4gIlNoaWZ0IjsKLQotICAgICAgICAgICAgY2FzZSA1ODogLy8gTGVmdCBB
bHQKLSAgICAgICAgICAgIGNhc2UgNjE6IC8vIFJpZ2h0IEFsdAotICAgICAgICAgICAgICAgIHJl
dHVybiAiQWx0IjsKLQotICAgICAgICAgICAgY2FzZSA1OTogLy8gTGVmdCBDdHJsCi0gICAgICAg
ICAgICBjYXNlIDYyOiAvLyBSaWdodCBDdHJsCi0gICAgICAgICAgICAgICAgcmV0dXJuICJDb250
cm9sIjsKLQotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gIiI7Ci0gICAgICAgIH0KLQotICAg
IE5TU3RyaW5nICpzID0gW2V2ZW50IGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyc107Ci0gICAg
aWYgKFtzIGxlbmd0aF0gIT0gMSkgewotICAgICAgICBMT0coRXZlbnRzLCAicmVjZWl2ZWQgYW4g
dW5leHBlY3RlZCBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiBrZXkgZXZlbnQ6ICV1IiwgW3MgbGVu
Z3RoXSk7Ci0gICAgICAgIHJldHVybiAiVW5pZGVudGlmaWVkIjsKLSAgICB9Ci0gICAgcmV0dXJu
IGtleUlkZW50aWZpZXJGb3JDaGFyQ29kZShbcyBjaGFyYWN0ZXJBdEluZGV4OjBdKTsKLX0KLQot
c3RhdGljIGludCB3aW5kb3dzS2V5Q29kZUZvcktleUV2ZW50KE5TRXZlbnQgKmV2ZW50KQotewot
ICAgIGludCBjb2RlID0gMDsKLSAgICAvLyBUaGVyZSBhcmUgc2V2ZXJhbCBraW5kcyBvZiBjaGFy
YWN0ZXJzIGZvciB3aGljaCB3ZSBwcm9kdWNlIGtleSBjb2RlIGZyb20gY2hhciBjb2RlOgotICAg
IC8vIDEuIFJvbWFuIGxldHRlcnMuIFdpbmRvd3Mga2V5Ym9hcmQgbGF5b3V0cyBhZmZlY3QgYm90
aCB2aXJ0dWFsIGtleSBjb2RlcyBhbmQgY2hhcmFjdGVyIGNvZGVzIGZvciB0aGVzZSwKLSAgICAv
LyAgICBzbyBlLmcuICdBJyBnZXRzIHRoZSBzYW1lIGtleUNvZGUgb24gUVdFUlRZLCBBWkVSVFkg
b3IgRHZvcmFrIGxheW91dHMuCi0gICAgLy8gMi4gS2V5cyBmb3Igd2hpY2ggdGhlcmUgaXMgbm8g
a25vd24gTWFjIHZpcnR1YWwga2V5IGNvZGVzLCBsaWtlIFByaW50U2NyZWVuLgotICAgIC8vIDMu
IENlcnRhaW4gcHVuY3R1YXRpb24ga2V5cy4gT24gV2luZG93cywgdGhlc2UgYXJlIGFsc28gcmVt
YXBwZWQgZGVwZW5kaW5nIG9uIGN1cnJlbnQga2V5Ym9hcmQgbGF5b3V0LAotICAgIC8vICAgIGJ1
dCBzZWUgY29tbWVudCBpbiB3aW5kb3dzS2V5Q29kZUZvckNoYXJDb2RlKCkuCi0gICAgaWYgKFtl
dmVudCB0eXBlXSA9PSBOU0tleURvd24gfHwgW2V2ZW50IHR5cGVdID09IE5TS2V5VXApIHsKLSAg
ICAgICAgLy8gQ21kIHN3aXRjaGVzIFJvbWFuIGxldHRlcnMgZm9yIER2b3Jhay1RV0VSVFkgbGF5
b3V0LCBzbyB0cnkgbW9kaWZpZWQgY2hhcmFjdGVycyBmaXJzdC4KLSAgICAgICAgTlNTdHJpbmcq
IHMgPSBbZXZlbnQgY2hhcmFjdGVyc107Ci0gICAgICAgIGNvZGUgPSBbcyBsZW5ndGhdID4gMCA/
IHdpbmRvd3NLZXlDb2RlRm9yQ2hhckNvZGUoW3MgY2hhcmFjdGVyQXRJbmRleDowXSkgOiAwOwot
ICAgICAgICBpZiAoY29kZSkKLSAgICAgICAgICAgIHJldHVybiBjb2RlOwotCi0gICAgICAgIC8v
IEN0cmwrQSBvbiBhbiBBWkVSVFkga2V5Ym9hcmQgd291bGQgZ2V0IFZLX1Ega2V5Q29kZSBpZiB3
ZSByZWxpZWQgb24gLVtOU0V2ZW50IGtleUNvZGVdIGJlbG93LgotICAgICAgICBzID0gW2V2ZW50
IGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyc107Ci0gICAgICAgIGNvZGUgPSBbcyBsZW5ndGhd
ID4gMCA/IHdpbmRvd3NLZXlDb2RlRm9yQ2hhckNvZGUoW3MgY2hhcmFjdGVyQXRJbmRleDowXSkg
OiAwOwotICAgICAgICBpZiAoY29kZSkKLSAgICAgICAgICAgIHJldHVybiBjb2RlOwotICAgIH0K
LQotICAgIC8vIE1hcCBNYWMgdmlydHVhbCBrZXkgY29kZSBkaXJlY3RseSB0byBXaW5kb3dzIG9u
ZSBmb3IgYW55IGtleXMgbm90IGhhbmRsZWQgYWJvdmUuCi0gICAgLy8gRS5nLiB0aGUga2V5IG5l
eHQgdG8gQ2FwcyBMb2NrIGhhcyB0aGUgc2FtZSBFdmVudC5rZXlDb2RlIG9uIFUuUy4ga2V5Ym9h
cmQgKCdBJykgYW5kIG9uIFJ1c3NpYW4ga2V5Ym9hcmQgKENZUklMTElDIExFVFRFUiBFRikuCi0g
ICAgcmV0dXJuIHdpbmRvd3NLZXlDb2RlRm9yS2V5Q29kZShbZXZlbnQga2V5Q29kZV0pOwotfQot
Ci1QbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudChOU0V2ZW50ICpl
dmVudCkKLSAgICA6IFBsYXRmb3JtRXZlbnQoaXNLZXlVcEV2ZW50KGV2ZW50KSA/IFBsYXRmb3Jt
RXZlbnQ6OktleVVwIDogUGxhdGZvcm1FdmVudDo6S2V5RG93biwgW2V2ZW50IG1vZGlmaWVyRmxh
Z3NdICYgTlNTaGlmdEtleU1hc2ssIFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQ29udHJvbEtl
eU1hc2ssIFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQWx0ZXJuYXRlS2V5TWFzaywgW2V2ZW50
IG1vZGlmaWVyRmxhZ3NdICYgTlNDb21tYW5kS2V5TWFzaywgW2V2ZW50IHRpbWVzdGFtcF0pCi0g
ICAgLCBtX3RleHQodGV4dEZyb21FdmVudChldmVudCkpCi0gICAgLCBtX3VubW9kaWZpZWRUZXh0
KHVubW9kaWZpZWRUZXh0RnJvbUV2ZW50KGV2ZW50KSkKLSAgICAsIG1fa2V5SWRlbnRpZmllcihr
ZXlJZGVudGlmaWVyRm9yS2V5RXZlbnQoZXZlbnQpKQotICAgICwgbV9hdXRvUmVwZWF0KChbZXZl
bnQgdHlwZV0gIT0gTlNGbGFnc0NoYW5nZWQpICYmIFtldmVudCBpc0FSZXBlYXRdKQotICAgICwg
bV93aW5kb3dzVmlydHVhbEtleUNvZGUod2luZG93c0tleUNvZGVGb3JLZXlFdmVudChldmVudCkp
Ci0gICAgLCBtX25hdGl2ZVZpcnR1YWxLZXlDb2RlKFtldmVudCBrZXlDb2RlXSkKLSAgICAsIG1f
aXNLZXlwYWQoaXNLZXlwYWRFdmVudChldmVudCkpCi0gICAgLCBtX21hY0V2ZW50KGV2ZW50KQot
ewotICAgIC8vIEFsd2F5cyB1c2UgMTMgZm9yIEVudGVyL1JldHVybiAtLSB3ZSBkb24ndCB3YW50
IHRvIHVzZSBBcHBLaXQncyBkaWZmZXJlbnQgY2hhcmFjdGVyIGZvciBFbnRlci4KLSAgICBpZiAo
bV93aW5kb3dzVmlydHVhbEtleUNvZGUgPT0gVktfUkVUVVJOKSB7Ci0gICAgICAgIG1fdGV4dCA9
ICJcciI7Ci0gICAgICAgIG1fdW5tb2RpZmllZFRleHQgPSAiXHIiOwotICAgIH0KLQotICAgIC8v
IEFwcEtpdCBzZXRzIHRleHQgdG8gIlx4N0YiIGZvciBiYWNrc3BhY2UsIGJ1dCB0aGUgY29ycmVj
dCBLZXlib2FyZEV2ZW50IGNoYXJhY3RlciBjb2RlIGlzIDguCi0gICAgaWYgKG1fd2luZG93c1Zp
cnR1YWxLZXlDb2RlID09IFZLX0JBQ0spIHsKLSAgICAgICAgbV90ZXh0ID0gIlx4OCI7Ci0gICAg
ICAgIG1fdW5tb2RpZmllZFRleHQgPSAiXHg4IjsKLSAgICB9Ci0KLSAgICAvLyBBbHdheXMgdXNl
IDkgZm9yIFRhYiAtLSB3ZSBkb24ndCB3YW50IHRvIHVzZSBBcHBLaXQncyBkaWZmZXJlbnQgY2hh
cmFjdGVyIGZvciBzaGlmdC10YWIuCi0gICAgaWYgKG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlID09
IFZLX1RBQikgewotICAgICAgICBtX3RleHQgPSAiXHg5IjsKLSAgICAgICAgbV91bm1vZGlmaWVk
VGV4dCA9ICJceDkiOwotICAgIH0KLX0KLQogdm9pZCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmRp
c2FtYmlndWF0ZUtleURvd25FdmVudChUeXBlIHR5cGUsIGJvb2wgYmFja3dhcmRDb21wYXRpYmls
aXR5TW9kZSkKIHsKICAgICAvLyBDYW4gb25seSBjaGFuZ2UgdHlwZSBmcm9tIEtleURvd24gdG8g
UmF3S2V5RG93biBvciBDaGFyLCBhcyB3ZSBsYWNrIGluZm9ybWF0aW9uIGZvciBvdGhlciBjb252
ZXJzaW9ucy4KQEAgLTI1Nyw2ICs3Niw2IEBAIHZvaWQgUGxhdGZvcm1LZXlib2FyZEV2ZW50Ojpn
ZXRDdXJyZW50TW9kaWZpZXJTdGF0ZShib29sJiBzaGlmdEtleSwgYm9vbCYgY3RybEtlCiAgICAg
bWV0YUtleSA9IGN1cnJlbnRNb2RpZmllcnMgJiA6OmNtZEtleTsKIH0KIAotfQorfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnkuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
OGQyMjhkZjEzZDc1NzRkMzE2NjUzN2FmNGUyOWE4YzdiYWIyZDY4Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5LmgKQEAg
LTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUGxhdGZvcm1FdmVudEZhY3Rvcnlf
aAorI2RlZmluZSBQbGF0Zm9ybUV2ZW50RmFjdG9yeV9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybU1v
dXNlRXZlbnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCisjaW5j
bHVkZSAiUGxhdGZvcm1HZXN0dXJlRXZlbnQuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIFBsYXRmb3JtRXZlbnRGYWN0b3J5IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGxhdGZvcm1Nb3VzZUV2ZW50IGNyZWF0ZVBsYXRmb3JtTW91c2VFdmVudChOU0V2ZW50ICosIE5T
VmlldyAqd2luZG93Vmlldyk7CisgICAgc3RhdGljIFBsYXRmb3JtV2hlZWxFdmVudCBjcmVhdGVQ
bGF0Zm9ybVdoZWVsRXZlbnQoTlNFdmVudCAqLCBOU1ZpZXcgKndpbmRvd1ZpZXcpOworICAgIHN0
YXRpYyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQgY3JlYXRlUGxhdGZvcm1LZXlib2FyZEV2ZW50KE5T
RXZlbnQgKik7CisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorICAgIHN0YXRpYyBQbGF0Zm9y
bUdlc3R1cmVFdmVudCBjcmVhdGVQbGF0Zm9ybUdlc3R1cmVFdmVudChOU0V2ZW50ICosIE5TVmll
dyAqd2luZG93Vmlldyk7CisjZW5kaWYKK307CisKKy8vIEZJWE1FOiBUaGlzIGRvZXNuJ3QgcmVh
bGx5IGJlbG9uZyBoZXJlLgorCisjaWYgUExBVEZPUk0oTUFDKSAmJiBkZWZpbmVkKF9fT0JKQ19f
KQorSW50UG9pbnQgZ2xvYmFsUG9pbnQoY29uc3QgTlNQb2ludCYgd2luZG93UG9pbnQsIE5TV2lu
ZG93ICopOworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFBs
YXRmb3JtRXZlbnRGYWN0b3J5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QbGF0Zm9ybUV2ZW50RmFjdG9yeS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNTZiMzg4NmVjMTZjYzM1NzM2
MzQ1YmI0MTQ5ZmM5MWNhZDVjNDAyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5Lm1tCkBAIC0wLDAgKzEsNTM0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtRXZlbnRG
YWN0b3J5LmgiCisKKyNpbXBvcnQgIktleUV2ZW50Q29jb2EuaCIKKyNpbXBvcnQgIkxvZ2dpbmcu
aCIKKyNpbXBvcnQgIlBsYXRmb3JtU2NyZWVuLmgiCisjaW1wb3J0ICJTY3JvbGxiYXIuaCIKKyNp
bXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKKyNpbXBvcnQgIldpbmRvd3NLZXlib2Fy
ZENvZGVzLmgiCisjaW1wb3J0IDx3dGYvQVNDSUlDVHlwZS5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0ludFBvaW50IGdsb2JhbFBvaW50KGNvbnN0IE5TUG9pbnQmIHdpbmRvd1BvaW50LCBO
U1dpbmRvdyAqd2luZG93KQoreworICAgIHJldHVybiBJbnRQb2ludChmbGlwU2NyZWVuUG9pbnQo
W3dpbmRvdyBjb252ZXJ0QmFzZVRvU2NyZWVuOndpbmRvd1BvaW50XSwgc2NyZWVuRm9yV2luZG93
KHdpbmRvdykpKTsKK30KKworc3RhdGljIEludFBvaW50IGdsb2JhbFBvaW50Rm9yRXZlbnQoTlNF
dmVudCAqZXZlbnQpCit7CisgICAgc3dpdGNoIChbZXZlbnQgdHlwZV0pIHsKKyAgICAgICAgY2Fz
ZSBOU0xlZnRNb3VzZURvd246CisgICAgICAgIGNhc2UgTlNMZWZ0TW91c2VEcmFnZ2VkOgorICAg
ICAgICBjYXNlIE5TTGVmdE1vdXNlVXA6CisgICAgICAgIGNhc2UgTlNNb3VzZUVudGVyZWQ6Cisg
ICAgICAgIGNhc2UgTlNNb3VzZUV4aXRlZDoKKyAgICAgICAgY2FzZSBOU01vdXNlTW92ZWQ6Cisg
ICAgICAgIGNhc2UgTlNPdGhlck1vdXNlRG93bjoKKyAgICAgICAgY2FzZSBOU090aGVyTW91c2VE
cmFnZ2VkOgorICAgICAgICBjYXNlIE5TT3RoZXJNb3VzZVVwOgorICAgICAgICBjYXNlIE5TUmln
aHRNb3VzZURvd246CisgICAgICAgIGNhc2UgTlNSaWdodE1vdXNlRHJhZ2dlZDoKKyAgICAgICAg
Y2FzZSBOU1JpZ2h0TW91c2VVcDoKKyAgICAgICAgY2FzZSBOU1Njcm9sbFdoZWVsOgorICAgICAg
ICAgICAgcmV0dXJuIGdsb2JhbFBvaW50KFtldmVudCBsb2NhdGlvbkluV2luZG93XSwgW2V2ZW50
IHdpbmRvd10pOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIEludFBvaW50
KCk7CisgICAgfQorfQorCitzdGF0aWMgSW50UG9pbnQgcG9pbnRGb3JFdmVudChOU0V2ZW50ICpl
dmVudCwgTlNWaWV3ICp3aW5kb3dWaWV3KQoreworICAgIHN3aXRjaCAoW2V2ZW50IHR5cGVdKSB7
CisgICAgICAgIGNhc2UgTlNMZWZ0TW91c2VEb3duOgorICAgICAgICBjYXNlIE5TTGVmdE1vdXNl
RHJhZ2dlZDoKKyAgICAgICAgY2FzZSBOU0xlZnRNb3VzZVVwOgorICAgICAgICBjYXNlIE5TTW91
c2VFbnRlcmVkOgorICAgICAgICBjYXNlIE5TTW91c2VFeGl0ZWQ6CisgICAgICAgIGNhc2UgTlNN
b3VzZU1vdmVkOgorICAgICAgICBjYXNlIE5TT3RoZXJNb3VzZURvd246CisgICAgICAgIGNhc2Ug
TlNPdGhlck1vdXNlRHJhZ2dlZDoKKyAgICAgICAgY2FzZSBOU090aGVyTW91c2VVcDoKKyAgICAg
ICAgY2FzZSBOU1JpZ2h0TW91c2VEb3duOgorICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZURyYWdn
ZWQ6CisgICAgICAgIGNhc2UgTlNSaWdodE1vdXNlVXA6CisgICAgICAgIGNhc2UgTlNTY3JvbGxX
aGVlbDogeworICAgICAgICAgICAgLy8gTm90ZTogVGhpcyB3aWxsIGhhdmUgaXRzIG9yaWdpbiBh
dCB0aGUgYm90dG9tIGxlZnQgb2YgdGhlIHdpbmRvdyB1bmxlc3Mgd2luZG93VmlldyBpcyBmbGlw
cGVkLgorICAgICAgICAgICAgLy8gSW4gdGhvc2UgY2FzZXMsIHRoZSBZIGNvb3JkaW5hdGUgZ2V0
cyBmbGlwcGVkIGJ5IFdpZGdldDo6Y29udmVydEZyb21Db250YWluaW5nV2luZG93LgorICAgICAg
ICAgICAgTlNQb2ludCBsb2NhdGlvbiA9IFtldmVudCBsb2NhdGlvbkluV2luZG93XTsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3dWaWV3KQorICAgICAgICAgICAgICAgIGxvY2F0aW9uID0gW3dpbmRv
d1ZpZXcgY29udmVydFBvaW50OmxvY2F0aW9uIGZyb21WaWV3Om5pbF07CisgICAgICAgICAgICBy
ZXR1cm4gSW50UG9pbnQobG9jYXRpb24pOworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICByZXR1cm4gSW50UG9pbnQoKTsKKyAgICB9Cit9CisKK3N0YXRpYyBNb3VzZUJ1
dHRvbiBtb3VzZUJ1dHRvbkZvckV2ZW50KE5TRXZlbnQgKmV2ZW50KQoreworICAgIHN3aXRjaCAo
W2V2ZW50IHR5cGVdKSB7CisgICAgICAgIGNhc2UgTlNMZWZ0TW91c2VEb3duOgorICAgICAgICBj
YXNlIE5TTGVmdE1vdXNlVXA6CisgICAgICAgIGNhc2UgTlNMZWZ0TW91c2VEcmFnZ2VkOgorICAg
ICAgICAgICAgcmV0dXJuIExlZnRCdXR0b247CisgICAgICAgIGNhc2UgTlNSaWdodE1vdXNlRG93
bjoKKyAgICAgICAgY2FzZSBOU1JpZ2h0TW91c2VVcDoKKyAgICAgICAgY2FzZSBOU1JpZ2h0TW91
c2VEcmFnZ2VkOgorICAgICAgICAgICAgcmV0dXJuIFJpZ2h0QnV0dG9uOworICAgICAgICBjYXNl
IE5TT3RoZXJNb3VzZURvd246CisgICAgICAgIGNhc2UgTlNPdGhlck1vdXNlVXA6CisgICAgICAg
IGNhc2UgTlNPdGhlck1vdXNlRHJhZ2dlZDoKKyAgICAgICAgICAgIHJldHVybiBNaWRkbGVCdXR0
b247CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gTm9CdXR0b247CisgICAg
fQorfQorCitzdGF0aWMgUGxhdGZvcm1FdmVudDo6VHlwZSBtb3VzZUV2ZW50VHlwZUZvckV2ZW50
KE5TRXZlbnQqIGV2ZW50KQoreworICAgIHN3aXRjaCAoW2V2ZW50IHR5cGVdKSB7CisgICAgICAg
IGNhc2UgTlNMZWZ0TW91c2VEcmFnZ2VkOgorICAgICAgICBjYXNlIE5TTW91c2VFbnRlcmVkOgor
ICAgICAgICBjYXNlIE5TTW91c2VFeGl0ZWQ6CisgICAgICAgIGNhc2UgTlNNb3VzZU1vdmVkOgor
ICAgICAgICBjYXNlIE5TT3RoZXJNb3VzZURyYWdnZWQ6CisgICAgICAgIGNhc2UgTlNSaWdodE1v
dXNlRHJhZ2dlZDoKKyAgICAgICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVk
OworICAgICAgICBjYXNlIE5TTGVmdE1vdXNlRG93bjoKKyAgICAgICAgY2FzZSBOU1JpZ2h0TW91
c2VEb3duOgorICAgICAgICBjYXNlIE5TT3RoZXJNb3VzZURvd246CisgICAgICAgICAgICByZXR1
cm4gUGxhdGZvcm1FdmVudDo6TW91c2VQcmVzc2VkOworICAgICAgICBjYXNlIE5TTGVmdE1vdXNl
VXA6CisgICAgICAgIGNhc2UgTlNSaWdodE1vdXNlVXA6CisgICAgICAgIGNhc2UgTlNPdGhlck1v
dXNlVXA6CisgICAgICAgICAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6TW91c2VSZWxlYXNlZDsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpNb3Vz
ZU1vdmVkOworICAgIH0KK30KKworc3RhdGljIGludCBjbGlja0NvdW50Rm9yRXZlbnQoTlNFdmVu
dCAqZXZlbnQpCit7CisgICAgc3dpdGNoIChbZXZlbnQgdHlwZV0pIHsKKyAgICAgICAgY2FzZSBO
U0xlZnRNb3VzZURvd246CisgICAgICAgIGNhc2UgTlNMZWZ0TW91c2VVcDoKKyAgICAgICAgY2Fz
ZSBOU0xlZnRNb3VzZURyYWdnZWQ6CisgICAgICAgIGNhc2UgTlNSaWdodE1vdXNlRG93bjoKKyAg
ICAgICAgY2FzZSBOU1JpZ2h0TW91c2VVcDoKKyAgICAgICAgY2FzZSBOU1JpZ2h0TW91c2VEcmFn
Z2VkOgorICAgICAgICBjYXNlIE5TT3RoZXJNb3VzZURvd246CisgICAgICAgIGNhc2UgTlNPdGhl
ck1vdXNlVXA6CisgICAgICAgIGNhc2UgTlNPdGhlck1vdXNlRHJhZ2dlZDoKKyAgICAgICAgICAg
IHJldHVybiBbZXZlbnQgY2xpY2tDb3VudF07CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICByZXR1cm4gMDsKKyAgICB9Cit9CisKK3N0YXRpYyBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSBt
b21lbnR1bVBoYXNlRm9yRXZlbnQoTlNFdmVudCAqZXZlbnQpCit7CisgICAgdWludDMyX3QgcGhh
c2UgPSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmU7CisKKyNpZiAhZGVmaW5lZChCVUlMRElO
R19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCisgICAg
aWYgKFtldmVudCBtb21lbnR1bVBoYXNlXSAmIE5TRXZlbnRQaGFzZUJlZ2FuKQorICAgICAgICBw
aGFzZSB8PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUJlZ2FuOworICAgIGlmIChbZXZlbnQgbW9t
ZW50dW1QaGFzZV0gJiBOU0V2ZW50UGhhc2VTdGF0aW9uYXJ5KQorICAgICAgICBwaGFzZSB8PSBQ
bGF0Zm9ybVdoZWVsRXZlbnRQaGFzZVN0YXRpb25hcnk7CisgICAgaWYgKFtldmVudCBtb21lbnR1
bVBoYXNlXSAmIE5TRXZlbnRQaGFzZUNoYW5nZWQpCisgICAgICAgIHBoYXNlIHw9IFBsYXRmb3Jt
V2hlZWxFdmVudFBoYXNlQ2hhbmdlZDsKKyAgICBpZiAoW2V2ZW50IG1vbWVudHVtUGhhc2VdICYg
TlNFdmVudFBoYXNlRW5kZWQpCisgICAgICAgIHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVudFBo
YXNlRW5kZWQ7CisgICAgaWYgKFtldmVudCBtb21lbnR1bVBoYXNlXSAmIE5TRXZlbnRQaGFzZUNh
bmNlbGxlZCkKKyAgICAgICAgcGhhc2UgfD0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VDYW5jZWxs
ZWQ7CisjZWxzZQorICAgIHN3aXRjaCAod2tHZXROU0V2ZW50TW9tZW50dW1QaGFzZShldmVudCkp
IHsKKyAgICBjYXNlIHdrRXZlbnRQaGFzZU5vbmU6CisgICAgICAgIHBoYXNlID0gUGxhdGZvcm1X
aGVlbEV2ZW50UGhhc2VOb25lOworICAgICAgICBicmVhazsKKyAgICBjYXNlIHdrRXZlbnRQaGFz
ZUJlZ2FuOgorICAgICAgICBwaGFzZSA9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQmVnYW47Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2Ugd2tFdmVudFBoYXNlQ2hhbmdlZDoKKyAgICAgICAgcGhh
c2UgPSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUNoYW5nZWQ7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2Ugd2tFdmVudFBoYXNlRW5kZWQ6CisgICAgICAgIHBoYXNlID0gUGxhdGZvcm1XaGVlbEV2
ZW50UGhhc2VFbmRlZDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorI2VuZGlmCisKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U+KHBoYXNlKTsKK30KKworc3Rh
dGljIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIHBoYXNlRm9yRXZlbnQoTlNFdmVudCAqZXZlbnQp
Cit7CisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJ
TkdfT05fU05PV19MRU9QQVJEKQorICAgIHVpbnQzMl90IHBoYXNlID0gUGxhdGZvcm1XaGVlbEV2
ZW50UGhhc2VOb25lOyAKKyAgICBpZiAoW2V2ZW50IHBoYXNlXSAmIE5TRXZlbnRQaGFzZUJlZ2Fu
KQorICAgICAgICBwaGFzZSB8PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUJlZ2FuOworICAgIGlm
IChbZXZlbnQgcGhhc2VdICYgTlNFdmVudFBoYXNlU3RhdGlvbmFyeSkKKyAgICAgICAgcGhhc2Ug
fD0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VTdGF0aW9uYXJ5OworICAgIGlmIChbZXZlbnQgcGhh
c2VdICYgTlNFdmVudFBoYXNlQ2hhbmdlZCkKKyAgICAgICAgcGhhc2UgfD0gUGxhdGZvcm1XaGVl
bEV2ZW50UGhhc2VDaGFuZ2VkOworICAgIGlmIChbZXZlbnQgcGhhc2VdICYgTlNFdmVudFBoYXNl
RW5kZWQpCisgICAgICAgIHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlRW5kZWQ7Cisg
ICAgaWYgKFtldmVudCBwaGFzZV0gJiBOU0V2ZW50UGhhc2VDYW5jZWxsZWQpCisgICAgICAgIHBo
YXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQ2FuY2VsbGVkOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZT4ocGhhc2UpOworI2Vsc2UKKyAgICBVTlVT
RURfUEFSQU0oZXZlbnQpOworICAgIHJldHVybiBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmU7
CisjZW5kaWYKK30KKworI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKK3N0YXRpYyBQbGF0Zm9y
bUV2ZW50OjpUeXBlIGdlc3R1cmVFdmVudFR5cGVGb3JFdmVudChOU0V2ZW50ICpldmVudCkKK3sK
KyAgICBzd2l0Y2ggKFtldmVudCB0eXBlXSkgeworICAgIGNhc2UgTlNFdmVudFR5cGVCZWdpbkdl
c3R1cmU6CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW47
CisgICAgY2FzZSBOU0V2ZW50VHlwZUVuZEdlc3R1cmU6CisgICAgICAgIHJldHVybiBQbGF0Zm9y
bUV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9s
bEVuZDsKKyAgICB9Cit9CisjZW5kaWYKKworc3RhdGljIGlubGluZSBTdHJpbmcgdGV4dEZyb21F
dmVudChOU0V2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoW2V2ZW50IHR5cGVdID09IE5TRmxhZ3ND
aGFuZ2VkKQorICAgICAgICByZXR1cm4gU3RyaW5nKCIiKTsKKyAgICByZXR1cm4gU3RyaW5nKFtl
dmVudCBjaGFyYWN0ZXJzXSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgU3RyaW5nIHVubW9kaWZpZWRU
ZXh0RnJvbUV2ZW50KE5TRXZlbnQqIGV2ZW50KQoreworICAgIGlmIChbZXZlbnQgdHlwZV0gPT0g
TlNGbGFnc0NoYW5nZWQpCisgICAgICAgIHJldHVybiBTdHJpbmcoIiIpOworICAgIHJldHVybiBT
dHJpbmcoW2V2ZW50IGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyc10pOworfQorCitzdGF0aWMg
U3RyaW5nIGtleUlkZW50aWZpZXJGb3JLZXlFdmVudChOU0V2ZW50KiBldmVudCkKK3sKKyAgICBp
ZiAoW2V2ZW50IHR5cGVdID09IE5TRmxhZ3NDaGFuZ2VkKSAKKyAgICAgICAgc3dpdGNoIChbZXZl
bnQga2V5Q29kZV0pIHsKKyAgICAgICAgICAgIGNhc2UgNTQ6IC8vIFJpZ2h0IENvbW1hbmQKKyAg
ICAgICAgICAgIGNhc2UgNTU6IC8vIExlZnQgQ29tbWFuZAorICAgICAgICAgICAgICAgIHJldHVy
biBTdHJpbmcoIk1ldGEiKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgNTc6
IC8vIENhcHNsb2NrCisgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZygiQ2Fwc0xvY2siKTsK
KyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgNTY6IC8vIExlZnQgU2hpZnQKKyAg
ICAgICAgICAgIGNhc2UgNjA6IC8vIFJpZ2h0IFNoaWZ0CisgICAgICAgICAgICAgICAgcmV0dXJu
IFN0cmluZygiU2hpZnQiKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgNTg6
IC8vIExlZnQgQWx0CisgICAgICAgICAgICBjYXNlIDYxOiAvLyBSaWdodCBBbHQKKyAgICAgICAg
ICAgICAgICByZXR1cm4gU3RyaW5nKCJBbHQiKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGNhc2UgNTk6IC8vIExlZnQgQ3RybAorICAgICAgICAgICAgY2FzZSA2MjogLy8gUmlnaHQg
Q3RybAorICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoIkNvbnRyb2wiKTsKKyAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZygiIik7CisgICAgICAg
IH0KKyAgICAKKyAgICBOU1N0cmluZyAqcyA9IFtldmVudCBjaGFyYWN0ZXJzSWdub3JpbmdNb2Rp
ZmllcnNdOworICAgIGlmIChbcyBsZW5ndGhdICE9IDEpIHsKKyAgICAgICAgTE9HKEV2ZW50cywg
InJlY2VpdmVkIGFuIHVuZXhwZWN0ZWQgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4ga2V5IGV2ZW50
OiAldSIsIFtzIGxlbmd0aF0pOworICAgICAgICByZXR1cm4gIlVuaWRlbnRpZmllZCI7CisgICAg
fQorICAgIHJldHVybiBrZXlJZGVudGlmaWVyRm9yQ2hhckNvZGUoW3MgY2hhcmFjdGVyQXRJbmRl
eDowXSk7Cit9CisKK3N0YXRpYyBib29sIGlzS2V5cGFkRXZlbnQoTlNFdmVudCogZXZlbnQpCit7
CisgICAgLy8gQ2hlY2sgdGhhdCB0aGlzIGlzIHRoZSB0eXBlIG9mIGV2ZW50IHRoYXQgaGFzIGEg
a2V5Q29kZS4KKyAgICBzd2l0Y2ggKFtldmVudCB0eXBlXSkgeworICAgICAgICBjYXNlIE5TS2V5
RG93bjoKKyAgICAgICAgY2FzZSBOU0tleVVwOgorICAgICAgICBjYXNlIE5TRmxhZ3NDaGFuZ2Vk
OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TTnVt
ZXJpY1BhZEtleU1hc2spCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgc3dpdGNoIChbZXZl
bnQga2V5Q29kZV0pIHsKKyAgICAgICAgY2FzZSA3MTogLy8gQ2xlYXIKKyAgICAgICAgY2FzZSA4
MTogLy8gPQorICAgICAgICBjYXNlIDc1OiAvLyAvCisgICAgICAgIGNhc2UgNjc6IC8vICoKKyAg
ICAgICAgY2FzZSA3ODogLy8gLQorICAgICAgICBjYXNlIDY5OiAvLyArCisgICAgICAgIGNhc2Ug
NzY6IC8vIEVudGVyCisgICAgICAgIGNhc2UgNjU6IC8vIC4KKyAgICAgICAgY2FzZSA4MjogLy8g
MAorICAgICAgICBjYXNlIDgzOiAvLyAxCisgICAgICAgIGNhc2UgODQ6IC8vIDIKKyAgICAgICAg
Y2FzZSA4NTogLy8gMworICAgICAgICBjYXNlIDg2OiAvLyA0CisgICAgICAgIGNhc2UgODc6IC8v
IDUKKyAgICAgICAgY2FzZSA4ODogLy8gNgorICAgICAgICBjYXNlIDg5OiAvLyA3CisgICAgICAg
IGNhc2UgOTE6IC8vIDgKKyAgICAgICAgY2FzZSA5MjogLy8gOQorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgIH0KKyAgICAgCisgICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIGlu
dCB3aW5kb3dzS2V5Q29kZUZvcktleUV2ZW50KE5TRXZlbnQqIGV2ZW50KQoreworICAgIGludCBj
b2RlID0gMDsKKyAgICAvLyBUaGVyZSBhcmUgc2V2ZXJhbCBraW5kcyBvZiBjaGFyYWN0ZXJzIGZv
ciB3aGljaCB3ZSBwcm9kdWNlIGtleSBjb2RlIGZyb20gY2hhciBjb2RlOgorICAgIC8vIDEuIFJv
bWFuIGxldHRlcnMuIFdpbmRvd3Mga2V5Ym9hcmQgbGF5b3V0cyBhZmZlY3QgYm90aCB2aXJ0dWFs
IGtleSBjb2RlcyBhbmQgY2hhcmFjdGVyIGNvZGVzIGZvciB0aGVzZSwKKyAgICAvLyAgICBzbyBl
LmcuICdBJyBnZXRzIHRoZSBzYW1lIGtleUNvZGUgb24gUVdFUlRZLCBBWkVSVFkgb3IgRHZvcmFr
IGxheW91dHMuCisgICAgLy8gMi4gS2V5cyBmb3Igd2hpY2ggdGhlcmUgaXMgbm8ga25vd24gTWFj
IHZpcnR1YWwga2V5IGNvZGVzLCBsaWtlIFByaW50U2NyZWVuLgorICAgIC8vIDMuIENlcnRhaW4g
cHVuY3R1YXRpb24ga2V5cy4gT24gV2luZG93cywgdGhlc2UgYXJlIGFsc28gcmVtYXBwZWQgZGVw
ZW5kaW5nIG9uIGN1cnJlbnQga2V5Ym9hcmQgbGF5b3V0LAorICAgIC8vICAgIGJ1dCBzZWUgY29t
bWVudCBpbiB3aW5kb3dzS2V5Q29kZUZvckNoYXJDb2RlKCkuCisgICAgaWYgKFtldmVudCB0eXBl
XSA9PSBOU0tleURvd24gfHwgW2V2ZW50IHR5cGVdID09IE5TS2V5VXApIHsKKyAgICAgICAgLy8g
Q21kIHN3aXRjaGVzIFJvbWFuIGxldHRlcnMgZm9yIER2b3Jhay1RV0VSVFkgbGF5b3V0LCBzbyB0
cnkgbW9kaWZpZWQgY2hhcmFjdGVycyBmaXJzdC4KKyAgICAgICAgTlNTdHJpbmcqIHMgPSBbZXZl
bnQgY2hhcmFjdGVyc107CisgICAgICAgIGNvZGUgPSBbcyBsZW5ndGhdID4gMCA/IHdpbmRvd3NL
ZXlDb2RlRm9yQ2hhckNvZGUoW3MgY2hhcmFjdGVyQXRJbmRleDowXSkgOiAwOworICAgICAgICBp
ZiAoY29kZSkKKyAgICAgICAgICAgIHJldHVybiBjb2RlOworCisgICAgICAgIC8vIEN0cmwrQSBv
biBhbiBBWkVSVFkga2V5Ym9hcmQgd291bGQgZ2V0IFZLX1Ega2V5Q29kZSBpZiB3ZSByZWxpZWQg
b24gLVtOU0V2ZW50IGtleUNvZGVdIGJlbG93LgorICAgICAgICBzID0gW2V2ZW50IGNoYXJhY3Rl
cnNJZ25vcmluZ01vZGlmaWVyc107CisgICAgICAgIGNvZGUgPSBbcyBsZW5ndGhdID4gMCA/IHdp
bmRvd3NLZXlDb2RlRm9yQ2hhckNvZGUoW3MgY2hhcmFjdGVyQXRJbmRleDowXSkgOiAwOworICAg
ICAgICBpZiAoY29kZSkKKyAgICAgICAgICAgIHJldHVybiBjb2RlOworICAgIH0KKworICAgIC8v
IE1hcCBNYWMgdmlydHVhbCBrZXkgY29kZSBkaXJlY3RseSB0byBXaW5kb3dzIG9uZSBmb3IgYW55
IGtleXMgbm90IGhhbmRsZWQgYWJvdmUuCisgICAgLy8gRS5nLiB0aGUga2V5IG5leHQgdG8gQ2Fw
cyBMb2NrIGhhcyB0aGUgc2FtZSBFdmVudC5rZXlDb2RlIG9uIFUuUy4ga2V5Ym9hcmQgKCdBJykg
YW5kIG9uIFJ1c3NpYW4ga2V5Ym9hcmQgKENZUklMTElDIExFVFRFUiBFRikuCisgICAgcmV0dXJu
IHdpbmRvd3NLZXlDb2RlRm9yS2V5Q29kZShbZXZlbnQga2V5Q29kZV0pOworfQorCitzdGF0aWMg
aW5saW5lIGJvb2wgaXNLZXlVcEV2ZW50KE5TRXZlbnQgKmV2ZW50KQoreworICAgIGlmIChbZXZl
bnQgdHlwZV0gIT0gTlNGbGFnc0NoYW5nZWQpCisgICAgICAgIHJldHVybiBbZXZlbnQgdHlwZV0g
PT0gTlNLZXlVcDsKKyAgICAvLyBGSVhNRTogVGhpcyBsb2dpYyBmYWlscyBpZiB0aGUgdXNlciBw
cmVzc2VzIGJvdGggU2hpZnQga2V5cyBhdCBvbmNlLCBmb3IgZXhhbXBsZToKKyAgICAvLyB3ZSB0
cmVhdCByZWxlYXNpbmcgb25lIG9mIHRoZW0gYXMga2V5RG93bi4KKyAgICBzd2l0Y2ggKFtldmVu
dCBrZXlDb2RlXSkgeworICAgICAgICBjYXNlIDU0OiAvLyBSaWdodCBDb21tYW5kCisgICAgICAg
IGNhc2UgNTU6IC8vIExlZnQgQ29tbWFuZAorICAgICAgICAgICAgcmV0dXJuIChbZXZlbnQgbW9k
aWZpZXJGbGFnc10gJiBOU0NvbW1hbmRLZXlNYXNrKSA9PSAwOworICAgICAgICAgICAgCisgICAg
ICAgIGNhc2UgNTc6IC8vIENhcHNsb2NrCisgICAgICAgICAgICByZXR1cm4gKFtldmVudCBtb2Rp
ZmllckZsYWdzXSAmIE5TQWxwaGFTaGlmdEtleU1hc2spID09IDA7CisgICAgICAgICAgICAKKyAg
ICAgICAgY2FzZSA1NjogLy8gTGVmdCBTaGlmdAorICAgICAgICBjYXNlIDYwOiAvLyBSaWdodCBT
aGlmdAorICAgICAgICAgICAgcmV0dXJuIChbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU1NoaWZ0
S2V5TWFzaykgPT0gMDsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIDU4OiAvLyBMZWZ0IEFs
dAorICAgICAgICBjYXNlIDYxOiAvLyBSaWdodCBBbHQKKyAgICAgICAgICAgIHJldHVybiAoW2V2
ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNBbHRlcm5hdGVLZXlNYXNrKSA9PSAwOworICAgICAgICAg
ICAgCisgICAgICAgIGNhc2UgNTk6IC8vIExlZnQgQ3RybAorICAgICAgICBjYXNlIDYyOiAvLyBS
aWdodCBDdHJsCisgICAgICAgICAgICByZXR1cm4gKFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5T
Q29udHJvbEtleU1hc2spID09IDA7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSA2MzogLy8g
RnVuY3Rpb24KKyAgICAgICAgICAgIHJldHVybiAoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNG
dW5jdGlvbktleU1hc2spID09IDA7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworc3Rh
dGljIGlubGluZSBQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJzRm9yRXZlbnQoTlNF
dmVudCAqZXZlbnQpCit7CisgICAgdW5zaWduZWQgbW9kaWZpZXJzID0gMDsKKyAgICBpZiAoW2V2
ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNTaGlmdEtleU1hc2spCisgICAgICAgIG1vZGlmaWVycyB8
PSBQbGF0Zm9ybUV2ZW50OjpTaGlmdEtleTsKKyAgICBpZiAoW2V2ZW50IG1vZGlmaWVyRmxhZ3Nd
ICYgTlNDb250cm9sS2V5TWFzaykKKyAgICAgICAgbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6
OkN0cmxLZXk7CisgICAgaWYgKFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQWx0ZXJuYXRlS2V5
TWFzaykKKyAgICAgICAgbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6OkFsdEtleTsKKyAgICBp
ZiAoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb21tYW5kS2V5TWFzaykKKyAgICAgICAgbW9k
aWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1ldGFLZXk7CisgICAgcmV0dXJuIChQbGF0Zm9ybUV2
ZW50OjpNb2RpZmllcnMpbW9kaWZpZXJzOworfQorCisKK2NsYXNzIFBsYXRmb3JtTW91c2VFdmVu
dEJ1aWxkZXIgOiBwdWJsaWMgUGxhdGZvcm1Nb3VzZUV2ZW50IHsKK3B1YmxpYzoKKyAgICBQbGF0
Zm9ybU1vdXNlRXZlbnRCdWlsZGVyKE5TRXZlbnQgKmV2ZW50LCBOU1ZpZXcgKndpbmRvd1ZpZXcp
CisgICAgeworICAgICAgICAvLyBQbGF0Zm9ybUV2ZW50CisgICAgICAgIG1fdHlwZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gbW91c2VFdmVudFR5cGVGb3JFdmVudChldmVudCk7Cisg
ICAgICAgIG1fbW9kaWZpZXJzICAgICAgICAgICAgICAgICAgICAgICAgID0gbW9kaWZpZXJzRm9y
RXZlbnQoZXZlbnQpOworICAgICAgICBtX3RpbWVzdGFtcCAgICAgICAgICAgICAgICAgICAgICAg
ICA9IFtldmVudCB0aW1lc3RhbXBdOworCisgICAgICAgIC8vIFBsYXRmb3JtTW91c2VFdmVudAor
ICAgICAgICBtX3Bvc2l0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICA9IHBvaW50Rm9yRXZl
bnQoZXZlbnQsIHdpbmRvd1ZpZXcpOworICAgICAgICBtX2dsb2JhbFBvc2l0aW9uICAgICAgICAg
ICAgICAgICAgICA9IGdsb2JhbFBvaW50Rm9yRXZlbnQoZXZlbnQpOworICAgICAgICBtX2J1dHRv
biAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG1vdXNlQnV0dG9uRm9yRXZlbnQoZXZlbnQp
OworICAgICAgICBtX2NsaWNrQ291bnQgICAgICAgICAgICAgICAgICAgICAgICA9IGNsaWNrQ291
bnRGb3JFdmVudChldmVudCk7CisgICAgICAgIAorICAgICAgICAvLyBNYWMgc3BlY2lmaWMKKyAg
ICAgICAgbV9tb2RpZmllckZsYWdzICAgICAgICAgICAgICAgICAgICAgPSBbZXZlbnQgbW9kaWZp
ZXJGbGFnc107CisgICAgICAgIG1fZXZlbnROdW1iZXIgICAgICAgICAgICAgICAgICAgICAgID0g
W2V2ZW50IGV2ZW50TnVtYmVyXTsKKyAgICB9Cit9OworCitQbGF0Zm9ybU1vdXNlRXZlbnQgUGxh
dGZvcm1FdmVudEZhY3Rvcnk6OmNyZWF0ZVBsYXRmb3JtTW91c2VFdmVudChOU0V2ZW50ICpldmVu
dCwgTlNWaWV3ICp3aW5kb3dWaWV3KQoreworICAgIHJldHVybiBQbGF0Zm9ybU1vdXNlRXZlbnRC
dWlsZGVyKGV2ZW50LCB3aW5kb3dWaWV3KTsKK30KKworCitjbGFzcyBQbGF0Zm9ybVdoZWVsRXZl
bnRCdWlsZGVyIDogcHVibGljIFBsYXRmb3JtV2hlZWxFdmVudCB7CitwdWJsaWM6CisgICAgUGxh
dGZvcm1XaGVlbEV2ZW50QnVpbGRlcihOU0V2ZW50ICpldmVudCwgTlNWaWV3ICp3aW5kb3dWaWV3
KQorICAgIHsKKyAgICAgICAgLy8gUGxhdGZvcm1FdmVudAorICAgICAgICBtX3R5cGUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IFBsYXRmb3JtRXZlbnQ6OldoZWVsOworICAgICAgICBt
X21vZGlmaWVycyAgICAgICAgICAgICAgICAgICAgICAgICA9IG1vZGlmaWVyc0ZvckV2ZW50KGV2
ZW50KTsKKyAgICAgICAgbV90aW1lc3RhbXAgICAgICAgICAgICAgICAgICAgICAgICAgPSBbZXZl
bnQgdGltZXN0YW1wXTsKKworICAgICAgICAvLyBQbGF0Zm9ybVdoZWVsRXZlbnQKKyAgICAgICAg
bV9wb3NpdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgPSBwb2ludEZvckV2ZW50KGV2ZW50
LCB3aW5kb3dWaWV3KTsKKyAgICAgICAgbV9nbG9iYWxQb3NpdGlvbiAgICAgICAgICAgICAgICAg
ICAgPSBnbG9iYWxQb2ludEZvckV2ZW50KGV2ZW50KTsKKyAgICAgICAgbV9ncmFudWxhcml0eSAg
ICAgICAgICAgICAgICAgICAgICAgPSBTY3JvbGxCeVBhZ2VXaGVlbEV2ZW50OworCisgICAgICAg
IEJPT0wgY29udGludW91czsKKyAgICAgICAgd2tHZXRXaGVlbEV2ZW50RGVsdGFzKGV2ZW50LCAm
bV9kZWx0YVgsICZtX2RlbHRhWSwgJmNvbnRpbnVvdXMpOworICAgICAgICBpZiAoY29udGludW91
cykgeworICAgICAgICAgICAgbV93aGVlbFRpY2tzWCA9IG1fZGVsdGFYIC8gc3RhdGljX2Nhc3Q8
ZmxvYXQ+KFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSk7CisgICAgICAgICAgICBtX3do
ZWVsVGlja3NZID0gbV9kZWx0YVkgLyBzdGF0aWNfY2FzdDxmbG9hdD4oU2Nyb2xsYmFyOjpwaXhl
bHNQZXJMaW5lU3RlcCgpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fd2hlZWxU
aWNrc1ggPSBtX2RlbHRhWDsKKyAgICAgICAgICAgIG1fd2hlZWxUaWNrc1kgPSBtX2RlbHRhWTsK
KyAgICAgICAgICAgIG1fZGVsdGFYICo9IHN0YXRpY19jYXN0PGZsb2F0PihTY3JvbGxiYXI6OnBp
eGVsc1BlckxpbmVTdGVwKCkpOworICAgICAgICAgICAgbV9kZWx0YVkgKj0gc3RhdGljX2Nhc3Q8
ZmxvYXQ+KFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSk7CisgICAgICAgIH0KKworICAg
ICAgICBtX3BoYXNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IHBoYXNlRm9yRXZlbnQo
ZXZlbnQpOworICAgICAgICBtX21vbWVudHVtUGhhc2UgICAgICAgICAgICAgICAgICAgICA9IG1v
bWVudHVtUGhhc2VGb3JFdmVudChldmVudCk7CisgICAgICAgIG1faGFzUHJlY2lzZVNjcm9sbGlu
Z0RlbHRhcyAgICAgICAgID0gY29udGludW91czsKKworI2lmIEhBVkUoSU5WRVJURURfV0hFRUxf
RVZFTlRTKQorICAgICAgICBtX2RpcmVjdGlvbkludmVydGVkRnJvbURldmljZSAgICAgICA9IFtl
dmVudCBpc0RpcmVjdGlvbkludmVydGVkRnJvbURldmljZV07CisjZWxzZQorICAgICAgICBtX2Rp
cmVjdGlvbkludmVydGVkRnJvbURldmljZSAgICAgICA9IGZhbHNlOworI2VuZGlmCisgICAgfQor
fTsKKworUGxhdGZvcm1XaGVlbEV2ZW50IFBsYXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQbGF0
Zm9ybVdoZWVsRXZlbnQoTlNFdmVudCAqZXZlbnQsIE5TVmlldyAqd2luZG93VmlldykKK3sKKyAg
ICByZXR1cm4gUGxhdGZvcm1XaGVlbEV2ZW50QnVpbGRlcihldmVudCwgd2luZG93Vmlldyk7Cit9
CisKKworY2xhc3MgUGxhdGZvcm1LZXlib2FyZEV2ZW50QnVpbGRlciA6IHB1YmxpYyBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQgeworcHVibGljOgorICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudEJ1aWxk
ZXIoTlNFdmVudCAqZXZlbnQpCisgICAgeworICAgICAgICAvLyBQbGF0Zm9ybUV2ZW50CisgICAg
ICAgIG1fdHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gaXNLZXlVcEV2ZW50KGV2
ZW50KSA/IFBsYXRmb3JtRXZlbnQ6OktleVVwIDogUGxhdGZvcm1FdmVudDo6S2V5RG93bjsKKyAg
ICAgICAgbV9tb2RpZmllcnMgICAgICAgICAgICAgICAgICAgICAgICAgPSBtb2RpZmllcnNGb3JF
dmVudChldmVudCk7CisgICAgICAgIG1fdGltZXN0YW1wICAgICAgICAgICAgICAgICAgICAgICAg
ID0gW2V2ZW50IHRpbWVzdGFtcF07CisKKyAgICAgICAgLy8gUGxhdGZvcm1LZXlib2FyZEV2ZW50
CisgICAgICAgIG1fdGV4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gdGV4dEZyb21F
dmVudChldmVudCk7CisgICAgICAgIG1fdW5tb2RpZmllZFRleHQgICAgICAgICAgICAgICAgICAg
ID0gdW5tb2RpZmllZFRleHRGcm9tRXZlbnQoZXZlbnQpOworICAgICAgICBtX2tleUlkZW50aWZp
ZXIgICAgICAgICAgICAgICAgICAgICA9IGtleUlkZW50aWZpZXJGb3JLZXlFdmVudChldmVudCk7
CisgICAgICAgIG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlICAgICAgICAgICAgID0gd2luZG93c0tl
eUNvZGVGb3JLZXlFdmVudChldmVudCk7CisgICAgICAgIG1fbmF0aXZlVmlydHVhbEtleUNvZGUg
ICAgICAgICAgICAgID0gW2V2ZW50IGtleUNvZGVdOworICAgICAgICBtX21hY0NoYXJDb2RlICAg
ICAgICAgICAgICAgICAgICAgICA9IHdrR2V0TlNFdmVudEtleUNoYXIoZXZlbnQpOworICAgICAg
ICBtX2F1dG9SZXBlYXQgICAgICAgICAgICAgICAgICAgICAgICA9IChbZXZlbnQgdHlwZV0gIT0g
TlNGbGFnc0NoYW5nZWQpICYmIFtldmVudCBpc0FSZXBlYXRdOworICAgICAgICBtX2lzS2V5cGFk
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IGlzS2V5cGFkRXZlbnQoZXZlbnQpOworICAgICAg
ICBtX2lzU3lzdGVtS2V5ICAgICAgICAgICAgICAgICAgICAgICA9IGZhbHNlOyAvLyBTeXN0ZW1L
ZXkgaXMgYWx3YXlzIGZhbHNlIG9uIHRoZSBNYWMuCisKKyAgICAgICAgLy8gQWx3YXlzIHVzZSAx
MyBmb3IgRW50ZXIvUmV0dXJuIC0tIHdlIGRvbid0IHdhbnQgdG8gdXNlIEFwcEtpdCdzIGRpZmZl
cmVudCBjaGFyYWN0ZXIgZm9yIEVudGVyLgorICAgICAgICBpZiAobV93aW5kb3dzVmlydHVhbEtl
eUNvZGUgPT0gVktfUkVUVVJOKSB7CisgICAgICAgICAgICBtX3RleHQgPSAiXHIiOworICAgICAg
ICAgICAgbV91bm1vZGlmaWVkVGV4dCA9ICJcciI7CisgICAgICAgIH0KKworICAgICAgICAvLyBB
cHBLaXQgc2V0cyB0ZXh0IHRvICJceDdGIiBmb3IgYmFja3NwYWNlLCBidXQgdGhlIGNvcnJlY3Qg
S2V5Ym9hcmRFdmVudCBjaGFyYWN0ZXIgY29kZSBpcyA4LgorICAgICAgICBpZiAobV93aW5kb3dz
VmlydHVhbEtleUNvZGUgPT0gVktfQkFDSykgeworICAgICAgICAgICAgbV90ZXh0ID0gIlx4OCI7
CisgICAgICAgICAgICBtX3VubW9kaWZpZWRUZXh0ID0gIlx4OCI7CisgICAgICAgIH0KKworICAg
ICAgICAvLyBBbHdheXMgdXNlIDkgZm9yIFRhYiAtLSB3ZSBkb24ndCB3YW50IHRvIHVzZSBBcHBL
aXQncyBkaWZmZXJlbnQgY2hhcmFjdGVyIGZvciBzaGlmdC10YWIuCisgICAgICAgIGlmIChtX3dp
bmRvd3NWaXJ0dWFsS2V5Q29kZSA9PSBWS19UQUIpIHsKKyAgICAgICAgICAgIG1fdGV4dCA9ICJc
eDkiOworICAgICAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9ICJceDkiOworICAgICAgICB9CisK
KyAgICAgICAgLy8gTWFjIHNwZWNpZmljLgorICAgICAgICBtX21hY0V2ZW50ID0gZXZlbnQ7Cisg
ICAgfQorfTsKKworUGxhdGZvcm1LZXlib2FyZEV2ZW50IFBsYXRmb3JtRXZlbnRGYWN0b3J5Ojpj
cmVhdGVQbGF0Zm9ybUtleWJvYXJkRXZlbnQoTlNFdmVudCAqZXZlbnQpCit7CisgICAgcmV0dXJu
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudEJ1aWxkZXIoZXZlbnQpOworfQorCisjaWYgRU5BQkxFKEdF
U1RVUkVfRVZFTlRTKQorY2xhc3MgUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyIDogcHVibGlj
IFBsYXRmb3JtR2VzdHVyZUV2ZW50IHsKK3B1YmxpYzoKKyAgICBQbGF0Zm9ybUdlc3R1cmVFdmVu
dEJ1aWxkZXIoTlNFdmVudCAqZXZlbnQsIE5TVmlldyAqd2luZG93VmlldykKKyAgICB7CisgICAg
ICAgIC8vIFBsYXRmb3JtRXZlbnQKKyAgICAgICAgbV90eXBlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBnZXN0dXJlRXZlbnRUeXBlRm9yRXZlbnQoZXZlbnQpOworICAgICAgICBtX21v
ZGlmaWVycyAgICAgICAgICAgICAgICAgICAgICAgICA9IG1vZGlmaWVyc0ZvckV2ZW50KGV2ZW50
KTsKKyAgICAgICAgbV90aW1lc3RhbXAgICAgICAgICAgICAgICAgICAgICAgICAgPSBbZXZlbnQg
dGltZXN0YW1wXTsKKworICAgICAgICAvLyBQbGF0Zm9ybUdlc3R1cmVFdmVudAorICAgICAgICBt
X3Bvc2l0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICA9IHBvaW50Rm9yRXZlbnQoZXZlbnQs
IHdpbmRvd1ZpZXcpOworICAgICAgICBtX2dsb2JhbFBvc2l0aW9uICAgICAgICAgICAgICAgICAg
ICA9IGdsb2JhbFBvaW50Rm9yRXZlbnQoZXZlbnQpOworICAgICAgICBtX2RlbHRhWCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IDA7CisgICAgICAgIG1fZGVsdGFZICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gMDsKKyAgICB9Cit9OworCitQbGF0Zm9ybUdlc3R1cmVFdmVudCBQbGF0
Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1HZXN0dXJlRXZlbnQoTlNFdmVudCAqZXZl
bnQsIE5TVmlldyAqd2luZG93VmlldykKK3sKKyAgICByZXR1cm4gUGxhdGZvcm1HZXN0dXJlRXZl
bnRCdWlsZGVyKGV2ZW50LCB3aW5kb3dWaWV3KTsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZv
cm1Nb3VzZUV2ZW50TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3Jt
TW91c2VFdmVudE1hYy5tbQppbmRleCBjNWY1OTg5MDEyYmY0OGE2ZjBmMzEyYWUzNmY3ZWMzMmU0
MzNjZmJjLi41NzQ4ZTdjNjk0YTY2MmIzYmEwYjY0ZDg3NTgwYzc2MDQyOWM3YmRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1Nb3VzZUV2ZW50TWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybU1vdXNlRXZlbnRNYWMu
bW0KQEAgLTEsMTY5ICsxLDIgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYgQXBw
bGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCiAKLSNpbXBvcnQg
ImNvbmZpZy5oIgotI2ltcG9ydCAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCi0KLSNpbXBvcnQgIlBs
YXRmb3JtU2NyZWVuLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIE1vdXNlQnV0
dG9uIG1vdXNlQnV0dG9uRm9yRXZlbnQoTlNFdmVudCAqZXZlbnQpCi17Ci0gICAgc3dpdGNoIChb
ZXZlbnQgdHlwZV0pIHsKLSAgICAgICAgY2FzZSBOU0xlZnRNb3VzZURvd246Ci0gICAgICAgIGNh
c2UgTlNMZWZ0TW91c2VVcDoKLSAgICAgICAgY2FzZSBOU0xlZnRNb3VzZURyYWdnZWQ6Ci0gICAg
ICAgICAgICByZXR1cm4gTGVmdEJ1dHRvbjsKLSAgICAgICAgY2FzZSBOU1JpZ2h0TW91c2VEb3du
OgotICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZVVwOgotICAgICAgICBjYXNlIE5TUmlnaHRNb3Vz
ZURyYWdnZWQ6Ci0gICAgICAgICAgICByZXR1cm4gUmlnaHRCdXR0b247Ci0gICAgICAgIGNhc2Ug
TlNPdGhlck1vdXNlRG93bjoKLSAgICAgICAgY2FzZSBOU090aGVyTW91c2VVcDoKLSAgICAgICAg
Y2FzZSBOU090aGVyTW91c2VEcmFnZ2VkOgotICAgICAgICAgICAgcmV0dXJuIE1pZGRsZUJ1dHRv
bjsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBOb0J1dHRvbjsKLSAgICB9
Ci19Ci0KLXN0YXRpYyBpbnQgY2xpY2tDb3VudEZvckV2ZW50KE5TRXZlbnQgKmV2ZW50KQotewot
ICAgIHN3aXRjaCAoW2V2ZW50IHR5cGVdKSB7Ci0gICAgICAgIGNhc2UgTlNMZWZ0TW91c2VEb3du
OgotICAgICAgICBjYXNlIE5TTGVmdE1vdXNlVXA6Ci0gICAgICAgIGNhc2UgTlNMZWZ0TW91c2VE
cmFnZ2VkOgotICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZURvd246Ci0gICAgICAgIGNhc2UgTlNS
aWdodE1vdXNlVXA6Ci0gICAgICAgIGNhc2UgTlNSaWdodE1vdXNlRHJhZ2dlZDoKLSAgICAgICAg
Y2FzZSBOU090aGVyTW91c2VEb3duOgotICAgICAgICBjYXNlIE5TT3RoZXJNb3VzZVVwOgotICAg
ICAgICBjYXNlIE5TT3RoZXJNb3VzZURyYWdnZWQ6Ci0gICAgICAgICAgICByZXR1cm4gW2V2ZW50
IGNsaWNrQ291bnRdOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgfQotfQotCi1JbnRQb2ludCBnbG9iYWxQb2ludChjb25zdCBOU1BvaW50JiB3aW5kb3dQb2lu
dCwgTlNXaW5kb3cgKndpbmRvdykKLXsKLSAgICByZXR1cm4gSW50UG9pbnQoZmxpcFNjcmVlblBv
aW50KFt3aW5kb3cgY29udmVydEJhc2VUb1NjcmVlbjp3aW5kb3dQb2ludF0sIHNjcmVlbkZvcldp
bmRvdyh3aW5kb3cpKSk7Ci19Ci0KLUludFBvaW50IHBvaW50Rm9yRXZlbnQoTlNFdmVudCAqZXZl
bnQsIE5TVmlldyAqd2luZG93VmlldykKLXsKLSAgICBzd2l0Y2ggKFtldmVudCB0eXBlXSkgewot
ICAgICAgICBjYXNlIE5TTGVmdE1vdXNlRG93bjoKLSAgICAgICAgY2FzZSBOU0xlZnRNb3VzZVVw
OgotICAgICAgICBjYXNlIE5TTGVmdE1vdXNlRHJhZ2dlZDoKLSAgICAgICAgY2FzZSBOU1JpZ2h0
TW91c2VEb3duOgotICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZVVwOgotICAgICAgICBjYXNlIE5T
UmlnaHRNb3VzZURyYWdnZWQ6Ci0gICAgICAgIGNhc2UgTlNPdGhlck1vdXNlRG93bjoKLSAgICAg
ICAgY2FzZSBOU090aGVyTW91c2VVcDoKLSAgICAgICAgY2FzZSBOU090aGVyTW91c2VEcmFnZ2Vk
OgotICAgICAgICBjYXNlIE5TTW91c2VNb3ZlZDoKLSAgICAgICAgY2FzZSBOU1Njcm9sbFdoZWVs
OiB7Ci0gICAgICAgICAgICAvLyBOb3RlOiBUaGlzIHdpbGwgaGF2ZSBpdHMgb3JpZ2luIGF0IHRo
ZSBib3R0b20gbGVmdCBvZiB0aGUgd2luZG93IHVubGVzcyB3aW5kb3dWaWV3IGlzIGZsaXBwZWQu
Ci0gICAgICAgICAgICAvLyBJbiB0aG9zZSBjYXNlcywgdGhlIFkgY29vcmRpbmF0ZSBnZXRzIGZs
aXBwZWQgYnkgV2lkZ2V0Ojpjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3cuCi0gICAgICAgICAg
ICBOU1BvaW50IGxvY2F0aW9uID0gW2V2ZW50IGxvY2F0aW9uSW5XaW5kb3ddOwotICAgICAgICAg
ICAgaWYgKHdpbmRvd1ZpZXcpCi0gICAgICAgICAgICAgICAgbG9jYXRpb24gPSBbd2luZG93Vmll
dyBjb252ZXJ0UG9pbnQ6bG9jYXRpb24gZnJvbVZpZXc6bmlsXTsKLSAgICAgICAgICAgIHJldHVy
biBJbnRQb2ludChsb2NhdGlvbik7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIHJldHVybiBJbnRQb2ludCgpOwotICAgIH0KLX0KLQotSW50UG9pbnQgZ2xvYmFsUG9p
bnRGb3JFdmVudChOU0V2ZW50ICpldmVudCkKLXsKLSAgICBzd2l0Y2ggKFtldmVudCB0eXBlXSkg
ewotICAgICAgICBjYXNlIE5TTGVmdE1vdXNlRG93bjoKLSAgICAgICAgY2FzZSBOU0xlZnRNb3Vz
ZVVwOgotICAgICAgICBjYXNlIE5TTGVmdE1vdXNlRHJhZ2dlZDoKLSAgICAgICAgY2FzZSBOU1Jp
Z2h0TW91c2VEb3duOgotICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZVVwOgotICAgICAgICBjYXNl
IE5TUmlnaHRNb3VzZURyYWdnZWQ6Ci0gICAgICAgIGNhc2UgTlNPdGhlck1vdXNlRG93bjoKLSAg
ICAgICAgY2FzZSBOU090aGVyTW91c2VVcDoKLSAgICAgICAgY2FzZSBOU090aGVyTW91c2VEcmFn
Z2VkOgotICAgICAgICBjYXNlIE5TTW91c2VNb3ZlZDoKLSAgICAgICAgY2FzZSBOU1Njcm9sbFdo
ZWVsOgotICAgICAgICAgICAgcmV0dXJuIGdsb2JhbFBvaW50KFtldmVudCBsb2NhdGlvbkluV2lu
ZG93XSwgW2V2ZW50IHdpbmRvd10pOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0
dXJuIEludFBvaW50KCk7Ci0gICAgfQotfQotCi1zdGF0aWMgUGxhdGZvcm1FdmVudDo6VHlwZSBt
b3VzZUV2ZW50Rm9yTlNFdmVudChOU0V2ZW50KiBldmVudCkgCi17Ci0gICAgc3dpdGNoIChbZXZl
bnQgdHlwZV0pIHsKLSAgICBjYXNlIE5TU2Nyb2xsV2hlZWw6Ci0gICAgICAgIHJldHVybiBQbGF0
Zm9ybUV2ZW50OjpNb3VzZVNjcm9sbDsKLSAgICBjYXNlIE5TTGVmdE1vdXNlRHJhZ2dlZDoKLSAg
ICBjYXNlIE5TUmlnaHRNb3VzZURyYWdnZWQ6Ci0gICAgY2FzZSBOU090aGVyTW91c2VEcmFnZ2Vk
OgotICAgIGNhc2UgTlNNb3VzZU1vdmVkOgotICAgICAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6
TW91c2VNb3ZlZDsKLSAgICBjYXNlIE5TTGVmdE1vdXNlRG93bjoKLSAgICBjYXNlIE5TUmlnaHRN
b3VzZURvd246Ci0gICAgY2FzZSBOU090aGVyTW91c2VEb3duOgotICAgICAgICByZXR1cm4gUGxh
dGZvcm1FdmVudDo6TW91c2VQcmVzc2VkOwotICAgIGNhc2UgTlNMZWZ0TW91c2VVcDoKLSAgICBj
YXNlIE5TUmlnaHRNb3VzZVVwOgotICAgIGNhc2UgTlNPdGhlck1vdXNlVXA6Ci0gICAgICAgIHJl
dHVybiBQbGF0Zm9ybUV2ZW50OjpNb3VzZVJlbGVhc2VkOwotICAgIGRlZmF1bHQ6Ci0gICAgICAg
IHJldHVybiBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkOwotICAgIH0KLX0KLQotUGxhdGZvcm1N
b3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQoTlNFdmVudCogZXZlbnQsIE5TVmlldyAqd2lu
ZG93VmlldykKLSAgICA6IFBsYXRmb3JtRXZlbnQobW91c2VFdmVudEZvck5TRXZlbnQoZXZlbnQp
LCBbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU1NoaWZ0S2V5TWFzaywgW2V2ZW50IG1vZGlmaWVy
RmxhZ3NdICYgTlNDb250cm9sS2V5TWFzaywgW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNBbHRl
cm5hdGVLZXlNYXNrLCBbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0NvbW1hbmRLZXlNYXNrLCBb
ZXZlbnQgdGltZXN0YW1wXSkKLSAgICAsIG1fcG9zaXRpb24ocG9pbnRGb3JFdmVudChldmVudCwg
d2luZG93VmlldykpCi0gICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvaW50Rm9yRXZlbnQo
ZXZlbnQpKQotICAgICwgbV9idXR0b24obW91c2VCdXR0b25Gb3JFdmVudChldmVudCkpCi0gICAg
LCBtX2NsaWNrQ291bnQoY2xpY2tDb3VudEZvckV2ZW50KGV2ZW50KSkKLSAgICAsIG1fbW9kaWZp
ZXJGbGFncyhbZXZlbnQgbW9kaWZpZXJGbGFnc10pCi0gICAgLCBtX2V2ZW50TnVtYmVyKFtldmVu
dCBldmVudE51bWJlcl0pCi17Ci19Ci0KLVBsYXRmb3JtTW91c2VFdmVudDo6UGxhdGZvcm1Nb3Vz
ZUV2ZW50KGludCB4LCBpbnQgeSwgaW50IGdsb2JhbFgsIGludCBnbG9iYWxZLCBNb3VzZUJ1dHRv
biBidXR0b24sIFBsYXRmb3JtRXZlbnQ6OlR5cGUgdHlwZSwKLSAgICAgICAgICAgICAgICAgICBp
bnQgY2xpY2tDb3VudCwgYm9vbCBzaGlmdEtleSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwg
Ym9vbCBtZXRhS2V5LCBkb3VibGUgdGltZXN0YW1wLAotICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIG1vZGlmaWVyRmxhZ3MsIGludCBldmVudE51bWJlcikKLSAgICA6IFBsYXRmb3JtRXZlbnQo
dHlwZSwgc2hpZnRLZXksIGN0cmxLZXksIGFsdEtleSwgbWV0YUtleSwgdGltZXN0YW1wKQotICAg
ICwgbV9wb3NpdGlvbihJbnRQb2ludCh4LCB5KSkKLSAgICAsIG1fZ2xvYmFsUG9zaXRpb24oSW50
UG9pbnQoZ2xvYmFsWCwgZ2xvYmFsWSkpCi0gICAgLCBtX2J1dHRvbihidXR0b24pCi0gICAgLCBt
X2NsaWNrQ291bnQoY2xpY2tDb3VudCkKLSAgICAsIG1fbW9kaWZpZXJGbGFncyhtb2RpZmllckZs
YWdzKQotICAgICwgbV9ldmVudE51bWJlcihldmVudE51bWJlcikKLXsKLX0KLQotfQorLy8gUkVN
T1ZFIFRISVMgRklMRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dl
YkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJD
b3JlU3lzdGVtSW50ZXJmYWNlLmgKaW5kZXggMTc2NGI3OWY2OTI1MGJkZDlmYTBkMDJmNjA4MDg0
NGM1ODViNmY3NS4uYmViMzZjYTA2ZGQzOGI1MDdhMDYwYzgwNGZlY2YzYmUzMzBjYWEwYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZh
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVy
ZmFjZS5oCkBAIC0xNzIsNiArMTcyLDcgQEAgZXh0ZXJuIGRvdWJsZSAoKndrR2V0TlNVUkxSZXNw
b25zZUNhbGN1bGF0ZWRFeHBpcmF0aW9uKShOU1VSTFJlc3BvbnNlICpyZXNwb25zZSkKIGV4dGVy
biBOU0RhdGUgKigqd2tHZXROU1VSTFJlc3BvbnNlTGFzdE1vZGlmaWVkRGF0ZSkoTlNVUkxSZXNw
b25zZSAqcmVzcG9uc2UpOwogZXh0ZXJuIEJPT0wgKCp3a0dldE5TVVJMUmVzcG9uc2VNdXN0UmV2
YWxpZGF0ZSkoTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UpOwogZXh0ZXJuIHZvaWQgKCp3a0dldFdo
ZWVsRXZlbnREZWx0YXMpKE5TRXZlbnQqLCBmbG9hdCogZGVsdGFYLCBmbG9hdCogZGVsdGFZLCBC
T09MKiBjb250aW51b3VzKTsKK2V4dGVybiBVSW50OCAoKndrR2V0TlNFdmVudEtleUNoYXIpKE5T
RXZlbnQgKik7CiBleHRlcm4gQk9PTCAoKndrSGl0VGVzdE1lZGlhVUlQYXJ0KShpbnQgcGFydCwg
aW50IHRoZW1lU3R5bGUsIENHUmVjdCBib3VuZHMsIENHUG9pbnQgcG9pbnQpOwogZXh0ZXJuIHZv
aWQgKCp3a01lYXN1cmVNZWRpYVVJUGFydCkoaW50IHBhcnQsIGludCB0aGVtZVN0eWxlLCBDR1Jl
Y3QgKmJvdW5kcywgQ0dTaXplICpuYXR1cmFsU2l6ZSk7CiBleHRlcm4gTlNWaWV3ICooKndrQ3Jl
YXRlTWVkaWFVSUJhY2tncm91bmRWaWV3KSh2b2lkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggY2RhMDk1YmVk
NDdmZmNjYTE0ZjFiMTI1ZWUzYmU0OTA1ZjE4YzZhYy4uYjRjYTU0MDdkZDVhMDViYmNkNTgwMmRk
ZDdhZTExMDNmMzBjMDU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0KQEAgLTYwLDYgKzYwLDcgQEAgTlNUaW1lSW50
ZXJ2YWwgKCp3a0dldE5TVVJMUmVzcG9uc2VDYWxjdWxhdGVkRXhwaXJhdGlvbikoTlNVUkxSZXNw
b25zZSAqcmVzcG9uc2UKIE5TRGF0ZSAqKCp3a0dldE5TVVJMUmVzcG9uc2VMYXN0TW9kaWZpZWRE
YXRlKShOU1VSTFJlc3BvbnNlICpyZXNwb25zZSk7CiBCT09MICgqd2tHZXROU1VSTFJlc3BvbnNl
TXVzdFJldmFsaWRhdGUpKE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlKTsKIHZvaWQgKCp3a0dldFdo
ZWVsRXZlbnREZWx0YXMpKE5TRXZlbnQqLCBmbG9hdCogZGVsdGFYLCBmbG9hdCogZGVsdGFZLCBC
T09MKiBjb250aW51b3VzKTsKK1VJbnQ4ICgqd2tHZXROU0V2ZW50S2V5Q2hhcikoTlNFdmVudCAq
KTsKIHZvaWQgKCp3a1BvcHVwTWVudSkoTlNNZW51KiwgTlNQb2ludCBsb2NhdGlvbiwgZmxvYXQg
d2lkdGgsIE5TVmlldyosIGludCBzZWxlY3RlZEl0ZW0sIE5TRm9udCopOwogdW5zaWduZWQgKCp3
a1FUSW5jbHVkZU9ubHlNb2Rlcm5NZWRpYUZpbGVUeXBlcykodm9pZCk7CiBpbnQgKCp3a1FUTW92
aWVEYXRhUmF0ZSkoUVRNb3ZpZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1doZWVsRXZlbnRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2hl
ZWxFdmVudE1hYy5tbQppbmRleCA4OWM5ZmI3N2U5OTM5YTkxNDA5MjhmNjcwNzFmZGI2MWY2NTRj
ZDI4Li41NzQ4ZTdjNjk0YTY2MmIzYmEwYjY0ZDg3NTgwYzc2MDQyOWM3YmRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2hlZWxFdmVudE1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2hlZWxFdmVudE1hYy5tbQpAQCAtMSwxMjEgKzEsMiBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiwgMjAxMCwgMjAxMSBBcHBsZSBDb21w
dXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KIAotI2ltcG9ydCAiY29uZmln
LmgiCi0jaW1wb3J0ICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKLQotI2ltcG9ydCAiUGxhdGZvcm1N
b3VzZUV2ZW50LmgiCi0jaW1wb3J0ICJTY3JvbGxiYXIuaCIKLSNpbXBvcnQgIldlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UuaCIKLSNpbXBvcnQgPHd0Zi9VbnVzZWRQYXJhbS5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLXN0YXRpYyBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSBtb21lbnR1bVBoYXNl
Rm9yRXZlbnQoTlNFdmVudCAqZXZlbnQpCi17Ci0gICAgdWludDMyX3QgcGhhc2UgPSBQbGF0Zm9y
bVdoZWVsRXZlbnRQaGFzZU5vbmU7Ci0KLSNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJE
KSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCi0gICAgaWYgKFtldmVudCBt
b21lbnR1bVBoYXNlXSAmIE5TRXZlbnRQaGFzZUJlZ2FuKQotICAgICAgICBwaGFzZSB8PSBQbGF0
Zm9ybVdoZWVsRXZlbnRQaGFzZUJlZ2FuOwotICAgIGlmIChbZXZlbnQgbW9tZW50dW1QaGFzZV0g
JiBOU0V2ZW50UGhhc2VTdGF0aW9uYXJ5KQotICAgICAgICBwaGFzZSB8PSBQbGF0Zm9ybVdoZWVs
RXZlbnRQaGFzZVN0YXRpb25hcnk7Ci0gICAgaWYgKFtldmVudCBtb21lbnR1bVBoYXNlXSAmIE5T
RXZlbnRQaGFzZUNoYW5nZWQpCi0gICAgICAgIHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVudFBo
YXNlQ2hhbmdlZDsKLSAgICBpZiAoW2V2ZW50IG1vbWVudHVtUGhhc2VdICYgTlNFdmVudFBoYXNl
RW5kZWQpCi0gICAgICAgIHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlRW5kZWQ7Ci0g
ICAgaWYgKFtldmVudCBtb21lbnR1bVBoYXNlXSAmIE5TRXZlbnRQaGFzZUNhbmNlbGxlZCkKLSAg
ICAgICAgcGhhc2UgfD0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VDYW5jZWxsZWQ7Ci0jZWxzZQot
ICAgIHN3aXRjaCAod2tHZXROU0V2ZW50TW9tZW50dW1QaGFzZShldmVudCkpIHsKLSAgICBjYXNl
IHdrRXZlbnRQaGFzZU5vbmU6Ci0gICAgICAgIHBoYXNlID0gUGxhdGZvcm1XaGVlbEV2ZW50UGhh
c2VOb25lOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIHdrRXZlbnRQaGFzZUJlZ2FuOgotICAg
ICAgICBwaGFzZSA9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQmVnYW47Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2Ugd2tFdmVudFBoYXNlQ2hhbmdlZDoKLSAgICAgICAgcGhhc2UgPSBQbGF0Zm9y
bVdoZWVsRXZlbnRQaGFzZUNoYW5nZWQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ugd2tFdmVu
dFBoYXNlRW5kZWQ6Ci0gICAgICAgIHBoYXNlID0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VFbmRl
ZDsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotI2VuZGlmCi0KLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U+KHBoYXNlKTsKLX0KLQotc3RhdGljIFBsYXRmb3Jt
V2hlZWxFdmVudFBoYXNlIHBoYXNlRm9yRXZlbnQoTlNFdmVudCAqZXZlbnQpCi17Ci0jaWYgIWRl
ZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19M
RU9QQVJEKQotICAgIHVpbnQzMl90IHBoYXNlID0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VOb25l
OyAKLSAgICBpZiAoW2V2ZW50IHBoYXNlXSAmIE5TRXZlbnRQaGFzZUJlZ2FuKQotICAgICAgICBw
aGFzZSB8PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUJlZ2FuOwotICAgIGlmIChbZXZlbnQgcGhh
c2VdICYgTlNFdmVudFBoYXNlU3RhdGlvbmFyeSkKLSAgICAgICAgcGhhc2UgfD0gUGxhdGZvcm1X
aGVlbEV2ZW50UGhhc2VTdGF0aW9uYXJ5OwotICAgIGlmIChbZXZlbnQgcGhhc2VdICYgTlNFdmVu
dFBoYXNlQ2hhbmdlZCkKLSAgICAgICAgcGhhc2UgfD0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VD
aGFuZ2VkOwotICAgIGlmIChbZXZlbnQgcGhhc2VdICYgTlNFdmVudFBoYXNlRW5kZWQpCi0gICAg
ICAgIHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlRW5kZWQ7Ci0gICAgaWYgKFtldmVu
dCBwaGFzZV0gJiBOU0V2ZW50UGhhc2VDYW5jZWxsZWQpCi0gICAgICAgIHBoYXNlIHw9IFBsYXRm
b3JtV2hlZWxFdmVudFBoYXNlQ2FuY2VsbGVkOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxQbGF0
Zm9ybVdoZWVsRXZlbnRQaGFzZT4ocGhhc2UpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZXZl
bnQpOwotICAgIHJldHVybiBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmU7Ci0jZW5kaWYKLX0K
LQotUGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQoTlNFdmVudCogZXZlbnQs
IE5TVmlldyAqd2luZG93VmlldykKLSAgICA6IFBsYXRmb3JtRXZlbnQoUGxhdGZvcm1FdmVudDo6
V2hlZWwsIFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TU2hpZnRLZXlNYXNrLCBbZXZlbnQgbW9k
aWZpZXJGbGFnc10gJiBOU0NvbnRyb2xLZXlNYXNrLCBbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBO
U0FsdGVybmF0ZUtleU1hc2ssIFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQ29tbWFuZEtleU1h
c2ssIFtldmVudCB0aW1lc3RhbXBdKQotICAgICwgbV9wb3NpdGlvbihwb2ludEZvckV2ZW50KGV2
ZW50LCB3aW5kb3dWaWV3KSkKLSAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9pbnRGb3JF
dmVudChldmVudCkpCi0gICAgLCBtX2dyYW51bGFyaXR5KFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50
KQotICAgICwgbV9waGFzZShwaGFzZUZvckV2ZW50KGV2ZW50KSkKLSAgICAsIG1fbW9tZW50dW1Q
aGFzZShtb21lbnR1bVBoYXNlRm9yRXZlbnQoZXZlbnQpKQotewotICAgIEJPT0wgY29udGludW91
czsKLSAgICB3a0dldFdoZWVsRXZlbnREZWx0YXMoZXZlbnQsICZtX2RlbHRhWCwgJm1fZGVsdGFZ
LCAmY29udGludW91cyk7Ci0gICAgaWYgKGNvbnRpbnVvdXMpIHsKLSAgICAgICAgbV93aGVlbFRp
Y2tzWCA9IG1fZGVsdGFYIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KFNjcm9sbGJhcjo6cGl4ZWxzUGVy
TGluZVN0ZXAoKSk7Ci0gICAgICAgIG1fd2hlZWxUaWNrc1kgPSBtX2RlbHRhWSAvIHN0YXRpY19j
YXN0PGZsb2F0PihTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCkpOwotICAgICAgICBtX2hh
c1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMgPSB0cnVlOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIG1f
d2hlZWxUaWNrc1ggPSBtX2RlbHRhWDsKLSAgICAgICAgbV93aGVlbFRpY2tzWSA9IG1fZGVsdGFZ
OwotICAgICAgICBtX2RlbHRhWCAqPSBzdGF0aWNfY2FzdDxmbG9hdD4oU2Nyb2xsYmFyOjpwaXhl
bHNQZXJMaW5lU3RlcCgpKTsKLSAgICAgICAgbV9kZWx0YVkgKj0gc3RhdGljX2Nhc3Q8ZmxvYXQ+
KFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSk7Ci0gICAgICAgIG1faGFzUHJlY2lzZVNj
cm9sbGluZ0RlbHRhcyA9IGZhbHNlOwotICAgIH0KLQotI2lmIEhBVkUoSU5WRVJURURfV0hFRUxf
RVZFTlRTKQotICAgIG1fZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlID0gW2V2ZW50IGlzRGly
ZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlXTsKLSNlbHNlCi0gICAgbV9kaXJlY3Rpb25JbnZlcnRl
ZEZyb21EZXZpY2UgPSBmYWxzZTsKLSNlbmRpZgotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisvLyBSRU1PVkUgVEhJUyBGSUxFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9xdC9QbGF0Zm9ybUtleWJvYXJkRXZlbnRRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9xdC9QbGF0Zm9ybUtleWJvYXJkRXZlbnRRdC5jcHAKaW5kZXggMzhmZThkNjdkMjY1N2Y5MWJk
MmJhYmZjZTNjYTVkZmVkYmYyYjZkZi4uNjJkOGEyNDgyYjk5OGFhZjdlODMwNzY2NWIyNDAxMDZm
MjdiYmQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZvcm1L
ZXlib2FyZEV2ZW50UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRm
b3JtS2V5Ym9hcmRFdmVudFF0LmNwcApAQCAtNTk4LDE3ICs1OTgsMjYgQEAgUGxhdGZvcm1LZXli
b2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUUtleUV2ZW50KiBldmVudCkKIHsKICAg
ICBjb25zdCBpbnQgc3RhdGUgPSBldmVudC0+bW9kaWZpZXJzKCk7CiAgICAgbV90eXBlID0gKGV2
ZW50LT50eXBlKCkgPT0gUUV2ZW50OjpLZXlSZWxlYXNlKSA/IFBsYXRmb3JtRXZlbnQ6OktleVVw
IDogUGxhdGZvcm1FdmVudDo6S2V5RG93bjsKKworICAgIG1fbW9kaWZpZXJzID0gMDsKKyAgICBp
ZiAoKHN0YXRlICYgUXQ6OlNoaWZ0TW9kaWZpZXIpIHx8IGV2ZW50LT5rZXkoKSA9PSBRdDo6S2V5
X0JhY2t0YWIpIC8vIFNpbXVsYXRlIFNoaWZ0K1RhYiB3aXRoIEtleV9CYWNrdGFiCisgICAgICAg
IG1fbW9kaWZpZXJzIHw9IFNoaWZ0S2V5OworICAgIGlmIChzdGF0ZSAmIFF0OjpDb250cm9sTW9k
aWZpZXIpCisgICAgICAgIG1fbW9kaWZpZXJzIHw9IEN0cmxLZXk7CisgICAgaWYgKHN0YXRlICYg
UXQ6OkFsdE1vZGlmaWVyKQorICAgICAgICBtX21vZGlmaWVycyB8PSBBbHRLZXk7CisgICAgaWYg
KHN0YXRlICYgUXQ6Ok1ldGFNb2RpZmllcikKKyAgICAgICAgbV9tb2RpZmllcnMgfD0gTWV0YUtl
eTsKKwogICAgIG1fdGV4dCA9IGtleVRleHRGb3JLZXlFdmVudChldmVudCk7CiAgICAgbV91bm1v
ZGlmaWVkVGV4dCA9IG1fdGV4dDsgLy8gRklYTUU6IG5vdCBjb3JyZWN0CiAgICAgbV9rZXlJZGVu
dGlmaWVyID0ga2V5SWRlbnRpZmllckZvclF0S2V5Q29kZShldmVudC0+a2V5KCkpOwogICAgIG1f
YXV0b1JlcGVhdCA9IGV2ZW50LT5pc0F1dG9SZXBlYXQoKTsKLSAgICBtX2N0cmxLZXkgPSAoc3Rh
dGUgJiBRdDo6Q29udHJvbE1vZGlmaWVyKTsKLSAgICBtX2FsdEtleSA9IChzdGF0ZSAmIFF0OjpB
bHRNb2RpZmllcik7Ci0gICAgbV9tZXRhS2V5ID0gKHN0YXRlICYgUXQ6Ok1ldGFNb2RpZmllcik7
CiAgICAgbV9pc0tleXBhZCA9IChzdGF0ZSAmIFF0OjpLZXlwYWRNb2RpZmllcik7CisgICAgbV9p
c1N5c3RlbUtleSA9IGZhbHNlOwogICAgIG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlID0gd2luZG93
c0tleUNvZGVGb3JLZXlFdmVudChldmVudC0+a2V5KCksIG1faXNLZXlwYWQpOwogICAgIG1fbmF0
aXZlVmlydHVhbEtleUNvZGUgPSBldmVudC0+bmF0aXZlVmlydHVhbEtleSgpOwotICAgIG1fc2hp
ZnRLZXkgPSAoc3RhdGUgJiBRdDo6U2hpZnRNb2RpZmllcikgfHwgZXZlbnQtPmtleSgpID09IFF0
OjpLZXlfQmFja3RhYjsgLy8gU2ltdWxhdGUgU2hpZnQrVGFiIHdpdGggS2V5X0JhY2t0YWIKKyAg
ICBtX21hY0NoYXJDb2RlID0gMDsKICAgICBtX3F0RXZlbnQgPSBldmVudDsKICAgICBtX3RpbWVz
dGFtcCA9IFdURjo6Y3VycmVudFRpbWUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3F0L1BsYXRmb3JtTW91c2VFdmVudFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3F0L1BsYXRmb3JtTW91c2VFdmVudFF0LmNwcAppbmRleCA5MDlkMjJjYjJmOTdlYzNi
MjU4MDQyMzBjZDNhMmRjZDUyZGMzZTdkLi4xYmQwZDk0ODBlZjQzMzYwMWQxZTQzN2Y3MWNkMGJl
YTRkMjI4Y2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QbGF0Zm9y
bU1vdXNlRXZlbnRRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZv
cm1Nb3VzZUV2ZW50UXQuY3BwCkBAIC0zNSwxMiArMzUsMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1zdGF0aWMgdm9pZCBtb3VzZUV2ZW50TW9kaWZpZXJzRnJvbVF0S2V5Ym9hcmRNb2Rp
ZmllcnMoUXQ6OktleWJvYXJkTW9kaWZpZXJzIGtleWJvYXJkTW9kaWZpZXJzLCBib29sJiBhbHRL
ZXksIGJvb2wmIGN0cmxLZXksIGJvb2wmIG1ldGFLZXksIGJvb2wmIHNoaWZ0S2V5KQorc3RhdGlj
IHZvaWQgbW91c2VFdmVudE1vZGlmaWVyc0Zyb21RdEtleWJvYXJkTW9kaWZpZXJzKFF0OjpLZXli
b2FyZE1vZGlmaWVycyBrZXlib2FyZE1vZGlmaWVycywgdW5zaWduZWQmIG1vZGlmaWVycykKIHsK
LSAgICBhbHRLZXkgPSBrZXlib2FyZE1vZGlmaWVycyAmIFF0OjpBbHRNb2RpZmllcjsKLSAgICBj
dHJsS2V5ID0ga2V5Ym9hcmRNb2RpZmllcnMgJiBRdDo6Q29udHJvbE1vZGlmaWVyOwotICAgIG1l
dGFLZXkgPSBrZXlib2FyZE1vZGlmaWVycyAmIFF0OjpNZXRhTW9kaWZpZXI7Ci0gICAgc2hpZnRL
ZXkgPSBrZXlib2FyZE1vZGlmaWVycyAmIFF0OjpTaGlmdE1vZGlmaWVyOworICAgIG1vZGlmaWVy
cyA9IDA7CisgICAgaWYgKGtleWJvYXJkTW9kaWZpZXJzICYgUXQ6OlNoaWZ0TW9kaWZpZXIpCisg
ICAgICAgIG1vZGlmaWVycyB8PSBTaGlmdEtleTsKKyAgICBpZiAoa2V5Ym9hcmRNb2RpZmllcnMg
JiBRdDo6Q29udHJvbE1vZGlmaWVyKQorICAgICAgICBtb2RpZmllcnMgfD0gQ3RybEtleTsKKyAg
ICBpZiAoa2V5Ym9hcmRNb2RpZmllcnMgJiBRdDo6QWx0TW9kaWZpZXIpCisgICAgICAgIG1vZGlm
aWVycyB8PSBBbHRLZXk7CisgICAgaWYgKGtleWJvYXJkTW9kaWZpZXJzICYgUXQ6Ok1ldGFNb2Rp
ZmllcikKKyAgICAgICAgbW9kaWZpZXJzIHw9IE1ldGFLZXk7CiB9CiAKIHN0YXRpYyB2b2lkIG1v
dXNlRXZlbnRUeXBlQW5kTW91c2VCdXR0b25Gcm9tUUV2ZW50KGNvbnN0IFFFdmVudCogZXZlbnQs
IFBsYXRmb3JtRXZlbnQ6OlR5cGUmIG1vdXNlRXZlbnRUeXBlLCBNb3VzZUJ1dHRvbiYgbW91c2VC
dXR0b24pCkBAIC0xMjEsNyArMTI2LDcgQEAgUGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1v
dXNlRXZlbnQoUUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50KiBldmVudCwgaW50IGNsaWMKICAgICBt
X2dsb2JhbFBvc2l0aW9uID0gSW50UG9pbnQoZXZlbnQtPnNjcmVlblBvcygpKTsKIAogICAgIG1f
Y2xpY2tDb3VudCA9IGNsaWNrQ291bnQ7Ci0gICAgbW91c2VFdmVudE1vZGlmaWVyc0Zyb21RdEtl
eWJvYXJkTW9kaWZpZXJzKGV2ZW50LT5tb2RpZmllcnMoKSwgbV9hbHRLZXksIG1fY3RybEtleSwg
bV9tZXRhS2V5LCBtX3NoaWZ0S2V5KTsKKyAgICBtb3VzZUV2ZW50TW9kaWZpZXJzRnJvbVF0S2V5
Ym9hcmRNb2RpZmllcnMoZXZlbnQtPm1vZGlmaWVycygpLCBtX21vZGlmaWVycyk7CiB9CiAjZW5k
aWYgLy8gUVRfTk9fR1JBUEhJQ1NWSUVXCiAKQEAgLTE1MSw3ICsxNTYsNyBAQCBQbGF0Zm9ybU1v
dXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudChRSW5wdXRFdmVudCogZXZlbnQsIGludCBjbGlj
a0NvdW50KQogICAgIH0KIAogICAgIG1fY2xpY2tDb3VudCA9IGNsaWNrQ291bnQ7Ci0gICAgbW91
c2VFdmVudE1vZGlmaWVyc0Zyb21RdEtleWJvYXJkTW9kaWZpZXJzKGV2ZW50LT5tb2RpZmllcnMo
KSwgbV9hbHRLZXksIG1fY3RybEtleSwgbV9tZXRhS2V5LCBtX3NoaWZ0S2V5KTsKKyAgICBtb3Vz
ZUV2ZW50TW9kaWZpZXJzRnJvbVF0S2V5Ym9hcmRNb2RpZmllcnMoZXZlbnQtPm1vZGlmaWVycygp
LCBtX21vZGlmaWVycyk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3F0L1BsYXRmb3JtVG91Y2hFdmVudFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3F0L1BsYXRmb3JtVG91Y2hFdmVudFF0LmNwcAppbmRleCA3YzYyZGE2MjU0NjZjNGRmNjE0ODU4
NjljYTNmOGUxNGFlMzJlYTEyLi5lM2NhZThjNWExMmExNjFjN2ZiZTE2OWJiMGIyMmQxMWJmZDI3
NGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QbGF0Zm9ybVRvdWNo
RXZlbnRRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZvcm1Ub3Vj
aEV2ZW50UXQuY3BwCkBAIC00NiwxMCArNDYsMTYgQEAgUGxhdGZvcm1Ub3VjaEV2ZW50OjpQbGF0
Zm9ybVRvdWNoRXZlbnQoUVRvdWNoRXZlbnQqIGV2ZW50KQogICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgcG9pbnRzLmNvdW50KCk7ICsraSkKICAgICAgICAgbV90b3VjaFBvaW50cy5hcHBlbmQoUGxh
dGZvcm1Ub3VjaFBvaW50KHBvaW50cy5hdChpKSkpOwogCi0gICAgbV9jdHJsS2V5ID0gKGV2ZW50
LT5tb2RpZmllcnMoKSAmIFF0OjpDb250cm9sTW9kaWZpZXIpOwotICAgIG1fYWx0S2V5ID0gKGV2
ZW50LT5tb2RpZmllcnMoKSAmIFF0OjpBbHRNb2RpZmllcik7Ci0gICAgbV9zaGlmdEtleSA9IChl
dmVudC0+bW9kaWZpZXJzKCkgJiBRdDo6U2hpZnRNb2RpZmllcik7Ci0gICAgbV9tZXRhS2V5ID0g
KGV2ZW50LT5tb2RpZmllcnMoKSAmIFF0OjpNZXRhTW9kaWZpZXIpOworICAgIG1fbW9kaWZpZXJz
ID0gMDsKKyAgICBpZiAoZXZlbnQtPm1vZGlmaWVycygpICAmIFF0OjpTaGlmdE1vZGlmaWVyKQor
ICAgICAgICBtX21vZGlmaWVycyB8PSBTaGlmdEtleTsKKyAgICBpZiAoZXZlbnQtPm1vZGlmaWVy
cygpICAmIFF0OjpDb250cm9sTW9kaWZpZXIpCisgICAgICAgIG1fbW9kaWZpZXJzIHw9IEN0cmxL
ZXk7CisgICAgaWYgKGV2ZW50LT5tb2RpZmllcnMoKSAgJiBRdDo6QWx0TW9kaWZpZXIpCisgICAg
ICAgIG1fbW9kaWZpZXJzIHw9IEFsdEtleTsKKyAgICBpZiAoZXZlbnQtPm1vZGlmaWVycygpICAm
IFF0OjpNZXRhTW9kaWZpZXIpCisgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1ldGFLZXk7CisKICAg
ICBtX3RpbWVzdGFtcCA9IFdURjo6Y3VycmVudFRpbWUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9LZXlFdmVudFdpbi5jcHAKaW5kZXggYWQ1ODliYmY4MjEyZDUyNTc5MDdi
M2E0ZDJlYjY2ZTM0YjM3MjVkNS4uOGZkOTc3ZDJkOTcyZGJjOWY3YzZhNDk1MWFhYTg5Yzc3MjAz
YTFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCkBA
IC0xOTQsOSArMTk0LDEwIEBAIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXlib2Fy
ZEV2ZW50KEhXTkQsIFdQQVJBTSBjb2RlLCBMUEFSQU0ga2V5RGF0YSwKICAgICAsIG1fdGV4dCgo
dHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpDaGFyKSA/IHNpbmdsZUNoYXJhY3RlclN0cmluZyhjb2Rl
KSA6IFN0cmluZygpKQogICAgICwgbV91bm1vZGlmaWVkVGV4dCgodHlwZSA9PSBQbGF0Zm9ybUV2
ZW50OjpDaGFyKSA/IHNpbmdsZUNoYXJhY3RlclN0cmluZyhjb2RlKSA6IFN0cmluZygpKQogICAg
ICwgbV9rZXlJZGVudGlmaWVyKCh0eXBlID09IFBsYXRmb3JtRXZlbnQ6OkNoYXIpID8gU3RyaW5n
KCkgOiBrZXlJZGVudGlmaWVyRm9yV2luZG93c0tleUNvZGUoY29kZSkpCi0gICAgLCBtX2F1dG9S
ZXBlYXQoSElXT1JEKGtleURhdGEpICYgS0ZfUkVQRUFUKQogICAgICwgbV93aW5kb3dzVmlydHVh
bEtleUNvZGUoKHR5cGUgPT0gUmF3S2V5RG93biB8fCB0eXBlID09IEtleVVwKSA/IGNvZGUgOiAw
KQogICAgICwgbV9uYXRpdmVWaXJ0dWFsS2V5Q29kZShtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSkK
KyAgICAsIG1fbWFjQ2hhckNvZGUoMCkKKyAgICAsIG1fYXV0b1JlcGVhdChISVdPUkQoa2V5RGF0
YSkgJiBLRl9SRVBFQVQpCiAgICAgLCBtX2lzS2V5cGFkKGlzS2V5cGFkRXZlbnQoY29kZSwga2V5
RGF0YSwgdHlwZSkpCiAgICAgLCBtX2lzU3lzdGVtS2V5KHN5c3RlbUtleSkKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaGVlbEV2ZW50V2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaGVlbEV2ZW50V2luLmNwcAppbmRleCBjYjJkZGE1YzBm
MGJiMjBhY2YwY2Y0YWU0NWJmYmUzMzAxYjM2MjdlLi41MjI0Njk3MThkOWU1YjM5NDQyMTYxZGFh
ZjUxY2Y2MWU4MzIxOGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
V2hlZWxFdmVudFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1doZWVs
RXZlbnRXaW4uY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgUGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0
Zm9ybVdoZWVsRXZlbnQoSFdORCBoV25kLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtLAog
ICAgICAgICBtX3doZWVsVGlja3NYID0gMDsKICAgICAgICAgbV93aGVlbFRpY2tzWSA9IGRlbHRh
OwogICAgIH0KLSAgICBpZiAoaXNNb3VzZUhXaGVlbCB8fCBtX3NoaWZ0S2V5KSB7CisgICAgaWYg
KGlzTW91c2VIV2hlZWwgfHwgc2hpZnRLZXkoKSkgewogICAgICAgICBtX2RlbHRhWCA9IGRlbHRh
ICogc3RhdGljX2Nhc3Q8ZmxvYXQ+KGhvcml6b250YWxTY3JvbGxDaGFycygpKSAqIGNTY3JvbGxi
YXJQaXhlbHNQZXJMaW5lOwogICAgICAgICBtX2RlbHRhWSA9IDA7CiAgICAgICAgIG1fZ3JhbnVs
YXJpdHkgPSBTY3JvbGxCeVBpeGVsV2hlZWxFdmVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQppbmRleCAxMzEwMTI0
ZDI3MjlmYjY5Yzc1ZjYzYjBmNmNiNTAzNDMwZmRiMWEzLi5lOTNkMGM2MWVkZmNkM2U4YzhiNTZi
YWNjMmQwOTkzMGYwMjExMmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCkBAIC02Nyw2ICs2Nyw3IEBAIHZvaWQg
SW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uodm9pZCkKICAgICBJTklUKFNpZ25lZFB1YmxpY0tl
eUFuZENoYWxsZW5nZVN0cmluZyk7CiAgICAgSU5JVChHZXRQcmVmZXJyZWRFeHRlbnNpb25Gb3JN
SU1FVHlwZSk7CiAgICAgSU5JVChHZXRXaGVlbEV2ZW50RGVsdGFzKTsKKyAgICBJTklUKEdldE5T
RXZlbnRLZXlDaGFyKTsKICAgICBJTklUKEhpdFRlc3RNZWRpYVVJUGFydCk7CiAgICAgSU5JVChJ
bml0aWFsaXplTWF4aW11bUhUVFBDb25uZWN0aW9uQ291bnRQZXJIb3N0KTsKICAgICBJTklUKE1l
YXN1cmVNZWRpYVVJUGFydCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRl
eCA2MWI4ZTg4NmUxNDY4MzZlYmQ0NzM0ODBkYTljYjk0OTMyMDdmNzUwLi5hNWMzNDJjYTNhNDY3
MTZlOTNlYWU0M2VhNWEwYjY3ZTc2MmNhZDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0KQEAgLTc2LDYgKzc2LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvSGl0VGVzdFJlc3Vs
dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9MZWdhY3lXZWJBcmNoaXZlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1BhZ2UuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1FdmVudEZhY3RvcnkuaD4KICNp
bXBvcnQgPFdlYkNvcmUvUGx1Z2luRGF0YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QcmludENvbnRl
eHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyTGF5ZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IGQxZWViNjlhYjJlMmVlMTBhMjA2M2NlODM1MGNm
Nzk0NDM4OGFkMjYuLmM0YmMyYTJlMDJkNWJhODg0MjI3NGY4YjRjNTNmMjE5NDNhYjA1NDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtMTA0LDcgKzEwNCw3
IEBACiAjaW1wb3J0IDxXZWJDb3JlL0xlZ2FjeVdlYkFyY2hpdmUuaD4KICNpbXBvcnQgPFdlYkNv
cmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+Ci0jaW1wb3J0
IDxXZWJDb3JlL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9QbGF0
Zm9ybUV2ZW50RmFjdG9yeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SYW5nZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9SZW5kZXJXaWRnZXQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyVmlldy5oPgpA
QCAtMzEwOCw3ICszMTA4LDcgQEAgc3RhdGljIHZvaWQgc2V0TWVudVRhcmdldHMoTlNNZW51KiBt
ZW51KQogICAgIF9wcml2YXRlLT5oYW5kbGluZ01vdXNlRG93bkV2ZW50ID0gWUVTOwogICAgIHBh
Z2UtPmNvbnRleHRNZW51Q29udHJvbGxlcigpLT5jbGVhckNvbnRleHRNZW51KCk7CiAgICAgY29y
ZUZyYW1lLT5ldmVudEhhbmRsZXIoKS0+bW91c2VEb3duKGV2ZW50KTsKLSAgICBCT09MIGhhbmRs
ZWRFdmVudCA9IGNvcmVGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNlbmRDb250ZXh0TWVudUV2ZW50
KFBsYXRmb3JtTW91c2VFdmVudChldmVudCwgcGFnZS0+Y2hyb21lKCktPnBsYXRmb3JtUGFnZUNs
aWVudCgpKSk7CisgICAgQk9PTCBoYW5kbGVkRXZlbnQgPSBjb3JlRnJhbWUtPmV2ZW50SGFuZGxl
cigpLT5zZW5kQ29udGV4dE1lbnVFdmVudChQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRlUGxh
dGZvcm1Nb3VzZUV2ZW50KGV2ZW50LCBwYWdlLT5jaHJvbWUoKS0+cGxhdGZvcm1QYWdlQ2xpZW50
KCkpKTsKICAgICBfcHJpdmF0ZS0+aGFuZGxpbmdNb3VzZURvd25FdmVudCA9IE5POwogCiAgICAg
aWYgKCFoYW5kbGVkRXZlbnQpCkBAIC0zNDczLDcgKzM0NzMsNyBAQCBzdGF0aWMgdm9pZCBzZXRN
ZW51VGFyZ2V0cyhOU01lbnUqIG1lbnUpCiAgICAgICAgICAgICBbaGl0SFRNTFZpZXcgX3NldE1v
dXNlRG93bkV2ZW50OmV2ZW50XTsKICAgICAgICAgICAgIGlmIChbaGl0SFRNTFZpZXcgX2lzU2Vs
ZWN0aW9uRXZlbnQ6ZXZlbnRdKSB7CiAgICAgICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBj
b3JlRnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gY29yZUZyYW1l
LT5ldmVudEhhbmRsZXIoKS0+ZXZlbnRNYXlTdGFydERyYWcoUGxhdGZvcm1Nb3VzZUV2ZW50KGV2
ZW50LCBwYWdlLT5jaHJvbWUoKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0ID0gY29yZUZyYW1lLT5ldmVudEhhbmRsZXIoKS0+ZXZlbnRNYXlTdGFy
dERyYWcoUGxhdGZvcm1FdmVudEZhY3Rvcnk6OmNyZWF0ZVBsYXRmb3JtTW91c2VFdmVudChldmVu
dCwgcGFnZS0+Y2hyb21lKCktPnBsYXRmb3JtUGFnZUNsaWVudCgpKSk7CiAgICAgICAgICAgICB9
IGVsc2UgaWYgKFtoaXRIVE1MVmlldyBfaXNTY3JvbGxCYXJFdmVudDpldmVudF0pCiAgICAgICAg
ICAgICAgICAgcmVzdWx0ID0gdHJ1ZTsKICAgICAgICAgICAgIFtoaXRIVE1MVmlldyBfc2V0TW91
c2VEb3duRXZlbnQ6bmlsXTsKQEAgLTM0OTgsNyArMzQ5OCw3IEBAIHN0YXRpYyB2b2lkIHNldE1l
bnVUYXJnZXRzKE5TTWVudSogbWVudSkKICAgICAgICAgICAgIGlmIChGcmFtZSogY29yZUZyYW1l
ID0gY29yZShbaGl0SFRNTFZpZXcgX2ZyYW1lXSkpIHsKICAgICAgICAgICAgICAgICBbaGl0SFRN
TFZpZXcgX3NldE1vdXNlRG93bkV2ZW50OmV2ZW50XTsKICAgICAgICAgICAgICAgICBpZiAoUGFn
ZSogcGFnZSA9IGNvcmVGcmFtZS0+cGFnZSgpKQotICAgICAgICAgICAgICAgICAgICByZXN1bHQg
PSBjb3JlRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5ldmVudE1heVN0YXJ0RHJhZyhQbGF0Zm9ybU1v
dXNlRXZlbnQoZXZlbnQsIHBhZ2UtPmNocm9tZSgpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKSkpOwor
ICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBjb3JlRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5l
dmVudE1heVN0YXJ0RHJhZyhQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1Nb3Vz
ZUV2ZW50KGV2ZW50LCBwYWdlLT5jaHJvbWUoKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkpKTsKICAg
ICAgICAgICAgICAgICBbaGl0SFRNTFZpZXcgX3NldE1vdXNlRG93bkV2ZW50Om5pbF07CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KQEAgLTM3MzgsMTIgKzM3MzgsMTIgQEAgc3RhdGljIFBhc3NS
ZWZQdHI8S2V5Ym9hcmRFdmVudD4gY3VycmVudEtleWJvYXJkRXZlbnQoRnJhbWUqIGNvcmVGcmFt
ZSkKIAogICAgIHN3aXRjaCAoW2V2ZW50IHR5cGVdKSB7CiAgICAgY2FzZSBOU0tleURvd246IHsK
LSAgICAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50IHBsYXRmb3JtRXZlbnQoZXZlbnQpOworICAg
ICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQgcGxhdGZvcm1FdmVudCA9IFBsYXRmb3JtRXZlbnRG
YWN0b3J5OjpjcmVhdGVQbGF0Zm9ybUtleWJvYXJkRXZlbnQoZXZlbnQpOwogICAgICAgICBwbGF0
Zm9ybUV2ZW50LmRpc2FtYmlndWF0ZUtleURvd25FdmVudChQbGF0Zm9ybUV2ZW50OjpSYXdLZXlE
b3duKTsKICAgICAgICAgcmV0dXJuIEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShwbGF0Zm9ybUV2ZW50
LCBjb3JlRnJhbWUtPmRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCkpOwogICAgIH0KICAgICBjYXNl
IE5TS2V5VXA6Ci0gICAgICAgIHJldHVybiBLZXlib2FyZEV2ZW50OjpjcmVhdGUoZXZlbnQsIGNv
cmVGcmFtZS0+ZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSk7CisgICAgICAgIHJldHVybiBLZXli
b2FyZEV2ZW50OjpjcmVhdGUoUGxhdGZvcm1FdmVudEZhY3Rvcnk6OmNyZWF0ZVBsYXRmb3JtS2V5
Ym9hcmRFdmVudChldmVudCksIGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSk7
CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtNDE0MSw3ICs0MTQx
LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8S2V5Ym9hcmRFdmVudD4gY3VycmVudEtleWJvYXJkRXZl
bnQoRnJhbWUqIGNvcmVGcmFtZSkKIAogICAgIC8vIERvbid0IG1ha2UgYW4gZXZlbnQgZnJvbSB0
aGUgbnVtIGxvY2sgYW5kIGZ1bmN0aW9uIGtleXMuCiAgICAgaWYgKGNvcmVGcmFtZSAmJiBrZXlD
b2RlICE9IDAgJiYga2V5Q29kZSAhPSAxMCAmJiBrZXlDb2RlICE9IDYzKSB7Ci0gICAgICAgIGNv
cmVGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmtleUV2ZW50KFBsYXRmb3JtS2V5Ym9hcmRFdmVudChl
dmVudCkpOworICAgICAgICBjb3JlRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5rZXlFdmVudChQbGF0
Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1LZXlib2FyZEV2ZW50KGV2ZW50KSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJQREZWaWV3Lm1tCmluZGV4IDhhZTBmM2NmZDU3ODE5MTVlOWQxNGFkNTY4ZmM5OTc2MjQxYWNm
NDMuLmM1ZmU5MjEwZWM0YjExNGQ1Njc5N2QzMWM2MzM5ZDVhY2Q1NDAzODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlBERlZpZXcubW0KQEAgLTU4LDcgKzU4LDcgQEAKICNpbXBvcnQg
PFdlYkNvcmUvS1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL01vdXNlRXZlbnQuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1LZXli
b2FyZEV2ZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtRXZlbnRGYWN0b3J5Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9XZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRp
b25zLmg+CkBAIC05NTksNyArOTU5LDcgQEAgc3RhdGljIEJPT0wgaXNGcmFtZUluUmFuZ2UoV2Vi
RnJhbWUgKmZyYW1lLCBET01SYW5nZSAqcmFuZ2UpCiAgICAgICAgICAgICBidXR0b24gPSBbbnNF
dmVudCBidXR0b25OdW1iZXJdOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTlNL
ZXlEb3duOiB7Ci0gICAgICAgICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQgcGUobnNFdmVudCk7
CisgICAgICAgICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQgcGUgPSBQbGF0Zm9ybUV2ZW50RmFj
dG9yeTo6Y3JlYXRlUGxhdGZvcm1LZXlib2FyZEV2ZW50KG5zRXZlbnQpOwogICAgICAgICAgICAg
cGUuZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pOwog
ICAgICAgICAgICAgZXZlbnQgPSBLZXlib2FyZEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmtl
eWRvd25FdmVudCwgdHJ1ZSwgdHJ1ZSwgMCwKICAgICAgICAgICAgICAgICBwZS5rZXlJZGVudGlm
aWVyKCksIHBlLndpbmRvd3NWaXJ0dWFsS2V5Q29kZSgpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tCmluZGV4IGQ3YzlhYjRlNWRiYTM2MDBkOTAyM2U2MTZhNmIxZDQ0MDNmYzI5NmIu
LjZkMDE3NzcwNzEzMzA2ZDc4ODc1NWM2ZjA3YTEzMWZkMzQxNjgxNDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTE0NCw3ICsxNDQsNyBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9QYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2VDYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9QYWdlR3JvdXAuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1Nb3VzZUV2ZW50Lmg+Cisj
aW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtRXZlbnRGYWN0b3J5Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1Byb2dyZXNzVHJhY2tlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1JlbmRlcldpZGdldC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
RXZlbnRDb252ZXJzaW9uLmNwcAppbmRleCBhNTMxNTczYTMwNjEzNGU2MjUzMWY1NWIwYTExZTU1
MGUyMzU1YThhLi5hMmI0MWYyM2IwMGM4MzhmMmJjZDgwNDc4NDVjNGU4ZDhiZmNlODgzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcApAQCAtNDksMTAg
KzQ5LDE2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICB9CiAKLSAgICAgICAgbV9zaGlmdEtleSA9IHdlYkV2ZW50LnNoaWZ0S2V5KCk7Ci0gICAg
ICAgIG1fY3RybEtleSA9IHdlYkV2ZW50LmNvbnRyb2xLZXkoKTsKLSAgICAgICAgbV9hbHRLZXkg
PSB3ZWJFdmVudC5hbHRLZXkoKTsKLSAgICAgICAgbV9tZXRhS2V5ID0gd2ViRXZlbnQubWV0YUtl
eSgpOworICAgICAgICBtX21vZGlmaWVycyA9IDA7CisgICAgICAgIGlmICh3ZWJFdmVudC5zaGlm
dEtleSgpKQorICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gU2hpZnRLZXk7CisgICAgICAgIGlm
ICh3ZWJFdmVudC5jb250cm9sS2V5KCkpCisgICAgICAgICAgICBtX21vZGlmaWVycyB8PSBDdHJs
S2V5OworICAgICAgICBpZiAod2ViRXZlbnQuYWx0S2V5KCkpCisgICAgICAgICAgICBtX21vZGlm
aWVycyB8PSBBbHRLZXk7CisgICAgICAgIGlmICh3ZWJFdmVudC5hbHRLZXkoKSkKKyAgICAgICAg
ICAgIG1fbW9kaWZpZXJzIHw9IE1ldGFLZXk7CisKICAgICAgICAgbV90aW1lc3RhbXAgPSB3ZWJF
dmVudC50aW1lc3RhbXAoKTsKIAogICAgICAgICAvLyBQbGF0Zm9ybU1vdXNlRXZlbnQKQEAgLTc4
LDEzICs4NCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fY2xpY2tDb3VudCA9IHdlYkV2ZW50LmNs
aWNrQ291bnQoKTsKIAogICAgICAgICBtX21vZGlmaWVyRmxhZ3MgPSAwOwotICAgICAgICBpZiAo
bV9zaGlmdEtleSkKKyAgICAgICAgaWYgKHdlYkV2ZW50LnNoaWZ0S2V5KCkpCiAgICAgICAgICAg
ICBtX21vZGlmaWVyRmxhZ3MgfD0gV2ViRXZlbnQ6OlNoaWZ0S2V5OwotICAgICAgICBpZiAobV9j
dHJsS2V5KQorICAgICAgICBpZiAod2ViRXZlbnQuY29udHJvbEtleSgpKQogICAgICAgICAgICAg
bV9tb2RpZmllckZsYWdzIHw9IFdlYkV2ZW50OjpDb250cm9sS2V5OwotICAgICAgICBpZiAobV9h
bHRLZXkpCisgICAgICAgIGlmICh3ZWJFdmVudC5hbHRLZXkoKSkKICAgICAgICAgICAgIG1fbW9k
aWZpZXJGbGFncyB8PSBXZWJFdmVudDo6QWx0S2V5OwotICAgICAgICBpZiAobV9tZXRhS2V5KQor
ICAgICAgICBpZiAod2ViRXZlbnQuYWx0S2V5KCkpCiAgICAgICAgICAgICBtX21vZGlmaWVyRmxh
Z3MgfD0gV2ViRXZlbnQ6Ok1ldGFLZXk7CiAKICNpZiBQTEFURk9STShXSU4pCkBAIC0xMDQsMTAg
KzExMCwxNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICAvLyBQbGF0Zm9ybUV2ZW50CiAgICAg
ICAgIG1fdHlwZSA9IFBsYXRmb3JtRXZlbnQ6OldoZWVsOwotICAgICAgICBtX3NoaWZ0S2V5ID0g
d2ViRXZlbnQuc2hpZnRLZXkoKTsKLSAgICAgICAgbV9jdHJsS2V5ID0gd2ViRXZlbnQuY29udHJv
bEtleSgpOwotICAgICAgICBtX2FsdEtleSA9IHdlYkV2ZW50LmFsdEtleSgpOwotICAgICAgICBt
X21ldGFLZXkgPSB3ZWJFdmVudC5tZXRhS2V5KCk7CisKKyAgICAgICAgbV9tb2RpZmllcnMgPSAw
OworICAgICAgICBpZiAod2ViRXZlbnQuc2hpZnRLZXkoKSkKKyAgICAgICAgICAgIG1fbW9kaWZp
ZXJzIHw9IFNoaWZ0S2V5OworICAgICAgICBpZiAod2ViRXZlbnQuY29udHJvbEtleSgpKQorICAg
ICAgICAgICAgbV9tb2RpZmllcnMgfD0gQ3RybEtleTsKKyAgICAgICAgaWYgKHdlYkV2ZW50LmFs
dEtleSgpKQorICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gQWx0S2V5OworICAgICAgICBpZiAo
d2ViRXZlbnQuYWx0S2V5KCkpCisgICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNZXRhS2V5Owor
CiAgICAgICAgIG1fdGltZXN0YW1wID0gd2ViRXZlbnQudGltZXN0YW1wKCk7CiAKICAgICAgICAg
Ly8gUGxhdGZvcm1XaGVlbEV2ZW50CkBAIC0xNTQsMTAgKzE2NywxNiBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogCi0gICAgICAgIG1fc2hp
ZnRLZXkgPSB3ZWJFdmVudC5zaGlmdEtleSgpOwotICAgICAgICBtX2N0cmxLZXkgPSB3ZWJFdmVu
dC5jb250cm9sS2V5KCk7Ci0gICAgICAgIG1fYWx0S2V5ID0gd2ViRXZlbnQuYWx0S2V5KCk7Ci0g
ICAgICAgIG1fbWV0YUtleSA9IHdlYkV2ZW50Lm1ldGFLZXkoKTsKKyAgICAgICAgbV9tb2RpZmll
cnMgPSAwOworICAgICAgICBpZiAod2ViRXZlbnQuc2hpZnRLZXkoKSkKKyAgICAgICAgICAgIG1f
bW9kaWZpZXJzIHw9IFNoaWZ0S2V5OworICAgICAgICBpZiAod2ViRXZlbnQuY29udHJvbEtleSgp
KQorICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gQ3RybEtleTsKKyAgICAgICAgaWYgKHdlYkV2
ZW50LmFsdEtleSgpKQorICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gQWx0S2V5OworICAgICAg
ICBpZiAod2ViRXZlbnQuYWx0S2V5KCkpCisgICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNZXRh
S2V5OworCiAgICAgICAgIG1fdGltZXN0YW1wID0gd2ViRXZlbnQudGltZXN0YW1wKCk7CiAKICAg
ICAgICAgLy8gUGxhdGZvcm1LZXlib2FyZEV2ZW50CkBAIC0xNjYsMTQgKzE4NSwxMCBAQCBwdWJs
aWM6CiAgICAgICAgIG1fa2V5SWRlbnRpZmllciA9IHdlYkV2ZW50LmtleUlkZW50aWZpZXIoKTsK
ICAgICAgICAgbV93aW5kb3dzVmlydHVhbEtleUNvZGUgPSB3ZWJFdmVudC53aW5kb3dzVmlydHVh
bEtleUNvZGUoKTsKICAgICAgICAgbV9uYXRpdmVWaXJ0dWFsS2V5Q29kZSA9IHdlYkV2ZW50Lm5h
dGl2ZVZpcnR1YWxLZXlDb2RlKCk7CisgICAgICAgIG1fbWFjQ2hhckNvZGUgPSB3ZWJFdmVudC5t
YWNDaGFyQ29kZSgpOwogICAgICAgICBtX2F1dG9SZXBlYXQgPSB3ZWJFdmVudC5pc0F1dG9SZXBl
YXQoKTsKICAgICAgICAgbV9pc0tleXBhZCA9IHdlYkV2ZW50LmlzS2V5cGFkKCk7Ci0gICAgICAg
IAotI2lmIFBMQVRGT1JNKFdJTikKLSAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBtYWtlIG1f
aXNTeXN0ZW1LZXkgYXZhaWxhYmxlIChhbmQgZmFsc2UpIG9uIGFsbCBwbGF0Zm9ybXMKLSAgICAg
ICAgLy8gdG8gYXZvaWQgdGhpcyAjZGVmaW5lLiAKICAgICAgICAgbV9pc1N5c3RlbUtleSA9IHdl
YkV2ZW50LmlzU3lzdGVtS2V5KCk7Ci0jZW5kaWYKICAgICB9CiB9OwogCkBAIC0yMDIsMTAgKzIx
NywxNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgfQogCi0gICAgICAgIG1fc2hpZnRLZXkgPSB3ZWJFdmVudC5zaGlmdEtleSgpOwotICAgICAg
ICBtX2N0cmxLZXkgPSB3ZWJFdmVudC5jb250cm9sS2V5KCk7Ci0gICAgICAgIG1fYWx0S2V5ID0g
d2ViRXZlbnQuYWx0S2V5KCk7Ci0gICAgICAgIG1fbWV0YUtleSA9IHdlYkV2ZW50Lm1ldGFLZXko
KTsKKyAgICAgICAgbV9tb2RpZmllcnMgPSAwOworICAgICAgICBpZiAod2ViRXZlbnQuc2hpZnRL
ZXkoKSkKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IFNoaWZ0S2V5OworICAgICAgICBpZiAo
d2ViRXZlbnQuY29udHJvbEtleSgpKQorICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gQ3RybEtl
eTsKKyAgICAgICAgaWYgKHdlYkV2ZW50LmFsdEtleSgpKQorICAgICAgICAgICAgbV9tb2RpZmll
cnMgfD0gQWx0S2V5OworICAgICAgICBpZiAod2ViRXZlbnQuYWx0S2V5KCkpCisgICAgICAgICAg
ICBtX21vZGlmaWVycyB8PSBNZXRhS2V5OworCiAgICAgICAgIG1fdGltZXN0YW1wID0gd2ViRXZl
bnQudGltZXN0YW1wKCk7CiAKICAgICAgICAgLy8gUGxhdGZvcm1HZXN0dXJlRXZlbnQKQEAgLTI3
NCwxMCArMjk1LDE2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICB9CiAKLSAgICAgICAgbV9jdHJsS2V5ID0gd2ViRXZlbnQuY29udHJvbEtleSgp
OwotICAgICAgICBtX2FsdEtleSA9IHdlYkV2ZW50LmFsdEtleSgpOwotICAgICAgICBtX3NoaWZ0
S2V5ID0gd2ViRXZlbnQuc2hpZnRLZXkoKTsKLSAgICAgICAgbV9tZXRhS2V5ID0gd2ViRXZlbnQu
bWV0YUtleSgpOworICAgICAgICBtX21vZGlmaWVycyA9IDA7CisgICAgICAgIGlmICh3ZWJFdmVu
dC5zaGlmdEtleSgpKQorICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gU2hpZnRLZXk7CisgICAg
ICAgIGlmICh3ZWJFdmVudC5jb250cm9sS2V5KCkpCisgICAgICAgICAgICBtX21vZGlmaWVycyB8
PSBDdHJsS2V5OworICAgICAgICBpZiAod2ViRXZlbnQuYWx0S2V5KCkpCisgICAgICAgICAgICBt
X21vZGlmaWVycyB8PSBBbHRLZXk7CisgICAgICAgIGlmICh3ZWJFdmVudC5hbHRLZXkoKSkKKyAg
ICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1ldGFLZXk7CisKICAgICAgICAgbV90aW1lc3RhbXAg
PSB3ZWJFdmVudC50aW1lc3RhbXAoKTsKIAogICAgICAgICAvLyBQbGF0Zm9ybVRvdWNoRXZlbnQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQppbmRleCBkY2EwMThh
NDJmMTliYTRlNGU5ZDMwZDMwMDAzYWEzMDE3MWEyOTljLi40MDNlYWJiM2VjNjk1YjJkYWZmMzI0
YmU2Y2Y4ZTg2YWQzMDE5MGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL21hYy9XS1ZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMv
V0tWaWV3Lm1tCkBAIC02Nyw3ICs2Nyw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ludFJlY3QuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2Nh
bGl6ZWRTdHJpbmdzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtTW91c2VFdmVudC5oPgor
I2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUV2ZW50RmFjdG9yeS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9QbGF0Zm9ybVNjcmVlbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZWdpb24uaD4KICNpbXBvcnQg
PFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNl
Lm1tCmluZGV4IDg1ODFkZmZjMmYyOTlhMzdmZGJkYjBmYWY5MjgwMDJmNzRkYWFkZWQuLjI5YzRh
YzNlZTBjMjAzNWE0YWFiMzkwMzk4ZjVkMzViMzA4YjNkNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJT
eXN0ZW1JbnRlcmZhY2UubW0KQEAgLTY1LDYgKzY1LDcgQEAgdm9pZCBJbml0V2ViQ29yZVN5c3Rl
bUludGVyZmFjZSh2b2lkKQogICAgICAgICBJTklUKEdldFByZWZlcnJlZEV4dGVuc2lvbkZvck1J
TUVUeXBlKTsKICAgICAgICAgSU5JVChHZXRVc2VyVG9CYXNlQ1RNKTsKICAgICAgICAgSU5JVChH
ZXRXaGVlbEV2ZW50RGVsdGFzKTsKKyAgICAgICAgSU5JVChHZXROU0V2ZW50S2V5Q2hhcik7CiAg
ICAgICAgIElOSVQoSGl0VGVzdE1lZGlhVUlQYXJ0KTsKICAgICAgICAgSU5JVChJbml0aWFsaXpl
TWF4aW11bUhUVFBDb25uZWN0aW9uQ291bnRQZXJIb3N0KTsKICAgICAgICAgSU5JVChNZWFzdXJl
TWVkaWFVSVBhcnQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120428</attachid>
            <date>2011-12-22 20:12:51 -0800</date>
            <delta_ts>2011-12-22 20:35:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75063-20111222201258.patch</filename>
            <type>text/plain</type>
            <size>105167</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzNjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDllMzE1YWQwMDkzODMz
MzliZTAwYWRiYjVjZWQ2MzdiOTQwZTExMi4uMjM5MjA1ZjY3YzVjZTM5N2NhY2M0ODcwMzZmNTdi
NzVmZTg0OGQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDExLTEyLTIxICBTYW0g
V2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RhcnQgZXh0cmFjdGluZyBwbGF0
Zm9ybSBzcGVjaWZpYyBiaXRzIG91dCBvZiBQbGF0Zm9ybUV2ZW50cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUwNjMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKwor
ICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmtleUV2ZW50KToKKyAgICAgICAgKiBwYWdlL21hYy9F
dmVudEhhbmRsZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OndoZWVs
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjprZXlFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmN1cnJlbnRQbGF0Zm9ybU1vdXNlRXZlbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtRXZlbnQ6OnNoaWZ0S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6
OmN0cmxLZXkpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6YWx0S2V5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6Om1ldGFLZXkpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1FdmVudDo6bW9kaWZpZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
RXZlbnQ6OlBsYXRmb3JtRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtR2VzdHVy
ZUV2ZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmtleUlkZW50
aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50OjptYWNDaGFy
Q29kZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmlzU3lzdGVt
S2V5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
S2V5RXZlbnRNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0
b3J5Lmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9y
eS5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpnbG9iYWxQb2ludCk6CisgICAgICAgIChX
ZWJDb3JlOjpnbG9iYWxQb2ludEZvckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnBvaW50Rm9y
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6bW91c2VCdXR0b25Gb3JFdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjptb3VzZUV2ZW50VHlwZUZvckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNs
aWNrQ291bnRGb3JFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjptb21lbnR1bVBoYXNlRm9yRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6cGhhc2VGb3JFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpnZXN0dXJlRXZlbnRUeXBlRm9yRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6dGV4dEZyb21F
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjp1bm1vZGlmaWVkVGV4dEZyb21FdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjprZXlJZGVudGlmaWVyRm9yS2V5RXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6aXNLZXlwYWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjp3aW5kb3dzS2V5Q29kZUZvcktl
eUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmlzS2V5VXBFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjptb2RpZmllcnNGb3JFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1vdXNl
RXZlbnRCdWlsZGVyOjpQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQbGF0Zm9ybU1vdXNlRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50QnVpbGRlcjo6UGxhdGZvcm1XaGVlbEV2
ZW50QnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3Jl
YXRlUGxhdGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9h
cmRFdmVudEJ1aWxkZXI6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudEJ1aWxkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1FdmVudEZhY3Rvcnk6OmNyZWF0ZVBsYXRmb3JtS2V5Ym9hcmRFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXI6OlBsYXRm
b3JtR2VzdHVyZUV2ZW50QnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50
RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1HZXN0dXJlRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9QbGF0Zm9ybU1vdXNlRXZlbnRNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dl
YkNvcmVTeXN0ZW1JbnRlcmZhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5
c3RlbUludGVyZmFjZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2hlZWxFdmVudE1hYy5t
bToKKwogMjAxMS0xMi0yMiAgQ2hyaXMgTWFycmluICA8Y21hcnJpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgQ3Jhc2ggYW5kIGluY29ycmVjdCBiZWhhdmlvciB3aGVuIHN3aXRjaGluZyBiZXR3ZWVu
IGhhcmR3YXJlIGFuZCBzb2Z0d2FyZSBDU1MgZmlsdGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDZj
N2JmMzBiNmY3ZTE4ODBmMGVmYTFkMjNhZWUzZWM4ZGNmMGNhMzYuLjA2MmQ1NzM0ZjcwNDhiZDZi
NjBlMTA0MTFhZGIxMWM4Mzk1OTdkNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBA
QAorMjAxMS0xMi0yMSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFN0
YXJ0IGV4dHJhY3RpbmcgcGxhdGZvcm0gc3BlY2lmaWMgYml0cyBvdXQgb2YgUGxhdGZvcm1FdmVu
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1MDYz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgIChJbml0V2ViQ29yZVN5
c3RlbUludGVyZmFjZSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAg
KiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBtZW51Rm9y
RXZlbnQ6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IGFjY2VwdHNGaXJzdE1vdXNlOl0pOgor
ICAgICAgICAoLVtXZWJIVE1MVmlldyBzaG91bGREZWxheVdpbmRvd09yZGVyaW5nRm9yRXZlbnQ6
XSk6CisgICAgICAgIChjdXJyZW50S2V5Ym9hcmRFdmVudCk6CisgICAgICAgICgtW1dlYkhUTUxW
aWV3IGZsYWdzQ2hhbmdlZDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBERlZpZXcubW06Cisg
ICAgICAgICgtW1dlYlBERlZpZXcgUERGVmlld1dpbGxDbGlja09uTGluazp3aXRoVVJMOl0pOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKwogMjAxMS0xMi0yMSAgVGltb3RoeSBIYXRj
aGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjogc3VwcHJl
c3MgaW5jcmVtZW50YWwgcmVuZGVyaW5nIGFuZCB1c2UgYXBwbGljYXRpb24gY2hyb21lIG1vZGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAxNGU5MTY2YmM2YTIyZmQ5ZjlhZTY4YTU5YTA4MzRlYTM0ODVlMTkwLi43
YjNiYWM5YjhkNGZhMGQxYzc4NDllYjY1OWU3ZGM5ZTE0OWNkYTMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjAgQEAKKzIwMTEtMTItMjEgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBTdGFydCBleHRyYWN0aW5nIHBsYXRmb3JtIHNwZWNpZmljIGJpdHMgb3V0IG9mIFBs
YXRmb3JtRXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NTA2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YktpdDJQbGF0Zm9ybU1vdXNlRXZlbnQ6OldlYktpdDJQbGF0Zm9ybU1vdXNlRXZlbnQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJLaXQyUGxhdGZvcm1XaGVlbEV2ZW50OjpXZWJLaXQyUGxhdGZvcm1X
aGVlbEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0MlBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDo6V2ViS2l0MlBsYXRmb3JtS2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYktp
dDJQbGF0Zm9ybUdlc3R1cmVFdmVudDo6V2ViS2l0MlBsYXRmb3JtR2VzdHVyZUV2ZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViS2l0MlBsYXRmb3JtVG91Y2hFdmVudDo6V2ViS2l0MlBsYXRmb3Jt
VG91Y2hFdmVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5t
bToKKyAgICAgICAgKEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKToKKwogMjAxMS0xMi0yMiAg
Q2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eu
b3JnPgogCiAgICAgICAgIFtRdF0gW1dLMl0gVXNlIEhhc2hNYXAgaW5zdGVhZCBvZiBWZWN0b3Ig
aW4gdGhlIGJ1aWx0aW4gYnVuZGxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGY1ZGMwMDBlMWU1
ZGJkN2NkNWU4ODhiZGRjZWU0MDVkNzhlZjU5M2YuLmRlM2U3N2YyNzVkOGY0MTY5MDZhOTM4YzQw
M2Q5NGViY2JkYzE0ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xNTcsNiArMTU3LDcgQEAg
X19aTjdXZWJDb3JlMTB0b0RvY3VtZW50RU4zSlNDN0pTVmFsdWVFCiBfX1pON1dlYkNvcmUxMUJp
dG1hcEltYWdlQzFFUDdDR0ltYWdlUE5TXzEzSW1hZ2VPYnNlcnZlckUKIF9fWk43V2ViQ29yZTEx
Q2FjaGVkRnJhbWUyM2NhY2hlZEZyYW1lUGxhdGZvcm1EYXRhRXYKIF9fWk43V2ViQ29yZTExQ2Fj
aGVkRnJhbWUyNnNldENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhRU4zV1RGMTBQYXNzT3duUHRySU5T
XzIzQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGFFRUUKK19fWk43V2ViQ29yZTExQ2FjaGVkSW1hZ2U1
aW1hZ2VFdgogX19aTjdXZWJDb3JlMTFGaWxlQ2hvb3NlcjEwY2hvb3NlRmlsZUVSS04zV1RGNlN0
cmluZ0UKIF9fWk43V2ViQ29yZTExRmlsZUNob29zZXIxMWNob29zZUZpbGVzRVJLTjNXVEY2VmVj
dG9ySU5TMV82U3RyaW5nRUxtMEVFRQogX19aTjdXZWJDb3JlMTFGaWxlQ2hvb3NlckQxRXYKQEAg
LTI5Miw4ICsyOTMsOCBAQCBfX1pON1dlYkNvcmUxMlNoYXJlZEJ1ZmZlckQxRXYKIF9fWk43V2Vi
Q29yZTEyU3BlbGxDaGVja2VyOGRpZENoZWNrRWlSS04zV1RGNlZlY3RvcklOU18xOFRleHRDaGVj
a2luZ1Jlc3VsdEVMbTBFRUUKIF9fWk43V2ViQ29yZTEyVGV4dEVuY29kaW5nQzFFUktOM1dURjZT
dHJpbmdFCiBfX1pON1dlYkNvcmUxMlRleHRJdGVyYXRvcjExcmFuZ2VMZW5ndGhFUEtOU181UmFu
Z2VFYgotX19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3IyOWdldExvY2F0aW9uQW5kTGVuZ3RoRnJv
bVJhbmdlRVBOU183RWxlbWVudEVQS05TXzVSYW5nZUVSbVM2XwogX19aTjdXZWJDb3JlMTJUZXh0
SXRlcmF0b3IyNnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoRVBOU183RWxlbWVudEVpaWIKK19f
Wk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yMjlnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZUVQ
TlNfN0VsZW1lbnRFUEtOU181UmFuZ2VFUm1TNl8KIF9fWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9y
N2FkdmFuY2VFdgogX19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3I4c3VicmFuZ2VFUE5TXzVSYW5n
ZUVpaQogX19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3JDMUVQS05TXzVSYW5nZUVOU18yMFRleHRJ
dGVyYXRvckJlaGF2aW9yRQpAQCAtMzY1LDggKzM2Niw4IEBAIF9fWk43V2ViQ29yZTE0U2NoZW1l
UmVnaXN0cnkyNXJlZ2lzdGVyVVJMU2NoZW1lQXNTZWN1cmVFUktOM1dURjZTdHJpbmdFCiBfX1pO
N1dlYkNvcmUxNFNjaGVtZVJlZ2lzdHJ5MzJyZWdpc3RlclVSTFNjaGVtZUFzRW1wdHlEb2N1bWVu
dEVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE0U2NoZW1lUmVnaXN0cnkzNHNob3VsZExv
YWRVUkxTY2hlbWVBc0VtcHR5RG9jdW1lbnRFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUx
NFNjaGVtZVJlZ2lzdHJ5NDBzZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1l
RWJSS04zV1RGNlN0cmluZ0UKLV9fWk43V2ViQ29yZTE0U2NoZW1lUmVnaXN0cnk2MnJlZ2lzdGVy
VVJMU2NoZW1lQXNBbGxvd2luZ0xvY2FsU3RvcmFnZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nRVJL
TjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTRTY2hlbWVSZWdpc3RyeTU4cmVnaXN0ZXJVUkxT
Y2hlbWVBc0FsbG93aW5nRGF0YWJhc2VBY2Nlc3NJblByaXZhdGVCcm93c2luZ0VSS04zV1RGNlN0
cmluZ0UKK19fWk43V2ViQ29yZTE0U2NoZW1lUmVnaXN0cnk2MnJlZ2lzdGVyVVJMU2NoZW1lQXNB
bGxvd2luZ0xvY2FsU3RvcmFnZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nRVJLTjNXVEY2U3RyaW5n
RQogX19aTjdXZWJDb3JlMTRTY3JvbGxhYmxlQXJlYTE1Y29udGVudHNSZXNpemVkRXYKIF9fWk43
V2ViQ29yZTE0U2Nyb2xsYWJsZUFyZWExNmhhbmRsZVdoZWVsRXZlbnRFUktOU18xOFBsYXRmb3Jt
V2hlZWxFdmVudEUKIF9fWk43V2ViQ29yZTE0U2Nyb2xsYWJsZUFyZWExN3dpbGxFbmRMaXZlUmVz
aXplRXYKQEAgLTM5MywxNSArMzk0LDE1IEBAIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlQb2xpY3ky
MmdlbmVyYXRlUmVmZXJyZXJIZWFkZXJFTlMwXzE0UmVmZXJyZXJQb2xpY3lFUktOU180CiBfX1pO
N1dlYkNvcmUxNFNlY3VyaXR5UG9saWN5MjdyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHNFdgog
X19aTjdXZWJDb3JlMTRTZWN1cml0eVBvbGljeTI5YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50
cnlFUktOU18xNFNlY3VyaXR5T3JpZ2luRVJLTjNXVEY2U3RyaW5nRVM3X2IKIF9fWk43V2ViQ29y
ZTE0U2VjdXJpdHlQb2xpY3kzMnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5RVJLTlNf
MTRTZWN1cml0eU9yaWdpbkVSS04zV1RGNlN0cmluZ0VTN19iCi1fX1pON1dlYkNvcmUxNFN0b3Jh
Z2VUcmFja2VyN29yaWdpbnNFUk4zV1RGNlZlY3RvcklOUzFfNlJlZlB0cklOU18xNFNlY3VyaXR5
T3JpZ2luRUVFTG0wRUVFCi1fX1pON1dlYkNvcmUxNFN0b3JhZ2VUcmFja2VyN3RyYWNrZXJFdgot
X19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjlzZXRDbGllbnRFUE5TXzIwU3RvcmFnZVRyYWNr
ZXJDbGllbnRFCiBfX1pON1dlYkNvcmUxNFN0b3JhZ2VUcmFja2VyMTJkZWxldGVPcmlnaW5FUE5T
XzE0U2VjdXJpdHlPcmlnaW5FCiBfX1pON1dlYkNvcmUxNFN0b3JhZ2VUcmFja2VyMTZkZWxldGVB
bGxPcmlnaW5zRXYKIF9fWk43V2ViQ29yZTE0U3RvcmFnZVRyYWNrZXIxNnN5bmNMb2NhbFN0b3Jh
Z2VFdgogX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjE3aW5pdGlhbGl6ZVRyYWNrZXJFUktO
M1dURjZTdHJpbmdFUE5TXzIwU3RvcmFnZVRyYWNrZXJDbGllbnRFCiBfX1pON1dlYkNvcmUxNFN0
b3JhZ2VUcmFja2VyMThkaXNrVXNhZ2VGb3JPcmlnaW5FUE5TXzE0U2VjdXJpdHlPcmlnaW5FCiBf
X1pON1dlYkNvcmUxNFN0b3JhZ2VUcmFja2VyMzJzeW5jRmlsZVN5c3RlbUFuZFRyYWNrZXJEYXRh
YmFzZUV2CitfX1pON1dlYkNvcmUxNFN0b3JhZ2VUcmFja2VyN29yaWdpbnNFUk4zV1RGNlZlY3Rv
cklOUzFfNlJlZlB0cklOU18xNFNlY3VyaXR5T3JpZ2luRUVFTG0wRUVFCitfX1pON1dlYkNvcmUx
NFN0b3JhZ2VUcmFja2VyN3RyYWNrZXJFdgorX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjlz
ZXRDbGllbnRFUE5TXzIwU3RvcmFnZVRyYWNrZXJDbGllbnRFCiBfX1pON1dlYkNvcmUxNGVuZE9m
UGFyYWdyYXBoRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FTlNfMjdFZGl0aW5nQm91bmRhcnlDcm9z
c2luZ1J1bGVFCiBfX1pON1dlYkNvcmUxNUFmZmluZVRyYW5zZm9ybTVmbGlwWUV2CiBfX1pON1dl
YkNvcmUxNUFmZmluZVRyYW5zZm9ybTVzY2FsZUVkCkBAIC00MzMsOCArNDM0LDggQEAgX19aTjdX
ZWJDb3JlMTVHcmFwaGljc0NvbnRleHQxMWNsZWFyU2hhZG93RXYKIF9fWk43V2ViQ29yZTE1R3Jh
cGhpY3NDb250ZXh0MTJzZXRGaWxsQ29sb3JFUktOU181Q29sb3JFTlNfMTBDb2xvclNwYWNlRQog
X19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQxNXNldEZpbGxHcmFkaWVudEVOM1dURjEwUGFz
c1JlZlB0cklOU184R3JhZGllbnRFRUUKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MThz
ZXRTaG91bGRBbnRpYWxpYXNFYgotX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQyMHNldFNo
b3VsZFNtb290aEZvbnRzRWIKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MjBlbmRUcmFu
c3BhcmVuY3lMYXllckV2CitfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDIwc2V0U2hvdWxk
U21vb3RoRm9udHNFYgogX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQyMXNldENvbXBvc2l0
ZU9wZXJhdGlvbkVOU18xN0NvbXBvc2l0ZU9wZXJhdG9yRQogX19aTjdXZWJDb3JlMTVHcmFwaGlj
c0NvbnRleHQyMmFwcGx5RGV2aWNlU2NhbGVGYWN0b3JFZgogX19aTjdXZWJDb3JlMTVHcmFwaGlj
c0NvbnRleHQyMmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJFZgpAQCAtNTM5LDcgKzU0MCw2IEBAIF9f
Wk43V2ViQ29yZTE3UmVndWxhckV4cHJlc3Npb25DMUVSS04zV1RGNlN0cmluZ0VOUzFfMTlUZXh0
Q2FzZVNlbnNpdGl2aXR5RQogX19aTjdXZWJDb3JlMTdSZWd1bGFyRXhwcmVzc2lvbkQxRXYKIF9f
Wk43V2ViQ29yZTE3Y2FjaGVET01TdHJ1Y3R1cmVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE4z
SlNDOVN0cnVjdHVyZUVQS05TMl85Q2xhc3NJbmZvRQogX19aTjdXZWJDb3JlMTdvcGVuVGVtcG9y
YXJ5RmlsZUVSS04zV1RGNlN0cmluZ0VSaQotX19aTjdXZWJDb3JlMThQbGF0Zm9ybU1vdXNlRXZl
bnRDMUVQN05TRXZlbnRQNk5TVmlldwogX19aTjdXZWJDb3JlMThQbGF0Zm9ybVN0cmF0ZWdpZXMy
NmNyZWF0ZUxvY2FsaXphdGlvblN0cmF0ZWd5RXYKIF9fWk43V2ViQ29yZTE4U2VhcmNoUG9wdXBN
ZW51TWFjQzFFUE5TXzE1UG9wdXBNZW51Q2xpZW50RQogX19aTjdXZWJDb3JlMThpc1N0YXJ0T2ZQ
YXJhZ3JhcGhFUktOU18xNVZpc2libGVQb3NpdGlvbkVOU18yN0VkaXRpbmdCb3VuZGFyeUNyb3Nz
aW5nUnVsZUUKQEAgLTU4OCw2ICs1ODgsOCBAQCBfX1pON1dlYkNvcmUyMERpc3BsYXlTbGVlcERp
c2FibGVyQzFFUEtjCiBfX1pON1dlYkNvcmUyMERpc3BsYXlTbGVlcERpc2FibGVyRDFFdgogX19a
TjdXZWJDb3JlMjBOb2RlUmVuZGVyaW5nQ29udGV4dEMxRVBOU180Tm9kZUUKIF9fWk43V2ViQ29y
ZTIwTm9kZVJlbmRlcmluZ0NvbnRleHREMUV2CitfX1pON1dlYkNvcmUyMFBsYXRmb3JtRXZlbnRG
YWN0b3J5MjRjcmVhdGVQbGF0Zm9ybU1vdXNlRXZlbnRFUDdOU0V2ZW50UDZOU1ZpZXcKK19fWk43
V2ViQ29yZTIwUGxhdGZvcm1FdmVudEZhY3RvcnkyN2NyZWF0ZVBsYXRmb3JtS2V5Ym9hcmRFdmVu
dEVQN05TRXZlbnQKIF9fWk43V2ViQ29yZTIwUmVuZGVyRW1iZWRkZWRPYmplY3QzMHNldFNob3dz
Q3Jhc2hlZFBsdWdpbkluZGljYXRvckV2CiBfX1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VC
YXNlMTFzZXRNaW1lVHlwZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTIwUmVzb3VyY2VS
ZXNwb25zZUJhc2UxN3NldEhUVFBTdGF0dXNDb2RlRWkKQEAgLTYwNSw3ICs2MDcsNiBAQCBfX1pO
N1dlYkNvcmUyMG1ha2VSR0JBMzJGcm9tRmxvYXRzRWZmZmYKIF9fWk43V2ViQ29yZTIwcHJvdG9j
b2xJc0phdmFTY3JpcHRFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyMUJhY2tGb3J3YXJk
Q29udHJvbGxlcjExaXRlbUF0SW5kZXhFaQogX19aTjdXZWJDb3JlMjFNZW1vcnlQcmVzc3VyZUhh
bmRsZXI3aW5zdGFsbEV2Ci1fX1pON1dlYkNvcmUyMVBsYXRmb3JtS2V5Ym9hcmRFdmVudEMxRVA3
TlNFdmVudAogX19aTjdXZWJDb3JlMjFQbGF0Zm9ybUtleWJvYXJkRXZlbnQyNGRpc2FtYmlndWF0
ZUtleURvd25FdmVudEVOU18xM1BsYXRmb3JtRXZlbnQ0VHlwZUViCiBfX1pON1dlYkNvcmUyMVJl
c291cmNlTG9hZFNjaGVkdWxlcjIwc2VydmVQZW5kaW5nUmVxdWVzdHNFTlNfMjBSZXNvdXJjZUxv
YWRQcmlvcml0eUUKIF9fWk43V2ViQ29yZTIxUmVzb3VyY2VMb2FkU2NoZWR1bGVyMjRzY2hlZHVs
ZVBsdWdpblN0cmVhbUxvYWRFUE5TXzVGcmFtZUVQTlNfMzJOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlckNsaWVudEVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RQpAQCAtNjYxLDggKzY2Miw2IEBAIF9f
Wk43V2ViQ29yZTI1UGx1Z2luTWFpblRocmVhZFNjaGVkdWxlcjE2dW5yZWdpc3RlclBsdWdpbkVQ
NF9OUFAKIF9fWk43V2ViQ29yZTI1UGx1Z2luTWFpblRocmVhZFNjaGVkdWxlcjlzY2hlZHVsZXJF
dgogX19aTjdXZWJDb3JlMjVhZGRMYW5ndWFnZUNoYW5nZU9ic2VydmVyRVB2UEZ2UzBfRQogX19a
TjdXZWJDb3JlMjVjb21wdXRlVmlld3BvcnRBdHRyaWJ1dGVzRU5TXzE3Vmlld3BvcnRBcmd1bWVu
dHNFaWlpaU5TXzdJbnRTaXplRQotX19aTjdXZWJDb3JlNTByZXN0cmljdFNjYWxlRmFjdG9yVG9J
bml0aWFsU2NhbGVJZk5vdFVzZXJTY2FsYWJsZUVSTlNfMThWaWV3cG9ydEF0dHJpYnV0ZXNFCi1f
X1pON1dlYkNvcmU0MHJlc3RyaWN0TWluaW11bVNjYWxlRmFjdG9yVG9WaWV3cG9ydFNpemVFUk5T
XzE4Vmlld3BvcnRBdHRyaWJ1dGVzRU5TXzdJbnRTaXplRQogX19aTjdXZWJDb3JlMjVjb250ZXh0
TWVudUl0ZW1UYWdPdXRsaW5lRXYKIF9fWk43V2ViQ29yZTI2Q1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb25DMUV2CiBfX1pON1dlYkNvcmUyNlVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yMjdwcm9j
ZXNzaW5nVXNlclR5cGluZ0dlc3R1cmVFdgpAQCAtNzIwLDYgKzcxOSw3IEBAIF9fWk43V2ViQ29y
ZTM3Y29udGV4dE1lbnVJdGVtVGFnVHJhbnNmb3JtYXRpb25zTWVudUV2CiBfX1pON1dlYkNvcmUz
OGNvbnRleHRNZW51SXRlbVRhZ1dyaXRpbmdEaXJlY3Rpb25NZW51RXYKIF9fWk43V2ViQ29yZTNt
YWNFUktOU18xMENyZWRlbnRpYWxFCiBfX1pON1dlYkNvcmUzbWFjRVJLTlNfMjNBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZUUKK19fWk43V2ViQ29yZTQwcmVzdHJpY3RNaW5pbXVtU2NhbGVGYWN0b3JU
b1ZpZXdwb3J0U2l6ZUVSTlNfMThWaWV3cG9ydEF0dHJpYnV0ZXNFTlNfN0ludFNpemVFCiBfX1pO
N1dlYkNvcmU0MmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrR3JhbW1hcldpdGhTcGVsbGluZ0V2CiBf
X1pON1dlYkNvcmU0MmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGluZ0V2
CiBfX1pON1dlYkNvcmU0NmNvbnRleHRNZW51SXRlbVRhZ0NvcnJlY3RTcGVsbGluZ0F1dG9tYXRp
Y2FsbHlFdgpAQCAtNzg2LDYgKzc4Niw3IEBAIF9fWk43V2ViQ29yZTR0b0pTRVBOM0pTQzlFeGVj
U3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzEwQ2xpZW50UmVjdEUKIF9fWk43V2Vi
Q29yZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzE5
Q1NTU3R5bGVEZWNsYXJhdGlvbkUKIF9fWk43V2ViQ29yZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVF
UE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzVSYW5nZUUKIF9fWk43V2ViQ29yZTR0b0pTRVBO
M0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzhOb2RlTGlzdEUKK19f
Wk43V2ViQ29yZTUwcmVzdHJpY3RTY2FsZUZhY3RvclRvSW5pdGlhbFNjYWxlSWZOb3RVc2VyU2Nh
bGFibGVFUk5TXzE4Vmlld3BvcnRBdHRyaWJ1dGVzRQogX19aTjdXZWJDb3JlNUNvbG9yMTF0cmFu
c3BhcmVudEUKIF9fWk43V2ViQ29yZTVDb2xvcjV3aGl0ZUUKIF9fWk43V2ViQ29yZTVGcmFtZTEw
Y3JlYXRlVmlld0VSS05TXzdJbnRTaXplRVJLTlNfNUNvbG9yRWJTM19iTlNfMTNTY3JvbGxiYXJN
b2RlRWJTN19iCkBAIC04MzcsOSArODM4LDkgQEAgX19aTjdXZWJDb3JlNkVkaXRvcjIxYXBwbHlT
dHlsZVRvU2VsZWN0aW9uRVBOU18xOUNTU1N0eWxlRGVjbGFyYXRpb25FTlNfMTBFZGl0QWMKIF9f
Wk43V2ViQ29yZTZFZGl0b3IyMWlzU2VsZWN0aW9uTWlzc3BlbGxlZEV2CiBfX1pON1dlYkNvcmU2
RWRpdG9yMjNzZXRCYXNlV3JpdGluZ0RpcmVjdGlvbkUxNldyaXRpbmdEaXJlY3Rpb24KIF9fWk43
V2ViQ29yZTZFZGl0b3IyNGFkdmFuY2VUb05leHRNaXNzcGVsbGluZ0ViCi1fX1pON1dlYkNvcmU2
RWRpdG9yMjRyZXBsYWNlU2VsZWN0aW9uV2l0aFRleHRFUktOM1dURjZTdHJpbmdFYmIKIF9fWk43
V2ViQ29yZTZFZGl0b3IyNGNvbXB1dGVBbmRTZXRUeXBpbmdTdHlsZUVQTlNfMTlDU1NTdHlsZURl
Y2xhcmF0aW9uRU5TXzEwRWRpdEFjdGlvbkUKIF9fWk43V2ViQ29yZTZFZGl0b3IyNGlzU2VsZWN0
aW9uVW5ncmFtbWF0aWNhbEV2CitfX1pON1dlYkNvcmU2RWRpdG9yMjRyZXBsYWNlU2VsZWN0aW9u
V2l0aFRleHRFUktOM1dURjZTdHJpbmdFYmIKIF9fWk43V2ViQ29yZTZFZGl0b3IyNmRlY3JlYXNl
U2VsZWN0aW9uTGlzdExldmVsRXYKIF9fWk43V2ViQ29yZTZFZGl0b3IyNmluY3JlYXNlU2VsZWN0
aW9uTGlzdExldmVsRXYKIF9fWk43V2ViQ29yZTZFZGl0b3IyNndyaXRlU2VsZWN0aW9uVG9QYXN0
ZWJvYXJkRVJLTjNXVEY2U3RyaW5nRVJLTlMxXzZWZWN0b3JJUzJfTG0wRUVFCkBAIC05MjcsNiAr
OTI4LDcgQEAgX19aTjdXZWJDb3JlOEludFBvaW50QzFFUks4X05TUG9pbnQKIF9fWk43V2ViQ29y
ZThQb3NpdGlvbkMxRU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2RlRUVFaU5TMF8xMEFuY2hvclR5
cGVFCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxNHNldEphdmFFbmFibGVkRWIKIF9fWk43V2ViQ29y
ZThTZXR0aW5nczE1c2V0V2ViR0xFbmFibGVkRWIKK19fWk43V2ViQ29yZThTZXR0aW5nczE2c2V0
U2NyaXB0RW5hYmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxNnNldFVzZXNQYWdlQ2FjaGVF
YgogX19aTjdXZWJDb3JlOFNldHRpbmdzMTdzZXRQbHVnaW5zRW5hYmxlZEViCiBfX1pON1dlYkNv
cmU4U2V0dGluZ3MxOHNldERPTVBhc3RlQWxsb3dlZEViCkBAIC05MzksNyArOTQxLDYgQEAgX19a
TjdXZWJDb3JlOFNldHRpbmdzMTltaW5ET01UaW1lckludGVydmFsRXYKIF9fWk43V2ViQ29yZThT
ZXR0aW5nczE5c2V0U2hvd0RlYnVnQm9yZGVyc0ViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyMHNl
dEN1cnNpdmVGb250RmFtaWx5RVJLTjNXVEYxMkF0b21pY1N0cmluZ0UxMVVTY3JpcHRDb2RlCiBf
X1pON1dlYkNvcmU4U2V0dGluZ3MyMHNldEZhbnRhc3lGb250RmFtaWx5RVJLTjNXVEYxMkF0b21p
Y1N0cmluZ0UxMVVTY3JpcHRDb2RlCi1fX1pON1dlYkNvcmU4U2V0dGluZ3MxNnNldFNjcmlwdEVu
YWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjBzZXRYU1NBdWRpdG9yRW5hYmxlZEViCiBf
X1pON1dlYkNvcmU4U2V0dGluZ3MyMXNldFNob3dSZXBhaW50Q291bnRlckViCiBfX1pON1dlYkNv
cmU4U2V0dGluZ3MyMXNldFN0YW5kYXJkRm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdF
MTFVU2NyaXB0Q29kZQpAQCAtMTAyNiw3ICsxMDI3LDYgQEAgX19aTjdXZWJDb3JlOUZyYW1lVmll
dzE3c2V0U2Nyb2xsUG9zaXRpb25FUktOU184SW50UG9pbnRFCiBfX1pON1dlYkNvcmU5RnJhbWVW
aWV3MTdzZXRUcmFja3NSZXBhaW50c0ViCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MTh1cGRhdGVD
b250cm9sVGludHNFdgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzE5c2Nyb2xsRWxlbWVudFRvUmVj
dEVQTlNfN0VsZW1lbnRFUktOU183SW50UmVjdEUKLV9fWk43V2ViQ29yZTlGcmFtZVZpZXc0M3Nl
dFNob3VsZExheW91dEZpeGVkRWxlbWVudHNSZWxhdGl2ZVRvRnJhbWVFYgogX19aTjdXZWJDb3Jl
OUZyYW1lVmlldzIwZW50ZXJDb21wb3NpdGluZ01vZGVFdgogX19aTjdXZWJDb3JlOUZyYW1lVmll
dzIxZmx1c2hEZWZlcnJlZFJlcGFpbnRzRXYKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMnNldEJh
c2VCYWNrZ3JvdW5kQ29sb3JFUktOU181Q29sb3JFCkBAIC0xMDM3LDYgKzEwMzcsNyBAQCBfX1pO
N1dlYkNvcmU5RnJhbWVWaWV3MjlzZXRTaG91bGRVcGRhdGVXaGlsZU9mZnNjcmVlbkViCiBfX1pO
N1dlYkNvcmU5RnJhbWVWaWV3Mzd1cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZl
RXYKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXczOHNjcm9sbFBvc2l0aW9uQ2hhbmdlZFZpYVBsYXRm
b3JtV2lkZ2V0RXYKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXczOHN5bmNDb21wb3NpdGluZ1N0YXRl
SW5jbHVkaW5nU3ViZnJhbWVzRXYKK19fWk43V2ViQ29yZTlGcmFtZVZpZXc0M3NldFNob3VsZExh
eW91dEZpeGVkRWxlbWVudHNSZWxhdGl2ZVRvRnJhbWVFYgogX19aTjdXZWJDb3JlOUZyYW1lVmll
dzZjcmVhdGVFUE5TXzVGcmFtZUUKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXc2Y3JlYXRlRVBOU181
RnJhbWVFUktOU183SW50U2l6ZUUKIF9fWk43V2ViQ29yZTlIVE1MTmFtZXMxMGxpc3RpbmdUYWdF
CkBAIC0xMTMzLDEzICsxMTM0LDEyIEBAIF9fWk5LN1dlYkNvcmUxMFNjcm9sbFZpZXcxNHNjcm9s
bGJhck1vZGVzRVJOU18xM1Njcm9sbGJhck1vZGVFUzJfCiBfX1pOSzdXZWJDb3JlMTBTY3JvbGxW
aWV3MTR1c2VGaXhlZExheW91dEV2CiBfX1pOSzdXZWJDb3JlMTBTY3JvbGxWaWV3MTVmaXhlZExh
eW91dFNpemVFdgogX19aTks3V2ViQ29yZTEwU2Nyb2xsVmlldzE2Y29udGVudHNUb1dpbmRvd0VS
S05TXzdJbnRSZWN0RQotX19aTks3V2ViQ29yZTEwU2Nyb2xsVmlldzE2d2luZG93VG9Db250ZW50
c0VSS05TXzdJbnRSZWN0RQogX19aTks3V2ViQ29yZTEwU2Nyb2xsVmlldzE2Y29udGVudHNUb1dp
bmRvd0VSS05TXzhJbnRQb2ludEUKK19fWk5LN1dlYkNvcmUxMFNjcm9sbFZpZXcxNndpbmRvd1Rv
Q29udGVudHNFUktOU183SW50UmVjdEUKIF9fWk5LN1dlYkNvcmUxMFNjcm9sbFZpZXcxNndpbmRv
d1RvQ29udGVudHNFUktOU184SW50UG9pbnRFCi1fX1pOSzdXZWJDb3JlMTBTY3JvbGxWaWV3MTh2
aXNpYmxlQ29udGVudFJlY3RFYgogX19aTks3V2ViQ29yZTEwU2Nyb2xsVmlldzE4Y29udGVudHNU
b1Jvb3RWaWV3RVJLTlNfN0ludFJlY3RFCiBfX1pOSzdXZWJDb3JlMTBTY3JvbGxWaWV3MThjb250
ZW50c1RvUm9vdFZpZXdFUktOU184SW50UG9pbnRFCi1fX1pON1dlYkNvcmUxMUNhY2hlZEltYWdl
NWltYWdlRXYKK19fWk5LN1dlYkNvcmUxMFNjcm9sbFZpZXcxOHZpc2libGVDb250ZW50UmVjdEVi
CiBfX1pOSzdXZWJDb3JlMTFGcmFtZUxvYWRlcjEwaXNDb21wbGV0ZUV2CiBfX1pOSzdXZWJDb3Jl
MTFGcmFtZUxvYWRlcjE0Y2FuY2VsbGVkRXJyb3JFUktOU18xNVJlc291cmNlUmVxdWVzdEUKIF9f
Wk5LN1dlYkNvcmUxMUZyYW1lTG9hZGVyMTRmcmFtZUhhc0xvYWRlZEV2CkBAIC0xMTc0LDExICsx
MTc0LDExIEBAIF9fWk5LN1dlYkNvcmUxMVNjcmlwdFZhbHVlOWdldFN0cmluZ0VQTjNKU0M5RXhl
Y1N0YXRlRVJOM1dURjZTdHJpbmdFCiBfX1pOSzdXZWJDb3JlMTJJY29uRGF0YWJhc2UxMmRhdGFi
YXNlUGF0aEV2CiBfX1pOSzdXZWJDb3JlMTJJY29uRGF0YWJhc2UyNHNob3VsZFN0b3BUaHJlYWRB
Y3Rpdml0eUV2CiBfX1pOSzdXZWJDb3JlMTJJY29uRGF0YWJhc2U5aXNFbmFibGVkRXYKLV9fWk5L
N1dlYkNvcmUxMlJlbmRlck9iamVjdDIzYWJzb2x1dGVCb3VuZGluZ0JveFJlY3RFYgorX19aTks3
V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTNzdHlsZUluUmVnaW9uRXYKIF9fWk5LN1dlYkNvcmUxMlJl
bmRlck9iamVjdDE0ZW5jbG9zaW5nTGF5ZXJFdgogX19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0
MTVsb2NhbFRvQWJzb2x1dGVFUktOU18xMEZsb2F0UG9pbnRFYmIKK19fWk5LN1dlYkNvcmUxMlJl
bmRlck9iamVjdDIzYWJzb2x1dGVCb3VuZGluZ0JveFJlY3RFYgogX19aTks3V2ViQ29yZTEyUmVu
ZGVyT2JqZWN0N2NoaWxkQXRFagotX19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTNzdHlsZUlu
UmVnaW9uRXYKIF9fWk5LN1dlYkNvcmUxMlJlbmRlcldpZGdldDE0d2luZG93Q2xpcFJlY3RFdgog
X19aTks3V2ViQ29yZTEyU2hhcmVkQnVmZmVyMTFnZXRTb21lRGF0YUVSUEtjagogX19aTks3V2Vi
Q29yZTEyU2hhcmVkQnVmZmVyNGRhdGFFdgpAQCAtMTQ5MCw2ICsxNDkwLDcgQEAgX3drR2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeQogX3drR2V0SFRUUFBpcGVsaW5pbmdQcmlvcml0eQogX3drR2V0
SHlwaGVuYXRpb25Mb2NhdGlvbkJlZm9yZUluZGV4CiBfd2tHZXRNSU1FVHlwZUZvckV4dGVuc2lv
bgorX3drR2V0TlNFdmVudEtleUNoYXIKIF93a0dldE5TVVJMUmVzcG9uc2VDYWxjdWxhdGVkRXhw
aXJhdGlvbgogX3drR2V0TlNVUkxSZXNwb25zZUxhc3RNb2RpZmllZERhdGUKIF93a0dldE5TVVJM
UmVzcG9uc2VNdXN0UmV2YWxpZGF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDhiODRlYTI2YmY3YjI0ZTM0OTc4YjAwNzBjYzJh
NTE3ZTY1ZDI1Y2IuLjExOTgxMzkwNDQwMmEwYmY2ZDVlMDU2MWZhODk1NGViMmZkZjQ0MWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTUyNTEsNiArNTI1MSw4IEBACiAJCUJDQThDODFGMTFFM0QzNjkwMDgxMkZCNyAvKiBCYWNr
Rm9yd2FyZENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkNBOEM4MUQxMUUzRDM2OTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkQ29udHJv
bGxlci5jcHAgKi87IH07CiAJCUJDQThDQTVGMTFFNEU2RDEwMDgxMkZCNyAvKiBCYWNrRm9yd2Fy
ZExpc3RJbXBsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDQThDQTVEMTFFNEU2RDEwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZExpc3RJbXBsLmNwcCAq
LzsgfTsKIAkJQkNBOENBNjAxMUU0RTZEMTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkTGlzdEltcGwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQThDQTVF
MTFFNEU2RDEwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZExpc3RJbXBsLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkNBQTQ4NkYxNEEwNTI1MzAwODhG
QUM0IC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBQTQ4NkQxNEEwNTI1MzAwODhGQUM0IC8qIFBsYXRmb3Jt
RXZlbnRGYWN0b3J5Lm1tICovOyB9OworCQlCQ0FBNDg3MDE0QTA1MjUzMDA4OEZBQzQgLyogUGxh
dGZvcm1FdmVudEZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDQUE0ODZFMTRBMDUyNTMwMDg4RkFDNCAvKiBQbGF0Zm9ybUV2ZW50RmFjdG9y
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJD
QUE5MEMzMEE3RUJBNjAwMDhCMTIyOSAvKiBTY3JvbGxiYXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBQTkwQzIwQTdFQkE2MDAwOEIxMjI5IC8q
IFNjcm9sbGJhci5jcHAgKi87IH07CiAJCUJDQUI0MTgxMTNFMzU2RTgwMEQ4QUFGMyAvKiBSZWdp
b24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNB
QjQxN0YxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5jcHAgKi87IH07CiAJCUJDQUI0MTgyMTNF
MzU2RTgwMEQ4QUFGMyAvKiBSZWdpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDQUI0MTgwMTNFMzU2RTgwMEQ4QUFGMyAvKiBSZWdpb24uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTI2MjIsNiAr
MTI2MjQsOCBAQAogCQlCQ0E4QzgxRDExRTNEMzY5MDA4MTJGQjcgLyogQmFja0ZvcndhcmRDb250
cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhY2tGb3J3
YXJkQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQThDQTVE
MTFFNEU2RDEwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZExpc3RJbXBsLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhY2tGb3J3YXJkTGlzdEltcGwuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0E4Q0E1RTExRTRFNkQxMDA4MTJGQjcgLyogQmFja0Zv
cndhcmRMaXN0SW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCYWNrRm9y
d2FyZExpc3RJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDQUE0ODZEMTRB
MDUyNTMwMDg4RkFDNCAvKiBQbGF0Zm9ybUV2ZW50RmFjdG9yeS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsYXRmb3JtRXZlbnRGYWN0b3J5Lm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlCQ0FBNDg2RTE0QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZv
cm1FdmVudEZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZv
cm1FdmVudEZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNBQTkwQzIw
QTdFQkE2MDAwOEIxMjI5IC8qIFNjcm9sbGJhci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2Nyb2xsYmFyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkNBQjQxN0YxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQ0FCNDE4MDEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTU2NjMsNiArMTU2NjcsOCBAQAogCQkJCTkzODBGNDc3MDlBMTFBQ0MwMDFGREIzNCAv
KiBXaWRnZXRNYWMubW0gKi8sCiAJCQkJQ0RFQTc2MkUxNDYwODRERTAwOEIzMUYxIC8qIFBsYXRm
b3JtQ2xvY2tDQS5jcHAgKi8sCiAJCQkJQ0RFQTc2MkYxNDYwODRFRTAwOEIzMUYxIC8qIFBsYXRm
b3JtQ2xvY2tDQS5oICovLAorCQkJCUJDQUE0ODZEMTRBMDUyNTMwMDg4RkFDNCAvKiBQbGF0Zm9y
bUV2ZW50RmFjdG9yeS5tbSAqLywKKwkJCQlCQ0FBNDg2RTE0QTA1MjUzMDA4OEZBQzQgLyogUGxh
dGZvcm1FdmVudEZhY3RvcnkuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWFjOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI0OTY1LDkgKzI0OTcxLDkgQEAKIAkJCQkxQTJGOUQ3QTE0
OTY4Qzc0MDA2NUFDNjMgLyogU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBQTcxNjBCMTQ5QkM0REIwMDE2RUMxOSAvKiBUaWxlQ2FjaGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUMzN0NERUJEMTQ5RUYyMDMwMDQyMDkwRCAvKiBDb2xvckNob29zZXJDbGllbnQuaCBp
biBIZWFkZXJzICovLAotCQkJCTFBQzY5MjZBMTRBMTI1MzIwMEJEODVGMSAvKiBTY3JvbGxhYmxl
QXJlYUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkRCMTcwMDYxNEEyQkFCMjAwQTJCNUQ5
IC8qIE11bHRpQ2hhbm5lbFJlc2FtcGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQwMEQ3QTUx
NEEzRjYxOTAwNzM0MDExIC8qIFNpbmNSZXNhbXBsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUJD
QUE0ODcwMTRBMDUyNTMwMDg4RkFDNCAvKiBQbGF0Zm9ybUV2ZW50RmFjdG9yeS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkBAIC0yNzg3NCw2ICsyNzg4MCw3IEBACiAJCQkJNTJGNTJFMTExNEEwMTM0RjAwQUND
Mzk3IC8qIE5TU2Nyb2xsZXJJbXBEZXRhaWxzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRkRCMTcw
MDUxNEEyQkFCMjAwQTJCNUQ5IC8qIE11bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlGRDAwRDdBNDE0QTNGNjE5MDA3MzQwMTEgLyogU2luY1Jlc2FtcGxlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlCQ0FBNDg2RjE0QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZvcm1F
dmVudEZhY3RvcnkubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2
ZW50SGFuZGxlck1hYy5tbQppbmRleCA4MmFhNzllMDM0Mzc5ZTEyOGNmNGI2NzhkYzc1MmRkM2Iz
YWMxYmNlLi41ZjkxMTMyMTg4NDM0YTI2NzRlMmQzNGU4NWY3OGRmNTI0ZTMwOGJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCkBAIC00MSw4ICs0MSw3IEBA
CiAjaW5jbHVkZSAiTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5oIgogI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtS2V5
Ym9hcmRFdmVudC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgorI2luY2x1ZGUg
IlBsYXRmb3JtRXZlbnRGYWN0b3J5LmgiCiAjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCiAjaW5j
bHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyLmgi
CkBAIC0xMDQsOSArMTAzLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OndoZWVsRXZlbnQoTlNFdmVu
dCAqZXZlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEN1cnJlbnRFdmVudFNjb3Bl
IHNjb3BlKGV2ZW50KTsKLQotICAgIFBsYXRmb3JtV2hlZWxFdmVudCB3aGVlbEV2ZW50KGV2ZW50
LCBwYWdlLT5jaHJvbWUoKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkpOwotICAgIHJldHVybiBoYW5k
bGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQpOworICAgIHJldHVybiBoYW5kbGVXaGVlbEV2ZW50KFBs
YXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQbGF0Zm9ybVdoZWVsRXZlbnQoZXZlbnQsIHBhZ2Ut
PmNocm9tZSgpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKSkpOwogfQogCiBib29sIEV2ZW50SGFuZGxl
cjo6a2V5RXZlbnQoTlNFdmVudCAqZXZlbnQpCkBAIC0xMTYsNyArMTEzLDcgQEAgYm9vbCBFdmVu
dEhhbmRsZXI6OmtleUV2ZW50KE5TRXZlbnQgKmV2ZW50KQogICAgIEFTU0VSVChbZXZlbnQgdHlw
ZV0gPT0gTlNLZXlEb3duIHx8IFtldmVudCB0eXBlXSA9PSBOU0tleVVwKTsKIAogICAgIEN1cnJl
bnRFdmVudFNjb3BlIHNjb3BlKGV2ZW50KTsKLSAgICByZXR1cm4ga2V5RXZlbnQoUGxhdGZvcm1L
ZXlib2FyZEV2ZW50KGV2ZW50KSk7CisgICAgcmV0dXJuIGtleUV2ZW50KFBsYXRmb3JtRXZlbnRG
YWN0b3J5OjpjcmVhdGVQbGF0Zm9ybUtleWJvYXJkRXZlbnQoZXZlbnQpKTsKIAogICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKQEAgLTY0Niw3ICs2NDMsNyBAQCBQbGF0Zm9ybU1vdXNl
RXZlbnQgRXZlbnRIYW5kbGVyOjpjdXJyZW50UGxhdGZvcm1Nb3VzZUV2ZW50KCkgY29uc3QKICAg
ICBOU1ZpZXcgKndpbmRvd1ZpZXcgPSBuaWw7CiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1l
LT5wYWdlKCkpCiAgICAgICAgIHdpbmRvd1ZpZXcgPSBwYWdlLT5jaHJvbWUoKS0+cGxhdGZvcm1Q
YWdlQ2xpZW50KCk7Ci0gICAgcmV0dXJuIFBsYXRmb3JtTW91c2VFdmVudChjdXJyZW50TlNFdmVu
dCgpLCB3aW5kb3dWaWV3KTsKKyAgICByZXR1cm4gUGxhdGZvcm1FdmVudEZhY3Rvcnk6OmNyZWF0
ZVBsYXRmb3JtTW91c2VFdmVudChjdXJyZW50TlNFdmVudCgpLCB3aW5kb3dWaWV3KTsKIH0KIAog
Ym9vbCBFdmVudEhhbmRsZXI6OmV2ZW50QWN0aXZhdGVkVmlldyhjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmIGV2ZW50KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1FdmVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1FdmVudC5o
CmluZGV4IGEzMmQyODBiMmE2MzIxMWM4NGU0NzZjYjhkMTg4YTAxOTRkODAxYjIuLjc3ZDQ0N2U0
Y2VlZDFjMDFkZWMxNjc4YTBmZDRkYTBlMWVlMjY0YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybUV2ZW50LmgKQEAgLTY1LDU5ICs2NSw1OSBAQCBwdWJsaWM6CiAjZW5kaWYKICAg
ICB9OwogCi0gICAgZW51bSBNb2RpZmllcktleSB7Ci0gICAgICAgIEFsdEtleSA9IDEgPDwgMCwK
LSAgICAgICAgQ3RybEtleSA9IDEgPDwgMSwKLSAgICAgICAgTWV0YUtleSA9IDEgPDwgMiwKLSAg
ICAgICAgU2hpZnRLZXkgPSAxIDw8IDMKKyAgICBlbnVtIE1vZGlmaWVycyB7CisgICAgICAgIEFs
dEtleSAgICAgID0gMSA8PCAwLAorICAgICAgICBDdHJsS2V5ICAgICA9IDEgPDwgMSwKKyAgICAg
ICAgTWV0YUtleSAgICAgPSAxIDw8IDIsCisgICAgICAgIFNoaWZ0S2V5ICAgID0gMSA8PCAzLAog
ICAgIH07CiAKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUeXBl
PihtX3R5cGUpOyB9CiAKLSAgICBib29sIHNoaWZ0S2V5KCkgY29uc3QgeyByZXR1cm4gbV9zaGlm
dEtleTsgfQotICAgIGJvb2wgY3RybEtleSgpIGNvbnN0IHsgcmV0dXJuIG1fY3RybEtleTsgfQot
ICAgIGJvb2wgYWx0S2V5KCkgY29uc3QgeyByZXR1cm4gbV9hbHRLZXk7IH0KLSAgICBib29sIG1l
dGFLZXkoKSBjb25zdCB7IHJldHVybiBtX21ldGFLZXk7IH0KKyAgICBib29sIHNoaWZ0S2V5KCkg
Y29uc3QgeyByZXR1cm4gbV9tb2RpZmllcnMgJiBTaGlmdEtleTsgfQorICAgIGJvb2wgY3RybEtl
eSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kaWZpZXJzICYgQ3RybEtleTsgfQorICAgIGJvb2wgYWx0
S2V5KCkgY29uc3QgeyByZXR1cm4gbV9tb2RpZmllcnMgJiBBbHRLZXk7IH0KKyAgICBib29sIG1l
dGFLZXkoKSBjb25zdCB7IHJldHVybiBtX21vZGlmaWVycyAmIE1ldGFLZXk7IH0KIAotICAgIHVu
c2lnbmVkIG1vZGlmaWVycygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gKGFsdEtleSgp
ID8gQWx0S2V5IDogMCkKLSAgICAgICAgICAgIHwgKGN0cmxLZXkoKSA/IEN0cmxLZXkgOiAwKQot
ICAgICAgICAgICAgfCAobWV0YUtleSgpID8gTWV0YUtleSA6IDApCi0gICAgICAgICAgICB8IChz
aGlmdEtleSgpID8gU2hpZnRLZXkgOiAwKTsKLSAgICB9CisgICAgdW5zaWduZWQgbW9kaWZpZXJz
KCkgY29uc3QgeyByZXR1cm4gbV9tb2RpZmllcnM7IH0KIAogICAgIGRvdWJsZSB0aW1lc3RhbXAo
KSBjb25zdCB7IHJldHVybiBtX3RpbWVzdGFtcDsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgUGxhdGZv
cm1FdmVudCgpCiAgICAgICAgIDogbV90eXBlKE5vVHlwZSkKLSAgICAgICAgLCBtX3NoaWZ0S2V5
KGZhbHNlKQotICAgICAgICAsIG1fY3RybEtleShmYWxzZSkKLSAgICAgICAgLCBtX2FsdEtleShm
YWxzZSkKLSAgICAgICAgLCBtX21ldGFLZXkoZmFsc2UpCisgICAgICAgICwgbV9tb2RpZmllcnMo
MCkKICAgICAgICAgLCBtX3RpbWVzdGFtcCgwKQogICAgIHsKICAgICB9CiAKICAgICBQbGF0Zm9y
bUV2ZW50KFR5cGUgdHlwZSkKICAgICAgICAgOiBtX3R5cGUodHlwZSkKLSAgICAgICAgLCBtX3No
aWZ0S2V5KGZhbHNlKQotICAgICAgICAsIG1fY3RybEtleShmYWxzZSkKLSAgICAgICAgLCBtX2Fs
dEtleShmYWxzZSkKLSAgICAgICAgLCBtX21ldGFLZXkoZmFsc2UpCisgICAgICAgICwgbV9tb2Rp
ZmllcnMoMCkKICAgICAgICAgLCBtX3RpbWVzdGFtcCgwKQogICAgIHsKICAgICB9CiAKKyAgICBQ
bGF0Zm9ybUV2ZW50KFR5cGUgdHlwZSwgTW9kaWZpZXJzIG1vZGlmaWVycywgZG91YmxlIHRpbWVz
dGFtcCkKKyAgICAgICAgOiBtX3R5cGUodHlwZSkKKyAgICAgICAgLCBtX21vZGlmaWVycyhtb2Rp
ZmllcnMpCisgICAgICAgICwgbV90aW1lc3RhbXAodGltZXN0YW1wKQorICAgIHsKKyAgICB9CisK
ICAgICBQbGF0Zm9ybUV2ZW50KFR5cGUgdHlwZSwgYm9vbCBzaGlmdEtleSwgYm9vbCBjdHJsS2V5
LCBib29sIGFsdEtleSwgYm9vbCBtZXRhS2V5LCBkb3VibGUgdGltZXN0YW1wKQogICAgICAgICA6
IG1fdHlwZSh0eXBlKQotICAgICAgICAsIG1fc2hpZnRLZXkoc2hpZnRLZXkpCi0gICAgICAgICwg
bV9jdHJsS2V5KGN0cmxLZXkpCi0gICAgICAgICwgbV9hbHRLZXkoYWx0S2V5KQotICAgICAgICAs
IG1fbWV0YUtleShtZXRhS2V5KQorICAgICAgICAsIG1fbW9kaWZpZXJzKDApCiAgICAgICAgICwg
bV90aW1lc3RhbXAodGltZXN0YW1wKQogICAgIHsKKyAgICAgICAgaWYgKHNoaWZ0S2V5KQorICAg
ICAgICAgICAgbV9tb2RpZmllcnMgfD0gU2hpZnRLZXk7CisgICAgICAgIGlmIChjdHJsS2V5KQor
ICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gQ3RybEtleTsKKyAgICAgICAgaWYgKGFsdEtleSkK
KyAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IEFsdEtleTsKKyAgICAgICAgaWYgKG1ldGFLZXkp
CisgICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNZXRhS2V5OwogICAgIH0KIAogICAgIC8vIEV4
cGxpY2l0IHByb3RlY3RlZCBkZXN0cnVjdG9yIHNvIHRoYXQgcGVvcGxlIGRvbid0IGFjY2lkZW50
YWxseQpAQCAtMTI3LDEwICsxMjcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogCiAgICAgdW5zaWdu
ZWQgbV90eXBlOwotICAgIGJvb2wgbV9zaGlmdEtleTsKLSAgICBib29sIG1fY3RybEtleTsKLSAg
ICBib29sIG1fYWx0S2V5OwotICAgIGJvb2wgbV9tZXRhS2V5OworICAgIHVuc2lnbmVkIG1fbW9k
aWZpZXJzOwogICAgIGRvdWJsZSBtX3RpbWVzdGFtcDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVFdmVudC5oCmluZGV4IDU1ZmU4ZWZhODYxODk2OGMx
ODBlMGYwNjNlYjk3ZmU3ZDZmY2Y3ZTUuLmUzMTNiZTUwZTM5MzJmOWNlMWNiYzU1YjQwMWRhMjc2
MzJhNDU0MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2Vz
dHVyZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJl
RXZlbnQuaApAQCAtNjAsNyArNjAsNiBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSW50UG9p
bnQgbV9wb3NpdGlvbjsKICAgICBJbnRQb2ludCBtX2dsb2JhbFBvc2l0aW9uOwotICAgIGRvdWJs
ZSBtX3RpbWVzdGFtcDsKICAgICBmbG9hdCBtX2RlbHRhWDsKICAgICBmbG9hdCBtX2RlbHRhWTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUtleWJvYXJk
RXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5o
CmluZGV4IDJlZDFhMGFmODhkYWViZGM1Yjk0MzE2ZTJkMjNhMTJjMzhmMTQ2ZjYuLmYxNTQ5NjY3
MzJhZDk0OWE4ZDhiMzAwOTYyMzY3MTU3OTczMjg0ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oCkBAIC03MCwxMyArNzAsMTIgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAgICAgICAgUGxhdGZvcm1LZXlib2FyZEV2
ZW50KCkKICAgICAgICAgICAgIDogUGxhdGZvcm1FdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3du
KQotICAgICAgICAgICAgLCBtX2F1dG9SZXBlYXQoZmFsc2UpCiAgICAgICAgICAgICAsIG1fd2lu
ZG93c1ZpcnR1YWxLZXlDb2RlKDApCiAgICAgICAgICAgICAsIG1fbmF0aXZlVmlydHVhbEtleUNv
ZGUoMCkKKyAgICAgICAgICAgICwgbV9tYWNDaGFyQ29kZSgwKQorICAgICAgICAgICAgLCBtX2F1
dG9SZXBlYXQoZmFsc2UpCiAgICAgICAgICAgICAsIG1faXNLZXlwYWQoZmFsc2UpCi0jaWYgUExB
VEZPUk0oV0lOKSB8fCBQTEFURk9STShDSFJPTUlVTSkKICAgICAgICAgICAgICwgbV9pc1N5c3Rl
bUtleShmYWxzZSkKLSNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgICAgICwgbV9n
ZGtFdmVudEtleSgwKQogI2VuZGlmCkBAIC04Niw2ICs4NSwyMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHsKICAgICAgICAgfQogCisgICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dChUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiB1bm1vZGlmaWVk
VGV4dCwgY29uc3QgU3RyaW5nJiBrZXlJZGVudGlmaWVyLCBpbnQgd2luZG93c1ZpcnR1YWxLZXlD
b2RlLCBpbnQgbmF0aXZlVmlydHVhbEtleUNvZGUsIGludCBtYWNDaGFyQ29kZSwgYm9vbCBpc0F1
dG9SZXBlYXQsIGJvb2wgaXNLZXlwYWQsIGJvb2wgaXNTeXN0ZW1LZXksIE1vZGlmaWVycyBtb2Rp
ZmllcnMsIGRvdWJsZSB0aW1lc3RhbXApCisgICAgICAgICAgICA6IFBsYXRmb3JtRXZlbnQodHlw
ZSwgbW9kaWZpZXJzLCB0aW1lc3RhbXApCisgICAgICAgICAgICAsIG1fdGV4dCh0ZXh0KQorICAg
ICAgICAgICAgLCBtX3VubW9kaWZpZWRUZXh0KHVubW9kaWZpZWRUZXh0KQorICAgICAgICAgICAg
LCBtX2tleUlkZW50aWZpZXIoa2V5SWRlbnRpZmllcikKKyAgICAgICAgICAgICwgbV93aW5kb3dz
VmlydHVhbEtleUNvZGUod2luZG93c1ZpcnR1YWxLZXlDb2RlKQorICAgICAgICAgICAgLCBtX25h
dGl2ZVZpcnR1YWxLZXlDb2RlKG5hdGl2ZVZpcnR1YWxLZXlDb2RlKQorICAgICAgICAgICAgLCBt
X21hY0NoYXJDb2RlKG1hY0NoYXJDb2RlKQorICAgICAgICAgICAgLCBtX2F1dG9SZXBlYXQoaXNB
dXRvUmVwZWF0KQorICAgICAgICAgICAgLCBtX2lzS2V5cGFkKGlzS2V5cGFkKQorICAgICAgICAg
ICAgLCBtX2lzU3lzdGVtS2V5KGlzU3lzdGVtS2V5KQorICAgICAgICB7CisgICAgICAgIH0KKwog
ICAgICAgICB2b2lkIGRpc2FtYmlndWF0ZUtleURvd25FdmVudChUeXBlLCBib29sIGJhY2t3YXJk
Q29tcGF0aWJpbGl0eU1vZGUgPSBmYWxzZSk7IC8vIE9ubHkgdXNlZCBvbiBwbGF0Zm9ybXMgdGhh
dCBuZWVkIGl0LCBpLmUuIHRob3NlIHRoYXQgZ2VuZXJhdGUgS2V5RG93biBldmVudHMuCiAKICAg
ICAgICAgLy8gVGV4dCBhcyBhcyBnZW5lcmF0ZWQgYnkgcHJvY2Vzc2luZyBhIHZpcnR1YWwga2V5
IGNvZGUgd2l0aCBhIGtleWJvYXJkIGxheW91dApAQCAtMTAxLDI0ICsxMTQsMjQgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICAvLyBPdGhlcndpc2UsIHNhbWUgYXMgdGV4dCgpLgogICAg
ICAgICBTdHJpbmcgdW5tb2RpZmllZFRleHQoKSBjb25zdCB7IHJldHVybiBtX3VubW9kaWZpZWRU
ZXh0OyB9CiAKKyAgICAgICAgU3RyaW5nIGtleUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X2tleUlkZW50aWZpZXI7IH0KKwogICAgICAgICAvLyBNb3N0IGNvbXBhdGlibGUgV2luZG93cyB2
aXJ0dWFsIGtleSBjb2RlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXZlbnQuCiAgICAgICAgIC8vIFpl
cm8gZm9yIENoYXIgZXZlbnRzLgogICAgICAgICBpbnQgd2luZG93c1ZpcnR1YWxLZXlDb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV93aW5kb3dzVmlydHVhbEtleUNvZGU7IH0KICAgICAgICAgdm9pZCBz
ZXRXaW5kb3dzVmlydHVhbEtleUNvZGUoaW50IGNvZGUpIHsgbV93aW5kb3dzVmlydHVhbEtleUNv
ZGUgPSBjb2RlOyB9CiAKICAgICAgICAgaW50IG5hdGl2ZVZpcnR1YWxLZXlDb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9uYXRpdmVWaXJ0dWFsS2V5Q29kZTsgfQotICAgICAgICB2b2lkIHNldE5hdGl2
ZVZpcnR1YWxLZXlDb2RlKGludCBjb2RlKSB7IG1fbmF0aXZlVmlydHVhbEtleUNvZGUgPSBjb2Rl
OyB9CisgICAgICAgIGludCBtYWNDaGFyQ29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFjQ2hhckNv
ZGU7IH0KIAotICAgICAgICBTdHJpbmcga2V5SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
a2V5SWRlbnRpZmllcjsgfQogICAgICAgICBib29sIGlzQXV0b1JlcGVhdCgpIGNvbnN0IHsgcmV0
dXJuIG1fYXV0b1JlcGVhdDsgfQotICAgICAgICB2b2lkIHNldElzQXV0b1JlcGVhdChib29sIGlu
KSB7IG1fYXV0b1JlcGVhdCA9IGluOyB9CiAgICAgICAgIGJvb2wgaXNLZXlwYWQoKSBjb25zdCB7
IHJldHVybiBtX2lzS2V5cGFkOyB9CisgICAgICAgIGJvb2wgaXNTeXN0ZW1LZXkoKSBjb25zdCB7
IHJldHVybiBtX2lzU3lzdGVtS2V5OyB9CiAKICAgICAgICAgc3RhdGljIGJvb2wgY3VycmVudENh
cHNMb2NrU3RhdGUoKTsKICAgICAgICAgc3RhdGljIHZvaWQgZ2V0Q3VycmVudE1vZGlmaWVyU3Rh
dGUoYm9vbCYgc2hpZnRLZXksIGJvb2wmIGN0cmxLZXksIGJvb2wmIGFsdEtleSwgYm9vbCYgbWV0
YUtleSk7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dChOU0V2ZW50Kik7CiAgICAgICAgIE5TRXZlbnQqIG1hY0V2ZW50KCkgY29uc3QgeyByZXR1cm4g
bV9tYWNFdmVudC5nZXQoKTsgfQogI2VuZGlmCiAKQEAgLTE0NywxMCArMTYwLDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQod3hLZXlFdmVudCYp
OwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JNKENIUk9NSVVNKQotICAg
ICAgICBib29sIGlzU3lzdGVtS2V5KCkgY29uc3QgeyByZXR1cm4gbV9pc1N5c3RlbUtleTsgfQot
I2VuZGlmCi0KICNpZiBQTEFURk9STShFRkwpCiAgICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dChjb25zdCBFdmFzX0V2ZW50X0tleV9Eb3duKik7CiAgICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRF
dmVudChjb25zdCBFdmFzX0V2ZW50X0tleV9VcCopOwpAQCAtMTYwLDE3ICsxNjksMTYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTdHJpbmcgbV90ZXh0OwogICAgICAgICBTdHJpbmcg
bV91bm1vZGlmaWVkVGV4dDsKICAgICAgICAgU3RyaW5nIG1fa2V5SWRlbnRpZmllcjsKLSAgICAg
ICAgYm9vbCBtX2F1dG9SZXBlYXQ7CiAgICAgICAgIGludCBtX3dpbmRvd3NWaXJ0dWFsS2V5Q29k
ZTsKICAgICAgICAgaW50IG1fbmF0aXZlVmlydHVhbEtleUNvZGU7CisgICAgICAgIGludCBtX21h
Y0NoYXJDb2RlOworICAgICAgICBib29sIG1fYXV0b1JlcGVhdDsKICAgICAgICAgYm9vbCBtX2lz
S2V5cGFkOworICAgICAgICBib29sIG1faXNTeXN0ZW1LZXk7CiAKICNpZiBQTEFURk9STShNQUMp
CiAgICAgICAgIFJldGFpblB0cjxOU0V2ZW50PiBtX21hY0V2ZW50OwogI2VuZGlmCi0jaWYgUExB
VEZPUk0oV0lOKSB8fCBQTEFURk9STShDSFJPTUlVTSkKLSAgICAgICAgYm9vbCBtX2lzU3lzdGVt
S2V5OwotI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQogICAgICAgICBHZGtFdmVudEtleSogbV9n
ZGtFdmVudEtleTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1Nb3VzZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybU1v
dXNlRXZlbnQuaAppbmRleCBiM2E0MDY3ZDcxODBjYmE0ODVhY2E2NzcwOTk3MzBjZjM1ZjdmYTkw
Li5hM2RjY2U0OTBkM2Y3ODA2MmQ5ZWM3OGI2ODE3ZDM5ODg5ZTRlNGVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaApAQCAtMTE5LDEyICsxMTksNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKLSNpZiBk
ZWZpbmVkKF9fT0JKQ19fKQotICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQoTlNFdmVudCAqLCBO
U1ZpZXcgKndpbmRvd1ZpZXcpOwotI2VuZGlmCi0gICAgICAgIFBsYXRmb3JtTW91c2VFdmVudChp
bnQgeCwgaW50IHksIGludCBnbG9iYWxYLCBpbnQgZ2xvYmFsWSwgTW91c2VCdXR0b24sIFBsYXRm
b3JtRXZlbnQ6OlR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2xpY2tDb3Vu
dCwgYm9vbCBzaGlmdEtleSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBtZXRhS2V5
LCBkb3VibGUgdGltZXN0YW1wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
bW9kaWZpZXJGbGFncywgaW50IGV2ZW50TnVtYmVyKTsKICAgICAgICAgaW50IGV2ZW50TnVtYmVy
KCkgY29uc3QgeyByZXR1cm4gbV9ldmVudE51bWJlcjsgfQogI2VuZGlmCiAKQEAgLTE2MCwxMiAr
MTU0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAgICAgfTsKIAotI2lmIFBMQVRG
T1JNKE1BQykgJiYgZGVmaW5lZChfX09CSkNfXykKLSAgICBJbnRQb2ludCBnbG9iYWxQb2ludChj
b25zdCBOU1BvaW50JiB3aW5kb3dQb2ludCwgTlNXaW5kb3cgKik7Ci0gICAgSW50UG9pbnQgcG9p
bnRGb3JFdmVudChOU0V2ZW50ICosIE5TVmlldyAqd2luZG93Vmlldyk7Ci0gICAgSW50UG9pbnQg
Z2xvYmFsUG9pbnRGb3JFdmVudChOU0V2ZW50ICopOwotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIFBsYXRmb3JtTW91c2VFdmVudF9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCmluZGV4IGJhOTEwNTQ4MjlhZTZlMmY2
OWQxNjBmYWJmM2RkZmVlMzNmNGJjM2UuLjhlOTllNDc2MmZkMDdiMmY1YzNkYjhkMWI5YTdkNDc1
NjU1YmNlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hl
ZWxFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVu
dC5oCkBAIC0xNTQsMTcgKzE1NCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFBs
YXRmb3JtV2hlZWxFdmVudChjb25zdCBFdmFzX0V2ZW50X01vdXNlX1doZWVsKik7CiAjZW5kaWYK
IAotI2lmIFBMQVRGT1JNKE1BQykKLSNpZiBkZWZpbmVkKF9fT0JKQ19fKQotICAgICAgICBQbGF0
Zm9ybVdoZWVsRXZlbnQoTlNFdmVudCAqLCBOU1ZpZXcgKndpbmRvd1ZpZXcpOwotI2VuZGlmCi0j
ZW5kaWYKLQogI2lmIFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBPUyhE
QVJXSU4pKQogICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSBwaGFzZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcGhhc2U7IH0KICAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgbW9tZW50
dW1QaGFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9tZW50dW1QaGFzZTsgfQogICAgICAgICBib29s
IGhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoKSBjb25zdCB7IHJldHVybiBtX2hhc1ByZWNpc2VT
Y3JvbGxpbmdEZWx0YXM7IH0KLSAgICAgICAgZG91YmxlIHRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0
dXJuIG1fdGltZXN0YW1wOyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFFUKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtS2V5Ym9hcmRFdmVudEd0ay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3Rr
LmNwcAppbmRleCA1M2VmNzhiZTI4MDI1YTA2YTQyNzM4YTJiOWEwODY3YzU2ZTYzMjA1Li4zYTI0
MDlkY2YwNjk2ZjY4OGUwMjE1NDNiYjFjNzgzNjNmMjVmYzdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNwcApA
QCAtNTUyLDEwICs1NTIsMTIgQEAgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJv
YXJkRXZlbnQoR2RrRXZlbnRLZXkqIGV2ZW50KQogICAgICwgbV90ZXh0KHNpbmdsZUNoYXJhY3Rl
clN0cmluZyhldmVudC0+a2V5dmFsKSkKICAgICAsIG1fdW5tb2RpZmllZFRleHQoc2luZ2xlQ2hh
cmFjdGVyU3RyaW5nKGV2ZW50LT5rZXl2YWwpKQogICAgICwgbV9rZXlJZGVudGlmaWVyKGtleUlk
ZW50aWZpZXJGb3JHZGtLZXlDb2RlKGV2ZW50LT5rZXl2YWwpKQotICAgICwgbV9hdXRvUmVwZWF0
KGZhbHNlKQogICAgICwgbV93aW5kb3dzVmlydHVhbEtleUNvZGUod2luZG93c0tleUNvZGVGb3JH
ZGtLZXlDb2RlKGV2ZW50LT5rZXl2YWwpKQogICAgICwgbV9uYXRpdmVWaXJ0dWFsS2V5Q29kZShl
dmVudC0+a2V5dmFsKQorICAgICwgbV9tYWNDaGFyQ29kZSgwKQorICAgICwgbV9hdXRvUmVwZWF0
KGZhbHNlKQogICAgICwgbV9pc0tleXBhZChldmVudC0+a2V5dmFsID49IEdES19LUF9TcGFjZSAm
JiBldmVudC0+a2V5dmFsIDw9IEdES19LUF85KQorICAgICwgbV9pc1N5c3RlbUtleShmYWxzZSkK
ICAgICAsIG1fZ2RrRXZlbnRLZXkoZXZlbnQpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1Nb3VzZUV2ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybU1vdXNlRXZlbnRHdGsuY3BwCmluZGV4IDg3OWU4Y2Mx
NDU4ZDhmODgyZGU5MzA5NDc5N2IyYWZlNDE0MDVjNDguLjRlNjIwMGZjZDQ1Yjk1OWJhYmNmZTQ0
MDJlNWNmZDViNjgwMTc5OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9QbGF0Zm9ybU1vdXNlRXZlbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9QbGF0Zm9ybU1vdXNlRXZlbnRHdGsuY3BwCkBAIC00MSwxMCArNDEsMTYgQEAgUGxhdGZv
cm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQoR2RrRXZlbnRCdXR0b24qIGV2ZW50KQog
ICAgIG1fdGltZXN0YW1wID0gZXZlbnQtPnRpbWU7CiAgICAgbV9wb3NpdGlvbiA9IEludFBvaW50
KChpbnQpZXZlbnQtPngsIChpbnQpZXZlbnQtPnkpOwogICAgIG1fZ2xvYmFsUG9zaXRpb24gPSBJ
bnRQb2ludCgoaW50KWV2ZW50LT54X3Jvb3QsIChpbnQpZXZlbnQtPnlfcm9vdCk7Ci0gICAgbV9z
aGlmdEtleSA9IGV2ZW50LT5zdGF0ZSAmIEdES19TSElGVF9NQVNLOwotICAgIG1fY3RybEtleSA9
IGV2ZW50LT5zdGF0ZSAmIEdES19DT05UUk9MX01BU0s7Ci0gICAgbV9hbHRLZXkgPSBldmVudC0+
c3RhdGUgJiBHREtfTU9EMV9NQVNLOwotICAgIG1fbWV0YUtleSA9IGV2ZW50LT5zdGF0ZSAmIEdE
S19NRVRBX01BU0s7CisKKyAgICBtX21vZGlmaWVycyA9IDA7CisgICAgaWYgKGV2ZW50LT5zdGF0
ZSAmIEdES19TSElGVF9NQVNLKQorICAgICAgICBtX21vZGlmaWVycyB8PSBTaGlmdEtleTsKKyAg
ICBpZiAoZXZlbnQtPnN0YXRlICYgR0RLX0NPTlRST0xfTUFTSykKKyAgICAgICAgbV9tb2RpZmll
cnMgfD0gQ3RybEtleTsKKyAgICBpZiAoZXZlbnQtPnN0YXRlICYgR0RLX01PRDFfTUFTSykKKyAg
ICAgICAgbV9tb2RpZmllcnMgfD0gQWx0S2V5OworICAgIGlmIChldmVudC0+c3RhdGUgJiBHREtf
TUVUQV9NQVNLKQorICAgICAgICBtX21vZGlmaWVycyB8PSBNZXRhS2V5OwogCiAgICAgc3dpdGNo
IChldmVudC0+dHlwZSkgewogICAgIGNhc2UgR0RLX0JVVFRPTl9QUkVTUzoKQEAgLTgwLDEwICs4
NiwxNiBAQCBQbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudChHZGtFdmVudE1v
dGlvbiogbW90aW9uKQogICAgIG1fdGltZXN0YW1wID0gbW90aW9uLT50aW1lOwogICAgIG1fcG9z
aXRpb24gPSBJbnRQb2ludCgoaW50KW1vdGlvbi0+eCwgKGludCltb3Rpb24tPnkpOwogICAgIG1f
Z2xvYmFsUG9zaXRpb24gPSBJbnRQb2ludCgoaW50KW1vdGlvbi0+eF9yb290LCAoaW50KW1vdGlv
bi0+eV9yb290KTsKLSAgICBtX3NoaWZ0S2V5ID0gbW90aW9uLT5zdGF0ZSAmIEdES19TSElGVF9N
QVNLOwotICAgIG1fY3RybEtleSA9IG1vdGlvbi0+c3RhdGUgJiBHREtfQ09OVFJPTF9NQVNLOwot
ICAgIG1fYWx0S2V5ID0gbW90aW9uLT5zdGF0ZSAmIEdES19NT0QxX01BU0s7Ci0gICAgbV9tZXRh
S2V5ID0gbW90aW9uLT5zdGF0ZSAmIEdES19NRVRBX01BU0s7CisKKyAgICBtX21vZGlmaWVycyA9
IDA7CisgICAgaWYgKG1vdGlvbi0+c3RhdGUgJiBHREtfU0hJRlRfTUFTSykKKyAgICAgICAgbV9t
b2RpZmllcnMgfD0gU2hpZnRLZXk7CisgICAgaWYgKG1vdGlvbi0+c3RhdGUgJiBHREtfQ09OVFJP
TF9NQVNLKQorICAgICAgICBtX21vZGlmaWVycyB8PSBDdHJsS2V5OworICAgIGlmIChtb3Rpb24t
PnN0YXRlICYgR0RLX01PRDFfTUFTSykKKyAgICAgICAgbV9tb2RpZmllcnMgfD0gQWx0S2V5Owor
ICAgIGlmIChtb3Rpb24tPnN0YXRlICYgR0RLX01FVEFfTUFTSykKKyAgICAgICAgbV9tb2RpZmll
cnMgfD0gTWV0YUtleTsKIAogICAgIHN3aXRjaCAobW90aW9uLT50eXBlKSB7CiAgICAgY2FzZSBH
REtfTU9USU9OX05PVElGWToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9QbGF0Zm9ybVdoZWVsRXZlbnRHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1BsYXRmb3JtV2hlZWxFdmVudEd0ay5jcHAKaW5kZXggY2JlMDZkZmFmNjkyN2NjNjNhMGNlOWI0
M2E1MWZkMzE1NzJhN2YyZi4uNDIwNWMyMTI5Mjc2MjRhMWI1NmE0ZjAzYjMzMTRkOGRkNDMzZjFk
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtV2hlZWxF
dmVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtV2hl
ZWxFdmVudEd0ay5jcHAKQEAgLTQyLDYgKzQyLDE2IEBAIFBsYXRmb3JtV2hlZWxFdmVudDo6UGxh
dGZvcm1XaGVlbEV2ZW50KEdka0V2ZW50U2Nyb2xsKiBldmVudCkKICAgICBtX3R5cGUgPSBQbGF0
Zm9ybUV2ZW50OjpXaGVlbDsKICAgICBtX3RpbWVzdGFtcCA9IGN1cnJlbnRUaW1lKCk7CiAKKyAg
ICBtX21vZGlmaWVycyA9IDA7CisgICAgaWYgKG1vdGlvbi0+c3RhdGUgJiBHREtfU0hJRlRfTUFT
SykKKyAgICAgICAgbV9tb2RpZmllcnMgfD0gU2hpZnRLZXk7CisgICAgaWYgKG1vdGlvbi0+c3Rh
dGUgJiBHREtfQ09OVFJPTF9NQVNLKQorICAgICAgICBtX21vZGlmaWVycyB8PSBDdHJsS2V5Owor
ICAgIGlmIChtb3Rpb24tPnN0YXRlICYgR0RLX01PRDFfTUFTSykKKyAgICAgICAgbV9tb2RpZmll
cnMgfD0gQWx0S2V5OworICAgIGlmIChtb3Rpb24tPnN0YXRlICYgR0RLX01FVEFfTUFTSykKKyAg
ICAgICAgbV9tb2RpZmllcnMgfD0gTWV0YUtleTsKKwogICAgIG1fZGVsdGFYID0gMDsKICAgICBt
X2RlbHRhWSA9IDA7CiAKQEAgLTY2LDEwICs3Niw2IEBAIFBsYXRmb3JtV2hlZWxFdmVudDo6UGxh
dGZvcm1XaGVlbEV2ZW50KEdka0V2ZW50U2Nyb2xsKiBldmVudCkKICAgICBtX3Bvc2l0aW9uID0g
SW50UG9pbnQoc3RhdGljX2Nhc3Q8aW50PihldmVudC0+eCksIHN0YXRpY19jYXN0PGludD4oZXZl
bnQtPnkpKTsKICAgICBtX2dsb2JhbFBvc2l0aW9uID0gSW50UG9pbnQoc3RhdGljX2Nhc3Q8aW50
PihldmVudC0+eF9yb290KSwgc3RhdGljX2Nhc3Q8aW50PihldmVudC0+eV9yb290KSk7CiAgICAg
bV9ncmFudWxhcml0eSA9IFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50OwotICAgIG1fc2hpZnRLZXkg
PSBldmVudC0+c3RhdGUgJiBHREtfU0hJRlRfTUFTSzsKLSAgICBtX2N0cmxLZXkgPSBldmVudC0+
c3RhdGUgJiBHREtfQ09OVFJPTF9NQVNLOwotICAgIG1fYWx0S2V5ID0gZXZlbnQtPnN0YXRlICYg
R0RLX01PRDFfTUFTSzsKLSAgICBtX21ldGFLZXkgPSBldmVudC0+c3RhdGUgJiBHREtfTUVUQV9N
QVNLOwogICAgIG1fZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlID0gZmFsc2U7CiAKICAgICAv
LyBGSVhNRTogcmV0cmlldmUgdGhlIHVzZXIgc2V0dGluZyBmb3IgdGhlIG51bWJlciBvZiBsaW5l
cyB0byBzY3JvbGwgb24gZWFjaCB3aGVlbCBldmVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL0tleUV2ZW50TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL0tleUV2ZW50TWFjLm1tCmluZGV4IDQ0ZDZjYzMwYzJmODZhMjRjMjdkZjAwMDAyZGY0YTkz
OWM3MzM1N2EuLjRiZGY2MjA3YjZjNTVmMTJlMjg3YTcxNDFhMjcwZWE5MmQyMmRlMmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9LZXlFdmVudE1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvS2V5RXZlbnRNYWMubW0KQEAgLTM3LDE4NyArMzcs
NiBAQCB1c2luZyBuYW1lc3BhY2UgV1RGOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRp
YyBib29sIGlzS2V5cGFkRXZlbnQoTlNFdmVudCogZXZlbnQpCi17Ci0gICAgLy8gQ2hlY2sgdGhh
dCB0aGlzIGlzIHRoZSB0eXBlIG9mIGV2ZW50IHRoYXQgaGFzIGEga2V5Q29kZS4KLSAgICBzd2l0
Y2ggKFtldmVudCB0eXBlXSkgewotICAgICAgICBjYXNlIE5TS2V5RG93bjoKLSAgICAgICAgY2Fz
ZSBOU0tleVVwOgotICAgICAgICBjYXNlIE5TRmxhZ3NDaGFuZ2VkOgotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
Ci0gICAgaWYgKFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TTnVtZXJpY1BhZEtleU1hc2spCi0g
ICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgc3dpdGNoIChbZXZlbnQga2V5Q29kZV0pIHsKLSAg
ICAgICAgY2FzZSA3MTogLy8gQ2xlYXIKLSAgICAgICAgY2FzZSA4MTogLy8gPQotICAgICAgICBj
YXNlIDc1OiAvLyAvCi0gICAgICAgIGNhc2UgNjc6IC8vICoKLSAgICAgICAgY2FzZSA3ODogLy8g
LQotICAgICAgICBjYXNlIDY5OiAvLyArCi0gICAgICAgIGNhc2UgNzY6IC8vIEVudGVyCi0gICAg
ICAgIGNhc2UgNjU6IC8vIC4KLSAgICAgICAgY2FzZSA4MjogLy8gMAotICAgICAgICBjYXNlIDgz
OiAvLyAxCi0gICAgICAgIGNhc2UgODQ6IC8vIDIKLSAgICAgICAgY2FzZSA4NTogLy8gMwotICAg
ICAgICBjYXNlIDg2OiAvLyA0Ci0gICAgICAgIGNhc2UgODc6IC8vIDUKLSAgICAgICAgY2FzZSA4
ODogLy8gNgotICAgICAgICBjYXNlIDg5OiAvLyA3Ci0gICAgICAgIGNhc2UgOTE6IC8vIDgKLSAg
ICAgICAgY2FzZSA5MjogLy8gOQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgIH0KLQot
ICAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc0tleVVwRXZlbnQo
TlNFdmVudCAqZXZlbnQpCi17Ci0gICAgaWYgKFtldmVudCB0eXBlXSAhPSBOU0ZsYWdzQ2hhbmdl
ZCkKLSAgICAgICAgcmV0dXJuIFtldmVudCB0eXBlXSA9PSBOU0tleVVwOwotICAgIC8vIEZJWE1F
OiBUaGlzIGxvZ2ljIGZhaWxzIGlmIHRoZSB1c2VyIHByZXNzZXMgYm90aCBTaGlmdCBrZXlzIGF0
IG9uY2UsIGZvciBleGFtcGxlOgotICAgIC8vIHdlIHRyZWF0IHJlbGVhc2luZyBvbmUgb2YgdGhl
bSBhcyBrZXlEb3duLgotICAgIHN3aXRjaCAoW2V2ZW50IGtleUNvZGVdKSB7Ci0gICAgICAgIGNh
c2UgNTQ6IC8vIFJpZ2h0IENvbW1hbmQKLSAgICAgICAgY2FzZSA1NTogLy8gTGVmdCBDb21tYW5k
Ci0gICAgICAgICAgICByZXR1cm4gKFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQ29tbWFuZEtl
eU1hc2spID09IDA7Ci0KLSAgICAgICAgY2FzZSA1NzogLy8gQ2Fwc2xvY2sKLSAgICAgICAgICAg
IHJldHVybiAoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNBbHBoYVNoaWZ0S2V5TWFzaykgPT0g
MDsKLQotICAgICAgICBjYXNlIDU2OiAvLyBMZWZ0IFNoaWZ0Ci0gICAgICAgIGNhc2UgNjA6IC8v
IFJpZ2h0IFNoaWZ0Ci0gICAgICAgICAgICByZXR1cm4gKFtldmVudCBtb2RpZmllckZsYWdzXSAm
IE5TU2hpZnRLZXlNYXNrKSA9PSAwOwotCi0gICAgICAgIGNhc2UgNTg6IC8vIExlZnQgQWx0Ci0g
ICAgICAgIGNhc2UgNjE6IC8vIFJpZ2h0IEFsdAotICAgICAgICAgICAgcmV0dXJuIChbZXZlbnQg
bW9kaWZpZXJGbGFnc10gJiBOU0FsdGVybmF0ZUtleU1hc2spID09IDA7Ci0KLSAgICAgICAgY2Fz
ZSA1OTogLy8gTGVmdCBDdHJsCi0gICAgICAgIGNhc2UgNjI6IC8vIFJpZ2h0IEN0cmwKLSAgICAg
ICAgICAgIHJldHVybiAoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb250cm9sS2V5TWFzaykg
PT0gMDsKLQotICAgICAgICBjYXNlIDYzOiAvLyBGdW5jdGlvbgotICAgICAgICAgICAgcmV0dXJu
IChbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0Z1bmN0aW9uS2V5TWFzaykgPT0gMDsKLSAgICB9
Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1zdGF0aWMgaW5saW5lIFN0cmluZyB0ZXh0RnJvbUV2
ZW50KE5TRXZlbnQqIGV2ZW50KQotewotICAgIGlmIChbZXZlbnQgdHlwZV0gPT0gTlNGbGFnc0No
YW5nZWQpCi0gICAgICAgIHJldHVybiAiIjsKLSAgICByZXR1cm4gW2V2ZW50IGNoYXJhY3RlcnNd
OwotfQotCi0KLXN0YXRpYyBpbmxpbmUgU3RyaW5nIHVubW9kaWZpZWRUZXh0RnJvbUV2ZW50KE5T
RXZlbnQqIGV2ZW50KQotewotICAgIGlmIChbZXZlbnQgdHlwZV0gPT0gTlNGbGFnc0NoYW5nZWQp
Ci0gICAgICAgIHJldHVybiAiIjsKLSAgICByZXR1cm4gW2V2ZW50IGNoYXJhY3RlcnNJZ25vcmlu
Z01vZGlmaWVyc107Ci19Ci0KLXN0YXRpYyBTdHJpbmcga2V5SWRlbnRpZmllckZvcktleUV2ZW50
KE5TRXZlbnQqIGV2ZW50KQotewotICAgIGlmIChbZXZlbnQgdHlwZV0gPT0gTlNGbGFnc0NoYW5n
ZWQpCi0gICAgICAgIHN3aXRjaCAoW2V2ZW50IGtleUNvZGVdKSB7Ci0gICAgICAgICAgICBjYXNl
IDU0OiAvLyBSaWdodCBDb21tYW5kCi0gICAgICAgICAgICBjYXNlIDU1OiAvLyBMZWZ0IENvbW1h
bmQKLSAgICAgICAgICAgICAgICByZXR1cm4gIk1ldGEiOwotCi0gICAgICAgICAgICBjYXNlIDU3
OiAvLyBDYXBzbG9jawotICAgICAgICAgICAgICAgIHJldHVybiAiQ2Fwc0xvY2siOwotCi0gICAg
ICAgICAgICBjYXNlIDU2OiAvLyBMZWZ0IFNoaWZ0Ci0gICAgICAgICAgICBjYXNlIDYwOiAvLyBS
aWdodCBTaGlmdAotICAgICAgICAgICAgICAgIHJldHVybiAiU2hpZnQiOwotCi0gICAgICAgICAg
ICBjYXNlIDU4OiAvLyBMZWZ0IEFsdAotICAgICAgICAgICAgY2FzZSA2MTogLy8gUmlnaHQgQWx0
Ci0gICAgICAgICAgICAgICAgcmV0dXJuICJBbHQiOwotCi0gICAgICAgICAgICBjYXNlIDU5OiAv
LyBMZWZ0IEN0cmwKLSAgICAgICAgICAgIGNhc2UgNjI6IC8vIFJpZ2h0IEN0cmwKLSAgICAgICAg
ICAgICAgICByZXR1cm4gIkNvbnRyb2wiOwotCi0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgIHJldHVybiAi
IjsKLSAgICAgICAgfQotCi0gICAgTlNTdHJpbmcgKnMgPSBbZXZlbnQgY2hhcmFjdGVyc0lnbm9y
aW5nTW9kaWZpZXJzXTsKLSAgICBpZiAoW3MgbGVuZ3RoXSAhPSAxKSB7Ci0gICAgICAgIExPRyhF
dmVudHMsICJyZWNlaXZlZCBhbiB1bmV4cGVjdGVkIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIGtl
eSBldmVudDogJXUiLCBbcyBsZW5ndGhdKTsKLSAgICAgICAgcmV0dXJuICJVbmlkZW50aWZpZWQi
OwotICAgIH0KLSAgICByZXR1cm4ga2V5SWRlbnRpZmllckZvckNoYXJDb2RlKFtzIGNoYXJhY3Rl
ckF0SW5kZXg6MF0pOwotfQotCi1zdGF0aWMgaW50IHdpbmRvd3NLZXlDb2RlRm9yS2V5RXZlbnQo
TlNFdmVudCAqZXZlbnQpCi17Ci0gICAgaW50IGNvZGUgPSAwOwotICAgIC8vIFRoZXJlIGFyZSBz
ZXZlcmFsIGtpbmRzIG9mIGNoYXJhY3RlcnMgZm9yIHdoaWNoIHdlIHByb2R1Y2Uga2V5IGNvZGUg
ZnJvbSBjaGFyIGNvZGU6Ci0gICAgLy8gMS4gUm9tYW4gbGV0dGVycy4gV2luZG93cyBrZXlib2Fy
ZCBsYXlvdXRzIGFmZmVjdCBib3RoIHZpcnR1YWwga2V5IGNvZGVzIGFuZCBjaGFyYWN0ZXIgY29k
ZXMgZm9yIHRoZXNlLAotICAgIC8vICAgIHNvIGUuZy4gJ0EnIGdldHMgdGhlIHNhbWUga2V5Q29k
ZSBvbiBRV0VSVFksIEFaRVJUWSBvciBEdm9yYWsgbGF5b3V0cy4KLSAgICAvLyAyLiBLZXlzIGZv
ciB3aGljaCB0aGVyZSBpcyBubyBrbm93biBNYWMgdmlydHVhbCBrZXkgY29kZXMsIGxpa2UgUHJp
bnRTY3JlZW4uCi0gICAgLy8gMy4gQ2VydGFpbiBwdW5jdHVhdGlvbiBrZXlzLiBPbiBXaW5kb3dz
LCB0aGVzZSBhcmUgYWxzbyByZW1hcHBlZCBkZXBlbmRpbmcgb24gY3VycmVudCBrZXlib2FyZCBs
YXlvdXQsCi0gICAgLy8gICAgYnV0IHNlZSBjb21tZW50IGluIHdpbmRvd3NLZXlDb2RlRm9yQ2hh
ckNvZGUoKS4KLSAgICBpZiAoW2V2ZW50IHR5cGVdID09IE5TS2V5RG93biB8fCBbZXZlbnQgdHlw
ZV0gPT0gTlNLZXlVcCkgewotICAgICAgICAvLyBDbWQgc3dpdGNoZXMgUm9tYW4gbGV0dGVycyBm
b3IgRHZvcmFrLVFXRVJUWSBsYXlvdXQsIHNvIHRyeSBtb2RpZmllZCBjaGFyYWN0ZXJzIGZpcnN0
LgotICAgICAgICBOU1N0cmluZyogcyA9IFtldmVudCBjaGFyYWN0ZXJzXTsKLSAgICAgICAgY29k
ZSA9IFtzIGxlbmd0aF0gPiAwID8gd2luZG93c0tleUNvZGVGb3JDaGFyQ29kZShbcyBjaGFyYWN0
ZXJBdEluZGV4OjBdKSA6IDA7Ci0gICAgICAgIGlmIChjb2RlKQotICAgICAgICAgICAgcmV0dXJu
IGNvZGU7Ci0KLSAgICAgICAgLy8gQ3RybCtBIG9uIGFuIEFaRVJUWSBrZXlib2FyZCB3b3VsZCBn
ZXQgVktfUSBrZXlDb2RlIGlmIHdlIHJlbGllZCBvbiAtW05TRXZlbnQga2V5Q29kZV0gYmVsb3cu
Ci0gICAgICAgIHMgPSBbZXZlbnQgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzXTsKLSAgICAg
ICAgY29kZSA9IFtzIGxlbmd0aF0gPiAwID8gd2luZG93c0tleUNvZGVGb3JDaGFyQ29kZShbcyBj
aGFyYWN0ZXJBdEluZGV4OjBdKSA6IDA7Ci0gICAgICAgIGlmIChjb2RlKQotICAgICAgICAgICAg
cmV0dXJuIGNvZGU7Ci0gICAgfQotCi0gICAgLy8gTWFwIE1hYyB2aXJ0dWFsIGtleSBjb2RlIGRp
cmVjdGx5IHRvIFdpbmRvd3Mgb25lIGZvciBhbnkga2V5cyBub3QgaGFuZGxlZCBhYm92ZS4KLSAg
ICAvLyBFLmcuIHRoZSBrZXkgbmV4dCB0byBDYXBzIExvY2sgaGFzIHRoZSBzYW1lIEV2ZW50Lmtl
eUNvZGUgb24gVS5TLiBrZXlib2FyZCAoJ0EnKSBhbmQgb24gUnVzc2lhbiBrZXlib2FyZCAoQ1lS
SUxMSUMgTEVUVEVSIEVGKS4KLSAgICByZXR1cm4gd2luZG93c0tleUNvZGVGb3JLZXlDb2RlKFtl
dmVudCBrZXlDb2RlXSk7Ci19Ci0KLVBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXli
b2FyZEV2ZW50KE5TRXZlbnQgKmV2ZW50KQotICAgIDogUGxhdGZvcm1FdmVudChpc0tleVVwRXZl
bnQoZXZlbnQpID8gUGxhdGZvcm1FdmVudDo6S2V5VXAgOiBQbGF0Zm9ybUV2ZW50OjpLZXlEb3du
LCBbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU1NoaWZ0S2V5TWFzaywgW2V2ZW50IG1vZGlmaWVy
RmxhZ3NdICYgTlNDb250cm9sS2V5TWFzaywgW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNBbHRl
cm5hdGVLZXlNYXNrLCBbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0NvbW1hbmRLZXlNYXNrLCBb
ZXZlbnQgdGltZXN0YW1wXSkKLSAgICAsIG1fdGV4dCh0ZXh0RnJvbUV2ZW50KGV2ZW50KSkKLSAg
ICAsIG1fdW5tb2RpZmllZFRleHQodW5tb2RpZmllZFRleHRGcm9tRXZlbnQoZXZlbnQpKQotICAg
ICwgbV9rZXlJZGVudGlmaWVyKGtleUlkZW50aWZpZXJGb3JLZXlFdmVudChldmVudCkpCi0gICAg
LCBtX2F1dG9SZXBlYXQoKFtldmVudCB0eXBlXSAhPSBOU0ZsYWdzQ2hhbmdlZCkgJiYgW2V2ZW50
IGlzQVJlcGVhdF0pCi0gICAgLCBtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSh3aW5kb3dzS2V5Q29k
ZUZvcktleUV2ZW50KGV2ZW50KSkKLSAgICAsIG1fbmF0aXZlVmlydHVhbEtleUNvZGUoW2V2ZW50
IGtleUNvZGVdKQotICAgICwgbV9pc0tleXBhZChpc0tleXBhZEV2ZW50KGV2ZW50KSkKLSAgICAs
IG1fbWFjRXZlbnQoZXZlbnQpCi17Ci0gICAgLy8gQWx3YXlzIHVzZSAxMyBmb3IgRW50ZXIvUmV0
dXJuIC0tIHdlIGRvbid0IHdhbnQgdG8gdXNlIEFwcEtpdCdzIGRpZmZlcmVudCBjaGFyYWN0ZXIg
Zm9yIEVudGVyLgotICAgIGlmIChtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSA9PSBWS19SRVRVUk4p
IHsKLSAgICAgICAgbV90ZXh0ID0gIlxyIjsKLSAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9ICJc
ciI7Ci0gICAgfQotCi0gICAgLy8gQXBwS2l0IHNldHMgdGV4dCB0byAiXHg3RiIgZm9yIGJhY2tz
cGFjZSwgYnV0IHRoZSBjb3JyZWN0IEtleWJvYXJkRXZlbnQgY2hhcmFjdGVyIGNvZGUgaXMgOC4K
LSAgICBpZiAobV93aW5kb3dzVmlydHVhbEtleUNvZGUgPT0gVktfQkFDSykgewotICAgICAgICBt
X3RleHQgPSAiXHg4IjsKLSAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9ICJceDgiOwotICAgIH0K
LQotICAgIC8vIEFsd2F5cyB1c2UgOSBmb3IgVGFiIC0tIHdlIGRvbid0IHdhbnQgdG8gdXNlIEFw
cEtpdCdzIGRpZmZlcmVudCBjaGFyYWN0ZXIgZm9yIHNoaWZ0LXRhYi4KLSAgICBpZiAobV93aW5k
b3dzVmlydHVhbEtleUNvZGUgPT0gVktfVEFCKSB7Ci0gICAgICAgIG1fdGV4dCA9ICJceDkiOwot
ICAgICAgICBtX3VubW9kaWZpZWRUZXh0ID0gIlx4OSI7Ci0gICAgfQotfQotCiB2b2lkIFBsYXRm
b3JtS2V5Ym9hcmRFdmVudDo6ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFR5cGUgdHlwZSwgYm9v
bCBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKQogewogICAgIC8vIENhbiBvbmx5IGNoYW5nZSB0
eXBlIGZyb20gS2V5RG93biB0byBSYXdLZXlEb3duIG9yIENoYXIsIGFzIHdlIGxhY2sgaW5mb3Jt
YXRpb24gZm9yIG90aGVyIGNvbnZlcnNpb25zLgpAQCAtMjU3LDYgKzc2LDYgQEAgdm9pZCBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQ6OmdldEN1cnJlbnRNb2RpZmllclN0YXRlKGJvb2wmIHNoaWZ0S2V5
LCBib29sJiBjdHJsS2UKICAgICBtZXRhS2V5ID0gY3VycmVudE1vZGlmaWVycyAmIDo6Y21kS2V5
OwogfQogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBQTEFURk9STShN
QUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1FdmVu
dEZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFj
dG9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmY4ZDIyOGRmMTNkNzU3NGQzMTY2NTM3YWY0ZTI5YThjN2JhYjJk
NjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZv
cm1FdmVudEZhY3RvcnkuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQ
bGF0Zm9ybUV2ZW50RmFjdG9yeV9oCisjZGVmaW5lIFBsYXRmb3JtRXZlbnRGYWN0b3J5X2gKKwor
I2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxF
dmVudC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgorI2lmIEVOQUJMRShH
RVNUVVJFX0VWRU5UUykKKyNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVFdmVudC5oIgorI2VuZGlm
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGxhdGZvcm1FdmVudEZhY3Rvcnkgewor
cHVibGljOgorICAgIHN0YXRpYyBQbGF0Zm9ybU1vdXNlRXZlbnQgY3JlYXRlUGxhdGZvcm1Nb3Vz
ZUV2ZW50KE5TRXZlbnQgKiwgTlNWaWV3ICp3aW5kb3dWaWV3KTsKKyAgICBzdGF0aWMgUGxhdGZv
cm1XaGVlbEV2ZW50IGNyZWF0ZVBsYXRmb3JtV2hlZWxFdmVudChOU0V2ZW50ICosIE5TVmlldyAq
d2luZG93Vmlldyk7CisgICAgc3RhdGljIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBjcmVhdGVQbGF0
Zm9ybUtleWJvYXJkRXZlbnQoTlNFdmVudCAqKTsKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMp
CisgICAgc3RhdGljIFBsYXRmb3JtR2VzdHVyZUV2ZW50IGNyZWF0ZVBsYXRmb3JtR2VzdHVyZUV2
ZW50KE5TRXZlbnQgKiwgTlNWaWV3ICp3aW5kb3dWaWV3KTsKKyNlbmRpZgorfTsKKworLy8gRklY
TUU6IFRoaXMgZG9lc24ndCByZWFsbHkgYmVsb25nIGhlcmUuCisKKyNpZiBQTEFURk9STShNQUMp
ICYmIGRlZmluZWQoX19PQkpDX18pCitJbnRQb2ludCBnbG9iYWxQb2ludChjb25zdCBOU1BvaW50
JiB3aW5kb3dQb2ludCwgTlNXaW5kb3cgKik7CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gUGxhdGZvcm1FdmVudEZhY3RvcnlfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5Lm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5Lm1tCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmE1NmIzODg2ZWMxNmNjMzU3MzYzNDViYjQxNDlmYzkxY2FkNWM0MDIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnkubW0K
QEAgLTAsMCArMSw1MzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUGxhdGZvcm1FdmVudEZhY3RvcnkuaCIKKworI2ltcG9ydCAiS2V5RXZlbnRDb2NvYS5o
IgorI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCAiUGxhdGZvcm1TY3JlZW4uaCIKKyNpbXBv
cnQgIlNjcm9sbGJhci5oIgorI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgorI2lt
cG9ydCAiV2luZG93c0tleWJvYXJkQ29kZXMuaCIKKyNpbXBvcnQgPHd0Zi9BU0NJSUNUeXBlLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSW50UG9pbnQgZ2xvYmFsUG9pbnQoY29uc3QgTlNQ
b2ludCYgd2luZG93UG9pbnQsIE5TV2luZG93ICp3aW5kb3cpCit7CisgICAgcmV0dXJuIEludFBv
aW50KGZsaXBTY3JlZW5Qb2ludChbd2luZG93IGNvbnZlcnRCYXNlVG9TY3JlZW46d2luZG93UG9p
bnRdLCBzY3JlZW5Gb3JXaW5kb3cod2luZG93KSkpOworfQorCitzdGF0aWMgSW50UG9pbnQgZ2xv
YmFsUG9pbnRGb3JFdmVudChOU0V2ZW50ICpldmVudCkKK3sKKyAgICBzd2l0Y2ggKFtldmVudCB0
eXBlXSkgeworICAgICAgICBjYXNlIE5TTGVmdE1vdXNlRG93bjoKKyAgICAgICAgY2FzZSBOU0xl
ZnRNb3VzZURyYWdnZWQ6CisgICAgICAgIGNhc2UgTlNMZWZ0TW91c2VVcDoKKyAgICAgICAgY2Fz
ZSBOU01vdXNlRW50ZXJlZDoKKyAgICAgICAgY2FzZSBOU01vdXNlRXhpdGVkOgorICAgICAgICBj
YXNlIE5TTW91c2VNb3ZlZDoKKyAgICAgICAgY2FzZSBOU090aGVyTW91c2VEb3duOgorICAgICAg
ICBjYXNlIE5TT3RoZXJNb3VzZURyYWdnZWQ6CisgICAgICAgIGNhc2UgTlNPdGhlck1vdXNlVXA6
CisgICAgICAgIGNhc2UgTlNSaWdodE1vdXNlRG93bjoKKyAgICAgICAgY2FzZSBOU1JpZ2h0TW91
c2VEcmFnZ2VkOgorICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZVVwOgorICAgICAgICBjYXNlIE5T
U2Nyb2xsV2hlZWw6CisgICAgICAgICAgICByZXR1cm4gZ2xvYmFsUG9pbnQoW2V2ZW50IGxvY2F0
aW9uSW5XaW5kb3ddLCBbZXZlbnQgd2luZG93XSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICByZXR1cm4gSW50UG9pbnQoKTsKKyAgICB9Cit9CisKK3N0YXRpYyBJbnRQb2ludCBwb2lu
dEZvckV2ZW50KE5TRXZlbnQgKmV2ZW50LCBOU1ZpZXcgKndpbmRvd1ZpZXcpCit7CisgICAgc3dp
dGNoIChbZXZlbnQgdHlwZV0pIHsKKyAgICAgICAgY2FzZSBOU0xlZnRNb3VzZURvd246CisgICAg
ICAgIGNhc2UgTlNMZWZ0TW91c2VEcmFnZ2VkOgorICAgICAgICBjYXNlIE5TTGVmdE1vdXNlVXA6
CisgICAgICAgIGNhc2UgTlNNb3VzZUVudGVyZWQ6CisgICAgICAgIGNhc2UgTlNNb3VzZUV4aXRl
ZDoKKyAgICAgICAgY2FzZSBOU01vdXNlTW92ZWQ6CisgICAgICAgIGNhc2UgTlNPdGhlck1vdXNl
RG93bjoKKyAgICAgICAgY2FzZSBOU090aGVyTW91c2VEcmFnZ2VkOgorICAgICAgICBjYXNlIE5T
T3RoZXJNb3VzZVVwOgorICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZURvd246CisgICAgICAgIGNh
c2UgTlNSaWdodE1vdXNlRHJhZ2dlZDoKKyAgICAgICAgY2FzZSBOU1JpZ2h0TW91c2VVcDoKKyAg
ICAgICAgY2FzZSBOU1Njcm9sbFdoZWVsOiB7CisgICAgICAgICAgICAvLyBOb3RlOiBUaGlzIHdp
bGwgaGF2ZSBpdHMgb3JpZ2luIGF0IHRoZSBib3R0b20gbGVmdCBvZiB0aGUgd2luZG93IHVubGVz
cyB3aW5kb3dWaWV3IGlzIGZsaXBwZWQuCisgICAgICAgICAgICAvLyBJbiB0aG9zZSBjYXNlcywg
dGhlIFkgY29vcmRpbmF0ZSBnZXRzIGZsaXBwZWQgYnkgV2lkZ2V0Ojpjb252ZXJ0RnJvbUNvbnRh
aW5pbmdXaW5kb3cuCisgICAgICAgICAgICBOU1BvaW50IGxvY2F0aW9uID0gW2V2ZW50IGxvY2F0
aW9uSW5XaW5kb3ddOworICAgICAgICAgICAgaWYgKHdpbmRvd1ZpZXcpCisgICAgICAgICAgICAg
ICAgbG9jYXRpb24gPSBbd2luZG93VmlldyBjb252ZXJ0UG9pbnQ6bG9jYXRpb24gZnJvbVZpZXc6
bmlsXTsKKyAgICAgICAgICAgIHJldHVybiBJbnRQb2ludChsb2NhdGlvbik7CisgICAgICAgIH0K
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBJbnRQb2ludCgpOworICAgIH0K
K30KKworc3RhdGljIE1vdXNlQnV0dG9uIG1vdXNlQnV0dG9uRm9yRXZlbnQoTlNFdmVudCAqZXZl
bnQpCit7CisgICAgc3dpdGNoIChbZXZlbnQgdHlwZV0pIHsKKyAgICAgICAgY2FzZSBOU0xlZnRN
b3VzZURvd246CisgICAgICAgIGNhc2UgTlNMZWZ0TW91c2VVcDoKKyAgICAgICAgY2FzZSBOU0xl
ZnRNb3VzZURyYWdnZWQ6CisgICAgICAgICAgICByZXR1cm4gTGVmdEJ1dHRvbjsKKyAgICAgICAg
Y2FzZSBOU1JpZ2h0TW91c2VEb3duOgorICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZVVwOgorICAg
ICAgICBjYXNlIE5TUmlnaHRNb3VzZURyYWdnZWQ6CisgICAgICAgICAgICByZXR1cm4gUmlnaHRC
dXR0b247CisgICAgICAgIGNhc2UgTlNPdGhlck1vdXNlRG93bjoKKyAgICAgICAgY2FzZSBOU090
aGVyTW91c2VVcDoKKyAgICAgICAgY2FzZSBOU090aGVyTW91c2VEcmFnZ2VkOgorICAgICAgICAg
ICAgcmV0dXJuIE1pZGRsZUJ1dHRvbjsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJl
dHVybiBOb0J1dHRvbjsKKyAgICB9Cit9CisKK3N0YXRpYyBQbGF0Zm9ybUV2ZW50OjpUeXBlIG1v
dXNlRXZlbnRUeXBlRm9yRXZlbnQoTlNFdmVudCogZXZlbnQpCit7CisgICAgc3dpdGNoIChbZXZl
bnQgdHlwZV0pIHsKKyAgICAgICAgY2FzZSBOU0xlZnRNb3VzZURyYWdnZWQ6CisgICAgICAgIGNh
c2UgTlNNb3VzZUVudGVyZWQ6CisgICAgICAgIGNhc2UgTlNNb3VzZUV4aXRlZDoKKyAgICAgICAg
Y2FzZSBOU01vdXNlTW92ZWQ6CisgICAgICAgIGNhc2UgTlNPdGhlck1vdXNlRHJhZ2dlZDoKKyAg
ICAgICAgY2FzZSBOU1JpZ2h0TW91c2VEcmFnZ2VkOgorICAgICAgICAgICAgcmV0dXJuIFBsYXRm
b3JtRXZlbnQ6Ok1vdXNlTW92ZWQ7CisgICAgICAgIGNhc2UgTlNMZWZ0TW91c2VEb3duOgorICAg
ICAgICBjYXNlIE5TUmlnaHRNb3VzZURvd246CisgICAgICAgIGNhc2UgTlNPdGhlck1vdXNlRG93
bjoKKyAgICAgICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQ7CisgICAg
ICAgIGNhc2UgTlNMZWZ0TW91c2VVcDoKKyAgICAgICAgY2FzZSBOU1JpZ2h0TW91c2VVcDoKKyAg
ICAgICAgY2FzZSBOU090aGVyTW91c2VVcDoKKyAgICAgICAgICAgIHJldHVybiBQbGF0Zm9ybUV2
ZW50OjpNb3VzZVJlbGVhc2VkOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJu
IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQ7CisgICAgfQorfQorCitzdGF0aWMgaW50IGNsaWNr
Q291bnRGb3JFdmVudChOU0V2ZW50ICpldmVudCkKK3sKKyAgICBzd2l0Y2ggKFtldmVudCB0eXBl
XSkgeworICAgICAgICBjYXNlIE5TTGVmdE1vdXNlRG93bjoKKyAgICAgICAgY2FzZSBOU0xlZnRN
b3VzZVVwOgorICAgICAgICBjYXNlIE5TTGVmdE1vdXNlRHJhZ2dlZDoKKyAgICAgICAgY2FzZSBO
U1JpZ2h0TW91c2VEb3duOgorICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZVVwOgorICAgICAgICBj
YXNlIE5TUmlnaHRNb3VzZURyYWdnZWQ6CisgICAgICAgIGNhc2UgTlNPdGhlck1vdXNlRG93bjoK
KyAgICAgICAgY2FzZSBOU090aGVyTW91c2VVcDoKKyAgICAgICAgY2FzZSBOU090aGVyTW91c2VE
cmFnZ2VkOgorICAgICAgICAgICAgcmV0dXJuIFtldmVudCBjbGlja0NvdW50XTsKKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworc3RhdGljIFBsYXRm
b3JtV2hlZWxFdmVudFBoYXNlIG1vbWVudHVtUGhhc2VGb3JFdmVudChOU0V2ZW50ICpldmVudCkK
K3sKKyAgICB1aW50MzJfdCBwaGFzZSA9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlTm9uZTsKKwor
I2lmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09O
X1NOT1dfTEVPUEFSRCkKKyAgICBpZiAoW2V2ZW50IG1vbWVudHVtUGhhc2VdICYgTlNFdmVudFBo
YXNlQmVnYW4pCisgICAgICAgIHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQmVnYW47
CisgICAgaWYgKFtldmVudCBtb21lbnR1bVBoYXNlXSAmIE5TRXZlbnRQaGFzZVN0YXRpb25hcnkp
CisgICAgICAgIHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlU3RhdGlvbmFyeTsKKyAg
ICBpZiAoW2V2ZW50IG1vbWVudHVtUGhhc2VdICYgTlNFdmVudFBoYXNlQ2hhbmdlZCkKKyAgICAg
ICAgcGhhc2UgfD0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VDaGFuZ2VkOworICAgIGlmIChbZXZl
bnQgbW9tZW50dW1QaGFzZV0gJiBOU0V2ZW50UGhhc2VFbmRlZCkKKyAgICAgICAgcGhhc2UgfD0g
UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VFbmRlZDsKKyAgICBpZiAoW2V2ZW50IG1vbWVudHVtUGhh
c2VdICYgTlNFdmVudFBoYXNlQ2FuY2VsbGVkKQorICAgICAgICBwaGFzZSB8PSBQbGF0Zm9ybVdo
ZWVsRXZlbnRQaGFzZUNhbmNlbGxlZDsKKyNlbHNlCisgICAgc3dpdGNoICh3a0dldE5TRXZlbnRN
b21lbnR1bVBoYXNlKGV2ZW50KSkgeworICAgIGNhc2Ugd2tFdmVudFBoYXNlTm9uZToKKyAgICAg
ICAgcGhhc2UgPSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmU7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2Ugd2tFdmVudFBoYXNlQmVnYW46CisgICAgICAgIHBoYXNlID0gUGxhdGZvcm1XaGVl
bEV2ZW50UGhhc2VCZWdhbjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSB3a0V2ZW50UGhhc2VD
aGFuZ2VkOgorICAgICAgICBwaGFzZSA9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQ2hhbmdlZDsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSB3a0V2ZW50UGhhc2VFbmRlZDoKKyAgICAgICAgcGhh
c2UgPSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUVuZGVkOworICAgICAgICBicmVhazsKKyAgICB9
CisjZW5kaWYKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxQbGF0Zm9ybVdoZWVsRXZlbnRQaGFz
ZT4ocGhhc2UpOworfQorCitzdGF0aWMgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgcGhhc2VGb3JF
dmVudChOU0V2ZW50ICpldmVudCkKK3sKKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJE
KSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCisgICAgdWludDMyX3QgcGhh
c2UgPSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmU7IAorICAgIGlmIChbZXZlbnQgcGhhc2Vd
ICYgTlNFdmVudFBoYXNlQmVnYW4pCisgICAgICAgIHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVu
dFBoYXNlQmVnYW47CisgICAgaWYgKFtldmVudCBwaGFzZV0gJiBOU0V2ZW50UGhhc2VTdGF0aW9u
YXJ5KQorICAgICAgICBwaGFzZSB8PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZVN0YXRpb25hcnk7
CisgICAgaWYgKFtldmVudCBwaGFzZV0gJiBOU0V2ZW50UGhhc2VDaGFuZ2VkKQorICAgICAgICBw
aGFzZSB8PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUNoYW5nZWQ7CisgICAgaWYgKFtldmVudCBw
aGFzZV0gJiBOU0V2ZW50UGhhc2VFbmRlZCkKKyAgICAgICAgcGhhc2UgfD0gUGxhdGZvcm1XaGVl
bEV2ZW50UGhhc2VFbmRlZDsKKyAgICBpZiAoW2V2ZW50IHBoYXNlXSAmIE5TRXZlbnRQaGFzZUNh
bmNlbGxlZCkKKyAgICAgICAgcGhhc2UgfD0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VDYW5jZWxs
ZWQ7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlPihwaGFz
ZSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShldmVudCk7CisgICAgcmV0dXJuIFBsYXRmb3Jt
V2hlZWxFdmVudFBoYXNlTm9uZTsKKyNlbmRpZgorfQorCisjaWYgRU5BQkxFKEdFU1RVUkVfRVZF
TlRTKQorc3RhdGljIFBsYXRmb3JtRXZlbnQ6OlR5cGUgZ2VzdHVyZUV2ZW50VHlwZUZvckV2ZW50
KE5TRXZlbnQgKmV2ZW50KQoreworICAgIHN3aXRjaCAoW2V2ZW50IHR5cGVdKSB7CisgICAgY2Fz
ZSBOU0V2ZW50VHlwZUJlZ2luR2VzdHVyZToKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6
Okdlc3R1cmVTY3JvbGxCZWdpbjsKKyAgICBjYXNlIE5TRXZlbnRUeXBlRW5kR2VzdHVyZToKKyAg
ICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBQbGF0Zm9y
bUV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kOworICAgIH0KK30KKyNlbmRpZgorCitzdGF0aWMgaW5s
aW5lIFN0cmluZyB0ZXh0RnJvbUV2ZW50KE5TRXZlbnQqIGV2ZW50KQoreworICAgIGlmIChbZXZl
bnQgdHlwZV0gPT0gTlNGbGFnc0NoYW5nZWQpCisgICAgICAgIHJldHVybiBTdHJpbmcoIiIpOwor
ICAgIHJldHVybiBTdHJpbmcoW2V2ZW50IGNoYXJhY3RlcnNdKTsKK30KKworc3RhdGljIGlubGlu
ZSBTdHJpbmcgdW5tb2RpZmllZFRleHRGcm9tRXZlbnQoTlNFdmVudCogZXZlbnQpCit7CisgICAg
aWYgKFtldmVudCB0eXBlXSA9PSBOU0ZsYWdzQ2hhbmdlZCkKKyAgICAgICAgcmV0dXJuIFN0cmlu
ZygiIik7CisgICAgcmV0dXJuIFN0cmluZyhbZXZlbnQgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZp
ZXJzXSk7Cit9CisKK3N0YXRpYyBTdHJpbmcga2V5SWRlbnRpZmllckZvcktleUV2ZW50KE5TRXZl
bnQqIGV2ZW50KQoreworICAgIGlmIChbZXZlbnQgdHlwZV0gPT0gTlNGbGFnc0NoYW5nZWQpIAor
ICAgICAgICBzd2l0Y2ggKFtldmVudCBrZXlDb2RlXSkgeworICAgICAgICAgICAgY2FzZSA1NDog
Ly8gUmlnaHQgQ29tbWFuZAorICAgICAgICAgICAgY2FzZSA1NTogLy8gTGVmdCBDb21tYW5kCisg
ICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZygiTWV0YSIpOworICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgY2FzZSA1NzogLy8gQ2Fwc2xvY2sKKyAgICAgICAgICAgICAgICByZXR1cm4g
U3RyaW5nKCJDYXBzTG9jayIpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgY2FzZSA1
NjogLy8gTGVmdCBTaGlmdAorICAgICAgICAgICAgY2FzZSA2MDogLy8gUmlnaHQgU2hpZnQKKyAg
ICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCJTaGlmdCIpOworICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgY2FzZSA1ODogLy8gTGVmdCBBbHQKKyAgICAgICAgICAgIGNhc2UgNjE6IC8v
IFJpZ2h0IEFsdAorICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoIkFsdCIpOworICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgY2FzZSA1OTogLy8gTGVmdCBDdHJsCisgICAgICAgICAg
ICBjYXNlIDYyOiAvLyBSaWdodCBDdHJsCisgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZygi
Q29udHJvbCIpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
U3RyaW5nKCIiKTsKKyAgICAgICAgfQorICAgIAorICAgIE5TU3RyaW5nICpzID0gW2V2ZW50IGNo
YXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyc107CisgICAgaWYgKFtzIGxlbmd0aF0gIT0gMSkgewor
ICAgICAgICBMT0coRXZlbnRzLCAicmVjZWl2ZWQgYW4gdW5leHBlY3RlZCBudW1iZXIgb2YgY2hh
cmFjdGVycyBpbiBrZXkgZXZlbnQ6ICV1IiwgW3MgbGVuZ3RoXSk7CisgICAgICAgIHJldHVybiAi
VW5pZGVudGlmaWVkIjsKKyAgICB9CisgICAgcmV0dXJuIGtleUlkZW50aWZpZXJGb3JDaGFyQ29k
ZShbcyBjaGFyYWN0ZXJBdEluZGV4OjBdKTsKK30KKworc3RhdGljIGJvb2wgaXNLZXlwYWRFdmVu
dChOU0V2ZW50KiBldmVudCkKK3sKKyAgICAvLyBDaGVjayB0aGF0IHRoaXMgaXMgdGhlIHR5cGUg
b2YgZXZlbnQgdGhhdCBoYXMgYSBrZXlDb2RlLgorICAgIHN3aXRjaCAoW2V2ZW50IHR5cGVdKSB7
CisgICAgICAgIGNhc2UgTlNLZXlEb3duOgorICAgICAgICBjYXNlIE5TS2V5VXA6CisgICAgICAg
IGNhc2UgTlNGbGFnc0NoYW5nZWQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoW2V2ZW50IG1v
ZGlmaWVyRmxhZ3NdICYgTlNOdW1lcmljUGFkS2V5TWFzaykKKyAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICBzd2l0Y2ggKFtldmVudCBrZXlDb2RlXSkgeworICAgICAgICBjYXNlIDcxOiAvLyBD
bGVhcgorICAgICAgICBjYXNlIDgxOiAvLyA9CisgICAgICAgIGNhc2UgNzU6IC8vIC8KKyAgICAg
ICAgY2FzZSA2NzogLy8gKgorICAgICAgICBjYXNlIDc4OiAvLyAtCisgICAgICAgIGNhc2UgNjk6
IC8vICsKKyAgICAgICAgY2FzZSA3NjogLy8gRW50ZXIKKyAgICAgICAgY2FzZSA2NTogLy8gLgor
ICAgICAgICBjYXNlIDgyOiAvLyAwCisgICAgICAgIGNhc2UgODM6IC8vIDEKKyAgICAgICAgY2Fz
ZSA4NDogLy8gMgorICAgICAgICBjYXNlIDg1OiAvLyAzCisgICAgICAgIGNhc2UgODY6IC8vIDQK
KyAgICAgICAgY2FzZSA4NzogLy8gNQorICAgICAgICBjYXNlIDg4OiAvLyA2CisgICAgICAgIGNh
c2UgODk6IC8vIDcKKyAgICAgICAgY2FzZSA5MTogLy8gOAorICAgICAgICBjYXNlIDkyOiAvLyA5
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgfQorICAgICAKKyAgICAgcmV0dXJuIGZh
bHNlOworfQorCitzdGF0aWMgaW50IHdpbmRvd3NLZXlDb2RlRm9yS2V5RXZlbnQoTlNFdmVudCog
ZXZlbnQpCit7CisgICAgaW50IGNvZGUgPSAwOworICAgIC8vIFRoZXJlIGFyZSBzZXZlcmFsIGtp
bmRzIG9mIGNoYXJhY3RlcnMgZm9yIHdoaWNoIHdlIHByb2R1Y2Uga2V5IGNvZGUgZnJvbSBjaGFy
IGNvZGU6CisgICAgLy8gMS4gUm9tYW4gbGV0dGVycy4gV2luZG93cyBrZXlib2FyZCBsYXlvdXRz
IGFmZmVjdCBib3RoIHZpcnR1YWwga2V5IGNvZGVzIGFuZCBjaGFyYWN0ZXIgY29kZXMgZm9yIHRo
ZXNlLAorICAgIC8vICAgIHNvIGUuZy4gJ0EnIGdldHMgdGhlIHNhbWUga2V5Q29kZSBvbiBRV0VS
VFksIEFaRVJUWSBvciBEdm9yYWsgbGF5b3V0cy4KKyAgICAvLyAyLiBLZXlzIGZvciB3aGljaCB0
aGVyZSBpcyBubyBrbm93biBNYWMgdmlydHVhbCBrZXkgY29kZXMsIGxpa2UgUHJpbnRTY3JlZW4u
CisgICAgLy8gMy4gQ2VydGFpbiBwdW5jdHVhdGlvbiBrZXlzLiBPbiBXaW5kb3dzLCB0aGVzZSBh
cmUgYWxzbyByZW1hcHBlZCBkZXBlbmRpbmcgb24gY3VycmVudCBrZXlib2FyZCBsYXlvdXQsCisg
ICAgLy8gICAgYnV0IHNlZSBjb21tZW50IGluIHdpbmRvd3NLZXlDb2RlRm9yQ2hhckNvZGUoKS4K
KyAgICBpZiAoW2V2ZW50IHR5cGVdID09IE5TS2V5RG93biB8fCBbZXZlbnQgdHlwZV0gPT0gTlNL
ZXlVcCkgeworICAgICAgICAvLyBDbWQgc3dpdGNoZXMgUm9tYW4gbGV0dGVycyBmb3IgRHZvcmFr
LVFXRVJUWSBsYXlvdXQsIHNvIHRyeSBtb2RpZmllZCBjaGFyYWN0ZXJzIGZpcnN0LgorICAgICAg
ICBOU1N0cmluZyogcyA9IFtldmVudCBjaGFyYWN0ZXJzXTsKKyAgICAgICAgY29kZSA9IFtzIGxl
bmd0aF0gPiAwID8gd2luZG93c0tleUNvZGVGb3JDaGFyQ29kZShbcyBjaGFyYWN0ZXJBdEluZGV4
OjBdKSA6IDA7CisgICAgICAgIGlmIChjb2RlKQorICAgICAgICAgICAgcmV0dXJuIGNvZGU7CisK
KyAgICAgICAgLy8gQ3RybCtBIG9uIGFuIEFaRVJUWSBrZXlib2FyZCB3b3VsZCBnZXQgVktfUSBr
ZXlDb2RlIGlmIHdlIHJlbGllZCBvbiAtW05TRXZlbnQga2V5Q29kZV0gYmVsb3cuCisgICAgICAg
IHMgPSBbZXZlbnQgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzXTsKKyAgICAgICAgY29kZSA9
IFtzIGxlbmd0aF0gPiAwID8gd2luZG93c0tleUNvZGVGb3JDaGFyQ29kZShbcyBjaGFyYWN0ZXJB
dEluZGV4OjBdKSA6IDA7CisgICAgICAgIGlmIChjb2RlKQorICAgICAgICAgICAgcmV0dXJuIGNv
ZGU7CisgICAgfQorCisgICAgLy8gTWFwIE1hYyB2aXJ0dWFsIGtleSBjb2RlIGRpcmVjdGx5IHRv
IFdpbmRvd3Mgb25lIGZvciBhbnkga2V5cyBub3QgaGFuZGxlZCBhYm92ZS4KKyAgICAvLyBFLmcu
IHRoZSBrZXkgbmV4dCB0byBDYXBzIExvY2sgaGFzIHRoZSBzYW1lIEV2ZW50LmtleUNvZGUgb24g
VS5TLiBrZXlib2FyZCAoJ0EnKSBhbmQgb24gUnVzc2lhbiBrZXlib2FyZCAoQ1lSSUxMSUMgTEVU
VEVSIEVGKS4KKyAgICByZXR1cm4gd2luZG93c0tleUNvZGVGb3JLZXlDb2RlKFtldmVudCBrZXlD
b2RlXSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0tleVVwRXZlbnQoTlNFdmVudCAqZXZl
bnQpCit7CisgICAgaWYgKFtldmVudCB0eXBlXSAhPSBOU0ZsYWdzQ2hhbmdlZCkKKyAgICAgICAg
cmV0dXJuIFtldmVudCB0eXBlXSA9PSBOU0tleVVwOworICAgIC8vIEZJWE1FOiBUaGlzIGxvZ2lj
IGZhaWxzIGlmIHRoZSB1c2VyIHByZXNzZXMgYm90aCBTaGlmdCBrZXlzIGF0IG9uY2UsIGZvciBl
eGFtcGxlOgorICAgIC8vIHdlIHRyZWF0IHJlbGVhc2luZyBvbmUgb2YgdGhlbSBhcyBrZXlEb3du
LgorICAgIHN3aXRjaCAoW2V2ZW50IGtleUNvZGVdKSB7CisgICAgICAgIGNhc2UgNTQ6IC8vIFJp
Z2h0IENvbW1hbmQKKyAgICAgICAgY2FzZSA1NTogLy8gTGVmdCBDb21tYW5kCisgICAgICAgICAg
ICByZXR1cm4gKFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQ29tbWFuZEtleU1hc2spID09IDA7
CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSA1NzogLy8gQ2Fwc2xvY2sKKyAgICAgICAgICAg
IHJldHVybiAoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNBbHBoYVNoaWZ0S2V5TWFzaykgPT0g
MDsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIDU2OiAvLyBMZWZ0IFNoaWZ0CisgICAgICAg
IGNhc2UgNjA6IC8vIFJpZ2h0IFNoaWZ0CisgICAgICAgICAgICByZXR1cm4gKFtldmVudCBtb2Rp
ZmllckZsYWdzXSAmIE5TU2hpZnRLZXlNYXNrKSA9PSAwOworICAgICAgICAgICAgCisgICAgICAg
IGNhc2UgNTg6IC8vIExlZnQgQWx0CisgICAgICAgIGNhc2UgNjE6IC8vIFJpZ2h0IEFsdAorICAg
ICAgICAgICAgcmV0dXJuIChbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0FsdGVybmF0ZUtleU1h
c2spID09IDA7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSA1OTogLy8gTGVmdCBDdHJsCisg
ICAgICAgIGNhc2UgNjI6IC8vIFJpZ2h0IEN0cmwKKyAgICAgICAgICAgIHJldHVybiAoW2V2ZW50
IG1vZGlmaWVyRmxhZ3NdICYgTlNDb250cm9sS2V5TWFzaykgPT0gMDsKKyAgICAgICAgICAgIAor
ICAgICAgICBjYXNlIDYzOiAvLyBGdW5jdGlvbgorICAgICAgICAgICAgcmV0dXJuIChbZXZlbnQg
bW9kaWZpZXJGbGFnc10gJiBOU0Z1bmN0aW9uS2V5TWFzaykgPT0gMDsKKyAgICB9CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitzdGF0aWMgaW5saW5lIFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVycyBt
b2RpZmllcnNGb3JFdmVudChOU0V2ZW50ICpldmVudCkKK3sKKyAgICB1bnNpZ25lZCBtb2RpZmll
cnMgPSAwOworICAgIGlmIChbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU1NoaWZ0S2V5TWFzaykK
KyAgICAgICAgbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6OlNoaWZ0S2V5OworICAgIGlmIChb
ZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0NvbnRyb2xLZXlNYXNrKQorICAgICAgICBtb2RpZmll
cnMgfD0gUGxhdGZvcm1FdmVudDo6Q3RybEtleTsKKyAgICBpZiAoW2V2ZW50IG1vZGlmaWVyRmxh
Z3NdICYgTlNBbHRlcm5hdGVLZXlNYXNrKQorICAgICAgICBtb2RpZmllcnMgfD0gUGxhdGZvcm1F
dmVudDo6QWx0S2V5OworICAgIGlmIChbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0NvbW1hbmRL
ZXlNYXNrKQorICAgICAgICBtb2RpZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6TWV0YUtleTsKKyAg
ICByZXR1cm4gKFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVycyltb2RpZmllcnM7Cit9CisKKworY2xh
c3MgUGxhdGZvcm1Nb3VzZUV2ZW50QnVpbGRlciA6IHB1YmxpYyBQbGF0Zm9ybU1vdXNlRXZlbnQg
eworcHVibGljOgorICAgIFBsYXRmb3JtTW91c2VFdmVudEJ1aWxkZXIoTlNFdmVudCAqZXZlbnQs
IE5TVmlldyAqd2luZG93VmlldykKKyAgICB7CisgICAgICAgIC8vIFBsYXRmb3JtRXZlbnQKKyAg
ICAgICAgbV90eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBtb3VzZUV2ZW50VHlw
ZUZvckV2ZW50KGV2ZW50KTsKKyAgICAgICAgbV9tb2RpZmllcnMgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBtb2RpZmllcnNGb3JFdmVudChldmVudCk7CisgICAgICAgIG1fdGltZXN0YW1wICAg
ICAgICAgICAgICAgICAgICAgICAgID0gW2V2ZW50IHRpbWVzdGFtcF07CisKKyAgICAgICAgLy8g
UGxhdGZvcm1Nb3VzZUV2ZW50CisgICAgICAgIG1fcG9zaXRpb24gICAgICAgICAgICAgICAgICAg
ICAgICAgID0gcG9pbnRGb3JFdmVudChldmVudCwgd2luZG93Vmlldyk7CisgICAgICAgIG1fZ2xv
YmFsUG9zaXRpb24gICAgICAgICAgICAgICAgICAgID0gZ2xvYmFsUG9pbnRGb3JFdmVudChldmVu
dCk7CisgICAgICAgIG1fYnV0dG9uICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbW91c2VC
dXR0b25Gb3JFdmVudChldmVudCk7CisgICAgICAgIG1fY2xpY2tDb3VudCAgICAgICAgICAgICAg
ICAgICAgICAgID0gY2xpY2tDb3VudEZvckV2ZW50KGV2ZW50KTsKKyAgICAgICAgCisgICAgICAg
IC8vIE1hYyBzcGVjaWZpYworICAgICAgICBtX21vZGlmaWVyRmxhZ3MgICAgICAgICAgICAgICAg
ICAgICA9IFtldmVudCBtb2RpZmllckZsYWdzXTsKKyAgICAgICAgbV9ldmVudE51bWJlciAgICAg
ICAgICAgICAgICAgICAgICAgPSBbZXZlbnQgZXZlbnROdW1iZXJdOworICAgIH0KK307CisKK1Bs
YXRmb3JtTW91c2VFdmVudCBQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1Nb3Vz
ZUV2ZW50KE5TRXZlbnQgKmV2ZW50LCBOU1ZpZXcgKndpbmRvd1ZpZXcpCit7CisgICAgcmV0dXJu
IFBsYXRmb3JtTW91c2VFdmVudEJ1aWxkZXIoZXZlbnQsIHdpbmRvd1ZpZXcpOworfQorCisKK2Ns
YXNzIFBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXIgOiBwdWJsaWMgUGxhdGZvcm1XaGVlbEV2ZW50
IHsKK3B1YmxpYzoKKyAgICBQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyKE5TRXZlbnQgKmV2ZW50
LCBOU1ZpZXcgKndpbmRvd1ZpZXcpCisgICAgeworICAgICAgICAvLyBQbGF0Zm9ybUV2ZW50Cisg
ICAgICAgIG1fdHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gUGxhdGZvcm1FdmVu
dDo6V2hlZWw7CisgICAgICAgIG1fbW9kaWZpZXJzICAgICAgICAgICAgICAgICAgICAgICAgID0g
bW9kaWZpZXJzRm9yRXZlbnQoZXZlbnQpOworICAgICAgICBtX3RpbWVzdGFtcCAgICAgICAgICAg
ICAgICAgICAgICAgICA9IFtldmVudCB0aW1lc3RhbXBdOworCisgICAgICAgIC8vIFBsYXRmb3Jt
V2hlZWxFdmVudAorICAgICAgICBtX3Bvc2l0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICA9
IHBvaW50Rm9yRXZlbnQoZXZlbnQsIHdpbmRvd1ZpZXcpOworICAgICAgICBtX2dsb2JhbFBvc2l0
aW9uICAgICAgICAgICAgICAgICAgICA9IGdsb2JhbFBvaW50Rm9yRXZlbnQoZXZlbnQpOworICAg
ICAgICBtX2dyYW51bGFyaXR5ICAgICAgICAgICAgICAgICAgICAgICA9IFNjcm9sbEJ5UGFnZVdo
ZWVsRXZlbnQ7CisKKyAgICAgICAgQk9PTCBjb250aW51b3VzOworICAgICAgICB3a0dldFdoZWVs
RXZlbnREZWx0YXMoZXZlbnQsICZtX2RlbHRhWCwgJm1fZGVsdGFZLCAmY29udGludW91cyk7Cisg
ICAgICAgIGlmIChjb250aW51b3VzKSB7CisgICAgICAgICAgICBtX3doZWVsVGlja3NYID0gbV9k
ZWx0YVggLyBzdGF0aWNfY2FzdDxmbG9hdD4oU2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgp
KTsKKyAgICAgICAgICAgIG1fd2hlZWxUaWNrc1kgPSBtX2RlbHRhWSAvIHN0YXRpY19jYXN0PGZs
b2F0PihTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCkpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgbV93aGVlbFRpY2tzWCA9IG1fZGVsdGFYOworICAgICAgICAgICAgbV93aGVl
bFRpY2tzWSA9IG1fZGVsdGFZOworICAgICAgICAgICAgbV9kZWx0YVggKj0gc3RhdGljX2Nhc3Q8
ZmxvYXQ+KFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSk7CisgICAgICAgICAgICBtX2Rl
bHRhWSAqPSBzdGF0aWNfY2FzdDxmbG9hdD4oU2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgp
KTsKKyAgICAgICAgfQorCisgICAgICAgIG1fcGhhc2UgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gcGhhc2VGb3JFdmVudChldmVudCk7CisgICAgICAgIG1fbW9tZW50dW1QaGFzZSAgICAg
ICAgICAgICAgICAgICAgID0gbW9tZW50dW1QaGFzZUZvckV2ZW50KGV2ZW50KTsKKyAgICAgICAg
bV9oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzICAgICAgICAgPSBjb250aW51b3VzOworCisjaWYg
SEFWRShJTlZFUlRFRF9XSEVFTF9FVkVOVFMpCisgICAgICAgIG1fZGlyZWN0aW9uSW52ZXJ0ZWRG
cm9tRGV2aWNlICAgICAgID0gW2V2ZW50IGlzRGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlXTsK
KyNlbHNlCisgICAgICAgIG1fZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlICAgICAgID0gZmFs
c2U7CisjZW5kaWYKKyAgICB9Cit9OworCitQbGF0Zm9ybVdoZWVsRXZlbnQgUGxhdGZvcm1FdmVu
dEZhY3Rvcnk6OmNyZWF0ZVBsYXRmb3JtV2hlZWxFdmVudChOU0V2ZW50ICpldmVudCwgTlNWaWV3
ICp3aW5kb3dWaWV3KQoreworICAgIHJldHVybiBQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyKGV2
ZW50LCB3aW5kb3dWaWV3KTsKK30KKworCitjbGFzcyBQbGF0Zm9ybUtleWJvYXJkRXZlbnRCdWls
ZGVyIDogcHVibGljIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCB7CitwdWJsaWM6CisgICAgUGxhdGZv
cm1LZXlib2FyZEV2ZW50QnVpbGRlcihOU0V2ZW50ICpldmVudCkKKyAgICB7CisgICAgICAgIC8v
IFBsYXRmb3JtRXZlbnQKKyAgICAgICAgbV90eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBpc0tleVVwRXZlbnQoZXZlbnQpID8gUGxhdGZvcm1FdmVudDo6S2V5VXAgOiBQbGF0Zm9y
bUV2ZW50OjpLZXlEb3duOworICAgICAgICBtX21vZGlmaWVycyAgICAgICAgICAgICAgICAgICAg
ICAgICA9IG1vZGlmaWVyc0ZvckV2ZW50KGV2ZW50KTsKKyAgICAgICAgbV90aW1lc3RhbXAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBbZXZlbnQgdGltZXN0YW1wXTsKKworICAgICAgICAvLyBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQKKyAgICAgICAgbV90ZXh0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSB0ZXh0RnJvbUV2ZW50KGV2ZW50KTsKKyAgICAgICAgbV91bm1vZGlmaWVkVGV4
dCAgICAgICAgICAgICAgICAgICAgPSB1bm1vZGlmaWVkVGV4dEZyb21FdmVudChldmVudCk7Cisg
ICAgICAgIG1fa2V5SWRlbnRpZmllciAgICAgICAgICAgICAgICAgICAgID0ga2V5SWRlbnRpZmll
ckZvcktleUV2ZW50KGV2ZW50KTsKKyAgICAgICAgbV93aW5kb3dzVmlydHVhbEtleUNvZGUgICAg
ICAgICAgICAgPSB3aW5kb3dzS2V5Q29kZUZvcktleUV2ZW50KGV2ZW50KTsKKyAgICAgICAgbV9u
YXRpdmVWaXJ0dWFsS2V5Q29kZSAgICAgICAgICAgICAgPSBbZXZlbnQga2V5Q29kZV07CisgICAg
ICAgIG1fbWFjQ2hhckNvZGUgICAgICAgICAgICAgICAgICAgICAgID0gd2tHZXROU0V2ZW50S2V5
Q2hhcihldmVudCk7CisgICAgICAgIG1fYXV0b1JlcGVhdCAgICAgICAgICAgICAgICAgICAgICAg
ID0gKFtldmVudCB0eXBlXSAhPSBOU0ZsYWdzQ2hhbmdlZCkgJiYgW2V2ZW50IGlzQVJlcGVhdF07
CisgICAgICAgIG1faXNLZXlwYWQgICAgICAgICAgICAgICAgICAgICAgICAgID0gaXNLZXlwYWRF
dmVudChldmVudCk7CisgICAgICAgIG1faXNTeXN0ZW1LZXkgICAgICAgICAgICAgICAgICAgICAg
ID0gZmFsc2U7IC8vIFN5c3RlbUtleSBpcyBhbHdheXMgZmFsc2Ugb24gdGhlIE1hYy4KKworICAg
ICAgICAvLyBBbHdheXMgdXNlIDEzIGZvciBFbnRlci9SZXR1cm4gLS0gd2UgZG9uJ3Qgd2FudCB0
byB1c2UgQXBwS2l0J3MgZGlmZmVyZW50IGNoYXJhY3RlciBmb3IgRW50ZXIuCisgICAgICAgIGlm
IChtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSA9PSBWS19SRVRVUk4pIHsKKyAgICAgICAgICAgIG1f
dGV4dCA9ICJcciI7CisgICAgICAgICAgICBtX3VubW9kaWZpZWRUZXh0ID0gIlxyIjsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIEFwcEtpdCBzZXRzIHRleHQgdG8gIlx4N0YiIGZvciBiYWNrc3Bh
Y2UsIGJ1dCB0aGUgY29ycmVjdCBLZXlib2FyZEV2ZW50IGNoYXJhY3RlciBjb2RlIGlzIDguCisg
ICAgICAgIGlmIChtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSA9PSBWS19CQUNLKSB7CisgICAgICAg
ICAgICBtX3RleHQgPSAiXHg4IjsKKyAgICAgICAgICAgIG1fdW5tb2RpZmllZFRleHQgPSAiXHg4
IjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEFsd2F5cyB1c2UgOSBmb3IgVGFiIC0tIHdlIGRv
bid0IHdhbnQgdG8gdXNlIEFwcEtpdCdzIGRpZmZlcmVudCBjaGFyYWN0ZXIgZm9yIHNoaWZ0LXRh
Yi4KKyAgICAgICAgaWYgKG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlID09IFZLX1RBQikgeworICAg
ICAgICAgICAgbV90ZXh0ID0gIlx4OSI7CisgICAgICAgICAgICBtX3VubW9kaWZpZWRUZXh0ID0g
Ilx4OSI7CisgICAgICAgIH0KKworICAgICAgICAvLyBNYWMgc3BlY2lmaWMuCisgICAgICAgIG1f
bWFjRXZlbnQgPSBldmVudDsKKyAgICB9Cit9OworCitQbGF0Zm9ybUtleWJvYXJkRXZlbnQgUGxh
dGZvcm1FdmVudEZhY3Rvcnk6OmNyZWF0ZVBsYXRmb3JtS2V5Ym9hcmRFdmVudChOU0V2ZW50ICpl
dmVudCkKK3sKKyAgICByZXR1cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50QnVpbGRlcihldmVudCk7
Cit9CisKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCitjbGFzcyBQbGF0Zm9ybUdlc3R1cmVF
dmVudEJ1aWxkZXIgOiBwdWJsaWMgUGxhdGZvcm1HZXN0dXJlRXZlbnQgeworcHVibGljOgorICAg
IFBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlcihOU0V2ZW50ICpldmVudCwgTlNWaWV3ICp3aW5k
b3dWaWV3KQorICAgIHsKKyAgICAgICAgLy8gUGxhdGZvcm1FdmVudAorICAgICAgICBtX3R5cGUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGdlc3R1cmVFdmVudFR5cGVGb3JFdmVudChl
dmVudCk7CisgICAgICAgIG1fbW9kaWZpZXJzICAgICAgICAgICAgICAgICAgICAgICAgID0gbW9k
aWZpZXJzRm9yRXZlbnQoZXZlbnQpOworICAgICAgICBtX3RpbWVzdGFtcCAgICAgICAgICAgICAg
ICAgICAgICAgICA9IFtldmVudCB0aW1lc3RhbXBdOworCisgICAgICAgIC8vIFBsYXRmb3JtR2Vz
dHVyZUV2ZW50CisgICAgICAgIG1fcG9zaXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgID0g
cG9pbnRGb3JFdmVudChldmVudCwgd2luZG93Vmlldyk7CisgICAgICAgIG1fZ2xvYmFsUG9zaXRp
b24gICAgICAgICAgICAgICAgICAgID0gZ2xvYmFsUG9pbnRGb3JFdmVudChldmVudCk7CisgICAg
ICAgIG1fZGVsdGFYICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMDsKKyAgICAgICAgbV9k
ZWx0YVkgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAwOworICAgIH0KK307CisKK1BsYXRm
b3JtR2VzdHVyZUV2ZW50IFBsYXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQbGF0Zm9ybUdlc3R1
cmVFdmVudChOU0V2ZW50ICpldmVudCwgTlNWaWV3ICp3aW5kb3dWaWV3KQoreworICAgIHJldHVy
biBQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXIoZXZlbnQsIHdpbmRvd1ZpZXcpOworfQorI2Vu
ZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QbGF0Zm9ybU1vdXNlRXZlbnRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGxhdGZvcm1Nb3VzZUV2ZW50TWFjLm1tCmluZGV4IGM1ZjU5ODkwMTJiZjQ4
YTZmMGYzMTJhZTM2ZjdlYzMyZTQzM2NmYmMuLjU3NDhlN2M2OTRhNjYyYjNiYTBiNjRkODc1ODBj
NzYwNDI5YzdiZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0
Zm9ybU1vdXNlRXZlbnRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bs
YXRmb3JtTW91c2VFdmVudE1hYy5tbQpAQCAtMSwxNjkgKzEsMiBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCi0gKi8KIAotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJQbGF0Zm9ybU1vdXNlRXZl
bnQuaCIKLQotI2ltcG9ydCAiUGxhdGZvcm1TY3JlZW4uaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1zdGF0aWMgTW91c2VCdXR0b24gbW91c2VCdXR0b25Gb3JFdmVudChOU0V2ZW50ICpldmVu
dCkKLXsKLSAgICBzd2l0Y2ggKFtldmVudCB0eXBlXSkgewotICAgICAgICBjYXNlIE5TTGVmdE1v
dXNlRG93bjoKLSAgICAgICAgY2FzZSBOU0xlZnRNb3VzZVVwOgotICAgICAgICBjYXNlIE5TTGVm
dE1vdXNlRHJhZ2dlZDoKLSAgICAgICAgICAgIHJldHVybiBMZWZ0QnV0dG9uOwotICAgICAgICBj
YXNlIE5TUmlnaHRNb3VzZURvd246Ci0gICAgICAgIGNhc2UgTlNSaWdodE1vdXNlVXA6Ci0gICAg
ICAgIGNhc2UgTlNSaWdodE1vdXNlRHJhZ2dlZDoKLSAgICAgICAgICAgIHJldHVybiBSaWdodEJ1
dHRvbjsKLSAgICAgICAgY2FzZSBOU090aGVyTW91c2VEb3duOgotICAgICAgICBjYXNlIE5TT3Ro
ZXJNb3VzZVVwOgotICAgICAgICBjYXNlIE5TT3RoZXJNb3VzZURyYWdnZWQ6Ci0gICAgICAgICAg
ICByZXR1cm4gTWlkZGxlQnV0dG9uOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0
dXJuIE5vQnV0dG9uOwotICAgIH0KLX0KLQotc3RhdGljIGludCBjbGlja0NvdW50Rm9yRXZlbnQo
TlNFdmVudCAqZXZlbnQpCi17Ci0gICAgc3dpdGNoIChbZXZlbnQgdHlwZV0pIHsKLSAgICAgICAg
Y2FzZSBOU0xlZnRNb3VzZURvd246Ci0gICAgICAgIGNhc2UgTlNMZWZ0TW91c2VVcDoKLSAgICAg
ICAgY2FzZSBOU0xlZnRNb3VzZURyYWdnZWQ6Ci0gICAgICAgIGNhc2UgTlNSaWdodE1vdXNlRG93
bjoKLSAgICAgICAgY2FzZSBOU1JpZ2h0TW91c2VVcDoKLSAgICAgICAgY2FzZSBOU1JpZ2h0TW91
c2VEcmFnZ2VkOgotICAgICAgICBjYXNlIE5TT3RoZXJNb3VzZURvd246Ci0gICAgICAgIGNhc2Ug
TlNPdGhlck1vdXNlVXA6Ci0gICAgICAgIGNhc2UgTlNPdGhlck1vdXNlRHJhZ2dlZDoKLSAgICAg
ICAgICAgIHJldHVybiBbZXZlbnQgY2xpY2tDb3VudF07Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci19Ci0KLUludFBvaW50IGdsb2JhbFBvaW50KGNvbnN0
IE5TUG9pbnQmIHdpbmRvd1BvaW50LCBOU1dpbmRvdyAqd2luZG93KQotewotICAgIHJldHVybiBJ
bnRQb2ludChmbGlwU2NyZWVuUG9pbnQoW3dpbmRvdyBjb252ZXJ0QmFzZVRvU2NyZWVuOndpbmRv
d1BvaW50XSwgc2NyZWVuRm9yV2luZG93KHdpbmRvdykpKTsKLX0KLQotSW50UG9pbnQgcG9pbnRG
b3JFdmVudChOU0V2ZW50ICpldmVudCwgTlNWaWV3ICp3aW5kb3dWaWV3KQotewotICAgIHN3aXRj
aCAoW2V2ZW50IHR5cGVdKSB7Ci0gICAgICAgIGNhc2UgTlNMZWZ0TW91c2VEb3duOgotICAgICAg
ICBjYXNlIE5TTGVmdE1vdXNlVXA6Ci0gICAgICAgIGNhc2UgTlNMZWZ0TW91c2VEcmFnZ2VkOgot
ICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZURvd246Ci0gICAgICAgIGNhc2UgTlNSaWdodE1vdXNl
VXA6Ci0gICAgICAgIGNhc2UgTlNSaWdodE1vdXNlRHJhZ2dlZDoKLSAgICAgICAgY2FzZSBOU090
aGVyTW91c2VEb3duOgotICAgICAgICBjYXNlIE5TT3RoZXJNb3VzZVVwOgotICAgICAgICBjYXNl
IE5TT3RoZXJNb3VzZURyYWdnZWQ6Ci0gICAgICAgIGNhc2UgTlNNb3VzZU1vdmVkOgotICAgICAg
ICBjYXNlIE5TU2Nyb2xsV2hlZWw6IHsKLSAgICAgICAgICAgIC8vIE5vdGU6IFRoaXMgd2lsbCBo
YXZlIGl0cyBvcmlnaW4gYXQgdGhlIGJvdHRvbSBsZWZ0IG9mIHRoZSB3aW5kb3cgdW5sZXNzIHdp
bmRvd1ZpZXcgaXMgZmxpcHBlZC4KLSAgICAgICAgICAgIC8vIEluIHRob3NlIGNhc2VzLCB0aGUg
WSBjb29yZGluYXRlIGdldHMgZmxpcHBlZCBieSBXaWRnZXQ6OmNvbnZlcnRGcm9tQ29udGFpbmlu
Z1dpbmRvdy4KLSAgICAgICAgICAgIE5TUG9pbnQgbG9jYXRpb24gPSBbZXZlbnQgbG9jYXRpb25J
bldpbmRvd107Ci0gICAgICAgICAgICBpZiAod2luZG93VmlldykKLSAgICAgICAgICAgICAgICBs
b2NhdGlvbiA9IFt3aW5kb3dWaWV3IGNvbnZlcnRQb2ludDpsb2NhdGlvbiBmcm9tVmlldzpuaWxd
OwotICAgICAgICAgICAgcmV0dXJuIEludFBvaW50KGxvY2F0aW9uKTsKLSAgICAgICAgfQotICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIEludFBvaW50KCk7Ci0gICAgfQotfQot
Ci1JbnRQb2ludCBnbG9iYWxQb2ludEZvckV2ZW50KE5TRXZlbnQgKmV2ZW50KQotewotICAgIHN3
aXRjaCAoW2V2ZW50IHR5cGVdKSB7Ci0gICAgICAgIGNhc2UgTlNMZWZ0TW91c2VEb3duOgotICAg
ICAgICBjYXNlIE5TTGVmdE1vdXNlVXA6Ci0gICAgICAgIGNhc2UgTlNMZWZ0TW91c2VEcmFnZ2Vk
OgotICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZURvd246Ci0gICAgICAgIGNhc2UgTlNSaWdodE1v
dXNlVXA6Ci0gICAgICAgIGNhc2UgTlNSaWdodE1vdXNlRHJhZ2dlZDoKLSAgICAgICAgY2FzZSBO
U090aGVyTW91c2VEb3duOgotICAgICAgICBjYXNlIE5TT3RoZXJNb3VzZVVwOgotICAgICAgICBj
YXNlIE5TT3RoZXJNb3VzZURyYWdnZWQ6Ci0gICAgICAgIGNhc2UgTlNNb3VzZU1vdmVkOgotICAg
ICAgICBjYXNlIE5TU2Nyb2xsV2hlZWw6Ci0gICAgICAgICAgICByZXR1cm4gZ2xvYmFsUG9pbnQo
W2V2ZW50IGxvY2F0aW9uSW5XaW5kb3ddLCBbZXZlbnQgd2luZG93XSk7Ci0gICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICByZXR1cm4gSW50UG9pbnQoKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyBQ
bGF0Zm9ybUV2ZW50OjpUeXBlIG1vdXNlRXZlbnRGb3JOU0V2ZW50KE5TRXZlbnQqIGV2ZW50KSAK
LXsKLSAgICBzd2l0Y2ggKFtldmVudCB0eXBlXSkgewotICAgIGNhc2UgTlNTY3JvbGxXaGVlbDoK
LSAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlU2Nyb2xsOwotICAgIGNhc2UgTlNM
ZWZ0TW91c2VEcmFnZ2VkOgotICAgIGNhc2UgTlNSaWdodE1vdXNlRHJhZ2dlZDoKLSAgICBjYXNl
IE5TT3RoZXJNb3VzZURyYWdnZWQ6Ci0gICAgY2FzZSBOU01vdXNlTW92ZWQ6Ci0gICAgICAgIHJl
dHVybiBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkOwotICAgIGNhc2UgTlNMZWZ0TW91c2VEb3du
OgotICAgIGNhc2UgTlNSaWdodE1vdXNlRG93bjoKLSAgICBjYXNlIE5TT3RoZXJNb3VzZURvd246
Ci0gICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQ7Ci0gICAgY2FzZSBO
U0xlZnRNb3VzZVVwOgotICAgIGNhc2UgTlNSaWdodE1vdXNlVXA6Ci0gICAgY2FzZSBOU090aGVy
TW91c2VVcDoKLSAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQ7Ci0g
ICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQ7Ci0g
ICAgfQotfQotCi1QbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudChOU0V2ZW50
KiBldmVudCwgTlNWaWV3ICp3aW5kb3dWaWV3KQotICAgIDogUGxhdGZvcm1FdmVudChtb3VzZUV2
ZW50Rm9yTlNFdmVudChldmVudCksIFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TU2hpZnRLZXlN
YXNrLCBbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0NvbnRyb2xLZXlNYXNrLCBbZXZlbnQgbW9k
aWZpZXJGbGFnc10gJiBOU0FsdGVybmF0ZUtleU1hc2ssIFtldmVudCBtb2RpZmllckZsYWdzXSAm
IE5TQ29tbWFuZEtleU1hc2ssIFtldmVudCB0aW1lc3RhbXBdKQotICAgICwgbV9wb3NpdGlvbihw
b2ludEZvckV2ZW50KGV2ZW50LCB3aW5kb3dWaWV3KSkKLSAgICAsIG1fZ2xvYmFsUG9zaXRpb24o
Z2xvYmFsUG9pbnRGb3JFdmVudChldmVudCkpCi0gICAgLCBtX2J1dHRvbihtb3VzZUJ1dHRvbkZv
ckV2ZW50KGV2ZW50KSkKLSAgICAsIG1fY2xpY2tDb3VudChjbGlja0NvdW50Rm9yRXZlbnQoZXZl
bnQpKQotICAgICwgbV9tb2RpZmllckZsYWdzKFtldmVudCBtb2RpZmllckZsYWdzXSkKLSAgICAs
IG1fZXZlbnROdW1iZXIoW2V2ZW50IGV2ZW50TnVtYmVyXSkKLXsKLX0KLQotUGxhdGZvcm1Nb3Vz
ZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQoaW50IHgsIGludCB5LCBpbnQgZ2xvYmFsWCwgaW50
IGdsb2JhbFksIE1vdXNlQnV0dG9uIGJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6VHlwZSB0eXBlLAot
ICAgICAgICAgICAgICAgICAgIGludCBjbGlja0NvdW50LCBib29sIHNoaWZ0S2V5LCBib29sIGN0
cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIG1ldGFLZXksIGRvdWJsZSB0aW1lc3RhbXAsCi0gICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgbW9kaWZpZXJGbGFncywgaW50IGV2ZW50TnVtYmVyKQot
ICAgIDogUGxhdGZvcm1FdmVudCh0eXBlLCBzaGlmdEtleSwgY3RybEtleSwgYWx0S2V5LCBtZXRh
S2V5LCB0aW1lc3RhbXApCi0gICAgLCBtX3Bvc2l0aW9uKEludFBvaW50KHgsIHkpKQotICAgICwg
bV9nbG9iYWxQb3NpdGlvbihJbnRQb2ludChnbG9iYWxYLCBnbG9iYWxZKSkKLSAgICAsIG1fYnV0
dG9uKGJ1dHRvbikKLSAgICAsIG1fY2xpY2tDb3VudChjbGlja0NvdW50KQotICAgICwgbV9tb2Rp
ZmllckZsYWdzKG1vZGlmaWVyRmxhZ3MpCi0gICAgLCBtX2V2ZW50TnVtYmVyKGV2ZW50TnVtYmVy
KQotewotfQotCi19CisvLyBSRU1PVkUgVEhJUyBGSUxFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAppbmRleCAxNzY0Yjc5ZjY5
MjUwYmRkOWZhMGQwMmY2MDgwODQ0YzU4NWI2Zjc1Li5iZWIzNmNhMDZkZDM4YjUwN2EwNjBjODA0
ZmVjZjNiZTMzMGNhYTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKQEAgLTE3Miw2ICsxNzIsNyBAQCBleHRlcm4gZG91
YmxlICgqd2tHZXROU1VSTFJlc3BvbnNlQ2FsY3VsYXRlZEV4cGlyYXRpb24pKE5TVVJMUmVzcG9u
c2UgKnJlc3BvbnNlKQogZXh0ZXJuIE5TRGF0ZSAqKCp3a0dldE5TVVJMUmVzcG9uc2VMYXN0TW9k
aWZpZWREYXRlKShOU1VSTFJlc3BvbnNlICpyZXNwb25zZSk7CiBleHRlcm4gQk9PTCAoKndrR2V0
TlNVUkxSZXNwb25zZU11c3RSZXZhbGlkYXRlKShOU1VSTFJlc3BvbnNlICpyZXNwb25zZSk7CiBl
eHRlcm4gdm9pZCAoKndrR2V0V2hlZWxFdmVudERlbHRhcykoTlNFdmVudCosIGZsb2F0KiBkZWx0
YVgsIGZsb2F0KiBkZWx0YVksIEJPT0wqIGNvbnRpbnVvdXMpOworZXh0ZXJuIFVJbnQ4ICgqd2tH
ZXROU0V2ZW50S2V5Q2hhcikoTlNFdmVudCAqKTsKIGV4dGVybiBCT09MICgqd2tIaXRUZXN0TWVk
aWFVSVBhcnQpKGludCBwYXJ0LCBpbnQgdGhlbWVTdHlsZSwgQ0dSZWN0IGJvdW5kcywgQ0dQb2lu
dCBwb2ludCk7CiBleHRlcm4gdm9pZCAoKndrTWVhc3VyZU1lZGlhVUlQYXJ0KShpbnQgcGFydCwg
aW50IHRoZW1lU3R5bGUsIENHUmVjdCAqYm91bmRzLCBDR1NpemUgKm5hdHVyYWxTaXplKTsKIGV4
dGVybiBOU1ZpZXcgKigqd2tDcmVhdGVNZWRpYVVJQmFja2dyb3VuZFZpZXcpKHZvaWQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZh
Y2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFj
ZS5tbQppbmRleCBjZGEwOTViZWQ0N2ZmY2NhMTRmMWIxMjVlZTNiZTQ5MDVmMThjNmFjLi5iNGNh
NTQwN2RkNWEwNWJiY2Q1ODAyZGRkN2FlMTEwM2YzMGMwNTUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQpAQCAtNjAs
NiArNjAsNyBAQCBOU1RpbWVJbnRlcnZhbCAoKndrR2V0TlNVUkxSZXNwb25zZUNhbGN1bGF0ZWRF
eHBpcmF0aW9uKShOU1VSTFJlc3BvbnNlICpyZXNwb25zZQogTlNEYXRlICooKndrR2V0TlNVUkxS
ZXNwb25zZUxhc3RNb2RpZmllZERhdGUpKE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlKTsKIEJPT0wg
KCp3a0dldE5TVVJMUmVzcG9uc2VNdXN0UmV2YWxpZGF0ZSkoTlNVUkxSZXNwb25zZSAqcmVzcG9u
c2UpOwogdm9pZCAoKndrR2V0V2hlZWxFdmVudERlbHRhcykoTlNFdmVudCosIGZsb2F0KiBkZWx0
YVgsIGZsb2F0KiBkZWx0YVksIEJPT0wqIGNvbnRpbnVvdXMpOworVUludDggKCp3a0dldE5TRXZl
bnRLZXlDaGFyKShOU0V2ZW50ICopOwogdm9pZCAoKndrUG9wdXBNZW51KShOU01lbnUqLCBOU1Bv
aW50IGxvY2F0aW9uLCBmbG9hdCB3aWR0aCwgTlNWaWV3KiwgaW50IHNlbGVjdGVkSXRlbSwgTlNG
b250Kik7CiB1bnNpZ25lZCAoKndrUVRJbmNsdWRlT25seU1vZGVybk1lZGlhRmlsZVR5cGVzKSh2
b2lkKTsKIGludCAoKndrUVRNb3ZpZURhdGFSYXRlKShRVE1vdmllKik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2hlZWxFdmVudE1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9XaGVlbEV2ZW50TWFjLm1tCmluZGV4IDg5YzlmYjc3ZTk5MzlhOTE0
MDkyOGY2NzA3MWZkYjYxZjY1NGNkMjguLjU3NDhlN2M2OTRhNjYyYjNiYTBiNjRkODc1ODBjNzYw
NDI5YzdiZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaGVlbEV2
ZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaGVlbEV2ZW50TWFj
Lm1tCkBAIC0xLDEyMSArMSwyIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2LCAy
MDEwLCAyMDExIEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAq
LwogCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgot
Ci0jaW1wb3J0ICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKLSNpbXBvcnQgIlNjcm9sbGJhci5oIgot
I2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotI2ltcG9ydCA8d3RmL1VudXNlZFBh
cmFtLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIFBsYXRmb3JtV2hlZWxFdmVu
dFBoYXNlIG1vbWVudHVtUGhhc2VGb3JFdmVudChOU0V2ZW50ICpldmVudCkKLXsKLSAgICB1aW50
MzJfdCBwaGFzZSA9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlTm9uZTsKLQotI2lmICFkZWZpbmVk
KEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFS
RCkKLSAgICBpZiAoW2V2ZW50IG1vbWVudHVtUGhhc2VdICYgTlNFdmVudFBoYXNlQmVnYW4pCi0g
ICAgICAgIHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQmVnYW47Ci0gICAgaWYgKFtl
dmVudCBtb21lbnR1bVBoYXNlXSAmIE5TRXZlbnRQaGFzZVN0YXRpb25hcnkpCi0gICAgICAgIHBo
YXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlU3RhdGlvbmFyeTsKLSAgICBpZiAoW2V2ZW50
IG1vbWVudHVtUGhhc2VdICYgTlNFdmVudFBoYXNlQ2hhbmdlZCkKLSAgICAgICAgcGhhc2UgfD0g
UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VDaGFuZ2VkOwotICAgIGlmIChbZXZlbnQgbW9tZW50dW1Q
aGFzZV0gJiBOU0V2ZW50UGhhc2VFbmRlZCkKLSAgICAgICAgcGhhc2UgfD0gUGxhdGZvcm1XaGVl
bEV2ZW50UGhhc2VFbmRlZDsKLSAgICBpZiAoW2V2ZW50IG1vbWVudHVtUGhhc2VdICYgTlNFdmVu
dFBoYXNlQ2FuY2VsbGVkKQotICAgICAgICBwaGFzZSB8PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFz
ZUNhbmNlbGxlZDsKLSNlbHNlCi0gICAgc3dpdGNoICh3a0dldE5TRXZlbnRNb21lbnR1bVBoYXNl
KGV2ZW50KSkgewotICAgIGNhc2Ugd2tFdmVudFBoYXNlTm9uZToKLSAgICAgICAgcGhhc2UgPSBQ
bGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ugd2tF
dmVudFBoYXNlQmVnYW46Ci0gICAgICAgIHBoYXNlID0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VC
ZWdhbjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSB3a0V2ZW50UGhhc2VDaGFuZ2VkOgotICAg
ICAgICBwaGFzZSA9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQ2hhbmdlZDsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSB3a0V2ZW50UGhhc2VFbmRlZDoKLSAgICAgICAgcGhhc2UgPSBQbGF0Zm9y
bVdoZWVsRXZlbnRQaGFzZUVuZGVkOwotICAgICAgICBicmVhazsKLSAgICB9Ci0jZW5kaWYKLQot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZT4ocGhhc2UpOwot
fQotCi1zdGF0aWMgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgcGhhc2VGb3JFdmVudChOU0V2ZW50
ICpldmVudCkKLXsKLSNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5l
ZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCi0gICAgdWludDMyX3QgcGhhc2UgPSBQbGF0Zm9y
bVdoZWVsRXZlbnRQaGFzZU5vbmU7IAotICAgIGlmIChbZXZlbnQgcGhhc2VdICYgTlNFdmVudFBo
YXNlQmVnYW4pCi0gICAgICAgIHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQmVnYW47
Ci0gICAgaWYgKFtldmVudCBwaGFzZV0gJiBOU0V2ZW50UGhhc2VTdGF0aW9uYXJ5KQotICAgICAg
ICBwaGFzZSB8PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZVN0YXRpb25hcnk7Ci0gICAgaWYgKFtl
dmVudCBwaGFzZV0gJiBOU0V2ZW50UGhhc2VDaGFuZ2VkKQotICAgICAgICBwaGFzZSB8PSBQbGF0
Zm9ybVdoZWVsRXZlbnRQaGFzZUNoYW5nZWQ7Ci0gICAgaWYgKFtldmVudCBwaGFzZV0gJiBOU0V2
ZW50UGhhc2VFbmRlZCkKLSAgICAgICAgcGhhc2UgfD0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VF
bmRlZDsKLSAgICBpZiAoW2V2ZW50IHBoYXNlXSAmIE5TRXZlbnRQaGFzZUNhbmNlbGxlZCkKLSAg
ICAgICAgcGhhc2UgfD0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VDYW5jZWxsZWQ7Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlPihwaGFzZSk7Ci0jZWxzZQot
ICAgIFVOVVNFRF9QQVJBTShldmVudCk7Ci0gICAgcmV0dXJuIFBsYXRmb3JtV2hlZWxFdmVudFBo
YXNlTm9uZTsKLSNlbmRpZgotfQotCi1QbGF0Zm9ybVdoZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxF
dmVudChOU0V2ZW50KiBldmVudCwgTlNWaWV3ICp3aW5kb3dWaWV3KQotICAgIDogUGxhdGZvcm1F
dmVudChQbGF0Zm9ybUV2ZW50OjpXaGVlbCwgW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNTaGlm
dEtleU1hc2ssIFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQ29udHJvbEtleU1hc2ssIFtldmVu
dCBtb2RpZmllckZsYWdzXSAmIE5TQWx0ZXJuYXRlS2V5TWFzaywgW2V2ZW50IG1vZGlmaWVyRmxh
Z3NdICYgTlNDb21tYW5kS2V5TWFzaywgW2V2ZW50IHRpbWVzdGFtcF0pCi0gICAgLCBtX3Bvc2l0
aW9uKHBvaW50Rm9yRXZlbnQoZXZlbnQsIHdpbmRvd1ZpZXcpKQotICAgICwgbV9nbG9iYWxQb3Np
dGlvbihnbG9iYWxQb2ludEZvckV2ZW50KGV2ZW50KSkKLSAgICAsIG1fZ3JhbnVsYXJpdHkoU2Ny
b2xsQnlQaXhlbFdoZWVsRXZlbnQpCi0gICAgLCBtX3BoYXNlKHBoYXNlRm9yRXZlbnQoZXZlbnQp
KQotICAgICwgbV9tb21lbnR1bVBoYXNlKG1vbWVudHVtUGhhc2VGb3JFdmVudChldmVudCkpCi17
Ci0gICAgQk9PTCBjb250aW51b3VzOwotICAgIHdrR2V0V2hlZWxFdmVudERlbHRhcyhldmVudCwg
Jm1fZGVsdGFYLCAmbV9kZWx0YVksICZjb250aW51b3VzKTsKLSAgICBpZiAoY29udGludW91cykg
ewotICAgICAgICBtX3doZWVsVGlja3NYID0gbV9kZWx0YVggLyBzdGF0aWNfY2FzdDxmbG9hdD4o
U2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpKTsKLSAgICAgICAgbV93aGVlbFRpY2tzWSA9
IG1fZGVsdGFZIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0
ZXAoKSk7Ci0gICAgICAgIG1faGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyA9IHRydWU7Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgbV93aGVlbFRpY2tzWCA9IG1fZGVsdGFYOwotICAgICAgICBtX3do
ZWVsVGlja3NZID0gbV9kZWx0YVk7Ci0gICAgICAgIG1fZGVsdGFYICo9IHN0YXRpY19jYXN0PGZs
b2F0PihTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCkpOwotICAgICAgICBtX2RlbHRhWSAq
PSBzdGF0aWNfY2FzdDxmbG9hdD4oU2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpKTsKLSAg
ICAgICAgbV9oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzID0gZmFsc2U7Ci0gICAgfQotCi0jaWYg
SEFWRShJTlZFUlRFRF9XSEVFTF9FVkVOVFMpCi0gICAgbV9kaXJlY3Rpb25JbnZlcnRlZEZyb21E
ZXZpY2UgPSBbZXZlbnQgaXNEaXJlY3Rpb25JbnZlcnRlZEZyb21EZXZpY2VdOwotI2Vsc2UKLSAg
ICBtX2RpcmVjdGlvbkludmVydGVkRnJvbURldmljZSA9IGZhbHNlOwotI2VuZGlmCi19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKy8vIFJFTU9WRSBUSElTIEZJTEUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3JtS2V5Ym9hcmRFdmVudFF0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3JtS2V5Ym9hcmRFdmVudFF0LmNwcAppbmRl
eCAzOGZlOGQ2N2QyNjU3ZjkxYmQyYmFiZmNlM2NhNWRmZWRiZjJiNmRmLi42MmQ4YTI0ODJiOTk4
YWFmN2U4MzA3NjY1YjI0MDEwNmYyN2JiZDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9QbGF0Zm9ybUtleWJvYXJkRXZlbnRRdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcXQvUGxhdGZvcm1LZXlib2FyZEV2ZW50UXQuY3BwCkBAIC01OTgsMTcgKzU5
OCwyNiBAQCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudChRS2V5
RXZlbnQqIGV2ZW50KQogewogICAgIGNvbnN0IGludCBzdGF0ZSA9IGV2ZW50LT5tb2RpZmllcnMo
KTsKICAgICBtX3R5cGUgPSAoZXZlbnQtPnR5cGUoKSA9PSBRRXZlbnQ6OktleVJlbGVhc2UpID8g
UGxhdGZvcm1FdmVudDo6S2V5VXAgOiBQbGF0Zm9ybUV2ZW50OjpLZXlEb3duOworCisgICAgbV9t
b2RpZmllcnMgPSAwOworICAgIGlmICgoc3RhdGUgJiBRdDo6U2hpZnRNb2RpZmllcikgfHwgZXZl
bnQtPmtleSgpID09IFF0OjpLZXlfQmFja3RhYikgLy8gU2ltdWxhdGUgU2hpZnQrVGFiIHdpdGgg
S2V5X0JhY2t0YWIKKyAgICAgICAgbV9tb2RpZmllcnMgfD0gU2hpZnRLZXk7CisgICAgaWYgKHN0
YXRlICYgUXQ6OkNvbnRyb2xNb2RpZmllcikKKyAgICAgICAgbV9tb2RpZmllcnMgfD0gQ3RybEtl
eTsKKyAgICBpZiAoc3RhdGUgJiBRdDo6QWx0TW9kaWZpZXIpCisgICAgICAgIG1fbW9kaWZpZXJz
IHw9IEFsdEtleTsKKyAgICBpZiAoc3RhdGUgJiBRdDo6TWV0YU1vZGlmaWVyKQorICAgICAgICBt
X21vZGlmaWVycyB8PSBNZXRhS2V5OworCiAgICAgbV90ZXh0ID0ga2V5VGV4dEZvcktleUV2ZW50
KGV2ZW50KTsKICAgICBtX3VubW9kaWZpZWRUZXh0ID0gbV90ZXh0OyAvLyBGSVhNRTogbm90IGNv
cnJlY3QKICAgICBtX2tleUlkZW50aWZpZXIgPSBrZXlJZGVudGlmaWVyRm9yUXRLZXlDb2RlKGV2
ZW50LT5rZXkoKSk7CiAgICAgbV9hdXRvUmVwZWF0ID0gZXZlbnQtPmlzQXV0b1JlcGVhdCgpOwot
ICAgIG1fY3RybEtleSA9IChzdGF0ZSAmIFF0OjpDb250cm9sTW9kaWZpZXIpOwotICAgIG1fYWx0
S2V5ID0gKHN0YXRlICYgUXQ6OkFsdE1vZGlmaWVyKTsKLSAgICBtX21ldGFLZXkgPSAoc3RhdGUg
JiBRdDo6TWV0YU1vZGlmaWVyKTsKICAgICBtX2lzS2V5cGFkID0gKHN0YXRlICYgUXQ6OktleXBh
ZE1vZGlmaWVyKTsKKyAgICBtX2lzU3lzdGVtS2V5ID0gZmFsc2U7CiAgICAgbV93aW5kb3dzVmly
dHVhbEtleUNvZGUgPSB3aW5kb3dzS2V5Q29kZUZvcktleUV2ZW50KGV2ZW50LT5rZXkoKSwgbV9p
c0tleXBhZCk7CiAgICAgbV9uYXRpdmVWaXJ0dWFsS2V5Q29kZSA9IGV2ZW50LT5uYXRpdmVWaXJ0
dWFsS2V5KCk7Ci0gICAgbV9zaGlmdEtleSA9IChzdGF0ZSAmIFF0OjpTaGlmdE1vZGlmaWVyKSB8
fCBldmVudC0+a2V5KCkgPT0gUXQ6OktleV9CYWNrdGFiOyAvLyBTaW11bGF0ZSBTaGlmdCtUYWIg
d2l0aCBLZXlfQmFja3RhYgorICAgIG1fbWFjQ2hhckNvZGUgPSAwOwogICAgIG1fcXRFdmVudCA9
IGV2ZW50OwogICAgIG1fdGltZXN0YW1wID0gV1RGOjpjdXJyZW50VGltZSgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZvcm1Nb3VzZUV2ZW50UXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZvcm1Nb3VzZUV2ZW50UXQuY3BwCmlu
ZGV4IDkwOWQyMmNiMmY5N2VjM2IyNTgwNDIzMGNkM2EyZGNkNTJkYzNlN2QuLjk5NDZjNGU0OTMw
ODYwOTRlNmExZWEyYzQ5ZTViZWIzMThjZWE4ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3F0L1BsYXRmb3JtTW91c2VFdmVudFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9xdC9QbGF0Zm9ybU1vdXNlRXZlbnRRdC5jcHAKQEAgLTM1LDEyICszNSwxNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyB2b2lkIG1vdXNlRXZlbnRNb2RpZmll
cnNGcm9tUXRLZXlib2FyZE1vZGlmaWVycyhRdDo6S2V5Ym9hcmRNb2RpZmllcnMga2V5Ym9hcmRN
b2RpZmllcnMsIGJvb2wmIGFsdEtleSwgYm9vbCYgY3RybEtleSwgYm9vbCYgbWV0YUtleSwgYm9v
bCYgc2hpZnRLZXkpCitzdGF0aWMgdm9pZCBtb3VzZUV2ZW50TW9kaWZpZXJzRnJvbVF0S2V5Ym9h
cmRNb2RpZmllcnMoUXQ6OktleWJvYXJkTW9kaWZpZXJzIGtleWJvYXJkTW9kaWZpZXJzLCB1bnNp
Z25lZCYgbW9kaWZpZXJzKQogewotICAgIGFsdEtleSA9IGtleWJvYXJkTW9kaWZpZXJzICYgUXQ6
OkFsdE1vZGlmaWVyOwotICAgIGN0cmxLZXkgPSBrZXlib2FyZE1vZGlmaWVycyAmIFF0OjpDb250
cm9sTW9kaWZpZXI7Ci0gICAgbWV0YUtleSA9IGtleWJvYXJkTW9kaWZpZXJzICYgUXQ6Ok1ldGFN
b2RpZmllcjsKLSAgICBzaGlmdEtleSA9IGtleWJvYXJkTW9kaWZpZXJzICYgUXQ6OlNoaWZ0TW9k
aWZpZXI7CisgICAgbW9kaWZpZXJzID0gMDsKKyAgICBpZiAoa2V5Ym9hcmRNb2RpZmllcnMgJiBR
dDo6U2hpZnRNb2RpZmllcikKKyAgICAgICAgbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6OlNo
aWZ0S2V5OworICAgIGlmIChrZXlib2FyZE1vZGlmaWVycyAmIFF0OjpDb250cm9sTW9kaWZpZXIp
CisgICAgICAgIG1vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpDdHJsS2V5OworICAgIGlmIChr
ZXlib2FyZE1vZGlmaWVycyAmIFF0OjpBbHRNb2RpZmllcikKKyAgICAgICAgbW9kaWZpZXJzIHw9
IFBsYXRmb3JtRXZlbnQ6OkFsdEtleTsKKyAgICBpZiAoa2V5Ym9hcmRNb2RpZmllcnMgJiBRdDo6
TWV0YU1vZGlmaWVyKQorICAgICAgICBtb2RpZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6TWV0YUtl
eTsKIH0KIAogc3RhdGljIHZvaWQgbW91c2VFdmVudFR5cGVBbmRNb3VzZUJ1dHRvbkZyb21RRXZl
bnQoY29uc3QgUUV2ZW50KiBldmVudCwgUGxhdGZvcm1FdmVudDo6VHlwZSYgbW91c2VFdmVudFR5
cGUsIE1vdXNlQnV0dG9uJiBtb3VzZUJ1dHRvbikKQEAgLTEyMSw3ICsxMjYsNyBAQCBQbGF0Zm9y
bU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudChRR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQq
IGV2ZW50LCBpbnQgY2xpYwogICAgIG1fZ2xvYmFsUG9zaXRpb24gPSBJbnRQb2ludChldmVudC0+
c2NyZWVuUG9zKCkpOwogCiAgICAgbV9jbGlja0NvdW50ID0gY2xpY2tDb3VudDsKLSAgICBtb3Vz
ZUV2ZW50TW9kaWZpZXJzRnJvbVF0S2V5Ym9hcmRNb2RpZmllcnMoZXZlbnQtPm1vZGlmaWVycygp
LCBtX2FsdEtleSwgbV9jdHJsS2V5LCBtX21ldGFLZXksIG1fc2hpZnRLZXkpOworICAgIG1vdXNl
RXZlbnRNb2RpZmllcnNGcm9tUXRLZXlib2FyZE1vZGlmaWVycyhldmVudC0+bW9kaWZpZXJzKCks
IG1fbW9kaWZpZXJzKTsKIH0KICNlbmRpZiAvLyBRVF9OT19HUkFQSElDU1ZJRVcKIApAQCAtMTUx
LDcgKzE1Niw3IEBAIFBsYXRmb3JtTW91c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KFFJbnB1
dEV2ZW50KiBldmVudCwgaW50IGNsaWNrQ291bnQpCiAgICAgfQogCiAgICAgbV9jbGlja0NvdW50
ID0gY2xpY2tDb3VudDsKLSAgICBtb3VzZUV2ZW50TW9kaWZpZXJzRnJvbVF0S2V5Ym9hcmRNb2Rp
ZmllcnMoZXZlbnQtPm1vZGlmaWVycygpLCBtX2FsdEtleSwgbV9jdHJsS2V5LCBtX21ldGFLZXks
IG1fc2hpZnRLZXkpOworICAgIG1vdXNlRXZlbnRNb2RpZmllcnNGcm9tUXRLZXlib2FyZE1vZGlm
aWVycyhldmVudC0+bW9kaWZpZXJzKCksIG1fbW9kaWZpZXJzKTsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZvcm1Ub3VjaEV2ZW50UXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZvcm1Ub3VjaEV2ZW50UXQuY3BwCmluZGV4
IDdjNjJkYTYyNTQ2NmM0ZGY2MTQ4NTg2OWNhM2Y4ZTE0YWUzMmVhMTIuLmUzY2FlOGM1YTEyYTE2
MWM3ZmJlMTY5YmIwYjIyZDExYmZkMjc0ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3F0L1BsYXRmb3JtVG91Y2hFdmVudFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9QbGF0Zm9ybVRvdWNoRXZlbnRRdC5jcHAKQEAgLTQ2LDEwICs0NiwxNiBAQCBQ
bGF0Zm9ybVRvdWNoRXZlbnQ6OlBsYXRmb3JtVG91Y2hFdmVudChRVG91Y2hFdmVudCogZXZlbnQp
CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwb2ludHMuY291bnQoKTsgKytpKQogICAgICAgICBt
X3RvdWNoUG9pbnRzLmFwcGVuZChQbGF0Zm9ybVRvdWNoUG9pbnQocG9pbnRzLmF0KGkpKSk7CiAK
LSAgICBtX2N0cmxLZXkgPSAoZXZlbnQtPm1vZGlmaWVycygpICYgUXQ6OkNvbnRyb2xNb2RpZmll
cik7Ci0gICAgbV9hbHRLZXkgPSAoZXZlbnQtPm1vZGlmaWVycygpICYgUXQ6OkFsdE1vZGlmaWVy
KTsKLSAgICBtX3NoaWZ0S2V5ID0gKGV2ZW50LT5tb2RpZmllcnMoKSAmIFF0OjpTaGlmdE1vZGlm
aWVyKTsKLSAgICBtX21ldGFLZXkgPSAoZXZlbnQtPm1vZGlmaWVycygpICYgUXQ6Ok1ldGFNb2Rp
Zmllcik7CisgICAgbV9tb2RpZmllcnMgPSAwOworICAgIGlmIChldmVudC0+bW9kaWZpZXJzKCkg
ICYgUXQ6OlNoaWZ0TW9kaWZpZXIpCisgICAgICAgIG1fbW9kaWZpZXJzIHw9IFNoaWZ0S2V5Owor
ICAgIGlmIChldmVudC0+bW9kaWZpZXJzKCkgICYgUXQ6OkNvbnRyb2xNb2RpZmllcikKKyAgICAg
ICAgbV9tb2RpZmllcnMgfD0gQ3RybEtleTsKKyAgICBpZiAoZXZlbnQtPm1vZGlmaWVycygpICAm
IFF0OjpBbHRNb2RpZmllcikKKyAgICAgICAgbV9tb2RpZmllcnMgfD0gQWx0S2V5OworICAgIGlm
IChldmVudC0+bW9kaWZpZXJzKCkgICYgUXQ6Ok1ldGFNb2RpZmllcikKKyAgICAgICAgbV9tb2Rp
ZmllcnMgfD0gTWV0YUtleTsKKwogICAgIG1fdGltZXN0YW1wID0gV1RGOjpjdXJyZW50VGltZSgp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5RXZlbnRX
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcAppbmRl
eCBhZDU4OWJiZjgyMTJkNTI1NzkwN2IzYTRkMmViNjZlMzRiMzcyNWQ1Li44ZmQ5NzdkMmQ5NzJk
YmM5ZjdjNmE0OTUxYWFhODljNzcyMDNhMWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9LZXlFdmVudFdpbi5jcHAKQEAgLTE5NCw5ICsxOTQsMTAgQEAgUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQoSFdORCwgV1BBUkFNIGNvZGUsIExQQVJBTSBr
ZXlEYXRhLAogICAgICwgbV90ZXh0KCh0eXBlID09IFBsYXRmb3JtRXZlbnQ6OkNoYXIpID8gc2lu
Z2xlQ2hhcmFjdGVyU3RyaW5nKGNvZGUpIDogU3RyaW5nKCkpCiAgICAgLCBtX3VubW9kaWZpZWRU
ZXh0KCh0eXBlID09IFBsYXRmb3JtRXZlbnQ6OkNoYXIpID8gc2luZ2xlQ2hhcmFjdGVyU3RyaW5n
KGNvZGUpIDogU3RyaW5nKCkpCiAgICAgLCBtX2tleUlkZW50aWZpZXIoKHR5cGUgPT0gUGxhdGZv
cm1FdmVudDo6Q2hhcikgPyBTdHJpbmcoKSA6IGtleUlkZW50aWZpZXJGb3JXaW5kb3dzS2V5Q29k
ZShjb2RlKSkKLSAgICAsIG1fYXV0b1JlcGVhdChISVdPUkQoa2V5RGF0YSkgJiBLRl9SRVBFQVQp
CiAgICAgLCBtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSgodHlwZSA9PSBSYXdLZXlEb3duIHx8IHR5
cGUgPT0gS2V5VXApID8gY29kZSA6IDApCiAgICAgLCBtX25hdGl2ZVZpcnR1YWxLZXlDb2RlKG1f
d2luZG93c1ZpcnR1YWxLZXlDb2RlKQorICAgICwgbV9tYWNDaGFyQ29kZSgwKQorICAgICwgbV9h
dXRvUmVwZWF0KEhJV09SRChrZXlEYXRhKSAmIEtGX1JFUEVBVCkKICAgICAsIG1faXNLZXlwYWQo
aXNLZXlwYWRFdmVudChjb2RlLCBrZXlEYXRhLCB0eXBlKSkKICAgICAsIG1faXNTeXN0ZW1LZXko
c3lzdGVtS2V5KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1do
ZWVsRXZlbnRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1doZWVsRXZlbnRX
aW4uY3BwCmluZGV4IGNiMmRkYTVjMGYwYmIyMGFjZjBjZjRhZTQ1YmZiZTMzMDFiMzYyN2UuLjUy
MjQ2OTcxOGQ5ZTViMzk0NDIxNjFkYWFmNTFjZjYxZTgzMjE4YWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaGVlbEV2ZW50V2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vV2hlZWxFdmVudFdpbi5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCBQ
bGF0Zm9ybVdoZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVudChIV05EIGhXbmQsIFdQQVJBTSB3
UGFyYW0sIExQQVJBTSBsUGFyYW0sCiAgICAgICAgIG1fd2hlZWxUaWNrc1ggPSAwOwogICAgICAg
ICBtX3doZWVsVGlja3NZID0gZGVsdGE7CiAgICAgfQotICAgIGlmIChpc01vdXNlSFdoZWVsIHx8
IG1fc2hpZnRLZXkpIHsKKyAgICBpZiAoaXNNb3VzZUhXaGVlbCB8fCBzaGlmdEtleSgpKSB7CiAg
ICAgICAgIG1fZGVsdGFYID0gZGVsdGEgKiBzdGF0aWNfY2FzdDxmbG9hdD4oaG9yaXpvbnRhbFNj
cm9sbENoYXJzKCkpICogY1Njcm9sbGJhclBpeGVsc1BlckxpbmU7CiAgICAgICAgIG1fZGVsdGFZ
ID0gMDsKICAgICAgICAgbV9ncmFudWxhcml0eSA9IFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZl
cnNpb24uY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZl
cnNpb24uY3BwCmluZGV4IGI5M2NkZmQxMTYxZWI1YjFkYmE5NTBjZjhmYWZjODkxODViODdjMTku
LjNiYjg4OGYxNjgzODM2NGVjNjBmNTU5ZjZhODAyNWU1MzY5MGYxN2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHAK
QEAgLTY0LDEwICs2NCwxNyBAQCBQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybU1v
dXNlRXZlbnRCdWlsZGVyKFdpZGdldCogd2lkZ2V0LCBjb25zdCBXZWJNbwogICAgIG1fbW92ZW1l
bnREZWx0YSA9IEludFBvaW50KGUubW92ZW1lbnRYLCBlLm1vdmVtZW50WSk7CiAjZW5kaWYKICAg
ICBtX2J1dHRvbiA9IHN0YXRpY19jYXN0PE1vdXNlQnV0dG9uPihlLmJ1dHRvbik7Ci0gICAgbV9z
aGlmdEtleSA9IChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6OlNoaWZ0S2V5KTsKLSAgICBt
X2N0cmxLZXkgPSAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpDb250cm9sS2V5KTsKLSAg
ICBtX2FsdEtleSA9IChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6OkFsdEtleSk7Ci0gICAg
bV9tZXRhS2V5ID0gKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6TWV0YUtleSk7CisKKyAg
ICBtX21vZGlmaWVycyA9IDA7CisgICAgaWYgKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6
U2hpZnRLZXkpCisgICAgICAgIG1fbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6OlNoaWZ0S2V5
OworICAgIGlmIChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6OkNvbnRyb2xLZXkpCisgICAg
ICAgIG1fbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6OkN0cmxLZXk7CisgICAgaWYgKGUubW9k
aWZpZXJzICYgV2ViSW5wdXRFdmVudDo6QWx0S2V5KQorICAgICAgICBtX21vZGlmaWVycyB8PSBQ
bGF0Zm9ybUV2ZW50OjpBbHRLZXk7CisgICAgaWYgKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVu
dDo6TWV0YUtleSkKKyAgICAgICAgbV9tb2RpZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6TWV0YUtl
eTsKKwogICAgIG1fbW9kaWZpZXJGbGFncyA9IGUubW9kaWZpZXJzOwogICAgIG1fdGltZXN0YW1w
ID0gZS50aW1lU3RhbXBTZWNvbmRzOwogICAgIG1fY2xpY2tDb3VudCA9IGUuY2xpY2tDb3VudDsK
QEAgLTEwNSwxMCArMTEyLDE3IEBAIFBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXI6OlBsYXRmb3Jt
V2hlZWxFdmVudEJ1aWxkZXIoV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFdlYk1vCiAgICAgICAgIFNj
cm9sbEJ5UGFnZVdoZWVsRXZlbnQgOiBTY3JvbGxCeVBpeGVsV2hlZWxFdmVudDsKICAgICAKICAg
ICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50OjpXaGVlbDsKLSAgICBtX3NoaWZ0S2V5ID0gKGUubW9k
aWZpZXJzICYgV2ViSW5wdXRFdmVudDo6U2hpZnRLZXkpOwotICAgIG1fY3RybEtleSA9IChlLm1v
ZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6OkNvbnRyb2xLZXkpOwotICAgIG1fYWx0S2V5ID0gKGUu
bW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6QWx0S2V5KTsKLSAgICBtX21ldGFLZXkgPSAoZS5t
b2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpNZXRhS2V5KTsKKworICAgIG1fbW9kaWZpZXJzID0g
MDsKKyAgICBpZiAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpTaGlmdEtleSkKKyAgICAg
ICAgbV9tb2RpZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6U2hpZnRLZXk7CisgICAgaWYgKGUubW9k
aWZpZXJzICYgV2ViSW5wdXRFdmVudDo6Q29udHJvbEtleSkKKyAgICAgICAgbV9tb2RpZmllcnMg
fD0gUGxhdGZvcm1FdmVudDo6Q3RybEtleTsKKyAgICBpZiAoZS5tb2RpZmllcnMgJiBXZWJJbnB1
dEV2ZW50OjpBbHRLZXkpCisgICAgICAgIG1fbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6OkFs
dEtleTsKKyAgICBpZiAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpNZXRhS2V5KQorICAg
ICAgICBtX21vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpNZXRhS2V5OworCiAjaWYgT1MoREFS
V0lOKQogICAgIG1faGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyA9IGUuaGFzUHJlY2lzZVNjcm9s
bGluZ0RlbHRhczsKICAgICBtX3BoYXNlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UGxhdGZvcm1X
aGVlbEV2ZW50UGhhc2U+KGUucGhhc2UpOwpAQCAtMTQzLDEwICsxNTcsMTYgQEAgUGxhdGZvcm1H
ZXN0dXJlRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXIoV2lkZ2V0KiB3
aWRnZXQsIGNvbnN0IFcKICAgICBtX2RlbHRhWCA9IGUuZGVsdGFYOwogICAgIG1fZGVsdGFZID0g
ZS5kZWx0YVk7CiAgICAgbV90aW1lc3RhbXAgPSBlLnRpbWVTdGFtcFNlY29uZHM7Ci0gICAgbV9z
aGlmdEtleSA9IChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6OlNoaWZ0S2V5KTsKLSAgICBt
X2N0cmxLZXkgPSAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpDb250cm9sS2V5KTsKLSAg
ICBtX2FsdEtleSA9IChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6OkFsdEtleSk7Ci0gICAg
bV9tZXRhS2V5ID0gKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6TWV0YUtleSk7CisKKyAg
ICBtX21vZGlmaWVycyA9IDA7CisgICAgaWYgKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6
U2hpZnRLZXkpCisgICAgICAgIG1fbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6OlNoaWZ0S2V5
OworICAgIGlmIChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6OkNvbnRyb2xLZXkpCisgICAg
ICAgIG1fbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6OkN0cmxLZXk7CisgICAgaWYgKGUubW9k
aWZpZXJzICYgV2ViSW5wdXRFdmVudDo6QWx0S2V5KQorICAgICAgICBtX21vZGlmaWVycyB8PSBQ
bGF0Zm9ybUV2ZW50OjpBbHRLZXk7CisgICAgaWYgKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVu
dDo6TWV0YUtleSkKKyAgICAgICAgbV9tb2RpZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6TWV0YUtl
eTsKIH0KICNlbmRpZgogCkBAIC0xNzksMTEgKzE5OSwxNyBAQCBQbGF0Zm9ybUtleWJvYXJkRXZl
bnRCdWlsZGVyOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnRCdWlsZGVyKGNvbnN0IFdlYktleWJvYXJk
RXZlbgogICAgIG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlID0gZS53aW5kb3dzS2V5Q29kZTsKICAg
ICBtX25hdGl2ZVZpcnR1YWxLZXlDb2RlID0gZS5uYXRpdmVLZXlDb2RlOwogICAgIG1faXNLZXlw
YWQgPSAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpJc0tleVBhZCk7Ci0gICAgbV9zaGlm
dEtleSA9IChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6OlNoaWZ0S2V5KTsKLSAgICBtX2N0
cmxLZXkgPSAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpDb250cm9sS2V5KTsKLSAgICBt
X2FsdEtleSA9IChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6OkFsdEtleSk7Ci0gICAgbV9t
ZXRhS2V5ID0gKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6TWV0YUtleSk7CiAgICAgbV9p
c1N5c3RlbUtleSA9IGUuaXNTeXN0ZW1LZXk7CisKKyAgICBtX21vZGlmaWVycyA9IDA7CisgICAg
aWYgKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6U2hpZnRLZXkpCisgICAgICAgIG1fbW9k
aWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6OlNoaWZ0S2V5OworICAgIGlmIChlLm1vZGlmaWVycyAm
IFdlYklucHV0RXZlbnQ6OkNvbnRyb2xLZXkpCisgICAgICAgIG1fbW9kaWZpZXJzIHw9IFBsYXRm
b3JtRXZlbnQ6OkN0cmxLZXk7CisgICAgaWYgKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6
QWx0S2V5KQorICAgICAgICBtX21vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpBbHRLZXk7Cisg
ICAgaWYgKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6TWV0YUtleSkKKyAgICAgICAgbV9t
b2RpZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6TWV0YUtleTsKIH0KIAogdm9pZCBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnRCdWlsZGVyOjpzZXRLZXlUeXBlKFR5cGUgdHlwZSkKQEAgLTI2OSwxMCArMjk1
LDE3IEBAIFBsYXRmb3JtVG91Y2hQb2ludEJ1aWxkZXI6OlBsYXRmb3JtVG91Y2hQb2ludEJ1aWxk
ZXIoV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFdlYlRvCiBQbGF0Zm9ybVRvdWNoRXZlbnRCdWlsZGVy
OjpQbGF0Zm9ybVRvdWNoRXZlbnRCdWlsZGVyKFdpZGdldCogd2lkZ2V0LCBjb25zdCBXZWJUb3Vj
aEV2ZW50JiBldmVudCkKIHsKICAgICBtX3R5cGUgPSB0b1BsYXRmb3JtVG91Y2hFdmVudFR5cGUo
ZXZlbnQudHlwZSk7Ci0gICAgbV9jdHJsS2V5ID0gZXZlbnQubW9kaWZpZXJzICYgV2ViSW5wdXRF
dmVudDo6Q29udHJvbEtleTsKLSAgICBtX2FsdEtleSA9IGV2ZW50Lm1vZGlmaWVycyAmIFdlYklu
cHV0RXZlbnQ6OkFsdEtleTsKLSAgICBtX3NoaWZ0S2V5ID0gZXZlbnQubW9kaWZpZXJzICYgV2Vi
SW5wdXRFdmVudDo6U2hpZnRLZXk7Ci0gICAgbV9tZXRhS2V5ID0gZXZlbnQubW9kaWZpZXJzICYg
V2ViSW5wdXRFdmVudDo6TWV0YUtleTsKKworICAgIG1fbW9kaWZpZXJzID0gMDsKKyAgICBpZiAo
ZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpTaGlmdEtleSkKKyAgICAgICAgbV9tb2RpZmll
cnMgfD0gUGxhdGZvcm1FdmVudDo6U2hpZnRLZXk7CisgICAgaWYgKGUubW9kaWZpZXJzICYgV2Vi
SW5wdXRFdmVudDo6Q29udHJvbEtleSkKKyAgICAgICAgbV9tb2RpZmllcnMgfD0gUGxhdGZvcm1F
dmVudDo6Q3RybEtleTsKKyAgICBpZiAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpBbHRL
ZXkpCisgICAgICAgIG1fbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6OkFsdEtleTsKKyAgICBp
ZiAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpNZXRhS2V5KQorICAgICAgICBtX21vZGlm
aWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpNZXRhS2V5OworCiAgICAgbV90aW1lc3RhbXAgPSBldmVu
dC50aW1lU3RhbXBTZWNvbmRzOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV2ZW50
LnRvdWNoZXNMZW5ndGg7ICsraSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQppbmRleCAxMzEwMTI0ZDI3MjlmYjY5Yzc1
ZjYzYjBmNmNiNTAzNDMwZmRiMWEzLi5lOTNkMGM2MWVkZmNkM2U4YzhiNTZiYWNjMmQwOTkzMGYw
MjExMmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJT
eXN0ZW1JbnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViU3lzdGVtSW50ZXJmYWNlLm1tCkBAIC02Nyw2ICs2Nyw3IEBAIHZvaWQgSW5pdFdlYkNvcmVT
eXN0ZW1JbnRlcmZhY2Uodm9pZCkKICAgICBJTklUKFNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5n
ZVN0cmluZyk7CiAgICAgSU5JVChHZXRQcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZSk7CiAg
ICAgSU5JVChHZXRXaGVlbEV2ZW50RGVsdGFzKTsKKyAgICBJTklUKEdldE5TRXZlbnRLZXlDaGFy
KTsKICAgICBJTklUKEhpdFRlc3RNZWRpYVVJUGFydCk7CiAgICAgSU5JVChJbml0aWFsaXplTWF4
aW11bUhUVFBDb25uZWN0aW9uQ291bnRQZXJIb3N0KTsKICAgICBJTklUKE1lYXN1cmVNZWRpYVVJ
UGFydCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCA2MWI4ZTg4NmUx
NDY4MzZlYmQ0NzM0ODBkYTljYjk0OTMyMDdmNzUwLi5hNWMzNDJjYTNhNDY3MTZlOTNlYWU0M2Vh
NWEwYjY3ZTc2MmNhZDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAg
LTc2LDYgKzc2LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9MZWdhY3lXZWJBcmNoaXZlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1FdmVudEZhY3RvcnkuaD4KICNpbXBvcnQgPFdlYkNv
cmUvUGx1Z2luRGF0YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QcmludENvbnRleHQuaD4KICNpbXBv
cnQgPFdlYkNvcmUvUmVuZGVyTGF5ZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhU
TUxWaWV3Lm1tCmluZGV4IGQxZWViNjlhYjJlMmVlMTBhMjA2M2NlODM1MGNmNzk0NDM4OGFkMjYu
LmM0YmMyYTJlMDJkNWJhODg0MjI3NGY4YjRjNTNmMjE5NDNhYjA1NDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtMTA0LDcgKzEwNCw3IEBACiAjaW1wb3J0
IDxXZWJDb3JlL0xlZ2FjeVdlYkFyY2hpdmUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTUlNRVR5cGVS
ZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1Bs
YXRmb3JtS2V5Ym9hcmRFdmVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUV2ZW50RmFj
dG9yeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SYW5nZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5k
ZXJXaWRnZXQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyVmlldy5oPgpAQCAtMzEwOCw3ICsz
MTA4LDcgQEAgc3RhdGljIHZvaWQgc2V0TWVudVRhcmdldHMoTlNNZW51KiBtZW51KQogICAgIF9w
cml2YXRlLT5oYW5kbGluZ01vdXNlRG93bkV2ZW50ID0gWUVTOwogICAgIHBhZ2UtPmNvbnRleHRN
ZW51Q29udHJvbGxlcigpLT5jbGVhckNvbnRleHRNZW51KCk7CiAgICAgY29yZUZyYW1lLT5ldmVu
dEhhbmRsZXIoKS0+bW91c2VEb3duKGV2ZW50KTsKLSAgICBCT09MIGhhbmRsZWRFdmVudCA9IGNv
cmVGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNlbmRDb250ZXh0TWVudUV2ZW50KFBsYXRmb3JtTW91
c2VFdmVudChldmVudCwgcGFnZS0+Y2hyb21lKCktPnBsYXRmb3JtUGFnZUNsaWVudCgpKSk7Cisg
ICAgQk9PTCBoYW5kbGVkRXZlbnQgPSBjb3JlRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zZW5kQ29u
dGV4dE1lbnVFdmVudChQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1Nb3VzZUV2
ZW50KGV2ZW50LCBwYWdlLT5jaHJvbWUoKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkpKTsKICAgICBf
cHJpdmF0ZS0+aGFuZGxpbmdNb3VzZURvd25FdmVudCA9IE5POwogCiAgICAgaWYgKCFoYW5kbGVk
RXZlbnQpCkBAIC0zNDczLDcgKzM0NzMsNyBAQCBzdGF0aWMgdm9pZCBzZXRNZW51VGFyZ2V0cyhO
U01lbnUqIG1lbnUpCiAgICAgICAgICAgICBbaGl0SFRNTFZpZXcgX3NldE1vdXNlRG93bkV2ZW50
OmV2ZW50XTsKICAgICAgICAgICAgIGlmIChbaGl0SFRNTFZpZXcgX2lzU2VsZWN0aW9uRXZlbnQ6
ZXZlbnRdKSB7CiAgICAgICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBjb3JlRnJhbWUtPnBh
Z2UoKSkKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gY29yZUZyYW1lLT5ldmVudEhhbmRs
ZXIoKS0+ZXZlbnRNYXlTdGFydERyYWcoUGxhdGZvcm1Nb3VzZUV2ZW50KGV2ZW50LCBwYWdlLT5j
aHJvbWUoKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVz
dWx0ID0gY29yZUZyYW1lLT5ldmVudEhhbmRsZXIoKS0+ZXZlbnRNYXlTdGFydERyYWcoUGxhdGZv
cm1FdmVudEZhY3Rvcnk6OmNyZWF0ZVBsYXRmb3JtTW91c2VFdmVudChldmVudCwgcGFnZS0+Y2hy
b21lKCktPnBsYXRmb3JtUGFnZUNsaWVudCgpKSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKFto
aXRIVE1MVmlldyBfaXNTY3JvbGxCYXJFdmVudDpldmVudF0pCiAgICAgICAgICAgICAgICAgcmVz
dWx0ID0gdHJ1ZTsKICAgICAgICAgICAgIFtoaXRIVE1MVmlldyBfc2V0TW91c2VEb3duRXZlbnQ6
bmlsXTsKQEAgLTM0OTgsNyArMzQ5OCw3IEBAIHN0YXRpYyB2b2lkIHNldE1lbnVUYXJnZXRzKE5T
TWVudSogbWVudSkKICAgICAgICAgICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0gY29yZShbaGl0
SFRNTFZpZXcgX2ZyYW1lXSkpIHsKICAgICAgICAgICAgICAgICBbaGl0SFRNTFZpZXcgX3NldE1v
dXNlRG93bkV2ZW50OmV2ZW50XTsKICAgICAgICAgICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGNv
cmVGcmFtZS0+cGFnZSgpKQotICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBjb3JlRnJhbWUt
PmV2ZW50SGFuZGxlcigpLT5ldmVudE1heVN0YXJ0RHJhZyhQbGF0Zm9ybU1vdXNlRXZlbnQoZXZl
bnQsIHBhZ2UtPmNocm9tZSgpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKSkpOworICAgICAgICAgICAg
ICAgICAgICByZXN1bHQgPSBjb3JlRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5ldmVudE1heVN0YXJ0
RHJhZyhQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1Nb3VzZUV2ZW50KGV2ZW50
LCBwYWdlLT5jaHJvbWUoKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkpKTsKICAgICAgICAgICAgICAg
ICBbaGl0SFRNTFZpZXcgX3NldE1vdXNlRG93bkV2ZW50Om5pbF07CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KQEAgLTM3MzgsMTIgKzM3MzgsMTIgQEAgc3RhdGljIFBhc3NSZWZQdHI8S2V5Ym9h
cmRFdmVudD4gY3VycmVudEtleWJvYXJkRXZlbnQoRnJhbWUqIGNvcmVGcmFtZSkKIAogICAgIHN3
aXRjaCAoW2V2ZW50IHR5cGVdKSB7CiAgICAgY2FzZSBOU0tleURvd246IHsKLSAgICAgICAgUGxh
dGZvcm1LZXlib2FyZEV2ZW50IHBsYXRmb3JtRXZlbnQoZXZlbnQpOworICAgICAgICBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQgcGxhdGZvcm1FdmVudCA9IFBsYXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVh
dGVQbGF0Zm9ybUtleWJvYXJkRXZlbnQoZXZlbnQpOwogICAgICAgICBwbGF0Zm9ybUV2ZW50LmRp
c2FtYmlndWF0ZUtleURvd25FdmVudChQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKTsKICAgICAg
ICAgcmV0dXJuIEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShwbGF0Zm9ybUV2ZW50LCBjb3JlRnJhbWUt
PmRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCkpOwogICAgIH0KICAgICBjYXNlIE5TS2V5VXA6Ci0g
ICAgICAgIHJldHVybiBLZXlib2FyZEV2ZW50OjpjcmVhdGUoZXZlbnQsIGNvcmVGcmFtZS0+ZG9j
dW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSk7CisgICAgICAgIHJldHVybiBLZXlib2FyZEV2ZW50Ojpj
cmVhdGUoUGxhdGZvcm1FdmVudEZhY3Rvcnk6OmNyZWF0ZVBsYXRmb3JtS2V5Ym9hcmRFdmVudChl
dmVudCksIGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSk7CiAgICAgZGVmYXVs
dDoKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtNDE0MSw3ICs0MTQxLDcgQEAgc3RhdGlj
IFBhc3NSZWZQdHI8S2V5Ym9hcmRFdmVudD4gY3VycmVudEtleWJvYXJkRXZlbnQoRnJhbWUqIGNv
cmVGcmFtZSkKIAogICAgIC8vIERvbid0IG1ha2UgYW4gZXZlbnQgZnJvbSB0aGUgbnVtIGxvY2sg
YW5kIGZ1bmN0aW9uIGtleXMuCiAgICAgaWYgKGNvcmVGcmFtZSAmJiBrZXlDb2RlICE9IDAgJiYg
a2V5Q29kZSAhPSAxMCAmJiBrZXlDb2RlICE9IDYzKSB7Ci0gICAgICAgIGNvcmVGcmFtZS0+ZXZl
bnRIYW5kbGVyKCktPmtleUV2ZW50KFBsYXRmb3JtS2V5Ym9hcmRFdmVudChldmVudCkpOworICAg
ICAgICBjb3JlRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5rZXlFdmVudChQbGF0Zm9ybUV2ZW50RmFj
dG9yeTo6Y3JlYXRlUGxhdGZvcm1LZXlib2FyZEV2ZW50KGV2ZW50KSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJQREZWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1t
CmluZGV4IDhhZTBmM2NmZDU3ODE5MTVlOWQxNGFkNTY4ZmM5OTc2MjQxYWNmNDMuLmM1ZmU5MjEw
ZWM0YjExNGQ1Njc5N2QzMWM2MzM5ZDVhY2Q1NDAzODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlBERlZpZXcubW0KQEAgLTU4LDcgKzU4LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvS1VS
TC5oPgogI2ltcG9ydCA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L01vdXNlRXZlbnQuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg+
CisjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtRXZlbnRGYWN0b3J5Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJOU0F0
dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CkBAIC05
NTksNyArOTU5LDcgQEAgc3RhdGljIEJPT0wgaXNGcmFtZUluUmFuZ2UoV2ViRnJhbWUgKmZyYW1l
LCBET01SYW5nZSAqcmFuZ2UpCiAgICAgICAgICAgICBidXR0b24gPSBbbnNFdmVudCBidXR0b25O
dW1iZXJdOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTlNLZXlEb3duOiB7Ci0g
ICAgICAgICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQgcGUobnNFdmVudCk7CisgICAgICAgICAg
ICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQgcGUgPSBQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRl
UGxhdGZvcm1LZXlib2FyZEV2ZW50KG5zRXZlbnQpOwogICAgICAgICAgICAgcGUuZGlzYW1iaWd1
YXRlS2V5RG93bkV2ZW50KFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pOwogICAgICAgICAgICAg
ZXZlbnQgPSBLZXlib2FyZEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmtleWRvd25FdmVudCwg
dHJ1ZSwgdHJ1ZSwgMCwKICAgICAgICAgICAgICAgICBwZS5rZXlJZGVudGlmaWVyKCksIHBlLndp
bmRvd3NWaXJ0dWFsS2V5Q29kZSgpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmlu
ZGV4IGQ3YzlhYjRlNWRiYTM2MDBkOTAyM2U2MTZhNmIxZDQ0MDNmYzI5NmIuLjZkMDE3NzcwNzEz
MzA2ZDc4ODc1NWM2ZjA3YTEzMWZkMzQxNjgxNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0KQEAgLTE0NCw3ICsxNDQsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1BhZ2VDYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlR3JvdXAu
aD4KLSNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1Nb3VzZUV2ZW50Lmg+CisjaW1wb3J0IDxXZWJD
b3JlL1BsYXRmb3JtRXZlbnRGYWN0b3J5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Byb2dyZXNzVHJh
Y2tlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1JlbmRlcldpZGdldC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkV2
ZW50Q29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViRXZlbnRDb252ZXJz
aW9uLmNwcAppbmRleCBhNTMxNTczYTMwNjEzNGU2MjUzMWY1NWIwYTExZTU1MGUyMzU1YThhLi5h
MmI0MWYyM2IwMGM4MzhmMmJjZDgwNDc4NDVjNGU4ZDhiZmNlODgzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcApAQCAtNDksMTAgKzQ5LDE2IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAKLSAg
ICAgICAgbV9zaGlmdEtleSA9IHdlYkV2ZW50LnNoaWZ0S2V5KCk7Ci0gICAgICAgIG1fY3RybEtl
eSA9IHdlYkV2ZW50LmNvbnRyb2xLZXkoKTsKLSAgICAgICAgbV9hbHRLZXkgPSB3ZWJFdmVudC5h
bHRLZXkoKTsKLSAgICAgICAgbV9tZXRhS2V5ID0gd2ViRXZlbnQubWV0YUtleSgpOworICAgICAg
ICBtX21vZGlmaWVycyA9IDA7CisgICAgICAgIGlmICh3ZWJFdmVudC5zaGlmdEtleSgpKQorICAg
ICAgICAgICAgbV9tb2RpZmllcnMgfD0gU2hpZnRLZXk7CisgICAgICAgIGlmICh3ZWJFdmVudC5j
b250cm9sS2V5KCkpCisgICAgICAgICAgICBtX21vZGlmaWVycyB8PSBDdHJsS2V5OworICAgICAg
ICBpZiAod2ViRXZlbnQuYWx0S2V5KCkpCisgICAgICAgICAgICBtX21vZGlmaWVycyB8PSBBbHRL
ZXk7CisgICAgICAgIGlmICh3ZWJFdmVudC5hbHRLZXkoKSkKKyAgICAgICAgICAgIG1fbW9kaWZp
ZXJzIHw9IE1ldGFLZXk7CisKICAgICAgICAgbV90aW1lc3RhbXAgPSB3ZWJFdmVudC50aW1lc3Rh
bXAoKTsKIAogICAgICAgICAvLyBQbGF0Zm9ybU1vdXNlRXZlbnQKQEAgLTc4LDEzICs4NCwxMyBA
QCBwdWJsaWM6CiAgICAgICAgIG1fY2xpY2tDb3VudCA9IHdlYkV2ZW50LmNsaWNrQ291bnQoKTsK
IAogICAgICAgICBtX21vZGlmaWVyRmxhZ3MgPSAwOwotICAgICAgICBpZiAobV9zaGlmdEtleSkK
KyAgICAgICAgaWYgKHdlYkV2ZW50LnNoaWZ0S2V5KCkpCiAgICAgICAgICAgICBtX21vZGlmaWVy
RmxhZ3MgfD0gV2ViRXZlbnQ6OlNoaWZ0S2V5OwotICAgICAgICBpZiAobV9jdHJsS2V5KQorICAg
ICAgICBpZiAod2ViRXZlbnQuY29udHJvbEtleSgpKQogICAgICAgICAgICAgbV9tb2RpZmllckZs
YWdzIHw9IFdlYkV2ZW50OjpDb250cm9sS2V5OwotICAgICAgICBpZiAobV9hbHRLZXkpCisgICAg
ICAgIGlmICh3ZWJFdmVudC5hbHRLZXkoKSkKICAgICAgICAgICAgIG1fbW9kaWZpZXJGbGFncyB8
PSBXZWJFdmVudDo6QWx0S2V5OwotICAgICAgICBpZiAobV9tZXRhS2V5KQorICAgICAgICBpZiAo
d2ViRXZlbnQuYWx0S2V5KCkpCiAgICAgICAgICAgICBtX21vZGlmaWVyRmxhZ3MgfD0gV2ViRXZl
bnQ6Ok1ldGFLZXk7CiAKICNpZiBQTEFURk9STShXSU4pCkBAIC0xMDQsMTAgKzExMCwxNyBAQCBw
dWJsaWM6CiAgICAgewogICAgICAgICAvLyBQbGF0Zm9ybUV2ZW50CiAgICAgICAgIG1fdHlwZSA9
IFBsYXRmb3JtRXZlbnQ6OldoZWVsOwotICAgICAgICBtX3NoaWZ0S2V5ID0gd2ViRXZlbnQuc2hp
ZnRLZXkoKTsKLSAgICAgICAgbV9jdHJsS2V5ID0gd2ViRXZlbnQuY29udHJvbEtleSgpOwotICAg
ICAgICBtX2FsdEtleSA9IHdlYkV2ZW50LmFsdEtleSgpOwotICAgICAgICBtX21ldGFLZXkgPSB3
ZWJFdmVudC5tZXRhS2V5KCk7CisKKyAgICAgICAgbV9tb2RpZmllcnMgPSAwOworICAgICAgICBp
ZiAod2ViRXZlbnQuc2hpZnRLZXkoKSkKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IFNoaWZ0
S2V5OworICAgICAgICBpZiAod2ViRXZlbnQuY29udHJvbEtleSgpKQorICAgICAgICAgICAgbV9t
b2RpZmllcnMgfD0gQ3RybEtleTsKKyAgICAgICAgaWYgKHdlYkV2ZW50LmFsdEtleSgpKQorICAg
ICAgICAgICAgbV9tb2RpZmllcnMgfD0gQWx0S2V5OworICAgICAgICBpZiAod2ViRXZlbnQuYWx0
S2V5KCkpCisgICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNZXRhS2V5OworCiAgICAgICAgIG1f
dGltZXN0YW1wID0gd2ViRXZlbnQudGltZXN0YW1wKCk7CiAKICAgICAgICAgLy8gUGxhdGZvcm1X
aGVlbEV2ZW50CkBAIC0xNTQsMTAgKzE2NywxNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogCi0gICAgICAgIG1fc2hpZnRLZXkgPSB3ZWJF
dmVudC5zaGlmdEtleSgpOwotICAgICAgICBtX2N0cmxLZXkgPSB3ZWJFdmVudC5jb250cm9sS2V5
KCk7Ci0gICAgICAgIG1fYWx0S2V5ID0gd2ViRXZlbnQuYWx0S2V5KCk7Ci0gICAgICAgIG1fbWV0
YUtleSA9IHdlYkV2ZW50Lm1ldGFLZXkoKTsKKyAgICAgICAgbV9tb2RpZmllcnMgPSAwOworICAg
ICAgICBpZiAod2ViRXZlbnQuc2hpZnRLZXkoKSkKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9
IFNoaWZ0S2V5OworICAgICAgICBpZiAod2ViRXZlbnQuY29udHJvbEtleSgpKQorICAgICAgICAg
ICAgbV9tb2RpZmllcnMgfD0gQ3RybEtleTsKKyAgICAgICAgaWYgKHdlYkV2ZW50LmFsdEtleSgp
KQorICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gQWx0S2V5OworICAgICAgICBpZiAod2ViRXZl
bnQuYWx0S2V5KCkpCisgICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNZXRhS2V5OworCiAgICAg
ICAgIG1fdGltZXN0YW1wID0gd2ViRXZlbnQudGltZXN0YW1wKCk7CiAKICAgICAgICAgLy8gUGxh
dGZvcm1LZXlib2FyZEV2ZW50CkBAIC0xNjYsMTQgKzE4NSwxMCBAQCBwdWJsaWM6CiAgICAgICAg
IG1fa2V5SWRlbnRpZmllciA9IHdlYkV2ZW50LmtleUlkZW50aWZpZXIoKTsKICAgICAgICAgbV93
aW5kb3dzVmlydHVhbEtleUNvZGUgPSB3ZWJFdmVudC53aW5kb3dzVmlydHVhbEtleUNvZGUoKTsK
ICAgICAgICAgbV9uYXRpdmVWaXJ0dWFsS2V5Q29kZSA9IHdlYkV2ZW50Lm5hdGl2ZVZpcnR1YWxL
ZXlDb2RlKCk7CisgICAgICAgIG1fbWFjQ2hhckNvZGUgPSB3ZWJFdmVudC5tYWNDaGFyQ29kZSgp
OwogICAgICAgICBtX2F1dG9SZXBlYXQgPSB3ZWJFdmVudC5pc0F1dG9SZXBlYXQoKTsKICAgICAg
ICAgbV9pc0tleXBhZCA9IHdlYkV2ZW50LmlzS2V5cGFkKCk7Ci0gICAgICAgIAotI2lmIFBMQVRG
T1JNKFdJTikKLSAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBtYWtlIG1faXNTeXN0ZW1LZXkg
YXZhaWxhYmxlIChhbmQgZmFsc2UpIG9uIGFsbCBwbGF0Zm9ybXMKLSAgICAgICAgLy8gdG8gYXZv
aWQgdGhpcyAjZGVmaW5lLiAKICAgICAgICAgbV9pc1N5c3RlbUtleSA9IHdlYkV2ZW50LmlzU3lz
dGVtS2V5KCk7Ci0jZW5kaWYKICAgICB9CiB9OwogCkBAIC0yMDIsMTAgKzIxNywxNiBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogCi0gICAg
ICAgIG1fc2hpZnRLZXkgPSB3ZWJFdmVudC5zaGlmdEtleSgpOwotICAgICAgICBtX2N0cmxLZXkg
PSB3ZWJFdmVudC5jb250cm9sS2V5KCk7Ci0gICAgICAgIG1fYWx0S2V5ID0gd2ViRXZlbnQuYWx0
S2V5KCk7Ci0gICAgICAgIG1fbWV0YUtleSA9IHdlYkV2ZW50Lm1ldGFLZXkoKTsKKyAgICAgICAg
bV9tb2RpZmllcnMgPSAwOworICAgICAgICBpZiAod2ViRXZlbnQuc2hpZnRLZXkoKSkKKyAgICAg
ICAgICAgIG1fbW9kaWZpZXJzIHw9IFNoaWZ0S2V5OworICAgICAgICBpZiAod2ViRXZlbnQuY29u
dHJvbEtleSgpKQorICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gQ3RybEtleTsKKyAgICAgICAg
aWYgKHdlYkV2ZW50LmFsdEtleSgpKQorICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gQWx0S2V5
OworICAgICAgICBpZiAod2ViRXZlbnQuYWx0S2V5KCkpCisgICAgICAgICAgICBtX21vZGlmaWVy
cyB8PSBNZXRhS2V5OworCiAgICAgICAgIG1fdGltZXN0YW1wID0gd2ViRXZlbnQudGltZXN0YW1w
KCk7CiAKICAgICAgICAgLy8gUGxhdGZvcm1HZXN0dXJlRXZlbnQKQEAgLTI3NCwxMCArMjk1LDE2
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9
CiAKLSAgICAgICAgbV9jdHJsS2V5ID0gd2ViRXZlbnQuY29udHJvbEtleSgpOwotICAgICAgICBt
X2FsdEtleSA9IHdlYkV2ZW50LmFsdEtleSgpOwotICAgICAgICBtX3NoaWZ0S2V5ID0gd2ViRXZl
bnQuc2hpZnRLZXkoKTsKLSAgICAgICAgbV9tZXRhS2V5ID0gd2ViRXZlbnQubWV0YUtleSgpOwor
ICAgICAgICBtX21vZGlmaWVycyA9IDA7CisgICAgICAgIGlmICh3ZWJFdmVudC5zaGlmdEtleSgp
KQorICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gU2hpZnRLZXk7CisgICAgICAgIGlmICh3ZWJF
dmVudC5jb250cm9sS2V5KCkpCisgICAgICAgICAgICBtX21vZGlmaWVycyB8PSBDdHJsS2V5Owor
ICAgICAgICBpZiAod2ViRXZlbnQuYWx0S2V5KCkpCisgICAgICAgICAgICBtX21vZGlmaWVycyB8
PSBBbHRLZXk7CisgICAgICAgIGlmICh3ZWJFdmVudC5hbHRLZXkoKSkKKyAgICAgICAgICAgIG1f
bW9kaWZpZXJzIHw9IE1ldGFLZXk7CisKICAgICAgICAgbV90aW1lc3RhbXAgPSB3ZWJFdmVudC50
aW1lc3RhbXAoKTsKIAogICAgICAgICAvLyBQbGF0Zm9ybVRvdWNoRXZlbnQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQppbmRleCBkY2EwMThhNDJmMTliYTRlNGU5
ZDMwZDMwMDAzYWEzMDE3MWEyOTljLi40MDNlYWJiM2VjNjk1YjJkYWZmMzI0YmU2Y2Y4ZTg2YWQz
MDE5MGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1Zp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBA
IC02Nyw3ICs2Nyw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbXBvcnQgPFdl
YkNvcmUvS2V5Ym9hcmRFdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdz
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtTW91c2VFdmVudC5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9QbGF0Zm9ybUV2ZW50RmFjdG9yeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybVNj
cmVlbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZWdpb24uaD4KICNpbXBvcnQgPFdlYktpdFN5c3Rl
bUludGVyZmFjZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCmluZGV4IDg1
ODFkZmZjMmYyOTlhMzdmZGJkYjBmYWY5MjgwMDJmNzRkYWFkZWQuLjI5YzRhYzNlZTBjMjAzNWE0
YWFiMzkwMzk4ZjVkMzViMzA4YjNkNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZh
Y2UubW0KQEAgLTY1LDYgKzY1LDcgQEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2
b2lkKQogICAgICAgICBJTklUKEdldFByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKTsKICAg
ICAgICAgSU5JVChHZXRVc2VyVG9CYXNlQ1RNKTsKICAgICAgICAgSU5JVChHZXRXaGVlbEV2ZW50
RGVsdGFzKTsKKyAgICAgICAgSU5JVChHZXROU0V2ZW50S2V5Q2hhcik7CiAgICAgICAgIElOSVQo
SGl0VGVzdE1lZGlhVUlQYXJ0KTsKICAgICAgICAgSU5JVChJbml0aWFsaXplTWF4aW11bUhUVFBD
b25uZWN0aW9uQ291bnRQZXJIb3N0KTsKICAgICAgICAgSU5JVChNZWFzdXJlTWVkaWFVSVBhcnQp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120431</attachid>
            <date>2011-12-22 20:35:45 -0800</date>
            <delta_ts>2011-12-23 17:36:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75063-20111222203552.patch</filename>
            <type>text/plain</type>
            <size>105181</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzNjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDllMzE1YWQwMDkzODMz
MzliZTAwYWRiYjVjZWQ2MzdiOTQwZTExMi4uMjM5MjA1ZjY3YzVjZTM5N2NhY2M0ODcwMzZmNTdi
NzVmZTg0OGQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDExLTEyLTIxICBTYW0g
V2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RhcnQgZXh0cmFjdGluZyBwbGF0
Zm9ybSBzcGVjaWZpYyBiaXRzIG91dCBvZiBQbGF0Zm9ybUV2ZW50cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUwNjMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKwor
ICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmtleUV2ZW50KToKKyAgICAgICAgKiBwYWdlL21hYy9F
dmVudEhhbmRsZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OndoZWVs
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjprZXlFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmN1cnJlbnRQbGF0Zm9ybU1vdXNlRXZlbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtRXZlbnQ6OnNoaWZ0S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6
OmN0cmxLZXkpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6YWx0S2V5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6Om1ldGFLZXkpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1FdmVudDo6bW9kaWZpZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
RXZlbnQ6OlBsYXRmb3JtRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtR2VzdHVy
ZUV2ZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmtleUlkZW50
aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50OjptYWNDaGFy
Q29kZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmlzU3lzdGVt
S2V5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
S2V5RXZlbnRNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0
b3J5Lmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9y
eS5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpnbG9iYWxQb2ludCk6CisgICAgICAgIChX
ZWJDb3JlOjpnbG9iYWxQb2ludEZvckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnBvaW50Rm9y
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6bW91c2VCdXR0b25Gb3JFdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjptb3VzZUV2ZW50VHlwZUZvckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNs
aWNrQ291bnRGb3JFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjptb21lbnR1bVBoYXNlRm9yRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6cGhhc2VGb3JFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpnZXN0dXJlRXZlbnRUeXBlRm9yRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6dGV4dEZyb21F
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjp1bm1vZGlmaWVkVGV4dEZyb21FdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjprZXlJZGVudGlmaWVyRm9yS2V5RXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6aXNLZXlwYWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjp3aW5kb3dzS2V5Q29kZUZvcktl
eUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmlzS2V5VXBFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjptb2RpZmllcnNGb3JFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1vdXNl
RXZlbnRCdWlsZGVyOjpQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQbGF0Zm9ybU1vdXNlRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50QnVpbGRlcjo6UGxhdGZvcm1XaGVlbEV2
ZW50QnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3Jl
YXRlUGxhdGZvcm1XaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9h
cmRFdmVudEJ1aWxkZXI6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudEJ1aWxkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1FdmVudEZhY3Rvcnk6OmNyZWF0ZVBsYXRmb3JtS2V5Ym9hcmRFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXI6OlBsYXRm
b3JtR2VzdHVyZUV2ZW50QnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50
RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1HZXN0dXJlRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9QbGF0Zm9ybU1vdXNlRXZlbnRNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dl
YkNvcmVTeXN0ZW1JbnRlcmZhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5
c3RlbUludGVyZmFjZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2hlZWxFdmVudE1hYy5t
bToKKwogMjAxMS0xMi0yMiAgQ2hyaXMgTWFycmluICA8Y21hcnJpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgQ3Jhc2ggYW5kIGluY29ycmVjdCBiZWhhdmlvciB3aGVuIHN3aXRjaGluZyBiZXR3ZWVu
IGhhcmR3YXJlIGFuZCBzb2Z0d2FyZSBDU1MgZmlsdGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDZj
N2JmMzBiNmY3ZTE4ODBmMGVmYTFkMjNhZWUzZWM4ZGNmMGNhMzYuLjA2MmQ1NzM0ZjcwNDhiZDZi
NjBlMTA0MTFhZGIxMWM4Mzk1OTdkNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBA
QAorMjAxMS0xMi0yMSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFN0
YXJ0IGV4dHJhY3RpbmcgcGxhdGZvcm0gc3BlY2lmaWMgYml0cyBvdXQgb2YgUGxhdGZvcm1FdmVu
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1MDYz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgIChJbml0V2ViQ29yZVN5
c3RlbUludGVyZmFjZSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAg
KiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBtZW51Rm9y
RXZlbnQ6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IGFjY2VwdHNGaXJzdE1vdXNlOl0pOgor
ICAgICAgICAoLVtXZWJIVE1MVmlldyBzaG91bGREZWxheVdpbmRvd09yZGVyaW5nRm9yRXZlbnQ6
XSk6CisgICAgICAgIChjdXJyZW50S2V5Ym9hcmRFdmVudCk6CisgICAgICAgICgtW1dlYkhUTUxW
aWV3IGZsYWdzQ2hhbmdlZDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBERlZpZXcubW06Cisg
ICAgICAgICgtW1dlYlBERlZpZXcgUERGVmlld1dpbGxDbGlja09uTGluazp3aXRoVVJMOl0pOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKwogMjAxMS0xMi0yMSAgVGltb3RoeSBIYXRj
aGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjogc3VwcHJl
c3MgaW5jcmVtZW50YWwgcmVuZGVyaW5nIGFuZCB1c2UgYXBwbGljYXRpb24gY2hyb21lIG1vZGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAxNGU5MTY2YmM2YTIyZmQ5ZjlhZTY4YTU5YTA4MzRlYTM0ODVlMTkwLi43
YjNiYWM5YjhkNGZhMGQxYzc4NDllYjY1OWU3ZGM5ZTE0OWNkYTMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjAgQEAKKzIwMTEtMTItMjEgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBTdGFydCBleHRyYWN0aW5nIHBsYXRmb3JtIHNwZWNpZmljIGJpdHMgb3V0IG9mIFBs
YXRmb3JtRXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NTA2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YktpdDJQbGF0Zm9ybU1vdXNlRXZlbnQ6OldlYktpdDJQbGF0Zm9ybU1vdXNlRXZlbnQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJLaXQyUGxhdGZvcm1XaGVlbEV2ZW50OjpXZWJLaXQyUGxhdGZvcm1X
aGVlbEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0MlBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDo6V2ViS2l0MlBsYXRmb3JtS2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYktp
dDJQbGF0Zm9ybUdlc3R1cmVFdmVudDo6V2ViS2l0MlBsYXRmb3JtR2VzdHVyZUV2ZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViS2l0MlBsYXRmb3JtVG91Y2hFdmVudDo6V2ViS2l0MlBsYXRmb3Jt
VG91Y2hFdmVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5t
bToKKyAgICAgICAgKEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKToKKwogMjAxMS0xMi0yMiAg
Q2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eu
b3JnPgogCiAgICAgICAgIFtRdF0gW1dLMl0gVXNlIEhhc2hNYXAgaW5zdGVhZCBvZiBWZWN0b3Ig
aW4gdGhlIGJ1aWx0aW4gYnVuZGxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGY1ZGMwMDBlMWU1
ZGJkN2NkNWU4ODhiZGRjZWU0MDVkNzhlZjU5M2YuLmRlM2U3N2YyNzVkOGY0MTY5MDZhOTM4YzQw
M2Q5NGViY2JkYzE0ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xNTcsNiArMTU3LDcgQEAg
X19aTjdXZWJDb3JlMTB0b0RvY3VtZW50RU4zSlNDN0pTVmFsdWVFCiBfX1pON1dlYkNvcmUxMUJp
dG1hcEltYWdlQzFFUDdDR0ltYWdlUE5TXzEzSW1hZ2VPYnNlcnZlckUKIF9fWk43V2ViQ29yZTEx
Q2FjaGVkRnJhbWUyM2NhY2hlZEZyYW1lUGxhdGZvcm1EYXRhRXYKIF9fWk43V2ViQ29yZTExQ2Fj
aGVkRnJhbWUyNnNldENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhRU4zV1RGMTBQYXNzT3duUHRySU5T
XzIzQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGFFRUUKK19fWk43V2ViQ29yZTExQ2FjaGVkSW1hZ2U1
aW1hZ2VFdgogX19aTjdXZWJDb3JlMTFGaWxlQ2hvb3NlcjEwY2hvb3NlRmlsZUVSS04zV1RGNlN0
cmluZ0UKIF9fWk43V2ViQ29yZTExRmlsZUNob29zZXIxMWNob29zZUZpbGVzRVJLTjNXVEY2VmVj
dG9ySU5TMV82U3RyaW5nRUxtMEVFRQogX19aTjdXZWJDb3JlMTFGaWxlQ2hvb3NlckQxRXYKQEAg
LTI5Miw4ICsyOTMsOCBAQCBfX1pON1dlYkNvcmUxMlNoYXJlZEJ1ZmZlckQxRXYKIF9fWk43V2Vi
Q29yZTEyU3BlbGxDaGVja2VyOGRpZENoZWNrRWlSS04zV1RGNlZlY3RvcklOU18xOFRleHRDaGVj
a2luZ1Jlc3VsdEVMbTBFRUUKIF9fWk43V2ViQ29yZTEyVGV4dEVuY29kaW5nQzFFUktOM1dURjZT
dHJpbmdFCiBfX1pON1dlYkNvcmUxMlRleHRJdGVyYXRvcjExcmFuZ2VMZW5ndGhFUEtOU181UmFu
Z2VFYgotX19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3IyOWdldExvY2F0aW9uQW5kTGVuZ3RoRnJv
bVJhbmdlRVBOU183RWxlbWVudEVQS05TXzVSYW5nZUVSbVM2XwogX19aTjdXZWJDb3JlMTJUZXh0
SXRlcmF0b3IyNnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoRVBOU183RWxlbWVudEVpaWIKK19f
Wk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yMjlnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZUVQ
TlNfN0VsZW1lbnRFUEtOU181UmFuZ2VFUm1TNl8KIF9fWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9y
N2FkdmFuY2VFdgogX19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3I4c3VicmFuZ2VFUE5TXzVSYW5n
ZUVpaQogX19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3JDMUVQS05TXzVSYW5nZUVOU18yMFRleHRJ
dGVyYXRvckJlaGF2aW9yRQpAQCAtMzY1LDggKzM2Niw4IEBAIF9fWk43V2ViQ29yZTE0U2NoZW1l
UmVnaXN0cnkyNXJlZ2lzdGVyVVJMU2NoZW1lQXNTZWN1cmVFUktOM1dURjZTdHJpbmdFCiBfX1pO
N1dlYkNvcmUxNFNjaGVtZVJlZ2lzdHJ5MzJyZWdpc3RlclVSTFNjaGVtZUFzRW1wdHlEb2N1bWVu
dEVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE0U2NoZW1lUmVnaXN0cnkzNHNob3VsZExv
YWRVUkxTY2hlbWVBc0VtcHR5RG9jdW1lbnRFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUx
NFNjaGVtZVJlZ2lzdHJ5NDBzZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1l
RWJSS04zV1RGNlN0cmluZ0UKLV9fWk43V2ViQ29yZTE0U2NoZW1lUmVnaXN0cnk2MnJlZ2lzdGVy
VVJMU2NoZW1lQXNBbGxvd2luZ0xvY2FsU3RvcmFnZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nRVJL
TjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTRTY2hlbWVSZWdpc3RyeTU4cmVnaXN0ZXJVUkxT
Y2hlbWVBc0FsbG93aW5nRGF0YWJhc2VBY2Nlc3NJblByaXZhdGVCcm93c2luZ0VSS04zV1RGNlN0
cmluZ0UKK19fWk43V2ViQ29yZTE0U2NoZW1lUmVnaXN0cnk2MnJlZ2lzdGVyVVJMU2NoZW1lQXNB
bGxvd2luZ0xvY2FsU3RvcmFnZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nRVJLTjNXVEY2U3RyaW5n
RQogX19aTjdXZWJDb3JlMTRTY3JvbGxhYmxlQXJlYTE1Y29udGVudHNSZXNpemVkRXYKIF9fWk43
V2ViQ29yZTE0U2Nyb2xsYWJsZUFyZWExNmhhbmRsZVdoZWVsRXZlbnRFUktOU18xOFBsYXRmb3Jt
V2hlZWxFdmVudEUKIF9fWk43V2ViQ29yZTE0U2Nyb2xsYWJsZUFyZWExN3dpbGxFbmRMaXZlUmVz
aXplRXYKQEAgLTM5MywxNSArMzk0LDE1IEBAIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlQb2xpY3ky
MmdlbmVyYXRlUmVmZXJyZXJIZWFkZXJFTlMwXzE0UmVmZXJyZXJQb2xpY3lFUktOU180CiBfX1pO
N1dlYkNvcmUxNFNlY3VyaXR5UG9saWN5MjdyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHNFdgog
X19aTjdXZWJDb3JlMTRTZWN1cml0eVBvbGljeTI5YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50
cnlFUktOU18xNFNlY3VyaXR5T3JpZ2luRVJLTjNXVEY2U3RyaW5nRVM3X2IKIF9fWk43V2ViQ29y
ZTE0U2VjdXJpdHlQb2xpY3kzMnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5RVJLTlNf
MTRTZWN1cml0eU9yaWdpbkVSS04zV1RGNlN0cmluZ0VTN19iCi1fX1pON1dlYkNvcmUxNFN0b3Jh
Z2VUcmFja2VyN29yaWdpbnNFUk4zV1RGNlZlY3RvcklOUzFfNlJlZlB0cklOU18xNFNlY3VyaXR5
T3JpZ2luRUVFTG0wRUVFCi1fX1pON1dlYkNvcmUxNFN0b3JhZ2VUcmFja2VyN3RyYWNrZXJFdgot
X19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjlzZXRDbGllbnRFUE5TXzIwU3RvcmFnZVRyYWNr
ZXJDbGllbnRFCiBfX1pON1dlYkNvcmUxNFN0b3JhZ2VUcmFja2VyMTJkZWxldGVPcmlnaW5FUE5T
XzE0U2VjdXJpdHlPcmlnaW5FCiBfX1pON1dlYkNvcmUxNFN0b3JhZ2VUcmFja2VyMTZkZWxldGVB
bGxPcmlnaW5zRXYKIF9fWk43V2ViQ29yZTE0U3RvcmFnZVRyYWNrZXIxNnN5bmNMb2NhbFN0b3Jh
Z2VFdgogX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjE3aW5pdGlhbGl6ZVRyYWNrZXJFUktO
M1dURjZTdHJpbmdFUE5TXzIwU3RvcmFnZVRyYWNrZXJDbGllbnRFCiBfX1pON1dlYkNvcmUxNFN0
b3JhZ2VUcmFja2VyMThkaXNrVXNhZ2VGb3JPcmlnaW5FUE5TXzE0U2VjdXJpdHlPcmlnaW5FCiBf
X1pON1dlYkNvcmUxNFN0b3JhZ2VUcmFja2VyMzJzeW5jRmlsZVN5c3RlbUFuZFRyYWNrZXJEYXRh
YmFzZUV2CitfX1pON1dlYkNvcmUxNFN0b3JhZ2VUcmFja2VyN29yaWdpbnNFUk4zV1RGNlZlY3Rv
cklOUzFfNlJlZlB0cklOU18xNFNlY3VyaXR5T3JpZ2luRUVFTG0wRUVFCitfX1pON1dlYkNvcmUx
NFN0b3JhZ2VUcmFja2VyN3RyYWNrZXJFdgorX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjlz
ZXRDbGllbnRFUE5TXzIwU3RvcmFnZVRyYWNrZXJDbGllbnRFCiBfX1pON1dlYkNvcmUxNGVuZE9m
UGFyYWdyYXBoRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FTlNfMjdFZGl0aW5nQm91bmRhcnlDcm9z
c2luZ1J1bGVFCiBfX1pON1dlYkNvcmUxNUFmZmluZVRyYW5zZm9ybTVmbGlwWUV2CiBfX1pON1dl
YkNvcmUxNUFmZmluZVRyYW5zZm9ybTVzY2FsZUVkCkBAIC00MzMsOCArNDM0LDggQEAgX19aTjdX
ZWJDb3JlMTVHcmFwaGljc0NvbnRleHQxMWNsZWFyU2hhZG93RXYKIF9fWk43V2ViQ29yZTE1R3Jh
cGhpY3NDb250ZXh0MTJzZXRGaWxsQ29sb3JFUktOU181Q29sb3JFTlNfMTBDb2xvclNwYWNlRQog
X19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQxNXNldEZpbGxHcmFkaWVudEVOM1dURjEwUGFz
c1JlZlB0cklOU184R3JhZGllbnRFRUUKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MThz
ZXRTaG91bGRBbnRpYWxpYXNFYgotX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQyMHNldFNo
b3VsZFNtb290aEZvbnRzRWIKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MjBlbmRUcmFu
c3BhcmVuY3lMYXllckV2CitfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDIwc2V0U2hvdWxk
U21vb3RoRm9udHNFYgogX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQyMXNldENvbXBvc2l0
ZU9wZXJhdGlvbkVOU18xN0NvbXBvc2l0ZU9wZXJhdG9yRQogX19aTjdXZWJDb3JlMTVHcmFwaGlj
c0NvbnRleHQyMmFwcGx5RGV2aWNlU2NhbGVGYWN0b3JFZgogX19aTjdXZWJDb3JlMTVHcmFwaGlj
c0NvbnRleHQyMmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJFZgpAQCAtNTM5LDcgKzU0MCw2IEBAIF9f
Wk43V2ViQ29yZTE3UmVndWxhckV4cHJlc3Npb25DMUVSS04zV1RGNlN0cmluZ0VOUzFfMTlUZXh0
Q2FzZVNlbnNpdGl2aXR5RQogX19aTjdXZWJDb3JlMTdSZWd1bGFyRXhwcmVzc2lvbkQxRXYKIF9f
Wk43V2ViQ29yZTE3Y2FjaGVET01TdHJ1Y3R1cmVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE4z
SlNDOVN0cnVjdHVyZUVQS05TMl85Q2xhc3NJbmZvRQogX19aTjdXZWJDb3JlMTdvcGVuVGVtcG9y
YXJ5RmlsZUVSS04zV1RGNlN0cmluZ0VSaQotX19aTjdXZWJDb3JlMThQbGF0Zm9ybU1vdXNlRXZl
bnRDMUVQN05TRXZlbnRQNk5TVmlldwogX19aTjdXZWJDb3JlMThQbGF0Zm9ybVN0cmF0ZWdpZXMy
NmNyZWF0ZUxvY2FsaXphdGlvblN0cmF0ZWd5RXYKIF9fWk43V2ViQ29yZTE4U2VhcmNoUG9wdXBN
ZW51TWFjQzFFUE5TXzE1UG9wdXBNZW51Q2xpZW50RQogX19aTjdXZWJDb3JlMThpc1N0YXJ0T2ZQ
YXJhZ3JhcGhFUktOU18xNVZpc2libGVQb3NpdGlvbkVOU18yN0VkaXRpbmdCb3VuZGFyeUNyb3Nz
aW5nUnVsZUUKQEAgLTU4OCw2ICs1ODgsOCBAQCBfX1pON1dlYkNvcmUyMERpc3BsYXlTbGVlcERp
c2FibGVyQzFFUEtjCiBfX1pON1dlYkNvcmUyMERpc3BsYXlTbGVlcERpc2FibGVyRDFFdgogX19a
TjdXZWJDb3JlMjBOb2RlUmVuZGVyaW5nQ29udGV4dEMxRVBOU180Tm9kZUUKIF9fWk43V2ViQ29y
ZTIwTm9kZVJlbmRlcmluZ0NvbnRleHREMUV2CitfX1pON1dlYkNvcmUyMFBsYXRmb3JtRXZlbnRG
YWN0b3J5MjRjcmVhdGVQbGF0Zm9ybU1vdXNlRXZlbnRFUDdOU0V2ZW50UDZOU1ZpZXcKK19fWk43
V2ViQ29yZTIwUGxhdGZvcm1FdmVudEZhY3RvcnkyN2NyZWF0ZVBsYXRmb3JtS2V5Ym9hcmRFdmVu
dEVQN05TRXZlbnQKIF9fWk43V2ViQ29yZTIwUmVuZGVyRW1iZWRkZWRPYmplY3QzMHNldFNob3dz
Q3Jhc2hlZFBsdWdpbkluZGljYXRvckV2CiBfX1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VC
YXNlMTFzZXRNaW1lVHlwZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTIwUmVzb3VyY2VS
ZXNwb25zZUJhc2UxN3NldEhUVFBTdGF0dXNDb2RlRWkKQEAgLTYwNSw3ICs2MDcsNiBAQCBfX1pO
N1dlYkNvcmUyMG1ha2VSR0JBMzJGcm9tRmxvYXRzRWZmZmYKIF9fWk43V2ViQ29yZTIwcHJvdG9j
b2xJc0phdmFTY3JpcHRFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyMUJhY2tGb3J3YXJk
Q29udHJvbGxlcjExaXRlbUF0SW5kZXhFaQogX19aTjdXZWJDb3JlMjFNZW1vcnlQcmVzc3VyZUhh
bmRsZXI3aW5zdGFsbEV2Ci1fX1pON1dlYkNvcmUyMVBsYXRmb3JtS2V5Ym9hcmRFdmVudEMxRVA3
TlNFdmVudAogX19aTjdXZWJDb3JlMjFQbGF0Zm9ybUtleWJvYXJkRXZlbnQyNGRpc2FtYmlndWF0
ZUtleURvd25FdmVudEVOU18xM1BsYXRmb3JtRXZlbnQ0VHlwZUViCiBfX1pON1dlYkNvcmUyMVJl
c291cmNlTG9hZFNjaGVkdWxlcjIwc2VydmVQZW5kaW5nUmVxdWVzdHNFTlNfMjBSZXNvdXJjZUxv
YWRQcmlvcml0eUUKIF9fWk43V2ViQ29yZTIxUmVzb3VyY2VMb2FkU2NoZWR1bGVyMjRzY2hlZHVs
ZVBsdWdpblN0cmVhbUxvYWRFUE5TXzVGcmFtZUVQTlNfMzJOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlckNsaWVudEVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RQpAQCAtNjYxLDggKzY2Miw2IEBAIF9f
Wk43V2ViQ29yZTI1UGx1Z2luTWFpblRocmVhZFNjaGVkdWxlcjE2dW5yZWdpc3RlclBsdWdpbkVQ
NF9OUFAKIF9fWk43V2ViQ29yZTI1UGx1Z2luTWFpblRocmVhZFNjaGVkdWxlcjlzY2hlZHVsZXJF
dgogX19aTjdXZWJDb3JlMjVhZGRMYW5ndWFnZUNoYW5nZU9ic2VydmVyRVB2UEZ2UzBfRQogX19a
TjdXZWJDb3JlMjVjb21wdXRlVmlld3BvcnRBdHRyaWJ1dGVzRU5TXzE3Vmlld3BvcnRBcmd1bWVu
dHNFaWlpaU5TXzdJbnRTaXplRQotX19aTjdXZWJDb3JlNTByZXN0cmljdFNjYWxlRmFjdG9yVG9J
bml0aWFsU2NhbGVJZk5vdFVzZXJTY2FsYWJsZUVSTlNfMThWaWV3cG9ydEF0dHJpYnV0ZXNFCi1f
X1pON1dlYkNvcmU0MHJlc3RyaWN0TWluaW11bVNjYWxlRmFjdG9yVG9WaWV3cG9ydFNpemVFUk5T
XzE4Vmlld3BvcnRBdHRyaWJ1dGVzRU5TXzdJbnRTaXplRQogX19aTjdXZWJDb3JlMjVjb250ZXh0
TWVudUl0ZW1UYWdPdXRsaW5lRXYKIF9fWk43V2ViQ29yZTI2Q1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb25DMUV2CiBfX1pON1dlYkNvcmUyNlVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yMjdwcm9j
ZXNzaW5nVXNlclR5cGluZ0dlc3R1cmVFdgpAQCAtNzIwLDYgKzcxOSw3IEBAIF9fWk43V2ViQ29y
ZTM3Y29udGV4dE1lbnVJdGVtVGFnVHJhbnNmb3JtYXRpb25zTWVudUV2CiBfX1pON1dlYkNvcmUz
OGNvbnRleHRNZW51SXRlbVRhZ1dyaXRpbmdEaXJlY3Rpb25NZW51RXYKIF9fWk43V2ViQ29yZTNt
YWNFUktOU18xMENyZWRlbnRpYWxFCiBfX1pON1dlYkNvcmUzbWFjRVJLTlNfMjNBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZUUKK19fWk43V2ViQ29yZTQwcmVzdHJpY3RNaW5pbXVtU2NhbGVGYWN0b3JU
b1ZpZXdwb3J0U2l6ZUVSTlNfMThWaWV3cG9ydEF0dHJpYnV0ZXNFTlNfN0ludFNpemVFCiBfX1pO
N1dlYkNvcmU0MmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrR3JhbW1hcldpdGhTcGVsbGluZ0V2CiBf
X1pON1dlYkNvcmU0MmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGluZ0V2
CiBfX1pON1dlYkNvcmU0NmNvbnRleHRNZW51SXRlbVRhZ0NvcnJlY3RTcGVsbGluZ0F1dG9tYXRp
Y2FsbHlFdgpAQCAtNzg2LDYgKzc4Niw3IEBAIF9fWk43V2ViQ29yZTR0b0pTRVBOM0pTQzlFeGVj
U3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzEwQ2xpZW50UmVjdEUKIF9fWk43V2Vi
Q29yZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzE5
Q1NTU3R5bGVEZWNsYXJhdGlvbkUKIF9fWk43V2ViQ29yZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVF
UE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzVSYW5nZUUKIF9fWk43V2ViQ29yZTR0b0pTRVBO
M0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzhOb2RlTGlzdEUKK19f
Wk43V2ViQ29yZTUwcmVzdHJpY3RTY2FsZUZhY3RvclRvSW5pdGlhbFNjYWxlSWZOb3RVc2VyU2Nh
bGFibGVFUk5TXzE4Vmlld3BvcnRBdHRyaWJ1dGVzRQogX19aTjdXZWJDb3JlNUNvbG9yMTF0cmFu
c3BhcmVudEUKIF9fWk43V2ViQ29yZTVDb2xvcjV3aGl0ZUUKIF9fWk43V2ViQ29yZTVGcmFtZTEw
Y3JlYXRlVmlld0VSS05TXzdJbnRTaXplRVJLTlNfNUNvbG9yRWJTM19iTlNfMTNTY3JvbGxiYXJN
b2RlRWJTN19iCkBAIC04MzcsOSArODM4LDkgQEAgX19aTjdXZWJDb3JlNkVkaXRvcjIxYXBwbHlT
dHlsZVRvU2VsZWN0aW9uRVBOU18xOUNTU1N0eWxlRGVjbGFyYXRpb25FTlNfMTBFZGl0QWMKIF9f
Wk43V2ViQ29yZTZFZGl0b3IyMWlzU2VsZWN0aW9uTWlzc3BlbGxlZEV2CiBfX1pON1dlYkNvcmU2
RWRpdG9yMjNzZXRCYXNlV3JpdGluZ0RpcmVjdGlvbkUxNldyaXRpbmdEaXJlY3Rpb24KIF9fWk43
V2ViQ29yZTZFZGl0b3IyNGFkdmFuY2VUb05leHRNaXNzcGVsbGluZ0ViCi1fX1pON1dlYkNvcmU2
RWRpdG9yMjRyZXBsYWNlU2VsZWN0aW9uV2l0aFRleHRFUktOM1dURjZTdHJpbmdFYmIKIF9fWk43
V2ViQ29yZTZFZGl0b3IyNGNvbXB1dGVBbmRTZXRUeXBpbmdTdHlsZUVQTlNfMTlDU1NTdHlsZURl
Y2xhcmF0aW9uRU5TXzEwRWRpdEFjdGlvbkUKIF9fWk43V2ViQ29yZTZFZGl0b3IyNGlzU2VsZWN0
aW9uVW5ncmFtbWF0aWNhbEV2CitfX1pON1dlYkNvcmU2RWRpdG9yMjRyZXBsYWNlU2VsZWN0aW9u
V2l0aFRleHRFUktOM1dURjZTdHJpbmdFYmIKIF9fWk43V2ViQ29yZTZFZGl0b3IyNmRlY3JlYXNl
U2VsZWN0aW9uTGlzdExldmVsRXYKIF9fWk43V2ViQ29yZTZFZGl0b3IyNmluY3JlYXNlU2VsZWN0
aW9uTGlzdExldmVsRXYKIF9fWk43V2ViQ29yZTZFZGl0b3IyNndyaXRlU2VsZWN0aW9uVG9QYXN0
ZWJvYXJkRVJLTjNXVEY2U3RyaW5nRVJLTlMxXzZWZWN0b3JJUzJfTG0wRUVFCkBAIC05MjcsNiAr
OTI4LDcgQEAgX19aTjdXZWJDb3JlOEludFBvaW50QzFFUks4X05TUG9pbnQKIF9fWk43V2ViQ29y
ZThQb3NpdGlvbkMxRU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2RlRUVFaU5TMF8xMEFuY2hvclR5
cGVFCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxNHNldEphdmFFbmFibGVkRWIKIF9fWk43V2ViQ29y
ZThTZXR0aW5nczE1c2V0V2ViR0xFbmFibGVkRWIKK19fWk43V2ViQ29yZThTZXR0aW5nczE2c2V0
U2NyaXB0RW5hYmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxNnNldFVzZXNQYWdlQ2FjaGVF
YgogX19aTjdXZWJDb3JlOFNldHRpbmdzMTdzZXRQbHVnaW5zRW5hYmxlZEViCiBfX1pON1dlYkNv
cmU4U2V0dGluZ3MxOHNldERPTVBhc3RlQWxsb3dlZEViCkBAIC05MzksNyArOTQxLDYgQEAgX19a
TjdXZWJDb3JlOFNldHRpbmdzMTltaW5ET01UaW1lckludGVydmFsRXYKIF9fWk43V2ViQ29yZThT
ZXR0aW5nczE5c2V0U2hvd0RlYnVnQm9yZGVyc0ViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyMHNl
dEN1cnNpdmVGb250RmFtaWx5RVJLTjNXVEYxMkF0b21pY1N0cmluZ0UxMVVTY3JpcHRDb2RlCiBf
X1pON1dlYkNvcmU4U2V0dGluZ3MyMHNldEZhbnRhc3lGb250RmFtaWx5RVJLTjNXVEYxMkF0b21p
Y1N0cmluZ0UxMVVTY3JpcHRDb2RlCi1fX1pON1dlYkNvcmU4U2V0dGluZ3MxNnNldFNjcmlwdEVu
YWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjBzZXRYU1NBdWRpdG9yRW5hYmxlZEViCiBf
X1pON1dlYkNvcmU4U2V0dGluZ3MyMXNldFNob3dSZXBhaW50Q291bnRlckViCiBfX1pON1dlYkNv
cmU4U2V0dGluZ3MyMXNldFN0YW5kYXJkRm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdF
MTFVU2NyaXB0Q29kZQpAQCAtMTAyNiw3ICsxMDI3LDYgQEAgX19aTjdXZWJDb3JlOUZyYW1lVmll
dzE3c2V0U2Nyb2xsUG9zaXRpb25FUktOU184SW50UG9pbnRFCiBfX1pON1dlYkNvcmU5RnJhbWVW
aWV3MTdzZXRUcmFja3NSZXBhaW50c0ViCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MTh1cGRhdGVD
b250cm9sVGludHNFdgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzE5c2Nyb2xsRWxlbWVudFRvUmVj
dEVQTlNfN0VsZW1lbnRFUktOU183SW50UmVjdEUKLV9fWk43V2ViQ29yZTlGcmFtZVZpZXc0M3Nl
dFNob3VsZExheW91dEZpeGVkRWxlbWVudHNSZWxhdGl2ZVRvRnJhbWVFYgogX19aTjdXZWJDb3Jl
OUZyYW1lVmlldzIwZW50ZXJDb21wb3NpdGluZ01vZGVFdgogX19aTjdXZWJDb3JlOUZyYW1lVmll
dzIxZmx1c2hEZWZlcnJlZFJlcGFpbnRzRXYKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMnNldEJh
c2VCYWNrZ3JvdW5kQ29sb3JFUktOU181Q29sb3JFCkBAIC0xMDM3LDYgKzEwMzcsNyBAQCBfX1pO
N1dlYkNvcmU5RnJhbWVWaWV3MjlzZXRTaG91bGRVcGRhdGVXaGlsZU9mZnNjcmVlbkViCiBfX1pO
N1dlYkNvcmU5RnJhbWVWaWV3Mzd1cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZl
RXYKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXczOHNjcm9sbFBvc2l0aW9uQ2hhbmdlZFZpYVBsYXRm
b3JtV2lkZ2V0RXYKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXczOHN5bmNDb21wb3NpdGluZ1N0YXRl
SW5jbHVkaW5nU3ViZnJhbWVzRXYKK19fWk43V2ViQ29yZTlGcmFtZVZpZXc0M3NldFNob3VsZExh
eW91dEZpeGVkRWxlbWVudHNSZWxhdGl2ZVRvRnJhbWVFYgogX19aTjdXZWJDb3JlOUZyYW1lVmll
dzZjcmVhdGVFUE5TXzVGcmFtZUUKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXc2Y3JlYXRlRVBOU181
RnJhbWVFUktOU183SW50U2l6ZUUKIF9fWk43V2ViQ29yZTlIVE1MTmFtZXMxMGxpc3RpbmdUYWdF
CkBAIC0xMTMzLDEzICsxMTM0LDEyIEBAIF9fWk5LN1dlYkNvcmUxMFNjcm9sbFZpZXcxNHNjcm9s
bGJhck1vZGVzRVJOU18xM1Njcm9sbGJhck1vZGVFUzJfCiBfX1pOSzdXZWJDb3JlMTBTY3JvbGxW
aWV3MTR1c2VGaXhlZExheW91dEV2CiBfX1pOSzdXZWJDb3JlMTBTY3JvbGxWaWV3MTVmaXhlZExh
eW91dFNpemVFdgogX19aTks3V2ViQ29yZTEwU2Nyb2xsVmlldzE2Y29udGVudHNUb1dpbmRvd0VS
S05TXzdJbnRSZWN0RQotX19aTks3V2ViQ29yZTEwU2Nyb2xsVmlldzE2d2luZG93VG9Db250ZW50
c0VSS05TXzdJbnRSZWN0RQogX19aTks3V2ViQ29yZTEwU2Nyb2xsVmlldzE2Y29udGVudHNUb1dp
bmRvd0VSS05TXzhJbnRQb2ludEUKK19fWk5LN1dlYkNvcmUxMFNjcm9sbFZpZXcxNndpbmRvd1Rv
Q29udGVudHNFUktOU183SW50UmVjdEUKIF9fWk5LN1dlYkNvcmUxMFNjcm9sbFZpZXcxNndpbmRv
d1RvQ29udGVudHNFUktOU184SW50UG9pbnRFCi1fX1pOSzdXZWJDb3JlMTBTY3JvbGxWaWV3MTh2
aXNpYmxlQ29udGVudFJlY3RFYgogX19aTks3V2ViQ29yZTEwU2Nyb2xsVmlldzE4Y29udGVudHNU
b1Jvb3RWaWV3RVJLTlNfN0ludFJlY3RFCiBfX1pOSzdXZWJDb3JlMTBTY3JvbGxWaWV3MThjb250
ZW50c1RvUm9vdFZpZXdFUktOU184SW50UG9pbnRFCi1fX1pON1dlYkNvcmUxMUNhY2hlZEltYWdl
NWltYWdlRXYKK19fWk5LN1dlYkNvcmUxMFNjcm9sbFZpZXcxOHZpc2libGVDb250ZW50UmVjdEVi
CiBfX1pOSzdXZWJDb3JlMTFGcmFtZUxvYWRlcjEwaXNDb21wbGV0ZUV2CiBfX1pOSzdXZWJDb3Jl
MTFGcmFtZUxvYWRlcjE0Y2FuY2VsbGVkRXJyb3JFUktOU18xNVJlc291cmNlUmVxdWVzdEUKIF9f
Wk5LN1dlYkNvcmUxMUZyYW1lTG9hZGVyMTRmcmFtZUhhc0xvYWRlZEV2CkBAIC0xMTc0LDExICsx
MTc0LDExIEBAIF9fWk5LN1dlYkNvcmUxMVNjcmlwdFZhbHVlOWdldFN0cmluZ0VQTjNKU0M5RXhl
Y1N0YXRlRVJOM1dURjZTdHJpbmdFCiBfX1pOSzdXZWJDb3JlMTJJY29uRGF0YWJhc2UxMmRhdGFi
YXNlUGF0aEV2CiBfX1pOSzdXZWJDb3JlMTJJY29uRGF0YWJhc2UyNHNob3VsZFN0b3BUaHJlYWRB
Y3Rpdml0eUV2CiBfX1pOSzdXZWJDb3JlMTJJY29uRGF0YWJhc2U5aXNFbmFibGVkRXYKLV9fWk5L
N1dlYkNvcmUxMlJlbmRlck9iamVjdDIzYWJzb2x1dGVCb3VuZGluZ0JveFJlY3RFYgorX19aTks3
V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTNzdHlsZUluUmVnaW9uRXYKIF9fWk5LN1dlYkNvcmUxMlJl
bmRlck9iamVjdDE0ZW5jbG9zaW5nTGF5ZXJFdgogX19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0
MTVsb2NhbFRvQWJzb2x1dGVFUktOU18xMEZsb2F0UG9pbnRFYmIKK19fWk5LN1dlYkNvcmUxMlJl
bmRlck9iamVjdDIzYWJzb2x1dGVCb3VuZGluZ0JveFJlY3RFYgogX19aTks3V2ViQ29yZTEyUmVu
ZGVyT2JqZWN0N2NoaWxkQXRFagotX19aTks3V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTNzdHlsZUlu
UmVnaW9uRXYKIF9fWk5LN1dlYkNvcmUxMlJlbmRlcldpZGdldDE0d2luZG93Q2xpcFJlY3RFdgog
X19aTks3V2ViQ29yZTEyU2hhcmVkQnVmZmVyMTFnZXRTb21lRGF0YUVSUEtjagogX19aTks3V2Vi
Q29yZTEyU2hhcmVkQnVmZmVyNGRhdGFFdgpAQCAtMTQ5MCw2ICsxNDkwLDcgQEAgX3drR2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeQogX3drR2V0SFRUUFBpcGVsaW5pbmdQcmlvcml0eQogX3drR2V0
SHlwaGVuYXRpb25Mb2NhdGlvbkJlZm9yZUluZGV4CiBfd2tHZXRNSU1FVHlwZUZvckV4dGVuc2lv
bgorX3drR2V0TlNFdmVudEtleUNoYXIKIF93a0dldE5TVVJMUmVzcG9uc2VDYWxjdWxhdGVkRXhw
aXJhdGlvbgogX3drR2V0TlNVUkxSZXNwb25zZUxhc3RNb2RpZmllZERhdGUKIF93a0dldE5TVVJM
UmVzcG9uc2VNdXN0UmV2YWxpZGF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDhiODRlYTI2YmY3YjI0ZTM0OTc4YjAwNzBjYzJh
NTE3ZTY1ZDI1Y2IuLjExOTgxMzkwNDQwMmEwYmY2ZDVlMDU2MWZhODk1NGViMmZkZjQ0MWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTUyNTEsNiArNTI1MSw4IEBACiAJCUJDQThDODFGMTFFM0QzNjkwMDgxMkZCNyAvKiBCYWNr
Rm9yd2FyZENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkNBOEM4MUQxMUUzRDM2OTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkQ29udHJv
bGxlci5jcHAgKi87IH07CiAJCUJDQThDQTVGMTFFNEU2RDEwMDgxMkZCNyAvKiBCYWNrRm9yd2Fy
ZExpc3RJbXBsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDQThDQTVEMTFFNEU2RDEwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZExpc3RJbXBsLmNwcCAq
LzsgfTsKIAkJQkNBOENBNjAxMUU0RTZEMTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkTGlzdEltcGwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQThDQTVF
MTFFNEU2RDEwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZExpc3RJbXBsLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkNBQTQ4NkYxNEEwNTI1MzAwODhG
QUM0IC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBQTQ4NkQxNEEwNTI1MzAwODhGQUM0IC8qIFBsYXRmb3Jt
RXZlbnRGYWN0b3J5Lm1tICovOyB9OworCQlCQ0FBNDg3MDE0QTA1MjUzMDA4OEZBQzQgLyogUGxh
dGZvcm1FdmVudEZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDQUE0ODZFMTRBMDUyNTMwMDg4RkFDNCAvKiBQbGF0Zm9ybUV2ZW50RmFjdG9y
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJD
QUE5MEMzMEE3RUJBNjAwMDhCMTIyOSAvKiBTY3JvbGxiYXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBQTkwQzIwQTdFQkE2MDAwOEIxMjI5IC8q
IFNjcm9sbGJhci5jcHAgKi87IH07CiAJCUJDQUI0MTgxMTNFMzU2RTgwMEQ4QUFGMyAvKiBSZWdp
b24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNB
QjQxN0YxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5jcHAgKi87IH07CiAJCUJDQUI0MTgyMTNF
MzU2RTgwMEQ4QUFGMyAvKiBSZWdpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDQUI0MTgwMTNFMzU2RTgwMEQ4QUFGMyAvKiBSZWdpb24uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTI2MjIsNiAr
MTI2MjQsOCBAQAogCQlCQ0E4QzgxRDExRTNEMzY5MDA4MTJGQjcgLyogQmFja0ZvcndhcmRDb250
cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhY2tGb3J3
YXJkQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQThDQTVE
MTFFNEU2RDEwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZExpc3RJbXBsLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhY2tGb3J3YXJkTGlzdEltcGwuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0E4Q0E1RTExRTRFNkQxMDA4MTJGQjcgLyogQmFja0Zv
cndhcmRMaXN0SW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCYWNrRm9y
d2FyZExpc3RJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDQUE0ODZEMTRB
MDUyNTMwMDg4RkFDNCAvKiBQbGF0Zm9ybUV2ZW50RmFjdG9yeS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsYXRmb3JtRXZlbnRGYWN0b3J5Lm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlCQ0FBNDg2RTE0QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZv
cm1FdmVudEZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZv
cm1FdmVudEZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNBQTkwQzIw
QTdFQkE2MDAwOEIxMjI5IC8qIFNjcm9sbGJhci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2Nyb2xsYmFyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkNBQjQxN0YxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQ0FCNDE4MDEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTU2NjMsNiArMTU2NjcsOCBAQAogCQkJCTkzODBGNDc3MDlBMTFBQ0MwMDFGREIzNCAv
KiBXaWRnZXRNYWMubW0gKi8sCiAJCQkJQ0RFQTc2MkUxNDYwODRERTAwOEIzMUYxIC8qIFBsYXRm
b3JtQ2xvY2tDQS5jcHAgKi8sCiAJCQkJQ0RFQTc2MkYxNDYwODRFRTAwOEIzMUYxIC8qIFBsYXRm
b3JtQ2xvY2tDQS5oICovLAorCQkJCUJDQUE0ODZEMTRBMDUyNTMwMDg4RkFDNCAvKiBQbGF0Zm9y
bUV2ZW50RmFjdG9yeS5tbSAqLywKKwkJCQlCQ0FBNDg2RTE0QTA1MjUzMDA4OEZBQzQgLyogUGxh
dGZvcm1FdmVudEZhY3RvcnkuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWFjOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI0OTY1LDkgKzI0OTcxLDkgQEAKIAkJCQkxQTJGOUQ3QTE0
OTY4Qzc0MDA2NUFDNjMgLyogU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBQTcxNjBCMTQ5QkM0REIwMDE2RUMxOSAvKiBUaWxlQ2FjaGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUMzN0NERUJEMTQ5RUYyMDMwMDQyMDkwRCAvKiBDb2xvckNob29zZXJDbGllbnQuaCBp
biBIZWFkZXJzICovLAotCQkJCTFBQzY5MjZBMTRBMTI1MzIwMEJEODVGMSAvKiBTY3JvbGxhYmxl
QXJlYUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkRCMTcwMDYxNEEyQkFCMjAwQTJCNUQ5
IC8qIE11bHRpQ2hhbm5lbFJlc2FtcGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQwMEQ3QTUx
NEEzRjYxOTAwNzM0MDExIC8qIFNpbmNSZXNhbXBsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUJD
QUE0ODcwMTRBMDUyNTMwMDg4RkFDNCAvKiBQbGF0Zm9ybUV2ZW50RmFjdG9yeS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkBAIC0yNzg3NCw2ICsyNzg4MCw3IEBACiAJCQkJNTJGNTJFMTExNEEwMTM0RjAwQUND
Mzk3IC8qIE5TU2Nyb2xsZXJJbXBEZXRhaWxzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRkRCMTcw
MDUxNEEyQkFCMjAwQTJCNUQ5IC8qIE11bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlGRDAwRDdBNDE0QTNGNjE5MDA3MzQwMTEgLyogU2luY1Jlc2FtcGxlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlCQ0FBNDg2RjE0QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZvcm1F
dmVudEZhY3RvcnkubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2
ZW50SGFuZGxlck1hYy5tbQppbmRleCA4MmFhNzllMDM0Mzc5ZTEyOGNmNGI2NzhkYzc1MmRkM2Iz
YWMxYmNlLi41ZjkxMTMyMTg4NDM0YTI2NzRlMmQzNGU4NWY3OGRmNTI0ZTMwOGJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCkBAIC00MSw4ICs0MSw3IEBA
CiAjaW5jbHVkZSAiTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5oIgogI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtS2V5
Ym9hcmRFdmVudC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgorI2luY2x1ZGUg
IlBsYXRmb3JtRXZlbnRGYWN0b3J5LmgiCiAjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCiAjaW5j
bHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyLmgi
CkBAIC0xMDQsOSArMTAzLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OndoZWVsRXZlbnQoTlNFdmVu
dCAqZXZlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEN1cnJlbnRFdmVudFNjb3Bl
IHNjb3BlKGV2ZW50KTsKLQotICAgIFBsYXRmb3JtV2hlZWxFdmVudCB3aGVlbEV2ZW50KGV2ZW50
LCBwYWdlLT5jaHJvbWUoKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkpOwotICAgIHJldHVybiBoYW5k
bGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQpOworICAgIHJldHVybiBoYW5kbGVXaGVlbEV2ZW50KFBs
YXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQbGF0Zm9ybVdoZWVsRXZlbnQoZXZlbnQsIHBhZ2Ut
PmNocm9tZSgpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKSkpOwogfQogCiBib29sIEV2ZW50SGFuZGxl
cjo6a2V5RXZlbnQoTlNFdmVudCAqZXZlbnQpCkBAIC0xMTYsNyArMTEzLDcgQEAgYm9vbCBFdmVu
dEhhbmRsZXI6OmtleUV2ZW50KE5TRXZlbnQgKmV2ZW50KQogICAgIEFTU0VSVChbZXZlbnQgdHlw
ZV0gPT0gTlNLZXlEb3duIHx8IFtldmVudCB0eXBlXSA9PSBOU0tleVVwKTsKIAogICAgIEN1cnJl
bnRFdmVudFNjb3BlIHNjb3BlKGV2ZW50KTsKLSAgICByZXR1cm4ga2V5RXZlbnQoUGxhdGZvcm1L
ZXlib2FyZEV2ZW50KGV2ZW50KSk7CisgICAgcmV0dXJuIGtleUV2ZW50KFBsYXRmb3JtRXZlbnRG
YWN0b3J5OjpjcmVhdGVQbGF0Zm9ybUtleWJvYXJkRXZlbnQoZXZlbnQpKTsKIAogICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKQEAgLTY0Niw3ICs2NDMsNyBAQCBQbGF0Zm9ybU1vdXNl
RXZlbnQgRXZlbnRIYW5kbGVyOjpjdXJyZW50UGxhdGZvcm1Nb3VzZUV2ZW50KCkgY29uc3QKICAg
ICBOU1ZpZXcgKndpbmRvd1ZpZXcgPSBuaWw7CiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1l
LT5wYWdlKCkpCiAgICAgICAgIHdpbmRvd1ZpZXcgPSBwYWdlLT5jaHJvbWUoKS0+cGxhdGZvcm1Q
YWdlQ2xpZW50KCk7Ci0gICAgcmV0dXJuIFBsYXRmb3JtTW91c2VFdmVudChjdXJyZW50TlNFdmVu
dCgpLCB3aW5kb3dWaWV3KTsKKyAgICByZXR1cm4gUGxhdGZvcm1FdmVudEZhY3Rvcnk6OmNyZWF0
ZVBsYXRmb3JtTW91c2VFdmVudChjdXJyZW50TlNFdmVudCgpLCB3aW5kb3dWaWV3KTsKIH0KIAog
Ym9vbCBFdmVudEhhbmRsZXI6OmV2ZW50QWN0aXZhdGVkVmlldyhjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmIGV2ZW50KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1FdmVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1FdmVudC5o
CmluZGV4IGEzMmQyODBiMmE2MzIxMWM4NGU0NzZjYjhkMTg4YTAxOTRkODAxYjIuLjc3ZDQ0N2U0
Y2VlZDFjMDFkZWMxNjc4YTBmZDRkYTBlMWVlMjY0YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybUV2ZW50LmgKQEAgLTY1LDU5ICs2NSw1OSBAQCBwdWJsaWM6CiAjZW5kaWYKICAg
ICB9OwogCi0gICAgZW51bSBNb2RpZmllcktleSB7Ci0gICAgICAgIEFsdEtleSA9IDEgPDwgMCwK
LSAgICAgICAgQ3RybEtleSA9IDEgPDwgMSwKLSAgICAgICAgTWV0YUtleSA9IDEgPDwgMiwKLSAg
ICAgICAgU2hpZnRLZXkgPSAxIDw8IDMKKyAgICBlbnVtIE1vZGlmaWVycyB7CisgICAgICAgIEFs
dEtleSAgICAgID0gMSA8PCAwLAorICAgICAgICBDdHJsS2V5ICAgICA9IDEgPDwgMSwKKyAgICAg
ICAgTWV0YUtleSAgICAgPSAxIDw8IDIsCisgICAgICAgIFNoaWZ0S2V5ICAgID0gMSA8PCAzLAog
ICAgIH07CiAKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUeXBl
PihtX3R5cGUpOyB9CiAKLSAgICBib29sIHNoaWZ0S2V5KCkgY29uc3QgeyByZXR1cm4gbV9zaGlm
dEtleTsgfQotICAgIGJvb2wgY3RybEtleSgpIGNvbnN0IHsgcmV0dXJuIG1fY3RybEtleTsgfQot
ICAgIGJvb2wgYWx0S2V5KCkgY29uc3QgeyByZXR1cm4gbV9hbHRLZXk7IH0KLSAgICBib29sIG1l
dGFLZXkoKSBjb25zdCB7IHJldHVybiBtX21ldGFLZXk7IH0KKyAgICBib29sIHNoaWZ0S2V5KCkg
Y29uc3QgeyByZXR1cm4gbV9tb2RpZmllcnMgJiBTaGlmdEtleTsgfQorICAgIGJvb2wgY3RybEtl
eSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kaWZpZXJzICYgQ3RybEtleTsgfQorICAgIGJvb2wgYWx0
S2V5KCkgY29uc3QgeyByZXR1cm4gbV9tb2RpZmllcnMgJiBBbHRLZXk7IH0KKyAgICBib29sIG1l
dGFLZXkoKSBjb25zdCB7IHJldHVybiBtX21vZGlmaWVycyAmIE1ldGFLZXk7IH0KIAotICAgIHVu
c2lnbmVkIG1vZGlmaWVycygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gKGFsdEtleSgp
ID8gQWx0S2V5IDogMCkKLSAgICAgICAgICAgIHwgKGN0cmxLZXkoKSA/IEN0cmxLZXkgOiAwKQot
ICAgICAgICAgICAgfCAobWV0YUtleSgpID8gTWV0YUtleSA6IDApCi0gICAgICAgICAgICB8IChz
aGlmdEtleSgpID8gU2hpZnRLZXkgOiAwKTsKLSAgICB9CisgICAgdW5zaWduZWQgbW9kaWZpZXJz
KCkgY29uc3QgeyByZXR1cm4gbV9tb2RpZmllcnM7IH0KIAogICAgIGRvdWJsZSB0aW1lc3RhbXAo
KSBjb25zdCB7IHJldHVybiBtX3RpbWVzdGFtcDsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgUGxhdGZv
cm1FdmVudCgpCiAgICAgICAgIDogbV90eXBlKE5vVHlwZSkKLSAgICAgICAgLCBtX3NoaWZ0S2V5
KGZhbHNlKQotICAgICAgICAsIG1fY3RybEtleShmYWxzZSkKLSAgICAgICAgLCBtX2FsdEtleShm
YWxzZSkKLSAgICAgICAgLCBtX21ldGFLZXkoZmFsc2UpCisgICAgICAgICwgbV9tb2RpZmllcnMo
MCkKICAgICAgICAgLCBtX3RpbWVzdGFtcCgwKQogICAgIHsKICAgICB9CiAKICAgICBQbGF0Zm9y
bUV2ZW50KFR5cGUgdHlwZSkKICAgICAgICAgOiBtX3R5cGUodHlwZSkKLSAgICAgICAgLCBtX3No
aWZ0S2V5KGZhbHNlKQotICAgICAgICAsIG1fY3RybEtleShmYWxzZSkKLSAgICAgICAgLCBtX2Fs
dEtleShmYWxzZSkKLSAgICAgICAgLCBtX21ldGFLZXkoZmFsc2UpCisgICAgICAgICwgbV9tb2Rp
ZmllcnMoMCkKICAgICAgICAgLCBtX3RpbWVzdGFtcCgwKQogICAgIHsKICAgICB9CiAKKyAgICBQ
bGF0Zm9ybUV2ZW50KFR5cGUgdHlwZSwgTW9kaWZpZXJzIG1vZGlmaWVycywgZG91YmxlIHRpbWVz
dGFtcCkKKyAgICAgICAgOiBtX3R5cGUodHlwZSkKKyAgICAgICAgLCBtX21vZGlmaWVycyhtb2Rp
ZmllcnMpCisgICAgICAgICwgbV90aW1lc3RhbXAodGltZXN0YW1wKQorICAgIHsKKyAgICB9CisK
ICAgICBQbGF0Zm9ybUV2ZW50KFR5cGUgdHlwZSwgYm9vbCBzaGlmdEtleSwgYm9vbCBjdHJsS2V5
LCBib29sIGFsdEtleSwgYm9vbCBtZXRhS2V5LCBkb3VibGUgdGltZXN0YW1wKQogICAgICAgICA6
IG1fdHlwZSh0eXBlKQotICAgICAgICAsIG1fc2hpZnRLZXkoc2hpZnRLZXkpCi0gICAgICAgICwg
bV9jdHJsS2V5KGN0cmxLZXkpCi0gICAgICAgICwgbV9hbHRLZXkoYWx0S2V5KQotICAgICAgICAs
IG1fbWV0YUtleShtZXRhS2V5KQorICAgICAgICAsIG1fbW9kaWZpZXJzKDApCiAgICAgICAgICwg
bV90aW1lc3RhbXAodGltZXN0YW1wKQogICAgIHsKKyAgICAgICAgaWYgKHNoaWZ0S2V5KQorICAg
ICAgICAgICAgbV9tb2RpZmllcnMgfD0gU2hpZnRLZXk7CisgICAgICAgIGlmIChjdHJsS2V5KQor
ICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gQ3RybEtleTsKKyAgICAgICAgaWYgKGFsdEtleSkK
KyAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IEFsdEtleTsKKyAgICAgICAgaWYgKG1ldGFLZXkp
CisgICAgICAgICAgICBtX21vZGlmaWVycyB8PSBNZXRhS2V5OwogICAgIH0KIAogICAgIC8vIEV4
cGxpY2l0IHByb3RlY3RlZCBkZXN0cnVjdG9yIHNvIHRoYXQgcGVvcGxlIGRvbid0IGFjY2lkZW50
YWxseQpAQCAtMTI3LDEwICsxMjcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogCiAgICAgdW5zaWdu
ZWQgbV90eXBlOwotICAgIGJvb2wgbV9zaGlmdEtleTsKLSAgICBib29sIG1fY3RybEtleTsKLSAg
ICBib29sIG1fYWx0S2V5OwotICAgIGJvb2wgbV9tZXRhS2V5OworICAgIHVuc2lnbmVkIG1fbW9k
aWZpZXJzOwogICAgIGRvdWJsZSBtX3RpbWVzdGFtcDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVFdmVudC5oCmluZGV4IDU1ZmU4ZWZhODYxODk2OGMx
ODBlMGYwNjNlYjk3ZmU3ZDZmY2Y3ZTUuLmUzMTNiZTUwZTM5MzJmOWNlMWNiYzU1YjQwMWRhMjc2
MzJhNDU0MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2Vz
dHVyZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJl
RXZlbnQuaApAQCAtNjAsNyArNjAsNiBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSW50UG9p
bnQgbV9wb3NpdGlvbjsKICAgICBJbnRQb2ludCBtX2dsb2JhbFBvc2l0aW9uOwotICAgIGRvdWJs
ZSBtX3RpbWVzdGFtcDsKICAgICBmbG9hdCBtX2RlbHRhWDsKICAgICBmbG9hdCBtX2RlbHRhWTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUtleWJvYXJk
RXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5o
CmluZGV4IDJlZDFhMGFmODhkYWViZGM1Yjk0MzE2ZTJkMjNhMTJjMzhmMTQ2ZjYuLmYxNTQ5NjY3
MzJhZDk0OWE4ZDhiMzAwOTYyMzY3MTU3OTczMjg0ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oCkBAIC03MCwxMyArNzAsMTIgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAgICAgICAgUGxhdGZvcm1LZXlib2FyZEV2
ZW50KCkKICAgICAgICAgICAgIDogUGxhdGZvcm1FdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3du
KQotICAgICAgICAgICAgLCBtX2F1dG9SZXBlYXQoZmFsc2UpCiAgICAgICAgICAgICAsIG1fd2lu
ZG93c1ZpcnR1YWxLZXlDb2RlKDApCiAgICAgICAgICAgICAsIG1fbmF0aXZlVmlydHVhbEtleUNv
ZGUoMCkKKyAgICAgICAgICAgICwgbV9tYWNDaGFyQ29kZSgwKQorICAgICAgICAgICAgLCBtX2F1
dG9SZXBlYXQoZmFsc2UpCiAgICAgICAgICAgICAsIG1faXNLZXlwYWQoZmFsc2UpCi0jaWYgUExB
VEZPUk0oV0lOKSB8fCBQTEFURk9STShDSFJPTUlVTSkKICAgICAgICAgICAgICwgbV9pc1N5c3Rl
bUtleShmYWxzZSkKLSNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgICAgICwgbV9n
ZGtFdmVudEtleSgwKQogI2VuZGlmCkBAIC04Niw2ICs4NSwyMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHsKICAgICAgICAgfQogCisgICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dChUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiB1bm1vZGlmaWVk
VGV4dCwgY29uc3QgU3RyaW5nJiBrZXlJZGVudGlmaWVyLCBpbnQgd2luZG93c1ZpcnR1YWxLZXlD
b2RlLCBpbnQgbmF0aXZlVmlydHVhbEtleUNvZGUsIGludCBtYWNDaGFyQ29kZSwgYm9vbCBpc0F1
dG9SZXBlYXQsIGJvb2wgaXNLZXlwYWQsIGJvb2wgaXNTeXN0ZW1LZXksIE1vZGlmaWVycyBtb2Rp
ZmllcnMsIGRvdWJsZSB0aW1lc3RhbXApCisgICAgICAgICAgICA6IFBsYXRmb3JtRXZlbnQodHlw
ZSwgbW9kaWZpZXJzLCB0aW1lc3RhbXApCisgICAgICAgICAgICAsIG1fdGV4dCh0ZXh0KQorICAg
ICAgICAgICAgLCBtX3VubW9kaWZpZWRUZXh0KHVubW9kaWZpZWRUZXh0KQorICAgICAgICAgICAg
LCBtX2tleUlkZW50aWZpZXIoa2V5SWRlbnRpZmllcikKKyAgICAgICAgICAgICwgbV93aW5kb3dz
VmlydHVhbEtleUNvZGUod2luZG93c1ZpcnR1YWxLZXlDb2RlKQorICAgICAgICAgICAgLCBtX25h
dGl2ZVZpcnR1YWxLZXlDb2RlKG5hdGl2ZVZpcnR1YWxLZXlDb2RlKQorICAgICAgICAgICAgLCBt
X21hY0NoYXJDb2RlKG1hY0NoYXJDb2RlKQorICAgICAgICAgICAgLCBtX2F1dG9SZXBlYXQoaXNB
dXRvUmVwZWF0KQorICAgICAgICAgICAgLCBtX2lzS2V5cGFkKGlzS2V5cGFkKQorICAgICAgICAg
ICAgLCBtX2lzU3lzdGVtS2V5KGlzU3lzdGVtS2V5KQorICAgICAgICB7CisgICAgICAgIH0KKwog
ICAgICAgICB2b2lkIGRpc2FtYmlndWF0ZUtleURvd25FdmVudChUeXBlLCBib29sIGJhY2t3YXJk
Q29tcGF0aWJpbGl0eU1vZGUgPSBmYWxzZSk7IC8vIE9ubHkgdXNlZCBvbiBwbGF0Zm9ybXMgdGhh
dCBuZWVkIGl0LCBpLmUuIHRob3NlIHRoYXQgZ2VuZXJhdGUgS2V5RG93biBldmVudHMuCiAKICAg
ICAgICAgLy8gVGV4dCBhcyBhcyBnZW5lcmF0ZWQgYnkgcHJvY2Vzc2luZyBhIHZpcnR1YWwga2V5
IGNvZGUgd2l0aCBhIGtleWJvYXJkIGxheW91dApAQCAtMTAxLDI0ICsxMTQsMjQgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICAvLyBPdGhlcndpc2UsIHNhbWUgYXMgdGV4dCgpLgogICAg
ICAgICBTdHJpbmcgdW5tb2RpZmllZFRleHQoKSBjb25zdCB7IHJldHVybiBtX3VubW9kaWZpZWRU
ZXh0OyB9CiAKKyAgICAgICAgU3RyaW5nIGtleUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X2tleUlkZW50aWZpZXI7IH0KKwogICAgICAgICAvLyBNb3N0IGNvbXBhdGlibGUgV2luZG93cyB2
aXJ0dWFsIGtleSBjb2RlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXZlbnQuCiAgICAgICAgIC8vIFpl
cm8gZm9yIENoYXIgZXZlbnRzLgogICAgICAgICBpbnQgd2luZG93c1ZpcnR1YWxLZXlDb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV93aW5kb3dzVmlydHVhbEtleUNvZGU7IH0KICAgICAgICAgdm9pZCBz
ZXRXaW5kb3dzVmlydHVhbEtleUNvZGUoaW50IGNvZGUpIHsgbV93aW5kb3dzVmlydHVhbEtleUNv
ZGUgPSBjb2RlOyB9CiAKICAgICAgICAgaW50IG5hdGl2ZVZpcnR1YWxLZXlDb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9uYXRpdmVWaXJ0dWFsS2V5Q29kZTsgfQotICAgICAgICB2b2lkIHNldE5hdGl2
ZVZpcnR1YWxLZXlDb2RlKGludCBjb2RlKSB7IG1fbmF0aXZlVmlydHVhbEtleUNvZGUgPSBjb2Rl
OyB9CisgICAgICAgIGludCBtYWNDaGFyQ29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFjQ2hhckNv
ZGU7IH0KIAotICAgICAgICBTdHJpbmcga2V5SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
a2V5SWRlbnRpZmllcjsgfQogICAgICAgICBib29sIGlzQXV0b1JlcGVhdCgpIGNvbnN0IHsgcmV0
dXJuIG1fYXV0b1JlcGVhdDsgfQotICAgICAgICB2b2lkIHNldElzQXV0b1JlcGVhdChib29sIGlu
KSB7IG1fYXV0b1JlcGVhdCA9IGluOyB9CiAgICAgICAgIGJvb2wgaXNLZXlwYWQoKSBjb25zdCB7
IHJldHVybiBtX2lzS2V5cGFkOyB9CisgICAgICAgIGJvb2wgaXNTeXN0ZW1LZXkoKSBjb25zdCB7
IHJldHVybiBtX2lzU3lzdGVtS2V5OyB9CiAKICAgICAgICAgc3RhdGljIGJvb2wgY3VycmVudENh
cHNMb2NrU3RhdGUoKTsKICAgICAgICAgc3RhdGljIHZvaWQgZ2V0Q3VycmVudE1vZGlmaWVyU3Rh
dGUoYm9vbCYgc2hpZnRLZXksIGJvb2wmIGN0cmxLZXksIGJvb2wmIGFsdEtleSwgYm9vbCYgbWV0
YUtleSk7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dChOU0V2ZW50Kik7CiAgICAgICAgIE5TRXZlbnQqIG1hY0V2ZW50KCkgY29uc3QgeyByZXR1cm4g
bV9tYWNFdmVudC5nZXQoKTsgfQogI2VuZGlmCiAKQEAgLTE0NywxMCArMTYwLDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQod3hLZXlFdmVudCYp
OwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JNKENIUk9NSVVNKQotICAg
ICAgICBib29sIGlzU3lzdGVtS2V5KCkgY29uc3QgeyByZXR1cm4gbV9pc1N5c3RlbUtleTsgfQot
I2VuZGlmCi0KICNpZiBQTEFURk9STShFRkwpCiAgICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dChjb25zdCBFdmFzX0V2ZW50X0tleV9Eb3duKik7CiAgICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRF
dmVudChjb25zdCBFdmFzX0V2ZW50X0tleV9VcCopOwpAQCAtMTYwLDE3ICsxNjksMTYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTdHJpbmcgbV90ZXh0OwogICAgICAgICBTdHJpbmcg
bV91bm1vZGlmaWVkVGV4dDsKICAgICAgICAgU3RyaW5nIG1fa2V5SWRlbnRpZmllcjsKLSAgICAg
ICAgYm9vbCBtX2F1dG9SZXBlYXQ7CiAgICAgICAgIGludCBtX3dpbmRvd3NWaXJ0dWFsS2V5Q29k
ZTsKICAgICAgICAgaW50IG1fbmF0aXZlVmlydHVhbEtleUNvZGU7CisgICAgICAgIGludCBtX21h
Y0NoYXJDb2RlOworICAgICAgICBib29sIG1fYXV0b1JlcGVhdDsKICAgICAgICAgYm9vbCBtX2lz
S2V5cGFkOworICAgICAgICBib29sIG1faXNTeXN0ZW1LZXk7CiAKICNpZiBQTEFURk9STShNQUMp
CiAgICAgICAgIFJldGFpblB0cjxOU0V2ZW50PiBtX21hY0V2ZW50OwogI2VuZGlmCi0jaWYgUExB
VEZPUk0oV0lOKSB8fCBQTEFURk9STShDSFJPTUlVTSkKLSAgICAgICAgYm9vbCBtX2lzU3lzdGVt
S2V5OwotI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQogICAgICAgICBHZGtFdmVudEtleSogbV9n
ZGtFdmVudEtleTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1Nb3VzZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybU1v
dXNlRXZlbnQuaAppbmRleCBiM2E0MDY3ZDcxODBjYmE0ODVhY2E2NzcwOTk3MzBjZjM1ZjdmYTkw
Li5hM2RjY2U0OTBkM2Y3ODA2MmQ5ZWM3OGI2ODE3ZDM5ODg5ZTRlNGVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaApAQCAtMTE5LDEyICsxMTksNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKLSNpZiBk
ZWZpbmVkKF9fT0JKQ19fKQotICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQoTlNFdmVudCAqLCBO
U1ZpZXcgKndpbmRvd1ZpZXcpOwotI2VuZGlmCi0gICAgICAgIFBsYXRmb3JtTW91c2VFdmVudChp
bnQgeCwgaW50IHksIGludCBnbG9iYWxYLCBpbnQgZ2xvYmFsWSwgTW91c2VCdXR0b24sIFBsYXRm
b3JtRXZlbnQ6OlR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2xpY2tDb3Vu
dCwgYm9vbCBzaGlmdEtleSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBtZXRhS2V5
LCBkb3VibGUgdGltZXN0YW1wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
bW9kaWZpZXJGbGFncywgaW50IGV2ZW50TnVtYmVyKTsKICAgICAgICAgaW50IGV2ZW50TnVtYmVy
KCkgY29uc3QgeyByZXR1cm4gbV9ldmVudE51bWJlcjsgfQogI2VuZGlmCiAKQEAgLTE2MCwxMiAr
MTU0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAgICAgfTsKIAotI2lmIFBMQVRG
T1JNKE1BQykgJiYgZGVmaW5lZChfX09CSkNfXykKLSAgICBJbnRQb2ludCBnbG9iYWxQb2ludChj
b25zdCBOU1BvaW50JiB3aW5kb3dQb2ludCwgTlNXaW5kb3cgKik7Ci0gICAgSW50UG9pbnQgcG9p
bnRGb3JFdmVudChOU0V2ZW50ICosIE5TVmlldyAqd2luZG93Vmlldyk7Ci0gICAgSW50UG9pbnQg
Z2xvYmFsUG9pbnRGb3JFdmVudChOU0V2ZW50ICopOwotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIFBsYXRmb3JtTW91c2VFdmVudF9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCmluZGV4IGJhOTEwNTQ4MjlhZTZlMmY2
OWQxNjBmYWJmM2RkZmVlMzNmNGJjM2UuLjhlOTllNDc2MmZkMDdiMmY1YzNkYjhkMWI5YTdkNDc1
NjU1YmNlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hl
ZWxFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVu
dC5oCkBAIC0xNTQsMTcgKzE1NCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFBs
YXRmb3JtV2hlZWxFdmVudChjb25zdCBFdmFzX0V2ZW50X01vdXNlX1doZWVsKik7CiAjZW5kaWYK
IAotI2lmIFBMQVRGT1JNKE1BQykKLSNpZiBkZWZpbmVkKF9fT0JKQ19fKQotICAgICAgICBQbGF0
Zm9ybVdoZWVsRXZlbnQoTlNFdmVudCAqLCBOU1ZpZXcgKndpbmRvd1ZpZXcpOwotI2VuZGlmCi0j
ZW5kaWYKLQogI2lmIFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBPUyhE
QVJXSU4pKQogICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSBwaGFzZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcGhhc2U7IH0KICAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgbW9tZW50
dW1QaGFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9tZW50dW1QaGFzZTsgfQogICAgICAgICBib29s
IGhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoKSBjb25zdCB7IHJldHVybiBtX2hhc1ByZWNpc2VT
Y3JvbGxpbmdEZWx0YXM7IH0KLSAgICAgICAgZG91YmxlIHRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0
dXJuIG1fdGltZXN0YW1wOyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFFUKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtS2V5Ym9hcmRFdmVudEd0ay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3Rr
LmNwcAppbmRleCA1M2VmNzhiZTI4MDI1YTA2YTQyNzM4YTJiOWEwODY3YzU2ZTYzMjA1Li4zYTI0
MDlkY2YwNjk2ZjY4OGUwMjE1NDNiYjFjNzgzNjNmMjVmYzdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNwcApA
QCAtNTUyLDEwICs1NTIsMTIgQEAgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJv
YXJkRXZlbnQoR2RrRXZlbnRLZXkqIGV2ZW50KQogICAgICwgbV90ZXh0KHNpbmdsZUNoYXJhY3Rl
clN0cmluZyhldmVudC0+a2V5dmFsKSkKICAgICAsIG1fdW5tb2RpZmllZFRleHQoc2luZ2xlQ2hh
cmFjdGVyU3RyaW5nKGV2ZW50LT5rZXl2YWwpKQogICAgICwgbV9rZXlJZGVudGlmaWVyKGtleUlk
ZW50aWZpZXJGb3JHZGtLZXlDb2RlKGV2ZW50LT5rZXl2YWwpKQotICAgICwgbV9hdXRvUmVwZWF0
KGZhbHNlKQogICAgICwgbV93aW5kb3dzVmlydHVhbEtleUNvZGUod2luZG93c0tleUNvZGVGb3JH
ZGtLZXlDb2RlKGV2ZW50LT5rZXl2YWwpKQogICAgICwgbV9uYXRpdmVWaXJ0dWFsS2V5Q29kZShl
dmVudC0+a2V5dmFsKQorICAgICwgbV9tYWNDaGFyQ29kZSgwKQorICAgICwgbV9hdXRvUmVwZWF0
KGZhbHNlKQogICAgICwgbV9pc0tleXBhZChldmVudC0+a2V5dmFsID49IEdES19LUF9TcGFjZSAm
JiBldmVudC0+a2V5dmFsIDw9IEdES19LUF85KQorICAgICwgbV9pc1N5c3RlbUtleShmYWxzZSkK
ICAgICAsIG1fZ2RrRXZlbnRLZXkoZXZlbnQpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1Nb3VzZUV2ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybU1vdXNlRXZlbnRHdGsuY3BwCmluZGV4IDg3OWU4Y2Mx
NDU4ZDhmODgyZGU5MzA5NDc5N2IyYWZlNDE0MDVjNDguLjRlNjIwMGZjZDQ1Yjk1OWJhYmNmZTQ0
MDJlNWNmZDViNjgwMTc5OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9QbGF0Zm9ybU1vdXNlRXZlbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9QbGF0Zm9ybU1vdXNlRXZlbnRHdGsuY3BwCkBAIC00MSwxMCArNDEsMTYgQEAgUGxhdGZv
cm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQoR2RrRXZlbnRCdXR0b24qIGV2ZW50KQog
ICAgIG1fdGltZXN0YW1wID0gZXZlbnQtPnRpbWU7CiAgICAgbV9wb3NpdGlvbiA9IEludFBvaW50
KChpbnQpZXZlbnQtPngsIChpbnQpZXZlbnQtPnkpOwogICAgIG1fZ2xvYmFsUG9zaXRpb24gPSBJ
bnRQb2ludCgoaW50KWV2ZW50LT54X3Jvb3QsIChpbnQpZXZlbnQtPnlfcm9vdCk7Ci0gICAgbV9z
aGlmdEtleSA9IGV2ZW50LT5zdGF0ZSAmIEdES19TSElGVF9NQVNLOwotICAgIG1fY3RybEtleSA9
IGV2ZW50LT5zdGF0ZSAmIEdES19DT05UUk9MX01BU0s7Ci0gICAgbV9hbHRLZXkgPSBldmVudC0+
c3RhdGUgJiBHREtfTU9EMV9NQVNLOwotICAgIG1fbWV0YUtleSA9IGV2ZW50LT5zdGF0ZSAmIEdE
S19NRVRBX01BU0s7CisKKyAgICBtX21vZGlmaWVycyA9IDA7CisgICAgaWYgKGV2ZW50LT5zdGF0
ZSAmIEdES19TSElGVF9NQVNLKQorICAgICAgICBtX21vZGlmaWVycyB8PSBTaGlmdEtleTsKKyAg
ICBpZiAoZXZlbnQtPnN0YXRlICYgR0RLX0NPTlRST0xfTUFTSykKKyAgICAgICAgbV9tb2RpZmll
cnMgfD0gQ3RybEtleTsKKyAgICBpZiAoZXZlbnQtPnN0YXRlICYgR0RLX01PRDFfTUFTSykKKyAg
ICAgICAgbV9tb2RpZmllcnMgfD0gQWx0S2V5OworICAgIGlmIChldmVudC0+c3RhdGUgJiBHREtf
TUVUQV9NQVNLKQorICAgICAgICBtX21vZGlmaWVycyB8PSBNZXRhS2V5OwogCiAgICAgc3dpdGNo
IChldmVudC0+dHlwZSkgewogICAgIGNhc2UgR0RLX0JVVFRPTl9QUkVTUzoKQEAgLTgwLDEwICs4
NiwxNiBAQCBQbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudChHZGtFdmVudE1v
dGlvbiogbW90aW9uKQogICAgIG1fdGltZXN0YW1wID0gbW90aW9uLT50aW1lOwogICAgIG1fcG9z
aXRpb24gPSBJbnRQb2ludCgoaW50KW1vdGlvbi0+eCwgKGludCltb3Rpb24tPnkpOwogICAgIG1f
Z2xvYmFsUG9zaXRpb24gPSBJbnRQb2ludCgoaW50KW1vdGlvbi0+eF9yb290LCAoaW50KW1vdGlv
bi0+eV9yb290KTsKLSAgICBtX3NoaWZ0S2V5ID0gbW90aW9uLT5zdGF0ZSAmIEdES19TSElGVF9N
QVNLOwotICAgIG1fY3RybEtleSA9IG1vdGlvbi0+c3RhdGUgJiBHREtfQ09OVFJPTF9NQVNLOwot
ICAgIG1fYWx0S2V5ID0gbW90aW9uLT5zdGF0ZSAmIEdES19NT0QxX01BU0s7Ci0gICAgbV9tZXRh
S2V5ID0gbW90aW9uLT5zdGF0ZSAmIEdES19NRVRBX01BU0s7CisKKyAgICBtX21vZGlmaWVycyA9
IDA7CisgICAgaWYgKG1vdGlvbi0+c3RhdGUgJiBHREtfU0hJRlRfTUFTSykKKyAgICAgICAgbV9t
b2RpZmllcnMgfD0gU2hpZnRLZXk7CisgICAgaWYgKG1vdGlvbi0+c3RhdGUgJiBHREtfQ09OVFJP
TF9NQVNLKQorICAgICAgICBtX21vZGlmaWVycyB8PSBDdHJsS2V5OworICAgIGlmIChtb3Rpb24t
PnN0YXRlICYgR0RLX01PRDFfTUFTSykKKyAgICAgICAgbV9tb2RpZmllcnMgfD0gQWx0S2V5Owor
ICAgIGlmIChtb3Rpb24tPnN0YXRlICYgR0RLX01FVEFfTUFTSykKKyAgICAgICAgbV9tb2RpZmll
cnMgfD0gTWV0YUtleTsKIAogICAgIHN3aXRjaCAobW90aW9uLT50eXBlKSB7CiAgICAgY2FzZSBH
REtfTU9USU9OX05PVElGWToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9QbGF0Zm9ybVdoZWVsRXZlbnRHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1BsYXRmb3JtV2hlZWxFdmVudEd0ay5jcHAKaW5kZXggY2JlMDZkZmFmNjkyN2NjNjNhMGNlOWI0
M2E1MWZkMzE1NzJhN2YyZi4uODRiMDJiM2JmODZlYTQ0YWFjYmMyZmEwZGVkYjc3MjE3NzAwM2Fk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtV2hlZWxF
dmVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtV2hl
ZWxFdmVudEd0ay5jcHAKQEAgLTQyLDYgKzQyLDE2IEBAIFBsYXRmb3JtV2hlZWxFdmVudDo6UGxh
dGZvcm1XaGVlbEV2ZW50KEdka0V2ZW50U2Nyb2xsKiBldmVudCkKICAgICBtX3R5cGUgPSBQbGF0
Zm9ybUV2ZW50OjpXaGVlbDsKICAgICBtX3RpbWVzdGFtcCA9IGN1cnJlbnRUaW1lKCk7CiAKKyAg
ICBtX21vZGlmaWVycyA9IDA7CisgICAgaWYgKGV2ZW50LT5zdGF0ZSAmIEdES19TSElGVF9NQVNL
KQorICAgICAgICBtX21vZGlmaWVycyB8PSBTaGlmdEtleTsKKyAgICBpZiAoZXZlbnQtPnN0YXRl
ICYgR0RLX0NPTlRST0xfTUFTSykKKyAgICAgICAgbV9tb2RpZmllcnMgfD0gQ3RybEtleTsKKyAg
ICBpZiAoZXZlbnQtPnN0YXRlICYgR0RLX01PRDFfTUFTSykKKyAgICAgICAgbV9tb2RpZmllcnMg
fD0gQWx0S2V5OworICAgIGlmIChldmVudC0+c3RhdGUgJiBHREtfTUVUQV9NQVNLKQorICAgICAg
ICBtX21vZGlmaWVycyB8PSBNZXRhS2V5OworCiAgICAgbV9kZWx0YVggPSAwOwogICAgIG1fZGVs
dGFZID0gMDsKIApAQCAtNjYsMTAgKzc2LDYgQEAgUGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9y
bVdoZWVsRXZlbnQoR2RrRXZlbnRTY3JvbGwqIGV2ZW50KQogICAgIG1fcG9zaXRpb24gPSBJbnRQ
b2ludChzdGF0aWNfY2FzdDxpbnQ+KGV2ZW50LT54KSwgc3RhdGljX2Nhc3Q8aW50PihldmVudC0+
eSkpOwogICAgIG1fZ2xvYmFsUG9zaXRpb24gPSBJbnRQb2ludChzdGF0aWNfY2FzdDxpbnQ+KGV2
ZW50LT54X3Jvb3QpLCBzdGF0aWNfY2FzdDxpbnQ+KGV2ZW50LT55X3Jvb3QpKTsKICAgICBtX2dy
YW51bGFyaXR5ID0gU2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQ7Ci0gICAgbV9zaGlmdEtleSA9IGV2
ZW50LT5zdGF0ZSAmIEdES19TSElGVF9NQVNLOwotICAgIG1fY3RybEtleSA9IGV2ZW50LT5zdGF0
ZSAmIEdES19DT05UUk9MX01BU0s7Ci0gICAgbV9hbHRLZXkgPSBldmVudC0+c3RhdGUgJiBHREtf
TU9EMV9NQVNLOwotICAgIG1fbWV0YUtleSA9IGV2ZW50LT5zdGF0ZSAmIEdES19NRVRBX01BU0s7
CiAgICAgbV9kaXJlY3Rpb25JbnZlcnRlZEZyb21EZXZpY2UgPSBmYWxzZTsKIAogICAgIC8vIEZJ
WE1FOiByZXRyaWV2ZSB0aGUgdXNlciBzZXR0aW5nIGZvciB0aGUgbnVtYmVyIG9mIGxpbmVzIHRv
IHNjcm9sbCBvbiBlYWNoIHdoZWVsIGV2ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvS2V5RXZlbnRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
S2V5RXZlbnRNYWMubW0KaW5kZXggNDRkNmNjMzBjMmY4NmEyNGMyN2RmMDAwMDJkZjRhOTM5Yzcz
MzU3YS4uNGJkZjYyMDdiNmM1NWYxMmUyODdhNzE0MWEyNzBlYTkyZDIyZGUyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0tleUV2ZW50TWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9LZXlFdmVudE1hYy5tbQpAQCAtMzcsMTg3ICszNyw2IEBA
IHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGJv
b2wgaXNLZXlwYWRFdmVudChOU0V2ZW50KiBldmVudCkKLXsKLSAgICAvLyBDaGVjayB0aGF0IHRo
aXMgaXMgdGhlIHR5cGUgb2YgZXZlbnQgdGhhdCBoYXMgYSBrZXlDb2RlLgotICAgIHN3aXRjaCAo
W2V2ZW50IHR5cGVdKSB7Ci0gICAgICAgIGNhc2UgTlNLZXlEb3duOgotICAgICAgICBjYXNlIE5T
S2V5VXA6Ci0gICAgICAgIGNhc2UgTlNGbGFnc0NoYW5nZWQ6Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAg
ICBpZiAoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNOdW1lcmljUGFkS2V5TWFzaykKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0KLSAgICBzd2l0Y2ggKFtldmVudCBrZXlDb2RlXSkgewotICAgICAg
ICBjYXNlIDcxOiAvLyBDbGVhcgotICAgICAgICBjYXNlIDgxOiAvLyA9Ci0gICAgICAgIGNhc2Ug
NzU6IC8vIC8KLSAgICAgICAgY2FzZSA2NzogLy8gKgotICAgICAgICBjYXNlIDc4OiAvLyAtCi0g
ICAgICAgIGNhc2UgNjk6IC8vICsKLSAgICAgICAgY2FzZSA3NjogLy8gRW50ZXIKLSAgICAgICAg
Y2FzZSA2NTogLy8gLgotICAgICAgICBjYXNlIDgyOiAvLyAwCi0gICAgICAgIGNhc2UgODM6IC8v
IDEKLSAgICAgICAgY2FzZSA4NDogLy8gMgotICAgICAgICBjYXNlIDg1OiAvLyAzCi0gICAgICAg
IGNhc2UgODY6IC8vIDQKLSAgICAgICAgY2FzZSA4NzogLy8gNQotICAgICAgICBjYXNlIDg4OiAv
LyA2Ci0gICAgICAgIGNhc2UgODk6IC8vIDcKLSAgICAgICAgY2FzZSA5MTogLy8gOAotICAgICAg
ICBjYXNlIDkyOiAvLyA5Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgfQotCi0gICAg
IHJldHVybiBmYWxzZTsKLX0KLQotc3RhdGljIGlubGluZSBib29sIGlzS2V5VXBFdmVudChOU0V2
ZW50ICpldmVudCkKLXsKLSAgICBpZiAoW2V2ZW50IHR5cGVdICE9IE5TRmxhZ3NDaGFuZ2VkKQot
ICAgICAgICByZXR1cm4gW2V2ZW50IHR5cGVdID09IE5TS2V5VXA7Ci0gICAgLy8gRklYTUU6IFRo
aXMgbG9naWMgZmFpbHMgaWYgdGhlIHVzZXIgcHJlc3NlcyBib3RoIFNoaWZ0IGtleXMgYXQgb25j
ZSwgZm9yIGV4YW1wbGU6Ci0gICAgLy8gd2UgdHJlYXQgcmVsZWFzaW5nIG9uZSBvZiB0aGVtIGFz
IGtleURvd24uCi0gICAgc3dpdGNoIChbZXZlbnQga2V5Q29kZV0pIHsKLSAgICAgICAgY2FzZSA1
NDogLy8gUmlnaHQgQ29tbWFuZAotICAgICAgICBjYXNlIDU1OiAvLyBMZWZ0IENvbW1hbmQKLSAg
ICAgICAgICAgIHJldHVybiAoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb21tYW5kS2V5TWFz
aykgPT0gMDsKLQotICAgICAgICBjYXNlIDU3OiAvLyBDYXBzbG9jawotICAgICAgICAgICAgcmV0
dXJuIChbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0FscGhhU2hpZnRLZXlNYXNrKSA9PSAwOwot
Ci0gICAgICAgIGNhc2UgNTY6IC8vIExlZnQgU2hpZnQKLSAgICAgICAgY2FzZSA2MDogLy8gUmln
aHQgU2hpZnQKLSAgICAgICAgICAgIHJldHVybiAoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNT
aGlmdEtleU1hc2spID09IDA7Ci0KLSAgICAgICAgY2FzZSA1ODogLy8gTGVmdCBBbHQKLSAgICAg
ICAgY2FzZSA2MTogLy8gUmlnaHQgQWx0Ci0gICAgICAgICAgICByZXR1cm4gKFtldmVudCBtb2Rp
ZmllckZsYWdzXSAmIE5TQWx0ZXJuYXRlS2V5TWFzaykgPT0gMDsKLQotICAgICAgICBjYXNlIDU5
OiAvLyBMZWZ0IEN0cmwKLSAgICAgICAgY2FzZSA2MjogLy8gUmlnaHQgQ3RybAotICAgICAgICAg
ICAgcmV0dXJuIChbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0NvbnRyb2xLZXlNYXNrKSA9PSAw
OwotCi0gICAgICAgIGNhc2UgNjM6IC8vIEZ1bmN0aW9uCi0gICAgICAgICAgICByZXR1cm4gKFtl
dmVudCBtb2RpZmllckZsYWdzXSAmIE5TRnVuY3Rpb25LZXlNYXNrKSA9PSAwOwotICAgIH0KLSAg
ICByZXR1cm4gZmFsc2U7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgU3RyaW5nIHRleHRGcm9tRXZlbnQo
TlNFdmVudCogZXZlbnQpCi17Ci0gICAgaWYgKFtldmVudCB0eXBlXSA9PSBOU0ZsYWdzQ2hhbmdl
ZCkKLSAgICAgICAgcmV0dXJuICIiOwotICAgIHJldHVybiBbZXZlbnQgY2hhcmFjdGVyc107Ci19
Ci0KLQotc3RhdGljIGlubGluZSBTdHJpbmcgdW5tb2RpZmllZFRleHRGcm9tRXZlbnQoTlNFdmVu
dCogZXZlbnQpCi17Ci0gICAgaWYgKFtldmVudCB0eXBlXSA9PSBOU0ZsYWdzQ2hhbmdlZCkKLSAg
ICAgICAgcmV0dXJuICIiOwotICAgIHJldHVybiBbZXZlbnQgY2hhcmFjdGVyc0lnbm9yaW5nTW9k
aWZpZXJzXTsKLX0KLQotc3RhdGljIFN0cmluZyBrZXlJZGVudGlmaWVyRm9yS2V5RXZlbnQoTlNF
dmVudCogZXZlbnQpCi17Ci0gICAgaWYgKFtldmVudCB0eXBlXSA9PSBOU0ZsYWdzQ2hhbmdlZCkK
LSAgICAgICAgc3dpdGNoIChbZXZlbnQga2V5Q29kZV0pIHsKLSAgICAgICAgICAgIGNhc2UgNTQ6
IC8vIFJpZ2h0IENvbW1hbmQKLSAgICAgICAgICAgIGNhc2UgNTU6IC8vIExlZnQgQ29tbWFuZAot
ICAgICAgICAgICAgICAgIHJldHVybiAiTWV0YSI7Ci0KLSAgICAgICAgICAgIGNhc2UgNTc6IC8v
IENhcHNsb2NrCi0gICAgICAgICAgICAgICAgcmV0dXJuICJDYXBzTG9jayI7Ci0KLSAgICAgICAg
ICAgIGNhc2UgNTY6IC8vIExlZnQgU2hpZnQKLSAgICAgICAgICAgIGNhc2UgNjA6IC8vIFJpZ2h0
IFNoaWZ0Ci0gICAgICAgICAgICAgICAgcmV0dXJuICJTaGlmdCI7Ci0KLSAgICAgICAgICAgIGNh
c2UgNTg6IC8vIExlZnQgQWx0Ci0gICAgICAgICAgICBjYXNlIDYxOiAvLyBSaWdodCBBbHQKLSAg
ICAgICAgICAgICAgICByZXR1cm4gIkFsdCI7Ci0KLSAgICAgICAgICAgIGNhc2UgNTk6IC8vIExl
ZnQgQ3RybAotICAgICAgICAgICAgY2FzZSA2MjogLy8gUmlnaHQgQ3RybAotICAgICAgICAgICAg
ICAgIHJldHVybiAiQ29udHJvbCI7Ci0KLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICIiOwot
ICAgICAgICB9Ci0KLSAgICBOU1N0cmluZyAqcyA9IFtldmVudCBjaGFyYWN0ZXJzSWdub3JpbmdN
b2RpZmllcnNdOwotICAgIGlmIChbcyBsZW5ndGhdICE9IDEpIHsKLSAgICAgICAgTE9HKEV2ZW50
cywgInJlY2VpdmVkIGFuIHVuZXhwZWN0ZWQgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4ga2V5IGV2
ZW50OiAldSIsIFtzIGxlbmd0aF0pOwotICAgICAgICByZXR1cm4gIlVuaWRlbnRpZmllZCI7Ci0g
ICAgfQotICAgIHJldHVybiBrZXlJZGVudGlmaWVyRm9yQ2hhckNvZGUoW3MgY2hhcmFjdGVyQXRJ
bmRleDowXSk7Ci19Ci0KLXN0YXRpYyBpbnQgd2luZG93c0tleUNvZGVGb3JLZXlFdmVudChOU0V2
ZW50ICpldmVudCkKLXsKLSAgICBpbnQgY29kZSA9IDA7Ci0gICAgLy8gVGhlcmUgYXJlIHNldmVy
YWwga2luZHMgb2YgY2hhcmFjdGVycyBmb3Igd2hpY2ggd2UgcHJvZHVjZSBrZXkgY29kZSBmcm9t
IGNoYXIgY29kZToKLSAgICAvLyAxLiBSb21hbiBsZXR0ZXJzLiBXaW5kb3dzIGtleWJvYXJkIGxh
eW91dHMgYWZmZWN0IGJvdGggdmlydHVhbCBrZXkgY29kZXMgYW5kIGNoYXJhY3RlciBjb2RlcyBm
b3IgdGhlc2UsCi0gICAgLy8gICAgc28gZS5nLiAnQScgZ2V0cyB0aGUgc2FtZSBrZXlDb2RlIG9u
IFFXRVJUWSwgQVpFUlRZIG9yIER2b3JhayBsYXlvdXRzLgotICAgIC8vIDIuIEtleXMgZm9yIHdo
aWNoIHRoZXJlIGlzIG5vIGtub3duIE1hYyB2aXJ0dWFsIGtleSBjb2RlcywgbGlrZSBQcmludFNj
cmVlbi4KLSAgICAvLyAzLiBDZXJ0YWluIHB1bmN0dWF0aW9uIGtleXMuIE9uIFdpbmRvd3MsIHRo
ZXNlIGFyZSBhbHNvIHJlbWFwcGVkIGRlcGVuZGluZyBvbiBjdXJyZW50IGtleWJvYXJkIGxheW91
dCwKLSAgICAvLyAgICBidXQgc2VlIGNvbW1lbnQgaW4gd2luZG93c0tleUNvZGVGb3JDaGFyQ29k
ZSgpLgotICAgIGlmIChbZXZlbnQgdHlwZV0gPT0gTlNLZXlEb3duIHx8IFtldmVudCB0eXBlXSA9
PSBOU0tleVVwKSB7Ci0gICAgICAgIC8vIENtZCBzd2l0Y2hlcyBSb21hbiBsZXR0ZXJzIGZvciBE
dm9yYWstUVdFUlRZIGxheW91dCwgc28gdHJ5IG1vZGlmaWVkIGNoYXJhY3RlcnMgZmlyc3QuCi0g
ICAgICAgIE5TU3RyaW5nKiBzID0gW2V2ZW50IGNoYXJhY3RlcnNdOwotICAgICAgICBjb2RlID0g
W3MgbGVuZ3RoXSA+IDAgPyB3aW5kb3dzS2V5Q29kZUZvckNoYXJDb2RlKFtzIGNoYXJhY3RlckF0
SW5kZXg6MF0pIDogMDsKLSAgICAgICAgaWYgKGNvZGUpCi0gICAgICAgICAgICByZXR1cm4gY29k
ZTsKLQotICAgICAgICAvLyBDdHJsK0Egb24gYW4gQVpFUlRZIGtleWJvYXJkIHdvdWxkIGdldCBW
S19RIGtleUNvZGUgaWYgd2UgcmVsaWVkIG9uIC1bTlNFdmVudCBrZXlDb2RlXSBiZWxvdy4KLSAg
ICAgICAgcyA9IFtldmVudCBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnNdOwotICAgICAgICBj
b2RlID0gW3MgbGVuZ3RoXSA+IDAgPyB3aW5kb3dzS2V5Q29kZUZvckNoYXJDb2RlKFtzIGNoYXJh
Y3RlckF0SW5kZXg6MF0pIDogMDsKLSAgICAgICAgaWYgKGNvZGUpCi0gICAgICAgICAgICByZXR1
cm4gY29kZTsKLSAgICB9Ci0KLSAgICAvLyBNYXAgTWFjIHZpcnR1YWwga2V5IGNvZGUgZGlyZWN0
bHkgdG8gV2luZG93cyBvbmUgZm9yIGFueSBrZXlzIG5vdCBoYW5kbGVkIGFib3ZlLgotICAgIC8v
IEUuZy4gdGhlIGtleSBuZXh0IHRvIENhcHMgTG9jayBoYXMgdGhlIHNhbWUgRXZlbnQua2V5Q29k
ZSBvbiBVLlMuIGtleWJvYXJkICgnQScpIGFuZCBvbiBSdXNzaWFuIGtleWJvYXJkIChDWVJJTExJ
QyBMRVRURVIgRUYpLgotICAgIHJldHVybiB3aW5kb3dzS2V5Q29kZUZvcktleUNvZGUoW2V2ZW50
IGtleUNvZGVdKTsKLX0KLQotUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJk
RXZlbnQoTlNFdmVudCAqZXZlbnQpCi0gICAgOiBQbGF0Zm9ybUV2ZW50KGlzS2V5VXBFdmVudChl
dmVudCkgPyBQbGF0Zm9ybUV2ZW50OjpLZXlVcCA6IFBsYXRmb3JtRXZlbnQ6OktleURvd24sIFtl
dmVudCBtb2RpZmllckZsYWdzXSAmIE5TU2hpZnRLZXlNYXNrLCBbZXZlbnQgbW9kaWZpZXJGbGFn
c10gJiBOU0NvbnRyb2xLZXlNYXNrLCBbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0FsdGVybmF0
ZUtleU1hc2ssIFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQ29tbWFuZEtleU1hc2ssIFtldmVu
dCB0aW1lc3RhbXBdKQotICAgICwgbV90ZXh0KHRleHRGcm9tRXZlbnQoZXZlbnQpKQotICAgICwg
bV91bm1vZGlmaWVkVGV4dCh1bm1vZGlmaWVkVGV4dEZyb21FdmVudChldmVudCkpCi0gICAgLCBt
X2tleUlkZW50aWZpZXIoa2V5SWRlbnRpZmllckZvcktleUV2ZW50KGV2ZW50KSkKLSAgICAsIG1f
YXV0b1JlcGVhdCgoW2V2ZW50IHR5cGVdICE9IE5TRmxhZ3NDaGFuZ2VkKSAmJiBbZXZlbnQgaXNB
UmVwZWF0XSkKLSAgICAsIG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlKHdpbmRvd3NLZXlDb2RlRm9y
S2V5RXZlbnQoZXZlbnQpKQotICAgICwgbV9uYXRpdmVWaXJ0dWFsS2V5Q29kZShbZXZlbnQga2V5
Q29kZV0pCi0gICAgLCBtX2lzS2V5cGFkKGlzS2V5cGFkRXZlbnQoZXZlbnQpKQotICAgICwgbV9t
YWNFdmVudChldmVudCkKLXsKLSAgICAvLyBBbHdheXMgdXNlIDEzIGZvciBFbnRlci9SZXR1cm4g
LS0gd2UgZG9uJ3Qgd2FudCB0byB1c2UgQXBwS2l0J3MgZGlmZmVyZW50IGNoYXJhY3RlciBmb3Ig
RW50ZXIuCi0gICAgaWYgKG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlID09IFZLX1JFVFVSTikgewot
ICAgICAgICBtX3RleHQgPSAiXHIiOwotICAgICAgICBtX3VubW9kaWZpZWRUZXh0ID0gIlxyIjsK
LSAgICB9Ci0KLSAgICAvLyBBcHBLaXQgc2V0cyB0ZXh0IHRvICJceDdGIiBmb3IgYmFja3NwYWNl
LCBidXQgdGhlIGNvcnJlY3QgS2V5Ym9hcmRFdmVudCBjaGFyYWN0ZXIgY29kZSBpcyA4LgotICAg
IGlmIChtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSA9PSBWS19CQUNLKSB7Ci0gICAgICAgIG1fdGV4
dCA9ICJceDgiOwotICAgICAgICBtX3VubW9kaWZpZWRUZXh0ID0gIlx4OCI7Ci0gICAgfQotCi0g
ICAgLy8gQWx3YXlzIHVzZSA5IGZvciBUYWIgLS0gd2UgZG9uJ3Qgd2FudCB0byB1c2UgQXBwS2l0
J3MgZGlmZmVyZW50IGNoYXJhY3RlciBmb3Igc2hpZnQtdGFiLgotICAgIGlmIChtX3dpbmRvd3NW
aXJ0dWFsS2V5Q29kZSA9PSBWS19UQUIpIHsKLSAgICAgICAgbV90ZXh0ID0gIlx4OSI7Ci0gICAg
ICAgIG1fdW5tb2RpZmllZFRleHQgPSAiXHg5IjsKLSAgICB9Ci19Ci0KIHZvaWQgUGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQoVHlwZSB0eXBlLCBib29sIGJh
Y2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUpCiB7CiAgICAgLy8gQ2FuIG9ubHkgY2hhbmdlIHR5cGUg
ZnJvbSBLZXlEb3duIHRvIFJhd0tleURvd24gb3IgQ2hhciwgYXMgd2UgbGFjayBpbmZvcm1hdGlv
biBmb3Igb3RoZXIgY29udmVyc2lvbnMuCkBAIC0yNTcsNiArNzYsNiBAQCB2b2lkIFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6Z2V0Q3VycmVudE1vZGlmaWVyU3RhdGUoYm9vbCYgc2hpZnRLZXksIGJv
b2wmIGN0cmxLZQogICAgIG1ldGFLZXkgPSBjdXJyZW50TW9kaWZpZXJzICYgOjpjbWRLZXk7CiB9
CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFj
dG9yeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOWMxODNjMTljODVhYjQ2NzRhYzhkN2UyNmI0OGY4YjBjNjY2YzZhMwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUV2
ZW50RmFjdG9yeS5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBsYXRm
b3JtRXZlbnRGYWN0b3J5X2gKKyNkZWZpbmUgUGxhdGZvcm1FdmVudEZhY3RvcnlfaAorCisjaW5j
bHVkZSAiUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2
ZW50LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCisKKyNpZiBFTkFCTEUoR0VT
VFVSRV9FVkVOVFMpCisjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlRXZlbnQuaCIKKyNlbmRpZgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBsYXRmb3JtRXZlbnRGYWN0b3J5IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGxhdGZvcm1Nb3VzZUV2ZW50IGNyZWF0ZVBsYXRmb3JtTW91c2VF
dmVudChOU0V2ZW50ICosIE5TVmlldyAqd2luZG93Vmlldyk7CisgICAgc3RhdGljIFBsYXRmb3Jt
V2hlZWxFdmVudCBjcmVhdGVQbGF0Zm9ybVdoZWVsRXZlbnQoTlNFdmVudCAqLCBOU1ZpZXcgKndp
bmRvd1ZpZXcpOworICAgIHN0YXRpYyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQgY3JlYXRlUGxhdGZv
cm1LZXlib2FyZEV2ZW50KE5TRXZlbnQgKik7CisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQor
ICAgIHN0YXRpYyBQbGF0Zm9ybUdlc3R1cmVFdmVudCBjcmVhdGVQbGF0Zm9ybUdlc3R1cmVFdmVu
dChOU0V2ZW50ICosIE5TVmlldyAqd2luZG93Vmlldyk7CisjZW5kaWYKK307CisKKy8vIEZJWE1F
OiBUaGlzIGRvZXNuJ3QgcmVhbGx5IGJlbG9uZyBoZXJlLgorCisjaWYgUExBVEZPUk0oTUFDKSAm
JiBkZWZpbmVkKF9fT0JKQ19fKQorSW50UG9pbnQgZ2xvYmFsUG9pbnQoY29uc3QgTlNQb2ludCYg
d2luZG93UG9pbnQsIE5TV2luZG93ICopOworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIFBsYXRmb3JtRXZlbnRGYWN0b3J5X2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeS5tbQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
NTZiMzg4NmVjMTZjYzM1NzM2MzQ1YmI0MTQ5ZmM5MWNhZDVjNDAyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5Lm1tCkBA
IC0wLDAgKzEsNTM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtRXZlbnRGYWN0b3J5LmgiCisKKyNpbXBvcnQgIktleUV2ZW50Q29jb2EuaCIK
KyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgIlBsYXRmb3JtU2NyZWVuLmgiCisjaW1wb3J0
ICJTY3JvbGxiYXIuaCIKKyNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKKyNpbXBv
cnQgIldpbmRvd3NLZXlib2FyZENvZGVzLmgiCisjaW1wb3J0IDx3dGYvQVNDSUlDVHlwZS5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0ludFBvaW50IGdsb2JhbFBvaW50KGNvbnN0IE5TUG9p
bnQmIHdpbmRvd1BvaW50LCBOU1dpbmRvdyAqd2luZG93KQoreworICAgIHJldHVybiBJbnRQb2lu
dChmbGlwU2NyZWVuUG9pbnQoW3dpbmRvdyBjb252ZXJ0QmFzZVRvU2NyZWVuOndpbmRvd1BvaW50
XSwgc2NyZWVuRm9yV2luZG93KHdpbmRvdykpKTsKK30KKworc3RhdGljIEludFBvaW50IGdsb2Jh
bFBvaW50Rm9yRXZlbnQoTlNFdmVudCAqZXZlbnQpCit7CisgICAgc3dpdGNoIChbZXZlbnQgdHlw
ZV0pIHsKKyAgICAgICAgY2FzZSBOU0xlZnRNb3VzZURvd246CisgICAgICAgIGNhc2UgTlNMZWZ0
TW91c2VEcmFnZ2VkOgorICAgICAgICBjYXNlIE5TTGVmdE1vdXNlVXA6CisgICAgICAgIGNhc2Ug
TlNNb3VzZUVudGVyZWQ6CisgICAgICAgIGNhc2UgTlNNb3VzZUV4aXRlZDoKKyAgICAgICAgY2Fz
ZSBOU01vdXNlTW92ZWQ6CisgICAgICAgIGNhc2UgTlNPdGhlck1vdXNlRG93bjoKKyAgICAgICAg
Y2FzZSBOU090aGVyTW91c2VEcmFnZ2VkOgorICAgICAgICBjYXNlIE5TT3RoZXJNb3VzZVVwOgor
ICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZURvd246CisgICAgICAgIGNhc2UgTlNSaWdodE1vdXNl
RHJhZ2dlZDoKKyAgICAgICAgY2FzZSBOU1JpZ2h0TW91c2VVcDoKKyAgICAgICAgY2FzZSBOU1Nj
cm9sbFdoZWVsOgorICAgICAgICAgICAgcmV0dXJuIGdsb2JhbFBvaW50KFtldmVudCBsb2NhdGlv
bkluV2luZG93XSwgW2V2ZW50IHdpbmRvd10pOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgcmV0dXJuIEludFBvaW50KCk7CisgICAgfQorfQorCitzdGF0aWMgSW50UG9pbnQgcG9pbnRG
b3JFdmVudChOU0V2ZW50ICpldmVudCwgTlNWaWV3ICp3aW5kb3dWaWV3KQoreworICAgIHN3aXRj
aCAoW2V2ZW50IHR5cGVdKSB7CisgICAgICAgIGNhc2UgTlNMZWZ0TW91c2VEb3duOgorICAgICAg
ICBjYXNlIE5TTGVmdE1vdXNlRHJhZ2dlZDoKKyAgICAgICAgY2FzZSBOU0xlZnRNb3VzZVVwOgor
ICAgICAgICBjYXNlIE5TTW91c2VFbnRlcmVkOgorICAgICAgICBjYXNlIE5TTW91c2VFeGl0ZWQ6
CisgICAgICAgIGNhc2UgTlNNb3VzZU1vdmVkOgorICAgICAgICBjYXNlIE5TT3RoZXJNb3VzZURv
d246CisgICAgICAgIGNhc2UgTlNPdGhlck1vdXNlRHJhZ2dlZDoKKyAgICAgICAgY2FzZSBOU090
aGVyTW91c2VVcDoKKyAgICAgICAgY2FzZSBOU1JpZ2h0TW91c2VEb3duOgorICAgICAgICBjYXNl
IE5TUmlnaHRNb3VzZURyYWdnZWQ6CisgICAgICAgIGNhc2UgTlNSaWdodE1vdXNlVXA6CisgICAg
ICAgIGNhc2UgTlNTY3JvbGxXaGVlbDogeworICAgICAgICAgICAgLy8gTm90ZTogVGhpcyB3aWxs
IGhhdmUgaXRzIG9yaWdpbiBhdCB0aGUgYm90dG9tIGxlZnQgb2YgdGhlIHdpbmRvdyB1bmxlc3Mg
d2luZG93VmlldyBpcyBmbGlwcGVkLgorICAgICAgICAgICAgLy8gSW4gdGhvc2UgY2FzZXMsIHRo
ZSBZIGNvb3JkaW5hdGUgZ2V0cyBmbGlwcGVkIGJ5IFdpZGdldDo6Y29udmVydEZyb21Db250YWlu
aW5nV2luZG93LgorICAgICAgICAgICAgTlNQb2ludCBsb2NhdGlvbiA9IFtldmVudCBsb2NhdGlv
bkluV2luZG93XTsKKyAgICAgICAgICAgIGlmICh3aW5kb3dWaWV3KQorICAgICAgICAgICAgICAg
IGxvY2F0aW9uID0gW3dpbmRvd1ZpZXcgY29udmVydFBvaW50OmxvY2F0aW9uIGZyb21WaWV3Om5p
bF07CisgICAgICAgICAgICByZXR1cm4gSW50UG9pbnQobG9jYXRpb24pOworICAgICAgICB9Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gSW50UG9pbnQoKTsKKyAgICB9Cit9
CisKK3N0YXRpYyBNb3VzZUJ1dHRvbiBtb3VzZUJ1dHRvbkZvckV2ZW50KE5TRXZlbnQgKmV2ZW50
KQoreworICAgIHN3aXRjaCAoW2V2ZW50IHR5cGVdKSB7CisgICAgICAgIGNhc2UgTlNMZWZ0TW91
c2VEb3duOgorICAgICAgICBjYXNlIE5TTGVmdE1vdXNlVXA6CisgICAgICAgIGNhc2UgTlNMZWZ0
TW91c2VEcmFnZ2VkOgorICAgICAgICAgICAgcmV0dXJuIExlZnRCdXR0b247CisgICAgICAgIGNh
c2UgTlNSaWdodE1vdXNlRG93bjoKKyAgICAgICAgY2FzZSBOU1JpZ2h0TW91c2VVcDoKKyAgICAg
ICAgY2FzZSBOU1JpZ2h0TW91c2VEcmFnZ2VkOgorICAgICAgICAgICAgcmV0dXJuIFJpZ2h0QnV0
dG9uOworICAgICAgICBjYXNlIE5TT3RoZXJNb3VzZURvd246CisgICAgICAgIGNhc2UgTlNPdGhl
ck1vdXNlVXA6CisgICAgICAgIGNhc2UgTlNPdGhlck1vdXNlRHJhZ2dlZDoKKyAgICAgICAgICAg
IHJldHVybiBNaWRkbGVCdXR0b247CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1
cm4gTm9CdXR0b247CisgICAgfQorfQorCitzdGF0aWMgUGxhdGZvcm1FdmVudDo6VHlwZSBtb3Vz
ZUV2ZW50VHlwZUZvckV2ZW50KE5TRXZlbnQqIGV2ZW50KQoreworICAgIHN3aXRjaCAoW2V2ZW50
IHR5cGVdKSB7CisgICAgICAgIGNhc2UgTlNMZWZ0TW91c2VEcmFnZ2VkOgorICAgICAgICBjYXNl
IE5TTW91c2VFbnRlcmVkOgorICAgICAgICBjYXNlIE5TTW91c2VFeGl0ZWQ6CisgICAgICAgIGNh
c2UgTlNNb3VzZU1vdmVkOgorICAgICAgICBjYXNlIE5TT3RoZXJNb3VzZURyYWdnZWQ6CisgICAg
ICAgIGNhc2UgTlNSaWdodE1vdXNlRHJhZ2dlZDoKKyAgICAgICAgICAgIHJldHVybiBQbGF0Zm9y
bUV2ZW50OjpNb3VzZU1vdmVkOworICAgICAgICBjYXNlIE5TTGVmdE1vdXNlRG93bjoKKyAgICAg
ICAgY2FzZSBOU1JpZ2h0TW91c2VEb3duOgorICAgICAgICBjYXNlIE5TT3RoZXJNb3VzZURvd246
CisgICAgICAgICAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6TW91c2VQcmVzc2VkOworICAgICAg
ICBjYXNlIE5TTGVmdE1vdXNlVXA6CisgICAgICAgIGNhc2UgTlNSaWdodE1vdXNlVXA6CisgICAg
ICAgIGNhc2UgTlNPdGhlck1vdXNlVXA6CisgICAgICAgICAgICByZXR1cm4gUGxhdGZvcm1FdmVu
dDo6TW91c2VSZWxlYXNlZDsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBQ
bGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkOworICAgIH0KK30KKworc3RhdGljIGludCBjbGlja0Nv
dW50Rm9yRXZlbnQoTlNFdmVudCAqZXZlbnQpCit7CisgICAgc3dpdGNoIChbZXZlbnQgdHlwZV0p
IHsKKyAgICAgICAgY2FzZSBOU0xlZnRNb3VzZURvd246CisgICAgICAgIGNhc2UgTlNMZWZ0TW91
c2VVcDoKKyAgICAgICAgY2FzZSBOU0xlZnRNb3VzZURyYWdnZWQ6CisgICAgICAgIGNhc2UgTlNS
aWdodE1vdXNlRG93bjoKKyAgICAgICAgY2FzZSBOU1JpZ2h0TW91c2VVcDoKKyAgICAgICAgY2Fz
ZSBOU1JpZ2h0TW91c2VEcmFnZ2VkOgorICAgICAgICBjYXNlIE5TT3RoZXJNb3VzZURvd246Cisg
ICAgICAgIGNhc2UgTlNPdGhlck1vdXNlVXA6CisgICAgICAgIGNhc2UgTlNPdGhlck1vdXNlRHJh
Z2dlZDoKKyAgICAgICAgICAgIHJldHVybiBbZXZlbnQgY2xpY2tDb3VudF07CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK3N0YXRpYyBQbGF0Zm9y
bVdoZWVsRXZlbnRQaGFzZSBtb21lbnR1bVBoYXNlRm9yRXZlbnQoTlNFdmVudCAqZXZlbnQpCit7
CisgICAgdWludDMyX3QgcGhhc2UgPSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmU7CisKKyNp
ZiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9T
Tk9XX0xFT1BBUkQpCisgICAgaWYgKFtldmVudCBtb21lbnR1bVBoYXNlXSAmIE5TRXZlbnRQaGFz
ZUJlZ2FuKQorICAgICAgICBwaGFzZSB8PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUJlZ2FuOwor
ICAgIGlmIChbZXZlbnQgbW9tZW50dW1QaGFzZV0gJiBOU0V2ZW50UGhhc2VTdGF0aW9uYXJ5KQor
ICAgICAgICBwaGFzZSB8PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZVN0YXRpb25hcnk7CisgICAg
aWYgKFtldmVudCBtb21lbnR1bVBoYXNlXSAmIE5TRXZlbnRQaGFzZUNoYW5nZWQpCisgICAgICAg
IHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQ2hhbmdlZDsKKyAgICBpZiAoW2V2ZW50
IG1vbWVudHVtUGhhc2VdICYgTlNFdmVudFBoYXNlRW5kZWQpCisgICAgICAgIHBoYXNlIHw9IFBs
YXRmb3JtV2hlZWxFdmVudFBoYXNlRW5kZWQ7CisgICAgaWYgKFtldmVudCBtb21lbnR1bVBoYXNl
XSAmIE5TRXZlbnRQaGFzZUNhbmNlbGxlZCkKKyAgICAgICAgcGhhc2UgfD0gUGxhdGZvcm1XaGVl
bEV2ZW50UGhhc2VDYW5jZWxsZWQ7CisjZWxzZQorICAgIHN3aXRjaCAod2tHZXROU0V2ZW50TW9t
ZW50dW1QaGFzZShldmVudCkpIHsKKyAgICBjYXNlIHdrRXZlbnRQaGFzZU5vbmU6CisgICAgICAg
IHBoYXNlID0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VOb25lOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIHdrRXZlbnRQaGFzZUJlZ2FuOgorICAgICAgICBwaGFzZSA9IFBsYXRmb3JtV2hlZWxF
dmVudFBoYXNlQmVnYW47CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ugd2tFdmVudFBoYXNlQ2hh
bmdlZDoKKyAgICAgICAgcGhhc2UgPSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUNoYW5nZWQ7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2Ugd2tFdmVudFBoYXNlRW5kZWQ6CisgICAgICAgIHBoYXNl
ID0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VFbmRlZDsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
I2VuZGlmCisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U+
KHBoYXNlKTsKK30KKworc3RhdGljIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIHBoYXNlRm9yRXZl
bnQoTlNFdmVudCAqZXZlbnQpCit7CisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkg
JiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQorICAgIHVpbnQzMl90IHBoYXNl
ID0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VOb25lOyAKKyAgICBpZiAoW2V2ZW50IHBoYXNlXSAm
IE5TRXZlbnRQaGFzZUJlZ2FuKQorICAgICAgICBwaGFzZSB8PSBQbGF0Zm9ybVdoZWVsRXZlbnRQ
aGFzZUJlZ2FuOworICAgIGlmIChbZXZlbnQgcGhhc2VdICYgTlNFdmVudFBoYXNlU3RhdGlvbmFy
eSkKKyAgICAgICAgcGhhc2UgfD0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VTdGF0aW9uYXJ5Owor
ICAgIGlmIChbZXZlbnQgcGhhc2VdICYgTlNFdmVudFBoYXNlQ2hhbmdlZCkKKyAgICAgICAgcGhh
c2UgfD0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VDaGFuZ2VkOworICAgIGlmIChbZXZlbnQgcGhh
c2VdICYgTlNFdmVudFBoYXNlRW5kZWQpCisgICAgICAgIHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxF
dmVudFBoYXNlRW5kZWQ7CisgICAgaWYgKFtldmVudCBwaGFzZV0gJiBOU0V2ZW50UGhhc2VDYW5j
ZWxsZWQpCisgICAgICAgIHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQ2FuY2VsbGVk
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZT4ocGhhc2Up
OworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZXZlbnQpOworICAgIHJldHVybiBQbGF0Zm9ybVdo
ZWVsRXZlbnRQaGFzZU5vbmU7CisjZW5kaWYKK30KKworI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5U
UykKK3N0YXRpYyBQbGF0Zm9ybUV2ZW50OjpUeXBlIGdlc3R1cmVFdmVudFR5cGVGb3JFdmVudChO
U0V2ZW50ICpldmVudCkKK3sKKyAgICBzd2l0Y2ggKFtldmVudCB0eXBlXSkgeworICAgIGNhc2Ug
TlNFdmVudFR5cGVCZWdpbkdlc3R1cmU6CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpH
ZXN0dXJlU2Nyb2xsQmVnaW47CisgICAgY2FzZSBOU0V2ZW50VHlwZUVuZEdlc3R1cmU6CisgICAg
ICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsRW5kOworICAgIGRlZmF1bHQ6
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gUGxhdGZvcm1F
dmVudDo6R2VzdHVyZVNjcm9sbEVuZDsKKyAgICB9Cit9CisjZW5kaWYKKworc3RhdGljIGlubGlu
ZSBTdHJpbmcgdGV4dEZyb21FdmVudChOU0V2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoW2V2ZW50
IHR5cGVdID09IE5TRmxhZ3NDaGFuZ2VkKQorICAgICAgICByZXR1cm4gU3RyaW5nKCIiKTsKKyAg
ICByZXR1cm4gU3RyaW5nKFtldmVudCBjaGFyYWN0ZXJzXSk7Cit9CisKK3N0YXRpYyBpbmxpbmUg
U3RyaW5nIHVubW9kaWZpZWRUZXh0RnJvbUV2ZW50KE5TRXZlbnQqIGV2ZW50KQoreworICAgIGlm
IChbZXZlbnQgdHlwZV0gPT0gTlNGbGFnc0NoYW5nZWQpCisgICAgICAgIHJldHVybiBTdHJpbmco
IiIpOworICAgIHJldHVybiBTdHJpbmcoW2V2ZW50IGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVy
c10pOworfQorCitzdGF0aWMgU3RyaW5nIGtleUlkZW50aWZpZXJGb3JLZXlFdmVudChOU0V2ZW50
KiBldmVudCkKK3sKKyAgICBpZiAoW2V2ZW50IHR5cGVdID09IE5TRmxhZ3NDaGFuZ2VkKSAKKyAg
ICAgICAgc3dpdGNoIChbZXZlbnQga2V5Q29kZV0pIHsKKyAgICAgICAgICAgIGNhc2UgNTQ6IC8v
IFJpZ2h0IENvbW1hbmQKKyAgICAgICAgICAgIGNhc2UgNTU6IC8vIExlZnQgQ29tbWFuZAorICAg
ICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoIk1ldGEiKTsKKyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGNhc2UgNTc6IC8vIENhcHNsb2NrCisgICAgICAgICAgICAgICAgcmV0dXJuIFN0
cmluZygiQ2Fwc0xvY2siKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgNTY6
IC8vIExlZnQgU2hpZnQKKyAgICAgICAgICAgIGNhc2UgNjA6IC8vIFJpZ2h0IFNoaWZ0CisgICAg
ICAgICAgICAgICAgcmV0dXJuIFN0cmluZygiU2hpZnQiKTsKKyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGNhc2UgNTg6IC8vIExlZnQgQWx0CisgICAgICAgICAgICBjYXNlIDYxOiAvLyBS
aWdodCBBbHQKKyAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCJBbHQiKTsKKyAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgNTk6IC8vIExlZnQgQ3RybAorICAgICAgICAgICAg
Y2FzZSA2MjogLy8gUmlnaHQgQ3RybAorICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoIkNv
bnRyb2wiKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFN0
cmluZygiIik7CisgICAgICAgIH0KKyAgICAKKyAgICBOU1N0cmluZyAqcyA9IFtldmVudCBjaGFy
YWN0ZXJzSWdub3JpbmdNb2RpZmllcnNdOworICAgIGlmIChbcyBsZW5ndGhdICE9IDEpIHsKKyAg
ICAgICAgTE9HKEV2ZW50cywgInJlY2VpdmVkIGFuIHVuZXhwZWN0ZWQgbnVtYmVyIG9mIGNoYXJh
Y3RlcnMgaW4ga2V5IGV2ZW50OiAldSIsIFtzIGxlbmd0aF0pOworICAgICAgICByZXR1cm4gIlVu
aWRlbnRpZmllZCI7CisgICAgfQorICAgIHJldHVybiBrZXlJZGVudGlmaWVyRm9yQ2hhckNvZGUo
W3MgY2hhcmFjdGVyQXRJbmRleDowXSk7Cit9CisKK3N0YXRpYyBib29sIGlzS2V5cGFkRXZlbnQo
TlNFdmVudCogZXZlbnQpCit7CisgICAgLy8gQ2hlY2sgdGhhdCB0aGlzIGlzIHRoZSB0eXBlIG9m
IGV2ZW50IHRoYXQgaGFzIGEga2V5Q29kZS4KKyAgICBzd2l0Y2ggKFtldmVudCB0eXBlXSkgewor
ICAgICAgICBjYXNlIE5TS2V5RG93bjoKKyAgICAgICAgY2FzZSBOU0tleVVwOgorICAgICAgICBj
YXNlIE5TRmxhZ3NDaGFuZ2VkOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKFtldmVudCBtb2Rp
ZmllckZsYWdzXSAmIE5TTnVtZXJpY1BhZEtleU1hc2spCisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgc3dpdGNoIChbZXZlbnQga2V5Q29kZV0pIHsKKyAgICAgICAgY2FzZSA3MTogLy8gQ2xl
YXIKKyAgICAgICAgY2FzZSA4MTogLy8gPQorICAgICAgICBjYXNlIDc1OiAvLyAvCisgICAgICAg
IGNhc2UgNjc6IC8vICoKKyAgICAgICAgY2FzZSA3ODogLy8gLQorICAgICAgICBjYXNlIDY5OiAv
LyArCisgICAgICAgIGNhc2UgNzY6IC8vIEVudGVyCisgICAgICAgIGNhc2UgNjU6IC8vIC4KKyAg
ICAgICAgY2FzZSA4MjogLy8gMAorICAgICAgICBjYXNlIDgzOiAvLyAxCisgICAgICAgIGNhc2Ug
ODQ6IC8vIDIKKyAgICAgICAgY2FzZSA4NTogLy8gMworICAgICAgICBjYXNlIDg2OiAvLyA0Cisg
ICAgICAgIGNhc2UgODc6IC8vIDUKKyAgICAgICAgY2FzZSA4ODogLy8gNgorICAgICAgICBjYXNl
IDg5OiAvLyA3CisgICAgICAgIGNhc2UgOTE6IC8vIDgKKyAgICAgICAgY2FzZSA5MjogLy8gOQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgIH0KKyAgICAgCisgICAgIHJldHVybiBmYWxz
ZTsKK30KKworc3RhdGljIGludCB3aW5kb3dzS2V5Q29kZUZvcktleUV2ZW50KE5TRXZlbnQqIGV2
ZW50KQoreworICAgIGludCBjb2RlID0gMDsKKyAgICAvLyBUaGVyZSBhcmUgc2V2ZXJhbCBraW5k
cyBvZiBjaGFyYWN0ZXJzIGZvciB3aGljaCB3ZSBwcm9kdWNlIGtleSBjb2RlIGZyb20gY2hhciBj
b2RlOgorICAgIC8vIDEuIFJvbWFuIGxldHRlcnMuIFdpbmRvd3Mga2V5Ym9hcmQgbGF5b3V0cyBh
ZmZlY3QgYm90aCB2aXJ0dWFsIGtleSBjb2RlcyBhbmQgY2hhcmFjdGVyIGNvZGVzIGZvciB0aGVz
ZSwKKyAgICAvLyAgICBzbyBlLmcuICdBJyBnZXRzIHRoZSBzYW1lIGtleUNvZGUgb24gUVdFUlRZ
LCBBWkVSVFkgb3IgRHZvcmFrIGxheW91dHMuCisgICAgLy8gMi4gS2V5cyBmb3Igd2hpY2ggdGhl
cmUgaXMgbm8ga25vd24gTWFjIHZpcnR1YWwga2V5IGNvZGVzLCBsaWtlIFByaW50U2NyZWVuLgor
ICAgIC8vIDMuIENlcnRhaW4gcHVuY3R1YXRpb24ga2V5cy4gT24gV2luZG93cywgdGhlc2UgYXJl
IGFsc28gcmVtYXBwZWQgZGVwZW5kaW5nIG9uIGN1cnJlbnQga2V5Ym9hcmQgbGF5b3V0LAorICAg
IC8vICAgIGJ1dCBzZWUgY29tbWVudCBpbiB3aW5kb3dzS2V5Q29kZUZvckNoYXJDb2RlKCkuCisg
ICAgaWYgKFtldmVudCB0eXBlXSA9PSBOU0tleURvd24gfHwgW2V2ZW50IHR5cGVdID09IE5TS2V5
VXApIHsKKyAgICAgICAgLy8gQ21kIHN3aXRjaGVzIFJvbWFuIGxldHRlcnMgZm9yIER2b3Jhay1R
V0VSVFkgbGF5b3V0LCBzbyB0cnkgbW9kaWZpZWQgY2hhcmFjdGVycyBmaXJzdC4KKyAgICAgICAg
TlNTdHJpbmcqIHMgPSBbZXZlbnQgY2hhcmFjdGVyc107CisgICAgICAgIGNvZGUgPSBbcyBsZW5n
dGhdID4gMCA/IHdpbmRvd3NLZXlDb2RlRm9yQ2hhckNvZGUoW3MgY2hhcmFjdGVyQXRJbmRleDow
XSkgOiAwOworICAgICAgICBpZiAoY29kZSkKKyAgICAgICAgICAgIHJldHVybiBjb2RlOworCisg
ICAgICAgIC8vIEN0cmwrQSBvbiBhbiBBWkVSVFkga2V5Ym9hcmQgd291bGQgZ2V0IFZLX1Ega2V5
Q29kZSBpZiB3ZSByZWxpZWQgb24gLVtOU0V2ZW50IGtleUNvZGVdIGJlbG93LgorICAgICAgICBz
ID0gW2V2ZW50IGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyc107CisgICAgICAgIGNvZGUgPSBb
cyBsZW5ndGhdID4gMCA/IHdpbmRvd3NLZXlDb2RlRm9yQ2hhckNvZGUoW3MgY2hhcmFjdGVyQXRJ
bmRleDowXSkgOiAwOworICAgICAgICBpZiAoY29kZSkKKyAgICAgICAgICAgIHJldHVybiBjb2Rl
OworICAgIH0KKworICAgIC8vIE1hcCBNYWMgdmlydHVhbCBrZXkgY29kZSBkaXJlY3RseSB0byBX
aW5kb3dzIG9uZSBmb3IgYW55IGtleXMgbm90IGhhbmRsZWQgYWJvdmUuCisgICAgLy8gRS5nLiB0
aGUga2V5IG5leHQgdG8gQ2FwcyBMb2NrIGhhcyB0aGUgc2FtZSBFdmVudC5rZXlDb2RlIG9uIFUu
Uy4ga2V5Ym9hcmQgKCdBJykgYW5kIG9uIFJ1c3NpYW4ga2V5Ym9hcmQgKENZUklMTElDIExFVFRF
UiBFRikuCisgICAgcmV0dXJuIHdpbmRvd3NLZXlDb2RlRm9yS2V5Q29kZShbZXZlbnQga2V5Q29k
ZV0pOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgaXNLZXlVcEV2ZW50KE5TRXZlbnQgKmV2ZW50
KQoreworICAgIGlmIChbZXZlbnQgdHlwZV0gIT0gTlNGbGFnc0NoYW5nZWQpCisgICAgICAgIHJl
dHVybiBbZXZlbnQgdHlwZV0gPT0gTlNLZXlVcDsKKyAgICAvLyBGSVhNRTogVGhpcyBsb2dpYyBm
YWlscyBpZiB0aGUgdXNlciBwcmVzc2VzIGJvdGggU2hpZnQga2V5cyBhdCBvbmNlLCBmb3IgZXhh
bXBsZToKKyAgICAvLyB3ZSB0cmVhdCByZWxlYXNpbmcgb25lIG9mIHRoZW0gYXMga2V5RG93bi4K
KyAgICBzd2l0Y2ggKFtldmVudCBrZXlDb2RlXSkgeworICAgICAgICBjYXNlIDU0OiAvLyBSaWdo
dCBDb21tYW5kCisgICAgICAgIGNhc2UgNTU6IC8vIExlZnQgQ29tbWFuZAorICAgICAgICAgICAg
cmV0dXJuIChbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0NvbW1hbmRLZXlNYXNrKSA9PSAwOwor
ICAgICAgICAgICAgCisgICAgICAgIGNhc2UgNTc6IC8vIENhcHNsb2NrCisgICAgICAgICAgICBy
ZXR1cm4gKFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TQWxwaGFTaGlmdEtleU1hc2spID09IDA7
CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSA1NjogLy8gTGVmdCBTaGlmdAorICAgICAgICBj
YXNlIDYwOiAvLyBSaWdodCBTaGlmdAorICAgICAgICAgICAgcmV0dXJuIChbZXZlbnQgbW9kaWZp
ZXJGbGFnc10gJiBOU1NoaWZ0S2V5TWFzaykgPT0gMDsKKyAgICAgICAgICAgIAorICAgICAgICBj
YXNlIDU4OiAvLyBMZWZ0IEFsdAorICAgICAgICBjYXNlIDYxOiAvLyBSaWdodCBBbHQKKyAgICAg
ICAgICAgIHJldHVybiAoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNBbHRlcm5hdGVLZXlNYXNr
KSA9PSAwOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgNTk6IC8vIExlZnQgQ3RybAorICAg
ICAgICBjYXNlIDYyOiAvLyBSaWdodCBDdHJsCisgICAgICAgICAgICByZXR1cm4gKFtldmVudCBt
b2RpZmllckZsYWdzXSAmIE5TQ29udHJvbEtleU1hc2spID09IDA7CisgICAgICAgICAgICAKKyAg
ICAgICAgY2FzZSA2MzogLy8gRnVuY3Rpb24KKyAgICAgICAgICAgIHJldHVybiAoW2V2ZW50IG1v
ZGlmaWVyRmxhZ3NdICYgTlNGdW5jdGlvbktleU1hc2spID09IDA7CisgICAgfQorICAgIHJldHVy
biBmYWxzZTsKK30KKworc3RhdGljIGlubGluZSBQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcnMgbW9k
aWZpZXJzRm9yRXZlbnQoTlNFdmVudCAqZXZlbnQpCit7CisgICAgdW5zaWduZWQgbW9kaWZpZXJz
ID0gMDsKKyAgICBpZiAoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNTaGlmdEtleU1hc2spCisg
ICAgICAgIG1vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpTaGlmdEtleTsKKyAgICBpZiAoW2V2
ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb250cm9sS2V5TWFzaykKKyAgICAgICAgbW9kaWZpZXJz
IHw9IFBsYXRmb3JtRXZlbnQ6OkN0cmxLZXk7CisgICAgaWYgKFtldmVudCBtb2RpZmllckZsYWdz
XSAmIE5TQWx0ZXJuYXRlS2V5TWFzaykKKyAgICAgICAgbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZl
bnQ6OkFsdEtleTsKKyAgICBpZiAoW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb21tYW5kS2V5
TWFzaykKKyAgICAgICAgbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1ldGFLZXk7CisgICAg
cmV0dXJuIChQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcnMpbW9kaWZpZXJzOworfQorCisKK2NsYXNz
IFBsYXRmb3JtTW91c2VFdmVudEJ1aWxkZXIgOiBwdWJsaWMgUGxhdGZvcm1Nb3VzZUV2ZW50IHsK
K3B1YmxpYzoKKyAgICBQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyKE5TRXZlbnQgKmV2ZW50LCBO
U1ZpZXcgKndpbmRvd1ZpZXcpCisgICAgeworICAgICAgICAvLyBQbGF0Zm9ybUV2ZW50CisgICAg
ICAgIG1fdHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbW91c2VFdmVudFR5cGVG
b3JFdmVudChldmVudCk7CisgICAgICAgIG1fbW9kaWZpZXJzICAgICAgICAgICAgICAgICAgICAg
ICAgID0gbW9kaWZpZXJzRm9yRXZlbnQoZXZlbnQpOworICAgICAgICBtX3RpbWVzdGFtcCAgICAg
ICAgICAgICAgICAgICAgICAgICA9IFtldmVudCB0aW1lc3RhbXBdOworCisgICAgICAgIC8vIFBs
YXRmb3JtTW91c2VFdmVudAorICAgICAgICBtX3Bvc2l0aW9uICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IHBvaW50Rm9yRXZlbnQoZXZlbnQsIHdpbmRvd1ZpZXcpOworICAgICAgICBtX2dsb2Jh
bFBvc2l0aW9uICAgICAgICAgICAgICAgICAgICA9IGdsb2JhbFBvaW50Rm9yRXZlbnQoZXZlbnQp
OworICAgICAgICBtX2J1dHRvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG1vdXNlQnV0
dG9uRm9yRXZlbnQoZXZlbnQpOworICAgICAgICBtX2NsaWNrQ291bnQgICAgICAgICAgICAgICAg
ICAgICAgICA9IGNsaWNrQ291bnRGb3JFdmVudChldmVudCk7CisgICAgICAgIAorICAgICAgICAv
LyBNYWMgc3BlY2lmaWMKKyAgICAgICAgbV9tb2RpZmllckZsYWdzICAgICAgICAgICAgICAgICAg
ICAgPSBbZXZlbnQgbW9kaWZpZXJGbGFnc107CisgICAgICAgIG1fZXZlbnROdW1iZXIgICAgICAg
ICAgICAgICAgICAgICAgID0gW2V2ZW50IGV2ZW50TnVtYmVyXTsKKyAgICB9Cit9OworCitQbGF0
Zm9ybU1vdXNlRXZlbnQgUGxhdGZvcm1FdmVudEZhY3Rvcnk6OmNyZWF0ZVBsYXRmb3JtTW91c2VF
dmVudChOU0V2ZW50ICpldmVudCwgTlNWaWV3ICp3aW5kb3dWaWV3KQoreworICAgIHJldHVybiBQ
bGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyKGV2ZW50LCB3aW5kb3dWaWV3KTsKK30KKworCitjbGFz
cyBQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyIDogcHVibGljIFBsYXRmb3JtV2hlZWxFdmVudCB7
CitwdWJsaWM6CisgICAgUGxhdGZvcm1XaGVlbEV2ZW50QnVpbGRlcihOU0V2ZW50ICpldmVudCwg
TlNWaWV3ICp3aW5kb3dWaWV3KQorICAgIHsKKyAgICAgICAgLy8gUGxhdGZvcm1FdmVudAorICAg
ICAgICBtX3R5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFBsYXRmb3JtRXZlbnQ6
OldoZWVsOworICAgICAgICBtX21vZGlmaWVycyAgICAgICAgICAgICAgICAgICAgICAgICA9IG1v
ZGlmaWVyc0ZvckV2ZW50KGV2ZW50KTsKKyAgICAgICAgbV90aW1lc3RhbXAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBbZXZlbnQgdGltZXN0YW1wXTsKKworICAgICAgICAvLyBQbGF0Zm9ybVdo
ZWVsRXZlbnQKKyAgICAgICAgbV9wb3NpdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgPSBw
b2ludEZvckV2ZW50KGV2ZW50LCB3aW5kb3dWaWV3KTsKKyAgICAgICAgbV9nbG9iYWxQb3NpdGlv
biAgICAgICAgICAgICAgICAgICAgPSBnbG9iYWxQb2ludEZvckV2ZW50KGV2ZW50KTsKKyAgICAg
ICAgbV9ncmFudWxhcml0eSAgICAgICAgICAgICAgICAgICAgICAgPSBTY3JvbGxCeVBhZ2VXaGVl
bEV2ZW50OworCisgICAgICAgIEJPT0wgY29udGludW91czsKKyAgICAgICAgd2tHZXRXaGVlbEV2
ZW50RGVsdGFzKGV2ZW50LCAmbV9kZWx0YVgsICZtX2RlbHRhWSwgJmNvbnRpbnVvdXMpOworICAg
ICAgICBpZiAoY29udGludW91cykgeworICAgICAgICAgICAgbV93aGVlbFRpY2tzWCA9IG1fZGVs
dGFYIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSk7
CisgICAgICAgICAgICBtX3doZWVsVGlja3NZID0gbV9kZWx0YVkgLyBzdGF0aWNfY2FzdDxmbG9h
dD4oU2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIG1fd2hlZWxUaWNrc1ggPSBtX2RlbHRhWDsKKyAgICAgICAgICAgIG1fd2hlZWxU
aWNrc1kgPSBtX2RlbHRhWTsKKyAgICAgICAgICAgIG1fZGVsdGFYICo9IHN0YXRpY19jYXN0PGZs
b2F0PihTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCkpOworICAgICAgICAgICAgbV9kZWx0
YVkgKj0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSk7
CisgICAgICAgIH0KKworICAgICAgICBtX3BoYXNlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IHBoYXNlRm9yRXZlbnQoZXZlbnQpOworICAgICAgICBtX21vbWVudHVtUGhhc2UgICAgICAg
ICAgICAgICAgICAgICA9IG1vbWVudHVtUGhhc2VGb3JFdmVudChldmVudCk7CisgICAgICAgIG1f
aGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyAgICAgICAgID0gY29udGludW91czsKKworI2lmIEhB
VkUoSU5WRVJURURfV0hFRUxfRVZFTlRTKQorICAgICAgICBtX2RpcmVjdGlvbkludmVydGVkRnJv
bURldmljZSAgICAgICA9IFtldmVudCBpc0RpcmVjdGlvbkludmVydGVkRnJvbURldmljZV07Cisj
ZWxzZQorICAgICAgICBtX2RpcmVjdGlvbkludmVydGVkRnJvbURldmljZSAgICAgICA9IGZhbHNl
OworI2VuZGlmCisgICAgfQorfTsKKworUGxhdGZvcm1XaGVlbEV2ZW50IFBsYXRmb3JtRXZlbnRG
YWN0b3J5OjpjcmVhdGVQbGF0Zm9ybVdoZWVsRXZlbnQoTlNFdmVudCAqZXZlbnQsIE5TVmlldyAq
d2luZG93VmlldykKK3sKKyAgICByZXR1cm4gUGxhdGZvcm1XaGVlbEV2ZW50QnVpbGRlcihldmVu
dCwgd2luZG93Vmlldyk7Cit9CisKKworY2xhc3MgUGxhdGZvcm1LZXlib2FyZEV2ZW50QnVpbGRl
ciA6IHB1YmxpYyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQgeworcHVibGljOgorICAgIFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudEJ1aWxkZXIoTlNFdmVudCAqZXZlbnQpCisgICAgeworICAgICAgICAvLyBQ
bGF0Zm9ybUV2ZW50CisgICAgICAgIG1fdHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gaXNLZXlVcEV2ZW50KGV2ZW50KSA/IFBsYXRmb3JtRXZlbnQ6OktleVVwIDogUGxhdGZvcm1F
dmVudDo6S2V5RG93bjsKKyAgICAgICAgbV9tb2RpZmllcnMgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBtb2RpZmllcnNGb3JFdmVudChldmVudCk7CisgICAgICAgIG1fdGltZXN0YW1wICAgICAg
ICAgICAgICAgICAgICAgICAgID0gW2V2ZW50IHRpbWVzdGFtcF07CisKKyAgICAgICAgLy8gUGxh
dGZvcm1LZXlib2FyZEV2ZW50CisgICAgICAgIG1fdGV4dCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gdGV4dEZyb21FdmVudChldmVudCk7CisgICAgICAgIG1fdW5tb2RpZmllZFRleHQg
ICAgICAgICAgICAgICAgICAgID0gdW5tb2RpZmllZFRleHRGcm9tRXZlbnQoZXZlbnQpOworICAg
ICAgICBtX2tleUlkZW50aWZpZXIgICAgICAgICAgICAgICAgICAgICA9IGtleUlkZW50aWZpZXJG
b3JLZXlFdmVudChldmVudCk7CisgICAgICAgIG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlICAgICAg
ICAgICAgID0gd2luZG93c0tleUNvZGVGb3JLZXlFdmVudChldmVudCk7CisgICAgICAgIG1fbmF0
aXZlVmlydHVhbEtleUNvZGUgICAgICAgICAgICAgID0gW2V2ZW50IGtleUNvZGVdOworICAgICAg
ICBtX21hY0NoYXJDb2RlICAgICAgICAgICAgICAgICAgICAgICA9IHdrR2V0TlNFdmVudEtleUNo
YXIoZXZlbnQpOworICAgICAgICBtX2F1dG9SZXBlYXQgICAgICAgICAgICAgICAgICAgICAgICA9
IChbZXZlbnQgdHlwZV0gIT0gTlNGbGFnc0NoYW5nZWQpICYmIFtldmVudCBpc0FSZXBlYXRdOwor
ICAgICAgICBtX2lzS2V5cGFkICAgICAgICAgICAgICAgICAgICAgICAgICA9IGlzS2V5cGFkRXZl
bnQoZXZlbnQpOworICAgICAgICBtX2lzU3lzdGVtS2V5ICAgICAgICAgICAgICAgICAgICAgICA9
IGZhbHNlOyAvLyBTeXN0ZW1LZXkgaXMgYWx3YXlzIGZhbHNlIG9uIHRoZSBNYWMuCisKKyAgICAg
ICAgLy8gQWx3YXlzIHVzZSAxMyBmb3IgRW50ZXIvUmV0dXJuIC0tIHdlIGRvbid0IHdhbnQgdG8g
dXNlIEFwcEtpdCdzIGRpZmZlcmVudCBjaGFyYWN0ZXIgZm9yIEVudGVyLgorICAgICAgICBpZiAo
bV93aW5kb3dzVmlydHVhbEtleUNvZGUgPT0gVktfUkVUVVJOKSB7CisgICAgICAgICAgICBtX3Rl
eHQgPSAiXHIiOworICAgICAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9ICJcciI7CisgICAgICAg
IH0KKworICAgICAgICAvLyBBcHBLaXQgc2V0cyB0ZXh0IHRvICJceDdGIiBmb3IgYmFja3NwYWNl
LCBidXQgdGhlIGNvcnJlY3QgS2V5Ym9hcmRFdmVudCBjaGFyYWN0ZXIgY29kZSBpcyA4LgorICAg
ICAgICBpZiAobV93aW5kb3dzVmlydHVhbEtleUNvZGUgPT0gVktfQkFDSykgeworICAgICAgICAg
ICAgbV90ZXh0ID0gIlx4OCI7CisgICAgICAgICAgICBtX3VubW9kaWZpZWRUZXh0ID0gIlx4OCI7
CisgICAgICAgIH0KKworICAgICAgICAvLyBBbHdheXMgdXNlIDkgZm9yIFRhYiAtLSB3ZSBkb24n
dCB3YW50IHRvIHVzZSBBcHBLaXQncyBkaWZmZXJlbnQgY2hhcmFjdGVyIGZvciBzaGlmdC10YWIu
CisgICAgICAgIGlmIChtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSA9PSBWS19UQUIpIHsKKyAgICAg
ICAgICAgIG1fdGV4dCA9ICJceDkiOworICAgICAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9ICJc
eDkiOworICAgICAgICB9CisKKyAgICAgICAgLy8gTWFjIHNwZWNpZmljLgorICAgICAgICBtX21h
Y0V2ZW50ID0gZXZlbnQ7CisgICAgfQorfTsKKworUGxhdGZvcm1LZXlib2FyZEV2ZW50IFBsYXRm
b3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQbGF0Zm9ybUtleWJvYXJkRXZlbnQoTlNFdmVudCAqZXZl
bnQpCit7CisgICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9hcmRFdmVudEJ1aWxkZXIoZXZlbnQpOwor
fQorCisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorY2xhc3MgUGxhdGZvcm1HZXN0dXJlRXZl
bnRCdWlsZGVyIDogcHVibGljIFBsYXRmb3JtR2VzdHVyZUV2ZW50IHsKK3B1YmxpYzoKKyAgICBQ
bGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXIoTlNFdmVudCAqZXZlbnQsIE5TVmlldyAqd2luZG93
VmlldykKKyAgICB7CisgICAgICAgIC8vIFBsYXRmb3JtRXZlbnQKKyAgICAgICAgbV90eXBlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBnZXN0dXJlRXZlbnRUeXBlRm9yRXZlbnQoZXZl
bnQpOworICAgICAgICBtX21vZGlmaWVycyAgICAgICAgICAgICAgICAgICAgICAgICA9IG1vZGlm
aWVyc0ZvckV2ZW50KGV2ZW50KTsKKyAgICAgICAgbV90aW1lc3RhbXAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBbZXZlbnQgdGltZXN0YW1wXTsKKworICAgICAgICAvLyBQbGF0Zm9ybUdlc3R1
cmVFdmVudAorICAgICAgICBtX3Bvc2l0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICA9IHBv
aW50Rm9yRXZlbnQoZXZlbnQsIHdpbmRvd1ZpZXcpOworICAgICAgICBtX2dsb2JhbFBvc2l0aW9u
ICAgICAgICAgICAgICAgICAgICA9IGdsb2JhbFBvaW50Rm9yRXZlbnQoZXZlbnQpOworICAgICAg
ICBtX2RlbHRhWCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDA7CisgICAgICAgIG1fZGVs
dGFZICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMDsKKyAgICB9Cit9OworCitQbGF0Zm9y
bUdlc3R1cmVFdmVudCBQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1HZXN0dXJl
RXZlbnQoTlNFdmVudCAqZXZlbnQsIE5TVmlldyAqd2luZG93VmlldykKK3sKKyAgICByZXR1cm4g
UGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyKGV2ZW50LCB3aW5kb3dWaWV3KTsKK30KKyNlbmRp
ZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGxhdGZvcm1Nb3VzZUV2ZW50TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1BsYXRmb3JtTW91c2VFdmVudE1hYy5tbQppbmRleCBjNWY1OTg5MDEyYmY0OGE2
ZjBmMzEyYWUzNmY3ZWMzMmU0MzNjZmJjLi41NzQ4ZTdjNjk0YTY2MmIzYmEwYjY0ZDg3NTgwYzc2
MDQyOWM3YmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZv
cm1Nb3VzZUV2ZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0
Zm9ybU1vdXNlRXZlbnRNYWMubW0KQEAgLTEsMTY5ICsxLDIgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAotICovCiAKLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiUGxhdGZvcm1Nb3VzZUV2ZW50
LmgiCi0KLSNpbXBvcnQgIlBsYXRmb3JtU2NyZWVuLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotc3RhdGljIE1vdXNlQnV0dG9uIG1vdXNlQnV0dG9uRm9yRXZlbnQoTlNFdmVudCAqZXZlbnQp
Ci17Ci0gICAgc3dpdGNoIChbZXZlbnQgdHlwZV0pIHsKLSAgICAgICAgY2FzZSBOU0xlZnRNb3Vz
ZURvd246Ci0gICAgICAgIGNhc2UgTlNMZWZ0TW91c2VVcDoKLSAgICAgICAgY2FzZSBOU0xlZnRN
b3VzZURyYWdnZWQ6Ci0gICAgICAgICAgICByZXR1cm4gTGVmdEJ1dHRvbjsKLSAgICAgICAgY2Fz
ZSBOU1JpZ2h0TW91c2VEb3duOgotICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZVVwOgotICAgICAg
ICBjYXNlIE5TUmlnaHRNb3VzZURyYWdnZWQ6Ci0gICAgICAgICAgICByZXR1cm4gUmlnaHRCdXR0
b247Ci0gICAgICAgIGNhc2UgTlNPdGhlck1vdXNlRG93bjoKLSAgICAgICAgY2FzZSBOU090aGVy
TW91c2VVcDoKLSAgICAgICAgY2FzZSBOU090aGVyTW91c2VEcmFnZ2VkOgotICAgICAgICAgICAg
cmV0dXJuIE1pZGRsZUJ1dHRvbjsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVy
biBOb0J1dHRvbjsKLSAgICB9Ci19Ci0KLXN0YXRpYyBpbnQgY2xpY2tDb3VudEZvckV2ZW50KE5T
RXZlbnQgKmV2ZW50KQotewotICAgIHN3aXRjaCAoW2V2ZW50IHR5cGVdKSB7Ci0gICAgICAgIGNh
c2UgTlNMZWZ0TW91c2VEb3duOgotICAgICAgICBjYXNlIE5TTGVmdE1vdXNlVXA6Ci0gICAgICAg
IGNhc2UgTlNMZWZ0TW91c2VEcmFnZ2VkOgotICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZURvd246
Ci0gICAgICAgIGNhc2UgTlNSaWdodE1vdXNlVXA6Ci0gICAgICAgIGNhc2UgTlNSaWdodE1vdXNl
RHJhZ2dlZDoKLSAgICAgICAgY2FzZSBOU090aGVyTW91c2VEb3duOgotICAgICAgICBjYXNlIE5T
T3RoZXJNb3VzZVVwOgotICAgICAgICBjYXNlIE5TT3RoZXJNb3VzZURyYWdnZWQ6Ci0gICAgICAg
ICAgICByZXR1cm4gW2V2ZW50IGNsaWNrQ291bnRdOwotICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgfQotfQotCi1JbnRQb2ludCBnbG9iYWxQb2ludChjb25zdCBO
U1BvaW50JiB3aW5kb3dQb2ludCwgTlNXaW5kb3cgKndpbmRvdykKLXsKLSAgICByZXR1cm4gSW50
UG9pbnQoZmxpcFNjcmVlblBvaW50KFt3aW5kb3cgY29udmVydEJhc2VUb1NjcmVlbjp3aW5kb3dQ
b2ludF0sIHNjcmVlbkZvcldpbmRvdyh3aW5kb3cpKSk7Ci19Ci0KLUludFBvaW50IHBvaW50Rm9y
RXZlbnQoTlNFdmVudCAqZXZlbnQsIE5TVmlldyAqd2luZG93VmlldykKLXsKLSAgICBzd2l0Y2gg
KFtldmVudCB0eXBlXSkgewotICAgICAgICBjYXNlIE5TTGVmdE1vdXNlRG93bjoKLSAgICAgICAg
Y2FzZSBOU0xlZnRNb3VzZVVwOgotICAgICAgICBjYXNlIE5TTGVmdE1vdXNlRHJhZ2dlZDoKLSAg
ICAgICAgY2FzZSBOU1JpZ2h0TW91c2VEb3duOgotICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZVVw
OgotICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZURyYWdnZWQ6Ci0gICAgICAgIGNhc2UgTlNPdGhl
ck1vdXNlRG93bjoKLSAgICAgICAgY2FzZSBOU090aGVyTW91c2VVcDoKLSAgICAgICAgY2FzZSBO
U090aGVyTW91c2VEcmFnZ2VkOgotICAgICAgICBjYXNlIE5TTW91c2VNb3ZlZDoKLSAgICAgICAg
Y2FzZSBOU1Njcm9sbFdoZWVsOiB7Ci0gICAgICAgICAgICAvLyBOb3RlOiBUaGlzIHdpbGwgaGF2
ZSBpdHMgb3JpZ2luIGF0IHRoZSBib3R0b20gbGVmdCBvZiB0aGUgd2luZG93IHVubGVzcyB3aW5k
b3dWaWV3IGlzIGZsaXBwZWQuCi0gICAgICAgICAgICAvLyBJbiB0aG9zZSBjYXNlcywgdGhlIFkg
Y29vcmRpbmF0ZSBnZXRzIGZsaXBwZWQgYnkgV2lkZ2V0Ojpjb252ZXJ0RnJvbUNvbnRhaW5pbmdX
aW5kb3cuCi0gICAgICAgICAgICBOU1BvaW50IGxvY2F0aW9uID0gW2V2ZW50IGxvY2F0aW9uSW5X
aW5kb3ddOwotICAgICAgICAgICAgaWYgKHdpbmRvd1ZpZXcpCi0gICAgICAgICAgICAgICAgbG9j
YXRpb24gPSBbd2luZG93VmlldyBjb252ZXJ0UG9pbnQ6bG9jYXRpb24gZnJvbVZpZXc6bmlsXTsK
LSAgICAgICAgICAgIHJldHVybiBJbnRQb2ludChsb2NhdGlvbik7Ci0gICAgICAgIH0KLSAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBJbnRQb2ludCgpOwotICAgIH0KLX0KLQot
SW50UG9pbnQgZ2xvYmFsUG9pbnRGb3JFdmVudChOU0V2ZW50ICpldmVudCkKLXsKLSAgICBzd2l0
Y2ggKFtldmVudCB0eXBlXSkgewotICAgICAgICBjYXNlIE5TTGVmdE1vdXNlRG93bjoKLSAgICAg
ICAgY2FzZSBOU0xlZnRNb3VzZVVwOgotICAgICAgICBjYXNlIE5TTGVmdE1vdXNlRHJhZ2dlZDoK
LSAgICAgICAgY2FzZSBOU1JpZ2h0TW91c2VEb3duOgotICAgICAgICBjYXNlIE5TUmlnaHRNb3Vz
ZVVwOgotICAgICAgICBjYXNlIE5TUmlnaHRNb3VzZURyYWdnZWQ6Ci0gICAgICAgIGNhc2UgTlNP
dGhlck1vdXNlRG93bjoKLSAgICAgICAgY2FzZSBOU090aGVyTW91c2VVcDoKLSAgICAgICAgY2Fz
ZSBOU090aGVyTW91c2VEcmFnZ2VkOgotICAgICAgICBjYXNlIE5TTW91c2VNb3ZlZDoKLSAgICAg
ICAgY2FzZSBOU1Njcm9sbFdoZWVsOgotICAgICAgICAgICAgcmV0dXJuIGdsb2JhbFBvaW50KFtl
dmVudCBsb2NhdGlvbkluV2luZG93XSwgW2V2ZW50IHdpbmRvd10pOwotICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgcmV0dXJuIEludFBvaW50KCk7Ci0gICAgfQotfQotCi1zdGF0aWMgUGxh
dGZvcm1FdmVudDo6VHlwZSBtb3VzZUV2ZW50Rm9yTlNFdmVudChOU0V2ZW50KiBldmVudCkgCi17
Ci0gICAgc3dpdGNoIChbZXZlbnQgdHlwZV0pIHsKLSAgICBjYXNlIE5TU2Nyb2xsV2hlZWw6Ci0g
ICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpNb3VzZVNjcm9sbDsKLSAgICBjYXNlIE5TTGVm
dE1vdXNlRHJhZ2dlZDoKLSAgICBjYXNlIE5TUmlnaHRNb3VzZURyYWdnZWQ6Ci0gICAgY2FzZSBO
U090aGVyTW91c2VEcmFnZ2VkOgotICAgIGNhc2UgTlNNb3VzZU1vdmVkOgotICAgICAgICByZXR1
cm4gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZDsKLSAgICBjYXNlIE5TTGVmdE1vdXNlRG93bjoK
LSAgICBjYXNlIE5TUmlnaHRNb3VzZURvd246Ci0gICAgY2FzZSBOU090aGVyTW91c2VEb3duOgot
ICAgICAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6TW91c2VQcmVzc2VkOwotICAgIGNhc2UgTlNM
ZWZ0TW91c2VVcDoKLSAgICBjYXNlIE5TUmlnaHRNb3VzZVVwOgotICAgIGNhc2UgTlNPdGhlck1v
dXNlVXA6Ci0gICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpNb3VzZVJlbGVhc2VkOwotICAg
IGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkOwotICAg
IH0KLX0KLQotUGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQoTlNFdmVudCog
ZXZlbnQsIE5TVmlldyAqd2luZG93VmlldykKLSAgICA6IFBsYXRmb3JtRXZlbnQobW91c2VFdmVu
dEZvck5TRXZlbnQoZXZlbnQpLCBbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU1NoaWZ0S2V5TWFz
aywgW2V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNDb250cm9sS2V5TWFzaywgW2V2ZW50IG1vZGlm
aWVyRmxhZ3NdICYgTlNBbHRlcm5hdGVLZXlNYXNrLCBbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBO
U0NvbW1hbmRLZXlNYXNrLCBbZXZlbnQgdGltZXN0YW1wXSkKLSAgICAsIG1fcG9zaXRpb24ocG9p
bnRGb3JFdmVudChldmVudCwgd2luZG93VmlldykpCi0gICAgLCBtX2dsb2JhbFBvc2l0aW9uKGds
b2JhbFBvaW50Rm9yRXZlbnQoZXZlbnQpKQotICAgICwgbV9idXR0b24obW91c2VCdXR0b25Gb3JF
dmVudChldmVudCkpCi0gICAgLCBtX2NsaWNrQ291bnQoY2xpY2tDb3VudEZvckV2ZW50KGV2ZW50
KSkKLSAgICAsIG1fbW9kaWZpZXJGbGFncyhbZXZlbnQgbW9kaWZpZXJGbGFnc10pCi0gICAgLCBt
X2V2ZW50TnVtYmVyKFtldmVudCBldmVudE51bWJlcl0pCi17Ci19Ci0KLVBsYXRmb3JtTW91c2VF
dmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KGludCB4LCBpbnQgeSwgaW50IGdsb2JhbFgsIGludCBn
bG9iYWxZLCBNb3VzZUJ1dHRvbiBidXR0b24sIFBsYXRmb3JtRXZlbnQ6OlR5cGUgdHlwZSwKLSAg
ICAgICAgICAgICAgICAgICBpbnQgY2xpY2tDb3VudCwgYm9vbCBzaGlmdEtleSwgYm9vbCBjdHJs
S2V5LCBib29sIGFsdEtleSwgYm9vbCBtZXRhS2V5LCBkb3VibGUgdGltZXN0YW1wLAotICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3MsIGludCBldmVudE51bWJlcikKLSAg
ICA6IFBsYXRmb3JtRXZlbnQodHlwZSwgc2hpZnRLZXksIGN0cmxLZXksIGFsdEtleSwgbWV0YUtl
eSwgdGltZXN0YW1wKQotICAgICwgbV9wb3NpdGlvbihJbnRQb2ludCh4LCB5KSkKLSAgICAsIG1f
Z2xvYmFsUG9zaXRpb24oSW50UG9pbnQoZ2xvYmFsWCwgZ2xvYmFsWSkpCi0gICAgLCBtX2J1dHRv
bihidXR0b24pCi0gICAgLCBtX2NsaWNrQ291bnQoY2xpY2tDb3VudCkKLSAgICAsIG1fbW9kaWZp
ZXJGbGFncyhtb2RpZmllckZsYWdzKQotICAgICwgbV9ldmVudE51bWJlcihldmVudE51bWJlcikK
LXsKLX0KLQotfQorLy8gUkVNT1ZFIFRISVMgRklMRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKaW5kZXggMTc2NGI3OWY2OTI1
MGJkZDlmYTBkMDJmNjA4MDg0NGM1ODViNmY3NS4uYmViMzZjYTA2ZGQzOGI1MDdhMDYwYzgwNGZl
Y2YzYmUzMzBjYWEwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dl
YkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCkBAIC0xNzIsNiArMTcyLDcgQEAgZXh0ZXJuIGRvdWJs
ZSAoKndrR2V0TlNVUkxSZXNwb25zZUNhbGN1bGF0ZWRFeHBpcmF0aW9uKShOU1VSTFJlc3BvbnNl
ICpyZXNwb25zZSkKIGV4dGVybiBOU0RhdGUgKigqd2tHZXROU1VSTFJlc3BvbnNlTGFzdE1vZGlm
aWVkRGF0ZSkoTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UpOwogZXh0ZXJuIEJPT0wgKCp3a0dldE5T
VVJMUmVzcG9uc2VNdXN0UmV2YWxpZGF0ZSkoTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UpOwogZXh0
ZXJuIHZvaWQgKCp3a0dldFdoZWVsRXZlbnREZWx0YXMpKE5TRXZlbnQqLCBmbG9hdCogZGVsdGFY
LCBmbG9hdCogZGVsdGFZLCBCT09MKiBjb250aW51b3VzKTsKK2V4dGVybiBVSW50OCAoKndrR2V0
TlNFdmVudEtleUNoYXIpKE5TRXZlbnQgKik7CiBleHRlcm4gQk9PTCAoKndrSGl0VGVzdE1lZGlh
VUlQYXJ0KShpbnQgcGFydCwgaW50IHRoZW1lU3R5bGUsIENHUmVjdCBib3VuZHMsIENHUG9pbnQg
cG9pbnQpOwogZXh0ZXJuIHZvaWQgKCp3a01lYXN1cmVNZWRpYVVJUGFydCkoaW50IHBhcnQsIGlu
dCB0aGVtZVN0eWxlLCBDR1JlY3QgKmJvdW5kcywgQ0dTaXplICpuYXR1cmFsU2l6ZSk7CiBleHRl
cm4gTlNWaWV3ICooKndrQ3JlYXRlTWVkaWFVSUJhY2tncm91bmRWaWV3KSh2b2lkKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNl
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uu
bW0KaW5kZXggY2RhMDk1YmVkNDdmZmNjYTE0ZjFiMTI1ZWUzYmU0OTA1ZjE4YzZhYy4uYjRjYTU0
MDdkZDVhMDViYmNkNTgwMmRkZDdhZTExMDNmMzBjMDU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0KQEAgLTYwLDYg
KzYwLDcgQEAgTlNUaW1lSW50ZXJ2YWwgKCp3a0dldE5TVVJMUmVzcG9uc2VDYWxjdWxhdGVkRXhw
aXJhdGlvbikoTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UKIE5TRGF0ZSAqKCp3a0dldE5TVVJMUmVz
cG9uc2VMYXN0TW9kaWZpZWREYXRlKShOU1VSTFJlc3BvbnNlICpyZXNwb25zZSk7CiBCT09MICgq
d2tHZXROU1VSTFJlc3BvbnNlTXVzdFJldmFsaWRhdGUpKE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNl
KTsKIHZvaWQgKCp3a0dldFdoZWVsRXZlbnREZWx0YXMpKE5TRXZlbnQqLCBmbG9hdCogZGVsdGFY
LCBmbG9hdCogZGVsdGFZLCBCT09MKiBjb250aW51b3VzKTsKK1VJbnQ4ICgqd2tHZXROU0V2ZW50
S2V5Q2hhcikoTlNFdmVudCAqKTsKIHZvaWQgKCp3a1BvcHVwTWVudSkoTlNNZW51KiwgTlNQb2lu
dCBsb2NhdGlvbiwgZmxvYXQgd2lkdGgsIE5TVmlldyosIGludCBzZWxlY3RlZEl0ZW0sIE5TRm9u
dCopOwogdW5zaWduZWQgKCp3a1FUSW5jbHVkZU9ubHlNb2Rlcm5NZWRpYUZpbGVUeXBlcykodm9p
ZCk7CiBpbnQgKCp3a1FUTW92aWVEYXRhUmF0ZSkoUVRNb3ZpZSopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1doZWVsRXZlbnRNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvV2hlZWxFdmVudE1hYy5tbQppbmRleCA4OWM5ZmI3N2U5OTM5YTkxNDA5
MjhmNjcwNzFmZGI2MWY2NTRjZDI4Li41NzQ4ZTdjNjk0YTY2MmIzYmEwYjY0ZDg3NTgwYzc2MDQy
OWM3YmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2hlZWxFdmVu
dE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2hlZWxFdmVudE1hYy5t
bQpAQCAtMSwxMjEgKzEsMiBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiwgMjAx
MCwgMjAxMSBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8K
IAotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKLQot
I2ltcG9ydCAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCi0jaW1wb3J0ICJTY3JvbGxiYXIuaCIKLSNp
bXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKLSNpbXBvcnQgPHd0Zi9VbnVzZWRQYXJh
bS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBQbGF0Zm9ybVdoZWVsRXZlbnRQ
aGFzZSBtb21lbnR1bVBoYXNlRm9yRXZlbnQoTlNFdmVudCAqZXZlbnQpCi17Ci0gICAgdWludDMy
X3QgcGhhc2UgPSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmU7Ci0KLSNpZiAhZGVmaW5lZChC
VUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQp
Ci0gICAgaWYgKFtldmVudCBtb21lbnR1bVBoYXNlXSAmIE5TRXZlbnRQaGFzZUJlZ2FuKQotICAg
ICAgICBwaGFzZSB8PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUJlZ2FuOwotICAgIGlmIChbZXZl
bnQgbW9tZW50dW1QaGFzZV0gJiBOU0V2ZW50UGhhc2VTdGF0aW9uYXJ5KQotICAgICAgICBwaGFz
ZSB8PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZVN0YXRpb25hcnk7Ci0gICAgaWYgKFtldmVudCBt
b21lbnR1bVBoYXNlXSAmIE5TRXZlbnRQaGFzZUNoYW5nZWQpCi0gICAgICAgIHBoYXNlIHw9IFBs
YXRmb3JtV2hlZWxFdmVudFBoYXNlQ2hhbmdlZDsKLSAgICBpZiAoW2V2ZW50IG1vbWVudHVtUGhh
c2VdICYgTlNFdmVudFBoYXNlRW5kZWQpCi0gICAgICAgIHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxF
dmVudFBoYXNlRW5kZWQ7Ci0gICAgaWYgKFtldmVudCBtb21lbnR1bVBoYXNlXSAmIE5TRXZlbnRQ
aGFzZUNhbmNlbGxlZCkKLSAgICAgICAgcGhhc2UgfD0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VD
YW5jZWxsZWQ7Ci0jZWxzZQotICAgIHN3aXRjaCAod2tHZXROU0V2ZW50TW9tZW50dW1QaGFzZShl
dmVudCkpIHsKLSAgICBjYXNlIHdrRXZlbnRQaGFzZU5vbmU6Ci0gICAgICAgIHBoYXNlID0gUGxh
dGZvcm1XaGVlbEV2ZW50UGhhc2VOb25lOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIHdrRXZl
bnRQaGFzZUJlZ2FuOgotICAgICAgICBwaGFzZSA9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQmVn
YW47Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ugd2tFdmVudFBoYXNlQ2hhbmdlZDoKLSAgICAg
ICAgcGhhc2UgPSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUNoYW5nZWQ7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2Ugd2tFdmVudFBoYXNlRW5kZWQ6Ci0gICAgICAgIHBoYXNlID0gUGxhdGZvcm1X
aGVlbEV2ZW50UGhhc2VFbmRlZDsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotI2VuZGlmCi0KLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U+KHBoYXNlKTsKLX0K
LQotc3RhdGljIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIHBoYXNlRm9yRXZlbnQoTlNFdmVudCAq
ZXZlbnQpCi17Ci0jaWYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQo
QlVJTERJTkdfT05fU05PV19MRU9QQVJEKQotICAgIHVpbnQzMl90IHBoYXNlID0gUGxhdGZvcm1X
aGVlbEV2ZW50UGhhc2VOb25lOyAKLSAgICBpZiAoW2V2ZW50IHBoYXNlXSAmIE5TRXZlbnRQaGFz
ZUJlZ2FuKQotICAgICAgICBwaGFzZSB8PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUJlZ2FuOwot
ICAgIGlmIChbZXZlbnQgcGhhc2VdICYgTlNFdmVudFBoYXNlU3RhdGlvbmFyeSkKLSAgICAgICAg
cGhhc2UgfD0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VTdGF0aW9uYXJ5OwotICAgIGlmIChbZXZl
bnQgcGhhc2VdICYgTlNFdmVudFBoYXNlQ2hhbmdlZCkKLSAgICAgICAgcGhhc2UgfD0gUGxhdGZv
cm1XaGVlbEV2ZW50UGhhc2VDaGFuZ2VkOwotICAgIGlmIChbZXZlbnQgcGhhc2VdICYgTlNFdmVu
dFBoYXNlRW5kZWQpCi0gICAgICAgIHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlRW5k
ZWQ7Ci0gICAgaWYgKFtldmVudCBwaGFzZV0gJiBOU0V2ZW50UGhhc2VDYW5jZWxsZWQpCi0gICAg
ICAgIHBoYXNlIHw9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQ2FuY2VsbGVkOwotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZT4ocGhhc2UpOwotI2Vsc2UKLSAg
ICBVTlVTRURfUEFSQU0oZXZlbnQpOwotICAgIHJldHVybiBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFz
ZU5vbmU7Ci0jZW5kaWYKLX0KLQotUGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZl
bnQoTlNFdmVudCogZXZlbnQsIE5TVmlldyAqd2luZG93VmlldykKLSAgICA6IFBsYXRmb3JtRXZl
bnQoUGxhdGZvcm1FdmVudDo6V2hlZWwsIFtldmVudCBtb2RpZmllckZsYWdzXSAmIE5TU2hpZnRL
ZXlNYXNrLCBbZXZlbnQgbW9kaWZpZXJGbGFnc10gJiBOU0NvbnRyb2xLZXlNYXNrLCBbZXZlbnQg
bW9kaWZpZXJGbGFnc10gJiBOU0FsdGVybmF0ZUtleU1hc2ssIFtldmVudCBtb2RpZmllckZsYWdz
XSAmIE5TQ29tbWFuZEtleU1hc2ssIFtldmVudCB0aW1lc3RhbXBdKQotICAgICwgbV9wb3NpdGlv
bihwb2ludEZvckV2ZW50KGV2ZW50LCB3aW5kb3dWaWV3KSkKLSAgICAsIG1fZ2xvYmFsUG9zaXRp
b24oZ2xvYmFsUG9pbnRGb3JFdmVudChldmVudCkpCi0gICAgLCBtX2dyYW51bGFyaXR5KFNjcm9s
bEJ5UGl4ZWxXaGVlbEV2ZW50KQotICAgICwgbV9waGFzZShwaGFzZUZvckV2ZW50KGV2ZW50KSkK
LSAgICAsIG1fbW9tZW50dW1QaGFzZShtb21lbnR1bVBoYXNlRm9yRXZlbnQoZXZlbnQpKQotewot
ICAgIEJPT0wgY29udGludW91czsKLSAgICB3a0dldFdoZWVsRXZlbnREZWx0YXMoZXZlbnQsICZt
X2RlbHRhWCwgJm1fZGVsdGFZLCAmY29udGludW91cyk7Ci0gICAgaWYgKGNvbnRpbnVvdXMpIHsK
LSAgICAgICAgbV93aGVlbFRpY2tzWCA9IG1fZGVsdGFYIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KFNj
cm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSk7Ci0gICAgICAgIG1fd2hlZWxUaWNrc1kgPSBt
X2RlbHRhWSAvIHN0YXRpY19jYXN0PGZsb2F0PihTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVw
KCkpOwotICAgICAgICBtX2hhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMgPSB0cnVlOwotICAgIH0g
ZWxzZSB7Ci0gICAgICAgIG1fd2hlZWxUaWNrc1ggPSBtX2RlbHRhWDsKLSAgICAgICAgbV93aGVl
bFRpY2tzWSA9IG1fZGVsdGFZOwotICAgICAgICBtX2RlbHRhWCAqPSBzdGF0aWNfY2FzdDxmbG9h
dD4oU2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpKTsKLSAgICAgICAgbV9kZWx0YVkgKj0g
c3RhdGljX2Nhc3Q8ZmxvYXQ+KFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSk7Ci0gICAg
ICAgIG1faGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyA9IGZhbHNlOwotICAgIH0KLQotI2lmIEhB
VkUoSU5WRVJURURfV0hFRUxfRVZFTlRTKQotICAgIG1fZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2
aWNlID0gW2V2ZW50IGlzRGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlXTsKLSNlbHNlCi0gICAg
bV9kaXJlY3Rpb25JbnZlcnRlZEZyb21EZXZpY2UgPSBmYWxzZTsKLSNlbmRpZgotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisvLyBSRU1PVkUgVEhJUyBGSUxFCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QbGF0Zm9ybUtleWJvYXJkRXZlbnRRdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QbGF0Zm9ybUtleWJvYXJkRXZlbnRRdC5jcHAKaW5kZXgg
MzhmZThkNjdkMjY1N2Y5MWJkMmJhYmZjZTNjYTVkZmVkYmYyYjZkZi4uNjJkOGEyNDgyYjk5OGFh
ZjdlODMwNzY2NWIyNDAxMDZmMjdiYmQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcXQvUGxhdGZvcm1LZXlib2FyZEV2ZW50UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3F0L1BsYXRmb3JtS2V5Ym9hcmRFdmVudFF0LmNwcApAQCAtNTk4LDE3ICs1OTgs
MjYgQEAgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUUtleUV2
ZW50KiBldmVudCkKIHsKICAgICBjb25zdCBpbnQgc3RhdGUgPSBldmVudC0+bW9kaWZpZXJzKCk7
CiAgICAgbV90eXBlID0gKGV2ZW50LT50eXBlKCkgPT0gUUV2ZW50OjpLZXlSZWxlYXNlKSA/IFBs
YXRmb3JtRXZlbnQ6OktleVVwIDogUGxhdGZvcm1FdmVudDo6S2V5RG93bjsKKworICAgIG1fbW9k
aWZpZXJzID0gMDsKKyAgICBpZiAoKHN0YXRlICYgUXQ6OlNoaWZ0TW9kaWZpZXIpIHx8IGV2ZW50
LT5rZXkoKSA9PSBRdDo6S2V5X0JhY2t0YWIpIC8vIFNpbXVsYXRlIFNoaWZ0K1RhYiB3aXRoIEtl
eV9CYWNrdGFiCisgICAgICAgIG1fbW9kaWZpZXJzIHw9IFNoaWZ0S2V5OworICAgIGlmIChzdGF0
ZSAmIFF0OjpDb250cm9sTW9kaWZpZXIpCisgICAgICAgIG1fbW9kaWZpZXJzIHw9IEN0cmxLZXk7
CisgICAgaWYgKHN0YXRlICYgUXQ6OkFsdE1vZGlmaWVyKQorICAgICAgICBtX21vZGlmaWVycyB8
PSBBbHRLZXk7CisgICAgaWYgKHN0YXRlICYgUXQ6Ok1ldGFNb2RpZmllcikKKyAgICAgICAgbV9t
b2RpZmllcnMgfD0gTWV0YUtleTsKKwogICAgIG1fdGV4dCA9IGtleVRleHRGb3JLZXlFdmVudChl
dmVudCk7CiAgICAgbV91bm1vZGlmaWVkVGV4dCA9IG1fdGV4dDsgLy8gRklYTUU6IG5vdCBjb3Jy
ZWN0CiAgICAgbV9rZXlJZGVudGlmaWVyID0ga2V5SWRlbnRpZmllckZvclF0S2V5Q29kZShldmVu
dC0+a2V5KCkpOwogICAgIG1fYXV0b1JlcGVhdCA9IGV2ZW50LT5pc0F1dG9SZXBlYXQoKTsKLSAg
ICBtX2N0cmxLZXkgPSAoc3RhdGUgJiBRdDo6Q29udHJvbE1vZGlmaWVyKTsKLSAgICBtX2FsdEtl
eSA9IChzdGF0ZSAmIFF0OjpBbHRNb2RpZmllcik7Ci0gICAgbV9tZXRhS2V5ID0gKHN0YXRlICYg
UXQ6Ok1ldGFNb2RpZmllcik7CiAgICAgbV9pc0tleXBhZCA9IChzdGF0ZSAmIFF0OjpLZXlwYWRN
b2RpZmllcik7CisgICAgbV9pc1N5c3RlbUtleSA9IGZhbHNlOwogICAgIG1fd2luZG93c1ZpcnR1
YWxLZXlDb2RlID0gd2luZG93c0tleUNvZGVGb3JLZXlFdmVudChldmVudC0+a2V5KCksIG1faXNL
ZXlwYWQpOwogICAgIG1fbmF0aXZlVmlydHVhbEtleUNvZGUgPSBldmVudC0+bmF0aXZlVmlydHVh
bEtleSgpOwotICAgIG1fc2hpZnRLZXkgPSAoc3RhdGUgJiBRdDo6U2hpZnRNb2RpZmllcikgfHwg
ZXZlbnQtPmtleSgpID09IFF0OjpLZXlfQmFja3RhYjsgLy8gU2ltdWxhdGUgU2hpZnQrVGFiIHdp
dGggS2V5X0JhY2t0YWIKKyAgICBtX21hY0NoYXJDb2RlID0gMDsKICAgICBtX3F0RXZlbnQgPSBl
dmVudDsKICAgICBtX3RpbWVzdGFtcCA9IFdURjo6Y3VycmVudFRpbWUoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3JtTW91c2VFdmVudFF0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3JtTW91c2VFdmVudFF0LmNwcAppbmRl
eCA5MDlkMjJjYjJmOTdlYzNiMjU4MDQyMzBjZDNhMmRjZDUyZGMzZTdkLi45OTQ2YzRlNDkzMDg2
MDk0ZTZhMWVhMmM0OWU1YmViMzE4Y2VhOGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9QbGF0Zm9ybU1vdXNlRXZlbnRRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vcXQvUGxhdGZvcm1Nb3VzZUV2ZW50UXQuY3BwCkBAIC0zNSwxMiArMzUsMTcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgdm9pZCBtb3VzZUV2ZW50TW9kaWZpZXJz
RnJvbVF0S2V5Ym9hcmRNb2RpZmllcnMoUXQ6OktleWJvYXJkTW9kaWZpZXJzIGtleWJvYXJkTW9k
aWZpZXJzLCBib29sJiBhbHRLZXksIGJvb2wmIGN0cmxLZXksIGJvb2wmIG1ldGFLZXksIGJvb2wm
IHNoaWZ0S2V5KQorc3RhdGljIHZvaWQgbW91c2VFdmVudE1vZGlmaWVyc0Zyb21RdEtleWJvYXJk
TW9kaWZpZXJzKFF0OjpLZXlib2FyZE1vZGlmaWVycyBrZXlib2FyZE1vZGlmaWVycywgdW5zaWdu
ZWQmIG1vZGlmaWVycykKIHsKLSAgICBhbHRLZXkgPSBrZXlib2FyZE1vZGlmaWVycyAmIFF0OjpB
bHRNb2RpZmllcjsKLSAgICBjdHJsS2V5ID0ga2V5Ym9hcmRNb2RpZmllcnMgJiBRdDo6Q29udHJv
bE1vZGlmaWVyOwotICAgIG1ldGFLZXkgPSBrZXlib2FyZE1vZGlmaWVycyAmIFF0OjpNZXRhTW9k
aWZpZXI7Ci0gICAgc2hpZnRLZXkgPSBrZXlib2FyZE1vZGlmaWVycyAmIFF0OjpTaGlmdE1vZGlm
aWVyOworICAgIG1vZGlmaWVycyA9IDA7CisgICAgaWYgKGtleWJvYXJkTW9kaWZpZXJzICYgUXQ6
OlNoaWZ0TW9kaWZpZXIpCisgICAgICAgIG1vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpTaGlm
dEtleTsKKyAgICBpZiAoa2V5Ym9hcmRNb2RpZmllcnMgJiBRdDo6Q29udHJvbE1vZGlmaWVyKQor
ICAgICAgICBtb2RpZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6Q3RybEtleTsKKyAgICBpZiAoa2V5
Ym9hcmRNb2RpZmllcnMgJiBRdDo6QWx0TW9kaWZpZXIpCisgICAgICAgIG1vZGlmaWVycyB8PSBQ
bGF0Zm9ybUV2ZW50OjpBbHRLZXk7CisgICAgaWYgKGtleWJvYXJkTW9kaWZpZXJzICYgUXQ6Ok1l
dGFNb2RpZmllcikKKyAgICAgICAgbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1ldGFLZXk7
CiB9CiAKIHN0YXRpYyB2b2lkIG1vdXNlRXZlbnRUeXBlQW5kTW91c2VCdXR0b25Gcm9tUUV2ZW50
KGNvbnN0IFFFdmVudCogZXZlbnQsIFBsYXRmb3JtRXZlbnQ6OlR5cGUmIG1vdXNlRXZlbnRUeXBl
LCBNb3VzZUJ1dHRvbiYgbW91c2VCdXR0b24pCkBAIC0xMjEsNyArMTI2LDcgQEAgUGxhdGZvcm1N
b3VzZUV2ZW50OjpQbGF0Zm9ybU1vdXNlRXZlbnQoUUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50KiBl
dmVudCwgaW50IGNsaWMKICAgICBtX2dsb2JhbFBvc2l0aW9uID0gSW50UG9pbnQoZXZlbnQtPnNj
cmVlblBvcygpKTsKIAogICAgIG1fY2xpY2tDb3VudCA9IGNsaWNrQ291bnQ7Ci0gICAgbW91c2VF
dmVudE1vZGlmaWVyc0Zyb21RdEtleWJvYXJkTW9kaWZpZXJzKGV2ZW50LT5tb2RpZmllcnMoKSwg
bV9hbHRLZXksIG1fY3RybEtleSwgbV9tZXRhS2V5LCBtX3NoaWZ0S2V5KTsKKyAgICBtb3VzZUV2
ZW50TW9kaWZpZXJzRnJvbVF0S2V5Ym9hcmRNb2RpZmllcnMoZXZlbnQtPm1vZGlmaWVycygpLCBt
X21vZGlmaWVycyk7CiB9CiAjZW5kaWYgLy8gUVRfTk9fR1JBUEhJQ1NWSUVXCiAKQEAgLTE1MSw3
ICsxNTYsNyBAQCBQbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91c2VFdmVudChRSW5wdXRF
dmVudCogZXZlbnQsIGludCBjbGlja0NvdW50KQogICAgIH0KIAogICAgIG1fY2xpY2tDb3VudCA9
IGNsaWNrQ291bnQ7Ci0gICAgbW91c2VFdmVudE1vZGlmaWVyc0Zyb21RdEtleWJvYXJkTW9kaWZp
ZXJzKGV2ZW50LT5tb2RpZmllcnMoKSwgbV9hbHRLZXksIG1fY3RybEtleSwgbV9tZXRhS2V5LCBt
X3NoaWZ0S2V5KTsKKyAgICBtb3VzZUV2ZW50TW9kaWZpZXJzRnJvbVF0S2V5Ym9hcmRNb2RpZmll
cnMoZXZlbnQtPm1vZGlmaWVycygpLCBtX21vZGlmaWVycyk7CiB9CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3JtVG91Y2hFdmVudFF0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3JtVG91Y2hFdmVudFF0LmNwcAppbmRleCA3
YzYyZGE2MjU0NjZjNGRmNjE0ODU4NjljYTNmOGUxNGFlMzJlYTEyLi5lM2NhZThjNWExMmExNjFj
N2ZiZTE2OWJiMGIyMmQxMWJmZDI3NGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9xdC9QbGF0Zm9ybVRvdWNoRXZlbnRRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcXQvUGxhdGZvcm1Ub3VjaEV2ZW50UXQuY3BwCkBAIC00NiwxMCArNDYsMTYgQEAgUGxh
dGZvcm1Ub3VjaEV2ZW50OjpQbGF0Zm9ybVRvdWNoRXZlbnQoUVRvdWNoRXZlbnQqIGV2ZW50KQog
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcG9pbnRzLmNvdW50KCk7ICsraSkKICAgICAgICAgbV90
b3VjaFBvaW50cy5hcHBlbmQoUGxhdGZvcm1Ub3VjaFBvaW50KHBvaW50cy5hdChpKSkpOwogCi0g
ICAgbV9jdHJsS2V5ID0gKGV2ZW50LT5tb2RpZmllcnMoKSAmIFF0OjpDb250cm9sTW9kaWZpZXIp
OwotICAgIG1fYWx0S2V5ID0gKGV2ZW50LT5tb2RpZmllcnMoKSAmIFF0OjpBbHRNb2RpZmllcik7
Ci0gICAgbV9zaGlmdEtleSA9IChldmVudC0+bW9kaWZpZXJzKCkgJiBRdDo6U2hpZnRNb2RpZmll
cik7Ci0gICAgbV9tZXRhS2V5ID0gKGV2ZW50LT5tb2RpZmllcnMoKSAmIFF0OjpNZXRhTW9kaWZp
ZXIpOworICAgIG1fbW9kaWZpZXJzID0gMDsKKyAgICBpZiAoZXZlbnQtPm1vZGlmaWVycygpICAm
IFF0OjpTaGlmdE1vZGlmaWVyKQorICAgICAgICBtX21vZGlmaWVycyB8PSBTaGlmdEtleTsKKyAg
ICBpZiAoZXZlbnQtPm1vZGlmaWVycygpICAmIFF0OjpDb250cm9sTW9kaWZpZXIpCisgICAgICAg
IG1fbW9kaWZpZXJzIHw9IEN0cmxLZXk7CisgICAgaWYgKGV2ZW50LT5tb2RpZmllcnMoKSAgJiBR
dDo6QWx0TW9kaWZpZXIpCisgICAgICAgIG1fbW9kaWZpZXJzIHw9IEFsdEtleTsKKyAgICBpZiAo
ZXZlbnQtPm1vZGlmaWVycygpICAmIFF0OjpNZXRhTW9kaWZpZXIpCisgICAgICAgIG1fbW9kaWZp
ZXJzIHw9IE1ldGFLZXk7CisKICAgICBtX3RpbWVzdGFtcCA9IFdURjo6Y3VycmVudFRpbWUoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9LZXlFdmVudFdpbi5jcHAKaW5kZXgg
YWQ1ODliYmY4MjEyZDUyNTc5MDdiM2E0ZDJlYjY2ZTM0YjM3MjVkNS4uOGZkOTc3ZDJkOTcyZGJj
OWY3YzZhNDk1MWFhYTg5Yzc3MjAzYTFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL0tleUV2ZW50V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vS2V5RXZlbnRXaW4uY3BwCkBAIC0xOTQsOSArMTk0LDEwIEBAIFBsYXRmb3JtS2V5Ym9hcmRF
dmVudDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KEhXTkQsIFdQQVJBTSBjb2RlLCBMUEFSQU0ga2V5
RGF0YSwKICAgICAsIG1fdGV4dCgodHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpDaGFyKSA/IHNpbmds
ZUNoYXJhY3RlclN0cmluZyhjb2RlKSA6IFN0cmluZygpKQogICAgICwgbV91bm1vZGlmaWVkVGV4
dCgodHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpDaGFyKSA/IHNpbmdsZUNoYXJhY3RlclN0cmluZyhj
b2RlKSA6IFN0cmluZygpKQogICAgICwgbV9rZXlJZGVudGlmaWVyKCh0eXBlID09IFBsYXRmb3Jt
RXZlbnQ6OkNoYXIpID8gU3RyaW5nKCkgOiBrZXlJZGVudGlmaWVyRm9yV2luZG93c0tleUNvZGUo
Y29kZSkpCi0gICAgLCBtX2F1dG9SZXBlYXQoSElXT1JEKGtleURhdGEpICYgS0ZfUkVQRUFUKQog
ICAgICwgbV93aW5kb3dzVmlydHVhbEtleUNvZGUoKHR5cGUgPT0gUmF3S2V5RG93biB8fCB0eXBl
ID09IEtleVVwKSA/IGNvZGUgOiAwKQogICAgICwgbV9uYXRpdmVWaXJ0dWFsS2V5Q29kZShtX3dp
bmRvd3NWaXJ0dWFsS2V5Q29kZSkKKyAgICAsIG1fbWFjQ2hhckNvZGUoMCkKKyAgICAsIG1fYXV0
b1JlcGVhdChISVdPUkQoa2V5RGF0YSkgJiBLRl9SRVBFQVQpCiAgICAgLCBtX2lzS2V5cGFkKGlz
S2V5cGFkRXZlbnQoY29kZSwga2V5RGF0YSwgdHlwZSkpCiAgICAgLCBtX2lzU3lzdGVtS2V5KHN5
c3RlbUtleSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaGVl
bEV2ZW50V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaGVlbEV2ZW50V2lu
LmNwcAppbmRleCBjYjJkZGE1YzBmMGJiMjBhY2YwY2Y0YWU0NWJmYmUzMzAxYjM2MjdlLi41MjI0
Njk3MThkOWU1YjM5NDQyMTYxZGFhZjUxY2Y2MWU4MzIxOGFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vV2hlZWxFdmVudFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1doZWVsRXZlbnRXaW4uY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgUGxh
dGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQoSFdORCBoV25kLCBXUEFSQU0gd1Bh
cmFtLCBMUEFSQU0gbFBhcmFtLAogICAgICAgICBtX3doZWVsVGlja3NYID0gMDsKICAgICAgICAg
bV93aGVlbFRpY2tzWSA9IGRlbHRhOwogICAgIH0KLSAgICBpZiAoaXNNb3VzZUhXaGVlbCB8fCBt
X3NoaWZ0S2V5KSB7CisgICAgaWYgKGlzTW91c2VIV2hlZWwgfHwgc2hpZnRLZXkoKSkgewogICAg
ICAgICBtX2RlbHRhWCA9IGRlbHRhICogc3RhdGljX2Nhc3Q8ZmxvYXQ+KGhvcml6b250YWxTY3Jv
bGxDaGFycygpKSAqIGNTY3JvbGxiYXJQaXhlbHNQZXJMaW5lOwogICAgICAgICBtX2RlbHRhWSA9
IDA7CiAgICAgICAgIG1fZ3JhbnVsYXJpdHkgPSBTY3JvbGxCeVBpeGVsV2hlZWxFdmVudDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJz
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJz
aW9uLmNwcAppbmRleCBiOTNjZGZkMTE2MWViNWIxZGJhOTUwY2Y4ZmFmYzg5MTg1Yjg3YzE5Li4z
OGQ4YTU1MDI0Yzg5ZGYzZDY2NThmMWJkNGZlODgzMTNmN2FhMWJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uY3BwCkBA
IC02NCwxMCArNjQsMTcgQEAgUGxhdGZvcm1Nb3VzZUV2ZW50QnVpbGRlcjo6UGxhdGZvcm1Nb3Vz
ZUV2ZW50QnVpbGRlcihXaWRnZXQqIHdpZGdldCwgY29uc3QgV2ViTW8KICAgICBtX21vdmVtZW50
RGVsdGEgPSBJbnRQb2ludChlLm1vdmVtZW50WCwgZS5tb3ZlbWVudFkpOwogI2VuZGlmCiAgICAg
bV9idXR0b24gPSBzdGF0aWNfY2FzdDxNb3VzZUJ1dHRvbj4oZS5idXR0b24pOwotICAgIG1fc2hp
ZnRLZXkgPSAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpTaGlmdEtleSk7Ci0gICAgbV9j
dHJsS2V5ID0gKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6Q29udHJvbEtleSk7Ci0gICAg
bV9hbHRLZXkgPSAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpBbHRLZXkpOwotICAgIG1f
bWV0YUtleSA9IChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6Ok1ldGFLZXkpOworCisgICAg
bV9tb2RpZmllcnMgPSAwOworICAgIGlmIChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6OlNo
aWZ0S2V5KQorICAgICAgICBtX21vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpTaGlmdEtleTsK
KyAgICBpZiAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpDb250cm9sS2V5KQorICAgICAg
ICBtX21vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpDdHJsS2V5OworICAgIGlmIChlLm1vZGlm
aWVycyAmIFdlYklucHV0RXZlbnQ6OkFsdEtleSkKKyAgICAgICAgbV9tb2RpZmllcnMgfD0gUGxh
dGZvcm1FdmVudDo6QWx0S2V5OworICAgIGlmIChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6
Ok1ldGFLZXkpCisgICAgICAgIG1fbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1ldGFLZXk7
CisKICAgICBtX21vZGlmaWVyRmxhZ3MgPSBlLm1vZGlmaWVyczsKICAgICBtX3RpbWVzdGFtcCA9
IGUudGltZVN0YW1wU2Vjb25kczsKICAgICBtX2NsaWNrQ291bnQgPSBlLmNsaWNrQ291bnQ7CkBA
IC0xMDUsMTAgKzExMiwxNyBAQCBQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybVdo
ZWVsRXZlbnRCdWlsZGVyKFdpZGdldCogd2lkZ2V0LCBjb25zdCBXZWJNbwogICAgICAgICBTY3Jv
bGxCeVBhZ2VXaGVlbEV2ZW50IDogU2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQ7CiAgICAgCiAgICAg
bV90eXBlID0gUGxhdGZvcm1FdmVudDo6V2hlZWw7Ci0gICAgbV9zaGlmdEtleSA9IChlLm1vZGlm
aWVycyAmIFdlYklucHV0RXZlbnQ6OlNoaWZ0S2V5KTsKLSAgICBtX2N0cmxLZXkgPSAoZS5tb2Rp
ZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpDb250cm9sS2V5KTsKLSAgICBtX2FsdEtleSA9IChlLm1v
ZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6OkFsdEtleSk7Ci0gICAgbV9tZXRhS2V5ID0gKGUubW9k
aWZpZXJzICYgV2ViSW5wdXRFdmVudDo6TWV0YUtleSk7CisKKyAgICBtX21vZGlmaWVycyA9IDA7
CisgICAgaWYgKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6U2hpZnRLZXkpCisgICAgICAg
IG1fbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6OlNoaWZ0S2V5OworICAgIGlmIChlLm1vZGlm
aWVycyAmIFdlYklucHV0RXZlbnQ6OkNvbnRyb2xLZXkpCisgICAgICAgIG1fbW9kaWZpZXJzIHw9
IFBsYXRmb3JtRXZlbnQ6OkN0cmxLZXk7CisgICAgaWYgKGUubW9kaWZpZXJzICYgV2ViSW5wdXRF
dmVudDo6QWx0S2V5KQorICAgICAgICBtX21vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpBbHRL
ZXk7CisgICAgaWYgKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6TWV0YUtleSkKKyAgICAg
ICAgbV9tb2RpZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6TWV0YUtleTsKKwogI2lmIE9TKERBUldJ
TikKICAgICBtX2hhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMgPSBlLmhhc1ByZWNpc2VTY3JvbGxp
bmdEZWx0YXM7CiAgICAgbV9waGFzZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlBsYXRmb3JtV2hl
ZWxFdmVudFBoYXNlPihlLnBoYXNlKTsKQEAgLTE0MywxMCArMTU3LDE2IEBAIFBsYXRmb3JtR2Vz
dHVyZUV2ZW50QnVpbGRlcjo6UGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyKFdpZGdldCogd2lk
Z2V0LCBjb25zdCBXCiAgICAgbV9kZWx0YVggPSBlLmRlbHRhWDsKICAgICBtX2RlbHRhWSA9IGUu
ZGVsdGFZOwogICAgIG1fdGltZXN0YW1wID0gZS50aW1lU3RhbXBTZWNvbmRzOwotICAgIG1fc2hp
ZnRLZXkgPSAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpTaGlmdEtleSk7Ci0gICAgbV9j
dHJsS2V5ID0gKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6Q29udHJvbEtleSk7Ci0gICAg
bV9hbHRLZXkgPSAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpBbHRLZXkpOwotICAgIG1f
bWV0YUtleSA9IChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6Ok1ldGFLZXkpOworCisgICAg
bV9tb2RpZmllcnMgPSAwOworICAgIGlmIChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6OlNo
aWZ0S2V5KQorICAgICAgICBtX21vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpTaGlmdEtleTsK
KyAgICBpZiAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpDb250cm9sS2V5KQorICAgICAg
ICBtX21vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpDdHJsS2V5OworICAgIGlmIChlLm1vZGlm
aWVycyAmIFdlYklucHV0RXZlbnQ6OkFsdEtleSkKKyAgICAgICAgbV9tb2RpZmllcnMgfD0gUGxh
dGZvcm1FdmVudDo6QWx0S2V5OworICAgIGlmIChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6
Ok1ldGFLZXkpCisgICAgICAgIG1fbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1ldGFLZXk7
CiB9CiAjZW5kaWYKIApAQCAtMTc5LDExICsxOTksMTcgQEAgUGxhdGZvcm1LZXlib2FyZEV2ZW50
QnVpbGRlcjo6UGxhdGZvcm1LZXlib2FyZEV2ZW50QnVpbGRlcihjb25zdCBXZWJLZXlib2FyZEV2
ZW4KICAgICBtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSA9IGUud2luZG93c0tleUNvZGU7CiAgICAg
bV9uYXRpdmVWaXJ0dWFsS2V5Q29kZSA9IGUubmF0aXZlS2V5Q29kZTsKICAgICBtX2lzS2V5cGFk
ID0gKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6SXNLZXlQYWQpOwotICAgIG1fc2hpZnRL
ZXkgPSAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpTaGlmdEtleSk7Ci0gICAgbV9jdHJs
S2V5ID0gKGUubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6Q29udHJvbEtleSk7Ci0gICAgbV9h
bHRLZXkgPSAoZS5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpBbHRLZXkpOwotICAgIG1fbWV0
YUtleSA9IChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6Ok1ldGFLZXkpOwogICAgIG1faXNT
eXN0ZW1LZXkgPSBlLmlzU3lzdGVtS2V5OworCisgICAgbV9tb2RpZmllcnMgPSAwOworICAgIGlm
IChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6OlNoaWZ0S2V5KQorICAgICAgICBtX21vZGlm
aWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpTaGlmdEtleTsKKyAgICBpZiAoZS5tb2RpZmllcnMgJiBX
ZWJJbnB1dEV2ZW50OjpDb250cm9sS2V5KQorICAgICAgICBtX21vZGlmaWVycyB8PSBQbGF0Zm9y
bUV2ZW50OjpDdHJsS2V5OworICAgIGlmIChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6OkFs
dEtleSkKKyAgICAgICAgbV9tb2RpZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6QWx0S2V5OworICAg
IGlmIChlLm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6Ok1ldGFLZXkpCisgICAgICAgIG1fbW9k
aWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1ldGFLZXk7CiB9CiAKIHZvaWQgUGxhdGZvcm1LZXli
b2FyZEV2ZW50QnVpbGRlcjo6c2V0S2V5VHlwZShUeXBlIHR5cGUpCkBAIC0yNjksMTAgKzI5NSwx
NyBAQCBQbGF0Zm9ybVRvdWNoUG9pbnRCdWlsZGVyOjpQbGF0Zm9ybVRvdWNoUG9pbnRCdWlsZGVy
KFdpZGdldCogd2lkZ2V0LCBjb25zdCBXZWJUbwogUGxhdGZvcm1Ub3VjaEV2ZW50QnVpbGRlcjo6
UGxhdGZvcm1Ub3VjaEV2ZW50QnVpbGRlcihXaWRnZXQqIHdpZGdldCwgY29uc3QgV2ViVG91Y2hF
dmVudCYgZXZlbnQpCiB7CiAgICAgbV90eXBlID0gdG9QbGF0Zm9ybVRvdWNoRXZlbnRUeXBlKGV2
ZW50LnR5cGUpOwotICAgIG1fY3RybEtleSA9IGV2ZW50Lm1vZGlmaWVycyAmIFdlYklucHV0RXZl
bnQ6OkNvbnRyb2xLZXk7Ci0gICAgbV9hbHRLZXkgPSBldmVudC5tb2RpZmllcnMgJiBXZWJJbnB1
dEV2ZW50OjpBbHRLZXk7Ci0gICAgbV9zaGlmdEtleSA9IGV2ZW50Lm1vZGlmaWVycyAmIFdlYklu
cHV0RXZlbnQ6OlNoaWZ0S2V5OwotICAgIG1fbWV0YUtleSA9IGV2ZW50Lm1vZGlmaWVycyAmIFdl
YklucHV0RXZlbnQ6Ok1ldGFLZXk7CisKKyAgICBtX21vZGlmaWVycyA9IDA7CisgICAgaWYgKGV2
ZW50Lm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6OlNoaWZ0S2V5KQorICAgICAgICBtX21vZGlm
aWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpTaGlmdEtleTsKKyAgICBpZiAoZXZlbnQubW9kaWZpZXJz
ICYgV2ViSW5wdXRFdmVudDo6Q29udHJvbEtleSkKKyAgICAgICAgbV9tb2RpZmllcnMgfD0gUGxh
dGZvcm1FdmVudDo6Q3RybEtleTsKKyAgICBpZiAoZXZlbnQubW9kaWZpZXJzICYgV2ViSW5wdXRF
dmVudDo6QWx0S2V5KQorICAgICAgICBtX21vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpBbHRL
ZXk7CisgICAgaWYgKGV2ZW50Lm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6Ok1ldGFLZXkpCisg
ICAgICAgIG1fbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6Ok1ldGFLZXk7CisKICAgICBtX3Rp
bWVzdGFtcCA9IGV2ZW50LnRpbWVTdGFtcFNlY29uZHM7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgZXZlbnQudG91Y2hlc0xlbmd0aDsgKytpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCmluZGV4IDEzMTAx
MjRkMjcyOWZiNjljNzVmNjNiMGY2Y2I1MDM0MzBmZGIxYTMuLmU5M2QwYzYxZWRmY2QzZThjOGI1
NmJhY2MyZDA5OTMwZjAyMTEyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KQEAgLTY3LDYgKzY3LDcgQEAgdm9p
ZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAgIElOSVQoU2lnbmVkUHVibGlj
S2V5QW5kQ2hhbGxlbmdlU3RyaW5nKTsKICAgICBJTklUKEdldFByZWZlcnJlZEV4dGVuc2lvbkZv
ck1JTUVUeXBlKTsKICAgICBJTklUKEdldFdoZWVsRXZlbnREZWx0YXMpOworICAgIElOSVQoR2V0
TlNFdmVudEtleUNoYXIpOwogICAgIElOSVQoSGl0VGVzdE1lZGlhVUlQYXJ0KTsKICAgICBJTklU
KEluaXRpYWxpemVNYXhpbXVtSFRUUENvbm5lY3Rpb25Db3VudFBlckhvc3QpOwogICAgIElOSVQo
TWVhc3VyZU1lZGlhVUlQYXJ0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmlu
ZGV4IDYxYjhlODg2ZTE0NjgzNmViZDQ3MzQ4MGRhOWNiOTQ5MzIwN2Y3NTAuLmE1YzM0MmNhM2E0
NjcxNmU5M2VhZTQzZWE1YTBiNjdlNzYyY2FkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJGcmFtZS5tbQpAQCAtNzYsNiArNzYsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9IaXRUZXN0UmVz
dWx0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xlZ2FjeVdlYkFyY2hpdmUuaD4KICNpbXBvcnQgPFdl
YkNvcmUvUGFnZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUV2ZW50RmFjdG9yeS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9QbHVnaW5EYXRhLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1ByaW50Q29u
dGV4dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJMYXllci5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggZDFlZWI2OWFiMmUyZWUxMGEyMDYzY2U4MzUw
Y2Y3OTQ0Mzg4YWQyNi4uYzRiYzJhMmUwMmQ1YmE4ODQyMjc0ZjhiNGM1M2YyMTk0M2FiMDU0NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0xMDQsNyArMTA0
LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvTGVnYWN5V2ViQXJjaGl2ZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KLSNpbXBv
cnQgPFdlYkNvcmUvUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1Bs
YXRmb3JtRXZlbnRGYWN0b3J5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JhbmdlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1JlbmRlcldpZGdldC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+
CkBAIC0zMTA4LDcgKzMxMDgsNyBAQCBzdGF0aWMgdm9pZCBzZXRNZW51VGFyZ2V0cyhOU01lbnUq
IG1lbnUpCiAgICAgX3ByaXZhdGUtPmhhbmRsaW5nTW91c2VEb3duRXZlbnQgPSBZRVM7CiAgICAg
cGFnZS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCktPmNsZWFyQ29udGV4dE1lbnUoKTsKICAgICBj
b3JlRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5tb3VzZURvd24oZXZlbnQpOwotICAgIEJPT0wgaGFu
ZGxlZEV2ZW50ID0gY29yZUZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2VuZENvbnRleHRNZW51RXZl
bnQoUGxhdGZvcm1Nb3VzZUV2ZW50KGV2ZW50LCBwYWdlLT5jaHJvbWUoKS0+cGxhdGZvcm1QYWdl
Q2xpZW50KCkpKTsKKyAgICBCT09MIGhhbmRsZWRFdmVudCA9IGNvcmVGcmFtZS0+ZXZlbnRIYW5k
bGVyKCktPnNlbmRDb250ZXh0TWVudUV2ZW50KFBsYXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQ
bGF0Zm9ybU1vdXNlRXZlbnQoZXZlbnQsIHBhZ2UtPmNocm9tZSgpLT5wbGF0Zm9ybVBhZ2VDbGll
bnQoKSkpOwogICAgIF9wcml2YXRlLT5oYW5kbGluZ01vdXNlRG93bkV2ZW50ID0gTk87CiAKICAg
ICBpZiAoIWhhbmRsZWRFdmVudCkKQEAgLTM0NzMsNyArMzQ3Myw3IEBAIHN0YXRpYyB2b2lkIHNl
dE1lbnVUYXJnZXRzKE5TTWVudSogbWVudSkKICAgICAgICAgICAgIFtoaXRIVE1MVmlldyBfc2V0
TW91c2VEb3duRXZlbnQ6ZXZlbnRdOwogICAgICAgICAgICAgaWYgKFtoaXRIVE1MVmlldyBfaXNT
ZWxlY3Rpb25FdmVudDpldmVudF0pIHsKICAgICAgICAgICAgICAgICBpZiAoUGFnZSogcGFnZSA9
IGNvcmVGcmFtZS0+cGFnZSgpKQotICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBjb3JlRnJh
bWUtPmV2ZW50SGFuZGxlcigpLT5ldmVudE1heVN0YXJ0RHJhZyhQbGF0Zm9ybU1vdXNlRXZlbnQo
ZXZlbnQsIHBhZ2UtPmNocm9tZSgpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKSkpOworICAgICAgICAg
ICAgICAgICAgICByZXN1bHQgPSBjb3JlRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5ldmVudE1heVN0
YXJ0RHJhZyhQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1Nb3VzZUV2ZW50KGV2
ZW50LCBwYWdlLT5jaHJvbWUoKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkpKTsKICAgICAgICAgICAg
IH0gZWxzZSBpZiAoW2hpdEhUTUxWaWV3IF9pc1Njcm9sbEJhckV2ZW50OmV2ZW50XSkKICAgICAg
ICAgICAgICAgICByZXN1bHQgPSB0cnVlOwogICAgICAgICAgICAgW2hpdEhUTUxWaWV3IF9zZXRN
b3VzZURvd25FdmVudDpuaWxdOwpAQCAtMzQ5OCw3ICszNDk4LDcgQEAgc3RhdGljIHZvaWQgc2V0
TWVudVRhcmdldHMoTlNNZW51KiBtZW51KQogICAgICAgICAgICAgaWYgKEZyYW1lKiBjb3JlRnJh
bWUgPSBjb3JlKFtoaXRIVE1MVmlldyBfZnJhbWVdKSkgewogICAgICAgICAgICAgICAgIFtoaXRI
VE1MVmlldyBfc2V0TW91c2VEb3duRXZlbnQ6ZXZlbnRdOwogICAgICAgICAgICAgICAgIGlmIChQ
YWdlKiBwYWdlID0gY29yZUZyYW1lLT5wYWdlKCkpCi0gICAgICAgICAgICAgICAgICAgIHJlc3Vs
dCA9IGNvcmVGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmV2ZW50TWF5U3RhcnREcmFnKFBsYXRmb3Jt
TW91c2VFdmVudChldmVudCwgcGFnZS0+Y2hyb21lKCktPnBsYXRmb3JtUGFnZUNsaWVudCgpKSk7
CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNvcmVGcmFtZS0+ZXZlbnRIYW5kbGVyKCkt
PmV2ZW50TWF5U3RhcnREcmFnKFBsYXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQbGF0Zm9ybU1v
dXNlRXZlbnQoZXZlbnQsIHBhZ2UtPmNocm9tZSgpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKSkpOwog
ICAgICAgICAgICAgICAgIFtoaXRIVE1MVmlldyBfc2V0TW91c2VEb3duRXZlbnQ6bmlsXTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMzczOCwxMiArMzczOCwxMiBAQCBzdGF0aWMgUGFz
c1JlZlB0cjxLZXlib2FyZEV2ZW50PiBjdXJyZW50S2V5Ym9hcmRFdmVudChGcmFtZSogY29yZUZy
YW1lKQogCiAgICAgc3dpdGNoIChbZXZlbnQgdHlwZV0pIHsKICAgICBjYXNlIE5TS2V5RG93bjog
ewotICAgICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQgcGxhdGZvcm1FdmVudChldmVudCk7Cisg
ICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBwbGF0Zm9ybUV2ZW50ID0gUGxhdGZvcm1FdmVu
dEZhY3Rvcnk6OmNyZWF0ZVBsYXRmb3JtS2V5Ym9hcmRFdmVudChldmVudCk7CiAgICAgICAgIHBs
YXRmb3JtRXZlbnQuZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFBsYXRmb3JtRXZlbnQ6OlJhd0tl
eURvd24pOwogICAgICAgICByZXR1cm4gS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKHBsYXRmb3JtRXZl
bnQsIGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSk7CiAgICAgfQogICAgIGNh
c2UgTlNLZXlVcDoKLSAgICAgICAgcmV0dXJuIEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShldmVudCwg
Y29yZUZyYW1lLT5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpKTsKKyAgICAgICAgcmV0dXJuIEtl
eWJvYXJkRXZlbnQ6OmNyZWF0ZShQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1L
ZXlib2FyZEV2ZW50KGV2ZW50KSwgY29yZUZyYW1lLT5kb2N1bWVudCgpLT5kZWZhdWx0Vmlldygp
KTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC00MTQxLDcgKzQx
NDEsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxLZXlib2FyZEV2ZW50PiBjdXJyZW50S2V5Ym9hcmRF
dmVudChGcmFtZSogY29yZUZyYW1lKQogCiAgICAgLy8gRG9uJ3QgbWFrZSBhbiBldmVudCBmcm9t
IHRoZSBudW0gbG9jayBhbmQgZnVuY3Rpb24ga2V5cy4KICAgICBpZiAoY29yZUZyYW1lICYmIGtl
eUNvZGUgIT0gMCAmJiBrZXlDb2RlICE9IDEwICYmIGtleUNvZGUgIT0gNjMpIHsKLSAgICAgICAg
Y29yZUZyYW1lLT5ldmVudEhhbmRsZXIoKS0+a2V5RXZlbnQoUGxhdGZvcm1LZXlib2FyZEV2ZW50
KGV2ZW50KSk7CisgICAgICAgIGNvcmVGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmtleUV2ZW50KFBs
YXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQbGF0Zm9ybUtleWJvYXJkRXZlbnQoZXZlbnQpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlBERlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlBERlZpZXcubW0KaW5kZXggOGFlMGYzY2ZkNTc4MTkxNWU5ZDE0YWQ1NjhmYzk5NzYyNDFh
Y2Y0My4uYzVmZTkyMTBlYzRiMTE0ZDU2Nzk3ZDMxYzYzMzlkNWFjZDU0MDM4NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbQpAQCAtNTgsNyArNTgsNyBAQAogI2ltcG9y
dCA8V2ViQ29yZS9LVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KICNp
bXBvcnQgPFdlYkNvcmUvTW91c2VFdmVudC5oPgotI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUtl
eWJvYXJkRXZlbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1FdmVudEZhY3RvcnkuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1dlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oPgogI2ltcG9ydCA8d3RmL0Fzc2Vy
dGlvbnMuaD4KQEAgLTk1OSw3ICs5NTksNyBAQCBzdGF0aWMgQk9PTCBpc0ZyYW1lSW5SYW5nZShX
ZWJGcmFtZSAqZnJhbWUsIERPTVJhbmdlICpyYW5nZSkKICAgICAgICAgICAgIGJ1dHRvbiA9IFtu
c0V2ZW50IGJ1dHRvbk51bWJlcl07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBO
U0tleURvd246IHsKLSAgICAgICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBwZShuc0V2ZW50
KTsKKyAgICAgICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBwZSA9IFBsYXRmb3JtRXZlbnRG
YWN0b3J5OjpjcmVhdGVQbGF0Zm9ybUtleWJvYXJkRXZlbnQobnNFdmVudCk7CiAgICAgICAgICAg
ICBwZS5kaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQoUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bik7
CiAgICAgICAgICAgICBldmVudCA9IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
a2V5ZG93bkV2ZW50LCB0cnVlLCB0cnVlLCAwLAogICAgICAgICAgICAgICAgIHBlLmtleUlkZW50
aWZpZXIoKSwgcGUud2luZG93c1ZpcnR1YWxLZXlDb2RlKCksCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KaW5kZXggZDdjOWFiNGU1ZGJhMzYwMGQ5MDIzZTYxNmE2YjFkNDQwM2ZjMjk2
Yi4uNmQwMTc3NzA3MTMzMDZkNzg4NzU1YzZmMDdhMTMxZmQzNDE2ODE0NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTQ0LDcgKzE0NCw3IEBACiAjaW1wb3J0IDxXZWJD
b3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZUNhY2hlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1BhZ2VHcm91cC5oPgotI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybU1vdXNlRXZlbnQuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1FdmVudEZhY3RvcnkuaD4KICNpbXBvcnQgPFdlYkNv
cmUvUHJvZ3Jlc3NUcmFja2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlclZpZXcuaD4KICNp
bXBvcnQgPFdlYkNvcmUvUmVuZGVyV2lkZ2V0Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJFdmVudENvbnZlcnNpb24uY3BwCmluZGV4IGE1MzE1NzNhMzA2MTM0ZTYyNTMxZjU1YjBhMTFl
NTUwZTIzNTVhOGEuLmEyYjQxZjIzYjAwYzgzOGYyYmNkODA0Nzg0NWM0ZThkOGJmY2U4ODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwCkBAIC00OSwx
MCArNDksMTYgQEAgcHVibGljOgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIH0KIAotICAgICAgICBtX3NoaWZ0S2V5ID0gd2ViRXZlbnQuc2hpZnRLZXkoKTsKLSAg
ICAgICAgbV9jdHJsS2V5ID0gd2ViRXZlbnQuY29udHJvbEtleSgpOwotICAgICAgICBtX2FsdEtl
eSA9IHdlYkV2ZW50LmFsdEtleSgpOwotICAgICAgICBtX21ldGFLZXkgPSB3ZWJFdmVudC5tZXRh
S2V5KCk7CisgICAgICAgIG1fbW9kaWZpZXJzID0gMDsKKyAgICAgICAgaWYgKHdlYkV2ZW50LnNo
aWZ0S2V5KCkpCisgICAgICAgICAgICBtX21vZGlmaWVycyB8PSBTaGlmdEtleTsKKyAgICAgICAg
aWYgKHdlYkV2ZW50LmNvbnRyb2xLZXkoKSkKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IEN0
cmxLZXk7CisgICAgICAgIGlmICh3ZWJFdmVudC5hbHRLZXkoKSkKKyAgICAgICAgICAgIG1fbW9k
aWZpZXJzIHw9IEFsdEtleTsKKyAgICAgICAgaWYgKHdlYkV2ZW50LmFsdEtleSgpKQorICAgICAg
ICAgICAgbV9tb2RpZmllcnMgfD0gTWV0YUtleTsKKwogICAgICAgICBtX3RpbWVzdGFtcCA9IHdl
YkV2ZW50LnRpbWVzdGFtcCgpOwogCiAgICAgICAgIC8vIFBsYXRmb3JtTW91c2VFdmVudApAQCAt
NzgsMTMgKzg0LDEzIEBAIHB1YmxpYzoKICAgICAgICAgbV9jbGlja0NvdW50ID0gd2ViRXZlbnQu
Y2xpY2tDb3VudCgpOwogCiAgICAgICAgIG1fbW9kaWZpZXJGbGFncyA9IDA7Ci0gICAgICAgIGlm
IChtX3NoaWZ0S2V5KQorICAgICAgICBpZiAod2ViRXZlbnQuc2hpZnRLZXkoKSkKICAgICAgICAg
ICAgIG1fbW9kaWZpZXJGbGFncyB8PSBXZWJFdmVudDo6U2hpZnRLZXk7Ci0gICAgICAgIGlmICht
X2N0cmxLZXkpCisgICAgICAgIGlmICh3ZWJFdmVudC5jb250cm9sS2V5KCkpCiAgICAgICAgICAg
ICBtX21vZGlmaWVyRmxhZ3MgfD0gV2ViRXZlbnQ6OkNvbnRyb2xLZXk7Ci0gICAgICAgIGlmICht
X2FsdEtleSkKKyAgICAgICAgaWYgKHdlYkV2ZW50LmFsdEtleSgpKQogICAgICAgICAgICAgbV9t
b2RpZmllckZsYWdzIHw9IFdlYkV2ZW50OjpBbHRLZXk7Ci0gICAgICAgIGlmIChtX21ldGFLZXkp
CisgICAgICAgIGlmICh3ZWJFdmVudC5hbHRLZXkoKSkKICAgICAgICAgICAgIG1fbW9kaWZpZXJG
bGFncyB8PSBXZWJFdmVudDo6TWV0YUtleTsKIAogI2lmIFBMQVRGT1JNKFdJTikKQEAgLTEwNCwx
MCArMTEwLDE3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIC8vIFBsYXRmb3JtRXZlbnQKICAg
ICAgICAgbV90eXBlID0gUGxhdGZvcm1FdmVudDo6V2hlZWw7Ci0gICAgICAgIG1fc2hpZnRLZXkg
PSB3ZWJFdmVudC5zaGlmdEtleSgpOwotICAgICAgICBtX2N0cmxLZXkgPSB3ZWJFdmVudC5jb250
cm9sS2V5KCk7Ci0gICAgICAgIG1fYWx0S2V5ID0gd2ViRXZlbnQuYWx0S2V5KCk7Ci0gICAgICAg
IG1fbWV0YUtleSA9IHdlYkV2ZW50Lm1ldGFLZXkoKTsKKworICAgICAgICBtX21vZGlmaWVycyA9
IDA7CisgICAgICAgIGlmICh3ZWJFdmVudC5zaGlmdEtleSgpKQorICAgICAgICAgICAgbV9tb2Rp
ZmllcnMgfD0gU2hpZnRLZXk7CisgICAgICAgIGlmICh3ZWJFdmVudC5jb250cm9sS2V5KCkpCisg
ICAgICAgICAgICBtX21vZGlmaWVycyB8PSBDdHJsS2V5OworICAgICAgICBpZiAod2ViRXZlbnQu
YWx0S2V5KCkpCisgICAgICAgICAgICBtX21vZGlmaWVycyB8PSBBbHRLZXk7CisgICAgICAgIGlm
ICh3ZWJFdmVudC5hbHRLZXkoKSkKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1ldGFLZXk7
CisKICAgICAgICAgbV90aW1lc3RhbXAgPSB3ZWJFdmVudC50aW1lc3RhbXAoKTsKIAogICAgICAg
ICAvLyBQbGF0Zm9ybVdoZWVsRXZlbnQKQEAgLTE1NCwxMCArMTY3LDE2IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAKLSAgICAgICAgbV9z
aGlmdEtleSA9IHdlYkV2ZW50LnNoaWZ0S2V5KCk7Ci0gICAgICAgIG1fY3RybEtleSA9IHdlYkV2
ZW50LmNvbnRyb2xLZXkoKTsKLSAgICAgICAgbV9hbHRLZXkgPSB3ZWJFdmVudC5hbHRLZXkoKTsK
LSAgICAgICAgbV9tZXRhS2V5ID0gd2ViRXZlbnQubWV0YUtleSgpOworICAgICAgICBtX21vZGlm
aWVycyA9IDA7CisgICAgICAgIGlmICh3ZWJFdmVudC5zaGlmdEtleSgpKQorICAgICAgICAgICAg
bV9tb2RpZmllcnMgfD0gU2hpZnRLZXk7CisgICAgICAgIGlmICh3ZWJFdmVudC5jb250cm9sS2V5
KCkpCisgICAgICAgICAgICBtX21vZGlmaWVycyB8PSBDdHJsS2V5OworICAgICAgICBpZiAod2Vi
RXZlbnQuYWx0S2V5KCkpCisgICAgICAgICAgICBtX21vZGlmaWVycyB8PSBBbHRLZXk7CisgICAg
ICAgIGlmICh3ZWJFdmVudC5hbHRLZXkoKSkKKyAgICAgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1l
dGFLZXk7CisKICAgICAgICAgbV90aW1lc3RhbXAgPSB3ZWJFdmVudC50aW1lc3RhbXAoKTsKIAog
ICAgICAgICAvLyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQKQEAgLTE2NiwxNCArMTg1LDEwIEBAIHB1
YmxpYzoKICAgICAgICAgbV9rZXlJZGVudGlmaWVyID0gd2ViRXZlbnQua2V5SWRlbnRpZmllcigp
OwogICAgICAgICBtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSA9IHdlYkV2ZW50LndpbmRvd3NWaXJ0
dWFsS2V5Q29kZSgpOwogICAgICAgICBtX25hdGl2ZVZpcnR1YWxLZXlDb2RlID0gd2ViRXZlbnQu
bmF0aXZlVmlydHVhbEtleUNvZGUoKTsKKyAgICAgICAgbV9tYWNDaGFyQ29kZSA9IHdlYkV2ZW50
Lm1hY0NoYXJDb2RlKCk7CiAgICAgICAgIG1fYXV0b1JlcGVhdCA9IHdlYkV2ZW50LmlzQXV0b1Jl
cGVhdCgpOwogICAgICAgICBtX2lzS2V5cGFkID0gd2ViRXZlbnQuaXNLZXlwYWQoKTsKLSAgICAg
ICAgCi0jaWYgUExBVEZPUk0oV0lOKQotICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG1ha2Ug
bV9pc1N5c3RlbUtleSBhdmFpbGFibGUgKGFuZCBmYWxzZSkgb24gYWxsIHBsYXRmb3JtcwotICAg
ICAgICAvLyB0byBhdm9pZCB0aGlzICNkZWZpbmUuIAogICAgICAgICBtX2lzU3lzdGVtS2V5ID0g
d2ViRXZlbnQuaXNTeXN0ZW1LZXkoKTsKLSNlbmRpZgogICAgIH0KIH07CiAKQEAgLTIwMiwxMCAr
MjE3LDE2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICB9CiAKLSAgICAgICAgbV9zaGlmdEtleSA9IHdlYkV2ZW50LnNoaWZ0S2V5KCk7Ci0gICAg
ICAgIG1fY3RybEtleSA9IHdlYkV2ZW50LmNvbnRyb2xLZXkoKTsKLSAgICAgICAgbV9hbHRLZXkg
PSB3ZWJFdmVudC5hbHRLZXkoKTsKLSAgICAgICAgbV9tZXRhS2V5ID0gd2ViRXZlbnQubWV0YUtl
eSgpOworICAgICAgICBtX21vZGlmaWVycyA9IDA7CisgICAgICAgIGlmICh3ZWJFdmVudC5zaGlm
dEtleSgpKQorICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gU2hpZnRLZXk7CisgICAgICAgIGlm
ICh3ZWJFdmVudC5jb250cm9sS2V5KCkpCisgICAgICAgICAgICBtX21vZGlmaWVycyB8PSBDdHJs
S2V5OworICAgICAgICBpZiAod2ViRXZlbnQuYWx0S2V5KCkpCisgICAgICAgICAgICBtX21vZGlm
aWVycyB8PSBBbHRLZXk7CisgICAgICAgIGlmICh3ZWJFdmVudC5hbHRLZXkoKSkKKyAgICAgICAg
ICAgIG1fbW9kaWZpZXJzIHw9IE1ldGFLZXk7CisKICAgICAgICAgbV90aW1lc3RhbXAgPSB3ZWJF
dmVudC50aW1lc3RhbXAoKTsKIAogICAgICAgICAvLyBQbGF0Zm9ybUdlc3R1cmVFdmVudApAQCAt
Mjc0LDEwICsyOTUsMTYgQEAgcHVibGljOgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgIH0KIAotICAgICAgICBtX2N0cmxLZXkgPSB3ZWJFdmVudC5jb250cm9sS2V5
KCk7Ci0gICAgICAgIG1fYWx0S2V5ID0gd2ViRXZlbnQuYWx0S2V5KCk7Ci0gICAgICAgIG1fc2hp
ZnRLZXkgPSB3ZWJFdmVudC5zaGlmdEtleSgpOwotICAgICAgICBtX21ldGFLZXkgPSB3ZWJFdmVu
dC5tZXRhS2V5KCk7CisgICAgICAgIG1fbW9kaWZpZXJzID0gMDsKKyAgICAgICAgaWYgKHdlYkV2
ZW50LnNoaWZ0S2V5KCkpCisgICAgICAgICAgICBtX21vZGlmaWVycyB8PSBTaGlmdEtleTsKKyAg
ICAgICAgaWYgKHdlYkV2ZW50LmNvbnRyb2xLZXkoKSkKKyAgICAgICAgICAgIG1fbW9kaWZpZXJz
IHw9IEN0cmxLZXk7CisgICAgICAgIGlmICh3ZWJFdmVudC5hbHRLZXkoKSkKKyAgICAgICAgICAg
IG1fbW9kaWZpZXJzIHw9IEFsdEtleTsKKyAgICAgICAgaWYgKHdlYkV2ZW50LmFsdEtleSgpKQor
ICAgICAgICAgICAgbV9tb2RpZmllcnMgfD0gTWV0YUtleTsKKwogICAgICAgICBtX3RpbWVzdGFt
cCA9IHdlYkV2ZW50LnRpbWVzdGFtcCgpOwogCiAgICAgICAgIC8vIFBsYXRmb3JtVG91Y2hFdmVu
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1t
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IGRjYTAx
OGE0MmYxOWJhNGU0ZTlkMzBkMzAwMDNhYTMwMTcxYTI5OWMuLjQwM2VhYmIzZWM2OTViMmRhZmYz
MjRiZTZjZjhlODZhZDMwMTkwYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvbWFjL1dLVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21h
Yy9XS1ZpZXcubW0KQEAgLTY3LDcgKzY3LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvSW50UmVjdC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xv
Y2FsaXplZFN0cmluZ3MuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1Nb3VzZUV2ZW50Lmg+
CisjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtRXZlbnRGYWN0b3J5Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1BsYXRmb3JtU2NyZWVuLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlZ2lvbi5oPgogI2ltcG9y
dCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZh
Y2UubW0KaW5kZXggODU4MWRmZmMyZjI5OWEzN2ZkYmRiMGZhZjkyODAwMmY3NGRhYWRlZC4uMjlj
NGFjM2VlMGMyMDM1YTRhYWIzOTAzOThmNWQzNWIzMDhiM2Q1YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YlN5c3RlbUludGVyZmFjZS5tbQpAQCAtNjUsNiArNjUsNyBAQCB2b2lkIEluaXRXZWJDb3JlU3lz
dGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgICAgIElOSVQoR2V0UHJlZmVycmVkRXh0ZW5zaW9uRm9y
TUlNRVR5cGUpOwogICAgICAgICBJTklUKEdldFVzZXJUb0Jhc2VDVE0pOwogICAgICAgICBJTklU
KEdldFdoZWVsRXZlbnREZWx0YXMpOworICAgICAgICBJTklUKEdldE5TRXZlbnRLZXlDaGFyKTsK
ICAgICAgICAgSU5JVChIaXRUZXN0TWVkaWFVSVBhcnQpOwogICAgICAgICBJTklUKEluaXRpYWxp
emVNYXhpbXVtSFRUUENvbm5lY3Rpb25Db3VudFBlckhvc3QpOwogICAgICAgICBJTklUKE1lYXN1
cmVNZWRpYVVJUGFydCk7Cg==
</data>
<flag name="review"
          id="120699"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>